@skyux/popovers 5.6.2 → 6.0.0-beta.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (136) hide show
  1. package/documentation.json +2 -2
  2. package/esm2020/index.mjs +23 -0
  3. package/esm2020/lib/modules/dropdown/dropdown-button.component.mjs +11 -0
  4. package/esm2020/lib/modules/dropdown/dropdown-extensions.mjs +14 -0
  5. package/esm2020/lib/modules/dropdown/dropdown-item.component.mjs +66 -0
  6. package/esm2020/lib/modules/dropdown/dropdown-menu.component.mjs +301 -0
  7. package/esm2020/lib/modules/dropdown/dropdown.component.mjs +356 -0
  8. package/esm2020/lib/modules/dropdown/dropdown.module.mjs +60 -0
  9. package/esm2020/lib/modules/dropdown/types/dropdown-horizontal-alignment.mjs +2 -0
  10. package/esm2020/lib/modules/dropdown/types/dropdown-menu-change.mjs +2 -0
  11. package/esm2020/lib/modules/dropdown/types/dropdown-message-type.mjs +37 -0
  12. package/esm2020/lib/modules/dropdown/types/dropdown-message.mjs +2 -0
  13. package/esm2020/lib/modules/dropdown/types/dropdown-trigger-type.mjs +2 -0
  14. package/esm2020/lib/modules/popover/popover-adapter.service.mjs +74 -0
  15. package/esm2020/lib/modules/popover/popover-animation-state.mjs +2 -0
  16. package/esm2020/lib/modules/popover/popover-animation.mjs +19 -0
  17. package/esm2020/lib/modules/popover/popover-content.component.mjs +261 -0
  18. package/esm2020/lib/modules/popover/popover-context.mjs +10 -0
  19. package/esm2020/lib/modules/popover/popover-extensions.mjs +29 -0
  20. package/esm2020/lib/modules/popover/popover.component.mjs +198 -0
  21. package/esm2020/lib/modules/popover/popover.directive.mjs +176 -0
  22. package/esm2020/lib/modules/popover/popover.module.mjs +55 -0
  23. package/esm2020/lib/modules/popover/types/popover-adapter-arrow-coordinates.mjs +2 -0
  24. package/esm2020/lib/modules/popover/types/popover-adapter-elements.mjs +2 -0
  25. package/esm2020/lib/modules/popover/types/popover-alignment.mjs +2 -0
  26. package/esm2020/lib/modules/popover/types/popover-message-type.mjs +24 -0
  27. package/esm2020/lib/modules/popover/types/popover-message.mjs +2 -0
  28. package/esm2020/lib/modules/popover/types/popover-placement.mjs +2 -0
  29. package/esm2020/lib/modules/popover/types/popover-position.mjs +2 -0
  30. package/esm2020/lib/modules/popover/types/popover-trigger.mjs +2 -0
  31. package/esm2020/lib/modules/shared/sky-popovers-resources.module.mjs +47 -0
  32. package/esm2020/skyux-popovers.mjs +5 -0
  33. package/esm2020/testing/dropdown/dropdown-fixture.mjs +133 -0
  34. package/esm2020/testing/dropdown/dropdown-testing.module.mjs +15 -0
  35. package/esm2020/testing/dropdown/popovers-fixture-dropdown-item.mjs +2 -0
  36. package/esm2020/testing/dropdown/popovers-fixture-dropdown-menu.mjs +2 -0
  37. package/esm2020/testing/dropdown/popovers-fixture-dropdown.mjs +2 -0
  38. package/esm2020/testing/popover/popover-fixture.mjs +86 -0
  39. package/esm2020/testing/popover/popover-testing.module.mjs +29 -0
  40. package/esm2020/testing/public-api.mjs +8 -0
  41. package/esm2020/testing/skyux-popovers-testing.mjs +5 -0
  42. package/fesm2015/{skyux-popovers-testing.js → skyux-popovers-testing.mjs} +9 -9
  43. package/fesm2015/skyux-popovers-testing.mjs.map +1 -0
  44. package/fesm2015/skyux-popovers.mjs +1689 -0
  45. package/fesm2015/skyux-popovers.mjs.map +1 -0
  46. package/fesm2020/skyux-popovers-testing.mjs +266 -0
  47. package/fesm2020/skyux-popovers-testing.mjs.map +1 -0
  48. package/{fesm2015/skyux-popovers.js → fesm2020/skyux-popovers.mjs} +54 -89
  49. package/fesm2020/skyux-popovers.mjs.map +1 -0
  50. package/lib/modules/shared/sky-popovers-resources.module.d.ts +1 -1
  51. package/package.json +36 -15
  52. package/testing/package.json +5 -5
  53. package/bundles/skyux-popovers-testing.umd.js +0 -682
  54. package/bundles/skyux-popovers.umd.js +0 -1873
  55. package/esm2015/index.js +0 -23
  56. package/esm2015/index.js.map +0 -1
  57. package/esm2015/lib/modules/dropdown/dropdown-button.component.js +0 -14
  58. package/esm2015/lib/modules/dropdown/dropdown-button.component.js.map +0 -1
  59. package/esm2015/lib/modules/dropdown/dropdown-extensions.js +0 -14
  60. package/esm2015/lib/modules/dropdown/dropdown-extensions.js.map +0 -1
  61. package/esm2015/lib/modules/dropdown/dropdown-item.component.js +0 -72
  62. package/esm2015/lib/modules/dropdown/dropdown-item.component.js.map +0 -1
  63. package/esm2015/lib/modules/dropdown/dropdown-menu.component.js +0 -307
  64. package/esm2015/lib/modules/dropdown/dropdown-menu.component.js.map +0 -1
  65. package/esm2015/lib/modules/dropdown/dropdown.component.js +0 -360
  66. package/esm2015/lib/modules/dropdown/dropdown.component.js.map +0 -1
  67. package/esm2015/lib/modules/dropdown/dropdown.module.js +0 -60
  68. package/esm2015/lib/modules/dropdown/dropdown.module.js.map +0 -1
  69. package/esm2015/lib/modules/dropdown/types/dropdown-horizontal-alignment.js +0 -2
  70. package/esm2015/lib/modules/dropdown/types/dropdown-horizontal-alignment.js.map +0 -1
  71. package/esm2015/lib/modules/dropdown/types/dropdown-menu-change.js +0 -2
  72. package/esm2015/lib/modules/dropdown/types/dropdown-menu-change.js.map +0 -1
  73. package/esm2015/lib/modules/dropdown/types/dropdown-message-type.js +0 -37
  74. package/esm2015/lib/modules/dropdown/types/dropdown-message-type.js.map +0 -1
  75. package/esm2015/lib/modules/dropdown/types/dropdown-message.js +0 -2
  76. package/esm2015/lib/modules/dropdown/types/dropdown-message.js.map +0 -1
  77. package/esm2015/lib/modules/dropdown/types/dropdown-trigger-type.js +0 -2
  78. package/esm2015/lib/modules/dropdown/types/dropdown-trigger-type.js.map +0 -1
  79. package/esm2015/lib/modules/popover/popover-adapter.service.js +0 -74
  80. package/esm2015/lib/modules/popover/popover-adapter.service.js.map +0 -1
  81. package/esm2015/lib/modules/popover/popover-animation-state.js +0 -2
  82. package/esm2015/lib/modules/popover/popover-animation-state.js.map +0 -1
  83. package/esm2015/lib/modules/popover/popover-animation.js +0 -19
  84. package/esm2015/lib/modules/popover/popover-animation.js.map +0 -1
  85. package/esm2015/lib/modules/popover/popover-content.component.js +0 -271
  86. package/esm2015/lib/modules/popover/popover-content.component.js.map +0 -1
  87. package/esm2015/lib/modules/popover/popover-context.js +0 -10
  88. package/esm2015/lib/modules/popover/popover-context.js.map +0 -1
  89. package/esm2015/lib/modules/popover/popover-extensions.js +0 -29
  90. package/esm2015/lib/modules/popover/popover-extensions.js.map +0 -1
  91. package/esm2015/lib/modules/popover/popover.component.js +0 -203
  92. package/esm2015/lib/modules/popover/popover.component.js.map +0 -1
  93. package/esm2015/lib/modules/popover/popover.directive.js +0 -176
  94. package/esm2015/lib/modules/popover/popover.directive.js.map +0 -1
  95. package/esm2015/lib/modules/popover/popover.module.js +0 -56
  96. package/esm2015/lib/modules/popover/popover.module.js.map +0 -1
  97. package/esm2015/lib/modules/popover/types/popover-adapter-arrow-coordinates.js +0 -2
  98. package/esm2015/lib/modules/popover/types/popover-adapter-arrow-coordinates.js.map +0 -1
  99. package/esm2015/lib/modules/popover/types/popover-adapter-elements.js +0 -2
  100. package/esm2015/lib/modules/popover/types/popover-adapter-elements.js.map +0 -1
  101. package/esm2015/lib/modules/popover/types/popover-alignment.js +0 -2
  102. package/esm2015/lib/modules/popover/types/popover-alignment.js.map +0 -1
  103. package/esm2015/lib/modules/popover/types/popover-message-type.js +0 -24
  104. package/esm2015/lib/modules/popover/types/popover-message-type.js.map +0 -1
  105. package/esm2015/lib/modules/popover/types/popover-message.js +0 -2
  106. package/esm2015/lib/modules/popover/types/popover-message.js.map +0 -1
  107. package/esm2015/lib/modules/popover/types/popover-placement.js +0 -2
  108. package/esm2015/lib/modules/popover/types/popover-placement.js.map +0 -1
  109. package/esm2015/lib/modules/popover/types/popover-position.js +0 -2
  110. package/esm2015/lib/modules/popover/types/popover-position.js.map +0 -1
  111. package/esm2015/lib/modules/popover/types/popover-trigger.js +0 -2
  112. package/esm2015/lib/modules/popover/types/popover-trigger.js.map +0 -1
  113. package/esm2015/lib/modules/shared/sky-popovers-resources.module.js +0 -47
  114. package/esm2015/lib/modules/shared/sky-popovers-resources.module.js.map +0 -1
  115. package/esm2015/skyux-popovers.js +0 -5
  116. package/esm2015/skyux-popovers.js.map +0 -1
  117. package/esm2015/testing/dropdown/dropdown-fixture.js +0 -138
  118. package/esm2015/testing/dropdown/dropdown-fixture.js.map +0 -1
  119. package/esm2015/testing/dropdown/dropdown-testing.module.js +0 -15
  120. package/esm2015/testing/dropdown/dropdown-testing.module.js.map +0 -1
  121. package/esm2015/testing/dropdown/popovers-fixture-dropdown-item.js +0 -2
  122. package/esm2015/testing/dropdown/popovers-fixture-dropdown-item.js.map +0 -1
  123. package/esm2015/testing/dropdown/popovers-fixture-dropdown-menu.js +0 -2
  124. package/esm2015/testing/dropdown/popovers-fixture-dropdown-menu.js.map +0 -1
  125. package/esm2015/testing/dropdown/popovers-fixture-dropdown.js +0 -2
  126. package/esm2015/testing/dropdown/popovers-fixture-dropdown.js.map +0 -1
  127. package/esm2015/testing/popover/popover-fixture.js +0 -86
  128. package/esm2015/testing/popover/popover-fixture.js.map +0 -1
  129. package/esm2015/testing/popover/popover-testing.module.js +0 -29
  130. package/esm2015/testing/popover/popover-testing.module.js.map +0 -1
  131. package/esm2015/testing/public-api.js +0 -8
  132. package/esm2015/testing/public-api.js.map +0 -1
  133. package/esm2015/testing/skyux-popovers-testing.js +0 -5
  134. package/esm2015/testing/skyux-popovers-testing.js.map +0 -1
  135. package/fesm2015/skyux-popovers-testing.js.map +0 -1
  136. package/fesm2015/skyux-popovers.js.map +0 -1
@@ -0,0 +1,356 @@
1
+ import { ChangeDetectionStrategy, ChangeDetectorRef, Component, ElementRef, Input, Optional, TemplateRef, ViewChild, } from '@angular/core';
2
+ import { SkyAffixAutoFitContext, SkyAffixService, SkyOverlayService, } from '@skyux/core';
3
+ import { SkyThemeService } from '@skyux/theme';
4
+ import { Subject, fromEvent as observableFromEvent } from 'rxjs';
5
+ import { takeUntil } from 'rxjs/operators';
6
+ import { parseAffixHorizontalAlignment } from './dropdown-extensions';
7
+ import { SkyDropdownMessageType } from './types/dropdown-message-type';
8
+ import * as i0 from "@angular/core";
9
+ import * as i1 from "@skyux/core";
10
+ import * as i2 from "@skyux/theme";
11
+ import * as i3 from "@skyux/indicators";
12
+ import * as i4 from "@angular/common";
13
+ import * as i5 from "@skyux/i18n";
14
+ export class SkyDropdownComponent {
15
+ constructor(changeDetector, affixService, overlayService, themeSvc) {
16
+ this.changeDetector = changeDetector;
17
+ this.affixService = affixService;
18
+ this.overlayService = overlayService;
19
+ this.themeSvc = themeSvc;
20
+ /**
21
+ * Provides an observable to send commands to the dropdown. The commands should respect
22
+ * the [[SkyDropdownMessage]] type.
23
+ */
24
+ this.messageStream = new Subject();
25
+ this.isMouseEnter = false;
26
+ this.isVisible = false;
27
+ this.ngUnsubscribe = new Subject();
28
+ this._isOpen = false;
29
+ }
30
+ /**
31
+ * Specifies a background color for the dropdown button. Available values are `default` and
32
+ * `primary`. These values set the background color from the
33
+ * [secondary and primary button classes](https://developer.blackbaud.com/skyux/components/button) respectively.
34
+ * @default "default"
35
+ */
36
+ set buttonStyle(value) {
37
+ this._buttonStyle = value;
38
+ }
39
+ get buttonStyle() {
40
+ return this._buttonStyle || 'default';
41
+ }
42
+ /**
43
+ * Specifies the type of button to render as the dropdown's trigger element. To display a button
44
+ * with text and a caret, specify `select` and then enter the button text in a
45
+ * `sky-dropdown-button` element. To display a round button with an ellipsis, specify
46
+ * `context-menu`. And to display a button with a [Font Awesome icon](http://fontawesome.io/icons/), specify the icon's class name.
47
+ * For example, to display the `fa-filter` icon, specify `filter`.
48
+ * @default "select"
49
+ */
50
+ set buttonType(value) {
51
+ this._buttonType = value;
52
+ }
53
+ get buttonType() {
54
+ return this._buttonType || 'select';
55
+ }
56
+ /**
57
+ * Indicates whether to disable the dropdown button.
58
+ * @default false
59
+ */
60
+ set disabled(value) {
61
+ this._disabled = value;
62
+ }
63
+ get disabled() {
64
+ return this._disabled || false;
65
+ }
66
+ /**
67
+ * Indicates whether to close the dropdown when users click away from the menu.
68
+ * @default true
69
+ */
70
+ set dismissOnBlur(value) {
71
+ this._dismissOnBlur = value;
72
+ }
73
+ get dismissOnBlur() {
74
+ if (this._dismissOnBlur === undefined) {
75
+ return true;
76
+ }
77
+ return this._dismissOnBlur;
78
+ }
79
+ /**
80
+ * Specifies the horizontal alignment of the dropdown menu in relation to the dropdown button.
81
+ * @default "left"
82
+ */
83
+ set horizontalAlignment(value) {
84
+ this._horizontalAlignment = value;
85
+ }
86
+ get horizontalAlignment() {
87
+ return this._horizontalAlignment || 'left';
88
+ }
89
+ /**
90
+ * Specifies how users interact with the dropdown button to expose the dropdown menu.
91
+ * We recommend the default `click` value because the `hover` value can pose
92
+ * [accessibility](https://developer.blackbaud.com/skyux/learn/accessibility) issues
93
+ * for users on touch devices such as phones and tablets.
94
+ * @deprecated We recommend against using this property. If you choose to use the deprecated
95
+ * `hover` value anyway, we recommend that you not use it in combination with the `title`
96
+ * property. (This property will be removed in the next major version release.)
97
+ * @default "click"
98
+ */
99
+ set trigger(value) {
100
+ this._trigger = value;
101
+ }
102
+ get trigger() {
103
+ return this._trigger || 'click';
104
+ }
105
+ set isOpen(value) {
106
+ this._isOpen = value;
107
+ this.changeDetector.markForCheck();
108
+ }
109
+ get isOpen() {
110
+ return this._isOpen || false;
111
+ }
112
+ set menuContainerElementRef(value) {
113
+ if (value) {
114
+ this._menuContainerElementRef = value;
115
+ this.destroyAffixer();
116
+ this.createAffixer();
117
+ this.changeDetector.markForCheck();
118
+ }
119
+ }
120
+ get menuContainerElementRef() {
121
+ return this._menuContainerElementRef;
122
+ }
123
+ ngOnInit() {
124
+ this.addEventListeners();
125
+ this.messageStream
126
+ .pipe(takeUntil(this.ngUnsubscribe))
127
+ .subscribe((message) => {
128
+ this.handleIncomingMessages(message);
129
+ });
130
+ // Load proper icons on theme change.
131
+ this.themeSvc?.settingsChange
132
+ .pipe(takeUntil(this.ngUnsubscribe))
133
+ .subscribe(() => {
134
+ this.changeDetector.markForCheck();
135
+ });
136
+ }
137
+ ngOnDestroy() {
138
+ this.destroyAffixer();
139
+ this.destroyOverlay();
140
+ clearTimeout(this._positionTimeout);
141
+ this.ngUnsubscribe.next();
142
+ this.ngUnsubscribe.complete();
143
+ this.ngUnsubscribe = undefined;
144
+ }
145
+ addEventListeners() {
146
+ const buttonElement = this.triggerButton.nativeElement;
147
+ observableFromEvent(buttonElement, 'click')
148
+ .pipe(takeUntil(this.ngUnsubscribe))
149
+ .subscribe(() => {
150
+ if (this.isOpen) {
151
+ this.sendMessage(SkyDropdownMessageType.Close);
152
+ }
153
+ else {
154
+ this.sendMessage(SkyDropdownMessageType.Open);
155
+ // Wait for dropdown to open, then set focus on first item.
156
+ setTimeout(() => {
157
+ this.sendMessage(SkyDropdownMessageType.FocusFirstItem);
158
+ });
159
+ }
160
+ });
161
+ observableFromEvent(buttonElement, 'keydown')
162
+ .pipe(takeUntil(this.ngUnsubscribe))
163
+ .subscribe((event) => {
164
+ const key = event.key.toLowerCase();
165
+ /* tslint:disable-next-line:switch-default */
166
+ switch (key) {
167
+ case 'escape':
168
+ /*istanbul ignore else*/
169
+ if (this.isOpen) {
170
+ this.sendMessage(SkyDropdownMessageType.Close);
171
+ this.sendMessage(SkyDropdownMessageType.FocusTriggerButton);
172
+ event.stopPropagation();
173
+ }
174
+ break;
175
+ case 'tab':
176
+ if (this.isOpen && this.dismissOnBlur) {
177
+ this.sendMessage(SkyDropdownMessageType.Close);
178
+ }
179
+ break;
180
+ case 'arrowup':
181
+ case 'up':
182
+ if (!this.isOpen) {
183
+ this.sendMessage(SkyDropdownMessageType.Open);
184
+ this.sendMessage(SkyDropdownMessageType.FocusLastItem);
185
+ event.preventDefault();
186
+ event.stopPropagation();
187
+ }
188
+ break;
189
+ case 'enter':
190
+ case 'arrowdown':
191
+ case 'down':
192
+ case ' ': // Spacebar.
193
+ /*istanbul ignore else*/
194
+ if (!this.isOpen) {
195
+ this.sendMessage(SkyDropdownMessageType.Open);
196
+ this.sendMessage(SkyDropdownMessageType.FocusFirstItem);
197
+ event.preventDefault();
198
+ event.stopPropagation();
199
+ }
200
+ break;
201
+ }
202
+ });
203
+ observableFromEvent(buttonElement, 'mouseenter')
204
+ .pipe(takeUntil(this.ngUnsubscribe))
205
+ .subscribe(() => {
206
+ this.isMouseEnter = true;
207
+ if (this.trigger === 'hover') {
208
+ this.sendMessage(SkyDropdownMessageType.Open);
209
+ }
210
+ });
211
+ observableFromEvent(buttonElement, 'mouseleave')
212
+ .pipe(takeUntil(this.ngUnsubscribe))
213
+ .subscribe(() => {
214
+ this.isMouseEnter = false;
215
+ if (this.trigger === 'hover') {
216
+ // Allow the dropdown menu to set isMouseEnter before checking if the close action
217
+ // should be taken.
218
+ setTimeout(() => {
219
+ if (!this.isMouseEnter) {
220
+ this.sendMessage(SkyDropdownMessageType.Close);
221
+ }
222
+ });
223
+ }
224
+ });
225
+ }
226
+ createOverlay() {
227
+ if (this.overlay) {
228
+ return;
229
+ }
230
+ const overlay = this.overlayService.create({
231
+ enableScroll: true,
232
+ enablePointerEvents: true,
233
+ });
234
+ overlay.attachTemplate(this.menuContainerTemplateRef);
235
+ overlay.backdropClick.pipe(takeUntil(this.ngUnsubscribe)).subscribe(() => {
236
+ if (this.dismissOnBlur) {
237
+ this.sendMessage(SkyDropdownMessageType.Close);
238
+ }
239
+ });
240
+ this.overlay = overlay;
241
+ }
242
+ destroyAffixer() {
243
+ /*istanbul ignore else*/
244
+ if (this.affixer) {
245
+ this.affixer.destroy();
246
+ this.affixer = undefined;
247
+ }
248
+ }
249
+ destroyOverlay() {
250
+ /*istanbul ignore else*/
251
+ if (this.overlay) {
252
+ this.overlayService.close(this.overlay);
253
+ this.overlay = undefined;
254
+ }
255
+ }
256
+ createAffixer() {
257
+ const affixer = this.affixService.createAffixer(this.menuContainerElementRef);
258
+ affixer.placementChange
259
+ .pipe(takeUntil(this.ngUnsubscribe))
260
+ .subscribe((change) => {
261
+ this.isVisible = change.placement !== null;
262
+ this.changeDetector.markForCheck();
263
+ });
264
+ this.affixer = affixer;
265
+ }
266
+ handleIncomingMessages(message) {
267
+ if (!this.disabled) {
268
+ /* tslint:disable-next-line:switch-default */
269
+ switch (message.type) {
270
+ case SkyDropdownMessageType.Open:
271
+ this.isOpen = true;
272
+ this.positionDropdownMenu();
273
+ break;
274
+ case SkyDropdownMessageType.Close:
275
+ this.isOpen = false;
276
+ this.destroyOverlay();
277
+ break;
278
+ case SkyDropdownMessageType.Reposition:
279
+ // Only reposition the dropdown if it is already open.
280
+ /* istanbul ignore else */
281
+ if (this.isOpen && this.affixer) {
282
+ this.affixer.reaffix();
283
+ }
284
+ break;
285
+ case SkyDropdownMessageType.FocusTriggerButton:
286
+ this.triggerButton.nativeElement.focus();
287
+ break;
288
+ }
289
+ }
290
+ }
291
+ sendMessage(type) {
292
+ this.messageStream.next({ type });
293
+ }
294
+ positionDropdownMenu() {
295
+ this.isVisible = false;
296
+ this.createOverlay();
297
+ this.changeDetector.markForCheck();
298
+ // Explicitly declare the `setTimeout` from the `window` object in order to use the DOM typings
299
+ // during a unit test (instead of confusing this with Node's `setTimeout`).
300
+ this._positionTimeout = window.setTimeout(() => {
301
+ this.affixer.affixTo(this.triggerButton.nativeElement, {
302
+ autoFitContext: SkyAffixAutoFitContext.Viewport,
303
+ enableAutoFit: true,
304
+ horizontalAlignment: parseAffixHorizontalAlignment(this.horizontalAlignment),
305
+ isSticky: true,
306
+ placement: 'below',
307
+ });
308
+ this.isVisible = true;
309
+ this.changeDetector.markForCheck();
310
+ });
311
+ }
312
+ }
313
+ SkyDropdownComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.7", ngImport: i0, type: SkyDropdownComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: i1.SkyAffixService }, { token: i1.SkyOverlayService }, { token: i2.SkyThemeService, optional: true }], target: i0.ɵɵFactoryTarget.Component });
314
+ SkyDropdownComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.7", type: SkyDropdownComponent, selector: "sky-dropdown", inputs: { buttonStyle: "buttonStyle", buttonType: "buttonType", disabled: "disabled", dismissOnBlur: "dismissOnBlur", label: "label", horizontalAlignment: "horizontalAlignment", messageStream: "messageStream", title: "title", trigger: "trigger" }, viewQueries: [{ propertyName: "menuContainerElementRef", first: true, predicate: ["menuContainerElementRef"], descendants: true, read: ElementRef }, { propertyName: "menuContainerTemplateRef", first: true, predicate: ["menuContainerTemplateRef"], descendants: true, read: TemplateRef, static: true }, { propertyName: "triggerButton", first: true, predicate: ["triggerButton"], descendants: true, read: ElementRef, static: true }], ngImport: i0, template: "<div class=\"sky-dropdown\">\n <button\n class=\"sky-btn sky-dropdown-button\"\n type=\"button\"\n [attr.aria-expanded]=\"isOpen\"\n [attr.aria-controls]=\"isOpen ? menuId : null\"\n [attr.aria-haspopup]=\"menuAriaRole\"\n [attr.aria-label]=\"\n label || ('skyux_dropdown_context_menu_default_label' | skyLibResources)\n \"\n [attr.title]=\"title\"\n [disabled]=\"disabled\"\n [ngClass]=\"[\n 'sky-dropdown-button-type-' + buttonType,\n 'sky-btn-' + buttonStyle\n ]\"\n #triggerButton\n >\n <ng-container [ngSwitch]=\"buttonType\">\n <ng-template ngSwitchCase=\"context-menu\">\n <sky-icon *skyThemeIf=\"'default'\" icon=\"ellipsis-h\"></sky-icon>\n <sky-icon\n *skyThemeIf=\"'modern'\"\n icon=\"ellipsis\"\n iconType=\"skyux\"\n ></sky-icon>\n </ng-template>\n\n <ng-template ngSwitchDefault>\n <div\n *ngIf=\"buttonType === 'select' || buttonType === 'tab' || !buttonType\"\n class=\"sky-dropdown-button-container\"\n >\n <div class=\"sky-dropdown-button-content-container\">\n <ng-content select=\"sky-dropdown-button\"> </ng-content>\n </div>\n <div class=\"sky-dropdown-button-icon-container\">\n <sky-icon\n *skyThemeIf=\"'default'\"\n class=\"sky-dropdown-caret\"\n icon=\"caret-down\"\n >\n </sky-icon>\n <sky-icon\n *skyThemeIf=\"'modern'\"\n class=\"sky-dropdown-caret\"\n icon=\"chevron-down\"\n iconType=\"skyux\"\n >\n </sky-icon>\n </div>\n </div>\n <div\n *ngIf=\"buttonType !== 'select' && buttonType !== 'tab' && buttonType\"\n >\n <sky-icon [icon]=\"buttonType\" size=\"lg\"></sky-icon>\n </div>\n </ng-template>\n </ng-container>\n </button>\n</div>\n\n<ng-template #menuContainerTemplateRef>\n <div\n class=\"sky-dropdown-menu-container\"\n [class.hidden]=\"!isVisible\"\n #menuContainerElementRef\n >\n <ng-content select=\"sky-dropdown-menu\"></ng-content>\n </div>\n</ng-template>\n", styles: [".sky-dropdown-button-type-tab{background-color:transparent;border:none;border-radius:4px 4px 0 0;color:#686c73;cursor:pointer;display:inline-block;font-weight:600;line-height:1.8;padding:8px 16px;background-color:#0974a1;color:#fff;max-width:100%;text-align:left}.sky-dropdown-button-type-tab:hover:not(.sky-btn-tab-disabled){background-color:#eeeeef;color:#212327;text-decoration:none}.sky-dropdown-button-type-tab.sky-btn-tab-disabled{background-color:#cdcfd2;cursor:default;outline:none;text-decoration:none}.sky-dropdown-button-type-tab.sky-btn-tab-disabled:hover{color:#686c73;cursor:default;text-decoration:none}.sky-dropdown-button-type-tab:hover:not(.sky-btn-tab-disabled){background-color:#0974a1;color:#fff}.sky-dropdown-button-type-context-menu{border-radius:50%;padding:3px 8px}.sky-dropdown-caret{margin-left:10px}.sky-dropdown-button-container{display:flex}.sky-dropdown-button-content-container{flex-shrink:1;overflow:hidden;text-overflow:ellipsis}.sky-dropdown-button-icon-container{flex-grow:1}.sky-dropdown-menu-container{position:fixed}.hidden{visibility:hidden}:host-context(.sky-theme-modern) .sky-dropdown-button-type-tab{border:none;border-radius:0;font-weight:400;padding:10px 15px;transition:box-shadow .15s;background-color:transparent;color:#212327}:host-context(.sky-theme-modern) .sky-dropdown-button-type-tab:hover:not(.sky-btn-tab-disabled):not(.sky-btn-tab-selected):not(.sky-dropdown-button-type-tab):not(:focus){background-color:transparent;border-bottom:solid 1px #00b4f1;padding-bottom:9px}:host-context(.sky-theme-modern) .sky-dropdown-button-type-tab:focus{background-color:transparent;outline:none}:host-context(.sky-theme-modern) .sky-dropdown-button-type-tab:focus:not(:active){outline:solid 2px #1870B8;outline-offset:-2px;box-shadow:0 1px 8px #0000004d}:host-context(.sky-theme-modern) .sky-dropdown-button-type-tab:active{border-bottom:solid 3px #00b4f1;padding-bottom:7px}:host-context(.sky-theme-modern) .sky-dropdown-button-type-tab:not(:active){border-bottom:solid 3px #1870B8;padding-bottom:7px}:host-context(.sky-theme-modern) .sky-dropdown-button-type-tab:hover:not(.sky-btn-tab-disabled){background-color:transparent;color:#212327}:host-context(.sky-theme-modern) .sky-dropdown-button-type-tab .sky-btn-tab-close,:host-context(.sky-theme-modern) .sky-dropdown-button-type-tab .sky-tab-header-count{color:#686c73}:host-context(.sky-theme-modern) .sky-dropdown-caret{margin-left:10px}.sky-theme-modern .sky-dropdown-button-type-tab{border:none;border-radius:0;font-weight:400;padding:10px 15px;transition:box-shadow .15s;background-color:transparent;color:#212327}.sky-theme-modern .sky-dropdown-button-type-tab:hover:not(.sky-btn-tab-disabled):not(.sky-btn-tab-selected):not(.sky-dropdown-button-type-tab):not(:focus){background-color:transparent;border-bottom:solid 1px #00b4f1;padding-bottom:9px}.sky-theme-modern .sky-dropdown-button-type-tab:focus{background-color:transparent;outline:none}.sky-theme-modern .sky-dropdown-button-type-tab:focus:not(:active){outline:solid 2px #1870B8;outline-offset:-2px;box-shadow:0 1px 8px #0000004d}.sky-theme-modern .sky-dropdown-button-type-tab:active{border-bottom:solid 3px #00b4f1;padding-bottom:7px}.sky-theme-modern .sky-dropdown-button-type-tab:not(:active){border-bottom:solid 3px #1870B8;padding-bottom:7px}.sky-theme-modern .sky-dropdown-button-type-tab:hover:not(.sky-btn-tab-disabled){background-color:transparent;color:#212327}.sky-theme-modern .sky-dropdown-button-type-tab .sky-btn-tab-close,.sky-theme-modern .sky-dropdown-button-type-tab .sky-tab-header-count{color:#686c73}.sky-theme-modern .sky-dropdown-caret{margin-left:10px}:host-context(.sky-theme-modern.sky-theme-mode-dark) .sky-dropdown-button-type-tab{color:#fff}:host-context(.sky-theme-modern.sky-theme-mode-dark) .sky-dropdown-button-type-tab:hover{color:#fff}:host-context(.sky-theme-modern.sky-theme-mode-dark) .sky-dropdown-button-type-tab .sky-btn-tab-close,:host-context(.sky-theme-modern.sky-theme-mode-dark) .sky-dropdown-button-type-tab .sky-tab-header-count{color:#efefef}.sky-theme-modern.sky-theme-mode-dark .sky-dropdown-button-type-tab,.sky-theme-modern.sky-theme-mode-dark .sky-dropdown-button-type-tab:hover{color:#fff}.sky-theme-modern.sky-theme-mode-dark .sky-dropdown-button-type-tab .sky-btn-tab-close,.sky-theme-modern.sky-theme-mode-dark .sky-dropdown-button-type-tab .sky-tab-header-count{color:#efefef}\n"], components: [{ type: i3.λ4, selector: "sky-icon", inputs: ["icon", "iconType", "size", "fixedWidth", "variant"] }], directives: [{ type: i4.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i4.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { type: i4.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { type: i2.λ3, selector: "[skyThemeIf]", inputs: ["skyThemeIf"] }, { type: i4.NgSwitchDefault, selector: "[ngSwitchDefault]" }, { type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], pipes: { "skyLibResources": i5.SkyLibResourcesPipe }, changeDetection: i0.ChangeDetectionStrategy.OnPush });
315
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.7", ngImport: i0, type: SkyDropdownComponent, decorators: [{
316
+ type: Component,
317
+ args: [{ selector: 'sky-dropdown', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"sky-dropdown\">\n <button\n class=\"sky-btn sky-dropdown-button\"\n type=\"button\"\n [attr.aria-expanded]=\"isOpen\"\n [attr.aria-controls]=\"isOpen ? menuId : null\"\n [attr.aria-haspopup]=\"menuAriaRole\"\n [attr.aria-label]=\"\n label || ('skyux_dropdown_context_menu_default_label' | skyLibResources)\n \"\n [attr.title]=\"title\"\n [disabled]=\"disabled\"\n [ngClass]=\"[\n 'sky-dropdown-button-type-' + buttonType,\n 'sky-btn-' + buttonStyle\n ]\"\n #triggerButton\n >\n <ng-container [ngSwitch]=\"buttonType\">\n <ng-template ngSwitchCase=\"context-menu\">\n <sky-icon *skyThemeIf=\"'default'\" icon=\"ellipsis-h\"></sky-icon>\n <sky-icon\n *skyThemeIf=\"'modern'\"\n icon=\"ellipsis\"\n iconType=\"skyux\"\n ></sky-icon>\n </ng-template>\n\n <ng-template ngSwitchDefault>\n <div\n *ngIf=\"buttonType === 'select' || buttonType === 'tab' || !buttonType\"\n class=\"sky-dropdown-button-container\"\n >\n <div class=\"sky-dropdown-button-content-container\">\n <ng-content select=\"sky-dropdown-button\"> </ng-content>\n </div>\n <div class=\"sky-dropdown-button-icon-container\">\n <sky-icon\n *skyThemeIf=\"'default'\"\n class=\"sky-dropdown-caret\"\n icon=\"caret-down\"\n >\n </sky-icon>\n <sky-icon\n *skyThemeIf=\"'modern'\"\n class=\"sky-dropdown-caret\"\n icon=\"chevron-down\"\n iconType=\"skyux\"\n >\n </sky-icon>\n </div>\n </div>\n <div\n *ngIf=\"buttonType !== 'select' && buttonType !== 'tab' && buttonType\"\n >\n <sky-icon [icon]=\"buttonType\" size=\"lg\"></sky-icon>\n </div>\n </ng-template>\n </ng-container>\n </button>\n</div>\n\n<ng-template #menuContainerTemplateRef>\n <div\n class=\"sky-dropdown-menu-container\"\n [class.hidden]=\"!isVisible\"\n #menuContainerElementRef\n >\n <ng-content select=\"sky-dropdown-menu\"></ng-content>\n </div>\n</ng-template>\n", styles: [".sky-dropdown-button-type-tab{background-color:transparent;border:none;border-radius:4px 4px 0 0;color:#686c73;cursor:pointer;display:inline-block;font-weight:600;line-height:1.8;padding:8px 16px;background-color:#0974a1;color:#fff;max-width:100%;text-align:left}.sky-dropdown-button-type-tab:hover:not(.sky-btn-tab-disabled){background-color:#eeeeef;color:#212327;text-decoration:none}.sky-dropdown-button-type-tab.sky-btn-tab-disabled{background-color:#cdcfd2;cursor:default;outline:none;text-decoration:none}.sky-dropdown-button-type-tab.sky-btn-tab-disabled:hover{color:#686c73;cursor:default;text-decoration:none}.sky-dropdown-button-type-tab:hover:not(.sky-btn-tab-disabled){background-color:#0974a1;color:#fff}.sky-dropdown-button-type-context-menu{border-radius:50%;padding:3px 8px}.sky-dropdown-caret{margin-left:10px}.sky-dropdown-button-container{display:flex}.sky-dropdown-button-content-container{flex-shrink:1;overflow:hidden;text-overflow:ellipsis}.sky-dropdown-button-icon-container{flex-grow:1}.sky-dropdown-menu-container{position:fixed}.hidden{visibility:hidden}:host-context(.sky-theme-modern) .sky-dropdown-button-type-tab{border:none;border-radius:0;font-weight:400;padding:10px 15px;transition:box-shadow .15s;background-color:transparent;color:#212327}:host-context(.sky-theme-modern) .sky-dropdown-button-type-tab:hover:not(.sky-btn-tab-disabled):not(.sky-btn-tab-selected):not(.sky-dropdown-button-type-tab):not(:focus){background-color:transparent;border-bottom:solid 1px #00b4f1;padding-bottom:9px}:host-context(.sky-theme-modern) .sky-dropdown-button-type-tab:focus{background-color:transparent;outline:none}:host-context(.sky-theme-modern) .sky-dropdown-button-type-tab:focus:not(:active){outline:solid 2px #1870B8;outline-offset:-2px;box-shadow:0 1px 8px #0000004d}:host-context(.sky-theme-modern) .sky-dropdown-button-type-tab:active{border-bottom:solid 3px #00b4f1;padding-bottom:7px}:host-context(.sky-theme-modern) .sky-dropdown-button-type-tab:not(:active){border-bottom:solid 3px #1870B8;padding-bottom:7px}:host-context(.sky-theme-modern) .sky-dropdown-button-type-tab:hover:not(.sky-btn-tab-disabled){background-color:transparent;color:#212327}:host-context(.sky-theme-modern) .sky-dropdown-button-type-tab .sky-btn-tab-close,:host-context(.sky-theme-modern) .sky-dropdown-button-type-tab .sky-tab-header-count{color:#686c73}:host-context(.sky-theme-modern) .sky-dropdown-caret{margin-left:10px}.sky-theme-modern .sky-dropdown-button-type-tab{border:none;border-radius:0;font-weight:400;padding:10px 15px;transition:box-shadow .15s;background-color:transparent;color:#212327}.sky-theme-modern .sky-dropdown-button-type-tab:hover:not(.sky-btn-tab-disabled):not(.sky-btn-tab-selected):not(.sky-dropdown-button-type-tab):not(:focus){background-color:transparent;border-bottom:solid 1px #00b4f1;padding-bottom:9px}.sky-theme-modern .sky-dropdown-button-type-tab:focus{background-color:transparent;outline:none}.sky-theme-modern .sky-dropdown-button-type-tab:focus:not(:active){outline:solid 2px #1870B8;outline-offset:-2px;box-shadow:0 1px 8px #0000004d}.sky-theme-modern .sky-dropdown-button-type-tab:active{border-bottom:solid 3px #00b4f1;padding-bottom:7px}.sky-theme-modern .sky-dropdown-button-type-tab:not(:active){border-bottom:solid 3px #1870B8;padding-bottom:7px}.sky-theme-modern .sky-dropdown-button-type-tab:hover:not(.sky-btn-tab-disabled){background-color:transparent;color:#212327}.sky-theme-modern .sky-dropdown-button-type-tab .sky-btn-tab-close,.sky-theme-modern .sky-dropdown-button-type-tab .sky-tab-header-count{color:#686c73}.sky-theme-modern .sky-dropdown-caret{margin-left:10px}:host-context(.sky-theme-modern.sky-theme-mode-dark) .sky-dropdown-button-type-tab{color:#fff}:host-context(.sky-theme-modern.sky-theme-mode-dark) .sky-dropdown-button-type-tab:hover{color:#fff}:host-context(.sky-theme-modern.sky-theme-mode-dark) .sky-dropdown-button-type-tab .sky-btn-tab-close,:host-context(.sky-theme-modern.sky-theme-mode-dark) .sky-dropdown-button-type-tab .sky-tab-header-count{color:#efefef}.sky-theme-modern.sky-theme-mode-dark .sky-dropdown-button-type-tab,.sky-theme-modern.sky-theme-mode-dark .sky-dropdown-button-type-tab:hover{color:#fff}.sky-theme-modern.sky-theme-mode-dark .sky-dropdown-button-type-tab .sky-btn-tab-close,.sky-theme-modern.sky-theme-mode-dark .sky-dropdown-button-type-tab .sky-tab-header-count{color:#efefef}\n"] }]
318
+ }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }, { type: i1.SkyAffixService }, { type: i1.SkyOverlayService }, { type: i2.SkyThemeService, decorators: [{
319
+ type: Optional
320
+ }] }]; }, propDecorators: { buttonStyle: [{
321
+ type: Input
322
+ }], buttonType: [{
323
+ type: Input
324
+ }], disabled: [{
325
+ type: Input
326
+ }], dismissOnBlur: [{
327
+ type: Input
328
+ }], label: [{
329
+ type: Input
330
+ }], horizontalAlignment: [{
331
+ type: Input
332
+ }], messageStream: [{
333
+ type: Input
334
+ }], title: [{
335
+ type: Input
336
+ }], trigger: [{
337
+ type: Input
338
+ }], menuContainerElementRef: [{
339
+ type: ViewChild,
340
+ args: ['menuContainerElementRef', {
341
+ read: ElementRef,
342
+ }]
343
+ }], menuContainerTemplateRef: [{
344
+ type: ViewChild,
345
+ args: ['menuContainerTemplateRef', {
346
+ read: TemplateRef,
347
+ static: true,
348
+ }]
349
+ }], triggerButton: [{
350
+ type: ViewChild,
351
+ args: ['triggerButton', {
352
+ read: ElementRef,
353
+ static: true,
354
+ }]
355
+ }] } });
356
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJvcGRvd24uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21wb25lbnRzL3BvcG92ZXJzL3NyYy9saWIvbW9kdWxlcy9kcm9wZG93bi9kcm9wZG93bi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvcG9wb3ZlcnMvc3JjL2xpYi9tb2R1bGVzL2Ryb3Bkb3duL2Ryb3Bkb3duLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCx1QkFBdUIsRUFDdkIsaUJBQWlCLEVBQ2pCLFNBQVMsRUFDVCxVQUFVLEVBQ1YsS0FBSyxFQUdMLFFBQVEsRUFDUixXQUFXLEVBQ1gsU0FBUyxHQUNWLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFDTCxzQkFBc0IsRUFDdEIsZUFBZSxFQUdmLGlCQUFpQixHQUNsQixNQUFNLGFBQWEsQ0FBQztBQUNyQixPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBRS9DLE9BQU8sRUFBRSxPQUFPLEVBQUUsU0FBUyxJQUFJLG1CQUFtQixFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ2pFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUUzQyxPQUFPLEVBQUUsNkJBQTZCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUd0RSxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQzs7Ozs7OztBQVN2RSxNQUFNLE9BQU8sb0JBQW9CO0lBeUwvQixZQUNVLGNBQWlDLEVBQ2pDLFlBQTZCLEVBQzdCLGNBQWlDLEVBQ3JCLFFBQTBCO1FBSHRDLG1CQUFjLEdBQWQsY0FBYyxDQUFtQjtRQUNqQyxpQkFBWSxHQUFaLFlBQVksQ0FBaUI7UUFDN0IsbUJBQWMsR0FBZCxjQUFjLENBQW1CO1FBQ3JCLGFBQVEsR0FBUixRQUFR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UTtzQkFEbEIsS0FBSztnQkFjSyxhQUFhO3NCQUR2QixLQUFLO2dCQWtCQyxLQUFLO3NCQURYLEtBQUs7Z0JBUUssbUJBQW1CO3NCQUQ3QixLQUFLO2dCQWVDLGFBQWE7c0JBRG5CLEtBQUs7Z0JBT0MsS0FBSztzQkFEWCxLQUFLO2dCQWNLLE9BQU87c0JBRGpCLEtBQUs7Z0JBcUJLLHVCQUF1QjtzQkFIakMsU0FBUzt1QkFBQyx5QkFBeUIsRUFBRTt3QkFDcEMsSUFBSSxFQUFFLFVBQVU7cUJBQ2pCO2dCQTBCTyx3QkFBd0I7c0JBSi9CLFNBQVM7dUJBQUMsMEJBQTBCLEVBQUU7d0JBQ3JDLElBQUksRUFBRSxXQUFXO3dCQUNqQixNQUFNLEVBQUUsSUFBSTtxQkFDYjtnQkFPTyxhQUFhO3NCQUpwQixTQUFTO3VCQUFDLGVBQWUsRUFBRTt3QkFDMUIsSUFBSSxFQUFFLFVBQVU7d0JBQ2hCLE1BQU0sRUFBRSxJQUFJO3FCQUNiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBDb21wb25lbnQsXG4gIEVsZW1lbnRSZWYsXG4gIElucHV0LFxuICBPbkRlc3Ryb3ksXG4gIE9uSW5pdCxcbiAgT3B0aW9uYWwsXG4gIFRlbXBsYXRlUmVmLFxuICBWaWV3Q2hpbGQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtcbiAgU2t5QWZmaXhBdXRvRml0Q29udGV4dCxcbiAgU2t5QWZmaXhTZXJ2aWNlLFxuICBTa3lBZmZpeGVyLFxuICBTa3lPdmVybGF5SW5zdGFuY2UsXG4gIFNreU92ZXJsYXlTZXJ2aWNlLFxufSBmcm9tICdAc2t5dXgvY29yZSc7XG5pbXBvcnQgeyBTa3lUaGVtZVNlcnZpY2UgfSBmcm9tICdAc2t5dXgvdGhlbWUnO1xuXG5pbXBvcnQgeyBTdWJqZWN0LCBmcm9tRXZlbnQgYXMgb2JzZXJ2YWJsZUZyb21FdmVudCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgdGFrZVVudGlsIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5pbXBvcnQgeyBwYXJzZUFmZml4SG9yaXpvbnRhbEFsaWdubWVudCB9IGZyb20gJy4vZHJvcGRvd24tZXh0ZW5zaW9ucyc7XG5pbXBvcnQgeyBTa3lEcm9wZG93bkhvcml6b250YWxBbGlnbm1lbnQgfSBmcm9tICcuL3R5cGVzL2Ryb3Bkb3duLWhvcml6b250YWwtYWxpZ25tZW50JztcbmltcG9ydCB7IFNreURyb3Bkb3duTWVzc2FnZSB9IGZyb20gJy4vdHlwZXMvZHJvcGRvd24tbWVzc2FnZSc7XG5pbXBvcnQgeyBTa3lEcm9wZG93bk1lc3NhZ2VUeXBlIH0gZnJvbSAnLi90eXBlcy9kcm9wZG93bi1tZXNzYWdlLXR5cGUnO1xuaW1wb3J0IHsgU2t5RHJvcGRvd25UcmlnZ2VyVHlwZSB9IGZyb20gJy4vdHlwZXMvZHJvcGRvd24tdHJpZ2dlci10eXBlJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnc2t5LWRyb3Bkb3duJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2Ryb3Bkb3duLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vZHJvcGRvd24uY29tcG9uZW50LnNjc3MnXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG59KVxuZXhwb3J0IGNsYXNzIFNreURyb3Bkb3duQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuICAvKipcbiAgICogU3BlY2lmaWVzIGEgYmFja2dyb3VuZCBjb2xvciBmb3IgdGhlIGRyb3Bkb3duIGJ1dHRvbi4gQXZhaWxhYmxlIHZhbHVlcyBhcmUgYGRlZmF1bHRgIGFuZFxuICAgKiBgcHJpbWFyeWAuIFRoZXNlIHZhbHVlcyBzZXQgdGhlIGJhY2tncm91bmQgY29sb3IgZnJvbSB0aGVcbiAgICogW3NlY29uZGFyeSBhbmQgcHJpbWFyeSBidXR0b24gY2xhc3Nlc10oaHR0cHM6Ly9kZXZlbG9wZXIuYmxhY2tiYXVkLmNvbS9za3l1eC9jb21wb25lbnRzL2J1dHRvbikgcmVzcGVjdGl2ZWx5LlxuICAgKiBAZGVmYXVsdCBcImRlZmF1bHRcIlxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIHNldCBidXR0b25TdHlsZSh2YWx1ZTogc3RyaW5nKSB7XG4gICAgdGhpcy5fYnV0dG9uU3R5bGUgPSB2YWx1ZTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgYnV0dG9uU3R5bGUoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5fYnV0dG9uU3R5bGUgfHwgJ2RlZmF1bHQnO1xuICB9XG5cbiAgLyoqXG4gICAqIFNwZWNpZmllcyB0aGUgdHlwZSBvZiBidXR0b24gdG8gcmVuZGVyIGFzIHRoZSBkcm9wZG93bidzIHRyaWdnZXIgZWxlbWVudC4gVG8gZGlzcGxheSBhIGJ1dHRvblxuICAgKiB3aXRoIHRleHQgYW5kIGEgY2FyZXQsIHNwZWNpZnkgYHNlbGVjdGAgYW5kIHRoZW4gZW50ZXIgdGhlIGJ1dHRvbiB0ZXh0IGluIGFcbiAgICogYHNreS1kcm9wZG93bi1idXR0b25gIGVsZW1lbnQuIFRvIGRpc3BsYXkgYSByb3VuZCBidXR0b24gd2l0aCBhbiBlbGxpcHNpcywgc3BlY2lmeVxuICAgKiBgY29udGV4dC1tZW51YC4gQW5kIHRvIGRpc3BsYXkgYSBidXR0b24gd2l0aCBhIFtGb250IEF3ZXNvbWUgaWNvbl0oaHR0cDovL2ZvbnRhd2Vzb21lLmlvL2ljb25zLyksIHNwZWNpZnkgdGhlIGljb24ncyBjbGFzcyBuYW1lLlxuICAgKiBGb3IgZXhhbXBsZSwgdG8gZGlzcGxheSB0aGUgYGZhLWZpbHRlcmAgaWNvbiwgc3BlY2lmeSBgZmlsdGVyYC5cbiAgICogQGRlZmF1bHQgXCJzZWxlY3RcIlxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIHNldCBidXR0b25UeXBlKHZhbHVlOiBzdHJpbmcpIHtcbiAgICB0aGlzLl9idXR0b25UeXBlID0gdmFsdWU7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGJ1dHRvblR5cGUoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5fYnV0dG9uVHlwZSB8fCAnc2VsZWN0JztcbiAgfVxuXG4gIC8qKlxuICAgKiBJbmRpY2F0ZXMgd2hldGhlciB0byBkaXNhYmxlIHRoZSBkcm9wZG93biBidXR0b24uXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgc2V0IGRpc2FibGVkKHZhbHVlOiBib29sZWFuKSB7XG4gICAgdGhpcy5fZGlzYWJsZWQgPSB2YWx1ZTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgZGlzYWJsZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX2Rpc2FibGVkIHx8IGZhbHNlO1xuICB9XG5cbiAgLyoqXG4gICAqIEluZGljYXRlcyB3aGV0aGVyIHRvIGNsb3NlIHRoZSBkcm9wZG93biB3aGVuIHVzZXJzIGNsaWNrIGF3YXkgZnJvbSB0aGUgbWVudS5cbiAgICogQGRlZmF1bHQgdHJ1ZVxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIHNldCBkaXNtaXNzT25CbHVyKHZhbHVlOiBib29sZWFuKSB7XG4gICAgdGhpcy5fZGlzbWlzc09uQmx1ciA9IHZhbHVlO1xuICB9XG5cbiAgcHVibGljIGdldCBkaXNtaXNzT25CbHVyKCk6IGJvb2xlYW4ge1xuICAgIGlmICh0aGlzLl9kaXNtaXNzT25CbHVyID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLl9kaXNtaXNzT25CbHVyO1xuICB9XG5cbiAgLyoqXG4gICAqIFNwZWNpZmllcyBhbiBBUklBIGxhYmVsIGZvciB0aGUgZHJvcGRvd24uIFRoaXMgc2V0cyB0aGUgZHJvcGRvd24ncyBgYXJpYS1sYWJlbGAgYXR0cmlidXRlXG4gICAqIFt0byBzdXBwb3J0IGFjY2Vzc2liaWxpdHldKGh0dHBzOi8vZGV2ZWxvcGVyLmJsYWNrYmF1ZC5jb20vc2t5dXgvbGVhcm4vYWNjZXNzaWJpbGl0eSkuXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgbGFiZWw6IHN0cmluZztcblxuICAvKipcbiAgICogU3BlY2lmaWVzIHRoZSBob3Jpem9udGFsIGFsaWdubWVudCBvZiB0aGUgZHJvcGRvd24gbWVudSBpbiByZWxhdGlvbiB0byB0aGUgZHJvcGRvd24gYnV0dG9uLlxuICAgKiBAZGVmYXVsdCBcImxlZnRcIlxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIHNldCBob3Jpem9udGFsQWxpZ25tZW50KHZhbHVlOiBTa3lEcm9wZG93bkhvcml6b250YWxBbGlnbm1lbnQpIHtcbiAgICB0aGlzLl9ob3Jpem9udGFsQWxpZ25tZW50ID0gdmFsdWU7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGhvcml6b250YWxBbGlnbm1lbnQoKTogU2t5RHJvcGRvd25Ib3Jpem9udGFsQWxpZ25tZW50IHtcbiAgICByZXR1cm4gdGhpcy5faG9yaXpvbnRhbEFsaWdubWVudCB8fCAnbGVmdCc7XG4gIH1cblxuICAvKipcbiAgICogUHJvdmlkZXMgYW4gb2JzZXJ2YWJsZSB0byBzZW5kIGNvbW1hbmRzIHRvIHRoZSBkcm9wZG93bi4gVGhlIGNvbW1hbmRzIHNob3VsZCByZXNwZWN0XG4gICAqIHRoZSBbW1NreURyb3Bkb3duTWVzc2FnZV1dIHR5cGUuXG4gICAqL1xuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBtZXNzYWdlU3RyZWFtID0gbmV3IFN1YmplY3Q8U2t5RHJvcGRvd25NZXNzYWdlPigpO1xuXG4gIC8qKlxuICAgKiBTcGVjaWZpZXMgYSB0aXRsZSB0byBkaXNwbGF5IGluIGEgdG9vbHRpcCB3aGVuIHVzZXJzIGhvdmVyIHRoZSBtb3VzZSBvdmVyIHRoZSBkcm9wZG93biBidXR0b24uXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgdGl0bGU6IHN0cmluZztcblxuICAvKipcbiAgICogU3BlY2lmaWVzIGhvdyB1c2VycyBpbnRlcmFjdCB3aXRoIHRoZSBkcm9wZG93biBidXR0b24gdG8gZXhwb3NlIHRoZSBkcm9wZG93biBtZW51LlxuICAgKiBXZSByZWNvbW1lbmQgdGhlIGRlZmF1bHQgYGNsaWNrYCB2YWx1ZSBiZWNhdXNlIHRoZSBgaG92ZXJgIHZhbHVlIGNhbiBwb3NlXG4gICAqIFthY2Nlc3NpYmlsaXR5XShodHRwczovL2RldmVsb3Blci5ibGFja2JhdWQuY29tL3NreXV4L2xlYXJuL2FjY2Vzc2liaWxpdHkpIGlzc3Vlc1xuICAgKiBmb3IgdXNlcnMgb24gdG91Y2ggZGV2aWNlcyBzdWNoIGFzIHBob25lcyBhbmQgdGFibGV0cy5cbiAgICogQGRlcHJlY2F0ZWQgV2UgcmVjb21tZW5kIGFnYWluc3QgdXNpbmcgdGhpcyBwcm9wZXJ0eS4gSWYgeW91IGNob29zZSB0byB1c2UgdGhlIGRlcHJlY2F0ZWRcbiAgICogYGhvdmVyYCB2YWx1ZSBhbnl3YXksIHdlIHJlY29tbWVuZCB0aGF0IHlvdSBub3QgdXNlIGl0IGluIGNvbWJpbmF0aW9uIHdpdGggdGhlIGB0aXRsZWBcbiAgICogcHJvcGVydHkuIChUaGlzIHByb3BlcnR5IHdpbGwgYmUgcmVtb3ZlZCBpbiB0aGUgbmV4dCBtYWpvciB2ZXJzaW9uIHJlbGVhc2UuKVxuICAgKiBAZGVmYXVsdCBcImNsaWNrXCJcbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzZXQgdHJpZ2dlcih2YWx1ZTogU2t5RHJvcGRvd25UcmlnZ2VyVHlwZSkge1xuICAgIHRoaXMuX3RyaWdnZXIgPSB2YWx1ZTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgdHJpZ2dlcigpOiBTa3lEcm9wZG93blRyaWdnZXJUeXBlIHtcbiAgICByZXR1cm4gdGhpcy5fdHJpZ2dlciB8fCAnY2xpY2snO1xuICB9XG5cbiAgcHVibGljIHNldCBpc09wZW4odmFsdWU6IGJvb2xlYW4pIHtcbiAgICB0aGlzLl9pc09wZW4gPSB2YWx1ZTtcbiAgICB0aGlzLmNoYW5nZURldGVjdG9yLm1hcmtGb3JDaGVjaygpO1xuICB9XG5cbiAgcHVibGljIGdldCBpc09wZW4oKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX2lzT3BlbiB8fCBmYWxzZTtcbiAgfVxuXG4gIEBWaWV3Q2hpbGQoJ21lbnVDb250YWluZXJFbGVtZW50UmVmJywge1xuICAgIHJlYWQ6IEVsZW1lbnRSZWYsXG4gIH0pXG4gIHB1YmxpYyBzZXQgbWVudUNvbnRhaW5lckVsZW1lbnRSZWYodmFsdWU6IEVsZW1lbnRSZWYpIHtcbiAgICBpZiAodmFsdWUpIHtcbiAgICAgIHRoaXMuX21lbnVDb250YWluZXJFbGVtZW50UmVmID0gdmFsdWU7XG4gICAgICB0aGlzLmRlc3Ryb3lBZmZpeGVyKCk7XG4gICAgICB0aGlzLmNyZWF0ZUFmZml4ZXIoKTtcbiAgICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3IubWFya0ZvckNoZWNrKCk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGdldCBtZW51Q29udGFpbmVyRWxlbWVudFJlZigpOiBFbGVtZW50UmVmIHtcbiAgICByZXR1cm4gdGhpcy5fbWVudUNvbnRhaW5lckVsZW1lbnRSZWY7XG4gIH1cblxuICBwdWJsaWMgaXNNb3VzZUVudGVyID0gZmFsc2U7XG5cbiAgcHVibGljIGlzVmlzaWJsZSA9IGZhbHNlO1xuXG4gIHB1YmxpYyBtZW51SWQ6IHN0cmluZztcblxuICBwdWJsaWMgbWVudUFyaWFSb2xlOiBzdHJpbmc7XG5cbiAgQFZpZXdDaGlsZCgnbWVudUNvbnRhaW5lclRlbXBsYXRlUmVmJywge1xuICAgIHJlYWQ6IFRlbXBsYXRlUmVmLFxuICAgIHN0YXRpYzogdHJ1ZSxcbiAgfSlcbiAgcHJpdmF0ZSBtZW51Q29udGFpbmVyVGVtcGxhdGVSZWY6IFRlbXBsYXRlUmVmPGFueT47XG5cbiAgQFZpZXdDaGlsZCgndHJpZ2dlckJ1dHRvbicsIHtcbiAgICByZWFkOiBFbGVtZW50UmVmLFxuICAgIHN0YXRpYzogdHJ1ZSxcbiAgfSlcbiAgcHJpdmF0ZSB0cmlnZ2VyQnV0dG9uOiBFbGVtZW50UmVmO1xuXG4gIHByaXZhdGUgYWZmaXhlcjogU2t5QWZmaXhlcjtcblxuICBwcml2YXRlIG5nVW5zdWJzY3JpYmUgPSBuZXcgU3ViamVjdCgpO1xuXG4gIHByaXZhdGUgb3ZlcmxheTogU2t5T3ZlcmxheUluc3RhbmNlO1xuXG4gIHByaXZhdGUgX2J1dHRvblN0eWxlOiBzdHJpbmc7XG5cbiAgcHJpdmF0ZSBfYnV0dG9uVHlwZTogc3RyaW5nO1xuXG4gIHByaXZhdGUgX2Rpc2FibGVkOiBib29sZWFuO1xuXG4gIHByaXZhdGUgX2Rpc21pc3NPbkJsdXI6IGJvb2xlYW47XG5cbiAgcHJpdmF0ZSBfaG9yaXpvbnRhbEFsaWdubWVudDogU2t5RHJvcGRvd25Ib3Jpem9udGFsQWxpZ25tZW50O1xuXG4gIHByaXZhdGUgX2lzT3BlbiA9IGZhbHNlO1xuXG4gIHByaXZhdGUgX21lbnVDb250YWluZXJFbGVtZW50UmVmOiBFbGVtZW50UmVmO1xuXG4gIHByaXZhdGUgX3RyaWdnZXI6IFNreURyb3Bkb3duVHJpZ2dlclR5cGU7XG5cbiAgcHJpdmF0ZSBfcG9zaXRpb25UaW1lb3V0OiBudW1iZXI7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBjaGFuZ2VEZXRlY3RvcjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgcHJpdmF0ZSBhZmZpeFNlcnZpY2U6IFNreUFmZml4U2VydmljZSxcbiAgICBwcml2YXRlIG92ZXJsYXlTZXJ2aWNlOiBTa3lPdmVybGF5U2VydmljZSxcbiAgICBAT3B0aW9uYWwoKSBwcml2YXRlIHRoZW1lU3ZjPzogU2t5VGhlbWVTZXJ2aWNlXG4gICkge31cblxuICBwdWJsaWMgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5hZGRFdmVudExpc3RlbmVycygpO1xuXG4gICAgdGhpcy5tZXNzYWdlU3RyZWFtXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5uZ1Vuc3Vic2NyaWJlKSlcbiAgICAgIC5zdWJzY3JpYmUoKG1lc3NhZ2U6IFNreURyb3Bkb3duTWVzc2FnZSkgPT4ge1xuICAgICAgICB0aGlzLmhhbmRsZUluY29taW5nTWVzc2FnZXMobWVzc2FnZSk7XG4gICAgICB9KTtcblxuICAgIC8vIExvYWQgcHJvcGVyIGljb25zIG9uIHRoZW1lIGNoYW5nZS5cbiAgICB0aGlzLnRoZW1lU3ZjPy5zZXR0aW5nc0NoYW5nZVxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMubmdVbnN1YnNjcmliZSkpXG4gICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgdGhpcy5jaGFuZ2VEZXRlY3Rvci5tYXJrRm9yQ2hlY2soKTtcbiAgICAgIH0pO1xuICB9XG5cbiAgcHVibGljIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuZGVzdHJveUFmZml4ZXIoKTtcbiAgICB0aGlzLmRlc3Ryb3lPdmVybGF5KCk7XG4gICAgY2xlYXJUaW1lb3V0KHRoaXMuX3Bvc2l0aW9uVGltZW91dCk7XG5cbiAgICB0aGlzLm5nVW5zdWJzY3JpYmUubmV4dCgpO1xuICAgIHRoaXMubmdVbnN1YnNjcmliZS5jb21wbGV0ZSgpO1xuICAgIHRoaXMubmdVbnN1YnNjcmliZSA9IHVuZGVmaW5lZDtcbiAgfVxuXG4gIHByaXZhdGUgYWRkRXZlbnRMaXN0ZW5lcnMoKTogdm9pZCB7XG4gICAgY29uc3QgYnV0dG9uRWxlbWVudCA9IHRoaXMudHJpZ2dlckJ1dHRvbi5uYXRpdmVFbGVtZW50O1xuXG4gICAgb2JzZXJ2YWJsZUZyb21FdmVudChidXR0b25FbGVtZW50LCAnY2xpY2snKVxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMubmdVbnN1YnNjcmliZSkpXG4gICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgaWYgKHRoaXMuaXNPcGVuKSB7XG4gICAgICAgICAgdGhpcy5zZW5kTWVzc2FnZShTa3lEcm9wZG93bk1lc3NhZ2VUeXBlLkNsb3NlKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aGlzLnNlbmRNZXNzYWdlKFNreURyb3Bkb3duTWVzc2FnZVR5cGUuT3Blbik7XG4gICAgICAgICAgLy8gV2FpdCBmb3IgZHJvcGRvd24gdG8gb3BlbiwgdGhlbiBzZXQgZm9jdXMgb24gZmlyc3QgaXRlbS5cbiAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuc2VuZE1lc3NhZ2UoU2t5RHJvcGRvd25NZXNzYWdlVHlwZS5Gb2N1c0ZpcnN0SXRlbSk7XG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuXG4gICAgb2JzZXJ2YWJsZUZyb21FdmVudChidXR0b25FbGVtZW50LCAna2V5ZG93bicpXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5uZ1Vuc3Vic2NyaWJlKSlcbiAgICAgIC5zdWJzY3JpYmUoKGV2ZW50OiBLZXlib2FyZEV2ZW50KSA9PiB7XG4gICAgICAgIGNvbnN0IGtleSA9IGV2ZW50LmtleS50b0xvd2VyQ2FzZSgpO1xuXG4gICAgICAgIC8qIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTpzd2l0Y2gtZGVmYXVsdCAqL1xuICAgICAgICBzd2l0Y2ggKGtleSkge1xuICAgICAgICAgIGNhc2UgJ2VzY2FwZSc6XG4gICAgICAgICAgICAvKmlzdGFuYnVsIGlnbm9yZSBlbHNlKi9cbiAgICAgICAgICAgIGlmICh0aGlzLmlzT3Blbikge1xuICAgICAgICAgICAgICB0aGlzLnNlbmRNZXNzYWdlKFNreURyb3Bkb3duTWVzc2FnZVR5cGUuQ2xvc2UpO1xuICAgICAgICAgICAgICB0aGlzLnNlbmRNZXNzYWdlKFNreURyb3Bkb3duTWVzc2FnZVR5cGUuRm9jdXNUcmlnZ2VyQnV0dG9uKTtcbiAgICAgICAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgIGNhc2UgJ3RhYic6XG4gICAgICAgICAgICBpZiAodGhpcy5pc09wZW4gJiYgdGhpcy5kaXNtaXNzT25CbHVyKSB7XG4gICAgICAgICAgICAgIHRoaXMuc2VuZE1lc3NhZ2UoU2t5RHJvcGRvd25NZXNzYWdlVHlwZS5DbG9zZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgIGNhc2UgJ2Fycm93dXAnOlxuICAgICAgICAgIGNhc2UgJ3VwJzpcbiAgICAgICAgICAgIGlmICghdGhpcy5pc09wZW4pIHtcbiAgICAgICAgICAgICAgdGhpcy5zZW5kTWVzc2FnZShTa3lEcm9wZG93bk1lc3NhZ2VUeXBlLk9wZW4pO1xuICAgICAgICAgICAgICB0aGlzLnNlbmRNZXNzYWdlKFNreURyb3Bkb3duTWVzc2FnZVR5cGUuRm9jdXNMYXN0SXRlbSk7XG4gICAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICBjYXNlICdlbnRlcic6XG4gICAgICAgICAgY2FzZSAnYXJyb3dkb3duJzpcbiAgICAgICAgICBjYXNlICdkb3duJzpcbiAgICAgICAgICBjYXNlICcgJzogLy8gU3BhY2ViYXIuXG4gICAgICAgICAgICAvKmlzdGFuYnVsIGlnbm9yZSBlbHNlKi9cbiAgICAgICAgICAgIGlmICghdGhpcy5pc09wZW4pIHtcbiAgICAgICAgICAgICAgdGhpcy5zZW5kTWVzc2FnZShTa3lEcm9wZG93bk1lc3NhZ2VUeXBlLk9wZW4pO1xuICAgICAgICAgICAgICB0aGlzLnNlbmRNZXNzYWdlKFNreURyb3Bkb3duTWVzc2FnZVR5cGUuRm9jdXNGaXJzdEl0ZW0pO1xuICAgICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICB9KTtcblxuICAgIG9ic2VydmFibGVGcm9tRXZlbnQoYnV0dG9uRWxlbWVudCwgJ21vdXNlZW50ZXInKVxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMubmdVbnN1YnNjcmliZSkpXG4gICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgdGhpcy5pc01vdXNlRW50ZXIgPSB0cnVlO1xuICAgICAgICBpZiAodGhpcy50cmlnZ2VyID09PSAnaG92ZXInKSB7XG4gICAgICAgICAgdGhpcy5zZW5kTWVzc2FnZShTa3lEcm9wZG93bk1lc3NhZ2VUeXBlLk9wZW4pO1xuICAgICAgICB9XG4gICAgICB9KTtcblxuICAgIG9ic2VydmFibGVGcm9tRXZlbnQoYnV0dG9uRWxlbWVudCwgJ21vdXNlbGVhdmUnKVxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMubmdVbnN1YnNjcmliZSkpXG4gICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgdGhpcy5pc01vdXNlRW50ZXIgPSBmYWxzZTtcbiAgICAgICAgaWYgKHRoaXMudHJpZ2dlciA9PT0gJ2hvdmVyJykge1xuICAgICAgICAgIC8vIEFsbG93IHRoZSBkcm9wZG93biBtZW51IHRvIHNldCBpc01vdXNlRW50ZXIgYmVmb3JlIGNoZWNraW5nIGlmIHRoZSBjbG9zZSBhY3Rpb25cbiAgICAgICAgICAvLyBzaG91bGQgYmUgdGFrZW4uXG4gICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICBpZiAoIXRoaXMuaXNNb3VzZUVudGVyKSB7XG4gICAgICAgICAgICAgIHRoaXMuc2VuZE1lc3NhZ2UoU2t5RHJvcGRvd25NZXNzYWdlVHlwZS5DbG9zZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBjcmVhdGVPdmVybGF5KCk6IHZvaWQge1xuICAgIGlmICh0aGlzLm92ZXJsYXkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBvdmVybGF5ID0gdGhpcy5vdmVybGF5U2VydmljZS5jcmVhdGUoe1xuICAgICAgZW5hYmxlU2Nyb2xsOiB0cnVlLFxuICAgICAgZW5hYmxlUG9pbnRlckV2ZW50czogdHJ1ZSxcbiAgICB9KTtcblxuICAgIG92ZXJsYXkuYXR0YWNoVGVtcGxhdGUodGhpcy5tZW51Q29udGFpbmVyVGVtcGxhdGVSZWYpO1xuXG4gICAgb3ZlcmxheS5iYWNrZHJvcENsaWNrLnBpcGUodGFrZVVudGlsKHRoaXMubmdVbnN1YnNjcmliZSkpLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICBpZiAodGhpcy5kaXNtaXNzT25CbHVyKSB7XG4gICAgICAgIHRoaXMuc2VuZE1lc3NhZ2UoU2t5RHJvcGRvd25NZXNzYWdlVHlwZS5DbG9zZSk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICB0aGlzLm92ZXJsYXkgPSBvdmVybGF5O1xuICB9XG5cbiAgcHJpdmF0ZSBkZXN0cm95QWZmaXhlcigpOiB2b2lkIHtcbiAgICAvKmlzdGFuYnVsIGlnbm9yZSBlbHNlKi9cbiAgICBpZiAodGhpcy5hZmZpeGVyKSB7XG4gICAgICB0aGlzLmFmZml4ZXIuZGVzdHJveSgpO1xuICAgICAgdGhpcy5hZmZpeGVyID0gdW5kZWZpbmVkO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgZGVzdHJveU92ZXJsYXkoKTogdm9pZCB7XG4gICAgLyppc3RhbmJ1bCBpZ25vcmUgZWxzZSovXG4gICAgaWYgKHRoaXMub3ZlcmxheSkge1xuICAgICAgdGhpcy5vdmVybGF5U2VydmljZS5jbG9zZSh0aGlzLm92ZXJsYXkpO1xuICAgICAgdGhpcy5vdmVybGF5ID0gdW5kZWZpbmVkO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgY3JlYXRlQWZmaXhlcigpOiB2b2lkIHtcbiAgICBjb25zdCBhZmZpeGVyID0gdGhpcy5hZmZpeFNlcnZpY2UuY3JlYXRlQWZmaXhlcihcbiAgICAgIHRoaXMubWVudUNvbnRhaW5lckVsZW1lbnRSZWZcbiAgICApO1xuXG4gICAgYWZmaXhlci5wbGFjZW1lbnRDaGFuZ2VcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLm5nVW5zdWJzY3JpYmUpKVxuICAgICAgLnN1YnNjcmliZSgoY2hhbmdlKSA9PiB7XG4gICAgICAgIHRoaXMuaXNWaXNpYmxlID0gY2hhbmdlLnBsYWNlbWVudCAhPT0gbnVsbDtcbiAgICAgICAgdGhpcy5jaGFuZ2VEZXRlY3Rvci5tYXJrRm9yQ2hlY2soKTtcbiAgICAgIH0pO1xuXG4gICAgdGhpcy5hZmZpeGVyID0gYWZmaXhlcjtcbiAgfVxuXG4gIHByaXZhdGUgaGFuZGxlSW5jb21pbmdNZXNzYWdlcyhtZXNzYWdlOiBTa3lEcm9wZG93bk1lc3NhZ2UpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuZGlzYWJsZWQpIHtcbiAgICAgIC8qIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTpzd2l0Y2gtZGVmYXVsdCAqL1xuICAgICAgc3dpdGNoIChtZXNzYWdlLnR5cGUpIHtcbiAgICAgICAgY2FzZSBTa3lEcm9wZG93bk1lc3NhZ2VUeXBlLk9wZW46XG4gICAgICAgICAgdGhpcy5pc09wZW4gPSB0cnVlO1xuICAgICAgICAgIHRoaXMucG9zaXRpb25Ecm9wZG93bk1lbnUoKTtcbiAgICAgICAgICBicmVhaztcblxuICAgICAgICBjYXNlIFNreURyb3Bkb3duTWVzc2FnZVR5cGUuQ2xvc2U6XG4gICAgICAgICAgdGhpcy5pc09wZW4gPSBmYWxzZTtcbiAgICAgICAgICB0aGlzLmRlc3Ryb3lPdmVybGF5KCk7XG4gICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgY2FzZSBTa3lEcm9wZG93bk1lc3NhZ2VUeXBlLlJlcG9zaXRpb246XG4gICAgICAgICAgLy8gT25seSByZXBvc2l0aW9uIHRoZSBkcm9wZG93biBpZiBpdCBpcyBhbHJlYWR5IG9wZW4uXG4gICAgICAgICAgLyogaXN0YW5idWwgaWdub3JlIGVsc2UgKi9cbiAgICAgICAgICBpZiAodGhpcy5pc09wZW4gJiYgdGhpcy5hZmZpeGVyKSB7XG4gICAgICAgICAgICB0aGlzLmFmZml4ZXIucmVhZmZpeCgpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBicmVhaztcblxuICAgICAgICBjYXNlIFNreURyb3Bkb3duTWVzc2FnZVR5cGUuRm9jdXNUcmlnZ2VyQnV0dG9uOlxuICAgICAgICAgIHRoaXMudHJpZ2dlckJ1dHRvbi5uYXRpdmVFbGVtZW50LmZvY3VzKCk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBzZW5kTWVzc2FnZSh0eXBlOiBTa3lEcm9wZG93bk1lc3NhZ2VUeXBlKTogdm9pZCB7XG4gICAgdGhpcy5tZXNzYWdlU3RyZWFtLm5leHQoeyB0eXBlIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBwb3NpdGlvbkRyb3Bkb3duTWVudSgpOiB2b2lkIHtcbiAgICB0aGlzLmlzVmlzaWJsZSA9IGZhbHNlO1xuICAgIHRoaXMuY3JlYXRlT3ZlcmxheSgpO1xuICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3IubWFya0ZvckNoZWNrKCk7XG5cbiAgICAvLyBFeHBsaWNpdGx5IGRlY2xhcmUgdGhlIGBzZXRUaW1lb3V0YCBmcm9tIHRoZSBgd2luZG93YCBvYmplY3QgaW4gb3JkZXIgdG8gdXNlIHRoZSBET00gdHlwaW5nc1xuICAgIC8vIGR1cmluZyBhIHVuaXQgdGVzdCAoaW5zdGVhZCBvZiBjb25mdXNpbmcgdGhpcyB3aXRoIE5vZGUncyBgc2V0VGltZW91dGApLlxuICAgIHRoaXMuX3Bvc2l0aW9uVGltZW91dCA9IHdpbmRvdy5zZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIHRoaXMuYWZmaXhlci5hZmZpeFRvKHRoaXMudHJpZ2dlckJ1dHRvbi5uYXRpdmVFbGVtZW50LCB7XG4gICAgICAgIGF1dG9GaXRDb250ZXh0OiBTa3lBZmZpeEF1dG9GaXRDb250ZXh0LlZpZXdwb3J0LFxuICAgICAgICBlbmFibGVBdXRvRml0OiB0cnVlLFxuICAgICAgICBob3Jpem9udGFsQWxpZ25tZW50OiBwYXJzZUFmZml4SG9yaXpvbnRhbEFsaWdubWVudChcbiAgICAgICAgICB0aGlzLmhvcml6b250YWxBbGlnbm1lbnRcbiAgICAgICAgKSxcbiAgICAgICAgaXNTdGlja3k6IHRydWUsXG4gICAgICAgIHBsYWNlbWVudDogJ2JlbG93JyxcbiAgICAgIH0pO1xuXG4gICAgICB0aGlzLmlzVmlzaWJsZSA9IHRydWU7XG4gICAgICB0aGlzLmNoYW5nZURldGVjdG9yLm1hcmtGb3JDaGVjaygpO1xuICAgIH0pO1xuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwic2t5LWRyb3Bkb3duXCI+XG4gIDxidXR0b25cbiAgICBjbGFzcz1cInNreS1idG4gc2t5LWRyb3Bkb3duLWJ1dHRvblwiXG4gICAgdHlwZT1cImJ1dHRvblwiXG4gICAgW2F0dHIuYXJpYS1leHBhbmRlZF09XCJpc09wZW5cIlxuICAgIFthdHRyLmFyaWEtY29udHJvbHNdPVwiaXNPcGVuID8gbWVudUlkIDogbnVsbFwiXG4gICAgW2F0dHIuYXJpYS1oYXNwb3B1cF09XCJtZW51QXJpYVJvbGVcIlxuICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiXG4gICAgICBsYWJlbCB8fCAoJ3NreXV4X2Ryb3Bkb3duX2NvbnRleHRfbWVudV9kZWZhdWx0X2xhYmVsJyB8IHNreUxpYlJlc291cmNlcylcbiAgICBcIlxuICAgIFthdHRyLnRpdGxlXT1cInRpdGxlXCJcbiAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxuICAgIFtuZ0NsYXNzXT1cIltcbiAgICAgICdza3ktZHJvcGRvd24tYnV0dG9uLXR5cGUtJyArIGJ1dHRvblR5cGUsXG4gICAgICAnc2t5LWJ0bi0nICsgYnV0dG9uU3R5bGVcbiAgICBdXCJcbiAgICAjdHJpZ2dlckJ1dHRvblxuICA+XG4gICAgPG5nLWNvbnRhaW5lciBbbmdTd2l0Y2hdPVwiYnV0dG9uVHlwZVwiPlxuICAgICAgPG5nLXRlbXBsYXRlIG5nU3dpdGNoQ2FzZT1cImNvbnRleHQtbWVudVwiPlxuICAgICAgICA8c2t5LWljb24gKnNreVRoZW1lSWY9XCInZGVmYXVsdCdcIiBpY29uPVwiZWxsaXBzaXMtaFwiPjwvc2t5LWljb24+XG4gICAgICAgIDxza3ktaWNvblxuICAgICAgICAgICpza3lUaGVtZUlmPVwiJ21vZGVybidcIlxuICAgICAgICAgIGljb249XCJlbGxpcHNpc1wiXG4gICAgICAgICAgaWNvblR5cGU9XCJza3l1eFwiXG4gICAgICAgID48L3NreS1pY29uPlxuICAgICAgPC9uZy10ZW1wbGF0ZT5cblxuICAgICAgPG5nLXRlbXBsYXRlIG5nU3dpdGNoRGVmYXVsdD5cbiAgICAgICAgPGRpdlxuICAgICAgICAgICpuZ0lmPVwiYnV0dG9uVHlwZSA9PT0gJ3NlbGVjdCcgfHwgYnV0dG9uVHlwZSA9PT0gJ3RhYicgfHwgIWJ1dHRvblR5cGVcIlxuICAgICAgICAgIGNsYXNzPVwic2t5LWRyb3Bkb3duLWJ1dHRvbi1jb250YWluZXJcIlxuICAgICAgICA+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cInNreS1kcm9wZG93bi1idXR0b24tY29udGVudC1jb250YWluZXJcIj5cbiAgICAgICAgICAgIDxuZy1jb250ZW50IHNlbGVjdD1cInNreS1kcm9wZG93bi1idXR0b25cIj4gPC9uZy1jb250ZW50PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJza3ktZHJvcGRvd24tYnV0dG9uLWljb24tY29udGFpbmVyXCI+XG4gICAgICAgICAgICA8c2t5LWljb25cbiAgICAgICAgICAgICAgKnNreVRoZW1lSWY9XCInZGVmYXVsdCdcIlxuICAgICAgICAgICAgICBjbGFzcz1cInNreS1kcm9wZG93bi1jYXJldFwiXG4gICAgICAgICAgICAgIGljb249XCJjYXJldC1kb3duXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgIDwvc2t5LWljb24+XG4gICAgICAgICAgICA8c2t5LWljb25cbiAgICAgICAgICAgICAgKnNreVRoZW1lSWY9XCInbW9kZXJuJ1wiXG4gICAgICAgICAgICAgIGNsYXNzPVwic2t5LWRyb3Bkb3duLWNhcmV0XCJcbiAgICAgICAgICAgICAgaWNvbj1cImNoZXZyb24tZG93blwiXG4gICAgICAgICAgICAgIGljb25UeXBlPVwic2t5dXhcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgPC9za3ktaWNvbj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXZcbiAgICAgICAgICAqbmdJZj1cImJ1dHRvblR5cGUgIT09ICdzZWxlY3QnICYmIGJ1dHRvblR5cGUgIT09ICd0YWInICYmIGJ1dHRvblR5cGVcIlxuICAgICAgICA+XG4gICAgICAgICAgPHNreS1pY29uIFtpY29uXT1cImJ1dHRvblR5cGVcIiBzaXplPVwibGdcIj48L3NreS1pY29uPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgPC9uZy1jb250YWluZXI+XG4gIDwvYnV0dG9uPlxuPC9kaXY+XG5cbjxuZy10ZW1wbGF0ZSAjbWVudUNvbnRhaW5lclRlbXBsYXRlUmVmPlxuICA8ZGl2XG4gICAgY2xhc3M9XCJza3ktZHJvcGRvd24tbWVudS1jb250YWluZXJcIlxuICAgIFtjbGFzcy5oaWRkZW5dPVwiIWlzVmlzaWJsZVwiXG4gICAgI21lbnVDb250YWluZXJFbGVtZW50UmVmXG4gID5cbiAgICA8bmctY29udGVudCBzZWxlY3Q9XCJza3ktZHJvcGRvd24tbWVudVwiPjwvbmctY29udGVudD5cbiAgPC9kaXY+XG48L25nLXRlbXBsYXRlPlxuIl19
@@ -0,0 +1,60 @@
1
+ import { CommonModule } from '@angular/common';
2
+ import { NgModule } from '@angular/core';
3
+ import { SkyAffixModule, SkyOverlayModule } from '@skyux/core';
4
+ import { SkyIconModule } from '@skyux/indicators';
5
+ import { SkyThemeModule } from '@skyux/theme';
6
+ import { SkyPopoversResourcesModule } from '../shared/sky-popovers-resources.module';
7
+ import { SkyDropdownButtonComponent } from './dropdown-button.component';
8
+ import { SkyDropdownItemComponent } from './dropdown-item.component';
9
+ import { SkyDropdownMenuComponent } from './dropdown-menu.component';
10
+ import { SkyDropdownComponent } from './dropdown.component';
11
+ import * as i0 from "@angular/core";
12
+ export class SkyDropdownModule {
13
+ }
14
+ SkyDropdownModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.7", ngImport: i0, type: SkyDropdownModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
15
+ SkyDropdownModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.2.7", ngImport: i0, type: SkyDropdownModule, declarations: [SkyDropdownButtonComponent,
16
+ SkyDropdownComponent,
17
+ SkyDropdownItemComponent,
18
+ SkyDropdownMenuComponent], imports: [CommonModule,
19
+ SkyAffixModule,
20
+ SkyIconModule,
21
+ SkyOverlayModule,
22
+ SkyPopoversResourcesModule,
23
+ SkyThemeModule], exports: [SkyDropdownButtonComponent,
24
+ SkyDropdownComponent,
25
+ SkyDropdownItemComponent,
26
+ SkyDropdownMenuComponent] });
27
+ SkyDropdownModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.2.7", ngImport: i0, type: SkyDropdownModule, imports: [[
28
+ CommonModule,
29
+ SkyAffixModule,
30
+ SkyIconModule,
31
+ SkyOverlayModule,
32
+ SkyPopoversResourcesModule,
33
+ SkyThemeModule,
34
+ ]] });
35
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.7", ngImport: i0, type: SkyDropdownModule, decorators: [{
36
+ type: NgModule,
37
+ args: [{
38
+ declarations: [
39
+ SkyDropdownButtonComponent,
40
+ SkyDropdownComponent,
41
+ SkyDropdownItemComponent,
42
+ SkyDropdownMenuComponent,
43
+ ],
44
+ imports: [
45
+ CommonModule,
46
+ SkyAffixModule,
47
+ SkyIconModule,
48
+ SkyOverlayModule,
49
+ SkyPopoversResourcesModule,
50
+ SkyThemeModule,
51
+ ],
52
+ exports: [
53
+ SkyDropdownButtonComponent,
54
+ SkyDropdownComponent,
55
+ SkyDropdownItemComponent,
56
+ SkyDropdownMenuComponent,
57
+ ],
58
+ }]
59
+ }] });
60
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJvcGRvd24ubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21wb25lbnRzL3BvcG92ZXJzL3NyYy9saWIvbW9kdWxlcy9kcm9wZG93bi9kcm9wZG93bi5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUFFLGNBQWMsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUMvRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDbEQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUU5QyxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSx5Q0FBeUMsQ0FBQztBQUVyRixPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUN6RSxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUNyRSxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUNyRSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQzs7QUF3QjVELE1BQU0sT0FBTyxpQkFBaUI7OzhHQUFqQixpQkFBaUI7K0dBQWpCLGlCQUFpQixpQkFwQjFCLDBCQUEwQjtRQUMxQixvQkFBb0I7UUFDcEIsd0JBQXdCO1FBQ3hCLHdCQUF3QixhQUd4QixZQUFZO1FBQ1osY0FBYztRQUNkLGFBQWE7UUFDYixnQkFBZ0I7UUFDaEIsMEJBQTBCO1FBQzFCLGNBQWMsYUFHZCwwQkFBMEI7UUFDMUIsb0JBQW9CO1FBQ3BCLHdCQUF3QjtRQUN4Qix3QkFBd0I7K0dBR2YsaUJBQWlCLFlBZm5CO1lBQ1AsWUFBWTtZQUNaLGNBQWM7WUFDZCxhQUFhO1lBQ2IsZ0JBQWdCO1lBQ2hCLDBCQUEwQjtZQUMxQixjQUFjO1NBQ2Y7MkZBUVUsaUJBQWlCO2tCQXRCN0IsUUFBUTttQkFBQztvQkFDUixZQUFZLEVBQUU7d0JBQ1osMEJBQTBCO3dCQUMxQixvQkFBb0I7d0JBQ3BCLHdCQUF3Qjt3QkFDeEIsd0JBQXdCO3FCQUN6QjtvQkFDRCxPQUFPLEVBQUU7d0JBQ1AsWUFBWTt3QkFDWixjQUFjO3dCQUNkLGFBQWE7d0JBQ2IsZ0JBQWdCO3dCQUNoQiwwQkFBMEI7d0JBQzFCLGNBQWM7cUJBQ2Y7b0JBQ0QsT0FBTyxFQUFFO3dCQUNQLDBCQUEwQjt3QkFDMUIsb0JBQW9CO3dCQUNwQix3QkFBd0I7d0JBQ3hCLHdCQUF3QjtxQkFDekI7aUJBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFNreUFmZml4TW9kdWxlLCBTa3lPdmVybGF5TW9kdWxlIH0gZnJvbSAnQHNreXV4L2NvcmUnO1xuaW1wb3J0IHsgU2t5SWNvbk1vZHVsZSB9IGZyb20gJ0Bza3l1eC9pbmRpY2F0b3JzJztcbmltcG9ydCB7IFNreVRoZW1lTW9kdWxlIH0gZnJvbSAnQHNreXV4L3RoZW1lJztcblxuaW1wb3J0IHsgU2t5UG9wb3ZlcnNSZXNvdXJjZXNNb2R1bGUgfSBmcm9tICcuLi9zaGFyZWQvc2t5LXBvcG92ZXJzLXJlc291cmNlcy5tb2R1bGUnO1xuXG5pbXBvcnQgeyBTa3lEcm9wZG93bkJ1dHRvbkNvbXBvbmVudCB9IGZyb20gJy4vZHJvcGRvd24tYnV0dG9uLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBTa3lEcm9wZG93bkl0ZW1Db21wb25lbnQgfSBmcm9tICcuL2Ryb3Bkb3duLWl0ZW0uY29tcG9uZW50JztcbmltcG9ydCB7IFNreURyb3Bkb3duTWVudUNvbXBvbmVudCB9IGZyb20gJy4vZHJvcGRvd24tbWVudS5jb21wb25lbnQnO1xuaW1wb3J0IHsgU2t5RHJvcGRvd25Db21wb25lbnQgfSBmcm9tICcuL2Ryb3Bkb3duLmNvbXBvbmVudCc7XG5cbkBOZ01vZHVsZSh7XG4gIGRlY2xhcmF0aW9uczogW1xuICAgIFNreURyb3Bkb3duQnV0dG9uQ29tcG9uZW50LFxuICAgIFNreURyb3Bkb3duQ29tcG9uZW50LFxuICAgIFNreURyb3Bkb3duSXRlbUNvbXBvbmVudCxcbiAgICBTa3lEcm9wZG93bk1lbnVDb21wb25lbnQsXG4gIF0sXG4gIGltcG9ydHM6IFtcbiAgICBDb21tb25Nb2R1bGUsXG4gICAgU2t5QWZmaXhNb2R1bGUsXG4gICAgU2t5SWNvbk1vZHVsZSxcbiAgICBTa3lPdmVybGF5TW9kdWxlLFxuICAgIFNreVBvcG92ZXJzUmVzb3VyY2VzTW9kdWxlLFxuICAgIFNreVRoZW1lTW9kdWxlLFxuICBdLFxuICBleHBvcnRzOiBbXG4gICAgU2t5RHJvcGRvd25CdXR0b25Db21wb25lbnQsXG4gICAgU2t5RHJvcGRvd25Db21wb25lbnQsXG4gICAgU2t5RHJvcGRvd25JdGVtQ29tcG9uZW50LFxuICAgIFNreURyb3Bkb3duTWVudUNvbXBvbmVudCxcbiAgXSxcbn0pXG5leHBvcnQgY2xhc3MgU2t5RHJvcGRvd25Nb2R1bGUge31cbiJdfQ==
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJvcGRvd24taG9yaXpvbnRhbC1hbGlnbm1lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvcG9wb3ZlcnMvc3JjL2xpYi9tb2R1bGVzL2Ryb3Bkb3duL3R5cGVzL2Ryb3Bkb3duLWhvcml6b250YWwtYWxpZ25tZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBTa3lBZmZpeEhvcml6b250YWxBbGlnbm1lbnQgfSBmcm9tICdAc2t5dXgvY29yZSc7XG5cbmV4cG9ydCB0eXBlIFNreURyb3Bkb3duSG9yaXpvbnRhbEFsaWdubWVudCA9IFNreUFmZml4SG9yaXpvbnRhbEFsaWdubWVudDtcbiJdfQ==
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJvcGRvd24tbWVudS1jaGFuZ2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvcG9wb3ZlcnMvc3JjL2xpYi9tb2R1bGVzL2Ryb3Bkb3duL3R5cGVzL2Ryb3Bkb3duLW1lbnUtY2hhbmdlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBTa3lEcm9wZG93bkl0ZW1Db21wb25lbnQgfSBmcm9tICcuLi9kcm9wZG93bi1pdGVtLmNvbXBvbmVudCc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgU2t5RHJvcGRvd25NZW51Q2hhbmdlIHtcbiAgLyoqXG4gICAqIEluZGljYXRlcyB0aGUgYWN0aXZlIG1lbnUgaW5kZXguXG4gICAqL1xuICBhY3RpdmVJbmRleD86IG51bWJlcjtcblxuICAvKipcbiAgICogSW5kaWNhdGVzIHRoZSBpdGVtcyBpbiB0aGUgbWVudS5cbiAgICovXG4gIGl0ZW1zPzogU2t5RHJvcGRvd25JdGVtQ29tcG9uZW50W107XG5cbiAgLyoqXG4gICAqIEluZGljYXRlcyB0aGUgc2VsZWN0ZWQgaXRlbSBpbiB0aGUgbWVudS5cbiAgICovXG4gIHNlbGVjdGVkSXRlbT86IFNreURyb3Bkb3duSXRlbUNvbXBvbmVudDtcbn1cbiJdfQ==
@@ -0,0 +1,37 @@
1
+ export var SkyDropdownMessageType;
2
+ (function (SkyDropdownMessageType) {
3
+ /**
4
+ * Opens the dropdown menu.
5
+ */
6
+ SkyDropdownMessageType[SkyDropdownMessageType["Open"] = 0] = "Open";
7
+ /**
8
+ * Closes the dropdown menu.
9
+ */
10
+ SkyDropdownMessageType[SkyDropdownMessageType["Close"] = 1] = "Close";
11
+ /**
12
+ * Puts focus on the dropdown button.
13
+ */
14
+ SkyDropdownMessageType[SkyDropdownMessageType["FocusTriggerButton"] = 2] = "FocusTriggerButton";
15
+ /**
16
+ * Puts focus on the next item in the dropdown menu.
17
+ */
18
+ SkyDropdownMessageType[SkyDropdownMessageType["FocusNextItem"] = 3] = "FocusNextItem";
19
+ /**
20
+ * Puts focus on the previous item in the dropdown menu.
21
+ */
22
+ SkyDropdownMessageType[SkyDropdownMessageType["FocusPreviousItem"] = 4] = "FocusPreviousItem";
23
+ /**
24
+ * Repositions the dropdown menu next to the dropdown button. This is useful for when the
25
+ * dropdown menu's width and height change while it is open.
26
+ */
27
+ SkyDropdownMessageType[SkyDropdownMessageType["Reposition"] = 5] = "Reposition";
28
+ /**
29
+ * Puts focus on the first item in the dropdown menu.
30
+ */
31
+ SkyDropdownMessageType[SkyDropdownMessageType["FocusFirstItem"] = 6] = "FocusFirstItem";
32
+ /**
33
+ * Puts focus on the last item in the dropdown menu.
34
+ */
35
+ SkyDropdownMessageType[SkyDropdownMessageType["FocusLastItem"] = 7] = "FocusLastItem";
36
+ })(SkyDropdownMessageType || (SkyDropdownMessageType = {}));
37
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJvcGRvd24tbWVzc2FnZS10eXBlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21wb25lbnRzL3BvcG92ZXJzL3NyYy9saWIvbW9kdWxlcy9kcm9wZG93bi90eXBlcy9kcm9wZG93bi1tZXNzYWdlLXR5cGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTSxDQUFOLElBQVksc0JBeUNYO0FBekNELFdBQVksc0JBQXNCO0lBQ2hDOztPQUVHO0lBQ0gsbUVBQVEsQ0FBQTtJQUVSOztPQUVHO0lBQ0gscUVBQVMsQ0FBQTtJQUVUOztPQUVHO0lBQ0gsK0ZBQXNCLENBQUE7SUFFdEI7O09BRUc7SUFDSCxxRkFBaUIsQ0FBQTtJQUVqQjs7T0FFRztJQUNILDZGQUFxQixDQUFBO0lBRXJCOzs7T0FHRztJQUNILCtFQUFjLENBQUE7SUFFZDs7T0FFRztJQUNILHVGQUFrQixDQUFBO0lBRWxCOztPQUVHO0lBQ0gscUZBQWlCLENBQUE7QUFDbkIsQ0FBQyxFQXpDVyxzQkFBc0IsS0FBdEIsc0JBQXNCLFFBeUNqQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBlbnVtIFNreURyb3Bkb3duTWVzc2FnZVR5cGUge1xuICAvKipcbiAgICogT3BlbnMgdGhlIGRyb3Bkb3duIG1lbnUuXG4gICAqL1xuICBPcGVuID0gMCxcblxuICAvKipcbiAgICogIENsb3NlcyB0aGUgZHJvcGRvd24gbWVudS5cbiAgICovXG4gIENsb3NlID0gMSxcblxuICAvKipcbiAgICogUHV0cyBmb2N1cyBvbiB0aGUgZHJvcGRvd24gYnV0dG9uLlxuICAgKi9cbiAgRm9jdXNUcmlnZ2VyQnV0dG9uID0gMixcblxuICAvKipcbiAgICogUHV0cyBmb2N1cyBvbiB0aGUgbmV4dCBpdGVtIGluIHRoZSBkcm9wZG93biBtZW51LlxuICAgKi9cbiAgRm9jdXNOZXh0SXRlbSA9IDMsXG5cbiAgLyoqXG4gICAqIFB1dHMgZm9jdXMgb24gdGhlIHByZXZpb3VzIGl0ZW0gaW4gdGhlIGRyb3Bkb3duIG1lbnUuXG4gICAqL1xuICBGb2N1c1ByZXZpb3VzSXRlbSA9IDQsXG5cbiAgLyoqXG4gICAqIFJlcG9zaXRpb25zIHRoZSBkcm9wZG93biBtZW51IG5leHQgdG8gdGhlIGRyb3Bkb3duIGJ1dHRvbi4gVGhpcyBpcyB1c2VmdWwgZm9yIHdoZW4gdGhlXG4gICAqIGRyb3Bkb3duIG1lbnUncyB3aWR0aCBhbmQgaGVpZ2h0IGNoYW5nZSB3aGlsZSBpdCBpcyBvcGVuLlxuICAgKi9cbiAgUmVwb3NpdGlvbiA9IDUsXG5cbiAgLyoqXG4gICAqIFB1dHMgZm9jdXMgb24gdGhlIGZpcnN0IGl0ZW0gaW4gdGhlIGRyb3Bkb3duIG1lbnUuXG4gICAqL1xuICBGb2N1c0ZpcnN0SXRlbSA9IDYsXG5cbiAgLyoqXG4gICAqIFB1dHMgZm9jdXMgb24gdGhlIGxhc3QgaXRlbSBpbiB0aGUgZHJvcGRvd24gbWVudS5cbiAgICovXG4gIEZvY3VzTGFzdEl0ZW0gPSA3LFxufVxuIl19
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJvcGRvd24tbWVzc2FnZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tcG9uZW50cy9wb3BvdmVycy9zcmMvbGliL21vZHVsZXMvZHJvcGRvd24vdHlwZXMvZHJvcGRvd24tbWVzc2FnZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgU2t5RHJvcGRvd25NZXNzYWdlVHlwZSB9IGZyb20gJy4vZHJvcGRvd24tbWVzc2FnZS10eXBlJztcblxuZXhwb3J0IGludGVyZmFjZSBTa3lEcm9wZG93bk1lc3NhZ2Uge1xuICAvKipcbiAgICogSW5kaWNhdGVzIHRoZSB0eXBlIG9mIG1lc3NhZ2UgdG8gc2VuZC5cbiAgICovXG4gIHR5cGU/OiBTa3lEcm9wZG93bk1lc3NhZ2VUeXBlO1xufVxuIl19
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJvcGRvd24tdHJpZ2dlci10eXBlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21wb25lbnRzL3BvcG92ZXJzL3NyYy9saWIvbW9kdWxlcy9kcm9wZG93bi90eXBlcy9kcm9wZG93bi10cmlnZ2VyLXR5cGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCB0eXBlIFNreURyb3Bkb3duVHJpZ2dlclR5cGUgPSAnY2xpY2snIHwgJ2hvdmVyJztcbiJdfQ==