@smartbit4all/ng-client 1.0.23 → 1.0.25

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.
@@ -12,6 +12,7 @@ export class UiActionToolbarComponent {
12
12
  this.service = service;
13
13
  this.manager = manager;
14
14
  this._destroy$ = new Subject();
15
+ this.pressedButtonActive = true;
15
16
  this.manager.languageChanged.pipe(takeUntil(this._destroy$)).subscribe(() => {
16
17
  this.setUp();
17
18
  });
@@ -37,12 +38,22 @@ export class UiActionToolbarComponent {
37
38
  }
38
39
  onActionClicked(event, uiActionModel) {
39
40
  event.stopPropagation();
40
- this.service.uiActionModel = uiActionModel;
41
- let options = {
42
- nodeId: uiActionModel.nodeId,
43
- widgetId: uiActionModel.widgetId,
44
- };
45
- this.service.execute(uiActionModel.uiAction, options);
41
+ if (this.pressedButtonActive) {
42
+ this.pressedButtonActive = false;
43
+ setTimeout(() => {
44
+ this.pressedButtonActive = true;
45
+ }, 100);
46
+ this.service.uiActionModel = uiActionModel;
47
+ let options = {
48
+ nodeId: uiActionModel.nodeId,
49
+ widgetId: uiActionModel.widgetId,
50
+ };
51
+ this.service.execute(uiActionModel.uiAction, options);
52
+ }
53
+ }
54
+ onActionDoubleClicked(event, uiActionModel) {
55
+ event.stopPropagation();
56
+ // We do not handle double clicks
46
57
  }
47
58
  getType(uiActionModel) {
48
59
  switch (uiActionModel.descriptor?.type) {
@@ -75,11 +86,11 @@ export class UiActionToolbarComponent {
75
86
  }
76
87
  }
77
88
  UiActionToolbarComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: UiActionToolbarComponent, deps: [{ token: i1.UiActionService }, { token: i2.UiActionDescriptorService }], target: i0.ɵɵFactoryTarget.Component });
78
- UiActionToolbarComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.12", type: UiActionToolbarComponent, selector: "smart-ui-action-toolbar", inputs: { uiActionModels: "uiActionModels" }, usesOnChanges: true, ngImport: i0, template: "<div class=\"uiActionButtonsContainer\">\n <button\n *ngFor=\"let uiActionModel of uiActionModelsWithDescriptions\"\n mat-button\n [ngClass]=\"getType(uiActionModel)\"\n class=\"{{ uiActionModel.cssClass }}\"\n [color]=\"uiActionModel.descriptor?.color\"\n (click)=\"onActionClicked($event, uiActionModel)\"\n >\n <div *ngIf=\"isOnlyIcon(uiActionModel); then iconOnly; else text\"></div>\n <ng-template #iconOnly>\n <smart-icon\n *ngIf=\"uiActionModel.descriptor?.icon\"\n [icon]=\"uiActionModel.descriptor!.icon!\"\n [color]=\"uiActionModel.descriptor?.iconColor ?? uiActionModel.descriptor?.color\"\n ></smart-icon>\n </ng-template>\n <ng-template #text>\n <smart-icon\n *ngIf=\"\n uiActionModel.descriptor?.icon &&\n uiActionModel.descriptor?.iconPosition === iconPosition().Pre\n \"\n [icon]=\"uiActionModel.descriptor!.icon!\"\n [color]=\"uiActionModel.descriptor?.iconColor ?? uiActionModel.descriptor?.color\"\n ></smart-icon>\n {{ uiActionModel.descriptor?.title }}\n <smart-icon\n *ngIf=\"\n uiActionModel.descriptor?.icon &&\n uiActionModel.descriptor?.iconPosition === iconPosition().Post\n \"\n [icon]=\"uiActionModel.descriptor!.icon!\"\n [color]=\"uiActionModel.descriptor?.iconColor ?? uiActionModel.descriptor?.color\"\n ></smart-icon>\n </ng-template>\n </button>\n</div>\n", styles: [".uiActionButtonsContainer{display:flex;flex-direction:row;gap:1rem;flex-wrap:wrap;min-height:2.25rem}\n"], components: [{ type: i3.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { type: i4.SmartIconComponent, selector: "smart-icon", inputs: ["icon", "color"] }], directives: [{ type: i5.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i5.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] });
89
+ UiActionToolbarComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.12", type: UiActionToolbarComponent, selector: "smart-ui-action-toolbar", inputs: { uiActionModels: "uiActionModels" }, usesOnChanges: true, ngImport: i0, template: "<div class=\"uiActionButtonsContainer\">\n <button\n *ngFor=\"let uiActionModel of uiActionModelsWithDescriptions\"\n mat-button\n [ngClass]=\"getType(uiActionModel)\"\n class=\"{{ uiActionModel.cssClass }}\"\n [color]=\"uiActionModel.descriptor?.color\"\n (click)=\"onActionClicked($event, uiActionModel)\"\n (dblclick)=\"onActionDoubleClicked($event, uiActionModel)\"\n >\n <div *ngIf=\"isOnlyIcon(uiActionModel); then iconOnly; else text\"></div>\n <ng-template #iconOnly>\n <smart-icon\n *ngIf=\"uiActionModel.descriptor?.icon\"\n [icon]=\"uiActionModel.descriptor!.icon!\"\n [color]=\"uiActionModel.descriptor?.iconColor ?? uiActionModel.descriptor?.color\"\n ></smart-icon>\n </ng-template>\n <ng-template #text>\n <smart-icon\n *ngIf=\"\n uiActionModel.descriptor?.icon &&\n uiActionModel.descriptor?.iconPosition === iconPosition().Pre\n \"\n [icon]=\"uiActionModel.descriptor!.icon!\"\n [color]=\"uiActionModel.descriptor?.iconColor ?? uiActionModel.descriptor?.color\"\n ></smart-icon>\n {{ uiActionModel.descriptor?.title }}\n <smart-icon\n *ngIf=\"\n uiActionModel.descriptor?.icon &&\n uiActionModel.descriptor?.iconPosition === iconPosition().Post\n \"\n [icon]=\"uiActionModel.descriptor!.icon!\"\n [color]=\"uiActionModel.descriptor?.iconColor ?? uiActionModel.descriptor?.color\"\n ></smart-icon>\n </ng-template>\n </button>\n</div>\n", styles: [".uiActionButtonsContainer{display:flex;flex-direction:row;gap:1rem;flex-wrap:wrap;min-height:2.25rem}\n"], components: [{ type: i3.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { type: i4.SmartIconComponent, selector: "smart-icon", inputs: ["icon", "color"] }], directives: [{ type: i5.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i5.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] });
79
90
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: UiActionToolbarComponent, decorators: [{
80
91
  type: Component,
81
- args: [{ selector: 'smart-ui-action-toolbar', template: "<div class=\"uiActionButtonsContainer\">\n <button\n *ngFor=\"let uiActionModel of uiActionModelsWithDescriptions\"\n mat-button\n [ngClass]=\"getType(uiActionModel)\"\n class=\"{{ uiActionModel.cssClass }}\"\n [color]=\"uiActionModel.descriptor?.color\"\n (click)=\"onActionClicked($event, uiActionModel)\"\n >\n <div *ngIf=\"isOnlyIcon(uiActionModel); then iconOnly; else text\"></div>\n <ng-template #iconOnly>\n <smart-icon\n *ngIf=\"uiActionModel.descriptor?.icon\"\n [icon]=\"uiActionModel.descriptor!.icon!\"\n [color]=\"uiActionModel.descriptor?.iconColor ?? uiActionModel.descriptor?.color\"\n ></smart-icon>\n </ng-template>\n <ng-template #text>\n <smart-icon\n *ngIf=\"\n uiActionModel.descriptor?.icon &&\n uiActionModel.descriptor?.iconPosition === iconPosition().Pre\n \"\n [icon]=\"uiActionModel.descriptor!.icon!\"\n [color]=\"uiActionModel.descriptor?.iconColor ?? uiActionModel.descriptor?.color\"\n ></smart-icon>\n {{ uiActionModel.descriptor?.title }}\n <smart-icon\n *ngIf=\"\n uiActionModel.descriptor?.icon &&\n uiActionModel.descriptor?.iconPosition === iconPosition().Post\n \"\n [icon]=\"uiActionModel.descriptor!.icon!\"\n [color]=\"uiActionModel.descriptor?.iconColor ?? uiActionModel.descriptor?.color\"\n ></smart-icon>\n </ng-template>\n </button>\n</div>\n", styles: [".uiActionButtonsContainer{display:flex;flex-direction:row;gap:1rem;flex-wrap:wrap;min-height:2.25rem}\n"] }]
92
+ args: [{ selector: 'smart-ui-action-toolbar', template: "<div class=\"uiActionButtonsContainer\">\n <button\n *ngFor=\"let uiActionModel of uiActionModelsWithDescriptions\"\n mat-button\n [ngClass]=\"getType(uiActionModel)\"\n class=\"{{ uiActionModel.cssClass }}\"\n [color]=\"uiActionModel.descriptor?.color\"\n (click)=\"onActionClicked($event, uiActionModel)\"\n (dblclick)=\"onActionDoubleClicked($event, uiActionModel)\"\n >\n <div *ngIf=\"isOnlyIcon(uiActionModel); then iconOnly; else text\"></div>\n <ng-template #iconOnly>\n <smart-icon\n *ngIf=\"uiActionModel.descriptor?.icon\"\n [icon]=\"uiActionModel.descriptor!.icon!\"\n [color]=\"uiActionModel.descriptor?.iconColor ?? uiActionModel.descriptor?.color\"\n ></smart-icon>\n </ng-template>\n <ng-template #text>\n <smart-icon\n *ngIf=\"\n uiActionModel.descriptor?.icon &&\n uiActionModel.descriptor?.iconPosition === iconPosition().Pre\n \"\n [icon]=\"uiActionModel.descriptor!.icon!\"\n [color]=\"uiActionModel.descriptor?.iconColor ?? uiActionModel.descriptor?.color\"\n ></smart-icon>\n {{ uiActionModel.descriptor?.title }}\n <smart-icon\n *ngIf=\"\n uiActionModel.descriptor?.icon &&\n uiActionModel.descriptor?.iconPosition === iconPosition().Post\n \"\n [icon]=\"uiActionModel.descriptor!.icon!\"\n [color]=\"uiActionModel.descriptor?.iconColor ?? uiActionModel.descriptor?.color\"\n ></smart-icon>\n </ng-template>\n </button>\n</div>\n", styles: [".uiActionButtonsContainer{display:flex;flex-direction:row;gap:1rem;flex-wrap:wrap;min-height:2.25rem}\n"] }]
82
93
  }], ctorParameters: function () { return [{ type: i1.UiActionService }, { type: i2.UiActionDescriptorService }]; }, propDecorators: { uiActionModels: [{
83
94
  type: Input
84
95
  }] } });
85
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidWktYWN0aW9uLXRvb2xiYXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc21hcnQtbmctY2xpZW50L3NyYy9saWIvdmlldy1jb250ZXh0L3NtYXJ0LXVpLWFjdGlvbi91aS1hY3Rpb24tdG9vbGJhci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zbWFydC1uZy1jbGllbnQvc3JjL2xpYi92aWV3LWNvbnRleHQvc21hcnQtdWktYWN0aW9uL3VpLWFjdGlvbi10b29sYmFyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUErQyxNQUFNLGVBQWUsQ0FBQztBQUM5RixPQUFPLEVBQUUscUJBQXFCLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxRQUFRLENBQUM7QUFJbkUsT0FBTyxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxNQUFNLENBQUM7Ozs7Ozs7QUFPMUMsTUFBTSxPQUFPLHdCQUF3QjtJQU9wQyxZQUFvQixPQUF3QixFQUFVLE9BQWtDO1FBQXBFLFlBQU8sR0FBUCxPQUFPLENBQWlCO1FBQVUsWUFBTyxHQUFQLE9BQU8sQ0FBMkI7UUFOaEYsY0FBUyxHQUFrQixJQUFJLE9BQU8sRUFBRSxDQUFDO1FBT2hELElBQUksQ0FBQyxPQUFPLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRTtZQUMzRSxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDZCxDQUFDLENBQUMsQ0FBQztJQUNKLENBQUM7SUFFRCxRQUFRO1FBQ1AsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO0lBQ2QsQ0FBQztJQUNELFdBQVcsQ0FBQyxPQUFzQjtRQUNqQyxJQUFJLGNBQWMsR0FBRyxPQUFPLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxZQUFZLENBQUM7UUFDNUQsSUFBSSxjQUFjLEVBQUU7WUFDbkIsSUFBSSxDQUFDLGNBQWMsR0FBRyxjQUFjLENBQUM7WUFDckMsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO1NBQ2I7SUFDRixDQUFDO0lBQ0QsV0FBVztRQUNWLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDdkIsQ0FBQztJQUVELEtBQUssQ0FBQyxLQUFLO1FBQ1YsSUFBSSxDQUFDLDhCQUE4QixHQUFHLE1BQU0sT0FBTyxDQUFDLEdBQUcsQ0FDdEQsSUFBSSxDQUFDLGNBQWMsQ0FBQyxHQUFHLENBQUMsS0FBSyxFQUFFLGFBQTRCLEVBQUUsRUFBRTtZQUM5RCxhQUFhLENBQUMsVUFBVSxHQUFHLE1BQU0sSUFBSSxDQUFDLE9BQU8sQ0FBQyxtQkFBbUIsQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUFDLENBQUM7WUFFMUYsT0FBTyxhQUFhLENBQUM7UUFDdEIsQ0FBQyxDQUFDLENBQ0YsQ0FBQztJQUNILENBQUM7SUFFRCxlQUFlLENBQUMsS0FBVSxFQUFFLGFBQTRCO1FBQ3ZELEtBQUssQ0FBQyxlQUFlLEVBQUUsQ0FBQztRQUV4QixJQUFJLENBQUMsT0FBTyxDQUFDLGFBQWEsR0FBRyxhQUFhLENBQUM7UUFDM0MsSUFBSSxPQUFPLEdBQTJCO1lBQ3JDLE1BQU0sRUFBRSxhQUFhLENBQUMsTUFBTTtZQUM1QixRQUFRLEVBQUUsYUFBYSxDQUFDLFFBQVE7U0FDaEMsQ0FBQztRQUVGLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLGFBQWEsQ0FBQyxRQUFRLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDdkQsQ0FBQztJQUVELE9BQU8sQ0FBQyxhQUE0QjtRQUNuQyxRQUFRLGFBQWEsQ0FBQyxVQUFVLEVBQUUsSUFBSSxFQUFFO1lBQ3ZDLEtBQUssa0JBQWtCLENBQUMsTUFBTTtnQkFDN0IsT0FBTyxZQUFZLENBQUM7WUFDckIsS0FBSyxrQkFBa0IsQ0FBQyxJQUFJO2dCQUMzQixPQUFPLGlCQUFpQixDQUFDO1lBQzFCLEtBQUssa0JBQWtCLENBQUMsTUFBTTtnQkFDN0IsT0FBTyxtQkFBbUIsQ0FBQztZQUM1QixLQUFLLGtCQUFrQixDQUFDLE9BQU87Z0JBQzlCLE9BQU8sb0JBQW9CLENBQUM7WUFDN0IsS0FBSyxrQkFBa0IsQ0FBQyxJQUFJO2dCQUMzQixPQUFPLGlCQUFpQixDQUFDO1lBQzFCLEtBQUssa0JBQWtCLENBQUMsT0FBTztnQkFDOUIsT0FBTyxjQUFjLENBQUM7WUFDdkIsS0FBSyxrQkFBa0IsQ0FBQyxHQUFHO2dCQUMxQixPQUFPLFNBQVMsQ0FBQztZQUNsQjtnQkFDQyxPQUFPLENBQUMsR0FBRyxDQUFDLHNDQUFzQyxhQUFhLENBQUMsVUFBVSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7Z0JBQ3BGLE9BQU8sWUFBWSxDQUFDO1NBQ3JCO0lBQ0YsQ0FBQztJQUVELFlBQVk7UUFDWCxPQUFPLHFCQUFxQixDQUFDO0lBQzlCLENBQUM7SUFFRCxVQUFVLENBQUMsYUFBNEI7UUFDdEMsT0FBTyxDQUNOLGFBQWEsQ0FBQyxVQUFVLEVBQUUsSUFBSSxLQUFLLGtCQUFrQixDQUFDLElBQUk7WUFDMUQsYUFBYSxDQUFDLFVBQVUsRUFBRSxJQUFJLEtBQUssa0JBQWtCLENBQUMsT0FBTztZQUM3RCxhQUFhLENBQUMsVUFBVSxFQUFFLElBQUksS0FBSyxrQkFBa0IsQ0FBQyxHQUFHLENBQ3pELENBQUM7SUFDSCxDQUFDOztzSEFqRlcsd0JBQXdCOzBHQUF4Qix3QkFBd0Isa0lDWnJDLGdxREFzQ0E7NEZEMUJhLHdCQUF3QjtrQkFMcEMsU0FBUzsrQkFDQyx5QkFBeUI7OElBTzFCLGNBQWM7c0JBQXRCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIElucHV0LCBPbkNoYW5nZXMsIE9uRGVzdHJveSwgT25Jbml0LCBTaW1wbGVDaGFuZ2VzIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBVaUFjdGlvbkJ1dHRvbkljb25Qb3MsIFVpQWN0aW9uQnV0dG9uVHlwZSB9IGZyb20gJy4uL2FwaSc7XG5pbXBvcnQgeyBVaUFjdGlvbkRlc2NyaXB0b3JTZXJ2aWNlIH0gZnJvbSAnLi91aS1hY3Rpb24uZGVzY3JpcHRvci5zZXJ2aWNlJztcbmltcG9ydCB7IFVpQWN0aW9uTW9kZWwgfSBmcm9tICcuL3VpLWFjdGlvbi5tb2RlbCc7XG5pbXBvcnQgeyBFeGVjdXRlVWlBY3Rpb25PcHRpb25zLCBVaUFjdGlvblNlcnZpY2UgfSBmcm9tICcuL3VpLWFjdGlvbi5zZXJ2aWNlJztcbmltcG9ydCB7IFN1YmplY3QsIHRha2VVbnRpbCB9IGZyb20gJ3J4anMnO1xuXG5AQ29tcG9uZW50KHtcblx0c2VsZWN0b3I6ICdzbWFydC11aS1hY3Rpb24tdG9vbGJhcicsXG5cdHRlbXBsYXRlVXJsOiAnLi91aS1hY3Rpb24tdG9vbGJhci5jb21wb25lbnQuaHRtbCcsXG5cdHN0eWxlVXJsczogWycuL3VpLWFjdGlvbi10b29sYmFyLmNvbXBvbmVudC5jc3MnXSxcbn0pXG5leHBvcnQgY2xhc3MgVWlBY3Rpb25Ub29sYmFyQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkNoYW5nZXMsIE9uRGVzdHJveSB7XG5cdHByaXZhdGUgX2Rlc3Ryb3kkOiBTdWJqZWN0PHZvaWQ+ID0gbmV3IFN1YmplY3QoKTtcblxuXHRASW5wdXQoKSB1aUFjdGlvbk1vZGVscyE6IFVpQWN0aW9uTW9kZWxbXTtcblxuXHR1aUFjdGlvbk1vZGVsc1dpdGhEZXNjcmlwdGlvbnM/OiBVaUFjdGlvbk1vZGVsW107XG5cblx0Y29uc3RydWN0b3IocHJpdmF0ZSBzZXJ2aWNlOiBVaUFjdGlvblNlcnZpY2UsIHByaXZhdGUgbWFuYWdlcjogVWlBY3Rpb25EZXNjcmlwdG9yU2VydmljZSkge1xuXHRcdHRoaXMubWFuYWdlci5sYW5ndWFnZUNoYW5nZWQucGlwZSh0YWtlVW50aWwodGhpcy5fZGVzdHJveSQpKS5zdWJzY3JpYmUoKCkgPT4ge1xuXHRcdFx0dGhpcy5zZXRVcCgpO1xuXHRcdH0pO1xuXHR9XG5cblx0bmdPbkluaXQoKTogdm9pZCB7XG5cdFx0dGhpcy5zZXRVcCgpO1xuXHR9XG5cdG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcblx0XHRsZXQgdWlBY3Rpb25Nb2RlbHMgPSBjaGFuZ2VzWyd1aUFjdGlvbk1vZGVscyddLmN1cnJlbnRWYWx1ZTtcblx0XHRpZiAodWlBY3Rpb25Nb2RlbHMpIHtcblx0XHRcdHRoaXMudWlBY3Rpb25Nb2RlbHMgPSB1aUFjdGlvbk1vZGVscztcblx0XHRcdHRoaXMuc2V0VXAoKTtcblx0XHR9XG5cdH1cblx0bmdPbkRlc3Ryb3koKTogdm9pZCB7XG5cdFx0dGhpcy5fZGVzdHJveSQubmV4dCgpO1xuXHR9XG5cblx0YXN5bmMgc2V0VXAoKTogUHJvbWlzZTx2b2lkPiB7XG5cdFx0dGhpcy51aUFjdGlvbk1vZGVsc1dpdGhEZXNjcmlwdGlvbnMgPSBhd2FpdCBQcm9taXNlLmFsbChcblx0XHRcdHRoaXMudWlBY3Rpb25Nb2RlbHMubWFwKGFzeW5jICh1aUFjdGlvbk1vZGVsOiBVaUFjdGlvbk1vZGVsKSA9PiB7XG5cdFx0XHRcdHVpQWN0aW9uTW9kZWwuZGVzY3JpcHRvciA9IGF3YWl0IHRoaXMubWFuYWdlci5nZXRBY3Rpb25EZXNjcmlwdG9yKHVpQWN0aW9uTW9kZWwudWlBY3Rpb24pO1xuXG5cdFx0XHRcdHJldHVybiB1aUFjdGlvbk1vZGVsO1xuXHRcdFx0fSlcblx0XHQpO1xuXHR9XG5cblx0b25BY3Rpb25DbGlja2VkKGV2ZW50OiBhbnksIHVpQWN0aW9uTW9kZWw6IFVpQWN0aW9uTW9kZWwpOiB2b2lkIHtcblx0XHRldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcblxuXHRcdHRoaXMuc2VydmljZS51aUFjdGlvbk1vZGVsID0gdWlBY3Rpb25Nb2RlbDtcblx0XHRsZXQgb3B0aW9uczogRXhlY3V0ZVVpQWN0aW9uT3B0aW9ucyA9IHtcblx0XHRcdG5vZGVJZDogdWlBY3Rpb25Nb2RlbC5ub2RlSWQsXG5cdFx0XHR3aWRnZXRJZDogdWlBY3Rpb25Nb2RlbC53aWRnZXRJZCxcblx0XHR9O1xuXG5cdFx0dGhpcy5zZXJ2aWNlLmV4ZWN1dGUodWlBY3Rpb25Nb2RlbC51aUFjdGlvbiwgb3B0aW9ucyk7XG5cdH1cblxuXHRnZXRUeXBlKHVpQWN0aW9uTW9kZWw6IFVpQWN0aW9uTW9kZWwpOiBzdHJpbmcge1xuXHRcdHN3aXRjaCAodWlBY3Rpb25Nb2RlbC5kZXNjcmlwdG9yPy50eXBlKSB7XG5cdFx0XHRjYXNlIFVpQWN0aW9uQnV0dG9uVHlwZS5Ob3JtYWw6XG5cdFx0XHRcdHJldHVybiAnbWF0LWJ1dHRvbic7XG5cdFx0XHRjYXNlIFVpQWN0aW9uQnV0dG9uVHlwZS5GbGF0OlxuXHRcdFx0XHRyZXR1cm4gJ21hdC1mbGF0LWJ1dHRvbic7XG5cdFx0XHRjYXNlIFVpQWN0aW9uQnV0dG9uVHlwZS5SYWlzZWQ6XG5cdFx0XHRcdHJldHVybiAnbWF0LXJhaXNlZC1idXR0b24nO1xuXHRcdFx0Y2FzZSBVaUFjdGlvbkJ1dHRvblR5cGUuU3Ryb2tlZDpcblx0XHRcdFx0cmV0dXJuICdtYXQtc3Ryb2tlZC1idXR0b24nO1xuXHRcdFx0Y2FzZSBVaUFjdGlvbkJ1dHRvblR5cGUuSWNvbjpcblx0XHRcdFx0cmV0dXJuICdtYXQtaWNvbi1idXR0b24nO1xuXHRcdFx0Y2FzZSBVaUFjdGlvbkJ1dHRvblR5cGUuTWluaUZhYjpcblx0XHRcdFx0cmV0dXJuICdtYXQtbWluaS1mYWInO1xuXHRcdFx0Y2FzZSBVaUFjdGlvbkJ1dHRvblR5cGUuRmFiOlxuXHRcdFx0XHRyZXR1cm4gJ21hdC1mYWInO1xuXHRcdFx0ZGVmYXVsdDpcblx0XHRcdFx0Y29uc29sZS5sb2coYFVuaGFuZGxlZCBhY3Rpb24gYnV0dG9uIHR5cGUgY2FzZTogJHt1aUFjdGlvbk1vZGVsLmRlc2NyaXB0b3I/LnR5cGV9YCk7XG5cdFx0XHRcdHJldHVybiBgbWF0LWJ1dHRvbmA7XG5cdFx0fVxuXHR9XG5cblx0aWNvblBvc2l0aW9uKCk6IHR5cGVvZiBVaUFjdGlvbkJ1dHRvbkljb25Qb3Mge1xuXHRcdHJldHVybiBVaUFjdGlvbkJ1dHRvbkljb25Qb3M7XG5cdH1cblxuXHRpc09ubHlJY29uKHVpQWN0aW9uTW9kZWw6IFVpQWN0aW9uTW9kZWwpOiBib29sZWFuIHtcblx0XHRyZXR1cm4gKFxuXHRcdFx0dWlBY3Rpb25Nb2RlbC5kZXNjcmlwdG9yPy50eXBlID09PSBVaUFjdGlvbkJ1dHRvblR5cGUuSWNvbiB8fFxuXHRcdFx0dWlBY3Rpb25Nb2RlbC5kZXNjcmlwdG9yPy50eXBlID09PSBVaUFjdGlvbkJ1dHRvblR5cGUuTWluaUZhYiB8fFxuXHRcdFx0dWlBY3Rpb25Nb2RlbC5kZXNjcmlwdG9yPy50eXBlID09PSBVaUFjdGlvbkJ1dHRvblR5cGUuRmFiXG5cdFx0KTtcblx0fVxufVxuIiwiPGRpdiBjbGFzcz1cInVpQWN0aW9uQnV0dG9uc0NvbnRhaW5lclwiPlxuICAgIDxidXR0b25cbiAgICAgICAgKm5nRm9yPVwibGV0IHVpQWN0aW9uTW9kZWwgb2YgdWlBY3Rpb25Nb2RlbHNXaXRoRGVzY3JpcHRpb25zXCJcbiAgICAgICAgbWF0LWJ1dHRvblxuICAgICAgICBbbmdDbGFzc109XCJnZXRUeXBlKHVpQWN0aW9uTW9kZWwpXCJcbiAgICAgICAgY2xhc3M9XCJ7eyB1aUFjdGlvbk1vZGVsLmNzc0NsYXNzIH19XCJcbiAgICAgICAgW2NvbG9yXT1cInVpQWN0aW9uTW9kZWwuZGVzY3JpcHRvcj8uY29sb3JcIlxuICAgICAgICAoY2xpY2spPVwib25BY3Rpb25DbGlja2VkKCRldmVudCwgdWlBY3Rpb25Nb2RlbClcIlxuICAgID5cbiAgICAgICAgPGRpdiAqbmdJZj1cImlzT25seUljb24odWlBY3Rpb25Nb2RlbCk7IHRoZW4gaWNvbk9ubHk7IGVsc2UgdGV4dFwiPjwvZGl2PlxuICAgICAgICA8bmctdGVtcGxhdGUgI2ljb25Pbmx5PlxuICAgICAgICAgICAgPHNtYXJ0LWljb25cbiAgICAgICAgICAgICAgICAqbmdJZj1cInVpQWN0aW9uTW9kZWwuZGVzY3JpcHRvcj8uaWNvblwiXG4gICAgICAgICAgICAgICAgW2ljb25dPVwidWlBY3Rpb25Nb2RlbC5kZXNjcmlwdG9yIS5pY29uIVwiXG4gICAgICAgICAgICAgICAgW2NvbG9yXT1cInVpQWN0aW9uTW9kZWwuZGVzY3JpcHRvcj8uaWNvbkNvbG9yID8/IHVpQWN0aW9uTW9kZWwuZGVzY3JpcHRvcj8uY29sb3JcIlxuICAgICAgICAgICAgPjwvc21hcnQtaWNvbj5cbiAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgPG5nLXRlbXBsYXRlICN0ZXh0PlxuICAgICAgICAgICAgPHNtYXJ0LWljb25cbiAgICAgICAgICAgICAgICAqbmdJZj1cIlxuICAgICAgICAgICAgICAgICAgICB1aUFjdGlvbk1vZGVsLmRlc2NyaXB0b3I/Lmljb24gJiZcbiAgICAgICAgICAgICAgICAgICAgdWlBY3Rpb25Nb2RlbC5kZXNjcmlwdG9yPy5pY29uUG9zaXRpb24gPT09IGljb25Qb3NpdGlvbigpLlByZVxuICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgW2ljb25dPVwidWlBY3Rpb25Nb2RlbC5kZXNjcmlwdG9yIS5pY29uIVwiXG4gICAgICAgICAgICAgICAgW2NvbG9yXT1cInVpQWN0aW9uTW9kZWwuZGVzY3JpcHRvcj8uaWNvbkNvbG9yID8/IHVpQWN0aW9uTW9kZWwuZGVzY3JpcHRvcj8uY29sb3JcIlxuICAgICAgICAgICAgPjwvc21hcnQtaWNvbj5cbiAgICAgICAgICAgIHt7IHVpQWN0aW9uTW9kZWwuZGVzY3JpcHRvcj8udGl0bGUgfX1cbiAgICAgICAgICAgIDxzbWFydC1pY29uXG4gICAgICAgICAgICAgICAgKm5nSWY9XCJcbiAgICAgICAgICAgICAgICAgICAgdWlBY3Rpb25Nb2RlbC5kZXNjcmlwdG9yPy5pY29uICYmXG4gICAgICAgICAgICAgICAgICAgIHVpQWN0aW9uTW9kZWwuZGVzY3JpcHRvcj8uaWNvblBvc2l0aW9uID09PSBpY29uUG9zaXRpb24oKS5Qb3N0XG4gICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICBbaWNvbl09XCJ1aUFjdGlvbk1vZGVsLmRlc2NyaXB0b3IhLmljb24hXCJcbiAgICAgICAgICAgICAgICBbY29sb3JdPVwidWlBY3Rpb25Nb2RlbC5kZXNjcmlwdG9yPy5pY29uQ29sb3IgPz8gdWlBY3Rpb25Nb2RlbC5kZXNjcmlwdG9yPy5jb2xvclwiXG4gICAgICAgICAgICA+PC9zbWFydC1pY29uPlxuICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgIDwvYnV0dG9uPlxuPC9kaXY+XG4iXX0=
96
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidWktYWN0aW9uLXRvb2xiYXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc21hcnQtbmctY2xpZW50L3NyYy9saWIvdmlldy1jb250ZXh0L3NtYXJ0LXVpLWFjdGlvbi91aS1hY3Rpb24tdG9vbGJhci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zbWFydC1uZy1jbGllbnQvc3JjL2xpYi92aWV3LWNvbnRleHQvc21hcnQtdWktYWN0aW9uL3VpLWFjdGlvbi10b29sYmFyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUErQyxNQUFNLGVBQWUsQ0FBQztBQUM5RixPQUFPLEVBQUUscUJBQXFCLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxRQUFRLENBQUM7QUFJbkUsT0FBTyxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxNQUFNLENBQUM7Ozs7Ozs7QUFPMUMsTUFBTSxPQUFPLHdCQUF3QjtJQVNuQyxZQUFvQixPQUF3QixFQUFVLE9BQWtDO1FBQXBFLFlBQU8sR0FBUCxPQUFPLENBQWlCO1FBQVUsWUFBTyxHQUFQLE9BQU8sQ0FBMkI7UUFSaEYsY0FBUyxHQUFrQixJQUFJLE9BQU8sRUFBRSxDQUFDO1FBRWpELHdCQUFtQixHQUFZLElBQUksQ0FBQztRQU9sQyxJQUFJLENBQUMsT0FBTyxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxHQUFHLEVBQUU7WUFDMUUsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQ2YsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsUUFBUTtRQUNOLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUNmLENBQUM7SUFDRCxXQUFXLENBQUMsT0FB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a0IsQ0FBQyxHQUFHLENBQzFELENBQUM7SUFDSixDQUFDOztzSEFoR1Usd0JBQXdCOzBHQUF4Qix3QkFBd0Isa0lDWnJDLHFnREF1Q0E7NEZEM0JhLHdCQUF3QjtrQkFMcEMsU0FBUzsrQkFDRSx5QkFBeUI7OElBUzFCLGNBQWM7c0JBQXRCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIElucHV0LCBPbkNoYW5nZXMsIE9uRGVzdHJveSwgT25Jbml0LCBTaW1wbGVDaGFuZ2VzIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBVaUFjdGlvbkJ1dHRvbkljb25Qb3MsIFVpQWN0aW9uQnV0dG9uVHlwZSB9IGZyb20gJy4uL2FwaSc7XG5pbXBvcnQgeyBVaUFjdGlvbkRlc2NyaXB0b3JTZXJ2aWNlIH0gZnJvbSAnLi91aS1hY3Rpb24uZGVzY3JpcHRvci5zZXJ2aWNlJztcbmltcG9ydCB7IFVpQWN0aW9uTW9kZWwgfSBmcm9tICcuL3VpLWFjdGlvbi5tb2RlbCc7XG5pbXBvcnQgeyBFeGVjdXRlVWlBY3Rpb25PcHRpb25zLCBVaUFjdGlvblNlcnZpY2UgfSBmcm9tICcuL3VpLWFjdGlvbi5zZXJ2aWNlJztcbmltcG9ydCB7IFN1YmplY3QsIHRha2VVbnRpbCB9IGZyb20gJ3J4anMnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdzbWFydC11aS1hY3Rpb24tdG9vbGJhcicsXG4gIHRlbXBsYXRlVXJsOiAnLi91aS1hY3Rpb24tdG9vbGJhci5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3VpLWFjdGlvbi10b29sYmFyLmNvbXBvbmVudC5jc3MnXSxcbn0pXG5leHBvcnQgY2xhc3MgVWlBY3Rpb25Ub29sYmFyQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkNoYW5nZXMsIE9uRGVzdHJveSB7XG4gIHByaXZhdGUgX2Rlc3Ryb3kkOiBTdWJqZWN0PHZvaWQ+ID0gbmV3IFN1YmplY3QoKTtcblxuICBwcmVzc2VkQnV0dG9uQWN0aXZlOiBib29sZWFuID0gdHJ1ZTtcblxuICBASW5wdXQoKSB1aUFjdGlvbk1vZGVscyE6IFVpQWN0aW9uTW9kZWxbXTtcblxuICB1aUFjdGlvbk1vZGVsc1dpdGhEZXNjcmlwdGlvbnM/OiBVaUFjdGlvbk1vZGVsW107XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBzZXJ2aWNlOiBVaUFjdGlvblNlcnZpY2UsIHByaXZhdGUgbWFuYWdlcjogVWlBY3Rpb25EZXNjcmlwdG9yU2VydmljZSkge1xuICAgIHRoaXMubWFuYWdlci5sYW5ndWFnZUNoYW5nZWQucGlwZSh0YWtlVW50aWwodGhpcy5fZGVzdHJveSQpKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgdGhpcy5zZXRVcCgpO1xuICAgIH0pO1xuICB9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5zZXRVcCgpO1xuICB9XG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICBsZXQgdWlBY3Rpb25Nb2RlbHMgPSBjaGFuZ2VzWyd1aUFjdGlvbk1vZGVscyddLmN1cnJlbnRWYWx1ZTtcbiAgICBpZiAodWlBY3Rpb25Nb2RlbHMpIHtcbiAgICAgIHRoaXMudWlBY3Rpb25Nb2RlbHMgPSB1aUFjdGlvbk1vZGVscztcbiAgICAgIHRoaXMuc2V0VXAoKTtcbiAgICB9XG4gIH1cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5fZGVzdHJveSQubmV4dCgpO1xuICB9XG5cbiAgYXN5bmMgc2V0VXAoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgdGhpcy51aUFjdGlvbk1vZGVsc1dpdGhEZXNjcmlwdGlvbnMgPSBhd2FpdCBQcm9taXNlLmFsbChcbiAgICAgIHRoaXMudWlBY3Rpb25Nb2RlbHMubWFwKGFzeW5jICh1aUFjdGlvbk1vZGVsOiBVaUFjdGlvbk1vZGVsKSA9PiB7XG4gICAgICAgIHVpQWN0aW9uTW9kZWwuZGVzY3JpcHRvciA9IGF3YWl0IHRoaXMubWFuYWdlci5nZXRBY3Rpb25EZXNjcmlwdG9yKHVpQWN0aW9uTW9kZWwudWlBY3Rpb24pO1xuXG4gICAgICAgIHJldHVybiB1aUFjdGlvbk1vZGVsO1xuICAgICAgfSlcbiAgICApO1xuICB9XG5cbiAgb25BY3Rpb25DbGlja2VkKGV2ZW50OiBhbnksIHVpQWN0aW9uTW9kZWw6IFVpQWN0aW9uTW9kZWwpOiB2b2lkIHtcbiAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcblxuICAgIGlmICh0aGlzLnByZXNzZWRCdXR0b25BY3RpdmUpIHtcbiAgICAgIHRoaXMucHJlc3NlZEJ1dHRvbkFjdGl2ZSA9IGZhbHNlO1xuXG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgdGhpcy5wcmVzc2VkQnV0dG9uQWN0aXZlID0gdHJ1ZTtcbiAgICAgIH0sIDEwMCk7XG5cbiAgICAgIHRoaXMuc2VydmljZS51aUFjdGlvbk1vZGVsID0gdWlBY3Rpb25Nb2RlbDtcbiAgICAgIGxldCBvcHRpb25zOiBFeGVjdXRlVWlBY3Rpb25PcHRpb25zID0ge1xuICAgICAgICBub2RlSWQ6IHVpQWN0aW9uTW9kZWwubm9kZUlkLFxuICAgICAgICB3aWRnZXRJZDogdWlBY3Rpb25Nb2RlbC53aWRnZXRJZCxcbiAgICAgIH07XG5cbiAgICAgIHRoaXMuc2VydmljZS5leGVjdXRlKHVpQWN0aW9uTW9kZWwudWlBY3Rpb24sIG9wdGlvbnMpO1xuICAgIH1cbiAgfVxuXG4gIG9uQWN0aW9uRG91YmxlQ2xpY2tlZChldmVudDogYW55LCB1aUFjdGlvbk1vZGVsOiBVaUFjdGlvbk1vZGVsKTogdm9pZCB7XG4gICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgLy8gV2UgZG8gbm90IGhhbmRsZSBkb3VibGUgY2xpY2tzXG4gIH1cblxuICBnZXRUeXBlKHVpQWN0aW9uTW9kZWw6IFVpQWN0aW9uTW9kZWwpOiBzdHJpbmcge1xuICAgIHN3aXRjaCAodWlBY3Rpb25Nb2RlbC5kZXNjcmlwdG9yPy50eXBlKSB7XG4gICAgICBjYXNlIFVpQWN0aW9uQnV0dG9uVHlwZS5Ob3JtYWw6XG4gICAgICAgIHJldHVybiAnbWF0LWJ1dHRvbic7XG4gICAgICBjYXNlIFVpQWN0aW9uQnV0dG9uVHlwZS5GbGF0OlxuICAgICAgICByZXR1cm4gJ21hdC1mbGF0LWJ1dHRvbic7XG4gICAgICBjYXNlIFVpQWN0aW9uQnV0dG9uVHlwZS5SYWlzZWQ6XG4gICAgICAgIHJldHVybiAnbWF0LXJhaXNlZC1idXR0b24nO1xuICAgICAgY2FzZSBVaUFjdGlvbkJ1dHRvblR5cGUuU3Ryb2tlZDpcbiAgICAgICAgcmV0dXJuICdtYXQtc3Ryb2tlZC1idXR0b24nO1xuICAgICAgY2FzZSBVaUFjdGlvbkJ1dHRvblR5cGUuSWNvbjpcbiAgICAgICAgcmV0dXJuICdtYXQtaWNvbi1idXR0b24nO1xuICAgICAgY2FzZSBVaUFjdGlvbkJ1dHRvblR5cGUuTWluaUZhYjpcbiAgICAgICAgcmV0dXJuICdtYXQtbWluaS1mYWInO1xuICAgICAgY2FzZSBVaUFjdGlvbkJ1dHRvblR5cGUuRmFiOlxuICAgICAgICByZXR1cm4gJ21hdC1mYWInO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgY29uc29sZS5sb2coYFVuaGFuZGxlZCBhY3Rpb24gYnV0dG9uIHR5cGUgY2FzZTogJHt1aUFjdGlvbk1vZGVsLmRlc2NyaXB0b3I/LnR5cGV9YCk7XG4gICAgICAgIHJldHVybiBgbWF0LWJ1dHRvbmA7XG4gICAgfVxuICB9XG5cbiAgaWNvblBvc2l0aW9uKCk6IHR5cGVvZiBVaUFjdGlvbkJ1dHRvbkljb25Qb3Mge1xuICAgIHJldHVybiBVaUFjdGlvbkJ1dHRvbkljb25Qb3M7XG4gIH1cblxuICBpc09ubHlJY29uKHVpQWN0aW9uTW9kZWw6IFVpQWN0aW9uTW9kZWwpOiBib29sZWFuIHtcbiAgICByZXR1cm4gKFxuICAgICAgdWlBY3Rpb25Nb2RlbC5kZXNjcmlwdG9yPy50eXBlID09PSBVaUFjdGlvbkJ1dHRvblR5cGUuSWNvbiB8fFxuICAgICAgdWlBY3Rpb25Nb2RlbC5kZXNjcmlwdG9yPy50eXBlID09PSBVaUFjdGlvbkJ1dHRvblR5cGUuTWluaUZhYiB8fFxuICAgICAgdWlBY3Rpb25Nb2RlbC5kZXNjcmlwdG9yPy50eXBlID09PSBVaUFjdGlvbkJ1dHRvblR5cGUuRmFiXG4gICAgKTtcbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cInVpQWN0aW9uQnV0dG9uc0NvbnRhaW5lclwiPlxuICA8YnV0dG9uXG4gICAgKm5nRm9yPVwibGV0IHVpQWN0aW9uTW9kZWwgb2YgdWlBY3Rpb25Nb2RlbHNXaXRoRGVzY3JpcHRpb25zXCJcbiAgICBtYXQtYnV0dG9uXG4gICAgW25nQ2xhc3NdPVwiZ2V0VHlwZSh1aUFjdGlvbk1vZGVsKVwiXG4gICAgY2xhc3M9XCJ7eyB1aUFjdGlvbk1vZGVsLmNzc0NsYXNzIH19XCJcbiAgICBbY29sb3JdPVwidWlBY3Rpb25Nb2RlbC5kZXNjcmlwdG9yPy5jb2xvclwiXG4gICAgKGNsaWNrKT1cIm9uQWN0aW9uQ2xpY2tlZCgkZXZlbnQsIHVpQWN0aW9uTW9kZWwpXCJcbiAgICAoZGJsY2xpY2spPVwib25BY3Rpb25Eb3VibGVDbGlja2VkKCRldmVudCwgdWlBY3Rpb25Nb2RlbClcIlxuICA+XG4gICAgPGRpdiAqbmdJZj1cImlzT25seUljb24odWlBY3Rpb25Nb2RlbCk7IHRoZW4gaWNvbk9ubHk7IGVsc2UgdGV4dFwiPjwvZGl2PlxuICAgIDxuZy10ZW1wbGF0ZSAjaWNvbk9ubHk+XG4gICAgICA8c21hcnQtaWNvblxuICAgICAgICAqbmdJZj1cInVpQWN0aW9uTW9kZWwuZGVzY3JpcHRvcj8uaWNvblwiXG4gICAgICAgIFtpY29uXT1cInVpQWN0aW9uTW9kZWwuZGVzY3JpcHRvciEuaWNvbiFcIlxuICAgICAgICBbY29sb3JdPVwidWlBY3Rpb25Nb2RlbC5kZXNjcmlwdG9yPy5pY29uQ29sb3IgPz8gdWlBY3Rpb25Nb2RlbC5kZXNjcmlwdG9yPy5jb2xvclwiXG4gICAgICA+PC9zbWFydC1pY29uPlxuICAgIDwvbmctdGVtcGxhdGU+XG4gICAgPG5nLXRlbXBsYXRlICN0ZXh0PlxuICAgICAgPHNtYXJ0LWljb25cbiAgICAgICAgKm5nSWY9XCJcbiAgICAgICAgICB1aUFjdGlvbk1vZGVsLmRlc2NyaXB0b3I/Lmljb24gJiZcbiAgICAgICAgICB1aUFjdGlvbk1vZGVsLmRlc2NyaXB0b3I/Lmljb25Qb3NpdGlvbiA9PT0gaWNvblBvc2l0aW9uKCkuUHJlXG4gICAgICAgIFwiXG4gICAgICAgIFtpY29uXT1cInVpQWN0aW9uTW9kZWwuZGVzY3JpcHRvciEuaWNvbiFcIlxuICAgICAgICBbY29sb3JdPVwidWlBY3Rpb25Nb2RlbC5kZXNjcmlwdG9yPy5pY29uQ29sb3IgPz8gdWlBY3Rpb25Nb2RlbC5kZXNjcmlwdG9yPy5jb2xvclwiXG4gICAgICA+PC9zbWFydC1pY29uPlxuICAgICAge3sgdWlBY3Rpb25Nb2RlbC5kZXNjcmlwdG9yPy50aXRsZSB9fVxuICAgICAgPHNtYXJ0LWljb25cbiAgICAgICAgKm5nSWY9XCJcbiAgICAgICAgICB1aUFjdGlvbk1vZGVsLmRlc2NyaXB0b3I/Lmljb24gJiZcbiAgICAgICAgICB1aUFjdGlvbk1vZGVsLmRlc2NyaXB0b3I/Lmljb25Qb3NpdGlvbiA9PT0gaWNvblBvc2l0aW9uKCkuUG9zdFxuICAgICAgICBcIlxuICAgICAgICBbaWNvbl09XCJ1aUFjdGlvbk1vZGVsLmRlc2NyaXB0b3IhLmljb24hXCJcbiAgICAgICAgW2NvbG9yXT1cInVpQWN0aW9uTW9kZWwuZGVzY3JpcHRvcj8uaWNvbkNvbG9yID8/IHVpQWN0aW9uTW9kZWwuZGVzY3JpcHRvcj8uY29sb3JcIlxuICAgICAgPjwvc21hcnQtaWNvbj5cbiAgICA8L25nLXRlbXBsYXRlPlxuICA8L2J1dHRvbj5cbjwvZGl2PlxuIl19
@@ -3552,6 +3552,7 @@ class UiActionToolbarComponent {
3552
3552
  this.service = service;
3553
3553
  this.manager = manager;
3554
3554
  this._destroy$ = new Subject();
3555
+ this.pressedButtonActive = true;
3555
3556
  this.manager.languageChanged.pipe(takeUntil(this._destroy$)).subscribe(() => {
3556
3557
  this.setUp();
3557
3558
  });
@@ -3579,12 +3580,22 @@ class UiActionToolbarComponent {
3579
3580
  }
3580
3581
  onActionClicked(event, uiActionModel) {
3581
3582
  event.stopPropagation();
3582
- this.service.uiActionModel = uiActionModel;
3583
- let options = {
3584
- nodeId: uiActionModel.nodeId,
3585
- widgetId: uiActionModel.widgetId,
3586
- };
3587
- this.service.execute(uiActionModel.uiAction, options);
3583
+ if (this.pressedButtonActive) {
3584
+ this.pressedButtonActive = false;
3585
+ setTimeout(() => {
3586
+ this.pressedButtonActive = true;
3587
+ }, 100);
3588
+ this.service.uiActionModel = uiActionModel;
3589
+ let options = {
3590
+ nodeId: uiActionModel.nodeId,
3591
+ widgetId: uiActionModel.widgetId,
3592
+ };
3593
+ this.service.execute(uiActionModel.uiAction, options);
3594
+ }
3595
+ }
3596
+ onActionDoubleClicked(event, uiActionModel) {
3597
+ event.stopPropagation();
3598
+ // We do not handle double clicks
3588
3599
  }
3589
3600
  getType(uiActionModel) {
3590
3601
  var _a, _b;
@@ -3619,10 +3630,10 @@ class UiActionToolbarComponent {
3619
3630
  }
3620
3631
  }
3621
3632
  UiActionToolbarComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: UiActionToolbarComponent, deps: [{ token: UiActionService }, { token: UiActionDescriptorService }], target: i0.ɵɵFactoryTarget.Component });
3622
- UiActionToolbarComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.12", type: UiActionToolbarComponent, selector: "smart-ui-action-toolbar", inputs: { uiActionModels: "uiActionModels" }, usesOnChanges: true, ngImport: i0, template: "<div class=\"uiActionButtonsContainer\">\n <button\n *ngFor=\"let uiActionModel of uiActionModelsWithDescriptions\"\n mat-button\n [ngClass]=\"getType(uiActionModel)\"\n class=\"{{ uiActionModel.cssClass }}\"\n [color]=\"uiActionModel.descriptor?.color\"\n (click)=\"onActionClicked($event, uiActionModel)\"\n >\n <div *ngIf=\"isOnlyIcon(uiActionModel); then iconOnly; else text\"></div>\n <ng-template #iconOnly>\n <smart-icon\n *ngIf=\"uiActionModel.descriptor?.icon\"\n [icon]=\"uiActionModel.descriptor!.icon!\"\n [color]=\"uiActionModel.descriptor?.iconColor ?? uiActionModel.descriptor?.color\"\n ></smart-icon>\n </ng-template>\n <ng-template #text>\n <smart-icon\n *ngIf=\"\n uiActionModel.descriptor?.icon &&\n uiActionModel.descriptor?.iconPosition === iconPosition().Pre\n \"\n [icon]=\"uiActionModel.descriptor!.icon!\"\n [color]=\"uiActionModel.descriptor?.iconColor ?? uiActionModel.descriptor?.color\"\n ></smart-icon>\n {{ uiActionModel.descriptor?.title }}\n <smart-icon\n *ngIf=\"\n uiActionModel.descriptor?.icon &&\n uiActionModel.descriptor?.iconPosition === iconPosition().Post\n \"\n [icon]=\"uiActionModel.descriptor!.icon!\"\n [color]=\"uiActionModel.descriptor?.iconColor ?? uiActionModel.descriptor?.color\"\n ></smart-icon>\n </ng-template>\n </button>\n</div>\n", styles: [".uiActionButtonsContainer{display:flex;flex-direction:row;gap:1rem;flex-wrap:wrap;min-height:2.25rem}\n"], components: [{ type: i2.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { type: i4$1.SmartIconComponent, selector: "smart-icon", inputs: ["icon", "color"] }], directives: [{ type: i5.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i5.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] });
3633
+ UiActionToolbarComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.12", type: UiActionToolbarComponent, selector: "smart-ui-action-toolbar", inputs: { uiActionModels: "uiActionModels" }, usesOnChanges: true, ngImport: i0, template: "<div class=\"uiActionButtonsContainer\">\n <button\n *ngFor=\"let uiActionModel of uiActionModelsWithDescriptions\"\n mat-button\n [ngClass]=\"getType(uiActionModel)\"\n class=\"{{ uiActionModel.cssClass }}\"\n [color]=\"uiActionModel.descriptor?.color\"\n (click)=\"onActionClicked($event, uiActionModel)\"\n (dblclick)=\"onActionDoubleClicked($event, uiActionModel)\"\n >\n <div *ngIf=\"isOnlyIcon(uiActionModel); then iconOnly; else text\"></div>\n <ng-template #iconOnly>\n <smart-icon\n *ngIf=\"uiActionModel.descriptor?.icon\"\n [icon]=\"uiActionModel.descriptor!.icon!\"\n [color]=\"uiActionModel.descriptor?.iconColor ?? uiActionModel.descriptor?.color\"\n ></smart-icon>\n </ng-template>\n <ng-template #text>\n <smart-icon\n *ngIf=\"\n uiActionModel.descriptor?.icon &&\n uiActionModel.descriptor?.iconPosition === iconPosition().Pre\n \"\n [icon]=\"uiActionModel.descriptor!.icon!\"\n [color]=\"uiActionModel.descriptor?.iconColor ?? uiActionModel.descriptor?.color\"\n ></smart-icon>\n {{ uiActionModel.descriptor?.title }}\n <smart-icon\n *ngIf=\"\n uiActionModel.descriptor?.icon &&\n uiActionModel.descriptor?.iconPosition === iconPosition().Post\n \"\n [icon]=\"uiActionModel.descriptor!.icon!\"\n [color]=\"uiActionModel.descriptor?.iconColor ?? uiActionModel.descriptor?.color\"\n ></smart-icon>\n </ng-template>\n </button>\n</div>\n", styles: [".uiActionButtonsContainer{display:flex;flex-direction:row;gap:1rem;flex-wrap:wrap;min-height:2.25rem}\n"], components: [{ type: i2.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { type: i4$1.SmartIconComponent, selector: "smart-icon", inputs: ["icon", "color"] }], directives: [{ type: i5.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i5.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] });
3623
3634
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: UiActionToolbarComponent, decorators: [{
3624
3635
  type: Component,
3625
- args: [{ selector: 'smart-ui-action-toolbar', template: "<div class=\"uiActionButtonsContainer\">\n <button\n *ngFor=\"let uiActionModel of uiActionModelsWithDescriptions\"\n mat-button\n [ngClass]=\"getType(uiActionModel)\"\n class=\"{{ uiActionModel.cssClass }}\"\n [color]=\"uiActionModel.descriptor?.color\"\n (click)=\"onActionClicked($event, uiActionModel)\"\n >\n <div *ngIf=\"isOnlyIcon(uiActionModel); then iconOnly; else text\"></div>\n <ng-template #iconOnly>\n <smart-icon\n *ngIf=\"uiActionModel.descriptor?.icon\"\n [icon]=\"uiActionModel.descriptor!.icon!\"\n [color]=\"uiActionModel.descriptor?.iconColor ?? uiActionModel.descriptor?.color\"\n ></smart-icon>\n </ng-template>\n <ng-template #text>\n <smart-icon\n *ngIf=\"\n uiActionModel.descriptor?.icon &&\n uiActionModel.descriptor?.iconPosition === iconPosition().Pre\n \"\n [icon]=\"uiActionModel.descriptor!.icon!\"\n [color]=\"uiActionModel.descriptor?.iconColor ?? uiActionModel.descriptor?.color\"\n ></smart-icon>\n {{ uiActionModel.descriptor?.title }}\n <smart-icon\n *ngIf=\"\n uiActionModel.descriptor?.icon &&\n uiActionModel.descriptor?.iconPosition === iconPosition().Post\n \"\n [icon]=\"uiActionModel.descriptor!.icon!\"\n [color]=\"uiActionModel.descriptor?.iconColor ?? uiActionModel.descriptor?.color\"\n ></smart-icon>\n </ng-template>\n </button>\n</div>\n", styles: [".uiActionButtonsContainer{display:flex;flex-direction:row;gap:1rem;flex-wrap:wrap;min-height:2.25rem}\n"] }]
3636
+ args: [{ selector: 'smart-ui-action-toolbar', template: "<div class=\"uiActionButtonsContainer\">\n <button\n *ngFor=\"let uiActionModel of uiActionModelsWithDescriptions\"\n mat-button\n [ngClass]=\"getType(uiActionModel)\"\n class=\"{{ uiActionModel.cssClass }}\"\n [color]=\"uiActionModel.descriptor?.color\"\n (click)=\"onActionClicked($event, uiActionModel)\"\n (dblclick)=\"onActionDoubleClicked($event, uiActionModel)\"\n >\n <div *ngIf=\"isOnlyIcon(uiActionModel); then iconOnly; else text\"></div>\n <ng-template #iconOnly>\n <smart-icon\n *ngIf=\"uiActionModel.descriptor?.icon\"\n [icon]=\"uiActionModel.descriptor!.icon!\"\n [color]=\"uiActionModel.descriptor?.iconColor ?? uiActionModel.descriptor?.color\"\n ></smart-icon>\n </ng-template>\n <ng-template #text>\n <smart-icon\n *ngIf=\"\n uiActionModel.descriptor?.icon &&\n uiActionModel.descriptor?.iconPosition === iconPosition().Pre\n \"\n [icon]=\"uiActionModel.descriptor!.icon!\"\n [color]=\"uiActionModel.descriptor?.iconColor ?? uiActionModel.descriptor?.color\"\n ></smart-icon>\n {{ uiActionModel.descriptor?.title }}\n <smart-icon\n *ngIf=\"\n uiActionModel.descriptor?.icon &&\n uiActionModel.descriptor?.iconPosition === iconPosition().Post\n \"\n [icon]=\"uiActionModel.descriptor!.icon!\"\n [color]=\"uiActionModel.descriptor?.iconColor ?? uiActionModel.descriptor?.color\"\n ></smart-icon>\n </ng-template>\n </button>\n</div>\n", styles: [".uiActionButtonsContainer{display:flex;flex-direction:row;gap:1rem;flex-wrap:wrap;min-height:2.25rem}\n"] }]
3626
3637
  }], ctorParameters: function () { return [{ type: UiActionService }, { type: UiActionDescriptorService }]; }, propDecorators: { uiActionModels: [{
3627
3638
  type: Input
3628
3639
  }] } });