@worktile/theia 14.3.14 → 14.3.15
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/components/contextmenu/contextmenu.component.d.ts +1 -0
- package/esm2020/components/contextmenu/contextmenu.component.mjs +9 -3
- package/esm2020/plugins/table/components/table.component.mjs +6 -6
- package/esm2020/plugins/table/table.editor.mjs +13 -20
- package/esm2020/plugins/table/table.pipe.mjs +3 -3
- package/esm2020/services/table-contextmenu.service.mjs +8 -6
- package/esm2020/utils/dom.mjs +10 -1
- package/fesm2015/worktile-theia.mjs +44 -33
- package/fesm2015/worktile-theia.mjs.map +1 -1
- package/fesm2020/worktile-theia.mjs +41 -31
- package/fesm2020/worktile-theia.mjs.map +1 -1
- package/package.json +1 -1
- package/plugins/table/table.editor.d.ts +2 -2
- package/plugins/table/table.pipe.d.ts +1 -1
- package/services/table-contextmenu.service.d.ts +0 -5
|
@@ -16,6 +16,7 @@ export declare class TheContextMenuComponent implements OnInit {
|
|
|
16
16
|
itemMouseleave(event: MouseEvent, entity: MenuEntity): void;
|
|
17
17
|
itemMouseenter(event: MouseEvent, entity: MenuEntity): void;
|
|
18
18
|
inputNumberFocus(e: Event): void;
|
|
19
|
+
itemEnterHandle(e: MouseEvent, entity: MenuEntity): void;
|
|
19
20
|
constructor(elementRef: ElementRef, thyPopoverRef: ThyPopoverRef<TheContextMenuComponent>);
|
|
20
21
|
ngOnInit(): void;
|
|
21
22
|
static ɵfac: i0.ɵɵFactoryDeclaration<TheContextMenuComponent, never>;
|
|
@@ -39,13 +39,19 @@ export class TheContextMenuComponent {
|
|
|
39
39
|
inputNumberFocus(e) {
|
|
40
40
|
e.target.focus();
|
|
41
41
|
}
|
|
42
|
+
itemEnterHandle(e, entity) {
|
|
43
|
+
e.preventDefault();
|
|
44
|
+
e.stopPropagation();
|
|
45
|
+
this.actionHandle(entity);
|
|
46
|
+
this.thyPopoverRef.close();
|
|
47
|
+
}
|
|
42
48
|
ngOnInit() { }
|
|
43
49
|
}
|
|
44
50
|
TheContextMenuComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: TheContextMenuComponent, deps: [{ token: i0.ElementRef }, { token: i1.ThyPopoverRef }], target: i0.ɵɵFactoryTarget.Component });
|
|
45
|
-
TheContextMenuComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.12", type: TheContextMenuComponent, selector: "the-contextmenu", inputs: { menuEntities: "menuEntities", actionHandle: "actionHandle", activeHandle: "activeHandle", deactivateHandle: "deactivateHandle" }, host: { listeners: { "document: mousedown": "handleDocumentMouseDown($event)", "mousedown": "handleMouseDown($event)" }, properties: { "class.the-overlay-menu-wrap": "this.wrap" } }, ngImport: i0, template: "<div class=\"thy-dropdown-menu\">\n <ng-container *ngFor=\"let menuItem of menuEntities\">\n <ng-container *ngIf=\"menuItem.visibility && !menuItem?.isInputNumber\">\n <ng-template [ngTemplateOutlet]=\"defaultMenuTemplate\" [ngTemplateOutletContext]=\"{ $implicit: menuItem }\"></ng-template>\n </ng-container>\n <ng-container *ngIf=\"menuItem.visibility && menuItem?.isInputNumber\">\n <ng-template [ngTemplateOutlet]=\"inputNumberMenuTemplate\" [ngTemplateOutletContext]=\"{ $implicit: menuItem }\"></ng-template>\n </ng-container>\n <thy-dropdown-menu-divider *ngIf=\"menuItem.divider && menuItem.visibility\"></thy-dropdown-menu-divider>\n </ng-container>\n</div>\n\n<ng-template #defaultMenuTemplate let-item>\n <a\n href=\"javascript:;\"\n thyDropdownMenuItem\n (mousedown)=\"itemMousedown($event, item)\"\n (mouseenter)=\"itemMouseenter($event, item)\"\n (mouseleave)=\"itemMouseleave($event, item)\"\n >\n <span thyDropdownMenuItemIcon>\n <thy-icon\n *ngIf=\"item?.backgroundColor; else elseIcon\"\n [thyIconName]=\"item.icon\"\n thyIconType=\"twotone\"\n [thyTwotoneColor]=\"item.backgroundColor\"\n ></thy-icon>\n <ng-template #elseIcon>\n <thy-icon [thyIconName]=\"item.icon\"></thy-icon>\n </ng-template>\n </span>\n <span thyDropdownMenuItemName>{{ item.name }}</span>\n <span *ngIf=\"item.extendIcon\" thyDropdownMenuItemExtendIcon>\n <thy-icon thyIconName=\"{{ item.extendIcon }}\"></thy-icon>\n </span>\n </a>\n</ng-template>\n\n<ng-template #inputNumberMenuTemplate let-item>\n <a href=\"javascript:;\" class=\"the-input-number-menu\" thyDropdownMenuItem (click)=\"itemMousedown($event, item)\">\n <span thyDropdownMenuItemIcon>\n <thy-icon [thyIconName]=\"item.icon\"></thy-icon>\n </span>\n <span thyDropdownMenuItemName class=\"d-flex align-items-center\">\n {{ item.name }}\n <thy-input-number\n #inputNumber\n class=\"mx-2\"\n thySize=\"sm\"\n [(ngModel)]=\"item.count\"\n [thyStep]=\"1\"\n [thyMin]=\"1\"\n (click)=\"inputNumberFocus($event)\"\n (thyEnter)=\"
|
|
51
|
+
TheContextMenuComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.12", type: TheContextMenuComponent, selector: "the-contextmenu", inputs: { menuEntities: "menuEntities", actionHandle: "actionHandle", activeHandle: "activeHandle", deactivateHandle: "deactivateHandle" }, host: { listeners: { "document: mousedown": "handleDocumentMouseDown($event)", "mousedown": "handleMouseDown($event)" }, properties: { "class.the-overlay-menu-wrap": "this.wrap" } }, ngImport: i0, template: "<div class=\"thy-dropdown-menu\">\n <ng-container *ngFor=\"let menuItem of menuEntities\">\n <ng-container *ngIf=\"menuItem.visibility && !menuItem?.isInputNumber\">\n <ng-template [ngTemplateOutlet]=\"defaultMenuTemplate\" [ngTemplateOutletContext]=\"{ $implicit: menuItem }\"></ng-template>\n </ng-container>\n <ng-container *ngIf=\"menuItem.visibility && menuItem?.isInputNumber\">\n <ng-template [ngTemplateOutlet]=\"inputNumberMenuTemplate\" [ngTemplateOutletContext]=\"{ $implicit: menuItem }\"></ng-template>\n </ng-container>\n <thy-dropdown-menu-divider *ngIf=\"menuItem.divider && menuItem.visibility\"></thy-dropdown-menu-divider>\n </ng-container>\n</div>\n\n<ng-template #defaultMenuTemplate let-item>\n <a\n href=\"javascript:;\"\n thyDropdownMenuItem\n (mousedown)=\"itemMousedown($event, item)\"\n (mouseenter)=\"itemMouseenter($event, item)\"\n (mouseleave)=\"itemMouseleave($event, item)\"\n >\n <span thyDropdownMenuItemIcon>\n <thy-icon\n *ngIf=\"item?.backgroundColor; else elseIcon\"\n [thyIconName]=\"item.icon\"\n thyIconType=\"twotone\"\n [thyTwotoneColor]=\"item.backgroundColor\"\n ></thy-icon>\n <ng-template #elseIcon>\n <thy-icon [thyIconName]=\"item.icon\"></thy-icon>\n </ng-template>\n </span>\n <span thyDropdownMenuItemName>{{ item.name }}</span>\n <span *ngIf=\"item.extendIcon\" thyDropdownMenuItemExtendIcon>\n <thy-icon thyIconName=\"{{ item.extendIcon }}\"></thy-icon>\n </span>\n </a>\n</ng-template>\n\n<ng-template #inputNumberMenuTemplate let-item>\n <a href=\"javascript:;\" class=\"the-input-number-menu\" thyDropdownMenuItem (click)=\"itemMousedown($event, item)\">\n <span thyDropdownMenuItemIcon>\n <thy-icon [thyIconName]=\"item.icon\"></thy-icon>\n </span>\n <span thyDropdownMenuItemName class=\"d-flex align-items-center\">\n {{ item.name }}\n <thy-input-number\n #inputNumber\n class=\"mx-2\"\n thySize=\"sm\"\n [(ngModel)]=\"item.count\"\n [thyStep]=\"1\"\n [thyMin]=\"1\"\n (click)=\"inputNumberFocus($event)\"\n (thyEnter)=\"itemEnterHandle($event, item)\"\n thyStopPropagation\n ></thy-input-number>\n {{ item.nameSuffix }}\n </span>\n </a>\n</ng-template>\n", dependencies: [{ kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i4.ThyIconComponent, selector: "thy-icon, [thy-icon]", inputs: ["thyIconType", "thyTwotoneColor", "thyIconName", "thyIconRotate", "thyIconSet", "thyIconLegging", "thyIconLinearGradient"] }, { kind: "directive", type: i5.ThyEnterDirective, selector: "[thyEnter]", outputs: ["thyEnter"] }, { kind: "directive", type: i5.ThyStopPropagationDirective, selector: "[thyStopPropagation]", inputs: ["thyStopPropagation"] }, { kind: "component", type: i6.ThyDropdownMenuDividerComponent, selector: "thy-dropdown-menu-divider" }, { kind: "directive", type: i6.ThyDropdownMenuItemDirective, selector: "[thyDropdownMenuItem]", inputs: ["thyType", "thyDisabled"] }, { kind: "directive", type: i6.ThyDropdownMenuItemNameDirective, selector: "[thyDropdownMenuItemName]" }, { kind: "directive", type: i6.ThyDropdownMenuItemIconDirective, selector: "[thyDropdownMenuItemIcon]" }, { kind: "directive", type: i6.ThyDropdownMenuItemExtendIconDirective, selector: "[thyDropdownMenuItemExtendIcon]" }, { kind: "component", type: i7.ThyInputNumberComponent, selector: "thy-input-number", inputs: ["thyAutoFocus", "thyPlaceholder", "thyDisabled", "thyMax", "thyMin", "thyStep", "thySize", "thyPrecision", "thySuffix"], outputs: ["thyBlur", "thyFocus"] }] });
|
|
46
52
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: TheContextMenuComponent, decorators: [{
|
|
47
53
|
type: Component,
|
|
48
|
-
args: [{ selector: 'the-contextmenu', template: "<div class=\"thy-dropdown-menu\">\n <ng-container *ngFor=\"let menuItem of menuEntities\">\n <ng-container *ngIf=\"menuItem.visibility && !menuItem?.isInputNumber\">\n <ng-template [ngTemplateOutlet]=\"defaultMenuTemplate\" [ngTemplateOutletContext]=\"{ $implicit: menuItem }\"></ng-template>\n </ng-container>\n <ng-container *ngIf=\"menuItem.visibility && menuItem?.isInputNumber\">\n <ng-template [ngTemplateOutlet]=\"inputNumberMenuTemplate\" [ngTemplateOutletContext]=\"{ $implicit: menuItem }\"></ng-template>\n </ng-container>\n <thy-dropdown-menu-divider *ngIf=\"menuItem.divider && menuItem.visibility\"></thy-dropdown-menu-divider>\n </ng-container>\n</div>\n\n<ng-template #defaultMenuTemplate let-item>\n <a\n href=\"javascript:;\"\n thyDropdownMenuItem\n (mousedown)=\"itemMousedown($event, item)\"\n (mouseenter)=\"itemMouseenter($event, item)\"\n (mouseleave)=\"itemMouseleave($event, item)\"\n >\n <span thyDropdownMenuItemIcon>\n <thy-icon\n *ngIf=\"item?.backgroundColor; else elseIcon\"\n [thyIconName]=\"item.icon\"\n thyIconType=\"twotone\"\n [thyTwotoneColor]=\"item.backgroundColor\"\n ></thy-icon>\n <ng-template #elseIcon>\n <thy-icon [thyIconName]=\"item.icon\"></thy-icon>\n </ng-template>\n </span>\n <span thyDropdownMenuItemName>{{ item.name }}</span>\n <span *ngIf=\"item.extendIcon\" thyDropdownMenuItemExtendIcon>\n <thy-icon thyIconName=\"{{ item.extendIcon }}\"></thy-icon>\n </span>\n </a>\n</ng-template>\n\n<ng-template #inputNumberMenuTemplate let-item>\n <a href=\"javascript:;\" class=\"the-input-number-menu\" thyDropdownMenuItem (click)=\"itemMousedown($event, item)\">\n <span thyDropdownMenuItemIcon>\n <thy-icon [thyIconName]=\"item.icon\"></thy-icon>\n </span>\n <span thyDropdownMenuItemName class=\"d-flex align-items-center\">\n {{ item.name }}\n <thy-input-number\n #inputNumber\n class=\"mx-2\"\n thySize=\"sm\"\n [(ngModel)]=\"item.count\"\n [thyStep]=\"1\"\n [thyMin]=\"1\"\n (click)=\"inputNumberFocus($event)\"\n (thyEnter)=\"
|
|
54
|
+
args: [{ selector: 'the-contextmenu', template: "<div class=\"thy-dropdown-menu\">\n <ng-container *ngFor=\"let menuItem of menuEntities\">\n <ng-container *ngIf=\"menuItem.visibility && !menuItem?.isInputNumber\">\n <ng-template [ngTemplateOutlet]=\"defaultMenuTemplate\" [ngTemplateOutletContext]=\"{ $implicit: menuItem }\"></ng-template>\n </ng-container>\n <ng-container *ngIf=\"menuItem.visibility && menuItem?.isInputNumber\">\n <ng-template [ngTemplateOutlet]=\"inputNumberMenuTemplate\" [ngTemplateOutletContext]=\"{ $implicit: menuItem }\"></ng-template>\n </ng-container>\n <thy-dropdown-menu-divider *ngIf=\"menuItem.divider && menuItem.visibility\"></thy-dropdown-menu-divider>\n </ng-container>\n</div>\n\n<ng-template #defaultMenuTemplate let-item>\n <a\n href=\"javascript:;\"\n thyDropdownMenuItem\n (mousedown)=\"itemMousedown($event, item)\"\n (mouseenter)=\"itemMouseenter($event, item)\"\n (mouseleave)=\"itemMouseleave($event, item)\"\n >\n <span thyDropdownMenuItemIcon>\n <thy-icon\n *ngIf=\"item?.backgroundColor; else elseIcon\"\n [thyIconName]=\"item.icon\"\n thyIconType=\"twotone\"\n [thyTwotoneColor]=\"item.backgroundColor\"\n ></thy-icon>\n <ng-template #elseIcon>\n <thy-icon [thyIconName]=\"item.icon\"></thy-icon>\n </ng-template>\n </span>\n <span thyDropdownMenuItemName>{{ item.name }}</span>\n <span *ngIf=\"item.extendIcon\" thyDropdownMenuItemExtendIcon>\n <thy-icon thyIconName=\"{{ item.extendIcon }}\"></thy-icon>\n </span>\n </a>\n</ng-template>\n\n<ng-template #inputNumberMenuTemplate let-item>\n <a href=\"javascript:;\" class=\"the-input-number-menu\" thyDropdownMenuItem (click)=\"itemMousedown($event, item)\">\n <span thyDropdownMenuItemIcon>\n <thy-icon [thyIconName]=\"item.icon\"></thy-icon>\n </span>\n <span thyDropdownMenuItemName class=\"d-flex align-items-center\">\n {{ item.name }}\n <thy-input-number\n #inputNumber\n class=\"mx-2\"\n thySize=\"sm\"\n [(ngModel)]=\"item.count\"\n [thyStep]=\"1\"\n [thyMin]=\"1\"\n (click)=\"inputNumberFocus($event)\"\n (thyEnter)=\"itemEnterHandle($event, item)\"\n thyStopPropagation\n ></thy-input-number>\n {{ item.nameSuffix }}\n </span>\n </a>\n</ng-template>\n" }]
|
|
49
55
|
}], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i1.ThyPopoverRef }]; }, propDecorators: { menuEntities: [{
|
|
50
56
|
type: Input
|
|
51
57
|
}], actionHandle: [{
|
|
@@ -64,4 +70,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImpo
|
|
|
64
70
|
type: HostListener,
|
|
65
71
|
args: ['mousedown', ['$event']]
|
|
66
72
|
}] } });
|
|
67
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
73
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGV4dG1lbnUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvc3JjL2NvbXBvbmVudHMvY29udGV4dG1lbnUvY29udGV4dG1lbnUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvc3JjL2NvbXBvbmVudHMvY29udGV4dG1lbnUvY29udGV4dG1lbnUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFVLFNBQVMsRUFBRSxLQUFLLEVBQUUsV0FBVyxFQUFFLFlBQVksRUFBYyxNQUFNLGVBQWUsQ0FBQzs7Ozs7Ozs7O0FBUWhHLE1BQU0sT0FBTyx1QkFBdUI7SUF3RGhDLFlBQW1CLFVBQXNCLEVBQVUsYUFBcUQ7UUFBckYsZUFBVSxHQUFWLFVBQVUsQ0FBWTtRQUFVLGtCQUFhLEdBQWIsYUFBYSxDQUF3QztRQXREeEcsaUJBQVksR0FBaUIsRUFBRSxDQUFDO1FBWWhDLFNBQUksR0FBRyxJQUFJLENBQUM7SUEwQytGLENBQUM7SUF2QzVHLHVCQUF1QixDQUFDLEtBQWlCO1FBQ3JDLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLE1BQXFCLENBQUMsSUFBSSxLQUFLLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRTtZQUM1RixJQUFJLENBQUMsYUFBYSxDQUFDLEtBQUssRUFBRSxDQUFDO1NBQzlCO0lBQ0wsQ0FBQztJQUdELGVBQWUsQ0FBQyxLQUFpQjtRQUM3QixLQUFLLENBQUMsY0FBYyxFQUFFLENBQUM7UUFDdkIsS0FBSyxDQUFDLGVBQWUsRUFBRSxDQUFDO0lBQzVCLENBQUM7SUFFRCxhQUFhLENBQUMsS0FBaUIsRUFBRSxNQUFrQjtRQUMvQyxLQUFLLENBQUMsY0FBYyxFQUFFLENBQUM7UUFDdkIsSUFBSSxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUMxQixJQUFJLENBQUMsYUFBYSxDQUFDLEtBQUssRUFBRSxDQUFDO0lBQy9CLENBQUM7SUFFRCxjQUFjLENBQUMsS0FBaUIsRUFBRSxNQUFrQjtRQUNoRCxLQUFLLENBQUMsY0FBYyxFQUFFLENBQUM7UUFDdkIsSUFBSSxDQUFDLGdCQUFnQixDQUFDLEtBQUssRUFBRSxNQUFNLENBQUMsQ0FBQztJQUN6QyxDQUFDO0lBRUQsY0FBYyxDQUFDLEtBQWlCLEVBQUUsTUFBa0I7UUFDaEQsS0FBSyxDQUFDLGNBQWMsRUFBRSxDQUFDO1FBQ3ZCLElBQUksQ0FBQyxZQUFZLENBQUMsS0FBSyxFQUFFLE1BQU0sQ0FBQyxDQUFDO0lBQ3JDLENBQUM7SUFFRCxnQkFBZ0IsQ0FBQyxDQUFRO1FBQ3BCLENBQUMsQ0FBQyxNQUFzQixDQUFDLEtBQUssRUFBRSxDQUFDO0lBQ3RDLENBQUM7SUFFRCxlQUFlLENBQUMsQ0FBYSxFQUFFLE1BQWtCO1FBQzdDLENBQUMsQ0FBQyxjQUFjLEVBQUUsQ0FBQztRQUNuQixDQUFDLENBQUMsZUFBZSxFQUFFLENBQUM7UUFDcEIsSUFBSSxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUMxQixJQUFJLENBQUMsYUFBYSxDQUFDLEtBQUssRUFBRSxDQUFDO0lBQy9CLENBQUM7SUFJRCxRQUFRLEtBQUksQ0FBQzs7cUhBMURKLHVCQUF1Qjt5R0FBdkIsdUJBQXVCLDBYQ1JwQyxzakZBNERBOzRGRHBEYSx1QkFBdUI7a0JBSm5DLFNBQVM7K0JBQ0ksaUJBQWlCOzZIQUszQixZQUFZO3NCQURYLEtBQUs7Z0JBSU4sWUFBWTtzQkFEWCxLQUFLO2dCQUlOLFlBQVk7c0JBRFgsS0FBSztnQkFJTixnQkFBZ0I7c0JBRGYsS0FBSztnQkFJTixJQUFJO3NCQURILFdBQVc7dUJBQUMsNkJBQTZCO2dCQUkxQyx1QkFBdUI7c0JBRHRCLFlBQVk7dUJBQUMscUJBQXFCLEVBQUUsQ0FBQyxRQUFRLENBQUM7Z0JBUS9DLGVBQWU7c0JBRGQsWUFBWTt1QkFBQyxXQUFXLEVBQUUsQ0FBQyxRQUFRLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBPbkluaXQsIENvbXBvbmVudCwgSW5wdXQsIEhvc3RCaW5kaW5nLCBIb3N0TGlzdGVuZXIsIEVsZW1lbnRSZWYgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFRoeVBvcG92ZXJSZWYgfSBmcm9tICduZ3gtdGV0aHlzL3BvcG92ZXInO1xuaW1wb3J0IHsgTWVudUVudGl0eSB9IGZyb20gJy4uLy4uL3BsdWdpbnMvdGFibGUvdGFibGUudHlwZXMnO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ3RoZS1jb250ZXh0bWVudScsXG4gICAgdGVtcGxhdGVVcmw6ICdjb250ZXh0bWVudS5jb21wb25lbnQuaHRtbCdcbn0pXG5leHBvcnQgY2xhc3MgVGhlQ29udGV4dE1lbnVDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICAgIEBJbnB1dCgpXG4gICAgbWVudUVudGl0aWVzOiBNZW51RW50aXR5W10gPSBbXTtcblxuICAgIEBJbnB1dCgpXG4gICAgYWN0aW9uSGFuZGxlOiAoZW50aXR5OiBNZW51RW50aXR5KSA9PiB2b2lkO1xuXG4gICAgQElucHV0KClcbiAgICBhY3RpdmVIYW5kbGU6IChldmVudDogTW91c2VFdmVudCwgZW50aXR5OiBNZW51RW50aXR5KSA9PiB2b2lkO1xuXG4gICAgQElucHV0KClcbiAgICBkZWFjdGl2YXRlSGFuZGxlOiAoZXZlbnQ6IE1vdXNlRXZlbnQsIGVudGl0eTogTWVudUVudGl0eSkgPT4gdm9pZDtcblxuICAgIEBIb3N0QmluZGluZygnY2xhc3MudGhlLW92ZXJsYXktbWVudS13cmFwJylcbiAgICB3cmFwID0gdHJ1ZTtcblxuICAgIEBIb3N0TGlzdGVuZXIoJ2RvY3VtZW50OiBtb3VzZWRvd24nLCBbJyRldmVudCddKVxuICAgIGhhbmRsZURvY3VtZW50TW91c2VEb3duKGV2ZW50OiBNb3VzZUV2ZW50KSB7XG4gICAgICAgIGlmICghdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuY29udGFpbnMoZXZlbnQudGFyZ2V0IGFzIEhUTUxFbGVtZW50KSAmJiBldmVudC5idXR0b24gIT09IDIpIHtcbiAgICAgICAgICAgIHRoaXMudGh5UG9wb3ZlclJlZi5jbG9zZSgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgQEhvc3RMaXN0ZW5lcignbW91c2Vkb3duJywgWyckZXZlbnQnXSlcbiAgICBoYW5kbGVNb3VzZURvd24oZXZlbnQ6IE1vdXNlRXZlbnQpIHtcbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgfVxuXG4gICAgaXRlbU1vdXNlZG93bihldmVudDogTW91c2VFdmVudCwgZW50aXR5OiBNZW51RW50aXR5KSB7XG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIHRoaXMuYWN0aW9uSGFuZGxlKGVudGl0eSk7XG4gICAgICAgIHRoaXMudGh5UG9wb3ZlclJlZi5jbG9zZSgpO1xuICAgIH1cblxuICAgIGl0ZW1Nb3VzZWxlYXZlKGV2ZW50OiBNb3VzZUV2ZW50LCBlbnRpdHk6IE1lbnVFbnRpdHkpIHtcbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgdGhpcy5kZWFjdGl2YXRlSGFuZGxlKGV2ZW50LCBlbnRpdHkpO1xuICAgIH1cblxuICAgIGl0ZW1Nb3VzZWVudGVyKGV2ZW50OiBNb3VzZUV2ZW50LCBlbnRpdHk6IE1lbnVFbnRpdHkpIHtcbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgdGhpcy5hY3RpdmVIYW5kbGUoZXZlbnQsIGVudGl0eSk7XG4gICAgfVxuXG4gICAgaW5wdXROdW1iZXJGb2N1cyhlOiBFdmVudCkge1xuICAgICAgICAoZS50YXJnZXQgYXMgSFRNTEVsZW1lbnQpLmZvY3VzKCk7XG4gICAgfVxuXG4gICAgaXRlbUVudGVySGFuZGxlKGU6IE1vdXNlRXZlbnQsIGVudGl0eTogTWVudUVudGl0eSkge1xuICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIGUuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgIHRoaXMuYWN0aW9uSGFuZGxlKGVudGl0eSk7XG4gICAgICAgIHRoaXMudGh5UG9wb3ZlclJlZi5jbG9zZSgpO1xuICAgIH1cblxuICAgIGNvbnN0cnVjdG9yKHB1YmxpYyBlbGVtZW50UmVmOiBFbGVtZW50UmVmLCBwcml2YXRlIHRoeVBvcG92ZXJSZWY6IFRoeVBvcG92ZXJSZWY8VGhlQ29udGV4dE1lbnVDb21wb25lbnQ+KSB7fVxuXG4gICAgbmdPbkluaXQoKSB7fVxufVxuIiwiPGRpdiBjbGFzcz1cInRoeS1kcm9wZG93bi1tZW51XCI+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgbWVudUl0ZW0gb2YgbWVudUVudGl0aWVzXCI+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJtZW51SXRlbS52aXNpYmlsaXR5ICYmICFtZW51SXRlbT8uaXNJbnB1dE51bWJlclwiPlxuICAgICAgICAgICAgPG5nLXRlbXBsYXRlIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImRlZmF1bHRNZW51VGVtcGxhdGVcIiBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyAkaW1wbGljaXQ6IG1lbnVJdGVtIH1cIj48L25nLXRlbXBsYXRlPlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIm1lbnVJdGVtLnZpc2liaWxpdHkgJiYgbWVudUl0ZW0/LmlzSW5wdXROdW1iZXJcIj5cbiAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSBbbmdUZW1wbGF0ZU91dGxldF09XCJpbnB1dE51bWJlck1lbnVUZW1wbGF0ZVwiIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7ICRpbXBsaWNpdDogbWVudUl0ZW0gfVwiPjwvbmctdGVtcGxhdGU+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICA8dGh5LWRyb3Bkb3duLW1lbnUtZGl2aWRlciAqbmdJZj1cIm1lbnVJdGVtLmRpdmlkZXIgJiYgbWVudUl0ZW0udmlzaWJpbGl0eVwiPjwvdGh5LWRyb3Bkb3duLW1lbnUtZGl2aWRlcj5cbiAgICA8L25nLWNvbnRhaW5lcj5cbjwvZGl2PlxuXG48bmctdGVtcGxhdGUgI2RlZmF1bHRNZW51VGVtcGxhdGUgbGV0LWl0ZW0+XG4gICAgPGFcbiAgICAgICAgaHJlZj1cImphdmFzY3JpcHQ6O1wiXG4gICAgICAgIHRoeURyb3Bkb3duTWVudUl0ZW1cbiAgICAgICAgKG1vdXNlZG93bik9XCJpdGVtTW91c2Vkb3duKCRldmVudCwgaXRlbSlcIlxuICAgICAgICAobW91c2VlbnRlcik9XCJpdGVtTW91c2VlbnRlcigkZXZlbnQsIGl0ZW0pXCJcbiAgICAgICAgKG1vdXNlbGVhdmUpPVwiaXRlbU1vdXNlbGVhdmUoJGV2ZW50LCBpdGVtKVwiXG4gICAgPlxuICAgICAgICA8c3BhbiB0aHlEcm9wZG93bk1lbnVJdGVtSWNvbj5cbiAgICAgICAgICAgIDx0aHktaWNvblxuICAgICAgICAgICAgICAgICpuZ0lmPVwiaXRlbT8uYmFja2dyb3VuZENvbG9yOyBlbHNlIGVsc2VJY29uXCJcbiAgICAgICAgICAgICAgICBbdGh5SWNvbk5hbWVdPVwiaXRlbS5pY29uXCJcbiAgICAgICAgICAgICAgICB0aHlJY29uVHlwZT1cInR3b3RvbmVcIlxuICAgICAgICAgICAgICAgIFt0aHlUd290b25lQ29sb3JdPVwiaXRlbS5iYWNrZ3JvdW5kQ29sb3JcIlxuICAgICAgICAgICAgPjwvdGh5LWljb24+XG4gICAgICAgICAgICA8bmctdGVtcGxhdGUgI2Vsc2VJY29uPlxuICAgICAgICAgICAgICAgIDx0aHktaWNvbiBbdGh5SWNvbk5hbWVdPVwiaXRlbS5pY29uXCI+PC90aHktaWNvbj5cbiAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgIDwvc3Bhbj5cbiAgICAgICAgPHNwYW4gdGh5RHJvcGRvd25NZW51SXRlbU5hbWU+e3sgaXRlbS5uYW1lIH19PC9zcGFuPlxuICAgICAgICA8c3BhbiAqbmdJZj1cIml0ZW0uZXh0ZW5kSWNvblwiIHRoeURyb3Bkb3duTWVudUl0ZW1FeHRlbmRJY29uPlxuICAgICAgICAgICAgPHRoeS1pY29uIHRoeUljb25OYW1lPVwie3sgaXRlbS5leHRlbmRJY29uIH19XCI+PC90aHktaWNvbj5cbiAgICAgICAgPC9zcGFuPlxuICAgIDwvYT5cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZSAjaW5wdXROdW1iZXJNZW51VGVtcGxhdGUgbGV0LWl0ZW0+XG4gICAgPGEgaHJlZj1cImphdmFzY3JpcHQ6O1wiIGNsYXNzPVwidGhlLWlucHV0LW51bWJlci1tZW51XCIgdGh5RHJvcGRvd25NZW51SXRlbSAoY2xpY2spPVwiaXRlbU1vdXNlZG93bigkZXZlbnQsIGl0ZW0pXCI+XG4gICAgICAgIDxzcGFuIHRoeURyb3Bkb3duTWVudUl0ZW1JY29uPlxuICAgICAgICAgICAgPHRoeS1pY29uIFt0aHlJY29uTmFtZV09XCJpdGVtLmljb25cIj48L3RoeS1pY29uPlxuICAgICAgICA8L3NwYW4+XG4gICAgICAgIDxzcGFuIHRoeURyb3Bkb3duTWVudUl0ZW1OYW1lIGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlclwiPlxuICAgICAgICAgICAge3sgaXRlbS5uYW1lIH19XG4gICAgICAgICAgICA8dGh5LWlucHV0LW51bWJlclxuICAgICAgICAgICAgICAgICNpbnB1dE51bWJlclxuICAgICAgICAgICAgICAgIGNsYXNzPVwibXgtMlwiXG4gICAgICAgICAgICAgICAgdGh5U2l6ZT1cInNtXCJcbiAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cIml0ZW0uY291bnRcIlxuICAgICAgICAgICAgICAgIFt0aHlTdGVwXT1cIjFcIlxuICAgICAgICAgICAgICAgIFt0aHlNaW5dPVwiMVwiXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cImlucHV0TnVtYmVyRm9jdXMoJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgKHRoeUVudGVyKT1cIml0ZW1FbnRlckhhbmRsZSgkZXZlbnQsIGl0ZW0pXCJcbiAgICAgICAgICAgICAgICB0aHlTdG9wUHJvcGFnYXRpb25cbiAgICAgICAgICAgID48L3RoeS1pbnB1dC1udW1iZXI+XG4gICAgICAgICAgICB7eyBpdGVtLm5hbWVTdWZmaXggfX1cbiAgICAgICAgPC9zcGFuPlxuICAgIDwvYT5cbjwvbmctdGVtcGxhdGU+XG4iXX0=
|