@clr/angular 13.0.3 → 13.2.1

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 (108) hide show
  1. package/button/button-group/button-group.d.ts +5 -3
  2. package/clarity.api.md +145 -48
  3. package/clr-angular.module.d.ts +13 -12
  4. package/data/datagrid/built-in/filters/datagrid-numeric-filter.d.ts +11 -3
  5. package/data/datagrid/built-in/filters/datagrid-string-filter.d.ts +9 -3
  6. package/data/datagrid/datagrid-column.d.ts +10 -1
  7. package/data/datagrid/render/main-renderer.d.ts +3 -2
  8. package/data/stack-view/stack-control.d.ts +7 -2
  9. package/data/tree-view/models/tree-node.model.d.ts +1 -0
  10. package/data/tree-view/tree-focus-manager.service.d.ts +6 -0
  11. package/data/tree-view/tree-node.d.ts +10 -5
  12. package/esm2020/accordion/stepper/models/stepper.model.mjs +1 -1
  13. package/esm2020/accordion/stepper/providers/stepper.service.mjs +1 -1
  14. package/esm2020/accordion/stepper/stepper-panel.mjs +1 -1
  15. package/esm2020/button/button-group/button-group.mjs +17 -11
  16. package/esm2020/clr-angular.module.mjs +5 -1
  17. package/esm2020/data/datagrid/built-in/filters/datagrid-numeric-filter.mjs +37 -16
  18. package/esm2020/data/datagrid/built-in/filters/datagrid-string-filter.mjs +27 -13
  19. package/esm2020/data/datagrid/datagrid-column-toggle.mjs +7 -3
  20. package/esm2020/data/datagrid/datagrid-column.mjs +28 -3
  21. package/esm2020/data/datagrid/datagrid-filter.mjs +1 -1
  22. package/esm2020/data/datagrid/datagrid-if-expanded.service.mjs +1 -1
  23. package/esm2020/data/datagrid/render/main-renderer.mjs +9 -6
  24. package/esm2020/data/stack-view/stack-control.mjs +13 -3
  25. package/esm2020/data/stack-view/stack-input.mjs +1 -1
  26. package/esm2020/data/stack-view/stack-select.mjs +1 -1
  27. package/esm2020/data/tree-view/models/declarative-tree-node.model.mjs +1 -1
  28. package/esm2020/data/tree-view/models/recursive-tree-node.model.mjs +1 -1
  29. package/esm2020/data/tree-view/models/tree-node.model.mjs +1 -1
  30. package/esm2020/data/tree-view/tree-focus-manager.service.mjs +69 -1
  31. package/esm2020/data/tree-view/tree-node.mjs +55 -22
  32. package/esm2020/forms/checkbox/checkbox-container.mjs +1 -1
  33. package/esm2020/forms/checkbox/checkbox.mjs +1 -1
  34. package/esm2020/forms/combobox/combobox-container.mjs +1 -1
  35. package/esm2020/forms/combobox/combobox.mjs +3 -6
  36. package/esm2020/forms/combobox/model/pseudo-focus.model.mjs +1 -1
  37. package/esm2020/forms/common/control.mjs +1 -1
  38. package/esm2020/forms/common/error.mjs +1 -1
  39. package/esm2020/forms/common/helper.mjs +1 -1
  40. package/esm2020/forms/common/if-control-state/if-error.mjs +1 -1
  41. package/esm2020/forms/common/if-control-state/if-success.mjs +1 -1
  42. package/esm2020/forms/common/success.mjs +1 -1
  43. package/esm2020/forms/datalist/datalist-container.mjs +1 -1
  44. package/esm2020/forms/datalist/datalist-input.mjs +1 -1
  45. package/esm2020/forms/datepicker/calendar.mjs +3 -3
  46. package/esm2020/forms/datepicker/date-container.mjs +1 -1
  47. package/esm2020/forms/datepicker/date-input.mjs +1 -1
  48. package/esm2020/forms/input/input.mjs +1 -1
  49. package/esm2020/forms/password/password-container.mjs +3 -11
  50. package/esm2020/forms/password/password.mjs +1 -1
  51. package/esm2020/forms/radio/radio-container.mjs +1 -1
  52. package/esm2020/forms/range/range-container.mjs +1 -1
  53. package/esm2020/forms/select/select-container.mjs +1 -1
  54. package/esm2020/forms/select/select.mjs +1 -1
  55. package/esm2020/forms/textarea/textarea.mjs +1 -1
  56. package/esm2020/layout/nav/aria-current-link.mjs +28 -0
  57. package/esm2020/layout/nav/header.mjs +25 -8
  58. package/esm2020/layout/nav/index.mjs +2 -1
  59. package/esm2020/layout/nav/nav-level.mjs +110 -8
  60. package/esm2020/layout/nav/navigation.module.mjs +5 -1
  61. package/esm2020/layout/vertical-nav/vertical-nav-group.mjs +3 -3
  62. package/esm2020/layout/vertical-nav/vertical-nav-link.mjs +25 -15
  63. package/esm2020/modal/modal-body.mjs +5 -2
  64. package/esm2020/popover/common/abstract-popover.mjs +15 -6
  65. package/esm2020/popover/dropdown/dropdown-menu.mjs +1 -1
  66. package/esm2020/popover/dropdown/providers/dropdown-focus-handler.service.mjs +5 -3
  67. package/esm2020/popover/signpost/signpost-content.mjs +2 -1
  68. package/esm2020/utils/breakpoints/breakpoints.mjs +15 -1
  69. package/esm2020/utils/destroy/destroy.service.mjs +44 -0
  70. package/esm2020/utils/destroy/index.mjs +7 -0
  71. package/esm2020/utils/drag-and-drop/providers/drag-event-listener.service.mjs +7 -7
  72. package/esm2020/utils/focus/focus-on-view-init/focus-on-view-init.mjs +21 -16
  73. package/esm2020/utils/focus/key-focus/roving-tabindex.mjs +1 -1
  74. package/esm2020/utils/focus/key-focus/util.mjs +6 -1
  75. package/esm2020/utils/focus-trap/focus-trap.mjs +141 -0
  76. package/esm2020/utils/for-type-ahead/for-type-ahead.mjs +54 -0
  77. package/esm2020/utils/for-type-ahead/for-type-ahead.module.mjs +23 -0
  78. package/esm2020/utils/for-type-ahead/for-type-ahead.service.mjs +29 -0
  79. package/esm2020/utils/for-type-ahead/index.mjs +8 -0
  80. package/esm2020/utils/index.mjs +3 -1
  81. package/esm2020/utils/popover/popover-content.mjs +14 -8
  82. package/fesm2015/clr-angular.mjs +831 -182
  83. package/fesm2015/clr-angular.mjs.map +1 -1
  84. package/fesm2020/clr-angular.mjs +828 -181
  85. package/fesm2020/clr-angular.mjs.map +1 -1
  86. package/forms/combobox/combobox.d.ts +0 -1
  87. package/layout/nav/aria-current-link.d.ts +13 -0
  88. package/layout/nav/header.d.ts +6 -0
  89. package/layout/nav/index.d.ts +1 -0
  90. package/layout/nav/nav-level.d.ts +16 -4
  91. package/layout/nav/navigation.module.d.ts +7 -6
  92. package/layout/vertical-nav/vertical-nav-link.d.ts +6 -5
  93. package/modal/modal-body.d.ts +1 -0
  94. package/package.json +4 -4
  95. package/popover/common/abstract-popover.d.ts +3 -1
  96. package/popover/dropdown/providers/dropdown-focus-handler.service.d.ts +2 -2
  97. package/utils/breakpoints/breakpoints.d.ts +14 -0
  98. package/utils/destroy/destroy.service.d.ts +32 -0
  99. package/utils/destroy/index.d.ts +1 -0
  100. package/utils/focus/focus-on-view-init/focus-on-view-init.d.ts +5 -4
  101. package/utils/focus/key-focus/util.d.ts +1 -0
  102. package/utils/focus-trap/focus-trap.d.ts +29 -0
  103. package/utils/for-type-ahead/for-type-ahead.d.ts +15 -0
  104. package/utils/for-type-ahead/for-type-ahead.module.d.ts +8 -0
  105. package/utils/for-type-ahead/for-type-ahead.service.d.ts +11 -0
  106. package/utils/for-type-ahead/index.d.ts +2 -0
  107. package/utils/index.d.ts +2 -0
  108. package/utils/popover/popover-content.d.ts +2 -1
@@ -17,11 +17,12 @@ import * as i4 from "../../../../utils/popover/providers/popover-toggle.service"
17
17
  import * as i5 from "../../datagrid-filter";
18
18
  import * as i6 from "@angular/forms";
19
19
  export class DatagridNumericFilter extends DatagridFilterRegistrar {
20
- constructor(filters, domAdapter, commonStrings, popoverToggleService) {
20
+ constructor(filters, domAdapter, commonStrings, popoverToggleService, ngZone) {
21
21
  super(filters);
22
22
  this.domAdapter = domAdapter;
23
23
  this.commonStrings = commonStrings;
24
24
  this.popoverToggleService = popoverToggleService;
25
+ this.ngZone = ngZone;
25
26
  this.subscriptions = [];
26
27
  /**
27
28
  * Indicates if the filter dropdown is open
@@ -30,10 +31,17 @@ export class DatagridNumericFilter extends DatagridFilterRegistrar {
30
31
  this.filterValueChange = new EventEmitter();
31
32
  }
32
33
  ngOnDestroy() {
34
+ super.ngOnDestroy();
33
35
  this.subscriptions.forEach(sub => {
34
36
  sub.unsubscribe();
35
37
  });
36
38
  }
39
+ get maxPlaceholderValue() {
40
+ return this.maxPlaceholder || this.commonStrings.keys.maxValue;
41
+ }
42
+ get minPlaceholderValue() {
43
+ return this.minPlaceholder || this.commonStrings.keys.minValue;
44
+ }
37
45
  /**
38
46
  * Customizable filter logic based on high and low values
39
47
  */
@@ -55,9 +63,16 @@ export class DatagridNumericFilter extends DatagridFilterRegistrar {
55
63
  ngAfterViewInit() {
56
64
  this.subscriptions.push(this.popoverToggleService.openChange.subscribe(openChange => {
57
65
  this.open = openChange;
58
- // The timeout in used because when this executes, the input isn't displayed.
59
- setTimeout(() => {
60
- this.domAdapter.focus(this.input.nativeElement);
66
+ // Note: this is being run outside of the Angular zone because `element.focus()` doesn't require
67
+ // running change detection.
68
+ this.ngZone.runOutsideAngular(() => {
69
+ // The animation frame in used because when this executes, the input isn't displayed.
70
+ // Note: `element.focus()` causes re-layout and this may lead to frame drop on slower devices.
71
+ // `setTimeout` is a macrotask and macrotasks are executed within the current rendering frame.
72
+ // Animation tasks are executed within the next rendering frame.
73
+ requestAnimationFrame(() => {
74
+ this.domAdapter.focus(this.input.nativeElement);
75
+ });
61
76
  });
62
77
  }));
63
78
  }
@@ -128,8 +143,8 @@ export class DatagridNumericFilter extends DatagridFilterRegistrar {
128
143
  }
129
144
  }
130
145
  }
131
- DatagridNumericFilter.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: DatagridNumericFilter, deps: [{ token: i1.FiltersProvider }, { token: i2.DomAdapter }, { token: i3.ClrCommonStringsService }, { token: i4.ClrPopoverToggleService }], target: i0.ɵɵFactoryTarget.Component });
132
- DatagridNumericFilter.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.3", type: DatagridNumericFilter, selector: "clr-dg-numeric-filter", inputs: { customNumericFilter: ["clrDgNumericFilter", "customNumericFilter"], value: ["clrFilterValue", "value"] }, outputs: { filterValueChange: "clrFilterValueChange" }, providers: [{ provide: CustomFilter, useExisting: DatagridNumericFilter }], viewQueries: [{ propertyName: "input", first: true, predicate: ["input_low"], descendants: true }, { propertyName: "filterContainer", first: true, predicate: ClrDatagridFilter, descendants: true }], usesInheritance: true, ngImport: i0, template: `
146
+ DatagridNumericFilter.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: DatagridNumericFilter, deps: [{ token: i1.FiltersProvider }, { token: i2.DomAdapter }, { token: i3.ClrCommonStringsService }, { token: i4.ClrPopoverToggleService }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component });
147
+ DatagridNumericFilter.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.3", type: DatagridNumericFilter, selector: "clr-dg-numeric-filter", inputs: { maxPlaceholder: ["clrFilterMaxPlaceholder", "maxPlaceholder"], minPlaceholder: ["clrFilterMinPlaceholder", "minPlaceholder"], customNumericFilter: ["clrDgNumericFilter", "customNumericFilter"], value: ["clrFilterValue", "value"] }, outputs: { filterValueChange: "clrFilterValueChange" }, providers: [{ provide: CustomFilter, useExisting: DatagridNumericFilter }], viewQueries: [{ propertyName: "input", first: true, predicate: ["input_low"], descendants: true }, { propertyName: "filterContainer", first: true, predicate: ClrDatagridFilter, descendants: true }], usesInheritance: true, ngImport: i0, template: `
133
148
  <clr-dg-filter [clrDgFilter]="registered" [(clrDgFilterOpen)]="open">
134
149
  <input
135
150
  class="datagrid-numeric-filter-input"
@@ -137,8 +152,8 @@ DatagridNumericFilter.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0",
137
152
  type="number"
138
153
  name="low"
139
154
  [(ngModel)]="low"
140
- [placeholder]="commonStrings.keys.minValue"
141
- [attr.aria-label]="commonStrings.keys.minValue"
155
+ [placeholder]="minPlaceholderValue"
156
+ [attr.aria-label]="minPlaceholderValue"
142
157
  />
143
158
  <span class="datagrid-filter-input-spacer"></span>
144
159
  <input
@@ -147,8 +162,8 @@ DatagridNumericFilter.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0",
147
162
  type="number"
148
163
  name="high"
149
164
  [(ngModel)]="high"
150
- [placeholder]="commonStrings.keys.maxValue"
151
- [attr.aria-label]="commonStrings.keys.maxValue"
165
+ [placeholder]="maxPlaceholderValue"
166
+ [attr.aria-label]="maxPlaceholderValue"
152
167
  />
153
168
  </clr-dg-filter>
154
169
  `, isInline: true, components: [{ type: i5.ClrDatagridFilter, selector: "clr-dg-filter", inputs: ["clrDgFilterOpen", "clrDgFilter"], outputs: ["clrDgFilterOpenChange"] }], directives: [{ type: i6.NumberValueAccessor, selector: "input[type=number][formControlName],input[type=number][formControl],input[type=number][ngModel]" }, { type: i6.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { type: i6.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i6.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }] });
@@ -165,8 +180,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImpor
165
180
  type="number"
166
181
  name="low"
167
182
  [(ngModel)]="low"
168
- [placeholder]="commonStrings.keys.minValue"
169
- [attr.aria-label]="commonStrings.keys.minValue"
183
+ [placeholder]="minPlaceholderValue"
184
+ [attr.aria-label]="minPlaceholderValue"
170
185
  />
171
186
  <span class="datagrid-filter-input-spacer"></span>
172
187
  <input
@@ -175,13 +190,19 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImpor
175
190
  type="number"
176
191
  name="high"
177
192
  [(ngModel)]="high"
178
- [placeholder]="commonStrings.keys.maxValue"
179
- [attr.aria-label]="commonStrings.keys.maxValue"
193
+ [placeholder]="maxPlaceholderValue"
194
+ [attr.aria-label]="maxPlaceholderValue"
180
195
  />
181
196
  </clr-dg-filter>
182
197
  `,
183
198
  }]
184
- }], ctorParameters: function () { return [{ type: i1.FiltersProvider }, { type: i2.DomAdapter }, { type: i3.ClrCommonStringsService }, { type: i4.ClrPopoverToggleService }]; }, propDecorators: { customNumericFilter: [{
199
+ }], ctorParameters: function () { return [{ type: i1.FiltersProvider }, { type: i2.DomAdapter }, { type: i3.ClrCommonStringsService }, { type: i4.ClrPopoverToggleService }, { type: i0.NgZone }]; }, propDecorators: { maxPlaceholder: [{
200
+ type: Input,
201
+ args: ['clrFilterMaxPlaceholder']
202
+ }], minPlaceholder: [{
203
+ type: Input,
204
+ args: ['clrFilterMinPlaceholder']
205
+ }], customNumericFilter: [{
185
206
  type: Input,
186
207
  args: ['clrDgNumericFilter']
187
208
  }], input: [{
@@ -197,4 +218,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImpor
197
218
  type: Output,
198
219
  args: ['clrFilterValueChange']
199
220
  }] } });
200
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YWdyaWQtbnVtZXJpYy1maWx0ZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hbmd1bGFyL3NyYy9kYXRhL2RhdGFncmlkL2J1aWx0LWluL2ZpbHRlcnMvZGF0YWdyaWQtbnVtZXJpYy1maWx0ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7R0FJRztBQUVILE9BQU8sRUFBaUIsU0FBUyxFQUFjLFlBQVksRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUc3RyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUUxRCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDN0QsT0FBTyxFQUFtQixnQkFBZ0IsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBRTVFLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLHVDQUF1QyxDQUFDO0FBQ2hGLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLGdDQUFnQyxDQUFDOzs7Ozs7OztBQStCM0UsTUFBTSxPQUFPLHFCQUNYLFNBQVEsdUJBQXdEO0lBR2hFLFlBQ0UsT0FBMkIsRUFDbkIsVUFBc0IsRUFDdkIsYUFBc0MsRUFDckMsb0JBQTZDO1FBRXJELEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUpQLGVBQVUsR0FBVixVQUFVLENBQVk7UUFDdkIsa0JBQWEsR0FBYixhQUFhLENBQXlCO1FBQ3JDLHlCQUFvQixHQUFwQixvQkFBb0IsQ0FBeUI7UUFLL0Msa0JBQWEsR0FBbUIsRUFBRSxDQUFDO1FBNkIzQzs7V0FFRztRQUNJLFNBQUksR0FBRyxLQUFLLENBQUM7UUEwRlksc0JBQWlCLEdBQUcsSUFBSSxZQUFZLEVBQUUsQ0FBQztJQTVIdkUsQ0FBQztJQUlELFdBQVc7UUFDVCxJQUFJLENBQUMsYUFBYSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENB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LENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7U0FDbEU7YUFBTSxJQUFJLE9BQU8sSUFBSSxLQUFLLFFBQVEsRUFBRTtZQUNuQyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUM7WUFDeEIsSUFBSSxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztTQUNsRTtJQUNILENBQUM7O2tIQXJJVSxxQkFBcUI7c0dBQXJCLHFCQUFxQiw0TkF6QnJCLENBQUMsRUFBRSxPQUFPLEVBQUUsWUFBWSxFQUFFLFdBQVcsRUFBRSxxQkFBcUIsRUFBRSxDQUFDLGdLQWdGL0QsaUJBQWlCLHVFQS9FbEI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FzQlQ7MkZBRVUscUJBQXFCO2tCQTNCakMsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsdUJBQXVCO29CQUNqQyxTQUFTLEVBQUUsQ0FBQyxFQUFFLE9BQU8sRUFBRSxZQUFZLEVBQUUsV0FBVyx1QkFBdUIsRUFBRSxDQUFDO29CQUMxRSxRQUFRLEVBQUU7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FzQlQ7aUJBQ0Y7Mk1BMEJLLG1CQUFtQjtzQkFEdEIsS0FBSzt1QkFBQyxvQkFBb0I7Z0JBMEJJLEtBQUs7c0JBQW5DLFNBQVM7dUJBQUMsV0FBVztnQkFLZSxlQUFlO3NCQUFuRCxTQUFTO3VCQUFDLGlCQUFpQjtnQkFzQmpCLEtBQUs7c0JBRGYsS0FBSzt1QkFBQyxnQkFBZ0I7Z0JBMkRTLGlCQUFpQjtzQkFBaEQsTUFBTTt1QkFBQyxzQkFBc0IiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogQ29weXJpZ2h0IChjKSAyMDE2LTIwMjIgVk13YXJlLCBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKiBUaGlzIHNvZnR3YXJlIGlzIHJlbGVhc2VkIHVuZGVyIE1JVCBsaWNlbnNlLlxuICogVGhlIGZ1bGwgbGljZW5zZSBpbmZvcm1hdGlvbiBjYW4gYmUgZm91bmQgaW4gTElDRU5TRSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBwcm9qZWN0LlxuICovXG5cbmltcG9ydCB7IEFmdGVyVmlld0luaXQsIENvbXBvbmVudCwgRWxlbWVudFJlZiwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT3V0cHV0LCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQgeyBDbHJEYXRhZ3JpZEZpbHRlciB9IGZyb20gJy4uLy4uL2RhdGFncmlkLWZpbHRlcic7XG5pbXBvcnQgeyBDbHJEYXRhZ3JpZE51bWVyaWNGaWx0ZXJJbnRlcmZhY2UgfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzL251bWVyaWMtZmlsdGVyLmludGVyZmFjZSc7XG5pbXBvcnQgeyBDdXN0b21GaWx0ZXIgfSBmcm9tICcuLi8uLi9wcm92aWRlcnMvY3VzdG9tLWZpbHRlcic7XG5pbXBvcnQgeyBGaWx0ZXJzUHJvdmlkZXIsIFJlZ2lzdGVyZWRGaWx0ZXIgfSBmcm9tICcuLi8uLi9wcm92aWRlcnMvZmlsdGVycyc7XG5pbXBvcnQgeyBEb21BZGFwdGVyIH0gZnJvbSAnLi4vLi4vLi4vLi4vdXRpbHMvZG9tLWFkYXB0ZXIvZG9tLWFkYXB0ZXInO1xuaW1wb3J0IHsgRGF0YWdyaWRGaWx0ZXJSZWdpc3RyYXIgfSBmcm9tICcuLi8uLi91dGlscy9kYXRhZ3JpZC1maWx0ZXItcmVnaXN0cmFyJztcbmltcG9ydCB7IERhdGFncmlkTnVtZXJpY0ZpbHRlckltcGwgfSBmcm9tICcuL2RhdGFncmlkLW51bWVyaWMtZmlsdGVyLWltcGwnO1xuaW1wb3J0IHsgQ2xyQ29tbW9uU3RyaW5nc1NlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi8uLi91dGlscy9pMThuL2NvbW1vbi1zdHJpbmdzLnNlcnZpY2UnO1xuaW1wb3J0IHsgQ2xyUG9wb3ZlclRvZ2dsZVNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi8uLi91dGlscy9wb3BvdmVyL3Byb3ZpZGVycy9wb3BvdmVyLXRvZ2dsZS5zZXJ2aWNlJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnY2xyLWRnLW51bWVyaWMtZmlsdGVyJyxcbiAgcHJvdmlkZXJzOiBbeyBwcm92aWRlOiBDdXN0b21GaWx0ZXIsIHVzZUV4aXN0aW5nOiBEYXRhZ3JpZE51bWVyaWNGaWx0ZXIgfV0sXG4gIHRlbXBsYXRlOiBgXG4gICAgPGNsci1kZy1maWx0ZXIgW2NsckRnRmlsdGVyXT1cInJlZ2lzdGVyZWRcIiBbKGNsckRnRmlsdGVyT3BlbildPVwib3BlblwiPlxuICAgICAgPGlucHV0XG4gICAgICAgIGNsYXNzPVwiZGF0YWdyaWQtbnVtZXJpYy1maWx0ZXItaW5wdXRcIlxuICAgICAgICAjaW5wdXRfbG93XG4gICAgICAgIHR5cGU9XCJudW1iZXJcIlxuICAgICAgICBuYW1lPVwibG93XCJcbiAgICAgICAgWyhuZ01vZGVsKV09XCJsb3dcIlxuICAgICAgICBbcGxhY2Vob2xkZXJdPVwiY29tbW9uU3RyaW5ncy5rZXlzLm1pblZhbHVlXCJcbiAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJjb21tb25TdHJpbmdzLmtleXMubWluVmFsdWVcIlxuICAgICAgLz5cbiAgICAgIDxzcGFuIGNsYXNzPVwiZGF0YWdyaWQtZmlsdGVyLWlucHV0LXNwYWNlclwiPjwvc3Bhbj5cbiAgICAgIDxpbnB1dFxuICAgICAgICBjbGFzcz1cImRhdGFncmlkLW51bWVyaWMtZmlsdGVyLWlucHV0XCJcbiAgICAgICAgI2lucHV0X2hpZ2hcbiAgICAgICAgdHlwZT1cIm51bWJlclwiXG4gICAgICAgIG5hbWU9XCJoaWdoXCJcbiAgICAgICAgWyhuZ01vZGVsKV09XCJoaWdoXCJcbiAgICAgICAgW3BsYWNlaG9sZGVyXT1cImNvbW1vblN0cmluZ3Mua2V5cy5tYXhWYWx1ZVwiXG4gICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiY29tbW9uU3RyaW5ncy5rZXlzLm1heFZhbHVlXCJcbiAgICAgIC8+XG4gICAgPC9jbHItZGctZmlsdGVyPlxuICBgLFxufSlcbmV4cG9ydCBjbGFzcyBEYXRhZ3JpZE51bWVyaWNGaWx0ZXI8VCA9IGFueT5cbiAgZXh0ZW5kcyBEYXRhZ3JpZEZpbHRlclJlZ2lzdHJhcjxULCBEYXRhZ3JpZE51bWVyaWNGaWx0ZXJJbXBsPFQ+PlxuICBpbXBsZW1lbnRzIEN1c3RvbUZpbHRlciwgQWZ0ZXJWaWV3SW5pdFxue1xuICBjb25zdHJ1Y3RvcihcbiAgICBmaWx0ZXJzOiBGaWx0ZXJzUHJvdmlkZXI8VD4sXG4gICAgcHJpdmF0ZSBkb21BZGFwdGVyOiBEb21BZGFwdGVyLFxuICAgIHB1YmxpYyBjb21tb25TdHJpbmdzOiBDbHJDb21tb25TdHJpbmdzU2VydmljZSxcbiAgICBwcml2YXRlIHBvcG92ZXJUb2dnbGVTZXJ2aWNlOiBDbHJQb3BvdmVyVG9nZ2xlU2VydmljZVxuICApIHtcbiAgICBzdXBlcihmaWx0ZXJzKTtcbiAgfVxuXG4gIHByaXZhdGUgc3Vic2NyaXB0aW9uczogU3Vic2NyaXB0aW9uW10gPSBbXTtcblxuICBuZ09uRGVzdHJveSgpIHtcbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMuZm9yRWFjaChzdWIgPT4ge1xuICAgICAgc3ViLnVuc3Vic2NyaWJlKCk7XG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogQ3VzdG9taXphYmxlIGZpbHRlciBsb2dpYyBiYXNlZCBvbiBoaWdoIGFuZCBsb3cgdmFsdWVzXG4gICAqL1xuICBASW5wdXQoJ2NsckRnTnVtZXJpY0ZpbHRlcicpXG4gIHNldCBjdXN0b21OdW1lcmljRmlsdGVyKFxuICAgIHZhbHVlOiBDbHJEYXRhZ3JpZE51bWVyaWNGaWx0ZXJJbnRlcmZhY2U8VD4gfCBSZWdpc3RlcmVkRmlsdGVyPFQsIERhdGFncmlkTnVtZXJpY0ZpbHRlckltcGw8VD4+XG4gICkge1xuICAgIGlmICh2YWx1ZSBpbnN0YW5jZW9mIFJlZ2lzdGVyZWRGaWx0ZXIpIHtcbiAgICAgIHRoaXMuc2V0RmlsdGVyKHZhbHVlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5zZXRGaWx0ZXIobmV3IERhdGFncmlkTnVtZXJpY0ZpbHRlckltcGwodmFsdWUpKTtcbiAgICB9XG4gICAgaWYgKHRoaXMuaW5pdEZpbHRlclZhbHVlcykge1xuICAgICAgdGhpcy52YWx1ZSA9IHRoaXMuaW5pdEZpbHRlclZhbHVlcztcbiAgICAgIC8vIFRoaXMgaW5pdEZpbHRlclZhbHVlcyBzaG91bGQgYmUgdXNlZCBvbmx5IG9uY2UgYWZ0ZXIgdGhlIGZpbHRlciByZWdpc3RyYXRpb25cbiAgICAgIC8vIFNvIGRlbGV0aW5nIHRoaXMgcHJvcGVydHkgdmFsdWUgdG8gcHJldmVudCBpdCBmcm9tIGJlaW5nIHVzZWQgYWdhaW5cbiAgICAgIC8vIGlmIHRoaXMgY3VzdG9tU3RyaW5nRmlsdGVyIHByb3BlcnR5IGlzIHNldCBhZ2FpblxuICAgICAgZGVsZXRlIHRoaXMuaW5pdEZpbHRlclZhbHVlcztcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogSW5kaWNhdGVzIGlmIHRoZSBmaWx0ZXIgZHJvcGRvd24gaXMgb3BlblxuICAgKi9cbiAgcHVibGljIG9wZW4gPSBmYWxzZTtcblxuICAvKipcbiAgICogV2UgbmVlZCB0aGUgYWN0dWFsIGlucHV0IGVsZW1lbnQgdG8gYXV0b21hdGljYWxseSBmb2N1cyBvbiBpdFxuICAgKi9cbiAgQFZpZXdDaGlsZCgnaW5wdXRfbG93JykgcHVibGljIGlucHV0OiBFbGVtZW50UmVmO1xuXG4gIC8qKlxuICAgKiBXZSBncmFiIHRoZSBDbHJEYXRhZ3JpZEZpbHRlciB3ZSB3cmFwIHRvIHJlZ2lzdGVyIHRoaXMgU3RyaW5nRmlsdGVyIHRvIGl0LlxuICAgKi9cbiAgQFZpZXdDaGlsZChDbHJEYXRhZ3JpZEZpbHRlcikgcHVibGljIGZpbHRlckNvbnRhaW5lcjogQ2xyRGF0YWdyaWRGaWx0ZXI8VD47XG4gIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMucHVzaChcbiAgICAgIHRoaXMucG9wb3ZlclRvZ2dsZVNlcnZpY2Uub3BlbkNoYW5nZS5zdWJzY3JpYmUob3BlbkNoYW5nZSA9PiB7XG4gICAgICAgIHRoaXMub3BlbiA9IG9wZW5DaGFuZ2U7XG4gICAgICAgIC8vIFRoZSB0aW1lb3V0IGluIHVzZWQgYmVjYXVzZSB3aGVuIHRoaXMgZXhlY3V0ZXMsIHRoZSBpbnB1dCBpc24ndCBkaXNwbGF5ZWQuXG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgIHRoaXMuZG9tQWRhcHRlci5mb2N1cyh0aGlzLmlucHV0Lm5hdGl2ZUVsZW1lbnQpO1xuICAgICAgICB9KTtcbiAgICAgIH0pXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgaW5pdEZpbHRlclZhbHVlczogW251bWJlciwgbnVtYmVyXTtcbiAgLyoqXG4gICAqIENvbW1vbiBzZXR0ZXIgZm9yIHRoZSBpbnB1dCB2YWx1ZXNcbiAgICovXG4gIHB1YmxpYyBnZXQgdmFsdWUoKSB7XG4gICAgcmV0dXJuIFt0aGlzLmZpbHRlci5sb3csIHRoaXMuZmlsdGVyLmhpZ2hdO1xuICB9XG5cbiAgQElucHV0KCdjbHJGaWx0ZXJWYWx1ZScpXG4gIHB1YmxpYyBzZXQgdmFsdWUodmFsdWVzOiBbbnVtYmVyLCBudW1iZXJdKSB7XG4gICAgaWYgKHRoaXMuZmlsdGVyICYmIEFycmF5LmlzQXJyYXkodmFsdWVzKSkge1xuICAgICAgaWYgKHZhbHVlcyAmJiAodmFsdWVzWzBdICE9PSB0aGlzLmZpbHRlci5sb3cgfHwgdmFsdWVzWzFdICE9PSB0aGlzLmZpbHRlci5oaWdoKSkge1xuICAgICAgICBpZiAodHlwZW9mIHZhbHVlc1swXSA9PT0gJ251bWJlcicpIHtcbiAgICAgICAgICB0aGlzLmZpbHRlci5sb3cgPSB2YWx1ZXNbMF07XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhpcy5maWx0ZXIubG93ID0gbnVsbDtcbiAgICAgICAgfVxuICAgICAgICBpZiAodHlwZW9mIHZhbHVlc1sxXSA9PT0gJ251bWJlcicpIHtcbiAgICAgICAgICB0aGlzLmZpbHRlci5oaWdoID0gdmFsdWVzWzFdO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRoaXMuZmlsdGVyLmhpZ2ggPSBudWxsO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuZmlsdGVyVmFsdWVDaGFuZ2UuZW1pdCh2YWx1ZXMpO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmluaXRGaWx0ZXJWYWx1ZXMgPSB2YWx1ZXM7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGdldCBsb3coKSB7XG4gICAgaWYgKHR5cGVvZiB0aGlzLmZpbHRlci5sb3cgPT09ICdudW1iZXInICYmIGlzRmluaXRlKHRoaXMuZmlsdGVyLmxvdykpIHtcbiAgICAgIHJldHVybiB0aGlzLmZpbHRlci5sb3c7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIFRoZXJlJ3Mgbm90IGEgbG93IGxpbWl0XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgc2V0IGxvdyhsb3c6IG51bWJlciB8IHN0cmluZykge1xuICAgIGlmICh0eXBlb2YgbG93ID09PSAnbnVtYmVyJyAmJiBsb3cgIT09IHRoaXMuZmlsdGVyLmxvdykge1xuICAgICAgdGhpcy5maWx0ZXIubG93ID0gbG93O1xuICAgICAgdGhpcy5maWx0ZXJWYWx1ZUNoYW5nZS5lbWl0KFt0aGlzLmZpbHRlci5sb3csIHRoaXMuZmlsdGVyLmhpZ2hdKTtcbiAgICB9IGVsc2UgaWYgKHR5cGVvZiBsb3cgIT09ICdudW1iZXInKSB7XG4gICAgICB0aGlzLmZpbHRlci5sb3cgPSBudWxsO1xuICAgICAgdGhpcy5maWx0ZXJWYWx1ZUNoYW5nZS5lbWl0KFt0aGlzLmZpbHRlci5sb3csIHRoaXMuZmlsdGVyLmhpZ2hdKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgZ2V0IGhpZ2goKSB7XG4gICAgaWYgKHR5cGVvZiB0aGlzLmZpbHRlci5oaWdoID09PSAnbnVtYmVyJyAmJiBpc0Zpbml0ZSh0aGlzLmZpbHRlci5oaWdoKSkge1xuICAgICAgcmV0dXJuIHRoaXMuZmlsdGVyLmhpZ2g7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIFRoZXJlJ3Mgbm90IGEgaGlnaCBsaW1pdFxuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIHNldCBoaWdoKGhpZ2g6IG51bWJlciB8IHN0cmluZykge1xuICAgIGlmICh0eXBlb2YgaGlnaCA9PT0gJ251bWJlcicgJiYgaGlnaCAhPT0gdGhpcy5maWx0ZXIuaGlnaCkge1xuICAgICAgdGhpcy5maWx0ZXIuaGlnaCA9IGhpZ2g7XG4gICAgICB0aGlzLmZpbHRlclZhbHVlQ2hhbmdlLmVtaXQoW3RoaXMuZmlsdGVyLmxvdywgdGhpcy5maWx0ZXIuaGlnaF0pO1xuICAgIH0gZWxzZSBpZiAodHlwZW9mIGhpZ2ggIT09ICdudW1iZXInKSB7XG4gICAgICB0aGlzLmZpbHRlci5oaWdoID0gbnVsbDtcbiAgICAgIHRoaXMuZmlsdGVyVmFsdWVDaGFuZ2UuZW1pdChbdGhpcy5maWx0ZXIubG93LCB0aGlzLmZpbHRlci5oaWdoXSk7XG4gICAgfVxuICB9XG5cbiAgQE91dHB1dCgnY2xyRmlsdGVyVmFsdWVDaGFuZ2UnKSBmaWx0ZXJWYWx1ZUNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbn1cbiJdfQ==
221
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YWdyaWQtbnVtZXJpYy1maWx0ZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hbmd1bGFyL3NyYy9kYXRhL2RhdGFncmlkL2J1aWx0LWluL2ZpbHRlcnMvZGF0YWdyaWQtbnVtZXJpYy1maWx0ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7R0FJRztBQUVILE9BQU8sRUFBaUIsU0FBUyxFQUFjLFlBQVksRUFBRSxLQUFLLEVBQVUsTUFBTSxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUdySCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUUxRCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDN0QsT0FBTyxFQUFtQixnQkFBZ0IsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBRTVFLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLHVDQUF1QyxDQUFDO0FBQ2hGLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLGdDQUFnQyxDQUFDOzs7Ozs7OztBQStCM0UsTUFBTSxPQUFPLHFCQUNYLFNBQVEsdUJBQXdEO0lBR2hFLFlBQ0UsT0FBMkIsRUFDbkIsVUFBc0IsRUFDdkIsYUFBc0MsRUFDckMsb0JBQTZDLEVBQzdDLE1BQWM7UUFFdEIsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBTFAsZUFBVSxHQUFWLFVBQVUsQ0FBWTtRQUN2QixrQkFBYSxHQUFiLGFBQWEsQ0FBeUI7UUFDckMseUJBQW9CLEdBQXBCLG9CQUFvQixDQUF5QjtRQUM3QyxXQUFNLEdBQU4sTUFBTSxDQUFRO1FBS2hCLGtCQUFhLEdBQW1CLEVBQUUsQ0FBQztRQTZDM0M7O1dBRUc7UUFDSSxTQUFJLEdBQUcsS0FBSyxDQUFDO1FBaUdZLHNCQUFpQixHQUFHLElBQUksWUFBWSxFQUFFLENBQUM7SUFuSnZFLENBQUM7SUFJUSxXQUFXO1FBQ2xC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WSxFQUFFLFdBQVcsdUJBQXVCLEVBQUUsQ0FBQztvQkFDMUUsUUFBUSxFQUFFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBc0JUO2lCQUNGO2dPQTJCbUMsY0FBYztzQkFBL0MsS0FBSzt1QkFBQyx5QkFBeUI7Z0JBTUUsY0FBYztzQkFBL0MsS0FBSzt1QkFBQyx5QkFBeUI7Z0JBVTVCLG1CQUFtQjtzQkFEdEIsS0FBSzt1QkFBQyxvQkFBb0I7Z0JBMEJJLEtBQUs7c0JBQW5DLFNBQVM7dUJBQUMsV0FBVztnQkFLZSxlQUFlO3NCQUFuRCxTQUFTO3VCQUFDLGlCQUFpQjtnQkE2QmpCLEtBQUs7c0JBRGYsS0FBSzt1QkFBQyxnQkFBZ0I7Z0JBMkRTLGlCQUFpQjtzQkFBaEQsTUFBTTt1QkFBQyxzQkFBc0IiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogQ29weXJpZ2h0IChjKSAyMDE2LTIwMjIgVk13YXJlLCBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKiBUaGlzIHNvZnR3YXJlIGlzIHJlbGVhc2VkIHVuZGVyIE1JVCBsaWNlbnNlLlxuICogVGhlIGZ1bGwgbGljZW5zZSBpbmZvcm1hdGlvbiBjYW4gYmUgZm91bmQgaW4gTElDRU5TRSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBwcm9qZWN0LlxuICovXG5cbmltcG9ydCB7IEFmdGVyVmlld0luaXQsIENvbXBvbmVudCwgRWxlbWVudFJlZiwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgTmdab25lLCBPdXRwdXQsIFZpZXdDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5cbmltcG9ydCB7IENsckRhdGFncmlkRmlsdGVyIH0gZnJvbSAnLi4vLi4vZGF0YWdyaWQtZmlsdGVyJztcbmltcG9ydCB7IENsckRhdGFncmlkTnVtZXJpY0ZpbHRlckludGVyZmFjZSB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMvbnVtZXJpYy1maWx0ZXIuaW50ZXJmYWNlJztcbmltcG9ydCB7IEN1c3RvbUZpbHRlciB9IGZyb20gJy4uLy4uL3Byb3ZpZGVycy9jdXN0b20tZmlsdGVyJztcbmltcG9ydCB7IEZpbHRlcnNQcm92aWRlciwgUmVnaXN0ZXJlZEZpbHRlciB9IGZyb20gJy4uLy4uL3Byb3ZpZGVycy9maWx0ZXJzJztcbmltcG9ydCB7IERvbUFkYXB0ZXIgfSBmcm9tICcuLi8uLi8uLi8uLi91dGlscy9kb20tYWRhcHRlci9kb20tYWRhcHRlcic7XG5pbXBvcnQgeyBEYXRhZ3JpZEZpbHRlclJlZ2lzdHJhciB9IGZyb20gJy4uLy4uL3V0aWxzL2RhdGFncmlkLWZpbHRlci1yZWdpc3RyYXInO1xuaW1wb3J0IHsgRGF0YWdyaWROdW1lcmljRmlsdGVySW1wbCB9IGZyb20gJy4vZGF0YWdyaWQtbnVtZXJpYy1maWx0ZXItaW1wbCc7XG5pbXBvcnQgeyBDbHJDb21tb25TdHJpbmdzU2VydmljZSB9IGZyb20gJy4uLy4uLy4uLy4uL3V0aWxzL2kxOG4vY29tbW9uLXN0cmluZ3Muc2VydmljZSc7XG5pbXBvcnQgeyBDbHJQb3BvdmVyVG9nZ2xlU2VydmljZSB9IGZyb20gJy4uLy4uLy4uLy4uL3V0aWxzL3BvcG92ZXIvcHJvdmlkZXJzL3BvcG92ZXItdG9nZ2xlLnNlcnZpY2UnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdjbHItZGctbnVtZXJpYy1maWx0ZXInLFxuICBwcm92aWRlcnM6IFt7IHByb3ZpZGU6IEN1c3RvbUZpbHRlciwgdXNlRXhpc3Rpbmc6IERhdGFncmlkTnVtZXJpY0ZpbHRlciB9XSxcbiAgdGVtcGxhdGU6IGBcbiAgICA8Y2xyLWRnLWZpbHRlciBbY2xyRGdGaWx0ZXJdPVwicmVnaXN0ZXJlZFwiIFsoY2xyRGdGaWx0ZXJPcGVuKV09XCJvcGVuXCI+XG4gICAgICA8aW5wdXRcbiAgICAgICAgY2xhc3M9XCJkYXRhZ3JpZC1udW1lcmljLWZpbHRlci1pbnB1dFwiXG4gICAgICAgICNpbnB1dF9sb3dcbiAgICAgICAgdHlwZT1cIm51bWJlclwiXG4gICAgICAgIG5hbWU9XCJsb3dcIlxuICAgICAgICBbKG5nTW9kZWwpXT1cImxvd1wiXG4gICAgICAgIFtwbGFjZWhvbGRlcl09XCJtaW5QbGFjZWhvbGRlclZhbHVlXCJcbiAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJtaW5QbGFjZWhvbGRlclZhbHVlXCJcbiAgICAgIC8+XG4gICAgICA8c3BhbiBjbGFzcz1cImRhdGFncmlkLWZpbHRlci1pbnB1dC1zcGFjZXJcIj48L3NwYW4+XG4gICAgICA8aW5wdXRcbiAgICAgICAgY2xhc3M9XCJkYXRhZ3JpZC1udW1lcmljLWZpbHRlci1pbnB1dFwiXG4gICAgICAgICNpbnB1dF9oaWdoXG4gICAgICAgIHR5cGU9XCJudW1iZXJcIlxuICAgICAgICBuYW1lPVwiaGlnaFwiXG4gICAgICAgIFsobmdNb2RlbCldPVwiaGlnaFwiXG4gICAgICAgIFtwbGFjZWhvbGRlcl09XCJtYXhQbGFjZWhvbGRlclZhbHVlXCJcbiAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJtYXhQbGFjZWhvbGRlclZhbHVlXCJcbiAgICAgIC8+XG4gICAgPC9jbHItZGctZmlsdGVyPlxuICBgLFxufSlcbmV4cG9ydCBjbGFzcyBEYXRhZ3JpZE51bWVyaWNGaWx0ZXI8VCA9IGFueT5cbiAgZXh0ZW5kcyBEYXRhZ3JpZEZpbHRlclJlZ2lzdHJhcjxULCBEYXRhZ3JpZE51bWVyaWNGaWx0ZXJJbXBsPFQ+PlxuICBpbXBsZW1lbnRzIEN1c3RvbUZpbHRlciwgQWZ0ZXJWaWV3SW5pdFxue1xuICBjb25zdHJ1Y3RvcihcbiAgICBmaWx0ZXJzOiBGaWx0ZXJzUHJvdmlkZXI8VD4sXG4gICAgcHJpdmF0ZSBkb21BZGFwdGVyOiBEb21BZGFwdGVyLFxuICAgIHB1YmxpYyBjb21tb25TdHJpbmdzOiBDbHJDb21tb25TdHJpbmdzU2VydmljZSxcbiAgICBwcml2YXRlIHBvcG92ZXJUb2dnbGVTZXJ2aWNlOiBDbHJQb3BvdmVyVG9nZ2xlU2VydmljZSxcbiAgICBwcml2YXRlIG5nWm9uZTogTmdab25lXG4gICkge1xuICAgIHN1cGVyKGZpbHRlcnMpO1xuICB9XG5cbiAgcHJpdmF0ZSBzdWJzY3JpcHRpb25zOiBTdWJzY3JpcHRpb25bXSA9IFtdO1xuXG4gIG92ZXJyaWRlIG5nT25EZXN0cm95KCkge1xuICAgIHN1cGVyLm5nT25EZXN0cm95KCk7XG4gICAgdGhpcy5zdWJzY3JpcHRpb25zLmZvckVhY2goc3ViID0+IHtcbiAgICAgIHN1Yi51bnN1YnNjcmliZSgpO1xuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIFByb3ZpZGUgYSB3YXkgdG8gcGFzcyBleHRlcm5hbCBwbGFjZWhvbGRlciBhbmQgYXJpYS1sYWJlbCB0byB0aGUgZmlsdGVyIGlucHV0XG4gICAqL1xuICBASW5wdXQoJ2NsckZpbHRlck1heFBsYWNlaG9sZGVyJykgbWF4UGxhY2Vob2xkZXI6IHN0cmluZztcblxuICBnZXQgbWF4UGxhY2Vob2xkZXJWYWx1ZSgpIHtcbiAgICByZXR1cm4gdGhpcy5tYXhQbGFjZWhvbGRlciB8fCB0aGlzLmNvbW1vblN0cmluZ3Mua2V5cy5tYXhWYWx1ZTtcbiAgfVxuXG4gIEBJbnB1dCgnY2xyRmlsdGVyTWluUGxhY2Vob2xkZXInKSBtaW5QbGFjZWhvbGRlcjogc3RyaW5nO1xuXG4gIGdldCBtaW5QbGFjZWhvbGRlclZhbHVlKCkge1xuICAgIHJldHVybiB0aGlzLm1pblBsYWNlaG9sZGVyIHx8IHRoaXMuY29tbW9uU3RyaW5ncy5rZXlzLm1pblZhbHVlO1xuICB9XG5cbiAgLyoqXG4gICAqIEN1c3RvbWl6YWJsZSBmaWx0ZXIgbG9naWMgYmFzZWQgb24gaGlnaCBhbmQgbG93IHZhbHVlc1xuICAgKi9cbiAgQElucHV0KCdjbHJEZ051bWVyaWNGaWx0ZXInKVxuICBzZXQgY3VzdG9tTnVtZXJpY0ZpbHRlcihcbiAgICB2YWx1ZTogQ2xyRGF0YWdyaWROdW1lcmljRmlsdGVySW50ZXJmYWNlPFQ+IHwgUmVnaXN0ZXJlZEZpbHRlcjxULCBEYXRhZ3JpZE51bWVyaWNGaWx0ZXJJbXBsPFQ+PlxuICApIHtcbiAgICBpZiAodmFsdWUgaW5zdGFuY2VvZiBSZWdpc3RlcmVkRmlsdGVyKSB7XG4gICAgICB0aGlzLnNldEZpbHRlcih2YWx1ZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuc2V0RmlsdGVyKG5ldyBEYXRhZ3JpZE51bWVyaWNGaWx0ZXJJbXBsKHZhbHVlKSk7XG4gICAgfVxuICAgIGlmICh0aGlzLmluaXRGaWx0ZXJWYWx1ZXMpIHtcbiAgICAgIHRoaXMudmFsdWUgPSB0aGlzLmluaXRGaWx0ZXJWYWx1ZXM7XG4gICAgICAvLyBUaGlzIGluaXRGaWx0ZXJWYWx1ZXMgc2hvdWxkIGJlIHVzZWQgb25seSBvbmNlIGFmdGVyIHRoZSBmaWx0ZXIgcmVnaXN0cmF0aW9uXG4gICAgICAvLyBTbyBkZWxldGluZyB0aGlzIHByb3BlcnR5IHZhbHVlIHRvIHByZXZlbnQgaXQgZnJvbSBiZWluZyB1c2VkIGFnYWluXG4gICAgICAvLyBpZiB0aGlzIGN1c3RvbVN0cmluZ0ZpbHRlciBwcm9wZXJ0eSBpcyBzZXQgYWdhaW5cbiAgICAgIGRlbGV0ZSB0aGlzLmluaXRGaWx0ZXJWYWx1ZXM7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEluZGljYXRlcyBpZiB0aGUgZmlsdGVyIGRyb3Bkb3duIGlzIG9wZW5cbiAgICovXG4gIHB1YmxpYyBvcGVuID0gZmFsc2U7XG5cbiAgLyoqXG4gICAqIFdlIG5lZWQgdGhlIGFjdHVhbCBpbnB1dCBlbGVtZW50IHRvIGF1dG9tYXRpY2FsbHkgZm9jdXMgb24gaXRcbiAgICovXG4gIEBWaWV3Q2hpbGQoJ2lucHV0X2xvdycpIHB1YmxpYyBpbnB1dDogRWxlbWVudFJlZjtcblxuICAvKipcbiAgICogV2UgZ3JhYiB0aGUgQ2xyRGF0YWdyaWRGaWx0ZXIgd2Ugd3JhcCB0byByZWdpc3RlciB0aGlzIFN0cmluZ0ZpbHRlciB0byBpdC5cbiAgICovXG4gIEBWaWV3Q2hpbGQoQ2xyRGF0YWdyaWRGaWx0ZXIpIHB1YmxpYyBmaWx0ZXJDb250YWluZXI6IENsckRhdGFncmlkRmlsdGVyPFQ+O1xuICBuZ0FmdGVyVmlld0luaXQoKSB7XG4gICAgdGhpcy5zdWJzY3JpcHRpb25zLnB1c2goXG4gICAgICB0aGlzLnBvcG92ZXJUb2dnbGVTZXJ2aWNlLm9wZW5DaGFuZ2Uuc3Vic2NyaWJlKG9wZW5DaGFuZ2UgPT4ge1xuICAgICAgICB0aGlzLm9wZW4gPSBvcGVuQ2hhbmdlO1xuICAgICAgICAvLyBOb3RlOiB0aGlzIGlzIGJlaW5nIHJ1biBvdXRzaWRlIG9mIHRoZSBBbmd1bGFyIHpvbmUgYmVjYXVzZSBgZWxlbWVudC5mb2N1cygpYCBkb2Vzbid0IHJlcXVpcmVcbiAgICAgICAgLy8gcnVubmluZyBjaGFuZ2UgZGV0ZWN0aW9uLlxuICAgICAgICB0aGlzLm5nWm9uZS5ydW5PdXRzaWRlQW5ndWxhcigoKSA9PiB7XG4gICAgICAgICAgLy8gVGhlIGFuaW1hdGlvbiBmcmFtZSBpbiB1c2VkIGJlY2F1c2Ugd2hlbiB0aGlzIGV4ZWN1dGVzLCB0aGUgaW5wdXQgaXNuJ3QgZGlzcGxheWVkLlxuICAgICAgICAgIC8vIE5vdGU6IGBlbGVtZW50LmZvY3VzKClgIGNhdXNlcyByZS1sYXlvdXQgYW5kIHRoaXMgbWF5IGxlYWQgdG8gZnJhbWUgZHJvcCBvbiBzbG93ZXIgZGV2aWNlcy5cbiAgICAgICAgICAvLyBgc2V0VGltZW91dGAgaXMgYSBtYWNyb3Rhc2sgYW5kIG1hY3JvdGFza3MgYXJlIGV4ZWN1dGVkIHdpdGhpbiB0aGUgY3VycmVudCByZW5kZXJpbmcgZnJhbWUuXG4gICAgICAgICAgLy8gQW5pbWF0aW9uIHRhc2tzIGFyZSBleGVjdXRlZCB3aXRoaW4gdGhlIG5leHQgcmVuZGVyaW5nIGZyYW1lLlxuICAgICAgICAgIHJlcXVlc3RBbmltYXRpb25GcmFtZSgoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLmRvbUFkYXB0ZXIuZm9jdXModGhpcy5pbnB1dC5uYXRpdmVFbGVtZW50KTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgICB9KVxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIGluaXRGaWx0ZXJWYWx1ZXM6IFtudW1iZXIsIG51bWJlcl07XG4gIC8qKlxuICAgKiBDb21tb24gc2V0dGVyIGZvciB0aGUgaW5wdXQgdmFsdWVzXG4gICAqL1xuICBwdWJsaWMgZ2V0IHZhbHVlKCkge1xuICAgIHJldHVybiBbdGhpcy5maWx0ZXIubG93LCB0aGlzLmZpbHRlci5oaWdoXTtcbiAgfVxuXG4gIEBJbnB1dCgnY2xyRmlsdGVyVmFsdWUnKVxuICBwdWJsaWMgc2V0IHZhbHVlKHZhbHVlczogW251bWJlciwgbnVtYmVyXSkge1xuICAgIGlmICh0aGlzLmZpbHRlciAmJiBBcnJheS5pc0FycmF5KHZhbHVlcykpIHtcbiAgICAgIGlmICh2YWx1ZXMgJiYgKHZhbHVlc1swXSAhPT0gdGhpcy5maWx0ZXIubG93IHx8IHZhbHVlc1sxXSAhPT0gdGhpcy5maWx0ZXIuaGlnaCkpIHtcbiAgICAgICAgaWYgKHR5cGVvZiB2YWx1ZXNbMF0gPT09ICdudW1iZXInKSB7XG4gICAgICAgICAgdGhpcy5maWx0ZXIubG93ID0gdmFsdWVzWzBdO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRoaXMuZmlsdGVyLmxvdyA9IG51bGw7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHR5cGVvZiB2YWx1ZXNbMV0gPT09ICdudW1iZXInKSB7XG4gICAgICAgICAgdGhpcy5maWx0ZXIuaGlnaCA9IHZhbHVlc1sxXTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aGlzLmZpbHRlci5oaWdoID0gbnVsbDtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmZpbHRlclZhbHVlQ2hhbmdlLmVtaXQodmFsdWVzKTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5pbml0RmlsdGVyVmFsdWVzID0gdmFsdWVzO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBnZXQgbG93KCkge1xuICAgIGlmICh0eXBlb2YgdGhpcy5maWx0ZXIubG93ID09PSAnbnVtYmVyJyAmJiBpc0Zpbml0ZSh0aGlzLmZpbHRlci5sb3cpKSB7XG4gICAgICByZXR1cm4gdGhpcy5maWx0ZXIubG93O1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBUaGVyZSdzIG5vdCBhIGxvdyBsaW1pdFxuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIHNldCBsb3cobG93OiBudW1iZXIgfCBzdHJpbmcpIHtcbiAgICBpZiAodHlwZW9mIGxvdyA9PT0gJ251bWJlcicgJiYgbG93ICE9PSB0aGlzLmZpbHRlci5sb3cpIHtcbiAgICAgIHRoaXMuZmlsdGVyLmxvdyA9IGxvdztcbiAgICAgIHRoaXMuZmlsdGVyVmFsdWVDaGFuZ2UuZW1pdChbdGhpcy5maWx0ZXIubG93LCB0aGlzLmZpbHRlci5oaWdoXSk7XG4gICAgfSBlbHNlIGlmICh0eXBlb2YgbG93ICE9PSAnbnVtYmVyJykge1xuICAgICAgdGhpcy5maWx0ZXIubG93ID0gbnVsbDtcbiAgICAgIHRoaXMuZmlsdGVyVmFsdWVDaGFuZ2UuZW1pdChbdGhpcy5maWx0ZXIubG93LCB0aGlzLmZpbHRlci5oaWdoXSk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGdldCBoaWdoKCkge1xuICAgIGlmICh0eXBlb2YgdGhpcy5maWx0ZXIuaGlnaCA9PT0gJ251bWJlcicgJiYgaXNGaW5pdGUodGhpcy5maWx0ZXIuaGlnaCkpIHtcbiAgICAgIHJldHVybiB0aGlzLmZpbHRlci5oaWdoO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBUaGVyZSdzIG5vdCBhIGhpZ2ggbGltaXRcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBzZXQgaGlnaChoaWdoOiBudW1iZXIgfCBzdHJpbmcpIHtcbiAgICBpZiAodHlwZW9mIGhpZ2ggPT09ICdudW1iZXInICYmIGhpZ2ggIT09IHRoaXMuZmlsdGVyLmhpZ2gpIHtcbiAgICAgIHRoaXMuZmlsdGVyLmhpZ2ggPSBoaWdoO1xuICAgICAgdGhpcy5maWx0ZXJWYWx1ZUNoYW5nZS5lbWl0KFt0aGlzLmZpbHRlci5sb3csIHRoaXMuZmlsdGVyLmhpZ2hdKTtcbiAgICB9IGVsc2UgaWYgKHR5cGVvZiBoaWdoICE9PSAnbnVtYmVyJykge1xuICAgICAgdGhpcy5maWx0ZXIuaGlnaCA9IG51bGw7XG4gICAgICB0aGlzLmZpbHRlclZhbHVlQ2hhbmdlLmVtaXQoW3RoaXMuZmlsdGVyLmxvdywgdGhpcy5maWx0ZXIuaGlnaF0pO1xuICAgIH1cbiAgfVxuXG4gIEBPdXRwdXQoJ2NsckZpbHRlclZhbHVlQ2hhbmdlJykgZmlsdGVyVmFsdWVDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG59XG4iXX0=
@@ -3,7 +3,7 @@
3
3
  * This software is released under MIT license.
4
4
  * The full license information can be found in LICENSE in the root directory of this project.
5
5
  */
6
- import { Component, EventEmitter, Input, Output, ViewChild } from '@angular/core';
6
+ import { Component, EventEmitter, Input, Output, ViewChild, } from '@angular/core';
7
7
  import { ClrDatagridFilter } from '../../datagrid-filter';
8
8
  import { CustomFilter } from '../../providers/custom-filter';
9
9
  import { RegisteredFilter } from '../../providers/filters';
@@ -17,11 +17,12 @@ import * as i4 from "../../../../utils/popover/providers/popover-toggle.service"
17
17
  import * as i5 from "../../datagrid-filter";
18
18
  import * as i6 from "@angular/forms";
19
19
  export class DatagridStringFilter extends DatagridFilterRegistrar {
20
- constructor(filters, domAdapter, commonStrings, smartToggleService) {
20
+ constructor(filters, domAdapter, commonStrings, smartToggleService, ngZone) {
21
21
  super(filters);
22
22
  this.domAdapter = domAdapter;
23
23
  this.commonStrings = commonStrings;
24
24
  this.smartToggleService = smartToggleService;
25
+ this.ngZone = ngZone;
25
26
  this.subs = [];
26
27
  /**
27
28
  * Indicates if the filter dropdown is open
@@ -29,6 +30,9 @@ export class DatagridStringFilter extends DatagridFilterRegistrar {
29
30
  this.open = false;
30
31
  this.filterValueChange = new EventEmitter();
31
32
  }
33
+ get placeholderValue() {
34
+ return this.placeholder || this.commonStrings.keys.filterItems;
35
+ }
32
36
  /**
33
37
  * Customizable filter logic based on a search text
34
38
  */
@@ -50,9 +54,16 @@ export class DatagridStringFilter extends DatagridFilterRegistrar {
50
54
  ngAfterViewInit() {
51
55
  this.subs.push(this.smartToggleService.openChange.subscribe(openChange => {
52
56
  this.open = openChange;
53
- // The timeout in used because when this executes, the input isn't displayed.
54
- setTimeout(() => {
55
- this.domAdapter.focus(this.input.nativeElement);
57
+ // Note: this is being run outside of the Angular zone because `element.focus()` doesn't require
58
+ // running change detection.
59
+ this.ngZone.runOutsideAngular(() => {
60
+ // The animation frame in used because when this executes, the input isn't displayed.
61
+ // Note: `element.focus()` causes re-layout and this may lead to frame drop on slower devices.
62
+ // `setTimeout` is a macrotask and macrotasks are executed within the current rendering frame.
63
+ // Animation tasks are executed within the next rendering frame.
64
+ requestAnimationFrame(() => {
65
+ this.domAdapter.focus(this.input.nativeElement);
66
+ });
56
67
  });
57
68
  }));
58
69
  }
@@ -81,8 +92,8 @@ export class DatagridStringFilter extends DatagridFilterRegistrar {
81
92
  }
82
93
  }
83
94
  }
84
- DatagridStringFilter.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: DatagridStringFilter, deps: [{ token: i1.FiltersProvider }, { token: i2.DomAdapter }, { token: i3.ClrCommonStringsService }, { token: i4.ClrPopoverToggleService }], target: i0.ɵɵFactoryTarget.Component });
85
- DatagridStringFilter.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.3", type: DatagridStringFilter, selector: "clr-dg-string-filter", inputs: { customStringFilter: ["clrDgStringFilter", "customStringFilter"], value: ["clrFilterValue", "value"] }, outputs: { filterValueChange: "clrFilterValueChange" }, providers: [{ provide: CustomFilter, useExisting: DatagridStringFilter }], viewQueries: [{ propertyName: "input", first: true, predicate: ["input"], descendants: true }, { propertyName: "filterContainer", first: true, predicate: ClrDatagridFilter, descendants: true }], usesInheritance: true, ngImport: i0, template: `
95
+ DatagridStringFilter.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: DatagridStringFilter, deps: [{ token: i1.FiltersProvider }, { token: i2.DomAdapter }, { token: i3.ClrCommonStringsService }, { token: i4.ClrPopoverToggleService }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component });
96
+ DatagridStringFilter.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.3", type: DatagridStringFilter, selector: "clr-dg-string-filter", inputs: { placeholder: ["clrFilterPlaceholder", "placeholder"], customStringFilter: ["clrDgStringFilter", "customStringFilter"], value: ["clrFilterValue", "value"] }, outputs: { filterValueChange: "clrFilterValueChange" }, providers: [{ provide: CustomFilter, useExisting: DatagridStringFilter }], viewQueries: [{ propertyName: "input", first: true, predicate: ["input"], descendants: true }, { propertyName: "filterContainer", first: true, predicate: ClrDatagridFilter, descendants: true }], usesInheritance: true, ngImport: i0, template: `
86
97
  <clr-dg-filter [clrDgFilter]="registered" [(clrDgFilterOpen)]="open">
87
98
  <input
88
99
  #input
@@ -90,8 +101,8 @@ DatagridStringFilter.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", v
90
101
  name="search"
91
102
  [(ngModel)]="value"
92
103
  class="clr-input"
93
- [attr.aria-label]="commonStrings.keys.filterItems"
94
- [placeholder]="commonStrings.keys.filterItems"
104
+ [attr.aria-label]="placeholderValue"
105
+ [placeholder]="placeholderValue"
95
106
  />
96
107
  </clr-dg-filter>
97
108
  `, isInline: true, components: [{ type: i5.ClrDatagridFilter, selector: "clr-dg-filter", inputs: ["clrDgFilterOpen", "clrDgFilter"], outputs: ["clrDgFilterOpenChange"] }], directives: [{ type: i6.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { type: i6.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i6.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }] });
@@ -108,13 +119,16 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImpor
108
119
  name="search"
109
120
  [(ngModel)]="value"
110
121
  class="clr-input"
111
- [attr.aria-label]="commonStrings.keys.filterItems"
112
- [placeholder]="commonStrings.keys.filterItems"
122
+ [attr.aria-label]="placeholderValue"
123
+ [placeholder]="placeholderValue"
113
124
  />
114
125
  </clr-dg-filter>
115
126
  `,
116
127
  }]
117
- }], ctorParameters: function () { return [{ type: i1.FiltersProvider }, { type: i2.DomAdapter }, { type: i3.ClrCommonStringsService }, { type: i4.ClrPopoverToggleService }]; }, propDecorators: { customStringFilter: [{
128
+ }], ctorParameters: function () { return [{ type: i1.FiltersProvider }, { type: i2.DomAdapter }, { type: i3.ClrCommonStringsService }, { type: i4.ClrPopoverToggleService }, { type: i0.NgZone }]; }, propDecorators: { placeholder: [{
129
+ type: Input,
130
+ args: ['clrFilterPlaceholder']
131
+ }], customStringFilter: [{
118
132
  type: Input,
119
133
  args: ['clrDgStringFilter']
120
134
  }], input: [{
@@ -130,4 +144,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImpor
130
144
  type: Output,
131
145
  args: ['clrFilterValueChange']
132
146
  }] } });
133
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YWdyaWQtc3RyaW5nLWZpbHRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FuZ3VsYXIvc3JjL2RhdGEvZGF0YWdyaWQvYnVpbHQtaW4vZmlsdGVycy9kYXRhZ3JpZC1zdHJpbmctZmlsdGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7O0dBSUc7QUFFSCxPQUFPLEVBQWlCLFNBQVMsRUFBYyxZQUFZLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQWEsTUFBTSxlQUFlLENBQUM7QUFFeEgsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFFMUQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQzdELE9BQU8sRUFBbUIsZ0JBQWdCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUU1RSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQztBQUdoRixPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQzs7Ozs7Ozs7QUFvQnpFLE1BQU0sT0FBTyxvQkFDWCxTQUFRLHVCQUF1RDtJQUkvRCxZQUNFLE9BQTJCLEVBQ25CLFVBQXNCLEVBQ3ZCLGFBQXNDLEVBQ3JDLGtCQUEyQztRQUVuRCxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUM7UUFKUCxlQUFVLEdBQVYsVUFBVSxDQUFZO1FBQ3ZCLGtCQUFhLEdBQWIsYUFBYSxDQUF5QjtRQUNyQyx1QkFBa0IsR0FBbEIsa0JBQWtCLENBQXlCO1FBTDdDLFNBQUksR0FBbUIsRUFBRSxDQUFDO1FBK0JsQzs7V0FFRztRQUNJLFNBQUksR0FBRyxLQUFLLENBQUM7UUFtRFksc0JBQWlCLEdBQUcsSUFBSSxZQUFZLEVBQUUsQ0FBQztJQTdFdkUsQ0FBQztJQUVEOztPQUVHO0lBQ0gsSUFDSSxrQkFBa0IsQ0FDcEIsS0FBNkY7UUFFN0YsSUFBSSxLQUFLLFlBQVksZ0JBQWdCLEVBQUU7WUFDckMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsQ0FBQztTQUN2QjthQUFNO1lBQ0wsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLHdCQUF3QixDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7U0FDckQ7UUFDRCxJQUFJLElBQUksQ0FBQyxlQUFlLEVBQUU7WUFDeEIsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDO1lBQ2xDLDhFQUE4RTtZQUM5RSxzRUFBc0U7WUFDdEUsbURBQW1EO1lBQ25ELE9BQU8sSUFBSSxDQUFDLGVBQWUsQ0FBQztTQUM3QjtJQUNILENBQUM7SUFnQkQsZUFBZTtRQUNiLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUNaLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxVQUFVLENBQUMsU0FBUyxDQUFDLFVBQVUsQ0FBQyxFQUFFO1lBQ3hELElBQUksQ0FBQyxJQUFJLEdBQUcsVUFBVSxDQUFDO1lBQ3ZCLDZFQUE2RTtZQUM3RSxVQUFVLENBQUMsR0FBRyxFQUFFO2dCQUNkLElBQUksQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsYUFBYSxDQUFDLENBQUM7WUFDbEQsQ0FBQyxDQUFDLENBQUM7UUFDTCxDQUFDLENBQUMsQ0FDSCxDQUFDO0lBQ0osQ0FBQztJQUVELFdBQVc7UUFDVCxLQUFLLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDcEIsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQztJQUM5QyxDQUFDO0lBSUQ7O09BRUc7SUFDSCxJQUFXLEtBQUs7UUFDZCxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDO0lBQzNCLENBQUM7SUFDRCxJQUNXLEtBQUssQ0FBQyxLQUFhO1FBQzVCLElBQUksSUFBSSxDQUFDLE1BQU0sSUFBSSxPQUFPLEtBQUssS0FBSyxRQUFRLEVBQUU7WUFDNUMsSUFBSSxDQUFDLEtBQUssRUFBRTtnQkFDVixLQUFLLEdBQUcsRUFBRSxDQUFDO2FBQ1o7WUFDRCxJQUFJLEtBQUssS0FBSyxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssRUFBRTtnQkFDL0IsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO2dCQUMxQixJQUFJLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO2FBQ3BDO1NBQ0Y7YUFBTTtZQUNMLElBQUksQ0FBQyxlQUFlLEdBQUcsS0FBSyxDQUFDO1NBQzlCO0lBQ0gsQ0FBQzs7aUhBdkZVLG9CQUFvQjtxR0FBcEIsb0JBQW9CLHdOQWZwQixDQUFDLEVBQUUsT0FBTyxFQUFFLFlBQVksRUFBRSxXQUFXLEVBQUUsb0JBQW9CLEVBQUUsQ0FBQyw0SkErRDlELGlCQUFpQix1RUE5RGxCOzs7Ozs7Ozs7Ozs7R0FZVDsyRkFFVSxvQkFBb0I7a0JBakJoQyxTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSxzQkFBc0I7b0JBQ2hDLFNBQVMsRUFBRSxDQUFDLEVBQUUsT0FBTyxFQUFFLFlBQVksRUFBRSxXQUFXLHNCQUFzQixFQUFFLENBQUM7b0JBQ3pFLFFBQVEsRUFBRTs7Ozs7Ozs7Ozs7O0dBWVQ7aUJBQ0Y7Mk1BbUJLLGtCQUFrQjtzQkFEckIsS0FBSzt1QkFBQyxtQkFBbUI7Z0JBMEJDLEtBQUs7c0JBQS9CLFNBQVM7dUJBQUMsT0FBTztnQkFLbUIsZUFBZTtzQkFBbkQsU0FBUzt1QkFBQyxpQkFBaUI7Z0JBMkJqQixLQUFLO3NCQURmLEtBQUs7dUJBQUMsZ0JBQWdCO2dCQWVTLGlCQUFpQjtzQkFBaEQsTUFBTTt1QkFBQyxzQkFBc0IiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogQ29weXJpZ2h0IChjKSAyMDE2LTIwMjIgVk13YXJlLCBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKiBUaGlzIHNvZnR3YXJlIGlzIHJlbGVhc2VkIHVuZGVyIE1JVCBsaWNlbnNlLlxuICogVGhlIGZ1bGwgbGljZW5zZSBpbmZvcm1hdGlvbiBjYW4gYmUgZm91bmQgaW4gTElDRU5TRSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBwcm9qZWN0LlxuICovXG5cbmltcG9ydCB7IEFmdGVyVmlld0luaXQsIENvbXBvbmVudCwgRWxlbWVudFJlZiwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT3V0cHV0LCBWaWV3Q2hpbGQsIE9uRGVzdHJveSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBDbHJEYXRhZ3JpZEZpbHRlciB9IGZyb20gJy4uLy4uL2RhdGFncmlkLWZpbHRlcic7XG5pbXBvcnQgeyBDbHJEYXRhZ3JpZFN0cmluZ0ZpbHRlckludGVyZmFjZSB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMvc3RyaW5nLWZpbHRlci5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgQ3VzdG9tRmlsdGVyIH0gZnJvbSAnLi4vLi4vcHJvdmlkZXJzL2N1c3RvbS1maWx0ZXInO1xuaW1wb3J0IHsgRmlsdGVyc1Byb3ZpZGVyLCBSZWdpc3RlcmVkRmlsdGVyIH0gZnJvbSAnLi4vLi4vcHJvdmlkZXJzL2ZpbHRlcnMnO1xuaW1wb3J0IHsgRG9tQWRhcHRlciB9IGZyb20gJy4uLy4uLy4uLy4uL3V0aWxzL2RvbS1hZGFwdGVyL2RvbS1hZGFwdGVyJztcbmltcG9ydCB7IERhdGFncmlkRmlsdGVyUmVnaXN0cmFyIH0gZnJvbSAnLi4vLi4vdXRpbHMvZGF0YWdyaWQtZmlsdGVyLXJlZ2lzdHJhcic7XG5pbXBvcnQgeyBDbHJDb21tb25TdHJpbmdzU2VydmljZSB9IGZyb20gJy4uLy4uLy4uLy4uL3V0aWxzL2kxOG4vY29tbW9uLXN0cmluZ3Muc2VydmljZSc7XG5cbmltcG9ydCB7IERhdGFncmlkU3RyaW5nRmlsdGVySW1wbCB9IGZyb20gJy4vZGF0YWdyaWQtc3RyaW5nLWZpbHRlci1pbXBsJztcbmltcG9ydCB7IENsclBvcG92ZXJUb2dnbGVTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vLi4vdXRpbHMvcG9wb3Zlci9wcm92aWRlcnMvcG9wb3Zlci10b2dnbGUuc2VydmljZSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2Nsci1kZy1zdHJpbmctZmlsdGVyJyxcbiAgcHJvdmlkZXJzOiBbeyBwcm92aWRlOiBDdXN0b21GaWx0ZXIsIHVzZUV4aXN0aW5nOiBEYXRhZ3JpZFN0cmluZ0ZpbHRlciB9XSxcbiAgdGVtcGxhdGU6IGBcbiAgICA8Y2xyLWRnLWZpbHRlciBbY2xyRGdGaWx0ZXJdPVwicmVnaXN0ZXJlZFwiIFsoY2xyRGdGaWx0ZXJPcGVuKV09XCJvcGVuXCI+XG4gICAgICA8aW5wdXRcbiAgICAgICAgI2lucHV0XG4gICAgICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICAgICAgbmFtZT1cInNlYXJjaFwiXG4gICAgICAgIFsobmdNb2RlbCldPVwidmFsdWVcIlxuICAgICAgICBjbGFzcz1cImNsci1pbnB1dFwiXG4gICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiY29tbW9uU3RyaW5ncy5rZXlzLmZpbHRlckl0ZW1zXCJcbiAgICAgICAgW3BsYWNlaG9sZGVyXT1cImNvbW1vblN0cmluZ3Mua2V5cy5maWx0ZXJJdGVtc1wiXG4gICAgICAvPlxuICAgIDwvY2xyLWRnLWZpbHRlcj5cbiAgYCxcbn0pXG5leHBvcnQgY2xhc3MgRGF0YWdyaWRTdHJpbmdGaWx0ZXI8VCA9IGFueT5cbiAgZXh0ZW5kcyBEYXRhZ3JpZEZpbHRlclJlZ2lzdHJhcjxULCBEYXRhZ3JpZFN0cmluZ0ZpbHRlckltcGw8VD4+XG4gIGltcGxlbWVudHMgQ3VzdG9tRmlsdGVyLCBBZnRlclZpZXdJbml0LCBPbkRlc3Ryb3lcbntcbiAgcHJpdmF0ZSBzdWJzOiBTdWJzY3JpcHRpb25bXSA9IFtdO1xuICBjb25zdHJ1Y3RvcihcbiAgICBmaWx0ZXJzOiBGaWx0ZXJzUHJvdmlkZXI8VD4sXG4gICAgcHJpdmF0ZSBkb21BZGFwdGVyOiBEb21BZGFwdGVyLFxuICAgIHB1YmxpYyBjb21tb25TdHJpbmdzOiBDbHJDb21tb25TdHJpbmdzU2VydmljZSxcbiAgICBwcml2YXRlIHNtYXJ0VG9nZ2xlU2VydmljZTogQ2xyUG9wb3ZlclRvZ2dsZVNlcnZpY2VcbiAgKSB7XG4gICAgc3VwZXIoZmlsdGVycyk7XG4gIH1cblxuICAvKipcbiAgICogQ3VzdG9taXphYmxlIGZpbHRlciBsb2dpYyBiYXNlZCBvbiBhIHNlYXJjaCB0ZXh0XG4gICAqL1xuICBASW5wdXQoJ2NsckRnU3RyaW5nRmlsdGVyJylcbiAgc2V0IGN1c3RvbVN0cmluZ0ZpbHRlcihcbiAgICB2YWx1ZTogQ2xyRGF0YWdyaWRTdHJpbmdGaWx0ZXJJbnRlcmZhY2U8VD4gfCBSZWdpc3RlcmVkRmlsdGVyPFQsIERhdGFncmlkU3RyaW5nRmlsdGVySW1wbDxUPj5cbiAgKSB7XG4gICAgaWYgKHZhbHVlIGluc3RhbmNlb2YgUmVnaXN0ZXJlZEZpbHRlcikge1xuICAgICAgdGhpcy5zZXRGaWx0ZXIodmFsdWUpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnNldEZpbHRlcihuZXcgRGF0YWdyaWRTdHJpbmdGaWx0ZXJJbXBsKHZhbHVlKSk7XG4gICAgfVxuICAgIGlmICh0aGlzLmluaXRGaWx0ZXJWYWx1ZSkge1xuICAgICAgdGhpcy52YWx1ZSA9IHRoaXMuaW5pdEZpbHRlclZhbHVlO1xuICAgICAgLy8gVGhpcyBpbml0RmlsdGVyVmFsdWUgc2hvdWxkIGJlIHVzZWQgb25seSBvbmNlIGFmdGVyIHRoZSBmaWx0ZXIgcmVnaXN0cmF0aW9uXG4gICAgICAvLyBTbyBkZWxldGluZyB0aGlzIHByb3BlcnR5IHZhbHVlIHRvIHByZXZlbnQgaXQgZnJvbSBiZWluZyB1c2VkIGFnYWluXG4gICAgICAvLyBpZiB0aGlzIGN1c3RvbVN0cmluZ0ZpbHRlciBwcm9wZXJ0eSBpcyBzZXQgYWdhaW5cbiAgICAgIGRlbGV0ZSB0aGlzLmluaXRGaWx0ZXJWYWx1ZTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogSW5kaWNhdGVzIGlmIHRoZSBmaWx0ZXIgZHJvcGRvd24gaXMgb3BlblxuICAgKi9cbiAgcHVibGljIG9wZW4gPSBmYWxzZTtcblxuICAvKipcbiAgICogV2UgbmVlZCB0aGUgYWN0dWFsIGlucHV0IGVsZW1lbnQgdG8gYXV0b21hdGljYWxseSBmb2N1cyBvbiBpdFxuICAgKi9cbiAgQFZpZXdDaGlsZCgnaW5wdXQnKSBwdWJsaWMgaW5wdXQ6IEVsZW1lbnRSZWY7XG5cbiAgLyoqXG4gICAqIFdlIGdyYWIgdGhlIENsckRhdGFncmlkRmlsdGVyIHdlIHdyYXAgdG8gcmVnaXN0ZXIgdGhpcyBTdHJpbmdGaWx0ZXIgdG8gaXQuXG4gICAqL1xuICBAVmlld0NoaWxkKENsckRhdGFncmlkRmlsdGVyKSBwdWJsaWMgZmlsdGVyQ29udGFpbmVyOiBDbHJEYXRhZ3JpZEZpbHRlcjxUPjtcbiAgbmdBZnRlclZpZXdJbml0KCkge1xuICAgIHRoaXMuc3Vicy5wdXNoKFxuICAgICAgdGhpcy5zbWFydFRvZ2dsZVNlcnZpY2Uub3BlbkNoYW5nZS5zdWJzY3JpYmUob3BlbkNoYW5nZSA9PiB7XG4gICAgICAgIHRoaXMub3BlbiA9IG9wZW5DaGFuZ2U7XG4gICAgICAgIC8vIFRoZSB0aW1lb3V0IGluIHVzZWQgYmVjYXVzZSB3aGVuIHRoaXMgZXhlY3V0ZXMsIHRoZSBpbnB1dCBpc24ndCBkaXNwbGF5ZWQuXG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgIHRoaXMuZG9tQWRhcHRlci5mb2N1cyh0aGlzLmlucHV0Lm5hdGl2ZUVsZW1lbnQpO1xuICAgICAgICB9KTtcbiAgICAgIH0pXG4gICAgKTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHN1cGVyLm5nT25EZXN0cm95KCk7XG4gICAgdGhpcy5zdWJzLmZvckVhY2goc3ViID0+IHN1Yi51bnN1YnNjcmliZSgpKTtcbiAgfVxuXG4gIHByaXZhdGUgaW5pdEZpbHRlclZhbHVlOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIENvbW1vbiBzZXR0ZXIgZm9yIHRoZSBpbnB1dCB2YWx1ZVxuICAgKi9cbiAgcHVibGljIGdldCB2YWx1ZSgpIHtcbiAgICByZXR1cm4gdGhpcy5maWx0ZXIudmFsdWU7XG4gIH1cbiAgQElucHV0KCdjbHJGaWx0ZXJWYWx1ZScpXG4gIHB1YmxpYyBzZXQgdmFsdWUodmFsdWU6IHN0cmluZykge1xuICAgIGlmICh0aGlzLmZpbHRlciAmJiB0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnKSB7XG4gICAgICBpZiAoIXZhbHVlKSB7XG4gICAgICAgIHZhbHVlID0gJyc7XG4gICAgICB9XG4gICAgICBpZiAodmFsdWUgIT09IHRoaXMuZmlsdGVyLnZhbHVlKSB7XG4gICAgICAgIHRoaXMuZmlsdGVyLnZhbHVlID0gdmFsdWU7XG4gICAgICAgIHRoaXMuZmlsdGVyVmFsdWVDaGFuZ2UuZW1pdCh2YWx1ZSk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuaW5pdEZpbHRlclZhbHVlID0gdmFsdWU7XG4gICAgfVxuICB9XG5cbiAgQE91dHB1dCgnY2xyRmlsdGVyVmFsdWVDaGFuZ2UnKSBmaWx0ZXJWYWx1ZUNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbn1cbiJdfQ==
147
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YWdyaWQtc3RyaW5nLWZpbHRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FuZ3VsYXIvc3JjL2RhdGEvZGF0YWdyaWQvYnVpbHQtaW4vZmlsdGVycy9kYXRhZ3JpZC1zdHJpbmctZmlsdGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7O0dBSUc7QUFFSCxPQUFPLEVBRUwsU0FBUyxFQUVULFlBQVksRUFDWixLQUFLLEVBQ0wsTUFBTSxFQUNOLFNBQVMsR0FHVixNQUFNLGVBQWUsQ0FBQztBQUV2QixPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUUxRCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDN0QsT0FBTyxFQUFtQixnQkFBZ0IsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBRTVFLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLHVDQUF1QyxDQUFDO0FBR2hGLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLCtCQUErQixDQUFDOzs7Ozs7OztBQW9CekUsTUFBTSxPQUFPLG9CQUNYLFNBQVEsdUJBQXVEO0lBSS9ELFlBQ0UsT0FBMkIsRUFDbkIsVUFBc0IsRUFDdkIsYUFBc0MsRUFDckMsa0JBQTJDLEVBQzNDLE1BQWM7UUFFdEIsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBTFAsZUFBVSxHQUFWLFVBQVUsQ0FBWTtRQUN2QixrQkFBYSxHQUFiLGFBQWEsQ0FBeUI7UUFDckMsdUJBQWtCLEdBQWxCLGtCQUFrQixDQUF5QjtRQUMzQyxXQUFNLEdBQU4sTUFBTSxDQUFRO1FBTmhCLFNBQUksR0FBbUIsRUFBRSxDQUFDO1FBeUNsQzs7V0FFRztRQUNJLFNBQUksR0FBRyxLQUFLLENBQUM7UUEyRFksc0JBQWlCLEdBQUcsSUFBSSxZQUFZLEVBQUUsQ0FBQztJQTlGdkUsQ0FBQztJQU9ELElBQUksZ0JBQWdCO1FB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c0JBRHJCLEtBQUs7dUJBQUMsbUJBQW1CO2dCQTBCQyxLQUFLO3NCQUEvQixTQUFTO3VCQUFDLE9BQU87Z0JBS21CLGVBQWU7c0JBQW5ELFNBQVM7dUJBQUMsaUJBQWlCO2dCQW1DakIsS0FBSztzQkFEZixLQUFLO3VCQUFDLGdCQUFnQjtnQkFlUyxpQkFBaUI7c0JBQWhELE1BQU07dUJBQUMsc0JBQXNCIiwic291cmNlc0NvbnRlbnQiOlsiLypcbiAqIENvcHlyaWdodCAoYykgMjAxNi0yMDIyIFZNd2FyZSwgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICogVGhpcyBzb2Z0d2FyZSBpcyByZWxlYXNlZCB1bmRlciBNSVQgbGljZW5zZS5cbiAqIFRoZSBmdWxsIGxpY2Vuc2UgaW5mb3JtYXRpb24gY2FuIGJlIGZvdW5kIGluIExJQ0VOU0UgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgcHJvamVjdC5cbiAqL1xuXG5pbXBvcnQge1xuICBBZnRlclZpZXdJbml0LFxuICBDb21wb25lbnQsXG4gIEVsZW1lbnRSZWYsXG4gIEV2ZW50RW1pdHRlcixcbiAgSW5wdXQsXG4gIE91dHB1dCxcbiAgVmlld0NoaWxkLFxuICBPbkRlc3Ryb3ksXG4gIE5nWm9uZSxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IENsckRhdGFncmlkRmlsdGVyIH0gZnJvbSAnLi4vLi4vZGF0YWdyaWQtZmlsdGVyJztcbmltcG9ydCB7IENsckRhdGFncmlkU3RyaW5nRmlsdGVySW50ZXJmYWNlIH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcy9zdHJpbmctZmlsdGVyLmludGVyZmFjZSc7XG5pbXBvcnQgeyBDdXN0b21GaWx0ZXIgfSBmcm9tICcuLi8uLi9wcm92aWRlcnMvY3VzdG9tLWZpbHRlcic7XG5pbXBvcnQgeyBGaWx0ZXJzUHJvdmlkZXIsIFJlZ2lzdGVyZWRGaWx0ZXIgfSBmcm9tICcuLi8uLi9wcm92aWRlcnMvZmlsdGVycyc7XG5pbXBvcnQgeyBEb21BZGFwdGVyIH0gZnJvbSAnLi4vLi4vLi4vLi4vdXRpbHMvZG9tLWFkYXB0ZXIvZG9tLWFkYXB0ZXInO1xuaW1wb3J0IHsgRGF0YWdyaWRGaWx0ZXJSZWdpc3RyYXIgfSBmcm9tICcuLi8uLi91dGlscy9kYXRhZ3JpZC1maWx0ZXItcmVnaXN0cmFyJztcbmltcG9ydCB7IENsckNvbW1vblN0cmluZ3NTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vLi4vdXRpbHMvaTE4bi9jb21tb24tc3RyaW5ncy5zZXJ2aWNlJztcblxuaW1wb3J0IHsgRGF0YWdyaWRTdHJpbmdGaWx0ZXJJbXBsIH0gZnJvbSAnLi9kYXRhZ3JpZC1zdHJpbmctZmlsdGVyLWltcGwnO1xuaW1wb3J0IHsgQ2xyUG9wb3ZlclRvZ2dsZVNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi8uLi91dGlscy9wb3BvdmVyL3Byb3ZpZGVycy9wb3BvdmVyLXRvZ2dsZS5zZXJ2aWNlJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnY2xyLWRnLXN0cmluZy1maWx0ZXInLFxuICBwcm92aWRlcnM6IFt7IHByb3ZpZGU6IEN1c3RvbUZpbHRlciwgdXNlRXhpc3Rpbmc6IERhdGFncmlkU3RyaW5nRmlsdGVyIH1dLFxuICB0ZW1wbGF0ZTogYFxuICAgIDxjbHItZGctZmlsdGVyIFtjbHJEZ0ZpbHRlcl09XCJyZWdpc3RlcmVkXCIgWyhjbHJEZ0ZpbHRlck9wZW4pXT1cIm9wZW5cIj5cbiAgICAgIDxpbnB1dFxuICAgICAgICAjaW5wdXRcbiAgICAgICAgdHlwZT1cInRleHRcIlxuICAgICAgICBuYW1lPVwic2VhcmNoXCJcbiAgICAgICAgWyhuZ01vZGVsKV09XCJ2YWx1ZVwiXG4gICAgICAgIGNsYXNzPVwiY2xyLWlucHV0XCJcbiAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJwbGFjZWhvbGRlclZhbHVlXCJcbiAgICAgICAgW3BsYWNlaG9sZGVyXT1cInBsYWNlaG9sZGVyVmFsdWVcIlxuICAgICAgLz5cbiAgICA8L2Nsci1kZy1maWx0ZXI+XG4gIGAsXG59KVxuZXhwb3J0IGNsYXNzIERhdGFncmlkU3RyaW5nRmlsdGVyPFQgPSBhbnk+XG4gIGV4dGVuZHMgRGF0YWdyaWRGaWx0ZXJSZWdpc3RyYXI8VCwgRGF0YWdyaWRTdHJpbmdGaWx0ZXJJbXBsPFQ+PlxuICBpbXBsZW1lbnRzIEN1c3RvbUZpbHRlciwgQWZ0ZXJWaWV3SW5pdCwgT25EZXN0cm95XG57XG4gIHByaXZhdGUgc3ViczogU3Vic2NyaXB0aW9uW10gPSBbXTtcbiAgY29uc3RydWN0b3IoXG4gICAgZmlsdGVyczogRmlsdGVyc1Byb3ZpZGVyPFQ+LFxuICAgIHByaXZhdGUgZG9tQWRhcHRlcjogRG9tQWRhcHRlcixcbiAgICBwdWJsaWMgY29tbW9uU3RyaW5nczogQ2xyQ29tbW9uU3RyaW5nc1NlcnZpY2UsXG4gICAgcHJpdmF0ZSBzbWFydFRvZ2dsZVNlcnZpY2U6IENsclBvcG92ZXJUb2dnbGVTZXJ2aWNlLFxuICAgIHByaXZhdGUgbmdab25lOiBOZ1pvbmVcbiAgKSB7XG4gICAgc3VwZXIoZmlsdGVycyk7XG4gIH1cblxuICAvKipcbiAgICogUHJvdmlkZSBhIHdheSB0byBwYXNzIGV4dGVybmFsIHBsYWNlaG9sZGVyIGFuZCBhcmlhLWxhYmVsIHRvIHRoZSBmaWx0ZXIgaW5wdXRcbiAgICovXG4gIEBJbnB1dCgnY2xyRmlsdGVyUGxhY2Vob2xkZXInKSBwbGFjZWhvbGRlcjogc3RyaW5nO1xuXG4gIGdldCBwbGFjZWhvbGRlclZhbHVlKCkge1xuICAgIHJldHVybiB0aGlzLnBsYWNlaG9sZGVyIHx8IHRoaXMuY29tbW9uU3RyaW5ncy5rZXlzLmZpbHRlckl0ZW1zO1xuICB9XG5cbiAgLyoqXG4gICAqIEN1c3RvbWl6YWJsZSBmaWx0ZXIgbG9naWMgYmFzZWQgb24gYSBzZWFyY2ggdGV4dFxuICAgKi9cbiAgQElucHV0KCdjbHJEZ1N0cmluZ0ZpbHRlcicpXG4gIHNldCBjdXN0b21TdHJpbmdGaWx0ZXIoXG4gICAgdmFsdWU6IENsckRhdGFncmlkU3RyaW5nRmlsdGVySW50ZXJmYWNlPFQ+IHwgUmVnaXN0ZXJlZEZpbHRlcjxULCBEYXRhZ3JpZFN0cmluZ0ZpbHRlckltcGw8VD4+XG4gICkge1xuICAgIGlmICh2YWx1ZSBpbnN0YW5jZW9mIFJlZ2lzdGVyZWRGaWx0ZXIpIHtcbiAgICAgIHRoaXMuc2V0RmlsdGVyKHZhbHVlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5zZXRGaWx0ZXIobmV3IERhdGFncmlkU3RyaW5nRmlsdGVySW1wbCh2YWx1ZSkpO1xuICAgIH1cbiAgICBpZiAodGhpcy5pbml0RmlsdGVyVmFsdWUpIHtcbiAgICAgIHRoaXMudmFsdWUgPSB0aGlzLmluaXRGaWx0ZXJWYWx1ZTtcbiAgICAgIC8vIFRoaXMgaW5pdEZpbHRlclZhbHVlIHNob3VsZCBiZSB1c2VkIG9ubHkgb25jZSBhZnRlciB0aGUgZmlsdGVyIHJlZ2lzdHJhdGlvblxuICAgICAgLy8gU28gZGVsZXRpbmcgdGhpcyBwcm9wZXJ0eSB2YWx1ZSB0byBwcmV2ZW50IGl0IGZyb20gYmVpbmcgdXNlZCBhZ2FpblxuICAgICAgLy8gaWYgdGhpcyBjdXN0b21TdHJpbmdGaWx0ZXIgcHJvcGVydHkgaXMgc2V0IGFnYWluXG4gICAgICBkZWxldGUgdGhpcy5pbml0RmlsdGVyVmFsdWU7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEluZGljYXRlcyBpZiB0aGUgZmlsdGVyIGRyb3Bkb3duIGlzIG9wZW5cbiAgICovXG4gIHB1YmxpYyBvcGVuID0gZmFsc2U7XG5cbiAgLyoqXG4gICAqIFdlIG5lZWQgdGhlIGFjdHVhbCBpbnB1dCBlbGVtZW50IHRvIGF1dG9tYXRpY2FsbHkgZm9jdXMgb24gaXRcbiAgICovXG4gIEBWaWV3Q2hpbGQoJ2lucHV0JykgcHVibGljIGlucHV0OiBFbGVtZW50UmVmO1xuXG4gIC8qKlxuICAgKiBXZSBncmFiIHRoZSBDbHJEYXRhZ3JpZEZpbHRlciB3ZSB3cmFwIHRvIHJlZ2lzdGVyIHRoaXMgU3RyaW5nRmlsdGVyIHRvIGl0LlxuICAgKi9cbiAgQFZpZXdDaGlsZChDbHJEYXRhZ3JpZEZpbHRlcikgcHVibGljIGZpbHRlckNvbnRhaW5lcjogQ2xyRGF0YWdyaWRGaWx0ZXI8VD47XG5cbiAgbmdBZnRlclZpZXdJbml0KCkge1xuICAgIHRoaXMuc3Vicy5wdXNoKFxuICAgICAgdGhpcy5zbWFydFRvZ2dsZVNlcnZpY2Uub3BlbkNoYW5nZS5zdWJzY3JpYmUob3BlbkNoYW5nZSA9PiB7XG4gICAgICAgIHRoaXMub3BlbiA9IG9wZW5DaGFuZ2U7XG4gICAgICAgIC8vIE5vdGU6IHRoaXMgaXMgYmVpbmcgcnVuIG91dHNpZGUgb2YgdGhlIEFuZ3VsYXIgem9uZSBiZWNhdXNlIGBlbGVtZW50LmZvY3VzKClgIGRvZXNuJ3QgcmVxdWlyZVxuICAgICAgICAvLyBydW5uaW5nIGNoYW5nZSBkZXRlY3Rpb24uXG4gICAgICAgIHRoaXMubmdab25lLnJ1bk91dHNpZGVBbmd1bGFyKCgpID0+IHtcbiAgICAgICAgICAvLyBUaGUgYW5pbWF0aW9uIGZyYW1lIGluIHVzZWQgYmVjYXVzZSB3aGVuIHRoaXMgZXhlY3V0ZXMsIHRoZSBpbnB1dCBpc24ndCBkaXNwbGF5ZWQuXG4gICAgICAgICAgLy8gTm90ZTogYGVsZW1lbnQuZm9jdXMoKWAgY2F1c2VzIHJlLWxheW91dCBhbmQgdGhpcyBtYXkgbGVhZCB0byBmcmFtZSBkcm9wIG9uIHNsb3dlciBkZXZpY2VzLlxuICAgICAgICAgIC8vIGBzZXRUaW1lb3V0YCBpcyBhIG1hY3JvdGFzayBhbmQgbWFjcm90YXNrcyBhcmUgZXhlY3V0ZWQgd2l0aGluIHRoZSBjdXJyZW50IHJlbmRlcmluZyBmcmFtZS5cbiAgICAgICAgICAvLyBBbmltYXRpb24gdGFza3MgYXJlIGV4ZWN1dGVkIHdpdGhpbiB0aGUgbmV4dCByZW5kZXJpbmcgZnJhbWUuXG4gICAgICAgICAgcmVxdWVzdEFuaW1hdGlvbkZyYW1lKCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuZG9tQWRhcHRlci5mb2N1cyh0aGlzLmlucHV0Lm5hdGl2ZUVsZW1lbnQpO1xuICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICAgIH0pXG4gICAgKTtcbiAgfVxuXG4gIG92ZXJyaWRlIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHN1cGVyLm5nT25EZXN0cm95KCk7XG4gICAgdGhpcy5zdWJzLmZvckVhY2goc3ViID0+IHN1Yi51bnN1YnNjcmliZSgpKTtcbiAgfVxuXG4gIHByaXZhdGUgaW5pdEZpbHRlclZhbHVlOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIENvbW1vbiBzZXR0ZXIgZm9yIHRoZSBpbnB1dCB2YWx1ZVxuICAgKi9cbiAgcHVibGljIGdldCB2YWx1ZSgpIHtcbiAgICByZXR1cm4gdGhpcy5maWx0ZXIudmFsdWU7XG4gIH1cbiAgQElucHV0KCdjbHJGaWx0ZXJWYWx1ZScpXG4gIHB1YmxpYyBzZXQgdmFsdWUodmFsdWU6IHN0cmluZykge1xuICAgIGlmICh0aGlzLmZpbHRlciAmJiB0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnKSB7XG4gICAgICBpZiAoIXZhbHVlKSB7XG4gICAgICAgIHZhbHVlID0gJyc7XG4gICAgICB9XG4gICAgICBpZiAodmFsdWUgIT09IHRoaXMuZmlsdGVyLnZhbHVlKSB7XG4gICAgICAgIHRoaXMuZmlsdGVyLnZhbHVlID0gdmFsdWU7XG4gICAgICAgIHRoaXMuZmlsdGVyVmFsdWVDaGFuZ2UuZW1pdCh2YWx1ZSk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuaW5pdEZpbHRlclZhbHVlID0gdmFsdWU7XG4gICAgfVxuICB9XG5cbiAgQE91dHB1dCgnY2xyRmlsdGVyVmFsdWVDaGFuZ2UnKSBmaWx0ZXJWYWx1ZUNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbn1cbiJdfQ==
@@ -112,7 +112,9 @@ ClrDatagridColumnToggle.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0"
112
112
  >
113
113
  <div class="switch-header">
114
114
  <div class="clr-sr-only" tabindex="-1" #allSelected>{{ commonStrings.keys.allColumnsSelected }}</div>
115
- <ng-container *ngIf="!customToggleTitle">{{ commonStrings.keys.showColumns }}</ng-container>
115
+ <ng-container *ngIf="!customToggleTitle">
116
+ <h2>{{ commonStrings.keys.showColumns }}</h2>
117
+ </ng-container>
116
118
  <ng-content select="clr-dg-column-toggle-title"></ng-content>
117
119
  <button
118
120
  class="btn btn-sm btn-link toggle-switch-close-button"
@@ -176,7 +178,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImpor
176
178
  >
177
179
  <div class="switch-header">
178
180
  <div class="clr-sr-only" tabindex="-1" #allSelected>{{ commonStrings.keys.allColumnsSelected }}</div>
179
- <ng-container *ngIf="!customToggleTitle">{{ commonStrings.keys.showColumns }}</ng-container>
181
+ <ng-container *ngIf="!customToggleTitle">
182
+ <h2>{{ commonStrings.keys.showColumns }}</h2>
183
+ </ng-container>
180
184
  <ng-content select="clr-dg-column-toggle-title"></ng-content>
181
185
  <button
182
186
  class="btn btn-sm btn-link toggle-switch-close-button"
@@ -234,4 +238,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImpor
234
238
  type: ViewChild,
235
239
  args: ['allSelected', { read: ElementRef }]
236
240
  }] } });
237
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YWdyaWQtY29sdW1uLXRvZ2dsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FuZ3VsYXIvc3JjL2RhdGEvZGF0YWdyaWQvZGF0YWdyaWQtY29sdW1uLXRvZ2dsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7OztHQUlHO0FBRUgsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsWUFBWSxFQUFFLFVBQVUsRUFBVSxXQUFXLEVBQUUsU0FBUyxFQUFhLE1BQU0sZUFBZSxDQUFDO0FBRXZILE9BQU8sRUFBRSxTQUFTLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSwrQ0FBK0MsQ0FBQztBQUU5RixPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFDOUQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDBDQUEwQyxDQUFDO0FBQ3hFLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQUM5RCxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxzREFBc0QsQ0FBQztBQUMvRixPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSx3REFBd0QsQ0FBQztBQUNuRyxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxzREFBc0QsQ0FBQztBQUkvRixPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUNwRSxPQUFPLEVBQUUsNEJBQTRCLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUM5RSxPQUFPLEVBQUUsNkJBQTZCLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBb0VoRiwyQ0FBMkM7QUFDM0MsTUFBTSxPQUFPLHVCQUF1QjtJQTBCbEMsWUFDUyxhQUFzQyxFQUNyQyxjQUE4QixFQUNaLGNBQXNCLEVBQ25CLFVBQWUsRUFDcEMsSUFBWSxFQUNNLFNBQWlCLEVBQ25DLG9CQUE2QztRQU45QyxrQkFBYSxHQUFiLGFBQWEsQ0FB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RSx1QkFBdUIsQ0FBQyx5RUFnQjlGLDRCQUE0QixxRkFDNUIsNkJBQTZCLDhJQUNULFVBQVUsNkJBL0VsQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0EyRFQ7MkZBS1UsdUJBQXVCO2tCQWxFbkMsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsc0JBQXNCO29CQUNoQyxRQUFRLEVBQUU7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBMkRUO29CQUNELElBQUksRUFBRSxFQUFFLCtCQUErQixFQUFFLE1BQU0sRUFBRSxnQkFBZ0IsRUFBRSxXQUFXLEVBQUU7b0JBQ2hGLFNBQVMsRUFBRSxDQUFDLGtCQUFrQixFQUFFLHVCQUF1QixFQUFFLHlCQUF5QixFQUFFLHVCQUF1QixDQUFDO2lCQUM3Rzs7MEJBK0JJLE1BQU07MkJBQUMsU0FBUzs7MEJBQ2hCLE1BQU07MkJBQUMsV0FBVzs7MEJBRWxCLE1BQU07MkJBQUMsU0FBUztrRkFuQnlCLGlCQUFpQjtzQkFBNUQsWUFBWTt1QkFBQyw0QkFBNEI7Z0JBQ0csa0JBQWtCO3NCQUE5RCxZQUFZO3VCQUFDLDZCQUE2QjtnQkFFbkMsa0JBQWtCO3NCQUR6QixTQUFTO3VCQUFDLGFBQWEsRUFBRSxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogQ29weXJpZ2h0IChjKSAyMDE2LTIwMjIgVk13YXJlLCBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKiBUaGlzIHNvZnR3YXJlIGlzIHJlbGVhc2VkIHVuZGVyIE1JVCBsaWNlbnNlLlxuICogVGhlIGZ1bGwgbGljZW5zZSBpbmZvcm1hdGlvbiBjYW4gYmUgZm91bmQgaW4gTElDRU5TRSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBwcm9qZWN0LlxuICovXG5cbmltcG9ydCB7IENvbXBvbmVudCwgSW5qZWN0LCBDb250ZW50Q2hpbGQsIEVsZW1lbnRSZWYsIE5nWm9uZSwgUExBVEZPUk1fSUQsIFZpZXdDaGlsZCwgT25EZXN0cm95IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IFVOSVFVRV9JRCwgVU5JUVVFX0lEX1BST1ZJREVSIH0gZnJvbSAnLi4vLi4vdXRpbHMvaWQtZ2VuZXJhdG9yL2lkLWdlbmVyYXRvci5zZXJ2aWNlJztcbmltcG9ydCB7IENsclBvcG92ZXJQb3NpdGlvbiB9IGZyb20gJy4uLy4uL3V0aWxzL3BvcG92ZXIvaW50ZXJmYWNlcy9wb3BvdmVyLXBvc2l0aW9uLmludGVyZmFjZSc7XG5pbXBvcnQgeyBDbHJBeGlzIH0gZnJvbSAnLi4vLi4vdXRpbHMvcG9wb3Zlci9lbnVtcy9heGlzLmVudW0nO1xuaW1wb3J0IHsgQ2xyQWxpZ25tZW50IH0gZnJvbSAnLi4vLi4vdXRpbHMvcG9wb3Zlci9lbnVtcy9hbGlnbm1lbnQuZW51bSc7XG5pbXBvcnQgeyBDbHJTaWRlIH0gZnJvbSAnLi4vLi4vdXRpbHMvcG9wb3Zlci9lbnVtcy9zaWRlLmVudW0nO1xuaW1wb3J0IHsgQ2xyUG9wb3ZlckV2ZW50c1NlcnZpY2UgfSBmcm9tICcuLi8uLi91dGlscy9wb3BvdmVyL3Byb3ZpZGVycy9wb3BvdmVyLWV2ZW50cy5zZXJ2aWNlJztcbmltcG9ydCB7IENsclBvcG92ZXJQb3NpdGlvblNlcnZpY2UgfSBmcm9tICcuLi8uLi91dGlscy9wb3BvdmVyL3Byb3ZpZGVycy9wb3BvdmVyLXBvc2l0aW9uLnNlcnZpY2UnO1xuaW1wb3J0IHsgQ2xyUG9wb3ZlclRvZ2dsZVNlcnZpY2UgfSBmcm9tICcuLi8uLi91dGlscy9wb3BvdmVyL3Byb3ZpZGVycy9wb3BvdmVyLXRvZ2dsZS5zZXJ2aWNlJztcbmltcG9ydCB7IENsckNvbW1vblN0cmluZ3NTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vdXRpbHMvaTE4bi9jb21tb24tc3RyaW5ncy5zZXJ2aWNlJztcbmltcG9ydCB7IENvbHVtbnNTZXJ2aWNlIH0gZnJvbSAnLi9wcm92aWRlcnMvY29sdW1ucy5zZXJ2aWNlJztcbmltcG9ydCB7IENvbHVtblN0YXRlIH0gZnJvbSAnLi9pbnRlcmZhY2VzL2NvbHVtbi1zdGF0ZS5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgRGF0YWdyaWRDb2x1bW5DaGFuZ2VzIH0gZnJvbSAnLi9lbnVtcy9jb2x1bW4tY2hhbmdlcy5lbnVtJztcbmltcG9ydCB7IENsckRhdGFncmlkQ29sdW1uVG9nZ2xlVGl0bGUgfSBmcm9tICcuL2RhdGFncmlkLWNvbHVtbi10b2dnbGUtdGl0bGUnO1xuaW1wb3J0IHsgQ2xyRGF0YWdyaWRDb2x1bW5Ub2dnbGVCdXR0b24gfSBmcm9tICcuL2RhdGFncmlkLWNvbHVtbi10b2dnbGUtYnV0dG9uJztcbmltcG9ydCB7IFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdjbHItZGctY29sdW1uLXRvZ2dsZScsXG4gIHRlbXBsYXRlOiBgXG4gICAgPGJ1dHRvblxuICAgICAgcm9sZT1cImJ1dHRvblwiXG4gICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgIGNsYXNzPVwiYnRuIGJ0bi1zbSBidG4tbGluayBjb2x1bW4tdG9nZ2xlLS1hY3Rpb25cIlxuICAgICAgY2xyUG9wb3ZlckFuY2hvclxuICAgICAgY2xyUG9wb3Zlck9wZW5DbG9zZUJ1dHRvblxuICAgICAgW2F0dHIuYXJpYS1jb250cm9sc109XCJwb3BvdmVySWRcIlxuICAgICAgW2F0dHIuYXJpYS1vd25zXT1cInBvcG92ZXJJZFwiXG4gICAgICBbYXR0ci5hcmlhLWV4cGFuZGVkXT1cIm9wZW5TdGF0ZVwiXG4gICAgPlxuICAgICAgPGNkcy1pY29uIHNoYXBlPVwidmlldy1jb2x1bW5zXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCIgW2F0dHIudGl0bGVdPVwiY29tbW9uU3RyaW5ncy5rZXlzLnBpY2tDb2x1bW5zXCI+PC9jZHMtaWNvbj5cbiAgICAgIDxzcGFuIGNsYXNzPVwiY2xyLXNyLW9ubHlcIj57eyBjb21tb25TdHJpbmdzLmtleXMucGlja0NvbHVtbnMgfX08L3NwYW4+XG4gICAgPC9idXR0b24+XG4gICAgPGRpdlxuICAgICAgY2xhc3M9XCJjb2x1bW4tc3dpdGNoXCJcbiAgICAgIHJvbGU9XCJkaWFsb2dcIlxuICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJjb21tb25TdHJpbmdzLmtleXMuc2hvd0NvbHVtbnNNZW51RGVzY3JpcHRpb25cIlxuICAgICAgW2lkXT1cInBvcG92ZXJJZFwiXG4gICAgICBjbHJGb2N1c1RyYXBcbiAgICAgICpjbHJQb3BvdmVyQ29udGVudD1cIm9wZW5TdGF0ZTsgYXQ6IHNtYXJ0UG9zaXRpb247IG91dHNpZGVDbGlja1RvQ2xvc2U6IHRydWU7IHNjcm9sbFRvQ2xvc2U6IHRydWVcIlxuICAgID5cbiAgICAgIDxkaXYgY2xhc3M9XCJzd2l0Y2gtaGVhZGVyXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJjbHItc3Itb25seVwiIHRhYmluZGV4PVwiLTFcIiAjYWxsU2VsZWN0ZWQ+e3sgY29tbW9uU3RyaW5ncy5rZXlzLmFsbENvbHVtbnNTZWxlY3RlZCB9fTwvZGl2PlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIWN1c3RvbVRvZ2dsZVRpdGxlXCI+e3sgY29tbW9uU3RyaW5ncy5rZXlzLnNob3dDb2x1bW5zIH19PC9uZy1jb250YWluZXI+XG4gICAgICAgIDxuZy1jb250ZW50IHNlbGVjdD1cImNsci1kZy1jb2x1bW4tdG9nZ2xlLXRpdGxlXCI+PC9uZy1jb250ZW50PlxuICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgY2xhc3M9XCJidG4gYnRuLXNtIGJ0bi1saW5rIHRvZ2dsZS1zd2l0Y2gtY2xvc2UtYnV0dG9uXCJcbiAgICAgICAgICBjbHJQb3BvdmVyQ2xvc2VCdXR0b25cbiAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cImNvbW1vblN0cmluZ3Mua2V5cy5jbG9zZVwiXG4gICAgICAgID5cbiAgICAgICAgICA8Y2RzLWljb24gc2hhcGU9XCJ3aW5kb3ctY2xvc2VcIiBhcmlhLWhpZGRlbj1cInRydWVcIiBbYXR0ci50aXRsZV09XCJjb21tb25TdHJpbmdzLmtleXMuY2xvc2VcIj48L2Nkcy1pY29uPlxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY2xyLXNyLW9ubHlcIj57eyBjb21tb25TdHJpbmdzLmtleXMuY2xvc2UgfX08L3NwYW4+XG4gICAgICAgIDwvYnV0dG9uPlxuICAgICAgPC9kaXY+XG4gICAgICA8dWwgY2xhc3M9XCJzd2l0Y2gtY29udGVudCBsaXN0LXVuc3R5bGVkXCI+XG4gICAgICAgIDxsaSAqbmdGb3I9XCJsZXQgY29sdW1uU3RhdGUgb2YgaGlkZWFibGVDb2x1bW5TdGF0ZXM7IHRyYWNrQnk6IHRyYWNrQnlGblwiPlxuICAgICAgICAgIDxjbHItY2hlY2tib3gtd3JhcHBlcj5cbiAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICBjbHJDaGVja2JveFxuICAgICAgICAgICAgICB0eXBlPVwiY2hlY2tib3hcIlxuICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiaGFzT25seU9uZVZpc2libGVDb2x1bW4gJiYgIWNvbHVtblN0YXRlLmhpZGRlblwiXG4gICAgICAgICAgICAgIFtuZ01vZGVsXT1cIiFjb2x1bW5TdGF0ZS5oaWRkZW5cIlxuICAgICAgICAgICAgICAobmdNb2RlbENoYW5nZSk9XCJ0b2dnbGVDb2x1bW5TdGF0ZShjb2x1bW5TdGF0ZSwgISRldmVudClcIlxuICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIDxsYWJlbD5cbiAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImNvbHVtblN0YXRlLnRpdGxlVGVtcGxhdGVSZWZcIj48L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgPC9sYWJlbD5cbiAgICAgICAgICA8L2Nsci1jaGVja2JveC13cmFwcGVyPlxuICAgICAgICA8L2xpPlxuICAgICAgPC91bD5cbiAgICAgIDxkaXYgY2xhc3M9XCJzd2l0Y2gtZm9vdGVyXCI+XG4gICAgICAgIDxuZy1jb250ZW50IHNlbGVjdD1cImNsci1kZy1jb2x1bW4tdG9nZ2xlLWJ1dHRvblwiPjwvbmctY29udGVudD5cbiAgICAgICAgPGNsci1kZy1jb2x1bW4tdG9nZ2xlLWJ1dHRvbiAqbmdJZj1cIiFjdXN0b21Ub2dnbGVCdXR0b25cIiAoY2xyQWxsU2VsZWN0ZWQpPVwiYWxsQ29sdW1uc1NlbGVjdGVkKClcIj5cbiAgICAgICAgICB7eyBjb21tb25TdHJpbmdzLmtleXMuc2VsZWN0QWxsIH19XG4gICAgICAgIDwvY2xyLWRnLWNvbHVtbi10b2dnbGUtYnV0dG9uPlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIGAsXG4gIGhvc3Q6IHsgJ1tjbGFzcy5jb2x1bW4tc3dpdGNoLXdyYXBwZXJdJzogJ3RydWUnLCAnW2NsYXNzLmFjdGl2ZV0nOiAnb3BlblN0YXRlJyB9LFxuICBwcm92aWRlcnM6IFtVTklRVUVfSURfUFJPVklERVIsIENsclBvcG92ZXJFdmVudHNTZXJ2aWNlLCBDbHJQb3BvdmVyUG9zaXRpb25TZXJ2aWNlLCBDbHJQb3BvdmVyVG9nZ2xlU2VydmljZV0sXG59KVxuLyoqIEBkZXByZWNhdGVkIHNpbmNlIDIuMCwgcmVtb3ZlIGluIDMuMCAqL1xuZXhwb3J0IGNsYXNzIENsckRhdGFncmlkQ29sdW1uVG9nZ2xlIGltcGxlbWVudHMgT25EZXN0cm95IHtcbiAgcHJpdmF0ZSBfYWxsQ29sdW1uc1Zpc2libGU6IGJvb2xlYW47XG4gIHByaXZhdGUgc3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb247XG5cbiAgLy8gU21hcnQgUG9wb3ZlclxuICBwdWJsaWMgc21hcnRQb3NpdGlvbjogQ2xyUG9wb3ZlclBvc2l0aW9uID0ge1xuICAgIGF4aXM6IENsckF4aXMuVkVSVElDQUwsXG4gICAgc2lkZTogQ2xyU2lkZS5CRUZPUkUsXG4gICAgYW5jaG9yOiBDbHJBbGlnbm1lbnQuU1RBUlQsXG4gICAgY29udGVudDogQ2xyQWxpZ25tZW50LlNUQVJULFxuICB9O1xuICBwdWJsaWMgb3BlblN0YXRlOiBib29sZWFuO1xuXG4gIEBDb250ZW50Q2hpbGQoQ2xyRGF0YWdyaWRDb2x1bW5Ub2dnbGVUaXRsZSkgY3VzdG9tVG9nZ2xlVGl0bGU6IENsckRhdGFncmlkQ29sdW1uVG9nZ2xlVGl0bGU7XG4gIEBDb250ZW50Q2hpbGQoQ2xyRGF0YWdyaWRDb2x1bW5Ub2dnbGVCdXR0b24pIGN1c3RvbVRvZ2dsZUJ1dHRvbjogQ2xyRGF0YWdyaWRDb2x1bW5Ub2dnbGVCdXR0b247XG4gIEBWaWV3Q2hpbGQoJ2FsbFNlbGVjdGVkJywgeyByZWFkOiBFbGVtZW50UmVmIH0pXG4gIHByaXZhdGUgYWxsU2VsZWN0ZWRFbGVtZW50OiBFbGVtZW50UmVmPEhUTUxFbGVtZW50PjtcblxuICBwdWJsaWMgZ2V0IGFsbENvbHVtbnNWaXNpYmxlKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl9hbGxDb2x1bW5zVmlzaWJsZTtcbiAgfVxuXG4gIHB1YmxpYyBzZXQgYWxsQ29sdW1uc1Zpc2libGUodmFsdWU6IGJvb2xlYW4pIHtcbiAgICB0aGlzLl9hbGxDb2x1bW5zVmlzaWJsZSA9IHZhbHVlO1xuICB9XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHVibGljIGNvbW1vblN0cmluZ3M6IENsckNvbW1vblN0cmluZ3NTZXJ2aWNlLFxuICAgIHByaXZhdGUgY29sdW1uc1NlcnZpY2U6IENvbHVtbnNTZXJ2aWNlLFxuICAgIEBJbmplY3QoVU5JUVVFX0lEKSBwdWJsaWMgY29sdW1uU3dpdGNoSWQ6IHN0cmluZyxcbiAgICBASW5qZWN0KFBMQVRGT1JNX0lEKSBwcml2YXRlIHBsYXRmb3JtSWQ6IGFueSxcbiAgICBwcml2YXRlIHpvbmU6IE5nWm9uZSxcbiAgICBASW5qZWN0KFVOSVFVRV9JRCkgcHVibGljIHBvcG92ZXJJZDogc3RyaW5nLFxuICAgIHByaXZhdGUgcG9wb3ZlclRvZ2dsZVNlcnZpY2U6IENsclBvcG92ZXJUb2dnbGVTZXJ2aWNlXG4gICkge1xuICAgIHRoaXMuc3Vic2NyaXB0aW9uID0gcG9wb3ZlclRvZ2dsZVNlcnZpY2Uub3BlbkNoYW5nZS5zdWJzY3JpYmUoY2hhbmdlID0+ICh0aGlzLm9wZW5TdGF0ZSA9IGNoYW5nZSkpO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKSB7XG4gICAgdGhpcy5zdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgfVxuXG4gIGdldCBoaWRlYWJsZUNvbHVtblN0YXRlcygpOiBDb2x1bW5TdGF0ZVtdIHtcbiAgICBjb25zdCBoaWRlYWJsZXMgPSB0aGlzLmNvbHVtbnNTZXJ2aWNlLmNvbHVtbnMuZmlsdGVyKGNvbHVtbiA9PiBjb2x1bW4udmFsdWUuaGlkZWFibGUpO1xuICAgIHJldHVybiBoaWRlYWJsZXMubWFwKGNvbHVtbiA9PiBjb2x1bW4udmFsdWUpO1xuICB9XG5cbiAgZ2V0IGhhc09ubHlPbmVWaXNpYmxlQ29sdW1uKCk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IG5iTm9uSGlkZWFibGVDb2x1bW5zID0gdGhpcy5jb2x1bW5zU2VydmljZS5jb2x1bW5zLmxlbmd0aCAtIHRoaXMuaGlkZWFibGVDb2x1bW5TdGF0ZXMubGVuZ3RoO1xuICAgIC8vIHRoaXMgc2hvdWxkIG9ubHkgcmV0dXJuIHRydWUgd2hlbiB0aGVyZSBpcyBubyBub24taGlkZWFibGUgY29sdW1ucy5cbiAgICByZXR1cm4gKFxuICAgICAgbmJOb25IaWRlYWJsZUNvbHVtbnMgPT09IDAgJiYgdGhpcy5oaWRlYWJsZUNvbHVtblN0YXRlcy5maWx0ZXIoY29sdW1uU3RhdGUgPT4gIWNvbHVtblN0YXRlLmhpZGRlbikubGVuZ3RoID09PSAxXG4gICAgKTtcbiAgfVxuXG4gIHRvZ2dsZUNvbHVtblN0YXRlKGNvbHVtblN0YXRlOiBDb2x1bW5TdGF0ZSwgZXZlbnQ6IGJvb2xlYW4pIHtcbiAgICBjb25zdCBjb2x1bW5Ub1RvZ2dsZSA9IHRoaXMuY29sdW1uc1NlcnZpY2UuY29sdW1ucy5maWx0ZXIoY29sdW1uID0+IGNvbHVtbi52YWx1ZSA9PT0gY29sdW1uU3RhdGUpWzBdO1xuICAgIHRoaXMuY29sdW1uc1NlcnZpY2UuZW1pdFN0YXRlQ2hhbmdlKGNvbHVtblRvVG9nZ2xlLCB7XG4gICAgICBoaWRkZW46IGV2ZW50LFxuICAgICAgY2hhbmdlczogW0RhdGFncmlkQ29sdW1uQ2hhbmdlcy5ISURERU5dLFxuICAgIH0pO1xuICB9XG5cbiAgdG9nZ2xlU3dpdGNoUGFuZWwoKSB7XG4gICAgdGhpcy5vcGVuU3RhdGUgPSAhdGhpcy5vcGVuU3RhdGU7XG4gIH1cblxuICBhbGxDb2x1bW5zU2VsZWN0ZWQoKSB7XG4gICAgdGhpcy5hbGxTZWxlY3RlZEVsZW1lbnQubmF0aXZlRWxlbWVudC5mb2N1cygpO1xuICB9XG5cbiAgLy8gV2l0aG91dCB0cmFja2luZyB0aGUgY2hlY2tib3hlcyBnZXQgcmVyZW5kZXJlZCBvbiBtb2RlbCB1cGRhdGUsIHdoaWNoIGxlYWRzXG4gIC8vIHRvIGxvc3Mgb2YgZm9jdXMgYWZ0ZXIgY2hlY2tib3ggdG9nZ2xlLlxuICB0cmFja0J5Rm4oaW5kZXg6IG51bWJlcikge1xuICAgIHJldHVybiBpbmRleDtcbiAgfVxufVxuIl19
241
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YWdyaWQtY29sdW1uLXRvZ2dsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FuZ3VsYXIvc3JjL2RhdGEvZGF0YWdyaWQvZGF0YWdyaWQtY29sdW1uLXRvZ2dsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7OztHQUlHO0FBRUgsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsWUFBWSxFQUFFLFVBQVUsRUFBVSxXQUFXLEVBQUUsU0FBUyxFQUFhLE1BQU0sZUFBZSxDQUFDO0FBRXZILE9BQU8sRUFBRSxTQUFTLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSwrQ0FBK0MsQ0FBQztBQUU5RixPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFDOUQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDBDQUEwQyxDQUFDO0FBQ3hFLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQUM5RCxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxzREFBc0QsQ0FBQztBQUMvRixPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSx3REFBd0QsQ0FBQztBQUNuRyxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxzREFBc0QsQ0FBQztBQUkvRixPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUNwRSxPQUFPLEVBQUUsNEJBQTRCLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUM5RSxPQUFPLEVBQUUsNkJBQTZCLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBc0VoRiwyQ0FBMkM7QUFDM0MsTUFBTSxPQUFPLHVCQUF1QjtJQTBCbEMsWUFDUyxhQUFzQyxFQUNyQyxjQUE4QixFQUNaLGNBQXNCLEVBQ25CLFVBQWUsRUFDcEMsSUFBWSxFQUNNLFNBQWlCLEVBQ25DLG9CQUE2QztRQU45QyxrQkFBYSxHQUFiLGFBQWEsQ0FB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RSx1QkFBdUIsQ0FBQyx5RUFnQjlGLDRCQUE0QixxRkFDNUIsNkJBQTZCLDhJQUNULFVBQVUsNkJBakZsQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQTZEVDsyRkFLVSx1QkFBdUI7a0JBcEVuQyxTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSxzQkFBc0I7b0JBQ2hDLFFBQVEsRUFBRTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQTZEVDtvQkFDRCxJQUFJLEVBQUUsRUFBRSwrQkFBK0IsRUFBRSxNQUFNLEVBQUUsZ0JBQWdCLEVBQUUsV0FBVyxFQUFFO29CQUNoRixTQUFTLEVBQUUsQ0FBQyxrQkFBa0IsRUFBRSx1QkFBdUIsRUFBRSx5QkFBeUIsRUFBRSx1QkFBdUIsQ0FBQztpQkFDN0c7OzBCQStCSSxNQUFNOzJCQUFDLFNBQVM7OzBCQUNoQixNQUFNOzJCQUFDLFdBQVc7OzBCQUVsQixNQUFNOzJCQUFDLFNBQVM7a0ZBbkJ5QixpQkFBaUI7c0JBQTVELFlBQVk7dUJBQUMsNEJBQTRCO2dCQUNHLGtCQUFrQjtzQkFBOUQsWUFBWTt1QkFBQyw2QkFBNkI7Z0JBRW5DLGtCQUFrQjtzQkFEekIsU0FBUzt1QkFBQyxhQUFhLEVBQUUsRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiLypcbiAqIENvcHlyaWdodCAoYykgMjAxNi0yMDIyIFZNd2FyZSwgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICogVGhpcyBzb2Z0d2FyZSBpcyByZWxlYXNlZCB1bmRlciBNSVQgbGljZW5zZS5cbiAqIFRoZSBmdWxsIGxpY2Vuc2UgaW5mb3JtYXRpb24gY2FuIGJlIGZvdW5kIGluIExJQ0VOU0UgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgcHJvamVjdC5cbiAqL1xuXG5pbXBvcnQgeyBDb21wb25lbnQsIEluamVjdCwgQ29udGVudENoaWxkLCBFbGVtZW50UmVmLCBOZ1pvbmUsIFBMQVRGT1JNX0lELCBWaWV3Q2hpbGQsIE9uRGVzdHJveSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBVTklRVUVfSUQsIFVOSVFVRV9JRF9QUk9WSURFUiB9IGZyb20gJy4uLy4uL3V0aWxzL2lkLWdlbmVyYXRvci9pZC1nZW5lcmF0b3Iuc2VydmljZSc7XG5pbXBvcnQgeyBDbHJQb3BvdmVyUG9zaXRpb24gfSBmcm9tICcuLi8uLi91dGlscy9wb3BvdmVyL2ludGVyZmFjZXMvcG9wb3Zlci1wb3NpdGlvbi5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgQ2xyQXhpcyB9IGZyb20gJy4uLy4uL3V0aWxzL3BvcG92ZXIvZW51bXMvYXhpcy5lbnVtJztcbmltcG9ydCB7IENsckFsaWdubWVudCB9IGZyb20gJy4uLy4uL3V0aWxzL3BvcG92ZXIvZW51bXMvYWxpZ25tZW50LmVudW0nO1xuaW1wb3J0IHsgQ2xyU2lkZSB9IGZyb20gJy4uLy4uL3V0aWxzL3BvcG92ZXIvZW51bXMvc2lkZS5lbnVtJztcbmltcG9ydCB7IENsclBvcG92ZXJFdmVudHNTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vdXRpbHMvcG9wb3Zlci9wcm92aWRlcnMvcG9wb3Zlci1ldmVudHMuc2VydmljZSc7XG5pbXBvcnQgeyBDbHJQb3BvdmVyUG9zaXRpb25TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vdXRpbHMvcG9wb3Zlci9wcm92aWRlcnMvcG9wb3Zlci1wb3NpdGlvbi5zZXJ2aWNlJztcbmltcG9ydCB7IENsclBvcG92ZXJUb2dnbGVTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vdXRpbHMvcG9wb3Zlci9wcm92aWRlcnMvcG9wb3Zlci10b2dnbGUuc2VydmljZSc7XG5pbXBvcnQgeyBDbHJDb21tb25TdHJpbmdzU2VydmljZSB9IGZyb20gJy4uLy4uL3V0aWxzL2kxOG4vY29tbW9uLXN0cmluZ3Muc2VydmljZSc7XG5pbXBvcnQgeyBDb2x1bW5zU2VydmljZSB9IGZyb20gJy4vcHJvdmlkZXJzL2NvbHVtbnMuc2VydmljZSc7XG5pbXBvcnQgeyBDb2x1bW5TdGF0ZSB9IGZyb20gJy4vaW50ZXJmYWNlcy9jb2x1bW4tc3RhdGUuaW50ZXJmYWNlJztcbmltcG9ydCB7IERhdGFncmlkQ29sdW1uQ2hhbmdlcyB9IGZyb20gJy4vZW51bXMvY29sdW1uLWNoYW5nZXMuZW51bSc7XG5pbXBvcnQgeyBDbHJEYXRhZ3JpZENvbHVtblRvZ2dsZVRpdGxlIH0gZnJvbSAnLi9kYXRhZ3JpZC1jb2x1bW4tdG9nZ2xlLXRpdGxlJztcbmltcG9ydCB7IENsckRhdGFncmlkQ29sdW1uVG9nZ2xlQnV0dG9uIH0gZnJvbSAnLi9kYXRhZ3JpZC1jb2x1bW4tdG9nZ2xlLWJ1dHRvbic7XG5pbXBvcnQgeyBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnY2xyLWRnLWNvbHVtbi10b2dnbGUnLFxuICB0ZW1wbGF0ZTogYFxuICAgIDxidXR0b25cbiAgICAgIHJvbGU9XCJidXR0b25cIlxuICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICBjbGFzcz1cImJ0biBidG4tc20gYnRuLWxpbmsgY29sdW1uLXRvZ2dsZS0tYWN0aW9uXCJcbiAgICAgIGNsclBvcG92ZXJBbmNob3JcbiAgICAgIGNsclBvcG92ZXJPcGVuQ2xvc2VCdXR0b25cbiAgICAgIFthdHRyLmFyaWEtY29udHJvbHNdPVwicG9wb3ZlcklkXCJcbiAgICAgIFthdHRyLmFyaWEtb3duc109XCJwb3BvdmVySWRcIlxuICAgICAgW2F0dHIuYXJpYS1leHBhbmRlZF09XCJvcGVuU3RhdGVcIlxuICAgID5cbiAgICAgIDxjZHMtaWNvbiBzaGFwZT1cInZpZXctY29sdW1uc1wiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiIFthdHRyLnRpdGxlXT1cImNvbW1vblN0cmluZ3Mua2V5cy5waWNrQ29sdW1uc1wiPjwvY2RzLWljb24+XG4gICAgICA8c3BhbiBjbGFzcz1cImNsci1zci1vbmx5XCI+e3sgY29tbW9uU3RyaW5ncy5rZXlzLnBpY2tDb2x1bW5zIH19PC9zcGFuPlxuICAgIDwvYnV0dG9uPlxuICAgIDxkaXZcbiAgICAgIGNsYXNzPVwiY29sdW1uLXN3aXRjaFwiXG4gICAgICByb2xlPVwiZGlhbG9nXCJcbiAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiY29tbW9uU3RyaW5ncy5rZXlzLnNob3dDb2x1bW5zTWVudURlc2NyaXB0aW9uXCJcbiAgICAgIFtpZF09XCJwb3BvdmVySWRcIlxuICAgICAgY2xyRm9jdXNUcmFwXG4gICAgICAqY2xyUG9wb3ZlckNvbnRlbnQ9XCJvcGVuU3RhdGU7IGF0OiBzbWFydFBvc2l0aW9uOyBvdXRzaWRlQ2xpY2tUb0Nsb3NlOiB0cnVlOyBzY3JvbGxUb0Nsb3NlOiB0cnVlXCJcbiAgICA+XG4gICAgICA8ZGl2IGNsYXNzPVwic3dpdGNoLWhlYWRlclwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiY2xyLXNyLW9ubHlcIiB0YWJpbmRleD1cIi0xXCIgI2FsbFNlbGVjdGVkPnt7IGNvbW1vblN0cmluZ3Mua2V5cy5hbGxDb2x1bW5zU2VsZWN0ZWQgfX08L2Rpdj5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFjdXN0b21Ub2dnbGVUaXRsZVwiPlxuICAgICAgICAgIDxoMj57eyBjb21tb25TdHJpbmdzLmtleXMuc2hvd0NvbHVtbnMgfX08L2gyPlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiY2xyLWRnLWNvbHVtbi10b2dnbGUtdGl0bGVcIj48L25nLWNvbnRlbnQ+XG4gICAgICAgIDxidXR0b25cbiAgICAgICAgICBjbGFzcz1cImJ0biBidG4tc20gYnRuLWxpbmsgdG9nZ2xlLXN3aXRjaC1jbG9zZS1idXR0b25cIlxuICAgICAgICAgIGNsclBvcG92ZXJDbG9zZUJ1dHRvblxuICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiY29tbW9uU3RyaW5ncy5rZXlzLmNsb3NlXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxjZHMtaWNvbiBzaGFwZT1cIndpbmRvdy1jbG9zZVwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiIFthdHRyLnRpdGxlXT1cImNvbW1vblN0cmluZ3Mua2V5cy5jbG9zZVwiPjwvY2RzLWljb24+XG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJjbHItc3Itb25seVwiPnt7IGNvbW1vblN0cmluZ3Mua2V5cy5jbG9zZSB9fTwvc3Bhbj5cbiAgICAgICAgPC9idXR0b24+XG4gICAgICA8L2Rpdj5cbiAgICAgIDx1bCBjbGFzcz1cInN3aXRjaC1jb250ZW50IGxpc3QtdW5zdHlsZWRcIj5cbiAgICAgICAgPGxpICpuZ0Zvcj1cImxldCBjb2x1bW5TdGF0ZSBvZiBoaWRlYWJsZUNvbHVtblN0YXRlczsgdHJhY2tCeTogdHJhY2tCeUZuXCI+XG4gICAgICAgICAgPGNsci1jaGVja2JveC13cmFwcGVyPlxuICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgIGNsckNoZWNrYm94XG4gICAgICAgICAgICAgIHR5cGU9XCJjaGVja2JveFwiXG4gICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJoYXNPbmx5T25lVmlzaWJsZUNvbHVtbiAmJiAhY29sdW1uU3RhdGUuaGlkZGVuXCJcbiAgICAgICAgICAgICAgW25nTW9kZWxdPVwiIWNvbHVtblN0YXRlLmhpZGRlblwiXG4gICAgICAgICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cInRvZ2dsZUNvbHVtblN0YXRlKGNvbHVtblN0YXRlLCAhJGV2ZW50KVwiXG4gICAgICAgICAgICAvPlxuICAgICAgICAgICAgPGxhYmVsPlxuICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgW25nVGVtcGxhdGVPdXRsZXRdPVwiY29sdW1uU3RhdGUudGl0bGVUZW1wbGF0ZVJlZlwiPjwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICA8L2xhYmVsPlxuICAgICAgICAgIDwvY2xyLWNoZWNrYm94LXdyYXBwZXI+XG4gICAgICAgIDwvbGk+XG4gICAgICA8L3VsPlxuICAgICAgPGRpdiBjbGFzcz1cInN3aXRjaC1mb290ZXJcIj5cbiAgICAgICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiY2xyLWRnLWNvbHVtbi10b2dnbGUtYnV0dG9uXCI+PC9uZy1jb250ZW50PlxuICAgICAgICA8Y2xyLWRnLWNvbHVtbi10b2dnbGUtYnV0dG9uICpuZ0lmPVwiIWN1c3RvbVRvZ2dsZUJ1dHRvblwiIChjbHJBbGxTZWxlY3RlZCk9XCJhbGxDb2x1bW5zU2VsZWN0ZWQoKVwiPlxuICAgICAgICAgIHt7IGNvbW1vblN0cmluZ3Mua2V5cy5zZWxlY3RBbGwgfX1cbiAgICAgICAgPC9jbHItZGctY29sdW1uLXRvZ2dsZS1idXR0b24+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgYCxcbiAgaG9zdDogeyAnW2NsYXNzLmNvbHVtbi1zd2l0Y2gtd3JhcHBlcl0nOiAndHJ1ZScsICdbY2xhc3MuYWN0aXZlXSc6ICdvcGVuU3RhdGUnIH0sXG4gIHByb3ZpZGVyczogW1VOSVFVRV9JRF9QUk9WSURFUiwgQ2xyUG9wb3ZlckV2ZW50c1NlcnZpY2UsIENsclBvcG92ZXJQb3NpdGlvblNlcnZpY2UsIENsclBvcG92ZXJUb2dnbGVTZXJ2aWNlXSxcbn0pXG4vKiogQGRlcHJlY2F0ZWQgc2luY2UgMi4wLCByZW1vdmUgaW4gMy4wICovXG5leHBvcnQgY2xhc3MgQ2xyRGF0YWdyaWRDb2x1bW5Ub2dnbGUgaW1wbGVtZW50cyBPbkRlc3Ryb3kge1xuICBwcml2YXRlIF9hbGxDb2x1bW5zVmlzaWJsZTogYm9vbGVhbjtcbiAgcHJpdmF0ZSBzdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbjtcblxuICAvLyBTbWFydCBQb3BvdmVyXG4gIHB1YmxpYyBzbWFydFBvc2l0aW9uOiBDbHJQb3BvdmVyUG9zaXRpb24gPSB7XG4gICAgYXhpczogQ2xyQXhpcy5WRVJUSUNBTCxcbiAgICBzaWRlOiBDbHJTaWRlLkJFRk9SRSxcbiAgICBhbmNob3I6IENsckFsaWdubWVudC5TVEFSVCxcbiAgICBjb250ZW50OiBDbHJBbGlnbm1lbnQuU1RBUlQsXG4gIH07XG4gIHB1YmxpYyBvcGVuU3RhdGU6IGJvb2xlYW47XG5cbiAgQENvbnRlbnRDaGlsZChDbHJEYXRhZ3JpZENvbHVtblRvZ2dsZVRpdGxlKSBjdXN0b21Ub2dnbGVUaXRsZTogQ2xyRGF0YWdyaWRDb2x1bW5Ub2dnbGVUaXRsZTtcbiAgQENvbnRlbnRDaGlsZChDbHJEYXRhZ3JpZENvbHVtblRvZ2dsZUJ1dHRvbikgY3VzdG9tVG9nZ2xlQnV0dG9uOiBDbHJEYXRhZ3JpZENvbHVtblRvZ2dsZUJ1dHRvbjtcbiAgQFZpZXdDaGlsZCgnYWxsU2VsZWN0ZWQnLCB7IHJlYWQ6IEVsZW1lbnRSZWYgfSlcbiAgcHJpdmF0ZSBhbGxTZWxlY3RlZEVsZW1lbnQ6IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+O1xuXG4gIHB1YmxpYyBnZXQgYWxsQ29sdW1uc1Zpc2libGUoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX2FsbENvbHVtbnNWaXNpYmxlO1xuICB9XG5cbiAgcHVibGljIHNldCBhbGxDb2x1bW5zVmlzaWJsZSh2YWx1ZTogYm9vbGVhbikge1xuICAgIHRoaXMuX2FsbENvbHVtbnNWaXNpYmxlID0gdmFsdWU7XG4gIH1cblxuICBjb25zdHJ1Y3RvcihcbiAgICBwdWJsaWMgY29tbW9uU3RyaW5nczogQ2xyQ29tbW9uU3RyaW5nc1NlcnZpY2UsXG4gICAgcHJpdmF0ZSBjb2x1bW5zU2VydmljZTogQ29sdW1uc1NlcnZpY2UsXG4gICAgQEluamVjdChVTklRVUVfSUQpIHB1YmxpYyBjb2x1bW5Td2l0Y2hJZDogc3RyaW5nLFxuICAgIEBJbmplY3QoUExBVEZPUk1fSUQpIHByaXZhdGUgcGxhdGZvcm1JZDogYW55LFxuICAgIHByaXZhdGUgem9uZTogTmdab25lLFxuICAgIEBJbmplY3QoVU5JUVVFX0lEKSBwdWJsaWMgcG9wb3ZlcklkOiBzdHJpbmcsXG4gICAgcHJpdmF0ZSBwb3BvdmVyVG9nZ2xlU2VydmljZTogQ2xyUG9wb3ZlclRvZ2dsZVNlcnZpY2VcbiAgKSB7XG4gICAgdGhpcy5zdWJzY3JpcHRpb24gPSBwb3BvdmVyVG9nZ2xlU2VydmljZS5vcGVuQ2hhbmdlLnN1YnNjcmliZShjaGFuZ2UgPT4gKHRoaXMub3BlblN0YXRlID0gY2hhbmdlKSk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpIHtcbiAgICB0aGlzLnN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuICB9XG5cbiAgZ2V0IGhpZGVhYmxlQ29sdW1uU3RhdGVzKCk6IENvbHVtblN0YXRlW10ge1xuICAgIGNvbnN0IGhpZGVhYmxlcyA9IHRoaXMuY29sdW1uc1NlcnZpY2UuY29sdW1ucy5maWx0ZXIoY29sdW1uID0+IGNvbHVtbi52YWx1ZS5oaWRlYWJsZSk7XG4gICAgcmV0dXJuIGhpZGVhYmxlcy5tYXAoY29sdW1uID0+IGNvbHVtbi52YWx1ZSk7XG4gIH1cblxuICBnZXQgaGFzT25seU9uZVZpc2libGVDb2x1bW4oKTogYm9vbGVhbiB7XG4gICAgY29uc3QgbmJOb25IaWRlYWJsZUNvbHVtbnMgPSB0aGlzLmNvbHVtbnNTZXJ2aWNlLmNvbHVtbnMubGVuZ3RoIC0gdGhpcy5oaWRlYWJsZUNvbHVtblN0YXRlcy5sZW5ndGg7XG4gICAgLy8gdGhpcyBzaG91bGQgb25seSByZXR1cm4gdHJ1ZSB3aGVuIHRoZXJlIGlzIG5vIG5vbi1oaWRlYWJsZSBjb2x1bW5zLlxuICAgIHJldHVybiAoXG4gICAgICBuYk5vbkhpZGVhYmxlQ29sdW1ucyA9PT0gMCAmJiB0aGlzLmhpZGVhYmxlQ29sdW1uU3RhdGVzLmZpbHRlcihjb2x1bW5TdGF0ZSA9PiAhY29sdW1uU3RhdGUuaGlkZGVuKS5sZW5ndGggPT09IDFcbiAgICApO1xuICB9XG5cbiAgdG9nZ2xlQ29sdW1uU3RhdGUoY29sdW1uU3RhdGU6IENvbHVtblN0YXRlLCBldmVudDogYm9vbGVhbikge1xuICAgIGNvbnN0IGNvbHVtblRvVG9nZ2xlID0gdGhpcy5jb2x1bW5zU2VydmljZS5jb2x1bW5zLmZpbHRlcihjb2x1bW4gPT4gY29sdW1uLnZhbHVlID09PSBjb2x1bW5TdGF0ZSlbMF07XG4gICAgdGhpcy5jb2x1bW5zU2VydmljZS5lbWl0U3RhdGVDaGFuZ2UoY29sdW1uVG9Ub2dnbGUsIHtcbiAgICAgIGhpZGRlbjogZXZlbnQsXG4gICAgICBjaGFuZ2VzOiBbRGF0YWdyaWRDb2x1bW5DaGFuZ2VzLkhJRERFTl0sXG4gICAgfSk7XG4gIH1cblxuICB0b2dnbGVTd2l0Y2hQYW5lbCgpIHtcbiAgICB0aGlzLm9wZW5TdGF0ZSA9ICF0aGlzLm9wZW5TdGF0ZTtcbiAgfVxuXG4gIGFsbENvbHVtbnNTZWxlY3RlZCgpIHtcbiAgICB0aGlzLmFsbFNlbGVjdGVkRWxlbWVudC5uYXRpdmVFbGVtZW50LmZvY3VzKCk7XG4gIH1cblxuICAvLyBXaXRob3V0IHRyYWNraW5nIHRoZSBjaGVja2JveGVzIGdldCByZXJlbmRlcmVkIG9uIG1vZGVsIHVwZGF0ZSwgd2hpY2ggbGVhZHNcbiAgLy8gdG8gbG9zcyBvZiBmb2N1cyBhZnRlciBjaGVja2JveCB0b2dnbGUuXG4gIHRyYWNrQnlGbihpbmRleDogbnVtYmVyKSB7XG4gICAgcmV0dXJuIGluZGV4O1xuICB9XG59XG4iXX0=