@skyux/ag-grid 11.35.0 → 11.36.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/css/sky-ag-grid.css +17 -8
- package/documentation.json +499 -499
- package/esm2022/lib/modules/ag-grid/header/header.component.mjs +46 -33
- package/fesm2022/skyux-ag-grid.mjs +45 -32
- package/fesm2022/skyux-ag-grid.mjs.map +1 -1
- package/lib/modules/ag-grid/header/header.component.d.ts +7 -7
- package/package.json +15 -15
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { ChangeDetectionStrategy, ChangeDetectorRef, Component, ElementRef, EnvironmentInjector,
|
|
1
|
+
import { ChangeDetectionStrategy, ChangeDetectorRef, Component, ElementRef, EnvironmentInjector, ViewChild, computed, inject, signal, } from '@angular/core';
|
|
2
2
|
import { SkyDynamicComponentLocation, SkyDynamicComponentService, } from '@skyux/core';
|
|
3
3
|
import { BehaviorSubject, Subscription, fromEventPattern } from 'rxjs';
|
|
4
4
|
import { SkyAgGridHeaderInfo } from '../types/header-info';
|
|
@@ -12,11 +12,33 @@ import * as i4 from "@skyux/i18n";
|
|
|
12
12
|
*/
|
|
13
13
|
export class SkyAgGridHeaderComponent {
|
|
14
14
|
constructor() {
|
|
15
|
-
this.params = undefined;
|
|
16
|
-
this.sorted = '';
|
|
17
15
|
this.filterEnabled$ = new BehaviorSubject(false);
|
|
16
|
+
// For accessibility, we need to set the title attribute on the header element if there is no visible header text.
|
|
17
|
+
// https://dequeuniversity.com/rules/axe/4.5/empty-table-header?application=axeAPI
|
|
18
|
+
this.accessibleHeaderText = computed(() => {
|
|
19
|
+
const params = this.params();
|
|
20
|
+
if (params?.displayName &&
|
|
21
|
+
!params?.column.getColDef().headerComponentParams?.headerHidden) {
|
|
22
|
+
return undefined;
|
|
23
|
+
}
|
|
24
|
+
else {
|
|
25
|
+
return params?.displayName || params?.column.getColDef().field;
|
|
26
|
+
}
|
|
27
|
+
});
|
|
28
|
+
this.params = signal(undefined);
|
|
29
|
+
this.sorted = '';
|
|
18
30
|
this.sortOrder$ = new BehaviorSubject(undefined);
|
|
19
31
|
this.sortIndexDisplay$ = new BehaviorSubject('');
|
|
32
|
+
this.displayName = computed(() => {
|
|
33
|
+
const params = this.params();
|
|
34
|
+
if (params?.displayName &&
|
|
35
|
+
!params?.column.getColDef().headerComponentParams?.headerHidden) {
|
|
36
|
+
return params.displayName;
|
|
37
|
+
}
|
|
38
|
+
else {
|
|
39
|
+
return undefined;
|
|
40
|
+
}
|
|
41
|
+
});
|
|
20
42
|
this.#subscriptions = new Subscription();
|
|
21
43
|
this.#viewInitialized = false;
|
|
22
44
|
this.#agInitialized = false;
|
|
@@ -42,22 +64,12 @@ export class SkyAgGridHeaderComponent {
|
|
|
42
64
|
}
|
|
43
65
|
agInit(params) {
|
|
44
66
|
this.#agInitialized = true;
|
|
45
|
-
this.params
|
|
67
|
+
this.params.set(params);
|
|
46
68
|
this.#subscriptions.unsubscribe();
|
|
47
69
|
if (!params) {
|
|
48
70
|
return;
|
|
49
71
|
}
|
|
50
72
|
this.#leftPosition = params.column.getLeft() ?? 0;
|
|
51
|
-
if (params.displayName &&
|
|
52
|
-
!params.column.getColDef().headerComponentParams?.headerHidden) {
|
|
53
|
-
this.accessibleHeaderText = undefined;
|
|
54
|
-
this.displayName = params.displayName;
|
|
55
|
-
}
|
|
56
|
-
else {
|
|
57
|
-
this.accessibleHeaderText =
|
|
58
|
-
params.displayName || params.column.getColDef().field;
|
|
59
|
-
this.displayName = undefined;
|
|
60
|
-
}
|
|
61
73
|
this.#subscriptions = new Subscription();
|
|
62
74
|
if (params.column.isFilterAllowed()) {
|
|
63
75
|
this.#subscriptions.add(fromEventPattern((handler) => params.column.addEventListener('filterChanged', handler), (handler) => params.column.removeEventListener('filterChanged', handler)).subscribe(() => {
|
|
@@ -95,11 +107,11 @@ export class SkyAgGridHeaderComponent {
|
|
|
95
107
|
this.#changeDetector.markForCheck();
|
|
96
108
|
}
|
|
97
109
|
onMenuClick($event) {
|
|
98
|
-
this.params?.showColumnMenu($event.target);
|
|
110
|
+
this.params()?.showColumnMenu($event.target);
|
|
99
111
|
}
|
|
100
112
|
onSortRequested(event) {
|
|
101
|
-
if (this.params?.enableSorting) {
|
|
102
|
-
this.params?.progressSort(event.shiftKey);
|
|
113
|
+
if (this.params()?.enableSorting) {
|
|
114
|
+
this.params()?.progressSort(event.shiftKey);
|
|
103
115
|
}
|
|
104
116
|
}
|
|
105
117
|
refresh(params) {
|
|
@@ -110,15 +122,15 @@ export class SkyAgGridHeaderComponent {
|
|
|
110
122
|
if (!this.#viewInitialized || !this.#agInitialized) {
|
|
111
123
|
return;
|
|
112
124
|
}
|
|
113
|
-
const inlineHelpComponent = this.params?.inlineHelpComponent;
|
|
125
|
+
const inlineHelpComponent = this.params()?.inlineHelpComponent;
|
|
114
126
|
if (inlineHelpComponent &&
|
|
115
127
|
(!this.#inlineHelpComponentRef ||
|
|
116
128
|
this.#inlineHelpComponentRef.componentType !== inlineHelpComponent)) {
|
|
117
129
|
this.#dynamicComponentService.removeComponent(this.#inlineHelpComponentRef);
|
|
118
130
|
const headerInfo = new SkyAgGridHeaderInfo();
|
|
119
|
-
headerInfo.column = this.params?.column;
|
|
120
|
-
headerInfo.context = this.params?.context;
|
|
121
|
-
headerInfo.displayName = this.params?.displayName;
|
|
131
|
+
headerInfo.column = this.params()?.column;
|
|
132
|
+
headerInfo.context = this.params()?.context;
|
|
133
|
+
headerInfo.displayName = this.params()?.displayName;
|
|
122
134
|
this.#inlineHelpComponentRef =
|
|
123
135
|
this.#dynamicComponentService.createComponent(inlineHelpComponent, {
|
|
124
136
|
providers: [
|
|
@@ -137,13 +149,13 @@ export class SkyAgGridHeaderComponent {
|
|
|
137
149
|
}
|
|
138
150
|
}
|
|
139
151
|
#updateSort() {
|
|
140
|
-
this.sortOrder$.next(this.params?.column.getSort() || undefined);
|
|
152
|
+
this.sortOrder$.next(this.params()?.column.getSort() || undefined);
|
|
141
153
|
}
|
|
142
154
|
#updateSortIndex() {
|
|
143
|
-
const sortIndex = this.params?.column.getSortIndex();
|
|
144
|
-
const otherSortColumns = this.params
|
|
145
|
-
?.getColumns()
|
|
146
|
-
?.some((column) => column.getColId() !== this.params?.column.getColId() &&
|
|
155
|
+
const sortIndex = this.params()?.column.getSortIndex();
|
|
156
|
+
const otherSortColumns = this.params()
|
|
157
|
+
?.api?.getColumns()
|
|
158
|
+
?.some((column) => column.getColId() !== this.params()?.column.getColId() &&
|
|
147
159
|
!!column.getSort());
|
|
148
160
|
if (sortIndex !== undefined && sortIndex !== null && otherSortColumns) {
|
|
149
161
|
this.sortIndexDisplay$.next(`${sortIndex + 1}`);
|
|
@@ -153,16 +165,17 @@ export class SkyAgGridHeaderComponent {
|
|
|
153
165
|
}
|
|
154
166
|
}
|
|
155
167
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: SkyAgGridHeaderComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
156
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: SkyAgGridHeaderComponent, selector: "sky-ag-grid-header", host: { properties: { "attr.title": "
|
|
168
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: SkyAgGridHeaderComponent, selector: "sky-ag-grid-header", host: { properties: { "attr.title": "accessibleHeaderText()", "attr.aria-label": "displayName() || accessibleHeaderText()", "attr.role": "\"note\"" } }, viewQueries: [{ propertyName: "inlineHelpContainer", first: true, predicate: ["inlineHelpContainer"], descendants: true, read: ElementRef, static: true }], ngImport: i0, template: "<div class=\"ag-cell-label-container\" role=\"presentation\">\n @if (params()?.enableMenu) {\n <span\n class=\"ag-header-icon ag-header-cell-menu-button\"\n aria-hidden=\"true\"\n (click)=\"onMenuClick($event)\"\n >\n <sky-icon icon=\"ellipsis\" />\n </span>\n }\n <div class=\"ag-header-cell-label\" role=\"presentation\">\n <span class=\"ag-header-cell-label-and-icons\">\n @if (params()?.enableSorting) {\n <button\n aria-hidden=\"true\"\n class=\"ag-header-cell-text ag-header-cell-label-sortable sky-btn-link-inline\"\n tabindex=\"-1\"\n type=\"button\"\n [attr.aria-label]=\"accessibleHeaderText()\"\n [innerText]=\"displayName() ?? ''\"\n [skyThemeClass]=\"{ 'sky-font-heading-4': 'modern' }\"\n (click)=\"onSortRequested($event)\"\n ></button>\n } @else if (displayName()) {\n <span\n aria-hidden=\"true\"\n class=\"ag-header-cell-text\"\n [skyThemeClass]=\"{ 'sky-font-heading-4': 'modern' }\"\n >{{ displayName() }}</span\n >\n }\n @if (filterEnabled$ | async) {\n <span\n aria-hidden=\"true\"\n class=\"ag-header-icon ag-header-label-icon ag-filter-icon\"\n ><sky-icon icon=\"filter\"\n /></span>\n }\n @if (params()?.enableSorting) {\n @if (sortOrder$ | async; as sortDirection) {\n <button\n class=\"ag-sort-indicator-container sky-btn sky-btn-icon-borderless\"\n type=\"button\"\n (click)=\"onSortRequested($event)\"\n >\n @if (sortDirection === 'desc') {\n <span class=\"ag-header-icon ag-header-label-icon\">\n <sky-icon *skyThemeIf=\"'default'\" icon=\"caret-down\" />\n <sky-icon *skyThemeIf=\"'modern'\" icon=\"chevron-down\" />\n <span class=\"sky-screen-reader-only\">{{\n 'sky_ag_grid_column_header_sort_button_aria_label_currently_desc'\n | skyLibResources: displayName() ?? accessibleHeaderText()\n }}</span></span\n >\n }\n @if (sortDirection === 'asc') {\n <span class=\"ag-header-icon ag-header-label-icon\">\n <sky-icon *skyThemeIf=\"'default'\" icon=\"caret-up\" />\n <sky-icon *skyThemeIf=\"'modern'\" icon=\"chevron-up\" />\n <span class=\"sky-screen-reader-only\">{{\n 'sky_ag_grid_column_header_sort_button_aria_label_currently_asc'\n | skyLibResources: displayName() ?? accessibleHeaderText()\n }}</span></span\n >\n }\n\n @if (sortIndexDisplay$ | async; as sortIndexDisplay) {\n <span\n aria-hidden=\"true\"\n class=\"ag-sort-indicator-icon ag-sort-order\"\n >{{ sortIndexDisplay }}</span\n >\n }\n </button>\n } @else {\n <span class=\"sky-screen-reader-only\">{{\n 'sky_ag_grid_column_header_sort_button_aria_label_currently_not_sorted'\n | skyLibResources: displayName() ?? accessibleHeaderText()\n }}</span>\n }\n }\n </span>\n <span #inlineHelpContainer class=\"sky-control-help-container\"></span>\n </div>\n</div>\n", styles: [":host{display:flex;flex-direction:row;flex-wrap:nowrap;width:100%;max-width:100%;height:100%;align-items:center;align-content:center}:host-context(.ag-header-cell.ag-right-aligned-header,.ag-header-cell.sky-ag-grid-header-right-aligned){flex-direction:row-reverse}:host-context(.ag-header-cell.ag-right-aligned-header,.ag-header-cell.sky-ag-grid-header-right-aligned) .ag-header-cell-label .sky-control-help-container{order:0}:host-context(.ag-header-cell.ag-right-aligned-header,.ag-header-cell.sky-ag-grid-header-right-aligned) .ag-header-cell-label .ag-header-cell-label-and-icons{order:1}.ag-header-cell-label .ag-header-cell-label-and-icons .ag-header-label-icon,.ag-header-cell-label .ag-header-cell-label-and-icons .ag-header-menu-icon,.ag-header-cell-label .ag-header-cell-label-and-icons .ag-header-icon,.sky-btn.sky-btn-icon-borderless .ag-header-label-icon,.sky-btn.sky-btn-icon-borderless .ag-header-menu-icon,.sky-btn.sky-btn-icon-borderless .ag-header-icon{line-height:0;margin-left:var(--sky-margin-inline-sm)}button.ag-header-cell-label{max-width:100%}.ag-cell-label-container{padding:0;gap:var(--sky-margin-inline-xs)}.ag-header-cell-label{padding-right:0;padding-left:0}.ag-header-cell-label .ag-header-cell-label-and-icons{display:flex;flex-wrap:nowrap;flex-direction:row;overflow:hidden;align-items:center}.ag-header-cell-label .ag-header-cell-label-and-icons .ag-header-cell-text{flex-grow:0;flex-shrink:1}.ag-header-cell-label .ag-header-cell-label-and-icons .ag-sort-indicator-container{color:var(--ag-header-foreground-color);width:initial;height:initial}.ag-header-cell-label .ag-header-cell-label-and-icons .ag-sort-indicator-container:hover{border:none}button{cursor:pointer;flex-grow:0;flex-shrink:1}\n"], dependencies: [{ kind: "component", type: i1.λ1, selector: "sky-icon", inputs: ["icon", "iconName", "iconType", "size", "fixedWidth", "variant"] }, { kind: "directive", type: i2.λ2, selector: "[skyThemeClass]", inputs: ["class", "skyThemeClass"] }, { kind: "directive", type: i2.λ3, selector: "[skyThemeIf]", inputs: ["skyThemeIf"] }, { kind: "pipe", type: i3.AsyncPipe, name: "async" }, { kind: "pipe", type: i4.SkyLibResourcesPipe, name: "skyLibResources" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
157
169
|
}
|
|
158
170
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: SkyAgGridHeaderComponent, decorators: [{
|
|
159
171
|
type: Component,
|
|
160
|
-
args: [{ selector: 'sky-ag-grid-header', changeDetection: ChangeDetectionStrategy.OnPush,
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
}
|
|
172
|
+
args: [{ selector: 'sky-ag-grid-header', changeDetection: ChangeDetectionStrategy.OnPush, host: {
|
|
173
|
+
'[attr.title]': 'accessibleHeaderText()',
|
|
174
|
+
'[attr.aria-label]': 'displayName() || accessibleHeaderText()',
|
|
175
|
+
'[attr.role]': '"note"',
|
|
176
|
+
}, template: "<div class=\"ag-cell-label-container\" role=\"presentation\">\n @if (params()?.enableMenu) {\n <span\n class=\"ag-header-icon ag-header-cell-menu-button\"\n aria-hidden=\"true\"\n (click)=\"onMenuClick($event)\"\n >\n <sky-icon icon=\"ellipsis\" />\n </span>\n }\n <div class=\"ag-header-cell-label\" role=\"presentation\">\n <span class=\"ag-header-cell-label-and-icons\">\n @if (params()?.enableSorting) {\n <button\n aria-hidden=\"true\"\n class=\"ag-header-cell-text ag-header-cell-label-sortable sky-btn-link-inline\"\n tabindex=\"-1\"\n type=\"button\"\n [attr.aria-label]=\"accessibleHeaderText()\"\n [innerText]=\"displayName() ?? ''\"\n [skyThemeClass]=\"{ 'sky-font-heading-4': 'modern' }\"\n (click)=\"onSortRequested($event)\"\n ></button>\n } @else if (displayName()) {\n <span\n aria-hidden=\"true\"\n class=\"ag-header-cell-text\"\n [skyThemeClass]=\"{ 'sky-font-heading-4': 'modern' }\"\n >{{ displayName() }}</span\n >\n }\n @if (filterEnabled$ | async) {\n <span\n aria-hidden=\"true\"\n class=\"ag-header-icon ag-header-label-icon ag-filter-icon\"\n ><sky-icon icon=\"filter\"\n /></span>\n }\n @if (params()?.enableSorting) {\n @if (sortOrder$ | async; as sortDirection) {\n <button\n class=\"ag-sort-indicator-container sky-btn sky-btn-icon-borderless\"\n type=\"button\"\n (click)=\"onSortRequested($event)\"\n >\n @if (sortDirection === 'desc') {\n <span class=\"ag-header-icon ag-header-label-icon\">\n <sky-icon *skyThemeIf=\"'default'\" icon=\"caret-down\" />\n <sky-icon *skyThemeIf=\"'modern'\" icon=\"chevron-down\" />\n <span class=\"sky-screen-reader-only\">{{\n 'sky_ag_grid_column_header_sort_button_aria_label_currently_desc'\n | skyLibResources: displayName() ?? accessibleHeaderText()\n }}</span></span\n >\n }\n @if (sortDirection === 'asc') {\n <span class=\"ag-header-icon ag-header-label-icon\">\n <sky-icon *skyThemeIf=\"'default'\" icon=\"caret-up\" />\n <sky-icon *skyThemeIf=\"'modern'\" icon=\"chevron-up\" />\n <span class=\"sky-screen-reader-only\">{{\n 'sky_ag_grid_column_header_sort_button_aria_label_currently_asc'\n | skyLibResources: displayName() ?? accessibleHeaderText()\n }}</span></span\n >\n }\n\n @if (sortIndexDisplay$ | async; as sortIndexDisplay) {\n <span\n aria-hidden=\"true\"\n class=\"ag-sort-indicator-icon ag-sort-order\"\n >{{ sortIndexDisplay }}</span\n >\n }\n </button>\n } @else {\n <span class=\"sky-screen-reader-only\">{{\n 'sky_ag_grid_column_header_sort_button_aria_label_currently_not_sorted'\n | skyLibResources: displayName() ?? accessibleHeaderText()\n }}</span>\n }\n }\n </span>\n <span #inlineHelpContainer class=\"sky-control-help-container\"></span>\n </div>\n</div>\n", styles: [":host{display:flex;flex-direction:row;flex-wrap:nowrap;width:100%;max-width:100%;height:100%;align-items:center;align-content:center}:host-context(.ag-header-cell.ag-right-aligned-header,.ag-header-cell.sky-ag-grid-header-right-aligned){flex-direction:row-reverse}:host-context(.ag-header-cell.ag-right-aligned-header,.ag-header-cell.sky-ag-grid-header-right-aligned) .ag-header-cell-label .sky-control-help-container{order:0}:host-context(.ag-header-cell.ag-right-aligned-header,.ag-header-cell.sky-ag-grid-header-right-aligned) .ag-header-cell-label .ag-header-cell-label-and-icons{order:1}.ag-header-cell-label .ag-header-cell-label-and-icons .ag-header-label-icon,.ag-header-cell-label .ag-header-cell-label-and-icons .ag-header-menu-icon,.ag-header-cell-label .ag-header-cell-label-and-icons .ag-header-icon,.sky-btn.sky-btn-icon-borderless .ag-header-label-icon,.sky-btn.sky-btn-icon-borderless .ag-header-menu-icon,.sky-btn.sky-btn-icon-borderless .ag-header-icon{line-height:0;margin-left:var(--sky-margin-inline-sm)}button.ag-header-cell-label{max-width:100%}.ag-cell-label-container{padding:0;gap:var(--sky-margin-inline-xs)}.ag-header-cell-label{padding-right:0;padding-left:0}.ag-header-cell-label .ag-header-cell-label-and-icons{display:flex;flex-wrap:nowrap;flex-direction:row;overflow:hidden;align-items:center}.ag-header-cell-label .ag-header-cell-label-and-icons .ag-header-cell-text{flex-grow:0;flex-shrink:1}.ag-header-cell-label .ag-header-cell-label-and-icons .ag-sort-indicator-container{color:var(--ag-header-foreground-color);width:initial;height:initial}.ag-header-cell-label .ag-header-cell-label-and-icons .ag-sort-indicator-container:hover{border:none}button{cursor:pointer;flex-grow:0;flex-shrink:1}\n"] }]
|
|
177
|
+
}], propDecorators: { inlineHelpContainer: [{
|
|
165
178
|
type: ViewChild,
|
|
166
179
|
args: ['inlineHelpContainer', { read: ElementRef, static: true }]
|
|
167
180
|
}] } });
|
|
168
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGVhZGVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tcG9uZW50cy9hZy1ncmlkL3NyYy9saWIvbW9kdWxlcy9hZy1ncmlkL2hlYWRlci9oZWFkZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21wb25lbnRzL2FnLWdyaWQvc3JjL2xpYi9tb2R1bGVzL2FnLWdyaWQvaGVhZGVyL2hlYWRlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBRUwsdUJBQXVCLEVBQ3ZCLGlCQUFpQixFQUNqQixTQUFTLEVBRVQsVUFBVSxFQUNWLG1CQUFtQixFQUNuQixXQUFXLEVBRVgsU0FBUyxFQUNULE1BQU0sR0FDUCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQ0wsMkJBQTJCLEVBQzNCLDBCQUEwQixHQUMzQixNQUFNLGFBQWEsQ0FBQztBQUlyQixPQUFPLEVBQUUsZUFBZSxFQUFFLFlBQVksRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUV2RSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQzs7Ozs7O0FBRzNEOztHQUVHO0FBT0gsTUFBTSxPQUFPLHdCQUF3QjtJQU5yQztRQWlCUyxXQUFNLEdBQXNDLFNBQVMsQ0FBQztRQUN0RCxXQUFNLEdBQUcsRUFBRSxDQUFDO1FBQ0gsbUJBQWMsR0FBRyxJQUFJLGVBQWUsQ0FBVSxLQUFLLENBQUMsQ0FBQztRQUNyRCxlQUFVLEdBQUcsSUFBSSxlQUFlLENBQzlDLFNBQVMsQ0FDVixDQUFDO1FBQ2Msc0JBQWlCLEdBQUcsSUFBSSxlQUFlLENBQVMsRUFBRSxDQUFDLENBQUM7UUFJcEUsbUJBQWMsR0FBRyxJQUFJLFlBQVksRUFBRSxDQUFDO1FBRXBDLHFCQUFnQixHQUFHLEtBQUssQ0FBQztRQUN6QixtQkFB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LE1BQU0sRUFBRSxNQUFNLENBQUMsWUFBWSxFQUFFLENBQUM7UUFDckQsTUFBTSxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsTUFBTSxFQUFFLEdBQUc7WUFDdkMsRUFBRSxVQUFVLEVBQUU7WUFDZCxFQUFFLElBQUksQ0FDSixDQUFDLE1BQU0sRUFBRSxFQUFFLENBQ1QsTUFBTSxDQUFDLFFBQVEsRUFBRSxLQUFLLElBQUksQ0FBQyxNQUFNLEVBQUUsTUFBTSxDQUFDLFFBQVEsRUFBRTtZQUNwRCxDQUFDLENBQUMsTUFBTSxDQUFDLE9BQU8sRUFBRSxDQUNyQixDQUFDO1FBQ0osSUFBSSxTQUFTLEtBQUssU0FBUyxJQUFJLFNBQVMsS0FBSyxJQUFJLElBQUksZ0JBQWdCLEVBQUUsQ0FBQztZQUN0RSxJQUFJLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLEdBQUcsU0FBUyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDbEQsQ0FBQzthQUFNLENBQUM7WUFDTixJQUFJLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQ2xDLENBQUM7SUFDSCxDQUFDOytHQW5NVSx3QkFBd0I7bUdBQXhCLHdCQUF3QixzT0FRTyxVQUFVLDJDQzFDdEQsK3pHQXFGQTs7NEZEbkRhLHdCQUF3QjtrQkFOcEMsU0FBUzsrQkFDRSxvQkFBb0IsbUJBR2IsdUJBQXVCLENBQUMsTUFBTTs4QkFReEMsb0JBQW9CO3NCQUQxQixXQUFXO3VCQUFDLFlBQVk7Z0JBSWxCLG1CQUFtQjtzQkFEekIsU0FBUzt1QkFBQyxxQkFBcUIsRUFBRSxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEFmdGVyVmlld0luaXQsXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgQ29tcG9uZW50LFxuICBDb21wb25lbnRSZWYsXG4gIEVsZW1lbnRSZWYsXG4gIEVudmlyb25tZW50SW5qZWN0b3IsXG4gIEhvc3RCaW5kaW5nLFxuICBPbkRlc3Ryb3ksXG4gIFZpZXdDaGlsZCxcbiAgaW5qZWN0LFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gIFNreUR5bmFtaWNDb21wb25lbnRMb2NhdGlvbixcbiAgU2t5RHluYW1pY0NvbXBvbmVudFNlcnZpY2UsXG59IGZyb20gJ0Bza3l1eC9jb3JlJztcblxuaW1wb3J0IHsgSUhlYWRlckFuZ3VsYXJDb21wIH0gZnJvbSAnYWctZ3JpZC1hbmd1bGFyJztcbmltcG9ydCB7IENvbHVtbk1vdmVkRXZlbnQgfSBmcm9tICdhZy1ncmlkLWNvbW11bml0eSc7XG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIFN1YnNjcmlwdGlvbiwgZnJvbUV2ZW50UGF0dGVybiB9IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQgeyBTa3lBZ0dyaWRIZWFkZXJJbmZvIH0gZnJvbSAnLi4vdHlwZXMvaGVhZGVyLWluZm8nO1xuaW1wb3J0IHsgU2t5QWdHcmlkSGVhZGVyUGFyYW1zIH0gZnJvbSAnLi4vdHlwZXMvaGVhZGVyLXBhcmFtcyc7XG5cbi8qKlxuICogQGludGVybmFsXG4gKi9cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3NreS1hZy1ncmlkLWhlYWRlcicsXG4gIHRlbXBsYXRlVXJsOiAnLi9oZWFkZXIuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9oZWFkZXIuY29tcG9uZW50LnNjc3MnXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG59KVxuZXhwb3J0IGNsYXNzIFNreUFnR3JpZEhlYWRlckNvbXBvbmVudFxuICBpbXBsZW1lbnRzIElIZWFkZXJBbmd1bGFyQ29tcCwgT25EZXN0cm95LCBBZnRlclZpZXdJbml0XG57XG4gIC8vIEZvciBhY2Nlc3NpYmlsaXR5LCB3ZSBuZWVkIHRvIHNldCB0aGUgdGl0bGUgYXR0cmlidXRlIG9uIHRoZSBoZWFkZXIgZWxlbWVudCBpZiB0aGVyZSBpcyBubyB2aXNpYmxlIGhlYWRlciB0ZXh0LlxuICAvLyBodHRwczovL2RlcXVldW5pdmVyc2l0eS5jb20vcnVsZXMvYXhlLzQuNS9lbXB0eS10YWJsZS1oZWFkZXI/YXBwbGljYXRpb249YXhlQVBJXG4gIEBIb3N0QmluZGluZygnYXR0ci50aXRsZScpXG4gIHB1YmxpYyBhY2Nlc3NpYmxlSGVhZGVyVGV4dDogc3RyaW5nIHwgdW5kZWZpbmVkO1xuXG4gIEBWaWV3Q2hpbGQoJ2lubGluZUhlbHBDb250YWluZXInLCB7IHJlYWQ6IEVsZW1lbnRSZWYsIHN0YXRpYzogdHJ1ZSB9KVxuICBwdWJsaWMgaW5saW5lSGVscENvbnRhaW5lcjogRWxlbWVudFJlZiB8IHVuZGVmaW5lZDtcblxuICBwdWJsaWMgcGFyYW1zOiBTa3lBZ0dyaWRIZWFkZXJQYXJhbXMgfCB1bmRlZmluZWQgPSB1bmRlZmluZWQ7XG4gIHB1YmxpYyBzb3J0ZWQgPSAnJztcbiAgcHVibGljIHJlYWRvbmx5IGZpbHRlckVuYWJsZWQkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPihmYWxzZSk7XG4gIHB1YmxpYyByZWFkb25seSBzb3J0T3JkZXIkID0gbmV3IEJlaGF2aW9yU3ViamVjdDwnYXNjJyB8ICdkZXNjJyB8IHVuZGVmaW5lZD4oXG4gICAgdW5kZWZpbmVkLFxuICApO1xuICBwdWJsaWMgcmVhZG9ubHkgc29ydEluZGV4RGlzcGxheSQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PHN0cmluZz4oJycpO1xuXG4gIHByb3RlY3RlZCBkaXNwbGF5TmFtZTogc3RyaW5nIHwgdW5kZWZpbmVkO1xuXG4gICNzdWJzY3JpcHRpb25zID0gbmV3IFN1YnNjcmlwdGlvbigpO1xuICAjaW5saW5lSGVscENvbXBvbmVudFJlZjogQ29tcG9uZW50UmVmPHVua25vd24+IHwgdW5kZWZpbmVkO1xuICAjdmlld0luaXRpYWxpemVkID0gZmFsc2U7XG4gICNhZ0luaXRpYWxpemVkID0gZmFsc2U7XG4gICNsZWZ0UG9zaXRpb24gPSAwO1xuXG4gIHJlYWRvbmx5ICNjaGFuZ2VEZXRlY3RvciA9IGluamVjdChDaGFuZ2VEZXRlY3RvclJlZik7XG4gIHJlYWRvbmx5ICNkeW5hbWljQ29tcG9uZW50U2VydmljZSA9IGluamVjdChTa3lEeW5hbWljQ29tcG9uZW50U2VydmljZSk7XG4gIHJlYWRvbmx5ICNlbnZpcm9ubWVudEluamVjdG9yID0gaW5qZWN0KEVudmlyb25tZW50SW5qZWN0b3IpO1xuXG4gIHB1YmxpYyBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgdGhpcy4jdmlld0luaXRpYWxpemVkID0gdHJ1ZTtcbiAgICB0aGlzLiN1cGRhdGVJbmxpbmVIZWxwKCk7XG4gIH1cblxuICBwdWJsaWMgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy4jc3Vic2NyaXB0aW9ucy51bnN1YnNjcmliZSgpO1xuICB9XG5cbiAgcHVibGljIGFnSW5pdChwYXJhbXM6IFNreUFnR3JpZEhlYWRlclBhcmFtcyB8IHVuZGVmaW5lZCk6IHZvaWQge1xuICAgIHRoaXMuI2FnSW5pdGlhbGl6ZWQgPSB0cnVlO1xuICAgIHRoaXMucGFyYW1zID0gcGFyYW1zO1xuICAgIHRoaXMuI3N1YnNjcmlwdGlvbnMudW5zdWJzY3JpYmUoKTtcbiAgICBpZiAoIXBhcmFtcykge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLiNsZWZ0UG9zaXRpb24gPSBwYXJhbXMuY29sdW1uLmdldExlZnQoKSA/PyAwO1xuICAgIGlmIChcbiAgICAgIHBhcmFtcy5kaXNwbGF5TmFtZSAmJlxuICAgICAgIXBhcmFtcy5jb2x1bW4uZ2V0Q29sRGVmKCkuaGVhZGVyQ29tcG9uZW50UGFyYW1zPy5oZWFkZXJIaWRkZW5cbiAgICApIHtcbiAgICAgIHRoaXMuYWNjZXNzaWJsZUhlYWRlclRleHQgPSB1bmRlZmluZWQ7XG4gICAgICB0aGlzLmRpc3BsYXlOYW1lID0gcGFyYW1zLmRpc3BsYXlOYW1lO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmFjY2Vzc2libGVIZWFkZXJUZXh0ID1cbiAgICAgICAgcGFyYW1zLmRpc3BsYXlOYW1lIHx8IHBhcmFtcy5jb2x1bW4uZ2V0Q29sRGVmKCkuZmllbGQ7XG4gICAgICB0aGlzLmRpc3BsYXlOYW1lID0gdW5kZWZpbmVkO1xuICAgIH1cbiAgICB0aGlzLiNzdWJzY3JpcHRpb25zID0gbmV3IFN1YnNjcmlwdGlvbigpO1xuICAgIGlmIChwYXJhbXMuY29sdW1uLmlzRmlsdGVyQWxsb3dlZCgpKSB7XG4gICAgICB0aGlzLiNzdWJzY3JpcHRpb25zLmFkZChcbiAgICAgICAgZnJvbUV2ZW50UGF0dGVybihcbiAgICAgICAgICAoaGFuZGxlcikgPT4gcGFyYW1zLmNvbHVtbi5hZGRFdmVudExpc3RlbmVyKCdmaWx0ZXJDaGFuZ2VkJywgaGFuZGxlciksXG4gICAgICAgICAgKGhhbmRsZXIpID0+XG4gICAgICAgICAgICBwYXJhbXMuY29sdW1uLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2ZpbHRlckNoYW5nZWQnLCBoYW5kbGVyKSxcbiAgICAgICAgKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgIGNvbnN0IGlzRmlsdGVyQWN0aXZlID0gcGFyYW1zLmNvbHVtbi5pc0ZpbHRlckFjdGl2ZSgpO1xuICAgICAgICAgIGlmIChpc0ZpbHRlckFjdGl2ZSAhPT0gdGhpcy5maWx0ZXJFbmFibGVkJC5nZXRWYWx1ZSgpKSB7XG4gICAgICAgICAgICB0aGlzLmZpbHRlckVuYWJsZWQkLm5leHQoaXNGaWx0ZXJBY3RpdmUpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSksXG4gICAgICApO1xuICAgIH1cbiAgICBpZiAocGFyYW1zLmVuYWJsZVNvcnRpbmcpIHtcbiAgICAgIC8vIENvbHVtbiBzb3J0IHN0YXRlIGNoYW5nZXNcbiAgICAgIHRoaXMuI3N1YnNjcmlwdGlvbnMuYWRkKFxuICAgICAgICBmcm9tRXZlbnRQYXR0ZXJuKFxuICAgICAgICAgIChoYW5kbGVyKSA9PiBwYXJhbXMuY29sdW1uLmFkZEV2ZW50TGlzdGVuZXIoJ3NvcnRDaGFuZ2VkJywgaGFuZGxlciksXG4gICAgICAgICAgKGhhbmRsZXIpID0+XG4gICAgICAgICAgICBwYXJhbXMuY29sdW1uLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3NvcnRDaGFuZ2VkJywgaGFuZGxlciksXG4gICAgICAgICkuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICB0aGlzLiN1cGRhdGVTb3J0KCk7XG4gICAgICAgIH0pLFxuICAgICAgKTtcbiAgICAgIC8vIE90aGVyIGNvbHVtbiBzb3J0IHN0YXRlIGNoYW5nZXMsIGZvciBtdWx0aS1jb2x1bW4gc29ydGluZ1xuICAgICAgdGhpcy4jc3Vic2NyaXB0aW9ucy5hZGQoXG4gICAgICAgIGZyb21FdmVudFBhdHRlcm4oXG4gICAgICAgICAgKGhhbmRsZXIpID0+IHBhcmFtcy5hcGkuYWRkRXZlbnRMaXN0ZW5lcignc29ydENoYW5nZWQnLCBoYW5kbGVyKSxcbiAgICAgICAgICAoaGFuZGxlcikgPT4gcGFyYW1zLmFwaS5yZW1vdmVFdmVudExpc3RlbmVyKCdzb3J0Q2hhbmdlZCcsIGhhbmRsZXIpLFxuICAgICAgICApLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgdGhpcy4jdXBkYXRlU29ydEluZGV4KCk7XG4gICAgICAgIH0pLFxuICAgICAgKTtcbiAgICAgIHRoaXMuI3VwZGF0ZVNvcnQoKTtcbiAgICAgIHRoaXMuI3VwZGF0ZVNvcnRJbmRleCgpO1xuICAgIH1cblxuICAgIC8vIFdoZW4gdGhlIGNvbHVtbiBpcyBtb3ZlZCBsZWZ0IHZpYSB0aGUga2V5Ym9hcmQsIHRoZSBlbGVtZW50IGlzIGRldGFjaGVkXG4gICAgLy8gYW5kIHJlYXR0YWNoZWQgdG8gdGhlIERPTSB0byBtYWludGFpbiBET00gb3JkZXIsIGFuZCBpdHMgZm9jdXMgaXMgbG9zdC5cbiAgICB0aGlzLiNzdWJzY3JpcHRpb25zLmFkZChcbiAgICAgIGZyb21FdmVudFBhdHRlcm48Q29sdW1uTW92ZWRFdmVudD4oXG4gICAgICAgIChoYW5kbGVyKSA9PiBwYXJhbXMuYXBpLmFkZEV2ZW50TGlzdGVuZXIoJ2NvbHVtbk1vdmVkJywgaGFuZGxlciksXG4gICAgICAgIChoYW5kbGVyKSA9PiBwYXJhbXMuYXBpLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2NvbHVtbk1vdmVkJywgaGFuZGxlciksXG4gICAgICApLnN1YnNjcmliZSgoZXZlbnQpID0+IHtcbiAgICAgICAgY29uc3QgbGVmdCA9IGV2ZW50LmNvbHVtbj8uZ2V0TGVmdCgpID8/IDA7XG4gICAgICAgIGNvbnN0IG9sZExlZnQgPSB0aGlzLiNsZWZ0UG9zaXRpb247XG4gICAgICAgIGlmIChcbiAgICAgICAgICBldmVudC5jb2x1bW4gPT09IHBhcmFtcy5jb2x1bW4gJiZcbiAgICAgICAgICBldmVudC5zb3VyY2UgPT09ICd1aUNvbHVtbk1vdmVkJyAmJlxuICAgICAgICAgIGxlZnQgPCBvbGRMZWZ0XG4gICAgICAgICkge1xuICAgICAgICAgIHBhcmFtcy5lR3JpZEhlYWRlci5mb2N1cygpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuI2xlZnRQb3NpdGlvbiA9IGxlZnQ7XG4gICAgICB9KSxcbiAgICApO1xuXG4gICAgdGhpcy4jdXBkYXRlSW5saW5lSGVscCgpO1xuICAgIHRoaXMuI2NoYW5nZURldGVjdG9yLm1hcmtGb3JDaGVjaygpO1xuICB9XG5cbiAgcHVibGljIG9uTWVudUNsaWNrKCRldmVudDogRXZlbnQpOiB2b2lkIHtcbiAgICB0aGlzLnBhcmFtcz8uc2hvd0NvbHVtbk1lbnUoJGV2ZW50LnRhcmdldCBhcyBIVE1MRWxlbWVudCk7XG4gIH1cblxuICBwdWJsaWMgb25Tb3J0UmVxdWVzdGVkKGV2ZW50OiBNb3VzZUV2ZW50KTogdm9pZCB7XG4gICAgaWYgKHRoaXMucGFyYW1zPy5lbmFibGVTb3J0aW5nKSB7XG4gICAgICB0aGlzLnBhcmFtcz8ucHJvZ3Jlc3NTb3J0KGV2ZW50LnNoaWZ0S2V5KTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgcmVmcmVzaChwYXJhbXM6IFNreUFnR3JpZEhlYWRlclBhcmFtcyk6IGJvb2xlYW4ge1xuICAgIHRoaXMuYWdJbml0KHBhcmFtcyk7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgI3VwZGF0ZUlubGluZUhlbHAoKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLiN2aWV3SW5pdGlhbGl6ZWQgfHwgIXRoaXMuI2FnSW5pdGlhbGl6ZWQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBpbmxpbmVIZWxwQ29tcG9uZW50ID0gdGhpcy5wYXJhbXM/LmlubGluZUhlbHBDb21wb25lbnQ7XG5cbiAgICBpZiAoXG4gICAgICBpbmxpbmVIZWxwQ29tcG9uZW50ICYmXG4gICAgICAoIXRoaXMuI2lubGluZUhlbHBDb21wb25lbnRSZWYgfHxcbiAgICAgICAgdGhpcy4jaW5saW5lSGVscENvbXBvbmVudFJlZi5jb21wb25lbnRUeXBlICE9PSBpbmxpbmVIZWxwQ29tcG9uZW50KVxuICAgICkge1xuICAgICAgdGhpcy4jZHluYW1pY0NvbXBvbmVudFNlcnZpY2UucmVtb3ZlQ29tcG9uZW50KFxuICAgICAgICB0aGlzLiNpbmxpbmVIZWxwQ29tcG9uZW50UmVmLFxuICAgICAgKTtcblxuICAgICAgY29uc3QgaGVhZGVySW5mbyA9IG5ldyBTa3lBZ0dyaWRIZWFkZXJJbmZvKCk7XG4gICAgICBoZWFkZXJJbmZvLmNvbHVtbiA9IHRoaXMucGFyYW1zPy5jb2x1bW47XG4gICAgICBoZWFkZXJJbmZvLmNvbnRleHQgPSB0aGlzLnBhcmFtcz8uY29udGV4dDtcbiAgICAgIGhlYWRlckluZm8uZGlzcGxheU5hbWUgPSB0aGlzLnBhcmFtcz8uZGlzcGxheU5hbWU7XG5cbiAgICAgIHRoaXMuI2lubGluZUhlbHBDb21wb25lbnRSZWYgPVxuICAgICAgICB0aGlzLiNkeW5hbWljQ29tcG9uZW50U2VydmljZS5jcmVhdGVDb21wb25lbnQoaW5saW5lSGVscENvbXBvbmVudCwge1xuICAgICAgICAgIHByb3ZpZGVyczogW1xuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBwcm92aWRlOiBTa3lBZ0dyaWRIZWFkZXJJbmZvLFxuICAgICAgICAgICAgICB1c2VWYWx1ZTogaGVhZGVySW5mbyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgXSxcbiAgICAgICAgICBlbnZpcm9ubWVudEluamVjdG9yOiB0aGlzLiNlbnZpcm9ubWVudEluamVjdG9yLFxuICAgICAgICAgIHJlZmVyZW5jZUVsOiB0aGlzLmlubGluZUhlbHBDb250YWluZXI/Lm5hdGl2ZUVsZW1lbnQsXG4gICAgICAgICAgbG9jYXRpb246IFNreUR5bmFtaWNDb21wb25lbnRMb2NhdGlvbi5FbGVtZW50Qm90dG9tLFxuICAgICAgICB9KTtcbiAgICB9IGVsc2UgaWYgKCFpbmxpbmVIZWxwQ29tcG9uZW50KSB7XG4gICAgICB0aGlzLiNkeW5hbWljQ29tcG9uZW50U2VydmljZS5yZW1vdmVDb21wb25lbnQoXG4gICAgICAgIHRoaXMuI2lubGluZUhlbHBDb21wb25lbnRSZWYsXG4gICAgICApO1xuICAgIH1cbiAgfVxuXG4gICN1cGRhdGVTb3J0KCk6IHZvaWQge1xuICAgIHRoaXMuc29ydE9yZGVyJC5uZXh0KHRoaXMucGFyYW1zPy5jb2x1bW4uZ2V0U29ydCgpIHx8IHVuZGVmaW5lZCk7XG4gIH1cblxuICAjdXBkYXRlU29ydEluZGV4KCk6IHZvaWQge1xuICAgIGNvbnN0IHNvcnRJbmRleCA9IHRoaXMucGFyYW1zPy5jb2x1bW4uZ2V0U29ydEluZGV4KCk7XG4gICAgY29uc3Qgb3RoZXJTb3J0Q29sdW1ucyA9IHRoaXMucGFyYW1zPy5hcGlcbiAgICAgID8uZ2V0Q29sdW1ucygpXG4gICAgICA/LnNvbWUoXG4gICAgICAgIChjb2x1bW4pID0+XG4gICAgICAgICAgY29sdW1uLmdldENvbElkKCkgIT09IHRoaXMucGFyYW1zPy5jb2x1bW4uZ2V0Q29sSWQoKSAmJlxuICAgICAgICAgICEhY29sdW1uLmdldFNvcnQoKSxcbiAgICAgICk7XG4gICAgaWYgKHNvcnRJbmRleCAhPT0gdW5kZWZpbmVkICYmIHNvcnRJbmRleCAhPT0gbnVsbCAmJiBvdGhlclNvcnRDb2x1bW5zKSB7XG4gICAgICB0aGlzLnNvcnRJbmRleERpc3BsYXkkLm5leHQoYCR7c29ydEluZGV4ICsgMX1gKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5zb3J0SW5kZXhEaXNwbGF5JC5uZXh0KCcnKTtcbiAgICB9XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJhZy1jZWxsLWxhYmVsLWNvbnRhaW5lclwiIHJvbGU9XCJwcmVzZW50YXRpb25cIj5cbiAgQGlmIChwYXJhbXM/LmVuYWJsZU1lbnUpIHtcbiAgICA8c3BhblxuICAgICAgY2xhc3M9XCJhZy1oZWFkZXItaWNvbiBhZy1oZWFkZXItY2VsbC1tZW51LWJ1dHRvblwiXG4gICAgICBhcmlhLWhpZGRlbj1cInRydWVcIlxuICAgICAgKGNsaWNrKT1cIm9uTWVudUNsaWNrKCRldmVudClcIlxuICAgID5cbiAgICAgIDxza3ktaWNvbiBpY29uPVwiZWxsaXBzaXNcIiAvPlxuICAgIDwvc3Bhbj5cbiAgfVxuICA8ZGl2IGNsYXNzPVwiYWctaGVhZGVyLWNlbGwtbGFiZWxcIiByb2xlPVwicHJlc2VudGF0aW9uXCI+XG4gICAgPHNwYW4gY2xhc3M9XCJhZy1oZWFkZXItY2VsbC1sYWJlbC1hbmQtaWNvbnNcIj5cbiAgICAgIEBpZiAocGFyYW1zPy5lbmFibGVTb3J0aW5nKSB7XG4gICAgICAgIDxidXR0b25cbiAgICAgICAgICBhcmlhLWhpZGRlbj1cInRydWVcIlxuICAgICAgICAgIGNsYXNzPVwiYWctaGVhZGVyLWNlbGwtdGV4dCBhZy1oZWFkZXItY2VsbC1sYWJlbC1zb3J0YWJsZSBza3ktYnRuLWxpbmstaW5saW5lXCJcbiAgICAgICAgICB0YWJpbmRleD1cIi0xXCJcbiAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cImFjY2Vzc2libGVIZWFkZXJUZXh0XCJcbiAgICAgICAgICBbaW5uZXJUZXh0XT1cImRpc3BsYXlOYW1lID8/ICcnXCJcbiAgICAgICAgICBbc2t5VGhlbWVDbGFzc109XCJ7ICdza3ktZm9udC1oZWFkaW5nLTQnOiAnbW9kZXJuJyB9XCJcbiAgICAgICAgICAoY2xpY2spPVwib25Tb3J0UmVxdWVzdGVkKCRldmVudClcIlxuICAgICAgICA+PC9idXR0b24+XG4gICAgICB9IEBlbHNlIGlmIChkaXNwbGF5TmFtZSkge1xuICAgICAgICA8c3BhblxuICAgICAgICAgIGFyaWEtaGlkZGVuPVwidHJ1ZVwiXG4gICAgICAgICAgY2xhc3M9XCJhZy1oZWFkZXItY2VsbC10ZXh0XCJcbiAgICAgICAgICBbc2t5VGhlbWVDbGFzc109XCJ7ICdza3ktZm9udC1oZWFkaW5nLTQnOiAnbW9kZXJuJyB9XCJcbiAgICAgICAgICA+e3sgZGlzcGxheU5hbWUgfX08L3NwYW5cbiAgICAgICAgPlxuICAgICAgfVxuICAgICAgQGlmIChmaWx0ZXJFbmFibGVkJCB8IGFzeW5jKSB7XG4gICAgICAgIDxzcGFuXG4gICAgICAgICAgYXJpYS1oaWRkZW49XCJ0cnVlXCJcbiAgICAgICAgICBjbGFzcz1cImFnLWhlYWRlci1pY29uIGFnLWhlYWRlci1sYWJlbC1pY29uIGFnLWZpbHRlci1pY29uXCJcbiAgICAgICAgICA+PHNreS1pY29uIGljb249XCJmaWx0ZXJcIlxuICAgICAgICAvPjwvc3Bhbj5cbiAgICAgIH1cbiAgICAgIEBpZiAocGFyYW1zPy5lbmFibGVTb3J0aW5nKSB7XG4gICAgICAgIEBpZiAoc29ydE9yZGVyJCB8IGFzeW5jOyBhcyBzb3J0RGlyZWN0aW9uKSB7XG4gICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgY2xhc3M9XCJhZy1zb3J0LWluZGljYXRvci1jb250YWluZXIgc2t5LWJ0biBza3ktYnRuLWljb24tYm9yZGVybGVzc1wiXG4gICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgIChjbGljayk9XCJvblNvcnRSZXF1ZXN0ZWQoJGV2ZW50KVwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgQGlmIChzb3J0RGlyZWN0aW9uID09PSAnZGVzYycpIHtcbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJhZy1oZWFkZXItaWNvbiBhZy1oZWFkZXItbGFiZWwtaWNvblwiPlxuICAgICAgICAgICAgICAgIDxza3ktaWNvbiAqc2t5VGhlbWVJZj1cIidkZWZhdWx0J1wiIGljb249XCJjYXJldC1kb3duXCIgLz5cbiAgICAgICAgICAgICAgICA8c2t5LWljb24gKnNreVRoZW1lSWY9XCInbW9kZXJuJ1wiIGljb249XCJjaGV2cm9uLWRvd25cIiAvPlxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwic2t5LXNjcmVlbi1yZWFkZXItb25seVwiPnt7XG4gICAgICAgICAgICAgICAgICAnc2t5X2FnX2dyaWRfY29sdW1uX2hlYWRlcl9zb3J0X2J1dHRvbl9hcmlhX2xhYmVsX2N1cnJlbnRseV9kZXNjJ1xuICAgICAgICAgICAgICAgICAgICB8IHNreUxpYlJlc291cmNlczogZGlzcGxheU5hbWUgPz8gYWNjZXNzaWJsZUhlYWRlclRleHRcbiAgICAgICAgICAgICAgICB9fTwvc3Bhbj48L3NwYW5cbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgQGlmIChzb3J0RGlyZWN0aW9uID09PSAnYXNjJykge1xuICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImFnLWhlYWRlci1pY29uIGFnLWhlYWRlci1sYWJlbC1pY29uXCI+XG4gICAgICAgICAgICAgICAgPHNreS1pY29uICpza3lUaGVtZUlmPVwiJ2RlZmF1bHQnXCIgaWNvbj1cImNhcmV0LXVwXCIgLz5cbiAgICAgICAgICAgICAgICA8c2t5LWljb24gKnNreVRoZW1lSWY9XCInbW9kZXJuJ1wiIGljb249XCJjaGV2cm9uLXVwXCIgLz5cbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInNreS1zY3JlZW4tcmVhZGVyLW9ubHlcIj57e1xuICAgICAgICAgICAgICAgICAgJ3NreV9hZ19ncmlkX2NvbHVtbl9oZWFkZXJfc29ydF9idXR0b25fYXJpYV9sYWJlbF9jdXJyZW50bHlfYXNjJ1xuICAgICAgICAgICAgICAgICAgICB8IHNreUxpYlJlc291cmNlczogZGlzcGxheU5hbWUgPz8gYWNjZXNzaWJsZUhlYWRlclRleHRcbiAgICAgICAgICAgICAgICB9fTwvc3Bhbj48L3NwYW5cbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBAaWYgKHNvcnRJbmRleERpc3BsYXkkIHwgYXN5bmM7IGFzIHNvcnRJbmRleERpc3BsYXkpIHtcbiAgICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgICBhcmlhLWhpZGRlbj1cInRydWVcIlxuICAgICAgICAgICAgICAgIGNsYXNzPVwiYWctc29ydC1pbmRpY2F0b3ItaWNvbiBhZy1zb3J0LW9yZGVyXCJcbiAgICAgICAgICAgICAgICA+e3sgc29ydEluZGV4RGlzcGxheSB9fTwvc3BhblxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICB9XG4gICAgICAgICAgPC9idXR0b24+XG4gICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgIDxzcGFuIGNsYXNzPVwic2t5LXNjcmVlbi1yZWFkZXItb25seVwiPnt7XG4gICAgICAgICAgICAnc2t5X2FnX2dyaWRfY29sdW1uX2hlYWRlcl9zb3J0X2J1dHRvbl9hcmlhX2xhYmVsX2N1cnJlbnRseV9ub3Rfc29ydGVkJ1xuICAgICAgICAgICAgICB8IHNreUxpYlJlc291cmNlczogZGlzcGxheU5hbWUgPz8gYWNjZXNzaWJsZUhlYWRlclRleHRcbiAgICAgICAgICB9fTwvc3Bhbj5cbiAgICAgICAgfVxuICAgICAgfVxuICAgIDwvc3Bhbj5cbiAgICA8c3BhbiAjaW5saW5lSGVscENvbnRhaW5lciBjbGFzcz1cInNreS1jb250cm9sLWhlbHAtY29udGFpbmVyXCI+PC9zcGFuPlxuICA8L2Rpdj5cbjwvZGl2PlxuIl19
|
|
181
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGVhZGVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tcG9uZW50cy9hZy1ncmlkL3NyYy9saWIvbW9kdWxlcy9hZy1ncmlkL2hlYWRlci9oZWFkZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21wb25lbnRzL2FnLWdyaWQvc3JjL2xpYi9tb2R1bGVzL2FnLWdyaWQvaGVhZGVyL2hlYWRlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBRUwsdUJBQXVCLEVBQ3ZCLGlCQUFpQixFQUNqQixTQUFTLEVBRVQsVUFBVSxFQUNWLG1CQUFtQixFQUVuQixTQUFTLEVBQ1QsUUFBUSxFQUNSLE1BQU0sRUFDTixNQUFNLEdBQ1AsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUNMLDJCQUEyQixFQUMzQiwwQkFBMEIsR0FDM0IsTUFBTSxhQUFhLENBQUM7QUFJckIsT0FBTyxFQUFFLGVBQWUsRUFBRSxZQUFZLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFdkUsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7Ozs7OztBQUczRDs7R0FFRztBQVlILE1BQU0sT0FBTyx3QkFBd0I7SUFYckM7UUFja0IsbUJBQWMsR0FBRyxJQUFJLGVBQWUsQ0FBVSxLQUFLLENBQUMsQ0FBQztRQUVyRSxrSEFBa0g7UUFDbEgsa0ZBQWtGO1FBQy9ELHlCQUFvQixHQUFHLFFBQVEsQ0FBQyxHQUFHLEVBQUU7WUFDdEQsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQzdCLElBQ0UsTUFBTSxFQUFFLFdBQVc7Z0JBQ25CLENBQUMsTUFBTSxFQUFFLE1BQU0sQ0FBQyxTQUFTLEVBQUUsQ0FBQyxxQkFBcUIsRUFBRSxZQUFZLEVBQy9ELENBQUM7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OU1VLHdCQUF3QjttR0FBeEIsd0JBQXdCLDBUQW1CTyxVQUFVLDJDQzNEdEQseTFHQXFGQTs7NEZEN0NhLHdCQUF3QjtrQkFYcEMsU0FBUzsrQkFDRSxvQkFBb0IsbUJBR2IsdUJBQXVCLENBQUMsTUFBTSxRQUN6Qzt3QkFDSixjQUFjLEVBQUUsd0JBQXdCO3dCQUN4QyxtQkFBbUIsRUFBRSx5Q0FBeUM7d0JBQzlELGFBQWEsRUFBRSxRQUFRO3FCQUN4Qjs4QkFzQlMsbUJBQW1CO3NCQUQ1QixTQUFTO3VCQUFDLHFCQUFxQixFQUFFLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQWZ0ZXJWaWV3SW5pdCxcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBDb21wb25lbnQsXG4gIENvbXBvbmVudFJlZixcbiAgRWxlbWVudFJlZixcbiAgRW52aXJvbm1lbnRJbmplY3RvcixcbiAgT25EZXN0cm95LFxuICBWaWV3Q2hpbGQsXG4gIGNvbXB1dGVkLFxuICBpbmplY3QsXG4gIHNpZ25hbCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICBTa3lEeW5hbWljQ29tcG9uZW50TG9jYXRpb24sXG4gIFNreUR5bmFtaWNDb21wb25lbnRTZXJ2aWNlLFxufSBmcm9tICdAc2t5dXgvY29yZSc7XG5cbmltcG9ydCB7IElIZWFkZXJBbmd1bGFyQ29tcCB9IGZyb20gJ2FnLWdyaWQtYW5ndWxhcic7XG5pbXBvcnQgeyBDb2x1bW5Nb3ZlZEV2ZW50IH0gZnJvbSAnYWctZ3JpZC1jb21tdW5pdHknO1xuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBTdWJzY3JpcHRpb24sIGZyb21FdmVudFBhdHRlcm4gfSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHsgU2t5QWdHcmlkSGVhZGVySW5mbyB9IGZyb20gJy4uL3R5cGVzL2hlYWRlci1pbmZvJztcbmltcG9ydCB7IFNreUFnR3JpZEhlYWRlclBhcmFtcyB9IGZyb20gJy4uL3R5cGVzL2hlYWRlci1wYXJhbXMnO1xuXG4vKipcbiAqIEBpbnRlcm5hbFxuICovXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdza3ktYWctZ3JpZC1oZWFkZXInLFxuICB0ZW1wbGF0ZVVybDogJy4vaGVhZGVyLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vaGVhZGVyLmNvbXBvbmVudC5zY3NzJ10sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBob3N0OiB7XG4gICAgJ1thdHRyLnRpdGxlXSc6ICdhY2Nlc3NpYmxlSGVhZGVyVGV4dCgpJyxcbiAgICAnW2F0dHIuYXJpYS1sYWJlbF0nOiAnZGlzcGxheU5hbWUoKSB8fCBhY2Nlc3NpYmxlSGVhZGVyVGV4dCgpJyxcbiAgICAnW2F0dHIucm9sZV0nOiAnXCJub3RlXCInLFxuICB9LFxufSlcbmV4cG9ydCBjbGFzcyBTa3lBZ0dyaWRIZWFkZXJDb21wb25lbnRcbiAgaW1wbGVtZW50cyBJSGVhZGVyQW5ndWxhckNvbXAsIE9uRGVzdHJveSwgQWZ0ZXJWaWV3SW5pdFxue1xuICBwdWJsaWMgcmVhZG9ubHkgZmlsdGVyRW5hYmxlZCQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KGZhbHNlKTtcblxuICAvLyBGb3IgYWNjZXNzaWJpbGl0eSwgd2UgbmVlZCB0byBzZXQgdGhlIHRpdGxlIGF0dHJpYnV0ZSBvbiB0aGUgaGVhZGVyIGVsZW1lbnQgaWYgdGhlcmUgaXMgbm8gdmlzaWJsZSBoZWFkZXIgdGV4dC5cbiAgLy8gaHR0cHM6Ly9kZXF1ZXVuaXZlcnNpdHkuY29tL3J1bGVzL2F4ZS80LjUvZW1wdHktdGFibGUtaGVhZGVyP2FwcGxpY2F0aW9uPWF4ZUFQSVxuICBwcm90ZWN0ZWQgcmVhZG9ubHkgYWNjZXNzaWJsZUhlYWRlclRleHQgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgY29uc3QgcGFyYW1zID0gdGhpcy5wYXJhbXMoKTtcbiAgICBpZiAoXG4gICAgICBwYXJhbXM/LmRpc3BsYXlOYW1lICYmXG4gICAgICAhcGFyYW1zPy5jb2x1bW4uZ2V0Q29sRGVmKCkuaGVhZGVyQ29tcG9uZW50UGFyYW1zPy5oZWFkZXJIaWRkZW5cbiAgICApIHtcbiAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBwYXJhbXM/LmRpc3BsYXlOYW1lIHx8IHBhcmFtcz8uY29sdW1uLmdldENvbERlZigpLmZpZWxkO1xuICAgIH1cbiAgfSk7XG5cbiAgQFZpZXdDaGlsZCgnaW5saW5lSGVscENvbnRhaW5lcicsIHsgcmVhZDogRWxlbWVudFJlZiwgc3RhdGljOiB0cnVlIH0pXG4gIHByb3RlY3RlZCBpbmxpbmVIZWxwQ29udGFpbmVyOiBFbGVtZW50UmVmIHwgdW5kZWZpbmVkO1xuXG4gIHByb3RlY3RlZCByZWFkb25seSBwYXJhbXMgPSBzaWduYWw8U2t5QWdHcmlkSGVhZGVyUGFyYW1zIHwgdW5kZWZpbmVkPihcbiAgICB1bmRlZmluZWQsXG4gICk7XG4gIHByb3RlY3RlZCBzb3J0ZWQgPSAnJztcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IHNvcnRPcmRlciQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PFxuICAgICdhc2MnIHwgJ2Rlc2MnIHwgdW5kZWZpbmVkXG4gID4odW5kZWZpbmVkKTtcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IHNvcnRJbmRleERpc3BsYXkkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxzdHJpbmc+KCcnKTtcblxuICBwcm90ZWN0ZWQgZGlzcGxheU5hbWUgPSBjb21wdXRlZDxzdHJpbmcgfCB1bmRlZmluZWQ+KCgpID0+IHtcbiAgICBjb25zdCBwYXJhbXMgPSB0aGlzLnBhcmFtcygpO1xuICAgIGlmIChcbiAgICAgIHBhcmFtcz8uZGlzcGxheU5hbWUgJiZcbiAgICAgICFwYXJhbXM/LmNvbHVtbi5nZXRDb2xEZWYoKS5oZWFkZXJDb21wb25lbnRQYXJhbXM/LmhlYWRlckhpZGRlblxuICAgICkge1xuICAgICAgcmV0dXJuIHBhcmFtcy5kaXNwbGF5TmFtZTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG4gIH0pO1xuXG4gICNzdWJzY3JpcHRpb25zID0gbmV3IFN1YnNjcmlwdGlvbigpO1xuICAjaW5saW5lSGVscENvbXBvbmVudFJlZjogQ29tcG9uZW50UmVmPHVua25vd24+IHwgdW5kZWZpbmVkO1xuICAjdmlld0luaXRpYWxpemVkID0gZmFsc2U7XG4gICNhZ0luaXRpYWxpemVkID0gZmFsc2U7XG4gICNsZWZ0UG9zaXRpb24gPSAwO1xuXG4gIHJlYWRvbmx5ICNjaGFuZ2VEZXRlY3RvciA9IGluamVjdChDaGFuZ2VEZXRlY3RvclJlZik7XG4gIHJlYWRvbmx5ICNkeW5hbWljQ29tcG9uZW50U2VydmljZSA9IGluamVjdChTa3lEeW5hbWljQ29tcG9uZW50U2VydmljZSk7XG4gIHJlYWRvbmx5ICNlbnZpcm9ubWVudEluamVjdG9yID0gaW5qZWN0KEVudmlyb25tZW50SW5qZWN0b3IpO1xuXG4gIHB1YmxpYyBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgdGhpcy4jdmlld0luaXRpYWxpemVkID0gdHJ1ZTtcbiAgICB0aGlzLiN1cGRhdGVJbmxpbmVIZWxwKCk7XG4gIH1cblxuICBwdWJsaWMgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy4jc3Vic2NyaXB0aW9ucy51bnN1YnNjcmliZSgpO1xuICB9XG5cbiAgcHVibGljIGFnSW5pdChwYXJhbXM6IFNreUFnR3JpZEhlYWRlclBhcmFtcyB8IHVuZGVmaW5lZCk6IHZvaWQge1xuICAgIHRoaXMuI2FnSW5pdGlhbGl6ZWQgPSB0cnVlO1xuICAgIHRoaXMucGFyYW1zLnNldChwYXJhbXMpO1xuICAgIHRoaXMuI3N1YnNjcmlwdGlvbnMudW5zdWJzY3JpYmUoKTtcbiAgICBpZiAoIXBhcmFtcykge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLiNsZWZ0UG9zaXRpb24gPSBwYXJhbXMuY29sdW1uLmdldExlZnQoKSA/PyAwO1xuICAgIHRoaXMuI3N1YnNjcmlwdGlvbnMgPSBuZXcgU3Vic2NyaXB0aW9uKCk7XG4gICAgaWYgKHBhcmFtcy5jb2x1bW4uaXNGaWx0ZXJBbGxvd2VkKCkpIHtcbiAgICAgIHRoaXMuI3N1YnNjcmlwdGlvbnMuYWRkKFxuICAgICAgICBmcm9tRXZlbnRQYXR0ZXJuKFxuICAgICAgICAgIChoYW5kbGVyKSA9PiBwYXJhbXMuY29sdW1uLmFkZEV2ZW50TGlzdGVuZXIoJ2ZpbHRlckNoYW5nZWQnLCBoYW5kbGVyKSxcbiAgICAgICAgICAoaGFuZGxlcikgPT5cbiAgICAgICAgICAgIHBhcmFtcy5jb2x1bW4ucmVtb3ZlRXZlbnRMaXN0ZW5lcignZmlsdGVyQ2hhbmdlZCcsIGhhbmRsZXIpLFxuICAgICAgICApLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgY29uc3QgaXNGaWx0ZXJBY3RpdmUgPSBwYXJhbXMuY29sdW1uLmlzRmlsdGVyQWN0aXZlKCk7XG4gICAgICAgICAgaWYgKGlzRmlsdGVyQWN0aXZlICE9PSB0aGlzLmZpbHRlckVuYWJsZWQkLmdldFZhbHVlKCkpIHtcbiAgICAgICAgICAgIHRoaXMuZmlsdGVyRW5hYmxlZCQubmV4dChpc0ZpbHRlckFjdGl2ZSk7XG4gICAgICAgICAgfVxuICAgICAgICB9KSxcbiAgICAgICk7XG4gICAgfVxuICAgIGlmIChwYXJhbXMuZW5hYmxlU29ydGluZykge1xuICAgICAgLy8gQ29sdW1uIHNvcnQgc3RhdGUgY2hhbmdlc1xuICAgICAgdGhpcy4jc3Vic2NyaXB0aW9ucy5hZGQoXG4gICAgICAgIGZyb21FdmVudFBhdHRlcm4oXG4gICAgICAgICAgKGhhbmRsZXIpID0+IHBhcmFtcy5jb2x1bW4uYWRkRXZlbnRMaXN0ZW5lcignc29ydENoYW5nZWQnLCBoYW5kbGVyKSxcbiAgICAgICAgICAoaGFuZGxlcikgPT5cbiAgICAgICAgICAgIHBhcmFtcy5jb2x1bW4ucmVtb3ZlRXZlbnRMaXN0ZW5lcignc29ydENoYW5nZWQnLCBoYW5kbGVyKSxcbiAgICAgICAgKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgIHRoaXMuI3VwZGF0ZVNvcnQoKTtcbiAgICAgICAgfSksXG4gICAgICApO1xuICAgICAgLy8gT3RoZXIgY29sdW1uIHNvcnQgc3RhdGUgY2hhbmdlcywgZm9yIG11bHRpLWNvbHVtbiBzb3J0aW5nXG4gICAgICB0aGlzLiNzdWJzY3JpcHRpb25zLmFkZChcbiAgICAgICAgZnJvbUV2ZW50UGF0dGVybihcbiAgICAgICAgICAoaGFuZGxlcikgPT4gcGFyYW1zLmFwaS5hZGRFdmVudExpc3RlbmVyKCdzb3J0Q2hhbmdlZCcsIGhhbmRsZXIpLFxuICAgICAgICAgIChoYW5kbGVyKSA9PiBwYXJhbXMuYXBpLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3NvcnRDaGFuZ2VkJywgaGFuZGxlciksXG4gICAgICAgICkuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICB0aGlzLiN1cGRhdGVTb3J0SW5kZXgoKTtcbiAgICAgICAgfSksXG4gICAgICApO1xuICAgICAgdGhpcy4jdXBkYXRlU29ydCgpO1xuICAgICAgdGhpcy4jdXBkYXRlU29ydEluZGV4KCk7XG4gICAgfVxuXG4gICAgLy8gV2hlbiB0aGUgY29sdW1uIGlzIG1vdmVkIGxlZnQgdmlhIHRoZSBrZXlib2FyZCwgdGhlIGVsZW1lbnQgaXMgZGV0YWNoZWRcbiAgICAvLyBhbmQgcmVhdHRhY2hlZCB0byB0aGUgRE9NIHRvIG1haW50YWluIERPTSBvcmRlciwgYW5kIGl0cyBmb2N1cyBpcyBsb3N0LlxuICAgIHRoaXMuI3N1YnNjcmlwdGlvbnMuYWRkKFxuICAgICAgZnJvbUV2ZW50UGF0dGVybjxDb2x1bW5Nb3ZlZEV2ZW50PihcbiAgICAgICAgKGhhbmRsZXIpID0+IHBhcmFtcy5hcGkuYWRkRXZlbnRMaXN0ZW5lcignY29sdW1uTW92ZWQnLCBoYW5kbGVyKSxcbiAgICAgICAgKGhhbmRsZXIpID0+IHBhcmFtcy5hcGkucmVtb3ZlRXZlbnRMaXN0ZW5lcignY29sdW1uTW92ZWQnLCBoYW5kbGVyKSxcbiAgICAgICkuc3Vic2NyaWJlKChldmVudCkgPT4ge1xuICAgICAgICBjb25zdCBsZWZ0ID0gZXZlbnQuY29sdW1uPy5nZXRMZWZ0KCkgPz8gMDtcbiAgICAgICAgY29uc3Qgb2xkTGVmdCA9IHRoaXMuI2xlZnRQb3NpdGlvbjtcbiAgICAgICAgaWYgKFxuICAgICAgICAgIGV2ZW50LmNvbHVtbiA9PT0gcGFyYW1zLmNvbHVtbiAmJlxuICAgICAgICAgIGV2ZW50LnNvdXJjZSA9PT0gJ3VpQ29sdW1uTW92ZWQnICYmXG4gICAgICAgICAgbGVmdCA8IG9sZExlZnRcbiAgICAgICAgKSB7XG4gICAgICAgICAgcGFyYW1zLmVHcmlkSGVhZGVyLmZvY3VzKCk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy4jbGVmdFBvc2l0aW9uID0gbGVmdDtcbiAgICAgIH0pLFxuICAgICk7XG5cbiAgICB0aGlzLiN1cGRhdGVJbmxpbmVIZWxwKCk7XG4gICAgdGhpcy4jY2hhbmdlRGV0ZWN0b3IubWFya0ZvckNoZWNrKCk7XG4gIH1cblxuICBwdWJsaWMgb25NZW51Q2xpY2soJGV2ZW50OiBFdmVudCk6IHZvaWQge1xuICAgIHRoaXMucGFyYW1zKCk/LnNob3dDb2x1bW5NZW51KCRldmVudC50YXJnZXQgYXMgSFRNTEVsZW1lbnQpO1xuICB9XG5cbiAgcHVibGljIG9uU29ydFJlcXVlc3RlZChldmVudDogTW91c2VFdmVudCk6IHZvaWQge1xuICAgIGlmICh0aGlzLnBhcmFtcygpPy5lbmFibGVTb3J0aW5nKSB7XG4gICAgICB0aGlzLnBhcmFtcygpPy5wcm9ncmVzc1NvcnQoZXZlbnQuc2hpZnRLZXkpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyByZWZyZXNoKHBhcmFtczogU2t5QWdHcmlkSGVhZGVyUGFyYW1zKTogYm9vbGVhbiB7XG4gICAgdGhpcy5hZ0luaXQocGFyYW1zKTtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICAjdXBkYXRlSW5saW5lSGVscCgpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuI3ZpZXdJbml0aWFsaXplZCB8fCAhdGhpcy4jYWdJbml0aWFsaXplZCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IGlubGluZUhlbHBDb21wb25lbnQgPSB0aGlzLnBhcmFtcygpPy5pbmxpbmVIZWxwQ29tcG9uZW50O1xuXG4gICAgaWYgKFxuICAgICAgaW5saW5lSGVscENvbXBvbmVudCAmJlxuICAgICAgKCF0aGlzLiNpbmxpbmVIZWxwQ29tcG9uZW50UmVmIHx8XG4gICAgICAgIHRoaXMuI2lubGluZUhlbHBDb21wb25lbnRSZWYuY29tcG9uZW50VHlwZSAhPT0gaW5saW5lSGVscENvbXBvbmVudClcbiAgICApIHtcbiAgICAgIHRoaXMuI2R5bmFtaWNDb21wb25lbnRTZXJ2aWNlLnJlbW92ZUNvbXBvbmVudChcbiAgICAgICAgdGhpcy4jaW5saW5lSGVscENvbXBvbmVudFJlZixcbiAgICAgICk7XG5cbiAgICAgIGNvbnN0IGhlYWRlckluZm8gPSBuZXcgU2t5QWdHcmlkSGVhZGVySW5mbygpO1xuICAgICAgaGVhZGVySW5mby5jb2x1bW4gPSB0aGlzLnBhcmFtcygpPy5jb2x1bW47XG4gICAgICBoZWFkZXJJbmZvLmNvbnRleHQgPSB0aGlzLnBhcmFtcygpPy5jb250ZXh0O1xuICAgICAgaGVhZGVySW5mby5kaXNwbGF5TmFtZSA9IHRoaXMucGFyYW1zKCk/LmRpc3BsYXlOYW1lO1xuXG4gICAgICB0aGlzLiNpbmxpbmVIZWxwQ29tcG9uZW50UmVmID1cbiAgICAgICAgdGhpcy4jZHluYW1pY0NvbXBvbmVudFNlcnZpY2UuY3JlYXRlQ29tcG9uZW50KGlubGluZUhlbHBDb21wb25lbnQsIHtcbiAgICAgICAgICBwcm92aWRlcnM6IFtcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgcHJvdmlkZTogU2t5QWdHcmlkSGVhZGVySW5mbyxcbiAgICAgICAgICAgICAgdXNlVmFsdWU6IGhlYWRlckluZm8sXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIF0sXG4gICAgICAgICAgZW52aXJvbm1lbnRJbmplY3RvcjogdGhpcy4jZW52aXJvbm1lbnRJbmplY3RvcixcbiAgICAgICAgICByZWZlcmVuY2VFbDogdGhpcy5pbmxpbmVIZWxwQ29udGFpbmVyPy5uYXRpdmVFbGVtZW50LFxuICAgICAgICAgIGxvY2F0aW9uOiBTa3lEeW5hbWljQ29tcG9uZW50TG9jYXRpb24uRWxlbWVudEJvdHRvbSxcbiAgICAgICAgfSk7XG4gICAgfSBlbHNlIGlmICghaW5saW5lSGVscENvbXBvbmVudCkge1xuICAgICAgdGhpcy4jZHluYW1pY0NvbXBvbmVudFNlcnZpY2UucmVtb3ZlQ29tcG9uZW50KFxuICAgICAgICB0aGlzLiNpbmxpbmVIZWxwQ29tcG9uZW50UmVmLFxuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICAjdXBkYXRlU29ydCgpOiB2b2lkIHtcbiAgICB0aGlzLnNvcnRPcmRlciQubmV4dCh0aGlzLnBhcmFtcygpPy5jb2x1bW4uZ2V0U29ydCgpIHx8IHVuZGVmaW5lZCk7XG4gIH1cblxuICAjdXBkYXRlU29ydEluZGV4KCk6IHZvaWQge1xuICAgIGNvbnN0IHNvcnRJbmRleCA9IHRoaXMucGFyYW1zKCk/LmNvbHVtbi5nZXRTb3J0SW5kZXgoKTtcbiAgICBjb25zdCBvdGhlclNvcnRDb2x1bW5zID0gdGhpcy5wYXJhbXMoKVxuICAgICAgPy5hcGk/LmdldENvbHVtbnMoKVxuICAgICAgPy5zb21lKFxuICAgICAgICAoY29sdW1uKSA9PlxuICAgICAgICAgIGNvbHVtbi5nZXRDb2xJZCgpICE9PSB0aGlzLnBhcmFtcygpPy5jb2x1bW4uZ2V0Q29sSWQoKSAmJlxuICAgICAgICAgICEhY29sdW1uLmdldFNvcnQoKSxcbiAgICAgICk7XG4gICAgaWYgKHNvcnRJbmRleCAhPT0gdW5kZWZpbmVkICYmIHNvcnRJbmRleCAhPT0gbnVsbCAmJiBvdGhlclNvcnRDb2x1bW5zKSB7XG4gICAgICB0aGlzLnNvcnRJbmRleERpc3BsYXkkLm5leHQoYCR7c29ydEluZGV4ICsgMX1gKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5zb3J0SW5kZXhEaXNwbGF5JC5uZXh0KCcnKTtcbiAgICB9XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJhZy1jZWxsLWxhYmVsLWNvbnRhaW5lclwiIHJvbGU9XCJwcmVzZW50YXRpb25cIj5cbiAgQGlmIChwYXJhbXMoKT8uZW5hYmxlTWVudSkge1xuICAgIDxzcGFuXG4gICAgICBjbGFzcz1cImFnLWhlYWRlci1pY29uIGFnLWhlYWRlci1jZWxsLW1lbnUtYnV0dG9uXCJcbiAgICAgIGFyaWEtaGlkZGVuPVwidHJ1ZVwiXG4gICAgICAoY2xpY2spPVwib25NZW51Q2xpY2soJGV2ZW50KVwiXG4gICAgPlxuICAgICAgPHNreS1pY29uIGljb249XCJlbGxpcHNpc1wiIC8+XG4gICAgPC9zcGFuPlxuICB9XG4gIDxkaXYgY2xhc3M9XCJhZy1oZWFkZXItY2VsbC1sYWJlbFwiIHJvbGU9XCJwcmVzZW50YXRpb25cIj5cbiAgICA8c3BhbiBjbGFzcz1cImFnLWhlYWRlci1jZWxsLWxhYmVsLWFuZC1pY29uc1wiPlxuICAgICAgQGlmIChwYXJhbXMoKT8uZW5hYmxlU29ydGluZykge1xuICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgYXJpYS1oaWRkZW49XCJ0cnVlXCJcbiAgICAgICAgICBjbGFzcz1cImFnLWhlYWRlci1jZWxsLXRleHQgYWctaGVhZGVyLWNlbGwtbGFiZWwtc29ydGFibGUgc2t5LWJ0bi1saW5rLWlubGluZVwiXG4gICAgICAgICAgdGFiaW5kZXg9XCItMVwiXG4gICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJhY2Nlc3NpYmxlSGVhZGVyVGV4dCgpXCJcbiAgICAgICAgICBbaW5uZXJUZXh0XT1cImRpc3BsYXlOYW1lKCkgPz8gJydcIlxuICAgICAgICAgIFtza3lUaGVtZUNsYXNzXT1cInsgJ3NreS1mb250LWhlYWRpbmctNCc6ICdtb2Rlcm4nIH1cIlxuICAgICAgICAgIChjbGljayk9XCJvblNvcnRSZXF1ZXN0ZWQoJGV2ZW50KVwiXG4gICAgICAgID48L2J1dHRvbj5cbiAgICAgIH0gQGVsc2UgaWYgKGRpc3BsYXlOYW1lKCkpIHtcbiAgICAgICAgPHNwYW5cbiAgICAgICAgICBhcmlhLWhpZGRlbj1cInRydWVcIlxuICAgICAgICAgIGNsYXNzPVwiYWctaGVhZGVyLWNlbGwtdGV4dFwiXG4gICAgICAgICAgW3NreVRoZW1lQ2xhc3NdPVwieyAnc2t5LWZvbnQtaGVhZGluZy00JzogJ21vZGVybicgfVwiXG4gICAgICAgICAgPnt7IGRpc3BsYXlOYW1lKCkgfX08L3NwYW5cbiAgICAgICAgPlxuICAgICAgfVxuICAgICAgQGlmIChmaWx0ZXJFbmFibGVkJCB8IGFzeW5jKSB7XG4gICAgICAgIDxzcGFuXG4gICAgICAgICAgYXJpYS1oaWRkZW49XCJ0cnVlXCJcbiAgICAgICAgICBjbGFzcz1cImFnLWhlYWRlci1pY29uIGFnLWhlYWRlci1sYWJlbC1pY29uIGFnLWZpbHRlci1pY29uXCJcbiAgICAgICAgICA+PHNreS1pY29uIGljb249XCJmaWx0ZXJcIlxuICAgICAgICAvPjwvc3Bhbj5cbiAgICAgIH1cbiAgICAgIEBpZiAocGFyYW1zKCk/LmVuYWJsZVNvcnRpbmcpIHtcbiAgICAgICAgQGlmIChzb3J0T3JkZXIkIHwgYXN5bmM7IGFzIHNvcnREaXJlY3Rpb24pIHtcbiAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICBjbGFzcz1cImFnLXNvcnQtaW5kaWNhdG9yLWNvbnRhaW5lciBza3ktYnRuIHNreS1idG4taWNvbi1ib3JkZXJsZXNzXCJcbiAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgKGNsaWNrKT1cIm9uU29ydFJlcXVlc3RlZCgkZXZlbnQpXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICBAaWYgKHNvcnREaXJlY3Rpb24gPT09ICdkZXNjJykge1xuICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImFnLWhlYWRlci1pY29uIGFnLWhlYWRlci1sYWJlbC1pY29uXCI+XG4gICAgICAgICAgICAgICAgPHNreS1pY29uICpza3lUaGVtZUlmPVwiJ2RlZmF1bHQnXCIgaWNvbj1cImNhcmV0LWRvd25cIiAvPlxuICAgICAgICAgICAgICAgIDxza3ktaWNvbiAqc2t5VGhlbWVJZj1cIidtb2Rlcm4nXCIgaWNvbj1cImNoZXZyb24tZG93blwiIC8+XG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJza3ktc2NyZWVuLXJlYWRlci1vbmx5XCI+e3tcbiAgICAgICAgICAgICAgICAgICdza3lfYWdfZ3JpZF9jb2x1bW5faGVhZGVyX3NvcnRfYnV0dG9uX2FyaWFfbGFiZWxfY3VycmVudGx5X2Rlc2MnXG4gICAgICAgICAgICAgICAgICAgIHwgc2t5TGliUmVzb3VyY2VzOiBkaXNwbGF5TmFtZSgpID8/IGFjY2Vzc2libGVIZWFkZXJUZXh0KClcbiAgICAgICAgICAgICAgICB9fTwvc3Bhbj48L3NwYW5cbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgQGlmIChzb3J0RGlyZWN0aW9uID09PSAnYXNjJykge1xuICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImFnLWhlYWRlci1pY29uIGFnLWhlYWRlci1sYWJlbC1pY29uXCI+XG4gICAgICAgICAgICAgICAgPHNreS1pY29uICpza3lUaGVtZUlmPVwiJ2RlZmF1bHQnXCIgaWNvbj1cImNhcmV0LXVwXCIgLz5cbiAgICAgICAgICAgICAgICA8c2t5LWljb24gKnNreVRoZW1lSWY9XCInbW9kZXJuJ1wiIGljb249XCJjaGV2cm9uLXVwXCIgLz5cbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInNreS1zY3JlZW4tcmVhZGVyLW9ubHlcIj57e1xuICAgICAgICAgICAgICAgICAgJ3NreV9hZ19ncmlkX2NvbHVtbl9oZWFkZXJfc29ydF9idXR0b25fYXJpYV9sYWJlbF9jdXJyZW50bHlfYXNjJ1xuICAgICAgICAgICAgICAgICAgICB8IHNreUxpYlJlc291cmNlczogZGlzcGxheU5hbWUoKSA/PyBhY2Nlc3NpYmxlSGVhZGVyVGV4dCgpXG4gICAgICAgICAgICAgICAgfX08L3NwYW4+PC9zcGFuXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgQGlmIChzb3J0SW5kZXhEaXNwbGF5JCB8IGFzeW5jOyBhcyBzb3J0SW5kZXhEaXNwbGF5KSB7XG4gICAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgICAgYXJpYS1oaWRkZW49XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImFnLXNvcnQtaW5kaWNhdG9yLWljb24gYWctc29ydC1vcmRlclwiXG4gICAgICAgICAgICAgICAgPnt7IHNvcnRJbmRleERpc3BsYXkgfX08L3NwYW5cbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgfVxuICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICB9IEBlbHNlIHtcbiAgICAgICAgICA8c3BhbiBjbGFzcz1cInNreS1zY3JlZW4tcmVhZGVyLW9ubHlcIj57e1xuICAgICAgICAgICAgJ3NreV9hZ19ncmlkX2NvbHVtbl9oZWFkZXJfc29ydF9idXR0b25fYXJpYV9sYWJlbF9jdXJyZW50bHlfbm90X3NvcnRlZCdcbiAgICAgICAgICAgICAgfCBza3lMaWJSZXNvdXJjZXM6IGRpc3BsYXlOYW1lKCkgPz8gYWNjZXNzaWJsZUhlYWRlclRleHQoKVxuICAgICAgICAgIH19PC9zcGFuPlxuICAgICAgICB9XG4gICAgICB9XG4gICAgPC9zcGFuPlxuICAgIDxzcGFuICNpbmxpbmVIZWxwQ29udGFpbmVyIGNsYXNzPVwic2t5LWNvbnRyb2wtaGVscC1jb250YWluZXJcIj48L3NwYW4+XG4gIDwvZGl2PlxuPC9kaXY+XG4iXX0=
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import * as i1$1 from '@angular/common';
|
|
2
2
|
import { DOCUMENT, CommonModule, AsyncPipe, NgTemplateOutlet } from '@angular/common';
|
|
3
3
|
import * as i0 from '@angular/core';
|
|
4
|
-
import { NgModule, Injectable, inject, ChangeDetectorRef, ElementRef, booleanAttribute, Component, ChangeDetectionStrategy, ContentChild, HostBinding, Input, contentChildren, effect, Directive, TemplateRef, ViewChildren, ViewChild, EventEmitter, EnvironmentInjector, ViewContainerRef, Output, HostListener, ViewEncapsulation, Optional } from '@angular/core';
|
|
4
|
+
import { NgModule, Injectable, inject, ChangeDetectorRef, ElementRef, booleanAttribute, Component, ChangeDetectionStrategy, ContentChild, HostBinding, Input, contentChildren, effect, Directive, TemplateRef, ViewChildren, ViewChild, EventEmitter, EnvironmentInjector, ViewContainerRef, Output, HostListener, ViewEncapsulation, computed, signal, Optional } from '@angular/core';
|
|
5
5
|
import * as i1 from '@skyux/core';
|
|
6
6
|
import { SkyMutationObserverService, SkyMediaQueryService, SkyAffixService, SkyDynamicComponentService, SkyOverlayService, SkyScrollableHostService, SKY_STACKING_CONTEXT, SkyAffixAutoFitContext, SkyIdModule, SkyNumericModule, SkyDynamicComponentLocation, SkyViewkeeperModule, SkyLogService } from '@skyux/core';
|
|
7
7
|
import * as i1$2 from '@skyux/data-manager';
|
|
@@ -2546,11 +2546,33 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
2546
2546
|
*/
|
|
2547
2547
|
class SkyAgGridHeaderComponent {
|
|
2548
2548
|
constructor() {
|
|
2549
|
-
this.params = undefined;
|
|
2550
|
-
this.sorted = '';
|
|
2551
2549
|
this.filterEnabled$ = new BehaviorSubject(false);
|
|
2550
|
+
// For accessibility, we need to set the title attribute on the header element if there is no visible header text.
|
|
2551
|
+
// https://dequeuniversity.com/rules/axe/4.5/empty-table-header?application=axeAPI
|
|
2552
|
+
this.accessibleHeaderText = computed(() => {
|
|
2553
|
+
const params = this.params();
|
|
2554
|
+
if (params?.displayName &&
|
|
2555
|
+
!params?.column.getColDef().headerComponentParams?.headerHidden) {
|
|
2556
|
+
return undefined;
|
|
2557
|
+
}
|
|
2558
|
+
else {
|
|
2559
|
+
return params?.displayName || params?.column.getColDef().field;
|
|
2560
|
+
}
|
|
2561
|
+
});
|
|
2562
|
+
this.params = signal(undefined);
|
|
2563
|
+
this.sorted = '';
|
|
2552
2564
|
this.sortOrder$ = new BehaviorSubject(undefined);
|
|
2553
2565
|
this.sortIndexDisplay$ = new BehaviorSubject('');
|
|
2566
|
+
this.displayName = computed(() => {
|
|
2567
|
+
const params = this.params();
|
|
2568
|
+
if (params?.displayName &&
|
|
2569
|
+
!params?.column.getColDef().headerComponentParams?.headerHidden) {
|
|
2570
|
+
return params.displayName;
|
|
2571
|
+
}
|
|
2572
|
+
else {
|
|
2573
|
+
return undefined;
|
|
2574
|
+
}
|
|
2575
|
+
});
|
|
2554
2576
|
this.#subscriptions = new Subscription();
|
|
2555
2577
|
this.#viewInitialized = false;
|
|
2556
2578
|
this.#agInitialized = false;
|
|
@@ -2576,22 +2598,12 @@ class SkyAgGridHeaderComponent {
|
|
|
2576
2598
|
}
|
|
2577
2599
|
agInit(params) {
|
|
2578
2600
|
this.#agInitialized = true;
|
|
2579
|
-
this.params
|
|
2601
|
+
this.params.set(params);
|
|
2580
2602
|
this.#subscriptions.unsubscribe();
|
|
2581
2603
|
if (!params) {
|
|
2582
2604
|
return;
|
|
2583
2605
|
}
|
|
2584
2606
|
this.#leftPosition = params.column.getLeft() ?? 0;
|
|
2585
|
-
if (params.displayName &&
|
|
2586
|
-
!params.column.getColDef().headerComponentParams?.headerHidden) {
|
|
2587
|
-
this.accessibleHeaderText = undefined;
|
|
2588
|
-
this.displayName = params.displayName;
|
|
2589
|
-
}
|
|
2590
|
-
else {
|
|
2591
|
-
this.accessibleHeaderText =
|
|
2592
|
-
params.displayName || params.column.getColDef().field;
|
|
2593
|
-
this.displayName = undefined;
|
|
2594
|
-
}
|
|
2595
2607
|
this.#subscriptions = new Subscription();
|
|
2596
2608
|
if (params.column.isFilterAllowed()) {
|
|
2597
2609
|
this.#subscriptions.add(fromEventPattern((handler) => params.column.addEventListener('filterChanged', handler), (handler) => params.column.removeEventListener('filterChanged', handler)).subscribe(() => {
|
|
@@ -2629,11 +2641,11 @@ class SkyAgGridHeaderComponent {
|
|
|
2629
2641
|
this.#changeDetector.markForCheck();
|
|
2630
2642
|
}
|
|
2631
2643
|
onMenuClick($event) {
|
|
2632
|
-
this.params?.showColumnMenu($event.target);
|
|
2644
|
+
this.params()?.showColumnMenu($event.target);
|
|
2633
2645
|
}
|
|
2634
2646
|
onSortRequested(event) {
|
|
2635
|
-
if (this.params?.enableSorting) {
|
|
2636
|
-
this.params?.progressSort(event.shiftKey);
|
|
2647
|
+
if (this.params()?.enableSorting) {
|
|
2648
|
+
this.params()?.progressSort(event.shiftKey);
|
|
2637
2649
|
}
|
|
2638
2650
|
}
|
|
2639
2651
|
refresh(params) {
|
|
@@ -2644,15 +2656,15 @@ class SkyAgGridHeaderComponent {
|
|
|
2644
2656
|
if (!this.#viewInitialized || !this.#agInitialized) {
|
|
2645
2657
|
return;
|
|
2646
2658
|
}
|
|
2647
|
-
const inlineHelpComponent = this.params?.inlineHelpComponent;
|
|
2659
|
+
const inlineHelpComponent = this.params()?.inlineHelpComponent;
|
|
2648
2660
|
if (inlineHelpComponent &&
|
|
2649
2661
|
(!this.#inlineHelpComponentRef ||
|
|
2650
2662
|
this.#inlineHelpComponentRef.componentType !== inlineHelpComponent)) {
|
|
2651
2663
|
this.#dynamicComponentService.removeComponent(this.#inlineHelpComponentRef);
|
|
2652
2664
|
const headerInfo = new SkyAgGridHeaderInfo();
|
|
2653
|
-
headerInfo.column = this.params?.column;
|
|
2654
|
-
headerInfo.context = this.params?.context;
|
|
2655
|
-
headerInfo.displayName = this.params?.displayName;
|
|
2665
|
+
headerInfo.column = this.params()?.column;
|
|
2666
|
+
headerInfo.context = this.params()?.context;
|
|
2667
|
+
headerInfo.displayName = this.params()?.displayName;
|
|
2656
2668
|
this.#inlineHelpComponentRef =
|
|
2657
2669
|
this.#dynamicComponentService.createComponent(inlineHelpComponent, {
|
|
2658
2670
|
providers: [
|
|
@@ -2671,13 +2683,13 @@ class SkyAgGridHeaderComponent {
|
|
|
2671
2683
|
}
|
|
2672
2684
|
}
|
|
2673
2685
|
#updateSort() {
|
|
2674
|
-
this.sortOrder$.next(this.params?.column.getSort() || undefined);
|
|
2686
|
+
this.sortOrder$.next(this.params()?.column.getSort() || undefined);
|
|
2675
2687
|
}
|
|
2676
2688
|
#updateSortIndex() {
|
|
2677
|
-
const sortIndex = this.params?.column.getSortIndex();
|
|
2678
|
-
const otherSortColumns = this.params
|
|
2679
|
-
?.getColumns()
|
|
2680
|
-
?.some((column) => column.getColId() !== this.params?.column.getColId() &&
|
|
2689
|
+
const sortIndex = this.params()?.column.getSortIndex();
|
|
2690
|
+
const otherSortColumns = this.params()
|
|
2691
|
+
?.api?.getColumns()
|
|
2692
|
+
?.some((column) => column.getColId() !== this.params()?.column.getColId() &&
|
|
2681
2693
|
!!column.getSort());
|
|
2682
2694
|
if (sortIndex !== undefined && sortIndex !== null && otherSortColumns) {
|
|
2683
2695
|
this.sortIndexDisplay$.next(`${sortIndex + 1}`);
|
|
@@ -2687,15 +2699,16 @@ class SkyAgGridHeaderComponent {
|
|
|
2687
2699
|
}
|
|
2688
2700
|
}
|
|
2689
2701
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: SkyAgGridHeaderComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
2690
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: SkyAgGridHeaderComponent, selector: "sky-ag-grid-header", host: { properties: { "attr.title": "
|
|
2702
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: SkyAgGridHeaderComponent, selector: "sky-ag-grid-header", host: { properties: { "attr.title": "accessibleHeaderText()", "attr.aria-label": "displayName() || accessibleHeaderText()", "attr.role": "\"note\"" } }, viewQueries: [{ propertyName: "inlineHelpContainer", first: true, predicate: ["inlineHelpContainer"], descendants: true, read: ElementRef, static: true }], ngImport: i0, template: "<div class=\"ag-cell-label-container\" role=\"presentation\">\n @if (params()?.enableMenu) {\n <span\n class=\"ag-header-icon ag-header-cell-menu-button\"\n aria-hidden=\"true\"\n (click)=\"onMenuClick($event)\"\n >\n <sky-icon icon=\"ellipsis\" />\n </span>\n }\n <div class=\"ag-header-cell-label\" role=\"presentation\">\n <span class=\"ag-header-cell-label-and-icons\">\n @if (params()?.enableSorting) {\n <button\n aria-hidden=\"true\"\n class=\"ag-header-cell-text ag-header-cell-label-sortable sky-btn-link-inline\"\n tabindex=\"-1\"\n type=\"button\"\n [attr.aria-label]=\"accessibleHeaderText()\"\n [innerText]=\"displayName() ?? ''\"\n [skyThemeClass]=\"{ 'sky-font-heading-4': 'modern' }\"\n (click)=\"onSortRequested($event)\"\n ></button>\n } @else if (displayName()) {\n <span\n aria-hidden=\"true\"\n class=\"ag-header-cell-text\"\n [skyThemeClass]=\"{ 'sky-font-heading-4': 'modern' }\"\n >{{ displayName() }}</span\n >\n }\n @if (filterEnabled$ | async) {\n <span\n aria-hidden=\"true\"\n class=\"ag-header-icon ag-header-label-icon ag-filter-icon\"\n ><sky-icon icon=\"filter\"\n /></span>\n }\n @if (params()?.enableSorting) {\n @if (sortOrder$ | async; as sortDirection) {\n <button\n class=\"ag-sort-indicator-container sky-btn sky-btn-icon-borderless\"\n type=\"button\"\n (click)=\"onSortRequested($event)\"\n >\n @if (sortDirection === 'desc') {\n <span class=\"ag-header-icon ag-header-label-icon\">\n <sky-icon *skyThemeIf=\"'default'\" icon=\"caret-down\" />\n <sky-icon *skyThemeIf=\"'modern'\" icon=\"chevron-down\" />\n <span class=\"sky-screen-reader-only\">{{\n 'sky_ag_grid_column_header_sort_button_aria_label_currently_desc'\n | skyLibResources: displayName() ?? accessibleHeaderText()\n }}</span></span\n >\n }\n @if (sortDirection === 'asc') {\n <span class=\"ag-header-icon ag-header-label-icon\">\n <sky-icon *skyThemeIf=\"'default'\" icon=\"caret-up\" />\n <sky-icon *skyThemeIf=\"'modern'\" icon=\"chevron-up\" />\n <span class=\"sky-screen-reader-only\">{{\n 'sky_ag_grid_column_header_sort_button_aria_label_currently_asc'\n | skyLibResources: displayName() ?? accessibleHeaderText()\n }}</span></span\n >\n }\n\n @if (sortIndexDisplay$ | async; as sortIndexDisplay) {\n <span\n aria-hidden=\"true\"\n class=\"ag-sort-indicator-icon ag-sort-order\"\n >{{ sortIndexDisplay }}</span\n >\n }\n </button>\n } @else {\n <span class=\"sky-screen-reader-only\">{{\n 'sky_ag_grid_column_header_sort_button_aria_label_currently_not_sorted'\n | skyLibResources: displayName() ?? accessibleHeaderText()\n }}</span>\n }\n }\n </span>\n <span #inlineHelpContainer class=\"sky-control-help-container\"></span>\n </div>\n</div>\n", styles: [":host{display:flex;flex-direction:row;flex-wrap:nowrap;width:100%;max-width:100%;height:100%;align-items:center;align-content:center}:host-context(.ag-header-cell.ag-right-aligned-header,.ag-header-cell.sky-ag-grid-header-right-aligned){flex-direction:row-reverse}:host-context(.ag-header-cell.ag-right-aligned-header,.ag-header-cell.sky-ag-grid-header-right-aligned) .ag-header-cell-label .sky-control-help-container{order:0}:host-context(.ag-header-cell.ag-right-aligned-header,.ag-header-cell.sky-ag-grid-header-right-aligned) .ag-header-cell-label .ag-header-cell-label-and-icons{order:1}.ag-header-cell-label .ag-header-cell-label-and-icons .ag-header-label-icon,.ag-header-cell-label .ag-header-cell-label-and-icons .ag-header-menu-icon,.ag-header-cell-label .ag-header-cell-label-and-icons .ag-header-icon,.sky-btn.sky-btn-icon-borderless .ag-header-label-icon,.sky-btn.sky-btn-icon-borderless .ag-header-menu-icon,.sky-btn.sky-btn-icon-borderless .ag-header-icon{line-height:0;margin-left:var(--sky-margin-inline-sm)}button.ag-header-cell-label{max-width:100%}.ag-cell-label-container{padding:0;gap:var(--sky-margin-inline-xs)}.ag-header-cell-label{padding-right:0;padding-left:0}.ag-header-cell-label .ag-header-cell-label-and-icons{display:flex;flex-wrap:nowrap;flex-direction:row;overflow:hidden;align-items:center}.ag-header-cell-label .ag-header-cell-label-and-icons .ag-header-cell-text{flex-grow:0;flex-shrink:1}.ag-header-cell-label .ag-header-cell-label-and-icons .ag-sort-indicator-container{color:var(--ag-header-foreground-color);width:initial;height:initial}.ag-header-cell-label .ag-header-cell-label-and-icons .ag-sort-indicator-container:hover{border:none}button{cursor:pointer;flex-grow:0;flex-shrink:1}\n"], dependencies: [{ kind: "component", type: i1$6.λ1, selector: "sky-icon", inputs: ["icon", "iconName", "iconType", "size", "fixedWidth", "variant"] }, { kind: "directive", type: i2$4.λ2, selector: "[skyThemeClass]", inputs: ["class", "skyThemeClass"] }, { kind: "directive", type: i2$4.λ3, selector: "[skyThemeIf]", inputs: ["skyThemeIf"] }, { kind: "pipe", type: i1$1.AsyncPipe, name: "async" }, { kind: "pipe", type: i3.SkyLibResourcesPipe, name: "skyLibResources" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
2691
2703
|
}
|
|
2692
2704
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: SkyAgGridHeaderComponent, decorators: [{
|
|
2693
2705
|
type: Component,
|
|
2694
|
-
args: [{ selector: 'sky-ag-grid-header', changeDetection: ChangeDetectionStrategy.OnPush,
|
|
2695
|
-
|
|
2696
|
-
|
|
2697
|
-
|
|
2698
|
-
}
|
|
2706
|
+
args: [{ selector: 'sky-ag-grid-header', changeDetection: ChangeDetectionStrategy.OnPush, host: {
|
|
2707
|
+
'[attr.title]': 'accessibleHeaderText()',
|
|
2708
|
+
'[attr.aria-label]': 'displayName() || accessibleHeaderText()',
|
|
2709
|
+
'[attr.role]': '"note"',
|
|
2710
|
+
}, template: "<div class=\"ag-cell-label-container\" role=\"presentation\">\n @if (params()?.enableMenu) {\n <span\n class=\"ag-header-icon ag-header-cell-menu-button\"\n aria-hidden=\"true\"\n (click)=\"onMenuClick($event)\"\n >\n <sky-icon icon=\"ellipsis\" />\n </span>\n }\n <div class=\"ag-header-cell-label\" role=\"presentation\">\n <span class=\"ag-header-cell-label-and-icons\">\n @if (params()?.enableSorting) {\n <button\n aria-hidden=\"true\"\n class=\"ag-header-cell-text ag-header-cell-label-sortable sky-btn-link-inline\"\n tabindex=\"-1\"\n type=\"button\"\n [attr.aria-label]=\"accessibleHeaderText()\"\n [innerText]=\"displayName() ?? ''\"\n [skyThemeClass]=\"{ 'sky-font-heading-4': 'modern' }\"\n (click)=\"onSortRequested($event)\"\n ></button>\n } @else if (displayName()) {\n <span\n aria-hidden=\"true\"\n class=\"ag-header-cell-text\"\n [skyThemeClass]=\"{ 'sky-font-heading-4': 'modern' }\"\n >{{ displayName() }}</span\n >\n }\n @if (filterEnabled$ | async) {\n <span\n aria-hidden=\"true\"\n class=\"ag-header-icon ag-header-label-icon ag-filter-icon\"\n ><sky-icon icon=\"filter\"\n /></span>\n }\n @if (params()?.enableSorting) {\n @if (sortOrder$ | async; as sortDirection) {\n <button\n class=\"ag-sort-indicator-container sky-btn sky-btn-icon-borderless\"\n type=\"button\"\n (click)=\"onSortRequested($event)\"\n >\n @if (sortDirection === 'desc') {\n <span class=\"ag-header-icon ag-header-label-icon\">\n <sky-icon *skyThemeIf=\"'default'\" icon=\"caret-down\" />\n <sky-icon *skyThemeIf=\"'modern'\" icon=\"chevron-down\" />\n <span class=\"sky-screen-reader-only\">{{\n 'sky_ag_grid_column_header_sort_button_aria_label_currently_desc'\n | skyLibResources: displayName() ?? accessibleHeaderText()\n }}</span></span\n >\n }\n @if (sortDirection === 'asc') {\n <span class=\"ag-header-icon ag-header-label-icon\">\n <sky-icon *skyThemeIf=\"'default'\" icon=\"caret-up\" />\n <sky-icon *skyThemeIf=\"'modern'\" icon=\"chevron-up\" />\n <span class=\"sky-screen-reader-only\">{{\n 'sky_ag_grid_column_header_sort_button_aria_label_currently_asc'\n | skyLibResources: displayName() ?? accessibleHeaderText()\n }}</span></span\n >\n }\n\n @if (sortIndexDisplay$ | async; as sortIndexDisplay) {\n <span\n aria-hidden=\"true\"\n class=\"ag-sort-indicator-icon ag-sort-order\"\n >{{ sortIndexDisplay }}</span\n >\n }\n </button>\n } @else {\n <span class=\"sky-screen-reader-only\">{{\n 'sky_ag_grid_column_header_sort_button_aria_label_currently_not_sorted'\n | skyLibResources: displayName() ?? accessibleHeaderText()\n }}</span>\n }\n }\n </span>\n <span #inlineHelpContainer class=\"sky-control-help-container\"></span>\n </div>\n</div>\n", styles: [":host{display:flex;flex-direction:row;flex-wrap:nowrap;width:100%;max-width:100%;height:100%;align-items:center;align-content:center}:host-context(.ag-header-cell.ag-right-aligned-header,.ag-header-cell.sky-ag-grid-header-right-aligned){flex-direction:row-reverse}:host-context(.ag-header-cell.ag-right-aligned-header,.ag-header-cell.sky-ag-grid-header-right-aligned) .ag-header-cell-label .sky-control-help-container{order:0}:host-context(.ag-header-cell.ag-right-aligned-header,.ag-header-cell.sky-ag-grid-header-right-aligned) .ag-header-cell-label .ag-header-cell-label-and-icons{order:1}.ag-header-cell-label .ag-header-cell-label-and-icons .ag-header-label-icon,.ag-header-cell-label .ag-header-cell-label-and-icons .ag-header-menu-icon,.ag-header-cell-label .ag-header-cell-label-and-icons .ag-header-icon,.sky-btn.sky-btn-icon-borderless .ag-header-label-icon,.sky-btn.sky-btn-icon-borderless .ag-header-menu-icon,.sky-btn.sky-btn-icon-borderless .ag-header-icon{line-height:0;margin-left:var(--sky-margin-inline-sm)}button.ag-header-cell-label{max-width:100%}.ag-cell-label-container{padding:0;gap:var(--sky-margin-inline-xs)}.ag-header-cell-label{padding-right:0;padding-left:0}.ag-header-cell-label .ag-header-cell-label-and-icons{display:flex;flex-wrap:nowrap;flex-direction:row;overflow:hidden;align-items:center}.ag-header-cell-label .ag-header-cell-label-and-icons .ag-header-cell-text{flex-grow:0;flex-shrink:1}.ag-header-cell-label .ag-header-cell-label-and-icons .ag-sort-indicator-container{color:var(--ag-header-foreground-color);width:initial;height:initial}.ag-header-cell-label .ag-header-cell-label-and-icons .ag-sort-indicator-container:hover{border:none}button{cursor:pointer;flex-grow:0;flex-shrink:1}\n"] }]
|
|
2711
|
+
}], propDecorators: { inlineHelpContainer: [{
|
|
2699
2712
|
type: ViewChild,
|
|
2700
2713
|
args: ['inlineHelpContainer', { read: ElementRef, static: true }]
|
|
2701
2714
|
}] } });
|