@tolle_/tolle-ui 18.2.24 → 18.2.25

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 (184) hide show
  1. package/esm2022/lib/accordion-item.component.mjs +17 -5
  2. package/esm2022/lib/alert-dialog-dynamic.component.mjs +1 -1
  3. package/esm2022/lib/alert-dialog.component.mjs +48 -10
  4. package/esm2022/lib/alert-dialog.service.mjs +13 -2
  5. package/esm2022/lib/alert.component.mjs +5 -5
  6. package/esm2022/lib/avatar.component.mjs +30 -9
  7. package/esm2022/lib/badge.component.mjs +41 -15
  8. package/esm2022/lib/breadcrumb-link.component.mjs +5 -5
  9. package/esm2022/lib/button.component.mjs +14 -3
  10. package/esm2022/lib/calendar.component.mjs +99 -17
  11. package/esm2022/lib/card.component.mjs +29 -9
  12. package/esm2022/lib/carousel/carousel.component.mjs +19 -3
  13. package/esm2022/lib/checkbox.component.mjs +44 -21
  14. package/esm2022/lib/collapsible.component.mjs +12 -4
  15. package/esm2022/lib/country-selector.component.mjs +140 -20
  16. package/esm2022/lib/data-table.component.mjs +27 -16
  17. package/esm2022/lib/date-picker.component.mjs +24 -4
  18. package/esm2022/lib/date-range-picker.component.mjs +37 -9
  19. package/esm2022/lib/dropdown-item.component.mjs +19 -5
  20. package/esm2022/lib/dropdown-label.component.mjs +3 -3
  21. package/esm2022/lib/dropdown-menu.component.mjs +3 -3
  22. package/esm2022/lib/dropdown-separator.component.mjs +3 -3
  23. package/esm2022/lib/dropdown-trigger.directive.mjs +7 -3
  24. package/esm2022/lib/empty-state.component.mjs +3 -3
  25. package/esm2022/lib/hover-card.component.mjs +4 -2
  26. package/esm2022/lib/input.component.mjs +7 -5
  27. package/esm2022/lib/label.component.mjs +2 -2
  28. package/esm2022/lib/masked-input.component.mjs +3 -3
  29. package/esm2022/lib/modal.component.mjs +58 -22
  30. package/esm2022/lib/modal.service.mjs +13 -1
  31. package/esm2022/lib/multi-select.component.mjs +228 -20
  32. package/esm2022/lib/otp.component.mjs +6 -3
  33. package/esm2022/lib/pagination.component.mjs +19 -9
  34. package/esm2022/lib/progress.component.mjs +8 -5
  35. package/esm2022/lib/radio-group.component.mjs +51 -3
  36. package/esm2022/lib/radio-item.component.mjs +46 -8
  37. package/esm2022/lib/radio-service.mjs +60 -1
  38. package/esm2022/lib/range-calendar.component.mjs +317 -98
  39. package/esm2022/lib/resizable-panel.component.mjs +5 -4
  40. package/esm2022/lib/scroll-area.component.mjs +5 -5
  41. package/esm2022/lib/segment.component.mjs +73 -7
  42. package/esm2022/lib/select-item.component.mjs +20 -2
  43. package/esm2022/lib/select-separator.component.mjs +3 -3
  44. package/esm2022/lib/select.component.mjs +221 -14
  45. package/esm2022/lib/separator.component.mjs +12 -6
  46. package/esm2022/lib/sheet-ref.mjs +8 -1
  47. package/esm2022/lib/sheet-wrapper.component.mjs +27 -11
  48. package/esm2022/lib/sheet.component.mjs +57 -16
  49. package/esm2022/lib/sheet.service.mjs +5 -1
  50. package/esm2022/lib/sidebar.component.mjs +73 -15
  51. package/esm2022/lib/skeleton.component.mjs +19 -5
  52. package/esm2022/lib/switch.component.mjs +59 -53
  53. package/esm2022/lib/tabs.component.mjs +75 -13
  54. package/esm2022/lib/tag-input.component.mjs +6 -3
  55. package/esm2022/lib/textarea.component.mjs +9 -7
  56. package/esm2022/lib/theme.service.mjs +114 -138
  57. package/esm2022/lib/toaster.component.mjs +19 -9
  58. package/esm2022/lib/toggle-group.component.mjs +76 -4
  59. package/esm2022/lib/tolle-config.mjs +1 -1
  60. package/esm2022/lib/tooltip.directive.mjs +41 -17
  61. package/esm2022/lib/utils/color.mjs +324 -0
  62. package/esm2022/public-api.mjs +2 -1
  63. package/fesm2022/tolle-ui.mjs +2645 -637
  64. package/fesm2022/tolle-ui.mjs.map +1 -1
  65. package/lib/alert-dialog.component.d.ts +10 -1
  66. package/lib/avatar.component.d.ts +16 -3
  67. package/lib/badge.component.d.ts +17 -5
  68. package/lib/button.component.d.ts +10 -3
  69. package/lib/calendar.component.d.ts +21 -3
  70. package/lib/card.component.d.ts +6 -0
  71. package/lib/carousel/carousel.component.d.ts +1 -0
  72. package/lib/checkbox.component.d.ts +12 -4
  73. package/lib/country-selector.component.d.ts +11 -2
  74. package/lib/date-picker.component.d.ts +1 -0
  75. package/lib/date-range-picker.component.d.ts +4 -1
  76. package/lib/dropdown-item.component.d.ts +4 -2
  77. package/lib/dropdown-trigger.directive.d.ts +1 -1
  78. package/lib/modal.component.d.ts +6 -0
  79. package/lib/multi-select.component.d.ts +20 -0
  80. package/lib/otp.component.d.ts +1 -0
  81. package/lib/progress.component.d.ts +1 -0
  82. package/lib/radio-group.component.d.ts +8 -0
  83. package/lib/radio-item.component.d.ts +10 -4
  84. package/lib/radio-service.d.ts +29 -0
  85. package/lib/range-calendar.component.d.ts +33 -4
  86. package/lib/segment.component.d.ts +13 -0
  87. package/lib/select-item.component.d.ts +4 -1
  88. package/lib/select.component.d.ts +20 -0
  89. package/lib/separator.component.d.ts +2 -0
  90. package/lib/sheet-wrapper.component.d.ts +4 -0
  91. package/lib/sheet.component.d.ts +10 -1
  92. package/lib/sidebar.component.d.ts +2 -0
  93. package/lib/skeleton.component.d.ts +9 -3
  94. package/lib/switch.component.d.ts +13 -20
  95. package/lib/tabs.component.d.ts +11 -1
  96. package/lib/theme.service.d.ts +21 -6
  97. package/lib/toaster.component.d.ts +2 -2
  98. package/lib/toggle-group.component.d.ts +20 -2
  99. package/lib/toggle.component.d.ts +1 -1
  100. package/lib/tolle-config.d.ts +8 -0
  101. package/lib/tooltip.directive.d.ts +3 -0
  102. package/lib/utils/color.d.ts +87 -0
  103. package/package.json +4 -1
  104. package/preset.js +28 -0
  105. package/public-api.d.ts +1 -0
  106. package/registry/docs-content.json +4214 -0
  107. package/registry/llms-full.txt +1599 -0
  108. package/registry/llms.txt +83 -0
  109. package/registry/manifest.json +4925 -0
  110. package/registry/r/accordion-item.json +21 -0
  111. package/registry/r/accordion.json +23 -0
  112. package/registry/r/alert-dialog-dynamic.json +31 -0
  113. package/registry/r/alert-dialog.json +26 -0
  114. package/registry/r/alert.json +23 -0
  115. package/registry/r/aspect-ratio.json +21 -0
  116. package/registry/r/avatar-fallback.json +16 -0
  117. package/registry/r/avatar.json +23 -0
  118. package/registry/r/badge.json +23 -0
  119. package/registry/r/breadcrumb-item.json +16 -0
  120. package/registry/r/breadcrumb-link.json +16 -0
  121. package/registry/r/breadcrumb-separator.json +16 -0
  122. package/registry/r/breadcrumb.json +21 -0
  123. package/registry/r/button-group.json +21 -0
  124. package/registry/r/button.json +23 -0
  125. package/registry/r/calendar.json +23 -0
  126. package/registry/r/card.json +21 -0
  127. package/registry/r/carousel.json +18 -0
  128. package/registry/r/checkbox.json +23 -0
  129. package/registry/r/collapsible.json +21 -0
  130. package/registry/r/context-menu-trigger.json +23 -0
  131. package/registry/r/context-menu.json +28 -0
  132. package/registry/r/country-selector.json +31 -0
  133. package/registry/r/data-table.json +38 -0
  134. package/registry/r/date-picker.json +27 -0
  135. package/registry/r/date-range-picker.json +32 -0
  136. package/registry/r/dropdown-item.json +21 -0
  137. package/registry/r/dropdown-label.json +16 -0
  138. package/registry/r/dropdown-menu.json +16 -0
  139. package/registry/r/dropdown-separator.json +16 -0
  140. package/registry/r/dropdown-trigger.json +20 -0
  141. package/registry/r/empty-state.json +23 -0
  142. package/registry/r/hover-card.json +23 -0
  143. package/registry/r/input.json +21 -0
  144. package/registry/r/label.json +21 -0
  145. package/registry/r/masked-input.json +21 -0
  146. package/registry/r/modal.json +36 -0
  147. package/registry/r/multi-select.json +33 -0
  148. package/registry/r/otp-group.json +16 -0
  149. package/registry/r/otp-slot.json +21 -0
  150. package/registry/r/otp.json +21 -0
  151. package/registry/r/pagination.json +32 -0
  152. package/registry/r/phone-number-input.json +34 -0
  153. package/registry/r/popover-content.json +21 -0
  154. package/registry/r/popover.json +18 -0
  155. package/registry/r/progress.json +21 -0
  156. package/registry/r/radio-group.json +26 -0
  157. package/registry/r/radio-item.json +26 -0
  158. package/registry/r/range-calendar.json +28 -0
  159. package/registry/r/resizable-panel-item.json +23 -0
  160. package/registry/r/resizable-panel.json +23 -0
  161. package/registry/r/resizable.json +21 -0
  162. package/registry/r/scroll-area.json +21 -0
  163. package/registry/r/segment.json +21 -0
  164. package/registry/r/select-group.json +21 -0
  165. package/registry/r/select-item.json +26 -0
  166. package/registry/r/select-separator.json +21 -0
  167. package/registry/r/select.json +31 -0
  168. package/registry/r/separator.json +21 -0
  169. package/registry/r/sheet-wrapper.json +31 -0
  170. package/registry/r/sheet.json +21 -0
  171. package/registry/r/sidebar.json +21 -0
  172. package/registry/r/skeleton.json +23 -0
  173. package/registry/r/slider.json +21 -0
  174. package/registry/r/switch.json +23 -0
  175. package/registry/r/tabs.json +23 -0
  176. package/registry/r/tag-input.json +25 -0
  177. package/registry/r/textarea.json +21 -0
  178. package/registry/r/toaster.json +26 -0
  179. package/registry/r/toggle-group.json +25 -0
  180. package/registry/r/toggle.json +23 -0
  181. package/registry/r/tolle-cell.json +16 -0
  182. package/registry/r/tooltip.json +23 -0
  183. package/registry/registry.json +1540 -0
  184. package/theme.css +56 -1
@@ -1,13 +1,19 @@
1
1
  import { Component, TemplateRef, inject } from '@angular/core';
2
2
  import { CommonModule } from '@angular/common';
3
+ import { A11yModule } from '@angular/cdk/a11y';
3
4
  import { SheetRef } from './sheet-ref';
4
5
  import { cn } from './utils/cn';
5
6
  import * as i0 from "@angular/core";
6
7
  import * as i1 from "@angular/common";
8
+ import * as i2 from "@angular/cdk/a11y";
7
9
  export class SheetWrapperComponent {
8
10
  contentType = 'string';
9
11
  content;
10
12
  isOpen = false;
13
+ /** Stable, per-instance ids used to wire dialog ARIA relationships. */
14
+ _uid = Math.random().toString(36).substr(2, 9);
15
+ titleId = `tolle-sheet-title-${this._uid}`;
16
+ descId = `tolle-sheet-description-${this._uid}`;
11
17
  ref = inject(SheetRef);
12
18
  ngOnInit() {
13
19
  this.content = this.ref.config.content;
@@ -52,15 +58,20 @@ export class SheetWrapperComponent {
52
58
  }
53
59
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: SheetWrapperComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
54
60
  static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.14", type: SheetWrapperComponent, isStandalone: true, selector: "tolle-sheet-wrapper", ngImport: i0, template: `
55
- <div
56
- [class]="computedClass"
61
+ <div
62
+ [class]="computedClass"
57
63
  [attr.data-state]="isOpen ? 'open' : 'closed'"
64
+ role="dialog"
65
+ aria-modal="true"
66
+ [attr.aria-labelledby]="ref.config.title ? titleId : null"
67
+ [attr.aria-describedby]="ref.config.description ? descId : null"
68
+ cdkTrapFocus cdkTrapFocusAutoCapture
58
69
  (mousedown)="$event.stopPropagation()"
59
70
  >
60
71
  <!-- Header -->
61
72
  <div *ngIf="ref.config.showCloseButton !== false || ref.config.title" class="flex flex-col space-y-2 mb-4">
62
73
  <div class="flex items-center justify-between">
63
- <h3 *ngIf="ref.config.title" class="text-lg font-semibold text-foreground tracking-tight">
74
+ <h3 *ngIf="ref.config.title" [id]="titleId" class="text-lg font-semibold text-foreground tracking-tight">
64
75
  {{ ref.config.title }}
65
76
  </h3>
66
77
  <button
@@ -72,7 +83,7 @@ export class SheetWrapperComponent {
72
83
  <span class="sr-only">Close</span>
73
84
  </button>
74
85
  </div>
75
- <p *ngIf="ref.config.description" class="text-sm text-muted-foreground">
86
+ <p *ngIf="ref.config.description" [id]="descId" class="text-sm text-muted-foreground">
76
87
  {{ ref.config.description }}
77
88
  </p>
78
89
  </div>
@@ -92,20 +103,25 @@ export class SheetWrapperComponent {
92
103
  </ng-container>
93
104
  </div>
94
105
  </div>
95
- `, isInline: true, styles: [":host{display:contents}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgComponentOutlet, selector: "[ngComponentOutlet]", inputs: ["ngComponentOutlet", "ngComponentOutletInputs", "ngComponentOutletInjector", "ngComponentOutletContent", "ngComponentOutletNgModule", "ngComponentOutletNgModuleFactory"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i1.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i1.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }] });
106
+ `, isInline: true, styles: [":host{display:contents}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgComponentOutlet, selector: "[ngComponentOutlet]", inputs: ["ngComponentOutlet", "ngComponentOutletInputs", "ngComponentOutletInjector", "ngComponentOutletContent", "ngComponentOutletNgModule", "ngComponentOutletNgModuleFactory"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i1.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i1.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "ngmodule", type: A11yModule }, { kind: "directive", type: i2.CdkTrapFocus, selector: "[cdkTrapFocus]", inputs: ["cdkTrapFocus", "cdkTrapFocusAutoCapture"], exportAs: ["cdkTrapFocus"] }] });
96
107
  }
97
108
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: SheetWrapperComponent, decorators: [{
98
109
  type: Component,
99
- args: [{ selector: 'tolle-sheet-wrapper', standalone: true, imports: [CommonModule], template: `
100
- <div
101
- [class]="computedClass"
110
+ args: [{ selector: 'tolle-sheet-wrapper', standalone: true, imports: [CommonModule, A11yModule], template: `
111
+ <div
112
+ [class]="computedClass"
102
113
  [attr.data-state]="isOpen ? 'open' : 'closed'"
114
+ role="dialog"
115
+ aria-modal="true"
116
+ [attr.aria-labelledby]="ref.config.title ? titleId : null"
117
+ [attr.aria-describedby]="ref.config.description ? descId : null"
118
+ cdkTrapFocus cdkTrapFocusAutoCapture
103
119
  (mousedown)="$event.stopPropagation()"
104
120
  >
105
121
  <!-- Header -->
106
122
  <div *ngIf="ref.config.showCloseButton !== false || ref.config.title" class="flex flex-col space-y-2 mb-4">
107
123
  <div class="flex items-center justify-between">
108
- <h3 *ngIf="ref.config.title" class="text-lg font-semibold text-foreground tracking-tight">
124
+ <h3 *ngIf="ref.config.title" [id]="titleId" class="text-lg font-semibold text-foreground tracking-tight">
109
125
  {{ ref.config.title }}
110
126
  </h3>
111
127
  <button
@@ -117,7 +133,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
117
133
  <span class="sr-only">Close</span>
118
134
  </button>
119
135
  </div>
120
- <p *ngIf="ref.config.description" class="text-sm text-muted-foreground">
136
+ <p *ngIf="ref.config.description" [id]="descId" class="text-sm text-muted-foreground">
121
137
  {{ ref.config.description }}
122
138
  </p>
123
139
  </div>
@@ -139,4 +155,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
139
155
  </div>
140
156
  `, styles: [":host{display:contents}\n"] }]
141
157
  }] });
142
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2hlZXQtd3JhcHBlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy90b2xsZS9zcmMvbGliL3NoZWV0LXdyYXBwZXIuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQVUsV0FBVyxFQUFRLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM3RSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUN2QyxPQUFPLEVBQUUsRUFBRSxFQUFFLE1BQU0sWUFBWSxDQUFDOzs7QUFzRGhDLE1BQU0sT0FBTyxxQkFBcUI7SUFDOUIsV0FBVyxHQUF3QyxRQUFRLENBQUM7SUFDNUQsT0FBTyxDQUFNO0lBQ2IsTUFBTSxHQUFHLEtBQUssQ0FBQztJQUVSLEdBQUcsR0FBRyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUM7SUFFOUIsUUFBUTtRQUNKLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDO1FBQ3ZDLElBQUksQ0FBQyxvQkFBb0IsRUFBRSxDQUFDO1FBRTVCLDBCQUEwQjtRQUMxQixVQUFVLENBQUMsR0FBRyxFQUFFO1lBQ1osSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUM7UUFDdkIsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBRU4sNEJBQTRCO1FBQzVCLElBQUksQ0FBQyxHQUFHLENBQUMsWUFBWSxDQUFDLFNBQVMsQ0FBQyxHQUFHLEVBQUU7WUFDakMsSUFBSSxDQUFDLE1BQU0sR0FBRyxLQUFLLENBQUM7UUFDeEIsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0lBRU8sb0JBQW9CO1FBQ3hCLElBQUksT0FBTyxJQUFJLENBQUMsT0FBTyxLQUFLLFFBQVE7WUFBRSxJQUFJLENBQUMsV0FBVyxHQUFHLFFBQVEsQ0FBQzthQUM3RCxJQUFJLElBQUksQ0FBQyxPQUFPLFlBQVksV0FBVztZQUFFLElBQUksQ0FBQyxXQUFXLEdBQUcsVUFBVSxDQUFDOztZQUN2RSxJQUFJLENBQUMsV0FBVyxHQUFHLFdBQVcsQ0FBQztJQUN4QyxDQUFDO0lBRUQsSUFBSSxVQUFVLEtBQUssT0FBTyxJQUFJLENBQUMsT0FBMkIsQ0FBQyxDQUFDLENBQUM7SUFDN0QsSUFBSSxXQUFXLEtBQUssT0FBTyxJQUFJLENBQUMsT0FBb0IsQ0FBQyxDQUFDLENBQUM7SUFFdkQsS0FBSztRQUNELElBQUksQ0FBQyxHQUFHLENBQUMsS0FBSyxFQUFFLENBQUM7SUFDckIsQ0FBQztJQUVELElBQUksYUFBYTtRQUNiLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLElBQUksSUFBSSxPQUFPLENBQUM7UUFDN0MsTUFBTSxXQUFXLEdBQUc7WUFDaEIsR0FBRyxFQUFFLGlGQUFpRjtZQUN0RixNQUFNLEVBQUUsMEZBQTBGO1lBQ2xHLElBQUksRUFBRSw2R0FBNkc7WUFDbkgsS0FBSyxFQUFFLGdIQUFnSDtTQUMxSCxDQUFDO1FBRUYsTUFBTSxlQUFlLEdBQUc7WUFDcEIsR0FBRyxFQUFFLGVBQWU7WUFDcEIsTUFBTSxFQUFFLGVBQWU7WUFDdkIsSUFBSSxFQUFFLGVBQWU7WUFDckIsS0FBSyxFQUFFLGVBQWU7U0FDekIsQ0FBQztRQUVGLE9BQU8sRUFBRSxDQUNMLGdHQUFnRyxFQUNoRyxXQUFXLENBQUMsSUFBSSxDQUFDLEVBQ2pCLElBQUksQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLE9BQU8sSUFBSSxlQUFlLENBQUMsSUFBSSxDQUFDLEVBQ2hELElBQUksQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FDeEIsQ0FBQztJQUNOLENBQUM7d0dBekRRLHFCQUFxQjs0RkFBckIscUJBQXFCLCtFQWhEcEI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBeUNYLGtHQTFDVyxZQUFZOzs0RkFpRGIscUJBQXFCO2tCQXBEakMsU0FBUzsrQkFDSSxxQkFBcUIsY0FDbkIsSUFBSSxXQUNQLENBQUMsWUFBWSxDQUFDLFlBQ2I7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBeUNYIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQsIFRlbXBsYXRlUmVmLCBUeXBlLCBpbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBTaGVldFJlZiB9IGZyb20gJy4vc2hlZXQtcmVmJztcbmltcG9ydCB7IGNuIH0gZnJvbSAnLi91dGlscy9jbic7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAndG9sbGUtc2hlZXQtd3JhcHBlcicsXG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlXSxcbiAgICB0ZW1wbGF0ZTogYFxuICAgIDxkaXYgXG4gICAgICBbY2xhc3NdPVwiY29tcHV0ZWRDbGFzc1wiIFxuICAgICAgW2F0dHIuZGF0YS1zdGF0ZV09XCJpc09wZW4gPyAnb3BlbicgOiAnY2xvc2VkJ1wiXG4gICAgICAobW91c2Vkb3duKT1cIiRldmVudC5zdG9wUHJvcGFnYXRpb24oKVwiXG4gICAgPlxuICAgICAgPCEtLSBIZWFkZXIgLS0+XG4gICAgICA8ZGl2ICpuZ0lmPVwicmVmLmNvbmZpZy5zaG93Q2xvc2VCdXR0b24gIT09IGZhbHNlIHx8IHJlZi5jb25maWcudGl0bGVcIiBjbGFzcz1cImZsZXggZmxleC1jb2wgc3BhY2UteS0yIG1iLTRcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktYmV0d2VlblwiPlxuICAgICAgICAgIDxoMyAqbmdJZj1cInJlZi5jb25maWcudGl0bGVcIiBjbGFzcz1cInRleHQtbGcgZm9udC1zZW1pYm9sZCB0ZXh0LWZvcmVncm91bmQgdHJhY2tpbmctdGlnaHRcIj5cbiAgICAgICAgICAgIHt7IHJlZi5jb25maWcudGl0bGUgfX1cbiAgICAgICAgICA8L2gzPlxuICAgICAgICAgIDxidXR0b24gXG4gICAgICAgICAgICAqbmdJZj1cInJlZi5jb25maWcuc2hvd0Nsb3NlQnV0dG9uICE9PSBmYWxzZVwiIFxuICAgICAgICAgICAgKGNsaWNrKT1cImNsb3NlKClcIiBcbiAgICAgICAgICAgIGNsYXNzPVwibWwtYXV0byBwLTEgdGV4dC1tdXRlZC1mb3JlZ3JvdW5kIGhvdmVyOnRleHQtZm9yZWdyb3VuZCBob3ZlcjpiZy1hY2NlbnQgcm91bmRlZC1tZCB0cmFuc2l0aW9uLWNvbG9yc1wiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPGkgY2xhc3M9XCJyaS1jbG9zZS1saW5lIHRleHQtMnhsXCI+PC9pPlxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJzci1vbmx5XCI+Q2xvc2U8L3NwYW4+XG4gICAgICAgICAgPC9idXR0b24+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8cCAqbmdJZj1cInJlZi5jb25maWcuZGVzY3JpcHRpb25cIiBjbGFzcz1cInRleHQtc20gdGV4dC1tdXRlZC1mb3JlZ3JvdW5kXCI+XG4gICAgICAgICAge3sgcmVmLmNvbmZpZy5kZXNjcmlwdGlvbiB9fVxuICAgICAgICA8L3A+XG4gICAgICA8L2Rpdj5cblxuICAgICAgPCEtLSBDb250ZW50IC0tPlxuICAgICAgPGRpdiBjbGFzcz1cImdyb3cgb3ZlcmZsb3cteS1hdXRvXCI+XG4gICAgICAgIDxuZy1jb250YWluZXIgW25nU3dpdGNoXT1cImNvbnRlbnRUeXBlXCI+XG4gICAgICAgICAgPGRpdiAqbmdTd2l0Y2hDYXNlPVwiJ3N0cmluZydcIj57eyBjb250ZW50IH19PC9kaXY+XG5cbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCIndGVtcGxhdGUnXCI+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiYXNUZW1wbGF0ZTsgY29udGV4dDogcmVmLmNvbmZpZy5jb250ZXh0XCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCInY29tcG9uZW50J1wiPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdDb21wb25lbnRPdXRsZXQ9XCJhc0NvbXBvbmVudFwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICBgLFxuICAgIHN0eWxlczogW2BcbiAgICA6aG9zdCB7XG4gICAgICBkaXNwbGF5OiBjb250ZW50cztcbiAgICB9XG4gIGBdXG59KVxuZXhwb3J0IGNsYXNzIFNoZWV0V3JhcHBlckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gICAgY29udGVudFR5cGU6ICd0ZW1wbGF0ZScgfCAnc3RyaW5nJyB8ICdjb21wb25lbnQnID0gJ3N0cmluZyc7XG4gICAgY29udGVudDogYW55O1xuICAgIGlzT3BlbiA9IGZhbHNlO1xuXG4gICAgcHVibGljIHJlZiA9IGluamVjdChTaGVldFJlZik7XG5cbiAgICBuZ09uSW5pdCgpIHtcbiAgICAgICAgdGhpcy5jb250ZW50ID0gdGhpcy5yZWYuY29uZmlnLmNvbnRlbnQ7XG4gICAgICAgIHRoaXMuZGV0ZXJtaW5lQ29udGVudFR5cGUoKTtcblxuICAgICAgICAvLyBUcmlnZ2VyIGVudHJ5IGFuaW1hdGlvblxuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuaXNPcGVuID0gdHJ1ZTtcbiAgICAgICAgfSwgMCk7XG5cbiAgICAgICAgLy8gTGlzdGVuIGZvciBjbG9zZSByZXF1ZXN0c1xuICAgICAgICB0aGlzLnJlZi5hZnRlckNsb3NlZCQuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuaXNPcGVuID0gZmFsc2U7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHByaXZhdGUgZGV0ZXJtaW5lQ29udGVudFR5cGUoKSB7XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5jb250ZW50ID09PSAnc3RyaW5nJykgdGhpcy5jb250ZW50VHlwZSA9ICdzdHJpbmcnO1xuICAgICAgICBlbHNlIGlmICh0aGlzLmNvbnRlbnQgaW5zdGFuY2VvZiBUZW1wbGF0ZVJlZikgdGhpcy5jb250ZW50VHlwZSA9ICd0ZW1wbGF0ZSc7XG4gICAgICAgIGVsc2UgdGhpcy5jb250ZW50VHlwZSA9ICdjb21wb25lbnQnO1xuICAgIH1cblxuICAgIGdldCBhc1RlbXBsYXRlKCkgeyByZXR1cm4gdGhpcy5jb250ZW50IGFzIFRlbXBsYXRlUmVmPGFueT47IH1cbiAgICBnZXQgYXNDb21wb25lbnQoKSB7IHJldHVybiB0aGlzLmNvbnRlbnQgYXMgVHlwZTxhbnk+OyB9XG5cbiAgICBjbG9zZSgpIHtcbiAgICAgICAgdGhpcy5yZWYuY2xvc2UoKTtcbiAgICB9XG5cbiAgICBnZXQgY29tcHV0ZWRDbGFzcygpIHtcbiAgICAgICAgY29uc3Qgc2lkZSA9IHRoaXMucmVmLmNvbmZpZy5zaWRlIHx8ICdyaWdodCc7XG4gICAgICAgIGNvbnN0IHNpZGVDbGFzc2VzID0ge1xuICAgICAgICAgICAgdG9wOiBcImluc2V0LXgtMCB0b3AtMCBib3JkZXItYiBzbGlkZS1pbi1mcm9tLXRvcCBkYXRhLVtzdGF0ZT1jbG9zZWRdOnNsaWRlLW91dC10by10b3BcIixcbiAgICAgICAgICAgIGJvdHRvbTogXCJpbnNldC14LTAgYm90dG9tLTAgYm9yZGVyLXQgc2xpZGUtaW4tZnJvbS1ib3R0b20gZGF0YS1bc3RhdGU9Y2xvc2VkXTpzbGlkZS1vdXQtdG8tYm90dG9tXCIsXG4gICAgICAgICAgICBsZWZ0OiBcImluc2V0LXktMCBsZWZ0LTAgaC1mdWxsIHctMy80IGJvcmRlci1yIHNsaWRlLWluLWZyb20tbGVmdCBkYXRhLVtzdGF0ZT1jbG9zZWRdOnNsaWRlLW91dC10by1sZWZ0IHNtOm1heC13LXNtXCIsXG4gICAgICAgICAgICByaWdodDogXCJpbnNldC15LTAgcmlnaHQtMCBoLWZ1bGwgdy0zLzQgYm9yZGVyLWwgc2xpZGUtaW4tZnJvbS1yaWdodCBkYXRhLVtzdGF0ZT1jbG9zZWRdOnNsaWRlLW91dC10by1yaWdodCBzbTptYXgtdy1zbVwiLFxuICAgICAgICB9O1xuXG4gICAgICAgIGNvbnN0IHJvdW5kaW5nQ2xhc3NlcyA9IHtcbiAgICAgICAgICAgIHRvcDogXCJyb3VuZGVkLWItMnhsXCIsXG4gICAgICAgICAgICBib3R0b206IFwicm91bmRlZC10LTJ4bFwiLFxuICAgICAgICAgICAgbGVmdDogXCJyb3VuZGVkLXItMnhsXCIsXG4gICAgICAgICAgICByaWdodDogXCJyb3VuZGVkLWwtMnhsXCIsXG4gICAgICAgIH07XG5cbiAgICAgICAgcmV0dXJuIGNuKFxuICAgICAgICAgICAgXCJmaXhlZCB6LTUwIGZsZXggZmxleC1jb2wgZ2FwLTQgYmctYmFja2dyb3VuZCBwLTYgc2hhZG93LWxnIHRyYW5zaXRpb24gZWFzZS1pbi1vdXQgZHVyYXRpb24tMzAwXCIsXG4gICAgICAgICAgICBzaWRlQ2xhc3Nlc1tzaWRlXSxcbiAgICAgICAgICAgIHRoaXMucmVmLmNvbmZpZy5yb3VuZGVkICYmIHJvdW5kaW5nQ2xhc3Nlc1tzaWRlXSxcbiAgICAgICAgICAgIHRoaXMucmVmLmNvbmZpZy5jbGFzc1xuICAgICAgICApO1xuICAgIH1cbn1cbiJdfQ==
158
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2hlZXQtd3JhcHBlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy90b2xsZS9zcmMvbGliL3NoZWV0LXdyYXBwZXIuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQVUsV0FBVyxFQUFRLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM3RSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDdkMsT0FBTyxFQUFFLEVBQUUsRUFBRSxNQUFNLFlBQVksQ0FBQzs7OztBQTJEaEMsTUFBTSxPQUFPLHFCQUFxQjtJQUM5QixXQUFXLEdBQXdDLFFBQVEsQ0FBQztJQUM1RCxPQUFPLENBQU07SUFDYixNQUFNLEdBQUcsS0FBSyxDQUFDO0lBRWYsdUVBQXVFO0lBQ3RELElBQUksR0FBRyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDdkQsT0FBTyxHQUFHLHFCQUFxQixJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDM0MsTUFBTSxHQUFHLDJCQUEyQixJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7SUFFbEQsR0FBRyxHQUFHLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUU5QixRQUFRO1FBQ0osSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUM7UUFDdkMsSUFBSSxDQUFDLG9CQUFvQixFQUFFLENBQUM7UUFFNUIsMEJBQTBCO1FBQzFCLFVBQVUsQ0FBQyxHQUFHLEVBQUU7WUFDWixJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQztRQUN2QixDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFFTiw0QkFBNEI7UUFDNUIsSUFBSSxDQUFDLEdBQUcsQ0FBQyxZQUFZLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRTtZQUNqQyxJQUFJLENBQUMsTUFBTSxHQUFHLEtBQUssQ0FBQztRQUN4QixDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFTyxvQkFBb0I7UUFDeEIsSUFBSSxPQUFPLElBQUksQ0FBQyxPQUFPLEtBQUssUUFBUTtZQUFFLElBQUksQ0FBQyxXQUFXLEdBQUcsUUFBUSxDQUFDO2FBQzdELElBQUksSUFBSSxDQUFDLE9BQU8sWUFBWSxXQUFXO1lBQUUsSUFBSSxDQUFDLFdBQVcsR0FBRyxVQUFVLENBQUM7O1lBQ3ZFLElBQUksQ0FBQyxXQUFXLEdBQUcsV0FBVyxDQUFDO0lBQ3hDLENBQUM7SUFFRCxJQUFJLFVBQVUsS0FBSyxPQUFPLElBQUksQ0FBQyxPQUEyQixDQUFDLENBQUMsQ0FBQztJQUM3RCxJQUFJLFdBQVcsS0FBSyxPQUFPLElBQUksQ0FBQyxPQUFvQixDQUFDLENBQUMsQ0FBQztJQUV2RCxLQUFLO1FBQ0QsSUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUNyQixDQUFDO0lBRUQsSUFBSSxhQUFhO1FBQ2IsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsSUFBSSxJQUFJLE9BQU8sQ0FBQztRQUM3QyxNQUFNLFdBQVcsR0FBRztZQUNoQixHQUFHLEVBQUUsaUZBQWlGO1lBQ3RGLE1BQU0sRUFBRSwwRkFBMEY7WUFDbEcsSUFBSSxFQUFFLDZHQUE2RztZQUNuSCxLQUFLLEVBQUUsZ0hBQWdIO1NBQzFILENBQUM7UUFFRixNQUFNLGVBQWUsR0FBRztZQUNwQixHQUFHLEVBQUUsZUFBZTtZQUNwQixNQUFNLEVBQUUsZUFBZTtZQUN2QixJQUFJLEVBQUUsZUFBZTtZQUNyQixLQUFLLEVBQUUsZUFBZTtTQUN6QixDQUFDO1FBRUYsT0FBTyxFQUFFLENBQ0wsZ0dBQWdHLEVBQ2hHLFdBQVcsQ0FBQyxJQUFJLENBQUMsRUFDakIsSUFBSSxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsT0FBTyxJQUFJLGVBQWUsQ0FBQyxJQUFJLENBQUMsRUFDaEQsSUFBSSxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUN4QixDQUFDO0lBQ04sQ0FBQzt3R0E5RFEscUJBQXFCOzRGQUFyQixxQkFBcUIsK0VBckRwQjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQThDWCxrR0EvQ1csWUFBWSw2dUJBQUUsVUFBVTs7NEZBc0R6QixxQkFBcUI7a0JBekRqQyxTQUFTOytCQUNJLHFCQUFxQixjQUNuQixJQUFJLFdBQ1AsQ0FBQyxZQUFZLEVBQUUsVUFBVSxDQUFDLFlBQ3pCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBOENYIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQsIFRlbXBsYXRlUmVmLCBUeXBlLCBpbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBBMTF5TW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2ExMXknO1xuaW1wb3J0IHsgU2hlZXRSZWYgfSBmcm9tICcuL3NoZWV0LXJlZic7XG5pbXBvcnQgeyBjbiB9IGZyb20gJy4vdXRpbHMvY24nO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ3RvbGxlLXNoZWV0LXdyYXBwZXInLFxuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSwgQTExeU1vZHVsZV0sXG4gICAgdGVtcGxhdGU6IGBcbiAgICA8ZGl2XG4gICAgICBbY2xhc3NdPVwiY29tcHV0ZWRDbGFzc1wiXG4gICAgICBbYXR0ci5kYXRhLXN0YXRlXT1cImlzT3BlbiA/ICdvcGVuJyA6ICdjbG9zZWQnXCJcbiAgICAgIHJvbGU9XCJkaWFsb2dcIlxuICAgICAgYXJpYS1tb2RhbD1cInRydWVcIlxuICAgICAgW2F0dHIuYXJpYS1sYWJlbGxlZGJ5XT1cInJlZi5jb25maWcudGl0bGUgPyB0aXRsZUlkIDogbnVsbFwiXG4gICAgICBbYXR0ci5hcmlhLWRlc2NyaWJlZGJ5XT1cInJlZi5jb25maWcuZGVzY3JpcHRpb24gPyBkZXNjSWQgOiBudWxsXCJcbiAgICAgIGNka1RyYXBGb2N1cyBjZGtUcmFwRm9jdXNBdXRvQ2FwdHVyZVxuICAgICAgKG1vdXNlZG93bik9XCIkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcIlxuICAgID5cbiAgICAgIDwhLS0gSGVhZGVyIC0tPlxuICAgICAgPGRpdiAqbmdJZj1cInJlZi5jb25maWcuc2hvd0Nsb3NlQnV0dG9uICE9PSBmYWxzZSB8fCByZWYuY29uZmlnLnRpdGxlXCIgY2xhc3M9XCJmbGV4IGZsZXgtY29sIHNwYWNlLXktMiBtYi00XCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWJldHdlZW5cIj5cbiAgICAgICAgICA8aDMgKm5nSWY9XCJyZWYuY29uZmlnLnRpdGxlXCIgW2lkXT1cInRpdGxlSWRcIiBjbGFzcz1cInRleHQtbGcgZm9udC1zZW1pYm9sZCB0ZXh0LWZvcmVncm91bmQgdHJhY2tpbmctdGlnaHRcIj5cbiAgICAgICAgICAgIHt7IHJlZi5jb25maWcudGl0bGUgfX1cbiAgICAgICAgICA8L2gzPlxuICAgICAgICAgIDxidXR0b24gXG4gICAgICAgICAgICAqbmdJZj1cInJlZi5jb25maWcuc2hvd0Nsb3NlQnV0dG9uICE9PSBmYWxzZVwiIFxuICAgICAgICAgICAgKGNsaWNrKT1cImNsb3NlKClcIiBcbiAgICAgICAgICAgIGNsYXNzPVwibWwtYXV0byBwLTEgdGV4dC1tdXRlZC1mb3JlZ3JvdW5kIGhvdmVyOnRleHQtZm9yZWdyb3VuZCBob3ZlcjpiZy1hY2NlbnQgcm91bmRlZC1tZCB0cmFuc2l0aW9uLWNvbG9yc1wiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPGkgY2xhc3M9XCJyaS1jbG9zZS1saW5lIHRleHQtMnhsXCI+PC9pPlxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJzci1vbmx5XCI+Q2xvc2U8L3NwYW4+XG4gICAgICAgICAgPC9idXR0b24+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8cCAqbmdJZj1cInJlZi5jb25maWcuZGVzY3JpcHRpb25cIiBbaWRdPVwiZGVzY0lkXCIgY2xhc3M9XCJ0ZXh0LXNtIHRleHQtbXV0ZWQtZm9yZWdyb3VuZFwiPlxuICAgICAgICAgIHt7IHJlZi5jb25maWcuZGVzY3JpcHRpb24gfX1cbiAgICAgICAgPC9wPlxuICAgICAgPC9kaXY+XG5cbiAgICAgIDwhLS0gQ29udGVudCAtLT5cbiAgICAgIDxkaXYgY2xhc3M9XCJncm93IG92ZXJmbG93LXktYXV0b1wiPlxuICAgICAgICA8bmctY29udGFpbmVyIFtuZ1N3aXRjaF09XCJjb250ZW50VHlwZVwiPlxuICAgICAgICAgIDxkaXYgKm5nU3dpdGNoQ2FzZT1cIidzdHJpbmcnXCI+e3sgY29udGVudCB9fTwvZGl2PlxuXG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwiJ3RlbXBsYXRlJ1wiPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImFzVGVtcGxhdGU7IGNvbnRleHQ6IHJlZi5jb25maWcuY29udGV4dFwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwiJ2NvbXBvbmVudCdcIj5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nQ29tcG9uZW50T3V0bGV0PVwiYXNDb21wb25lbnRcIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgYCxcbiAgICBzdHlsZXM6IFtgXG4gICAgOmhvc3Qge1xuICAgICAgZGlzcGxheTogY29udGVudHM7XG4gICAgfVxuICBgXVxufSlcbmV4cG9ydCBjbGFzcyBTaGVldFdyYXBwZXJDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICAgIGNvbnRlbnRUeXBlOiAndGVtcGxhdGUnIHwgJ3N0cmluZycgfCAnY29tcG9uZW50JyA9ICdzdHJpbmcnO1xuICAgIGNvbnRlbnQ6IGFueTtcbiAgICBpc09wZW4gPSBmYWxzZTtcblxuICAgIC8qKiBTdGFibGUsIHBlci1pbnN0YW5jZSBpZHMgdXNlZCB0byB3aXJlIGRpYWxvZyBBUklBIHJlbGF0aW9uc2hpcHMuICovXG4gICAgcHJpdmF0ZSByZWFkb25seSBfdWlkID0gTWF0aC5yYW5kb20oKS50b1N0cmluZygzNikuc3Vic3RyKDIsIDkpO1xuICAgIHJlYWRvbmx5IHRpdGxlSWQgPSBgdG9sbGUtc2hlZXQtdGl0bGUtJHt0aGlzLl91aWR9YDtcbiAgICByZWFkb25seSBkZXNjSWQgPSBgdG9sbGUtc2hlZXQtZGVzY3JpcHRpb24tJHt0aGlzLl91aWR9YDtcblxuICAgIHB1YmxpYyByZWYgPSBpbmplY3QoU2hlZXRSZWYpO1xuXG4gICAgbmdPbkluaXQoKSB7XG4gICAgICAgIHRoaXMuY29udGVudCA9IHRoaXMucmVmLmNvbmZpZy5jb250ZW50O1xuICAgICAgICB0aGlzLmRldGVybWluZUNvbnRlbnRUeXBlKCk7XG5cbiAgICAgICAgLy8gVHJpZ2dlciBlbnRyeSBhbmltYXRpb25cbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLmlzT3BlbiA9IHRydWU7XG4gICAgICAgIH0sIDApO1xuXG4gICAgICAgIC8vIExpc3RlbiBmb3IgY2xvc2UgcmVxdWVzdHNcbiAgICAgICAgdGhpcy5yZWYuYWZ0ZXJDbG9zZWQkLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLmlzT3BlbiA9IGZhbHNlO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGRldGVybWluZUNvbnRlbnRUeXBlKCkge1xuICAgICAgICBpZiAodHlwZW9mIHRoaXMuY29udGVudCA9PT0gJ3N0cmluZycpIHRoaXMuY29udGVudFR5cGUgPSAnc3RyaW5nJztcbiAgICAgICAgZWxzZSBpZiAodGhpcy5jb250ZW50IGluc3RhbmNlb2YgVGVtcGxhdGVSZWYpIHRoaXMuY29udGVudFR5cGUgPSAndGVtcGxhdGUnO1xuICAgICAgICBlbHNlIHRoaXMuY29udGVudFR5cGUgPSAnY29tcG9uZW50JztcbiAgICB9XG5cbiAgICBnZXQgYXNUZW1wbGF0ZSgpIHsgcmV0dXJuIHRoaXMuY29udGVudCBhcyBUZW1wbGF0ZVJlZjxhbnk+OyB9XG4gICAgZ2V0IGFzQ29tcG9uZW50KCkgeyByZXR1cm4gdGhpcy5jb250ZW50IGFzIFR5cGU8YW55PjsgfVxuXG4gICAgY2xvc2UoKSB7XG4gICAgICAgIHRoaXMucmVmLmNsb3NlKCk7XG4gICAgfVxuXG4gICAgZ2V0IGNvbXB1dGVkQ2xhc3MoKSB7XG4gICAgICAgIGNvbnN0IHNpZGUgPSB0aGlzLnJlZi5jb25maWcuc2lkZSB8fCAncmlnaHQnO1xuICAgICAgICBjb25zdCBzaWRlQ2xhc3NlcyA9IHtcbiAgICAgICAgICAgIHRvcDogXCJpbnNldC14LTAgdG9wLTAgYm9yZGVyLWIgc2xpZGUtaW4tZnJvbS10b3AgZGF0YS1bc3RhdGU9Y2xvc2VkXTpzbGlkZS1vdXQtdG8tdG9wXCIsXG4gICAgICAgICAgICBib3R0b206IFwiaW5zZXQteC0wIGJvdHRvbS0wIGJvcmRlci10IHNsaWRlLWluLWZyb20tYm90dG9tIGRhdGEtW3N0YXRlPWNsb3NlZF06c2xpZGUtb3V0LXRvLWJvdHRvbVwiLFxuICAgICAgICAgICAgbGVmdDogXCJpbnNldC15LTAgbGVmdC0wIGgtZnVsbCB3LTMvNCBib3JkZXItciBzbGlkZS1pbi1mcm9tLWxlZnQgZGF0YS1bc3RhdGU9Y2xvc2VkXTpzbGlkZS1vdXQtdG8tbGVmdCBzbTptYXgtdy1zbVwiLFxuICAgICAgICAgICAgcmlnaHQ6IFwiaW5zZXQteS0wIHJpZ2h0LTAgaC1mdWxsIHctMy80IGJvcmRlci1sIHNsaWRlLWluLWZyb20tcmlnaHQgZGF0YS1bc3RhdGU9Y2xvc2VkXTpzbGlkZS1vdXQtdG8tcmlnaHQgc206bWF4LXctc21cIixcbiAgICAgICAgfTtcblxuICAgICAgICBjb25zdCByb3VuZGluZ0NsYXNzZXMgPSB7XG4gICAgICAgICAgICB0b3A6IFwicm91bmRlZC1iLTJ4bFwiLFxuICAgICAgICAgICAgYm90dG9tOiBcInJvdW5kZWQtdC0yeGxcIixcbiAgICAgICAgICAgIGxlZnQ6IFwicm91bmRlZC1yLTJ4bFwiLFxuICAgICAgICAgICAgcmlnaHQ6IFwicm91bmRlZC1sLTJ4bFwiLFxuICAgICAgICB9O1xuXG4gICAgICAgIHJldHVybiBjbihcbiAgICAgICAgICAgIFwiZml4ZWQgei01MCBmbGV4IGZsZXgtY29sIGdhcC00IGJnLWJhY2tncm91bmQgcC02IHNoYWRvdy1sZyB0cmFuc2l0aW9uIGVhc2UtaW4tb3V0IGR1cmF0aW9uLTMwMFwiLFxuICAgICAgICAgICAgc2lkZUNsYXNzZXNbc2lkZV0sXG4gICAgICAgICAgICB0aGlzLnJlZi5jb25maWcucm91bmRlZCAmJiByb3VuZGluZ0NsYXNzZXNbc2lkZV0sXG4gICAgICAgICAgICB0aGlzLnJlZi5jb25maWcuY2xhc3NcbiAgICAgICAgKTtcbiAgICB9XG59XG4iXX0=
@@ -2,8 +2,10 @@ import { Component, Input, Output, EventEmitter, inject, ViewChild, ViewContaine
2
2
  import { CommonModule } from '@angular/common';
3
3
  import { Overlay, OverlayConfig, ScrollStrategyOptions } from '@angular/cdk/overlay';
4
4
  import { TemplatePortal } from '@angular/cdk/portal';
5
+ import { A11yModule } from '@angular/cdk/a11y';
5
6
  import { cn } from './utils/cn';
6
7
  import * as i0 from "@angular/core";
8
+ import * as i1 from "@angular/cdk/a11y";
7
9
  export class SheetComponent {
8
10
  isOpen = false;
9
11
  hasBackdrop = true;
@@ -12,6 +14,8 @@ export class SheetComponent {
12
14
  viewContainerRef = inject(ViewContainerRef);
13
15
  scrollStrategy = inject(ScrollStrategyOptions);
14
16
  overlayRef;
17
+ /** Element focused before the sheet opened, restored on close. */
18
+ previouslyFocused;
15
19
  contentComponent;
16
20
  open() {
17
21
  if (this.isOpen)
@@ -30,6 +34,8 @@ export class SheetComponent {
30
34
  show() {
31
35
  if (this.overlayRef || !this.contentComponent?.contentTemplate)
32
36
  return;
37
+ // Remember the trigger so focus can be restored when the sheet closes.
38
+ this.previouslyFocused = document.activeElement;
33
39
  const overlayConfig = new OverlayConfig({
34
40
  hasBackdrop: this.hasBackdrop,
35
41
  backdropClass: 'tolle-modal-backdrop',
@@ -42,15 +48,25 @@ export class SheetComponent {
42
48
  if (this.hasBackdrop) {
43
49
  this.overlayRef.backdropClick().subscribe(() => this.close());
44
50
  }
51
+ // Escape-to-close.
52
+ this.overlayRef.keydownEvents().subscribe((event) => {
53
+ if (event.key === 'Escape') {
54
+ event.preventDefault();
55
+ this.close();
56
+ }
57
+ });
45
58
  }
46
59
  hide() {
47
60
  if (this.overlayRef) {
61
+ const toRestore = this.previouslyFocused;
48
62
  setTimeout(() => {
49
63
  if (this.overlayRef) {
50
64
  this.overlayRef.detach();
51
65
  this.overlayRef.dispose();
52
66
  this.overlayRef = undefined;
53
67
  }
68
+ // Restore focus to the trigger after the exit animation.
69
+ toRestore?.focus?.();
54
70
  }, 300);
55
71
  }
56
72
  }
@@ -107,6 +123,9 @@ export class SheetContentComponent {
107
123
  rounded = false;
108
124
  class = '';
109
125
  contentTemplate;
126
+ /** Projected title/description used to build the dialog's accessible name. */
127
+ titleCmp;
128
+ descriptionCmp;
110
129
  sheet = inject(SheetComponent);
111
130
  close() {
112
131
  this.sheet.close();
@@ -127,14 +146,19 @@ export class SheetContentComponent {
127
146
  return cn("fixed z-50 gap-4 bg-background p-6 shadow-lg transition ease-in-out data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=open]:duration-500 data-[state=closed]:duration-300", sideClasses[this.side], this.rounded && roundingClasses[this.side], this.class);
128
147
  }
129
148
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: SheetContentComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
130
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.14", type: SheetContentComponent, isStandalone: true, selector: "tolle-sheet-content", inputs: { side: "side", rounded: "rounded", class: "class" }, viewQueries: [{ propertyName: "contentTemplate", first: true, predicate: ["sheetContent"], descendants: true, static: true }], ngImport: i0, template: `
149
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.14", type: SheetContentComponent, isStandalone: true, selector: "tolle-sheet-content", inputs: { side: "side", rounded: "rounded", class: "class" }, queries: [{ propertyName: "titleCmp", first: true, predicate: i0.forwardRef(() => SheetTitleComponent), descendants: true }, { propertyName: "descriptionCmp", first: true, predicate: i0.forwardRef(() => SheetDescriptionComponent), descendants: true }], viewQueries: [{ propertyName: "contentTemplate", first: true, predicate: ["sheetContent"], descendants: true, static: true }], ngImport: i0, template: `
131
150
  <ng-template #sheetContent>
132
- <div
133
- [class]="computedClass"
151
+ <div
152
+ [class]="computedClass"
134
153
  [attr.data-state]="sheet.isOpen ? 'open' : 'closed'"
154
+ role="dialog"
155
+ aria-modal="true"
156
+ [attr.aria-labelledby]="titleCmp?.id || null"
157
+ [attr.aria-describedby]="descriptionCmp?.id || null"
158
+ cdkTrapFocus cdkTrapFocusAutoCapture
135
159
  (mousedown)="$event.stopPropagation()">
136
- <button
137
- (click)="close()"
160
+ <button
161
+ (click)="close()"
138
162
  class="absolute right-4 top-4 rounded-sm opacity-70 ring-offset-background transition-opacity hover:opacity-100 focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:pointer-events-none"
139
163
  >
140
164
  <i class="ri-close-line text-xl"></i>
@@ -143,22 +167,27 @@ export class SheetContentComponent {
143
167
  <ng-content></ng-content>
144
168
  </div>
145
169
  </ng-template>
146
- `, isInline: true, dependencies: [{ kind: "ngmodule", type: CommonModule }] });
170
+ `, isInline: true, dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: A11yModule }, { kind: "directive", type: i1.CdkTrapFocus, selector: "[cdkTrapFocus]", inputs: ["cdkTrapFocus", "cdkTrapFocusAutoCapture"], exportAs: ["cdkTrapFocus"] }] });
147
171
  }
148
172
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: SheetContentComponent, decorators: [{
149
173
  type: Component,
150
174
  args: [{
151
175
  selector: 'tolle-sheet-content',
152
176
  standalone: true,
153
- imports: [CommonModule],
177
+ imports: [CommonModule, A11yModule],
154
178
  template: `
155
179
  <ng-template #sheetContent>
156
- <div
157
- [class]="computedClass"
180
+ <div
181
+ [class]="computedClass"
158
182
  [attr.data-state]="sheet.isOpen ? 'open' : 'closed'"
183
+ role="dialog"
184
+ aria-modal="true"
185
+ [attr.aria-labelledby]="titleCmp?.id || null"
186
+ [attr.aria-describedby]="descriptionCmp?.id || null"
187
+ cdkTrapFocus cdkTrapFocusAutoCapture
159
188
  (mousedown)="$event.stopPropagation()">
160
- <button
161
- (click)="close()"
189
+ <button
190
+ (click)="close()"
162
191
  class="absolute right-4 top-4 rounded-sm opacity-70 ring-offset-background transition-opacity hover:opacity-100 focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:pointer-events-none"
163
192
  >
164
193
  <i class="ri-close-line text-xl"></i>
@@ -178,6 +207,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
178
207
  }], contentTemplate: [{
179
208
  type: ViewChild,
180
209
  args: ['sheetContent', { static: true }]
210
+ }], titleCmp: [{
211
+ type: ContentChild,
212
+ args: [forwardRef(() => SheetTitleComponent)]
213
+ }], descriptionCmp: [{
214
+ type: ContentChild,
215
+ args: [forwardRef(() => SheetDescriptionComponent)]
181
216
  }] } });
182
217
  export class SheetHeaderComponent {
183
218
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: SheetHeaderComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
@@ -220,8 +255,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
220
255
  }]
221
256
  }] });
222
257
  export class SheetTitleComponent {
258
+ /** Stable id referenced by the sheet's `aria-labelledby`. */
259
+ id = `tolle-sheet-title-${Math.random().toString(36).substr(2, 9)}`;
223
260
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: SheetTitleComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
224
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.14", type: SheetTitleComponent, isStandalone: true, selector: "tolle-sheet-title", ngImport: i0, template: `
261
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.14", type: SheetTitleComponent, isStandalone: true, selector: "tolle-sheet-title", host: { properties: { "attr.id": "id" } }, ngImport: i0, template: `
225
262
  <h3 class="text-lg font-semibold text-foreground">
226
263
  <ng-content></ng-content>
227
264
  </h3>
@@ -236,12 +273,15 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
236
273
  <h3 class="text-lg font-semibold text-foreground">
237
274
  <ng-content></ng-content>
238
275
  </h3>
239
- `
276
+ `,
277
+ host: { '[attr.id]': 'id' }
240
278
  }]
241
279
  }] });
242
280
  export class SheetDescriptionComponent {
281
+ /** Stable id referenced by the sheet's `aria-describedby`. */
282
+ id = `tolle-sheet-description-${Math.random().toString(36).substr(2, 9)}`;
243
283
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: SheetDescriptionComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
244
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.14", type: SheetDescriptionComponent, isStandalone: true, selector: "tolle-sheet-description", ngImport: i0, template: `
284
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.14", type: SheetDescriptionComponent, isStandalone: true, selector: "tolle-sheet-description", host: { properties: { "attr.id": "id" } }, ngImport: i0, template: `
245
285
  <p class="text-sm text-muted-foreground">
246
286
  <ng-content></ng-content>
247
287
  </p>
@@ -256,7 +296,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
256
296
  <p class="text-sm text-muted-foreground">
257
297
  <ng-content></ng-content>
258
298
  </p>
259
- `
299
+ `,
300
+ host: { '[attr.id]': 'id' }
260
301
  }]
261
302
  }] });
262
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2hlZXQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvdG9sbGUvc3JjL2xpYi9zaGVldC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLFlBQVksRUFBRSxNQUFNLEVBQWUsU0FBUyxFQUFFLGdCQUFnQixFQUFhLFlBQVksRUFBRSxVQUFVLEVBQWdDLE1BQU0sZUFBZSxDQUFDO0FBQzVMLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsT0FBTyxFQUFjLGFBQWEsRUFBRSxxQkFBcUIsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ2pHLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUNyRCxPQUFPLEVBQUUsRUFBRSxFQUFFLE1BQU0sWUFBWSxDQUFDOztBQVFoQyxNQUFNLE9BQU8sY0FBYztJQUNoQixNQUFNLEdBQUcsS0FBSyxDQUFDO0lBQ2YsV0FBVyxHQUFHLElBQUksQ0FBQztJQUNsQixZQUFZLEdBQUcsSUFBSSxZQUFZLEVBQVcsQ0FBQztJQUU3QyxPQUFPLEdBQUcsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQzFCLGdCQUFnQixHQUFHLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO0lBQzVDLGNBQWMsR0FBRyxNQUFNLENBQUMscUJBQXFCLENBQUMsQ0FBQztJQUUvQyxVQUFVLENBQWM7SUFFdUIsZ0JBQWdCLENBQU87SUFFOUUsSUFBSTtRQUNGLElBQUksSUFBSSxDQUFDLE1BQU07WUFBRSxPQUFPO1FBQ3hCLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDO1FBQ25CLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzdCLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztJ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TjFCOzs7O0dBSVQ7OzRGQUVVLHlCQUF5QjtrQkFUckMsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUseUJBQXlCO29CQUNuQyxVQUFVLEVBQUUsSUFBSTtvQkFDaEIsUUFBUSxFQUFFOzs7O0dBSVQ7aUJBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIElucHV0LCBPdXRwdXQsIEV2ZW50RW1pdHRlciwgaW5qZWN0LCBUZW1wbGF0ZVJlZiwgVmlld0NoaWxkLCBWaWV3Q29udGFpbmVyUmVmLCBPbkRlc3Ryb3ksIENvbnRlbnRDaGlsZCwgZm9yd2FyZFJlZiwgRWxlbWVudFJlZiwgQWZ0ZXJDb250ZW50SW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IE92ZXJsYXksIE92ZXJsYXlSZWYsIE92ZXJsYXlDb25maWcsIFNjcm9sbFN0cmF0ZWd5T3B0aW9ucyB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9vdmVybGF5JztcbmltcG9ydCB7IFRlbXBsYXRlUG9ydGFsIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL3BvcnRhbCc7XG5pbXBvcnQgeyBjbiB9IGZyb20gJy4vdXRpbHMvY24nO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd0b2xsZS1zaGVldCcsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtDb21tb25Nb2R1bGVdLFxuICB0ZW1wbGF0ZTogYDxuZy1jb250ZW50PjwvbmctY29udGVudD5gXG59KVxuZXhwb3J0IGNsYXNzIFNoZWV0Q29tcG9uZW50IHtcbiAgQElucHV0KCkgaXNPcGVuID0gZmFsc2U7XG4gIEBJbnB1dCgpIGhhc0JhY2tkcm9wID0gdHJ1ZTtcbiAgQE91dHB1dCgpIGlzT3BlbkNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4oKTtcblxuICBwcml2YXRlIG92ZXJsYXkgPSBpbmplY3QoT3ZlcmxheSk7XG4gIHByaXZhdGUgdmlld0NvbnRhaW5lclJlZiA9IGluamVjdChWaWV3Q29udGFpbmVyUmVmKTtcbiAgcHJpdmF0ZSBzY3JvbGxTdHJhdGVneSA9IGluamVjdChTY3JvbGxTdHJhdGVneU9wdGlvbnMpO1xuXG4gIHByaXZhdGUgb3ZlcmxheVJlZj86IE92ZXJsYXlSZWY7XG5cbiAgQENvbnRlbnRDaGlsZChmb3J3YXJkUmVmKCgpID0+IFNoZWV0Q29udGVudENvbXBvbmVudCkpIGNvbnRlbnRDb21wb25lbnQ/OiBhbnk7XG5cbiAgb3BlbigpIHtcbiAgICBpZiAodGhpcy5pc09wZW4pIHJldHVybjtcbiAgICB0aGlzLmlzT3BlbiA9IHRydWU7XG4gICAgdGhpcy5pc09wZW5DaGFuZ2UuZW1pdCh0cnVlKTtcbiAgICB0aGlzLnNob3coKTtcbiAgfVxuXG4gIGNsb3NlKCkge1xuICAgIGlmICghdGhpcy5pc09wZW4pIHJldHVybjtcbiAgICB0aGlzLmlzT3BlbiA9IGZhbHNlO1xuICAgIHRoaXMuaXNPcGVuQ2hhbmdlLmVtaXQoZmFsc2UpO1xuICAgIHRoaXMuaGlkZSgpO1xuICB9XG5cbiAgcHJpdmF0ZSBzaG93KCkge1xuICAgIGlmICh0aGlzLm92ZXJsYXlSZWYgfHwgIXRoaXMuY29udGVudENvbXBvbmVudD8uY29udGVudFRlbXBsYXRlKSByZXR1cm47XG5cbiAgICBjb25zdCBvdmVybGF5Q29uZmlnID0gbmV3IE92ZXJsYXlDb25maWcoe1xuICAgICAgaGFzQmFja2Ryb3A6IHRoaXMuaGFzQmFja2Ryb3AsXG4gICAgICBiYWNrZHJvcENsYXNzOiAndG9sbGUtbW9kYWwtYmFja2Ryb3AnLFxuICAgICAgc2Nyb2xsU3RyYXRlZ3k6IHRoaXMuc2Nyb2xsU3RyYXRlZ3kuYmxvY2soKSxcbiAgICAgIHBvc2l0aW9uU3RyYXRlZ3k6IHRoaXMub3ZlcmxheS5wb3NpdGlvbigpLmdsb2JhbCgpLmNlbnRlckhvcml6b250YWxseSgpLmNlbnRlclZlcnRpY2FsbHkoKSAvLyBUaGlzIGNlbnRlcnMga2V5LCBidXQgc2hlZXQgaXMgZml4ZWQgdmlhIGNsYXNzZXNcbiAgICB9KTtcblxuICAgIHRoaXMub3ZlcmxheVJlZiA9IHRoaXMub3ZlcmxheS5jcmVhdGUob3ZlcmxheUNvbmZpZyk7XG5cbiAgICBjb25zdCBwb3J0YWwgPSBuZXcgVGVtcGxhdGVQb3J0YWwodGhpcy5jb250ZW50Q29tcG9uZW50LmNvbnRlbnRUZW1wbGF0ZSwgdGhpcy52aWV3Q29udGFpbmVyUmVmKTtcbiAgICB0aGlzLm92ZXJsYXlSZWYuYXR0YWNoKHBvcnRhbCk7XG5cbiAgICBpZiAodGhpcy5oYXNCYWNrZHJvcCkge1xuICAgICAgdGhpcy5vdmVybGF5UmVmLmJhY2tkcm9wQ2xpY2soKS5zdWJzY3JpYmUoKCkgPT4gdGhpcy5jbG9zZSgpKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGhpZGUoKSB7XG4gICAgaWYgKHRoaXMub3ZlcmxheVJlZikge1xuICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgIGlmICh0aGlzLm92ZXJsYXlSZWYpIHtcbiAgICAgICAgICB0aGlzLm92ZXJsYXlSZWYuZGV0YWNoKCk7XG4gICAgICAgICAgdGhpcy5vdmVybGF5UmVmLmRpc3Bvc2UoKTtcbiAgICAgICAgICB0aGlzLm92ZXJsYXlSZWYgPSB1bmRlZmluZWQ7XG4gICAgICAgIH1cbiAgICAgIH0sIDMwMCk7XG4gICAgfVxuICB9XG5cbiAgbmdPbkRlc3Ryb3koKSB7XG4gICAgLy8gSW1tZWRpYXRlIGNsZWFudXAgb24gZGVzdHJveVxuICAgIGlmICh0aGlzLm92ZXJsYXlSZWYpIHtcbiAgICAgIHRoaXMub3ZlcmxheVJlZi5kaXNwb3NlKCk7XG4gICAgfVxuICB9XG59XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3RvbGxlLXNoZWV0LXRyaWdnZXInLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlXSxcbiAgdGVtcGxhdGU6IGA8bmctY29udGVudD48L25nLWNvbnRlbnQ+YCxcbiAgaG9zdDoge1xuICAgICcoY2xpY2spJzogJ29uQ2xpY2soKScsXG4gICAgJ2NsYXNzJzogJ2lubGluZS1ibG9jaydcbiAgfVxufSlcbmV4cG9ydCBjbGFzcyBTaGVldFRyaWdnZXJDb21wb25lbnQge1xuICBwcml2YXRlIHNoZWV0ID0gaW5qZWN0KFNoZWV0Q29tcG9uZW50KTtcblxuICBvbkNsaWNrKCkge1xuICAgIHRoaXMuc2hlZXQub3BlbigpO1xuICB9XG59XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3RvbGxlLXNoZWV0LWNvbnRlbnQnLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlXSxcbiAgdGVtcGxhdGU6IGBcbiAgICA8bmctdGVtcGxhdGUgI3NoZWV0Q29udGVudD5cbiAgICAgIDxkaXYgXG4gICAgICAgIFtjbGFzc109XCJjb21wdXRlZENsYXNzXCIgXG4gICAgICAgIFthdHRyLmRhdGEtc3RhdGVdPVwic2hlZXQuaXNPcGVuID8gJ29wZW4nIDogJ2Nsb3NlZCdcIlxuICAgICAgICAobW91c2Vkb3duKT1cIiRldmVudC5zdG9wUHJvcGFnYXRpb24oKVwiPlxuICAgICAgICA8YnV0dG9uIFxuICAgICAgICAgIChjbGljayk9XCJjbG9zZSgpXCIgXG4gICAgICAgICAgY2xhc3M9XCJhYnNvbHV0ZSByaWdodC00IHRvcC00IHJvdW5kZWQtc20gb3BhY2l0eS03MCByaW5nLW9mZnNldC1iYWNrZ3JvdW5kIHRyYW5zaXRpb24tb3BhY2l0eSBob3ZlcjpvcGFjaXR5LTEwMCBmb2N1czpvdXRsaW5lLW5vbmUgZm9jdXM6cmluZy0yIGZvY3VzOnJpbmctcmluZyBmb2N1czpyaW5nLW9mZnNldC0yIGRpc2FibGVkOnBvaW50ZXItZXZlbnRzLW5vbmVcIlxuICAgICAgICA+XG4gICAgICAgICAgPGkgY2xhc3M9XCJyaS1jbG9zZS1saW5lIHRleHQteGxcIj48L2k+XG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJzci1vbmx5XCI+Q2xvc2U8L3NwYW4+XG4gICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8bmctY29udGVudD48L25nLWNvbnRlbnQ+XG4gICAgICA8L2Rpdj5cbiAgICA8L25nLXRlbXBsYXRlPlxuICBgXG59KVxuZXhwb3J0IGNsYXNzIFNoZWV0Q29udGVudENvbXBvbmVudCB7XG4gIEBJbnB1dCgpIHNpZGU6ICd0b3AnIHwgJ2JvdHRvbScgfCAnbGVmdCcgfCAncmlnaHQnID0gJ3JpZ2h0JztcbiAgQElucHV0KCkgcm91bmRlZDogYm9vbGVhbiA9IGZhbHNlO1xuICBASW5wdXQoKSBjbGFzczogc3RyaW5nID0gJyc7XG5cbiAgQFZpZXdDaGlsZCgnc2hlZXRDb250ZW50JywgeyBzdGF0aWM6IHRydWUgfSkgY29udGVudFRlbXBsYXRlITogVGVtcGxhdGVSZWY8YW55PjtcblxuICBwdWJsaWMgc2hlZXQgPSBpbmplY3QoU2hlZXRDb21wb25lbnQpO1xuXG4gIGNsb3NlKCkge1xuICAgIHRoaXMuc2hlZXQuY2xvc2UoKTtcbiAgfVxuXG4gIGdldCBjb21wdXRlZENsYXNzKCkge1xuICAgIGNvbnN0IHNpZGVDbGFzc2VzID0ge1xuICAgICAgdG9wOiBcImluc2V0LXgtMCB0b3AtMCBib3JkZXItYiBkYXRhLVtzdGF0ZT1vcGVuXTphbmltYXRlLWluIGRhdGEtW3N0YXRlPWNsb3NlZF06YW5pbWF0ZS1vdXQgZGF0YS1bc3RhdGU9Y2xvc2VkXTpzbGlkZS1vdXQtdG8tdG9wIGRhdGEtW3N0YXRlPW9wZW5dOnNsaWRlLWluLWZyb20tdG9wXCIsXG4gICAgICBib3R0b206IFwiaW5zZXQteC0wIGJvdHRvbS0wIGJvcmRlci10IGRhdGEtW3N0YXRlPW9wZW5dOmFuaW1hdGUtaW4gZGF0YS1bc3RhdGU9Y2xvc2VkXTphbmltYXRlLW91dCBkYXRhLVtzdGF0ZT1jbG9zZWRdOnNsaWRlLW91dC10by1ib3R0b20gZGF0YS1bc3RhdGU9b3Blbl06c2xpZGUtaW4tZnJvbS1ib3R0b21cIixcbiAgICAgIGxlZnQ6IFwiaW5zZXQteS0wIGxlZnQtMCBoLWZ1bGwgdy0zLzQgYm9yZGVyLXIgZGF0YS1bc3RhdGU9b3Blbl06YW5pbWF0ZS1pbiBkYXRhLVtzdGF0ZT1jbG9zZWRdOmFuaW1hdGUtb3V0IGRhdGEtW3N0YXRlPWNsb3NlZF06c2xpZGUtb3V0LXRvLWxlZnQgZGF0YS1bc3RhdGU9b3Blbl06c2xpZGUtaW4tZnJvbS1sZWZ0IHNtOm1heC13LXNtXCIsXG4gICAgICByaWdodDogXCJpbnNldC15LTAgcmlnaHQtMCBoLWZ1bGwgdy0zLzQgIGJvcmRlci1sIGRhdGEtW3N0YXRlPW9wZW5dOmFuaW1hdGUtaW4gZGF0YS1bc3RhdGU9Y2xvc2VkXTphbmltYXRlLW91dCBkYXRhLVtzdGF0ZT1jbG9zZWRdOnNsaWRlLW91dC10by1yaWdodCBkYXRhLVtzdGF0ZT1vcGVuXTpzbGlkZS1pbi1mcm9tLXJpZ2h0IHNtOm1heC13LXNtXCIsXG4gICAgfTtcblxuICAgIGNvbnN0IHJvdW5kaW5nQ2xhc3NlcyA9IHtcbiAgICAgIHRvcDogXCJyb3VuZGVkLWItMnhsXCIsXG4gICAgICBib3R0b206IFwicm91bmRlZC10LTJ4bFwiLFxuICAgICAgbGVmdDogXCJyb3VuZGVkLXItMnhsXCIsXG4gICAgICByaWdodDogXCJyb3VuZGVkLWwtMnhsXCIsXG4gICAgfTtcblxuICAgIHJldHVybiBjbihcbiAgICAgIFwiZml4ZWQgei01MCBnYXAtNCBiZy1iYWNrZ3JvdW5kIHAtNiBzaGFkb3ctbGcgdHJhbnNpdGlvbiBlYXNlLWluLW91dCBkYXRhLVtzdGF0ZT1vcGVuXTphbmltYXRlLWluIGRhdGEtW3N0YXRlPWNsb3NlZF06YW5pbWF0ZS1vdXQgZGF0YS1bc3RhdGU9b3Blbl06ZHVyYXRpb24tNTAwIGRhdGEtW3N0YXRlPWNsb3NlZF06ZHVyYXRpb24tMzAwXCIsXG4gICAgICBzaWRlQ2xhc3Nlc1t0aGlzLnNpZGVdLFxuICAgICAgdGhpcy5yb3VuZGVkICYmIHJvdW5kaW5nQ2xhc3Nlc1t0aGlzLnNpZGVdLFxuICAgICAgdGhpcy5jbGFzc1xuICAgICk7XG4gIH1cbn1cblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndG9sbGUtc2hlZXQtaGVhZGVyJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgdGVtcGxhdGU6IGBcbiAgICA8ZGl2IGNsYXNzPVwiZmxleCBmbGV4LWNvbCBzcGFjZS15LTIgdGV4dC1jZW50ZXIgc206dGV4dC1sZWZ0XCI+XG4gICAgICA8bmctY29udGVudD48L25nLWNvbnRlbnQ+XG4gICAgPC9kaXY+XG4gIGBcbn0pXG5leHBvcnQgY2xhc3MgU2hlZXRIZWFkZXJDb21wb25lbnQgeyB9XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3RvbGxlLXNoZWV0LWZvb3RlcicsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIHRlbXBsYXRlOiBgXG4gICAgPGRpdiBjbGFzcz1cImZsZXggZmxleC1jb2wtcmV2ZXJzZSBzbTpmbGV4LXJvdyBzbTpqdXN0aWZ5LWVuZCBzbTpzcGFjZS14LTJcIj5cbiAgICAgIDxuZy1jb250ZW50PjwvbmctY29udGVudD5cbiAgICA8L2Rpdj5cbiAgYFxufSlcbmV4cG9ydCBjbGFzcyBTaGVldEZvb3RlckNvbXBvbmVudCB7IH1cblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndG9sbGUtc2hlZXQtdGl0bGUnLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICB0ZW1wbGF0ZTogYFxuICAgIDxoMyBjbGFzcz1cInRleHQtbGcgZm9udC1zZW1pYm9sZCB0ZXh0LWZvcmVncm91bmRcIj5cbiAgICAgIDxuZy1jb250ZW50PjwvbmctY29udGVudD5cbiAgICA8L2gzPlxuICBgXG59KVxuZXhwb3J0IGNsYXNzIFNoZWV0VGl0bGVDb21wb25lbnQgeyB9XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3RvbGxlLXNoZWV0LWRlc2NyaXB0aW9uJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgdGVtcGxhdGU6IGBcbiAgICA8cCBjbGFzcz1cInRleHQtc20gdGV4dC1tdXRlZC1mb3JlZ3JvdW5kXCI+XG4gICAgICA8bmctY29udGVudD48L25nLWNvbnRlbnQ+XG4gICAgPC9wPlxuICBgXG59KVxuZXhwb3J0IGNsYXNzIFNoZWV0RGVzY3JpcHRpb25Db21wb25lbnQgeyB9XG4iXX0=
303
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2hlZXQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvdG9sbGUvc3JjL2xpYi9zaGVldC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLFlBQVksRUFBRSxNQUFNLEVBQWUsU0FBUyxFQUFFLGdCQUFnQixFQUFhLFlBQVksRUFBRSxVQUFVLEVBQWdDLE1BQU0sZUFBZSxDQUFDO0FBQzVMLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsT0FBTyxFQUFjLGFBQWEsRUFBRSxxQkFBcUIsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ2pHLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUNyRCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDL0MsT0FBTyxFQUFFLEVBQUUsRUFBRSxNQUFNLFlBQVksQ0FBQzs7O0FBUWhDLE1BQU0sT0FBTyxjQUFjO0lBQ2hCLE1BQU0sR0FBRyxLQUFLLENBQUM7SUFDZixXQUFXLEdBQUcsSUFBSSxDQUFDO0lBQ2xCLFlBQVksR0FBRyxJQUFJLFlBQVksRUFBVyxDQUFDO0lBRTdDLE9BQU8sR0FBRyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDMUIsZ0JBQWdCLEdBQUcsTUFBTSxDQUFDLGdCQUFnQixDQUFDLENBQUM7SUFDNUMsY0FBYyxHQUFHLE1BQU0sQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDO0lBRS9DLFVBQVUsQ0FBYztJQUNoQyxrRUFBa0U7SUFDMUQsaUJBQWlCLENBQXNCO0lBRVEsZ0JBQWdCLENBQU87SUFFOUUsSUFBSTtRQUNGLElBQUksSUFBSSxDQUFDLE1BQU07WUFBRSxPQUFPO1FBQ3hCLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDO1FBQ25CLElB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QyxFQUFFLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUM7d0dBRnhFLHlCQUF5Qjs0RkFBekIseUJBQXlCLDhIQVAxQjs7OztHQUlUOzs0RkFHVSx5QkFBeUI7a0JBVnJDLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLHlCQUF5QjtvQkFDbkMsVUFBVSxFQUFFLElBQUk7b0JBQ2hCLFFBQVEsRUFBRTs7OztHQUlUO29CQUNELElBQUksRUFBRSxFQUFFLFdBQVcsRUFBRSxJQUFJLEVBQUU7aUJBQzVCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCwgT3V0cHV0LCBFdmVudEVtaXR0ZXIsIGluamVjdCwgVGVtcGxhdGVSZWYsIFZpZXdDaGlsZCwgVmlld0NvbnRhaW5lclJlZiwgT25EZXN0cm95LCBDb250ZW50Q2hpbGQsIGZvcndhcmRSZWYsIEVsZW1lbnRSZWYsIEFmdGVyQ29udGVudEluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBPdmVybGF5LCBPdmVybGF5UmVmLCBPdmVybGF5Q29uZmlnLCBTY3JvbGxTdHJhdGVneU9wdGlvbnMgfSBmcm9tICdAYW5ndWxhci9jZGsvb3ZlcmxheSc7XG5pbXBvcnQgeyBUZW1wbGF0ZVBvcnRhbCB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9wb3J0YWwnO1xuaW1wb3J0IHsgQTExeU1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9hMTF5JztcbmltcG9ydCB7IGNuIH0gZnJvbSAnLi91dGlscy9jbic7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3RvbGxlLXNoZWV0JyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZV0sXG4gIHRlbXBsYXRlOiBgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PmBcbn0pXG5leHBvcnQgY2xhc3MgU2hlZXRDb21wb25lbnQge1xuICBASW5wdXQoKSBpc09wZW4gPSBmYWxzZTtcbiAgQElucHV0KCkgaGFzQmFja2Ryb3AgPSB0cnVlO1xuICBAT3V0cHV0KCkgaXNPcGVuQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxib29sZWFuPigpO1xuXG4gIHByaXZhdGUgb3ZlcmxheSA9IGluamVjdChPdmVybGF5KTtcbiAgcHJpdmF0ZSB2aWV3Q29udGFpbmVyUmVmID0gaW5qZWN0KFZpZXdDb250YWluZXJSZWYpO1xuICBwcml2YXRlIHNjcm9sbFN0cmF0ZWd5ID0gaW5qZWN0KFNjcm9sbFN0cmF0ZWd5T3B0aW9ucyk7XG5cbiAgcHJpdmF0ZSBvdmVybGF5UmVmPzogT3ZlcmxheVJlZjtcbiAgLyoqIEVsZW1lbnQgZm9jdXNlZCBiZWZvcmUgdGhlIHNoZWV0IG9wZW5lZCwgcmVzdG9yZWQgb24gY2xvc2UuICovXG4gIHByaXZhdGUgcHJldmlvdXNseUZvY3VzZWQ/OiBIVE1MRWxlbWVudCB8IG51bGw7XG5cbiAgQENvbnRlbnRDaGlsZChmb3J3YXJkUmVmKCgpID0+IFNoZWV0Q29udGVudENvbXBvbmVudCkpIGNvbnRlbnRDb21wb25lbnQ/OiBhbnk7XG5cbiAgb3BlbigpIHtcbiAgICBpZiAodGhpcy5pc09wZW4pIHJldHVybjtcbiAgICB0aGlzLmlzT3BlbiA9IHRydWU7XG4gICAgdGhpcy5pc09wZW5DaGFuZ2UuZW1pdCh0cnVlKTtcbiAgICB0aGlzLnNob3coKTtcbiAgfVxuXG4gIGNsb3NlKCkge1xuICAgIGlmICghdGhpcy5pc09wZW4pIHJldHVybjtcbiAgICB0aGlzLmlzT3BlbiA9IGZhbHNlO1xuICAgIHRoaXMuaXNPcGVuQ2hhbmdlLmVtaXQoZmFsc2UpO1xuICAgIHRoaXMuaGlkZSgpO1xuICB9XG5cbiAgcHJpdmF0ZSBzaG93KCkge1xuICAgIGlmICh0aGlzLm92ZXJsYXlSZWYgfHwgIXRoaXMuY29udGVudENvbXBvbmVudD8uY29udGVudFRlbXBsYXRlKSByZXR1cm47XG5cbiAgICAvLyBSZW1lbWJlciB0aGUgdHJpZ2dlciBzbyBmb2N1cyBjYW4gYmUgcmVzdG9yZWQgd2hlbiB0aGUgc2hlZXQgY2xvc2VzLlxuICAgIHRoaXMucHJldmlvdXNseUZvY3VzZWQgPSBkb2N1bWVudC5hY3RpdmVFbGVtZW50IGFzIEhUTUxFbGVtZW50IHwgbnVsbDtcblxuICAgIGNvbnN0IG92ZXJsYXlDb25maWcgPSBuZXcgT3ZlcmxheUNvbmZpZyh7XG4gICAgICBoYXNCYWNrZHJvcDogdGhpcy5oYXNCYWNrZHJvcCxcbiAgICAgIGJhY2tkcm9wQ2xhc3M6ICd0b2xsZS1tb2RhbC1iYWNrZHJvcCcsXG4gICAgICBzY3JvbGxTdHJhdGVneTogdGhpcy5zY3JvbGxTdHJhdGVneS5ibG9jaygpLFxuICAgICAgcG9zaXRpb25TdHJhdGVneTogdGhpcy5vdmVybGF5LnBvc2l0aW9uKCkuZ2xvYmFsKCkuY2VudGVySG9yaXpvbnRhbGx5KCkuY2VudGVyVmVydGljYWxseSgpIC8vIFRoaXMgY2VudGVycyBrZXksIGJ1dCBzaGVldCBpcyBmaXhlZCB2aWEgY2xhc3Nlc1xuICAgIH0pO1xuXG4gICAgdGhpcy5vdmVybGF5UmVmID0gdGhpcy5vdmVybGF5LmNyZWF0ZShvdmVybGF5Q29uZmlnKTtcblxuICAgIGNvbnN0IHBvcnRhbCA9IG5ldyBUZW1wbGF0ZVBvcnRhbCh0aGlzLmNvbnRlbnRDb21wb25lbnQuY29udGVudFRlbXBsYXRlLCB0aGlzLnZpZXdDb250YWluZXJSZWYpO1xuICAgIHRoaXMub3ZlcmxheVJlZi5hdHRhY2gocG9ydGFsKTtcblxuICAgIGlmICh0aGlzLmhhc0JhY2tkcm9wKSB7XG4gICAgICB0aGlzLm92ZXJsYXlSZWYuYmFja2Ryb3BDbGljaygpLnN1YnNjcmliZSgoKSA9PiB0aGlzLmNsb3NlKCkpO1xuICAgIH1cblxuICAgIC8vIEVzY2FwZS10by1jbG9zZS5cbiAgICB0aGlzLm92ZXJsYXlSZWYua2V5ZG93bkV2ZW50cygpLnN1YnNjcmliZSgoZXZlbnQ6IEtleWJvYXJkRXZlbnQpID0+IHtcbiAgICAgIGlmIChldmVudC5rZXkgPT09ICdFc2NhcGUnKSB7XG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIHRoaXMuY2xvc2UoKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgaGlkZSgpIHtcbiAgICBpZiAodGhpcy5vdmVybGF5UmVmKSB7XG4gICAgICBjb25zdCB0b1Jlc3RvcmUgPSB0aGlzLnByZXZpb3VzbHlGb2N1c2VkO1xuICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgIGlmICh0aGlzLm92ZXJsYXlSZWYpIHtcbiAgICAgICAgICB0aGlzLm92ZXJsYXlSZWYuZGV0YWNoKCk7XG4gICAgICAgICAgdGhpcy5vdmVybGF5UmVmLmRpc3Bvc2UoKTtcbiAgICAgICAgICB0aGlzLm92ZXJsYXlSZWYgPSB1bmRlZmluZWQ7XG4gICAgICAgIH1cbiAgICAgICAgLy8gUmVzdG9yZSBmb2N1cyB0byB0aGUgdHJpZ2dlciBhZnRlciB0aGUgZXhpdCBhbmltYXRpb24uXG4gICAgICAgIHRvUmVzdG9yZT8uZm9jdXM/LigpO1xuICAgICAgfSwgMzAwKTtcbiAgICB9XG4gIH1cblxuICBuZ09uRGVzdHJveSgpIHtcbiAgICAvLyBJbW1lZGlhdGUgY2xlYW51cCBvbiBkZXN0cm95XG4gICAgaWYgKHRoaXMub3ZlcmxheVJlZikge1xuICAgICAgdGhpcy5vdmVybGF5UmVmLmRpc3Bvc2UoKTtcbiAgICB9XG4gIH1cbn1cblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndG9sbGUtc2hlZXQtdHJpZ2dlcicsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtDb21tb25Nb2R1bGVdLFxuICB0ZW1wbGF0ZTogYDxuZy1jb250ZW50PjwvbmctY29udGVudD5gLFxuICBob3N0OiB7XG4gICAgJyhjbGljayknOiAnb25DbGljaygpJyxcbiAgICAnY2xhc3MnOiAnaW5saW5lLWJsb2NrJ1xuICB9XG59KVxuZXhwb3J0IGNsYXNzIFNoZWV0VHJpZ2dlckNvbXBvbmVudCB7XG4gIHByaXZhdGUgc2hlZXQgPSBpbmplY3QoU2hlZXRDb21wb25lbnQpO1xuXG4gIG9uQ2xpY2soKSB7XG4gICAgdGhpcy5zaGVldC5vcGVuKCk7XG4gIH1cbn1cblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndG9sbGUtc2hlZXQtY29udGVudCcsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtDb21tb25Nb2R1bGUsIEExMXlNb2R1bGVdLFxuICB0ZW1wbGF0ZTogYFxuICAgIDxuZy10ZW1wbGF0ZSAjc2hlZXRDb250ZW50PlxuICAgICAgPGRpdlxuICAgICAgICBbY2xhc3NdPVwiY29tcHV0ZWRDbGFzc1wiXG4gICAgICAgIFthdHRyLmRhdGEtc3RhdGVdPVwic2hlZXQuaXNPcGVuID8gJ29wZW4nIDogJ2Nsb3NlZCdcIlxuICAgICAgICByb2xlPVwiZGlhbG9nXCJcbiAgICAgICAgYXJpYS1tb2RhbD1cInRydWVcIlxuICAgICAgICBbYXR0ci5hcmlhLWxhYmVsbGVkYnldPVwidGl0bGVDbXA/LmlkIHx8IG51bGxcIlxuICAgICAgICBbYXR0ci5hcmlhLWRlc2NyaWJlZGJ5XT1cImRlc2NyaXB0aW9uQ21wPy5pZCB8fCBudWxsXCJcbiAgICAgICAgY2RrVHJhcEZvY3VzIGNka1RyYXBGb2N1c0F1dG9DYXB0dXJlXG4gICAgICAgIChtb3VzZWRvd24pPVwiJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXCI+XG4gICAgICAgIDxidXR0b25cbiAgICAgICAgICAoY2xpY2spPVwiY2xvc2UoKVwiXG4gICAgICAgICAgY2xhc3M9XCJhYnNvbHV0ZSByaWdodC00IHRvcC00IHJvdW5kZWQtc20gb3BhY2l0eS03MCByaW5nLW9mZnNldC1iYWNrZ3JvdW5kIHRyYW5zaXRpb24tb3BhY2l0eSBob3ZlcjpvcGFjaXR5LTEwMCBmb2N1czpvdXRsaW5lLW5vbmUgZm9jdXM6cmluZy0yIGZvY3VzOnJpbmctcmluZyBmb2N1czpyaW5nLW9mZnNldC0yIGRpc2FibGVkOnBvaW50ZXItZXZlbnRzLW5vbmVcIlxuICAgICAgICA+XG4gICAgICAgICAgPGkgY2xhc3M9XCJyaS1jbG9zZS1saW5lIHRleHQteGxcIj48L2k+XG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJzci1vbmx5XCI+Q2xvc2U8L3NwYW4+XG4gICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8bmctY29udGVudD48L25nLWNvbnRlbnQ+XG4gICAgICA8L2Rpdj5cbiAgICA8L25nLXRlbXBsYXRlPlxuICBgXG59KVxuZXhwb3J0IGNsYXNzIFNoZWV0Q29udGVudENvbXBvbmVudCB7XG4gIEBJbnB1dCgpIHNpZGU6ICd0b3AnIHwgJ2JvdHRvbScgfCAnbGVmdCcgfCAncmlnaHQnID0gJ3JpZ2h0JztcbiAgQElucHV0KCkgcm91bmRlZDogYm9vbGVhbiA9IGZhbHNlO1xuICBASW5wdXQoKSBjbGFzczogc3RyaW5nID0gJyc7XG5cbiAgQFZpZXdDaGlsZCgnc2hlZXRDb250ZW50JywgeyBzdGF0aWM6IHRydWUgfSkgY29udGVudFRlbXBsYXRlITogVGVtcGxhdGVSZWY8YW55PjtcblxuICAvKiogUHJvamVjdGVkIHRpdGxlL2Rlc2NyaXB0aW9uIHVzZWQgdG8gYnVpbGQgdGhlIGRpYWxvZydzIGFjY2Vzc2libGUgbmFtZS4gKi9cbiAgQENvbnRlbnRDaGlsZChmb3J3YXJkUmVmKCgpID0+IFNoZWV0VGl0bGVDb21wb25lbnQpKSB0aXRsZUNtcD86IFNoZWV0VGl0bGVDb21wb25lbnQ7XG4gIEBDb250ZW50Q2hpbGQoZm9yd2FyZFJlZigoKSA9PiBTaGVldERlc2NyaXB0aW9uQ29tcG9uZW50KSkgZGVzY3JpcHRpb25DbXA/OiBTaGVldERlc2NyaXB0aW9uQ29tcG9uZW50O1xuXG4gIHB1YmxpYyBzaGVldCA9IGluamVjdChTaGVldENvbXBvbmVudCk7XG5cbiAgY2xvc2UoKSB7XG4gICAgdGhpcy5zaGVldC5jbG9zZSgpO1xuICB9XG5cbiAgZ2V0IGNvbXB1dGVkQ2xhc3MoKSB7XG4gICAgY29uc3Qgc2lkZUNsYXNzZXMgPSB7XG4gICAgICB0b3A6IFwiaW5zZXQteC0wIHRvcC0wIGJvcmRlci1iIGRhdGEtW3N0YXRlPW9wZW5dOmFuaW1hdGUtaW4gZGF0YS1bc3RhdGU9Y2xvc2VkXTphbmltYXRlLW91dCBkYXRhLVtzdGF0ZT1jbG9zZWRdOnNsaWRlLW91dC10by10b3AgZGF0YS1bc3RhdGU9b3Blbl06c2xpZGUtaW4tZnJvbS10b3BcIixcbiAgICAgIGJvdHRvbTogXCJpbnNldC14LTAgYm90dG9tLTAgYm9yZGVyLXQgZGF0YS1bc3RhdGU9b3Blbl06YW5pbWF0ZS1pbiBkYXRhLVtzdGF0ZT1jbG9zZWRdOmFuaW1hdGUtb3V0IGRhdGEtW3N0YXRlPWNsb3NlZF06c2xpZGUtb3V0LXRvLWJvdHRvbSBkYXRhLVtzdGF0ZT1vcGVuXTpzbGlkZS1pbi1mcm9tLWJvdHRvbVwiLFxuICAgICAgbGVmdDogXCJpbnNldC15LTAgbGVmdC0wIGgtZnVsbCB3LTMvNCBib3JkZXItciBkYXRhLVtzdGF0ZT1vcGVuXTphbmltYXRlLWluIGRhdGEtW3N0YXRlPWNsb3NlZF06YW5pbWF0ZS1vdXQgZGF0YS1bc3RhdGU9Y2xvc2VkXTpzbGlkZS1vdXQtdG8tbGVmdCBkYXRhLVtzdGF0ZT1vcGVuXTpzbGlkZS1pbi1mcm9tLWxlZnQgc206bWF4LXctc21cIixcbiAgICAgIHJpZ2h0OiBcImluc2V0LXktMCByaWdodC0wIGgtZnVsbCB3LTMvNCAgYm9yZGVyLWwgZGF0YS1bc3RhdGU9b3Blbl06YW5pbWF0ZS1pbiBkYXRhLVtzdGF0ZT1jbG9zZWRdOmFuaW1hdGUtb3V0IGRhdGEtW3N0YXRlPWNsb3NlZF06c2xpZGUtb3V0LXRvLXJpZ2h0IGRhdGEtW3N0YXRlPW9wZW5dOnNsaWRlLWluLWZyb20tcmlnaHQgc206bWF4LXctc21cIixcbiAgICB9O1xuXG4gICAgY29uc3Qgcm91bmRpbmdDbGFzc2VzID0ge1xuICAgICAgdG9wOiBcInJvdW5kZWQtYi0yeGxcIixcbiAgICAgIGJvdHRvbTogXCJyb3VuZGVkLXQtMnhsXCIsXG4gICAgICBsZWZ0OiBcInJvdW5kZWQtci0yeGxcIixcbiAgICAgIHJpZ2h0OiBcInJvdW5kZWQtbC0yeGxcIixcbiAgICB9O1xuXG4gICAgcmV0dXJuIGNuKFxuICAgICAgXCJmaXhlZCB6LTUwIGdhcC00IGJnLWJhY2tncm91bmQgcC02IHNoYWRvdy1sZyB0cmFuc2l0aW9uIGVhc2UtaW4tb3V0IGRhdGEtW3N0YXRlPW9wZW5dOmFuaW1hdGUtaW4gZGF0YS1bc3RhdGU9Y2xvc2VkXTphbmltYXRlLW91dCBkYXRhLVtzdGF0ZT1vcGVuXTpkdXJhdGlvbi01MDAgZGF0YS1bc3RhdGU9Y2xvc2VkXTpkdXJhdGlvbi0zMDBcIixcbiAgICAgIHNpZGVDbGFzc2VzW3RoaXMuc2lkZV0sXG4gICAgICB0aGlzLnJvdW5kZWQgJiYgcm91bmRpbmdDbGFzc2VzW3RoaXMuc2lkZV0sXG4gICAgICB0aGlzLmNsYXNzXG4gICAgKTtcbiAgfVxufVxuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd0b2xsZS1zaGVldC1oZWFkZXInLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICB0ZW1wbGF0ZTogYFxuICAgIDxkaXYgY2xhc3M9XCJmbGV4IGZsZXgtY29sIHNwYWNlLXktMiB0ZXh0LWNlbnRlciBzbTp0ZXh0LWxlZnRcIj5cbiAgICAgIDxuZy1jb250ZW50PjwvbmctY29udGVudD5cbiAgICA8L2Rpdj5cbiAgYFxufSlcbmV4cG9ydCBjbGFzcyBTaGVldEhlYWRlckNvbXBvbmVudCB7IH1cblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndG9sbGUtc2hlZXQtZm9vdGVyJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgdGVtcGxhdGU6IGBcbiAgICA8ZGl2IGNsYXNzPVwiZmxleCBmbGV4LWNvbC1yZXZlcnNlIHNtOmZsZXgtcm93IHNtOmp1c3RpZnktZW5kIHNtOnNwYWNlLXgtMlwiPlxuICAgICAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxuICAgIDwvZGl2PlxuICBgXG59KVxuZXhwb3J0IGNsYXNzIFNoZWV0Rm9vdGVyQ29tcG9uZW50IHsgfVxuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd0b2xsZS1zaGVldC10aXRsZScsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIHRlbXBsYXRlOiBgXG4gICAgPGgzIGNsYXNzPVwidGV4dC1sZyBmb250LXNlbWlib2xkIHRleHQtZm9yZWdyb3VuZFwiPlxuICAgICAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxuICAgIDwvaDM+XG4gIGAsXG4gIGhvc3Q6IHsgJ1thdHRyLmlkXSc6ICdpZCcgfVxufSlcbmV4cG9ydCBjbGFzcyBTaGVldFRpdGxlQ29tcG9uZW50IHtcbiAgLyoqIFN0YWJsZSBpZCByZWZlcmVuY2VkIGJ5IHRoZSBzaGVldCdzIGBhcmlhLWxhYmVsbGVkYnlgLiAqL1xuICByZWFkb25seSBpZCA9IGB0b2xsZS1zaGVldC10aXRsZS0ke01hdGgucmFuZG9tKCkudG9TdHJpbmcoMzYpLnN1YnN0cigyLCA5KX1gO1xufVxuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd0b2xsZS1zaGVldC1kZXNjcmlwdGlvbicsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIHRlbXBsYXRlOiBgXG4gICAgPHAgY2xhc3M9XCJ0ZXh0LXNtIHRleHQtbXV0ZWQtZm9yZWdyb3VuZFwiPlxuICAgICAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxuICAgIDwvcD5cbiAgYCxcbiAgaG9zdDogeyAnW2F0dHIuaWRdJzogJ2lkJyB9XG59KVxuZXhwb3J0IGNsYXNzIFNoZWV0RGVzY3JpcHRpb25Db21wb25lbnQge1xuICAvKiogU3RhYmxlIGlkIHJlZmVyZW5jZWQgYnkgdGhlIHNoZWV0J3MgYGFyaWEtZGVzY3JpYmVkYnlgLiAqL1xuICByZWFkb25seSBpZCA9IGB0b2xsZS1zaGVldC1kZXNjcmlwdGlvbi0ke01hdGgucmFuZG9tKCkudG9TdHJpbmcoMzYpLnN1YnN0cigyLCA5KX1gO1xufVxuIl19
@@ -8,8 +8,12 @@ export class SheetService {
8
8
  overlay = inject(Overlay);
9
9
  injector = inject(Injector);
10
10
  open(config) {
11
+ // Remember the trigger so focus can be restored once the sheet is disposed.
12
+ const previouslyFocused = document.activeElement;
11
13
  const overlayRef = this.createOverlay(config);
12
14
  const sheetRef = new SheetRef(overlayRef, config);
15
+ // Restore focus to the trigger after the overlay tears down.
16
+ overlayRef.detachments().subscribe(() => previouslyFocused?.focus?.());
13
17
  const customInjector = Injector.create({
14
18
  parent: this.injector,
15
19
  providers: [
@@ -45,4 +49,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
45
49
  type: Injectable,
46
50
  args: [{ providedIn: 'root' }]
47
51
  }] });
48
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2hlZXQuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL3RvbGxlL3NyYy9saWIvc2hlZXQuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDN0QsT0FBTyxFQUFFLE9BQU8sRUFBRSxhQUFhLEVBQWMsTUFBTSxzQkFBc0IsQ0FBQztBQUMxRSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFFdEQsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUN2QyxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQzs7QUFHbEUsTUFBTSxPQUFPLFlBQVk7SUFDYixPQUFPLEdBQUcsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQzFCLFFBQVEsR0FBRyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUM7SUFFcEMsSUFBSSxDQUFVLE1BQW1CO1FBQzdCLE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDOUMsTUFBTSxRQUFRLEdBQUcsSUFBSSxRQUFRLENBQUksVUFBVSxFQUFFLE1BQU0sQ0FBQyxDQUFDO1FBRXJELE1BQU0sY0FBYyxHQUFHLFFBQVEsQ0FBQyxNQUFNLENBQUM7WUFDbkMsTUFBTSxFQUFFLElBQUksQ0FBQyxRQUFRO1lBQ3JCLFNBQVMsRUFBRTtnQkFDUCxFQUFFLE9BQU8sRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLFFBQVEsRUFBRTthQUM1QztTQUNKLENBQUMsQ0FBQztRQUVILE1BQU0sTUFBTSxHQUFHLElBQUksZUFBZSxDQUFDLHFCQUFxQixFQUFFLElBQUksRUFBRSxjQUFjLENBQUMsQ0FBQztRQUNoRixVQUFVLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBRTFCLG1EQUFtRDtRQUNuRCxNQUFNLGFBQWEsR0FBRyxRQUFRLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUNwRCxRQUFRLENBQUMsS0FBSyxHQUFHLENBQUMsTUFBVSxFQUFFLEVBQUU7WUFDNUIsYUFBYSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1lBQ3RCLGlEQUFpRDtZQUNqRCxVQUFVLENBQUMsR0FBRyxFQUFFO2dCQUNaLFFBQVEsQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUN2QixDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUM7UUFDWixDQUFDLENBQUM7UUFFRixPQUFPLFFBQVEsQ0FBQztJQUNwQixDQUFDO0lBRU8sYUFBYSxDQUFDLE1BQW1CO1FBQ3JDLE1BQU0sYUFBYSxHQUFHLElBQUksYUFBYSxDQUFDO1lBQ3BDLFdBQVcsRUFBRSxNQUFNLENBQUMsV0FBVyxLQUFLLEtBQUs7WUFDekMsYUFBYSxFQUFFLHNCQUFzQjtZQUNyQyxjQUFjLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxnQkFBZ0IsQ0FBQyxLQUFLLEVBQUU7WUFDckQsZ0JBQWdCLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxRQUFRLEVBQUUsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxrQkFBa0IsRUFBRSxDQUFDLGdCQUFnQixFQUFFO1NBQzdGLENBQUMsQ0FBQztRQUVILE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsYUFBYSxDQUFDLENBQUM7SUFDOUMsQ0FBQzt3R0F4Q1EsWUFBWTs0R0FBWixZQUFZLGNBREMsTUFBTTs7NEZBQ25CLFlBQVk7a0JBRHhCLFVBQVU7bUJBQUMsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSwgSW5qZWN0b3IsIGluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgT3ZlcmxheSwgT3ZlcmxheUNvbmZpZywgT3ZlcmxheVJlZiB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9vdmVybGF5JztcbmltcG9ydCB7IENvbXBvbmVudFBvcnRhbCB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9wb3J0YWwnO1xuaW1wb3J0IHsgU2hlZXRDb25maWcgfSBmcm9tICcuL3NoZWV0LnR5cGVzJztcbmltcG9ydCB7IFNoZWV0UmVmIH0gZnJvbSAnLi9zaGVldC1yZWYnO1xuaW1wb3J0IHsgU2hlZXRXcmFwcGVyQ29tcG9uZW50IH0gZnJvbSAnLi9zaGVldC13cmFwcGVyLmNvbXBvbmVudCc7XG5cbkBJbmplY3RhYmxlKHsgcHJvdmlkZWRJbjogJ3Jvb3QnIH0pXG5leHBvcnQgY2xhc3MgU2hlZXRTZXJ2aWNlIHtcbiAgICBwcml2YXRlIG92ZXJsYXkgPSBpbmplY3QoT3ZlcmxheSk7XG4gICAgcHJpdmF0ZSBpbmplY3RvciA9IGluamVjdChJbmplY3Rvcik7XG5cbiAgICBvcGVuPFIgPSBhbnk+KGNvbmZpZzogU2hlZXRDb25maWcpOiBTaGVldFJlZjxSPiB7XG4gICAgICAgIGNvbnN0IG92ZXJsYXlSZWYgPSB0aGlzLmNyZWF0ZU92ZXJsYXkoY29uZmlnKTtcbiAgICAgICAgY29uc3Qgc2hlZXRSZWYgPSBuZXcgU2hlZXRSZWY8Uj4ob3ZlcmxheVJlZiwgY29uZmlnKTtcblxuICAgICAgICBjb25zdCBjdXN0b21JbmplY3RvciA9IEluamVjdG9yLmNyZWF0ZSh7XG4gICAgICAgICAgICBwYXJlbnQ6IHRoaXMuaW5qZWN0b3IsXG4gICAgICAgICAgICBwcm92aWRlcnM6IFtcbiAgICAgICAgICAgICAgICB7IHByb3ZpZGU6IFNoZWV0UmVmLCB1c2VWYWx1ZTogc2hlZXRSZWYgfVxuICAgICAgICAgICAgXVxuICAgICAgICB9KTtcblxuICAgICAgICBjb25zdCBwb3J0YWwgPSBuZXcgQ29tcG9uZW50UG9ydGFsKFNoZWV0V3JhcHBlckNvbXBvbmVudCwgbnVsbCwgY3VzdG9tSW5qZWN0b3IpO1xuICAgICAgICBvdmVybGF5UmVmLmF0dGFjaChwb3J0YWwpO1xuXG4gICAgICAgIC8vIE92ZXJyaWRlIHRoZSBjbG9zZSBtZXRob2QgdG8gYWRkIGFuaW1hdGlvbiBkZWxheVxuICAgICAgICBjb25zdCBvcmlnaW5hbENsb3NlID0gc2hlZXRSZWYuY2xvc2UuYmluZChzaGVldFJlZik7XG4gICAgICAgIHNoZWV0UmVmLmNsb3NlID0gKHJlc3VsdD86IFIpID0+IHtcbiAgICAgICAgICAgIG9yaWdpbmFsQ2xvc2UocmVzdWx0KTtcbiAgICAgICAgICAgIC8vIFdhaXQgZm9yIGV4aXQgYW5pbWF0aW9uIChtYXRjaGVzIENTUyBkdXJhdGlvbilcbiAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgICAgIHNoZWV0UmVmLmRpc3Bvc2UoKTtcbiAgICAgICAgICAgIH0sIDMwMCk7XG4gICAgICAgIH07XG5cbiAgICAgICAgcmV0dXJuIHNoZWV0UmVmO1xuICAgIH1cblxuICAgIHByaXZhdGUgY3JlYXRlT3ZlcmxheShjb25maWc6IFNoZWV0Q29uZmlnKTogT3ZlcmxheVJlZiB7XG4gICAgICAgIGNvbnN0IG92ZXJsYXlDb25maWcgPSBuZXcgT3ZlcmxheUNvbmZpZyh7XG4gICAgICAgICAgICBoYXNCYWNrZHJvcDogY29uZmlnLmhhc0JhY2tkcm9wICE9PSBmYWxzZSxcbiAgICAgICAgICAgIGJhY2tkcm9wQ2xhc3M6ICd0b2xsZS1tb2RhbC1iYWNrZHJvcCcsXG4gICAgICAgICAgICBzY3JvbGxTdHJhdGVneTogdGhpcy5vdmVybGF5LnNjcm9sbFN0cmF0ZWdpZXMuYmxvY2soKSxcbiAgICAgICAgICAgIHBvc2l0aW9uU3RyYXRlZ3k6IHRoaXMub3ZlcmxheS5wb3NpdGlvbigpLmdsb2JhbCgpLmNlbnRlckhvcml6b250YWxseSgpLmNlbnRlclZlcnRpY2FsbHkoKVxuICAgICAgICB9KTtcblxuICAgICAgICByZXR1cm4gdGhpcy5vdmVybGF5LmNyZWF0ZShvdmVybGF5Q29uZmlnKTtcbiAgICB9XG59XG4iXX0=
52
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2hlZXQuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL3RvbGxlL3NyYy9saWIvc2hlZXQuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDN0QsT0FBTyxFQUFFLE9BQU8sRUFBRSxhQUFhLEVBQWMsTUFBTSxzQkFBc0IsQ0FBQztBQUMxRSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFFdEQsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUN2QyxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQzs7QUFHbEUsTUFBTSxPQUFPLFlBQVk7SUFDYixPQUFPLEdBQUcsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQzFCLFFBQVEsR0FBRyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUM7SUFFcEMsSUFBSSxDQUFVLE1BQW1CO1FBQzdCLDRFQUE0RTtRQUM1RSxNQUFNLGlCQUFpQixHQUFHLFFBQVEsQ0FBQyxhQUFtQyxDQUFDO1FBRXZFLE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDOUMsTUFBTSxRQUFRLEdBQUcsSUFBSSxRQUFRLENBQUksVUFBVSxFQUFFLE1BQU0sQ0FBQyxDQUFDO1FBRXJELDZEQUE2RDtRQUM3RCxVQUFVLENBQUMsV0FBVyxFQUFFLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRSxDQUFDLGlCQUFpQixFQUFFLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQztRQUV2RSxNQUFNLGNBQWMsR0FBRyxRQUFRLENBQUMsTUFBTSxDQUFDO1lBQ25DLE1BQU0sRUFBRSxJQUFJLENBQUMsUUFBUTtZQUNyQixTQUFTLEVBQUU7Z0JBQ1AsRUFBRSxPQUFPLEVBQUUsUUFBUSxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUU7YUFDNUM7U0FDSixDQUFDLENBQUM7UUFFSCxNQUFNLE1BQU0sR0FBRyxJQUFJLGVBQWUsQ0FBQyxxQkFBcUIsRUFBRSxJQUFJLEVBQUUsY0FBYyxDQUFDLENBQUM7UUFDaEYsVUFBVSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUUxQixtREFBbUQ7UUFDbkQsTUFBTSxhQUFhLEdBQUcsUUFBUSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDcEQsUUFBUSxDQUFDLEtBQUssR0FBRyxDQUFDLE1BQVUsRUFBRSxFQUFFO1lBQzVCLGFBQWEsQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUN0QixpREFBaUQ7WUFDakQsVUFBVSxDQUFDLEdBQUcsRUFBRTtnQkFDWixRQUFRLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDdkIsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDO1FBQ1osQ0FBQyxDQUFDO1FBRUYsT0FBTyxRQUFRLENBQUM7SUFDcEIsQ0FBQztJQUVPLGFBQWEsQ0FBQyxNQUFtQjtRQUNyQyxNQUFNLGFBQWEsR0FBRyxJQUFJLGFBQWEsQ0FBQztZQUNwQyxXQUFXLEVBQUUsTUFBTSxDQUFDLFdBQVcsS0FBSyxLQUFLO1lBQ3pDLGFBQWEsRUFBRSxzQkFBc0I7WUFDckMsY0FBYyxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsZ0JBQWdCLENBQUMsS0FBSyxFQUFFO1lBQ3JELGdCQUFnQixFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUSxFQUFFLENBQUMsTUFBTSxFQUFFLENBQUMsa0JBQWtCLEVBQUUsQ0FBQyxnQkFBZ0IsRUFBRTtTQUM3RixDQUFDLENBQUM7UUFFSCxPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLGFBQWEsQ0FBQyxDQUFDO0lBQzlDLENBQUM7d0dBOUNRLFlBQVk7NEdBQVosWUFBWSxjQURDLE1BQU07OzRGQUNuQixZQUFZO2tCQUR4QixVQUFVO21CQUFDLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUsIEluamVjdG9yLCBpbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE92ZXJsYXksIE92ZXJsYXlDb25maWcsIE92ZXJsYXlSZWYgfSBmcm9tICdAYW5ndWxhci9jZGsvb3ZlcmxheSc7XG5pbXBvcnQgeyBDb21wb25lbnRQb3J0YWwgfSBmcm9tICdAYW5ndWxhci9jZGsvcG9ydGFsJztcbmltcG9ydCB7IFNoZWV0Q29uZmlnIH0gZnJvbSAnLi9zaGVldC50eXBlcyc7XG5pbXBvcnQgeyBTaGVldFJlZiB9IGZyb20gJy4vc2hlZXQtcmVmJztcbmltcG9ydCB7IFNoZWV0V3JhcHBlckNvbXBvbmVudCB9IGZyb20gJy4vc2hlZXQtd3JhcHBlci5jb21wb25lbnQnO1xuXG5ASW5qZWN0YWJsZSh7IHByb3ZpZGVkSW46ICdyb290JyB9KVxuZXhwb3J0IGNsYXNzIFNoZWV0U2VydmljZSB7XG4gICAgcHJpdmF0ZSBvdmVybGF5ID0gaW5qZWN0KE92ZXJsYXkpO1xuICAgIHByaXZhdGUgaW5qZWN0b3IgPSBpbmplY3QoSW5qZWN0b3IpO1xuXG4gICAgb3BlbjxSID0gYW55Pihjb25maWc6IFNoZWV0Q29uZmlnKTogU2hlZXRSZWY8Uj4ge1xuICAgICAgICAvLyBSZW1lbWJlciB0aGUgdHJpZ2dlciBzbyBmb2N1cyBjYW4gYmUgcmVzdG9yZWQgb25jZSB0aGUgc2hlZXQgaXMgZGlzcG9zZWQuXG4gICAgICAgIGNvbnN0IHByZXZpb3VzbHlGb2N1c2VkID0gZG9jdW1lbnQuYWN0aXZlRWxlbWVudCBhcyBIVE1MRWxlbWVudCB8IG51bGw7XG5cbiAgICAgICAgY29uc3Qgb3ZlcmxheVJlZiA9IHRoaXMuY3JlYXRlT3ZlcmxheShjb25maWcpO1xuICAgICAgICBjb25zdCBzaGVldFJlZiA9IG5ldyBTaGVldFJlZjxSPihvdmVybGF5UmVmLCBjb25maWcpO1xuXG4gICAgICAgIC8vIFJlc3RvcmUgZm9jdXMgdG8gdGhlIHRyaWdnZXIgYWZ0ZXIgdGhlIG92ZXJsYXkgdGVhcnMgZG93bi5cbiAgICAgICAgb3ZlcmxheVJlZi5kZXRhY2htZW50cygpLnN1YnNjcmliZSgoKSA9PiBwcmV2aW91c2x5Rm9jdXNlZD8uZm9jdXM/LigpKTtcblxuICAgICAgICBjb25zdCBjdXN0b21JbmplY3RvciA9IEluamVjdG9yLmNyZWF0ZSh7XG4gICAgICAgICAgICBwYXJlbnQ6IHRoaXMuaW5qZWN0b3IsXG4gICAgICAgICAgICBwcm92aWRlcnM6IFtcbiAgICAgICAgICAgICAgICB7IHByb3ZpZGU6IFNoZWV0UmVmLCB1c2VWYWx1ZTogc2hlZXRSZWYgfVxuICAgICAgICAgICAgXVxuICAgICAgICB9KTtcblxuICAgICAgICBjb25zdCBwb3J0YWwgPSBuZXcgQ29tcG9uZW50UG9ydGFsKFNoZWV0V3JhcHBlckNvbXBvbmVudCwgbnVsbCwgY3VzdG9tSW5qZWN0b3IpO1xuICAgICAgICBvdmVybGF5UmVmLmF0dGFjaChwb3J0YWwpO1xuXG4gICAgICAgIC8vIE92ZXJyaWRlIHRoZSBjbG9zZSBtZXRob2QgdG8gYWRkIGFuaW1hdGlvbiBkZWxheVxuICAgICAgICBjb25zdCBvcmlnaW5hbENsb3NlID0gc2hlZXRSZWYuY2xvc2UuYmluZChzaGVldFJlZik7XG4gICAgICAgIHNoZWV0UmVmLmNsb3NlID0gKHJlc3VsdD86IFIpID0+IHtcbiAgICAgICAgICAgIG9yaWdpbmFsQ2xvc2UocmVzdWx0KTtcbiAgICAgICAgICAgIC8vIFdhaXQgZm9yIGV4aXQgYW5pbWF0aW9uIChtYXRjaGVzIENTUyBkdXJhdGlvbilcbiAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgICAgIHNoZWV0UmVmLmRpc3Bvc2UoKTtcbiAgICAgICAgICAgIH0sIDMwMCk7XG4gICAgICAgIH07XG5cbiAgICAgICAgcmV0dXJuIHNoZWV0UmVmO1xuICAgIH1cblxuICAgIHByaXZhdGUgY3JlYXRlT3ZlcmxheShjb25maWc6IFNoZWV0Q29uZmlnKTogT3ZlcmxheVJlZiB7XG4gICAgICAgIGNvbnN0IG92ZXJsYXlDb25maWcgPSBuZXcgT3ZlcmxheUNvbmZpZyh7XG4gICAgICAgICAgICBoYXNCYWNrZHJvcDogY29uZmlnLmhhc0JhY2tkcm9wICE9PSBmYWxzZSxcbiAgICAgICAgICAgIGJhY2tkcm9wQ2xhc3M6ICd0b2xsZS1tb2RhbC1iYWNrZHJvcCcsXG4gICAgICAgICAgICBzY3JvbGxTdHJhdGVneTogdGhpcy5vdmVybGF5LnNjcm9sbFN0cmF0ZWdpZXMuYmxvY2soKSxcbiAgICAgICAgICAgIHBvc2l0aW9uU3RyYXRlZ3k6IHRoaXMub3ZlcmxheS5wb3NpdGlvbigpLmdsb2JhbCgpLmNlbnRlckhvcml6b250YWxseSgpLmNlbnRlclZlcnRpY2FsbHkoKVxuICAgICAgICB9KTtcblxuICAgICAgICByZXR1cm4gdGhpcy5vdmVybGF5LmNyZWF0ZShvdmVybGF5Q29uZmlnKTtcbiAgICB9XG59XG4iXX0=