@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.
@@ -1,4 +1,4 @@
1
- import { ChangeDetectionStrategy, ChangeDetectorRef, Component, ElementRef, EnvironmentInjector, HostBinding, ViewChild, inject, } from '@angular/core';
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 = 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?.api
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": "this.accessibleHeaderText" } }, 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 }); }
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, 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"] }]
161
- }], propDecorators: { accessibleHeaderText: [{
162
- type: HostBinding,
163
- args: ['attr.title']
164
- }], inlineHelpContainer: [{
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 = 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?.api
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": "this.accessibleHeaderText" } }, 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 }); }
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, 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"] }]
2695
- }], propDecorators: { accessibleHeaderText: [{
2696
- type: HostBinding,
2697
- args: ['attr.title']
2698
- }], inlineHelpContainer: [{
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
  }] } });