@clr/angular 13.0.3 → 13.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (84) hide show
  1. package/button/button-group/button-group.d.ts +5 -3
  2. package/clarity.api.md +72 -22
  3. package/data/datagrid/built-in/filters/datagrid-numeric-filter.d.ts +11 -3
  4. package/data/datagrid/built-in/filters/datagrid-string-filter.d.ts +9 -3
  5. package/data/datagrid/datagrid-column.d.ts +10 -1
  6. package/data/datagrid/render/main-renderer.d.ts +3 -2
  7. package/data/stack-view/stack-control.d.ts +7 -2
  8. package/data/tree-view/tree-node.d.ts +1 -1
  9. package/esm2020/accordion/stepper/models/stepper.model.mjs +1 -1
  10. package/esm2020/accordion/stepper/providers/stepper.service.mjs +1 -1
  11. package/esm2020/accordion/stepper/stepper-panel.mjs +1 -1
  12. package/esm2020/button/button-group/button-group.mjs +17 -11
  13. package/esm2020/data/datagrid/built-in/filters/datagrid-numeric-filter.mjs +37 -16
  14. package/esm2020/data/datagrid/built-in/filters/datagrid-string-filter.mjs +27 -13
  15. package/esm2020/data/datagrid/datagrid-column-toggle.mjs +7 -3
  16. package/esm2020/data/datagrid/datagrid-column.mjs +28 -3
  17. package/esm2020/data/datagrid/datagrid-filter.mjs +1 -1
  18. package/esm2020/data/datagrid/datagrid-if-expanded.service.mjs +1 -1
  19. package/esm2020/data/datagrid/render/main-renderer.mjs +9 -6
  20. package/esm2020/data/stack-view/stack-control.mjs +13 -3
  21. package/esm2020/data/stack-view/stack-input.mjs +1 -1
  22. package/esm2020/data/stack-view/stack-select.mjs +1 -1
  23. package/esm2020/data/tree-view/models/declarative-tree-node.model.mjs +1 -1
  24. package/esm2020/data/tree-view/models/recursive-tree-node.model.mjs +1 -1
  25. package/esm2020/data/tree-view/tree-node.mjs +11 -7
  26. package/esm2020/forms/checkbox/checkbox-container.mjs +1 -1
  27. package/esm2020/forms/checkbox/checkbox.mjs +1 -1
  28. package/esm2020/forms/combobox/combobox-container.mjs +1 -1
  29. package/esm2020/forms/combobox/combobox.mjs +1 -4
  30. package/esm2020/forms/combobox/model/pseudo-focus.model.mjs +1 -1
  31. package/esm2020/forms/common/control.mjs +1 -1
  32. package/esm2020/forms/common/error.mjs +1 -1
  33. package/esm2020/forms/common/helper.mjs +1 -1
  34. package/esm2020/forms/common/if-control-state/if-error.mjs +1 -1
  35. package/esm2020/forms/common/if-control-state/if-success.mjs +1 -1
  36. package/esm2020/forms/common/success.mjs +1 -1
  37. package/esm2020/forms/datalist/datalist-container.mjs +1 -1
  38. package/esm2020/forms/datalist/datalist-input.mjs +1 -1
  39. package/esm2020/forms/datepicker/date-container.mjs +1 -1
  40. package/esm2020/forms/datepicker/date-input.mjs +1 -1
  41. package/esm2020/forms/input/input.mjs +1 -1
  42. package/esm2020/forms/password/password.mjs +1 -1
  43. package/esm2020/forms/radio/radio-container.mjs +1 -1
  44. package/esm2020/forms/range/range-container.mjs +1 -1
  45. package/esm2020/forms/select/select-container.mjs +1 -1
  46. package/esm2020/forms/select/select.mjs +1 -1
  47. package/esm2020/forms/textarea/textarea.mjs +1 -1
  48. package/esm2020/layout/nav/header.mjs +25 -8
  49. package/esm2020/layout/nav/nav-level.mjs +109 -7
  50. package/esm2020/layout/vertical-nav/vertical-nav-group.mjs +3 -3
  51. package/esm2020/layout/vertical-nav/vertical-nav-link.mjs +25 -15
  52. package/esm2020/modal/modal-body.mjs +5 -2
  53. package/esm2020/popover/common/abstract-popover.mjs +15 -6
  54. package/esm2020/popover/dropdown/dropdown-menu.mjs +1 -1
  55. package/esm2020/popover/dropdown/providers/dropdown-focus-handler.service.mjs +5 -3
  56. package/esm2020/popover/signpost/signpost-content.mjs +2 -1
  57. package/esm2020/utils/breakpoints/breakpoints.mjs +15 -1
  58. package/esm2020/utils/destroy/destroy.service.mjs +44 -0
  59. package/esm2020/utils/destroy/index.mjs +7 -0
  60. package/esm2020/utils/drag-and-drop/providers/drag-event-listener.service.mjs +7 -7
  61. package/esm2020/utils/focus/focus-on-view-init/focus-on-view-init.mjs +21 -16
  62. package/esm2020/utils/focus/key-focus/roving-tabindex.mjs +1 -1
  63. package/esm2020/utils/focus-trap/focus-trap.mjs +141 -0
  64. package/esm2020/utils/index.mjs +2 -1
  65. package/esm2020/utils/popover/popover-content.mjs +14 -8
  66. package/fesm2015/clr-angular.mjs +591 -167
  67. package/fesm2015/clr-angular.mjs.map +1 -1
  68. package/fesm2020/clr-angular.mjs +588 -166
  69. package/fesm2020/clr-angular.mjs.map +1 -1
  70. package/forms/combobox/combobox.d.ts +0 -1
  71. package/layout/nav/header.d.ts +6 -0
  72. package/layout/nav/nav-level.d.ts +16 -4
  73. package/layout/vertical-nav/vertical-nav-link.d.ts +6 -5
  74. package/modal/modal-body.d.ts +1 -0
  75. package/package.json +4 -4
  76. package/popover/common/abstract-popover.d.ts +3 -1
  77. package/popover/dropdown/providers/dropdown-focus-handler.service.d.ts +2 -2
  78. package/utils/breakpoints/breakpoints.d.ts +14 -0
  79. package/utils/destroy/destroy.service.d.ts +32 -0
  80. package/utils/destroy/index.d.ts +1 -0
  81. package/utils/focus/focus-on-view-init/focus-on-view-init.d.ts +5 -4
  82. package/utils/focus-trap/focus-trap.d.ts +29 -0
  83. package/utils/index.d.ts +1 -0
  84. package/utils/popover/popover-content.d.ts +2 -1
@@ -4,17 +4,20 @@
4
4
  * The full license information can be found in LICENSE in the root directory of this project.
5
5
  */
6
6
  import { DOCUMENT, isPlatformBrowser } from '@angular/common';
7
- import { Directive, HostListener, Inject, Input, PLATFORM_ID, } from '@angular/core';
7
+ import { Directive, Inject, Input, PLATFORM_ID, } from '@angular/core';
8
+ import { fromEvent, Subject } from 'rxjs';
9
+ import { takeUntil } from 'rxjs/operators';
8
10
  import { FOCUS_ON_VIEW_INIT } from './focus-on-view-init.provider';
9
11
  import * as i0 from "@angular/core";
10
12
  /* This directive is for guiding the document focus to the newly added content when its view is initialized
11
13
  so that assistive technologies can read its content. */
12
14
  export class ClrFocusOnViewInit {
13
- constructor(el, platformId, focusOnViewInit, document, renderer) {
15
+ constructor(el, platformId, focusOnViewInit, document, renderer, ngZone) {
14
16
  this.el = el;
15
17
  this.platformId = platformId;
16
18
  this.focusOnViewInit = focusOnViewInit;
17
19
  this.renderer = renderer;
20
+ this.destroy$ = new Subject();
18
21
  this.directFocus = true; // true if the element gets focused without need to set tabindex;
19
22
  this._isEnabled = this.focusOnViewInit;
20
23
  // Angular compiler doesn't understand the type Document
@@ -22,13 +25,15 @@ export class ClrFocusOnViewInit {
22
25
  // even though it understands the injection token DOCUMENT
23
26
  // https://github.com/angular/angular/issues/20351
24
27
  this.document = document;
25
- }
26
- onFocusout() {
27
- if (!this.directFocus) {
28
- // manually set attributes and styles should be removed
29
- this.renderer.removeAttribute(this.el.nativeElement, 'tabindex');
30
- this.renderer.setStyle(this.el.nativeElement, 'outline', null);
31
- }
28
+ ngZone.runOutsideAngular(() => fromEvent(el.nativeElement, 'focusout')
29
+ .pipe(takeUntil(this.destroy$))
30
+ .subscribe(() => {
31
+ if (!this.directFocus) {
32
+ // manually set attributes and styles should be removed
33
+ this.renderer.removeAttribute(this.el.nativeElement, 'tabindex');
34
+ this.renderer.setStyle(this.el.nativeElement, 'outline', null);
35
+ }
36
+ }));
32
37
  }
33
38
  set isEnabled(value) {
34
39
  if (this.focusOnViewInit && typeof value === 'boolean') {
@@ -38,6 +43,9 @@ export class ClrFocusOnViewInit {
38
43
  ngAfterViewInit() {
39
44
  this.focus();
40
45
  }
46
+ ngOnDestroy() {
47
+ this.destroy$.next();
48
+ }
41
49
  focus() {
42
50
  if (!isPlatformBrowser(this.platformId)) {
43
51
  return;
@@ -58,8 +66,8 @@ export class ClrFocusOnViewInit {
58
66
  }
59
67
  }
60
68
  }
61
- ClrFocusOnViewInit.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: ClrFocusOnViewInit, deps: [{ token: i0.ElementRef }, { token: PLATFORM_ID }, { token: FOCUS_ON_VIEW_INIT }, { token: DOCUMENT }, { token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Directive });
62
- ClrFocusOnViewInit.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.0.3", type: ClrFocusOnViewInit, selector: "[clrFocusOnViewInit]", inputs: { isEnabled: ["clrFocusOnViewInit", "isEnabled"] }, host: { listeners: { "focusout": "onFocusout()" } }, ngImport: i0 });
69
+ ClrFocusOnViewInit.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: ClrFocusOnViewInit, deps: [{ token: i0.ElementRef }, { token: PLATFORM_ID }, { token: FOCUS_ON_VIEW_INIT }, { token: DOCUMENT }, { token: i0.Renderer2 }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Directive });
70
+ ClrFocusOnViewInit.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.0.3", type: ClrFocusOnViewInit, selector: "[clrFocusOnViewInit]", inputs: { isEnabled: ["clrFocusOnViewInit", "isEnabled"] }, ngImport: i0 });
63
71
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: ClrFocusOnViewInit, decorators: [{
64
72
  type: Directive,
65
73
  args: [{
@@ -74,11 +82,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImpor
74
82
  }] }, { type: undefined, decorators: [{
75
83
  type: Inject,
76
84
  args: [DOCUMENT]
77
- }] }, { type: i0.Renderer2 }]; }, propDecorators: { onFocusout: [{
78
- type: HostListener,
79
- args: ['focusout']
80
- }], isEnabled: [{
85
+ }] }, { type: i0.Renderer2 }, { type: i0.NgZone }]; }, propDecorators: { isEnabled: [{
81
86
  type: Input,
82
87
  args: ['clrFocusOnViewInit']
83
88
  }] } });
84
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9jdXMtb24tdmlldy1pbml0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYW5ndWxhci9zcmMvdXRpbHMvZm9jdXMvZm9jdXMtb24tdmlldy1pbml0L2ZvY3VzLW9uLXZpZXctaW5pdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7OztHQUlHO0FBRUgsT0FBTyxFQUFFLFFBQVEsRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzlELE9BQU8sRUFFTCxTQUFTLEVBRVQsWUFBWSxFQUNaLE1BQU0sRUFDTixLQUFLLEVBQ0wsV0FBVyxHQUVaLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLCtCQUErQixDQUFDOztBQUVuRTsyREFDMkQ7QUFJM0QsTUFBTSxPQUFPLGtCQUFrQjtJQUM3QixZQUNVLEVBQWMsRUFDTyxVQUFlLEVBQ1IsZUFBd0IsRUFDMUMsUUFBYSxFQUN2QixRQUFtQjtRQUpuQixPQUFFLEdBQUYsRUFBRSxDQUFZO1FBQ08sZUFBVSxHQUFWLFVBQVUsQ0FBSztRQUNSLG9CQUFlLEdBQWYsZUFBZSxDQUFTO1FBRXBELGFBQVEsR0FBUixRQUFRLENBQVc7UUFZckIsZ0JBQVcsR0FBRyxJQUFJLENBQUMsQ0FBQyxpRUFBaUU7UUFWM0YsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDO1FBRXZDLHdEQUF3RDtRQUN4RCwyREFBMkQ7UUFDM0QsMERBQTBEO1FBQzFELGtEQUFrRDtRQUNsRCxJQUFJLENBQUMsUUFBUSxHQUFHLFFBQVEsQ0FBQztJQUMzQixDQUFDO0lBTUQsVUFBVTtRQUNSLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFO1lBQ3JCLHVEQUF1RDtZQUN2RCxJQUFJLENBQUMsUUFBUSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLGFBQWEsRUFBRSxVQUFVLENBQUMsQ0FBQztZQUNqRSxJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLGFBQWEsRUFBRSxTQUFTLEVBQUUsSUFBSSxDQUFDLENBQUM7U0FDaEU7SUFDSCxDQUFDO0lBR0QsSUFDSSxTQUFTLENBQUMsS0FBdUI7UUFDbkMsSUFBSSxJQUFJLENBQUMsZUFBZSxJQUFJLE9BQU8sS0FBSyxLQUFLLFNBQVMsRUFBRTtZQUN0RCxJQUFJLENBQUMsVUFBVSxHQUFHLEtBQUssQ0FBQztTQUN6QjtJQUNILENBQUM7SUFFRCxlQUFlO1FBQ2IsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO0lBQ2YsQ0FBQztJQUVPLEtBQUs7UUFDWCxJQUFJLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxFQUFFO1lBQ3ZDLE9BQU87U0FDUjtRQUNELElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFFO1lBQ3BCLE9BQU87U0FDUjtRQUNELElBQUksSUFBSSxDQUFDLFFBQVEsSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLGFBQWEsS0FBSyxJQUFJLENBQUMsRUFBRSxDQUFDLGFBQWEsRUFBRTtZQUMxRSxJQUFJLENBQUMsRUFBRSxDQUFDLGFBQWEsQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUM5QixJQUFJLElBQUksQ0FBQyxRQUFRLENBQUMsYUFBYSxLQUFLLElBQUksQ0FBQyxFQUFFLENBQUMsYUFBYSxFQUFFO2dCQUN6RCw4RUFBOEU7Z0JBQzlFLG9DQUFvQztnQkFDcEMsSUFBSSxDQUFDLFdBQVcsR0FBRyxLQUFLLENBQUM7Z0JBQ3pCLElBQUksQ0FBQyxRQUFRLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsYUFBYSxFQUFFLFVBQVUsRUFBRSxJQUFJLENBQUMsQ0FBQztnQkFDcEUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxhQUFhLEVBQUUsU0FBUyxFQUFFLE1BQU0sQ0FBQyxDQUFDO2dCQUNqRSxJQUFJLENBQUMsRUFBRSxDQUFDLGFBQWEsQ0FBQyxLQUFLLEVBQUUsQ0FBQzthQUMvQjtTQUNGO0lBQ0gsQ0FBQzs7K0dBM0RVLGtCQUFrQiw0Q0FHbkIsV0FBVyxhQUNYLGtCQUFrQixhQUNsQixRQUFRO21HQUxQLGtCQUFrQjsyRkFBbEIsa0JBQWtCO2tCQUg5QixTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSxzQkFBc0I7aUJBQ2pDOzswQkFJSSxNQUFNOzJCQUFDLFdBQVc7OzBCQUNsQixNQUFNOzJCQUFDLGtCQUFrQjs7MEJBQ3pCLE1BQU07MkJBQUMsUUFBUTtvRUFnQmxCLFVBQVU7c0JBRFQsWUFBWTt1QkFBQyxVQUFVO2dCQVdwQixTQUFTO3NCQURaLEtBQUs7dUJBQUMsb0JBQW9CIiwic291cmNlc0NvbnRlbnQiOlsiLypcbiAqIENvcHlyaWdodCAoYykgMjAxNi0yMDIyIFZNd2FyZSwgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICogVGhpcyBzb2Z0d2FyZSBpcyByZWxlYXNlZCB1bmRlciBNSVQgbGljZW5zZS5cbiAqIFRoZSBmdWxsIGxpY2Vuc2UgaW5mb3JtYXRpb24gY2FuIGJlIGZvdW5kIGluIExJQ0VOU0UgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgcHJvamVjdC5cbiAqL1xuXG5pbXBvcnQgeyBET0NVTUVOVCwgaXNQbGF0Zm9ybUJyb3dzZXIgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtcbiAgQWZ0ZXJWaWV3SW5pdCxcbiAgRGlyZWN0aXZlLFxuICBFbGVtZW50UmVmLFxuICBIb3N0TGlzdGVuZXIsXG4gIEluamVjdCxcbiAgSW5wdXQsXG4gIFBMQVRGT1JNX0lELFxuICBSZW5kZXJlcjIsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRk9DVVNfT05fVklFV19JTklUIH0gZnJvbSAnLi9mb2N1cy1vbi12aWV3LWluaXQucHJvdmlkZXInO1xuXG4vKiAgVGhpcyBkaXJlY3RpdmUgaXMgZm9yIGd1aWRpbmcgdGhlIGRvY3VtZW50IGZvY3VzIHRvIHRoZSBuZXdseSBhZGRlZCBjb250ZW50IHdoZW4gaXRzIHZpZXcgaXMgaW5pdGlhbGl6ZWRcbiAgICBzbyB0aGF0IGFzc2lzdGl2ZSB0ZWNobm9sb2dpZXMgY2FuIHJlYWQgaXRzIGNvbnRlbnQuICovXG5ARGlyZWN0aXZlKHtcbiAgc2VsZWN0b3I6ICdbY2xyRm9jdXNPblZpZXdJbml0XScsXG59KVxuZXhwb3J0IGNsYXNzIENsckZvY3VzT25WaWV3SW5pdCBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXQge1xuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGVsOiBFbGVtZW50UmVmLFxuICAgIEBJbmplY3QoUExBVEZPUk1fSUQpIHByaXZhdGUgcGxhdGZvcm1JZDogYW55LFxuICAgIEBJbmplY3QoRk9DVVNfT05fVklFV19JTklUKSBwcml2YXRlIGZvY3VzT25WaWV3SW5pdDogYm9vbGVhbixcbiAgICBASW5qZWN0KERPQ1VNRU5UKSBkb2N1bWVudDogYW55LFxuICAgIHByaXZhdGUgcmVuZGVyZXI6IFJlbmRlcmVyMlxuICApIHtcbiAgICB0aGlzLl9pc0VuYWJsZWQgPSB0aGlzLmZvY3VzT25WaWV3SW5pdDtcblxuICAgIC8vIEFuZ3VsYXIgY29tcGlsZXIgZG9lc24ndCB1bmRlcnN0YW5kIHRoZSB0eXBlIERvY3VtZW50XG4gICAgLy8gd2hlbiB3b3JraW5nIG91dCB0aGUgbWV0YWRhdGEgZm9yIGluamVjdGFibGUgcGFyYW1ldGVycyxcbiAgICAvLyBldmVuIHRob3VnaCBpdCB1bmRlcnN0YW5kcyB0aGUgaW5qZWN0aW9uIHRva2VuIERPQ1VNRU5UXG4gICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL2FuZ3VsYXIvYW5ndWxhci9pc3N1ZXMvMjAzNTFcbiAgICB0aGlzLmRvY3VtZW50ID0gZG9jdW1lbnQ7XG4gIH1cblxuICBwcml2YXRlIGRvY3VtZW50OiBEb2N1bWVudDtcbiAgcHJpdmF0ZSBkaXJlY3RGb2N1cyA9IHRydWU7IC8vIHRydWUgaWYgdGhlIGVsZW1lbnQgZ2V0cyBmb2N1c2VkIHdpdGhvdXQgbmVlZCB0byBzZXQgdGFiaW5kZXg7XG5cbiAgQEhvc3RMaXN0ZW5lcignZm9jdXNvdXQnKVxuICBvbkZvY3Vzb3V0KCkge1xuICAgIGlmICghdGhpcy5kaXJlY3RGb2N1cykge1xuICAgICAgLy8gbWFudWFsbHkgc2V0IGF0dHJpYnV0ZXMgYW5kIHN0eWxlcyBzaG91bGQgYmUgcmVtb3ZlZFxuICAgICAgdGhpcy5yZW5kZXJlci5yZW1vdmVBdHRyaWJ1dGUodGhpcy5lbC5uYXRpdmVFbGVtZW50LCAndGFiaW5kZXgnKTtcbiAgICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUodGhpcy5lbC5uYXRpdmVFbGVtZW50LCAnb3V0bGluZScsIG51bGwpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgX2lzRW5hYmxlZDogYm9vbGVhbjtcbiAgQElucHV0KCdjbHJGb2N1c09uVmlld0luaXQnKVxuICBzZXQgaXNFbmFibGVkKHZhbHVlOiBib29sZWFuIHwgc3RyaW5nKSB7XG4gICAgaWYgKHRoaXMuZm9jdXNPblZpZXdJbml0ICYmIHR5cGVvZiB2YWx1ZSA9PT0gJ2Jvb2xlYW4nKSB7XG4gICAgICB0aGlzLl9pc0VuYWJsZWQgPSB2YWx1ZTtcbiAgICB9XG4gIH1cblxuICBuZ0FmdGVyVmlld0luaXQoKSB7XG4gICAgdGhpcy5mb2N1cygpO1xuICB9XG5cbiAgcHJpdmF0ZSBmb2N1cygpIHtcbiAgICBpZiAoIWlzUGxhdGZvcm1Ccm93c2VyKHRoaXMucGxhdGZvcm1JZCkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKCF0aGlzLl9pc0VuYWJsZWQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKHRoaXMuZG9jdW1lbnQgJiYgdGhpcy5kb2N1bWVudC5hY3RpdmVFbGVtZW50ICE9PSB0aGlzLmVsLm5hdGl2ZUVsZW1lbnQpIHtcbiAgICAgIHRoaXMuZWwubmF0aXZlRWxlbWVudC5mb2N1cygpO1xuICAgICAgaWYgKHRoaXMuZG9jdW1lbnQuYWN0aXZlRWxlbWVudCAhPT0gdGhpcy5lbC5uYXRpdmVFbGVtZW50KSB7XG4gICAgICAgIC8vIGlmIGl0J3Mgbm90IGRpcmVjdGx5IGZvY3VzZWQgbm93LCBpdCBtZWFucyBpdCB3YXMgYSBub24taW50ZXJhY3RpdmUgZWxlbWVudFxuICAgICAgICAvLyBzbyB3ZSBuZWVkIHRvIGdpdmUgaXQgYSB0YWJpbmRleC5cbiAgICAgICAgdGhpcy5kaXJlY3RGb2N1cyA9IGZhbHNlO1xuICAgICAgICB0aGlzLnJlbmRlcmVyLnNldEF0dHJpYnV0ZSh0aGlzLmVsLm5hdGl2ZUVsZW1lbnQsICd0YWJpbmRleCcsICctMScpO1xuICAgICAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKHRoaXMuZWwubmF0aXZlRWxlbWVudCwgJ291dGxpbmUnLCAnbm9uZScpO1xuICAgICAgICB0aGlzLmVsLm5hdGl2ZUVsZW1lbnQuZm9jdXMoKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cbiJdfQ==
89
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9jdXMtb24tdmlldy1pbml0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYW5ndWxhci9zcmMvdXRpbHMvZm9jdXMvZm9jdXMtb24tdmlldy1pbml0L2ZvY3VzLW9uLXZpZXctaW5pdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7OztHQUlHO0FBRUgsT0FBTyxFQUFFLFFBQVEsRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzlELE9BQU8sRUFFTCxTQUFTLEVBRVQsTUFBTSxFQUNOLEtBQUssRUFHTCxXQUFXLEdBRVosTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLFNBQVMsRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDMUMsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRTNDLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLCtCQUErQixDQUFDOztBQUVuRTsyREFDMkQ7QUFJM0QsTUFBTSxPQUFPLGtCQUFrQjtJQUc3QixZQUNVLEVBQWMsRUFDTyxVQUFlLEVBQ1IsZUFBd0IsRUFDMUMsUUFBYSxFQUN2QixRQUFtQixFQUMzQixNQUFjO1FBTE4sT0FBRSxHQUFGLEVBQUUsQ0FBWTtRQUNPLGVBQVUsR0FBVixVQUFVLENBQUs7UUFDUixvQkFBZSxHQUFmLGVBQWUsQ0FBUztRQUVwRCxhQUFRLEdBQVIsUUFBUSxDQUFXO1FBUHJCLGFBQVEsR0FBRyxJQUFJLE9BQU8sRUFBUSxDQUFDO1FBZ0MvQixnQkFBVyxHQUFHLElBQUksQ0FBQyxDQUFDLGlFQUFpRTtRQXRCM0YsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDO1FBRXZDLHdEQUF3RDtRQUN4RCwyREFBMkQ7UUFDM0QsMERBQTBEO1FBQzFELGtEQUFrRDtRQUNsRCxJQUFJLENBQUMsUUFBUSxHQUFHLFFBQVEsQ0FBQztRQUV6QixNQUFNLENBQUMsaUJBQWlCLENBQUMsR0FBRyxFQUFFLENBQzVCLFNBQVMsQ0FBQyxFQUFFLENBQUMsYUFBYSxFQUFFLFVBQVUsQ0FBQzthQUNwQyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQzthQUM5QixTQUFTLENBQUMsR0FBRyxFQUFFO1lBQ2QsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUU7Z0JBQ3JCLHVEQUF1RDtnQkFDdkQsSUFBSSxDQUFDLFFBQVEsQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxhQUFhLEVBQUUsVUFBVSxDQUFDLENBQUM7Z0JBQ2pFLElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsYUFBYSxFQUFFLFNBQVMsRUFBRSxJQUFJLENBQUMsQ0FBQzthQUNoRTtRQUNILENBQUMsQ0FBQyxDQUNMLENBQUM7SUFDSixDQUFDO0lBTUQsSUFDSSxTQUFTLENBQUMsS0FBdUI7UUFDbkMsSUFBSSxJQUFJLENBQUMsZUFBZSxJQUFJLE9BQU8sS0FBSyxLQUFLLFNBQVMsRUFBRTtZQUN0RCxJQUFJLENBQUMsVUFBVSxHQUFHLEtBQUssQ0FBQztTQUN6QjtJQUNILENBQUM7SUFFRCxlQUFlO1FBQ2IsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO0lBQ2YsQ0FBQztJQUVELFdBQVc7UUFDVCxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxDQUFDO0lBQ3ZCLENBQUM7SUFFTyxLQUFLO1FBQ1gsSUFBSSxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsRUFBRTtZQUN2QyxPQUFPO1NBQ1I7UUFDRCxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBRTtZQUNwQixPQUFPO1NBQ1I7UUFDRCxJQUFJLElBQUksQ0FBQyxRQUFRLElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxhQUFhLEtBQUssSUFBSSxDQUFDLEVBQUUsQ0FBQyxhQUFhLEVBQUU7WUFDMUUsSUFBSSxDQUFDLEVBQUUsQ0FBQyxhQUFhLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDOUIsSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLGFBQWEsS0FBSyxJQUFJLENBQUMsRUFBRSxDQUFDLGFBQWEsRUFBRTtnQkFDekQsOEVBQThFO2dCQUM5RSxvQ0FBb0M7Z0JBQ3BDLElBQUksQ0FBQyxXQUFXLEdBQUcsS0FBSyxDQUFDO2dCQUN6QixJQUFJLENBQUMsUUFBUSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLGFBQWEsRUFBRSxVQUFVLEVBQUUsSUFBSSxDQUFDLENBQUM7Z0JBQ3BFLElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsYUFBYSxFQUFFLFNBQVMsRUFBRSxNQUFNLENBQUMsQ0FBQztnQkFDakUsSUFBSSxDQUFDLEVBQUUsQ0FBQyxhQUFhLENBQUMsS0FBSyxFQUFFLENBQUM7YUFDL0I7U0FDRjtJQUNILENBQUM7OytHQXJFVSxrQkFBa0IsNENBS25CLFdBQVcsYUFDWCxrQkFBa0IsYUFDbEIsUUFBUTttR0FQUCxrQkFBa0I7MkZBQWxCLGtCQUFrQjtrQkFIOUIsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsc0JBQXNCO2lCQUNqQzs7MEJBTUksTUFBTTsyQkFBQyxXQUFXOzswQkFDbEIsTUFBTTsyQkFBQyxrQkFBa0I7OzBCQUN6QixNQUFNOzJCQUFDLFFBQVE7eUZBOEJkLFNBQVM7c0JBRFosS0FBSzt1QkFBQyxvQkFBb0IiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogQ29weXJpZ2h0IChjKSAyMDE2LTIwMjIgVk13YXJlLCBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKiBUaGlzIHNvZnR3YXJlIGlzIHJlbGVhc2VkIHVuZGVyIE1JVCBsaWNlbnNlLlxuICogVGhlIGZ1bGwgbGljZW5zZSBpbmZvcm1hdGlvbiBjYW4gYmUgZm91bmQgaW4gTElDRU5TRSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBwcm9qZWN0LlxuICovXG5cbmltcG9ydCB7IERPQ1VNRU5ULCBpc1BsYXRmb3JtQnJvd3NlciB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQge1xuICBBZnRlclZpZXdJbml0LFxuICBEaXJlY3RpdmUsXG4gIEVsZW1lbnRSZWYsXG4gIEluamVjdCxcbiAgSW5wdXQsXG4gIE5nWm9uZSxcbiAgT25EZXN0cm95LFxuICBQTEFURk9STV9JRCxcbiAgUmVuZGVyZXIyLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IGZyb21FdmVudCwgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgdGFrZVVudGlsIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5pbXBvcnQgeyBGT0NVU19PTl9WSUVXX0lOSVQgfSBmcm9tICcuL2ZvY3VzLW9uLXZpZXctaW5pdC5wcm92aWRlcic7XG5cbi8qICBUaGlzIGRpcmVjdGl2ZSBpcyBmb3IgZ3VpZGluZyB0aGUgZG9jdW1lbnQgZm9jdXMgdG8gdGhlIG5ld2x5IGFkZGVkIGNvbnRlbnQgd2hlbiBpdHMgdmlldyBpcyBpbml0aWFsaXplZFxuICAgIHNvIHRoYXQgYXNzaXN0aXZlIHRlY2hub2xvZ2llcyBjYW4gcmVhZCBpdHMgY29udGVudC4gKi9cbkBEaXJlY3RpdmUoe1xuICBzZWxlY3RvcjogJ1tjbHJGb2N1c09uVmlld0luaXRdJyxcbn0pXG5leHBvcnQgY2xhc3MgQ2xyRm9jdXNPblZpZXdJbml0IGltcGxlbWVudHMgQWZ0ZXJWaWV3SW5pdCwgT25EZXN0cm95IHtcbiAgcHJpdmF0ZSBkZXN0cm95JCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBlbDogRWxlbWVudFJlZixcbiAgICBASW5qZWN0KFBMQVRGT1JNX0lEKSBwcml2YXRlIHBsYXRmb3JtSWQ6IGFueSxcbiAgICBASW5qZWN0KEZPQ1VTX09OX1ZJRVdfSU5JVCkgcHJpdmF0ZSBmb2N1c09uVmlld0luaXQ6IGJvb2xlYW4sXG4gICAgQEluamVjdChET0NVTUVOVCkgZG9jdW1lbnQ6IGFueSxcbiAgICBwcml2YXRlIHJlbmRlcmVyOiBSZW5kZXJlcjIsXG4gICAgbmdab25lOiBOZ1pvbmVcbiAgKSB7XG4gICAgdGhpcy5faXNFbmFibGVkID0gdGhpcy5mb2N1c09uVmlld0luaXQ7XG5cbiAgICAvLyBBbmd1bGFyIGNvbXBpbGVyIGRvZXNuJ3QgdW5kZXJzdGFuZCB0aGUgdHlwZSBEb2N1bWVudFxuICAgIC8vIHdoZW4gd29ya2luZyBvdXQgdGhlIG1ldGFkYXRhIGZvciBpbmplY3RhYmxlIHBhcmFtZXRlcnMsXG4gICAgLy8gZXZlbiB0aG91Z2ggaXQgdW5kZXJzdGFuZHMgdGhlIGluamVjdGlvbiB0b2tlbiBET0NVTUVOVFxuICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9hbmd1bGFyL2FuZ3VsYXIvaXNzdWVzLzIwMzUxXG4gICAgdGhpcy5kb2N1bWVudCA9IGRvY3VtZW50O1xuXG4gICAgbmdab25lLnJ1bk91dHNpZGVBbmd1bGFyKCgpID0+XG4gICAgICBmcm9tRXZlbnQoZWwubmF0aXZlRWxlbWVudCwgJ2ZvY3Vzb3V0JylcbiAgICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKVxuICAgICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICBpZiAoIXRoaXMuZGlyZWN0Rm9jdXMpIHtcbiAgICAgICAgICAgIC8vIG1hbnVhbGx5IHNldCBhdHRyaWJ1dGVzIGFuZCBzdHlsZXMgc2hvdWxkIGJlIHJlbW92ZWRcbiAgICAgICAgICAgIHRoaXMucmVuZGVyZXIucmVtb3ZlQXR0cmlidXRlKHRoaXMuZWwubmF0aXZlRWxlbWVudCwgJ3RhYmluZGV4Jyk7XG4gICAgICAgICAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKHRoaXMuZWwubmF0aXZlRWxlbWVudCwgJ291dGxpbmUnLCBudWxsKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgZG9jdW1lbnQ6IERvY3VtZW50O1xuICBwcml2YXRlIGRpcmVjdEZvY3VzID0gdHJ1ZTsgLy8gdHJ1ZSBpZiB0aGUgZWxlbWVudCBnZXRzIGZvY3VzZWQgd2l0aG91dCBuZWVkIHRvIHNldCB0YWJpbmRleDtcblxuICBwcml2YXRlIF9pc0VuYWJsZWQ6IGJvb2xlYW47XG4gIEBJbnB1dCgnY2xyRm9jdXNPblZpZXdJbml0JylcbiAgc2V0IGlzRW5hYmxlZCh2YWx1ZTogYm9vbGVhbiB8IHN0cmluZykge1xuICAgIGlmICh0aGlzLmZvY3VzT25WaWV3SW5pdCAmJiB0eXBlb2YgdmFsdWUgPT09ICdib29sZWFuJykge1xuICAgICAgdGhpcy5faXNFbmFibGVkID0gdmFsdWU7XG4gICAgfVxuICB9XG5cbiAgbmdBZnRlclZpZXdJbml0KCkge1xuICAgIHRoaXMuZm9jdXMoKTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuZGVzdHJveSQubmV4dCgpO1xuICB9XG5cbiAgcHJpdmF0ZSBmb2N1cygpIHtcbiAgICBpZiAoIWlzUGxhdGZvcm1Ccm93c2VyKHRoaXMucGxhdGZvcm1JZCkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKCF0aGlzLl9pc0VuYWJsZWQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKHRoaXMuZG9jdW1lbnQgJiYgdGhpcy5kb2N1bWVudC5hY3RpdmVFbGVtZW50ICE9PSB0aGlzLmVsLm5hdGl2ZUVsZW1lbnQpIHtcbiAgICAgIHRoaXMuZWwubmF0aXZlRWxlbWVudC5mb2N1cygpO1xuICAgICAgaWYgKHRoaXMuZG9jdW1lbnQuYWN0aXZlRWxlbWVudCAhPT0gdGhpcy5lbC5uYXRpdmVFbGVtZW50KSB7XG4gICAgICAgIC8vIGlmIGl0J3Mgbm90IGRpcmVjdGx5IGZvY3VzZWQgbm93LCBpdCBtZWFucyBpdCB3YXMgYSBub24taW50ZXJhY3RpdmUgZWxlbWVudFxuICAgICAgICAvLyBzbyB3ZSBuZWVkIHRvIGdpdmUgaXQgYSB0YWJpbmRleC5cbiAgICAgICAgdGhpcy5kaXJlY3RGb2N1cyA9IGZhbHNlO1xuICAgICAgICB0aGlzLnJlbmRlcmVyLnNldEF0dHJpYnV0ZSh0aGlzLmVsLm5hdGl2ZUVsZW1lbnQsICd0YWJpbmRleCcsICctMScpO1xuICAgICAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKHRoaXMuZWwubmF0aXZlRWxlbWVudCwgJ291dGxpbmUnLCAnbm9uZScpO1xuICAgICAgICB0aGlzLmVsLm5hdGl2ZUVsZW1lbnQuZm9jdXMoKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cbiJdfQ==
@@ -99,4 +99,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImpor
99
99
  type: Input,
100
100
  args: ['clrRovingTabindexDisabled']
101
101
  }] } });
102
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm92aW5nLXRhYmluZGV4LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYW5ndWxhci9zcmMvdXRpbHMvZm9jdXMva2V5LWZvY3VzL3JvdmluZy10YWJpbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7OztHQUlHO0FBRUgsT0FBTyxFQUFFLFNBQVMsRUFBeUIsS0FBSyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRXhFLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQUMvRCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sYUFBYSxDQUFDOztBQU8xQyxNQUFNLE9BQU8saUJBQWtCLFNBQVEsV0FBVztJQUNoRCxZQUFZLFVBQXNCLEVBQVUsUUFBbUI7UUFDN0QsS0FBSyxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBRHdCLGFBQVEsR0FBUixRQUFRLENBQVc7UUFjdkQsYUFBUSxHQUFHLEtBQUssQ0FBQztJQVp6QixDQUFDO0lBRUQsdUZBQXVGO0lBQ3ZGLElBQ0ksZ0JBQWdCLENBQUMsUUFBdUM7UUFDMUQsSUFBSSxDQUFDLGNBQWMsR0FBRyxRQUFnQyxDQUFDO0lBQ3pELENBQUM7SUFFRCxJQUFJLGdCQUFnQjtRQUNsQixPQUFPLElBQUksQ0FBQyxjQUFjLENBQUM7SUFDN0IsQ0FBQztJQUlELElBQ0ksc0JBQXNCLENBQUMsUUFBaUI7UUFDMUMsSUFBSSxDQUFDLFFBQVEsR0FBRyxRQUFRLENBQUM7UUFDekIsSUFBSSxJQUFJLENBQUMsV0FBVyxFQUFFO1lBQ3BCLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztTQUN2RDtJQUNILENBQUM7SUFFRCxtQkFBbUIsQ0FBQyxLQUFvQjtRQUN0QyxJQUFJLElBQUksQ0FBQyxjQUFjLENBQUMsS0FB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QUUsS0FBSyxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUM7U0FDaEU7YUFBTTtZQUNMLElBQUksQ0FBQyxRQUFRLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxhQUFhLEVBQUUsVUFBVSxFQUFFLEtBQUssQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDO1NBQzlFO0lBQ0gsQ0FBQzs7OEdBbkZVLGlCQUFpQjtrR0FBakIsaUJBQWlCLDRPQUZsQiwyQkFBMkI7MkZBRTFCLGlCQUFpQjtrQkFKN0IsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUscUJBQXFCO29CQUMvQixRQUFRLEVBQUUsMkJBQTJCO2lCQUN0Qzt5SEFRSyxnQkFBZ0I7c0JBRG5CLEtBQUs7dUJBQUMsbUJBQW1CO2dCQVl0QixzQkFBc0I7c0JBRHpCLEtBQUs7dUJBQUMsMkJBQTJCIiwic291cmNlc0NvbnRlbnQiOlsiLypcbiAqIENvcHlyaWdodCAoYykgMjAxNi0yMDIyIFZNd2FyZSwgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICogVGhpcyBzb2Z0d2FyZSBpcyByZWxlYXNlZCB1bmRlciBNSVQgbGljZW5zZS5cbiAqIFRoZSBmdWxsIGxpY2Vuc2UgaW5mb3JtYXRpb24gY2FuIGJlIGZvdW5kIGluIExJQ0VOU0UgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgcHJvamVjdC5cbiAqL1xuXG5pbXBvcnQgeyBDb21wb25lbnQsIEVsZW1lbnRSZWYsIFJlbmRlcmVyMiwgSW5wdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHsgS2V5Q29kZXMgfSBmcm9tICcuLi8uLi8uLi91dGlscy9lbnVtcy9rZXktY29kZXMuZW51bSc7XG5pbXBvcnQgeyBDbHJLZXlGb2N1cyB9IGZyb20gJy4va2V5LWZvY3VzJztcbmltcG9ydCB7IEZvY3VzYWJsZUl0ZW0gfSBmcm9tICcuL2ludGVyZmFjZXMnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdbY2xyUm92aW5nVGFiaW5kZXhdJyxcbiAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+Jyxcbn0pXG5leHBvcnQgY2xhc3MgQ2xyUm92aW5nVGFiaW5kZXggZXh0ZW5kcyBDbHJLZXlGb2N1cyB7XG4gIGNvbnN0cnVjdG9yKGVsZW1lbnRSZWY6IEVsZW1lbnRSZWYsIHByaXZhdGUgcmVuZGVyZXI6IFJlbmRlcmVyMikge1xuICAgIHN1cGVyKGVsZW1lbnRSZWYpO1xuICB9XG5cbiAgLy8gUHJveHkgdGhlIGlucHV0LCBhcyB0aGUgc2VsZWN0b3IgbmFtZSBmcm9tIHBhcmVudCBjbGFzcyB3aWxsIHN0aWxsIGJlIFwiY2xyS2V5Rm9jdXNcIi5cbiAgQElucHV0KCdjbHJSb3ZpbmdUYWJpbmRleCcpXG4gIHNldCByb3ZpbmdJbmRleEl0ZW1zKGVsZW1lbnRzOiBBcnJheTxGb2N1c2FibGVJdGVtPiB8IHN0cmluZykge1xuICAgIHRoaXMuZm9jdXNhYmxlSXRlbXMgPSBlbGVtZW50cyBhcyBBcnJheTxGb2N1c2FibGVJdGVtPjtcbiAgfVxuXG4gIGdldCByb3ZpbmdJbmRleEl0ZW1zKCk6IEFycmF5PEZvY3VzYWJsZUl0ZW0+IHwgc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5mb2N1c2FibGVJdGVtcztcbiAgfVxuXG4gIHByaXZhdGUgZGlzYWJsZWQgPSBmYWxzZTtcblxuICBASW5wdXQoJ2NsclJvdmluZ1RhYmluZGV4RGlzYWJsZWQnKVxuICBzZXQgcm92aW5nVGFiaW5kZXhEaXNhYmxlZChkaXNhYmxlZDogYm9vbGVhbikge1xuICAgIHRoaXMuZGlzYWJsZWQgPSBkaXNhYmxlZDtcbiAgICBpZiAodGhpcy5jdXJyZW50SXRlbSkge1xuICAgICAgdGhpcy5zZXRUYWJpbmRleCh0aGlzLmN1cnJlbnRJdGVtLCBkaXNhYmxlZCA/IC0xIDogMCk7XG4gICAgfVxuICB9XG5cbiAgaGFuZGxlS2V5Ym9hcmRFdmVudChldmVudDogS2V5Ym9hcmRFdmVudCkge1xuICAgIGlmICh0aGlzLnByZXZLZXlQcmVzc2VkKGV2ZW50KSAmJiB0aGlzLmN1cnJlbnRGb2N1c0lzTm90Rmlyc3RJdGVtKCkpIHtcbiAgICAgIHRoaXMudXBkYXRlVGFiaW5kZXgodGhpcy5jdXJyZW50IC0gMSk7XG4gICAgfSBlbHNlIGlmICh0aGlzLm5leHRLZXlQcmVzc2VkKGV2ZW50KSAmJiB0aGlzLmN1cnJlbnRGb2N1c0lzTm90TGFzdEl0ZW0oKSkge1xuICAgICAgdGhpcy51cGRhdGVUYWJpbmRleCh0aGlzLmN1cnJlbnQgKyAxKTtcbiAgICB9IGVsc2UgaWYgKGV2ZW50LmNvZGUgPT09IEtleUNvZGVzLkhvbWUpIHtcbiAgICAgIHRoaXMudXBkYXRlVGFiaW5kZXgoMCk7XG4gICAgfSBlbHNlIGlmIChldmVudC5jb2RlID09PSBLZXlDb2Rlcy5FbmQpIHtcbiAgICAgIHRoaXMudXBkYXRlVGFiaW5kZXgodGhpcy5mb2N1c2FibGVJdGVtcy5sZW5ndGggLSAxKTtcbiAgICB9XG4gICAgc3VwZXIuaGFuZGxlS2V5Ym9hcmRFdmVudChldmVudCk7XG4gIH1cblxuICBzZXRDbGlja2VkSXRlbUN1cnJlbnQoZXZlbnQ6IGFueSkge1xuICAgIGxldCBwb3NpdGlvbjogbnVtYmVyO1xuXG4gICAgaWYgKHRoaXMuZm9jdXNhYmxlSXRlbXNbMF0ubmF0aXZlRWxlbWVudCkge1xuICAgICAgcG9zaXRpb24gPSB0aGlzLmZvY3VzYWJsZUl0ZW1zLm1hcChpdGVtID0+IGl0ZW0ubmF0aXZlRWxlbWVudCkuaW5kZXhPZihldmVudC50YXJnZXQpO1xuICAgIH0gZWxzZSB7XG4gICAgICBwb3NpdGlvbiA9IHRoaXMuZm9jdXNhYmxlSXRlbXMuaW5kZXhPZihldmVudC50YXJnZXQpO1xuICAgIH1cblxuICAgIGlmIChwb3NpdGlvbiA+IC0xKSB7XG4gICAgICB0aGlzLnVwZGF0ZVRhYmluZGV4KHBvc2l0aW9uKTtcbiAgICB9XG4gICAgc3VwZXIuc2V0Q2xpY2tlZEl0ZW1DdXJyZW50KGV2ZW50KTtcbiAgfVxuXG4gIHByb3RlY3RlZCBpbml0aWFsaXplRm9jdXMoKSB7XG4gICAgaWYgKHRoaXMuZm9jdXNhYmxlSXRlbXMgJiYgdGhpcy5mb2N1c2FibGVJdGVtcy5sZW5ndGgpIHtcbiAgICAgIHRoaXMuZm9jdXNhYmxlSXRlbXMuZm9yRWFjaChpdGVtID0+IHtcbiAgICAgICAgdGhpcy5zZXRUYWJpbmRleChpdGVtLCAtMSk7XG4gICAgICB9KTtcblxuICAgICAgLy8gSXQgaXMgcG9zc2libGUgdGhhdCB0aGUgZm9jdXMgd2FzIG9uIGFuIGVsZW1lbnQsIHdob3NlIGluZGV4IGlzIG5vIGxvbmdlciBhdmFpbGFibGUuXG4gICAgICAvLyBUaGlzIGNhbiBoYXBwZW4gd2hlbiBzb21lIG9mIHRoZSBmb2N1c2FibGUgZWxlbWVudHMgYXJlIGJlaW5nIHJlbW92ZWQuXG4gICAgICAvLyBJbiBzdWNoIGNhc2VzLCB0aGUgbmV3IGZvY3VzIGlzIGluaXRpYWxpemVkIG9uIHRoZSBsYXN0IGZvY3VzYWJsZSBlbGVtZW50LlxuICAgICAgaWYgKHRoaXMuY3VycmVudCA+PSB0aGlzLmZvY3VzYWJsZUl0ZW1zLmxlbmd0aCkge1xuICAgICAgICB0aGlzLmN1cnJlbnQgPSB0aGlzLmZvY3VzYWJsZUl0ZW1zLmxlbmd0aCAtIDE7XG4gICAgICB9XG4gICAgICBpZiAoIXRoaXMuZGlzYWJsZWQgJiYgdGhpcy5jdXJyZW50SXRlbSkge1xuICAgICAgICB0aGlzLnNldFRhYmluZGV4KHRoaXMuY3VycmVudEl0ZW0sIDApO1xuICAgICAgfVxuICAgIH1cbiAgICBzdXBlci5pbml0aWFsaXplRm9jdXMoKTtcbiAgfVxuXG4gIHByaXZhdGUgdXBkYXRlVGFiaW5kZXgobmV3SW5kZXg6IG51bWJlcikge1xuICAgIHRoaXMuc2V0VGFiaW5kZXgodGhpcy5jdXJyZW50SXRlbSwgLTEpO1xuICAgIHRoaXMuc2V0VGFiaW5kZXgodGhpcy5mb2N1c2FibGVJdGVtc1tuZXdJbmRleF0sIDApO1xuICB9XG5cbiAgcHJpdmF0ZSBzZXRUYWJpbmRleChpdGVtOiBGb2N1c2FibGVJdGVtLCB2YWx1ZTogbnVtYmVyKSB7XG4gICAgaWYgKGl0ZW0gaW5zdGFuY2VvZiBIVE1MRWxlbWVudCkge1xuICAgICAgdGhpcy5yZW5kZXJlci5zZXRBdHRyaWJ1dGUoaXRlbSwgJ3RhYmluZGV4JywgdmFsdWUudG9TdHJpbmcoKSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMucmVuZGVyZXIuc2V0QXR0cmlidXRlKGl0ZW0ubmF0aXZlRWxlbWVudCwgJ3RhYmluZGV4JywgdmFsdWUudG9TdHJpbmcoKSk7XG4gICAgfVxuICB9XG59XG4iXX0=
102
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm92aW5nLXRhYmluZGV4LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYW5ndWxhci9zcmMvdXRpbHMvZm9jdXMva2V5LWZvY3VzL3JvdmluZy10YWJpbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7OztHQUlHO0FBRUgsT0FBTyxFQUFFLFNBQVMsRUFBeUIsS0FBSyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRXhFLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQUMvRCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sYUFBYSxDQUFDOztBQU8xQyxNQUFNLE9BQU8saUJBQWtCLFNBQVEsV0FBVztJQUNoRCxZQUFZLFVBQXNCLEVBQVUsUUFBbUI7UUFDN0QsS0FBSyxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBRHdCLGFBQVEsR0FBUixRQUFRLENBQVc7UUFjdkQsYUFBUSxHQUFHLEtBQUssQ0FBQztJQVp6QixDQUFDO0lBRUQsdUZBQXVGO0lBQ3ZGLElBQ0ksZ0JBQWdCLENBQUMsUUFBdUM7UUFDMUQsSUFBSSxDQUFDLGNBQWMsR0FBRyxRQUFnQyxDQUFDO0lBQ3pELENBQUM7SUFFRCxJQUFJLGdCQUFnQjtRQUNsQixPQUFPLElBQUksQ0FBQyxjQUFjLENBQUM7SUFDN0IsQ0FBQztJQUlELElBQ0ksc0JBQXNCLENBQUMsUUFBaUI7UUFDMUMsSUFBSSxDQUFDLFFBQVEsR0FBRyxRQUFRLENBQUM7UUFDekIsSUFBSSxJQUFJLENBQUMsV0FBVyxFQUFFO1lBQ3BCLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztTQUN2RDtJQUNILENBQUM7SUFFUSxtQkFBbUIsQ0FBQyxLQUFvQjtRQUMvQyxJQUFJLElBQUksQ0FBQyxjQUFjLENBQUMsS0FB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QUFFLEtBQUssQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDO1NBQ2hFO2FBQU07WUFDTCxJQUFJLENBQUMsUUFBUSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsYUFBYSxFQUFFLFVBQVUsRUFBRSxLQUFLLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQztTQUM5RTtJQUNILENBQUM7OzhHQW5GVSxpQkFBaUI7a0dBQWpCLGlCQUFpQiw0T0FGbEIsMkJBQTJCOzJGQUUxQixpQkFBaUI7a0JBSjdCLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLHFCQUFxQjtvQkFDL0IsUUFBUSxFQUFFLDJCQUEyQjtpQkFDdEM7eUhBUUssZ0JBQWdCO3NCQURuQixLQUFLO3VCQUFDLG1CQUFtQjtnQkFZdEIsc0JBQXNCO3NCQUR6QixLQUFLO3VCQUFDLDJCQUEyQiIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTYtMjAyMiBWTXdhcmUsIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqIFRoaXMgc29mdHdhcmUgaXMgcmVsZWFzZWQgdW5kZXIgTUlUIGxpY2Vuc2UuXG4gKiBUaGUgZnVsbCBsaWNlbnNlIGluZm9ybWF0aW9uIGNhbiBiZSBmb3VuZCBpbiBMSUNFTlNFIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHByb2plY3QuXG4gKi9cblxuaW1wb3J0IHsgQ29tcG9uZW50LCBFbGVtZW50UmVmLCBSZW5kZXJlcjIsIElucHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IEtleUNvZGVzIH0gZnJvbSAnLi4vLi4vLi4vdXRpbHMvZW51bXMva2V5LWNvZGVzLmVudW0nO1xuaW1wb3J0IHsgQ2xyS2V5Rm9jdXMgfSBmcm9tICcuL2tleS1mb2N1cyc7XG5pbXBvcnQgeyBGb2N1c2FibGVJdGVtIH0gZnJvbSAnLi9pbnRlcmZhY2VzJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnW2NsclJvdmluZ1RhYmluZGV4XScsXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PicsXG59KVxuZXhwb3J0IGNsYXNzIENsclJvdmluZ1RhYmluZGV4IGV4dGVuZHMgQ2xyS2V5Rm9jdXMge1xuICBjb25zdHJ1Y3RvcihlbGVtZW50UmVmOiBFbGVtZW50UmVmLCBwcml2YXRlIHJlbmRlcmVyOiBSZW5kZXJlcjIpIHtcbiAgICBzdXBlcihlbGVtZW50UmVmKTtcbiAgfVxuXG4gIC8vIFByb3h5IHRoZSBpbnB1dCwgYXMgdGhlIHNlbGVjdG9yIG5hbWUgZnJvbSBwYXJlbnQgY2xhc3Mgd2lsbCBzdGlsbCBiZSBcImNscktleUZvY3VzXCIuXG4gIEBJbnB1dCgnY2xyUm92aW5nVGFiaW5kZXgnKVxuICBzZXQgcm92aW5nSW5kZXhJdGVtcyhlbGVtZW50czogQXJyYXk8Rm9jdXNhYmxlSXRlbT4gfCBzdHJpbmcpIHtcbiAgICB0aGlzLmZvY3VzYWJsZUl0ZW1zID0gZWxlbWVudHMgYXMgQXJyYXk8Rm9jdXNhYmxlSXRlbT47XG4gIH1cblxuICBnZXQgcm92aW5nSW5kZXhJdGVtcygpOiBBcnJheTxGb2N1c2FibGVJdGVtPiB8IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuZm9jdXNhYmxlSXRlbXM7XG4gIH1cblxuICBwcml2YXRlIGRpc2FibGVkID0gZmFsc2U7XG5cbiAgQElucHV0KCdjbHJSb3ZpbmdUYWJpbmRleERpc2FibGVkJylcbiAgc2V0IHJvdmluZ1RhYmluZGV4RGlzYWJsZWQoZGlzYWJsZWQ6IGJvb2xlYW4pIHtcbiAgICB0aGlzLmRpc2FibGVkID0gZGlzYWJsZWQ7XG4gICAgaWYgKHRoaXMuY3VycmVudEl0ZW0pIHtcbiAgICAgIHRoaXMuc2V0VGFiaW5kZXgodGhpcy5jdXJyZW50SXRlbSwgZGlzYWJsZWQgPyAtMSA6IDApO1xuICAgIH1cbiAgfVxuXG4gIG92ZXJyaWRlIGhhbmRsZUtleWJvYXJkRXZlbnQoZXZlbnQ6IEtleWJvYXJkRXZlbnQpIHtcbiAgICBpZiAodGhpcy5wcmV2S2V5UHJlc3NlZChldmVudCkgJiYgdGhpcy5jdXJyZW50Rm9jdXNJc05vdEZpcnN0SXRlbSgpKSB7XG4gICAgICB0aGlzLnVwZGF0ZVRhYmluZGV4KHRoaXMuY3VycmVudCAtIDEpO1xuICAgIH0gZWxzZSBpZiAodGhpcy5uZXh0S2V5UHJlc3NlZChldmVudCkgJiYgdGhpcy5jdXJyZW50Rm9jdXNJc05vdExhc3RJdGVtKCkpIHtcbiAgICAgIHRoaXMudXBkYXRlVGFiaW5kZXgodGhpcy5jdXJyZW50ICsgMSk7XG4gICAgfSBlbHNlIGlmIChldmVudC5jb2RlID09PSBLZXlDb2Rlcy5Ib21lKSB7XG4gICAgICB0aGlzLnVwZGF0ZVRhYmluZGV4KDApO1xuICAgIH0gZWxzZSBpZiAoZXZlbnQuY29kZSA9PT0gS2V5Q29kZXMuRW5kKSB7XG4gICAgICB0aGlzLnVwZGF0ZVRhYmluZGV4KHRoaXMuZm9jdXNhYmxlSXRlbXMubGVuZ3RoIC0gMSk7XG4gICAgfVxuICAgIHN1cGVyLmhhbmRsZUtleWJvYXJkRXZlbnQoZXZlbnQpO1xuICB9XG5cbiAgb3ZlcnJpZGUgc2V0Q2xpY2tlZEl0ZW1DdXJyZW50KGV2ZW50OiBhbnkpIHtcbiAgICBsZXQgcG9zaXRpb246IG51bWJlcjtcblxuICAgIGlmICh0aGlzLmZvY3VzYWJsZUl0ZW1zWzBdLm5hdGl2ZUVsZW1lbnQpIHtcbiAgICAgIHBvc2l0aW9uID0gdGhpcy5mb2N1c2FibGVJdGVtcy5tYXAoaXRlbSA9PiBpdGVtLm5hdGl2ZUVsZW1lbnQpLmluZGV4T2YoZXZlbnQudGFyZ2V0KTtcbiAgICB9IGVsc2Uge1xuICAgICAgcG9zaXRpb24gPSB0aGlzLmZvY3VzYWJsZUl0ZW1zLmluZGV4T2YoZXZlbnQudGFyZ2V0KTtcbiAgICB9XG5cbiAgICBpZiAocG9zaXRpb24gPiAtMSkge1xuICAgICAgdGhpcy51cGRhdGVUYWJpbmRleChwb3NpdGlvbik7XG4gICAgfVxuICAgIHN1cGVyLnNldENsaWNrZWRJdGVtQ3VycmVudChldmVudCk7XG4gIH1cblxuICBwcm90ZWN0ZWQgb3ZlcnJpZGUgaW5pdGlhbGl6ZUZvY3VzKCkge1xuICAgIGlmICh0aGlzLmZvY3VzYWJsZUl0ZW1zICYmIHRoaXMuZm9jdXNhYmxlSXRlbXMubGVuZ3RoKSB7XG4gICAgICB0aGlzLmZvY3VzYWJsZUl0ZW1zLmZvckVhY2goaXRlbSA9PiB7XG4gICAgICAgIHRoaXMuc2V0VGFiaW5kZXgoaXRlbSwgLTEpO1xuICAgICAgfSk7XG5cbiAgICAgIC8vIEl0IGlzIHBvc3NpYmxlIHRoYXQgdGhlIGZvY3VzIHdhcyBvbiBhbiBlbGVtZW50LCB3aG9zZSBpbmRleCBpcyBubyBsb25nZXIgYXZhaWxhYmxlLlxuICAgICAgLy8gVGhpcyBjYW4gaGFwcGVuIHdoZW4gc29tZSBvZiB0aGUgZm9jdXNhYmxlIGVsZW1lbnRzIGFyZSBiZWluZyByZW1vdmVkLlxuICAgICAgLy8gSW4gc3VjaCBjYXNlcywgdGhlIG5ldyBmb2N1cyBpcyBpbml0aWFsaXplZCBvbiB0aGUgbGFzdCBmb2N1c2FibGUgZWxlbWVudC5cbiAgICAgIGlmICh0aGlzLmN1cnJlbnQgPj0gdGhpcy5mb2N1c2FibGVJdGVtcy5sZW5ndGgpIHtcbiAgICAgICAgdGhpcy5jdXJyZW50ID0gdGhpcy5mb2N1c2FibGVJdGVtcy5sZW5ndGggLSAxO1xuICAgICAgfVxuICAgICAgaWYgKCF0aGlzLmRpc2FibGVkICYmIHRoaXMuY3VycmVudEl0ZW0pIHtcbiAgICAgICAgdGhpcy5zZXRUYWJpbmRleCh0aGlzLmN1cnJlbnRJdGVtLCAwKTtcbiAgICAgIH1cbiAgICB9XG4gICAgc3VwZXIuaW5pdGlhbGl6ZUZvY3VzKCk7XG4gIH1cblxuICBwcml2YXRlIHVwZGF0ZVRhYmluZGV4KG5ld0luZGV4OiBudW1iZXIpIHtcbiAgICB0aGlzLnNldFRhYmluZGV4KHRoaXMuY3VycmVudEl0ZW0sIC0xKTtcbiAgICB0aGlzLnNldFRhYmluZGV4KHRoaXMuZm9jdXNhYmxlSXRlbXNbbmV3SW5kZXhdLCAwKTtcbiAgfVxuXG4gIHByaXZhdGUgc2V0VGFiaW5kZXgoaXRlbTogRm9jdXNhYmxlSXRlbSwgdmFsdWU6IG51bWJlcikge1xuICAgIGlmIChpdGVtIGluc3RhbmNlb2YgSFRNTEVsZW1lbnQpIHtcbiAgICAgIHRoaXMucmVuZGVyZXIuc2V0QXR0cmlidXRlKGl0ZW0sICd0YWJpbmRleCcsIHZhbHVlLnRvU3RyaW5nKCkpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnJlbmRlcmVyLnNldEF0dHJpYnV0ZShpdGVtLm5hdGl2ZUVsZW1lbnQsICd0YWJpbmRleCcsIHZhbHVlLnRvU3RyaW5nKCkpO1xuICAgIH1cbiAgfVxufVxuIl19
@@ -0,0 +1,141 @@
1
+ /*
2
+ * Copyright (c) 2016-2022 VMware, Inc. All Rights Reserved.
3
+ * This software is released under MIT license.
4
+ * The full license information can be found in LICENSE in the root directory of this project.
5
+ */
6
+ import { createId, FocusTrapTrackerService, isFocusable, isHTMLElement } from '@cds/core/internal';
7
+ import { DOCUMENT, isPlatformBrowser } from '@angular/common';
8
+ import { Injectable } from '@angular/core';
9
+ import * as i0 from "@angular/core";
10
+ export function refocusIfOutsideFocusTrapElement(focusedElement, focusTrapElement, elementToRefocus) {
11
+ const focusTrapIsCurrent = FocusTrapTrackerService.getCurrent() === focusTrapElement;
12
+ const elementToFocusIsOutsideFocusTrap = elementIsOutsideFocusTrapElement(focusedElement, focusTrapElement);
13
+ if (focusTrapIsCurrent && elementToFocusIsOutsideFocusTrap) {
14
+ elementToRefocus = elementToRefocus || focusTrapElement;
15
+ elementToRefocus.focus();
16
+ }
17
+ else {
18
+ focusedElement.focus();
19
+ }
20
+ }
21
+ export function elementIsOutsideFocusTrapElement(focusedElement, focusTrapElement) {
22
+ if (focusedElement === focusTrapElement.topReboundElement ||
23
+ focusedElement === focusTrapElement.bottomReboundElement) {
24
+ return true;
25
+ }
26
+ const elementIsInFocusTrapLightDom = focusTrapElement.contains(focusedElement);
27
+ if (elementIsInFocusTrapLightDom) {
28
+ return false;
29
+ }
30
+ if (focusTrapElement !== null && focusTrapElement.contains(focusedElement)) {
31
+ return false;
32
+ }
33
+ return true;
34
+ }
35
+ export function createFocusTrapReboundElement(document) {
36
+ const offScreenSpan = document.createElement('span');
37
+ offScreenSpan.setAttribute('tabindex', '0');
38
+ offScreenSpan.classList.add('offscreen-focus-rebounder');
39
+ return offScreenSpan;
40
+ }
41
+ export function addReboundElementsToFocusTrapElement(document, focusTrapElement) {
42
+ if (focusTrapElement && !focusTrapElement.topReboundElement && !focusTrapElement.bottomReboundElement) {
43
+ focusTrapElement.topReboundElement = createFocusTrapReboundElement(document);
44
+ focusTrapElement.bottomReboundElement = createFocusTrapReboundElement(document);
45
+ const parent = focusTrapElement.parentElement;
46
+ const sibling = focusTrapElement.nextSibling;
47
+ if (parent) {
48
+ parent.insertBefore(focusTrapElement.topReboundElement, focusTrapElement);
49
+ if (sibling) {
50
+ parent.insertBefore(focusTrapElement.bottomReboundElement, sibling);
51
+ }
52
+ else {
53
+ parent.appendChild(focusTrapElement.bottomReboundElement);
54
+ }
55
+ }
56
+ }
57
+ }
58
+ export function removeReboundElementsFromFocusTrapElement(focusTrapElement) {
59
+ if (focusTrapElement) {
60
+ const parent = focusTrapElement.parentElement;
61
+ if (parent) {
62
+ const topRebound = focusTrapElement.topReboundElement;
63
+ const bottomRebound = focusTrapElement.bottomReboundElement;
64
+ if (topRebound) {
65
+ parent.removeChild(topRebound);
66
+ }
67
+ if (bottomRebound) {
68
+ parent.removeChild(bottomRebound);
69
+ }
70
+ }
71
+ // These are here to to make sure that we completely delete all traces of the removed DOM objects.
72
+ delete focusTrapElement.topReboundElement;
73
+ delete focusTrapElement.bottomReboundElement;
74
+ }
75
+ }
76
+ // this helper exists to enable the focus trap class to handle vanilla html elements
77
+ // it's primary concern is to keep TS happy.
78
+ export function castHtmlElementToFocusTrapElement(el) {
79
+ return el;
80
+ }
81
+ export class FocusTrap {
82
+ constructor(renderer, injector, platformId, hostElement) {
83
+ this.renderer = renderer;
84
+ this.active = false;
85
+ if (isPlatformBrowser(platformId)) {
86
+ this._document = injector.get(DOCUMENT);
87
+ }
88
+ hostElement = castHtmlElementToFocusTrapElement(hostElement);
89
+ if (!hostElement.focusTrapId) {
90
+ hostElement.focusTrapId = createId();
91
+ }
92
+ this.focusTrapElement = hostElement;
93
+ }
94
+ enableFocusTrap() {
95
+ const fte = this.focusTrapElement;
96
+ const firstFocusElement = fte.querySelector('[cds-first-focus]');
97
+ const activeEl = this._document.activeElement;
98
+ if (FocusTrapTrackerService.getCurrent() === fte) {
99
+ throw new Error('Focus trap is already enabled for this instance.');
100
+ }
101
+ this.firstFocusElement = firstFocusElement || this.focusTrapElement;
102
+ addReboundElementsToFocusTrapElement(this._document, fte);
103
+ if (!isFocusable(fte)) {
104
+ fte.setAttribute('tabindex', '-1');
105
+ }
106
+ if (activeEl && isHTMLElement(activeEl)) {
107
+ this.previousFocus = activeEl;
108
+ }
109
+ FocusTrapTrackerService.setCurrent(fte);
110
+ // setTimeout here is required for Safari which may try to set focus on
111
+ // element before it is visible...
112
+ const focusTimer = setTimeout(() => {
113
+ this.firstFocusElement.focus();
114
+ clearTimeout(focusTimer);
115
+ }, 10);
116
+ this.onFocusInEvent = this.onFocusIn.bind(this);
117
+ this.unlisten = this.renderer.listen(this._document, 'focusin', this.onFocusInEvent);
118
+ this.active = true;
119
+ }
120
+ removeFocusTrap() {
121
+ if (this.unlisten) {
122
+ this.unlisten();
123
+ }
124
+ removeReboundElementsFromFocusTrapElement(this.focusTrapElement);
125
+ this.renderer.removeAttribute(this.focusTrapElement, 'tabindex');
126
+ FocusTrapTrackerService.activatePreviousCurrent();
127
+ this.active = false;
128
+ if (this.previousFocus) {
129
+ this.previousFocus.focus();
130
+ }
131
+ }
132
+ onFocusIn(event) {
133
+ refocusIfOutsideFocusTrapElement(event.composedPath()[0], this.focusTrapElement, this.firstFocusElement);
134
+ }
135
+ }
136
+ FocusTrap.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: FocusTrap, deps: "invalid", target: i0.ɵɵFactoryTarget.Injectable });
137
+ FocusTrap.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: FocusTrap });
138
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: FocusTrap, decorators: [{
139
+ type: Injectable
140
+ }], ctorParameters: function () { return [{ type: i0.Renderer2 }, { type: i0.Injector }, { type: undefined }, { type: undefined }]; } });
141
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9jdXMtdHJhcC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FuZ3VsYXIvc3JjL3V0aWxzL2ZvY3VzLXRyYXAvZm9jdXMtdHJhcC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7OztHQUlHO0FBRUgsT0FBTyxFQUFFLFFBQVEsRUFBRSx1QkFBdUIsRUFBRSxXQUFXLEVBQUUsYUFBYSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDbkcsT0FBTyxFQUFFLFFBQVEsRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzlELE9BQU8sRUFBRSxVQUFVLEVBQXVCLE1BQU0sZUFBZSxDQUFDOztBQVFoRSxNQUFNLFVBQVUsZ0NBQWdDLENBQzlDLGNBQTJCLEVBQzNCLGdCQUFrQyxFQUNsQyxnQkFBOEI7SUFFOUIsTUFBTSxrQkFBa0IsR0FBRyx1QkFBdUIsQ0FBQyxVQUFVLEVBQUUsS0FBSyxnQkFBZ0IsQ0FBQztJQUNyRixNQUFNLGdDQUFnQyxHQUFHLGdDQUFnQyxDQUFDLGNBQWMsRUFBRSxnQkFBZ0IsQ0FBQyxDQUFDO0lBRTVHLElBQUksa0JBQWtCLElBQUksZ0NBQWdDLEVBQUU7UUFDMUQsZ0JBQWdCLEdBQUcsZ0JBQWdCLElBQUksZ0JBQWdCLENBQUM7UUFDeEQsZ0JBQWdCLENBQUMsS0FBSyxFQUFFLENBQUM7S0FDMUI7U0FBTTtRQUNMLGNBQWMsQ0FBQyxLQUFLLEVBQUUsQ0FBQztLQUN4QjtBQUNILENBQUM7QUFFRCxNQUFNLFVBQVUsZ0NBQWdDLENBQzlDLGNBQTJCLEVBQzNCLGdCQUFrQztJQUVsQyxJQUNFLGNBQWMsS0FBSyxnQkFBZ0IsQ0FBQyxpQkFBaUI7UUFDckQsY0FBYyxLQUFLLGdCQUFnQixDQUFDLG9CQUFvQixFQUN4RDtRQUNBLE9BQU8sSUFBSSxDQUFDO0tBQ2I7SUFFRCxNQUFNLDRCQUE0QixHQUFHLGdCQUFnQixDQUFDLFFBQVEsQ0FBQyxjQUFjLENBQUMs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QUFDLENBQUM7UUFFUCxJQUFJLENBQUMsY0FBYyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ2hELElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxTQUFTLEVBQUUsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDO1FBQ3JGLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDO0lBQ3JCLENBQUM7SUFFRCxlQUFlO1FBQ2IsSUFBSSxJQUFJLENBQUMsUUFBUSxFQUFFO1lBQ2pCLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztTQUNqQjtRQUVELHlDQUF5QyxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO1FBQ2pFLElBQUksQ0FBQyxRQUFRLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxVQUFVLENBQUMsQ0FBQztRQUNqRSx1QkFBdUIsQ0FBQyx1QkFBdUIsRUFBRSxDQUFDO1FBQ2xELElBQUksQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFDO1FBQ3BCLElBQUksSUFBSSxDQUFDLGFBQWEsRUFBRTtZQUN0QixJQUFJLENBQUMsYUFBYSxDQUFDLEtBQUssRUFBRSxDQUFDO1NBQzVCO0lBQ0gsQ0FBQztJQUVPLFNBQVMsQ0FBQyxLQUFpQjtRQUNqQyxnQ0FBZ0MsQ0FDOUIsS0FBSyxDQUFDLFlBQVksRUFBRSxDQUFDLENBQUMsQ0FBZ0IsRUFDdEMsSUFBSSxDQUFDLGdCQUFnQixFQUNyQixJQUFJLENBQUMsaUJBQWlCLENBQ3ZCLENBQUM7SUFDSixDQUFDOztzR0FqRlUsU0FBUzswR0FBVCxTQUFTOzJGQUFULFNBQVM7a0JBRHJCLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogQ29weXJpZ2h0IChjKSAyMDE2LTIwMjIgVk13YXJlLCBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKiBUaGlzIHNvZnR3YXJlIGlzIHJlbGVhc2VkIHVuZGVyIE1JVCBsaWNlbnNlLlxuICogVGhlIGZ1bGwgbGljZW5zZSBpbmZvcm1hdGlvbiBjYW4gYmUgZm91bmQgaW4gTElDRU5TRSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBwcm9qZWN0LlxuICovXG5cbmltcG9ydCB7IGNyZWF0ZUlkLCBGb2N1c1RyYXBUcmFja2VyU2VydmljZSwgaXNGb2N1c2FibGUsIGlzSFRNTEVsZW1lbnQgfSBmcm9tICdAY2RzL2NvcmUvaW50ZXJuYWwnO1xuaW1wb3J0IHsgRE9DVU1FTlQsIGlzUGxhdGZvcm1Ccm93c2VyIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IEluamVjdGFibGUsIEluamVjdG9yLCBSZW5kZXJlcjIgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuZXhwb3J0IGludGVyZmFjZSBGb2N1c1RyYXBFbGVtZW50IGV4dGVuZHMgSFRNTEVsZW1lbnQge1xuICB0b3BSZWJvdW5kRWxlbWVudDogSFRNTEVsZW1lbnQgfCB1bmRlZmluZWQ7XG4gIGJvdHRvbVJlYm91bmRFbGVtZW50OiBIVE1MRWxlbWVudCB8IHVuZGVmaW5lZDtcbiAgZm9jdXNUcmFwSWQ6IHN0cmluZztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHJlZm9jdXNJZk91dHNpZGVGb2N1c1RyYXBFbGVtZW50KFxuICBmb2N1c2VkRWxlbWVudDogSFRNTEVsZW1lbnQsXG4gIGZvY3VzVHJhcEVsZW1lbnQ6IEZvY3VzVHJhcEVsZW1lbnQsXG4gIGVsZW1lbnRUb1JlZm9jdXM/OiBIVE1MRWxlbWVudFxuKSB7XG4gIGNvbnN0IGZvY3VzVHJhcElzQ3VycmVudCA9IEZvY3VzVHJhcFRyYWNrZXJTZXJ2aWNlLmdldEN1cnJlbnQoKSA9PT0gZm9jdXNUcmFwRWxlbWVudDtcbiAgY29uc3QgZWxlbWVudFRvRm9jdXNJc091dHNpZGVGb2N1c1RyYXAgPSBlbGVtZW50SXNPdXRzaWRlRm9jdXNUcmFwRWxlbWVudChmb2N1c2VkRWxlbWVudCwgZm9jdXNUcmFwRWxlbWVudCk7XG5cbiAgaWYgKGZvY3VzVHJhcElzQ3VycmVudCAmJiBlbGVtZW50VG9Gb2N1c0lzT3V0c2lkZUZvY3VzVHJhcCkge1xuICAgIGVsZW1lbnRUb1JlZm9jdXMgPSBlbGVtZW50VG9SZWZvY3VzIHx8IGZvY3VzVHJhcEVsZW1lbnQ7XG4gICAgZWxlbWVudFRvUmVmb2N1cy5mb2N1cygpO1xuICB9IGVsc2Uge1xuICAgIGZvY3VzZWRFbGVtZW50LmZvY3VzKCk7XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGVsZW1lbnRJc091dHNpZGVGb2N1c1RyYXBFbGVtZW50KFxuICBmb2N1c2VkRWxlbWVudDogSFRNTEVsZW1lbnQsXG4gIGZvY3VzVHJhcEVsZW1lbnQ6IEZvY3VzVHJhcEVsZW1lbnRcbik6IGJvb2xlYW4ge1xuICBpZiAoXG4gICAgZm9jdXNlZEVsZW1lbnQgPT09IGZvY3VzVHJhcEVsZW1lbnQudG9wUmVib3VuZEVsZW1lbnQgfHxcbiAgICBmb2N1c2VkRWxlbWVudCA9PT0gZm9jdXNUcmFwRWxlbWVudC5ib3R0b21SZWJvdW5kRWxlbWVudFxuICApIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIGNvbnN0IGVsZW1lbnRJc0luRm9jdXNUcmFwTGlnaHREb20gPSBmb2N1c1RyYXBFbGVtZW50LmNvbnRhaW5zKGZvY3VzZWRFbGVtZW50KTtcblxuICBpZiAoZWxlbWVudElzSW5Gb2N1c1RyYXBMaWdodERvbSkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIGlmIChmb2N1c1RyYXBFbGVtZW50ICE9PSBudWxsICYmIGZvY3VzVHJhcEVsZW1lbnQuY29udGFpbnMoZm9jdXNlZEVsZW1lbnQpKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgcmV0dXJuIHRydWU7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVGb2N1c1RyYXBSZWJvdW5kRWxlbWVudChkb2N1bWVudDogRG9jdW1lbnQpIHtcbiAgY29uc3Qgb2ZmU2NyZWVuU3BhbiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3NwYW4nKTtcbiAgb2ZmU2NyZWVuU3Bhbi5zZXRBdHRyaWJ1dGUoJ3RhYmluZGV4JywgJzAnKTtcbiAgb2ZmU2NyZWVuU3Bhbi5jbGFzc0xpc3QuYWRkKCdvZmZzY3JlZW4tZm9jdXMtcmVib3VuZGVyJyk7XG4gIHJldHVybiBvZmZTY3JlZW5TcGFuO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gYWRkUmVib3VuZEVsZW1lbnRzVG9Gb2N1c1RyYXBFbGVtZW50KGRvY3VtZW50OiBEb2N1bWVudCwgZm9jdXNUcmFwRWxlbWVudDogRm9jdXNUcmFwRWxlbWVudCkge1xuICBpZiAoZm9jdXNUcmFwRWxlbWVudCAmJiAhZm9jdXNUcmFwRWxlbWVudC50b3BSZWJvdW5kRWxlbWVudCAmJiAhZm9jdXNUcmFwRWxlbWVudC5ib3R0b21SZWJvdW5kRWxlbWVudCkge1xuICAgIGZvY3VzVHJhcEVsZW1lbnQudG9wUmVib3VuZEVsZW1lbnQgPSBjcmVhdGVGb2N1c1RyYXBSZWJvdW5kRWxlbWVudChkb2N1bWVudCk7XG4gICAgZm9jdXNUcmFwRWxlbWVudC5ib3R0b21SZWJvdW5kRWxlbWVudCA9IGNyZWF0ZUZvY3VzVHJhcFJlYm91bmRFbGVtZW50KGRvY3VtZW50KTtcblxuICAgIGNvbnN0IHBhcmVudCA9IGZvY3VzVHJhcEVsZW1lbnQucGFyZW50RWxlbWVudDtcbiAgICBjb25zdCBzaWJsaW5nID0gZm9jdXNUcmFwRWxlbWVudC5uZXh0U2libGluZztcblxuICAgIGlmIChwYXJlbnQpIHtcbiAgICAgIHBhcmVudC5pbnNlcnRCZWZvcmUoZm9jdXNUcmFwRWxlbWVudC50b3BSZWJvdW5kRWxlbWVudCwgZm9jdXNUcmFwRWxlbWVudCk7XG4gICAgICBpZiAoc2libGluZykge1xuICAgICAgICBwYXJlbnQuaW5zZXJ0QmVmb3JlKGZvY3VzVHJhcEVsZW1lbnQuYm90dG9tUmVib3VuZEVsZW1lbnQsIHNpYmxpbmcpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcGFyZW50LmFwcGVuZENoaWxkKGZvY3VzVHJhcEVsZW1lbnQuYm90dG9tUmVib3VuZEVsZW1lbnQpO1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gcmVtb3ZlUmVib3VuZEVsZW1lbnRzRnJvbUZvY3VzVHJhcEVsZW1lbnQoZm9jdXNUcmFwRWxlbWVudDogRm9jdXNUcmFwRWxlbWVudCkge1xuICBpZiAoZm9jdXNUcmFwRWxlbWVudCkge1xuICAgIGNvbnN0IHBhcmVudCA9IGZvY3VzVHJhcEVsZW1lbnQucGFyZW50RWxlbWVudDtcblxuICAgIGlmIChwYXJlbnQpIHtcbiAgICAgIGNvbnN0IHRvcFJlYm91bmQgPSBmb2N1c1RyYXBFbGVtZW50LnRvcFJlYm91bmRFbGVtZW50O1xuICAgICAgY29uc3QgYm90dG9tUmVib3VuZCA9IGZvY3VzVHJhcEVsZW1lbnQuYm90dG9tUmVib3VuZEVsZW1lbnQ7XG4gICAgICBpZiAodG9wUmVib3VuZCkge1xuICAgICAgICBwYXJlbnQucmVtb3ZlQ2hpbGQodG9wUmVib3VuZCk7XG4gICAgICB9XG4gICAgICBpZiAoYm90dG9tUmVib3VuZCkge1xuICAgICAgICBwYXJlbnQucmVtb3ZlQ2hpbGQoYm90dG9tUmVib3VuZCk7XG4gICAgICB9XG4gICAgfVxuICAgIC8vIFRoZXNlIGFyZSBoZXJlIHRvIHRvIG1ha2Ugc3VyZSB0aGF0IHdlIGNvbXBsZXRlbHkgZGVsZXRlIGFsbCB0cmFjZXMgb2YgdGhlIHJlbW92ZWQgRE9NIG9iamVjdHMuXG4gICAgZGVsZXRlIGZvY3VzVHJhcEVsZW1lbnQudG9wUmVib3VuZEVsZW1lbnQ7XG4gICAgZGVsZXRlIGZvY3VzVHJhcEVsZW1lbnQuYm90dG9tUmVib3VuZEVsZW1lbnQ7XG4gIH1cbn1cblxuLy8gdGhpcyBoZWxwZXIgZXhpc3RzIHRvIGVuYWJsZSB0aGUgZm9jdXMgdHJhcCBjbGFzcyB0byBoYW5kbGUgdmFuaWxsYSBodG1sIGVsZW1lbnRzXG4vLyBpdCdzIHByaW1hcnkgY29uY2VybiBpcyB0byBrZWVwIFRTIGhhcHB5LlxuZXhwb3J0IGZ1bmN0aW9uIGNhc3RIdG1sRWxlbWVudFRvRm9jdXNUcmFwRWxlbWVudChlbDogSFRNTEVsZW1lbnQpOiBGb2N1c1RyYXBFbGVtZW50IHtcbiAgcmV0dXJuIGVsIGFzIEZvY3VzVHJhcEVsZW1lbnQ7XG59XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBGb2N1c1RyYXAge1xuICBmb2N1c1RyYXBFbGVtZW50OiBGb2N1c1RyYXBFbGVtZW50O1xuICBwcml2YXRlIHByZXZpb3VzRm9jdXM6IEhUTUxFbGVtZW50O1xuICBwcml2YXRlIG9uRm9jdXNJbkV2ZW50OiAoKSA9PiB2b2lkO1xuICBwcml2YXRlIHVubGlzdGVuOiAoKSA9PiB2b2lkO1xuXG4gIHByb3RlY3RlZCBfZG9jdW1lbnQ6IERvY3VtZW50O1xuXG4gIGZpcnN0Rm9jdXNFbGVtZW50OiBIVE1MRWxlbWVudCB8IEZvY3VzVHJhcEVsZW1lbnQ7XG5cbiAgYWN0aXZlID0gZmFsc2U7XG5cbiAgY29uc3RydWN0b3IocHJvdGVjdGVkIHJlbmRlcmVyOiBSZW5kZXJlcjIsIGluamVjdG9yOiBJbmplY3RvciwgcGxhdGZvcm1JZDogYW55LCBob3N0RWxlbWVudDogRm9jdXNUcmFwRWxlbWVudCkge1xuICAgIGlmIChpc1BsYXRmb3JtQnJvd3NlcihwbGF0Zm9ybUlkKSkge1xuICAgICAgdGhpcy5fZG9jdW1lbnQgPSBpbmplY3Rvci5nZXQoRE9DVU1FTlQpO1xuICAgIH1cblxuICAgIGhvc3RFbGVtZW50ID0gY2FzdEh0bWxFbGVtZW50VG9Gb2N1c1RyYXBFbGVtZW50KGhvc3RFbGVtZW50KTtcblxuICAgIGlmICghaG9zdEVsZW1lbnQuZm9jdXNUcmFwSWQpIHtcbiAgICAgIGhvc3RFbGVtZW50LmZvY3VzVHJhcElkID0gY3JlYXRlSWQoKTtcbiAgICB9XG5cbiAgICB0aGlzLmZvY3VzVHJhcEVsZW1lbnQgPSBob3N0RWxlbWVudDtcbiAgfVxuXG4gIGVuYWJsZUZvY3VzVHJhcCgpIHtcbiAgICBjb25zdCBmdGUgPSB0aGlzLmZvY3VzVHJhcEVsZW1lbnQ7XG4gICAgY29uc3QgZmlyc3RGb2N1c0VsZW1lbnQgPSBmdGUucXVlcnlTZWxlY3RvcignW2Nkcy1maXJzdC1mb2N1c10nKTtcbiAgICBjb25zdCBhY3RpdmVFbCA9IHRoaXMuX2RvY3VtZW50LmFjdGl2ZUVsZW1lbnQ7XG5cbiAgICBpZiAoRm9jdXNUcmFwVHJhY2tlclNlcnZpY2UuZ2V0Q3VycmVudCgpID09PSBmdGUpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignRm9jdXMgdHJhcCBpcyBhbHJlYWR5IGVuYWJsZWQgZm9yIHRoaXMgaW5zdGFuY2UuJyk7XG4gICAgfVxuXG4gICAgdGhpcy5maXJzdEZvY3VzRWxlbWVudCA9IChmaXJzdEZvY3VzRWxlbWVudCBhcyBIVE1MRWxlbWVudCkgfHwgdGhpcy5mb2N1c1RyYXBFbGVtZW50O1xuXG4gICAgYWRkUmVib3VuZEVsZW1lbnRzVG9Gb2N1c1RyYXBFbGVtZW50KHRoaXMuX2RvY3VtZW50LCBmdGUpO1xuXG4gICAgaWYgKCFpc0ZvY3VzYWJsZShmdGUpKSB7XG4gICAgICBmdGUuc2V0QXR0cmlidXRlKCd0YWJpbmRleCcsICctMScpO1xuICAgIH1cblxuICAgIGlmIChhY3RpdmVFbCAmJiBpc0hUTUxFbGVtZW50KGFjdGl2ZUVsKSkge1xuICAgICAgdGhpcy5wcmV2aW91c0ZvY3VzID0gYWN0aXZlRWwgYXMgSFRNTEVsZW1lbnQ7XG4gICAgfVxuXG4gICAgRm9jdXNUcmFwVHJhY2tlclNlcnZpY2Uuc2V0Q3VycmVudChmdGUpO1xuXG4gICAgLy8gc2V0VGltZW91dCBoZXJlIGlzIHJlcXVpcmVkIGZvciBTYWZhcmkgd2hpY2ggbWF5IHRyeSB0byBzZXQgZm9jdXMgb25cbiAgICAvLyBlbGVtZW50IGJlZm9yZSBpdCBpcyB2aXNpYmxlLi4uXG4gICAgY29uc3QgZm9jdXNUaW1lciA9IHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgdGhpcy5maXJzdEZvY3VzRWxlbWVudC5mb2N1cygpO1xuICAgICAgY2xlYXJUaW1lb3V0KGZvY3VzVGltZXIpO1xuICAgIH0sIDEwKTtcblxuICAgIHRoaXMub25Gb2N1c0luRXZlbnQgPSB0aGlzLm9uRm9jdXNJbi5iaW5kKHRoaXMpO1xuICAgIHRoaXMudW5saXN0ZW4gPSB0aGlzLnJlbmRlcmVyLmxpc3Rlbih0aGlzLl9kb2N1bWVudCwgJ2ZvY3VzaW4nLCB0aGlzLm9uRm9jdXNJbkV2ZW50KTtcbiAgICB0aGlzLmFjdGl2ZSA9IHRydWU7XG4gIH1cblxuICByZW1vdmVGb2N1c1RyYXAoKSB7XG4gICAgaWYgKHRoaXMudW5saXN0ZW4pIHtcbiAgICAgIHRoaXMudW5saXN0ZW4oKTtcbiAgICB9XG5cbiAgICByZW1vdmVSZWJvdW5kRWxlbWVudHNGcm9tRm9jdXNUcmFwRWxlbWVudCh0aGlzLmZvY3VzVHJhcEVsZW1lbnQpO1xuICAgIHRoaXMucmVuZGVyZXIucmVtb3ZlQXR0cmlidXRlKHRoaXMuZm9jdXNUcmFwRWxlbWVudCwgJ3RhYmluZGV4Jyk7XG4gICAgRm9jdXNUcmFwVHJhY2tlclNlcnZpY2UuYWN0aXZhdGVQcmV2aW91c0N1cnJlbnQoKTtcbiAgICB0aGlzLmFjdGl2ZSA9IGZhbHNlO1xuICAgIGlmICh0aGlzLnByZXZpb3VzRm9jdXMpIHtcbiAgICAgIHRoaXMucHJldmlvdXNGb2N1cy5mb2N1cygpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgb25Gb2N1c0luKGV2ZW50OiBGb2N1c0V2ZW50KSB7XG4gICAgcmVmb2N1c0lmT3V0c2lkZUZvY3VzVHJhcEVsZW1lbnQoXG4gICAgICBldmVudC5jb21wb3NlZFBhdGgoKVswXSBhcyBIVE1MRWxlbWVudCxcbiAgICAgIHRoaXMuZm9jdXNUcmFwRWxlbWVudCxcbiAgICAgIHRoaXMuZmlyc3RGb2N1c0VsZW1lbnRcbiAgICApO1xuICB9XG59XG4iXX0=
@@ -12,4 +12,5 @@ export * from './drag-and-drop/index';
12
12
  export * from './popover/index';
13
13
  export * from './focus/focus-on-view-init/index';
14
14
  export * from './focus-trap/index';
15
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9hbmd1bGFyL3NyYy91dGlscy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7OztHQUlHO0FBRUgsY0FBYyxvQkFBb0IsQ0FBQztBQUNuQyxjQUFjLGlCQUFpQixDQUFDO0FBQ2hDLGNBQWMscUJBQXFCLENBQUM7QUFDcEMsY0FBYyxjQUFjLENBQUM7QUFDN0IsY0FBYyxjQUFjLENBQUM7QUFDN0IsY0FBYyx1QkFBdUIsQ0FBQztBQUN0QyxjQUFjLGlCQUFpQixDQUFDO0FBQ2hDLGNBQWMsa0NBQWtDLENBQUM7QUFDakQsY0FBYyxvQkFBb0IsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTYtMjAyMiBWTXdhcmUsIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqIFRoaXMgc29mdHdhcmUgaXMgcmVsZWFzZWQgdW5kZXIgTUlUIGxpY2Vuc2UuXG4gKiBUaGUgZnVsbCBsaWNlbnNlIGluZm9ybWF0aW9uIGNhbiBiZSBmb3VuZCBpbiBMSUNFTlNFIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHByb2plY3QuXG4gKi9cblxuZXhwb3J0ICogZnJvbSAnLi9hbmltYXRpb25zL2luZGV4JztcbmV4cG9ydCAqIGZyb20gJy4vbG9hZGluZy9pbmRleCc7XG5leHBvcnQgKiBmcm9tICcuL2NvbmRpdGlvbmFsL2luZGV4JztcbmV4cG9ydCAqIGZyb20gJy4vaTE4bi9pbmRleCc7XG5leHBvcnQgKiBmcm9tICcuL2ExMXkvaW5kZXgnO1xuZXhwb3J0ICogZnJvbSAnLi9kcmFnLWFuZC1kcm9wL2luZGV4JztcbmV4cG9ydCAqIGZyb20gJy4vcG9wb3Zlci9pbmRleCc7XG5leHBvcnQgKiBmcm9tICcuL2ZvY3VzL2ZvY3VzLW9uLXZpZXctaW5pdC9pbmRleCc7XG5leHBvcnQgKiBmcm9tICcuL2ZvY3VzLXRyYXAvaW5kZXgnO1xuIl19
15
+ export * from './destroy';
16
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9hbmd1bGFyL3NyYy91dGlscy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7OztHQUlHO0FBRUgsY0FBYyxvQkFBb0IsQ0FBQztBQUNuQyxjQUFjLGlCQUFpQixDQUFDO0FBQ2hDLGNBQWMscUJBQXFCLENBQUM7QUFDcEMsY0FBYyxjQUFjLENBQUM7QUFDN0IsY0FBYyxjQUFjLENBQUM7QUFDN0IsY0FBYyx1QkFBdUIsQ0FBQztBQUN0QyxjQUFjLGlCQUFpQixDQUFDO0FBQ2hDLGNBQWMsa0NBQWtDLENBQUM7QUFDakQsY0FBYyxvQkFBb0IsQ0FBQztBQUNuQyxjQUFjLFdBQVcsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTYtMjAyMiBWTXdhcmUsIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqIFRoaXMgc29mdHdhcmUgaXMgcmVsZWFzZWQgdW5kZXIgTUlUIGxpY2Vuc2UuXG4gKiBUaGUgZnVsbCBsaWNlbnNlIGluZm9ybWF0aW9uIGNhbiBiZSBmb3VuZCBpbiBMSUNFTlNFIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHByb2plY3QuXG4gKi9cblxuZXhwb3J0ICogZnJvbSAnLi9hbmltYXRpb25zL2luZGV4JztcbmV4cG9ydCAqIGZyb20gJy4vbG9hZGluZy9pbmRleCc7XG5leHBvcnQgKiBmcm9tICcuL2NvbmRpdGlvbmFsL2luZGV4JztcbmV4cG9ydCAqIGZyb20gJy4vaTE4bi9pbmRleCc7XG5leHBvcnQgKiBmcm9tICcuL2ExMXkvaW5kZXgnO1xuZXhwb3J0ICogZnJvbSAnLi9kcmFnLWFuZC1kcm9wL2luZGV4JztcbmV4cG9ydCAqIGZyb20gJy4vcG9wb3Zlci9pbmRleCc7XG5leHBvcnQgKiBmcm9tICcuL2ZvY3VzL2ZvY3VzLW9uLXZpZXctaW5pdC9pbmRleCc7XG5leHBvcnQgKiBmcm9tICcuL2ZvY3VzLXRyYXAvaW5kZXgnO1xuZXhwb3J0ICogZnJvbSAnLi9kZXN0cm95JztcbiJdfQ==
@@ -22,6 +22,7 @@ export class ClrPopoverContent {
22
22
  this.smartEventsService = smartEventsService;
23
23
  this.smartOpenService = smartOpenService;
24
24
  this.subscriptions = [];
25
+ this.removeClickListenerFn = null;
25
26
  this.shouldRealign = false;
26
27
  // Check-collector pattern:
27
28
  // In order to get accurate content height/width values, we cannot calculate alignment offsets until
@@ -77,6 +78,10 @@ export class ClrPopoverContent {
77
78
  if (!this.view) {
78
79
  return;
79
80
  }
81
+ if (this.removeClickListenerFn) {
82
+ this.removeClickListenerFn();
83
+ this.removeClickListenerFn = null;
84
+ }
80
85
  this.view.rootNodes.forEach(node => this.renderer.removeChild(this.document.body, node));
81
86
  this.container.clear();
82
87
  delete this.view;
@@ -91,16 +96,17 @@ export class ClrPopoverContent {
91
96
  addContent() {
92
97
  // Create the view container
93
98
  this.view = this.container.createEmbeddedView(this.template);
94
- this.smartEventsService.contentRef = this.view.rootNodes[0]; // So we know where/what to set close focus on
95
- this.renderer.addClass(this.view.rootNodes[0], 'clr-popover-content');
99
+ const [rootNode] = this.view.rootNodes;
100
+ this.smartEventsService.contentRef = rootNode; // So we know where/what to set close focus on
101
+ this.renderer.addClass(rootNode, 'clr-popover-content');
96
102
  // Reset to the begining of the document to be available for sizing/positioning calculations.
97
103
  // If we add new content to the bottom it triggers changes in the layout that may lead to false anchor
98
104
  // coordinates values.
99
- this.renderer.setStyle(this.view.rootNodes[0], 'top', '0px');
100
- this.renderer.setStyle(this.view.rootNodes[0], 'left', '0px');
105
+ this.renderer.setStyle(rootNode, 'top', '0px');
106
+ this.renderer.setStyle(rootNode, 'left', '0px');
101
107
  // We need to hide it during the calculation phase, while it's not yet finally positioned.
102
- this.renderer.setStyle(this.view.rootNodes[0], 'opacity', '0');
103
- this.renderer.listen(this.view.rootNodes[0], 'click', event => {
108
+ this.renderer.setStyle(rootNode, 'opacity', '0');
109
+ this.removeClickListenerFn = this.renderer.listen(rootNode, 'click', event => {
104
110
  this.smartOpenService.openEvent = event;
105
111
  });
106
112
  this.view.rootNodes.forEach(node => {
@@ -130,7 +136,7 @@ ClrPopoverContent.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", vers
130
136
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: ClrPopoverContent, decorators: [{
131
137
  type: Directive,
132
138
  args: [{ selector: '[clrPopoverContent]' }]
133
- }], ctorParameters: function () { return [{ type: HTMLDocument, decorators: [{
139
+ }], ctorParameters: function () { return [{ type: Document, decorators: [{
134
140
  type: Inject,
135
141
  args: [DOCUMENT]
136
142
  }] }, { type: i0.ViewContainerRef }, { type: i0.TemplateRef }, { type: i0.Renderer2 }, { type: i1.ClrPopoverPositionService }, { type: i2.ClrPopoverEventsService }, { type: i3.ClrPopoverToggleService }]; }, propDecorators: { open: [{
@@ -146,4 +152,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImpor
146
152
  type: Input,
147
153
  args: ['clrPopoverContentScrollToClose']
148
154
  }] } });
149
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG9wb3Zlci1jb250ZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYW5ndWxhci9zcmMvdXRpbHMvcG9wb3Zlci9wb3BvdmVyLWNvbnRlbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7R0FJRztBQUVILE9BQU8sRUFDTCxTQUFTLEVBRVQsTUFBTSxFQUNOLEtBQUssRUFNTCxZQUFZLEdBQ2IsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBTzNDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7Ozs7QUFFOUMseUVBQXlFO0FBQ3pFLGVBQWU7QUFFZixNQUFNLE9BQU8saUJBQWlCO0lBd0I1QixZQUM0QixRQUFzQixFQUN4QyxTQUEyQixFQUMzQixRQUEwQixFQUMxQixRQUFtQixFQUNuQixvQkFBK0MsRUFDL0Msa0JBQTJDLEVBQzNDLGdCQUF5QztRQU52QixhQUFRLEdBQVIsUUFBUSxDQUFjO1FBQ3hDLGNBQVMsR0FBVCxTQUFTLENBQWtCO1FBQzNCLGFBQVEsR0FBUixRQUFRLENBQWtCO1FBQzFCLGFBQVEsR0FBUixRQUFRLENBQVc7UUFDbkIseUJBQW9CLEdBQXBCLG9CQUFvQixDQUEyQjtRQUMvQyx1QkFBa0IsR0FBbEIsa0JBQWtCLENBQXlCO1FBQzNDLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBeUI7UUE3QjNDLGtCQUFhLEdBQW1CLEVBQUUsQ0FBQztRQXdHbkMsa0JBQWEsR0FBRyxLQUFLLENBQUM7UUFFOUIsMkJBQTJCO1FBQzNCLG9HQUFvRztRQUNwRyw4Q0FBOEM7UUFDOUMsaUdBQWlHO1FBQ2pHLHdHQUF3RztRQUN4RywyRUFBMkU7UUFDbkUsbUJBQWMsR0FBdUIsSUFBSSxZQUFZLEVBQUUsQ0FBQztJQWxGN0QsQ0FBQztJQTVCSixJQUNXLElBQUksQ0FBQyxLQUFjO1FBQzVCLElBQUks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QURwQixLQUFLO3VCQUFDLHNDQUFzQztnQkFNekMsYUFBYTtzQkFEaEIsS0FBSzt1QkFBQyxnQ0FBZ0MiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogQ29weXJpZ2h0IChjKSAyMDE2LTIwMjIgVk13YXJlLCBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKiBUaGlzIHNvZnR3YXJlIGlzIHJlbGVhc2VkIHVuZGVyIE1JVCBsaWNlbnNlLlxuICogVGhlIGZ1bGwgbGljZW5zZSBpbmZvcm1hdGlvbiBjYW4gYmUgZm91bmQgaW4gTElDRU5TRSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBwcm9qZWN0LlxuICovXG5cbmltcG9ydCB7XG4gIERpcmVjdGl2ZSxcbiAgRW1iZWRkZWRWaWV3UmVmLFxuICBJbmplY3QsXG4gIElucHV0LFxuICBPbkRlc3Ryb3ksXG4gIFJlbmRlcmVyMixcbiAgVGVtcGxhdGVSZWYsXG4gIFZpZXdDb250YWluZXJSZWYsXG4gIEFmdGVyQ29udGVudENoZWNrZWQsXG4gIEV2ZW50RW1pdHRlcixcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBET0NVTUVOVCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHsgQ2xyUG9wb3ZlclRvZ2dsZVNlcnZpY2UgfSBmcm9tICcuL3Byb3ZpZGVycy9wb3BvdmVyLXRvZ2dsZS5zZXJ2aWNlJztcbmltcG9ydCB7IENsclBvcG92ZXJFdmVudHNTZXJ2aWNlIH0gZnJvbSAnLi9wcm92aWRlcnMvcG9wb3Zlci1ldmVudHMuc2VydmljZSc7XG5pbXBvcnQgeyBDbHJQb3BvdmVyUG9zaXRpb25TZXJ2aWNlIH0gZnJvbSAnLi9wcm92aWRlcnMvcG9wb3Zlci1wb3NpdGlvbi5zZXJ2aWNlJztcbmltcG9ydCB7IENsclBvcG92ZXJQb3NpdGlvbiB9IGZyb20gJy4vaW50ZXJmYWNlcy9wb3BvdmVyLXBvc2l0aW9uLmludGVyZmFjZSc7XG5pbXBvcnQgeyBkZWJvdW5jZVRpbWUgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbi8vIGh0dHBzOi8vZ2l0aHViLmNvbS9hbmd1bGFyL2FuZ3VsYXIvaXNzdWVzLzIwMzUxI2lzc3VlY29tbWVudC0zNDQwMDk4ODdcbi8qKiBAZHluYW1pYyAqL1xuQERpcmVjdGl2ZSh7IHNlbGVjdG9yOiAnW2NsclBvcG92ZXJDb250ZW50XScgfSlcbmV4cG9ydCBjbGFzcyBDbHJQb3BvdmVyQ29udGVudCBpbXBsZW1lbnRzIEFmdGVyQ29udGVudENoZWNrZWQsIE9uRGVzdHJveSB7XG4gIHByaXZhdGUgdmlldzogRW1iZWRkZWRWaWV3UmVmPHZvaWQ+O1xuICBwcml2YXRlIHN1YnNjcmlwdGlvbnM6IFN1YnNjcmlwdGlvbltdID0gW107XG5cbiAgQElucHV0KCdjbHJQb3BvdmVyQ29udGVudCcpXG4gIHB1YmxpYyBzZXQgb3Blbih2YWx1ZTogYm9vbGVhbikge1xuICAgIHRoaXMuc21hcnRPcGVuU2VydmljZS5vcGVuID0gISF2YWx1ZTtcbiAgfVxuXG4gIEBJbnB1dCgnY2xyUG9wb3ZlckNvbnRlbnRBdCcpXG4gIHNldCBjb250ZW50QXQocG9zaXRpb246IENsclBvcG92ZXJQb3NpdGlvbikge1xuICAgIHRoaXMuc21hcnRQb3NpdGlvblNlcnZpY2UucG9zaXRpb24gPSBwb3NpdGlvbjtcbiAgfVxuXG4gIEBJbnB1dCgnY2xyUG9wb3ZlckNvbnRlbnRPdXRzaWRlQ2xpY2tUb0Nsb3NlJylcbiAgc2V0IG91dHNpZGVDbGlja0Nsb3NlKGNsaWNrVG9DbG9zZTogYm9vbGVhbikge1xuICAgIHRoaXMuc21hcnRFdmVudHNTZXJ2aWNlLm91dHNpZGVDbGlja0Nsb3NlID0gISFjbGlja1RvQ2xvc2U7XG4gIH1cblxuICBASW5wdXQoJ2NsclBvcG92ZXJDb250ZW50U2Nyb2xsVG9DbG9zZScpXG4gIHNldCBzY3JvbGxUb0Nsb3NlKHNjcm9sbFRvQ2xvc2U6IGJvb2xlYW4pIHtcbiAgICB0aGlzLnNtYXJ0RXZlbnRzU2VydmljZS5zY3JvbGxUb0Nsb3NlID0gISFzY3JvbGxUb0Nsb3NlO1xuICB9XG5cbiAgY29uc3RydWN0b3IoXG4gICAgQEluamVjdChET0NVTUVOVCkgcHJpdmF0ZSBkb2N1bWVudDogSFRNTERvY3VtZW50LFxuICAgIHByaXZhdGUgY29udGFpbmVyOiBWaWV3Q29udGFpbmVyUmVmLFxuICAgIHByaXZhdGUgdGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT4sXG4gICAgcHJpdmF0ZSByZW5kZXJlcjogUmVuZGVyZXIyLFxuICAgIHByaXZhdGUgc21hcnRQb3NpdGlvblNlcnZpY2U6IENsclBvcG92ZXJQb3NpdGlvblNlcnZpY2UsXG4gICAgcHJpdmF0ZSBzbWFydEV2ZW50c1NlcnZpY2U6IENsclBvcG92ZXJFdmVudHNTZXJ2aWNlLFxuICAgIHByaXZhdGUgc21hcnRPcGVuU2VydmljZTogQ2xyUG9wb3ZlclRvZ2dsZVNlcnZpY2VcbiAgKSB7fVxuXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMucHVzaChcbiAgICAgIHRoaXMuc21hcnRPcGVuU2VydmljZS5vcGVuQ2hhbmdlLnN1YnNjcmliZShjaGFuZ2UgPT4ge1xuICAgICAgICBpZiAoY2hhbmdlKSB7XG4gICAgICAgICAgdGhpcy5hZGRDb250ZW50KCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhpcy5yZW1vdmVDb250ZW50KCk7XG4gICAgICAgIH1cbiAgICAgIH0pLFxuICAgICAgdGhpcy5zbWFydFBvc2l0aW9uU2VydmljZS5zaG91bGRSZWFsaWduLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgIHRoaXMuc2hvdWxkUmVhbGlnbiA9IHRydWU7XG4gICAgICAgIC8vIEF2b2lkIGZsaWNrZXJpbmcgb24gaW5pdGlhbGl6YXRpb24sIGNhdXNlZCBieSB0aGUgYXN5bmNocm9ub3VzIG5hdHVyZSBvZiB0aGVcbiAgICAgICAgLy8gY2hlY2stY29sbGVjdG9yIHBhdHRlcm4uXG4gICAgICAgIGlmICh0aGlzLnZpZXcpIHtcbiAgICAgICAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKHRoaXMudmlldy5yb290Tm9kZXNbMF0sICdvcGFjaXR5JywgJzAnKTtcbiAgICAgICAgfVxuICAgICAgfSksXG4gICAgICAvLyBIZXJlIHdlIGNvbGxlY3Qgc3Vic2VxdWVudCBzeW5jaHJvbm91c2x5IHJlY2VpdmVkIGNvbnRlbnQtY2hlY2sgZXZlbnRzIGFuZCBvbmx5IHRha2UgYWN0aW9uXG4gICAgICAvLyBhdCB0aGUgZW5kIG9mIHRoZSBjeWNsZS4gU2VlIGJlbG93IGZvciBkZXRhaWxzIG9uIHRoZSBjaGVjay1jb2xsZWN0b3IgcGF0dGVybi5cbiAgICAgIHRoaXMuY2hlY2tDb2xsZWN0b3IucGlwZShkZWJvdW5jZVRpbWUoMCkpLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgIHRoaXMuYWxpZ25Db250ZW50KCk7XG4gICAgICAgIHRoaXMuc2hvdWxkUmVhbGlnbiA9IGZhbHNlO1xuICAgICAgICBpZiAodGhpcy52aWV3KSB7XG4gICAgICAgICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZSh0aGlzLnZpZXcucm9vdE5vZGVzWzBdLCAnb3BhY2l0eScsICcxJyk7XG4gICAgICAgIH1cbiAgICAgIH0pXG4gICAgKTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCkge1xuICAgIHRoaXMucmVtb3ZlQ29udGVudCgpO1xuICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5mb3JFYWNoKHN1YiA9PiBzdWIudW5zdWJzY3JpYmUoKSk7XG4gIH1cblxuICBwcml2YXRlIHJlbW92ZUNvbnRlbnQoKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLnZpZXcpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy52aWV3LnJvb3ROb2Rlcy5mb3JFYWNoKG5vZGUgPT4gdGhpcy5yZW5kZXJlci5yZW1vdmVDaGlsZCh0aGlzLmRvY3VtZW50LmJvZHksIG5vZGUpKTtcbiAgICB0aGlzLmNvbnRhaW5lci5jbGVhcigpO1xuICAgIGRlbGV0ZSB0aGlzLnZpZXc7XG4gIH1cblxuICAvKipcbiAgICogVE9ETyhtYXR0KTogaW52ZXN0aWdhdGUgd2h5IERlYnVnRWxlbWVudCByZXRhaW5zIGEgcmVmZXJlbmNlIHRvIHRoZSBub2RlcyBhbmQgY2F1c2VzIGEgbWVtb3J5IGxlYWsuXG4gICAqIEEgbm90ZSBhYm91dCB0aGUgdXNlIG9mIGFwcGVuZENoaWxkL3JlbW92ZUNoaWxkXG4gICAqIFRoZSBEZWJ1Z0VsZW1lbnQgaXMga2VlcGluZyBhIHJlZmVyZW5jZSB0byB0aGUgZGV0YWNoZWQgbm9kZSBhbmQgaXRzIHVuY2xlYXIgd2h5LlxuICAgKiBUaGlzIGRvZXMgd2FycmFudCBmdXJ0aGVyIGludmVzdGlnYXRpb24uIEJ1dCwgc2luY2UgaXQgZG9lc24ndCBoYXBwZW4gaW4gcHJvZHVjdGlvbiBtb2RlXG4gICAqIGl0IGlzIGEgbG93IHByaW9yaXR5IGlzc3VlIGZvciBub3cuXG4gICAqL1xuICBwcml2YXRlIGFkZENvbnRlbnQoKSB7XG4gICAgLy8gQ3JlYXRlIHRoZSB2aWV3IGNvbnRhaW5lclxuICAgIHRoaXMudmlldyA9IHRoaXMuY29udGFpbmVyLmNyZWF0ZUVtYmVkZGVkVmlldyh0aGlzLnRlbXBsYXRlKTtcbiAgICB0aGlzLnNtYXJ0RXZlbnRzU2VydmljZS5jb250ZW50UmVmID0gdGhpcy52aWV3LnJvb3ROb2Rlc1swXTsgLy8gU28gd2Uga25vdyB3aGVyZS93aGF0IHRvIHNldCBjbG9zZSBmb2N1cyBvblxuICAgIHRoaXMucmVuZGVyZXIuYWRkQ2xhc3ModGhpcy52aWV3LnJvb3ROb2Rlc1swXSwgJ2Nsci1wb3BvdmVyLWNvbnRlbnQnKTtcbiAgICAvLyBSZXNldCB0byB0aGUgYmVnaW5pbmcgb2YgdGhlIGRvY3VtZW50IHRvIGJlIGF2YWlsYWJsZSBmb3Igc2l6aW5nL3Bvc2l0aW9uaW5nIGNhbGN1bGF0aW9ucy5cbiAgICAvLyBJZiB3ZSBhZGQgbmV3IGNvbnRlbnQgdG8gdGhlIGJvdHRvbSBpdCB0cmlnZ2VycyBjaGFuZ2VzIGluIHRoZSBsYXlvdXQgdGhhdCBtYXkgbGVhZCB0byBmYWxzZSBhbmNob3JcbiAgICAvLyBjb29yZGluYXRlcyB2YWx1ZXMuXG4gICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZSh0aGlzLnZpZXcucm9vdE5vZGVzWzBdLCAndG9wJywgJzBweCcpO1xuICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUodGhpcy52aWV3LnJvb3ROb2Rlc1swXSwgJ2xlZnQnLCAnMHB4Jyk7XG4gICAgLy8gV2UgbmVlZCB0byBoaWRlIGl0IGR1cmluZyB0aGUgY2FsY3VsYXRpb24gcGhhc2UsIHdoaWxlIGl0J3Mgbm90IHlldCBmaW5hbGx5IHBvc2l0aW9uZWQuXG4gICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZSh0aGlzLnZpZXcucm9vdE5vZGVzWzBdLCAnb3BhY2l0eScsICcwJyk7XG4gICAgdGhpcy5yZW5kZXJlci5saXN0ZW4odGhpcy52aWV3LnJvb3ROb2Rlc1swXSwgJ2NsaWNrJywgZXZlbnQgPT4ge1xuICAgICAgdGhpcy5zbWFydE9wZW5TZXJ2aWNlLm9wZW5FdmVudCA9IGV2ZW50O1xuICAgIH0pO1xuICAgIHRoaXMudmlldy5yb290Tm9kZXMuZm9yRWFjaChub2RlID0+IHtcbiAgICAgIHRoaXMucmVuZGVyZXIuYXBwZW5kQ2hpbGQodGhpcy5kb2N1bWVudC5ib2R5LCBub2RlKTtcbiAgICB9KTtcbiAgICAvLyBNYXJrIGZvciByZWFsaW5nbWVudCBvbiB0aGUgbmV4dCBjb250ZW50LWNoZWNrIGN5Y2xlLlxuICAgIHRoaXMuc2hvdWxkUmVhbGlnbiA9IHRydWU7XG4gIH1cblxuICBwcml2YXRlIHNob3VsZFJlYWxpZ24gPSBmYWxzZTtcblxuICAvLyBDaGVjay1jb2xsZWN0b3IgcGF0dGVybjpcbiAgLy8gSW4gb3JkZXIgdG8gZ2V0IGFjY3VyYXRlIGNvbnRlbnQgaGVpZ2h0L3dpZHRoIHZhbHVlcywgd2UgY2Fubm90IGNhbGN1bGF0ZSBhbGlnbm1lbnQgb2Zmc2V0cyB1bnRpbFxuICAvLyBhZnRlciB0aGUgcHJvamVjdGVkIGNvbnRlbnQgaGFzIHN0YWJpbGl6ZWQuXG4gIC8vIEFzIG11bHRpcGxlIGNoZWNrIGV2ZW50cyBtYXkgaGFwcGVuIGluIHRoZSBzYW1lIHJlbmRlcmluZyBjeWNsZSwgd2UgbmVlZCB0byBjb2xsZWN0IGFsbCBldmVudHNcbiAgLy8gYW5kIG9ubHkgYWN0IGFmdGVyIHRoZSBjb250ZW50IGlzIHJlYWxseSBzdGFibGUuIE9yIHdlIG1heSBnZXQgd3JvbmcgaW50ZXJtZWRpYXRlIHBvc2l0aW9uaW5nIHZhbHVlcy5cbiAgLy8gV2Ugd2lsbCBjaGFubmVsIHN1YnNlcXVlbnQgY29udGVudCBjaGVjayBldmVudHMgdGhyb3VnaCB0aGlzIG9ic2VydmFibGUuXG4gIHByaXZhdGUgY2hlY2tDb2xsZWN0b3I6IEV2ZW50RW1pdHRlcjx2b2lkPiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICBuZ0FmdGVyQ29udGVudENoZWNrZWQoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuc21hcnRPcGVuU2VydmljZS5vcGVuICYmIHRoaXMudmlldyAmJiB0aGlzLnNob3VsZFJlYWxpZ24pIHtcbiAgICAgIC8vIENoYW5uZWwgY29udGVudC1jaGVjayBldmVudCB0aHJvdWdoIHRoZSBjaGVjay1jb2xsZWN0b3JcbiAgICAgIHRoaXMuY2hlY2tDb2xsZWN0b3IuZW1pdCgpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgYWxpZ25Db250ZW50KCkge1xuICAgIGlmICghdGhpcy52aWV3KSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGNvbnN0IHBvc2l0aW9uQ29vcmRzID0gdGhpcy5zbWFydFBvc2l0aW9uU2VydmljZS5hbGlnbkNvbnRlbnQodGhpcy52aWV3LnJvb3ROb2Rlc1swXSk7XG4gICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZSh0aGlzLnZpZXcucm9vdE5vZGVzWzBdLCAndG9wJywgYCR7cG9zaXRpb25Db29yZHMueU9mZnNldH1weGApO1xuICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUodGhpcy52aWV3LnJvb3ROb2Rlc1swXSwgJ2xlZnQnLCBgJHtwb3NpdGlvbkNvb3Jkcy54T2Zmc2V0fXB4YCk7XG4gICAgdGhpcy5zbWFydE9wZW5TZXJ2aWNlLnBvcG92ZXJBbGlnbmVkRW1pdCh0aGlzLnZpZXcucm9vdE5vZGVzWzBdKTtcbiAgfVxufVxuIl19
155
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG9wb3Zlci1jb250ZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYW5ndWxhci9zcmMvdXRpbHMvcG9wb3Zlci9wb3BvdmVyLWNvbnRlbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7R0FJRztBQUVILE9BQU8sRUFDTCxTQUFTLEVBRVQsTUFBTSxFQUNOLEtBQUssRUFNTCxZQUFZLEdBQ2IsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBTzNDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7Ozs7QUFFOUMseUVBQXlFO0FBQ3pFLGVBQWU7QUFFZixNQUFNLE9BQU8saUJBQWlCO0lBMEI1QixZQUM0QixRQUFrQixFQUNwQyxTQUEyQixFQUMzQixRQUEwQixFQUMxQixRQUFtQixFQUNuQixvQkFBK0MsRUFDL0Msa0JBQTJDLEVBQzNDLGdCQUF5QztRQU52QixhQUFRLEdBQVIsUUFBUSxDQUFVO1FBQ3BDLGNBQVMsR0FBVCxTQUFTLENBQWtCO1FBQzNCLGFBQVEsR0FBUixRQUFRLENBQWtCO1FBQzFCLGFBQVEsR0FBUixRQUFRLENBQVc7UUFDbkIseUJBQW9CLEdBQXBCLG9CQUFvQixDQUEyQjtRQUMvQyx1QkFBa0IsR0FBbEIsa0JBQWtCLENBQXlCO1FBQzNDLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBeUI7UUEvQjNDLGtCQUFhLEdBQW1CLEVBQUUsQ0FBQztRQXNCbkMsMEJBQXFCLEdBQXdCLElBQUksQ0FBQztRQXlGbEQsa0JBQWEsR0FBRyxLQUFLLENBQUM7UUFFOUIsMkJBQTJCO1FBQzNCLG9HQUFvRztRQUNwRyw4Q0FBOEM7UUFDOUMsaUdBQWlHO1FBQ2pHLHdHQUF3RztRQUN4RywyRUFBMkU7UUFDbkUsbUJBQWMsR0FBdUIsSUFBSSxZQUFZLEVBQUUsQ0FBQztJQXZGN0QsQ0FBQztJQTlCSixJ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eEIsaUJBQWlCO3NCQURwQixLQUFLO3VCQUFDLHNDQUFzQztnQkFNekMsYUFBYTtzQkFEaEIsS0FBSzt1QkFBQyxnQ0FBZ0MiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogQ29weXJpZ2h0IChjKSAyMDE2LTIwMjIgVk13YXJlLCBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKiBUaGlzIHNvZnR3YXJlIGlzIHJlbGVhc2VkIHVuZGVyIE1JVCBsaWNlbnNlLlxuICogVGhlIGZ1bGwgbGljZW5zZSBpbmZvcm1hdGlvbiBjYW4gYmUgZm91bmQgaW4gTElDRU5TRSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBwcm9qZWN0LlxuICovXG5cbmltcG9ydCB7XG4gIERpcmVjdGl2ZSxcbiAgRW1iZWRkZWRWaWV3UmVmLFxuICBJbmplY3QsXG4gIElucHV0LFxuICBPbkRlc3Ryb3ksXG4gIFJlbmRlcmVyMixcbiAgVGVtcGxhdGVSZWYsXG4gIFZpZXdDb250YWluZXJSZWYsXG4gIEFmdGVyQ29udGVudENoZWNrZWQsXG4gIEV2ZW50RW1pdHRlcixcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBET0NVTUVOVCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHsgQ2xyUG9wb3ZlclRvZ2dsZVNlcnZpY2UgfSBmcm9tICcuL3Byb3ZpZGVycy9wb3BvdmVyLXRvZ2dsZS5zZXJ2aWNlJztcbmltcG9ydCB7IENsclBvcG92ZXJFdmVudHNTZXJ2aWNlIH0gZnJvbSAnLi9wcm92aWRlcnMvcG9wb3Zlci1ldmVudHMuc2VydmljZSc7XG5pbXBvcnQgeyBDbHJQb3BvdmVyUG9zaXRpb25TZXJ2aWNlIH0gZnJvbSAnLi9wcm92aWRlcnMvcG9wb3Zlci1wb3NpdGlvbi5zZXJ2aWNlJztcbmltcG9ydCB7IENsclBvcG92ZXJQb3NpdGlvbiB9IGZyb20gJy4vaW50ZXJmYWNlcy9wb3BvdmVyLXBvc2l0aW9uLmludGVyZmFjZSc7XG5pbXBvcnQgeyBkZWJvdW5jZVRpbWUgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbi8vIGh0dHBzOi8vZ2l0aHViLmNvbS9hbmd1bGFyL2FuZ3VsYXIvaXNzdWVzLzIwMzUxI2lzc3VlY29tbWVudC0zNDQwMDk4ODdcbi8qKiBAZHluYW1pYyAqL1xuQERpcmVjdGl2ZSh7IHNlbGVjdG9yOiAnW2NsclBvcG92ZXJDb250ZW50XScgfSlcbmV4cG9ydCBjbGFzcyBDbHJQb3BvdmVyQ29udGVudCBpbXBsZW1lbnRzIEFmdGVyQ29udGVudENoZWNrZWQsIE9uRGVzdHJveSB7XG4gIHByaXZhdGUgdmlldzogRW1iZWRkZWRWaWV3UmVmPHZvaWQ+O1xuICBwcml2YXRlIHN1YnNjcmlwdGlvbnM6IFN1YnNjcmlwdGlvbltdID0gW107XG5cbiAgQElucHV0KCdjbHJQb3BvdmVyQ29udGVudCcpXG4gIHB1YmxpYyBzZXQgb3Blbih2YWx1ZTogYm9vbGVhbikge1xuICAgIHRoaXMuc21hcnRPcGVuU2VydmljZS5vcGVuID0gISF2YWx1ZTtcbiAgfVxuXG4gIEBJbnB1dCgnY2xyUG9wb3ZlckNvbnRlbnRBdCcpXG4gIHNldCBjb250ZW50QXQocG9zaXRpb246IENsclBvcG92ZXJQb3NpdGlvbikge1xuICAgIHRoaXMuc21hcnRQb3NpdGlvblNlcnZpY2UucG9zaXRpb24gPSBwb3NpdGlvbjtcbiAgfVxuXG4gIEBJbnB1dCgnY2xyUG9wb3ZlckNvbnRlbnRPdXRzaWRlQ2xpY2tUb0Nsb3NlJylcbiAgc2V0IG91dHNpZGVDbGlja0Nsb3NlKGNsaWNrVG9DbG9zZTogYm9vbGVhbikge1xuICAgIHRoaXMuc21hcnRFdmVudHNTZXJ2aWNlLm91dHNpZGVDbGlja0Nsb3NlID0gISFjbGlja1RvQ2xvc2U7XG4gIH1cblxuICBASW5wdXQoJ2NsclBvcG92ZXJDb250ZW50U2Nyb2xsVG9DbG9zZScpXG4gIHNldCBzY3JvbGxUb0Nsb3NlKHNjcm9sbFRvQ2xvc2U6IGJvb2xlYW4pIHtcbiAgICB0aGlzLnNtYXJ0RXZlbnRzU2VydmljZS5zY3JvbGxUb0Nsb3NlID0gISFzY3JvbGxUb0Nsb3NlO1xuICB9XG5cbiAgcHJpdmF0ZSByZW1vdmVDbGlja0xpc3RlbmVyRm46IFZvaWRGdW5jdGlvbiB8IG51bGwgPSBudWxsO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIEBJbmplY3QoRE9DVU1FTlQpIHByaXZhdGUgZG9jdW1lbnQ6IERvY3VtZW50LFxuICAgIHByaXZhdGUgY29udGFpbmVyOiBWaWV3Q29udGFpbmVyUmVmLFxuICAgIHByaXZhdGUgdGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT4sXG4gICAgcHJpdmF0ZSByZW5kZXJlcjogUmVuZGVyZXIyLFxuICAgIHByaXZhdGUgc21hcnRQb3NpdGlvblNlcnZpY2U6IENsclBvcG92ZXJQb3NpdGlvblNlcnZpY2UsXG4gICAgcHJpdmF0ZSBzbWFydEV2ZW50c1NlcnZpY2U6IENsclBvcG92ZXJFdmVudHNTZXJ2aWNlLFxuICAgIHByaXZhdGUgc21hcnRPcGVuU2VydmljZTogQ2xyUG9wb3ZlclRvZ2dsZVNlcnZpY2VcbiAgKSB7fVxuXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMucHVzaChcbiAgICAgIHRoaXMuc21hcnRPcGVuU2VydmljZS5vcGVuQ2hhbmdlLnN1YnNjcmliZShjaGFuZ2UgPT4ge1xuICAgICAgICBpZiAoY2hhbmdlKSB7XG4gICAgICAgICAgdGhpcy5hZGRDb250ZW50KCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhpcy5yZW1vdmVDb250ZW50KCk7XG4gICAgICAgIH1cbiAgICAgIH0pLFxuICAgICAgdGhpcy5zbWFydFBvc2l0aW9uU2VydmljZS5zaG91bGRSZWFsaWduLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgIHRoaXMuc2hvdWxkUmVhbGlnbiA9IHRydWU7XG4gICAgICAgIC8vIEF2b2lkIGZsaWNrZXJpbmcgb24gaW5pdGlhbGl6YXRpb24sIGNhdXNlZCBieSB0aGUgYXN5bmNocm9ub3VzIG5hdHVyZSBvZiB0aGVcbiAgICAgICAgLy8gY2hlY2stY29sbGVjdG9yIHBhdHRlcm4uXG4gICAgICAgIGlmICh0aGlzLnZpZXcpIHtcbiAgICAgICAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKHRoaXMudmlldy5yb290Tm9kZXNbMF0sICdvcGFjaXR5JywgJzAnKTtcbiAgICAgICAgfVxuICAgICAgfSksXG4gICAgICAvLyBIZXJlIHdlIGNvbGxlY3Qgc3Vic2VxdWVudCBzeW5jaHJvbm91c2x5IHJlY2VpdmVkIGNvbnRlbnQtY2hlY2sgZXZlbnRzIGFuZCBvbmx5IHRha2UgYWN0aW9uXG4gICAgICAvLyBhdCB0aGUgZW5kIG9mIHRoZSBjeWNsZS4gU2VlIGJlbG93IGZvciBkZXRhaWxzIG9uIHRoZSBjaGVjay1jb2xsZWN0b3IgcGF0dGVybi5cbiAgICAgIHRoaXMuY2hlY2tDb2xsZWN0b3IucGlwZShkZWJvdW5jZVRpbWUoMCkpLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgIHRoaXMuYWxpZ25Db250ZW50KCk7XG4gICAgICAgIHRoaXMuc2hvdWxkUmVhbGlnbiA9IGZhbHNlO1xuICAgICAgICBpZiAodGhpcy52aWV3KSB7XG4gICAgICAgICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZSh0aGlzLnZpZXcucm9vdE5vZGVzWzBdLCAnb3BhY2l0eScsICcxJyk7XG4gICAgICAgIH1cbiAgICAgIH0pXG4gICAgKTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCkge1xuICAgIHRoaXMucmVtb3ZlQ29udGVudCgpO1xuICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5mb3JFYWNoKHN1YiA9PiBzdWIudW5zdWJzY3JpYmUoKSk7XG4gIH1cblxuICBwcml2YXRlIHJlbW92ZUNvbnRlbnQoKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLnZpZXcpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKHRoaXMucmVtb3ZlQ2xpY2tMaXN0ZW5lckZuKSB7XG4gICAgICB0aGlzLnJlbW92ZUNsaWNrTGlzdGVuZXJGbigpO1xuICAgICAgdGhpcy5yZW1vdmVDbGlja0xpc3RlbmVyRm4gPSBudWxsO1xuICAgIH1cbiAgICB0aGlzLnZpZXcucm9vdE5vZGVzLmZvckVhY2gobm9kZSA9PiB0aGlzLnJlbmRlcmVyLnJlbW92ZUNoaWxkKHRoaXMuZG9jdW1lbnQuYm9keSwgbm9kZSkpO1xuICAgIHRoaXMuY29udGFpbmVyLmNsZWFyKCk7XG4gICAgZGVsZXRlIHRoaXMudmlldztcbiAgfVxuXG4gIC8qKlxuICAgKiBUT0RPKG1hdHQpOiBpbnZlc3RpZ2F0ZSB3aHkgRGVidWdFbGVtZW50IHJldGFpbnMgYSByZWZlcmVuY2UgdG8gdGhlIG5vZGVzIGFuZCBjYXVzZXMgYSBtZW1vcnkgbGVhay5cbiAgICogQSBub3RlIGFib3V0IHRoZSB1c2Ugb2YgYXBwZW5kQ2hpbGQvcmVtb3ZlQ2hpbGRcbiAgICogVGhlIERlYnVnRWxlbWVudCBpcyBrZWVwaW5nIGEgcmVmZXJlbmNlIHRvIHRoZSBkZXRhY2hlZCBub2RlIGFuZCBpdHMgdW5jbGVhciB3aHkuXG4gICAqIFRoaXMgZG9lcyB3YXJyYW50IGZ1cnRoZXIgaW52ZXN0aWdhdGlvbi4gQnV0LCBzaW5jZSBpdCBkb2Vzbid0IGhhcHBlbiBpbiBwcm9kdWN0aW9uIG1vZGVcbiAgICogaXQgaXMgYSBsb3cgcHJpb3JpdHkgaXNzdWUgZm9yIG5vdy5cbiAgICovXG4gIHByaXZhdGUgYWRkQ29udGVudCgpIHtcbiAgICAvLyBDcmVhdGUgdGhlIHZpZXcgY29udGFpbmVyXG4gICAgdGhpcy52aWV3ID0gdGhpcy5jb250YWluZXIuY3JlYXRlRW1iZWRkZWRWaWV3KHRoaXMudGVtcGxhdGUpO1xuICAgIGNvbnN0IFtyb290Tm9kZV0gPSB0aGlzLnZpZXcucm9vdE5vZGVzO1xuICAgIHRoaXMuc21hcnRFdmVudHNTZXJ2aWNlLmNvbnRlbnRSZWYgPSByb290Tm9kZTsgLy8gU28gd2Uga25vdyB3aGVyZS93aGF0IHRvIHNldCBjbG9zZSBmb2N1cyBvblxuICAgIHRoaXMucmVuZGVyZXIuYWRkQ2xhc3Mocm9vdE5vZGUsICdjbHItcG9wb3Zlci1jb250ZW50Jyk7XG4gICAgLy8gUmVzZXQgdG8gdGhlIGJlZ2luaW5nIG9mIHRoZSBkb2N1bWVudCB0byBiZSBhdmFpbGFibGUgZm9yIHNpemluZy9wb3NpdGlvbmluZyBjYWxjdWxhdGlvbnMuXG4gICAgLy8gSWYgd2UgYWRkIG5ldyBjb250ZW50IHRvIHRoZSBib3R0b20gaXQgdHJpZ2dlcnMgY2hhbmdlcyBpbiB0aGUgbGF5b3V0IHRoYXQgbWF5IGxlYWQgdG8gZmFsc2UgYW5jaG9yXG4gICAgLy8gY29vcmRpbmF0ZXMgdmFsdWVzLlxuICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUocm9vdE5vZGUsICd0b3AnLCAnMHB4Jyk7XG4gICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZShyb290Tm9kZSwgJ2xlZnQnLCAnMHB4Jyk7XG4gICAgLy8gV2UgbmVlZCB0byBoaWRlIGl0IGR1cmluZyB0aGUgY2FsY3VsYXRpb24gcGhhc2UsIHdoaWxlIGl0J3Mgbm90IHlldCBmaW5hbGx5IHBvc2l0aW9uZWQuXG4gICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZShyb290Tm9kZSwgJ29wYWNpdHknLCAnMCcpO1xuICAgIHRoaXMucmVtb3ZlQ2xpY2tMaXN0ZW5lckZuID0gdGhpcy5yZW5kZXJlci5saXN0ZW4ocm9vdE5vZGUsICdjbGljaycsIGV2ZW50ID0+IHtcbiAgICAgIHRoaXMuc21hcnRPcGVuU2VydmljZS5vcGVuRXZlbnQgPSBldmVudDtcbiAgICB9KTtcbiAgICB0aGlzLnZpZXcucm9vdE5vZGVzLmZvckVhY2gobm9kZSA9PiB7XG4gICAgICB0aGlzLnJlbmRlcmVyLmFwcGVuZENoaWxkKHRoaXMuZG9jdW1lbnQuYm9keSwgbm9kZSk7XG4gICAgfSk7XG4gICAgLy8gTWFyayBmb3IgcmVhbGluZ21lbnQgb24gdGhlIG5leHQgY29udGVudC1jaGVjayBjeWNsZS5cbiAgICB0aGlzLnNob3VsZFJlYWxpZ24gPSB0cnVlO1xuICB9XG5cbiAgcHJpdmF0ZSBzaG91bGRSZWFsaWduID0gZmFsc2U7XG5cbiAgLy8gQ2hlY2stY29sbGVjdG9yIHBhdHRlcm46XG4gIC8vIEluIG9yZGVyIHRvIGdldCBhY2N1cmF0ZSBjb250ZW50IGhlaWdodC93aWR0aCB2YWx1ZXMsIHdlIGNhbm5vdCBjYWxjdWxhdGUgYWxpZ25tZW50IG9mZnNldHMgdW50aWxcbiAgLy8gYWZ0ZXIgdGhlIHByb2plY3RlZCBjb250ZW50IGhhcyBzdGFiaWxpemVkLlxuICAvLyBBcyBtdWx0aXBsZSBjaGVjayBldmVudHMgbWF5IGhhcHBlbiBpbiB0aGUgc2FtZSByZW5kZXJpbmcgY3ljbGUsIHdlIG5lZWQgdG8gY29sbGVjdCBhbGwgZXZlbnRzXG4gIC8vIGFuZCBvbmx5IGFjdCBhZnRlciB0aGUgY29udGVudCBpcyByZWFsbHkgc3RhYmxlLiBPciB3ZSBtYXkgZ2V0IHdyb25nIGludGVybWVkaWF0ZSBwb3NpdGlvbmluZyB2YWx1ZXMuXG4gIC8vIFdlIHdpbGwgY2hhbm5lbCBzdWJzZXF1ZW50IGNvbnRlbnQgY2hlY2sgZXZlbnRzIHRocm91Z2ggdGhpcyBvYnNlcnZhYmxlLlxuICBwcml2YXRlIGNoZWNrQ29sbGVjdG9yOiBFdmVudEVtaXR0ZXI8dm9pZD4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgbmdBZnRlckNvbnRlbnRDaGVja2VkKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLnNtYXJ0T3BlblNlcnZpY2Uub3BlbiAmJiB0aGlzLnZpZXcgJiYgdGhpcy5zaG91bGRSZWFsaWduKSB7XG4gICAgICAvLyBDaGFubmVsIGNvbnRlbnQtY2hlY2sgZXZlbnQgdGhyb3VnaCB0aGUgY2hlY2stY29sbGVjdG9yXG4gICAgICB0aGlzLmNoZWNrQ29sbGVjdG9yLmVtaXQoKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGFsaWduQ29udGVudCgpIHtcbiAgICBpZiAoIXRoaXMudmlldykge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjb25zdCBwb3NpdGlvbkNvb3JkcyA9IHRoaXMuc21hcnRQb3NpdGlvblNlcnZpY2UuYWxpZ25Db250ZW50KHRoaXMudmlldy5yb290Tm9kZXNbMF0pO1xuICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUodGhpcy52aWV3LnJvb3ROb2Rlc1swXSwgJ3RvcCcsIGAke3Bvc2l0aW9uQ29vcmRzLnlPZmZzZXR9cHhgKTtcbiAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKHRoaXMudmlldy5yb290Tm9kZXNbMF0sICdsZWZ0JywgYCR7cG9zaXRpb25Db29yZHMueE9mZnNldH1weGApO1xuICAgIHRoaXMuc21hcnRPcGVuU2VydmljZS5wb3BvdmVyQWxpZ25lZEVtaXQodGhpcy52aWV3LnJvb3ROb2Rlc1swXSk7XG4gIH1cbn1cbiJdfQ==