@skyux/data-manager 9.16.2 → 9.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.
- package/documentation.json +1058 -836
- package/esm2022/lib/modules/data-manager/data-manager.component.mjs +33 -4
- package/esm2022/lib/modules/data-manager/data-manager.service.mjs +23 -1
- package/esm2022/lib/modules/data-manager/models/data-manager-summary-change.mjs +2 -0
- package/esm2022/lib/modules/data-manager/models/data-manager-summary.mjs +2 -0
- package/esm2022/lib/modules/shared/sky-data-manager-resources.module.mjs +10 -1
- package/fesm2022/skyux-data-manager.mjs +61 -2
- package/fesm2022/skyux-data-manager.mjs.map +1 -1
- package/lib/modules/data-manager/data-manager.service.d.ts +17 -0
- package/lib/modules/data-manager/models/data-manager-summary-change.d.ts +9 -0
- package/lib/modules/data-manager/models/data-manager-summary.d.ts +13 -0
- package/package.json +9 -9
@@ -1,9 +1,10 @@
|
|
1
1
|
import { CommonModule } from '@angular/common';
|
2
2
|
import { ChangeDetectionStrategy, ChangeDetectorRef, Component, inject, } from '@angular/core';
|
3
|
-
import { SkyViewkeeperModule } from '@skyux/core';
|
3
|
+
import { SkyLiveAnnouncerService, SkyViewkeeperModule } from '@skyux/core';
|
4
|
+
import { SkyLibResourcesService } from '@skyux/i18n';
|
4
5
|
import { SkyBackToTopMessageType, SkyBackToTopModule, } from '@skyux/layout';
|
5
6
|
import { Subject } from 'rxjs';
|
6
|
-
import { takeUntil } from 'rxjs/operators';
|
7
|
+
import { take, takeUntil } from 'rxjs/operators';
|
7
8
|
import { SkyDataManagerService } from './data-manager.service';
|
8
9
|
import * as i0 from "@angular/core";
|
9
10
|
import * as i1 from "@angular/common";
|
@@ -26,6 +27,8 @@ export class SkyDataManagerComponent {
|
|
26
27
|
this.#_currentViewkeeperClasses = VIEWKEEPER_CLASSES_DEFAULT;
|
27
28
|
this.#changeDetection = inject(ChangeDetectorRef);
|
28
29
|
this.#dataManagerService = inject(SkyDataManagerService);
|
30
|
+
this.#liveAnnouncer = inject(SkyLiveAnnouncerService);
|
31
|
+
this.#resourceSvc = inject(SkyLibResourcesService);
|
29
32
|
}
|
30
33
|
get currentViewkeeperClasses() {
|
31
34
|
return this.#_currentViewkeeperClasses;
|
@@ -48,15 +51,33 @@ export class SkyDataManagerComponent {
|
|
48
51
|
#allViewkeeperClasses;
|
49
52
|
#ngUnsubscribe;
|
50
53
|
#sourceId;
|
54
|
+
#dataState;
|
51
55
|
#_isInitialized;
|
52
56
|
#_currentViewkeeperClasses;
|
53
57
|
#changeDetection;
|
54
58
|
#dataManagerService;
|
59
|
+
#liveAnnouncer;
|
60
|
+
#resourceSvc;
|
55
61
|
ngOnInit() {
|
56
62
|
this.#dataManagerService
|
57
63
|
.getDataStateUpdates(this.#sourceId)
|
58
64
|
.pipe(takeUntil(this.#ngUnsubscribe))
|
59
|
-
.subscribe(() =>
|
65
|
+
.subscribe((state) => {
|
66
|
+
this.isInitialized = true;
|
67
|
+
this.#dataState = state;
|
68
|
+
});
|
69
|
+
this.#dataManagerService
|
70
|
+
.getDataSummaryUpdates(this.#sourceId)
|
71
|
+
.pipe(takeUntil(this.#ngUnsubscribe))
|
72
|
+
.subscribe((summary) => {
|
73
|
+
const itemsSelected = this.#dataState?.selectedIds?.length || 0;
|
74
|
+
const resourceString = `skyux_data_manager_status_update_${this.#dataState?.onlyShowSelected
|
75
|
+
? 'only_selected'
|
76
|
+
: itemsSelected
|
77
|
+
? 'with_selections'
|
78
|
+
: 'without_selections'}`;
|
79
|
+
this.#announceState(resourceString, summary.itemsMatching, summary.totalItems, itemsSelected);
|
80
|
+
});
|
60
81
|
this.#dataManagerService.viewkeeperClasses
|
61
82
|
.pipe(takeUntil(this.#ngUnsubscribe))
|
62
83
|
.subscribe((classes) => {
|
@@ -81,6 +102,14 @@ export class SkyDataManagerComponent {
|
|
81
102
|
this.#ngUnsubscribe.next();
|
82
103
|
this.#ngUnsubscribe.complete();
|
83
104
|
}
|
105
|
+
#announceState(resourceString, itemsMatching, totalItems, itemsSelected) {
|
106
|
+
this.#resourceSvc
|
107
|
+
.getString(resourceString, itemsMatching, totalItems, itemsSelected)
|
108
|
+
.pipe(take(1))
|
109
|
+
.subscribe((internationalizedString) => {
|
110
|
+
this.#liveAnnouncer.announce(internationalizedString);
|
111
|
+
});
|
112
|
+
}
|
84
113
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.9", ngImport: i0, type: SkyDataManagerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
85
114
|
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.9", type: SkyDataManagerComponent, isStandalone: true, selector: "sky-data-manager", ngImport: i0, template: "<div\n *ngIf=\"isInitialized\"\n class=\"sky-data-manager\"\n [skyBackToTop]=\"backToTopOptions\"\n [skyBackToTopMessageStream]=\"backToTopController\"\n [skyViewkeeper]=\"currentViewkeeperClasses\"\n #dataManager\n>\n <ng-content />\n</div>\n", dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: SkyBackToTopModule }, { kind: "directive", type: i2.λ7, selector: "[skyBackToTop]", inputs: ["skyBackToTop", "skyBackToTopMessageStream"] }, { kind: "ngmodule", type: SkyViewkeeperModule }, { kind: "directive", type: i3.λ3, selector: "[skyViewkeeper]", inputs: ["skyViewkeeper"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
86
115
|
}
|
@@ -88,4 +117,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.9", ngImpor
|
|
88
117
|
type: Component,
|
89
118
|
args: [{ standalone: true, selector: 'sky-data-manager', changeDetection: ChangeDetectionStrategy.OnPush, imports: [CommonModule, SkyBackToTopModule, SkyViewkeeperModule], template: "<div\n *ngIf=\"isInitialized\"\n class=\"sky-data-manager\"\n [skyBackToTop]=\"backToTopOptions\"\n [skyBackToTopMessageStream]=\"backToTopController\"\n [skyViewkeeper]=\"currentViewkeeperClasses\"\n #dataManager\n>\n <ng-content />\n</div>\n" }]
|
90
119
|
}] });
|
91
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YS1tYW5hZ2VyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tcG9uZW50cy9kYXRhLW1hbmFnZXIvc3JjL2xpYi9tb2R1bGVzL2RhdGEtbWFuYWdlci9kYXRhLW1hbmFnZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21wb25lbnRzL2RhdGEtbWFuYWdlci9zcmMvbGliL21vZHVsZXMvZGF0YS1tYW5hZ2VyL2RhdGEtbWFuYWdlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUNMLHVCQUF1QixFQUN2QixpQkFBaUIsRUFDakIsU0FBUyxFQUdULE1BQU0sR0FDUCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDbEQsT0FBTyxFQUVMLHVCQUF1QixFQUN2QixrQkFBa0IsR0FDbkIsTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMvQixPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFM0MsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7Ozs7O0FBRS9ELE1BQU0sMEJBQTBCLEdBQUcsQ0FBQywyQkFBMkIsQ0FBQyxDQUFDO0FBRWpFOztHQUVHO0FBUUgsTUFBTSxPQUFPLHVCQUF1QjtJQVBwQztRQTZCUyx3QkFBbUIsR0FBRyxJQUFJLE9BQU8sRUFBdUIsQ0FBQztRQUV6RCxxQkFBZ0IsR0FBRztZQUN4QixZQUFZLEVBQUUsSUFBSTtTQUNuQixDQUFDO1FBR0YsMEJBQXFCLEdBQTZCLEVBQUUsQ0FBQztRQUNyRCxtQkFBYyxHQUFHLElBQUksT0FB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bkMsU0FBUztpQ0FDSSxJQUFJLFlBQ04sa0JBQWtCLG1CQUVYLHVCQUF1QixDQUFDLE1BQU0sV0FDdEMsQ0FBQyxZQUFZLEVBQUUsa0JBQWtCLEVBQUUsbUJBQW1CLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBDb21wb25lbnQsXG4gIE9uRGVzdHJveSxcbiAgT25Jbml0LFxuICBpbmplY3QsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgU2t5Vmlld2tlZXBlck1vZHVsZSB9IGZyb20gJ0Bza3l1eC9jb3JlJztcbmltcG9ydCB7XG4gIFNreUJhY2tUb1RvcE1lc3NhZ2UsXG4gIFNreUJhY2tUb1RvcE1lc3NhZ2VUeXBlLFxuICBTa3lCYWNrVG9Ub3BNb2R1bGUsXG59IGZyb20gJ0Bza3l1eC9sYXlvdXQnO1xuXG5pbXBvcnQgeyBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyB0YWtlVW50aWwgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbmltcG9ydCB7IFNreURhdGFNYW5hZ2VyU2VydmljZSB9IGZyb20gJy4vZGF0YS1tYW5hZ2VyLnNlcnZpY2UnO1xuXG5jb25zdCBWSUVXS0VFUEVSX0NMQVNTRVNfREVGQVVMVCA9IFsnLnNreS1kYXRhLW1hbmFnZXItdG9vbGJhciddO1xuXG4vKipcbiAqIFRoZSB0b3AtbGV2ZWwgZGF0YSBtYW5hZ2VyIGNvbXBvbmVudC4gUHJvdmlkZSBgU2t5RGF0YU1hbmFnZXJTZXJ2aWNlYCBhdCB0aGlzIGxldmVsLlxuICovXG5AQ29tcG9uZW50KHtcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgc2VsZWN0b3I6ICdza3ktZGF0YS1tYW5hZ2VyJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2RhdGEtbWFuYWdlci5jb21wb25lbnQuaHRtbCcsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBTa3lCYWNrVG9Ub3BNb2R1bGUsIFNreVZpZXdrZWVwZXJNb2R1bGVdLFxufSlcbmV4cG9ydCBjbGFzcyBTa3lEYXRhTWFuYWdlckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uRGVzdHJveSwgT25Jbml0IHtcbiAgcHVibGljIGdldCBjdXJyZW50Vmlld2tlZXBlckNsYXNzZXMoKTogc3RyaW5nW10ge1xuICAgIHJldHVybiB0aGlzLiNfY3VycmVudFZpZXdrZWVwZXJDbGFzc2VzO1xuICB9XG5cbiAgcHVibGljIHNldCBjdXJyZW50Vmlld2tlZXBlckNsYXNzZXModmFsdWU6IHN0cmluZ1tdIHwgdW5kZWZpbmVkKSB7XG4gICAgdGhpcy4jX2N1cnJlbnRWaWV3a2VlcGVyQ2xhc3NlcyA9IFtcbiAgICAgIC4uLlZJRVdLRUVQRVJfQ0xBU1NFU19ERUZBVUxULFxuICAgICAgLi4uKHZhbHVlIHx8IFtdKSxcbiAgICBdO1xuICAgIHRoaXMuI2NoYW5nZURldGVjdGlvbi5tYXJrRm9yQ2hlY2soKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgaXNJbml0aWFsaXplZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy4jX2lzSW5pdGlhbGl6ZWQ7XG4gIH1cblxuICBwdWJsaWMgc2V0IGlzSW5pdGlhbGl6ZWQodmFsdWU6IGJvb2xlYW4pIHtcbiAgICB0aGlzLiNfaXNJbml0aWFsaXplZCA9IHZhbHVlO1xuICAgIHRoaXMuI2NoYW5nZURldGVjdGlvbi5tYXJrRm9yQ2hlY2soKTtcbiAgfVxuXG4gIHB1YmxpYyBiYWNrVG9Ub3BDb250cm9sbGVyID0gbmV3IFN1YmplY3Q8U2t5QmFja1RvVG9wTWVzc2FnZT4oKTtcblxuICBwdWJsaWMgYmFja1RvVG9wT3B0aW9ucyA9IHtcbiAgICBidXR0b25IaWRkZW46IHRydWUsXG4gIH07XG5cbiAgI2FjdGl2ZVZpZXdJZDogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICAjYWxsVmlld2tlZXBlckNsYXNzZXM6IFJlY29yZDxzdHJpbmcsIHN0cmluZ1tdPiA9IHt9O1xuICAjbmdVbnN1YnNjcmliZSA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG4gICNzb3VyY2VJZCA9ICdkYXRhTWFuYWdlckNvbXBvbmVudCc7XG5cbiAgI19pc0luaXRpYWxpemVkID0gZmFsc2U7XG4gICNfY3VycmVudFZpZXdrZWVwZXJDbGFzc2VzID0gVklFV0tFRVBFUl9DTEFTU0VTX0RFRkFVTFQ7XG5cbiAgcmVhZG9ubHkgI2NoYW5nZURldGVjdGlvbiA9IGluamVjdChDaGFuZ2VEZXRlY3RvclJlZik7XG4gIHJlYWRvbmx5ICNkYXRhTWFuYWdlclNlcnZpY2UgPSBpbmplY3QoU2t5RGF0YU1hbmFnZXJTZXJ2aWNlKTtcblxuICBwdWJsaWMgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy4jZGF0YU1hbmFnZXJTZXJ2aWNlXG4gICAgICAuZ2V0RGF0YVN0YXRlVXBkYXRlcyh0aGlzLiNzb3VyY2VJZClcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLiNuZ1Vuc3Vic2NyaWJlKSlcbiAgICAgIC5zdWJzY3JpYmUoKCkgPT4gKHRoaXMuaXNJbml0aWFsaXplZCA9IHRydWUpKTtcblxuICAgIHRoaXMuI2RhdGFNYW5hZ2VyU2VydmljZS52aWV3a2VlcGVyQ2xhc3Nlc1xuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuI25nVW5zdWJzY3JpYmUpKVxuICAgICAgLnN1YnNjcmliZSgoY2xhc3NlcykgPT4ge1xuICAgICAgICB0aGlzLiNhbGxWaWV3a2VlcGVyQ2xhc3NlcyA9IGNsYXNzZXM7XG4gICAgICAgIHRoaXMuY3VycmVudFZpZXdrZWVwZXJDbGFzc2VzID0gdGhpcy4jYWN0aXZlVmlld0lkXG4gICAgICAgICAgPyBjbGFzc2VzW3RoaXMuI2FjdGl2ZVZpZXdJZF1cbiAgICAgICAgICA6IHVuZGVmaW5lZDtcbiAgICAgIH0pO1xuXG4gICAgdGhpcy4jZGF0YU1hbmFnZXJTZXJ2aWNlXG4gICAgICAuZ2V0QWN0aXZlVmlld0lkVXBkYXRlcygpXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy4jbmdVbnN1YnNjcmliZSkpXG4gICAgICAuc3Vic2NyaWJlKChhY3RpdmVWaWV3SWQpID0+IHtcbiAgICAgICAgdGhpcy4jYWN0aXZlVmlld0lkID0gYWN0aXZlVmlld0lkO1xuICAgICAgICB0aGlzLmJhY2tUb1RvcENvbnRyb2xsZXIubmV4dCh7XG4gICAgICAgICAgdHlwZTogU2t5QmFja1RvVG9wTWVzc2FnZVR5cGUuQmFja1RvVG9wLFxuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5jdXJyZW50Vmlld2tlZXBlckNsYXNzZXMgPVxuICAgICAgICAgIHRoaXMuI2FsbFZpZXdrZWVwZXJDbGFzc2VzW3RoaXMuI2FjdGl2ZVZpZXdJZF07XG4gICAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLiNuZ1Vuc3Vic2NyaWJlLm5leHQoKTtcbiAgICB0aGlzLiNuZ1Vuc3Vic2NyaWJlLmNvbXBsZXRlKCk7XG4gIH1cbn1cbiIsIjxkaXZcbiAgKm5nSWY9XCJpc0luaXRpYWxpemVkXCJcbiAgY2xhc3M9XCJza3ktZGF0YS1tYW5hZ2VyXCJcbiAgW3NreUJhY2tUb1RvcF09XCJiYWNrVG9Ub3BPcHRpb25zXCJcbiAgW3NreUJhY2tUb1RvcE1lc3NhZ2VTdHJlYW1dPVwiYmFja1RvVG9wQ29udHJvbGxlclwiXG4gIFtza3lWaWV3a2VlcGVyXT1cImN1cnJlbnRWaWV3a2VlcGVyQ2xhc3Nlc1wiXG4gICNkYXRhTWFuYWdlclxuPlxuICA8bmctY29udGVudCAvPlxuPC9kaXY+XG4iXX0=
|
120
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YS1tYW5hZ2VyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tcG9uZW50cy9kYXRhLW1hbmFnZXIvc3JjL2xpYi9tb2R1bGVzL2RhdGEtbWFuYWdlci9kYXRhLW1hbmFnZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21wb25lbnRzL2RhdGEtbWFuYWdlci9zcmMvbGliL21vZHVsZXMvZGF0YS1tYW5hZ2VyL2RhdGEtbWFuYWdlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUNMLHVCQUF1QixFQUN2QixpQkFBaUIsRUFDakIsU0FBUyxFQUdULE1BQU0sR0FDUCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsdUJBQXVCLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDM0UsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQ3JELE9BQU8sRUFFTCx1QkFBdUIsRUFDdkIsa0JBQWtCLEdBQ25CLE1BQU0sZUFBZSxDQUFDO0FBRXZCLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDL0IsT0FBTyxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUVqRCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQzs7Ozs7QUFJL0QsTUFBTSwwQkFBMEIsR0FBRyxDQUFDLDJCQUEyQixDQUFDLENBQUM7QUFFakU7O0dBRUc7QUFRSCxNQUFNLE9BQU8sdUJBQXVCO0lBUHBDO1FBNkJTLHdCQUFtQixHQUFHLElBQUksT0FBTyxFQUF1QixDQUFDO1FBRXpELHFCQUFnQixHQUFHO1lBQ3hCLFlBQVksRUFBRSxJQUFJO1NBQ25CLENBQUM7UUFHRiwwQkFBcUIsR0FBNkIsRUFBRSxDQUFDO1FBQ3JELG1CQUFjLEdBQUcsSUFBSSxPQUFPLEVBQVEsQ0FBQztRQUNyQyxjQUFTLEdBQUcsc0JBQXNCLENBQUM7UUFHbkMsb0JBQWUsR0FBRyxLQUFLLENBQUM7UUFDeEIsK0JBQTBCLEdBQUcsMEJBQTBCLENBQUM7UUFFL0MscUJBQWdCLEdBQUcsTUFBTSxDQUFDLGlCQUFpQixDQUFDLENBQUM7UUFDN0Msd0JBQW1CLEdBQUcsTUFBTSxDQUFDLHFCQUFxQixDQUFDLENBQUM7UUFDcEQsbUJBQWMsR0FBRyxNQUFNLENBQUMsdUJBQXVCLENBQUMsQ0FBQztRQUNqRCxpQkFBWSxHQUFHLE1BQU0sQ0FBQyxzQkFBc0IsQ0FBQyxDQUFDO0tBd0V4RDtJQS9HQyxJQUFXLHdCQUF3QjtRQUNqQyxPQUFPLElBQUksQ0FBQywwQkFBMEIsQ0FBQztJQUN6QyxDQUFDO0lBRUQsSUFBVyx3QkFBd0IsQ0FBQyxLQUEyQjtRQUM3RCxJQUFJLENBQUMsMEJBQTBCLEdBQUc7WUFDaEMsR0FBRywwQkFBMEI7WUFDN0IsR0FBRyxDQUFDLEtBQUssSUFBSSxFQUFFLENBQUM7U0FDakIsQ0FBQztRQUNGLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUN2QyxDQUFDO0lBRUQsSUFBVyxhQUFhO1FBQ3RCLE9BQU8sSUFBSSxDQUFDLGVBQWUsQ0FBQztJQUM5QixDQUFDO0lBRUQsSUFBVyxhQUFhLENBQUMsS0FBYztRQUNyQyxJQUFJLENBQUMsZUFBZSxHQUFHLEtBQUssQ0FBQztRQUM3QixJQUFJLENBQUMsZ0JBQWdCLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDdkMsQ0FBQztJQVFELGFBQWEsQ0FBcUI7SUFDbEMscUJBQXFCLENBQWdDO0lBQ3JELGNBQWMsQ0FBdUI7SUFDckMsU0FBUyxDQUEwQjtJQUNuQyxVQUFVLENBQWtDO0lBRTVDLGVBQWUsQ0FBUztJQUN4QiwwQkFBMEIsQ0FBOEI7SUFFL0MsZ0JBQWdCLENBQTZCO0lBQzdDLG1CQUFtQixDQUFpQztJQUNwRCxjQUFjLENBQW1DO0lBQ2pELFlBQVksQ0FBa0M7SUFFaEQsUUFBUTtRQUNiLElBQUksQ0FBQyxtQkFBbUI7YUFDckIsbUJBQW1CLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQzthQUNuQyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQzthQUNwQyxTQUFTLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRTtZQUNuQixJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQztZQUMxQixJQUFJLENBQUMsVUFBVSxHQUFHLEtBQUssQ0FBQztRQUMxQixDQUFDLENBQUMsQ0FBQztRQUVMLElBQUksQ0FBQyxtQkFBbUI7YUFDckIscUJBQXFCLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQzthQUNyQyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQzthQUNwQyxTQUFTLENBQUMsQ0FBQyxPQUE4QixFQUFFLEVBQUU7WUFDNUMsTUFBTSxhQUFhLEdBQUcsSUFBSSxDQUFDLFVBQVUsRUFBRSxXQUFXLEVBQUUsTUFBTSxJQUFJLENBQUMsQ0FBQztZQUNoRSxNQUFNLGNBQWMsR0FBRyxvQ0FDckIsSUFBSSxDQUFDLFVBQVUsRUFBRSxnQkFBZ0I7Z0JBQy9CLENBQUMsQ0FBQyxlQUFlO2dCQUNqQixDQUFDLENBQUMsYUFBYTtvQkFDZixDQUFDLENBQUMsaUJBQWlCO29CQUNuQixDQUFDLENBQUMsb0JBQ04sRUFBRSxDQUFDO1lBRUgsSUFBSSxDQUFDLGNBQWMsQ0FDakIsY0FBYyxFQUNkLE9BQU8sQ0FBQyxhQUFhLEVBQ3JCLE9BQU8sQ0FBQyxVQUFVLEVBQ2xCLGFBQWEsQ0FDZCxDQUFDO1FBQ0osQ0FBQyxDQUFDLENBQUM7UUFFTCxJQUFJLENBQUMsbUJBQW1CLENBQUMsaUJBQWlCO2FBQ3ZDLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDO2FBQ3BDLFNBQVMsQ0FBQyxDQUFDLE9BQU8sRUFBRSxFQUFFO1lBQ3JCLElBQUksQ0FBQyxxQkFBcUIsR0FBRyxPQUFPLENBQUM7WUFDckMsSUFBSSxDQUFDLHdCQUF3QixHQUFHLElBQUksQ0FBQyxhQUFhO2dCQUNoRCxDQUFDLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUM7Z0JBQzdCLENBQUMsQ0FBQyxTQUFTLENBQUM7UUFDaEIsQ0FBQyxDQUFDLENBQUM7UUFFTCxJQUFJLENBQUMsbUJBQW1CO2FBQ3JCLHNCQUFzQixFQUFFO2FBQ3hCLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDO2FBQ3BDLFNBQVMsQ0FBQyxDQUFDLFlBQVksRUFBRSxFQUFFO1lBQzFCLElBQUksQ0FBQyxhQUFhLEdBQUcsWUFBWSxDQUFDO1lBQ2xDLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLENBQUM7Z0JBQzVCLElBQUksRUFBRSx1QkFBdUIsQ0FBQyxTQUFTO2FBQ3hDLENBQUMsQ0FBQztZQUNILElBQUksQ0FBQyx3QkFBd0I7Z0JBQzNCLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUM7UUFDbkQsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0lBRU0sV0FBVztRQUNoQixJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksRUFBRSxDQUFDO1FBQzNCLElBQUksQ0FBQyxjQUFjLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDakMsQ0FBQztJQUVELGNBQWMsQ0FDWixjQUFzQixFQUN0QixhQUFxQixFQUNyQixVQUFrQixFQUNsQixhQUFxQjtRQUVyQixJQUFJLENBQUMsWUFBWTthQUNkLFNBQVMsQ0FBQyxjQUFjLEVBQUUsYUFBYSxFQUFFLFVBQVUsRUFBRSxhQUFhLENBQUM7YUFDbkUsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQzthQUNiLFNBQVMsQ0FBQyxDQUFDLHVCQUF1QixFQUFFLEVBQUU7WUFDckMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxRQUFRLENBQUMsdUJBQXVCLENBQUMsQ0FBQztRQUN4RCxDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7OEdBL0dVLHVCQUF1QjtrR0FBdkIsdUJBQXVCLDRFQ3BDcEMsNFBBVUEsMkNEd0JZLFlBQVksa0lBQUUsa0JBQWtCLHFKQUFFLG1CQUFtQjs7MkZBRXBELHVCQUF1QjtrQkFQbkMsU0FBUztpQ0FDSSxJQUFJLFlBQ04sa0JBQWtCLG1CQUVYLHVCQUF1QixDQUFDLE1BQU0sV0FDdEMsQ0FBQyxZQUFZLEVBQUUsa0JBQWtCLEVBQUUsbUJBQW1CLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBDb21wb25lbnQsXG4gIE9uRGVzdHJveSxcbiAgT25Jbml0LFxuICBpbmplY3QsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgU2t5TGl2ZUFubm91bmNlclNlcnZpY2UsIFNreVZpZXdrZWVwZXJNb2R1bGUgfSBmcm9tICdAc2t5dXgvY29yZSc7XG5pbXBvcnQgeyBTa3lMaWJSZXNvdXJjZXNTZXJ2aWNlIH0gZnJvbSAnQHNreXV4L2kxOG4nO1xuaW1wb3J0IHtcbiAgU2t5QmFja1RvVG9wTWVzc2FnZSxcbiAgU2t5QmFja1RvVG9wTWVzc2FnZVR5cGUsXG4gIFNreUJhY2tUb1RvcE1vZHVsZSxcbn0gZnJvbSAnQHNreXV4L2xheW91dCc7XG5cbmltcG9ydCB7IFN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IHRha2UsIHRha2VVbnRpbCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuaW1wb3J0IHsgU2t5RGF0YU1hbmFnZXJTZXJ2aWNlIH0gZnJvbSAnLi9kYXRhLW1hbmFnZXIuc2VydmljZSc7XG5pbXBvcnQgeyBTa3lEYXRhTWFuYWdlclN0YXRlIH0gZnJvbSAnLi9tb2RlbHMvZGF0YS1tYW5hZ2VyLXN0YXRlJztcbmltcG9ydCB7IFNreURhdGFNYW5hZ2VyU3VtbWFyeSB9IGZyb20gJy4vbW9kZWxzL2RhdGEtbWFuYWdlci1zdW1tYXJ5JztcblxuY29uc3QgVklFV0tFRVBFUl9DTEFTU0VTX0RFRkFVTFQgPSBbJy5za3ktZGF0YS1tYW5hZ2VyLXRvb2xiYXInXTtcblxuLyoqXG4gKiBUaGUgdG9wLWxldmVsIGRhdGEgbWFuYWdlciBjb21wb25lbnQuIFByb3ZpZGUgYFNreURhdGFNYW5hZ2VyU2VydmljZWAgYXQgdGhpcyBsZXZlbC5cbiAqL1xuQENvbXBvbmVudCh7XG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIHNlbGVjdG9yOiAnc2t5LWRhdGEtbWFuYWdlcicsXG4gIHRlbXBsYXRlVXJsOiAnLi9kYXRhLW1hbmFnZXIuY29tcG9uZW50Lmh0bWwnLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSwgU2t5QmFja1RvVG9wTW9kdWxlLCBTa3lWaWV3a2VlcGVyTW9kdWxlXSxcbn0pXG5leHBvcnQgY2xhc3MgU2t5RGF0YU1hbmFnZXJDb21wb25lbnQgaW1wbGVtZW50cyBPbkRlc3Ryb3ksIE9uSW5pdCB7XG4gIHB1YmxpYyBnZXQgY3VycmVudFZpZXdrZWVwZXJDbGFzc2VzKCk6IHN0cmluZ1tdIHtcbiAgICByZXR1cm4gdGhpcy4jX2N1cnJlbnRWaWV3a2VlcGVyQ2xhc3NlcztcbiAgfVxuXG4gIHB1YmxpYyBzZXQgY3VycmVudFZpZXdrZWVwZXJDbGFzc2VzKHZhbHVlOiBzdHJpbmdbXSB8IHVuZGVmaW5lZCkge1xuICAgIHRoaXMuI19jdXJyZW50Vmlld2tlZXBlckNsYXNzZXMgPSBbXG4gICAgICAuLi5WSUVXS0VFUEVSX0NMQVNTRVNfREVGQVVMVCxcbiAgICAgIC4uLih2YWx1ZSB8fCBbXSksXG4gICAgXTtcbiAgICB0aGlzLiNjaGFuZ2VEZXRlY3Rpb24ubWFya0ZvckNoZWNrKCk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGlzSW5pdGlhbGl6ZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuI19pc0luaXRpYWxpemVkO1xuICB9XG5cbiAgcHVibGljIHNldCBpc0luaXRpYWxpemVkKHZhbHVlOiBib29sZWFuKSB7XG4gICAgdGhpcy4jX2lzSW5pdGlhbGl6ZWQgPSB2YWx1ZTtcbiAgICB0aGlzLiNjaGFuZ2VEZXRlY3Rpb24ubWFya0ZvckNoZWNrKCk7XG4gIH1cblxuICBwdWJsaWMgYmFja1RvVG9wQ29udHJvbGxlciA9IG5ldyBTdWJqZWN0PFNreUJhY2tUb1RvcE1lc3NhZ2U+KCk7XG5cbiAgcHVibGljIGJhY2tUb1RvcE9wdGlvbnMgPSB7XG4gICAgYnV0dG9uSGlkZGVuOiB0cnVlLFxuICB9O1xuXG4gICNhY3RpdmVWaWV3SWQ6IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgI2FsbFZpZXdrZWVwZXJDbGFzc2VzOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmdbXT4gPSB7fTtcbiAgI25nVW5zdWJzY3JpYmUgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuICAjc291cmNlSWQgPSAnZGF0YU1hbmFnZXJDb21wb25lbnQnO1xuICAjZGF0YVN0YXRlOiBTa3lEYXRhTWFuYWdlclN0YXRlIHwgdW5kZWZpbmVkO1xuXG4gICNfaXNJbml0aWFsaXplZCA9IGZhbHNlO1xuICAjX2N1cnJlbnRWaWV3a2VlcGVyQ2xhc3NlcyA9IFZJRVdLRUVQRVJfQ0xBU1NFU19ERUZBVUxUO1xuXG4gIHJlYWRvbmx5ICNjaGFuZ2VEZXRlY3Rpb24gPSBpbmplY3QoQ2hhbmdlRGV0ZWN0b3JSZWYpO1xuICByZWFkb25seSAjZGF0YU1hbmFnZXJTZXJ2aWNlID0gaW5qZWN0KFNreURhdGFNYW5hZ2VyU2VydmljZSk7XG4gIHJlYWRvbmx5ICNsaXZlQW5ub3VuY2VyID0gaW5qZWN0KFNreUxpdmVBbm5vdW5jZXJTZXJ2aWNlKTtcbiAgcmVhZG9ubHkgI3Jlc291cmNlU3ZjID0gaW5qZWN0KFNreUxpYlJlc291cmNlc1NlcnZpY2UpO1xuXG4gIHB1YmxpYyBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLiNkYXRhTWFuYWdlclNlcnZpY2VcbiAgICAgIC5nZXREYXRhU3RhdGVVcGRhdGVzKHRoaXMuI3NvdXJjZUlkKVxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuI25nVW5zdWJzY3JpYmUpKVxuICAgICAgLnN1YnNjcmliZSgoc3RhdGUpID0+IHtcbiAgICAgICAgdGhpcy5pc0luaXRpYWxpemVkID0gdHJ1ZTtcbiAgICAgICAgdGhpcy4jZGF0YVN0YXRlID0gc3RhdGU7XG4gICAgICB9KTtcblxuICAgIHRoaXMuI2RhdGFNYW5hZ2VyU2VydmljZVxuICAgICAgLmdldERhdGFTdW1tYXJ5VXBkYXRlcyh0aGlzLiNzb3VyY2VJZClcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLiNuZ1Vuc3Vic2NyaWJlKSlcbiAgICAgIC5zdWJzY3JpYmUoKHN1bW1hcnk6IFNreURhdGFNYW5hZ2VyU3VtbWFyeSkgPT4ge1xuICAgICAgICBjb25zdCBpdGVtc1NlbGVjdGVkID0gdGhpcy4jZGF0YVN0YXRlPy5zZWxlY3RlZElkcz8ubGVuZ3RoIHx8IDA7XG4gICAgICAgIGNvbnN0IHJlc291cmNlU3RyaW5nID0gYHNreXV4X2RhdGFfbWFuYWdlcl9zdGF0dXNfdXBkYXRlXyR7XG4gICAgICAgICAgdGhpcy4jZGF0YVN0YXRlPy5vbmx5U2hvd1NlbGVjdGVkXG4gICAgICAgICAgICA/ICdvbmx5X3NlbGVjdGVkJ1xuICAgICAgICAgICAgOiBpdGVtc1NlbGVjdGVkXG4gICAgICAgICAgICA/ICd3aXRoX3NlbGVjdGlvbnMnXG4gICAgICAgICAgICA6ICd3aXRob3V0X3NlbGVjdGlvbnMnXG4gICAgICAgIH1gO1xuXG4gICAgICAgIHRoaXMuI2Fubm91bmNlU3RhdGUoXG4gICAgICAgICAgcmVzb3VyY2VTdHJpbmcsXG4gICAgICAgICAgc3VtbWFyeS5pdGVtc01hdGNoaW5nLFxuICAgICAgICAgIHN1bW1hcnkudG90YWxJdGVtcyxcbiAgICAgICAgICBpdGVtc1NlbGVjdGVkLFxuICAgICAgICApO1xuICAgICAgfSk7XG5cbiAgICB0aGlzLiNkYXRhTWFuYWdlclNlcnZpY2Uudmlld2tlZXBlckNsYXNzZXNcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLiNuZ1Vuc3Vic2NyaWJlKSlcbiAgICAgIC5zdWJzY3JpYmUoKGNsYXNzZXMpID0+IHtcbiAgICAgICAgdGhpcy4jYWxsVmlld2tlZXBlckNsYXNzZXMgPSBjbGFzc2VzO1xuICAgICAgICB0aGlzLmN1cnJlbnRWaWV3a2VlcGVyQ2xhc3NlcyA9IHRoaXMuI2FjdGl2ZVZpZXdJZFxuICAgICAgICAgID8gY2xhc3Nlc1t0aGlzLiNhY3RpdmVWaWV3SWRdXG4gICAgICAgICAgOiB1bmRlZmluZWQ7XG4gICAgICB9KTtcblxuICAgIHRoaXMuI2RhdGFNYW5hZ2VyU2VydmljZVxuICAgICAgLmdldEFjdGl2ZVZpZXdJZFVwZGF0ZXMoKVxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuI25nVW5zdWJzY3JpYmUpKVxuICAgICAgLnN1YnNjcmliZSgoYWN0aXZlVmlld0lkKSA9PiB7XG4gICAgICAgIHRoaXMuI2FjdGl2ZVZpZXdJZCA9IGFjdGl2ZVZpZXdJZDtcbiAgICAgICAgdGhpcy5iYWNrVG9Ub3BDb250cm9sbGVyLm5leHQoe1xuICAgICAgICAgIHR5cGU6IFNreUJhY2tUb1RvcE1lc3NhZ2VUeXBlLkJhY2tUb1RvcCxcbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMuY3VycmVudFZpZXdrZWVwZXJDbGFzc2VzID1cbiAgICAgICAgICB0aGlzLiNhbGxWaWV3a2VlcGVyQ2xhc3Nlc1t0aGlzLiNhY3RpdmVWaWV3SWRdO1xuICAgICAgfSk7XG4gIH1cblxuICBwdWJsaWMgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy4jbmdVbnN1YnNjcmliZS5uZXh0KCk7XG4gICAgdGhpcy4jbmdVbnN1YnNjcmliZS5jb21wbGV0ZSgpO1xuICB9XG5cbiAgI2Fubm91bmNlU3RhdGUoXG4gICAgcmVzb3VyY2VTdHJpbmc6IHN0cmluZyxcbiAgICBpdGVtc01hdGNoaW5nOiBudW1iZXIsXG4gICAgdG90YWxJdGVtczogbnVtYmVyLFxuICAgIGl0ZW1zU2VsZWN0ZWQ6IG51bWJlcixcbiAgKTogdm9pZCB7XG4gICAgdGhpcy4jcmVzb3VyY2VTdmNcbiAgICAgIC5nZXRTdHJpbmcocmVzb3VyY2VTdHJpbmcsIGl0ZW1zTWF0Y2hpbmcsIHRvdGFsSXRlbXMsIGl0ZW1zU2VsZWN0ZWQpXG4gICAgICAucGlwZSh0YWtlKDEpKVxuICAgICAgLnN1YnNjcmliZSgoaW50ZXJuYXRpb25hbGl6ZWRTdHJpbmcpID0+IHtcbiAgICAgICAgdGhpcy4jbGl2ZUFubm91bmNlci5hbm5vdW5jZShpbnRlcm5hdGlvbmFsaXplZFN0cmluZyk7XG4gICAgICB9KTtcbiAgfVxufVxuIiwiPGRpdlxuICAqbmdJZj1cImlzSW5pdGlhbGl6ZWRcIlxuICBjbGFzcz1cInNreS1kYXRhLW1hbmFnZXJcIlxuICBbc2t5QmFja1RvVG9wXT1cImJhY2tUb1RvcE9wdGlvbnNcIlxuICBbc2t5QmFja1RvVG9wTWVzc2FnZVN0cmVhbV09XCJiYWNrVG9Ub3BDb250cm9sbGVyXCJcbiAgW3NreVZpZXdrZWVwZXJdPVwiY3VycmVudFZpZXdrZWVwZXJDbGFzc2VzXCJcbiAgI2RhdGFNYW5hZ2VyXG4+XG4gIDxuZy1jb250ZW50IC8+XG48L2Rpdj5cbiJdfQ==
|
@@ -19,6 +19,7 @@ export class SkyDataManagerService {
|
|
19
19
|
#dataManagerConfig;
|
20
20
|
#views;
|
21
21
|
#dataStateChange;
|
22
|
+
#dataSummary;
|
22
23
|
#isInitialized;
|
23
24
|
#ngUnsubscribe;
|
24
25
|
#initSource;
|
@@ -29,6 +30,7 @@ export class SkyDataManagerService {
|
|
29
30
|
this.#dataManagerConfig = new BehaviorSubject({});
|
30
31
|
this.#views = new BehaviorSubject([]);
|
31
32
|
this.#dataStateChange = new ReplaySubject(1);
|
33
|
+
this.#dataSummary = new Subject();
|
32
34
|
this.#ngUnsubscribe = new Subject();
|
33
35
|
this.#initSource = 'dataManagerServiceInit';
|
34
36
|
this.#uiConfigService = uiConfigService;
|
@@ -185,6 +187,26 @@ export class SkyDataManagerService {
|
|
185
187
|
const newStateChange = new SkyDataManagerStateChange(newState, sourceId);
|
186
188
|
this.#dataStateChange.next(newStateChange);
|
187
189
|
}
|
190
|
+
/**
|
191
|
+
* Returns an observable of data summary changes that views and other data manager entities can subscribe to.
|
192
|
+
* It excludes updates originating from the provided source. This allows subscribers to only respond to
|
193
|
+
* changes they did not create and helps prevent infinite loops of updates and responses.
|
194
|
+
* @param sourceId The ID of the entity subscribing to data summary updates. This can be any value you choose
|
195
|
+
* but should be unique within the data manager instance and should also be used when that entity updates the summary.
|
196
|
+
*/
|
197
|
+
getDataSummaryUpdates(sourceId) {
|
198
|
+
return this.#dataSummary.pipe(filter((summaryChange) => sourceId !== summaryChange.source), map((summaryChange) => summaryChange.dataSummary));
|
199
|
+
}
|
200
|
+
/**
|
201
|
+
* Updates the data summary and emits a new value to entities subscribed to data summary changes.
|
202
|
+
* @param summary The new `SkyDataManagerSummary` value.
|
203
|
+
* @param sourceId The ID of the entity updating the summary. This can be any value you choose,
|
204
|
+
* but should be unique within the data manager instance and should also be used when that entity
|
205
|
+
* subscribes to summary changes from `getDataSummaryUpdates`.
|
206
|
+
*/
|
207
|
+
updateDataSummary(summary, sourceId) {
|
208
|
+
this.#dataSummary.next({ dataSummary: summary, source: sourceId });
|
209
|
+
}
|
188
210
|
/**
|
189
211
|
* Returns the current `SkyDataManagerConfig`.
|
190
212
|
*/
|
@@ -282,4 +304,4 @@ export class SkyDataManagerService {
|
|
282
304
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.9", ngImport: i0, type: SkyDataManagerService, decorators: [{
|
283
305
|
type: Injectable
|
284
306
|
}], ctorParameters: function () { return [{ type: i1.SkyUIConfigService }]; } });
|
285
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YS1tYW5hZ2VyLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvZGF0YS1tYW5hZ2VyL3NyYy9saWIvbW9kdWxlcy9kYXRhLW1hbmFnZXIvZGF0YS1tYW5hZ2VyLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBYSxNQUFNLGVBQWUsQ0FBQztBQUd0RCxPQUFPLEVBQUUsZUFBZSxFQUFjLGFBQWEsRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDM0UsT0FBTyxFQUNMLG9CQUFvQixFQUNwQixNQUFNLEVBQ04sR0FBRyxFQUNILElBQUksRUFDSixTQUFTLEdBQ1YsTUFBTSxnQkFBZ0IsQ0FBQztBQUl4QixPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUNsRSxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUkvRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQzs7O0FBRTVEOzs7Ozs7O0dBT0c7QUFFSCxNQUFNLE9BQU8scUJBQXFCO0lBR3ZCLGFBQWEsQ0FBZ0M7SUFDN0Msa0JBQWtCLENBQWlEO0lBQ25FLE1BQU0sQ0FBZ0Q7SUFDdEQsZ0JBQWdCLENBQW1EO0lBRTVFLGNBQWMsQ0FBc0I7SUFDcEMsY0FBYyxDQUF1QjtJQUNyQyxXQUFXLENBQTRCO0lBQ3ZDLGdCQUFnQixDQUFxQjtJQUVyQyxZQUFZLGVBQW1DO1FBWnhDLHNCQUFpQixHQUFHLElBQUksZUFBZSxDQUEyQixFQUFFLENBQUMsQ0FBQztRQUVwRSxrQkFBYSxHQUFHLElBQUksYUFBYSxDQUFTLENBQUMsQ0FBQyxDQUFDO1FBQzdDLHVCQUFrQixHQUFHLElBQUksZUFBZSxDQUF1QixFQUFFLENBQUMsQ0FBQztRQUNuRSxXQUFNLEdBQUcsSUFBSSxlQUFlLENB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Q3hCLEtBQTBCLEVBQzFCLFVBQTREO1FBRTVELE1BQU0sZUFBZSxHQUFHLEtBQUssQ0FBQyxlQUFlLEVBQUUsQ0FBQztRQUNoRCxNQUFNLHVCQUF1QixHQUE0QixFQUFFLENBQUM7UUFFNUQsSUFBSSxVQUFVLEVBQUU7WUFDZCxLQUFLLE1BQU0sUUFBUSxJQUFJLFVBQVUsRUFBRTtnQkFDakMsSUFBSSxRQUFRLElBQUksZUFBZSxFQUFFO29CQUMvQix1QkFBdUIsQ0FBQyxRQUFRLENBQUMsR0FBRyxlQUFlLENBQUMsUUFBUSxDQUFDLENBQUM7aUJBQy9EO2FBQ0Y7U0FDRjtRQUVELE9BQU8sdUJBQXVCLENBQUM7SUFDakMsQ0FBQztJQUVELDBCQUEwQixDQUN4QixVQUE0RDtRQUU1RCxPQUFPLENBQ0wsTUFBMkIsRUFDM0IsTUFBMkIsRUFDbEIsRUFBRTtZQUNYLE1BQU0sY0FBYyxHQUFHLElBQUksQ0FBQywwQkFBMEIsQ0FDcEQsTUFBTSxFQUNOLFVBQVUsQ0FDWCxDQUFDO1lBQ0YsTUFBTSxjQUFjLEdBQUcsSUFBSSxDQUFDLDBCQUEwQixDQUNwRCxNQUFNLEVBQ04sVUFBVSxDQUNYLENBQUM7WUFDRixPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsY0FBYyxDQUFDLEtBQUssSUFBSSxDQUFDLFNBQVMsQ0FBQyxjQUFjLENBQUMsQ0FBQztRQUMzRSxDQUFDLENBQUM7SUFDSixDQUFDOzhHQXhWVSxxQkFBcUI7a0hBQXJCLHFCQUFxQjs7MkZBQXJCLHFCQUFxQjtrQkFEakMsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUsIE9uRGVzdHJveSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgU2t5VUlDb25maWdTZXJ2aWNlIH0gZnJvbSAnQHNreXV4L2NvcmUnO1xuXG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIE9ic2VydmFibGUsIFJlcGxheVN1YmplY3QsIFN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7XG4gIGRpc3RpbmN0VW50aWxDaGFuZ2VkLFxuICBmaWx0ZXIsXG4gIG1hcCxcbiAgdGFrZSxcbiAgdGFrZVVudGlsLFxufSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbmltcG9ydCB7IFNreURhdGFNYW5hZ2VyQ29uZmlnIH0gZnJvbSAnLi9tb2RlbHMvZGF0YS1tYW5hZ2VyLWNvbmZpZyc7XG5pbXBvcnQgeyBTa3lEYXRhTWFuYWdlckluaXRBcmdzIH0gZnJvbSAnLi9tb2RlbHMvZGF0YS1tYW5hZ2VyLWluaXQtYXJncyc7XG5pbXBvcnQgeyBTa3lEYXRhTWFuYWdlclN0YXRlIH0gZnJvbSAnLi9tb2RlbHMvZGF0YS1tYW5hZ2VyLXN0YXRlJztcbmltcG9ydCB7IFNreURhdGFNYW5hZ2VyU3RhdGVDaGFuZ2UgfSBmcm9tICcuL21vZGVscy9kYXRhLW1hbmFnZXItc3RhdGUtY2hhbmdlJztcbmltcG9ydCB7IFNreURhdGFNYW5hZ2VyU3RhdGVPcHRpb25zIH0gZnJvbSAnLi9tb2RlbHMvZGF0YS1tYW5hZ2VyLXN0YXRlLW9wdGlvbnMnO1xuaW1wb3J0IHsgU2t5RGF0YU1hbmFnZXJTdGF0ZVVwZGF0ZUZpbHRlckFyZ3MgfSBmcm9tICcuL21vZGVscy9kYXRhLW1hbmFnZXItc3RhdGUtdXBkYXRlLWZpbHRlci1hcmdzJztcbmltcG9ydCB7IFNreURhdGFWaWV3Q29uZmlnIH0gZnJvbSAnLi9tb2RlbHMvZGF0YS12aWV3LWNvbmZpZyc7XG5pbXBvcnQgeyBTa3lEYXRhVmlld1N0YXRlIH0gZnJvbSAnLi9tb2RlbHMvZGF0YS12aWV3LXN0YXRlJztcblxuLyoqXG4gKiBUaGUgZGF0YSBtYW5hZ2VyIHNlcnZpY2UgcHJvdmlkZXMgd2F5cyBmb3IgZGF0YSB2aWV3cywgdG9vbGJhciBpdGVtcywgYW5kIG1vcmUgdG8gc3RheSB1cCB0byBkYXRlXG4gKiB3aXRoIHRoZSBhY3RpdmUgdmlldyBJRCwgZGF0YSBtYW5hZ2VyIGNvbmZpZywgcmVnaXN0ZXJlZCB2aWV3cyBhbmQgdGhlaXIgY29uZmlncywgYW5kIGRhdGEgc3RhdGUuXG4gKiBUaGVyZSBhcmUgbWV0aG9kcyB0byBnZXQgY3VycmVudCB2YWx1ZXMsIHVwZGF0ZSB2YWx1ZXMsIGFuZCBnZXQgc3Vic2NyaXB0aW9ucyB0byB0aGUgY2hhbmdpbmcgdmFsdWVzLjxici8+IDxici8+XG4gKiBQcm92aWRlIHRoaXMgc2VydmljZSBhdCB0aGUgY29tcG9uZW50IGxldmVsIGZvciBlYWNoIGluc3RhbmNlIG9mIGEgZGF0YSBtYW5hZ2VyLiBEbyBub3RcbiAqIHByb3ZpZGUgaXQgYXQgdGhlIG1vZHVsZSBsZXZlbCBvciBpbiBgYXBwLWV4dHJhc2AuIFRoaXMgYWxsb3dzIG11bHRpcGxlIGRhdGFcbiAqIG1hbmFnZXJzIHRvIGJlIHVzZWQgYW5kIHNlbGYtY29udGFpbmVkLlxuICovXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgU2t5RGF0YU1hbmFnZXJTZXJ2aWNlIGltcGxlbWVudHMgT25EZXN0cm95IHtcbiAgcHVibGljIHZpZXdrZWVwZXJDbGFzc2VzID0gbmV3IEJlaGF2aW9yU3ViamVjdDxSZWNvcmQ8c3RyaW5nLCBzdHJpbmdbXT4+KHt9KTtcblxuICByZWFkb25seSAjYWN0aXZlVmlld0lkID0gbmV3IFJlcGxheVN1YmplY3Q8c3RyaW5nPigxKTtcbiAgcmVhZG9ubHkgI2RhdGFNYW5hZ2VyQ29uZmlnID0gbmV3IEJlaGF2aW9yU3ViamVjdDxTa3lEYXRhTWFuYWdlckNvbmZpZz4oe30pO1xuICByZWFkb25seSAjdmlld3MgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PFNreURhdGFWaWV3Q29uZmlnW10+KFtdKTtcbiAgcmVhZG9ubHkgI2RhdGFTdGF0ZUNoYW5nZSA9IG5ldyBSZXBsYXlTdWJqZWN0PFNreURhdGFNYW5hZ2VyU3RhdGVDaGFuZ2U+KDEpO1xuXG4gICNpc0luaXRpYWxpemVkOiBib29sZWFuIHwgdW5kZWZpbmVkO1xuICAjbmdVbnN1YnNjcmliZSA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG4gICNpbml0U291cmNlID0gJ2RhdGFNYW5hZ2VyU2VydmljZUluaXQnO1xuICAjdWlDb25maWdTZXJ2aWNlOiBTa3lVSUNvbmZpZ1NlcnZpY2U7XG5cbiAgY29uc3RydWN0b3IodWlDb25maWdTZXJ2aWNlOiBTa3lVSUNvbmZpZ1NlcnZpY2UpIHtcbiAgICB0aGlzLiN1aUNvbmZpZ1NlcnZpY2UgPSB1aUNvbmZpZ1NlcnZpY2U7XG4gIH1cblxuICBwdWJsaWMgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy4jYWN0aXZlVmlld0lkLmNvbXBsZXRlKCk7XG4gICAgdGhpcy4jZGF0YU1hbmFnZXJDb25maWcuY29tcGxldGUoKTtcbiAgICB0aGlzLiN2aWV3cy5jb21wbGV0ZSgpO1xuICAgIHRoaXMuI2RhdGFTdGF0ZUNoYW5nZS5jb21wbGV0ZSgpO1xuICAgIHRoaXMuI25nVW5zdWJzY3JpYmUubmV4dCgpO1xuICAgIHRoaXMuI25nVW5zdWJzY3JpYmUuY29tcGxldGUoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBJbml0aWFsaXplcyB0aGUgZGF0YSBtYW5hZ2VyIHdpdGggdGhlIGdpdmVuIHNldHRpbmdzIGFuZCBzZXRzIGBpc0luaXRpYWxpemVkYCB0byBgdHJ1ZWAuXG4gICAqIFRoaXMgbXVzdCBiZSBjYWxsZWQgZm9yIHRoZSBkYXRhIG1hbmFnZXIgdG8gcmVuZGVyLlxuICAgKiBAcGFyYW0gYXJncyBUaGUgaW5pdGlhbCBhY3RpdmUgdmlldyBJRCwgZGF0YSBtYW5hZ2VyIGNvbmZpZywgYW5kIHN0YXRlIHRvIHVzZSBmb3IgdGhlIGRhdGEgbWFuYWdlci5cbiAgICogSWYgYSBzZXR0aW5ncyBrZXkgaXMgcHJvdmlkZWQsIGl0IGNoZWNrcyBmb3IgYSBzYXZlZCBkYXRhIHN0YXRlIGluIHRoZSBTS1kgVUkgY29uZmlnIHNlcnZpY2UgYmVmb3JlIHVzaW5nIHRoZSBkZWZhdWx0IGRhdGEgc3RhdGVcbiAgICogYW5kIHNhdmVzIGFueSBzdGF0ZSBjaGFuZ2VzIHRvIHRoZSBzZXJ2aWNlLlxuICAgKi9cbiAgcHVibGljIGluaXREYXRhTWFuYWdlcihhcmdzOiBTa3lEYXRhTWFuYWdlckluaXRBcmdzKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuI2lzSW5pdGlhbGl6ZWQpIHtcbiAgICAgIGNvbnNvbGUud2FybignVGhpcyBkYXRhIG1hbmFnZXIgaW5zdGFuY2UgaGFzIGFscmVhZHkgYmVlbiBpbml0aWFsaXplZC4nKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLiNpc0luaXRpYWxpemVkID0gdHJ1ZTtcblxuICAgIGNvbnN0IGRlZmF1bHREYXRhU3RhdGUgPSBhcmdzLmRlZmF1bHREYXRhU3RhdGU7XG4gICAgY29uc3Qgc2V0dGluZ3NLZXkgPSBhcmdzLnNldHRpbmdzS2V5O1xuXG4gICAgdGhpcy51cGRhdGVBY3RpdmVWaWV3SWQoYXJncy5hY3RpdmVWaWV3SWQpO1xuICAgIHRoaXMudXBkYXRlRGF0YU1hbmFnZXJDb25maWcoYXJncy5kYXRhTWFuYWdlckNvbmZpZyk7XG5cbiAgICBpZiAoc2V0dGluZ3NLZXkpIHtcbiAgICAgIHRoaXMuI3VpQ29uZmlnU2VydmljZVxuICAgICAgICAuZ2V0Q29uZmlnKHNldHRpbmdzS2V5LCBkZWZhdWx0RGF0YVN0YXRlLmdldFN0YXRlT3B0aW9ucygpKVxuICAgICAgICAucGlwZSh0YWtlKDEpKVxuICAgICAgICAuc3Vic2NyaWJlKChjb25maWc6IFNreURhdGFNYW5hZ2VyU3RhdGVPcHRpb25zKSA9PiB7XG4gICAgICAgICAgdGhpcy51cGRhdGVEYXRhU3RhdGUoXG4gICAgICAgICAgICBuZXcgU2t5RGF0YU1hbmFnZXJTdGF0ZShjb25maWcpLFxuICAgICAgICAgICAgdGhpcy4jaW5pdFNvdXJjZSxcbiAgICAgICAgICApO1xuICAgICAgICB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy51cGRhdGVEYXRhU3RhdGUoZGVmYXVsdERhdGFTdGF0ZSwgdGhpcy4jaW5pdFNvdXJjZSk7XG4gICAgfVxuXG4gICAgaWYgKHNldHRpbmdzS2V5KSB7XG4gICAgICB0aGlzLmdldERhdGFTdGF0ZVVwZGF0ZXModGhpcy4jaW5pdFNvdXJjZSlcbiAgICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuI25nVW5zdWJzY3JpYmUpKVxuICAgICAgICAuc3Vic2NyaWJlKChzdGF0ZTogU2t5RGF0YU1hbmFnZXJTdGF0ZSkgPT4ge1xuICAgICAgICAgIHRoaXMuI3VpQ29uZmlnU2VydmljZVxuICAgICAgICAgICAgLnNldENvbmZpZyhzZXR0aW5nc0tleSwgc3RhdGUuZ2V0U3RhdGVPcHRpb25zKCkpXG4gICAgICAgICAgICAucGlwZSh0YWtlVW50aWwodGhpcy4jbmdVbnN1YnNjcmliZSkpXG4gICAgICAgICAgICAuc3Vic2NyaWJlKFxuICAgICAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWVtcHR5LWZ1bmN0aW9uXG4gICAgICAgICAgICAgICgpID0+IHt9LFxuICAgICAgICAgICAgICAoZXJyKSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc29sZS53YXJuKCdDb3VsZCBub3Qgc2F2ZSBkYXRhIG1hbmFnZXIgc2V0dGluZ3MuJyk7XG4gICAgICAgICAgICAgICAgY29uc29sZS53YXJuKGVycik7XG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICApO1xuICAgICAgICB9KTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogSW5pdGlhbGl6ZXMgYSB2aWV3IHdpdGhpbiB0aGUgZGF0YSBtYW5hZ2VyLiBUaGlzIG11c3QgYmUgY2FsbGVkIGZvciBlYWNoIHZpZXcgZm9yIHRoZSB2aWV3cyB0byBhcHBlYXIgd2l0aGluIHRoZSBkYXRhIG1hbmFnZXIuXG4gICAqIEBwYXJhbSB2aWV3Q29uZmlnIFRoZSBTa3lEYXRhVmlld0NvbmZpZyBzZXR0aW5ncyBmb3IgdGhlIHZpZXcgYmVpbmcgcmVnaXN0ZXJlZC5cbiAgICovXG4gIHB1YmxpYyBpbml0RGF0YVZpZXcodmlld0NvbmZpZzogU2t5RGF0YVZpZXdDb25maWcpOiB2b2lkIHtcbiAgICBjb25zdCBjdXJyZW50Vmlld3MgPSB0aGlzLiN2aWV3cy52YWx1ZTtcblxuICAgIGlmICh0aGlzLmdldFZpZXdCeUlkKHZpZXdDb25maWcuaWQpKSB7XG4gICAgICBjb25zb2xlLndhcm4oXG4gICAgICAgIGBBIGRhdGEgbWFuYWdlciB2aWV3IHdpdGggdGhlIGlkICR7dmlld0NvbmZpZy5pZH0gaGFzIGFscmVhZHkgYmVlbiBpbml0aWFsaXplZC5gLFxuICAgICAgKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjdXJyZW50Vmlld3MucHVzaCh2aWV3Q29uZmlnKTtcbiAgICB0aGlzLiN2aWV3cy5uZXh0KGN1cnJlbnRWaWV3cyk7XG5cbiAgICAvLyBXaGVuIHRoZSBpbml0aWFsIGFjdGl2ZVZpZXdJZCBpcyBzZXQgdGhlcmUgYXJlIG5vIHZpZXdzIHJlZ2lzdGVyZWQuIFdlIGhhdmUgdG8gcmUtZW1pdFxuICAgIC8vIHRoZSBhY3RpdmVJZCBzbyB0aGUgbmV3bHkgcmVnaXN0ZXJlZCB2aWV3IGlzIG5vdGlmaWVkIHRoYXQgaXQgaXMgYWN0aXZlLlxuICAgIHRoaXMuI2FjdGl2ZVZpZXdJZC5waXBlKHRha2UoMSkpLnN1YnNjcmliZSgoaWQpID0+IHtcbiAgICAgIHRoaXMuI2FjdGl2ZVZpZXdJZC5uZXh0KGlkKTtcbiAgICB9KTtcblxuICAgIHRoaXMuI2RhdGFTdGF0ZUNoYW5nZVxuICAgICAgLnBpcGUodGFrZSgxKSlcbiAgICAgIC5zdWJzY3JpYmUoKGNoYW5nZSkgPT4ge1xuICAgICAgICBjb25zdCBkYXRhU3RhdGUgPSBjaGFuZ2UuZGF0YVN0YXRlO1xuICAgICAgICBjb25zdCBjdXJyZW50Vmlld1N0YXRlID0gZGF0YVN0YXRlLmdldFZpZXdTdGF0ZUJ5SWQodmlld0NvbmZpZy5pZCk7XG5cbiAgICAgICAgaWYgKCFjdXJyZW50Vmlld1N0YXRlKSB7XG4gICAgICAgICAgY29uc3QgbmV3Vmlld1N0YXRlID0gbmV3IFNreURhdGFWaWV3U3RhdGUoeyB2aWV3SWQ6IHZpZXdDb25maWcuaWQgfSk7XG5cbiAgICAgICAgICAvLyBFbnN1cmUgdGhhdCB0aGUgdmlldyBzdGF0ZSdzIGF2YWlsYWJsZSBjb2x1bW5zIG1hdGNoIHdpdGggdGhlIHZpZXcgY29uZmlnLiBBbHNvLFxuICAgICAgICAgIC8vIGFkZCBjb2x1bW5zIHRvIHRoZSBgZGlzcGxheWVkQ29sdW1uSWRzYCBhcyBsb25nIGFzIHRoZXkgYXJlIG5vdCBgaW5pdGlhbEhpZGVgXG4gICAgICAgICAgaWYgKHZpZXdDb25maWcuY29sdW1uT3B0aW9ucykge1xuICAgICAgICAgICAgY29uc3QgY29sdW1uSWRzID0gdmlld0NvbmZpZy5jb2x1bW5PcHRpb25zLm1hcCgoY29sdW1uT3B0aW9ucykgPT4ge1xuICAgICAgICAgICAgICByZXR1cm4gY29sdW1uT3B0aW9ucy5pZDtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgY29uc3QgZGlzcGxheWVkQ29sdW1uSWRzID0gdmlld0NvbmZpZy5jb2x1bW5PcHRpb25zXG4gICAgICAgICAgICAgIC5maWx0ZXIoKGNvbHVtbk9wdGlvbikgPT4ge1xuICAgICAgICAgICAgICAgIHJldHVybiAhY29sdW1uT3B0aW9uLmluaXRpYWxIaWRlO1xuICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAubWFwKChjb2x1bW5PcHRpb24pID0+IHtcbiAgICAgICAgICAgICAgICByZXR1cm4gY29sdW1uT3B0aW9uLmlkO1xuICAgICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgbmV3Vmlld1N0YXRlLmNvbHVtbklkcyA9IGNvbHVtbklkcztcbiAgICAgICAgICAgIG5ld1ZpZXdTdGF0ZS5kaXNwbGF5ZWRDb2x1bW5JZHMgPSBkaXNwbGF5ZWRDb2x1bW5JZHM7XG4gICAgICAgICAgfVxuICAgICAgICAgIGNvbnN0IG5ld0RhdGFTdGF0ZSA9IGRhdGFTdGF0ZS5hZGRPclVwZGF0ZVZpZXcoXG4gICAgICAgICAgICB2aWV3Q29uZmlnLmlkLFxuICAgICAgICAgICAgbmV3Vmlld1N0YXRlLFxuICAgICAgICAgICk7XG5cbiAgICAgICAgICB0aGlzLnVwZGF0ZURhdGFTdGF0ZShuZXdEYXRhU3RhdGUsIHRoaXMuI2luaXRTb3VyY2UpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGNvbnN0IGN1cnJlbnRBdmFpbGFibGVDb2x1bW5JZHMgPVxuICAgICAgICAgICAgdmlld0NvbmZpZy5jb2x1bW5PcHRpb25zPy5tYXAoKGNvbHVtbk9wdGlvbnMpID0+IHtcbiAgICAgICAgICAgICAgcmV0dXJuIGNvbHVtbk9wdGlvbnMuaWQ7XG4gICAgICAgICAgICB9KSB8fCBbXTtcblxuICAgICAgICAgIC8vIEVuc3VyZSB0aGF0IHRoZSB2aWV3IHN0YXRlJ3MgYXZhaWxhYmxlIGNvbHVtbnMgbWF0Y2ggd2l0aCB0aGUgdmlldyBjb25maWcuIEFsc28sXG4gICAgICAgICAgLy8gYWRkIG5ldyBjb2x1bW5zIHRvIHRoZSBgZGlzcGxheWVkQ29sdW1uSWRzYCBhcyBsb25nIGFzIHRoZXkgYXJlIG5vdCBgaW5pdGlhbEhpZGVgLlxuICAgICAgICAgIC8vIFdlIG9ubHkgYWRkIGNvbHVtbnMgdG8gYGRpc3BsYXllZENvbHVtbnNJZHNgIGlmIHdlIGhhZCBwcmV2aW91c2x5IHRyYWNrZWRcbiAgICAgICAgICAvLyBgY29sdW1uSWRzYCB0byBhdm9pZCBicmVha2luZyBjaGFuZ2VzLlxuICAgICAgICAgIGlmIChjdXJyZW50Vmlld1N0YXRlLmNvbHVtbklkcy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICBsZXQgbmV3Q29sdW1uSWRzID0gY3VycmVudEF2YWlsYWJsZUNvbHVtbklkcz8uZmlsdGVyKFxuICAgICAgICAgICAgICAoaWQpID0+IGN1cnJlbnRWaWV3U3RhdGUuY29sdW1uSWRzLmluZGV4T2YoaWQpIDwgMCxcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICBuZXdDb2x1bW5JZHMgPSBuZXdDb2x1bW5JZHM/LmZpbHRlcigoY29sdW1uSWQpID0+IHtcbiAgICAgICAgICAgICAgcmV0dXJuIHZpZXdDb25maWcuY29sdW1uT3B0aW9ucz8uZmluZChcbiAgICAgICAgICAgICAgICAoY29sdW1uT3B0aW9uKSA9PlxuICAgICAgICAgICAgICAgICAgY29sdW1uT3B0aW9uLmlkID09PSBjb2x1bW5JZCAmJiAhY29sdW1uT3B0aW9uLmluaXRpYWxIaWRlLFxuICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIC8vIEFkZCB0aGUgY29sdW1uIElEcyB0aGF0IG5vdyBleGlzdCB0byB0aGUgZGF0YSBtYW5hZ2VyIHN0YXRlIGJvdGggYXMgYXZhaWxhYmxlXG4gICAgICAgICAgICAvLyBhbmQgYXMgc2hvd24uXG4gICAgICAgICAgICBjdXJyZW50Vmlld1N0YXRlLmRpc3BsYXllZENvbHVtbklkcyA9XG4gICAgICAgICAgICAgIGN1cnJlbnRWaWV3U3RhdGUuZGlzcGxheWVkQ29sdW1uSWRzLmNvbmNhdChuZXdDb2x1bW5JZHMpO1xuICAgICAgICAgIH1cbiAgICAgICAgICAvLyBBZGQgdGhlIGNvbHVtbiBJRHMgdGhhdCBub3cgZXhpc3QgdG8gdGhlIGRhdGEgbWFuYWdlciBzdGF0ZSBib3RoIGFzIGF2YWlsYWJsZVxuICAgICAgICAgIC8vIGFuZCBhcyBzaG93bi5cbiAgICAgICAgICBjdXJyZW50Vmlld1N0YXRlLmNvbHVtbklkcyA9IGN1cnJlbnRBdmFpbGFibGVDb2x1bW5JZHM7XG5cbiAgICAgICAgICBjb25zdCBuZXdEYXRhU3RhdGUgPSBkYXRhU3RhdGUuYWRkT3JVcGRhdGVWaWV3KFxuICAgICAgICAgICAgdmlld0NvbmZpZy5pZCxcbiAgICAgICAgICAgIGN1cnJlbnRWaWV3U3RhdGUsXG4gICAgICAgICAgKTtcblxuICAgICAgICAgIHRoaXMudXBkYXRlRGF0YVN0YXRlKG5ld0RhdGFTdGF0ZSwgdGhpcy4jaW5pdFNvdXJjZSk7XG4gICAgICAgIH1cbiAgICAgIH0pXG4gICAgICAudW5zdWJzY3JpYmUoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIGFuIG9ic2VydmFibGUgb2YgZGF0YSBzdGF0ZSBjaGFuZ2VzIHRoYXQgdmlld3MgYW5kIG90aGVyIGRhdGEgbWFuYWdlciBlbnRpdGllcyBjYW4gc3Vic2NyaWJlIHRvLlxuICAgKiBJdCBleGNsdWRlcyB1cGRhdGVzIG9yaWdpbmF0aW5nIGZyb20gdGhlIHByb3ZpZGVkIHNvdXJjZS4gVGhpcyBhbGxvd3Mgc3Vic2NyaWJlcnMgdG8gb25seSByZXNwb25kIHRvXG4gICAqIGNoYW5nZXMgdGhleSBkaWQgbm90IGNyZWF0ZSBhbmQgaGVscHMgcHJldmVudCBpbmZpbml0ZSBsb29wcyBvZiB1cGRhdGVzIGFuZCByZXNwb25zZXMuXG4gICAqIEBwYXJhbSBzb3VyY2VJZCBUaGUgSUQgb2YgdGhlIGVudGl0eSBzdWJzY3JpYmluZyB0byBkYXRhIHN0YXRlIHVwZGF0ZXMuIFRoaXMgY2FuIGJlIGFueSB2YWx1ZSB5b3UgY2hvb3NlXG4gICAqIGJ1dCBzaG91bGQgYmUgdW5pcXVlIHdpdGhpbiB0aGUgZGF0YSBtYW5hZ2VyIGluc3RhbmNlIGFuZCBzaG91bGQgYWxzbyBiZSB1c2VkIHdoZW4gdGhhdCBlbnRpdHkgdXBkYXRlcyB0aGUgc3RhdGUuXG4gICAqL1xuICBwdWJsaWMgZ2V0RGF0YVN0YXRlVXBkYXRlcyhcbiAgICBzb3VyY2VJZDogc3RyaW5nLFxuICAgIHVwZGF0ZUZpbHRlcj86IFNreURhdGFNYW5hZ2VyU3RhdGVVcGRhdGVGaWx0ZXJBcmdzLFxuICApOiBPYnNlcnZhYmxlPFNreURhdGFNYW5hZ2VyU3RhdGU+IHtcbiAgICAvLyBmaWx0ZXIgb3V0IGV2ZW50cyBmcm9tIHRoZSBwcm92aWRlZCBzb3VyY2UgYW5kIGVtaXQganVzdCB0aGUgZGF0YVN0YXRlXG4gICAgaWYgKHVwZGF0ZUZpbHRlcikge1xuICAgICAgcmV0dXJuIHRoaXMuI2RhdGFTdGF0ZUNoYW5nZS5waXBlKFxuICAgICAgICBmaWx0ZXIoKHN0YXRlQ2hhbmdlKSA9PiBzb3VyY2VJZCAhPT0gc3RhdGVDaGFuZ2Uuc291cmNlKSxcbiAgICAgICAgbWFwKChzdGF0ZUNoYW5nZSkgPT4gc3RhdGVDaGFuZ2UuZGF0YVN0YXRlKSxcbiAgICAgICAgdXBkYXRlRmlsdGVyLmNvbXBhcmF0b3JcbiAgICAgICAgICA/IGRpc3RpbmN0VW50aWxDaGFuZ2VkKHVwZGF0ZUZpbHRlci5jb21wYXJhdG9yKVxuICAgICAgICAgIDogZGlzdGluY3RVbnRpbENoYW5nZWQoXG4gICAgICAgICAgICAgIHRoaXMuI2dldERlZmF1bHRTdGF0ZUNvbXBhcmF0b3IoXG4gICAgICAgICAgICAgICAgdXBkYXRlRmlsdGVyLnByb3BlcnRpZXMgYXMgKGtleW9mIFNreURhdGFNYW5hZ2VyU3RhdGVPcHRpb25zKVtdLFxuICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgKSxcbiAgICAgICk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiB0aGlzLiNkYXRhU3RhdGVDaGFuZ2UucGlwZShcbiAgICAgICAgZmlsdGVyKChzdGF0ZUNoYW5nZSkgPT4gc291cmNlSWQgIT09IHN0YXRlQ2hhbmdlLnNvdXJjZSksXG4gICAgICAgIG1hcCgoc3RhdGVDaGFuZ2UpID0+IHN0YXRlQ2hhbmdlLmRhdGFTdGF0ZSksXG4gICAgICApO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBVcGRhdGVzIHRoZSBkYXRhIHN0YXRlIGFuZCBlbWl0cyBhIG5ldyB2YWx1ZSB0byBlbnRpdGllcyBzdWJzY3JpYmVkIHRvIGRhdGEgc3RhdGUgY2hhbmdlcy5cbiAgICogQHBhcmFtIHN0YXRlIFRoZSBuZXcgYFNreURhdGFNYW5hZ2VyU3RhdGVgIHZhbHVlLlxuICAgKiBAcGFyYW0gc291cmNlSWQgVGhlIElEIG9mIHRoZSBlbnRpdHkgdXBkYXRpbmcgdGhlIHN0YXRlLiBUaGlzIGNhbiBiZSBhbnkgdmFsdWUgeW91IGNob29zZSxcbiAgICogYnV0IHNob3VsZCBiZSB1bmlxdWUgd2l0aGluIHRoZSBkYXRhIG1hbmFnZXIgaW5zdGFuY2UgYW5kIHNob3VsZCBhbHNvIGJlIHVzZWQgd2hlbiB0aGF0IGVudGl0eVxuICAgKiBzdWJzY3JpYmVzIHRvIHN0YXRlIGNoYW5nZXMgZnJvbSBgZ2V0RGF0YVN0YXRlVXBkYXRlc2AuXG4gICAqL1xuICBwdWJsaWMgdXBkYXRlRGF0YVN0YXRlKHN0YXRlOiBTa3lEYXRhTWFuYWdlclN0YXRlLCBzb3VyY2VJZDogc3RyaW5nKTogdm9pZCB7XG4gICAgY29uc3QgbmV3U3RhdGUgPSBuZXcgU2t5RGF0YU1hbmFnZXJTdGF0ZShzdGF0ZS5nZXRTdGF0ZU9wdGlvbnMoKSk7XG4gICAgY29uc3QgbmV3U3RhdGVDaGFuZ2UgPSBuZXcgU2t5RGF0YU1hbmFnZXJTdGF0ZUNoYW5nZShuZXdTdGF0ZSwgc291cmNlSWQpO1xuXG4gICAgdGhpcy4jZGF0YVN0YXRlQ2hhbmdlLm5leHQobmV3U3RhdGVDaGFuZ2UpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgdGhlIGN1cnJlbnQgYFNreURhdGFNYW5hZ2VyQ29uZmlnYC5cbiAgICovXG4gIHB1YmxpYyBnZXRDdXJyZW50RGF0YU1hbmFnZXJDb25maWcoKTogU2t5RGF0YU1hbmFnZXJDb25maWcge1xuICAgIHJldHVybiB0aGlzLiNkYXRhTWFuYWdlckNvbmZpZy52YWx1ZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIGFuIG9ic2VydmFibGUgb2YgZGF0YSBtYW5hZ2VyIGNvbmZpZyBjaGFuZ2VzIHRoYXQgdmlld3MgYW5kIG90aGVyIGRhdGEgbWFuYWdlciBlbnRpdGllcyBjYW4gc3Vic2NyaWJlIHRvLlxuICAgKi9cbiAgcHVibGljIGdldERhdGFNYW5hZ2VyQ29uZmlnVXBkYXRlcygpOiBPYnNlcnZhYmxlPFNreURhdGFNYW5hZ2VyQ29uZmlnPiB7XG4gICAgcmV0dXJuIHRoaXMuI2RhdGFNYW5hZ2VyQ29uZmlnO1xuICB9XG5cbiAgLyoqXG4gICAqIFVwZGF0ZXMgdGhlIGRhdGEgbWFuYWdlciBjb25maWcgYW5kIGVtaXRzIGEgbmV3IHZhbHVlIHRvIGVudGl0aWVzIHN1YnNjcmliZWQgdG8gZGF0YSBjb25maWcgY2hhbmdlcy5cbiAgICogQHBhcmFtIHZhbHVlIFRoZSBuZXcgYFNreURhdGFNYW5hZ2VyQ29uZmlnYCB2YWx1ZS5cbiAgICovXG4gIHB1YmxpYyB1cGRhdGVEYXRhTWFuYWdlckNvbmZpZyh2YWx1ZTogU2t5RGF0YU1hbmFnZXJDb25maWcpOiB2b2lkIHtcbiAgICB0aGlzLiNkYXRhTWFuYWdlckNvbmZpZy5uZXh0KHZhbHVlKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIGFuIG9ic2VydmFibGUgb2YgZGF0YSB2aWV3IGNvbmZpZyBjaGFuZ2VzIHRoYXQgdmlld3MgYW5kIG90aGVyIGRhdGEgbWFuYWdlciBlbnRpdGllcyBjYW4gc3Vic2NyaWJlIHRvLlxuICAgKi9cbiAgcHVibGljIGdldERhdGFWaWV3c1VwZGF0ZXMoKTogT2JzZXJ2YWJsZTxTa3lEYXRhVmlld0NvbmZpZ1tdPiB7XG4gICAgcmV0dXJuIHRoaXMuI3ZpZXdzO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgYW4gb2JzZXJ2YWJsZSBvZiB0aGUgYWN0aXZlIHZpZXcgSUQgdGhhdCB2aWV3cyBhbmQgb3RoZXIgZGF0YSBtYW5hZ2VyIGVudGl0aWVzIGNhbiBzdWJzY3JpYmUgdG8uXG4gICAqL1xuICBwdWJsaWMgZ2V0QWN0aXZlVmlld0lkVXBkYXRlcygpOiBPYnNlcnZhYmxlPHN0cmluZz4ge1xuICAgIHJldHVybiB0aGlzLiNhY3RpdmVWaWV3SWQ7XG4gIH1cblxuICAvKipcbiAgICogVXBkYXRlcyB0aGUgYWN0aXZlIHZpZXcgSUQuIFRoZSBkYXRhIG1hbmFnZXIgY2hhbmdlcyB0aGUgZGlzcGxheWVkIHZpZXcuXG4gICAqIEBwYXJhbSBpZCBUaGUgbmV3IGFjdGl2ZSB2aWV3IElELlxuICAgKi9cbiAgcHVibGljIHVwZGF0ZUFjdGl2ZVZpZXdJZChpZDogc3RyaW5nKTogdm9pZCB7XG4gICAgdGhpcy4jYWN0aXZlVmlld0lkLm5leHQoaWQpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgdGhlIGBTa3lEYXRhVmlld0NvbmZpZ2AgZm9yIHRoZSBnaXZlbiB2aWV3IElELlxuICAgKiBAcGFyYW0gdmlld0lkIFRoZSBJRCBvZiB0aGUgdmlldyBjb25maWcgdG8gZ2V0LlxuICAgKi9cbiAgcHVibGljIGdldFZpZXdCeUlkKHZpZXdJZDogc3RyaW5nKTogU2t5RGF0YVZpZXdDb25maWcgfCB1bmRlZmluZWQge1xuICAgIGNvbnN0IGN1cnJlbnRWaWV3czogU2t5RGF0YVZpZXdDb25maWdbXSA9IHRoaXMuI3ZpZXdzLnZhbHVlO1xuICAgIGNvbnN0IHZpZXdDb25maWc6IFNreURhdGFWaWV3Q29uZmlnIHwgdW5kZWZpbmVkID0gY3VycmVudFZpZXdzLmZpbmQoXG4gICAgICAodmlldykgPT4gdmlldy5pZCA9PT0gdmlld0lkLFxuICAgICk7XG5cbiAgICByZXR1cm4gdmlld0NvbmZpZztcbiAgfVxuXG4gIC8qKlxuICAgKiBVcGRhdGVzIHRoZSBnaXZlbiB2aWV3IGNvbmZpZy4gVGhlIHJlZ2lzdGVyZWQgdmlldyB3aXRoIHRoZSBzYW1lIElEIGlzIHVwZGF0ZWQgdG8gdGhlXG4gICAqIHByb3ZpZGVkIGNvbmZpZywgc28gaW5jbHVkZSBhbGwgcHJvcGVydGllcyByZWdhcmRsZXNzIG9mIHdoZXRoZXIgdGhleSBjaGFuZ2VkLiBJZiB0aGVcbiAgICogdmlldyB3YXMgbm90IGluaXRpYWxpemVkIGFscmVhZHksIG5vIHVwZGF0ZSBoYXBwZW5zLlxuICAgKiBAcGFyYW0gdmlldyBUaGUgbmV3IGBTa3lEYXRhVmlld0NvbmZpZ2AgY29udGFpbmluZyBhbGwgcHJvcGVydGllcy5cbiAgICovXG4gIHB1YmxpYyB1cGRhdGVWaWV3Q29uZmlnKHZpZXc6IFNreURhdGFWaWV3Q29uZmlnKTogdm9pZCB7XG4gICAgY29uc3QgY3VycmVudFZpZXdzOiBTa3lEYXRhVmlld0NvbmZpZ1tdID0gdGhpcy4jdmlld3MudmFsdWU7XG4gICAgY29uc3QgZXhpc3RpbmdWaWV3SW5kZXggPSBjdXJyZW50Vmlld3MuZmluZEluZGV4KFxuICAgICAgKGN1cnJlbnRWaWV3KSA9PiBjdXJyZW50Vmlldy5pZCA9PT0gdmlldy5pZCxcbiAgICApO1xuXG4gICAgaWYgKGV4aXN0aW5nVmlld0luZGV4ID09PSAtMSkge1xuICAgICAgY29uc29sZS5lcnJvcignQSB2aWV3IHdpdGggdGhlIGlkIHtpZH0gZG9lcyBub3QgZXhpc3QuJywgdmlldy5pZCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGN1cnJlbnRWaWV3c1tleGlzdGluZ1ZpZXdJbmRleF0gPSB2aWV3O1xuICAgICAgdGhpcy4jdmlld3MubmV4dChjdXJyZW50Vmlld3MpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIHB1YmxpYyBzZXRWaWV3a2VlcGVyQ2xhc3Nlcyh2aWV3SWQ6IHN0cmluZywgY2xhc3Nlczogc3RyaW5nW10pOiB2b2lkIHtcbiAgICBjb25zdCB2aWV3a2VlcGVyQ2xhc3NlcyA9IHRoaXMudmlld2tlZXBlckNsYXNzZXMudmFsdWU7XG4gICAgdmlld2tlZXBlckNsYXNzZXNbdmlld0lkXSA9IGNsYXNzZXM7XG5cbiAgICB0aGlzLnZpZXdrZWVwZXJDbGFzc2VzLm5leHQodmlld2tlZXBlckNsYXNzZXMpO1xuICB9XG5cbiAgI2ZpbHRlckRhdGFTdGF0ZVByb3BlcnRpZXMoXG4gICAgc3RhdGU6IFNreURhdGFNYW5hZ2VyU3RhdGUsXG4gICAgcHJvcGVydGllczogKGtleW9mIFNreURhdGFNYW5hZ2VyU3RhdGVPcHRpb25zKVtdIHwgdW5kZWZpbmVkLFxuICApOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiB7XG4gICAgY29uc3Qgc3RhdGVQcm9wZXJ0aWVzID0gc3RhdGUuZ2V0U3RhdGVPcHRpb25zKCk7XG4gICAgY29uc3QgZmlsdGVyZWRTdGF0ZVByb3BlcnRpZXM6IFJlY29yZDxzdHJpbmcsIHVua25vd24+ID0ge307XG5cbiAgICBpZiAocHJvcGVydGllcykge1xuICAgICAgZm9yIChjb25zdCBwcm9wZXJ0eSBvZiBwcm9wZXJ0aWVzKSB7XG4gICAgICAgIGlmIChwcm9wZXJ0eSBpbiBzdGF0ZVByb3BlcnRpZXMpIHtcbiAgICAgICAgICBmaWx0ZXJlZFN0YXRlUHJvcGVydGllc1twcm9wZXJ0eV0gPSBzdGF0ZVByb3BlcnRpZXNbcHJvcGVydHldO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIGZpbHRlcmVkU3RhdGVQcm9wZXJ0aWVzO1xuICB9XG5cbiAgI2dldERlZmF1bHRTdGF0ZUNvbXBhcmF0b3IoXG4gICAgcHJvcGVydGllczogKGtleW9mIFNreURhdGFNYW5hZ2VyU3RhdGVPcHRpb25zKVtdIHwgdW5kZWZpbmVkLFxuICApOiAoc3RhdGUxOiBTa3lEYXRhTWFuYWdlclN0YXRlLCBzdGF0ZTI6IFNreURhdGFNYW5hZ2VyU3RhdGUpID0+IGJvb2xlYW4ge1xuICAgIHJldHVybiAoXG4gICAgICBzdGF0ZTE6IFNreURhdGFNYW5hZ2VyU3RhdGUsXG4gICAgICBzdGF0ZTI6IFNreURhdGFNYW5hZ2VyU3RhdGUsXG4gICAgKTogYm9vbGVhbiA9PiB7XG4gICAgICBjb25zdCBmaWx0ZXJlZFN0YXRlMSA9IHRoaXMuI2ZpbHRlckRhdGFTdGF0ZVByb3BlcnRpZXMoXG4gICAgICAgIHN0YXRlMSxcbiAgICAgICAgcHJvcGVydGllcyxcbiAgICAgICk7XG4gICAgICBjb25zdCBmaWx0ZXJlZFN0YXRlMiA9IHRoaXMuI2ZpbHRlckRhdGFTdGF0ZVByb3BlcnRpZXMoXG4gICAgICAgIHN0YXRlMixcbiAgICAgICAgcHJvcGVydGllcyxcbiAgICAgICk7XG4gICAgICByZXR1cm4gSlNPTi5zdHJpbmdpZnkoZmlsdGVyZWRTdGF0ZTEpID09PSBKU09OLnN0cmluZ2lmeShmaWx0ZXJlZFN0YXRlMik7XG4gICAgfTtcbiAgfVxufVxuIl19
|
307
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YS1tYW5hZ2VyLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvZGF0YS1tYW5hZ2VyL3NyYy9saWIvbW9kdWxlcy9kYXRhLW1hbmFnZXIvZGF0YS1tYW5hZ2VyLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBYSxNQUFNLGVBQWUsQ0FBQztBQUd0RCxPQUFPLEVBQUUsZUFBZSxFQUFjLGFBQWEsRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDM0UsT0FBTyxFQUNMLG9CQUFvQixFQUNwQixNQUFNLEVBQ04sR0FBRyxFQUNILElBQUksRUFDSixTQUFTLEdBQ1YsTUFBTSxnQkFBZ0IsQ0FBQztBQUl4QixPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUNsRSxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQU0vRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQzs7O0FBRTVEOzs7Ozs7O0dBT0c7QUFFSCxNQUFNLE9BQU8scUJBQXFCO0lBR3ZCLGFBQWEsQ0FBZ0M7SUFDN0Msa0JBQWtCLENBQWlEO0lBQ25FLE1BQU0sQ0FBZ0Q7SUFDdEQsZ0JBQWdCLENBQW1EO0lBQ25FLFlBQVksQ0FBOEM7SUFFbkUsY0FBYyxDQUFzQjtJQUNwQyxjQUFjLENBQXVCO0lBQ3JDLFdBQVcsQ0FBNEI7SUFDdkMsZ0JBQWdCLENBQXFCO0lBRXJDLFlBQVksZUFBbUM7UUFieEMsc0JBQWlCLEdBQUcsSUFBSSxlQUFlLENBQTJCLEVBQUUsQ0FBQyxDQUFDO1FBRXBFLGtCQUFhLEdBQUcsSUFBSSxhQUFhLENBQVMsQ0FBQyxDQUFDLENBQUM7UUFDN0MsdUJBQWtCLEdBQUcsSUFBSSxlQUFlLENBQXVCLEVBQUUsQ0FBQyxDQUFDO1FBQ25FLFdBQU0s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QywwQkFBMEIsQ0FDcEQsTUFBTSxFQUNOLFVBQVUsQ0FDWCxDQUFDO1lBQ0YsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLGNBQWMsQ0FBQyxLQUFLLElBQUksQ0FBQyxTQUFTLENBQUMsY0FBYyxDQUFDLENBQUM7UUFDM0UsQ0FBQyxDQUFDO0lBQ0osQ0FBQzs4R0F2WFUscUJBQXFCO2tIQUFyQixxQkFBcUI7OzJGQUFyQixxQkFBcUI7a0JBRGpDLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlLCBPbkRlc3Ryb3kgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFNreVVJQ29uZmlnU2VydmljZSB9IGZyb20gJ0Bza3l1eC9jb3JlJztcblxuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBPYnNlcnZhYmxlLCBSZXBsYXlTdWJqZWN0LCBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQge1xuICBkaXN0aW5jdFVudGlsQ2hhbmdlZCxcbiAgZmlsdGVyLFxuICBtYXAsXG4gIHRha2UsXG4gIHRha2VVbnRpbCxcbn0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5pbXBvcnQgeyBTa3lEYXRhTWFuYWdlckNvbmZpZyB9IGZyb20gJy4vbW9kZWxzL2RhdGEtbWFuYWdlci1jb25maWcnO1xuaW1wb3J0IHsgU2t5RGF0YU1hbmFnZXJJbml0QXJncyB9IGZyb20gJy4vbW9kZWxzL2RhdGEtbWFuYWdlci1pbml0LWFyZ3MnO1xuaW1wb3J0IHsgU2t5RGF0YU1hbmFnZXJTdGF0ZSB9IGZyb20gJy4vbW9kZWxzL2RhdGEtbWFuYWdlci1zdGF0ZSc7XG5pbXBvcnQgeyBTa3lEYXRhTWFuYWdlclN0YXRlQ2hhbmdlIH0gZnJvbSAnLi9tb2RlbHMvZGF0YS1tYW5hZ2VyLXN0YXRlLWNoYW5nZSc7XG5pbXBvcnQgeyBTa3lEYXRhTWFuYWdlclN0YXRlT3B0aW9ucyB9IGZyb20gJy4vbW9kZWxzL2RhdGEtbWFuYWdlci1zdGF0ZS1vcHRpb25zJztcbmltcG9ydCB7IFNreURhdGFNYW5hZ2VyU3RhdGVVcGRhdGVGaWx0ZXJBcmdzIH0gZnJvbSAnLi9tb2RlbHMvZGF0YS1tYW5hZ2VyLXN0YXRlLXVwZGF0ZS1maWx0ZXItYXJncyc7XG5pbXBvcnQgeyBTa3lEYXRhTWFuYWdlclN1bW1hcnkgfSBmcm9tICcuL21vZGVscy9kYXRhLW1hbmFnZXItc3VtbWFyeSc7XG5pbXBvcnQgeyBTa3lEYXRhTWFuYWdlclN1bW1hcnlDaGFuZ2UgfSBmcm9tICcuL21vZGVscy9kYXRhLW1hbmFnZXItc3VtbWFyeS1jaGFuZ2UnO1xuaW1wb3J0IHsgU2t5RGF0YVZpZXdDb25maWcgfSBmcm9tICcuL21vZGVscy9kYXRhLXZpZXctY29uZmlnJztcbmltcG9ydCB7IFNreURhdGFWaWV3U3RhdGUgfSBmcm9tICcuL21vZGVscy9kYXRhLXZpZXctc3RhdGUnO1xuXG4vKipcbiAqIFRoZSBkYXRhIG1hbmFnZXIgc2VydmljZSBwcm92aWRlcyB3YXlzIGZvciBkYXRhIHZpZXdzLCB0b29sYmFyIGl0ZW1zLCBhbmQgbW9yZSB0byBzdGF5IHVwIHRvIGRhdGVcbiAqIHdpdGggdGhlIGFjdGl2ZSB2aWV3IElELCBkYXRhIG1hbmFnZXIgY29uZmlnLCByZWdpc3RlcmVkIHZpZXdzIGFuZCB0aGVpciBjb25maWdzLCBhbmQgZGF0YSBzdGF0ZS5cbiAqIFRoZXJlIGFyZSBtZXRob2RzIHRvIGdldCBjdXJyZW50IHZhbHVlcywgdXBkYXRlIHZhbHVlcywgYW5kIGdldCBzdWJzY3JpcHRpb25zIHRvIHRoZSBjaGFuZ2luZyB2YWx1ZXMuPGJyLz4gPGJyLz5cbiAqIFByb3ZpZGUgdGhpcyBzZXJ2aWNlIGF0IHRoZSBjb21wb25lbnQgbGV2ZWwgZm9yIGVhY2ggaW5zdGFuY2Ugb2YgYSBkYXRhIG1hbmFnZXIuIERvIG5vdFxuICogcHJvdmlkZSBpdCBhdCB0aGUgbW9kdWxlIGxldmVsIG9yIGluIGBhcHAtZXh0cmFzYC4gVGhpcyBhbGxvd3MgbXVsdGlwbGUgZGF0YVxuICogbWFuYWdlcnMgdG8gYmUgdXNlZCBhbmQgc2VsZi1jb250YWluZWQuXG4gKi9cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBTa3lEYXRhTWFuYWdlclNlcnZpY2UgaW1wbGVtZW50cyBPbkRlc3Ryb3kge1xuICBwdWJsaWMgdmlld2tlZXBlckNsYXNzZXMgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PFJlY29yZDxzdHJpbmcsIHN0cmluZ1tdPj4oe30pO1xuXG4gIHJlYWRvbmx5ICNhY3RpdmVWaWV3SWQgPSBuZXcgUmVwbGF5U3ViamVjdDxzdHJpbmc+KDEpO1xuICByZWFkb25seSAjZGF0YU1hbmFnZXJDb25maWcgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PFNreURhdGFNYW5hZ2VyQ29uZmlnPih7fSk7XG4gIHJlYWRvbmx5ICN2aWV3cyA9IG5ldyBCZWhhdmlvclN1YmplY3Q8U2t5RGF0YVZpZXdDb25maWdbXT4oW10pO1xuICByZWFkb25seSAjZGF0YVN0YXRlQ2hhbmdlID0gbmV3IFJlcGxheVN1YmplY3Q8U2t5RGF0YU1hbmFnZXJTdGF0ZUNoYW5nZT4oMSk7XG4gIHJlYWRvbmx5ICNkYXRhU3VtbWFyeSA9IG5ldyBTdWJqZWN0PFNreURhdGFNYW5hZ2VyU3VtbWFyeUNoYW5nZT4oKTtcblxuICAjaXNJbml0aWFsaXplZDogYm9vbGVhbiB8IHVuZGVmaW5lZDtcbiAgI25nVW5zdWJzY3JpYmUgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuICAjaW5pdFNvdXJjZSA9ICdkYXRhTWFuYWdlclNlcnZpY2VJbml0JztcbiAgI3VpQ29uZmlnU2VydmljZTogU2t5VUlDb25maWdTZXJ2aWNlO1xuXG4gIGNvbnN0cnVjdG9yKHVpQ29uZmlnU2VydmljZTogU2t5VUlDb25maWdTZXJ2aWNlKSB7XG4gICAgdGhpcy4jdWlDb25maWdTZXJ2aWNlID0gdWlDb25maWdTZXJ2aWNlO1xuICB9XG5cbiAgcHVibGljIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuI2FjdGl2ZVZpZXdJZC5jb21wbGV0ZSgpO1xuICAgIHRoaXMuI2RhdGFNYW5hZ2VyQ29uZmlnLmNvbXBsZXRlKCk7XG4gICAgdGhpcy4jdmlld3MuY29tcGxldGUoKTtcbiAgICB0aGlzLiNkYXRhU3RhdGVDaGFuZ2UuY29tcGxldGUoKTtcbiAgICB0aGlzLiNuZ1Vuc3Vic2NyaWJlLm5leHQoKTtcbiAgICB0aGlzLiNuZ1Vuc3Vic2NyaWJlLmNvbXBsZXRlKCk7XG4gIH1cblxuICAvKipcbiAgICogSW5pdGlhbGl6ZXMgdGhlIGRhdGEgbWFuYWdlciB3aXRoIHRoZSBnaXZlbiBzZXR0aW5ncyBhbmQgc2V0cyBgaXNJbml0aWFsaXplZGAgdG8gYHRydWVgLlxuICAgKiBUaGlzIG11c3QgYmUgY2FsbGVkIGZvciB0aGUgZGF0YSBtYW5hZ2VyIHRvIHJlbmRlci5cbiAgICogQHBhcmFtIGFyZ3MgVGhlIGluaXRpYWwgYWN0aXZlIHZpZXcgSUQsIGRhdGEgbWFuYWdlciBjb25maWcsIGFuZCBzdGF0ZSB0byB1c2UgZm9yIHRoZSBkYXRhIG1hbmFnZXIuXG4gICAqIElmIGEgc2V0dGluZ3Mga2V5IGlzIHByb3ZpZGVkLCBpdCBjaGVja3MgZm9yIGEgc2F2ZWQgZGF0YSBzdGF0ZSBpbiB0aGUgU0tZIFVJIGNvbmZpZyBzZXJ2aWNlIGJlZm9yZSB1c2luZyB0aGUgZGVmYXVsdCBkYXRhIHN0YXRlXG4gICAqIGFuZCBzYXZlcyBhbnkgc3RhdGUgY2hhbmdlcyB0byB0aGUgc2VydmljZS5cbiAgICovXG4gIHB1YmxpYyBpbml0RGF0YU1hbmFnZXIoYXJnczogU2t5RGF0YU1hbmFnZXJJbml0QXJncyk6IHZvaWQge1xuICAgIGlmICh0aGlzLiNpc0luaXRpYWxpemVkKSB7XG4gICAgICBjb25zb2xlLndhcm4oJ1RoaXMgZGF0YSBtYW5hZ2VyIGluc3RhbmNlIGhhcyBhbHJlYWR5IGJlZW4gaW5pdGlhbGl6ZWQuJyk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy4jaXNJbml0aWFsaXplZCA9IHRydWU7XG5cbiAgICBjb25zdCBkZWZhdWx0RGF0YVN0YXRlID0gYXJncy5kZWZhdWx0RGF0YVN0YXRlO1xuICAgIGNvbnN0IHNldHRpbmdzS2V5ID0gYXJncy5zZXR0aW5nc0tleTtcblxuICAgIHRoaXMudXBkYXRlQWN0aXZlVmlld0lkKGFyZ3MuYWN0aXZlVmlld0lkKTtcbiAgICB0aGlzLnVwZGF0ZURhdGFNYW5hZ2VyQ29uZmlnKGFyZ3MuZGF0YU1hbmFnZXJDb25maWcpO1xuXG4gICAgaWYgKHNldHRpbmdzS2V5KSB7XG4gICAgICB0aGlzLiN1aUNvbmZpZ1NlcnZpY2VcbiAgICAgICAgLmdldENvbmZpZyhzZXR0aW5nc0tleSwgZGVmYXVsdERhdGFTdGF0ZS5nZXRTdGF0ZU9wdGlvbnMoKSlcbiAgICAgICAgLnBpcGUodGFrZSgxKSlcbiAgICAgICAgLnN1YnNjcmliZSgoY29uZmlnOiBTa3lEYXRhTWFuYWdlclN0YXRlT3B0aW9ucykgPT4ge1xuICAgICAgICAgIHRoaXMudXBkYXRlRGF0YVN0YXRlKFxuICAgICAgICAgICAgbmV3IFNreURhdGFNYW5hZ2VyU3RhdGUoY29uZmlnKSxcbiAgICAgICAgICAgIHRoaXMuI2luaXRTb3VyY2UsXG4gICAgICAgICAgKTtcbiAgICAgICAgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMudXBkYXRlRGF0YVN0YXRlKGRlZmF1bHREYXRhU3RhdGUsIHRoaXMuI2luaXRTb3VyY2UpO1xuICAgIH1cblxuICAgIGlmIChzZXR0aW5nc0tleSkge1xuICAgICAgdGhpcy5nZXREYXRhU3RhdGVVcGRhdGVzKHRoaXMuI2luaXRTb3VyY2UpXG4gICAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLiNuZ1Vuc3Vic2NyaWJlKSlcbiAgICAgICAgLnN1YnNjcmliZSgoc3RhdGU6IFNreURhdGFNYW5hZ2VyU3RhdGUpID0+IHtcbiAgICAgICAgICB0aGlzLiN1aUNvbmZpZ1NlcnZpY2VcbiAgICAgICAgICAgIC5zZXRDb25maWcoc2V0dGluZ3NLZXksIHN0YXRlLmdldFN0YXRlT3B0aW9ucygpKVxuICAgICAgICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuI25nVW5zdWJzY3JpYmUpKVxuICAgICAgICAgICAgLnN1YnNjcmliZShcbiAgICAgICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1lbXB0eS1mdW5jdGlvblxuICAgICAgICAgICAgICAoKSA9PiB7fSxcbiAgICAgICAgICAgICAgKGVycikgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnNvbGUud2FybignQ291bGQgbm90IHNhdmUgZGF0YSBtYW5hZ2VyIHNldHRpbmdzLicpO1xuICAgICAgICAgICAgICAgIGNvbnNvbGUud2FybihlcnIpO1xuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgKTtcbiAgICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEluaXRpYWxpemVzIGEgdmlldyB3aXRoaW4gdGhlIGRhdGEgbWFuYWdlci4gVGhpcyBtdXN0IGJlIGNhbGxlZCBmb3IgZWFjaCB2aWV3IGZvciB0aGUgdmlld3MgdG8gYXBwZWFyIHdpdGhpbiB0aGUgZGF0YSBtYW5hZ2VyLlxuICAgKiBAcGFyYW0gdmlld0NvbmZpZyBUaGUgU2t5RGF0YVZpZXdDb25maWcgc2V0dGluZ3MgZm9yIHRoZSB2aWV3IGJlaW5nIHJlZ2lzdGVyZWQuXG4gICAqL1xuICBwdWJsaWMgaW5pdERhdGFWaWV3KHZpZXdDb25maWc6IFNreURhdGFWaWV3Q29uZmlnKTogdm9pZCB7XG4gICAgY29uc3QgY3VycmVudFZpZXdzID0gdGhpcy4jdmlld3MudmFsdWU7XG5cbiAgICBpZiAodGhpcy5nZXRWaWV3QnlJZCh2aWV3Q29uZmlnLmlkKSkge1xuICAgICAgY29uc29sZS53YXJuKFxuICAgICAgICBgQSBkYXRhIG1hbmFnZXIgdmlldyB3aXRoIHRoZSBpZCAke3ZpZXdDb25maWcuaWR9IGhhcyBhbHJlYWR5IGJlZW4gaW5pdGlhbGl6ZWQuYCxcbiAgICAgICk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY3VycmVudFZpZXdzLnB1c2godmlld0NvbmZpZyk7XG4gICAgdGhpcy4jdmlld3MubmV4dChjdXJyZW50Vmlld3MpO1xuXG4gICAgLy8gV2hlbiB0aGUgaW5pdGlhbCBhY3RpdmVWaWV3SWQgaXMgc2V0IHRoZXJlIGFyZSBubyB2aWV3cyByZWdpc3RlcmVkLiBXZSBoYXZlIHRvIHJlLWVtaXRcbiAgICAvLyB0aGUgYWN0aXZlSWQgc28gdGhlIG5ld2x5IHJlZ2lzdGVyZWQgdmlldyBpcyBub3RpZmllZCB0aGF0IGl0IGlzIGFjdGl2ZS5cbiAgICB0aGlzLiNhY3RpdmVWaWV3SWQucGlwZSh0YWtlKDEpKS5zdWJzY3JpYmUoKGlkKSA9PiB7XG4gICAgICB0aGlzLiNhY3RpdmVWaWV3SWQubmV4dChpZCk7XG4gICAgfSk7XG5cbiAgICB0aGlzLiNkYXRhU3RhdGVDaGFuZ2VcbiAgICAgIC5waXBlKHRha2UoMSkpXG4gICAgICAuc3Vic2NyaWJlKChjaGFuZ2UpID0+IHtcbiAgICAgICAgY29uc3QgZGF0YVN0YXRlID0gY2hhbmdlLmRhdGFTdGF0ZTtcbiAgICAgICAgY29uc3QgY3VycmVudFZpZXdTdGF0ZSA9IGRhdGFTdGF0ZS5nZXRWaWV3U3RhdGVCeUlkKHZpZXdDb25maWcuaWQpO1xuXG4gICAgICAgIGlmICghY3VycmVudFZpZXdTdGF0ZSkge1xuICAgICAgICAgIGNvbnN0IG5ld1ZpZXdTdGF0ZSA9IG5ldyBTa3lEYXRhVmlld1N0YXRlKHsgdmlld0lkOiB2aWV3Q29uZmlnLmlkIH0pO1xuXG4gICAgICAgICAgLy8gRW5zdXJlIHRoYXQgdGhlIHZpZXcgc3RhdGUncyBhdmFpbGFibGUgY29sdW1ucyBtYXRjaCB3aXRoIHRoZSB2aWV3IGNvbmZpZy4gQWxzbyxcbiAgICAgICAgICAvLyBhZGQgY29sdW1ucyB0byB0aGUgYGRpc3BsYXllZENvbHVtbklkc2AgYXMgbG9uZyBhcyB0aGV5IGFyZSBub3QgYGluaXRpYWxIaWRlYFxuICAgICAgICAgIGlmICh2aWV3Q29uZmlnLmNvbHVtbk9wdGlvbnMpIHtcbiAgICAgICAgICAgIGNvbnN0IGNvbHVtbklkcyA9IHZpZXdDb25maWcuY29sdW1uT3B0aW9ucy5tYXAoKGNvbHVtbk9wdGlvbnMpID0+IHtcbiAgICAgICAgICAgICAgcmV0dXJuIGNvbHVtbk9wdGlvbnMuaWQ7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIGNvbnN0IGRpc3BsYXllZENvbHVtbklkcyA9IHZpZXdDb25maWcuY29sdW1uT3B0aW9uc1xuICAgICAgICAgICAgICAuZmlsdGVyKChjb2x1bW5PcHRpb24pID0+IHtcbiAgICAgICAgICAgICAgICByZXR1cm4gIWNvbHVtbk9wdGlvbi5pbml0aWFsSGlkZTtcbiAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgLm1hcCgoY29sdW1uT3B0aW9uKSA9PiB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGNvbHVtbk9wdGlvbi5pZDtcbiAgICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIG5ld1ZpZXdTdGF0ZS5jb2x1bW5JZHMgPSBjb2x1bW5JZHM7XG4gICAgICAgICAgICBuZXdWaWV3U3RhdGUuZGlzcGxheWVkQ29sdW1uSWRzID0gZGlzcGxheWVkQ29sdW1uSWRzO1xuICAgICAgICAgIH1cbiAgICAgICAgICBjb25zdCBuZXdEYXRhU3RhdGUgPSBkYXRhU3RhdGUuYWRkT3JVcGRhdGVWaWV3KFxuICAgICAgICAgICAgdmlld0NvbmZpZy5pZCxcbiAgICAgICAgICAgIG5ld1ZpZXdTdGF0ZSxcbiAgICAgICAgICApO1xuXG4gICAgICAgICAgdGhpcy51cGRhdGVEYXRhU3RhdGUobmV3RGF0YVN0YXRlLCB0aGlzLiNpbml0U291cmNlKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBjb25zdCBjdXJyZW50QXZhaWxhYmxlQ29sdW1uSWRzID1cbiAgICAgICAgICAgIHZpZXdDb25maWcuY29sdW1uT3B0aW9ucz8ubWFwKChjb2x1bW5PcHRpb25zKSA9PiB7XG4gICAgICAgICAgICAgIHJldHVybiBjb2x1bW5PcHRpb25zLmlkO1xuICAgICAgICAgICAgfSkgfHwgW107XG5cbiAgICAgICAgICAvLyBFbnN1cmUgdGhhdCB0aGUgdmlldyBzdGF0ZSdzIGF2YWlsYWJsZSBjb2x1bW5zIG1hdGNoIHdpdGggdGhlIHZpZXcgY29uZmlnLiBBbHNvLFxuICAgICAgICAgIC8vIGFkZCBuZXcgY29sdW1ucyB0byB0aGUgYGRpc3BsYXllZENvbHVtbklkc2AgYXMgbG9uZyBhcyB0aGV5IGFyZSBub3QgYGluaXRpYWxIaWRlYC5cbiAgICAgICAgICAvLyBXZSBvbmx5IGFkZCBjb2x1bW5zIHRvIGBkaXNwbGF5ZWRDb2x1bW5zSWRzYCBpZiB3ZSBoYWQgcHJldmlvdXNseSB0cmFja2VkXG4gICAgICAgICAgLy8gYGNvbHVtbklkc2AgdG8gYXZvaWQgYnJlYWtpbmcgY2hhbmdlcy5cbiAgICAgICAgICBpZiAoY3VycmVudFZpZXdTdGF0ZS5jb2x1bW5JZHMubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgbGV0IG5ld0NvbHVtbklkcyA9IGN1cnJlbnRBdmFpbGFibGVDb2x1bW5JZHM/LmZpbHRlcihcbiAgICAgICAgICAgICAgKGlkKSA9PiBjdXJyZW50Vmlld1N0YXRlLmNvbHVtbklkcy5pbmRleE9mKGlkKSA8IDAsXG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgbmV3Q29sdW1uSWRzID0gbmV3Q29sdW1uSWRzPy5maWx0ZXIoKGNvbHVtbklkKSA9PiB7XG4gICAgICAgICAgICAgIHJldHVybiB2aWV3Q29uZmlnLmNvbHVtbk9wdGlvbnM/LmZpbmQoXG4gICAgICAgICAgICAgICAgKGNvbHVtbk9wdGlvbikgPT5cbiAgICAgICAgICAgICAgICAgIGNvbHVtbk9wdGlvbi5pZCA9PT0gY29sdW1uSWQgJiYgIWNvbHVtbk9wdGlvbi5pbml0aWFsSGlkZSxcbiAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICAvLyBBZGQgdGhlIGNvbHVtbiBJRHMgdGhhdCBub3cgZXhpc3QgdG8gdGhlIGRhdGEgbWFuYWdlciBzdGF0ZSBib3RoIGFzIGF2YWlsYWJsZVxuICAgICAgICAgICAgLy8gYW5kIGFzIHNob3duLlxuICAgICAgICAgICAgY3VycmVudFZpZXdTdGF0ZS5kaXNwbGF5ZWRDb2x1bW5JZHMgPVxuICAgICAgICAgICAgICBjdXJyZW50Vmlld1N0YXRlLmRpc3BsYXllZENvbHVtbklkcy5jb25jYXQobmV3Q29sdW1uSWRzKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgLy8gQWRkIHRoZSBjb2x1bW4gSURzIHRoYXQgbm93IGV4aXN0IHRvIHRoZSBkYXRhIG1hbmFnZXIgc3RhdGUgYm90aCBhcyBhdmFpbGFibGVcbiAgICAgICAgICAvLyBhbmQgYXMgc2hvd24uXG4gICAgICAgICAgY3VycmVudFZpZXdTdGF0ZS5jb2x1bW5JZHMgPSBjdXJyZW50QXZhaWxhYmxlQ29sdW1uSWRzO1xuXG4gICAgICAgICAgY29uc3QgbmV3RGF0YVN0YXRlID0gZGF0YVN0YXRlLmFkZE9yVXBkYXRlVmlldyhcbiAgICAgICAgICAgIHZpZXdDb25maWcuaWQsXG4gICAgICAgICAgICBjdXJyZW50Vmlld1N0YXRlLFxuICAgICAgICAgICk7XG5cbiAgICAgICAgICB0aGlzLnVwZGF0ZURhdGFTdGF0ZShuZXdEYXRhU3RhdGUsIHRoaXMuI2luaXRTb3VyY2UpO1xuICAgICAgICB9XG4gICAgICB9KVxuICAgICAgLnVuc3Vic2NyaWJlKCk7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyBhbiBvYnNlcnZhYmxlIG9mIGRhdGEgc3RhdGUgY2hhbmdlcyB0aGF0IHZpZXdzIGFuZCBvdGhlciBkYXRhIG1hbmFnZXIgZW50aXRpZXMgY2FuIHN1YnNjcmliZSB0by5cbiAgICogSXQgZXhjbHVkZXMgdXBkYXRlcyBvcmlnaW5hdGluZyBmcm9tIHRoZSBwcm92aWRlZCBzb3VyY2UuIFRoaXMgYWxsb3dzIHN1YnNjcmliZXJzIHRvIG9ubHkgcmVzcG9uZCB0b1xuICAgKiBjaGFuZ2VzIHRoZXkgZGlkIG5vdCBjcmVhdGUgYW5kIGhlbHBzIHByZXZlbnQgaW5maW5pdGUgbG9vcHMgb2YgdXBkYXRlcyBhbmQgcmVzcG9uc2VzLlxuICAgKiBAcGFyYW0gc291cmNlSWQgVGhlIElEIG9mIHRoZSBlbnRpdHkgc3Vic2NyaWJpbmcgdG8gZGF0YSBzdGF0ZSB1cGRhdGVzLiBUaGlzIGNhbiBiZSBhbnkgdmFsdWUgeW91IGNob29zZVxuICAgKiBidXQgc2hvdWxkIGJlIHVuaXF1ZSB3aXRoaW4gdGhlIGRhdGEgbWFuYWdlciBpbnN0YW5jZSBhbmQgc2hvdWxkIGFsc28gYmUgdXNlZCB3aGVuIHRoYXQgZW50aXR5IHVwZGF0ZXMgdGhlIHN0YXRlLlxuICAgKi9cbiAgcHVibGljIGdldERhdGFTdGF0ZVVwZGF0ZXMoXG4gICAgc291cmNlSWQ6IHN0cmluZyxcbiAgICB1cGRhdGVGaWx0ZXI/OiBTa3lEYXRhTWFuYWdlclN0YXRlVXBkYXRlRmlsdGVyQXJncyxcbiAgKTogT2JzZXJ2YWJsZTxTa3lEYXRhTWFuYWdlclN0YXRlPiB7XG4gICAgLy8gZmlsdGVyIG91dCBldmVudHMgZnJvbSB0aGUgcHJvdmlkZWQgc291cmNlIGFuZCBlbWl0IGp1c3QgdGhlIGRhdGFTdGF0ZVxuICAgIGlmICh1cGRhdGVGaWx0ZXIpIHtcbiAgICAgIHJldHVybiB0aGlzLiNkYXRhU3RhdGVDaGFuZ2UucGlwZShcbiAgICAgICAgZmlsdGVyKChzdGF0ZUNoYW5nZSkgPT4gc291cmNlSWQgIT09IHN0YXRlQ2hhbmdlLnNvdXJjZSksXG4gICAgICAgIG1hcCgoc3RhdGVDaGFuZ2UpID0+IHN0YXRlQ2hhbmdlLmRhdGFTdGF0ZSksXG4gICAgICAgIHVwZGF0ZUZpbHRlci5jb21wYXJhdG9yXG4gICAgICAgICAgPyBkaXN0aW5jdFVudGlsQ2hhbmdlZCh1cGRhdGVGaWx0ZXIuY29tcGFyYXRvcilcbiAgICAgICAgICA6IGRpc3RpbmN0VW50aWxDaGFuZ2VkKFxuICAgICAgICAgICAgICB0aGlzLiNnZXREZWZhdWx0U3RhdGVDb21wYXJhdG9yKFxuICAgICAgICAgICAgICAgIHVwZGF0ZUZpbHRlci5wcm9wZXJ0aWVzIGFzIChrZXlvZiBTa3lEYXRhTWFuYWdlclN0YXRlT3B0aW9ucylbXSxcbiAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICksXG4gICAgICApO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gdGhpcy4jZGF0YVN0YXRlQ2hhbmdlLnBpcGUoXG4gICAgICAgIGZpbHRlcigoc3RhdGVDaGFuZ2UpID0+IHNvdXJjZUlkICE9PSBzdGF0ZUNoYW5nZS5zb3VyY2UpLFxuICAgICAgICBtYXAoKHN0YXRlQ2hhbmdlKSA9PiBzdGF0ZUNoYW5nZS5kYXRhU3RhdGUpLFxuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogVXBkYXRlcyB0aGUgZGF0YSBzdGF0ZSBhbmQgZW1pdHMgYSBuZXcgdmFsdWUgdG8gZW50aXRpZXMgc3Vic2NyaWJlZCB0byBkYXRhIHN0YXRlIGNoYW5nZXMuXG4gICAqIEBwYXJhbSBzdGF0ZSBUaGUgbmV3IGBTa3lEYXRhTWFuYWdlclN0YXRlYCB2YWx1ZS5cbiAgICogQHBhcmFtIHNvdXJjZUlkIFRoZSBJRCBvZiB0aGUgZW50aXR5IHVwZGF0aW5nIHRoZSBzdGF0ZS4gVGhpcyBjYW4gYmUgYW55IHZhbHVlIHlvdSBjaG9vc2UsXG4gICAqIGJ1dCBzaG91bGQgYmUgdW5pcXVlIHdpdGhpbiB0aGUgZGF0YSBtYW5hZ2VyIGluc3RhbmNlIGFuZCBzaG91bGQgYWxzbyBiZSB1c2VkIHdoZW4gdGhhdCBlbnRpdHlcbiAgICogc3Vic2NyaWJlcyB0byBzdGF0ZSBjaGFuZ2VzIGZyb20gYGdldERhdGFTdGF0ZVVwZGF0ZXNgLlxuICAgKi9cbiAgcHVibGljIHVwZGF0ZURhdGFTdGF0ZShzdGF0ZTogU2t5RGF0YU1hbmFnZXJTdGF0ZSwgc291cmNlSWQ6IHN0cmluZyk6IHZvaWQge1xuICAgIGNvbnN0IG5ld1N0YXRlID0gbmV3IFNreURhdGFNYW5hZ2VyU3RhdGUoc3RhdGUuZ2V0U3RhdGVPcHRpb25zKCkpO1xuICAgIGNvbnN0IG5ld1N0YXRlQ2hhbmdlID0gbmV3IFNreURhdGFNYW5hZ2VyU3RhdGVDaGFuZ2UobmV3U3RhdGUsIHNvdXJjZUlkKTtcblxuICAgIHRoaXMuI2RhdGFTdGF0ZUNoYW5nZS5uZXh0KG5ld1N0YXRlQ2hhbmdlKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIGFuIG9ic2VydmFibGUgb2YgZGF0YSBzdW1tYXJ5IGNoYW5nZXMgdGhhdCB2aWV3cyBhbmQgb3RoZXIgZGF0YSBtYW5hZ2VyIGVudGl0aWVzIGNhbiBzdWJzY3JpYmUgdG8uXG4gICAqIEl0IGV4Y2x1ZGVzIHVwZGF0ZXMgb3JpZ2luYXRpbmcgZnJvbSB0aGUgcHJvdmlkZWQgc291cmNlLiBUaGlzIGFsbG93cyBzdWJzY3JpYmVycyB0byBvbmx5IHJlc3BvbmQgdG9cbiAgICogY2hhbmdlcyB0aGV5IGRpZCBub3QgY3JlYXRlIGFuZCBoZWxwcyBwcmV2ZW50IGluZmluaXRlIGxvb3BzIG9mIHVwZGF0ZXMgYW5kIHJlc3BvbnNlcy5cbiAgICogQHBhcmFtIHNvdXJjZUlkIFRoZSBJRCBvZiB0aGUgZW50aXR5IHN1YnNjcmliaW5nIHRvIGRhdGEgc3VtbWFyeSB1cGRhdGVzLiBUaGlzIGNhbiBiZSBhbnkgdmFsdWUgeW91IGNob29zZVxuICAgKiBidXQgc2hvdWxkIGJlIHVuaXF1ZSB3aXRoaW4gdGhlIGRhdGEgbWFuYWdlciBpbnN0YW5jZSBhbmQgc2hvdWxkIGFsc28gYmUgdXNlZCB3aGVuIHRoYXQgZW50aXR5IHVwZGF0ZXMgdGhlIHN1bW1hcnkuXG4gICAqL1xuICBwdWJsaWMgZ2V0RGF0YVN1bW1hcnlVcGRhdGVzKFxuICAgIHNvdXJjZUlkOiBzdHJpbmcsXG4gICk6IE9ic2VydmFibGU8U2t5RGF0YU1hbmFnZXJTdW1tYXJ5PiB7XG4gICAgcmV0dXJuIHRoaXMuI2RhdGFTdW1tYXJ5LnBpcGUoXG4gICAgICBmaWx0ZXIoKHN1bW1hcnlDaGFuZ2UpID0+IHNvdXJjZUlkICE9PSBzdW1tYXJ5Q2hhbmdlLnNvdXJjZSksXG4gICAgICBtYXAoKHN1bW1hcnlDaGFuZ2UpID0+IHN1bW1hcnlDaGFuZ2UuZGF0YVN1bW1hcnkpLFxuICAgICk7XG4gIH1cblxuICAvKipcbiAgICogVXBkYXRlcyB0aGUgZGF0YSBzdW1tYXJ5IGFuZCBlbWl0cyBhIG5ldyB2YWx1ZSB0byBlbnRpdGllcyBzdWJzY3JpYmVkIHRvIGRhdGEgc3VtbWFyeSBjaGFuZ2VzLlxuICAgKiBAcGFyYW0gc3VtbWFyeSBUaGUgbmV3IGBTa3lEYXRhTWFuYWdlclN1bW1hcnlgIHZhbHVlLlxuICAgKiBAcGFyYW0gc291cmNlSWQgVGhlIElEIG9mIHRoZSBlbnRpdHkgdXBkYXRpbmcgdGhlIHN1bW1hcnkuIFRoaXMgY2FuIGJlIGFueSB2YWx1ZSB5b3UgY2hvb3NlLFxuICAgKiBidXQgc2hvdWxkIGJlIHVuaXF1ZSB3aXRoaW4gdGhlIGRhdGEgbWFuYWdlciBpbnN0YW5jZSBhbmQgc2hvdWxkIGFsc28gYmUgdXNlZCB3aGVuIHRoYXQgZW50aXR5XG4gICAqIHN1YnNjcmliZXMgdG8gc3VtbWFyeSBjaGFuZ2VzIGZyb20gYGdldERhdGFTdW1tYXJ5VXBkYXRlc2AuXG4gICAqL1xuICBwdWJsaWMgdXBkYXRlRGF0YVN1bW1hcnkoXG4gICAgc3VtbWFyeTogU2t5RGF0YU1hbmFnZXJTdW1tYXJ5LFxuICAgIHNvdXJjZUlkOiBzdHJpbmcsXG4gICk6IHZvaWQge1xuICAgIHRoaXMuI2RhdGFTdW1tYXJ5Lm5leHQoeyBkYXRhU3VtbWFyeTogc3VtbWFyeSwgc291cmNlOiBzb3VyY2VJZCB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIHRoZSBjdXJyZW50IGBTa3lEYXRhTWFuYWdlckNvbmZpZ2AuXG4gICAqL1xuICBwdWJsaWMgZ2V0Q3VycmVudERhdGFNYW5hZ2VyQ29uZmlnKCk6IFNreURhdGFNYW5hZ2VyQ29uZmlnIHtcbiAgICByZXR1cm4gdGhpcy4jZGF0YU1hbmFnZXJDb25maWcudmFsdWU7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyBhbiBvYnNlcnZhYmxlIG9mIGRhdGEgbWFuYWdlciBjb25maWcgY2hhbmdlcyB0aGF0IHZpZXdzIGFuZCBvdGhlciBkYXRhIG1hbmFnZXIgZW50aXRpZXMgY2FuIHN1YnNjcmliZSB0by5cbiAgICovXG4gIHB1YmxpYyBnZXREYXRhTWFuYWdlckNvbmZpZ1VwZGF0ZXMoKTogT2JzZXJ2YWJsZTxTa3lEYXRhTWFuYWdlckNvbmZpZz4ge1xuICAgIHJldHVybiB0aGlzLiNkYXRhTWFuYWdlckNvbmZpZztcbiAgfVxuXG4gIC8qKlxuICAgKiBVcGRhdGVzIHRoZSBkYXRhIG1hbmFnZXIgY29uZmlnIGFuZCBlbWl0cyBhIG5ldyB2YWx1ZSB0byBlbnRpdGllcyBzdWJzY3JpYmVkIHRvIGRhdGEgY29uZmlnIGNoYW5nZXMuXG4gICAqIEBwYXJhbSB2YWx1ZSBUaGUgbmV3IGBTa3lEYXRhTWFuYWdlckNvbmZpZ2AgdmFsdWUuXG4gICAqL1xuICBwdWJsaWMgdXBkYXRlRGF0YU1hbmFnZXJDb25maWcodmFsdWU6IFNreURhdGFNYW5hZ2VyQ29uZmlnKTogdm9pZCB7XG4gICAgdGhpcy4jZGF0YU1hbmFnZXJDb25maWcubmV4dCh2YWx1ZSk7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyBhbiBvYnNlcnZhYmxlIG9mIGRhdGEgdmlldyBjb25maWcgY2hhbmdlcyB0aGF0IHZpZXdzIGFuZCBvdGhlciBkYXRhIG1hbmFnZXIgZW50aXRpZXMgY2FuIHN1YnNjcmliZSB0by5cbiAgICovXG4gIHB1YmxpYyBnZXREYXRhVmlld3NVcGRhdGVzKCk6IE9ic2VydmFibGU8U2t5RGF0YVZpZXdDb25maWdbXT4ge1xuICAgIHJldHVybiB0aGlzLiN2aWV3cztcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIGFuIG9ic2VydmFibGUgb2YgdGhlIGFjdGl2ZSB2aWV3IElEIHRoYXQgdmlld3MgYW5kIG90aGVyIGRhdGEgbWFuYWdlciBlbnRpdGllcyBjYW4gc3Vic2NyaWJlIHRvLlxuICAgKi9cbiAgcHVibGljIGdldEFjdGl2ZVZpZXdJZFVwZGF0ZXMoKTogT2JzZXJ2YWJsZTxzdHJpbmc+IHtcbiAgICByZXR1cm4gdGhpcy4jYWN0aXZlVmlld0lkO1xuICB9XG5cbiAgLyoqXG4gICAqIFVwZGF0ZXMgdGhlIGFjdGl2ZSB2aWV3IElELiBUaGUgZGF0YSBtYW5hZ2VyIGNoYW5nZXMgdGhlIGRpc3BsYXllZCB2aWV3LlxuICAgKiBAcGFyYW0gaWQgVGhlIG5ldyBhY3RpdmUgdmlldyBJRC5cbiAgICovXG4gIHB1YmxpYyB1cGRhdGVBY3RpdmVWaWV3SWQoaWQ6IHN0cmluZyk6IHZvaWQge1xuICAgIHRoaXMuI2FjdGl2ZVZpZXdJZC5uZXh0KGlkKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIHRoZSBgU2t5RGF0YVZpZXdDb25maWdgIGZvciB0aGUgZ2l2ZW4gdmlldyBJRC5cbiAgICogQHBhcmFtIHZpZXdJZCBUaGUgSUQgb2YgdGhlIHZpZXcgY29uZmlnIHRvIGdldC5cbiAgICovXG4gIHB1YmxpYyBnZXRWaWV3QnlJZCh2aWV3SWQ6IHN0cmluZyk6IFNreURhdGFWaWV3Q29uZmlnIHwgdW5kZWZpbmVkIHtcbiAgICBjb25zdCBjdXJyZW50Vmlld3M6IFNreURhdGFWaWV3Q29uZmlnW10gPSB0aGlzLiN2aWV3cy52YWx1ZTtcbiAgICBjb25zdCB2aWV3Q29uZmlnOiBTa3lEYXRhVmlld0NvbmZpZyB8IHVuZGVmaW5lZCA9IGN1cnJlbnRWaWV3cy5maW5kKFxuICAgICAgKHZpZXcpID0+IHZpZXcuaWQgPT09IHZpZXdJZCxcbiAgICApO1xuXG4gICAgcmV0dXJuIHZpZXdDb25maWc7XG4gIH1cblxuICAvKipcbiAgICogVXBkYXRlcyB0aGUgZ2l2ZW4gdmlldyBjb25maWcuIFRoZSByZWdpc3RlcmVkIHZpZXcgd2l0aCB0aGUgc2FtZSBJRCBpcyB1cGRhdGVkIHRvIHRoZVxuICAgKiBwcm92aWRlZCBjb25maWcsIHNvIGluY2x1ZGUgYWxsIHByb3BlcnRpZXMgcmVnYXJkbGVzcyBvZiB3aGV0aGVyIHRoZXkgY2hhbmdlZC4gSWYgdGhlXG4gICAqIHZpZXcgd2FzIG5vdCBpbml0aWFsaXplZCBhbHJlYWR5LCBubyB1cGRhdGUgaGFwcGVucy5cbiAgICogQHBhcmFtIHZpZXcgVGhlIG5ldyBgU2t5RGF0YVZpZXdDb25maWdgIGNvbnRhaW5pbmcgYWxsIHByb3BlcnRpZXMuXG4gICAqL1xuICBwdWJsaWMgdXBkYXRlVmlld0NvbmZpZyh2aWV3OiBTa3lEYXRhVmlld0NvbmZpZyk6IHZvaWQge1xuICAgIGNvbnN0IGN1cnJlbnRWaWV3czogU2t5RGF0YVZpZXdDb25maWdbXSA9IHRoaXMuI3ZpZXdzLnZhbHVlO1xuICAgIGNvbnN0IGV4aXN0aW5nVmlld0luZGV4ID0gY3VycmVudFZpZXdzLmZpbmRJbmRleChcbiAgICAgIChjdXJyZW50VmlldykgPT4gY3VycmVudFZpZXcuaWQgPT09IHZpZXcuaWQsXG4gICAgKTtcblxuICAgIGlmIChleGlzdGluZ1ZpZXdJbmRleCA9PT0gLTEpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoJ0EgdmlldyB3aXRoIHRoZSBpZCB7aWR9IGRvZXMgbm90IGV4aXN0LicsIHZpZXcuaWQpO1xuICAgIH0gZWxzZSB7XG4gICAgICBjdXJyZW50Vmlld3NbZXhpc3RpbmdWaWV3SW5kZXhdID0gdmlldztcbiAgICAgIHRoaXMuI3ZpZXdzLm5leHQoY3VycmVudFZpZXdzKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQGludGVybmFsXG4gICAqL1xuICBwdWJsaWMgc2V0Vmlld2tlZXBlckNsYXNzZXModmlld0lkOiBzdHJpbmcsIGNsYXNzZXM6IHN0cmluZ1tdKTogdm9pZCB7XG4gICAgY29uc3Qgdmlld2tlZXBlckNsYXNzZXMgPSB0aGlzLnZpZXdrZWVwZXJDbGFzc2VzLnZhbHVlO1xuICAgIHZpZXdrZWVwZXJDbGFzc2VzW3ZpZXdJZF0gPSBjbGFzc2VzO1xuXG4gICAgdGhpcy52aWV3a2VlcGVyQ2xhc3Nlcy5uZXh0KHZpZXdrZWVwZXJDbGFzc2VzKTtcbiAgfVxuXG4gICNmaWx0ZXJEYXRhU3RhdGVQcm9wZXJ0aWVzKFxuICAgIHN0YXRlOiBTa3lEYXRhTWFuYWdlclN0YXRlLFxuICAgIHByb3BlcnRpZXM6IChrZXlvZiBTa3lEYXRhTWFuYWdlclN0YXRlT3B0aW9ucylbXSB8IHVuZGVmaW5lZCxcbiAgKTogUmVjb3JkPHN0cmluZywgdW5rbm93bj4ge1xuICAgIGNvbnN0IHN0YXRlUHJvcGVydGllcyA9IHN0YXRlLmdldFN0YXRlT3B0aW9ucygpO1xuICAgIGNvbnN0IGZpbHRlcmVkU3RhdGVQcm9wZXJ0aWVzOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiA9IHt9O1xuXG4gICAgaWYgKHByb3BlcnRpZXMpIHtcbiAgICAgIGZvciAoY29uc3QgcHJvcGVydHkgb2YgcHJvcGVydGllcykge1xuICAgICAgICBpZiAocHJvcGVydHkgaW4gc3RhdGVQcm9wZXJ0aWVzKSB7XG4gICAgICAgICAgZmlsdGVyZWRTdGF0ZVByb3BlcnRpZXNbcHJvcGVydHldID0gc3RhdGVQcm9wZXJ0aWVzW3Byb3BlcnR5XTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBmaWx0ZXJlZFN0YXRlUHJvcGVydGllcztcbiAgfVxuXG4gICNnZXREZWZhdWx0U3RhdGVDb21wYXJhdG9yKFxuICAgIHByb3BlcnRpZXM6IChrZXlvZiBTa3lEYXRhTWFuYWdlclN0YXRlT3B0aW9ucylbXSB8IHVuZGVmaW5lZCxcbiAgKTogKHN0YXRlMTogU2t5RGF0YU1hbmFnZXJTdGF0ZSwgc3RhdGUyOiBTa3lEYXRhTWFuYWdlclN0YXRlKSA9PiBib29sZWFuIHtcbiAgICByZXR1cm4gKFxuICAgICAgc3RhdGUxOiBTa3lEYXRhTWFuYWdlclN0YXRlLFxuICAgICAgc3RhdGUyOiBTa3lEYXRhTWFuYWdlclN0YXRlLFxuICAgICk6IGJvb2xlYW4gPT4ge1xuICAgICAgY29uc3QgZmlsdGVyZWRTdGF0ZTEgPSB0aGlzLiNmaWx0ZXJEYXRhU3RhdGVQcm9wZXJ0aWVzKFxuICAgICAgICBzdGF0ZTEsXG4gICAgICAgIHByb3BlcnRpZXMsXG4gICAgICApO1xuICAgICAgY29uc3QgZmlsdGVyZWRTdGF0ZTIgPSB0aGlzLiNmaWx0ZXJEYXRhU3RhdGVQcm9wZXJ0aWVzKFxuICAgICAgICBzdGF0ZTIsXG4gICAgICAgIHByb3BlcnRpZXMsXG4gICAgICApO1xuICAgICAgcmV0dXJuIEpTT04uc3RyaW5naWZ5KGZpbHRlcmVkU3RhdGUxKSA9PT0gSlNPTi5zdHJpbmdpZnkoZmlsdGVyZWRTdGF0ZTIpO1xuICAgIH07XG4gIH1cbn1cbiJdfQ==
|
@@ -0,0 +1,2 @@
|
|
1
|
+
export {};
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YS1tYW5hZ2VyLXN1bW1hcnktY2hhbmdlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21wb25lbnRzL2RhdGEtbWFuYWdlci9zcmMvbGliL21vZHVsZXMvZGF0YS1tYW5hZ2VyL21vZGVscy9kYXRhLW1hbmFnZXItc3VtbWFyeS1jaGFuZ2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFNreURhdGFNYW5hZ2VyU3VtbWFyeSB9IGZyb20gJy4vZGF0YS1tYW5hZ2VyLXN1bW1hcnknO1xuXG4vKipcbiAqIEBpbnRlcm5hbFxuICogQSBzdW1tYXJ5IG9mIHRoZSBkYXRhIGRpc3BsYXllZCB3aXRoaW4gdGhlIGRhdGEgbWFuYWdlciBhbmQgdGhlIHNvdXJjZSBvZiB0aGUgY2hhbmdlLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFNreURhdGFNYW5hZ2VyU3VtbWFyeUNoYW5nZSB7XG4gIGRhdGFTdW1tYXJ5OiBTa3lEYXRhTWFuYWdlclN1bW1hcnk7XG4gIHNvdXJjZTogc3RyaW5nO1xufVxuIl19
|
@@ -0,0 +1,2 @@
|
|
1
|
+
export {};
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YS1tYW5hZ2VyLXN1bW1hcnkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvZGF0YS1tYW5hZ2VyL3NyYy9saWIvbW9kdWxlcy9kYXRhLW1hbmFnZXIvbW9kZWxzL2RhdGEtbWFuYWdlci1zdW1tYXJ5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIENvbnRhaW5zIHN1bW1hcnkgZGV0YWlscyBvZiB0aGUgZGF0YSBkaXNwbGF5ZWQgd2l0aGluIHRoZSBkYXRhIG1hbmFnZXIuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgU2t5RGF0YU1hbmFnZXJTdW1tYXJ5IHtcbiAgLyoqXG4gICAqIFRoZSB0b3RhbCBudW1iZXIgb2YgaXRlbXMgaW4gdGhlIGRhdGEgc2V0LlxuICAgKi9cbiAgdG90YWxJdGVtczogbnVtYmVyO1xuICAvKipcbiAgICogVGhlIHRvdGFsIG51bWJlciBvZiBpdGVtcyB0aGF0IG1hdGNoIHRoZSBzZWFyY2ggYW5kIGZpbHRlciBjcml0ZXJpYS5cbiAgICovXG4gIGl0ZW1zTWF0Y2hpbmc6IG51bWJlcjtcbn1cbiJdfQ==
|
@@ -36,6 +36,15 @@ const RESOURCES = {
|
|
36
36
|
skyux_data_manager_select_column_status_indicator_title: {
|
37
37
|
message: 'Select at least one column.',
|
38
38
|
},
|
39
|
+
skyux_data_manager_status_update_with_selections: {
|
40
|
+
message: '{0} of {1} items meet criteria and {2} selected.',
|
41
|
+
},
|
42
|
+
skyux_data_manager_status_update_without_selections: {
|
43
|
+
message: '{0} of {1} items meet criteria.',
|
44
|
+
},
|
45
|
+
skyux_data_manager_status_update_only_selected: {
|
46
|
+
message: '{0} of {1} items meet criteria and {2} selected. Only selected items are displayed.',
|
47
|
+
},
|
39
48
|
},
|
40
49
|
};
|
41
50
|
SkyLibResourcesService.addResources(RESOURCES);
|
@@ -71,4 +80,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.9", ngImpor
|
|
71
80
|
],
|
72
81
|
}]
|
73
82
|
}] });
|
74
|
-
//# sourceMappingURL=data:application/json;base64,
|
83
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2t5LWRhdGEtbWFuYWdlci1yZXNvdXJjZXMubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21wb25lbnRzL2RhdGEtbWFuYWdlci9zcmMvbGliL21vZHVsZXMvc2hhcmVkL3NreS1kYXRhLW1hbmFnZXItcmVzb3VyY2VzLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwwQkFBMEI7QUFFMUI7Ozs7O0dBS0c7QUFDSCxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFDTCwyQkFBMkIsRUFFM0IsYUFBYSxFQUdiLHNCQUFzQixFQUN0QixxQkFBcUIsR0FDdEIsTUFBTSxhQUFhLENBQUM7O0FBRXJCLE1BQU0sU0FBUyxHQUEwQztJQUN2RCxPQUFPLEVBQUU7UUFDUCxzQ0FBc0MsRUFBRTtZQUN0QyxPQUFPLEVBQUUsb0NBQW9DO1NBQzlDO1FBQ0QsNkNBQTZDLEVBQUUsRUFBRSxPQUFPLEVBQUUsZUFBZSxFQUFFO1FBQzNFLHNDQUFzQyxFQUFFLEVBQUUsT0FBTyxFQUFFLFFBQVEsRUFBRTtRQUM3RCwrQ0FBK0MsRUFBRTtZQUMvQyxPQUFPLEVBQUUsZ0JBQWdCO1NBQzFCO1FBQ0QsMENBQTBDLEVBQUUsRUFBRSxPQUFPLEVBQUUsWUFBWSxFQUFFO1FBQ3JFLDhDQUE4QyxFQUFFO1lBQzlDLE9BQU8sRUFBRSx3QkFBd0I7U0FDbEM7UUFDRCx5Q0FBeUMsRUFBRSxFQUFFLE9BQU8sRUFBRSxXQUFXLEVBQUU7UUFDbkUsa0RBQWtELEVBQUU7WUFDbEQsT0FBTyxFQUFFLHdCQUF3QjtTQUNsQztRQUNELDZDQUE2QyxFQUFFO1lBQzdDLE9BQU8sRUFBRSwwQkFBMEI7U0FDcEM7UUFDRCw0Q0FBNEMsRUFBRTtZQUM1QyxPQUFPLEVBQUUsd0JBQXdCO1NBQ2xDO1FBQ0QsdUNBQXVDLEVBQUUsRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUFFO1FBQy9ELHVEQUF1RCxFQUFFO1lBQ3ZELE9BQU8sRUFBRSw2QkFBNkI7U0FDdkM7UUFDRCxnREFBZ0QsRUFBRTtZQUNoRCxPQUFPLEVBQUUsa0RBQWtEO1NBQzVEO1FBQ0QsbURBQW1ELEVBQUU7WUFDbkQsT0FBTyxFQUFFLGlDQUFpQztTQUMzQztRQUNELDhDQUE4QyxFQUFFO1lBQzlDLE9BQU8sRUFDTCxxRkFBcUY7U0FDeEY7S0FDRjtDQUNGLENBQUM7QUFFRixzQkFBc0IsQ0FBQyxZQUFZLENBQUMsU0FBUyxDQUFDLENBQUM7QUFFL0MsTUFBTSxPQUFPLCtCQUErQjtJQUduQyxTQUFTLENBQ2QsVUFBNEIsRUFDNUIsSUFBWTtRQUVaLE9BQU8scUJBQXFCLENBQUMsU0FBUyxFQUFFLFVBQVUsQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDbkUsQ0FBQztDQUNGO0FBRUQ7O0dBRUc7QUFXSCxNQUFNLE9BQU8sNkJBQTZCOzhHQUE3Qiw2QkFBNkI7K0dBQTdCLDZCQUE2QixZQVQ5QixhQUFhOytHQVNaLDZCQUE2QixhQVI3QjtZQUNUO2dCQUNFLE9BQU8sRUFBRSwyQkFBMkI7Z0JBQ3BDLFFBQVEsRUFBRSwrQkFBK0I7Z0JBQ3pDLEtBQUssRUFBRSxJQUFJO2FBQ1o7U0FDRixZQVBTLGFBQWE7OzJGQVNaLDZCQUE2QjtrQkFWekMsUUFBUTttQkFBQztvQkFDUixPQUFPLEVBQUUsQ0FBQyxhQUFhLENBQUM7b0JBQ3hCLFNBQVMsRUFBRTt3QkFDVDs0QkFDRSxPQUFPLEVBQUUsMkJBQTJCOzRCQUNwQyxRQUFRLEVBQUUsK0JBQStCOzRCQUN6QyxLQUFLLEVBQUUsSUFBSTt5QkFDWjtxQkFDRjtpQkFDRiIsInNvdXJjZXNDb250ZW50IjpbIi8qIGlzdGFuYnVsIGlnbm9yZSBmaWxlICovXG5cbi8qKlxuICogTk9USUNFOiBETyBOT1QgTU9ESUZZIFRISVMgRklMRSFcbiAqIFRoZSBjb250ZW50cyBvZiB0aGlzIGZpbGUgd2VyZSBhdXRvbWF0aWNhbGx5IGdlbmVyYXRlZCBieVxuICogdGhlICduZyBnZW5lcmF0ZSBAc2t5dXgvaTE4bjpsaWItcmVzb3VyY2VzLW1vZHVsZSBsaWIvbW9kdWxlcy9zaGFyZWQvc2t5LWRhdGEtbWFuYWdlcicgc2NoZW1hdGljLlxuICogVG8gdXBkYXRlIHRoaXMgZmlsZSwgc2ltcGx5IHJlcnVuIHRoZSBjb21tYW5kLlxuICovXG5pbXBvcnQgeyBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtcbiAgU0tZX0xJQl9SRVNPVVJDRVNfUFJPVklERVJTLFxuICBTa3lBcHBMb2NhbGVJbmZvLFxuICBTa3lJMThuTW9kdWxlLFxuICBTa3lMaWJSZXNvdXJjZXMsXG4gIFNreUxpYlJlc291cmNlc1Byb3ZpZGVyLFxuICBTa3lMaWJSZXNvdXJjZXNTZXJ2aWNlLFxuICBnZXRMaWJTdHJpbmdGb3JMb2NhbGUsXG59IGZyb20gJ0Bza3l1eC9pMThuJztcblxuY29uc3QgUkVTT1VSQ0VTOiB7IFtsb2NhbGU6IHN0cmluZ106IFNreUxpYlJlc291cmNlcyB9ID0ge1xuICAnRU4tVVMnOiB7XG4gICAgc2t5dXhfZGF0YV9tYW5hZ2VyX2NvbHVtbl9waWNrZXJfdGl0bGU6IHtcbiAgICAgIG1lc3NhZ2U6ICdDaG9vc2UgY29sdW1ucyB0byBzaG93IGluIHRoZSBsaXN0JyxcbiAgICB9LFxuICAgIHNreXV4X2RhdGFfbWFuYWdlcl9hcHBseV9jaGFuZ2VzX2J1dHRvbl90aXRsZTogeyBtZXNzYWdlOiAnQXBwbHkgY2hhbmdlcycgfSxcbiAgICBza3l1eF9kYXRhX21hbmFnZXJfY2FuY2VsX2J1dHRvbl90aXRsZTogeyBtZXNzYWdlOiAnQ2FuY2VsJyB9LFxuICAgIHNreXV4X2RhdGFfbWFuYWdlcl9zZWxlY3RfYWxsX2J1dHRvbl9hcmlhX2xhYmVsOiB7XG4gICAgICBtZXNzYWdlOiAnU2VsZWN0IGFsbCB7MH0nLFxuICAgIH0sXG4gICAgc2t5dXhfZGF0YV9tYW5hZ2VyX3NlbGVjdF9hbGxfYnV0dG9uX3RpdGxlOiB7IG1lc3NhZ2U6ICdTZWxlY3QgYWxsJyB9LFxuICAgIHNreXV4X2RhdGFfbWFuYWdlcl9jbGVhcl9hbGxfYnV0dG9uX2FyaWFfbGFiZWw6IHtcbiAgICAgIG1lc3NhZ2U6ICdDbGVhciBhbGwgc2VsZWN0ZWQgezB9JyxcbiAgICB9LFxuICAgIHNreXV4X2RhdGFfbWFuYWdlcl9jbGVhcl9hbGxfYnV0dG9uX3RpdGxlOiB7IG1lc3NhZ2U6ICdDbGVhciBhbGwnIH0sXG4gICAgc2t5dXhfZGF0YV9tYW5hZ2VyX3Nob3dfc2VsZWN0ZWRfb3B0aW9uX2FyaWFfbGFiZWw6IHtcbiAgICAgIG1lc3NhZ2U6ICdTaG93IG9ubHkgc2VsZWN0ZWQgezB9JyxcbiAgICB9LFxuICAgIHNreXV4X2RhdGFfbWFuYWdlcl9zaG93X3NlbGVjdGVkX29wdGlvbl90aXRsZToge1xuICAgICAgbWVzc2FnZTogJ1Nob3cgb25seSBzZWxlY3RlZCBpdGVtcycsXG4gICAgfSxcbiAgICBza3l1eF9kYXRhX21hbmFnZXJfY29sdW1uc19idXR0b25fYXJpYV9sYWJlbDoge1xuICAgICAgbWVzc2FnZTogJ0Nob29zZSBjb2x1bW5zIGZvciB7MH0nLFxuICAgIH0sXG4gICAgc2t5dXhfZGF0YV9tYW5hZ2VyX2NvbHVtbnNfYnV0dG9uX3RpdGxlOiB7IG1lc3NhZ2U6ICdDb2x1bW5zJyB9LFxuICAgIHNreXV4X2RhdGFfbWFuYWdlcl9zZWxlY3RfY29sdW1uX3N0YXR1c19pbmRpY2F0b3JfdGl0bGU6IHtcbiAgICAgIG1lc3NhZ2U6ICdTZWxlY3QgYXQgbGVhc3Qgb25lIGNvbHVtbi4nLFxuICAgIH0sXG4gICAgc2t5dXhfZGF0YV9tYW5hZ2VyX3N0YXR1c191cGRhdGVfd2l0aF9zZWxlY3Rpb25zOiB7XG4gICAgICBtZXNzYWdlOiAnezB9IG9mIHsxfSBpdGVtcyBtZWV0IGNyaXRlcmlhIGFuZCB7Mn0gc2VsZWN0ZWQuJyxcbiAgICB9LFxuICAgIHNreXV4X2RhdGFfbWFuYWdlcl9zdGF0dXNfdXBkYXRlX3dpdGhvdXRfc2VsZWN0aW9uczoge1xuICAgICAgbWVzc2FnZTogJ3swfSBvZiB7MX0gaXRlbXMgbWVldCBjcml0ZXJpYS4nLFxuICAgIH0sXG4gICAgc2t5dXhfZGF0YV9tYW5hZ2VyX3N0YXR1c191cGRhdGVfb25seV9zZWxlY3RlZDoge1xuICAgICAgbWVzc2FnZTpcbiAgICAgICAgJ3swfSBvZiB7MX0gaXRlbXMgbWVldCBjcml0ZXJpYSBhbmQgezJ9IHNlbGVjdGVkLiBPbmx5IHNlbGVjdGVkIGl0ZW1zIGFyZSBkaXNwbGF5ZWQuJyxcbiAgICB9LFxuICB9LFxufTtcblxuU2t5TGliUmVzb3VyY2VzU2VydmljZS5hZGRSZXNvdXJjZXMoUkVTT1VSQ0VTKTtcblxuZXhwb3J0IGNsYXNzIFNreURhdGFNYW5hZ2VyUmVzb3VyY2VzUHJvdmlkZXJcbiAgaW1wbGVtZW50cyBTa3lMaWJSZXNvdXJjZXNQcm92aWRlclxue1xuICBwdWJsaWMgZ2V0U3RyaW5nKFxuICAgIGxvY2FsZUluZm86IFNreUFwcExvY2FsZUluZm8sXG4gICAgbmFtZTogc3RyaW5nLFxuICApOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICAgIHJldHVybiBnZXRMaWJTdHJpbmdGb3JMb2NhbGUoUkVTT1VSQ0VTLCBsb2NhbGVJbmZvLmxvY2FsZSwgbmFtZSk7XG4gIH1cbn1cblxuLyoqXG4gKiBJbXBvcnQgaW50byBhbnkgY29tcG9uZW50IGxpYnJhcnkgbW9kdWxlIHRoYXQgbmVlZHMgdG8gdXNlIHJlc291cmNlIHN0cmluZ3MuXG4gKi9cbkBOZ01vZHVsZSh7XG4gIGV4cG9ydHM6IFtTa3lJMThuTW9kdWxlXSxcbiAgcHJvdmlkZXJzOiBbXG4gICAge1xuICAgICAgcHJvdmlkZTogU0tZX0xJQl9SRVNPVVJDRVNfUFJPVklERVJTLFxuICAgICAgdXNlQ2xhc3M6IFNreURhdGFNYW5hZ2VyUmVzb3VyY2VzUHJvdmlkZXIsXG4gICAgICBtdWx0aTogdHJ1ZSxcbiAgICB9LFxuICBdLFxufSlcbmV4cG9ydCBjbGFzcyBTa3lEYXRhTWFuYWdlclJlc291cmNlc01vZHVsZSB7fVxuIl19
|
@@ -15,7 +15,7 @@ import { SkyLibResourcesService, getLibStringForLocale, SkyI18nModule, SKY_LIB_R
|
|
15
15
|
import * as i2 from '@angular/forms';
|
16
16
|
import { FormsModule } from '@angular/forms';
|
17
17
|
import * as i1 from '@skyux/core';
|
18
|
-
import { SkyLogService, SkyViewkeeperModule } from '@skyux/core';
|
18
|
+
import { SkyLogService, SkyLiveAnnouncerService, SkyViewkeeperModule } from '@skyux/core';
|
19
19
|
import * as i3 from '@skyux/forms';
|
20
20
|
import { SkyCheckboxModule, SkyRadioModule } from '@skyux/forms';
|
21
21
|
import * as i8 from '@skyux/layout';
|
@@ -65,6 +65,15 @@ const RESOURCES = {
|
|
65
65
|
skyux_data_manager_select_column_status_indicator_title: {
|
66
66
|
message: 'Select at least one column.',
|
67
67
|
},
|
68
|
+
skyux_data_manager_status_update_with_selections: {
|
69
|
+
message: '{0} of {1} items meet criteria and {2} selected.',
|
70
|
+
},
|
71
|
+
skyux_data_manager_status_update_without_selections: {
|
72
|
+
message: '{0} of {1} items meet criteria.',
|
73
|
+
},
|
74
|
+
skyux_data_manager_status_update_only_selected: {
|
75
|
+
message: '{0} of {1} items meet criteria and {2} selected. Only selected items are displayed.',
|
76
|
+
},
|
68
77
|
},
|
69
78
|
};
|
70
79
|
SkyLibResourcesService.addResources(RESOURCES);
|
@@ -263,6 +272,7 @@ class SkyDataManagerService {
|
|
263
272
|
#dataManagerConfig;
|
264
273
|
#views;
|
265
274
|
#dataStateChange;
|
275
|
+
#dataSummary;
|
266
276
|
#isInitialized;
|
267
277
|
#ngUnsubscribe;
|
268
278
|
#initSource;
|
@@ -273,6 +283,7 @@ class SkyDataManagerService {
|
|
273
283
|
this.#dataManagerConfig = new BehaviorSubject({});
|
274
284
|
this.#views = new BehaviorSubject([]);
|
275
285
|
this.#dataStateChange = new ReplaySubject(1);
|
286
|
+
this.#dataSummary = new Subject();
|
276
287
|
this.#ngUnsubscribe = new Subject();
|
277
288
|
this.#initSource = 'dataManagerServiceInit';
|
278
289
|
this.#uiConfigService = uiConfigService;
|
@@ -429,6 +440,26 @@ class SkyDataManagerService {
|
|
429
440
|
const newStateChange = new SkyDataManagerStateChange(newState, sourceId);
|
430
441
|
this.#dataStateChange.next(newStateChange);
|
431
442
|
}
|
443
|
+
/**
|
444
|
+
* Returns an observable of data summary changes that views and other data manager entities can subscribe to.
|
445
|
+
* It excludes updates originating from the provided source. This allows subscribers to only respond to
|
446
|
+
* changes they did not create and helps prevent infinite loops of updates and responses.
|
447
|
+
* @param sourceId The ID of the entity subscribing to data summary updates. This can be any value you choose
|
448
|
+
* but should be unique within the data manager instance and should also be used when that entity updates the summary.
|
449
|
+
*/
|
450
|
+
getDataSummaryUpdates(sourceId) {
|
451
|
+
return this.#dataSummary.pipe(filter((summaryChange) => sourceId !== summaryChange.source), map((summaryChange) => summaryChange.dataSummary));
|
452
|
+
}
|
453
|
+
/**
|
454
|
+
* Updates the data summary and emits a new value to entities subscribed to data summary changes.
|
455
|
+
* @param summary The new `SkyDataManagerSummary` value.
|
456
|
+
* @param sourceId The ID of the entity updating the summary. This can be any value you choose,
|
457
|
+
* but should be unique within the data manager instance and should also be used when that entity
|
458
|
+
* subscribes to summary changes from `getDataSummaryUpdates`.
|
459
|
+
*/
|
460
|
+
updateDataSummary(summary, sourceId) {
|
461
|
+
this.#dataSummary.next({ dataSummary: summary, source: sourceId });
|
462
|
+
}
|
432
463
|
/**
|
433
464
|
* Returns the current `SkyDataManagerConfig`.
|
434
465
|
*/
|
@@ -744,6 +775,8 @@ class SkyDataManagerComponent {
|
|
744
775
|
this.#_currentViewkeeperClasses = VIEWKEEPER_CLASSES_DEFAULT;
|
745
776
|
this.#changeDetection = inject(ChangeDetectorRef);
|
746
777
|
this.#dataManagerService = inject(SkyDataManagerService);
|
778
|
+
this.#liveAnnouncer = inject(SkyLiveAnnouncerService);
|
779
|
+
this.#resourceSvc = inject(SkyLibResourcesService);
|
747
780
|
}
|
748
781
|
get currentViewkeeperClasses() {
|
749
782
|
return this.#_currentViewkeeperClasses;
|
@@ -766,15 +799,33 @@ class SkyDataManagerComponent {
|
|
766
799
|
#allViewkeeperClasses;
|
767
800
|
#ngUnsubscribe;
|
768
801
|
#sourceId;
|
802
|
+
#dataState;
|
769
803
|
#_isInitialized;
|
770
804
|
#_currentViewkeeperClasses;
|
771
805
|
#changeDetection;
|
772
806
|
#dataManagerService;
|
807
|
+
#liveAnnouncer;
|
808
|
+
#resourceSvc;
|
773
809
|
ngOnInit() {
|
774
810
|
this.#dataManagerService
|
775
811
|
.getDataStateUpdates(this.#sourceId)
|
776
812
|
.pipe(takeUntil(this.#ngUnsubscribe))
|
777
|
-
.subscribe(() =>
|
813
|
+
.subscribe((state) => {
|
814
|
+
this.isInitialized = true;
|
815
|
+
this.#dataState = state;
|
816
|
+
});
|
817
|
+
this.#dataManagerService
|
818
|
+
.getDataSummaryUpdates(this.#sourceId)
|
819
|
+
.pipe(takeUntil(this.#ngUnsubscribe))
|
820
|
+
.subscribe((summary) => {
|
821
|
+
const itemsSelected = this.#dataState?.selectedIds?.length || 0;
|
822
|
+
const resourceString = `skyux_data_manager_status_update_${this.#dataState?.onlyShowSelected
|
823
|
+
? 'only_selected'
|
824
|
+
: itemsSelected
|
825
|
+
? 'with_selections'
|
826
|
+
: 'without_selections'}`;
|
827
|
+
this.#announceState(resourceString, summary.itemsMatching, summary.totalItems, itemsSelected);
|
828
|
+
});
|
778
829
|
this.#dataManagerService.viewkeeperClasses
|
779
830
|
.pipe(takeUntil(this.#ngUnsubscribe))
|
780
831
|
.subscribe((classes) => {
|
@@ -799,6 +850,14 @@ class SkyDataManagerComponent {
|
|
799
850
|
this.#ngUnsubscribe.next();
|
800
851
|
this.#ngUnsubscribe.complete();
|
801
852
|
}
|
853
|
+
#announceState(resourceString, itemsMatching, totalItems, itemsSelected) {
|
854
|
+
this.#resourceSvc
|
855
|
+
.getString(resourceString, itemsMatching, totalItems, itemsSelected)
|
856
|
+
.pipe(take(1))
|
857
|
+
.subscribe((internationalizedString) => {
|
858
|
+
this.#liveAnnouncer.announce(internationalizedString);
|
859
|
+
});
|
860
|
+
}
|
802
861
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.9", ngImport: i0, type: SkyDataManagerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
803
862
|
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.9", type: SkyDataManagerComponent, isStandalone: true, selector: "sky-data-manager", ngImport: i0, template: "<div\n *ngIf=\"isInitialized\"\n class=\"sky-data-manager\"\n [skyBackToTop]=\"backToTopOptions\"\n [skyBackToTopMessageStream]=\"backToTopController\"\n [skyViewkeeper]=\"currentViewkeeperClasses\"\n #dataManager\n>\n <ng-content />\n</div>\n", dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: SkyBackToTopModule }, { kind: "directive", type: i8.λ7, selector: "[skyBackToTop]", inputs: ["skyBackToTop", "skyBackToTopMessageStream"] }, { kind: "ngmodule", type: SkyViewkeeperModule }, { kind: "directive", type: i1.λ3, selector: "[skyViewkeeper]", inputs: ["skyViewkeeper"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
804
863
|
}
|