@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,256 @@
1
+ import { Component, EventEmitter, HostBinding, HostListener, Inject, Input, Optional, Output, ViewChildren, } from '@angular/core';
2
+ import { Subject } from 'rxjs';
3
+ import scrollIntoView from 'scroll-into-view-if-needed';
4
+ import { TRANSLOCO_SCOPE } from '@ngneat/transloco';
5
+ import { DropdownUtils, } from '@sebgroup/green-angular/src/v-angular/core';
6
+ import * as i0 from "@angular/core";
7
+ import * as i1 from "@angular/common";
8
+ import * as i2 from "../typeahead/typeahead-highlight/typeahead-highlight.component";
9
+ import * as i3 from "@sebgroup/green-angular/src/v-angular/tooltip";
10
+ import * as i4 from "@ngneat/transloco";
11
+ export class NgvDropdownListComponent {
12
+ set expanded(state) {
13
+ this.setExpanded(state);
14
+ }
15
+ get expanded() {
16
+ return this._expanded;
17
+ }
18
+ constructor(translocoScope) {
19
+ this.translocoScope = translocoScope;
20
+ /** The additional amount to show when option is scrolled into view. */
21
+ this.scrollOffset = 24;
22
+ /** Id of the host element and is accessible by the children, automatically generated if not provided. */
23
+ this.id = window.nggv?.nextId();
24
+ /** Special property used for selecting DOM elements during automated UI testing. */
25
+ this.thook = 'dropdown';
26
+ this.selectedValueChanged = new EventEmitter();
27
+ this.closed = new EventEmitter();
28
+ /** The current active option based on numeric index. */
29
+ this.activeIndex = -1;
30
+ this.dropdownUtils = new DropdownUtils();
31
+ this._expanded = false;
32
+ this.closed$ = new Subject();
33
+ if (this.translocoScope)
34
+ this.scope = this.translocoScope.toString();
35
+ }
36
+ ngOnInit() {
37
+ if (this.state)
38
+ this.activeIndex = this.options.findIndex((option) => option.key === this.state.key);
39
+ }
40
+ ngOnChanges(changes) {
41
+ if (!!changes.state && !changes.state.firstChange)
42
+ this.selectedValue = changes.state.currentValue;
43
+ if (!!changes.options?.currentValue?.length && this.expanded)
44
+ this.refreshSelectedOption();
45
+ }
46
+ /**
47
+ * Returns true if argument is an {@link OptionGroup}.
48
+ * @param option the object to check.
49
+ */
50
+ isGroup(option) {
51
+ return 'options' in option;
52
+ }
53
+ /** @internal */
54
+ updateState(option, event) {
55
+ if (option.disabled)
56
+ return;
57
+ this.selectedValue = option;
58
+ this.state = option;
59
+ this.selectedValueChanged.emit(option);
60
+ this.setExpanded(false);
61
+ event.stopPropagation();
62
+ }
63
+ /**
64
+ * @internal
65
+ */
66
+ setExpanded(expanded = true) {
67
+ // update expanded state
68
+ this._expanded = expanded;
69
+ if (expanded)
70
+ this.refreshSelectedOption();
71
+ else {
72
+ this.closed$.next(true);
73
+ this.onClickSubscription?.unsubscribe();
74
+ }
75
+ }
76
+ /**
77
+ * @internal
78
+ */
79
+ refreshSelectedOption() {
80
+ const options = this.dropdownUtils.flattenOptions(this.options, !this.optionContentTpl);
81
+ this.activeIndex = this.getActiveIndex();
82
+ this.state = options[this.activeIndex];
83
+ this.scrollToResult(this.state);
84
+ }
85
+ /**
86
+ * @internal
87
+ * @returns The active index (number) if option is found, -1 otherwise.
88
+ * - If a selectedValue exists that's not nullish and that options is found, return that index
89
+ * - Else, return first non nullish index
90
+ * - If none of the above criterias are met, -1 are returned
91
+ */
92
+ getActiveIndex() {
93
+ if (!!this.selectedValue && this.selectedValue?.key != null) {
94
+ const selectedIndex = this.dropdownUtils
95
+ .flattenOptions(this.options, !this.optionContentTpl)
96
+ .findIndex((option) => option.key != null && option.key === this.selectedValue?.key);
97
+ if (selectedIndex > -1)
98
+ return selectedIndex;
99
+ }
100
+ return this.dropdownUtils
101
+ .flattenOptions(this.options, !this.optionContentTpl)
102
+ .findIndex((option) => option.key != null);
103
+ }
104
+ /**
105
+ * @internal
106
+ * evaluates wether the HTML element overflows
107
+ * @param elem The HTMLElement to evaluate
108
+ * */
109
+ isOverflow(elem) {
110
+ return elem.offsetWidth < elem.scrollWidth;
111
+ }
112
+ /**
113
+ * Typecast anything to an {@link OptionGroup}.
114
+ * @param group the object to typecast.
115
+ */
116
+ castGroup(group) {
117
+ return group;
118
+ }
119
+ /**
120
+ * @internal
121
+ * Disables default events.
122
+ * @param event fired containing which key was pressed.
123
+ */
124
+ onKeyDown(event) {
125
+ switch (event.key) {
126
+ case 'Enter': // Disable form submission
127
+ case 'ArrowUp': // Disable scrolling up
128
+ case 'ArrowDown': // Disable scrolling down
129
+ event.preventDefault();
130
+ event.stopPropagation();
131
+ return false;
132
+ }
133
+ return true;
134
+ }
135
+ /**
136
+ * @internal
137
+ * Enter toggles the dropdown, home, end, and, arrows change the index.
138
+ * @param event fired containing which key was released.
139
+ */
140
+ onKeyUp(event) {
141
+ if (!this.expanded)
142
+ return;
143
+ const options = this.dropdownUtils.flattenOptions(this.options, !this.optionContentTpl);
144
+ let option;
145
+ switch (event.key) {
146
+ case 'Escape':
147
+ this.setExpanded(false);
148
+ this.closed.emit();
149
+ break;
150
+ case 'Enter': // Select the currently chosen value
151
+ option = options[this.activeIndex];
152
+ this.updateState(option, event);
153
+ break;
154
+ case 'Home': // Move to the first option
155
+ this.activeIndex = 0;
156
+ option = options[this.activeIndex];
157
+ this.state = option;
158
+ this.scrollToResult(option);
159
+ break;
160
+ case 'ArrowUp': // Move up one step to the previous option
161
+ if (this.activeIndex > 0)
162
+ this.activeIndex--;
163
+ else if (this.activeIndex === 0)
164
+ this.activeIndex = options.length - 1;
165
+ option = options[this.activeIndex];
166
+ this.state = option;
167
+ this.scrollToResult(option);
168
+ break;
169
+ case 'ArrowDown': // Move down one step to the next option
170
+ if (options.length > this.activeIndex + 1)
171
+ this.activeIndex++;
172
+ else if (this.activeIndex === options.length - 1)
173
+ this.activeIndex = 0;
174
+ option = options[this.activeIndex];
175
+ this.state = option;
176
+ this.scrollToResult(option);
177
+ break;
178
+ case 'End': // Move to the last options
179
+ this.activeIndex = options.length - 1;
180
+ option = options[this.activeIndex];
181
+ this.state = option;
182
+ this.scrollToResult(option);
183
+ break;
184
+ }
185
+ }
186
+ /**
187
+ * Scrolls focused result into view with a specified offset.
188
+ * @param key the result index which to scroll to.
189
+ */
190
+ scrollToResult(option) {
191
+ if (!this.optionRefs || !option)
192
+ return;
193
+ const optionRef = this.optionRefs.find((li) => li.nativeElement.id === this.id + '-option-' + option.key);
194
+ const offset = this.scrollOffset;
195
+ if (optionRef) {
196
+ let delta = window.scrollY || document.documentElement.scrollTop;
197
+ // The list seems not to be visible at the time of scrolling, but this setTimeout "hack" makes it work...
198
+ setTimeout(() => {
199
+ scrollIntoView(optionRef.nativeElement, {
200
+ scrollMode: 'if-needed',
201
+ block: 'nearest',
202
+ });
203
+ delta -= window.scrollY || document.documentElement.scrollTop;
204
+ if (delta)
205
+ window.scrollBy(0, delta > 0 ? -offset : offset);
206
+ }, 0);
207
+ }
208
+ }
209
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: NgvDropdownListComponent, deps: [{ token: TRANSLOCO_SCOPE, optional: true }], target: i0.ɵɵFactoryTarget.Component }); }
210
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: NgvDropdownListComponent, selector: "nggv-dropdown-list", inputs: { expanded: "expanded", state: "state", scrollOffset: "scrollOffset", optionContentTpl: "optionContentTpl", id: "id", thook: "thook", options: "options", textToHighlight: "textToHighlight" }, outputs: { selectedValueChanged: "selectedValueChanged", closed: "closed" }, host: { listeners: { "document:keydown": "onKeyDown($event)", "document:keyup": "onKeyUp($event)" }, properties: { "attr.id": "this.id", "attr.data-thook": "this.thook" } }, viewQueries: [{ propertyName: "optionRefs", predicate: ["optionRefs"], descendants: true }], usesOnChanges: 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{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: "component", type: i2.NgvTypeaheadHighlightComponent, selector: "nggv-typeahead-highlight", inputs: ["textContent", "textToHighlight"] }, { kind: "directive", type: i3.NgvTooltipDirective, selector: "[nggvTooltip]", inputs: ["nggvTooltip", "thook", "placement", "shown", "offset", "resizeThrottle", "maxWidth"], outputs: ["nggvShow", "nggvHide"] }, { kind: "directive", type: i4.TranslocoDirective, selector: "[transloco]", inputs: ["transloco", "translocoParams", "translocoScope", "translocoRead", "translocoLang", "translocoLoadingTpl"] }] }); }
211
+ }
212
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: NgvDropdownListComponent, decorators: [{
213
+ type: Component,
214
+ args: [{ selector: 'nggv-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{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"] }]
215
+ }], ctorParameters: function () { return [{ type: undefined, decorators: [{
216
+ type: Optional
217
+ }, {
218
+ type: Inject,
219
+ args: [TRANSLOCO_SCOPE]
220
+ }] }]; }, propDecorators: { expanded: [{
221
+ type: Input
222
+ }], state: [{
223
+ type: Input
224
+ }], scrollOffset: [{
225
+ type: Input
226
+ }], optionContentTpl: [{
227
+ type: Input
228
+ }], optionRefs: [{
229
+ type: ViewChildren,
230
+ args: ['optionRefs']
231
+ }], id: [{
232
+ type: HostBinding,
233
+ args: ['attr.id']
234
+ }, {
235
+ type: Input
236
+ }], thook: [{
237
+ type: HostBinding,
238
+ args: ['attr.data-thook']
239
+ }, {
240
+ type: Input
241
+ }], options: [{
242
+ type: Input
243
+ }], textToHighlight: [{
244
+ type: Input
245
+ }], selectedValueChanged: [{
246
+ type: Output
247
+ }], closed: [{
248
+ type: Output
249
+ }], onKeyDown: [{
250
+ type: HostListener,
251
+ args: ['document:keydown', ['$event']]
252
+ }], onKeyUp: [{
253
+ type: HostListener,
254
+ args: ['document:keyup', ['$event']]
255
+ }] } });
256
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJvcGRvd24tbGlzdC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXIvc3JjL3YtYW5ndWxhci9kcm9wZG93bi9kcm9wZG93bi1saXN0L2Ryb3Bkb3duLWxpc3QuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9hbmd1bGFyL3NyYy92LWFuZ3VsYXIvZHJvcGRvd24vZHJvcGRvd24tbGlzdC9kcm9wZG93bi1saXN0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxTQUFTLEVBRVQsWUFBWSxFQUNaLFdBQVcsRUFDWCxZQUFZLEVBQ1osTUFBTSxFQUNOLEtBQUssRUFHTCxRQUFRLEVBQ1IsTUFBTSxFQUlOLFlBQVksR0FDYixNQUFNLGVBQWUsQ0FBQTtBQUV0QixPQUFPLEVBQUUsT0FBTyxFQUFnQixNQUFNLE1BQU0sQ0FBQTtBQUM1QyxPQUFPLGNBQWMsTUFBTSw0QkFBNEIsQ0FBQTtBQUV2RCxPQUFPLEVBQUUsZUFBZSxFQUFrQixNQUFNLG1CQUFtQixDQUFBO0FBRW5FLE9BQU8sRUFDTCxhQUFhLEdBR2QsTUFBTSw0Q0FBNEMsQ0FBQTs7Ozs7O0FBT25ELE1BQU0sT0FBTyx3QkFBd0I7SUFDbkMsSUFBYSxRQUFRLENBQUMsS0FBYztRQUNsQyxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxDQUFBO0lBQ3pCLENBQUM7SUFDRCxJQUFJLFFBQVE7UUFDVixPQUFPLElBQUksQ0FBQyxTQUFTLENBQUE7SUFDdkIsQ0FBQztJQXlDRCxZQUdZLGNBQThCO1FBQTlCLG1CQUFjLEdBQWQsY0FBYyxDQUFnQjtRQXpDMUMsdUVBQXVFO1FBQzlELGlCQUFZLEdBQUcsRUFBRSxDQUFBO1FBUzFCLHlHQUF5RztRQUN4RSxPQUFFLEdBQUksTUFBYyxDQUFDLElBQUksRUFBRSxNQUFNLEVBQUUsQ0FBQTtRQUVw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QUdXLEtBQUs7c0JBQTdDLFdBQVc7dUJBQUMsaUJBQWlCOztzQkFBRyxLQUFLO2dCQUU3QixPQUFPO3NCQUFmLEtBQUs7Z0JBRUcsZUFBZTtzQkFBdkIsS0FBSztnQkFFSSxvQkFBb0I7c0JBQTdCLE1BQU07Z0JBRUcsTUFBTTtzQkFBZixNQUFNO2dCQWlJUCxTQUFTO3NCQURSLFlBQVk7dUJBQUMsa0JBQWtCLEVBQUUsQ0FBQyxRQUFRLENBQUM7Z0JBbUI1QyxPQUFPO3NCQUROLFlBQVk7dUJBQUMsZ0JBQWdCLEVBQUUsQ0FBQyxRQUFRLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDb21wb25lbnQsXG4gIEVsZW1lbnRSZWYsXG4gIEV2ZW50RW1pdHRlcixcbiAgSG9zdEJpbmRpbmcsXG4gIEhvc3RMaXN0ZW5lcixcbiAgSW5qZWN0LFxuICBJbnB1dCxcbiAgT25DaGFuZ2VzLFxuICBPbkluaXQsXG4gIE9wdGlvbmFsLFxuICBPdXRwdXQsXG4gIFF1ZXJ5TGlzdCxcbiAgU2ltcGxlQ2hhbmdlcyxcbiAgVGVtcGxhdGVSZWYsXG4gIFZpZXdDaGlsZHJlbixcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSdcblxuaW1wb3J0IHsgU3ViamVjdCwgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcydcbmltcG9ydCBzY3JvbGxJbnRvVmlldyBmcm9tICdzY3JvbGwtaW50by12aWV3LWlmLW5lZWRlZCdcblxuaW1wb3J0IHsgVFJBTlNMT0NPX1NDT1BFLCBUcmFuc2xvY29TY29wZSB9IGZyb20gJ0BuZ25lYXQvdHJhbnNsb2NvJ1xuXG5pbXBvcnQge1xuICBEcm9wZG93blV0aWxzLFxuICBPcHRpb24sXG4gIE9wdGlvbkJhc2UsXG59IGZyb20gJ0BzZWJncm91cC9ncmVlbi1hbmd1bGFyL3NyYy92LWFuZ3VsYXIvY29yZSdcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbmdndi1kcm9wZG93bi1saXN0JyxcbiAgdGVtcGxhdGVVcmw6ICcuL2Ryb3Bkb3duLWxpc3QuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9kcm9wZG93bi1saXN0LmNvbXBvbmVudC5zY3NzJ10sXG59KVxuZXhwb3J0IGNsYXNzIE5ndkRyb3Bkb3duTGlzdENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25DaGFuZ2VzIHtcbiAgQElucHV0KCkgc2V0IGV4cGFuZGVkKHN0YXRlOiBib29sZWFuKSB7XG4gICAgdGhpcy5zZXRFeHBhbmRlZChzdGF0ZSlcbiAgfVxuICBnZXQgZXhwYW5kZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX2V4cGFuZGVkXG4gIH1cbiAgQElucHV0KCkgc3RhdGU6IGFueVxuXG4gIC8qKiBUaGUgYWRkaXRpb25hbCBhbW91bnQgdG8gc2hvdyB3aGVuIG9wdGlvbiBpcyBzY3JvbGxlZCBpbnRvIHZpZXcuICovXG4gIEBJbnB1dCgpIHNjcm9sbE9mZnNldCA9IDI0XG5cbiAgQElucHV0KCkgb3B0aW9uQ29udGVudFRwbDogVGVtcGxhdGVSZWY8T3B0aW9uQmFzZTxhbnk+PiB8IHVuZGVmaW5lZFxuXG4gIC8qKiBAaW50ZXJuYWwgTGlzdCBvZiByZWZlcmVuY2VzIHRvIHRoZSBvcHRpb24gZWxlbWVudHMuICovXG4gIEBWaWV3Q2hpbGRyZW4oJ29wdGlvblJlZnMnKSBvcHRpb25SZWZzOlxuICAgIHwgUXVlcnlMaXN0PEVsZW1lbnRSZWY8SFRNTExJRWxlbWVudD4+XG4gICAgfCB1bmRlZmluZWRcblxuICAvKiogSWQgb2YgdGhlIGhvc3QgZWxlbWVudCBhbmQgaXMgYWNjZXNzaWJsZSBieSB0aGUgY2hpbGRyZW4sIGF1dG9tYXRpY2FsbHkgZ2VuZXJhdGVkIGlmIG5vdCBwcm92aWRlZC4gKi9cbiAgQEhvc3RCaW5kaW5nKCdhdHRyLmlkJykgQElucHV0KCkgaWQgPSAod2luZG93IGFzIGFueSkubmdndj8ubmV4dElkKClcblxuICAvKiogU3BlY2lhbCBwcm9wZXJ0eSB1c2VkIGZvciBzZWxlY3RpbmcgRE9NIGVsZW1lbnRzIGR1cmluZyBhdXRvbWF0ZWQgVUkgdGVzdGluZy4gKi9cbiAgQEhvc3RCaW5kaW5nKCdhdHRyLmRhdGEtdGhvb2snKSBASW5wdXQoKSB0aG9vayA9ICdkcm9wZG93bidcblxuICBASW5wdXQoKSBvcHRpb25zITogYW55W11cblxuICBASW5wdXQoKSB0ZXh0VG9IaWdobGlnaHQ/OiBzdHJpbmdcblxuICBAT3V0cHV0KCkgc2VsZWN0ZWRWYWx1ZUNoYW5nZWQgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKVxuXG4gIEBPdXRwdXQoKSBjbG9zZWQgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KClcblxuICAvKiogVGhlIGN1cnJlbnQgYWN0aXZlIG9wdGlvbiBiYXNlZCBvbiBudW1lcmljIGluZGV4LiAqL1xuICBwdWJsaWMgYWN0aXZlSW5kZXggPSAtMVxuXG4gIHNjb3BlOiBzdHJpbmcgfCB1bmRlZmluZWRcblxuICBwcml2YXRlIGRyb3Bkb3duVXRpbHM6IERyb3Bkb3duVXRpbHM8c3RyaW5nIHwgbnVsbCwgc3RyaW5nLCBhbnk+ID1cbiAgICBuZXcgRHJvcGRvd25VdGlsczxzdHJpbmcgfCBudWxsLCBzdHJpbmcsIGFueT4oKVxuICBwcml2YXRlIF9leHBhbmRlZCA9IGZhbHNlXG4gIHByaXZhdGUgY2xvc2VkJCA9IG5ldyBTdWJqZWN0PGJvb2xlYW4+KClcbiAgcHVibGljIHNlbGVjdGVkVmFsdWU/OiBPcHRpb248c3RyaW5nLCBhbnk+XG5cbiAgLyoqIFN1YnNjcmliZSBpZiBkcm9wZG93biBleHBhbmRlZCB0byBsaXN0ZW4gdG8gY2xpY2sgb3V0c2lkZSB0byBjbG9zZSBkcm9wZG93bi4gKi9cbiAgcHJvdGVjdGVkIG9uQ2xpY2tTdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbiB8IHVuZGVmaW5lZFxuXG4gIGNvbnN0cnVjdG9yKFxuICAgIEBPcHRpb25hbCgpXG4gICAgQEluamVjdChUUkFOU0xPQ09fU0NPUEUpXG4gICAgcHJvdGVjdGVkIHRyYW5zbG9jb1Njb3BlOiBUcmFuc2xvY29TY29wZSxcbiAgKSB7XG4gICAgaWYgKHRoaXMudHJhbnNsb2NvU2NvcGUpIHRoaXMuc2NvcGUgPSB0aGlzLnRyYW5zbG9jb1Njb3BlLnRvU3RyaW5nKClcbiAgfVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIGlmICh0aGlzLnN0YXRlKVxuICAgICAgdGhpcy5hY3RpdmVJbmRleCA9IHRoaXMub3B0aW9ucy5maW5kSW5kZXgoXG4gICAgICAgIChvcHRpb24pID0+IG9wdGlvbi5rZXkgPT09IHRoaXMuc3RhdGUua2V5LFxuICAgICAgKVxuICB9XG5cbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgIGlmICghIWNoYW5nZXMuc3RhdGUgJiYgIWNoYW5nZXMuc3RhdGUuZmlyc3RDaGFuZ2UpXG4gICAgICB0aGlzLnNlbGVjdGVkVmFsdWUgPSBjaGFuZ2VzLnN0YXRlLmN1cnJlbnRWYWx1ZVxuICAgIGlmICghIWNoYW5nZXMub3B0aW9ucz8uY3VycmVudFZhbHVlPy5sZW5ndGggJiYgdGhpcy5leHBhbmRlZClcbiAgICAgIHRoaXMucmVmcmVzaFNlbGVjdGVkT3B0aW9uKClcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIHRydWUgaWYgYXJndW1lbnQgaXMgYW4ge0BsaW5rIE9wdGlvbkdyb3VwfS5cbiAgICogQHBhcmFtIG9wdGlvbiB0aGUgb2JqZWN0IHRvIGNoZWNrLlxuICAgKi9cbiAgaXNHcm91cChvcHRpb246IGFueSk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAnb3B0aW9ucycgaW4gb3B0aW9uXG4gIH1cblxuICAvKiogQGludGVybmFsICovXG4gIHVwZGF0ZVN0YXRlKG9wdGlvbjogYW55LCBldmVudDogRXZlbnQpIHtcbiAgICBpZiAob3B0aW9uLmRpc2FibGVkKSByZXR1cm5cblxuICAgIHRoaXMuc2VsZWN0ZWRWYWx1ZSA9IG9wdGlvblxuICAgIHRoaXMuc3RhdGUgPSBvcHRpb25cbiAgICB0aGlzLnNlbGVjdGVkVmFsdWVDaGFuZ2VkLmVtaXQob3B0aW9uKVxuICAgIHRoaXMuc2V0RXhwYW5kZWQoZmFsc2UpXG4gICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcbiAgfVxuXG4gIC8qKlxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIHNldEV4cGFuZGVkKGV4cGFuZGVkID0gdHJ1ZSkge1xuICAgIC8vIHVwZGF0ZSBleHBhbmRlZCBzdGF0ZVxuICAgIHRoaXMuX2V4cGFuZGVkID0gZXhwYW5kZWRcblxuICAgIGlmIChleHBhbmRlZCkgdGhpcy5yZWZyZXNoU2VsZWN0ZWRPcHRpb24oKVxuICAgIGVsc2Uge1xuICAgICAgdGhpcy5jbG9zZWQkLm5leHQodHJ1ZSlcbiAgICAgIHRoaXMub25DbGlja1N1YnNjcmlwdGlvbj8udW5zdWJzY3JpYmUoKVxuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIHJlZnJlc2hTZWxlY3RlZE9wdGlvbigpIHtcbiAgICBjb25zdCBvcHRpb25zID0gdGhpcy5kcm9wZG93blV0aWxzLmZsYXR0ZW5PcHRpb25zKFxuICAgICAgdGhpcy5vcHRpb25zLFxuICAgICAgIXRoaXMub3B0aW9uQ29udGVudFRwbCxcbiAgICApXG4gICAgdGhpcy5hY3RpdmVJbmRleCA9IHRoaXMuZ2V0QWN0aXZlSW5kZXgoKVxuICAgIHRoaXMuc3RhdGUgPSBvcHRpb25zW3RoaXMuYWN0aXZlSW5kZXhdXG4gICAgdGhpcy5zY3JvbGxUb1Jlc3VsdCh0aGlzLnN0YXRlKVxuICB9XG5cbiAgLyoqXG4gICAqIEBpbnRlcm5hbFxuICAgKiBAcmV0dXJucyBUaGUgYWN0aXZlIGluZGV4IChudW1iZXIpIGlmIG9wdGlvbiBpcyBmb3VuZCwgLTEgb3RoZXJ3aXNlLlxuICAgKiAtIElmIGEgc2VsZWN0ZWRWYWx1ZSBleGlzdHMgdGhhdCdzIG5vdCBudWxsaXNoIGFuZCB0aGF0IG9wdGlvbnMgaXMgZm91bmQsIHJldHVybiB0aGF0IGluZGV4XG4gICAqIC0gRWxzZSwgcmV0dXJuIGZpcnN0IG5vbiBudWxsaXNoIGluZGV4XG4gICAqIC0gSWYgbm9uZSBvZiB0aGUgYWJvdmUgY3JpdGVyaWFzIGFyZSBtZXQsIC0xIGFyZSByZXR1cm5lZFxuICAgKi9cbiAgZ2V0QWN0aXZlSW5kZXgoKTogbnVtYmVyIHtcbiAgICBpZiAoISF0aGlzLnNlbGVjdGVkVmFsdWUgJiYgdGhpcy5zZWxlY3RlZFZhbHVlPy5rZXkgIT0gbnVsbCkge1xuICAgICAgY29uc3Qgc2VsZWN0ZWRJbmRleCA9IHRoaXMuZHJvcGRvd25VdGlsc1xuICAgICAgICAuZmxhdHRlbk9wdGlvbnModGhpcy5vcHRpb25zLCAhdGhpcy5vcHRpb25Db250ZW50VHBsKVxuICAgICAgICAuZmluZEluZGV4KFxuICAgICAgICAgIChvcHRpb24pID0+XG4gICAgICAgICAgICBvcHRpb24ua2V5ICE9IG51bGwgJiYgb3B0aW9uLmtleSA9PT0gdGhpcy5zZWxlY3RlZFZhbHVlPy5rZXksXG4gICAgICAgIClcbiAgICAgIGlmIChzZWxlY3RlZEluZGV4ID4gLTEpIHJldHVybiBzZWxlY3RlZEluZGV4XG4gICAgfVxuICAgIHJldHVybiB0aGlzLmRyb3Bkb3duVXRpbHNcbiAgICAgIC5mbGF0dGVuT3B0aW9ucyh0aGlzLm9wdGlvbnMsICF0aGlzLm9wdGlvbkNvbnRlbnRUcGwpXG4gICAgICAuZmluZEluZGV4KChvcHRpb24pID0+IG9wdGlvbi5rZXkgIT0gbnVsbClcbiAgfVxuXG4gIC8qKlxuICAgKiBAaW50ZXJuYWxcbiAgICogZXZhbHVhdGVzIHdldGhlciB0aGUgSFRNTCBlbGVtZW50IG92ZXJmbG93c1xuICAgKiBAcGFyYW0gZWxlbSBUaGUgSFRNTEVsZW1lbnQgdG8gZXZhbHVhdGVcbiAgICogKi9cbiAgaXNPdmVyZmxvdyhlbGVtOiBIVE1MRWxlbWVudCkge1xuICAgIHJldHVybiBlbGVtLm9mZnNldFdpZHRoIDwgZWxlbS5zY3JvbGxXaWR0aFxuICB9XG5cbiAgLyoqXG4gICAqIFR5cGVjYXN0IGFueXRoaW5nIHRvIGFuIHtAbGluayBPcHRpb25Hcm91cH0uXG4gICAqIEBwYXJhbSBncm91cCB0aGUgb2JqZWN0IHRvIHR5cGVjYXN0LlxuICAgKi9cbiAgY2FzdEdyb3VwKGdyb3VwOiBhbnkpOiBhbnkge1xuICAgIHJldHVybiBncm91cFxuICB9XG5cbiAgLyoqXG4gICAqIEBpbnRlcm5hbFxuICAgKiBEaXNhYmxlcyBkZWZhdWx0IGV2ZW50cy5cbiAgICogQHBhcmFtIGV2ZW50IGZpcmVkIGNvbnRhaW5pbmcgd2hpY2gga2V5IHdhcyBwcmVzc2VkLlxuICAgKi9cbiAgQEhvc3RMaXN0ZW5lcignZG9jdW1lbnQ6a2V5ZG93bicsIFsnJGV2ZW50J10pXG4gIG9uS2V5RG93bihldmVudDogS2V5Ym9hcmRFdmVudCkge1xuICAgIHN3aXRjaCAoZXZlbnQua2V5KSB7XG4gICAgICBjYXNlICdFbnRlcic6IC8vICBEaXNhYmxlIGZvcm0gc3VibWlzc2lvblxuICAgICAgY2FzZSAnQXJyb3dVcCc6IC8vIERpc2FibGUgc2Nyb2xsaW5nIHVwXG4gICAgICBjYXNlICdBcnJvd0Rvd24nOiAvLyBEaXNhYmxlIHNjcm9sbGluZyBkb3duXG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KClcbiAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcbiAgICAgICAgcmV0dXJuIGZhbHNlXG4gICAgfVxuICAgIHJldHVybiB0cnVlXG4gIH1cblxuICAvKipcbiAgICogQGludGVybmFsXG4gICAqIEVudGVyIHRvZ2dsZXMgdGhlIGRyb3Bkb3duLCBob21lLCBlbmQsIGFuZCwgYXJyb3dzIGNoYW5nZSB0aGUgaW5kZXguXG4gICAqIEBwYXJhbSBldmVudCBmaXJlZCBjb250YWluaW5nIHdoaWNoIGtleSB3YXMgcmVsZWFzZWQuXG4gICAqL1xuICBASG9zdExpc3RlbmVyKCdkb2N1bWVudDprZXl1cCcsIFsnJGV2ZW50J10pXG4gIG9uS2V5VXAoZXZlbnQ6IEtleWJvYXJkRXZlbnQpIHtcbiAgICBpZiAoIXRoaXMuZXhwYW5kZWQpIHJldHVyblxuICAgIGNvbnN0IG9wdGlvbnMgPSB0aGlzLmRyb3Bkb3duVXRpbHMuZmxhdHRlbk9wdGlvbnMoXG4gICAgICB0aGlzLm9wdGlvbnMsXG4gICAgICAhdGhpcy5vcHRpb25Db250ZW50VHBsLFxuICAgIClcbiAgICBsZXQgb3B0aW9uXG5cbiAgICBzd2l0Y2ggKGV2ZW50LmtleSkge1xuICAgICAgY2FzZSAnRXNjYXBlJzpcbiAgICAgICAgdGhpcy5zZXRFeHBhbmRlZChmYWxzZSlcbiAgICAgICAgdGhpcy5jbG9zZWQuZW1pdCgpXG4gICAgICAgIGJyZWFrXG4gICAgICBjYXNlICdFbnRlcic6IC8vIFNlbGVjdCB0aGUgY3VycmVudGx5IGNob3NlbiB2YWx1ZVxuICAgICAgICBvcHRpb24gPSBvcHRpb25zW3RoaXMuYWN0aXZlSW5kZXhdXG4gICAgICAgIHRoaXMudXBkYXRlU3RhdGUob3B0aW9uLCBldmVudClcbiAgICAgICAgYnJlYWtcblxuICAgICAgY2FzZSAnSG9tZSc6IC8vIE1vdmUgdG8gdGhlIGZpcnN0IG9wdGlvblxuICAgICAgICB0aGlzLmFjdGl2ZUluZGV4ID0gMFxuXG4gICAgICAgIG9wdGlvbiA9IG9wdGlvbnNbdGhpcy5hY3RpdmVJbmRleF1cbiAgICAgICAgdGhpcy5zdGF0ZSA9IG9wdGlvblxuICAgICAgICB0aGlzLnNjcm9sbFRvUmVzdWx0KG9wdGlvbilcbiAgICAgICAgYnJlYWtcblxuICAgICAgY2FzZSAnQXJyb3dVcCc6IC8vIE1vdmUgdXAgb25lIHN0ZXAgdG8gdGhlIHByZXZpb3VzIG9wdGlvblxuICAgICAgICBpZiAodGhpcy5hY3RpdmVJbmRleCA+IDApIHRoaXMuYWN0aXZlSW5kZXgtLVxuICAgICAgICBlbHNlIGlmICh0aGlzLmFjdGl2ZUluZGV4ID09PSAwKSB0aGlzLmFjdGl2ZUluZGV4ID0gb3B0aW9ucy5sZW5ndGggLSAxXG5cbiAgICAgICAgb3B0aW9uID0gb3B0aW9uc1t0aGlzLmFjdGl2ZUluZGV4XVxuICAgICAgICB0aGlzLnN0YXRlID0gb3B0aW9uXG4gICAgICAgIHRoaXMuc2Nyb2xsVG9SZXN1bHQob3B0aW9uKVxuICAgICAgICBicmVha1xuXG4gICAgICBjYXNlICdBcnJvd0Rvd24nOiAvLyBNb3ZlIGRvd24gb25lIHN0ZXAgdG8gdGhlIG5leHQgb3B0aW9uXG4gICAgICAgIGlmIChvcHRpb25zLmxlbmd0aCA+IHRoaXMuYWN0aXZlSW5kZXggKyAxKSB0aGlzLmFjdGl2ZUluZGV4KytcbiAgICAgICAgZWxzZSBpZiAodGhpcy5hY3RpdmVJbmRleCA9PT0gb3B0aW9ucy5sZW5ndGggLSAxKSB0aGlzLmFjdGl2ZUluZGV4ID0gMFxuXG4gICAgICAgIG9wdGlvbiA9IG9wdGlvbnNbdGhpcy5hY3RpdmVJbmRleF1cbiAgICAgICAgdGhpcy5zdGF0ZSA9IG9wdGlvblxuICAgICAgICB0aGlzLnNjcm9sbFRvUmVzdWx0KG9wdGlvbilcbiAgICAgICAgYnJlYWtcblxuICAgICAgY2FzZSAnRW5kJzogLy8gTW92ZSB0byB0aGUgbGFzdCBvcHRpb25zXG4gICAgICAgIHRoaXMuYWN0aXZlSW5kZXggPSBvcHRpb25zLmxlbmd0aCAtIDFcblxuICAgICAgICBvcHRpb24gPSBvcHRpb25zW3RoaXMuYWN0aXZlSW5kZXhdXG4gICAgICAgIHRoaXMuc3RhdGUgPSBvcHRpb25cbiAgICAgICAgdGhpcy5zY3JvbGxUb1Jlc3VsdChvcHRpb24pXG4gICAgICAgIGJyZWFrXG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFNjcm9sbHMgZm9jdXNlZCByZXN1bHQgaW50byB2aWV3IHdpdGggYSBzcGVjaWZpZWQgb2Zmc2V0LlxuICAgKiBAcGFyYW0ga2V5IHRoZSByZXN1bHQgaW5kZXggd2hpY2ggdG8gc2Nyb2xsIHRvLlxuICAgKi9cbiAgc2Nyb2xsVG9SZXN1bHQob3B0aW9uOiBhbnkpIHtcbiAgICBpZiAoIXRoaXMub3B0aW9uUmVmcyB8fCAhb3B0aW9uKSByZXR1cm5cbiAgICBjb25zdCBvcHRpb25SZWYgPSB0aGlzLm9wdGlvblJlZnMuZmluZChcbiAgICAgIChsaSkgPT4gbGkubmF0aXZlRWxlbWVudC5pZCA9PT0gdGhpcy5pZCArICctb3B0aW9uLScgKyBvcHRpb24ua2V5LFxuICAgIClcbiAgICBjb25zdCBvZmZzZXQgPSB0aGlzLnNjcm9sbE9mZnNldFxuICAgIGlmIChvcHRpb25SZWYpIHtcbiAgICAgIGxldCBkZWx0YSA9IHdpbmRvdy5zY3JvbGxZIHx8IGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5zY3JvbGxUb3BcblxuICAgICAgLy8gVGhlIGxpc3Qgc2VlbXMgbm90IHRvIGJlIHZpc2libGUgYXQgdGhlIHRpbWUgb2Ygc2Nyb2xsaW5nLCBidXQgdGhpcyBzZXRUaW1lb3V0IFwiaGFja1wiIG1ha2VzIGl0IHdvcmsuLi5cbiAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICBzY3JvbGxJbnRvVmlldyhvcHRpb25SZWYubmF0aXZlRWxlbWVudCwge1xuICAgICAgICAgIHNjcm9sbE1vZGU6ICdpZi1uZWVkZWQnLFxuICAgICAgICAgIGJsb2NrOiAnbmVhcmVzdCcsXG4gICAgICAgIH0pXG5cbiAgICAgICAgZGVsdGEgLT0gd2luZG93LnNjcm9sbFkgfHwgZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LnNjcm9sbFRvcFxuICAgICAgICBpZiAoZGVsdGEpIHdpbmRvdy5zY3JvbGxCeSgwLCBkZWx0YSA+IDAgPyAtb2Zmc2V0IDogb2Zmc2V0KVxuICAgICAgfSwgMClcbiAgICB9XG4gIH1cbn1cbiIsIjxuZy1jb250YWluZXIgKnRyYW5zbG9jbz1cImxldCB0OyByZWFkOiBzY29wZVwiPlxuICA8dWxcbiAgICBjbGFzcz1cImdkcy1kcm9wZG93bl9fb3B0aW9ucyBjYXJkIG9wdGlvbnMgZ2RzLXJlc2V0XCJcbiAgICBbY2xhc3MuZ2RzLWRyb3Bkb3duX19vcHRpb25zLWV4cGFuZGVkXT1cImV4cGFuZGVkXCJcbiAgICByb2xlPVwibGlzdGJveFwiXG4gICAgdGFiaW5kZXg9XCItMVwiXG4gICAgW2F0dHIuZGF0YS10aG9va109XCJ0aG9vayArICctb3B0aW9ucydcIlxuICAgIFthdHRyLmFyaWEtbGFiZWxsZWRieV09XCJpZCArICctbGFiZWwnXCJcbiAgICBbYXR0ci5hcmlhLWFjdGl2ZWRlc2NlbmRhbnRdPVwiXG4gICAgICBzdGF0ZSA/IGlkICsgJy1vcHRpb24tJyArIHN0YXRlPy5rZXkgOiB1bmRlZmluZWRcbiAgICBcIlxuICA+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgaXRlbSBvZiBvcHRpb25zXCI+XG4gICAgICA8IS0tIE9QVElPTiAtLT5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhaXNHcm91cChpdGVtKVwiPlxuICAgICAgICA8bmctdGVtcGxhdGVcbiAgICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cImxpc3RJdGVtVGVtcGxhdGU7IGNvbnRleHQ6IHsgJGltcGxpY2l0OiBpdGVtIH1cIlxuICAgICAgICA+PC9uZy10ZW1wbGF0ZT5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICA8IS0tIE9QVElPTiBHUk9VUCAtLT5cbiAgICAgIDxsaVxuICAgICAgICBjbGFzcz1cImdkcy1kcm9wZG93bl9fb3B0aW9uc19fbGFiZWwgZ3JvdXBcIlxuICAgICAgICBbYXR0ci5kYXRhLXRob29rXT1cInRob29rICsgJy1vcHRpb24tZ3JvdXAnXCJcbiAgICAgICAgKm5nSWY9XCJpc0dyb3VwKGl0ZW0pXCJcbiAgICAgID5cbiAgICAgICAgPGRpdiBjbGFzcz1cInNkdi1saXN0X19sYWJlbFwiPnt7IHQoaXRlbS5sYWJlbCkgfX08L2Rpdj5cbiAgICAgICAgPHVsIFthdHRyLmFyaWEtZGlzYWJsZWRdPVwiaXRlbS5kaXNhYmxlZFwiPlxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IG9wdGlvbiBvZiBjYXN0R3JvdXAoaXRlbSkub3B0aW9uc1wiPlxuICAgICAgICAgICAgPG5nLXRlbXBsYXRlXG4gICAgICAgICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwiXG4gICAgICAgICAgICAgICAgbGlzdEl0ZW1UZW1wbGF0ZTtcbiAgICAgICAgICAgICAgICBjb250ZXh0OiB7ICRpbXBsaWNpdDogb3B0aW9uIH1cbiAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgID48L25nLXRlbXBsYXRlPlxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICA8L3VsPlxuICAgICAgPC9saT5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgPC91bD5cblxuICA8IS0tIFRFTVBMQVRFIC0tPlxuICA8bmctdGVtcGxhdGUgI2xpc3RJdGVtVGVtcGxhdGUgbGV0LW9wdGlvbj5cbiAgICA8bGlcbiAgICAgICNvcHRpb25SZWZzXG4gICAgICAqbmdJZj1cIiFvcHRpb25Db250ZW50VHBsXCJcbiAgICAgIHRhYmluZGV4PVwiLTFcIlxuICAgICAgW2lkXT1cImlkICsgJy1vcHRpb24tJyArIG9wdGlvbi5rZXlcIlxuICAgICAgY2xhc3M9XCJnZHMtZHJvcGRvd25fX29wdGlvbnNfX2xhYmVsIG9wdGlvblwiXG4gICAgICByb2xlPVwib3B0aW9uXCJcbiAgICAgICNsaUVsZW1cbiAgICAgIFthdHRyLmRhdGEtdGhvb2tdPVwidGhvb2sgKyAnLW9wdGlvbi0nICsgb3B0aW9uLmtleVwiXG4gICAgICBbYXR0ci5hcmlhLWRpc2FibGVkXT1cIm9wdGlvbi5kaXNhYmxlZFwiXG4gICAgICBbYXR0ci5hcmlhLXNlbGVjdGVkXT1cIlxuICAgICAgICBvcHRpb24ua2V5ID09PSBzZWxlY3RlZFZhbHVlPy5rZXkgJiYgISFzZWxlY3RlZFZhbHVlPy5rZXlcbiAgICAgIFwiXG4gICAgICBbYXR0ci5hcmlhLWZvY3VzXT1cIm9wdGlvbi5rZXkgPT09IHN0YXRlPy5rZXkgJiYgIW9wdGlvbi5kaXNhYmxlZFwiXG4gICAgICBbbmdndlRvb2x0aXBdPVwiaXNPdmVyZmxvdyhsaUVsZW0pID8gdChvcHRpb24ubGFiZWwpIDogdW5kZWZpbmVkXCJcbiAgICAgIChjbGljayk9XCJ1cGRhdGVTdGF0ZShvcHRpb24sICRldmVudClcIlxuICAgID5cbiAgICAgIDxuZy10ZW1wbGF0ZVxuICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cIlxuICAgICAgICAgIGJhc2ljT3B0aW9uQ29udGVudFRwbDtcbiAgICAgICAgICBjb250ZXh0OiB7ICRpbXBsaWNpdDogb3B0aW9uIH1cbiAgICAgICAgXCJcbiAgICAgID5cbiAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgPC9saT5cbiAgICA8IS0tIENoZWNraW5nIG92ZXJmbG93IG9uIGN1c3RvbSB0ZW1wbGF0ZXMgZG8gbm90IHdvcmsgc2tpcCBhZGRpbmcgbmdndlRvb2xUaXAgaWYgY3VzdG9tIHRlbXBsYXRlIGlzIHByb3ZpZGVkIC0tPlxuICAgIDxsaVxuICAgICAgI29wdGlvblJlZnNcbiAgICAgICpuZ0lmPVwiISFvcHRpb25Db250ZW50VHBsXCJcbiAgICAgIHRhYmluZGV4PVwiLTFcIlxuICAgICAgW2lkXT1cImlkICsgJy1vcHRpb24tJyArIG9wdGlvbi5rZXlcIlxuICAgICAgY2xhc3M9XCJnZHMtZHJvcGRvd25fX29wdGlvbnNfX2xhYmVsIG9wdGlvblwiXG4gICAgICByb2xlPVwib3B0aW9uXCJcbiAgICAgICNsaUVsZW1cbiAgICAgIFthdHRyLmRhdGEtdGhvb2tdPVwidGhvb2sgKyAnLW9wdGlvbi0nICsgb3B0aW9uLmtleVwiXG4gICAgICBbYXR0ci5hcmlhLWRpc2FibGVkXT1cIm9wdGlvbi5kaXNhYmxlZFwiXG4gICAgICBbYXR0ci5hcmlhLXNlbGVjdGVkXT1cIlxuICAgICAgICBvcHRpb24ua2V5ID09PSBzZWxlY3RlZFZhbHVlPy5rZXkgJiYgISFzZWxlY3RlZFZhbHVlPy5rZXlcbiAgICAgIFwiXG4gICAgICBbYXR0ci5hcmlhLWZvY3VzXT1cIm9wdGlvbi5rZXkgPT09IHN0YXRlPy5rZXkgJiYgIW9wdGlvbi5kaXNhYmxlZFwiXG4gICAgICAoY2xpY2spPVwidXBkYXRlU3RhdGUob3B0aW9uLCAkZXZlbnQpXCJcbiAgICA+XG4gICAgICA8bmctdGVtcGxhdGVcbiAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJvcHRpb25Db250ZW50VHBsOyBjb250ZXh0OiB7ICRpbXBsaWNpdDogb3B0aW9uIH1cIlxuICAgICAgPlxuICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICA8L2xpPlxuICA8L25nLXRlbXBsYXRlPlxuXG4gIDxuZy10ZW1wbGF0ZSAjYmFzaWNPcHRpb25Db250ZW50VHBsIGxldC1vcHRpb24+XG4gICAgPG5nZ3YtdHlwZWFoZWFkLWhpZ2hsaWdodFxuICAgICAgKm5nSWY9XCIhIXRleHRUb0hpZ2hsaWdodFwiXG4gICAgICBbdGV4dFRvSGlnaGxpZ2h0XT1cInRleHRUb0hpZ2hsaWdodFwiXG4gICAgICBbdGV4dENvbnRlbnRdPVwidChvcHRpb24ubGFiZWwpXCJcbiAgICA+XG4gICAgPC9uZ2d2LXR5cGVhaGVhZC1oaWdobGlnaHQ+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiF0ZXh0VG9IaWdobGlnaHRcIj5cbiAgICAgIHt7IHQob3B0aW9uLmxhYmVsKSB9fVxuICAgIDwvbmctY29udGFpbmVyPlxuICA8L25nLXRlbXBsYXRlPlxuPC9uZy1jb250YWluZXI+XG4iXX0=
@@ -0,0 +1,2 @@
1
+ export * from './dropdown-list.component';
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXIvc3JjL3YtYW5ndWxhci9kcm9wZG93bi9kcm9wZG93bi1saXN0L2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsMkJBQTJCLENBQUEiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL2Ryb3Bkb3duLWxpc3QuY29tcG9uZW50J1xuIl19