@sebgroup/green-angular 4.6.1 → 4.6.3

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 (189) hide show
  1. package/esm2022/src/v-angular/base-control-value-accessor/base-control-value-accessor.component.mjs +9 -9
  2. package/esm2022/src/v-angular/button/button.component.mjs +5 -5
  3. package/esm2022/src/v-angular/character-countdown/character-countdown.directive.mjs +5 -5
  4. package/esm2022/src/v-angular/core/core.globals.mjs +3 -3
  5. package/esm2022/src/v-angular/dropdown/dropdown-list/dropdown-list.component.mjs +4 -4
  6. package/esm2022/src/v-angular/dropdown/typeahead/index.mjs +4 -1
  7. package/esm2022/src/v-angular/dropdown/typeahead/typeahead-dropdown-list/typeahead-dropdown-list.component.mjs +5 -5
  8. package/esm2022/src/v-angular/dropdown/typeahead/typeahead.directive.mjs +177 -0
  9. package/esm2022/src/v-angular/info-circle/info-circle.component.mjs +3 -3
  10. package/esm2022/src/v-angular/input/input.component.mjs +7 -7
  11. package/esm2022/src/v-angular/input-mask/input-mask-format.pipe.mjs +5 -4
  12. package/esm2022/src/v-angular/input-mask/input-mask.directive.mjs +8 -8
  13. package/esm2022/src/v-angular/modal/dialog/dialog.component.mjs +16 -16
  14. package/esm2022/src/v-angular/modal/fold-out/fold-out.directive.mjs +3 -3
  15. package/esm2022/src/v-angular/modal/modal.globals.mjs +3 -3
  16. package/esm2022/src/v-angular/modal/slide-out/slide-out.component.mjs +15 -15
  17. package/esm2022/src/v-angular/textarea/textarea.component.mjs +4 -3
  18. package/esm2022/src/v-angular/textarea/textarea.module.mjs +5 -4
  19. package/esm2022/src/v-angular/tooltip/tooltip.directive.mjs +13 -13
  20. package/esm2022/v-angular/base-control-value-accessor/base-control-value-accessor.component.mjs +287 -0
  21. package/esm2022/v-angular/base-control-value-accessor/base-control-value-accessor.module.mjs +17 -0
  22. package/esm2022/v-angular/base-control-value-accessor/index.mjs +3 -0
  23. package/esm2022/v-angular/breadcrumbs/breadcrumbs.component.mjs +25 -0
  24. package/esm2022/v-angular/breadcrumbs/breadcrumbs.module.mjs +20 -0
  25. package/esm2022/v-angular/breadcrumbs/index.mjs +3 -0
  26. package/esm2022/v-angular/button/button.component.mjs +108 -0
  27. package/esm2022/v-angular/button/button.module.mjs +20 -0
  28. package/esm2022/v-angular/button/index.mjs +3 -0
  29. package/esm2022/v-angular/card/card.component.mjs +11 -0
  30. package/esm2022/v-angular/card/card.module.mjs +18 -0
  31. package/esm2022/v-angular/card/index.mjs +3 -0
  32. package/esm2022/v-angular/character-countdown/character-countdown.directive.mjs +51 -0
  33. package/esm2022/v-angular/character-countdown/character-countdown.module.mjs +18 -0
  34. package/esm2022/v-angular/character-countdown/index.mjs +3 -0
  35. package/esm2022/v-angular/checkbox/checkbox.component.mjs +72 -0
  36. package/esm2022/v-angular/checkbox/checkbox.module.mjs +19 -0
  37. package/esm2022/v-angular/checkbox/index.mjs +3 -0
  38. package/esm2022/v-angular/dropdown/dropdown-list/dropdown-list.component.mjs +256 -0
  39. package/esm2022/v-angular/dropdown/dropdown-list/index.mjs +2 -0
  40. package/esm2022/v-angular/dropdown/dropdown.component.mjs +239 -0
  41. package/esm2022/v-angular/dropdown/dropdown.module.mjs +22 -0
  42. package/esm2022/v-angular/dropdown/index.mjs +6 -0
  43. package/esm2022/v-angular/dropdown/typeahead/index.mjs +6 -0
  44. package/esm2022/v-angular/dropdown/typeahead/typeahead-dropdown-list/typeahead-dropdown-list.component.mjs +98 -0
  45. package/esm2022/v-angular/dropdown/typeahead/typeahead-highlight/typeahead-highlight.component.mjs +85 -0
  46. package/esm2022/v-angular/dropdown/typeahead/typeahead-input/typeahead-input.component.mjs +132 -0
  47. package/esm2022/v-angular/dropdown/typeahead/typeahead.directive.mjs +177 -0
  48. package/esm2022/v-angular/dropdown/typeahead/typeahead.module.mjs +33 -0
  49. package/esm2022/v-angular/i18n/i18n.json +12 -0
  50. package/esm2022/v-angular/i18n/i18n.module.mjs +83 -0
  51. package/esm2022/v-angular/i18n/i18n.test.module.mjs +89 -0
  52. package/esm2022/v-angular/i18n/index.mjs +3 -0
  53. package/esm2022/v-angular/index.mjs +18 -0
  54. package/esm2022/v-angular/info-circle/index.mjs +3 -0
  55. package/esm2022/v-angular/info-circle/info-circle.component.mjs +28 -0
  56. package/esm2022/v-angular/info-circle/info-circle.module.mjs +21 -0
  57. package/esm2022/v-angular/input/index.mjs +3 -0
  58. package/esm2022/v-angular/input/input.component.mjs +221 -0
  59. package/esm2022/v-angular/input/input.module.mjs +32 -0
  60. package/esm2022/v-angular/input-mask/config.mjs +9 -0
  61. package/esm2022/v-angular/input-mask/constants.mjs +2 -0
  62. package/esm2022/v-angular/input-mask/index.mjs +6 -0
  63. package/esm2022/v-angular/input-mask/input-mask-format.pipe.mjs +21 -0
  64. package/esm2022/v-angular/input-mask/input-mask.directive.mjs +165 -0
  65. package/esm2022/v-angular/input-mask/input-mask.module.mjs +35 -0
  66. package/esm2022/v-angular/input-mask/input-mask.types.mjs +2 -0
  67. package/esm2022/v-angular/modal/dialog/dialog.component.mjs +190 -0
  68. package/esm2022/v-angular/modal/fold-out/fold-out.component.mjs +56 -0
  69. package/esm2022/v-angular/modal/fold-out/fold-out.directive.mjs +19 -0
  70. package/esm2022/v-angular/modal/index.mjs +6 -0
  71. package/esm2022/v-angular/modal/modal.globals.mjs +20 -0
  72. package/esm2022/v-angular/modal/modal.module.mjs +40 -0
  73. package/esm2022/v-angular/modal/modal.types.mjs +2 -0
  74. package/esm2022/v-angular/modal/slide-out/slide-out.component.mjs +229 -0
  75. package/esm2022/v-angular/radio/index.mjs +3 -0
  76. package/esm2022/v-angular/radio/radio.component.mjs +130 -0
  77. package/esm2022/v-angular/radio/radio.module.mjs +20 -0
  78. package/esm2022/v-angular/sebgroup-green-angular-v-angular.mjs +5 -0
  79. package/esm2022/v-angular/textarea/index.mjs +3 -0
  80. package/esm2022/v-angular/textarea/textarea.component.mjs +102 -0
  81. package/esm2022/v-angular/textarea/textarea.module.mjs +19 -0
  82. package/esm2022/v-angular/tooltip/index.mjs +3 -0
  83. package/esm2022/v-angular/tooltip/tooltip.directive.mjs +273 -0
  84. package/esm2022/v-angular/tooltip/tooltip.module.mjs +18 -0
  85. package/esm2022/v-angular/v-angular.module.mjs +80 -0
  86. package/fesm2022/sebgroup-green-angular-src-v-angular-base-control-value-accessor.mjs +8 -8
  87. package/fesm2022/sebgroup-green-angular-src-v-angular-base-control-value-accessor.mjs.map +1 -1
  88. package/fesm2022/sebgroup-green-angular-src-v-angular-button.mjs +4 -4
  89. package/fesm2022/sebgroup-green-angular-src-v-angular-button.mjs.map +1 -1
  90. package/fesm2022/sebgroup-green-angular-src-v-angular-character-countdown.mjs +4 -4
  91. package/fesm2022/sebgroup-green-angular-src-v-angular-character-countdown.mjs.map +1 -1
  92. package/fesm2022/sebgroup-green-angular-src-v-angular-core.mjs +2 -2
  93. package/fesm2022/sebgroup-green-angular-src-v-angular-core.mjs.map +1 -1
  94. package/fesm2022/sebgroup-green-angular-src-v-angular-dropdown.mjs +179 -10
  95. package/fesm2022/sebgroup-green-angular-src-v-angular-dropdown.mjs.map +1 -1
  96. package/fesm2022/sebgroup-green-angular-src-v-angular-info-circle.mjs +2 -2
  97. package/fesm2022/sebgroup-green-angular-src-v-angular-info-circle.mjs.map +1 -1
  98. package/fesm2022/sebgroup-green-angular-src-v-angular-input-mask.mjs +11 -10
  99. package/fesm2022/sebgroup-green-angular-src-v-angular-input-mask.mjs.map +1 -1
  100. package/fesm2022/sebgroup-green-angular-src-v-angular-input.mjs +6 -6
  101. package/fesm2022/sebgroup-green-angular-src-v-angular-input.mjs.map +1 -1
  102. package/fesm2022/sebgroup-green-angular-src-v-angular-modal.mjs +33 -33
  103. package/fesm2022/sebgroup-green-angular-src-v-angular-modal.mjs.map +1 -1
  104. package/fesm2022/sebgroup-green-angular-src-v-angular-textarea.mjs +7 -5
  105. package/fesm2022/sebgroup-green-angular-src-v-angular-textarea.mjs.map +1 -1
  106. package/fesm2022/sebgroup-green-angular-src-v-angular-tooltip.mjs +12 -12
  107. package/fesm2022/sebgroup-green-angular-src-v-angular-tooltip.mjs.map +1 -1
  108. package/fesm2022/sebgroup-green-angular-v-angular.mjs +3408 -0
  109. package/fesm2022/sebgroup-green-angular-v-angular.mjs.map +1 -0
  110. package/package.json +8 -2
  111. package/src/v-angular/base-control-value-accessor/base-control-value-accessor.component.d.ts +3 -3
  112. package/src/v-angular/button/button.component.d.ts +2 -2
  113. package/src/v-angular/character-countdown/character-countdown.directive.d.ts +1 -1
  114. package/src/v-angular/core/core.globals.d.ts +1 -1
  115. package/src/v-angular/dropdown/typeahead/index.d.ts +3 -0
  116. package/src/v-angular/dropdown/typeahead/typeahead.directive.d.ts +76 -0
  117. package/src/v-angular/input/input.component.d.ts +3 -3
  118. package/src/v-angular/input-mask/input-mask-format.pipe.d.ts +1 -1
  119. package/src/v-angular/input-mask/input-mask.directive.d.ts +2 -2
  120. package/src/v-angular/modal/dialog/dialog.component.d.ts +5 -5
  121. package/src/v-angular/modal/fold-out/fold-out.directive.d.ts +1 -1
  122. package/src/v-angular/modal/modal.globals.d.ts +1 -1
  123. package/src/v-angular/modal/slide-out/slide-out.component.d.ts +6 -6
  124. package/src/v-angular/textarea/textarea.module.d.ts +2 -1
  125. package/src/v-angular/tooltip/tooltip.directive.d.ts +4 -4
  126. package/v-angular/base-control-value-accessor/base-control-value-accessor.component.d.ts +124 -0
  127. package/v-angular/base-control-value-accessor/base-control-value-accessor.module.d.ts +7 -0
  128. package/v-angular/base-control-value-accessor/index.d.ts +2 -0
  129. package/v-angular/breadcrumbs/breadcrumbs.component.d.ts +18 -0
  130. package/v-angular/breadcrumbs/breadcrumbs.module.d.ts +10 -0
  131. package/v-angular/breadcrumbs/index.d.ts +2 -0
  132. package/v-angular/button/button.component.d.ts +62 -0
  133. package/v-angular/button/button.module.d.ts +10 -0
  134. package/v-angular/button/index.d.ts +2 -0
  135. package/v-angular/card/card.component.d.ts +5 -0
  136. package/v-angular/card/card.module.d.ts +8 -0
  137. package/v-angular/card/index.d.ts +2 -0
  138. package/v-angular/character-countdown/character-countdown.directive.d.ts +17 -0
  139. package/v-angular/character-countdown/character-countdown.module.d.ts +8 -0
  140. package/v-angular/character-countdown/index.d.ts +2 -0
  141. package/v-angular/checkbox/checkbox.component.d.ts +27 -0
  142. package/v-angular/checkbox/checkbox.module.d.ts +9 -0
  143. package/v-angular/checkbox/index.d.ts +2 -0
  144. package/v-angular/dropdown/dropdown-list/dropdown-list.component.d.ts +89 -0
  145. package/v-angular/dropdown/dropdown-list/index.d.ts +1 -0
  146. package/v-angular/dropdown/dropdown.component.d.ts +99 -0
  147. package/v-angular/dropdown/dropdown.module.d.ts +12 -0
  148. package/v-angular/dropdown/index.d.ts +5 -0
  149. package/v-angular/dropdown/typeahead/index.d.ts +5 -0
  150. package/v-angular/dropdown/typeahead/typeahead-dropdown-list/typeahead-dropdown-list.component.d.ts +34 -0
  151. package/v-angular/dropdown/typeahead/typeahead-highlight/typeahead-highlight.component.d.ts +34 -0
  152. package/v-angular/dropdown/typeahead/typeahead-input/typeahead-input.component.d.ts +59 -0
  153. package/v-angular/dropdown/typeahead/typeahead.directive.d.ts +76 -0
  154. package/v-angular/dropdown/typeahead/typeahead.module.d.ts +11 -0
  155. package/v-angular/i18n/i18n.module.d.ts +15 -0
  156. package/v-angular/i18n/i18n.test.module.d.ts +27 -0
  157. package/v-angular/i18n/index.d.ts +2 -0
  158. package/v-angular/index.d.ts +17 -0
  159. package/v-angular/info-circle/index.d.ts +2 -0
  160. package/v-angular/info-circle/info-circle.component.d.ts +16 -0
  161. package/v-angular/info-circle/info-circle.module.d.ts +10 -0
  162. package/v-angular/input/index.d.ts +2 -0
  163. package/v-angular/input/input.component.d.ts +90 -0
  164. package/v-angular/input/input.module.d.ts +11 -0
  165. package/v-angular/input-mask/config.d.ts +6 -0
  166. package/v-angular/input-mask/constants.d.ts +2 -0
  167. package/v-angular/input-mask/index.d.ts +5 -0
  168. package/v-angular/input-mask/input-mask-format.pipe.d.ts +8 -0
  169. package/v-angular/input-mask/input-mask.directive.d.ts +39 -0
  170. package/v-angular/input-mask/input-mask.module.d.ts +11 -0
  171. package/v-angular/input-mask/input-mask.types.d.ts +20 -0
  172. package/v-angular/modal/dialog/dialog.component.d.ts +55 -0
  173. package/v-angular/modal/fold-out/fold-out.component.d.ts +24 -0
  174. package/v-angular/modal/fold-out/fold-out.directive.d.ts +6 -0
  175. package/v-angular/modal/index.d.ts +5 -0
  176. package/v-angular/modal/modal.globals.d.ts +13 -0
  177. package/v-angular/modal/modal.module.d.ts +13 -0
  178. package/v-angular/modal/modal.types.d.ts +5 -0
  179. package/v-angular/modal/slide-out/slide-out.component.d.ts +76 -0
  180. package/v-angular/radio/index.d.ts +2 -0
  181. package/v-angular/radio/radio.component.d.ts +48 -0
  182. package/v-angular/radio/radio.module.d.ts +9 -0
  183. package/v-angular/textarea/index.d.ts +2 -0
  184. package/v-angular/textarea/textarea.component.d.ts +44 -0
  185. package/v-angular/textarea/textarea.module.d.ts +9 -0
  186. package/v-angular/tooltip/index.d.ts +2 -0
  187. package/v-angular/tooltip/tooltip.directive.d.ts +106 -0
  188. package/v-angular/tooltip/tooltip.module.d.ts +8 -0
  189. package/v-angular/v-angular.module.d.ts +23 -0
@@ -0,0 +1,239 @@
1
+ import { ChangeDetectorRef, Component, ContentChild, EventEmitter, HostBinding, HostListener, Inject, Input, Optional, Output, Self, TemplateRef, } from '@angular/core';
2
+ import { NgControl } from '@angular/forms';
3
+ import { fromEvent } from 'rxjs';
4
+ import { TRANSLOCO_SCOPE } from '@ngneat/transloco';
5
+ import { NgvBaseControlValueAccessorComponent } from '@sebgroup/green-angular/src/v-angular/base-control-value-accessor';
6
+ import { DropdownUtils, } from '@sebgroup/green-angular/src/v-angular/core';
7
+ import * as i0 from "@angular/core";
8
+ import * as i1 from "@angular/forms";
9
+ import * as i2 from "@sebgroup/green-angular/src/v-angular/core";
10
+ import * as i3 from "@angular/common";
11
+ import * as i4 from "@ngneat/transloco";
12
+ import * as i5 from "./dropdown-list/dropdown-list.component";
13
+ /**
14
+ * A dropdown allows the user to select an option from a list.
15
+ * Dropdowns enables users to make a quick selection of the available options for a specific entry.
16
+ * https://designlibrary.sebgroup.com/components/component-dropdown
17
+ */
18
+ export class NgvDropdownComponent extends NgvBaseControlValueAccessorComponent {
19
+ /** List of {@link Option} and {@link OptionGroup} listed when dropdown is expanded. */
20
+ set options(value) {
21
+ // update options
22
+ this._options = value;
23
+ // already has a null/undefined key
24
+ const nullishOption = this.dropdownUtils
25
+ .flattenOptions(value, false)
26
+ .find((option) => option.key == null);
27
+ // if the dropdown is optional, add a null value to deselect option
28
+ if (!this.required && !nullishOption && this.allowControlNullishOption) {
29
+ this._options = [this.defaultNullishOption].concat(this._options);
30
+ }
31
+ // set default value and emit if there is only one option
32
+ if (value.length === 1 && this.required && this.selectOnSingleOption) {
33
+ const onlyOption = this.dropdownUtils.flattenOptions(value, false)[0];
34
+ this.updateModel(onlyOption);
35
+ return;
36
+ }
37
+ // don't update local state if we shouldn't control nullish value and we cant find the selected value amongst the options
38
+ const matchingOption = this.dropdownUtils
39
+ .flattenOptions(value, false)
40
+ .find((option) => option.key == this.ngControl?.value);
41
+ if (!this.allowControlNullishOption && !matchingOption)
42
+ return;
43
+ // Update local state
44
+ this.writeValue(this.ngControl?.value);
45
+ }
46
+ get options() {
47
+ return this._options;
48
+ }
49
+ /** @internal nullish option. */
50
+ get defaultNullishOption() {
51
+ return { key: null, label: this.placeholder ?? '\u00A0' };
52
+ }
53
+ constructor(ngControl, translocoScope, cdr, dropdownUtils) {
54
+ super(ngControl, translocoScope, cdr);
55
+ this.ngControl = ngControl;
56
+ this.translocoScope = translocoScope;
57
+ this.cdr = cdr;
58
+ this.dropdownUtils = dropdownUtils;
59
+ /** Special property used for selecting DOM elements during automated UI testing. */
60
+ this.thook = 'dropdown';
61
+ /** The additional amount to show when option is scrolled into view. */
62
+ this.scrollOffset = 24;
63
+ /**
64
+ * Allow this component to add/ remove nullish options based on wether the control is required or not
65
+ * Defaults to true.
66
+ */
67
+ this.allowControlNullishOption = true;
68
+ /**
69
+ * If only one option exists in options[], default is to select it.
70
+ * This input can be used to alter that behaviour so it doesn't automatically
71
+ * select a value if it's the only one.
72
+ * Defaults to true.
73
+ */
74
+ this.selectOnSingleOption = true;
75
+ /**
76
+ * Emits changes of the expanded state of the dropdown
77
+ */
78
+ this.expandedChange = new EventEmitter();
79
+ /** The current expanded state of the dropdown options. */
80
+ this.expanded = false;
81
+ /** The current option selected based on numeric index. */
82
+ this.activeIndex = -1;
83
+ this.keyEvent = {};
84
+ this._options = [];
85
+ }
86
+ ngOnChanges(changes) {
87
+ if (changes.required?.currentValue !== undefined) {
88
+ const isRequired = changes.required.currentValue;
89
+ // remove nullish option
90
+ const hasNullishOption = this.dropdownUtils.flattenOptions(this._options, false)[0]?.key == null;
91
+ // if required, remove nullish option
92
+ if (isRequired && hasNullishOption && this.allowControlNullishOption) {
93
+ this._options = this._options.slice(1);
94
+ return;
95
+ }
96
+ // if not required, add nullish option
97
+ if (!isRequired && !hasNullishOption && this.allowControlNullishOption) {
98
+ this._options = [this.defaultNullishOption].concat(this._options);
99
+ return;
100
+ }
101
+ }
102
+ }
103
+ ngOnDestroy() {
104
+ this.onClickSubscription?.unsubscribe();
105
+ }
106
+ /** @internal override to correctly set state from form value */
107
+ writeValue(value) {
108
+ const options = this.dropdownUtils.flattenOptions(this._options, false);
109
+ this.state = options.find((option) => option.key === value);
110
+ }
111
+ // ----------------------------------------------------------------------------
112
+ // EVENTS
113
+ // ----------------------------------------------------------------------------
114
+ /** @internal */
115
+ onSelectChange(option) {
116
+ if (option.disabled)
117
+ return;
118
+ this.updateModel(option);
119
+ this.setExpanded(false);
120
+ }
121
+ // /**
122
+ // * @internal
123
+ // * Enter toggles the dropdown, home, end, and, arrows change the index.
124
+ // * @param event fired containing which key was released.
125
+ // */
126
+ onKeyUp(event) {
127
+ this.keyEvent = event;
128
+ }
129
+ /**
130
+ * Closes the dropdown on click outside.
131
+ */
132
+ subscribeToOutsideClickEvent() {
133
+ this.onClickSubscription = fromEvent(document, 'click').subscribe({
134
+ next: (event) => {
135
+ if (this.expanded &&
136
+ !this.inputRef?.nativeElement.contains(event.target)) {
137
+ this.toggleDropdown();
138
+ this.onClickSubscription?.unsubscribe();
139
+ }
140
+ },
141
+ });
142
+ }
143
+ // ----------------------------------------------------------------------------
144
+ // HELPERS
145
+ // ----------------------------------------------------------------------------
146
+ /**
147
+ * Set the dropdown value to given option.
148
+ * @param value the dropdown option to select.
149
+ */
150
+ updateModel(value) {
151
+ this.state = value;
152
+ this.onChange(value.key);
153
+ }
154
+ /** Toggle the expanded state of the dropdown options. */
155
+ toggleDropdown() {
156
+ this.setExpanded(!this.expanded);
157
+ this.cdr.detectChanges();
158
+ }
159
+ /**
160
+ * Set the expanded state of the dropdown options. If true the options are shown below the field.
161
+ * Activate on click event to be able to close dropdown on click outside.
162
+ * @param state the expanded state which to set.
163
+ */
164
+ setExpanded(state = true) {
165
+ this.expanded = state;
166
+ this.expandedChange.emit(this.expanded);
167
+ if (this.expanded)
168
+ this.subscribeToOutsideClickEvent();
169
+ if (!this.expanded)
170
+ this.onTouched();
171
+ }
172
+ /* TYPE CASTS */
173
+ /**
174
+ * Typecast anything to an {@link Option}.
175
+ * @param option the object to typecast.
176
+ */
177
+ castOption(option) {
178
+ return option;
179
+ }
180
+ /**
181
+ * Typecast anything to an {@link OptionGroup}.
182
+ * @param group the object to typecast.
183
+ */
184
+ castGroup(group) {
185
+ return group;
186
+ }
187
+ /* TYPE CHECKS */
188
+ /**
189
+ * Returns true if argument is an {@link Option}.
190
+ * @param option the object to check.
191
+ */
192
+ isOption(option) {
193
+ return !('options' in option);
194
+ }
195
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: NgvDropdownComponent, deps: [{ token: i1.NgControl, optional: true, self: true }, { token: TRANSLOCO_SCOPE, optional: true }, { token: i0.ChangeDetectorRef }, { token: i2.DropdownUtils }], target: i0.ɵɵFactoryTarget.Component }); }
196
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: NgvDropdownComponent, selector: "nggv-dropdown", inputs: { thook: "thook", placeholder: "placeholder", options: "options", scrollOffset: "scrollOffset", allowControlNullishOption: "allowControlNullishOption", textToHighlight: "textToHighlight", selectOnSingleOption: "selectOnSingleOption" }, outputs: { expandedChange: "expandedChange" }, host: { listeners: { "keyup": "onKeyUp($event)" }, properties: { "attr.data-thook": "this.thook" } }, queries: [{ propertyName: "selectedContentTpl", first: true, predicate: ["selectedTpl"], descendants: true, read: TemplateRef }, { propertyName: "optionContentTpl", first: true, predicate: ["optionTpl"], descendants: true, read: TemplateRef }], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<!-- LABEL -->\n<ng-container *transloco=\"let t; read: scope\">\n <label [id]=\"id + '-label'\" class=\"hide-if-empty\" [attr.for]=\"id + '-toggle'\">\n <ng-template\n *ngTemplateOutlet=\"labelContentTpl || basicLabelContentTpl\"\n ></ng-template>\n <ng-template #basicLabelContentTpl>\n <!-- to trigger css:empty if no label was added -->\n <ng-container *ngIf=\"label\">\n {{ label }}\n <span\n *ngIf=\"optional === true || (required !== true && optional !== false)\"\n class=\"sdv-field-label--optional\"\n >\n ({{ t('label.optional') }})\n </span>\n </ng-container>\n </ng-template>\n </label>\n\n <!-- DESCRIPTION -->\n <div class=\"description\">{{ description }}</div>\n\n <!-- LOCKED INPUT -->\n <ng-container *ngIf=\"locked\">\n <div\n [id]=\"id + '-input'\"\n class=\"nggv-field--locked\"\n [attr.name]=\"name\"\n [attr.value]=\"state\"\n [attr.role]=\"role\"\n [attr.aria-labelledby]=\"id + '-label ' + id + '-input'\"\n >\n <span *ngIf=\"!state\" class=\"unset-state\">-</span>\n <ng-container *ngIf=\"state\">\n <ng-template\n *ngTemplateOutlet=\"\n selectedContentTpl || defaultSelectedContentTpl;\n context: { $implicit: state }\n \"\n >\n </ng-template>\n </ng-container>\n </div>\n </ng-container>\n\n <!-- INPUT -->\n <ng-container *ngIf=\"!locked\">\n <div #input [id]=\"id + '-input'\" class=\"dropdown\">\n <button\n [id]=\"id + '-toggle'\"\n [disabled]=\"disabled\"\n type=\"button\"\n class=\"nggv-field-dropdown__label toggle\"\n [class.nggv-field--error]=\"invalid\"\n aria-haspopup=\"listbox\"\n [attr.data-thook]=\"thook + '-toggle'\"\n [attr.aria-expanded]=\"expanded\"\n [attr.aria-labelledby]=\"id + '-label ' + id + '-toggle'\"\n (click)=\"toggleDropdown()\"\n >\n <ng-template\n *ngTemplateOutlet=\"\n selectedContentTpl || defaultSelectedContentTpl;\n context: { $implicit: state }\n \"\n >\n </ng-template>\n </button>\n\n <nggv-dropdown-list\n #dropDownList\n [options]=\"options\"\n [scrollOffset]=\"scrollOffset\"\n [state]=\"state\"\n [expanded]=\"expanded\"\n [optionContentTpl]=\"optionContentTpl\"\n [textToHighlight]=\"textToHighlight\"\n (selectedValueChanged)=\"onSelectChange($event)\"\n >\n </nggv-dropdown-list>\n </div>\n <!-- ERRORS -->\n <label\n class=\"sdv-field-notice sdv-field-notice--error\"\n [attr.for]=\"id + '-input'\"\n *ngIf=\"invalid && (error || ngControl?.invalid)\"\n >\n <span *ngIf=\"error; else errorsRef\">{{ error }}</span>\n <ng-template #errorsRef>\n <span *ngIf=\"firstError as error\">\n {{ t('error.field' + error?.code, error?.params) }}\n </span>\n </ng-template>\n </label>\n\n <!-- CHILDREN -->\n <ng-content></ng-content>\n </ng-container>\n\n <ng-template #defaultSelectedContentTpl let-state>\n <!-- eslint-disable-next-line @angular-eslint/template/eqeqeq -->\n {{ state?.key != null && state?.label ? t(state.label) : placeholder }}\n </ng-template>\n</ng-container>\n", styles: [":host label{display:block;font-weight:500;line-height:1.25rem;margin-bottom:.5rem;width:100%}:host .description{margin-bottom:.5rem;line-height:1.25rem;width:100%}:host button{font-weight:500;display:inline-flex;justify-content:center;transition:all .3s cubic-bezier(.23,1,.32,1),outline-offset 0s,outline-width 0s;background:transparent;border-color:#007ac7;color:#007ac7;--color: rgb(0, 122, 199);background-color:transparent;border:0;cursor:pointer;font-family:inherit;padding:0;padding:.75rem 1rem;border-radius:var(--sg-border-radius);border:solid var(--sg-border-width) var(--sg-border-color);--border-color: var(--grey-800);--sg-border-color: var(--grey-800);background:var(--sg-form-control-bg);color:var(--text-primary-color);min-height:2.75rem;display:flex;flex-wrap:nowrap;justify-content:space-between;align-items:center;max-width:100%;font-size:inherit;font-weight:400;line-height:1.125;margin-bottom:.5rem;margin-top:.5rem;width:100%}@media screen and (-ms-high-contrast: active){:host button{border:2px solid currentcolor}}:host button.small{min-height:2rem;padding:.4375rem .75rem;line-height:1rem}:host button.large{min-height:4rem;padding:1rem 1.5rem;font-size:1.5rem;line-height:2rem}:host button:focus:not(:focus-visible){box-shadow:none;outline:0}:host button:focus,:host button:focus-visible{outline-color:var(--gds-sys-color-focus-outline);outline-style:solid;outline-width:.125rem;outline-offset:.125rem}:host button:not(:disabled,.disabled,[aria-disabled]):hover{background-color:#199be3;color:#fff;--background: #199be3;--color: rgb(255, 255, 255);border-color:#199be3}:host button[aria-selected=true],:host button:active,:host button.active,:host button.active:hover,:host button:active:hover{background-color:#007ac7;color:#fff;--background: rgb(0, 122, 199);--color: rgb(255, 255, 255);border-color:#007ac7}:host button:disabled,:host button.disabled,:host button[aria-disabled=true]{background:var(--sg-form-control-bg-disabled)!important;color:var(--text-disabled-color)!important;border-color:var(--border-disabled-color)!important;cursor:not-allowed}:host button:disabled::placeholder,:host button.disabled::placeholder,:host button[aria-disabled=true]::placeholder{color:var(--text-disabled-color)}:host button:focus{outline-color:var(--gds-sys-color-focus-outline);outline-style:solid;outline-width:.125rem;outline-offset:.125rem}@media (max-width: 35.98em){:host button{min-width:100%}}:host button:not(:disabled,.disabled,[aria-disabled]):hover{--background: var(--grey-400);--color: var(--grey-1000);background-color:var(--grey-400);color:var(--grey-1000);border-color:var(--grey-1000)}:host button>span{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}:host button:after{margin-left:.5rem;margin-right:.5rem;border-bottom:solid 2px var(--text-primary-color);border-left:solid 2px var(--text-primary-color);content:\"\";display:block;height:.5rem;width:.5rem;position:relative;top:-.15rem;transform:translate(75%) rotate3d(0,0,1,-45deg) scaleZ(-1);transition:transform .3s ease-in;flex-shrink:0}:host button[aria-expanded=true]:after{transform:translate(75%,6px) rotate3d(0,0,1,-45deg) scale3d(-1,-1,1)}:host button:hover:after{border-color:currentColor}:host button.small{font-size:.875rem}:host button:hover{background:var(--grey-400)}:host .dropdown{position:relative}\n"], dependencies: [{ kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i4.TranslocoDirective, selector: "[transloco]", inputs: ["transloco", "translocoParams", "translocoScope", "translocoRead", "translocoLang", "translocoLoadingTpl"] }, { kind: "component", type: i5.NgvDropdownListComponent, selector: "nggv-dropdown-list", inputs: ["expanded", "state", "scrollOffset", "optionContentTpl", "id", "thook", "options", "textToHighlight"], outputs: ["selectedValueChanged", "closed"] }] }); }
197
+ }
198
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: NgvDropdownComponent, decorators: [{
199
+ type: Component,
200
+ args: [{ selector: 'nggv-dropdown', template: "<!-- LABEL -->\n<ng-container *transloco=\"let t; read: scope\">\n <label [id]=\"id + '-label'\" class=\"hide-if-empty\" [attr.for]=\"id + '-toggle'\">\n <ng-template\n *ngTemplateOutlet=\"labelContentTpl || basicLabelContentTpl\"\n ></ng-template>\n <ng-template #basicLabelContentTpl>\n <!-- to trigger css:empty if no label was added -->\n <ng-container *ngIf=\"label\">\n {{ label }}\n <span\n *ngIf=\"optional === true || (required !== true && optional !== false)\"\n class=\"sdv-field-label--optional\"\n >\n ({{ t('label.optional') }})\n </span>\n </ng-container>\n </ng-template>\n </label>\n\n <!-- DESCRIPTION -->\n <div class=\"description\">{{ description }}</div>\n\n <!-- LOCKED INPUT -->\n <ng-container *ngIf=\"locked\">\n <div\n [id]=\"id + '-input'\"\n class=\"nggv-field--locked\"\n [attr.name]=\"name\"\n [attr.value]=\"state\"\n [attr.role]=\"role\"\n [attr.aria-labelledby]=\"id + '-label ' + id + '-input'\"\n >\n <span *ngIf=\"!state\" class=\"unset-state\">-</span>\n <ng-container *ngIf=\"state\">\n <ng-template\n *ngTemplateOutlet=\"\n selectedContentTpl || defaultSelectedContentTpl;\n context: { $implicit: state }\n \"\n >\n </ng-template>\n </ng-container>\n </div>\n </ng-container>\n\n <!-- INPUT -->\n <ng-container *ngIf=\"!locked\">\n <div #input [id]=\"id + '-input'\" class=\"dropdown\">\n <button\n [id]=\"id + '-toggle'\"\n [disabled]=\"disabled\"\n type=\"button\"\n class=\"nggv-field-dropdown__label toggle\"\n [class.nggv-field--error]=\"invalid\"\n aria-haspopup=\"listbox\"\n [attr.data-thook]=\"thook + '-toggle'\"\n [attr.aria-expanded]=\"expanded\"\n [attr.aria-labelledby]=\"id + '-label ' + id + '-toggle'\"\n (click)=\"toggleDropdown()\"\n >\n <ng-template\n *ngTemplateOutlet=\"\n selectedContentTpl || defaultSelectedContentTpl;\n context: { $implicit: state }\n \"\n >\n </ng-template>\n </button>\n\n <nggv-dropdown-list\n #dropDownList\n [options]=\"options\"\n [scrollOffset]=\"scrollOffset\"\n [state]=\"state\"\n [expanded]=\"expanded\"\n [optionContentTpl]=\"optionContentTpl\"\n [textToHighlight]=\"textToHighlight\"\n (selectedValueChanged)=\"onSelectChange($event)\"\n >\n </nggv-dropdown-list>\n </div>\n <!-- ERRORS -->\n <label\n class=\"sdv-field-notice sdv-field-notice--error\"\n [attr.for]=\"id + '-input'\"\n *ngIf=\"invalid && (error || ngControl?.invalid)\"\n >\n <span *ngIf=\"error; else errorsRef\">{{ error }}</span>\n <ng-template #errorsRef>\n <span *ngIf=\"firstError as error\">\n {{ t('error.field' + error?.code, error?.params) }}\n </span>\n </ng-template>\n </label>\n\n <!-- CHILDREN -->\n <ng-content></ng-content>\n </ng-container>\n\n <ng-template #defaultSelectedContentTpl let-state>\n <!-- eslint-disable-next-line @angular-eslint/template/eqeqeq -->\n {{ state?.key != null && state?.label ? t(state.label) : placeholder }}\n </ng-template>\n</ng-container>\n", styles: [":host label{display:block;font-weight:500;line-height:1.25rem;margin-bottom:.5rem;width:100%}:host .description{margin-bottom:.5rem;line-height:1.25rem;width:100%}:host button{font-weight:500;display:inline-flex;justify-content:center;transition:all .3s cubic-bezier(.23,1,.32,1),outline-offset 0s,outline-width 0s;background:transparent;border-color:#007ac7;color:#007ac7;--color: rgb(0, 122, 199);background-color:transparent;border:0;cursor:pointer;font-family:inherit;padding:0;padding:.75rem 1rem;border-radius:var(--sg-border-radius);border:solid var(--sg-border-width) var(--sg-border-color);--border-color: var(--grey-800);--sg-border-color: var(--grey-800);background:var(--sg-form-control-bg);color:var(--text-primary-color);min-height:2.75rem;display:flex;flex-wrap:nowrap;justify-content:space-between;align-items:center;max-width:100%;font-size:inherit;font-weight:400;line-height:1.125;margin-bottom:.5rem;margin-top:.5rem;width:100%}@media screen and (-ms-high-contrast: active){:host button{border:2px solid currentcolor}}:host button.small{min-height:2rem;padding:.4375rem .75rem;line-height:1rem}:host button.large{min-height:4rem;padding:1rem 1.5rem;font-size:1.5rem;line-height:2rem}:host button:focus:not(:focus-visible){box-shadow:none;outline:0}:host button:focus,:host button:focus-visible{outline-color:var(--gds-sys-color-focus-outline);outline-style:solid;outline-width:.125rem;outline-offset:.125rem}:host button:not(:disabled,.disabled,[aria-disabled]):hover{background-color:#199be3;color:#fff;--background: #199be3;--color: rgb(255, 255, 255);border-color:#199be3}:host button[aria-selected=true],:host button:active,:host button.active,:host button.active:hover,:host button:active:hover{background-color:#007ac7;color:#fff;--background: rgb(0, 122, 199);--color: rgb(255, 255, 255);border-color:#007ac7}:host button:disabled,:host button.disabled,:host button[aria-disabled=true]{background:var(--sg-form-control-bg-disabled)!important;color:var(--text-disabled-color)!important;border-color:var(--border-disabled-color)!important;cursor:not-allowed}:host button:disabled::placeholder,:host button.disabled::placeholder,:host button[aria-disabled=true]::placeholder{color:var(--text-disabled-color)}:host button:focus{outline-color:var(--gds-sys-color-focus-outline);outline-style:solid;outline-width:.125rem;outline-offset:.125rem}@media (max-width: 35.98em){:host button{min-width:100%}}:host button:not(:disabled,.disabled,[aria-disabled]):hover{--background: var(--grey-400);--color: var(--grey-1000);background-color:var(--grey-400);color:var(--grey-1000);border-color:var(--grey-1000)}:host button>span{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}:host button:after{margin-left:.5rem;margin-right:.5rem;border-bottom:solid 2px var(--text-primary-color);border-left:solid 2px var(--text-primary-color);content:\"\";display:block;height:.5rem;width:.5rem;position:relative;top:-.15rem;transform:translate(75%) rotate3d(0,0,1,-45deg) scaleZ(-1);transition:transform .3s ease-in;flex-shrink:0}:host button[aria-expanded=true]:after{transform:translate(75%,6px) rotate3d(0,0,1,-45deg) scale3d(-1,-1,1)}:host button:hover:after{border-color:currentColor}:host button.small{font-size:.875rem}:host button:hover{background:var(--grey-400)}:host .dropdown{position:relative}\n"] }]
201
+ }], ctorParameters: function () { return [{ type: i1.NgControl, decorators: [{
202
+ type: Self
203
+ }, {
204
+ type: Optional
205
+ }] }, { type: undefined, decorators: [{
206
+ type: Optional
207
+ }, {
208
+ type: Inject,
209
+ args: [TRANSLOCO_SCOPE]
210
+ }] }, { type: i0.ChangeDetectorRef }, { type: i2.DropdownUtils }]; }, propDecorators: { selectedContentTpl: [{
211
+ type: ContentChild,
212
+ args: ['selectedTpl', { read: TemplateRef }]
213
+ }], optionContentTpl: [{
214
+ type: ContentChild,
215
+ args: ['optionTpl', { read: TemplateRef }]
216
+ }], thook: [{
217
+ type: HostBinding,
218
+ args: ['attr.data-thook']
219
+ }, {
220
+ type: Input
221
+ }], placeholder: [{
222
+ type: Input
223
+ }], options: [{
224
+ type: Input
225
+ }], scrollOffset: [{
226
+ type: Input
227
+ }], allowControlNullishOption: [{
228
+ type: Input
229
+ }], textToHighlight: [{
230
+ type: Input
231
+ }], selectOnSingleOption: [{
232
+ type: Input
233
+ }], expandedChange: [{
234
+ type: Output
235
+ }], onKeyUp: [{
236
+ type: HostListener,
237
+ args: ['keyup', ['$event']]
238
+ }] } });
239
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJvcGRvd24uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9hbmd1bGFyL3NyYy92LWFuZ3VsYXIvZHJvcGRvd24vZHJvcGRvd24uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9hbmd1bGFyL3NyYy92LWFuZ3VsYXIvZHJvcGRvd24vZHJvcGRvd24uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLGlCQUFpQixFQUNqQixTQUFTLEVBQ1QsWUFBWSxFQUNaLFlBQVksRUFDWixXQUFXLEVBQ1gsWUFBWSxFQUNaLE1BQU0sRUFDTixLQUFLLEVBR0wsUUFBUSxFQUNSLE1BQU0sRUFDTixJQUFJLEVBRUosV0FBVyxHQUNaLE1BQU0sZUFBZSxDQUFBO0FBQ3RCLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQTtBQUUxQyxPQUFPLEVBQUUsU0FBUyxFQUFnQixNQUFNLE1BQU0sQ0FBQTtBQUU5QyxPQUFPLEVBQUUsZUFBZSxFQUFrQixNQUFNLG1CQUFtQixDQUFBO0FBRW5FLE9BQU8sRUFBRSxvQ0FBb0MsRUFBRSxNQUFNLG1FQUFtRSxDQUFBO0FBQ3hILE9BQU8sRUFDTCxhQUFhLEdBSWQsTUFBTSw0Q0FBNEMsQ0FBQTs7Ozs7OztBQUVuRDs7OztHQUlHO0FBTUgsTUFBTSxPQUFPLG9CQUtYLFNBQVEsb0NBQW9DO0lBZ0I1Qyx1RkFBdUY7SUFDdkYsSUFBYSxPQUFPLENBQUMsS0FBc0I7UUFDekMsaUJBQWlCO1FBQ2pCLElBQUksQ0FBQyxRQUFRLEdBQUcsS0FBSyxDQUFBO1FBQ3JCLG1DQUFtQztRQUNuQyxNQUFNLGFBQWEsR0FBRyxJQUFJLENBQUMsYUFBYTthQUNyQyxjQUFjLENBQUMsS0FBSyxFQUFFLEtBQUssQ0FBQzthQUM1QixJQUFJLENBQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDLE1BQU0sQ0FB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Q0FBQyxRQUFRLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgQ29tcG9uZW50LFxuICBDb250ZW50Q2hpbGQsXG4gIEV2ZW50RW1pdHRlcixcbiAgSG9zdEJpbmRpbmcsXG4gIEhvc3RMaXN0ZW5lcixcbiAgSW5qZWN0LFxuICBJbnB1dCxcbiAgT25DaGFuZ2VzLFxuICBPbkRlc3Ryb3ksXG4gIE9wdGlvbmFsLFxuICBPdXRwdXQsXG4gIFNlbGYsXG4gIFNpbXBsZUNoYW5nZXMsXG4gIFRlbXBsYXRlUmVmLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJ1xuaW1wb3J0IHsgTmdDb250cm9sIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnXG5cbmltcG9ydCB7IGZyb21FdmVudCwgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcydcblxuaW1wb3J0IHsgVFJBTlNMT0NPX1NDT1BFLCBUcmFuc2xvY29TY29wZSB9IGZyb20gJ0BuZ25lYXQvdHJhbnNsb2NvJ1xuXG5pbXBvcnQgeyBOZ3ZCYXNlQ29udHJvbFZhbHVlQWNjZXNzb3JDb21wb25lbnQgfSBmcm9tICdAc2ViZ3JvdXAvZ3JlZW4tYW5ndWxhci9zcmMvdi1hbmd1bGFyL2Jhc2UtY29udHJvbC12YWx1ZS1hY2Nlc3NvcidcbmltcG9ydCB7XG4gIERyb3Bkb3duVXRpbHMsXG4gIE9wdGlvbixcbiAgT3B0aW9uQmFzZSxcbiAgT3B0aW9uR3JvdXAsXG59IGZyb20gJ0BzZWJncm91cC9ncmVlbi1hbmd1bGFyL3NyYy92LWFuZ3VsYXIvY29yZSdcblxuLyoqXG4gKiBBIGRyb3Bkb3duIGFsbG93cyB0aGUgdXNlciB0byBzZWxlY3QgYW4gb3B0aW9uIGZyb20gYSBsaXN0LlxuICogRHJvcGRvd25zIGVuYWJsZXMgdXNlcnMgdG8gbWFrZSBhIHF1aWNrIHNlbGVjdGlvbiBvZiB0aGUgYXZhaWxhYmxlIG9wdGlvbnMgZm9yIGEgc3BlY2lmaWMgZW50cnkuXG4gKiBodHRwczovL2Rlc2lnbmxpYnJhcnkuc2ViZ3JvdXAuY29tL2NvbXBvbmVudHMvY29tcG9uZW50LWRyb3Bkb3duXG4gKi9cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ25nZ3YtZHJvcGRvd24nLFxuICB0ZW1wbGF0ZVVybDogJy4vZHJvcGRvd24uY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9kcm9wZG93bi5jb21wb25lbnQuc2NzcyddLFxufSlcbmV4cG9ydCBjbGFzcyBOZ3ZEcm9wZG93bkNvbXBvbmVudDxcbiAgICBLID0gc3RyaW5nIHwgbnVsbCB8IHVuZGVmaW5lZCxcbiAgICBWID0gc3RyaW5nIHwgbnVsbCB8IHVuZGVmaW5lZCxcbiAgICBUIGV4dGVuZHMgT3B0aW9uPEssIFY+ID0gT3B0aW9uPEssIFY+LFxuICA+XG4gIGV4dGVuZHMgTmd2QmFzZUNvbnRyb2xWYWx1ZUFjY2Vzc29yQ29tcG9uZW50XG4gIGltcGxlbWVudHMgT25EZXN0cm95LCBPbkNoYW5nZXNcbntcbiAgLyoqIEN1c3RvbSB0ZW1wbGF0ZSBmb3IgZGlzcGxheWluZyBzZWxlY3RlZCBvcHRpb24uICovXG4gIEBDb250ZW50Q2hpbGQoJ3NlbGVjdGVkVHBsJywgeyByZWFkOiBUZW1wbGF0ZVJlZiB9KSBzZWxlY3RlZENvbnRlbnRUcGw6XG4gICAgfCBUZW1wbGF0ZVJlZjxPcHRpb25CYXNlPFQ+PlxuICAgIHwgdW5kZWZpbmVkXG4gIEBDb250ZW50Q2hpbGQoJ29wdGlvblRwbCcsIHsgcmVhZDogVGVtcGxhdGVSZWYgfSkgb3B0aW9uQ29udGVudFRwbDpcbiAgICB8IFRlbXBsYXRlUmVmPE9wdGlvbkJhc2U8YW55Pj5cbiAgICB8IHVuZGVmaW5lZFxuXG4gIC8qKiBTcGVjaWFsIHByb3BlcnR5IHVzZWQgZm9yIHNlbGVjdGluZyBET00gZWxlbWVudHMgZHVyaW5nIGF1dG9tYXRlZCBVSSB0ZXN0aW5nLiAqL1xuICBASG9zdEJpbmRpbmcoJ2F0dHIuZGF0YS10aG9vaycpIEBJbnB1dCgpIHRob29rID0gJ2Ryb3Bkb3duJ1xuXG4gIC8qKiBUZXh0IHNob3duIGJlZm9yZSBhbiBvcHRpb24gaXMgc2VsZWN0ZWQuICovXG4gIEBJbnB1dCgpIHBsYWNlaG9sZGVyPzogc3RyaW5nXG4gIC8qKiBMaXN0IG9mIHtAbGluayBPcHRpb259IGFuZCB7QGxpbmsgT3B0aW9uR3JvdXB9IGxpc3RlZCB3aGVuIGRyb3Bkb3duIGlzIGV4cGFuZGVkLiAqL1xuICBASW5wdXQoKSBzZXQgb3B0aW9ucyh2YWx1ZTogT3B0aW9uQmFzZTxUPltdKSB7XG4gICAgLy8gdXBkYXRlIG9wdGlvbnNcbiAgICB0aGlzLl9vcHRpb25zID0gdmFsdWVcbiAgICAvLyBhbHJlYWR5IGhhcyBhIG51bGwvdW5kZWZpbmVkIGtleVxuICAgIGNvbnN0IG51bGxpc2hPcHRpb24gPSB0aGlzLmRyb3Bkb3duVXRpbHNcbiAgICAgIC5mbGF0dGVuT3B0aW9ucyh2YWx1ZSwgZmFsc2UpXG4gICAgICAuZmluZCgob3B0aW9uKSA9PiBvcHRpb24ua2V5ID09IG51bGwpXG4gICAgLy8gaWYgdGhlIGRyb3Bkb3duIGlzIG9wdGlvbmFsLCBhZGQgYSBudWxsIHZhbHVlIHRvIGRlc2VsZWN0IG9wdGlvblxuICAgIGlmICghdGhpcy5yZXF1aXJlZCAmJiAhbnVsbGlzaE9wdGlvbiAmJiB0aGlzLmFsbG93Q29udHJvbE51bGxpc2hPcHRpb24pIHtcbiAgICAgIHRoaXMuX29wdGlvbnMgPSBbdGhpcy5kZWZhdWx0TnVsbGlzaE9wdGlvbl0uY29uY2F0KHRoaXMuX29wdGlvbnMpXG4gICAgfVxuXG4gICAgLy8gc2V0IGRlZmF1bHQgdmFsdWUgYW5kIGVtaXQgaWYgdGhlcmUgaXMgb25seSBvbmUgb3B0aW9uXG4gICAgaWYgKHZhbHVlLmxlbmd0aCA9PT0gMSAmJiB0aGlzLnJlcXVpcmVkICYmIHRoaXMuc2VsZWN0T25TaW5nbGVPcHRpb24pIHtcbiAgICAgIGNvbnN0IG9ubHlPcHRpb24gPSB0aGlzLmRyb3Bkb3duVXRpbHMuZmxhdHRlbk9wdGlvbnModmFsdWUsIGZhbHNlKVswXVxuICAgICAgdGhpcy51cGRhdGVNb2RlbChvbmx5T3B0aW9uKVxuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgLy8gZG9uJ3QgdXBkYXRlIGxvY2FsIHN0YXRlIGlmIHdlIHNob3VsZG4ndCBjb250cm9sIG51bGxpc2ggdmFsdWUgYW5kIHdlIGNhbnQgZmluZCB0aGUgc2VsZWN0ZWQgdmFsdWUgYW1vbmdzdCB0aGUgb3B0aW9uc1xuICAgIGNvbnN0IG1hdGNoaW5nT3B0aW9uID0gdGhpcy5kcm9wZG93blV0aWxzXG4gICAgICAuZmxhdHRlbk9wdGlvbnModmFsdWUsIGZhbHNlKVxuICAgICAgLmZpbmQoKG9wdGlvbikgPT4gb3B0aW9uLmtleSA9PSB0aGlzLm5nQ29udHJvbD8udmFsdWUpXG4gICAgaWYgKCF0aGlzLmFsbG93Q29udHJvbE51bGxpc2hPcHRpb24gJiYgIW1hdGNoaW5nT3B0aW9uKSByZXR1cm5cblxuICAgIC8vIFVwZGF0ZSBsb2NhbCBzdGF0ZVxuICAgIHRoaXMud3JpdGVWYWx1ZSh0aGlzLm5nQ29udHJvbD8udmFsdWUpXG4gIH1cblxuICBnZXQgb3B0aW9ucygpOiBPcHRpb25CYXNlPFQ+W10ge1xuICAgIHJldHVybiB0aGlzLl9vcHRpb25zXG4gIH1cblxuICAvKiogVGhlIGFkZGl0aW9uYWwgYW1vdW50IHRvIHNob3cgd2hlbiBvcHRpb24gaXMgc2Nyb2xsZWQgaW50byB2aWV3LiAqL1xuICBASW5wdXQoKSBzY3JvbGxPZmZzZXQgPSAyNFxuXG4gIC8qKlxuICAgKiBBbGxvdyB0aGlzIGNvbXBvbmVudCB0byBhZGQvIHJlbW92ZSBudWxsaXNoIG9wdGlvbnMgYmFzZWQgb24gd2V0aGVyIHRoZSBjb250cm9sIGlzIHJlcXVpcmVkIG9yIG5vdFxuICAgKiBEZWZhdWx0cyB0byB0cnVlLlxuICAgKi9cbiAgQElucHV0KCkgYWxsb3dDb250cm9sTnVsbGlzaE9wdGlvbiA9IHRydWVcblxuICAvKiogVGV4dCB0byBoaWdobGlnaHQgaW4gb3B0aW9uICovXG4gIEBJbnB1dCgpIHRleHRUb0hpZ2hsaWdodD86IHN0cmluZ1xuXG4gIC8qKlxuICAgKiBJZiBvbmx5IG9uZSBvcHRpb24gZXhpc3RzIGluIG9wdGlvbnNbXSwgZGVmYXVsdCBpcyB0byBzZWxlY3QgaXQuXG4gICAqIFRoaXMgaW5wdXQgY2FuIGJlIHVzZWQgdG8gYWx0ZXIgdGhhdCBiZWhhdmlvdXIgc28gaXQgZG9lc24ndCBhdXRvbWF0aWNhbGx5XG4gICAqIHNlbGVjdCBhIHZhbHVlIGlmIGl0J3MgdGhlIG9ubHkgb25lLlxuICAgKiBEZWZhdWx0cyB0byB0cnVlLlxuICAgKi9cbiAgQElucHV0KCkgc2VsZWN0T25TaW5nbGVPcHRpb24gPSB0cnVlXG5cbiAgLyoqXG4gICAqIEVtaXRzIGNoYW5nZXMgb2YgdGhlIGV4cGFuZGVkIHN0YXRlIG9mIHRoZSBkcm9wZG93blxuICAgKi9cbiAgQE91dHB1dCgpIGV4cGFuZGVkQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxib29sZWFuPigpXG5cbiAgLyoqIEBpbnRlcm5hbCBudWxsaXNoIG9wdGlvbi4gKi9cbiAgZ2V0IGRlZmF1bHROdWxsaXNoT3B0aW9uKCk6IE9wdGlvbkJhc2U8YW55PiB7XG4gICAgcmV0dXJuIHsga2V5OiBudWxsLCBsYWJlbDogdGhpcy5wbGFjZWhvbGRlciA/PyAnXFx1MDBBMCcgfVxuICB9XG5cbiAgLyoqIFRoZSBjdXJyZW50IGV4cGFuZGVkIHN0YXRlIG9mIHRoZSBkcm9wZG93biBvcHRpb25zLiAqL1xuICBwdWJsaWMgZXhwYW5kZWQgPSBmYWxzZVxuICAvKiogVGhlIGN1cnJlbnQgb3B0aW9uIHNlbGVjdGVkIGJhc2VkIG9uIG51bWVyaWMgaW5kZXguICovXG4gIHB1YmxpYyBhY3RpdmVJbmRleCA9IC0xXG4gIC8qKiBTdWJzY3JpYmUgaWYgZHJvcGRvd24gZXhwYW5kZWQgdG8gbGlzdGVuIHRvIGNsaWNrIG91dHNpZGUgdG8gY2xvc2UgZHJvcGRvd24uICovXG4gIHByaXZhdGUgb25DbGlja1N1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uIHwgdW5kZWZpbmVkXG5cbiAgcHVibGljIGtleUV2ZW50OiBLZXlib2FyZEV2ZW50ID0ge30gYXMgS2V5Ym9hcmRFdmVudFxuICBwcml2YXRlIF9vcHRpb25zOiBPcHRpb25CYXNlPFQ+W10gPSBbXVxuXG4gIGNvbnN0cnVjdG9yKFxuICAgIEBTZWxmKCkgQE9wdGlvbmFsKCkgcHVibGljIG5nQ29udHJvbDogTmdDb250cm9sLFxuICAgIEBPcHRpb25hbCgpXG4gICAgQEluamVjdChUUkFOU0xPQ09fU0NPUEUpXG4gICAgcHJvdGVjdGVkIHRyYW5zbG9jb1Njb3BlOiBUcmFuc2xvY29TY29wZSxcbiAgICBwcm90ZWN0ZWQgY2RyOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBwcm90ZWN0ZWQgZHJvcGRvd25VdGlsczogRHJvcGRvd25VdGlsczxLLCBWLCBUPixcbiAgKSB7XG4gICAgc3VwZXIobmdDb250cm9sLCB0cmFuc2xvY29TY29wZSwgY2RyKVxuICB9XG5cbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgIGlmIChjaGFuZ2VzLnJlcXVpcmVkPy5jdXJyZW50VmFsdWUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgY29uc3QgaXNSZXF1aXJlZCA9IGNoYW5nZXMucmVxdWlyZWQuY3VycmVudFZhbHVlXG4gICAgICAvLyByZW1vdmUgbnVsbGlzaCBvcHRpb25cbiAgICAgIGNvbnN0IGhhc051bGxpc2hPcHRpb24gPVxuICAgICAgICB0aGlzLmRyb3Bkb3duVXRpbHMuZmxhdHRlbk9wdGlvbnModGhpcy5fb3B0aW9ucywgZmFsc2UpWzBdPy5rZXkgPT0gbnVsbFxuICAgICAgLy8gaWYgcmVxdWlyZWQsIHJlbW92ZSBudWxsaXNoIG9wdGlvblxuICAgICAgaWYgKGlzUmVxdWlyZWQgJiYgaGFzTnVsbGlzaE9wdGlvbiAmJiB0aGlzLmFsbG93Q29udHJvbE51bGxpc2hPcHRpb24pIHtcbiAgICAgICAgdGhpcy5fb3B0aW9ucyA9IHRoaXMuX29wdGlvbnMuc2xpY2UoMSlcbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG4gICAgICAvLyBpZiBub3QgcmVxdWlyZWQsIGFkZCBudWxsaXNoIG9wdGlvblxuICAgICAgaWYgKCFpc1JlcXVpcmVkICYmICFoYXNOdWxsaXNoT3B0aW9uICYmIHRoaXMuYWxsb3dDb250cm9sTnVsbGlzaE9wdGlvbikge1xuICAgICAgICB0aGlzLl9vcHRpb25zID0gW3RoaXMuZGVmYXVsdE51bGxpc2hPcHRpb25dLmNvbmNhdCh0aGlzLl9vcHRpb25zKVxuICAgICAgICByZXR1cm5cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLm9uQ2xpY2tTdWJzY3JpcHRpb24/LnVuc3Vic2NyaWJlKClcbiAgfVxuXG4gIC8qKiBAaW50ZXJuYWwgb3ZlcnJpZGUgdG8gY29ycmVjdGx5IHNldCBzdGF0ZSBmcm9tIGZvcm0gdmFsdWUgKi9cbiAgd3JpdGVWYWx1ZSh2YWx1ZTogYW55KTogdm9pZCB7XG4gICAgY29uc3Qgb3B0aW9ucyA9IHRoaXMuZHJvcGRvd25VdGlscy5mbGF0dGVuT3B0aW9ucyh0aGlzLl9vcHRpb25zLCBmYWxzZSlcbiAgICB0aGlzLnN0YXRlID0gb3B0aW9ucy5maW5kKChvcHRpb24pID0+IG9wdGlvbi5rZXkgPT09IHZhbHVlKVxuICB9XG5cbiAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAvLyBFVkVOVFNcbiAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG4gIC8qKiBAaW50ZXJuYWwgKi9cbiAgb25TZWxlY3RDaGFuZ2Uob3B0aW9uOiBUKSB7XG4gICAgaWYgKG9wdGlvbi5kaXNhYmxlZCkgcmV0dXJuXG4gICAgdGhpcy51cGRhdGVNb2RlbChvcHRpb24pXG4gICAgdGhpcy5zZXRFeHBhbmRlZChmYWxzZSlcbiAgfVxuXG4gIC8vIC8qKlxuICAvLyAgKiBAaW50ZXJuYWxcbiAgLy8gICogRW50ZXIgdG9nZ2xlcyB0aGUgZHJvcGRvd24sIGhvbWUsIGVuZCwgYW5kLCBhcnJvd3MgY2hhbmdlIHRoZSBpbmRleC5cbiAgLy8gICogQHBhcmFtIGV2ZW50IGZpcmVkIGNvbnRhaW5pbmcgd2hpY2gga2V5IHdhcyByZWxlYXNlZC5cbiAgLy8gICovXG4gIEBIb3N0TGlzdGVuZXIoJ2tleXVwJywgWyckZXZlbnQnXSlcbiAgb25LZXlVcChldmVudDogS2V5Ym9hcmRFdmVudCkge1xuICAgIHRoaXMua2V5RXZlbnQgPSBldmVudFxuICB9XG5cbiAgLyoqXG4gICAqIENsb3NlcyB0aGUgZHJvcGRvd24gb24gY2xpY2sgb3V0c2lkZS5cbiAgICovXG4gIHN1YnNjcmliZVRvT3V0c2lkZUNsaWNrRXZlbnQoKSB7XG4gICAgdGhpcy5vbkNsaWNrU3Vic2NyaXB0aW9uID0gZnJvbUV2ZW50KGRvY3VtZW50LCAnY2xpY2snKS5zdWJzY3JpYmUoe1xuICAgICAgbmV4dDogKGV2ZW50OiBFdmVudCkgPT4ge1xuICAgICAgICBpZiAoXG4gICAgICAgICAgdGhpcy5leHBhbmRlZCAmJlxuICAgICAgICAgICF0aGlzLmlucHV0UmVmPy5uYXRpdmVFbGVtZW50LmNvbnRhaW5zKGV2ZW50LnRhcmdldClcbiAgICAgICAgKSB7XG4gICAgICAgICAgdGhpcy50b2dnbGVEcm9wZG93bigpXG4gICAgICAgICAgdGhpcy5vbkNsaWNrU3Vic2NyaXB0aW9uPy51bnN1YnNjcmliZSgpXG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgfSlcbiAgfVxuXG4gIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgLy8gSEVMUEVSU1xuICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbiAgLyoqXG4gICAqIFNldCB0aGUgZHJvcGRvd24gdmFsdWUgdG8gZ2l2ZW4gb3B0aW9uLlxuICAgKiBAcGFyYW0gdmFsdWUgdGhlIGRyb3Bkb3duIG9wdGlvbiB0byBzZWxlY3QuXG4gICAqL1xuICBwcml2YXRlIHVwZGF0ZU1vZGVsKHZhbHVlOiBUKSB7XG4gICAgdGhpcy5zdGF0ZSA9IHZhbHVlXG4gICAgdGhpcy5vbkNoYW5nZSh2YWx1ZS5rZXkpXG4gIH1cblxuICAvKiogVG9nZ2xlIHRoZSBleHBhbmRlZCBzdGF0ZSBvZiB0aGUgZHJvcGRvd24gb3B0aW9ucy4gKi9cbiAgdG9nZ2xlRHJvcGRvd24oKSB7XG4gICAgdGhpcy5zZXRFeHBhbmRlZCghdGhpcy5leHBhbmRlZClcbiAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKClcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXQgdGhlIGV4cGFuZGVkIHN0YXRlIG9mIHRoZSBkcm9wZG93biBvcHRpb25zLiBJZiB0cnVlIHRoZSBvcHRpb25zIGFyZSBzaG93biBiZWxvdyB0aGUgZmllbGQuXG4gICAqIEFjdGl2YXRlIG9uIGNsaWNrIGV2ZW50IHRvIGJlIGFibGUgdG8gY2xvc2UgZHJvcGRvd24gb24gY2xpY2sgb3V0c2lkZS5cbiAgICogQHBhcmFtIHN0YXRlIHRoZSBleHBhbmRlZCBzdGF0ZSB3aGljaCB0byBzZXQuXG4gICAqL1xuICBzZXRFeHBhbmRlZChzdGF0ZSA9IHRydWUpIHtcbiAgICB0aGlzLmV4cGFuZGVkID0gc3RhdGVcbiAgICB0aGlzLmV4cGFuZGVkQ2hhbmdlLmVtaXQodGhpcy5leHBhbmRlZClcbiAgICBpZiAodGhpcy5leHBhbmRlZCkgdGhpcy5zdWJzY3JpYmVUb091dHNpZGVDbGlja0V2ZW50KClcbiAgICBpZiAoIXRoaXMuZXhwYW5kZWQpIHRoaXMub25Ub3VjaGVkKClcbiAgfVxuXG4gIC8qIFRZUEUgQ0FTVFMgKi9cblxuICAvKipcbiAgICogVHlwZWNhc3QgYW55dGhpbmcgdG8gYW4ge0BsaW5rIE9wdGlvbn0uXG4gICAqIEBwYXJhbSBvcHRpb24gdGhlIG9iamVjdCB0byB0eXBlY2FzdC5cbiAgICovXG4gIGNhc3RPcHRpb24ob3B0aW9uOiBhbnkpOiBUIHtcbiAgICByZXR1cm4gb3B0aW9uXG4gIH1cblxuICAvKipcbiAgICogVHlwZWNhc3QgYW55dGhpbmcgdG8gYW4ge0BsaW5rIE9wdGlvbkdyb3VwfS5cbiAgICogQHBhcmFtIGdyb3VwIHRoZSBvYmplY3QgdG8gdHlwZWNhc3QuXG4gICAqL1xuICBjYXN0R3JvdXAoZ3JvdXA6IGFueSk6IE9wdGlvbkdyb3VwPFQ+IHtcbiAgICByZXR1cm4gZ3JvdXBcbiAgfVxuXG4gIC8qIFRZUEUgQ0hFQ0tTICovXG5cbiAgLyoqXG4gICAqIFJldHVybnMgdHJ1ZSBpZiBhcmd1bWVudCBpcyBhbiB7QGxpbmsgT3B0aW9ufS5cbiAgICogQHBhcmFtIG9wdGlvbiB0aGUgb2JqZWN0IHRvIGNoZWNrLlxuICAgKi9cbiAgaXNPcHRpb24ob3B0aW9uOiBPcHRpb25CYXNlPFQ+KTogb3B0aW9uIGlzIE9wdGlvbkdyb3VwPFQ+IHtcbiAgICByZXR1cm4gISgnb3B0aW9ucycgaW4gb3B0aW9uKVxuICB9XG59XG4iLCI8IS0tIExBQkVMIC0tPlxuPG5nLWNvbnRhaW5lciAqdHJhbnNsb2NvPVwibGV0IHQ7IHJlYWQ6IHNjb3BlXCI+XG4gIDxsYWJlbCBbaWRdPVwiaWQgKyAnLWxhYmVsJ1wiIGNsYXNzPVwiaGlkZS1pZi1lbXB0eVwiIFthdHRyLmZvcl09XCJpZCArICctdG9nZ2xlJ1wiPlxuICAgIDxuZy10ZW1wbGF0ZVxuICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJsYWJlbENvbnRlbnRUcGwgfHwgYmFzaWNMYWJlbENvbnRlbnRUcGxcIlxuICAgID48L25nLXRlbXBsYXRlPlxuICAgIDxuZy10ZW1wbGF0ZSAjYmFzaWNMYWJlbENvbnRlbnRUcGw+XG4gICAgICA8IS0tIHRvIHRyaWdnZXIgY3NzOmVtcHR5IGlmIG5vIGxhYmVsIHdhcyBhZGRlZCAtLT5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJsYWJlbFwiPlxuICAgICAgICB7eyBsYWJlbCB9fVxuICAgICAgICA8c3BhblxuICAgICAgICAgICpuZ0lmPVwib3B0aW9uYWwgPT09IHRydWUgfHwgKHJlcXVpcmVkICE9PSB0cnVlICYmIG9wdGlvbmFsICE9PSBmYWxzZSlcIlxuICAgICAgICAgIGNsYXNzPVwic2R2LWZpZWxkLWxhYmVsLS1vcHRpb25hbFwiXG4gICAgICAgID5cbiAgICAgICAgICAoe3sgdCgnbGFiZWwub3B0aW9uYWwnKSB9fSlcbiAgICAgICAgPC9zcGFuPlxuICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgPC9uZy10ZW1wbGF0ZT5cbiAgPC9sYWJlbD5cblxuICA8IS0tIERFU0NSSVBUSU9OIC0tPlxuICA8ZGl2IGNsYXNzPVwiZGVzY3JpcHRpb25cIj57eyBkZXNjcmlwdGlvbiB9fTwvZGl2PlxuXG4gIDwhLS0gTE9DS0VEIElOUFVUIC0tPlxuICA8bmctY29udGFpbmVyICpuZ0lmPVwibG9ja2VkXCI+XG4gICAgPGRpdlxuICAgICAgW2lkXT1cImlkICsgJy1pbnB1dCdcIlxuICAgICAgY2xhc3M9XCJuZ2d2LWZpZWxkLS1sb2NrZWRcIlxuICAgICAgW2F0dHIubmFtZV09XCJuYW1lXCJcbiAgICAgIFthdHRyLnZhbHVlXT1cInN0YXRlXCJcbiAgICAgIFthdHRyLnJvbGVdPVwicm9sZVwiXG4gICAgICBbYXR0ci5hcmlhLWxhYmVsbGVkYnldPVwiaWQgKyAnLWxhYmVsICcgKyBpZCArICctaW5wdXQnXCJcbiAgICA+XG4gICAgICA8c3BhbiAqbmdJZj1cIiFzdGF0ZVwiIGNsYXNzPVwidW5zZXQtc3RhdGVcIj4tPC9zcGFuPlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInN0YXRlXCI+XG4gICAgICAgIDxuZy10ZW1wbGF0ZVxuICAgICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwiXG4gICAgICAgICAgICBzZWxlY3RlZENvbnRlbnRUcGwgfHwgZGVmYXVsdFNlbGVjdGVkQ29udGVudFRwbDtcbiAgICAgICAgICAgIGNvbnRleHQ6IHsgJGltcGxpY2l0OiBzdGF0ZSB9XG4gICAgICAgICAgXCJcbiAgICAgICAgPlxuICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgPC9kaXY+XG4gIDwvbmctY29udGFpbmVyPlxuXG4gIDwhLS0gSU5QVVQgLS0+XG4gIDxuZy1jb250YWluZXIgKm5nSWY9XCIhbG9ja2VkXCI+XG4gICAgPGRpdiAjaW5wdXQgW2lkXT1cImlkICsgJy1pbnB1dCdcIiBjbGFzcz1cImRyb3Bkb3duXCI+XG4gICAgICA8YnV0dG9uXG4gICAgICAgIFtpZF09XCJpZCArICctdG9nZ2xlJ1wiXG4gICAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiXG4gICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICBjbGFzcz1cIm5nZ3YtZmllbGQtZHJvcGRvd25fX2xhYmVsIHRvZ2dsZVwiXG4gICAgICAgIFtjbGFzcy5uZ2d2LWZpZWxkLS1lcnJvcl09XCJpbnZhbGlkXCJcbiAgICAgICAgYXJpYS1oYXNwb3B1cD1cImxpc3Rib3hcIlxuICAgICAgICBbYXR0ci5kYXRhLXRob29rXT1cInRob29rICsgJy10b2dnbGUnXCJcbiAgICAgICAgW2F0dHIuYXJpYS1leHBhbmRlZF09XCJleHBhbmRlZFwiXG4gICAgICAgIFthdHRyLmFyaWEtbGFiZWxsZWRieV09XCJpZCArICctbGFiZWwgJyArIGlkICsgJy10b2dnbGUnXCJcbiAgICAgICAgKGNsaWNrKT1cInRvZ2dsZURyb3Bkb3duKClcIlxuICAgICAgPlxuICAgICAgICA8bmctdGVtcGxhdGVcbiAgICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cIlxuICAgICAgICAgICAgc2VsZWN0ZWRDb250ZW50VHBsIHx8IGRlZmF1bHRTZWxlY3RlZENvbnRlbnRUcGw7XG4gICAgICAgICAgICBjb250ZXh0OiB7ICRpbXBsaWNpdDogc3RhdGUgfVxuICAgICAgICAgIFwiXG4gICAgICAgID5cbiAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgIDwvYnV0dG9uPlxuXG4gICAgICA8bmdndi1kcm9wZG93bi1saXN0XG4gICAgICAgICNkcm9wRG93bkxpc3RcbiAgICAgICAgW29wdGlvbnNdPVwib3B0aW9uc1wiXG4gICAgICAgIFtzY3JvbGxPZmZzZXRdPVwic2Nyb2xsT2Zmc2V0XCJcbiAgICAgICAgW3N0YXRlXT1cInN0YXRlXCJcbiAgICAgICAgW2V4cGFuZGVkXT1cImV4cGFuZGVkXCJcbiAgICAgICAgW29wdGlvbkNvbnRlbnRUcGxdPVwib3B0aW9uQ29udGVudFRwbFwiXG4gICAgICAgIFt0ZXh0VG9IaWdobGlnaHRdPVwidGV4dFRvSGlnaGxpZ2h0XCJcbiAgICAgICAgKHNlbGVjdGVkVmFsdWVDaGFuZ2VkKT1cIm9uU2VsZWN0Q2hhbmdlKCRldmVudClcIlxuICAgICAgPlxuICAgICAgPC9uZ2d2LWRyb3Bkb3duLWxpc3Q+XG4gICAgPC9kaXY+XG4gICAgPCEtLSBFUlJPUlMgLS0+XG4gICAgPGxhYmVsXG4gICAgICBjbGFzcz1cInNkdi1maWVsZC1ub3RpY2Ugc2R2LWZpZWxkLW5vdGljZS0tZXJyb3JcIlxuICAgICAgW2F0dHIuZm9yXT1cImlkICsgJy1pbnB1dCdcIlxuICAgICAgKm5nSWY9XCJpbnZhbGlkICYmIChlcnJvciB8fCBuZ0NvbnRyb2w/LmludmFsaWQpXCJcbiAgICA+XG4gICAgICA8c3BhbiAqbmdJZj1cImVycm9yOyBlbHNlIGVycm9yc1JlZlwiPnt7IGVycm9yIH19PC9zcGFuPlxuICAgICAgPG5nLXRlbXBsYXRlICNlcnJvcnNSZWY+XG4gICAgICAgIDxzcGFuICpuZ0lmPVwiZmlyc3RFcnJvciBhcyBlcnJvclwiPlxuICAgICAgICAgIHt7IHQoJ2Vycm9yLmZpZWxkJyArIGVycm9yPy5jb2RlLCBlcnJvcj8ucGFyYW1zKSB9fVxuICAgICAgICA8L3NwYW4+XG4gICAgICA8L25nLXRlbXBsYXRlPlxuICAgIDwvbGFiZWw+XG5cbiAgICA8IS0tIENISUxEUkVOIC0tPlxuICAgIDxuZy1jb250ZW50PjwvbmctY29udGVudD5cbiAgPC9uZy1jb250YWluZXI+XG5cbiAgPG5nLXRlbXBsYXRlICNkZWZhdWx0U2VsZWN0ZWRDb250ZW50VHBsIGxldC1zdGF0ZT5cbiAgICA8IS0tIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvdGVtcGxhdGUvZXFlcWVxIC0tPlxuICAgIHt7IHN0YXRlPy5rZXkgIT0gbnVsbCAmJiBzdGF0ZT8ubGFiZWwgPyB0KHN0YXRlLmxhYmVsKSA6IHBsYWNlaG9sZGVyIH19XG4gIDwvbmctdGVtcGxhdGU+XG48L25nLWNvbnRhaW5lcj5cbiJdfQ==
@@ -0,0 +1,22 @@
1
+ import { NgModule } from '@angular/core';
2
+ import { CommonModule } from '@angular/common';
3
+ import { NgvDropdownComponent } from './dropdown.component';
4
+ import { NgvDropdownListComponent } from './dropdown-list/dropdown-list.component';
5
+ import { NgvTypeaheadModule } from './typeahead/typeahead.module';
6
+ import { NgvTooltipModule } from '@sebgroup/green-angular/src/v-angular/tooltip';
7
+ import { NgvI18nModule } from '@sebgroup/green-angular/src/v-angular/i18n';
8
+ import * as i0 from "@angular/core";
9
+ export class NgvDropdownModule {
10
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: NgvDropdownModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
11
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "16.2.12", ngImport: i0, type: NgvDropdownModule, declarations: [NgvDropdownComponent, NgvDropdownListComponent], imports: [CommonModule, NgvTypeaheadModule, NgvTooltipModule, NgvI18nModule], exports: [NgvDropdownComponent, NgvDropdownListComponent] }); }
12
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: NgvDropdownModule, imports: [CommonModule, NgvTypeaheadModule, NgvTooltipModule, NgvI18nModule] }); }
13
+ }
14
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: NgvDropdownModule, decorators: [{
15
+ type: NgModule,
16
+ args: [{
17
+ declarations: [NgvDropdownComponent, NgvDropdownListComponent],
18
+ imports: [CommonModule, NgvTypeaheadModule, NgvTooltipModule, NgvI18nModule],
19
+ exports: [NgvDropdownComponent, NgvDropdownListComponent],
20
+ }]
21
+ }] });
22
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJvcGRvd24ubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9hbmd1bGFyL3NyYy92LWFuZ3VsYXIvZHJvcGRvd24vZHJvcGRvd24ubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUE7QUFDeEMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFBO0FBQzlDLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLHNCQUFzQixDQUFBO0FBQzNELE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLHlDQUF5QyxDQUFBO0FBQ2xGLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDhCQUE4QixDQUFBO0FBQ2pFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLCtDQUErQyxDQUFBO0FBQ2hGLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSw0Q0FBNEMsQ0FBQTs7QUFPMUUsTUFBTSxPQUFPLGlCQUFpQjsrR0FBakIsaUJBQWlCO2dIQUFqQixpQkFBaUIsaUJBSmIsb0JBQW9CLEVBQUUsd0JBQXdCLGFBQ25ELFlBQVksRUFBRSxrQkFBa0IsRUFBRSxnQkFBZ0IsRUFBRSxhQUFhLGFBQ2pFLG9CQUFvQixFQUFFLHdCQUF3QjtnSEFFN0MsaUJBQWlCLFlBSGxCLFlBQVksRUFBRSxrQkFBa0IsRUFBRSxnQkFBZ0IsRUFBRSxhQUFhOzs0RkFHaEUsaUJBQWlCO2tCQUw3QixRQUFRO21CQUFDO29CQUNSLFlBQVksRUFBRSxDQUFDLG9CQUFvQixFQUFFLHdCQUF3QixDQUFDO29CQUM5RCxPQUFPLEVBQUUsQ0FBQyxZQUFZLEVBQUUsa0JBQWtCLEVBQUUsZ0JBQWdCLEVBQUUsYUFBYSxDQUFDO29CQUM1RSxPQUFPLEVBQUUsQ0FBQyxvQkFBb0IsRUFBRSx3QkFBd0IsQ0FBQztpQkFDMUQiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnXG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nXG5pbXBvcnQgeyBOZ3ZEcm9wZG93bkNvbXBvbmVudCB9IGZyb20gJy4vZHJvcGRvd24uY29tcG9uZW50J1xuaW1wb3J0IHsgTmd2RHJvcGRvd25MaXN0Q29tcG9uZW50IH0gZnJvbSAnLi9kcm9wZG93bi1saXN0L2Ryb3Bkb3duLWxpc3QuY29tcG9uZW50J1xuaW1wb3J0IHsgTmd2VHlwZWFoZWFkTW9kdWxlIH0gZnJvbSAnLi90eXBlYWhlYWQvdHlwZWFoZWFkLm1vZHVsZSdcbmltcG9ydCB7IE5ndlRvb2x0aXBNb2R1bGUgfSBmcm9tICdAc2ViZ3JvdXAvZ3JlZW4tYW5ndWxhci9zcmMvdi1hbmd1bGFyL3Rvb2x0aXAnXG5pbXBvcnQgeyBOZ3ZJMThuTW9kdWxlIH0gZnJvbSAnQHNlYmdyb3VwL2dyZWVuLWFuZ3VsYXIvc3JjL3YtYW5ndWxhci9pMThuJ1xuXG5ATmdNb2R1bGUoe1xuICBkZWNsYXJhdGlvbnM6IFtOZ3ZEcm9wZG93bkNvbXBvbmVudCwgTmd2RHJvcGRvd25MaXN0Q29tcG9uZW50XSxcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSwgTmd2VHlwZWFoZWFkTW9kdWxlLCBOZ3ZUb29sdGlwTW9kdWxlLCBOZ3ZJMThuTW9kdWxlXSxcbiAgZXhwb3J0czogW05ndkRyb3Bkb3duQ29tcG9uZW50LCBOZ3ZEcm9wZG93bkxpc3RDb21wb25lbnRdLFxufSlcbmV4cG9ydCBjbGFzcyBOZ3ZEcm9wZG93bk1vZHVsZSB7fVxuIl19
@@ -0,0 +1,6 @@
1
+ export * from './dropdown.component';
2
+ export * from './dropdown.module';
3
+ export * from './dropdown-list';
4
+ export * from './typeahead';
5
+ export * from './dropdown-list';
6
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXIvc3JjL3YtYW5ndWxhci9kcm9wZG93bi9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLHNCQUFzQixDQUFBO0FBQ3BDLGNBQWMsbUJBQW1CLENBQUE7QUFDakMsY0FBYyxpQkFBaUIsQ0FBQTtBQUMvQixjQUFjLGFBQWEsQ0FBQTtBQUMzQixjQUFjLGlCQUFpQixDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9kcm9wZG93bi5jb21wb25lbnQnXG5leHBvcnQgKiBmcm9tICcuL2Ryb3Bkb3duLm1vZHVsZSdcbmV4cG9ydCAqIGZyb20gJy4vZHJvcGRvd24tbGlzdCdcbmV4cG9ydCAqIGZyb20gJy4vdHlwZWFoZWFkJ1xuZXhwb3J0ICogZnJvbSAnLi9kcm9wZG93bi1saXN0J1xuIl19
@@ -0,0 +1,6 @@
1
+ export * from './typeahead-highlight/typeahead-highlight.component';
2
+ export * from './typeahead-input/typeahead-input.component';
3
+ export * from './typeahead-dropdown-list/typeahead-dropdown-list.component';
4
+ export * from './typeahead.directive';
5
+ export * from './typeahead.module';
6
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXIvc3JjL3YtYW5ndWxhci9kcm9wZG93bi90eXBlYWhlYWQvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxxREFBcUQsQ0FBQTtBQUNuRSxjQUFjLDZDQUE2QyxDQUFBO0FBQzNELGNBQWMsNkRBQTZELENBQUE7QUFDM0UsY0FBYyx1QkFBdUIsQ0FBQTtBQUNyQyxjQUFjLG9CQUFvQixDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi90eXBlYWhlYWQtaGlnaGxpZ2h0L3R5cGVhaGVhZC1oaWdobGlnaHQuY29tcG9uZW50J1xuZXhwb3J0ICogZnJvbSAnLi90eXBlYWhlYWQtaW5wdXQvdHlwZWFoZWFkLWlucHV0LmNvbXBvbmVudCdcbmV4cG9ydCAqIGZyb20gJy4vdHlwZWFoZWFkLWRyb3Bkb3duLWxpc3QvdHlwZWFoZWFkLWRyb3Bkb3duLWxpc3QuY29tcG9uZW50J1xuZXhwb3J0ICogZnJvbSAnLi90eXBlYWhlYWQuZGlyZWN0aXZlJ1xuZXhwb3J0ICogZnJvbSAnLi90eXBlYWhlYWQubW9kdWxlJ1xuIl19
@@ -0,0 +1,98 @@
1
+ import { Component, ElementRef, Inject, Input, Optional, SkipSelf, } from '@angular/core';
2
+ import { fromEvent, Subject, takeUntil } from 'rxjs';
3
+ import { TRANSLOCO_SCOPE } from '@ngneat/transloco';
4
+ import { NgvDropdownListComponent } from '../../dropdown-list/dropdown-list.component';
5
+ import { NgvInputComponent } from '@sebgroup/green-angular/src/v-angular/input';
6
+ import * as i0 from "@angular/core";
7
+ import * as i1 from "@angular/common";
8
+ import * as i2 from "@sebgroup/green-angular/src/v-angular/tooltip";
9
+ import * as i3 from "../typeahead-highlight/typeahead-highlight.component";
10
+ // Use dropdownList template and combine stylesheets
11
+ export class NgvTypeaheadDropdownListComponent extends NgvDropdownListComponent {
12
+ constructor(translocoScope, element) {
13
+ super(translocoScope);
14
+ this.translocoScope = translocoScope;
15
+ this.element = element;
16
+ this._destroy$ = new Subject();
17
+ }
18
+ ngOnInit() {
19
+ this.handleSelectedValueChanges();
20
+ this.handleFocusChanges();
21
+ }
22
+ ngOnDestroy() {
23
+ this._destroy$.next(true);
24
+ this._destroy$.complete();
25
+ }
26
+ /** @Internal Subscribe to click outside dropdownList and input to close dropdownList */
27
+ subscribeToOutsideClickEvent() {
28
+ this.onClickSubscription = fromEvent(document, 'click')
29
+ .pipe(takeUntil(this._destroy$))
30
+ .subscribe({
31
+ next: (event) => {
32
+ if (this.expanded &&
33
+ !this.element.nativeElement.contains(event.target) &&
34
+ !this.hostComponent.inputRef?.nativeElement.contains(event.target)) {
35
+ this.setExpanded(false);
36
+ this.onClickSubscription?.unsubscribe();
37
+ }
38
+ },
39
+ });
40
+ }
41
+ /** @Internal Update state of the host-input to reflect the selected value */
42
+ handleSelectedValueChanges() {
43
+ this.selectedValueChanged
44
+ .pipe(takeUntil(this._destroy$))
45
+ .subscribe((selected) => {
46
+ if (this.hostComponent.inputRef) {
47
+ this.hostComponent.state = `${this.formatSelected(selected)}`;
48
+ }
49
+ });
50
+ }
51
+ /** @Internal Expand the dropdown when input receives focus. If no state, set empty string in input */
52
+ handleFocusChanges() {
53
+ this.hostComponent.nggvFocus
54
+ .asObservable()
55
+ .pipe(takeUntil(this._destroy$))
56
+ .subscribe(() => {
57
+ if (!this.state)
58
+ this.hostComponent.nggvInput.emit('');
59
+ this.setExpanded(true);
60
+ this.subscribeToOutsideClickEvent();
61
+ });
62
+ }
63
+ /**
64
+ * @internal Formats the selected option to display in the input. Interpolate the returned value
65
+ * since we don't know the return type or label type.
66
+ * @param value The selected value
67
+ * @returns The formatted value
68
+ */
69
+ formatSelected(value) {
70
+ if (value?.key == null)
71
+ return '';
72
+ //If no formatter exists, return the label or empty string
73
+ if (!this.selectedFormatter)
74
+ return value.label ?? '';
75
+ // If a formatter exists, use it
76
+ return this.selectedFormatter(value) ?? '';
77
+ }
78
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: NgvTypeaheadDropdownListComponent, deps: [{ token: TRANSLOCO_SCOPE, optional: true, skipSelf: true }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component }); }
79
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: NgvTypeaheadDropdownListComponent, selector: "nggv-typeahead-dropdown-list", inputs: { hostComponent: "hostComponent", resultFormatter: "resultFormatter", selectedFormatter: "selectedFormatter" }, usesInheritance: true, ngImport: i0, template: "<ng-container *transloco=\"let t; read: scope\">\n <ul\n class=\"gds-dropdown__options card options gds-reset\"\n [class.gds-dropdown__options-expanded]=\"expanded\"\n role=\"listbox\"\n tabindex=\"-1\"\n [attr.data-thook]=\"thook + '-options'\"\n [attr.aria-labelledby]=\"id + '-label'\"\n [attr.aria-activedescendant]=\"\n state ? id + '-option-' + state?.key : undefined\n \"\n >\n <ng-container *ngFor=\"let item of options\">\n <!-- OPTION -->\n <ng-container *ngIf=\"!isGroup(item)\">\n <ng-template\n *ngTemplateOutlet=\"listItemTemplate; context: { $implicit: item }\"\n ></ng-template>\n </ng-container>\n\n <!-- OPTION GROUP -->\n <li\n class=\"gds-dropdown__options__label group\"\n [attr.data-thook]=\"thook + '-option-group'\"\n *ngIf=\"isGroup(item)\"\n >\n <div class=\"sdv-list__label\">{{ t(item.label) }}</div>\n <ul [attr.aria-disabled]=\"item.disabled\">\n <ng-container *ngFor=\"let option of castGroup(item).options\">\n <ng-template\n *ngTemplateOutlet=\"\n listItemTemplate;\n context: { $implicit: option }\n \"\n ></ng-template>\n </ng-container>\n </ul>\n </li>\n </ng-container>\n </ul>\n\n <!-- TEMPLATE -->\n <ng-template #listItemTemplate let-option>\n <li\n #optionRefs\n *ngIf=\"!optionContentTpl\"\n tabindex=\"-1\"\n [id]=\"id + '-option-' + option.key\"\n class=\"gds-dropdown__options__label option\"\n role=\"option\"\n #liElem\n [attr.data-thook]=\"thook + '-option-' + option.key\"\n [attr.aria-disabled]=\"option.disabled\"\n [attr.aria-selected]=\"\n option.key === selectedValue?.key && !!selectedValue?.key\n \"\n [attr.aria-focus]=\"option.key === state?.key && !option.disabled\"\n [nggvTooltip]=\"isOverflow(liElem) ? t(option.label) : undefined\"\n (click)=\"updateState(option, $event)\"\n >\n <ng-template\n *ngTemplateOutlet=\"\n basicOptionContentTpl;\n context: { $implicit: option }\n \"\n >\n </ng-template>\n </li>\n <!-- Checking overflow on custom templates do not work skip adding nggvToolTip if custom template is provided -->\n <li\n #optionRefs\n *ngIf=\"!!optionContentTpl\"\n tabindex=\"-1\"\n [id]=\"id + '-option-' + option.key\"\n class=\"gds-dropdown__options__label option\"\n role=\"option\"\n #liElem\n [attr.data-thook]=\"thook + '-option-' + option.key\"\n [attr.aria-disabled]=\"option.disabled\"\n [attr.aria-selected]=\"\n option.key === selectedValue?.key && !!selectedValue?.key\n \"\n [attr.aria-focus]=\"option.key === state?.key && !option.disabled\"\n (click)=\"updateState(option, $event)\"\n >\n <ng-template\n *ngTemplateOutlet=\"optionContentTpl; context: { $implicit: option }\"\n >\n </ng-template>\n </li>\n </ng-template>\n\n <ng-template #basicOptionContentTpl let-option>\n <nggv-typeahead-highlight\n *ngIf=\"!!textToHighlight\"\n [textToHighlight]=\"textToHighlight\"\n [textContent]=\"t(option.label)\"\n >\n </nggv-typeahead-highlight>\n <ng-container *ngIf=\"!textToHighlight\">\n {{ t(option.label) }}\n </ng-container>\n </ng-template>\n</ng-container>\n", styles: [":host{display:flex;width:100%;position:relative}\n", ":host{position:absolute;bottom:0;transform:translateY(calc(100% + .5rem));--z-index: var(--sg-z-index-dropdown)}:host .hidden{visibility:hidden;display:none}:host ul[role=menu] [role=menuitem]{padding:.75rem;cursor:pointer}:host ul[role=menu] [role=menuitem]:hover,:host ul[role=menu] [role=menuitem]:focus-visible{background-color:var(--gds-ref-pallet-base200)}:host ul[role=menu] [role=menuitem]:active{background-color:var(--gds-ref-pallet-base300)}:host ul[role=menu] [role=menuitem]:focus{outline-color:#000;outline-offset:-.25rem}:host ul[role=listbox]{--z-index: var(--sg-z-index-popover);background-color:var(--sg-popover-background);flex-direction:column;justify-content:flex-end;inset:auto;z-index:var(--z-index);box-shadow:var(--sg-popover-box-shadow);color:var(--text-primary-color);padding:0;border:solid var(--sg-border-width) var(--sg-border-color);--border-color: var(--text-primary-color);--sg-border-color: var(--text-primary-color);border-radius:var(--sg-border-radius)}:host ul[role=listbox] [role=option]{padding:.75rem 1rem;line-height:1.25;cursor:pointer}:host ul[role=listbox] [role=option]:hover,:host ul[role=listbox] [role=option]:focus-visible{background-color:var(--grey-400)}:host ul[role=listbox] [role=option]:active{background-color:var(--grey-400)}:host ul[role=listbox] [role=option]:focus{outline-color:#000;outline-offset:-.25rem}:host ul[role=listbox] [role=option].active.sg-highlighted,:host ul[role=listbox] [role=option][aria-selected=true]{background:var(--grey-1000);color:#fff}:host .sg-fieldset-container{overflow-y:auto}:host .sg-fieldset-container fieldset[role=listbox][aria-multiselectable=true] [role=option]{display:flex;width:100%}:host .sg-fieldset-container fieldset[role=listbox][aria-multiselectable=true] [role=option].active.sg-highlighted input[type=checkbox]~i{border-color:#007ac7!important;box-shadow:0 0 .25em .0625em #41b0ee;outline-color:transparent;outline-style:solid}:host .gds-dropdown__options{padding-left:0;margin-bottom:0;margin-top:0;display:flex;flex-direction:column;list-style:none;display:none}:host .gds-dropdown__options>li{padding-bottom:.5rem;padding-top:.5rem;border:0;display:block;position:relative}:host .gds-dropdown__options>li:before{font-weight:500;display:inline-block;left:0;position:absolute;text-align:center}:host .gds-dropdown__options-expanded{display:block}:host .gds-dropdown__options__label:hover,:host .gds-dropdown__options__label:focus-visible{background-color:var(--grey-400)}:host .gds-dropdown__options__label:active{background-color:var(--grey-500)}:host .gds-dropdown__options__label:focus-visible{outline-color:#000;outline-offset:-.25rem}:host .gds-dropdown__options__label[aria-hidden=true]{display:none}:host .gds-dropdown__options__label[highlighted]{color:#fff}\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: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i2.NgvTooltipDirective, selector: "[nggvTooltip]", inputs: ["nggvTooltip", "thook", "placement", "shown", "offset", "resizeThrottle", "maxWidth"], outputs: ["nggvShow", "nggvHide"] }, { kind: "component", type: i3.NgvTypeaheadHighlightComponent, selector: "nggv-typeahead-highlight", inputs: ["textContent", "textToHighlight"] }] }); }
80
+ }
81
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: NgvTypeaheadDropdownListComponent, decorators: [{
82
+ type: Component,
83
+ args: [{ selector: 'nggv-typeahead-dropdown-list', template: "<ng-container *transloco=\"let t; read: scope\">\n <ul\n class=\"gds-dropdown__options card options gds-reset\"\n [class.gds-dropdown__options-expanded]=\"expanded\"\n role=\"listbox\"\n tabindex=\"-1\"\n [attr.data-thook]=\"thook + '-options'\"\n [attr.aria-labelledby]=\"id + '-label'\"\n [attr.aria-activedescendant]=\"\n state ? id + '-option-' + state?.key : undefined\n \"\n >\n <ng-container *ngFor=\"let item of options\">\n <!-- OPTION -->\n <ng-container *ngIf=\"!isGroup(item)\">\n <ng-template\n *ngTemplateOutlet=\"listItemTemplate; context: { $implicit: item }\"\n ></ng-template>\n </ng-container>\n\n <!-- OPTION GROUP -->\n <li\n class=\"gds-dropdown__options__label group\"\n [attr.data-thook]=\"thook + '-option-group'\"\n *ngIf=\"isGroup(item)\"\n >\n <div class=\"sdv-list__label\">{{ t(item.label) }}</div>\n <ul [attr.aria-disabled]=\"item.disabled\">\n <ng-container *ngFor=\"let option of castGroup(item).options\">\n <ng-template\n *ngTemplateOutlet=\"\n listItemTemplate;\n context: { $implicit: option }\n \"\n ></ng-template>\n </ng-container>\n </ul>\n </li>\n </ng-container>\n </ul>\n\n <!-- TEMPLATE -->\n <ng-template #listItemTemplate let-option>\n <li\n #optionRefs\n *ngIf=\"!optionContentTpl\"\n tabindex=\"-1\"\n [id]=\"id + '-option-' + option.key\"\n class=\"gds-dropdown__options__label option\"\n role=\"option\"\n #liElem\n [attr.data-thook]=\"thook + '-option-' + option.key\"\n [attr.aria-disabled]=\"option.disabled\"\n [attr.aria-selected]=\"\n option.key === selectedValue?.key && !!selectedValue?.key\n \"\n [attr.aria-focus]=\"option.key === state?.key && !option.disabled\"\n [nggvTooltip]=\"isOverflow(liElem) ? t(option.label) : undefined\"\n (click)=\"updateState(option, $event)\"\n >\n <ng-template\n *ngTemplateOutlet=\"\n basicOptionContentTpl;\n context: { $implicit: option }\n \"\n >\n </ng-template>\n </li>\n <!-- Checking overflow on custom templates do not work skip adding nggvToolTip if custom template is provided -->\n <li\n #optionRefs\n *ngIf=\"!!optionContentTpl\"\n tabindex=\"-1\"\n [id]=\"id + '-option-' + option.key\"\n class=\"gds-dropdown__options__label option\"\n role=\"option\"\n #liElem\n [attr.data-thook]=\"thook + '-option-' + option.key\"\n [attr.aria-disabled]=\"option.disabled\"\n [attr.aria-selected]=\"\n option.key === selectedValue?.key && !!selectedValue?.key\n \"\n [attr.aria-focus]=\"option.key === state?.key && !option.disabled\"\n (click)=\"updateState(option, $event)\"\n >\n <ng-template\n *ngTemplateOutlet=\"optionContentTpl; context: { $implicit: option }\"\n >\n </ng-template>\n </li>\n </ng-template>\n\n <ng-template #basicOptionContentTpl let-option>\n <nggv-typeahead-highlight\n *ngIf=\"!!textToHighlight\"\n [textToHighlight]=\"textToHighlight\"\n [textContent]=\"t(option.label)\"\n >\n </nggv-typeahead-highlight>\n <ng-container *ngIf=\"!textToHighlight\">\n {{ t(option.label) }}\n </ng-container>\n </ng-template>\n</ng-container>\n", styles: [":host{display:flex;width:100%;position:relative}\n", ":host{position:absolute;bottom:0;transform:translateY(calc(100% + .5rem));--z-index: var(--sg-z-index-dropdown)}:host .hidden{visibility:hidden;display:none}:host ul[role=menu] [role=menuitem]{padding:.75rem;cursor:pointer}:host ul[role=menu] [role=menuitem]:hover,:host ul[role=menu] [role=menuitem]:focus-visible{background-color:var(--gds-ref-pallet-base200)}:host ul[role=menu] [role=menuitem]:active{background-color:var(--gds-ref-pallet-base300)}:host ul[role=menu] [role=menuitem]:focus{outline-color:#000;outline-offset:-.25rem}:host ul[role=listbox]{--z-index: var(--sg-z-index-popover);background-color:var(--sg-popover-background);flex-direction:column;justify-content:flex-end;inset:auto;z-index:var(--z-index);box-shadow:var(--sg-popover-box-shadow);color:var(--text-primary-color);padding:0;border:solid var(--sg-border-width) var(--sg-border-color);--border-color: var(--text-primary-color);--sg-border-color: var(--text-primary-color);border-radius:var(--sg-border-radius)}:host ul[role=listbox] [role=option]{padding:.75rem 1rem;line-height:1.25;cursor:pointer}:host ul[role=listbox] [role=option]:hover,:host ul[role=listbox] [role=option]:focus-visible{background-color:var(--grey-400)}:host ul[role=listbox] [role=option]:active{background-color:var(--grey-400)}:host ul[role=listbox] [role=option]:focus{outline-color:#000;outline-offset:-.25rem}:host ul[role=listbox] [role=option].active.sg-highlighted,:host ul[role=listbox] [role=option][aria-selected=true]{background:var(--grey-1000);color:#fff}:host .sg-fieldset-container{overflow-y:auto}:host .sg-fieldset-container fieldset[role=listbox][aria-multiselectable=true] [role=option]{display:flex;width:100%}:host .sg-fieldset-container fieldset[role=listbox][aria-multiselectable=true] [role=option].active.sg-highlighted input[type=checkbox]~i{border-color:#007ac7!important;box-shadow:0 0 .25em .0625em #41b0ee;outline-color:transparent;outline-style:solid}:host .gds-dropdown__options{padding-left:0;margin-bottom:0;margin-top:0;display:flex;flex-direction:column;list-style:none;display:none}:host .gds-dropdown__options>li{padding-bottom:.5rem;padding-top:.5rem;border:0;display:block;position:relative}:host .gds-dropdown__options>li:before{font-weight:500;display:inline-block;left:0;position:absolute;text-align:center}:host .gds-dropdown__options-expanded{display:block}:host .gds-dropdown__options__label:hover,:host .gds-dropdown__options__label:focus-visible{background-color:var(--grey-400)}:host .gds-dropdown__options__label:active{background-color:var(--grey-500)}:host .gds-dropdown__options__label:focus-visible{outline-color:#000;outline-offset:-.25rem}:host .gds-dropdown__options__label[aria-hidden=true]{display:none}:host .gds-dropdown__options__label[highlighted]{color:#fff}\n"] }]
84
+ }], ctorParameters: function () { return [{ type: undefined, decorators: [{
85
+ type: SkipSelf
86
+ }, {
87
+ type: Optional
88
+ }, {
89
+ type: Inject,
90
+ args: [TRANSLOCO_SCOPE]
91
+ }] }, { type: i0.ElementRef }]; }, propDecorators: { hostComponent: [{
92
+ type: Input
93
+ }], resultFormatter: [{
94
+ type: Input
95
+ }], selectedFormatter: [{
96
+ type: Input
97
+ }] } });
98
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZWFoZWFkLWRyb3Bkb3duLWxpc3QuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9hbmd1bGFyL3NyYy92LWFuZ3VsYXIvZHJvcGRvd24vdHlwZWFoZWFkL3R5cGVhaGVhZC1kcm9wZG93bi1saXN0L3R5cGVhaGVhZC1kcm9wZG93bi1saXN0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvYW5ndWxhci9zcmMvdi1hbmd1bGFyL2Ryb3Bkb3duL2Ryb3Bkb3duLWxpc3QvZHJvcGRvd24tbGlzdC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUNULFVBQVUsRUFDVixNQUFNLEVBQ04sS0FBSyxFQUdMLFFBQVEsRUFDUixRQUFRLEdBQ1QsTUFBTSxlQUFlLENBQUE7QUFFdEIsT0FBTyxFQUFFLFNBQVMsRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sTUFBTSxDQUFBO0FBRXBELE9BQU8sRUFBRSxlQUFlLEVBQWtCLE1BQU0sbUJBQW1CLENBQUE7QUFHbkUsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sNkNBQTZDLENBQUE7QUFDdEYsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sNkNBQTZDLENBQUE7Ozs7O0FBRS9FLG9EQUFvRDtBQVNwRCxNQUFNLE9BQU8saUNBQ1gsU0FBUSx3QkFBd0I7SUFhaEMsWUFJWSxjQUE4QixFQUNoQyxPQUFtQjtRQUUzQixLQUFLLENBQUMsY0FBYyxDQUFDLENBQUE7UUFIWCxtQkFBYyxHQUFkLGNBQWMsQ0FBZ0I7UUFDaEMsWUFBTyxHQUFQLE9BQU8sQ0FBWTtRQVByQixjQUFTLEdBQUcsSUFBSSxPQUFPLEVBQVcsQ0FBQTtJQVUxQyxDQUFDO0lBRUQsUUFBUTtRQUNOLElBQUksQ0FBQywwQkFBMEIsRUFBRSxDQUFBO1FBQ2pDLElBQUksQ0FB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IEVsZW1lbnRSZWYsXG4gIEluamVjdCxcbiAgSW5wdXQsXG4gIE9uRGVzdHJveSxcbiAgT25Jbml0LFxuICBPcHRpb25hbCxcbiAgU2tpcFNlbGYsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnXG5cbmltcG9ydCB7IGZyb21FdmVudCwgU3ViamVjdCwgdGFrZVVudGlsIH0gZnJvbSAncnhqcydcblxuaW1wb3J0IHsgVFJBTlNMT0NPX1NDT1BFLCBUcmFuc2xvY29TY29wZSB9IGZyb20gJ0BuZ25lYXQvdHJhbnNsb2NvJ1xuXG5pbXBvcnQgeyBPcHRpb25CYXNlIH0gZnJvbSAnQHNlYmdyb3VwL2dyZWVuLWFuZ3VsYXIvc3JjL3YtYW5ndWxhci9jb3JlJ1xuaW1wb3J0IHsgTmd2RHJvcGRvd25MaXN0Q29tcG9uZW50IH0gZnJvbSAnLi4vLi4vZHJvcGRvd24tbGlzdC9kcm9wZG93bi1saXN0LmNvbXBvbmVudCdcbmltcG9ydCB7IE5ndklucHV0Q29tcG9uZW50IH0gZnJvbSAnQHNlYmdyb3VwL2dyZWVuLWFuZ3VsYXIvc3JjL3YtYW5ndWxhci9pbnB1dCdcblxuLy8gVXNlIGRyb3Bkb3duTGlzdCB0ZW1wbGF0ZSBhbmQgY29tYmluZSBzdHlsZXNoZWV0c1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbmdndi10eXBlYWhlYWQtZHJvcGRvd24tbGlzdCcsXG4gIHRlbXBsYXRlVXJsOiAnLi4vLi4vZHJvcGRvd24tbGlzdC9kcm9wZG93bi1saXN0LmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbXG4gICAgJy4uL3R5cGVhaGVhZC1kcm9wZG93bi1saXN0L3R5cGVhaGVhZC1kcm9wZG93bi1saXN0LmNvbXBvbmVudC5zY3NzJyxcbiAgICAnLi4vLi4vZHJvcGRvd24tbGlzdC9kcm9wZG93bi1saXN0LmNvbXBvbmVudC5zY3NzJyxcbiAgXSxcbn0pXG5leHBvcnQgY2xhc3MgTmd2VHlwZWFoZWFkRHJvcGRvd25MaXN0Q29tcG9uZW50XG4gIGV4dGVuZHMgTmd2RHJvcGRvd25MaXN0Q29tcG9uZW50XG4gIGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3lcbntcbiAgQElucHV0KCkgaG9zdENvbXBvbmVudCE6IE5ndklucHV0Q29tcG9uZW50XG5cbiAgLyoqIEZvcm1hdHMgZWFjaCBpdGVtIHRoYXQgaXMgZGlzcGxheWVkIGFzIGFuIG9wdGlvbi4gT25seSBhcHBsaWVzIGZvcm1hdCBpZiB0aGUgb3B0aW9uIGlmIGl0IGltcGxlbWVudCBPcHRpb24gaW50ZXJmYWNlLiAqL1xuICBASW5wdXQoKSByZXN1bHRGb3JtYXR0ZXI/OiAob3B0aW9uOiBPcHRpb25CYXNlPGFueT4pID0+IHN0cmluZ1xuXG4gIC8qKiBGb3JtYXRzIHRoZSBzZWxlY3RlZCBpdGVtIGluIHRoZSBpbnB1dCB3aGVuIGRyb3Bkb3duIGlzIG9wZW5lZC4gSWYgbm8gZnVuY3Rpb24gaXMgcHJvdmlkZWQsIGl0IHdpbGwgZGlzcGxheSB0aGUgdmFsdWUgb2YgdGhlIHNlbGVjdGVkIG9iamVjdHMgbGFiZWwgcHJvcGVydHkgKi9cbiAgQElucHV0KCkgc2VsZWN0ZWRGb3JtYXR0ZXI/OiAoc2VsZWN0ZWQ6IE9wdGlvbkJhc2U8YW55PikgPT4gc3RyaW5nXG5cbiAgcHJpdmF0ZSBfZGVzdHJveSQgPSBuZXcgU3ViamVjdDxib29sZWFuPigpXG5cbiAgY29uc3RydWN0b3IoXG4gICAgQFNraXBTZWxmKClcbiAgICBAT3B0aW9uYWwoKVxuICAgIEBJbmplY3QoVFJBTlNMT0NPX1NDT1BFKVxuICAgIHByb3RlY3RlZCB0cmFuc2xvY29TY29wZTogVHJhbnNsb2NvU2NvcGUsXG4gICAgcHJpdmF0ZSBlbGVtZW50OiBFbGVtZW50UmVmLFxuICApIHtcbiAgICBzdXBlcih0cmFuc2xvY29TY29wZSlcbiAgfVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMuaGFuZGxlU2VsZWN0ZWRWYWx1ZUNoYW5nZXMoKVxuICAgIHRoaXMuaGFuZGxlRm9jdXNDaGFuZ2VzKClcbiAgfVxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuX2Rlc3Ryb3kkLm5leHQodHJ1ZSlcbiAgICB0aGlzLl9kZXN0cm95JC5jb21wbGV0ZSgpXG4gIH1cblxuICAvKiogQEludGVybmFsIFN1YnNjcmliZSB0byBjbGljayBvdXRzaWRlIGRyb3Bkb3duTGlzdCBhbmQgaW5wdXQgdG8gY2xvc2UgZHJvcGRvd25MaXN0ICovXG4gIHByaXZhdGUgc3Vic2NyaWJlVG9PdXRzaWRlQ2xpY2tFdmVudCgpIHtcbiAgICB0aGlzLm9uQ2xpY2tTdWJzY3JpcHRpb24gPSBmcm9tRXZlbnQoZG9jdW1lbnQsICdjbGljaycpXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5fZGVzdHJveSQpKVxuICAgICAgLnN1YnNjcmliZSh7XG4gICAgICAgIG5leHQ6IChldmVudDogRXZlbnQpID0+IHtcbiAgICAgICAgICBpZiAoXG4gICAgICAgICAgICB0aGlzLmV4cGFuZGVkICYmXG4gICAgICAgICAgICAhdGhpcy5lbGVtZW50Lm5hdGl2ZUVsZW1lbnQuY29udGFpbnMoZXZlbnQudGFyZ2V0KSAmJlxuICAgICAgICAgICAgIXRoaXMuaG9zdENvbXBvbmVudC5pbnB1dFJlZj8ubmF0aXZlRWxlbWVudC5jb250YWlucyhldmVudC50YXJnZXQpXG4gICAgICAgICAgKSB7XG4gICAgICAgICAgICB0aGlzLnNldEV4cGFuZGVkKGZhbHNlKVxuICAgICAgICAgICAgdGhpcy5vbkNsaWNrU3Vic2NyaXB0aW9uPy51bnN1YnNjcmliZSgpXG4gICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgfSlcbiAgfVxuXG4gIC8qKiBASW50ZXJuYWwgVXBkYXRlIHN0YXRlIG9mIHRoZSBob3N0LWlucHV0IHRvIHJlZmxlY3QgdGhlIHNlbGVjdGVkIHZhbHVlICovXG4gIHByaXZhdGUgaGFuZGxlU2VsZWN0ZWRWYWx1ZUNoYW5nZXMoKSB7XG4gICAgdGhpcy5zZWxlY3RlZFZhbHVlQ2hhbmdlZFxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuX2Rlc3Ryb3kkKSlcbiAgICAgIC5zdWJzY3JpYmUoKHNlbGVjdGVkKSA9PiB7XG4gICAgICAgIGlmICh0aGlzLmhvc3RDb21wb25lbnQuaW5wdXRSZWYpIHtcbiAgICAgICAgICB0aGlzLmhvc3RDb21wb25lbnQuc3RhdGUgPSBgJHt0aGlzLmZvcm1hdFNlbGVjdGVkKHNlbGVjdGVkKX1gXG4gICAgICAgIH1cbiAgICAgIH0pXG4gIH1cblxuICAvKiogQEludGVybmFsIEV4cGFuZCB0aGUgZHJvcGRvd24gd2hlbiBpbnB1dCByZWNlaXZlcyBmb2N1cy4gSWYgbm8gc3RhdGUsIHNldCBlbXB0eSBzdHJpbmcgaW4gaW5wdXQgKi9cbiAgcHJpdmF0ZSBoYW5kbGVGb2N1c0NoYW5nZXMoKSB7XG4gICAgdGhpcy5ob3N0Q29tcG9uZW50Lm5nZ3ZGb2N1c1xuICAgICAgLmFzT2JzZXJ2YWJsZSgpXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5fZGVzdHJveSQpKVxuICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgIGlmICghdGhpcy5zdGF0ZSkgdGhpcy5ob3N0Q29tcG9uZW50Lm5nZ3ZJbnB1dC5lbWl0KCcnKVxuICAgICAgICB0aGlzLnNldEV4cGFuZGVkKHRydWUpXG4gICAgICAgIHRoaXMuc3Vic2NyaWJlVG9PdXRzaWRlQ2xpY2tFdmVudCgpXG4gICAgICB9KVxuICB9XG5cbiAgLyoqXG4gICAqIEBpbnRlcm5hbCBGb3JtYXRzIHRoZSBzZWxlY3RlZCBvcHRpb24gdG8gZGlzcGxheSBpbiB0aGUgaW5wdXQuIEludGVycG9sYXRlIHRoZSByZXR1cm5lZCB2YWx1ZVxuICAgKiBzaW5jZSB3ZSBkb24ndCBrbm93IHRoZSByZXR1cm4gdHlwZSBvciBsYWJlbCB0eXBlLlxuICAgKiBAcGFyYW0gdmFsdWUgVGhlIHNlbGVjdGVkIHZhbHVlXG4gICAqIEByZXR1cm5zIFRoZSBmb3JtYXR0ZWQgdmFsdWVcbiAgICovXG4gIHByaXZhdGUgZm9ybWF0U2VsZWN0ZWQodmFsdWU6IE9wdGlvbkJhc2U8YW55Pikge1xuICAgIGlmICh2YWx1ZT8ua2V5ID09IG51bGwpIHJldHVybiAnJ1xuICAgIC8vSWYgbm8gZm9ybWF0dGVyIGV4aXN0cywgcmV0dXJuIHRoZSBsYWJlbCBvciBlbXB0eSBzdHJpbmdcbiAgICBpZiAoIXRoaXMuc2VsZWN0ZWRGb3JtYXR0ZXIpIHJldHVybiB2YWx1ZS5sYWJlbCA/PyAnJ1xuICAgIC8vIElmIGEgZm9ybWF0dGVyIGV4aXN0cywgdXNlIGl0XG4gICAgcmV0dXJuIHRoaXMuc2VsZWN0ZWRGb3JtYXR0ZXIodmFsdWUpID8/ICcnXG4gIH1cbn1cbiIsIjxuZy1jb250YWluZXIgKnRyYW5zbG9jbz1cImxldCB0OyByZWFkOiBzY29wZVwiPlxuICA8dWxcbiAgICBjbGFzcz1cImdkcy1kcm9wZG93bl9fb3B0aW9ucyBjYXJkIG9wdGlvbnMgZ2RzLXJlc2V0XCJcbiAgICBbY2xhc3MuZ2RzLWRyb3Bkb3duX19vcHRpb25zLWV4cGFuZGVkXT1cImV4cGFuZGVkXCJcbiAgICByb2xlPVwibGlzdGJveFwiXG4gICAgdGFiaW5kZXg9XCItMVwiXG4gICAgW2F0dHIuZGF0YS10aG9va109XCJ0aG9vayArICctb3B0aW9ucydcIlxuICAgIFthdHRyLmFyaWEtbGFiZWxsZWRieV09XCJpZCArICctbGFiZWwnXCJcbiAgICBbYXR0ci5hcmlhLWFjdGl2ZWRlc2NlbmRhbnRdPVwiXG4gICAgICBzdGF0ZSA/IGlkICsgJy1vcHRpb24tJyArIHN0YXRlPy5rZXkgOiB1bmRlZmluZWRcbiAgICBcIlxuICA+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgaXRlbSBvZiBvcHRpb25zXCI+XG4gICAgICA8IS0tIE9QVElPTiAtLT5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhaXNHcm91cChpdGVtKVwiPlxuICAgICAgICA8bmctdGVtcGxhdGVcbiAgICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cImxpc3RJdGVtVGVtcGxhdGU7IGNvbnRleHQ6IHsgJGltcGxpY2l0OiBpdGVtIH1cIlxuICAgICAgICA+PC9uZy10ZW1wbGF0ZT5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICA8IS0tIE9QVElPTiBHUk9VUCAtLT5cbiAgICAgIDxsaVxuICAgICAgICBjbGFzcz1cImdkcy1kcm9wZG93bl9fb3B0aW9uc19fbGFiZWwgZ3JvdXBcIlxuICAgICAgICBbYXR0ci5kYXRhLXRob29rXT1cInRob29rICsgJy1vcHRpb24tZ3JvdXAnXCJcbiAgICAgICAgKm5nSWY9XCJpc0dyb3VwKGl0ZW0pXCJcbiAgICAgID5cbiAgICAgICAgPGRpdiBjbGFzcz1cInNkdi1saXN0X19sYWJlbFwiPnt7IHQoaXRlbS5sYWJlbCkgfX08L2Rpdj5cbiAgICAgICAgPHVsIFthdHRyLmFyaWEtZGlzYWJsZWRdPVwiaXRlbS5kaXNhYmxlZFwiPlxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IG9wdGlvbiBvZiBjYXN0R3JvdXAoaXRlbSkub3B0aW9uc1wiPlxuICAgICAgICAgICAgPG5nLXRlbXBsYXRlXG4gICAgICAgICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwiXG4gICAgICAgICAgICAgICAgbGlzdEl0ZW1UZW1wbGF0ZTtcbiAgICAgICAgICAgICAgICBjb250ZXh0OiB7ICRpbXBsaWNpdDogb3B0aW9uIH1cbiAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgID48L25nLXRlbXBsYXRlPlxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICA8L3VsPlxuICAgICAgPC9saT5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgPC91bD5cblxuICA8IS0tIFRFTVBMQVRFIC0tPlxuICA8bmctdGVtcGxhdGUgI2xpc3RJdGVtVGVtcGxhdGUgbGV0LW9wdGlvbj5cbiAgICA8bGlcbiAgICAgICNvcHRpb25SZWZzXG4gICAgICAqbmdJZj1cIiFvcHRpb25Db250ZW50VHBsXCJcbiAgICAgIHRhYmluZGV4PVwiLTFcIlxuICAgICAgW2lkXT1cImlkICsgJy1vcHRpb24tJyArIG9wdGlvbi5rZXlcIlxuICAgICAgY2xhc3M9XCJnZHMtZHJvcGRvd25fX29wdGlvbnNfX2xhYmVsIG9wdGlvblwiXG4gICAgICByb2xlPVwib3B0aW9uXCJcbiAgICAgICNsaUVsZW1cbiAgICAgIFthdHRyLmRhdGEtdGhvb2tdPVwidGhvb2sgKyAnLW9wdGlvbi0nICsgb3B0aW9uLmtleVwiXG4gICAgICBbYXR0ci5hcmlhLWRpc2FibGVkXT1cIm9wdGlvbi5kaXNhYmxlZFwiXG4gICAgICBbYXR0ci5hcmlhLXNlbGVjdGVkXT1cIlxuICAgICAgICBvcHRpb24ua2V5ID09PSBzZWxlY3RlZFZhbHVlPy5rZXkgJiYgISFzZWxlY3RlZFZhbHVlPy5rZXlcbiAgICAgIFwiXG4gICAgICBbYXR0ci5hcmlhLWZvY3VzXT1cIm9wdGlvbi5rZXkgPT09IHN0YXRlPy5rZXkgJiYgIW9wdGlvbi5kaXNhYmxlZFwiXG4gICAgICBbbmdndlRvb2x0aXBdPVwiaXNPdmVyZmxvdyhsaUVsZW0pID8gdChvcHRpb24ubGFiZWwpIDogdW5kZWZpbmVkXCJcbiAgICAgIChjbGljayk9XCJ1cGRhdGVTdGF0ZShvcHRpb24sICRldmVudClcIlxuICAgID5cbiAgICAgIDxuZy10ZW1wbGF0ZVxuICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cIlxuICAgICAgICAgIGJhc2ljT3B0aW9uQ29udGVudFRwbDtcbiAgICAgICAgICBjb250ZXh0OiB7ICRpbXBsaWNpdDogb3B0aW9uIH1cbiAgICAgICAgXCJcbiAgICAgID5cbiAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgPC9saT5cbiAgICA8IS0tIENoZWNraW5nIG92ZXJmbG93IG9uIGN1c3RvbSB0ZW1wbGF0ZXMgZG8gbm90IHdvcmsgc2tpcCBhZGRpbmcgbmdndlRvb2xUaXAgaWYgY3VzdG9tIHRlbXBsYXRlIGlzIHByb3ZpZGVkIC0tPlxuICAgIDxsaVxuICAgICAgI29wdGlvblJlZnNcbiAgICAgICpuZ0lmPVwiISFvcHRpb25Db250ZW50VHBsXCJcbiAgICAgIHRhYmluZGV4PVwiLTFcIlxuICAgICAgW2lkXT1cImlkICsgJy1vcHRpb24tJyArIG9wdGlvbi5rZXlcIlxuICAgICAgY2xhc3M9XCJnZHMtZHJvcGRvd25fX29wdGlvbnNfX2xhYmVsIG9wdGlvblwiXG4gICAgICByb2xlPVwib3B0aW9uXCJcbiAgICAgICNsaUVsZW1cbiAgICAgIFthdHRyLmRhdGEtdGhvb2tdPVwidGhvb2sgKyAnLW9wdGlvbi0nICsgb3B0aW9uLmtleVwiXG4gICAgICBbYXR0ci5hcmlhLWRpc2FibGVkXT1cIm9wdGlvbi5kaXNhYmxlZFwiXG4gICAgICBbYXR0ci5hcmlhLXNlbGVjdGVkXT1cIlxuICAgICAgICBvcHRpb24ua2V5ID09PSBzZWxlY3RlZFZhbHVlPy5rZXkgJiYgISFzZWxlY3RlZFZhbHVlPy5rZXlcbiAgICAgIFwiXG4gICAgICBbYXR0ci5hcmlhLWZvY3VzXT1cIm9wdGlvbi5rZXkgPT09IHN0YXRlPy5rZXkgJiYgIW9wdGlvbi5kaXNhYmxlZFwiXG4gICAgICAoY2xpY2spPVwidXBkYXRlU3RhdGUob3B0aW9uLCAkZXZlbnQpXCJcbiAgICA+XG4gICAgICA8bmctdGVtcGxhdGVcbiAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJvcHRpb25Db250ZW50VHBsOyBjb250ZXh0OiB7ICRpbXBsaWNpdDogb3B0aW9uIH1cIlxuICAgICAgPlxuICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICA8L2xpPlxuICA8L25nLXRlbXBsYXRlPlxuXG4gIDxuZy10ZW1wbGF0ZSAjYmFzaWNPcHRpb25Db250ZW50VHBsIGxldC1vcHRpb24+XG4gICAgPG5nZ3YtdHlwZWFoZWFkLWhpZ2hsaWdodFxuICAgICAgKm5nSWY9XCIhIXRleHRUb0hpZ2hsaWdodFwiXG4gICAgICBbdGV4dFRvSGlnaGxpZ2h0XT1cInRleHRUb0hpZ2hsaWdodFwiXG4gICAgICBbdGV4dENvbnRlbnRdPVwidChvcHRpb24ubGFiZWwpXCJcbiAgICA+XG4gICAgPC9uZ2d2LXR5cGVhaGVhZC1oaWdobGlnaHQ+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiF0ZXh0VG9IaWdobGlnaHRcIj5cbiAgICAgIHt7IHQob3B0aW9uLmxhYmVsKSB9fVxuICAgIDwvbmctY29udGFpbmVyPlxuICA8L25nLXRlbXBsYXRlPlxuPC9uZy1jb250YWluZXI+XG4iXX0=