turbogui-angular 11.0.1 → 11.0.2

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.
@@ -100,13 +100,13 @@ export class DialogSingleSelectionListComponent extends DialogOptionsBaseCompone
100
100
  }
101
101
  }
102
102
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: DialogSingleSelectionListComponent, deps: [{ token: i1.MatDialogRef }, { token: i2.BrowserService }, { token: MAT_DIALOG_DATA }], target: i0.ɵɵFactoryTarget.Component }); }
103
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: DialogSingleSelectionListComponent, selector: "tg-dialog-single-selection-list", usesInheritance: true, ngImport: i0, template: "<h3>\r\n {{data.texts[0]}}\r\n</h3>\r\n\r\n<p *ngIf=\"data.texts.length > 1 &amp;&amp; !stringUtils.isEmpty(data.texts[1])\">\r\n {{data.texts[1]}}\r\n</p>\r\n\r\n<mat-form-field *ngIf=\"data.texts.length > 2 &amp;&amp; !stringUtils.isEmpty(data.texts[2])\"\r\n class=\"searchItemInputContainer\">\r\n \r\n <input matInput autoFocusOnDisplay\r\n placeholder=\"{{data.texts[2]}}\"\r\n (input)=\"onSearchChange($event.target)\">\r\n \r\n</mat-form-field>\r\n\r\n<div class=\"listItemsContainer\"\r\n [style.max-height]=\"getListItemsContainerMaxheight()\">\r\n\r\n <div class=\"listItemContainer\"\r\n [style.background-color]=\"selectedItemIndex === i ? '#90d1ffad' : (i % 2 === 0 ? 'initial' : '#00000009')\"\r\n *ngFor=\"let item of filteredOptions; let i = index; trackBy: trackByFn\"\r\n (click)=\"data.texts.length < 4 ? dialogRef.close(i) : selectedItemIndex = i\">\r\n \r\n <p *ngIf=\"item !== ''\">\r\n {{item}}\r\n </p>\r\n \r\n </div>\r\n\r\n</div>\r\n\r\n<button mat-raised-button color=\"primary\"\r\n [disabled]=\"selectedItemIndex < 0\"\r\n (click)=\"dialogRef.close(selectedItemIndex)\"\r\n *ngIf=\"data.texts.length > 3\">\r\n\r\n {{data.texts[3]}}\r\n \r\n</button>", styles: [":host{min-height:300px}h3{margin-top:0;margin-bottom:10px}p{margin-top:0;margin-bottom:5px}.searchItemInputContainer{width:100%;margin-top:0;margin-bottom:0}.listItemsContainer{overflow-y:auto;border:1px solid rgba(0,0,0,.2);border-radius:4px;margin-bottom:5px}.listItemContainer p{line-height:36px;width:calc(100% - 12px);margin:0 0 0 6px}button{float:right}\n"], dependencies: [{ kind: "directive", type: i3.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "component", type: i4.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "component", type: i5.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "directive", type: i6.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i7.AutoFocusOnDisplayDirective, selector: "[autoFocusOnDisplay]" }] }); }
103
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: DialogSingleSelectionListComponent, selector: "tg-dialog-single-selection-list", usesInheritance: true, ngImport: i0, template: "<h3>\r\n {{data.texts[0]}}\r\n</h3>\r\n\r\n<p *ngIf=\"data.texts.length > 1 &amp;&amp; !stringUtils.isEmpty(data.texts[1])\">\r\n {{data.texts[1]}}\r\n</p>\r\n\r\n<mat-form-field *ngIf=\"data.texts.length > 2 &amp;&amp; !stringUtils.isEmpty(data.texts[2])\"\r\n class=\"searchItemInputContainer\">\r\n \r\n <mat-label>{{data.texts[2]}}</mat-label>\r\n <input matInput autoFocusOnDisplay\r\n (input)=\"onSearchChange($event.target)\">\r\n \r\n</mat-form-field>\r\n\r\n<div class=\"listItemsContainer\"\r\n [style.max-height]=\"getListItemsContainerMaxheight()\">\r\n\r\n <div class=\"listItemContainer\"\r\n [style.background-color]=\"selectedItemIndex === i ? '#90d1ffad' : (i % 2 === 0 ? 'initial' : '#00000009')\"\r\n *ngFor=\"let item of filteredOptions; let i = index; trackBy: trackByFn\"\r\n (click)=\"data.texts.length < 4 ? dialogRef.close(i) : selectedItemIndex = i\">\r\n \r\n <p *ngIf=\"item !== ''\">\r\n {{item}}\r\n </p>\r\n \r\n </div>\r\n\r\n</div>\r\n\r\n<button mat-raised-button color=\"primary\"\r\n [disabled]=\"selectedItemIndex < 0\"\r\n (click)=\"dialogRef.close(selectedItemIndex)\"\r\n *ngIf=\"data.texts.length > 3\">\r\n\r\n {{data.texts[3]}}\r\n \r\n</button>", styles: [":host{min-height:300px}h3{margin-top:0;margin-bottom:10px}p{margin-top:0;margin-bottom:5px}.searchItemInputContainer{width:100%;margin-top:0;margin-bottom:0}.listItemsContainer{overflow-y:auto;border:1px solid rgba(0,0,0,.2);border-radius:4px;margin-bottom:5px}.listItemContainer p{line-height:36px;width:calc(100% - 12px);margin:0 0 0 6px}button{float:right}\n"], dependencies: [{ kind: "directive", type: i3.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "component", type: i4.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i4.MatLabel, selector: "mat-label" }, { kind: "component", type: i5.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "directive", type: i6.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i7.AutoFocusOnDisplayDirective, selector: "[autoFocusOnDisplay]" }] }); }
104
104
  }
105
105
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: DialogSingleSelectionListComponent, decorators: [{
106
106
  type: Component,
107
- args: [{ selector: 'tg-dialog-single-selection-list', template: "<h3>\r\n {{data.texts[0]}}\r\n</h3>\r\n\r\n<p *ngIf=\"data.texts.length > 1 &amp;&amp; !stringUtils.isEmpty(data.texts[1])\">\r\n {{data.texts[1]}}\r\n</p>\r\n\r\n<mat-form-field *ngIf=\"data.texts.length > 2 &amp;&amp; !stringUtils.isEmpty(data.texts[2])\"\r\n class=\"searchItemInputContainer\">\r\n \r\n <input matInput autoFocusOnDisplay\r\n placeholder=\"{{data.texts[2]}}\"\r\n (input)=\"onSearchChange($event.target)\">\r\n \r\n</mat-form-field>\r\n\r\n<div class=\"listItemsContainer\"\r\n [style.max-height]=\"getListItemsContainerMaxheight()\">\r\n\r\n <div class=\"listItemContainer\"\r\n [style.background-color]=\"selectedItemIndex === i ? '#90d1ffad' : (i % 2 === 0 ? 'initial' : '#00000009')\"\r\n *ngFor=\"let item of filteredOptions; let i = index; trackBy: trackByFn\"\r\n (click)=\"data.texts.length < 4 ? dialogRef.close(i) : selectedItemIndex = i\">\r\n \r\n <p *ngIf=\"item !== ''\">\r\n {{item}}\r\n </p>\r\n \r\n </div>\r\n\r\n</div>\r\n\r\n<button mat-raised-button color=\"primary\"\r\n [disabled]=\"selectedItemIndex < 0\"\r\n (click)=\"dialogRef.close(selectedItemIndex)\"\r\n *ngIf=\"data.texts.length > 3\">\r\n\r\n {{data.texts[3]}}\r\n \r\n</button>", styles: [":host{min-height:300px}h3{margin-top:0;margin-bottom:10px}p{margin-top:0;margin-bottom:5px}.searchItemInputContainer{width:100%;margin-top:0;margin-bottom:0}.listItemsContainer{overflow-y:auto;border:1px solid rgba(0,0,0,.2);border-radius:4px;margin-bottom:5px}.listItemContainer p{line-height:36px;width:calc(100% - 12px);margin:0 0 0 6px}button{float:right}\n"] }]
107
+ args: [{ selector: 'tg-dialog-single-selection-list', template: "<h3>\r\n {{data.texts[0]}}\r\n</h3>\r\n\r\n<p *ngIf=\"data.texts.length > 1 &amp;&amp; !stringUtils.isEmpty(data.texts[1])\">\r\n {{data.texts[1]}}\r\n</p>\r\n\r\n<mat-form-field *ngIf=\"data.texts.length > 2 &amp;&amp; !stringUtils.isEmpty(data.texts[2])\"\r\n class=\"searchItemInputContainer\">\r\n \r\n <mat-label>{{data.texts[2]}}</mat-label>\r\n <input matInput autoFocusOnDisplay\r\n (input)=\"onSearchChange($event.target)\">\r\n \r\n</mat-form-field>\r\n\r\n<div class=\"listItemsContainer\"\r\n [style.max-height]=\"getListItemsContainerMaxheight()\">\r\n\r\n <div class=\"listItemContainer\"\r\n [style.background-color]=\"selectedItemIndex === i ? '#90d1ffad' : (i % 2 === 0 ? 'initial' : '#00000009')\"\r\n *ngFor=\"let item of filteredOptions; let i = index; trackBy: trackByFn\"\r\n (click)=\"data.texts.length < 4 ? dialogRef.close(i) : selectedItemIndex = i\">\r\n \r\n <p *ngIf=\"item !== ''\">\r\n {{item}}\r\n </p>\r\n \r\n </div>\r\n\r\n</div>\r\n\r\n<button mat-raised-button color=\"primary\"\r\n [disabled]=\"selectedItemIndex < 0\"\r\n (click)=\"dialogRef.close(selectedItemIndex)\"\r\n *ngIf=\"data.texts.length > 3\">\r\n\r\n {{data.texts[3]}}\r\n \r\n</button>", styles: [":host{min-height:300px}h3{margin-top:0;margin-bottom:10px}p{margin-top:0;margin-bottom:5px}.searchItemInputContainer{width:100%;margin-top:0;margin-bottom:0}.listItemsContainer{overflow-y:auto;border:1px solid rgba(0,0,0,.2);border-radius:4px;margin-bottom:5px}.listItemContainer p{line-height:36px;width:calc(100% - 12px);margin:0 0 0 6px}button{float:right}\n"] }]
108
108
  }], ctorParameters: function () { return [{ type: i1.MatDialogRef }, { type: i2.BrowserService }, { type: undefined, decorators: [{
109
109
  type: Inject,
110
110
  args: [MAT_DIALOG_DATA]
111
111
  }] }]; } });
112
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlhbG9nLXNpbmdsZS1zZWxlY3Rpb24tbGlzdC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90dXJib2d1aS1hbmd1bGFyL3NyYy9tYWluL3ZpZXcvY29tcG9uZW50cy9kaWFsb2ctc2luZ2xlLXNlbGVjdGlvbi1saXN0L2RpYWxvZy1zaW5nbGUtc2VsZWN0aW9uLWxpc3QuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdHVyYm9ndWktYW5ndWxhci9zcmMvbWFpbi92aWV3L2NvbXBvbmVudHMvZGlhbG9nLXNpbmdsZS1zZWxlY3Rpb24tbGlzdC9kaWFsb2ctc2luZ2xlLXNlbGVjdGlvbi1saXN0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7O0dBT0c7QUFFSCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNsRCxPQUFPLEVBQWdCLGVBQWUsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ3pFLE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLHNEQUFzRCxDQUFDO0FBRWxHLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQzs7Ozs7Ozs7O0FBRzlDOzs7Ozs7Ozs7OztHQVdHO0FBUUgsTUFBTSxPQUFPLGtDQUFtQyxTQUFRLDBCQUEwQjtJQW1DOUUsWUFBbUIsU0FBbUQsRUFDbkQsY0FBOEIsRUFDTCxJQUFTO1FBRWpELEtBQUssRUFBRSxDQUFDO1FBSk8sY0FBUyxHQUFULFNBQVMsQ0FBMEM7UUFDbkQsbUJBQWMsR0FBZCxjQUFjLENBQWdCO1FBQ0wsU0FBSSxHQUFKLElBQUksQ0FBSztRQWxDckQ7O1dBRUc7UUFDSCxnQkFBVyxHQUFHLFdBQVcsQ0FBQztRQUUxQjs7O1dBR0c7UUFDSCxvQkFBZSxHQUFZLEVBQUUsQ0FBQztRQUc5Qjs7O1dBR0c7UUFDSyxvQkFBZSxHQUFZLEVBQUUsQ0FBQztRQUd0Qzs7O1dBR0c7UUFDSyxrQ0FBNkIsR0FBWSxFQUFFLENBQUM7UUFHcEQ7O1dBRUc7UUFDSCxzQkFBaUIsR0FBRyxDQUFDLENBQUMsQ0FBQztRQThEdkI7OztXQUdHO1FBQ0gsY0FBUyxHQUFHLENBQUMsS0FBYSxFQUFFLE1BQWMsRUFBRSxFQUFFLENBQUMsS0FBSyxDQUFDO1FBekRqRCxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRTtZQUV2QixNQUFNLElBQUksS0FBSyxDQUFDLDZKQUE2SixDQUFDLENBQUM7U0FDbEw7UUFFRCxJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRTtZQUV6QixNQUFNLElBQUksS0FBSyxDQUFDLGdFQUFnRSxDQUFDLENBQUM7U0FDckY7UUFFRCxJQUFJLENBQUMsZUFBZSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUM7UUFFcEMsS0FBSSxJQUFJLE1BQU0sSUFBSSxJQUFJLENBQUMsZUFBZSxFQUFDO1lBRW5DLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1lBQ2xDLElBQUksQ0FBQyw2QkFBNkIsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLHVCQUF1QixDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7U0FDeEY7SUFDTCxDQUFDO0lBR0Q7O09BRUc7SUFDSCw4QkFBOEI7UUFFMUIsT0FBTyxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsZUFBZSxFQUFFLEdBQUcsR0FBRyxDQUFDLEdBQUcsSUFBSSxDQUFDO0lBQ2hFLENBQUM7SUFHRDs7O09BR0c7SUFDSCxjQUFjLENBQUMsS0FBc0I7UUFFakMsSUFBSSxDQUFDLGlCQUFpQixHQUFHLENBQUMsQ0FBQyxDQUFDO1FBRTVCLElBQUksVUFBVSxHQUFHLFdBQVcsQ0FBQyx1QkFBdUIsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7UUFFbEUsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLElBQUksQ0FBQyw2QkFBNkIsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUM7WUFFL0QsSUFBRyxVQUFVLEtBQUssRUFBRTtnQkFDakIsSUFBSSxDQUFDLDZCQUE2QixDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLEVBQUM7Z0JBRTlELElBQUksQ0FBQyxlQUFlLENBQUMsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxDQUFDLENBQUMsQ0FBQzthQUVyRDtpQkFBSTtnQkFFRCxJQUFJLENBQUMsZUFBZSxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQzthQUNoQztTQUNKO0lBQ0wsQ0FBQzsrR0E1RlEsa0NBQWtDLDRFQXFDdkIsZUFBZTttR0FyQzFCLGtDQUFrQyw4RkNuQy9DLCt3Q0F3Q1M7OzRGRExJLGtDQUFrQztrQkFQOUMsU0FBUzsrQkFDRSxpQ0FBaUM7OzBCQTJDNUIsTUFBTTsyQkFBQyxlQUFlIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXHJcbiAqIFR1cmJvR1VJIGlzIEEgbGlicmFyeSB0aGF0IGhlbHBzIHdpdGggdGhlIG1vc3QgY29tbW9uIGFuZCBnZW5lcmljIFVJIGVsZW1lbnRzIGFuZCBmdW5jdGlvbmFsaXRpZXNcclxuICpcclxuICogV2Vic2l0ZSA6IC0+IGh0dHA6Ly93d3cudHVyYm9ndWkub3JnXHJcbiAqIExpY2Vuc2UgOiAtPiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wLiBZb3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXHJcbiAqIExpY2Vuc2UgVXJsIDogLT4gaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXHJcbiAqIENvcHlSaWdodCA6IC0+IENvcHlyaWdodCAyMDE4IEVkZXJ0b25lIEFkdmFuZGVkIFNvbHV0aW9ucy4gaHR0cHM6Ly93d3cuZWRlcnRvbmUuY29tXHJcbiAqL1xyXG5cclxuaW1wb3J0IHsgQ29tcG9uZW50LCBJbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgTWF0RGlhbG9nUmVmLCBNQVRfRElBTE9HX0RBVEEgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kaWFsb2cnO1xyXG5pbXBvcnQgeyBEaWFsb2dPcHRpb25zQmFzZUNvbXBvbmVudCB9IGZyb20gJy4uL2RpYWxvZy1vcHRpb25zLWJhc2UvZGlhbG9nLW9wdGlvbnMtYmFzZS5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBCcm93c2VyU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL2NvbnRyb2xsZXIvYnJvd3Nlci5zZXJ2aWNlJztcclxuaW1wb3J0IHsgU3RyaW5nVXRpbHMgfSBmcm9tICd0dXJib2NvbW1vbnMtdHMnO1xyXG5cclxuXHJcbi8qKlxyXG4gKiBBIGRpYWxvZyBjb21wb25lbnQgd2hpY2ggYWxsb3dzIHVzIHRvIHNlbGVjdCBvbmUgc2luZ2xlIGl0ZW0gZnJvbSBhIGxpc3QuIFRoZSBlbGVtZW50cyBvbiB0aGF0IGxpc3QgYXJlIGRpc3BsYXllZCBvbiBhIHRhYmxlXHJcbiAqIHdoaWNoIG1heSBzaG93IGEgc2Nyb2xsIGlmIG5lY2Vzc2FyeSB3aGVuIHRoZXJlIGFyZSBtYW55IGVsZW1lbnRzIG9uIHRoZSBsaXN0LlxyXG4gKiBcclxuICogSXQgYWxzbyBhbGxvd3MgdXMgdG8gZmlsdGVyIGluc2lkZSB0aGUgbGlzdCB3aXRoIGEgY3VzdG9tIHRleHQgdGhhdCB3ZSBjYW4gdHlwZSBpbnRvIGEgc2VhcmNoIGlucHV0LCB3aGljaCBpcyBvcHRpb25hbC5cclxuICpcclxuICogdGV4dHMgcGFyYW1ldGVyIG11c3QgY29udGFpbiB0aGUgdGl0bGUsIHRoZSBkZXNjcmlwdGlvbiAob3B0aW9uYWwpLCB0aGUgZmlsdGVyIGlucHV0IHRpdGxlIChvcHRpb25hbCksIGFuZCB0aGUgc3VibWl0IGJ1dHRvbiBjYXB0aW9uLlxyXG4gKiBJZiB0aGF0IGNhcHRpb24gaXMgbm90IHByb3ZpZGVkLCB0aGUgc2VsZWN0aW9uIHdpbGwgYmUgYXV0b21hdGljYWxseSBwZXJmb3JtZWQgb25jZSB1c2VyIGNsaWNrcyBvbiBhbiBlbGVtZW50IG9uIHRoZSBsaXN0LiBPdGhlcndpc2UsIFxyXG4gKiB0aGUgZWxlbWVudCB3aWxsIGJlIHNlbGVjdGVkIG9uIHRoZSBsaXN0IGFuZCB0aGUgc2VsZWN0aW9uIHdpbGwgYmUgcGVyZm9ybWVkIG9uY2UgdGhlIHVzZXIgY2xpY2tzIG9uIHRoZSBzdWJtaXQgYnV0dG9uLlxyXG4gKlxyXG4gKiBvcHRpb25zIHBhcmFtZXRlciBtdXN0IGNvbnRhaW4gdGhlIGxpc3Qgb2YgZWxlbWVudHMgdGhhdCB3aWxsIGJlIGRpc3BsYXllZCB0byB0aGUgdXNlciAgXHJcbiAqL1xyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ3RnLWRpYWxvZy1zaW5nbGUtc2VsZWN0aW9uLWxpc3QnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9kaWFsb2ctc2luZ2xlLXNlbGVjdGlvbi1saXN0LmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9kaWFsb2ctc2luZ2xlLXNlbGVjdGlvbi1saXN0LmNvbXBvbmVudC5zY3NzJ11cclxufSlcclxuXHJcblxyXG5leHBvcnQgY2xhc3MgRGlhbG9nU2luZ2xlU2VsZWN0aW9uTGlzdENvbXBvbmVudCBleHRlbmRzIERpYWxvZ09wdGlvbnNCYXNlQ29tcG9uZW50IHtcclxuICAgIFxyXG4gICAgXHJcbiAgICAvKipcclxuICAgICAqIERlY2xhcmUgYSByZWZlcmVuY2UgdG8gdGhlIHN0cmluZyB1dGlscyBjbGFzcyBzbyBpdCBjYW4gYmUgdXNlZCBvbiB0aGUgaHRtbCBwYXJ0XHJcbiAgICAgKi9cclxuICAgIHN0cmluZ1V0aWxzID0gU3RyaW5nVXRpbHM7XHJcbiAgICBcclxuICAgIC8qKiBcclxuICAgICAqIENvbnRhaW5zIHRoZSBsaXN0IG9mIGVsZW1lbnRzIHRoYXQgd2lsbCBiZSBkaXJlY3RseSBzaG93biB0byB0aGUgdXNlciBhdCB0aGUgY29tcG9uZW50IGxpc3QuXHJcbiAgICAgKiBJdCBtYXkgYmUgZmlsdGVyZWQgb3Igbm90IGRlcGVuZGluZyBvbiB0aGlzIGNvbXBvbmVudCBzZXR1cCBhbmQgdGhlIHVzZXIgaW5wdXRcclxuICAgICAqL1xyXG4gICAgZmlsdGVyZWRPcHRpb25zOnN0cmluZ1tdID0gW107XHJcbiAgICBcclxuICAgIFxyXG4gICAgLyoqXHJcbiAgICAgKiBDb250YWlucyB0aGUgb3JpZ2luYWwgbGlzdCBvZiBlbGVtZW50cyB0aGF0IGFyZSBwcm92aWRlZCB0byBiZSBsaXN0ZWQgb24gdGhpcyBjb21wb25lbnQgYmVmb3JlXHJcbiAgICAgKiBiZWluZyBwb3NzaWJseSBmaWx0ZXJlZC4gSXQgaXMgb25seSB1c2VkIGFzIGEgYmFja3VwLCBub3Qgc2hvd24gdG8gdGhlIHVzZXJcclxuICAgICAqL1xyXG4gICAgcHJpdmF0ZSBvcmlnaW5hbE9wdGlvbnM6c3RyaW5nW10gPSBbXTtcclxuICAgIFxyXG4gICAgXHJcbiAgICAvKipcclxuICAgICAqIFRoZSBzYW1lIGxpc3QgYXMgdGhlIG9yaWdpbmFsbHkgcHJvdmlkZWQgYnV0IHByb2Nlc3NlZCBmb3IgYSBiZXR0ZXIgdGV4dCBzZWFyY2guXHJcbiAgICAgKiBJdCB3aWxsIGJlIHVzZWQgdG8gcGVyZm9ybSB0aGUgc2VhcmNoLCBidXQgbm90IHNob3duIHRvIHRoZSB1c2VyLlxyXG4gICAgICovXHJcbiAgICBwcml2YXRlIG9yaWdpbmFsT3B0aW9uc0Z1bGxUZXh0U2VhcmNoOnN0cmluZ1tdID0gW107XHJcbiAgICAgICBcclxuICAgIFxyXG4gICAgLyoqXHJcbiAgICAgKiBTdG9yZXMgdGhlIGluZGV4IGZvciB0aGUgZWxlbWVudCB0aGF0J3MgYmVlbiBzZWxlY3RlZCBieSB0aGUgdXNlclxyXG4gICAgICovXHJcbiAgICBzZWxlY3RlZEl0ZW1JbmRleCA9IC0xO1xyXG4gICAgXHJcblxyXG4gICAgY29uc3RydWN0b3IocHVibGljIGRpYWxvZ1JlZjogTWF0RGlhbG9nUmVmPERpYWxvZ09wdGlvbnNCYXNlQ29tcG9uZW50PixcclxuICAgICAgICAgICAgICAgIHB1YmxpYyBicm93c2VyU2VydmljZTogQnJvd3NlclNlcnZpY2UsXHJcbiAgICAgICAgICAgICAgICBASW5qZWN0KE1BVF9ESUFMT0dfREFUQSkgcHVibGljIGRhdGE6IGFueSkge1xyXG5cclxuICAgICAgICBzdXBlcigpO1xyXG5cclxuICAgICAgICBpZiAoZGF0YS50ZXh0cy5sZW5ndGggPCAxKSB7XHJcblxyXG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0RpYWxvZ1NpbmdsZVNlbGVjdGlvbkxpc3RDb21wb25lbnQgZXhwZWN0cyA0IHRleHRzOiBUaGUgdGl0bGUsIHRoZSBkZXNjcmlwdGlvbiAob3B0aW9uYWwpLCB0aGUgZmlsdGVyIGlucHV0IHRpdGxlIChvcHRpb25hbCksIGFuZCB0aGUgc3VibWl0IGJ1dHRvbiBjYXB0aW9uJyk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIFxyXG4gICAgICAgIGlmIChkYXRhLm9wdGlvbnMubGVuZ3RoIDwgMSkge1xyXG5cclxuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdEaWFsb2dTaW5nbGVTZWxlY3Rpb25MaXN0Q29tcG9uZW50IGV4cGVjdHMgb25lIG9yIG1vcmUgb3B0aW9ucycpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBcclxuICAgICAgICB0aGlzLm9yaWdpbmFsT3B0aW9ucyA9IGRhdGEub3B0aW9ucztcclxuICAgICAgICBcclxuICAgICAgICBmb3IobGV0IG9wdGlvbiBvZiB0aGlzLm9yaWdpbmFsT3B0aW9ucyl7XHJcbiAgICAgICAgICAgIFxyXG4gICAgICAgICAgICB0aGlzLmZpbHRlcmVkT3B0aW9ucy5wdXNoKG9wdGlvbik7XHJcbiAgICAgICAgICAgIHRoaXMub3JpZ2luYWxPcHRpb25zRnVsbFRleHRTZWFyY2gucHVzaChTdHJpbmdVdGlscy5mb3JtYXRGb3JGdWxsVGV4dFNlYXJjaChvcHRpb24pKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICBcclxuICAgIFxyXG4gICAgLyoqXHJcbiAgICAgKiBNZXRob2QgdG8gY2FsY3VsYXRlIHRoZSBtYXggcG9zc2libGUgaGVpZ2h0IHRoYXQgdGhlIGxpc3QgaXRlbXMgY29udGFpbmVyIGlzIGFsbG93ZWQgdG8gaGF2ZVxyXG4gICAgICovXHJcbiAgICBnZXRMaXN0SXRlbXNDb250YWluZXJNYXhoZWlnaHQoKXtcclxuICAgICAgICBcclxuICAgICAgICByZXR1cm4gKHRoaXMuYnJvd3NlclNlcnZpY2UuZ2V0V2luZG93SGVpZ2h0KCkgKiAwLjYpICsgJ3B4JztcclxuICAgIH1cclxuXHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBXaGVuIHRoZSB1c2VyIHR5cGVzIGEgdmFsdWUgb24gdGhlIGlucHV0IGVsZW1lbnQgdG8gZmlsdGVyIHRoZSBsaXN0LCB0aGlzIG1ldGhvZCB3aWxsIHBlcmZvcm1cclxuICAgICAqIHRoYXQgZmlsdGVyaW5nIGFuZCByZWZyZXNoIHRoZSBsaXN0XHJcbiAgICAgKi9cclxuICAgIG9uU2VhcmNoQ2hhbmdlKGlucHV0OkhUTUxJbnB1dEVsZW1lbnQpe1xyXG5cclxuICAgICAgICB0aGlzLnNlbGVjdGVkSXRlbUluZGV4ID0gLTE7XHJcbiAgICAgICBcclxuICAgICAgICBsZXQgaW5wdXRWYWx1ZSA9IFN0cmluZ1V0aWxzLmZvcm1hdEZvckZ1bGxUZXh0U2VhcmNoKGlucHV0LnZhbHVlKTtcclxuXHJcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLm9yaWdpbmFsT3B0aW9uc0Z1bGxUZXh0U2VhcmNoLmxlbmd0aDsgaSsrKXtcclxuXHJcbiAgICAgICAgICAgIGlmKGlucHV0VmFsdWUgPT09ICcnIHx8XHJcbiAgICAgICAgICAgICAgIHRoaXMub3JpZ2luYWxPcHRpb25zRnVsbFRleHRTZWFyY2hbaV0uaW5kZXhPZihpbnB1dFZhbHVlKSA+PSAwKXtcclxuXHJcbiAgICAgICAgICAgICAgICB0aGlzLmZpbHRlcmVkT3B0aW9uc1tpXSA9IHRoaXMub3JpZ2luYWxPcHRpb25zW2ldO1xyXG5cclxuICAgICAgICAgICAgfWVsc2V7XHJcblxyXG4gICAgICAgICAgICAgICAgdGhpcy5maWx0ZXJlZE9wdGlvbnNbaV0gPSAnJztcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIFxyXG4gICAgLyoqXHJcbiAgICAgKiBUaGlzIG1ldGhvZCBpcyB1c2VkIHRvIGdyZWF0bHkgaW1wcm92ZSBuZ0ZvciBwZXJmb3JtYW5jZSB3aXRoIGFycmF5cyBvZiBwcmltaXRpdmUgdmFsdWVzLiBJdCB0ZWxscyB0aGUgcmVmcmVzaFxyXG4gICAgICogZnVuY3Rpb24gdG8gd29yayBieSBpbmRleCBpbnN0ZWFkIG9mIGJ5IHZhbHVlLiBUaGUgY2hhbmdlIGluIHBlcmZvcm1hbmNlIHdoZW4gcmVmcmVzaGluZyB0aGUgbGlzdCBpcyBtYXNzaXZlLiBcclxuICAgICAqL1xyXG4gICAgdHJhY2tCeUZuID0gKGluZGV4OiBudW1iZXIsIF92YWx1ZTogc3RyaW5nKSA9PiBpbmRleDtcclxufVxyXG4iLCI8aDM+XHJcbiAgICB7e2RhdGEudGV4dHNbMF19fVxyXG48L2gzPlxyXG5cclxuPHAgKm5nSWY9XCJkYXRhLnRleHRzLmxlbmd0aCA+IDEgJmFtcDsmYW1wOyAhc3RyaW5nVXRpbHMuaXNFbXB0eShkYXRhLnRleHRzWzFdKVwiPlxyXG4gICAge3tkYXRhLnRleHRzWzFdfX1cclxuPC9wPlxyXG5cclxuPG1hdC1mb3JtLWZpZWxkICpuZ0lmPVwiZGF0YS50ZXh0cy5sZW5ndGggPiAyICZhbXA7JmFtcDsgIXN0cmluZ1V0aWxzLmlzRW1wdHkoZGF0YS50ZXh0c1syXSlcIlxyXG4gICAgY2xhc3M9XCJzZWFyY2hJdGVtSW5wdXRDb250YWluZXJcIj5cclxuICAgIFxyXG4gICAgPGlucHV0IG1hdElucHV0IGF1dG9Gb2N1c09uRGlzcGxheVxyXG4gICAgICAgIHBsYWNlaG9sZGVyPVwie3tkYXRhLnRleHRzWzJdfX1cIlxyXG4gICAgICAgIChpbnB1dCk9XCJvblNlYXJjaENoYW5nZSgkZXZlbnQudGFyZ2V0KVwiPlxyXG4gICAgICAgIFxyXG48L21hdC1mb3JtLWZpZWxkPlxyXG5cclxuPGRpdiBjbGFzcz1cImxpc3RJdGVtc0NvbnRhaW5lclwiXHJcbiAgICBbc3R5bGUubWF4LWhlaWdodF09XCJnZXRMaXN0SXRlbXNDb250YWluZXJNYXhoZWlnaHQoKVwiPlxyXG5cclxuICAgIDxkaXYgY2xhc3M9XCJsaXN0SXRlbUNvbnRhaW5lclwiXHJcbiAgICAgICAgW3N0eWxlLmJhY2tncm91bmQtY29sb3JdPVwic2VsZWN0ZWRJdGVtSW5kZXggPT09IGkgPyAnIzkwZDFmZmFkJyA6IChpICUgMiA9PT0gMCA/ICdpbml0aWFsJyA6ICcjMDAwMDAwMDknKVwiXHJcbiAgICAgICAgKm5nRm9yPVwibGV0IGl0ZW0gb2YgZmlsdGVyZWRPcHRpb25zOyBsZXQgaSA9IGluZGV4OyB0cmFja0J5OiB0cmFja0J5Rm5cIlxyXG4gICAgICAgIChjbGljayk9XCJkYXRhLnRleHRzLmxlbmd0aCA8IDQgPyBkaWFsb2dSZWYuY2xvc2UoaSkgOiBzZWxlY3RlZEl0ZW1JbmRleCA9IGlcIj5cclxuICAgIFxyXG4gICAgICAgIDxwICpuZ0lmPVwiaXRlbSAhPT0gJydcIj5cclxuICAgICAgICAgICAge3tpdGVtfX1cclxuICAgICAgICA8L3A+XHJcbiAgICBcclxuICAgIDwvZGl2PlxyXG5cclxuPC9kaXY+XHJcblxyXG48YnV0dG9uIG1hdC1yYWlzZWQtYnV0dG9uIGNvbG9yPVwicHJpbWFyeVwiXHJcbiAgICBbZGlzYWJsZWRdPVwic2VsZWN0ZWRJdGVtSW5kZXggPCAwXCJcclxuICAgIChjbGljayk9XCJkaWFsb2dSZWYuY2xvc2Uoc2VsZWN0ZWRJdGVtSW5kZXgpXCJcclxuICAgICpuZ0lmPVwiZGF0YS50ZXh0cy5sZW5ndGggPiAzXCI+XHJcblxyXG4gICAge3tkYXRhLnRleHRzWzNdfX1cclxuICAgIFxyXG48L2J1dHRvbj4iXX0=
112
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlhbG9nLXNpbmdsZS1zZWxlY3Rpb24tbGlzdC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90dXJib2d1aS1hbmd1bGFyL3NyYy9tYWluL3ZpZXcvY29tcG9uZW50cy9kaWFsb2ctc2luZ2xlLXNlbGVjdGlvbi1saXN0L2RpYWxvZy1zaW5nbGUtc2VsZWN0aW9uLWxpc3QuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdHVyYm9ndWktYW5ndWxhci9zcmMvbWFpbi92aWV3L2NvbXBvbmVudHMvZGlhbG9nLXNpbmdsZS1zZWxlY3Rpb24tbGlzdC9kaWFsb2ctc2luZ2xlLXNlbGVjdGlvbi1saXN0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7O0dBT0c7QUFFSCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNsRCxPQUFPLEVBQWdCLGVBQWUsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ3pFLE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLHNEQUFzRCxDQUFDO0FBRWxHLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQzs7Ozs7Ozs7O0FBRzlDOzs7Ozs7Ozs7OztHQVdHO0FBUUgsTUFBTSxPQUFPLGtDQUFtQyxTQUFRLDBCQUEwQjtJQW1DOUUsWUFBbUIsU0FBbUQsRUFDbkQsY0FBOEIsRUFDTCxJQUFTO1FBRWpELEtBQUssRUFBRSxDQUFDO1FBSk8sY0FBUyxHQUFULFNBQVMsQ0FBMEM7UUFDbkQsbUJBQWMsR0FBZCxjQUFjLENBQWdCO1FBQ0wsU0FBSSxHQUFKLElBQUksQ0FBSztRQWxDckQ7O1dBRUc7UUFDSCxnQkFBVyxHQUFHLFdBQVcsQ0FBQztRQUUxQjs7O1dBR0c7UUFDSCxvQkFBZSxHQUFZLEVBQUUsQ0FBQztRQUc5Qjs7O1dBR0c7UUFDSyxvQkFBZSxHQUFZLEVBQUUsQ0FBQztRQUd0Qzs7O1dBR0c7UUFDSyxrQ0FBNkIsR0FBWSxFQUFFLENBQUM7UUFHcEQ7O1dBRUc7UUFDSCxzQkFBaUIsR0FBRyxDQUFDLENBQUMsQ0FBQztRQThEdkI7OztXQUdHO1FBQ0gsY0FBUyxHQUFHLENBQUMsS0FBYSxFQUFFLE1BQWMsRUFBRSxFQUFFLENBQUMsS0FBSyxDQUFDO1FBekRqRCxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRTtZQUV2QixNQUFNLElBQUksS0FBSyxDQUFDLDZKQUE2SixDQUFDLENBQUM7U0FDbEw7UUFFRCxJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRTtZQUV6QixNQUFNLElBQUksS0FBSyxDQUFDLGdFQUFnRSxDQUFDLENBQUM7U0FDckY7UUFFRCxJQUFJLENBQUMsZUFBZSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUM7UUFFcEMsS0FBSSxJQUFJLE1BQU0sSUFBSSxJQUFJLENBQUMsZUFBZSxFQUFDO1lBRW5DLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1lBQ2xDLElBQUksQ0FBQyw2QkFBNkIsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLHVCQUF1QixDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7U0FDeEY7SUFDTCxDQUFDO0lBR0Q7O09BRUc7SUFDSCw4QkFBOEI7UUFFMUIsT0FBTyxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsZUFBZSxFQUFFLEdBQUcsR0FBRyxDQUFDLEdBQUcsSUFBSSxDQUFDO0lBQ2hFLENBQUM7SUFHRDs7O09BR0c7SUFDSCxjQUFjLENBQUMsS0FBc0I7UUFFakMsSUFBSSxDQUFDLGlCQUFpQixHQUFHLENBQUMsQ0FBQyxDQUFDO1FBRTVCLElBQUksVUFBVSxHQUFHLFdBQVcsQ0FBQyx1QkFBdUIsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7UUFFbEUsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLElBQUksQ0FBQyw2QkFBNkIsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUM7WUFFL0QsSUFBRyxVQUFVLEtBQUssRUFBRTtnQkFDakIsSUFBSSxDQUFDLDZCQUE2QixDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLEVBQUM7Z0JBRTlELElBQUksQ0FBQyxlQUFlLENBQUMsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxDQUFDLENBQUMsQ0FBQzthQUVyRDtpQkFBSTtnQkFFRCxJQUFJLENBQUMsZUFBZSxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQzthQUNoQztTQUNKO0lBQ0wsQ0FBQzsrR0E1RlEsa0NBQWtDLDRFQXFDdkIsZUFBZTttR0FyQzFCLGtDQUFrQyw4RkNuQy9DLGt4Q0F3Q1M7OzRGRExJLGtDQUFrQztrQkFQOUMsU0FBUzsrQkFDRSxpQ0FBaUM7OzBCQTJDNUIsTUFBTTsyQkFBQyxlQUFlIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXHJcbiAqIFR1cmJvR1VJIGlzIEEgbGlicmFyeSB0aGF0IGhlbHBzIHdpdGggdGhlIG1vc3QgY29tbW9uIGFuZCBnZW5lcmljIFVJIGVsZW1lbnRzIGFuZCBmdW5jdGlvbmFsaXRpZXNcclxuICpcclxuICogV2Vic2l0ZSA6IC0+IGh0dHA6Ly93d3cudHVyYm9ndWkub3JnXHJcbiAqIExpY2Vuc2UgOiAtPiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wLiBZb3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXHJcbiAqIExpY2Vuc2UgVXJsIDogLT4gaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXHJcbiAqIENvcHlSaWdodCA6IC0+IENvcHlyaWdodCAyMDE4IEVkZXJ0b25lIEFkdmFuZGVkIFNvbHV0aW9ucy4gaHR0cHM6Ly93d3cuZWRlcnRvbmUuY29tXHJcbiAqL1xyXG5cclxuaW1wb3J0IHsgQ29tcG9uZW50LCBJbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgTWF0RGlhbG9nUmVmLCBNQVRfRElBTE9HX0RBVEEgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kaWFsb2cnO1xyXG5pbXBvcnQgeyBEaWFsb2dPcHRpb25zQmFzZUNvbXBvbmVudCB9IGZyb20gJy4uL2RpYWxvZy1vcHRpb25zLWJhc2UvZGlhbG9nLW9wdGlvbnMtYmFzZS5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBCcm93c2VyU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL2NvbnRyb2xsZXIvYnJvd3Nlci5zZXJ2aWNlJztcclxuaW1wb3J0IHsgU3RyaW5nVXRpbHMgfSBmcm9tICd0dXJib2NvbW1vbnMtdHMnO1xyXG5cclxuXHJcbi8qKlxyXG4gKiBBIGRpYWxvZyBjb21wb25lbnQgd2hpY2ggYWxsb3dzIHVzIHRvIHNlbGVjdCBvbmUgc2luZ2xlIGl0ZW0gZnJvbSBhIGxpc3QuIFRoZSBlbGVtZW50cyBvbiB0aGF0IGxpc3QgYXJlIGRpc3BsYXllZCBvbiBhIHRhYmxlXHJcbiAqIHdoaWNoIG1heSBzaG93IGEgc2Nyb2xsIGlmIG5lY2Vzc2FyeSB3aGVuIHRoZXJlIGFyZSBtYW55IGVsZW1lbnRzIG9uIHRoZSBsaXN0LlxyXG4gKiBcclxuICogSXQgYWxzbyBhbGxvd3MgdXMgdG8gZmlsdGVyIGluc2lkZSB0aGUgbGlzdCB3aXRoIGEgY3VzdG9tIHRleHQgdGhhdCB3ZSBjYW4gdHlwZSBpbnRvIGEgc2VhcmNoIGlucHV0LCB3aGljaCBpcyBvcHRpb25hbC5cclxuICpcclxuICogdGV4dHMgcGFyYW1ldGVyIG11c3QgY29udGFpbiB0aGUgdGl0bGUsIHRoZSBkZXNjcmlwdGlvbiAob3B0aW9uYWwpLCB0aGUgZmlsdGVyIGlucHV0IHRpdGxlIChvcHRpb25hbCksIGFuZCB0aGUgc3VibWl0IGJ1dHRvbiBjYXB0aW9uLlxyXG4gKiBJZiB0aGF0IGNhcHRpb24gaXMgbm90IHByb3ZpZGVkLCB0aGUgc2VsZWN0aW9uIHdpbGwgYmUgYXV0b21hdGljYWxseSBwZXJmb3JtZWQgb25jZSB1c2VyIGNsaWNrcyBvbiBhbiBlbGVtZW50IG9uIHRoZSBsaXN0LiBPdGhlcndpc2UsIFxyXG4gKiB0aGUgZWxlbWVudCB3aWxsIGJlIHNlbGVjdGVkIG9uIHRoZSBsaXN0IGFuZCB0aGUgc2VsZWN0aW9uIHdpbGwgYmUgcGVyZm9ybWVkIG9uY2UgdGhlIHVzZXIgY2xpY2tzIG9uIHRoZSBzdWJtaXQgYnV0dG9uLlxyXG4gKlxyXG4gKiBvcHRpb25zIHBhcmFtZXRlciBtdXN0IGNvbnRhaW4gdGhlIGxpc3Qgb2YgZWxlbWVudHMgdGhhdCB3aWxsIGJlIGRpc3BsYXllZCB0byB0aGUgdXNlciAgXHJcbiAqL1xyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ3RnLWRpYWxvZy1zaW5nbGUtc2VsZWN0aW9uLWxpc3QnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9kaWFsb2ctc2luZ2xlLXNlbGVjdGlvbi1saXN0LmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9kaWFsb2ctc2luZ2xlLXNlbGVjdGlvbi1saXN0LmNvbXBvbmVudC5zY3NzJ11cclxufSlcclxuXHJcblxyXG5leHBvcnQgY2xhc3MgRGlhbG9nU2luZ2xlU2VsZWN0aW9uTGlzdENvbXBvbmVudCBleHRlbmRzIERpYWxvZ09wdGlvbnNCYXNlQ29tcG9uZW50IHtcclxuICAgIFxyXG4gICAgXHJcbiAgICAvKipcclxuICAgICAqIERlY2xhcmUgYSByZWZlcmVuY2UgdG8gdGhlIHN0cmluZyB1dGlscyBjbGFzcyBzbyBpdCBjYW4gYmUgdXNlZCBvbiB0aGUgaHRtbCBwYXJ0XHJcbiAgICAgKi9cclxuICAgIHN0cmluZ1V0aWxzID0gU3RyaW5nVXRpbHM7XHJcbiAgICBcclxuICAgIC8qKiBcclxuICAgICAqIENvbnRhaW5zIHRoZSBsaXN0IG9mIGVsZW1lbnRzIHRoYXQgd2lsbCBiZSBkaXJlY3RseSBzaG93biB0byB0aGUgdXNlciBhdCB0aGUgY29tcG9uZW50IGxpc3QuXHJcbiAgICAgKiBJdCBtYXkgYmUgZmlsdGVyZWQgb3Igbm90IGRlcGVuZGluZyBvbiB0aGlzIGNvbXBvbmVudCBzZXR1cCBhbmQgdGhlIHVzZXIgaW5wdXRcclxuICAgICAqL1xyXG4gICAgZmlsdGVyZWRPcHRpb25zOnN0cmluZ1tdID0gW107XHJcbiAgICBcclxuICAgIFxyXG4gICAgLyoqXHJcbiAgICAgKiBDb250YWlucyB0aGUgb3JpZ2luYWwgbGlzdCBvZiBlbGVtZW50cyB0aGF0IGFyZSBwcm92aWRlZCB0byBiZSBsaXN0ZWQgb24gdGhpcyBjb21wb25lbnQgYmVmb3JlXHJcbiAgICAgKiBiZWluZyBwb3NzaWJseSBmaWx0ZXJlZC4gSXQgaXMgb25seSB1c2VkIGFzIGEgYmFja3VwLCBub3Qgc2hvd24gdG8gdGhlIHVzZXJcclxuICAgICAqL1xyXG4gICAgcHJpdmF0ZSBvcmlnaW5hbE9wdGlvbnM6c3RyaW5nW10gPSBbXTtcclxuICAgIFxyXG4gICAgXHJcbiAgICAvKipcclxuICAgICAqIFRoZSBzYW1lIGxpc3QgYXMgdGhlIG9yaWdpbmFsbHkgcHJvdmlkZWQgYnV0IHByb2Nlc3NlZCBmb3IgYSBiZXR0ZXIgdGV4dCBzZWFyY2guXHJcbiAgICAgKiBJdCB3aWxsIGJlIHVzZWQgdG8gcGVyZm9ybSB0aGUgc2VhcmNoLCBidXQgbm90IHNob3duIHRvIHRoZSB1c2VyLlxyXG4gICAgICovXHJcbiAgICBwcml2YXRlIG9yaWdpbmFsT3B0aW9uc0Z1bGxUZXh0U2VhcmNoOnN0cmluZ1tdID0gW107XHJcbiAgICAgICBcclxuICAgIFxyXG4gICAgLyoqXHJcbiAgICAgKiBTdG9yZXMgdGhlIGluZGV4IGZvciB0aGUgZWxlbWVudCB0aGF0J3MgYmVlbiBzZWxlY3RlZCBieSB0aGUgdXNlclxyXG4gICAgICovXHJcbiAgICBzZWxlY3RlZEl0ZW1JbmRleCA9IC0xO1xyXG4gICAgXHJcblxyXG4gICAgY29uc3RydWN0b3IocHVibGljIGRpYWxvZ1JlZjogTWF0RGlhbG9nUmVmPERpYWxvZ09wdGlvbnNCYXNlQ29tcG9uZW50PixcclxuICAgICAgICAgICAgICAgIHB1YmxpYyBicm93c2VyU2VydmljZTogQnJvd3NlclNlcnZpY2UsXHJcbiAgICAgICAgICAgICAgICBASW5qZWN0KE1BVF9ESUFMT0dfREFUQSkgcHVibGljIGRhdGE6IGFueSkge1xyXG5cclxuICAgICAgICBzdXBlcigpO1xyXG5cclxuICAgICAgICBpZiAoZGF0YS50ZXh0cy5sZW5ndGggPCAxKSB7XHJcblxyXG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0RpYWxvZ1NpbmdsZVNlbGVjdGlvbkxpc3RDb21wb25lbnQgZXhwZWN0cyA0IHRleHRzOiBUaGUgdGl0bGUsIHRoZSBkZXNjcmlwdGlvbiAob3B0aW9uYWwpLCB0aGUgZmlsdGVyIGlucHV0IHRpdGxlIChvcHRpb25hbCksIGFuZCB0aGUgc3VibWl0IGJ1dHRvbiBjYXB0aW9uJyk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIFxyXG4gICAgICAgIGlmIChkYXRhLm9wdGlvbnMubGVuZ3RoIDwgMSkge1xyXG5cclxuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdEaWFsb2dTaW5nbGVTZWxlY3Rpb25MaXN0Q29tcG9uZW50IGV4cGVjdHMgb25lIG9yIG1vcmUgb3B0aW9ucycpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBcclxuICAgICAgICB0aGlzLm9yaWdpbmFsT3B0aW9ucyA9IGRhdGEub3B0aW9ucztcclxuICAgICAgICBcclxuICAgICAgICBmb3IobGV0IG9wdGlvbiBvZiB0aGlzLm9yaWdpbmFsT3B0aW9ucyl7XHJcbiAgICAgICAgICAgIFxyXG4gICAgICAgICAgICB0aGlzLmZpbHRlcmVkT3B0aW9ucy5wdXNoKG9wdGlvbik7XHJcbiAgICAgICAgICAgIHRoaXMub3JpZ2luYWxPcHRpb25zRnVsbFRleHRTZWFyY2gucHVzaChTdHJpbmdVdGlscy5mb3JtYXRGb3JGdWxsVGV4dFNlYXJjaChvcHRpb24pKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICBcclxuICAgIFxyXG4gICAgLyoqXHJcbiAgICAgKiBNZXRob2QgdG8gY2FsY3VsYXRlIHRoZSBtYXggcG9zc2libGUgaGVpZ2h0IHRoYXQgdGhlIGxpc3QgaXRlbXMgY29udGFpbmVyIGlzIGFsbG93ZWQgdG8gaGF2ZVxyXG4gICAgICovXHJcbiAgICBnZXRMaXN0SXRlbXNDb250YWluZXJNYXhoZWlnaHQoKXtcclxuICAgICAgICBcclxuICAgICAgICByZXR1cm4gKHRoaXMuYnJvd3NlclNlcnZpY2UuZ2V0V2luZG93SGVpZ2h0KCkgKiAwLjYpICsgJ3B4JztcclxuICAgIH1cclxuXHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBXaGVuIHRoZSB1c2VyIHR5cGVzIGEgdmFsdWUgb24gdGhlIGlucHV0IGVsZW1lbnQgdG8gZmlsdGVyIHRoZSBsaXN0LCB0aGlzIG1ldGhvZCB3aWxsIHBlcmZvcm1cclxuICAgICAqIHRoYXQgZmlsdGVyaW5nIGFuZCByZWZyZXNoIHRoZSBsaXN0XHJcbiAgICAgKi9cclxuICAgIG9uU2VhcmNoQ2hhbmdlKGlucHV0OkhUTUxJbnB1dEVsZW1lbnQpe1xyXG5cclxuICAgICAgICB0aGlzLnNlbGVjdGVkSXRlbUluZGV4ID0gLTE7XHJcbiAgICAgICBcclxuICAgICAgICBsZXQgaW5wdXRWYWx1ZSA9IFN0cmluZ1V0aWxzLmZvcm1hdEZvckZ1bGxUZXh0U2VhcmNoKGlucHV0LnZhbHVlKTtcclxuXHJcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLm9yaWdpbmFsT3B0aW9uc0Z1bGxUZXh0U2VhcmNoLmxlbmd0aDsgaSsrKXtcclxuXHJcbiAgICAgICAgICAgIGlmKGlucHV0VmFsdWUgPT09ICcnIHx8XHJcbiAgICAgICAgICAgICAgIHRoaXMub3JpZ2luYWxPcHRpb25zRnVsbFRleHRTZWFyY2hbaV0uaW5kZXhPZihpbnB1dFZhbHVlKSA+PSAwKXtcclxuXHJcbiAgICAgICAgICAgICAgICB0aGlzLmZpbHRlcmVkT3B0aW9uc1tpXSA9IHRoaXMub3JpZ2luYWxPcHRpb25zW2ldO1xyXG5cclxuICAgICAgICAgICAgfWVsc2V7XHJcblxyXG4gICAgICAgICAgICAgICAgdGhpcy5maWx0ZXJlZE9wdGlvbnNbaV0gPSAnJztcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIFxyXG4gICAgLyoqXHJcbiAgICAgKiBUaGlzIG1ldGhvZCBpcyB1c2VkIHRvIGdyZWF0bHkgaW1wcm92ZSBuZ0ZvciBwZXJmb3JtYW5jZSB3aXRoIGFycmF5cyBvZiBwcmltaXRpdmUgdmFsdWVzLiBJdCB0ZWxscyB0aGUgcmVmcmVzaFxyXG4gICAgICogZnVuY3Rpb24gdG8gd29yayBieSBpbmRleCBpbnN0ZWFkIG9mIGJ5IHZhbHVlLiBUaGUgY2hhbmdlIGluIHBlcmZvcm1hbmNlIHdoZW4gcmVmcmVzaGluZyB0aGUgbGlzdCBpcyBtYXNzaXZlLiBcclxuICAgICAqL1xyXG4gICAgdHJhY2tCeUZuID0gKGluZGV4OiBudW1iZXIsIF92YWx1ZTogc3RyaW5nKSA9PiBpbmRleDtcclxufVxyXG4iLCI8aDM+XHJcbiAgICB7e2RhdGEudGV4dHNbMF19fVxyXG48L2gzPlxyXG5cclxuPHAgKm5nSWY9XCJkYXRhLnRleHRzLmxlbmd0aCA+IDEgJmFtcDsmYW1wOyAhc3RyaW5nVXRpbHMuaXNFbXB0eShkYXRhLnRleHRzWzFdKVwiPlxyXG4gICAge3tkYXRhLnRleHRzWzFdfX1cclxuPC9wPlxyXG5cclxuPG1hdC1mb3JtLWZpZWxkICpuZ0lmPVwiZGF0YS50ZXh0cy5sZW5ndGggPiAyICZhbXA7JmFtcDsgIXN0cmluZ1V0aWxzLmlzRW1wdHkoZGF0YS50ZXh0c1syXSlcIlxyXG4gICAgY2xhc3M9XCJzZWFyY2hJdGVtSW5wdXRDb250YWluZXJcIj5cclxuICAgIFxyXG4gICAgPG1hdC1sYWJlbD57e2RhdGEudGV4dHNbMl19fTwvbWF0LWxhYmVsPlxyXG4gICAgPGlucHV0IG1hdElucHV0IGF1dG9Gb2N1c09uRGlzcGxheVxyXG4gICAgICAgIChpbnB1dCk9XCJvblNlYXJjaENoYW5nZSgkZXZlbnQudGFyZ2V0KVwiPlxyXG4gICAgICAgIFxyXG48L21hdC1mb3JtLWZpZWxkPlxyXG5cclxuPGRpdiBjbGFzcz1cImxpc3RJdGVtc0NvbnRhaW5lclwiXHJcbiAgICBbc3R5bGUubWF4LWhlaWdodF09XCJnZXRMaXN0SXRlbXNDb250YWluZXJNYXhoZWlnaHQoKVwiPlxyXG5cclxuICAgIDxkaXYgY2xhc3M9XCJsaXN0SXRlbUNvbnRhaW5lclwiXHJcbiAgICAgICAgW3N0eWxlLmJhY2tncm91bmQtY29sb3JdPVwic2VsZWN0ZWRJdGVtSW5kZXggPT09IGkgPyAnIzkwZDFmZmFkJyA6IChpICUgMiA9PT0gMCA/ICdpbml0aWFsJyA6ICcjMDAwMDAwMDknKVwiXHJcbiAgICAgICAgKm5nRm9yPVwibGV0IGl0ZW0gb2YgZmlsdGVyZWRPcHRpb25zOyBsZXQgaSA9IGluZGV4OyB0cmFja0J5OiB0cmFja0J5Rm5cIlxyXG4gICAgICAgIChjbGljayk9XCJkYXRhLnRleHRzLmxlbmd0aCA8IDQgPyBkaWFsb2dSZWYuY2xvc2UoaSkgOiBzZWxlY3RlZEl0ZW1JbmRleCA9IGlcIj5cclxuICAgIFxyXG4gICAgICAgIDxwICpuZ0lmPVwiaXRlbSAhPT0gJydcIj5cclxuICAgICAgICAgICAge3tpdGVtfX1cclxuICAgICAgICA8L3A+XHJcbiAgICBcclxuICAgIDwvZGl2PlxyXG5cclxuPC9kaXY+XHJcblxyXG48YnV0dG9uIG1hdC1yYWlzZWQtYnV0dG9uIGNvbG9yPVwicHJpbWFyeVwiXHJcbiAgICBbZGlzYWJsZWRdPVwic2VsZWN0ZWRJdGVtSW5kZXggPCAwXCJcclxuICAgIChjbGljayk9XCJkaWFsb2dSZWYuY2xvc2Uoc2VsZWN0ZWRJdGVtSW5kZXgpXCJcclxuICAgICpuZ0lmPVwiZGF0YS50ZXh0cy5sZW5ndGggPiAzXCI+XHJcblxyXG4gICAge3tkYXRhLnRleHRzWzNdfX1cclxuICAgIFxyXG48L2J1dHRvbj4iXX0=
@@ -1401,11 +1401,11 @@ class DialogSingleSelectionListComponent extends DialogOptionsBaseComponent {
1401
1401
  }
1402
1402
  }
1403
1403
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: DialogSingleSelectionListComponent, deps: [{ token: i1$1.MatDialogRef }, { token: BrowserService }, { token: MAT_DIALOG_DATA }], target: i0.ɵɵFactoryTarget.Component }); }
1404
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: DialogSingleSelectionListComponent, selector: "tg-dialog-single-selection-list", usesInheritance: true, ngImport: i0, template: "<h3>\r\n {{data.texts[0]}}\r\n</h3>\r\n\r\n<p *ngIf=\"data.texts.length > 1 &amp;&amp; !stringUtils.isEmpty(data.texts[1])\">\r\n {{data.texts[1]}}\r\n</p>\r\n\r\n<mat-form-field *ngIf=\"data.texts.length > 2 &amp;&amp; !stringUtils.isEmpty(data.texts[2])\"\r\n class=\"searchItemInputContainer\">\r\n \r\n <input matInput autoFocusOnDisplay\r\n placeholder=\"{{data.texts[2]}}\"\r\n (input)=\"onSearchChange($event.target)\">\r\n \r\n</mat-form-field>\r\n\r\n<div class=\"listItemsContainer\"\r\n [style.max-height]=\"getListItemsContainerMaxheight()\">\r\n\r\n <div class=\"listItemContainer\"\r\n [style.background-color]=\"selectedItemIndex === i ? '#90d1ffad' : (i % 2 === 0 ? 'initial' : '#00000009')\"\r\n *ngFor=\"let item of filteredOptions; let i = index; trackBy: trackByFn\"\r\n (click)=\"data.texts.length < 4 ? dialogRef.close(i) : selectedItemIndex = i\">\r\n \r\n <p *ngIf=\"item !== ''\">\r\n {{item}}\r\n </p>\r\n \r\n </div>\r\n\r\n</div>\r\n\r\n<button mat-raised-button color=\"primary\"\r\n [disabled]=\"selectedItemIndex < 0\"\r\n (click)=\"dialogRef.close(selectedItemIndex)\"\r\n *ngIf=\"data.texts.length > 3\">\r\n\r\n {{data.texts[3]}}\r\n \r\n</button>", styles: [":host{min-height:300px}h3{margin-top:0;margin-bottom:10px}p{margin-top:0;margin-bottom:5px}.searchItemInputContainer{width:100%;margin-top:0;margin-bottom:0}.listItemsContainer{overflow-y:auto;border:1px solid rgba(0,0,0,.2);border-radius:4px;margin-bottom:5px}.listItemContainer p{line-height:36px;width:calc(100% - 12px);margin:0 0 0 6px}button{float:right}\n"], dependencies: [{ kind: "directive", type: i3$1.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "component", type: i4.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "component", type: i2.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: AutoFocusOnDisplayDirective, selector: "[autoFocusOnDisplay]" }] }); }
1404
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: DialogSingleSelectionListComponent, selector: "tg-dialog-single-selection-list", usesInheritance: true, ngImport: i0, template: "<h3>\r\n {{data.texts[0]}}\r\n</h3>\r\n\r\n<p *ngIf=\"data.texts.length > 1 &amp;&amp; !stringUtils.isEmpty(data.texts[1])\">\r\n {{data.texts[1]}}\r\n</p>\r\n\r\n<mat-form-field *ngIf=\"data.texts.length > 2 &amp;&amp; !stringUtils.isEmpty(data.texts[2])\"\r\n class=\"searchItemInputContainer\">\r\n \r\n <mat-label>{{data.texts[2]}}</mat-label>\r\n <input matInput autoFocusOnDisplay\r\n (input)=\"onSearchChange($event.target)\">\r\n \r\n</mat-form-field>\r\n\r\n<div class=\"listItemsContainer\"\r\n [style.max-height]=\"getListItemsContainerMaxheight()\">\r\n\r\n <div class=\"listItemContainer\"\r\n [style.background-color]=\"selectedItemIndex === i ? '#90d1ffad' : (i % 2 === 0 ? 'initial' : '#00000009')\"\r\n *ngFor=\"let item of filteredOptions; let i = index; trackBy: trackByFn\"\r\n (click)=\"data.texts.length < 4 ? dialogRef.close(i) : selectedItemIndex = i\">\r\n \r\n <p *ngIf=\"item !== ''\">\r\n {{item}}\r\n </p>\r\n \r\n </div>\r\n\r\n</div>\r\n\r\n<button mat-raised-button color=\"primary\"\r\n [disabled]=\"selectedItemIndex < 0\"\r\n (click)=\"dialogRef.close(selectedItemIndex)\"\r\n *ngIf=\"data.texts.length > 3\">\r\n\r\n {{data.texts[3]}}\r\n \r\n</button>", styles: [":host{min-height:300px}h3{margin-top:0;margin-bottom:10px}p{margin-top:0;margin-bottom:5px}.searchItemInputContainer{width:100%;margin-top:0;margin-bottom:0}.listItemsContainer{overflow-y:auto;border:1px solid rgba(0,0,0,.2);border-radius:4px;margin-bottom:5px}.listItemContainer p{line-height:36px;width:calc(100% - 12px);margin:0 0 0 6px}button{float:right}\n"], dependencies: [{ kind: "directive", type: i3$1.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "component", type: i4.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i4.MatLabel, selector: "mat-label" }, { kind: "component", type: i2.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: AutoFocusOnDisplayDirective, selector: "[autoFocusOnDisplay]" }] }); }
1405
1405
  }
1406
1406
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: DialogSingleSelectionListComponent, decorators: [{
1407
1407
  type: Component,
1408
- args: [{ selector: 'tg-dialog-single-selection-list', template: "<h3>\r\n {{data.texts[0]}}\r\n</h3>\r\n\r\n<p *ngIf=\"data.texts.length > 1 &amp;&amp; !stringUtils.isEmpty(data.texts[1])\">\r\n {{data.texts[1]}}\r\n</p>\r\n\r\n<mat-form-field *ngIf=\"data.texts.length > 2 &amp;&amp; !stringUtils.isEmpty(data.texts[2])\"\r\n class=\"searchItemInputContainer\">\r\n \r\n <input matInput autoFocusOnDisplay\r\n placeholder=\"{{data.texts[2]}}\"\r\n (input)=\"onSearchChange($event.target)\">\r\n \r\n</mat-form-field>\r\n\r\n<div class=\"listItemsContainer\"\r\n [style.max-height]=\"getListItemsContainerMaxheight()\">\r\n\r\n <div class=\"listItemContainer\"\r\n [style.background-color]=\"selectedItemIndex === i ? '#90d1ffad' : (i % 2 === 0 ? 'initial' : '#00000009')\"\r\n *ngFor=\"let item of filteredOptions; let i = index; trackBy: trackByFn\"\r\n (click)=\"data.texts.length < 4 ? dialogRef.close(i) : selectedItemIndex = i\">\r\n \r\n <p *ngIf=\"item !== ''\">\r\n {{item}}\r\n </p>\r\n \r\n </div>\r\n\r\n</div>\r\n\r\n<button mat-raised-button color=\"primary\"\r\n [disabled]=\"selectedItemIndex < 0\"\r\n (click)=\"dialogRef.close(selectedItemIndex)\"\r\n *ngIf=\"data.texts.length > 3\">\r\n\r\n {{data.texts[3]}}\r\n \r\n</button>", styles: [":host{min-height:300px}h3{margin-top:0;margin-bottom:10px}p{margin-top:0;margin-bottom:5px}.searchItemInputContainer{width:100%;margin-top:0;margin-bottom:0}.listItemsContainer{overflow-y:auto;border:1px solid rgba(0,0,0,.2);border-radius:4px;margin-bottom:5px}.listItemContainer p{line-height:36px;width:calc(100% - 12px);margin:0 0 0 6px}button{float:right}\n"] }]
1408
+ args: [{ selector: 'tg-dialog-single-selection-list', template: "<h3>\r\n {{data.texts[0]}}\r\n</h3>\r\n\r\n<p *ngIf=\"data.texts.length > 1 &amp;&amp; !stringUtils.isEmpty(data.texts[1])\">\r\n {{data.texts[1]}}\r\n</p>\r\n\r\n<mat-form-field *ngIf=\"data.texts.length > 2 &amp;&amp; !stringUtils.isEmpty(data.texts[2])\"\r\n class=\"searchItemInputContainer\">\r\n \r\n <mat-label>{{data.texts[2]}}</mat-label>\r\n <input matInput autoFocusOnDisplay\r\n (input)=\"onSearchChange($event.target)\">\r\n \r\n</mat-form-field>\r\n\r\n<div class=\"listItemsContainer\"\r\n [style.max-height]=\"getListItemsContainerMaxheight()\">\r\n\r\n <div class=\"listItemContainer\"\r\n [style.background-color]=\"selectedItemIndex === i ? '#90d1ffad' : (i % 2 === 0 ? 'initial' : '#00000009')\"\r\n *ngFor=\"let item of filteredOptions; let i = index; trackBy: trackByFn\"\r\n (click)=\"data.texts.length < 4 ? dialogRef.close(i) : selectedItemIndex = i\">\r\n \r\n <p *ngIf=\"item !== ''\">\r\n {{item}}\r\n </p>\r\n \r\n </div>\r\n\r\n</div>\r\n\r\n<button mat-raised-button color=\"primary\"\r\n [disabled]=\"selectedItemIndex < 0\"\r\n (click)=\"dialogRef.close(selectedItemIndex)\"\r\n *ngIf=\"data.texts.length > 3\">\r\n\r\n {{data.texts[3]}}\r\n \r\n</button>", styles: [":host{min-height:300px}h3{margin-top:0;margin-bottom:10px}p{margin-top:0;margin-bottom:5px}.searchItemInputContainer{width:100%;margin-top:0;margin-bottom:0}.listItemsContainer{overflow-y:auto;border:1px solid rgba(0,0,0,.2);border-radius:4px;margin-bottom:5px}.listItemContainer p{line-height:36px;width:calc(100% - 12px);margin:0 0 0 6px}button{float:right}\n"] }]
1409
1409
  }], ctorParameters: function () { return [{ type: i1$1.MatDialogRef }, { type: BrowserService }, { type: undefined, decorators: [{
1410
1410
  type: Inject,
1411
1411
  args: [MAT_DIALOG_DATA]
@@ -1 +1 @@
1
- {"version":3,"file":"turbogui-angular.mjs","sources":["../../../projects/turbogui-angular/src/main/view/animations/fade.animation.ts","../../../projects/turbogui-angular/src/main/view/components/busy-state-base/busy-state-base.component.ts","../../../projects/turbogui-angular/src/main/view/components/busy-state-base/busy-state-base.component.html","../../../projects/turbogui-angular/src/main/controller/dialog.service.ts","../../../projects/turbogui-angular/src/main/controller/localization.service.ts","../../../projects/turbogui-angular/src/main/view/components/dialog-base/dialog-base.component.ts","../../../projects/turbogui-angular/src/main/view/components/dialog-options-base/dialog-options-base.component.ts","../../../projects/turbogui-angular/src/main/view/components/dialog-error/dialog-error.component.ts","../../../projects/turbogui-angular/src/main/view/components/dialog-error/dialog-error.component.html","../../../projects/turbogui-angular/src/main/controller/http.service.ts","../../../projects/turbogui-angular/src/main/controller/notification.service.ts","../../../projects/turbogui-angular/src/main/controller/httpservice/HTTPServicePostRequest.ts","../../../projects/turbogui-angular/src/main/controller/user.service.ts","../../../projects/turbogui-angular/src/main/controller/views.service.ts","../../../projects/turbogui-angular/src/main/view/components/views-container/views-container.component.ts","../../../projects/turbogui-angular/src/main/view/components/views-container/views-container.component.html","../../../projects/turbogui-angular/src/main/view/components/button-base/button-base.component.ts","../../../projects/turbogui-angular/src/main/view/components/button-image/button-image.component.ts","../../../projects/turbogui-angular/src/main/view/components/button-image/button-image.component.html","../../../projects/turbogui-angular/src/main/view/components/button-container/button-container.component.ts","../../../projects/turbogui-angular/src/main/view/components/button-container/button-container.component.html","../../../projects/turbogui-angular/src/main/view/components/dialog-single-option/dialog-single-option.component.ts","../../../projects/turbogui-angular/src/main/view/components/dialog-single-option/dialog-single-option.component.html","../../../projects/turbogui-angular/src/main/view/components/dialog-two-option/dialog-two-option.component.ts","../../../projects/turbogui-angular/src/main/view/components/dialog-two-option/dialog-two-option.component.html","../../../projects/turbogui-angular/src/main/controller/browser.service.ts","../../../projects/turbogui-angular/src/main/view/directives/AutoFocusOnDisplayDirective.ts","../../../projects/turbogui-angular/src/main/view/components/dialog-single-selection-list/dialog-single-selection-list.component.ts","../../../projects/turbogui-angular/src/main/view/components/dialog-single-selection-list/dialog-single-selection-list.component.html","../../../projects/turbogui-angular/src/main/view/components/dialog-multiple-option/dialog-multiple-option.component.ts","../../../projects/turbogui-angular/src/main/view/components/dialog-multiple-option/dialog-multiple-option.component.html","../../../projects/turbogui-angular/src/main/view/directives/ElementCreatedDirective.ts","../../../projects/turbogui-angular/src/main/view/directives/ElementDestroyedDirective.ts","../../../projects/turbogui-angular/src/main/view/directives/AutoSelectTextOnFocusDirective.ts","../../../projects/turbogui-angular/src/main/model/modules/turbogui-angular.module.ts","../../../projects/turbogui-angular/src/main/controller/globalerror.service.ts","../../../projects/turbogui-angular/src/main/controller/httpservice/HTTPServiceGetRequest.ts","../../../projects/turbogui-angular/src/main/model/classes/GUINotification.ts","../../../projects/turbogui-angular/src/main/model/classes/View.ts","../../../projects/turbogui-angular/src/main/model/classes/ViewModel.ts","../../../projects/turbogui-angular/src/main/model/classes/ViewService.ts","../../../projects/turbogui-angular/src/main/managers/DelayedMethodCallManager.ts","../../../projects/turbogui-angular/src/public_api.ts","../../../projects/turbogui-angular/src/turbogui-angular.ts"],"sourcesContent":["/**\r\n * TurboGUI is A library that helps with the most common and generic UI elements and functionalities\r\n *\r\n * Website : -> http://www.turbogui.org\r\n * License : -> Licensed under the Apache License, Version 2.0. You may not use this file except in compliance with the License.\r\n * License Url : -> http://www.apache.org/licenses/LICENSE-2.0\r\n * CopyRight : -> Copyright 2018 Edertone Advanded Solutions. https://www.edertone.com\r\n */\r\n\r\nimport { Injectable } from '@angular/core';\r\nimport { trigger, animate, transition, style } from '@angular/animations';\r\n\r\n\r\n/**\r\n * Fade animations\r\n */\r\n@Injectable()\r\nexport class FadeAnimationClass {\r\n\r\n /**\r\n * Get a custom trigger to create fade animations when components are added or removed from the application\r\n *\r\n * @param triggerName The name for the trigger we want to create\r\n * @param enter The time and easing that we want to use for the enter state\r\n * @param leave The time and easing that we want to use for the leave state\r\n */\r\n static getTrigger(triggerName: string, enter = '1s ease', leave = '0s ease') {\r\n\r\n return trigger(triggerName, [\r\n transition(':enter', [style({opacity: 0}), animate(enter)]),\r\n transition(':leave', [style({opacity: 1}), animate(leave, style({opacity: 0}))])\r\n ]);\r\n }\r\n}\r\n","/**\r\n * TurboGUI is A library that helps with the most common and generic UI elements and functionalities\r\n *\r\n * Website : -> http://www.turbogui.org\r\n * License : -> Licensed under the Apache License, Version 2.0. You may not use this file except in compliance with the License.\r\n * License Url : -> http://www.apache.org/licenses/LICENSE-2.0\r\n * CopyRight : -> Copyright 2018 Edertone Advanded Solutions. https://www.edertone.com\r\n */\r\n\r\nimport { Component, HostBinding } from '@angular/core';\r\nimport { FadeAnimationClass } from '../../animations/fade.animation';\r\n\r\n\r\n/**\r\n * This component is used by turboGUI angular library to show the busy state to the user.\r\n * It is used to block all the user input and progressively shows a busy cursor to notify that the application\r\n * is waiting for something.\r\n *\r\n * We can (should) override this component with our own one to adapt its visual appearance to our application.\r\n * We can then set dialogService.busyStateComponentClass to our component class at the application start to to\r\n * override the default one.\r\n */\r\n@Component({\r\n selector: 'tg-busy-state-base',\r\n templateUrl: './busy-state-base.component.html',\r\n animations: [FadeAnimationClass.getTrigger('busyStateBaseFade', '1s ease', '400ms ease')],\r\n styleUrls: ['./busy-state-base.component.scss']\r\n})\r\n\r\n\r\nexport class BusyStateBaseComponent {\r\n\r\n\r\n /**\r\n * This is used to attach the fade animation directly to this component so it fades in and out when created and removed from the app\r\n */\r\n @HostBinding('@busyStateBaseFade') busyStateBaseFade = true;\r\n}\r\n","<div class=\"darkBg\">\r\n\r\n</div>\r\n\r\n<svg width=\"38\" height=\"38\" viewBox=\"0 0 38 38\" xmlns=\"http://www.w3.org/2000/svg\" stroke=\"#fff\">\r\n <g fill=\"none\" fill-rule=\"evenodd\">\r\n <g transform=\"translate(1 1)\" stroke-width=\"1\">\r\n <circle stroke-opacity=\".2\" cx=\"18\" cy=\"18\" r=\"18\"/>\r\n <path d=\"M36 18c0-9.94-8.06-18-18-18\">\r\n <animateTransform\r\n attributeName=\"transform\"\r\n type=\"rotate\"\r\n from=\"0 18 18\"\r\n to=\"360 18 18\"\r\n dur=\"1s\"\r\n repeatCount=\"indefinite\"/>\r\n </path>\r\n </g>\r\n </g>\r\n</svg>\r\n","/**\r\n * TurboGUI is A library that helps with the most common and generic UI elements and functionalities\r\n *\r\n * Website : -> http://www.turbogui.org\r\n * License : -> Licensed under the Apache License, Version 2.0. You may not use this file except in compliance with the License.\r\n * License Url : -> http://www.apache.org/licenses/LICENSE-2.0\r\n * CopyRight : -> Copyright 2018 Edertone Advanded Solutions. https://www.edertone.com\r\n */\r\n\r\nimport { ArrayUtils, NumericUtils } from 'turbocommons-ts';\r\nimport { Type, Injectable, ComponentFactoryResolver, Injector, ApplicationRef, Renderer2, RendererFactory2 } from '@angular/core';\r\nimport { MatDialog, MatDialogRef } from '@angular/material/dialog';\nimport { MatSnackBar, MatSnackBarConfig } from '@angular/material/snack-bar';\r\nimport { BusyStateBaseComponent } from '../view/components/busy-state-base/busy-state-base.component';\r\nimport { ComponentPortal, DomPortalOutlet } from '@angular/cdk/portal';\r\nimport { DialogOptionsBaseComponent } from '../view/components/dialog-options-base/dialog-options-base.component';\r\nimport { DialogBaseComponent } from '../view/components/dialog-base/dialog-base.component';\r\n\r\n\r\n/**\r\n * Manages the application modal and non modal floating elements\r\n */\r\n@Injectable()\r\nexport class DialogService {\r\n\r\n\r\n /**\r\n * Used to modify the busy state component that is shown by default by the addModalBusyState() method.\r\n *\r\n * @see this.addModalBusyState()\r\n */\r\n customBusyStateComponentClass: Type<BusyStateBaseComponent> = BusyStateBaseComponent;\r\n\r\n\r\n /**\r\n * Check public getter for docs\r\n */\r\n private _isEnabled = true;\r\n\r\n\r\n /**\r\n * Tells if the main application is currently showing a busy state that blocks all user interaction\r\n */\r\n private _isShowingBusyState = false;\r\n\r\n\r\n /**\r\n * A reference to the modal busy state component that is initialized only the first time it is called.\r\n *\r\n * (To append the busy state dynamically, we use the Portal concept from the angular material library)\r\n */\r\n private _componentPortal: ComponentPortal<BusyStateBaseComponent> | null = null;\r\n\r\n\r\n /**\r\n * A reference to the modal busy state container where the component will be added\r\n */\r\n private _modalBusyStateHost: DomPortalOutlet | null = null;\r\n\r\n\r\n /**\r\n * Tells if the manager is currently showing a snackbar element or not\r\n */\r\n private _isShowingSnackBar = false;\r\n\r\n\r\n /**\r\n * Contains a list of the dialogs that are currently visible to the user.\r\n * Each item in this list is a hash that is computed when dialog is created to uniquely identify it.\r\n *\r\n * Empty list means no dialogs are currently visible\r\n */\r\n private _activeDialogs: string[] = [];\r\n\r\n\r\n /**\r\n * Contains a list with all the MatDialog instances that are currently visible to the user.\r\n * The list uses the same order as the list of _activeDialogs hash values\r\n */\r\n private _activeDialogInstances: MatDialogRef<DialogBaseComponent>[] = [];\r\n\r\n\r\n /**\r\n * Used to store the initialized Renderer 2 instance that is used by this class\r\n */\r\n private readonly _renderer: Renderer2;\r\n\r\n\r\n /**\r\n * Method that is used to delete the window beforeunload event listener once not used anymore\r\n */\r\n private _windowBeforeUnloadUnListen: (() => void) | null = null;\r\n\r\n\r\n /**\r\n * Method that is used to delete the document keydown event listener once not used anymore\r\n */\r\n private _documentKeydownUnlisten: (() => void) | null = null;\r\n\r\n\r\n /**\r\n * Method that is used to delete the document mousedown event listener once not used anymore\r\n */\r\n private _documentMousedownUnlisten: (() => void) | null = null;\r\n\r\n\r\n /**\r\n * Method that is used to delete the document pointerdown event listener once not used anymore\r\n */\r\n private _documentPointerdownUnlisten: (() => void) | null = null;\r\n\r\n\r\n constructor(rendererFactory: RendererFactory2,\r\n private readonly matSnackBar: MatSnackBar,\r\n private readonly matDialog: MatDialog,\r\n private readonly injector: Injector,\r\n private readonly applicationRef: ApplicationRef,\r\n private readonly componentFactoryResolver: ComponentFactoryResolver) {\r\n\r\n this._renderer = rendererFactory.createRenderer(null, null);\r\n }\r\n\r\n\r\n /**\r\n * Tells if this dialog service is enabled or not. If dialog service is disabled, none of it's features will work\r\n * This is used to block all dialog features normally when shutting down the application\r\n *\r\n * Use with caution. When this is set to false, dialog service stops working.\r\n */\r\n set isEnabled(v: boolean) {\r\n\r\n if (v === this._isEnabled) {\r\n\r\n return;\r\n }\r\n\r\n this._isEnabled = v;\r\n }\r\n\r\n\r\n /**\r\n * Enables a warning that will be shown to the user when he/she tries to close the application.\r\n * This warning will prompt the user to continue with the exit process or cancel it.\r\n * The specific texts of this message are a generic ones and cannot be changed.\r\n *\r\n * IMPORTANT: This method must be called after the main application has been initialized in order to work,\r\n * otherwise it will do nothing.\r\n */\r\n addCloseApplicationWarning() {\r\n\r\n if (this._windowBeforeUnloadUnListen === null) {\r\n\r\n this._windowBeforeUnloadUnListen = this._renderer.listen('window', 'beforeunload',\r\n (event) => event.returnValue = true);\r\n }\r\n }\r\n\r\n\r\n /**\r\n * Remove the close application warning message if previously assigned\r\n */\r\n removeCloseApplicationWarning() {\r\n\r\n if (this._windowBeforeUnloadUnListen !== null) {\r\n\r\n this._windowBeforeUnloadUnListen();\r\n this._windowBeforeUnloadUnListen = null;\r\n }\r\n }\r\n\r\n\r\n /**\r\n * Change the application visual appearance so the user perceives that the application is\r\n * currently busy. While modal busy state is enabled, no user input is possible neither via\r\n * keyboard, mouse or touch. Use this state when performing server requests or operations that\r\n * must block the user interaction with the application.\r\n *\r\n * Note: We can modify the busy state component that is shown by this method. To do it, we must\r\n * set this.customBusyStateComponentClass property with our own custom busy state component class. (We can do it at\r\n * our main application component constructor for example). Our custom component must extend the\r\n * BusyStateBaseComponent one to add its own visual appearance.\r\n *\r\n * @see this.customBusyStateComponentClass\r\n */\r\n addModalBusyState() {\r\n\r\n if (!this._isEnabled || this._isShowingBusyState) {\r\n\r\n return;\r\n }\r\n\r\n this._disableUserInteraction();\r\n\r\n // Dynamically create the busy state component reference if this is the first time\r\n if (this._componentPortal === null) {\r\n\r\n this._componentPortal = new ComponentPortal(this.customBusyStateComponentClass);\r\n\r\n // Create a PortalHost with document.body as its anchor element\r\n this._modalBusyStateHost = new DomPortalOutlet(\r\n document.body,\r\n this.componentFactoryResolver,\r\n this.applicationRef,\r\n this.injector);\r\n }\r\n\r\n (this._modalBusyStateHost as DomPortalOutlet).attach(this._componentPortal);\r\n\r\n this._isShowingBusyState = true;\r\n }\r\n\r\n\r\n /**\r\n * Tells if the application is currently locked in a modal busy state (caused by an addModalBusyState() call)\r\n */\r\n get isShowingBusyState() {\r\n\r\n return this._isShowingBusyState;\r\n }\r\n\r\n\r\n /**\r\n * Remove the application busy state and restore it back to normal user interaction\r\n */\r\n removeModalBusyState() {\r\n\r\n if (!this._isEnabled || !this._isShowingBusyState) {\r\n\r\n return;\r\n }\r\n\r\n if (this._componentPortal !== null) {\r\n\r\n (this._modalBusyStateHost as DomPortalOutlet).detach();\r\n }\r\n\r\n this._enableUserInteraction();\r\n\r\n this._isShowingBusyState = false;\r\n }\r\n \r\n \r\n /**\r\n * TODO - adapt from TS version\r\n */\r\n addToolTip() {\r\n\r\n // TODO - adapt from TS version\r\n }\r\n\r\n\r\n /**\r\n * Show a non modal snackbar notification to the user (Only one snack-bar can ever be opened at the same time).\r\n *\r\n * Snackbars inform users of a process that an app has performed or will perform. They appear temporarily, towards the bottom or top of the screen.\r\n * They shouldn’t interrupt the user experience, and they don’t require user input to disappear.\r\n *\r\n * @param config A MatSnackBarConfig instance with the customizations we want for this snackbar\r\n * @param message The message to show on the snackbar\r\n * @param action If not empty, the text to place on the snackbar confirmation button\r\n * @param actionCallback A method to execute once the user clicks into the action button.\r\n *\r\n * @return void\r\n */\r\n addSnackBar(config: MatSnackBarConfig, message: string, action = '', actionCallback: (() => void) | null = null) {\r\n\r\n if (!this._isEnabled) {\r\n\r\n return;\r\n }\r\n\r\n if (this._isShowingSnackBar) {\r\n\r\n throw new Error('Trying to show a snackbar while another one is still visible');\r\n }\r\n\r\n this._isShowingSnackBar = true;\r\n\r\n const snackBarRef = this.matSnackBar.open(message, action === '' ? undefined : action, config);\r\n\r\n if (actionCallback !== null) {\r\n\r\n snackBarRef.onAction().subscribe(() => {\r\n\r\n actionCallback();\r\n });\r\n }\r\n }\r\n\r\n\r\n /**\r\n * Tells if the application is currently showing a snackbar or not\r\n */\r\n get isShowingSnackBar() {\r\n\r\n return this._isShowingSnackBar;\r\n }\r\n\r\n\r\n /**\r\n * Force the removal of the snack bar dialog if it exists.\r\n *\r\n * If no snackbar is currently visible, this method will do nothing\r\n */\r\n removeSnackBar() {\r\n\r\n if (!this._isEnabled || !this._isShowingSnackBar) {\r\n\r\n return;\r\n }\r\n\r\n this.matSnackBar.dismiss();\r\n\r\n this._isShowingSnackBar = false;\r\n }\r\n\r\n\r\n /**\r\n * Show a dialog with one or more options that can be used to close it. We can use any of the predefined dialog types that are bundled with\r\n * this library or extend DialogOptionsBaseComponent to create our own custom ones.\r\n *\r\n * @param width Specify the css value for the maximum width the dialog will have. As the dialog is responsive, the value will be automatically\r\n reduced if the available screen is not enough, and will reach the desired value otherwise. Note that height will be adapted to the contents\r\n of the dialog and cannot be specified here. We can set a pixels, % or any other css accepted value. For example: '400px', '50%', etc.\r\n * @param texts A list with strings containing the dialog texts, sorted by importance. When dialog has a title, this should\r\n * be placed first, subtitle second and so (Each dialog may accept different kind of texts).\r\n * @param options A list of strings that will be used as button captions for each one of the accepted dialog options\r\n * @param dialogComponentClass A class for a component that extends DialogOptionsBaseComponent, which will be the\r\n * dialog visual element that is shown to the user.\r\n * @param callback A function that will be called after the dialog is closed and will receive an object with the numeric index and value for\r\n * the option that's been selected by the user.\r\n * @param modal True (default) if selecting an option is mandatory to close the dialog, false if the dialog can be closed\r\n * by the user by clicking outside it \r\n */\r\n addDialog(width: string,\r\n texts: string[],\r\n options: string[],\r\n dialogComponentClass: Type<DialogOptionsBaseComponent>,\r\n callback: null | ((selectedOption: {index:number, value: string}) => void) = null,\r\n modal = true) {\r\n\r\n if (!this._isEnabled) {\r\n\r\n return;\r\n }\r\n\r\n // Generate a string to uniquely identify this dialog on the list of active dialogs\r\n const dialogHash = texts.join('') + options.join('') + dialogComponentClass.name;\r\n\r\n // identical dialogs won't be allowed at the same time\r\n if (this._activeDialogs.includes(dialogHash)) {\r\n\r\n return;\r\n }\r\n\r\n const dialogRef = this.matDialog.open(dialogComponentClass, {\r\n width: width,\r\n disableClose: modal,\r\n autoFocus: false,\r\n closeOnNavigation: !modal,\r\n data: { texts: texts, options: options }\r\n });\r\n\r\n this._activeDialogs.push(dialogHash);\r\n this._activeDialogInstances.push(dialogRef);\r\n\r\n dialogRef.beforeClosed().subscribe((selectedOptionIndex: any) => {\r\n\r\n this._activeDialogs = ArrayUtils.removeElement(this._activeDialogs, dialogHash);\r\n this._activeDialogInstances = ArrayUtils.removeElement(this._activeDialogInstances, dialogRef);\r\n\r\n if (!NumericUtils.isInteger(selectedOptionIndex)) {\r\n\r\n if(modal){\r\n \r\n throw new Error(`dialogRef.close() expects int value`);\r\n\r\n }else{\r\n \r\n selectedOptionIndex = -1;\r\n } \r\n }\r\n\r\n if (callback !== null) {\r\n\r\n let selectedOption = {index: selectedOptionIndex, value: ''};\r\n \r\n if(selectedOptionIndex >= 0){\r\n \r\n selectedOption.value = options[selectedOptionIndex];\r\n }\r\n\r\n (callback as ((selectedOption: {index:number, value: string}) => void))(selectedOption);\r\n }\r\n });\r\n }\r\n \r\n \r\n /**\r\n * Force the removal of all the dialogs that are currently visible.\r\n *\r\n * If no dialogs are currently visible, this method will do nothing\r\n */\r\n removeAllDialogs() {\r\n\r\n if (!this._isEnabled) {\r\n\r\n return;\r\n }\r\n\r\n for (const dialogRef of this._activeDialogInstances) {\r\n\r\n dialogRef.close(-1);\r\n }\r\n \r\n this._activeDialogs = [];\r\n this._activeDialogInstances = [];\r\n }\r\n\r\n\r\n /**\r\n * Block all the user interactions with the application (keyboard, touch, mouse, ...)\r\n */\r\n private _disableUserInteraction() {\r\n\r\n if (this._documentKeydownUnlisten === null) {\r\n\r\n this._documentKeydownUnlisten = this._renderer.listen('document', 'keydown', (event) => event.preventDefault());\r\n }\r\n\r\n if (this._documentMousedownUnlisten === null) {\r\n\r\n this._documentMousedownUnlisten = this._renderer.listen('document', 'mousedown', (event) => event.preventDefault());\r\n }\r\n\r\n if (this._documentPointerdownUnlisten === null) {\r\n\r\n this._documentPointerdownUnlisten = this._renderer.listen('document', 'pointerdown', (event) => event.preventDefault());\r\n }\r\n }\r\n\r\n\r\n /**\r\n * Restore the user interactions that were previously disabled with _disableUserInteraction method\r\n */\r\n private _enableUserInteraction() {\r\n\r\n if (this._documentKeydownUnlisten !== null) {\r\n\r\n this._documentKeydownUnlisten();\r\n this._documentKeydownUnlisten = null;\r\n }\r\n\r\n if (this._documentMousedownUnlisten !== null) {\r\n\r\n this._documentMousedownUnlisten();\r\n this._documentMousedownUnlisten = null;\r\n }\r\n\r\n if (this._documentPointerdownUnlisten !== null) {\r\n\r\n this._documentPointerdownUnlisten();\r\n this._documentMousedownUnlisten = null;\r\n }\r\n }\r\n}\r\n","/**\r\n * TurboGUI is A library that helps with the most common and generic UI elements and functionalities\r\n *\r\n * Website : -> http://www.turbogui.org\r\n * License : -> Licensed under the Apache License, Version 2.0. You may not use this file except in compliance with the License.\r\n * License Url : -> http://www.apache.org/licenses/LICENSE-2.0\r\n * CopyRight : -> Copyright 2018 Edertone Advanded Solutions. https://www.edertone.com\r\n */\r\n\r\nimport { Injectable } from '@angular/core';\r\nimport { LocalizationManager } from 'turbocommons-ts';\r\n\r\n\r\n/**\r\n * Manages application text translations and languages\r\n */\r\n@Injectable()\r\nexport class LocalizationService extends LocalizationManager {\r\n\r\n}\r\n","/**\r\n * TurboGUI is A library that helps with the most common and generic UI elements and functionalities\r\n *\r\n * Website : -> http://www.turbogui.org\r\n * License : -> Licensed under the Apache License, Version 2.0. You may not use this file except in compliance with the License.\r\n * License Url : -> http://www.apache.org/licenses/LICENSE-2.0\r\n * CopyRight : -> Copyright 2018 Edertone Advanded Solutions. https://www.edertone.com\r\n */\r\n\r\n\r\n/**\r\n * This is the base class for all the dialog components that can be loaded by the dialog service class\r\n */\r\nexport abstract class DialogBaseComponent {\r\n\r\n}\r\n","/**\r\n * TurboGUI is A library that helps with the most common and generic UI elements and functionalities\r\n *\r\n * Website : -> http://www.turbogui.org\r\n * License : -> Licensed under the Apache License, Version 2.0. You may not use this file except in compliance with the License.\r\n * License Url : -> http://www.apache.org/licenses/LICENSE-2.0\r\n * CopyRight : -> Copyright 2018 Edertone Advanded Solutions. https://www.edertone.com\r\n */\r\n\r\n\r\nimport { DialogBaseComponent } from '../dialog-base/dialog-base.component';\r\n\r\n\r\n/**\r\n * This is the base class for all the dialog components that show one or more options for the user to select\r\n */\r\n\r\nexport abstract class DialogOptionsBaseComponent extends DialogBaseComponent {\r\n\r\n}\r\n","/**\r\n * TurboGUI is A library that helps with the most common and generic UI elements and functionalities\r\n *\r\n * Website : -> http://www.turbogui.org\r\n * License : -> Licensed under the Apache License, Version 2.0. You may not use this file except in compliance with the License.\r\n * License Url : -> http://www.apache.org/licenses/LICENSE-2.0\r\n * CopyRight : -> Copyright 2018 Edertone Advanded Solutions. https://www.edertone.com\r\n */\r\n\r\nimport { Component, Inject } from '@angular/core';\r\nimport { MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog';\r\nimport { DialogOptionsBaseComponent } from '../dialog-options-base/dialog-options-base.component';\r\n\r\n\r\n/**\r\n * A dialog component with a single option button, to be used for error notifications\r\n */\r\n@Component({\r\n selector: 'tg-dialog-error',\r\n templateUrl: './dialog-error.component.html',\r\n styleUrls: ['./dialog-error.component.scss']\r\n})\r\n\r\n\r\nexport class DialogErrorComponent extends DialogOptionsBaseComponent {\r\n\r\n constructor(public dialogRef: MatDialogRef<DialogOptionsBaseComponent>, @Inject(MAT_DIALOG_DATA) public data: any) {\r\n\r\n super();\r\n \r\n if (data.texts.length < 1) {\r\n\r\n throw new Error('DialogErrorComponent expects 2 texts: The title and optionally a description');\r\n }\r\n\r\n if (data.options.length !== 1) {\r\n\r\n throw new Error('DialogErrorComponent expects only one option');\r\n }\r\n }\r\n}\r\n","<div class=\"titleAndIconContainer\">\r\n <h3>\r\n {{data.texts[0]}}\r\n </h3>\r\n \r\n <!-- error icon -->\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24\" viewBox=\"0 0 24 24\" width=\"24\">\r\n <path d=\"M0 0h24v24H0z\" fill=\"none\"/>\r\n <path d=\"M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm1 15h-2v-2h2v2zm0-4h-2V7h2v6z\" fill=\"#ff0000\" />\r\n </svg>\r\n \r\n</div>\r\n\r\n<p *ngIf=\"data.texts.length > 1\">\r\n {{data.texts[1]}}\r\n</p>\r\n\r\n<button mat-raised-button color=\"warn\"\r\n (click)=\"dialogRef.close(0)\">\r\n \r\n {{data.options[0]}}\r\n \r\n</button>","/**\r\n * TurboGUI is A library that helps with the most common and generic UI elements and functionalities\r\n *\r\n * Website : -> http://www.turbogui.org\r\n * License : -> Licensed under the Apache License, Version 2.0. You may not use this file except in compliance with the License.\r\n * License Url : -> http://www.apache.org/licenses/LICENSE-2.0\r\n * CopyRight : -> Copyright 2018 Edertone Advanded Solutions. https://www.edertone.com\r\n */\r\n\r\nimport { Injectable } from '@angular/core';\r\nimport { HTTPManager, HTTPManagerBaseRequest, StringUtils } from 'turbocommons-ts';\r\nimport { DialogService } from './dialog.service';\r\nimport { DialogErrorComponent } from '../view/components/dialog-error/dialog-error.component';\r\n\r\n\r\n/**\r\n * Manages application http communications\r\n */\r\n@Injectable()\r\nexport class HTTPService extends HTTPManager {\r\n \r\n \r\n /**\r\n * execute() method option that tells the service to avoid blocking the user interface with a modal busy state while the requests that are\r\n * launched by the execute method are running.\r\n */\r\n static readonly NO_MODAL_BUSY_STATE = 'NO_MODAL_BUSY_STATE';\r\n\r\n\r\n /**\r\n * execute() method option that tells the service to skip showing an error dialog when a request fails. We normally use this to handle the\r\n * errors by ourselves or if we want to hide the error dialog for a specific request.\r\n */\r\n static readonly DISABLE_ERROR_HANDLING = 'DISABLE_ERROR_HANDLING';\r\n\r\n\r\n constructor(public dialogService: DialogService) {\r\n\r\n super(true);\r\n }\r\n \r\n \r\n /**\r\n * The same method as HTTPManager.execute but with the ability to enable several options which are specific to this service:\r\n *\r\n * - HTTPService.NO_MODAL_BUSY_STATE To prevent the default behaviour of locking the UI while the request is running\r\n * - HTTPService.DISABLE_ERROR_HANDLING To prevent the default behaviour of showing a detailed error dialog when a request fails\r\n *\r\n * @see HTTPManager.execute()\r\n */\r\n execute(requests: string|string[]|HTTPManagerBaseRequest|HTTPManagerBaseRequest[],\r\n finishedCallback: ((results: {url:string, response:any, isError:boolean, errorMsg:string, code:number}[], anyError:boolean) => void) | null = null,\r\n progressCallback: null | ((completedUrl: string, totalRequests: number) => void) = null,\r\n options: (typeof HTTPService.NO_MODAL_BUSY_STATE|typeof HTTPService.DISABLE_ERROR_HANDLING)[] = []){\r\n \r\n if(options.indexOf(HTTPService.NO_MODAL_BUSY_STATE) < 0){\r\n \r\n this.dialogService.addModalBusyState(); \r\n }\r\n \r\n super.execute(requests, (results, anyError) => { \r\n \r\n if(options.indexOf(HTTPService.NO_MODAL_BUSY_STATE) < 0){\r\n \r\n this.dialogService.removeModalBusyState();\r\n }\r\n \r\n if((options.indexOf(HTTPService.DISABLE_ERROR_HANDLING) < 0) && anyError){\r\n \r\n for(let result of results){\r\n \r\n if(result.isError){\r\n \r\n let errorMsg = result.errorMsg + '\\n\\n' + result.response;\r\n \r\n if(StringUtils.isEmpty(errorMsg)){\r\n \r\n errorMsg = 'Unknown error. Make sure Internet connection is available'; \r\n }\r\n \r\n this.dialogService.addDialog('600px', ['Error: ' + result.code, errorMsg], ['Ok'], DialogErrorComponent); \r\n }\r\n }\r\n }\r\n \r\n if(finishedCallback !== null){\r\n \r\n finishedCallback(results, anyError);\r\n }\r\n \r\n }, progressCallback);\r\n }\r\n}\r\n","/**\r\n * TurboGUI is A library that helps with the most common and generic UI elements and functionalities\r\n *\r\n * Website : -> http://www.turbogui.org\r\n * License : -> Licensed under the Apache License, Version 2.0. You may not use this file except in compliance with the License.\r\n * License Url : -> http://www.apache.org/licenses/LICENSE-2.0\r\n * CopyRight : -> Copyright 2018 Edertone Advanded Solutions. https://www.edertone.com\r\n */\r\n\r\nimport { Injectable } from '@angular/core';\r\nimport { Subject, Subscription } from 'rxjs';\r\nimport { GUINotification } from '../model/classes/GUINotification';\r\n\r\n\r\n/**\r\n * This is the main application event bus.\r\n * All global events that happen on the application are broadcasted by this service, and\r\n * can be listened by any application element who previously subscribed\r\n */\r\n@Injectable()\r\nexport class NotificationService {\r\n\r\n\r\n /**\r\n * The Observable instance that handles subscriptions and notifications\r\n */\r\n private readonly _notifications = new Subject<GUINotification>();\r\n\r\n\r\n /**\r\n * used by other services or components to subscribe to all notifications that are generated by this service\r\n *\r\n * @param notificationHandler A method that will be used to receive each notification as a GUINotification instance\r\n *\r\n * @returns The new subscription object. Make sure to unsubscribe when not required anymore\r\n */\r\n subscribe(notificationHandler: (notification: GUINotification) => any) {\r\n\r\n return this._notifications.subscribe(notificationHandler);\r\n }\r\n\r\n\r\n /**\r\n * Launch a notification to anyone who may be listening\r\n *\r\n * @param notification A notification instance to launch\r\n */\r\n send(notification: GUINotification) {\r\n\r\n this._notifications.next(notification);\r\n }\r\n\r\n\r\n /**\r\n * End a previously initiated subscription\r\n *\r\n * @param subscription A previously created subscription instance from which we want to unsubscribe\r\n */\r\n unsubscribe(subscription: Subscription) {\r\n\r\n return subscription.unsubscribe();\r\n }\r\n}\r\n","/**\r\n * TurboGUI is A library that helps with the most common and generic UI elements and functionalities\r\n *\r\n * Website : -> http://www.turbogui.org\r\n * License : -> Licensed under the Apache License, Version 2.0. You may not use this file except in compliance with the License.\r\n * License Url : -> http://www.apache.org/licenses/LICENSE-2.0\r\n * CopyRight : -> Copyright 2018 Edertone Advanded Solutions. https://www.edertone.com\r\n */\r\n\r\n\r\nimport { HTTPManagerPostRequest } from 'turbocommons-ts';\r\n\r\n\r\n/**\r\n * Class that defines a POST http request, to be used by HttpService\r\n */\r\nexport class HTTPServicePostRequest extends HTTPManagerPostRequest {\r\n}\r\n\r\n","/**\r\n * TurboGUI is A library that helps with the most common and generic UI elements and functionalities\r\n *\r\n * Website : -> http://www.turbogui.org\r\n * License : -> Licensed under the Apache License, Version 2.0. You may not use this file except in compliance with the License.\r\n * License Url : -> http://www.apache.org/licenses/LICENSE-2.0\r\n * CopyRight : -> Copyright 2018 Edertone Advanded Solutions. https://www.edertone.com\r\n */\r\n\r\nimport { Injectable } from '@angular/core';\r\nimport { ConversionUtils, StringUtils } from 'turbocommons-ts';\r\nimport { HTTPService } from '../controller/http.service';\r\nimport { LocalizationService } from '../controller/localization.service';\r\nimport { HTTPServicePostRequest } from '../controller/httpservice/HTTPServicePostRequest';\r\n\r\n\r\n/**\r\n * Manages the users model and commands\r\n */\r\n@Injectable()\r\nexport class UserService {\r\n\r\n\r\n /**\r\n * Path to the web service that performs the user login\r\n */\r\n loginWebService = 'users/login';\r\n \r\n\r\n /**\r\n * The username that is currently defined and will be used by the login methods\r\n */\r\n userName = '';\r\n\r\n\r\n /**\r\n * The password for the user that is currently defined and will be used by the login methods\r\n */\r\n password = '';\r\n\r\n\r\n /**\r\n * Check public getter for docs\r\n */\r\n private _isLogged = false;\r\n \r\n \r\n /**\r\n * @see token() getter for more info\r\n */\r\n private _token = '';\r\n\r\n\r\n constructor(public httpService: HTTPService,\r\n public ls: LocalizationService) {\r\n }\r\n\r\n\r\n /**\r\n * Tells if the services contains a non empty username and password specified\r\n */\r\n get isUserAndPswDefined(): boolean {\r\n\r\n return !StringUtils.isEmpty(this.userName) && !StringUtils.isEmpty(this.password);\r\n }\r\n\r\n\r\n /**\r\n * Tells if exists a user that is currently logged or not\r\n */\r\n get isLogged(): boolean {\r\n\r\n return this._isLogged;\r\n }\r\n \r\n \r\n /**\r\n * Gives the value for the currently active user authentication token or an empty string if no user logged\r\n */\r\n get token() {\r\n\r\n return this._token;\r\n }\r\n\r\n\r\n /**\r\n * Perform a user login against the configured login webservice\r\n * \r\n * @param loginOkCallback Method to be executed once the login finishes chorrectly. An object with all the service response data will be passed to this method\r\n * @param loginFailCallback Method to be executed once the login finishes incorrectly.\r\n */\r\n login(loginOkCallback: null | ((response: any) => void) = null, loginFailCallback: null | (() => void) = null) {\r\n\r\n const request = new HTTPServicePostRequest(this.loginWebService);\r\n \r\n request.ignoreGlobalPostParams = true;\r\n\r\n const encodedCredentials = ConversionUtils.stringToBase64(\r\n ConversionUtils.stringToBase64(this.userName) + ',' + ConversionUtils.stringToBase64(this.password));\r\n\r\n request.parameters = {\r\n data: encodedCredentials\r\n };\r\n \r\n request.successCallback = (response) => {\r\n \r\n if (response !== '') {\r\n\r\n response = JSON.parse(response); \r\n\r\n this._isLogged = true;\r\n this._token = response.token;\r\n this.httpService.setGlobalPostParam('token', response.token);\r\n\r\n if (loginOkCallback !== null) {\r\n\r\n loginOkCallback(response);\r\n }\r\n\r\n } else {\r\n\r\n this._clearUserAndToken();\r\n\r\n if (loginFailCallback !== null) {\r\n\r\n loginFailCallback();\r\n }\r\n }\r\n };\r\n\r\n this.httpService.execute(request);\r\n }\r\n\r\n\r\n /**\r\n * Perform the logout for the currently logged user\r\n */\r\n logout(logoutOkCallback: null | (() => void) = null) {\r\n \r\n const request = new HTTPServicePostRequest('users/logout');\r\n \r\n request.parameters = {\r\n token: this._token\r\n };\r\n \r\n request.successCallback = () => {\r\n \r\n this._clearUserAndToken();\r\n \r\n if (logoutOkCallback !== null) {\r\n\r\n logoutOkCallback();\r\n }\r\n };\r\n\r\n this.httpService.execute(request);\r\n }\r\n \r\n \r\n private _clearUserAndToken(){\r\n \r\n this.userName = '';\r\n this.password = '';\r\n this._isLogged = false;\r\n this._token = '';\r\n \r\n if(this.httpService.isGlobalPostParam('token')){\r\n \r\n this.httpService.deleteGlobalPostParam('token');\r\n } \r\n }\r\n}\r\n","/**\r\n * TurboGUI is A library that helps with the most common and generic UI elements and functionalities\r\n *\r\n * Website : -> http://www.turbogui.org\r\n * License : -> Licensed under the Apache License, Version 2.0. You may not use this file except in compliance with the License.\r\n * License Url : -> http://www.apache.org/licenses/LICENSE-2.0\r\n * CopyRight : -> Copyright 2018 Edertone Advanded Solutions. https://www.edertone.com\r\n */\r\n\r\nimport { Type, ViewContainerRef, Injectable, ComponentFactoryResolver } from '@angular/core';\r\nimport { View } from '../model/classes/View';\r\nimport { ViewModel } from '../model/classes/ViewModel';\r\n\r\n\r\n/**\r\n * Manages adding, removing and manipulating the application views\r\n */\r\n@Injectable()\r\nexport class ViewsService {\r\n\r\n\r\n /**\r\n * See getter method for docs\r\n */\r\n private _loadedViewClass: Type<View> | null = null;\r\n\r\n\r\n /**\r\n * An instance of the model that is assigned to the currently loaded view\r\n */\r\n private _loadedViewModel: ViewModel | null = null;\r\n\r\n\r\n /**\r\n * See setter method for docs\r\n */\r\n private _viewContainerRef: ViewContainerRef | null = null;\r\n\r\n\r\n constructor(private readonly componentFactoryResolver: ComponentFactoryResolver) {\r\n\r\n }\r\n\r\n\r\n /**\r\n * Tells if there's any view currently loaded on the application views container\r\n */\r\n get isViewLoaded() {\r\n\r\n return this._loadedViewClass !== null;\r\n }\r\n\r\n\r\n /**\r\n * Stores a reference to the visual element that will be used as the container for all the views.\r\n * This is automatically assigned by the tg-views-container component once it is created.\r\n *\r\n * @see ViewsContainerComponent for more information\r\n */\r\n set viewContainerRef(ref: ViewContainerRef | null) {\r\n\r\n if (ref !== null && this._viewContainerRef !== null) {\r\n\r\n throw new Error('Views container already defined. Only one views container element can exist on an application');\r\n }\r\n\r\n this._viewContainerRef = ref;\r\n }\r\n\r\n\r\n /**\r\n * Create a new view instance with the specified type and add it to the current application views container. Any currently loaded \r\n * view will be removed\r\n *\r\n * Make sure this method is called when all the visual components of the application have been created (ngAfterViewInit)\r\n *\r\n * @param view The classname for the view that we want to create and add to the views container (must extend View base class).\r\n *\r\n * @return The instance of the newly added and created view. \r\n */\r\n pushView(view: Type<View>) {\r\n\r\n // If a view is already loaded, we will unload it first\r\n if (this._loadedViewClass !== null) {\r\n\r\n // If the loaded view is the same as the specified one, we will do nothing\r\n if (this._loadedViewClass === view) {\r\n\r\n return;\r\n }\r\n\r\n this.popView();\r\n }\r\n\r\n this.verifyViewsContainerExist();\r\n \r\n const factory = this.componentFactoryResolver.resolveComponentFactory(view);\r\n\r\n const componentRef = (this._viewContainerRef as ViewContainerRef).createComponent(factory);\r\n\r\n this._loadedViewModel = componentRef.instance.modelClass !== null ? new (componentRef.instance.modelClass as any)() : null;\r\n\r\n componentRef.changeDetectorRef.detectChanges();\r\n\r\n this._loadedViewClass = view;\r\n\r\n return componentRef;\r\n }\r\n\r\n\r\n /**\r\n * Get the model that is instantiated for the currently active view. (A view model only lives while its view is active)\r\n * If no view model is assigned to the current view or no view is loaded, an exception will be thrown.\r\n *\r\n * @return The current view model instance, which must be casted to the appropiate ViewModel extended class\r\n */\r\n get model() {\r\n\r\n if (this._loadedViewModel === null) {\r\n\r\n throw new Error('No active model. Make sure a view is loaded with an assigned model. Do not access the model until view is initialized (for example on ngAfterViewInit)');\r\n }\r\n\r\n return this._loadedViewModel;\r\n }\r\n\r\n\r\n /**\r\n * Delete the currently loaded view from the views container, and leave it empty.\r\n * If no view is currently loaded, this method will do nothing\r\n */\r\n popView() {\r\n\r\n this.verifyViewsContainerExist();\r\n\r\n if (this._loadedViewClass !== null) {\r\n\r\n (this._viewContainerRef as ViewContainerRef).clear();\r\n }\r\n\r\n this._loadedViewClass = null;\r\n this._loadedViewModel = null;\r\n }\r\n\r\n\r\n /**\r\n * Auxiliary method to test if the views container instance is available on the application\r\n */\r\n private verifyViewsContainerExist() {\r\n\r\n if (this._viewContainerRef === null) {\r\n\r\n throw new Error('Views container not defined. Please declare a <views-container> element in your application');\r\n }\r\n }\r\n}\r\n","/**\r\n * TurboGUI is A library that helps with the most common and generic UI elements and functionalities\r\n *\r\n * Website : -> http://www.turbogui.org\r\n * License : -> Licensed under the Apache License, Version 2.0. You may not use this file except in compliance with the License.\r\n * License Url : -> http://www.apache.org/licenses/LICENSE-2.0\r\n * CopyRight : -> Copyright 2018 Edertone Advanded Solutions. https://www.edertone.com\r\n */\r\n\r\nimport { Component, ViewContainerRef, Input, ViewChild, OnInit, Type, OnDestroy } from '@angular/core';\r\nimport { ViewsService } from '../../../controller/views.service';\r\nimport { View } from '../../../model/classes/View';\r\n\r\n\r\n/**\r\n * Component that is used as a container for application views.\r\n * We must create only one views container in our application and pass to it a reference to our main\r\n * viewsService instance. For example:\r\n *\r\n * <tg-views-container [viewsService]=\"viewsService\" [initialView]=\"HomeViewComponent\"></tg-views-container>\r\n */\r\n@Component({\r\n selector: 'tg-views-container',\r\n templateUrl: './views-container.component.html',\r\n styleUrls: ['./views-container.component.scss']\r\n})\r\n\r\n\r\nexport class ViewsContainerComponent implements OnInit, OnDestroy {\r\n\r\n\r\n /**\r\n * If we want to load a view by default when this component is loaded for the first time, we can\r\n * set here the respective class view and it will be automatically added.\r\n */\r\n @Input() initialView: Type<View> | null = null;\r\n\r\n\r\n /**\r\n * A reference to the views service that is used to operate with this views container.\r\n * This must be specified when this component is added to the application\r\n */\r\n @Input() viewsService: ViewsService | null = null;\r\n\r\n\r\n /**\r\n * A reference to the ng-template inside this component that is used as the anchor point to load views\r\n */\r\n @ViewChild('viewContainerRef', { read: ViewContainerRef, static: true }) viewContainerRef: ViewContainerRef;\r\n\r\n\r\n /**\r\n * Check that the service reference has been correctly passed\r\n */\r\n ngOnInit() {\r\n\r\n if (!(this.viewsService instanceof ViewsService)) {\r\n\r\n throw new Error('ViewService instance must be referenced on a views container');\r\n\r\n } else {\r\n\r\n this.viewsService.viewContainerRef = this.viewContainerRef;\r\n }\r\n\r\n // Set the initial view if defined\r\n if (this.initialView !== null) {\r\n\r\n this.viewsService.pushView(this.initialView);\r\n }\r\n }\r\n\r\n\r\n /**\r\n * Clear the current view from the service when this component is deleted\r\n */\r\n ngOnDestroy() {\r\n\r\n if (this.viewsService instanceof ViewsService) {\r\n\r\n this.viewsService.popView();\r\n this.viewsService.viewContainerRef = null;\r\n }\r\n }\r\n}\r\n","<!--\r\n This is a dummy template component that will be used as the anchor point where the views will be loaded\r\n-->\r\n<ng-template #viewContainerRef></ng-template>","/**\r\n * TurboGUI is A library that helps with the most common and generic UI elements and functionalities\r\n *\r\n * Website : -> http://www.turbogui.org\r\n * License : -> Licensed under the Apache License, Version 2.0. You may not use this file except in compliance with the License.\r\n * License Url : -> http://www.apache.org/licenses/LICENSE-2.0\r\n * CopyRight : -> Copyright 2018 Edertone Advanded Solutions. https://www.edertone.com\r\n */\r\n\r\nimport { HostBinding, HostListener, Input, OnInit, Directive } from '@angular/core';\r\n\r\n\r\n/**\r\n * This is the base class for all button components\r\n */\r\n@Directive()\nexport abstract class ButtonBaseComponent implements OnInit {\r\n\r\n\r\n /**\r\n * Defines the actual opacity that is binded on the html part\r\n */\r\n @HostBinding('style.opacity') currentOpacity = .7;\r\n\r\n\r\n /**\r\n * Defines the actual scale that is binded on the html part\r\n */\r\n @HostBinding('style.transform') currentScale = 'scale(1)';\r\n \r\n \r\n /**\r\n * Defines if the button can be clicked or not\r\n */\r\n @HostBinding('style.pointer-events') pointerEvents = 'initial';\r\n\r\n\r\n /**\r\n * Specifies if the button animations must rollback when the user releases the mouse or pointer after pressing it\r\n */\r\n @Input() releaseOnMouseUp = true;\r\n \r\n \r\n /**\r\n * Specifies the amount of milliseconds that the button will vibrate when it gets clicked (only on compatible devices and browsers)\r\n * Set it to 0 to disable click vibration\r\n */\r\n @Input() vibrateOnClick = 25;\r\n\r\n\r\n /**\r\n * Defines the button opacity when it is not clicked\r\n */\r\n @Input() defaultOpacity = .7;\r\n\r\n\r\n /**\r\n * Defines the image scale when it is not clicked\r\n */\r\n @Input() defaultScale = 1;\r\n\r\n\r\n /**\r\n * Defines the button opacity when it is hovered\r\n */\r\n @Input() hoverOpacity = .8;\r\n\r\n\r\n /**\r\n * Defines the image scale when it is hovered\r\n */\r\n @Input() hoverScale = 1;\r\n\r\n\r\n /**\r\n * Defines the button opacity when it is clicked\r\n */\r\n @Input() clickOpacity = 1;\r\n\r\n\r\n /**\r\n * Defines the image scale when it is clicked\r\n */\r\n @Input() clickScale = 1;\r\n \r\n \r\n /**\r\n * Defines the button opacity when it is disabled\r\n */\r\n @Input() disabledOpacity = .2;\r\n\r\n\r\n /**\r\n * Stores the value that tells if the button is enabled or disabled\r\n */\r\n private _enabled = true;\r\n \r\n\r\n /**\r\n * Specifies if the button is enabled or disabled\r\n */\r\n @Input() set enabled(v:boolean){\r\n \r\n this._enabled = v;\r\n \r\n this.currentOpacity = v ? this.defaultOpacity : this.disabledOpacity;\r\n \r\n this.pointerEvents = v ? 'initial' : 'none'; \r\n };\r\n\r\n\r\n /**\r\n * Set button default values\r\n */\r\n ngOnInit() {\r\n\r\n this.currentOpacity = this._enabled ? this.defaultOpacity : this.disabledOpacity;\r\n this.currentScale = 'scale(1)';\r\n }\r\n\r\n\r\n /**\r\n * Listens for the mouse over the button component\r\n */\r\n @HostListener('mouseover')\r\n onMouseOver() {\r\n\r\n if(this._enabled){\r\n \r\n this.currentOpacity = this.hoverOpacity;\r\n this.currentScale = 'scale(' + (this.hoverScale as any as string) + ')';\r\n }\r\n }\r\n\r\n\r\n /**\r\n * Listens for the mouse out of the button component\r\n */\r\n @HostListener('mouseout')\r\n @HostListener('pointerout')\r\n @HostListener('pointerleave')\r\n onMouseOut() {\r\n\r\n if(this._enabled){\r\n \r\n this.currentOpacity = this.defaultOpacity;\r\n this.currentScale = 'scale(' + (this.defaultScale as any as string) + ')';\r\n }\r\n }\r\n\r\n\r\n /**\r\n * Listens for the mouse down on the button component\r\n */\r\n @HostListener('pointerdown')\r\n onMouseDown() {\r\n\r\n if(this._enabled){\r\n \r\n this.currentOpacity = this.clickOpacity;\r\n this.currentScale = 'scale(' + (this.clickScale as any as string) + ')'; \r\n }\r\n }\r\n\r\n\r\n /**\r\n * Listens for the mouse up of the button component\r\n */\r\n @HostListener('pointerup')\r\n onMouseUp() {\r\n\r\n if (this._enabled) {\r\n \r\n if (this.vibrateOnClick > 0 && window.navigator && window.navigator.vibrate) {\r\n \r\n window.navigator.vibrate(this.vibrateOnClick);\r\n }\r\n \r\n if(this.releaseOnMouseUp){\r\n \r\n this.currentOpacity = this.defaultOpacity;\r\n this.currentScale = 'scale(' + (this.defaultScale as any as string) + ')';\r\n }\r\n }\r\n }\r\n}\r\n","/**\r\n * TurboGUI is A library that helps with the most common and generic UI elements and functionalities\r\n *\r\n * Website : -> http://www.turbogui.org\r\n * License : -> Licensed under the Apache License, Version 2.0. You may not use this file except in compliance with the License.\r\n * License Url : -> http://www.apache.org/licenses/LICENSE-2.0\r\n * CopyRight : -> Copyright 2018 Edertone Advanded Solutions. https://www.edertone.com\r\n */\r\n\r\nimport { Component, HostBinding, Input, OnInit } from '@angular/core';\r\nimport { FadeAnimationClass } from '../../animations/fade.animation';\r\nimport { ButtonBaseComponent } from '../../../view/components/button-base/button-base.component';\r\n\r\n\r\n/**\r\n * This component is a basic button that uses an image as its visual appearance\r\n */\r\n@Component({\r\n selector: 'tg-button-image',\r\n templateUrl: './button-image.component.html',\r\n animations: [FadeAnimationClass.getTrigger('buttonFade', '300ms ease', '300ms ease')],\r\n styleUrls: ['./button-image.component.scss']\r\n})\r\n\r\n\r\nexport class ButtonImageComponent extends ButtonBaseComponent implements OnInit {\r\n\r\n\r\n /**\r\n * This is used to attach the fade animation directly to this component so it fades in and out when created and removed from the app\r\n */\r\n @HostBinding('@buttonFade') buttonFade = true;\r\n\r\n\r\n /**\r\n * Defines the path to the image that is shown by this button\r\n */\r\n @Input() src = '';\r\n\r\n\r\n /**\r\n * Defines the percentual size of the image based on the button size. 100 means the image will fill the whole button,\r\n * 50 only half, etc..\r\n */\r\n @Input() percentSize = 100;\r\n}\r\n","<img src=\"{{src}}\"\r\n [style.width]=\"percentSize + '%'\"\r\n [style.height]=\"percentSize + '%'\" />","/**\r\n * TurboGUI is A library that helps with the most common and generic UI elements and functionalities\r\n *\r\n * Website : -> http://www.turbogui.org\r\n * License : -> Licensed under the Apache License, Version 2.0. You may not use this file except in compliance with the License.\r\n * License Url : -> http://www.apache.org/licenses/LICENSE-2.0\r\n * CopyRight : -> Copyright 2018 Edertone Advanded Solutions. https://www.edertone.com\r\n */\r\n\r\nimport { Component, HostBinding } from '@angular/core';\r\nimport { FadeAnimationClass } from '../../animations/fade.animation';\r\nimport { ButtonBaseComponent } from '../../../view/components/button-base/button-base.component';\r\n\r\n\r\n/**\r\n * This component is a basic button without visual appearance, that is used as a container to load any content.\r\n */\r\n@Component({\r\n selector: 'tg-button-container',\r\n templateUrl: './button-container.component.html',\r\n animations: [FadeAnimationClass.getTrigger('buttonFade', '300ms ease', '300ms ease')],\r\n styleUrls: ['./button-container.component.scss']\r\n})\r\n\r\n\r\nexport class ButtonContainerComponent extends ButtonBaseComponent {\r\n\r\n\r\n /**\r\n * This is used to attach the fade animation directly to this component so it fades in and out when created and removed from the app\r\n */\r\n @HostBinding('@buttonFade') buttonFade = true;\r\n}\r\n","<ng-content></ng-content>","/**\r\n * TurboGUI is A library that helps with the most common and generic UI elements and functionalities\r\n *\r\n * Website : -> http://www.turbogui.org\r\n * License : -> Licensed under the Apache License, Version 2.0. You may not use this file except in compliance with the License.\r\n * License Url : -> http://www.apache.org/licenses/LICENSE-2.0\r\n * CopyRight : -> Copyright 2018 Edertone Advanded Solutions. https://www.edertone.com\r\n */\r\n\r\nimport { Component, Inject } from '@angular/core';\r\nimport { MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog';\r\nimport { DialogOptionsBaseComponent } from '../dialog-options-base/dialog-options-base.component';\r\n\r\n\r\n/**\r\n * A dialog component with a single option button, to be used with dialog service\r\n */\r\n@Component({\r\n selector: 'tg-dialog-single-option',\r\n templateUrl: './dialog-single-option.component.html',\r\n styleUrls: ['./dialog-single-option.component.scss']\r\n})\r\n\r\n\r\nexport class DialogSingleOptionComponent extends DialogOptionsBaseComponent {\r\n\r\n constructor(public dialogRef: MatDialogRef<DialogOptionsBaseComponent>, @Inject(MAT_DIALOG_DATA) public data: any) {\r\n\r\n super();\r\n \r\n if (data.texts.length < 1) {\r\n\r\n throw new Error('DialogSingleOptionComponent expects 2 texts: The title and optionally a description');\r\n }\r\n\r\n if (data.options.length !== 1) {\r\n\r\n throw new Error('DialogSingleOptionComponent expects only one option');\r\n }\r\n }\r\n}\r\n","<h3>\r\n {{data.texts[0]}}\r\n</h3>\r\n\r\n<p *ngIf=\"data.texts.length > 1\">\r\n {{data.texts[1]}}\r\n</p>\r\n\r\n<button mat-raised-button color=\"primary\"\r\n (click)=\"dialogRef.close(0)\">\r\n \r\n {{data.options[0]}}\r\n \r\n</button>","/**\r\n * TurboGUI is A library that helps with the most common and generic UI elements and functionalities\r\n *\r\n * Website : -> http://www.turbogui.org\r\n * License : -> Licensed under the Apache License, Version 2.0. You may not use this file except in compliance with the License.\r\n * License Url : -> http://www.apache.org/licenses/LICENSE-2.0\r\n * CopyRight : -> Copyright 2018 Edertone Advanded Solutions. https://www.edertone.com\r\n */\r\n\r\nimport { Component, Inject } from '@angular/core';\r\nimport { MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog';\r\nimport { DialogOptionsBaseComponent } from '../dialog-options-base/dialog-options-base.component';\r\n\r\n\r\n/**\r\n * A dialog component with two option buttons, to be used with dialog service.\r\n * The first of the options is considered to be the primary one and will therefore have more visual accent\r\n */\r\n@Component({\r\n selector: 'tg-dialog-two-option',\r\n templateUrl: './dialog-two-option.component.html',\r\n styleUrls: ['./dialog-two-option.component.scss']\r\n})\r\n\r\n\r\nexport class DialogTwoOptionComponent extends DialogOptionsBaseComponent {\r\n\r\n constructor(public dialogRef: MatDialogRef<DialogOptionsBaseComponent>, @Inject(MAT_DIALOG_DATA) public data: any) {\r\n\r\n super();\r\n \r\n if (data.texts.length < 1) {\r\n\r\n throw new Error('DialogTwoOptionComponent expects 2 texts: The title and optionally a description');\r\n }\r\n\r\n if (data.options.length !== 2) {\r\n\r\n throw new Error('DialogTwoOptionComponent expects only two options');\r\n }\r\n }\r\n}\r\n","<h3>\r\n {{data.texts[0]}}\r\n</h3>\r\n\r\n<p *ngIf=\"data.texts.length > 1\">\r\n {{data.texts[1]}}\r\n</p>\r\n\r\n<div class=\"buttonsContainer\">\r\n\r\n <button mat-raised-button color=\"primary\" class=\"primaryButton\"\r\n (click)=\"dialogRef.close(0)\">\r\n \r\n {{data.options[0]}}\r\n \r\n </button>\r\n \r\n <button mat-button\r\n (click)=\"dialogRef.close(1)\">\r\n \r\n {{data.options[1]}}\r\n \r\n </button>\r\n \r\n</div>\r\n","/**\r\n * TurboGUI is A library that helps with the most common and generic UI elements and functionalities\r\n *\r\n * Website : -> http://www.turbogui.org\r\n * License : -> Licensed under the Apache License, Version 2.0. You may not use this file except in compliance with the License.\r\n * License Url : -> http://www.apache.org/licenses/LICENSE-2.0\r\n * CopyRight : -> Copyright 2018 Edertone Advanded Solutions. https://www.edertone.com\r\n */\r\n\r\nimport { Injectable } from '@angular/core';\r\nimport { BrowserManager } from 'turbocommons-ts';\r\nimport { Location, PopStateEvent } from '@angular/common';\r\n\r\n\r\n/**\r\n * An abstraction of the browser entity an all its related operations and properties\r\n */\r\n@Injectable()\r\nexport class BrowserService extends BrowserManager {\r\n\r\n\r\n constructor(private readonly location: Location) {\r\n\r\n super();\r\n }\r\n\r\n\r\n /**\r\n * Modify the current browser URI without reloading the current page document\r\n *\r\n * @param path The uri value we want to set\r\n * @param query The query url parameters part we want to specify if any\r\n *\r\n * @returns void\r\n */\r\n setURI(path: string, query?: string | undefined){\r\n\r\n this.location.go(path, query);\r\n }\r\n \r\n \r\n /**\r\n * Obtain a subscription to get notified on any changes at the browser url\r\n *\r\n * @param onNext A method to be executed every time the url changes on the browser. The url will be available inside the value parameter\r\n *\r\n * @returns Subscribed events. Make sure to unsubscribe when not needed\r\n */\r\n subscribeToUrlChange(onNext: (value: PopStateEvent) => void){\r\n \r\n return this.location.subscribe(onNext);\r\n }\r\n}\r\n","/**\r\n * TurboGUI is A library that helps with the most common and generic UI elements and functionalities\r\n *\r\n * Website : -> http://www.turbogui.org\r\n * License : -> Licensed under the Apache License, Version 2.0. You may not use this file except in compliance with the License.\r\n * License Url : -> http://www.apache.org/licenses/LICENSE-2.0\r\n * CopyRight : -> Copyright 2018 Edertone Advanded Solutions. https://www.edertone.com\r\n */\r\n\r\nimport { Directive, ElementRef, NgZone, Renderer2, AfterContentInit } from '@angular/core';\r\n\r\n\r\n/** This directive is used to perform an autofocus on an element every time it is displayed */\r\n@Directive({\r\n selector: '[autoFocusOnDisplay]'\r\n})\r\n\r\n\r\n/**\r\n * This directive is used to perform an autofocus on an element every time it is displayed\r\n * If we set the autoFocusOnDisplay tag to the html element, it will be automatically focused after it is shown.\r\n */\r\nexport class AutoFocusOnDisplayDirective implements AfterContentInit {\r\n \r\n \r\n constructor(private el: ElementRef, private zone: NgZone, private renderer: Renderer2) {\r\n \r\n if (!el.nativeElement['focus']) {\r\n \r\n throw new Error('Element does not accept focus');\r\n }\r\n }\r\n \r\n ngAfterContentInit() {\r\n \r\n this.zone.runOutsideAngular(() => setTimeout(() => {\r\n \r\n this.renderer.selectRootElement(this.el.nativeElement).focus();\r\n \r\n }, 0));\r\n }\r\n}\r\n","/**\r\n * TurboGUI is A library that helps with the most common and generic UI elements and functionalities\r\n *\r\n * Website : -> http://www.turbogui.org\r\n * License : -> Licensed under the Apache License, Version 2.0. You may not use this file except in compliance with the License.\r\n * License Url : -> http://www.apache.org/licenses/LICENSE-2.0\r\n * CopyRight : -> Copyright 2018 Edertone Advanded Solutions. https://www.edertone.com\r\n */\r\n\r\nimport { Component, Inject } from '@angular/core';\r\nimport { MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog';\r\nimport { DialogOptionsBaseComponent } from '../dialog-options-base/dialog-options-base.component';\r\nimport { BrowserService } from '../../../controller/browser.service';\r\nimport { StringUtils } from 'turbocommons-ts';\r\n\r\n\r\n/**\r\n * A dialog component which allows us to select one single item from a list. The elements on that list are displayed on a table\r\n * which may show a scroll if necessary when there are many elements on the list.\r\n * \r\n * It also allows us to filter inside the list with a custom text that we can type into a search input, which is optional.\r\n *\r\n * texts parameter must contain the title, the description (optional), the filter input title (optional), and the submit button caption.\r\n * If that caption is not provided, the selection will be automatically performed once user clicks on an element on the list. Otherwise, \r\n * the element will be selected on the list and the selection will be performed once the user clicks on the submit button.\r\n *\r\n * options parameter must contain the list of elements that will be displayed to the user \r\n */\r\n@Component({\r\n selector: 'tg-dialog-single-selection-list',\r\n templateUrl: './dialog-single-selection-list.component.html',\r\n styleUrls: ['./dialog-single-selection-list.component.scss']\r\n})\r\n\r\n\r\nexport class DialogSingleSelectionListComponent extends DialogOptionsBaseComponent {\r\n \r\n \r\n /**\r\n * Declare a reference to the string utils class so it can be used on the html part\r\n */\r\n stringUtils = StringUtils;\r\n \r\n /** \r\n * Contains the list of elements that will be directly shown to the user at the component list.\r\n * It may be filtered or not depending on this component setup and the user input\r\n */\r\n filteredOptions:string[] = [];\r\n \r\n \r\n /**\r\n * Contains the original list of elements that are provided to be listed on this component before\r\n * being possibly filtered. It is only used as a backup, not shown to the user\r\n */\r\n private originalOptions:string[] = [];\r\n \r\n \r\n /**\r\n * The same list as the originally provided but processed for a better text search.\r\n * It will be used to perform the search, but not shown to the user.\r\n */\r\n private originalOptionsFullTextSearch:string[] = [];\r\n \r\n \r\n /**\r\n * Stores the index for the element that's been selected by the user\r\n */\r\n selectedItemIndex = -1;\r\n \r\n\r\n constructor(public dialogRef: MatDialogRef<DialogOptionsBaseComponent>,\r\n public browserService: BrowserService,\r\n @Inject(MAT_DIALOG_DATA) public data: any) {\r\n\r\n super();\r\n\r\n if (data.texts.length < 1) {\r\n\r\n throw new Error('DialogSingleSelectionListComponent expects 4 texts: The title, the description (optional), the filter input title (optional), and the submit button caption');\r\n }\r\n \r\n if (data.options.length < 1) {\r\n\r\n throw new Error('DialogSingleSelectionListComponent expects one or more options');\r\n }\r\n \r\n this.originalOptions = data.options;\r\n \r\n for(let option of this.originalOptions){\r\n \r\n this.filteredOptions.push(option);\r\n this.originalOptionsFullTextSearch.push(StringUtils.formatForFullTextSearch(option));\r\n }\r\n }\r\n \r\n \r\n /**\r\n * Method to calculate the max possible height that the list items container is allowed to have\r\n */\r\n getListItemsContainerMaxheight(){\r\n \r\n return (this.browserService.getWindowHeight() * 0.6) + 'px';\r\n }\r\n\r\n\r\n /**\r\n * When the user types a value on the input element to filter the list, this method will perform\r\n * that filtering and refresh the list\r\n */\r\n onSearchChange(input:HTMLInputElement){\r\n\r\n this.selectedItemIndex = -1;\r\n \r\n let inputValue = StringUtils.formatForFullTextSearch(input.value);\r\n\r\n for (let i = 0; i < this.originalOptionsFullTextSearch.length; i++){\r\n\r\n if(inputValue === '' ||\r\n this.originalOptionsFullTextSearch[i].indexOf(inputValue) >= 0){\r\n\r\n this.filteredOptions[i] = this.originalOptions[i];\r\n\r\n }else{\r\n\r\n this.filteredOptions[i] = '';\r\n }\r\n }\r\n }\r\n \r\n /**\r\n * This method is used to greatly improve ngFor performance with arrays of primitive values. It tells the refresh\r\n * function to work by index instead of by value. The change in performance when refreshing the list is massive. \r\n */\r\n trackByFn = (index: number, _value: string) => index;\r\n}\r\n","<h3>\r\n {{data.texts[0]}}\r\n</h3>\r\n\r\n<p *ngIf=\"data.texts.length > 1 &amp;&amp; !stringUtils.isEmpty(data.texts[1])\">\r\n {{data.texts[1]}}\r\n</p>\r\n\r\n<mat-form-field *ngIf=\"data.texts.length > 2 &amp;&amp; !stringUtils.isEmpty(data.texts[2])\"\r\n class=\"searchItemInputContainer\">\r\n \r\n <input matInput autoFocusOnDisplay\r\n placeholder=\"{{data.texts[2]}}\"\r\n (input)=\"onSearchChange($event.target)\">\r\n \r\n</mat-form-field>\r\n\r\n<div class=\"listItemsContainer\"\r\n [style.max-height]=\"getListItemsContainerMaxheight()\">\r\n\r\n <div class=\"listItemContainer\"\r\n [style.background-color]=\"selectedItemIndex === i ? '#90d1ffad' : (i % 2 === 0 ? 'initial' : '#00000009')\"\r\n *ngFor=\"let item of filteredOptions; let i = index; trackBy: trackByFn\"\r\n (click)=\"data.texts.length < 4 ? dialogRef.close(i) : selectedItemIndex = i\">\r\n \r\n <p *ngIf=\"item !== ''\">\r\n {{item}}\r\n </p>\r\n \r\n </div>\r\n\r\n</div>\r\n\r\n<button mat-raised-button color=\"primary\"\r\n [disabled]=\"selectedItemIndex < 0\"\r\n (click)=\"dialogRef.close(selectedItemIndex)\"\r\n *ngIf=\"data.texts.length > 3\">\r\n\r\n {{data.texts[3]}}\r\n \r\n</button>","/**\r\n * TurboGUI is A library that helps with the most common and generic UI elements and functionalities\r\n *\r\n * Website : -> http://www.turbogui.org\r\n * License : -> Licensed under the Apache License, Version 2.0. You may not use this file except in compliance with the License.\r\n * License Url : -> http://www.apache.org/licenses/LICENSE-2.0\r\n * CopyRight : -> Copyright 2018 Edertone Advanded Solutions. https://www.edertone.com\r\n */\r\n\r\nimport { Component, Inject } from '@angular/core';\r\nimport { MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog';\r\nimport { DialogOptionsBaseComponent } from '../dialog-options-base/dialog-options-base.component';\r\n\r\n\r\n/**\r\n * A dialog component that is designed to show more than one option buttons (usually more than two), to be used with dialog service\r\n */\r\n@Component({\r\n selector: 'tg-dialog-multiple-option',\r\n templateUrl: './dialog-multiple-option.component.html',\r\n styleUrls: ['./dialog-multiple-option.component.scss']\r\n})\r\n\r\n\r\nexport class DialogMultipleOptionComponent extends DialogOptionsBaseComponent {\r\n\r\n constructor(public dialogRef: MatDialogRef<DialogOptionsBaseComponent>, @Inject(MAT_DIALOG_DATA) public data: any) {\r\n\r\n super();\r\n \r\n if (data.texts.length < 1) {\r\n\r\n throw new Error('DialogMultipleOptionComponent expects 2 texts: The title and optionally a description');\r\n }\r\n }\r\n}\r\n","<h3>\r\n {{data.texts[0]}}\r\n</h3>\r\n\r\n<p *ngIf=\"data.texts.length > 1\">\r\n {{data.texts[1]}}\r\n</p>\r\n\r\n<button mat-raised-button color=\"primary\"\r\n *ngFor=\"let option of data.options; let i = index\"\r\n (click)=\"dialogRef.close(i)\">\r\n \r\n {{option}}\r\n \r\n</button>","/**\r\n * TurboGUI is A library that helps with the most common and generic UI elements and functionalities\r\n *\r\n * Website : -> http://www.turbogui.org\r\n * License : -> Licensed under the Apache License, Version 2.0. You may not use this file except in compliance with the License.\r\n * License Url : -> http://www.apache.org/licenses/LICENSE-2.0\r\n * CopyRight : -> Copyright 2018 Edertone Advanded Solutions. https://www.edertone.com\r\n */\r\n\r\nimport { Directive, EventEmitter, Output, OnInit } from '@angular/core';\r\n\r\n\r\n/** This directive is used to listen for onInit events on raw html elements */\r\n@Directive({\r\n selector: '[elementCreated]'\r\n})\r\n\r\n\r\n/**\r\n * This directive is used to listen for onInit events on raw html elements\r\n * If we place (elementCreated)=\"someMethod()\" on the element at the html template part, when the element\r\n * that uses this directive is visually created, someMethod() will be called.\r\n */\r\nexport class ElementCreatedDirective implements OnInit {\r\n\r\n\r\n /**\r\n * Event that will be dispatched once element is created\r\n */\r\n @Output('elementCreated')\r\n public elementCreated: EventEmitter<ElementCreatedDirective> = new EventEmitter();\r\n\r\n\r\n /**\r\n * Listen for the on init event\r\n */\r\n ngOnInit() {\r\n\r\n this.elementCreated.next(this);\r\n }\r\n\r\n}\r\n","/**\r\n * TurboGUI is A library that helps with the most common and generic UI elements and functionalities\r\n *\r\n * Website : -> http://www.turbogui.org\r\n * License : -> Licensed under the Apache License, Version 2.0. You may not use this file except in compliance with the License.\r\n * License Url : -> http://www.apache.org/licenses/LICENSE-2.0\r\n * CopyRight : -> Copyright 2018 Edertone Advanded Solutions. https://www.edertone.com\r\n */\r\n\r\nimport { Directive, OnDestroy, EventEmitter, Output } from '@angular/core';\r\n\r\n\r\n/** This directive is used to listen for onDestroy events on raw html elements */\r\n@Directive({\r\n selector: '[elementDestroyed]'\r\n})\r\n\r\n\r\n/**\r\n * This directive is used to listen for onDestroy events on raw html elements\r\n * If we place (elementDestroyed)=\"someMethod()\" on the element at the html template part, when the element\r\n * that uses this directive is visually destroyed from the screen, someMethod() will be called.\r\n */\r\nexport class ElementDestroyedDirective implements OnDestroy {\r\n\r\n\r\n /**\r\n * Event that will be dispatched once element is destroyed\r\n */\r\n @Output('elementDestroyed')\r\n public elementDestroyed: EventEmitter<ElementDestroyedDirective> = new EventEmitter();\r\n\r\n\r\n /**\r\n * Listen for the on destroy event\r\n */\r\n ngOnDestroy() {\r\n\r\n this.elementDestroyed.next(this);\r\n }\r\n\r\n}\r\n","/**\r\n * TurboGUI is A library that helps with the most common and generic UI elements and functionalities\r\n *\r\n * Website : -> http://www.turbogui.org\r\n * License : -> Licensed under the Apache License, Version 2.0. You may not use this file except in compliance with the License.\r\n * License Url : -> http://www.apache.org/licenses/LICENSE-2.0\r\n * CopyRight : -> Copyright 2018 Edertone Advanded Solutions. https://www.edertone.com\r\n */\r\n\r\nimport { Directive, ElementRef, Renderer2, HostListener } from '@angular/core';\r\n\r\n\r\n/** This directive is used to perform an automatic select all text on an element every time it is focused */\r\n@Directive({\r\n selector: '[autoSelectTextOnFocus]'\r\n})\r\n\r\n\r\n/**\r\n * This directive is used to perform an an automatic select all text on an element every time it is focused.\r\n * If we set the autoSelectTextOnFocus tag to the html element, its text will be automatically selected after it gets the focus.\r\n */\r\nexport class AutoSelectTextOnFocusDirective {\r\n \r\n \r\n constructor(private el: ElementRef, private renderer: Renderer2) {\r\n \r\n if (!el.nativeElement['select']) {\r\n \r\n throw new Error('Element does not accept select');\r\n }\r\n }\r\n \r\n \r\n @HostListener('focus', ['$event']) onFocus() {\r\n \r\n this.renderer.selectRootElement(this.el.nativeElement).select();\r\n }\r\n}\r\n","/**\n * TurboGUI is A library that helps with the most common and generic UI elements and functionalities\n *\n * Website : -> http://www.turbogui.org\n * License : -> Licensed under the Apache License, Version 2.0. You may not use this file except in compliance with the License.\n * License Url : -> http://www.apache.org/licenses/LICENSE-2.0\n * CopyRight : -> Copyright 2018 Edertone Advanded Solutions. https://www.edertone.com\n */\n\nimport { NgModule } from '@angular/core';\nimport { MatDialogModule } from '@angular/material/dialog';\nimport { MatInputModule } from '@angular/material/input';\nimport { MatSnackBarModule } from '@angular/material/snack-bar';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { BrowserAnimationsModule } from '@angular/platform-browser/animations';\nimport { BusyStateBaseComponent } from '../../view/components/busy-state-base/busy-state-base.component';\nimport { DialogService } from '../../controller/dialog.service';\r\nimport { LocalizationService } from '../../controller/localization.service';\r\nimport { HTTPService } from '../../controller/http.service';\r\nimport { NotificationService } from '../../controller/notification.service';\nimport { UserService } from '../../controller/user.service';\nimport { ViewsService } from '../../controller/views.service';\r\nimport { ViewsContainerComponent } from '../../view/components/views-container/views-container.component';\r\nimport { ButtonImageComponent } from '../../view/components/button-image/button-image.component';\nimport { ButtonContainerComponent } from '../../view/components/button-container/button-container.component';\nimport { DialogErrorComponent } from '../../view/components/dialog-error/dialog-error.component';\nimport { DialogSingleOptionComponent } from '../../view/components/dialog-single-option/dialog-single-option.component';\nimport { DialogTwoOptionComponent } from '../../view/components/dialog-two-option/dialog-two-option.component';\nimport { DialogSingleSelectionListComponent } from '../../view/components/dialog-single-selection-list/dialog-single-selection-list.component';\r\nimport { DialogMultipleOptionComponent } from '../../view/components/dialog-multiple-option/dialog-multiple-option.component';\r\nimport { BrowserService } from '../../controller/browser.service';\r\nimport { ElementCreatedDirective } from '../../view/directives/ElementCreatedDirective';\r\nimport { ElementDestroyedDirective } from '../../view/directives/ElementDestroyedDirective';\r\nimport { AutoFocusOnDisplayDirective } from '../../view/directives/AutoFocusOnDisplayDirective';\r\nimport { AutoSelectTextOnFocusDirective } from '../../view/directives/AutoSelectTextOnFocusDirective';\n\n\n/**\n * This file contains the root module that contains all the library declarations and exports.\n */\n@NgModule({\n\n imports: [\n MatDialogModule,\n MatSnackBarModule,\n MatInputModule,\n MatButtonModule,\n MatFormFieldModule,\n BrowserAnimationsModule\n ],\n\n declarations: [\n BusyStateBaseComponent,\n DialogErrorComponent,\n DialogSingleOptionComponent,\n DialogTwoOptionComponent,\n DialogMultipleOptionComponent,\n DialogSingleSelectionListComponent,\n ViewsContainerComponent,\n ButtonImageComponent,\n ButtonContainerComponent,\n ElementCreatedDirective,\n ElementDestroyedDirective,\n AutoFocusOnDisplayDirective,\n AutoSelectTextOnFocusDirective\n ],\n\n // Globally available singleton services are added here\n providers: [\n DialogService,\n LocalizationService,\n HTTPService,\n NotificationService,\n UserService,\n ViewsService,\n BrowserService\n ],\n\n exports: [\n BusyStateBaseComponent,\n ViewsContainerComponent,\n ButtonImageComponent,\n ButtonContainerComponent,\n DialogErrorComponent,\n DialogSingleOptionComponent,\n DialogTwoOptionComponent,\n DialogMultipleOptionComponent,\n DialogSingleSelectionListComponent,\n ElementCreatedDirective,\n ElementDestroyedDirective,\n AutoFocusOnDisplayDirective,\n AutoSelectTextOnFocusDirective\n ]\n})\n\nexport class TurboGuiAngularModule { }\n","/**\r\n * TurboGUI is A library that helps with the most common and generic UI elements and functionalities\r\n *\r\n * Website : -> http://www.turbogui.org\r\n * License : -> Licensed under the Apache License, Version 2.0. You may not use this file except in compliance with the License.\r\n * License Url : -> http://www.apache.org/licenses/LICENSE-2.0\r\n * CopyRight : -> Copyright 2018 Edertone Advanded Solutions. https://www.edertone.com\r\n */\r\n\r\nimport { Injectable, ErrorHandler } from '@angular/core';\r\n\r\n\r\n/**\r\n * Captures all the application exceptions and performs any required action.\r\n * It also contains multiple general error management features.\r\n *\r\n * To define this class as your application error handler, you must add the following to your\r\n * main app module providers:\r\n * {\r\n * provide: ErrorHandler,\r\n * useClass: GlobalErrorService\r\n * },\r\n * GlobalErrorService\r\n *\r\n * You cannot access the error handler at runtime. If you need to modify any of the behaviours\r\n * or implement your custom ones, you must extend this class and set your new one as the error\r\n * handler provider.\r\n */\r\n@Injectable()\r\nexport class GlobalErrorService implements ErrorHandler {\r\n\r\n\r\n /**\r\n * Enables or disables the error notification to user via an alert box\r\n * Extend this class and override this value on your custom error handle to change it\r\n */\r\n private readonly showExceptionsToUser = true;\r\n\r\n\r\n /**\r\n * Enables or disables the error notification to user via an alert box\r\n * Extend this class and override this value on your custom error handle to change it\r\n */\r\n private readonly showExceptionsOnConsole = true;\r\n\r\n\r\n /**\r\n * Defines the text that will be used for the alert that is shown to the user when an exception happens\r\n * and showExceptionsToUser is true\r\n * Extend this class and override this value on your custom error handle to change it\r\n */\r\n private readonly errorAlertMessage = 'Application exception:\\n\\n';\r\n\r\n\r\n /**\r\n * Show an alert with the received error detail and also log it to the js console.\r\n *\r\n * Angular expects at least this method to be implemented on any class that is used as a global exception handler.\r\n *\r\n * @param error An error instance\r\n */\r\n handleError(error: any) {\r\n\r\n if (this.showExceptionsToUser) {\r\n\r\n alert(this.errorAlertMessage + (error as string));\r\n }\r\n\r\n if (this.showExceptionsOnConsole) {\r\n\r\n console.log(error);\r\n }\r\n\r\n throw error;\r\n }\r\n}\r\n","/**\r\n * TurboGUI is A library that helps with the most common and generic UI elements and functionalities\r\n *\r\n * Website : -> http://www.turbogui.org\r\n * License : -> Licensed under the Apache License, Version 2.0. You may not use this file except in compliance with the License.\r\n * License Url : -> http://www.apache.org/licenses/LICENSE-2.0\r\n * CopyRight : -> Copyright 2018 Edertone Advanded Solutions. https://www.edertone.com\r\n */\r\n\r\n\r\nimport { HTTPManagerGetRequest } from 'turbocommons-ts';\r\n\r\n\r\n/**\r\n * Class that defines a GET http request, to be used by HttpService\r\n */\r\nexport class HTTPServiceGetRequest extends HTTPManagerGetRequest {\r\n}\r\n","/**\r\n * TurboGUI is A library that helps with the most common and generic UI elements and functionalities\r\n *\r\n * Website : -> http://www.turbogui.org\r\n * License : -> Licensed under the Apache License, Version 2.0. You may not use this file except in compliance with the License.\r\n * License Url : -> http://www.apache.org/licenses/LICENSE-2.0\r\n * CopyRight : -> Copyright 2018 Edertone Advanded Solutions. https://www.edertone.com\r\n */\r\n\r\n/**\r\n * Defines the data that is contained inside a GUI notification\r\n */\r\nexport class GUINotification {\r\n\r\n\r\n constructor(name: string, type = '', data: any = null) {\r\n\r\n this.name = name;\r\n this.type = type;\r\n this.data = data;\r\n }\r\n\r\n\r\n /**\r\n * The name for this notification\r\n */\r\n name = '';\r\n\r\n\r\n /**\r\n * An optional type to categorize this notification in case the name is not enough\r\n * to uniquely identify it\r\n */\r\n type = '';\r\n\r\n\r\n /**\r\n * Additional data to send with the notification\r\n */\r\n data: any = null;\r\n}\r\n","/**\r\n * TurboGUI is A library that helps with the most common and generic UI elements and functionalities\r\n *\r\n * Website : -> http://www.turbogui.org\r\n * License : -> Licensed under the Apache License, Version 2.0. You may not use this file except in compliance with the License.\r\n * License Url : -> http://www.apache.org/licenses/LICENSE-2.0\r\n * CopyRight : -> Copyright 2018 Edertone Advanded Solutions. https://www.edertone.com\r\n */\r\n\r\nimport { Type } from '@angular/core';\r\nimport { ViewModel } from '../../model/classes/ViewModel';\r\n\r\n\r\n/**\r\n * Defines an application view.\r\n * Our View components must extend this class so they can be manipulated via ViewsService\r\n */\r\n\r\nexport abstract class View {\r\n \r\n\r\n /**\r\n * This method is used to obtain the model instance that is related to this view.\r\n * \r\n * We must declare this method in our view class to return the value of the currently active model, which is normally\r\n * retrieved via --> return this.viewsService.model as OurViewClassModel; <-- Where OurViewClassModel is the type of the model class.\r\n * If we are not using a mode with our class, we can set this method to simply return null.\r\n */\r\n abstract get model(): any;\r\n \r\n \r\n private _modelClass: null | Type<ViewModel> = null;\r\n\r\n \r\n /**\r\n * In order for the views service to know which model class must be created when setting a new active view,\r\n * each view must specify the class for the view model at the overriden constructor super() call.\r\n * All view models must also extend ViewModel. If we do not plan to attach a model to a view, we can pass a null value to \r\n * the constructor super() call.\r\n *\r\n * A new model instance will be automatically created each time the view is added to the views container, and \r\n * destroyed when the view is removed. So the view model will only live while the view is active on the views service.\r\n */\r\n constructor(modelClass: null | Type<ViewModel>) {\r\n \r\n this._modelClass = modelClass; \r\n }\r\n\r\n \r\n /**\r\n * Obtain the class type for the model that is linked to this view, or null if the view model is not yet instantiated.\r\n */\r\n get modelClass() {\r\n \r\n return this._modelClass;\r\n }\r\n}\r\n","/**\r\n * TurboGUI is A library that helps with the most common and generic UI elements and functionalities\r\n *\r\n * Website : -> http://www.turbogui.org\r\n * License : -> Licensed under the Apache License, Version 2.0. You may not use this file except in compliance with the License.\r\n * License Url : -> http://www.apache.org/licenses/LICENSE-2.0\r\n * CopyRight : -> Copyright 2018 Edertone Advanded Solutions. https://www.edertone.com\r\n */\r\n\r\n/**\r\n * Defines the model base class for an application view\r\n */\r\nexport abstract class ViewModel {\r\n\r\n}\r\n","/**\r\n * TurboGUI is A library that helps with the most common and generic UI elements and functionalities\r\n *\r\n * Website : -> http://www.turbogui.org\r\n * License : -> Licensed under the Apache License, Version 2.0. You may not use this file except in compliance with the License.\r\n * License Url : -> http://www.apache.org/licenses/LICENSE-2.0\r\n * CopyRight : -> Copyright 2018 Edertone Advanded Solutions. https://www.edertone.com\r\n */\r\n\r\nimport { ViewModel } from '../../model/classes/ViewModel';\r\nimport { ViewsService } from '../../controller/views.service';\r\n\r\n\r\n/**\r\n * Defines the service base class for a view service class. All services that are used by views must extend this.\r\n * We must create the view services as an @Injectable() angular class which will be globally available at any time, but we must take\r\n * into consideration that the view model will only be instantiated when the view is active.\r\n */\r\nexport abstract class ViewService<T extends ViewModel> {\r\n\r\n\r\n /**\r\n * Class requires a views service instance\r\n */\r\n constructor(public readonly viewsService: ViewsService) {\r\n }\r\n\r\n\r\n /**\r\n * A reference to the currently active view model\r\n */\r\n get model(): T {\r\n\r\n return this.viewsService.model as T;\r\n }\r\n}\r\n","/**\r\n * TurboGUI is A library that helps with the most common and generic UI elements and functionalities\r\n *\r\n * Website : -> http://www.turbogui.org\r\n * License : -> Licensed under the Apache License, Version 2.0. You may not use this file except in compliance with the License.\r\n * License Url : -> http://www.apache.org/licenses/LICENSE-2.0\r\n * CopyRight : -> Copyright 2018 Edertone Advanded Solutions. https://www.edertone.com\r\n */\r\n\r\n/**\r\n * Sometimes it is necessary to apply some kind of buffer to the user input for certain operations that may be executed\r\n * several times but we need to capture only the latest of them into a certain period of time. This class does exactly this:\r\n * we can queue as many times as we want a specific method call and only the last one will be executed under a defined window of time.\r\n * So for example if a user types keys on an input, we can buffer it for x seconds and perform a request only with the last of its changes.\r\n * Lots of other UI interaction usages may be interesting with this class.\r\n */\r\nexport class DelayedMethodCallManager{\r\n\r\n\r\n private _functionsToExecute: Function[] = [];\r\n\r\n\r\n private _timerIsRunning = false;\r\n \r\n \r\n private _setTimeoutHandler: any = null;\r\n \r\n\r\n /**\r\n * Sometimes it is necessary to apply some kind of buffer to the user input for certain operations that may be executed\r\n * several times but we need to capture only the latest of them into a certain period of time. This class does exactly this:\r\n * we can queue as many times as we want a specific method call and only the last one will be executed under a defined window of time.\r\n * So for example if a user types keys on an input, we can buffer it for x seconds and perform a request only with the last of its changes.\r\n * Lots of other UI interaction usages may be interesting with this class.\r\n *\r\n * @param delay Amount of time to wait before executing the operations . Defaults to 1000 miliseconds.\r\n */\r\n constructor(private delay = 1000) {\r\n \r\n }\r\n \r\n \r\n /**\r\n * Add a method to be called once the delay time is finished.\r\n * Every time a new call to queue is performed, the delay timer is restarted. When the delay time finishes, only the\r\n * last of the methods that have been pushed by call() will be executed.\r\n *\r\n * Use it to queue several user input operations that should be called only once in a period of time, while waiting\r\n * for the user to finish his input.\r\n *\r\n * @param method The function that will be queued for execution after the delay time has passed\r\n */\r\n queue(method: () => void){\r\n \r\n this._functionsToExecute.push(method);\r\n \r\n if(this._timerIsRunning){\r\n \r\n clearTimeout(this._setTimeoutHandler);\r\n }\r\n \r\n this._timerIsRunning = true;\r\n \r\n this._setTimeoutHandler = setTimeout(() => {this.run() }, this.delay);\r\n }\r\n \r\n \r\n /**\r\n * Abort all methods that may have been pushed to this class and are waiting to be executed, so none of them\r\n * is executed when the delay time finishes. Basically everything is cleared and stoped when this method is called.\r\n */\r\n cancel(){\r\n \r\n if(this._setTimeoutHandler !== null){\r\n \r\n clearTimeout(this._setTimeoutHandler);\r\n }\r\n \r\n this._functionsToExecute = [];\r\n \r\n this._timerIsRunning = false;\r\n }\r\n \r\n \r\n /**\r\n * Auxiliary function that performs the call to the latest queued method\r\n */\r\n private run(){\r\n \r\n (this._functionsToExecute.pop() as () => void)();\r\n \r\n this._functionsToExecute = [];\r\n \r\n this._timerIsRunning = false;\r\n }\r\n}\r\n","/*\r\n * Public API Surface of turbogui-angular\r\n */\r\n\r\nexport { TurboGuiAngularModule } from './main/model/modules/turbogui-angular.module';\r\n\r\n\r\n/**\r\n * Services\r\n */\r\nexport { NotificationService } from './main/controller/notification.service';\r\nexport { GlobalErrorService } from './main/controller/globalerror.service';\r\nexport { LocalizationService } from './main/controller/localization.service';\r\nexport { HTTPService } from './main/controller/http.service';\r\nexport { HTTPServiceGetRequest } from './main/controller/httpservice/HTTPServiceGetRequest';\r\nexport { HTTPServicePostRequest } from './main/controller/httpservice/HTTPServicePostRequest';\r\nexport { DialogService } from './main/controller/dialog.service';\r\nexport { UserService } from './main/controller/user.service';\r\nexport { ViewsService } from './main/controller/views.service';\r\nexport { BrowserService } from './main/controller/browser.service';\r\n\r\n\r\n/**\r\n * Components\r\n */\r\nexport { BusyStateBaseComponent } from './main/view/components/busy-state-base/busy-state-base.component';\r\nexport { DialogOptionsBaseComponent } from './main/view/components/dialog-options-base/dialog-options-base.component';\r\nexport { DialogErrorComponent } from './main/view/components/dialog-error/dialog-error.component';\r\nexport { DialogSingleOptionComponent } from './main/view/components/dialog-single-option/dialog-single-option.component';\r\nexport { DialogTwoOptionComponent } from './main/view/components/dialog-two-option/dialog-two-option.component';\r\nexport { DialogMultipleOptionComponent } from './main/view/components/dialog-multiple-option/dialog-multiple-option.component';\r\nexport { DialogSingleSelectionListComponent } from './main/view/components/dialog-single-selection-list/dialog-single-selection-list.component';\r\nexport { ViewsContainerComponent } from './main/view/components/views-container/views-container.component';\r\nexport { ButtonImageComponent } from './main/view/components/button-image/button-image.component';\r\nexport { ButtonContainerComponent } from './main/view/components/button-container/button-container.component';\r\n\r\n\r\n/**\r\n * Classes\r\n */\r\nexport { GUINotification } from './main/model/classes/GUINotification';\r\nexport { View } from './main/model/classes/View';\r\nexport { ViewModel } from './main/model/classes/ViewModel';\r\nexport { ViewService } from './main/model/classes/ViewService';\r\nexport { DelayedMethodCallManager } from './main/managers/DelayedMethodCallManager';\r\nexport { FadeAnimationClass } from './main/view/animations/fade.animation';\r\nexport { ElementCreatedDirective } from './main/view/directives/ElementCreatedDirective';\r\nexport { ElementDestroyedDirective } from './main/view/directives/ElementDestroyedDirective';\r\nexport { AutoFocusOnDisplayDirective } from './main/view/directives/AutoFocusOnDisplayDirective';\r\nexport { AutoSelectTextOnFocusDirective } from './main/view/directives/AutoSelectTextOnFocusDirective';\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":["i2","i1.DialogService","i1.HTTPService","i2.LocalizationService","i1","i3","i5","i6","i7.AutoFocusOnDisplayDirective"],"mappings":"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"}
1
+ {"version":3,"file":"turbogui-angular.mjs","sources":["../../../projects/turbogui-angular/src/main/view/animations/fade.animation.ts","../../../projects/turbogui-angular/src/main/view/components/busy-state-base/busy-state-base.component.ts","../../../projects/turbogui-angular/src/main/view/components/busy-state-base/busy-state-base.component.html","../../../projects/turbogui-angular/src/main/controller/dialog.service.ts","../../../projects/turbogui-angular/src/main/controller/localization.service.ts","../../../projects/turbogui-angular/src/main/view/components/dialog-base/dialog-base.component.ts","../../../projects/turbogui-angular/src/main/view/components/dialog-options-base/dialog-options-base.component.ts","../../../projects/turbogui-angular/src/main/view/components/dialog-error/dialog-error.component.ts","../../../projects/turbogui-angular/src/main/view/components/dialog-error/dialog-error.component.html","../../../projects/turbogui-angular/src/main/controller/http.service.ts","../../../projects/turbogui-angular/src/main/controller/notification.service.ts","../../../projects/turbogui-angular/src/main/controller/httpservice/HTTPServicePostRequest.ts","../../../projects/turbogui-angular/src/main/controller/user.service.ts","../../../projects/turbogui-angular/src/main/controller/views.service.ts","../../../projects/turbogui-angular/src/main/view/components/views-container/views-container.component.ts","../../../projects/turbogui-angular/src/main/view/components/views-container/views-container.component.html","../../../projects/turbogui-angular/src/main/view/components/button-base/button-base.component.ts","../../../projects/turbogui-angular/src/main/view/components/button-image/button-image.component.ts","../../../projects/turbogui-angular/src/main/view/components/button-image/button-image.component.html","../../../projects/turbogui-angular/src/main/view/components/button-container/button-container.component.ts","../../../projects/turbogui-angular/src/main/view/components/button-container/button-container.component.html","../../../projects/turbogui-angular/src/main/view/components/dialog-single-option/dialog-single-option.component.ts","../../../projects/turbogui-angular/src/main/view/components/dialog-single-option/dialog-single-option.component.html","../../../projects/turbogui-angular/src/main/view/components/dialog-two-option/dialog-two-option.component.ts","../../../projects/turbogui-angular/src/main/view/components/dialog-two-option/dialog-two-option.component.html","../../../projects/turbogui-angular/src/main/controller/browser.service.ts","../../../projects/turbogui-angular/src/main/view/directives/AutoFocusOnDisplayDirective.ts","../../../projects/turbogui-angular/src/main/view/components/dialog-single-selection-list/dialog-single-selection-list.component.ts","../../../projects/turbogui-angular/src/main/view/components/dialog-single-selection-list/dialog-single-selection-list.component.html","../../../projects/turbogui-angular/src/main/view/components/dialog-multiple-option/dialog-multiple-option.component.ts","../../../projects/turbogui-angular/src/main/view/components/dialog-multiple-option/dialog-multiple-option.component.html","../../../projects/turbogui-angular/src/main/view/directives/ElementCreatedDirective.ts","../../../projects/turbogui-angular/src/main/view/directives/ElementDestroyedDirective.ts","../../../projects/turbogui-angular/src/main/view/directives/AutoSelectTextOnFocusDirective.ts","../../../projects/turbogui-angular/src/main/model/modules/turbogui-angular.module.ts","../../../projects/turbogui-angular/src/main/controller/globalerror.service.ts","../../../projects/turbogui-angular/src/main/controller/httpservice/HTTPServiceGetRequest.ts","../../../projects/turbogui-angular/src/main/model/classes/GUINotification.ts","../../../projects/turbogui-angular/src/main/model/classes/View.ts","../../../projects/turbogui-angular/src/main/model/classes/ViewModel.ts","../../../projects/turbogui-angular/src/main/model/classes/ViewService.ts","../../../projects/turbogui-angular/src/main/managers/DelayedMethodCallManager.ts","../../../projects/turbogui-angular/src/public_api.ts","../../../projects/turbogui-angular/src/turbogui-angular.ts"],"sourcesContent":["/**\r\n * TurboGUI is A library that helps with the most common and generic UI elements and functionalities\r\n *\r\n * Website : -> http://www.turbogui.org\r\n * License : -> Licensed under the Apache License, Version 2.0. You may not use this file except in compliance with the License.\r\n * License Url : -> http://www.apache.org/licenses/LICENSE-2.0\r\n * CopyRight : -> Copyright 2018 Edertone Advanded Solutions. https://www.edertone.com\r\n */\r\n\r\nimport { Injectable } from '@angular/core';\r\nimport { trigger, animate, transition, style } from '@angular/animations';\r\n\r\n\r\n/**\r\n * Fade animations\r\n */\r\n@Injectable()\r\nexport class FadeAnimationClass {\r\n\r\n /**\r\n * Get a custom trigger to create fade animations when components are added or removed from the application\r\n *\r\n * @param triggerName The name for the trigger we want to create\r\n * @param enter The time and easing that we want to use for the enter state\r\n * @param leave The time and easing that we want to use for the leave state\r\n */\r\n static getTrigger(triggerName: string, enter = '1s ease', leave = '0s ease') {\r\n\r\n return trigger(triggerName, [\r\n transition(':enter', [style({opacity: 0}), animate(enter)]),\r\n transition(':leave', [style({opacity: 1}), animate(leave, style({opacity: 0}))])\r\n ]);\r\n }\r\n}\r\n","/**\r\n * TurboGUI is A library that helps with the most common and generic UI elements and functionalities\r\n *\r\n * Website : -> http://www.turbogui.org\r\n * License : -> Licensed under the Apache License, Version 2.0. You may not use this file except in compliance with the License.\r\n * License Url : -> http://www.apache.org/licenses/LICENSE-2.0\r\n * CopyRight : -> Copyright 2018 Edertone Advanded Solutions. https://www.edertone.com\r\n */\r\n\r\nimport { Component, HostBinding } from '@angular/core';\r\nimport { FadeAnimationClass } from '../../animations/fade.animation';\r\n\r\n\r\n/**\r\n * This component is used by turboGUI angular library to show the busy state to the user.\r\n * It is used to block all the user input and progressively shows a busy cursor to notify that the application\r\n * is waiting for something.\r\n *\r\n * We can (should) override this component with our own one to adapt its visual appearance to our application.\r\n * We can then set dialogService.busyStateComponentClass to our component class at the application start to to\r\n * override the default one.\r\n */\r\n@Component({\r\n selector: 'tg-busy-state-base',\r\n templateUrl: './busy-state-base.component.html',\r\n animations: [FadeAnimationClass.getTrigger('busyStateBaseFade', '1s ease', '400ms ease')],\r\n styleUrls: ['./busy-state-base.component.scss']\r\n})\r\n\r\n\r\nexport class BusyStateBaseComponent {\r\n\r\n\r\n /**\r\n * This is used to attach the fade animation directly to this component so it fades in and out when created and removed from the app\r\n */\r\n @HostBinding('@busyStateBaseFade') busyStateBaseFade = true;\r\n}\r\n","<div class=\"darkBg\">\r\n\r\n</div>\r\n\r\n<svg width=\"38\" height=\"38\" viewBox=\"0 0 38 38\" xmlns=\"http://www.w3.org/2000/svg\" stroke=\"#fff\">\r\n <g fill=\"none\" fill-rule=\"evenodd\">\r\n <g transform=\"translate(1 1)\" stroke-width=\"1\">\r\n <circle stroke-opacity=\".2\" cx=\"18\" cy=\"18\" r=\"18\"/>\r\n <path d=\"M36 18c0-9.94-8.06-18-18-18\">\r\n <animateTransform\r\n attributeName=\"transform\"\r\n type=\"rotate\"\r\n from=\"0 18 18\"\r\n to=\"360 18 18\"\r\n dur=\"1s\"\r\n repeatCount=\"indefinite\"/>\r\n </path>\r\n </g>\r\n </g>\r\n</svg>\r\n","/**\r\n * TurboGUI is A library that helps with the most common and generic UI elements and functionalities\r\n *\r\n * Website : -> http://www.turbogui.org\r\n * License : -> Licensed under the Apache License, Version 2.0. You may not use this file except in compliance with the License.\r\n * License Url : -> http://www.apache.org/licenses/LICENSE-2.0\r\n * CopyRight : -> Copyright 2018 Edertone Advanded Solutions. https://www.edertone.com\r\n */\r\n\r\nimport { ArrayUtils, NumericUtils } from 'turbocommons-ts';\r\nimport { Type, Injectable, ComponentFactoryResolver, Injector, ApplicationRef, Renderer2, RendererFactory2 } from '@angular/core';\r\nimport { MatDialog, MatDialogRef } from '@angular/material/dialog';\nimport { MatSnackBar, MatSnackBarConfig } from '@angular/material/snack-bar';\r\nimport { BusyStateBaseComponent } from '../view/components/busy-state-base/busy-state-base.component';\r\nimport { ComponentPortal, DomPortalOutlet } from '@angular/cdk/portal';\r\nimport { DialogOptionsBaseComponent } from '../view/components/dialog-options-base/dialog-options-base.component';\r\nimport { DialogBaseComponent } from '../view/components/dialog-base/dialog-base.component';\r\n\r\n\r\n/**\r\n * Manages the application modal and non modal floating elements\r\n */\r\n@Injectable()\r\nexport class DialogService {\r\n\r\n\r\n /**\r\n * Used to modify the busy state component that is shown by default by the addModalBusyState() method.\r\n *\r\n * @see this.addModalBusyState()\r\n */\r\n customBusyStateComponentClass: Type<BusyStateBaseComponent> = BusyStateBaseComponent;\r\n\r\n\r\n /**\r\n * Check public getter for docs\r\n */\r\n private _isEnabled = true;\r\n\r\n\r\n /**\r\n * Tells if the main application is currently showing a busy state that blocks all user interaction\r\n */\r\n private _isShowingBusyState = false;\r\n\r\n\r\n /**\r\n * A reference to the modal busy state component that is initialized only the first time it is called.\r\n *\r\n * (To append the busy state dynamically, we use the Portal concept from the angular material library)\r\n */\r\n private _componentPortal: ComponentPortal<BusyStateBaseComponent> | null = null;\r\n\r\n\r\n /**\r\n * A reference to the modal busy state container where the component will be added\r\n */\r\n private _modalBusyStateHost: DomPortalOutlet | null = null;\r\n\r\n\r\n /**\r\n * Tells if the manager is currently showing a snackbar element or not\r\n */\r\n private _isShowingSnackBar = false;\r\n\r\n\r\n /**\r\n * Contains a list of the dialogs that are currently visible to the user.\r\n * Each item in this list is a hash that is computed when dialog is created to uniquely identify it.\r\n *\r\n * Empty list means no dialogs are currently visible\r\n */\r\n private _activeDialogs: string[] = [];\r\n\r\n\r\n /**\r\n * Contains a list with all the MatDialog instances that are currently visible to the user.\r\n * The list uses the same order as the list of _activeDialogs hash values\r\n */\r\n private _activeDialogInstances: MatDialogRef<DialogBaseComponent>[] = [];\r\n\r\n\r\n /**\r\n * Used to store the initialized Renderer 2 instance that is used by this class\r\n */\r\n private readonly _renderer: Renderer2;\r\n\r\n\r\n /**\r\n * Method that is used to delete the window beforeunload event listener once not used anymore\r\n */\r\n private _windowBeforeUnloadUnListen: (() => void) | null = null;\r\n\r\n\r\n /**\r\n * Method that is used to delete the document keydown event listener once not used anymore\r\n */\r\n private _documentKeydownUnlisten: (() => void) | null = null;\r\n\r\n\r\n /**\r\n * Method that is used to delete the document mousedown event listener once not used anymore\r\n */\r\n private _documentMousedownUnlisten: (() => void) | null = null;\r\n\r\n\r\n /**\r\n * Method that is used to delete the document pointerdown event listener once not used anymore\r\n */\r\n private _documentPointerdownUnlisten: (() => void) | null = null;\r\n\r\n\r\n constructor(rendererFactory: RendererFactory2,\r\n private readonly matSnackBar: MatSnackBar,\r\n private readonly matDialog: MatDialog,\r\n private readonly injector: Injector,\r\n private readonly applicationRef: ApplicationRef,\r\n private readonly componentFactoryResolver: ComponentFactoryResolver) {\r\n\r\n this._renderer = rendererFactory.createRenderer(null, null);\r\n }\r\n\r\n\r\n /**\r\n * Tells if this dialog service is enabled or not. If dialog service is disabled, none of it's features will work\r\n * This is used to block all dialog features normally when shutting down the application\r\n *\r\n * Use with caution. When this is set to false, dialog service stops working.\r\n */\r\n set isEnabled(v: boolean) {\r\n\r\n if (v === this._isEnabled) {\r\n\r\n return;\r\n }\r\n\r\n this._isEnabled = v;\r\n }\r\n\r\n\r\n /**\r\n * Enables a warning that will be shown to the user when he/she tries to close the application.\r\n * This warning will prompt the user to continue with the exit process or cancel it.\r\n * The specific texts of this message are a generic ones and cannot be changed.\r\n *\r\n * IMPORTANT: This method must be called after the main application has been initialized in order to work,\r\n * otherwise it will do nothing.\r\n */\r\n addCloseApplicationWarning() {\r\n\r\n if (this._windowBeforeUnloadUnListen === null) {\r\n\r\n this._windowBeforeUnloadUnListen = this._renderer.listen('window', 'beforeunload',\r\n (event) => event.returnValue = true);\r\n }\r\n }\r\n\r\n\r\n /**\r\n * Remove the close application warning message if previously assigned\r\n */\r\n removeCloseApplicationWarning() {\r\n\r\n if (this._windowBeforeUnloadUnListen !== null) {\r\n\r\n this._windowBeforeUnloadUnListen();\r\n this._windowBeforeUnloadUnListen = null;\r\n }\r\n }\r\n\r\n\r\n /**\r\n * Change the application visual appearance so the user perceives that the application is\r\n * currently busy. While modal busy state is enabled, no user input is possible neither via\r\n * keyboard, mouse or touch. Use this state when performing server requests or operations that\r\n * must block the user interaction with the application.\r\n *\r\n * Note: We can modify the busy state component that is shown by this method. To do it, we must\r\n * set this.customBusyStateComponentClass property with our own custom busy state component class. (We can do it at\r\n * our main application component constructor for example). Our custom component must extend the\r\n * BusyStateBaseComponent one to add its own visual appearance.\r\n *\r\n * @see this.customBusyStateComponentClass\r\n */\r\n addModalBusyState() {\r\n\r\n if (!this._isEnabled || this._isShowingBusyState) {\r\n\r\n return;\r\n }\r\n\r\n this._disableUserInteraction();\r\n\r\n // Dynamically create the busy state component reference if this is the first time\r\n if (this._componentPortal === null) {\r\n\r\n this._componentPortal = new ComponentPortal(this.customBusyStateComponentClass);\r\n\r\n // Create a PortalHost with document.body as its anchor element\r\n this._modalBusyStateHost = new DomPortalOutlet(\r\n document.body,\r\n this.componentFactoryResolver,\r\n this.applicationRef,\r\n this.injector);\r\n }\r\n\r\n (this._modalBusyStateHost as DomPortalOutlet).attach(this._componentPortal);\r\n\r\n this._isShowingBusyState = true;\r\n }\r\n\r\n\r\n /**\r\n * Tells if the application is currently locked in a modal busy state (caused by an addModalBusyState() call)\r\n */\r\n get isShowingBusyState() {\r\n\r\n return this._isShowingBusyState;\r\n }\r\n\r\n\r\n /**\r\n * Remove the application busy state and restore it back to normal user interaction\r\n */\r\n removeModalBusyState() {\r\n\r\n if (!this._isEnabled || !this._isShowingBusyState) {\r\n\r\n return;\r\n }\r\n\r\n if (this._componentPortal !== null) {\r\n\r\n (this._modalBusyStateHost as DomPortalOutlet).detach();\r\n }\r\n\r\n this._enableUserInteraction();\r\n\r\n this._isShowingBusyState = false;\r\n }\r\n \r\n \r\n /**\r\n * TODO - adapt from TS version\r\n */\r\n addToolTip() {\r\n\r\n // TODO - adapt from TS version\r\n }\r\n\r\n\r\n /**\r\n * Show a non modal snackbar notification to the user (Only one snack-bar can ever be opened at the same time).\r\n *\r\n * Snackbars inform users of a process that an app has performed or will perform. They appear temporarily, towards the bottom or top of the screen.\r\n * They shouldn’t interrupt the user experience, and they don’t require user input to disappear.\r\n *\r\n * @param config A MatSnackBarConfig instance with the customizations we want for this snackbar\r\n * @param message The message to show on the snackbar\r\n * @param action If not empty, the text to place on the snackbar confirmation button\r\n * @param actionCallback A method to execute once the user clicks into the action button.\r\n *\r\n * @return void\r\n */\r\n addSnackBar(config: MatSnackBarConfig, message: string, action = '', actionCallback: (() => void) | null = null) {\r\n\r\n if (!this._isEnabled) {\r\n\r\n return;\r\n }\r\n\r\n if (this._isShowingSnackBar) {\r\n\r\n throw new Error('Trying to show a snackbar while another one is still visible');\r\n }\r\n\r\n this._isShowingSnackBar = true;\r\n\r\n const snackBarRef = this.matSnackBar.open(message, action === '' ? undefined : action, config);\r\n\r\n if (actionCallback !== null) {\r\n\r\n snackBarRef.onAction().subscribe(() => {\r\n\r\n actionCallback();\r\n });\r\n }\r\n }\r\n\r\n\r\n /**\r\n * Tells if the application is currently showing a snackbar or not\r\n */\r\n get isShowingSnackBar() {\r\n\r\n return this._isShowingSnackBar;\r\n }\r\n\r\n\r\n /**\r\n * Force the removal of the snack bar dialog if it exists.\r\n *\r\n * If no snackbar is currently visible, this method will do nothing\r\n */\r\n removeSnackBar() {\r\n\r\n if (!this._isEnabled || !this._isShowingSnackBar) {\r\n\r\n return;\r\n }\r\n\r\n this.matSnackBar.dismiss();\r\n\r\n this._isShowingSnackBar = false;\r\n }\r\n\r\n\r\n /**\r\n * Show a dialog with one or more options that can be used to close it. We can use any of the predefined dialog types that are bundled with\r\n * this library or extend DialogOptionsBaseComponent to create our own custom ones.\r\n *\r\n * @param width Specify the css value for the maximum width the dialog will have. As the dialog is responsive, the value will be automatically\r\n reduced if the available screen is not enough, and will reach the desired value otherwise. Note that height will be adapted to the contents\r\n of the dialog and cannot be specified here. We can set a pixels, % or any other css accepted value. For example: '400px', '50%', etc.\r\n * @param texts A list with strings containing the dialog texts, sorted by importance. When dialog has a title, this should\r\n * be placed first, subtitle second and so (Each dialog may accept different kind of texts).\r\n * @param options A list of strings that will be used as button captions for each one of the accepted dialog options\r\n * @param dialogComponentClass A class for a component that extends DialogOptionsBaseComponent, which will be the\r\n * dialog visual element that is shown to the user.\r\n * @param callback A function that will be called after the dialog is closed and will receive an object with the numeric index and value for\r\n * the option that's been selected by the user.\r\n * @param modal True (default) if selecting an option is mandatory to close the dialog, false if the dialog can be closed\r\n * by the user by clicking outside it \r\n */\r\n addDialog(width: string,\r\n texts: string[],\r\n options: string[],\r\n dialogComponentClass: Type<DialogOptionsBaseComponent>,\r\n callback: null | ((selectedOption: {index:number, value: string}) => void) = null,\r\n modal = true) {\r\n\r\n if (!this._isEnabled) {\r\n\r\n return;\r\n }\r\n\r\n // Generate a string to uniquely identify this dialog on the list of active dialogs\r\n const dialogHash = texts.join('') + options.join('') + dialogComponentClass.name;\r\n\r\n // identical dialogs won't be allowed at the same time\r\n if (this._activeDialogs.includes(dialogHash)) {\r\n\r\n return;\r\n }\r\n\r\n const dialogRef = this.matDialog.open(dialogComponentClass, {\r\n width: width,\r\n disableClose: modal,\r\n autoFocus: false,\r\n closeOnNavigation: !modal,\r\n data: { texts: texts, options: options }\r\n });\r\n\r\n this._activeDialogs.push(dialogHash);\r\n this._activeDialogInstances.push(dialogRef);\r\n\r\n dialogRef.beforeClosed().subscribe((selectedOptionIndex: any) => {\r\n\r\n this._activeDialogs = ArrayUtils.removeElement(this._activeDialogs, dialogHash);\r\n this._activeDialogInstances = ArrayUtils.removeElement(this._activeDialogInstances, dialogRef);\r\n\r\n if (!NumericUtils.isInteger(selectedOptionIndex)) {\r\n\r\n if(modal){\r\n \r\n throw new Error(`dialogRef.close() expects int value`);\r\n\r\n }else{\r\n \r\n selectedOptionIndex = -1;\r\n } \r\n }\r\n\r\n if (callback !== null) {\r\n\r\n let selectedOption = {index: selectedOptionIndex, value: ''};\r\n \r\n if(selectedOptionIndex >= 0){\r\n \r\n selectedOption.value = options[selectedOptionIndex];\r\n }\r\n\r\n (callback as ((selectedOption: {index:number, value: string}) => void))(selectedOption);\r\n }\r\n });\r\n }\r\n \r\n \r\n /**\r\n * Force the removal of all the dialogs that are currently visible.\r\n *\r\n * If no dialogs are currently visible, this method will do nothing\r\n */\r\n removeAllDialogs() {\r\n\r\n if (!this._isEnabled) {\r\n\r\n return;\r\n }\r\n\r\n for (const dialogRef of this._activeDialogInstances) {\r\n\r\n dialogRef.close(-1);\r\n }\r\n \r\n this._activeDialogs = [];\r\n this._activeDialogInstances = [];\r\n }\r\n\r\n\r\n /**\r\n * Block all the user interactions with the application (keyboard, touch, mouse, ...)\r\n */\r\n private _disableUserInteraction() {\r\n\r\n if (this._documentKeydownUnlisten === null) {\r\n\r\n this._documentKeydownUnlisten = this._renderer.listen('document', 'keydown', (event) => event.preventDefault());\r\n }\r\n\r\n if (this._documentMousedownUnlisten === null) {\r\n\r\n this._documentMousedownUnlisten = this._renderer.listen('document', 'mousedown', (event) => event.preventDefault());\r\n }\r\n\r\n if (this._documentPointerdownUnlisten === null) {\r\n\r\n this._documentPointerdownUnlisten = this._renderer.listen('document', 'pointerdown', (event) => event.preventDefault());\r\n }\r\n }\r\n\r\n\r\n /**\r\n * Restore the user interactions that were previously disabled with _disableUserInteraction method\r\n */\r\n private _enableUserInteraction() {\r\n\r\n if (this._documentKeydownUnlisten !== null) {\r\n\r\n this._documentKeydownUnlisten();\r\n this._documentKeydownUnlisten = null;\r\n }\r\n\r\n if (this._documentMousedownUnlisten !== null) {\r\n\r\n this._documentMousedownUnlisten();\r\n this._documentMousedownUnlisten = null;\r\n }\r\n\r\n if (this._documentPointerdownUnlisten !== null) {\r\n\r\n this._documentPointerdownUnlisten();\r\n this._documentMousedownUnlisten = null;\r\n }\r\n }\r\n}\r\n","/**\r\n * TurboGUI is A library that helps with the most common and generic UI elements and functionalities\r\n *\r\n * Website : -> http://www.turbogui.org\r\n * License : -> Licensed under the Apache License, Version 2.0. You may not use this file except in compliance with the License.\r\n * License Url : -> http://www.apache.org/licenses/LICENSE-2.0\r\n * CopyRight : -> Copyright 2018 Edertone Advanded Solutions. https://www.edertone.com\r\n */\r\n\r\nimport { Injectable } from '@angular/core';\r\nimport { LocalizationManager } from 'turbocommons-ts';\r\n\r\n\r\n/**\r\n * Manages application text translations and languages\r\n */\r\n@Injectable()\r\nexport class LocalizationService extends LocalizationManager {\r\n\r\n}\r\n","/**\r\n * TurboGUI is A library that helps with the most common and generic UI elements and functionalities\r\n *\r\n * Website : -> http://www.turbogui.org\r\n * License : -> Licensed under the Apache License, Version 2.0. You may not use this file except in compliance with the License.\r\n * License Url : -> http://www.apache.org/licenses/LICENSE-2.0\r\n * CopyRight : -> Copyright 2018 Edertone Advanded Solutions. https://www.edertone.com\r\n */\r\n\r\n\r\n/**\r\n * This is the base class for all the dialog components that can be loaded by the dialog service class\r\n */\r\nexport abstract class DialogBaseComponent {\r\n\r\n}\r\n","/**\r\n * TurboGUI is A library that helps with the most common and generic UI elements and functionalities\r\n *\r\n * Website : -> http://www.turbogui.org\r\n * License : -> Licensed under the Apache License, Version 2.0. You may not use this file except in compliance with the License.\r\n * License Url : -> http://www.apache.org/licenses/LICENSE-2.0\r\n * CopyRight : -> Copyright 2018 Edertone Advanded Solutions. https://www.edertone.com\r\n */\r\n\r\n\r\nimport { DialogBaseComponent } from '../dialog-base/dialog-base.component';\r\n\r\n\r\n/**\r\n * This is the base class for all the dialog components that show one or more options for the user to select\r\n */\r\n\r\nexport abstract class DialogOptionsBaseComponent extends DialogBaseComponent {\r\n\r\n}\r\n","/**\r\n * TurboGUI is A library that helps with the most common and generic UI elements and functionalities\r\n *\r\n * Website : -> http://www.turbogui.org\r\n * License : -> Licensed under the Apache License, Version 2.0. You may not use this file except in compliance with the License.\r\n * License Url : -> http://www.apache.org/licenses/LICENSE-2.0\r\n * CopyRight : -> Copyright 2018 Edertone Advanded Solutions. https://www.edertone.com\r\n */\r\n\r\nimport { Component, Inject } from '@angular/core';\r\nimport { MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog';\r\nimport { DialogOptionsBaseComponent } from '../dialog-options-base/dialog-options-base.component';\r\n\r\n\r\n/**\r\n * A dialog component with a single option button, to be used for error notifications\r\n */\r\n@Component({\r\n selector: 'tg-dialog-error',\r\n templateUrl: './dialog-error.component.html',\r\n styleUrls: ['./dialog-error.component.scss']\r\n})\r\n\r\n\r\nexport class DialogErrorComponent extends DialogOptionsBaseComponent {\r\n\r\n constructor(public dialogRef: MatDialogRef<DialogOptionsBaseComponent>, @Inject(MAT_DIALOG_DATA) public data: any) {\r\n\r\n super();\r\n \r\n if (data.texts.length < 1) {\r\n\r\n throw new Error('DialogErrorComponent expects 2 texts: The title and optionally a description');\r\n }\r\n\r\n if (data.options.length !== 1) {\r\n\r\n throw new Error('DialogErrorComponent expects only one option');\r\n }\r\n }\r\n}\r\n","<div class=\"titleAndIconContainer\">\r\n <h3>\r\n {{data.texts[0]}}\r\n </h3>\r\n \r\n <!-- error icon -->\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24\" viewBox=\"0 0 24 24\" width=\"24\">\r\n <path d=\"M0 0h24v24H0z\" fill=\"none\"/>\r\n <path d=\"M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm1 15h-2v-2h2v2zm0-4h-2V7h2v6z\" fill=\"#ff0000\" />\r\n </svg>\r\n \r\n</div>\r\n\r\n<p *ngIf=\"data.texts.length > 1\">\r\n {{data.texts[1]}}\r\n</p>\r\n\r\n<button mat-raised-button color=\"warn\"\r\n (click)=\"dialogRef.close(0)\">\r\n \r\n {{data.options[0]}}\r\n \r\n</button>","/**\r\n * TurboGUI is A library that helps with the most common and generic UI elements and functionalities\r\n *\r\n * Website : -> http://www.turbogui.org\r\n * License : -> Licensed under the Apache License, Version 2.0. You may not use this file except in compliance with the License.\r\n * License Url : -> http://www.apache.org/licenses/LICENSE-2.0\r\n * CopyRight : -> Copyright 2018 Edertone Advanded Solutions. https://www.edertone.com\r\n */\r\n\r\nimport { Injectable } from '@angular/core';\r\nimport { HTTPManager, HTTPManagerBaseRequest, StringUtils } from 'turbocommons-ts';\r\nimport { DialogService } from './dialog.service';\r\nimport { DialogErrorComponent } from '../view/components/dialog-error/dialog-error.component';\r\n\r\n\r\n/**\r\n * Manages application http communications\r\n */\r\n@Injectable()\r\nexport class HTTPService extends HTTPManager {\r\n \r\n \r\n /**\r\n * execute() method option that tells the service to avoid blocking the user interface with a modal busy state while the requests that are\r\n * launched by the execute method are running.\r\n */\r\n static readonly NO_MODAL_BUSY_STATE = 'NO_MODAL_BUSY_STATE';\r\n\r\n\r\n /**\r\n * execute() method option that tells the service to skip showing an error dialog when a request fails. We normally use this to handle the\r\n * errors by ourselves or if we want to hide the error dialog for a specific request.\r\n */\r\n static readonly DISABLE_ERROR_HANDLING = 'DISABLE_ERROR_HANDLING';\r\n\r\n\r\n constructor(public dialogService: DialogService) {\r\n\r\n super(true);\r\n }\r\n \r\n \r\n /**\r\n * The same method as HTTPManager.execute but with the ability to enable several options which are specific to this service:\r\n *\r\n * - HTTPService.NO_MODAL_BUSY_STATE To prevent the default behaviour of locking the UI while the request is running\r\n * - HTTPService.DISABLE_ERROR_HANDLING To prevent the default behaviour of showing a detailed error dialog when a request fails\r\n *\r\n * @see HTTPManager.execute()\r\n */\r\n execute(requests: string|string[]|HTTPManagerBaseRequest|HTTPManagerBaseRequest[],\r\n finishedCallback: ((results: {url:string, response:any, isError:boolean, errorMsg:string, code:number}[], anyError:boolean) => void) | null = null,\r\n progressCallback: null | ((completedUrl: string, totalRequests: number) => void) = null,\r\n options: (typeof HTTPService.NO_MODAL_BUSY_STATE|typeof HTTPService.DISABLE_ERROR_HANDLING)[] = []){\r\n \r\n if(options.indexOf(HTTPService.NO_MODAL_BUSY_STATE) < 0){\r\n \r\n this.dialogService.addModalBusyState(); \r\n }\r\n \r\n super.execute(requests, (results, anyError) => { \r\n \r\n if(options.indexOf(HTTPService.NO_MODAL_BUSY_STATE) < 0){\r\n \r\n this.dialogService.removeModalBusyState();\r\n }\r\n \r\n if((options.indexOf(HTTPService.DISABLE_ERROR_HANDLING) < 0) && anyError){\r\n \r\n for(let result of results){\r\n \r\n if(result.isError){\r\n \r\n let errorMsg = result.errorMsg + '\\n\\n' + result.response;\r\n \r\n if(StringUtils.isEmpty(errorMsg)){\r\n \r\n errorMsg = 'Unknown error. Make sure Internet connection is available'; \r\n }\r\n \r\n this.dialogService.addDialog('600px', ['Error: ' + result.code, errorMsg], ['Ok'], DialogErrorComponent); \r\n }\r\n }\r\n }\r\n \r\n if(finishedCallback !== null){\r\n \r\n finishedCallback(results, anyError);\r\n }\r\n \r\n }, progressCallback);\r\n }\r\n}\r\n","/**\r\n * TurboGUI is A library that helps with the most common and generic UI elements and functionalities\r\n *\r\n * Website : -> http://www.turbogui.org\r\n * License : -> Licensed under the Apache License, Version 2.0. You may not use this file except in compliance with the License.\r\n * License Url : -> http://www.apache.org/licenses/LICENSE-2.0\r\n * CopyRight : -> Copyright 2018 Edertone Advanded Solutions. https://www.edertone.com\r\n */\r\n\r\nimport { Injectable } from '@angular/core';\r\nimport { Subject, Subscription } from 'rxjs';\r\nimport { GUINotification } from '../model/classes/GUINotification';\r\n\r\n\r\n/**\r\n * This is the main application event bus.\r\n * All global events that happen on the application are broadcasted by this service, and\r\n * can be listened by any application element who previously subscribed\r\n */\r\n@Injectable()\r\nexport class NotificationService {\r\n\r\n\r\n /**\r\n * The Observable instance that handles subscriptions and notifications\r\n */\r\n private readonly _notifications = new Subject<GUINotification>();\r\n\r\n\r\n /**\r\n * used by other services or components to subscribe to all notifications that are generated by this service\r\n *\r\n * @param notificationHandler A method that will be used to receive each notification as a GUINotification instance\r\n *\r\n * @returns The new subscription object. Make sure to unsubscribe when not required anymore\r\n */\r\n subscribe(notificationHandler: (notification: GUINotification) => any) {\r\n\r\n return this._notifications.subscribe(notificationHandler);\r\n }\r\n\r\n\r\n /**\r\n * Launch a notification to anyone who may be listening\r\n *\r\n * @param notification A notification instance to launch\r\n */\r\n send(notification: GUINotification) {\r\n\r\n this._notifications.next(notification);\r\n }\r\n\r\n\r\n /**\r\n * End a previously initiated subscription\r\n *\r\n * @param subscription A previously created subscription instance from which we want to unsubscribe\r\n */\r\n unsubscribe(subscription: Subscription) {\r\n\r\n return subscription.unsubscribe();\r\n }\r\n}\r\n","/**\r\n * TurboGUI is A library that helps with the most common and generic UI elements and functionalities\r\n *\r\n * Website : -> http://www.turbogui.org\r\n * License : -> Licensed under the Apache License, Version 2.0. You may not use this file except in compliance with the License.\r\n * License Url : -> http://www.apache.org/licenses/LICENSE-2.0\r\n * CopyRight : -> Copyright 2018 Edertone Advanded Solutions. https://www.edertone.com\r\n */\r\n\r\n\r\nimport { HTTPManagerPostRequest } from 'turbocommons-ts';\r\n\r\n\r\n/**\r\n * Class that defines a POST http request, to be used by HttpService\r\n */\r\nexport class HTTPServicePostRequest extends HTTPManagerPostRequest {\r\n}\r\n\r\n","/**\r\n * TurboGUI is A library that helps with the most common and generic UI elements and functionalities\r\n *\r\n * Website : -> http://www.turbogui.org\r\n * License : -> Licensed under the Apache License, Version 2.0. You may not use this file except in compliance with the License.\r\n * License Url : -> http://www.apache.org/licenses/LICENSE-2.0\r\n * CopyRight : -> Copyright 2018 Edertone Advanded Solutions. https://www.edertone.com\r\n */\r\n\r\nimport { Injectable } from '@angular/core';\r\nimport { ConversionUtils, StringUtils } from 'turbocommons-ts';\r\nimport { HTTPService } from '../controller/http.service';\r\nimport { LocalizationService } from '../controller/localization.service';\r\nimport { HTTPServicePostRequest } from '../controller/httpservice/HTTPServicePostRequest';\r\n\r\n\r\n/**\r\n * Manages the users model and commands\r\n */\r\n@Injectable()\r\nexport class UserService {\r\n\r\n\r\n /**\r\n * Path to the web service that performs the user login\r\n */\r\n loginWebService = 'users/login';\r\n \r\n\r\n /**\r\n * The username that is currently defined and will be used by the login methods\r\n */\r\n userName = '';\r\n\r\n\r\n /**\r\n * The password for the user that is currently defined and will be used by the login methods\r\n */\r\n password = '';\r\n\r\n\r\n /**\r\n * Check public getter for docs\r\n */\r\n private _isLogged = false;\r\n \r\n \r\n /**\r\n * @see token() getter for more info\r\n */\r\n private _token = '';\r\n\r\n\r\n constructor(public httpService: HTTPService,\r\n public ls: LocalizationService) {\r\n }\r\n\r\n\r\n /**\r\n * Tells if the services contains a non empty username and password specified\r\n */\r\n get isUserAndPswDefined(): boolean {\r\n\r\n return !StringUtils.isEmpty(this.userName) && !StringUtils.isEmpty(this.password);\r\n }\r\n\r\n\r\n /**\r\n * Tells if exists a user that is currently logged or not\r\n */\r\n get isLogged(): boolean {\r\n\r\n return this._isLogged;\r\n }\r\n \r\n \r\n /**\r\n * Gives the value for the currently active user authentication token or an empty string if no user logged\r\n */\r\n get token() {\r\n\r\n return this._token;\r\n }\r\n\r\n\r\n /**\r\n * Perform a user login against the configured login webservice\r\n * \r\n * @param loginOkCallback Method to be executed once the login finishes chorrectly. An object with all the service response data will be passed to this method\r\n * @param loginFailCallback Method to be executed once the login finishes incorrectly.\r\n */\r\n login(loginOkCallback: null | ((response: any) => void) = null, loginFailCallback: null | (() => void) = null) {\r\n\r\n const request = new HTTPServicePostRequest(this.loginWebService);\r\n \r\n request.ignoreGlobalPostParams = true;\r\n\r\n const encodedCredentials = ConversionUtils.stringToBase64(\r\n ConversionUtils.stringToBase64(this.userName) + ',' + ConversionUtils.stringToBase64(this.password));\r\n\r\n request.parameters = {\r\n data: encodedCredentials\r\n };\r\n \r\n request.successCallback = (response) => {\r\n \r\n if (response !== '') {\r\n\r\n response = JSON.parse(response); \r\n\r\n this._isLogged = true;\r\n this._token = response.token;\r\n this.httpService.setGlobalPostParam('token', response.token);\r\n\r\n if (loginOkCallback !== null) {\r\n\r\n loginOkCallback(response);\r\n }\r\n\r\n } else {\r\n\r\n this._clearUserAndToken();\r\n\r\n if (loginFailCallback !== null) {\r\n\r\n loginFailCallback();\r\n }\r\n }\r\n };\r\n\r\n this.httpService.execute(request);\r\n }\r\n\r\n\r\n /**\r\n * Perform the logout for the currently logged user\r\n */\r\n logout(logoutOkCallback: null | (() => void) = null) {\r\n \r\n const request = new HTTPServicePostRequest('users/logout');\r\n \r\n request.parameters = {\r\n token: this._token\r\n };\r\n \r\n request.successCallback = () => {\r\n \r\n this._clearUserAndToken();\r\n \r\n if (logoutOkCallback !== null) {\r\n\r\n logoutOkCallback();\r\n }\r\n };\r\n\r\n this.httpService.execute(request);\r\n }\r\n \r\n \r\n private _clearUserAndToken(){\r\n \r\n this.userName = '';\r\n this.password = '';\r\n this._isLogged = false;\r\n this._token = '';\r\n \r\n if(this.httpService.isGlobalPostParam('token')){\r\n \r\n this.httpService.deleteGlobalPostParam('token');\r\n } \r\n }\r\n}\r\n","/**\r\n * TurboGUI is A library that helps with the most common and generic UI elements and functionalities\r\n *\r\n * Website : -> http://www.turbogui.org\r\n * License : -> Licensed under the Apache License, Version 2.0. You may not use this file except in compliance with the License.\r\n * License Url : -> http://www.apache.org/licenses/LICENSE-2.0\r\n * CopyRight : -> Copyright 2018 Edertone Advanded Solutions. https://www.edertone.com\r\n */\r\n\r\nimport { Type, ViewContainerRef, Injectable, ComponentFactoryResolver } from '@angular/core';\r\nimport { View } from '../model/classes/View';\r\nimport { ViewModel } from '../model/classes/ViewModel';\r\n\r\n\r\n/**\r\n * Manages adding, removing and manipulating the application views\r\n */\r\n@Injectable()\r\nexport class ViewsService {\r\n\r\n\r\n /**\r\n * See getter method for docs\r\n */\r\n private _loadedViewClass: Type<View> | null = null;\r\n\r\n\r\n /**\r\n * An instance of the model that is assigned to the currently loaded view\r\n */\r\n private _loadedViewModel: ViewModel | null = null;\r\n\r\n\r\n /**\r\n * See setter method for docs\r\n */\r\n private _viewContainerRef: ViewContainerRef | null = null;\r\n\r\n\r\n constructor(private readonly componentFactoryResolver: ComponentFactoryResolver) {\r\n\r\n }\r\n\r\n\r\n /**\r\n * Tells if there's any view currently loaded on the application views container\r\n */\r\n get isViewLoaded() {\r\n\r\n return this._loadedViewClass !== null;\r\n }\r\n\r\n\r\n /**\r\n * Stores a reference to the visual element that will be used as the container for all the views.\r\n * This is automatically assigned by the tg-views-container component once it is created.\r\n *\r\n * @see ViewsContainerComponent for more information\r\n */\r\n set viewContainerRef(ref: ViewContainerRef | null) {\r\n\r\n if (ref !== null && this._viewContainerRef !== null) {\r\n\r\n throw new Error('Views container already defined. Only one views container element can exist on an application');\r\n }\r\n\r\n this._viewContainerRef = ref;\r\n }\r\n\r\n\r\n /**\r\n * Create a new view instance with the specified type and add it to the current application views container. Any currently loaded \r\n * view will be removed\r\n *\r\n * Make sure this method is called when all the visual components of the application have been created (ngAfterViewInit)\r\n *\r\n * @param view The classname for the view that we want to create and add to the views container (must extend View base class).\r\n *\r\n * @return The instance of the newly added and created view. \r\n */\r\n pushView(view: Type<View>) {\r\n\r\n // If a view is already loaded, we will unload it first\r\n if (this._loadedViewClass !== null) {\r\n\r\n // If the loaded view is the same as the specified one, we will do nothing\r\n if (this._loadedViewClass === view) {\r\n\r\n return;\r\n }\r\n\r\n this.popView();\r\n }\r\n\r\n this.verifyViewsContainerExist();\r\n \r\n const factory = this.componentFactoryResolver.resolveComponentFactory(view);\r\n\r\n const componentRef = (this._viewContainerRef as ViewContainerRef).createComponent(factory);\r\n\r\n this._loadedViewModel = componentRef.instance.modelClass !== null ? new (componentRef.instance.modelClass as any)() : null;\r\n\r\n componentRef.changeDetectorRef.detectChanges();\r\n\r\n this._loadedViewClass = view;\r\n\r\n return componentRef;\r\n }\r\n\r\n\r\n /**\r\n * Get the model that is instantiated for the currently active view. (A view model only lives while its view is active)\r\n * If no view model is assigned to the current view or no view is loaded, an exception will be thrown.\r\n *\r\n * @return The current view model instance, which must be casted to the appropiate ViewModel extended class\r\n */\r\n get model() {\r\n\r\n if (this._loadedViewModel === null) {\r\n\r\n throw new Error('No active model. Make sure a view is loaded with an assigned model. Do not access the model until view is initialized (for example on ngAfterViewInit)');\r\n }\r\n\r\n return this._loadedViewModel;\r\n }\r\n\r\n\r\n /**\r\n * Delete the currently loaded view from the views container, and leave it empty.\r\n * If no view is currently loaded, this method will do nothing\r\n */\r\n popView() {\r\n\r\n this.verifyViewsContainerExist();\r\n\r\n if (this._loadedViewClass !== null) {\r\n\r\n (this._viewContainerRef as ViewContainerRef).clear();\r\n }\r\n\r\n this._loadedViewClass = null;\r\n this._loadedViewModel = null;\r\n }\r\n\r\n\r\n /**\r\n * Auxiliary method to test if the views container instance is available on the application\r\n */\r\n private verifyViewsContainerExist() {\r\n\r\n if (this._viewContainerRef === null) {\r\n\r\n throw new Error('Views container not defined. Please declare a <views-container> element in your application');\r\n }\r\n }\r\n}\r\n","/**\r\n * TurboGUI is A library that helps with the most common and generic UI elements and functionalities\r\n *\r\n * Website : -> http://www.turbogui.org\r\n * License : -> Licensed under the Apache License, Version 2.0. You may not use this file except in compliance with the License.\r\n * License Url : -> http://www.apache.org/licenses/LICENSE-2.0\r\n * CopyRight : -> Copyright 2018 Edertone Advanded Solutions. https://www.edertone.com\r\n */\r\n\r\nimport { Component, ViewContainerRef, Input, ViewChild, OnInit, Type, OnDestroy } from '@angular/core';\r\nimport { ViewsService } from '../../../controller/views.service';\r\nimport { View } from '../../../model/classes/View';\r\n\r\n\r\n/**\r\n * Component that is used as a container for application views.\r\n * We must create only one views container in our application and pass to it a reference to our main\r\n * viewsService instance. For example:\r\n *\r\n * <tg-views-container [viewsService]=\"viewsService\" [initialView]=\"HomeViewComponent\"></tg-views-container>\r\n */\r\n@Component({\r\n selector: 'tg-views-container',\r\n templateUrl: './views-container.component.html',\r\n styleUrls: ['./views-container.component.scss']\r\n})\r\n\r\n\r\nexport class ViewsContainerComponent implements OnInit, OnDestroy {\r\n\r\n\r\n /**\r\n * If we want to load a view by default when this component is loaded for the first time, we can\r\n * set here the respective class view and it will be automatically added.\r\n */\r\n @Input() initialView: Type<View> | null = null;\r\n\r\n\r\n /**\r\n * A reference to the views service that is used to operate with this views container.\r\n * This must be specified when this component is added to the application\r\n */\r\n @Input() viewsService: ViewsService | null = null;\r\n\r\n\r\n /**\r\n * A reference to the ng-template inside this component that is used as the anchor point to load views\r\n */\r\n @ViewChild('viewContainerRef', { read: ViewContainerRef, static: true }) viewContainerRef: ViewContainerRef;\r\n\r\n\r\n /**\r\n * Check that the service reference has been correctly passed\r\n */\r\n ngOnInit() {\r\n\r\n if (!(this.viewsService instanceof ViewsService)) {\r\n\r\n throw new Error('ViewService instance must be referenced on a views container');\r\n\r\n } else {\r\n\r\n this.viewsService.viewContainerRef = this.viewContainerRef;\r\n }\r\n\r\n // Set the initial view if defined\r\n if (this.initialView !== null) {\r\n\r\n this.viewsService.pushView(this.initialView);\r\n }\r\n }\r\n\r\n\r\n /**\r\n * Clear the current view from the service when this component is deleted\r\n */\r\n ngOnDestroy() {\r\n\r\n if (this.viewsService instanceof ViewsService) {\r\n\r\n this.viewsService.popView();\r\n this.viewsService.viewContainerRef = null;\r\n }\r\n }\r\n}\r\n","<!--\r\n This is a dummy template component that will be used as the anchor point where the views will be loaded\r\n-->\r\n<ng-template #viewContainerRef></ng-template>","/**\r\n * TurboGUI is A library that helps with the most common and generic UI elements and functionalities\r\n *\r\n * Website : -> http://www.turbogui.org\r\n * License : -> Licensed under the Apache License, Version 2.0. You may not use this file except in compliance with the License.\r\n * License Url : -> http://www.apache.org/licenses/LICENSE-2.0\r\n * CopyRight : -> Copyright 2018 Edertone Advanded Solutions. https://www.edertone.com\r\n */\r\n\r\nimport { HostBinding, HostListener, Input, OnInit, Directive } from '@angular/core';\r\n\r\n\r\n/**\r\n * This is the base class for all button components\r\n */\r\n@Directive()\nexport abstract class ButtonBaseComponent implements OnInit {\r\n\r\n\r\n /**\r\n * Defines the actual opacity that is binded on the html part\r\n */\r\n @HostBinding('style.opacity') currentOpacity = .7;\r\n\r\n\r\n /**\r\n * Defines the actual scale that is binded on the html part\r\n */\r\n @HostBinding('style.transform') currentScale = 'scale(1)';\r\n \r\n \r\n /**\r\n * Defines if the button can be clicked or not\r\n */\r\n @HostBinding('style.pointer-events') pointerEvents = 'initial';\r\n\r\n\r\n /**\r\n * Specifies if the button animations must rollback when the user releases the mouse or pointer after pressing it\r\n */\r\n @Input() releaseOnMouseUp = true;\r\n \r\n \r\n /**\r\n * Specifies the amount of milliseconds that the button will vibrate when it gets clicked (only on compatible devices and browsers)\r\n * Set it to 0 to disable click vibration\r\n */\r\n @Input() vibrateOnClick = 25;\r\n\r\n\r\n /**\r\n * Defines the button opacity when it is not clicked\r\n */\r\n @Input() defaultOpacity = .7;\r\n\r\n\r\n /**\r\n * Defines the image scale when it is not clicked\r\n */\r\n @Input() defaultScale = 1;\r\n\r\n\r\n /**\r\n * Defines the button opacity when it is hovered\r\n */\r\n @Input() hoverOpacity = .8;\r\n\r\n\r\n /**\r\n * Defines the image scale when it is hovered\r\n */\r\n @Input() hoverScale = 1;\r\n\r\n\r\n /**\r\n * Defines the button opacity when it is clicked\r\n */\r\n @Input() clickOpacity = 1;\r\n\r\n\r\n /**\r\n * Defines the image scale when it is clicked\r\n */\r\n @Input() clickScale = 1;\r\n \r\n \r\n /**\r\n * Defines the button opacity when it is disabled\r\n */\r\n @Input() disabledOpacity = .2;\r\n\r\n\r\n /**\r\n * Stores the value that tells if the button is enabled or disabled\r\n */\r\n private _enabled = true;\r\n \r\n\r\n /**\r\n * Specifies if the button is enabled or disabled\r\n */\r\n @Input() set enabled(v:boolean){\r\n \r\n this._enabled = v;\r\n \r\n this.currentOpacity = v ? this.defaultOpacity : this.disabledOpacity;\r\n \r\n this.pointerEvents = v ? 'initial' : 'none'; \r\n };\r\n\r\n\r\n /**\r\n * Set button default values\r\n */\r\n ngOnInit() {\r\n\r\n this.currentOpacity = this._enabled ? this.defaultOpacity : this.disabledOpacity;\r\n this.currentScale = 'scale(1)';\r\n }\r\n\r\n\r\n /**\r\n * Listens for the mouse over the button component\r\n */\r\n @HostListener('mouseover')\r\n onMouseOver() {\r\n\r\n if(this._enabled){\r\n \r\n this.currentOpacity = this.hoverOpacity;\r\n this.currentScale = 'scale(' + (this.hoverScale as any as string) + ')';\r\n }\r\n }\r\n\r\n\r\n /**\r\n * Listens for the mouse out of the button component\r\n */\r\n @HostListener('mouseout')\r\n @HostListener('pointerout')\r\n @HostListener('pointerleave')\r\n onMouseOut() {\r\n\r\n if(this._enabled){\r\n \r\n this.currentOpacity = this.defaultOpacity;\r\n this.currentScale = 'scale(' + (this.defaultScale as any as string) + ')';\r\n }\r\n }\r\n\r\n\r\n /**\r\n * Listens for the mouse down on the button component\r\n */\r\n @HostListener('pointerdown')\r\n onMouseDown() {\r\n\r\n if(this._enabled){\r\n \r\n this.currentOpacity = this.clickOpacity;\r\n this.currentScale = 'scale(' + (this.clickScale as any as string) + ')'; \r\n }\r\n }\r\n\r\n\r\n /**\r\n * Listens for the mouse up of the button component\r\n */\r\n @HostListener('pointerup')\r\n onMouseUp() {\r\n\r\n if (this._enabled) {\r\n \r\n if (this.vibrateOnClick > 0 && window.navigator && window.navigator.vibrate) {\r\n \r\n window.navigator.vibrate(this.vibrateOnClick);\r\n }\r\n \r\n if(this.releaseOnMouseUp){\r\n \r\n this.currentOpacity = this.defaultOpacity;\r\n this.currentScale = 'scale(' + (this.defaultScale as any as string) + ')';\r\n }\r\n }\r\n }\r\n}\r\n","/**\r\n * TurboGUI is A library that helps with the most common and generic UI elements and functionalities\r\n *\r\n * Website : -> http://www.turbogui.org\r\n * License : -> Licensed under the Apache License, Version 2.0. You may not use this file except in compliance with the License.\r\n * License Url : -> http://www.apache.org/licenses/LICENSE-2.0\r\n * CopyRight : -> Copyright 2018 Edertone Advanded Solutions. https://www.edertone.com\r\n */\r\n\r\nimport { Component, HostBinding, Input, OnInit } from '@angular/core';\r\nimport { FadeAnimationClass } from '../../animations/fade.animation';\r\nimport { ButtonBaseComponent } from '../../../view/components/button-base/button-base.component';\r\n\r\n\r\n/**\r\n * This component is a basic button that uses an image as its visual appearance\r\n */\r\n@Component({\r\n selector: 'tg-button-image',\r\n templateUrl: './button-image.component.html',\r\n animations: [FadeAnimationClass.getTrigger('buttonFade', '300ms ease', '300ms ease')],\r\n styleUrls: ['./button-image.component.scss']\r\n})\r\n\r\n\r\nexport class ButtonImageComponent extends ButtonBaseComponent implements OnInit {\r\n\r\n\r\n /**\r\n * This is used to attach the fade animation directly to this component so it fades in and out when created and removed from the app\r\n */\r\n @HostBinding('@buttonFade') buttonFade = true;\r\n\r\n\r\n /**\r\n * Defines the path to the image that is shown by this button\r\n */\r\n @Input() src = '';\r\n\r\n\r\n /**\r\n * Defines the percentual size of the image based on the button size. 100 means the image will fill the whole button,\r\n * 50 only half, etc..\r\n */\r\n @Input() percentSize = 100;\r\n}\r\n","<img src=\"{{src}}\"\r\n [style.width]=\"percentSize + '%'\"\r\n [style.height]=\"percentSize + '%'\" />","/**\r\n * TurboGUI is A library that helps with the most common and generic UI elements and functionalities\r\n *\r\n * Website : -> http://www.turbogui.org\r\n * License : -> Licensed under the Apache License, Version 2.0. You may not use this file except in compliance with the License.\r\n * License Url : -> http://www.apache.org/licenses/LICENSE-2.0\r\n * CopyRight : -> Copyright 2018 Edertone Advanded Solutions. https://www.edertone.com\r\n */\r\n\r\nimport { Component, HostBinding } from '@angular/core';\r\nimport { FadeAnimationClass } from '../../animations/fade.animation';\r\nimport { ButtonBaseComponent } from '../../../view/components/button-base/button-base.component';\r\n\r\n\r\n/**\r\n * This component is a basic button without visual appearance, that is used as a container to load any content.\r\n */\r\n@Component({\r\n selector: 'tg-button-container',\r\n templateUrl: './button-container.component.html',\r\n animations: [FadeAnimationClass.getTrigger('buttonFade', '300ms ease', '300ms ease')],\r\n styleUrls: ['./button-container.component.scss']\r\n})\r\n\r\n\r\nexport class ButtonContainerComponent extends ButtonBaseComponent {\r\n\r\n\r\n /**\r\n * This is used to attach the fade animation directly to this component so it fades in and out when created and removed from the app\r\n */\r\n @HostBinding('@buttonFade') buttonFade = true;\r\n}\r\n","<ng-content></ng-content>","/**\r\n * TurboGUI is A library that helps with the most common and generic UI elements and functionalities\r\n *\r\n * Website : -> http://www.turbogui.org\r\n * License : -> Licensed under the Apache License, Version 2.0. You may not use this file except in compliance with the License.\r\n * License Url : -> http://www.apache.org/licenses/LICENSE-2.0\r\n * CopyRight : -> Copyright 2018 Edertone Advanded Solutions. https://www.edertone.com\r\n */\r\n\r\nimport { Component, Inject } from '@angular/core';\r\nimport { MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog';\r\nimport { DialogOptionsBaseComponent } from '../dialog-options-base/dialog-options-base.component';\r\n\r\n\r\n/**\r\n * A dialog component with a single option button, to be used with dialog service\r\n */\r\n@Component({\r\n selector: 'tg-dialog-single-option',\r\n templateUrl: './dialog-single-option.component.html',\r\n styleUrls: ['./dialog-single-option.component.scss']\r\n})\r\n\r\n\r\nexport class DialogSingleOptionComponent extends DialogOptionsBaseComponent {\r\n\r\n constructor(public dialogRef: MatDialogRef<DialogOptionsBaseComponent>, @Inject(MAT_DIALOG_DATA) public data: any) {\r\n\r\n super();\r\n \r\n if (data.texts.length < 1) {\r\n\r\n throw new Error('DialogSingleOptionComponent expects 2 texts: The title and optionally a description');\r\n }\r\n\r\n if (data.options.length !== 1) {\r\n\r\n throw new Error('DialogSingleOptionComponent expects only one option');\r\n }\r\n }\r\n}\r\n","<h3>\r\n {{data.texts[0]}}\r\n</h3>\r\n\r\n<p *ngIf=\"data.texts.length > 1\">\r\n {{data.texts[1]}}\r\n</p>\r\n\r\n<button mat-raised-button color=\"primary\"\r\n (click)=\"dialogRef.close(0)\">\r\n \r\n {{data.options[0]}}\r\n \r\n</button>","/**\r\n * TurboGUI is A library that helps with the most common and generic UI elements and functionalities\r\n *\r\n * Website : -> http://www.turbogui.org\r\n * License : -> Licensed under the Apache License, Version 2.0. You may not use this file except in compliance with the License.\r\n * License Url : -> http://www.apache.org/licenses/LICENSE-2.0\r\n * CopyRight : -> Copyright 2018 Edertone Advanded Solutions. https://www.edertone.com\r\n */\r\n\r\nimport { Component, Inject } from '@angular/core';\r\nimport { MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog';\r\nimport { DialogOptionsBaseComponent } from '../dialog-options-base/dialog-options-base.component';\r\n\r\n\r\n/**\r\n * A dialog component with two option buttons, to be used with dialog service.\r\n * The first of the options is considered to be the primary one and will therefore have more visual accent\r\n */\r\n@Component({\r\n selector: 'tg-dialog-two-option',\r\n templateUrl: './dialog-two-option.component.html',\r\n styleUrls: ['./dialog-two-option.component.scss']\r\n})\r\n\r\n\r\nexport class DialogTwoOptionComponent extends DialogOptionsBaseComponent {\r\n\r\n constructor(public dialogRef: MatDialogRef<DialogOptionsBaseComponent>, @Inject(MAT_DIALOG_DATA) public data: any) {\r\n\r\n super();\r\n \r\n if (data.texts.length < 1) {\r\n\r\n throw new Error('DialogTwoOptionComponent expects 2 texts: The title and optionally a description');\r\n }\r\n\r\n if (data.options.length !== 2) {\r\n\r\n throw new Error('DialogTwoOptionComponent expects only two options');\r\n }\r\n }\r\n}\r\n","<h3>\r\n {{data.texts[0]}}\r\n</h3>\r\n\r\n<p *ngIf=\"data.texts.length > 1\">\r\n {{data.texts[1]}}\r\n</p>\r\n\r\n<div class=\"buttonsContainer\">\r\n\r\n <button mat-raised-button color=\"primary\" class=\"primaryButton\"\r\n (click)=\"dialogRef.close(0)\">\r\n \r\n {{data.options[0]}}\r\n \r\n </button>\r\n \r\n <button mat-button\r\n (click)=\"dialogRef.close(1)\">\r\n \r\n {{data.options[1]}}\r\n \r\n </button>\r\n \r\n</div>\r\n","/**\r\n * TurboGUI is A library that helps with the most common and generic UI elements and functionalities\r\n *\r\n * Website : -> http://www.turbogui.org\r\n * License : -> Licensed under the Apache License, Version 2.0. You may not use this file except in compliance with the License.\r\n * License Url : -> http://www.apache.org/licenses/LICENSE-2.0\r\n * CopyRight : -> Copyright 2018 Edertone Advanded Solutions. https://www.edertone.com\r\n */\r\n\r\nimport { Injectable } from '@angular/core';\r\nimport { BrowserManager } from 'turbocommons-ts';\r\nimport { Location, PopStateEvent } from '@angular/common';\r\n\r\n\r\n/**\r\n * An abstraction of the browser entity an all its related operations and properties\r\n */\r\n@Injectable()\r\nexport class BrowserService extends BrowserManager {\r\n\r\n\r\n constructor(private readonly location: Location) {\r\n\r\n super();\r\n }\r\n\r\n\r\n /**\r\n * Modify the current browser URI without reloading the current page document\r\n *\r\n * @param path The uri value we want to set\r\n * @param query The query url parameters part we want to specify if any\r\n *\r\n * @returns void\r\n */\r\n setURI(path: string, query?: string | undefined){\r\n\r\n this.location.go(path, query);\r\n }\r\n \r\n \r\n /**\r\n * Obtain a subscription to get notified on any changes at the browser url\r\n *\r\n * @param onNext A method to be executed every time the url changes on the browser. The url will be available inside the value parameter\r\n *\r\n * @returns Subscribed events. Make sure to unsubscribe when not needed\r\n */\r\n subscribeToUrlChange(onNext: (value: PopStateEvent) => void){\r\n \r\n return this.location.subscribe(onNext);\r\n }\r\n}\r\n","/**\r\n * TurboGUI is A library that helps with the most common and generic UI elements and functionalities\r\n *\r\n * Website : -> http://www.turbogui.org\r\n * License : -> Licensed under the Apache License, Version 2.0. You may not use this file except in compliance with the License.\r\n * License Url : -> http://www.apache.org/licenses/LICENSE-2.0\r\n * CopyRight : -> Copyright 2018 Edertone Advanded Solutions. https://www.edertone.com\r\n */\r\n\r\nimport { Directive, ElementRef, NgZone, Renderer2, AfterContentInit } from '@angular/core';\r\n\r\n\r\n/** This directive is used to perform an autofocus on an element every time it is displayed */\r\n@Directive({\r\n selector: '[autoFocusOnDisplay]'\r\n})\r\n\r\n\r\n/**\r\n * This directive is used to perform an autofocus on an element every time it is displayed\r\n * If we set the autoFocusOnDisplay tag to the html element, it will be automatically focused after it is shown.\r\n */\r\nexport class AutoFocusOnDisplayDirective implements AfterContentInit {\r\n \r\n \r\n constructor(private el: ElementRef, private zone: NgZone, private renderer: Renderer2) {\r\n \r\n if (!el.nativeElement['focus']) {\r\n \r\n throw new Error('Element does not accept focus');\r\n }\r\n }\r\n \r\n ngAfterContentInit() {\r\n \r\n this.zone.runOutsideAngular(() => setTimeout(() => {\r\n \r\n this.renderer.selectRootElement(this.el.nativeElement).focus();\r\n \r\n }, 0));\r\n }\r\n}\r\n","/**\r\n * TurboGUI is A library that helps with the most common and generic UI elements and functionalities\r\n *\r\n * Website : -> http://www.turbogui.org\r\n * License : -> Licensed under the Apache License, Version 2.0. You may not use this file except in compliance with the License.\r\n * License Url : -> http://www.apache.org/licenses/LICENSE-2.0\r\n * CopyRight : -> Copyright 2018 Edertone Advanded Solutions. https://www.edertone.com\r\n */\r\n\r\nimport { Component, Inject } from '@angular/core';\r\nimport { MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog';\r\nimport { DialogOptionsBaseComponent } from '../dialog-options-base/dialog-options-base.component';\r\nimport { BrowserService } from '../../../controller/browser.service';\r\nimport { StringUtils } from 'turbocommons-ts';\r\n\r\n\r\n/**\r\n * A dialog component which allows us to select one single item from a list. The elements on that list are displayed on a table\r\n * which may show a scroll if necessary when there are many elements on the list.\r\n * \r\n * It also allows us to filter inside the list with a custom text that we can type into a search input, which is optional.\r\n *\r\n * texts parameter must contain the title, the description (optional), the filter input title (optional), and the submit button caption.\r\n * If that caption is not provided, the selection will be automatically performed once user clicks on an element on the list. Otherwise, \r\n * the element will be selected on the list and the selection will be performed once the user clicks on the submit button.\r\n *\r\n * options parameter must contain the list of elements that will be displayed to the user \r\n */\r\n@Component({\r\n selector: 'tg-dialog-single-selection-list',\r\n templateUrl: './dialog-single-selection-list.component.html',\r\n styleUrls: ['./dialog-single-selection-list.component.scss']\r\n})\r\n\r\n\r\nexport class DialogSingleSelectionListComponent extends DialogOptionsBaseComponent {\r\n \r\n \r\n /**\r\n * Declare a reference to the string utils class so it can be used on the html part\r\n */\r\n stringUtils = StringUtils;\r\n \r\n /** \r\n * Contains the list of elements that will be directly shown to the user at the component list.\r\n * It may be filtered or not depending on this component setup and the user input\r\n */\r\n filteredOptions:string[] = [];\r\n \r\n \r\n /**\r\n * Contains the original list of elements that are provided to be listed on this component before\r\n * being possibly filtered. It is only used as a backup, not shown to the user\r\n */\r\n private originalOptions:string[] = [];\r\n \r\n \r\n /**\r\n * The same list as the originally provided but processed for a better text search.\r\n * It will be used to perform the search, but not shown to the user.\r\n */\r\n private originalOptionsFullTextSearch:string[] = [];\r\n \r\n \r\n /**\r\n * Stores the index for the element that's been selected by the user\r\n */\r\n selectedItemIndex = -1;\r\n \r\n\r\n constructor(public dialogRef: MatDialogRef<DialogOptionsBaseComponent>,\r\n public browserService: BrowserService,\r\n @Inject(MAT_DIALOG_DATA) public data: any) {\r\n\r\n super();\r\n\r\n if (data.texts.length < 1) {\r\n\r\n throw new Error('DialogSingleSelectionListComponent expects 4 texts: The title, the description (optional), the filter input title (optional), and the submit button caption');\r\n }\r\n \r\n if (data.options.length < 1) {\r\n\r\n throw new Error('DialogSingleSelectionListComponent expects one or more options');\r\n }\r\n \r\n this.originalOptions = data.options;\r\n \r\n for(let option of this.originalOptions){\r\n \r\n this.filteredOptions.push(option);\r\n this.originalOptionsFullTextSearch.push(StringUtils.formatForFullTextSearch(option));\r\n }\r\n }\r\n \r\n \r\n /**\r\n * Method to calculate the max possible height that the list items container is allowed to have\r\n */\r\n getListItemsContainerMaxheight(){\r\n \r\n return (this.browserService.getWindowHeight() * 0.6) + 'px';\r\n }\r\n\r\n\r\n /**\r\n * When the user types a value on the input element to filter the list, this method will perform\r\n * that filtering and refresh the list\r\n */\r\n onSearchChange(input:HTMLInputElement){\r\n\r\n this.selectedItemIndex = -1;\r\n \r\n let inputValue = StringUtils.formatForFullTextSearch(input.value);\r\n\r\n for (let i = 0; i < this.originalOptionsFullTextSearch.length; i++){\r\n\r\n if(inputValue === '' ||\r\n this.originalOptionsFullTextSearch[i].indexOf(inputValue) >= 0){\r\n\r\n this.filteredOptions[i] = this.originalOptions[i];\r\n\r\n }else{\r\n\r\n this.filteredOptions[i] = '';\r\n }\r\n }\r\n }\r\n \r\n /**\r\n * This method is used to greatly improve ngFor performance with arrays of primitive values. It tells the refresh\r\n * function to work by index instead of by value. The change in performance when refreshing the list is massive. \r\n */\r\n trackByFn = (index: number, _value: string) => index;\r\n}\r\n","<h3>\r\n {{data.texts[0]}}\r\n</h3>\r\n\r\n<p *ngIf=\"data.texts.length > 1 &amp;&amp; !stringUtils.isEmpty(data.texts[1])\">\r\n {{data.texts[1]}}\r\n</p>\r\n\r\n<mat-form-field *ngIf=\"data.texts.length > 2 &amp;&amp; !stringUtils.isEmpty(data.texts[2])\"\r\n class=\"searchItemInputContainer\">\r\n \r\n <mat-label>{{data.texts[2]}}</mat-label>\r\n <input matInput autoFocusOnDisplay\r\n (input)=\"onSearchChange($event.target)\">\r\n \r\n</mat-form-field>\r\n\r\n<div class=\"listItemsContainer\"\r\n [style.max-height]=\"getListItemsContainerMaxheight()\">\r\n\r\n <div class=\"listItemContainer\"\r\n [style.background-color]=\"selectedItemIndex === i ? '#90d1ffad' : (i % 2 === 0 ? 'initial' : '#00000009')\"\r\n *ngFor=\"let item of filteredOptions; let i = index; trackBy: trackByFn\"\r\n (click)=\"data.texts.length < 4 ? dialogRef.close(i) : selectedItemIndex = i\">\r\n \r\n <p *ngIf=\"item !== ''\">\r\n {{item}}\r\n </p>\r\n \r\n </div>\r\n\r\n</div>\r\n\r\n<button mat-raised-button color=\"primary\"\r\n [disabled]=\"selectedItemIndex < 0\"\r\n (click)=\"dialogRef.close(selectedItemIndex)\"\r\n *ngIf=\"data.texts.length > 3\">\r\n\r\n {{data.texts[3]}}\r\n \r\n</button>","/**\r\n * TurboGUI is A library that helps with the most common and generic UI elements and functionalities\r\n *\r\n * Website : -> http://www.turbogui.org\r\n * License : -> Licensed under the Apache License, Version 2.0. You may not use this file except in compliance with the License.\r\n * License Url : -> http://www.apache.org/licenses/LICENSE-2.0\r\n * CopyRight : -> Copyright 2018 Edertone Advanded Solutions. https://www.edertone.com\r\n */\r\n\r\nimport { Component, Inject } from '@angular/core';\r\nimport { MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog';\r\nimport { DialogOptionsBaseComponent } from '../dialog-options-base/dialog-options-base.component';\r\n\r\n\r\n/**\r\n * A dialog component that is designed to show more than one option buttons (usually more than two), to be used with dialog service\r\n */\r\n@Component({\r\n selector: 'tg-dialog-multiple-option',\r\n templateUrl: './dialog-multiple-option.component.html',\r\n styleUrls: ['./dialog-multiple-option.component.scss']\r\n})\r\n\r\n\r\nexport class DialogMultipleOptionComponent extends DialogOptionsBaseComponent {\r\n\r\n constructor(public dialogRef: MatDialogRef<DialogOptionsBaseComponent>, @Inject(MAT_DIALOG_DATA) public data: any) {\r\n\r\n super();\r\n \r\n if (data.texts.length < 1) {\r\n\r\n throw new Error('DialogMultipleOptionComponent expects 2 texts: The title and optionally a description');\r\n }\r\n }\r\n}\r\n","<h3>\r\n {{data.texts[0]}}\r\n</h3>\r\n\r\n<p *ngIf=\"data.texts.length > 1\">\r\n {{data.texts[1]}}\r\n</p>\r\n\r\n<button mat-raised-button color=\"primary\"\r\n *ngFor=\"let option of data.options; let i = index\"\r\n (click)=\"dialogRef.close(i)\">\r\n \r\n {{option}}\r\n \r\n</button>","/**\r\n * TurboGUI is A library that helps with the most common and generic UI elements and functionalities\r\n *\r\n * Website : -> http://www.turbogui.org\r\n * License : -> Licensed under the Apache License, Version 2.0. You may not use this file except in compliance with the License.\r\n * License Url : -> http://www.apache.org/licenses/LICENSE-2.0\r\n * CopyRight : -> Copyright 2018 Edertone Advanded Solutions. https://www.edertone.com\r\n */\r\n\r\nimport { Directive, EventEmitter, Output, OnInit } from '@angular/core';\r\n\r\n\r\n/** This directive is used to listen for onInit events on raw html elements */\r\n@Directive({\r\n selector: '[elementCreated]'\r\n})\r\n\r\n\r\n/**\r\n * This directive is used to listen for onInit events on raw html elements\r\n * If we place (elementCreated)=\"someMethod()\" on the element at the html template part, when the element\r\n * that uses this directive is visually created, someMethod() will be called.\r\n */\r\nexport class ElementCreatedDirective implements OnInit {\r\n\r\n\r\n /**\r\n * Event that will be dispatched once element is created\r\n */\r\n @Output('elementCreated')\r\n public elementCreated: EventEmitter<ElementCreatedDirective> = new EventEmitter();\r\n\r\n\r\n /**\r\n * Listen for the on init event\r\n */\r\n ngOnInit() {\r\n\r\n this.elementCreated.next(this);\r\n }\r\n\r\n}\r\n","/**\r\n * TurboGUI is A library that helps with the most common and generic UI elements and functionalities\r\n *\r\n * Website : -> http://www.turbogui.org\r\n * License : -> Licensed under the Apache License, Version 2.0. You may not use this file except in compliance with the License.\r\n * License Url : -> http://www.apache.org/licenses/LICENSE-2.0\r\n * CopyRight : -> Copyright 2018 Edertone Advanded Solutions. https://www.edertone.com\r\n */\r\n\r\nimport { Directive, OnDestroy, EventEmitter, Output } from '@angular/core';\r\n\r\n\r\n/** This directive is used to listen for onDestroy events on raw html elements */\r\n@Directive({\r\n selector: '[elementDestroyed]'\r\n})\r\n\r\n\r\n/**\r\n * This directive is used to listen for onDestroy events on raw html elements\r\n * If we place (elementDestroyed)=\"someMethod()\" on the element at the html template part, when the element\r\n * that uses this directive is visually destroyed from the screen, someMethod() will be called.\r\n */\r\nexport class ElementDestroyedDirective implements OnDestroy {\r\n\r\n\r\n /**\r\n * Event that will be dispatched once element is destroyed\r\n */\r\n @Output('elementDestroyed')\r\n public elementDestroyed: EventEmitter<ElementDestroyedDirective> = new EventEmitter();\r\n\r\n\r\n /**\r\n * Listen for the on destroy event\r\n */\r\n ngOnDestroy() {\r\n\r\n this.elementDestroyed.next(this);\r\n }\r\n\r\n}\r\n","/**\r\n * TurboGUI is A library that helps with the most common and generic UI elements and functionalities\r\n *\r\n * Website : -> http://www.turbogui.org\r\n * License : -> Licensed under the Apache License, Version 2.0. You may not use this file except in compliance with the License.\r\n * License Url : -> http://www.apache.org/licenses/LICENSE-2.0\r\n * CopyRight : -> Copyright 2018 Edertone Advanded Solutions. https://www.edertone.com\r\n */\r\n\r\nimport { Directive, ElementRef, Renderer2, HostListener } from '@angular/core';\r\n\r\n\r\n/** This directive is used to perform an automatic select all text on an element every time it is focused */\r\n@Directive({\r\n selector: '[autoSelectTextOnFocus]'\r\n})\r\n\r\n\r\n/**\r\n * This directive is used to perform an an automatic select all text on an element every time it is focused.\r\n * If we set the autoSelectTextOnFocus tag to the html element, its text will be automatically selected after it gets the focus.\r\n */\r\nexport class AutoSelectTextOnFocusDirective {\r\n \r\n \r\n constructor(private el: ElementRef, private renderer: Renderer2) {\r\n \r\n if (!el.nativeElement['select']) {\r\n \r\n throw new Error('Element does not accept select');\r\n }\r\n }\r\n \r\n \r\n @HostListener('focus', ['$event']) onFocus() {\r\n \r\n this.renderer.selectRootElement(this.el.nativeElement).select();\r\n }\r\n}\r\n","/**\n * TurboGUI is A library that helps with the most common and generic UI elements and functionalities\n *\n * Website : -> http://www.turbogui.org\n * License : -> Licensed under the Apache License, Version 2.0. You may not use this file except in compliance with the License.\n * License Url : -> http://www.apache.org/licenses/LICENSE-2.0\n * CopyRight : -> Copyright 2018 Edertone Advanded Solutions. https://www.edertone.com\n */\n\nimport { NgModule } from '@angular/core';\nimport { MatDialogModule } from '@angular/material/dialog';\nimport { MatInputModule } from '@angular/material/input';\nimport { MatSnackBarModule } from '@angular/material/snack-bar';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { BrowserAnimationsModule } from '@angular/platform-browser/animations';\nimport { BusyStateBaseComponent } from '../../view/components/busy-state-base/busy-state-base.component';\nimport { DialogService } from '../../controller/dialog.service';\r\nimport { LocalizationService } from '../../controller/localization.service';\r\nimport { HTTPService } from '../../controller/http.service';\r\nimport { NotificationService } from '../../controller/notification.service';\nimport { UserService } from '../../controller/user.service';\nimport { ViewsService } from '../../controller/views.service';\r\nimport { ViewsContainerComponent } from '../../view/components/views-container/views-container.component';\r\nimport { ButtonImageComponent } from '../../view/components/button-image/button-image.component';\nimport { ButtonContainerComponent } from '../../view/components/button-container/button-container.component';\nimport { DialogErrorComponent } from '../../view/components/dialog-error/dialog-error.component';\nimport { DialogSingleOptionComponent } from '../../view/components/dialog-single-option/dialog-single-option.component';\nimport { DialogTwoOptionComponent } from '../../view/components/dialog-two-option/dialog-two-option.component';\nimport { DialogSingleSelectionListComponent } from '../../view/components/dialog-single-selection-list/dialog-single-selection-list.component';\r\nimport { DialogMultipleOptionComponent } from '../../view/components/dialog-multiple-option/dialog-multiple-option.component';\r\nimport { BrowserService } from '../../controller/browser.service';\r\nimport { ElementCreatedDirective } from '../../view/directives/ElementCreatedDirective';\r\nimport { ElementDestroyedDirective } from '../../view/directives/ElementDestroyedDirective';\r\nimport { AutoFocusOnDisplayDirective } from '../../view/directives/AutoFocusOnDisplayDirective';\r\nimport { AutoSelectTextOnFocusDirective } from '../../view/directives/AutoSelectTextOnFocusDirective';\n\n\n/**\n * This file contains the root module that contains all the library declarations and exports.\n */\n@NgModule({\n\n imports: [\n MatDialogModule,\n MatSnackBarModule,\n MatInputModule,\n MatButtonModule,\n MatFormFieldModule,\n BrowserAnimationsModule\n ],\n\n declarations: [\n BusyStateBaseComponent,\n DialogErrorComponent,\n DialogSingleOptionComponent,\n DialogTwoOptionComponent,\n DialogMultipleOptionComponent,\n DialogSingleSelectionListComponent,\n ViewsContainerComponent,\n ButtonImageComponent,\n ButtonContainerComponent,\n ElementCreatedDirective,\n ElementDestroyedDirective,\n AutoFocusOnDisplayDirective,\n AutoSelectTextOnFocusDirective\n ],\n\n // Globally available singleton services are added here\n providers: [\n DialogService,\n LocalizationService,\n HTTPService,\n NotificationService,\n UserService,\n ViewsService,\n BrowserService\n ],\n\n exports: [\n BusyStateBaseComponent,\n ViewsContainerComponent,\n ButtonImageComponent,\n ButtonContainerComponent,\n DialogErrorComponent,\n DialogSingleOptionComponent,\n DialogTwoOptionComponent,\n DialogMultipleOptionComponent,\n DialogSingleSelectionListComponent,\n ElementCreatedDirective,\n ElementDestroyedDirective,\n AutoFocusOnDisplayDirective,\n AutoSelectTextOnFocusDirective\n ]\n})\n\nexport class TurboGuiAngularModule { }\n","/**\r\n * TurboGUI is A library that helps with the most common and generic UI elements and functionalities\r\n *\r\n * Website : -> http://www.turbogui.org\r\n * License : -> Licensed under the Apache License, Version 2.0. You may not use this file except in compliance with the License.\r\n * License Url : -> http://www.apache.org/licenses/LICENSE-2.0\r\n * CopyRight : -> Copyright 2018 Edertone Advanded Solutions. https://www.edertone.com\r\n */\r\n\r\nimport { Injectable, ErrorHandler } from '@angular/core';\r\n\r\n\r\n/**\r\n * Captures all the application exceptions and performs any required action.\r\n * It also contains multiple general error management features.\r\n *\r\n * To define this class as your application error handler, you must add the following to your\r\n * main app module providers:\r\n * {\r\n * provide: ErrorHandler,\r\n * useClass: GlobalErrorService\r\n * },\r\n * GlobalErrorService\r\n *\r\n * You cannot access the error handler at runtime. If you need to modify any of the behaviours\r\n * or implement your custom ones, you must extend this class and set your new one as the error\r\n * handler provider.\r\n */\r\n@Injectable()\r\nexport class GlobalErrorService implements ErrorHandler {\r\n\r\n\r\n /**\r\n * Enables or disables the error notification to user via an alert box\r\n * Extend this class and override this value on your custom error handle to change it\r\n */\r\n private readonly showExceptionsToUser = true;\r\n\r\n\r\n /**\r\n * Enables or disables the error notification to user via an alert box\r\n * Extend this class and override this value on your custom error handle to change it\r\n */\r\n private readonly showExceptionsOnConsole = true;\r\n\r\n\r\n /**\r\n * Defines the text that will be used for the alert that is shown to the user when an exception happens\r\n * and showExceptionsToUser is true\r\n * Extend this class and override this value on your custom error handle to change it\r\n */\r\n private readonly errorAlertMessage = 'Application exception:\\n\\n';\r\n\r\n\r\n /**\r\n * Show an alert with the received error detail and also log it to the js console.\r\n *\r\n * Angular expects at least this method to be implemented on any class that is used as a global exception handler.\r\n *\r\n * @param error An error instance\r\n */\r\n handleError(error: any) {\r\n\r\n if (this.showExceptionsToUser) {\r\n\r\n alert(this.errorAlertMessage + (error as string));\r\n }\r\n\r\n if (this.showExceptionsOnConsole) {\r\n\r\n console.log(error);\r\n }\r\n\r\n throw error;\r\n }\r\n}\r\n","/**\r\n * TurboGUI is A library that helps with the most common and generic UI elements and functionalities\r\n *\r\n * Website : -> http://www.turbogui.org\r\n * License : -> Licensed under the Apache License, Version 2.0. You may not use this file except in compliance with the License.\r\n * License Url : -> http://www.apache.org/licenses/LICENSE-2.0\r\n * CopyRight : -> Copyright 2018 Edertone Advanded Solutions. https://www.edertone.com\r\n */\r\n\r\n\r\nimport { HTTPManagerGetRequest } from 'turbocommons-ts';\r\n\r\n\r\n/**\r\n * Class that defines a GET http request, to be used by HttpService\r\n */\r\nexport class HTTPServiceGetRequest extends HTTPManagerGetRequest {\r\n}\r\n","/**\r\n * TurboGUI is A library that helps with the most common and generic UI elements and functionalities\r\n *\r\n * Website : -> http://www.turbogui.org\r\n * License : -> Licensed under the Apache License, Version 2.0. You may not use this file except in compliance with the License.\r\n * License Url : -> http://www.apache.org/licenses/LICENSE-2.0\r\n * CopyRight : -> Copyright 2018 Edertone Advanded Solutions. https://www.edertone.com\r\n */\r\n\r\n/**\r\n * Defines the data that is contained inside a GUI notification\r\n */\r\nexport class GUINotification {\r\n\r\n\r\n constructor(name: string, type = '', data: any = null) {\r\n\r\n this.name = name;\r\n this.type = type;\r\n this.data = data;\r\n }\r\n\r\n\r\n /**\r\n * The name for this notification\r\n */\r\n name = '';\r\n\r\n\r\n /**\r\n * An optional type to categorize this notification in case the name is not enough\r\n * to uniquely identify it\r\n */\r\n type = '';\r\n\r\n\r\n /**\r\n * Additional data to send with the notification\r\n */\r\n data: any = null;\r\n}\r\n","/**\r\n * TurboGUI is A library that helps with the most common and generic UI elements and functionalities\r\n *\r\n * Website : -> http://www.turbogui.org\r\n * License : -> Licensed under the Apache License, Version 2.0. You may not use this file except in compliance with the License.\r\n * License Url : -> http://www.apache.org/licenses/LICENSE-2.0\r\n * CopyRight : -> Copyright 2018 Edertone Advanded Solutions. https://www.edertone.com\r\n */\r\n\r\nimport { Type } from '@angular/core';\r\nimport { ViewModel } from '../../model/classes/ViewModel';\r\n\r\n\r\n/**\r\n * Defines an application view.\r\n * Our View components must extend this class so they can be manipulated via ViewsService\r\n */\r\n\r\nexport abstract class View {\r\n \r\n\r\n /**\r\n * This method is used to obtain the model instance that is related to this view.\r\n * \r\n * We must declare this method in our view class to return the value of the currently active model, which is normally\r\n * retrieved via --> return this.viewsService.model as OurViewClassModel; <-- Where OurViewClassModel is the type of the model class.\r\n * If we are not using a mode with our class, we can set this method to simply return null.\r\n */\r\n abstract get model(): any;\r\n \r\n \r\n private _modelClass: null | Type<ViewModel> = null;\r\n\r\n \r\n /**\r\n * In order for the views service to know which model class must be created when setting a new active view,\r\n * each view must specify the class for the view model at the overriden constructor super() call.\r\n * All view models must also extend ViewModel. If we do not plan to attach a model to a view, we can pass a null value to \r\n * the constructor super() call.\r\n *\r\n * A new model instance will be automatically created each time the view is added to the views container, and \r\n * destroyed when the view is removed. So the view model will only live while the view is active on the views service.\r\n */\r\n constructor(modelClass: null | Type<ViewModel>) {\r\n \r\n this._modelClass = modelClass; \r\n }\r\n\r\n \r\n /**\r\n * Obtain the class type for the model that is linked to this view, or null if the view model is not yet instantiated.\r\n */\r\n get modelClass() {\r\n \r\n return this._modelClass;\r\n }\r\n}\r\n","/**\r\n * TurboGUI is A library that helps with the most common and generic UI elements and functionalities\r\n *\r\n * Website : -> http://www.turbogui.org\r\n * License : -> Licensed under the Apache License, Version 2.0. You may not use this file except in compliance with the License.\r\n * License Url : -> http://www.apache.org/licenses/LICENSE-2.0\r\n * CopyRight : -> Copyright 2018 Edertone Advanded Solutions. https://www.edertone.com\r\n */\r\n\r\n/**\r\n * Defines the model base class for an application view\r\n */\r\nexport abstract class ViewModel {\r\n\r\n}\r\n","/**\r\n * TurboGUI is A library that helps with the most common and generic UI elements and functionalities\r\n *\r\n * Website : -> http://www.turbogui.org\r\n * License : -> Licensed under the Apache License, Version 2.0. You may not use this file except in compliance with the License.\r\n * License Url : -> http://www.apache.org/licenses/LICENSE-2.0\r\n * CopyRight : -> Copyright 2018 Edertone Advanded Solutions. https://www.edertone.com\r\n */\r\n\r\nimport { ViewModel } from '../../model/classes/ViewModel';\r\nimport { ViewsService } from '../../controller/views.service';\r\n\r\n\r\n/**\r\n * Defines the service base class for a view service class. All services that are used by views must extend this.\r\n * We must create the view services as an @Injectable() angular class which will be globally available at any time, but we must take\r\n * into consideration that the view model will only be instantiated when the view is active.\r\n */\r\nexport abstract class ViewService<T extends ViewModel> {\r\n\r\n\r\n /**\r\n * Class requires a views service instance\r\n */\r\n constructor(public readonly viewsService: ViewsService) {\r\n }\r\n\r\n\r\n /**\r\n * A reference to the currently active view model\r\n */\r\n get model(): T {\r\n\r\n return this.viewsService.model as T;\r\n }\r\n}\r\n","/**\r\n * TurboGUI is A library that helps with the most common and generic UI elements and functionalities\r\n *\r\n * Website : -> http://www.turbogui.org\r\n * License : -> Licensed under the Apache License, Version 2.0. You may not use this file except in compliance with the License.\r\n * License Url : -> http://www.apache.org/licenses/LICENSE-2.0\r\n * CopyRight : -> Copyright 2018 Edertone Advanded Solutions. https://www.edertone.com\r\n */\r\n\r\n/**\r\n * Sometimes it is necessary to apply some kind of buffer to the user input for certain operations that may be executed\r\n * several times but we need to capture only the latest of them into a certain period of time. This class does exactly this:\r\n * we can queue as many times as we want a specific method call and only the last one will be executed under a defined window of time.\r\n * So for example if a user types keys on an input, we can buffer it for x seconds and perform a request only with the last of its changes.\r\n * Lots of other UI interaction usages may be interesting with this class.\r\n */\r\nexport class DelayedMethodCallManager{\r\n\r\n\r\n private _functionsToExecute: Function[] = [];\r\n\r\n\r\n private _timerIsRunning = false;\r\n \r\n \r\n private _setTimeoutHandler: any = null;\r\n \r\n\r\n /**\r\n * Sometimes it is necessary to apply some kind of buffer to the user input for certain operations that may be executed\r\n * several times but we need to capture only the latest of them into a certain period of time. This class does exactly this:\r\n * we can queue as many times as we want a specific method call and only the last one will be executed under a defined window of time.\r\n * So for example if a user types keys on an input, we can buffer it for x seconds and perform a request only with the last of its changes.\r\n * Lots of other UI interaction usages may be interesting with this class.\r\n *\r\n * @param delay Amount of time to wait before executing the operations . Defaults to 1000 miliseconds.\r\n */\r\n constructor(private delay = 1000) {\r\n \r\n }\r\n \r\n \r\n /**\r\n * Add a method to be called once the delay time is finished.\r\n * Every time a new call to queue is performed, the delay timer is restarted. When the delay time finishes, only the\r\n * last of the methods that have been pushed by call() will be executed.\r\n *\r\n * Use it to queue several user input operations that should be called only once in a period of time, while waiting\r\n * for the user to finish his input.\r\n *\r\n * @param method The function that will be queued for execution after the delay time has passed\r\n */\r\n queue(method: () => void){\r\n \r\n this._functionsToExecute.push(method);\r\n \r\n if(this._timerIsRunning){\r\n \r\n clearTimeout(this._setTimeoutHandler);\r\n }\r\n \r\n this._timerIsRunning = true;\r\n \r\n this._setTimeoutHandler = setTimeout(() => {this.run() }, this.delay);\r\n }\r\n \r\n \r\n /**\r\n * Abort all methods that may have been pushed to this class and are waiting to be executed, so none of them\r\n * is executed when the delay time finishes. Basically everything is cleared and stoped when this method is called.\r\n */\r\n cancel(){\r\n \r\n if(this._setTimeoutHandler !== null){\r\n \r\n clearTimeout(this._setTimeoutHandler);\r\n }\r\n \r\n this._functionsToExecute = [];\r\n \r\n this._timerIsRunning = false;\r\n }\r\n \r\n \r\n /**\r\n * Auxiliary function that performs the call to the latest queued method\r\n */\r\n private run(){\r\n \r\n (this._functionsToExecute.pop() as () => void)();\r\n \r\n this._functionsToExecute = [];\r\n \r\n this._timerIsRunning = false;\r\n }\r\n}\r\n","/*\r\n * Public API Surface of turbogui-angular\r\n */\r\n\r\nexport { TurboGuiAngularModule } from './main/model/modules/turbogui-angular.module';\r\n\r\n\r\n/**\r\n * Services\r\n */\r\nexport { NotificationService } from './main/controller/notification.service';\r\nexport { GlobalErrorService } from './main/controller/globalerror.service';\r\nexport { LocalizationService } from './main/controller/localization.service';\r\nexport { HTTPService } from './main/controller/http.service';\r\nexport { HTTPServiceGetRequest } from './main/controller/httpservice/HTTPServiceGetRequest';\r\nexport { HTTPServicePostRequest } from './main/controller/httpservice/HTTPServicePostRequest';\r\nexport { DialogService } from './main/controller/dialog.service';\r\nexport { UserService } from './main/controller/user.service';\r\nexport { ViewsService } from './main/controller/views.service';\r\nexport { BrowserService } from './main/controller/browser.service';\r\n\r\n\r\n/**\r\n * Components\r\n */\r\nexport { BusyStateBaseComponent } from './main/view/components/busy-state-base/busy-state-base.component';\r\nexport { DialogOptionsBaseComponent } from './main/view/components/dialog-options-base/dialog-options-base.component';\r\nexport { DialogErrorComponent } from './main/view/components/dialog-error/dialog-error.component';\r\nexport { DialogSingleOptionComponent } from './main/view/components/dialog-single-option/dialog-single-option.component';\r\nexport { DialogTwoOptionComponent } from './main/view/components/dialog-two-option/dialog-two-option.component';\r\nexport { DialogMultipleOptionComponent } from './main/view/components/dialog-multiple-option/dialog-multiple-option.component';\r\nexport { DialogSingleSelectionListComponent } from './main/view/components/dialog-single-selection-list/dialog-single-selection-list.component';\r\nexport { ViewsContainerComponent } from './main/view/components/views-container/views-container.component';\r\nexport { ButtonImageComponent } from './main/view/components/button-image/button-image.component';\r\nexport { ButtonContainerComponent } from './main/view/components/button-container/button-container.component';\r\n\r\n\r\n/**\r\n * Classes\r\n */\r\nexport { GUINotification } from './main/model/classes/GUINotification';\r\nexport { View } from './main/model/classes/View';\r\nexport { ViewModel } from './main/model/classes/ViewModel';\r\nexport { ViewService } from './main/model/classes/ViewService';\r\nexport { DelayedMethodCallManager } from './main/managers/DelayedMethodCallManager';\r\nexport { FadeAnimationClass } from './main/view/animations/fade.animation';\r\nexport { ElementCreatedDirective } from './main/view/directives/ElementCreatedDirective';\r\nexport { ElementDestroyedDirective } from './main/view/directives/ElementDestroyedDirective';\r\nexport { AutoFocusOnDisplayDirective } from './main/view/directives/AutoFocusOnDisplayDirective';\r\nexport { AutoSelectTextOnFocusDirective } from './main/view/directives/AutoSelectTextOnFocusDirective';\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":["i2","i1.DialogService","i1.HTTPService","i2.LocalizationService","i1","i3","i5","i6","i7.AutoFocusOnDisplayDirective"],"mappings":";;;;;;;;;;;;;;;;;;;AAAA;;;;;;;AAOG;AAMH;;AAEG;MAEU,kBAAkB,CAAA;AAE3B;;;;;;AAMG;IACH,OAAO,UAAU,CAAC,WAAmB,EAAE,KAAK,GAAG,SAAS,EAAE,KAAK,GAAG,SAAS,EAAA;QAEvE,OAAO,OAAO,CAAC,WAAW,EAAE;AACC,YAAA,UAAU,CAAC,QAAQ,EAAE,CAAC,KAAK,CAAC,EAAC,OAAO,EAAE,CAAC,EAAC,CAAC,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC;YAC3D,UAAU,CAAC,QAAQ,EAAE,CAAC,KAAK,CAAC,EAAC,OAAO,EAAE,CAAC,EAAC,CAAC,EAAE,OAAO,CAAC,KAAK,EAAE,KAAK,CAAC,EAAC,OAAO,EAAE,CAAC,EAAC,CAAC,CAAC,CAAC,CAAC;AAChF,SAAA,CAAC,CAAC;KAClC;+GAfQ,kBAAkB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA,EAAA;mHAAlB,kBAAkB,EAAA,CAAA,CAAA,EAAA;;4FAAlB,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAD9B,UAAU;;;AChBX;;;;;;;AAOG;AAMH;;;;;;;;AAQG;MASU,sBAAsB,CAAA;AARnC,IAAA,WAAA,GAAA;AAWI;;AAEG;QACgC,IAAiB,CAAA,iBAAA,GAAG,IAAI,CAAC;AAC/D,KAAA;+GAPY,sBAAsB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAAtB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,sBAAsB,EC9BnC,QAAA,EAAA,oBAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,oBAAA,EAAA,wBAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,ivBAoBA,EDKc,MAAA,EAAA,CAAA,moBAAA,CAAA,EAAA,UAAA,EAAA,CAAC,kBAAkB,CAAC,UAAU,CAAC,mBAAmB,EAAE,SAAS,EAAE,YAAY,CAAC,CAAC,EAAA,CAAA,CAAA,EAAA;;4FAK9E,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBARlC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,oBAAoB,EAElB,UAAA,EAAA,CAAC,kBAAkB,CAAC,UAAU,CAAC,mBAAmB,EAAE,SAAS,EAAE,YAAY,CAAC,CAAC,EAAA,QAAA,EAAA,ivBAAA,EAAA,MAAA,EAAA,CAAA,moBAAA,CAAA,EAAA,CAAA;8BAWpD,iBAAiB,EAAA,CAAA;sBAAnD,WAAW;uBAAC,oBAAoB,CAAA;;;AEpCrC;;;;;;;AAOG;AAYH;;AAEG;MAEU,aAAa,CAAA;IAyFtB,WAAY,CAAA,eAAiC,EAChB,WAAwB,EACxB,SAAoB,EACpB,QAAkB,EAClB,cAA8B,EAC9B,wBAAkD,EAAA;QAJlD,IAAW,CAAA,WAAA,GAAX,WAAW,CAAa;QACxB,IAAS,CAAA,SAAA,GAAT,SAAS,CAAW;QACpB,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAU;QAClB,IAAc,CAAA,cAAA,GAAd,cAAc,CAAgB;QAC9B,IAAwB,CAAA,wBAAA,GAAxB,wBAAwB,CAA0B;AA3F/E;;;;AAIG;QACH,IAA6B,CAAA,6BAAA,GAAiC,sBAAsB,CAAC;AAGrF;;AAEG;QACK,IAAU,CAAA,UAAA,GAAG,IAAI,CAAC;AAG1B;;AAEG;QACK,IAAmB,CAAA,mBAAA,GAAG,KAAK,CAAC;AAGpC;;;;AAIG;QACK,IAAgB,CAAA,gBAAA,GAAmD,IAAI,CAAC;AAGhF;;AAEG;QACK,IAAmB,CAAA,mBAAA,GAA2B,IAAI,CAAC;AAG3D;;AAEG;QACK,IAAkB,CAAA,kBAAA,GAAG,KAAK,CAAC;AAGnC;;;;;AAKG;QACK,IAAc,CAAA,cAAA,GAAa,EAAE,CAAC;AAGtC;;;AAGG;QACK,IAAsB,CAAA,sBAAA,GAAwC,EAAE,CAAC;AASzE;;AAEG;QACK,IAA2B,CAAA,2BAAA,GAAwB,IAAI,CAAC;AAGhE;;AAEG;QACK,IAAwB,CAAA,wBAAA,GAAwB,IAAI,CAAC;AAG7D;;AAEG;QACK,IAA0B,CAAA,0BAAA,GAAwB,IAAI,CAAC;AAG/D;;AAEG;QACK,IAA4B,CAAA,4BAAA,GAAwB,IAAI,CAAC;QAU7D,IAAI,CAAC,SAAS,GAAG,eAAe,CAAC,cAAc,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;KAC/D;AAGD;;;;;AAKG;IACH,IAAI,SAAS,CAAC,CAAU,EAAA;AAEpB,QAAA,IAAI,CAAC,KAAK,IAAI,CAAC,UAAU,EAAE;YAEvB,OAAO;AACV,SAAA;AAED,QAAA,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC;KACvB;AAGD;;;;;;;AAOG;IACH,0BAA0B,GAAA;AAEtB,QAAA,IAAI,IAAI,CAAC,2BAA2B,KAAK,IAAI,EAAE;YAE3C,IAAI,CAAC,2BAA2B,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,QAAQ,EAAE,cAAc,EAC7E,CAAC,KAAK,KAAK,KAAK,CAAC,WAAW,GAAG,IAAI,CAAC,CAAC;AAC5C,SAAA;KACJ;AAGD;;AAEG;IACH,6BAA6B,GAAA;AAEzB,QAAA,IAAI,IAAI,CAAC,2BAA2B,KAAK,IAAI,EAAE;YAE3C,IAAI,CAAC,2BAA2B,EAAE,CAAC;AACnC,YAAA,IAAI,CAAC,2BAA2B,GAAG,IAAI,CAAC;AAC3C,SAAA;KACJ;AAGD;;;;;;;;;;;;AAYG;IACH,iBAAiB,GAAA;QAEb,IAAI,CAAC,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,mBAAmB,EAAE;YAE9C,OAAO;AACV,SAAA;QAED,IAAI,CAAC,uBAAuB,EAAE,CAAC;;AAG/B,QAAA,IAAI,IAAI,CAAC,gBAAgB,KAAK,IAAI,EAAE;YAEhC,IAAI,CAAC,gBAAgB,GAAG,IAAI,eAAe,CAAC,IAAI,CAAC,6BAA6B,CAAC,CAAC;;YAGhF,IAAI,CAAC,mBAAmB,GAAG,IAAI,eAAe,CACtC,QAAQ,CAAC,IAAI,EACb,IAAI,CAAC,wBAAwB,EAC7B,IAAI,CAAC,cAAc,EACnB,IAAI,CAAC,QAAQ,CAAC,CAAC;AAC1B,SAAA;QAEA,IAAI,CAAC,mBAAuC,CAAC,MAAM,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;AAE5E,QAAA,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC;KACnC;AAGD;;AAEG;AACH,IAAA,IAAI,kBAAkB,GAAA;QAElB,OAAO,IAAI,CAAC,mBAAmB,CAAC;KACnC;AAGD;;AAEG;IACH,oBAAoB,GAAA;QAEhB,IAAI,CAAC,IAAI,CAAC,UAAU,IAAI,CAAC,IAAI,CAAC,mBAAmB,EAAE;YAE/C,OAAO;AACV,SAAA;AAED,QAAA,IAAI,IAAI,CAAC,gBAAgB,KAAK,IAAI,EAAE;AAE/B,YAAA,IAAI,CAAC,mBAAuC,CAAC,MAAM,EAAE,CAAC;AAC1D,SAAA;QAED,IAAI,CAAC,sBAAsB,EAAE,CAAC;AAE9B,QAAA,IAAI,CAAC,mBAAmB,GAAG,KAAK,CAAC;KACpC;AAGD;;AAEG;IACH,UAAU,GAAA;;KAGT;AAGD;;;;;;;;;;;;AAYG;IACH,WAAW,CAAC,MAAyB,EAAE,OAAe,EAAE,MAAM,GAAG,EAAE,EAAE,cAAA,GAAsC,IAAI,EAAA;AAE3G,QAAA,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE;YAElB,OAAO;AACV,SAAA;QAED,IAAI,IAAI,CAAC,kBAAkB,EAAE;AAEzB,YAAA,MAAM,IAAI,KAAK,CAAC,8DAA8D,CAAC,CAAC;AACnF,SAAA;AAED,QAAA,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC;QAE/B,MAAM,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,OAAO,EAAE,MAAM,KAAK,EAAE,GAAG,SAAS,GAAG,MAAM,EAAE,MAAM,CAAC,CAAC;QAE/F,IAAI,cAAc,KAAK,IAAI,EAAE;AAEzB,YAAA,WAAW,CAAC,QAAQ,EAAE,CAAC,SAAS,CAAC,MAAK;AAElC,gBAAA,cAAc,EAAE,CAAC;AACrB,aAAC,CAAC,CAAC;AACN,SAAA;KACJ;AAGD;;AAEG;AACH,IAAA,IAAI,iBAAiB,GAAA;QAEjB,OAAO,IAAI,CAAC,kBAAkB,CAAC;KAClC;AAGD;;;;AAIG;IACH,cAAc,GAAA;QAEV,IAAI,CAAC,IAAI,CAAC,UAAU,IAAI,CAAC,IAAI,CAAC,kBAAkB,EAAE;YAE9C,OAAO;AACV,SAAA;AAED,QAAA,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE,CAAC;AAE3B,QAAA,IAAI,CAAC,kBAAkB,GAAG,KAAK,CAAC;KACnC;AAGD;;;;;;;;;;;;;;;;AAgBG;AACH,IAAA,SAAS,CAAC,KAAa,EACb,KAAe,EACf,OAAiB,EACjB,oBAAsD,EACtD,QAA6E,GAAA,IAAI,EACjF,KAAK,GAAG,IAAI,EAAA;AAElB,QAAA,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE;YAElB,OAAO;AACV,SAAA;;AAGD,QAAA,MAAM,UAAU,GAAG,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,oBAAoB,CAAC,IAAI,CAAC;;QAGjF,IAAI,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE;YAE1C,OAAO;AACV,SAAA;QAED,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,oBAAoB,EAAE;AACxD,YAAA,KAAK,EAAE,KAAK;AACZ,YAAA,YAAY,EAAE,KAAK;AACnB,YAAA,SAAS,EAAE,KAAK;YAChB,iBAAiB,EAAE,CAAC,KAAK;YACzB,IAAI,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE;AACzC,SAAA,CAAC,CAAC;AAEL,QAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;AACrC,QAAA,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAE5C,SAAS,CAAC,YAAY,EAAE,CAAC,SAAS,CAAC,CAAC,mBAAwB,KAAI;AAE5D,YAAA,IAAI,CAAC,cAAc,GAAG,UAAU,CAAC,aAAa,CAAC,IAAI,CAAC,cAAc,EAAE,UAAU,CAAC,CAAC;AAChF,YAAA,IAAI,CAAC,sBAAsB,GAAG,UAAU,CAAC,aAAa,CAAC,IAAI,CAAC,sBAAsB,EAAE,SAAS,CAAC,CAAC;AAE/F,YAAA,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,mBAAmB,CAAC,EAAE;AAE9C,gBAAA,IAAG,KAAK,EAAC;AAEL,oBAAA,MAAM,IAAI,KAAK,CAAC,CAAA,mCAAA,CAAqC,CAAC,CAAC;AAE1D,iBAAA;AAAI,qBAAA;oBAED,mBAAmB,GAAG,CAAC,CAAC,CAAC;AAC5B,iBAAA;AACJ,aAAA;YAED,IAAI,QAAQ,KAAK,IAAI,EAAE;gBAEnB,IAAI,cAAc,GAAG,EAAC,KAAK,EAAE,mBAAmB,EAAE,KAAK,EAAE,EAAE,EAAC,CAAC;gBAE7D,IAAG,mBAAmB,IAAI,CAAC,EAAC;AAExB,oBAAA,cAAc,CAAC,KAAK,GAAG,OAAO,CAAC,mBAAmB,CAAC,CAAC;AACvD,iBAAA;gBAEA,QAAsE,CAAC,cAAc,CAAC,CAAC;AAC3F,aAAA;AACL,SAAC,CAAC,CAAC;KACN;AAGD;;;;AAIG;IACH,gBAAgB,GAAA;AAEZ,QAAA,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE;YAElB,OAAO;AACV,SAAA;AAED,QAAA,KAAK,MAAM,SAAS,IAAI,IAAI,CAAC,sBAAsB,EAAE;AAEjD,YAAA,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;AACvB,SAAA;AAED,QAAA,IAAI,CAAC,cAAc,GAAG,EAAE,CAAC;AACzB,QAAA,IAAI,CAAC,sBAAsB,GAAG,EAAE,CAAC;KACpC;AAGD;;AAEG;IACK,uBAAuB,GAAA;AAE3B,QAAA,IAAI,IAAI,CAAC,wBAAwB,KAAK,IAAI,EAAE;YAExC,IAAI,CAAC,wBAAwB,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,UAAU,EAAE,SAAS,EAAE,CAAC,KAAK,KAAK,KAAK,CAAC,cAAc,EAAE,CAAC,CAAC;AACnH,SAAA;AAED,QAAA,IAAI,IAAI,CAAC,0BAA0B,KAAK,IAAI,EAAE;YAE1C,IAAI,CAAC,0BAA0B,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,UAAU,EAAE,WAAW,EAAE,CAAC,KAAK,KAAK,KAAK,CAAC,cAAc,EAAE,CAAC,CAAC;AACvH,SAAA;AAED,QAAA,IAAI,IAAI,CAAC,4BAA4B,KAAK,IAAI,EAAE;YAE5C,IAAI,CAAC,4BAA4B,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,UAAU,EAAE,aAAa,EAAE,CAAC,KAAK,KAAK,KAAK,CAAC,cAAc,EAAE,CAAC,CAAC;AAC3H,SAAA;KACJ;AAGD;;AAEG;IACK,sBAAsB,GAAA;AAE1B,QAAA,IAAI,IAAI,CAAC,wBAAwB,KAAK,IAAI,EAAE;YAExC,IAAI,CAAC,wBAAwB,EAAE,CAAC;AAChC,YAAA,IAAI,CAAC,wBAAwB,GAAG,IAAI,CAAC;AACxC,SAAA;AAED,QAAA,IAAI,IAAI,CAAC,0BAA0B,KAAK,IAAI,EAAE;YAE1C,IAAI,CAAC,0BAA0B,EAAE,CAAC;AAClC,YAAA,IAAI,CAAC,0BAA0B,GAAG,IAAI,CAAC;AAC1C,SAAA;AAED,QAAA,IAAI,IAAI,CAAC,4BAA4B,KAAK,IAAI,EAAE;YAE5C,IAAI,CAAC,4BAA4B,EAAE,CAAC;AACpC,YAAA,IAAI,CAAC,0BAA0B,GAAG,IAAI,CAAC;AAC1C,SAAA;KACJ;+GAzbQ,aAAa,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,WAAA,EAAA,EAAA,EAAA,KAAA,EAAAA,IAAA,CAAA,SAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,QAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,cAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,wBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA,EAAA;mHAAb,aAAa,EAAA,CAAA,CAAA,EAAA;;4FAAb,aAAa,EAAA,UAAA,EAAA,CAAA;kBADzB,UAAU;;;ACtBX;;;;;;;AAOG;AAMH;;AAEG;AAEG,MAAO,mBAAoB,SAAQ,mBAAmB,CAAA;+GAA/C,mBAAmB,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA,EAAA;mHAAnB,mBAAmB,EAAA,CAAA,CAAA,EAAA;;4FAAnB,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAD/B,UAAU;;;AChBX;;;;;;;AAOG;AAGH;;AAEG;MACmB,mBAAmB,CAAA;AAExC;;ACfD;;;;;;;AAOG;AAMH;;AAEG;AAEG,MAAgB,0BAA2B,SAAQ,mBAAmB,CAAA;AAE3E;;ACnBD;;;;;;;AAOG;AAOH;;AAEG;AAQG,MAAO,oBAAqB,SAAQ,0BAA0B,CAAA;IAEhE,WAAmB,CAAA,SAAmD,EAAkC,IAAS,EAAA;AAE7G,QAAA,KAAK,EAAE,CAAC;QAFO,IAAS,CAAA,SAAA,GAAT,SAAS,CAA0C;QAAkC,IAAI,CAAA,IAAA,GAAJ,IAAI,CAAK;AAI7G,QAAA,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE;AAEvB,YAAA,MAAM,IAAI,KAAK,CAAC,8EAA8E,CAAC,CAAC;AACnG,SAAA;AAED,QAAA,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE;AAE3B,YAAA,MAAM,IAAI,KAAK,CAAC,8CAA8C,CAAC,CAAC;AACnE,SAAA;KACJ;AAfQ,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,oBAAoB,gDAEmD,eAAe,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAFtF,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,oBAAoB,8ECxBjC,+pBAsBS,EAAA,MAAA,EAAA,CAAA,+PAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,QAAA,EAAA,6GAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,eAAA,EAAA,OAAA,CAAA,EAAA,QAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA;;4FDEI,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBAPhC,SAAS;+BACE,iBAAiB,EAAA,QAAA,EAAA,+pBAAA,EAAA,MAAA,EAAA,CAAA,+PAAA,CAAA,EAAA,CAAA;;0BAQgD,MAAM;2BAAC,eAAe,CAAA;;;AE1BnG;;;;;;;AAOG;AAQH;;AAEG;AAEG,MAAO,WAAY,SAAQ,WAAW,CAAA;AAGxC;;;AAGG;aACa,IAAmB,CAAA,mBAAA,GAAG,qBAAqB,CAAC,EAAA;AAG5D;;;AAGG;aACa,IAAsB,CAAA,sBAAA,GAAG,wBAAwB,CAAC,EAAA;AAGlE,IAAA,WAAA,CAAmB,aAA4B,EAAA;QAE3C,KAAK,CAAC,IAAI,CAAC,CAAC;QAFG,IAAa,CAAA,aAAA,GAAb,aAAa,CAAe;KAG9C;AAGD;;;;;;;AAOG;IACH,OAAO,CAAC,QAAyE,EACzE,gBAA8I,GAAA,IAAI,EAClJ,gBAAmF,GAAA,IAAI,EACvF,OAAA,GAAgG,EAAE,EAAA;QAEtG,IAAG,OAAO,CAAC,OAAO,CAAC,WAAW,CAAC,mBAAmB,CAAC,GAAG,CAAC,EAAC;AAErD,YAAA,IAAI,CAAC,aAAa,CAAC,iBAAiB,EAAE,CAAC;AACzC,SAAA;QAED,KAAK,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC,OAAO,EAAE,QAAQ,KAAI;YAE1C,IAAG,OAAO,CAAC,OAAO,CAAC,WAAW,CAAC,mBAAmB,CAAC,GAAG,CAAC,EAAC;AAEpD,gBAAA,IAAI,CAAC,aAAa,CAAC,oBAAoB,EAAE,CAAC;AAC7C,aAAA;AAED,YAAA,IAAG,CAAC,OAAO,CAAC,OAAO,CAAC,WAAW,CAAC,sBAAsB,CAAC,GAAG,CAAC,KAAK,QAAQ,EAAC;AAErE,gBAAA,KAAI,IAAI,MAAM,IAAI,OAAO,EAAC;oBAEtB,IAAG,MAAM,CAAC,OAAO,EAAC;wBAEd,IAAI,QAAQ,GAAG,MAAM,CAAC,QAAQ,GAAG,MAAM,GAAG,MAAM,CAAC,QAAQ,CAAC;AAE1D,wBAAA,IAAG,WAAW,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAC;4BAE7B,QAAQ,GAAG,2DAA2D,CAAC;AAC1E,yBAAA;wBAED,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,OAAO,EAAE,CAAC,SAAS,GAAG,MAAM,CAAC,IAAI,EAAE,QAAQ,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,oBAAoB,CAAC,CAAC;AAC5G,qBAAA;AACJ,iBAAA;AACJ,aAAA;YAED,IAAG,gBAAgB,KAAK,IAAI,EAAC;AAEzB,gBAAA,gBAAgB,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;AACvC,aAAA;SAEH,EAAE,gBAAgB,CAAC,CAAC;KACzB;+GAxEQ,WAAW,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAC,aAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA,EAAA;mHAAX,WAAW,EAAA,CAAA,CAAA,EAAA;;4FAAX,WAAW,EAAA,UAAA,EAAA,CAAA;kBADvB,UAAU;;;AClBX;;;;;;;AAOG;AAOH;;;;AAIG;MAEU,mBAAmB,CAAA;AADhC,IAAA,WAAA,GAAA;AAII;;AAEG;AACc,QAAA,IAAA,CAAA,cAAc,GAAG,IAAI,OAAO,EAAmB,CAAC;AAoCpE,KAAA;AAjCG;;;;;;AAMG;AACH,IAAA,SAAS,CAAC,mBAA2D,EAAA;QAEjE,OAAO,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,mBAAmB,CAAC,CAAC;KAC7D;AAGD;;;;AAIG;AACH,IAAA,IAAI,CAAC,YAA6B,EAAA;AAE9B,QAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;KAC1C;AAGD;;;;AAIG;AACH,IAAA,WAAW,CAAC,YAA0B,EAAA;AAElC,QAAA,OAAO,YAAY,CAAC,WAAW,EAAE,CAAC;KACrC;+GAzCQ,mBAAmB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA,EAAA;mHAAnB,mBAAmB,EAAA,CAAA,CAAA,EAAA;;4FAAnB,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAD/B,UAAU;;;ACnBX;;;;;;;AAOG;AAMH;;AAEG;AACG,MAAO,sBAAuB,SAAQ,sBAAsB,CAAA;AACjE;;ACjBD;;;;;;;AAOG;AASH;;AAEG;MAEU,WAAW,CAAA;IAiCpB,WAAmB,CAAA,WAAwB,EACxB,EAAuB,EAAA;QADvB,IAAW,CAAA,WAAA,GAAX,WAAW,CAAa;QACxB,IAAE,CAAA,EAAA,GAAF,EAAE,CAAqB;AA/B1C;;AAEG;QACH,IAAe,CAAA,eAAA,GAAG,aAAa,CAAC;AAGhC;;AAEG;QACH,IAAQ,CAAA,QAAA,GAAG,EAAE,CAAC;AAGd;;AAEG;QACH,IAAQ,CAAA,QAAA,GAAG,EAAE,CAAC;AAGd;;AAEG;QACK,IAAS,CAAA,SAAA,GAAG,KAAK,CAAC;AAG1B;;AAEG;QACK,IAAM,CAAA,MAAA,GAAG,EAAE,CAAC;KAKnB;AAGD;;AAEG;AACH,IAAA,IAAI,mBAAmB,GAAA;AAEnB,QAAA,OAAO,CAAC,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;KACrF;AAGD;;AAEG;AACH,IAAA,IAAI,QAAQ,GAAA;QAER,OAAO,IAAI,CAAC,SAAS,CAAC;KACzB;AAGD;;AAEG;AACH,IAAA,IAAI,KAAK,GAAA;QAEL,OAAO,IAAI,CAAC,MAAM,CAAC;KACtB;AAGD;;;;;AAKG;AACH,IAAA,KAAK,CAAC,eAAA,GAAoD,IAAI,EAAE,oBAAyC,IAAI,EAAA;QAEzG,MAAM,OAAO,GAAG,IAAI,sBAAsB,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;AAEjE,QAAA,OAAO,CAAC,sBAAsB,GAAG,IAAI,CAAC;QAEtC,MAAM,kBAAkB,GAAG,eAAe,CAAC,cAAc,CACjD,eAAe,CAAC,cAAc,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,GAAG,GAAG,eAAe,CAAC,cAAc,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC;QAE7G,OAAO,CAAC,UAAU,GAAG;AACjB,YAAA,IAAI,EAAE,kBAAkB;SAC3B,CAAC;AAEF,QAAA,OAAO,CAAC,eAAe,GAAG,CAAC,QAAQ,KAAI;YAEnC,IAAI,QAAQ,KAAK,EAAE,EAAE;AAEjB,gBAAA,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;AAEhC,gBAAA,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;AACtB,gBAAA,IAAI,CAAC,MAAM,GAAG,QAAQ,CAAC,KAAK,CAAC;gBAC7B,IAAI,CAAC,WAAW,CAAC,kBAAkB,CAAC,OAAO,EAAE,QAAQ,CAAC,KAAK,CAAC,CAAC;gBAE7D,IAAI,eAAe,KAAK,IAAI,EAAE;oBAE1B,eAAe,CAAC,QAAQ,CAAC,CAAC;AAC7B,iBAAA;AAEJ,aAAA;AAAM,iBAAA;gBAEH,IAAI,CAAC,kBAAkB,EAAE,CAAC;gBAE1B,IAAI,iBAAiB,KAAK,IAAI,EAAE;AAE5B,oBAAA,iBAAiB,EAAE,CAAC;AACvB,iBAAA;AACJ,aAAA;AACL,SAAC,CAAC;AAEF,QAAA,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;KACrC;AAGD;;AAEG;IACH,MAAM,CAAC,mBAAwC,IAAI,EAAA;AAE/C,QAAA,MAAM,OAAO,GAAG,IAAI,sBAAsB,CAAC,cAAc,CAAC,CAAC;QAE3D,OAAO,CAAC,UAAU,GAAG;YACjB,KAAK,EAAE,IAAI,CAAC,MAAM;SACrB,CAAC;AAEF,QAAA,OAAO,CAAC,eAAe,GAAG,MAAK;YAE3B,IAAI,CAAC,kBAAkB,EAAE,CAAC;YAE1B,IAAI,gBAAgB,KAAK,IAAI,EAAE;AAE3B,gBAAA,gBAAgB,EAAE,CAAC;AACtB,aAAA;AACL,SAAC,CAAC;AAEF,QAAA,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;KACrC;IAGO,kBAAkB,GAAA;AAEtB,QAAA,IAAI,CAAC,QAAQ,GAAG,EAAE,CAAC;AACnB,QAAA,IAAI,CAAC,QAAQ,GAAG,EAAE,CAAC;AACnB,QAAA,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;AACvB,QAAA,IAAI,CAAC,MAAM,GAAG,EAAE,CAAC;QAEjB,IAAG,IAAI,CAAC,WAAW,CAAC,iBAAiB,CAAC,OAAO,CAAC,EAAC;AAE3C,YAAA,IAAI,CAAC,WAAW,CAAC,qBAAqB,CAAC,OAAO,CAAC,CAAC;AACnD,SAAA;KACJ;+GAtJQ,WAAW,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAC,WAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,mBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA,EAAA;mHAAX,WAAW,EAAA,CAAA,CAAA,EAAA;;4FAAX,WAAW,EAAA,UAAA,EAAA,CAAA;kBADvB,UAAU;;;ACnBX;;;;;;;AAOG;AAOH;;AAEG;MAEU,YAAY,CAAA;AAqBrB,IAAA,WAAA,CAA6B,wBAAkD,EAAA;QAAlD,IAAwB,CAAA,wBAAA,GAAxB,wBAAwB,CAA0B;AAlB/E;;AAEG;QACK,IAAgB,CAAA,gBAAA,GAAsB,IAAI,CAAC;AAGnD;;AAEG;QACK,IAAgB,CAAA,gBAAA,GAAqB,IAAI,CAAC;AAGlD;;AAEG;QACK,IAAiB,CAAA,iBAAA,GAA4B,IAAI,CAAC;KAKzD;AAGD;;AAEG;AACH,IAAA,IAAI,YAAY,GAAA;AAEZ,QAAA,OAAO,IAAI,CAAC,gBAAgB,KAAK,IAAI,CAAC;KACzC;AAGD;;;;;AAKG;IACH,IAAI,gBAAgB,CAAC,GAA4B,EAAA;QAE7C,IAAI,GAAG,KAAK,IAAI,IAAI,IAAI,CAAC,iBAAiB,KAAK,IAAI,EAAE;AAEjD,YAAA,MAAM,IAAI,KAAK,CAAC,+FAA+F,CAAC,CAAC;AACpH,SAAA;AAED,QAAA,IAAI,CAAC,iBAAiB,GAAG,GAAG,CAAC;KAChC;AAGD;;;;;;;;;AASG;AACH,IAAA,QAAQ,CAAC,IAAgB,EAAA;;AAGrB,QAAA,IAAI,IAAI,CAAC,gBAAgB,KAAK,IAAI,EAAE;;AAGhC,YAAA,IAAI,IAAI,CAAC,gBAAgB,KAAK,IAAI,EAAE;gBAEhC,OAAO;AACV,aAAA;YAED,IAAI,CAAC,OAAO,EAAE,CAAC;AAClB,SAAA;QAED,IAAI,CAAC,yBAAyB,EAAE,CAAC;QAEjC,MAAM,OAAO,GAAG,IAAI,CAAC,wBAAwB,CAAC,uBAAuB,CAAC,IAAI,CAAC,CAAC;QAE5E,MAAM,YAAY,GAAI,IAAI,CAAC,iBAAsC,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC;QAE3F,IAAI,CAAC,gBAAgB,GAAG,YAAY,CAAC,QAAQ,CAAC,UAAU,KAAK,IAAI,GAAG,IAAK,YAAY,CAAC,QAAQ,CAAC,UAAkB,EAAE,GAAG,IAAI,CAAC;AAE3H,QAAA,YAAY,CAAC,iBAAiB,CAAC,aAAa,EAAE,CAAC;AAE/C,QAAA,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC;AAE7B,QAAA,OAAO,YAAY,CAAC;KACvB;AAGD;;;;;AAKG;AACH,IAAA,IAAI,KAAK,GAAA;AAEL,QAAA,IAAI,IAAI,CAAC,gBAAgB,KAAK,IAAI,EAAE;AAEhC,YAAA,MAAM,IAAI,KAAK,CAAC,wJAAwJ,CAAC,CAAC;AAC7K,SAAA;QAED,OAAO,IAAI,CAAC,gBAAgB,CAAC;KAChC;AAGD;;;AAGG;IACH,OAAO,GAAA;QAEH,IAAI,CAAC,yBAAyB,EAAE,CAAC;AAEjC,QAAA,IAAI,IAAI,CAAC,gBAAgB,KAAK,IAAI,EAAE;AAE/B,YAAA,IAAI,CAAC,iBAAsC,CAAC,KAAK,EAAE,CAAC;AACxD,SAAA;AAED,QAAA,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC;AAC7B,QAAA,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC;KAChC;AAGD;;AAEG;IACK,yBAAyB,GAAA;AAE7B,QAAA,IAAI,IAAI,CAAC,iBAAiB,KAAK,IAAI,EAAE;AAEjC,YAAA,MAAM,IAAI,KAAK,CAAC,6FAA6F,CAAC,CAAC;AAClH,SAAA;KACJ;+GAxIQ,YAAY,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,wBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA,EAAA;mHAAZ,YAAY,EAAA,CAAA,CAAA,EAAA;;4FAAZ,YAAY,EAAA,UAAA,EAAA,CAAA;kBADxB,UAAU;;;ACjBX;;;;;;;AAOG;AAOH;;;;;;AAMG;MAQU,uBAAuB,CAAA;AAPpC,IAAA,WAAA,GAAA;AAUI;;;AAGG;QACM,IAAW,CAAA,WAAA,GAAsB,IAAI,CAAC;AAG/C;;;AAGG;QACM,IAAY,CAAA,YAAA,GAAwB,IAAI,CAAC;AA0CrD,KAAA;AAjCG;;AAEG;IACH,QAAQ,GAAA;QAEJ,IAAI,EAAE,IAAI,CAAC,YAAY,YAAY,YAAY,CAAC,EAAE;AAE9C,YAAA,MAAM,IAAI,KAAK,CAAC,8DAA8D,CAAC,CAAC;AAEnF,SAAA;AAAM,aAAA;YAEH,IAAI,CAAC,YAAY,CAAC,gBAAgB,GAAG,IAAI,CAAC,gBAAgB,CAAC;AAC9D,SAAA;;AAGD,QAAA,IAAI,IAAI,CAAC,WAAW,KAAK,IAAI,EAAE;YAE3B,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;AAChD,SAAA;KACJ;AAGD;;AAEG;IACH,WAAW,GAAA;AAEP,QAAA,IAAI,IAAI,CAAC,YAAY,YAAY,YAAY,EAAE;AAE3C,YAAA,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE,CAAC;AAC5B,YAAA,IAAI,CAAC,YAAY,CAAC,gBAAgB,GAAG,IAAI,CAAC;AAC7C,SAAA;KACJ;+GAvDQ,uBAAuB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;mGAAvB,uBAAuB,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,EAAA,WAAA,EAAA,aAAA,EAAA,YAAA,EAAA,cAAA,EAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,kBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,IAAA,EAoBO,gBAAgB,EAAA,MAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EChD3D,6KAG6C,EAAA,MAAA,EAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA;;4FDyBhC,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBAPnC,SAAS;+BACE,oBAAoB,EAAA,QAAA,EAAA,6KAAA,EAAA,CAAA;8BAanB,WAAW,EAAA,CAAA;sBAAnB,KAAK;gBAOG,YAAY,EAAA,CAAA;sBAApB,KAAK;gBAMmE,gBAAgB,EAAA,CAAA;sBAAxF,SAAS;uBAAC,kBAAkB,EAAE,EAAE,IAAI,EAAE,gBAAgB,EAAE,MAAM,EAAE,IAAI,EAAE,CAAA;;;AEhD3E;;;;;;;AAOG;AAKH;;AAEG;MAEmB,mBAAmB,CAAA;AADzC,IAAA,WAAA,GAAA;AAII;;AAEG;QAC2B,IAAc,CAAA,cAAA,GAAG,EAAE,CAAC;AAGlD;;AAEG;QAC6B,IAAY,CAAA,YAAA,GAAG,UAAU,CAAC;AAG1D;;AAEG;QACkC,IAAa,CAAA,aAAA,GAAG,SAAS,CAAC;AAG/D;;AAEG;QACM,IAAgB,CAAA,gBAAA,GAAG,IAAI,CAAC;AAGjC;;;AAGG;QACM,IAAc,CAAA,cAAA,GAAG,EAAE,CAAC;AAG7B;;AAEG;QACM,IAAc,CAAA,cAAA,GAAG,EAAE,CAAC;AAG7B;;AAEG;QACM,IAAY,CAAA,YAAA,GAAG,CAAC,CAAC;AAG1B;;AAEG;QACM,IAAY,CAAA,YAAA,GAAG,EAAE,CAAC;AAG3B;;AAEG;QACM,IAAU,CAAA,UAAA,GAAG,CAAC,CAAC;AAGxB;;AAEG;QACM,IAAY,CAAA,YAAA,GAAG,CAAC,CAAC;AAG1B;;AAEG;QACM,IAAU,CAAA,UAAA,GAAG,CAAC,CAAC;AAGxB;;AAEG;QACM,IAAe,CAAA,eAAA,GAAG,EAAE,CAAC;AAG9B;;AAEG;QACK,IAAQ,CAAA,QAAA,GAAG,IAAI,CAAC;AA0F3B,KAAA;AAvFG;;AAEG;IACH,IAAa,OAAO,CAAC,CAAS,EAAA;AAE1B,QAAA,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC;AAElB,QAAA,IAAI,CAAC,cAAc,GAAG,CAAC,GAAG,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,eAAe,CAAC;AAErE,QAAA,IAAI,CAAC,aAAa,GAAG,CAAC,GAAG,SAAS,GAAG,MAAM,CAAC;KAC/C;;AAGD;;AAEG;IACH,QAAQ,GAAA;AAEJ,QAAA,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,eAAe,CAAC;AACjF,QAAA,IAAI,CAAC,YAAY,GAAG,UAAU,CAAC;KAClC;AAGD;;AAEG;IAEH,WAAW,GAAA;QAEP,IAAG,IAAI,CAAC,QAAQ,EAAC;AAEb,YAAA,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,YAAY,CAAC;YACxC,IAAI,CAAC,YAAY,GAAG,QAAQ,GAAI,IAAI,CAAC,UAA4B,GAAG,GAAG,CAAC;AAC3E,SAAA;KACJ;AAGD;;AAEG;IAIH,UAAU,GAAA;QAEN,IAAG,IAAI,CAAC,QAAQ,EAAC;AAEb,YAAA,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,cAAc,CAAC;YAC1C,IAAI,CAAC,YAAY,GAAG,QAAQ,GAAI,IAAI,CAAC,YAA8B,GAAG,GAAG,CAAC;AAC7E,SAAA;KACJ;AAGD;;AAEG;IAEH,WAAW,GAAA;QAEP,IAAG,IAAI,CAAC,QAAQ,EAAC;AAEb,YAAA,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,YAAY,CAAC;YACxC,IAAI,CAAC,YAAY,GAAG,QAAQ,GAAI,IAAI,CAAC,UAA4B,GAAG,GAAG,CAAC;AAC3E,SAAA;KACJ;AAGD;;AAEG;IAEH,SAAS,GAAA;QAEL,IAAI,IAAI,CAAC,QAAQ,EAAE;AAEf,YAAA,IAAI,IAAI,CAAC,cAAc,GAAG,CAAC,IAAI,MAAM,CAAC,SAAS,IAAI,MAAM,CAAC,SAAS,CAAC,OAAO,EAAE;gBAEzE,MAAM,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;AACjD,aAAA;YAED,IAAG,IAAI,CAAC,gBAAgB,EAAC;AAErB,gBAAA,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,cAAc,CAAC;gBAC1C,IAAI,CAAC,YAAY,GAAG,QAAQ,GAAI,IAAI,CAAC,YAA8B,GAAG,GAAG,CAAC;AAC7E,aAAA;AACJ,SAAA;KACJ;+GAxKiB,mBAAmB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;mGAAnB,mBAAmB,EAAA,MAAA,EAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,YAAA,EAAA,cAAA,EAAA,YAAA,EAAA,cAAA,EAAA,UAAA,EAAA,YAAA,EAAA,YAAA,EAAA,cAAA,EAAA,UAAA,EAAA,YAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,SAAA,EAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,WAAA,EAAA,eAAA,EAAA,UAAA,EAAA,cAAA,EAAA,YAAA,EAAA,cAAA,EAAA,cAAA,EAAA,cAAA,EAAA,aAAA,EAAA,eAAA,EAAA,WAAA,EAAA,aAAA,EAAA,EAAA,UAAA,EAAA,EAAA,eAAA,EAAA,qBAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,sBAAA,EAAA,oBAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA,EAAA;;4FAAnB,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBADxC,SAAS;8BAOwB,cAAc,EAAA,CAAA;sBAA3C,WAAW;uBAAC,eAAe,CAAA;gBAMI,YAAY,EAAA,CAAA;sBAA3C,WAAW;uBAAC,iBAAiB,CAAA;gBAMO,aAAa,EAAA,CAAA;sBAAjD,WAAW;uBAAC,sBAAsB,CAAA;gBAM1B,gBAAgB,EAAA,CAAA;sBAAxB,KAAK;gBAOG,cAAc,EAAA,CAAA;sBAAtB,KAAK;gBAMG,cAAc,EAAA,CAAA;sBAAtB,KAAK;gBAMG,YAAY,EAAA,CAAA;sBAApB,KAAK;gBAMG,YAAY,EAAA,CAAA;sBAApB,KAAK;gBAMG,UAAU,EAAA,CAAA;sBAAlB,KAAK;gBAMG,YAAY,EAAA,CAAA;sBAApB,KAAK;gBAMG,UAAU,EAAA,CAAA;sBAAlB,KAAK;gBAMG,eAAe,EAAA,CAAA;sBAAvB,KAAK;gBAYO,OAAO,EAAA,CAAA;sBAAnB,KAAK;gBAwBN,WAAW,EAAA,CAAA;sBADV,YAAY;uBAAC,WAAW,CAAA;gBAiBzB,UAAU,EAAA,CAAA;sBAHT,YAAY;uBAAC,UAAU,CAAA;;sBACvB,YAAY;uBAAC,YAAY,CAAA;;sBACzB,YAAY;uBAAC,cAAc,CAAA;gBAe5B,WAAW,EAAA,CAAA;sBADV,YAAY;uBAAC,aAAa,CAAA;gBAe3B,SAAS,EAAA,CAAA;sBADR,YAAY;uBAAC,WAAW,CAAA;;;ACxK7B;;;;;;;AAOG;AAOH;;AAEG;AASG,MAAO,oBAAqB,SAAQ,mBAAmB,CAAA;AAR7D,IAAA,WAAA,GAAA;;AAWI;;AAEG;QACyB,IAAU,CAAA,UAAA,GAAG,IAAI,CAAC;AAG9C;;AAEG;QACM,IAAG,CAAA,GAAA,GAAG,EAAE,CAAC;AAGlB;;;AAGG;QACM,IAAW,CAAA,WAAA,GAAG,GAAG,CAAC;AAC9B,KAAA;+GApBY,oBAAoB,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAApB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,oBAAoB,ECzBjC,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,EAAA,GAAA,EAAA,KAAA,EAAA,WAAA,EAAA,aAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,aAAA,EAAA,iBAAA,EAAA,EAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,gHAEyC,EDkB3B,MAAA,EAAA,CAAA,8YAAA,CAAA,EAAA,UAAA,EAAA,CAAC,kBAAkB,CAAC,UAAU,CAAC,YAAY,EAAE,YAAY,EAAE,YAAY,CAAC,CAAC,EAAA,CAAA,CAAA,EAAA;;4FAK1E,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBARhC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,iBAAiB,EAEf,UAAA,EAAA,CAAC,kBAAkB,CAAC,UAAU,CAAC,YAAY,EAAE,YAAY,EAAE,YAAY,CAAC,CAAC,EAAA,QAAA,EAAA,gHAAA,EAAA,MAAA,EAAA,CAAA,8YAAA,CAAA,EAAA,CAAA;8BAWvD,UAAU,EAAA,CAAA;sBAArC,WAAW;uBAAC,aAAa,CAAA;gBAMjB,GAAG,EAAA,CAAA;sBAAX,KAAK;gBAOG,WAAW,EAAA,CAAA;sBAAnB,KAAK;;;AE5CV;;;;;;;AAOG;AAOH;;AAEG;AASG,MAAO,wBAAyB,SAAQ,mBAAmB,CAAA;AARjE,IAAA,WAAA,GAAA;;AAWI;;AAEG;QACyB,IAAU,CAAA,UAAA,GAAG,IAAI,CAAC;AACjD,KAAA;+GAPY,wBAAwB,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAAxB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,wBAAwB,ECzBrC,QAAA,EAAA,qBAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,aAAA,EAAA,iBAAA,EAAA,EAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,2BAAyB,EDoBX,MAAA,EAAA,CAAA,8QAAA,CAAA,EAAA,UAAA,EAAA,CAAC,kBAAkB,CAAC,UAAU,CAAC,YAAY,EAAE,YAAY,EAAE,YAAY,CAAC,CAAC,EAAA,CAAA,CAAA,EAAA;;4FAK1E,wBAAwB,EAAA,UAAA,EAAA,CAAA;kBARpC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,qBAAqB,EAEnB,UAAA,EAAA,CAAC,kBAAkB,CAAC,UAAU,CAAC,YAAY,EAAE,YAAY,EAAE,YAAY,CAAC,CAAC,EAAA,QAAA,EAAA,2BAAA,EAAA,MAAA,EAAA,CAAA,8QAAA,CAAA,EAAA,CAAA;8BAWvD,UAAU,EAAA,CAAA;sBAArC,WAAW;uBAAC,aAAa,CAAA;;;AE/B9B;;;;;;;AAOG;AAOH;;AAEG;AAQG,MAAO,2BAA4B,SAAQ,0BAA0B,CAAA;IAEvE,WAAmB,CAAA,SAAmD,EAAkC,IAAS,EAAA;AAE7G,QAAA,KAAK,EAAE,CAAC;QAFO,IAAS,CAAA,SAAA,GAAT,SAAS,CAA0C;QAAkC,IAAI,CAAA,IAAA,GAAJ,IAAI,CAAK;AAI7G,QAAA,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE;AAEvB,YAAA,MAAM,IAAI,KAAK,CAAC,qFAAqF,CAAC,CAAC;AAC1G,SAAA;AAED,QAAA,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE;AAE3B,YAAA,MAAM,IAAI,KAAK,CAAC,qDAAqD,CAAC,CAAC;AAC1E,SAAA;KACJ;AAfQ,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,2BAA2B,gDAE4C,eAAe,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAFtF,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,2BAA2B,sFCxBxC,sQAaS,EAAA,MAAA,EAAA,CAAA,yFAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,QAAA,EAAA,6GAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,eAAA,EAAA,OAAA,CAAA,EAAA,QAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA;;4FDWI,2BAA2B,EAAA,UAAA,EAAA,CAAA;kBAPvC,SAAS;+BACE,yBAAyB,EAAA,QAAA,EAAA,sQAAA,EAAA,MAAA,EAAA,CAAA,yFAAA,CAAA,EAAA,CAAA;;0BAQwC,MAAM;2BAAC,eAAe,CAAA;;;AE1BnG;;;;;;;AAOG;AAOH;;;AAGG;AAQG,MAAO,wBAAyB,SAAQ,0BAA0B,CAAA;IAEpE,WAAmB,CAAA,SAAmD,EAAkC,IAAS,EAAA;AAE7G,QAAA,KAAK,EAAE,CAAC;QAFO,IAAS,CAAA,SAAA,GAAT,SAAS,CAA0C;QAAkC,IAAI,CAAA,IAAA,GAAJ,IAAI,CAAK;AAI7G,QAAA,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE;AAEvB,YAAA,MAAM,IAAI,KAAK,CAAC,kFAAkF,CAAC,CAAC;AACvG,SAAA;AAED,QAAA,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE;AAE3B,YAAA,MAAM,IAAI,KAAK,CAAC,mDAAmD,CAAC,CAAC;AACxE,SAAA;KACJ;AAfQ,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,wBAAwB,gDAE+C,eAAe,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAFtF,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,wBAAwB,mFCzBrC,ygBAyBA,EAAA,MAAA,EAAA,CAAA,gOAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,QAAA,EAAA,6GAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,eAAA,EAAA,OAAA,CAAA,EAAA,QAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA;;4FDAa,wBAAwB,EAAA,UAAA,EAAA,CAAA;kBAPpC,SAAS;+BACE,sBAAsB,EAAA,QAAA,EAAA,ygBAAA,EAAA,MAAA,EAAA,CAAA,gOAAA,CAAA,EAAA,CAAA;;0BAQ2C,MAAM;2BAAC,eAAe,CAAA;;;AE3BnG;;;;;;;AAOG;AAOH;;AAEG;AAEG,MAAO,cAAe,SAAQ,cAAc,CAAA;AAG9C,IAAA,WAAA,CAA6B,QAAkB,EAAA;AAE3C,QAAA,KAAK,EAAE,CAAC;QAFiB,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAU;KAG9C;AAGD;;;;;;;AAOG;IACH,MAAM,CAAC,IAAY,EAAE,KAA0B,EAAA;QAE3C,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;KACjC;AAGD;;;;;;AAMG;AACH,IAAA,oBAAoB,CAAC,MAAsC,EAAA;QAEvD,OAAO,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;KAC1C;+GAjCQ,cAAc,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAC,EAAA,CAAA,QAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA,EAAA;mHAAd,cAAc,EAAA,CAAA,CAAA,EAAA;;4FAAd,cAAc,EAAA,UAAA,EAAA,CAAA;kBAD1B,UAAU;;;ACjBX;;;;;;;AAOG;AAKH;AAMA;;;AAGG;MACU,2BAA2B,CAAA;AAGpC,IAAA,WAAA,CAAoB,EAAc,EAAU,IAAY,EAAU,QAAmB,EAAA;QAAjE,IAAE,CAAA,EAAA,GAAF,EAAE,CAAY;QAAU,IAAI,CAAA,IAAA,GAAJ,IAAI,CAAQ;QAAU,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAW;AAEjF,QAAA,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,OAAO,CAAC,EAAE;AAE5B,YAAA,MAAM,IAAI,KAAK,CAAC,+BAA+B,CAAC,CAAC;AACpD,SAAA;KACJ;IAED,kBAAkB,GAAA;QAEd,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,MAAM,UAAU,CAAC,MAAK;AAE9C,YAAA,IAAI,CAAC,QAAQ,CAAC,iBAAiB,CAAC,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,CAAC,KAAK,EAAE,CAAC;AAEnE,SAAC,EAAE,CAAC,CAAC,CAAC,CAAC;KACV;+GAlBQ,2BAA2B,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,MAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,SAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;mGAA3B,2BAA2B,EAAA,QAAA,EAAA,sBAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA,EAAA;;4FAA3B,2BAA2B,EAAA,UAAA,EAAA,CAAA;kBATvC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,sBAAsB;AACjC,iBAAA,CAAA;;;ACfD;;;;;;;AAOG;AASH;;;;;;;;;;;AAWG;AAQG,MAAO,kCAAmC,SAAQ,0BAA0B,CAAA;AAmC9E,IAAA,WAAA,CAAmB,SAAmD,EACnD,cAA8B,EACL,IAAS,EAAA;AAEjD,QAAA,KAAK,EAAE,CAAC;QAJO,IAAS,CAAA,SAAA,GAAT,SAAS,CAA0C;QACnD,IAAc,CAAA,cAAA,GAAd,cAAc,CAAgB;QACL,IAAI,CAAA,IAAA,GAAJ,IAAI,CAAK;AAlCrD;;AAEG;QACH,IAAW,CAAA,WAAA,GAAG,WAAW,CAAC;AAE1B;;;AAGG;QACH,IAAe,CAAA,eAAA,GAAY,EAAE,CAAC;AAG9B;;;AAGG;QACK,IAAe,CAAA,eAAA,GAAY,EAAE,CAAC;AAGtC;;;AAGG;QACK,IAA6B,CAAA,6BAAA,GAAY,EAAE,CAAC;AAGpD;;AAEG;QACH,IAAiB,CAAA,iBAAA,GAAG,CAAC,CAAC,CAAC;AA8DvB;;;AAGG;QACH,IAAS,CAAA,SAAA,GAAG,CAAC,KAAa,EAAE,MAAc,KAAK,KAAK,CAAC;AAzDjD,QAAA,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE;AAEvB,YAAA,MAAM,IAAI,KAAK,CAAC,6JAA6J,CAAC,CAAC;AAClL,SAAA;AAED,QAAA,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE;AAEzB,YAAA,MAAM,IAAI,KAAK,CAAC,gEAAgE,CAAC,CAAC;AACrF,SAAA;AAED,QAAA,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,OAAO,CAAC;AAEpC,QAAA,KAAI,IAAI,MAAM,IAAI,IAAI,CAAC,eAAe,EAAC;AAEnC,YAAA,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AAClC,YAAA,IAAI,CAAC,6BAA6B,CAAC,IAAI,CAAC,WAAW,CAAC,uBAAuB,CAAC,MAAM,CAAC,CAAC,CAAC;AACxF,SAAA;KACJ;AAGD;;AAEG;IACH,8BAA8B,GAAA;AAE1B,QAAA,OAAO,CAAC,IAAI,CAAC,cAAc,CAAC,eAAe,EAAE,GAAG,GAAG,IAAI,IAAI,CAAC;KAC/D;AAGD;;;AAGG;AACH,IAAA,cAAc,CAAC,KAAsB,EAAA;AAEjC,QAAA,IAAI,CAAC,iBAAiB,GAAG,CAAC,CAAC,CAAC;QAE5B,IAAI,UAAU,GAAG,WAAW,CAAC,uBAAuB,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;AAElE,QAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,6BAA6B,CAAC,MAAM,EAAE,CAAC,EAAE,EAAC;YAE/D,IAAG,UAAU,KAAK,EAAE;AACjB,gBAAA,IAAI,CAAC,6BAA6B,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,EAAC;AAE9D,gBAAA,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;AAErD,aAAA;AAAI,iBAAA;AAED,gBAAA,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC;AAChC,aAAA;AACJ,SAAA;KACJ;AA5FQ,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,kCAAkC,2EAqCvB,eAAe,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AArC1B,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,kCAAkC,8FCnC/C,kxCAwCS,EAAA,MAAA,EAAA,CAAA,2WAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,QAAA,EAAA,QAAA,EAAA,yHAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,IAAA,EAAA,aAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,mBAAA,EAAA,kBAAA,EAAA,OAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,YAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,oBAAA,EAAA,OAAA,EAAA,YAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,WAAA,CAAA,EAAA,QAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,QAAA,EAAA,QAAA,EAAA,WAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,EAAA,CAAA,SAAA,EAAA,QAAA,EAAA,6GAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,eAAA,EAAA,OAAA,CAAA,EAAA,QAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,2BAAA,EAAA,QAAA,EAAA,sBAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA;;4FDLI,kCAAkC,EAAA,UAAA,EAAA,CAAA;kBAP9C,SAAS;+BACE,iCAAiC,EAAA,QAAA,EAAA,kxCAAA,EAAA,MAAA,EAAA,CAAA,2WAAA,CAAA,EAAA,CAAA;;0BA2C5B,MAAM;2BAAC,eAAe,CAAA;;;AExEvC;;;;;;;AAOG;AAOH;;AAEG;AAQG,MAAO,6BAA8B,SAAQ,0BAA0B,CAAA;IAEzE,WAAmB,CAAA,SAAmD,EAAkC,IAAS,EAAA;AAE7G,QAAA,KAAK,EAAE,CAAC;QAFO,IAAS,CAAA,SAAA,GAAT,SAAS,CAA0C;QAAkC,IAAI,CAAA,IAAA,GAAJ,IAAI,CAAK;AAI7G,QAAA,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE;AAEvB,YAAA,MAAM,IAAI,KAAK,CAAC,uFAAuF,CAAC,CAAC;AAC5G,SAAA;KACJ;AAVQ,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,6BAA6B,gDAE0C,eAAe,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAFtF,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,6BAA6B,wFCxB1C,yTAcS,EAAA,MAAA,EAAA,CAAA,8GAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,QAAA,EAAA,6GAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,eAAA,EAAA,OAAA,CAAA,EAAA,QAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA;;4FDUI,6BAA6B,EAAA,UAAA,EAAA,CAAA;kBAPzC,SAAS;+BACE,2BAA2B,EAAA,QAAA,EAAA,yTAAA,EAAA,MAAA,EAAA,CAAA,8GAAA,CAAA,EAAA,CAAA;;0BAQsC,MAAM;2BAAC,eAAe,CAAA;;;AE1BnG;;;;;;;AAOG;AAKH;AAMA;;;;AAIG;MACU,uBAAuB,CAAA;AAVpC,IAAA,WAAA,GAAA;AAaI;;AAEG;AAEI,QAAA,IAAA,CAAA,cAAc,GAA0C,IAAI,YAAY,EAAE,CAAC;AAWrF,KAAA;AARG;;AAEG;IACH,QAAQ,GAAA;AAEJ,QAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;KAClC;+GAhBQ,uBAAuB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;mGAAvB,uBAAuB,EAAA,QAAA,EAAA,kBAAA,EAAA,OAAA,EAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA,EAAA;;4FAAvB,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBAVnC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,kBAAkB;AAC7B,iBAAA,CAAA;8BAeU,cAAc,EAAA,CAAA;sBADpB,MAAM;uBAAC,gBAAgB,CAAA;;;AC7B5B;;;;;;;AAOG;AAKH;AAMA;;;;AAIG;MACU,yBAAyB,CAAA;AAVtC,IAAA,WAAA,GAAA;AAaI;;AAEG;AAEI,QAAA,IAAA,CAAA,gBAAgB,GAA4C,IAAI,YAAY,EAAE,CAAC;AAWzF,KAAA;AARG;;AAEG;IACH,WAAW,GAAA;AAEP,QAAA,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;KACpC;+GAhBQ,yBAAyB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;mGAAzB,yBAAyB,EAAA,QAAA,EAAA,oBAAA,EAAA,OAAA,EAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA,EAAA;;4FAAzB,yBAAyB,EAAA,UAAA,EAAA,CAAA;kBAVrC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,oBAAoB;AAC/B,iBAAA,CAAA;8BAeU,gBAAgB,EAAA,CAAA;sBADtB,MAAM;uBAAC,kBAAkB,CAAA;;;AC7B9B;;;;;;;AAOG;AAKH;AAMA;;;AAGG;MACU,8BAA8B,CAAA;IAGvC,WAAoB,CAAA,EAAc,EAAU,QAAmB,EAAA;QAA3C,IAAE,CAAA,EAAA,GAAF,EAAE,CAAY;QAAU,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAW;AAE3D,QAAA,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,QAAQ,CAAC,EAAE;AAE7B,YAAA,MAAM,IAAI,KAAK,CAAC,gCAAgC,CAAC,CAAC;AACrD,SAAA;KACJ;IAGkC,OAAO,GAAA;AAEtC,QAAA,IAAI,CAAC,QAAQ,CAAC,iBAAiB,CAAC,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,CAAC,MAAM,EAAE,CAAC;KACnE;+GAfQ,8BAA8B,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,SAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;mGAA9B,8BAA8B,EAAA,QAAA,EAAA,yBAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,OAAA,EAAA,iBAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA,EAAA;;4FAA9B,8BAA8B,EAAA,UAAA,EAAA,CAAA;kBAT1C,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,yBAAyB;AACpC,iBAAA,CAAA;yHAmBsC,OAAO,EAAA,CAAA;sBAAzC,YAAY;uBAAC,OAAO,EAAE,CAAC,QAAQ,CAAC,CAAA;;;AClCrC;;;;;;;AAOG;AA+BH;;AAEG;MAwDU,qBAAqB,CAAA;+GAArB,qBAAqB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA,EAAA;AAArB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,qBAAqB,iBA3C1B,sBAAsB;YACtB,oBAAoB;YACpB,2BAA2B;YAC3B,wBAAwB;YACxB,6BAA6B;YAC7B,kCAAkC;YAClC,uBAAuB;YACvB,oBAAoB;YACpB,wBAAwB;YACxB,uBAAuB;YACvB,yBAAyB;YACzB,2BAA2B;AAC3B,YAAA,8BAA8B,aArB9B,eAAe;YACf,iBAAiB;YACjB,cAAc;YACd,eAAe;YACf,kBAAkB;AAClB,YAAA,uBAAuB,aA+BvB,sBAAsB;YACtB,uBAAuB;YACvB,oBAAoB;YACpB,wBAAwB;YACxB,oBAAoB;YACpB,2BAA2B;YAC3B,wBAAwB;YACxB,6BAA6B;YAC7B,kCAAkC;YAClC,uBAAuB;YACvB,yBAAyB;YACzB,2BAA2B;YAC3B,8BAA8B,CAAA,EAAA,CAAA,CAAA,EAAA;AAIzB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,qBAAqB,EA3BnB,SAAA,EAAA;YACP,aAAa;YACb,mBAAmB;YACnB,WAAW;YACX,mBAAmB;YACnB,WAAW;YACX,YAAY;YACZ,cAAc;AACjB,SAAA,EAAA,OAAA,EAAA,CAjCG,eAAe;YACf,iBAAiB;YACjB,cAAc;YACd,eAAe;YACf,kBAAkB;YAClB,uBAAuB,CAAA,EAAA,CAAA,CAAA,EAAA;;4FA+ClB,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBAvDjC,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AAEN,oBAAA,OAAO,EAAE;wBACL,eAAe;wBACf,iBAAiB;wBACjB,cAAc;wBACd,eAAe;wBACf,kBAAkB;wBAClB,uBAAuB;AAC1B,qBAAA;AAED,oBAAA,YAAY,EAAE;wBACV,sBAAsB;wBACtB,oBAAoB;wBACpB,2BAA2B;wBAC3B,wBAAwB;wBACxB,6BAA6B;wBAC7B,kCAAkC;wBAClC,uBAAuB;wBACvB,oBAAoB;wBACpB,wBAAwB;wBACxB,uBAAuB;wBACvB,yBAAyB;wBACzB,2BAA2B;wBAC3B,8BAA8B;AACjC,qBAAA;;AAGD,oBAAA,SAAS,EAAE;wBACP,aAAa;wBACb,mBAAmB;wBACnB,WAAW;wBACX,mBAAmB;wBACnB,WAAW;wBACX,YAAY;wBACZ,cAAc;AACjB,qBAAA;AAED,oBAAA,OAAO,EAAE;wBACL,sBAAsB;wBACtB,uBAAuB;wBACvB,oBAAoB;wBACpB,wBAAwB;wBACxB,oBAAoB;wBACpB,2BAA2B;wBAC3B,wBAAwB;wBACxB,6BAA6B;wBAC7B,kCAAkC;wBAClC,uBAAuB;wBACvB,yBAAyB;wBACzB,2BAA2B;wBAC3B,8BAA8B;AACjC,qBAAA;AACJ,iBAAA,CAAA;;;AC9FD;;;;;;;AAOG;AAKH;;;;;;;;;;;;;;;AAeG;MAEU,kBAAkB,CAAA;AAD/B,IAAA,WAAA,GAAA;AAII;;;AAGG;QACc,IAAoB,CAAA,oBAAA,GAAG,IAAI,CAAC;AAG7C;;;AAGG;QACc,IAAuB,CAAA,uBAAA,GAAG,IAAI,CAAC;AAGhD;;;;AAIG;QACc,IAAiB,CAAA,iBAAA,GAAG,4BAA4B,CAAC;AAwBrE,KAAA;AArBG;;;;;;AAMG;AACH,IAAA,WAAW,CAAC,KAAU,EAAA;QAElB,IAAI,IAAI,CAAC,oBAAoB,EAAE;AAE3B,YAAA,KAAK,CAAC,IAAI,CAAC,iBAAiB,GAAI,KAAgB,CAAC,CAAC;AACrD,SAAA;QAED,IAAI,IAAI,CAAC,uBAAuB,EAAE;AAE9B,YAAA,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;AACtB,SAAA;AAED,QAAA,MAAM,KAAK,CAAC;KACf;+GA7CQ,kBAAkB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA,EAAA;mHAAlB,kBAAkB,EAAA,CAAA,CAAA,EAAA;;4FAAlB,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAD9B,UAAU;;;AC5BX;;;;;;;AAOG;AAMH;;AAEG;AACG,MAAO,qBAAsB,SAAQ,qBAAqB,CAAA;AAC/D;;ACjBD;;;;;;;AAOG;AAEH;;AAEG;MACU,eAAe,CAAA;AAGxB,IAAA,WAAA,CAAY,IAAY,EAAE,IAAI,GAAG,EAAE,EAAE,OAAY,IAAI,EAAA;AAQrD;;AAEG;QACH,IAAI,CAAA,IAAA,GAAG,EAAE,CAAC;AAGV;;;AAGG;QACH,IAAI,CAAA,IAAA,GAAG,EAAE,CAAC;AAGV;;AAEG;QACH,IAAI,CAAA,IAAA,GAAQ,IAAI,CAAC;AAtBb,QAAA,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;AACjB,QAAA,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;AACjB,QAAA,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;KACpB;AAoBJ;;ACxCD;;;;;;;AAOG;AAMH;;;AAGG;MAEmB,IAAI,CAAA;AAgBtB;;;;;;;;AAQG;AACH,IAAA,WAAA,CAAY,UAAkC,EAAA;QAZtC,IAAW,CAAA,WAAA,GAA2B,IAAI,CAAC;AAc/C,QAAA,IAAI,CAAC,WAAW,GAAG,UAAU,CAAC;KACjC;AAGD;;AAEG;AACH,IAAA,IAAI,UAAU,GAAA;QAEV,OAAO,IAAI,CAAC,WAAW,CAAC;KAC3B;AACJ;;ACxDD;;;;;;;AAOG;AAEH;;AAEG;MACmB,SAAS,CAAA;AAE9B;;ACdD;;;;;;;AAOG;AAMH;;;;AAIG;MACmB,WAAW,CAAA;AAG7B;;AAEG;AACH,IAAA,WAAA,CAA4B,YAA0B,EAAA;QAA1B,IAAY,CAAA,YAAA,GAAZ,YAAY,CAAc;KACrD;AAGD;;AAEG;AACH,IAAA,IAAI,KAAK,GAAA;AAEL,QAAA,OAAO,IAAI,CAAC,YAAY,CAAC,KAAU,CAAC;KACvC;AACJ;;ACnCD;;;;;;;AAOG;AAEH;;;;;;AAMG;MACU,wBAAwB,CAAA;AAYjC;;;;;;;;AAQG;AACH,IAAA,WAAA,CAAoB,QAAQ,IAAI,EAAA;QAAZ,IAAK,CAAA,KAAA,GAAL,KAAK,CAAO;QAlBxB,IAAmB,CAAA,mBAAA,GAAe,EAAE,CAAC;QAGrC,IAAe,CAAA,eAAA,GAAG,KAAK,CAAC;QAGxB,IAAkB,CAAA,kBAAA,GAAQ,IAAI,CAAC;KActC;AAGD;;;;;;;;;AASG;AACH,IAAA,KAAK,CAAC,MAAkB,EAAA;AAEpB,QAAA,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAEtC,IAAG,IAAI,CAAC,eAAe,EAAC;AAEpB,YAAA,YAAY,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;AACzC,SAAA;AAED,QAAA,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC;QAE5B,IAAI,CAAC,kBAAkB,GAAG,UAAU,CAAC,QAAO,IAAI,CAAC,GAAG,EAAE,CAAA,EAAE,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;KACzE;AAGD;;;AAGG;IACH,MAAM,GAAA;AAEF,QAAA,IAAG,IAAI,CAAC,kBAAkB,KAAK,IAAI,EAAC;AAEhC,YAAA,YAAY,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;AACzC,SAAA;AAED,QAAA,IAAI,CAAC,mBAAmB,GAAG,EAAE,CAAC;AAE9B,QAAA,IAAI,CAAC,eAAe,GAAG,KAAK,CAAC;KAChC;AAGD;;AAEG;IACK,GAAG,GAAA;AAEN,QAAA,IAAI,CAAC,mBAAmB,CAAC,GAAG,EAAiB,EAAE,CAAC;AAEjD,QAAA,IAAI,CAAC,mBAAmB,GAAG,EAAE,CAAC;AAE9B,QAAA,IAAI,CAAC,eAAe,GAAG,KAAK,CAAC;KAChC;AACJ;;AC/FD;;AAEG;;ACFH;;AAEG;;;;"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "turbogui-angular",
3
- "version": "11.0.1",
3
+ "version": "11.0.2",
4
4
  "description": "A library that tries to help with the most common user interface elements on several frameworks and platforms",
5
5
  "repository": {
6
6
  "type": "git",