ngx-material-entity 16.0.4 → 16.0.6

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 (209) hide show
  1. package/README.md +4 -4
  2. package/classes/base.builder.d.ts +0 -4
  3. package/classes/entity.model.d.ts +7 -0
  4. package/components/confirm-dialog/confirm-dialog-data.d.ts +0 -3
  5. package/components/confirm-dialog/confirm-dialog.component.d.ts +6 -0
  6. package/components/create-page/create-data.route.d.ts +16 -0
  7. package/components/create-page/create-page.component.d.ts +147 -0
  8. package/components/create-page/page-create-data.builder.d.ts +18 -0
  9. package/components/edit-page/edit-data.route.d.ts +3 -0
  10. package/components/edit-page/edit-page.component.d.ts +34 -9
  11. package/components/input/array/array-string-autocomplete-chips/array-string-autocomplete-chips.component.d.ts +3 -3
  12. package/components/input/array/array-string-chips-input/array-string-chips-input.component.d.ts +0 -2
  13. package/components/input/array/array-table.class.d.ts +0 -1
  14. package/components/input/base-input.component.d.ts +5 -2
  15. package/components/input/boolean/boolean-checkbox-input/boolean-checkbox-input.component.d.ts +0 -1
  16. package/components/input/boolean/boolean-toggle-input/boolean-toggle-input.component.d.ts +0 -1
  17. package/components/input/date/date-range-input/date-range-input.component.d.ts +2 -6
  18. package/components/input/date/date-time-input/date-time-input.component.d.ts +0 -1
  19. package/components/input/file/file-input/file-input.component.d.ts +1 -0
  20. package/components/input/input.component.d.ts +160 -38
  21. package/components/input/input.module.d.ts +48 -47
  22. package/components/input/number/number-input/number-input.component.d.ts +1 -1
  23. package/components/input/relations/references-many-input/references-many-input.component.d.ts +0 -1
  24. package/components/input/string/string-autocomplete-input/string-autocomplete-input.component.d.ts +0 -1
  25. package/components/input/string/string-input/string-input.component.d.ts +1 -1
  26. package/components/input/string/string-textbox-input/string-textbox-input.component.d.ts +1 -1
  27. package/components/table/create-dialog/{create-dialog-data.builder.d.ts → create-data.builder.d.ts} +7 -7
  28. package/components/table/create-dialog/create-entity-dialog-data.builder.d.ts +11 -13
  29. package/components/table/create-dialog/create-entity-dialog-data.d.ts +7 -9
  30. package/components/table/create-dialog/create-entity-dialog.component.d.ts +26 -5
  31. package/components/table/default.actions.d.ts +0 -4
  32. package/components/table/display-column-value/base-display-column-value.component.d.ts +3 -0
  33. package/components/table/display-column-value/display-column-value.component.d.ts +9 -0
  34. package/components/table/edit-dialog/edit-data.builder.d.ts +3 -3
  35. package/components/table/edit-dialog/edit-entity-data.d.ts +2 -4
  36. package/components/table/edit-dialog/edit-entity-dialog.component.d.ts +34 -4
  37. package/components/table/edit-dialog/edit-entity.builder.d.ts +3 -5
  38. package/components/table/table-data.builder.d.ts +6 -8
  39. package/components/table/table-data.d.ts +8 -18
  40. package/components/table/table.component.d.ts +35 -9
  41. package/components/tooltip/tooltip.component.d.ts +3 -0
  42. package/decorators/array/array-decorator-internal.data.d.ts +3 -2
  43. package/decorators/array/array-decorator.data.d.ts +6 -17
  44. package/decorators/array/array.decorator.d.ts +0 -1
  45. package/decorators/base/base-property.decorator.d.ts +0 -1
  46. package/decorators/base/property-decorator-internal.data.d.ts +0 -2
  47. package/decorators/base/property-decorator.data.d.ts +0 -10
  48. package/decorators/boolean/boolean-decorator.data.d.ts +0 -2
  49. package/decorators/boolean/boolean.decorator.d.ts +0 -1
  50. package/decorators/custom/custom-decorator.data.d.ts +0 -2
  51. package/decorators/custom/custom.decorator.d.ts +0 -1
  52. package/decorators/date/date-decorator.data.d.ts +0 -3
  53. package/decorators/date/date.decorator.d.ts +0 -1
  54. package/decorators/file/file-decorator.data.d.ts +0 -6
  55. package/decorators/file/file.decorator.d.ts +0 -1
  56. package/decorators/has-many/has-many-decorator-internal.data.d.ts +2 -4
  57. package/decorators/has-many/has-many-decorator.data.d.ts +2 -6
  58. package/decorators/has-many/has-many.decorator.d.ts +0 -1
  59. package/decorators/number/number-decorator-internal.data.d.ts +0 -1
  60. package/decorators/number/number.decorator.d.ts +0 -1
  61. package/decorators/object/object.decorator.d.ts +0 -1
  62. package/decorators/references-many/references-many-decorator-internal.data.d.ts +0 -1
  63. package/decorators/references-many/references-many-decorator.data.d.ts +0 -5
  64. package/decorators/references-many/references-many.decorator.d.ts +0 -1
  65. package/decorators/references-one/references-one.decorator.d.ts +0 -1
  66. package/decorators/string/string-decorator-internal.data.d.ts +1 -0
  67. package/decorators/string/string-decorator.data.d.ts +4 -2
  68. package/decorators/string/string.decorator.d.ts +0 -1
  69. package/default-global-configuration-values.d.ts +12 -0
  70. package/directives/drag-drop.directive.d.ts +0 -3
  71. package/directives/included-in.directive.d.ts +14 -0
  72. package/directives/number.directive.d.ts +0 -1
  73. package/encapsulation/js-2-xml.utilities.d.ts +0 -1
  74. package/encapsulation/jszip.utilities.d.ts +0 -1
  75. package/encapsulation/lodash.utilities.d.ts +2 -11
  76. package/encapsulation/reflect.utilities.d.ts +0 -7
  77. package/encapsulation/uuid.utilities.d.ts +0 -1
  78. package/esm2022/classes/base.builder.mjs +3 -6
  79. package/esm2022/classes/entity.model.mjs +1 -1
  80. package/esm2022/components/confirm-dialog/confirm-dialog-data.builder.mjs +1 -3
  81. package/esm2022/components/confirm-dialog/confirm-dialog-data.mjs +1 -1
  82. package/esm2022/components/confirm-dialog/confirm-dialog.component.mjs +9 -3
  83. package/esm2022/components/create-page/create-data.route.mjs +11 -0
  84. package/esm2022/components/create-page/create-page.component.mjs +275 -0
  85. package/esm2022/components/create-page/page-create-data.builder.mjs +30 -0
  86. package/esm2022/components/edit-page/edit-data.route.mjs +4 -1
  87. package/esm2022/components/edit-page/edit-page.component.mjs +43 -18
  88. package/esm2022/components/edit-page/page-edit-data.builder.mjs +3 -3
  89. package/esm2022/components/input/array/array-date-input/array-date-input.component.mjs +11 -10
  90. package/esm2022/components/input/array/array-date-range-input/array-date-range-input.component.mjs +10 -9
  91. package/esm2022/components/input/array/array-date-time-input/array-date-time-input.component.mjs +13 -12
  92. package/esm2022/components/input/array/array-string-autocomplete-chips/array-string-autocomplete-chips.component.mjs +17 -13
  93. package/esm2022/components/input/array/array-string-chips-input/array-string-chips-input.component.mjs +8 -9
  94. package/esm2022/components/input/array/array-table.class.mjs +4 -6
  95. package/esm2022/components/input/base-input.component.mjs +8 -4
  96. package/esm2022/components/input/boolean/boolean-checkbox-input/boolean-checkbox-input.component.mjs +8 -11
  97. package/esm2022/components/input/boolean/boolean-dropdown-input/boolean-dropdown-input.component.mjs +8 -7
  98. package/esm2022/components/input/boolean/boolean-toggle-input/boolean-toggle-input.component.mjs +6 -9
  99. package/esm2022/components/input/custom/custom.component.mjs +2 -1
  100. package/esm2022/components/input/date/date-input/date-input.component.mjs +8 -7
  101. package/esm2022/components/input/date/date-range-input/date-range-input.component.mjs +38 -43
  102. package/esm2022/components/input/date/date-time-input/date-time-input.component.mjs +10 -10
  103. package/esm2022/components/input/file/file-default-input/file-default-input.component.mjs +4 -3
  104. package/esm2022/components/input/file/file-image-input/file-image-input.component.mjs +6 -5
  105. package/esm2022/components/input/file/file-input/file-input.component.mjs +9 -6
  106. package/esm2022/components/input/input.component.mjs +225 -91
  107. package/esm2022/components/input/input.module.mjs +84 -81
  108. package/esm2022/components/input/number/number-dropdown-input/number-dropdown-input.component.mjs +8 -7
  109. package/esm2022/components/input/number/number-input/number-input.component.mjs +6 -5
  110. package/esm2022/components/input/number/number-slider-input/number-slider-input.component.mjs +6 -5
  111. package/esm2022/components/input/relations/references-many-input/references-many-input.component.mjs +24 -19
  112. package/esm2022/components/input/string/string-autocomplete-input/string-autocomplete-input.component.mjs +12 -8
  113. package/esm2022/components/input/string/string-dropdown-input/string-dropdown-input.component.mjs +8 -7
  114. package/esm2022/components/input/string/string-input/string-input.component.mjs +6 -5
  115. package/esm2022/components/input/string/string-password-input/string-password-input.component.mjs +8 -7
  116. package/esm2022/components/input/string/string-textbox-input/string-textbox-input.component.mjs +7 -6
  117. package/esm2022/components/table/create-dialog/create-data.builder.mjs +44 -0
  118. package/esm2022/components/table/create-dialog/create-entity-dialog-data.builder.mjs +8 -9
  119. package/esm2022/components/table/create-dialog/create-entity-dialog-data.mjs +1 -1
  120. package/esm2022/components/table/create-dialog/create-entity-dialog.component.mjs +30 -9
  121. package/esm2022/components/table/default.actions.mjs +1 -5
  122. package/esm2022/components/table/display-column-value/base-display-column-value.component.mjs +5 -1
  123. package/esm2022/components/table/display-column-value/display-column-value.component.mjs +10 -2
  124. package/esm2022/components/table/edit-dialog/edit-data.builder.mjs +3 -3
  125. package/esm2022/components/table/edit-dialog/edit-entity-data.mjs +1 -1
  126. package/esm2022/components/table/edit-dialog/edit-entity-dialog.component.mjs +37 -7
  127. package/esm2022/components/table/edit-dialog/edit-entity.builder.mjs +3 -3
  128. package/esm2022/components/table/table-data.builder.mjs +12 -12
  129. package/esm2022/components/table/table-data.mjs +1 -1
  130. package/esm2022/components/table/table.component.mjs +63 -34
  131. package/esm2022/components/tooltip/tooltip.component.mjs +6 -3
  132. package/esm2022/decorators/array/array-decorator-internal.data.mjs +4 -2
  133. package/esm2022/decorators/array/array-decorator.data.mjs +1 -2
  134. package/esm2022/decorators/array/array.decorator.mjs +2 -3
  135. package/esm2022/decorators/base/base-property.decorator.mjs +1 -2
  136. package/esm2022/decorators/base/decorator-types.enum.mjs +1 -1
  137. package/esm2022/decorators/base/property-decorator-internal.data.mjs +1 -3
  138. package/esm2022/decorators/base/property-decorator.data.mjs +5 -11
  139. package/esm2022/decorators/boolean/boolean-decorator.data.mjs +1 -1
  140. package/esm2022/decorators/boolean/boolean.decorator.mjs +1 -2
  141. package/esm2022/decorators/custom/custom-decorator-internal.data.mjs +1 -2
  142. package/esm2022/decorators/custom/custom-decorator.data.mjs +1 -1
  143. package/esm2022/decorators/custom/custom.decorator.mjs +1 -2
  144. package/esm2022/decorators/date/date-decorator-internal.data.mjs +2 -2
  145. package/esm2022/decorators/date/date-decorator.data.mjs +1 -1
  146. package/esm2022/decorators/date/date.decorator.mjs +2 -3
  147. package/esm2022/decorators/file/file-decorator-internal.data.mjs +1 -4
  148. package/esm2022/decorators/file/file-decorator.data.mjs +1 -6
  149. package/esm2022/decorators/file/file.decorator.mjs +2 -3
  150. package/esm2022/decorators/has-many/has-many-decorator-internal.data.mjs +1 -2
  151. package/esm2022/decorators/has-many/has-many-decorator.data.mjs +1 -1
  152. package/esm2022/decorators/has-many/has-many.decorator.mjs +1 -2
  153. package/esm2022/decorators/number/number-decorator-internal.data.mjs +4 -5
  154. package/esm2022/decorators/number/number-decorator.data.mjs +1 -1
  155. package/esm2022/decorators/number/number.decorator.mjs +1 -2
  156. package/esm2022/decorators/object/object.decorator.mjs +1 -2
  157. package/esm2022/decorators/references-many/references-many-decorator-internal.data.mjs +1 -2
  158. package/esm2022/decorators/references-many/references-many-decorator.data.mjs +1 -1
  159. package/esm2022/decorators/references-many/references-many.decorator.mjs +1 -2
  160. package/esm2022/decorators/references-one/references-one.decorator.mjs +1 -2
  161. package/esm2022/decorators/string/string-decorator-internal.data.mjs +7 -4
  162. package/esm2022/decorators/string/string-decorator.data.mjs +1 -1
  163. package/esm2022/decorators/string/string.decorator.mjs +1 -2
  164. package/esm2022/default-global-configuration-values.mjs +16 -1
  165. package/esm2022/directives/drag-drop.directive.mjs +1 -4
  166. package/esm2022/directives/included-in.directive.mjs +33 -0
  167. package/esm2022/directives/number.directive.mjs +1 -2
  168. package/esm2022/directives/password-match.directive.mjs +2 -2
  169. package/esm2022/encapsulation/js-2-xml.utilities.mjs +1 -2
  170. package/esm2022/encapsulation/jszip.utilities.mjs +1 -2
  171. package/esm2022/encapsulation/lodash.utilities.mjs +12 -19
  172. package/esm2022/encapsulation/reflect.utilities.mjs +1 -8
  173. package/esm2022/encapsulation/uuid.utilities.mjs +1 -2
  174. package/esm2022/functions/default-false.function.mjs +1 -2
  175. package/esm2022/functions/default-true.function.mjs +1 -2
  176. package/esm2022/functions/get-config-value.function.mjs +1 -2
  177. package/esm2022/functions/get-validation-error-message.function.mjs +13 -7
  178. package/esm2022/functions/get-validation-errors-tooltip-content.function.ts.mjs +6 -4
  179. package/esm2022/functions/is-async-function.function.mjs +1 -2
  180. package/esm2022/global-configuration-values.mjs +5 -2
  181. package/esm2022/mocks/placeholder-data.png.mjs +3 -3
  182. package/esm2022/public-api.mjs +3 -1
  183. package/esm2022/services/entity.service.mjs +15 -21
  184. package/esm2022/services/unsaved-changes.guard.mjs +7 -2
  185. package/esm2022/utilities/date.utilities.mjs +3 -9
  186. package/esm2022/utilities/entity.utilities.mjs +82 -79
  187. package/esm2022/utilities/file.utilities.mjs +1 -10
  188. package/esm2022/utilities/selection.utilities.mjs +4 -7
  189. package/esm2022/utilities/validation.utilities.mjs +40 -35
  190. package/fesm2022/ngx-material-entity.mjs +1309 -752
  191. package/fesm2022/ngx-material-entity.mjs.map +1 -1
  192. package/functions/default-false.function.d.ts +0 -1
  193. package/functions/default-true.function.d.ts +0 -1
  194. package/functions/get-config-value.function.d.ts +0 -1
  195. package/functions/get-validation-error-message.function.d.ts +3 -0
  196. package/functions/get-validation-errors-tooltip-content.function.ts.d.ts +4 -2
  197. package/functions/is-async-function.function.d.ts +0 -1
  198. package/global-configuration-values.d.ts +9 -34
  199. package/mocks/placeholder-data.png.d.ts +1 -1
  200. package/package.json +2 -1
  201. package/public-api.d.ts +2 -0
  202. package/services/entity.service.d.ts +11 -16
  203. package/services/unsaved-changes.guard.d.ts +13 -1
  204. package/utilities/date.utilities.d.ts +0 -6
  205. package/utilities/entity.utilities.d.ts +10 -36
  206. package/utilities/file.utilities.d.ts +0 -9
  207. package/utilities/selection.utilities.d.ts +0 -3
  208. package/utilities/validation.utilities.d.ts +0 -3
  209. package/esm2022/components/table/create-dialog/create-dialog-data.builder.mjs +0 -44
@@ -1,6 +1,6 @@
1
1
  /* eslint-disable jsdoc/require-jsdoc */
2
2
  import { SelectionModel } from '@angular/cdk/collections';
3
- import { Component, EnvironmentInjector, Inject } from '@angular/core';
3
+ import { Component, EnvironmentInjector, Inject, runInInjectionContext } from '@angular/core';
4
4
  import { MatTableDataSource } from '@angular/material/table';
5
5
  import { ReferencesManyDecoratorConfigInternal } from '../../../../decorators/references-many/references-many-decorator-internal.data';
6
6
  import { NGX_INTERNAL_GLOBAL_DEFAULT_VALUES } from '../../../../default-global-configuration-values';
@@ -10,13 +10,14 @@ import { SelectionUtilities } from '../../../../utilities/selection.utilities';
10
10
  import { NgxMatEntityBaseInputComponent } from '../../base-input.component';
11
11
  import * as i0 from "@angular/core";
12
12
  import * as i1 from "@angular/common";
13
- import * as i2 from "@angular/material/form-field";
14
- import * as i3 from "@angular/forms";
15
- import * as i4 from "@angular/material/select";
16
- import * as i5 from "@angular/material/core";
17
- import * as i6 from "@angular/material/checkbox";
18
- import * as i7 from "@angular/material/table";
19
- import * as i8 from "@angular/material/button";
13
+ import * as i2 from "@angular/forms";
14
+ import * as i3 from "@angular/material/core";
15
+ import * as i4 from "@angular/material/button";
16
+ import * as i5 from "@angular/material/checkbox";
17
+ import * as i6 from "@angular/material/form-field";
18
+ import * as i7 from "@angular/material/select";
19
+ import * as i8 from "@angular/material/table";
20
+ // eslint-disable-next-line angular/prefer-standalone-component
20
21
  export class ReferencesManyInputComponent extends NgxMatEntityBaseInputComponent {
21
22
  injector;
22
23
  globalConfig;
@@ -37,20 +38,19 @@ export class ReferencesManyInputComponent extends NgxMatEntityBaseInputComponent
37
38
  super.ngOnInit();
38
39
  this.metadata = new ReferencesManyDecoratorConfigInternal(this.metadata, this.globalConfig);
39
40
  ReflectUtilities.defineMetadata('metadata', this.metadata, this.entity, this.key);
40
- this.propertyValue = this.propertyValue ?? [];
41
41
  const givenDisplayColumns = this.metadata.displayColumns.map((v) => v.displayName);
42
42
  if (givenDisplayColumns.find(s => s === 'select')) {
43
43
  throw new Error(`The name "select" for a display column is reserved.
44
44
  Please choose a different name.`);
45
45
  }
46
46
  this.displayedColumns = this.isReadOnly ? givenDisplayColumns : ['select'].concat(givenDisplayColumns);
47
- this.referencedEntitiesDataSource.data = this.propertyValue;
48
- await this.injector.runInContext(async () => {
47
+ this.referencedEntitiesDataSource.data = this.propertyValue ?? [];
48
+ await runInInjectionContext(this.injector, async () => {
49
49
  this.allReferencedEntities = await this.metadata.getReferencedEntities();
50
50
  });
51
51
  this.allDropdownValues = this.metadata.getDropdownValues(LodashUtilities.cloneDeep(this.allReferencedEntities));
52
52
  this.dropdownValues = LodashUtilities.cloneDeep(this.allDropdownValues);
53
- for (const value of this.propertyValue) {
53
+ for (const value of this.referencedEntitiesDataSource.data) {
54
54
  const foundValue = this.dropdownValues.find(v => v.value === value);
55
55
  if (foundValue) {
56
56
  this.dropdownValues.splice(this.dropdownValues.indexOf(foundValue), 1);
@@ -60,14 +60,13 @@ export class ReferencesManyInputComponent extends NgxMatEntityBaseInputComponent
60
60
  /**
61
61
  * Gets the value to display in the column.
62
62
  * Runs in environment context to enable injection.
63
- *
64
63
  * @param entityId - The id of the entity to get the value from.
65
64
  * @param displayColumn - The display column to get the value from.
66
65
  * @returns The value of the display column.
67
66
  */
68
67
  getDisplayColumnValue(entityId, displayColumn) {
69
- return this.injector.runInContext(() => {
70
- // eslint-disable-next-line @typescript-eslint/no-unsafe-argument
68
+ return runInInjectionContext(this.injector, () => {
69
+ // eslint-disable-next-line typescript/no-unsafe-argument
71
70
  return displayColumn.value(this.metadata.getEntityForId(entityId, this.allReferencedEntities));
72
71
  });
73
72
  }
@@ -82,8 +81,11 @@ export class ReferencesManyInputComponent extends NgxMatEntityBaseInputComponent
82
81
  }
83
82
  addAll() {
84
83
  this.propertyValue = this.allDropdownValues.map(dv => dv.value);
84
+ if (!this.propertyValue.length) {
85
+ this.propertyValue = undefined;
86
+ }
85
87
  this.dropdownValues = [];
86
- this.referencedEntitiesDataSource.data = this.propertyValue;
88
+ this.referencedEntitiesDataSource.data = this.propertyValue ?? [];
87
89
  this.input = '';
88
90
  this.emitChange();
89
91
  }
@@ -95,18 +97,21 @@ export class ReferencesManyInputComponent extends NgxMatEntityBaseInputComponent
95
97
  this.dropdownValues.push(foundDropdownValue);
96
98
  }
97
99
  });
100
+ if (!this.propertyValue?.length) {
101
+ this.propertyValue = undefined;
102
+ }
98
103
  this.referencedEntitiesDataSource.data = this.propertyValue ?? [];
99
104
  this.selection.clear();
100
105
  this.emitChange();
101
106
  }
102
107
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.0", ngImport: i0, type: ReferencesManyInputComponent, deps: [{ token: i0.EnvironmentInjector }, { token: NGX_INTERNAL_GLOBAL_DEFAULT_VALUES }], target: i0.ɵɵFactoryTarget.Component });
103
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.0", type: ReferencesManyInputComponent, selector: "references-many-input", usesInheritance: true, ngImport: i0, template: "<div class=\"mat-elevation-z8 elevation-container\">\n <div class=\"array-headline\">\n <b>{{metadata.displayName}}</b>\n </div>\n\n <mat-form-field>\n <mat-label>{{metadata.dropdownLabel}}</mat-label>\n <mat-select [(ngModel)]=\"input\" [name]=\"key.toString() + 'input' + uuid\" #inputModel=\"ngModel\" [disabled]=\"isReadOnly\">\n <mat-option>-</mat-option>\n <mat-option *ngFor=\"let value of dropdownValues\" [value]=\"value.value\">{{value.displayName}}</mat-option>\n </mat-select>\n <mat-error>{{getValidationErrorMessage(inputModel)}}</mat-error>\n </mat-form-field>\n\n <button type=\"button\" *ngIf=\"metadata.addAll\" style=\"margin-left: 20px;\" mat-raised-button [disabled]=\"!dropdownValues.length || isReadOnly\" (click)=\"addAll()\">\n {{metadata.addAllButtonLabel}}\n </button>\n\n <div class=\"buttons\">\n <button type=\"button\" mat-raised-button [disabled]=\"!input\" (click)=\"add()\">\n {{metadata.addButtonLabel}}\n </button>\n <button type=\"button\" mat-raised-button [disabled]=\"!selection.selected.length\" (click)=\"remove()\">\n {{metadata.removeButtonLabel}}\n </button>\n </div>\n\n <mat-table [dataSource]=\"referencedEntitiesDataSource\">\n <!-- select Column -->\n <ng-container matColumnDef=\"select\" *ngIf=\"!isReadOnly\">\n <mat-header-cell *matHeaderCellDef>\n <mat-checkbox\n [disabled]=\"!referencedEntitiesDataSource.data.length\" (change)=\"$event ? SelectionUtilities.masterToggle(selection, referencedEntitiesDataSource) : null\"\n [checked]=\"selection.hasValue() && SelectionUtilities.isAllSelected(selection, referencedEntitiesDataSource)\"\n [indeterminate]=\"selection.hasValue() && !SelectionUtilities.isAllSelected(selection, referencedEntitiesDataSource)\">\n </mat-checkbox>\n </mat-header-cell>\n <mat-cell *matCellDef=\"let entity\">\n <mat-checkbox (click)=\"$event.stopPropagation()\" (change)=\"$event ? selection.toggle(entity) : null\" [checked]=\"selection.isSelected(entity)\"></mat-checkbox>\n </mat-cell>\n </ng-container>\n \n <ng-container *ngFor=\"let dCol of metadata.displayColumns\" [matColumnDef]=\"dCol.displayName\">\n <mat-header-cell *matHeaderCellDef>\n {{dCol.displayName}}\n </mat-header-cell>\n <mat-cell class=\"entity\" *matCellDef=\"let entityId\">\n {{getDisplayColumnValue(entityId, dCol)}}\n </mat-cell>\n </ng-container>\n \n <mat-header-row *matHeaderRowDef=\"displayedColumns\"></mat-header-row>\n <mat-row *matRowDef=\"let row; columns: displayedColumns\"></mat-row>\n </mat-table>\n</div>", styles: [".mdc-data-table__row:last-child .mdc-data-table__cell{border-bottom:1px solid rgba(0,0,0,.12)}.elevation-container{border-radius:5px;padding:15px;margin-bottom:15px;margin-top:15px}.array-headline{padding-bottom:10px}.buttons{display:flex;justify-content:space-between;margin-bottom:10px;margin-top:5px}mat-table{border:1px solid #E0E0E0;border-radius:5px;padding-top:5px;padding-bottom:25px}.mat-column-select{flex:0 0 75px}\n"], dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i2.MatLabel, selector: "mat-label" }, { kind: "directive", type: i2.MatError, selector: "mat-error, [matError]", inputs: ["id"] }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i4.MatSelect, selector: "mat-select", inputs: ["disabled", "disableRipple", "tabIndex", "panelWidth", "hideSingleSelectionIndicator"], exportAs: ["matSelect"] }, { kind: "component", type: i5.MatOption, selector: "mat-option", exportAs: ["matOption"] }, { kind: "component", type: i6.MatCheckbox, selector: "mat-checkbox", inputs: ["disableRipple", "color", "tabIndex"], exportAs: ["matCheckbox"] }, { kind: "component", type: i7.MatTable, selector: "mat-table, table[mat-table]", exportAs: ["matTable"] }, { kind: "directive", type: i7.MatHeaderCellDef, selector: "[matHeaderCellDef]" }, { kind: "directive", type: i7.MatHeaderRowDef, selector: "[matHeaderRowDef]", inputs: ["matHeaderRowDef", "matHeaderRowDefSticky"] }, { kind: "directive", type: i7.MatColumnDef, selector: "[matColumnDef]", inputs: ["sticky", "matColumnDef"] }, { kind: "directive", type: i7.MatCellDef, selector: "[matCellDef]" }, { kind: "directive", type: i7.MatRowDef, selector: "[matRowDef]", inputs: ["matRowDefColumns", "matRowDefWhen"] }, { kind: "directive", type: i7.MatHeaderCell, selector: "mat-header-cell, th[mat-header-cell]" }, { kind: "directive", type: i7.MatCell, selector: "mat-cell, td[mat-cell]" }, { kind: "component", type: i7.MatHeaderRow, selector: "mat-header-row, tr[mat-header-row]", exportAs: ["matHeaderRow"] }, { kind: "component", type: i7.MatRow, selector: "mat-row, tr[mat-row]", exportAs: ["matRow"] }, { kind: "component", type: i8.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }] });
108
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.0", type: ReferencesManyInputComponent, selector: "references-many-input", usesInheritance: true, ngImport: i0, template: "<!-- eslint-disable angular/no-call-expression -->\n<div class=\"mat-elevation-z8 elevation-container\">\n <div class=\"array-headline\">\n <b>{{metadata.displayName}}</b>\n </div>\n\n <mat-form-field>\n <mat-label>{{metadata.dropdownLabel}}</mat-label>\n <mat-select #inputModel=\"ngModel\" [name]=\"name + 'input'\" [disabled]=\"isReadOnly\" [(ngModel)]=\"input\">\n <mat-option>-</mat-option>\n <mat-option *ngFor=\"let value of dropdownValues\" [value]=\"value.value\">{{value.displayName}}</mat-option>\n </mat-select>\n <mat-error>{{getValidationErrorMessage(inputModel)}}</mat-error>\n </mat-form-field>\n\n <button *ngIf=\"metadata.addAll\" type=\"button\" style=\"margin-left: 20px;\" mat-raised-button [disabled]=\"!dropdownValues.length || isReadOnly\" (click)=\"addAll()\">\n {{metadata.addAllButtonLabel}}\n </button>\n\n <div class=\"buttons\">\n <button type=\"button\" mat-raised-button [disabled]=\"!input\" (click)=\"add()\">\n {{metadata.addButtonLabel}}\n </button>\n <button type=\"button\" mat-raised-button [disabled]=\"!selection.selected.length\" (click)=\"remove()\">\n {{metadata.removeButtonLabel}}\n </button>\n </div>\n\n <mat-table [dataSource]=\"referencedEntitiesDataSource\">\n <!-- select Column -->\n <ng-container *ngIf=\"!isReadOnly\" matColumnDef=\"select\">\n <mat-header-cell *matHeaderCellDef>\n <mat-checkbox\n [disabled]=\"!referencedEntitiesDataSource.data.length\" [checked]=\"selection.hasValue() && SelectionUtilities.isAllSelected(selection, referencedEntitiesDataSource)\"\n [indeterminate]=\"selection.hasValue() && !SelectionUtilities.isAllSelected(selection, referencedEntitiesDataSource)\"\n (change)=\"$event ? SelectionUtilities.masterToggle(selection, referencedEntitiesDataSource) : null\">\n </mat-checkbox>\n </mat-header-cell>\n <mat-cell *matCellDef=\"let entity\">\n <mat-checkbox [checked]=\"selection.isSelected(entity)\" (click)=\"$event.stopPropagation()\" (change)=\"$event ? selection.toggle(entity) : null\"></mat-checkbox>\n </mat-cell>\n </ng-container>\n \n <ng-container *ngFor=\"let dCol of metadata.displayColumns\" [matColumnDef]=\"dCol.displayName\">\n <mat-header-cell *matHeaderCellDef>\n {{dCol.displayName}}\n </mat-header-cell>\n <mat-cell *matCellDef=\"let entityId\" class=\"entity\">\n {{getDisplayColumnValue(entityId, dCol)}}\n </mat-cell>\n </ng-container>\n \n <mat-header-row *matHeaderRowDef=\"displayedColumns\"></mat-header-row>\n <mat-row *matRowDef=\"let row; columns: displayedColumns\"></mat-row>\n </mat-table>\n</div>", styles: [".mdc-data-table__row:last-child .mdc-data-table__cell{border-bottom:1px solid rgba(0,0,0,.12)}.elevation-container{border-radius:5px;padding:15px;margin-bottom:15px;margin-top:15px}.array-headline{padding-bottom:10px}.buttons{display:flex;justify-content:space-between;margin-bottom:10px;margin-top:5px}mat-table{border:1px solid #E0E0E0;border-radius:5px;padding-top:5px;padding-bottom:25px}.mat-column-select{flex:0 0 75px}\n"], dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i3.MatOption, selector: "mat-option", exportAs: ["matOption"] }, { kind: "component", type: i4.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "component", type: i5.MatCheckbox, selector: "mat-checkbox", inputs: ["disableRipple", "color", "tabIndex"], exportAs: ["matCheckbox"] }, { kind: "component", type: i6.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i6.MatLabel, selector: "mat-label" }, { kind: "directive", type: i6.MatError, selector: "mat-error, [matError]", inputs: ["id"] }, { kind: "component", type: i7.MatSelect, selector: "mat-select", inputs: ["disabled", "disableRipple", "tabIndex", "panelWidth", "hideSingleSelectionIndicator"], exportAs: ["matSelect"] }, { kind: "component", type: i8.MatTable, selector: "mat-table, table[mat-table]", exportAs: ["matTable"] }, { kind: "directive", type: i8.MatHeaderCellDef, selector: "[matHeaderCellDef]" }, { kind: "directive", type: i8.MatHeaderRowDef, selector: "[matHeaderRowDef]", inputs: ["matHeaderRowDef", "matHeaderRowDefSticky"] }, { kind: "directive", type: i8.MatColumnDef, selector: "[matColumnDef]", inputs: ["sticky", "matColumnDef"] }, { kind: "directive", type: i8.MatCellDef, selector: "[matCellDef]" }, { kind: "directive", type: i8.MatRowDef, selector: "[matRowDef]", inputs: ["matRowDefColumns", "matRowDefWhen"] }, { kind: "directive", type: i8.MatHeaderCell, selector: "mat-header-cell, th[mat-header-cell]" }, { kind: "directive", type: i8.MatCell, selector: "mat-cell, td[mat-cell]" }, { kind: "component", type: i8.MatHeaderRow, selector: "mat-header-row, tr[mat-header-row]", exportAs: ["matHeaderRow"] }, { kind: "component", type: i8.MatRow, selector: "mat-row, tr[mat-row]", exportAs: ["matRow"] }] });
104
109
  }
105
110
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.0", ngImport: i0, type: ReferencesManyInputComponent, decorators: [{
106
111
  type: Component,
107
- args: [{ selector: 'references-many-input', template: "<div class=\"mat-elevation-z8 elevation-container\">\n <div class=\"array-headline\">\n <b>{{metadata.displayName}}</b>\n </div>\n\n <mat-form-field>\n <mat-label>{{metadata.dropdownLabel}}</mat-label>\n <mat-select [(ngModel)]=\"input\" [name]=\"key.toString() + 'input' + uuid\" #inputModel=\"ngModel\" [disabled]=\"isReadOnly\">\n <mat-option>-</mat-option>\n <mat-option *ngFor=\"let value of dropdownValues\" [value]=\"value.value\">{{value.displayName}}</mat-option>\n </mat-select>\n <mat-error>{{getValidationErrorMessage(inputModel)}}</mat-error>\n </mat-form-field>\n\n <button type=\"button\" *ngIf=\"metadata.addAll\" style=\"margin-left: 20px;\" mat-raised-button [disabled]=\"!dropdownValues.length || isReadOnly\" (click)=\"addAll()\">\n {{metadata.addAllButtonLabel}}\n </button>\n\n <div class=\"buttons\">\n <button type=\"button\" mat-raised-button [disabled]=\"!input\" (click)=\"add()\">\n {{metadata.addButtonLabel}}\n </button>\n <button type=\"button\" mat-raised-button [disabled]=\"!selection.selected.length\" (click)=\"remove()\">\n {{metadata.removeButtonLabel}}\n </button>\n </div>\n\n <mat-table [dataSource]=\"referencedEntitiesDataSource\">\n <!-- select Column -->\n <ng-container matColumnDef=\"select\" *ngIf=\"!isReadOnly\">\n <mat-header-cell *matHeaderCellDef>\n <mat-checkbox\n [disabled]=\"!referencedEntitiesDataSource.data.length\" (change)=\"$event ? SelectionUtilities.masterToggle(selection, referencedEntitiesDataSource) : null\"\n [checked]=\"selection.hasValue() && SelectionUtilities.isAllSelected(selection, referencedEntitiesDataSource)\"\n [indeterminate]=\"selection.hasValue() && !SelectionUtilities.isAllSelected(selection, referencedEntitiesDataSource)\">\n </mat-checkbox>\n </mat-header-cell>\n <mat-cell *matCellDef=\"let entity\">\n <mat-checkbox (click)=\"$event.stopPropagation()\" (change)=\"$event ? selection.toggle(entity) : null\" [checked]=\"selection.isSelected(entity)\"></mat-checkbox>\n </mat-cell>\n </ng-container>\n \n <ng-container *ngFor=\"let dCol of metadata.displayColumns\" [matColumnDef]=\"dCol.displayName\">\n <mat-header-cell *matHeaderCellDef>\n {{dCol.displayName}}\n </mat-header-cell>\n <mat-cell class=\"entity\" *matCellDef=\"let entityId\">\n {{getDisplayColumnValue(entityId, dCol)}}\n </mat-cell>\n </ng-container>\n \n <mat-header-row *matHeaderRowDef=\"displayedColumns\"></mat-header-row>\n <mat-row *matRowDef=\"let row; columns: displayedColumns\"></mat-row>\n </mat-table>\n</div>", styles: [".mdc-data-table__row:last-child .mdc-data-table__cell{border-bottom:1px solid rgba(0,0,0,.12)}.elevation-container{border-radius:5px;padding:15px;margin-bottom:15px;margin-top:15px}.array-headline{padding-bottom:10px}.buttons{display:flex;justify-content:space-between;margin-bottom:10px;margin-top:5px}mat-table{border:1px solid #E0E0E0;border-radius:5px;padding-top:5px;padding-bottom:25px}.mat-column-select{flex:0 0 75px}\n"] }]
112
+ args: [{ selector: 'references-many-input', template: "<!-- eslint-disable angular/no-call-expression -->\n<div class=\"mat-elevation-z8 elevation-container\">\n <div class=\"array-headline\">\n <b>{{metadata.displayName}}</b>\n </div>\n\n <mat-form-field>\n <mat-label>{{metadata.dropdownLabel}}</mat-label>\n <mat-select #inputModel=\"ngModel\" [name]=\"name + 'input'\" [disabled]=\"isReadOnly\" [(ngModel)]=\"input\">\n <mat-option>-</mat-option>\n <mat-option *ngFor=\"let value of dropdownValues\" [value]=\"value.value\">{{value.displayName}}</mat-option>\n </mat-select>\n <mat-error>{{getValidationErrorMessage(inputModel)}}</mat-error>\n </mat-form-field>\n\n <button *ngIf=\"metadata.addAll\" type=\"button\" style=\"margin-left: 20px;\" mat-raised-button [disabled]=\"!dropdownValues.length || isReadOnly\" (click)=\"addAll()\">\n {{metadata.addAllButtonLabel}}\n </button>\n\n <div class=\"buttons\">\n <button type=\"button\" mat-raised-button [disabled]=\"!input\" (click)=\"add()\">\n {{metadata.addButtonLabel}}\n </button>\n <button type=\"button\" mat-raised-button [disabled]=\"!selection.selected.length\" (click)=\"remove()\">\n {{metadata.removeButtonLabel}}\n </button>\n </div>\n\n <mat-table [dataSource]=\"referencedEntitiesDataSource\">\n <!-- select Column -->\n <ng-container *ngIf=\"!isReadOnly\" matColumnDef=\"select\">\n <mat-header-cell *matHeaderCellDef>\n <mat-checkbox\n [disabled]=\"!referencedEntitiesDataSource.data.length\" [checked]=\"selection.hasValue() && SelectionUtilities.isAllSelected(selection, referencedEntitiesDataSource)\"\n [indeterminate]=\"selection.hasValue() && !SelectionUtilities.isAllSelected(selection, referencedEntitiesDataSource)\"\n (change)=\"$event ? SelectionUtilities.masterToggle(selection, referencedEntitiesDataSource) : null\">\n </mat-checkbox>\n </mat-header-cell>\n <mat-cell *matCellDef=\"let entity\">\n <mat-checkbox [checked]=\"selection.isSelected(entity)\" (click)=\"$event.stopPropagation()\" (change)=\"$event ? selection.toggle(entity) : null\"></mat-checkbox>\n </mat-cell>\n </ng-container>\n \n <ng-container *ngFor=\"let dCol of metadata.displayColumns\" [matColumnDef]=\"dCol.displayName\">\n <mat-header-cell *matHeaderCellDef>\n {{dCol.displayName}}\n </mat-header-cell>\n <mat-cell *matCellDef=\"let entityId\" class=\"entity\">\n {{getDisplayColumnValue(entityId, dCol)}}\n </mat-cell>\n </ng-container>\n \n <mat-header-row *matHeaderRowDef=\"displayedColumns\"></mat-header-row>\n <mat-row *matRowDef=\"let row; columns: displayedColumns\"></mat-row>\n </mat-table>\n</div>", styles: [".mdc-data-table__row:last-child .mdc-data-table__cell{border-bottom:1px solid rgba(0,0,0,.12)}.elevation-container{border-radius:5px;padding:15px;margin-bottom:15px;margin-top:15px}.array-headline{padding-bottom:10px}.buttons{display:flex;justify-content:space-between;margin-bottom:10px;margin-top:5px}mat-table{border:1px solid #E0E0E0;border-radius:5px;padding-top:5px;padding-bottom:25px}.mat-column-select{flex:0 0 75px}\n"] }]
108
113
  }], ctorParameters: function () { return [{ type: i0.EnvironmentInjector }, { type: undefined, decorators: [{
109
114
  type: Inject,
110
115
  args: [NGX_INTERNAL_GLOBAL_DEFAULT_VALUES]
111
116
  }] }]; } });
112
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVmZXJlbmNlcy1tYW55LWlucHV0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1tYXRlcmlhbC1lbnRpdHkvc3JjL2NvbXBvbmVudHMvaW5wdXQvcmVsYXRpb25zL3JlZmVyZW5jZXMtbWFueS1pbnB1dC9yZWZlcmVuY2VzLW1hbnktaW5wdXQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LW1hdGVyaWFsLWVudGl0eS9zcmMvY29tcG9uZW50cy9pbnB1dC9yZWxhdGlvbnMvcmVmZXJlbmNlcy1tYW55LWlucHV0L3JlZmVyZW5jZXMtbWFueS1pbnB1dC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSx3Q0FBd0M7QUFDeEMsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQzFELE9BQU8sRUFBRSxTQUFTLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxFQUFVLE1BQU0sZUFBZSxDQUFDO0FBQy9FLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBSTdELE9BQU8sRUFBRSxxQ0FBcUMsRUFBRSxNQUFNLGdGQUFnRixDQUFDO0FBQ3ZJLE9BQU8sRUFBRSxrQ0FBa0MsRUFBRSxNQUFNLGlEQUFpRCxDQUFDO0FBQ3JHLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSw0Q0FBNEMsQ0FBQztBQUM3RSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSw2Q0FBNkMsQ0FBQztBQUUvRSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSwyQ0FBMkMsQ0FBQztBQUUvRSxPQUFPLEVBQUUsOEJBQThCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQzs7Ozs7Ozs7OztBQVE1RSxNQUFNLE9BQU8sNEJBQ1QsU0FBUSw4QkFBb0Y7SUFtQnZFO0lBRUE7SUFuQnJCLHFCQUFxQixHQUFpQixFQUFF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O1FBQ2hCLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztJQUN0QixDQUFDO0lBRUQsTUFBTTtRQUNGLElBQUksQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRTtZQUNoQyxJQUFJLENBQUMsYUFBYSxFQUFFLE1BQU0sQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztZQUM3RCxNQUFNLGtCQUFrQixHQUFzQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEtBQUssS0FBSyxDQUFDLENBQUMsQ0FBQztZQUM5RyxJQUFJLGtCQUFrQixFQUFFO2dCQUNwQixJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO2FBQ2hEO1FBQ0wsQ0FBQyxDQUFDLENBQUM7UUFDSCxJQUFJLENBQUMsNEJBQTRCLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxhQUFhLElBQUksRUFBRSxDQUFDO1FBQ2xFLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDdkIsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO0lBQ3RCLENBQUM7dUdBcEdRLDRCQUE0QixxREFxQnpCLGtDQUFrQzsyRkFyQnJDLDRCQUE0QixvRkN0QnpDLHUxRkFzRE07OzJGRGhDTyw0QkFBNEI7a0JBTnhDLFNBQVM7K0JBRUksdUJBQXVCOzswQkF5QjVCLE1BQU07MkJBQUMsa0NBQWtDIiwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUganNkb2MvcmVxdWlyZS1qc2RvYyAqL1xuaW1wb3J0IHsgU2VsZWN0aW9uTW9kZWwgfSBmcm9tICdAYW5ndWxhci9jZGsvY29sbGVjdGlvbnMnO1xuaW1wb3J0IHsgQ29tcG9uZW50LCBFbnZpcm9ubWVudEluamVjdG9yLCBJbmplY3QsIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTWF0VGFibGVEYXRhU291cmNlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvdGFibGUnO1xuaW1wb3J0IHsgQmFzZUVudGl0eVR5cGUgfSBmcm9tICcuLi8uLi8uLi8uLi9jbGFzc2VzL2VudGl0eS5tb2RlbCc7XG5pbXBvcnQgeyBEZWNvcmF0b3JUeXBlcyB9IGZyb20gJy4uLy4uLy4uLy4uL2RlY29yYXRvcnMvYmFzZS9kZWNvcmF0b3ItdHlwZXMuZW51bSc7XG5pbXBvcnQgeyBEcm9wZG93blZhbHVlIH0gZnJvbSAnLi4vLi4vLi4vLi4vZGVjb3JhdG9ycy9iYXNlL2Ryb3Bkb3duLXZhbHVlLmludGVyZmFjZSc7XG5pbXBvcnQgeyBSZWZlcmVuY2VzTWFueURlY29yYXRvckNvbmZpZ0ludGVybmFsIH0gZnJvbSAnLi4vLi4vLi4vLi4vZGVjb3JhdG9ycy9yZWZlcmVuY2VzLW1hbnkvcmVmZXJlbmNlcy1tYW55LWRlY29yYXRvci1pbnRlcm5hbC5kYXRhJztcbmltcG9ydCB7IE5HWF9JTlRFUk5BTF9HTE9CQUxfREVGQVVMVF9WQUxVRVMgfSBmcm9tICcuLi8uLi8uLi8uLi9kZWZhdWx0LWdsb2JhbC1jb25maWd1cmF0aW9uLXZhbHVlcyc7XG5pbXBvcnQgeyBMb2Rhc2hVdGlsaXRpZXMgfSBmcm9tICcuLi8uLi8uLi8uLi9lbmNhcHN1bGF0aW9uL2xvZGFzaC51dGlsaXRpZXMnO1xuaW1wb3J0IHsgUmVmbGVjdFV0aWxpdGllcyB9IGZyb20gJy4uLy4uLy4uLy4uL2VuY2Fwc3VsYXRpb24vcmVmbGVjdC51dGlsaXRpZXMnO1xuaW1wb3J0IHsgTmd4R2xvYmFsRGVmYXVsdFZhbHVlcyB9IGZyb20gJy4uLy4uLy4uLy4uL2dsb2JhbC1jb25maWd1cmF0aW9uLXZhbHVlcyc7XG5pbXBvcnQgeyBTZWxlY3Rpb25VdGlsaXRpZXMgfSBmcm9tICcuLi8uLi8uLi8uLi91dGlsaXRpZXMvc2VsZWN0aW9uLnV0aWxpdGllcyc7XG5pbXBvcnQgeyBEaXNwbGF5Q29sdW1uIH0gZnJvbSAnLi4vLi4vLi4vdGFibGUvdGFibGUtZGF0YSc7XG5pbXBvcnQgeyBOZ3hNYXRFbnRpdHlCYXNlSW5wdXRDb21wb25lbnQgfSBmcm9tICcuLi8uLi9iYXNlLWlucHV0LmNvbXBvbmVudCc7XG5cbkBDb21wb25lbnQoe1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvY29tcG9uZW50LXNlbGVjdG9yXG4gICAgc2VsZWN0b3I6ICdyZWZlcmVuY2VzLW1hbnktaW5wdXQnLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9yZWZlcmVuY2VzLW1hbnktaW5wdXQuY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsczogWycuL3JlZmVyZW5jZXMtbWFueS1pbnB1dC5jb21wb25lbnQuc2NzcyddXG59KVxuZXhwb3J0IGNsYXNzIFJlZmVyZW5jZXNNYW55SW5wdXRDb21wb25lbnQ8RW50aXR5VHlwZSBleHRlbmRzIEJhc2VFbnRpdHlUeXBlPEVudGl0eVR5cGU+PlxuICAgIGV4dGVuZHMgTmd4TWF0RW50aXR5QmFzZUlucHV0Q29tcG9uZW50PEVudGl0eVR5cGUsIERlY29yYXRvclR5cGVzLlJFRkVSRU5DRVNfTUFOWSwgc3RyaW5nW10+IGltcGxlbWVudHMgT25Jbml0IHtcblxuICAgIGFsbFJlZmVyZW5jZWRFbnRpdGllczogRW50aXR5VHlwZVtdID0gW107XG5cbiAgICBhbGxEcm9wZG93blZhbHVlczogRHJvcGRvd25WYWx1ZTxzdHJpbmc+W10gPSBbXTtcblxuICAgIGRyb3Bkb3duVmFsdWVzOiBEcm9wZG93blZhbHVlPHN0cmluZz5bXSA9IFtdO1xuXG4gICAgaW5wdXQ6IHN0cmluZyA9ICcnO1xuXG4gICAgcmVmZXJlbmNlZEVudGl0aWVzRGF0YVNvdXJjZTogTWF0VGFibGVEYXRhU291cmNlPHN0cmluZz4gPSBuZXcgTWF0VGFibGVEYXRhU291cmNlKCk7XG5cbiAgICBkaXNwbGF5ZWRDb2x1bW5zITogc3RyaW5nW107XG5cbiAgICBzZWxlY3Rpb246IFNlbGVjdGlvbk1vZGVsPHN0cmluZz4gPSBuZXcgU2VsZWN0aW9uTW9kZWw8c3RyaW5nPih0cnVlLCBbXSk7XG5cbiAgICBTZWxlY3Rpb25VdGlsaXRpZXM6IHR5cGVvZiBTZWxlY3Rpb25VdGlsaXRpZXMgPSBTZWxlY3Rpb25VdGlsaXRpZXM7XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSBpbmplY3RvcjogRW52aXJvbm1lbnRJbmplY3RvcixcbiAgICAgICAgQEluamVjdChOR1hfSU5URVJOQUxfR0xPQkFMX0RFRkFVTFRfVkFMVUVTKVxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IGdsb2JhbENvbmZpZzogTmd4R2xvYmFsRGVmYXVsdFZhbHVlc1xuICAgICkge1xuICAgICAgICBzdXBlcigpO1xuICAgIH1cblxuICAgIG92ZXJyaWRlIGFzeW5jIG5nT25Jbml0KCk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICBzdXBlci5uZ09uSW5pdCgpO1xuICAgICAgICB0aGlzLm1ldGFkYXRhID0gbmV3IFJlZmVyZW5jZXNNYW55RGVjb3JhdG9yQ29uZmlnSW50ZXJuYWwodGhpcy5tZXRhZGF0YSwgdGhpcy5nbG9iYWxDb25maWcpO1xuICAgICAgICBSZWZsZWN0VXRpbGl0aWVzLmRlZmluZU1ldGFkYXRhKCdtZXRhZGF0YScsIHRoaXMubWV0YWRhdGEsIHRoaXMuZW50aXR5LCB0aGlzLmtleSk7XG4gICAgICAgIHRoaXMucHJvcGVydHlWYWx1ZSA9IHRoaXMucHJvcGVydHlWYWx1ZSA/PyBbXTtcbiAgICAgICAgY29uc3QgZ2l2ZW5EaXNwbGF5Q29sdW1uczogc3RyaW5nW10gPSB0aGlzLm1ldGFkYXRhLmRpc3BsYXlDb2x1bW5zLm1hcCgodikgPT4gdi5kaXNwbGF5TmFtZSk7XG4gICAgICAgIGlmIChnaXZlbkRpc3BsYXlDb2x1bW5zLmZpbmQocyA9PiBzID09PSAnc2VsZWN0JykpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgICAgICAgICBgVGhlIG5hbWUgXCJzZWxlY3RcIiBmb3IgYSBkaXNwbGF5IGNvbHVtbiBpcyByZXNlcnZlZC5cbiAgICAgICAgICAgICAgICBQbGVhc2UgY2hvb3NlIGEgZGlmZmVyZW50IG5hbWUuYFxuICAgICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmRpc3BsYXllZENvbHVtbnMgPSB0aGlzLmlzUmVhZE9ubHkgPyBnaXZlbkRpc3BsYXlDb2x1bW5zIDogWydzZWxlY3QnXS5jb25jYXQoZ2l2ZW5EaXNwbGF5Q29sdW1ucyk7XG4gICAgICAgIHRoaXMucmVmZXJlbmNlZEVudGl0aWVzRGF0YVNvdXJjZS5kYXRhID0gdGhpcy5wcm9wZXJ0eVZhbHVlO1xuXG4gICAgICAgIGF3YWl0IHRoaXMuaW5qZWN0b3IucnVuSW5Db250ZXh0KGFzeW5jICgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuYWxsUmVmZXJlbmNlZEVudGl0aWVzID0gYXdhaXQgdGhpcy5tZXRhZGF0YS5nZXRSZWZlcmVuY2VkRW50aXRpZXMoKSBhcyBFbnRpdHlUeXBlW107XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHRoaXMuYWxsRHJvcGRvd25WYWx1ZXMgPSB0aGlzLm1ldGFkYXRhLmdldERyb3Bkb3duVmFsdWVzKExvZGFzaFV0aWxpdGllcy5jbG9uZURlZXAodGhpcy5hbGxSZWZlcmVuY2VkRW50aXRpZXMpKTtcbiAgICAgICAgdGhpcy5kcm9wZG93blZhbHVlcyA9IExvZGFzaFV0aWxpdGllcy5jbG9uZURlZXAodGhpcy5hbGxEcm9wZG93blZhbHVlcyk7XG4gICAgICAgIGZvciAoY29uc3QgdmFsdWUgb2YgdGhpcy5wcm9wZXJ0eVZhbHVlKSB7XG4gICAgICAgICAgICBjb25zdCBmb3VuZFZhbHVlOiBEcm9wZG93blZhbHVlPHN0cmluZz4gfCB1bmRlZmluZWQgPSB0aGlzLmRyb3Bkb3duVmFsdWVzLmZpbmQodiA9PiB2LnZhbHVlID09PSB2YWx1ZSk7XG4gICAgICAgICAgICBpZiAoZm91bmRWYWx1ZSkge1xuICAgICAgICAgICAgICAgIHRoaXMuZHJvcGRvd25WYWx1ZXMuc3BsaWNlKHRoaXMuZHJvcGRvd25WYWx1ZXMuaW5kZXhPZihmb3VuZFZhbHVlKSwgMSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBHZXRzIHRoZSB2YWx1ZSB0byBkaXNwbGF5IGluIHRoZSBjb2x1bW4uXG4gICAgICogUnVucyBpbiBlbnZpcm9ubWVudCBjb250ZXh0IHRvIGVuYWJsZSBpbmplY3Rpb24uXG4gICAgICpcbiAgICAgKiBAcGFyYW0gZW50aXR5SWQgLSBUaGUgaWQgb2YgdGhlIGVudGl0eSB0byBnZXQgdGhlIHZhbHVlIGZyb20uXG4gICAgICogQHBhcmFtIGRpc3BsYXlDb2x1bW4gLSBUaGUgZGlzcGxheSBjb2x1bW4gdG8gZ2V0IHRoZSB2YWx1ZSBmcm9tLlxuICAgICAqIEByZXR1cm5zIFRoZSB2YWx1ZSBvZiB0aGUgZGlzcGxheSBjb2x1bW4uXG4gICAgICovXG4gICAgZ2V0RGlzcGxheUNvbHVtblZhbHVlKGVudGl0eUlkOiBzdHJpbmcsIGRpc3BsYXlDb2x1bW46IERpc3BsYXlDb2x1bW48RW50aXR5VHlwZT4pOiB1bmtub3duIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaW5qZWN0b3IucnVuSW5Db250ZXh0KCgpID0+IHtcbiAgICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW5zYWZlLWFyZ3VtZW50XG4gICAgICAgICAgICByZXR1cm4gZGlzcGxheUNvbHVtbi52YWx1ZSh0aGlzLm1ldGFkYXRhLmdldEVudGl0eUZvcklkKGVudGl0eUlkLCB0aGlzLmFsbFJlZmVyZW5jZWRFbnRpdGllcykpO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBhc3luYyBhZGQoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIHRoaXMucHJvcGVydHlWYWx1ZSA9IHRoaXMucHJvcGVydHlWYWx1ZSA/PyBbXTtcbiAgICAgICAgdGhpcy5wcm9wZXJ0eVZhbHVlLnB1c2goTG9kYXNoVXRpbGl0aWVzLmNsb25lRGVlcCh0aGlzLmlucHV0KSk7XG4gICAgICAgIGNvbnN0IGZvdW5kRHJvcGRvd25WYWx1ZTogRHJvcGRvd25WYWx1ZTxzdHJpbmc+ID0gdGhpcy5kcm9wZG93blZhbHVlcy5maW5kKHYgPT4gdi52YWx1ZSA9PT0gdGhpcy5pbnB1dCkgYXMgRHJvcGRvd25WYWx1ZTxzdHJpbmc+O1xuICAgICAgICB0aGlzLmRyb3Bkb3duVmFsdWVzLnNwbGljZSh0aGlzLmRyb3Bkb3duVmFsdWVzLmluZGV4T2YoZm91bmREcm9wZG93blZhbHVlKSwgMSk7XG4gICAgICAgIHRoaXMucmVmZXJlbmNlZEVudGl0aWVzRGF0YVNvdXJjZS5kYXRhID0gdGhpcy5wcm9wZXJ0eVZhbHVlO1xuICAgICAgICB0aGlzLmlucHV0ID0gJyc7XG4gICAgICAgIHRoaXMuZW1pdENoYW5nZSgpO1xuICAgIH1cblxuICAgIGFkZEFsbCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5wcm9wZXJ0eVZhbHVlID0gdGhpcy5hbGxEcm9wZG93blZhbHVlcy5tYXAoZHYgPT4gZHYudmFsdWUpO1xuICAgICAgICB0aGlzLmRyb3Bkb3duVmFsdWVzID0gW107XG4gICAgICAgIHRoaXMucmVmZXJlbmNlZEVudGl0aWVzRGF0YVNvdXJjZS5kYXRhID0gdGhpcy5wcm9wZXJ0eVZhbHVlO1xuICAgICAgICB0aGlzLmlucHV0ID0gJyc7XG4gICAgICAgIHRoaXMuZW1pdENoYW5nZSgpO1xuICAgIH1cblxuICAgIHJlbW92ZSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5zZWxlY3Rpb24uc2VsZWN0ZWQuZm9yRWFjaChzID0+IHtcbiAgICAgICAgICAgIHRoaXMucHJvcGVydHlWYWx1ZT8uc3BsaWNlKHRoaXMucHJvcGVydHlWYWx1ZS5pbmRleE9mKHMpLCAxKTtcbiAgICAgICAgICAgIGNvbnN0IGZvdW5kRHJvcGRvd25WYWx1ZTogRHJvcGRvd25WYWx1ZTxzdHJpbmc+IHwgdW5kZWZpbmVkID0gdGhpcy5hbGxEcm9wZG93blZhbHVlcy5maW5kKHYgPT4gdi52YWx1ZSA9PT0gcyk7XG4gICAgICAgICAgICBpZiAoZm91bmREcm9wZG93blZhbHVlKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5kcm9wZG93blZhbHVlcy5wdXNoKGZvdW5kRHJvcGRvd25WYWx1ZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLnJlZmVyZW5jZWRFbnRpdGllc0RhdGFTb3VyY2UuZGF0YSA9IHRoaXMucHJvcGVydHlWYWx1ZSA/PyBbXTtcbiAgICAgICAgdGhpcy5zZWxlY3Rpb24uY2xlYXIoKTtcbiAgICAgICAgdGhpcy5lbWl0Q2hhbmdlKCk7XG4gICAgfVxufSIsIjxkaXYgY2xhc3M9XCJtYXQtZWxldmF0aW9uLXo4IGVsZXZhdGlvbi1jb250YWluZXJcIj5cbiAgICA8ZGl2IGNsYXNzPVwiYXJyYXktaGVhZGxpbmVcIj5cbiAgICAgICAgPGI+e3ttZXRhZGF0YS5kaXNwbGF5TmFtZX19PC9iPlxuICAgIDwvZGl2PlxuXG4gICAgPG1hdC1mb3JtLWZpZWxkPlxuICAgICAgICA8bWF0LWxhYmVsPnt7bWV0YWRhdGEuZHJvcGRvd25MYWJlbH19PC9tYXQtbGFiZWw+XG4gICAgICAgIDxtYXQtc2VsZWN0IFsobmdNb2RlbCldPVwiaW5wdXRcIiBbbmFtZV09XCJrZXkudG9TdHJpbmcoKSArICdpbnB1dCcgKyB1dWlkXCIgI2lucHV0TW9kZWw9XCJuZ01vZGVsXCIgW2Rpc2FibGVkXT1cImlzUmVhZE9ubHlcIj5cbiAgICAgICAgICAgIDxtYXQtb3B0aW9uPi08L21hdC1vcHRpb24+XG4gICAgICAgICAgICA8bWF0LW9wdGlvbiAqbmdGb3I9XCJsZXQgdmFsdWUgb2YgZHJvcGRvd25WYWx1ZXNcIiBbdmFsdWVdPVwidmFsdWUudmFsdWVcIj57e3ZhbHVlLmRpc3BsYXlOYW1lfX08L21hdC1vcHRpb24+XG4gICAgICAgIDwvbWF0LXNlbGVjdD5cbiAgICAgICAgPG1hdC1lcnJvcj57e2dldFZhbGlkYXRpb25FcnJvck1lc3NhZ2UoaW5wdXRNb2RlbCl9fTwvbWF0LWVycm9yPlxuICAgIDwvbWF0LWZvcm0tZmllbGQ+XG5cbiAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiAqbmdJZj1cIm1ldGFkYXRhLmFkZEFsbFwiIHN0eWxlPVwibWFyZ2luLWxlZnQ6IDIwcHg7XCIgbWF0LXJhaXNlZC1idXR0b24gW2Rpc2FibGVkXT1cIiFkcm9wZG93blZhbHVlcy5sZW5ndGggfHwgaXNSZWFkT25seVwiIChjbGljayk9XCJhZGRBbGwoKVwiPlxuICAgICAgICB7e21ldGFkYXRhLmFkZEFsbEJ1dHRvbkxhYmVsfX1cbiAgICA8L2J1dHRvbj5cblxuICAgIDxkaXYgY2xhc3M9XCJidXR0b25zXCI+XG4gICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIG1hdC1yYWlzZWQtYnV0dG9uIFtkaXNhYmxlZF09XCIhaW5wdXRcIiAoY2xpY2spPVwiYWRkKClcIj5cbiAgICAgICAgICAgIHt7bWV0YWRhdGEuYWRkQnV0dG9uTGFiZWx9fVxuICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgbWF0LXJhaXNlZC1idXR0b24gW2Rpc2FibGVkXT1cIiFzZWxlY3Rpb24uc2VsZWN0ZWQubGVuZ3RoXCIgKGNsaWNrKT1cInJlbW92ZSgpXCI+XG4gICAgICAgICAgICB7e21ldGFkYXRhLnJlbW92ZUJ1dHRvbkxhYmVsfX1cbiAgICAgICAgPC9idXR0b24+XG4gICAgPC9kaXY+XG5cbiAgICA8bWF0LXRhYmxlIFtkYXRhU291cmNlXT1cInJlZmVyZW5jZWRFbnRpdGllc0RhdGFTb3VyY2VcIj5cbiAgICAgICAgPCEtLSBzZWxlY3QgQ29sdW1uIC0tPlxuICAgICAgICA8bmctY29udGFpbmVyIG1hdENvbHVtbkRlZj1cInNlbGVjdFwiICpuZ0lmPVwiIWlzUmVhZE9ubHlcIj5cbiAgICAgICAgICAgIDxtYXQtaGVhZGVyLWNlbGwgKm1hdEhlYWRlckNlbGxEZWY+XG4gICAgICAgICAgICAgICAgPG1hdC1jaGVja2JveFxuICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiIXJlZmVyZW5jZWRFbnRpdGllc0RhdGFTb3VyY2UuZGF0YS5sZW5ndGhcIiAoY2hhbmdlKT1cIiRldmVudCA/IFNlbGVjdGlvblV0aWxpdGllcy5tYXN0ZXJUb2dnbGUoc2VsZWN0aW9uLCByZWZlcmVuY2VkRW50aXRpZXNEYXRhU291cmNlKSA6IG51bGxcIlxuICAgICAgICAgICAgICAgICAgICBbY2hlY2tlZF09XCJzZWxlY3Rpb24uaGFzVmFsdWUoKSAmJiBTZWxlY3Rpb25VdGlsaXRpZXMuaXNBbGxTZWxlY3RlZChzZWxlY3Rpb24sIHJlZmVyZW5jZWRFbnRpdGllc0RhdGFTb3VyY2UpXCJcbiAgICAgICAgICAgICAgICAgICAgW2luZGV0ZXJtaW5hdGVdPVwic2VsZWN0aW9uLmhhc1ZhbHVlKCkgJiYgIVNlbGVjdGlvblV0aWxpdGllcy5pc0FsbFNlbGVjdGVkKHNlbGVjdGlvbiwgcmVmZXJlbmNlZEVudGl0aWVzRGF0YVNvdXJjZSlcIj5cbiAgICAgICAgICAgICAgICA8L21hdC1jaGVja2JveD5cbiAgICAgICAgICAgIDwvbWF0LWhlYWRlci1jZWxsPlxuICAgICAgICAgICAgPG1hdC1jZWxsICptYXRDZWxsRGVmPVwibGV0IGVudGl0eVwiPlxuICAgICAgICAgICAgICAgIDxtYXQtY2hlY2tib3ggKGNsaWNrKT1cIiRldmVudC5zdG9wUHJvcGFnYXRpb24oKVwiIChjaGFuZ2UpPVwiJGV2ZW50ID8gc2VsZWN0aW9uLnRvZ2dsZShlbnRpdHkpIDogbnVsbFwiIFtjaGVja2VkXT1cInNlbGVjdGlvbi5pc1NlbGVjdGVkKGVudGl0eSlcIj48L21hdC1jaGVja2JveD5cbiAgICAgICAgICAgIDwvbWF0LWNlbGw+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgIFxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBkQ29sIG9mIG1ldGFkYXRhLmRpc3BsYXlDb2x1bW5zXCIgW21hdENvbHVtbkRlZl09XCJkQ29sLmRpc3BsYXlOYW1lXCI+XG4gICAgICAgICAgICA8bWF0LWhlYWRlci1jZWxsICptYXRIZWFkZXJDZWxsRGVmPlxuICAgICAgICAgICAgICAgIHt7ZENvbC5kaXNwbGF5TmFtZX19XG4gICAgICAgICAgICA8L21hdC1oZWFkZXItY2VsbD5cbiAgICAgICAgICAgIDxtYXQtY2VsbCBjbGFzcz1cImVudGl0eVwiICptYXRDZWxsRGVmPVwibGV0IGVudGl0eUlkXCI+XG4gICAgICAgICAgICAgICAge3tnZXREaXNwbGF5Q29sdW1uVmFsdWUoZW50aXR5SWQsIGRDb2wpfX1cbiAgICAgICAgICAgIDwvbWF0LWNlbGw+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgIFxuICAgICAgICA8bWF0LWhlYWRlci1yb3cgKm1hdEhlYWRlclJvd0RlZj1cImRpc3BsYXllZENvbHVtbnNcIj48L21hdC1oZWFkZXItcm93PlxuICAgICAgICA8bWF0LXJvdyAqbWF0Um93RGVmPVwibGV0IHJvdzsgY29sdW1uczogZGlzcGxheWVkQ29sdW1uc1wiPjwvbWF0LXJvdz5cbiAgICA8L21hdC10YWJsZT5cbjwvZGl2PiJdfQ==
117
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVmZXJlbmNlcy1tYW55LWlucHV0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1tYXRlcmlhbC1lbnRpdHkvc3JjL2NvbXBvbmVudHMvaW5wdXQvcmVsYXRpb25zL3JlZmVyZW5jZXMtbWFueS1pbnB1dC9yZWZlcmVuY2VzLW1hbnktaW5wdXQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LW1hdGVyaWFsLWVudGl0eS9zcmMvY29tcG9uZW50cy9pbnB1dC9yZWxhdGlvbnMvcmVmZXJlbmNlcy1tYW55LWlucHV0L3JlZmVyZW5jZXMtbWFueS1pbnB1dC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSx3Q0FBd0M7QUFDeEMsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQzFELE9BQU8sRUFBRSxTQUFTLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxFQUFVLHFCQUFxQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3RHLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBSTdELE9BQU8sRUFBRSxxQ0FBcUMsRUFBRSxNQUFNLGdGQUFnRixDQUFDO0FBQ3ZJLE9BQU8sRUFBRSxrQ0FBa0MsRUFBRSxNQUFNLGlEQUFpRCxDQUFDO0FBQ3JHLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSw0Q0FBNEMsQ0FBQztBQUM3RSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSw2Q0FBNkMsQ0FBQztBQUUvRSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSwyQ0FBMkMsQ0FBQztBQUUvRSxPQUFPLEVBQUUsOEJBQThCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQzs7Ozs7Ozs7OztBQUU1RSwrREFBK0Q7QUFNL0QsTUFBTSxPQUFPLDRCQUNULFNBQVEsOEJBQW9GO0lBbUJ2RTtJQUVB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IGVzbGludC1kaXNhYmxlIGpzZG9jL3JlcXVpcmUtanNkb2MgKi9cbmltcG9ydCB7IFNlbGVjdGlvbk1vZGVsIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2NvbGxlY3Rpb25zJztcbmltcG9ydCB7IENvbXBvbmVudCwgRW52aXJvbm1lbnRJbmplY3RvciwgSW5qZWN0LCBPbkluaXQsIHJ1bkluSW5qZWN0aW9uQ29udGV4dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTWF0VGFibGVEYXRhU291cmNlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvdGFibGUnO1xuaW1wb3J0IHsgQmFzZUVudGl0eVR5cGUgfSBmcm9tICcuLi8uLi8uLi8uLi9jbGFzc2VzL2VudGl0eS5tb2RlbCc7XG5pbXBvcnQgeyBEZWNvcmF0b3JUeXBlcyB9IGZyb20gJy4uLy4uLy4uLy4uL2RlY29yYXRvcnMvYmFzZS9kZWNvcmF0b3ItdHlwZXMuZW51bSc7XG5pbXBvcnQgeyBEcm9wZG93blZhbHVlIH0gZnJvbSAnLi4vLi4vLi4vLi4vZGVjb3JhdG9ycy9iYXNlL2Ryb3Bkb3duLXZhbHVlLmludGVyZmFjZSc7XG5pbXBvcnQgeyBSZWZlcmVuY2VzTWFueURlY29yYXRvckNvbmZpZ0ludGVybmFsIH0gZnJvbSAnLi4vLi4vLi4vLi4vZGVjb3JhdG9ycy9yZWZlcmVuY2VzLW1hbnkvcmVmZXJlbmNlcy1tYW55LWRlY29yYXRvci1pbnRlcm5hbC5kYXRhJztcbmltcG9ydCB7IE5HWF9JTlRFUk5BTF9HTE9CQUxfREVGQVVMVF9WQUxVRVMgfSBmcm9tICcuLi8uLi8uLi8uLi9kZWZhdWx0LWdsb2JhbC1jb25maWd1cmF0aW9uLXZhbHVlcyc7XG5pbXBvcnQgeyBMb2Rhc2hVdGlsaXRpZXMgfSBmcm9tICcuLi8uLi8uLi8uLi9lbmNhcHN1bGF0aW9uL2xvZGFzaC51dGlsaXRpZXMnO1xuaW1wb3J0IHsgUmVmbGVjdFV0aWxpdGllcyB9IGZyb20gJy4uLy4uLy4uLy4uL2VuY2Fwc3VsYXRpb24vcmVmbGVjdC51dGlsaXRpZXMnO1xuaW1wb3J0IHsgTmd4R2xvYmFsRGVmYXVsdFZhbHVlcyB9IGZyb20gJy4uLy4uLy4uLy4uL2dsb2JhbC1jb25maWd1cmF0aW9uLXZhbHVlcyc7XG5pbXBvcnQgeyBTZWxlY3Rpb25VdGlsaXRpZXMgfSBmcm9tICcuLi8uLi8uLi8uLi91dGlsaXRpZXMvc2VsZWN0aW9uLnV0aWxpdGllcyc7XG5pbXBvcnQgeyBEaXNwbGF5Q29sdW1uIH0gZnJvbSAnLi4vLi4vLi4vdGFibGUvdGFibGUtZGF0YSc7XG5pbXBvcnQgeyBOZ3hNYXRFbnRpdHlCYXNlSW5wdXRDb21wb25lbnQgfSBmcm9tICcuLi8uLi9iYXNlLWlucHV0LmNvbXBvbmVudCc7XG5cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBhbmd1bGFyL3ByZWZlci1zdGFuZGFsb25lLWNvbXBvbmVudFxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdyZWZlcmVuY2VzLW1hbnktaW5wdXQnLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9yZWZlcmVuY2VzLW1hbnktaW5wdXQuY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsczogWycuL3JlZmVyZW5jZXMtbWFueS1pbnB1dC5jb21wb25lbnQuc2NzcyddXG59KVxuZXhwb3J0IGNsYXNzIFJlZmVyZW5jZXNNYW55SW5wdXRDb21wb25lbnQ8RW50aXR5VHlwZSBleHRlbmRzIEJhc2VFbnRpdHlUeXBlPEVudGl0eVR5cGU+PlxuICAgIGV4dGVuZHMgTmd4TWF0RW50aXR5QmFzZUlucHV0Q29tcG9uZW50PEVudGl0eVR5cGUsIERlY29yYXRvclR5cGVzLlJFRkVSRU5DRVNfTUFOWSwgc3RyaW5nW10+IGltcGxlbWVudHMgT25Jbml0IHtcblxuICAgIGFsbFJlZmVyZW5jZWRFbnRpdGllczogRW50aXR5VHlwZVtdID0gW107XG5cbiAgICBhbGxEcm9wZG93blZhbHVlczogRHJvcGRvd25WYWx1ZTxzdHJpbmc+W10gPSBbXTtcblxuICAgIGRyb3Bkb3duVmFsdWVzOiBEcm9wZG93blZhbHVlPHN0cmluZz5bXSA9IFtdO1xuXG4gICAgaW5wdXQ6IHN0cmluZyA9ICcnO1xuXG4gICAgcmVmZXJlbmNlZEVudGl0aWVzRGF0YVNvdXJjZTogTWF0VGFibGVEYXRhU291cmNlPHN0cmluZz4gPSBuZXcgTWF0VGFibGVEYXRhU291cmNlKCk7XG5cbiAgICBkaXNwbGF5ZWRDb2x1bW5zITogc3RyaW5nW107XG5cbiAgICBzZWxlY3Rpb246IFNlbGVjdGlvbk1vZGVsPHN0cmluZz4gPSBuZXcgU2VsZWN0aW9uTW9kZWw8c3RyaW5nPih0cnVlLCBbXSk7XG5cbiAgICBTZWxlY3Rpb25VdGlsaXRpZXM6IHR5cGVvZiBTZWxlY3Rpb25VdGlsaXRpZXMgPSBTZWxlY3Rpb25VdGlsaXRpZXM7XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSBpbmplY3RvcjogRW52aXJvbm1lbnRJbmplY3RvcixcbiAgICAgICAgQEluamVjdChOR1hfSU5URVJOQUxfR0xPQkFMX0RFRkFVTFRfVkFMVUVTKVxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IGdsb2JhbENvbmZpZzogTmd4R2xvYmFsRGVmYXVsdFZhbHVlc1xuICAgICkge1xuICAgICAgICBzdXBlcigpO1xuICAgIH1cblxuICAgIG92ZXJyaWRlIGFzeW5jIG5nT25Jbml0KCk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICBzdXBlci5uZ09uSW5pdCgpO1xuICAgICAgICB0aGlzLm1ldGFkYXRhID0gbmV3IFJlZmVyZW5jZXNNYW55RGVjb3JhdG9yQ29uZmlnSW50ZXJuYWwodGhpcy5tZXRhZGF0YSwgdGhpcy5nbG9iYWxDb25maWcpO1xuICAgICAgICBSZWZsZWN0VXRpbGl0aWVzLmRlZmluZU1ldGFkYXRhKCdtZXRhZGF0YScsIHRoaXMubWV0YWRhdGEsIHRoaXMuZW50aXR5LCB0aGlzLmtleSk7XG4gICAgICAgIGNvbnN0IGdpdmVuRGlzcGxheUNvbHVtbnM6IHN0cmluZ1tdID0gdGhpcy5tZXRhZGF0YS5kaXNwbGF5Q29sdW1ucy5tYXAoKHYpID0+IHYuZGlzcGxheU5hbWUpO1xuICAgICAgICBpZiAoZ2l2ZW5EaXNwbGF5Q29sdW1ucy5maW5kKHMgPT4gcyA9PT0gJ3NlbGVjdCcpKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICAgICAgICAgYFRoZSBuYW1lIFwic2VsZWN0XCIgZm9yIGEgZGlzcGxheSBjb2x1bW4gaXMgcmVzZXJ2ZWQuXG4gICAgICAgICAgICAgICAgUGxlYXNlIGNob29zZSBhIGRpZmZlcmVudCBuYW1lLmBcbiAgICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5kaXNwbGF5ZWRDb2x1bW5zID0gdGhpcy5pc1JlYWRPbmx5ID8gZ2l2ZW5EaXNwbGF5Q29sdW1ucyA6IFsnc2VsZWN0J10uY29uY2F0KGdpdmVuRGlzcGxheUNvbHVtbnMpO1xuICAgICAgICB0aGlzLnJlZmVyZW5jZWRFbnRpdGllc0RhdGFTb3VyY2UuZGF0YSA9IHRoaXMucHJvcGVydHlWYWx1ZSA/PyBbXTtcblxuICAgICAgICBhd2FpdCBydW5JbkluamVjdGlvbkNvbnRleHQodGhpcy5pbmplY3RvciwgYXN5bmMgKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5hbGxSZWZlcmVuY2VkRW50aXRpZXMgPSBhd2FpdCB0aGlzLm1ldGFkYXRhLmdldFJlZmVyZW5jZWRFbnRpdGllcygpIGFzIEVudGl0eVR5cGVbXTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgdGhpcy5hbGxEcm9wZG93blZhbHVlcyA9IHRoaXMubWV0YWRhdGEuZ2V0RHJvcGRvd25WYWx1ZXMoTG9kYXNoVXRpbGl0aWVzLmNsb25lRGVlcCh0aGlzLmFsbFJlZmVyZW5jZWRFbnRpdGllcykpO1xuICAgICAgICB0aGlzLmRyb3Bkb3duVmFsdWVzID0gTG9kYXNoVXRpbGl0aWVzLmNsb25lRGVlcCh0aGlzLmFsbERyb3Bkb3duVmFsdWVzKTtcbiAgICAgICAgZm9yIChjb25zdCB2YWx1ZSBvZiB0aGlzLnJlZmVyZW5jZWRFbnRpdGllc0RhdGFTb3VyY2UuZGF0YSkge1xuICAgICAgICAgICAgY29uc3QgZm91bmRWYWx1ZTogRHJvcGRvd25WYWx1ZTxzdHJpbmc+IHwgdW5kZWZpbmVkID0gdGhpcy5kcm9wZG93blZhbHVlcy5maW5kKHYgPT4gdi52YWx1ZSA9PT0gdmFsdWUpO1xuICAgICAgICAgICAgaWYgKGZvdW5kVmFsdWUpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmRyb3Bkb3duVmFsdWVzLnNwbGljZSh0aGlzLmRyb3Bkb3duVmFsdWVzLmluZGV4T2YoZm91bmRWYWx1ZSksIDEpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogR2V0cyB0aGUgdmFsdWUgdG8gZGlzcGxheSBpbiB0aGUgY29sdW1uLlxuICAgICAqIFJ1bnMgaW4gZW52aXJvbm1lbnQgY29udGV4dCB0byBlbmFibGUgaW5qZWN0aW9uLlxuICAgICAqIEBwYXJhbSBlbnRpdHlJZCAtIFRoZSBpZCBvZiB0aGUgZW50aXR5IHRvIGdldCB0aGUgdmFsdWUgZnJvbS5cbiAgICAgKiBAcGFyYW0gZGlzcGxheUNvbHVtbiAtIFRoZSBkaXNwbGF5IGNvbHVtbiB0byBnZXQgdGhlIHZhbHVlIGZyb20uXG4gICAgICogQHJldHVybnMgVGhlIHZhbHVlIG9mIHRoZSBkaXNwbGF5IGNvbHVtbi5cbiAgICAgKi9cbiAgICBnZXREaXNwbGF5Q29sdW1uVmFsdWUoZW50aXR5SWQ6IHN0cmluZywgZGlzcGxheUNvbHVtbjogRGlzcGxheUNvbHVtbjxFbnRpdHlUeXBlPik6IHVua25vd24ge1xuICAgICAgICByZXR1cm4gcnVuSW5JbmplY3Rpb25Db250ZXh0KHRoaXMuaW5qZWN0b3IsICgpID0+IHtcbiAgICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSB0eXBlc2NyaXB0L25vLXVuc2FmZS1hcmd1bWVudFxuICAgICAgICAgICAgcmV0dXJuIGRpc3BsYXlDb2x1bW4udmFsdWUodGhpcy5tZXRhZGF0YS5nZXRFbnRpdHlGb3JJZChlbnRpdHlJZCwgdGhpcy5hbGxSZWZlcmVuY2VkRW50aXRpZXMpKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgYXN5bmMgYWRkKCk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICB0aGlzLnByb3BlcnR5VmFsdWUgPSB0aGlzLnByb3BlcnR5VmFsdWUgPz8gW107XG4gICAgICAgIHRoaXMucHJvcGVydHlWYWx1ZS5wdXNoKExvZGFzaFV0aWxpdGllcy5jbG9uZURlZXAodGhpcy5pbnB1dCkpO1xuICAgICAgICBjb25zdCBmb3VuZERyb3Bkb3duVmFsdWU6IERyb3Bkb3duVmFsdWU8c3RyaW5nPiA9IHRoaXMuZHJvcGRvd25WYWx1ZXMuZmluZCh2ID0+IHYudmFsdWUgPT09IHRoaXMuaW5wdXQpIGFzIERyb3Bkb3duVmFsdWU8c3RyaW5nPjtcbiAgICAgICAgdGhpcy5kcm9wZG93blZhbHVlcy5zcGxpY2UodGhpcy5kcm9wZG93blZhbHVlcy5pbmRleE9mKGZvdW5kRHJvcGRvd25WYWx1ZSksIDEpO1xuICAgICAgICB0aGlzLnJlZmVyZW5jZWRFbnRpdGllc0RhdGFTb3VyY2UuZGF0YSA9IHRoaXMucHJvcGVydHlWYWx1ZTtcbiAgICAgICAgdGhpcy5pbnB1dCA9ICcnO1xuICAgICAgICB0aGlzLmVtaXRDaGFuZ2UoKTtcbiAgICB9XG5cbiAgICBhZGRBbGwoKTogdm9pZCB7XG4gICAgICAgIHRoaXMucHJvcGVydHlWYWx1ZSA9IHRoaXMuYWxsRHJvcGRvd25WYWx1ZXMubWFwKGR2ID0+IGR2LnZhbHVlKTtcbiAgICAgICAgaWYgKCF0aGlzLnByb3BlcnR5VmFsdWUubGVuZ3RoKSB7XG4gICAgICAgICAgICB0aGlzLnByb3BlcnR5VmFsdWUgPSB1bmRlZmluZWQ7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5kcm9wZG93blZhbHVlcyA9IFtdO1xuICAgICAgICB0aGlzLnJlZmVyZW5jZWRFbnRpdGllc0RhdGFTb3VyY2UuZGF0YSA9IHRoaXMucHJvcGVydHlWYWx1ZSA/PyBbXTtcbiAgICAgICAgdGhpcy5pbnB1dCA9ICcnO1xuICAgICAgICB0aGlzLmVtaXRDaGFuZ2UoKTtcbiAgICB9XG5cbiAgICByZW1vdmUoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuc2VsZWN0aW9uLnNlbGVjdGVkLmZvckVhY2gocyA9PiB7XG4gICAgICAgICAgICB0aGlzLnByb3BlcnR5VmFsdWU/LnNwbGljZSh0aGlzLnByb3BlcnR5VmFsdWUuaW5kZXhPZihzKSwgMSk7XG4gICAgICAgICAgICBjb25zdCBmb3VuZERyb3Bkb3duVmFsdWU6IERyb3Bkb3duVmFsdWU8c3RyaW5nPiB8IHVuZGVmaW5lZCA9IHRoaXMuYWxsRHJvcGRvd25WYWx1ZXMuZmluZCh2ID0+IHYudmFsdWUgPT09IHMpO1xuICAgICAgICAgICAgaWYgKGZvdW5kRHJvcGRvd25WYWx1ZSkge1xuICAgICAgICAgICAgICAgIHRoaXMuZHJvcGRvd25WYWx1ZXMucHVzaChmb3VuZERyb3Bkb3duVmFsdWUpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgaWYgKCF0aGlzLnByb3BlcnR5VmFsdWU/Lmxlbmd0aCkge1xuICAgICAgICAgICAgdGhpcy5wcm9wZXJ0eVZhbHVlID0gdW5kZWZpbmVkO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMucmVmZXJlbmNlZEVudGl0aWVzRGF0YVNvdXJjZS5kYXRhID0gdGhpcy5wcm9wZXJ0eVZhbHVlID8/IFtdO1xuICAgICAgICB0aGlzLnNlbGVjdGlvbi5jbGVhcigpO1xuICAgICAgICB0aGlzLmVtaXRDaGFuZ2UoKTtcbiAgICB9XG59IiwiPCEtLSBlc2xpbnQtZGlzYWJsZSBhbmd1bGFyL25vLWNhbGwtZXhwcmVzc2lvbiAtLT5cbjxkaXYgY2xhc3M9XCJtYXQtZWxldmF0aW9uLXo4IGVsZXZhdGlvbi1jb250YWluZXJcIj5cbiAgICA8ZGl2IGNsYXNzPVwiYXJyYXktaGVhZGxpbmVcIj5cbiAgICAgICAgPGI+e3ttZXRhZGF0YS5kaXNwbGF5TmFtZX19PC9iPlxuICAgIDwvZGl2PlxuXG4gICAgPG1hdC1mb3JtLWZpZWxkPlxuICAgICAgICA8bWF0LWxhYmVsPnt7bWV0YWRhdGEuZHJvcGRvd25MYWJlbH19PC9tYXQtbGFiZWw+XG4gICAgICAgIDxtYXQtc2VsZWN0ICNpbnB1dE1vZGVsPVwibmdNb2RlbFwiIFtuYW1lXT1cIm5hbWUgKyAnaW5wdXQnXCIgW2Rpc2FibGVkXT1cImlzUmVhZE9ubHlcIiBbKG5nTW9kZWwpXT1cImlucHV0XCI+XG4gICAgICAgICAgICA8bWF0LW9wdGlvbj4tPC9tYXQtb3B0aW9uPlxuICAgICAgICAgICAgPG1hdC1vcHRpb24gKm5nRm9yPVwibGV0IHZhbHVlIG9mIGRyb3Bkb3duVmFsdWVzXCIgW3ZhbHVlXT1cInZhbHVlLnZhbHVlXCI+e3t2YWx1ZS5kaXNwbGF5TmFtZX19PC9tYXQtb3B0aW9uPlxuICAgICAgICA8L21hdC1zZWxlY3Q+XG4gICAgICAgIDxtYXQtZXJyb3I+e3tnZXRWYWxpZGF0aW9uRXJyb3JNZXNzYWdlKGlucHV0TW9kZWwpfX08L21hdC1lcnJvcj5cbiAgICA8L21hdC1mb3JtLWZpZWxkPlxuXG4gICAgPGJ1dHRvbiAqbmdJZj1cIm1ldGFkYXRhLmFkZEFsbFwiIHR5cGU9XCJidXR0b25cIiBzdHlsZT1cIm1hcmdpbi1sZWZ0OiAyMHB4O1wiIG1hdC1yYWlzZWQtYnV0dG9uIFtkaXNhYmxlZF09XCIhZHJvcGRvd25WYWx1ZXMubGVuZ3RoIHx8IGlzUmVhZE9ubHlcIiAoY2xpY2spPVwiYWRkQWxsKClcIj5cbiAgICAgICAge3ttZXRhZGF0YS5hZGRBbGxCdXR0b25MYWJlbH19XG4gICAgPC9idXR0b24+XG5cbiAgICA8ZGl2IGNsYXNzPVwiYnV0dG9uc1wiPlxuICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBtYXQtcmFpc2VkLWJ1dHRvbiBbZGlzYWJsZWRdPVwiIWlucHV0XCIgKGNsaWNrKT1cImFkZCgpXCI+XG4gICAgICAgICAgICB7e21ldGFkYXRhLmFkZEJ1dHRvbkxhYmVsfX1cbiAgICAgICAgPC9idXR0b24+XG4gICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIG1hdC1yYWlzZWQtYnV0dG9uIFtkaXNhYmxlZF09XCIhc2VsZWN0aW9uLnNlbGVjdGVkLmxlbmd0aFwiIChjbGljayk9XCJyZW1vdmUoKVwiPlxuICAgICAgICAgICAge3ttZXRhZGF0YS5yZW1vdmVCdXR0b25MYWJlbH19XG4gICAgICAgIDwvYnV0dG9uPlxuICAgIDwvZGl2PlxuXG4gICAgPG1hdC10YWJsZSBbZGF0YVNvdXJjZV09XCJyZWZlcmVuY2VkRW50aXRpZXNEYXRhU291cmNlXCI+XG4gICAgICAgIDwhLS0gc2VsZWN0IENvbHVtbiAtLT5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFpc1JlYWRPbmx5XCIgbWF0Q29sdW1uRGVmPVwic2VsZWN0XCI+XG4gICAgICAgICAgICA8bWF0LWhlYWRlci1jZWxsICptYXRIZWFkZXJDZWxsRGVmPlxuICAgICAgICAgICAgICAgIDxtYXQtY2hlY2tib3hcbiAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cIiFyZWZlcmVuY2VkRW50aXRpZXNEYXRhU291cmNlLmRhdGEubGVuZ3RoXCIgW2NoZWNrZWRdPVwic2VsZWN0aW9uLmhhc1ZhbHVlKCkgJiYgU2VsZWN0aW9uVXRpbGl0aWVzLmlzQWxsU2VsZWN0ZWQoc2VsZWN0aW9uLCByZWZlcmVuY2VkRW50aXRpZXNEYXRhU291cmNlKVwiXG4gICAgICAgICAgICAgICAgICAgIFtpbmRldGVybWluYXRlXT1cInNlbGVjdGlvbi5oYXNWYWx1ZSgpICYmICFTZWxlY3Rpb25VdGlsaXRpZXMuaXNBbGxTZWxlY3RlZChzZWxlY3Rpb24sIHJlZmVyZW5jZWRFbnRpdGllc0RhdGFTb3VyY2UpXCJcbiAgICAgICAgICAgICAgICAgICAgKGNoYW5nZSk9XCIkZXZlbnQgPyBTZWxlY3Rpb25VdGlsaXRpZXMubWFzdGVyVG9nZ2xlKHNlbGVjdGlvbiwgcmVmZXJlbmNlZEVudGl0aWVzRGF0YVNvdXJjZSkgOiBudWxsXCI+XG4gICAgICAgICAgICAgICAgPC9tYXQtY2hlY2tib3g+XG4gICAgICAgICAgICA8L21hdC1oZWFkZXItY2VsbD5cbiAgICAgICAgICAgIDxtYXQtY2VsbCAqbWF0Q2VsbERlZj1cImxldCBlbnRpdHlcIj5cbiAgICAgICAgICAgICAgICA8bWF0LWNoZWNrYm94IFtjaGVja2VkXT1cInNlbGVjdGlvbi5pc1NlbGVjdGVkKGVudGl0eSlcIiAoY2xpY2spPVwiJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXCIgKGNoYW5nZSk9XCIkZXZlbnQgPyBzZWxlY3Rpb24udG9nZ2xlKGVudGl0eSkgOiBudWxsXCI+PC9tYXQtY2hlY2tib3g+XG4gICAgICAgICAgICA8L21hdC1jZWxsPlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICBcbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgZENvbCBvZiBtZXRhZGF0YS5kaXNwbGF5Q29sdW1uc1wiIFttYXRDb2x1bW5EZWZdPVwiZENvbC5kaXNwbGF5TmFtZVwiPlxuICAgICAgICAgICAgPG1hdC1oZWFkZXItY2VsbCAqbWF0SGVhZGVyQ2VsbERlZj5cbiAgICAgICAgICAgICAgICB7e2RDb2wuZGlzcGxheU5hbWV9fVxuICAgICAgICAgICAgPC9tYXQtaGVhZGVyLWNlbGw+XG4gICAgICAgICAgICA8bWF0LWNlbGwgKm1hdENlbGxEZWY9XCJsZXQgZW50aXR5SWRcIiBjbGFzcz1cImVudGl0eVwiPlxuICAgICAgICAgICAgICAgIHt7Z2V0RGlzcGxheUNvbHVtblZhbHVlKGVudGl0eUlkLCBkQ29sKX19XG4gICAgICAgICAgICA8L21hdC1jZWxsPlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICBcbiAgICAgICAgPG1hdC1oZWFkZXItcm93ICptYXRIZWFkZXJSb3dEZWY9XCJkaXNwbGF5ZWRDb2x1bW5zXCI+PC9tYXQtaGVhZGVyLXJvdz5cbiAgICAgICAgPG1hdC1yb3cgKm1hdFJvd0RlZj1cImxldCByb3c7IGNvbHVtbnM6IGRpc3BsYXllZENvbHVtbnNcIj48L21hdC1yb3c+XG4gICAgPC9tYXQtdGFibGU+XG48L2Rpdj4iXX0=
@@ -4,11 +4,13 @@ import { LodashUtilities } from '../../../../encapsulation/lodash.utilities';
4
4
  import { NgxMatEntityBaseInputComponent } from '../../base-input.component';
5
5
  import * as i0 from "@angular/core";
6
6
  import * as i1 from "@angular/common";
7
- import * as i2 from "@angular/material/input";
8
- import * as i3 from "@angular/material/form-field";
9
- import * as i4 from "@angular/forms";
7
+ import * as i2 from "@angular/forms";
8
+ import * as i3 from "../../../../directives/included-in.directive";
9
+ import * as i4 from "@angular/material/autocomplete";
10
10
  import * as i5 from "@angular/material/core";
11
- import * as i6 from "@angular/material/autocomplete";
11
+ import * as i6 from "@angular/material/form-field";
12
+ import * as i7 from "@angular/material/input";
13
+ // eslint-disable-next-line angular/prefer-standalone-component
12
14
  export class StringAutocompleteInputComponent extends NgxMatEntityBaseInputComponent {
13
15
  autocompleteStrings;
14
16
  filteredAutocompleteStrings;
@@ -19,18 +21,20 @@ export class StringAutocompleteInputComponent extends NgxMatEntityBaseInputCompo
19
21
  }
20
22
  /**
21
23
  * Dynamically filters the Autocomplete options when the user inputs something.
22
- *
23
24
  * @param input - The input of the user.
24
25
  */
25
26
  filterAutocompleteStrings(input) {
26
27
  const searchString = input ?? '';
27
28
  this.filteredAutocompleteStrings = this.autocompleteStrings.filter(s => s.toLowerCase().includes(searchString.toLowerCase()));
29
+ if (!this.filteredAutocompleteStrings.length) {
30
+ this.filteredAutocompleteStrings = LodashUtilities.cloneDeep(this.autocompleteStrings);
31
+ }
28
32
  }
29
33
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.0", ngImport: i0, type: StringAutocompleteInputComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
30
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.0", type: StringAutocompleteInputComponent, selector: "string-autocomplete-input", usesInheritance: true, ngImport: i0, template: "<mat-form-field>\n <mat-label>{{metadata.displayName}}</mat-label>\n <input\n matInput\n [(ngModel)]=\"propertyValue\"\n [name]=\"key.toString() + uuid\"\n #model=\"ngModel\"\n [matAutocomplete]=\"auto\"\n (keyup)=\"filterAutocompleteStrings(propertyValue)\"\n [required]=\"metadata.required(entity)\"\n [minlength]=\"metadata.minLength ?? null\"\n [maxlength]=\"metadata.maxLength ?? null\"\n [pattern]=\"metadata.regex ?? '[\\\\s\\\\S]*'\"\n (ngModelChange)=\"emitChange()\"\n [disabled]=\"isReadOnly\"\n >\n <mat-autocomplete #auto=\"matAutocomplete\">\n <mat-option *ngFor=\"let value of filteredAutocompleteStrings\" [value]=\"value\">\n {{value}}\n </mat-option>\n </mat-autocomplete>\n <mat-error>{{getValidationErrorMessage(model)}}</mat-error>\n</mat-form-field>", styles: ["mat-form-field{width:100%}\n"], dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.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: i3.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i3.MatLabel, selector: "mat-label" }, { kind: "directive", type: i3.MatError, selector: "mat-error, [matError]", inputs: ["id"] }, { kind: "directive", type: i4.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i4.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i4.MinLengthValidator, selector: "[minlength][formControlName],[minlength][formControl],[minlength][ngModel]", inputs: ["minlength"] }, { kind: "directive", type: i4.MaxLengthValidator, selector: "[maxlength][formControlName],[maxlength][formControl],[maxlength][ngModel]", inputs: ["maxlength"] }, { kind: "directive", type: i4.PatternValidator, selector: "[pattern][formControlName],[pattern][formControl],[pattern][ngModel]", inputs: ["pattern"] }, { kind: "directive", type: i4.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i5.MatOption, selector: "mat-option", exportAs: ["matOption"] }, { kind: "component", type: i6.MatAutocomplete, selector: "mat-autocomplete", inputs: ["disableRipple", "hideSingleSelectionIndicator"], exportAs: ["matAutocomplete"] }, { kind: "directive", type: i6.MatAutocompleteTrigger, selector: "input[matAutocomplete], textarea[matAutocomplete]", exportAs: ["matAutocompleteTrigger"] }] });
34
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.0", type: StringAutocompleteInputComponent, selector: "string-autocomplete-input", usesInheritance: true, ngImport: i0, template: "<!-- eslint-disable angular/no-call-expression -->\n<mat-form-field>\n <mat-label>{{metadata.displayName}}</mat-label>\n <input\n #model=\"ngModel\"\n matInput\n [name]=\"name\"\n [matAutocomplete]=\"auto\"\n [required]=\"metadata.required(entity)\"\n [minlength]=\"metadata.minLength ?? null\"\n [maxlength]=\"metadata.maxLength ?? null\"\n [pattern]=\"metadata.regex ?? '[\\\\s\\\\S]*'\"\n [disabled]=\"isReadOnly\"\n [includedIn]=\"metadata.restrictToOptions ? autocompleteStrings : undefined\"\n [(ngModel)]=\"propertyValue\"\n (keyup)=\"filterAutocompleteStrings(propertyValue)\"\n (ngModelChange)=\"emitChange()\"\n >\n <mat-autocomplete #auto=\"matAutocomplete\">\n <mat-option *ngFor=\"let value of filteredAutocompleteStrings\" [value]=\"value\">\n {{value}}\n </mat-option>\n </mat-autocomplete>\n <mat-error>{{getValidationErrorMessage(model)}}</mat-error>\n</mat-form-field>", styles: ["mat-form-field{width:100%}\n"], dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i2.MinLengthValidator, selector: "[minlength][formControlName],[minlength][formControl],[minlength][ngModel]", inputs: ["minlength"] }, { kind: "directive", type: i2.MaxLengthValidator, selector: "[maxlength][formControlName],[maxlength][formControl],[maxlength][ngModel]", inputs: ["maxlength"] }, { kind: "directive", type: i2.PatternValidator, selector: "[pattern][formControlName],[pattern][formControl],[pattern][ngModel]", inputs: ["pattern"] }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i3.IncludedInValidatorDirective, selector: "[includedIn]", inputs: ["includedIn"] }, { kind: "component", type: i4.MatAutocomplete, selector: "mat-autocomplete", inputs: ["disableRipple", "hideSingleSelectionIndicator"], exportAs: ["matAutocomplete"] }, { kind: "component", type: i5.MatOption, selector: "mat-option", exportAs: ["matOption"] }, { kind: "directive", type: i4.MatAutocompleteTrigger, selector: "input[matAutocomplete], textarea[matAutocomplete]", exportAs: ["matAutocompleteTrigger"] }, { kind: "component", type: i6.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i6.MatLabel, selector: "mat-label" }, { kind: "directive", type: i6.MatError, selector: "mat-error, [matError]", inputs: ["id"] }, { kind: "directive", type: i7.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"] }] });
31
35
  }
32
36
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.0", ngImport: i0, type: StringAutocompleteInputComponent, decorators: [{
33
37
  type: Component,
34
- args: [{ selector: 'string-autocomplete-input', template: "<mat-form-field>\n <mat-label>{{metadata.displayName}}</mat-label>\n <input\n matInput\n [(ngModel)]=\"propertyValue\"\n [name]=\"key.toString() + uuid\"\n #model=\"ngModel\"\n [matAutocomplete]=\"auto\"\n (keyup)=\"filterAutocompleteStrings(propertyValue)\"\n [required]=\"metadata.required(entity)\"\n [minlength]=\"metadata.minLength ?? null\"\n [maxlength]=\"metadata.maxLength ?? null\"\n [pattern]=\"metadata.regex ?? '[\\\\s\\\\S]*'\"\n (ngModelChange)=\"emitChange()\"\n [disabled]=\"isReadOnly\"\n >\n <mat-autocomplete #auto=\"matAutocomplete\">\n <mat-option *ngFor=\"let value of filteredAutocompleteStrings\" [value]=\"value\">\n {{value}}\n </mat-option>\n </mat-autocomplete>\n <mat-error>{{getValidationErrorMessage(model)}}</mat-error>\n</mat-form-field>", styles: ["mat-form-field{width:100%}\n"] }]
38
+ args: [{ selector: 'string-autocomplete-input', template: "<!-- eslint-disable angular/no-call-expression -->\n<mat-form-field>\n <mat-label>{{metadata.displayName}}</mat-label>\n <input\n #model=\"ngModel\"\n matInput\n [name]=\"name\"\n [matAutocomplete]=\"auto\"\n [required]=\"metadata.required(entity)\"\n [minlength]=\"metadata.minLength ?? null\"\n [maxlength]=\"metadata.maxLength ?? null\"\n [pattern]=\"metadata.regex ?? '[\\\\s\\\\S]*'\"\n [disabled]=\"isReadOnly\"\n [includedIn]=\"metadata.restrictToOptions ? autocompleteStrings : undefined\"\n [(ngModel)]=\"propertyValue\"\n (keyup)=\"filterAutocompleteStrings(propertyValue)\"\n (ngModelChange)=\"emitChange()\"\n >\n <mat-autocomplete #auto=\"matAutocomplete\">\n <mat-option *ngFor=\"let value of filteredAutocompleteStrings\" [value]=\"value\">\n {{value}}\n </mat-option>\n </mat-autocomplete>\n <mat-error>{{getValidationErrorMessage(model)}}</mat-error>\n</mat-form-field>", styles: ["mat-form-field{width:100%}\n"] }]
35
39
  }] });
36
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RyaW5nLWF1dG9jb21wbGV0ZS1pbnB1dC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtbWF0ZXJpYWwtZW50aXR5L3NyYy9jb21wb25lbnRzL2lucHV0L3N0cmluZy9zdHJpbmctYXV0b2NvbXBsZXRlLWlucHV0L3N0cmluZy1hdXRvY29tcGxldGUtaW5wdXQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LW1hdGVyaWFsLWVudGl0eS9zcmMvY29tcG9uZW50cy9pbnB1dC9zdHJpbmcvc3RyaW5nLWF1dG9jb21wbGV0ZS1pbnB1dC9zdHJpbmctYXV0b2NvbXBsZXRlLWlucHV0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLHdDQUF3QztBQUN4QyxPQUFPLEVBQUUsU0FBUyxFQUFVLE1BQU0sZUFBZSxDQUFDO0FBR2xELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSw0Q0FBNEMsQ0FBQztBQUM3RSxPQUFPLEVBQUUsOEJBQThCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQzs7Ozs7Ozs7QUFRNUUsTUFBTSxPQUFPLGdDQUNULFNBQVEsOEJBQXNGO0lBRTlGLG1CQUFtQixDQUFZO0lBQy9CLDJCQUEyQixDQUFZO0lBRTlCLFFBQVE7UUFDYixLQUFLLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDakIsSUFBSSxDQUFDLG1CQUFtQixHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsa0JBQWtCLENBQUM7UUFDNUQsSUFBSSxDQUFDLDJCQUEyQixHQUFHLGVBQWUsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLG1CQUFtQixDQUFDLENBQUM7SUFDM0YsQ0FBQztJQUVEOzs7O09BSUc7SUFDSCx5QkFBeUIsQ0FBQyxLQUFjO1FBQ3BDLE1BQU0sWUFBWSxHQUFXLEtBQUssSUFBSSxFQUFFLENBQUM7UUFDekMsSUFBSSxDQUFDLDJCQUEyQixHQUFHLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsV0FBVyxFQUFFLENBQUMsUUFBUSxDQUFDLFlBQVksQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDbEksQ0FBQzt1R0FwQlEsZ0NBQWdDOzJGQUFoQyxnQ0FBZ0Msd0ZDYjdDLG80QkFzQmlCOzsyRkRUSixnQ0FBZ0M7a0JBTjVDLFNBQVM7K0JBRUksMkJBQTJCIiwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUganNkb2MvcmVxdWlyZS1qc2RvYyAqL1xuaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEJhc2VFbnRpdHlUeXBlIH0gZnJvbSAnLi4vLi4vLi4vLi4vY2xhc3Nlcy9lbnRpdHkubW9kZWwnO1xuaW1wb3J0IHsgRGVjb3JhdG9yVHlwZXMgfSBmcm9tICcuLi8uLi8uLi8uLi9kZWNvcmF0b3JzL2Jhc2UvZGVjb3JhdG9yLXR5cGVzLmVudW0nO1xuaW1wb3J0IHsgTG9kYXNoVXRpbGl0aWVzIH0gZnJvbSAnLi4vLi4vLi4vLi4vZW5jYXBzdWxhdGlvbi9sb2Rhc2gudXRpbGl0aWVzJztcbmltcG9ydCB7IE5neE1hdEVudGl0eUJhc2VJbnB1dENvbXBvbmVudCB9IGZyb20gJy4uLy4uL2Jhc2UtaW5wdXQuY29tcG9uZW50JztcblxuQENvbXBvbmVudCh7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9jb21wb25lbnQtc2VsZWN0b3JcbiAgICBzZWxlY3RvcjogJ3N0cmluZy1hdXRvY29tcGxldGUtaW5wdXQnLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9zdHJpbmctYXV0b2NvbXBsZXRlLWlucHV0LmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybHM6IFsnLi9zdHJpbmctYXV0b2NvbXBsZXRlLWlucHV0LmNvbXBvbmVudC5zY3NzJ11cbn0pXG5leHBvcnQgY2xhc3MgU3RyaW5nQXV0b2NvbXBsZXRlSW5wdXRDb21wb25lbnQ8RW50aXR5VHlwZSBleHRlbmRzIEJhc2VFbnRpdHlUeXBlPEVudGl0eVR5cGU+PlxuICAgIGV4dGVuZHMgTmd4TWF0RW50aXR5QmFzZUlucHV0Q29tcG9uZW50PEVudGl0eVR5cGUsIERlY29yYXRvclR5cGVzLlNUUklOR19BVVRPQ09NUExFVEUsIHN0cmluZz4gaW1wbGVtZW50cyBPbkluaXQge1xuXG4gICAgYXV0b2NvbXBsZXRlU3RyaW5ncyE6IHN0cmluZ1tdO1xuICAgIGZpbHRlcmVkQXV0b2NvbXBsZXRlU3RyaW5ncyE6IHN0cmluZ1tdO1xuXG4gICAgb3ZlcnJpZGUgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgICAgIHN1cGVyLm5nT25Jbml0KCk7XG4gICAgICAgIHRoaXMuYXV0b2NvbXBsZXRlU3RyaW5ncyA9IHRoaXMubWV0YWRhdGEuYXV0b2NvbXBsZXRlVmFsdWVzO1xuICAgICAgICB0aGlzLmZpbHRlcmVkQXV0b2NvbXBsZXRlU3RyaW5ncyA9IExvZGFzaFV0aWxpdGllcy5jbG9uZURlZXAodGhpcy5hdXRvY29tcGxldGVTdHJpbmdzKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBEeW5hbWljYWxseSBmaWx0ZXJzIHRoZSBBdXRvY29tcGxldGUgb3B0aW9ucyB3aGVuIHRoZSB1c2VyIGlucHV0cyBzb21ldGhpbmcuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gaW5wdXQgLSBUaGUgaW5wdXQgb2YgdGhlIHVzZXIuXG4gICAgICovXG4gICAgZmlsdGVyQXV0b2NvbXBsZXRlU3RyaW5ncyhpbnB1dD86IHN0cmluZyk6IHZvaWQge1xuICAgICAgICBjb25zdCBzZWFyY2hTdHJpbmc6IHN0cmluZyA9IGlucHV0ID8/ICcnO1xuICAgICAgICB0aGlzLmZpbHRlcmVkQXV0b2NvbXBsZXRlU3RyaW5ncyA9IHRoaXMuYXV0b2NvbXBsZXRlU3RyaW5ncy5maWx0ZXIocyA9PiBzLnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMoc2VhcmNoU3RyaW5nLnRvTG93ZXJDYXNlKCkpKTtcbiAgICB9XG59IiwiPG1hdC1mb3JtLWZpZWxkPlxuICAgIDxtYXQtbGFiZWw+e3ttZXRhZGF0YS5kaXNwbGF5TmFtZX19PC9tYXQtbGFiZWw+XG4gICAgPGlucHV0XG4gICAgICAgIG1hdElucHV0XG4gICAgICAgIFsobmdNb2RlbCldPVwicHJvcGVydHlWYWx1ZVwiXG4gICAgICAgIFtuYW1lXT1cImtleS50b1N0cmluZygpICsgdXVpZFwiXG4gICAgICAgICNtb2RlbD1cIm5nTW9kZWxcIlxuICAgICAgICBbbWF0QXV0b2NvbXBsZXRlXT1cImF1dG9cIlxuICAgICAgICAoa2V5dXApPVwiZmlsdGVyQXV0b2NvbXBsZXRlU3RyaW5ncyhwcm9wZXJ0eVZhbHVlKVwiXG4gICAgICAgIFtyZXF1aXJlZF09XCJtZXRhZGF0YS5yZXF1aXJlZChlbnRpdHkpXCJcbiAgICAgICAgW21pbmxlbmd0aF09XCJtZXRhZGF0YS5taW5MZW5ndGggPz8gbnVsbFwiXG4gICAgICAgIFttYXhsZW5ndGhdPVwibWV0YWRhdGEubWF4TGVuZ3RoID8/IG51bGxcIlxuICAgICAgICBbcGF0dGVybl09XCJtZXRhZGF0YS5yZWdleCA/PyAnW1xcXFxzXFxcXFNdKidcIlxuICAgICAgICAobmdNb2RlbENoYW5nZSk9XCJlbWl0Q2hhbmdlKClcIlxuICAgICAgICBbZGlzYWJsZWRdPVwiaXNSZWFkT25seVwiXG4gICAgPlxuICAgIDxtYXQtYXV0b2NvbXBsZXRlICNhdXRvPVwibWF0QXV0b2NvbXBsZXRlXCI+XG4gICAgICAgIDxtYXQtb3B0aW9uICpuZ0Zvcj1cImxldCB2YWx1ZSBvZiBmaWx0ZXJlZEF1dG9jb21wbGV0ZVN0cmluZ3NcIiBbdmFsdWVdPVwidmFsdWVcIj5cbiAgICAgICAgICAgIHt7dmFsdWV9fVxuICAgICAgICA8L21hdC1vcHRpb24+XG4gICAgPC9tYXQtYXV0b2NvbXBsZXRlPlxuICAgIDxtYXQtZXJyb3I+e3tnZXRWYWxpZGF0aW9uRXJyb3JNZXNzYWdlKG1vZGVsKX19PC9tYXQtZXJyb3I+XG48L21hdC1mb3JtLWZpZWxkPiJdfQ==
40
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RyaW5nLWF1dG9jb21wbGV0ZS1pbnB1dC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtbWF0ZXJpYWwtZW50aXR5L3NyYy9jb21wb25lbnRzL2lucHV0L3N0cmluZy9zdHJpbmctYXV0b2NvbXBsZXRlLWlucHV0L3N0cmluZy1hdXRvY29tcGxldGUtaW5wdXQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LW1hdGVyaWFsLWVudGl0eS9zcmMvY29tcG9uZW50cy9pbnB1dC9zdHJpbmcvc3RyaW5nLWF1dG9jb21wbGV0ZS1pbnB1dC9zdHJpbmctYXV0b2NvbXBsZXRlLWlucHV0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLHdDQUF3QztBQUN4QyxPQUFPLEVBQUUsU0FBUyxFQUFVLE1BQU0sZUFBZSxDQUFDO0FBR2xELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSw0Q0FBNEMsQ0FBQztBQUM3RSxPQUFPLEVBQUUsOEJBQThCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQzs7Ozs7Ozs7O0FBRTVFLCtEQUErRDtBQU0vRCxNQUFNLE9BQU8sZ0NBQ1QsU0FBUSw4QkFBc0Y7SUFFOUYsbUJBQW1CLENBQVk7SUFDL0IsMkJBQTJCLENBQVk7SUFFOUIsUUFBUTtRQUNiLEtBQUssQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUNqQixJQUFJLENBQUMsbUJBQW1CLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxrQkFBa0IsQ0FBQztRQUM1RCxJQUFJLENBQUMsMkJBQTJCLEdBQUcsZUFBZSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsbUJBQW1CLENBQUMsQ0FBQztJQUMzRixDQUFDO0lBRUQ7OztPQUdHO0lBQ0gseUJBQXlCLENBQUMsS0FBYztRQUNwQyxNQUFNLFlBQVksR0FBVyxLQUFLLElBQUksRUFBRSxDQUFDO1FBQ3pDLElBQUksQ0FBQywyQkFBMkIsR0FBRyxJQUFJLENBQUMsbUJBQW1CLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLFdBQVcsRUFBRSxDQUFDLFFBQVEsQ0FBQyxZQUFZLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQzlILElBQUksQ0FBQyxJQUFJLENBQUMsMkJBQTJCLENBQUMsTUFBTSxFQUFFO1lBQzFDLElBQUksQ0FBQywyQkFBMkIsR0FBRyxlQUFlLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO1NBQzFGO0lBQ0wsQ0FBQzt1R0F0QlEsZ0NBQWdDOzJGQUFoQyxnQ0FBZ0Msd0ZDYjdDLDgvQkF3QmlCOzsyRkRYSixnQ0FBZ0M7a0JBTDVDLFNBQVM7K0JBQ0ksMkJBQTJCIiwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUganNkb2MvcmVxdWlyZS1qc2RvYyAqL1xuaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEJhc2VFbnRpdHlUeXBlIH0gZnJvbSAnLi4vLi4vLi4vLi4vY2xhc3Nlcy9lbnRpdHkubW9kZWwnO1xuaW1wb3J0IHsgRGVjb3JhdG9yVHlwZXMgfSBmcm9tICcuLi8uLi8uLi8uLi9kZWNvcmF0b3JzL2Jhc2UvZGVjb3JhdG9yLXR5cGVzLmVudW0nO1xuaW1wb3J0IHsgTG9kYXNoVXRpbGl0aWVzIH0gZnJvbSAnLi4vLi4vLi4vLi4vZW5jYXBzdWxhdGlvbi9sb2Rhc2gudXRpbGl0aWVzJztcbmltcG9ydCB7IE5neE1hdEVudGl0eUJhc2VJbnB1dENvbXBvbmVudCB9IGZyb20gJy4uLy4uL2Jhc2UtaW5wdXQuY29tcG9uZW50JztcblxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGFuZ3VsYXIvcHJlZmVyLXN0YW5kYWxvbmUtY29tcG9uZW50XG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ3N0cmluZy1hdXRvY29tcGxldGUtaW5wdXQnLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9zdHJpbmctYXV0b2NvbXBsZXRlLWlucHV0LmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybHM6IFsnLi9zdHJpbmctYXV0b2NvbXBsZXRlLWlucHV0LmNvbXBvbmVudC5zY3NzJ11cbn0pXG5leHBvcnQgY2xhc3MgU3RyaW5nQXV0b2NvbXBsZXRlSW5wdXRDb21wb25lbnQ8RW50aXR5VHlwZSBleHRlbmRzIEJhc2VFbnRpdHlUeXBlPEVudGl0eVR5cGU+PlxuICAgIGV4dGVuZHMgTmd4TWF0RW50aXR5QmFzZUlucHV0Q29tcG9uZW50PEVudGl0eVR5cGUsIERlY29yYXRvclR5cGVzLlNUUklOR19BVVRPQ09NUExFVEUsIHN0cmluZz4gaW1wbGVtZW50cyBPbkluaXQge1xuXG4gICAgYXV0b2NvbXBsZXRlU3RyaW5ncyE6IHN0cmluZ1tdO1xuICAgIGZpbHRlcmVkQXV0b2NvbXBsZXRlU3RyaW5ncyE6IHN0cmluZ1tdO1xuXG4gICAgb3ZlcnJpZGUgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgICAgIHN1cGVyLm5nT25Jbml0KCk7XG4gICAgICAgIHRoaXMuYXV0b2NvbXBsZXRlU3RyaW5ncyA9IHRoaXMubWV0YWRhdGEuYXV0b2NvbXBsZXRlVmFsdWVzO1xuICAgICAgICB0aGlzLmZpbHRlcmVkQXV0b2NvbXBsZXRlU3RyaW5ncyA9IExvZGFzaFV0aWxpdGllcy5jbG9uZURlZXAodGhpcy5hdXRvY29tcGxldGVTdHJpbmdzKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBEeW5hbWljYWxseSBmaWx0ZXJzIHRoZSBBdXRvY29tcGxldGUgb3B0aW9ucyB3aGVuIHRoZSB1c2VyIGlucHV0cyBzb21ldGhpbmcuXG4gICAgICogQHBhcmFtIGlucHV0IC0gVGhlIGlucHV0IG9mIHRoZSB1c2VyLlxuICAgICAqL1xuICAgIGZpbHRlckF1dG9jb21wbGV0ZVN0cmluZ3MoaW5wdXQ/OiBzdHJpbmcpOiB2b2lkIHtcbiAgICAgICAgY29uc3Qgc2VhcmNoU3RyaW5nOiBzdHJpbmcgPSBpbnB1dCA/PyAnJztcbiAgICAgICAgdGhpcy5maWx0ZXJlZEF1dG9jb21wbGV0ZVN0cmluZ3MgPSB0aGlzLmF1dG9jb21wbGV0ZVN0cmluZ3MuZmlsdGVyKHMgPT4gcy50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKHNlYXJjaFN0cmluZy50b0xvd2VyQ2FzZSgpKSk7XG4gICAgICAgIGlmICghdGhpcy5maWx0ZXJlZEF1dG9jb21wbGV0ZVN0cmluZ3MubGVuZ3RoKSB7XG4gICAgICAgICAgICB0aGlzLmZpbHRlcmVkQXV0b2NvbXBsZXRlU3RyaW5ncyA9IExvZGFzaFV0aWxpdGllcy5jbG9uZURlZXAodGhpcy5hdXRvY29tcGxldGVTdHJpbmdzKTtcbiAgICAgICAgfVxuICAgIH1cbn0iLCI8IS0tIGVzbGludC1kaXNhYmxlIGFuZ3VsYXIvbm8tY2FsbC1leHByZXNzaW9uIC0tPlxuPG1hdC1mb3JtLWZpZWxkPlxuICAgIDxtYXQtbGFiZWw+e3ttZXRhZGF0YS5kaXNwbGF5TmFtZX19PC9tYXQtbGFiZWw+XG4gICAgPGlucHV0XG4gICAgICAgICNtb2RlbD1cIm5nTW9kZWxcIlxuICAgICAgICBtYXRJbnB1dFxuICAgICAgICBbbmFtZV09XCJuYW1lXCJcbiAgICAgICAgW21hdEF1dG9jb21wbGV0ZV09XCJhdXRvXCJcbiAgICAgICAgW3JlcXVpcmVkXT1cIm1ldGFkYXRhLnJlcXVpcmVkKGVudGl0eSlcIlxuICAgICAgICBbbWlubGVuZ3RoXT1cIm1ldGFkYXRhLm1pbkxlbmd0aCA/PyBudWxsXCJcbiAgICAgICAgW21heGxlbmd0aF09XCJtZXRhZGF0YS5tYXhMZW5ndGggPz8gbnVsbFwiXG4gICAgICAgIFtwYXR0ZXJuXT1cIm1ldGFkYXRhLnJlZ2V4ID8/ICdbXFxcXHNcXFxcU10qJ1wiXG4gICAgICAgIFtkaXNhYmxlZF09XCJpc1JlYWRPbmx5XCJcbiAgICAgICAgW2luY2x1ZGVkSW5dPVwibWV0YWRhdGEucmVzdHJpY3RUb09wdGlvbnMgPyBhdXRvY29tcGxldGVTdHJpbmdzIDogdW5kZWZpbmVkXCJcbiAgICAgICAgWyhuZ01vZGVsKV09XCJwcm9wZXJ0eVZhbHVlXCJcbiAgICAgICAgKGtleXVwKT1cImZpbHRlckF1dG9jb21wbGV0ZVN0cmluZ3MocHJvcGVydHlWYWx1ZSlcIlxuICAgICAgICAobmdNb2RlbENoYW5nZSk9XCJlbWl0Q2hhbmdlKClcIlxuICAgID5cbiAgICA8bWF0LWF1dG9jb21wbGV0ZSAjYXV0bz1cIm1hdEF1dG9jb21wbGV0ZVwiPlxuICAgICAgICA8bWF0LW9wdGlvbiAqbmdGb3I9XCJsZXQgdmFsdWUgb2YgZmlsdGVyZWRBdXRvY29tcGxldGVTdHJpbmdzXCIgW3ZhbHVlXT1cInZhbHVlXCI+XG4gICAgICAgICAgICB7e3ZhbHVlfX1cbiAgICAgICAgPC9tYXQtb3B0aW9uPlxuICAgIDwvbWF0LWF1dG9jb21wbGV0ZT5cbiAgICA8bWF0LWVycm9yPnt7Z2V0VmFsaWRhdGlvbkVycm9yTWVzc2FnZShtb2RlbCl9fTwvbWF0LWVycm9yPlxuPC9tYXQtZm9ybS1maWVsZD4iXX0=
@@ -3,10 +3,11 @@ import { Component } from '@angular/core';
3
3
  import { NgxMatEntityBaseInputComponent } from '../../base-input.component';
4
4
  import * as i0 from "@angular/core";
5
5
  import * as i1 from "@angular/common";
6
- import * as i2 from "@angular/material/form-field";
7
- import * as i3 from "@angular/forms";
8
- import * as i4 from "@angular/material/select";
9
- import * as i5 from "@angular/material/core";
6
+ import * as i2 from "@angular/forms";
7
+ import * as i3 from "@angular/material/core";
8
+ import * as i4 from "@angular/material/form-field";
9
+ import * as i5 from "@angular/material/select";
10
+ // eslint-disable-next-line angular/prefer-standalone-component
10
11
  export class StringDropdownInputComponent extends NgxMatEntityBaseInputComponent {
11
12
  dropdownValues = [];
12
13
  async ngOnInit() {
@@ -14,10 +15,10 @@ export class StringDropdownInputComponent extends NgxMatEntityBaseInputComponent
14
15
  this.dropdownValues = await this.metadata.dropdownValues(this.entity);
15
16
  }
16
17
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.0", ngImport: i0, type: StringDropdownInputComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
17
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.0", type: StringDropdownInputComponent, selector: "string-dropdown-input", usesInheritance: true, ngImport: i0, template: "<mat-form-field>\n <mat-label>{{metadata.displayName}}</mat-label>\n <mat-select [(ngModel)]=\"propertyValue\" [name]=\"key.toString() + uuid\" #model=\"ngModel\" [required]=\"metadata.required(entity)\" [disabled]=\"isReadOnly\" (selectionChange)=\"emitChange()\">\n <mat-option *ngFor=\"let value of dropdownValues\" [value]=\"value.value\">{{value.displayName}}</mat-option>\n </mat-select>\n <mat-error>{{getValidationErrorMessage(model)}}</mat-error>\n</mat-form-field>", styles: ["mat-form-field{width:100%}\n"], dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "component", type: i2.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i2.MatLabel, selector: "mat-label" }, { kind: "directive", type: i2.MatError, selector: "mat-error, [matError]", inputs: ["id"] }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i4.MatSelect, selector: "mat-select", inputs: ["disabled", "disableRipple", "tabIndex", "panelWidth", "hideSingleSelectionIndicator"], exportAs: ["matSelect"] }, { kind: "component", type: i5.MatOption, selector: "mat-option", exportAs: ["matOption"] }] });
18
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.0", type: StringDropdownInputComponent, selector: "string-dropdown-input", usesInheritance: true, ngImport: i0, template: "<!-- eslint-disable angular/no-call-expression -->\n<mat-form-field>\n <mat-label>{{metadata.displayName}}</mat-label>\n <mat-select #model=\"ngModel\"\n [name]=\"name\"\n [required]=\"metadata.required(entity)\"\n [disabled]=\"isReadOnly\"\n [(ngModel)]=\"propertyValue\"\n (selectionChange)=\"emitChange()\"\n >\n <mat-option *ngFor=\"let value of dropdownValues\" [value]=\"value.value\">{{value.displayName}}</mat-option>\n </mat-select>\n <mat-error>{{getValidationErrorMessage(model)}}</mat-error>\n</mat-form-field>", styles: ["mat-form-field{width:100%}\n"], dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i3.MatOption, selector: "mat-option", exportAs: ["matOption"] }, { 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: "directive", type: i4.MatError, selector: "mat-error, [matError]", inputs: ["id"] }, { kind: "component", type: i5.MatSelect, selector: "mat-select", inputs: ["disabled", "disableRipple", "tabIndex", "panelWidth", "hideSingleSelectionIndicator"], exportAs: ["matSelect"] }] });
18
19
  }
19
20
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.0", ngImport: i0, type: StringDropdownInputComponent, decorators: [{
20
21
  type: Component,
21
- args: [{ selector: 'string-dropdown-input', template: "<mat-form-field>\n <mat-label>{{metadata.displayName}}</mat-label>\n <mat-select [(ngModel)]=\"propertyValue\" [name]=\"key.toString() + uuid\" #model=\"ngModel\" [required]=\"metadata.required(entity)\" [disabled]=\"isReadOnly\" (selectionChange)=\"emitChange()\">\n <mat-option *ngFor=\"let value of dropdownValues\" [value]=\"value.value\">{{value.displayName}}</mat-option>\n </mat-select>\n <mat-error>{{getValidationErrorMessage(model)}}</mat-error>\n</mat-form-field>", styles: ["mat-form-field{width:100%}\n"] }]
22
+ args: [{ selector: 'string-dropdown-input', template: "<!-- eslint-disable angular/no-call-expression -->\n<mat-form-field>\n <mat-label>{{metadata.displayName}}</mat-label>\n <mat-select #model=\"ngModel\"\n [name]=\"name\"\n [required]=\"metadata.required(entity)\"\n [disabled]=\"isReadOnly\"\n [(ngModel)]=\"propertyValue\"\n (selectionChange)=\"emitChange()\"\n >\n <mat-option *ngFor=\"let value of dropdownValues\" [value]=\"value.value\">{{value.displayName}}</mat-option>\n </mat-select>\n <mat-error>{{getValidationErrorMessage(model)}}</mat-error>\n</mat-form-field>", styles: ["mat-form-field{width:100%}\n"] }]
22
23
  }] });
23
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RyaW5nLWRyb3Bkb3duLWlucHV0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1tYXRlcmlhbC1lbnRpdHkvc3JjL2NvbXBvbmVudHMvaW5wdXQvc3RyaW5nL3N0cmluZy1kcm9wZG93bi1pbnB1dC9zdHJpbmctZHJvcGRvd24taW5wdXQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LW1hdGVyaWFsLWVudGl0eS9zcmMvY29tcG9uZW50cy9pbnB1dC9zdHJpbmcvc3RyaW5nLWRyb3Bkb3duLWlucHV0L3N0cmluZy1kcm9wZG93bi1pbnB1dC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSx3Q0FBd0M7QUFDeEMsT0FBTyxFQUFFLFNBQVMsRUFBVSxNQUFNLGVBQWUsQ0FBQztBQUlsRCxPQUFPLEVBQUUsOEJBQThCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQzs7Ozs7OztBQVE1RSxNQUFNLE9BQU8sNEJBQ1QsU0FBUSw4QkFBa0Y7SUFFMUYsY0FBYyxHQUF3QyxFQUFFLENBQUM7SUFFaEQsS0FBSyxDQUFDLFFBQVE7UUFDbkIsS0FBSyxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQ2pCLElBQUksQ0FBQyxjQUFjLEdBQUcsTUFBTSxJQUFJLENBQUMsUUFBUSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDMUUsQ0FBQzt1R0FSUSw0QkFBNEI7MkZBQTVCLDRCQUE0QixvRkNiekMsK2VBTWlCOzsyRkRPSiw0QkFBNEI7a0JBTnhDLFNBQVM7K0JBRUksdUJBQXVCIiwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUganNkb2MvcmVxdWlyZS1qc2RvYyAqL1xuaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEJhc2VFbnRpdHlUeXBlIH0gZnJvbSAnLi4vLi4vLi4vLi4vY2xhc3Nlcy9lbnRpdHkubW9kZWwnO1xuaW1wb3J0IHsgRGVjb3JhdG9yVHlwZXMgfSBmcm9tICcuLi8uLi8uLi8uLi9kZWNvcmF0b3JzL2Jhc2UvZGVjb3JhdG9yLXR5cGVzLmVudW0nO1xuaW1wb3J0IHsgRHJvcGRvd25WYWx1ZSB9IGZyb20gJy4uLy4uLy4uLy4uL2RlY29yYXRvcnMvYmFzZS9kcm9wZG93bi12YWx1ZS5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgTmd4TWF0RW50aXR5QmFzZUlucHV0Q29tcG9uZW50IH0gZnJvbSAnLi4vLi4vYmFzZS1pbnB1dC5jb21wb25lbnQnO1xuXG5AQ29tcG9uZW50KHtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L2NvbXBvbmVudC1zZWxlY3RvclxuICAgIHNlbGVjdG9yOiAnc3RyaW5nLWRyb3Bkb3duLWlucHV0JyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vc3RyaW5nLWRyb3Bkb3duLWlucHV0LmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybHM6IFsnLi9zdHJpbmctZHJvcGRvd24taW5wdXQuY29tcG9uZW50LnNjc3MnXVxufSlcbmV4cG9ydCBjbGFzcyBTdHJpbmdEcm9wZG93bklucHV0Q29tcG9uZW50PEVudGl0eVR5cGUgZXh0ZW5kcyBCYXNlRW50aXR5VHlwZTxFbnRpdHlUeXBlPj5cbiAgICBleHRlbmRzIE5neE1hdEVudGl0eUJhc2VJbnB1dENvbXBvbmVudDxFbnRpdHlUeXBlLCBEZWNvcmF0b3JUeXBlcy5TVFJJTkdfRFJPUERPV04sIHN0cmluZz4gaW1wbGVtZW50cyBPbkluaXQge1xuXG4gICAgZHJvcGRvd25WYWx1ZXM6IERyb3Bkb3duVmFsdWU8c3RyaW5nIHwgdW5kZWZpbmVkPltdID0gW107XG5cbiAgICBvdmVycmlkZSBhc3luYyBuZ09uSW5pdCgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgc3VwZXIubmdPbkluaXQoKTtcbiAgICAgICAgdGhpcy5kcm9wZG93blZhbHVlcyA9IGF3YWl0IHRoaXMubWV0YWRhdGEuZHJvcGRvd25WYWx1ZXModGhpcy5lbnRpdHkpO1xuICAgIH1cbn0iLCI8bWF0LWZvcm0tZmllbGQ+XG4gICAgPG1hdC1sYWJlbD57e21ldGFkYXRhLmRpc3BsYXlOYW1lfX08L21hdC1sYWJlbD5cbiAgICA8bWF0LXNlbGVjdCBbKG5nTW9kZWwpXT1cInByb3BlcnR5VmFsdWVcIiBbbmFtZV09XCJrZXkudG9TdHJpbmcoKSArIHV1aWRcIiAjbW9kZWw9XCJuZ01vZGVsXCIgW3JlcXVpcmVkXT1cIm1ldGFkYXRhLnJlcXVpcmVkKGVudGl0eSlcIiBbZGlzYWJsZWRdPVwiaXNSZWFkT25seVwiIChzZWxlY3Rpb25DaGFuZ2UpPVwiZW1pdENoYW5nZSgpXCI+XG4gICAgICAgIDxtYXQtb3B0aW9uICpuZ0Zvcj1cImxldCB2YWx1ZSBvZiBkcm9wZG93blZhbHVlc1wiIFt2YWx1ZV09XCJ2YWx1ZS52YWx1ZVwiPnt7dmFsdWUuZGlzcGxheU5hbWV9fTwvbWF0LW9wdGlvbj5cbiAgICA8L21hdC1zZWxlY3Q+XG4gICAgPG1hdC1lcnJvcj57e2dldFZhbGlkYXRpb25FcnJvck1lc3NhZ2UobW9kZWwpfX08L21hdC1lcnJvcj5cbjwvbWF0LWZvcm0tZmllbGQ+Il19
24
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RyaW5nLWRyb3Bkb3duLWlucHV0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1tYXRlcmlhbC1lbnRpdHkvc3JjL2NvbXBvbmVudHMvaW5wdXQvc3RyaW5nL3N0cmluZy1kcm9wZG93bi1pbnB1dC9zdHJpbmctZHJvcGRvd24taW5wdXQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LW1hdGVyaWFsLWVudGl0eS9zcmMvY29tcG9uZW50cy9pbnB1dC9zdHJpbmcvc3RyaW5nLWRyb3Bkb3duLWlucHV0L3N0cmluZy1kcm9wZG93bi1pbnB1dC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSx3Q0FBd0M7QUFDeEMsT0FBTyxFQUFFLFNBQVMsRUFBVSxNQUFNLGVBQWUsQ0FBQztBQUlsRCxPQUFPLEVBQUUsOEJBQThCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQzs7Ozs7OztBQUU1RSwrREFBK0Q7QUFNL0QsTUFBTSxPQUFPLDRCQUNULFNBQVEsOEJBQWtGO0lBRTFGLGNBQWMsR0FBd0MsRUFBRSxDQUFDO0lBRWhELEtBQUssQ0FBQyxRQUFRO1FBQ25CLEtBQUssQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUNqQixJQUFJLENBQUMsY0FBYyxHQUFHLE1BQU0sSUFBSSxDQUFDLFFBQVEsQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQzFFLENBQUM7dUdBUlEsNEJBQTRCOzJGQUE1Qiw0QkFBNEIsb0ZDYnpDLHFrQkFhaUI7OzJGREFKLDRCQUE0QjtrQkFMeEMsU0FBUzsrQkFDSSx1QkFBdUIiLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSBqc2RvYy9yZXF1aXJlLWpzZG9jICovXG5pbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQmFzZUVudGl0eVR5cGUgfSBmcm9tICcuLi8uLi8uLi8uLi9jbGFzc2VzL2VudGl0eS5tb2RlbCc7XG5pbXBvcnQgeyBEZWNvcmF0b3JUeXBlcyB9IGZyb20gJy4uLy4uLy4uLy4uL2RlY29yYXRvcnMvYmFzZS9kZWNvcmF0b3ItdHlwZXMuZW51bSc7XG5pbXBvcnQgeyBEcm9wZG93blZhbHVlIH0gZnJvbSAnLi4vLi4vLi4vLi4vZGVjb3JhdG9ycy9iYXNlL2Ryb3Bkb3duLXZhbHVlLmludGVyZmFjZSc7XG5pbXBvcnQgeyBOZ3hNYXRFbnRpdHlCYXNlSW5wdXRDb21wb25lbnQgfSBmcm9tICcuLi8uLi9iYXNlLWlucHV0LmNvbXBvbmVudCc7XG5cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBhbmd1bGFyL3ByZWZlci1zdGFuZGFsb25lLWNvbXBvbmVudFxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdzdHJpbmctZHJvcGRvd24taW5wdXQnLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9zdHJpbmctZHJvcGRvd24taW5wdXQuY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsczogWycuL3N0cmluZy1kcm9wZG93bi1pbnB1dC5jb21wb25lbnQuc2NzcyddXG59KVxuZXhwb3J0IGNsYXNzIFN0cmluZ0Ryb3Bkb3duSW5wdXRDb21wb25lbnQ8RW50aXR5VHlwZSBleHRlbmRzIEJhc2VFbnRpdHlUeXBlPEVudGl0eVR5cGU+PlxuICAgIGV4dGVuZHMgTmd4TWF0RW50aXR5QmFzZUlucHV0Q29tcG9uZW50PEVudGl0eVR5cGUsIERlY29yYXRvclR5cGVzLlNUUklOR19EUk9QRE9XTiwgc3RyaW5nPiBpbXBsZW1lbnRzIE9uSW5pdCB7XG5cbiAgICBkcm9wZG93blZhbHVlczogRHJvcGRvd25WYWx1ZTxzdHJpbmcgfCB1bmRlZmluZWQ+W10gPSBbXTtcblxuICAgIG92ZXJyaWRlIGFzeW5jIG5nT25Jbml0KCk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICBzdXBlci5uZ09uSW5pdCgpO1xuICAgICAgICB0aGlzLmRyb3Bkb3duVmFsdWVzID0gYXdhaXQgdGhpcy5tZXRhZGF0YS5kcm9wZG93blZhbHVlcyh0aGlzLmVudGl0eSk7XG4gICAgfVxufSIsIjwhLS0gZXNsaW50LWRpc2FibGUgYW5ndWxhci9uby1jYWxsLWV4cHJlc3Npb24gLS0+XG48bWF0LWZvcm0tZmllbGQ+XG4gICAgPG1hdC1sYWJlbD57e21ldGFkYXRhLmRpc3BsYXlOYW1lfX08L21hdC1sYWJlbD5cbiAgICA8bWF0LXNlbGVjdCAjbW9kZWw9XCJuZ01vZGVsXCJcbiAgICAgICAgW25hbWVdPVwibmFtZVwiXG4gICAgICAgIFtyZXF1aXJlZF09XCJtZXRhZGF0YS5yZXF1aXJlZChlbnRpdHkpXCJcbiAgICAgICAgW2Rpc2FibGVkXT1cImlzUmVhZE9ubHlcIlxuICAgICAgICBbKG5nTW9kZWwpXT1cInByb3BlcnR5VmFsdWVcIlxuICAgICAgICAoc2VsZWN0aW9uQ2hhbmdlKT1cImVtaXRDaGFuZ2UoKVwiXG4gICAgPlxuICAgICAgICA8bWF0LW9wdGlvbiAqbmdGb3I9XCJsZXQgdmFsdWUgb2YgZHJvcGRvd25WYWx1ZXNcIiBbdmFsdWVdPVwidmFsdWUudmFsdWVcIj57e3ZhbHVlLmRpc3BsYXlOYW1lfX08L21hdC1vcHRpb24+XG4gICAgPC9tYXQtc2VsZWN0PlxuICAgIDxtYXQtZXJyb3I+e3tnZXRWYWxpZGF0aW9uRXJyb3JNZXNzYWdlKG1vZGVsKX19PC9tYXQtZXJyb3I+XG48L21hdC1mb3JtLWZpZWxkPiJdfQ==
@@ -2,15 +2,16 @@
2
2
  import { Component } from '@angular/core';
3
3
  import { NgxMatEntityBaseInputComponent } from '../../base-input.component';
4
4
  import * as i0 from "@angular/core";
5
- import * as i1 from "@angular/material/input";
5
+ import * as i1 from "@angular/forms";
6
6
  import * as i2 from "@angular/material/form-field";
7
- import * as i3 from "@angular/forms";
7
+ import * as i3 from "@angular/material/input";
8
+ // eslint-disable-next-line angular/prefer-standalone-component
8
9
  export class StringInputComponent extends NgxMatEntityBaseInputComponent {
9
10
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.0", ngImport: i0, type: StringInputComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
10
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.0", type: StringInputComponent, selector: "string-input", usesInheritance: true, ngImport: i0, template: "<mat-form-field>\n <mat-label>{{metadata.displayName}}</mat-label>\n <input\n matInput\n [(ngModel)]=\"propertyValue\"\n [name]=\"key.toString() + uuid\"\n #model=\"ngModel\"\n [required]=\"metadata.required(entity)\"\n [pattern]=\"metadata.regex ?? '[\\\\s\\\\S]*'\"\n [minlength]=\"metadata.minLength ?? null\"\n [maxlength]=\"metadata.maxLength ?? null\"\n (ngModelChange)=\"emitChange()\"\n [disabled]=\"isReadOnly\"\n >\n <mat-error>{{getValidationErrorMessage(model)}}</mat-error>\n</mat-form-field>", styles: ["mat-form-field{width:100%}\n"], dependencies: [{ kind: "directive", type: i1.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: i2.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i2.MatLabel, selector: "mat-label" }, { kind: "directive", type: i2.MatError, selector: "mat-error, [matError]", inputs: ["id"] }, { kind: "directive", type: i3.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i3.MinLengthValidator, selector: "[minlength][formControlName],[minlength][formControl],[minlength][ngModel]", inputs: ["minlength"] }, { kind: "directive", type: i3.MaxLengthValidator, selector: "[maxlength][formControlName],[maxlength][formControl],[maxlength][ngModel]", inputs: ["maxlength"] }, { kind: "directive", type: i3.PatternValidator, selector: "[pattern][formControlName],[pattern][formControl],[pattern][ngModel]", inputs: ["pattern"] }, { kind: "directive", type: i3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }] });
11
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.0", type: StringInputComponent, selector: "string-input", usesInheritance: true, ngImport: i0, template: "<!-- eslint-disable angular/no-call-expression -->\n<mat-form-field>\n <mat-label>{{metadata.displayName}}</mat-label>\n <input\n #model=\"ngModel\"\n matInput\n [name]=\"name\"\n [required]=\"metadata.required(entity)\"\n [pattern]=\"metadata.regex ?? '[\\\\s\\\\S]*'\"\n [minlength]=\"metadata.minLength ?? null\"\n [maxlength]=\"metadata.maxLength ?? null\"\n [disabled]=\"isReadOnly\"\n [(ngModel)]=\"propertyValue\"\n (ngModelChange)=\"emitChange()\"\n >\n <mat-error>{{getValidationErrorMessage(model)}}</mat-error>\n</mat-form-field>", styles: ["mat-form-field{width:100%}\n"], dependencies: [{ kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i1.MinLengthValidator, selector: "[minlength][formControlName],[minlength][formControl],[minlength][ngModel]", inputs: ["minlength"] }, { kind: "directive", type: i1.MaxLengthValidator, selector: "[maxlength][formControlName],[maxlength][formControl],[maxlength][ngModel]", inputs: ["maxlength"] }, { kind: "directive", type: i1.PatternValidator, selector: "[pattern][formControlName],[pattern][formControl],[pattern][ngModel]", inputs: ["pattern"] }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i2.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i2.MatLabel, selector: "mat-label" }, { kind: "directive", type: i2.MatError, selector: "mat-error, [matError]", inputs: ["id"] }, { 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"] }] });
11
12
  }
12
13
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.0", ngImport: i0, type: StringInputComponent, decorators: [{
13
14
  type: Component,
14
- args: [{ selector: 'string-input', template: "<mat-form-field>\n <mat-label>{{metadata.displayName}}</mat-label>\n <input\n matInput\n [(ngModel)]=\"propertyValue\"\n [name]=\"key.toString() + uuid\"\n #model=\"ngModel\"\n [required]=\"metadata.required(entity)\"\n [pattern]=\"metadata.regex ?? '[\\\\s\\\\S]*'\"\n [minlength]=\"metadata.minLength ?? null\"\n [maxlength]=\"metadata.maxLength ?? null\"\n (ngModelChange)=\"emitChange()\"\n [disabled]=\"isReadOnly\"\n >\n <mat-error>{{getValidationErrorMessage(model)}}</mat-error>\n</mat-form-field>", styles: ["mat-form-field{width:100%}\n"] }]
15
+ args: [{ selector: 'string-input', template: "<!-- eslint-disable angular/no-call-expression -->\n<mat-form-field>\n <mat-label>{{metadata.displayName}}</mat-label>\n <input\n #model=\"ngModel\"\n matInput\n [name]=\"name\"\n [required]=\"metadata.required(entity)\"\n [pattern]=\"metadata.regex ?? '[\\\\s\\\\S]*'\"\n [minlength]=\"metadata.minLength ?? null\"\n [maxlength]=\"metadata.maxLength ?? null\"\n [disabled]=\"isReadOnly\"\n [(ngModel)]=\"propertyValue\"\n (ngModelChange)=\"emitChange()\"\n >\n <mat-error>{{getValidationErrorMessage(model)}}</mat-error>\n</mat-form-field>", styles: ["mat-form-field{width:100%}\n"] }]
15
16
  }] });
16
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RyaW5nLWlucHV0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1tYXRlcmlhbC1lbnRpdHkvc3JjL2NvbXBvbmVudHMvaW5wdXQvc3RyaW5nL3N0cmluZy1pbnB1dC9zdHJpbmctaW5wdXQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LW1hdGVyaWFsLWVudGl0eS9zcmMvY29tcG9uZW50cy9pbnB1dC9zdHJpbmcvc3RyaW5nLWlucHV0L3N0cmluZy1pbnB1dC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSx3Q0FBd0M7QUFDeEMsT0FBTyxFQUFFLFNBQVMsRUFBVSxNQUFNLGVBQWUsQ0FBQztBQUdsRCxPQUFPLEVBQUUsOEJBQThCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQzs7Ozs7QUFRNUUsTUFBTSxPQUFPLG9CQUNULFNBQVEsOEJBQXlFO3VHQUR4RSxvQkFBb0I7MkZBQXBCLG9CQUFvQiwyRUNaakMsNmtCQWVpQjs7MkZESEosb0JBQW9CO2tCQU5oQyxTQUFTOytCQUVJLGNBQWMiLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSBqc2RvYy9yZXF1aXJlLWpzZG9jICovXG5pbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRGVjb3JhdG9yVHlwZXMgfSBmcm9tICcuLi8uLi8uLi8uLi9kZWNvcmF0b3JzL2Jhc2UvZGVjb3JhdG9yLXR5cGVzLmVudW0nO1xuaW1wb3J0IHsgQmFzZUVudGl0eVR5cGUgfSBmcm9tICcuLi8uLi8uLi8uLi9jbGFzc2VzL2VudGl0eS5tb2RlbCc7XG5pbXBvcnQgeyBOZ3hNYXRFbnRpdHlCYXNlSW5wdXRDb21wb25lbnQgfSBmcm9tICcuLi8uLi9iYXNlLWlucHV0LmNvbXBvbmVudCc7XG5cbkBDb21wb25lbnQoe1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvY29tcG9uZW50LXNlbGVjdG9yXG4gICAgc2VsZWN0b3I6ICdzdHJpbmctaW5wdXQnLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9zdHJpbmctaW5wdXQuY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsczogWycuL3N0cmluZy1pbnB1dC5jb21wb25lbnQuc2NzcyddXG59KVxuZXhwb3J0IGNsYXNzIFN0cmluZ0lucHV0Q29tcG9uZW50PEVudGl0eVR5cGUgZXh0ZW5kcyBCYXNlRW50aXR5VHlwZTxFbnRpdHlUeXBlPj5cbiAgICBleHRlbmRzIE5neE1hdEVudGl0eUJhc2VJbnB1dENvbXBvbmVudDxFbnRpdHlUeXBlLCBEZWNvcmF0b3JUeXBlcy5TVFJJTkcsIHN0cmluZz4gaW1wbGVtZW50cyBPbkluaXQge1xufSIsIjxtYXQtZm9ybS1maWVsZD5cbiAgICA8bWF0LWxhYmVsPnt7bWV0YWRhdGEuZGlzcGxheU5hbWV9fTwvbWF0LWxhYmVsPlxuICAgIDxpbnB1dFxuICAgICAgICBtYXRJbnB1dFxuICAgICAgICBbKG5nTW9kZWwpXT1cInByb3BlcnR5VmFsdWVcIlxuICAgICAgICBbbmFtZV09XCJrZXkudG9TdHJpbmcoKSArIHV1aWRcIlxuICAgICAgICAjbW9kZWw9XCJuZ01vZGVsXCJcbiAgICAgICAgW3JlcXVpcmVkXT1cIm1ldGFkYXRhLnJlcXVpcmVkKGVudGl0eSlcIlxuICAgICAgICBbcGF0dGVybl09XCJtZXRhZGF0YS5yZWdleCA/PyAnW1xcXFxzXFxcXFNdKidcIlxuICAgICAgICBbbWlubGVuZ3RoXT1cIm1ldGFkYXRhLm1pbkxlbmd0aCA/PyBudWxsXCJcbiAgICAgICAgW21heGxlbmd0aF09XCJtZXRhZGF0YS5tYXhMZW5ndGggPz8gbnVsbFwiXG4gICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cImVtaXRDaGFuZ2UoKVwiXG4gICAgICAgIFtkaXNhYmxlZF09XCJpc1JlYWRPbmx5XCJcbiAgICA+XG4gICAgPG1hdC1lcnJvcj57e2dldFZhbGlkYXRpb25FcnJvck1lc3NhZ2UobW9kZWwpfX08L21hdC1lcnJvcj5cbjwvbWF0LWZvcm0tZmllbGQ+Il19
17
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RyaW5nLWlucHV0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1tYXRlcmlhbC1lbnRpdHkvc3JjL2NvbXBvbmVudHMvaW5wdXQvc3RyaW5nL3N0cmluZy1pbnB1dC9zdHJpbmctaW5wdXQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LW1hdGVyaWFsLWVudGl0eS9zcmMvY29tcG9uZW50cy9pbnB1dC9zdHJpbmcvc3RyaW5nLWlucHV0L3N0cmluZy1pbnB1dC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSx3Q0FBd0M7QUFDeEMsT0FBTyxFQUFFLFNBQVMsRUFBVSxNQUFNLGVBQWUsQ0FBQztBQUdsRCxPQUFPLEVBQUUsOEJBQThCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQzs7Ozs7QUFFNUUsK0RBQStEO0FBTS9ELE1BQU0sT0FBTyxvQkFDVCxTQUFRLDhCQUF5RTt1R0FEeEUsb0JBQW9COzJGQUFwQixvQkFBb0IsMkVDWmpDLGduQkFnQmlCOzsyRkRKSixvQkFBb0I7a0JBTGhDLFNBQVM7K0JBQ0ksY0FBYyIsInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIGpzZG9jL3JlcXVpcmUtanNkb2MgKi9cbmltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBCYXNlRW50aXR5VHlwZSB9IGZyb20gJy4uLy4uLy4uLy4uL2NsYXNzZXMvZW50aXR5Lm1vZGVsJztcbmltcG9ydCB7IERlY29yYXRvclR5cGVzIH0gZnJvbSAnLi4vLi4vLi4vLi4vZGVjb3JhdG9ycy9iYXNlL2RlY29yYXRvci10eXBlcy5lbnVtJztcbmltcG9ydCB7IE5neE1hdEVudGl0eUJhc2VJbnB1dENvbXBvbmVudCB9IGZyb20gJy4uLy4uL2Jhc2UtaW5wdXQuY29tcG9uZW50JztcblxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGFuZ3VsYXIvcHJlZmVyLXN0YW5kYWxvbmUtY29tcG9uZW50XG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ3N0cmluZy1pbnB1dCcsXG4gICAgdGVtcGxhdGVVcmw6ICcuL3N0cmluZy1pbnB1dC5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJy4vc3RyaW5nLWlucHV0LmNvbXBvbmVudC5zY3NzJ11cbn0pXG5leHBvcnQgY2xhc3MgU3RyaW5nSW5wdXRDb21wb25lbnQ8RW50aXR5VHlwZSBleHRlbmRzIEJhc2VFbnRpdHlUeXBlPEVudGl0eVR5cGU+PlxuICAgIGV4dGVuZHMgTmd4TWF0RW50aXR5QmFzZUlucHV0Q29tcG9uZW50PEVudGl0eVR5cGUsIERlY29yYXRvclR5cGVzLlNUUklORywgc3RyaW5nPiBpbXBsZW1lbnRzIE9uSW5pdCB7XG59IiwiPCEtLSBlc2xpbnQtZGlzYWJsZSBhbmd1bGFyL25vLWNhbGwtZXhwcmVzc2lvbiAtLT5cbjxtYXQtZm9ybS1maWVsZD5cbiAgICA8bWF0LWxhYmVsPnt7bWV0YWRhdGEuZGlzcGxheU5hbWV9fTwvbWF0LWxhYmVsPlxuICAgIDxpbnB1dFxuICAgICAgICAjbW9kZWw9XCJuZ01vZGVsXCJcbiAgICAgICAgbWF0SW5wdXRcbiAgICAgICAgW25hbWVdPVwibmFtZVwiXG4gICAgICAgIFtyZXF1aXJlZF09XCJtZXRhZGF0YS5yZXF1aXJlZChlbnRpdHkpXCJcbiAgICAgICAgW3BhdHRlcm5dPVwibWV0YWRhdGEucmVnZXggPz8gJ1tcXFxcc1xcXFxTXSonXCJcbiAgICAgICAgW21pbmxlbmd0aF09XCJtZXRhZGF0YS5taW5MZW5ndGggPz8gbnVsbFwiXG4gICAgICAgIFttYXhsZW5ndGhdPVwibWV0YWRhdGEubWF4TGVuZ3RoID8/IG51bGxcIlxuICAgICAgICBbZGlzYWJsZWRdPVwiaXNSZWFkT25seVwiXG4gICAgICAgIFsobmdNb2RlbCldPVwicHJvcGVydHlWYWx1ZVwiXG4gICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cImVtaXRDaGFuZ2UoKVwiXG4gICAgPlxuICAgIDxtYXQtZXJyb3I+e3tnZXRWYWxpZGF0aW9uRXJyb3JNZXNzYWdlKG1vZGVsKX19PC9tYXQtZXJyb3I+XG48L21hdC1mb3JtLWZpZWxkPiJdfQ==
@@ -6,11 +6,12 @@ import { EntityUtilities } from '../../../../utilities/entity.utilities';
6
6
  import { NgxMatEntityBaseInputComponent } from '../../base-input.component';
7
7
  import * as i0 from "@angular/core";
8
8
  import * as i1 from "@angular/common";
9
- import * as i2 from "@angular/material/input";
10
- import * as i3 from "@angular/material/form-field";
11
- import * as i4 from "@angular/forms";
12
- import * as i5 from "@angular/material/button";
9
+ import * as i2 from "@angular/forms";
10
+ import * as i3 from "@angular/material/button";
11
+ import * as i4 from "@angular/material/form-field";
12
+ import * as i5 from "@angular/material/input";
13
13
  import * as i6 from "../../../../directives/password-match.directive";
14
+ // eslint-disable-next-line angular/prefer-standalone-component
14
15
  export class StringPasswordInputComponent extends NgxMatEntityBaseInputComponent {
15
16
  hide = true;
16
17
  hideConfirm = true;
@@ -31,10 +32,10 @@ export class StringPasswordInputComponent extends NgxMatEntityBaseInputComponent
31
32
  this.emitChange();
32
33
  }
33
34
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.0", ngImport: i0, type: StringPasswordInputComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
34
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.0", type: StringPasswordInputComponent, selector: "string-password-input", usesInheritance: true, ngImport: i0, template: "<div class=\"password-row\">\n <mat-form-field>\n <mat-label>{{metadata.displayName}}</mat-label>\n <input\n [type]=\"hide ? 'password' : 'text'\"\n matInput\n [(ngModel)]=\"propertyValue\"\n [name]=\"key.toString() + uuid\"\n #model=\"ngModel\"\n [required]=\"metadata.required(entity)\"\n [pattern]=\"metadata.regex ?? '[\\\\s\\\\S]*'\"\n [minlength]=\"metadata.minLength ?? null\"\n [maxlength]=\"metadata.maxLength ?? null\"\n (ngModelChange)=\"passwordInput()\"\n [disabled]=\"isReadOnly\"\n >\n <button type=\"button\" (click)=\"hide = !hide\" mat-icon-button matSuffix>\n <div class=\"d-flex justify-content-center align-items-center\">\n <i *ngIf=\"hide\" class=\"fas fa-eye-slash\"></i>\n <i *ngIf=\"!hide\" class=\"fas fa-eye\"></i>\n </div>\n </button>\n <mat-error>{{getValidationErrorMessage(model)}}</mat-error>\n </mat-form-field>\n <mat-form-field *ngIf=\"metadata.needsConfirmation\">\n <mat-label>{{metadata.confirmationDisplayName}}</mat-label>\n <input\n [type]=\"hideConfirm ? 'password' : 'text'\"\n matInput\n [(ngModel)]=\"confirmPassword\"\n [name]=\"key.toString() + 'confirmPassword' + uuid\"\n #confirmModel=\"ngModel\"\n [required]=\"confirmRequired\"\n (ngModelChange)=\"passwordInput()\"\n [disabled]=\"isReadOnly\"\n [passwordMatch]=\"propertyValue\"\n >\n <button type=\"button\" (click)=\"hideConfirm = !hideConfirm\" mat-icon-button matSuffix>\n <div class=\"d-flex justify-content-center align-items-center\">\n <i *ngIf=\"hideConfirm\" class=\"fas fa-eye-slash\"></i>\n <i *ngIf=\"!hideConfirm\" class=\"fas fa-eye\"></i>\n </div>\n </button>\n <mat-error>{{getValidationErrorMessage(confirmModel)}}</mat-error>\n </mat-form-field>\n</div>", styles: [".password-row{display:flex;justify-content:space-evenly;column-gap:24px}.password-row mat-form-field{flex:1 1 0}\n"], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.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: i3.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i3.MatLabel, selector: "mat-label" }, { kind: "directive", type: i3.MatError, selector: "mat-error, [matError]", inputs: ["id"] }, { kind: "directive", type: i3.MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }, { kind: "directive", type: i4.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i4.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i4.MinLengthValidator, selector: "[minlength][formControlName],[minlength][formControl],[minlength][ngModel]", inputs: ["minlength"] }, { kind: "directive", type: i4.MaxLengthValidator, selector: "[maxlength][formControlName],[maxlength][formControl],[maxlength][ngModel]", inputs: ["maxlength"] }, { kind: "directive", type: i4.PatternValidator, selector: "[pattern][formControlName],[pattern][formControl],[pattern][ngModel]", inputs: ["pattern"] }, { kind: "directive", type: i4.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i5.MatIconButton, selector: "button[mat-icon-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "directive", type: i6.PasswordMatchValidatorDirective, selector: "[passwordMatch]", inputs: ["passwordMatch"] }] });
35
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.0", type: StringPasswordInputComponent, selector: "string-password-input", usesInheritance: true, ngImport: i0, template: "<!-- eslint-disable angular/no-call-expression -->\n<div class=\"password-row\">\n <mat-form-field>\n <mat-label>{{metadata.displayName}}</mat-label>\n <input\n #model=\"ngModel\"\n matInput\n [type]=\"hide ? 'password' : 'text'\"\n [name]=\"name\"\n [required]=\"metadata.required(entity)\"\n [pattern]=\"metadata.regex ?? '[\\\\s\\\\S]*'\"\n [minlength]=\"metadata.minLength ?? null\"\n [maxlength]=\"metadata.maxLength ?? null\"\n [disabled]=\"isReadOnly\"\n [(ngModel)]=\"propertyValue\"\n (ngModelChange)=\"passwordInput()\"\n >\n <button type=\"button\" mat-icon-button matSuffix (click)=\"hide = !hide\">\n <div class=\"d-flex justify-content-center align-items-center\">\n <i *ngIf=\"hide\" class=\"fas fa-eye-slash\"></i>\n <i *ngIf=\"!hide\" class=\"fas fa-eye\"></i>\n </div>\n </button>\n <mat-error>{{getValidationErrorMessage(model)}}</mat-error>\n </mat-form-field>\n <mat-form-field *ngIf=\"metadata.needsConfirmation\">\n <mat-label>{{metadata.confirmationDisplayName}}</mat-label>\n <input\n #confirmModel=\"ngModel\"\n matInput\n [type]=\"hideConfirm ? 'password' : 'text'\"\n [name]=\"name + 'confirmPassword'\"\n [required]=\"confirmRequired\"\n [disabled]=\"isReadOnly\"\n [passwordMatch]=\"propertyValue\"\n [(ngModel)]=\"confirmPassword\"\n (ngModelChange)=\"passwordInput()\"\n >\n <button type=\"button\" mat-icon-button matSuffix (click)=\"hideConfirm = !hideConfirm\">\n <div class=\"d-flex justify-content-center align-items-center\">\n <i *ngIf=\"hideConfirm\" class=\"fas fa-eye-slash\"></i>\n <i *ngIf=\"!hideConfirm\" class=\"fas fa-eye\"></i>\n </div>\n </button>\n <mat-error>{{getValidationErrorMessage(confirmModel)}}</mat-error>\n </mat-form-field>\n</div>", styles: [".password-row{display:flex;justify-content:space-evenly;column-gap:24px}.password-row mat-form-field{flex:1 1 0}\n"], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i2.MinLengthValidator, selector: "[minlength][formControlName],[minlength][formControl],[minlength][ngModel]", inputs: ["minlength"] }, { kind: "directive", type: i2.MaxLengthValidator, selector: "[maxlength][formControlName],[maxlength][formControl],[maxlength][ngModel]", inputs: ["maxlength"] }, { kind: "directive", type: i2.PatternValidator, selector: "[pattern][formControlName],[pattern][formControl],[pattern][ngModel]", inputs: ["pattern"] }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i3.MatIconButton, selector: "button[mat-icon-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { 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: "directive", type: i4.MatError, selector: "mat-error, [matError]", inputs: ["id"] }, { kind: "directive", type: i4.MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }, { kind: "directive", type: i5.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: "directive", type: i6.PasswordMatchValidatorDirective, selector: "[passwordMatch]", inputs: ["passwordMatch"] }] });
35
36
  }
36
37
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.0", ngImport: i0, type: StringPasswordInputComponent, decorators: [{
37
38
  type: Component,
38
- args: [{ selector: 'string-password-input', template: "<div class=\"password-row\">\n <mat-form-field>\n <mat-label>{{metadata.displayName}}</mat-label>\n <input\n [type]=\"hide ? 'password' : 'text'\"\n matInput\n [(ngModel)]=\"propertyValue\"\n [name]=\"key.toString() + uuid\"\n #model=\"ngModel\"\n [required]=\"metadata.required(entity)\"\n [pattern]=\"metadata.regex ?? '[\\\\s\\\\S]*'\"\n [minlength]=\"metadata.minLength ?? null\"\n [maxlength]=\"metadata.maxLength ?? null\"\n (ngModelChange)=\"passwordInput()\"\n [disabled]=\"isReadOnly\"\n >\n <button type=\"button\" (click)=\"hide = !hide\" mat-icon-button matSuffix>\n <div class=\"d-flex justify-content-center align-items-center\">\n <i *ngIf=\"hide\" class=\"fas fa-eye-slash\"></i>\n <i *ngIf=\"!hide\" class=\"fas fa-eye\"></i>\n </div>\n </button>\n <mat-error>{{getValidationErrorMessage(model)}}</mat-error>\n </mat-form-field>\n <mat-form-field *ngIf=\"metadata.needsConfirmation\">\n <mat-label>{{metadata.confirmationDisplayName}}</mat-label>\n <input\n [type]=\"hideConfirm ? 'password' : 'text'\"\n matInput\n [(ngModel)]=\"confirmPassword\"\n [name]=\"key.toString() + 'confirmPassword' + uuid\"\n #confirmModel=\"ngModel\"\n [required]=\"confirmRequired\"\n (ngModelChange)=\"passwordInput()\"\n [disabled]=\"isReadOnly\"\n [passwordMatch]=\"propertyValue\"\n >\n <button type=\"button\" (click)=\"hideConfirm = !hideConfirm\" mat-icon-button matSuffix>\n <div class=\"d-flex justify-content-center align-items-center\">\n <i *ngIf=\"hideConfirm\" class=\"fas fa-eye-slash\"></i>\n <i *ngIf=\"!hideConfirm\" class=\"fas fa-eye\"></i>\n </div>\n </button>\n <mat-error>{{getValidationErrorMessage(confirmModel)}}</mat-error>\n </mat-form-field>\n</div>", styles: [".password-row{display:flex;justify-content:space-evenly;column-gap:24px}.password-row mat-form-field{flex:1 1 0}\n"] }]
39
+ args: [{ selector: 'string-password-input', template: "<!-- eslint-disable angular/no-call-expression -->\n<div class=\"password-row\">\n <mat-form-field>\n <mat-label>{{metadata.displayName}}</mat-label>\n <input\n #model=\"ngModel\"\n matInput\n [type]=\"hide ? 'password' : 'text'\"\n [name]=\"name\"\n [required]=\"metadata.required(entity)\"\n [pattern]=\"metadata.regex ?? '[\\\\s\\\\S]*'\"\n [minlength]=\"metadata.minLength ?? null\"\n [maxlength]=\"metadata.maxLength ?? null\"\n [disabled]=\"isReadOnly\"\n [(ngModel)]=\"propertyValue\"\n (ngModelChange)=\"passwordInput()\"\n >\n <button type=\"button\" mat-icon-button matSuffix (click)=\"hide = !hide\">\n <div class=\"d-flex justify-content-center align-items-center\">\n <i *ngIf=\"hide\" class=\"fas fa-eye-slash\"></i>\n <i *ngIf=\"!hide\" class=\"fas fa-eye\"></i>\n </div>\n </button>\n <mat-error>{{getValidationErrorMessage(model)}}</mat-error>\n </mat-form-field>\n <mat-form-field *ngIf=\"metadata.needsConfirmation\">\n <mat-label>{{metadata.confirmationDisplayName}}</mat-label>\n <input\n #confirmModel=\"ngModel\"\n matInput\n [type]=\"hideConfirm ? 'password' : 'text'\"\n [name]=\"name + 'confirmPassword'\"\n [required]=\"confirmRequired\"\n [disabled]=\"isReadOnly\"\n [passwordMatch]=\"propertyValue\"\n [(ngModel)]=\"confirmPassword\"\n (ngModelChange)=\"passwordInput()\"\n >\n <button type=\"button\" mat-icon-button matSuffix (click)=\"hideConfirm = !hideConfirm\">\n <div class=\"d-flex justify-content-center align-items-center\">\n <i *ngIf=\"hideConfirm\" class=\"fas fa-eye-slash\"></i>\n <i *ngIf=\"!hideConfirm\" class=\"fas fa-eye\"></i>\n </div>\n </button>\n <mat-error>{{getValidationErrorMessage(confirmModel)}}</mat-error>\n </mat-form-field>\n</div>", styles: [".password-row{display:flex;justify-content:space-evenly;column-gap:24px}.password-row mat-form-field{flex:1 1 0}\n"] }]
39
40
  }] });
40
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RyaW5nLXBhc3N3b3JkLWlucHV0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1tYXRlcmlhbC1lbnRpdHkvc3JjL2NvbXBvbmVudHMvaW5wdXQvc3RyaW5nL3N0cmluZy1wYXNzd29yZC1pbnB1dC9zdHJpbmctcGFzc3dvcmQtaW5wdXQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LW1hdGVyaWFsLWVudGl0eS9zcmMvY29tcG9uZW50cy9pbnB1dC9zdHJpbmcvc3RyaW5nLXBhc3N3b3JkLWlucHV0L3N0cmluZy1wYXNzd29yZC1pbnB1dC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSx3Q0FBd0M7QUFDeEMsT0FBTyxFQUFFLFNBQVMsRUFBVSxNQUFNLGVBQWUsQ0FBQztBQUdsRCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sNENBQTRDLENBQUM7QUFDN0UsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sNkNBQTZDLENBQUM7QUFDL0UsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHdDQUF3QyxDQUFDO0FBQ3pFLE9BQU8sRUFBRSw4QkFBOEIsRUFBRSxNQUFNLDRCQUE0QixDQUFDOzs7Ozs7OztBQVE1RSxNQUFNLE9BQU8sNEJBQ1QsU0FBUSw4QkFBa0Y7SUFFMUYsSUFBSSxHQUFZLElBQUksQ0FBQztJQUNyQixXQUFXLEdBQVksSUFBSSxDQUFDO0lBRTVCLGVBQWUsR0FBWSxLQUFLLENBQUM7SUFFakMsSUFBSSxlQUFlO1FBQ2YsT0FBTyxnQkFBZ0IsQ0FBQyxXQUFXLENBQUMsZUFBZSxDQUFDLG9CQUFvQixFQUFFLElBQUksQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLEdBQUcsQ0FBdUIsQ0FBQztJQUMzSCxDQUFDO0lBRUQsSUFBSSxlQUFlLENBQUMsS0FBeUI7UUFDekMsZ0JBQWdCLENBQUMsY0FBYyxDQUFDLGVBQWUsQ0FBQyxvQkFBb0IsRUFBRSxLQUFLLEVBQUUsSUFBSSxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDeEcsQ0FBQztJQUVRLFFBQVE7UUFDYixLQUFLLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDakIsSUFBSSxDQUFDLGVBQWUsR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBQ25ELElBQUksQ0FBQyxlQUFlLEdBQUcsZUFBZSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUM7SUFDekUsQ0FBQztJQUVELGFBQWE7UUFDVCxJQUFJLENBQUMsZUFBZSxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUM7UUFDbkQsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO0lBQ3RCLENBQUM7dUdBekJRLDRCQUE0QjsyRkFBNUIsNEJBQTRCLG9GQ2Z6QyxrakVBNkNNOzsyRkQ5Qk8sNEJBQTRCO2tCQU54QyxTQUFTOytCQUVJLHVCQUF1QiIsInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIGpzZG9jL3JlcXVpcmUtanNkb2MgKi9cbmltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBCYXNlRW50aXR5VHlwZSB9IGZyb20gJy4uLy4uLy4uLy4uL2NsYXNzZXMvZW50aXR5Lm1vZGVsJztcbmltcG9ydCB7IERlY29yYXRvclR5cGVzIH0gZnJvbSAnLi4vLi4vLi4vLi4vZGVjb3JhdG9ycy9iYXNlL2RlY29yYXRvci10eXBlcy5lbnVtJztcbmltcG9ydCB7IExvZGFzaFV0aWxpdGllcyB9IGZyb20gJy4uLy4uLy4uLy4uL2VuY2Fwc3VsYXRpb24vbG9kYXNoLnV0aWxpdGllcyc7XG5pbXBvcnQgeyBSZWZsZWN0VXRpbGl0aWVzIH0gZnJvbSAnLi4vLi4vLi4vLi4vZW5jYXBzdWxhdGlvbi9yZWZsZWN0LnV0aWxpdGllcyc7XG5pbXBvcnQgeyBFbnRpdHlVdGlsaXRpZXMgfSBmcm9tICcuLi8uLi8uLi8uLi91dGlsaXRpZXMvZW50aXR5LnV0aWxpdGllcyc7XG5pbXBvcnQgeyBOZ3hNYXRFbnRpdHlCYXNlSW5wdXRDb21wb25lbnQgfSBmcm9tICcuLi8uLi9iYXNlLWlucHV0LmNvbXBvbmVudCc7XG5cbkBDb21wb25lbnQoe1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvY29tcG9uZW50LXNlbGVjdG9yXG4gICAgc2VsZWN0b3I6ICdzdHJpbmctcGFzc3dvcmQtaW5wdXQnLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9zdHJpbmctcGFzc3dvcmQtaW5wdXQuY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsczogWycuL3N0cmluZy1wYXNzd29yZC1pbnB1dC5jb21wb25lbnQuc2NzcyddXG59KVxuZXhwb3J0IGNsYXNzIFN0cmluZ1Bhc3N3b3JkSW5wdXRDb21wb25lbnQ8RW50aXR5VHlwZSBleHRlbmRzIEJhc2VFbnRpdHlUeXBlPEVudGl0eVR5cGU+PlxuICAgIGV4dGVuZHMgTmd4TWF0RW50aXR5QmFzZUlucHV0Q29tcG9uZW50PEVudGl0eVR5cGUsIERlY29yYXRvclR5cGVzLlNUUklOR19QQVNTV09SRCwgc3RyaW5nPiBpbXBsZW1lbnRzIE9uSW5pdCB7XG5cbiAgICBoaWRlOiBib29sZWFuID0gdHJ1ZTtcbiAgICBoaWRlQ29uZmlybTogYm9vbGVhbiA9IHRydWU7XG5cbiAgICBjb25maXJtUmVxdWlyZWQ6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAgIGdldCBjb25maXJtUGFzc3dvcmQoKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgcmV0dXJuIFJlZmxlY3RVdGlsaXRpZXMuZ2V0TWV0YWRhdGEoRW50aXR5VXRpbGl0aWVzLkNPTkZJUk1fUEFTU1dPUkRfS0VZLCB0aGlzLmVudGl0eSwgdGhpcy5rZXkpIGFzIHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICBzZXQgY29uZmlybVBhc3N3b3JkKHZhbHVlOiBzdHJpbmcgfCB1bmRlZmluZWQpIHtcbiAgICAgICAgUmVmbGVjdFV0aWxpdGllcy5kZWZpbmVNZXRhZGF0YShFbnRpdHlVdGlsaXRpZXMuQ09ORklSTV9QQVNTV09SRF9LRVksIHZhbHVlLCB0aGlzLmVudGl0eSwgdGhpcy5rZXkpO1xuICAgIH1cblxuICAgIG92ZXJyaWRlIG5nT25Jbml0KCk6IHZvaWQge1xuICAgICAgICBzdXBlci5uZ09uSW5pdCgpO1xuICAgICAgICB0aGlzLmNvbmZpcm1SZXF1aXJlZCA9IEJvb2xlYW4odGhpcy5wcm9wZXJ0eVZhbHVlKTtcbiAgICAgICAgdGhpcy5jb25maXJtUGFzc3dvcmQgPSBMb2Rhc2hVdGlsaXRpZXMuY2xvbmVEZWVwKHRoaXMucHJvcGVydHlWYWx1ZSk7XG4gICAgfVxuXG4gICAgcGFzc3dvcmRJbnB1dCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5jb25maXJtUmVxdWlyZWQgPSBCb29sZWFuKHRoaXMucHJvcGVydHlWYWx1ZSk7XG4gICAgICAgIHRoaXMuZW1pdENoYW5nZSgpO1xuICAgIH1cbn0iLCI8ZGl2IGNsYXNzPVwicGFzc3dvcmQtcm93XCI+XG4gICAgPG1hdC1mb3JtLWZpZWxkPlxuICAgICAgICA8bWF0LWxhYmVsPnt7bWV0YWRhdGEuZGlzcGxheU5hbWV9fTwvbWF0LWxhYmVsPlxuICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgIFt0eXBlXT1cImhpZGUgPyAncGFzc3dvcmQnIDogJ3RleHQnXCJcbiAgICAgICAgICAgIG1hdElucHV0XG4gICAgICAgICAgICBbKG5nTW9kZWwpXT1cInByb3BlcnR5VmFsdWVcIlxuICAgICAgICAgICAgW25hbWVdPVwia2V5LnRvU3RyaW5nKCkgKyB1dWlkXCJcbiAgICAgICAgICAgICNtb2RlbD1cIm5nTW9kZWxcIlxuICAgICAgICAgICAgW3JlcXVpcmVkXT1cIm1ldGFkYXRhLnJlcXVpcmVkKGVudGl0eSlcIlxuICAgICAgICAgICAgW3BhdHRlcm5dPVwibWV0YWRhdGEucmVnZXggPz8gJ1tcXFxcc1xcXFxTXSonXCJcbiAgICAgICAgICAgIFttaW5sZW5ndGhdPVwibWV0YWRhdGEubWluTGVuZ3RoID8/IG51bGxcIlxuICAgICAgICAgICAgW21heGxlbmd0aF09XCJtZXRhZGF0YS5tYXhMZW5ndGggPz8gbnVsbFwiXG4gICAgICAgICAgICAobmdNb2RlbENoYW5nZSk9XCJwYXNzd29yZElucHV0KClcIlxuICAgICAgICAgICAgW2Rpc2FibGVkXT1cImlzUmVhZE9ubHlcIlxuICAgICAgICA+XG4gICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIChjbGljayk9XCJoaWRlID0gIWhpZGVcIiBtYXQtaWNvbi1idXR0b24gbWF0U3VmZml4PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGFsaWduLWl0ZW1zLWNlbnRlclwiPlxuICAgICAgICAgICAgICAgIDxpICpuZ0lmPVwiaGlkZVwiIGNsYXNzPVwiZmFzIGZhLWV5ZS1zbGFzaFwiPjwvaT5cbiAgICAgICAgICAgICAgICA8aSAqbmdJZj1cIiFoaWRlXCIgY2xhc3M9XCJmYXMgZmEtZXllXCI+PC9pPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8bWF0LWVycm9yPnt7Z2V0VmFsaWRhdGlvbkVycm9yTWVzc2FnZShtb2RlbCl9fTwvbWF0LWVycm9yPlxuICAgIDwvbWF0LWZvcm0tZmllbGQ+XG4gICAgPG1hdC1mb3JtLWZpZWxkICpuZ0lmPVwibWV0YWRhdGEubmVlZHNDb25maXJtYXRpb25cIj5cbiAgICAgICAgPG1hdC1sYWJlbD57e21ldGFkYXRhLmNvbmZpcm1hdGlvbkRpc3BsYXlOYW1lfX08L21hdC1sYWJlbD5cbiAgICAgICAgPGlucHV0XG4gICAgICAgICAgICBbdHlwZV09XCJoaWRlQ29uZmlybSA/ICdwYXNzd29yZCcgOiAndGV4dCdcIlxuICAgICAgICAgICAgbWF0SW5wdXRcbiAgICAgICAgICAgIFsobmdNb2RlbCldPVwiY29uZmlybVBhc3N3b3JkXCJcbiAgICAgICAgICAgIFtuYW1lXT1cImtleS50b1N0cmluZygpICsgJ2NvbmZpcm1QYXNzd29yZCcgKyB1dWlkXCJcbiAgICAgICAgICAgICNjb25maXJtTW9kZWw9XCJuZ01vZGVsXCJcbiAgICAgICAgICAgIFtyZXF1aXJlZF09XCJjb25maXJtUmVxdWlyZWRcIlxuICAgICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwicGFzc3dvcmRJbnB1dCgpXCJcbiAgICAgICAgICAgIFtkaXNhYmxlZF09XCJpc1JlYWRPbmx5XCJcbiAgICAgICAgICAgIFtwYXNzd29yZE1hdGNoXT1cInByb3BlcnR5VmFsdWVcIlxuICAgICAgICA+XG4gICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIChjbGljayk9XCJoaWRlQ29uZmlybSA9ICFoaWRlQ29uZmlybVwiIG1hdC1pY29uLWJ1dHRvbiBtYXRTdWZmaXg+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXIgYWxpZ24taXRlbXMtY2VudGVyXCI+XG4gICAgICAgICAgICAgICAgPGkgKm5nSWY9XCJoaWRlQ29uZmlybVwiIGNsYXNzPVwiZmFzIGZhLWV5ZS1zbGFzaFwiPjwvaT5cbiAgICAgICAgICAgICAgICA8aSAqbmdJZj1cIiFoaWRlQ29uZmlybVwiIGNsYXNzPVwiZmFzIGZhLWV5ZVwiPjwvaT5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgPG1hdC1lcnJvcj57e2dldFZhbGlkYXRpb25FcnJvck1lc3NhZ2UoY29uZmlybU1vZGVsKX19PC9tYXQtZXJyb3I+XG4gICAgPC9tYXQtZm9ybS1maWVsZD5cbjwvZGl2PiJdfQ==
41
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RyaW5nLXBhc3N3b3JkLWlucHV0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1tYXRlcmlhbC1lbnRpdHkvc3JjL2NvbXBvbmVudHMvaW5wdXQvc3RyaW5nL3N0cmluZy1wYXNzd29yZC1pbnB1dC9zdHJpbmctcGFzc3dvcmQtaW5wdXQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LW1hdGVyaWFsLWVudGl0eS9zcmMvY29tcG9uZW50cy9pbnB1dC9zdHJpbmcvc3RyaW5nLXBhc3N3b3JkLWlucHV0L3N0cmluZy1wYXNzd29yZC1pbnB1dC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSx3Q0FBd0M7QUFDeEMsT0FBTyxFQUFFLFNBQVMsRUFBVSxNQUFNLGVBQWUsQ0FBQztBQUdsRCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sNENBQTRDLENBQUM7QUFDN0UsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sNkNBQTZDLENBQUM7QUFDL0UsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHdDQUF3QyxDQUFDO0FBQ3pFLE9BQU8sRUFBRSw4QkFBOEIsRUFBRSxNQUFNLDRCQUE0QixDQUFDOzs7Ozs7OztBQUU1RSwrREFBK0Q7QUFNL0QsTUFBTSxPQUFPLDRCQUNULFNBQVEsOEJBQWtGO0lBRTFGLElBQUksR0FBWSxJQUFJLENBQUM7SUFDckIsV0FBVyxHQUFZLElBQUksQ0FBQztJQUU1QixlQUFlLEdBQVksS0FBSyxDQUFDO0lBRWpDLElBQUksZUFBZTtRQUNmLE9BQU8sZ0JBQWdCLENBQUMsV0FBVyxDQUFDLGVBQWUsQ0FBQyxvQkFBb0IsRUFBRSxJQUFJLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxHQUFHLENBQXVCLENBQUM7SUFDM0gsQ0FBQztJQUVELElBQUksZUFBZSxDQUFDLEtBQXlCO1FBQ3pDLGdCQUFnQixDQUFDLGNBQWMsQ0FBQyxlQUFlLENBQUMsb0JBQW9CLEVBQUUsS0FBSyxFQUFFLElBQUksQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ3hHLENBQUM7SUFFUSxRQUFRO1FBQ2IsS0FBSyxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQ2pCLElBQUksQ0FBQyxlQUFlLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUNuRCxJQUFJLENBQUMsZUFBZSxHQUFHLGVBQWUsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDO0lBQ3pFLENBQUM7SUFFRCxhQUFhO1FBQ1QsSUFBSSxDQUFDLGVBQWUsR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBQ25ELElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztJQUN0QixDQUFDO3VHQXpCUSw0QkFBNEI7MkZBQTVCLDRCQUE0QixvRkNmekMsb2tFQThDTTs7MkZEL0JPLDRCQUE0QjtrQkFMeEMsU0FBUzsrQkFDSSx1QkFBdUIiLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSBqc2RvYy9yZXF1aXJlLWpzZG9jICovXG5pbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQmFzZUVudGl0eVR5cGUgfSBmcm9tICcuLi8uLi8uLi8uLi9jbGFzc2VzL2VudGl0eS5tb2RlbCc7XG5pbXBvcnQgeyBEZWNvcmF0b3JUeXBlcyB9IGZyb20gJy4uLy4uLy4uLy4uL2RlY29yYXRvcnMvYmFzZS9kZWNvcmF0b3ItdHlwZXMuZW51bSc7XG5pbXBvcnQgeyBMb2Rhc2hVdGlsaXRpZXMgfSBmcm9tICcuLi8uLi8uLi8uLi9lbmNhcHN1bGF0aW9uL2xvZGFzaC51dGlsaXRpZXMnO1xuaW1wb3J0IHsgUmVmbGVjdFV0aWxpdGllcyB9IGZyb20gJy4uLy4uLy4uLy4uL2VuY2Fwc3VsYXRpb24vcmVmbGVjdC51dGlsaXRpZXMnO1xuaW1wb3J0IHsgRW50aXR5VXRpbGl0aWVzIH0gZnJvbSAnLi4vLi4vLi4vLi4vdXRpbGl0aWVzL2VudGl0eS51dGlsaXRpZXMnO1xuaW1wb3J0IHsgTmd4TWF0RW50aXR5QmFzZUlucHV0Q29tcG9uZW50IH0gZnJvbSAnLi4vLi4vYmFzZS1pbnB1dC5jb21wb25lbnQnO1xuXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgYW5ndWxhci9wcmVmZXItc3RhbmRhbG9uZS1jb21wb25lbnRcbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnc3RyaW5nLXBhc3N3b3JkLWlucHV0JyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vc3RyaW5nLXBhc3N3b3JkLWlucHV0LmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybHM6IFsnLi9zdHJpbmctcGFzc3dvcmQtaW5wdXQuY29tcG9uZW50LnNjc3MnXVxufSlcbmV4cG9ydCBjbGFzcyBTdHJpbmdQYXNzd29yZElucHV0Q29tcG9uZW50PEVudGl0eVR5cGUgZXh0ZW5kcyBCYXNlRW50aXR5VHlwZTxFbnRpdHlUeXBlPj5cbiAgICBleHRlbmRzIE5neE1hdEVudGl0eUJhc2VJbnB1dENvbXBvbmVudDxFbnRpdHlUeXBlLCBEZWNvcmF0b3JUeXBlcy5TVFJJTkdfUEFTU1dPUkQsIHN0cmluZz4gaW1wbGVtZW50cyBPbkluaXQge1xuXG4gICAgaGlkZTogYm9vbGVhbiA9IHRydWU7XG4gICAgaGlkZUNvbmZpcm06IGJvb2xlYW4gPSB0cnVlO1xuXG4gICAgY29uZmlybVJlcXVpcmVkOiBib29sZWFuID0gZmFsc2U7XG5cbiAgICBnZXQgY29uZmlybVBhc3N3b3JkKCk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gICAgICAgIHJldHVybiBSZWZsZWN0VXRpbGl0aWVzLmdldE1ldGFkYXRhKEVudGl0eVV0aWxpdGllcy5DT05GSVJNX1BBU1NXT1JEX0tFWSwgdGhpcy5lbnRpdHksIHRoaXMua2V5KSBhcyBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgc2V0IGNvbmZpcm1QYXNzd29yZCh2YWx1ZTogc3RyaW5nIHwgdW5kZWZpbmVkKSB7XG4gICAgICAgIFJlZmxlY3RVdGlsaXRpZXMuZGVmaW5lTWV0YWRhdGEoRW50aXR5VXRpbGl0aWVzLkNPTkZJUk1fUEFTU1dPUkRfS0VZLCB2YWx1ZSwgdGhpcy5lbnRpdHksIHRoaXMua2V5KTtcbiAgICB9XG5cbiAgICBvdmVycmlkZSBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICAgICAgc3VwZXIubmdPbkluaXQoKTtcbiAgICAgICAgdGhpcy5jb25maXJtUmVxdWlyZWQgPSBCb29sZWFuKHRoaXMucHJvcGVydHlWYWx1ZSk7XG4gICAgICAgIHRoaXMuY29uZmlybVBhc3N3b3JkID0gTG9kYXNoVXRpbGl0aWVzLmNsb25lRGVlcCh0aGlzLnByb3BlcnR5VmFsdWUpO1xuICAgIH1cblxuICAgIHBhc3N3b3JkSW5wdXQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuY29uZmlybVJlcXVpcmVkID0gQm9vbGVhbih0aGlzLnByb3BlcnR5VmFsdWUpO1xuICAgICAgICB0aGlzLmVtaXRDaGFuZ2UoKTtcbiAgICB9XG59IiwiPCEtLSBlc2xpbnQtZGlzYWJsZSBhbmd1bGFyL25vLWNhbGwtZXhwcmVzc2lvbiAtLT5cbjxkaXYgY2xhc3M9XCJwYXNzd29yZC1yb3dcIj5cbiAgICA8bWF0LWZvcm0tZmllbGQ+XG4gICAgICAgIDxtYXQtbGFiZWw+e3ttZXRhZGF0YS5kaXNwbGF5TmFtZX19PC9tYXQtbGFiZWw+XG4gICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgI21vZGVsPVwibmdNb2RlbFwiXG4gICAgICAgICAgICBtYXRJbnB1dFxuICAgICAgICAgICAgW3R5cGVdPVwiaGlkZSA/ICdwYXNzd29yZCcgOiAndGV4dCdcIlxuICAgICAgICAgICAgW25hbWVdPVwibmFtZVwiXG4gICAgICAgICAgICBbcmVxdWlyZWRdPVwibWV0YWRhdGEucmVxdWlyZWQoZW50aXR5KVwiXG4gICAgICAgICAgICBbcGF0dGVybl09XCJtZXRhZGF0YS5yZWdleCA/PyAnW1xcXFxzXFxcXFNdKidcIlxuICAgICAgICAgICAgW21pbmxlbmd0aF09XCJtZXRhZGF0YS5taW5MZW5ndGggPz8gbnVsbFwiXG4gICAgICAgICAgICBbbWF4bGVuZ3RoXT1cIm1ldGFkYXRhLm1heExlbmd0aCA/PyBudWxsXCJcbiAgICAgICAgICAgIFtkaXNhYmxlZF09XCJpc1JlYWRPbmx5XCJcbiAgICAgICAgICAgIFsobmdNb2RlbCldPVwicHJvcGVydHlWYWx1ZVwiXG4gICAgICAgICAgICAobmdNb2RlbENoYW5nZSk9XCJwYXNzd29yZElucHV0KClcIlxuICAgICAgICA+XG4gICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIG1hdC1pY29uLWJ1dHRvbiBtYXRTdWZmaXggKGNsaWNrKT1cImhpZGUgPSAhaGlkZVwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGFsaWduLWl0ZW1zLWNlbnRlclwiPlxuICAgICAgICAgICAgICAgIDxpICpuZ0lmPVwiaGlkZVwiIGNsYXNzPVwiZmFzIGZhLWV5ZS1zbGFzaFwiPjwvaT5cbiAgICAgICAgICAgICAgICA8aSAqbmdJZj1cIiFoaWRlXCIgY2xhc3M9XCJmYXMgZmEtZXllXCI+PC9pPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8bWF0LWVycm9yPnt7Z2V0VmFsaWRhdGlvbkVycm9yTWVzc2FnZShtb2RlbCl9fTwvbWF0LWVycm9yPlxuICAgIDwvbWF0LWZvcm0tZmllbGQ+XG4gICAgPG1hdC1mb3JtLWZpZWxkICpuZ0lmPVwibWV0YWRhdGEubmVlZHNDb25maXJtYXRpb25cIj5cbiAgICAgICAgPG1hdC1sYWJlbD57e21ldGFkYXRhLmNvbmZpcm1hdGlvbkRpc3BsYXlOYW1lfX08L21hdC1sYWJlbD5cbiAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAjY29uZmlybU1vZGVsPVwibmdNb2RlbFwiXG4gICAgICAgICAgICBtYXRJbnB1dFxuICAgICAgICAgICAgW3R5cGVdPVwiaGlkZUNvbmZpcm0gPyAncGFzc3dvcmQnIDogJ3RleHQnXCJcbiAgICAgICAgICAgIFtuYW1lXT1cIm5hbWUgKyAnY29uZmlybVBhc3N3b3JkJ1wiXG4gICAgICAgICAgICBbcmVxdWlyZWRdPVwiY29uZmlybVJlcXVpcmVkXCJcbiAgICAgICAgICAgIFtkaXNhYmxlZF09XCJpc1JlYWRPbmx5XCJcbiAgICAgICAgICAgIFtwYXNzd29yZE1hdGNoXT1cInByb3BlcnR5VmFsdWVcIlxuICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJjb25maXJtUGFzc3dvcmRcIlxuICAgICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwicGFzc3dvcmRJbnB1dCgpXCJcbiAgICAgICAgPlxuICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBtYXQtaWNvbi1idXR0b24gbWF0U3VmZml4IChjbGljayk9XCJoaWRlQ29uZmlybSA9ICFoaWRlQ29uZmlybVwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGFsaWduLWl0ZW1zLWNlbnRlclwiPlxuICAgICAgICAgICAgICAgIDxpICpuZ0lmPVwiaGlkZUNvbmZpcm1cIiBjbGFzcz1cImZhcyBmYS1leWUtc2xhc2hcIj48L2k+XG4gICAgICAgICAgICAgICAgPGkgKm5nSWY9XCIhaGlkZUNvbmZpcm1cIiBjbGFzcz1cImZhcyBmYS1leWVcIj48L2k+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9idXR0b24+XG4gICAgICAgIDxtYXQtZXJyb3I+e3tnZXRWYWxpZGF0aW9uRXJyb3JNZXNzYWdlKGNvbmZpcm1Nb2RlbCl9fTwvbWF0LWVycm9yPlxuICAgIDwvbWF0LWZvcm0tZmllbGQ+XG48L2Rpdj4iXX0=