@taiga-ui/kit
Version:
Taiga UI Angular main components kit
116 lines • 17.6 kB
JavaScript
import { __decorate } from "tslib";
import { ChangeDetectionStrategy, Component, HostBinding, Input } from '@angular/core';
import { isNumber, tuiDefaultProp } from '@taiga-ui/cdk';
import { sizeBigger } from '@taiga-ui/core';
var BADGE_SIZE = {
xs: 's',
s: 's',
m: 's',
l: 'm',
xl: 'm',
xxl: 'l',
};
var TuiBadgedContentComponent = /** @class */ (function () {
function TuiBadgedContentComponent() {
this.contentTop = '';
this.contentBottom = '';
this.size = 'm';
this.colorTop = '';
this.colorBottom = '';
this.rounded = false;
}
Object.defineProperty(TuiBadgedContentComponent.prototype, "topNotification", {
get: function () {
return (!this.contentTop && this.colorTop) ||
(this.contentTop && this.contentIsNumber(this.contentTop) && this.badgeHidden)
? this.colorTop
: '';
},
enumerable: true,
configurable: true
});
Object.defineProperty(TuiBadgedContentComponent.prototype, "bottomNotification", {
get: function () {
return !this.contentBottom && this.colorBottom ? this.colorBottom : '';
},
enumerable: true,
configurable: true
});
Object.defineProperty(TuiBadgedContentComponent.prototype, "badgeSize", {
get: function () {
return BADGE_SIZE[this.size];
},
enumerable: true,
configurable: true
});
Object.defineProperty(TuiBadgedContentComponent.prototype, "badgeHidden", {
get: function () {
return this.size === 'xs';
},
enumerable: true,
configurable: true
});
Object.defineProperty(TuiBadgedContentComponent.prototype, "sizeBig", {
get: function () {
return sizeBigger(this.size);
},
enumerable: true,
configurable: true
});
Object.defineProperty(TuiBadgedContentComponent.prototype, "boxShadow", {
get: function () {
var borderWidth = this.sizeBig ? 3 : 2;
return "0 0 0 " + borderWidth + "px";
},
enumerable: true,
configurable: true
});
TuiBadgedContentComponent.prototype.contentIsNumber = function (content) {
return isNumber(content.valueOf());
};
TuiBadgedContentComponent.prototype.contentIsString = function (content) {
return typeof content.valueOf() === 'string';
};
TuiBadgedContentComponent.prototype.getStatus = function (color) {
return color ? "custom" /* Custom */ : "primary" /* Primary */;
};
__decorate([
Input(),
HostBinding('attr.data-tui-host-top'),
tuiDefaultProp()
], TuiBadgedContentComponent.prototype, "contentTop", void 0);
__decorate([
Input(),
HostBinding('attr.data-tui-host-bottom'),
tuiDefaultProp()
], TuiBadgedContentComponent.prototype, "contentBottom", void 0);
__decorate([
Input(),
HostBinding('attr.data-tui-host-size'),
tuiDefaultProp()
], TuiBadgedContentComponent.prototype, "size", void 0);
__decorate([
Input(),
tuiDefaultProp()
], TuiBadgedContentComponent.prototype, "colorTop", void 0);
__decorate([
Input(),
tuiDefaultProp()
], TuiBadgedContentComponent.prototype, "colorBottom", void 0);
__decorate([
Input(),
HostBinding('class._rounded'),
tuiDefaultProp()
], TuiBadgedContentComponent.prototype, "rounded", void 0);
TuiBadgedContentComponent = __decorate([
Component({
selector: 'tui-badged-content',
changeDetection: ChangeDetectionStrategy.OnPush,
template: "<ng-content></ng-content>\n\n<div\n *ngIf=\"topNotification\"\n class=\"notification notification_top\"\n [style.background]=\"topNotification\"\n [style.boxShadow]=\"boxShadow\"\n></div>\n\n<div\n *ngIf=\"bottomNotification\"\n class=\"notification notification_bottom\"\n [style.background]=\"bottomNotification\"\n [style.boxShadow]=\"boxShadow\"\n></div>\n\n<div\n *ngIf=\"contentTop\"\n polymorpheus-outlet\n class=\"content content_top\"\n [style.boxShadow]=\"boxShadow\"\n [content]=\"contentTop\"\n>\n <ng-template let-content>\n <tui-badge\n *ngIf=\"contentIsNumber(content) && !badgeHidden\"\n [status]=\"getStatus(colorTop)\"\n [style.backgroundColor]=\"colorTop\"\n [size]=\"badgeSize\"\n [value]=\"contentTop\"\n ></tui-badge>\n <tui-svg\n *ngIf=\"contentIsString(content)\"\n class=\"icon\"\n [style.color]=\"colorTop\"\n [src]=\"content\"\n ></tui-svg>\n </ng-template>\n</div>\n\n<div\n polymorpheus-outlet\n *ngIf=\"contentBottom && sizeBig\"\n class=\"content content_bottom\"\n [style.boxShadow]=\"boxShadow\"\n [content]=\"contentBottom\"\n>\n <ng-template let-content>\n <tui-badge\n *ngIf=\"contentIsNumber(content)\"\n [status]=\"getStatus(colorBottom)\"\n [style.backgroundColor]=\"colorBottom\"\n [size]=\"badgeSize\"\n [value]=\"contentBottom\"\n ></tui-badge>\n <tui-svg\n *ngIf=\"contentIsString(content)\"\n class=\"icon\"\n [style.color]=\"colorBottom\"\n [src]=\"content\"\n ></tui-svg>\n </ng-template>\n</div>\n",
styles: [":host{position:relative;display:inline-block;color:var(--tui-base-01)}.notification{position:absolute;border-radius:100%;box-shadow:0 0 0 2px currentColor}.notification:not([data-tui-background]){background-color:currentColor}:host[data-tui-host-size='m']:not(._rounded) .notification_top,:host[data-tui-host-size='s']:not(._rounded) .notification_top,:host[data-tui-host-size=xs]:not(._rounded) .notification_top{top:-2px;right:-2px}:host[data-tui-host-size='l']:not(._rounded) .notification_top,:host[data-tui-host-size=xl]:not(._rounded) .notification_top{top:-4px;right:-4px}:host[data-tui-host-size=xxl]:not(._rounded) .notification_top{top:-8px;right:-8px}:host[data-tui-host-size=xs]._rounded .notification_top{top:0;right:0}:host[data-tui-host-size='s']._rounded .notification_top{top:1px;right:1px}:host[data-tui-host-size='m']._rounded .notification_top{top:3px;right:3px}:host[data-tui-host-size='l']._rounded .notification_top{top:4px;right:4px}:host[data-tui-host-size=xl]._rounded .notification_top{top:6px;right:6px}:host[data-tui-host-size=xxl]._rounded .notification_top{top:8px;right:8px}:host[data-tui-host-size='m']:not(._rounded) .notification_bottom{bottom:-2px;right:-2px}:host[data-tui-host-size='l']:not(._rounded) .notification_bottom,:host[data-tui-host-size=xl]:not(._rounded) .notification_bottom{bottom:-4px;right:-4px}:host[data-tui-host-size=xxl]:not(._rounded) .notification_bottom{bottom:-8px;right:-8px}:host[data-tui-host-size='m']._rounded .notification_bottom{bottom:3px;right:3px}:host[data-tui-host-size='l']._rounded .notification_bottom{bottom:4px;right:4px}:host[data-tui-host-size=xl]._rounded .notification_bottom{bottom:6px;right:6px}:host[data-tui-host-size=xxl]._rounded .notification_bottom{bottom:8px;right:8px}:host[data-tui-host-size='m'] .notification,:host[data-tui-host-size='s'] .notification,:host[data-tui-host-size=xs] .notification{width:8px;height:8px}:host[data-tui-host-size='l'] .notification{width:12px;height:12px}:host[data-tui-host-size=xl] .notification{width:16px;height:16px}:host[data-tui-host-size=xxl] .notification{width:24px;height:24px}.icon[data-tui-color=normal],.notification[data-tui-color=normal]{color:var(--tui-base-06)}.icon[data-tui-color=onDark],.notification[data-tui-color=onDark]{color:var(--tui-secondary)}.icon[data-tui-color=gray],.notification[data-tui-color=gray]{color:var(--tui-base-03)}.icon[data-tui-color=warning],.notification[data-tui-color=warning]{color:var(--tui-primary)}.icon[data-tui-color=secondary],.notification[data-tui-color=secondary]{color:var(--tui-info-fill)}.icon[data-tui-color=highlight],.icon[data-tui-color=white],.notification[data-tui-color=highlight],.notification[data-tui-color=white]{color:var(--tui-base-01)}.icon[data-tui-color=transparent-dark],.notification[data-tui-color=transparent-dark]{color:var(--tui-clear)}.icon[data-tui-color=transparent-light],.notification[data-tui-color=transparent-light]{color:var(--tui-clear-inverse)}:host[data-tui-host-size='m'] .icon,:host[data-tui-host-size='s'] .icon{width:24px;height:24px;margin:-2px}:host[data-tui-host-size='l'] .icon,:host[data-tui-host-size=xl] .icon{transform:scale(1.2)}:host[data-tui-host-size=xxl] .icon{transform:scale(1.6)}.content{position:absolute;display:flex;align-items:center;justify-content:center;border-radius:100px;overflow:hidden;background-color:currentColor;box-shadow:0 0 0 2px currentColor}:host[data-tui-host-size='l'][data-tui-host-top]:not(._rounded) .content_top,:host[data-tui-host-size=xxl][data-tui-host-top]:not(._rounded) .content_top{right:-8px;top:-8px}:host[data-tui-host-size=xl][data-tui-host-top]:not(._rounded) .content_top{right:-6px;top:-6px}:host[data-tui-host-size='m'][data-tui-host-top]:not(._rounded) .content_top,:host[data-tui-host-size='s'][data-tui-host-top]:not(._rounded) .content_top,:host[data-tui-host-size=xs][data-tui-host-top]:not(._rounded) .content_top{right:-4px;top:-4px}:host[data-tui-host-size=xxl][data-tui-host-top]._rounded .content_top{right:4px;top:4px}:host[data-tui-host-size=xl][data-tui-host-top]._rounded .content_top{right:2px;top:2px}:host[data-tui-host-size='l'][data-tui-host-top]._rounded .content_top,:host[data-tui-host-size='m'][data-tui-host-top]._rounded .content_top,:host[data-tui-host-size='s'][data-tui-host-top]._rounded .content_top,:host[data-tui-host-size=xs][data-tui-host-top]._rounded .content_top{right:-4px;top:-4px}:host[data-tui-host-size='l'][data-tui-host-bottom]:not(._rounded) .content_bottom,:host[data-tui-host-size=xxl][data-tui-host-bottom]:not(._rounded) .content_bottom{bottom:-8px;right:-8px}:host[data-tui-host-size=xl][data-tui-host-bottom]:not(._rounded) .content_bottom{bottom:-6px;right:-6px}:host[data-tui-host-size='m'][data-tui-host-bottom]:not(._rounded) .content_bottom{bottom:-4px;right:-4px}:host[data-tui-host-size=xxl][data-tui-host-bottom]._rounded .content_bottom{bottom:4px;right:4px}:host[data-tui-host-size=xl][data-tui-host-bottom]._rounded .content_bottom{bottom:2px;right:2px}:host[data-tui-host-size='l'][data-tui-host-bottom]._rounded .content_bottom,:host[data-tui-host-size='m'][data-tui-host-bottom]._rounded .content_bottom{bottom:-4px;right:-4px}:host[data-tui-host-size=xxl] .content{height:32px;min-width:32px}:host[data-tui-host-size='l'] .content,:host[data-tui-host-size=xl] .content{height:24px;min-width:24px}:host[data-tui-host-size='m'] .content,:host[data-tui-host-size='s'] .content{height:20px;min-width:20px}:host[data-tui-host-size=xs] .content{height:16px;min-width:16px}"]
})
], TuiBadgedContentComponent);
return TuiBadgedContentComponent;
}());
export { TuiBadgedContentComponent };
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFkZ2VkLWNvbnRlbnQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Im5nOi8vQHRhaWdhLXVpL2tpdC9jb21wb25lbnRzL2JhZGdlZC1jb250ZW50LyIsInNvdXJjZXMiOlsiYmFkZ2VkLWNvbnRlbnQuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUMsdUJBQXVCLEVBQUUsU0FBUyxFQUFFLFdBQVcsRUFBRSxLQUFLLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDckYsT0FBTyxFQUFDLFFBQVEsRUFBRSxjQUFjLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDdkQsT0FBTyxFQUFDLFVBQVUsRUFBNEMsTUFBTSxnQkFBZ0IsQ0FBQztBQUlyRixJQUFNLFVBQVUsR0FBeUM7SUFDckQsRUFBRSxFQUFFLEdBQUc7SUFDUCxDQUFDLEVBQUUsR0FBRztJQUNOLENBQUMsRUFBRSxHQUFHO0lBQ04sQ0FBQyxFQUFFLEdBQUc7SUFDTixFQUFFLEVBQUUsR0FBRztJQUNQLEdBQUcsRUFBRSxHQUFHO0NBQ1gsQ0FBQztBQVFGO0lBQUE7UUFJSSxlQUFVLEdBQXdCLEVBQUUsQ0FBQztRQUtyQyxrQkFBYSxHQUF3QixFQUFFLENBQUM7UUFLeEMsU0FBSSxHQUEyQixHQUFHLENBQUM7UUFJbkMsYUFBUSxHQUFHLEVBQUUsQ0FBQztRQUlkLGdCQUFXLEdBQUcsRUFBRSxDQUFDO1FBS2pCLFlBQU8sR0FBRyxLQUFLLENBQUM7SUEwQ3BCLENBQUM7SUF4Q0csc0JBQUksc0RBQWU7YUFBbkI7WUFDSSxPQUFPLENBQUMsQ0FBQyxJQUFJLENBQUMsVUFBVSxJQUFJLElBQUksQ0FBQyxRQUFRLENBQUM7Z0JBQ3RDLENBQUMsSUFBSSxDQUFDLFVBQVUsSUFBSSxJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxJQUFJLENBQUMsV0FBVyxDQUFDO2dCQUM5RSxDQUFDLENBQUMsSUFBSSxDQUFDLFFBQVE7Z0JBQ2YsQ0FBQyxDQUFDLEVBQUUsQ0FBQztRQUNiLENBQUM7OztPQUFBO0lBRUQsc0JBQUkseURBQWtCO2FBQXRCO1lBQ0ksT0FBTyxDQUFDLElBQUksQ0FBQyxhQUFhLElBQUksSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO1FBQzNFLENBQUM7OztPQUFBO0lBRUQsc0JBQUksZ0RBQVM7YUFBYjtZQUNJLE9BQU8sVUFBVSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNqQyxDQUFDOzs7T0FBQTtJQUVELHNCQUFJLGtEQUFXO2FBQWY7WUFDSSxPQUFPLElBQUksQ0FBQyxJQUFJLEtBQUssSUFBSSxDQUFDO1FBQzlCLENBQUM7OztPQUFBO0lBRUQsc0JBQUksOENBQU87YUFBWDtZQUNJLE9BQU8sVUFBVSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNqQyxDQUFDOzs7T0FBQTtJQUVELHNCQUFJLGdEQUFTO2FBQWI7WUFDSSxJQUFNLFdBQVcsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUV6QyxPQUFPLFdBQVMsV0FBVyxPQUFJLENBQUM7UUFDcEMsQ0FBQzs7O09BQUE7SUFFRCxtREFBZSxHQUFmLFVBQWdCLE9BQTRCO1FBQ3hDLE9BQU8sUUFBUSxDQUFDLE9BQU8sQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDO0lBQ3ZDLENBQUM7SUFFRCxtREFBZSxHQUFmLFVBQWdCLE9BQTRCO1FBQ3hDLE9BQU8sT0FBTyxPQUFPLENBQUMsT0FBTyxFQUFFLEtBQUssUUFBUSxDQUFDO0lBQ2pELENBQUM7SUFFRCw2Q0FBUyxHQUFULFVBQVUsS0FBYTtRQUNuQixPQUFPLEtBQUssQ0FBQyxDQUFDLHVCQUFrQixDQUFDLHdCQUFrQixDQUFDO0lBQ3hELENBQUM7SUFoRUQ7UUFIQyxLQUFLLEVBQUU7UUFDUCxXQUFXLENBQUMsd0JBQXdCLENBQUM7UUFDckMsY0FBYyxFQUFFO2lFQUNvQjtJQUtyQztRQUhDLEtBQUssRUFBRTtRQUNQLFdBQVcsQ0FBQywyQkFBMkIsQ0FBQztRQUN4QyxjQUFjLEVBQUU7b0VBQ3VCO0lBS3hDO1FBSEMsS0FBSyxFQUFFO1FBQ1AsV0FBVyxDQUFDLHlCQUF5QixDQUFDO1FBQ3RDLGNBQWMsRUFBRTsyREFDa0I7SUFJbkM7UUFGQyxLQUFLLEVBQUU7UUFDUCxjQUFjLEVBQUU7K0RBQ0g7SUFJZDtRQUZDLEtBQUssRUFBRTtRQUNQLGNBQWMsRUFBRTtrRUFDQTtJQUtqQjtRQUhDLEtBQUssRUFBRTtRQUNQLFdBQVcsQ0FBQyxnQkFBZ0IsQ0FBQztRQUM3QixjQUFjLEVBQUU7OERBQ0Q7SUEzQlAseUJBQXlCO1FBTnJDLFNBQVMsQ0FBQztZQUNQLFFBQVEsRUFBRSxvQkFBb0I7WUFDOUIsZUFBZSxFQUFFLHVCQUF1QixDQUFDLE1BQU07WUFDL0MsZ3ZEQUE2Qzs7U0FFaEQsQ0FBQztPQUNXLHlCQUF5QixDQXFFckM7SUFBRCxnQ0FBQztDQUFBLEFBckVELElBcUVDO1NBckVZLHlCQUF5QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7Q2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgSG9zdEJpbmRpbmcsIElucHV0fSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7aXNOdW1iZXIsIHR1aURlZmF1bHRQcm9wfSBmcm9tICdAdGFpZ2EtdWkvY2RrJztcbmltcG9ydCB7c2l6ZUJpZ2dlciwgVHVpU2l6ZUwsIFR1aVNpemVTLCBUdWlTaXplWFMsIFR1aVNpemVYWEx9IGZyb20gJ0B0YWlnYS11aS9jb3JlJztcbmltcG9ydCB7VHVpU3RhdHVzfSBmcm9tICdAdGFpZ2EtdWkva2l0L2VudW1zJztcbmltcG9ydCB7UG9seW1vcnBoZXVzQ29udGVudH0gZnJvbSAnQHRpbmtvZmYvbmctcG9seW1vcnBoZXVzJztcblxuY29uc3QgQkFER0VfU0laRToge1trZXk6IHN0cmluZ106IFR1aVNpemVTIHwgVHVpU2l6ZUx9ID0ge1xuICAgIHhzOiAncycsXG4gICAgczogJ3MnLFxuICAgIG06ICdzJyxcbiAgICBsOiAnbScsXG4gICAgeGw6ICdtJyxcbiAgICB4eGw6ICdsJyxcbn07XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAndHVpLWJhZGdlZC1jb250ZW50JyxcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgICB0ZW1wbGF0ZVVybDogJy4vYmFkZ2VkLWNvbnRlbnQudGVtcGxhdGUuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJy4vYmFkZ2VkLWNvbnRlbnQuc3R5bGUubGVzcyddLFxufSlcbmV4cG9ydCBjbGFzcyBUdWlCYWRnZWRDb250ZW50Q29tcG9uZW50IHtcbiAgICBASW5wdXQoKVxuICAgIEBIb3N0QmluZGluZygnYXR0ci5kYXRhLXR1aS1ob3N0LXRvcCcpXG4gICAgQHR1aURlZmF1bHRQcm9wKClcbiAgICBjb250ZW50VG9wOiBQb2x5bW9ycGhldXNDb250ZW50ID0gJyc7XG5cbiAgICBASW5wdXQoKVxuICAgIEBIb3N0QmluZGluZygnYXR0ci5kYXRhLXR1aS1ob3N0LWJvdHRvbScpXG4gICAgQHR1aURlZmF1bHRQcm9wKClcbiAgICBjb250ZW50Qm90dG9tOiBQb2x5bW9ycGhldXNDb250ZW50ID0gJyc7XG5cbiAgICBASW5wdXQoKVxuICAgIEBIb3N0QmluZGluZygnYXR0ci5kYXRhLXR1aS1ob3N0LXNpemUnKVxuICAgIEB0dWlEZWZhdWx0UHJvcCgpXG4gICAgc2l6ZTogVHVpU2l6ZVhTIHwgVHVpU2l6ZVhYTCA9ICdtJztcblxuICAgIEBJbnB1dCgpXG4gICAgQHR1aURlZmF1bHRQcm9wKClcbiAgICBjb2xvclRvcCA9ICcnO1xuXG4gICAgQElucHV0KClcbiAgICBAdHVpRGVmYXVsdFByb3AoKVxuICAgIGNvbG9yQm90dG9tID0gJyc7XG5cbiAgICBASW5wdXQoKVxuICAgIEBIb3N0QmluZGluZygnY2xhc3MuX3JvdW5kZWQnKVxuICAgIEB0dWlEZWZhdWx0UHJvcCgpXG4gICAgcm91bmRlZCA9IGZhbHNlO1xuXG4gICAgZ2V0IHRvcE5vdGlmaWNhdGlvbigpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gKCF0aGlzLmNvbnRlbnRUb3AgJiYgdGhpcy5jb2xvclRvcCkgfHxcbiAgICAgICAgICAgICh0aGlzLmNvbnRlbnRUb3AgJiYgdGhpcy5jb250ZW50SXNOdW1iZXIodGhpcy5jb250ZW50VG9wKSAmJiB0aGlzLmJhZGdlSGlkZGVuKVxuICAgICAgICAgICAgPyB0aGlzLmNvbG9yVG9wXG4gICAgICAgICAgICA6ICcnO1xuICAgIH1cblxuICAgIGdldCBib3R0b21Ob3RpZmljYXRpb24oKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuICF0aGlzLmNvbnRlbnRCb3R0b20gJiYgdGhpcy5jb2xvckJvdHRvbSA/IHRoaXMuY29sb3JCb3R0b20gOiAnJztcbiAgICB9XG5cbiAgICBnZXQgYmFkZ2VTaXplKCk6IFR1aVNpemVTIHwgVHVpU2l6ZUwge1xuICAgICAgICByZXR1cm4gQkFER0VfU0laRVt0aGlzLnNpemVdO1xuICAgIH1cblxuICAgIGdldCBiYWRnZUhpZGRlbigpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc2l6ZSA9PT0gJ3hzJztcbiAgICB9XG5cbiAgICBnZXQgc2l6ZUJpZygpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHNpemVCaWdnZXIodGhpcy5zaXplKTtcbiAgICB9XG5cbiAgICBnZXQgYm94U2hhZG93KCk6IHN0cmluZyB7XG4gICAgICAgIGNvbnN0IGJvcmRlcldpZHRoID0gdGhpcy5zaXplQmlnID8gMyA6IDI7XG5cbiAgICAgICAgcmV0dXJuIGAwIDAgMCAke2JvcmRlcldpZHRofXB4YDtcbiAgICB9XG5cbiAgICBjb250ZW50SXNOdW1iZXIoY29udGVudDogUG9seW1vcnBoZXVzQ29udGVudCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gaXNOdW1iZXIoY29udGVudC52YWx1ZU9mKCkpO1xuICAgIH1cblxuICAgIGNvbnRlbnRJc1N0cmluZyhjb250ZW50OiBQb2x5bW9ycGhldXNDb250ZW50KTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0eXBlb2YgY29udGVudC52YWx1ZU9mKCkgPT09ICdzdHJpbmcnO1xuICAgIH1cblxuICAgIGdldFN0YXR1cyhjb2xvcjogc3RyaW5nKTogVHVpU3RhdHVzIHtcbiAgICAgICAgcmV0dXJuIGNvbG9yID8gVHVpU3RhdHVzLkN1c3RvbSA6IFR1aVN0YXR1cy5QcmltYXJ5O1xuICAgIH1cbn1cbiJdfQ==