UNPKG

@junte/ui

Version:

Quality Angular UI components kit

249 lines 23.1 kB
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=