@skyux/flyout 5.0.3 → 5.5.0-alpha.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 (74) hide show
  1. package/README.md +6 -4
  2. package/bundles/skyux-flyout.umd.js +144 -55
  3. package/documentation.json +486 -162
  4. package/esm2015/index.js +14 -0
  5. package/esm2015/index.js.map +1 -0
  6. package/esm2015/lib/modules/flyout/flyout-adapter.service.js +64 -0
  7. package/esm2015/lib/modules/flyout/flyout-adapter.service.js.map +1 -0
  8. package/esm2015/lib/modules/flyout/flyout-instance.js +109 -0
  9. package/esm2015/lib/modules/flyout/flyout-instance.js.map +1 -0
  10. package/esm2015/lib/modules/flyout/flyout-iterator.component.js +59 -0
  11. package/esm2015/lib/modules/flyout/flyout-iterator.component.js.map +1 -0
  12. package/esm2015/lib/modules/flyout/flyout-media-query.service.js +72 -0
  13. package/esm2015/lib/modules/flyout/flyout-media-query.service.js.map +1 -0
  14. package/esm2015/lib/modules/flyout/flyout.component.js +505 -0
  15. package/esm2015/lib/modules/flyout/flyout.component.js.map +1 -0
  16. package/esm2015/lib/modules/flyout/flyout.module.js +56 -0
  17. package/esm2015/lib/modules/flyout/flyout.module.js.map +1 -0
  18. package/esm2015/lib/modules/flyout/flyout.service.js +167 -0
  19. package/esm2015/lib/modules/flyout/flyout.service.js.map +1 -0
  20. package/esm2015/lib/modules/flyout/types/flyout-action.js +2 -0
  21. package/esm2015/lib/modules/flyout/types/flyout-action.js.map +1 -0
  22. package/esm2015/lib/modules/flyout/types/flyout-before-close-handler.js +9 -0
  23. package/esm2015/lib/modules/flyout/types/flyout-before-close-handler.js.map +1 -0
  24. package/esm2015/lib/modules/flyout/types/flyout-close-args.js +2 -0
  25. package/esm2015/lib/modules/flyout/types/flyout-close-args.js.map +1 -0
  26. package/esm2015/lib/modules/flyout/types/flyout-config.js +2 -0
  27. package/esm2015/lib/modules/flyout/types/flyout-config.js.map +1 -0
  28. package/esm2015/lib/modules/flyout/types/flyout-message-type.js +13 -0
  29. package/esm2015/lib/modules/flyout/types/flyout-message-type.js.map +1 -0
  30. package/esm2015/lib/modules/flyout/types/flyout-message.js +2 -0
  31. package/esm2015/lib/modules/flyout/types/flyout-message.js.map +1 -0
  32. package/esm2015/lib/modules/flyout/types/flyout-permalink.js +2 -0
  33. package/esm2015/lib/modules/flyout/types/flyout-permalink.js.map +1 -0
  34. package/esm2015/lib/modules/shared/sky-flyout-resources.module.js +54 -0
  35. package/esm2015/lib/modules/shared/sky-flyout-resources.module.js.map +1 -0
  36. package/esm2015/skyux-flyout.js +2 -2
  37. package/esm2015/skyux-flyout.js.map +1 -0
  38. package/fesm2015/skyux-flyout.js +131 -49
  39. package/fesm2015/skyux-flyout.js.map +1 -1
  40. package/index.d.ts +11 -0
  41. package/{modules → lib/modules}/flyout/flyout-adapter.service.d.ts +0 -0
  42. package/{modules → lib/modules}/flyout/flyout-instance.d.ts +12 -2
  43. package/{modules → lib/modules}/flyout/flyout-iterator.component.d.ts +0 -0
  44. package/{modules → lib/modules}/flyout/flyout-media-query.service.d.ts +0 -0
  45. package/{modules → lib/modules}/flyout/flyout.component.d.ts +11 -2
  46. package/lib/modules/flyout/flyout.module.d.ts +17 -0
  47. package/{modules → lib/modules}/flyout/flyout.service.d.ts +8 -7
  48. package/{modules → lib/modules}/flyout/types/flyout-action.d.ts +0 -0
  49. package/lib/modules/flyout/types/flyout-before-close-handler.d.ts +10 -0
  50. package/lib/modules/flyout/types/flyout-close-args.d.ts +9 -0
  51. package/{modules → lib/modules}/flyout/types/flyout-config.d.ts +10 -0
  52. package/{modules → lib/modules}/flyout/types/flyout-message-type.d.ts +0 -0
  53. package/{modules → lib/modules}/flyout/types/flyout-message.d.ts +3 -0
  54. package/{modules → lib/modules}/flyout/types/flyout-permalink.d.ts +0 -0
  55. package/{modules → lib/modules}/shared/sky-flyout-resources.module.d.ts +0 -0
  56. package/package.json +12 -11
  57. package/skyux-flyout.d.ts +1 -1
  58. package/LICENSE +0 -21
  59. package/esm2015/modules/flyout/flyout-adapter.service.js +0 -64
  60. package/esm2015/modules/flyout/flyout-instance.js +0 -98
  61. package/esm2015/modules/flyout/flyout-iterator.component.js +0 -59
  62. package/esm2015/modules/flyout/flyout-media-query.service.js +0 -72
  63. package/esm2015/modules/flyout/flyout.component.js +0 -456
  64. package/esm2015/modules/flyout/flyout.module.js +0 -52
  65. package/esm2015/modules/flyout/flyout.service.js +0 -155
  66. package/esm2015/modules/flyout/types/flyout-action.js +0 -2
  67. package/esm2015/modules/flyout/types/flyout-config.js +0 -2
  68. package/esm2015/modules/flyout/types/flyout-message-type.js +0 -13
  69. package/esm2015/modules/flyout/types/flyout-message.js +0 -2
  70. package/esm2015/modules/flyout/types/flyout-permalink.js +0 -2
  71. package/esm2015/modules/shared/sky-flyout-resources.module.js +0 -54
  72. package/esm2015/public-api.js +0 -12
  73. package/modules/flyout/flyout.module.d.ts +0 -16
  74. package/public-api.d.ts +0 -9
@@ -1,456 +0,0 @@
1
- import { Component, ChangeDetectionStrategy, ElementRef, HostListener, ReflectiveInjector, ViewChild, ViewContainerRef, } from '@angular/core';
2
- import { animate, state, style, transition, trigger, } from '@angular/animations';
3
- import { fromEvent, Subject } from 'rxjs';
4
- import { take, takeUntil, takeWhile } from 'rxjs/operators';
5
- import { SkyMediaBreakpoints, SkyMediaQueryService, } from '@skyux/core';
6
- import { SkyFlyoutAdapterService } from './flyout-adapter.service';
7
- import { SkyFlyoutInstance } from './flyout-instance';
8
- import { SkyFlyoutMediaQueryService } from './flyout-media-query.service';
9
- import { SkyFlyoutMessageType } from './types/flyout-message-type';
10
- import * as i0 from "@angular/core";
11
- import * as i1 from "./flyout-adapter.service";
12
- import * as i2 from "@skyux/i18n";
13
- import * as i3 from "./flyout-media-query.service";
14
- import * as i4 from "@skyux/core";
15
- import * as i5 from "@skyux/indicators";
16
- import * as i6 from "./flyout-iterator.component";
17
- import * as i7 from "@angular/common";
18
- import * as i8 from "@skyux/theme";
19
- import * as i9 from "@skyux/router";
20
- import * as i10 from "@angular/router";
21
- const FLYOUT_OPEN_STATE = 'flyoutOpen';
22
- const FLYOUT_CLOSED_STATE = 'flyoutClosed';
23
- let nextId = 0;
24
- /**
25
- * @internal
26
- */
27
- export class SkyFlyoutComponent {
28
- constructor(adapter, changeDetector, injector, resolver, resourcesService, flyoutMediaQueryService, elementRef, uiConfigService) {
29
- this.adapter = adapter;
30
- this.changeDetector = changeDetector;
31
- this.injector = injector;
32
- this.resolver = resolver;
33
- this.resourcesService = resourcesService;
34
- this.flyoutMediaQueryService = flyoutMediaQueryService;
35
- this.elementRef = elementRef;
36
- this.uiConfigService = uiConfigService;
37
- this.flyoutId = `sky-flyout-${++nextId}`;
38
- this.flyoutState = FLYOUT_CLOSED_STATE;
39
- this.isOpen = false;
40
- this.isOpening = false;
41
- this.flyoutWidth = 0;
42
- this.isDragging = false;
43
- this.isFullscreen = false;
44
- this.resizeKeyControlActive = false;
45
- this.xCoord = 0;
46
- this.windowBufferSize = 20;
47
- /**
48
- * @internal
49
- */
50
- this.widthStep = 10;
51
- this.ngUnsubscribe = new Subject();
52
- this._messageStream = new Subject();
53
- // All commands flow through the message stream.
54
- this.messageStream
55
- .pipe(takeUntil(this.ngUnsubscribe))
56
- .subscribe((message) => {
57
- this.handleIncomingMessages(message);
58
- });
59
- }
60
- get messageStream() {
61
- return this._messageStream;
62
- }
63
- get permalink() {
64
- const permalink = this.config.permalink;
65
- if (permalink) {
66
- return permalink;
67
- }
68
- return {};
69
- }
70
- get permalinkLabel() {
71
- if (this.permalink.label) {
72
- return this.permalink.label;
73
- }
74
- return this.getString('skyux_flyout_permalink_button');
75
- }
76
- get primaryAction() {
77
- let primaryAction = this.config.primaryAction;
78
- if (primaryAction) {
79
- return primaryAction;
80
- }
81
- return {};
82
- }
83
- get primaryActionLabel() {
84
- if (this.config.primaryAction && this.config.primaryAction.label) {
85
- return this.config.primaryAction.label;
86
- }
87
- return this.getString('skyux_flyout_primary_action_button');
88
- }
89
- ngOnInit() {
90
- this.adapter.adjustHeaderForHelp(this.flyoutHeader);
91
- }
92
- ngOnDestroy() {
93
- this.ngUnsubscribe.next();
94
- this.ngUnsubscribe.complete();
95
- }
96
- onWindowResize(event) {
97
- if (this.flyoutMediaQueryService.isWidthWithinBreakpiont(event.target.innerWidth, SkyMediaBreakpoints.xs)) {
98
- this.updateBreakpointAndResponsiveClass(event.target.innerWidth);
99
- }
100
- else {
101
- this.updateBreakpointAndResponsiveClass(this.flyoutWidth);
102
- }
103
- this.setFullscreen();
104
- if (event.target.innerWidth - this.flyoutWidth < this.windowBufferSize) {
105
- this.flyoutWidth = event.target.innerWidth - this.windowBufferSize;
106
- this.xCoord = this.windowBufferSize;
107
- this.setUserData();
108
- }
109
- }
110
- attach(component, config) {
111
- this.cleanTemplate();
112
- // Emit the closed event on any previously opened flyout instance
113
- if (this.flyoutInstance) {
114
- this.notifyClosed();
115
- }
116
- this.config = Object.assign({ providers: [] }, config);
117
- this.config.defaultWidth =
118
- this.config.defaultWidth || window.innerWidth / 2;
119
- this.config.minWidth = this.config.minWidth || 320;
120
- this.config.maxWidth = this.config.maxWidth || this.config.defaultWidth;
121
- this.config.showIterator = this.config.showIterator || false;
122
- this.config.iteratorNextButtonDisabled =
123
- this.config.iteratorNextButtonDisabled || false;
124
- this.config.iteratorPreviousButtonDisabled =
125
- this.config.iteratorPreviousButtonDisabled || false;
126
- const factory = this.resolver.resolveComponentFactory(component);
127
- /* tslint:disable:deprecation */
128
- /**
129
- * NOTE: We need to update this to use the new Injector.create(options) method
130
- * after Angular 4 support is dropped.
131
- */
132
- const providers = ReflectiveInjector.resolve(this.config.providers);
133
- const injector = ReflectiveInjector.fromResolvedProviders(providers, this.injector);
134
- /* tslint:enable:deprecation */
135
- const componentRef = this.target.createComponent(factory, undefined, injector);
136
- this.flyoutInstance = this.createFlyoutInstance(componentRef.instance);
137
- // Open the flyout immediately.
138
- this.messageStream.next({
139
- type: SkyFlyoutMessageType.Open,
140
- });
141
- if (this.config.settingsKey) {
142
- this.uiConfigService
143
- .getConfig(this.config.settingsKey)
144
- .pipe(take(1))
145
- .subscribe((value) => {
146
- if (value && value.flyoutWidth) {
147
- this.flyoutWidth = value.flyoutWidth;
148
- }
149
- else {
150
- // Bad data, or config is the default config.
151
- this.flyoutWidth = this.config.defaultWidth;
152
- }
153
- this.checkInitialSize();
154
- });
155
- }
156
- else {
157
- this.flyoutWidth = this.config.defaultWidth;
158
- this.checkInitialSize();
159
- }
160
- return this.flyoutInstance;
161
- }
162
- close() {
163
- this.messageStream.next({
164
- type: SkyFlyoutMessageType.Close,
165
- });
166
- }
167
- invokePrimaryAction() {
168
- this.primaryAction.callback();
169
- if (this.primaryAction.closeAfterInvoking) {
170
- this.close();
171
- }
172
- return false;
173
- }
174
- getAnimationState() {
175
- return this.isOpening ? FLYOUT_OPEN_STATE : FLYOUT_CLOSED_STATE;
176
- }
177
- animationDone(event) {
178
- if (event.toState === FLYOUT_OPEN_STATE) {
179
- this.isOpen = true;
180
- }
181
- if (event.toState === FLYOUT_CLOSED_STATE) {
182
- this.isOpen = false;
183
- this.notifyClosed();
184
- this.cleanTemplate();
185
- }
186
- }
187
- onHeaderGrabHandleMouseDown(event) {
188
- this.onResizeHandleMouseDown(event);
189
- }
190
- onHeaderGrabHandleKeyDown(event) {
191
- this.handleResizeKeyDown(event);
192
- }
193
- onResizeHandleKeyDown(event) {
194
- this.handleResizeKeyDown(event);
195
- }
196
- onResizeHandleMouseDown(event) {
197
- event.preventDefault();
198
- event.stopPropagation();
199
- if (this.isFullscreen) {
200
- return;
201
- }
202
- this.isDragging = true;
203
- this.xCoord = event.clientX;
204
- this.adapter.toggleIframePointerEvents(false);
205
- fromEvent(document, 'mousemove')
206
- .pipe(takeWhile(() => {
207
- return this.isDragging;
208
- }))
209
- .subscribe((moveEvent) => {
210
- this.onMouseMove(moveEvent);
211
- });
212
- fromEvent(document, 'mouseup')
213
- .pipe(takeWhile(() => {
214
- return this.isDragging;
215
- }))
216
- .subscribe((mouseUpEvent) => {
217
- this.onHandleRelease(mouseUpEvent);
218
- });
219
- }
220
- onMouseMove(event) {
221
- /* Sanity check */
222
- /* istanbul ignore if */
223
- if (!this.isDragging) {
224
- return;
225
- }
226
- const offsetX = event.clientX - this.xCoord;
227
- let width = this.flyoutWidth;
228
- width -= offsetX;
229
- if (width < this.config.minWidth || width > this.config.maxWidth) {
230
- return;
231
- }
232
- if (window.innerWidth - width < this.windowBufferSize) {
233
- width = window.innerWidth - this.windowBufferSize;
234
- this.xCoord = this.windowBufferSize;
235
- }
236
- else {
237
- this.xCoord = event.clientX;
238
- }
239
- this.flyoutWidth = width;
240
- this.updateBreakpointAndResponsiveClass(this.flyoutWidth);
241
- this.changeDetector.markForCheck();
242
- }
243
- onHandleRelease(event) {
244
- fromEvent(document, 'click')
245
- .pipe(take(1))
246
- .subscribe(() => {
247
- this.isDragging = false;
248
- this.adapter.toggleIframePointerEvents(true);
249
- this.setUserData();
250
- });
251
- }
252
- onIteratorPreviousButtonClick() {
253
- this.flyoutInstance.iteratorPreviousButtonClick.emit();
254
- }
255
- onIteratorNextButtonClick() {
256
- this.flyoutInstance.iteratorNextButtonClick.emit();
257
- }
258
- createFlyoutInstance(component) {
259
- const instance = new SkyFlyoutInstance();
260
- instance.componentInstance = component;
261
- instance.hostController
262
- .pipe(takeUntil(this.ngUnsubscribe))
263
- .subscribe((message) => {
264
- this.messageStream.next(message);
265
- });
266
- return instance;
267
- }
268
- handleIncomingMessages(message) {
269
- /* tslint:disable-next-line:switch-default */
270
- switch (message.type) {
271
- case SkyFlyoutMessageType.Open:
272
- if (!this.isOpen) {
273
- this.isOpen = false;
274
- this.isOpening = true;
275
- }
276
- break;
277
- case SkyFlyoutMessageType.Close:
278
- this.isOpen = true;
279
- this.isOpening = false;
280
- break;
281
- case SkyFlyoutMessageType.EnableIteratorNextButton:
282
- this.config.iteratorNextButtonDisabled = false;
283
- break;
284
- case SkyFlyoutMessageType.EnableIteratorPreviousButton:
285
- this.config.iteratorPreviousButtonDisabled = false;
286
- break;
287
- case SkyFlyoutMessageType.DisableIteratorNextButton:
288
- this.config.iteratorNextButtonDisabled = true;
289
- break;
290
- case SkyFlyoutMessageType.DisableIteratorPreviousButton:
291
- this.config.iteratorPreviousButtonDisabled = true;
292
- break;
293
- }
294
- this.changeDetector.markForCheck();
295
- }
296
- notifyClosed() {
297
- this.flyoutInstance.closed.emit();
298
- this.flyoutInstance.closed.complete();
299
- }
300
- cleanTemplate() {
301
- this.target.clear();
302
- }
303
- updateBreakpointAndResponsiveClass(width) {
304
- this.flyoutMediaQueryService.setBreakpointForWidth(width);
305
- const newBreakpiont = this.flyoutMediaQueryService.current;
306
- this.adapter.setResponsiveClass(this.elementRef, newBreakpiont);
307
- }
308
- setFullscreen() {
309
- if (window.innerWidth - this.windowBufferSize < this.config.minWidth) {
310
- this.isFullscreen = true;
311
- }
312
- else {
313
- this.isFullscreen = false;
314
- }
315
- }
316
- setUserData() {
317
- if (this.config.settingsKey) {
318
- this.uiConfigService
319
- .setConfig(this.config.settingsKey, {
320
- flyoutWidth: this.flyoutWidth,
321
- })
322
- .pipe(take(1))
323
- .subscribe(() => { }, (err) => {
324
- console.warn('Could not save flyout data.');
325
- console.warn(err);
326
- });
327
- }
328
- }
329
- checkInitialSize() {
330
- if (this.flyoutWidth < this.config.minWidth) {
331
- this.flyoutWidth = this.config.minWidth;
332
- this.setUserData();
333
- }
334
- else if (this.flyoutWidth > this.config.maxWidth) {
335
- this.flyoutWidth = this.config.maxWidth;
336
- this.setUserData();
337
- }
338
- // Ensure flyout does not load larger than the window and its buffer
339
- if (window.innerWidth - this.flyoutWidth < this.windowBufferSize) {
340
- this.flyoutWidth = window.innerWidth - this.windowBufferSize;
341
- this.xCoord = this.windowBufferSize;
342
- this.setUserData();
343
- }
344
- if (this.flyoutMediaQueryService.isWidthWithinBreakpiont(window.innerWidth, SkyMediaBreakpoints.xs)) {
345
- this.updateBreakpointAndResponsiveClass(window.innerWidth);
346
- }
347
- else {
348
- this.updateBreakpointAndResponsiveClass(this.flyoutWidth);
349
- }
350
- this.setFullscreen();
351
- }
352
- getString(key) {
353
- // TODO: Need to implement the async `getString` method in a breaking change.
354
- return this.resourcesService.getStringForLocale({ locale: 'en-US' }, key);
355
- }
356
- handleResizeKeyDown(event) {
357
- /* istanbul ignore else */
358
- if (event.key) {
359
- const keyPressed = event.key.toLowerCase().replace('arrow', '');
360
- switch (keyPressed) {
361
- case 'enter':
362
- case ' ':
363
- this.resizeKeyControlActive = !this.resizeKeyControlActive;
364
- break;
365
- case 'tab':
366
- /* istanbul ignore else */
367
- if (this.resizeKeyControlActive) {
368
- this.resizeKeyControlActive = false;
369
- }
370
- case 'left':
371
- if (this.resizeKeyControlActive) {
372
- /* istanbul ignore else */
373
- if (this.flyoutWidth < this.config.maxWidth) {
374
- this.flyoutWidth = Math.min(this.flyoutWidth + this.widthStep, this.config.maxWidth);
375
- }
376
- }
377
- break;
378
- case 'right':
379
- if (this.resizeKeyControlActive) {
380
- /* istanbul ignore else */
381
- if (this.flyoutWidth > this.config.minWidth) {
382
- this.flyoutWidth = Math.max(this.flyoutWidth - this.widthStep, this.config.minWidth);
383
- }
384
- }
385
- break;
386
- /* istanbul ignore next */
387
- default:
388
- break;
389
- }
390
- }
391
- }
392
- }
393
- SkyFlyoutComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0, type: SkyFlyoutComponent, deps: [{ token: i1.SkyFlyoutAdapterService }, { token: i0.ChangeDetectorRef }, { token: i0.Injector }, { token: i0.ComponentFactoryResolver }, { token: i2.SkyLibResourcesService }, { token: i3.SkyFlyoutMediaQueryService }, { token: i0.ElementRef }, { token: i4.SkyUIConfigService }], target: i0.ɵɵFactoryTarget.Component });
394
- SkyFlyoutComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.15", type: SkyFlyoutComponent, selector: "sky-flyout", host: { listeners: { "window:resize": "onWindowResize($event)" } }, providers: [
395
- SkyFlyoutAdapterService,
396
- SkyFlyoutMediaQueryService,
397
- { provide: SkyMediaQueryService, useExisting: SkyFlyoutMediaQueryService },
398
- ], viewQueries: [{ propertyName: "flyoutRef", first: true, predicate: ["flyoutRef"], descendants: true, read: ElementRef, static: true }, { propertyName: "target", first: true, predicate: ["target"], descendants: true, read: ViewContainerRef, static: true }, { propertyName: "flyoutHeader", first: true, predicate: ["flyoutHeader"], descendants: true, read: ElementRef, static: true }], ngImport: i0, template: "<div\n class=\"sky-flyout\"\n tabindex=\"-1\"\n [attr.role]=\"config?.ariaRole\"\n [attr.aria-describedby]=\"config?.ariaDescribedBy\"\n [attr.aria-labelledby]=\"config?.ariaLabelledBy\"\n [id]=\"flyoutId\"\n [ngClass]=\"{\n 'sky-flyout-hidden': !isOpen && !isOpening,\n 'sky-flyout-fullscreen': isFullscreen\n }\"\n [skyThemeClass]=\"{\n 'sky-shadow': 'default',\n 'sky-elevation-8': 'modern'\n }\"\n (@flyoutState.done)=\"animationDone($event)\"\n [@flyoutState]=\"getAnimationState()\"\n [style.width.px]=\"flyoutWidth\"\n #flyoutRef\n>\n <div\n class=\"sky-flyout-resize-handle\"\n role=\"separator\"\n tabindex=\"0\"\n type=\"range\"\n [attr.aria-controls]=\"flyoutId\"\n [attr.aria-label]=\"'skyux_flyout_resize_handle' | skyLibResources\"\n [attr.aria-valuemax]=\"config.maxWidth\"\n [attr.aria-valuemin]=\"config.minWidth\"\n [attr.aria-valuenow]=\"flyoutWidth\"\n (keydown)=\"onResizeHandleKeyDown($event)\"\n (mousedown)=\"onResizeHandleMouseDown($event)\"\n ></div>\n\n <div\n class=\"sky-flyout-header\"\n [skyThemeClass]=\"{\n 'sky-padding-squish-large': 'default'\n }\"\n #flyoutHeader\n >\n <div class=\"sky-flyout-header-content\">\n <button\n *skyThemeIf=\"'modern'\"\n class=\"\n sky-btn\n sky-btn-icon-borderless\n sky-margin-inline-sm\n sky-flyout-header-grab-handle\n \"\n [attr.aria-label]=\"'skyux_flyout_resize_handle' | skyLibResources\"\n (keydown)=\"onHeaderGrabHandleKeyDown($event)\"\n (mousedown)=\"onHeaderGrabHandleMouseDown($event)\"\n >\n <sky-icon icon=\"tile-drag\" iconType=\"skyux\" size=\"lg\"> </sky-icon>\n </button>\n\n <sky-flyout-iterator\n *ngIf=\"config.showIterator\"\n [nextButtonDisabled]=\"config.iteratorNextButtonDisabled\"\n [previousButtonDisabled]=\"config.iteratorPreviousButtonDisabled\"\n (nextButtonClick)=\"onIteratorNextButtonClick()\"\n (previousButtonClick)=\"onIteratorPreviousButtonClick()\"\n >\n </sky-flyout-iterator>\n </div>\n <div class=\"sky-flyout-header-buttons\">\n <ng-container *ngTemplateOutlet=\"permalinkTemplate\"> </ng-container>\n <ng-container *ngTemplateOutlet=\"primaryActionTemplate\"> </ng-container>\n <button\n class=\"sky-btn sky-flyout-btn-close sky-label-icon-theme-default\"\n type=\"button\"\n [attr.aria-label]=\"'skyux_flyout_close' | skyLibResources\"\n [skyThemeClass]=\"{\n 'sky-btn-default': 'default',\n 'sky-btn-icon-borderless': 'modern'\n }\"\n (click)=\"close()\"\n >\n <sky-icon *skyThemeIf=\"'default'\" icon=\"close\"> </sky-icon>\n <sky-icon\n *skyThemeIf=\"'modern'\"\n icon=\"close\"\n iconType=\"skyux\"\n size=\"lg\"\n >\n </sky-icon>\n </button>\n </div>\n </div>\n <div class=\"sky-flyout-content\">\n <div #target></div>\n </div>\n</div>\n\n<ng-template #permalinkTemplate>\n <ng-template [ngIf]=\"permalink\">\n <ng-template [ngIf]=\"permalink.url\">\n <a\n class=\"sky-btn sky-flyout-btn-permalink sky-margin-inline-default\"\n [skyHref]=\"permalink.url\"\n [skyThemeClass]=\"{\n 'sky-btn-default': 'default',\n 'sky-btn-borderless': 'modern'\n }\"\n (click)=\"close()\"\n >\n {{ permalinkLabel }}\n </a>\n </ng-template>\n <ng-template [ngIf]=\"permalink.route\">\n <a\n class=\"sky-btn sky-flyout-btn-permalink sky-margin-inline-default\"\n [routerLink]=\"permalink.route.commands\"\n [fragment]=\"permalink.route.extras?.fragment\"\n [skyThemeClass]=\"{\n 'sky-btn-default': 'default',\n 'sky-btn-borderless': 'modern'\n }\"\n [queryParams]=\"permalink.route.extras?.queryParams\"\n [queryParamsHandling]=\"permalink.route.extras?.queryParamsHandling\"\n [state]=\"permalink.route.extras?.state\"\n (click)=\"close()\"\n >\n {{ permalinkLabel }}\n </a>\n </ng-template>\n </ng-template>\n</ng-template>\n\n<ng-template #primaryActionTemplate>\n <ng-template [ngIf]=\"primaryAction && primaryAction.callback\">\n <button\n type=\"button\"\n class=\"\n sky-btn\n sky-btn-default\n sky-flyout-btn-primary-action\n sky-margin-inline-default\n \"\n (click)=\"invokePrimaryAction()\"\n >\n {{ primaryActionLabel }}\n </button>\n </ng-template>\n</ng-template>\n", styles: [".sky-flyout{position:fixed;right:0;top:0;bottom:0;height:100%;background-color:#fff;border-left:6px solid #0974a1;z-index:1001}.sky-flyout:focus{outline:none}.sky-flyout.sky-flyout-fullscreen{min-width:100%;max-width:100%}.sky-flyout.sky-flyout-fullscreen .sky-flyout-resize-handle{cursor:initial}.sky-flyout.sky-flyout-hidden{visibility:hidden}.sky-flyout .sky-flyout-input-aria-only{width:0;height:0;padding:0;opacity:0;position:absolute;margin:-1px;border:0;overflow:hidden;clip:rect(0 0 0 0);outline:none}.sky-flyout-resize-handle{-webkit-appearance:none;-moz-appearance:none;height:100%;width:14px;position:absolute;left:-10px;cursor:ew-resize;padding:0;border:0;background:transparent;display:block;top:0;bottom:0;direction:rtl}.sky-flyout-resize-handle::-moz-range-thumb,.sky-flyout-resize-handle::-moz-range-track{-webkit-appearance:none;-moz-appearance:none;width:0;height:0;border-radius:0;border:0 none;background:none;display:none}.sky-flyout-resize-handle::-ms-thumb,.sky-flyout-resize-handle::-ms-track{-webkit-appearance:none;-moz-appearance:none;width:0;height:0;border-radius:0;border:0 none;background:none;display:none}.sky-flyout-resize-handle::-webkit-slider-thumb{-webkit-appearance:none;-moz-appearance:none;width:0;height:0;border-radius:0;border:0 none;background:none;display:none}.sky-flyout-header{border-bottom:1px solid #cdcfd2;width:100%;background:#eeeeef;height:50px;display:flex;align-items:flex-start}.sky-flyout-header-content{flex-grow:1}.sky-flyout-btn-permalink:hover{text-decoration:none}.sky-flyout-help-shim{padding-right:8px}@media (min-width: 768px){.sky-flyout-help-shim{padding-right:50px}}.sky-flyout-content{overflow-y:auto;height:calc(100% - 50px)}:host-context(.sky-theme-modern) .sky-flyout{border-left:0}:host-context(.sky-theme-modern) .sky-flyout-header{border-bottom:none;background:#fff;padding:15px 10px}:host-context(.sky-theme-modern) .sky-flyout-header-grab-handle{cursor:move;cursor:-moz-grab}.sky-theme-modern .sky-flyout{border-left:0}.sky-theme-modern .sky-flyout-header{border-bottom:none;background:#fff;padding:15px 10px}.sky-theme-modern .sky-flyout-header-grab-handle{cursor:move;cursor:-moz-grab}:host-context(.sky-theme-modern.sky-theme-mode-dark) .sky-flyout{background:#000}:host-context(.sky-theme-modern.sky-theme-mode-dark) .sky-flyout-header{background:#000}.sky-theme-modern.sky-theme-mode-dark .sky-flyout{background:#000}.sky-theme-modern.sky-theme-mode-dark .sky-flyout-header{background:#000}\n"], components: [{ type: i5.λ4, selector: "sky-icon", inputs: ["icon", "iconType", "size", "fixedWidth", "variant"] }, { type: i6.SkyFlyoutIteratorComponent, selector: "sky-flyout-iterator", inputs: ["nextButtonDisabled", "previousButtonDisabled"], outputs: ["previousButtonClick", "nextButtonClick"] }], directives: [{ type: i7.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i8.λ2, selector: "[skyThemeClass]", inputs: ["class", "skyThemeClass"] }, { type: i8.λ3, selector: "[skyThemeIf]", inputs: ["skyThemeIf"] }, { type: i7.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i7.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }, { type: i9.λ1, selector: "[skyHref]", inputs: ["skyHref", "skyHrefElse"] }, { type: i10.RouterLinkWithHref, selector: "a[routerLink],area[routerLink]", inputs: ["routerLink", "target", "queryParams", "fragment", "queryParamsHandling", "preserveFragment", "skipLocationChange", "replaceUrl", "state", "relativeTo"] }], pipes: { "skyLibResources": i2.SkyLibResourcesPipe }, animations: [
399
- trigger('flyoutState', [
400
- state(FLYOUT_OPEN_STATE, style({ transform: 'initial' })),
401
- state(FLYOUT_CLOSED_STATE, style({ transform: 'translateX(100%)' })),
402
- transition('void => *', [
403
- style({ transform: 'translateX(100%)' }),
404
- animate(250),
405
- ]),
406
- transition(`* <=> *`, animate('250ms ease-in')),
407
- ]),
408
- ], changeDetection: i0.ChangeDetectionStrategy.Default });
409
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0, type: SkyFlyoutComponent, decorators: [{
410
- type: Component,
411
- args: [{
412
- selector: 'sky-flyout',
413
- templateUrl: './flyout.component.html',
414
- styleUrls: ['./flyout.component.scss'],
415
- providers: [
416
- SkyFlyoutAdapterService,
417
- SkyFlyoutMediaQueryService,
418
- { provide: SkyMediaQueryService, useExisting: SkyFlyoutMediaQueryService },
419
- ],
420
- animations: [
421
- trigger('flyoutState', [
422
- state(FLYOUT_OPEN_STATE, style({ transform: 'initial' })),
423
- state(FLYOUT_CLOSED_STATE, style({ transform: 'translateX(100%)' })),
424
- transition('void => *', [
425
- style({ transform: 'translateX(100%)' }),
426
- animate(250),
427
- ]),
428
- transition(`* <=> *`, animate('250ms ease-in')),
429
- ]),
430
- ],
431
- // Allow automatic change detection for child components.
432
- changeDetection: ChangeDetectionStrategy.Default,
433
- }]
434
- }], ctorParameters: function () { return [{ type: i1.SkyFlyoutAdapterService }, { type: i0.ChangeDetectorRef }, { type: i0.Injector }, { type: i0.ComponentFactoryResolver }, { type: i2.SkyLibResourcesService }, { type: i3.SkyFlyoutMediaQueryService }, { type: i0.ElementRef }, { type: i4.SkyUIConfigService }]; }, propDecorators: { flyoutRef: [{
435
- type: ViewChild,
436
- args: ['flyoutRef', {
437
- read: ElementRef,
438
- static: true,
439
- }]
440
- }], target: [{
441
- type: ViewChild,
442
- args: ['target', {
443
- read: ViewContainerRef,
444
- static: true,
445
- }]
446
- }], flyoutHeader: [{
447
- type: ViewChild,
448
- args: ['flyoutHeader', {
449
- read: ElementRef,
450
- static: true,
451
- }]
452
- }], onWindowResize: [{
453
- type: HostListener,
454
- args: ['window:resize', ['$event']]
455
- }] } });
456
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmx5b3V0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2ZseW91dC9zcmMvbW9kdWxlcy9mbHlvdXQvZmx5b3V0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2ZseW91dC9zcmMvbW9kdWxlcy9mbHlvdXQvZmx5b3V0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxTQUFTLEVBQ1QsdUJBQXVCLEVBR3ZCLFVBQVUsRUFDVixZQUFZLEVBSVosa0JBQWtCLEVBRWxCLFNBQVMsRUFDVCxnQkFBZ0IsR0FDakIsTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxFQUNMLE9BQU8sRUFFUCxLQUFLLEVBQ0wsS0FBSyxFQUNMLFVBQVUsRUFDVixPQUFPLEdBQ1IsTUFBTSxxQkFBcUIsQ0FBQztBQUU3QixPQUFPLEVBQUUsU0FBUyxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUUxQyxPQUFPLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUU1RCxPQUFPLEVBQ0wsbUJBQW1CLEVBQ25CLG9CQUFvQixHQUVyQixNQUFNLGFBQWEsQ0FBQztBQUlyQixPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUVuRSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUV0RCxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQVExRSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQzs7Ozs7Ozs7Ozs7O0FBSW5FLE1BQU0saUJBQWlCLEdBQUcsWUFBWSxDQUFDO0FBQ3ZDLE1BQU0sbUJBQW1CLEdBQUcsY0FBYyxDQUFDO0FBRTNDLElBQUksTUFBTSxHQUFHLENBQUMsQ0FBQztBQUVmOztHQUVH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ckIsS0FBSyxDQUFDLGlCQUFpQixFQUFFLEtBQUssQ0FBQyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsQ0FBQyxDQUFDOzRCQUN6RCxLQUFLLENBQUMsbUJBQW1CLEVBQUUsS0FBSyxDQUFDLEVBQUUsU0FBUyxFQUFFLGtCQUFrQixFQUFFLENBQUMsQ0FBQzs0QkFDcEUsVUFBVSxDQUFDLFdBQVcsRUFBRTtnQ0FDdEIsS0FBSyxDQUFDLEVBQUUsU0FBUyxFQUFFLGtCQUFrQixFQUFFLENBQUM7Z0NBQ3hDLE9BQU8sQ0FBQyxHQUFHLENBQUM7NkJBQ2IsQ0FBQzs0QkFDRixVQUFVLENBQUMsU0FBUyxFQUFFLE9BQU8sQ0FBQyxlQUFlLENBQUMsQ0FBQzt5QkFDaEQsQ0FBQztxQkFDSDtvQkFDRCx5REFBeUQ7b0JBQ3pELGVBQWUsRUFBRSx1QkFBdUIsQ0FBQyxPQUFPO2lCQUNqRDtvVkFvRVEsU0FBUztzQkFKZixTQUFTO3VCQUFDLFdBQVcsRUFBRTt3QkFDdEIsSUFBSSxFQUFFLFVBQVU7d0JBQ2hCLE1BQU0sRUFBRSxJQUFJO3FCQUNiO2dCQU9PLE1BQU07c0JBSmIsU0FBUzt1QkFBQyxRQUFRLEVBQUU7d0JBQ25CLElBQUksRUFBRSxnQkFBZ0I7d0JBQ3RCLE1BQU0sRUFBRSxJQUFJO3FCQUNiO2dCQU9PLFlBQVk7c0JBSm5CLFNBQVM7dUJBQUMsY0FBYyxFQUFFO3dCQUN6QixJQUFJLEVBQUUsVUFBVTt3QkFDaEIsTUFBTSxFQUFFLElBQUk7cUJBQ2I7Z0JBcUNNLGNBQWM7c0JBRHBCLFlBQVk7dUJBQUMsZUFBZSxFQUFFLENBQUMsUUFBUSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ29tcG9uZW50LFxuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIENvbXBvbmVudEZhY3RvcnlSZXNvbHZlcixcbiAgRWxlbWVudFJlZixcbiAgSG9zdExpc3RlbmVyLFxuICBJbmplY3RvcixcbiAgT25EZXN0cm95LFxuICBPbkluaXQsXG4gIFJlZmxlY3RpdmVJbmplY3RvcixcbiAgVHlwZSxcbiAgVmlld0NoaWxkLFxuICBWaWV3Q29udGFpbmVyUmVmLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHtcbiAgYW5pbWF0ZSxcbiAgQW5pbWF0aW9uRXZlbnQsXG4gIHN0YXRlLFxuICBzdHlsZSxcbiAgdHJhbnNpdGlvbixcbiAgdHJpZ2dlcixcbn0gZnJvbSAnQGFuZ3VsYXIvYW5pbWF0aW9ucyc7XG5cbmltcG9ydCB7IGZyb21FdmVudCwgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQgeyB0YWtlLCB0YWtlVW50aWwsIHRha2VXaGlsZSB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuaW1wb3J0IHtcbiAgU2t5TWVkaWFCcmVha3BvaW50cyxcbiAgU2t5TWVkaWFRdWVyeVNlcnZpY2UsXG4gIFNreVVJQ29uZmlnU2VydmljZSxcbn0gZnJvbSAnQHNreXV4L2NvcmUnO1xuXG5pbXBvcnQgeyBTa3lMaWJSZXNvdXJjZXNTZXJ2aWNlIH0gZnJvbSAnQHNreXV4L2kxOG4nO1xuXG5pbXBvcnQgeyBTa3lGbHlvdXRBZGFwdGVyU2VydmljZSB9IGZyb20gJy4vZmx5b3V0LWFkYXB0ZXIuc2VydmljZSc7XG5cbmltcG9ydCB7IFNreUZseW91dEluc3RhbmNlIH0gZnJvbSAnLi9mbHlvdXQtaW5zdGFuY2UnO1xuXG5pbXBvcnQgeyBTa3lGbHlvdXRNZWRpYVF1ZXJ5U2VydmljZSB9IGZyb20gJy4vZmx5b3V0LW1lZGlhLXF1ZXJ5LnNlcnZpY2UnO1xuXG5pbXBvcnQgeyBTa3lGbHlvdXRBY3Rpb24gfSBmcm9tICcuL3R5cGVzL2ZseW91dC1hY3Rpb24nO1xuXG5pbXBvcnQgeyBTa3lGbHlvdXRDb25maWcgfSBmcm9tICcuL3R5cGVzL2ZseW91dC1jb25maWcnO1xuXG5pbXBvcnQgeyBTa3lGbHlvdXRNZXNzYWdlIH0gZnJvbSAnLi90eXBlcy9mbHlvdXQtbWVzc2FnZSc7XG5cbmltcG9ydCB7IFNreUZseW91dE1lc3NhZ2VUeXBlIH0gZnJvbSAnLi90eXBlcy9mbHlvdXQtbWVzc2FnZS10eXBlJztcblxuaW1wb3J0IHsgU2t5Rmx5b3V0UGVybWFsaW5rIH0gZnJvbSAnLi90eXBlcy9mbHlvdXQtcGVybWFsaW5rJztcblxuY29uc3QgRkxZT1VUX09QRU5fU1RBVEUgPSAnZmx5b3V0T3Blbic7XG5jb25zdCBGTFlPVVRfQ0xPU0VEX1NUQVRFID0gJ2ZseW91dENsb3NlZCc7XG5cbmxldCBuZXh0SWQgPSAwO1xuXG4vKipcbiAqIEBpbnRlcm5hbFxuICovXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdza3ktZmx5b3V0JyxcbiAgdGVtcGxhdGVVcmw6ICcuL2ZseW91dC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2ZseW91dC5jb21wb25lbnQuc2NzcyddLFxuICBwcm92aWRlcnM6IFtcbiAgICBTa3lGbHlvdXRBZGFwdGVyU2VydmljZSxcbiAgICBTa3lGbHlvdXRNZWRpYVF1ZXJ5U2VydmljZSxcbiAgICB7IHByb3ZpZGU6IFNreU1lZGlhUXVlcnlTZXJ2aWNlLCB1c2VFeGlzdGluZzogU2t5Rmx5b3V0TWVkaWFRdWVyeVNlcnZpY2UgfSxcbiAgXSxcbiAgYW5pbWF0aW9uczogW1xuICAgIHRyaWdnZXIoJ2ZseW91dFN0YXRlJywgW1xuICAgICAgc3RhdGUoRkxZT1VUX09QRU5fU1RBVEUsIHN0eWxlKHsgdHJhbnNmb3JtOiAnaW5pdGlhbCcgfSkpLFxuICAgICAgc3RhdGUoRkxZT1VUX0NMT1NFRF9TVEFURSwgc3R5bGUoeyB0cmFuc2Zvcm06ICd0cmFuc2xhdGVYKDEwMCUpJyB9KSksXG4gICAgICB0cmFuc2l0aW9uKCd2b2lkID0+IConLCBbXG4gICAgICAgIHN0eWxlKHsgdHJhbnNmb3JtOiAndHJhbnNsYXRlWCgxMDAlKScgfSksXG4gICAgICAgIGFuaW1hdGUoMjUwKSxcbiAgICAgIF0pLFxuICAgICAgdHJhbnNpdGlvbihgKiA8PT4gKmAsIGFuaW1hdGUoJzI1MG1zIGVhc2UtaW4nKSksXG4gICAgXSksXG4gIF0sXG4gIC8vIEFsbG93IGF1dG9tYXRpYyBjaGFuZ2UgZGV0ZWN0aW9uIGZvciBjaGlsZCBjb21wb25lbnRzLlxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LkRlZmF1bHQsXG59KVxuZXhwb3J0IGNsYXNzIFNreUZseW91dENvbXBvbmVudCBpbXBsZW1lbnRzIE9uRGVzdHJveSwgT25Jbml0IHtcbiAgcHVibGljIGNvbmZpZzogU2t5Rmx5b3V0Q29uZmlnO1xuICBwdWJsaWMgZmx5b3V0SWQ6IHN0cmluZyA9IGBza3ktZmx5b3V0LSR7KytuZXh0SWR9YDtcbiAgcHVibGljIGZseW91dFN0YXRlID0gRkxZT1VUX0NMT1NFRF9TVEFURTtcbiAgcHVibGljIGlzT3BlbiA9IGZhbHNlO1xuICBwdWJsaWMgaXNPcGVuaW5nID0gZmFsc2U7XG5cbiAgcHVibGljIGZseW91dFdpZHRoID0gMDtcbiAgcHVibGljIGlzRHJhZ2dpbmcgPSBmYWxzZTtcbiAgcHVibGljIGlzRnVsbHNjcmVlbiA9IGZhbHNlO1xuICBwdWJsaWMgcmVzaXplS2V5Q29udHJvbEFjdGl2ZSA9IGZhbHNlO1xuXG4gIHByaXZhdGUgeENvb3JkID0gMDtcbiAgcHJpdmF0ZSB3aW5kb3dCdWZmZXJTaXplID0gMjA7XG5cbiAgcHVibGljIGdldCBtZXNzYWdlU3RyZWFtKCk6IFN1YmplY3Q8U2t5Rmx5b3V0TWVzc2FnZT4ge1xuICAgIHJldHVybiB0aGlzLl9tZXNzYWdlU3RyZWFtO1xuICB9XG5cbiAgcHVibGljIGdldCBwZXJtYWxpbmsoKTogU2t5Rmx5b3V0UGVybWFsaW5rIHtcbiAgICBjb25zdCBwZXJtYWxpbmsgPSB0aGlzLmNvbmZpZy5wZXJtYWxpbms7XG4gICAgaWYgKHBlcm1hbGluaykge1xuICAgICAgcmV0dXJuIHBlcm1hbGluaztcbiAgICB9XG5cbiAgICByZXR1cm4ge307XG4gIH1cblxuICBwdWJsaWMgZ2V0IHBlcm1hbGlua0xhYmVsKCk6IHN0cmluZyB7XG4gICAgaWYgKHRoaXMucGVybWFsaW5rLmxhYmVsKSB7XG4gICAgICByZXR1cm4gdGhpcy5wZXJtYWxpbmsubGFiZWw7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuZ2V0U3RyaW5nKCdza3l1eF9mbHlvdXRfcGVybWFsaW5rX2J1dHRvbicpO1xuICB9XG5cbiAgcHVibGljIGdldCBwcmltYXJ5QWN0aW9uKCk6IFNreUZseW91dEFjdGlvbiB7XG4gICAgbGV0IHByaW1hcnlBY3Rpb24gPSB0aGlzLmNvbmZpZy5wcmltYXJ5QWN0aW9uO1xuICAgIGlmIChwcmltYXJ5QWN0aW9uKSB7XG4gICAgICByZXR1cm4gcHJpbWFyeUFjdGlvbjtcbiAgICB9XG5cbiAgICByZXR1cm4ge307XG4gIH1cblxuICBwdWJsaWMgZ2V0IHByaW1hcnlBY3Rpb25MYWJlbCgpOiBzdHJpbmcge1xuICAgIGlmICh0aGlzLmNvbmZpZy5wcmltYXJ5QWN0aW9uICYmIHRoaXMuY29uZmlnLnByaW1hcnlBY3Rpb24ubGFiZWwpIHtcbiAgICAgIHJldHVybiB0aGlzLmNvbmZpZy5wcmltYXJ5QWN0aW9uLmxhYmVsO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLmdldFN0cmluZygnc2t5dXhfZmx5b3V0X3ByaW1hcnlfYWN0aW9uX2J1dHRvbicpO1xuICB9XG5cbiAgcHVibGljIHRoZW1lTmFtZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIHB1YmxpYyB3aWR0aFN0ZXA6IG51bWJlciA9IDEwO1xuXG4gIC8qKlxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIEBWaWV3Q2hpbGQoJ2ZseW91dFJlZicsIHtcbiAgICByZWFkOiBFbGVtZW50UmVmLFxuICAgIHN0YXRpYzogdHJ1ZSxcbiAgfSlcbiAgcHVibGljIGZseW91dFJlZjogRWxlbWVudFJlZjtcblxuICBAVmlld0NoaWxkKCd0YXJnZXQnLCB7XG4gICAgcmVhZDogVmlld0NvbnRhaW5lclJlZixcbiAgICBzdGF0aWM6IHRydWUsXG4gIH0pXG4gIHByaXZhdGUgdGFyZ2V0OiBWaWV3Q29udGFpbmVyUmVmO1xuXG4gIEBWaWV3Q2hpbGQoJ2ZseW91dEhlYWRlcicsIHtcbiAgICByZWFkOiBFbGVtZW50UmVmLFxuICAgIHN0YXRpYzogdHJ1ZSxcbiAgfSlcbiAgcHJpdmF0ZSBmbHlvdXRIZWFkZXI6IEVsZW1lbnRSZWY7XG5cbiAgcHJpdmF0ZSBmbHlvdXRJbnN0YW5jZTogU2t5Rmx5b3V0SW5zdGFuY2U8YW55PjtcblxuICBwcml2YXRlIG5nVW5zdWJzY3JpYmUgPSBuZXcgU3ViamVjdCgpO1xuXG4gIHByaXZhdGUgX21lc3NhZ2VTdHJlYW0gPSBuZXcgU3ViamVjdDxTa3lGbHlvdXRNZXNzYWdlPigpO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgYWRhcHRlcjogU2t5Rmx5b3V0QWRhcHRlclNlcnZpY2UsXG4gICAgcHJpdmF0ZSBjaGFuZ2VEZXRlY3RvcjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgcHJpdmF0ZSBpbmplY3RvcjogSW5qZWN0b3IsXG4gICAgcHJpdmF0ZSByZXNvbHZlcjogQ29tcG9uZW50RmFjdG9yeVJlc29sdmVyLFxuICAgIHByaXZhdGUgcmVzb3VyY2VzU2VydmljZTogU2t5TGliUmVzb3VyY2VzU2VydmljZSxcbiAgICBwcml2YXRlIGZseW91dE1lZGlhUXVlcnlTZXJ2aWNlOiBTa3lGbHlvdXRNZWRpYVF1ZXJ5U2VydmljZSxcbiAgICBwcml2YXRlIGVsZW1lbnRSZWY6IEVsZW1lbnRSZWYsXG4gICAgcHJpdmF0ZSB1aUNvbmZpZ1NlcnZpY2U6IFNreVVJQ29uZmlnU2VydmljZVxuICApIHtcbiAgICAvLyBBbGwgY29tbWFuZHMgZmxvdyB0aHJvdWdoIHRoZSBtZXNzYWdlIHN0cmVhbS5cbiAgICB0aGlzLm1lc3NhZ2VTdHJlYW1cbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLm5nVW5zdWJzY3JpYmUpKVxuICAgICAgLnN1YnNjcmliZSgobWVzc2FnZTogU2t5Rmx5b3V0TWVzc2FnZSkgPT4ge1xuICAgICAgICB0aGlzLmhhbmRsZUluY29taW5nTWVzc2FnZXMobWVzc2FnZSk7XG4gICAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLmFkYXB0ZXIuYWRqdXN0SGVhZGVyRm9ySGVscCh0aGlzLmZseW91dEhlYWRlcik7XG4gIH1cblxuICBwdWJsaWMgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5uZ1Vuc3Vic2NyaWJlLm5leHQoKTtcbiAgICB0aGlzLm5nVW5zdWJzY3JpYmUuY29tcGxldGUoKTtcbiAgfVxuXG4gIEBIb3N0TGlzdGVuZXIoJ3dpbmRvdzpyZXNpemUnLCBbJyRldmVudCddKVxuICBwdWJsaWMgb25XaW5kb3dSZXNpemUoZXZlbnQ6IGFueSk6IHZvaWQge1xuICAgIGlmIChcbiAgICAgIHRoaXMuZmx5b3V0TWVkaWFRdWVyeVNlcnZpY2UuaXNXaWR0aFdpdGhpbkJyZWFrcGlvbnQoXG4gICAgICAgIGV2ZW50LnRhcmdldC5pbm5lcldpZHRoLFxuICAgICAgICBTa3lNZWRpYUJyZWFrcG9pbnRzLnhzXG4gICAgICApXG4gICAgKSB7XG4gICAgICB0aGlzLnVwZGF0ZUJyZWFrcG9pbnRBbmRSZXNwb25zaXZlQ2xhc3MoZXZlbnQudGFyZ2V0LmlubmVyV2lkdGgpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnVwZGF0ZUJyZWFrcG9pbnRBbmRSZXNwb25zaXZlQ2xhc3ModGhpcy5mbHlvdXRXaWR0aCk7XG4gICAgfVxuXG4gICAgdGhpcy5zZXRGdWxsc2NyZWVuKCk7XG5cbiAgICBpZiAoZXZlbnQudGFyZ2V0LmlubmVyV2lkdGggLSB0aGlzLmZseW91dFdpZHRoIDwgdGhpcy53aW5kb3dCdWZmZXJTaXplKSB7XG4gICAgICB0aGlzLmZseW91dFdpZHRoID0gZXZlbnQudGFyZ2V0LmlubmVyV2lkdGggLSB0aGlzLndpbmRvd0J1ZmZlclNpemU7XG4gICAgICB0aGlzLnhDb29yZCA9IHRoaXMud2luZG93QnVmZmVyU2l6ZTtcbiAgICAgIHRoaXMuc2V0VXNlckRhdGEoKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgYXR0YWNoPFQ+KFxuICAgIGNvbXBvbmVudDogVHlwZTxUPixcbiAgICBjb25maWc6IFNreUZseW91dENvbmZpZ1xuICApOiBTa3lGbHlvdXRJbnN0YW5jZTxUPiB7XG4gICAgdGhpcy5jbGVhblRlbXBsYXRlKCk7XG5cbiAgICAvLyBFbWl0IHRoZSBjbG9zZWQgZXZlbnQgb24gYW55IHByZXZpb3VzbHkgb3BlbmVkIGZseW91dCBpbnN0YW5jZVxuICAgIGlmICh0aGlzLmZseW91dEluc3RhbmNlKSB7XG4gICAgICB0aGlzLm5vdGlmeUNsb3NlZCgpO1xuICAgIH1cblxuICAgIHRoaXMuY29uZmlnID0gT2JqZWN0LmFzc2lnbih7IHByb3ZpZGVyczogW10gfSwgY29uZmlnKTtcbiAgICB0aGlzLmNvbmZpZy5kZWZhdWx0V2lkdGggPVxuICAgICAgdGhpcy5jb25maWcuZGVmYXVsdFdpZHRoIHx8IHdpbmRvdy5pbm5lcldpZHRoIC8gMjtcbiAgICB0aGlzLmNvbmZpZy5taW5XaWR0aCA9IHRoaXMuY29uZmlnLm1pbldpZHRoIHx8IDMyMDtcbiAgICB0aGlzLmNvbmZpZy5tYXhXaWR0aCA9IHRoaXMuY29uZmlnLm1heFdpZHRoIHx8IHRoaXMuY29uZmlnLmRlZmF1bHRXaWR0aDtcblxuICAgIHRoaXMuY29uZmlnLnNob3dJdGVyYXRvciA9IHRoaXMuY29uZmlnLnNob3dJdGVyYXRvciB8fCBmYWxzZTtcbiAgICB0aGlzLmNvbmZpZy5pdGVyYXRvck5leHRCdXR0b25EaXNhYmxlZCA9XG4gICAgICB0aGlzLmNvbmZpZy5pdGVyYXRvck5leHRCdXR0b25EaXNhYmxlZCB8fCBmYWxzZTtcbiAgICB0aGlzLmNvbmZpZy5pdGVyYXRvclByZXZpb3VzQnV0dG9uRGlzYWJsZWQgPVxuICAgICAgdGhpcy5jb25maWcuaXRlcmF0b3JQcmV2aW91c0J1dHRvbkRpc2FibGVkIHx8IGZhbHNlO1xuXG4gICAgY29uc3QgZmFjdG9yeSA9IHRoaXMucmVzb2x2ZXIucmVzb2x2ZUNvbXBvbmVudEZhY3RvcnkoY29tcG9uZW50KTtcblxuICAgIC8qIHRzbGludDpkaXNhYmxlOmRlcHJlY2F0aW9uICovXG4gICAgLyoqXG4gICAgICogTk9URTogV2UgbmVlZCB0byB1cGRhdGUgdGhpcyB0byB1c2UgdGhlIG5ldyBJbmplY3Rvci5jcmVhdGUob3B0aW9ucykgbWV0aG9kXG4gICAgICogYWZ0ZXIgQW5ndWxhciA0IHN1cHBvcnQgaXMgZHJvcHBlZC5cbiAgICAgKi9cbiAgICBjb25zdCBwcm92aWRlcnMgPSBSZWZsZWN0aXZlSW5qZWN0b3IucmVzb2x2ZSh0aGlzLmNvbmZpZy5wcm92aWRlcnMpO1xuICAgIGNvbnN0IGluamVjdG9yID0gUmVmbGVjdGl2ZUluamVjdG9yLmZyb21SZXNvbHZlZFByb3ZpZGVycyhcbiAgICAgIHByb3ZpZGVycyxcbiAgICAgIHRoaXMuaW5qZWN0b3JcbiAgICApO1xuICAgIC8qIHRzbGludDplbmFibGU6ZGVwcmVjYXRpb24gKi9cblxuICAgIGNvbnN0IGNvbXBvbmVudFJlZiA9IHRoaXMudGFyZ2V0LmNyZWF0ZUNvbXBvbmVudChcbiAgICAgIGZhY3RvcnksXG4gICAgICB1bmRlZmluZWQsXG4gICAgICBpbmplY3RvclxuICAgICk7XG5cbiAgICB0aGlzLmZseW91dEluc3RhbmNlID0gdGhpcy5jcmVhdGVGbHlvdXRJbnN0YW5jZTxUPihjb21wb25lbnRSZWYuaW5zdGFuY2UpO1xuXG4gICAgLy8gT3BlbiB0aGUgZmx5b3V0IGltbWVkaWF0ZWx5LlxuICAgIHRoaXMubWVzc2FnZVN0cmVhbS5uZXh0KHtcbiAgICAgIHR5cGU6IFNreUZseW91dE1lc3NhZ2VUeXBlLk9wZW4sXG4gICAgfSk7XG5cbiAgICBpZiAodGhpcy5jb25maWcuc2V0dGluZ3NLZXkpIHtcbiAgICAgIHRoaXMudWlDb25maWdTZXJ2aWNlXG4gICAgICAgIC5nZXRDb25maWcodGhpcy5jb25maWcuc2V0dGluZ3NLZXkpXG4gICAgICAgIC5waXBlKHRha2UoMSkpXG4gICAgICAgIC5zdWJzY3JpYmUoKHZhbHVlOiBhbnkpID0+IHtcbiAgICAgICAgICBpZiAodmFsdWUgJiYgdmFsdWUuZmx5b3V0V2lkdGgpIHtcbiAgICAgICAgICAgIHRoaXMuZmx5b3V0V2lkdGggPSB2YWx1ZS5mbHlvdXRXaWR0aDtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgLy8gQmFkIGRhdGEsIG9yIGNvbmZpZyBpcyB0aGUgZGVmYXVsdCBjb25maWcuXG4gICAgICAgICAgICB0aGlzLmZseW91dFdpZHRoID0gdGhpcy5jb25maWcuZGVmYXVsdFdpZHRoO1xuICAgICAgICAgIH1cbiAgICAgICAgICB0aGlzLmNoZWNrSW5pdGlhbFNpemUoKTtcbiAgICAgICAgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuZmx5b3V0V2lkdGggPSB0aGlzLmNvbmZpZy5kZWZhdWx0V2lkdGg7XG4gICAgICB0aGlzLmNoZWNrSW5pdGlhbFNpemUoKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5mbHlvdXRJbnN0YW5jZTtcbiAgfVxuXG4gIHB1YmxpYyBjbG9zZSgpOiB2b2lkIHtcbiAgICB0aGlzLm1lc3NhZ2VTdHJlYW0ubmV4dCh7XG4gICAgICB0eXBlOiBTa3lGbHlvdXRNZXNzYWdlVHlwZS5DbG9zZSxcbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBpbnZva2VQcmltYXJ5QWN0aW9uKCk6IGJvb2xlYW4ge1xuICAgIHRoaXMucHJpbWFyeUFjdGlvbi5jYWxsYmFjaygpO1xuXG4gICAgaWYgKHRoaXMucHJpbWFyeUFjdGlvbi5jbG9zZUFmdGVySW52b2tpbmcpIHtcbiAgICAgIHRoaXMuY2xvc2UoKTtcbiAgICB9XG5cbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBwdWJsaWMgZ2V0QW5pbWF0aW9uU3RhdGUoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5pc09wZW5pbmcgPyBGTFlPVVRfT1BFTl9TVEFURSA6IEZMWU9VVF9DTE9TRURfU1RBVEU7XG4gIH1cblxuICBwdWJsaWMgYW5pbWF0aW9uRG9uZShldmVudDogQW5pbWF0aW9uRXZlbnQpOiB2b2lkIHtcbiAgICBpZiAoZXZlbnQudG9TdGF0ZSA9PT0gRkxZT1VUX09QRU5fU1RBVEUpIHtcbiAgICAgIHRoaXMuaXNPcGVuID0gdHJ1ZTtcbiAgICB9XG5cbiAgICBpZiAoZXZlbnQudG9TdGF0ZSA9PT0gRkxZT1VUX0NMT1NFRF9TVEFURSkge1xuICAgICAgdGhpcy5pc09wZW4gPSBmYWxzZTtcbiAgICAgIHRoaXMubm90aWZ5Q2xvc2VkKCk7XG4gICAgICB0aGlzLmNsZWFuVGVtcGxhdGUoKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgb25IZWFkZXJHcmFiSGFuZGxlTW91c2VEb3duKGV2ZW50OiBNb3VzZUV2ZW50KTogdm9pZCB7XG4gICAgdGhpcy5vblJlc2l6ZUhhbmRsZU1vdXNlRG93bihldmVudCk7XG4gIH1cblxuICBwdWJsaWMgb25IZWFkZXJHcmFiSGFuZGxlS2V5RG93bihldmVudDogS2V5Ym9hcmRFdmVudCk6IHZvaWQge1xuICAgIHRoaXMuaGFuZGxlUmVzaXplS2V5RG93bihldmVudCk7XG4gIH1cblxuICBwdWJsaWMgb25SZXNpemVIYW5kbGVLZXlEb3duKGV2ZW50OiBLZXlib2FyZEV2ZW50KTogdm9pZCB7XG4gICAgdGhpcy5oYW5kbGVSZXNpemVLZXlEb3duKGV2ZW50KTtcbiAgfVxuXG4gIHB1YmxpYyBvblJlc2l6ZUhhbmRsZU1vdXNlRG93bihldmVudDogTW91c2VFdmVudCk6IHZvaWQge1xuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG5cbiAgICBpZiAodGhpcy5pc0Z1bGxzY3JlZW4pIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLmlzRHJhZ2dpbmcgPSB0cnVlO1xuICAgIHRoaXMueENvb3JkID0gZXZlbnQuY2xpZW50WDtcblxuICAgIHRoaXMuYWRhcHRlci50b2dnbGVJZnJhbWVQb2ludGVyRXZlbnRzKGZhbHNlKTtcblxuICAgIGZyb21FdmVudChkb2N1bWVudCwgJ21vdXNlbW92ZScpXG4gICAgICAucGlwZShcbiAgICAgICAgdGFrZVdoaWxlKCgpID0+IHtcbiAgICAgICAgICByZXR1cm4gdGhpcy5pc0RyYWdnaW5nO1xuICAgICAgICB9KVxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZSgobW92ZUV2ZW50OiBhbnkpID0+IHtcbiAgICAgICAgdGhpcy5vbk1vdXNlTW92ZShtb3ZlRXZlbnQpO1xuICAgICAgfSk7XG5cbiAgICBmcm9tRXZlbnQoZG9jdW1lbnQsICdtb3VzZXVwJylcbiAgICAgIC5waXBlKFxuICAgICAgICB0YWtlV2hpbGUoKCkgPT4ge1xuICAgICAgICAgIHJldHVybiB0aGlzLmlzRHJhZ2dpbmc7XG4gICAgICAgIH0pXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKChtb3VzZVVwRXZlbnQ6IGFueSkgPT4ge1xuICAgICAgICB0aGlzLm9uSGFuZGxlUmVsZWFzZShtb3VzZVVwRXZlbnQpO1xuICAgICAgfSk7XG4gIH1cblxuICBwdWJsaWMgb25Nb3VzZU1vdmUoZXZlbnQ6IE1vdXNlRXZlbnQpOiB2b2lkIHtcbiAgICAvKiBTYW5pdHkgY2hlY2sgKi9cbiAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgaWYgKi9cbiAgICBpZiAoIXRoaXMuaXNEcmFnZ2luZykge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IG9mZnNldFggPSBldmVudC5jbGllbnRYIC0gdGhpcy54Q29vcmQ7XG4gICAgbGV0IHdpZHRoID0gdGhpcy5mbHlvdXRXaWR0aDtcblxuICAgIHdpZHRoIC09IG9mZnNldFg7XG5cbiAgICBpZiAod2lkdGggPCB0aGlzLmNvbmZpZy5taW5XaWR0aCB8fCB3aWR0aCA+IHRoaXMuY29uZmlnLm1heFdpZHRoKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKHdpbmRvdy5pbm5lcldpZHRoIC0gd2lkdGggPCB0aGlzLndpbmRvd0J1ZmZlclNpemUpIHtcbiAgICAgIHdpZHRoID0gd2luZG93LmlubmVyV2lkdGggLSB0aGlzLndpbmRvd0J1ZmZlclNpemU7XG4gICAgICB0aGlzLnhDb29yZCA9IHRoaXMud2luZG93QnVmZmVyU2l6ZTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy54Q29vcmQgPSBldmVudC5jbGllbnRYO1xuICAgIH1cblxuICAgIHRoaXMuZmx5b3V0V2lkdGggPSB3aWR0aDtcblxuICAgIHRoaXMudXBkYXRlQnJlYWtwb2ludEFuZFJlc3BvbnNpdmVDbGFzcyh0aGlzLmZseW91dFdpZHRoKTtcblxuICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3IubWFya0ZvckNoZWNrKCk7XG4gIH1cblxuICBwdWJsaWMgb25IYW5kbGVSZWxlYXNlKGV2ZW50OiBNb3VzZUV2ZW50KTogdm9pZCB7XG4gICAgZnJvbUV2ZW50KGRvY3VtZW50LCAnY2xpY2snKVxuICAgICAgLnBpcGUodGFrZSgxKSlcbiAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICB0aGlzLmlzRHJhZ2dpbmcgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5hZGFwdGVyLnRvZ2dsZUlmcmFtZVBvaW50ZXJFdmVudHModHJ1ZSk7XG4gICAgICAgIHRoaXMuc2V0VXNlckRhdGEoKTtcbiAgICAgIH0pO1xuICB9XG5cbiAgcHVibGljIG9uSXRlcmF0b3JQcmV2aW91c0J1dHRvbkNsaWNrKCk6IHZvaWQge1xuICAgIHRoaXMuZmx5b3V0SW5zdGFuY2UuaXRlcmF0b3JQcmV2aW91c0J1dHRvbkNsaWNrLmVtaXQoKTtcbiAgfVxuXG4gIHB1YmxpYyBvbkl0ZXJhdG9yTmV4dEJ1dHRvbkNsaWNrKCk6IHZvaWQge1xuICAgIHRoaXMuZmx5b3V0SW5zdGFuY2UuaXRlcmF0b3JOZXh0QnV0dG9uQ2xpY2suZW1pdCgpO1xuICB9XG5cbiAgcHJpdmF0ZSBjcmVhdGVGbHlvdXRJbnN0YW5jZTxUPihjb21wb25lbnQ6IFQpOiBTa3lGbHlvdXRJbnN0YW5jZTxUPiB7XG4gICAgY29uc3QgaW5zdGFuY2UgPSBuZXcgU2t5Rmx5b3V0SW5zdGFuY2U8VD4oKTtcblxuICAgIGluc3RhbmNlLmNvbXBvbmVudEluc3RhbmNlID0gY29tcG9uZW50O1xuICAgIGluc3RhbmNlLmhvc3RDb250cm9sbGVyXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5uZ1Vuc3Vic2NyaWJlKSlcbiAgICAgIC5zdWJzY3JpYmUoKG1lc3NhZ2U6IFNreUZseW91dE1lc3NhZ2UpID0+IHtcbiAgICAgICAgdGhpcy5tZXNzYWdlU3RyZWFtLm5leHQobWVzc2FnZSk7XG4gICAgICB9KTtcblxuICAgIHJldHVybiBpbnN0YW5jZTtcbiAgfVxuXG4gIHByaXZhdGUgaGFuZGxlSW5jb21pbmdNZXNzYWdlcyhtZXNzYWdlOiBTa3lGbHlvdXRNZXNzYWdlKTogdm9pZCB7XG4gICAgLyogdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOnN3aXRjaC1kZWZhdWx0ICovXG4gICAgc3dpdGNoIChtZXNzYWdlLnR5cGUpIHtcbiAgICAgIGNhc2UgU2t5Rmx5b3V0TWVzc2FnZVR5cGUuT3BlbjpcbiAgICAgICAgaWYgKCF0aGlzLmlzT3Blbikge1xuICAgICAgICAgIHRoaXMuaXNPcGVuID0gZmFsc2U7XG4gICAgICAgICAgdGhpcy5pc09wZW5pbmcgPSB0cnVlO1xuICAgICAgICB9XG4gICAgICAgIGJyZWFrO1xuXG4gICAgICBjYXNlIFNreUZseW91dE1lc3NhZ2VUeXBlLkNsb3NlOlxuICAgICAgICB0aGlzLmlzT3BlbiA9IHRydWU7XG4gICAgICAgIHRoaXMuaXNPcGVuaW5nID0gZmFsc2U7XG4gICAgICAgIGJyZWFrO1xuXG4gICAgICBjYXNlIFNreUZseW91dE1lc3NhZ2VUeXBlLkVuYWJsZUl0ZXJhdG9yTmV4dEJ1dHRvbjpcbiAgICAgICAgdGhpcy5jb25maWcuaXRlcmF0b3JOZXh0QnV0dG9uRGlzYWJsZWQgPSBmYWxzZTtcbiAgICAgICAgYnJlYWs7XG5cbiAgICAgIGNhc2UgU2t5Rmx5b3V0TWVzc2FnZVR5cGUuRW5hYmxlSXRlcmF0b3JQcmV2aW91c0J1dHRvbjpcbiAgICAgICAgdGhpcy5jb25maWcuaXRlcmF0b3JQcmV2aW91c0J1dHRvbkRpc2FibGVkID0gZmFsc2U7XG4gICAgICAgIGJyZWFrO1xuXG4gICAgICBjYXNlIFNreUZseW91dE1lc3NhZ2VUeXBlLkRpc2FibGVJdGVyYXRvck5leHRCdXR0b246XG4gICAgICAgIHRoaXMuY29uZmlnLml0ZXJhdG9yTmV4dEJ1dHRvbkRpc2FibGVkID0gdHJ1ZTtcbiAgICAgICAgYnJlYWs7XG5cbiAgICAgIGNhc2UgU2t5Rmx5b3V0TWVzc2FnZVR5cGUuRGlzYWJsZUl0ZXJhdG9yUHJldmlvdXNCdXR0b246XG4gICAgICAgIHRoaXMuY29uZmlnLml0ZXJhdG9yUHJldmlvdXNCdXR0b25EaXNhYmxlZCA9IHRydWU7XG4gICAgICAgIGJyZWFrO1xuICAgIH1cblxuICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3IubWFya0ZvckNoZWNrKCk7XG4gIH1cblxuICBwcml2YXRlIG5vdGlmeUNsb3NlZCgpOiB2b2lkIHtcbiAgICB0aGlzLmZseW91dEluc3RhbmNlLmNsb3NlZC5lbWl0KCk7XG4gICAgdGhpcy5mbHlvdXRJbnN0YW5jZS5jbG9zZWQuY29tcGxldGUoKTtcbiAgfVxuXG4gIHByaXZhdGUgY2xlYW5UZW1wbGF0ZSgpOiB2b2lkIHtcbiAgICB0aGlzLnRhcmdldC5jbGVhcigpO1xuICB9XG5cbiAgcHJpdmF0ZSB1cGRhdGVCcmVha3BvaW50QW5kUmVzcG9uc2l2ZUNsYXNzKHdpZHRoOiBudW1iZXIpOiB2b2lkIHtcbiAgICB0aGlzLmZseW91dE1lZGlhUXVlcnlTZXJ2aWNlLnNldEJyZWFrcG9pbnRGb3JXaWR0aCh3aWR0aCk7XG5cbiAgICBjb25zdCBuZXdCcmVha3Bpb250ID0gdGhpcy5mbHlvdXRNZWRpYVF1ZXJ5U2VydmljZS5jdXJyZW50O1xuXG4gICAgdGhpcy5hZGFwdGVyLnNldFJlc3BvbnNpdmVDbGFzcyh0aGlzLmVsZW1lbnRSZWYsIG5ld0JyZWFrcGlvbnQpO1xuICB9XG5cbiAgcHJpdmF0ZSBzZXRGdWxsc2NyZWVuKCk6IHZvaWQge1xuICAgIGlmICh3aW5kb3cuaW5uZXJXaWR0aCAtIHRoaXMud2luZG93QnVmZmVyU2l6ZSA8IHRoaXMuY29uZmlnLm1pbldpZHRoKSB7XG4gICAgICB0aGlzLmlzRnVsbHNjcmVlbiA9IHRydWU7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuaXNGdWxsc2NyZWVuID0gZmFsc2U7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBzZXRVc2VyRGF0YSgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5jb25maWcuc2V0dGluZ3NLZXkpIHtcbiAgICAgIHRoaXMudWlDb25maWdTZXJ2aWNlXG4gICAgICAgIC5zZXRDb25maWcodGhpcy5jb25maWcuc2V0dGluZ3NLZXksIHtcbiAgICAgICAgICBmbHlvdXRXaWR0aDogdGhpcy5mbHlvdXRXaWR0aCxcbiAgICAgICAgfSlcbiAgICAgICAgLnBpcGUodGFrZSgxKSlcbiAgICAgICAgLnN1YnNjcmliZShcbiAgICAgICAgICAoKSA9PiB7fSxcbiAgICAgICAgICAoZXJyKSA9PiB7XG4gICAgICAgICAgICBjb25zb2xlLndhcm4oJ0NvdWxkIG5vdCBzYXZlIGZseW91dCBkYXRhLicpO1xuICAgICAgICAgICAgY29uc29sZS53YXJuKGVycik7XG4gICAgICAgICAgfVxuICAgICAgICApO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgY2hlY2tJbml0aWFsU2l6ZSgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5mbHlvdXRXaWR0aCA8IHRoaXMuY29uZmlnLm1pbldpZHRoKSB7XG4gICAgICB0aGlzLmZseW91dFdpZHRoID0gdGhpcy5jb25maWcubWluV2lkdGg7XG4gICAgICB0aGlzLnNldFVzZXJEYXRhKCk7XG4gICAgfSBlbHNlIGlmICh0aGlzLmZseW91dFdpZHRoID4gdGhpcy5jb25maWcubWF4V2lkdGgpIHtcbiAgICAgIHRoaXMuZmx5b3V0V2lkdGggPSB0aGlzLmNvbmZpZy5tYXhXaWR0aDtcbiAgICAgIHRoaXMuc2V0VXNlckRhdGEoKTtcbiAgICB9XG5cbiAgICAvLyBFbnN1cmUgZmx5b3V0IGRvZXMgbm90IGxvYWQgbGFyZ2VyIHRoYW4gdGhlIHdpbmRvdyBhbmQgaXRzIGJ1ZmZlclxuICAgIGlmICh3aW5kb3cuaW5uZXJXaWR0aCAtIHRoaXMuZmx5b3V0V2lkdGggPCB0aGlzLndpbmRvd0J1ZmZlclNpemUpIHtcbiAgICAgIHRoaXMuZmx5b3V0V2lkdGggPSB3aW5kb3cuaW5uZXJXaWR0aCAtIHRoaXMud2luZG93QnVmZmVyU2l6ZTtcbiAgICAgIHRoaXMueENvb3JkID0gdGhpcy53aW5kb3dCdWZmZXJTaXplO1xuICAgICAgdGhpcy5zZXRVc2VyRGF0YSgpO1xuICAgIH1cblxuICAgIGlmIChcbiAgICAgIHRoaXMuZmx5b3V0TWVkaWFRdWVyeVNlcnZpY2UuaXNXaWR0aFdpdGhpbkJyZWFrcGlvbnQoXG4gICAgICAgIHdpbmRvdy5pbm5lcldpZHRoLFxuICAgICAgICBTa3lNZWRpYUJyZWFrcG9pbnRzLnhzXG4gICAgICApXG4gICAgKSB7XG4gICAgICB0aGlzLnVwZGF0ZUJyZWFrcG9pbnRBbmRSZXNwb25zaXZlQ2xhc3Mod2luZG93LmlubmVyV2lkdGgpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnVwZGF0ZUJyZWFrcG9pbnRBbmRSZXNwb25zaXZlQ2xhc3ModGhpcy5mbHlvdXRXaWR0aCk7XG4gICAgfVxuXG4gICAgdGhpcy5zZXRGdWxsc2NyZWVuKCk7XG4gIH1cblxuICBwcml2YXRlIGdldFN0cmluZyhrZXk6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgLy8gVE9ETzogTmVlZCB0byBpbXBsZW1lbnQgdGhlIGFzeW5jIGBnZXRTdHJpbmdgIG1ldGhvZCBpbiBhIGJyZWFraW5nIGNoYW5nZS5cbiAgICByZXR1cm4gdGhpcy5yZXNvdXJjZXNTZXJ2aWNlLmdldFN0cmluZ0ZvckxvY2FsZSh7IGxvY2FsZTogJ2VuLVVTJyB9LCBrZXkpO1xuICB9XG5cbiAgcHJpdmF0ZSBoYW5kbGVSZXNpemVLZXlEb3duKGV2ZW50OiBLZXlib2FyZEV2ZW50KTogdm9pZCB7XG4gICAgLyogaXN0YW5idWwgaWdub3JlIGVsc2UgKi9cbiAgICBpZiAoZXZlbnQua2V5KSB7XG4gICAgICBjb25zdCBrZXlQcmVzc2VkID0gZXZlbnQua2V5LnRvTG93ZXJDYXNlKCkucmVwbGFjZSgnYXJyb3cnLCAnJyk7XG4gICAgICBzd2l0Y2ggKGtleVByZXNzZWQpIHtcbiAgICAgICAgY2FzZSAnZW50ZXInOlxuICAgICAgICBjYXNlICcgJzpcbiAgICAgICAgICB0aGlzLnJlc2l6ZUtleUNvbnRyb2xBY3RpdmUgPSAhdGhpcy5yZXNpemVLZXlDb250cm9sQWN0aXZlO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlICd0YWInOlxuICAgICAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBlbHNlICovXG4gICAgICAgICAgaWYgKHRoaXMucmVzaXplS2V5Q29udHJvbEFjdGl2ZSkge1xuICAgICAgICAgICAgdGhpcy5yZXNpemVLZXlDb250cm9sQWN0aXZlID0gZmFsc2U7XG4gICAgICAgICAgfVxuICAgICAgICBjYXNlICdsZWZ0JzpcbiAgICAgICAgICBpZiAodGhpcy5yZXNpemVLZXlDb250cm9sQWN0aXZlKSB7XG4gICAgICAgICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgZWxzZSAqL1xuICAgICAgICAgICAgaWYgKHRoaXMuZmx5b3V0V2lkdGggPCB0aGlzLmNvbmZpZy5tYXhXaWR0aCkge1xuICAgICAgICAgICAgICB0aGlzLmZseW91dFdpZHRoID0gTWF0aC5taW4oXG4gICAgICAgICAgICAgICAgdGhpcy5mbHlvdXRXaWR0aCArIHRoaXMud2lkdGhTdGVwLFxuICAgICAgICAgICAgICAgIHRoaXMuY29uZmlnLm1heFdpZHRoXG4gICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgIGNhc2UgJ3JpZ2h0JzpcbiAgICAgICAgICBpZiAodGhpcy5yZXNpemVLZXlDb250cm9sQWN0aXZlKSB7XG4gICAgICAgICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgZWxzZSAqL1xuICAgICAgICAgICAgaWYgKHRoaXMuZmx5b3V0V2lkdGggPiB0aGlzLmNvbmZpZy5taW5XaWR0aCkge1xuICAgICAgICAgICAgICB0aGlzLmZseW91dFdpZHRoID0gTWF0aC5tYXgoXG4gICAgICAgICAgICAgICAgdGhpcy5mbHlvdXRXaWR0aCAtIHRoaXMud2lkdGhTdGVwLFxuICAgICAgICAgICAgICAgIHRoaXMuY29uZmlnLm1pbldpZHRoXG4gICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgfVxuICB9XG59XG4iLCI8ZGl2XG4gIGNsYXNzPVwic2t5LWZseW91dFwiXG4gIHRhYmluZGV4PVwiLTFcIlxuICBbYXR0ci5yb2xlXT1cImNvbmZpZz8uYXJpYVJvbGVcIlxuICBbYXR0ci5hcmlhLWRlc2NyaWJlZGJ5XT1cImNvbmZpZz8uYXJpYURlc2NyaWJlZEJ5XCJcbiAgW2F0dHIuYXJpYS1sYWJlbGxlZGJ5XT1cImNvbmZpZz8uYXJpYUxhYmVsbGVkQnlcIlxuICBbaWRdPVwiZmx5b3V0SWRcIlxuICBbbmdDbGFzc109XCJ7XG4gICAgJ3NreS1mbHlvdXQtaGlkZGVuJzogIWlzT3BlbiAmJiAhaXNPcGVuaW5nLFxuICAgICdza3ktZmx5b3V0LWZ1bGxzY3JlZW4nOiBpc0Z1bGxzY3JlZW5cbiAgfVwiXG4gIFtza3lUaGVtZUNsYXNzXT1cIntcbiAgICAnc2t5LXNoYWRvdyc6ICdkZWZhdWx0JyxcbiAgICAnc2t5LWVsZXZhdGlvbi04JzogJ21vZGVybidcbiAgfVwiXG4gIChAZmx5b3V0U3RhdGUuZG9uZSk9XCJhbmltYXRpb25Eb25lKCRldmVudClcIlxuICBbQGZseW91dFN0YXRlXT1cImdldEFuaW1hdGlvblN0YXRlKClcIlxuICBbc3R5bGUud2lkdGgucHhdPVwiZmx5b3V0V2lkdGhcIlxuICAjZmx5b3V0UmVmXG4+XG4gIDxkaXZcbiAgICBjbGFzcz1cInNreS1mbHlvdXQtcmVzaXplLWhhbmRsZVwiXG4gICAgcm9sZT1cInNlcGFyYXRvclwiXG4gICAgdGFiaW5kZXg9XCIwXCJcbiAgICB0eXBlPVwicmFuZ2VcIlxuICAgIFthdHRyLmFyaWEtY29udHJvbHNdPVwiZmx5b3V0SWRcIlxuICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiJ3NreXV4X2ZseW91dF9yZXNpemVfaGFuZGxlJyB8IHNreUxpYlJlc291cmNlc1wiXG4gICAgW2F0dHIuYXJpYS12YWx1ZW1heF09XCJjb25maWcubWF4V2lkdGhcIlxuICAgIFthdHRyLmFyaWEtdmFsdWVtaW5dPVwiY29uZmlnLm1pbldpZHRoXCJcbiAgICBbYXR0ci5hcmlhLXZhbHVlbm93XT1cImZseW91dFdpZHRoXCJcbiAgICAoa2V5ZG93bik9XCJvblJlc2l6ZUhhbmRsZUtleURvd24oJGV2ZW50KVwiXG4gICAgKG1vdXNlZG93bik9XCJvblJlc2l6ZUhhbmRsZU1vdXNlRG93bigkZXZlbnQpXCJcbiAgPjwvZGl2PlxuXG4gIDxkaXZcbiAgICBjbGFzcz1cInNreS1mbHlvdXQtaGVhZGVyXCJcbiAgICBbc2t5VGhlbWVDbGFzc109XCJ7XG4gICAgICAnc2t5LXBhZGRpbmctc3F1aXNoLWxhcmdlJzogJ2RlZmF1bHQnXG4gICAgfVwiXG4gICAgI2ZseW91dEhlYWRlclxuICA+XG4gICAgPGRpdiBjbGFzcz1cInNreS1mbHlvdXQtaGVhZGVyLWNvbnRlbnRcIj5cbiAgICAgIDxidXR0b25cbiAgICAgICAgKnNreVRoZW1lSWY9XCInbW9kZXJuJ1wiXG4gICAgICAgIGNsYXNzPVwiXG4gICAgICAgICAgc2t5LWJ0blxuICAgICAgICAgIHNreS1idG4taWNvbi1ib3JkZXJsZXNzXG4gICAgICAgICAgc2t5LW1hcmdpbi1pbmxpbmUtc21cbiAgICAgICAgICBza3ktZmx5b3V0LWhlYWRlci1ncmFiLWhhbmRsZVxuICAgICAgICBcIlxuICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cIidza3l1eF9mbHlvdXRfcmVzaXplX2hhbmRsZScgfCBza3lMaWJSZXNvdXJjZXNcIlxuICAgICAgICAoa2V5ZG93bik9XCJvbkhlYWRlckdyYWJIYW5kbGVLZXlEb3duKCRldmVudClcIlxuICAgICAgICAobW91c2Vkb3duKT1cIm9uSGVhZGVyR3JhYkhhbmRsZU1vdXNlRG93bigkZXZlbnQpXCJcbiAgICAgID5cbiAgICAgICAgPHNreS1pY29uIGljb249XCJ0aWxlLWRyYWdcIiBpY29uVHlwZT1cInNreXV4XCIgc2l6ZT1cImxnXCI+IDwvc2t5LWljb24+XG4gICAgICA8L2J1dHRvbj5cblxuICAgICAgPHNreS1mbHlvdXQtaXRlcmF0b3JcbiAgICAgICAgKm5nSWY9XCJjb25maWcuc2hvd0l0ZXJhdG9yXCJcbiAgICAgICAgW25leHRCdXR0b25EaXNhYmxlZF09XCJjb25maWcuaXRlcmF0b3JOZXh0QnV0dG9uRGlzYWJsZWRcIlxuICAgICAgICBbcHJldmlvdXNCdXR0b25EaXNhYmxlZF09XCJjb25maWcuaXRlcmF0b3JQcmV2aW91c0J1dHRvbkRpc2FibGVkXCJcbiAgICAgICAgKG5leHRCdXR0b25DbGljayk9XCJvbkl0ZXJhdG9yTmV4dEJ1dHRvbkNsaWNrKClcIlxuICAgICAgICAocHJldmlvdXNCdXR0b25DbGljayk9XCJvbkl0ZXJhdG9yUHJldmlvdXNCdXR0b25DbGljaygpXCJcbiAgICAgID5cbiAgICAgIDwvc2t5LWZseW91dC1pdGVyYXRvcj5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwic2t5LWZseW91dC1oZWFkZXItYnV0dG9uc1wiPlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInBlcm1hbGlua1RlbXBsYXRlXCI+IDwvbmctY29udGFpbmVyPlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInByaW1hcnlBY3Rpb25UZW1wbGF0ZVwiPiA8L25nLWNvbnRhaW5lcj5cbiAgICAgIDxidXR0b25cbiAgICAgICAgY2xhc3M9XCJza3ktYnRuIHNreS1mbHlvdXQtYnRuLWNsb3NlIHNreS1sYWJlbC1pY29uLXRoZW1lLWRlZmF1bHRcIlxuICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCInc2t5dXhfZmx5b3V0X2Nsb3NlJyB8IHNreUxpYlJlc291cmNlc1wiXG4gICAgICAgIFtza3lUaGVtZUNsYXNzXT1cIntcbiAgICAgICAgICAnc2t5LWJ0bi1kZWZhdWx0JzogJ2RlZmF1bHQnLFxuICAgICAgICAgICdza3ktYnRuLWljb24tYm9yZGVybGVzcyc6ICdtb2Rlcm4nXG4gICAgICAgIH1cIlxuICAgICAgICAoY2xpY2spPVwiY2xvc2UoKVwiXG4gICAgICA+XG4gICAgICAgIDxza3ktaWNvbiAqc2t5VGhlbWVJZj1cIidkZWZhdWx0J1wiIGljb249XCJjbG9zZVwiPiA8L3NreS1pY29uPlxuICAgICAgICA8c2t5LWljb25cbiAgICAgICAgICAqc2t5VGhlbWVJZj1cIidtb2Rlcm4nXCJcbiAgICAgICAgICBpY29uPVwiY2xvc2VcIlxuICAgICAgICAgIGljb25UeXBlPVwic2t5dXhcIlxuICAgICAgICAgIHNpemU9XCJsZ1wiXG4gICAgICAgID5cbiAgICAgICAgPC9za3ktaWNvbj5cbiAgICAgIDwvYnV0dG9uPlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbiAgPGRpdiBjbGFzcz1cInNreS1mbHlvdXQtY29udGVudFwiPlxuICAgIDxkaXYgI3RhcmdldD48L2Rpdj5cbiAgPC9kaXY+XG48L2Rpdj5cblxuPG5nLXRlbXBsYXRlICNwZXJtYWxpbmtUZW1wbGF0ZT5cbiAgPG5nLXRlbXBsYXRlIFtuZ0lmXT1cInBlcm1hbGlua1wiPlxuICAgIDxuZy10ZW1wbGF0ZSBbbmdJZl09XCJwZXJtYWxpbmsudXJsXCI+XG4gICAgICA8YVxuICAgICAgICBjbGFzcz1cInNreS1idG4gc2t5LWZseW91dC1idG4tcGVybWFsaW5rIHNreS1tYXJnaW4taW5saW5lLWRlZmF1bHRcIlxuICAgICAgICBbc2t5SHJlZl09XCJwZXJtYWxpbmsudXJsXCJcbiAgICAgICAgW3NreVRoZW1lQ2xhc3NdPVwie1xuICAgICAgICAgICdza3ktYnRuLWRlZmF1bHQnOiAnZGVmYXVsdCcsXG4gICAgICAgICAgJ3NreS1idG4tYm9yZGVybGVzcyc6ICdtb2Rlcm4nXG4gICAgICAgIH1cIlxuICAgICAgICAoY2xpY2spPVwiY2xvc2UoKVwiXG4gICAgICA+XG4gICAgICAgIHt7IHBlcm1hbGlua0xhYmVsIH19XG4gICAgICA8L2E+XG4gICAgPC9uZy10ZW1wbGF0ZT5cbiAgICA8bmctdGVtcGxhdGUgW25nSWZdPVwicGVybWFsaW5rLnJvdXRlXCI+XG4gICAgICA8YVxuICAgICAgICBjbGFzcz1cInNreS1idG4gc2t5LWZseW91dC1idG4tcGVybWFsaW5rIHNreS1tYXJnaW4taW5saW5lLWRlZmF1bHRcIlxuICAgICAgICBbcm91dGVyTGlua109XCJwZXJtYWxpbmsucm91dGUuY29tbWFuZHNcIlxuICAgICAgICBbZnJhZ21lbnRdPVwicGVybWFsaW5rLnJvdXRlLmV4dHJhcz8uZnJhZ21lbnRcIlxuICAgICAgICBbc2t5VGhlbWVDbGFzc109XCJ7XG4gICAgICAgICAgJ3NreS1idG4tZGVmYXVsdCc6ICdkZWZhdWx0JyxcbiAgICAgICAgICAnc2t5LWJ0bi1ib3JkZXJsZXNzJzogJ21vZGVybidcbiAgICAgICAgfVwiXG4gICAgICAgIFtxdWVyeVBhcmFtc109XCJwZXJtYWxpbmsucm91dGUuZXh0cmFzPy5xdWVyeVBhcmFtc1wiXG4gICAgICAgIFtxdWVyeVBhcmFtc0hhbmRsaW5nXT1cInBlcm1hbGluay5yb3V0ZS5leHRyYXM/LnF1ZXJ5UGFyYW1zSGFuZGxpbmdcIlxuICAgICAgICBbc3RhdGVdPVwicGVybWFsaW5rLnJvdXRlLmV4dHJhcz8uc3RhdGVcIlxuICAgICAgICAoY2xpY2spPVwiY2xvc2UoKVwiXG4gICAgICA+XG4gICAgICAgIHt7IHBlcm1hbGlua0xhYmVsIH19XG4gICAgICA8L2E+XG4gICAgPC9uZy10ZW1wbGF0ZT5cbiAgPC9uZy10ZW1wbGF0ZT5cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZSAjcHJpbWFyeUFjdGlvblRlbXBsYXRlPlxuICA8bmctdGVtcGxhdGUgW25nSWZdPVwicHJpbWFyeUFjdGlvbiAmJiBwcmltYXJ5QWN0aW9uLmNhbGxiYWNrXCI+XG4gICAgPGJ1dHRvblxuICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICBjbGFzcz1cIlxuICAgICAgICBza3ktYnRuXG4gICAgICAgIHNreS1idG4tZGVmYXVsdFxuICAgICAgICBza3ktZmx5b3V0LWJ0bi1wcmltYXJ5LWFjdGlvblxuICAgICAgICBza3ktbWFyZ2luLWlubGluZS1kZWZhdWx0XG4gICAgICBcIlxuICAgICAgKGNsaWNrKT1cImludm9rZVByaW1hcnlBY3Rpb24oKVwiXG4gICAgPlxuICAgICAge3sgcHJpbWFyeUFjdGlvbkxhYmVsIH19XG4gICAgPC9idXR0b24+XG4gIDwvbmctdGVtcGxhdGU+XG48L25nLXRlbXBsYXRlPlxuIl19
@@ -1,52 +0,0 @@
1
- import { NgModule } from '@angular/core';
2
- import { CommonModule } from '@angular/common';
3
- import { FormsModule } from '@angular/forms';
4
- import { RouterModule } from '@angular/router';
5
- import { SkyIconModule } from '@skyux/indicators';
6
- import { SkyI18nModule } from '@skyux/i18n';
7
- import { SkyHrefModule } from '@skyux/router';
8
- import { SkyThemeModule } from '@skyux/theme';
9
- import { SkyFlyoutResourcesModule } from '../shared/sky-flyout-resources.module';
10
- import { SkyFlyoutComponent } from './flyout.component';
11
- import { SkyFlyoutIteratorComponent } from './flyout-iterator.component';
12
- import * as i0 from "@angular/core";
13
- export class SkyFlyoutModule {
14
- }
15
- SkyFlyoutModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0, type: SkyFlyoutModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
16
- SkyFlyoutModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0, type: SkyFlyoutModule, declarations: [SkyFlyoutComponent, SkyFlyoutIteratorComponent], imports: [CommonModule,
17
- FormsModule,
18
- RouterModule,
19
- SkyI18nModule,
20
- SkyIconModule,
21
- SkyFlyoutResourcesModule,
22
- SkyThemeModule,
23
- SkyHrefModule], exports: [SkyFlyoutComponent] });
24
- SkyFlyoutModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0, type: SkyFlyoutModule, imports: [[
25
- CommonModule,
26
- FormsModule,
27
- RouterModule,
28
- SkyI18nModule,
29
- SkyIconModule,
30
- SkyFlyoutResourcesModule,
31
- SkyThemeModule,
32
- SkyHrefModule,
33
- ]] });
34
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0, type: SkyFlyoutModule, decorators: [{
35
- type: NgModule,
36
- args: [{
37
- declarations: [SkyFlyoutComponent, SkyFlyoutIteratorComponent],
38
- imports: [
39
- CommonModule,
40
- FormsModule,
41
- RouterModule,
42
- SkyI18nModule,
43
- SkyIconModule,
44
- SkyFlyoutResourcesModule,
45
- SkyThemeModule,
46
- SkyHrefModule,
47
- ],
48
- exports: [SkyFlyoutComponent],
49
- entryComponents: [SkyFlyoutComponent],
50
- }]
51
- }] });
52
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmx5b3V0Lm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2ZseW91dC9zcmMvbW9kdWxlcy9mbHlvdXQvZmx5b3V0Lm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRXpDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUUvQyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFN0MsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBRS9DLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUVsRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBRTVDLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFOUMsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUU5QyxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQztBQUVqRixPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUV4RCxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQzs7QUFpQnpFLE1BQU0sT0FBTyxlQUFlOzs2R0FBZixlQUFlOzhHQUFmLGVBQWUsaUJBZFgsa0JBQWtCLEVBQUUsMEJBQTBCLGFBRTNELFlBQVk7UUFDWixXQUFXO1FBQ1gsWUFBWTtRQUNaLGFBQWE7UUFDYixhQUFhO1FBQ2Isd0JBQXdCO1FBQ3hCLGNBQWM7UUFDZCxhQUFhLGFBRUwsa0JBQWtCOzhHQUdqQixlQUFlLFlBYmpCO1lBQ1AsWUFBWTtZQUNaLFdBQVc7WUFDWCxZQUFZO1lBQ1osYUFBYTtZQUNiLGFBQWE7WUFDYix3QkFBd0I7WUFDeEIsY0FBYztZQUNkLGFBQWE7U0FDZDs0RkFJVSxlQUFlO2tCQWYzQixRQUFRO21CQUFDO29CQUNSLFlBQVksRUFBRSxDQUFDLGtCQUFrQixFQUFFLDBCQUEwQixDQUFDO29CQUM5RCxPQUFPLEVBQUU7d0JBQ1AsWUFBWTt3QkFDWixXQUFXO3dCQUNYLFlBQVk7d0JBQ1osYUFBYTt3QkFDYixhQUFhO3dCQUNiLHdCQUF3Qjt3QkFDeEIsY0FBYzt3QkFDZCxhQUFhO3FCQUNkO29CQUNELE9BQU8sRUFBRSxDQUFDLGtCQUFrQixDQUFDO29CQUM3QixlQUFlLEVBQUUsQ0FBQyxrQkFBa0IsQ0FBQztpQkFDdEMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuXG5pbXBvcnQgeyBGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcblxuaW1wb3J0IHsgUm91dGVyTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcblxuaW1wb3J0IHsgU2t5SWNvbk1vZHVsZSB9IGZyb20gJ0Bza3l1eC9pbmRpY2F0b3JzJztcblxuaW1wb3J0IHsgU2t5STE4bk1vZHVsZSB9IGZyb20gJ0Bza3l1eC9pMThuJztcblxuaW1wb3J0IHsgU2t5SHJlZk1vZHVsZSB9IGZyb20gJ0Bza3l1eC9yb3V0ZXInO1xuXG5pbXBvcnQgeyBTa3lUaGVtZU1vZHVsZSB9IGZyb20gJ0Bza3l1eC90aGVtZSc7XG5cbmltcG9ydCB7IFNreUZseW91dFJlc291cmNlc01vZHVsZSB9IGZyb20gJy4uL3NoYXJlZC9za3ktZmx5b3V0LXJlc291cmNlcy5tb2R1bGUnO1xuXG5pbXBvcnQgeyBTa3lGbHlvdXRDb21wb25lbnQgfSBmcm9tICcuL2ZseW91dC5jb21wb25lbnQnO1xuXG5pbXBvcnQgeyBTa3lGbHlvdXRJdGVyYXRvckNvbXBvbmVudCB9IGZyb20gJy4vZmx5b3V0LWl0ZXJhdG9yLmNvbXBvbmVudCc7XG5cbkBOZ01vZHVsZSh7XG4gIGRlY2xhcmF0aW9uczogW1NreUZseW91dENvbXBvbmVudCwgU2t5Rmx5b3V0SXRlcmF0b3JDb21wb25lbnRdLFxuICBpbXBvcnRzOiBbXG4gICAgQ29tbW9uTW9kdWxlLFxuICAgIEZvcm1zTW9kdWxlLFxuICAgIFJvdXRlck1vZHVsZSxcbiAgICBTa3lJMThuTW9kdWxlLFxuICAgIFNreUljb25Nb2R1bGUsXG4gICAgU2t5Rmx5b3V0UmVzb3VyY2VzTW9kdWxlLFxuICAgIFNreVRoZW1lTW9kdWxlLFxuICAgIFNreUhyZWZNb2R1bGUsXG4gIF0sXG4gIGV4cG9ydHM6IFtTa3lGbHlvdXRDb21wb25lbnRdLFxuICBlbnRyeUNvbXBvbmVudHM6IFtTa3lGbHlvdXRDb21wb25lbnRdLFxufSlcbmV4cG9ydCBjbGFzcyBTa3lGbHlvdXRNb2R1bGUge31cbiJdfQ==