turbogui-angular 11.0.2 → 12.1.0

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.
Files changed (74) hide show
  1. package/esm2022/main/controller/browser.service.mjs +48 -48
  2. package/esm2022/main/controller/dialog.service.mjs +327 -324
  3. package/esm2022/main/controller/globalerror.service.mjs +68 -68
  4. package/esm2022/main/controller/http.service.mjs +70 -70
  5. package/esm2022/main/controller/httpservice/HTTPServiceGetRequest.mjs +14 -14
  6. package/esm2022/main/controller/httpservice/HTTPServicePostRequest.mjs +14 -14
  7. package/esm2022/main/controller/localization.service.mjs +22 -22
  8. package/esm2022/main/controller/notification.service.mjs +56 -56
  9. package/esm2022/main/controller/user.service.mjs +124 -124
  10. package/esm2022/main/controller/views.service.mjs +113 -113
  11. package/esm2022/main/managers/DelayedMethodCallManager.mjs +69 -69
  12. package/esm2022/main/model/classes/GUINotification.mjs +31 -31
  13. package/esm2022/main/model/classes/View.mjs +33 -33
  14. package/esm2022/main/model/classes/ViewModel.mjs +13 -13
  15. package/esm2022/main/model/classes/ViewService.mjs +27 -27
  16. package/esm2022/main/model/modules/turbogui-angular.module.mjs +140 -140
  17. package/esm2022/main/view/animations/fade.animation.mjs +35 -35
  18. package/esm2022/main/view/components/busy-state-base/busy-state-base.component.mjs +38 -38
  19. package/esm2022/main/view/components/button-base/button-base.component.mjs +180 -180
  20. package/esm2022/main/view/components/button-container/button-container.component.mjs +34 -34
  21. package/esm2022/main/view/components/button-image/button-image.component.mjs +47 -47
  22. package/esm2022/main/view/components/dialog-base/dialog-base.component.mjs +13 -13
  23. package/esm2022/main/view/components/dialog-error/dialog-error.component.mjs +41 -41
  24. package/esm2022/main/view/components/dialog-multiple-option/dialog-multiple-option.component.mjs +38 -38
  25. package/esm2022/main/view/components/dialog-options-base/dialog-options-base.component.mjs +14 -14
  26. package/esm2022/main/view/components/dialog-single-option/dialog-single-option.component.mjs +41 -41
  27. package/esm2022/main/view/components/dialog-single-selection-list/dialog-single-selection-list.component.mjs +112 -112
  28. package/esm2022/main/view/components/dialog-two-option/dialog-two-option.component.mjs +42 -42
  29. package/esm2022/main/view/components/views-container/views-container.component.mjs +70 -70
  30. package/esm2022/main/view/directives/AutoFocusOnDisplayDirective.mjs +39 -39
  31. package/esm2022/main/view/directives/AutoSelectTextOnFocusDirective.mjs +39 -39
  32. package/esm2022/main/view/directives/ElementCreatedDirective.mjs +42 -42
  33. package/esm2022/main/view/directives/ElementDestroyedDirective.mjs +42 -42
  34. package/esm2022/public_api.mjs +43 -43
  35. package/esm2022/turbogui-angular.mjs +4 -4
  36. package/fesm2022/turbogui-angular.mjs +1865 -1862
  37. package/fesm2022/turbogui-angular.mjs.map +1 -1
  38. package/index.d.ts +5 -5
  39. package/main/controller/browser.service.d.ts +29 -29
  40. package/main/controller/dialog.service.d.ts +186 -184
  41. package/main/controller/dialog.service.d.ts.map +1 -1
  42. package/main/controller/globalerror.service.d.ts +54 -54
  43. package/main/controller/http.service.d.ts +37 -37
  44. package/main/controller/httpservice/HTTPServiceGetRequest.d.ts +14 -14
  45. package/main/controller/httpservice/HTTPServicePostRequest.d.ts +14 -14
  46. package/main/controller/localization.service.d.ts +9 -9
  47. package/main/controller/notification.service.d.ts +36 -36
  48. package/main/controller/user.service.d.ts +57 -57
  49. package/main/controller/views.service.d.ts +71 -71
  50. package/main/managers/DelayedMethodCallManager.d.ts +51 -51
  51. package/main/model/classes/GUINotification.d.ts +27 -27
  52. package/main/model/classes/View.d.ts +39 -39
  53. package/main/model/classes/ViewModel.d.ts +13 -13
  54. package/main/model/classes/ViewService.d.ts +26 -26
  55. package/main/model/modules/turbogui-angular.module.d.ts +28 -28
  56. package/main/view/animations/fade.animation.d.ts +16 -16
  57. package/main/view/components/busy-state-base/busy-state-base.component.d.ts +18 -18
  58. package/main/view/components/button-base/button-base.component.d.ts +94 -94
  59. package/main/view/components/button-container/button-container.component.d.ts +13 -13
  60. package/main/view/components/button-image/button-image.component.d.ts +31 -31
  61. package/main/view/components/dialog-base/dialog-base.component.d.ts +13 -13
  62. package/main/view/components/dialog-error/dialog-error.component.d.ts +13 -13
  63. package/main/view/components/dialog-multiple-option/dialog-multiple-option.component.d.ts +13 -13
  64. package/main/view/components/dialog-options-base/dialog-options-base.component.d.ts +14 -14
  65. package/main/view/components/dialog-single-option/dialog-single-option.component.d.ts +13 -13
  66. package/main/view/components/dialog-single-selection-list/dialog-single-selection-list.component.d.ts +62 -62
  67. package/main/view/components/dialog-two-option/dialog-two-option.component.d.ts +14 -14
  68. package/main/view/components/views-container/views-container.component.d.ts +45 -45
  69. package/main/view/directives/AutoFocusOnDisplayDirective.d.ts +20 -20
  70. package/main/view/directives/AutoSelectTextOnFocusDirective.d.ts +19 -19
  71. package/main/view/directives/ElementCreatedDirective.d.ts +23 -23
  72. package/main/view/directives/ElementDestroyedDirective.d.ts +23 -23
  73. package/package.json +6 -6
  74. package/public_api.d.ts +40 -40
@@ -1,112 +1,112 @@
1
- /**
2
- * TurboGUI is A library that helps with the most common and generic UI elements and functionalities
3
- *
4
- * Website : -> http://www.turbogui.org
5
- * License : -> Licensed under the Apache License, Version 2.0. You may not use this file except in compliance with the License.
6
- * License Url : -> http://www.apache.org/licenses/LICENSE-2.0
7
- * CopyRight : -> Copyright 2018 Edertone Advanded Solutions. https://www.edertone.com
8
- */
9
- import { Component, Inject } from '@angular/core';
10
- import { MAT_DIALOG_DATA } from '@angular/material/dialog';
11
- import { DialogOptionsBaseComponent } from '../dialog-options-base/dialog-options-base.component';
12
- import { StringUtils } from 'turbocommons-ts';
13
- import * as i0 from "@angular/core";
14
- import * as i1 from "@angular/material/dialog";
15
- import * as i2 from "../../../controller/browser.service";
16
- import * as i3 from "@angular/material/input";
17
- import * as i4 from "@angular/material/form-field";
18
- import * as i5 from "@angular/material/button";
19
- import * as i6 from "@angular/common";
20
- import * as i7 from "../../directives/AutoFocusOnDisplayDirective";
21
- /**
22
- * A dialog component which allows us to select one single item from a list. The elements on that list are displayed on a table
23
- * which may show a scroll if necessary when there are many elements on the list.
24
- *
25
- * It also allows us to filter inside the list with a custom text that we can type into a search input, which is optional.
26
- *
27
- * texts parameter must contain the title, the description (optional), the filter input title (optional), and the submit button caption.
28
- * If that caption is not provided, the selection will be automatically performed once user clicks on an element on the list. Otherwise,
29
- * the element will be selected on the list and the selection will be performed once the user clicks on the submit button.
30
- *
31
- * options parameter must contain the list of elements that will be displayed to the user
32
- */
33
- export class DialogSingleSelectionListComponent extends DialogOptionsBaseComponent {
34
- constructor(dialogRef, browserService, data) {
35
- super();
36
- this.dialogRef = dialogRef;
37
- this.browserService = browserService;
38
- this.data = data;
39
- /**
40
- * Declare a reference to the string utils class so it can be used on the html part
41
- */
42
- this.stringUtils = StringUtils;
43
- /**
44
- * Contains the list of elements that will be directly shown to the user at the component list.
45
- * It may be filtered or not depending on this component setup and the user input
46
- */
47
- this.filteredOptions = [];
48
- /**
49
- * Contains the original list of elements that are provided to be listed on this component before
50
- * being possibly filtered. It is only used as a backup, not shown to the user
51
- */
52
- this.originalOptions = [];
53
- /**
54
- * The same list as the originally provided but processed for a better text search.
55
- * It will be used to perform the search, but not shown to the user.
56
- */
57
- this.originalOptionsFullTextSearch = [];
58
- /**
59
- * Stores the index for the element that's been selected by the user
60
- */
61
- this.selectedItemIndex = -1;
62
- /**
63
- * This method is used to greatly improve ngFor performance with arrays of primitive values. It tells the refresh
64
- * function to work by index instead of by value. The change in performance when refreshing the list is massive.
65
- */
66
- this.trackByFn = (index, _value) => index;
67
- if (data.texts.length < 1) {
68
- throw new Error('DialogSingleSelectionListComponent expects 4 texts: The title, the description (optional), the filter input title (optional), and the submit button caption');
69
- }
70
- if (data.options.length < 1) {
71
- throw new Error('DialogSingleSelectionListComponent expects one or more options');
72
- }
73
- this.originalOptions = data.options;
74
- for (let option of this.originalOptions) {
75
- this.filteredOptions.push(option);
76
- this.originalOptionsFullTextSearch.push(StringUtils.formatForFullTextSearch(option));
77
- }
78
- }
79
- /**
80
- * Method to calculate the max possible height that the list items container is allowed to have
81
- */
82
- getListItemsContainerMaxheight() {
83
- return (this.browserService.getWindowHeight() * 0.6) + 'px';
84
- }
85
- /**
86
- * When the user types a value on the input element to filter the list, this method will perform
87
- * that filtering and refresh the list
88
- */
89
- onSearchChange(input) {
90
- this.selectedItemIndex = -1;
91
- let inputValue = StringUtils.formatForFullTextSearch(input.value);
92
- for (let i = 0; i < this.originalOptionsFullTextSearch.length; i++) {
93
- if (inputValue === '' ||
94
- this.originalOptionsFullTextSearch[i].indexOf(inputValue) >= 0) {
95
- this.filteredOptions[i] = this.originalOptions[i];
96
- }
97
- else {
98
- this.filteredOptions[i] = '';
99
- }
100
- }
101
- }
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 <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
- }
105
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: DialogSingleSelectionListComponent, decorators: [{
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 <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
- }], ctorParameters: function () { return [{ type: i1.MatDialogRef }, { type: i2.BrowserService }, { type: undefined, decorators: [{
109
- type: Inject,
110
- args: [MAT_DIALOG_DATA]
111
- }] }]; } });
112
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlhbG9nLXNpbmdsZS1zZWxlY3Rpb24tbGlzdC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90dXJib2d1aS1hbmd1bGFyL3NyYy9tYWluL3ZpZXcvY29tcG9uZW50cy9kaWFsb2ctc2luZ2xlLXNlbGVjdGlvbi1saXN0L2RpYWxvZy1zaW5nbGUtc2VsZWN0aW9uLWxpc3QuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdHVyYm9ndWktYW5ndWxhci9zcmMvbWFpbi92aWV3L2NvbXBvbmVudHMvZGlhbG9nLXNpbmdsZS1zZWxlY3Rpb24tbGlzdC9kaWFsb2ctc2luZ2xlLXNlbGVjdGlvbi1saXN0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7O0dBT0c7QUFFSCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNsRCxPQUFPLEVBQWdCLGVBQWUsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ3pFLE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLHNEQUFzRCxDQUFDO0FBRWxHLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQzs7Ozs7Ozs7O0FBRzlDOzs7Ozs7Ozs7OztHQVdHO0FBUUgsTUFBTSxPQUFPLGtDQUFtQyxTQUFRLDBCQUEwQjtJQW1DOUUsWUFBbUIsU0FBbUQsRUFDbkQsY0FBOEIsRUFDTCxJQUFTO1FBRWpELEtBQUssRUFBRSxDQUFDO1FBSk8sY0FBUyxHQUFULFNBQVMsQ0FBMEM7UUFDbkQsbUJBQWMsR0FBZCxjQUFjLENBQWdCO1FBQ0wsU0FBSSxHQUFKLElBQUksQ0FBSztRQWxDckQ7O1dBRUc7UUFDSCxnQkFBVyxHQUFHLFdBQVcsQ0FBQztRQUUxQjs7O1dBR0c7UUFDSCxvQkFBZSxHQUFZLEVBQUUsQ0FBQztRQUc5Qjs7O1dBR0c7UUFDSyxvQkFBZSxHQUFZLEVBQUUsQ0FBQztRQUd0Qzs7O1dBR0c7UUFDSyxrQ0FBNkIsR0FBWSxFQUFFLENBQUM7UUFHcEQ7O1dBRUc7UUFDSCxzQkFBaUIsR0FBRyxDQUFDLENBQUMsQ0FBQztRQThEdkI7OztXQUdHO1FBQ0gsY0FBUyxHQUFHLENBQUMsS0FBYSxFQUFFLE1BQWMsRUFBRSxFQUFFLENBQUMsS0FBSyxDQUFDO1FBekRqRCxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRTtZQUV2QixNQUFNLElBQUksS0FBSyxDQUFDLDZKQUE2SixDQUFDLENBQUM7U0FDbEw7UUFFRCxJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRTtZQUV6QixNQUFNLElBQUksS0FBSyxDQUFDLGdFQUFnRSxDQUFDLENBQUM7U0FDckY7UUFFRCxJQUFJLENBQUMsZUFBZSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUM7UUFFcEMsS0FBSSxJQUFJLE1BQU0sSUFBSSxJQUFJLENBQUMsZUFBZSxFQUFDO1lBRW5DLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1lBQ2xDLElBQUksQ0FBQyw2QkFBNkIsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLHVCQUF1QixDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7U0FDeEY7SUFDTCxDQUFDO0lBR0Q7O09BRUc7SUFDSCw4QkFBOEI7UUFFMUIsT0FBTyxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsZUFBZSxFQUFFLEdBQUcsR0FBRyxDQUFDLEdBQUcsSUFBSSxDQUFDO0lBQ2hFLENBQUM7SUFHRDs7O09BR0c7SUFDSCxjQUFjLENBQUMsS0FBc0I7UUFFakMsSUFBSSxDQUFDLGlCQUFpQixHQUFHLENBQUMsQ0FBQyxDQUFDO1FBRTVCLElBQUksVUFBVSxHQUFHLFdBQVcsQ0FBQyx1QkFBdUIsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7UUFFbEUsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLElBQUksQ0FBQyw2QkFBNkIsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUM7WUFFL0QsSUFBRyxVQUFVLEtBQUssRUFBRTtnQkFDakIsSUFBSSxDQUFDLDZCQUE2QixDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLEVBQUM7Z0JBRTlELElBQUksQ0FBQyxlQUFlLENBQUMsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxDQUFDLENBQUMsQ0FBQzthQUVyRDtpQkFBSTtnQkFFRCxJQUFJLENBQUMsZUFBZSxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQzthQUNoQztTQUNKO0lBQ0wsQ0FBQzsrR0E1RlEsa0NBQWtDLDRFQXFDdkIsZUFBZTttR0FyQzFCLGtDQUFrQyw4RkNuQy9DLGt4Q0F3Q1M7OzRGRExJLGtDQUFrQztrQkFQOUMsU0FBUzsrQkFDRSxpQ0FBaUM7OzBCQTJDNUIsTUFBTTsyQkFBQyxlQUFlIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXHJcbiAqIFR1cmJvR1VJIGlzIEEgbGlicmFyeSB0aGF0IGhlbHBzIHdpdGggdGhlIG1vc3QgY29tbW9uIGFuZCBnZW5lcmljIFVJIGVsZW1lbnRzIGFuZCBmdW5jdGlvbmFsaXRpZXNcclxuICpcclxuICogV2Vic2l0ZSA6IC0+IGh0dHA6Ly93d3cudHVyYm9ndWkub3JnXHJcbiAqIExpY2Vuc2UgOiAtPiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wLiBZb3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXHJcbiAqIExpY2Vuc2UgVXJsIDogLT4gaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXHJcbiAqIENvcHlSaWdodCA6IC0+IENvcHlyaWdodCAyMDE4IEVkZXJ0b25lIEFkdmFuZGVkIFNvbHV0aW9ucy4gaHR0cHM6Ly93d3cuZWRlcnRvbmUuY29tXHJcbiAqL1xyXG5cclxuaW1wb3J0IHsgQ29tcG9uZW50LCBJbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgTWF0RGlhbG9nUmVmLCBNQVRfRElBTE9HX0RBVEEgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kaWFsb2cnO1xyXG5pbXBvcnQgeyBEaWFsb2dPcHRpb25zQmFzZUNvbXBvbmVudCB9IGZyb20gJy4uL2RpYWxvZy1vcHRpb25zLWJhc2UvZGlhbG9nLW9wdGlvbnMtYmFzZS5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBCcm93c2VyU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL2NvbnRyb2xsZXIvYnJvd3Nlci5zZXJ2aWNlJztcclxuaW1wb3J0IHsgU3RyaW5nVXRpbHMgfSBmcm9tICd0dXJib2NvbW1vbnMtdHMnO1xyXG5cclxuXHJcbi8qKlxyXG4gKiBBIGRpYWxvZyBjb21wb25lbnQgd2hpY2ggYWxsb3dzIHVzIHRvIHNlbGVjdCBvbmUgc2luZ2xlIGl0ZW0gZnJvbSBhIGxpc3QuIFRoZSBlbGVtZW50cyBvbiB0aGF0IGxpc3QgYXJlIGRpc3BsYXllZCBvbiBhIHRhYmxlXHJcbiAqIHdoaWNoIG1heSBzaG93IGEgc2Nyb2xsIGlmIG5lY2Vzc2FyeSB3aGVuIHRoZXJlIGFyZSBtYW55IGVsZW1lbnRzIG9uIHRoZSBsaXN0LlxyXG4gKiBcclxuICogSXQgYWxzbyBhbGxvd3MgdXMgdG8gZmlsdGVyIGluc2lkZSB0aGUgbGlzdCB3aXRoIGEgY3VzdG9tIHRleHQgdGhhdCB3ZSBjYW4gdHlwZSBpbnRvIGEgc2VhcmNoIGlucHV0LCB3aGljaCBpcyBvcHRpb25hbC5cclxuICpcclxuICogdGV4dHMgcGFyYW1ldGVyIG11c3QgY29udGFpbiB0aGUgdGl0bGUsIHRoZSBkZXNjcmlwdGlvbiAob3B0aW9uYWwpLCB0aGUgZmlsdGVyIGlucHV0IHRpdGxlIChvcHRpb25hbCksIGFuZCB0aGUgc3VibWl0IGJ1dHRvbiBjYXB0aW9uLlxyXG4gKiBJZiB0aGF0IGNhcHRpb24gaXMgbm90IHByb3ZpZGVkLCB0aGUgc2VsZWN0aW9uIHdpbGwgYmUgYXV0b21hdGljYWxseSBwZXJmb3JtZWQgb25jZSB1c2VyIGNsaWNrcyBvbiBhbiBlbGVtZW50IG9uIHRoZSBsaXN0LiBPdGhlcndpc2UsIFxyXG4gKiB0aGUgZWxlbWVudCB3aWxsIGJlIHNlbGVjdGVkIG9uIHRoZSBsaXN0IGFuZCB0aGUgc2VsZWN0aW9uIHdpbGwgYmUgcGVyZm9ybWVkIG9uY2UgdGhlIHVzZXIgY2xpY2tzIG9uIHRoZSBzdWJtaXQgYnV0dG9uLlxyXG4gKlxyXG4gKiBvcHRpb25zIHBhcmFtZXRlciBtdXN0IGNvbnRhaW4gdGhlIGxpc3Qgb2YgZWxlbWVudHMgdGhhdCB3aWxsIGJlIGRpc3BsYXllZCB0byB0aGUgdXNlciAgXHJcbiAqL1xyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ3RnLWRpYWxvZy1zaW5nbGUtc2VsZWN0aW9uLWxpc3QnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9kaWFsb2ctc2luZ2xlLXNlbGVjdGlvbi1saXN0LmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9kaWFsb2ctc2luZ2xlLXNlbGVjdGlvbi1saXN0LmNvbXBvbmVudC5zY3NzJ11cclxufSlcclxuXHJcblxyXG5leHBvcnQgY2xhc3MgRGlhbG9nU2luZ2xlU2VsZWN0aW9uTGlzdENvbXBvbmVudCBleHRlbmRzIERpYWxvZ09wdGlvbnNCYXNlQ29tcG9uZW50IHtcclxuICAgIFxyXG4gICAgXHJcbiAgICAvKipcclxuICAgICAqIERlY2xhcmUgYSByZWZlcmVuY2UgdG8gdGhlIHN0cmluZyB1dGlscyBjbGFzcyBzbyBpdCBjYW4gYmUgdXNlZCBvbiB0aGUgaHRtbCBwYXJ0XHJcbiAgICAgKi9cclxuICAgIHN0cmluZ1V0aWxzID0gU3RyaW5nVXRpbHM7XHJcbiAgICBcclxuICAgIC8qKiBcclxuICAgICAqIENvbnRhaW5zIHRoZSBsaXN0IG9mIGVsZW1lbnRzIHRoYXQgd2lsbCBiZSBkaXJlY3RseSBzaG93biB0byB0aGUgdXNlciBhdCB0aGUgY29tcG9uZW50IGxpc3QuXHJcbiAgICAgKiBJdCBtYXkgYmUgZmlsdGVyZWQgb3Igbm90IGRlcGVuZGluZyBvbiB0aGlzIGNvbXBvbmVudCBzZXR1cCBhbmQgdGhlIHVzZXIgaW5wdXRcclxuICAgICAqL1xyXG4gICAgZmlsdGVyZWRPcHRpb25zOnN0cmluZ1tdID0gW107XHJcbiAgICBcclxuICAgIFxyXG4gICAgLyoqXHJcbiAgICAgKiBDb250YWlucyB0aGUgb3JpZ2luYWwgbGlzdCBvZiBlbGVtZW50cyB0aGF0IGFyZSBwcm92aWRlZCB0byBiZSBsaXN0ZWQgb24gdGhpcyBjb21wb25lbnQgYmVmb3JlXHJcbiAgICAgKiBiZWluZyBwb3NzaWJseSBmaWx0ZXJlZC4gSXQgaXMgb25seSB1c2VkIGFzIGEgYmFja3VwLCBub3Qgc2hvd24gdG8gdGhlIHVzZXJcclxuICAgICAqL1xyXG4gICAgcHJpdmF0ZSBvcmlnaW5hbE9wdGlvbnM6c3RyaW5nW10gPSBbXTtcclxuICAgIFxyXG4gICAgXHJcbiAgICAvKipcclxuICAgICAqIFRoZSBzYW1lIGxpc3QgYXMgdGhlIG9yaWdpbmFsbHkgcHJvdmlkZWQgYnV0IHByb2Nlc3NlZCBmb3IgYSBiZXR0ZXIgdGV4dCBzZWFyY2guXHJcbiAgICAgKiBJdCB3aWxsIGJlIHVzZWQgdG8gcGVyZm9ybSB0aGUgc2VhcmNoLCBidXQgbm90IHNob3duIHRvIHRoZSB1c2VyLlxyXG4gICAgICovXHJcbiAgICBwcml2YXRlIG9yaWdpbmFsT3B0aW9uc0Z1bGxUZXh0U2VhcmNoOnN0cmluZ1tdID0gW107XHJcbiAgICAgICBcclxuICAgIFxyXG4gICAgLyoqXHJcbiAgICAgKiBTdG9yZXMgdGhlIGluZGV4IGZvciB0aGUgZWxlbWVudCB0aGF0J3MgYmVlbiBzZWxlY3RlZCBieSB0aGUgdXNlclxyXG4gICAgICovXHJcbiAgICBzZWxlY3RlZEl0ZW1JbmRleCA9IC0xO1xyXG4gICAgXHJcblxyXG4gICAgY29uc3RydWN0b3IocHVibGljIGRpYWxvZ1JlZjogTWF0RGlhbG9nUmVmPERpYWxvZ09wdGlvbnNCYXNlQ29tcG9uZW50PixcclxuICAgICAgICAgICAgICAgIHB1YmxpYyBicm93c2VyU2VydmljZTogQnJvd3NlclNlcnZpY2UsXHJcbiAgICAgICAgICAgICAgICBASW5qZWN0KE1BVF9ESUFMT0dfREFUQSkgcHVibGljIGRhdGE6IGFueSkge1xyXG5cclxuICAgICAgICBzdXBlcigpO1xyXG5cclxuICAgICAgICBpZiAoZGF0YS50ZXh0cy5sZW5ndGggPCAxKSB7XHJcblxyXG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0RpYWxvZ1NpbmdsZVNlbGVjdGlvbkxpc3RDb21wb25lbnQgZXhwZWN0cyA0IHRleHRzOiBUaGUgdGl0bGUsIHRoZSBkZXNjcmlwdGlvbiAob3B0aW9uYWwpLCB0aGUgZmlsdGVyIGlucHV0IHRpdGxlIChvcHRpb25hbCksIGFuZCB0aGUgc3VibWl0IGJ1dHRvbiBjYXB0aW9uJyk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIFxyXG4gICAgICAgIGlmIChkYXRhLm9wdGlvbnMubGVuZ3RoIDwgMSkge1xyXG5cclxuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdEaWFsb2dTaW5nbGVTZWxlY3Rpb25MaXN0Q29tcG9uZW50IGV4cGVjdHMgb25lIG9yIG1vcmUgb3B0aW9ucycpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBcclxuICAgICAgICB0aGlzLm9yaWdpbmFsT3B0aW9ucyA9IGRhdGEub3B0aW9ucztcclxuICAgICAgICBcclxuICAgICAgICBmb3IobGV0IG9wdGlvbiBvZiB0aGlzLm9yaWdpbmFsT3B0aW9ucyl7XHJcbiAgICAgICAgICAgIFxyXG4gICAgICAgICAgICB0aGlzLmZpbHRlcmVkT3B0aW9ucy5wdXNoKG9wdGlvbik7XHJcbiAgICAgICAgICAgIHRoaXMub3JpZ2luYWxPcHRpb25zRnVsbFRleHRTZWFyY2gucHVzaChTdHJpbmdVdGlscy5mb3JtYXRGb3JGdWxsVGV4dFNlYXJjaChvcHRpb24pKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICBcclxuICAgIFxyXG4gICAgLyoqXHJcbiAgICAgKiBNZXRob2QgdG8gY2FsY3VsYXRlIHRoZSBtYXggcG9zc2libGUgaGVpZ2h0IHRoYXQgdGhlIGxpc3QgaXRlbXMgY29udGFpbmVyIGlzIGFsbG93ZWQgdG8gaGF2ZVxyXG4gICAgICovXHJcbiAgICBnZXRMaXN0SXRlbXNDb250YWluZXJNYXhoZWlnaHQoKXtcclxuICAgICAgICBcclxuICAgICAgICByZXR1cm4gKHRoaXMuYnJvd3NlclNlcnZpY2UuZ2V0V2luZG93SGVpZ2h0KCkgKiAwLjYpICsgJ3B4JztcclxuICAgIH1cclxuXHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBXaGVuIHRoZSB1c2VyIHR5cGVzIGEgdmFsdWUgb24gdGhlIGlucHV0IGVsZW1lbnQgdG8gZmlsdGVyIHRoZSBsaXN0LCB0aGlzIG1ldGhvZCB3aWxsIHBlcmZvcm1cclxuICAgICAqIHRoYXQgZmlsdGVyaW5nIGFuZCByZWZyZXNoIHRoZSBsaXN0XHJcbiAgICAgKi9cclxuICAgIG9uU2VhcmNoQ2hhbmdlKGlucHV0OkhUTUxJbnB1dEVsZW1lbnQpe1xyXG5cclxuICAgICAgICB0aGlzLnNlbGVjdGVkSXRlbUluZGV4ID0gLTE7XHJcbiAgICAgICBcclxuICAgICAgICBsZXQgaW5wdXRWYWx1ZSA9IFN0cmluZ1V0aWxzLmZvcm1hdEZvckZ1bGxUZXh0U2VhcmNoKGlucHV0LnZhbHVlKTtcclxuXHJcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLm9yaWdpbmFsT3B0aW9uc0Z1bGxUZXh0U2VhcmNoLmxlbmd0aDsgaSsrKXtcclxuXHJcbiAgICAgICAgICAgIGlmKGlucHV0VmFsdWUgPT09ICcnIHx8XHJcbiAgICAgICAgICAgICAgIHRoaXMub3JpZ2luYWxPcHRpb25zRnVsbFRleHRTZWFyY2hbaV0uaW5kZXhPZihpbnB1dFZhbHVlKSA+PSAwKXtcclxuXHJcbiAgICAgICAgICAgICAgICB0aGlzLmZpbHRlcmVkT3B0aW9uc1tpXSA9IHRoaXMub3JpZ2luYWxPcHRpb25zW2ldO1xyXG5cclxuICAgICAgICAgICAgfWVsc2V7XHJcblxyXG4gICAgICAgICAgICAgICAgdGhpcy5maWx0ZXJlZE9wdGlvbnNbaV0gPSAnJztcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIFxyXG4gICAgLyoqXHJcbiAgICAgKiBUaGlzIG1ldGhvZCBpcyB1c2VkIHRvIGdyZWF0bHkgaW1wcm92ZSBuZ0ZvciBwZXJmb3JtYW5jZSB3aXRoIGFycmF5cyBvZiBwcmltaXRpdmUgdmFsdWVzLiBJdCB0ZWxscyB0aGUgcmVmcmVzaFxyXG4gICAgICogZnVuY3Rpb24gdG8gd29yayBieSBpbmRleCBpbnN0ZWFkIG9mIGJ5IHZhbHVlLiBUaGUgY2hhbmdlIGluIHBlcmZvcm1hbmNlIHdoZW4gcmVmcmVzaGluZyB0aGUgbGlzdCBpcyBtYXNzaXZlLiBcclxuICAgICAqL1xyXG4gICAgdHJhY2tCeUZuID0gKGluZGV4OiBudW1iZXIsIF92YWx1ZTogc3RyaW5nKSA9PiBpbmRleDtcclxufVxyXG4iLCI8aDM+XHJcbiAgICB7e2RhdGEudGV4dHNbMF19fVxyXG48L2gzPlxyXG5cclxuPHAgKm5nSWY9XCJkYXRhLnRleHRzLmxlbmd0aCA+IDEgJmFtcDsmYW1wOyAhc3RyaW5nVXRpbHMuaXNFbXB0eShkYXRhLnRleHRzWzFdKVwiPlxyXG4gICAge3tkYXRhLnRleHRzWzFdfX1cclxuPC9wPlxyXG5cclxuPG1hdC1mb3JtLWZpZWxkICpuZ0lmPVwiZGF0YS50ZXh0cy5sZW5ndGggPiAyICZhbXA7JmFtcDsgIXN0cmluZ1V0aWxzLmlzRW1wdHkoZGF0YS50ZXh0c1syXSlcIlxyXG4gICAgY2xhc3M9XCJzZWFyY2hJdGVtSW5wdXRDb250YWluZXJcIj5cclxuICAgIFxyXG4gICAgPG1hdC1sYWJlbD57e2RhdGEudGV4dHNbMl19fTwvbWF0LWxhYmVsPlxyXG4gICAgPGlucHV0IG1hdElucHV0IGF1dG9Gb2N1c09uRGlzcGxheVxyXG4gICAgICAgIChpbnB1dCk9XCJvblNlYXJjaENoYW5nZSgkZXZlbnQudGFyZ2V0KVwiPlxyXG4gICAgICAgIFxyXG48L21hdC1mb3JtLWZpZWxkPlxyXG5cclxuPGRpdiBjbGFzcz1cImxpc3RJdGVtc0NvbnRhaW5lclwiXHJcbiAgICBbc3R5bGUubWF4LWhlaWdodF09XCJnZXRMaXN0SXRlbXNDb250YWluZXJNYXhoZWlnaHQoKVwiPlxyXG5cclxuICAgIDxkaXYgY2xhc3M9XCJsaXN0SXRlbUNvbnRhaW5lclwiXHJcbiAgICAgICAgW3N0eWxlLmJhY2tncm91bmQtY29sb3JdPVwic2VsZWN0ZWRJdGVtSW5kZXggPT09IGkgPyAnIzkwZDFmZmFkJyA6IChpICUgMiA9PT0gMCA/ICdpbml0aWFsJyA6ICcjMDAwMDAwMDknKVwiXHJcbiAgICAgICAgKm5nRm9yPVwibGV0IGl0ZW0gb2YgZmlsdGVyZWRPcHRpb25zOyBsZXQgaSA9IGluZGV4OyB0cmFja0J5OiB0cmFja0J5Rm5cIlxyXG4gICAgICAgIChjbGljayk9XCJkYXRhLnRleHRzLmxlbmd0aCA8IDQgPyBkaWFsb2dSZWYuY2xvc2UoaSkgOiBzZWxlY3RlZEl0ZW1JbmRleCA9IGlcIj5cclxuICAgIFxyXG4gICAgICAgIDxwICpuZ0lmPVwiaXRlbSAhPT0gJydcIj5cclxuICAgICAgICAgICAge3tpdGVtfX1cclxuICAgICAgICA8L3A+XHJcbiAgICBcclxuICAgIDwvZGl2PlxyXG5cclxuPC9kaXY+XHJcblxyXG48YnV0dG9uIG1hdC1yYWlzZWQtYnV0dG9uIGNvbG9yPVwicHJpbWFyeVwiXHJcbiAgICBbZGlzYWJsZWRdPVwic2VsZWN0ZWRJdGVtSW5kZXggPCAwXCJcclxuICAgIChjbGljayk9XCJkaWFsb2dSZWYuY2xvc2Uoc2VsZWN0ZWRJdGVtSW5kZXgpXCJcclxuICAgICpuZ0lmPVwiZGF0YS50ZXh0cy5sZW5ndGggPiAzXCI+XHJcblxyXG4gICAge3tkYXRhLnRleHRzWzNdfX1cclxuICAgIFxyXG48L2J1dHRvbj4iXX0=
1
+ /**
2
+ * TurboGUI is A library that helps with the most common and generic UI elements and functionalities
3
+ *
4
+ * Website : -> http://www.turbogui.org
5
+ * License : -> Licensed under the Apache License, Version 2.0. You may not use this file except in compliance with the License.
6
+ * License Url : -> http://www.apache.org/licenses/LICENSE-2.0
7
+ * CopyRight : -> Copyright 2018 Edertone Advanded Solutions. https://www.edertone.com
8
+ */
9
+ import { Component, Inject } from '@angular/core';
10
+ import { MAT_DIALOG_DATA } from '@angular/material/dialog';
11
+ import { DialogOptionsBaseComponent } from '../dialog-options-base/dialog-options-base.component';
12
+ import { StringUtils } from 'turbocommons-ts';
13
+ import * as i0 from "@angular/core";
14
+ import * as i1 from "@angular/material/dialog";
15
+ import * as i2 from "../../../controller/browser.service";
16
+ import * as i3 from "@angular/material/input";
17
+ import * as i4 from "@angular/material/form-field";
18
+ import * as i5 from "@angular/material/button";
19
+ import * as i6 from "@angular/common";
20
+ import * as i7 from "../../directives/AutoFocusOnDisplayDirective";
21
+ /**
22
+ * A dialog component which allows us to select one single item from a list. The elements on that list are displayed on a table
23
+ * which may show a scroll if necessary when there are many elements on the list.
24
+ *
25
+ * It also allows us to filter inside the list with a custom text that we can type into a search input, which is optional.
26
+ *
27
+ * texts parameter must contain the title, the description (optional), the filter input title (optional), and the submit button caption.
28
+ * If that caption is not provided, the selection will be automatically performed once user clicks on an element on the list. Otherwise,
29
+ * the element will be selected on the list and the selection will be performed once the user clicks on the submit button.
30
+ *
31
+ * options parameter must contain the list of elements that will be displayed to the user
32
+ */
33
+ export class DialogSingleSelectionListComponent extends DialogOptionsBaseComponent {
34
+ constructor(dialogRef, browserService, data) {
35
+ super();
36
+ this.dialogRef = dialogRef;
37
+ this.browserService = browserService;
38
+ this.data = data;
39
+ /**
40
+ * Declare a reference to the string utils class so it can be used on the html part
41
+ */
42
+ this.stringUtils = StringUtils;
43
+ /**
44
+ * Contains the list of elements that will be directly shown to the user at the component list.
45
+ * It may be filtered or not depending on this component setup and the user input
46
+ */
47
+ this.filteredOptions = [];
48
+ /**
49
+ * Contains the original list of elements that are provided to be listed on this component before
50
+ * being possibly filtered. It is only used as a backup, not shown to the user
51
+ */
52
+ this.originalOptions = [];
53
+ /**
54
+ * The same list as the originally provided but processed for a better text search.
55
+ * It will be used to perform the search, but not shown to the user.
56
+ */
57
+ this.originalOptionsFullTextSearch = [];
58
+ /**
59
+ * Stores the index for the element that's been selected by the user
60
+ */
61
+ this.selectedItemIndex = -1;
62
+ /**
63
+ * This method is used to greatly improve ngFor performance with arrays of primitive values. It tells the refresh
64
+ * function to work by index instead of by value. The change in performance when refreshing the list is massive.
65
+ */
66
+ this.trackByFn = (index, _value) => index;
67
+ if (data.texts.length < 1) {
68
+ throw new Error('DialogSingleSelectionListComponent expects 4 texts: The title, the description (optional), the filter input title (optional), and the submit button caption');
69
+ }
70
+ if (data.options.length < 1) {
71
+ throw new Error('DialogSingleSelectionListComponent expects one or more options');
72
+ }
73
+ this.originalOptions = data.options;
74
+ for (let option of this.originalOptions) {
75
+ this.filteredOptions.push(option);
76
+ this.originalOptionsFullTextSearch.push(StringUtils.formatForFullTextSearch(option));
77
+ }
78
+ }
79
+ /**
80
+ * Method to calculate the max possible height that the list items container is allowed to have
81
+ */
82
+ getListItemsContainerMaxheight() {
83
+ return (this.browserService.getWindowHeight() * 0.6) + 'px';
84
+ }
85
+ /**
86
+ * When the user types a value on the input element to filter the list, this method will perform
87
+ * that filtering and refresh the list
88
+ */
89
+ onSearchChange(input) {
90
+ this.selectedItemIndex = -1;
91
+ let inputValue = StringUtils.formatForFullTextSearch(input.value);
92
+ for (let i = 0; i < this.originalOptionsFullTextSearch.length; i++) {
93
+ if (inputValue === '' ||
94
+ this.originalOptionsFullTextSearch[i].indexOf(inputValue) >= 0) {
95
+ this.filteredOptions[i] = this.originalOptions[i];
96
+ }
97
+ else {
98
+ this.filteredOptions[i] = '';
99
+ }
100
+ }
101
+ }
102
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.8", 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: "17.0.8", 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] ", 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
+ }
105
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.8", ngImport: i0, type: DialogSingleSelectionListComponent, decorators: [{
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 <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
+ }], ctorParameters: () => [{ type: i1.MatDialogRef }, { type: i2.BrowserService }, { type: undefined, decorators: [{
109
+ type: Inject,
110
+ args: [MAT_DIALOG_DATA]
111
+ }] }] });
112
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlhbG9nLXNpbmdsZS1zZWxlY3Rpb24tbGlzdC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90dXJib2d1aS1hbmd1bGFyL3NyYy9tYWluL3ZpZXcvY29tcG9uZW50cy9kaWFsb2ctc2luZ2xlLXNlbGVjdGlvbi1saXN0L2RpYWxvZy1zaW5nbGUtc2VsZWN0aW9uLWxpc3QuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdHVyYm9ndWktYW5ndWxhci9zcmMvbWFpbi92aWV3L2NvbXBvbmVudHMvZGlhbG9nLXNpbmdsZS1zZWxlY3Rpb24tbGlzdC9kaWFsb2ctc2luZ2xlLXNlbGVjdGlvbi1saXN0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7O0dBT0c7QUFFSCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNsRCxPQUFPLEVBQWdCLGVBQWUsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ3pFLE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLHNEQUFzRCxDQUFDO0FBRWxHLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQzs7Ozs7Ozs7O0FBRzlDOzs7Ozs7Ozs7OztHQVdHO0FBUUgsTUFBTSxPQUFPLGtDQUFtQyxTQUFRLDBCQUEwQjtJQW1DOUUsWUFBbUIsU0FBbUQsRUFDbkQsY0FBOEIsRUFDTCxJQUFTO1FBRWpELEtBQUssRUFBRSxDQUFDO1FBSk8sY0FBUyxHQUFULFNBQVMsQ0FBMEM7UUFDbkQsbUJBQWMsR0FBZCxjQUFjLENBQWdCO1FBQ0wsU0FBSSxHQUFKLElBQUksQ0FBSztRQWxDckQ7O1dBRUc7UUFDSCxnQkFBVyxHQUFHLFdBQVcsQ0FBQztRQUUxQjs7O1dBR0c7UUFDSCxvQkFBZSxHQUFZLEVBQUUsQ0FBQztRQUc5Qjs7O1dBR0c7UUFDSyxvQkFBZSxHQUFZLEVBQUUsQ0FBQztRQUd0Qzs7O1dBR0c7UUFDSyxrQ0FBNkIsR0FBWSxFQUFFLENBQUM7UUFHcEQ7O1dBRUc7UUFDSCxzQkFBaUIsR0FBRyxDQUFDLENBQUMsQ0FBQztRQThEdkI7OztXQUdHO1FBQ0gsY0FBUyxHQUFHLENBQUMsS0FBYSxFQUFFLE1BQWMsRUFBRSxFQUFFLENBQUMsS0FBSyxDQUFDO1FBekRqRCxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRTtZQUV2QixNQUFNLElBQUksS0FBSyxDQUFDLDZKQUE2SixDQUFDLENBQUM7U0FDbEw7UUFFRCxJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRTtZQUV6QixNQUFNLElBQUksS0FBSyxDQUFDLGdFQUFnRSxDQUFDLENBQUM7U0FDckY7UUFFRCxJQUFJLENBQUMsZUFBZSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUM7UUFFcEMsS0FBSSxJQUFJLE1BQU0sSUFBSSxJQUFJLENBQUMsZUFBZSxFQUFDO1lBRW5DLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1lBQ2xDLElBQUksQ0FBQyw2QkFBNkIsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLHVCQUF1QixDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7U0FDeEY7SUFDTCxDQUFDO0lBR0Q7O09BRUc7SUFDSCw4QkFBOEI7UUFFMUIsT0FBTyxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsZUFBZSxFQUFFLEdBQUcsR0FBRyxDQUFDLEdBQUcsSUFBSSxDQUFDO0lBQ2hFLENBQUM7SUFHRDs7O09BR0c7SUFDSCxjQUFjLENBQUMsS0FBc0I7UUFFakMsSUFBSSxDQUFDLGlCQUFpQixHQUFHLENBQUMsQ0FBQyxDQUFDO1FBRTVCLElBQUksVUFBVSxHQUFHLFdBQVcsQ0FBQyx1QkFBdUIsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7UUFFbEUsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLElBQUksQ0FBQyw2QkFBNkIsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUM7WUFFL0QsSUFBRyxVQUFVLEtBQUssRUFBRTtnQkFDakIsSUFBSSxDQUFDLDZCQUE2QixDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLEVBQUM7Z0JBRTlELElBQUksQ0FBQyxlQUFlLENBQUMsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxDQUFDLENBQUMsQ0FBQzthQUVyRDtpQkFBSTtnQkFFRCxJQUFJLENBQUMsZUFBZSxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQzthQUNoQztTQUNKO0lBQ0wsQ0FBQzs4R0E1RlEsa0NBQWtDLDRFQXFDdkIsZUFBZTtrR0FyQzFCLGtDQUFrQyw4RkNuQy9DLGt4Q0F3Q1M7OzJGRExJLGtDQUFrQztrQkFQOUMsU0FBUzsrQkFDRSxpQ0FBaUM7OzBCQTJDNUIsTUFBTTsyQkFBQyxlQUFlIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXHJcbiAqIFR1cmJvR1VJIGlzIEEgbGlicmFyeSB0aGF0IGhlbHBzIHdpdGggdGhlIG1vc3QgY29tbW9uIGFuZCBnZW5lcmljIFVJIGVsZW1lbnRzIGFuZCBmdW5jdGlvbmFsaXRpZXNcclxuICpcclxuICogV2Vic2l0ZSA6IC0+IGh0dHA6Ly93d3cudHVyYm9ndWkub3JnXHJcbiAqIExpY2Vuc2UgOiAtPiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wLiBZb3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXHJcbiAqIExpY2Vuc2UgVXJsIDogLT4gaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXHJcbiAqIENvcHlSaWdodCA6IC0+IENvcHlyaWdodCAyMDE4IEVkZXJ0b25lIEFkdmFuZGVkIFNvbHV0aW9ucy4gaHR0cHM6Ly93d3cuZWRlcnRvbmUuY29tXHJcbiAqL1xyXG5cclxuaW1wb3J0IHsgQ29tcG9uZW50LCBJbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgTWF0RGlhbG9nUmVmLCBNQVRfRElBTE9HX0RBVEEgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kaWFsb2cnO1xyXG5pbXBvcnQgeyBEaWFsb2dPcHRpb25zQmFzZUNvbXBvbmVudCB9IGZyb20gJy4uL2RpYWxvZy1vcHRpb25zLWJhc2UvZGlhbG9nLW9wdGlvbnMtYmFzZS5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBCcm93c2VyU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL2NvbnRyb2xsZXIvYnJvd3Nlci5zZXJ2aWNlJztcclxuaW1wb3J0IHsgU3RyaW5nVXRpbHMgfSBmcm9tICd0dXJib2NvbW1vbnMtdHMnO1xyXG5cclxuXHJcbi8qKlxyXG4gKiBBIGRpYWxvZyBjb21wb25lbnQgd2hpY2ggYWxsb3dzIHVzIHRvIHNlbGVjdCBvbmUgc2luZ2xlIGl0ZW0gZnJvbSBhIGxpc3QuIFRoZSBlbGVtZW50cyBvbiB0aGF0IGxpc3QgYXJlIGRpc3BsYXllZCBvbiBhIHRhYmxlXHJcbiAqIHdoaWNoIG1heSBzaG93IGEgc2Nyb2xsIGlmIG5lY2Vzc2FyeSB3aGVuIHRoZXJlIGFyZSBtYW55IGVsZW1lbnRzIG9uIHRoZSBsaXN0LlxyXG4gKiBcclxuICogSXQgYWxzbyBhbGxvd3MgdXMgdG8gZmlsdGVyIGluc2lkZSB0aGUgbGlzdCB3aXRoIGEgY3VzdG9tIHRleHQgdGhhdCB3ZSBjYW4gdHlwZSBpbnRvIGEgc2VhcmNoIGlucHV0LCB3aGljaCBpcyBvcHRpb25hbC5cclxuICpcclxuICogdGV4dHMgcGFyYW1ldGVyIG11c3QgY29udGFpbiB0aGUgdGl0bGUsIHRoZSBkZXNjcmlwdGlvbiAob3B0aW9uYWwpLCB0aGUgZmlsdGVyIGlucHV0IHRpdGxlIChvcHRpb25hbCksIGFuZCB0aGUgc3VibWl0IGJ1dHRvbiBjYXB0aW9uLlxyXG4gKiBJZiB0aGF0IGNhcHRpb24gaXMgbm90IHByb3ZpZGVkLCB0aGUgc2VsZWN0aW9uIHdpbGwgYmUgYXV0b21hdGljYWxseSBwZXJmb3JtZWQgb25jZSB1c2VyIGNsaWNrcyBvbiBhbiBlbGVtZW50IG9uIHRoZSBsaXN0LiBPdGhlcndpc2UsIFxyXG4gKiB0aGUgZWxlbWVudCB3aWxsIGJlIHNlbGVjdGVkIG9uIHRoZSBsaXN0IGFuZCB0aGUgc2VsZWN0aW9uIHdpbGwgYmUgcGVyZm9ybWVkIG9uY2UgdGhlIHVzZXIgY2xpY2tzIG9uIHRoZSBzdWJtaXQgYnV0dG9uLlxyXG4gKlxyXG4gKiBvcHRpb25zIHBhcmFtZXRlciBtdXN0IGNvbnRhaW4gdGhlIGxpc3Qgb2YgZWxlbWVudHMgdGhhdCB3aWxsIGJlIGRpc3BsYXllZCB0byB0aGUgdXNlciAgXHJcbiAqL1xyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ3RnLWRpYWxvZy1zaW5nbGUtc2VsZWN0aW9uLWxpc3QnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9kaWFsb2ctc2luZ2xlLXNlbGVjdGlvbi1saXN0LmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9kaWFsb2ctc2luZ2xlLXNlbGVjdGlvbi1saXN0LmNvbXBvbmVudC5zY3NzJ11cclxufSlcclxuXHJcblxyXG5leHBvcnQgY2xhc3MgRGlhbG9nU2luZ2xlU2VsZWN0aW9uTGlzdENvbXBvbmVudCBleHRlbmRzIERpYWxvZ09wdGlvbnNCYXNlQ29tcG9uZW50IHtcclxuICAgIFxyXG4gICAgXHJcbiAgICAvKipcclxuICAgICAqIERlY2xhcmUgYSByZWZlcmVuY2UgdG8gdGhlIHN0cmluZyB1dGlscyBjbGFzcyBzbyBpdCBjYW4gYmUgdXNlZCBvbiB0aGUgaHRtbCBwYXJ0XHJcbiAgICAgKi9cclxuICAgIHN0cmluZ1V0aWxzID0gU3RyaW5nVXRpbHM7XHJcbiAgICBcclxuICAgIC8qKiBcclxuICAgICAqIENvbnRhaW5zIHRoZSBsaXN0IG9mIGVsZW1lbnRzIHRoYXQgd2lsbCBiZSBkaXJlY3RseSBzaG93biB0byB0aGUgdXNlciBhdCB0aGUgY29tcG9uZW50IGxpc3QuXHJcbiAgICAgKiBJdCBtYXkgYmUgZmlsdGVyZWQgb3Igbm90IGRlcGVuZGluZyBvbiB0aGlzIGNvbXBvbmVudCBzZXR1cCBhbmQgdGhlIHVzZXIgaW5wdXRcclxuICAgICAqL1xyXG4gICAgZmlsdGVyZWRPcHRpb25zOnN0cmluZ1tdID0gW107XHJcbiAgICBcclxuICAgIFxyXG4gICAgLyoqXHJcbiAgICAgKiBDb250YWlucyB0aGUgb3JpZ2luYWwgbGlzdCBvZiBlbGVtZW50cyB0aGF0IGFyZSBwcm92aWRlZCB0byBiZSBsaXN0ZWQgb24gdGhpcyBjb21wb25lbnQgYmVmb3JlXHJcbiAgICAgKiBiZWluZyBwb3NzaWJseSBmaWx0ZXJlZC4gSXQgaXMgb25seSB1c2VkIGFzIGEgYmFja3VwLCBub3Qgc2hvd24gdG8gdGhlIHVzZXJcclxuICAgICAqL1xyXG4gICAgcHJpdmF0ZSBvcmlnaW5hbE9wdGlvbnM6c3RyaW5nW10gPSBbXTtcclxuICAgIFxyXG4gICAgXHJcbiAgICAvKipcclxuICAgICAqIFRoZSBzYW1lIGxpc3QgYXMgdGhlIG9yaWdpbmFsbHkgcHJvdmlkZWQgYnV0IHByb2Nlc3NlZCBmb3IgYSBiZXR0ZXIgdGV4dCBzZWFyY2guXHJcbiAgICAgKiBJdCB3aWxsIGJlIHVzZWQgdG8gcGVyZm9ybSB0aGUgc2VhcmNoLCBidXQgbm90IHNob3duIHRvIHRoZSB1c2VyLlxyXG4gICAgICovXHJcbiAgICBwcml2YXRlIG9yaWdpbmFsT3B0aW9uc0Z1bGxUZXh0U2VhcmNoOnN0cmluZ1tdID0gW107XHJcbiAgICAgICBcclxuICAgIFxyXG4gICAgLyoqXHJcbiAgICAgKiBTdG9yZXMgdGhlIGluZGV4IGZvciB0aGUgZWxlbWVudCB0aGF0J3MgYmVlbiBzZWxlY3RlZCBieSB0aGUgdXNlclxyXG4gICAgICovXHJcbiAgICBzZWxlY3RlZEl0ZW1JbmRleCA9IC0xO1xyXG4gICAgXHJcblxyXG4gICAgY29uc3RydWN0b3IocHVibGljIGRpYWxvZ1JlZjogTWF0RGlhbG9nUmVmPERpYWxvZ09wdGlvbnNCYXNlQ29tcG9uZW50PixcclxuICAgICAgICAgICAgICAgIHB1YmxpYyBicm93c2VyU2VydmljZTogQnJvd3NlclNlcnZpY2UsXHJcbiAgICAgICAgICAgICAgICBASW5qZWN0KE1BVF9ESUFMT0dfREFUQSkgcHVibGljIGRhdGE6IGFueSkge1xyXG5cclxuICAgICAgICBzdXBlcigpO1xyXG5cclxuICAgICAgICBpZiAoZGF0YS50ZXh0cy5sZW5ndGggPCAxKSB7XHJcblxyXG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0RpYWxvZ1NpbmdsZVNlbGVjdGlvbkxpc3RDb21wb25lbnQgZXhwZWN0cyA0IHRleHRzOiBUaGUgdGl0bGUsIHRoZSBkZXNjcmlwdGlvbiAob3B0aW9uYWwpLCB0aGUgZmlsdGVyIGlucHV0IHRpdGxlIChvcHRpb25hbCksIGFuZCB0aGUgc3VibWl0IGJ1dHRvbiBjYXB0aW9uJyk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIFxyXG4gICAgICAgIGlmIChkYXRhLm9wdGlvbnMubGVuZ3RoIDwgMSkge1xyXG5cclxuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdEaWFsb2dTaW5nbGVTZWxlY3Rpb25MaXN0Q29tcG9uZW50IGV4cGVjdHMgb25lIG9yIG1vcmUgb3B0aW9ucycpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBcclxuICAgICAgICB0aGlzLm9yaWdpbmFsT3B0aW9ucyA9IGRhdGEub3B0aW9ucztcclxuICAgICAgICBcclxuICAgICAgICBmb3IobGV0IG9wdGlvbiBvZiB0aGlzLm9yaWdpbmFsT3B0aW9ucyl7XHJcbiAgICAgICAgICAgIFxyXG4gICAgICAgICAgICB0aGlzLmZpbHRlcmVkT3B0aW9ucy5wdXNoKG9wdGlvbik7XHJcbiAgICAgICAgICAgIHRoaXMub3JpZ2luYWxPcHRpb25zRnVsbFRleHRTZWFyY2gucHVzaChTdHJpbmdVdGlscy5mb3JtYXRGb3JGdWxsVGV4dFNlYXJjaChvcHRpb24pKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICBcclxuICAgIFxyXG4gICAgLyoqXHJcbiAgICAgKiBNZXRob2QgdG8gY2FsY3VsYXRlIHRoZSBtYXggcG9zc2libGUgaGVpZ2h0IHRoYXQgdGhlIGxpc3QgaXRlbXMgY29udGFpbmVyIGlzIGFsbG93ZWQgdG8gaGF2ZVxyXG4gICAgICovXHJcbiAgICBnZXRMaXN0SXRlbXNDb250YWluZXJNYXhoZWlnaHQoKXtcclxuICAgICAgICBcclxuICAgICAgICByZXR1cm4gKHRoaXMuYnJvd3NlclNlcnZpY2UuZ2V0V2luZG93SGVpZ2h0KCkgKiAwLjYpICsgJ3B4JztcclxuICAgIH1cclxuXHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBXaGVuIHRoZSB1c2VyIHR5cGVzIGEgdmFsdWUgb24gdGhlIGlucHV0IGVsZW1lbnQgdG8gZmlsdGVyIHRoZSBsaXN0LCB0aGlzIG1ldGhvZCB3aWxsIHBlcmZvcm1cclxuICAgICAqIHRoYXQgZmlsdGVyaW5nIGFuZCByZWZyZXNoIHRoZSBsaXN0XHJcbiAgICAgKi9cclxuICAgIG9uU2VhcmNoQ2hhbmdlKGlucHV0OkhUTUxJbnB1dEVsZW1lbnQpe1xyXG5cclxuICAgICAgICB0aGlzLnNlbGVjdGVkSXRlbUluZGV4ID0gLTE7XHJcbiAgICAgICBcclxuICAgICAgICBsZXQgaW5wdXRWYWx1ZSA9IFN0cmluZ1V0aWxzLmZvcm1hdEZvckZ1bGxUZXh0U2VhcmNoKGlucHV0LnZhbHVlKTtcclxuXHJcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLm9yaWdpbmFsT3B0aW9uc0Z1bGxUZXh0U2VhcmNoLmxlbmd0aDsgaSsrKXtcclxuXHJcbiAgICAgICAgICAgIGlmKGlucHV0VmFsdWUgPT09ICcnIHx8XHJcbiAgICAgICAgICAgICAgIHRoaXMub3JpZ2luYWxPcHRpb25zRnVsbFRleHRTZWFyY2hbaV0uaW5kZXhPZihpbnB1dFZhbHVlKSA+PSAwKXtcclxuXHJcbiAgICAgICAgICAgICAgICB0aGlzLmZpbHRlcmVkT3B0aW9uc1tpXSA9IHRoaXMub3JpZ2luYWxPcHRpb25zW2ldO1xyXG5cclxuICAgICAgICAgICAgfWVsc2V7XHJcblxyXG4gICAgICAgICAgICAgICAgdGhpcy5maWx0ZXJlZE9wdGlvbnNbaV0gPSAnJztcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIFxyXG4gICAgLyoqXHJcbiAgICAgKiBUaGlzIG1ldGhvZCBpcyB1c2VkIHRvIGdyZWF0bHkgaW1wcm92ZSBuZ0ZvciBwZXJmb3JtYW5jZSB3aXRoIGFycmF5cyBvZiBwcmltaXRpdmUgdmFsdWVzLiBJdCB0ZWxscyB0aGUgcmVmcmVzaFxyXG4gICAgICogZnVuY3Rpb24gdG8gd29yayBieSBpbmRleCBpbnN0ZWFkIG9mIGJ5IHZhbHVlLiBUaGUgY2hhbmdlIGluIHBlcmZvcm1hbmNlIHdoZW4gcmVmcmVzaGluZyB0aGUgbGlzdCBpcyBtYXNzaXZlLiBcclxuICAgICAqL1xyXG4gICAgdHJhY2tCeUZuID0gKGluZGV4OiBudW1iZXIsIF92YWx1ZTogc3RyaW5nKSA9PiBpbmRleDtcclxufVxyXG4iLCI8aDM+XHJcbiAgICB7e2RhdGEudGV4dHNbMF19fVxyXG48L2gzPlxyXG5cclxuPHAgKm5nSWY9XCJkYXRhLnRleHRzLmxlbmd0aCA+IDEgJmFtcDsmYW1wOyAhc3RyaW5nVXRpbHMuaXNFbXB0eShkYXRhLnRleHRzWzFdKVwiPlxyXG4gICAge3tkYXRhLnRleHRzWzFdfX1cclxuPC9wPlxyXG5cclxuPG1hdC1mb3JtLWZpZWxkICpuZ0lmPVwiZGF0YS50ZXh0cy5sZW5ndGggPiAyICZhbXA7JmFtcDsgIXN0cmluZ1V0aWxzLmlzRW1wdHkoZGF0YS50ZXh0c1syXSlcIlxyXG4gICAgY2xhc3M9XCJzZWFyY2hJdGVtSW5wdXRDb250YWluZXJcIj5cclxuICAgIFxyXG4gICAgPG1hdC1sYWJlbD57e2RhdGEudGV4dHNbMl19fTwvbWF0LWxhYmVsPlxyXG4gICAgPGlucHV0IG1hdElucHV0IGF1dG9Gb2N1c09uRGlzcGxheVxyXG4gICAgICAgIChpbnB1dCk9XCJvblNlYXJjaENoYW5nZSgkZXZlbnQudGFyZ2V0KVwiPlxyXG4gICAgICAgIFxyXG48L21hdC1mb3JtLWZpZWxkPlxyXG5cclxuPGRpdiBjbGFzcz1cImxpc3RJdGVtc0NvbnRhaW5lclwiXHJcbiAgICBbc3R5bGUubWF4LWhlaWdodF09XCJnZXRMaXN0SXRlbXNDb250YWluZXJNYXhoZWlnaHQoKVwiPlxyXG5cclxuICAgIDxkaXYgY2xhc3M9XCJsaXN0SXRlbUNvbnRhaW5lclwiXHJcbiAgICAgICAgW3N0eWxlLmJhY2tncm91bmQtY29sb3JdPVwic2VsZWN0ZWRJdGVtSW5kZXggPT09IGkgPyAnIzkwZDFmZmFkJyA6IChpICUgMiA9PT0gMCA/ICdpbml0aWFsJyA6ICcjMDAwMDAwMDknKVwiXHJcbiAgICAgICAgKm5nRm9yPVwibGV0IGl0ZW0gb2YgZmlsdGVyZWRPcHRpb25zOyBsZXQgaSA9IGluZGV4OyB0cmFja0J5OiB0cmFja0J5Rm5cIlxyXG4gICAgICAgIChjbGljayk9XCJkYXRhLnRleHRzLmxlbmd0aCA8IDQgPyBkaWFsb2dSZWYuY2xvc2UoaSkgOiBzZWxlY3RlZEl0ZW1JbmRleCA9IGlcIj5cclxuICAgIFxyXG4gICAgICAgIDxwICpuZ0lmPVwiaXRlbSAhPT0gJydcIj5cclxuICAgICAgICAgICAge3tpdGVtfX1cclxuICAgICAgICA8L3A+XHJcbiAgICBcclxuICAgIDwvZGl2PlxyXG5cclxuPC9kaXY+XHJcblxyXG48YnV0dG9uIG1hdC1yYWlzZWQtYnV0dG9uIGNvbG9yPVwicHJpbWFyeVwiXHJcbiAgICBbZGlzYWJsZWRdPVwic2VsZWN0ZWRJdGVtSW5kZXggPCAwXCJcclxuICAgIChjbGljayk9XCJkaWFsb2dSZWYuY2xvc2Uoc2VsZWN0ZWRJdGVtSW5kZXgpXCJcclxuICAgICpuZ0lmPVwiZGF0YS50ZXh0cy5sZW5ndGggPiAzXCI+XHJcblxyXG4gICAge3tkYXRhLnRleHRzWzNdfX1cclxuICAgIFxyXG48L2J1dHRvbj4iXX0=
@@ -1,42 +1,42 @@
1
- /**
2
- * TurboGUI is A library that helps with the most common and generic UI elements and functionalities
3
- *
4
- * Website : -> http://www.turbogui.org
5
- * License : -> Licensed under the Apache License, Version 2.0. You may not use this file except in compliance with the License.
6
- * License Url : -> http://www.apache.org/licenses/LICENSE-2.0
7
- * CopyRight : -> Copyright 2018 Edertone Advanded Solutions. https://www.edertone.com
8
- */
9
- import { Component, Inject } from '@angular/core';
10
- import { MAT_DIALOG_DATA } from '@angular/material/dialog';
11
- import { DialogOptionsBaseComponent } from '../dialog-options-base/dialog-options-base.component';
12
- import * as i0 from "@angular/core";
13
- import * as i1 from "@angular/material/dialog";
14
- import * as i2 from "@angular/material/button";
15
- import * as i3 from "@angular/common";
16
- /**
17
- * A dialog component with two option buttons, to be used with dialog service.
18
- * The first of the options is considered to be the primary one and will therefore have more visual accent
19
- */
20
- export class DialogTwoOptionComponent extends DialogOptionsBaseComponent {
21
- constructor(dialogRef, data) {
22
- super();
23
- this.dialogRef = dialogRef;
24
- this.data = data;
25
- if (data.texts.length < 1) {
26
- throw new Error('DialogTwoOptionComponent expects 2 texts: The title and optionally a description');
27
- }
28
- if (data.options.length !== 2) {
29
- throw new Error('DialogTwoOptionComponent expects only two options');
30
- }
31
- }
32
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: DialogTwoOptionComponent, deps: [{ token: i1.MatDialogRef }, { token: MAT_DIALOG_DATA }], target: i0.ɵɵFactoryTarget.Component }); }
33
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: DialogTwoOptionComponent, selector: "tg-dialog-two-option", usesInheritance: true, ngImport: i0, template: "<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", styles: [":host{min-height:300px}h3{margin-bottom:25px}p{margin-bottom:52px}.buttonsContainer{width:100%;max-width:530px;display:flex;flex-direction:row-reverse;float:right}button{width:50%;padding:0}.primaryButton{margin-left:2%}\n"], dependencies: [{ 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.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] }); }
34
- }
35
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: DialogTwoOptionComponent, decorators: [{
36
- type: Component,
37
- args: [{ selector: 'tg-dialog-two-option', template: "<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", styles: [":host{min-height:300px}h3{margin-bottom:25px}p{margin-bottom:52px}.buttonsContainer{width:100%;max-width:530px;display:flex;flex-direction:row-reverse;float:right}button{width:50%;padding:0}.primaryButton{margin-left:2%}\n"] }]
38
- }], ctorParameters: function () { return [{ type: i1.MatDialogRef }, { type: undefined, decorators: [{
39
- type: Inject,
40
- args: [MAT_DIALOG_DATA]
41
- }] }]; } });
42
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlhbG9nLXR3by1vcHRpb24uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdHVyYm9ndWktYW5ndWxhci9zcmMvbWFpbi92aWV3L2NvbXBvbmVudHMvZGlhbG9nLXR3by1vcHRpb24vZGlhbG9nLXR3by1vcHRpb24uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdHVyYm9ndWktYW5ndWxhci9zcmMvbWFpbi92aWV3L2NvbXBvbmVudHMvZGlhbG9nLXR3by1vcHRpb24vZGlhbG9nLXR3by1vcHRpb24uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7R0FPRztBQUVILE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2xELE9BQU8sRUFBZ0IsZUFBZSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDekUsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0sc0RBQXNELENBQUM7Ozs7O0FBR2xHOzs7R0FHRztBQVFILE1BQU0sT0FBTyx3QkFBeUIsU0FBUSwwQkFBMEI7SUFFcEUsWUFBbUIsU0FBbUQsRUFBa0MsSUFBUztRQUU3RyxLQUFLLEVBQUUsQ0FBQztRQUZPLGNBQVMsR0FBVCxTQUFTLENBQTBDO1FBQWtDLFNBQUksR0FBSixJQUFJLENBQUs7UUFJN0csSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUU7WUFFdkIsTUFBTSxJQUFJLEtBQUssQ0FBQyxrRkFBa0YsQ0FBQyxDQUFDO1NBQ3ZHO1FBRUQsSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUU7WUFFM0IsTUFBTSxJQUFJLEtBQUssQ0FBQyxtREFBbUQsQ0FBQyxDQUFDO1NBQ3hFO0lBQ0wsQ0FBQzsrR0FmUSx3QkFBd0IsOENBRStDLGVBQWU7bUdBRnRGLHdCQUF3QixtRkN6QnJDLHlnQkF5QkE7OzRGREFhLHdCQUF3QjtrQkFQcEMsU0FBUzsrQkFDRSxzQkFBc0I7OzBCQVEyQyxNQUFNOzJCQUFDLGVBQWUiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcclxuICogVHVyYm9HVUkgaXMgQSBsaWJyYXJ5IHRoYXQgaGVscHMgd2l0aCB0aGUgbW9zdCBjb21tb24gYW5kIGdlbmVyaWMgVUkgZWxlbWVudHMgYW5kIGZ1bmN0aW9uYWxpdGllc1xyXG4gKlxyXG4gKiBXZWJzaXRlIDogLT4gaHR0cDovL3d3dy50dXJib2d1aS5vcmdcclxuICogTGljZW5zZSA6IC0+IExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAuIFlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cclxuICogTGljZW5zZSBVcmwgOiAtPiBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcclxuICogQ29weVJpZ2h0IDogLT4gQ29weXJpZ2h0IDIwMTggRWRlcnRvbmUgQWR2YW5kZWQgU29sdXRpb25zLiBodHRwczovL3d3dy5lZGVydG9uZS5jb21cclxuICovXHJcblxyXG5pbXBvcnQgeyBDb21wb25lbnQsIEluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBNYXREaWFsb2dSZWYsIE1BVF9ESUFMT0dfREFUQSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2RpYWxvZyc7XHJcbmltcG9ydCB7IERpYWxvZ09wdGlvbnNCYXNlQ29tcG9uZW50IH0gZnJvbSAnLi4vZGlhbG9nLW9wdGlvbnMtYmFzZS9kaWFsb2ctb3B0aW9ucy1iYXNlLmNvbXBvbmVudCc7XHJcblxyXG5cclxuLyoqXHJcbiAqIEEgZGlhbG9nIGNvbXBvbmVudCB3aXRoIHR3byBvcHRpb24gYnV0dG9ucywgdG8gYmUgdXNlZCB3aXRoIGRpYWxvZyBzZXJ2aWNlLlxyXG4gKiBUaGUgZmlyc3Qgb2YgdGhlIG9wdGlvbnMgaXMgY29uc2lkZXJlZCB0byBiZSB0aGUgcHJpbWFyeSBvbmUgYW5kIHdpbGwgdGhlcmVmb3JlIGhhdmUgbW9yZSB2aXN1YWwgYWNjZW50XHJcbiAqL1xyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ3RnLWRpYWxvZy10d28tb3B0aW9uJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vZGlhbG9nLXR3by1vcHRpb24uY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL2RpYWxvZy10d28tb3B0aW9uLmNvbXBvbmVudC5zY3NzJ11cclxufSlcclxuXHJcblxyXG5leHBvcnQgY2xhc3MgRGlhbG9nVHdvT3B0aW9uQ29tcG9uZW50IGV4dGVuZHMgRGlhbG9nT3B0aW9uc0Jhc2VDb21wb25lbnQge1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKHB1YmxpYyBkaWFsb2dSZWY6IE1hdERpYWxvZ1JlZjxEaWFsb2dPcHRpb25zQmFzZUNvbXBvbmVudD4sIEBJbmplY3QoTUFUX0RJQUxPR19EQVRBKSBwdWJsaWMgZGF0YTogYW55KSB7XHJcblxyXG4gICAgICAgIHN1cGVyKCk7XHJcbiAgICAgICAgXHJcbiAgICAgICAgaWYgKGRhdGEudGV4dHMubGVuZ3RoIDwgMSkge1xyXG5cclxuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdEaWFsb2dUd29PcHRpb25Db21wb25lbnQgZXhwZWN0cyAyIHRleHRzOiBUaGUgdGl0bGUgYW5kIG9wdGlvbmFsbHkgYSBkZXNjcmlwdGlvbicpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKGRhdGEub3B0aW9ucy5sZW5ndGggIT09IDIpIHtcclxuXHJcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignRGlhbG9nVHdvT3B0aW9uQ29tcG9uZW50IGV4cGVjdHMgb25seSB0d28gb3B0aW9ucycpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxufVxyXG4iLCI8aDM+XHJcbiAgICB7e2RhdGEudGV4dHNbMF19fVxyXG48L2gzPlxyXG5cclxuPHAgKm5nSWY9XCJkYXRhLnRleHRzLmxlbmd0aCA+IDFcIj5cclxuICAgIHt7ZGF0YS50ZXh0c1sxXX19XHJcbjwvcD5cclxuXHJcbjxkaXYgY2xhc3M9XCJidXR0b25zQ29udGFpbmVyXCI+XHJcblxyXG4gICAgPGJ1dHRvbiBtYXQtcmFpc2VkLWJ1dHRvbiBjb2xvcj1cInByaW1hcnlcIiBjbGFzcz1cInByaW1hcnlCdXR0b25cIlxyXG4gICAgICAgIChjbGljayk9XCJkaWFsb2dSZWYuY2xvc2UoMClcIj5cclxuICAgICAgICBcclxuICAgICAgICB7e2RhdGEub3B0aW9uc1swXX19XHJcbiAgICAgICAgXHJcbiAgICA8L2J1dHRvbj5cclxuICAgIFxyXG4gICAgPGJ1dHRvbiBtYXQtYnV0dG9uXHJcbiAgICAgICAgKGNsaWNrKT1cImRpYWxvZ1JlZi5jbG9zZSgxKVwiPlxyXG4gICAgICAgIFxyXG4gICAgICAgIHt7ZGF0YS5vcHRpb25zWzFdfX1cclxuICAgICAgICBcclxuICAgIDwvYnV0dG9uPlxyXG4gICAgXHJcbjwvZGl2PlxyXG4iXX0=
1
+ /**
2
+ * TurboGUI is A library that helps with the most common and generic UI elements and functionalities
3
+ *
4
+ * Website : -> http://www.turbogui.org
5
+ * License : -> Licensed under the Apache License, Version 2.0. You may not use this file except in compliance with the License.
6
+ * License Url : -> http://www.apache.org/licenses/LICENSE-2.0
7
+ * CopyRight : -> Copyright 2018 Edertone Advanded Solutions. https://www.edertone.com
8
+ */
9
+ import { Component, Inject } from '@angular/core';
10
+ import { MAT_DIALOG_DATA } from '@angular/material/dialog';
11
+ import { DialogOptionsBaseComponent } from '../dialog-options-base/dialog-options-base.component';
12
+ import * as i0 from "@angular/core";
13
+ import * as i1 from "@angular/material/dialog";
14
+ import * as i2 from "@angular/material/button";
15
+ import * as i3 from "@angular/common";
16
+ /**
17
+ * A dialog component with two option buttons, to be used with dialog service.
18
+ * The first of the options is considered to be the primary one and will therefore have more visual accent
19
+ */
20
+ export class DialogTwoOptionComponent extends DialogOptionsBaseComponent {
21
+ constructor(dialogRef, data) {
22
+ super();
23
+ this.dialogRef = dialogRef;
24
+ this.data = data;
25
+ if (data.texts.length < 1) {
26
+ throw new Error('DialogTwoOptionComponent expects 2 texts: The title and optionally a description');
27
+ }
28
+ if (data.options.length !== 2) {
29
+ throw new Error('DialogTwoOptionComponent expects only two options');
30
+ }
31
+ }
32
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.8", ngImport: i0, type: DialogTwoOptionComponent, deps: [{ token: i1.MatDialogRef }, { token: MAT_DIALOG_DATA }], target: i0.ɵɵFactoryTarget.Component }); }
33
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.0.8", type: DialogTwoOptionComponent, selector: "tg-dialog-two-option", usesInheritance: true, ngImport: i0, template: "<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", styles: [":host{min-height:300px}h3{margin-bottom:25px}p{margin-bottom:52px}.buttonsContainer{width:100%;max-width:530px;display:flex;flex-direction:row-reverse;float:right}button{width:50%;padding:0}.primaryButton{margin-left:2%}\n"], dependencies: [{ kind: "component", type: i2.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] }); }
34
+ }
35
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.8", ngImport: i0, type: DialogTwoOptionComponent, decorators: [{
36
+ type: Component,
37
+ args: [{ selector: 'tg-dialog-two-option', template: "<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", styles: [":host{min-height:300px}h3{margin-bottom:25px}p{margin-bottom:52px}.buttonsContainer{width:100%;max-width:530px;display:flex;flex-direction:row-reverse;float:right}button{width:50%;padding:0}.primaryButton{margin-left:2%}\n"] }]
38
+ }], ctorParameters: () => [{ type: i1.MatDialogRef }, { type: undefined, decorators: [{
39
+ type: Inject,
40
+ args: [MAT_DIALOG_DATA]
41
+ }] }] });
42
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlhbG9nLXR3by1vcHRpb24uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdHVyYm9ndWktYW5ndWxhci9zcmMvbWFpbi92aWV3L2NvbXBvbmVudHMvZGlhbG9nLXR3by1vcHRpb24vZGlhbG9nLXR3by1vcHRpb24uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdHVyYm9ndWktYW5ndWxhci9zcmMvbWFpbi92aWV3L2NvbXBvbmVudHMvZGlhbG9nLXR3by1vcHRpb24vZGlhbG9nLXR3by1vcHRpb24uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7R0FPRztBQUVILE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2xELE9BQU8sRUFBZ0IsZUFBZSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDekUsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0sc0RBQXNELENBQUM7Ozs7O0FBR2xHOzs7R0FHRztBQVFILE1BQU0sT0FBTyx3QkFBeUIsU0FBUSwwQkFBMEI7SUFFcEUsWUFBbUIsU0FBbUQsRUFBa0MsSUFBUztRQUU3RyxLQUFLLEVBQUUsQ0FBQztRQUZPLGNBQVMsR0FBVCxTQUFTLENBQTBDO1FBQWtDLFNBQUksR0FBSixJQUFJLENBQUs7UUFJN0csSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUU7WUFFdkIsTUFBTSxJQUFJLEtBQUssQ0FBQyxrRkFBa0YsQ0FBQyxDQUFDO1NBQ3ZHO1FBRUQsSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUU7WUFFM0IsTUFBTSxJQUFJLEtBQUssQ0FBQyxtREFBbUQsQ0FBQyxDQUFDO1NBQ3hFO0lBQ0wsQ0FBQzs4R0FmUSx3QkFBd0IsOENBRStDLGVBQWU7a0dBRnRGLHdCQUF3QixtRkN6QnJDLHlnQkF5QkE7OzJGREFhLHdCQUF3QjtrQkFQcEMsU0FBUzsrQkFDRSxzQkFBc0I7OzBCQVEyQyxNQUFNOzJCQUFDLGVBQWUiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcclxuICogVHVyYm9HVUkgaXMgQSBsaWJyYXJ5IHRoYXQgaGVscHMgd2l0aCB0aGUgbW9zdCBjb21tb24gYW5kIGdlbmVyaWMgVUkgZWxlbWVudHMgYW5kIGZ1bmN0aW9uYWxpdGllc1xyXG4gKlxyXG4gKiBXZWJzaXRlIDogLT4gaHR0cDovL3d3dy50dXJib2d1aS5vcmdcclxuICogTGljZW5zZSA6IC0+IExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAuIFlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cclxuICogTGljZW5zZSBVcmwgOiAtPiBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcclxuICogQ29weVJpZ2h0IDogLT4gQ29weXJpZ2h0IDIwMTggRWRlcnRvbmUgQWR2YW5kZWQgU29sdXRpb25zLiBodHRwczovL3d3dy5lZGVydG9uZS5jb21cclxuICovXHJcblxyXG5pbXBvcnQgeyBDb21wb25lbnQsIEluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBNYXREaWFsb2dSZWYsIE1BVF9ESUFMT0dfREFUQSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2RpYWxvZyc7XHJcbmltcG9ydCB7IERpYWxvZ09wdGlvbnNCYXNlQ29tcG9uZW50IH0gZnJvbSAnLi4vZGlhbG9nLW9wdGlvbnMtYmFzZS9kaWFsb2ctb3B0aW9ucy1iYXNlLmNvbXBvbmVudCc7XHJcblxyXG5cclxuLyoqXHJcbiAqIEEgZGlhbG9nIGNvbXBvbmVudCB3aXRoIHR3byBvcHRpb24gYnV0dG9ucywgdG8gYmUgdXNlZCB3aXRoIGRpYWxvZyBzZXJ2aWNlLlxyXG4gKiBUaGUgZmlyc3Qgb2YgdGhlIG9wdGlvbnMgaXMgY29uc2lkZXJlZCB0byBiZSB0aGUgcHJpbWFyeSBvbmUgYW5kIHdpbGwgdGhlcmVmb3JlIGhhdmUgbW9yZSB2aXN1YWwgYWNjZW50XHJcbiAqL1xyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ3RnLWRpYWxvZy10d28tb3B0aW9uJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vZGlhbG9nLXR3by1vcHRpb24uY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL2RpYWxvZy10d28tb3B0aW9uLmNvbXBvbmVudC5zY3NzJ11cclxufSlcclxuXHJcblxyXG5leHBvcnQgY2xhc3MgRGlhbG9nVHdvT3B0aW9uQ29tcG9uZW50IGV4dGVuZHMgRGlhbG9nT3B0aW9uc0Jhc2VDb21wb25lbnQge1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKHB1YmxpYyBkaWFsb2dSZWY6IE1hdERpYWxvZ1JlZjxEaWFsb2dPcHRpb25zQmFzZUNvbXBvbmVudD4sIEBJbmplY3QoTUFUX0RJQUxPR19EQVRBKSBwdWJsaWMgZGF0YTogYW55KSB7XHJcblxyXG4gICAgICAgIHN1cGVyKCk7XHJcbiAgICAgICAgXHJcbiAgICAgICAgaWYgKGRhdGEudGV4dHMubGVuZ3RoIDwgMSkge1xyXG5cclxuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdEaWFsb2dUd29PcHRpb25Db21wb25lbnQgZXhwZWN0cyAyIHRleHRzOiBUaGUgdGl0bGUgYW5kIG9wdGlvbmFsbHkgYSBkZXNjcmlwdGlvbicpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKGRhdGEub3B0aW9ucy5sZW5ndGggIT09IDIpIHtcclxuXHJcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignRGlhbG9nVHdvT3B0aW9uQ29tcG9uZW50IGV4cGVjdHMgb25seSB0d28gb3B0aW9ucycpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxufVxyXG4iLCI8aDM+XHJcbiAgICB7e2RhdGEudGV4dHNbMF19fVxyXG48L2gzPlxyXG5cclxuPHAgKm5nSWY9XCJkYXRhLnRleHRzLmxlbmd0aCA+IDFcIj5cclxuICAgIHt7ZGF0YS50ZXh0c1sxXX19XHJcbjwvcD5cclxuXHJcbjxkaXYgY2xhc3M9XCJidXR0b25zQ29udGFpbmVyXCI+XHJcblxyXG4gICAgPGJ1dHRvbiBtYXQtcmFpc2VkLWJ1dHRvbiBjb2xvcj1cInByaW1hcnlcIiBjbGFzcz1cInByaW1hcnlCdXR0b25cIlxyXG4gICAgICAgIChjbGljayk9XCJkaWFsb2dSZWYuY2xvc2UoMClcIj5cclxuICAgICAgICBcclxuICAgICAgICB7e2RhdGEub3B0aW9uc1swXX19XHJcbiAgICAgICAgXHJcbiAgICA8L2J1dHRvbj5cclxuICAgIFxyXG4gICAgPGJ1dHRvbiBtYXQtYnV0dG9uXHJcbiAgICAgICAgKGNsaWNrKT1cImRpYWxvZ1JlZi5jbG9zZSgxKVwiPlxyXG4gICAgICAgIFxyXG4gICAgICAgIHt7ZGF0YS5vcHRpb25zWzFdfX1cclxuICAgICAgICBcclxuICAgIDwvYnV0dG9uPlxyXG4gICAgXHJcbjwvZGl2PlxyXG4iXX0=
@@ -1,70 +1,70 @@
1
- /**
2
- * TurboGUI is A library that helps with the most common and generic UI elements and functionalities
3
- *
4
- * Website : -> http://www.turbogui.org
5
- * License : -> Licensed under the Apache License, Version 2.0. You may not use this file except in compliance with the License.
6
- * License Url : -> http://www.apache.org/licenses/LICENSE-2.0
7
- * CopyRight : -> Copyright 2018 Edertone Advanded Solutions. https://www.edertone.com
8
- */
9
- import { Component, ViewContainerRef, Input, ViewChild } from '@angular/core';
10
- import { ViewsService } from '../../../controller/views.service';
11
- import * as i0 from "@angular/core";
12
- /**
13
- * Component that is used as a container for application views.
14
- * We must create only one views container in our application and pass to it a reference to our main
15
- * viewsService instance. For example:
16
- *
17
- * <tg-views-container [viewsService]="viewsService" [initialView]="HomeViewComponent"></tg-views-container>
18
- */
19
- export class ViewsContainerComponent {
20
- constructor() {
21
- /**
22
- * If we want to load a view by default when this component is loaded for the first time, we can
23
- * set here the respective class view and it will be automatically added.
24
- */
25
- this.initialView = null;
26
- /**
27
- * A reference to the views service that is used to operate with this views container.
28
- * This must be specified when this component is added to the application
29
- */
30
- this.viewsService = null;
31
- }
32
- /**
33
- * Check that the service reference has been correctly passed
34
- */
35
- ngOnInit() {
36
- if (!(this.viewsService instanceof ViewsService)) {
37
- throw new Error('ViewService instance must be referenced on a views container');
38
- }
39
- else {
40
- this.viewsService.viewContainerRef = this.viewContainerRef;
41
- }
42
- // Set the initial view if defined
43
- if (this.initialView !== null) {
44
- this.viewsService.pushView(this.initialView);
45
- }
46
- }
47
- /**
48
- * Clear the current view from the service when this component is deleted
49
- */
50
- ngOnDestroy() {
51
- if (this.viewsService instanceof ViewsService) {
52
- this.viewsService.popView();
53
- this.viewsService.viewContainerRef = null;
54
- }
55
- }
56
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ViewsContainerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
57
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: ViewsContainerComponent, selector: "tg-views-container", inputs: { initialView: "initialView", viewsService: "viewsService" }, viewQueries: [{ propertyName: "viewContainerRef", first: true, predicate: ["viewContainerRef"], descendants: true, read: ViewContainerRef, static: true }], ngImport: i0, template: "<!--\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>", styles: [""] }); }
58
- }
59
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ViewsContainerComponent, decorators: [{
60
- type: Component,
61
- args: [{ selector: 'tg-views-container', template: "<!--\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>" }]
62
- }], propDecorators: { initialView: [{
63
- type: Input
64
- }], viewsService: [{
65
- type: Input
66
- }], viewContainerRef: [{
67
- type: ViewChild,
68
- args: ['viewContainerRef', { read: ViewContainerRef, static: true }]
69
- }] } });
70
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmlld3MtY29udGFpbmVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3R1cmJvZ3VpLWFuZ3VsYXIvc3JjL21haW4vdmlldy9jb21wb25lbnRzL3ZpZXdzLWNvbnRhaW5lci92aWV3cy1jb250YWluZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdHVyYm9ndWktYW5ndWxhci9zcmMvbWFpbi92aWV3L2NvbXBvbmVudHMvdmlld3MtY29udGFpbmVyL3ZpZXdzLWNvbnRhaW5lci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7OztHQU9HO0FBRUgsT0FBTyxFQUFFLFNBQVMsRUFBRSxnQkFBZ0IsRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUEyQixNQUFNLGVBQWUsQ0FBQztBQUN2RyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sbUNBQW1DLENBQUM7O0FBSWpFOzs7Ozs7R0FNRztBQVFILE1BQU0sT0FBTyx1QkFBdUI7SUFQcEM7UUFVSTs7O1dBR0c7UUFDTSxnQkFBVyxHQUFzQixJQUFJLENBQUM7UUFHL0M7OztXQUdHO1FBQ00saUJBQVksR0FBd0IsSUFBSSxDQUFDO0tBMENyRDtJQWpDRzs7T0FFRztJQUNILFFBQVE7UUFFSixJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsWUFBWSxZQUFZLFlBQVksQ0FBQyxFQUFFO1lBRTlDLE1BQU0sSUFBSSxLQUFLLENBQUMsOERBQThELENBQUMsQ0FBQztTQUVuRjthQUFNO1lBRUgsSUFBSSxDQUFDLFlBQVksQ0FBQyxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUM7U0FDOUQ7UUFFRCxrQ0FBa0M7UUFDbEMsSUFBSSxJQUFJLENBQUMsV0FBVyxLQUFLLElBQUksRUFBRTtZQUUzQixJQUFJLENBQUMsWUFBWSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7U0FDaEQ7SUFDTCxDQUFDO0lBR0Q7O09BRUc7SUFDSCxXQUFXO1FBRVAsSUFBSSxJQUFJLENBQUMsWUFBWSxZQUFZLFlBQVksRUFBRTtZQUUzQyxJQUFJLENBQUMsWUFBWSxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQzVCLElBQUksQ0FBQyxZQUFZLENBQUMsZ0JBQWdCLEdBQUcsSUFBSSxDQUFDO1NBQzdDO0lBQ0wsQ0FBQzsrR0F2RFEsdUJBQXVCO21HQUF2Qix1QkFBdUIsaU9Bb0JPLGdCQUFnQiwyQ0NoRDNELDZLQUc2Qzs7NEZEeUJoQyx1QkFBdUI7a0JBUG5DLFNBQVM7K0JBQ0Usb0JBQW9COzhCQWFuQixXQUFXO3NCQUFuQixLQUFLO2dCQU9HLFlBQVk7c0JBQXBCLEtBQUs7Z0JBTW1FLGdCQUFnQjtzQkFBeEYsU0FBUzt1QkFBQyxrQkFBa0IsRUFBRSxFQUFFLElBQUksRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXHJcbiAqIFR1cmJvR1VJIGlzIEEgbGlicmFyeSB0aGF0IGhlbHBzIHdpdGggdGhlIG1vc3QgY29tbW9uIGFuZCBnZW5lcmljIFVJIGVsZW1lbnRzIGFuZCBmdW5jdGlvbmFsaXRpZXNcclxuICpcclxuICogV2Vic2l0ZSA6IC0+IGh0dHA6Ly93d3cudHVyYm9ndWkub3JnXHJcbiAqIExpY2Vuc2UgOiAtPiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wLiBZb3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXHJcbiAqIExpY2Vuc2UgVXJsIDogLT4gaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXHJcbiAqIENvcHlSaWdodCA6IC0+IENvcHlyaWdodCAyMDE4IEVkZXJ0b25lIEFkdmFuZGVkIFNvbHV0aW9ucy4gaHR0cHM6Ly93d3cuZWRlcnRvbmUuY29tXHJcbiAqL1xyXG5cclxuaW1wb3J0IHsgQ29tcG9uZW50LCBWaWV3Q29udGFpbmVyUmVmLCBJbnB1dCwgVmlld0NoaWxkLCBPbkluaXQsIFR5cGUsIE9uRGVzdHJveSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBWaWV3c1NlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9jb250cm9sbGVyL3ZpZXdzLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBWaWV3IH0gZnJvbSAnLi4vLi4vLi4vbW9kZWwvY2xhc3Nlcy9WaWV3JztcclxuXHJcblxyXG4vKipcclxuICogQ29tcG9uZW50IHRoYXQgaXMgdXNlZCBhcyBhIGNvbnRhaW5lciBmb3IgYXBwbGljYXRpb24gdmlld3MuXHJcbiAqIFdlIG11c3QgY3JlYXRlIG9ubHkgb25lIHZpZXdzIGNvbnRhaW5lciBpbiBvdXIgYXBwbGljYXRpb24gYW5kIHBhc3MgdG8gaXQgYSByZWZlcmVuY2UgdG8gb3VyIG1haW5cclxuICogdmlld3NTZXJ2aWNlIGluc3RhbmNlLiBGb3IgZXhhbXBsZTpcclxuICpcclxuICogPHRnLXZpZXdzLWNvbnRhaW5lciBbdmlld3NTZXJ2aWNlXT1cInZpZXdzU2VydmljZVwiIFtpbml0aWFsVmlld109XCJIb21lVmlld0NvbXBvbmVudFwiPjwvdGctdmlld3MtY29udGFpbmVyPlxyXG4gKi9cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICd0Zy12aWV3cy1jb250YWluZXInLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi92aWV3cy1jb250YWluZXIuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL3ZpZXdzLWNvbnRhaW5lci5jb21wb25lbnQuc2NzcyddXHJcbn0pXHJcblxyXG5cclxuZXhwb3J0IGNsYXNzIFZpZXdzQ29udGFpbmVyQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xyXG5cclxuXHJcbiAgICAvKipcclxuICAgICAqIElmIHdlIHdhbnQgdG8gbG9hZCBhIHZpZXcgYnkgZGVmYXVsdCB3aGVuIHRoaXMgY29tcG9uZW50IGlzIGxvYWRlZCBmb3IgdGhlIGZpcnN0IHRpbWUsIHdlIGNhblxyXG4gICAgICogc2V0IGhlcmUgdGhlIHJlc3BlY3RpdmUgY2xhc3MgdmlldyBhbmQgaXQgd2lsbCBiZSBhdXRvbWF0aWNhbGx5IGFkZGVkLlxyXG4gICAgICovXHJcbiAgICBASW5wdXQoKSBpbml0aWFsVmlldzogVHlwZTxWaWV3PiB8IG51bGwgPSBudWxsO1xyXG5cclxuXHJcbiAgICAvKipcclxuICAgICAqIEEgcmVmZXJlbmNlIHRvIHRoZSB2aWV3cyBzZXJ2aWNlIHRoYXQgaXMgdXNlZCB0byBvcGVyYXRlIHdpdGggdGhpcyB2aWV3cyBjb250YWluZXIuXHJcbiAgICAgKiBUaGlzIG11c3QgYmUgc3BlY2lmaWVkIHdoZW4gdGhpcyBjb21wb25lbnQgaXMgYWRkZWQgdG8gdGhlIGFwcGxpY2F0aW9uXHJcbiAgICAgKi9cclxuICAgIEBJbnB1dCgpIHZpZXdzU2VydmljZTogVmlld3NTZXJ2aWNlIHwgbnVsbCA9IG51bGw7XHJcblxyXG5cclxuICAgIC8qKlxyXG4gICAgICogQSByZWZlcmVuY2UgdG8gdGhlIG5nLXRlbXBsYXRlIGluc2lkZSB0aGlzIGNvbXBvbmVudCB0aGF0IGlzIHVzZWQgYXMgdGhlIGFuY2hvciBwb2ludCB0byBsb2FkIHZpZXdzXHJcbiAgICAgKi9cclxuICAgIEBWaWV3Q2hpbGQoJ3ZpZXdDb250YWluZXJSZWYnLCB7IHJlYWQ6IFZpZXdDb250YWluZXJSZWYsIHN0YXRpYzogdHJ1ZSB9KSB2aWV3Q29udGFpbmVyUmVmOiBWaWV3Q29udGFpbmVyUmVmO1xyXG5cclxuXHJcbiAgICAvKipcclxuICAgICAqIENoZWNrIHRoYXQgdGhlIHNlcnZpY2UgcmVmZXJlbmNlIGhhcyBiZWVuIGNvcnJlY3RseSBwYXNzZWRcclxuICAgICAqL1xyXG4gICAgbmdPbkluaXQoKSB7XHJcblxyXG4gICAgICAgIGlmICghKHRoaXMudmlld3NTZXJ2aWNlIGluc3RhbmNlb2YgVmlld3NTZXJ2aWNlKSkge1xyXG5cclxuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdWaWV3U2VydmljZSBpbnN0YW5jZSBtdXN0IGJlIHJlZmVyZW5jZWQgb24gYSB2aWV3cyBjb250YWluZXInKTtcclxuXHJcbiAgICAgICAgfSBlbHNlIHtcclxuXHJcbiAgICAgICAgICAgIHRoaXMudmlld3NTZXJ2aWNlLnZpZXdDb250YWluZXJSZWYgPSB0aGlzLnZpZXdDb250YWluZXJSZWY7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAvLyBTZXQgdGhlIGluaXRpYWwgdmlldyBpZiBkZWZpbmVkXHJcbiAgICAgICAgaWYgKHRoaXMuaW5pdGlhbFZpZXcgIT09IG51bGwpIHtcclxuXHJcbiAgICAgICAgICAgIHRoaXMudmlld3NTZXJ2aWNlLnB1c2hWaWV3KHRoaXMuaW5pdGlhbFZpZXcpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBDbGVhciB0aGUgY3VycmVudCB2aWV3IGZyb20gdGhlIHNlcnZpY2Ugd2hlbiB0aGlzIGNvbXBvbmVudCBpcyBkZWxldGVkXHJcbiAgICAgKi9cclxuICAgIG5nT25EZXN0cm95KCkge1xyXG5cclxuICAgICAgICBpZiAodGhpcy52aWV3c1NlcnZpY2UgaW5zdGFuY2VvZiBWaWV3c1NlcnZpY2UpIHtcclxuXHJcbiAgICAgICAgICAgIHRoaXMudmlld3NTZXJ2aWNlLnBvcFZpZXcoKTtcclxuICAgICAgICAgICAgdGhpcy52aWV3c1NlcnZpY2Uudmlld0NvbnRhaW5lclJlZiA9IG51bGw7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG59XHJcbiIsIjwhLS1cclxuICAgIFRoaXMgaXMgYSBkdW1teSB0ZW1wbGF0ZSBjb21wb25lbnQgdGhhdCB3aWxsIGJlIHVzZWQgYXMgdGhlIGFuY2hvciBwb2ludCB3aGVyZSB0aGUgdmlld3Mgd2lsbCBiZSBsb2FkZWRcclxuLS0+XHJcbjxuZy10ZW1wbGF0ZSAjdmlld0NvbnRhaW5lclJlZj48L25nLXRlbXBsYXRlPiJdfQ==
1
+ /**
2
+ * TurboGUI is A library that helps with the most common and generic UI elements and functionalities
3
+ *
4
+ * Website : -> http://www.turbogui.org
5
+ * License : -> Licensed under the Apache License, Version 2.0. You may not use this file except in compliance with the License.
6
+ * License Url : -> http://www.apache.org/licenses/LICENSE-2.0
7
+ * CopyRight : -> Copyright 2018 Edertone Advanded Solutions. https://www.edertone.com
8
+ */
9
+ import { Component, ViewContainerRef, Input, ViewChild } from '@angular/core';
10
+ import { ViewsService } from '../../../controller/views.service';
11
+ import * as i0 from "@angular/core";
12
+ /**
13
+ * Component that is used as a container for application views.
14
+ * We must create only one views container in our application and pass to it a reference to our main
15
+ * viewsService instance. For example:
16
+ *
17
+ * <tg-views-container [viewsService]="viewsService" [initialView]="HomeViewComponent"></tg-views-container>
18
+ */
19
+ export class ViewsContainerComponent {
20
+ constructor() {
21
+ /**
22
+ * If we want to load a view by default when this component is loaded for the first time, we can
23
+ * set here the respective class view and it will be automatically added.
24
+ */
25
+ this.initialView = null;
26
+ /**
27
+ * A reference to the views service that is used to operate with this views container.
28
+ * This must be specified when this component is added to the application
29
+ */
30
+ this.viewsService = null;
31
+ }
32
+ /**
33
+ * Check that the service reference has been correctly passed
34
+ */
35
+ ngOnInit() {
36
+ if (!(this.viewsService instanceof ViewsService)) {
37
+ throw new Error('ViewService instance must be referenced on a views container');
38
+ }
39
+ else {
40
+ this.viewsService.viewContainerRef = this.viewContainerRef;
41
+ }
42
+ // Set the initial view if defined
43
+ if (this.initialView !== null) {
44
+ this.viewsService.pushView(this.initialView);
45
+ }
46
+ }
47
+ /**
48
+ * Clear the current view from the service when this component is deleted
49
+ */
50
+ ngOnDestroy() {
51
+ if (this.viewsService instanceof ViewsService) {
52
+ this.viewsService.popView();
53
+ this.viewsService.viewContainerRef = null;
54
+ }
55
+ }
56
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.8", ngImport: i0, type: ViewsContainerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
57
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.0.8", type: ViewsContainerComponent, selector: "tg-views-container", inputs: { initialView: "initialView", viewsService: "viewsService" }, viewQueries: [{ propertyName: "viewContainerRef", first: true, predicate: ["viewContainerRef"], descendants: true, read: ViewContainerRef, static: true }], ngImport: i0, template: "<!--\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>", styles: [""] }); }
58
+ }
59
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.8", ngImport: i0, type: ViewsContainerComponent, decorators: [{
60
+ type: Component,
61
+ args: [{ selector: 'tg-views-container', template: "<!--\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>" }]
62
+ }], propDecorators: { initialView: [{
63
+ type: Input
64
+ }], viewsService: [{
65
+ type: Input
66
+ }], viewContainerRef: [{
67
+ type: ViewChild,
68
+ args: ['viewContainerRef', { read: ViewContainerRef, static: true }]
69
+ }] } });
70
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmlld3MtY29udGFpbmVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3R1cmJvZ3VpLWFuZ3VsYXIvc3JjL21haW4vdmlldy9jb21wb25lbnRzL3ZpZXdzLWNvbnRhaW5lci92aWV3cy1jb250YWluZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdHVyYm9ndWktYW5ndWxhci9zcmMvbWFpbi92aWV3L2NvbXBvbmVudHMvdmlld3MtY29udGFpbmVyL3ZpZXdzLWNvbnRhaW5lci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7OztHQU9HO0FBRUgsT0FBTyxFQUFFLFNBQVMsRUFBRSxnQkFBZ0IsRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUEyQixNQUFNLGVBQWUsQ0FBQztBQUN2RyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sbUNBQW1DLENBQUM7O0FBSWpFOzs7Ozs7R0FNRztBQVFILE1BQU0sT0FBTyx1QkFBdUI7SUFQcEM7UUFVSTs7O1dBR0c7UUFDTSxnQkFBVyxHQUFzQixJQUFJLENBQUM7UUFHL0M7OztXQUdHO1FBQ00saUJBQVksR0FBd0IsSUFBSSxDQUFDO0tBMENyRDtJQWpDRzs7T0FFRztJQUNILFFBQVE7UUFFSixJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsWUFBWSxZQUFZLFlBQVksQ0FBQyxFQUFFO1lBRTlDLE1BQU0sSUFBSSxLQUFLLENBQUMsOERBQThELENBQUMsQ0FBQztTQUVuRjthQUFNO1lBRUgsSUFBSSxDQUFDLFlBQVksQ0FBQyxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUM7U0FDOUQ7UUFFRCxrQ0FBa0M7UUFDbEMsSUFBSSxJQUFJLENBQUMsV0FBVyxLQUFLLElBQUksRUFBRTtZQUUzQixJQUFJLENBQUMsWUFBWSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7U0FDaEQ7SUFDTCxDQUFDO0lBR0Q7O09BRUc7SUFDSCxXQUFXO1FBRVAsSUFBSSxJQUFJLENBQUMsWUFBWSxZQUFZLFlBQVksRUFBRTtZQUUzQyxJQUFJLENBQUMsWUFBWSxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQzVCLElBQUksQ0FBQyxZQUFZLENBQUMsZ0JBQWdCLEdBQUcsSUFBSSxDQUFDO1NBQzdDO0lBQ0wsQ0FBQzs4R0F2RFEsdUJBQXVCO2tHQUF2Qix1QkFBdUIsaU9Bb0JPLGdCQUFnQiwyQ0NoRDNELDZLQUc2Qzs7MkZEeUJoQyx1QkFBdUI7a0JBUG5DLFNBQVM7K0JBQ0Usb0JBQW9COzhCQWFuQixXQUFXO3NCQUFuQixLQUFLO2dCQU9HLFlBQVk7c0JBQXBCLEtBQUs7Z0JBTW1FLGdCQUFnQjtzQkFBeEYsU0FBUzt1QkFBQyxrQkFBa0IsRUFBRSxFQUFFLElBQUksRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXHJcbiAqIFR1cmJvR1VJIGlzIEEgbGlicmFyeSB0aGF0IGhlbHBzIHdpdGggdGhlIG1vc3QgY29tbW9uIGFuZCBnZW5lcmljIFVJIGVsZW1lbnRzIGFuZCBmdW5jdGlvbmFsaXRpZXNcclxuICpcclxuICogV2Vic2l0ZSA6IC0+IGh0dHA6Ly93d3cudHVyYm9ndWkub3JnXHJcbiAqIExpY2Vuc2UgOiAtPiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wLiBZb3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXHJcbiAqIExpY2Vuc2UgVXJsIDogLT4gaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXHJcbiAqIENvcHlSaWdodCA6IC0+IENvcHlyaWdodCAyMDE4IEVkZXJ0b25lIEFkdmFuZGVkIFNvbHV0aW9ucy4gaHR0cHM6Ly93d3cuZWRlcnRvbmUuY29tXHJcbiAqL1xyXG5cclxuaW1wb3J0IHsgQ29tcG9uZW50LCBWaWV3Q29udGFpbmVyUmVmLCBJbnB1dCwgVmlld0NoaWxkLCBPbkluaXQsIFR5cGUsIE9uRGVzdHJveSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBWaWV3c1NlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9jb250cm9sbGVyL3ZpZXdzLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBWaWV3IH0gZnJvbSAnLi4vLi4vLi4vbW9kZWwvY2xhc3Nlcy9WaWV3JztcclxuXHJcblxyXG4vKipcclxuICogQ29tcG9uZW50IHRoYXQgaXMgdXNlZCBhcyBhIGNvbnRhaW5lciBmb3IgYXBwbGljYXRpb24gdmlld3MuXHJcbiAqIFdlIG11c3QgY3JlYXRlIG9ubHkgb25lIHZpZXdzIGNvbnRhaW5lciBpbiBvdXIgYXBwbGljYXRpb24gYW5kIHBhc3MgdG8gaXQgYSByZWZlcmVuY2UgdG8gb3VyIG1haW5cclxuICogdmlld3NTZXJ2aWNlIGluc3RhbmNlLiBGb3IgZXhhbXBsZTpcclxuICpcclxuICogPHRnLXZpZXdzLWNvbnRhaW5lciBbdmlld3NTZXJ2aWNlXT1cInZpZXdzU2VydmljZVwiIFtpbml0aWFsVmlld109XCJIb21lVmlld0NvbXBvbmVudFwiPjwvdGctdmlld3MtY29udGFpbmVyPlxyXG4gKi9cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICd0Zy12aWV3cy1jb250YWluZXInLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi92aWV3cy1jb250YWluZXIuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL3ZpZXdzLWNvbnRhaW5lci5jb21wb25lbnQuc2NzcyddXHJcbn0pXHJcblxyXG5cclxuZXhwb3J0IGNsYXNzIFZpZXdzQ29udGFpbmVyQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xyXG5cclxuXHJcbiAgICAvKipcclxuICAgICAqIElmIHdlIHdhbnQgdG8gbG9hZCBhIHZpZXcgYnkgZGVmYXVsdCB3aGVuIHRoaXMgY29tcG9uZW50IGlzIGxvYWRlZCBmb3IgdGhlIGZpcnN0IHRpbWUsIHdlIGNhblxyXG4gICAgICogc2V0IGhlcmUgdGhlIHJlc3BlY3RpdmUgY2xhc3MgdmlldyBhbmQgaXQgd2lsbCBiZSBhdXRvbWF0aWNhbGx5IGFkZGVkLlxyXG4gICAgICovXHJcbiAgICBASW5wdXQoKSBpbml0aWFsVmlldzogVHlwZTxWaWV3PiB8IG51bGwgPSBudWxsO1xyXG5cclxuXHJcbiAgICAvKipcclxuICAgICAqIEEgcmVmZXJlbmNlIHRvIHRoZSB2aWV3cyBzZXJ2aWNlIHRoYXQgaXMgdXNlZCB0byBvcGVyYXRlIHdpdGggdGhpcyB2aWV3cyBjb250YWluZXIuXHJcbiAgICAgKiBUaGlzIG11c3QgYmUgc3BlY2lmaWVkIHdoZW4gdGhpcyBjb21wb25lbnQgaXMgYWRkZWQgdG8gdGhlIGFwcGxpY2F0aW9uXHJcbiAgICAgKi9cclxuICAgIEBJbnB1dCgpIHZpZXdzU2VydmljZTogVmlld3NTZXJ2aWNlIHwgbnVsbCA9IG51bGw7XHJcblxyXG5cclxuICAgIC8qKlxyXG4gICAgICogQSByZWZlcmVuY2UgdG8gdGhlIG5nLXRlbXBsYXRlIGluc2lkZSB0aGlzIGNvbXBvbmVudCB0aGF0IGlzIHVzZWQgYXMgdGhlIGFuY2hvciBwb2ludCB0byBsb2FkIHZpZXdzXHJcbiAgICAgKi9cclxuICAgIEBWaWV3Q2hpbGQoJ3ZpZXdDb250YWluZXJSZWYnLCB7IHJlYWQ6IFZpZXdDb250YWluZXJSZWYsIHN0YXRpYzogdHJ1ZSB9KSB2aWV3Q29udGFpbmVyUmVmOiBWaWV3Q29udGFpbmVyUmVmO1xyXG5cclxuXHJcbiAgICAvKipcclxuICAgICAqIENoZWNrIHRoYXQgdGhlIHNlcnZpY2UgcmVmZXJlbmNlIGhhcyBiZWVuIGNvcnJlY3RseSBwYXNzZWRcclxuICAgICAqL1xyXG4gICAgbmdPbkluaXQoKSB7XHJcblxyXG4gICAgICAgIGlmICghKHRoaXMudmlld3NTZXJ2aWNlIGluc3RhbmNlb2YgVmlld3NTZXJ2aWNlKSkge1xyXG5cclxuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdWaWV3U2VydmljZSBpbnN0YW5jZSBtdXN0IGJlIHJlZmVyZW5jZWQgb24gYSB2aWV3cyBjb250YWluZXInKTtcclxuXHJcbiAgICAgICAgfSBlbHNlIHtcclxuXHJcbiAgICAgICAgICAgIHRoaXMudmlld3NTZXJ2aWNlLnZpZXdDb250YWluZXJSZWYgPSB0aGlzLnZpZXdDb250YWluZXJSZWY7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAvLyBTZXQgdGhlIGluaXRpYWwgdmlldyBpZiBkZWZpbmVkXHJcbiAgICAgICAgaWYgKHRoaXMuaW5pdGlhbFZpZXcgIT09IG51bGwpIHtcclxuXHJcbiAgICAgICAgICAgIHRoaXMudmlld3NTZXJ2aWNlLnB1c2hWaWV3KHRoaXMuaW5pdGlhbFZpZXcpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBDbGVhciB0aGUgY3VycmVudCB2aWV3IGZyb20gdGhlIHNlcnZpY2Ugd2hlbiB0aGlzIGNvbXBvbmVudCBpcyBkZWxldGVkXHJcbiAgICAgKi9cclxuICAgIG5nT25EZXN0cm95KCkge1xyXG5cclxuICAgICAgICBpZiAodGhpcy52aWV3c1NlcnZpY2UgaW5zdGFuY2VvZiBWaWV3c1NlcnZpY2UpIHtcclxuXHJcbiAgICAgICAgICAgIHRoaXMudmlld3NTZXJ2aWNlLnBvcFZpZXcoKTtcclxuICAgICAgICAgICAgdGhpcy52aWV3c1NlcnZpY2Uudmlld0NvbnRhaW5lclJlZiA9IG51bGw7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG59XHJcbiIsIjwhLS1cclxuICAgIFRoaXMgaXMgYSBkdW1teSB0ZW1wbGF0ZSBjb21wb25lbnQgdGhhdCB3aWxsIGJlIHVzZWQgYXMgdGhlIGFuY2hvciBwb2ludCB3aGVyZSB0aGUgdmlld3Mgd2lsbCBiZSBsb2FkZWRcclxuLS0+XHJcbjxuZy10ZW1wbGF0ZSAjdmlld0NvbnRhaW5lclJlZj48L25nLXRlbXBsYXRlPiJdfQ==