@junte/ui
Version:
Quality Angular UI components kit
249 lines • 23.1 kB
JavaScript
import { __decorate, __metadata } from "tslib";
import { animate, state, style, transition, trigger } from '@angular/animations';
import { Component, ContentChildren, EventEmitter, HostBinding, Input, Output, QueryList } from '@angular/core';
import { Shape } from '../../core/enums/shape';
import { PropertyApi } from '../../core/decorators/api';
import { Outline } from '../../core/enums/outline';
import { Position } from '../../core/enums/position';
import { Scheme } from '../../core/enums/scheme';
import { Size } from '../../core/enums/size';
import { UI } from '../../core/enums/ui';
import { Width } from '../../core/enums/width';
import { BadgeComponent } from '../../elements/badge/badge.component';
import { ButtonType } from './button.enums';
let ButtonComponent = class ButtonComponent {
constructor() {
this.host = 'jnt-button-host';
this.ui = UI;
this._type = ButtonType.button;
this._scheme = Scheme.primary;
this._size = Size.normal;
this._outline = Outline.fill;
this._width = Width.default;
this._shape = Shape.square;
this.loading = false;
this.disabled = false;
this.click = new EventEmitter();
}
set shape(shape) {
this._shape = shape || Shape.square;
}
set _icon(icon) {
this.icon = (typeof icon === 'string'
? { icon: icon, position: Position.left } : icon);
}
set scheme(scheme) {
this._scheme = scheme || Scheme.primary;
}
set size(size) {
this._size = size || Size.normal;
}
get size() {
return this._size;
}
get withText() {
return !!this.text;
}
set outline(outline) {
this._outline = outline || Outline.fill;
}
set width(width) {
this._width = width || Width.default;
}
get disable() {
return this.disabled || this.loading;
}
set type(type) {
this._type = type || ButtonType.button;
}
get type() {
return this._type;
}
};
__decorate([
HostBinding('attr.host'),
__metadata("design:type", Object)
], ButtonComponent.prototype, "host", void 0);
__decorate([
HostBinding('attr.data-scheme'),
__metadata("design:type", String)
], ButtonComponent.prototype, "_scheme", void 0);
__decorate([
HostBinding('attr.data-size'),
__metadata("design:type", String)
], ButtonComponent.prototype, "_size", void 0);
__decorate([
HostBinding('attr.data-outline'),
__metadata("design:type", String)
], ButtonComponent.prototype, "_outline", void 0);
__decorate([
HostBinding('attr.data-width'),
__metadata("design:type", String)
], ButtonComponent.prototype, "_width", void 0);
__decorate([
HostBinding('attr.data-shape'),
__metadata("design:type", String)
], ButtonComponent.prototype, "_shape", void 0);
__decorate([
PropertyApi({
description: 'Button shape',
path: 'ui.shape',
default: Shape.square,
options: [Shape.circle, Shape.square]
}),
Input(),
__metadata("design:type", String),
__metadata("design:paramtypes", [String])
], ButtonComponent.prototype, "shape", null);
__decorate([
PropertyApi({
description: 'Set the loading status of button',
type: 'boolean',
default: 'false'
}),
HostBinding('attr.data-loading'),
Input(),
__metadata("design:type", Object)
], ButtonComponent.prototype, "loading", void 0);
__decorate([
PropertyApi({
name: 'icon',
description: 'Icon for button',
type: 'string | {icon: string, position: Position}'
}),
Input('icon'),
__metadata("design:type", Object),
__metadata("design:paramtypes", [Object])
], ButtonComponent.prototype, "_icon", null);
__decorate([
PropertyApi({
description: 'Button color scheme',
path: 'ui.scheme',
options: [Scheme.primary, Scheme.secondary, Scheme.success, Scheme.fail],
default: Scheme.primary
}),
Input(),
__metadata("design:type", String),
__metadata("design:paramtypes", [String])
], ButtonComponent.prototype, "scheme", null);
__decorate([
PropertyApi({
description: 'Button size',
path: 'ui.size',
options: [Size.tiny, Size.small, Size.normal, Size.large],
default: Size.normal
}),
Input(),
__metadata("design:type", String),
__metadata("design:paramtypes", [String])
], ButtonComponent.prototype, "size", null);
__decorate([
HostBinding('attr.data-with-text'),
__metadata("design:type", Object),
__metadata("design:paramtypes", [])
], ButtonComponent.prototype, "withText", null);
__decorate([
PropertyApi({
description: 'Button outline',
path: 'ui.outline',
default: Outline.fill,
options: [Outline.transparent, Outline.ghost, Outline.fill]
}),
Input(),
__metadata("design:type", String),
__metadata("design:paramtypes", [String])
], ButtonComponent.prototype, "outline", null);
__decorate([
PropertyApi({
description: 'Button width',
path: 'ui.width',
default: Width.default,
options: [Width.default, Width.fluid]
}),
Input(),
__metadata("design:type", String),
__metadata("design:paramtypes", [String])
], ButtonComponent.prototype, "width", null);
__decorate([
HostBinding('attr.data-disabled'),
__metadata("design:type", Object),
__metadata("design:paramtypes", [])
], ButtonComponent.prototype, "disable", null);
__decorate([
PropertyApi({
description: 'Set disabled state',
type: 'boolean',
default: 'false',
}),
Input(),
__metadata("design:type", Object)
], ButtonComponent.prototype, "disabled", void 0);
__decorate([
PropertyApi({
description: 'Button typeControl',
path: 'ui.button.type',
default: ButtonType.button,
options: [ButtonType.button, ButtonType.submit]
}),
Input(),
__metadata("design:type", String),
__metadata("design:paramtypes", [String])
], ButtonComponent.prototype, "type", null);
__decorate([
PropertyApi({
description: 'Text on button',
type: 'string',
}),
Input(),
__metadata("design:type", String)
], ButtonComponent.prototype, "text", void 0);
__decorate([
PropertyApi({
description: 'Click event',
path: 'EventEmitter'
}),
Output(),
__metadata("design:type", Object)
], ButtonComponent.prototype, "click", void 0);
__decorate([
ContentChildren(BadgeComponent),
__metadata("design:type", QueryList)
], ButtonComponent.prototype, "badges", void 0);
ButtonComponent = __decorate([
Component({
selector: 'jnt-button',
template: "<button child-of=\"jnt-button-host\" [type]=\"type\" [disabled]=\"disabled || loading\">\n <jnt-spinner child-of=\"jnt-button-host\" data-loading *ngIf=\"loading\" [@appear]=\"loading\"></jnt-spinner>\n <jnt-stack child-of=\"jnt-button-host\" [orientation]=\"ui.orientation.horizontal\"\n [align]=\"ui.align.center\"\n [gutter]=\"ui.gutter.small\">\n <jnt-icon child-of=\"jnt-button-host\" *ngIf=\"!!icon && icon.position === ui.position.left\"\n [@visibility]=\"loading ? 'hide' : 'show'\"\n [icon]=\"icon?.icon\">\n </jnt-icon>\n\n <div child-of=\"jnt-button-host\" data-text *ngIf=\"!!text\"\n [@visibility]=\"loading ? 'hide' : 'show'\">\n {{text}}\n </div>\n\n <jnt-stack child-of=\"jnt-button-host\" data-badges *ngIf=\"badges.length > 0\"\n [@visibility]=\"loading ? 'hide' : 'show'\"\n [orientation]=\"ui.orientation.horizontal\"\n [gutter]=\"ui.gutter.tiny\">\n <jnt-badge child-of=\"jnt-button-host\" data-badge *ngFor=\"let badge of badges\"\n [color]=\"badge.color\"\n [value]=\"badge.value\"\n [overflow]=\"badge.overflow\"\n [position]=\"ui.position.inline\">\n </jnt-badge>\n </jnt-stack>\n\n <jnt-icon child-of=\"jnt-button-host\" *ngIf=\"!!icon && icon.position === ui.position.right\"\n [@visibility]=\"loading ? 'hide' : 'show'\"\n [icon]=\"icon?.icon\">\n </jnt-icon>\n\n <div child-of=\"jnt-button-host\" data-empty *ngIf=\"!icon && !badges.length && !text\" [@visibility]=\"loading ? 'hide' : 'show'\"></div>\n </jnt-stack>\n</button>",
animations: [
trigger('appear', [
state('void', style({
opacity: 0,
width: '200px',
height: '200px'
})),
state('*', style({
opacity: 1,
width: '*',
height: '*'
})),
transition('void => *', [
animate('.5s ease-in-out')
]),
]),
trigger('visibility', [
state('show', style({
visibility: 'visible',
opacity: 1
})),
state('hide', style({
visibility: 'collapse',
opacity: 0
})),
transition('show <=> hide', [
animate('.5s ease-in-out')
]),
])
]
})
], ButtonComponent);
export { ButtonComponent };
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnV0dG9uLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BqdW50ZS91aS8iLCJzb3VyY2VzIjpbImxpYi9mb3Jtcy9idXR0b24vYnV0dG9uLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLFVBQVUsRUFBRSxPQUFPLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUNqRixPQUFPLEVBQUUsU0FBUyxFQUFFLGVBQWUsRUFBRSxZQUFZLEVBQUUsV0FBVyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2hILE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUMvQyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDeEQsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ25ELE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUNyRCxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDakQsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQzdDLE9BQU8sRUFBRSxFQUFFLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN6QyxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDL0MsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHNDQUFzQyxDQUFDO0FBQ3RFLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQXFENUMsSUFBYSxlQUFlLEdBQTVCLE1BQWEsZUFBZTtJQUE1QjtRQUdXLFNBQUksR0FBRyxpQkFBaUIsQ0FBQztRQUVsQyxPQUFFLEdBQUcsRUFBRSxDQUFDO1FBRUEsVUFBSyxHQUFlLFVBQVUsQ0FBQyxNQUFNLENBQUM7UUFJOUMsWUFBTyxH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QztvQkFDSixPQUFPLEVBQUUsQ0FBQztvQkFDVixLQUFLLEVBQUUsT0FBTztvQkFDZCxNQUFNLEVBQUUsT0FBTztpQkFDaEIsQ0FBQyxDQUNIO2dCQUNELEtBQUssQ0FDSCxHQUFHLEVBQ0gsS0FBSyxDQUFDO29CQUNKLE9BQU8sRUFBRSxDQUFDO29CQUNWLEtBQUssRUFBRSxHQUFHO29CQUNWLE1BQU0sRUFBRSxHQUFHO2lCQUNaLENBQUMsQ0FDSDtnQkFDRCxVQUFVLENBQ1IsV0FBVyxFQUNYO29CQUNFLE9BQU8sQ0FBQyxpQkFBaUIsQ0FBQztpQkFDM0IsQ0FDRjthQUNGLENBQ0Y7WUFFRCxPQUFPLENBQUMsWUFBWSxFQUFFO2dCQUNwQixLQUFLLENBQUMsTUFBTSxFQUFFLEtBQUssQ0FBQztvQkFDbEIsVUFBVSxFQUFFLFNBQVM7b0JBQ3JCLE9BQU8sRUFBRSxDQUFDO2lCQUNYLENBQUMsQ0FBQztnQkFDSCxLQUFLLENBQUMsTUFBTSxFQUFFLEtBQUssQ0FBQztvQkFDbEIsVUFBVSxFQUFFLFVBQVU7b0JBQ3RCLE9BQU8sRUFBRSxDQUFDO2lCQUNYLENBQUMsQ0FBQztnQkFDSCxVQUFVLENBQUMsZUFBZSxFQUFFO29CQUMxQixPQUFPLENBQUMsaUJBQWlCLENBQUM7aUJBQzNCLENBQUM7YUFDSCxDQUFDO1NBQ0g7S0FDRixDQUFDO0dBRVcsZUFBZSxDQXlKM0I7U0F6SlksZUFBZSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGFuaW1hdGUsIHN0YXRlLCBzdHlsZSwgdHJhbnNpdGlvbiwgdHJpZ2dlciB9IGZyb20gJ0Bhbmd1bGFyL2FuaW1hdGlvbnMnO1xuaW1wb3J0IHsgQ29tcG9uZW50LCBDb250ZW50Q2hpbGRyZW4sIEV2ZW50RW1pdHRlciwgSG9zdEJpbmRpbmcsIElucHV0LCBPdXRwdXQsIFF1ZXJ5TGlzdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgU2hhcGUgfSBmcm9tICcuLi8uLi9jb3JlL2VudW1zL3NoYXBlJztcbmltcG9ydCB7IFByb3BlcnR5QXBpIH0gZnJvbSAnLi4vLi4vY29yZS9kZWNvcmF0b3JzL2FwaSc7XG5pbXBvcnQgeyBPdXRsaW5lIH0gZnJvbSAnLi4vLi4vY29yZS9lbnVtcy9vdXRsaW5lJztcbmltcG9ydCB7IFBvc2l0aW9uIH0gZnJvbSAnLi4vLi4vY29yZS9lbnVtcy9wb3NpdGlvbic7XG5pbXBvcnQgeyBTY2hlbWUgfSBmcm9tICcuLi8uLi9jb3JlL2VudW1zL3NjaGVtZSc7XG5pbXBvcnQgeyBTaXplIH0gZnJvbSAnLi4vLi4vY29yZS9lbnVtcy9zaXplJztcbmltcG9ydCB7IFVJIH0gZnJvbSAnLi4vLi4vY29yZS9lbnVtcy91aSc7XG5pbXBvcnQgeyBXaWR0aCB9IGZyb20gJy4uLy4uL2NvcmUvZW51bXMvd2lkdGgnO1xuaW1wb3J0IHsgQmFkZ2VDb21wb25lbnQgfSBmcm9tICcuLi8uLi9lbGVtZW50cy9iYWRnZS9iYWRnZS5jb21wb25lbnQnO1xuaW1wb3J0IHsgQnV0dG9uVHlwZSB9IGZyb20gJy4vYnV0dG9uLmVudW1zJztcblxuaW50ZXJmYWNlIEljb24ge1xuICBpY29uOiBzdHJpbmc7XG4gIHBvc2l0aW9uOiBQb3NpdGlvbjtcbn1cblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnam50LWJ1dHRvbicsXG4gIHRlbXBsYXRlVXJsOiAnLi9idXR0b24uZW5jYXBzdWxhdGVkLmh0bWwnLFxuICBhbmltYXRpb25zOiBbXG4gICAgdHJpZ2dlcignYXBwZWFyJywgW1xuICAgICAgICBzdGF0ZShcbiAgICAgICAgICAndm9pZCcsXG4gICAgICAgICAgc3R5bGUoe1xuICAgICAgICAgICAgb3BhY2l0eTogMCxcbiAgICAgICAgICAgIHdpZHRoOiAnMjAwcHgnLFxuICAgICAgICAgICAgaGVpZ2h0OiAnMjAwcHgnXG4gICAgICAgICAgfSlcbiAgICAgICAgKSxcbiAgICAgICAgc3RhdGUoXG4gICAgICAgICAgJyonLFxuICAgICAgICAgIHN0eWxlKHtcbiAgICAgICAgICAgIG9wYWNpdHk6IDEsXG4gICAgICAgICAgICB3aWR0aDogJyonLFxuICAgICAgICAgICAgaGVpZ2h0OiAnKidcbiAgICAgICAgICB9KVxuICAgICAgICApLFxuICAgICAgICB0cmFuc2l0aW9uKFxuICAgICAgICAgICd2b2lkID0+IConLFxuICAgICAgICAgIFtcbiAgICAgICAgICAgIGFuaW1hdGUoJy41cyBlYXNlLWluLW91dCcpXG4gICAgICAgICAgXVxuICAgICAgICApLFxuICAgICAgXVxuICAgICksXG5cbiAgICB0cmlnZ2VyKCd2aXNpYmlsaXR5JywgW1xuICAgICAgc3RhdGUoJ3Nob3cnLCBzdHlsZSh7XG4gICAgICAgIHZpc2liaWxpdHk6ICd2aXNpYmxlJyxcbiAgICAgICAgb3BhY2l0eTogMVxuICAgICAgfSkpLFxuICAgICAgc3RhdGUoJ2hpZGUnLCBzdHlsZSh7XG4gICAgICAgIHZpc2liaWxpdHk6ICdjb2xsYXBzZScsXG4gICAgICAgIG9wYWNpdHk6IDBcbiAgICAgIH0pKSxcbiAgICAgIHRyYW5zaXRpb24oJ3Nob3cgPD0+IGhpZGUnLCBbXG4gICAgICAgIGFuaW1hdGUoJy41cyBlYXNlLWluLW91dCcpXG4gICAgICBdKSxcbiAgICBdKVxuICBdXG59KVxuXG5leHBvcnQgY2xhc3MgQnV0dG9uQ29tcG9uZW50IHtcblxuICBASG9zdEJpbmRpbmcoJ2F0dHIuaG9zdCcpXG4gIHJlYWRvbmx5IGhvc3QgPSAnam50LWJ1dHRvbi1ob3N0JztcblxuICB1aSA9IFVJO1xuXG4gIHByaXZhdGUgX3R5cGU6IEJ1dHRvblR5cGUgPSBCdXR0b25UeXBlLmJ1dHRvbjtcbiAgaWNvbjogSWNvbjtcblxuICBASG9zdEJpbmRpbmcoJ2F0dHIuZGF0YS1zY2hlbWUnKVxuICBfc2NoZW1lOiBTY2hlbWUgPSBTY2hlbWUucHJpbWFyeTtcblxuICBASG9zdEJpbmRpbmcoJ2F0dHIuZGF0YS1zaXplJylcbiAgX3NpemU6IFNpemUgPSBTaXplLm5vcm1hbDtcblxuICBASG9zdEJpbmRpbmcoJ2F0dHIuZGF0YS1vdXRsaW5lJylcbiAgX291dGxpbmU6IE91dGxpbmUgPSBPdXRsaW5lLmZpbGw7XG5cbiAgQEhvc3RCaW5kaW5nKCdhdHRyLmRhdGEtd2lkdGgnKVxuICBfd2lkdGg6IFdpZHRoID0gV2lkdGguZGVmYXVsdDtcblxuICBASG9zdEJpbmRpbmcoJ2F0dHIuZGF0YS1zaGFwZScpXG4gIF9zaGFwZTogU2hhcGUgPSBTaGFwZS5zcXVhcmU7XG5cbiAgQFByb3BlcnR5QXBpKHtcbiAgICBkZXNjcmlwdGlvbjogJ0J1dHRvbiBzaGFwZScsXG4gICAgcGF0aDogJ3VpLnNoYXBlJyxcbiAgICBkZWZhdWx0OiBTaGFwZS5zcXVhcmUsXG4gICAgb3B0aW9uczogW1NoYXBlLmNpcmNsZSwgU2hhcGUuc3F1YXJlXVxuICB9KVxuICBASW5wdXQoKVxuICBzZXQgc2hhcGUoc2hhcGU6IFNoYXBlKSB7XG4gICAgdGhpcy5fc2hhcGUgPSBzaGFwZSB8fCBTaGFwZS5zcXVhcmU7XG4gIH1cblxuICBAUHJvcGVydHlBcGkoe1xuICAgIGRlc2NyaXB0aW9uOiAnU2V0IHRoZSBsb2FkaW5nIHN0YXR1cyBvZiBidXR0b24nLFxuICAgIHR5cGU6ICdib29sZWFuJyxcbiAgICBkZWZhdWx0OiAnZmFsc2UnXG4gIH0pXG4gIEBIb3N0QmluZGluZygnYXR0ci5kYXRhLWxvYWRpbmcnKVxuICBASW5wdXQoKVxuICBsb2FkaW5nID0gZmFsc2U7XG5cbiAgQFByb3BlcnR5QXBpKHtcbiAgICBuYW1lOiAnaWNvbicsXG4gICAgZGVzY3JpcHRpb246ICdJY29uIGZvciBidXR0b24nLFxuICAgIHR5cGU6ICdzdHJpbmcgfCB7aWNvbjogc3RyaW5nLCBwb3NpdGlvbjogUG9zaXRpb259J1xuICB9KVxuICBASW5wdXQoJ2ljb24nKVxuICBzZXQgX2ljb24oaWNvbjogc3RyaW5nIHwgSWNvbikge1xuICAgIHRoaXMuaWNvbiA9ICA8SWNvbj4odHlwZW9mIGljb24gPT09ICdzdHJpbmcnXG4gICAgICA/IHtpY29uOiBpY29uLCBwb3NpdGlvbjogUG9zaXRpb24ubGVmdH0gOiBpY29uKTtcbiAgfVxuXG4gIEBQcm9wZXJ0eUFwaSh7XG4gICAgZGVzY3JpcHRpb246ICdCdXR0b24gY29sb3Igc2NoZW1lJyxcbiAgICBwYXRoOiAndWkuc2NoZW1lJyxcbiAgICBvcHRpb25zOiBbU2NoZW1lLnByaW1hcnksIFNjaGVtZS5zZWNvbmRhcnksIFNjaGVtZS5zdWNjZXNzLCBTY2hlbWUuZmFpbF0sXG4gICAgZGVmYXVsdDogU2NoZW1lLnByaW1hcnlcbiAgfSlcbiAgQElucHV0KClcbiAgc2V0IHNjaGVtZShzY2hlbWU6IFNjaGVtZSkge1xuICAgIHRoaXMuX3NjaGVtZSA9IHNjaGVtZSB8fCBTY2hlbWUucHJpbWFyeTtcbiAgfVxuXG4gIEBQcm9wZXJ0eUFwaSh7XG4gICAgZGVzY3JpcHRpb246ICdCdXR0b24gc2l6ZScsXG4gICAgcGF0aDogJ3VpLnNpemUnLFxuICAgIG9wdGlvbnM6IFtTaXplLnRpbnksIFNpemUuc21hbGwsIFNpemUubm9ybWFsLCBTaXplLmxhcmdlXSxcbiAgICBkZWZhdWx0OiBTaXplLm5vcm1hbFxuICB9KVxuICBASW5wdXQoKVxuICBzZXQgc2l6ZShzaXplOiBTaXplKSB7XG4gICAgdGhpcy5fc2l6ZSA9IHNpemUgfHwgU2l6ZS5ub3JtYWw7XG4gIH1cblxuICBnZXQgc2l6ZSgpIHtcbiAgICByZXR1cm4gdGhpcy5fc2l6ZTtcbiAgfVxuXG4gIEBIb3N0QmluZGluZygnYXR0ci5kYXRhLXdpdGgtdGV4dCcpXG4gIGdldCB3aXRoVGV4dCgpIHtcbiAgICByZXR1cm4gISF0aGlzLnRleHQ7XG4gIH1cblxuICBAUHJvcGVydHlBcGkoe1xuICAgIGRlc2NyaXB0aW9uOiAnQnV0dG9uIG91dGxpbmUnLFxuICAgIHBhdGg6ICd1aS5vdXRsaW5lJyxcbiAgICBkZWZhdWx0OiBPdXRsaW5lLmZpbGwsXG4gICAgb3B0aW9uczogW091dGxpbmUudHJhbnNwYXJlbnQsIE91dGxpbmUuZ2hvc3QsIE91dGxpbmUuZmlsbF1cbiAgfSlcbiAgQElucHV0KClcbiAgc2V0IG91dGxpbmUob3V0bGluZTogT3V0bGluZSkge1xuICAgIHRoaXMuX291dGxpbmUgPSBvdXRsaW5lIHx8IE91dGxpbmUuZmlsbDtcbiAgfVxuXG4gIEBQcm9wZXJ0eUFwaSh7XG4gICAgZGVzY3JpcHRpb246ICdCdXR0b24gd2lkdGgnLFxuICAgIHBhdGg6ICd1aS53aWR0aCcsXG4gICAgZGVmYXVsdDogV2lkdGguZGVmYXVsdCxcbiAgICBvcHRpb25zOiBbV2lkdGguZGVmYXVsdCwgV2lkdGguZmx1aWRdXG4gIH0pXG4gIEBJbnB1dCgpXG4gIHNldCB3aWR0aCh3aWR0aDogV2lkdGgpIHtcbiAgICB0aGlzLl93aWR0aCA9IHdpZHRoIHx8IFdpZHRoLmRlZmF1bHQ7XG4gIH1cblxuICBASG9zdEJpbmRpbmcoJ2F0dHIuZGF0YS1kaXNhYmxlZCcpXG4gIGdldCBkaXNhYmxlKCkge1xuICAgIHJldHVybiB0aGlzLmRpc2FibGVkIHx8IHRoaXMubG9hZGluZztcbiAgfVxuXG4gIEBQcm9wZXJ0eUFwaSh7XG4gICAgZGVzY3JpcHRpb246ICdTZXQgZGlzYWJsZWQgc3RhdGUnLFxuICAgIHR5cGU6ICdib29sZWFuJyxcbiAgICBkZWZhdWx0OiAnZmFsc2UnLFxuICB9KVxuICBASW5wdXQoKVxuICBkaXNhYmxlZCA9IGZhbHNlO1xuXG4gIEBQcm9wZXJ0eUFwaSh7XG4gICAgZGVzY3JpcHRpb246ICdCdXR0b24gdHlwZUNvbnRyb2wnLFxuICAgIHBhdGg6ICd1aS5idXR0b24udHlwZScsXG4gICAgZGVmYXVsdDogQnV0dG9uVHlwZS5idXR0b24sXG4gICAgb3B0aW9uczogW0J1dHRvblR5cGUuYnV0dG9uLCBCdXR0b25UeXBlLnN1Ym1pdF1cbiAgfSlcbiAgQElucHV0KClcbiAgc2V0IHR5cGUodHlwZTogQnV0dG9uVHlwZSkge1xuICAgIHRoaXMuX3R5cGUgPSB0eXBlIHx8IEJ1dHRvblR5cGUuYnV0dG9uO1xuICB9XG5cbiAgZ2V0IHR5cGUoKSB7XG4gICAgcmV0dXJuIHRoaXMuX3R5cGU7XG4gIH1cblxuICBAUHJvcGVydHlBcGkoe1xuICAgIGRlc2NyaXB0aW9uOiAnVGV4dCBvbiBidXR0b24nLFxuICAgIHR5cGU6ICdzdHJpbmcnLFxuICB9KVxuICBASW5wdXQoKVxuICB0ZXh0OiBzdHJpbmc7XG5cbiAgQFByb3BlcnR5QXBpKHtcbiAgICBkZXNjcmlwdGlvbjogJ0NsaWNrIGV2ZW50JyxcbiAgICBwYXRoOiAnRXZlbnRFbWl0dGVyJ1xuICB9KVxuICBAT3V0cHV0KClcbiAgY2xpY2sgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcblxuICBAQ29udGVudENoaWxkcmVuKEJhZGdlQ29tcG9uZW50KVxuICBiYWRnZXM6IFF1ZXJ5TGlzdDxCYWRnZUNvbXBvbmVudD47XG59XG4iXX0=