UNPKG

truly-ui

Version:

Web Components for Desktop Applications.

106 lines (104 loc) 17.8 kB
/* MIT License Copyright (c) 2019 Temainfo Software Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ import { Component, EventEmitter, Input, Output, ChangeDetectionStrategy } from '@angular/core'; import { NavigatorManagerService } from './services/navigator-manager.service'; import * as i0 from "@angular/core"; import * as i1 from "./services/navigator-manager.service"; import * as i2 from "@angular/common"; import * as i3 from "../icons/icons"; export class TlNavigator { constructor(navigatorManager, change) { this.navigatorManager = navigatorManager; this.change = change; this.width = '125px'; this.height = '32px'; this.type = 'monthyear'; this.date = new Date(); this.range = 11; this.withBorder = true; this.color = 'basic'; this.clickPrevious = new EventEmitter(); this.clickNext = new EventEmitter(); this.clickNavigator = new EventEmitter(); this.description = ''; } ngOnInit() { this.navigatorManager.setType(this.type); this.navigatorManager.setRange(this.range); this.navigatorManager.setDate(this.date); this.setDescription(); } ngOnChanges(change) { this.navigatorManager.setType(this.type); this.navigatorManager.setRange(this.range); this.navigatorManager.setDate(this.date); this.setDescription(); } onClickPrevious() { this.navigatorManager.previous(); this.setDescription(); this.clickPrevious.emit(this.navigatorManager.getDataObject()); } onClickNext() { this.navigatorManager.next(); this.setDescription(); this.clickNext.emit(this.navigatorManager.getDataObject()); } onClickNavigator() { this.clickNavigator.emit(this.navigatorManager.getDataObject()); } setDescription() { this.description = this.navigatorManager.getDescription(); this.change.detectChanges(); } } /** @nocollapse */ TlNavigator.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: TlNavigator, deps: [{ token: i1.NavigatorManagerService }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); /** @nocollapse */ TlNavigator.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: TlNavigator, selector: "tl-navigator", inputs: { width: "width", height: "height", type: "type", date: "date", range: "range", withBorder: "withBorder", color: "color" }, outputs: { clickPrevious: "clickPrevious", clickNext: "clickNext", clickNavigator: "clickNavigator" }, providers: [NavigatorManagerService], usesOnChanges: true, ngImport: i0, template: "<div [class]=\"'tl-navigator '+ color\">\n <div tabindex=\"-1\"\n (click)=\"onClickPrevious()\"\n [ngClass]=\"{'ui-button': true, 'ui-with-border': withBorder}\"\n [ngStyle]=\"{height:height, lineHeight: height}\">\n <tl-icon [lib]=\"'fa'\" [style]=\"'fas'\" [icon]=\"'chevron-left'\"></tl-icon>\n </div>\n <div tabindex=\"-1\"\n [ngClass]=\"{'ui-navigator': true,'ui-with-border': withBorder}\"\n (click)=\"onClickNavigator()\"\n [ngStyle]=\"{'max-width':width, height:height, lineHeight: height, width: width}\">\n {{description}}\n </div>\n <div tabindex=\"-1\"\n (click)=\"onClickNext()\"\n [ngClass]=\"{'ui-button': true, 'ui-with-border': withBorder}\"\n [ngStyle]=\"{height:height, lineHeight: height}\">\n <tl-icon [lib]=\"'fa'\" [style]=\"'fas'\" [icon]=\"'chevron-right'\"></tl-icon>\n </div>\n</div>\n", styles: [".tl-navigator{display:inline-flex}.tl-navigator>.ui-navigator{text-align:center;cursor:pointer;font-weight:500;font-size:1em;font-family:Segoe UI,Lato,\"sans-serif\",Arial;transition:background-color .1s linear;-webkit-user-select:none;user-select:none}.tl-navigator>.ui-navigator.ui-with-border:hover,.tl-navigator>.ui-navigator.ui-with-border:focus{border-radius:0}.tl-navigator>.ui-navigator:hover,.tl-navigator>.ui-navigator:focus{border-radius:3px;outline:none}.tl-navigator>.ui-button{width:30px;text-align:center;cursor:pointer;transition:background-color .1s linear;-webkit-user-select:none;user-select:none}.tl-navigator>.ui-button:hover,.tl-navigator>.ui-button:focus{outline:none}.tl-navigator>.ui-button.ui-with-border:first-child{border-top-left-radius:3px;border-bottom-left-radius:3px}.tl-navigator>.ui-button.ui-with-border:last-child{border-top-right-radius:3px;border-bottom-right-radius:3px}\n"], dependencies: [{ kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "component", type: i3.TlIcons, selector: "tl-icon", inputs: ["icon", "lib", "style", "size", "animation", "color", "align"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: TlNavigator, decorators: [{ type: Component, args: [{ selector: 'tl-navigator', changeDetection: ChangeDetectionStrategy.OnPush, providers: [NavigatorManagerService], template: "<div [class]=\"'tl-navigator '+ color\">\n <div tabindex=\"-1\"\n (click)=\"onClickPrevious()\"\n [ngClass]=\"{'ui-button': true, 'ui-with-border': withBorder}\"\n [ngStyle]=\"{height:height, lineHeight: height}\">\n <tl-icon [lib]=\"'fa'\" [style]=\"'fas'\" [icon]=\"'chevron-left'\"></tl-icon>\n </div>\n <div tabindex=\"-1\"\n [ngClass]=\"{'ui-navigator': true,'ui-with-border': withBorder}\"\n (click)=\"onClickNavigator()\"\n [ngStyle]=\"{'max-width':width, height:height, lineHeight: height, width: width}\">\n {{description}}\n </div>\n <div tabindex=\"-1\"\n (click)=\"onClickNext()\"\n [ngClass]=\"{'ui-button': true, 'ui-with-border': withBorder}\"\n [ngStyle]=\"{height:height, lineHeight: height}\">\n <tl-icon [lib]=\"'fa'\" [style]=\"'fas'\" [icon]=\"'chevron-right'\"></tl-icon>\n </div>\n</div>\n", styles: [".tl-navigator{display:inline-flex}.tl-navigator>.ui-navigator{text-align:center;cursor:pointer;font-weight:500;font-size:1em;font-family:Segoe UI,Lato,\"sans-serif\",Arial;transition:background-color .1s linear;-webkit-user-select:none;user-select:none}.tl-navigator>.ui-navigator.ui-with-border:hover,.tl-navigator>.ui-navigator.ui-with-border:focus{border-radius:0}.tl-navigator>.ui-navigator:hover,.tl-navigator>.ui-navigator:focus{border-radius:3px;outline:none}.tl-navigator>.ui-button{width:30px;text-align:center;cursor:pointer;transition:background-color .1s linear;-webkit-user-select:none;user-select:none}.tl-navigator>.ui-button:hover,.tl-navigator>.ui-button:focus{outline:none}.tl-navigator>.ui-button.ui-with-border:first-child{border-top-left-radius:3px;border-bottom-left-radius:3px}.tl-navigator>.ui-button.ui-with-border:last-child{border-top-right-radius:3px;border-bottom-right-radius:3px}\n"] }] }], ctorParameters: function () { return [{ type: i1.NavigatorManagerService }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { width: [{ type: Input, args: ['width'] }], height: [{ type: Input, args: ['height'] }], type: [{ type: Input, args: ['type'] }], date: [{ type: Input, args: ['date'] }], range: [{ type: Input, args: ['range'] }], withBorder: [{ type: Input, args: ['withBorder'] }], color: [{ type: Input }], clickPrevious: [{ type: Output }], clickNext: [{ type: Output }], clickNavigator: [{ type: Output }] } }); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmF2aWdhdG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvdHJ1bHktdWkvc3JjL2NvbXBvbmVudHMvbmF2aWdhdG9yL25hdmlnYXRvci50cyIsIi4uLy4uLy4uLy4uL3Byb2plY3RzL3RydWx5LXVpL3NyYy9jb21wb25lbnRzL25hdmlnYXRvci9uYXZpZ2F0b3IuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FvQkc7QUFFSCxPQUFPLEVBQ0wsU0FBUyxFQUNULFlBQVksRUFDWixLQUFLLEVBQ0wsTUFBTSxFQUNOLHVCQUF1QixFQUt4QixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQzs7Ozs7QUFTL0UsTUFBTSxPQUFPLFdBQVc7SUF3QnRCLFlBQ1MsZ0JBQXlDLEVBQ3pDLE1BQXlCO1FBRHpCLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBeUI7UUFDekMsV0FBTSxHQUFOLE1BQU0sQ0FBbUI7UUF4QmxCLFVBQUssR0FBRyxPQUFPLENBQUM7UUFFZixXQUFNLEdBQUcsTUFBTSxDQUFDO1FBRWxCLFNBQUksR0FBNkQsV0FBVyxDQUFDO1FBRTdFLFNBQUksR0FBRyxJQUFJLElBQUksRUFBRSxDQUFDO1FBRWpCLFVBQUssR0FBRyxFQUFFLENBQUM7UUFFTixlQUFVLEdBQUcsSUFBSSxDQUFDO1FBRTlCLFVBQUssR0FBRyxPQUFPLENBQUM7UUFFZixrQkFBYSxHQUFzQixJQUFJLFlBQVksRUFBTyxDQUFDO1FBRTNELGNBQVMsR0FBc0IsSUFBSSxZQUFZLEVBQU8sQ0FBQztRQUV2RCxtQkFBYyxHQUFzQixJQUFJLFlBQVksRUFBTyxDQUFDO1FBRS9ELGdCQUFXLEdBQUcsRUFBRSxDQUFDO0lBS3JCLENBQUM7SUFFSixRQUFRO1FBQ04sSUFBSSxDQUFDLGdCQUFnQixDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDekMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDM0MsSUFBSSxDQUFDLGdCQUFnQixDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDekMsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDO0lBQ3hCLENBQUM7SUFFRCxXQUFXLENBQUMsTUFBcUI7UUFDL0IsSUFBSSxDQUFDLGdCQUFnQixDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDekMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDM0MsSUFBSSxDQUFDLGdCQUFnQixDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDekMsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDO0lBQ3hCLENBQUM7SUFFRCxlQUFlO1FBQ2IsSUFBSSxDQUFDLGdCQUFnQixDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQ2pDLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQztRQUN0QixJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBRSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsYUFBYSxFQUFFLENBQUUsQ0FBQztJQUNuRSxDQUFDO0lBRUQsV0FBVztRQUNULElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUM3QixJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7UUFDdEIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLGFBQWEsRUFBRSxDQUFDLENBQUM7SUFDN0QsQ0FBQztJQUVELGdCQUFnQjtRQUNkLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxhQUFhLEVBQUUsQ0FBQyxDQUFDO0lBQ2xFLENBQUM7SUFFTyxjQUFjO1FBQ3BCLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDLGNBQWMsRUFBRSxDQUFDO1FBQzFELElBQUksQ0FBQyxNQUFNLENBQUMsYUFBYSxFQUFFLENBQUM7SUFDOUIsQ0FBQzs7NEhBOURVLFdBQVc7Z0hBQVgsV0FBVyxrUkFGVCxDQUFDLHVCQUF1QixDQUFDLCtDQ3hDeEMsbTNCQW9CQTs0RkRzQmEsV0FBVztrQkFQdkIsU0FBUzsrQkFDSSxjQUFjLG1CQUdQLHVCQUF1QixDQUFDLE1BQU0sYUFDcEMsQ0FBQyx1QkFBdUIsQ0FBQzs4SUFJdEIsS0FBSztzQkFBcEIsS0FBSzt1QkFBQyxPQUFPO2dCQUVHLE1BQU07c0JBQXRCLEtBQUs7dUJBQUMsUUFBUTtnQkFFQSxJQUFJO3NCQUFsQixLQUFLO3VCQUFDLE1BQU07Z0JBRUUsSUFBSTtzQkFBbEIsS0FBSzt1QkFBQyxNQUFNO2dCQUVHLEtBQUs7c0JBQXBCLEtBQUs7dUJBQUMsT0FBTztnQkFFTyxVQUFVO3NCQUE5QixLQUFLO3VCQUFDLFlBQVk7Z0JBRVYsS0FBSztzQkFBYixLQUFLO2dCQUVJLGFBQWE7c0JBQXRCLE1BQU07Z0JBRUcsU0FBUztzQkFBbEIsTUFBTTtnQkFFRyxjQUFjO3NCQUF2QixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiLypcbiBNSVQgTGljZW5zZVxuXG4gQ29weXJpZ2h0IChjKSAyMDE5IFRlbWFpbmZvIFNvZnR3YXJlXG5cbiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5XG4gb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgXCJTb2Z0d2FyZVwiKSwgdG8gZGVhbFxuIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHNcbiB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsXG4gY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzXG4gZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczpcbiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGxcbiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLlxuIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCBcIkFTIElTXCIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1JcbiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSxcbiBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEVcbiBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSXG4gTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSxcbiBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRVxuIFNPRlRXQVJFLlxuICovXG5cbmltcG9ydCB7XG4gIENvbXBvbmVudCxcbiAgRXZlbnRFbWl0dGVyLFxuICBJbnB1dCxcbiAgT3V0cHV0LFxuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgT25Jbml0LFxuICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgU2ltcGxlQ2hhbmdlcyxcbiAgT25DaGFuZ2VzXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTmF2aWdhdG9yTWFuYWdlclNlcnZpY2UgfSBmcm9tICcuL3NlcnZpY2VzL25hdmlnYXRvci1tYW5hZ2VyLnNlcnZpY2UnO1xuXG5AQ29tcG9uZW50KCB7XG4gICAgc2VsZWN0b3I6ICd0bC1uYXZpZ2F0b3InLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9uYXZpZ2F0b3IuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbICcuL25hdmlnYXRvci5zY3NzJyBdLFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICAgIHByb3ZpZGVyczogW05hdmlnYXRvck1hbmFnZXJTZXJ2aWNlXVxufSApXG5leHBvcnQgY2xhc3MgVGxOYXZpZ2F0b3IgaW1wbGVtZW50cyBPbkluaXQsIE9uQ2hhbmdlcyB7XG5cbiAgQElucHV0KCd3aWR0aCcpIHdpZHRoID0gJzEyNXB4JztcblxuICBASW5wdXQoJ2hlaWdodCcpIGhlaWdodCA9ICczMnB4JztcblxuICBASW5wdXQoJ3R5cGUnKSB0eXBlOiAncmFuZ2V3ZWVrJyB8ICdtb250aHllYXInIHwgJ3llYXInIHwgJ3JhbmdleWVhcicgfCAnZGF5JyA9ICdtb250aHllYXInO1xuXG4gIEBJbnB1dCgnZGF0ZScpIGRhdGUgPSBuZXcgRGF0ZSgpO1xuXG4gIEBJbnB1dCgncmFuZ2UnKSByYW5nZSA9IDExO1xuXG4gIEBJbnB1dCgnd2l0aEJvcmRlcicpIHdpdGhCb3JkZXIgPSB0cnVlO1xuXG4gIEBJbnB1dCgpIGNvbG9yID0gJ2Jhc2ljJztcblxuICBAT3V0cHV0KCkgY2xpY2tQcmV2aW91czogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcblxuICBAT3V0cHV0KCkgY2xpY2tOZXh0OiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuXG4gIEBPdXRwdXQoKSBjbGlja05hdmlnYXRvcjogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcblxuICBwdWJsaWMgZGVzY3JpcHRpb24gPSAnJztcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwdWJsaWMgbmF2aWdhdG9yTWFuYWdlcjogTmF2aWdhdG9yTWFuYWdlclNlcnZpY2UsXG4gICAgcHVibGljIGNoYW5nZTogQ2hhbmdlRGV0ZWN0b3JSZWZcbiAgKSB7fVxuXG4gIG5nT25Jbml0KCkge1xuICAgIHRoaXMubmF2aWdhdG9yTWFuYWdlci5zZXRUeXBlKHRoaXMudHlwZSk7XG4gICAgdGhpcy5uYXZpZ2F0b3JNYW5hZ2VyLnNldFJhbmdlKHRoaXMucmFuZ2UpO1xuICAgIHRoaXMubmF2aWdhdG9yTWFuYWdlci5zZXREYXRlKHRoaXMuZGF0ZSk7XG4gICAgdGhpcy5zZXREZXNjcmlwdGlvbigpO1xuICB9XG5cbiAgbmdPbkNoYW5nZXMoY2hhbmdlOiBTaW1wbGVDaGFuZ2VzKSB7XG4gICAgdGhpcy5uYXZpZ2F0b3JNYW5hZ2VyLnNldFR5cGUodGhpcy50eXBlKTtcbiAgICB0aGlzLm5hdmlnYXRvck1hbmFnZXIuc2V0UmFuZ2UodGhpcy5yYW5nZSk7XG4gICAgdGhpcy5uYXZpZ2F0b3JNYW5hZ2VyLnNldERhdGUodGhpcy5kYXRlKTtcbiAgICB0aGlzLnNldERlc2NyaXB0aW9uKCk7XG4gIH1cblxuICBvbkNsaWNrUHJldmlvdXMoKSB7XG4gICAgdGhpcy5uYXZpZ2F0b3JNYW5hZ2VyLnByZXZpb3VzKCk7XG4gICAgdGhpcy5zZXREZXNjcmlwdGlvbigpO1xuICAgIHRoaXMuY2xpY2tQcmV2aW91cy5lbWl0KCB0aGlzLm5hdmlnYXRvck1hbmFnZXIuZ2V0RGF0YU9iamVjdCgpICk7XG4gIH1cblxuICBvbkNsaWNrTmV4dCgpIHtcbiAgICB0aGlzLm5hdmlnYXRvck1hbmFnZXIubmV4dCgpO1xuICAgIHRoaXMuc2V0RGVzY3JpcHRpb24oKTtcbiAgICB0aGlzLmNsaWNrTmV4dC5lbWl0KHRoaXMubmF2aWdhdG9yTWFuYWdlci5nZXREYXRhT2JqZWN0KCkpO1xuICB9XG5cbiAgb25DbGlja05hdmlnYXRvcigpIHtcbiAgICB0aGlzLmNsaWNrTmF2aWdhdG9yLmVtaXQodGhpcy5uYXZpZ2F0b3JNYW5hZ2VyLmdldERhdGFPYmplY3QoKSk7XG4gIH1cblxuICBwcml2YXRlIHNldERlc2NyaXB0aW9uKCkge1xuICAgIHRoaXMuZGVzY3JpcHRpb24gPSB0aGlzLm5hdmlnYXRvck1hbmFnZXIuZ2V0RGVzY3JpcHRpb24oKTtcbiAgICB0aGlzLmNoYW5nZS5kZXRlY3RDaGFuZ2VzKCk7XG4gIH1cbn1cblxuIiwiPGRpdiBbY2xhc3NdPVwiJ3RsLW5hdmlnYXRvciAnKyBjb2xvclwiPlxuICA8ZGl2IHRhYmluZGV4PVwiLTFcIlxuICAgICAgIChjbGljayk9XCJvbkNsaWNrUHJldmlvdXMoKVwiXG4gICAgICAgW25nQ2xhc3NdPVwieyd1aS1idXR0b24nOiB0cnVlLCAndWktd2l0aC1ib3JkZXInOiB3aXRoQm9yZGVyfVwiXG4gICAgICAgW25nU3R5bGVdPVwie2hlaWdodDpoZWlnaHQsIGxpbmVIZWlnaHQ6IGhlaWdodH1cIj5cbiAgICA8dGwtaWNvbiBbbGliXT1cIidmYSdcIiBbc3R5bGVdPVwiJ2ZhcydcIiBbaWNvbl09XCInY2hldnJvbi1sZWZ0J1wiPjwvdGwtaWNvbj5cbiAgPC9kaXY+XG4gIDxkaXYgdGFiaW5kZXg9XCItMVwiXG4gICAgICAgW25nQ2xhc3NdPVwieyd1aS1uYXZpZ2F0b3InOiB0cnVlLCd1aS13aXRoLWJvcmRlcic6IHdpdGhCb3JkZXJ9XCJcbiAgICAgICAoY2xpY2spPVwib25DbGlja05hdmlnYXRvcigpXCJcbiAgICAgICBbbmdTdHlsZV09XCJ7J21heC13aWR0aCc6d2lkdGgsIGhlaWdodDpoZWlnaHQsIGxpbmVIZWlnaHQ6IGhlaWdodCwgd2lkdGg6IHdpZHRofVwiPlxuICAgIHt7ZGVzY3JpcHRpb259fVxuICA8L2Rpdj5cbiAgPGRpdiB0YWJpbmRleD1cIi0xXCJcbiAgICAgICAoY2xpY2spPVwib25DbGlja05leHQoKVwiXG4gICAgICAgW25nQ2xhc3NdPVwieyd1aS1idXR0b24nOiB0cnVlLCAndWktd2l0aC1ib3JkZXInOiB3aXRoQm9yZGVyfVwiXG4gICAgICAgW25nU3R5bGVdPVwie2hlaWdodDpoZWlnaHQsIGxpbmVIZWlnaHQ6IGhlaWdodH1cIj5cbiAgICA8dGwtaWNvbiBbbGliXT1cIidmYSdcIiBbc3R5bGVdPVwiJ2ZhcydcIiBbaWNvbl09XCInY2hldnJvbi1yaWdodCdcIj48L3RsLWljb24+XG4gIDwvZGl2PlxuPC9kaXY+XG4iXX0=