@fundamental-ngx/core 0.46.1-rc.5 → 0.46.2-rc.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.
@@ -1,7 +1,7 @@
1
1
  import { CdkScrollable } from '@angular/cdk/scrolling';
2
2
  import { NgFor, NgIf, NgTemplateOutlet } from '@angular/common';
3
- import { ChangeDetectionStrategy, ChangeDetectorRef, Component, ContentChild, ContentChildren, ElementRef, HostBinding, HostListener, Inject, Input, Optional, QueryList, ViewChild, ViewEncapsulation } from '@angular/core';
4
- import { scrollTop } from '@fundamental-ngx/cdk/utils';
3
+ import { ChangeDetectionStrategy, ChangeDetectorRef, Component, ContentChild, ContentChildren, ElementRef, HostBinding, HostListener, Inject, Input, Optional, QueryList, ViewChild, ViewEncapsulation, inject } from '@angular/core';
4
+ import { TabbableElementService, scrollTop } from '@fundamental-ngx/cdk/utils';
5
5
  import { DialogBodyComponent, FD_DIALOG_BODY_COMPONENT } from '@fundamental-ngx/core/dialog';
6
6
  import { ScrollSpyDirective } from '@fundamental-ngx/core/scroll-spy';
7
7
  import { ScrollbarDirective } from '@fundamental-ngx/core/scrollbar';
@@ -65,6 +65,8 @@ export class WizardComponent {
65
65
  this._stepEventSubscriptions = new Subscription();
66
66
  /** @hidden */
67
67
  this._subscriptions = new Subscription();
68
+ /** @hidden */
69
+ this._tabbableService = inject(TabbableElementService);
68
70
  }
69
71
  /** @hidden */
70
72
  resizeHandler() {
@@ -108,6 +110,23 @@ export class WizardComponent {
108
110
  this._subscriptions.unsubscribe();
109
111
  this.wrapperContainer?.nativeElement.removeEventListener('scroll', handleTimeoutReference);
110
112
  }
113
+ /** @hidden */
114
+ scrollSpyChange($event) {
115
+ if (!_fromScrollToCurrentStep) {
116
+ this.steps.forEach((step) => {
117
+ if (step._stepId.toString() === $event.children[0].children[0].id) {
118
+ step.status = CURRENT_STEP_STATUS;
119
+ }
120
+ else if (step._stepId < parseInt($event.children[0].children[0].id, 10)) {
121
+ step.status = COMPLETED_STEP_STATUS;
122
+ }
123
+ else {
124
+ step.status = UPCOMING_STEP_STATUS;
125
+ }
126
+ });
127
+ }
128
+ this._shrinkWhileAnyStepIsTooNarrow();
129
+ }
111
130
  /**
112
131
  * @hidden
113
132
  * @private
@@ -288,12 +307,25 @@ export class WizardComponent {
288
307
  if (step.status === CURRENT_STEP_STATUS && (!step.isSummary || this.displaySummaryStep)) {
289
308
  const child = this.wrapperContainer.nativeElement.children[0].children[index];
290
309
  const wizardNavigationHeight = this._elRef.nativeElement.querySelector('.' + WIZARD_NAVIGATION_CLASS).clientHeight;
291
- scrollTop(this.wrapperContainer.nativeElement.children[0], child.offsetTop - wizardNavigationHeight);
310
+ scrollTop(this.wrapperContainer.nativeElement, child.offsetTop - wizardNavigationHeight);
311
+ if (index === 0) {
312
+ this._focusFirstTabbableElement(index);
313
+ }
314
+ else {
315
+ // setTimeout needed to allow for smooth scroll animation
316
+ setTimeout(() => {
317
+ this._focusFirstTabbableElement(index);
318
+ }, 500);
319
+ }
292
320
  }
293
321
  });
294
322
  this._setUpScrollListener();
295
323
  }
296
- this.scrollbar.scroll({ top: 0, behavior: 'smooth' });
324
+ }
325
+ /** @hidden */
326
+ _focusFirstTabbableElement(index = 0) {
327
+ const contentContainer = this._elRef.nativeElement.querySelectorAll('.fd-wizard__content')[index];
328
+ this._tabbableService.getTabbableElement(contentContainer)?.focus();
297
329
  }
298
330
  /** @hidden */
299
331
  _setUpScrollListener() {
@@ -370,6 +402,9 @@ export class WizardComponent {
370
402
  this._setContentTemplates();
371
403
  this._shrinkWhileAnyStepIsTooNarrow();
372
404
  }
405
+ if (!this.appendToWizard) {
406
+ this._focusFirstTabbableElement();
407
+ }
373
408
  setTimeout(() => {
374
409
  this._cdRef.detectChanges();
375
410
  this.resizeHandler();
@@ -466,23 +501,6 @@ export class WizardComponent {
466
501
  }
467
502
  return this.steps.last;
468
503
  }
469
- /** @hidden */
470
- scrollSpyChange($event) {
471
- if (!_fromScrollToCurrentStep) {
472
- this.steps.forEach((step) => {
473
- if (step._stepId.toString() === $event.children[0].children[0].id) {
474
- step.status = CURRENT_STEP_STATUS;
475
- }
476
- else if (step._stepId < parseInt($event.children[0].children[0].id, 10)) {
477
- step.status = COMPLETED_STEP_STATUS;
478
- }
479
- else {
480
- step.status = UPCOMING_STEP_STATUS;
481
- }
482
- });
483
- }
484
- this._shrinkWhileAnyStepIsTooNarrow();
485
- }
486
504
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.7", ngImport: i0, type: WizardComponent, deps: [{ token: i0.ElementRef }, { token: i0.ChangeDetectorRef }, { token: FD_DIALOG_BODY_COMPONENT, optional: true }], target: i0.ɵɵFactoryTarget.Component }); }
487
505
  static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.7", type: WizardComponent, isStandalone: true, selector: "fd-wizard", inputs: { appendToWizard: "appendToWizard", contentHeight: "contentHeight", responsivePaddings: "responsivePaddings", displaySummaryStep: "displaySummaryStep", ariaLabel: "ariaLabel" }, host: { attributes: { "role": "region" }, listeners: { "window:resize": "resizeHandler()" }, properties: { "attr.aria-label": "ariaLabel || _defaultAriaLabel()", "class.fd-wizard--responsive-paddings": "this.responsivePaddings" } }, providers: [
488
506
  WizardService,
@@ -541,4 +559,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.7", ngImpor
541
559
  type: HostListener,
542
560
  args: ['window:resize']
543
561
  }] } });
544
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2l6YXJkLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYnMvY29yZS9zcmMvbGliL3dpemFyZC93aXphcmQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vbGlicy9jb3JlL3NyYy9saWIvd2l6YXJkL3dpemFyZC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDdkQsT0FBTyxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNoRSxPQUFPLEVBRUgsdUJBQXVCLEVBQ3ZCLGlCQUFpQixFQUNqQixTQUFTLEVBQ1QsWUFBWSxFQUNaLGVBQWUsRUFDZixVQUFVLEVBQ1YsV0FBVyxFQUNYLFlBQVksRUFDWixNQUFNLEVBQ04sS0FBSyxFQUVMLFFBQVEsRUFDUixTQUFTLEVBRVQsU0FBUyxFQUNULGlCQUFpQixFQUNwQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQVksU0FBUyxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDakUsT0FBTyxFQUFFLG1CQUFtQixFQUFFLHdCQUF3QixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDN0YsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFDdEUsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDckUsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDakUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNwQyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUscUJBQXFCLEVBQUUsbUJBQW1CLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDbkgsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sMkNBQTJD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L0I7cUJBQ0osUUFDSzt3QkFDRixJQUFJLEVBQUUsUUFBUTt3QkFDZCxtQkFBbUIsRUFBRSxrQ0FBa0M7cUJBQzFELGNBQ1csSUFBSSxXQUNQLENBQUMsSUFBSSxFQUFFLGtCQUFrQixFQUFFLGFBQWEsRUFBRSxrQkFBa0IsRUFBRSxLQUFLLEVBQUUsZ0JBQWdCLENBQUM7OzBCQWdGMUYsUUFBUTs7MEJBQUksTUFBTTsyQkFBQyx3QkFBd0I7NENBeEVoRCxjQUFjO3NCQURiLEtBQUs7Z0JBUU4sYUFBYTtzQkFEWixLQUFLO2dCQVFOLGtCQUFrQjtzQkFGakIsS0FBSzs7c0JBQ0wsV0FBVzt1QkFBQyxzQ0FBc0M7Z0JBS25ELGtCQUFrQjtzQkFEakIsS0FBSztnQkFRTixTQUFTO3NCQURSLEtBQUs7Z0JBS04sS0FBSztzQkFESixlQUFlO3VCQUFDLG1CQUFtQixFQUFFLEVBQUUsV0FBVyxFQUFFLElBQUksRUFBRTtnQkFLM0QsV0FBVztzQkFEVixZQUFZO3VCQUFDLDBCQUEwQjtnQkFLeEMsYUFBYTtzQkFEWixlQUFlO3VCQUFDLHNCQUFzQjtnQkFLdkMsZ0JBQWdCO3NCQURmLFNBQVM7dUJBQUMsa0JBQWtCO2dCQUs3QixTQUFTO3NCQURSLFNBQVM7dUJBQUMsa0JBQWtCO2dCQWlDN0IsYUFBYTtzQkFEWixZQUFZO3VCQUFDLGVBQWUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDZGtTY3JvbGxhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL3Njcm9sbGluZyc7XG5pbXBvcnQgeyBOZ0ZvciwgTmdJZiwgTmdUZW1wbGF0ZU91dGxldCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQge1xuICAgIEFmdGVyVmlld0luaXQsXG4gICAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gICAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgQ29tcG9uZW50LFxuICAgIENvbnRlbnRDaGlsZCxcbiAgICBDb250ZW50Q2hpbGRyZW4sXG4gICAgRWxlbWVudFJlZixcbiAgICBIb3N0QmluZGluZyxcbiAgICBIb3N0TGlzdGVuZXIsXG4gICAgSW5qZWN0LFxuICAgIElucHV0LFxuICAgIE9uRGVzdHJveSxcbiAgICBPcHRpb25hbCxcbiAgICBRdWVyeUxpc3QsXG4gICAgVGVtcGxhdGVSZWYsXG4gICAgVmlld0NoaWxkLFxuICAgIFZpZXdFbmNhcHN1bGF0aW9uXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTnVsbGFibGUsIHNjcm9sbFRvcCB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY2RrL3V0aWxzJztcbmltcG9ydCB7IERpYWxvZ0JvZHlDb21wb25lbnQsIEZEX0RJQUxPR19CT0RZX0NPTVBPTkVOVCB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY29yZS9kaWFsb2cnO1xuaW1wb3J0IHsgU2Nyb2xsU3B5RGlyZWN0aXZlIH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jb3JlL3Njcm9sbC1zcHknO1xuaW1wb3J0IHsgU2Nyb2xsYmFyRGlyZWN0aXZlIH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jb3JlL3Njcm9sbGJhcic7XG5pbXBvcnQgeyByZXNvbHZlVHJhbnNsYXRpb25TaWduYWwgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2kxOG4nO1xuaW1wb3J0IHsgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBBQ1RJVkVfU1RFUF9TVEFUVVMsIENPTVBMRVRFRF9TVEVQX1NUQVRVUywgQ1VSUkVOVF9TVEVQX1NUQVRVUywgVVBDT01JTkdfU1RFUF9TVEFUVVMgfSBmcm9tICcuL2NvbnN0YW50cyc7XG5pbXBvcnQgeyBXaXphcmRDb250ZW50Q29tcG9uZW50IH0gZnJvbSAnLi93aXphcmQtY29udGVudC93aXphcmQtY29udGVudC5jb21wb25lbnQnO1xuaW1wb3J0IHsgV0laQVJEIH0gZnJvbSAnLi93aXphcmQtaW5qZWN0aW9uLXRva2VuJztcbmltcG9ydCB7IFdpemFyZFByb2dyZXNzQmFyRGlyZWN0aXZlIH0gZnJvbSAnLi93aXphcmQtcHJvZ3Jlc3MtYmFyL3dpemFyZC1wcm9ncmVzcy1iYXIuZGlyZWN0aXZlJztcbmltcG9ydCB7IFdpemFyZFN0ZXBDb21wb25lbnQgfSBmcm9tICcuL3dpemFyZC1zdGVwL3dpemFyZC1zdGVwLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBXaXphcmRTZXJ2aWNlIH0gZnJvbSAnLi93aXphcmQuc2VydmljZSc7XG5cbmV4cG9ydCBjb25zdCBTVEVQX01JTl9XSURUSCA9IDE2ODtcbmV4cG9ydCBjb25zdCBTVEVQX1NUQUNLRURfVE9QX0NMQVNTID0gJ2ZkLXdpemFyZF9fc3RlcC0tc3RhY2tlZC10b3AnO1xuZXhwb3J0IGNvbnN0IFNURVBfU1RBQ0tFRF9DTEFTUyA9ICdmZC13aXphcmRfX3N0ZXAtLXN0YWNrZWQnO1xuZXhwb3J0IGNvbnN0IFNURVBfTk9fTEFCRUxfQ0xBU1MgPSAnZmQtd2l6YXJkX19zdGVwLS1uby1sYWJlbCc7XG5cbmV4cG9ydCBjb25zdCBXSVpBUkRfTkFWSUdBVElPTl9DTEFTUyA9ICdmZC13aXphcmRfX25hdmlnYXRpb24nO1xuZXhwb3J0IGNvbnN0IFdJWkFSRF9DT05URU5UX0NMQVNTID0gJ2ZkLXdpemFyZF9fY29udGVudCc7XG5leHBvcnQgY29uc3QgV0laQVJEX0NPTlRBSU5FUl9XUkFQUEVSX0NMQVNTID0gJ2ZkLXdpemFyZC1jb250YWluZXItd3JhcHBlcic7XG5leHBvcnQgY29uc3QgV0laQVJEX1RBTExfQ09OVEVOVF9DTEFTUyA9ICdmZC13aXphcmQtdGFsbC1jb250ZW50JztcbmV4cG9ydCBjb25zdCBTSEVMTEJBUl9DTEFTUyA9ICdmZC1zaGVsbGJhcic7XG5leHBvcnQgY29uc3QgQkFSX0ZPT1RFUl9DTEFTUyA9ICdmZC1iYXItLWZvb3Rlcic7XG5leHBvcnQgY29uc3QgQkFSX0ZMT0FUSU5HX0ZPT1RFUl9DTEFTUyA9ICdmZC1iYXItLWZsb2F0aW5nLWZvb3Rlcic7XG5cbmV4cG9ydCBsZXQgX2Zyb21TY3JvbGxUb0N1cnJlbnRTdGVwO1xuZXhwb3J0IGxldCB0aW1lcjogYW55ID0gbnVsbDtcbmV4cG9ydCBjb25zdCBoYW5kbGVUaW1lb3V0UmVmZXJlbmNlID0gKCk6IHZvaWQgPT4ge1xuICAgIGlmICh0aW1lciAhPT0gbnVsbCkge1xuICAgICAgICBjbGVhclRpbWVvdXQodGltZXIpO1xuICAgIH1cbiAgICB0aW1lciA9IHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICBfZnJvbVNjcm9sbFRvQ3VycmVudFN0ZXAgPSBmYWxzZTtcbiAgICB9LCAxNTApO1xufTtcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdmZC13aXphcmQnLFxuICAgIHRlbXBsYXRlVXJsOiAnLi93aXphcmQuY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsczogWycuL3dpemFyZC5jb21wb25lbnQuc2NzcyddLFxuICAgIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gICAgcHJvdmlkZXJzOiBbXG4gICAgICAgIFdpemFyZFNlcnZpY2UsXG4gICAgICAgIHtcbiAgICAgICAgICAgIHByb3ZpZGU6IFdJWkFSRCxcbiAgICAgICAgICAgIHVzZUV4aXN0aW5nOiBXaXphcmRDb21wb25lbnRcbiAgICAgICAgfVxuICAgIF0sXG4gICAgaG9zdDoge1xuICAgICAgICByb2xlOiAncmVnaW9uJyxcbiAgICAgICAgJ1thdHRyLmFyaWEtbGFiZWxdJzogJ2FyaWFMYWJlbCB8fCBfZGVmYXVsdEFyaWFMYWJlbCgpJ1xuICAgIH0sXG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBpbXBvcnRzOiBbTmdJZiwgU2Nyb2xsU3B5RGlyZWN0aXZlLCBDZGtTY3JvbGxhYmxlLCBTY3JvbGxiYXJEaXJlY3RpdmUsIE5nRm9yLCBOZ1RlbXBsYXRlT3V0bGV0XVxufSlcbmV4cG9ydCBjbGFzcyBXaXphcmRDb21wb25lbnQgaW1wbGVtZW50cyBBZnRlclZpZXdJbml0LCBPbkRlc3Ryb3kge1xuICAgIC8qKlxuICAgICAqIFdoZXRoZXIgb3Igbm90IHRvIGFwcGVuZCB0aGUgc3RlcCB0byB0aGUgd2l6YXJkLiBJZiBmYWxzZSwgZWFjaCBzdGVwIHdpbGwgYmUgZGlzcGxheWVkIG9uIGEgZGlmZmVyZW50IHBhZ2UuXG4gICAgICogRGVmYXVsdCBpcyB0cnVlLlxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgYXBwZW5kVG9XaXphcmQgPSB0cnVlO1xuXG4gICAgLyoqXG4gICAgICogQ3VzdG9tIGhlaWdodCB0byB1c2UgZm9yIHRoZSB3aXphcmQncyBjb250ZW50IHBhbmUuIEJ5IGRlZmF1bHQsIHRoaXMgdmFsdWUgaXMgY2FsYygxMDB2aCAtIDE0NHB4KSwgd2hlcmUgMTQ0cHhcbiAgICAgKiBpcyB0aGUgY29tYmluZWQgaGVpZ2h0IG9mIHRoZSBzaGVsbGJhciwgd2l6YXJkIGhlYWRlciBhbmQgd2l6YXJkIGZvb3Rlci5cbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIGNvbnRlbnRIZWlnaHQ6IE51bGxhYmxlPHN0cmluZyB8IG51bGw+O1xuXG4gICAgLyoqXG4gICAgICogV2hldGhlciBvciBub3QgYXBwbHkgcmVzcG9uc2l2ZSBwYWRkaW5ncyBzdHlsaW5nLlxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgQEhvc3RCaW5kaW5nKCdjbGFzcy5mZC13aXphcmQtLXJlc3BvbnNpdmUtcGFkZGluZ3MnKVxuICAgIHJlc3BvbnNpdmVQYWRkaW5ncyA9IGZhbHNlO1xuXG4gICAgLyoqIFdoZXRoZXIgdG8gZGlzcGxheSBhIHN1bW1hcnkgc3RlcC4gICovXG4gICAgQElucHV0KClcbiAgICBkaXNwbGF5U3VtbWFyeVN0ZXAgPSBmYWxzZTtcblxuICAgIC8qKlxuICAgICAqIGFkZGluZyBhcmlhIGxhYmVsIHRvIHRoZSBjb21wb25lbnRcbiAgICAgKiBJZiBub3QgcHJvdmlkZWQsIGlzIGJlaW5nIHRyYW5zbGF0ZWQgYnkgaTE4biBwYWNrYWdlXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBhcmlhTGFiZWw6IHN0cmluZztcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgQENvbnRlbnRDaGlsZHJlbihXaXphcmRTdGVwQ29tcG9uZW50LCB7IGRlc2NlbmRhbnRzOiB0cnVlIH0pXG4gICAgc3RlcHM6IFF1ZXJ5TGlzdDxXaXphcmRTdGVwQ29tcG9uZW50PjtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgQENvbnRlbnRDaGlsZChXaXphcmRQcm9ncmVzc0JhckRpcmVjdGl2ZSlcbiAgICBwcm9ncmVzc0JhcjogV2l6YXJkUHJvZ3Jlc3NCYXJEaXJlY3RpdmU7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIEBDb250ZW50Q2hpbGRyZW4oV2l6YXJkQ29udGVudENvbXBvbmVudClcbiAgICB3aXphcmRDb250ZW50OiBXaXphcmRDb250ZW50Q29tcG9uZW50O1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBAVmlld0NoaWxkKCd3cmFwcGVyQ29udGFpbmVyJylcbiAgICB3cmFwcGVyQ29udGFpbmVyOiBFbGVtZW50UmVmPEhUTUxFbGVtZW50PjtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgQFZpZXdDaGlsZChTY3JvbGxiYXJEaXJlY3RpdmUpXG4gICAgc2Nyb2xsYmFyOiBTY3JvbGxiYXJEaXJlY3RpdmU7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIGNvbnRlbnRUZW1wbGF0ZXM6IFRlbXBsYXRlUmVmPGFueT5bXSA9IFtdO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBzdGFja2VkU3RlcHNMZWZ0OiBXaXphcmRTdGVwQ29tcG9uZW50W10gPSBbXTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgc3RhY2tlZFN0ZXBzUmlnaHQ6IFdpemFyZFN0ZXBDb21wb25lbnRbXSA9IFtdO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcm90ZWN0ZWQgX2RlZmF1bHRBcmlhTGFiZWwgPSByZXNvbHZlVHJhbnNsYXRpb25TaWduYWwoJ2NvcmVXaXphcmQuYXJpYUxhYmVsJyk7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX3N0ZXBFdmVudFN1YnNjcmlwdGlvbnM6IFN1YnNjcmlwdGlvbiA9IG5ldyBTdWJzY3JpcHRpb24oKTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfc3Vic2NyaXB0aW9uczogU3Vic2NyaXB0aW9uID0gbmV3IFN1YnNjcmlwdGlvbigpO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9wcmV2aW91c1dpZHRoOiBudW1iZXI7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBwcml2YXRlIF9lbFJlZjogRWxlbWVudFJlZixcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSBfY2RSZWY6IENoYW5nZURldGVjdG9yUmVmLFxuICAgICAgICBAT3B0aW9uYWwoKSBASW5qZWN0KEZEX0RJQUxPR19CT0RZX0NPTVBPTkVOVCkgcHJpdmF0ZSBfZGlhbG9nQm9keUNvbXBvbmVudDogRGlhbG9nQm9keUNvbXBvbmVudFxuICAgICkge31cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgQEhvc3RMaXN0ZW5lcignd2luZG93OnJlc2l6ZScpXG4gICAgcmVzaXplSGFuZGxlcigpOiB2b2lkIHtcbiAgICAgICAgY29uc3Qgd2l6YXJkV2lkdGggPSB0aGlzLl9lbFJlZi5uYXRpdmVFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLndpZHRoO1xuICAgICAgICBpZiAoIXRoaXMuX3ByZXZpb3VzV2lkdGggfHwgd2l6YXJkV2lkdGggPD0gdGhpcy5fcHJldmlvdXNXaWR0aCkge1xuICAgICAgICAgICAgdGhpcy5fd2l6YXJkU2hyaW5raW5nKCk7XG4gICAgICAgIH0gZWxzZSBpZiAod2l6YXJkV2lkdGggPiB0aGlzLl9wcmV2aW91c1dpZHRoKSB7XG4gICAgICAgICAgICB0aGlzLl9zaHJpbmtXaGlsZUFueVN0ZXBJc1Rvb05hcnJvdygpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuX3ByZXZpb3VzV2lkdGggPSB3aXphcmRXaWR0aDtcbiAgICAgICAgaWYgKHRoaXMuY29udGVudEhlaWdodCkge1xuICAgICAgICAgICAgdGhpcy5fZWxSZWYubmF0aXZlRWxlbWVudC5xdWVyeVNlbGVjdG9yKCcuJyArIFdJWkFSRF9DT05UQUlORVJfV1JBUFBFUl9DTEFTUykuc3R5bGUuaGVpZ2h0ID1cbiAgICAgICAgICAgICAgICB0aGlzLmNvbnRlbnRIZWlnaHQ7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLl9zZXRDb250YWluZXJBbmRUYWxsQ29udGVudEhlaWdodCgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgaWYgKHRoaXMuX3N1YnNjcmlwdGlvbnMuY2xvc2VkKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAvLyBmaXhlcyBFeHByZXNzaW9uQ2hhbmdlZEFmdGVySXRIYXNCZWVuQ2hlY2tlZEVycm9yXG4gICAgICAgICAgICB0aGlzLl9zZXRDb250ZW50VGVtcGxhdGVzKCk7XG4gICAgICAgICAgICB0aGlzLl9zdWJzY3JpcHRpb25zLmFkZChcbiAgICAgICAgICAgICAgICB0aGlzLnN0ZXBzLmNoYW5nZXMuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5faGFuZGxlU3RlcE9yU3RhdHVzQ2hhbmdlcygpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLl9zZXR1cFN0ZXBFdmVudHMoKTtcbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIHRoaXMuX3NldHVwU3RlcEV2ZW50cygpO1xuICAgICAgICAgICAgdGhpcy5fY2RSZWYuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICAgICAgdGhpcy5faGFuZGxlU3RlcE9yU3RhdHVzQ2hhbmdlcygpO1xuICAgICAgICAgICAgdGhpcy5yZXNpemVIYW5kbGVyKCk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX3N0ZXBFdmVudFN1YnNjcmlwdGlvbnMudW5zdWJzY3JpYmUoKTtcbiAgICAgICAgdGhpcy5fc3Vic2NyaXB0aW9ucy51bnN1YnNjcmliZSgpO1xuICAgICAgICB0aGlzLndyYXBwZXJDb250YWluZXI/Lm5hdGl2ZUVsZW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcignc2Nyb2xsJywgaGFuZGxlVGltZW91dFJlZmVyZW5jZSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqIEBwcml2YXRlXG4gICAgICogVGhpcyBmdW5jdGlvbiBkZXRlcm1pbmVzIHRoZSBoZWlnaHQgb2YgdGhlIHdpemFyZCBjb250ZW50IGJ5IGxvb2tpbmcgZm9yIHRoZSBkb2N1bWVudCdzIHNoZWxsYmFyLCB0aGUgd2l6YXJkXG4gICAgICogbmF2aWdhdGlvbiBhbmQgdGhlIHdpemFyZCBmb290ZXIsIGFuZCBjYWxjdWxhdGluZyB0aGUgaGVpZ2h0IGJhc2VkIG9uIHRoZWlyIHByZXNlbmNlLlxuICAgICAqL1xuICAgIHByaXZhdGUgX2NhbGN1bGF0ZUNvbnRlbnRIZWlnaHQoKTogbnVtYmVyIHtcbiAgICAgICAgbGV0IHdpemFyZE5hdkhlaWdodCA9IDA7XG4gICAgICAgIGNvbnN0IHNoZWxsYmFySGVpZ2h0ID0gdGhpcy5fZ2V0U2hlbGxiYXJIZWlnaHQoKTtcbiAgICAgICAgaWYgKCF0aGlzLl9pc0N1cnJlbnRTdGVwU3VtbWFyeSgpIHx8IHRoaXMuZGlzcGxheVN1bW1hcnlTdGVwKSB7XG4gICAgICAgICAgICB3aXphcmROYXZIZWlnaHQgPSB0aGlzLl9nZXRXaXphcmROYXZIZWlnaHQoKTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCB3aXphcmRGb290ZXJIZWlnaHQgPSB0aGlzLl9nZXRXaXphcmRGb290ZXJIZWlnaHQoKTtcbiAgICAgICAgY29uc3QgZGlhbG9nT2Zmc2V0ID0gdGhpcy5fZ2V0RGlhbG9nT2Zmc2V0KCk7XG5cbiAgICAgICAgcmV0dXJuIHNoZWxsYmFySGVpZ2h0ICsgd2l6YXJkTmF2SGVpZ2h0ICsgd2l6YXJkRm9vdGVySGVpZ2h0ICsgZGlhbG9nT2Zmc2V0O1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfZ2V0U2hlbGxiYXJIZWlnaHQoKTogbnVtYmVyIHtcbiAgICAgICAgcmV0dXJuIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3I8SFRNTEVsZW1lbnQ+KCcuJyArIFNIRUxMQkFSX0NMQVNTKT8uY2xpZW50SGVpZ2h0ID8/IDA7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9nZXRXaXphcmROYXZIZWlnaHQoKTogbnVtYmVyIHtcbiAgICAgICAgY29uc3Qgd2l6YXJkID0gdGhpcy5fZWxSZWYubmF0aXZlRWxlbWVudDtcbiAgICAgICAgbGV0IHJldFZhbDtcbiAgICAgICAgaWYgKHdpemFyZC5xdWVyeVNlbGVjdG9yKCcuJyArIFdJWkFSRF9OQVZJR0FUSU9OX0NMQVNTKSkge1xuICAgICAgICAgICAgcmV0VmFsID0gd2l6YXJkLnF1ZXJ5U2VsZWN0b3IoJy4nICsgV0laQVJEX05BVklHQVRJT05fQ0xBU1MpLmNsaWVudEhlaWdodDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldFZhbCA9IDA7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHJldFZhbDtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2dldFdpemFyZEZvb3RlckhlaWdodCgpOiBudW1iZXIge1xuICAgICAgICBjb25zdCB3aXphcmQgPSB0aGlzLl9lbFJlZi5uYXRpdmVFbGVtZW50O1xuICAgICAgICBsZXQgcmV0VmFsO1xuICAgICAgICBpZiAod2l6YXJkLnF1ZXJ5U2VsZWN0b3IoJy4nICsgQkFSX0ZPT1RFUl9DTEFTUykpIHtcbiAgICAgICAgICAgIHJldFZhbCA9IHdpemFyZC5xdWVyeVNlbGVjdG9yKCcuJyArIEJBUl9GT09URVJfQ0xBU1MpLm9mZnNldEhlaWdodDtcbiAgICAgICAgfSBlbHNlIGlmICh3aXphcmQucXVlcnlTZWxlY3RvcignLicgKyBCQVJfRkxPQVRJTkdfRk9PVEVSX0NMQVNTKSkge1xuICAgICAgICAgICAgcmV0VmFsID0gd2l6YXJkLnF1ZXJ5U2VsZWN0b3IoJy4nICsgQkFSX0ZMT0FUSU5HX0ZPT1RFUl9DTEFTUykub2Zmc2V0SGVpZ2h0O1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0VmFsID0gMDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcmV0VmFsO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfZ2V0RGlhbG9nT2Zmc2V0KCk6IG51bWJlciB7XG4gICAgICAgIGxldCByZXRWYWwgPSAwO1xuICAgICAgICBpZiAodGhpcy5fZGlhbG9nQm9keUNvbXBvbmVudCkge1xuICAgICAgICAgICAgY29uc3QgZGlhbG9nQm9keSA9IHRoaXMuX2RpYWxvZ0JvZHlDb21wb25lbnQuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50O1xuICAgICAgICAgICAgaWYgKGRpYWxvZ0JvZHkudGFnTmFtZS50b0xvd2VyQ2FzZSgpID09PSAnZmQtZGlhbG9nLWJvZHknKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5fZGlhbG9nQm9keUNvbXBvbmVudC5kaWFsb2dDb25maWcudmVydGljYWxQYWRkaW5nID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgY29uc3QgZGlhbG9nQm9keVRpdGxlID0gZGlhbG9nQm9keS5xdWVyeVNlbGVjdG9yKCcuZmQtdGl0bGUtLWgyJyk7XG4gICAgICAgICAgICAgICAgaWYgKGRpYWxvZ0JvZHlUaXRsZSkge1xuICAgICAgICAgICAgICAgICAgICByZXRWYWwgPSBkaWFsb2dCb2R5VGl0bGUub2Zmc2V0SGVpZ2h0O1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXRWYWwgPSByZXRWYWwgKyB3aW5kb3cuaW5uZXJIZWlnaHQgLSBkaWFsb2dCb2R5Lm9mZnNldEhlaWdodDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiByZXRWYWw7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9zZXRDb250YWluZXJBbmRUYWxsQ29udGVudEhlaWdodCgpOiB2b2lkIHtcbiAgICAgICAgY29uc3Qgd2l6YXJkID0gdGhpcy5fZWxSZWYubmF0aXZlRWxlbWVudDtcbiAgICAgICAgY29uc3QgY29tYmluZWRIZWlnaHQgPSB0aGlzLmNvbnRlbnRIZWlnaHQgPyB0aGlzLmNvbnRlbnRIZWlnaHQgOiB0aGlzLl9jYWxjdWxhdGVDb250ZW50SGVpZ2h0KCk7XG4gICAgICAgIGlmICh3aXphcmQucXVlcnlTZWxlY3RvcignLicgKyBXSVpBUkRfQ09OVEFJTkVSX1dSQVBQRVJfQ0xBU1MpKSB7XG4gICAgICAgICAgICB3aXphcmQucXVlcnlTZWxlY3RvcignLicgKyBXSVpBUkRfQ09OVEFJTkVSX1dSQVBQRVJfQ0xBU1MpLnN0eWxlLmhlaWdodCA9XG4gICAgICAgICAgICAgICAgJ2NhbGMoMTAwdmggLSAnICsgY29tYmluZWRIZWlnaHQgKyAncHgpJztcbiAgICAgICAgfVxuICAgICAgICB3aXphcmQucXVlcnlTZWxlY3RvckFsbCgnLicgKyBXSVpBUkRfQ09OVEVOVF9DTEFTUykuZm9yRWFjaCgobm9kZSkgPT4ge1xuICAgICAgICAgICAgbm9kZS5zdHlsZS5oZWlnaHQgPSAnYXV0byc7XG4gICAgICAgIH0pO1xuICAgICAgICBpZiAod2l6YXJkLnF1ZXJ5U2VsZWN0b3IoJy4nICsgV0laQVJEX1RBTExfQ09OVEVOVF9DTEFTUykpIHtcbiAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICB3aXphcmQucXVlcnlTZWxlY3RvcignLicgKyBXSVpBUkRfVEFMTF9DT05URU5UX0NMQVNTKS5vZmZzZXRIZWlnaHQgPFxuICAgICAgICAgICAgICAgIHdpemFyZC5xdWVyeVNlbGVjdG9yKCcuJyArIFdJWkFSRF9DT05UQUlORVJfV1JBUFBFUl9DTEFTUykub2Zmc2V0SGVpZ2h0XG4gICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICB3aXphcmQucXVlcnlTZWxlY3RvcignLicgKyBXSVpBUkRfVEFMTF9DT05URU5UX0NMQVNTKS5zdHlsZS5oZWlnaHQgPVxuICAgICAgICAgICAgICAgICAgICAnY2FsYygxMDB2aCAtICcgKyBjb21iaW5lZEhlaWdodCArICdweCknO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB3aXphcmQucXVlcnlTZWxlY3RvcignLicgKyBXSVpBUkRfVEFMTF9DT05URU5UX0NMQVNTKS5zdHlsZS5wYWRkaW5nQm90dG9tID0gJzI0cHgnO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9zZXR1cFN0ZXBFdmVudHMoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX3N0ZXBFdmVudFN1YnNjcmlwdGlvbnMudW5zdWJzY3JpYmUoKTtcbiAgICAgICAgdGhpcy5fc3RlcEV2ZW50U3Vic2NyaXB0aW9ucyA9IG5ldyBTdWJzY3JpcHRpb24oKTtcbiAgICAgICAgdGhpcy5zdGVwcy5mb3JFYWNoKChzdGVwKSA9PiB7XG4gICAgICAgICAgICB0aGlzLl9zdGVwRXZlbnRTdWJzY3JpcHRpb25zLmFkZChcbiAgICAgICAgICAgICAgICBzdGVwLnN0ZXBDbGlja2VkLnN1YnNjcmliZSgoZXZlbnQpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fc3RlcENsaWNrZWQoZXZlbnQpO1xuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgdGhpcy5fc3RlcEV2ZW50U3Vic2NyaXB0aW9ucy5hZGQoXG4gICAgICAgICAgICAgICAgc3RlcC5zdGF0dXNDaGFuZ2Uuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5faGFuZGxlU3RlcE9yU3RhdHVzQ2hhbmdlcygpO1xuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgdGhpcy5fc3RlcEV2ZW50U3Vic2NyaXB0aW9ucy5hZGQoXG4gICAgICAgICAgICAgICAgc3RlcC5zdGVwSW5kaWNhdG9ySXRlbUNsaWNrZWQuc3Vic2NyaWJlKChldmVudCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLl9zdGVwQ2xpY2tlZChldmVudCk7XG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICAvLyBuZWVkIHRvIGNhbGwgd2l6YXJkU2hyaW5raW5nIGZvciBlYWNoIHN0ZXAgPCAxNjhweCBvbiBmaXJzdCBsb2FkXG4gICAgICAgICAgICBpZiAoc3RlcC53aXphcmRMYWJlbCAmJiBzdGVwLmdldFN0ZXBDbGllbnRXaWR0aCgpIDwgU1RFUF9NSU5fV0lEVEgpIHtcbiAgICAgICAgICAgICAgICB0aGlzLl93aXphcmRTaHJpbmtpbmcoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF93aXphcmRTaHJpbmtpbmcoKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IGN1cnJlbnRTdGVwID0gdGhpcy5fZ2V0Q3VycmVudFN0ZXAoKTtcbiAgICAgICAgaWYgKFxuICAgICAgICAgICAgY3VycmVudFN0ZXAgJiZcbiAgICAgICAgICAgICghY3VycmVudFN0ZXAuaXNTdW1tYXJ5IHx8IHRoaXMuZGlzcGxheVN1bW1hcnlTdGVwKSAmJlxuICAgICAgICAgICAgY3VycmVudFN0ZXAud2l6YXJkTGFiZWwgJiZcbiAgICAgICAgICAgIGN1cnJlbnRTdGVwLmdldFN0ZXBDbGllbnRXaWR0aCgpIDwgU1RFUF9NSU5fV0lEVEhcbiAgICAgICAgKSB7XG4gICAgICAgICAgICB0aGlzLl9oaWRlU29tZVN0ZXAoY3VycmVudFN0ZXApO1xuICAgICAgICAgICAgdGhpcy5fc2V0U3RhY2tlZFRvcCgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9zZXRDb250ZW50VGVtcGxhdGVzKCk6IHZvaWQge1xuICAgICAgICBjb25zdCB0ZW1wbGF0ZXNMZW5ndGggPSB0aGlzLmNvbnRlbnRUZW1wbGF0ZXMubGVuZ3RoO1xuICAgICAgICB0aGlzLmNvbnRlbnRUZW1wbGF0ZXMgPSBbXTtcbiAgICAgICAgbGV0IF9zdGVwSWQgPSAwO1xuICAgICAgICBjb25zdCBzdGVwcyA9IHRoaXMuc3RlcHMudG9BcnJheSgpO1xuICAgICAgICBmb3IgKGNvbnN0IHN0ZXAgb2Ygc3RlcHMpIHtcbiAgICAgICAgICAgIGlmIChzdGVwLmNvbnRlbnQpIHtcbiAgICAgICAgICAgICAgICBpZiAoIXN0ZXAuaXNTdW1tYXJ5IHx8IHRoaXMuZGlzcGxheVN1bW1hcnlTdGVwKSB7XG4gICAgICAgICAgICAgICAgICAgIHN0ZXAuY29udGVudC50YWxsQ29udGVudCA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBzdGVwLmNvbnRlbnQud2l6YXJkQ29udGVudElkID0gX3N0ZXBJZC50b1N0cmluZygpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgc3RlcC5fc3RlcElkID0gX3N0ZXBJZDtcbiAgICAgICAgICAgIF9zdGVwSWQrKztcbiAgICAgICAgICAgIHN0ZXAuc2V0RmluYWxTdGVwKGZhbHNlKTtcbiAgICAgICAgICAgIC8qXG4gICAgICAgICAgICAgSWYgdGhlIHN0ZXAgaXMgY29tcGxldGVkIGFuZCBhcHBlbmRUb1dpemFyZCBpcyB0cnVlLCBoaWRlIHRoZSBuZXh0U3RlcCBidXR0b24sIHVubGVzcyBpdCdzIHRoZSBsYXN0IHN0ZXAsXG4gICAgICAgICAgICAgb3IgaWYgdGhlcmUncyBhIHN1bW1hcnkgYW5kIGl0IGlzIHRoZSBzZWNvbmQgdG8gbGFzdCBzdGVwXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICBzdGVwLmNvbXBsZXRlZCAmJlxuICAgICAgICAgICAgICAgIHRoaXMuYXBwZW5kVG9XaXphcmQgJiZcbiAgICAgICAgICAgICAgICBzdGVwLmNvbnRlbnQ/Lm5leHRTdGVwPy5jYW5IaWRlICYmXG4gICAgICAgICAgICAgICAgc3RlcCAhPT0gdGhpcy5fZ2V0TGFzdE5vblN1bW1hcnlTdGVwKClcbiAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgIHN0ZXAuY29udGVudC5uZXh0U3RlcC5faGlkZUVsZW1lbnQoKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoXG4gICAgICAgICAgICAgICAgc3RlcC5jb250ZW50Py5uZXh0U3RlcCAmJlxuICAgICAgICAgICAgICAgICgoc3RlcC5jb21wbGV0ZWQgJiYgdGhpcy5hcHBlbmRUb1dpemFyZCkgfHxcbiAgICAgICAgICAgICAgICAgICAgKHN0ZXAudmlzaXRlZCAmJiBzdGVwLmJyYW5jaGluZyAmJiBzdGVwLnN0YXR1cyA9PT0gQ1VSUkVOVF9TVEVQX1NUQVRVUykpXG4gICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICBzdGVwLmNvbnRlbnQubmV4dFN0ZXAuX3Nob3dFbGVtZW50KCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgc3RlcC52aXNpdGVkIHx8XG4gICAgICAgICAgICAgICAgKChzdGVwLnN0YXR1cyA9PT0gQ1VSUkVOVF9TVEVQX1NUQVRVUyB8fCBzdGVwLnN0YXR1cyA9PT0gQ09NUExFVEVEX1NURVBfU1RBVFVTKSAmJiBzdGVwLmNvbnRlbnQpXG4gICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICBzdGVwLnZpc2l0ZWQgPSB0cnVlO1xuICAgICAgICAgICAgICAgIGlmIChzdGVwLnN0YXR1cyA9PT0gQ1VSUkVOVF9TVEVQX1NUQVRVUyAmJiAoIXN0ZXAuY29tcGxldGVkIHx8ICF0aGlzLmFwcGVuZFRvV2l6YXJkKSkge1xuICAgICAgICAgICAgICAgICAgICBzdGVwLmNvbnRlbnQudGFsbENvbnRlbnQgPSB0cnVlO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGNvbnN0IGlzQ3VycmVudFN0ZXAgPSAhdGhpcy5hcHBlbmRUb1dpemFyZCAmJiBzdGVwLnN0YXR1cyA9PT0gQ1VSUkVOVF9TVEVQX1NUQVRVUztcblxuICAgICAgICAgICAgICAgIGlmICghdGVtcGxhdGVzTGVuZ3RoIHx8IGlzQ3VycmVudFN0ZXApIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jb250ZW50VGVtcGxhdGVzID0gW3N0ZXAuY29udGVudC5jb250ZW50VGVtcGxhdGVdO1xuXG4gICAgICAgICAgICAgICAgICAgIC8vIElmIHdlIGZvdW5kIG5lZWRlZCBzdGVwLCBicmVhayB0aGUgY3ljbGUsIHNpbmNlIGl0IG1pZ2h0IHNldCB3cm9uZyBzdGVwIGxhdGVyLlxuICAgICAgICAgICAgICAgICAgICBpZiAoaXNDdXJyZW50U3RlcCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHRoaXMuYXBwZW5kVG9XaXphcmQgJiYgKCFzdGVwLmlzU3VtbWFyeSB8fCB0aGlzLmRpc3BsYXlTdW1tYXJ5U3RlcCkpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jb250ZW50VGVtcGxhdGVzLnB1c2goc3RlcC5jb250ZW50LmNvbnRlbnRUZW1wbGF0ZSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgbGFzdFZpc2libGVUZW1wbGF0ZSA9IHN0ZXBzW3RoaXMuY29udGVudFRlbXBsYXRlcy5sZW5ndGggLSAxXTtcbiAgICAgICAgaWYgKGxhc3RWaXNpYmxlVGVtcGxhdGUgJiYgbGFzdFZpc2libGVUZW1wbGF0ZS5jb250ZW50KSB7XG4gICAgICAgICAgICBsYXN0VmlzaWJsZVRlbXBsYXRlLmNvbnRlbnQudGFsbENvbnRlbnQgPSB0cnVlO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuX3NldEZpbmFsU3RlcCgpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfc2Nyb2xsVG9DdXJyZW50U3RlcCgpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuYXBwZW5kVG9XaXphcmQpIHtcbiAgICAgICAgICAgIF9mcm9tU2Nyb2xsVG9DdXJyZW50U3RlcCA9IHRydWU7XG4gICAgICAgICAgICB0aGlzLnN0ZXBzLmZvckVhY2goKHN0ZXAsIGluZGV4KSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKHN0ZXAuc3RhdHVzID09PSBDVVJSRU5UX1NURVBfU1RBVFVTICYmICghc3RlcC5pc1N1bW1hcnkgfHwgdGhpcy5kaXNwbGF5U3VtbWFyeVN0ZXApKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoaWxkID0gdGhpcy53cmFwcGVyQ29udGFpbmVyLm5hdGl2ZUVsZW1lbnQuY2hpbGRyZW5bMF0uY2hpbGRyZW5baW5kZXhdIGFzIEhUTUxFbGVtZW50O1xuICAgICAgICAgICAgICAgICAgICBjb25zdCB3aXphcmROYXZpZ2F0aW9uSGVpZ2h0ID0gdGhpcy5fZWxSZWYubmF0aXZlRWxlbWVudC5xdWVyeVNlbGVjdG9yKFxuICAgICAgICAgICAgICAgICAgICAgICAgJy4nICsgV0laQVJEX05BVklHQVRJT05fQ0xBU1NcbiAgICAgICAgICAgICAgICAgICAgKS5jbGllbnRIZWlnaHQ7XG5cbiAgICAgICAgICAgICAgICAgICAgc2Nyb2xsVG9wKFxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy53cmFwcGVyQ29udGFpbmVyLm5hdGl2ZUVsZW1lbnQuY2hpbGRyZW5bMF0sXG4gICAgICAgICAgICAgICAgICAgICAgICBjaGlsZC5vZmZzZXRUb3AgLSB3aXphcmROYXZpZ2F0aW9uSGVpZ2h0XG4gICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB0aGlzLl9zZXRVcFNjcm9sbExpc3RlbmVyKCk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5zY3JvbGxiYXIuc2Nyb2xsKHsgdG9wOiAwLCBiZWhhdmlvcjogJ3Ntb290aCcgfSk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9zZXRVcFNjcm9sbExpc3RlbmVyKCk6IHZvaWQge1xuICAgICAgICB0aGlzLndyYXBwZXJDb250YWluZXI/Lm5hdGl2ZUVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignc2Nyb2xsJywgaGFuZGxlVGltZW91dFJlZmVyZW5jZSwgZmFsc2UpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfaGlkZVNvbWVTdGVwKGN1cnJlbnRTdGVwOiBXaXphcmRTdGVwQ29tcG9uZW50KTogdm9pZCB7XG4gICAgICAgIC8vIElmIGEgc21hbGwgc3RlcCB3YXMgZm91bmQsIGdldCB0aGUgc3RlcCB3aXRoIGEgdmlzaWJsZSBsYWJlbCBmdXJ0aGVzdCBhd2F5IGZyb20gdGhlIGN1cnJlbnQgc3RlcCBhbmQgaGlkZSB0aGUgbGFiZWxcbiAgICAgICAgbGV0IHN0ZXBzQXJyYXkgPSB0aGlzLnN0ZXBzLnRvQXJyYXkoKTtcbiAgICAgICAgc3RlcHNBcnJheSA9IHN0ZXBzQXJyYXkuZmlsdGVyKChzdGVwKSA9PiAhc3RlcC5oYXNMYWJlbChTVEVQX05PX0xBQkVMX0NMQVNTKSk7XG4gICAgICAgIGlmICh0aGlzLnN0ZXBzLmxhc3QuaXNTdW1tYXJ5ICYmICF0aGlzLmRpc3BsYXlTdW1tYXJ5U3RlcCkge1xuICAgICAgICAgICAgc3RlcHNBcnJheS5wb3AoKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoc3RlcHNBcnJheS5sZW5ndGggPiAxKSB7XG4gICAgICAgICAgICBsZXQgY3VycmVudFN0ZXBJbmRleCA9IDAsXG4gICAgICAgICAgICAgICAgc3RlcFRvSGlkZTtcbiAgICAgICAgICAgIGlmIChjdXJyZW50U3RlcCkge1xuICAgICAgICAgICAgICAgIGN1cnJlbnRTdGVwSW5kZXggPSBzdGVwc0FycmF5LmluZGV4T2YoY3VycmVudFN0ZXApO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY3VycmVudFN0ZXBJbmRleCA+IChzdGVwc0FycmF5Lmxlbmd0aCAtIDEpIC8gMlxuICAgICAgICAgICAgICAgID8gKHN0ZXBUb0hpZGUgPSBzdGVwc0FycmF5WzBdKVxuICAgICAgICAgICAgICAgIDogKHN0ZXBUb0hpZGUgPSBzdGVwc0FycmF5W3N0ZXBzQXJyYXkubGVuZ3RoIC0gMV0pO1xuICAgICAgICAgICAgc3RlcFRvSGlkZS5nZXRDbGFzc0xpc3QoKS5hZGQoU1RFUF9OT19MQUJFTF9DTEFTUyk7XG4gICAgICAgICAgICBzdGVwVG9IaWRlLmdldENsYXNzTGlzdCgpLmFkZChTVEVQX1NUQUNLRURfQ0xBU1MpO1xuICAgICAgICAgICAgaWYgKHN0ZXBzQXJyYXkuaW5kZXhPZihzdGVwVG9IaWRlKSA8IGN1cnJlbnRTdGVwSW5kZXggJiYgIXRoaXMuc3RhY2tlZFN0ZXBzTGVmdC5pbmNsdWRlcyhzdGVwVG9IaWRlKSkge1xuICAgICAgICAgICAgICAgIHRoaXMuc3RhY2tlZFN0ZXBzTGVmdC5zcGxpY2UodGhpcy5zdGVwcy50b0FycmF5KCkuaW5kZXhPZihzdGVwVG9IaWRlKSwgMCwgc3RlcFRvSGlkZSk7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKFxuICAgICAgICAgICAgICAgIHN0ZXBzQXJyYXkuaW5kZXhPZihzdGVwVG9IaWRlKSA+IGN1cnJlbnRTdGVwSW5kZXggJiZcbiAgICAgICAgICAgICAgICAhdGhpcy5zdGFja2VkU3RlcHNSaWdodC5pbmNsdWRlcyhzdGVwVG9IaWRlKVxuICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5zdGFja2VkU3RlcHNSaWdodC51bnNoaWZ0KHN0ZXBUb0hpZGUpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy5fY2RSZWYuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9zZXRTdGFja2VkVG9wKCk6IHZvaWQge1xuICAgICAgICBjb25zdCBjdXJyZW50U3RlcCA9IHRoaXMuX2dldEN1cnJlbnRTdGVwKCk7XG4gICAgICAgIHRoaXMuc3RlcHMuZm9yRWFjaCgoc3RlcCwgaW5kZXgpID0+IHtcbiAgICAgICAgICAgIGlmIChzdGVwLnN0ZXBJbmRpY2F0b3IpIHtcbiAgICAgICAgICAgICAgICBzdGVwLmdldENsYXNzTGlzdCgpLnJlbW92ZShTVEVQX1NUQUNLRURfVE9QX0NMQVNTKTtcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5zdGVwcy50b0FycmF5KClbaW5kZXggKyAxXSA9PT0gY3VycmVudFN0ZXApIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuc3RlcHMubGVuZ3RoID4gMSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgc3RlcC5nZXRDbGFzc0xpc3QoKS5hZGQoU1RFUF9TVEFDS0VEX1RPUF9DTEFTUyk7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoIXRoaXMuc3RhY2tlZFN0ZXBzTGVmdC5pbmNsdWRlcyhzdGVwKSAmJiB0aGlzLnN0YWNrZWRTdGVwc0xlZnQubGVuZ3RoID49IDEpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnN0YWNrZWRTdGVwc0xlZnQuc3BsaWNlKGluZGV4LCAwLCBzdGVwKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBzdGVwLnN0ZXBJbmRpY2F0b3Iuc2V0U3RhY2tlZEl0ZW1zKHRoaXMuc3RhY2tlZFN0ZXBzTGVmdCk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgc3RlcC5zdGVwSW5kaWNhdG9yLnN0YWNrZWRJdGVtcyA9IFtdO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMuX2dldExhc3ROb25TdW1tYXJ5U3RlcCgpLnN0ZXBJbmRpY2F0b3I/LnNldFN0YWNrZWRJdGVtcyh0aGlzLnN0YWNrZWRTdGVwc1JpZ2h0KTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX3Jlc2V0U3RlcENsYXNzZXMoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuc3RlcHMuZm9yRWFjaCgoc3RlcCkgPT4ge1xuICAgICAgICAgICAgc3RlcC5nZXRDbGFzc0xpc3QoKS5yZW1vdmUoU1RFUF9TVEFDS0VEX1RPUF9DTEFTUyk7XG4gICAgICAgICAgICBzdGVwLmdldENsYXNzTGlzdCgpLnJlbW92ZShTVEVQX1NUQUNLRURfQ0xBU1MpO1xuICAgICAgICAgICAgc3RlcC5nZXRDbGFzc0xpc3QoKS5yZW1vdmUoU1RFUF9OT19MQUJFTF9DTEFTUyk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfaGFuZGxlU3RlcE9yU3RhdHVzQ2hhbmdlcygpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuX2lzQ3VycmVudFN0ZXBTdW1tYXJ5KCkgJiYgIXRoaXMuZGlzcGxheVN1bW1hcnlTdGVwKSB7XG4gICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLnByb2dyZXNzQmFyLnZpc2libGUgPSBmYWxzZTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgdGhpcy5fc2hvd1N1bW1hcnkoKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMucHJvZ3Jlc3NCYXIudmlzaWJsZSA9IHRydWU7XG4gICAgICAgICAgICB0aGlzLl9zZXRDb250ZW50VGVtcGxhdGVzKCk7XG4gICAgICAgICAgICB0aGlzLl9zaHJpbmtXaGlsZUFueVN0ZXBJc1Rvb05hcnJvdygpO1xuICAgICAgICB9XG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5fY2RSZWYuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICAgICAgdGhpcy5yZXNpemVIYW5kbGVyKCk7XG4gICAgICAgICAgICBpZiAoIXRoaXMuX2lzQ3VycmVudFN0ZXBTdW1tYXJ5KCkgfHwgdGhpcy5kaXNwbGF5U3VtbWFyeVN0ZXApIHtcbiAgICAgICAgICAgICAgICB0aGlzLl9zY3JvbGxUb0N1cnJlbnRTdGVwKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLl9zZXRGaW5hbFN0ZXAoKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX3NldEZpbmFsU3RlcCgpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgbGFzdE5vblN1bW1hcnlTdGVwID0gdGhpcy5fZ2V0TGFzdE5vblN1bW1hcnlTdGVwKCk7XG4gICAgICAgIGlmIChsYXN0Tm9uU3VtbWFyeVN0ZXApIHtcbiAgICAgICAgICAgIGlmICh0aGlzLnN0ZXBzLmxhc3QuaXNTdW1tYXJ5ICYmICF0aGlzLmRpc3BsYXlTdW1tYXJ5U3RlcCkge1xuICAgICAgICAgICAgICAgIHRoaXMuc3RlcHMubGFzdC5yZW1vdmVGcm9tRG9tKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAobGFzdE5vblN1bW1hcnlTdGVwLmNvbnRlbnQpIHtcbiAgICAgICAgICAgICAgICBsYXN0Tm9uU3VtbWFyeVN0ZXAuY29udGVudC50YWxsQ29udGVudCA9IHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBsYXN0Tm9uU3VtbWFyeVN0ZXAuc2V0RmluYWxTdGVwKHRydWUpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9zaG93U3VtbWFyeSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5zdGVwcy5mb3JFYWNoKChzdGVwKSA9PiB7XG4gICAgICAgICAgICBpZiAoIXN0ZXAuaXNTdW1tYXJ5KSB7XG4gICAgICAgICAgICAgICAgc3RlcC5jb21wbGV0ZWQgPSB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgY29uc3Qgc3VtbWFyeSA9IHRoaXMuc3RlcHMuZmluZCgoc3RlcCkgPT4gc3RlcC5pc1N1bW1hcnkpO1xuICAgICAgICBpZiAoc3VtbWFyeSkge1xuICAgICAgICAgICAgc3VtbWFyeS5jb250ZW50LnRhbGxDb250ZW50ID0gdHJ1ZTtcbiAgICAgICAgICAgIHRoaXMuY29udGVudFRlbXBsYXRlcyA9IFtzdW1tYXJ5LmNvbnRlbnQuY29udGVudFRlbXBsYXRlXTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfaXNDdXJyZW50U3RlcFN1bW1hcnkoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLnN0ZXBzLnNvbWUoKHN0ZXApID0+IHN0ZXAuc3RhdHVzID09PSBDVVJSRU5UX1NURVBfU1RBVFVTICYmIHN0ZXAuaXNTdW1tYXJ5KTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2dldEN1cnJlbnRTdGVwKCk6IFdpemFyZFN0ZXBDb21wb25lbnQge1xuICAgICAgICByZXR1cm4gdGhpcy5zdGVwcy5maWx0ZXIoXG4gICAgICAgICAgICAoc3RlcCkgPT4gc3RlcC5zdGF0dXMgPT09IENVUlJFTlRfU1RFUF9TVEFUVVMgfHwgc3RlcC5zdGF0dXMgPT09IEFDVElWRV9TVEVQX1NUQVRVU1xuICAgICAgICApWzBdO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfc2hyaW5rV2hpbGVBbnlTdGVwSXNUb29OYXJyb3coKTogdm9pZCB7XG4gICAgICAgIC8vIEFkZCBzbWFsbCBkZWxheSBmb3IgZWxlbWVudHMgdG8gcmVuZGVyIGFwcHJvcHJpYXRlbHkuXG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5zdGFja2VkU3RlcHNMZWZ0ID0gW107XG4gICAgICAgICAgICB0aGlzLnN0YWNrZWRTdGVwc1JpZ2h0ID0gW107XG4gICAgICAgICAgICB0aGlzLnN0ZXBzLmZpcnN0LnN0ZXBJbmRpY2F0b3I/LnNldFN0YWNrZWRJdGVtcyh0aGlzLnN0YWNrZWRTdGVwc0xlZnQpO1xuICAgICAgICAgICAgdGhpcy5fZ2V0TGFzdE5vblN1bW1hcnlTdGVwKCkuc3RlcEluZGljYXRvcj8uc2V0U3RhY2tlZEl0ZW1zKHRoaXMuc3RhY2tlZFN0ZXBzUmlnaHQpO1xuICAgICAgICAgICAgdGhpcy5fcmVzZXRTdGVwQ2xhc3NlcygpO1xuICAgICAgICAgICAgbGV0IGkgPSAwO1xuICAgICAgICAgICAgd2hpbGUgKHRoaXMuX2FueVN0ZXBJc1Rvb05hcnJvdygpICYmIGkgPCB0aGlzLnN0ZXBzLmxlbmd0aCAtIDEpIHtcbiAgICAgICAgICAgICAgICBpKys7XG4gICAgICAgICAgICAgICAgdGhpcy5fd2l6YXJkU2hyaW5raW5nKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sIDEwKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2FueVN0ZXBJc1Rvb05hcnJvdygpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc3RlcHMuc29tZSgoc3RlcCkgPT4gc3RlcC5nZXRTdGVwQ2xpZW50V2lkdGgoKSA8IFNURVBfTUlOX1dJRFRIKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX3N0ZXBDbGlja2VkKGNsaWNrZWRTdGVwOiBXaXphcmRTdGVwQ29tcG9uZW50KTogdm9pZCB7XG4gICAgICAgIGlmICghY2xpY2tlZFN0ZXApIHtcbiAgICAgICAgICAgIGNsaWNrZWRTdGVwID0gdGhpcy5zdGVwcy5maXJzdDtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBjbGlja2VkU3RlcEluZGV4ID0gdGhpcy5zdGVwcy50b0FycmF5KCkuaW5kZXhPZihjbGlja2VkU3RlcCk7XG4gICAgICAgIHRoaXMuc3RlcHMuZm9yRWFjaCgoc3RlcCkgPT4ge1xuICAgICAgICAgICAgaWYgKHN0ZXAgPT09IGNsaWNrZWRTdGVwKSB7XG4gICAgICAgICAgICAgICAgc3RlcC5zdGF0dXMgPSBDVVJSRU5UX1NURVBfU1RBVFVTO1xuICAgICAgICAgICAgICAgIHN0ZXAuc3RhdHVzQ2hhbmdlLmVtaXQoQ1VSUkVOVF9TVEVQX1NUQVRVUyk7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKHN0ZXAgIT09IGNsaWNrZWRTdGVwKSB7XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuc3RlcHMudG9BcnJheSgpLmluZGV4T2Yoc3RlcCkgPCBjbGlja2VkU3RlcEluZGV4KSB7XG4gICAgICAgICAgICAgICAgICAgIHN0ZXAuc3RhdHVzID0gQ09NUExFVEVEX1NURVBfU1RBVFVTO1xuICAgICAgICAgICAgICAgICAgICBzdGVwLnN0YXR1c0NoYW5nZS5lbWl0KENPTVBMRVRFRF9TVEVQX1NUQVRVUyk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmICh0aGlzLnN0ZXBzLnRvQXJyYXkoKS5pbmRleE9mKHN0ZXApID4gY2xpY2tlZFN0ZXBJbmRleCkge1xuICAgICAgICAgICAgICAgICAgICBzdGVwLnN0YXR1cyA9IFVQQ09NSU5HX1NURVBfU1RBVFVTO1xuICAgICAgICAgICAgICAgICAgICBzdGVwLnN0YXR1c0NoYW5nZS5lbWl0KFVQQ09NSU5HX1NURVBfU1RBVFVTKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgIChkb2N1bWVudC5hY3RpdmVFbGVtZW50IGFzIEhUTUxFbGVtZW50KS5ibHVyKCk7IC8vIHRoaXMgZnVuY3Rpb24gY2FuIGZvY3VzIHN0ZXAgaW5kaWNhdG9ycyB1bmRlc2lyYWJseVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2dldExhc3ROb25TdW1tYXJ5U3RlcCgpOiBXaXphcmRTdGVwQ29tcG9uZW50IHtcbiAgICAgICAgaWYgKHRoaXMuc3RlcHMubGFzdC5pc1N1bW1hcnkgJiYgIXRoaXMuZGlzcGxheVN1bW1hcnlTdGVwKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5zdGVwcy50b0FycmF5KClbdGhpcy5zdGVwcy5sZW5ndGggLSAyXTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB0aGlzLnN0ZXBzLmxhc3Q7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBzY3JvbGxTcHlDaGFuZ2UoJGV2ZW50OiBIVE1MRWxlbWVudCk6IHZvaWQge1xuICAgICAgICBpZiAoIV9mcm9tU2Nyb2xsVG9DdXJyZW50U3RlcCkge1xuICAgICAgICAgICAgdGhpcy5zdGVwcy5mb3JFYWNoKChzdGVwKSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKHN0ZXAuX3N0ZXBJZC50b1N0cmluZygpID09PSAkZXZlbnQuY2hpbGRyZW5bMF0uY2hpbGRyZW5bMF0uaWQpIHtcbiAgICAgICAgICAgICAgICAgICAgc3RlcC5zdGF0dXMgPSBDVVJSRU5UX1NURVBfU1RBVFVTO1xuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoc3RlcC5fc3RlcElkIDwgcGFyc2VJbnQoJGV2ZW50LmNoaWxkcmVuWzBdLmNoaWxkcmVuWzBdLmlkLCAxMCkpIHtcbiAgICAgICAgICAgICAgICAgICAgc3RlcC5zdGF0dXMgPSBDT01QTEVURURfU1RFUF9TVEFUVVM7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgc3RlcC5zdGF0dXMgPSBVUENPTUlOR19TVEVQX1NUQVRVUztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLl9zaHJpbmtXaGlsZUFueVN0ZXBJc1Rvb05hcnJvdygpO1xuICAgIH1cbn1cbiIsIjxzZWN0aW9uIGNsYXNzPVwiZmQtd2l6YXJkXCI+XG4gICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiZmQtd2l6YXJkLW5hdmlnYXRpb25cIj48L25nLWNvbnRlbnQ+XG4gICAgPGRpdlxuICAgICAgICAqbmdJZj1cImFwcGVuZFRvV2l6YXJkXCJcbiAgICAgICAgY2xhc3M9XCJmZC13aXphcmQtY29udGFpbmVyLXdyYXBwZXJcIlxuICAgICAgICAjd3JhcHBlckNvbnRhaW5lclxuICAgICAgICBmZFNjcm9sbFNweVxuICAgICAgICBjZGtTY3JvbGxhYmxlXG4gICAgICAgIFt0cmFja2VkVGFnc109XCJbJ2RpdiddXCJcbiAgICAgICAgKHNweUNoYW5nZSk9XCJzY3JvbGxTcHlDaGFuZ2UoJGV2ZW50KVwiXG4gICAgPlxuICAgICAgICA8ZGl2IGZkLXNjcm9sbGJhcj5cbiAgICAgICAgICAgIDxkaXYgKm5nRm9yPVwibGV0IGNvbnRlbnRUZW1wbGF0ZSBvZiBjb250ZW50VGVtcGxhdGVzXCI+XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImNvbnRlbnRUZW1wbGF0ZVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICAgIDxkaXYgKm5nSWY9XCIhYXBwZW5kVG9XaXphcmRcIiBjZGtTY3JvbGxhYmxlIGNsYXNzPVwiZmQtd2l6YXJkLWNvbnRhaW5lci13cmFwcGVyXCI+XG4gICAgICAgIDxkaXYgZmQtc2Nyb2xsYmFyPlxuICAgICAgICAgICAgPGRpdiAqbmdGb3I9XCJsZXQgY29udGVudFRlbXBsYXRlIG9mIGNvbnRlbnRUZW1wbGF0ZXNcIj5cbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiY29udGVudFRlbXBsYXRlXCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gICAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxuPC9zZWN0aW9uPlxuIl19
562
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2l6YXJkLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYnMvY29yZS9zcmMvbGliL3dpemFyZC93aXphcmQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vbGlicy9jb3JlL3NyYy9saWIvd2l6YXJkL3dpemFyZC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDdkQsT0FBTyxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNoRSxPQUFPLEVBRUgsdUJBQXVCLEVBQ3ZCLGlCQUFpQixFQUNqQixTQUFTLEVBQ1QsWUFBWSxFQUNaLGVBQWUsRUFDZixVQUFVLEVBQ1YsV0FBVyxFQUNYLFlBQVksRUFDWixNQUFNLEVBQ04sS0FBSyxFQUVMLFFBQVEsRUFDUixTQUFTLEVBRVQsU0FBUyxFQUNULGlCQUFpQixFQUNqQixNQUFNLEVBQ1QsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFZLHNCQUFzQixFQUFFLFNBQVMsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ3pGLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSx3QkFBd0IsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQzdGLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQ3RFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQ3JFLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ2pFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDcEMsT0FBTyxFQUFFLGtCQUFrQixFQUFFLHFCQUFxQixFQUFFLG1CQUFtQixFQUFFLG9CQUFvQixFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQ25ILE9BQU8sRUFBRSxz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O2dCQUt4QyxhQUFhO3NCQURaLGVBQWU7dUJBQUMsc0JBQXNCO2dCQUt2QyxnQkFBZ0I7c0JBRGYsU0FBUzt1QkFBQyxrQkFBa0I7Z0JBSzdCLFNBQVM7c0JBRFIsU0FBUzt1QkFBQyxrQkFBa0I7Z0JBb0M3QixhQUFhO3NCQURaLFlBQVk7dUJBQUMsZUFBZSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENka1Njcm9sbGFibGUgfSBmcm9tICdAYW5ndWxhci9jZGsvc2Nyb2xsaW5nJztcbmltcG9ydCB7IE5nRm9yLCBOZ0lmLCBOZ1RlbXBsYXRlT3V0bGV0IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7XG4gICAgQWZ0ZXJWaWV3SW5pdCxcbiAgICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBDb21wb25lbnQsXG4gICAgQ29udGVudENoaWxkLFxuICAgIENvbnRlbnRDaGlsZHJlbixcbiAgICBFbGVtZW50UmVmLFxuICAgIEhvc3RCaW5kaW5nLFxuICAgIEhvc3RMaXN0ZW5lcixcbiAgICBJbmplY3QsXG4gICAgSW5wdXQsXG4gICAgT25EZXN0cm95LFxuICAgIE9wdGlvbmFsLFxuICAgIFF1ZXJ5TGlzdCxcbiAgICBUZW1wbGF0ZVJlZixcbiAgICBWaWV3Q2hpbGQsXG4gICAgVmlld0VuY2Fwc3VsYXRpb24sXG4gICAgaW5qZWN0XG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTnVsbGFibGUsIFRhYmJhYmxlRWxlbWVudFNlcnZpY2UsIHNjcm9sbFRvcCB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY2RrL3V0aWxzJztcbmltcG9ydCB7IERpYWxvZ0JvZHlDb21wb25lbnQsIEZEX0RJQUxPR19CT0RZX0NPTVBPTkVOVCB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY29yZS9kaWFsb2cnO1xuaW1wb3J0IHsgU2Nyb2xsU3B5RGlyZWN0aXZlIH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jb3JlL3Njcm9sbC1zcHknO1xuaW1wb3J0IHsgU2Nyb2xsYmFyRGlyZWN0aXZlIH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jb3JlL3Njcm9sbGJhcic7XG5pbXBvcnQgeyByZXNvbHZlVHJhbnNsYXRpb25TaWduYWwgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2kxOG4nO1xuaW1wb3J0IHsgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBBQ1RJVkVfU1RFUF9TVEFUVVMsIENPTVBMRVRFRF9TVEVQX1NUQVRVUywgQ1VSUkVOVF9TVEVQX1NUQVRVUywgVVBDT01JTkdfU1RFUF9TVEFUVVMgfSBmcm9tICcuL2NvbnN0YW50cyc7XG5pbXBvcnQgeyBXaXphcmRDb250ZW50Q29tcG9uZW50IH0gZnJvbSAnLi93aXphcmQtY29udGVudC93aXphcmQtY29udGVudC5jb21wb25lbnQnO1xuaW1wb3J0IHsgV0laQVJEIH0gZnJvbSAnLi93aXphcmQtaW5qZWN0aW9uLXRva2VuJztcbmltcG9ydCB7IFdpemFyZFByb2dyZXNzQmFyRGlyZWN0aXZlIH0gZnJvbSAnLi93aXphcmQtcHJvZ3Jlc3MtYmFyL3dpemFyZC1wcm9ncmVzcy1iYXIuZGlyZWN0aXZlJztcbmltcG9ydCB7IFdpemFyZFN0ZXBDb21wb25lbnQgfSBmcm9tICcuL3dpemFyZC1zdGVwL3dpemFyZC1zdGVwLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBXaXphcmRTZXJ2aWNlIH0gZnJvbSAnLi93aXphcmQuc2VydmljZSc7XG5cbmV4cG9ydCBjb25zdCBTVEVQX01JTl9XSURUSCA9IDE2ODtcbmV4cG9ydCBjb25zdCBTVEVQX1NUQUNLRURfVE9QX0NMQVNTID0gJ2ZkLXdpemFyZF9fc3RlcC0tc3RhY2tlZC10b3AnO1xuZXhwb3J0IGNvbnN0IFNURVBfU1RBQ0tFRF9DTEFTUyA9ICdmZC13aXphcmRfX3N0ZXAtLXN0YWNrZWQnO1xuZXhwb3J0IGNvbnN0IFNURVBfTk9fTEFCRUxfQ0xBU1MgPSAnZmQtd2l6YXJkX19zdGVwLS1uby1sYWJlbCc7XG5cbmV4cG9ydCBjb25zdCBXSVpBUkRfTkFWSUdBVElPTl9DTEFTUyA9ICdmZC13aXphcmRfX25hdmlnYXRpb24nO1xuZXhwb3J0IGNvbnN0IFdJWkFSRF9DT05URU5UX0NMQVNTID0gJ2ZkLXdpemFyZF9fY29udGVudCc7XG5leHBvcnQgY29uc3QgV0laQVJEX0NPTlRBSU5FUl9XUkFQUEVSX0NMQVNTID0gJ2ZkLXdpemFyZC1jb250YWluZXItd3JhcHBlcic7XG5leHBvcnQgY29uc3QgV0laQVJEX1RBTExfQ09OVEVOVF9DTEFTUyA9ICdmZC13aXphcmQtdGFsbC1jb250ZW50JztcbmV4cG9ydCBjb25zdCBTSEVMTEJBUl9DTEFTUyA9ICdmZC1zaGVsbGJhcic7XG5leHBvcnQgY29uc3QgQkFSX0ZPT1RFUl9DTEFTUyA9ICdmZC1iYXItLWZvb3Rlcic7XG5leHBvcnQgY29uc3QgQkFSX0ZMT0FUSU5HX0ZPT1RFUl9DTEFTUyA9ICdmZC1iYXItLWZsb2F0aW5nLWZvb3Rlcic7XG5cbmV4cG9ydCBsZXQgX2Zyb21TY3JvbGxUb0N1cnJlbnRTdGVwO1xuZXhwb3J0IGxldCB0aW1lcjogYW55ID0gbnVsbDtcbmV4cG9ydCBjb25zdCBoYW5kbGVUaW1lb3V0UmVmZXJlbmNlID0gKCk6IHZvaWQgPT4ge1xuICAgIGlmICh0aW1lciAhPT0gbnVsbCkge1xuICAgICAgICBjbGVhclRpbWVvdXQodGltZXIpO1xuICAgIH1cbiAgICB0aW1lciA9IHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICBfZnJvbVNjcm9sbFRvQ3VycmVudFN0ZXAgPSBmYWxzZTtcbiAgICB9LCAxNTApO1xufTtcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdmZC13aXphcmQnLFxuICAgIHRlbXBsYXRlVXJsOiAnLi93aXphcmQuY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsczogWycuL3dpemFyZC5jb21wb25lbnQuc2NzcyddLFxuICAgIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gICAgcHJvdmlkZXJzOiBbXG4gICAgICAgIFdpemFyZFNlcnZpY2UsXG4gICAgICAgIHtcbiAgICAgICAgICAgIHByb3ZpZGU6IFdJWkFSRCxcbiAgICAgICAgICAgIHVzZUV4aXN0aW5nOiBXaXphcmRDb21wb25lbnRcbiAgICAgICAgfVxuICAgIF0sXG4gICAgaG9zdDoge1xuICAgICAgICByb2xlOiAncmVnaW9uJyxcbiAgICAgICAgJ1thdHRyLmFyaWEtbGFiZWxdJzogJ2FyaWFMYWJlbCB8fCBfZGVmYXVsdEFyaWFMYWJlbCgpJ1xuICAgIH0sXG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBpbXBvcnRzOiBbTmdJZiwgU2Nyb2xsU3B5RGlyZWN0aXZlLCBDZGtTY3JvbGxhYmxlLCBTY3JvbGxiYXJEaXJlY3RpdmUsIE5nRm9yLCBOZ1RlbXBsYXRlT3V0bGV0XVxufSlcbmV4cG9ydCBjbGFzcyBXaXphcmRDb21wb25lbnQgaW1wbGVtZW50cyBBZnRlclZpZXdJbml0LCBPbkRlc3Ryb3kge1xuICAgIC8qKlxuICAgICAqIFdoZXRoZXIgb3Igbm90IHRvIGFwcGVuZCB0aGUgc3RlcCB0byB0aGUgd2l6YXJkLiBJZiBmYWxzZSwgZWFjaCBzdGVwIHdpbGwgYmUgZGlzcGxheWVkIG9uIGEgZGlmZmVyZW50IHBhZ2UuXG4gICAgICogRGVmYXVsdCBpcyB0cnVlLlxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgYXBwZW5kVG9XaXphcmQgPSB0cnVlO1xuXG4gICAgLyoqXG4gICAgICogQ3VzdG9tIGhlaWdodCB0byB1c2UgZm9yIHRoZSB3aXphcmQncyBjb250ZW50IHBhbmUuIEJ5IGRlZmF1bHQsIHRoaXMgdmFsdWUgaXMgY2FsYygxMDB2aCAtIDE0NHB4KSwgd2hlcmUgMTQ0cHhcbiAgICAgKiBpcyB0aGUgY29tYmluZWQgaGVpZ2h0IG9mIHRoZSBzaGVsbGJhciwgd2l6YXJkIGhlYWRlciBhbmQgd2l6YXJkIGZvb3Rlci5cbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIGNvbnRlbnRIZWlnaHQ6IE51bGxhYmxlPHN0cmluZyB8IG51bGw+O1xuXG4gICAgLyoqXG4gICAgICogV2hldGhlciBvciBub3QgYXBwbHkgcmVzcG9uc2l2ZSBwYWRkaW5ncyBzdHlsaW5nLlxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgQEhvc3RCaW5kaW5nKCdjbGFzcy5mZC13aXphcmQtLXJlc3BvbnNpdmUtcGFkZGluZ3MnKVxuICAgIHJlc3BvbnNpdmVQYWRkaW5ncyA9IGZhbHNlO1xuXG4gICAgLyoqIFdoZXRoZXIgdG8gZGlzcGxheSBhIHN1bW1hcnkgc3RlcC4gICovXG4gICAgQElucHV0KClcbiAgICBkaXNwbGF5U3VtbWFyeVN0ZXAgPSBmYWxzZTtcblxuICAgIC8qKlxuICAgICAqIGFkZGluZyBhcmlhIGxhYmVsIHRvIHRoZSBjb21wb25lbnRcbiAgICAgKiBJZiBub3QgcHJvdmlkZWQsIGlzIGJlaW5nIHRyYW5zbGF0ZWQgYnkgaTE4biBwYWNrYWdlXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBhcmlhTGFiZWw6IHN0cmluZztcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgQENvbnRlbnRDaGlsZHJlbihXaXphcmRTdGVwQ29tcG9uZW50LCB7IGRlc2NlbmRhbnRzOiB0cnVlIH0pXG4gICAgc3RlcHM6IFF1ZXJ5TGlzdDxXaXphcmRTdGVwQ29tcG9uZW50PjtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgQENvbnRlbnRDaGlsZChXaXphcmRQcm9ncmVzc0JhckRpcmVjdGl2ZSlcbiAgICBwcm9ncmVzc0JhcjogV2l6YXJkUHJvZ3Jlc3NCYXJEaXJlY3RpdmU7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIEBDb250ZW50Q2hpbGRyZW4oV2l6YXJkQ29udGVudENvbXBvbmVudClcbiAgICB3aXphcmRDb250ZW50OiBXaXphcmRDb250ZW50Q29tcG9uZW50O1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBAVmlld0NoaWxkKCd3cmFwcGVyQ29udGFpbmVyJylcbiAgICB3cmFwcGVyQ29udGFpbmVyOiBFbGVtZW50UmVmPEhUTUxFbGVtZW50PjtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgQFZpZXdDaGlsZChTY3JvbGxiYXJEaXJlY3RpdmUpXG4gICAgc2Nyb2xsYmFyOiBTY3JvbGxiYXJEaXJlY3RpdmU7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIGNvbnRlbnRUZW1wbGF0ZXM6IFRlbXBsYXRlUmVmPGFueT5bXSA9IFtdO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBzdGFja2VkU3RlcHNMZWZ0OiBXaXphcmRTdGVwQ29tcG9uZW50W10gPSBbXTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgc3RhY2tlZFN0ZXBzUmlnaHQ6IFdpemFyZFN0ZXBDb21wb25lbnRbXSA9IFtdO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcm90ZWN0ZWQgX2RlZmF1bHRBcmlhTGFiZWwgPSByZXNvbHZlVHJhbnNsYXRpb25TaWduYWwoJ2NvcmVXaXphcmQuYXJpYUxhYmVsJyk7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX3N0ZXBFdmVudFN1YnNjcmlwdGlvbnM6IFN1YnNjcmlwdGlvbiA9IG5ldyBTdWJzY3JpcHRpb24oKTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfc3Vic2NyaXB0aW9uczogU3Vic2NyaXB0aW9uID0gbmV3IFN1YnNjcmlwdGlvbigpO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9wcmV2aW91c1dpZHRoOiBudW1iZXI7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgcmVhZG9ubHkgX3RhYmJhYmxlU2VydmljZSA9IGluamVjdChUYWJiYWJsZUVsZW1lbnRTZXJ2aWNlKTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHByaXZhdGUgX2VsUmVmOiBFbGVtZW50UmVmLFxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IF9jZFJlZjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgICAgIEBPcHRpb25hbCgpIEBJbmplY3QoRkRfRElBTE9HX0JPRFlfQ09NUE9ORU5UKSBwcml2YXRlIF9kaWFsb2dCb2R5Q29tcG9uZW50OiBEaWFsb2dCb2R5Q29tcG9uZW50XG4gICAgKSB7fVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBASG9zdExpc3RlbmVyKCd3aW5kb3c6cmVzaXplJylcbiAgICByZXNpemVIYW5kbGVyKCk6IHZvaWQge1xuICAgICAgICBjb25zdCB3aXphcmRXaWR0aCA9IHRoaXMuX2VsUmVmLm5hdGl2ZUVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkud2lkdGg7XG4gICAgICAgIGlmICghdGhpcy5fcHJldmlvdXNXaWR0aCB8fCB3aXphcmRXaWR0aCA8PSB0aGlzLl9wcmV2aW91c1dpZHRoKSB7XG4gICAgICAgICAgICB0aGlzLl93aXphcmRTaHJpbmtpbmcoKTtcbiAgICAgICAgfSBlbHNlIGlmICh3aXphcmRXaWR0aCA+IHRoaXMuX3ByZXZpb3VzV2lkdGgpIHtcbiAgICAgICAgICAgIHRoaXMuX3Nocmlua1doaWxlQW55U3RlcElzVG9vTmFycm93KCk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5fcHJldmlvdXNXaWR0aCA9IHdpemFyZFdpZHRoO1xuICAgICAgICBpZiAodGhpcy5jb250ZW50SGVpZ2h0KSB7XG4gICAgICAgICAgICB0aGlzLl9lbFJlZi5uYXRpdmVFbGVtZW50LnF1ZXJ5U2VsZWN0b3IoJy4nICsgV0laQVJEX0NPTlRBSU5FUl9XUkFQUEVSX0NMQVNTKS5zdHlsZS5oZWlnaHQgPVxuICAgICAgICAgICAgICAgIHRoaXMuY29udGVudEhlaWdodDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuX3NldENvbnRhaW5lckFuZFRhbGxDb250ZW50SGVpZ2h0KCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICBpZiAodGhpcy5fc3Vic2NyaXB0aW9ucy5jbG9zZWQpIHtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC8vIGZpeGVzIEV4cHJlc3Npb25DaGFuZ2VkQWZ0ZXJJdEhhc0JlZW5DaGVja2VkRXJyb3JcbiAgICAgICAgICAgIHRoaXMuX3NldENvbnRlbnRUZW1wbGF0ZXMoKTtcbiAgICAgICAgICAgIHRoaXMuX3N1YnNjcmlwdGlvbnMuYWRkKFxuICAgICAgICAgICAgICAgIHRoaXMuc3RlcHMuY2hhbmdlcy5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLl9oYW5kbGVTdGVwT3JTdGF0dXNDaGFuZ2VzKCk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX3NldHVwU3RlcEV2ZW50cygpO1xuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgdGhpcy5fc2V0dXBTdGVwRXZlbnRzKCk7XG4gICAgICAgICAgICB0aGlzLl9jZFJlZi5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICAgICAgICB0aGlzLl9oYW5kbGVTdGVwT3JTdGF0dXNDaGFuZ2VzKCk7XG4gICAgICAgICAgICB0aGlzLnJlc2l6ZUhhbmRsZXIoKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fc3RlcEV2ZW50U3Vic2NyaXB0aW9ucy51bnN1YnNjcmliZSgpO1xuICAgICAgICB0aGlzLl9zdWJzY3JpcHRpb25zLnVuc3Vic2NyaWJlKCk7XG4gICAgICAgIHRoaXMud3JhcHBlckNvbnRhaW5lcj8ubmF0aXZlRWxlbWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCdzY3JvbGwnLCBoYW5kbGVUaW1lb3V0UmVmZXJlbmNlKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHNjcm9sbFNweUNoYW5nZSgkZXZlbnQ6IEhUTUxFbGVtZW50KTogdm9pZCB7XG4gICAgICAgIGlmICghX2Zyb21TY3JvbGxUb0N1cnJlbnRTdGVwKSB7XG4gICAgICAgICAgICB0aGlzLnN0ZXBzLmZvckVhY2goKHN0ZXApID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoc3RlcC5fc3RlcElkLnRvU3RyaW5nKCkgPT09ICRldmVudC5jaGlsZHJlblswXS5jaGlsZHJlblswXS5pZCkge1xuICAgICAgICAgICAgICAgICAgICBzdGVwLnN0YXR1cyA9IENVUlJFTlRfU1RFUF9TVEFUVVM7XG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmIChzdGVwLl9zdGVwSWQgPCBwYXJzZUludCgkZXZlbnQuY2hpbGRyZW5bMF0uY2hpbGRyZW5bMF0uaWQsIDEwKSkge1xuICAgICAgICAgICAgICAgICAgICBzdGVwLnN0YXR1cyA9IENPTVBMRVRFRF9TVEVQX1NUQVRVUztcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBzdGVwLnN0YXR1cyA9IFVQQ09NSU5HX1NURVBfU1RBVFVTO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuX3Nocmlua1doaWxlQW55U3RlcElzVG9vTmFycm93KCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqIEBwcml2YXRlXG4gICAgICogVGhpcyBmdW5jdGlvbiBkZXRlcm1pbmVzIHRoZSBoZWlnaHQgb2YgdGhlIHdpemFyZCBjb250ZW50IGJ5IGxvb2tpbmcgZm9yIHRoZSBkb2N1bWVudCdzIHNoZWxsYmFyLCB0aGUgd2l6YXJkXG4gICAgICogbmF2aWdhdGlvbiBhbmQgdGhlIHdpemFyZCBmb290ZXIsIGFuZCBjYWxjdWxhdGluZyB0aGUgaGVpZ2h0IGJhc2VkIG9uIHRoZWlyIHByZXNlbmNlLlxuICAgICAqL1xuICAgIHByaXZhdGUgX2NhbGN1bGF0ZUNvbnRlbnRIZWlnaHQoKTogbnVtYmVyIHtcbiAgICAgICAgbGV0IHdpemFyZE5hdkhlaWdodCA9IDA7XG4gICAgICAgIGNvbnN0IHNoZWxsYmFySGVpZ2h0ID0gdGhpcy5fZ2V0U2hlbGxiYXJIZWlnaHQoKTtcbiAgICAgICAgaWYgKCF0aGlzLl9pc0N1cnJlbnRTdGVwU3VtbWFyeSgpIHx8IHRoaXMuZGlzcGxheVN1bW1hcnlTdGVwKSB7XG4gICAgICAgICAgICB3aXphcmROYXZIZWlnaHQgPSB0aGlzLl9nZXRXaXphcmROYXZIZWlnaHQoKTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCB3aXphcmRGb290ZXJIZWlnaHQgPSB0aGlzLl9nZXRXaXphcmRGb290ZXJIZWlnaHQoKTtcbiAgICAgICAgY29uc3QgZGlhbG9nT2Zmc2V0ID0gdGhpcy5fZ2V0RGlhbG9nT2Zmc2V0KCk7XG5cbiAgICAgICAgcmV0dXJuIHNoZWxsYmFySGVpZ2h0ICsgd2l6YXJkTmF2SGVpZ2h0ICsgd2l6YXJkRm9vdGVySGVpZ2h0ICsgZGlhbG9nT2Zmc2V0O1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfZ2V0U2hlbGxiYXJIZWlnaHQoKTogbnVtYmVyIHtcbiAgICAgICAgcmV0dXJuIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3I8SFRNTEVsZW1lbnQ+KCcuJyArIFNIRUxMQkFSX0NMQVNTKT8uY2xpZW50SGVpZ2h0ID8/IDA7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9nZXRXaXphcmROYXZIZWlnaHQoKTogbnVtYmVyIHtcbiAgICAgICAgY29uc3Qgd2l6YXJkID0gdGhpcy5fZWxSZWYubmF0aXZlRWxlbWVudDtcbiAgICAgICAgbGV0IHJldFZhbDtcbiAgICAgICAgaWYgKHdpemFyZC5xdWVyeVNlbGVjdG9yKCcuJyArIFdJWkFSRF9OQVZJR0FUSU9OX0NMQVNTKSkge1xuICAgICAgICAgICAgcmV0VmFsID0gd2l6YXJkLnF1ZXJ5U2VsZWN0b3IoJy4nICsgV0laQVJEX05BVklHQVRJT05fQ0xBU1MpLmNsaWVudEhlaWdodDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldFZhbCA9IDA7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHJldFZhbDtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2dldFdpemFyZEZvb3RlckhlaWdodCgpOiBudW1iZXIge1xuICAgICAgICBjb25zdCB3aXphcmQgPSB0aGlzLl9lbFJlZi5uYXRpdmVFbGVtZW50O1xuICAgICAgICBsZXQgcmV0VmFsO1xuICAgICAgICBpZiAod2l6YXJkLnF1ZXJ5U2VsZWN0b3IoJy4nICsgQkFSX0ZPT1RFUl9DTEFTUykpIHtcbiAgICAgICAgICAgIHJldFZhbCA9IHdpemFyZC5xdWVyeVNlbGVjdG9yKCcuJyArIEJBUl9GT09URVJfQ0xBU1MpLm9mZnNldEhlaWdodDtcbiAgICAgICAgfSBlbHNlIGlmICh3aXphcmQucXVlcnlTZWxlY3RvcignLicgKyBCQVJfRkxPQVRJTkdfRk9PVEVSX0NMQVNTKSkge1xuICAgICAgICAgICAgcmV0VmFsID0gd2l6YXJkLnF1ZXJ5U2VsZWN0b3IoJy4nICsgQkFSX0ZMT0FUSU5HX0ZPT1RFUl9DTEFTUykub2Zmc2V0SGVpZ2h0O1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0VmFsID0gMDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcmV0VmFsO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfZ2V0RGlhbG9nT2Zmc2V0KCk6IG51bWJlciB7XG4gICAgICAgIGxldCByZXRWYWwgPSAwO1xuICAgICAgICBpZiAodGhpcy5fZGlhbG9nQm9keUNvbXBvbmVudCkge1xuICAgICAgICAgICAgY29uc3QgZGlhbG9nQm9keSA9IHRoaXMuX2RpYWxvZ0JvZHlDb21wb25lbnQuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50O1xuICAgICAgICAgICAgaWYgKGRpYWxvZ0JvZHkudGFnTmFtZS50b0xvd2VyQ2FzZSgpID09PSAnZmQtZGlhbG9nLWJvZHknKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5fZGlhbG9nQm9keUNvbXBvbmVudC5kaWFsb2dDb25maWcudmVydGljYWxQYWRkaW5nID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgY29uc3QgZGlhbG9nQm9keVRpdGxlID0gZGlhbG9nQm9keS5xdWVyeVNlbGVjdG9yKCcuZmQtdGl0bGUtLWgyJyk7XG4gICAgICAgICAgICAgICAgaWYgKGRpYWxvZ0JvZHlUaXRsZSkge1xuICAgICAgICAgICAgICAgICAgICByZXRWYWwgPSBkaWFsb2dCb2R5VGl0bGUub2Zmc2V0SGVpZ2h0O1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXRWYWwgPSByZXRWYWwgKyB3aW5kb3cuaW5uZXJIZWlnaHQgLSBkaWFsb2dCb2R5Lm9mZnNldEhlaWdodDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiByZXRWYWw7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9zZXRDb250YWluZXJBbmRUYWxsQ29udGVudEhlaWdodCgpOiB2b2lkIHtcbiAgICAgICAgY29uc3Qgd2l6YXJkID0gdGhpcy5fZWxSZWYubmF0aXZlRWxlbWVudDtcbiAgICAgICAgY29uc3QgY29tYmluZWRIZWlnaHQgPSB0aGlzLmNvbnRlbnRIZWlnaHQgPyB0aGlzLmNvbnRlbnRIZWlnaHQgOiB0aGlzLl9jYWxjdWxhdGVDb250ZW50SGVpZ2h0KCk7XG4gICAgICAgIGlmICh3aXphcmQucXVlcnlTZWxlY3RvcignLicgKyBXSVpBUkRfQ09OVEFJTkVSX1dSQVBQRVJfQ0xBU1MpKSB7XG4gICAgICAgICAgICB3aXphcmQucXVlcnlTZWxlY3RvcignLicgKyBXSVpBUkRfQ09OVEFJTkVSX1dSQVBQRVJfQ0xBU1MpLnN0eWxlLmhlaWdodCA9XG4gICAgICAgICAgICAgICAgJ2NhbGMoMTAwdmggLSAnICsgY29tYmluZWRIZWlnaHQgKyAncHgpJztcbiAgICAgICAgfVxuICAgICAgICB3aXphcmQucXVlcnlTZWxlY3RvckFsbCgnLicgKyBXSVpBUkRfQ09OVEVOVF9DTEFTUykuZm9yRWFjaCgobm9kZSkgPT4ge1xuICAgICAgICAgICAgbm9kZS5zdHlsZS5oZWlnaHQgPSAnYXV0byc7XG4gICAgICAgIH0pO1xuICAgICAgICBpZiAod2l6YXJkLnF1ZXJ5U2VsZWN0b3IoJy4nICsgV0laQVJEX1RBTExfQ09OVEVOVF9DTEFTUykpIHtcbiAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICB3aXphcmQucXVlcnlTZWxlY3RvcignLicgKyBXSVpBUkRfVEFMTF9DT05URU5UX0NMQVNTKS5vZmZzZXRIZWlnaHQgPFxuICAgICAgICAgICAgICAgIHdpemFyZC5xdWVyeVNlbGVjdG9yKCcuJyArIFdJWkFSRF9DT05UQUlORVJfV1JBUFBFUl9DTEFTUykub2Zmc2V0SGVpZ2h0XG4gICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICB3aXphcmQucXVlcnlTZWxlY3RvcignLicgKyBXSVpBUkRfVEFMTF9DT05URU5UX0NMQVNTKS5zdHlsZS5oZWlnaHQgPVxuICAgICAgICAgICAgICAgICAgICAnY2FsYygxMDB2aCAtICcgKyBjb21iaW5lZEhlaWdodCArICdweCknO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB3aXphcmQucXVlcnlTZWxlY3RvcignLicgKyBXSVpBUkRfVEFMTF9DT05URU5UX0NMQVNTKS5zdHlsZS5wYWRkaW5nQm90dG9tID0gJzI0cHgnO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9zZXR1cFN0ZXBFdmVudHMoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX3N0ZXBFdmVudFN1YnNjcmlwdGlvbnMudW5zdWJzY3JpYmUoKTtcbiAgICAgICAgdGhpcy5fc3RlcEV2ZW50U3Vic2NyaXB0aW9ucyA9IG5ldyBTdWJzY3JpcHRpb24oKTtcbiAgICAgICAgdGhpcy5zdGVwcy5mb3JFYWNoKChzdGVwKSA9PiB7XG4gICAgICAgICAgICB0aGlzLl9zdGVwRXZlbnRTdWJzY3JpcHRpb25zLmFkZChcbiAgICAgICAgICAgICAgICBzdGVwLnN0ZXBDbGlja2VkLnN1YnNjcmliZSgoZXZlbnQpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fc3RlcENsaWNrZWQoZXZlbnQpO1xuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgdGhpcy5fc3RlcEV2ZW50U3Vic2NyaXB0aW9ucy5hZGQoXG4gICAgICAgICAgICAgICAgc3RlcC5zdGF0dXNDaGFuZ2Uuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5faGFuZGxlU3RlcE9yU3RhdHVzQ2hhbmdlcygpO1xuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgdGhpcy5fc3RlcEV2ZW50U3Vic2NyaXB0aW9ucy5hZGQoXG4gICAgICAgICAgICAgICAgc3RlcC5zdGVwSW5kaWNhdG9ySXRlbUNsaWNrZWQuc3Vic2NyaWJlKChldmVudCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLl9zdGVwQ2xpY2tlZChldmVudCk7XG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICAvLyBuZWVkIHRvIGNhbGwgd2l6YXJkU2hyaW5raW5nIGZvciBlYWNoIHN0ZXAgPCAxNjhweCBvbiBmaXJzdCBsb2FkXG4gICAgICAgICAgICBpZiAoc3RlcC53aXphcmRMYWJlbCAmJiBzdGVwLmdldFN0ZXBDbGllbnRXaWR0aCgpIDwgU1RFUF9NSU5fV0lEVEgpIHtcbiAgICAgICAgICAgICAgICB0aGlzLl93aXphcmRTaHJpbmtpbmcoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF93aXphcmRTaHJpbmtpbmcoKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IGN1cnJlbnRTdGVwID0gdGhpcy5fZ2V0Q3VycmVudFN0ZXAoKTtcbiAgICAgICAgaWYgKFxuICAgICAgICAgICAgY3VycmVudFN0ZXAgJiZcbiAgICAgICAgICAgICghY3VycmVudFN0ZXAuaXNTdW1tYXJ5IHx8IHRoaXMuZGlzcGxheVN1bW1hcnlTdGVwKSAmJlxuICAgICAgICAgICAgY3VycmVudFN0ZXAud2l6YXJkTGFiZWwgJiZcbiAgICAgICAgICAgIGN1cnJlbnRTdGVwLmdldFN0ZXBDbGllbnRXaWR0aCgpIDwgU1RFUF9NSU5fV0lEVEhcbiAgICAgICAgKSB7XG4gICAgICAgICAgICB0aGlzLl9oaWRlU29tZVN0ZXAoY3VycmVudFN0ZXApO1xuICAgICAgICAgICAgdGhpcy5fc2V0U3RhY2tlZFRvcCgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9zZXRDb250ZW50VGVtcGxhdGVzKCk6IHZvaWQge1xuICAgICAgICBjb25zdCB0ZW1wbGF0ZXNMZW5ndGggPSB0aGlzLmNvbnRlbnRUZW1wbGF0ZXMubGVuZ3RoO1xuICAgICAgICB0aGlzLmNvbnRlbnRUZW1wbGF0ZXMgPSBbXTtcbiAgICAgICAgbGV0IF9zdGVwSWQgPSAwO1xuICAgICAgICBjb25zdCBzdGVwcyA9IHRoaXMuc3RlcHMudG9BcnJheSgpO1xuICAgICAgICBmb3IgKGNvbnN0IHN0ZXAgb2Ygc3RlcHMpIHtcbiAgICAgICAgICAgIGlmIChzdGVwLmNvbnRlbnQpIHtcbiAgICAgICAgICAgICAgICBpZiAoIXN0ZXAuaXNTdW1tYXJ5IHx8IHRoaXMuZGlzcGxheVN1bW1hcnlTdGVwKSB7XG4gICAgICAgICAgICAgICAgICAgIHN0ZXAuY29udGVudC50YWxsQ29udGVudCA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBzdGVwLmNvbnRlbnQud2l6YXJkQ29udGVudElkID0gX3N0ZXBJZC50b1N0cmluZygpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgc3RlcC5fc3RlcElkID0gX3N0ZXBJZDtcbiAgICAgICAgICAgIF9zdGVwSWQrKztcbiAgICAgICAgICAgIHN0ZXAuc2V0RmluYWxTdGVwKGZhbHNlKTtcbiAgICAgICAgICAgIC8qXG4gICAgICAgICAgICAgSWYgdGhlIHN0ZXAgaXMgY29tcGxldGVkIGFuZCBhcHBlbmRUb1dpemFyZCBpcyB0cnVlLCBoaWRlIHRoZSBuZXh0U3RlcCBidXR0b24sIHVubGVzcyBpdCdzIHRoZSBsYXN0IHN0ZXAsXG4gICAgICAgICAgICAgb3IgaWYgdGhlcmUncyBhIHN1bW1hcnkgYW5kIGl0IGlzIHRoZSBzZWNvbmQgdG8gbGFzdCBzdGVwXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICBzdGVwLmNvbXBsZXRlZCAmJlxuICAgICAgICAgICAgICAgIHRoaXMuYXBwZW5kVG9XaXphcmQgJiZcbiAgICAgICAgICAgICAgICBzdGVwLmNvbnRlbnQ/Lm5leHRTdGVwPy5jYW5IaWRlICYmXG4gICAgICAgICAgICAgICAgc3RlcCAhPT0gdGhpcy5fZ2V0TGFzdE5vblN1bW1hcnlTdGVwKClcbiAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgIHN0ZXAuY29udGVudC5uZXh0U3RlcC5faGlkZUVsZW1lbnQoKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoXG4gICAgICAgICAgICAgICAgc3RlcC5jb250ZW50Py5uZXh0U3RlcCAmJlxuICAgICAgICAgICAgICAgICgoc3RlcC5jb21wbGV0ZWQgJiYgdGhpcy5hcHBlbmRUb1dpemFyZCkgfHxcbiAgICAgICAgICAgICAgICAgICAgKHN0ZXAudmlzaXRlZCAmJiBzdGVwLmJyYW5jaGluZyAmJiBzdGVwLnN0YXR1cyA9PT0gQ1VSUkVOVF9TVEVQX1NUQVRVUykpXG4gICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICBzdGVwLmNvbnRlbnQubmV4dFN0ZXAuX3Nob3dFbGVtZW50KCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgc3RlcC52aXNpdGVkIHx8XG4gICAgICAgICAgICAgICAgKChzdGVwLnN0YXR1cyA9PT0gQ1VSUkVOVF9TVEVQX1NUQVRVUyB8fCBzdGVwLnN0YXR1cyA9PT0gQ09NUExFVEVEX1NURVBfU1RBVFVTKSAmJiBzdGVwLmNvbnRlbnQpXG4gICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICBzdGVwLnZpc2l0ZWQgPSB0cnVlO1xuICAgICAgICAgICAgICAgIGlmIChzdGVwLnN0YXR1cyA9PT0gQ1VSUkVOVF9TVEVQX1NUQVRVUyAmJiAoIXN0ZXAuY29tcGxldGVkIHx8ICF0aGlzLmFwcGVuZFRvV2l6YXJkKSkge1xuICAgICAgICAgICAgICAgICAgICBzdGVwLmNvbnRlbnQudGFsbENvbnRlbnQgPSB0cnVlO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGNvbnN0IGlzQ3VycmVudFN0ZXAgPSAhdGhpcy5hcHBlbmRUb1dpemFyZCAmJiBzdGVwLnN0YXR1cyA9PT0gQ1VSUkVOVF9TVEVQX1NUQVRVUztcblxuICAgICAgICAgICAgICAgIGlmICghdGVtcGxhdGVzTGVuZ3RoIHx8IGlzQ3VycmVudFN0ZXApIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jb250ZW50VGVtcGxhdGVzID0gW3N0ZXAuY29udGVudC5jb250ZW50VGVtcGxhdGVdO1xuXG4gICAgICAgICAgICAgICAgICAgIC8vIElmIHdlIGZvdW5kIG5lZWRlZCBzdGVwLCBicmVhayB0aGUgY3ljbGUsIHNpbmNlIGl0IG1pZ2h0IHNldCB3cm9uZyBzdGVwIGxhdGVyLlxuICAgICAgICAgICAgICAgICAgICBpZiAoaXNDdXJyZW50U3RlcCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHRoaXMuYXBwZW5kVG9XaXphcmQgJiYgKCFzdGVwLmlzU3VtbWFyeSB8fCB0aGlzLmRpc3BsYXlTdW1tYXJ5U3RlcCkpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jb250ZW50VGVtcGxhdGVzLnB1c2goc3RlcC5jb250ZW50LmNvbnRlbnRUZW1wbGF0ZSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgbGFzdFZpc2libGVUZW1wbGF0ZSA9IHN0ZXBzW3RoaXMuY29udGVudFRlbXBsYXRlcy5sZW5ndGggLSAxXTtcbiAgICAgICAgaWYgKGxhc3RWaXNpYmxlVGVtcGxhdGUgJiYgbGFzdFZpc2libGVUZW1wbGF0ZS5jb250ZW50KSB7XG4gICAgICAgICAgICBsYXN0VmlzaWJsZVRlbXBsYXRlLmNvbnRlbnQudGFsbENvbnRlbnQgPSB0cnVlO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuX3NldEZpbmFsU3RlcCgpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfc2Nyb2xsVG9DdXJyZW50U3RlcCgpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuYXBwZW5kVG9XaXphcmQpIHtcbiAgICAgICAgICAgIF9mcm9tU2Nyb2xsVG9DdXJyZW50U3RlcCA9IHRydWU7XG4gICAgICAgICAgICB0aGlzLnN0ZXBzLmZvckVhY2goKHN0ZXAsIGluZGV4KSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKHN0ZXAuc3RhdHVzID09PSBDVVJSRU5UX1NURVBfU1RBVFVTICYmICghc3RlcC5pc1N1bW1hcnkgfHwgdGhpcy5kaXNwbGF5U3VtbWFyeVN0ZXApKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoaWxkID0gdGhpcy53cmFwcGVyQ29udGFpbmVyLm5hdGl2ZUVsZW1lbnQuY2hpbGRyZW5bMF0uY2hpbGRyZW5baW5kZXhdIGFzIEhUTUxFbGVtZW50O1xuICAgICAgICAgICAgICAgICAgICBjb25zdCB3aXphcmROYXZpZ2F0aW9uSGVpZ2h0ID0gdGhpcy5fZWxSZWYubmF0aXZlRWxlbWVudC5xdWVyeVNlbGVjdG9yKFxuICAgICAgICAgICAgICAgICAgICAgICAgJy4nICsgV0laQVJEX05BVklHQVRJT05fQ0xBU1NcbiAgICAgICAgICAgICAgICAgICAgKS5jbGllbnRIZWlnaHQ7XG5cbiAgICAgICAgICAgICAgICAgICAgc2Nyb2xsVG9wKHRoaXMud3JhcHBlckNvbnRhaW5lci5uYXRpdmVFbGVtZW50LCBjaGlsZC5vZmZzZXRUb3AgLSB3aXphcmROYXZpZ2F0aW9uSGVpZ2h0KTtcblxuICAgICAgICAgICAgICAgICAgICBpZiAoaW5kZXggPT09IDApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX2ZvY3VzRmlyc3RUYWJiYWJsZUVsZW1lbnQoaW5kZXgpO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gc2V0VGltZW91dCBuZWVkZWQgdG8gYWxsb3cgZm9yIHNtb290aCBzY3JvbGwgYW5pbWF0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9mb2N1c0ZpcnN0VGFiYmFibGVFbGVtZW50KGluZGV4KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sIDUwMCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHRoaXMuX3NldFVwU2Nyb2xsTGlzdGVuZXIoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfZm9jdXNGaXJzdFRhYmJhYmxlRWxlbWVudChpbmRleCA9IDApOiB2b2lkIHtcbiAgICAgICAgY29uc3QgY29udGVudENvbnRhaW5lciA9IHRoaXMuX2VsUmVmLm5hdGl2ZUVsZW1lbnQucXVlcnlTZWxlY3RvckFsbCgnLmZkLXdpemFyZF9fY29udGVudCcpW2luZGV4XTtcbiAgICAgICAgdGhpcy5fdGFiYmFibGVTZXJ2aWNlLmdldFRhYmJhYmxlRWxlbWVudChjb250ZW50Q29udGFpbmVyKT8uZm9jdXMoKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX3NldFVwU2Nyb2xsTGlzdGVuZXIoKTogdm9pZCB7XG4gICAgICAgIHRoaXMud3JhcHBlckNvbnRhaW5lcj8ubmF0aXZlRWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCdzY3JvbGwnLCBoYW5kbGVUaW1lb3V0UmVmZXJlbmNlLCBmYWxzZSk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9oaWRlU29tZVN0ZXAoY3VycmVudFN0ZXA6IFdpemFyZFN0ZXBDb21wb25lbnQpOiB2b2lkIHtcbiAgICAgICAgLy8gSWYgYSBzbWFsbCBzdGVwIHdhcyBmb3VuZCwgZ2V0IHRoZSBzdGVwIHdpdGggYSB2aXNpYmxlIGxhYmVsIGZ1cnRoZXN0IGF3YXkgZnJvbSB0aGUgY3VycmVudCBzdGVwIGFuZCBoaWRlIHRoZSBsYWJlbFxuICAgICAgICBsZXQgc3RlcHNBcnJheSA9IHRoaXMuc3RlcHMudG9BcnJheSgpO1xuICAgICAgICBzdGVwc0FycmF5ID0gc3RlcHNBcnJheS5maWx0ZXIoKHN0ZXApID0+ICFzdGVwLmhhc0xhYmVsKFNURVBfTk9fTEFCRUxfQ0xBU1MpKTtcbiAgICAgICAgaWYgKHRoaXMuc3RlcHMubGFzdC5pc1N1bW1hcnkgJiYgIXRoaXMuZGlzcGxheVN1bW1hcnlTdGVwKSB7XG4gICAgICAgICAgICBzdGVwc0FycmF5LnBvcCgpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChzdGVwc0FycmF5Lmxlbmd0aCA+IDEpIHtcbiAgICAgICAgICAgIGxldCBjdXJyZW50U3RlcEluZGV4ID0gMCxcbiAgICAgICAgICAgICAgICBzdGVwVG9IaWRlO1xuICAgICAgICAgICAgaWYgKGN1cnJlbnRTdGVwKSB7XG4gICAgICAgICAgICAgICAgY3VycmVudFN0ZXBJbmRleCA9IHN0ZXBzQXJyYXkuaW5kZXhPZihjdXJyZW50U3RlcCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjdXJyZW50U3RlcEluZGV4ID4gKHN0ZXBzQXJyYXkubGVuZ3RoIC0gMSkgLyAyXG4gICAgICAgICAgICAgICAgPyAoc3RlcFRvSGlkZSA9IHN0ZXBzQXJyYXlbMF0pXG4gICAgICAgICAgICAgICAgOiAoc3RlcFRvSGlkZSA9IHN0ZXBzQXJyYXlbc3RlcHNBcnJheS5sZW5ndGggLSAxXSk7XG4gICAgICAgICAgICBzdGVwVG9IaWRlLmdldENsYXNzTGlzdCgpLmFkZChTVEVQX05PX0xBQkVMX0NMQVNTKTtcbiAgICAgICAgICAgIHN0ZXBUb0hpZGUuZ2V0Q2xhc3NMaXN0KCkuYWRkKFNURVBfU1RBQ0tFRF9DTEFTUyk7XG4gICAgICAgICAgICBpZiAoc3RlcHNBcnJheS5pbmRleE9mKHN0ZXBUb0hpZGUpIDwgY3VycmVudFN0ZXBJbmRleCAmJiAhdGhpcy5zdGFja2VkU3RlcHNMZWZ0LmluY2x1ZGVzKHN0ZXBUb0hpZGUpKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5zdGFja2VkU3RlcHNMZWZ0LnNwbGljZSh0aGlzLnN0ZXBzLnRvQXJyYXkoKS5pbmRleE9mKHN0ZXBUb0hpZGUpLCAwLCBzdGVwVG9IaWRlKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoXG4gICAgICAgICAgICAgICAgc3RlcHNBcnJheS5pbmRleE9mKHN0ZXBUb0hpZGUpID4gY3VycmVudFN0ZXBJbmRleCAmJlxuICAgICAgICAgICAgICAgICF0aGlzLnN0YWNrZWRTdGVwc1JpZ2h0LmluY2x1ZGVzKHN0ZXBUb0hpZGUpXG4gICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICB0aGlzLnN0YWNrZWRTdGVwc1JpZ2h0LnVuc2hpZnQoc3RlcFRvSGlkZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLl9jZFJlZi5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX3NldFN0YWNrZWRUb3AoKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IGN1cnJlbnRTdGVwID0gdGhpcy5fZ2V0Q3VycmVudFN0ZXAoKTtcbiAgICAgICAgdGhpcy5zdGVwcy5mb3JFYWNoKChzdGVwLCBpbmRleCkgPT4ge1xuICAgICAgICAgICAgaWYgKHN0ZXAuc3RlcEluZGljYXRvcikge1xuICAgICAgICAgICAgICAgIHN0ZXAuZ2V0Q2xhc3NMaXN0KCkucmVtb3ZlKFNURVBfU1RBQ0tFRF9UT1BfQ0xBU1MpO1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLnN0ZXBzLnRvQXJyYXkoKVtpbmRleCArIDFdID09PSBjdXJyZW50U3RlcCkge1xuICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5zdGVwcy5sZW5ndGggPiAxKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBzdGVwLmdldENsYXNzTGlzdCgpLmFkZChTVEVQX1NUQUNLRURfVE9QX0NMQVNTKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghdGhpcy5zdGFja2VkU3RlcHNMZWZ0LmluY2x1ZGVzKHN0ZXApICYmIHRoaXMuc3RhY2tlZFN0ZXBzTGVmdC5sZW5ndGggPj0gMSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc3RhY2tlZFN0ZXBzTGVmdC5zcGxpY2UoaW5kZXgsIDAsIHN0ZXApO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIHN0ZXAuc3RlcEluZGljYXRvci5zZXRTdGFja2VkSXRlbXModGhpcy5zdGFja2VkU3RlcHNMZWZ0KTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBzdGVwLnN0ZXBJbmRpY2F0b3Iuc3RhY2tlZEl0ZW1zID0gW107XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5fZ2V0TGFzdE5vblN1bW1hcnlTdGVwKCkuc3RlcEluZGljYXRvcj8uc2V0U3RhY2tlZEl0ZW1zKHRoaXMuc3RhY2tlZFN0ZXBzUmlnaHQpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfcmVzZXRTdGVwQ2xhc3NlcygpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5zdGVwcy5mb3JFYWNoKChzdGVwKSA9PiB7XG4gICAgICAgICAgICBzdGVwLmdldENsYXNzTGlzdCgpLnJlbW92ZShTVEVQX1NUQUNLRURfVE9QX0NMQVNTKTtcbiAgICAgICAgICAgIHN0ZXAuZ2V0Q2xhc3NMaXN0KCkucmVtb3ZlKFNURVBfU1RBQ0tFRF9DTEFTUyk7XG4gICAgICAgICAgICBzdGVwLmdldENsYXNzTGlzdCgpLnJlbW92ZShTVEVQX05PX0xBQkVMX0NMQVNTKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9oYW5kbGVTdGVwT3JTdGF0dXNDaGFuZ2VzKCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5faXNDdXJyZW50U3RlcFN1bW1hcnkoKSAmJiAhdGhpcy5kaXNwbGF5U3VtbWFyeVN0ZXApIHtcbiAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMucHJvZ3Jlc3NCYXIudmlzaWJsZSA9IGZhbHNlO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB0aGlzLl9zaG93U3VtbWFyeSgpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5wcm9ncmVzc0Jhci52aXNpYmxlID0gdHJ1ZTtcbiAgICAgICAgICAgIHRoaXMuX3NldENvbnRlbnRUZW1wbGF0ZXMoKTtcbiAgICAgICAgICAgIHRoaXMuX3Nocmlua1doaWxlQW55U3RlcElzVG9vTmFycm93KCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCF0aGlzLmFwcGVuZFRvV2l6YXJkKSB7XG4gICAgICAgICAgICB0aGlzLl9mb2N1c0ZpcnN0VGFiYmFibGVFbGVtZW50KCk7XG4gICAgICAgIH1cbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLl9jZFJlZi5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICAgICAgICB0aGlzLnJlc2l6ZUhhbmRsZXIoKTtcbiAgICAgICAgICAgIGlmICghdGhpcy5faXNDdXJyZW50U3RlcFN1bW1hcnkoKSB8fCB0aGlzLmRpc3BsYXlTdW1tYXJ5U3RlcCkge1xuICAgICAgICAgICAgICAgIHRoaXMuX3Njcm9sbFRvQ3VycmVudFN0ZXAoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMuX3NldEZpbmFsU3RlcCgpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfc2V0RmluYWxTdGVwKCk6IHZvaWQge1xuICAgICAgICBjb25zdCBsYXN0Tm9uU3VtbWFyeVN0ZXAgPSB0aGlzLl9nZXRMYXN0Tm9uU3VtbWFyeVN0ZXAoKTtcbiAgICAgICAgaWYgKGxhc3ROb25TdW1tYXJ5U3RlcCkge1xuICAgICAgICAgICAgaWYgKHRoaXMuc3RlcHMubGFzdC5pc1N1bW1hcnkgJiYgIXRoaXMuZGlzcGxheVN1bW1hcnlTdGVwKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5zdGVwcy5sYXN0LnJlbW92ZUZyb21Eb20oKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChsYXN0Tm9uU3VtbWFyeVN0ZXAuY29udGVudCkge1xuICAgICAgICAgICAgICAgIGxhc3ROb25TdW1tYXJ5U3RlcC5jb250ZW50LnRhbGxDb250ZW50ID0gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGxhc3ROb25TdW1tYXJ5U3RlcC5zZXRGaW5hbFN0ZXAodHJ1ZSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX3Nob3dTdW1tYXJ5KCk6IHZvaWQge1xuICAgICAgICB0aGlzLnN0ZXBzLmZvckVhY2goKHN0ZXApID0+IHtcbiAgICAgICAgICAgIGlmICghc3RlcC5pc1N1bW1hcnkpIHtcbiAgICAgICAgICAgICAgICBzdGVwLmNvbXBsZXRlZCA9IHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICBjb25zdCBzdW1tYXJ5ID0gdGhpcy5zdGVwcy5maW5kKChzdGVwKSA9PiBzdGVwLmlzU3VtbWFyeSk7XG4gICAgICAgIGlmIChzdW1tYXJ5KSB7XG4gICAgICAgICAgICBzdW1tYXJ5LmNvbnRlbnQudGFsbENvbnRlbnQgPSB0cnVlO1xuICAgICAgICAgICAgdGhpcy5jb250ZW50VGVtcGxhdGVzID0gW3N1bW1hcnkuY29udGVudC5jb250ZW50VGVtcGxhdGVdO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9pc0N1cnJlbnRTdGVwU3VtbWFyeSgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc3RlcHMuc29tZSgoc3RlcCkgPT4gc3RlcC5zdGF0dXMgPT09IENVUlJFTlRfU1RFUF9TVEFUVVMgJiYgc3RlcC5pc1N1bW1hcnkpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfZ2V0Q3VycmVudFN0ZXAoKTogV2l6YXJkU3RlcENvbXBvbmVudCB7XG4gICAgICAgIHJldHVybiB0aGlzLnN0ZXBzLmZpbHRlcihcbiAgICAgICAgICAgIChzdGVwKSA9PiBzdGVwLnN0YXR1cyA9PT0gQ1VSUkVOVF9TVEVQX1NUQVRVUyB8fCBzdGVwLnN0YXR1cyA9PT0gQUNUSVZFX1NURVBfU1RBVFVTXG4gICAgICAgIClbMF07XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9zaHJpbmtXaGlsZUFueVN0ZXBJc1Rvb05hcnJvdygpOiB2b2lkIHtcbiAgICAgICAgLy8gQWRkIHNtYWxsIGRlbGF5IGZvciBlbGVtZW50cyB0byByZW5kZXIgYXBwcm9wcmlhdGVseS5cbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLnN0YWNrZWRTdGVwc0xlZnQgPSBbXTtcbiAgICAgICAgICAgIHRoaXMuc3RhY2tlZFN0ZXBzUmlnaHQgPSBbXTtcbiAgICAgICAgICAgIHRoaXMuc3RlcHMuZmlyc3Quc3RlcEluZGljYXRvcj8uc2V0U3RhY2tlZEl0ZW1zKHRoaXMuc3RhY2tlZFN0ZXBzTGVmdCk7XG4gICAgICAgICAgICB0aGlzLl9nZXRMYXN0Tm9uU3VtbWFyeVN0ZXAoKS5zdGVwSW5kaWNhdG9yPy5zZXRTdGFja2VkSXRlbXModGhpcy5zdGFja2VkU3RlcHNSaWdodCk7XG4gICAgICAgICAgICB0aGlzLl9yZXNldFN0ZXBDbGFzc2VzKCk7XG4gICAgICAgICAgICBsZXQgaSA9IDA7XG4gICAgICAgICAgICB3aGlsZSAodGhpcy5fYW55U3RlcElzVG9vTmFycm93KCkgJiYgaSA8IHRoaXMuc3RlcHMubGVuZ3RoIC0gMSkge1xuICAgICAgICAgICAgICAgIGkrKztcbiAgICAgICAgICAgICAgICB0aGlzLl93aXphcmRTaHJpbmtpbmcoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSwgMTApO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfYW55U3RlcElzVG9vTmFycm93KCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5zdGVwcy5zb21lKChzdGVwKSA9PiBzdGVwLmdldFN0ZXBDbGllbnRXaWR0aCgpIDwgU1RFUF9NSU5fV0lEVEgpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfc3RlcENsaWNrZWQoY2xpY2tlZFN0ZXA6IFdpemFyZFN0ZXBDb21wb25lbnQpOiB2b2lkIHtcbiAgICAgICAgaWYgKCFjbGlja2VkU3RlcCkge1xuICAgICAgICAgICAgY2xpY2tlZFN0ZXAgPSB0aGlzLnN0ZXBzLmZpcnN0O1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGNsaWNrZWRTdGVwSW5kZXggPSB0aGlzLnN0ZXBzLnRvQXJyYXkoKS5pbmRleE9mKGNsaWNrZWRTdGVwKTtcbiAgICAgICAgdGhpcy5zdGVwcy5mb3JFYWNoKChzdGVwKSA9PiB7XG4gICAgICAgICAgICBpZiAoc3RlcCA9PT0gY2xpY2tlZFN0ZXApIHtcbiAgICAgICAgICAgICAgICBzdGVwLnN0YXR1cyA9IENVUlJFTlRfU1RFUF9TVEFUVVM7XG4gICAgICAgICAgICAgICAgc3RlcC5zdGF0dXNDaGFuZ2UuZW1pdChDVVJSRU5UX1NURVBfU1RBVFVTKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoc3RlcCAhPT0gY2xpY2tlZFN0ZXApIHtcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5zdGVwcy50b0FycmF5KCkuaW5kZXhPZihzdGVwKSA8IGNsaWNrZWRTdGVwSW5kZXgpIHtcbiAgICAgICAgICAgICAgICAgICAgc3RlcC5zdGF0dXMgPSBDT01QTEVURURfU1RFUF9TVEFUVVM7XG4gICAgICAgICAgICAgICAgICAgIHN0ZXAuc3RhdHVzQ2hhbmdlLmVtaXQoQ09NUExFVEVEX1NURVBfU1RBVFVTKTtcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHRoaXMuc3RlcHMudG9BcnJheSgpLmluZGV4T2Yoc3RlcCkgPiBjbGlja2VkU3RlcEluZGV4KSB7XG4gICAgICAgICAgICAgICAgICAgIHN0ZXAuc3RhdHVzID0gVVBDT01JTkdfU1RFUF9TVEFUVVM7XG4gICAgICAgICAgICAgICAgICAgIHN0ZXAuc3RhdHVzQ2hhbmdlLmVtaXQoVVBDT01JTkdfU1RFUF9TVEFUVVMpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgKGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQgYXMgSFRNTEVsZW1lbnQpLmJsdXIoKTsgLy8gdGhpcyBmdW5jdGlvbiBjYW4gZm9jdXMgc3RlcCBpbmRpY2F0b3JzIHVuZGVzaXJhYmx5XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfZ2V0TGFzdE5vblN1bW1hcnlTdGVwKCk6IFdpemFyZFN0ZXBDb21wb25lbnQge1xuICAgICAgICBpZiAodGhpcy5zdGVwcy5sYXN0LmlzU3VtbWFyeSAmJiAhdGhpcy5kaXNwbGF5U3VtbWFyeVN0ZXApIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnN0ZXBzLnRvQXJyYXkoKVt0aGlzLnN0ZXBzLmxlbmd0aCAtIDJdO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHRoaXMuc3RlcHMubGFzdDtcbiAgICB9XG59XG4iLCI8c2VjdGlvbiBjbGFzcz1cImZkLXdpemFyZFwiPlxuICAgIDxuZy1jb250ZW50IHNlbGVjdD1cImZkLXdpemFyZC1uYXZpZ2F0aW9uXCI+PC9uZy1jb250ZW50PlxuICAgIDxkaXZcbiAgICAgICAgKm5nSWY9XCJhcHBlbmRUb1dpemFyZFwiXG4gICAgICAgIGNsYXNzPVwiZmQtd2l6YXJkLWNvbnRhaW5lci13cmFwcGVyXCJcbiAgICAgICAgI3dyYXBwZXJDb250YWluZXJcbiAgICAgICAgZmRTY3JvbGxTcHlcbiAgICAgICAgY2RrU2Nyb2xsYWJsZVxuICAgICAgICBbdHJhY2tlZFRhZ3NdPVwiWydkaXYnXVwiXG4gICAgICAgIChzcHlDaGFuZ2UpPVwic2Nyb2xsU3B5Q2hhbmdlKCRldmVudClcIlxuICAgID5cbiAgICAgICAgPGRpdiBmZC1zY3JvbGxiYXI+XG4gICAgICAgICAgICA8ZGl2ICpuZ0Zvcj1cImxldCBjb250ZW50VGVtcGxhdGUgb2YgY29udGVudFRlbXBsYXRlc1wiPlxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJjb250ZW50VGVtcGxhdGVcIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2ICpuZ0lmPVwiIWFwcGVuZFRvV2l6YXJkXCIgY2RrU2Nyb2xsYWJsZSBjbGFzcz1cImZkLXdpemFyZC1jb250YWluZXItd3JhcHBlclwiPlxuICAgICAgICA8ZGl2IGZkLXNjcm9sbGJhcj5cbiAgICAgICAgICAgIDxkaXYgKm5nRm9yPVwibGV0IGNvbnRlbnRUZW1wbGF0ZSBvZiBjb250ZW50VGVtcGxhdGVzXCI+XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImNvbnRlbnRUZW1wbGF0ZVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICAgIDxuZy1jb250ZW50PjwvbmctY29udGVudD5cbjwvc2VjdGlvbj5cbiJdfQ==
@@ -1,12 +1,12 @@
1
1
  import * as i0 from '@angular/core';
2
- import { Component, ChangeDetectionStrategy, Input, ViewChild, ContentChild, InjectionToken, Optional, Inject, Directive, EventEmitter, Output, ElementRef, Injectable, ViewEncapsulation, HostBinding, ContentChildren, HostListener, NgModule } from '@angular/core';
2
+ import { Component, ChangeDetectionStrategy, Input, ViewChild, ContentChild, InjectionToken, Optional, Inject, Directive, EventEmitter, Output, ElementRef, Injectable, inject, ViewEncapsulation, HostBinding, ContentChildren, HostListener, NgModule } from '@angular/core';
3
3
  import { NgIf, NgTemplateOutlet, NgFor } from '@angular/common';
4
4
  import { ActionSheetComponent, ActionSheetControlComponent, ActionSheetBodyComponent, ActionSheetItemComponent } from '@fundamental-ngx/core/action-sheet';
5
5
  import { IconComponent } from '@fundamental-ngx/core/icon';
6
6
  import { Subscription } from 'rxjs';
7
7
  import { SPACE, ENTER, LEFT_ARROW, RIGHT_ARROW } from '@angular/cdk/keycodes';
8
8
  import * as i1 from '@fundamental-ngx/cdk/utils';
9
- import { KeyUtil, scrollTop } from '@fundamental-ngx/cdk/utils';
9
+ import { KeyUtil, TabbableElementService, scrollTop } from '@fundamental-ngx/cdk/utils';
10
10
  import { CdkScrollable } from '@angular/cdk/scrolling';
11
11
  import * as i1$1 from '@fundamental-ngx/core/dialog';
12
12
  import { FD_DIALOG_BODY_COMPONENT } from '@fundamental-ngx/core/dialog';
@@ -489,6 +489,8 @@ class WizardComponent {
489
489
  this._stepEventSubscriptions = new Subscription();
490
490
  /** @hidden */
491
491
  this._subscriptions = new Subscription();
492
+ /** @hidden */
493
+ this._tabbableService = inject(TabbableElementService);
492
494
  }
493
495
  /** @hidden */
494
496
  resizeHandler() {
@@ -532,6 +534,23 @@ class WizardComponent {
532
534
  this._subscriptions.unsubscribe();
533
535
  this.wrapperContainer?.nativeElement.removeEventListener('scroll', handleTimeoutReference);
534
536
  }
537
+ /** @hidden */
538
+ scrollSpyChange($event) {
539
+ if (!_fromScrollToCurrentStep) {
540
+ this.steps.forEach((step) => {
541
+ if (step._stepId.toString() === $event.children[0].children[0].id) {
542
+ step.status = CURRENT_STEP_STATUS;
543
+ }
544
+ else if (step._stepId < parseInt($event.children[0].children[0].id, 10)) {
545
+ step.status = COMPLETED_STEP_STATUS;
546
+ }
547
+ else {
548
+ step.status = UPCOMING_STEP_STATUS;
549
+ }
550
+ });
551
+ }
552
+ this._shrinkWhileAnyStepIsTooNarrow();
553
+ }
535
554
  /**
536
555
  * @hidden
537
556
  * @private
@@ -712,12 +731,25 @@ class WizardComponent {
712
731
  if (step.status === CURRENT_STEP_STATUS && (!step.isSummary || this.displaySummaryStep)) {
713
732
  const child = this.wrapperContainer.nativeElement.children[0].children[index];
714
733
  const wizardNavigationHeight = this._elRef.nativeElement.querySelector('.' + WIZARD_NAVIGATION_CLASS).clientHeight;
715
- scrollTop(this.wrapperContainer.nativeElement.children[0], child.offsetTop - wizardNavigationHeight);
734
+ scrollTop(this.wrapperContainer.nativeElement, child.offsetTop - wizardNavigationHeight);
735
+ if (index === 0) {
736
+ this._focusFirstTabbableElement(index);
737
+ }
738
+ else {
739
+ // setTimeout needed to allow for smooth scroll animation
740
+ setTimeout(() => {
741
+ this._focusFirstTabbableElement(index);
742
+ }, 500);
743
+ }
716
744
  }
717
745
  });
718
746
  this._setUpScrollListener();
719
747
  }
720
- this.scrollbar.scroll({ top: 0, behavior: 'smooth' });
748
+ }
749
+ /** @hidden */
750
+ _focusFirstTabbableElement(index = 0) {
751
+ const contentContainer = this._elRef.nativeElement.querySelectorAll('.fd-wizard__content')[index];
752
+ this._tabbableService.getTabbableElement(contentContainer)?.focus();
721
753
  }
722
754
  /** @hidden */
723
755
  _setUpScrollListener() {
@@ -794,6 +826,9 @@ class WizardComponent {
794
826
  this._setContentTemplates();
795
827
  this._shrinkWhileAnyStepIsTooNarrow();
796
828
  }
829
+ if (!this.appendToWizard) {
830
+ this._focusFirstTabbableElement();
831
+ }
797
832
  setTimeout(() => {
798
833
  this._cdRef.detectChanges();
799
834
  this.resizeHandler();
@@ -890,23 +925,6 @@ class WizardComponent {
890
925
  }
891
926
  return this.steps.last;
892
927
  }
893
- /** @hidden */
894
- scrollSpyChange($event) {
895
- if (!_fromScrollToCurrentStep) {
896
- this.steps.forEach((step) => {
897
- if (step._stepId.toString() === $event.children[0].children[0].id) {
898
- step.status = CURRENT_STEP_STATUS;
899
- }
900
- else if (step._stepId < parseInt($event.children[0].children[0].id, 10)) {
901
- step.status = COMPLETED_STEP_STATUS;
902
- }
903
- else {
904
- step.status = UPCOMING_STEP_STATUS;
905
- }
906
- });
907
- }
908
- this._shrinkWhileAnyStepIsTooNarrow();
909
- }
910
928
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.7", ngImport: i0, type: WizardComponent, deps: [{ token: i0.ElementRef }, { token: i0.ChangeDetectorRef }, { token: FD_DIALOG_BODY_COMPONENT, optional: true }], target: i0.ɵɵFactoryTarget.Component }); }
911
929
  static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.7", type: WizardComponent, isStandalone: true, selector: "fd-wizard", inputs: { appendToWizard: "appendToWizard", contentHeight: "contentHeight", responsivePaddings: "responsivePaddings", displaySummaryStep: "displaySummaryStep", ariaLabel: "ariaLabel" }, host: { attributes: { "role": "region" }, listeners: { "window:resize": "resizeHandler()" }, properties: { "attr.aria-label": "ariaLabel || _defaultAriaLabel()", "class.fd-wizard--responsive-paddings": "this.responsivePaddings" } }, providers: [
912
930
  WizardService,
@@ -1 +1 @@
1
- {"version":3,"file":"fundamental-ngx-core-wizard.mjs","sources":["../../../../libs/core/src/lib/wizard/wizard-next-step/wizard-next-step.component.ts","../../../../libs/core/src/lib/wizard/wizard-next-step/wizard-next-step.component.html","../../../../libs/core/src/lib/wizard/wizard-content/wizard-content.component.ts","../../../../libs/core/src/lib/wizard/wizard-content/wizard-content.component.html","../../../../libs/core/src/lib/wizard/wizard-injection-token.ts","../../../../libs/core/src/lib/wizard/wizard-navigation/wizard-navigation.component.ts","../../../../libs/core/src/lib/wizard/wizard-navigation/wizard-navigation.component.html","../../../../libs/core/src/lib/wizard/wizard-progress-bar/wizard-progress-bar.directive.ts","../../../../libs/core/src/lib/wizard/constants.ts","../../../../libs/core/src/lib/wizard/wizard-step-indicator/wizard-step-indicator.component.ts","../../../../libs/core/src/lib/wizard/wizard-step-indicator/wizard-step-indicator.component.html","../../../../libs/core/src/lib/wizard/wizard-step/wizard-step.component.ts","../../../../libs/core/src/lib/wizard/wizard-step/wizard-step.component.html","../../../../libs/core/src/lib/wizard/wizard.service.ts","../../../../libs/core/src/lib/wizard/wizard.component.ts","../../../../libs/core/src/lib/wizard/wizard.component.html","../../../../libs/core/src/lib/wizard/wizard.module.ts","../../../../libs/core/src/lib/wizard/fundamental-ngx-core-wizard.ts"],"sourcesContent":["import { ChangeDetectionStrategy, Component, ElementRef, Input } from '@angular/core';\n\n@Component({\n selector: 'fd-wizard-next-step',\n templateUrl: './wizard-next-step.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true\n})\nexport class WizardNextStepComponent {\n /**\n * Whether or not the next step button should float directly above the footer.\n */\n @Input()\n floating = false;\n\n /**\n * Whether or not element can be hidden when step status is completed.\n */\n @Input()\n set canHide(value: boolean) {\n this._canHide = value;\n\n if (!value) {\n this._showElement();\n }\n }\n\n get canHide(): boolean {\n return this._canHide;\n }\n\n /** @hidden */\n private _canHide = true;\n\n /** @hidden */\n constructor(private _elRef: ElementRef) {}\n\n /** @hidden */\n _getElRef(): ElementRef {\n return this._elRef;\n }\n\n /** @hidden */\n _showElement(): void {\n this._elRef.nativeElement.style.removeProperty('display');\n }\n\n /** @hidden */\n _hideElement(): void {\n this._elRef.nativeElement.style.display = 'none';\n }\n}\n","<div class=\"fd-wizard__next-step\" [class.fd-wizard__next-step--floating]=\"floating\">\n <ng-content></ng-content>\n</div>\n","import { ChangeDetectionStrategy, Component, ContentChild, Input, TemplateRef, ViewChild } from '@angular/core';\nimport { WizardNextStepComponent } from '../wizard-next-step/wizard-next-step.component';\nimport { WizardSize } from '../wizard-progress-bar/wizard-progress-bar.directive';\n\nexport type WizardContentBackground = 'solid' | 'list' | 'transparent';\n\n@Component({\n selector: 'fd-wizard-content',\n templateUrl: './wizard-content.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n styleUrls: ['./wizard-content.component.scss'],\n standalone: true\n})\nexport class WizardContentComponent {\n /**\n * The type of wizard background ('solid', 'list', or 'transparent').\n */\n @Input()\n contentBackground: WizardContentBackground;\n\n /**\n * Size (horizontal paddings) of the wizard content.\n */\n @Input()\n size: WizardSize;\n\n /** @hidden */\n @ViewChild('contentTemplate')\n contentTemplate: TemplateRef<any>;\n\n /** @hidden */\n @ContentChild(WizardNextStepComponent)\n nextStep: WizardNextStepComponent;\n\n /** @hidden */\n wizardContentId: string;\n\n /** @hidden */\n tallContent = false;\n}\n","<ng-template #contentTemplate>\n <section\n [id]=\"wizardContentId\"\n class=\"fd-wizard__content\"\n [class]=\"\n (contentBackground ? 'fd-wizard__content--' + contentBackground + ' ' : '') +\n (size ? 'fd-wizard__content--' + size : '')\n \"\n [class.fd-wizard-tall-content]=\"tallContent\"\n >\n <div class=\"fd-wizard__step-content-container\">\n <ng-content></ng-content>\n </div>\n </section>\n</ng-template>\n","import { InjectionToken } from '@angular/core';\n\nexport interface WizardComponentInterface {\n displaySummaryStep: boolean;\n ariaLabel: string;\n}\n\nexport const WIZARD = new InjectionToken<WizardComponentInterface>('Wizard component dependency');\n","import { ChangeDetectionStrategy, Component, Inject, Input, Optional } from '@angular/core';\nimport { Nullable } from '@fundamental-ngx/cdk/utils';\nimport { WIZARD, WizardComponentInterface } from '../wizard-injection-token';\n\n@Component({\n selector: 'fd-wizard-navigation',\n templateUrl: './wizard-navigation.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true\n})\nexport class WizardNavigationComponent {\n /** Aria label for the wizard navigation component element. */\n @Input()\n set ariaLabel(value: Nullable<string>) {\n this._ariaLabel = value;\n }\n get ariaLabel(): string | undefined {\n return this._ariaLabel ?? this._wizard?.ariaLabel;\n }\n\n /** @hidden */\n private _ariaLabel: Nullable<string>;\n\n /** @hidden */\n constructor(@Optional() @Inject(WIZARD) private _wizard?: WizardComponentInterface) {}\n}\n","<nav class=\"fd-wizard__navigation\" [attr.aria-label]=\"ariaLabel\">\n <ng-content></ng-content>\n</nav>\n","import { Directive, Input } from '@angular/core';\nimport { Nullable } from '@fundamental-ngx/cdk/utils';\n\nexport type WizardSize = 'sm' | 'md' | 'lg' | 'xl';\n\n@Directive({\n // eslint-disable-next-line @angular-eslint/directive-selector\n selector: '[fd-wizard-progress-bar]',\n host: {\n class: 'fd-wizard__progress-bar',\n '[class.fd-wizard__progress-bar--sm]': 'size === \"sm\"',\n '[class.fd-wizard__progress-bar--md]': 'size === \"md\"',\n '[class.fd-wizard__progress-bar--lg]': 'size === \"lg\"',\n '[class.fd-wizard__progress-bar--xl]': 'size === \"xl\"',\n '[style.display]': 'visible ? \"\" : \"none\"'\n },\n standalone: true\n})\nexport class WizardProgressBarDirective {\n /**\n * Size (horizontal paddings) of the wizard progress bar.\n */\n @Input()\n size: Nullable<WizardSize> = null;\n\n /** @hidden */\n visible = true;\n}\n","import { InjectionToken } from '@angular/core';\nimport { WizardStepIndicator } from './models/wizard-step';\n\nexport const ACTIVE_STEP_STATUS = 'active';\nexport const CURRENT_STEP_STATUS = 'current';\nexport const UPCOMING_STEP_STATUS = 'upcoming';\nexport const COMPLETED_STEP_STATUS = 'completed';\nexport const FD_WIZARD_STEP_INDICATOR = new InjectionToken<WizardStepIndicator>('FdWizardStepindicator');\n","import { NgFor, NgIf, NgTemplateOutlet } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n EventEmitter,\n Input,\n OnDestroy,\n Output,\n ViewChild\n} from '@angular/core';\nimport { Nullable } from '@fundamental-ngx/cdk/utils';\nimport {\n ActionSheetBodyComponent,\n ActionSheetComponent,\n ActionSheetControlComponent,\n ActionSheetItemComponent\n} from '@fundamental-ngx/core/action-sheet';\nimport { IconComponent } from '@fundamental-ngx/core/icon';\nimport { Subscription } from 'rxjs';\nimport { FD_WIZARD_STEP_INDICATOR } from '../constants';\nimport { WizardStepIndicator } from '../models/wizard-step';\nimport { WizardStepComponent } from '../wizard-step/wizard-step.component';\n\n@Component({\n selector: 'fd-wizard-step-indicator',\n templateUrl: './wizard-step-indicator.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: FD_WIZARD_STEP_INDICATOR,\n useExisting: WizardStepIndicatorComponent\n }\n ],\n standalone: true,\n imports: [\n NgIf,\n ActionSheetComponent,\n ActionSheetControlComponent,\n NgTemplateOutlet,\n ActionSheetBodyComponent,\n NgFor,\n ActionSheetItemComponent,\n IconComponent\n ]\n})\nexport class WizardStepIndicatorComponent implements WizardStepIndicator, OnDestroy {\n /**\n * The icon to use for this step.\n */\n @Input()\n glyph: Nullable<string>;\n\n /**\n * Event emitted when this step indicator is clicked.\n */\n @Output()\n stepIndicatorItemClicked = new EventEmitter<WizardStepComponent>();\n\n /** @hidden */\n @ViewChild(ActionSheetComponent)\n actionSheet: ActionSheetComponent;\n\n /** @hidden */\n stackedItems: WizardStepComponent[] = [];\n\n /** @hidden */\n private _subscriptions = new Subscription();\n\n /** @hidden */\n constructor(private _cdRef: ChangeDetectorRef) {}\n\n /** @hidden */\n ngOnDestroy(): void {\n this._subscriptions.unsubscribe();\n }\n\n /** @hidden */\n stepItemClicked(step?: WizardStepComponent, event?: MouseEvent): void {\n if (step && step.visited) {\n if (this.actionSheet) {\n this.actionSheet.close();\n }\n event?.preventDefault();\n this.stepIndicatorItemClicked.emit(step);\n }\n }\n\n /** @hidden */\n setStackedItems(items: WizardStepComponent[]): void {\n this.stackedItems = items || [];\n this._cdRef.detectChanges();\n }\n}\n","<ng-container *ngIf=\"stackedItems && stackedItems.length > 1\">\n <fd-action-sheet [style.pointer-events]=\"'all'\">\n <fd-action-sheet-control>\n <span class=\"fd-wizard__step-indicator\">\n <ng-container *ngTemplateOutlet=\"stepIndicatorContent\"></ng-container>\n </span>\n </fd-action-sheet-control>\n <fd-action-sheet-body>\n <li\n fd-action-sheet-item\n *ngFor=\"let step of stackedItems\"\n [label]=\"step.label\"\n [glyph]=\"step.glyph\"\n [disabled]=\"!step.visited\"\n (click)=\"stepItemClicked(step, $event)\"\n ></li>\n </fd-action-sheet-body>\n </fd-action-sheet>\n</ng-container>\n\n<ng-container *ngIf=\"!stackedItems || stackedItems.length <= 1\">\n <span\n class=\"fd-wizard__step-indicator\"\n (click)=\"stepItemClicked(stackedItems.length ? stackedItems[0] : undefined, $event)\"\n >\n <ng-container *ngTemplateOutlet=\"stepIndicatorContent\"></ng-container>\n </span>\n</ng-container>\n\n<ng-template #stepIndicatorContent>\n <fd-icon *ngIf=\"glyph\" [glyph]=\"glyph\" class=\"fd-wizard__icon\"></fd-icon>\n <ng-content></ng-content>\n</ng-template>\n","import { ENTER, SPACE } from '@angular/cdk/keycodes';\nimport {\n AfterViewInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ContentChild,\n ElementRef,\n EventEmitter,\n Inject,\n Input,\n OnChanges,\n OnDestroy,\n Optional,\n Output,\n SimpleChanges,\n ViewChild\n} from '@angular/core';\nimport { KeyUtil, Nullable } from '@fundamental-ngx/cdk/utils';\nimport { Subscription } from 'rxjs';\nimport { WizardContentComponent } from '../wizard-content/wizard-content.component';\n\nexport type WizardStepStatus = 'completed' | 'current' | 'upcoming' | 'active';\n\nimport { NgIf } from '@angular/common';\nimport { COMPLETED_STEP_STATUS, CURRENT_STEP_STATUS, FD_WIZARD_STEP_INDICATOR } from '../constants';\nimport { WizardStepIndicator } from '../models/wizard-step';\nimport { WIZARD, WizardComponentInterface } from '../wizard-injection-token';\n\n@Component({\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: '[fd-wizard-step]',\n host: {\n class: 'fd-wizard__step',\n '[class.fd-wizard__step--completed]': 'status === \"completed\" || completed',\n '[class.fd-wizard__step--current]': 'status === \"current\"',\n '[class.fd-wizard__step--upcoming]': 'status === \"upcoming\"',\n '[class.fd-wizard__step--active]': 'status === \"active\"',\n '[attr.aria-label]': 'ariaLabel'\n },\n templateUrl: './wizard-step.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n imports: [NgIf]\n})\nexport class WizardStepComponent implements OnChanges, AfterViewInit, OnDestroy {\n /**\n * The aria-label for the step container.\n */\n @Input()\n ariaLabel: Nullable<string>;\n\n /**\n * The aria-label for the step container.\n */\n @Input()\n ariaRoleDecription = 'Navigation';\n\n /**\n * The type of step ('completed', 'current', 'upcoming', and 'active'.)\n */\n @Input()\n status: WizardStepStatus;\n\n /**\n * Whether or not this is a 'branching' step.\n */\n @Input()\n branching = false;\n\n /**\n * The label text.\n */\n @Input()\n label: string;\n\n /** @hidden */\n glyph: string;\n\n /**\n * The smaller text for labeling the step as optional.\n */\n @Input()\n optionalText: string;\n\n /**\n * Whether or not this step is the summary page.\n */\n @Input()\n isSummary = false;\n\n /**\n * User-defined validation function which determines if user can navigate between steps.\n */\n @Input()\n stepClickValidator: (visited: boolean, completed: boolean) => boolean | Promise<boolean>;\n\n /**\n * Event emitted when the wizard step's status changes.\n */\n @Output()\n statusChange = new EventEmitter<WizardStepStatus>();\n\n /**\n * Event emitted when a step is clicked.\n */\n @Output()\n stepClicked = new EventEmitter<WizardStepComponent>();\n\n /**\n * Event emitted when a step indicator is clicked.\n */\n @Output()\n stepIndicatorItemClicked = new EventEmitter<WizardStepComponent>();\n\n /** @hidden */\n @ContentChild(WizardContentComponent)\n content: WizardContentComponent;\n\n /** @hidden */\n @ContentChild(FD_WIZARD_STEP_INDICATOR)\n stepIndicator: WizardStepIndicator<WizardStepComponent>;\n\n /** The wizard label span element. */\n @ViewChild('wizardLabel', { read: ElementRef })\n wizardLabel: ElementRef;\n\n /** @hidden */\n @ViewChild('progressBarLink', { read: ElementRef })\n progressBarLink: ElementRef;\n\n /** @hidden */\n visited = false;\n\n /** @hidden */\n completed = false;\n\n /** @hidden */\n private _subscriptions: Subscription = new Subscription();\n\n /** @hidden */\n _stepId: number;\n\n /** @hidden */\n _finalStep = false;\n\n /** @hidden */\n constructor(\n private _elRef: ElementRef,\n private _cdRef: ChangeDetectorRef,\n @Optional() @Inject(WIZARD) private _wizard: WizardComponentInterface\n ) {}\n\n /** @hidden */\n ngOnChanges(changes: SimpleChanges): void {\n if (changes && changes.status) {\n if (\n changes.status.previousValue === CURRENT_STEP_STATUS &&\n changes.status.currentValue === COMPLETED_STEP_STATUS\n ) {\n this.completed = true;\n }\n this.statusChange.emit(this.status);\n }\n }\n\n /** @hidden */\n ngAfterViewInit(): void {\n if (this.isSummary && !this._wizard?.displaySummaryStep) {\n this._summaryInit();\n } else if (this.stepIndicator) {\n this._notSummaryInit();\n }\n }\n\n /** @hidden */\n ngOnDestroy(): void {\n this._subscriptions.unsubscribe();\n }\n\n /** @hidden */\n setFinalStep(val: boolean): void {\n this._finalStep = val;\n this._cdRef.detectChanges();\n }\n\n /** @hidden */\n async stepContainerKeypress(event?: KeyboardEvent): Promise<void> {\n if (event) {\n event.preventDefault();\n }\n\n if (\n this.visited &&\n (!event || KeyUtil.isKeyCode(event, [SPACE, ENTER])) &&\n (!this.stepIndicator || !this.stepIndicator.stackedItems || !this.stepIndicator.stackedItems.length) &&\n (this.stepClickValidator === undefined ||\n (await this.stepClickValidator(this.visited, this.completed)) === true)\n ) {\n this.stepClicked.emit(this);\n }\n }\n\n /** @hidden */\n getClassList(): DOMTokenList {\n return this._elRef.nativeElement.classList;\n }\n\n /** @hidden */\n hasLabel(label: string): boolean {\n return this._elRef.nativeElement.classList.contains(label);\n }\n\n /** @hidden */\n getStepClientWidth(): number {\n return this._elRef.nativeElement.clientWidth;\n }\n\n /** @hidden */\n removeFromDom(): void {\n if (this._elRef.nativeElement.parentNode) {\n this._elRef.nativeElement.parentNode.removeChild(this._elRef.nativeElement);\n }\n }\n\n /** @hidden */\n _summaryInit(): void {\n this._elRef.nativeElement.style.display = 'none';\n this.content.tallContent = true;\n }\n\n /** @hidden */\n _notSummaryInit(): void {\n this._subscriptions.add(\n this.stepIndicator.stepIndicatorItemClicked.subscribe((step) => {\n this.stepIndicatorItemClicked.emit(step);\n })\n );\n if (this.stepIndicator.glyph) {\n this.glyph = this.stepIndicator.glyph;\n }\n }\n}\n","<div class=\"fd-wizard__step-wrapper\">\n <a\n *ngIf=\"label || optionalText\"\n #progressBarLink\n class=\"fd-wizard__step-container\"\n (click)=\"stepContainerKeypress()\"\n (keypress)=\"stepContainerKeypress($event)\"\n [style.cursor]=\"visited ? 'pointer' : 'auto'\"\n [style.pointer-events]=\"visited ? 'auto' : 'none'\"\n [attr.tabindex]=\"status === 'current' ? 0 : -1\"\n [attr.aria-roledescription]=\"ariaRoleDecription\"\n >\n <ng-content select=\"fd-wizard-step-indicator\"></ng-content>\n <div class=\"fd-wizard__label-container\" [class.fd-wizard__label-container--optional]=\"optionalText\">\n <div #wizardLabel>\n <span class=\"fd-wizard__label\">{{ label }}</span>\n <span *ngIf=\"optionalText\" class=\"fd-wizard__optional-text\">\n {{ optionalText }}\n </span>\n </div>\n </div>\n </a>\n\n <ng-content></ng-content>\n\n <span\n *ngIf=\"!_finalStep || branching\"\n class=\"fd-wizard__connector\"\n [class.fd-wizard__connector--active]=\"completed\"\n [class.fd-wizard__connector--branching]=\"branching\"\n >\n </span>\n</div>\n","import { LEFT_ARROW, RIGHT_ARROW } from '@angular/cdk/keycodes';\nimport { Injectable, Optional, QueryList } from '@angular/core';\nimport { WizardStepComponent } from './wizard-step/wizard-step.component';\nimport { KeyUtil, RtlService } from '@fundamental-ngx/cdk/utils';\nimport { COMPLETED_STEP_STATUS, CURRENT_STEP_STATUS } from './constants';\n\n@Injectable()\nexport class WizardService {\n /** @hidden */\n constructor(@Optional() private _rtlService: RtlService) {}\n\n /** @hidden */\n progressBarKeyHandler(event: any, steps: QueryList<WizardStepComponent>, index: number): void {\n const rtlDirection: boolean = this._rtlService && this._rtlService.rtl.getValue();\n if (KeyUtil.isKeyCode(event, LEFT_ARROW)) {\n if (\n steps.get(index - 1)?.status === COMPLETED_STEP_STATUS ||\n steps.get(index - 1)?.status === CURRENT_STEP_STATUS\n ) {\n if (!rtlDirection) {\n this._focusPrevious(index, steps);\n } else {\n this._focusNext(index, steps);\n }\n }\n } else if (KeyUtil.isKeyCode(event, RIGHT_ARROW)) {\n if (steps.get(index)?.status === COMPLETED_STEP_STATUS) {\n if (!rtlDirection) {\n this._focusNext(index, steps);\n } else {\n this._focusPrevious(index, steps);\n }\n }\n }\n }\n\n /** @hidden */\n private _focusNext(index: number, steps: QueryList<WizardStepComponent>): void {\n if (index + 1 < steps.length) {\n steps.get(index + 1)?.progressBarLink.nativeElement.focus();\n } else {\n steps.get(0)?.progressBarLink.nativeElement.focus();\n }\n }\n\n /** @hidden */\n private _focusPrevious(index: number, steps: QueryList<WizardStepComponent>): void {\n if (index - 1 >= 0) {\n steps.get(index - 1)?.progressBarLink.nativeElement.focus();\n } else {\n steps.get(steps.length - 1)?.progressBarLink.nativeElement.focus();\n }\n }\n}\n","import { CdkScrollable } from '@angular/cdk/scrolling';\nimport { NgFor, NgIf, NgTemplateOutlet } from '@angular/common';\nimport {\n AfterViewInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ContentChild,\n ContentChildren,\n ElementRef,\n HostBinding,\n HostListener,\n Inject,\n Input,\n OnDestroy,\n Optional,\n QueryList,\n TemplateRef,\n ViewChild,\n ViewEncapsulation\n} from '@angular/core';\nimport { Nullable, scrollTop } from '@fundamental-ngx/cdk/utils';\nimport { DialogBodyComponent, FD_DIALOG_BODY_COMPONENT } from '@fundamental-ngx/core/dialog';\nimport { ScrollSpyDirective } from '@fundamental-ngx/core/scroll-spy';\nimport { ScrollbarDirective } from '@fundamental-ngx/core/scrollbar';\nimport { resolveTranslationSignal } from '@fundamental-ngx/i18n';\nimport { Subscription } from 'rxjs';\nimport { ACTIVE_STEP_STATUS, COMPLETED_STEP_STATUS, CURRENT_STEP_STATUS, UPCOMING_STEP_STATUS } from './constants';\nimport { WizardContentComponent } from './wizard-content/wizard-content.component';\nimport { WIZARD } from './wizard-injection-token';\nimport { WizardProgressBarDirective } from './wizard-progress-bar/wizard-progress-bar.directive';\nimport { WizardStepComponent } from './wizard-step/wizard-step.component';\nimport { WizardService } from './wizard.service';\n\nexport const STEP_MIN_WIDTH = 168;\nexport const STEP_STACKED_TOP_CLASS = 'fd-wizard__step--stacked-top';\nexport const STEP_STACKED_CLASS = 'fd-wizard__step--stacked';\nexport const STEP_NO_LABEL_CLASS = 'fd-wizard__step--no-label';\n\nexport const WIZARD_NAVIGATION_CLASS = 'fd-wizard__navigation';\nexport const WIZARD_CONTENT_CLASS = 'fd-wizard__content';\nexport const WIZARD_CONTAINER_WRAPPER_CLASS = 'fd-wizard-container-wrapper';\nexport const WIZARD_TALL_CONTENT_CLASS = 'fd-wizard-tall-content';\nexport const SHELLBAR_CLASS = 'fd-shellbar';\nexport const BAR_FOOTER_CLASS = 'fd-bar--footer';\nexport const BAR_FLOATING_FOOTER_CLASS = 'fd-bar--floating-footer';\n\nexport let _fromScrollToCurrentStep;\nexport let timer: any = null;\nexport const handleTimeoutReference = (): void => {\n if (timer !== null) {\n clearTimeout(timer);\n }\n timer = setTimeout(() => {\n _fromScrollToCurrentStep = false;\n }, 150);\n};\n\n@Component({\n selector: 'fd-wizard',\n templateUrl: './wizard.component.html',\n styleUrls: ['./wizard.component.scss'],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n WizardService,\n {\n provide: WIZARD,\n useExisting: WizardComponent\n }\n ],\n host: {\n role: 'region',\n '[attr.aria-label]': 'ariaLabel || _defaultAriaLabel()'\n },\n standalone: true,\n imports: [NgIf, ScrollSpyDirective, CdkScrollable, ScrollbarDirective, NgFor, NgTemplateOutlet]\n})\nexport class WizardComponent implements AfterViewInit, OnDestroy {\n /**\n * Whether or not to append the step to the wizard. If false, each step will be displayed on a different page.\n * Default is true.\n */\n @Input()\n appendToWizard = true;\n\n /**\n * Custom height to use for the wizard's content pane. By default, this value is calc(100vh - 144px), where 144px\n * is the combined height of the shellbar, wizard header and wizard footer.\n */\n @Input()\n contentHeight: Nullable<string | null>;\n\n /**\n * Whether or not apply responsive paddings styling.\n */\n @Input()\n @HostBinding('class.fd-wizard--responsive-paddings')\n responsivePaddings = false;\n\n /** Whether to display a summary step. */\n @Input()\n displaySummaryStep = false;\n\n /**\n * adding aria label to the component\n * If not provided, is being translated by i18n package\n */\n @Input()\n ariaLabel: string;\n\n /** @hidden */\n @ContentChildren(WizardStepComponent, { descendants: true })\n steps: QueryList<WizardStepComponent>;\n\n /** @hidden */\n @ContentChild(WizardProgressBarDirective)\n progressBar: WizardProgressBarDirective;\n\n /** @hidden */\n @ContentChildren(WizardContentComponent)\n wizardContent: WizardContentComponent;\n\n /** @hidden */\n @ViewChild('wrapperContainer')\n wrapperContainer: ElementRef<HTMLElement>;\n\n /** @hidden */\n @ViewChild(ScrollbarDirective)\n scrollbar: ScrollbarDirective;\n\n /** @hidden */\n contentTemplates: TemplateRef<any>[] = [];\n\n /** @hidden */\n stackedStepsLeft: WizardStepComponent[] = [];\n\n /** @hidden */\n stackedStepsRight: WizardStepComponent[] = [];\n\n /** @hidden */\n protected _defaultAriaLabel = resolveTranslationSignal('coreWizard.ariaLabel');\n\n /** @hidden */\n private _stepEventSubscriptions: Subscription = new Subscription();\n\n /** @hidden */\n private _subscriptions: Subscription = new Subscription();\n\n /** @hidden */\n private _previousWidth: number;\n\n /** @hidden */\n constructor(\n private _elRef: ElementRef,\n private readonly _cdRef: ChangeDetectorRef,\n @Optional() @Inject(FD_DIALOG_BODY_COMPONENT) private _dialogBodyComponent: DialogBodyComponent\n ) {}\n\n /** @hidden */\n @HostListener('window:resize')\n resizeHandler(): void {\n const wizardWidth = this._elRef.nativeElement.getBoundingClientRect().width;\n if (!this._previousWidth || wizardWidth <= this._previousWidth) {\n this._wizardShrinking();\n } else if (wizardWidth > this._previousWidth) {\n this._shrinkWhileAnyStepIsTooNarrow();\n }\n this._previousWidth = wizardWidth;\n if (this.contentHeight) {\n this._elRef.nativeElement.querySelector('.' + WIZARD_CONTAINER_WRAPPER_CLASS).style.height =\n this.contentHeight;\n } else {\n this._setContainerAndTallContentHeight();\n }\n }\n\n /** @hidden */\n ngAfterViewInit(): void {\n setTimeout(() => {\n if (this._subscriptions.closed) {\n return;\n }\n\n // fixes ExpressionChangedAfterItHasBeenCheckedError\n this._setContentTemplates();\n this._subscriptions.add(\n this.steps.changes.subscribe(() => {\n this._handleStepOrStatusChanges();\n this._setupStepEvents();\n })\n );\n this._setupStepEvents();\n this._cdRef.detectChanges();\n this._handleStepOrStatusChanges();\n this.resizeHandler();\n });\n }\n\n /** @hidden */\n ngOnDestroy(): void {\n this._stepEventSubscriptions.unsubscribe();\n this._subscriptions.unsubscribe();\n this.wrapperContainer?.nativeElement.removeEventListener('scroll', handleTimeoutReference);\n }\n\n /**\n * @hidden\n * @private\n * This function determines the height of the wizard content by looking for the document's shellbar, the wizard\n * navigation and the wizard footer, and calculating the height based on their presence.\n */\n private _calculateContentHeight(): number {\n let wizardNavHeight = 0;\n const shellbarHeight = this._getShellbarHeight();\n if (!this._isCurrentStepSummary() || this.displaySummaryStep) {\n wizardNavHeight = this._getWizardNavHeight();\n }\n const wizardFooterHeight = this._getWizardFooterHeight();\n const dialogOffset = this._getDialogOffset();\n\n return shellbarHeight + wizardNavHeight + wizardFooterHeight + dialogOffset;\n }\n\n /** @hidden */\n private _getShellbarHeight(): number {\n return document.querySelector<HTMLElement>('.' + SHELLBAR_CLASS)?.clientHeight ?? 0;\n }\n\n /** @hidden */\n private _getWizardNavHeight(): number {\n const wizard = this._elRef.nativeElement;\n let retVal;\n if (wizard.querySelector('.' + WIZARD_NAVIGATION_CLASS)) {\n retVal = wizard.querySelector('.' + WIZARD_NAVIGATION_CLASS).clientHeight;\n } else {\n retVal = 0;\n }\n return retVal;\n }\n\n /** @hidden */\n private _getWizardFooterHeight(): number {\n const wizard = this._elRef.nativeElement;\n let retVal;\n if (wizard.querySelector('.' + BAR_FOOTER_CLASS)) {\n retVal = wizard.querySelector('.' + BAR_FOOTER_CLASS).offsetHeight;\n } else if (wizard.querySelector('.' + BAR_FLOATING_FOOTER_CLASS)) {\n retVal = wizard.querySelector('.' + BAR_FLOATING_FOOTER_CLASS).offsetHeight;\n } else {\n retVal = 0;\n }\n return retVal;\n }\n\n /** @hidden */\n private _getDialogOffset(): number {\n let retVal = 0;\n if (this._dialogBodyComponent) {\n const dialogBody = this._dialogBodyComponent.elementRef.nativeElement;\n if (dialogBody.tagName.toLowerCase() === 'fd-dialog-body') {\n this._dialogBodyComponent.dialogConfig.verticalPadding = false;\n const dialogBodyTitle = dialogBody.querySelector('.fd-title--h2');\n if (dialogBodyTitle) {\n retVal = dialogBodyTitle.offsetHeight;\n }\n retVal = retVal + window.innerHeight - dialogBody.offsetHeight;\n }\n }\n\n return retVal;\n }\n\n /** @hidden */\n private _setContainerAndTallContentHeight(): void {\n const wizard = this._elRef.nativeElement;\n const combinedHeight = this.contentHeight ? this.contentHeight : this._calculateContentHeight();\n if (wizard.querySelector('.' + WIZARD_CONTAINER_WRAPPER_CLASS)) {\n wizard.querySelector('.' + WIZARD_CONTAINER_WRAPPER_CLASS).style.height =\n 'calc(100vh - ' + combinedHeight + 'px)';\n }\n wizard.querySelectorAll('.' + WIZARD_CONTENT_CLASS).forEach((node) => {\n node.style.height = 'auto';\n });\n if (wizard.querySelector('.' + WIZARD_TALL_CONTENT_CLASS)) {\n if (\n wizard.querySelector('.' + WIZARD_TALL_CONTENT_CLASS).offsetHeight <\n wizard.querySelector('.' + WIZARD_CONTAINER_WRAPPER_CLASS).offsetHeight\n ) {\n wizard.querySelector('.' + WIZARD_TALL_CONTENT_CLASS).style.height =\n 'calc(100vh - ' + combinedHeight + 'px)';\n } else {\n wizard.querySelector('.' + WIZARD_TALL_CONTENT_CLASS).style.paddingBottom = '24px';\n }\n }\n }\n\n /** @hidden */\n private _setupStepEvents(): void {\n this._stepEventSubscriptions.unsubscribe();\n this._stepEventSubscriptions = new Subscription();\n this.steps.forEach((step) => {\n this._stepEventSubscriptions.add(\n step.stepClicked.subscribe((event) => {\n this._stepClicked(event);\n })\n );\n this._stepEventSubscriptions.add(\n step.statusChange.subscribe(() => {\n this._handleStepOrStatusChanges();\n })\n );\n this._stepEventSubscriptions.add(\n step.stepIndicatorItemClicked.subscribe((event) => {\n this._stepClicked(event);\n })\n );\n // need to call wizardShrinking for each step < 168px on first load\n if (step.wizardLabel && step.getStepClientWidth() < STEP_MIN_WIDTH) {\n this._wizardShrinking();\n }\n });\n }\n\n /** @hidden */\n private _wizardShrinking(): void {\n const currentStep = this._getCurrentStep();\n if (\n currentStep &&\n (!currentStep.isSummary || this.displaySummaryStep) &&\n currentStep.wizardLabel &&\n currentStep.getStepClientWidth() < STEP_MIN_WIDTH\n ) {\n this._hideSomeStep(currentStep);\n this._setStackedTop();\n }\n }\n\n /** @hidden */\n private _setContentTemplates(): void {\n const templatesLength = this.contentTemplates.length;\n this.contentTemplates = [];\n let _stepId = 0;\n const steps = this.steps.toArray();\n for (const step of steps) {\n if (step.content) {\n if (!step.isSummary || this.displaySummaryStep) {\n step.content.tallContent = false;\n }\n step.content.wizardContentId = _stepId.toString();\n }\n step._stepId = _stepId;\n _stepId++;\n step.setFinalStep(false);\n /*\n If the step is completed and appendToWizard is true, hide the nextStep button, unless it's the last step,\n or if there's a summary and it is the second to last step\n */\n if (\n step.completed &&\n this.appendToWizard &&\n step.content?.nextStep?.canHide &&\n step !== this._getLastNonSummaryStep()\n ) {\n step.content.nextStep._hideElement();\n } else if (\n step.content?.nextStep &&\n ((step.completed && this.appendToWizard) ||\n (step.visited && step.branching && step.status === CURRENT_STEP_STATUS))\n ) {\n step.content.nextStep._showElement();\n }\n if (\n step.visited ||\n ((step.status === CURRENT_STEP_STATUS || step.status === COMPLETED_STEP_STATUS) && step.content)\n ) {\n step.visited = true;\n if (step.status === CURRENT_STEP_STATUS && (!step.completed || !this.appendToWizard)) {\n step.content.tallContent = true;\n }\n\n const isCurrentStep = !this.appendToWizard && step.status === CURRENT_STEP_STATUS;\n\n if (!templatesLength || isCurrentStep) {\n this.contentTemplates = [step.content.contentTemplate];\n\n // If we found needed step, break the cycle, since it might set wrong step later.\n if (isCurrentStep) {\n break;\n }\n } else if (this.appendToWizard && (!step.isSummary || this.displaySummaryStep)) {\n this.contentTemplates.push(step.content.contentTemplate);\n }\n }\n }\n\n const lastVisibleTemplate = steps[this.contentTemplates.length - 1];\n if (lastVisibleTemplate && lastVisibleTemplate.content) {\n lastVisibleTemplate.content.tallContent = true;\n }\n this._setFinalStep();\n }\n\n /** @hidden */\n private _scrollToCurrentStep(): void {\n if (this.appendToWizard) {\n _fromScrollToCurrentStep = true;\n this.steps.forEach((step, index) => {\n if (step.status === CURRENT_STEP_STATUS && (!step.isSummary || this.displaySummaryStep)) {\n const child = this.wrapperContainer.nativeElement.children[0].children[index] as HTMLElement;\n const wizardNavigationHeight = this._elRef.nativeElement.querySelector(\n '.' + WIZARD_NAVIGATION_CLASS\n ).clientHeight;\n\n scrollTop(\n this.wrapperContainer.nativeElement.children[0],\n child.offsetTop - wizardNavigationHeight\n );\n }\n });\n this._setUpScrollListener();\n }\n this.scrollbar.scroll({ top: 0, behavior: 'smooth' });\n }\n\n /** @hidden */\n private _setUpScrollListener(): void {\n this.wrapperContainer?.nativeElement.addEventListener('scroll', handleTimeoutReference, false);\n }\n\n /** @hidden */\n private _hideSomeStep(currentStep: WizardStepComponent): void {\n // If a small step was found, get the step with a visible label furthest away from the current step and hide the label\n let stepsArray = this.steps.toArray();\n stepsArray = stepsArray.filter((step) => !step.hasLabel(STEP_NO_LABEL_CLASS));\n if (this.steps.last.isSummary && !this.displaySummaryStep) {\n stepsArray.pop();\n }\n if (stepsArray.length > 1) {\n let currentStepIndex = 0,\n stepToHide;\n if (currentStep) {\n currentStepIndex = stepsArray.indexOf(currentStep);\n }\n currentStepIndex > (stepsArray.length - 1) / 2\n ? (stepToHide = stepsArray[0])\n : (stepToHide = stepsArray[stepsArray.length - 1]);\n stepToHide.getClassList().add(STEP_NO_LABEL_CLASS);\n stepToHide.getClassList().add(STEP_STACKED_CLASS);\n if (stepsArray.indexOf(stepToHide) < currentStepIndex && !this.stackedStepsLeft.includes(stepToHide)) {\n this.stackedStepsLeft.splice(this.steps.toArray().indexOf(stepToHide), 0, stepToHide);\n } else if (\n stepsArray.indexOf(stepToHide) > currentStepIndex &&\n !this.stackedStepsRight.includes(stepToHide)\n ) {\n this.stackedStepsRight.unshift(stepToHide);\n }\n this._cdRef.detectChanges();\n }\n }\n\n /** @hidden */\n private _setStackedTop(): void {\n const currentStep = this._getCurrentStep();\n this.steps.forEach((step, index) => {\n if (step.stepIndicator) {\n step.getClassList().remove(STEP_STACKED_TOP_CLASS);\n if (this.steps.toArray()[index + 1] === currentStep) {\n if (this.steps.length > 1) {\n step.getClassList().add(STEP_STACKED_TOP_CLASS);\n if (!this.stackedStepsLeft.includes(step) && this.stackedStepsLeft.length >= 1) {\n this.stackedStepsLeft.splice(index, 0, step);\n }\n }\n step.stepIndicator.setStackedItems(this.stackedStepsLeft);\n } else {\n step.stepIndicator.stackedItems = [];\n }\n }\n });\n this._getLastNonSummaryStep().stepIndicator?.setStackedItems(this.stackedStepsRight);\n }\n\n /** @hidden */\n private _resetStepClasses(): void {\n this.steps.forEach((step) => {\n step.getClassList().remove(STEP_STACKED_TOP_CLASS);\n step.getClassList().remove(STEP_STACKED_CLASS);\n step.getClassList().remove(STEP_NO_LABEL_CLASS);\n });\n }\n\n /** @hidden */\n private _handleStepOrStatusChanges(): void {\n if (this._isCurrentStepSummary() && !this.displaySummaryStep) {\n setTimeout(() => {\n this.progressBar.visible = false;\n });\n this._showSummary();\n } else {\n this.progressBar.visible = true;\n this._setContentTemplates();\n this._shrinkWhileAnyStepIsTooNarrow();\n }\n setTimeout(() => {\n this._cdRef.detectChanges();\n this.resizeHandler();\n if (!this._isCurrentStepSummary() || this.displaySummaryStep) {\n this._scrollToCurrentStep();\n }\n });\n this._setFinalStep();\n }\n\n /** @hidden */\n private _setFinalStep(): void {\n const lastNonSummaryStep = this._getLastNonSummaryStep();\n if (lastNonSummaryStep) {\n if (this.steps.last.isSummary && !this.displaySummaryStep) {\n this.steps.last.removeFromDom();\n }\n if (lastNonSummaryStep.content) {\n lastNonSummaryStep.content.tallContent = true;\n }\n lastNonSummaryStep.setFinalStep(true);\n }\n }\n\n /** @hidden */\n private _showSummary(): void {\n this.steps.forEach((step) => {\n if (!step.isSummary) {\n step.completed = true;\n }\n });\n const summary = this.steps.find((step) => step.isSummary);\n if (summary) {\n summary.content.tallContent = true;\n this.contentTemplates = [summary.content.contentTemplate];\n }\n }\n\n /** @hidden */\n private _isCurrentStepSummary(): boolean {\n return this.steps.some((step) => step.status === CURRENT_STEP_STATUS && step.isSummary);\n }\n\n /** @hidden */\n private _getCurrentStep(): WizardStepComponent {\n return this.steps.filter(\n (step) => step.status === CURRENT_STEP_STATUS || step.status === ACTIVE_STEP_STATUS\n )[0];\n }\n\n /** @hidden */\n private _shrinkWhileAnyStepIsTooNarrow(): void {\n // Add small delay for elements to render appropriately.\n setTimeout(() => {\n this.stackedStepsLeft = [];\n this.stackedStepsRight = [];\n this.steps.first.stepIndicator?.setStackedItems(this.stackedStepsLeft);\n this._getLastNonSummaryStep().stepIndicator?.setStackedItems(this.stackedStepsRight);\n this._resetStepClasses();\n let i = 0;\n while (this._anyStepIsTooNarrow() && i < this.steps.length - 1) {\n i++;\n this._wizardShrinking();\n }\n }, 10);\n }\n\n /** @hidden */\n private _anyStepIsTooNarrow(): boolean {\n return this.steps.some((step) => step.getStepClientWidth() < STEP_MIN_WIDTH);\n }\n\n /** @hidden */\n private _stepClicked(clickedStep: WizardStepComponent): void {\n if (!clickedStep) {\n clickedStep = this.steps.first;\n }\n const clickedStepIndex = this.steps.toArray().indexOf(clickedStep);\n this.steps.forEach((step) => {\n if (step === clickedStep) {\n step.status = CURRENT_STEP_STATUS;\n step.statusChange.emit(CURRENT_STEP_STATUS);\n } else if (step !== clickedStep) {\n if (this.steps.toArray().indexOf(step) < clickedStepIndex) {\n step.status = COMPLETED_STEP_STATUS;\n step.statusChange.emit(COMPLETED_STEP_STATUS);\n } else if (this.steps.toArray().indexOf(step) > clickedStepIndex) {\n step.status = UPCOMING_STEP_STATUS;\n step.statusChange.emit(UPCOMING_STEP_STATUS);\n }\n }\n });\n setTimeout(() => {\n (document.activeElement as HTMLElement).blur(); // this function can focus step indicators undesirably\n });\n }\n\n /** @hidden */\n private _getLastNonSummaryStep(): WizardStepComponent {\n if (this.steps.last.isSummary && !this.displaySummaryStep) {\n return this.steps.toArray()[this.steps.length - 2];\n }\n\n return this.steps.last;\n }\n\n /** @hidden */\n scrollSpyChange($event: HTMLElement): void {\n if (!_fromScrollToCurrentStep) {\n this.steps.forEach((step) => {\n if (step._stepId.toString() === $event.children[0].children[0].id) {\n step.status = CURRENT_STEP_STATUS;\n } else if (step._stepId < parseInt($event.children[0].children[0].id, 10)) {\n step.status = COMPLETED_STEP_STATUS;\n } else {\n step.status = UPCOMING_STEP_STATUS;\n }\n });\n }\n this._shrinkWhileAnyStepIsTooNarrow();\n }\n}\n","<section class=\"fd-wizard\">\n <ng-content select=\"fd-wizard-navigation\"></ng-content>\n <div\n *ngIf=\"appendToWizard\"\n class=\"fd-wizard-container-wrapper\"\n #wrapperContainer\n fdScrollSpy\n cdkScrollable\n [trackedTags]=\"['div']\"\n (spyChange)=\"scrollSpyChange($event)\"\n >\n <div fd-scrollbar>\n <div *ngFor=\"let contentTemplate of contentTemplates\">\n <ng-container *ngTemplateOutlet=\"contentTemplate\"></ng-container>\n </div>\n </div>\n </div>\n <div *ngIf=\"!appendToWizard\" cdkScrollable class=\"fd-wizard-container-wrapper\">\n <div fd-scrollbar>\n <div *ngFor=\"let contentTemplate of contentTemplates\">\n <ng-container *ngTemplateOutlet=\"contentTemplate\"></ng-container>\n </div>\n </div>\n </div>\n <ng-content></ng-content>\n</section>\n","import { NgModule } from '@angular/core';\nimport { WizardContentComponent } from './wizard-content/wizard-content.component';\nimport { WizardNavigationComponent } from './wizard-navigation/wizard-navigation.component';\nimport { WizardNextStepComponent } from './wizard-next-step/wizard-next-step.component';\nimport { WizardProgressBarDirective } from './wizard-progress-bar/wizard-progress-bar.directive';\nimport { WizardStepIndicatorComponent } from './wizard-step-indicator/wizard-step-indicator.component';\nimport { WizardStepComponent } from './wizard-step/wizard-step.component';\nimport { WizardComponent } from './wizard.component';\nimport { WizardService } from './wizard.service';\n\nconst components = [\n WizardComponent,\n WizardNavigationComponent,\n WizardProgressBarDirective,\n WizardStepComponent,\n WizardStepIndicatorComponent,\n WizardContentComponent,\n WizardNextStepComponent\n];\n\n/**\n * @deprecated\n * Use direct imports of `WizardComponent`,\n `WizardNavigationComponent`,\n `WizardProgressBarDirective`,\n `WizardStepComponent`,\n `WizardStepIndicatorComponent`,\n `WizardContentComponent`,\n `WizardNextStepComponent`\n */\n@NgModule({\n imports: [...components],\n exports: [...components],\n providers: [WizardService]\n})\nexport class WizardModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"fundamental-ngx-core-wizard.mjs","sources":["../../../../libs/core/src/lib/wizard/wizard-next-step/wizard-next-step.component.ts","../../../../libs/core/src/lib/wizard/wizard-next-step/wizard-next-step.component.html","../../../../libs/core/src/lib/wizard/wizard-content/wizard-content.component.ts","../../../../libs/core/src/lib/wizard/wizard-content/wizard-content.component.html","../../../../libs/core/src/lib/wizard/wizard-injection-token.ts","../../../../libs/core/src/lib/wizard/wizard-navigation/wizard-navigation.component.ts","../../../../libs/core/src/lib/wizard/wizard-navigation/wizard-navigation.component.html","../../../../libs/core/src/lib/wizard/wizard-progress-bar/wizard-progress-bar.directive.ts","../../../../libs/core/src/lib/wizard/constants.ts","../../../../libs/core/src/lib/wizard/wizard-step-indicator/wizard-step-indicator.component.ts","../../../../libs/core/src/lib/wizard/wizard-step-indicator/wizard-step-indicator.component.html","../../../../libs/core/src/lib/wizard/wizard-step/wizard-step.component.ts","../../../../libs/core/src/lib/wizard/wizard-step/wizard-step.component.html","../../../../libs/core/src/lib/wizard/wizard.service.ts","../../../../libs/core/src/lib/wizard/wizard.component.ts","../../../../libs/core/src/lib/wizard/wizard.component.html","../../../../libs/core/src/lib/wizard/wizard.module.ts","../../../../libs/core/src/lib/wizard/fundamental-ngx-core-wizard.ts"],"sourcesContent":["import { ChangeDetectionStrategy, Component, ElementRef, Input } from '@angular/core';\n\n@Component({\n selector: 'fd-wizard-next-step',\n templateUrl: './wizard-next-step.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true\n})\nexport class WizardNextStepComponent {\n /**\n * Whether or not the next step button should float directly above the footer.\n */\n @Input()\n floating = false;\n\n /**\n * Whether or not element can be hidden when step status is completed.\n */\n @Input()\n set canHide(value: boolean) {\n this._canHide = value;\n\n if (!value) {\n this._showElement();\n }\n }\n\n get canHide(): boolean {\n return this._canHide;\n }\n\n /** @hidden */\n private _canHide = true;\n\n /** @hidden */\n constructor(private _elRef: ElementRef) {}\n\n /** @hidden */\n _getElRef(): ElementRef {\n return this._elRef;\n }\n\n /** @hidden */\n _showElement(): void {\n this._elRef.nativeElement.style.removeProperty('display');\n }\n\n /** @hidden */\n _hideElement(): void {\n this._elRef.nativeElement.style.display = 'none';\n }\n}\n","<div class=\"fd-wizard__next-step\" [class.fd-wizard__next-step--floating]=\"floating\">\n <ng-content></ng-content>\n</div>\n","import { ChangeDetectionStrategy, Component, ContentChild, Input, TemplateRef, ViewChild } from '@angular/core';\nimport { WizardNextStepComponent } from '../wizard-next-step/wizard-next-step.component';\nimport { WizardSize } from '../wizard-progress-bar/wizard-progress-bar.directive';\n\nexport type WizardContentBackground = 'solid' | 'list' | 'transparent';\n\n@Component({\n selector: 'fd-wizard-content',\n templateUrl: './wizard-content.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n styleUrls: ['./wizard-content.component.scss'],\n standalone: true\n})\nexport class WizardContentComponent {\n /**\n * The type of wizard background ('solid', 'list', or 'transparent').\n */\n @Input()\n contentBackground: WizardContentBackground;\n\n /**\n * Size (horizontal paddings) of the wizard content.\n */\n @Input()\n size: WizardSize;\n\n /** @hidden */\n @ViewChild('contentTemplate')\n contentTemplate: TemplateRef<any>;\n\n /** @hidden */\n @ContentChild(WizardNextStepComponent)\n nextStep: WizardNextStepComponent;\n\n /** @hidden */\n wizardContentId: string;\n\n /** @hidden */\n tallContent = false;\n}\n","<ng-template #contentTemplate>\n <section\n [id]=\"wizardContentId\"\n class=\"fd-wizard__content\"\n [class]=\"\n (contentBackground ? 'fd-wizard__content--' + contentBackground + ' ' : '') +\n (size ? 'fd-wizard__content--' + size : '')\n \"\n [class.fd-wizard-tall-content]=\"tallContent\"\n >\n <div class=\"fd-wizard__step-content-container\">\n <ng-content></ng-content>\n </div>\n </section>\n</ng-template>\n","import { InjectionToken } from '@angular/core';\n\nexport interface WizardComponentInterface {\n displaySummaryStep: boolean;\n ariaLabel: string;\n}\n\nexport const WIZARD = new InjectionToken<WizardComponentInterface>('Wizard component dependency');\n","import { ChangeDetectionStrategy, Component, Inject, Input, Optional } from '@angular/core';\nimport { Nullable } from '@fundamental-ngx/cdk/utils';\nimport { WIZARD, WizardComponentInterface } from '../wizard-injection-token';\n\n@Component({\n selector: 'fd-wizard-navigation',\n templateUrl: './wizard-navigation.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true\n})\nexport class WizardNavigationComponent {\n /** Aria label for the wizard navigation component element. */\n @Input()\n set ariaLabel(value: Nullable<string>) {\n this._ariaLabel = value;\n }\n get ariaLabel(): string | undefined {\n return this._ariaLabel ?? this._wizard?.ariaLabel;\n }\n\n /** @hidden */\n private _ariaLabel: Nullable<string>;\n\n /** @hidden */\n constructor(@Optional() @Inject(WIZARD) private _wizard?: WizardComponentInterface) {}\n}\n","<nav class=\"fd-wizard__navigation\" [attr.aria-label]=\"ariaLabel\">\n <ng-content></ng-content>\n</nav>\n","import { Directive, Input } from '@angular/core';\nimport { Nullable } from '@fundamental-ngx/cdk/utils';\n\nexport type WizardSize = 'sm' | 'md' | 'lg' | 'xl';\n\n@Directive({\n // eslint-disable-next-line @angular-eslint/directive-selector\n selector: '[fd-wizard-progress-bar]',\n host: {\n class: 'fd-wizard__progress-bar',\n '[class.fd-wizard__progress-bar--sm]': 'size === \"sm\"',\n '[class.fd-wizard__progress-bar--md]': 'size === \"md\"',\n '[class.fd-wizard__progress-bar--lg]': 'size === \"lg\"',\n '[class.fd-wizard__progress-bar--xl]': 'size === \"xl\"',\n '[style.display]': 'visible ? \"\" : \"none\"'\n },\n standalone: true\n})\nexport class WizardProgressBarDirective {\n /**\n * Size (horizontal paddings) of the wizard progress bar.\n */\n @Input()\n size: Nullable<WizardSize> = null;\n\n /** @hidden */\n visible = true;\n}\n","import { InjectionToken } from '@angular/core';\nimport { WizardStepIndicator } from './models/wizard-step';\n\nexport const ACTIVE_STEP_STATUS = 'active';\nexport const CURRENT_STEP_STATUS = 'current';\nexport const UPCOMING_STEP_STATUS = 'upcoming';\nexport const COMPLETED_STEP_STATUS = 'completed';\nexport const FD_WIZARD_STEP_INDICATOR = new InjectionToken<WizardStepIndicator>('FdWizardStepindicator');\n","import { NgFor, NgIf, NgTemplateOutlet } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n EventEmitter,\n Input,\n OnDestroy,\n Output,\n ViewChild\n} from '@angular/core';\nimport { Nullable } from '@fundamental-ngx/cdk/utils';\nimport {\n ActionSheetBodyComponent,\n ActionSheetComponent,\n ActionSheetControlComponent,\n ActionSheetItemComponent\n} from '@fundamental-ngx/core/action-sheet';\nimport { IconComponent } from '@fundamental-ngx/core/icon';\nimport { Subscription } from 'rxjs';\nimport { FD_WIZARD_STEP_INDICATOR } from '../constants';\nimport { WizardStepIndicator } from '../models/wizard-step';\nimport { WizardStepComponent } from '../wizard-step/wizard-step.component';\n\n@Component({\n selector: 'fd-wizard-step-indicator',\n templateUrl: './wizard-step-indicator.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: FD_WIZARD_STEP_INDICATOR,\n useExisting: WizardStepIndicatorComponent\n }\n ],\n standalone: true,\n imports: [\n NgIf,\n ActionSheetComponent,\n ActionSheetControlComponent,\n NgTemplateOutlet,\n ActionSheetBodyComponent,\n NgFor,\n ActionSheetItemComponent,\n IconComponent\n ]\n})\nexport class WizardStepIndicatorComponent implements WizardStepIndicator, OnDestroy {\n /**\n * The icon to use for this step.\n */\n @Input()\n glyph: Nullable<string>;\n\n /**\n * Event emitted when this step indicator is clicked.\n */\n @Output()\n stepIndicatorItemClicked = new EventEmitter<WizardStepComponent>();\n\n /** @hidden */\n @ViewChild(ActionSheetComponent)\n actionSheet: ActionSheetComponent;\n\n /** @hidden */\n stackedItems: WizardStepComponent[] = [];\n\n /** @hidden */\n private _subscriptions = new Subscription();\n\n /** @hidden */\n constructor(private _cdRef: ChangeDetectorRef) {}\n\n /** @hidden */\n ngOnDestroy(): void {\n this._subscriptions.unsubscribe();\n }\n\n /** @hidden */\n stepItemClicked(step?: WizardStepComponent, event?: MouseEvent): void {\n if (step && step.visited) {\n if (this.actionSheet) {\n this.actionSheet.close();\n }\n event?.preventDefault();\n this.stepIndicatorItemClicked.emit(step);\n }\n }\n\n /** @hidden */\n setStackedItems(items: WizardStepComponent[]): void {\n this.stackedItems = items || [];\n this._cdRef.detectChanges();\n }\n}\n","<ng-container *ngIf=\"stackedItems && stackedItems.length > 1\">\n <fd-action-sheet [style.pointer-events]=\"'all'\">\n <fd-action-sheet-control>\n <span class=\"fd-wizard__step-indicator\">\n <ng-container *ngTemplateOutlet=\"stepIndicatorContent\"></ng-container>\n </span>\n </fd-action-sheet-control>\n <fd-action-sheet-body>\n <li\n fd-action-sheet-item\n *ngFor=\"let step of stackedItems\"\n [label]=\"step.label\"\n [glyph]=\"step.glyph\"\n [disabled]=\"!step.visited\"\n (click)=\"stepItemClicked(step, $event)\"\n ></li>\n </fd-action-sheet-body>\n </fd-action-sheet>\n</ng-container>\n\n<ng-container *ngIf=\"!stackedItems || stackedItems.length <= 1\">\n <span\n class=\"fd-wizard__step-indicator\"\n (click)=\"stepItemClicked(stackedItems.length ? stackedItems[0] : undefined, $event)\"\n >\n <ng-container *ngTemplateOutlet=\"stepIndicatorContent\"></ng-container>\n </span>\n</ng-container>\n\n<ng-template #stepIndicatorContent>\n <fd-icon *ngIf=\"glyph\" [glyph]=\"glyph\" class=\"fd-wizard__icon\"></fd-icon>\n <ng-content></ng-content>\n</ng-template>\n","import { ENTER, SPACE } from '@angular/cdk/keycodes';\nimport {\n AfterViewInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ContentChild,\n ElementRef,\n EventEmitter,\n Inject,\n Input,\n OnChanges,\n OnDestroy,\n Optional,\n Output,\n SimpleChanges,\n ViewChild\n} from '@angular/core';\nimport { KeyUtil, Nullable } from '@fundamental-ngx/cdk/utils';\nimport { Subscription } from 'rxjs';\nimport { WizardContentComponent } from '../wizard-content/wizard-content.component';\n\nexport type WizardStepStatus = 'completed' | 'current' | 'upcoming' | 'active';\n\nimport { NgIf } from '@angular/common';\nimport { COMPLETED_STEP_STATUS, CURRENT_STEP_STATUS, FD_WIZARD_STEP_INDICATOR } from '../constants';\nimport { WizardStepIndicator } from '../models/wizard-step';\nimport { WIZARD, WizardComponentInterface } from '../wizard-injection-token';\n\n@Component({\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: '[fd-wizard-step]',\n host: {\n class: 'fd-wizard__step',\n '[class.fd-wizard__step--completed]': 'status === \"completed\" || completed',\n '[class.fd-wizard__step--current]': 'status === \"current\"',\n '[class.fd-wizard__step--upcoming]': 'status === \"upcoming\"',\n '[class.fd-wizard__step--active]': 'status === \"active\"',\n '[attr.aria-label]': 'ariaLabel'\n },\n templateUrl: './wizard-step.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n imports: [NgIf]\n})\nexport class WizardStepComponent implements OnChanges, AfterViewInit, OnDestroy {\n /**\n * The aria-label for the step container.\n */\n @Input()\n ariaLabel: Nullable<string>;\n\n /**\n * The aria-label for the step container.\n */\n @Input()\n ariaRoleDecription = 'Navigation';\n\n /**\n * The type of step ('completed', 'current', 'upcoming', and 'active'.)\n */\n @Input()\n status: WizardStepStatus;\n\n /**\n * Whether or not this is a 'branching' step.\n */\n @Input()\n branching = false;\n\n /**\n * The label text.\n */\n @Input()\n label: string;\n\n /** @hidden */\n glyph: string;\n\n /**\n * The smaller text for labeling the step as optional.\n */\n @Input()\n optionalText: string;\n\n /**\n * Whether or not this step is the summary page.\n */\n @Input()\n isSummary = false;\n\n /**\n * User-defined validation function which determines if user can navigate between steps.\n */\n @Input()\n stepClickValidator: (visited: boolean, completed: boolean) => boolean | Promise<boolean>;\n\n /**\n * Event emitted when the wizard step's status changes.\n */\n @Output()\n statusChange = new EventEmitter<WizardStepStatus>();\n\n /**\n * Event emitted when a step is clicked.\n */\n @Output()\n stepClicked = new EventEmitter<WizardStepComponent>();\n\n /**\n * Event emitted when a step indicator is clicked.\n */\n @Output()\n stepIndicatorItemClicked = new EventEmitter<WizardStepComponent>();\n\n /** @hidden */\n @ContentChild(WizardContentComponent)\n content: WizardContentComponent;\n\n /** @hidden */\n @ContentChild(FD_WIZARD_STEP_INDICATOR)\n stepIndicator: WizardStepIndicator<WizardStepComponent>;\n\n /** The wizard label span element. */\n @ViewChild('wizardLabel', { read: ElementRef })\n wizardLabel: ElementRef;\n\n /** @hidden */\n @ViewChild('progressBarLink', { read: ElementRef })\n progressBarLink: ElementRef;\n\n /** @hidden */\n visited = false;\n\n /** @hidden */\n completed = false;\n\n /** @hidden */\n private _subscriptions: Subscription = new Subscription();\n\n /** @hidden */\n _stepId: number;\n\n /** @hidden */\n _finalStep = false;\n\n /** @hidden */\n constructor(\n private _elRef: ElementRef,\n private _cdRef: ChangeDetectorRef,\n @Optional() @Inject(WIZARD) private _wizard: WizardComponentInterface\n ) {}\n\n /** @hidden */\n ngOnChanges(changes: SimpleChanges): void {\n if (changes && changes.status) {\n if (\n changes.status.previousValue === CURRENT_STEP_STATUS &&\n changes.status.currentValue === COMPLETED_STEP_STATUS\n ) {\n this.completed = true;\n }\n this.statusChange.emit(this.status);\n }\n }\n\n /** @hidden */\n ngAfterViewInit(): void {\n if (this.isSummary && !this._wizard?.displaySummaryStep) {\n this._summaryInit();\n } else if (this.stepIndicator) {\n this._notSummaryInit();\n }\n }\n\n /** @hidden */\n ngOnDestroy(): void {\n this._subscriptions.unsubscribe();\n }\n\n /** @hidden */\n setFinalStep(val: boolean): void {\n this._finalStep = val;\n this._cdRef.detectChanges();\n }\n\n /** @hidden */\n async stepContainerKeypress(event?: KeyboardEvent): Promise<void> {\n if (event) {\n event.preventDefault();\n }\n\n if (\n this.visited &&\n (!event || KeyUtil.isKeyCode(event, [SPACE, ENTER])) &&\n (!this.stepIndicator || !this.stepIndicator.stackedItems || !this.stepIndicator.stackedItems.length) &&\n (this.stepClickValidator === undefined ||\n (await this.stepClickValidator(this.visited, this.completed)) === true)\n ) {\n this.stepClicked.emit(this);\n }\n }\n\n /** @hidden */\n getClassList(): DOMTokenList {\n return this._elRef.nativeElement.classList;\n }\n\n /** @hidden */\n hasLabel(label: string): boolean {\n return this._elRef.nativeElement.classList.contains(label);\n }\n\n /** @hidden */\n getStepClientWidth(): number {\n return this._elRef.nativeElement.clientWidth;\n }\n\n /** @hidden */\n removeFromDom(): void {\n if (this._elRef.nativeElement.parentNode) {\n this._elRef.nativeElement.parentNode.removeChild(this._elRef.nativeElement);\n }\n }\n\n /** @hidden */\n _summaryInit(): void {\n this._elRef.nativeElement.style.display = 'none';\n this.content.tallContent = true;\n }\n\n /** @hidden */\n _notSummaryInit(): void {\n this._subscriptions.add(\n this.stepIndicator.stepIndicatorItemClicked.subscribe((step) => {\n this.stepIndicatorItemClicked.emit(step);\n })\n );\n if (this.stepIndicator.glyph) {\n this.glyph = this.stepIndicator.glyph;\n }\n }\n}\n","<div class=\"fd-wizard__step-wrapper\">\n <a\n *ngIf=\"label || optionalText\"\n #progressBarLink\n class=\"fd-wizard__step-container\"\n (click)=\"stepContainerKeypress()\"\n (keypress)=\"stepContainerKeypress($event)\"\n [style.cursor]=\"visited ? 'pointer' : 'auto'\"\n [style.pointer-events]=\"visited ? 'auto' : 'none'\"\n [attr.tabindex]=\"status === 'current' ? 0 : -1\"\n [attr.aria-roledescription]=\"ariaRoleDecription\"\n >\n <ng-content select=\"fd-wizard-step-indicator\"></ng-content>\n <div class=\"fd-wizard__label-container\" [class.fd-wizard__label-container--optional]=\"optionalText\">\n <div #wizardLabel>\n <span class=\"fd-wizard__label\">{{ label }}</span>\n <span *ngIf=\"optionalText\" class=\"fd-wizard__optional-text\">\n {{ optionalText }}\n </span>\n </div>\n </div>\n </a>\n\n <ng-content></ng-content>\n\n <span\n *ngIf=\"!_finalStep || branching\"\n class=\"fd-wizard__connector\"\n [class.fd-wizard__connector--active]=\"completed\"\n [class.fd-wizard__connector--branching]=\"branching\"\n >\n </span>\n</div>\n","import { LEFT_ARROW, RIGHT_ARROW } from '@angular/cdk/keycodes';\nimport { Injectable, Optional, QueryList } from '@angular/core';\nimport { WizardStepComponent } from './wizard-step/wizard-step.component';\nimport { KeyUtil, RtlService } from '@fundamental-ngx/cdk/utils';\nimport { COMPLETED_STEP_STATUS, CURRENT_STEP_STATUS } from './constants';\n\n@Injectable()\nexport class WizardService {\n /** @hidden */\n constructor(@Optional() private _rtlService: RtlService) {}\n\n /** @hidden */\n progressBarKeyHandler(event: any, steps: QueryList<WizardStepComponent>, index: number): void {\n const rtlDirection: boolean = this._rtlService && this._rtlService.rtl.getValue();\n if (KeyUtil.isKeyCode(event, LEFT_ARROW)) {\n if (\n steps.get(index - 1)?.status === COMPLETED_STEP_STATUS ||\n steps.get(index - 1)?.status === CURRENT_STEP_STATUS\n ) {\n if (!rtlDirection) {\n this._focusPrevious(index, steps);\n } else {\n this._focusNext(index, steps);\n }\n }\n } else if (KeyUtil.isKeyCode(event, RIGHT_ARROW)) {\n if (steps.get(index)?.status === COMPLETED_STEP_STATUS) {\n if (!rtlDirection) {\n this._focusNext(index, steps);\n } else {\n this._focusPrevious(index, steps);\n }\n }\n }\n }\n\n /** @hidden */\n private _focusNext(index: number, steps: QueryList<WizardStepComponent>): void {\n if (index + 1 < steps.length) {\n steps.get(index + 1)?.progressBarLink.nativeElement.focus();\n } else {\n steps.get(0)?.progressBarLink.nativeElement.focus();\n }\n }\n\n /** @hidden */\n private _focusPrevious(index: number, steps: QueryList<WizardStepComponent>): void {\n if (index - 1 >= 0) {\n steps.get(index - 1)?.progressBarLink.nativeElement.focus();\n } else {\n steps.get(steps.length - 1)?.progressBarLink.nativeElement.focus();\n }\n }\n}\n","import { CdkScrollable } from '@angular/cdk/scrolling';\nimport { NgFor, NgIf, NgTemplateOutlet } from '@angular/common';\nimport {\n AfterViewInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ContentChild,\n ContentChildren,\n ElementRef,\n HostBinding,\n HostListener,\n Inject,\n Input,\n OnDestroy,\n Optional,\n QueryList,\n TemplateRef,\n ViewChild,\n ViewEncapsulation,\n inject\n} from '@angular/core';\nimport { Nullable, TabbableElementService, scrollTop } from '@fundamental-ngx/cdk/utils';\nimport { DialogBodyComponent, FD_DIALOG_BODY_COMPONENT } from '@fundamental-ngx/core/dialog';\nimport { ScrollSpyDirective } from '@fundamental-ngx/core/scroll-spy';\nimport { ScrollbarDirective } from '@fundamental-ngx/core/scrollbar';\nimport { resolveTranslationSignal } from '@fundamental-ngx/i18n';\nimport { Subscription } from 'rxjs';\nimport { ACTIVE_STEP_STATUS, COMPLETED_STEP_STATUS, CURRENT_STEP_STATUS, UPCOMING_STEP_STATUS } from './constants';\nimport { WizardContentComponent } from './wizard-content/wizard-content.component';\nimport { WIZARD } from './wizard-injection-token';\nimport { WizardProgressBarDirective } from './wizard-progress-bar/wizard-progress-bar.directive';\nimport { WizardStepComponent } from './wizard-step/wizard-step.component';\nimport { WizardService } from './wizard.service';\n\nexport const STEP_MIN_WIDTH = 168;\nexport const STEP_STACKED_TOP_CLASS = 'fd-wizard__step--stacked-top';\nexport const STEP_STACKED_CLASS = 'fd-wizard__step--stacked';\nexport const STEP_NO_LABEL_CLASS = 'fd-wizard__step--no-label';\n\nexport const WIZARD_NAVIGATION_CLASS = 'fd-wizard__navigation';\nexport const WIZARD_CONTENT_CLASS = 'fd-wizard__content';\nexport const WIZARD_CONTAINER_WRAPPER_CLASS = 'fd-wizard-container-wrapper';\nexport const WIZARD_TALL_CONTENT_CLASS = 'fd-wizard-tall-content';\nexport const SHELLBAR_CLASS = 'fd-shellbar';\nexport const BAR_FOOTER_CLASS = 'fd-bar--footer';\nexport const BAR_FLOATING_FOOTER_CLASS = 'fd-bar--floating-footer';\n\nexport let _fromScrollToCurrentStep;\nexport let timer: any = null;\nexport const handleTimeoutReference = (): void => {\n if (timer !== null) {\n clearTimeout(timer);\n }\n timer = setTimeout(() => {\n _fromScrollToCurrentStep = false;\n }, 150);\n};\n\n@Component({\n selector: 'fd-wizard',\n templateUrl: './wizard.component.html',\n styleUrls: ['./wizard.component.scss'],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n WizardService,\n {\n provide: WIZARD,\n useExisting: WizardComponent\n }\n ],\n host: {\n role: 'region',\n '[attr.aria-label]': 'ariaLabel || _defaultAriaLabel()'\n },\n standalone: true,\n imports: [NgIf, ScrollSpyDirective, CdkScrollable, ScrollbarDirective, NgFor, NgTemplateOutlet]\n})\nexport class WizardComponent implements AfterViewInit, OnDestroy {\n /**\n * Whether or not to append the step to the wizard. If false, each step will be displayed on a different page.\n * Default is true.\n */\n @Input()\n appendToWizard = true;\n\n /**\n * Custom height to use for the wizard's content pane. By default, this value is calc(100vh - 144px), where 144px\n * is the combined height of the shellbar, wizard header and wizard footer.\n */\n @Input()\n contentHeight: Nullable<string | null>;\n\n /**\n * Whether or not apply responsive paddings styling.\n */\n @Input()\n @HostBinding('class.fd-wizard--responsive-paddings')\n responsivePaddings = false;\n\n /** Whether to display a summary step. */\n @Input()\n displaySummaryStep = false;\n\n /**\n * adding aria label to the component\n * If not provided, is being translated by i18n package\n */\n @Input()\n ariaLabel: string;\n\n /** @hidden */\n @ContentChildren(WizardStepComponent, { descendants: true })\n steps: QueryList<WizardStepComponent>;\n\n /** @hidden */\n @ContentChild(WizardProgressBarDirective)\n progressBar: WizardProgressBarDirective;\n\n /** @hidden */\n @ContentChildren(WizardContentComponent)\n wizardContent: WizardContentComponent;\n\n /** @hidden */\n @ViewChild('wrapperContainer')\n wrapperContainer: ElementRef<HTMLElement>;\n\n /** @hidden */\n @ViewChild(ScrollbarDirective)\n scrollbar: ScrollbarDirective;\n\n /** @hidden */\n contentTemplates: TemplateRef<any>[] = [];\n\n /** @hidden */\n stackedStepsLeft: WizardStepComponent[] = [];\n\n /** @hidden */\n stackedStepsRight: WizardStepComponent[] = [];\n\n /** @hidden */\n protected _defaultAriaLabel = resolveTranslationSignal('coreWizard.ariaLabel');\n\n /** @hidden */\n private _stepEventSubscriptions: Subscription = new Subscription();\n\n /** @hidden */\n private _subscriptions: Subscription = new Subscription();\n\n /** @hidden */\n private _previousWidth: number;\n\n /** @hidden */\n private readonly _tabbableService = inject(TabbableElementService);\n\n /** @hidden */\n constructor(\n private _elRef: ElementRef,\n private readonly _cdRef: ChangeDetectorRef,\n @Optional() @Inject(FD_DIALOG_BODY_COMPONENT) private _dialogBodyComponent: DialogBodyComponent\n ) {}\n\n /** @hidden */\n @HostListener('window:resize')\n resizeHandler(): void {\n const wizardWidth = this._elRef.nativeElement.getBoundingClientRect().width;\n if (!this._previousWidth || wizardWidth <= this._previousWidth) {\n this._wizardShrinking();\n } else if (wizardWidth > this._previousWidth) {\n this._shrinkWhileAnyStepIsTooNarrow();\n }\n this._previousWidth = wizardWidth;\n if (this.contentHeight) {\n this._elRef.nativeElement.querySelector('.' + WIZARD_CONTAINER_WRAPPER_CLASS).style.height =\n this.contentHeight;\n } else {\n this._setContainerAndTallContentHeight();\n }\n }\n\n /** @hidden */\n ngAfterViewInit(): void {\n setTimeout(() => {\n if (this._subscriptions.closed) {\n return;\n }\n\n // fixes ExpressionChangedAfterItHasBeenCheckedError\n this._setContentTemplates();\n this._subscriptions.add(\n this.steps.changes.subscribe(() => {\n this._handleStepOrStatusChanges();\n this._setupStepEvents();\n })\n );\n this._setupStepEvents();\n this._cdRef.detectChanges();\n this._handleStepOrStatusChanges();\n this.resizeHandler();\n });\n }\n\n /** @hidden */\n ngOnDestroy(): void {\n this._stepEventSubscriptions.unsubscribe();\n this._subscriptions.unsubscribe();\n this.wrapperContainer?.nativeElement.removeEventListener('scroll', handleTimeoutReference);\n }\n\n /** @hidden */\n scrollSpyChange($event: HTMLElement): void {\n if (!_fromScrollToCurrentStep) {\n this.steps.forEach((step) => {\n if (step._stepId.toString() === $event.children[0].children[0].id) {\n step.status = CURRENT_STEP_STATUS;\n } else if (step._stepId < parseInt($event.children[0].children[0].id, 10)) {\n step.status = COMPLETED_STEP_STATUS;\n } else {\n step.status = UPCOMING_STEP_STATUS;\n }\n });\n }\n this._shrinkWhileAnyStepIsTooNarrow();\n }\n\n /**\n * @hidden\n * @private\n * This function determines the height of the wizard content by looking for the document's shellbar, the wizard\n * navigation and the wizard footer, and calculating the height based on their presence.\n */\n private _calculateContentHeight(): number {\n let wizardNavHeight = 0;\n const shellbarHeight = this._getShellbarHeight();\n if (!this._isCurrentStepSummary() || this.displaySummaryStep) {\n wizardNavHeight = this._getWizardNavHeight();\n }\n const wizardFooterHeight = this._getWizardFooterHeight();\n const dialogOffset = this._getDialogOffset();\n\n return shellbarHeight + wizardNavHeight + wizardFooterHeight + dialogOffset;\n }\n\n /** @hidden */\n private _getShellbarHeight(): number {\n return document.querySelector<HTMLElement>('.' + SHELLBAR_CLASS)?.clientHeight ?? 0;\n }\n\n /** @hidden */\n private _getWizardNavHeight(): number {\n const wizard = this._elRef.nativeElement;\n let retVal;\n if (wizard.querySelector('.' + WIZARD_NAVIGATION_CLASS)) {\n retVal = wizard.querySelector('.' + WIZARD_NAVIGATION_CLASS).clientHeight;\n } else {\n retVal = 0;\n }\n return retVal;\n }\n\n /** @hidden */\n private _getWizardFooterHeight(): number {\n const wizard = this._elRef.nativeElement;\n let retVal;\n if (wizard.querySelector('.' + BAR_FOOTER_CLASS)) {\n retVal = wizard.querySelector('.' + BAR_FOOTER_CLASS).offsetHeight;\n } else if (wizard.querySelector('.' + BAR_FLOATING_FOOTER_CLASS)) {\n retVal = wizard.querySelector('.' + BAR_FLOATING_FOOTER_CLASS).offsetHeight;\n } else {\n retVal = 0;\n }\n return retVal;\n }\n\n /** @hidden */\n private _getDialogOffset(): number {\n let retVal = 0;\n if (this._dialogBodyComponent) {\n const dialogBody = this._dialogBodyComponent.elementRef.nativeElement;\n if (dialogBody.tagName.toLowerCase() === 'fd-dialog-body') {\n this._dialogBodyComponent.dialogConfig.verticalPadding = false;\n const dialogBodyTitle = dialogBody.querySelector('.fd-title--h2');\n if (dialogBodyTitle) {\n retVal = dialogBodyTitle.offsetHeight;\n }\n retVal = retVal + window.innerHeight - dialogBody.offsetHeight;\n }\n }\n\n return retVal;\n }\n\n /** @hidden */\n private _setContainerAndTallContentHeight(): void {\n const wizard = this._elRef.nativeElement;\n const combinedHeight = this.contentHeight ? this.contentHeight : this._calculateContentHeight();\n if (wizard.querySelector('.' + WIZARD_CONTAINER_WRAPPER_CLASS)) {\n wizard.querySelector('.' + WIZARD_CONTAINER_WRAPPER_CLASS).style.height =\n 'calc(100vh - ' + combinedHeight + 'px)';\n }\n wizard.querySelectorAll('.' + WIZARD_CONTENT_CLASS).forEach((node) => {\n node.style.height = 'auto';\n });\n if (wizard.querySelector('.' + WIZARD_TALL_CONTENT_CLASS)) {\n if (\n wizard.querySelector('.' + WIZARD_TALL_CONTENT_CLASS).offsetHeight <\n wizard.querySelector('.' + WIZARD_CONTAINER_WRAPPER_CLASS).offsetHeight\n ) {\n wizard.querySelector('.' + WIZARD_TALL_CONTENT_CLASS).style.height =\n 'calc(100vh - ' + combinedHeight + 'px)';\n } else {\n wizard.querySelector('.' + WIZARD_TALL_CONTENT_CLASS).style.paddingBottom = '24px';\n }\n }\n }\n\n /** @hidden */\n private _setupStepEvents(): void {\n this._stepEventSubscriptions.unsubscribe();\n this._stepEventSubscriptions = new Subscription();\n this.steps.forEach((step) => {\n this._stepEventSubscriptions.add(\n step.stepClicked.subscribe((event) => {\n this._stepClicked(event);\n })\n );\n this._stepEventSubscriptions.add(\n step.statusChange.subscribe(() => {\n this._handleStepOrStatusChanges();\n })\n );\n this._stepEventSubscriptions.add(\n step.stepIndicatorItemClicked.subscribe((event) => {\n this._stepClicked(event);\n })\n );\n // need to call wizardShrinking for each step < 168px on first load\n if (step.wizardLabel && step.getStepClientWidth() < STEP_MIN_WIDTH) {\n this._wizardShrinking();\n }\n });\n }\n\n /** @hidden */\n private _wizardShrinking(): void {\n const currentStep = this._getCurrentStep();\n if (\n currentStep &&\n (!currentStep.isSummary || this.displaySummaryStep) &&\n currentStep.wizardLabel &&\n currentStep.getStepClientWidth() < STEP_MIN_WIDTH\n ) {\n this._hideSomeStep(currentStep);\n this._setStackedTop();\n }\n }\n\n /** @hidden */\n private _setContentTemplates(): void {\n const templatesLength = this.contentTemplates.length;\n this.contentTemplates = [];\n let _stepId = 0;\n const steps = this.steps.toArray();\n for (const step of steps) {\n if (step.content) {\n if (!step.isSummary || this.displaySummaryStep) {\n step.content.tallContent = false;\n }\n step.content.wizardContentId = _stepId.toString();\n }\n step._stepId = _stepId;\n _stepId++;\n step.setFinalStep(false);\n /*\n If the step is completed and appendToWizard is true, hide the nextStep button, unless it's the last step,\n or if there's a summary and it is the second to last step\n */\n if (\n step.completed &&\n this.appendToWizard &&\n step.content?.nextStep?.canHide &&\n step !== this._getLastNonSummaryStep()\n ) {\n step.content.nextStep._hideElement();\n } else if (\n step.content?.nextStep &&\n ((step.completed && this.appendToWizard) ||\n (step.visited && step.branching && step.status === CURRENT_STEP_STATUS))\n ) {\n step.content.nextStep._showElement();\n }\n if (\n step.visited ||\n ((step.status === CURRENT_STEP_STATUS || step.status === COMPLETED_STEP_STATUS) && step.content)\n ) {\n step.visited = true;\n if (step.status === CURRENT_STEP_STATUS && (!step.completed || !this.appendToWizard)) {\n step.content.tallContent = true;\n }\n\n const isCurrentStep = !this.appendToWizard && step.status === CURRENT_STEP_STATUS;\n\n if (!templatesLength || isCurrentStep) {\n this.contentTemplates = [step.content.contentTemplate];\n\n // If we found needed step, break the cycle, since it might set wrong step later.\n if (isCurrentStep) {\n break;\n }\n } else if (this.appendToWizard && (!step.isSummary || this.displaySummaryStep)) {\n this.contentTemplates.push(step.content.contentTemplate);\n }\n }\n }\n\n const lastVisibleTemplate = steps[this.contentTemplates.length - 1];\n if (lastVisibleTemplate && lastVisibleTemplate.content) {\n lastVisibleTemplate.content.tallContent = true;\n }\n this._setFinalStep();\n }\n\n /** @hidden */\n private _scrollToCurrentStep(): void {\n if (this.appendToWizard) {\n _fromScrollToCurrentStep = true;\n this.steps.forEach((step, index) => {\n if (step.status === CURRENT_STEP_STATUS && (!step.isSummary || this.displaySummaryStep)) {\n const child = this.wrapperContainer.nativeElement.children[0].children[index] as HTMLElement;\n const wizardNavigationHeight = this._elRef.nativeElement.querySelector(\n '.' + WIZARD_NAVIGATION_CLASS\n ).clientHeight;\n\n scrollTop(this.wrapperContainer.nativeElement, child.offsetTop - wizardNavigationHeight);\n\n if (index === 0) {\n this._focusFirstTabbableElement(index);\n } else {\n // setTimeout needed to allow for smooth scroll animation\n setTimeout(() => {\n this._focusFirstTabbableElement(index);\n }, 500);\n }\n }\n });\n this._setUpScrollListener();\n }\n }\n\n /** @hidden */\n private _focusFirstTabbableElement(index = 0): void {\n const contentContainer = this._elRef.nativeElement.querySelectorAll('.fd-wizard__content')[index];\n this._tabbableService.getTabbableElement(contentContainer)?.focus();\n }\n\n /** @hidden */\n private _setUpScrollListener(): void {\n this.wrapperContainer?.nativeElement.addEventListener('scroll', handleTimeoutReference, false);\n }\n\n /** @hidden */\n private _hideSomeStep(currentStep: WizardStepComponent): void {\n // If a small step was found, get the step with a visible label furthest away from the current step and hide the label\n let stepsArray = this.steps.toArray();\n stepsArray = stepsArray.filter((step) => !step.hasLabel(STEP_NO_LABEL_CLASS));\n if (this.steps.last.isSummary && !this.displaySummaryStep) {\n stepsArray.pop();\n }\n if (stepsArray.length > 1) {\n let currentStepIndex = 0,\n stepToHide;\n if (currentStep) {\n currentStepIndex = stepsArray.indexOf(currentStep);\n }\n currentStepIndex > (stepsArray.length - 1) / 2\n ? (stepToHide = stepsArray[0])\n : (stepToHide = stepsArray[stepsArray.length - 1]);\n stepToHide.getClassList().add(STEP_NO_LABEL_CLASS);\n stepToHide.getClassList().add(STEP_STACKED_CLASS);\n if (stepsArray.indexOf(stepToHide) < currentStepIndex && !this.stackedStepsLeft.includes(stepToHide)) {\n this.stackedStepsLeft.splice(this.steps.toArray().indexOf(stepToHide), 0, stepToHide);\n } else if (\n stepsArray.indexOf(stepToHide) > currentStepIndex &&\n !this.stackedStepsRight.includes(stepToHide)\n ) {\n this.stackedStepsRight.unshift(stepToHide);\n }\n this._cdRef.detectChanges();\n }\n }\n\n /** @hidden */\n private _setStackedTop(): void {\n const currentStep = this._getCurrentStep();\n this.steps.forEach((step, index) => {\n if (step.stepIndicator) {\n step.getClassList().remove(STEP_STACKED_TOP_CLASS);\n if (this.steps.toArray()[index + 1] === currentStep) {\n if (this.steps.length > 1) {\n step.getClassList().add(STEP_STACKED_TOP_CLASS);\n if (!this.stackedStepsLeft.includes(step) && this.stackedStepsLeft.length >= 1) {\n this.stackedStepsLeft.splice(index, 0, step);\n }\n }\n step.stepIndicator.setStackedItems(this.stackedStepsLeft);\n } else {\n step.stepIndicator.stackedItems = [];\n }\n }\n });\n this._getLastNonSummaryStep().stepIndicator?.setStackedItems(this.stackedStepsRight);\n }\n\n /** @hidden */\n private _resetStepClasses(): void {\n this.steps.forEach((step) => {\n step.getClassList().remove(STEP_STACKED_TOP_CLASS);\n step.getClassList().remove(STEP_STACKED_CLASS);\n step.getClassList().remove(STEP_NO_LABEL_CLASS);\n });\n }\n\n /** @hidden */\n private _handleStepOrStatusChanges(): void {\n if (this._isCurrentStepSummary() && !this.displaySummaryStep) {\n setTimeout(() => {\n this.progressBar.visible = false;\n });\n this._showSummary();\n } else {\n this.progressBar.visible = true;\n this._setContentTemplates();\n this._shrinkWhileAnyStepIsTooNarrow();\n }\n if (!this.appendToWizard) {\n this._focusFirstTabbableElement();\n }\n setTimeout(() => {\n this._cdRef.detectChanges();\n this.resizeHandler();\n if (!this._isCurrentStepSummary() || this.displaySummaryStep) {\n this._scrollToCurrentStep();\n }\n });\n this._setFinalStep();\n }\n\n /** @hidden */\n private _setFinalStep(): void {\n const lastNonSummaryStep = this._getLastNonSummaryStep();\n if (lastNonSummaryStep) {\n if (this.steps.last.isSummary && !this.displaySummaryStep) {\n this.steps.last.removeFromDom();\n }\n if (lastNonSummaryStep.content) {\n lastNonSummaryStep.content.tallContent = true;\n }\n lastNonSummaryStep.setFinalStep(true);\n }\n }\n\n /** @hidden */\n private _showSummary(): void {\n this.steps.forEach((step) => {\n if (!step.isSummary) {\n step.completed = true;\n }\n });\n const summary = this.steps.find((step) => step.isSummary);\n if (summary) {\n summary.content.tallContent = true;\n this.contentTemplates = [summary.content.contentTemplate];\n }\n }\n\n /** @hidden */\n private _isCurrentStepSummary(): boolean {\n return this.steps.some((step) => step.status === CURRENT_STEP_STATUS && step.isSummary);\n }\n\n /** @hidden */\n private _getCurrentStep(): WizardStepComponent {\n return this.steps.filter(\n (step) => step.status === CURRENT_STEP_STATUS || step.status === ACTIVE_STEP_STATUS\n )[0];\n }\n\n /** @hidden */\n private _shrinkWhileAnyStepIsTooNarrow(): void {\n // Add small delay for elements to render appropriately.\n setTimeout(() => {\n this.stackedStepsLeft = [];\n this.stackedStepsRight = [];\n this.steps.first.stepIndicator?.setStackedItems(this.stackedStepsLeft);\n this._getLastNonSummaryStep().stepIndicator?.setStackedItems(this.stackedStepsRight);\n this._resetStepClasses();\n let i = 0;\n while (this._anyStepIsTooNarrow() && i < this.steps.length - 1) {\n i++;\n this._wizardShrinking();\n }\n }, 10);\n }\n\n /** @hidden */\n private _anyStepIsTooNarrow(): boolean {\n return this.steps.some((step) => step.getStepClientWidth() < STEP_MIN_WIDTH);\n }\n\n /** @hidden */\n private _stepClicked(clickedStep: WizardStepComponent): void {\n if (!clickedStep) {\n clickedStep = this.steps.first;\n }\n const clickedStepIndex = this.steps.toArray().indexOf(clickedStep);\n this.steps.forEach((step) => {\n if (step === clickedStep) {\n step.status = CURRENT_STEP_STATUS;\n step.statusChange.emit(CURRENT_STEP_STATUS);\n } else if (step !== clickedStep) {\n if (this.steps.toArray().indexOf(step) < clickedStepIndex) {\n step.status = COMPLETED_STEP_STATUS;\n step.statusChange.emit(COMPLETED_STEP_STATUS);\n } else if (this.steps.toArray().indexOf(step) > clickedStepIndex) {\n step.status = UPCOMING_STEP_STATUS;\n step.statusChange.emit(UPCOMING_STEP_STATUS);\n }\n }\n });\n setTimeout(() => {\n (document.activeElement as HTMLElement).blur(); // this function can focus step indicators undesirably\n });\n }\n\n /** @hidden */\n private _getLastNonSummaryStep(): WizardStepComponent {\n if (this.steps.last.isSummary && !this.displaySummaryStep) {\n return this.steps.toArray()[this.steps.length - 2];\n }\n\n return this.steps.last;\n }\n}\n","<section class=\"fd-wizard\">\n <ng-content select=\"fd-wizard-navigation\"></ng-content>\n <div\n *ngIf=\"appendToWizard\"\n class=\"fd-wizard-container-wrapper\"\n #wrapperContainer\n fdScrollSpy\n cdkScrollable\n [trackedTags]=\"['div']\"\n (spyChange)=\"scrollSpyChange($event)\"\n >\n <div fd-scrollbar>\n <div *ngFor=\"let contentTemplate of contentTemplates\">\n <ng-container *ngTemplateOutlet=\"contentTemplate\"></ng-container>\n </div>\n </div>\n </div>\n <div *ngIf=\"!appendToWizard\" cdkScrollable class=\"fd-wizard-container-wrapper\">\n <div fd-scrollbar>\n <div *ngFor=\"let contentTemplate of contentTemplates\">\n <ng-container *ngTemplateOutlet=\"contentTemplate\"></ng-container>\n </div>\n </div>\n </div>\n <ng-content></ng-content>\n</section>\n","import { NgModule } from '@angular/core';\nimport { WizardContentComponent } from './wizard-content/wizard-content.component';\nimport { WizardNavigationComponent } from './wizard-navigation/wizard-navigation.component';\nimport { WizardNextStepComponent } from './wizard-next-step/wizard-next-step.component';\nimport { WizardProgressBarDirective } from './wizard-progress-bar/wizard-progress-bar.directive';\nimport { WizardStepIndicatorComponent } from './wizard-step-indicator/wizard-step-indicator.component';\nimport { WizardStepComponent } from './wizard-step/wizard-step.component';\nimport { WizardComponent } from './wizard.component';\nimport { WizardService } from './wizard.service';\n\nconst components = [\n WizardComponent,\n WizardNavigationComponent,\n WizardProgressBarDirective,\n WizardStepComponent,\n WizardStepIndicatorComponent,\n WizardContentComponent,\n WizardNextStepComponent\n];\n\n/**\n * @deprecated\n * Use direct imports of `WizardComponent`,\n `WizardNavigationComponent`,\n `WizardProgressBarDirective`,\n `WizardStepComponent`,\n `WizardStepIndicatorComponent`,\n `WizardContentComponent`,\n `WizardNextStepComponent`\n */\n@NgModule({\n imports: [...components],\n exports: [...components],\n providers: [WizardService]\n})\nexport class WizardModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fundamental-ngx/core",
3
- "version": "0.46.1-rc.5",
3
+ "version": "0.46.2-rc.0",
4
4
  "schematics": "./schematics/collection.json",
5
5
  "ng-update": {
6
6
  "migrations": "./schematics/migrations.json"
@@ -23,8 +23,8 @@
23
23
  "@angular/forms": "^16.2.0",
24
24
  "@angular/platform-browser": "^16.2.0",
25
25
  "@angular/router": "^16.2.0",
26
- "@fundamental-ngx/cdk": "0.46.1-rc.5",
27
- "@fundamental-ngx/i18n": "0.46.1-rc.5",
26
+ "@fundamental-ngx/cdk": "0.46.2-rc.0",
27
+ "@fundamental-ngx/i18n": "0.46.2-rc.0",
28
28
  "@sap-theming/theming-base-content": "^11.7.0",
29
29
  "fundamental-styles": "0.30.2",
30
30
  "rxjs": "^7.8.0"
@@ -54,21 +54,21 @@ function addExternalLibraries(options) {
54
54
  });
55
55
  }
56
56
  if (!(0, package_utils_1.hasPackage)(tree, '@fundamental-ngx/i18n') ||
57
- (0, package_utils_1.checkPackageVersion)(tree, '@fundamental-ngx/i18n', '0.46.1-rc.5', '<')) {
57
+ (0, package_utils_1.checkPackageVersion)(tree, '@fundamental-ngx/i18n', '0.46.2-rc.0', '<')) {
58
58
  dependencies.push({
59
59
  type: dependencies_1.NodeDependencyType.Default,
60
60
  // Will be replaced with the real version during sync-version script run
61
- version: `0.46.1-rc.5`,
61
+ version: `0.46.2-rc.0`,
62
62
  name: '@fundamental-ngx/i18n',
63
63
  overwrite: true
64
64
  });
65
65
  }
66
66
  if (!(0, package_utils_1.hasPackage)(tree, '@fundamental-ngx/cdk') ||
67
- (0, package_utils_1.checkPackageVersion)(tree, '@fundamental-ngx/cdk', '0.46.1-rc.5', '<')) {
67
+ (0, package_utils_1.checkPackageVersion)(tree, '@fundamental-ngx/cdk', '0.46.2-rc.0', '<')) {
68
68
  dependencies.push({
69
69
  type: dependencies_1.NodeDependencyType.Default,
70
70
  // Will be replaced with the real version during sync-version script run
71
- version: `0.46.1-rc.5`,
71
+ version: `0.46.2-rc.0`,
72
72
  name: '@fundamental-ngx/cdk',
73
73
  overwrite: true
74
74
  });
@@ -70,6 +70,8 @@ export declare class WizardComponent implements AfterViewInit, OnDestroy {
70
70
  /** @hidden */
71
71
  private _previousWidth;
72
72
  /** @hidden */
73
+ private readonly _tabbableService;
74
+ /** @hidden */
73
75
  constructor(_elRef: ElementRef, _cdRef: ChangeDetectorRef, _dialogBodyComponent: DialogBodyComponent);
74
76
  /** @hidden */
75
77
  resizeHandler(): void;
@@ -77,6 +79,8 @@ export declare class WizardComponent implements AfterViewInit, OnDestroy {
77
79
  ngAfterViewInit(): void;
78
80
  /** @hidden */
79
81
  ngOnDestroy(): void;
82
+ /** @hidden */
83
+ scrollSpyChange($event: HTMLElement): void;
80
84
  /**
81
85
  * @hidden
82
86
  * @private
@@ -103,6 +107,8 @@ export declare class WizardComponent implements AfterViewInit, OnDestroy {
103
107
  /** @hidden */
104
108
  private _scrollToCurrentStep;
105
109
  /** @hidden */
110
+ private _focusFirstTabbableElement;
111
+ /** @hidden */
106
112
  private _setUpScrollListener;
107
113
  /** @hidden */
108
114
  private _hideSomeStep;
@@ -128,8 +134,6 @@ export declare class WizardComponent implements AfterViewInit, OnDestroy {
128
134
  private _stepClicked;
129
135
  /** @hidden */
130
136
  private _getLastNonSummaryStep;
131
- /** @hidden */
132
- scrollSpyChange($event: HTMLElement): void;
133
137
  static ɵfac: i0.ɵɵFactoryDeclaration<WizardComponent, [null, null, { optional: true; }]>;
134
138
  static ɵcmp: i0.ɵɵComponentDeclaration<WizardComponent, "fd-wizard", never, { "appendToWizard": { "alias": "appendToWizard"; "required": false; }; "contentHeight": { "alias": "contentHeight"; "required": false; }; "responsivePaddings": { "alias": "responsivePaddings"; "required": false; }; "displaySummaryStep": { "alias": "displaySummaryStep"; "required": false; }; "ariaLabel": { "alias": "ariaLabel"; "required": false; }; }, {}, ["progressBar", "steps", "wizardContent"], ["fd-wizard-navigation", "*"], true, never>;
135
139
  }