@skyux/popovers 5.0.2 → 5.5.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.
- package/README.md +6 -4
- package/bundles/skyux-popovers-testing.umd.js +8 -8
- package/bundles/skyux-popovers.umd.js +43 -39
- package/documentation.json +241 -44
- package/esm2015/index.js +23 -0
- package/esm2015/index.js.map +1 -0
- package/esm2015/lib/modules/dropdown/dropdown-button.component.js +14 -0
- package/esm2015/lib/modules/dropdown/dropdown-button.component.js.map +1 -0
- package/esm2015/lib/modules/dropdown/dropdown-extensions.js +14 -0
- package/esm2015/lib/modules/dropdown/dropdown-extensions.js.map +1 -0
- package/esm2015/lib/modules/dropdown/dropdown-item.component.js +72 -0
- package/esm2015/lib/modules/dropdown/dropdown-item.component.js.map +1 -0
- package/esm2015/lib/modules/dropdown/dropdown-menu.component.js +307 -0
- package/esm2015/lib/modules/dropdown/dropdown-menu.component.js.map +1 -0
- package/esm2015/lib/modules/dropdown/dropdown.component.js +360 -0
- package/esm2015/lib/modules/dropdown/dropdown.component.js.map +1 -0
- package/esm2015/lib/modules/dropdown/dropdown.module.js +60 -0
- package/esm2015/lib/modules/dropdown/dropdown.module.js.map +1 -0
- package/esm2015/lib/modules/dropdown/types/dropdown-horizontal-alignment.js +2 -0
- package/esm2015/lib/modules/dropdown/types/dropdown-horizontal-alignment.js.map +1 -0
- package/esm2015/lib/modules/dropdown/types/dropdown-menu-change.js +2 -0
- package/esm2015/lib/modules/dropdown/types/dropdown-menu-change.js.map +1 -0
- package/esm2015/lib/modules/dropdown/types/dropdown-message-type.js +37 -0
- package/esm2015/lib/modules/dropdown/types/dropdown-message-type.js.map +1 -0
- package/esm2015/lib/modules/dropdown/types/dropdown-message.js +2 -0
- package/esm2015/lib/modules/dropdown/types/dropdown-message.js.map +1 -0
- package/esm2015/lib/modules/dropdown/types/dropdown-trigger-type.js +2 -0
- package/esm2015/lib/modules/dropdown/types/dropdown-trigger-type.js.map +1 -0
- package/esm2015/lib/modules/popover/popover-adapter.service.js +74 -0
- package/esm2015/lib/modules/popover/popover-adapter.service.js.map +1 -0
- package/esm2015/lib/modules/popover/popover-animation-state.js +2 -0
- package/esm2015/lib/modules/popover/popover-animation-state.js.map +1 -0
- package/esm2015/lib/modules/popover/popover-animation.js +19 -0
- package/esm2015/lib/modules/popover/popover-animation.js.map +1 -0
- package/esm2015/lib/modules/popover/popover-content.component.js +268 -0
- package/esm2015/lib/modules/popover/popover-content.component.js.map +1 -0
- package/esm2015/lib/modules/popover/popover-context.js +10 -0
- package/esm2015/lib/modules/popover/popover-context.js.map +1 -0
- package/esm2015/lib/modules/popover/popover-extensions.js +29 -0
- package/esm2015/lib/modules/popover/popover-extensions.js.map +1 -0
- package/esm2015/lib/modules/popover/popover.component.js +203 -0
- package/esm2015/lib/modules/popover/popover.component.js.map +1 -0
- package/esm2015/lib/modules/popover/popover.directive.js +176 -0
- package/esm2015/lib/modules/popover/popover.directive.js.map +1 -0
- package/esm2015/lib/modules/popover/popover.module.js +56 -0
- package/esm2015/lib/modules/popover/popover.module.js.map +1 -0
- package/esm2015/lib/modules/popover/types/popover-adapter-arrow-coordinates.js +2 -0
- package/esm2015/lib/modules/popover/types/popover-adapter-arrow-coordinates.js.map +1 -0
- package/esm2015/lib/modules/popover/types/popover-adapter-elements.js +2 -0
- package/esm2015/lib/modules/popover/types/popover-adapter-elements.js.map +1 -0
- package/esm2015/lib/modules/popover/types/popover-alignment.js +2 -0
- package/esm2015/lib/modules/popover/types/popover-alignment.js.map +1 -0
- package/esm2015/lib/modules/popover/types/popover-message-type.js +24 -0
- package/esm2015/lib/modules/popover/types/popover-message-type.js.map +1 -0
- package/esm2015/lib/modules/popover/types/popover-message.js +2 -0
- package/esm2015/lib/modules/popover/types/popover-message.js.map +1 -0
- package/esm2015/lib/modules/popover/types/popover-placement.js +2 -0
- package/esm2015/lib/modules/popover/types/popover-placement.js.map +1 -0
- package/esm2015/lib/modules/popover/types/popover-position.js +2 -0
- package/esm2015/lib/modules/popover/types/popover-position.js.map +1 -0
- package/esm2015/lib/modules/popover/types/popover-trigger.js +2 -0
- package/esm2015/lib/modules/popover/types/popover-trigger.js.map +1 -0
- package/esm2015/lib/modules/shared/sky-popovers-resources.module.js +47 -0
- package/esm2015/lib/modules/shared/sky-popovers-resources.module.js.map +1 -0
- package/esm2015/skyux-popovers.js +2 -2
- package/esm2015/skyux-popovers.js.map +1 -0
- package/esm2015/testing/dropdown/dropdown-fixture.js +1 -1
- package/esm2015/testing/dropdown/dropdown-fixture.js.map +1 -0
- package/esm2015/testing/dropdown/dropdown-testing.module.js +5 -5
- package/esm2015/testing/dropdown/dropdown-testing.module.js.map +1 -0
- package/esm2015/testing/dropdown/popovers-fixture-dropdown-item.js +1 -1
- package/esm2015/testing/dropdown/popovers-fixture-dropdown-item.js.map +1 -0
- package/esm2015/testing/dropdown/popovers-fixture-dropdown-menu.js +1 -1
- package/esm2015/testing/dropdown/popovers-fixture-dropdown-menu.js.map +1 -0
- package/esm2015/testing/dropdown/popovers-fixture-dropdown.js +1 -1
- package/esm2015/testing/dropdown/popovers-fixture-dropdown.js.map +1 -0
- package/esm2015/testing/popover/popover-fixture.js +1 -1
- package/esm2015/testing/popover/popover-fixture.js.map +1 -0
- package/esm2015/testing/popover/popover-testing.module.js +5 -5
- package/esm2015/testing/popover/popover-testing.module.js.map +1 -0
- package/esm2015/testing/public-api.js +1 -1
- package/esm2015/testing/public-api.js.map +1 -0
- package/esm2015/testing/skyux-popovers-testing.js +1 -1
- package/esm2015/testing/skyux-popovers-testing.js.map +1 -0
- package/fesm2015/skyux-popovers-testing.js +8 -8
- package/fesm2015/skyux-popovers-testing.js.map +1 -1
- package/fesm2015/skyux-popovers.js +53 -49
- package/fesm2015/skyux-popovers.js.map +1 -1
- package/index.d.ts +20 -0
- package/{modules → lib/modules}/dropdown/dropdown-button.component.d.ts +0 -0
- package/{modules → lib/modules}/dropdown/dropdown-extensions.d.ts +0 -0
- package/{modules → lib/modules}/dropdown/dropdown-item.component.d.ts +0 -0
- package/{modules → lib/modules}/dropdown/dropdown-menu.component.d.ts +0 -0
- package/{modules → lib/modules}/dropdown/dropdown.component.d.ts +0 -0
- package/{modules → lib/modules}/dropdown/dropdown.module.d.ts +0 -0
- package/{modules → lib/modules}/dropdown/types/dropdown-horizontal-alignment.d.ts +0 -0
- package/{modules → lib/modules}/dropdown/types/dropdown-menu-change.d.ts +0 -0
- package/{modules → lib/modules}/dropdown/types/dropdown-message-type.d.ts +0 -0
- package/{modules → lib/modules}/dropdown/types/dropdown-message.d.ts +0 -0
- package/{modules → lib/modules}/dropdown/types/dropdown-trigger-type.d.ts +0 -0
- package/{modules → lib/modules}/popover/popover-adapter.service.d.ts +0 -0
- package/{modules → lib/modules}/popover/popover-animation-state.d.ts +0 -0
- package/{modules → lib/modules}/popover/popover-animation.d.ts +0 -0
- package/{modules → lib/modules}/popover/popover-content.component.d.ts +0 -0
- package/{modules → lib/modules}/popover/popover-context.d.ts +0 -0
- package/{modules → lib/modules}/popover/popover-extensions.d.ts +0 -0
- package/{modules → lib/modules}/popover/popover.component.d.ts +4 -1
- package/{modules → lib/modules}/popover/popover.directive.d.ts +2 -0
- package/{modules → lib/modules}/popover/popover.module.d.ts +0 -0
- package/{modules → lib/modules}/popover/types/popover-adapter-arrow-coordinates.d.ts +0 -0
- package/{modules → lib/modules}/popover/types/popover-adapter-elements.d.ts +0 -0
- package/{modules → lib/modules}/popover/types/popover-alignment.d.ts +0 -0
- package/{modules → lib/modules}/popover/types/popover-message-type.d.ts +0 -0
- package/{modules → lib/modules}/popover/types/popover-message.d.ts +0 -0
- package/{modules → lib/modules}/popover/types/popover-placement.d.ts +0 -0
- package/{modules → lib/modules}/popover/types/popover-position.d.ts +0 -0
- package/{modules → lib/modules}/popover/types/popover-trigger.d.ts +0 -0
- package/{modules → lib/modules}/shared/sky-popovers-resources.module.d.ts +0 -0
- package/package.json +23 -9
- package/skyux-popovers.d.ts +1 -1
- package/LICENSE +0 -21
- package/esm2015/modules/dropdown/dropdown-button.component.js +0 -14
- package/esm2015/modules/dropdown/dropdown-extensions.js +0 -14
- package/esm2015/modules/dropdown/dropdown-item.component.js +0 -72
- package/esm2015/modules/dropdown/dropdown-menu.component.js +0 -306
- package/esm2015/modules/dropdown/dropdown.component.js +0 -357
- package/esm2015/modules/dropdown/dropdown.module.js +0 -60
- package/esm2015/modules/dropdown/types/dropdown-horizontal-alignment.js +0 -2
- package/esm2015/modules/dropdown/types/dropdown-menu-change.js +0 -2
- package/esm2015/modules/dropdown/types/dropdown-message-type.js +0 -37
- package/esm2015/modules/dropdown/types/dropdown-message.js +0 -2
- package/esm2015/modules/dropdown/types/dropdown-trigger-type.js +0 -2
- package/esm2015/modules/popover/popover-adapter.service.js +0 -74
- package/esm2015/modules/popover/popover-animation-state.js +0 -2
- package/esm2015/modules/popover/popover-animation.js +0 -19
- package/esm2015/modules/popover/popover-content.component.js +0 -266
- package/esm2015/modules/popover/popover-context.js +0 -10
- package/esm2015/modules/popover/popover-extensions.js +0 -29
- package/esm2015/modules/popover/popover.component.js +0 -200
- package/esm2015/modules/popover/popover.directive.js +0 -175
- package/esm2015/modules/popover/popover.module.js +0 -56
- package/esm2015/modules/popover/types/popover-adapter-arrow-coordinates.js +0 -2
- package/esm2015/modules/popover/types/popover-adapter-elements.js +0 -2
- package/esm2015/modules/popover/types/popover-alignment.js +0 -2
- package/esm2015/modules/popover/types/popover-message-type.js +0 -24
- package/esm2015/modules/popover/types/popover-message.js +0 -2
- package/esm2015/modules/popover/types/popover-placement.js +0 -2
- package/esm2015/modules/popover/types/popover-position.js +0 -2
- package/esm2015/modules/popover/types/popover-trigger.js +0 -2
- package/esm2015/modules/shared/sky-popovers-resources.module.js +0 -47
- package/esm2015/public-api.js +0 -23
- package/public-api.d.ts +0 -20
|
@@ -1,357 +0,0 @@
|
|
|
1
|
-
import { ChangeDetectionStrategy, Component, ElementRef, Input, Optional, TemplateRef, ViewChild, } from '@angular/core';
|
|
2
|
-
import { SkyAffixAutoFitContext, } from '@skyux/core';
|
|
3
|
-
import { fromEvent as observableFromEvent, Subject } from 'rxjs';
|
|
4
|
-
import { takeUntil } from 'rxjs/operators';
|
|
5
|
-
import { SkyDropdownMessageType } from './types/dropdown-message-type';
|
|
6
|
-
import { parseAffixHorizontalAlignment } from './dropdown-extensions';
|
|
7
|
-
import * as i0 from "@angular/core";
|
|
8
|
-
import * as i1 from "@skyux/core";
|
|
9
|
-
import * as i2 from "@skyux/theme";
|
|
10
|
-
import * as i3 from "@skyux/indicators";
|
|
11
|
-
import * as i4 from "@angular/common";
|
|
12
|
-
import * as i5 from "@skyux/i18n";
|
|
13
|
-
export class SkyDropdownComponent {
|
|
14
|
-
constructor(changeDetector, affixService, overlayService, themeSvc) {
|
|
15
|
-
this.changeDetector = changeDetector;
|
|
16
|
-
this.affixService = affixService;
|
|
17
|
-
this.overlayService = overlayService;
|
|
18
|
-
this.themeSvc = themeSvc;
|
|
19
|
-
/**
|
|
20
|
-
* Provides an observable to send commands to the dropdown. The commands should respect
|
|
21
|
-
* the [[SkyDropdownMessage]] type.
|
|
22
|
-
*/
|
|
23
|
-
this.messageStream = new Subject();
|
|
24
|
-
this.isMouseEnter = false;
|
|
25
|
-
this.isVisible = false;
|
|
26
|
-
this.ngUnsubscribe = new Subject();
|
|
27
|
-
this._isOpen = false;
|
|
28
|
-
}
|
|
29
|
-
/**
|
|
30
|
-
* Specifies a background color for the dropdown button. Available values are `default` and
|
|
31
|
-
* `primary`. These values set the background color from the
|
|
32
|
-
* [secondary and primary button classes](https://developer.blackbaud.com/skyux/components/button) respectively.
|
|
33
|
-
* @default "default"
|
|
34
|
-
*/
|
|
35
|
-
set buttonStyle(value) {
|
|
36
|
-
this._buttonStyle = value;
|
|
37
|
-
}
|
|
38
|
-
get buttonStyle() {
|
|
39
|
-
return this._buttonStyle || 'default';
|
|
40
|
-
}
|
|
41
|
-
/**
|
|
42
|
-
* Specifies the type of button to render as the dropdown's trigger element. To display a button
|
|
43
|
-
* with text and a caret, specify `select` and then enter the button text in a
|
|
44
|
-
* `sky-dropdown-button` element. To display a round button with an ellipsis, specify
|
|
45
|
-
* `context-menu`. And to display a button with a [Font Awesome icon](http://fontawesome.io/icons/), specify the icon's class name.
|
|
46
|
-
* For example, to display the `fa-filter` icon, specify `filter`.
|
|
47
|
-
* @default "select"
|
|
48
|
-
*/
|
|
49
|
-
set buttonType(value) {
|
|
50
|
-
this._buttonType = value;
|
|
51
|
-
}
|
|
52
|
-
get buttonType() {
|
|
53
|
-
return this._buttonType || 'select';
|
|
54
|
-
}
|
|
55
|
-
/**
|
|
56
|
-
* Indicates whether to disable the dropdown button.
|
|
57
|
-
* @default false
|
|
58
|
-
*/
|
|
59
|
-
set disabled(value) {
|
|
60
|
-
this._disabled = value;
|
|
61
|
-
}
|
|
62
|
-
get disabled() {
|
|
63
|
-
return this._disabled || false;
|
|
64
|
-
}
|
|
65
|
-
/**
|
|
66
|
-
* Indicates whether to close the dropdown when users click away from the menu.
|
|
67
|
-
* @default true
|
|
68
|
-
*/
|
|
69
|
-
set dismissOnBlur(value) {
|
|
70
|
-
this._dismissOnBlur = value;
|
|
71
|
-
}
|
|
72
|
-
get dismissOnBlur() {
|
|
73
|
-
if (this._dismissOnBlur === undefined) {
|
|
74
|
-
return true;
|
|
75
|
-
}
|
|
76
|
-
return this._dismissOnBlur;
|
|
77
|
-
}
|
|
78
|
-
/**
|
|
79
|
-
* Specifies the horizontal alignment of the dropdown menu in relation to the dropdown button.
|
|
80
|
-
* @default "left"
|
|
81
|
-
*/
|
|
82
|
-
set horizontalAlignment(value) {
|
|
83
|
-
this._horizontalAlignment = value;
|
|
84
|
-
}
|
|
85
|
-
get horizontalAlignment() {
|
|
86
|
-
return this._horizontalAlignment || 'left';
|
|
87
|
-
}
|
|
88
|
-
/**
|
|
89
|
-
* Specifies how users interact with the dropdown button to expose the dropdown menu.
|
|
90
|
-
* We recommend the default `click` value because the `hover` value can pose
|
|
91
|
-
* [accessibility](https://developer.blackbaud.com/skyux/learn/accessibility) issues
|
|
92
|
-
* for users on touch devices such as phones and tablets.
|
|
93
|
-
* @deprecated We recommend against using this property. If you choose to use the deprecated
|
|
94
|
-
* `hover` value anyway, we recommend that you not use it in combination with the `title`
|
|
95
|
-
* property. (This property will be removed in the next major version release.)
|
|
96
|
-
* @default "click"
|
|
97
|
-
*/
|
|
98
|
-
set trigger(value) {
|
|
99
|
-
this._trigger = value;
|
|
100
|
-
}
|
|
101
|
-
get trigger() {
|
|
102
|
-
return this._trigger || 'click';
|
|
103
|
-
}
|
|
104
|
-
set isOpen(value) {
|
|
105
|
-
this._isOpen = value;
|
|
106
|
-
this.changeDetector.markForCheck();
|
|
107
|
-
}
|
|
108
|
-
get isOpen() {
|
|
109
|
-
return this._isOpen || false;
|
|
110
|
-
}
|
|
111
|
-
set menuContainerElementRef(value) {
|
|
112
|
-
if (value) {
|
|
113
|
-
this._menuContainerElementRef = value;
|
|
114
|
-
this.destroyAffixer();
|
|
115
|
-
this.createAffixer();
|
|
116
|
-
this.changeDetector.markForCheck();
|
|
117
|
-
}
|
|
118
|
-
}
|
|
119
|
-
get menuContainerElementRef() {
|
|
120
|
-
return this._menuContainerElementRef;
|
|
121
|
-
}
|
|
122
|
-
ngOnInit() {
|
|
123
|
-
var _a;
|
|
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
|
-
(_a = this.themeSvc) === null || _a === void 0 ? void 0 : _a.settingsChange.pipe(takeUntil(this.ngUnsubscribe)).subscribe(() => {
|
|
132
|
-
this.changeDetector.markForCheck();
|
|
133
|
-
});
|
|
134
|
-
}
|
|
135
|
-
ngOnDestroy() {
|
|
136
|
-
this.destroyAffixer();
|
|
137
|
-
this.destroyOverlay();
|
|
138
|
-
clearTimeout(this._positionTimeout);
|
|
139
|
-
this.ngUnsubscribe.next();
|
|
140
|
-
this.ngUnsubscribe.complete();
|
|
141
|
-
this.ngUnsubscribe = undefined;
|
|
142
|
-
}
|
|
143
|
-
addEventListeners() {
|
|
144
|
-
const buttonElement = this.triggerButton.nativeElement;
|
|
145
|
-
observableFromEvent(buttonElement, 'click')
|
|
146
|
-
.pipe(takeUntil(this.ngUnsubscribe))
|
|
147
|
-
.subscribe(() => {
|
|
148
|
-
if (this.isOpen) {
|
|
149
|
-
this.sendMessage(SkyDropdownMessageType.Close);
|
|
150
|
-
}
|
|
151
|
-
else {
|
|
152
|
-
this.sendMessage(SkyDropdownMessageType.Open);
|
|
153
|
-
// Wait for dropdown to open, then set focus on first item.
|
|
154
|
-
setTimeout(() => {
|
|
155
|
-
this.sendMessage(SkyDropdownMessageType.FocusFirstItem);
|
|
156
|
-
});
|
|
157
|
-
}
|
|
158
|
-
});
|
|
159
|
-
observableFromEvent(buttonElement, 'keydown')
|
|
160
|
-
.pipe(takeUntil(this.ngUnsubscribe))
|
|
161
|
-
.subscribe((event) => {
|
|
162
|
-
const key = event.key.toLowerCase();
|
|
163
|
-
/* tslint:disable-next-line:switch-default */
|
|
164
|
-
switch (key) {
|
|
165
|
-
case 'escape':
|
|
166
|
-
/*istanbul ignore else*/
|
|
167
|
-
if (this.isOpen) {
|
|
168
|
-
this.sendMessage(SkyDropdownMessageType.Close);
|
|
169
|
-
this.sendMessage(SkyDropdownMessageType.FocusTriggerButton);
|
|
170
|
-
event.stopPropagation();
|
|
171
|
-
}
|
|
172
|
-
break;
|
|
173
|
-
case 'tab':
|
|
174
|
-
if (this.isOpen && this.dismissOnBlur) {
|
|
175
|
-
this.sendMessage(SkyDropdownMessageType.Close);
|
|
176
|
-
}
|
|
177
|
-
break;
|
|
178
|
-
case 'arrowup':
|
|
179
|
-
case 'up':
|
|
180
|
-
if (!this.isOpen) {
|
|
181
|
-
this.sendMessage(SkyDropdownMessageType.Open);
|
|
182
|
-
this.sendMessage(SkyDropdownMessageType.FocusLastItem);
|
|
183
|
-
event.preventDefault();
|
|
184
|
-
event.stopPropagation();
|
|
185
|
-
}
|
|
186
|
-
break;
|
|
187
|
-
case 'enter':
|
|
188
|
-
case 'arrowdown':
|
|
189
|
-
case 'down':
|
|
190
|
-
case ' ': // Spacebar.
|
|
191
|
-
/*istanbul ignore else*/
|
|
192
|
-
if (!this.isOpen) {
|
|
193
|
-
this.sendMessage(SkyDropdownMessageType.Open);
|
|
194
|
-
this.sendMessage(SkyDropdownMessageType.FocusFirstItem);
|
|
195
|
-
event.preventDefault();
|
|
196
|
-
event.stopPropagation();
|
|
197
|
-
}
|
|
198
|
-
break;
|
|
199
|
-
}
|
|
200
|
-
});
|
|
201
|
-
observableFromEvent(buttonElement, 'mouseenter')
|
|
202
|
-
.pipe(takeUntil(this.ngUnsubscribe))
|
|
203
|
-
.subscribe(() => {
|
|
204
|
-
this.isMouseEnter = true;
|
|
205
|
-
if (this.trigger === 'hover') {
|
|
206
|
-
this.sendMessage(SkyDropdownMessageType.Open);
|
|
207
|
-
}
|
|
208
|
-
});
|
|
209
|
-
observableFromEvent(buttonElement, 'mouseleave')
|
|
210
|
-
.pipe(takeUntil(this.ngUnsubscribe))
|
|
211
|
-
.subscribe(() => {
|
|
212
|
-
this.isMouseEnter = false;
|
|
213
|
-
if (this.trigger === 'hover') {
|
|
214
|
-
// Allow the dropdown menu to set isMouseEnter before checking if the close action
|
|
215
|
-
// should be taken.
|
|
216
|
-
setTimeout(() => {
|
|
217
|
-
if (!this.isMouseEnter) {
|
|
218
|
-
this.sendMessage(SkyDropdownMessageType.Close);
|
|
219
|
-
}
|
|
220
|
-
});
|
|
221
|
-
}
|
|
222
|
-
});
|
|
223
|
-
}
|
|
224
|
-
createOverlay() {
|
|
225
|
-
if (this.overlay) {
|
|
226
|
-
return;
|
|
227
|
-
}
|
|
228
|
-
const overlay = this.overlayService.create({
|
|
229
|
-
enableScroll: true,
|
|
230
|
-
enablePointerEvents: true,
|
|
231
|
-
});
|
|
232
|
-
overlay.attachTemplate(this.menuContainerTemplateRef);
|
|
233
|
-
overlay.backdropClick.pipe(takeUntil(this.ngUnsubscribe)).subscribe(() => {
|
|
234
|
-
if (this.dismissOnBlur) {
|
|
235
|
-
this.sendMessage(SkyDropdownMessageType.Close);
|
|
236
|
-
}
|
|
237
|
-
});
|
|
238
|
-
this.overlay = overlay;
|
|
239
|
-
}
|
|
240
|
-
destroyAffixer() {
|
|
241
|
-
/*istanbul ignore else*/
|
|
242
|
-
if (this.affixer) {
|
|
243
|
-
this.affixer.destroy();
|
|
244
|
-
this.affixer = undefined;
|
|
245
|
-
}
|
|
246
|
-
}
|
|
247
|
-
destroyOverlay() {
|
|
248
|
-
/*istanbul ignore else*/
|
|
249
|
-
if (this.overlay) {
|
|
250
|
-
this.overlayService.close(this.overlay);
|
|
251
|
-
this.overlay = undefined;
|
|
252
|
-
}
|
|
253
|
-
}
|
|
254
|
-
createAffixer() {
|
|
255
|
-
const affixer = this.affixService.createAffixer(this.menuContainerElementRef);
|
|
256
|
-
affixer.placementChange
|
|
257
|
-
.pipe(takeUntil(this.ngUnsubscribe))
|
|
258
|
-
.subscribe((change) => {
|
|
259
|
-
this.isVisible = change.placement !== null;
|
|
260
|
-
this.changeDetector.markForCheck();
|
|
261
|
-
});
|
|
262
|
-
this.affixer = affixer;
|
|
263
|
-
}
|
|
264
|
-
handleIncomingMessages(message) {
|
|
265
|
-
if (!this.disabled) {
|
|
266
|
-
/* tslint:disable-next-line:switch-default */
|
|
267
|
-
switch (message.type) {
|
|
268
|
-
case SkyDropdownMessageType.Open:
|
|
269
|
-
this.isOpen = true;
|
|
270
|
-
this.positionDropdownMenu();
|
|
271
|
-
break;
|
|
272
|
-
case SkyDropdownMessageType.Close:
|
|
273
|
-
this.isOpen = false;
|
|
274
|
-
this.destroyOverlay();
|
|
275
|
-
break;
|
|
276
|
-
case SkyDropdownMessageType.Reposition:
|
|
277
|
-
// Only reposition the dropdown if it is already open.
|
|
278
|
-
/* istanbul ignore else */
|
|
279
|
-
if (this.isOpen && this.affixer) {
|
|
280
|
-
this.affixer.reaffix();
|
|
281
|
-
}
|
|
282
|
-
break;
|
|
283
|
-
case SkyDropdownMessageType.FocusTriggerButton:
|
|
284
|
-
this.triggerButton.nativeElement.focus();
|
|
285
|
-
break;
|
|
286
|
-
}
|
|
287
|
-
}
|
|
288
|
-
}
|
|
289
|
-
sendMessage(type) {
|
|
290
|
-
this.messageStream.next({ type });
|
|
291
|
-
}
|
|
292
|
-
positionDropdownMenu() {
|
|
293
|
-
this.isVisible = false;
|
|
294
|
-
this.createOverlay();
|
|
295
|
-
this.changeDetector.markForCheck();
|
|
296
|
-
this._positionTimeout = setTimeout(() => {
|
|
297
|
-
this.affixer.affixTo(this.triggerButton.nativeElement, {
|
|
298
|
-
autoFitContext: SkyAffixAutoFitContext.Viewport,
|
|
299
|
-
enableAutoFit: true,
|
|
300
|
-
horizontalAlignment: parseAffixHorizontalAlignment(this.horizontalAlignment),
|
|
301
|
-
isSticky: true,
|
|
302
|
-
placement: 'below',
|
|
303
|
-
});
|
|
304
|
-
this.isVisible = true;
|
|
305
|
-
this.changeDetector.markForCheck();
|
|
306
|
-
});
|
|
307
|
-
}
|
|
308
|
-
}
|
|
309
|
-
SkyDropdownComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0, type: SkyDropdownComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: i1.SkyAffixService }, { token: i1.SkyOverlayService }, { token: i2.SkyThemeService, optional: true }], target: i0.ɵɵFactoryTarget.Component });
|
|
310
|
-
SkyDropdownComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.15", 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{color:#fff}.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 });
|
|
311
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0, type: SkyDropdownComponent, decorators: [{
|
|
312
|
-
type: Component,
|
|
313
|
-
args: [{
|
|
314
|
-
selector: 'sky-dropdown',
|
|
315
|
-
templateUrl: './dropdown.component.html',
|
|
316
|
-
styleUrls: ['./dropdown.component.scss'],
|
|
317
|
-
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
318
|
-
}]
|
|
319
|
-
}], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }, { type: i1.SkyAffixService }, { type: i1.SkyOverlayService }, { type: i2.SkyThemeService, decorators: [{
|
|
320
|
-
type: Optional
|
|
321
|
-
}] }]; }, propDecorators: { buttonStyle: [{
|
|
322
|
-
type: Input
|
|
323
|
-
}], buttonType: [{
|
|
324
|
-
type: Input
|
|
325
|
-
}], disabled: [{
|
|
326
|
-
type: Input
|
|
327
|
-
}], dismissOnBlur: [{
|
|
328
|
-
type: Input
|
|
329
|
-
}], label: [{
|
|
330
|
-
type: Input
|
|
331
|
-
}], horizontalAlignment: [{
|
|
332
|
-
type: Input
|
|
333
|
-
}], messageStream: [{
|
|
334
|
-
type: Input
|
|
335
|
-
}], title: [{
|
|
336
|
-
type: Input
|
|
337
|
-
}], trigger: [{
|
|
338
|
-
type: Input
|
|
339
|
-
}], menuContainerElementRef: [{
|
|
340
|
-
type: ViewChild,
|
|
341
|
-
args: ['menuContainerElementRef', {
|
|
342
|
-
read: ElementRef,
|
|
343
|
-
}]
|
|
344
|
-
}], menuContainerTemplateRef: [{
|
|
345
|
-
type: ViewChild,
|
|
346
|
-
args: ['menuContainerTemplateRef', {
|
|
347
|
-
read: TemplateRef,
|
|
348
|
-
static: true,
|
|
349
|
-
}]
|
|
350
|
-
}], triggerButton: [{
|
|
351
|
-
type: ViewChild,
|
|
352
|
-
args: ['triggerButton', {
|
|
353
|
-
read: ElementRef,
|
|
354
|
-
static: true,
|
|
355
|
-
}]
|
|
356
|
-
}] } });
|
|
357
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJvcGRvd24uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvcG9wb3ZlcnMvc3JjL21vZHVsZXMvZHJvcGRvd24vZHJvcGRvd24uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvcG9wb3ZlcnMvc3JjL21vZHVsZXMvZHJvcGRvd24vZHJvcGRvd24uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLHVCQUF1QixFQUV2QixTQUFTLEVBQ1QsVUFBVSxFQUNWLEtBQUssRUFHTCxRQUFRLEVBQ1IsV0FBVyxFQUNYLFNBQVMsR0FDVixNQUFNLGVBQWUsQ0FBQztBQUV2QixPQUFPLEVBQ0wsc0JBQXNCLEdBS3ZCLE1BQU0sYUFBYSxDQUFDO0FBSXJCLE9BQU8sRUFBRSxTQUFTLElBQUksbUJBQW1CLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRWpFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQU0zQyxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUl2RSxPQUFPLEVBQUUsNkJBQTZCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQzs7Ozs7OztBQVF0RSxNQUFNLE9BQU8sb0JBQW9CO0lBeUwvQixZQUNVLGNBQWlDLEVBQ2pDLFlBQTZCLEVBQzdCLGNBQWlDLEVBQ3JCLFFBQTBCO1FBSHRDLG1CQUFjLEdBQWQsY0FBYyxDQUFtQjtRQUNqQyxpQkFBWSxHQUFaLFlBQVksQ0FBaUI7UUFDN0IsbUJBQWMsR0FBZCxjQUFjLENBQW1CO1FBQ3JCLGFBQVEsR0FBUixRQUFRLENBQWtCO1FBMUdoRDs7O1dBR0c7UUFHSSxrQkFBYSxHQUFHLElBQUksT0FBTyxFQUFzQixDQUFDO1FBb0RsRCxpQkFBWSxHQUFZLEtBQUssQ0FBQztRQUU5QixjQUFTLEdBQVksS0FBSyxDQUFDO1FBb0Ix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Z0JBUUssbUJBQW1CO3NCQUQ3QixLQUFLO2dCQWVDLGFBQWE7c0JBRG5CLEtBQUs7Z0JBT0MsS0FBSztzQkFEWCxLQUFLO2dCQWNLLE9BQU87c0JBRGpCLEtBQUs7Z0JBcUJLLHVCQUF1QjtzQkFIakMsU0FBUzt1QkFBQyx5QkFBeUIsRUFBRTt3QkFDcEMsSUFBSSxFQUFFLFVBQVU7cUJBQ2pCO2dCQTBCTyx3QkFBd0I7c0JBSi9CLFNBQVM7dUJBQUMsMEJBQTBCLEVBQUU7d0JBQ3JDLElBQUksRUFBRSxXQUFXO3dCQUNqQixNQUFNLEVBQUUsSUFBSTtxQkFDYjtnQkFPTyxhQUFhO3NCQUpwQixTQUFTO3VCQUFDLGVBQWUsRUFBRTt3QkFDMUIsSUFBSSxFQUFFLFVBQVU7d0JBQ2hCLE1BQU0sRUFBRSxJQUFJO3FCQUNiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBDb21wb25lbnQsXG4gIEVsZW1lbnRSZWYsXG4gIElucHV0LFxuICBPbkRlc3Ryb3ksXG4gIE9uSW5pdCxcbiAgT3B0aW9uYWwsXG4gIFRlbXBsYXRlUmVmLFxuICBWaWV3Q2hpbGQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQge1xuICBTa3lBZmZpeEF1dG9GaXRDb250ZXh0LFxuICBTa3lBZmZpeGVyLFxuICBTa3lBZmZpeFNlcnZpY2UsXG4gIFNreU92ZXJsYXlJbnN0YW5jZSxcbiAgU2t5T3ZlcmxheVNlcnZpY2UsXG59IGZyb20gJ0Bza3l1eC9jb3JlJztcblxuaW1wb3J0IHsgU2t5VGhlbWVTZXJ2aWNlIH0gZnJvbSAnQHNreXV4L3RoZW1lJztcblxuaW1wb3J0IHsgZnJvbUV2ZW50IGFzIG9ic2VydmFibGVGcm9tRXZlbnQsIFN1YmplY3QgfSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHsgdGFrZVVudGlsIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5pbXBvcnQgeyBTa3lEcm9wZG93bkhvcml6b250YWxBbGlnbm1lbnQgfSBmcm9tICcuL3R5cGVzL2Ryb3Bkb3duLWhvcml6b250YWwtYWxpZ25tZW50JztcblxuaW1wb3J0IHsgU2t5RHJvcGRvd25NZXNzYWdlIH0gZnJvbSAnLi90eXBlcy9kcm9wZG93bi1tZXNzYWdlJztcblxuaW1wb3J0IHsgU2t5RHJvcGRvd25NZXNzYWdlVHlwZSB9IGZyb20gJy4vdHlwZXMvZHJvcGRvd24tbWVzc2FnZS10eXBlJztcblxuaW1wb3J0IHsgU2t5RHJvcGRvd25UcmlnZ2VyVHlwZSB9IGZyb20gJy4vdHlwZXMvZHJvcGRvd24tdHJpZ2dlci10eXBlJztcblxuaW1wb3J0IHsgcGFyc2VBZmZpeEhvcml6b250YWxBbGlnbm1lbnQgfSBmcm9tICcuL2Ryb3Bkb3duLWV4dGVuc2lvbnMnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdza3ktZHJvcGRvd24nLFxuICB0ZW1wbGF0ZVVybDogJy4vZHJvcGRvd24uY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9kcm9wZG93bi5jb21wb25lbnQuc2NzcyddLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbn0pXG5leHBvcnQgY2xhc3MgU2t5RHJvcGRvd25Db21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XG4gIC8qKlxuICAgKiBTcGVjaWZpZXMgYSBiYWNrZ3JvdW5kIGNvbG9yIGZvciB0aGUgZHJvcGRvd24gYnV0dG9uLiBBdmFpbGFibGUgdmFsdWVzIGFyZSBgZGVmYXVsdGAgYW5kXG4gICAqIGBwcmltYXJ5YC4gVGhlc2UgdmFsdWVzIHNldCB0aGUgYmFja2dyb3VuZCBjb2xvciBmcm9tIHRoZVxuICAgKiBbc2Vjb25kYXJ5IGFuZCBwcmltYXJ5IGJ1dHRvbiBjbGFzc2VzXShodHRwczovL2RldmVsb3Blci5ibGFja2JhdWQuY29tL3NreXV4L2NvbXBvbmVudHMvYnV0dG9uKSByZXNwZWN0aXZlbHkuXG4gICAqIEBkZWZhdWx0IFwiZGVmYXVsdFwiXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgc2V0IGJ1dHRvblN0eWxlKHZhbHVlOiBzdHJpbmcpIHtcbiAgICB0aGlzLl9idXR0b25TdHlsZSA9IHZhbHVlO1xuICB9XG5cbiAgcHVibGljIGdldCBidXR0b25TdHlsZSgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLl9idXR0b25TdHlsZSB8fCAnZGVmYXVsdCc7XG4gIH1cblxuICAvKipcbiAgICogU3BlY2lmaWVzIHRoZSB0eXBlIG9mIGJ1dHRvbiB0byByZW5kZXIgYXMgdGhlIGRyb3Bkb3duJ3MgdHJpZ2dlciBlbGVtZW50LiBUbyBkaXNwbGF5IGEgYnV0dG9uXG4gICAqIHdpdGggdGV4dCBhbmQgYSBjYXJldCwgc3BlY2lmeSBgc2VsZWN0YCBhbmQgdGhlbiBlbnRlciB0aGUgYnV0dG9uIHRleHQgaW4gYVxuICAgKiBgc2t5LWRyb3Bkb3duLWJ1dHRvbmAgZWxlbWVudC4gVG8gZGlzcGxheSBhIHJvdW5kIGJ1dHRvbiB3aXRoIGFuIGVsbGlwc2lzLCBzcGVjaWZ5XG4gICAqIGBjb250ZXh0LW1lbnVgLiBBbmQgdG8gZGlzcGxheSBhIGJ1dHRvbiB3aXRoIGEgW0ZvbnQgQXdlc29tZSBpY29uXShodHRwOi8vZm9udGF3ZXNvbWUuaW8vaWNvbnMvKSwgc3BlY2lmeSB0aGUgaWNvbidzIGNsYXNzIG5hbWUuXG4gICAqIEZvciBleGFtcGxlLCB0byBkaXNwbGF5IHRoZSBgZmEtZmlsdGVyYCBpY29uLCBzcGVjaWZ5IGBmaWx0ZXJgLlxuICAgKiBAZGVmYXVsdCBcInNlbGVjdFwiXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgc2V0IGJ1dHRvblR5cGUodmFsdWU6IHN0cmluZykge1xuICAgIHRoaXMuX2J1dHRvblR5cGUgPSB2YWx1ZTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgYnV0dG9uVHlwZSgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLl9idXR0b25UeXBlIHx8ICdzZWxlY3QnO1xuICB9XG5cbiAgLyoqXG4gICAqIEluZGljYXRlcyB3aGV0aGVyIHRvIGRpc2FibGUgdGhlIGRyb3Bkb3duIGJ1dHRvbi5cbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzZXQgZGlzYWJsZWQodmFsdWU6IGJvb2xlYW4pIHtcbiAgICB0aGlzLl9kaXNhYmxlZCA9IHZhbHVlO1xuICB9XG5cbiAgcHVibGljIGdldCBkaXNhYmxlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5fZGlzYWJsZWQgfHwgZmFsc2U7XG4gIH1cblxuICAvKipcbiAgICogSW5kaWNhdGVzIHdoZXRoZXIgdG8gY2xvc2UgdGhlIGRyb3Bkb3duIHdoZW4gdXNlcnMgY2xpY2sgYXdheSBmcm9tIHRoZSBtZW51LlxuICAgKiBAZGVmYXVsdCB0cnVlXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgc2V0IGRpc21pc3NPbkJsdXIodmFsdWU6IGJvb2xlYW4pIHtcbiAgICB0aGlzLl9kaXNtaXNzT25CbHVyID0gdmFsdWU7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGRpc21pc3NPbkJsdXIoKTogYm9vbGVhbiB7XG4gICAgaWYgKHRoaXMuX2Rpc21pc3NPbkJsdXIgPT09IHVuZGVmaW5lZCkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuX2Rpc21pc3NPbkJsdXI7XG4gIH1cblxuICAvKipcbiAgICogU3BlY2lmaWVzIGFuIEFSSUEgbGFiZWwgZm9yIHRoZSBkcm9wZG93bi4gVGhpcyBzZXRzIHRoZSBkcm9wZG93bidzIGBhcmlhLWxhYmVsYCBhdHRyaWJ1dGVcbiAgICogW3RvIHN1cHBvcnQgYWNjZXNzaWJpbGl0eV0oaHR0cHM6Ly9kZXZlbG9wZXIuYmxhY2tiYXVkLmNvbS9za3l1eC9sZWFybi9hY2Nlc3NpYmlsaXR5KS5cbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBsYWJlbDogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBTcGVjaWZpZXMgdGhlIGhvcml6b250YWwgYWxpZ25tZW50IG9mIHRoZSBkcm9wZG93biBtZW51IGluIHJlbGF0aW9uIHRvIHRoZSBkcm9wZG93biBidXR0b24uXG4gICAqIEBkZWZhdWx0IFwibGVmdFwiXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgc2V0IGhvcml6b250YWxBbGlnbm1lbnQodmFsdWU6IFNreURyb3Bkb3duSG9yaXpvbnRhbEFsaWdubWVudCkge1xuICAgIHRoaXMuX2hvcml6b250YWxBbGlnbm1lbnQgPSB2YWx1ZTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgaG9yaXpvbnRhbEFsaWdubWVudCgpOiBTa3lEcm9wZG93bkhvcml6b250YWxBbGlnbm1lbnQge1xuICAgIHJldHVybiB0aGlzLl9ob3Jpem9udGFsQWxpZ25tZW50IHx8ICdsZWZ0JztcbiAgfVxuXG4gIC8qKlxuICAgKiBQcm92aWRlcyBhbiBvYnNlcnZhYmxlIHRvIHNlbmQgY29tbWFuZHMgdG8gdGhlIGRyb3Bkb3duLiBUaGUgY29tbWFuZHMgc2hvdWxkIHJlc3BlY3RcbiAgICogdGhlIFtbU2t5RHJvcGRvd25NZXNzYWdlXV0gdHlwZS5cbiAgICovXG5cbiAgQElucHV0KClcbiAgcHVibGljIG1lc3NhZ2VTdHJlYW0gPSBuZXcgU3ViamVjdDxTa3lEcm9wZG93bk1lc3NhZ2U+KCk7XG5cbiAgLyoqXG4gICAqIFNwZWNpZmllcyBhIHRpdGxlIHRvIGRpc3BsYXkgaW4gYSB0b29sdGlwIHdoZW4gdXNlcnMgaG92ZXIgdGhlIG1vdXNlIG92ZXIgdGhlIGRyb3Bkb3duIGJ1dHRvbi5cbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyB0aXRsZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBTcGVjaWZpZXMgaG93IHVzZXJzIGludGVyYWN0IHdpdGggdGhlIGRyb3Bkb3duIGJ1dHRvbiB0byBleHBvc2UgdGhlIGRyb3Bkb3duIG1lbnUuXG4gICAqIFdlIHJlY29tbWVuZCB0aGUgZGVmYXVsdCBgY2xpY2tgIHZhbHVlIGJlY2F1c2UgdGhlIGBob3ZlcmAgdmFsdWUgY2FuIHBvc2VcbiAgICogW2FjY2Vzc2liaWxpdHldKGh0dHBzOi8vZGV2ZWxvcGVyLmJsYWNrYmF1ZC5jb20vc2t5dXgvbGVhcm4vYWNjZXNzaWJpbGl0eSkgaXNzdWVzXG4gICAqIGZvciB1c2VycyBvbiB0b3VjaCBkZXZpY2VzIHN1Y2ggYXMgcGhvbmVzIGFuZCB0YWJsZXRzLlxuICAgKiBAZGVwcmVjYXRlZCBXZSByZWNvbW1lbmQgYWdhaW5zdCB1c2luZyB0aGlzIHByb3BlcnR5LiBJZiB5b3UgY2hvb3NlIHRvIHVzZSB0aGUgZGVwcmVjYXRlZFxuICAgKiBgaG92ZXJgIHZhbHVlIGFueXdheSwgd2UgcmVjb21tZW5kIHRoYXQgeW91IG5vdCB1c2UgaXQgaW4gY29tYmluYXRpb24gd2l0aCB0aGUgYHRpdGxlYFxuICAgKiBwcm9wZXJ0eS4gKFRoaXMgcHJvcGVydHkgd2lsbCBiZSByZW1vdmVkIGluIHRoZSBuZXh0IG1ham9yIHZlcnNpb24gcmVsZWFzZS4pXG4gICAqIEBkZWZhdWx0IFwiY2xpY2tcIlxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIHNldCB0cmlnZ2VyKHZhbHVlOiBTa3lEcm9wZG93blRyaWdnZXJUeXBlKSB7XG4gICAgdGhpcy5fdHJpZ2dlciA9IHZhbHVlO1xuICB9XG5cbiAgcHVibGljIGdldCB0cmlnZ2VyKCk6IFNreURyb3Bkb3duVHJpZ2dlclR5cGUge1xuICAgIHJldHVybiB0aGlzLl90cmlnZ2VyIHx8ICdjbGljayc7XG4gIH1cblxuICBwdWJsaWMgc2V0IGlzT3Blbih2YWx1ZTogYm9vbGVhbikge1xuICAgIHRoaXMuX2lzT3BlbiA9IHZhbHVlO1xuICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3IubWFya0ZvckNoZWNrKCk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGlzT3BlbigpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5faXNPcGVuIHx8IGZhbHNlO1xuICB9XG5cbiAgQFZpZXdDaGlsZCgnbWVudUNvbnRhaW5lckVsZW1lbnRSZWYnLCB7XG4gICAgcmVhZDogRWxlbWVudFJlZixcbiAgfSlcbiAgcHVibGljIHNldCBtZW51Q29udGFpbmVyRWxlbWVudFJlZih2YWx1ZTogRWxlbWVudFJlZikge1xuICAgIGlmICh2YWx1ZSkge1xuICAgICAgdGhpcy5fbWVudUNvbnRhaW5lckVsZW1lbnRSZWYgPSB2YWx1ZTtcbiAgICAgIHRoaXMuZGVzdHJveUFmZml4ZXIoKTtcbiAgICAgIHRoaXMuY3JlYXRlQWZmaXhlcigpO1xuICAgICAgdGhpcy5jaGFuZ2VEZXRlY3Rvci5tYXJrRm9yQ2hlY2soKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgZ2V0IG1lbnVDb250YWluZXJFbGVtZW50UmVmKCk6IEVsZW1lbnRSZWYge1xuICAgIHJldHVybiB0aGlzLl9tZW51Q29udGFpbmVyRWxlbWVudFJlZjtcbiAgfVxuXG4gIHB1YmxpYyBpc01vdXNlRW50ZXI6IGJvb2xlYW4gPSBmYWxzZTtcblxuICBwdWJsaWMgaXNWaXNpYmxlOiBib29sZWFuID0gZmFsc2U7XG5cbiAgcHVibGljIG1lbnVJZDogc3RyaW5nO1xuXG4gIHB1YmxpYyBtZW51QXJpYVJvbGU6IHN0cmluZztcblxuICBAVmlld0NoaWxkKCdtZW51Q29udGFpbmVyVGVtcGxhdGVSZWYnLCB7XG4gICAgcmVhZDogVGVtcGxhdGVSZWYsXG4gICAgc3RhdGljOiB0cnVlLFxuICB9KVxuICBwcml2YXRlIG1lbnVDb250YWluZXJUZW1wbGF0ZVJlZjogVGVtcGxhdGVSZWY8YW55PjtcblxuICBAVmlld0NoaWxkKCd0cmlnZ2VyQnV0dG9uJywge1xuICAgIHJlYWQ6IEVsZW1lbnRSZWYsXG4gICAgc3RhdGljOiB0cnVlLFxuICB9KVxuICBwcml2YXRlIHRyaWdnZXJCdXR0b246IEVsZW1lbnRSZWY7XG5cbiAgcHJpdmF0ZSBhZmZpeGVyOiBTa3lBZmZpeGVyO1xuXG4gIHByaXZhdGUgbmdVbnN1YnNjcmliZSA9IG5ldyBTdWJqZWN0KCk7XG5cbiAgcHJpdmF0ZSBvdmVybGF5OiBTa3lPdmVybGF5SW5zdGFuY2U7XG5cbiAgcHJpdmF0ZSBfYnV0dG9uU3R5bGU6IHN0cmluZztcblxuICBwcml2YXRlIF9idXR0b25UeXBlOiBzdHJpbmc7XG5cbiAgcHJpdmF0ZSBfZGlzYWJsZWQ6IGJvb2xlYW47XG5cbiAgcHJpdmF0ZSBfZGlzbWlzc09uQmx1cjogYm9vbGVhbjtcblxuICBwcml2YXRlIF9ob3Jpem9udGFsQWxpZ25tZW50OiBTa3lEcm9wZG93bkhvcml6b250YWxBbGlnbm1lbnQ7XG5cbiAgcHJpdmF0ZSBfaXNPcGVuID0gZmFsc2U7XG5cbiAgcHJpdmF0ZSBfbWVudUNvbnRhaW5lckVsZW1lbnRSZWY6IEVsZW1lbnRSZWY7XG5cbiAgcHJpdmF0ZSBfdHJpZ2dlcjogU2t5RHJvcGRvd25UcmlnZ2VyVHlwZTtcblxuICBwcml2YXRlIF9wb3NpdGlvblRpbWVvdXQ6IG51bWJlcjtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGNoYW5nZURldGVjdG9yOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBwcml2YXRlIGFmZml4U2VydmljZTogU2t5QWZmaXhTZXJ2aWNlLFxuICAgIHByaXZhdGUgb3ZlcmxheVNlcnZpY2U6IFNreU92ZXJsYXlTZXJ2aWNlLFxuICAgIEBPcHRpb25hbCgpIHByaXZhdGUgdGhlbWVTdmM/OiBTa3lUaGVtZVNlcnZpY2VcbiAgKSB7fVxuXG4gIHB1YmxpYyBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLmFkZEV2ZW50TGlzdGVuZXJzKCk7XG5cbiAgICB0aGlzLm1lc3NhZ2VTdHJlYW1cbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLm5nVW5zdWJzY3JpYmUpKVxuICAgICAgLnN1YnNjcmliZSgobWVzc2FnZTogU2t5RHJvcGRvd25NZXNzYWdlKSA9PiB7XG4gICAgICAgIHRoaXMuaGFuZGxlSW5jb21pbmdNZXNzYWdlcyhtZXNzYWdlKTtcbiAgICAgIH0pO1xuXG4gICAgLy8gTG9hZCBwcm9wZXIgaWNvbnMgb24gdGhlbWUgY2hhbmdlLlxuICAgIHRoaXMudGhlbWVTdmM/LnNldHRpbmdzQ2hhbmdlXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5uZ1Vuc3Vic2NyaWJlKSlcbiAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICB0aGlzLmNoYW5nZURldGVjdG9yLm1hcmtGb3JDaGVjaygpO1xuICAgICAgfSk7XG4gIH1cblxuICBwdWJsaWMgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5kZXN0cm95QWZmaXhlcigpO1xuICAgIHRoaXMuZGVzdHJveU92ZXJsYXkoKTtcbiAgICBjbGVhclRpbWVvdXQodGhpcy5fcG9zaXRpb25UaW1lb3V0KTtcblxuICAgIHRoaXMubmdVbnN1YnNjcmliZS5uZXh0KCk7XG4gICAgdGhpcy5uZ1Vuc3Vic2NyaWJlLmNvbXBsZXRlKCk7XG4gICAgdGhpcy5uZ1Vuc3Vic2NyaWJlID0gdW5kZWZpbmVkO1xuICB9XG5cbiAgcHJpdmF0ZSBhZGRFdmVudExpc3RlbmVycygpOiB2b2lkIHtcbiAgICBjb25zdCBidXR0b25FbGVtZW50ID0gdGhpcy50cmlnZ2VyQnV0dG9uLm5hdGl2ZUVsZW1lbnQ7XG5cbiAgICBvYnNlcnZhYmxlRnJvbUV2ZW50KGJ1dHRvbkVsZW1lbnQsICdjbGljaycpXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5uZ1Vuc3Vic2NyaWJlKSlcbiAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICBpZiAodGhpcy5pc09wZW4pIHtcbiAgICAgICAgICB0aGlzLnNlbmRNZXNzYWdlKFNreURyb3Bkb3duTWVzc2FnZVR5cGUuQ2xvc2UpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRoaXMuc2VuZE1lc3NhZ2UoU2t5RHJvcGRvd25NZXNzYWdlVHlwZS5PcGVuKTtcbiAgICAgICAgICAvLyBXYWl0IGZvciBkcm9wZG93biB0byBvcGVuLCB0aGVuIHNldCBmb2N1cyBvbiBmaXJzdCBpdGVtLlxuICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5zZW5kTWVzc2FnZShTa3lEcm9wZG93bk1lc3NhZ2VUeXBlLkZvY3VzRmlyc3RJdGVtKTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgfSk7XG5cbiAgICBvYnNlcnZhYmxlRnJvbUV2ZW50KGJ1dHRvbkVsZW1lbnQsICdrZXlkb3duJylcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLm5nVW5zdWJzY3JpYmUpKVxuICAgICAgLnN1YnNjcmliZSgoZXZlbnQ6IEtleWJvYXJkRXZlbnQpID0+IHtcbiAgICAgICAgY29uc3Qga2V5ID0gZXZlbnQua2V5LnRvTG93ZXJDYXNlKCk7XG5cbiAgICAgICAgLyogdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOnN3aXRjaC1kZWZhdWx0ICovXG4gICAgICAgIHN3aXRjaCAoa2V5KSB7XG4gICAgICAgICAgY2FzZSAnZXNjYXBlJzpcbiAgICAgICAgICAgIC8qaXN0YW5idWwgaWdub3JlIGVsc2UqL1xuICAgICAgICAgICAgaWYgKHRoaXMuaXNPcGVuKSB7XG4gICAgICAgICAgICAgIHRoaXMuc2VuZE1lc3NhZ2UoU2t5RHJvcGRvd25NZXNzYWdlVHlwZS5DbG9zZSk7XG4gICAgICAgICAgICAgIHRoaXMuc2VuZE1lc3NhZ2UoU2t5RHJvcGRvd25NZXNzYWdlVHlwZS5Gb2N1c1RyaWdnZXJCdXR0b24pO1xuICAgICAgICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgY2FzZSAndGFiJzpcbiAgICAgICAgICAgIGlmICh0aGlzLmlzT3BlbiAmJiB0aGlzLmRpc21pc3NPbkJsdXIpIHtcbiAgICAgICAgICAgICAgdGhpcy5zZW5kTWVzc2FnZShTa3lEcm9wZG93bk1lc3NhZ2VUeXBlLkNsb3NlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgY2FzZSAnYXJyb3d1cCc6XG4gICAgICAgICAgY2FzZSAndXAnOlxuICAgICAgICAgICAgaWYgKCF0aGlzLmlzT3Blbikge1xuICAgICAgICAgICAgICB0aGlzLnNlbmRNZXNzYWdlKFNreURyb3Bkb3duTWVzc2FnZVR5cGUuT3Blbik7XG4gICAgICAgICAgICAgIHRoaXMuc2VuZE1lc3NhZ2UoU2t5RHJvcGRvd25NZXNzYWdlVHlwZS5Gb2N1c0xhc3RJdGVtKTtcbiAgICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgIGNhc2UgJ2VudGVyJzpcbiAgICAgICAgICBjYXNlICdhcnJvd2Rvd24nOlxuICAgICAgICAgIGNhc2UgJ2Rvd24nOlxuICAgICAgICAgIGNhc2UgJyAnOiAvLyBTcGFjZWJhci5cbiAgICAgICAgICAgIC8qaXN0YW5idWwgaWdub3JlIGVsc2UqL1xuICAgICAgICAgICAgaWYgKCF0aGlzLmlzT3Blbikge1xuICAgICAgICAgICAgICB0aGlzLnNlbmRNZXNzYWdlKFNreURyb3Bkb3duTWVzc2FnZVR5cGUuT3Blbik7XG4gICAgICAgICAgICAgIHRoaXMuc2VuZE1lc3NhZ2UoU2t5RHJvcGRvd25NZXNzYWdlVHlwZS5Gb2N1c0ZpcnN0SXRlbSk7XG4gICAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuXG4gICAgb2JzZXJ2YWJsZUZyb21FdmVudChidXR0b25FbGVtZW50LCAnbW91c2VlbnRlcicpXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5uZ1Vuc3Vic2NyaWJlKSlcbiAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICB0aGlzLmlzTW91c2VFbnRlciA9IHRydWU7XG4gICAgICAgIGlmICh0aGlzLnRyaWdnZXIgPT09ICdob3ZlcicpIHtcbiAgICAgICAgICB0aGlzLnNlbmRNZXNzYWdlKFNreURyb3Bkb3duTWVzc2FnZVR5cGUuT3Blbik7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuXG4gICAgb2JzZXJ2YWJsZUZyb21FdmVudChidXR0b25FbGVtZW50LCAnbW91c2VsZWF2ZScpXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5uZ1Vuc3Vic2NyaWJlKSlcbiAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICB0aGlzLmlzTW91c2VFbnRlciA9IGZhbHNlO1xuICAgICAgICBpZiAodGhpcy50cmlnZ2VyID09PSAnaG92ZXInKSB7XG4gICAgICAgICAgLy8gQWxsb3cgdGhlIGRyb3Bkb3duIG1lbnUgdG8gc2V0IGlzTW91c2VFbnRlciBiZWZvcmUgY2hlY2tpbmcgaWYgdGhlIGNsb3NlIGFjdGlvblxuICAgICAgICAgIC8vIHNob3VsZCBiZSB0YWtlbi5cbiAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgIGlmICghdGhpcy5pc01vdXNlRW50ZXIpIHtcbiAgICAgICAgICAgICAgdGhpcy5zZW5kTWVzc2FnZShTa3lEcm9wZG93bk1lc3NhZ2VUeXBlLkNsb3NlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGNyZWF0ZU92ZXJsYXkoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMub3ZlcmxheSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IG92ZXJsYXkgPSB0aGlzLm92ZXJsYXlTZXJ2aWNlLmNyZWF0ZSh7XG4gICAgICBlbmFibGVTY3JvbGw6IHRydWUsXG4gICAgICBlbmFibGVQb2ludGVyRXZlbnRzOiB0cnVlLFxuICAgIH0pO1xuXG4gICAgb3ZlcmxheS5hdHRhY2hUZW1wbGF0ZSh0aGlzLm1lbnVDb250YWluZXJUZW1wbGF0ZVJlZik7XG5cbiAgICBvdmVybGF5LmJhY2tkcm9wQ2xpY2sucGlwZSh0YWtlVW50aWwodGhpcy5uZ1Vuc3Vic2NyaWJlKSkuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgIGlmICh0aGlzLmRpc21pc3NPbkJsdXIpIHtcbiAgICAgICAgdGhpcy5zZW5kTWVzc2FnZShTa3lEcm9wZG93bk1lc3NhZ2VUeXBlLkNsb3NlKTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIHRoaXMub3ZlcmxheSA9IG92ZXJsYXk7XG4gIH1cblxuICBwcml2YXRlIGRlc3Ryb3lBZmZpeGVyKCk6IHZvaWQge1xuICAgIC8qaXN0YW5idWwgaWdub3JlIGVsc2UqL1xuICAgIGlmICh0aGlzLmFmZml4ZXIpIHtcbiAgICAgIHRoaXMuYWZmaXhlci5kZXN0cm95KCk7XG4gICAgICB0aGlzLmFmZml4ZXIgPSB1bmRlZmluZWQ7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBkZXN0cm95T3ZlcmxheSgpOiB2b2lkIHtcbiAgICAvKmlzdGFuYnVsIGlnbm9yZSBlbHNlKi9cbiAgICBpZiAodGhpcy5vdmVybGF5KSB7XG4gICAgICB0aGlzLm92ZXJsYXlTZXJ2aWNlLmNsb3NlKHRoaXMub3ZlcmxheSk7XG4gICAgICB0aGlzLm92ZXJsYXkgPSB1bmRlZmluZWQ7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBjcmVhdGVBZmZpeGVyKCk6IHZvaWQge1xuICAgIGNvbnN0IGFmZml4ZXIgPSB0aGlzLmFmZml4U2VydmljZS5jcmVhdGVBZmZpeGVyKFxuICAgICAgdGhpcy5tZW51Q29udGFpbmVyRWxlbWVudFJlZlxuICAgICk7XG5cbiAgICBhZmZpeGVyLnBsYWNlbWVudENoYW5nZVxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMubmdVbnN1YnNjcmliZSkpXG4gICAgICAuc3Vic2NyaWJlKChjaGFuZ2UpID0+IHtcbiAgICAgICAgdGhpcy5pc1Zpc2libGUgPSBjaGFuZ2UucGxhY2VtZW50ICE9PSBudWxsO1xuICAgICAgICB0aGlzLmNoYW5nZURldGVjdG9yLm1hcmtGb3JDaGVjaygpO1xuICAgICAgfSk7XG5cbiAgICB0aGlzLmFmZml4ZXIgPSBhZmZpeGVyO1xuICB9XG5cbiAgcHJpdmF0ZSBoYW5kbGVJbmNvbWluZ01lc3NhZ2VzKG1lc3NhZ2U6IFNreURyb3Bkb3duTWVzc2FnZSk6IHZvaWQge1xuICAgIGlmICghdGhpcy5kaXNhYmxlZCkge1xuICAgICAgLyogdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOnN3aXRjaC1kZWZhdWx0ICovXG4gICAgICBzd2l0Y2ggKG1lc3NhZ2UudHlwZSkge1xuICAgICAgICBjYXNlIFNreURyb3Bkb3duTWVzc2FnZVR5cGUuT3BlbjpcbiAgICAgICAgICB0aGlzLmlzT3BlbiA9IHRydWU7XG4gICAgICAgICAgdGhpcy5wb3NpdGlvbkRyb3Bkb3duTWVudSgpO1xuICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgIGNhc2UgU2t5RHJvcGRvd25NZXNzYWdlVHlwZS5DbG9zZTpcbiAgICAgICAgICB0aGlzLmlzT3BlbiA9IGZhbHNlO1xuICAgICAgICAgIHRoaXMuZGVzdHJveU92ZXJsYXkoKTtcbiAgICAgICAgICBicmVhaztcblxuICAgICAgICBjYXNlIFNreURyb3Bkb3duTWVzc2FnZVR5cGUuUmVwb3NpdGlvbjpcbiAgICAgICAgICAvLyBPbmx5IHJlcG9zaXRpb24gdGhlIGRyb3Bkb3duIGlmIGl0IGlzIGFscmVhZHkgb3Blbi5cbiAgICAgICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgZWxzZSAqL1xuICAgICAgICAgIGlmICh0aGlzLmlzT3BlbiAmJiB0aGlzLmFmZml4ZXIpIHtcbiAgICAgICAgICAgIHRoaXMuYWZmaXhlci5yZWFmZml4KCk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgIGNhc2UgU2t5RHJvcGRvd25NZXNzYWdlVHlwZS5Gb2N1c1RyaWdnZXJCdXR0b246XG4gICAgICAgICAgdGhpcy50cmlnZ2VyQnV0dG9uLm5hdGl2ZUVsZW1lbnQuZm9jdXMoKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHNlbmRNZXNzYWdlKHR5cGU6IFNreURyb3Bkb3duTWVzc2FnZVR5cGUpOiB2b2lkIHtcbiAgICB0aGlzLm1lc3NhZ2VTdHJlYW0ubmV4dCh7IHR5cGUgfSk7XG4gIH1cblxuICBwcml2YXRlIHBvc2l0aW9uRHJvcGRvd25NZW51KCk6IHZvaWQge1xuICAgIHRoaXMuaXNWaXNpYmxlID0gZmFsc2U7XG4gICAgdGhpcy5jcmVhdGVPdmVybGF5KCk7XG4gICAgdGhpcy5jaGFuZ2VEZXRlY3Rvci5tYXJrRm9yQ2hlY2soKTtcblxuICAgIHRoaXMuX3Bvc2l0aW9uVGltZW91dCA9IHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgdGhpcy5hZmZpeGVyLmFmZml4VG8odGhpcy50cmlnZ2VyQnV0dG9uLm5hdGl2ZUVsZW1lbnQsIHtcbiAgICAgICAgYXV0b0ZpdENvbnRleHQ6IFNreUFmZml4QXV0b0ZpdENvbnRleHQuVmlld3BvcnQsXG4gICAgICAgIGVuYWJsZUF1dG9GaXQ6IHRydWUsXG4gICAgICAgIGhvcml6b250YWxBbGlnbm1lbnQ6IHBhcnNlQWZmaXhIb3Jpem9udGFsQWxpZ25tZW50KFxuICAgICAgICAgIHRoaXMuaG9yaXpvbnRhbEFsaWdubWVudFxuICAgICAgICApLFxuICAgICAgICBpc1N0aWNreTogdHJ1ZSxcbiAgICAgICAgcGxhY2VtZW50OiAnYmVsb3cnLFxuICAgICAgfSk7XG5cbiAgICAgIHRoaXMuaXNWaXNpYmxlID0gdHJ1ZTtcbiAgICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3IubWFya0ZvckNoZWNrKCk7XG4gICAgfSk7XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJza3ktZHJvcGRvd25cIj5cbiAgPGJ1dHRvblxuICAgIGNsYXNzPVwic2t5LWJ0biBza3ktZHJvcGRvd24tYnV0dG9uXCJcbiAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICBbYXR0ci5hcmlhLWV4cGFuZGVkXT1cImlzT3BlblwiXG4gICAgW2F0dHIuYXJpYS1jb250cm9sc109XCJpc09wZW4gPyBtZW51SWQgOiBudWxsXCJcbiAgICBbYXR0ci5hcmlhLWhhc3BvcHVwXT1cIm1lbnVBcmlhUm9sZVwiXG4gICAgW2F0dHIuYXJpYS1sYWJlbF09XCJcbiAgICAgIGxhYmVsIHx8ICgnc2t5dXhfZHJvcGRvd25fY29udGV4dF9tZW51X2RlZmF1bHRfbGFiZWwnIHwgc2t5TGliUmVzb3VyY2VzKVxuICAgIFwiXG4gICAgW2F0dHIudGl0bGVdPVwidGl0bGVcIlxuICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiXG4gICAgW25nQ2xhc3NdPVwiW1xuICAgICAgJ3NreS1kcm9wZG93bi1idXR0b24tdHlwZS0nICsgYnV0dG9uVHlwZSxcbiAgICAgICdza3ktYnRuLScgKyBidXR0b25TdHlsZVxuICAgIF1cIlxuICAgICN0cmlnZ2VyQnV0dG9uXG4gID5cbiAgICA8bmctY29udGFpbmVyIFtuZ1N3aXRjaF09XCJidXR0b25UeXBlXCI+XG4gICAgICA8bmctdGVtcGxhdGUgbmdTd2l0Y2hDYXNlPVwiY29udGV4dC1tZW51XCI+XG4gICAgICAgIDxza3ktaWNvbiAqc2t5VGhlbWVJZj1cIidkZWZhdWx0J1wiIGljb249XCJlbGxpcHNpcy1oXCI+PC9za3ktaWNvbj5cbiAgICAgICAgPHNreS1pY29uXG4gICAgICAgICAgKnNreVRoZW1lSWY9XCInbW9kZXJuJ1wiXG4gICAgICAgICAgaWNvbj1cImVsbGlwc2lzXCJcbiAgICAgICAgICBpY29uVHlwZT1cInNreXV4XCJcbiAgICAgICAgPjwvc2t5LWljb24+XG4gICAgICA8L25nLXRlbXBsYXRlPlxuXG4gICAgICA8bmctdGVtcGxhdGUgbmdTd2l0Y2hEZWZhdWx0PlxuICAgICAgICA8ZGl2XG4gICAgICAgICAgKm5nSWY9XCJidXR0b25UeXBlID09PSAnc2VsZWN0JyB8fCBidXR0b25UeXBlID09PSAndGFiJyB8fCAhYnV0dG9uVHlwZVwiXG4gICAgICAgICAgY2xhc3M9XCJza3ktZHJvcGRvd24tYnV0dG9uLWNvbnRhaW5lclwiXG4gICAgICAgID5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwic2t5LWRyb3Bkb3duLWJ1dHRvbi1jb250ZW50LWNvbnRhaW5lclwiPlxuICAgICAgICAgICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwic2t5LWRyb3Bkb3duLWJ1dHRvblwiPiA8L25nLWNvbnRlbnQ+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cInNreS1kcm9wZG93bi1idXR0b24taWNvbi1jb250YWluZXJcIj5cbiAgICAgICAgICAgIDxza3ktaWNvblxuICAgICAgICAgICAgICAqc2t5VGhlbWVJZj1cIidkZWZhdWx0J1wiXG4gICAgICAgICAgICAgIGNsYXNzPVwic2t5LWRyb3Bkb3duLWNhcmV0XCJcbiAgICAgICAgICAgICAgaWNvbj1cImNhcmV0LWRvd25cIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgPC9za3ktaWNvbj5cbiAgICAgICAgICAgIDxza3ktaWNvblxuICAgICAgICAgICAgICAqc2t5VGhlbWVJZj1cIidtb2Rlcm4nXCJcbiAgICAgICAgICAgICAgY2xhc3M9XCJza3ktZHJvcGRvd24tY2FyZXRcIlxuICAgICAgICAgICAgICBpY29uPVwiY2hldnJvbi1kb3duXCJcbiAgICAgICAgICAgICAgaWNvblR5cGU9XCJza3l1eFwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICA8L3NreS1pY29uPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdlxuICAgICAgICAgICpuZ0lmPVwiYnV0dG9uVHlwZSAhPT0gJ3NlbGVjdCcgJiYgYnV0dG9uVHlwZSAhPT0gJ3RhYicgJiYgYnV0dG9uVHlwZVwiXG4gICAgICAgID5cbiAgICAgICAgICA8c2t5LWljb24gW2ljb25dPVwiYnV0dG9uVHlwZVwiIHNpemU9XCJsZ1wiPjwvc2t5LWljb24+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgPC9idXR0b24+XG48L2Rpdj5cblxuPG5nLXRlbXBsYXRlICNtZW51Q29udGFpbmVyVGVtcGxhdGVSZWY+XG4gIDxkaXZcbiAgICBjbGFzcz1cInNreS1kcm9wZG93bi1tZW51LWNvbnRhaW5lclwiXG4gICAgW2NsYXNzLmhpZGRlbl09XCIhaXNWaXNpYmxlXCJcbiAgICAjbWVudUNvbnRhaW5lckVsZW1lbnRSZWZcbiAgPlxuICAgIDxuZy1jb250ZW50IHNlbGVjdD1cInNreS1kcm9wZG93bi1tZW51XCI+PC9uZy1jb250ZW50PlxuICA8L2Rpdj5cbjwvbmctdGVtcGxhdGU+XG4iXX0=
|
|
@@ -1,60 +0,0 @@
|
|
|
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: "12.2.15", ngImport: i0, type: SkyDropdownModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
15
|
-
SkyDropdownModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "12.2.15", 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: "12.2.15", 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: "12.2.15", 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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJvcGRvd24ubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvcG9wb3ZlcnMvc3JjL21vZHVsZXMvZHJvcGRvd24vZHJvcGRvd24ubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUUvQyxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRXpDLE9BQU8sRUFBRSxjQUFjLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFFL0QsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBRWxELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFFOUMsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0seUNBQXlDLENBQUM7QUFFckYsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFFekUsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFFckUsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFFckUsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7O0FBd0I1RCxNQUFNLE9BQU8saUJBQWlCOzsrR0FBakIsaUJBQWlCO2dIQUFqQixpQkFBaUIsaUJBcEIxQiwwQkFBMEI7UUFDMUIsb0JBQW9CO1FBQ3BCLHdCQUF3QjtRQUN4Qix3QkFBd0IsYUFHeEIsWUFBWTtRQUNaLGNBQWM7UUFDZCxhQUFhO1FBQ2IsZ0JBQWdCO1FBQ2hCLDBCQUEwQjtRQUMxQixjQUFjLGFBR2QsMEJBQTBCO1FBQzFCLG9CQUFvQjtRQUNwQix3QkFBd0I7UUFDeEIsd0JBQXdCO2dIQUdmLGlCQUFpQixZQWZuQjtZQUNQLFlBQVk7WUFDWixjQUFjO1lBQ2QsYUFBYTtZQUNiLGdCQUFnQjtZQUNoQiwwQkFBMEI7WUFDMUIsY0FBYztTQUNmOzRGQVFVLGlCQUFpQjtrQkF0QjdCLFFBQVE7bUJBQUM7b0JBQ1IsWUFBWSxFQUFFO3dCQUNaLDBCQUEwQjt3QkFDMUIsb0JBQW9CO3dCQUNwQix3QkFBd0I7d0JBQ3hCLHdCQUF3QjtxQkFDekI7b0JBQ0QsT0FBTyxFQUFFO3dCQUNQLFlBQVk7d0JBQ1osY0FBYzt3QkFDZCxhQUFhO3dCQUNiLGdCQUFnQjt3QkFDaEIsMEJBQTBCO3dCQUMxQixjQUFjO3FCQUNmO29CQUNELE9BQU8sRUFBRTt3QkFDUCwwQkFBMEI7d0JBQzFCLG9CQUFvQjt3QkFDcEIsd0JBQXdCO3dCQUN4Qix3QkFBd0I7cUJBQ3pCO2lCQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcblxuaW1wb3J0IHsgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHsgU2t5QWZmaXhNb2R1bGUsIFNreU92ZXJsYXlNb2R1bGUgfSBmcm9tICdAc2t5dXgvY29yZSc7XG5cbmltcG9ydCB7IFNreUljb25Nb2R1bGUgfSBmcm9tICdAc2t5dXgvaW5kaWNhdG9ycyc7XG5cbmltcG9ydCB7IFNreVRoZW1lTW9kdWxlIH0gZnJvbSAnQHNreXV4L3RoZW1lJztcblxuaW1wb3J0IHsgU2t5UG9wb3ZlcnNSZXNvdXJjZXNNb2R1bGUgfSBmcm9tICcuLi9zaGFyZWQvc2t5LXBvcG92ZXJzLXJlc291cmNlcy5tb2R1bGUnO1xuXG5pbXBvcnQgeyBTa3lEcm9wZG93bkJ1dHRvbkNvbXBvbmVudCB9IGZyb20gJy4vZHJvcGRvd24tYnV0dG9uLmNvbXBvbmVudCc7XG5cbmltcG9ydCB7IFNreURyb3Bkb3duSXRlbUNvbXBvbmVudCB9IGZyb20gJy4vZHJvcGRvd24taXRlbS5jb21wb25lbnQnO1xuXG5pbXBvcnQgeyBTa3lEcm9wZG93bk1lbnVDb21wb25lbnQgfSBmcm9tICcuL2Ryb3Bkb3duLW1lbnUuY29tcG9uZW50JztcblxuaW1wb3J0IHsgU2t5RHJvcGRvd25Db21wb25lbnQgfSBmcm9tICcuL2Ryb3Bkb3duLmNvbXBvbmVudCc7XG5cbkBOZ01vZHVsZSh7XG4gIGRlY2xhcmF0aW9uczogW1xuICAgIFNreURyb3Bkb3duQnV0dG9uQ29tcG9uZW50LFxuICAgIFNreURyb3Bkb3duQ29tcG9uZW50LFxuICAgIFNreURyb3Bkb3duSXRlbUNvbXBvbmVudCxcbiAgICBTa3lEcm9wZG93bk1lbnVDb21wb25lbnQsXG4gIF0sXG4gIGltcG9ydHM6IFtcbiAgICBDb21tb25Nb2R1bGUsXG4gICAgU2t5QWZmaXhNb2R1bGUsXG4gICAgU2t5SWNvbk1vZHVsZSxcbiAgICBTa3lPdmVybGF5TW9kdWxlLFxuICAgIFNreVBvcG92ZXJzUmVzb3VyY2VzTW9kdWxlLFxuICAgIFNreVRoZW1lTW9kdWxlLFxuICBdLFxuICBleHBvcnRzOiBbXG4gICAgU2t5RHJvcGRvd25CdXR0b25Db21wb25lbnQsXG4gICAgU2t5RHJvcGRvd25Db21wb25lbnQsXG4gICAgU2t5RHJvcGRvd25JdGVtQ29tcG9uZW50LFxuICAgIFNreURyb3Bkb3duTWVudUNvbXBvbmVudCxcbiAgXSxcbn0pXG5leHBvcnQgY2xhc3MgU2t5RHJvcGRvd25Nb2R1bGUge31cbiJdfQ==
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
export {};
|
|
2
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJvcGRvd24taG9yaXpvbnRhbC1hbGlnbm1lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9wb3BvdmVycy9zcmMvbW9kdWxlcy9kcm9wZG93bi90eXBlcy9kcm9wZG93bi1ob3Jpem9udGFsLWFsaWdubWVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgU2t5QWZmaXhIb3Jpem9udGFsQWxpZ25tZW50IH0gZnJvbSAnQHNreXV4L2NvcmUnO1xuXG5leHBvcnQgdHlwZSBTa3lEcm9wZG93bkhvcml6b250YWxBbGlnbm1lbnQgPSBTa3lBZmZpeEhvcml6b250YWxBbGlnbm1lbnQ7XG4iXX0=
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
export {};
|
|
2
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJvcGRvd24tbWVudS1jaGFuZ2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9wb3BvdmVycy9zcmMvbW9kdWxlcy9kcm9wZG93bi90eXBlcy9kcm9wZG93bi1tZW51LWNoYW5nZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgU2t5RHJvcGRvd25JdGVtQ29tcG9uZW50IH0gZnJvbSAnLi4vZHJvcGRvd24taXRlbS5jb21wb25lbnQnO1xuXG5leHBvcnQgaW50ZXJmYWNlIFNreURyb3Bkb3duTWVudUNoYW5nZSB7XG4gIC8qKlxuICAgKiBJbmRpY2F0ZXMgdGhlIGFjdGl2ZSBtZW51IGluZGV4LlxuICAgKi9cbiAgYWN0aXZlSW5kZXg/OiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIEluZGljYXRlcyB0aGUgaXRlbXMgaW4gdGhlIG1lbnUuXG4gICAqL1xuICBpdGVtcz86IFNreURyb3Bkb3duSXRlbUNvbXBvbmVudFtdO1xuXG4gIC8qKlxuICAgKiBJbmRpY2F0ZXMgdGhlIHNlbGVjdGVkIGl0ZW0gaW4gdGhlIG1lbnUuXG4gICAqL1xuICBzZWxlY3RlZEl0ZW0/OiBTa3lEcm9wZG93bkl0ZW1Db21wb25lbnQ7XG59XG4iXX0=
|
|
@@ -1,37 +0,0 @@
|
|
|
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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJvcGRvd24tbWVzc2FnZS10eXBlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvcG9wb3ZlcnMvc3JjL21vZHVsZXMvZHJvcGRvd24vdHlwZXMvZHJvcGRvd24tbWVzc2FnZS10eXBlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE1BQU0sQ0FBTixJQUFZLHNCQXlDWDtBQXpDRCxXQUFZLHNCQUFzQjtJQUNoQzs7T0FFRztJQUNILG1FQUFRLENBQUE7SUFFUjs7T0FFRztJQUNILHFFQUFTLENBQUE7SUFFVDs7T0FFRztJQUNILCtGQUFzQixDQUFBO0lBRXRCOztPQUVHO0lBQ0gscUZBQWlCLENBQUE7SUFFakI7O09BRUc7SUFDSCw2RkFBcUIsQ0FBQTtJQUVyQjs7O09BR0c7SUFDSCwrRUFBYyxDQUFBO0lBRWQ7O09BRUc7SUFDSCx1RkFBa0IsQ0FBQTtJQUVsQjs7T0FFRztJQUNILHFGQUFpQixDQUFBO0FBQ25CLENBQUMsRUF6Q1csc0JBQXNCLEtBQXRCLHNCQUFzQixRQXlDakMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgZW51bSBTa3lEcm9wZG93bk1lc3NhZ2VUeXBlIHtcbiAgLyoqXG4gICAqIE9wZW5zIHRoZSBkcm9wZG93biBtZW51LlxuICAgKi9cbiAgT3BlbiA9IDAsXG5cbiAgLyoqXG4gICAqICBDbG9zZXMgdGhlIGRyb3Bkb3duIG1lbnUuXG4gICAqL1xuICBDbG9zZSA9IDEsXG5cbiAgLyoqXG4gICAqIFB1dHMgZm9jdXMgb24gdGhlIGRyb3Bkb3duIGJ1dHRvbi5cbiAgICovXG4gIEZvY3VzVHJpZ2dlckJ1dHRvbiA9IDIsXG5cbiAgLyoqXG4gICAqIFB1dHMgZm9jdXMgb24gdGhlIG5leHQgaXRlbSBpbiB0aGUgZHJvcGRvd24gbWVudS5cbiAgICovXG4gIEZvY3VzTmV4dEl0ZW0gPSAzLFxuXG4gIC8qKlxuICAgKiBQdXRzIGZvY3VzIG9uIHRoZSBwcmV2aW91cyBpdGVtIGluIHRoZSBkcm9wZG93biBtZW51LlxuICAgKi9cbiAgRm9jdXNQcmV2aW91c0l0ZW0gPSA0LFxuXG4gIC8qKlxuICAgKiBSZXBvc2l0aW9ucyB0aGUgZHJvcGRvd24gbWVudSBuZXh0IHRvIHRoZSBkcm9wZG93biBidXR0b24uIFRoaXMgaXMgdXNlZnVsIGZvciB3aGVuIHRoZVxuICAgKiBkcm9wZG93biBtZW51J3Mgd2lkdGggYW5kIGhlaWdodCBjaGFuZ2Ugd2hpbGUgaXQgaXMgb3Blbi5cbiAgICovXG4gIFJlcG9zaXRpb24gPSA1LFxuXG4gIC8qKlxuICAgKiBQdXRzIGZvY3VzIG9uIHRoZSBmaXJzdCBpdGVtIGluIHRoZSBkcm9wZG93biBtZW51LlxuICAgKi9cbiAgRm9jdXNGaXJzdEl0ZW0gPSA2LFxuXG4gIC8qKlxuICAgKiBQdXRzIGZvY3VzIG9uIHRoZSBsYXN0IGl0ZW0gaW4gdGhlIGRyb3Bkb3duIG1lbnUuXG4gICAqL1xuICBGb2N1c0xhc3RJdGVtID0gNyxcbn1cbiJdfQ==
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
export {};
|
|
2
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJvcGRvd24tbWVzc2FnZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3BvcG92ZXJzL3NyYy9tb2R1bGVzL2Ryb3Bkb3duL3R5cGVzL2Ryb3Bkb3duLW1lc3NhZ2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFNreURyb3Bkb3duTWVzc2FnZVR5cGUgfSBmcm9tICcuL2Ryb3Bkb3duLW1lc3NhZ2UtdHlwZSc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgU2t5RHJvcGRvd25NZXNzYWdlIHtcbiAgLyoqXG4gICAqIEluZGljYXRlcyB0aGUgdHlwZSBvZiBtZXNzYWdlIHRvIHNlbmQuXG4gICAqL1xuICB0eXBlPzogU2t5RHJvcGRvd25NZXNzYWdlVHlwZTtcbn1cbiJdfQ==
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
export {};
|
|
2
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJvcGRvd24tdHJpZ2dlci10eXBlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvcG9wb3ZlcnMvc3JjL21vZHVsZXMvZHJvcGRvd24vdHlwZXMvZHJvcGRvd24tdHJpZ2dlci10eXBlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgdHlwZSBTa3lEcm9wZG93blRyaWdnZXJUeXBlID0gJ2NsaWNrJyB8ICdob3Zlcic7XG4iXX0=
|
|
@@ -1,74 +0,0 @@
|
|
|
1
|
-
import { Injectable } from '@angular/core';
|
|
2
|
-
import * as i0 from "@angular/core";
|
|
3
|
-
/**
|
|
4
|
-
* @internal
|
|
5
|
-
*/
|
|
6
|
-
export class SkyPopoverAdapterService {
|
|
7
|
-
getArrowCoordinates(elements, placement, themeName) {
|
|
8
|
-
const callerRect = elements.caller.nativeElement.getBoundingClientRect();
|
|
9
|
-
const popoverRect = elements.popover.nativeElement.getBoundingClientRect();
|
|
10
|
-
const arrowRect = elements.popoverArrow.nativeElement.getBoundingClientRect();
|
|
11
|
-
const pixelTolerance = 20;
|
|
12
|
-
let top;
|
|
13
|
-
let left;
|
|
14
|
-
if (placement === 'above' || placement === 'below') {
|
|
15
|
-
left = callerRect.left + callerRect.width / 2;
|
|
16
|
-
// Make sure the arrow never detaches from the popover.
|
|
17
|
-
if (left - pixelTolerance < popoverRect.left) {
|
|
18
|
-
left = popoverRect.left + pixelTolerance;
|
|
19
|
-
}
|
|
20
|
-
else if (left + pixelTolerance > popoverRect.right) {
|
|
21
|
-
left = popoverRect.right - pixelTolerance;
|
|
22
|
-
}
|
|
23
|
-
if (placement === 'above') {
|
|
24
|
-
if (themeName !== 'modern') {
|
|
25
|
-
top = callerRect.top - arrowRect.height;
|
|
26
|
-
}
|
|
27
|
-
else {
|
|
28
|
-
top = callerRect.top - arrowRect.height + 5;
|
|
29
|
-
}
|
|
30
|
-
}
|
|
31
|
-
else {
|
|
32
|
-
if (themeName !== 'modern') {
|
|
33
|
-
top = callerRect.bottom;
|
|
34
|
-
}
|
|
35
|
-
else {
|
|
36
|
-
top = callerRect.bottom + 4;
|
|
37
|
-
}
|
|
38
|
-
}
|
|
39
|
-
}
|
|
40
|
-
else {
|
|
41
|
-
top = callerRect.top + callerRect.height / 2;
|
|
42
|
-
// Make sure the arrow never detaches from the popover.
|
|
43
|
-
if (top - pixelTolerance < popoverRect.top) {
|
|
44
|
-
top = popoverRect.top + pixelTolerance;
|
|
45
|
-
}
|
|
46
|
-
else if (top + pixelTolerance > popoverRect.bottom) {
|
|
47
|
-
top = popoverRect.bottom - pixelTolerance;
|
|
48
|
-
}
|
|
49
|
-
if (placement === 'left') {
|
|
50
|
-
if (themeName !== 'modern') {
|
|
51
|
-
left = callerRect.left - arrowRect.width;
|
|
52
|
-
}
|
|
53
|
-
else {
|
|
54
|
-
left = callerRect.left - arrowRect.width + 5;
|
|
55
|
-
}
|
|
56
|
-
}
|
|
57
|
-
else {
|
|
58
|
-
if (themeName !== 'modern') {
|
|
59
|
-
left = callerRect.right;
|
|
60
|
-
}
|
|
61
|
-
else {
|
|
62
|
-
left = callerRect.right + 4;
|
|
63
|
-
}
|
|
64
|
-
}
|
|
65
|
-
}
|
|
66
|
-
return { top, left };
|
|
67
|
-
}
|
|
68
|
-
}
|
|
69
|
-
SkyPopoverAdapterService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0, type: SkyPopoverAdapterService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
70
|
-
SkyPopoverAdapterService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0, type: SkyPopoverAdapterService });
|
|
71
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0, type: SkyPopoverAdapterService, decorators: [{
|
|
72
|
-
type: Injectable
|
|
73
|
-
}] });
|
|
74
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG9wb3Zlci1hZGFwdGVyLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9wb3BvdmVycy9zcmMvbW9kdWxlcy9wb3BvdmVyL3BvcG92ZXItYWRhcHRlci5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7O0FBUTNDOztHQUVHO0FBRUgsTUFBTSxPQUFPLHdCQUF3QjtJQUM1QixtQkFBbUIsQ0FDeEIsUUFBbUMsRUFDbkMsU0FBOEIsRUFDOUIsU0FBa0I7UUFFbEIsTUFBTSxVQUFVLEdBQUcsUUFBUSxDQUFDLE1BQU0sQ0FBQyxhQUFhLENBQUMscUJBQXFCLEVBQUUsQ0FBQztRQUN6RSxNQUFNLFdBQVcsR0FBRyxRQUFRLENBQUMsT0FBTyxDQUFDLGFBQWEsQ0FBQyxxQkFBcUIsRUFBRSxDQUFDO1FBQzNFLE1BQU0sU0FBUyxHQUNiLFFBQVEsQ0FBQyxZQUFZLENBQUMsYUFBYSxDQUFDLHFCQUFxQixFQUFFLENBQUM7UUFFOUQsTUFBTSxjQUFjLEdBQUcsRUFBRSxDQUFDO1FBRTFCLElBQUksR0FBVyxDQUFDO1FBQ2hCLElBQUksSUFBWSxDQUFDO1FBRWpCLElBQUksU0FBUyxLQUFLLE9BQU8sSUFBSSxTQUFTLEtBQUssT0FBTyxFQUFFO1lBQ2xELElBQUksR0FBRyxVQUFVLENBQUMsSUFBSSxHQUFHLFVBQVUsQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDO1lBRTlDLHVEQUF1RDtZQUN2RCxJQUFJLElBQUksR0FBRyxjQUFjLEdBQUcsV0FBVyxDQUFDLElBQUksRUFBRTtnQkFDNUMsSUFBSSxHQUFHLFdBQVcsQ0FBQyxJQUFJLEdBQUcsY0FBYyxDQUFDO2FBQzFDO2lCQUFNLElBQUksSUFBSSxHQUFHLGNBQWMsR0FBRyxXQUFXLENBQUMsS0FBSyxFQUFFO2dCQUNwRCxJQUFJLEdBQUcsV0FBVyxDQUFDLEtBQUssR0FBRyxjQUFjLENBQUM7YUFDM0M7WUFFRCxJQUFJLFNBQVMsS0FBSyxPQUFPLEVBQUU7Z0JBQ3pCLElBQUksU0FBUyxLQUFLLFFBQVEsRUFBRTtvQkFDMUIsR0FBRyxHQUFHLFVBQVUsQ0FBQyxHQUFHLEdBQUcsU0FBUyxDQUFDLE1BQU0sQ0FBQztpQkFDekM7cUJBQU07b0JBQ0wsR0FBRyxHQUFHLFVBQVUsQ0FBQyxHQUFHLEdBQUcsU0FBUyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUM7aUJBQzdDO2FBQ0Y7aUJBQU07Z0JBQ0wsSUFBSSxTQUFTLEtBQUssUUFBUSxFQUFFO29CQUMxQixHQUFHLEdBQUcsVUFBVSxDQUFDLE1BQU0sQ0FBQztpQkFDekI7cUJBQU07b0JBQ0wsR0FBRyxHQUFHLFVBQVUsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDO2lCQUM3QjthQUNGO1NBQ0Y7YUFBTTtZQUNMLEdBQUcsR0FBRyxVQUFVLENBQUMsR0FBRyxHQUFHLFVBQVUsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDO1lBRTdDLHVEQUF1RDtZQUN2RCxJQUFJLEdBQUcsR0FBRyxjQUFjLEdBQUcsV0FBVyxDQUFDLEdBQUcsRUFBRTtnQkFDMUMsR0FBRyxHQUFHLFdBQVcsQ0FBQyxHQUFHLEdBQUcsY0FBYyxDQUFDO2FBQ3hDO2lCQUFNLElBQUksR0FBRyxHQUFHLGNBQWMsR0FBRyxXQUFXLENBQUMsTUFBTSxFQUFFO2dCQUNwRCxHQUFHLEdBQUcsV0FBVyxDQUFDLE1BQU0sR0FBRyxjQUFjLENBQUM7YUFDM0M7WUFFRCxJQUFJLFNBQVMsS0FBSyxNQUFNLEVBQUU7Z0JBQ3hCLElBQUksU0FBUyxLQUFLLFFBQVEsRUFBRTtvQkFDMUIsSUFBSSxHQUFHLFVBQVUsQ0FBQyxJQUFJLEdBQUcsU0FBUyxDQUFDLEtBQUssQ0FBQztpQkFDMUM7cUJBQU07b0JBQ0wsSUFBSSxHQUFHLFVBQVUsQ0FBQyxJQUFJLEdBQUcsU0FBUyxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUM7aUJBQzlDO2FBQ0Y7aUJBQU07Z0JBQ0wsSUFBSSxTQUFTLEtBQUssUUFBUSxFQUFFO29CQUMxQixJQUFJLEdBQUcsVUFBVSxDQUFDLEtBQUssQ0FBQztpQkFDekI7cUJBQU07b0JBQ0wsSUFBSSxHQUFHLFVBQVUsQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDO2lCQUM3QjthQUNGO1NBQ0Y7UUFFRCxPQUFPLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxDQUFDO0lBQ3ZCLENBQUM7O3NIQWpFVSx3QkFBd0I7MEhBQXhCLHdCQUF3Qjs0RkFBeEIsd0JBQXdCO2tCQURwQyxVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBTa3lQb3BvdmVyQWRhcHRlckFycm93Q29vcmRpbmF0ZXMgfSBmcm9tICcuL3R5cGVzL3BvcG92ZXItYWRhcHRlci1hcnJvdy1jb29yZGluYXRlcyc7XG5cbmltcG9ydCB7IFNreVBvcG92ZXJBZGFwdGVyRWxlbWVudHMgfSBmcm9tICcuL3R5cGVzL3BvcG92ZXItYWRhcHRlci1lbGVtZW50cyc7XG5cbmltcG9ydCB7IFNreVBvcG92ZXJQbGFjZW1lbnQgfSBmcm9tICcuL3R5cGVzL3BvcG92ZXItcGxhY2VtZW50JztcblxuLyoqXG4gKiBAaW50ZXJuYWxcbiAqL1xuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIFNreVBvcG92ZXJBZGFwdGVyU2VydmljZSB7XG4gIHB1YmxpYyBnZXRBcnJvd0Nvb3JkaW5hdGVzKFxuICAgIGVsZW1lbnRzOiBTa3lQb3BvdmVyQWRhcHRlckVsZW1lbnRzLFxuICAgIHBsYWNlbWVudDogU2t5UG9wb3ZlclBsYWNlbWVudCxcbiAgICB0aGVtZU5hbWU/OiBzdHJpbmdcbiAgKTogU2t5UG9wb3ZlckFkYXB0ZXJBcnJvd0Nvb3JkaW5hdGVzIHtcbiAgICBjb25zdCBjYWxsZXJSZWN0ID0gZWxlbWVudHMuY2FsbGVyLm5hdGl2ZUVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gICAgY29uc3QgcG9wb3ZlclJlY3QgPSBlbGVtZW50cy5wb3BvdmVyLm5hdGl2ZUVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gICAgY29uc3QgYXJyb3dSZWN0ID1cbiAgICAgIGVsZW1lbnRzLnBvcG92ZXJBcnJvdy5uYXRpdmVFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuXG4gICAgY29uc3QgcGl4ZWxUb2xlcmFuY2UgPSAyMDtcblxuICAgIGxldCB0b3A6IG51bWJlcjtcbiAgICBsZXQgbGVmdDogbnVtYmVyO1xuXG4gICAgaWYgKHBsYWNlbWVudCA9PT0gJ2Fib3ZlJyB8fCBwbGFjZW1lbnQgPT09ICdiZWxvdycpIHtcbiAgICAgIGxlZnQgPSBjYWxsZXJSZWN0LmxlZnQgKyBjYWxsZXJSZWN0LndpZHRoIC8gMjtcblxuICAgICAgLy8gTWFrZSBzdXJlIHRoZSBhcnJvdyBuZXZlciBkZXRhY2hlcyBmcm9tIHRoZSBwb3BvdmVyLlxuICAgICAgaWYgKGxlZnQgLSBwaXhlbFRvbGVyYW5jZSA8IHBvcG92ZXJSZWN0LmxlZnQpIHtcbiAgICAgICAgbGVmdCA9IHBvcG92ZXJSZWN0LmxlZnQgKyBwaXhlbFRvbGVyYW5jZTtcbiAgICAgIH0gZWxzZSBpZiAobGVmdCArIHBpeGVsVG9sZXJhbmNlID4gcG9wb3ZlclJlY3QucmlnaHQpIHtcbiAgICAgICAgbGVmdCA9IHBvcG92ZXJSZWN0LnJpZ2h0IC0gcGl4ZWxUb2xlcmFuY2U7XG4gICAgICB9XG5cbiAgICAgIGlmIChwbGFjZW1lbnQgPT09ICdhYm92ZScpIHtcbiAgICAgICAgaWYgKHRoZW1lTmFtZSAhPT0gJ21vZGVybicpIHtcbiAgICAgICAgICB0b3AgPSBjYWxsZXJSZWN0LnRvcCAtIGFycm93UmVjdC5oZWlnaHQ7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdG9wID0gY2FsbGVyUmVjdC50b3AgLSBhcnJvd1JlY3QuaGVpZ2h0ICsgNTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaWYgKHRoZW1lTmFtZSAhPT0gJ21vZGVybicpIHtcbiAgICAgICAgICB0b3AgPSBjYWxsZXJSZWN0LmJvdHRvbTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0b3AgPSBjYWxsZXJSZWN0LmJvdHRvbSArIDQ7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgdG9wID0gY2FsbGVyUmVjdC50b3AgKyBjYWxsZXJSZWN0LmhlaWdodCAvIDI7XG5cbiAgICAgIC8vIE1ha2Ugc3VyZSB0aGUgYXJyb3cgbmV2ZXIgZGV0YWNoZXMgZnJvbSB0aGUgcG9wb3Zlci5cbiAgICAgIGlmICh0b3AgLSBwaXhlbFRvbGVyYW5jZSA8IHBvcG92ZXJSZWN0LnRvcCkge1xuICAgICAgICB0b3AgPSBwb3BvdmVyUmVjdC50b3AgKyBwaXhlbFRvbGVyYW5jZTtcbiAgICAgIH0gZWxzZSBpZiAodG9wICsgcGl4ZWxUb2xlcmFuY2UgPiBwb3BvdmVyUmVjdC5ib3R0b20pIHtcbiAgICAgICAgdG9wID0gcG9wb3ZlclJlY3QuYm90dG9tIC0gcGl4ZWxUb2xlcmFuY2U7XG4gICAgICB9XG5cbiAgICAgIGlmIChwbGFjZW1lbnQgPT09ICdsZWZ0Jykge1xuICAgICAgICBpZiAodGhlbWVOYW1lICE9PSAnbW9kZXJuJykge1xuICAgICAgICAgIGxlZnQgPSBjYWxsZXJSZWN0LmxlZnQgLSBhcnJvd1JlY3Qud2lkdGg7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgbGVmdCA9IGNhbGxlclJlY3QubGVmdCAtIGFycm93UmVjdC53aWR0aCArIDU7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGlmICh0aGVtZU5hbWUgIT09ICdtb2Rlcm4nKSB7XG4gICAgICAgICAgbGVmdCA9IGNhbGxlclJlY3QucmlnaHQ7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgbGVmdCA9IGNhbGxlclJlY3QucmlnaHQgKyA0O1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHsgdG9wLCBsZWZ0IH07XG4gIH1cbn1cbiJdfQ==
|