@skyux/ag-grid 4.12.1 → 4.12.2

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,7 +1,7 @@
1
1
  import { __decorate } from "tslib";
2
2
  import { AfterContentInit, ChangeDetectorRef, ContentChildren, Directive, Input, OnDestroy, QueryList } from '@angular/core';
3
3
  import { Subject } from 'rxjs';
4
- import { takeUntil } from 'rxjs/operators';
4
+ import { filter, takeUntil } from 'rxjs/operators';
5
5
  import { AgGridAngular } from 'ag-grid-angular';
6
6
  import { SkyDataManagerService, SkyDataManagerSortOption, SkyDataManagerState, SkyDataViewConfig } from '@skyux/data-manager';
7
7
  import { SkyAgGridWrapperComponent } from './ag-grid-wrapper.component';
@@ -91,13 +91,28 @@ let SkyAgGridDataManagerAdapterDirective = class SkyAgGridDataManagerAdapterDire
91
91
  agGrid.api.sizeColumnsToFit();
92
92
  });
93
93
  agGrid.columnMoved
94
+ .pipe(takeUntil(this.ngUnsubscribe), filter((event) => ![
95
+ 'gridInitializing',
96
+ 'uiColumnResized',
97
+ 'uiColumnDragged',
98
+ 'api'
99
+ ].includes(event.source)))
100
+ .subscribe((value) => {
101
+ this.updateColumnsInCurrentDataState(value.columnApi);
102
+ });
103
+ let currentColumns;
104
+ agGrid.dragStarted
94
105
  .pipe(takeUntil(this.ngUnsubscribe))
95
- .subscribe((event) => {
96
- let columnOrder = agGrid.columnApi.getAllDisplayedVirtualColumns().map(col => col.getColDef().colId);
97
- if (event.source !== 'api') {
98
- const viewState = this.currentDataState.getViewStateById(this.viewConfig.id);
99
- viewState.displayedColumnIds = columnOrder;
100
- this.dataManagerSvc.updateDataState(this.currentDataState.addOrUpdateView(this.viewConfig.id, viewState), this.viewConfig.id);
106
+ .subscribe((value) => {
107
+ currentColumns = this.getColumnOrder(value.columnApi);
108
+ });
109
+ agGrid.dragStopped
110
+ .pipe(takeUntil(this.ngUnsubscribe))
111
+ .subscribe((value) => {
112
+ const newColumns = this.getColumnOrder(value.columnApi);
113
+ const hasChanged = currentColumns.findIndex((colId, i) => colId !== newColumns[i]);
114
+ if (hasChanged > -1) {
115
+ this.updateColumnsInCurrentDataState(value.columnApi);
101
116
  }
102
117
  });
103
118
  agGrid.rowSelected
@@ -141,6 +156,17 @@ let SkyAgGridDataManagerAdapterDirective = class SkyAgGridDataManagerAdapterDire
141
156
  this.dataManagerSvc.updateDataState(this.currentDataState, this.viewConfig.id);
142
157
  });
143
158
  }
159
+ updateColumnsInCurrentDataState(columnApi) {
160
+ const columnOrder = this.getColumnOrder(columnApi);
161
+ const viewState = this.currentDataState.getViewStateById(this.viewConfig.id);
162
+ viewState.displayedColumnIds = columnOrder;
163
+ this.dataManagerSvc.updateDataState(this.currentDataState.addOrUpdateView(this.viewConfig.id, viewState), this.viewConfig.id);
164
+ }
165
+ getColumnOrder(columnApi) {
166
+ return columnApi
167
+ .getAllDisplayedVirtualColumns()
168
+ .map((col) => col.getColDef().colId);
169
+ }
144
170
  displayColumns(dataState) {
145
171
  const agGrid = this.currentAgGrid;
146
172
  const viewState = dataState.getViewStateById(this.viewConfig.id);
@@ -185,4 +211,4 @@ SkyAgGridDataManagerAdapterDirective = __decorate([
185
211
  })
186
212
  ], SkyAgGridDataManagerAdapterDirective);
187
213
  export { SkyAgGridDataManagerAdapterDirective };
188
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWctZ3JpZC1kYXRhLW1hbmFnZXItYWRhcHRlci5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9Ac2t5dXgvYWctZ3JpZC8iLCJzb3VyY2VzIjpbIm1vZHVsZXMvYWctZ3JpZC9hZy1ncmlkLWRhdGEtbWFuYWdlci1hZGFwdGVyLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUNMLGdCQUFnQixFQUNoQixpQkFBaUIsRUFDakIsZUFBZSxFQUNmLFNBQVMsRUFDVCxLQUFLLEVBQ0wsU0FBUyxFQUNULFNBQVMsRUFDVixNQUFNLGVBQWUsQ0FBQztBQUV2QixPQUFPLEVBQ0wsT0FBTyxFQUVSLE1BQU0sTUFBTSxDQUFDO0FBRWQsT0FBTyxFQUNMLFNBQVMsRUFDVixNQUFNLGdCQUFnQixDQUFDO0FBRXhCLE9BQU8sRUFDTCxhQUFhLEVBQ2QsTUFBTSxpQkFBaUIsQ0FBQztBQU96QixPQUFPLEVBQ0wscUJBQXFCLEVBQ3JCLHdCQUF3QixFQUN4QixtQkFBbUIsRUFDbkIsaUJBQWlCLEVBQ2xCLE1BQU0scUJBQXFCLENBQUM7QUFFN0IsT0FBTyxFQUNMLHlCQUF5QixFQUMxQixNQUFNLDZCQUE2QixDQUFDO0FBS3JDLElBQWEsb0NBQW9DLEdBQWpELE1BQWEsb0NBQW9DO0lBa0IvQyxZQUNVLGNBQWlDLEVBQ2pDLGNBQXFDO1FBRHJDLG1CQUFjLEdBQWQsY0FBYyxDQUFtQjtRQUNqQyxtQkFBYyxHQUFkLGNBQWMsQ0FBdUI7UUFKdkMsa0JBQWEsR0FBRyxJQUFJLE9BQU8sRUFBRSxDQUFDO0lBSWEsQ0FBQztJQUU3QyxrQkFBa0I7UUFDdkIsSUFBSSxDQUFDLGNBQWMsQ0FBQyxvQkFBb0IsQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQztRQUV0RSxJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMs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LENBQUMsS0FBSyxDQUFDO1FBQ3JDLE1BQU0sQ0FBQyxHQUFHLENBQUMsV0FBVyxFQUFFLENBQUM7SUFDM0IsQ0FBQztDQUNGLENBQUE7O1lBdk0yQixpQkFBaUI7WUFDakIscUJBQXFCOztBQWpCL0M7SUFEQyxLQUFLLEVBQUU7b0VBQ2M7QUFHdEI7SUFEQyxlQUFlLENBQUMsYUFBYSxFQUFFLEVBQUUsV0FBVyxFQUFFLElBQUksRUFBRSxDQUFDO3dFQUNWO0FBRzVDO0lBREMsZUFBZSxDQUFDLHlCQUF5QixFQUFFLEVBQUUsV0FBVyxFQUFFLElBQUksRUFBRSxDQUFDO2tGQUNBO0FBVHZELG9DQUFvQztJQUhoRCxTQUFTLENBQUM7UUFDVCxRQUFRLEVBQUUsK0JBQStCO0tBQzFDLENBQUM7R0FDVyxvQ0FBb0MsQ0EwTmhEO1NBMU5ZLG9DQUFvQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEFmdGVyQ29udGVudEluaXQsXG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBDb250ZW50Q2hpbGRyZW4sXG4gIERpcmVjdGl2ZSxcbiAgSW5wdXQsXG4gIE9uRGVzdHJveSxcbiAgUXVlcnlMaXN0XG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQge1xuICBTdWJqZWN0LFxuICBTdWJzY3JpcHRpb25cbn0gZnJvbSAncnhqcyc7XG5cbmltcG9ydCB7XG4gIHRha2VVbnRpbFxufSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbmltcG9ydCB7XG4gIEFnR3JpZEFuZ3VsYXJcbn0gZnJvbSAnYWctZ3JpZC1hbmd1bGFyJztcblxuaW1wb3J0IHtcbiAgQ29sdW1uTW92ZWRFdmVudCxcbiAgUm93U2VsZWN0ZWRFdmVudFxufSBmcm9tICdhZy1ncmlkLWNvbW11bml0eSc7XG5cbmltcG9ydCB7XG4gIFNreURhdGFNYW5hZ2VyU2VydmljZSxcbiAgU2t5RGF0YU1hbmFnZXJTb3J0T3B0aW9uLFxuICBTa3lEYXRhTWFuYWdlclN0YXRlLFxuICBTa3lEYXRhVmlld0NvbmZpZ1xufSBmcm9tICdAc2t5dXgvZGF0YS1tYW5hZ2VyJztcblxuaW1wb3J0IHtcbiAgU2t5QWdHcmlkV3JhcHBlckNvbXBvbmVudFxufSBmcm9tICcuL2FnLWdyaWQtd3JhcHBlci5jb21wb25lbnQnO1xuXG5ARGlyZWN0aXZlKHtcbiAgc2VsZWN0b3I6ICdbc2t5QWdHcmlkRGF0YU1hbmFnZXJBZGFwdGVyXSdcbn0pXG5leHBvcnQgY2xhc3MgU2t5QWdHcmlkRGF0YU1hbmFnZXJBZGFwdGVyRGlyZWN0aXZlIGltcGxlbWVudHMgQWZ0ZXJDb250ZW50SW5pdCwgT25EZXN0cm95IHtcblxuICBASW5wdXQoKVxuICBwdWJsaWMgdmlld0lkOiBzdHJpbmc7XG5cbiAgQENvbnRlbnRDaGlsZHJlbihBZ0dyaWRBbmd1bGFyLCB7IGRlc2NlbmRhbnRzOiB0cnVlIH0pXG4gIHB1YmxpYyBhZ0dyaWRMaXN0OiBRdWVyeUxpc3Q8QWdHcmlkQW5ndWxhcj47XG5cbiAgQENvbnRlbnRDaGlsZHJlbihTa3lBZ0dyaWRXcmFwcGVyQ29tcG9uZW50LCB7IGRlc2NlbmRhbnRzOiB0cnVlIH0pXG4gIHB1YmxpYyBza3lBZ0dyaWRXcmFwcGVyTGlzdDogUXVlcnlMaXN0PFNreUFnR3JpZFdyYXBwZXJDb21wb25lbnQ+O1xuXG4gIHByaXZhdGUgY3VycmVudEFnR3JpZDogQWdHcmlkQW5ndWxhcjtcbiAgcHJpdmF0ZSBjdXJyZW50RGF0YVN0YXRlOiBTa3lEYXRhTWFuYWdlclN0YXRlO1xuICBwcml2YXRlIGN1cnJlbnRTa3lBZ0dyaWRXcmFwcGVyOiBTa3lBZ0dyaWRXcmFwcGVyQ29tcG9uZW50O1xuICBwcml2YXRlIGRhdGFTdGF0ZVN1YjogU3Vic2NyaXB0aW9uO1xuICBwcml2YXRlIHZpZXdDb25maWc6IFNreURhdGFWaWV3Q29uZmlnO1xuICBwcml2YXRlIG5nVW5zdWJzY3JpYmUgPSBuZXcgU3ViamVjdCgpO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgY2hhbmdlRGV0ZWN0b3I6IENoYW5nZURldGVjdG9yUmVmLFxuICAgIHByaXZhdGUgZGF0YU1hbmFnZXJTdmM6IFNreURhdGFNYW5hZ2VyU2VydmljZSkgeyB9XG5cbiAgcHVibGljIG5nQWZ0ZXJDb250ZW50SW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLmRhdGFNYW5hZ2VyU3ZjLnNldFZpZXdrZWVwZXJDbGFzc2VzKHRoaXMudmlld0lkLCBbJy5hZy1oZWFkZXInXSk7XG5cbiAgICB0aGlzLnZpZXdDb25maWcgPSB0aGlzLmRhdGFNYW5hZ2VyU3ZjLmdldFZpZXdCeUlkKHRoaXMudmlld0lkKTtcbiAgICB0aGlzLmNoZWNrRm9yQWdHcmlkKCk7XG4gICAgdGhpcy5jaGVja0ZvclNreUFnR3JpZFdyYXBwZXIoKTtcblxuICAgIHRoaXMuYWdHcmlkTGlzdC5jaGFuZ2VzXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5uZ1Vuc3Vic2NyaWJlKSlcbiAgICAgIC5zdWJzY3JpYmUoKCkgPT4gdGhpcy5jaGVja0ZvckFnR3JpZCgpKTtcblxuICAgIHRoaXMuc2t5QWdHcmlkV3JhcHBlckxpc3QuY2hhbmdlc1xuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMubmdVbnN1YnNjcmliZSkpXG4gICAgICAuc3Vic2NyaWJlKCgpID0+IHRoaXMuY2hlY2tGb3JTa3lBZ0dyaWRXcmFwcGVyKCkpO1xuICB9XG5cbiAgcHVibGljIG5nT25EZXN0cm95KCkge1xuICAgIHRoaXMubmdVbnN1YnNjcmliZS5uZXh0KCk7XG4gICAgdGhpcy5uZ1Vuc3Vic2NyaWJlLmNvbXBsZXRlKCk7XG4gIH1cblxuICBwcml2YXRlIGNoZWNrRm9yQWdHcmlkKCk6IHZvaWQge1xuICAgIGNvbnN0IGFnR3JpZENvdW50ID0gdGhpcy5hZ0dyaWRMaXN0Lmxlbmd0aDtcblxuICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBlbHNlICovXG4gICAgaWYgKGFnR3JpZENvdW50ID09PSAwKSB7XG4gICAgICB0aGlzLnVucmVnaXN0ZXJBZ0dyaWQoKTtcbiAgICB9IGVsc2UgaWYgKHRoaXMuYWdHcmlkTGlzdC5maXJzdCAhPT0gdGhpcy5jdXJyZW50QWdHcmlkKSB7XG4gICAgICB0aGlzLnJlZ2lzdGVyQWdHcmlkKCk7XG4gICAgfVxuXG4gICAgaWYgKGFnR3JpZENvdW50ID4gMSkge1xuICAgICAgY29uc29sZS53YXJuKFxuICAgICAgICAnTW9yZSB0aGFuIG9uZSBhZy1ncmlkIGNoaWxkIGNvbXBvbmVudCB3YXMgZm91bmQuIFVzaW5nIHRoZSBmaXJzdCBhZy1HcmlkLidcbiAgICAgICk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBjaGVja0ZvclNreUFnR3JpZFdyYXBwZXIoKTogdm9pZCB7XG4gICAgY29uc3Qgc2t5QWdHcmlkV3JhcHBlckNvdW50ID0gdGhpcy5za3lBZ0dyaWRXcmFwcGVyTGlzdC5sZW5ndGg7XG5cbiAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgZWxzZSAqL1xuICAgIGlmIChza3lBZ0dyaWRXcmFwcGVyQ291bnQgPT09IDApIHtcbiAgICAgIHRoaXMudW5yZWdpc3RlclNreUFnR3JpZFdyYXBwZXIoKTtcbiAgICB9IGVsc2UgaWYgKHRoaXMuc2t5QWdHcmlkV3JhcHBlckxpc3QuZmlyc3QgIT09IHRoaXMuY3VycmVudFNreUFnR3JpZFdyYXBwZXIpIHtcbiAgICAgIHRoaXMucmVnaXN0ZXJTa3lBZ0dyaWRXcmFwcGVyKCk7XG4gICAgfVxuXG4gICAgaWYgKHNreUFnR3JpZFdyYXBwZXJDb3VudCA+IDEpIHtcbiAgICAgIGNvbnNvbGUud2FybihcbiAgICAgICAgJ01vcmUgdGhhbiBvbmUgYWctZ3JpZCBjaGlsZCBjb21wb25lbnQgd2FzIGZvdW5kLiBVc2luZyB0aGUgZmlyc3QgYWctR3JpZC4nXG4gICAgICApO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgdW5yZWdpc3RlckFnR3JpZCgpOiB2b2lkIHtcbiAgICB0aGlzLmN1cnJlbnRBZ0dyaWQgPSB1bmRlZmluZWQ7XG5cbiAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgaWYgKi9cbiAgICBpZiAodGhpcy5kYXRhU3RhdGVTdWIpIHtcbiAgICAgIHRoaXMuZGF0YVN0YXRlU3ViLnVuc3Vic2NyaWJlKCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSB1bnJlZ2lzdGVyU2t5QWdHcmlkV3JhcHBlcigpOiB2b2lkIHtcbiAgICB0aGlzLmN1cnJlbnRTa3lBZ0dyaWRXcmFwcGVyID0gdW5kZWZpbmVkO1xuICB9XG5cbiAgcHJpdmF0ZSByZWdpc3RlclNreUFnR3JpZFdyYXBwZXIoKTogdm9pZCB7XG4gICAgdGhpcy51bnJlZ2lzdGVyU2t5QWdHcmlkV3JhcHBlcigpO1xuXG4gICAgdGhpcy5jdXJyZW50U2t5QWdHcmlkV3JhcHBlciA9IHRoaXMuc2t5QWdHcmlkV3JhcHBlckxpc3QuZmlyc3Q7XG5cbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIGlmICh0aGlzLmN1cnJlbnRTa3lBZ0dyaWRXcmFwcGVyKSB7XG4gICAgICAgIHRoaXMuY3VycmVudFNreUFnR3JpZFdyYXBwZXIudmlld2tlZXBlckNsYXNzZXMgPSBbXTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgcmVnaXN0ZXJBZ0dyaWQoKTogdm9pZCB7XG4gICAgdGhpcy51bnJlZ2lzdGVyQWdHcmlkKCk7XG5cbiAgICBjb25zdCBhZ0dyaWQgPSB0aGlzLmFnR3JpZExpc3QuZmlyc3Q7XG5cbiAgICB0aGlzLmN1cnJlbnRBZ0dyaWQgPSBhZ0dyaWQ7XG5cbiAgICBhZ0dyaWQuZ3JpZFJlYWR5XG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5uZ1Vuc3Vic2NyaWJlKSlcbiAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICB0aGlzLnZpZXdDb25maWcub25TZWxlY3RBbGxDbGljayA9IHRoaXMuc2VsZWN0QWxsLmJpbmQodGhpcyk7XG4gICAgICAgIHRoaXMudmlld0NvbmZpZy5vbkNsZWFyQWxsQ2xpY2sgPSB0aGlzLmNsZWFyQWxsLmJpbmQodGhpcyk7XG5cbiAgICAgICAgdGhpcy5kYXRhTWFuYWdlclN2Yy51cGRhdGVWaWV3Q29uZmlnKHRoaXMudmlld0NvbmZpZyk7XG5cbiAgICAgICAgdGhpcy5kYXRhU3RhdGVTdWIgPSB0aGlzLmRhdGFNYW5hZ2VyU3ZjLmdldERhdGFTdGF0ZVVwZGF0ZXModGhpcy52aWV3Q29uZmlnLmlkKVxuICAgICAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLm5nVW5zdWJzY3JpYmUpKVxuICAgICAgICAgIC5zdWJzY3JpYmUoKGRhdGFTdGF0ZTogU2t5RGF0YU1hbmFnZXJTdGF0ZSkgPT4ge1xuICAgICAgICAgICAgdGhpcy5jdXJyZW50RGF0YVN0YXRlID0gZGF0YVN0YXRlO1xuICAgICAgICAgICAgdGhpcy5kaXNwbGF5Q29sdW1ucyhkYXRhU3RhdGUpO1xuICAgICAgICAgIH0pO1xuXG4gICAgICAgIGFnR3JpZC5hcGkuc2l6ZUNvbHVtbnNUb0ZpdCgpO1xuICAgICAgfSk7XG5cbiAgICBhZ0dyaWQuY29sdW1uTW92ZWRcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLm5nVW5zdWJzY3JpYmUpKVxuICAgICAgLnN1YnNjcmliZSgoZXZlbnQ6IENvbHVtbk1vdmVkRXZlbnQpID0+IHtcbiAgICAgICAgbGV0IGNvbHVtbk9yZGVyID0gYWdHcmlkLmNvbHVtbkFwaS5nZXRBbGxEaXNwbGF5ZWRWaXJ0dWFsQ29sdW1ucygpLm1hcChcbiAgICAgICAgICBjb2wgPT4gY29sLmdldENvbERlZigpLmNvbElkXG4gICAgICAgICk7XG5cbiAgICAgICAgaWYgKGV2ZW50LnNvdXJjZSAhPT0gJ2FwaScpIHtcbiAgICAgICAgICBjb25zdCB2aWV3U3RhdGUgPSB0aGlzLmN1cnJlbnREYXRhU3RhdGUuZ2V0Vmlld1N0YXRlQnlJZCh0aGlzLnZpZXdDb25maWcuaWQpO1xuICAgICAgICAgIHZpZXdTdGF0ZS5kaXNwbGF5ZWRDb2x1bW5JZHMgPSBjb2x1bW5PcmRlcjtcblxuICAgICAgICAgIHRoaXMuZGF0YU1hbmFnZXJTdmMudXBkYXRlRGF0YVN0YXRlKFxuICAgICAgICAgICAgdGhpcy5jdXJyZW50RGF0YVN0YXRlLmFkZE9yVXBkYXRlVmlldyh0aGlzLnZpZXdDb25maWcuaWQsIHZpZXdTdGF0ZSksXG4gICAgICAgICAgICB0aGlzLnZpZXdDb25maWcuaWRcbiAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICB9KTtcblxuICAgIGFnR3JpZC5yb3dTZWxlY3RlZFxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMubmdVbnN1YnNjcmliZSkpXG4gICAgICAuc3Vic2NyaWJlKChldmVudDogUm93U2VsZWN0ZWRFdmVudCkgPT4ge1xuICAgICAgICBjb25zdCByb3cgPSBldmVudC5ub2RlO1xuICAgICAgICBsZXQgc2VsZWN0ZWRJZHMgPSB0aGlzLmN1cnJlbnREYXRhU3RhdGUuc2VsZWN0ZWRJZHMgfHwgW107XG4gICAgICAgIGNvbnN0IHJvd0luZGV4ID0gc2VsZWN0ZWRJZHMuaW5kZXhPZihyb3cuZGF0YS5pZCk7XG5cbiAgICAgICAgaWYgKHJvdy5pc1NlbGVjdGVkKCkgJiYgcm93SW5kZXggPT09IC0xKSB7XG4gICAgICAgICAgc2VsZWN0ZWRJZHMucHVzaChyb3cuZGF0YS5pZCk7XG4gICAgICAgIH0gZWxzZSBpZiAoIXJvdy5pc1NlbGVjdGVkKCkgJiYgcm93SW5kZXggIT09IC0xKSB7XG4gICAgICAgICAgc2VsZWN0ZWRJZHMuc3BsaWNlKHJvd0luZGV4LCAxKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuY3VycmVudERhdGFTdGF0ZS5zZWxlY3RlZElkcyA9IHNlbGVjdGVkSWRzO1xuICAgICAgICB0aGlzLmRhdGFNYW5hZ2VyU3ZjLnVwZGF0ZURhdGFTdGF0ZSh0aGlzLmN1cnJlbnREYXRhU3RhdGUsIHRoaXMudmlld0NvbmZpZy5pZCk7XG4gICAgICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3IubWFya0ZvckNoZWNrKCk7XG4gICAgICB9KTtcblxuICAgIGFnR3JpZC5zb3J0Q2hhbmdlZFxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMubmdVbnN1YnNjcmliZSkpXG4gICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgY29uc3QgZ3JpZFNvcnRNb2RlbCA9IGFnR3JpZC5hcGkuZ2V0U29ydE1vZGVsKCk7XG4gICAgICAgIGxldCBzb3J0T3B0aW9uOiBTa3lEYXRhTWFuYWdlclNvcnRPcHRpb247XG5cbiAgICAgICAgLyogaXN0YW5idWwgaWdub3JlIGVsc2UgKi9cbiAgICAgICAgaWYgKGdyaWRTb3J0TW9kZWwubGVuZ3RoKSB7XG4gICAgICAgICAgY29uc3QgYWN0aXZlU29ydE1vZGVsID0gZ3JpZFNvcnRNb2RlbFswXTtcbiAgICAgICAgICBjb25zdCBhY3RpdmVTb3J0Q29sdW1uID0gYWdHcmlkLmNvbHVtbkFwaS5nZXRDb2x1bW4oYWN0aXZlU29ydE1vZGVsLmNvbElkKTtcbiAgICAgICAgICBjb25zdCBkYXRhTWFuYWdlckNvbmZpZyA9IHRoaXMuZGF0YU1hbmFnZXJTdmMuZ2V0Q3VycmVudERhdGFNYW5hZ2VyQ29uZmlnKCk7XG5cbiAgICAgICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgZWxzZSAqL1xuICAgICAgICAgIGlmIChkYXRhTWFuYWdlckNvbmZpZy5zb3J0T3B0aW9ucykge1xuICAgICAgICAgICAgc29ydE9wdGlvbiA9IGRhdGFNYW5hZ2VyQ29uZmlnLnNvcnRPcHRpb25zLmZpbmQoKG9wdGlvbjogU2t5RGF0YU1hbmFnZXJTb3J0T3B0aW9uKSA9PiB7XG4gICAgICAgICAgICAgIHJldHVybiBvcHRpb24ucHJvcGVydHlOYW1lID09PSBhY3RpdmVTb3J0Q29sdW1uLmdldENvbERlZigpLmZpZWxkICYmXG4gICAgICAgICAgICAgICAgb3B0aW9uLmRlc2NlbmRpbmcgPT09IChhY3RpdmVTb3J0TW9kZWwuc29ydCA9PT0gJ2Rlc2MnKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBzb3J0T3B0aW9uID0gdW5kZWZpbmVkO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICB0aGlzLmN1cnJlbnREYXRhU3RhdGUuYWN0aXZlU29ydE9wdGlvbiA9IHNvcnRPcHRpb247XG4gICAgICAgIHRoaXMuZGF0YU1hbmFnZXJTdmMudXBkYXRlRGF0YVN0YXRlKHRoaXMuY3VycmVudERhdGFTdGF0ZSwgdGhpcy52aWV3Q29uZmlnLmlkKTtcbiAgICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBkaXNwbGF5Q29sdW1ucyhkYXRhU3RhdGU6IFNreURhdGFNYW5hZ2VyU3RhdGUpOiB2b2lkIHtcbiAgICBjb25zdCBhZ0dyaWQgPSB0aGlzLmN1cnJlbnRBZ0dyaWQ7XG4gICAgY29uc3Qgdmlld1N0YXRlID0gZGF0YVN0YXRlLmdldFZpZXdTdGF0ZUJ5SWQodGhpcy52aWV3Q29uZmlnLmlkKTtcbiAgICBsZXQgZGlzcGxheWVkQ29sdW1uSWRzOiBzdHJpbmdbXSA9IFtdO1xuICAgIC8qaXN0YW5idWwgaWdub3JlIGVsc2UqL1xuICAgIGlmICh2aWV3U3RhdGUuZGlzcGxheWVkQ29sdW1uSWRzKSB7XG4gICAgICBkaXNwbGF5ZWRDb2x1bW5JZHMgPSB2aWV3U3RhdGUuZGlzcGxheWVkQ29sdW1uSWRzO1xuICAgIH1cbiAgICBjb25zdCBjb2x1bW5zID0gYWdHcmlkLmNvbHVtbkFwaS5nZXRBbGxDb2x1bW5zKCk7XG5cbiAgICBmb3IgKGNvbnN0IGNvbHVtbiBvZiBjb2x1bW5zKSB7XG4gICAgICBjb25zdCBjb2xJZCA9IGNvbHVtbi5nZXRDb2xJZCgpO1xuICAgICAgY29uc3QgY29sSW5kZXggPSBkaXNwbGF5ZWRDb2x1bW5JZHMuaW5kZXhPZihjb2xJZCk7XG5cbiAgICAgIGFnR3JpZC5jb2x1bW5BcGkuc2V0Q29sdW1uVmlzaWJsZShjb2xJZCwgY29sSW5kZXggIT09IC0xKTtcbiAgICAgIGFnR3JpZC5jb2x1bW5BcGkubW92ZUNvbHVtbihjb2xJZCwgY29sSW5kZXgpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgc2VsZWN0QWxsKCk6IHZvaWQge1xuICAgIGNvbnN0IGFnR3JpZCA9IHRoaXMuYWdHcmlkTGlzdC5maXJzdDtcbiAgICBhZ0dyaWQuYXBpLnNlbGVjdEFsbCgpO1xuICB9XG5cbiAgcHJpdmF0ZSBjbGVhckFsbCgpOiB2b2lkIHtcbiAgICBjb25zdCBhZ0dyaWQgPSB0aGlzLmFnR3JpZExpc3QuZmlyc3Q7XG4gICAgYWdHcmlkLmFwaS5kZXNlbGVjdEFsbCgpO1xuICB9XG59XG4iXX0=
214
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWctZ3JpZC1kYXRhLW1hbmFnZXItYWRhcHRlci5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9Ac2t5dXgvYWctZ3JpZC8iLCJzb3VyY2VzIjpbIm1vZHVsZXMvYWctZ3JpZC9hZy1ncmlkLWRhdGEtbWFuYWdlci1hZGFwdGVyLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUNMLGdCQUFnQixFQUNoQixpQkFBaUIsRUFDakIsZUFBZSxFQUNmLFNBQVMsRUFDVCxLQUFLLEVBQ0wsU0FBUyxFQUNULFNBQVMsRUFDVixNQUFNLGVBQWUsQ0FBQztBQUV2QixPQUFPLEVBQ0wsT0FBTyxFQUVSLE1BQU0sTUFBTSxDQUFDO0FBRWQsT0FBTyxFQUNMLE1BQU0sRUFDTixTQUFTLEVBQ1YsTUFBTSxnQkFBZ0IsQ0FBQztBQUV4QixPQUFPLEVBQ0wsYUFBYSxFQUNkLE1BQU0saUJBQWlCLENBQUM7QUFVekIsT0FBTyxFQUNMLHFCQUFxQixFQUNyQix3QkFBd0IsRUFDeEIsbUJBQW1CLEVBQ25CLGlCQUFpQixFQUNsQixNQUFNLHFCQUFxQixDQUFDO0FBRTdCLE9BQU8sRUFDTCx5QkFBeUIsRUFDMUIsTUFBTSw2QkFBNkIsQ0FBQztBQUtyQyxJQUFhLG9DQUFvQyxHQUFqRCxNQUFhLG9DQUFvQztJQWtCL0MsWUFDVSxjQUFpQyxFQUNqQyxjQUFxQztRQURyQyxtQkFBYyxHQUFkLGNBQWMsQ0FBbUI7UUFDakMsbUJBQWMsR0FBZCxjQUFjLENBQXVCO1FBSnZDLGtCQUFhLEdBQUcsSUFBSSxPQUFPLEVBQUUsQ0FBQztJQUlhLENBQUM7SUFFN0Msa0JBQWtCO1FBQ3ZCLElBQUksQ0FBQyxjQUFjLENBQUMsb0JBQW9CLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUM7UUFFdEUsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMs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ckMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxXQUFXLEVBQUUsQ0FBQztJQUMzQixDQUFDO0NBQ0YsQ0FBQTs7WUEzTzJCLGlCQUFpQjtZQUNqQixxQkFBcUI7O0FBakIvQztJQURDLEtBQUssRUFBRTtvRUFDYztBQUd0QjtJQURDLGVBQWUsQ0FBQyxhQUFhLEVBQUUsRUFBRSxXQUFXLEVBQUUsSUFBSSxFQUFFLENBQUM7d0VBQ1Y7QUFHNUM7SUFEQyxlQUFlLENBQUMseUJBQXlCLEVBQUUsRUFBRSxXQUFXLEVBQUUsSUFBSSxFQUFFLENBQUM7a0ZBQ0E7QUFUdkQsb0NBQW9DO0lBSGhELFNBQVMsQ0FBQztRQUNULFFBQVEsRUFBRSwrQkFBK0I7S0FDMUMsQ0FBQztHQUNXLG9DQUFvQyxDQThQaEQ7U0E5UFksb0NBQW9DIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQWZ0ZXJDb250ZW50SW5pdCxcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIENvbnRlbnRDaGlsZHJlbixcbiAgRGlyZWN0aXZlLFxuICBJbnB1dCxcbiAgT25EZXN0cm95LFxuICBRdWVyeUxpc3Rcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7XG4gIFN1YmplY3QsXG4gIFN1YnNjcmlwdGlvblxufSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHtcbiAgZmlsdGVyLFxuICB0YWtlVW50aWxcbn0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5pbXBvcnQge1xuICBBZ0dyaWRBbmd1bGFyXG59IGZyb20gJ2FnLWdyaWQtYW5ndWxhcic7XG5cbmltcG9ydCB7XG4gIENvbHVtbkFwaSxcbiAgQ29sdW1uTW92ZWRFdmVudCxcbiAgRHJhZ1N0YXJ0ZWRFdmVudCxcbiAgRHJhZ1N0b3BwZWRFdmVudCxcbiAgUm93U2VsZWN0ZWRFdmVudFxufSBmcm9tICdhZy1ncmlkLWNvbW11bml0eSc7XG5cbmltcG9ydCB7XG4gIFNreURhdGFNYW5hZ2VyU2VydmljZSxcbiAgU2t5RGF0YU1hbmFnZXJTb3J0T3B0aW9uLFxuICBTa3lEYXRhTWFuYWdlclN0YXRlLFxuICBTa3lEYXRhVmlld0NvbmZpZ1xufSBmcm9tICdAc2t5dXgvZGF0YS1tYW5hZ2VyJztcblxuaW1wb3J0IHtcbiAgU2t5QWdHcmlkV3JhcHBlckNvbXBvbmVudFxufSBmcm9tICcuL2FnLWdyaWQtd3JhcHBlci5jb21wb25lbnQnO1xuXG5ARGlyZWN0aXZlKHtcbiAgc2VsZWN0b3I6ICdbc2t5QWdHcmlkRGF0YU1hbmFnZXJBZGFwdGVyXSdcbn0pXG5leHBvcnQgY2xhc3MgU2t5QWdHcmlkRGF0YU1hbmFnZXJBZGFwdGVyRGlyZWN0aXZlIGltcGxlbWVudHMgQWZ0ZXJDb250ZW50SW5pdCwgT25EZXN0cm95IHtcblxuICBASW5wdXQoKVxuICBwdWJsaWMgdmlld0lkOiBzdHJpbmc7XG5cbiAgQENvbnRlbnRDaGlsZHJlbihBZ0dyaWRBbmd1bGFyLCB7IGRlc2NlbmRhbnRzOiB0cnVlIH0pXG4gIHB1YmxpYyBhZ0dyaWRMaXN0OiBRdWVyeUxpc3Q8QWdHcmlkQW5ndWxhcj47XG5cbiAgQENvbnRlbnRDaGlsZHJlbihTa3lBZ0dyaWRXcmFwcGVyQ29tcG9uZW50LCB7IGRlc2NlbmRhbnRzOiB0cnVlIH0pXG4gIHB1YmxpYyBza3lBZ0dyaWRXcmFwcGVyTGlzdDogUXVlcnlMaXN0PFNreUFnR3JpZFdyYXBwZXJDb21wb25lbnQ+O1xuXG4gIHByaXZhdGUgY3VycmVudEFnR3JpZDogQWdHcmlkQW5ndWxhcjtcbiAgcHJpdmF0ZSBjdXJyZW50RGF0YVN0YXRlOiBTa3lEYXRhTWFuYWdlclN0YXRlO1xuICBwcml2YXRlIGN1cnJlbnRTa3lBZ0dyaWRXcmFwcGVyOiBTa3lBZ0dyaWRXcmFwcGVyQ29tcG9uZW50O1xuICBwcml2YXRlIGRhdGFTdGF0ZVN1YjogU3Vic2NyaXB0aW9uO1xuICBwcml2YXRlIHZpZXdDb25maWc6IFNreURhdGFWaWV3Q29uZmlnO1xuICBwcml2YXRlIG5nVW5zdWJzY3JpYmUgPSBuZXcgU3ViamVjdCgpO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgY2hhbmdlRGV0ZWN0b3I6IENoYW5nZURldGVjdG9yUmVmLFxuICAgIHByaXZhdGUgZGF0YU1hbmFnZXJTdmM6IFNreURhdGFNYW5hZ2VyU2VydmljZSkgeyB9XG5cbiAgcHVibGljIG5nQWZ0ZXJDb250ZW50SW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLmRhdGFNYW5hZ2VyU3ZjLnNldFZpZXdrZWVwZXJDbGFzc2VzKHRoaXMudmlld0lkLCBbJy5hZy1oZWFkZXInXSk7XG5cbiAgICB0aGlzLnZpZXdDb25maWcgPSB0aGlzLmRhdGFNYW5hZ2VyU3ZjLmdldFZpZXdCeUlkKHRoaXMudmlld0lkKTtcbiAgICB0aGlzLmNoZWNrRm9yQWdHcmlkKCk7XG4gICAgdGhpcy5jaGVja0ZvclNreUFnR3JpZFdyYXBwZXIoKTtcblxuICAgIHRoaXMuYWdHcmlkTGlzdC5jaGFuZ2VzXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5uZ1Vuc3Vic2NyaWJlKSlcbiAgICAgIC5zdWJzY3JpYmUoKCkgPT4gdGhpcy5jaGVja0ZvckFnR3JpZCgpKTtcblxuICAgIHRoaXMuc2t5QWdHcmlkV3JhcHBlckxpc3QuY2hhbmdlc1xuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMubmdVbnN1YnNjcmliZSkpXG4gICAgICAuc3Vic2NyaWJlKCgpID0+IHRoaXMuY2hlY2tGb3JTa3lBZ0dyaWRXcmFwcGVyKCkpO1xuICB9XG5cbiAgcHVibGljIG5nT25EZXN0cm95KCkge1xuICAgIHRoaXMubmdVbnN1YnNjcmliZS5uZXh0KCk7XG4gICAgdGhpcy5uZ1Vuc3Vic2NyaWJlLmNvbXBsZXRlKCk7XG4gIH1cblxuICBwcml2YXRlIGNoZWNrRm9yQWdHcmlkKCk6IHZvaWQge1xuICAgIGNvbnN0IGFnR3JpZENvdW50ID0gdGhpcy5hZ0dyaWRMaXN0Lmxlbmd0aDtcblxuICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBlbHNlICovXG4gICAgaWYgKGFnR3JpZENvdW50ID09PSAwKSB7XG4gICAgICB0aGlzLnVucmVnaXN0ZXJBZ0dyaWQoKTtcbiAgICB9IGVsc2UgaWYgKHRoaXMuYWdHcmlkTGlzdC5maXJzdCAhPT0gdGhpcy5jdXJyZW50QWdHcmlkKSB7XG4gICAgICB0aGlzLnJlZ2lzdGVyQWdHcmlkKCk7XG4gICAgfVxuXG4gICAgaWYgKGFnR3JpZENvdW50ID4gMSkge1xuICAgICAgY29uc29sZS53YXJuKFxuICAgICAgICAnTW9yZSB0aGFuIG9uZSBhZy1ncmlkIGNoaWxkIGNvbXBvbmVudCB3YXMgZm91bmQuIFVzaW5nIHRoZSBmaXJzdCBhZy1HcmlkLidcbiAgICAgICk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBjaGVja0ZvclNreUFnR3JpZFdyYXBwZXIoKTogdm9pZCB7XG4gICAgY29uc3Qgc2t5QWdHcmlkV3JhcHBlckNvdW50ID0gdGhpcy5za3lBZ0dyaWRXcmFwcGVyTGlzdC5sZW5ndGg7XG5cbiAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgZWxzZSAqL1xuICAgIGlmIChza3lBZ0dyaWRXcmFwcGVyQ291bnQgPT09IDApIHtcbiAgICAgIHRoaXMudW5yZWdpc3RlclNreUFnR3JpZFdyYXBwZXIoKTtcbiAgICB9IGVsc2UgaWYgKHRoaXMuc2t5QWdHcmlkV3JhcHBlckxpc3QuZmlyc3QgIT09IHRoaXMuY3VycmVudFNreUFnR3JpZFdyYXBwZXIpIHtcbiAgICAgIHRoaXMucmVnaXN0ZXJTa3lBZ0dyaWRXcmFwcGVyKCk7XG4gICAgfVxuXG4gICAgaWYgKHNreUFnR3JpZFdyYXBwZXJDb3VudCA+IDEpIHtcbiAgICAgIGNvbnNvbGUud2FybihcbiAgICAgICAgJ01vcmUgdGhhbiBvbmUgYWctZ3JpZCBjaGlsZCBjb21wb25lbnQgd2FzIGZvdW5kLiBVc2luZyB0aGUgZmlyc3QgYWctR3JpZC4nXG4gICAgICApO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgdW5yZWdpc3RlckFnR3JpZCgpOiB2b2lkIHtcbiAgICB0aGlzLmN1cnJlbnRBZ0dyaWQgPSB1bmRlZmluZWQ7XG5cbiAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgaWYgKi9cbiAgICBpZiAodGhpcy5kYXRhU3RhdGVTdWIpIHtcbiAgICAgIHRoaXMuZGF0YVN0YXRlU3ViLnVuc3Vic2NyaWJlKCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSB1bnJlZ2lzdGVyU2t5QWdHcmlkV3JhcHBlcigpOiB2b2lkIHtcbiAgICB0aGlzLmN1cnJlbnRTa3lBZ0dyaWRXcmFwcGVyID0gdW5kZWZpbmVkO1xuICB9XG5cbiAgcHJpdmF0ZSByZWdpc3RlclNreUFnR3JpZFdyYXBwZXIoKTogdm9pZCB7XG4gICAgdGhpcy51bnJlZ2lzdGVyU2t5QWdHcmlkV3JhcHBlcigpO1xuXG4gICAgdGhpcy5jdXJyZW50U2t5QWdHcmlkV3JhcHBlciA9IHRoaXMuc2t5QWdHcmlkV3JhcHBlckxpc3QuZmlyc3Q7XG5cbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIGlmICh0aGlzLmN1cnJlbnRTa3lBZ0dyaWRXcmFwcGVyKSB7XG4gICAgICAgIHRoaXMuY3VycmVudFNreUFnR3JpZFdyYXBwZXIudmlld2tlZXBlckNsYXNzZXMgPSBbXTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgcmVnaXN0ZXJBZ0dyaWQoKTogdm9pZCB7XG4gICAgdGhpcy51bnJlZ2lzdGVyQWdHcmlkKCk7XG5cbiAgICBjb25zdCBhZ0dyaWQgPSB0aGlzLmFnR3JpZExpc3QuZmlyc3Q7XG5cbiAgICB0aGlzLmN1cnJlbnRBZ0dyaWQgPSBhZ0dyaWQ7XG5cbiAgICBhZ0dyaWQuZ3JpZFJlYWR5XG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5uZ1Vuc3Vic2NyaWJlKSlcbiAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICB0aGlzLnZpZXdDb25maWcub25TZWxlY3RBbGxDbGljayA9IHRoaXMuc2VsZWN0QWxsLmJpbmQodGhpcyk7XG4gICAgICAgIHRoaXMudmlld0NvbmZpZy5vbkNsZWFyQWxsQ2xpY2sgPSB0aGlzLmNsZWFyQWxsLmJpbmQodGhpcyk7XG5cbiAgICAgICAgdGhpcy5kYXRhTWFuYWdlclN2Yy51cGRhdGVWaWV3Q29uZmlnKHRoaXMudmlld0NvbmZpZyk7XG5cbiAgICAgICAgdGhpcy5kYXRhU3RhdGVTdWIgPSB0aGlzLmRhdGFNYW5hZ2VyU3ZjLmdldERhdGFTdGF0ZVVwZGF0ZXModGhpcy52aWV3Q29uZmlnLmlkKVxuICAgICAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLm5nVW5zdWJzY3JpYmUpKVxuICAgICAgICAgIC5zdWJzY3JpYmUoKGRhdGFTdGF0ZTogU2t5RGF0YU1hbmFnZXJTdGF0ZSkgPT4ge1xuICAgICAgICAgICAgdGhpcy5jdXJyZW50RGF0YVN0YXRlID0gZGF0YVN0YXRlO1xuICAgICAgICAgICAgdGhpcy5kaXNwbGF5Q29sdW1ucyhkYXRhU3RhdGUpO1xuICAgICAgICAgIH0pO1xuXG4gICAgICAgIGFnR3JpZC5hcGkuc2l6ZUNvbHVtbnNUb0ZpdCgpO1xuICAgICAgfSk7XG5cbiAgICBhZ0dyaWQuY29sdW1uTW92ZWRcbiAgICAgIC5waXBlKFxuICAgICAgICB0YWtlVW50aWwodGhpcy5uZ1Vuc3Vic2NyaWJlKSxcbiAgICAgICAgZmlsdGVyKFxuICAgICAgICAgIChldmVudDogQ29sdW1uTW92ZWRFdmVudCkgPT5cbiAgICAgICAgICAgICFbXG4gICAgICAgICAgICAgICdncmlkSW5pdGlhbGl6aW5nJyxcbiAgICAgICAgICAgICAgJ3VpQ29sdW1uUmVzaXplZCcsXG4gICAgICAgICAgICAgICd1aUNvbHVtbkRyYWdnZWQnLFxuICAgICAgICAgICAgICAnYXBpJ1xuICAgICAgICAgICAgXS5pbmNsdWRlcyhldmVudC5zb3VyY2UpXG4gICAgICAgIClcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoKHZhbHVlOiBDb2x1bW5Nb3ZlZEV2ZW50KSA9PiB7XG4gICAgICAgIHRoaXMudXBkYXRlQ29sdW1uc0luQ3VycmVudERhdGFTdGF0ZSh2YWx1ZS5jb2x1bW5BcGkpO1xuICAgICAgfSk7XG4gICAgbGV0IGN1cnJlbnRDb2x1bW5zOiBzdHJpbmdbXTtcbiAgICBhZ0dyaWQuZHJhZ1N0YXJ0ZWRcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLm5nVW5zdWJzY3JpYmUpKVxuICAgICAgLnN1YnNjcmliZSgodmFsdWU6IERyYWdTdGFydGVkRXZlbnQpID0+IHtcbiAgICAgICAgY3VycmVudENvbHVtbnMgPSB0aGlzLmdldENvbHVtbk9yZGVyKHZhbHVlLmNvbHVtbkFwaSk7XG4gICAgICB9KTtcbiAgICBhZ0dyaWQuZHJhZ1N0b3BwZWRcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLm5nVW5zdWJzY3JpYmUpKVxuICAgICAgLnN1YnNjcmliZSgodmFsdWU6IERyYWdTdG9wcGVkRXZlbnQpID0+IHtcbiAgICAgICAgY29uc3QgbmV3Q29sdW1ucyA9IHRoaXMuZ2V0Q29sdW1uT3JkZXIodmFsdWUuY29sdW1uQXBpKTtcbiAgICAgICAgY29uc3QgaGFzQ2hhbmdlZCA9IGN1cnJlbnRDb2x1bW5zLmZpbmRJbmRleChcbiAgICAgICAgICAoY29sSWQsIGkpID0+IGNvbElkICE9PSBuZXdDb2x1bW5zW2ldXG4gICAgICAgICk7XG4gICAgICAgIGlmIChoYXNDaGFuZ2VkID4gLTEpIHtcbiAgICAgICAgICB0aGlzLnVwZGF0ZUNvbHVtbnNJbkN1cnJlbnREYXRhU3RhdGUodmFsdWUuY29sdW1uQXBpKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG5cbiAgICBhZ0dyaWQucm93U2VsZWN0ZWRcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLm5nVW5zdWJzY3JpYmUpKVxuICAgICAgLnN1YnNjcmliZSgoZXZlbnQ6IFJvd1NlbGVjdGVkRXZlbnQpID0+IHtcbiAgICAgICAgY29uc3Qgcm93ID0gZXZlbnQubm9kZTtcbiAgICAgICAgbGV0IHNlbGVjdGVkSWRzID0gdGhpcy5jdXJyZW50RGF0YVN0YXRlLnNlbGVjdGVkSWRzIHx8IFtdO1xuICAgICAgICBjb25zdCByb3dJbmRleCA9IHNlbGVjdGVkSWRzLmluZGV4T2Yocm93LmRhdGEuaWQpO1xuXG4gICAgICAgIGlmIChyb3cuaXNTZWxlY3RlZCgpICYmIHJvd0luZGV4ID09PSAtMSkge1xuICAgICAgICAgIHNlbGVjdGVkSWRzLnB1c2gocm93LmRhdGEuaWQpO1xuICAgICAgICB9IGVsc2UgaWYgKCFyb3cuaXNTZWxlY3RlZCgpICYmIHJvd0luZGV4ICE9PSAtMSkge1xuICAgICAgICAgIHNlbGVjdGVkSWRzLnNwbGljZShyb3dJbmRleCwgMSk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmN1cnJlbnREYXRhU3RhdGUuc2VsZWN0ZWRJZHMgPSBzZWxlY3RlZElkcztcbiAgICAgICAgdGhpcy5kYXRhTWFuYWdlclN2Yy51cGRhdGVEYXRhU3RhdGUodGhpcy5jdXJyZW50RGF0YVN0YXRlLCB0aGlzLnZpZXdDb25maWcuaWQpO1xuICAgICAgICB0aGlzLmNoYW5nZURldGVjdG9yLm1hcmtGb3JDaGVjaygpO1xuICAgICAgfSk7XG5cbiAgICBhZ0dyaWQuc29ydENoYW5nZWRcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLm5nVW5zdWJzY3JpYmUpKVxuICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgIGNvbnN0IGdyaWRTb3J0TW9kZWwgPSBhZ0dyaWQuYXBpLmdldFNvcnRNb2RlbCgpO1xuICAgICAgICBsZXQgc29ydE9wdGlvbjogU2t5RGF0YU1hbmFnZXJTb3J0T3B0aW9uO1xuXG4gICAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBlbHNlICovXG4gICAgICAgIGlmIChncmlkU29ydE1vZGVsLmxlbmd0aCkge1xuICAgICAgICAgIGNvbnN0IGFjdGl2ZVNvcnRNb2RlbCA9IGdyaWRTb3J0TW9kZWxbMF07XG4gICAgICAgICAgY29uc3QgYWN0aXZlU29ydENvbHVtbiA9IGFnR3JpZC5jb2x1bW5BcGkuZ2V0Q29sdW1uKGFjdGl2ZVNvcnRNb2RlbC5jb2xJZCk7XG4gICAgICAgICAgY29uc3QgZGF0YU1hbmFnZXJDb25maWcgPSB0aGlzLmRhdGFNYW5hZ2VyU3ZjLmdldEN1cnJlbnREYXRhTWFuYWdlckNvbmZpZygpO1xuXG4gICAgICAgICAgLyogaXN0YW5idWwgaWdub3JlIGVsc2UgKi9cbiAgICAgICAgICBpZiAoZGF0YU1hbmFnZXJDb25maWcuc29ydE9wdGlvbnMpIHtcbiAgICAgICAgICAgIHNvcnRPcHRpb24gPSBkYXRhTWFuYWdlckNvbmZpZy5zb3J0T3B0aW9ucy5maW5kKChvcHRpb246IFNreURhdGFNYW5hZ2VyU29ydE9wdGlvbikgPT4ge1xuICAgICAgICAgICAgICByZXR1cm4gb3B0aW9uLnByb3BlcnR5TmFtZSA9PT0gYWN0aXZlU29ydENvbHVtbi5nZXRDb2xEZWYoKS5maWVsZCAmJlxuICAgICAgICAgICAgICAgIG9wdGlvbi5kZXNjZW5kaW5nID09PSAoYWN0aXZlU29ydE1vZGVsLnNvcnQgPT09ICdkZXNjJyk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgc29ydE9wdGlvbiA9IHVuZGVmaW5lZDtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5jdXJyZW50RGF0YVN0YXRlLmFjdGl2ZVNvcnRPcHRpb24gPSBzb3J0T3B0aW9uO1xuICAgICAgICB0aGlzLmRhdGFNYW5hZ2VyU3ZjLnVwZGF0ZURhdGFTdGF0ZSh0aGlzLmN1cnJlbnREYXRhU3RhdGUsIHRoaXMudmlld0NvbmZpZy5pZCk7XG4gICAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgdXBkYXRlQ29sdW1uc0luQ3VycmVudERhdGFTdGF0ZShjb2x1bW5BcGk6IENvbHVtbkFwaSkge1xuICAgIGNvbnN0IGNvbHVtbk9yZGVyID0gdGhpcy5nZXRDb2x1bW5PcmRlcihjb2x1bW5BcGkpO1xuXG4gICAgY29uc3Qgdmlld1N0YXRlID0gdGhpcy5jdXJyZW50RGF0YVN0YXRlLmdldFZpZXdTdGF0ZUJ5SWQoXG4gICAgICB0aGlzLnZpZXdDb25maWcuaWRcbiAgICApO1xuICAgIHZpZXdTdGF0ZS5kaXNwbGF5ZWRDb2x1bW5JZHMgPSBjb2x1bW5PcmRlcjtcblxuICAgIHRoaXMuZGF0YU1hbmFnZXJTdmMudXBkYXRlRGF0YVN0YXRlKFxuICAgICAgdGhpcy5jdXJyZW50RGF0YVN0YXRlLmFkZE9yVXBkYXRlVmlldyh0aGlzLnZpZXdDb25maWcuaWQsIHZpZXdTdGF0ZSksXG4gICAgICB0aGlzLnZpZXdDb25maWcuaWRcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRDb2x1bW5PcmRlcihjb2x1bW5BcGk6IENvbHVtbkFwaSk6IHN0cmluZ1tdIHtcbiAgICByZXR1cm4gY29sdW1uQXBpXG4gICAgICAuZ2V0QWxsRGlzcGxheWVkVmlydHVhbENvbHVtbnMoKVxuICAgICAgLm1hcCgoY29sKSA9PiBjb2wuZ2V0Q29sRGVmKCkuY29sSWQpO1xuICB9XG5cbiAgcHJpdmF0ZSBkaXNwbGF5Q29sdW1ucyhkYXRhU3RhdGU6IFNreURhdGFNYW5hZ2VyU3RhdGUpOiB2b2lkIHtcbiAgICBjb25zdCBhZ0dyaWQgPSB0aGlzLmN1cnJlbnRBZ0dyaWQ7XG4gICAgY29uc3Qgdmlld1N0YXRlID0gZGF0YVN0YXRlLmdldFZpZXdTdGF0ZUJ5SWQodGhpcy52aWV3Q29uZmlnLmlkKTtcbiAgICBsZXQgZGlzcGxheWVkQ29sdW1uSWRzOiBzdHJpbmdbXSA9IFtdO1xuICAgIC8qaXN0YW5idWwgaWdub3JlIGVsc2UqL1xuICAgIGlmICh2aWV3U3RhdGUuZGlzcGxheWVkQ29sdW1uSWRzKSB7XG4gICAgICBkaXNwbGF5ZWRDb2x1bW5JZHMgPSB2aWV3U3RhdGUuZGlzcGxheWVkQ29sdW1uSWRzO1xuICAgIH1cbiAgICBjb25zdCBjb2x1bW5zID0gYWdHcmlkLmNvbHVtbkFwaS5nZXRBbGxDb2x1bW5zKCk7XG5cbiAgICBmb3IgKGNvbnN0IGNvbHVtbiBvZiBjb2x1bW5zKSB7XG4gICAgICBjb25zdCBjb2xJZCA9IGNvbHVtbi5nZXRDb2xJZCgpO1xuICAgICAgY29uc3QgY29sSW5kZXggPSBkaXNwbGF5ZWRDb2x1bW5JZHMuaW5kZXhPZihjb2xJZCk7XG5cbiAgICAgIGFnR3JpZC5jb2x1bW5BcGkuc2V0Q29sdW1uVmlzaWJsZShjb2xJZCwgY29sSW5kZXggIT09IC0xKTtcbiAgICAgIGFnR3JpZC5jb2x1bW5BcGkubW92ZUNvbHVtbihjb2xJZCwgY29sSW5kZXgpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgc2VsZWN0QWxsKCk6IHZvaWQge1xuICAgIGNvbnN0IGFnR3JpZCA9IHRoaXMuYWdHcmlkTGlzdC5maXJzdDtcbiAgICBhZ0dyaWQuYXBpLnNlbGVjdEFsbCgpO1xuICB9XG5cbiAgcHJpdmF0ZSBjbGVhckFsbCgpOiB2b2lkIHtcbiAgICBjb25zdCBhZ0dyaWQgPSB0aGlzLmFnR3JpZExpc3QuZmlyc3Q7XG4gICAgYWdHcmlkLmFwaS5kZXNlbGVjdEFsbCgpO1xuICB9XG59XG4iXX0=
@@ -1,7 +1,7 @@
1
1
  import { __decorate, __values } from "tslib";
2
2
  import { AfterContentInit, ChangeDetectorRef, ContentChildren, Directive, Input, OnDestroy, QueryList } from '@angular/core';
3
3
  import { Subject } from 'rxjs';
4
- import { takeUntil } from 'rxjs/operators';
4
+ import { filter, takeUntil } from 'rxjs/operators';
5
5
  import { AgGridAngular } from 'ag-grid-angular';
6
6
  import { SkyDataManagerService, SkyDataManagerSortOption, SkyDataManagerState, SkyDataViewConfig } from '@skyux/data-manager';
7
7
  import { SkyAgGridWrapperComponent } from './ag-grid-wrapper.component';
@@ -94,13 +94,30 @@ var SkyAgGridDataManagerAdapterDirective = /** @class */ (function () {
94
94
  agGrid.api.sizeColumnsToFit();
95
95
  });
96
96
  agGrid.columnMoved
97
+ .pipe(takeUntil(this.ngUnsubscribe), filter(function (event) {
98
+ return ![
99
+ 'gridInitializing',
100
+ 'uiColumnResized',
101
+ 'uiColumnDragged',
102
+ 'api'
103
+ ].includes(event.source);
104
+ }))
105
+ .subscribe(function (value) {
106
+ _this.updateColumnsInCurrentDataState(value.columnApi);
107
+ });
108
+ var currentColumns;
109
+ agGrid.dragStarted
97
110
  .pipe(takeUntil(this.ngUnsubscribe))
98
- .subscribe(function (event) {
99
- var columnOrder = agGrid.columnApi.getAllDisplayedVirtualColumns().map(function (col) { return col.getColDef().colId; });
100
- if (event.source !== 'api') {
101
- var viewState = _this.currentDataState.getViewStateById(_this.viewConfig.id);
102
- viewState.displayedColumnIds = columnOrder;
103
- _this.dataManagerSvc.updateDataState(_this.currentDataState.addOrUpdateView(_this.viewConfig.id, viewState), _this.viewConfig.id);
111
+ .subscribe(function (value) {
112
+ currentColumns = _this.getColumnOrder(value.columnApi);
113
+ });
114
+ agGrid.dragStopped
115
+ .pipe(takeUntil(this.ngUnsubscribe))
116
+ .subscribe(function (value) {
117
+ var newColumns = _this.getColumnOrder(value.columnApi);
118
+ var hasChanged = currentColumns.findIndex(function (colId, i) { return colId !== newColumns[i]; });
119
+ if (hasChanged > -1) {
120
+ _this.updateColumnsInCurrentDataState(value.columnApi);
104
121
  }
105
122
  });
106
123
  agGrid.rowSelected
@@ -144,6 +161,17 @@ var SkyAgGridDataManagerAdapterDirective = /** @class */ (function () {
144
161
  _this.dataManagerSvc.updateDataState(_this.currentDataState, _this.viewConfig.id);
145
162
  });
146
163
  };
164
+ SkyAgGridDataManagerAdapterDirective.prototype.updateColumnsInCurrentDataState = function (columnApi) {
165
+ var columnOrder = this.getColumnOrder(columnApi);
166
+ var viewState = this.currentDataState.getViewStateById(this.viewConfig.id);
167
+ viewState.displayedColumnIds = columnOrder;
168
+ this.dataManagerSvc.updateDataState(this.currentDataState.addOrUpdateView(this.viewConfig.id, viewState), this.viewConfig.id);
169
+ };
170
+ SkyAgGridDataManagerAdapterDirective.prototype.getColumnOrder = function (columnApi) {
171
+ return columnApi
172
+ .getAllDisplayedVirtualColumns()
173
+ .map(function (col) { return col.getColDef().colId; });
174
+ };
147
175
  SkyAgGridDataManagerAdapterDirective.prototype.displayColumns = function (dataState) {
148
176
  var e_1, _a;
149
177
  var agGrid = this.currentAgGrid;
@@ -200,4 +228,4 @@ var SkyAgGridDataManagerAdapterDirective = /** @class */ (function () {
200
228
  return SkyAgGridDataManagerAdapterDirective;
201
229
  }());
202
230
  export { SkyAgGridDataManagerAdapterDirective };
203
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWctZ3JpZC1kYXRhLW1hbmFnZXItYWRhcHRlci5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9Ac2t5dXgvYWctZ3JpZC8iLCJzb3VyY2VzIjpbIm1vZHVsZXMvYWctZ3JpZC9hZy1ncmlkLWRhdGEtbWFuYWdlci1hZGFwdGVyLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUNMLGdCQUFnQixFQUNoQixpQkFBaUIsRUFDakIsZUFBZSxFQUNmLFNBQVMsRUFDVCxLQUFLLEVBQ0wsU0FBUyxFQUNULFNBQVMsRUFDVixNQUFNLGVBQWUsQ0FBQztBQUV2QixPQUFPLEVBQ0wsT0FBTyxFQUVSLE1BQU0sTUFBTSxDQUFDO0FBRWQsT0FBTyxFQUNMLFNBQVMsRUFDVixNQUFNLGdCQUFnQixDQUFDO0FBRXhCLE9BQU8sRUFDTCxhQUFhLEVBQ2QsTUFBTSxpQkFBaUIsQ0FBQztBQU96QixPQUFPLEVBQ0wscUJBQXFCLEVBQ3JCLHdCQUF3QixFQUN4QixtQkFBbUIsRUFDbkIsaUJBQWlCLEVBQ2xCLE1BQU0scUJBQXFCLENBQUM7QUFFN0IsT0FBTyxFQUNMLHlCQUF5QixFQUMxQixNQUFNLDZCQUE2QixDQUFDO0FBS3JDO0lBa0JFLDhDQUNVLGNBQWlDLEVBQ2pDLGNBQXFDO1FBRHJDLG1CQUFjLEdBQWQsY0FBYyxDQUFtQjtRQUNqQyxtQkFBYyxHQUFkLGNBQWMsQ0FBdUI7UUFKdkMsa0JBQWEsR0FBRyxJQUFJLE9BQU8sRUFBRSxDQUFDO0lBSWEsQ0FBQztJQUU3QyxpRUFBa0IsR0FBekI7UUFBQSxpQkFjQztRQWJDLElBQUksQ0FBQyxjQUFjLENBQUMsb0JBQW9CLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUM7UUFFdEUsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDL0QsSUFB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LFNBQVMsRUFBRSxDQUFDO0lBQ3pCLENBQUM7SUFFTyx1REFBUSxHQUFoQjtRQUNFLElBQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDO1FBQ3JDLE1BQU0sQ0FBQyxHQUFHLENBQUMsV0FBVyxFQUFFLENBQUM7SUFDM0IsQ0FBQzs7Z0JBdE15QixpQkFBaUI7Z0JBQ2pCLHFCQUFxQjs7SUFqQi9DO1FBREMsS0FBSyxFQUFFO3dFQUNjO0lBR3RCO1FBREMsZUFBZSxDQUFDLGFBQWEsRUFBRSxFQUFFLFdBQVcsRUFBRSxJQUFJLEVBQUUsQ0FBQzs0RUFDVjtJQUc1QztRQURDLGVBQWUsQ0FBQyx5QkFBeUIsRUFBRSxFQUFFLFdBQVcsRUFBRSxJQUFJLEVBQUUsQ0FBQztzRkFDQTtJQVR2RCxvQ0FBb0M7UUFIaEQsU0FBUyxDQUFDO1lBQ1QsUUFBUSxFQUFFLCtCQUErQjtTQUMxQyxDQUFDO09BQ1csb0NBQW9DLENBME5oRDtJQUFELDJDQUFDO0NBQUEsQUExTkQsSUEwTkM7U0ExTlksb0NBQW9DIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQWZ0ZXJDb250ZW50SW5pdCxcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIENvbnRlbnRDaGlsZHJlbixcbiAgRGlyZWN0aXZlLFxuICBJbnB1dCxcbiAgT25EZXN0cm95LFxuICBRdWVyeUxpc3Rcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7XG4gIFN1YmplY3QsXG4gIFN1YnNjcmlwdGlvblxufSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHtcbiAgdGFrZVVudGlsXG59IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuaW1wb3J0IHtcbiAgQWdHcmlkQW5ndWxhclxufSBmcm9tICdhZy1ncmlkLWFuZ3VsYXInO1xuXG5pbXBvcnQge1xuICBDb2x1bW5Nb3ZlZEV2ZW50LFxuICBSb3dTZWxlY3RlZEV2ZW50XG59IGZyb20gJ2FnLWdyaWQtY29tbXVuaXR5JztcblxuaW1wb3J0IHtcbiAgU2t5RGF0YU1hbmFnZXJTZXJ2aWNlLFxuICBTa3lEYXRhTWFuYWdlclNvcnRPcHRpb24sXG4gIFNreURhdGFNYW5hZ2VyU3RhdGUsXG4gIFNreURhdGFWaWV3Q29uZmlnXG59IGZyb20gJ0Bza3l1eC9kYXRhLW1hbmFnZXInO1xuXG5pbXBvcnQge1xuICBTa3lBZ0dyaWRXcmFwcGVyQ29tcG9uZW50XG59IGZyb20gJy4vYWctZ3JpZC13cmFwcGVyLmNvbXBvbmVudCc7XG5cbkBEaXJlY3RpdmUoe1xuICBzZWxlY3RvcjogJ1tza3lBZ0dyaWREYXRhTWFuYWdlckFkYXB0ZXJdJ1xufSlcbmV4cG9ydCBjbGFzcyBTa3lBZ0dyaWREYXRhTWFuYWdlckFkYXB0ZXJEaXJlY3RpdmUgaW1wbGVtZW50cyBBZnRlckNvbnRlbnRJbml0LCBPbkRlc3Ryb3kge1xuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyB2aWV3SWQ6IHN0cmluZztcblxuICBAQ29udGVudENoaWxkcmVuKEFnR3JpZEFuZ3VsYXIsIHsgZGVzY2VuZGFudHM6IHRydWUgfSlcbiAgcHVibGljIGFnR3JpZExpc3Q6IFF1ZXJ5TGlzdDxBZ0dyaWRBbmd1bGFyPjtcblxuICBAQ29udGVudENoaWxkcmVuKFNreUFnR3JpZFdyYXBwZXJDb21wb25lbnQsIHsgZGVzY2VuZGFudHM6IHRydWUgfSlcbiAgcHVibGljIHNreUFnR3JpZFdyYXBwZXJMaXN0OiBRdWVyeUxpc3Q8U2t5QWdHcmlkV3JhcHBlckNvbXBvbmVudD47XG5cbiAgcHJpdmF0ZSBjdXJyZW50QWdHcmlkOiBBZ0dyaWRBbmd1bGFyO1xuICBwcml2YXRlIGN1cnJlbnREYXRhU3RhdGU6IFNreURhdGFNYW5hZ2VyU3RhdGU7XG4gIHByaXZhdGUgY3VycmVudFNreUFnR3JpZFdyYXBwZXI6IFNreUFnR3JpZFdyYXBwZXJDb21wb25lbnQ7XG4gIHByaXZhdGUgZGF0YVN0YXRlU3ViOiBTdWJzY3JpcHRpb247XG4gIHByaXZhdGUgdmlld0NvbmZpZzogU2t5RGF0YVZpZXdDb25maWc7XG4gIHByaXZhdGUgbmdVbnN1YnNjcmliZSA9IG5ldyBTdWJqZWN0KCk7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBjaGFuZ2VEZXRlY3RvcjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgcHJpdmF0ZSBkYXRhTWFuYWdlclN2YzogU2t5RGF0YU1hbmFnZXJTZXJ2aWNlKSB7IH1cblxuICBwdWJsaWMgbmdBZnRlckNvbnRlbnRJbml0KCk6IHZvaWQge1xuICAgIHRoaXMuZGF0YU1hbmFnZXJTdmMuc2V0Vmlld2tlZXBlckNsYXNzZXModGhpcy52aWV3SWQsIFsnLmFnLWhlYWRlciddKTtcblxuICAgIHRoaXMudmlld0NvbmZpZyA9IHRoaXMuZGF0YU1hbmFnZXJTdmMuZ2V0Vmlld0J5SWQodGhpcy52aWV3SWQpO1xuICAgIHRoaXMuY2hlY2tGb3JBZ0dyaWQoKTtcbiAgICB0aGlzLmNoZWNrRm9yU2t5QWdHcmlkV3JhcHBlcigpO1xuXG4gICAgdGhpcy5hZ0dyaWRMaXN0LmNoYW5nZXNcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLm5nVW5zdWJzY3JpYmUpKVxuICAgICAgLnN1YnNjcmliZSgoKSA9PiB0aGlzLmNoZWNrRm9yQWdHcmlkKCkpO1xuXG4gICAgdGhpcy5za3lBZ0dyaWRXcmFwcGVyTGlzdC5jaGFuZ2VzXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5uZ1Vuc3Vic2NyaWJlKSlcbiAgICAgIC5zdWJzY3JpYmUoKCkgPT4gdGhpcy5jaGVja0ZvclNreUFnR3JpZFdyYXBwZXIoKSk7XG4gIH1cblxuICBwdWJsaWMgbmdPbkRlc3Ryb3koKSB7XG4gICAgdGhpcy5uZ1Vuc3Vic2NyaWJlLm5leHQoKTtcbiAgICB0aGlzLm5nVW5zdWJzY3JpYmUuY29tcGxldGUoKTtcbiAgfVxuXG4gIHByaXZhdGUgY2hlY2tGb3JBZ0dyaWQoKTogdm9pZCB7XG4gICAgY29uc3QgYWdHcmlkQ291bnQgPSB0aGlzLmFnR3JpZExpc3QubGVuZ3RoO1xuXG4gICAgLyogaXN0YW5idWwgaWdub3JlIGVsc2UgKi9cbiAgICBpZiAoYWdHcmlkQ291bnQgPT09IDApIHtcbiAgICAgIHRoaXMudW5yZWdpc3RlckFnR3JpZCgpO1xuICAgIH0gZWxzZSBpZiAodGhpcy5hZ0dyaWRMaXN0LmZpcnN0ICE9PSB0aGlzLmN1cnJlbnRBZ0dyaWQpIHtcbiAgICAgIHRoaXMucmVnaXN0ZXJBZ0dyaWQoKTtcbiAgICB9XG5cbiAgICBpZiAoYWdHcmlkQ291bnQgPiAxKSB7XG4gICAgICBjb25zb2xlLndhcm4oXG4gICAgICAgICdNb3JlIHRoYW4gb25lIGFnLWdyaWQgY2hpbGQgY29tcG9uZW50IHdhcyBmb3VuZC4gVXNpbmcgdGhlIGZpcnN0IGFnLUdyaWQuJ1xuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGNoZWNrRm9yU2t5QWdHcmlkV3JhcHBlcigpOiB2b2lkIHtcbiAgICBjb25zdCBza3lBZ0dyaWRXcmFwcGVyQ291bnQgPSB0aGlzLnNreUFnR3JpZFdyYXBwZXJMaXN0Lmxlbmd0aDtcblxuICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBlbHNlICovXG4gICAgaWYgKHNreUFnR3JpZFdyYXBwZXJDb3VudCA9PT0gMCkge1xuICAgICAgdGhpcy51bnJlZ2lzdGVyU2t5QWdHcmlkV3JhcHBlcigpO1xuICAgIH0gZWxzZSBpZiAodGhpcy5za3lBZ0dyaWRXcmFwcGVyTGlzdC5maXJzdCAhPT0gdGhpcy5jdXJyZW50U2t5QWdHcmlkV3JhcHBlcikge1xuICAgICAgdGhpcy5yZWdpc3RlclNreUFnR3JpZFdyYXBwZXIoKTtcbiAgICB9XG5cbiAgICBpZiAoc2t5QWdHcmlkV3JhcHBlckNvdW50ID4gMSkge1xuICAgICAgY29uc29sZS53YXJuKFxuICAgICAgICAnTW9yZSB0aGFuIG9uZSBhZy1ncmlkIGNoaWxkIGNvbXBvbmVudCB3YXMgZm91bmQuIFVzaW5nIHRoZSBmaXJzdCBhZy1HcmlkLidcbiAgICAgICk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSB1bnJlZ2lzdGVyQWdHcmlkKCk6IHZvaWQge1xuICAgIHRoaXMuY3VycmVudEFnR3JpZCA9IHVuZGVmaW5lZDtcblxuICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBpZiAqL1xuICAgIGlmICh0aGlzLmRhdGFTdGF0ZVN1Yikge1xuICAgICAgdGhpcy5kYXRhU3RhdGVTdWIudW5zdWJzY3JpYmUoKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHVucmVnaXN0ZXJTa3lBZ0dyaWRXcmFwcGVyKCk6IHZvaWQge1xuICAgIHRoaXMuY3VycmVudFNreUFnR3JpZFdyYXBwZXIgPSB1bmRlZmluZWQ7XG4gIH1cblxuICBwcml2YXRlIHJlZ2lzdGVyU2t5QWdHcmlkV3JhcHBlcigpOiB2b2lkIHtcbiAgICB0aGlzLnVucmVnaXN0ZXJTa3lBZ0dyaWRXcmFwcGVyKCk7XG5cbiAgICB0aGlzLmN1cnJlbnRTa3lBZ0dyaWRXcmFwcGVyID0gdGhpcy5za3lBZ0dyaWRXcmFwcGVyTGlzdC5maXJzdDtcblxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgaWYgKHRoaXMuY3VycmVudFNreUFnR3JpZFdyYXBwZXIpIHtcbiAgICAgICAgdGhpcy5jdXJyZW50U2t5QWdHcmlkV3JhcHBlci52aWV3a2VlcGVyQ2xhc3NlcyA9IFtdO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSByZWdpc3RlckFnR3JpZCgpOiB2b2lkIHtcbiAgICB0aGlzLnVucmVnaXN0ZXJBZ0dyaWQoKTtcblxuICAgIGNvbnN0IGFnR3JpZCA9IHRoaXMuYWdHcmlkTGlzdC5maXJzdDtcblxuICAgIHRoaXMuY3VycmVudEFnR3JpZCA9IGFnR3JpZDtcblxuICAgIGFnR3JpZC5ncmlkUmVhZHlcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLm5nVW5zdWJzY3JpYmUpKVxuICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgIHRoaXMudmlld0NvbmZpZy5vblNlbGVjdEFsbENsaWNrID0gdGhpcy5zZWxlY3RBbGwuYmluZCh0aGlzKTtcbiAgICAgICAgdGhpcy52aWV3Q29uZmlnLm9uQ2xlYXJBbGxDbGljayA9IHRoaXMuY2xlYXJBbGwuYmluZCh0aGlzKTtcblxuICAgICAgICB0aGlzLmRhdGFNYW5hZ2VyU3ZjLnVwZGF0ZVZpZXdDb25maWcodGhpcy52aWV3Q29uZmlnKTtcblxuICAgICAgICB0aGlzLmRhdGFTdGF0ZVN1YiA9IHRoaXMuZGF0YU1hbmFnZXJTdmMuZ2V0RGF0YVN0YXRlVXBkYXRlcyh0aGlzLnZpZXdDb25maWcuaWQpXG4gICAgICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMubmdVbnN1YnNjcmliZSkpXG4gICAgICAgICAgLnN1YnNjcmliZSgoZGF0YVN0YXRlOiBTa3lEYXRhTWFuYWdlclN0YXRlKSA9PiB7XG4gICAgICAgICAgICB0aGlzLmN1cnJlbnREYXRhU3RhdGUgPSBkYXRhU3RhdGU7XG4gICAgICAgICAgICB0aGlzLmRpc3BsYXlDb2x1bW5zKGRhdGFTdGF0ZSk7XG4gICAgICAgICAgfSk7XG5cbiAgICAgICAgYWdHcmlkLmFwaS5zaXplQ29sdW1uc1RvRml0KCk7XG4gICAgICB9KTtcblxuICAgIGFnR3JpZC5jb2x1bW5Nb3ZlZFxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMubmdVbnN1YnNjcmliZSkpXG4gICAgICAuc3Vic2NyaWJlKChldmVudDogQ29sdW1uTW92ZWRFdmVudCkgPT4ge1xuICAgICAgICBsZXQgY29sdW1uT3JkZXIgPSBhZ0dyaWQuY29sdW1uQXBpLmdldEFsbERpc3BsYXllZFZpcnR1YWxDb2x1bW5zKCkubWFwKFxuICAgICAgICAgIGNvbCA9PiBjb2wuZ2V0Q29sRGVmKCkuY29sSWRcbiAgICAgICAgKTtcblxuICAgICAgICBpZiAoZXZlbnQuc291cmNlICE9PSAnYXBpJykge1xuICAgICAgICAgIGNvbnN0IHZpZXdTdGF0ZSA9IHRoaXMuY3VycmVudERhdGFTdGF0ZS5nZXRWaWV3U3RhdGVCeUlkKHRoaXMudmlld0NvbmZpZy5pZCk7XG4gICAgICAgICAgdmlld1N0YXRlLmRpc3BsYXllZENvbHVtbklkcyA9IGNvbHVtbk9yZGVyO1xuXG4gICAgICAgICAgdGhpcy5kYXRhTWFuYWdlclN2Yy51cGRhdGVEYXRhU3RhdGUoXG4gICAgICAgICAgICB0aGlzLmN1cnJlbnREYXRhU3RhdGUuYWRkT3JVcGRhdGVWaWV3KHRoaXMudmlld0NvbmZpZy5pZCwgdmlld1N0YXRlKSxcbiAgICAgICAgICAgIHRoaXMudmlld0NvbmZpZy5pZFxuICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuXG4gICAgYWdHcmlkLnJvd1NlbGVjdGVkXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5uZ1Vuc3Vic2NyaWJlKSlcbiAgICAgIC5zdWJzY3JpYmUoKGV2ZW50OiBSb3dTZWxlY3RlZEV2ZW50KSA9PiB7XG4gICAgICAgIGNvbnN0IHJvdyA9IGV2ZW50Lm5vZGU7XG4gICAgICAgIGxldCBzZWxlY3RlZElkcyA9IHRoaXMuY3VycmVudERhdGFTdGF0ZS5zZWxlY3RlZElkcyB8fCBbXTtcbiAgICAgICAgY29uc3Qgcm93SW5kZXggPSBzZWxlY3RlZElkcy5pbmRleE9mKHJvdy5kYXRhLmlkKTtcblxuICAgICAgICBpZiAocm93LmlzU2VsZWN0ZWQoKSAmJiByb3dJbmRleCA9PT0gLTEpIHtcbiAgICAgICAgICBzZWxlY3RlZElkcy5wdXNoKHJvdy5kYXRhLmlkKTtcbiAgICAgICAgfSBlbHNlIGlmICghcm93LmlzU2VsZWN0ZWQoKSAmJiByb3dJbmRleCAhPT0gLTEpIHtcbiAgICAgICAgICBzZWxlY3RlZElkcy5zcGxpY2Uocm93SW5kZXgsIDEpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5jdXJyZW50RGF0YVN0YXRlLnNlbGVjdGVkSWRzID0gc2VsZWN0ZWRJZHM7XG4gICAgICAgIHRoaXMuZGF0YU1hbmFnZXJTdmMudXBkYXRlRGF0YVN0YXRlKHRoaXMuY3VycmVudERhdGFTdGF0ZSwgdGhpcy52aWV3Q29uZmlnLmlkKTtcbiAgICAgICAgdGhpcy5jaGFuZ2VEZXRlY3Rvci5tYXJrRm9yQ2hlY2soKTtcbiAgICAgIH0pO1xuXG4gICAgYWdHcmlkLnNvcnRDaGFuZ2VkXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5uZ1Vuc3Vic2NyaWJlKSlcbiAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICBjb25zdCBncmlkU29ydE1vZGVsID0gYWdHcmlkLmFwaS5nZXRTb3J0TW9kZWwoKTtcbiAgICAgICAgbGV0IHNvcnRPcHRpb246IFNreURhdGFNYW5hZ2VyU29ydE9wdGlvbjtcblxuICAgICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgZWxzZSAqL1xuICAgICAgICBpZiAoZ3JpZFNvcnRNb2RlbC5sZW5ndGgpIHtcbiAgICAgICAgICBjb25zdCBhY3RpdmVTb3J0TW9kZWwgPSBncmlkU29ydE1vZGVsWzBdO1xuICAgICAgICAgIGNvbnN0IGFjdGl2ZVNvcnRDb2x1bW4gPSBhZ0dyaWQuY29sdW1uQXBpLmdldENvbHVtbihhY3RpdmVTb3J0TW9kZWwuY29sSWQpO1xuICAgICAgICAgIGNvbnN0IGRhdGFNYW5hZ2VyQ29uZmlnID0gdGhpcy5kYXRhTWFuYWdlclN2Yy5nZXRDdXJyZW50RGF0YU1hbmFnZXJDb25maWcoKTtcblxuICAgICAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBlbHNlICovXG4gICAgICAgICAgaWYgKGRhdGFNYW5hZ2VyQ29uZmlnLnNvcnRPcHRpb25zKSB7XG4gICAgICAgICAgICBzb3J0T3B0aW9uID0gZGF0YU1hbmFnZXJDb25maWcuc29ydE9wdGlvbnMuZmluZCgob3B0aW9uOiBTa3lEYXRhTWFuYWdlclNvcnRPcHRpb24pID0+IHtcbiAgICAgICAgICAgICAgcmV0dXJuIG9wdGlvbi5wcm9wZXJ0eU5hbWUgPT09IGFjdGl2ZVNvcnRDb2x1bW4uZ2V0Q29sRGVmKCkuZmllbGQgJiZcbiAgICAgICAgICAgICAgICBvcHRpb24uZGVzY2VuZGluZyA9PT0gKGFjdGl2ZVNvcnRNb2RlbC5zb3J0ID09PSAnZGVzYycpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHNvcnRPcHRpb24gPSB1bmRlZmluZWQ7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHRoaXMuY3VycmVudERhdGFTdGF0ZS5hY3RpdmVTb3J0T3B0aW9uID0gc29ydE9wdGlvbjtcbiAgICAgICAgdGhpcy5kYXRhTWFuYWdlclN2Yy51cGRhdGVEYXRhU3RhdGUodGhpcy5jdXJyZW50RGF0YVN0YXRlLCB0aGlzLnZpZXdDb25maWcuaWQpO1xuICAgICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGRpc3BsYXlDb2x1bW5zKGRhdGFTdGF0ZTogU2t5RGF0YU1hbmFnZXJTdGF0ZSk6IHZvaWQge1xuICAgIGNvbnN0IGFnR3JpZCA9IHRoaXMuY3VycmVudEFnR3JpZDtcbiAgICBjb25zdCB2aWV3U3RhdGUgPSBkYXRhU3RhdGUuZ2V0Vmlld1N0YXRlQnlJZCh0aGlzLnZpZXdDb25maWcuaWQpO1xuICAgIGxldCBkaXNwbGF5ZWRDb2x1bW5JZHM6IHN0cmluZ1tdID0gW107XG4gICAgLyppc3RhbmJ1bCBpZ25vcmUgZWxzZSovXG4gICAgaWYgKHZpZXdTdGF0ZS5kaXNwbGF5ZWRDb2x1bW5JZHMpIHtcbiAgICAgIGRpc3BsYXllZENvbHVtbklkcyA9IHZpZXdTdGF0ZS5kaXNwbGF5ZWRDb2x1bW5JZHM7XG4gICAgfVxuICAgIGNvbnN0IGNvbHVtbnMgPSBhZ0dyaWQuY29sdW1uQXBpLmdldEFsbENvbHVtbnMoKTtcblxuICAgIGZvciAoY29uc3QgY29sdW1uIG9mIGNvbHVtbnMpIHtcbiAgICAgIGNvbnN0IGNvbElkID0gY29sdW1uLmdldENvbElkKCk7XG4gICAgICBjb25zdCBjb2xJbmRleCA9IGRpc3BsYXllZENvbHVtbklkcy5pbmRleE9mKGNvbElkKTtcblxuICAgICAgYWdHcmlkLmNvbHVtbkFwaS5zZXRDb2x1bW5WaXNpYmxlKGNvbElkLCBjb2xJbmRleCAhPT0gLTEpO1xuICAgICAgYWdHcmlkLmNvbHVtbkFwaS5tb3ZlQ29sdW1uKGNvbElkLCBjb2xJbmRleCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBzZWxlY3RBbGwoKTogdm9pZCB7XG4gICAgY29uc3QgYWdHcmlkID0gdGhpcy5hZ0dyaWRMaXN0LmZpcnN0O1xuICAgIGFnR3JpZC5hcGkuc2VsZWN0QWxsKCk7XG4gIH1cblxuICBwcml2YXRlIGNsZWFyQWxsKCk6IHZvaWQge1xuICAgIGNvbnN0IGFnR3JpZCA9IHRoaXMuYWdHcmlkTGlzdC5maXJzdDtcbiAgICBhZ0dyaWQuYXBpLmRlc2VsZWN0QWxsKCk7XG4gIH1cbn1cbiJdfQ==
231
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWctZ3JpZC1kYXRhLW1hbmFnZXItYWRhcHRlci5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9Ac2t5dXgvYWctZ3JpZC8iLCJzb3VyY2VzIjpbIm1vZHVsZXMvYWctZ3JpZC9hZy1ncmlkLWRhdGEtbWFuYWdlci1hZGFwdGVyLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUNMLGdCQUFnQixFQUNoQixpQkFBaUIsRUFDakIsZUFBZSxFQUNmLFNBQVMsRUFDVCxLQUFLLEVBQ0wsU0FBUyxFQUNULFNBQVMsRUFDVixNQUFNLGVBQWUsQ0FBQztBQUV2QixPQUFPLEVBQ0wsT0FBTyxFQUVSLE1BQU0sTUFBTSxDQUFDO0FBRWQsT0FBTyxFQUNMLE1BQU0sRUFDTixTQUFTLEVBQ1YsTUFBTSxnQkFBZ0IsQ0FBQztBQUV4QixPQUFPLEVBQ0wsYUFBYSxFQUNkLE1BQU0saUJBQWlCLENBQUM7QUFVekIsT0FBTyxFQUNMLHFCQUFxQixFQUNyQix3QkFBd0IsRUFDeEIsbUJBQW1CLEVBQ25CLGlCQUFpQixFQUNsQixNQUFNLHFCQUFxQixDQUFDO0FBRTdCLE9BQU8sRUFDTCx5QkFBeUIsRUFDMUIsTUFBTSw2QkFBNkIsQ0FBQztBQUtyQztJQWtCRSw4Q0FDVSxjQUFpQyxFQUNqQyxjQUFxQztRQURyQyxtQkFBYyxHQUFkLGNBQWMsQ0FBbUI7UUFDakMsbUJBQWMsR0FBZCxjQUFjLENBQXVCO1FBSnZDLGtCQUFhLEdBQUcsSUFBSSxPQUFPLEVBQUUsQ0FBQztJQUlhLENBQUM7SUFFN0MsaUVBQWtCLEdBQXpCO1FBQUEsaUJBY0M7UUFiQyxJQUFJLENBQUMsY0FBYyxDQUFDLG9CQUFvQixDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDO1FBRXRFLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFD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Q0FBQztJQUN6QixDQUFDO0lBRU8sdURBQVEsR0FBaEI7UUFDRSxJQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQztRQUNyQyxNQUFNLENBQUMsR0FBRyxDQUFDLFdBQVcsRUFBRSxDQUFDO0lBQzNCLENBQUM7O2dCQTFPeUIsaUJBQWlCO2dCQUNqQixxQkFBcUI7O0lBakIvQztRQURDLEtBQUssRUFBRTt3RUFDYztJQUd0QjtRQURDLGVBQWUsQ0FBQyxhQUFhLEVBQUUsRUFBRSxXQUFXLEVBQUUsSUFBSSxFQUFFLENBQUM7NEVBQ1Y7SUFHNUM7UUFEQyxlQUFlLENBQUMseUJBQXlCLEVBQUUsRUFBRSxXQUFXLEVBQUUsSUFBSSxFQUFFLENBQUM7c0ZBQ0E7SUFUdkQsb0NBQW9DO1FBSGhELFNBQVMsQ0FBQztZQUNULFFBQVEsRUFBRSwrQkFBK0I7U0FDMUMsQ0FBQztPQUNXLG9DQUFvQyxDQThQaEQ7SUFBRCwyQ0FBQztDQUFBLEFBOVBELElBOFBDO1NBOVBZLG9DQUFvQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEFmdGVyQ29udGVudEluaXQsXG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBDb250ZW50Q2hpbGRyZW4sXG4gIERpcmVjdGl2ZSxcbiAgSW5wdXQsXG4gIE9uRGVzdHJveSxcbiAgUXVlcnlMaXN0XG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQge1xuICBTdWJqZWN0LFxuICBTdWJzY3JpcHRpb25cbn0gZnJvbSAncnhqcyc7XG5cbmltcG9ydCB7XG4gIGZpbHRlcixcbiAgdGFrZVVudGlsXG59IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuaW1wb3J0IHtcbiAgQWdHcmlkQW5ndWxhclxufSBmcm9tICdhZy1ncmlkLWFuZ3VsYXInO1xuXG5pbXBvcnQge1xuICBDb2x1bW5BcGksXG4gIENvbHVtbk1vdmVkRXZlbnQsXG4gIERyYWdTdGFydGVkRXZlbnQsXG4gIERyYWdTdG9wcGVkRXZlbnQsXG4gIFJvd1NlbGVjdGVkRXZlbnRcbn0gZnJvbSAnYWctZ3JpZC1jb21tdW5pdHknO1xuXG5pbXBvcnQge1xuICBTa3lEYXRhTWFuYWdlclNlcnZpY2UsXG4gIFNreURhdGFNYW5hZ2VyU29ydE9wdGlvbixcbiAgU2t5RGF0YU1hbmFnZXJTdGF0ZSxcbiAgU2t5RGF0YVZpZXdDb25maWdcbn0gZnJvbSAnQHNreXV4L2RhdGEtbWFuYWdlcic7XG5cbmltcG9ydCB7XG4gIFNreUFnR3JpZFdyYXBwZXJDb21wb25lbnRcbn0gZnJvbSAnLi9hZy1ncmlkLXdyYXBwZXIuY29tcG9uZW50JztcblxuQERpcmVjdGl2ZSh7XG4gIHNlbGVjdG9yOiAnW3NreUFnR3JpZERhdGFNYW5hZ2VyQWRhcHRlcl0nXG59KVxuZXhwb3J0IGNsYXNzIFNreUFnR3JpZERhdGFNYW5hZ2VyQWRhcHRlckRpcmVjdGl2ZSBpbXBsZW1lbnRzIEFmdGVyQ29udGVudEluaXQsIE9uRGVzdHJveSB7XG5cbiAgQElucHV0KClcbiAgcHVibGljIHZpZXdJZDogc3RyaW5nO1xuXG4gIEBDb250ZW50Q2hpbGRyZW4oQWdHcmlkQW5ndWxhciwgeyBkZXNjZW5kYW50czogdHJ1ZSB9KVxuICBwdWJsaWMgYWdHcmlkTGlzdDogUXVlcnlMaXN0PEFnR3JpZEFuZ3VsYXI+O1xuXG4gIEBDb250ZW50Q2hpbGRyZW4oU2t5QWdHcmlkV3JhcHBlckNvbXBvbmVudCwgeyBkZXNjZW5kYW50czogdHJ1ZSB9KVxuICBwdWJsaWMgc2t5QWdHcmlkV3JhcHBlckxpc3Q6IFF1ZXJ5TGlzdDxTa3lBZ0dyaWRXcmFwcGVyQ29tcG9uZW50PjtcblxuICBwcml2YXRlIGN1cnJlbnRBZ0dyaWQ6IEFnR3JpZEFuZ3VsYXI7XG4gIHByaXZhdGUgY3VycmVudERhdGFTdGF0ZTogU2t5RGF0YU1hbmFnZXJTdGF0ZTtcbiAgcHJpdmF0ZSBjdXJyZW50U2t5QWdHcmlkV3JhcHBlcjogU2t5QWdHcmlkV3JhcHBlckNvbXBvbmVudDtcbiAgcHJpdmF0ZSBkYXRhU3RhdGVTdWI6IFN1YnNjcmlwdGlvbjtcbiAgcHJpdmF0ZSB2aWV3Q29uZmlnOiBTa3lEYXRhVmlld0NvbmZpZztcbiAgcHJpdmF0ZSBuZ1Vuc3Vic2NyaWJlID0gbmV3IFN1YmplY3QoKTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGNoYW5nZURldGVjdG9yOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBwcml2YXRlIGRhdGFNYW5hZ2VyU3ZjOiBTa3lEYXRhTWFuYWdlclNlcnZpY2UpIHsgfVxuXG4gIHB1YmxpYyBuZ0FmdGVyQ29udGVudEluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5kYXRhTWFuYWdlclN2Yy5zZXRWaWV3a2VlcGVyQ2xhc3Nlcyh0aGlzLnZpZXdJZCwgWycuYWctaGVhZGVyJ10pO1xuXG4gICAgdGhpcy52aWV3Q29uZmlnID0gdGhpcy5kYXRhTWFuYWdlclN2Yy5nZXRWaWV3QnlJZCh0aGlzLnZpZXdJZCk7XG4gICAgdGhpcy5jaGVja0ZvckFnR3JpZCgpO1xuICAgIHRoaXMuY2hlY2tGb3JTa3lBZ0dyaWRXcmFwcGVyKCk7XG5cbiAgICB0aGlzLmFnR3JpZExpc3QuY2hhbmdlc1xuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMubmdVbnN1YnNjcmliZSkpXG4gICAgICAuc3Vic2NyaWJlKCgpID0+IHRoaXMuY2hlY2tGb3JBZ0dyaWQoKSk7XG5cbiAgICB0aGlzLnNreUFnR3JpZFdyYXBwZXJMaXN0LmNoYW5nZXNcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLm5nVW5zdWJzY3JpYmUpKVxuICAgICAgLnN1YnNjcmliZSgoKSA9PiB0aGlzLmNoZWNrRm9yU2t5QWdHcmlkV3JhcHBlcigpKTtcbiAgfVxuXG4gIHB1YmxpYyBuZ09uRGVzdHJveSgpIHtcbiAgICB0aGlzLm5nVW5zdWJzY3JpYmUubmV4dCgpO1xuICAgIHRoaXMubmdVbnN1YnNjcmliZS5jb21wbGV0ZSgpO1xuICB9XG5cbiAgcHJpdmF0ZSBjaGVja0ZvckFnR3JpZCgpOiB2b2lkIHtcbiAgICBjb25zdCBhZ0dyaWRDb3VudCA9IHRoaXMuYWdHcmlkTGlzdC5sZW5ndGg7XG5cbiAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgZWxzZSAqL1xuICAgIGlmIChhZ0dyaWRDb3VudCA9PT0gMCkge1xuICAgICAgdGhpcy51bnJlZ2lzdGVyQWdHcmlkKCk7XG4gICAgfSBlbHNlIGlmICh0aGlzLmFnR3JpZExpc3QuZmlyc3QgIT09IHRoaXMuY3VycmVudEFnR3JpZCkge1xuICAgICAgdGhpcy5yZWdpc3RlckFnR3JpZCgpO1xuICAgIH1cblxuICAgIGlmIChhZ0dyaWRDb3VudCA+IDEpIHtcbiAgICAgIGNvbnNvbGUud2FybihcbiAgICAgICAgJ01vcmUgdGhhbiBvbmUgYWctZ3JpZCBjaGlsZCBjb21wb25lbnQgd2FzIGZvdW5kLiBVc2luZyB0aGUgZmlyc3QgYWctR3JpZC4nXG4gICAgICApO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgY2hlY2tGb3JTa3lBZ0dyaWRXcmFwcGVyKCk6IHZvaWQge1xuICAgIGNvbnN0IHNreUFnR3JpZFdyYXBwZXJDb3VudCA9IHRoaXMuc2t5QWdHcmlkV3JhcHBlckxpc3QubGVuZ3RoO1xuXG4gICAgLyogaXN0YW5idWwgaWdub3JlIGVsc2UgKi9cbiAgICBpZiAoc2t5QWdHcmlkV3JhcHBlckNvdW50ID09PSAwKSB7XG4gICAgICB0aGlzLnVucmVnaXN0ZXJTa3lBZ0dyaWRXcmFwcGVyKCk7XG4gICAgfSBlbHNlIGlmICh0aGlzLnNreUFnR3JpZFdyYXBwZXJMaXN0LmZpcnN0ICE9PSB0aGlzLmN1cnJlbnRTa3lBZ0dyaWRXcmFwcGVyKSB7XG4gICAgICB0aGlzLnJlZ2lzdGVyU2t5QWdHcmlkV3JhcHBlcigpO1xuICAgIH1cblxuICAgIGlmIChza3lBZ0dyaWRXcmFwcGVyQ291bnQgPiAxKSB7XG4gICAgICBjb25zb2xlLndhcm4oXG4gICAgICAgICdNb3JlIHRoYW4gb25lIGFnLWdyaWQgY2hpbGQgY29tcG9uZW50IHdhcyBmb3VuZC4gVXNpbmcgdGhlIGZpcnN0IGFnLUdyaWQuJ1xuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHVucmVnaXN0ZXJBZ0dyaWQoKTogdm9pZCB7XG4gICAgdGhpcy5jdXJyZW50QWdHcmlkID0gdW5kZWZpbmVkO1xuXG4gICAgLyogaXN0YW5idWwgaWdub3JlIGlmICovXG4gICAgaWYgKHRoaXMuZGF0YVN0YXRlU3ViKSB7XG4gICAgICB0aGlzLmRhdGFTdGF0ZVN1Yi51bnN1YnNjcmliZSgpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgdW5yZWdpc3RlclNreUFnR3JpZFdyYXBwZXIoKTogdm9pZCB7XG4gICAgdGhpcy5jdXJyZW50U2t5QWdHcmlkV3JhcHBlciA9IHVuZGVmaW5lZDtcbiAgfVxuXG4gIHByaXZhdGUgcmVnaXN0ZXJTa3lBZ0dyaWRXcmFwcGVyKCk6IHZvaWQge1xuICAgIHRoaXMudW5yZWdpc3RlclNreUFnR3JpZFdyYXBwZXIoKTtcblxuICAgIHRoaXMuY3VycmVudFNreUFnR3JpZFdyYXBwZXIgPSB0aGlzLnNreUFnR3JpZFdyYXBwZXJMaXN0LmZpcnN0O1xuXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICBpZiAodGhpcy5jdXJyZW50U2t5QWdHcmlkV3JhcHBlcikge1xuICAgICAgICB0aGlzLmN1cnJlbnRTa3lBZ0dyaWRXcmFwcGVyLnZpZXdrZWVwZXJDbGFzc2VzID0gW107XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIHJlZ2lzdGVyQWdHcmlkKCk6IHZvaWQge1xuICAgIHRoaXMudW5yZWdpc3RlckFnR3JpZCgpO1xuXG4gICAgY29uc3QgYWdHcmlkID0gdGhpcy5hZ0dyaWRMaXN0LmZpcnN0O1xuXG4gICAgdGhpcy5jdXJyZW50QWdHcmlkID0gYWdHcmlkO1xuXG4gICAgYWdHcmlkLmdyaWRSZWFkeVxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMubmdVbnN1YnNjcmliZSkpXG4gICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgdGhpcy52aWV3Q29uZmlnLm9uU2VsZWN0QWxsQ2xpY2sgPSB0aGlzLnNlbGVjdEFsbC5iaW5kKHRoaXMpO1xuICAgICAgICB0aGlzLnZpZXdDb25maWcub25DbGVhckFsbENsaWNrID0gdGhpcy5jbGVhckFsbC5iaW5kKHRoaXMpO1xuXG4gICAgICAgIHRoaXMuZGF0YU1hbmFnZXJTdmMudXBkYXRlVmlld0NvbmZpZyh0aGlzLnZpZXdDb25maWcpO1xuXG4gICAgICAgIHRoaXMuZGF0YVN0YXRlU3ViID0gdGhpcy5kYXRhTWFuYWdlclN2Yy5nZXREYXRhU3RhdGVVcGRhdGVzKHRoaXMudmlld0NvbmZpZy5pZClcbiAgICAgICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5uZ1Vuc3Vic2NyaWJlKSlcbiAgICAgICAgICAuc3Vic2NyaWJlKChkYXRhU3RhdGU6IFNreURhdGFNYW5hZ2VyU3RhdGUpID0+IHtcbiAgICAgICAgICAgIHRoaXMuY3VycmVudERhdGFTdGF0ZSA9IGRhdGFTdGF0ZTtcbiAgICAgICAgICAgIHRoaXMuZGlzcGxheUNvbHVtbnMoZGF0YVN0YXRlKTtcbiAgICAgICAgICB9KTtcblxuICAgICAgICBhZ0dyaWQuYXBpLnNpemVDb2x1bW5zVG9GaXQoKTtcbiAgICAgIH0pO1xuXG4gICAgYWdHcmlkLmNvbHVtbk1vdmVkXG4gICAgICAucGlwZShcbiAgICAgICAgdGFrZVVudGlsKHRoaXMubmdVbnN1YnNjcmliZSksXG4gICAgICAgIGZpbHRlcihcbiAgICAgICAgICAoZXZlbnQ6IENvbHVtbk1vdmVkRXZlbnQpID0+XG4gICAgICAgICAgICAhW1xuICAgICAgICAgICAgICAnZ3JpZEluaXRpYWxpemluZycsXG4gICAgICAgICAgICAgICd1aUNvbHVtblJlc2l6ZWQnLFxuICAgICAgICAgICAgICAndWlDb2x1bW5EcmFnZ2VkJyxcbiAgICAgICAgICAgICAgJ2FwaSdcbiAgICAgICAgICAgIF0uaW5jbHVkZXMoZXZlbnQuc291cmNlKVxuICAgICAgICApXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKCh2YWx1ZTogQ29sdW1uTW92ZWRFdmVudCkgPT4ge1xuICAgICAgICB0aGlzLnVwZGF0ZUNvbHVtbnNJbkN1cnJlbnREYXRhU3RhdGUodmFsdWUuY29sdW1uQXBpKTtcbiAgICAgIH0pO1xuICAgIGxldCBjdXJyZW50Q29sdW1uczogc3RyaW5nW107XG4gICAgYWdHcmlkLmRyYWdTdGFydGVkXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5uZ1Vuc3Vic2NyaWJlKSlcbiAgICAgIC5zdWJzY3JpYmUoKHZhbHVlOiBEcmFnU3RhcnRlZEV2ZW50KSA9PiB7XG4gICAgICAgIGN1cnJlbnRDb2x1bW5zID0gdGhpcy5nZXRDb2x1bW5PcmRlcih2YWx1ZS5jb2x1bW5BcGkpO1xuICAgICAgfSk7XG4gICAgYWdHcmlkLmRyYWdTdG9wcGVkXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5uZ1Vuc3Vic2NyaWJlKSlcbiAgICAgIC5zdWJzY3JpYmUoKHZhbHVlOiBEcmFnU3RvcHBlZEV2ZW50KSA9PiB7XG4gICAgICAgIGNvbnN0IG5ld0NvbHVtbnMgPSB0aGlzLmdldENvbHVtbk9yZGVyKHZhbHVlLmNvbHVtbkFwaSk7XG4gICAgICAgIGNvbnN0IGhhc0NoYW5nZWQgPSBjdXJyZW50Q29sdW1ucy5maW5kSW5kZXgoXG4gICAgICAgICAgKGNvbElkLCBpKSA9PiBjb2xJZCAhPT0gbmV3Q29sdW1uc1tpXVxuICAgICAgICApO1xuICAgICAgICBpZiAoaGFzQ2hhbmdlZCA+IC0xKSB7XG4gICAgICAgICAgdGhpcy51cGRhdGVDb2x1bW5zSW5DdXJyZW50RGF0YVN0YXRlKHZhbHVlLmNvbHVtbkFwaSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuXG4gICAgYWdHcmlkLnJvd1NlbGVjdGVkXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5uZ1Vuc3Vic2NyaWJlKSlcbiAgICAgIC5zdWJzY3JpYmUoKGV2ZW50OiBSb3dTZWxlY3RlZEV2ZW50KSA9PiB7XG4gICAgICAgIGNvbnN0IHJvdyA9IGV2ZW50Lm5vZGU7XG4gICAgICAgIGxldCBzZWxlY3RlZElkcyA9IHRoaXMuY3VycmVudERhdGFTdGF0ZS5zZWxlY3RlZElkcyB8fCBbXTtcbiAgICAgICAgY29uc3Qgcm93SW5kZXggPSBzZWxlY3RlZElkcy5pbmRleE9mKHJvdy5kYXRhLmlkKTtcblxuICAgICAgICBpZiAocm93LmlzU2VsZWN0ZWQoKSAmJiByb3dJbmRleCA9PT0gLTEpIHtcbiAgICAgICAgICBzZWxlY3RlZElkcy5wdXNoKHJvdy5kYXRhLmlkKTtcbiAgICAgICAgfSBlbHNlIGlmICghcm93LmlzU2VsZWN0ZWQoKSAmJiByb3dJbmRleCAhPT0gLTEpIHtcbiAgICAgICAgICBzZWxlY3RlZElkcy5zcGxpY2Uocm93SW5kZXgsIDEpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5jdXJyZW50RGF0YVN0YXRlLnNlbGVjdGVkSWRzID0gc2VsZWN0ZWRJZHM7XG4gICAgICAgIHRoaXMuZGF0YU1hbmFnZXJTdmMudXBkYXRlRGF0YVN0YXRlKHRoaXMuY3VycmVudERhdGFTdGF0ZSwgdGhpcy52aWV3Q29uZmlnLmlkKTtcbiAgICAgICAgdGhpcy5jaGFuZ2VEZXRlY3Rvci5tYXJrRm9yQ2hlY2soKTtcbiAgICAgIH0pO1xuXG4gICAgYWdHcmlkLnNvcnRDaGFuZ2VkXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5uZ1Vuc3Vic2NyaWJlKSlcbiAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICBjb25zdCBncmlkU29ydE1vZGVsID0gYWdHcmlkLmFwaS5nZXRTb3J0TW9kZWwoKTtcbiAgICAgICAgbGV0IHNvcnRPcHRpb246IFNreURhdGFNYW5hZ2VyU29ydE9wdGlvbjtcblxuICAgICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgZWxzZSAqL1xuICAgICAgICBpZiAoZ3JpZFNvcnRNb2RlbC5sZW5ndGgpIHtcbiAgICAgICAgICBjb25zdCBhY3RpdmVTb3J0TW9kZWwgPSBncmlkU29ydE1vZGVsWzBdO1xuICAgICAgICAgIGNvbnN0IGFjdGl2ZVNvcnRDb2x1bW4gPSBhZ0dyaWQuY29sdW1uQXBpLmdldENvbHVtbihhY3RpdmVTb3J0TW9kZWwuY29sSWQpO1xuICAgICAgICAgIGNvbnN0IGRhdGFNYW5hZ2VyQ29uZmlnID0gdGhpcy5kYXRhTWFuYWdlclN2Yy5nZXRDdXJyZW50RGF0YU1hbmFnZXJDb25maWcoKTtcblxuICAgICAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBlbHNlICovXG4gICAgICAgICAgaWYgKGRhdGFNYW5hZ2VyQ29uZmlnLnNvcnRPcHRpb25zKSB7XG4gICAgICAgICAgICBzb3J0T3B0aW9uID0gZGF0YU1hbmFnZXJDb25maWcuc29ydE9wdGlvbnMuZmluZCgob3B0aW9uOiBTa3lEYXRhTWFuYWdlclNvcnRPcHRpb24pID0+IHtcbiAgICAgICAgICAgICAgcmV0dXJuIG9wdGlvbi5wcm9wZXJ0eU5hbWUgPT09IGFjdGl2ZVNvcnRDb2x1bW4uZ2V0Q29sRGVmKCkuZmllbGQgJiZcbiAgICAgICAgICAgICAgICBvcHRpb24uZGVzY2VuZGluZyA9PT0gKGFjdGl2ZVNvcnRNb2RlbC5zb3J0ID09PSAnZGVzYycpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHNvcnRPcHRpb24gPSB1bmRlZmluZWQ7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHRoaXMuY3VycmVudERhdGFTdGF0ZS5hY3RpdmVTb3J0T3B0aW9uID0gc29ydE9wdGlvbjtcbiAgICAgICAgdGhpcy5kYXRhTWFuYWdlclN2Yy51cGRhdGVEYXRhU3RhdGUodGhpcy5jdXJyZW50RGF0YVN0YXRlLCB0aGlzLnZpZXdDb25maWcuaWQpO1xuICAgICAgfSk7XG4gIH1cblxuICBwcml2YXRlIHVwZGF0ZUNvbHVtbnNJbkN1cnJlbnREYXRhU3RhdGUoY29sdW1uQXBpOiBDb2x1bW5BcGkpIHtcbiAgICBjb25zdCBjb2x1bW5PcmRlciA9IHRoaXMuZ2V0Q29sdW1uT3JkZXIoY29sdW1uQXBpKTtcblxuICAgIGNvbnN0IHZpZXdTdGF0ZSA9IHRoaXMuY3VycmVudERhdGFTdGF0ZS5nZXRWaWV3U3RhdGVCeUlkKFxuICAgICAgdGhpcy52aWV3Q29uZmlnLmlkXG4gICAgKTtcbiAgICB2aWV3U3RhdGUuZGlzcGxheWVkQ29sdW1uSWRzID0gY29sdW1uT3JkZXI7XG5cbiAgICB0aGlzLmRhdGFNYW5hZ2VyU3ZjLnVwZGF0ZURhdGFTdGF0ZShcbiAgICAgIHRoaXMuY3VycmVudERhdGFTdGF0ZS5hZGRPclVwZGF0ZVZpZXcodGhpcy52aWV3Q29uZmlnLmlkLCB2aWV3U3RhdGUpLFxuICAgICAgdGhpcy52aWV3Q29uZmlnLmlkXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0Q29sdW1uT3JkZXIoY29sdW1uQXBpOiBDb2x1bW5BcGkpOiBzdHJpbmdbXSB7XG4gICAgcmV0dXJuIGNvbHVtbkFwaVxuICAgICAgLmdldEFsbERpc3BsYXllZFZpcnR1YWxDb2x1bW5zKClcbiAgICAgIC5tYXAoKGNvbCkgPT4gY29sLmdldENvbERlZigpLmNvbElkKTtcbiAgfVxuXG4gIHByaXZhdGUgZGlzcGxheUNvbHVtbnMoZGF0YVN0YXRlOiBTa3lEYXRhTWFuYWdlclN0YXRlKTogdm9pZCB7XG4gICAgY29uc3QgYWdHcmlkID0gdGhpcy5jdXJyZW50QWdHcmlkO1xuICAgIGNvbnN0IHZpZXdTdGF0ZSA9IGRhdGFTdGF0ZS5nZXRWaWV3U3RhdGVCeUlkKHRoaXMudmlld0NvbmZpZy5pZCk7XG4gICAgbGV0IGRpc3BsYXllZENvbHVtbklkczogc3RyaW5nW10gPSBbXTtcbiAgICAvKmlzdGFuYnVsIGlnbm9yZSBlbHNlKi9cbiAgICBpZiAodmlld1N0YXRlLmRpc3BsYXllZENvbHVtbklkcykge1xuICAgICAgZGlzcGxheWVkQ29sdW1uSWRzID0gdmlld1N0YXRlLmRpc3BsYXllZENvbHVtbklkcztcbiAgICB9XG4gICAgY29uc3QgY29sdW1ucyA9IGFnR3JpZC5jb2x1bW5BcGkuZ2V0QWxsQ29sdW1ucygpO1xuXG4gICAgZm9yIChjb25zdCBjb2x1bW4gb2YgY29sdW1ucykge1xuICAgICAgY29uc3QgY29sSWQgPSBjb2x1bW4uZ2V0Q29sSWQoKTtcbiAgICAgIGNvbnN0IGNvbEluZGV4ID0gZGlzcGxheWVkQ29sdW1uSWRzLmluZGV4T2YoY29sSWQpO1xuXG4gICAgICBhZ0dyaWQuY29sdW1uQXBpLnNldENvbHVtblZpc2libGUoY29sSWQsIGNvbEluZGV4ICE9PSAtMSk7XG4gICAgICBhZ0dyaWQuY29sdW1uQXBpLm1vdmVDb2x1bW4oY29sSWQsIGNvbEluZGV4KTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHNlbGVjdEFsbCgpOiB2b2lkIHtcbiAgICBjb25zdCBhZ0dyaWQgPSB0aGlzLmFnR3JpZExpc3QuZmlyc3Q7XG4gICAgYWdHcmlkLmFwaS5zZWxlY3RBbGwoKTtcbiAgfVxuXG4gIHByaXZhdGUgY2xlYXJBbGwoKTogdm9pZCB7XG4gICAgY29uc3QgYWdHcmlkID0gdGhpcy5hZ0dyaWRMaXN0LmZpcnN0O1xuICAgIGFnR3JpZC5hcGkuZGVzZWxlY3RBbGwoKTtcbiAgfVxufVxuIl19
@@ -7,7 +7,7 @@ import { SkyDataManagerService, SkyDataManagerModule } from '@skyux/data-manager
7
7
  import { SkyInlineDeleteModule } from '@skyux/layout';
8
8
  import { SkyLibResourcesService, getStringForLocale, SKY_LIB_RESOURCES_PROVIDERS, SkyI18nModule } from '@skyux/i18n';
9
9
  import { Subject } from 'rxjs';
10
- import { takeUntil } from 'rxjs/operators';
10
+ import { takeUntil, filter } from 'rxjs/operators';
11
11
  import { SkyThemeService } from '@skyux/theme';
12
12
  import { PopupComponent, RowNode, Events } from 'ag-grid-community';
13
13
  import { FormGroup, FormControl, FormsModule, ReactiveFormsModule } from '@angular/forms';
@@ -1224,13 +1224,28 @@ let SkyAgGridDataManagerAdapterDirective = class SkyAgGridDataManagerAdapterDire
1224
1224
  agGrid.api.sizeColumnsToFit();
1225
1225
  });
1226
1226
  agGrid.columnMoved
1227
+ .pipe(takeUntil(this.ngUnsubscribe), filter((event) => ![
1228
+ 'gridInitializing',
1229
+ 'uiColumnResized',
1230
+ 'uiColumnDragged',
1231
+ 'api'
1232
+ ].includes(event.source)))
1233
+ .subscribe((value) => {
1234
+ this.updateColumnsInCurrentDataState(value.columnApi);
1235
+ });
1236
+ let currentColumns;
1237
+ agGrid.dragStarted
1227
1238
  .pipe(takeUntil(this.ngUnsubscribe))
1228
- .subscribe((event) => {
1229
- let columnOrder = agGrid.columnApi.getAllDisplayedVirtualColumns().map(col => col.getColDef().colId);
1230
- if (event.source !== 'api') {
1231
- const viewState = this.currentDataState.getViewStateById(this.viewConfig.id);
1232
- viewState.displayedColumnIds = columnOrder;
1233
- this.dataManagerSvc.updateDataState(this.currentDataState.addOrUpdateView(this.viewConfig.id, viewState), this.viewConfig.id);
1239
+ .subscribe((value) => {
1240
+ currentColumns = this.getColumnOrder(value.columnApi);
1241
+ });
1242
+ agGrid.dragStopped
1243
+ .pipe(takeUntil(this.ngUnsubscribe))
1244
+ .subscribe((value) => {
1245
+ const newColumns = this.getColumnOrder(value.columnApi);
1246
+ const hasChanged = currentColumns.findIndex((colId, i) => colId !== newColumns[i]);
1247
+ if (hasChanged > -1) {
1248
+ this.updateColumnsInCurrentDataState(value.columnApi);
1234
1249
  }
1235
1250
  });
1236
1251
  agGrid.rowSelected
@@ -1274,6 +1289,17 @@ let SkyAgGridDataManagerAdapterDirective = class SkyAgGridDataManagerAdapterDire
1274
1289
  this.dataManagerSvc.updateDataState(this.currentDataState, this.viewConfig.id);
1275
1290
  });
1276
1291
  }
1292
+ updateColumnsInCurrentDataState(columnApi) {
1293
+ const columnOrder = this.getColumnOrder(columnApi);
1294
+ const viewState = this.currentDataState.getViewStateById(this.viewConfig.id);
1295
+ viewState.displayedColumnIds = columnOrder;
1296
+ this.dataManagerSvc.updateDataState(this.currentDataState.addOrUpdateView(this.viewConfig.id, viewState), this.viewConfig.id);
1297
+ }
1298
+ getColumnOrder(columnApi) {
1299
+ return columnApi
1300
+ .getAllDisplayedVirtualColumns()
1301
+ .map((col) => col.getColDef().colId);
1302
+ }
1277
1303
  displayColumns(dataState) {
1278
1304
  const agGrid = this.currentAgGrid;
1279
1305
  const viewState = dataState.getViewStateById(this.viewConfig.id);