@skyux/ag-grid 11.15.1 → 11.17.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,81 +1,85 @@
1
- import { ContentChildren, Directive, Input, inject, } from '@angular/core';
2
- import { SkyMediaBreakpoints, SkyMediaQueryService } from '@skyux/core';
1
+ import { Directive, Input, contentChildren, effect, inject, } from '@angular/core';
2
+ import { toSignal } from '@angular/core/rxjs-interop';
3
+ import { SkyMediaQueryService } from '@skyux/core';
3
4
  import { AgGridAngular } from 'ag-grid-angular';
4
5
  import { Subject } from 'rxjs';
5
6
  import { filter, takeUntil } from 'rxjs/operators';
6
7
  import { SkyAgGridWrapperComponent } from './ag-grid-wrapper.component';
7
8
  import * as i0 from "@angular/core";
8
9
  import * as i1 from "@skyux/data-manager";
10
+ function toColumnWidthName(breakpoint) {
11
+ return breakpoint === 'xs' ? 'xs' : 'sm';
12
+ }
9
13
  /**
10
14
  * @internal
11
15
  */
12
16
  export class SkyAgGridDataManagerAdapterDirective {
13
17
  #currentAgGrid;
14
- #currentBreakpoint = 3;
15
18
  #currentDataState;
16
19
  #currentSkyAgGridWrapper;
17
20
  #dataStateSub;
18
21
  #viewConfig;
19
- #ngUnsubscribe = new Subject();
22
+ #ngUnsubscribe;
20
23
  #changeDetector;
21
24
  #dataManagerSvc;
22
- #mediaQueryService = inject(SkyMediaQueryService);
25
+ #breakpoint;
23
26
  constructor(changeDetector, dataManagerSvc) {
27
+ this.agGridList = contentChildren(AgGridAngular, {
28
+ descendants: true,
29
+ });
30
+ this.skyAgGridWrapperList = contentChildren(SkyAgGridWrapperComponent, {
31
+ descendants: true,
32
+ });
33
+ this.#ngUnsubscribe = new Subject();
34
+ this.#breakpoint = toSignal(inject(SkyMediaQueryService).breakpointChange);
24
35
  this.#changeDetector = changeDetector;
25
36
  this.#dataManagerSvc = dataManagerSvc;
37
+ effect(() => {
38
+ const list = this.agGridList();
39
+ this.#checkForAgGrid(list);
40
+ });
41
+ effect(() => {
42
+ const list = this.skyAgGridWrapperList();
43
+ this.#checkForSkyAgGridWrapper(list);
44
+ });
45
+ effect(() => {
46
+ const breakpoint = this.#breakpoint();
47
+ if (breakpoint) {
48
+ this.#applyColumnWidths(breakpoint);
49
+ }
50
+ });
26
51
  }
27
52
  ngAfterContentInit() {
28
53
  if (this.viewId) {
29
54
  this.#dataManagerSvc.setViewkeeperClasses(this.viewId, ['.ag-header']);
30
55
  this.#viewConfig = this.#dataManagerSvc.getViewById(this.viewId);
31
- this.#checkForAgGrid();
32
- this.#checkForSkyAgGridWrapper();
33
- this.agGridList?.changes
34
- .pipe(takeUntil(this.#ngUnsubscribe))
35
- .subscribe(() => this.#checkForAgGrid());
36
- this.skyAgGridWrapperList?.changes
37
- .pipe(takeUntil(this.#ngUnsubscribe))
38
- .subscribe(() => this.#checkForSkyAgGridWrapper());
39
56
  }
40
57
  }
41
- ngOnInit() {
42
- this.#mediaQueryService.subscribe((breakpoint) => {
43
- this.#currentBreakpoint = breakpoint;
44
- this.#applyColumnWidths();
45
- });
46
- }
47
58
  ngOnDestroy() {
48
59
  this.#ngUnsubscribe.next();
49
60
  this.#ngUnsubscribe.complete();
50
61
  }
51
- #checkForAgGrid() {
52
- if (this.agGridList) {
53
- const agGridCount = this.agGridList.length;
54
- /* istanbul ignore else */
55
- if (agGridCount === 0) {
56
- this.#unregisterAgGrid();
57
- }
58
- else if (this.agGridList.first !== this.#currentAgGrid) {
59
- this.#registerAgGrid();
62
+ #checkForAgGrid(agGridList) {
63
+ const agGrid = agGridList[0];
64
+ const agGridCount = agGridList.length;
65
+ if (agGrid) {
66
+ if (agGrid !== this.#currentAgGrid) {
67
+ this.#registerAgGrid(agGrid);
60
68
  }
61
69
  if (agGridCount > 1) {
62
70
  console.warn('More than one ag-grid child component was found. Using the first ag-Grid.');
63
71
  }
64
72
  }
65
73
  }
66
- #checkForSkyAgGridWrapper() {
67
- if (this.skyAgGridWrapperList) {
68
- const skyAgGridWrapperCount = this.skyAgGridWrapperList.length;
69
- /* istanbul ignore else */
70
- if (skyAgGridWrapperCount === 0) {
71
- this.#unregisterSkyAgGridWrapper();
72
- }
73
- else if (this.skyAgGridWrapperList.first !== this.#currentSkyAgGridWrapper) {
74
- this.#registerSkyAgGridWrapper();
75
- }
76
- if (skyAgGridWrapperCount > 1) {
77
- console.warn('More than one ag-grid child component was found. Using the first ag-Grid.');
78
- }
74
+ #checkForSkyAgGridWrapper(wrappers) {
75
+ const count = wrappers.length;
76
+ const wrapper = wrappers[0];
77
+ /* istanbul ignore else */
78
+ if (wrapper !== this.#currentSkyAgGridWrapper) {
79
+ this.#registerSkyAgGridWrapper(wrapper);
80
+ }
81
+ if (count > 1) {
82
+ console.warn('More than one ag-grid child component was found. Using the first ag-Grid.');
79
83
  }
80
84
  }
81
85
  #unregisterAgGrid() {
@@ -88,18 +92,17 @@ export class SkyAgGridDataManagerAdapterDirective {
88
92
  #unregisterSkyAgGridWrapper() {
89
93
  this.#currentSkyAgGridWrapper = undefined;
90
94
  }
91
- #registerSkyAgGridWrapper() {
95
+ #registerSkyAgGridWrapper(wrapper) {
92
96
  this.#unregisterSkyAgGridWrapper();
93
- this.#currentSkyAgGridWrapper = this.skyAgGridWrapperList?.first;
97
+ this.#currentSkyAgGridWrapper = wrapper;
94
98
  setTimeout(() => {
95
99
  if (this.#currentSkyAgGridWrapper) {
96
100
  this.#currentSkyAgGridWrapper.viewkeeperClasses = [];
97
101
  }
98
102
  });
99
103
  }
100
- #registerAgGrid() {
104
+ #registerAgGrid(agGrid) {
101
105
  this.#unregisterAgGrid();
102
- const agGrid = this.agGridList?.first;
103
106
  this.#currentAgGrid = agGrid;
104
107
  if (agGrid) {
105
108
  agGrid.gridReady.pipe(takeUntil(this.#ngUnsubscribe)).subscribe(() => {
@@ -139,8 +142,9 @@ export class SkyAgGridDataManagerAdapterDirective {
139
142
  .subscribe((event) => {
140
143
  const colId = event.column?.getColId();
141
144
  const width = event.column?.getActualWidth();
142
- if (colId && width) {
143
- this.#updateColumnWidth(colId, width);
145
+ const breakpoint = this.#breakpoint();
146
+ if (colId && width && breakpoint) {
147
+ this.#updateColumnWidth(colId, width, breakpoint);
144
148
  }
145
149
  });
146
150
  agGrid.dragStopped
@@ -244,12 +248,11 @@ export class SkyAgGridDataManagerAdapterDirective {
244
248
  });
245
249
  }
246
250
  }
247
- #updateColumnWidth(colId, width) {
251
+ #updateColumnWidth(colId, width, breakpoint) {
248
252
  const viewState = this.viewId && this.#currentDataState?.getViewStateById(this.viewId);
249
253
  if (viewState && this.viewId && this.#currentDataState) {
250
254
  const currentWidths = viewState?.columnWidths;
251
- const breakpointName = this.#currentBreakpoint === SkyMediaBreakpoints.xs ? 'xs' : 'sm';
252
- currentWidths[breakpointName][colId] = width;
255
+ currentWidths[toColumnWidthName(breakpoint)][colId] = width;
253
256
  viewState.columnWidths = currentWidths;
254
257
  this.#dataManagerSvc.updateDataState(this.#currentDataState.addOrUpdateView(this.viewId, viewState), this.viewId);
255
258
  }
@@ -266,15 +269,14 @@ export class SkyAgGridDataManagerAdapterDirective {
266
269
  this.#dataManagerSvc.updateDataState(this.#currentDataState.addOrUpdateView(this.viewId, viewState), this.viewId);
267
270
  }
268
271
  }
269
- #applyColumnWidths() {
270
- if (!this.agGridList?.first || this.agGridList.first.api.isDestroyed()) {
271
- return;
272
- }
273
- const viewState = this.viewId && this.#currentDataState?.getViewStateById(this.viewId);
274
- if (viewState && viewState.columnWidths && viewState.displayedColumnIds) {
275
- const breakpointName = this.#currentBreakpoint === SkyMediaBreakpoints.xs ? 'xs' : 'sm';
276
- const columnLimits = this.#getGridColumnLimits(viewState.displayedColumnIds, viewState.columnWidths, breakpointName);
277
- this.agGridList.first.api.sizeColumnsToFit({ columnLimits });
272
+ #applyColumnWidths(breakpoint) {
273
+ breakpoint ??= this.#breakpoint();
274
+ if (breakpoint) {
275
+ const viewState = this.viewId && this.#currentDataState?.getViewStateById(this.viewId);
276
+ if (viewState && viewState.columnWidths && viewState.displayedColumnIds) {
277
+ const columnLimits = this.#getGridColumnLimits(viewState.displayedColumnIds, viewState.columnWidths, toColumnWidthName(breakpoint));
278
+ this.#currentAgGrid?.api.sizeColumnsToFit({ columnLimits });
279
+ }
278
280
  }
279
281
  }
280
282
  #getGridColumnLimits(displayedColumns, currentWidths, breakpointName) {
@@ -292,7 +294,7 @@ export class SkyAgGridDataManagerAdapterDirective {
292
294
  return gridColumnLimits;
293
295
  }
294
296
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.8", ngImport: i0, type: SkyAgGridDataManagerAdapterDirective, deps: [{ token: i0.ChangeDetectorRef }, { token: i1.SkyDataManagerService }], target: i0.ɵɵFactoryTarget.Directive }); }
295
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.8", type: SkyAgGridDataManagerAdapterDirective, selector: "[skyAgGridDataManagerAdapter]", inputs: { viewId: "viewId" }, queries: [{ propertyName: "agGridList", predicate: AgGridAngular, descendants: true }, { propertyName: "skyAgGridWrapperList", predicate: SkyAgGridWrapperComponent, descendants: true }], ngImport: i0 }); }
297
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.2.0", version: "18.2.8", type: SkyAgGridDataManagerAdapterDirective, selector: "[skyAgGridDataManagerAdapter]", inputs: { viewId: "viewId" }, queries: [{ propertyName: "agGridList", predicate: AgGridAngular, descendants: true, isSignal: true }, { propertyName: "skyAgGridWrapperList", predicate: SkyAgGridWrapperComponent, descendants: true, isSignal: true }], ngImport: i0 }); }
296
298
  }
297
299
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.8", ngImport: i0, type: SkyAgGridDataManagerAdapterDirective, decorators: [{
298
300
  type: Directive,
@@ -301,11 +303,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.8", ngImpor
301
303
  }]
302
304
  }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i1.SkyDataManagerService }], propDecorators: { viewId: [{
303
305
  type: Input
304
- }], agGridList: [{
305
- type: ContentChildren,
306
- args: [AgGridAngular, { descendants: true }]
307
- }], skyAgGridWrapperList: [{
308
- type: ContentChildren,
309
- args: [SkyAgGridWrapperComponent, { descendants: true }]
310
306
  }] } });
311
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWctZ3JpZC1kYXRhLW1hbmFnZXItYWRhcHRlci5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvYWctZ3JpZC9zcmMvbGliL21vZHVsZXMvYWctZ3JpZC9hZy1ncmlkLWRhdGEtbWFuYWdlci1hZGFwdGVyLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBR0wsZUFBZSxFQUNmLFNBQVMsRUFDVCxLQUFLLEVBSUwsTUFBTSxHQUNQLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxvQkFBb0IsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQVF4RSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFVaEQsT0FBTyxFQUFFLE9BQU8sRUFBZ0IsTUFBTSxNQUFNLENBQUM7QUFDN0MsT0FBTyxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUVuRCxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQzs7O0FBRXhFOztHQUVHO0FBSUgsTUFBTSxPQUFPLG9DQUFvQztJQVkvQyxjQUFjLENBQTRCO0lBQzFDLGtCQUFrQixHQUF3QixDQUFDLENBQUM7SUFDNUMsaUJBQWlCLENBQWtDO0lBQ25ELHdCQUF3QixDQUF3QztJQUNoRSxhQUFhLENBQTJCO0lBQ3hDLFdBQVcsQ0FBZ0M7SUFDM0MsY0FBYyxHQUFHLElBQUksT0FBTyxFQUFRLENBQUM7SUFDckMsZUFBZSxDQUFvQjtJQUNuQyxlQUFlLENBQXdCO0lBRTlCLGtCQUFrQixHQUFHLE1BQU0sQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO0lBRTNELFlBQ0UsY0FBaUMsRUFDakMsY0FBcUM7UUFFckMsSUFBSSxDQUFDLGVBQWUsR0FBRyxjQUFjLENBQUM7UUFDdEMsSUFBSSxDQUFDLGVBQWUsR0FBRyxj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QkFBb0IsQ0FDNUMsU0FBUyxDQUFDLGtCQUFrQixFQUM1QixTQUFTLENBQUMsWUFBWSxFQUN0QixjQUFjLENBQ2YsQ0FBQztZQUNGLElBQUksQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxnQkFBZ0IsQ0FBQyxFQUFFLFlBQVksRUFBRSxDQUFDLENBQUM7UUFDL0QsQ0FBQztJQUNILENBQUM7SUFFRCxvQkFBb0IsQ0FDbEIsZ0JBQTBCLEVBQzFCLGFBQXNDLEVBQ3RDLGNBQTZDO1FBRTdDLE1BQU0sZ0JBQWdCLEdBQW1CLEVBQUUsQ0FBQztRQUU1QyxLQUFLLE1BQU0sTUFBTSxJQUFJLGdCQUFnQixFQUFFLENBQUM7WUFDdEMsTUFBTSxXQUFXLEdBQUcsYUFBYSxDQUFDLGNBQWMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1lBRTFELElBQUksV0FBVyxFQUFFLENBQUM7Z0JBQ2hCLGdCQUFnQixDQUFDLElBQUksQ0FBQztvQkFDcEIsR0FBRyxFQUFFLE1BQU07b0JBQ1gsUUFBUSxFQUFFLFdBQVc7b0JBQ3JCLFFBQVEsRUFBRSxXQUFXO2lCQUN0QixDQUFDLENBQUM7WUFDTCxDQUFDO1FBQ0gsQ0FBQztRQUNELE9BQU8sZ0JBQWdCLENBQUM7SUFDMUIsQ0FBQzs4R0EzWlUsb0NBQW9DO2tHQUFwQyxvQ0FBb0MsOEhBTTlCLGFBQWEsMEVBR2IseUJBQXlCOzsyRkFUL0Isb0NBQW9DO2tCQUhoRCxTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSwrQkFBK0I7aUJBQzFDOzBIQUtRLE1BQU07c0JBRFosS0FBSztnQkFJQyxVQUFVO3NCQURoQixlQUFlO3VCQUFDLGFBQWEsRUFBRSxFQUFFLFdBQVcsRUFBRSxJQUFJLEVBQUU7Z0JBSTlDLG9CQUFvQjtzQkFEMUIsZUFBZTt1QkFBQyx5QkFBeUIsRUFBRSxFQUFFLFdBQVcsRUFBRSxJQUFJLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBBZnRlckNvbnRlbnRJbml0LFxuICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgQ29udGVudENoaWxkcmVuLFxuICBEaXJlY3RpdmUsXG4gIElucHV0LFxuICBPbkRlc3Ryb3ksXG4gIE9uSW5pdCxcbiAgUXVlcnlMaXN0LFxuICBpbmplY3QsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgU2t5TWVkaWFCcmVha3BvaW50cywgU2t5TWVkaWFRdWVyeVNlcnZpY2UgfSBmcm9tICdAc2t5dXgvY29yZSc7XG5pbXBvcnQge1xuICBTa3lEYXRhTWFuYWdlclNlcnZpY2UsXG4gIFNreURhdGFNYW5hZ2VyU3RhdGUsXG4gIFNreURhdGFWaWV3Q29sdW1uV2lkdGhzLFxuICBTa3lEYXRhVmlld0NvbmZpZyxcbn0gZnJvbSAnQHNreXV4L2RhdGEtbWFuYWdlcic7XG5cbmltcG9ydCB7IEFnR3JpZEFuZ3VsYXIgfSBmcm9tICdhZy1ncmlkLWFuZ3VsYXInO1xuaW1wb3J0IHtcbiAgQ29sdW1uTW92ZWRFdmVudCxcbiAgQ29sdW1uUmVzaXplZEV2ZW50LFxuICBDb2x1bW5TdGF0ZSxcbiAgRHJhZ1N0b3BwZWRFdmVudCxcbiAgR3JpZEFwaSxcbiAgSUNvbHVtbkxpbWl0LFxuICBSb3dTZWxlY3RlZEV2ZW50LFxufSBmcm9tICdhZy1ncmlkLWNvbW11bml0eSc7XG5pbXBvcnQgeyBTdWJqZWN0LCBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGZpbHRlciwgdGFrZVVudGlsIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5pbXBvcnQgeyBTa3lBZ0dyaWRXcmFwcGVyQ29tcG9uZW50IH0gZnJvbSAnLi9hZy1ncmlkLXdyYXBwZXIuY29tcG9uZW50JztcblxuLyoqXG4gKiBAaW50ZXJuYWxcbiAqL1xuQERpcmVjdGl2ZSh7XG4gIHNlbGVjdG9yOiAnW3NreUFnR3JpZERhdGFNYW5hZ2VyQWRhcHRlcl0nLFxufSlcbmV4cG9ydCBjbGFzcyBTa3lBZ0dyaWREYXRhTWFuYWdlckFkYXB0ZXJEaXJlY3RpdmVcbiAgaW1wbGVtZW50cyBBZnRlckNvbnRlbnRJbml0LCBPbkRlc3Ryb3ksIE9uSW5pdFxue1xuICBASW5wdXQoKVxuICBwdWJsaWMgdmlld0lkOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG5cbiAgQENvbnRlbnRDaGlsZHJlbihBZ0dyaWRBbmd1bGFyLCB7IGRlc2NlbmRhbnRzOiB0cnVlIH0pXG4gIHB1YmxpYyBhZ0dyaWRMaXN0OiBRdWVyeUxpc3Q8QWdHcmlkQW5ndWxhcj4gfCB1bmRlZmluZWQ7XG5cbiAgQENvbnRlbnRDaGlsZHJlbihTa3lBZ0dyaWRXcmFwcGVyQ29tcG9uZW50LCB7IGRlc2NlbmRhbnRzOiB0cnVlIH0pXG4gIHB1YmxpYyBza3lBZ0dyaWRXcmFwcGVyTGlzdDogUXVlcnlMaXN0PFNreUFnR3JpZFdyYXBwZXJDb21wb25lbnQ+IHwgdW5kZWZpbmVkO1xuXG4gICNjdXJyZW50QWdHcmlkOiBBZ0dyaWRBbmd1bGFyIHwgdW5kZWZpbmVkO1xuICAjY3VycmVudEJyZWFrcG9pbnQ6IFNreU1lZGlhQnJlYWtwb2ludHMgPSAzO1xuICAjY3VycmVudERhdGFTdGF0ZTogU2t5RGF0YU1hbmFnZXJTdGF0ZSB8IHVuZGVmaW5lZDtcbiAgI2N1cnJlbnRTa3lBZ0dyaWRXcmFwcGVyOiBTa3lBZ0dyaWRXcmFwcGVyQ29tcG9uZW50IHwgdW5kZWZpbmVkO1xuICAjZGF0YVN0YXRlU3ViOiBTdWJzY3JpcHRpb24gfCB1bmRlZmluZWQ7XG4gICN2aWV3Q29uZmlnOiBTa3lEYXRhVmlld0NvbmZpZyB8IHVuZGVmaW5lZDtcbiAgI25nVW5zdWJzY3JpYmUgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuICAjY2hhbmdlRGV0ZWN0b3I6IENoYW5nZURldGVjdG9yUmVmO1xuICAjZGF0YU1hbmFnZXJTdmM6IFNreURhdGFNYW5hZ2VyU2VydmljZTtcblxuICByZWFkb25seSAjbWVkaWFRdWVyeVNlcnZpY2UgPSBpbmplY3QoU2t5TWVkaWFRdWVyeVNlcnZpY2UpO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIGNoYW5nZURldGVjdG9yOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBkYXRhTWFuYWdlclN2YzogU2t5RGF0YU1hbmFnZXJTZXJ2aWNlLFxuICApIHtcbiAgICB0aGlzLiNjaGFuZ2VEZXRlY3RvciA9IGNoYW5nZURldGVjdG9yO1xuICAgIHRoaXMuI2RhdGFNYW5hZ2VyU3ZjID0gZGF0YU1hbmFnZXJTdmM7XG4gIH1cblxuICBwdWJsaWMgbmdBZnRlckNvbnRlbnRJbml0KCk6IHZvaWQge1xuICAgIGlmICh0aGlzLnZpZXdJZCkge1xuICAgICAgdGhpcy4jZGF0YU1hbmFnZXJTdmMuc2V0Vmlld2tlZXBlckNsYXNzZXModGhpcy52aWV3SWQsIFsnLmFnLWhlYWRlciddKTtcbiAgICAgIHRoaXMuI3ZpZXdDb25maWcgPSB0aGlzLiNkYXRhTWFuYWdlclN2Yy5nZXRWaWV3QnlJZCh0aGlzLnZpZXdJZCk7XG5cbiAgICAgIHRoaXMuI2NoZWNrRm9yQWdHcmlkKCk7XG4gICAgICB0aGlzLiNjaGVja0ZvclNreUFnR3JpZFdyYXBwZXIoKTtcblxuICAgICAgdGhpcy5hZ0dyaWRMaXN0Py5jaGFuZ2VzXG4gICAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLiNuZ1Vuc3Vic2NyaWJlKSlcbiAgICAgICAgLnN1YnNjcmliZSgoKSA9PiB0aGlzLiNjaGVja0ZvckFnR3JpZCgpKTtcblxuICAgICAgdGhpcy5za3lBZ0dyaWRXcmFwcGVyTGlzdD8uY2hhbmdlc1xuICAgICAgICAucGlwZSh0YWtlVW50aWwodGhpcy4jbmdVbnN1YnNjcmliZSkpXG4gICAgICAgIC5zdWJzY3JpYmUoKCkgPT4gdGhpcy4jY2hlY2tGb3JTa3lBZ0dyaWRXcmFwcGVyKCkpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLiNtZWRpYVF1ZXJ5U2VydmljZS5zdWJzY3JpYmUoKGJyZWFrcG9pbnQ6IFNreU1lZGlhQnJlYWtwb2ludHMpID0+IHtcbiAgICAgIHRoaXMuI2N1cnJlbnRCcmVha3BvaW50ID0gYnJlYWtwb2ludDtcbiAgICAgIHRoaXMuI2FwcGx5Q29sdW1uV2lkdGhzKCk7XG4gICAgfSk7XG4gIH1cblxuICBwdWJsaWMgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy4jbmdVbnN1YnNjcmliZS5uZXh0KCk7XG4gICAgdGhpcy4jbmdVbnN1YnNjcmliZS5jb21wbGV0ZSgpO1xuICB9XG5cbiAgI2NoZWNrRm9yQWdHcmlkKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmFnR3JpZExpc3QpIHtcbiAgICAgIGNvbnN0IGFnR3JpZENvdW50ID0gdGhpcy5hZ0dyaWRMaXN0Lmxlbmd0aDtcblxuICAgICAgLyogaXN0YW5idWwgaWdub3JlIGVsc2UgKi9cbiAgICAgIGlmIChhZ0dyaWRDb3VudCA9PT0gMCkge1xuICAgICAgICB0aGlzLiN1bnJlZ2lzdGVyQWdHcmlkKCk7XG4gICAgICB9IGVsc2UgaWYgKHRoaXMuYWdHcmlkTGlzdC5maXJzdCAhPT0gdGhpcy4jY3VycmVudEFnR3JpZCkge1xuICAgICAgICB0aGlzLiNyZWdpc3RlckFnR3JpZCgpO1xuICAgICAgfVxuXG4gICAgICBpZiAoYWdHcmlkQ291bnQgPiAxKSB7XG4gICAgICAgIGNvbnNvbGUud2FybihcbiAgICAgICAgICAnTW9yZSB0aGFuIG9uZSBhZy1ncmlkIGNoaWxkIGNvbXBvbmVudCB3YXMgZm91bmQuIFVzaW5nIHRoZSBmaXJzdCBhZy1HcmlkLicsXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgI2NoZWNrRm9yU2t5QWdHcmlkV3JhcHBlcigpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5za3lBZ0dyaWRXcmFwcGVyTGlzdCkge1xuICAgICAgY29uc3Qgc2t5QWdHcmlkV3JhcHBlckNvdW50ID0gdGhpcy5za3lBZ0dyaWRXcmFwcGVyTGlzdC5sZW5ndGg7XG5cbiAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBlbHNlICovXG4gICAgICBpZiAoc2t5QWdHcmlkV3JhcHBlckNvdW50ID09PSAwKSB7XG4gICAgICAgIHRoaXMuI3VucmVnaXN0ZXJTa3lBZ0dyaWRXcmFwcGVyKCk7XG4gICAgICB9IGVsc2UgaWYgKFxuICAgICAgICB0aGlzLnNreUFnR3JpZFdyYXBwZXJMaXN0LmZpcnN0ICE9PSB0aGlzLiNjdXJyZW50U2t5QWdHcmlkV3JhcHBlclxuICAgICAgKSB7XG4gICAgICAgIHRoaXMuI3JlZ2lzdGVyU2t5QWdHcmlkV3JhcHBlcigpO1xuICAgICAgfVxuXG4gICAgICBpZiAoc2t5QWdHcmlkV3JhcHBlckNvdW50ID4gMSkge1xuICAgICAgICBjb25zb2xlLndhcm4oXG4gICAgICAgICAgJ01vcmUgdGhhbiBvbmUgYWctZ3JpZCBjaGlsZCBjb21wb25lbnQgd2FzIGZvdW5kLiBVc2luZyB0aGUgZmlyc3QgYWctR3JpZC4nLFxuICAgICAgICApO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gICN1bnJlZ2lzdGVyQWdHcmlkKCk6IHZvaWQge1xuICAgIHRoaXMuI2N1cnJlbnRBZ0dyaWQgPSB1bmRlZmluZWQ7XG5cbiAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgaWYgKi9cbiAgICBpZiAodGhpcy4jZGF0YVN0YXRlU3ViKSB7XG4gICAgICB0aGlzLiNkYXRhU3RhdGVTdWIudW5zdWJzY3JpYmUoKTtcbiAgICB9XG4gIH1cblxuICAjdW5yZWdpc3RlclNreUFnR3JpZFdyYXBwZXIoKTogdm9pZCB7XG4gICAgdGhpcy4jY3VycmVudFNreUFnR3JpZFdyYXBwZXIgPSB1bmRlZmluZWQ7XG4gIH1cblxuICAjcmVnaXN0ZXJTa3lBZ0dyaWRXcmFwcGVyKCk6IHZvaWQge1xuICAgIHRoaXMuI3VucmVnaXN0ZXJTa3lBZ0dyaWRXcmFwcGVyKCk7XG4gICAgdGhpcy4jY3VycmVudFNreUFnR3JpZFdyYXBwZXIgPSB0aGlzLnNreUFnR3JpZFdyYXBwZXJMaXN0Py5maXJzdDtcblxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgaWYgKHRoaXMuI2N1cnJlbnRTa3lBZ0dyaWRXcmFwcGVyKSB7XG4gICAgICAgIHRoaXMuI2N1cnJlbnRTa3lBZ0dyaWRXcmFwcGVyLnZpZXdrZWVwZXJDbGFzc2VzID0gW107XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICAjcmVnaXN0ZXJBZ0dyaWQoKTogdm9pZCB7XG4gICAgdGhpcy4jdW5yZWdpc3RlckFnR3JpZCgpO1xuXG4gICAgY29uc3QgYWdHcmlkID0gdGhpcy5hZ0dyaWRMaXN0Py5maXJzdDtcblxuICAgIHRoaXMuI2N1cnJlbnRBZ0dyaWQgPSBhZ0dyaWQ7XG5cbiAgICBpZiAoYWdHcmlkKSB7XG4gICAgICBhZ0dyaWQuZ3JpZFJlYWR5LnBpcGUodGFrZVVudGlsKHRoaXMuI25nVW5zdWJzY3JpYmUpKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICBpZiAodGhpcy4jdmlld0NvbmZpZyAmJiB0aGlzLnZpZXdJZCkge1xuICAgICAgICAgIHRoaXMuI3ZpZXdDb25maWcub25TZWxlY3RBbGxDbGljayA9ICgpID0+IGFnR3JpZC5hcGkuc2VsZWN0QWxsKCk7XG4gICAgICAgICAgdGhpcy4jdmlld0NvbmZpZy5vbkNsZWFyQWxsQ2xpY2sgPSAoKSA9PiBhZ0dyaWQuYXBpLmRlc2VsZWN0QWxsKCk7XG4gICAgICAgICAgdGhpcy4jZGF0YU1hbmFnZXJTdmMudXBkYXRlVmlld0NvbmZpZyh0aGlzLiN2aWV3Q29uZmlnKTtcbiAgICAgICAgICB0aGlzLiNkYXRhU3RhdGVTdWIgPSB0aGlzLiNkYXRhTWFuYWdlclN2Y1xuICAgICAgICAgICAgLmdldERhdGFTdGF0ZVVwZGF0ZXModGhpcy4jdmlld0NvbmZpZy5pZClcbiAgICAgICAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLiNuZ1Vuc3Vic2NyaWJlKSlcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKGRhdGFTdGF0ZTogU2t5RGF0YU1hbmFnZXJTdGF0ZSkgPT4ge1xuICAgICAgICAgICAgICB0aGlzLiNjdXJyZW50RGF0YVN0YXRlID0gZGF0YVN0YXRlO1xuICAgICAgICAgICAgICB0aGlzLiNkaXNwbGF5Q29sdW1ucyhkYXRhU3RhdGUpO1xuICAgICAgICAgICAgICB0aGlzLiNhcHBseVNvcnQoZGF0YVN0YXRlKTtcbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgaWYgKGFnR3JpZC5ncmlkT3B0aW9ucz8uY29udGV4dD8uZW5hYmxlVG9wU2Nyb2xsKSB7XG4gICAgICAgICAgICB0aGlzLiNkYXRhTWFuYWdlclN2Yy5zZXRWaWV3a2VlcGVyQ2xhc3Nlcyh0aGlzLnZpZXdJZCwgW1xuICAgICAgICAgICAgICAnLmFnLWhlYWRlcicsXG4gICAgICAgICAgICAgICcuYWctYm9keS1ob3Jpem9udGFsLXNjcm9sbCcsXG4gICAgICAgICAgICBdKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICB0aGlzLiNhcHBseUNvbHVtbldpZHRocygpO1xuICAgICAgICB9XG4gICAgICB9KTtcblxuICAgICAgYWdHcmlkLmNvbHVtbk1vdmVkXG4gICAgICAgIC5waXBlKFxuICAgICAgICAgIHRha2VVbnRpbCh0aGlzLiNuZ1Vuc3Vic2NyaWJlKSxcbiAgICAgICAgICBmaWx0ZXIoXG4gICAgICAgICAgICAoZXZlbnQ6IENvbHVtbk1vdmVkRXZlbnQpID0+XG4gICAgICAgICAgICAgICFbXG4gICAgICAgICAgICAgICAgJ2dyaWRJbml0aWFsaXppbmcnLFxuICAgICAgICAgICAgICAgICd1aUNvbHVtblJlc2l6ZWQnLFxuICAgICAgICAgICAgICAgICd1aUNvbHVtbkRyYWdnZWQnLFxuICAgICAgICAgICAgICAgICdhcGknLFxuICAgICAgICAgICAgICBdLmluY2x1ZGVzKGV2ZW50LnNvdXJjZSksXG4gICAgICAgICAgKSxcbiAgICAgICAgKVxuICAgICAgICAuc3Vic2NyaWJlKCh2YWx1ZTogQ29sdW1uTW92ZWRFdmVudCkgPT4ge1xuICAgICAgICAgIHRoaXMuI3VwZGF0ZUNvbHVtbnNJbkN1cnJlbnREYXRhU3RhdGUodmFsdWUuYXBpKTtcbiAgICAgICAgfSk7XG5cbiAgICAgIGFnR3JpZC5jb2x1bW5SZXNpemVkXG4gICAgICAgIC5waXBlKFxuICAgICAgICAgIHRha2VVbnRpbCh0aGlzLiNuZ1Vuc3Vic2NyaWJlKSxcbiAgICAgICAgICBmaWx0ZXIoXG4gICAgICAgICAgICAoZXZlbnQ6IENvbHVtblJlc2l6ZWRFdmVudCkgPT4gZXZlbnQuc291cmNlID09PSAndWlDb2x1bW5SZXNpemVkJyxcbiAgICAgICAgICApLFxuICAgICAgICApXG4gICAgICAgIC5zdWJzY3JpYmUoKGV2ZW50OiBDb2x1bW5SZXNpemVkRXZlbnQpID0+IHtcbiAgICAgICAgICBjb25zdCBjb2xJZCA9IGV2ZW50LmNvbHVtbj8uZ2V0Q29sSWQoKTtcbiAgICAgICAgICBjb25zdCB3aWR0aCA9IGV2ZW50LmNvbHVtbj8uZ2V0QWN0dWFsV2lkdGgoKTtcbiAgICAgICAgICBpZiAoY29sSWQgJiYgd2lkdGgpIHtcbiAgICAgICAgICAgIHRoaXMuI3VwZGF0ZUNvbHVtbldpZHRoKGNvbElkLCB3aWR0aCk7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcblxuICAgICAgYWdHcmlkLmRyYWdTdG9wcGVkXG4gICAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLiNuZ1Vuc3Vic2NyaWJlKSlcbiAgICAgICAgLnN1YnNjcmliZSgodmFsdWU6IERyYWdTdG9wcGVkRXZlbnQpID0+IHtcbiAgICAgICAgICB0aGlzLiN1cGRhdGVDb2x1bW5zSW5DdXJyZW50RGF0YVN0YXRlKHZhbHVlLmFwaSk7XG4gICAgICAgIH0pO1xuXG4gICAgICBhZ0dyaWQucm93U2VsZWN0ZWRcbiAgICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuI25nVW5zdWJzY3JpYmUpKVxuICAgICAgICAuc3Vic2NyaWJlKChldmVudDogUm93U2VsZWN0ZWRFdmVudCkgPT4ge1xuICAgICAgICAgIGlmICh0aGlzLiN2aWV3Q29uZmlnICYmIHRoaXMuI2N1cnJlbnREYXRhU3RhdGUpIHtcbiAgICAgICAgICAgIGNvbnN0IHJvdyA9IGV2ZW50Lm5vZGU7XG4gICAgICAgICAgICBjb25zdCBzZWxlY3RlZElkcyA9IHRoaXMuI2N1cnJlbnREYXRhU3RhdGUuc2VsZWN0ZWRJZHMgfHwgW107XG4gICAgICAgICAgICBjb25zdCByb3dJbmRleCA9IHNlbGVjdGVkSWRzLmluZGV4T2Yocm93LmRhdGEuaWQpO1xuXG4gICAgICAgICAgICBpZiAocm93LmlzU2VsZWN0ZWQoKSAmJiByb3dJbmRleCA9PT0gLTEpIHtcbiAgICAgICAgICAgICAgc2VsZWN0ZWRJZHMucHVzaChyb3cuZGF0YS5pZCk7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKCFyb3cuaXNTZWxlY3RlZCgpICYmIHJvd0luZGV4ICE9PSAtMSkge1xuICAgICAgICAgICAgICBzZWxlY3RlZElkcy5zcGxpY2Uocm93SW5kZXgsIDEpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB0aGlzLiNjdXJyZW50RGF0YVN0YXRlLnNlbGVjdGVkSWRzID0gc2VsZWN0ZWRJZHM7XG4gICAgICAgICAgICB0aGlzLiNkYXRhTWFuYWdlclN2Yy51cGRhdGVEYXRhU3RhdGUoXG4gICAgICAgICAgICAgIHRoaXMuI2N1cnJlbnREYXRhU3RhdGUsXG4gICAgICAgICAgICAgIHRoaXMuI3ZpZXdDb25maWcuaWQsXG4gICAgICAgICAgICApO1xuXG4gICAgICAgICAgICB0aGlzLiNjaGFuZ2VEZXRlY3Rvci5tYXJrRm9yQ2hlY2soKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuXG4gICAgICBhZ0dyaWQuc29ydENoYW5nZWQucGlwZSh0YWtlVW50aWwodGhpcy4jbmdVbnN1YnNjcmliZSkpLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgIGNvbnN0IGdyaWRDb2x1bW5TdGF0ZXM6IENvbHVtblN0YXRlW10gPSBhZ0dyaWQuYXBpLmdldENvbHVtblN0YXRlKCk7XG5cbiAgICAgICAgY29uc3QgYWN0aXZlU29ydENvbHVtblN0YXRlID1cbiAgICAgICAgICBncmlkQ29sdW1uU3RhdGVzPy5maW5kKFxuICAgICAgICAgICAgKGFHcmlkQ29sdW1uU3RhdGUpID0+IGFHcmlkQ29sdW1uU3RhdGUuc29ydEluZGV4ID09PSAwLFxuICAgICAgICAgICkgPz9cbiAgICAgICAgICBncmlkQ29sdW1uU3RhdGVzPy5maW5kKChhR3JpZENvbHVtblN0YXRlKSA9PiBhR3JpZENvbHVtblN0YXRlLnNvcnQpO1xuXG4gICAgICAgIGlmICh0aGlzLiN2aWV3Q29uZmlnICYmIHRoaXMuI2N1cnJlbnREYXRhU3RhdGUpIHtcbiAgICAgICAgICBpZiAoYWN0aXZlU29ydENvbHVtblN0YXRlKSB7XG4gICAgICAgICAgICBjb25zdCBhY3RpdmVTb3J0Q29sdW1uRGVmID0gYWdHcmlkLmFwaS5nZXRDb2x1bW5EZWYoXG4gICAgICAgICAgICAgIGFjdGl2ZVNvcnRDb2x1bW5TdGF0ZS5jb2xJZCxcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICB0aGlzLiNjdXJyZW50RGF0YVN0YXRlLmFjdGl2ZVNvcnRPcHRpb24gPSB7XG4gICAgICAgICAgICAgIGRlc2NlbmRpbmc6IGFjdGl2ZVNvcnRDb2x1bW5TdGF0ZS5zb3J0ID09PSAnZGVzYycsXG4gICAgICAgICAgICAgIGlkOiBhY3RpdmVTb3J0Q29sdW1uU3RhdGUuY29sSWQsXG4gICAgICAgICAgICAgIHByb3BlcnR5TmFtZTogYWN0aXZlU29ydENvbHVtbkRlZj8uZmllbGQgfHwgJycsXG4gICAgICAgICAgICAgIGxhYmVsOiBhY3RpdmVTb3J0Q29sdW1uRGVmPy5oZWFkZXJOYW1lIHx8ICcnLFxuICAgICAgICAgICAgfTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy4jY3VycmVudERhdGFTdGF0ZS5hY3RpdmVTb3J0T3B0aW9uID0gdW5kZWZpbmVkO1xuICAgICAgICAgIH1cbiAgICAgICAgICB0aGlzLiNkYXRhTWFuYWdlclN2Yy51cGRhdGVEYXRhU3RhdGUoXG4gICAgICAgICAgICB0aGlzLiNjdXJyZW50RGF0YVN0YXRlLFxuICAgICAgICAgICAgdGhpcy4jdmlld0NvbmZpZy5pZCxcbiAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICAjdXBkYXRlQ29sdW1uc0luQ3VycmVudERhdGFTdGF0ZShhcGk6IEdyaWRBcGkpOiB2b2lkIHtcbiAgICBpZiAodGhpcy4jdmlld0NvbmZpZyAmJiB0aGlzLiNjdXJyZW50RGF0YVN0YXRlKSB7XG4gICAgICBjb25zdCBjb2x1bW5PcmRlciA9IHRoaXMuI2dldENvbHVtbk9yZGVyKGFwaSk7XG5cbiAgICAgIGNvbnN0IHZpZXdTdGF0ZSA9IHRoaXMuI2N1cnJlbnREYXRhU3RhdGUuZ2V0Vmlld1N0YXRlQnlJZChcbiAgICAgICAgdGhpcy4jdmlld0NvbmZpZy5pZCxcbiAgICAgICk7XG5cbiAgICAgIGlmIChcbiAgICAgICAgdmlld1N0YXRlICYmXG4gICAgICAgICh2aWV3U3RhdGUuZGlzcGxheWVkQ29sdW1uSWRzLmxlbmd0aCAhPT0gY29sdW1uT3JkZXIubGVuZ3RoIHx8XG4gICAgICAgICAgdmlld1N0YXRlLmRpc3BsYXllZENvbHVtbklkcy5zb21lKChjb2wsIGkpID0+IGNvbCAhPT0gY29sdW1uT3JkZXJbaV0pKVxuICAgICAgKSB7XG4gICAgICAgIHZpZXdTdGF0ZS5kaXNwbGF5ZWRDb2x1bW5JZHMgPSBjb2x1bW5PcmRlcjtcblxuICAgICAgICB0aGlzLiNkYXRhTWFuYWdlclN2Yy51cGRhdGVEYXRhU3RhdGUoXG4gICAgICAgICAgdGhpcy4jY3VycmVudERhdGFTdGF0ZS5hZGRPclVwZGF0ZVZpZXcoXG4gICAgICAgICAgICB0aGlzLiN2aWV3Q29uZmlnLmlkLFxuICAgICAgICAgICAgdmlld1N0YXRlLFxuICAgICAgICAgICksXG4gICAgICAgICAgdGhpcy4jdmlld0NvbmZpZy5pZCxcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAjZ2V0Q29sdW1uT3JkZXIoYXBpOiBHcmlkQXBpKTogc3RyaW5nW10ge1xuICAgIHJldHVybiBhcGlcbiAgICAgIC5nZXRDb2x1bW5TdGF0ZSgpXG4gICAgICAuZmlsdGVyKChzdGF0ZSkgPT4gIXN0YXRlLmhpZGUpXG4gICAgICAubWFwKChzdGF0ZSkgPT4gc3RhdGUuY29sSWQpO1xuICB9XG5cbiAgI2Rpc3BsYXlDb2x1bW5zKGRhdGFTdGF0ZTogU2t5RGF0YU1hbmFnZXJTdGF0ZSk6IHZvaWQge1xuICAgIGNvbnN0IGFnR3JpZCA9IHRoaXMuI2N1cnJlbnRBZ0dyaWQ7XG5cbiAgICBpZiAoYWdHcmlkICYmIHRoaXMuI3ZpZXdDb25maWcpIHtcbiAgICAgIGNvbnN0IHZpZXdTdGF0ZSA9IGRhdGFTdGF0ZS5nZXRWaWV3U3RhdGVCeUlkKHRoaXMuI3ZpZXdDb25maWcuaWQpO1xuICAgICAgbGV0IGRpc3BsYXllZENvbHVtbklkczogc3RyaW5nW10gPSBbXTtcblxuICAgICAgLyppc3RhbmJ1bCBpZ25vcmUgZWxzZSovXG4gICAgICBpZiAodmlld1N0YXRlPy5kaXNwbGF5ZWRDb2x1bW5JZHMpIHtcbiAgICAgICAgZGlzcGxheWVkQ29sdW1uSWRzID0gdmlld1N0YXRlLmRpc3BsYXllZENvbHVtbklkcztcbiAgICAgIH1cblxuICAgICAgY29uc3QgY29sdW1uT3JkZXIgPSB0aGlzLiNnZXRDb2x1bW5PcmRlcihhZ0dyaWQuYXBpKTtcblxuICAgICAgaWYgKFxuICAgICAgICBkaXNwbGF5ZWRDb2x1bW5JZHMubGVuZ3RoICE9PSBjb2x1bW5PcmRlci5sZW5ndGggfHxcbiAgICAgICAgZGlzcGxheWVkQ29sdW1uSWRzLnNvbWUoKGNvbCwgaSkgPT4gY29sICE9PSBjb2x1bW5PcmRlcltpXSlcbiAgICAgICkge1xuICAgICAgICBjb25zdCBoaWRlQ29sdW1ucyA9IGFnR3JpZC5hcGlcbiAgICAgICAgICAuZ2V0Q29sdW1uU3RhdGUoKVxuICAgICAgICAgIC5tYXAoKGNvbCkgPT4gY29sLmNvbElkKVxuICAgICAgICAgIC5maWx0ZXIoKGNvbElkKSA9PiAhZGlzcGxheWVkQ29sdW1uSWRzLmluY2x1ZGVzKGNvbElkKSk7XG5cbiAgICAgICAgYWdHcmlkLmFwaS5zZXRDb2x1bW5zVmlzaWJsZShoaWRlQ29sdW1ucywgZmFsc2UpO1xuICAgICAgICBhZ0dyaWQuYXBpLnNldENvbHVtbnNWaXNpYmxlKGRpc3BsYXllZENvbHVtbklkcywgdHJ1ZSk7XG4gICAgICAgIGFnR3JpZC5hcGkubW92ZUNvbHVtbnMoZGlzcGxheWVkQ29sdW1uSWRzLCAwKTtcbiAgICAgICAgdGhpcy4jcmVtb3ZlQ29sdW1uV2lkdGhzKGhpZGVDb2x1bW5zKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAjYXBwbHlTb3J0KGRhdGFTdGF0ZTogU2t5RGF0YU1hbmFnZXJTdGF0ZSk6IHZvaWQge1xuICAgIGNvbnN0IGFnR3JpZCA9IHRoaXMuI2N1cnJlbnRBZ0dyaWQ7XG4gICAgY29uc3QgYWN0aXZlU29ydCA9IGRhdGFTdGF0ZS5hY3RpdmVTb3J0T3B0aW9uO1xuXG4gICAgaWYgKGFjdGl2ZVNvcnQpIHtcbiAgICAgIGFnR3JpZD8uYXBpLmFwcGx5Q29sdW1uU3RhdGUoe1xuICAgICAgICBzdGF0ZTogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIGNvbElkOiBhY3RpdmVTb3J0LmlkLFxuICAgICAgICAgICAgc29ydDogYWN0aXZlU29ydC5kZXNjZW5kaW5nID8gJ2Rlc2MnIDogJ2FzYycsXG4gICAgICAgICAgfSxcbiAgICAgICAgXSxcbiAgICAgICAgZGVmYXVsdFN0YXRlOiB7IHNvcnQ6IG51bGwgfSxcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gICN1cGRhdGVDb2x1bW5XaWR0aChjb2xJZDogc3RyaW5nLCB3aWR0aDogbnVtYmVyKTogdm9pZCB7XG4gICAgY29uc3Qgdmlld1N0YXRlID1cbiAgICAgIHRoaXMudmlld0lkICYmIHRoaXMuI2N1cnJlbnREYXRhU3RhdGU/LmdldFZpZXdTdGF0ZUJ5SWQodGhpcy52aWV3SWQpO1xuICAgIGlmICh2aWV3U3RhdGUgJiYgdGhpcy52aWV3SWQgJiYgdGhpcy4jY3VycmVudERhdGFTdGF0ZSkge1xuICAgICAgY29uc3QgY3VycmVudFdpZHRocyA9IHZpZXdTdGF0ZT8uY29sdW1uV2lkdGhzO1xuICAgICAgY29uc3QgYnJlYWtwb2ludE5hbWUgPVxuICAgICAgICB0aGlzLiNjdXJyZW50QnJlYWtwb2ludCA9PT0gU2t5TWVkaWFCcmVha3BvaW50cy54cyA/ICd4cycgOiAnc20nO1xuXG4gICAgICBjdXJyZW50V2lkdGhzW2JyZWFrcG9pbnROYW1lXVtjb2xJZF0gPSB3aWR0aDtcblxuICAgICAgdmlld1N0YXRlLmNvbHVtbldpZHRocyA9IGN1cnJlbnRXaWR0aHM7XG4gICAgICB0aGlzLiNkYXRhTWFuYWdlclN2Yy51cGRhdGVEYXRhU3RhdGUoXG4gICAgICAgIHRoaXMuI2N1cnJlbnREYXRhU3RhdGUuYWRkT3JVcGRhdGVWaWV3KHRoaXMudmlld0lkLCB2aWV3U3RhdGUpLFxuICAgICAgICB0aGlzLnZpZXdJZCxcbiAgICAgICk7XG4gICAgfVxuICB9XG5cbiAgI3JlbW92ZUNvbHVtbldpZHRocyhjb2xJZHM6IHN0cmluZ1tdKTogdm9pZCB7XG4gICAgY29uc3Qgdmlld1N0YXRlID1cbiAgICAgIHRoaXMudmlld0lkICYmIHRoaXMuI2N1cnJlbnREYXRhU3RhdGU/LmdldFZpZXdTdGF0ZUJ5SWQodGhpcy52aWV3SWQpO1xuXG4gICAgaWYgKHZpZXdTdGF0ZSAmJiB0aGlzLnZpZXdJZCAmJiB0aGlzLiNjdXJyZW50RGF0YVN0YXRlKSB7XG4gICAgICBjb25zdCBjdXJyZW50V2lkdGhzID0gdmlld1N0YXRlPy5jb2x1bW5XaWR0aHM7XG5cbiAgICAgIGZvciAoY29uc3QgY29sSWQgb2YgY29sSWRzKSB7XG4gICAgICAgIGRlbGV0ZSBjdXJyZW50V2lkdGhzWyd4cyddW2NvbElkXTtcbiAgICAgICAgZGVsZXRlIGN1cnJlbnRXaWR0aHNbJ3NtJ11bY29sSWRdO1xuICAgICAgfVxuXG4gICAgICB2aWV3U3RhdGUuY29sdW1uV2lkdGhzID0gY3VycmVudFdpZHRocztcbiAgICAgIHRoaXMuI2RhdGFNYW5hZ2VyU3ZjLnVwZGF0ZURhdGFTdGF0ZShcbiAgICAgICAgdGhpcy4jY3VycmVudERhdGFTdGF0ZS5hZGRPclVwZGF0ZVZpZXcodGhpcy52aWV3SWQsIHZpZXdTdGF0ZSksXG4gICAgICAgIHRoaXMudmlld0lkLFxuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICAjYXBwbHlDb2x1bW5XaWR0aHMoKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLmFnR3JpZExpc3Q/LmZpcnN0IHx8IHRoaXMuYWdHcmlkTGlzdC5maXJzdC5hcGkuaXNEZXN0cm95ZWQoKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IHZpZXdTdGF0ZSA9XG4gICAgICB0aGlzLnZpZXdJZCAmJiB0aGlzLiNjdXJyZW50RGF0YVN0YXRlPy5nZXRWaWV3U3RhdGVCeUlkKHRoaXMudmlld0lkKTtcblxuICAgIGlmICh2aWV3U3RhdGUgJiYgdmlld1N0YXRlLmNvbHVtbldpZHRocyAmJiB2aWV3U3RhdGUuZGlzcGxheWVkQ29sdW1uSWRzKSB7XG4gICAgICBjb25zdCBicmVha3BvaW50TmFtZSA9XG4gICAgICAgIHRoaXMuI2N1cnJlbnRCcmVha3BvaW50ID09PSBTa3lNZWRpYUJyZWFrcG9pbnRzLnhzID8gJ3hzJyA6ICdzbSc7XG4gICAgICBjb25zdCBjb2x1bW5MaW1pdHMgPSB0aGlzLiNnZXRHcmlkQ29sdW1uTGltaXRzKFxuICAgICAgICB2aWV3U3RhdGUuZGlzcGxheWVkQ29sdW1uSWRzLFxuICAgICAgICB2aWV3U3RhdGUuY29sdW1uV2lkdGhzLFxuICAgICAgICBicmVha3BvaW50TmFtZSxcbiAgICAgICk7XG4gICAgICB0aGlzLmFnR3JpZExpc3QuZmlyc3QuYXBpLnNpemVDb2x1bW5zVG9GaXQoeyBjb2x1bW5MaW1pdHMgfSk7XG4gICAgfVxuICB9XG5cbiAgI2dldEdyaWRDb2x1bW5MaW1pdHMoXG4gICAgZGlzcGxheWVkQ29sdW1uczogc3RyaW5nW10sXG4gICAgY3VycmVudFdpZHRoczogU2t5RGF0YVZpZXdDb2x1bW5XaWR0aHMsXG4gICAgYnJlYWtwb2ludE5hbWU6IGtleW9mIFNreURhdGFWaWV3Q29sdW1uV2lkdGhzLFxuICApOiBJQ29sdW1uTGltaXRbXSB7XG4gICAgY29uc3QgZ3JpZENvbHVtbkxpbWl0czogSUNvbHVtbkxpbWl0W10gPSBbXTtcblxuICAgIGZvciAoY29uc3QgY29sdW1uIG9mIGRpc3BsYXllZENvbHVtbnMpIHtcbiAgICAgIGNvbnN0IGNvbHVtbldpZHRoID0gY3VycmVudFdpZHRoc1ticmVha3BvaW50TmFtZV1bY29sdW1uXTtcblxuICAgICAgaWYgKGNvbHVtbldpZHRoKSB7XG4gICAgICAgIGdyaWRDb2x1bW5MaW1pdHMucHVzaCh7XG4gICAgICAgICAga2V5OiBjb2x1bW4sXG4gICAgICAgICAgbWluV2lkdGg6IGNvbHVtbldpZHRoLFxuICAgICAgICAgIG1heFdpZHRoOiBjb2x1bW5XaWR0aCxcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBncmlkQ29sdW1uTGltaXRzO1xuICB9XG59XG4iXX0=
307
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWctZ3JpZC1kYXRhLW1hbmFnZXItYWRhcHRlci5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvYWctZ3JpZC9zcmMvbGliL21vZHVsZXMvYWctZ3JpZC9hZy1ncmlkLWRhdGEtbWFuYWdlci1hZGFwdGVyLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBR0wsU0FBUyxFQUNULEtBQUssRUFFTCxlQUFlLEVBQ2YsTUFBTSxFQUNOLE1BQU0sR0FDUCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDdEQsT0FBTyxFQUFpQixvQkFBb0IsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQVFsRSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFVaEQsT0FBTyxFQUFFLE9BQU8sRUFBZ0IsTUFBTSxNQUFNLENBQUM7QUFDN0MsT0FBTyxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUVuRCxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQzs7O0FBRXhFLFNBQVMsaUJBQWlCLENBQUMsVUFBeUI7SUFDbEQsT0FBTyxVQUFVLEtBQUssSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztBQUMzQyxDQUFDO0FBRUQ7O0dBRUc7QUFJSCxNQUFNLE9BQU8sb0NBQW9DO0lBYy9DLGNBQWMsQ0FBNEI7SUFDMUMsaUJBQWlCLENBQWtDO0lBQ25ELHdCQUF3QixDQUF3QztJQUNoRSxhQUFhLENBQTJCO0lBQ3hDLFdBQVcsQ0FBZ0M7SUFDM0MsY0FBYyxDQUF1QjtJQUNyQyxlQUFlLENBQW9CO0lBQ25DLGVBQWUsQ0FBd0I7SUFFOUIsV0FBVyxDQUVsQjtJQUVGLFlBQ0UsY0FBaUMs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LFlBQVksRUFBRSxDQUFDLENBQUM7WUFDOUQsQ0FBQztRQUNILENBQUM7SUFDSCxDQUFDO0lBRUQsb0JBQW9CLENBQ2xCLGdCQUEwQixFQUMxQixhQUFzQyxFQUN0QyxjQUE2QztRQUU3QyxNQUFNLGdCQUFnQixHQUFtQixFQUFFLENBQUM7UUFFNUMsS0FBSyxNQUFNLE1BQU0sSUFBSSxnQkFBZ0IsRUFBRSxDQUFDO1lBQ3RDLE1BQU0sV0FBVyxHQUFHLGFBQWEsQ0FBQyxjQUFjLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUUxRCxJQUFJLFdBQVcsRUFBRSxDQUFDO2dCQUNoQixnQkFBZ0IsQ0FBQyxJQUFJLENBQUM7b0JBQ3BCLEdBQUcsRUFBRSxNQUFNO29CQUNYLFFBQVEsRUFBRSxXQUFXO29CQUNyQixRQUFRLEVBQUUsV0FBVztpQkFDdEIsQ0FBQyxDQUFDO1lBQ0wsQ0FBQztRQUNILENBQUM7UUFDRCxPQUFPLGdCQUFnQixDQUFDO0lBQzFCLENBQUM7OEdBNVpVLG9DQUFvQztrR0FBcEMsb0NBQW9DLDhIQU1hLGFBQWEsMEZBSTNCLHlCQUF5Qjs7MkZBVjVELG9DQUFvQztrQkFIaEQsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsK0JBQStCO2lCQUMxQzswSEFLUSxNQUFNO3NCQURaLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBBZnRlckNvbnRlbnRJbml0LFxuICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgRGlyZWN0aXZlLFxuICBJbnB1dCxcbiAgT25EZXN0cm95LFxuICBjb250ZW50Q2hpbGRyZW4sXG4gIGVmZmVjdCxcbiAgaW5qZWN0LFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IHRvU2lnbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZS9yeGpzLWludGVyb3AnO1xuaW1wb3J0IHsgU2t5QnJlYWtwb2ludCwgU2t5TWVkaWFRdWVyeVNlcnZpY2UgfSBmcm9tICdAc2t5dXgvY29yZSc7XG5pbXBvcnQge1xuICBTa3lEYXRhTWFuYWdlclNlcnZpY2UsXG4gIFNreURhdGFNYW5hZ2VyU3RhdGUsXG4gIFNreURhdGFWaWV3Q29sdW1uV2lkdGhzLFxuICBTa3lEYXRhVmlld0NvbmZpZyxcbn0gZnJvbSAnQHNreXV4L2RhdGEtbWFuYWdlcic7XG5cbmltcG9ydCB7IEFnR3JpZEFuZ3VsYXIgfSBmcm9tICdhZy1ncmlkLWFuZ3VsYXInO1xuaW1wb3J0IHtcbiAgQ29sdW1uTW92ZWRFdmVudCxcbiAgQ29sdW1uUmVzaXplZEV2ZW50LFxuICBDb2x1bW5TdGF0ZSxcbiAgRHJhZ1N0b3BwZWRFdmVudCxcbiAgR3JpZEFwaSxcbiAgSUNvbHVtbkxpbWl0LFxuICBSb3dTZWxlY3RlZEV2ZW50LFxufSBmcm9tICdhZy1ncmlkLWNvbW11bml0eSc7XG5pbXBvcnQgeyBTdWJqZWN0LCBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGZpbHRlciwgdGFrZVVudGlsIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5pbXBvcnQgeyBTa3lBZ0dyaWRXcmFwcGVyQ29tcG9uZW50IH0gZnJvbSAnLi9hZy1ncmlkLXdyYXBwZXIuY29tcG9uZW50JztcblxuZnVuY3Rpb24gdG9Db2x1bW5XaWR0aE5hbWUoYnJlYWtwb2ludDogU2t5QnJlYWtwb2ludCk6ICd4cycgfCAnc20nIHtcbiAgcmV0dXJuIGJyZWFrcG9pbnQgPT09ICd4cycgPyAneHMnIDogJ3NtJztcbn1cblxuLyoqXG4gKiBAaW50ZXJuYWxcbiAqL1xuQERpcmVjdGl2ZSh7XG4gIHNlbGVjdG9yOiAnW3NreUFnR3JpZERhdGFNYW5hZ2VyQWRhcHRlcl0nLFxufSlcbmV4cG9ydCBjbGFzcyBTa3lBZ0dyaWREYXRhTWFuYWdlckFkYXB0ZXJEaXJlY3RpdmVcbiAgaW1wbGVtZW50cyBBZnRlckNvbnRlbnRJbml0LCBPbkRlc3Ryb3lcbntcbiAgQElucHV0KClcbiAgcHVibGljIHZpZXdJZDogc3RyaW5nIHwgdW5kZWZpbmVkO1xuXG4gIHB1YmxpYyByZWFkb25seSBhZ0dyaWRMaXN0ID0gY29udGVudENoaWxkcmVuPEFnR3JpZEFuZ3VsYXI+KEFnR3JpZEFuZ3VsYXIsIHtcbiAgICBkZXNjZW5kYW50czogdHJ1ZSxcbiAgfSk7XG5cbiAgcHVibGljIHNreUFnR3JpZFdyYXBwZXJMaXN0ID0gY29udGVudENoaWxkcmVuKFNreUFnR3JpZFdyYXBwZXJDb21wb25lbnQsIHtcbiAgICBkZXNjZW5kYW50czogdHJ1ZSxcbiAgfSk7XG5cbiAgI2N1cnJlbnRBZ0dyaWQ6IEFnR3JpZEFuZ3VsYXIgfCB1bmRlZmluZWQ7XG4gICNjdXJyZW50RGF0YVN0YXRlOiBTa3lEYXRhTWFuYWdlclN0YXRlIHwgdW5kZWZpbmVkO1xuICAjY3VycmVudFNreUFnR3JpZFdyYXBwZXI6IFNreUFnR3JpZFdyYXBwZXJDb21wb25lbnQgfCB1bmRlZmluZWQ7XG4gICNkYXRhU3RhdGVTdWI6IFN1YnNjcmlwdGlvbiB8IHVuZGVmaW5lZDtcbiAgI3ZpZXdDb25maWc6IFNreURhdGFWaWV3Q29uZmlnIHwgdW5kZWZpbmVkO1xuICAjbmdVbnN1YnNjcmliZSA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG4gICNjaGFuZ2VEZXRlY3RvcjogQ2hhbmdlRGV0ZWN0b3JSZWY7XG4gICNkYXRhTWFuYWdlclN2YzogU2t5RGF0YU1hbmFnZXJTZXJ2aWNlO1xuXG4gIHJlYWRvbmx5ICNicmVha3BvaW50ID0gdG9TaWduYWwoXG4gICAgaW5qZWN0KFNreU1lZGlhUXVlcnlTZXJ2aWNlKS5icmVha3BvaW50Q2hhbmdlLFxuICApO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIGNoYW5nZURldGVjdG9yOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBkYXRhTWFuYWdlclN2YzogU2t5RGF0YU1hbmFnZXJTZXJ2aWNlLFxuICApIHtcbiAgICB0aGlzLiNjaGFuZ2VEZXRlY3RvciA9IGNoYW5nZURldGVjdG9yO1xuICAgIHRoaXMuI2RhdGFNYW5hZ2VyU3ZjID0gZGF0YU1hbmFnZXJTdmM7XG5cbiAgICBlZmZlY3QoKCkgPT4ge1xuICAgICAgY29uc3QgbGlzdCA9IHRoaXMuYWdHcmlkTGlzdCgpO1xuXG4gICAgICB0aGlzLiNjaGVja0ZvckFnR3JpZChsaXN0KTtcbiAgICB9KTtcblxuICAgIGVmZmVjdCgoKSA9PiB7XG4gICAgICBjb25zdCBsaXN0ID0gdGhpcy5za3lBZ0dyaWRXcmFwcGVyTGlzdCgpO1xuXG4gICAgICB0aGlzLiNjaGVja0ZvclNreUFnR3JpZFdyYXBwZXIobGlzdCk7XG4gICAgfSk7XG5cbiAgICBlZmZlY3QoKCkgPT4ge1xuICAgICAgY29uc3QgYnJlYWtwb2ludCA9IHRoaXMuI2JyZWFrcG9pbnQoKTtcblxuICAgICAgaWYgKGJyZWFrcG9pbnQpIHtcbiAgICAgICAgdGhpcy4jYXBwbHlDb2x1bW5XaWR0aHMoYnJlYWtwb2ludCk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBwdWJsaWMgbmdBZnRlckNvbnRlbnRJbml0KCk6IHZvaWQge1xuICAgIGlmICh0aGlzLnZpZXdJZCkge1xuICAgICAgdGhpcy4jZGF0YU1hbmFnZXJTdmMuc2V0Vmlld2tlZXBlckNsYXNzZXModGhpcy52aWV3SWQsIFsnLmFnLWhlYWRlciddKTtcbiAgICAgIHRoaXMuI3ZpZXdDb25maWcgPSB0aGlzLiNkYXRhTWFuYWdlclN2Yy5nZXRWaWV3QnlJZCh0aGlzLnZpZXdJZCk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuI25nVW5zdWJzY3JpYmUubmV4dCgpO1xuICAgIHRoaXMuI25nVW5zdWJzY3JpYmUuY29tcGxldGUoKTtcbiAgfVxuXG4gICNjaGVja0ZvckFnR3JpZChhZ0dyaWRMaXN0OiByZWFkb25seSBBZ0dyaWRBbmd1bGFyW10pOiB2b2lkIHtcbiAgICBjb25zdCBhZ0dyaWQgPSBhZ0dyaWRMaXN0WzBdO1xuICAgIGNvbnN0IGFnR3JpZENvdW50ID0gYWdHcmlkTGlzdC5sZW5ndGg7XG5cbiAgICBpZiAoYWdHcmlkKSB7XG4gICAgICBpZiAoYWdHcmlkICE9PSB0aGlzLiNjdXJyZW50QWdHcmlkKSB7XG4gICAgICAgIHRoaXMuI3JlZ2lzdGVyQWdHcmlkKGFnR3JpZCk7XG4gICAgICB9XG5cbiAgICAgIGlmIChhZ0dyaWRDb3VudCA+IDEpIHtcbiAgICAgICAgY29uc29sZS53YXJuKFxuICAgICAgICAgICdNb3JlIHRoYW4gb25lIGFnLWdyaWQgY2hpbGQgY29tcG9uZW50IHdhcyBmb3VuZC4gVXNpbmcgdGhlIGZpcnN0IGFnLUdyaWQuJyxcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAjY2hlY2tGb3JTa3lBZ0dyaWRXcmFwcGVyKFxuICAgIHdyYXBwZXJzOiByZWFkb25seSBTa3lBZ0dyaWRXcmFwcGVyQ29tcG9uZW50W10sXG4gICk6IHZvaWQge1xuICAgIGNvbnN0IGNvdW50ID0gd3JhcHBlcnMubGVuZ3RoO1xuICAgIGNvbnN0IHdyYXBwZXIgPSB3cmFwcGVyc1swXTtcblxuICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBlbHNlICovXG4gICAgaWYgKHdyYXBwZXIgIT09IHRoaXMuI2N1cnJlbnRTa3lBZ0dyaWRXcmFwcGVyKSB7XG4gICAgICB0aGlzLiNyZWdpc3RlclNreUFnR3JpZFdyYXBwZXIod3JhcHBlcik7XG4gICAgfVxuXG4gICAgaWYgKGNvdW50ID4gMSkge1xuICAgICAgY29uc29sZS53YXJuKFxuICAgICAgICAnTW9yZSB0aGFuIG9uZSBhZy1ncmlkIGNoaWxkIGNvbXBvbmVudCB3YXMgZm91bmQuIFVzaW5nIHRoZSBmaXJzdCBhZy1HcmlkLicsXG4gICAgICApO1xuICAgIH1cbiAgfVxuXG4gICN1bnJlZ2lzdGVyQWdHcmlkKCk6IHZvaWQge1xuICAgIHRoaXMuI2N1cnJlbnRBZ0dyaWQgPSB1bmRlZmluZWQ7XG5cbiAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgaWYgKi9cbiAgICBpZiAodGhpcy4jZGF0YVN0YXRlU3ViKSB7XG4gICAgICB0aGlzLiNkYXRhU3RhdGVTdWIudW5zdWJzY3JpYmUoKTtcbiAgICB9XG4gIH1cblxuICAjdW5yZWdpc3RlclNreUFnR3JpZFdyYXBwZXIoKTogdm9pZCB7XG4gICAgdGhpcy4jY3VycmVudFNreUFnR3JpZFdyYXBwZXIgPSB1bmRlZmluZWQ7XG4gIH1cblxuICAjcmVnaXN0ZXJTa3lBZ0dyaWRXcmFwcGVyKHdyYXBwZXI6IFNreUFnR3JpZFdyYXBwZXJDb21wb25lbnQpOiB2b2lkIHtcbiAgICB0aGlzLiN1bnJlZ2lzdGVyU2t5QWdHcmlkV3JhcHBlcigpO1xuICAgIHRoaXMuI2N1cnJlbnRTa3lBZ0dyaWRXcmFwcGVyID0gd3JhcHBlcjtcblxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgaWYgKHRoaXMuI2N1cnJlbnRTa3lBZ0dyaWRXcmFwcGVyKSB7XG4gICAgICAgIHRoaXMuI2N1cnJlbnRTa3lBZ0dyaWRXcmFwcGVyLnZpZXdrZWVwZXJDbGFzc2VzID0gW107XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICAjcmVnaXN0ZXJBZ0dyaWQoYWdHcmlkOiBBZ0dyaWRBbmd1bGFyKTogdm9pZCB7XG4gICAgdGhpcy4jdW5yZWdpc3RlckFnR3JpZCgpO1xuXG4gICAgdGhpcy4jY3VycmVudEFnR3JpZCA9IGFnR3JpZDtcblxuICAgIGlmIChhZ0dyaWQpIHtcbiAgICAgIGFnR3JpZC5ncmlkUmVhZHkucGlwZSh0YWtlVW50aWwodGhpcy4jbmdVbnN1YnNjcmliZSkpLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgIGlmICh0aGlzLiN2aWV3Q29uZmlnICYmIHRoaXMudmlld0lkKSB7XG4gICAgICAgICAgdGhpcy4jdmlld0NvbmZpZy5vblNlbGVjdEFsbENsaWNrID0gKCkgPT4gYWdHcmlkLmFwaS5zZWxlY3RBbGwoKTtcbiAgICAgICAgICB0aGlzLiN2aWV3Q29uZmlnLm9uQ2xlYXJBbGxDbGljayA9ICgpID0+IGFnR3JpZC5hcGkuZGVzZWxlY3RBbGwoKTtcbiAgICAgICAgICB0aGlzLiNkYXRhTWFuYWdlclN2Yy51cGRhdGVWaWV3Q29uZmlnKHRoaXMuI3ZpZXdDb25maWcpO1xuICAgICAgICAgIHRoaXMuI2RhdGFTdGF0ZVN1YiA9IHRoaXMuI2RhdGFNYW5hZ2VyU3ZjXG4gICAgICAgICAgICAuZ2V0RGF0YVN0YXRlVXBkYXRlcyh0aGlzLiN2aWV3Q29uZmlnLmlkKVxuICAgICAgICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuI25nVW5zdWJzY3JpYmUpKVxuICAgICAgICAgICAgLnN1YnNjcmliZSgoZGF0YVN0YXRlOiBTa3lEYXRhTWFuYWdlclN0YXRlKSA9PiB7XG4gICAgICAgICAgICAgIHRoaXMuI2N1cnJlbnREYXRhU3RhdGUgPSBkYXRhU3RhdGU7XG4gICAgICAgICAgICAgIHRoaXMuI2Rpc3BsYXlDb2x1bW5zKGRhdGFTdGF0ZSk7XG4gICAgICAgICAgICAgIHRoaXMuI2FwcGx5U29ydChkYXRhU3RhdGUpO1xuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICBpZiAoYWdHcmlkLmdyaWRPcHRpb25zPy5jb250ZXh0Py5lbmFibGVUb3BTY3JvbGwpIHtcbiAgICAgICAgICAgIHRoaXMuI2RhdGFNYW5hZ2VyU3ZjLnNldFZpZXdrZWVwZXJDbGFzc2VzKHRoaXMudmlld0lkLCBbXG4gICAgICAgICAgICAgICcuYWctaGVhZGVyJyxcbiAgICAgICAgICAgICAgJy5hZy1ib2R5LWhvcml6b250YWwtc2Nyb2xsJyxcbiAgICAgICAgICAgIF0pO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHRoaXMuI2FwcGx5Q29sdW1uV2lkdGhzKCk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuXG4gICAgICBhZ0dyaWQuY29sdW1uTW92ZWRcbiAgICAgICAgLnBpcGUoXG4gICAgICAgICAgdGFrZVVudGlsKHRoaXMuI25nVW5zdWJzY3JpYmUpLFxuICAgICAgICAgIGZpbHRlcihcbiAgICAgICAgICAgIChldmVudDogQ29sdW1uTW92ZWRFdmVudCkgPT5cbiAgICAgICAgICAgICAgIVtcbiAgICAgICAgICAgICAgICAnZ3JpZEluaXRpYWxpemluZycsXG4gICAgICAgICAgICAgICAgJ3VpQ29sdW1uUmVzaXplZCcsXG4gICAgICAgICAgICAgICAgJ3VpQ29sdW1uRHJhZ2dlZCcsXG4gICAgICAgICAgICAgICAgJ2FwaScsXG4gICAgICAgICAgICAgIF0uaW5jbHVkZXMoZXZlbnQuc291cmNlKSxcbiAgICAgICAgICApLFxuICAgICAgICApXG4gICAgICAgIC5zdWJzY3JpYmUoKHZhbHVlOiBDb2x1bW5Nb3ZlZEV2ZW50KSA9PiB7XG4gICAgICAgICAgdGhpcy4jdXBkYXRlQ29sdW1uc0luQ3VycmVudERhdGFTdGF0ZSh2YWx1ZS5hcGkpO1xuICAgICAgICB9KTtcblxuICAgICAgYWdHcmlkLmNvbHVtblJlc2l6ZWRcbiAgICAgICAgLnBpcGUoXG4gICAgICAgICAgdGFrZVVudGlsKHRoaXMuI25nVW5zdWJzY3JpYmUpLFxuICAgICAgICAgIGZpbHRlcihcbiAgICAgICAgICAgIChldmVudDogQ29sdW1uUmVzaXplZEV2ZW50KSA9PiBldmVudC5zb3VyY2UgPT09ICd1aUNvbHVtblJlc2l6ZWQnLFxuICAgICAgICAgICksXG4gICAgICAgIClcbiAgICAgICAgLnN1YnNjcmliZSgoZXZlbnQ6IENvbHVtblJlc2l6ZWRFdmVudCkgPT4ge1xuICAgICAgICAgIGNvbnN0IGNvbElkID0gZXZlbnQuY29sdW1uPy5nZXRDb2xJZCgpO1xuICAgICAgICAgIGNvbnN0IHdpZHRoID0gZXZlbnQuY29sdW1uPy5nZXRBY3R1YWxXaWR0aCgpO1xuICAgICAgICAgIGNvbnN0IGJyZWFrcG9pbnQgPSB0aGlzLiNicmVha3BvaW50KCk7XG5cbiAgICAgICAgICBpZiAoY29sSWQgJiYgd2lkdGggJiYgYnJlYWtwb2ludCkge1xuICAgICAgICAgICAgdGhpcy4jdXBkYXRlQ29sdW1uV2lkdGgoY29sSWQsIHdpZHRoLCBicmVha3BvaW50KTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuXG4gICAgICBhZ0dyaWQuZHJhZ1N0b3BwZWRcbiAgICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuI25nVW5zdWJzY3JpYmUpKVxuICAgICAgICAuc3Vic2NyaWJlKCh2YWx1ZTogRHJhZ1N0b3BwZWRFdmVudCkgPT4ge1xuICAgICAgICAgIHRoaXMuI3VwZGF0ZUNvbHVtbnNJbkN1cnJlbnREYXRhU3RhdGUodmFsdWUuYXBpKTtcbiAgICAgICAgfSk7XG5cbiAgICAgIGFnR3JpZC5yb3dTZWxlY3RlZFxuICAgICAgICAucGlwZSh0YWtlVW50aWwodGhpcy4jbmdVbnN1YnNjcmliZSkpXG4gICAgICAgIC5zdWJzY3JpYmUoKGV2ZW50OiBSb3dTZWxlY3RlZEV2ZW50KSA9PiB7XG4gICAgICAgICAgaWYgKHRoaXMuI3ZpZXdDb25maWcgJiYgdGhpcy4jY3VycmVudERhdGFTdGF0ZSkge1xuICAgICAgICAgICAgY29uc3Qgcm93ID0gZXZlbnQubm9kZTtcbiAgICAgICAgICAgIGNvbnN0IHNlbGVjdGVkSWRzID0gdGhpcy4jY3VycmVudERhdGFTdGF0ZS5zZWxlY3RlZElkcyB8fCBbXTtcbiAgICAgICAgICAgIGNvbnN0IHJvd0luZGV4ID0gc2VsZWN0ZWRJZHMuaW5kZXhPZihyb3cuZGF0YS5pZCk7XG5cbiAgICAgICAgICAgIGlmIChyb3cuaXNTZWxlY3RlZCgpICYmIHJvd0luZGV4ID09PSAtMSkge1xuICAgICAgICAgICAgICBzZWxlY3RlZElkcy5wdXNoKHJvdy5kYXRhLmlkKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoIXJvdy5pc1NlbGVjdGVkKCkgJiYgcm93SW5kZXggIT09IC0xKSB7XG4gICAgICAgICAgICAgIHNlbGVjdGVkSWRzLnNwbGljZShyb3dJbmRleCwgMSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHRoaXMuI2N1cnJlbnREYXRhU3RhdGUuc2VsZWN0ZWRJZHMgPSBzZWxlY3RlZElkcztcbiAgICAgICAgICAgIHRoaXMuI2RhdGFNYW5hZ2VyU3ZjLnVwZGF0ZURhdGFTdGF0ZShcbiAgICAgICAgICAgICAgdGhpcy4jY3VycmVudERhdGFTdGF0ZSxcbiAgICAgICAgICAgICAgdGhpcy4jdmlld0NvbmZpZy5pZCxcbiAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgIHRoaXMuI2NoYW5nZURldGVjdG9yLm1hcmtGb3JDaGVjaygpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG5cbiAgICAgIGFnR3JpZC5zb3J0Q2hhbmdlZC5waXBlKHRha2VVbnRpbCh0aGlzLiNuZ1Vuc3Vic2NyaWJlKSkuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgY29uc3QgZ3JpZENvbHVtblN0YXRlczogQ29sdW1uU3RhdGVbXSA9IGFnR3JpZC5hcGkuZ2V0Q29sdW1uU3RhdGUoKTtcblxuICAgICAgICBjb25zdCBhY3RpdmVTb3J0Q29sdW1uU3RhdGUgPVxuICAgICAgICAgIGdyaWRDb2x1bW5TdGF0ZXM/LmZpbmQoXG4gICAgICAgICAgICAoYUdyaWRDb2x1bW5TdGF0ZSkgPT4gYUdyaWRDb2x1bW5TdGF0ZS5zb3J0SW5kZXggPT09IDAsXG4gICAgICAgICAgKSA/P1xuICAgICAgICAgIGdyaWRDb2x1bW5TdGF0ZXM/LmZpbmQoKGFHcmlkQ29sdW1uU3RhdGUpID0+IGFHcmlkQ29sdW1uU3RhdGUuc29ydCk7XG5cbiAgICAgICAgaWYgKHRoaXMuI3ZpZXdDb25maWcgJiYgdGhpcy4jY3VycmVudERhdGFTdGF0ZSkge1xuICAgICAgICAgIGlmIChhY3RpdmVTb3J0Q29sdW1uU3RhdGUpIHtcbiAgICAgICAgICAgIGNvbnN0IGFjdGl2ZVNvcnRDb2x1bW5EZWYgPSBhZ0dyaWQuYXBpLmdldENvbHVtbkRlZihcbiAgICAgICAgICAgICAgYWN0aXZlU29ydENvbHVtblN0YXRlLmNvbElkLFxuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIHRoaXMuI2N1cnJlbnREYXRhU3RhdGUuYWN0aXZlU29ydE9wdGlvbiA9IHtcbiAgICAgICAgICAgICAgZGVzY2VuZGluZzogYWN0aXZlU29ydENvbHVtblN0YXRlLnNvcnQgPT09ICdkZXNjJyxcbiAgICAgICAgICAgICAgaWQ6IGFjdGl2ZVNvcnRDb2x1bW5TdGF0ZS5jb2xJZCxcbiAgICAgICAgICAgICAgcHJvcGVydHlOYW1lOiBhY3RpdmVTb3J0Q29sdW1uRGVmPy5maWVsZCB8fCAnJyxcbiAgICAgICAgICAgICAgbGFiZWw6IGFjdGl2ZVNvcnRDb2x1bW5EZWY/LmhlYWRlck5hbWUgfHwgJycsXG4gICAgICAgICAgICB9O1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLiNjdXJyZW50RGF0YVN0YXRlLmFjdGl2ZVNvcnRPcHRpb24gPSB1bmRlZmluZWQ7XG4gICAgICAgICAgfVxuICAgICAgICAgIHRoaXMuI2RhdGFNYW5hZ2VyU3ZjLnVwZGF0ZURhdGFTdGF0ZShcbiAgICAgICAgICAgIHRoaXMuI2N1cnJlbnREYXRhU3RhdGUsXG4gICAgICAgICAgICB0aGlzLiN2aWV3Q29uZmlnLmlkLFxuICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gICN1cGRhdGVDb2x1bW5zSW5DdXJyZW50RGF0YVN0YXRlKGFwaTogR3JpZEFwaSk6IHZvaWQge1xuICAgIGlmICh0aGlzLiN2aWV3Q29uZmlnICYmIHRoaXMuI2N1cnJlbnREYXRhU3RhdGUpIHtcbiAgICAgIGNvbnN0IGNvbHVtbk9yZGVyID0gdGhpcy4jZ2V0Q29sdW1uT3JkZXIoYXBpKTtcblxuICAgICAgY29uc3Qgdmlld1N0YXRlID0gdGhpcy4jY3VycmVudERhdGFTdGF0ZS5nZXRWaWV3U3RhdGVCeUlkKFxuICAgICAgICB0aGlzLiN2aWV3Q29uZmlnLmlkLFxuICAgICAgKTtcblxuICAgICAgaWYgKFxuICAgICAgICB2aWV3U3RhdGUgJiZcbiAgICAgICAgKHZpZXdTdGF0ZS5kaXNwbGF5ZWRDb2x1bW5JZHMubGVuZ3RoICE9PSBjb2x1bW5PcmRlci5sZW5ndGggfHxcbiAgICAgICAgICB2aWV3U3RhdGUuZGlzcGxheWVkQ29sdW1uSWRzLnNvbWUoKGNvbCwgaSkgPT4gY29sICE9PSBjb2x1bW5PcmRlcltpXSkpXG4gICAgICApIHtcbiAgICAgICAgdmlld1N0YXRlLmRpc3BsYXllZENvbHVtbklkcyA9IGNvbHVtbk9yZGVyO1xuXG4gICAgICAgIHRoaXMuI2RhdGFNYW5hZ2VyU3ZjLnVwZGF0ZURhdGFTdGF0ZShcbiAgICAgICAgICB0aGlzLiNjdXJyZW50RGF0YVN0YXRlLmFkZE9yVXBkYXRlVmlldyhcbiAgICAgICAgICAgIHRoaXMuI3ZpZXdDb25maWcuaWQsXG4gICAgICAgICAgICB2aWV3U3RhdGUsXG4gICAgICAgICAgKSxcbiAgICAgICAgICB0aGlzLiN2aWV3Q29uZmlnLmlkLFxuICAgICAgICApO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gICNnZXRDb2x1bW5PcmRlcihhcGk6IEdyaWRBcGkpOiBzdHJpbmdbXSB7XG4gICAgcmV0dXJuIGFwaVxuICAgICAgLmdldENvbHVtblN0YXRlKClcbiAgICAgIC5maWx0ZXIoKHN0YXRlKSA9PiAhc3RhdGUuaGlkZSlcbiAgICAgIC5tYXAoKHN0YXRlKSA9PiBzdGF0ZS5jb2xJZCk7XG4gIH1cblxuICAjZGlzcGxheUNvbHVtbnMoZGF0YVN0YXRlOiBTa3lEYXRhTWFuYWdlclN0YXRlKTogdm9pZCB7XG4gICAgY29uc3QgYWdHcmlkID0gdGhpcy4jY3VycmVudEFnR3JpZDtcblxuICAgIGlmIChhZ0dyaWQgJiYgdGhpcy4jdmlld0NvbmZpZykge1xuICAgICAgY29uc3Qgdmlld1N0YXRlID0gZGF0YVN0YXRlLmdldFZpZXdTdGF0ZUJ5SWQodGhpcy4jdmlld0NvbmZpZy5pZCk7XG4gICAgICBsZXQgZGlzcGxheWVkQ29sdW1uSWRzOiBzdHJpbmdbXSA9IFtdO1xuXG4gICAgICAvKmlzdGFuYnVsIGlnbm9yZSBlbHNlKi9cbiAgICAgIGlmICh2aWV3U3RhdGU/LmRpc3BsYXllZENvbHVtbklkcykge1xuICAgICAgICBkaXNwbGF5ZWRDb2x1bW5JZHMgPSB2aWV3U3RhdGUuZGlzcGxheWVkQ29sdW1uSWRzO1xuICAgICAgfVxuXG4gICAgICBjb25zdCBjb2x1bW5PcmRlciA9IHRoaXMuI2dldENvbHVtbk9yZGVyKGFnR3JpZC5hcGkpO1xuXG4gICAgICBpZiAoXG4gICAgICAgIGRpc3BsYXllZENvbHVtbklkcy5sZW5ndGggIT09IGNvbHVtbk9yZGVyLmxlbmd0aCB8fFxuICAgICAgICBkaXNwbGF5ZWRDb2x1bW5JZHMuc29tZSgoY29sLCBpKSA9PiBjb2wgIT09IGNvbHVtbk9yZGVyW2ldKVxuICAgICAgKSB7XG4gICAgICAgIGNvbnN0IGhpZGVDb2x1bW5zID0gYWdHcmlkLmFwaVxuICAgICAgICAgIC5nZXRDb2x1bW5TdGF0ZSgpXG4gICAgICAgICAgLm1hcCgoY29sKSA9PiBjb2wuY29sSWQpXG4gICAgICAgICAgLmZpbHRlcigoY29sSWQpID0+ICFkaXNwbGF5ZWRDb2x1bW5JZHMuaW5jbHVkZXMoY29sSWQpKTtcblxuICAgICAgICBhZ0dyaWQuYXBpLnNldENvbHVtbnNWaXNpYmxlKGhpZGVDb2x1bW5zLCBmYWxzZSk7XG4gICAgICAgIGFnR3JpZC5hcGkuc2V0Q29sdW1uc1Zpc2libGUoZGlzcGxheWVkQ29sdW1uSWRzLCB0cnVlKTtcbiAgICAgICAgYWdHcmlkLmFwaS5tb3ZlQ29sdW1ucyhkaXNwbGF5ZWRDb2x1bW5JZHMsIDApO1xuICAgICAgICB0aGlzLiNyZW1vdmVDb2x1bW5XaWR0aHMoaGlkZUNvbHVtbnMpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gICNhcHBseVNvcnQoZGF0YVN0YXRlOiBTa3lEYXRhTWFuYWdlclN0YXRlKTogdm9pZCB7XG4gICAgY29uc3QgYWdHcmlkID0gdGhpcy4jY3VycmVudEFnR3JpZDtcbiAgICBjb25zdCBhY3RpdmVTb3J0ID0gZGF0YVN0YXRlLmFjdGl2ZVNvcnRPcHRpb247XG5cbiAgICBpZiAoYWN0aXZlU29ydCkge1xuICAgICAgYWdHcmlkPy5hcGkuYXBwbHlDb2x1bW5TdGF0ZSh7XG4gICAgICAgIHN0YXRlOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgY29sSWQ6IGFjdGl2ZVNvcnQuaWQsXG4gICAgICAgICAgICBzb3J0OiBhY3RpdmVTb3J0LmRlc2NlbmRpbmcgPyAnZGVzYycgOiAnYXNjJyxcbiAgICAgICAgICB9LFxuICAgICAgICBdLFxuICAgICAgICBkZWZhdWx0U3RhdGU6IHsgc29ydDogbnVsbCB9LFxuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgI3VwZGF0ZUNvbHVtbldpZHRoKFxuICAgIGNvbElkOiBzdHJpbmcsXG4gICAgd2lkdGg6IG51bWJlcixcbiAgICBicmVha3BvaW50OiBTa3lCcmVha3BvaW50LFxuICApOiB2b2lkIHtcbiAgICBjb25zdCB2aWV3U3RhdGUgPVxuICAgICAgdGhpcy52aWV3SWQgJiYgdGhpcy4jY3VycmVudERhdGFTdGF0ZT8uZ2V0Vmlld1N0YXRlQnlJZCh0aGlzLnZpZXdJZCk7XG4gICAgaWYgKHZpZXdTdGF0ZSAmJiB0aGlzLnZpZXdJZCAmJiB0aGlzLiNjdXJyZW50RGF0YVN0YXRlKSB7XG4gICAgICBjb25zdCBjdXJyZW50V2lkdGhzID0gdmlld1N0YXRlPy5jb2x1bW5XaWR0aHM7XG5cbiAgICAgIGN1cnJlbnRXaWR0aHNbdG9Db2x1bW5XaWR0aE5hbWUoYnJlYWtwb2ludCldW2NvbElkXSA9IHdpZHRoO1xuXG4gICAgICB2aWV3U3RhdGUuY29sdW1uV2lkdGhzID0gY3VycmVudFdpZHRocztcbiAgICAgIHRoaXMuI2RhdGFNYW5hZ2VyU3ZjLnVwZGF0ZURhdGFTdGF0ZShcbiAgICAgICAgdGhpcy4jY3VycmVudERhdGFTdGF0ZS5hZGRPclVwZGF0ZVZpZXcodGhpcy52aWV3SWQsIHZpZXdTdGF0ZSksXG4gICAgICAgIHRoaXMudmlld0lkLFxuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICAjcmVtb3ZlQ29sdW1uV2lkdGhzKGNvbElkczogc3RyaW5nW10pOiB2b2lkIHtcbiAgICBjb25zdCB2aWV3U3RhdGUgPVxuICAgICAgdGhpcy52aWV3SWQgJiYgdGhpcy4jY3VycmVudERhdGFTdGF0ZT8uZ2V0Vmlld1N0YXRlQnlJZCh0aGlzLnZpZXdJZCk7XG5cbiAgICBpZiAodmlld1N0YXRlICYmIHRoaXMudmlld0lkICYmIHRoaXMuI2N1cnJlbnREYXRhU3RhdGUpIHtcbiAgICAgIGNvbnN0IGN1cnJlbnRXaWR0aHMgPSB2aWV3U3RhdGU/LmNvbHVtbldpZHRocztcblxuICAgICAgZm9yIChjb25zdCBjb2xJZCBvZiBjb2xJZHMpIHtcbiAgICAgICAgZGVsZXRlIGN1cnJlbnRXaWR0aHNbJ3hzJ11bY29sSWRdO1xuICAgICAgICBkZWxldGUgY3VycmVudFdpZHRoc1snc20nXVtjb2xJZF07XG4gICAgICB9XG5cbiAgICAgIHZpZXdTdGF0ZS5jb2x1bW5XaWR0aHMgPSBjdXJyZW50V2lkdGhzO1xuICAgICAgdGhpcy4jZGF0YU1hbmFnZXJTdmMudXBkYXRlRGF0YVN0YXRlKFxuICAgICAgICB0aGlzLiNjdXJyZW50RGF0YVN0YXRlLmFkZE9yVXBkYXRlVmlldyh0aGlzLnZpZXdJZCwgdmlld1N0YXRlKSxcbiAgICAgICAgdGhpcy52aWV3SWQsXG4gICAgICApO1xuICAgIH1cbiAgfVxuXG4gICNhcHBseUNvbHVtbldpZHRocyhicmVha3BvaW50PzogU2t5QnJlYWtwb2ludCk6IHZvaWQge1xuICAgIGJyZWFrcG9pbnQgPz89IHRoaXMuI2JyZWFrcG9pbnQoKTtcblxuICAgIGlmIChicmVha3BvaW50KSB7XG4gICAgICBjb25zdCB2aWV3U3RhdGUgPVxuICAgICAgICB0aGlzLnZpZXdJZCAmJiB0aGlzLiNjdXJyZW50RGF0YVN0YXRlPy5nZXRWaWV3U3RhdGVCeUlkKHRoaXMudmlld0lkKTtcblxuICAgICAgaWYgKHZpZXdTdGF0ZSAmJiB2aWV3U3RhdGUuY29sdW1uV2lkdGhzICYmIHZpZXdTdGF0ZS5kaXNwbGF5ZWRDb2x1bW5JZHMpIHtcbiAgICAgICAgY29uc3QgY29sdW1uTGltaXRzID0gdGhpcy4jZ2V0R3JpZENvbHVtbkxpbWl0cyhcbiAgICAgICAgICB2aWV3U3RhdGUuZGlzcGxheWVkQ29sdW1uSWRzLFxuICAgICAgICAgIHZpZXdTdGF0ZS5jb2x1bW5XaWR0aHMsXG4gICAgICAgICAgdG9Db2x1bW5XaWR0aE5hbWUoYnJlYWtwb2ludCksXG4gICAgICAgICk7XG5cbiAgICAgICAgdGhpcy4jY3VycmVudEFnR3JpZD8uYXBpLnNpemVDb2x1bW5zVG9GaXQoeyBjb2x1bW5MaW1pdHMgfSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgI2dldEdyaWRDb2x1bW5MaW1pdHMoXG4gICAgZGlzcGxheWVkQ29sdW1uczogc3RyaW5nW10sXG4gICAgY3VycmVudFdpZHRoczogU2t5RGF0YVZpZXdDb2x1bW5XaWR0aHMsXG4gICAgYnJlYWtwb2ludE5hbWU6IGtleW9mIFNreURhdGFWaWV3Q29sdW1uV2lkdGhzLFxuICApOiBJQ29sdW1uTGltaXRbXSB7XG4gICAgY29uc3QgZ3JpZENvbHVtbkxpbWl0czogSUNvbHVtbkxpbWl0W10gPSBbXTtcblxuICAgIGZvciAoY29uc3QgY29sdW1uIG9mIGRpc3BsYXllZENvbHVtbnMpIHtcbiAgICAgIGNvbnN0IGNvbHVtbldpZHRoID0gY3VycmVudFdpZHRoc1ticmVha3BvaW50TmFtZV1bY29sdW1uXTtcblxuICAgICAgaWYgKGNvbHVtbldpZHRoKSB7XG4gICAgICAgIGdyaWRDb2x1bW5MaW1pdHMucHVzaCh7XG4gICAgICAgICAga2V5OiBjb2x1bW4sXG4gICAgICAgICAgbWluV2lkdGg6IGNvbHVtbldpZHRoLFxuICAgICAgICAgIG1heFdpZHRoOiBjb2x1bW5XaWR0aCxcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBncmlkQ29sdW1uTGltaXRzO1xuICB9XG59XG4iXX0=
@@ -1,9 +1,9 @@
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, Directive, ContentChildren, 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, Optional } from '@angular/core';
5
5
  import * as i1 from '@skyux/core';
6
- import { SkyMutationObserverService, SkyMediaQueryService, SkyMediaBreakpoints, SkyAffixService, SkyDynamicComponentService, SkyOverlayService, SkyScrollableHostService, SKY_STACKING_CONTEXT, SkyAffixAutoFitContext, SkyIdModule, SkyNumericModule, SkyDynamicComponentLocation, SkyViewkeeperModule, SkyLogService } from '@skyux/core';
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';
8
8
  import { SkyDataManagerModule } from '@skyux/data-manager';
9
9
  import * as i1$4 from '@skyux/datetime';
@@ -17,6 +17,7 @@ import { SkyThemeService, SkyThemeModule } from '@skyux/theme';
17
17
  import { AgGridAngular, AgGridModule } from 'ag-grid-angular';
18
18
  import * as i3 from '@skyux/i18n';
19
19
  import { SkyLibResourcesService, getLibStringForLocale, SkyI18nModule, SKY_LIB_RESOURCES_PROVIDERS } from '@skyux/i18n';
20
+ import { toSignal } from '@angular/core/rxjs-interop';
20
21
  import { Subject, BehaviorSubject, ReplaySubject, takeUntil, combineLatest, distinctUntilChanged, of, take, fromEvent, Subscription, fromEventPattern, isObservable } from 'rxjs';
21
22
  import { takeUntil as takeUntil$1, filter, first } from 'rxjs/operators';
22
23
  import { ModuleRegistry, ModuleNames, KeyCode, PopupComponent } from 'ag-grid-community';
@@ -576,76 +577,79 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.8", ngImpor
576
577
  args: [{ transform: booleanAttribute }]
577
578
  }] } });
578
579
 
580
+ function toColumnWidthName(breakpoint) {
581
+ return breakpoint === 'xs' ? 'xs' : 'sm';
582
+ }
579
583
  /**
580
584
  * @internal
581
585
  */
582
586
  class SkyAgGridDataManagerAdapterDirective {
583
587
  #currentAgGrid;
584
- #currentBreakpoint = 3;
585
588
  #currentDataState;
586
589
  #currentSkyAgGridWrapper;
587
590
  #dataStateSub;
588
591
  #viewConfig;
589
- #ngUnsubscribe = new Subject();
592
+ #ngUnsubscribe;
590
593
  #changeDetector;
591
594
  #dataManagerSvc;
592
- #mediaQueryService = inject(SkyMediaQueryService);
595
+ #breakpoint;
593
596
  constructor(changeDetector, dataManagerSvc) {
597
+ this.agGridList = contentChildren(AgGridAngular, {
598
+ descendants: true,
599
+ });
600
+ this.skyAgGridWrapperList = contentChildren(SkyAgGridWrapperComponent, {
601
+ descendants: true,
602
+ });
603
+ this.#ngUnsubscribe = new Subject();
604
+ this.#breakpoint = toSignal(inject(SkyMediaQueryService).breakpointChange);
594
605
  this.#changeDetector = changeDetector;
595
606
  this.#dataManagerSvc = dataManagerSvc;
607
+ effect(() => {
608
+ const list = this.agGridList();
609
+ this.#checkForAgGrid(list);
610
+ });
611
+ effect(() => {
612
+ const list = this.skyAgGridWrapperList();
613
+ this.#checkForSkyAgGridWrapper(list);
614
+ });
615
+ effect(() => {
616
+ const breakpoint = this.#breakpoint();
617
+ if (breakpoint) {
618
+ this.#applyColumnWidths(breakpoint);
619
+ }
620
+ });
596
621
  }
597
622
  ngAfterContentInit() {
598
623
  if (this.viewId) {
599
624
  this.#dataManagerSvc.setViewkeeperClasses(this.viewId, ['.ag-header']);
600
625
  this.#viewConfig = this.#dataManagerSvc.getViewById(this.viewId);
601
- this.#checkForAgGrid();
602
- this.#checkForSkyAgGridWrapper();
603
- this.agGridList?.changes
604
- .pipe(takeUntil$1(this.#ngUnsubscribe))
605
- .subscribe(() => this.#checkForAgGrid());
606
- this.skyAgGridWrapperList?.changes
607
- .pipe(takeUntil$1(this.#ngUnsubscribe))
608
- .subscribe(() => this.#checkForSkyAgGridWrapper());
609
626
  }
610
627
  }
611
- ngOnInit() {
612
- this.#mediaQueryService.subscribe((breakpoint) => {
613
- this.#currentBreakpoint = breakpoint;
614
- this.#applyColumnWidths();
615
- });
616
- }
617
628
  ngOnDestroy() {
618
629
  this.#ngUnsubscribe.next();
619
630
  this.#ngUnsubscribe.complete();
620
631
  }
621
- #checkForAgGrid() {
622
- if (this.agGridList) {
623
- const agGridCount = this.agGridList.length;
624
- /* istanbul ignore else */
625
- if (agGridCount === 0) {
626
- this.#unregisterAgGrid();
627
- }
628
- else if (this.agGridList.first !== this.#currentAgGrid) {
629
- this.#registerAgGrid();
632
+ #checkForAgGrid(agGridList) {
633
+ const agGrid = agGridList[0];
634
+ const agGridCount = agGridList.length;
635
+ if (agGrid) {
636
+ if (agGrid !== this.#currentAgGrid) {
637
+ this.#registerAgGrid(agGrid);
630
638
  }
631
639
  if (agGridCount > 1) {
632
640
  console.warn('More than one ag-grid child component was found. Using the first ag-Grid.');
633
641
  }
634
642
  }
635
643
  }
636
- #checkForSkyAgGridWrapper() {
637
- if (this.skyAgGridWrapperList) {
638
- const skyAgGridWrapperCount = this.skyAgGridWrapperList.length;
639
- /* istanbul ignore else */
640
- if (skyAgGridWrapperCount === 0) {
641
- this.#unregisterSkyAgGridWrapper();
642
- }
643
- else if (this.skyAgGridWrapperList.first !== this.#currentSkyAgGridWrapper) {
644
- this.#registerSkyAgGridWrapper();
645
- }
646
- if (skyAgGridWrapperCount > 1) {
647
- console.warn('More than one ag-grid child component was found. Using the first ag-Grid.');
648
- }
644
+ #checkForSkyAgGridWrapper(wrappers) {
645
+ const count = wrappers.length;
646
+ const wrapper = wrappers[0];
647
+ /* istanbul ignore else */
648
+ if (wrapper !== this.#currentSkyAgGridWrapper) {
649
+ this.#registerSkyAgGridWrapper(wrapper);
650
+ }
651
+ if (count > 1) {
652
+ console.warn('More than one ag-grid child component was found. Using the first ag-Grid.');
649
653
  }
650
654
  }
651
655
  #unregisterAgGrid() {
@@ -658,18 +662,17 @@ class SkyAgGridDataManagerAdapterDirective {
658
662
  #unregisterSkyAgGridWrapper() {
659
663
  this.#currentSkyAgGridWrapper = undefined;
660
664
  }
661
- #registerSkyAgGridWrapper() {
665
+ #registerSkyAgGridWrapper(wrapper) {
662
666
  this.#unregisterSkyAgGridWrapper();
663
- this.#currentSkyAgGridWrapper = this.skyAgGridWrapperList?.first;
667
+ this.#currentSkyAgGridWrapper = wrapper;
664
668
  setTimeout(() => {
665
669
  if (this.#currentSkyAgGridWrapper) {
666
670
  this.#currentSkyAgGridWrapper.viewkeeperClasses = [];
667
671
  }
668
672
  });
669
673
  }
670
- #registerAgGrid() {
674
+ #registerAgGrid(agGrid) {
671
675
  this.#unregisterAgGrid();
672
- const agGrid = this.agGridList?.first;
673
676
  this.#currentAgGrid = agGrid;
674
677
  if (agGrid) {
675
678
  agGrid.gridReady.pipe(takeUntil$1(this.#ngUnsubscribe)).subscribe(() => {
@@ -709,8 +712,9 @@ class SkyAgGridDataManagerAdapterDirective {
709
712
  .subscribe((event) => {
710
713
  const colId = event.column?.getColId();
711
714
  const width = event.column?.getActualWidth();
712
- if (colId && width) {
713
- this.#updateColumnWidth(colId, width);
715
+ const breakpoint = this.#breakpoint();
716
+ if (colId && width && breakpoint) {
717
+ this.#updateColumnWidth(colId, width, breakpoint);
714
718
  }
715
719
  });
716
720
  agGrid.dragStopped
@@ -814,12 +818,11 @@ class SkyAgGridDataManagerAdapterDirective {
814
818
  });
815
819
  }
816
820
  }
817
- #updateColumnWidth(colId, width) {
821
+ #updateColumnWidth(colId, width, breakpoint) {
818
822
  const viewState = this.viewId && this.#currentDataState?.getViewStateById(this.viewId);
819
823
  if (viewState && this.viewId && this.#currentDataState) {
820
824
  const currentWidths = viewState?.columnWidths;
821
- const breakpointName = this.#currentBreakpoint === SkyMediaBreakpoints.xs ? 'xs' : 'sm';
822
- currentWidths[breakpointName][colId] = width;
825
+ currentWidths[toColumnWidthName(breakpoint)][colId] = width;
823
826
  viewState.columnWidths = currentWidths;
824
827
  this.#dataManagerSvc.updateDataState(this.#currentDataState.addOrUpdateView(this.viewId, viewState), this.viewId);
825
828
  }
@@ -836,15 +839,14 @@ class SkyAgGridDataManagerAdapterDirective {
836
839
  this.#dataManagerSvc.updateDataState(this.#currentDataState.addOrUpdateView(this.viewId, viewState), this.viewId);
837
840
  }
838
841
  }
839
- #applyColumnWidths() {
840
- if (!this.agGridList?.first || this.agGridList.first.api.isDestroyed()) {
841
- return;
842
- }
843
- const viewState = this.viewId && this.#currentDataState?.getViewStateById(this.viewId);
844
- if (viewState && viewState.columnWidths && viewState.displayedColumnIds) {
845
- const breakpointName = this.#currentBreakpoint === SkyMediaBreakpoints.xs ? 'xs' : 'sm';
846
- const columnLimits = this.#getGridColumnLimits(viewState.displayedColumnIds, viewState.columnWidths, breakpointName);
847
- this.agGridList.first.api.sizeColumnsToFit({ columnLimits });
842
+ #applyColumnWidths(breakpoint) {
843
+ breakpoint ??= this.#breakpoint();
844
+ if (breakpoint) {
845
+ const viewState = this.viewId && this.#currentDataState?.getViewStateById(this.viewId);
846
+ if (viewState && viewState.columnWidths && viewState.displayedColumnIds) {
847
+ const columnLimits = this.#getGridColumnLimits(viewState.displayedColumnIds, viewState.columnWidths, toColumnWidthName(breakpoint));
848
+ this.#currentAgGrid?.api.sizeColumnsToFit({ columnLimits });
849
+ }
848
850
  }
849
851
  }
850
852
  #getGridColumnLimits(displayedColumns, currentWidths, breakpointName) {
@@ -862,7 +864,7 @@ class SkyAgGridDataManagerAdapterDirective {
862
864
  return gridColumnLimits;
863
865
  }
864
866
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.8", ngImport: i0, type: SkyAgGridDataManagerAdapterDirective, deps: [{ token: i0.ChangeDetectorRef }, { token: i1$2.SkyDataManagerService }], target: i0.ɵɵFactoryTarget.Directive }); }
865
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.8", type: SkyAgGridDataManagerAdapterDirective, selector: "[skyAgGridDataManagerAdapter]", inputs: { viewId: "viewId" }, queries: [{ propertyName: "agGridList", predicate: AgGridAngular, descendants: true }, { propertyName: "skyAgGridWrapperList", predicate: SkyAgGridWrapperComponent, descendants: true }], ngImport: i0 }); }
867
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.2.0", version: "18.2.8", type: SkyAgGridDataManagerAdapterDirective, selector: "[skyAgGridDataManagerAdapter]", inputs: { viewId: "viewId" }, queries: [{ propertyName: "agGridList", predicate: AgGridAngular, descendants: true, isSignal: true }, { propertyName: "skyAgGridWrapperList", predicate: SkyAgGridWrapperComponent, descendants: true, isSignal: true }], ngImport: i0 }); }
866
868
  }
867
869
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.8", ngImport: i0, type: SkyAgGridDataManagerAdapterDirective, decorators: [{
868
870
  type: Directive,
@@ -871,12 +873,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.8", ngImpor
871
873
  }]
872
874
  }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i1$2.SkyDataManagerService }], propDecorators: { viewId: [{
873
875
  type: Input
874
- }], agGridList: [{
875
- type: ContentChildren,
876
- args: [AgGridAngular, { descendants: true }]
877
- }], skyAgGridWrapperList: [{
878
- type: ContentChildren,
879
- args: [SkyAgGridWrapperComponent, { descendants: true }]
880
876
  }] } });
881
877
 
882
878
  /**