@igo2/integration 1.12.0 → 1.13.0-alpha.1
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/{esm2015/igo2-integration.js → esm2020/igo2-integration.mjs} +0 -0
- package/esm2020/lib/about/about-tool/about-tool.component.mjs +185 -0
- package/{esm2015/lib/about/about-tool/index.js → esm2020/lib/about/about-tool/index.mjs} +0 -0
- package/{esm2015/lib/about/about.module.js → esm2020/lib/about/about.module.mjs} +9 -11
- package/{esm2015/lib/about/index.js → esm2020/lib/about/index.mjs} +0 -0
- package/{esm2015/lib/analytics/analytics-listener.service.js → esm2020/lib/analytics/analytics-listener.service.mjs} +0 -0
- package/{esm2015/lib/analytics/analytics.module.js → esm2020/lib/analytics/analytics.module.mjs} +2 -2
- package/{esm2015/lib/analytics/index.js → esm2020/lib/analytics/index.mjs} +0 -0
- package/{esm2015/lib/catalog/catalog-browser-tool/catalog-browser-tool.component.js → esm2020/lib/catalog/catalog-browser-tool/catalog-browser-tool.component.mjs} +3 -7
- package/{esm2015/lib/catalog/catalog-browser-tool/catalog-browser-tool.module.js → esm2020/lib/catalog/catalog-browser-tool/catalog-browser-tool.module.mjs} +3 -5
- package/{esm2015/lib/catalog/catalog-library-tool/catalog-library-tool.component.js → esm2020/lib/catalog/catalog-library-tool/catalog-library-tool.component.mjs} +3 -7
- package/{esm2015/lib/catalog/catalog-library-tool/catalog-library-tool.module.js → esm2020/lib/catalog/catalog-library-tool/catalog-library-tool.module.mjs} +3 -5
- package/{esm2015/lib/catalog/catalog.module.js → esm2020/lib/catalog/catalog.module.mjs} +2 -2
- package/{esm2015/lib/catalog/catalog.state.js → esm2020/lib/catalog/catalog.state.mjs} +0 -0
- package/{esm2015/lib/catalog/index.js → esm2020/lib/catalog/index.mjs} +0 -0
- package/{esm2015/lib/context/context-editor-tool/context-editor-tool.component.js → esm2020/lib/context/context-editor-tool/context-editor-tool.component.mjs} +3 -6
- package/{esm2015/lib/context/context-manager-tool/context-manager-tool.component.js → esm2020/lib/context/context-manager-tool/context-manager-tool.component.mjs} +3 -6
- package/{esm2015/lib/context/context-permission-manager-tool/context-permission-manager-tool.component.js → esm2020/lib/context/context-permission-manager-tool/context-permission-manager-tool.component.mjs} +3 -6
- package/{esm2015/lib/context/context-share-tool/context-share-tool.component.js → esm2020/lib/context/context-share-tool/context-share-tool.component.mjs} +3 -6
- package/{esm2015/lib/context/context.module.js → esm2020/lib/context/context.module.mjs} +2 -2
- package/{esm2015/lib/context/context.state.js → esm2020/lib/context/context.state.mjs} +0 -0
- package/{esm2015/lib/context/index.js → esm2020/lib/context/index.mjs} +0 -0
- package/{esm2015/lib/directions/directions-tool/directions-tool.component.js → esm2020/lib/directions/directions-tool/directions-tool.component.mjs} +3 -6
- package/{esm2015/lib/directions/directions-tool/index.js → esm2020/lib/directions/directions-tool/index.mjs} +0 -0
- package/{esm2015/lib/directions/directions.module.js → esm2020/lib/directions/directions.module.mjs} +2 -2
- package/esm2020/lib/directions/directions.state.mjs +64 -0
- package/{esm2015/lib/directions/index.js → esm2020/lib/directions/index.mjs} +0 -0
- package/{esm2015/lib/draw/draw.module.js → esm2020/lib/draw/draw.module.mjs} +2 -2
- package/{esm2015/lib/draw/draw.state.js → esm2020/lib/draw/draw.state.mjs} +0 -0
- package/{esm2015/lib/draw/drawing-tool/drawing-tool.component.js → esm2020/lib/draw/drawing-tool/drawing-tool.component.mjs} +3 -7
- package/{esm2015/lib/draw/index.js → esm2020/lib/draw/index.mjs} +0 -0
- package/{esm2015/lib/filter/active-ogc-filter-tool/active-ogc-filter-tool.animation.js → esm2020/lib/filter/active-ogc-filter-tool/active-ogc-filter-tool.animation.mjs} +0 -0
- package/{esm2015/lib/filter/active-ogc-filter-tool/active-ogc-filter-tool.component.js → esm2020/lib/filter/active-ogc-filter-tool/active-ogc-filter-tool.component.mjs} +3 -7
- package/{esm2015/lib/filter/active-ogc-filter-tool/index.js → esm2020/lib/filter/active-ogc-filter-tool/index.mjs} +0 -0
- package/{esm2015/lib/filter/active-time-filter-tool/active-time-filter-tool.animation.js → esm2020/lib/filter/active-time-filter-tool/active-time-filter-tool.animation.mjs} +0 -0
- package/{esm2015/lib/filter/active-time-filter-tool/active-time-filter-tool.component.js → esm2020/lib/filter/active-time-filter-tool/active-time-filter-tool.component.mjs} +3 -7
- package/{esm2015/lib/filter/active-time-filter-tool/index.js → esm2020/lib/filter/active-time-filter-tool/index.mjs} +0 -0
- package/{esm2015/lib/filter/filter.module.js → esm2020/lib/filter/filter.module.mjs} +2 -2
- package/{esm2015/lib/filter/index.js → esm2020/lib/filter/index.mjs} +0 -0
- package/{esm2015/lib/filter/ogc-filter-tool/index.js → esm2020/lib/filter/ogc-filter-tool/index.mjs} +0 -0
- package/{esm2015/lib/filter/ogc-filter-tool/ogc-filter-tool.component.js → esm2020/lib/filter/ogc-filter-tool/ogc-filter-tool.component.mjs} +3 -6
- package/{esm2015/lib/filter/spatial-filter-tool/index.js → esm2020/lib/filter/spatial-filter-tool/index.mjs} +0 -0
- package/esm2020/lib/filter/spatial-filter-tool/spatial-filter-tool.component.mjs +535 -0
- package/{esm2015/lib/filter/time-filter-tool/index.js → esm2020/lib/filter/time-filter-tool/index.mjs} +0 -0
- package/{esm2015/lib/filter/time-filter-tool/time-filter-tool.component.js → esm2020/lib/filter/time-filter-tool/time-filter-tool.component.mjs} +3 -6
- package/esm2020/lib/import-export/import-export-tool/import-export-tool.component.mjs +137 -0
- package/{esm2015/lib/import-export/import-export-tool/index.js → esm2020/lib/import-export/import-export-tool/index.mjs} +0 -0
- package/{esm2015/lib/import-export/import-export.module.js → esm2020/lib/import-export/import-export.module.mjs} +7 -9
- package/{esm2015/lib/import-export/import-export.state.js → esm2020/lib/import-export/import-export.state.mjs} +0 -0
- package/{esm2015/lib/import-export/index.js → esm2020/lib/import-export/index.mjs} +0 -0
- package/{esm2015/lib/integration.module.js → esm2020/lib/integration.module.mjs} +2 -2
- package/{esm2015/lib/map/advanced-map-tool/advanced-coordinates/advanced-coordinates.component.js → esm2020/lib/map/advanced-map-tool/advanced-coordinates/advanced-coordinates.component.mjs} +14 -22
- package/esm2020/lib/map/advanced-map-tool/advanced-map-tool.component.mjs +89 -0
- package/esm2020/lib/map/advanced-map-tool/advanced-swipe/advanced-swipe.component.mjs +218 -0
- package/{esm2015/lib/map/advanced-map-tool/index.js → esm2020/lib/map/advanced-map-tool/index.mjs} +0 -0
- package/{esm2015/lib/map/index.js → esm2020/lib/map/index.mjs} +0 -0
- package/{esm2015/lib/map/layer-list-tool.state.js → esm2020/lib/map/layer-list-tool.state.mjs} +0 -0
- package/{esm2015/lib/map/map-details-tool/index.js → esm2020/lib/map/map-details-tool/index.mjs} +0 -0
- package/esm2020/lib/map/map-details-tool/map-details-tool.component.mjs +256 -0
- package/{esm2015/lib/map/map-legend/index.js → esm2020/lib/map/map-legend/index.mjs} +0 -0
- package/esm2020/lib/map/map-legend/map-legend-tool.component.mjs +275 -0
- package/{esm2015/lib/map/map-proximity-tool/index.js → esm2020/lib/map/map-proximity-tool/index.mjs} +0 -0
- package/esm2020/lib/map/map-proximity-tool/map-proximity-tool.component.mjs +206 -0
- package/{esm2015/lib/map/map-proximity.state.js → esm2020/lib/map/map-proximity.state.mjs} +10 -11
- package/{esm2015/lib/map/map-tool/index.js → esm2020/lib/map/map-tool/index.mjs} +0 -0
- package/esm2020/lib/map/map-tool/map-tool.component.mjs +130 -0
- package/{esm2015/lib/map/map-tools/index.js → esm2020/lib/map/map-tools/index.mjs} +0 -0
- package/esm2020/lib/map/map-tools/map-tools.component.mjs +478 -0
- package/esm2020/lib/map/map.module.mjs +141 -0
- package/esm2020/lib/map/map.state.mjs +47 -0
- package/{esm2015/lib/measure/index.js → esm2020/lib/measure/index.mjs} +0 -0
- package/{esm2015/lib/measure/measure.module.js → esm2020/lib/measure/measure.module.mjs} +2 -2
- package/{esm2015/lib/measure/measure.state.js → esm2020/lib/measure/measure.state.mjs} +0 -0
- package/{esm2015/lib/measure/measurer-tool/measurer-tool.component.js → esm2020/lib/measure/measurer-tool/measurer-tool.component.mjs} +3 -7
- package/{esm2015/lib/measure/measurer-tool/measurer-tool.module.js → esm2020/lib/measure/measurer-tool/measurer-tool.module.mjs} +2 -4
- package/{esm2015/lib/print/index.js → esm2020/lib/print/index.mjs} +0 -0
- package/{esm2015/lib/print/print-tool/index.js → esm2020/lib/print/print-tool/index.mjs} +0 -0
- package/{esm2015/lib/print/print-tool/print-tool.component.js → esm2020/lib/print/print-tool/print-tool.component.mjs} +3 -6
- package/{esm2015/lib/print/print.module.js → esm2020/lib/print/print.module.mjs} +2 -2
- package/{esm2015/lib/search/index.js → esm2020/lib/search/index.mjs} +0 -0
- package/{esm2015/lib/search/query.state.js → esm2020/lib/search/query.state.mjs} +0 -0
- package/{esm2015/lib/search/search-bar/search-bar-binding.directive.js → esm2020/lib/search/search-bar/search-bar-binding.directive.mjs} +0 -0
- package/{esm2015/lib/search/search-bar/search-bar.module.js → esm2020/lib/search/search-bar/search-bar.module.mjs} +2 -2
- package/esm2020/lib/search/search-results-tool/search-results-tool.component.mjs +577 -0
- package/{esm2015/lib/search/search-results-tool/search-results-tool.module.js → esm2020/lib/search/search-results-tool/search-results-tool.module.mjs} +13 -15
- package/{esm2015/lib/search/search.module.js → esm2020/lib/search/search.module.mjs} +2 -2
- package/{esm2015/lib/search/search.state.js → esm2020/lib/search/search.state.mjs} +0 -0
- package/{esm2015/lib/storage/index.js → esm2020/lib/storage/index.mjs} +0 -0
- package/{esm2015/lib/storage/storage.module.js → esm2020/lib/storage/storage.module.mjs} +2 -2
- package/{esm2015/lib/storage/storage.state.js → esm2020/lib/storage/storage.state.mjs} +0 -0
- package/{esm2015/lib/tool/index.js → esm2020/lib/tool/index.mjs} +0 -0
- package/{esm2015/lib/tool/tool.module.js → esm2020/lib/tool/tool.module.mjs} +2 -2
- package/{esm2015/lib/tool/tool.state.js → esm2020/lib/tool/tool.state.mjs} +0 -0
- package/{esm2015/lib/workspace/index.js → esm2020/lib/workspace/index.mjs} +0 -0
- package/esm2020/lib/workspace/shared/edition-actions.service.mjs +156 -0
- package/{esm2015/lib/workspace/shared/feature-actions.service.js → esm2020/lib/workspace/shared/feature-actions.service.mjs} +0 -0
- package/{esm2015/lib/workspace/shared/index.js → esm2020/lib/workspace/shared/index.mjs} +0 -0
- package/esm2020/lib/workspace/shared/wfs-actions.service.mjs +158 -0
- package/{esm2015/lib/workspace/shared/workspace.utils.js → esm2020/lib/workspace/shared/workspace.utils.mjs} +0 -0
- package/{esm2015/lib/workspace/workspace-button/index.js → esm2020/lib/workspace/workspace-button/index.mjs} +0 -0
- package/esm2020/lib/workspace/workspace-button/workspace-button.component.mjs +69 -0
- package/{esm2015/lib/workspace/workspace.module.js → esm2020/lib/workspace/workspace.module.mjs} +6 -8
- package/esm2020/lib/workspace/workspace.state.mjs +188 -0
- package/{esm2015/public_api.js → esm2020/public_api.mjs} +0 -0
- package/fesm2015/igo2-integration.mjs +6606 -0
- package/fesm2015/igo2-integration.mjs.map +1 -0
- package/{fesm2015/igo2-integration.js → fesm2020/igo2-integration.mjs} +336 -565
- package/fesm2020/igo2-integration.mjs.map +1 -0
- package/{igo2-integration.d.ts → index.d.ts} +0 -0
- package/lib/about/about-tool/about-tool.component.d.ts +1 -1
- package/lib/catalog/catalog-browser-tool/catalog-browser-tool.component.d.ts +1 -1
- package/lib/catalog/catalog-library-tool/catalog-library-tool.component.d.ts +1 -1
- package/lib/context/context-editor-tool/context-editor-tool.component.d.ts +1 -1
- package/lib/context/context-manager-tool/context-manager-tool.component.d.ts +1 -1
- package/lib/context/context-permission-manager-tool/context-permission-manager-tool.component.d.ts +1 -1
- package/lib/context/context-share-tool/context-share-tool.component.d.ts +1 -1
- package/lib/directions/directions-tool/directions-tool.component.d.ts +1 -1
- package/lib/draw/drawing-tool/drawing-tool.component.d.ts +1 -1
- package/lib/filter/active-ogc-filter-tool/active-ogc-filter-tool.component.d.ts +1 -1
- package/lib/filter/active-time-filter-tool/active-time-filter-tool.component.d.ts +1 -1
- package/lib/filter/ogc-filter-tool/ogc-filter-tool.component.d.ts +1 -1
- package/lib/filter/spatial-filter-tool/spatial-filter-tool.component.d.ts +3 -1
- package/lib/filter/time-filter-tool/time-filter-tool.component.d.ts +1 -1
- package/lib/import-export/import-export-tool/import-export-tool.component.d.ts +1 -1
- package/lib/map/advanced-map-tool/advanced-coordinates/advanced-coordinates.component.d.ts +1 -1
- package/lib/map/advanced-map-tool/advanced-map-tool.component.d.ts +1 -1
- package/lib/map/advanced-map-tool/advanced-swipe/advanced-swipe.component.d.ts +1 -1
- package/lib/map/map-details-tool/map-details-tool.component.d.ts +1 -1
- package/lib/map/map-legend/map-legend-tool.component.d.ts +1 -1
- package/lib/map/map-proximity-tool/map-proximity-tool.component.d.ts +1 -1
- package/lib/map/map-tool/map-tool.component.d.ts +1 -1
- package/lib/map/map-tools/map-tools.component.d.ts +1 -1
- package/lib/map/map.state.d.ts +3 -2
- package/lib/measure/measurer-tool/measurer-tool.component.d.ts +1 -1
- package/lib/print/print-tool/print-tool.component.d.ts +1 -1
- package/lib/search/search-bar/search-bar-binding.directive.d.ts +1 -1
- package/lib/search/search-results-tool/search-results-tool.component.d.ts +1 -1
- package/lib/workspace/workspace-button/workspace-button.component.d.ts +1 -1
- package/package.json +24 -11
- package/bundles/igo2-integration.umd.js +0 -7861
- package/bundles/igo2-integration.umd.js.map +0 -1
- package/esm2015/lib/about/about-tool/about-tool.component.js +0 -190
- package/esm2015/lib/directions/directions.state.js +0 -66
- package/esm2015/lib/filter/spatial-filter-tool/spatial-filter-tool.component.js +0 -544
- package/esm2015/lib/import-export/import-export-tool/import-export-tool.component.js +0 -145
- package/esm2015/lib/map/advanced-map-tool/advanced-map-tool.component.js +0 -99
- package/esm2015/lib/map/advanced-map-tool/advanced-swipe/advanced-swipe.component.js +0 -234
- package/esm2015/lib/map/map-details-tool/map-details-tool.component.js +0 -274
- package/esm2015/lib/map/map-legend/map-legend-tool.component.js +0 -289
- package/esm2015/lib/map/map-proximity-tool/map-proximity-tool.component.js +0 -221
- package/esm2015/lib/map/map-tool/map-tool.component.js +0 -142
- package/esm2015/lib/map/map-tools/map-tools.component.js +0 -496
- package/esm2015/lib/map/map.module.js +0 -143
- package/esm2015/lib/map/map.state.js +0 -46
- package/esm2015/lib/search/search-results-tool/search-results-tool.component.js +0 -598
- package/esm2015/lib/workspace/shared/edition-actions.service.js +0 -157
- package/esm2015/lib/workspace/shared/wfs-actions.service.js +0 -159
- package/esm2015/lib/workspace/workspace-button/workspace-button.component.js +0 -74
- package/esm2015/lib/workspace/workspace.state.js +0 -190
- package/fesm2015/igo2-integration.js.map +0 -1
|
@@ -1,190 +0,0 @@
|
|
|
1
|
-
import { Injectable } from '@angular/core';
|
|
2
|
-
import { BehaviorSubject, of } from 'rxjs';
|
|
3
|
-
import { WorkspaceStore, EntityStoreFilterCustomFuncStrategy, EntityStoreFilterSelectionStrategy } from '@igo2/common';
|
|
4
|
-
import { WfsWorkspace, FeatureWorkspace, EditionWorkspace } from '@igo2/geo';
|
|
5
|
-
import * as i0 from "@angular/core";
|
|
6
|
-
import * as i1 from "./shared/feature-actions.service";
|
|
7
|
-
import * as i2 from "./shared/wfs-actions.service";
|
|
8
|
-
import * as i3 from "./shared/edition-actions.service";
|
|
9
|
-
import * as i4 from "@igo2/core";
|
|
10
|
-
/**
|
|
11
|
-
* Service that holds the state of the workspace module
|
|
12
|
-
*/
|
|
13
|
-
export class WorkspaceState {
|
|
14
|
-
constructor(featureActionsService, wfsActionsService, editionActionsService, storageService) {
|
|
15
|
-
this.featureActionsService = featureActionsService;
|
|
16
|
-
this.wfsActionsService = wfsActionsService;
|
|
17
|
-
this.editionActionsService = editionActionsService;
|
|
18
|
-
this.storageService = storageService;
|
|
19
|
-
this.workspacePanelExpanded = false;
|
|
20
|
-
this.workspaceEnabled$ = new BehaviorSubject(false);
|
|
21
|
-
this.rowsInMapExtentCheckCondition$ = new BehaviorSubject(true);
|
|
22
|
-
this.selectOnlyCheckCondition$ = new BehaviorSubject(false);
|
|
23
|
-
this.workspaceMaximize$ = new BehaviorSubject(this.storageService.get('workspaceMaximize'));
|
|
24
|
-
this.actionMaximize$$ = [];
|
|
25
|
-
/** Active widget observable. Only one may be active for all available workspaces */
|
|
26
|
-
this.activeWorkspaceWidget$ = new BehaviorSubject(undefined);
|
|
27
|
-
/**
|
|
28
|
-
* Observable of the active workspace
|
|
29
|
-
*/
|
|
30
|
-
this.workspace$ = new BehaviorSubject(undefined);
|
|
31
|
-
this.initWorkspaces();
|
|
32
|
-
}
|
|
33
|
-
/**
|
|
34
|
-
* Store that holds all the available workspaces
|
|
35
|
-
*/
|
|
36
|
-
get store() { return this._store; }
|
|
37
|
-
get workspaceSelection() {
|
|
38
|
-
var _a;
|
|
39
|
-
if (this.workspace$.value) {
|
|
40
|
-
return (_a = this.workspace$.value) === null || _a === void 0 ? void 0 : _a.entityStore.stateView.manyBy((r) => r.state.selected === true);
|
|
41
|
-
}
|
|
42
|
-
else {
|
|
43
|
-
return [];
|
|
44
|
-
}
|
|
45
|
-
}
|
|
46
|
-
get workspaceSelection$() {
|
|
47
|
-
var _a, _b;
|
|
48
|
-
if (this.workspace$.value) {
|
|
49
|
-
return (_b = (_a = this.workspace$.value) === null || _a === void 0 ? void 0 : _a.entityStore) === null || _b === void 0 ? void 0 : _b.stateView.manyBy$((r) => r.state.selected === true);
|
|
50
|
-
}
|
|
51
|
-
else {
|
|
52
|
-
return of([]);
|
|
53
|
-
}
|
|
54
|
-
}
|
|
55
|
-
/**
|
|
56
|
-
* Initialize the workspace store. Each time a workspace is activated,
|
|
57
|
-
* subscribe to it's active widget. Tracking the active widget is useful
|
|
58
|
-
* to make sure only one widget is active at a time.
|
|
59
|
-
*/
|
|
60
|
-
initWorkspaces() {
|
|
61
|
-
this._store = new WorkspaceStore([]);
|
|
62
|
-
this._store.stateView
|
|
63
|
-
.firstBy$((record) => record.state.active === true)
|
|
64
|
-
.subscribe((record) => {
|
|
65
|
-
const workspace = record ? record.entity : undefined;
|
|
66
|
-
this.workspace$.next(workspace);
|
|
67
|
-
});
|
|
68
|
-
this._store.stateView.all$()
|
|
69
|
-
.subscribe((workspaces) => {
|
|
70
|
-
workspaces.map((wks) => {
|
|
71
|
-
if (wks.entity.actionStore.empty) {
|
|
72
|
-
if (wks.entity instanceof WfsWorkspace) {
|
|
73
|
-
this.wfsActionsService.loadActions(wks.entity, this.rowsInMapExtentCheckCondition$, this.selectOnlyCheckCondition$);
|
|
74
|
-
}
|
|
75
|
-
else if (wks.entity instanceof FeatureWorkspace) {
|
|
76
|
-
this.featureActionsService.loadActions(wks.entity, this.rowsInMapExtentCheckCondition$, this.selectOnlyCheckCondition$);
|
|
77
|
-
}
|
|
78
|
-
else if (wks.entity instanceof EditionWorkspace) {
|
|
79
|
-
this.editionActionsService.loadActions(wks.entity, this.rowsInMapExtentCheckCondition$, this.selectOnlyCheckCondition$);
|
|
80
|
-
}
|
|
81
|
-
}
|
|
82
|
-
});
|
|
83
|
-
});
|
|
84
|
-
this.actionMaximize$$.push(this.featureActionsService.maximize$.subscribe(maximized => {
|
|
85
|
-
this.setWorkspaceIsMaximized(maximized);
|
|
86
|
-
}));
|
|
87
|
-
this.actionMaximize$$.push(this.wfsActionsService.maximize$.subscribe(maximized => {
|
|
88
|
-
this.setWorkspaceIsMaximized(maximized);
|
|
89
|
-
}));
|
|
90
|
-
this.actionMaximize$$.push(this.editionActionsService.maximize$.subscribe(maximized => {
|
|
91
|
-
this.setWorkspaceIsMaximized(maximized);
|
|
92
|
-
}));
|
|
93
|
-
this.activeWorkspace$$ = this.workspace$
|
|
94
|
-
.subscribe((workspace) => {
|
|
95
|
-
if (this.activeWorkspaceWidget$$ !== undefined) {
|
|
96
|
-
this.activeWorkspaceWidget$$.unsubscribe();
|
|
97
|
-
this.activeWorkspaceWidget$$ = undefined;
|
|
98
|
-
}
|
|
99
|
-
if (workspace !== undefined) {
|
|
100
|
-
this.activeWorkspaceWidget$$ = workspace.widget$
|
|
101
|
-
.subscribe((widget) => this.activeWorkspaceWidget$.next(widget));
|
|
102
|
-
}
|
|
103
|
-
});
|
|
104
|
-
this.rowsInMapExtentCheckCondition$$ = this.rowsInMapExtentCheckCondition$.subscribe((rowsInMapExtent) => {
|
|
105
|
-
this._store.stateView.all().map((wks) => {
|
|
106
|
-
if (!wks.entity.actionStore.empty) {
|
|
107
|
-
const filterStrategy = wks.entity.entityStore.getStrategyOfType(EntityStoreFilterCustomFuncStrategy);
|
|
108
|
-
if (filterStrategy) {
|
|
109
|
-
if (rowsInMapExtent) {
|
|
110
|
-
filterStrategy.activate();
|
|
111
|
-
}
|
|
112
|
-
else {
|
|
113
|
-
filterStrategy.deactivate();
|
|
114
|
-
}
|
|
115
|
-
}
|
|
116
|
-
}
|
|
117
|
-
});
|
|
118
|
-
});
|
|
119
|
-
this.selectOnlyCheckCondition$$ = this.selectOnlyCheckCondition$.subscribe((selectOnly) => {
|
|
120
|
-
this._store.stateView.all().map((wks) => {
|
|
121
|
-
if (!wks.entity.actionStore.empty) {
|
|
122
|
-
const filterStrategy = wks.entity.entityStore.getStrategyOfType(EntityStoreFilterSelectionStrategy);
|
|
123
|
-
if (filterStrategy) {
|
|
124
|
-
if (selectOnly) {
|
|
125
|
-
filterStrategy.activate();
|
|
126
|
-
}
|
|
127
|
-
else {
|
|
128
|
-
filterStrategy.deactivate();
|
|
129
|
-
}
|
|
130
|
-
}
|
|
131
|
-
}
|
|
132
|
-
});
|
|
133
|
-
});
|
|
134
|
-
}
|
|
135
|
-
setWorkspaceIsMaximized(maximized) {
|
|
136
|
-
this.storageService.set('workspaceMaximize', maximized);
|
|
137
|
-
this.workspaceMaximize$.next(maximized);
|
|
138
|
-
}
|
|
139
|
-
setActiveWorkspaceById(id) {
|
|
140
|
-
const wksFromId = this.store
|
|
141
|
-
.all()
|
|
142
|
-
.find(workspace => workspace.id === id);
|
|
143
|
-
if (wksFromId) {
|
|
144
|
-
this.store.activateWorkspace(wksFromId);
|
|
145
|
-
}
|
|
146
|
-
}
|
|
147
|
-
setActiveWorkspaceByTitle(title) {
|
|
148
|
-
const wksFromTitle = this.store
|
|
149
|
-
.all()
|
|
150
|
-
.find(workspace => workspace.title === title);
|
|
151
|
-
if (wksFromTitle) {
|
|
152
|
-
this.store.activateWorkspace(wksFromTitle);
|
|
153
|
-
}
|
|
154
|
-
}
|
|
155
|
-
/**
|
|
156
|
-
* Teardown all the workspaces
|
|
157
|
-
* @internal
|
|
158
|
-
*/
|
|
159
|
-
ngOnDestroy() {
|
|
160
|
-
this.teardownWorkspaces();
|
|
161
|
-
this.actionMaximize$$.map(a => a.unsubscribe());
|
|
162
|
-
if (this.rowsInMapExtentCheckCondition$$) {
|
|
163
|
-
this.selectOnlyCheckCondition$$.unsubscribe();
|
|
164
|
-
}
|
|
165
|
-
if (this.selectOnlyCheckCondition$$) {
|
|
166
|
-
this.selectOnlyCheckCondition$$.unsubscribe();
|
|
167
|
-
}
|
|
168
|
-
}
|
|
169
|
-
/**
|
|
170
|
-
* Teardown the workspace store and any subscribers
|
|
171
|
-
*/
|
|
172
|
-
teardownWorkspaces() {
|
|
173
|
-
this.store.clear();
|
|
174
|
-
if (this.activeWorkspaceWidget$$ !== undefined) {
|
|
175
|
-
this.activeWorkspaceWidget$$.unsubscribe();
|
|
176
|
-
}
|
|
177
|
-
if (this.activeWorkspace$$ !== undefined) {
|
|
178
|
-
this.activeWorkspace$$.unsubscribe();
|
|
179
|
-
}
|
|
180
|
-
}
|
|
181
|
-
}
|
|
182
|
-
WorkspaceState.ɵfac = function WorkspaceState_Factory(t) { return new (t || WorkspaceState)(i0.ɵɵinject(i1.FeatureActionsService), i0.ɵɵinject(i2.WfsActionsService), i0.ɵɵinject(i3.EditionActionsService), i0.ɵɵinject(i4.StorageService)); };
|
|
183
|
-
WorkspaceState.ɵprov = /*@__PURE__*/ i0.ɵɵdefineInjectable({ token: WorkspaceState, factory: WorkspaceState.ɵfac, providedIn: 'root' });
|
|
184
|
-
(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(WorkspaceState, [{
|
|
185
|
-
type: Injectable,
|
|
186
|
-
args: [{
|
|
187
|
-
providedIn: 'root'
|
|
188
|
-
}]
|
|
189
|
-
}], function () { return [{ type: i1.FeatureActionsService }, { type: i2.WfsActionsService }, { type: i3.EditionActionsService }, { type: i4.StorageService }]; }, null); })();
|
|
190
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid29ya3NwYWNlLnN0YXRlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvaW50ZWdyYXRpb24vc3JjL2xpYi93b3Jrc3BhY2Uvd29ya3NwYWNlLnN0YXRlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQWEsTUFBTSxlQUFlLENBQUM7QUFFdEQsT0FBTyxFQUFFLGVBQWUsRUFBNEIsRUFBRSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRXJFLE9BQU8sRUFHTCxjQUFjLEVBRWQsbUNBQW1DLEVBQ25DLGtDQUFrQyxFQUNyQixNQUFNLGNBQWMsQ0FBQztBQUNwQyxPQUFPLEVBQUUsWUFBWSxFQUFFLGdCQUFnQixFQUFFLGdCQUFnQixFQUFFLE1BQU0sV0FBVyxDQUFDOzs7Ozs7QUFNN0U7O0dBRUc7QUFJSCxNQUFNLE9BQU8sY0FBYztJQW9EekIsWUFDVSxxQkFBNEMsRUFDNUMsaUJBQW9DLEVBQ3BDLHFCQUE0QyxFQUM1QyxjQUE4QjtRQUg5QiwwQkFBcUIsR0FBckIscUJBQXFCLENBQXVCO1FBQzVDLHNCQUFpQixHQUFqQixpQkFBaUIsQ0FBbUI7UUFDcEMsMEJBQXFCLEdBQXJCLHFCQUFxQixDQUF1QjtRQUM1QyxtQkFBYyxHQUFkLGNBQWMsQ0FBZ0I7UUF0RGpDLDJCQUFzQixHQUFZLEtBQUssQ0FBQztRQUV0QyxzQkFBaUIsR0FBNkIsSUFBSSxlQUFlLENBQVUsS0FBSyxDQUFDLENBQUM7UUFDbEYsbUNBQThCLEdBQTZCLElBQUksZUFBZSxDQUFVLElBQUksQ0FBQyxDQUFDO1FBQzlGLDhCQUF5QixHQUE2QixJQUFJLGVBQWUsQ0FBVSxLQUFLLENBQUMsQ0FBQztRQUUxRix1QkFBa0IsR0FBNkIsSUFBSSxlQUFlLENBQ3pFLElBQUksQ0FBQyxjQUFjLENBQUMsR0FBRyxDQUFDLG1CQUFtQixDQUFZLENBQ3hELENBQUM7UUFDTSxxQkFBZ0IsR0FBbUIsRUFBRSxDQUFD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QyxJQUFJLENBQUMsMEJBQTBCLENBQUMsV0FBVyxFQUFFLENBQUM7U0FDL0M7UUFDRCxJQUFJLElBQUksQ0FBQywwQkFBMEIsRUFBRTtZQUNuQyxJQUFJLENBQUMsMEJBQTBCLENBQUMsV0FBVyxFQUFFLENBQUM7U0FDL0M7SUFDSCxDQUFDO0lBRUQ7O09BRUc7SUFDSyxrQkFBa0I7UUFDeEIsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUNuQixJQUFJLElBQUksQ0FBQyx1QkFBdUIsS0FBSyxTQUFTLEVBQUU7WUFDOUMsSUFBSSxDQUFDLHVCQUF1QixDQUFDLFdBQVcsRUFBRSxDQUFDO1NBQzVDO1FBQ0QsSUFBSSxJQUFJLENBQUMsaUJBQWlCLEtBQUssU0FBUyxFQUFFO1lBQ3hDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxXQUFXLEVBQUUsQ0FBQztTQUN0QztJQUNILENBQUM7OzRFQTdNVSxjQUFjO29FQUFkLGNBQWMsV0FBZCxjQUFjLG1CQUZiLE1BQU07dUZBRVAsY0FBYztjQUgxQixVQUFVO2VBQUM7Z0JBQ1YsVUFBVSxFQUFFLE1BQU07YUFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlLCBPbkRlc3Ryb3kgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuXHJcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgU3Vic2NyaXB0aW9uLCBPYnNlcnZhYmxlLCBvZiB9IGZyb20gJ3J4anMnO1xyXG5cclxuaW1wb3J0IHtcclxuICBFbnRpdHlSZWNvcmQsXHJcbiAgV29ya3NwYWNlLFxyXG4gIFdvcmtzcGFjZVN0b3JlLFxyXG4gIFdpZGdldCxcclxuICBFbnRpdHlTdG9yZUZpbHRlckN1c3RvbUZ1bmNTdHJhdGVneSxcclxuICBFbnRpdHlTdG9yZUZpbHRlclNlbGVjdGlvblN0cmF0ZWd5LFxyXG4gIEVudGl0eVN0YXRlIH0gZnJvbSAnQGlnbzIvY29tbW9uJztcclxuaW1wb3J0IHsgV2ZzV29ya3NwYWNlLCBGZWF0dXJlV29ya3NwYWNlLCBFZGl0aW9uV29ya3NwYWNlIH0gZnJvbSAnQGlnbzIvZ2VvJztcclxuaW1wb3J0IHsgRmVhdHVyZUFjdGlvbnNTZXJ2aWNlIH0gZnJvbSAnLi9zaGFyZWQvZmVhdHVyZS1hY3Rpb25zLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBXZnNBY3Rpb25zU2VydmljZSB9IGZyb20gJy4vc2hhcmVkL3dmcy1hY3Rpb25zLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBTdG9yYWdlU2VydmljZSB9IGZyb20gJ0BpZ28yL2NvcmUnO1xyXG5pbXBvcnQgeyBFZGl0aW9uQWN0aW9uc1NlcnZpY2UgfSBmcm9tICcuL3NoYXJlZC9lZGl0aW9uLWFjdGlvbnMuc2VydmljZSc7XHJcblxyXG4vKipcclxuICogU2VydmljZSB0aGF0IGhvbGRzIHRoZSBzdGF0ZSBvZiB0aGUgd29ya3NwYWNlIG1vZHVsZVxyXG4gKi9cclxuQEluamVjdGFibGUoe1xyXG4gIHByb3ZpZGVkSW46ICdyb290J1xyXG59KVxyXG5leHBvcnQgY2xhc3MgV29ya3NwYWNlU3RhdGUgaW1wbGVtZW50cyBPbkRlc3Ryb3kge1xyXG5cclxuICBwdWJsaWMgd29ya3NwYWNlUGFuZWxFeHBhbmRlZDogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICByZWFkb25seSB3b3Jrc3BhY2VFbmFibGVkJDogQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPihmYWxzZSk7XHJcbiAgcmVhZG9ubHkgcm93c0luTWFwRXh0ZW50Q2hlY2tDb25kaXRpb24kOiBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4gPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KHRydWUpO1xyXG4gIHJlYWRvbmx5IHNlbGVjdE9ubHlDaGVja0NvbmRpdGlvbiQ6IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPiA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4oZmFsc2UpO1xyXG5cclxuICByZWFkb25seSB3b3Jrc3BhY2VNYXhpbWl6ZSQ6IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPiA9IG5ldyBCZWhhdmlvclN1YmplY3QoXHJcbiAgICB0aGlzLnN0b3JhZ2VTZXJ2aWNlLmdldCgnd29ya3NwYWNlTWF4aW1pemUnKSBhcyBib29sZWFuXHJcbiAgKTtcclxuICBwcml2YXRlIGFjdGlvbk1heGltaXplJCQ6IFN1YnNjcmlwdGlvbltdID0gW107XHJcblxyXG4gIHByaXZhdGUgcm93c0luTWFwRXh0ZW50Q2hlY2tDb25kaXRpb24kJDogU3Vic2NyaXB0aW9uO1xyXG4gIHByaXZhdGUgc2VsZWN0T25seUNoZWNrQ29uZGl0aW9uJCQ6IFN1YnNjcmlwdGlvbjtcclxuXHJcbiAgLyoqIFN1YnNjcmlwdGlvbiB0byB0aGUgYWN0aXZlIHdvcmtzcGFjZSAqL1xyXG4gIHByaXZhdGUgYWN0aXZlV29ya3NwYWNlJCQ6IFN1YnNjcmlwdGlvbjtcclxuXHJcbiAgLyoqIFN1YnNjcmlwdGlvbiB0byB0aGUgYWN0aXZlIHdvcmtzcGFjZSB3aWRnZXQgKi9cclxuICBwcml2YXRlIGFjdGl2ZVdvcmtzcGFjZVdpZGdldCQkOiBTdWJzY3JpcHRpb247XHJcblxyXG4gIC8qKiBBY3RpdmUgd2lkZ2V0IG9ic2VydmFibGUuIE9ubHkgb25lIG1heSBiZSBhY3RpdmUgZm9yIGFsbCBhdmFpbGFibGUgd29ya3NwYWNlcyAqL1xyXG4gIHJlYWRvbmx5IGFjdGl2ZVdvcmtzcGFjZVdpZGdldCQ6IEJlaGF2aW9yU3ViamVjdDxXaWRnZXQ+ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxXaWRnZXQ+KHVuZGVmaW5lZCk7XHJcblxyXG4gIC8qKlxyXG4gICAqIE9ic2VydmFibGUgb2YgdGhlIGFjdGl2ZSB3b3Jrc3BhY2VcclxuICAgKi9cclxuICBwdWJsaWMgd29ya3NwYWNlJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8V29ya3NwYWNlPih1bmRlZmluZWQpO1xyXG5cclxuICAvKipcclxuICAgKiBTdG9yZSB0aGF0IGhvbGRzIGFsbCB0aGUgYXZhaWxhYmxlIHdvcmtzcGFjZXNcclxuICAgKi9cclxuICBnZXQgc3RvcmUoKTogV29ya3NwYWNlU3RvcmUgeyByZXR1cm4gdGhpcy5fc3RvcmU7IH1cclxuICBwcml2YXRlIF9zdG9yZTogV29ya3NwYWNlU3RvcmU7XHJcblxyXG4gIGdldCB3b3Jrc3BhY2VTZWxlY3Rpb24oKSB7XHJcbiAgICBpZiAodGhpcy53b3Jrc3BhY2UkLnZhbHVlKSB7XHJcbiAgICByZXR1cm4gdGhpcy53b3Jrc3BhY2UkLnZhbHVlPy5lbnRpdHlTdG9yZS5zdGF0ZVZpZXcubWFueUJ5KChyKSA9PiByLnN0YXRlLnNlbGVjdGVkID09PSB0cnVlKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHJldHVybiBbXTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGdldCB3b3Jrc3BhY2VTZWxlY3Rpb24kKCk6IE9ic2VydmFibGU8RW50aXR5UmVjb3JkPG9iamVjdCwgRW50aXR5U3RhdGU+W10+IHtcclxuICAgIGlmICh0aGlzLndvcmtzcGFjZSQudmFsdWUpIHtcclxuICAgICAgcmV0dXJuIHRoaXMud29ya3NwYWNlJC52YWx1ZT8uZW50aXR5U3RvcmU/LnN0YXRlVmlldy5tYW55QnkkKChyKSA9PiByLnN0YXRlLnNlbGVjdGVkID09PSB0cnVlKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHJldHVybiBvZihbXSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgZmVhdHVyZUFjdGlvbnNTZXJ2aWNlOiBGZWF0dXJlQWN0aW9uc1NlcnZpY2UsXHJcbiAgICBwcml2YXRlIHdmc0FjdGlvbnNTZXJ2aWNlOiBXZnNBY3Rpb25zU2VydmljZSxcclxuICAgIHByaXZhdGUgZWRpdGlvbkFjdGlvbnNTZXJ2aWNlOiBFZGl0aW9uQWN0aW9uc1NlcnZpY2UsXHJcbiAgICBwcml2YXRlIHN0b3JhZ2VTZXJ2aWNlOiBTdG9yYWdlU2VydmljZVxyXG4gICkge1xyXG4gICAgdGhpcy5pbml0V29ya3NwYWNlcygpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogSW5pdGlhbGl6ZSB0aGUgd29ya3NwYWNlIHN0b3JlLiBFYWNoIHRpbWUgYSB3b3Jrc3BhY2UgaXMgYWN0aXZhdGVkLFxyXG4gICAqIHN1YnNjcmliZSB0byBpdCdzIGFjdGl2ZSB3aWRnZXQuIFRyYWNraW5nIHRoZSBhY3RpdmUgd2lkZ2V0IGlzIHVzZWZ1bFxyXG4gICAqIHRvIG1ha2Ugc3VyZSBvbmx5IG9uZSB3aWRnZXQgaXMgYWN0aXZlIGF0IGEgdGltZS5cclxuICAgKi9cclxuICBwcml2YXRlIGluaXRXb3Jrc3BhY2VzKCkge1xyXG4gICAgdGhpcy5fc3RvcmUgPSBuZXcgV29ya3NwYWNlU3RvcmUoW10pO1xyXG4gICAgdGhpcy5fc3RvcmUuc3RhdGVWaWV3XHJcbiAgICAgIC5maXJzdEJ5JCgocmVjb3JkOiBFbnRpdHlSZWNvcmQ8V29ya3NwYWNlPikgPT4gcmVjb3JkLnN0YXRlLmFjdGl2ZSA9PT0gdHJ1ZSlcclxuICAgICAgLnN1YnNjcmliZSgocmVjb3JkOiBFbnRpdHlSZWNvcmQ8V29ya3NwYWNlPikgPT4ge1xyXG4gICAgICAgIGNvbnN0IHdvcmtzcGFjZSA9IHJlY29yZCA/IHJlY29yZC5lbnRpdHkgOiB1bmRlZmluZWQ7XHJcbiAgICAgICAgdGhpcy53b3Jrc3BhY2UkLm5leHQod29ya3NwYWNlKTtcclxuICAgICAgfSk7XHJcblxyXG4gICAgdGhpcy5fc3RvcmUuc3RhdGVWaWV3LmFsbCQoKVxyXG4gICAgLnN1YnNjcmliZSgod29ya3NwYWNlczogRW50aXR5UmVjb3JkPFdvcmtzcGFjZT5bXSkgPT4ge1xyXG4gICAgICB3b3Jrc3BhY2VzLm1hcCgod2tzOiBFbnRpdHlSZWNvcmQ8V29ya3NwYWNlPikgPT4ge1xyXG4gICAgICAgIGlmICh3a3MuZW50aXR5LmFjdGlvblN0b3JlLmVtcHR5KSB7XHJcbiAgICAgICAgICBpZiAod2tzLmVudGl0eSBpbnN0YW5jZW9mIFdmc1dvcmtzcGFjZSkge1xyXG4gICAgICAgICAgICB0aGlzLndmc0FjdGlvbnNTZXJ2aWNlLmxvYWRBY3Rpb25zKFxyXG4gICAgICAgICAgICAgIHdrcy5lbnRpdHksXHJcbiAgICAgICAgICAgICAgdGhpcy5yb3dzSW5NYXBFeHRlbnRDaGVja0NvbmRpdGlvbiQsXHJcbiAgICAgICAgICAgICAgdGhpcy5zZWxlY3RPbmx5Q2hlY2tDb25kaXRpb24kKTtcclxuICAgICAgICAgIH0gZWxzZSBpZiAod2tzLmVudGl0eSBpbnN0YW5jZW9mIEZlYXR1cmVXb3Jrc3BhY2UpIHtcclxuICAgICAgICAgICAgdGhpcy5mZWF0dXJlQWN0aW9uc1NlcnZpY2UubG9hZEFjdGlvbnMoXHJcbiAgICAgICAgICAgICAgd2tzLmVudGl0eSxcclxuICAgICAgICAgICAgICB0aGlzLnJvd3NJbk1hcEV4dGVudENoZWNrQ29uZGl0aW9uJCxcclxuICAgICAgICAgICAgICB0aGlzLnNlbGVjdE9ubHlDaGVja0NvbmRpdGlvbiQpO1xyXG4gICAgICAgICAgfSBlbHNlIGlmICh3a3MuZW50aXR5IGluc3RhbmNlb2YgRWRpdGlvbldvcmtzcGFjZSkge1xyXG4gICAgICAgICAgICB0aGlzLmVkaXRpb25BY3Rpb25zU2VydmljZS5sb2FkQWN0aW9ucyhcclxuICAgICAgICAgICAgICB3a3MuZW50aXR5LFxyXG4gICAgICAgICAgICAgIHRoaXMucm93c0luTWFwRXh0ZW50Q2hlY2tDb25kaXRpb24kLFxyXG4gICAgICAgICAgICAgIHRoaXMuc2VsZWN0T25seUNoZWNrQ29uZGl0aW9uJCk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgfSk7XHJcbiAgICB9KTtcclxuXHJcbiAgICB0aGlzLmFjdGlvbk1heGltaXplJCQucHVzaCh0aGlzLmZlYXR1cmVBY3Rpb25zU2VydmljZS5tYXhpbWl6ZSQuc3Vic2NyaWJlKG1heGltaXplZCA9PiB7XHJcbiAgICAgIHRoaXMuc2V0V29ya3NwYWNlSXNNYXhpbWl6ZWQobWF4aW1pemVkKTtcclxuICAgIH0pKTtcclxuXHJcbiAgICB0aGlzLmFjdGlvbk1heGltaXplJCQucHVzaCh0aGlzLndmc0FjdGlvbnNTZXJ2aWNlLm1heGltaXplJC5zdWJzY3JpYmUobWF4aW1pemVkID0+IHtcclxuICAgICAgdGhpcy5zZXRXb3Jrc3BhY2VJc01heGltaXplZChtYXhpbWl6ZWQpO1xyXG4gICAgfSkpO1xyXG5cclxuICAgIHRoaXMuYWN0aW9uTWF4aW1pemUkJC5wdXNoKHRoaXMuZWRpdGlvbkFjdGlvbnNTZXJ2aWNlLm1heGltaXplJC5zdWJzY3JpYmUobWF4aW1pemVkID0+IHtcclxuICAgICAgdGhpcy5zZXRXb3Jrc3BhY2VJc01heGltaXplZChtYXhpbWl6ZWQpO1xyXG4gICAgfSkpO1xyXG5cclxuICAgIHRoaXMuYWN0aXZlV29ya3NwYWNlJCQgPSB0aGlzLndvcmtzcGFjZSRcclxuICAgICAgLnN1YnNjcmliZSgod29ya3NwYWNlOiBXb3Jrc3BhY2UpID0+IHtcclxuICAgICAgICBpZiAodGhpcy5hY3RpdmVXb3Jrc3BhY2VXaWRnZXQkJCAhPT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgICB0aGlzLmFjdGl2ZVdvcmtzcGFjZVdpZGdldCQkLnVuc3Vic2NyaWJlKCk7XHJcbiAgICAgICAgICB0aGlzLmFjdGl2ZVdvcmtzcGFjZVdpZGdldCQkID0gdW5kZWZpbmVkO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKHdvcmtzcGFjZSAhPT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgICB0aGlzLmFjdGl2ZVdvcmtzcGFjZVdpZGdldCQkID0gd29ya3NwYWNlLndpZGdldCRcclxuICAgICAgICAgICAgLnN1YnNjcmliZSgod2lkZ2V0OiBXaWRnZXQpID0+IHRoaXMuYWN0aXZlV29ya3NwYWNlV2lkZ2V0JC5uZXh0KHdpZGdldCkpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcblxyXG4gICAgdGhpcy5yb3dzSW5NYXBFeHRlbnRDaGVja0NvbmRpdGlvbiQkID0gdGhpcy5yb3dzSW5NYXBFeHRlbnRDaGVja0NvbmRpdGlvbiQuc3Vic2NyaWJlKChyb3dzSW5NYXBFeHRlbnQpID0+IHtcclxuICAgICAgdGhpcy5fc3RvcmUuc3RhdGVWaWV3LmFsbCgpLm1hcCgod2tzOiBFbnRpdHlSZWNvcmQ8V29ya3NwYWNlPikgPT4ge1xyXG4gICAgICAgIGlmICghd2tzLmVudGl0eS5hY3Rpb25TdG9yZS5lbXB0eSkge1xyXG4gICAgICAgICAgY29uc3QgZmlsdGVyU3RyYXRlZ3kgPSB3a3MuZW50aXR5LmVudGl0eVN0b3JlLmdldFN0cmF0ZWd5T2ZUeXBlKEVudGl0eVN0b3JlRmlsdGVyQ3VzdG9tRnVuY1N0cmF0ZWd5KTtcclxuICAgICAgICAgIGlmIChmaWx0ZXJTdHJhdGVneSkge1xyXG4gICAgICAgICAgICBpZiAocm93c0luTWFwRXh0ZW50KSB7XHJcbiAgICAgICAgICAgICAgZmlsdGVyU3RyYXRlZ3kuYWN0aXZhdGUoKTtcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICBmaWx0ZXJTdHJhdGVneS5kZWFjdGl2YXRlKCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgfSk7XHJcblxyXG4gICAgdGhpcy5zZWxlY3RPbmx5Q2hlY2tDb25kaXRpb24kJCA9IHRoaXMuc2VsZWN0T25seUNoZWNrQ29uZGl0aW9uJC5zdWJzY3JpYmUoKHNlbGVjdE9ubHkpID0+IHtcclxuICAgICAgdGhpcy5fc3RvcmUuc3RhdGVWaWV3LmFsbCgpLm1hcCgod2tzOiBFbnRpdHlSZWNvcmQ8V29ya3NwYWNlPikgPT4ge1xyXG4gICAgICAgIGlmICghd2tzLmVudGl0eS5hY3Rpb25TdG9yZS5lbXB0eSkge1xyXG4gICAgICAgICAgY29uc3QgZmlsdGVyU3RyYXRlZ3kgPSB3a3MuZW50aXR5LmVudGl0eVN0b3JlLmdldFN0cmF0ZWd5T2ZUeXBlKEVudGl0eVN0b3JlRmlsdGVyU2VsZWN0aW9uU3RyYXRlZ3kpO1xyXG4gICAgICAgICAgaWYgKGZpbHRlclN0cmF0ZWd5KSB7XHJcbiAgICAgICAgICAgIGlmIChzZWxlY3RPbmx5KSB7XHJcbiAgICAgICAgICAgICAgZmlsdGVyU3RyYXRlZ3kuYWN0aXZhdGUoKTtcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICBmaWx0ZXJTdHJhdGVneS5kZWFjdGl2YXRlKCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHNldFdvcmtzcGFjZUlzTWF4aW1pemVkKG1heGltaXplZDogYm9vbGVhbikge1xyXG4gICAgdGhpcy5zdG9yYWdlU2VydmljZS5zZXQoJ3dvcmtzcGFjZU1heGltaXplJywgbWF4aW1pemVkKTtcclxuICAgIHRoaXMud29ya3NwYWNlTWF4aW1pemUkLm5leHQobWF4aW1pemVkKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBzZXRBY3RpdmVXb3Jrc3BhY2VCeUlkKGlkOiBzdHJpbmcpIHtcclxuICAgIGNvbnN0IHdrc0Zyb21JZCA9IHRoaXMuc3RvcmVcclxuICAgIC5hbGwoKVxyXG4gICAgLmZpbmQod29ya3NwYWNlID0+IHdvcmtzcGFjZS5pZCA9PT0gaWQpO1xyXG4gICAgaWYgKHdrc0Zyb21JZCkge1xyXG4gICAgICB0aGlzLnN0b3JlLmFjdGl2YXRlV29ya3NwYWNlKHdrc0Zyb21JZCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgc2V0QWN0aXZlV29ya3NwYWNlQnlUaXRsZSh0aXRsZTogc3RyaW5nKSB7XHJcbiAgICBjb25zdCB3a3NGcm9tVGl0bGUgPSB0aGlzLnN0b3JlXHJcbiAgICAgIC5hbGwoKVxyXG4gICAgICAuZmluZCh3b3Jrc3BhY2UgPT4gd29ya3NwYWNlLnRpdGxlID09PSB0aXRsZSk7XHJcbiAgICBpZiAod2tzRnJvbVRpdGxlKSB7XHJcbiAgICAgIHRoaXMuc3RvcmUuYWN0aXZhdGVXb3Jrc3BhY2Uod2tzRnJvbVRpdGxlKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFRlYXJkb3duIGFsbCB0aGUgd29ya3NwYWNlc1xyXG4gICAqIEBpbnRlcm5hbFxyXG4gICAqL1xyXG4gIG5nT25EZXN0cm95KCkge1xyXG4gICAgdGhpcy50ZWFyZG93bldvcmtzcGFjZXMoKTtcclxuICAgIHRoaXMuYWN0aW9uTWF4aW1pemUkJC5tYXAoYSA9PiBhLnVuc3Vic2NyaWJlKCkpO1xyXG4gICAgaWYgKHRoaXMucm93c0luTWFwRXh0ZW50Q2hlY2tDb25kaXRpb24kJCkge1xyXG4gICAgICB0aGlzLnNlbGVjdE9ubHlDaGVja0NvbmRpdGlvbiQkLnVuc3Vic2NyaWJlKCk7XHJcbiAgICB9XHJcbiAgICBpZiAodGhpcy5zZWxlY3RPbmx5Q2hlY2tDb25kaXRpb24kJCkge1xyXG4gICAgICB0aGlzLnNlbGVjdE9ubHlDaGVja0NvbmRpdGlvbiQkLnVuc3Vic2NyaWJlKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBUZWFyZG93biB0aGUgd29ya3NwYWNlIHN0b3JlIGFuZCBhbnkgc3Vic2NyaWJlcnNcclxuICAgKi9cclxuICBwcml2YXRlIHRlYXJkb3duV29ya3NwYWNlcygpIHtcclxuICAgIHRoaXMuc3RvcmUuY2xlYXIoKTtcclxuICAgIGlmICh0aGlzLmFjdGl2ZVdvcmtzcGFjZVdpZGdldCQkICE9PSB1bmRlZmluZWQpIHtcclxuICAgICAgdGhpcy5hY3RpdmVXb3Jrc3BhY2VXaWRnZXQkJC51bnN1YnNjcmliZSgpO1xyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMuYWN0aXZlV29ya3NwYWNlJCQgIT09IHVuZGVmaW5lZCkge1xyXG4gICAgICB0aGlzLmFjdGl2ZVdvcmtzcGFjZSQkLnVuc3Vic2NyaWJlKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxufVxyXG4iXX0=
|