UNPKG

@js-sugar/angular

Version:

JS-Sugar core package (Angular)

195 lines 26.9 kB
import { Input, Component, Output, EventEmitter, HostBinding } from '@angular/core'; import { PanelBackdropComponent } from './panel-backdrop.component'; import { trigger, state, style, transition } from '@angular/animations'; import { SIDENAV_ANIMATE } from './animation'; import * as i0 from "@angular/core"; import * as i1 from "./panels.component"; import * as i2 from "@angular/cdk/bidi"; export class PanelComponent { constructor(elementRef, _parent, _renderer, _viewRef, _dir) { this.elementRef = elementRef; this._parent = _parent; this._renderer = _renderer; this._viewRef = _viewRef; this._dir = _dir; this._backdrop = false; this._animationState = false; this.position = 'start'; this.placement = 'container'; this.stretch = 'both'; this.show = true; this.size = 200; this.over = true; this.zOrder = 1; this.backdropClick = new EventEmitter(); } set backdrop(value) { if (value === this._backdrop) { return; } if (value) { const compRef = this._viewRef.createComponent(PanelBackdropComponent); this._renderer.setStyle(compRef.instance.elementRef.nativeElement, 'z-index', this.zOrder * 2 - 1); this._backdropUnlistenFunc = this._renderer.listen(compRef.instance.elementRef.nativeElement, 'click', (e) => { this.backdropClick.emit(this); }); } else { this._viewRef.clear(); } this._backdrop = value; } get backdrop() { return this._backdrop; } ngOnChanges(changes) { const change = changes['position'] || changes['stretch'] || changes['size'] || changes['show'] || changes['over']; if (change && !change.isFirstChange()) { this._parent.refresh(); this._animationState = !this._animationState; } } get _zIndex() { return this.zOrder * 2; } get _position() { return this.placement === 'container' ? 'absolute' : 'fixed'; } get _animationTrigger() { const ltr = this._dir.value === 'ltr'; const contentPos = this._parent.contentPosition; const isStretchNoneOrStart = this.stretch === 'none' || this.stretch === 'start'; const isStretchNone = this.stretch === 'none'; const isStretchStart = this.stretch === 'start'; const isStretchEnd = this.stretch === 'end'; const isStretchNoneOrEnd = isStretchNone || isStretchEnd; const isStretchBoth = this.stretch === 'both'; let params; switch (this.position) { case 'start': params = { top: isStretchNoneOrEnd ? `${contentPos?.top}px` : '0', bottom: isStretchNoneOrStart ? `${contentPos?.bottom}px` : '0', left: ltr ? '0' : '', right: ltr ? '' : '0', hideTransform: `translateX(${ltr ? -100 : 100}%)`, }; break; case 'end': params = { top: isStretchNoneOrEnd ? `${contentPos?.top}px` : '0', bottom: isStretchNoneOrStart ? `${contentPos?.bottom}px` : '0', left: ltr ? '' : '0', right: ltr ? '0' : '', hideTransform: `translateX(${ltr ? 100 : -100}%)`, }; break; case 'top': params = { top: '0', bottom: '', left: isStretchBoth || (isStretchStart && ltr) || (isStretchEnd && !ltr) ? '0' : `${contentPos?.left}px`, right: isStretchBoth || (isStretchEnd && ltr) || (isStretchStart && !ltr) ? '0' : `${contentPos?.right}px`, hideTransform: 'translateY(-100%)', }; break; case 'bottom': params = { top: '', bottom: '0', left: isStretchBoth || (isStretchStart && ltr) || (isStretchEnd && !ltr) ? '0' : `${contentPos?.left}px`, right: isStretchBoth || (isStretchEnd && ltr) || (isStretchStart && !ltr) ? '0' : `${contentPos?.right}px`, hideTransform: 'translateY(100%)', }; break; default: throw Error('Invalid position'); } return { value: this._animationState, params: { ...params, transform: this.show ? 'translate(0,0)' : params.hideTransform, } }; } ngOnDestroy() { if (this._backdropUnlistenFunc) { this._backdropUnlistenFunc(); } } } PanelComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.1.1", ngImport: i0, type: PanelComponent, deps: [{ token: i0.ElementRef }, { token: i1.PanelsComponent }, { token: i0.Renderer2 }, { token: i0.ViewContainerRef }, { token: i2.Directionality }], target: i0.ɵɵFactoryTarget.Component }); PanelComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.1.1", type: PanelComponent, selector: "jss-panel", inputs: { position: "position", placement: "placement", stretch: "stretch", show: "show", size: "size", over: "over", zOrder: "zOrder", backdrop: "backdrop" }, outputs: { backdropClick: "backdropClick" }, host: { properties: { "style.z-index": "this._zIndex", "style.position": "this._position", "@t": "this._animationTrigger" } }, exportAs: ["jssPanel"], usesOnChanges: true, ngImport: i0, template: "<ng-content></ng-content>", styles: [":host{display:block;position:absolute}\n"], animations: [ trigger('t', [ state('0', style({ left: '{{left}}', right: '{{right}}', top: '{{top}}', bottom: '{{bottom}}', transform: '{{transform}}' }), { params: { left: '', right: '', top: '', bottom: '', transform: '' } }), state('1', style({ left: '{{left}}', right: '{{right}}', top: '{{top}}', bottom: '{{bottom}}', transform: '{{transform}}' }), { params: { left: '', right: '', top: '', bottom: '', transform: '' } }), transition('0 <=> 1', [ SIDENAV_ANIMATE, ]) ]), ] }); i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.1.1", ngImport: i0, type: PanelComponent, decorators: [{ type: Component, args: [{ selector: 'jss-panel', exportAs: 'jssPanel', animations: [ trigger('t', [ state('0', style({ left: '{{left}}', right: '{{right}}', top: '{{top}}', bottom: '{{bottom}}', transform: '{{transform}}' }), { params: { left: '', right: '', top: '', bottom: '', transform: '' } }), state('1', style({ left: '{{left}}', right: '{{right}}', top: '{{top}}', bottom: '{{bottom}}', transform: '{{transform}}' }), { params: { left: '', right: '', top: '', bottom: '', transform: '' } }), transition('0 <=> 1', [ SIDENAV_ANIMATE, ]) ]), ], template: "<ng-content></ng-content>", styles: [":host{display:block;position:absolute}\n"] }] }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i1.PanelsComponent }, { type: i0.Renderer2 }, { type: i0.ViewContainerRef }, { type: i2.Directionality }]; }, propDecorators: { position: [{ type: Input }], placement: [{ type: Input }], stretch: [{ type: Input }], show: [{ type: Input }], size: [{ type: Input }], over: [{ type: Input }], zOrder: [{ type: Input }], backdrop: [{ type: Input }], backdropClick: [{ type: Output }], _zIndex: [{ type: HostBinding, args: ['style.z-index'] }], _position: [{ type: HostBinding, args: ['style.position'] }], _animationTrigger: [{ type: HostBinding, args: ['@t'] }] } }); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFuZWwuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYW5ndWxhci9zcmMvbGliL2NvbXBvbmVudHMvcGFuZWxzL3BhbmVsLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FuZ3VsYXIvc3JjL2xpYi9jb21wb25lbnRzL3BhbmVscy9wYW5lbC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0gsS0FBSyxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsWUFBWSxFQUNULFdBQVcsRUFDM0MsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFFcEUsT0FBTyxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLFVBQVUsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBRXhFLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxhQUFhLENBQUM7Ozs7QUE4QjlDLE1BQU0sT0FBTyxjQUFjO0lBK0J2QixZQUNXLFVBQXNCLEVBQ3JCLE9BQXdCLEVBQ3hCLFNBQW9CLEVBQ3BCLFFBQTBCLEVBQzFCLElBQW9CO1FBSnJCLGVBQVUsR0FBVixVQUFVLENBQVk7UUFDckIsWUFBTyxHQUFQLE9BQU8sQ0FBaUI7UUFDeEIsY0FBUyxHQUFULFNBQVMsQ0FBVztRQUNwQixhQUFRLEdBQVIsUUFBUSxDQUFrQjtRQUMxQixTQUFJLEdBQUosSUFBSSxDQUFnQjtRQW5DeEIsY0FBUyxHQUFHLEtBQUssQ0FBQztRQUVsQixvQkFBZSxHQUFHLEtBQUssQ0FBQztRQUN2QixhQUFRLEdBQWtCLE9BQU8sQ0FBQztRQUNsQyxjQUFTLEdBQW1CLFdBQVcsQ0FBQztRQUN4QyxZQUFPLEdBQWlCLE1BQU0sQ0FBQztRQUMvQixTQUFJLEdBQUcsSUFBSSxDQUFDO1FBQ1osU0FBSSxHQUFHLEdB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SSxhQUFhO3NCQUF0QixNQUFNO2dCQW1CbUMsT0FBTztzQkFBaEQsV0FBVzt1QkFBQyxlQUFlO2dCQUllLFNBQVM7c0JBQW5ELFdBQVc7dUJBQUMsZ0JBQWdCO2dCQUlFLGlCQUFpQjtzQkFBL0MsV0FBVzt1QkFBQyxJQUFJIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcclxuICAgIElucHV0LCBDb21wb25lbnQsIE91dHB1dCwgRXZlbnRFbWl0dGVyLCBSZW5kZXJlcjIsIEVsZW1lbnRSZWYsIENvbXBvbmVudEZhY3RvcnlSZXNvbHZlcixcclxuICAgIFZpZXdDb250YWluZXJSZWYsIE9uRGVzdHJveSwgSG9zdEJpbmRpbmcsIE9uQ2hhbmdlcywgU2ltcGxlQ2hhbmdlc1xyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBQYW5lbEJhY2tkcm9wQ29tcG9uZW50IH0gZnJvbSAnLi9wYW5lbC1iYWNrZHJvcC5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBQYW5lbFBsYWNlbWVudCwgUGFuZWxQb3NpdGlvbiwgUGFuZWxTdHJldGNoIH0gZnJvbSAnLi90eXBlcyc7XHJcbmltcG9ydCB7IHRyaWdnZXIsIHN0YXRlLCBzdHlsZSwgdHJhbnNpdGlvbiB9IGZyb20gJ0Bhbmd1bGFyL2FuaW1hdGlvbnMnO1xyXG5pbXBvcnQgeyBEaXJlY3Rpb25hbGl0eSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9iaWRpJztcclxuaW1wb3J0IHsgU0lERU5BVl9BTklNQVRFIH0gZnJvbSAnLi9hbmltYXRpb24nO1xyXG5pbXBvcnQgeyBQYW5lbHNDb21wb25lbnQgfSBmcm9tICcuL3BhbmVscy5jb21wb25lbnQnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgICBzZWxlY3RvcjogJ2pzcy1wYW5lbCcsXHJcbiAgICBleHBvcnRBczogJ2pzc1BhbmVsJyxcclxuICAgIHN0eWxlVXJsczogWycuL3BhbmVsLmNvbXBvbmVudC5zY3NzJ10sXHJcbiAgICB0ZW1wbGF0ZVVybDogJ3BhbmVsLmNvbXBvbmVudC5odG1sJyxcclxuICAgIGFuaW1hdGlvbnM6IFtcclxuICAgICAgICB0cmlnZ2VyKCd0JywgW1xyXG4gICAgICAgICAgICBzdGF0ZSgnMCcsIHN0eWxlKHtcclxuICAgICAgICAgICAgICAgIGxlZnQ6ICd7e2xlZnR9fScsXHJcbiAgICAgICAgICAgICAgICByaWdodDogJ3t7cmlnaHR9fScsXHJcbiAgICAgICAgICAgICAgICB0b3A6ICd7e3RvcH19JyxcclxuICAgICAgICAgICAgICAgIGJvdHRvbTogJ3t7Ym90dG9tfX0nLFxyXG4gICAgICAgICAgICAgICAgdHJhbnNmb3JtOiAne3t0cmFuc2Zvcm19fSdcclxuICAgICAgICAgICAgfSksIHsgcGFyYW1zOiB7IGxlZnQ6ICcnLCByaWdodDogJycsIHRvcDogJycsIGJvdHRvbTogJycsIHRyYW5zZm9ybTogJycgfSB9KSxcclxuICAgICAgICAgICAgc3RhdGUoJzEnLCBzdHlsZSh7XHJcbiAgICAgICAgICAgICAgICBsZWZ0OiAne3tsZWZ0fX0nLFxyXG4gICAgICAgICAgICAgICAgcmlnaHQ6ICd7e3JpZ2h0fX0nLFxyXG4gICAgICAgICAgICAgICAgdG9wOiAne3t0b3B9fScsXHJcbiAgICAgICAgICAgICAgICBib3R0b206ICd7e2JvdHRvbX19JyxcclxuICAgICAgICAgICAgICAgIHRyYW5zZm9ybTogJ3t7dHJhbnNmb3JtfX0nXHJcbiAgICAgICAgICAgIH0pLCB7IHBhcmFtczogeyBsZWZ0OiAnJywgcmlnaHQ6ICcnLCB0b3A6ICcnLCBib3R0b206ICcnLCB0cmFuc2Zvcm06ICcnIH0gfSksXHJcbiAgICAgICAgICAgIHRyYW5zaXRpb24oJzAgPD0+IDEnLCBbXHJcbiAgICAgICAgICAgICAgICBTSURFTkFWX0FOSU1BVEUsXHJcbiAgICAgICAgICAgIF0pXHJcbiAgICAgICAgXSksXHJcbiAgICBdXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBQYW5lbENvbXBvbmVudCBpbXBsZW1lbnRzIE9uQ2hhbmdlcywgT25EZXN0cm95IHtcclxuICAgIHByaXZhdGUgX2JhY2tkcm9wID0gZmFsc2U7XHJcbiAgICBwcml2YXRlIF9iYWNrZHJvcFVubGlzdGVuRnVuYz86ICgpID0+IHZvaWQ7XHJcbiAgICBwcml2YXRlIF9hbmltYXRpb25TdGF0ZSA9IGZhbHNlO1xyXG4gICAgQElucHV0KCkgcG9zaXRpb246IFBhbmVsUG9zaXRpb24gPSAnc3RhcnQnO1xyXG4gICAgQElucHV0KCkgcGxhY2VtZW50OiBQYW5lbFBsYWNlbWVudCA9ICdjb250YWluZXInO1xyXG4gICAgQElucHV0KCkgc3RyZXRjaDogUGFuZWxTdHJldGNoID0gJ2JvdGgnO1xyXG4gICAgQElucHV0KCkgc2hvdyA9IHRydWU7XHJcbiAgICBASW5wdXQoKSBzaXplID0gMjAwO1xyXG4gICAgQElucHV0KCkgb3ZlciA9IHRydWU7XHJcbiAgICBASW5wdXQoKSB6T3JkZXIgPSAxO1xyXG4gICAgQElucHV0KCkgc2V0IGJhY2tkcm9wKHZhbHVlOiBib29sZWFuKSB7XHJcbiAgICAgICAgaWYgKHZhbHVlID09PSB0aGlzLl9iYWNrZHJvcCkgeyByZXR1cm47IH1cclxuICAgICAgICBpZiAodmFsdWUpIHtcclxuICAgICAgICAgICAgY29uc3QgY29tcFJlZiA9IHRoaXMuX3ZpZXdSZWYuY3JlYXRlQ29tcG9uZW50PFBhbmVsQmFja2Ryb3BDb21wb25lbnQ+KFBhbmVsQmFja2Ryb3BDb21wb25lbnQpO1xyXG4gICAgICAgICAgICB0aGlzLl9yZW5kZXJlci5zZXRTdHlsZShjb21wUmVmLmluc3RhbmNlLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudCwgJ3otaW5kZXgnLCB0aGlzLnpPcmRlciAqIDIgLSAxKTtcclxuICAgICAgICAgICAgdGhpcy5fYmFja2Ryb3BVbmxpc3RlbkZ1bmMgPSB0aGlzLl9yZW5kZXJlci5saXN0ZW4oY29tcFJlZi5pbnN0YW5jZS5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQsICdjbGljaycsIChlKSA9PiB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmJhY2tkcm9wQ2xpY2suZW1pdCh0aGlzKTtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgdGhpcy5fdmlld1JlZi5jbGVhcigpO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLl9iYWNrZHJvcCA9IHZhbHVlO1xyXG4gICAgfVxyXG5cclxuICAgIGdldCBiYWNrZHJvcCgpOiBib29sZWFuIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5fYmFja2Ryb3A7XHJcbiAgICB9XHJcbiAgICBcclxuICAgIEBPdXRwdXQoKSBiYWNrZHJvcENsaWNrID0gbmV3IEV2ZW50RW1pdHRlcjxQYW5lbENvbXBvbmVudD4oKTtcclxuXHJcbiAgICBjb25zdHJ1Y3RvcihcclxuICAgICAgICBwdWJsaWMgZWxlbWVudFJlZjogRWxlbWVudFJlZixcclxuICAgICAgICBwcml2YXRlIF9wYXJlbnQ6IFBhbmVsc0NvbXBvbmVudCxcclxuICAgICAgICBwcml2YXRlIF9yZW5kZXJlcjogUmVuZGVyZXIyLFxyXG4gICAgICAgIHByaXZhdGUgX3ZpZXdSZWY6IFZpZXdDb250YWluZXJSZWYsXHJcbiAgICAgICAgcHJpdmF0ZSBfZGlyOiBEaXJlY3Rpb25hbGl0eSxcclxuICAgICkge1xyXG4gICAgfVxyXG5cclxuICAgIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcclxuICAgICAgICBjb25zdCBjaGFuZ2UgPSBjaGFuZ2VzWydwb3NpdGlvbiddIHx8IGNoYW5nZXNbJ3N0cmV0Y2gnXSB8fCBjaGFuZ2VzWydzaXplJ10gfHwgY2hhbmdlc1snc2hvdyddIHx8IGNoYW5nZXNbJ292ZXInXTtcclxuICAgICAgICBpZiAoY2hhbmdlICYmICFjaGFuZ2UuaXNGaXJzdENoYW5nZSgpKSB7XHJcbiAgICAgICAgICAgIHRoaXMuX3BhcmVudC5yZWZyZXNoKCk7XHJcbiAgICAgICAgICAgIHRoaXMuX2FuaW1hdGlvblN0YXRlID0gIXRoaXMuX2FuaW1hdGlvblN0YXRlO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBASG9zdEJpbmRpbmcoJ3N0eWxlLnotaW5kZXgnKSBwcml2YXRlIGdldCBfekluZGV4KCkge1xyXG4gICAgICAgIHJldHVybiB0aGlzLnpPcmRlciAqIDI7XHJcbiAgICB9XHJcblxyXG4gICAgQEhvc3RCaW5kaW5nKCdzdHlsZS5wb3NpdGlvbicpIHByaXZhdGUgZ2V0IF9wb3NpdGlvbigpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5wbGFjZW1lbnQgPT09ICdjb250YWluZXInID8gJ2Fic29sdXRlJyA6ICdmaXhlZCc7XHJcbiAgICB9XHJcblxyXG4gICAgQEhvc3RCaW5kaW5nKCdAdCcpIHByaXZhdGUgZ2V0IF9hbmltYXRpb25UcmlnZ2VyKCkge1xyXG4gICAgICAgIGNvbnN0IGx0ciA9IHRoaXMuX2Rpci52YWx1ZSA9PT0gJ2x0cic7XHJcbiAgICAgICAgY29uc3QgY29udGVudFBvcyA9IHRoaXMuX3BhcmVudC5jb250ZW50UG9zaXRpb247XHJcbiAgICAgICAgY29uc3QgaXNTdHJldGNoTm9uZU9yU3RhcnQgPSB0aGlzLnN0cmV0Y2ggPT09ICdub25lJyB8fCB0aGlzLnN0cmV0Y2ggPT09ICdzdGFydCc7XHJcbiAgICAgICAgY29uc3QgaXNTdHJldGNoTm9uZSA9IHRoaXMuc3RyZXRjaCA9PT0gJ25vbmUnO1xyXG4gICAgICAgIGNvbnN0IGlzU3RyZXRjaFN0YXJ0ID0gdGhpcy5zdHJldGNoID09PSAnc3RhcnQnO1xyXG4gICAgICAgIGNvbnN0IGlzU3RyZXRjaEVuZCA9IHRoaXMuc3RyZXRjaCA9PT0gJ2VuZCc7XHJcbiAgICAgICAgY29uc3QgaXNTdHJldGNoTm9uZU9yRW5kID0gaXNTdHJldGNoTm9uZSB8fCBpc1N0cmV0Y2hFbmQ7XHJcbiAgICAgICAgY29uc3QgaXNTdHJldGNoQm90aCA9IHRoaXMuc3RyZXRjaCA9PT0gJ2JvdGgnO1xyXG4gICAgICAgIGxldCBwYXJhbXM6IHsgdG9wOiBzdHJpbmcsIGJvdHRvbTogc3RyaW5nLCBsZWZ0OiBzdHJpbmcsIHJpZ2h0OiBzdHJpbmcsIGhpZGVUcmFuc2Zvcm06IHN0cmluZyB9O1xyXG5cclxuICAgICAgICBzd2l0Y2ggKHRoaXMucG9zaXRpb24pIHtcclxuICAgICAgICAgICAgY2FzZSAnc3RhcnQnOlxyXG4gICAgICAgICAgICAgICAgcGFyYW1zID0ge1xyXG4gICAgICAgICAgICAgICAgICAgIHRvcDogaXNTdHJldGNoTm9uZU9yRW5kID8gYCR7Y29udGVudFBvcz8udG9wfXB4YCA6ICcwJyxcclxuICAgICAgICAgICAgICAgICAgICBib3R0b206IGlzU3RyZXRjaE5vbmVPclN0YXJ0ID8gYCR7Y29udGVudFBvcz8uYm90dG9tfXB4YCA6ICcwJyxcclxuICAgICAgICAgICAgICAgICAgICBsZWZ0OiBsdHIgPyAnMCcgOiAnJyxcclxuICAgICAgICAgICAgICAgICAgICByaWdodDogbHRyID8gJycgOiAnMCcsXHJcbiAgICAgICAgICAgICAgICAgICAgaGlkZVRyYW5zZm9ybTogYHRyYW5zbGF0ZVgoJHtsdHIgPyAtMTAwIDogMTAwfSUpYCxcclxuICAgICAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgY2FzZSAnZW5kJzpcclxuICAgICAgICAgICAgICAgIHBhcmFtcyA9IHtcclxuICAgICAgICAgICAgICAgICAgICB0b3A6IGlzU3RyZXRjaE5vbmVPckVuZCA/IGAke2NvbnRlbnRQb3M/LnRvcH1weGAgOiAnMCcsXHJcbiAgICAgICAgICAgICAgICAgICAgYm90dG9tOiBpc1N0cmV0Y2hOb25lT3JTdGFydCA/IGAke2NvbnRlbnRQb3M/LmJvdHRvbX1weGAgOiAnMCcsXHJcbiAgICAgICAgICAgICAgICAgICAgbGVmdDogbHRyID8gJycgOiAnMCcsXHJcbiAgICAgICAgICAgICAgICAgICAgcmlnaHQ6IGx0ciA/ICcwJyA6ICcnLFxyXG4gICAgICAgICAgICAgICAgICAgIGhpZGVUcmFuc2Zvcm06IGB0cmFuc2xhdGVYKCR7bHRyID8gMTAwIDogLTEwMH0lKWAsXHJcbiAgICAgICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgIGNhc2UgJ3RvcCc6XHJcbiAgICAgICAgICAgICAgICBwYXJhbXMgPSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdG9wOiAnMCcsXHJcbiAgICAgICAgICAgICAgICAgICAgYm90dG9tOiAnJyxcclxuICAgICAgICAgICAgICAgICAgICBsZWZ0OiBpc1N0cmV0Y2hCb3RoIHx8IChpc1N0cmV0Y2hTdGFydCAmJiBsdHIpIHx8IChpc1N0cmV0Y2hFbmQgJiYgIWx0cikgPyAnMCcgOiBgJHtjb250ZW50UG9zPy5sZWZ0fXB4YCxcclxuICAgICAgICAgICAgICAgICAgICByaWdodDogaXNTdHJldGNoQm90aCB8fCAoaXNTdHJldGNoRW5kICYmIGx0cikgfHwgKGlzU3RyZXRjaFN0YXJ0ICYmICFsdHIpID8gJzAnIDogYCR7Y29udGVudFBvcz8ucmlnaHR9cHhgLFxyXG4gICAgICAgICAgICAgICAgICAgIGhpZGVUcmFuc2Zvcm06ICd0cmFuc2xhdGVZKC0xMDAlKScsXHJcbiAgICAgICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgIGNhc2UgJ2JvdHRvbSc6XHJcbiAgICAgICAgICAgICAgICBwYXJhbXMgPSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdG9wOiAnJyxcclxuICAgICAgICAgICAgICAgICAgICBib3R0b206ICcwJyxcclxuICAgICAgICAgICAgICAgICAgICBsZWZ0OiBpc1N0cmV0Y2hCb3RoIHx8IChpc1N0cmV0Y2hTdGFydCAmJiBsdHIpIHx8IChpc1N0cmV0Y2hFbmQgJiYgIWx0cikgPyAnMCcgOiBgJHtjb250ZW50UG9zPy5sZWZ0fXB4YCxcclxuICAgICAgICAgICAgICAgICAgICByaWdodDogaXNTdHJldGNoQm90aCB8fCAoaXNTdHJldGNoRW5kICYmIGx0cikgfHwgKGlzU3RyZXRjaFN0YXJ0ICYmICFsdHIpID8gJzAnIDogYCR7Y29udGVudFBvcz8ucmlnaHR9cHhgLFxyXG4gICAgICAgICAgICAgICAgICAgIGhpZGVUcmFuc2Zvcm06ICd0cmFuc2xhdGVZKDEwMCUpJyxcclxuICAgICAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgZGVmYXVsdDpcclxuICAgICAgICAgICAgICAgIHRocm93IEVycm9yKCdJbnZhbGlkIHBvc2l0aW9uJyk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgICB2YWx1ZTogdGhpcy5fYW5pbWF0aW9uU3RhdGUsXHJcbiAgICAgICAgICAgIHBhcmFtczoge1xyXG4gICAgICAgICAgICAgICAgLi4ucGFyYW1zLFxyXG4gICAgICAgICAgICAgICAgdHJhbnNmb3JtOiB0aGlzLnNob3cgPyAndHJhbnNsYXRlKDAsMCknIDogcGFyYW1zLmhpZGVUcmFuc2Zvcm0sXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9O1xyXG4gICAgfVxyXG5cclxuICAgIG5nT25EZXN0cm95KCk6IHZvaWQge1xyXG4gICAgICAgIGlmICh0aGlzLl9iYWNrZHJvcFVubGlzdGVuRnVuYykge1xyXG4gICAgICAgICAgICB0aGlzLl9iYWNrZHJvcFVubGlzdGVuRnVuYygpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxufVxyXG4iLCI8bmctY29udGVudD48L25nLWNvbnRlbnQ+Il19