@igo2/integration 1.15.4 → 16.0.0-rc.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/{esm2020 → esm2022}/igo2-integration.mjs +4 -4
- package/esm2022/lib/about/about-tool/about-tool.component.mjs +205 -0
- package/{esm2020 → esm2022}/lib/about/about-tool/index.mjs +2 -2
- package/{esm2020 → esm2022}/lib/about/about.module.mjs +55 -55
- package/{esm2020 → esm2022}/lib/about/index.mjs +2 -2
- package/esm2022/lib/analytics/analytics-listener.service.mjs +156 -0
- package/{esm2020 → esm2022}/lib/analytics/analytics.module.mjs +16 -16
- package/{esm2020 → esm2022}/lib/analytics/index.mjs +2 -2
- package/esm2022/lib/catalog/catalog-browser-tool/catalog-browser-tool.component.mjs +133 -0
- package/esm2022/lib/catalog/catalog-browser-tool/catalog-browser-tool.module.mjs +24 -0
- package/esm2022/lib/catalog/catalog-library-tool/catalog-library-tool.component.mjs +103 -0
- package/esm2022/lib/catalog/catalog-library-tool/catalog-library-tool.module.mjs +24 -0
- package/esm2022/lib/catalog/catalog.module.mjs +19 -0
- package/esm2022/lib/catalog/catalog.state.mjs +58 -0
- package/{esm2020 → esm2022}/lib/catalog/index.mjs +6 -6
- package/esm2022/lib/context/context-editor-tool/context-editor-tool.component.mjs +36 -0
- package/esm2022/lib/context/context-manager-tool/context-manager-tool.component.mjs +51 -0
- package/esm2022/lib/context/context-permission-manager-tool/context-permission-manager-tool.component.mjs +24 -0
- package/esm2022/lib/context/context-share-tool/context-share-tool.component.mjs +43 -0
- package/{esm2020 → esm2022}/lib/context/context.module.mjs +39 -39
- package/esm2022/lib/context/context.state.mjs +96 -0
- package/{esm2020 → esm2022}/lib/context/index.mjs +6 -6
- package/esm2022/lib/directions/directions-tool/directions-tool.component.mjs +116 -0
- package/{esm2020 → esm2022}/lib/directions/directions-tool/index.mjs +2 -2
- package/{esm2020 → esm2022}/lib/directions/directions.module.mjs +26 -26
- package/esm2022/lib/directions/directions.state.mjs +69 -0
- package/{esm2020 → esm2022}/lib/directions/index.mjs +3 -3
- package/esm2022/lib/draw/draw.module.mjs +18 -0
- package/esm2022/lib/draw/draw.state.mjs +42 -0
- package/esm2022/lib/draw/drawing-tool/drawing-tool.component.mjs +77 -0
- package/esm2022/lib/draw/drawing-tool/drawing-tool.module.mjs +23 -0
- package/{esm2020 → esm2022}/lib/draw/index.mjs +2 -2
- package/{esm2020 → esm2022}/lib/filter/active-ogc-filter-tool/active-ogc-filter-tool.animation.mjs +10 -10
- package/esm2022/lib/filter/active-ogc-filter-tool/active-ogc-filter-tool.component.mjs +46 -0
- package/{esm2020 → esm2022}/lib/filter/active-ogc-filter-tool/index.mjs +2 -2
- package/{esm2020 → esm2022}/lib/filter/active-time-filter-tool/active-time-filter-tool.animation.mjs +10 -10
- package/esm2022/lib/filter/active-time-filter-tool/active-time-filter-tool.component.mjs +46 -0
- package/{esm2020 → esm2022}/lib/filter/active-time-filter-tool/index.mjs +2 -2
- package/{esm2020 → esm2022}/lib/filter/filter.module.mjs +51 -51
- package/{esm2020 → esm2022}/lib/filter/index.mjs +6 -6
- package/{esm2020 → esm2022}/lib/filter/ogc-filter-tool/index.mjs +2 -2
- package/esm2022/lib/filter/ogc-filter-tool/ogc-filter-tool.component.mjs +25 -0
- package/{esm2020 → esm2022}/lib/filter/spatial-filter-tool/index.mjs +2 -2
- package/esm2022/lib/filter/spatial-filter-tool/spatial-filter-tool.component.mjs +605 -0
- package/{esm2020 → esm2022}/lib/filter/time-filter-tool/index.mjs +2 -2
- package/esm2022/lib/filter/time-filter-tool/time-filter-tool.component.mjs +25 -0
- package/esm2022/lib/import-export/import-export-tool/import-export-tool.component.mjs +154 -0
- package/{esm2020 → esm2022}/lib/import-export/import-export-tool/index.mjs +2 -2
- package/{esm2020 → esm2022}/lib/import-export/import-export.module.mjs +51 -51
- package/esm2022/lib/import-export/import-export.state.mjs +39 -0
- package/{esm2020 → esm2022}/lib/import-export/index.mjs +3 -3
- package/{esm2020 → esm2022}/lib/integration.module.mjs +72 -72
- package/esm2022/lib/map/advanced-map-tool/advanced-coordinates/advanced-coordinates.component.mjs +524 -0
- package/esm2022/lib/map/advanced-map-tool/advanced-map-tool.component.mjs +92 -0
- package/esm2022/lib/map/advanced-map-tool/advanced-swipe/advanced-swipe.component.mjs +231 -0
- package/{esm2020 → esm2022}/lib/map/advanced-map-tool/index.mjs +2 -2
- package/{esm2020 → esm2022}/lib/map/index.mjs +9 -9
- package/esm2022/lib/map/layer-list-tool.state.mjs +40 -0
- package/{esm2020 → esm2022}/lib/map/map-details-tool/index.mjs +2 -2
- package/esm2022/lib/map/map-details-tool/map-details-tool.component.mjs +269 -0
- package/{esm2020 → esm2022}/lib/map/map-legend/index.mjs +2 -2
- package/esm2022/lib/map/map-legend/map-legend-tool.component.mjs +285 -0
- package/{esm2020 → esm2022}/lib/map/map-proximity-tool/index.mjs +2 -2
- package/esm2022/lib/map/map-proximity-tool/map-proximity-tool.component.mjs +220 -0
- package/esm2022/lib/map/map-proximity.state.mjs +180 -0
- package/{esm2020 → esm2022}/lib/map/map-tool/index.mjs +2 -2
- package/esm2022/lib/map/map-tool/map-tool.component.mjs +140 -0
- package/{esm2020 → esm2022}/lib/map/map-tools/index.mjs +2 -2
- package/esm2022/lib/map/map-tools/map-tools.component.mjs +521 -0
- package/esm2022/lib/map/map.module.mjs +168 -0
- package/esm2022/lib/map/map.state.mjs +56 -0
- package/{esm2020 → esm2022}/lib/measure/index.mjs +4 -4
- package/esm2022/lib/measure/measure.module.mjs +18 -0
- package/esm2022/lib/measure/measure.state.mjs +40 -0
- package/esm2022/lib/measure/measurer-tool/measurer-tool.component.mjs +54 -0
- package/{esm2020 → esm2022}/lib/measure/measurer-tool/measurer-tool.module.mjs +23 -25
- package/{esm2020 → esm2022}/lib/print/index.mjs +2 -2
- package/{esm2020 → esm2022}/lib/print/print-tool/index.mjs +2 -2
- package/esm2022/lib/print/print-tool/print-tool.component.mjs +35 -0
- package/{esm2020 → esm2022}/lib/print/print.module.mjs +26 -26
- package/{esm2020 → esm2022}/lib/search/index.mjs +7 -7
- package/esm2022/lib/search/query.state.mjs +48 -0
- package/esm2022/lib/search/search-bar/search-bar-binding.directive.mjs +72 -0
- package/{esm2020 → esm2022}/lib/search/search-bar/search-bar.module.mjs +22 -22
- package/esm2022/lib/search/search-results-tool/search-results-tool.component.mjs +631 -0
- package/esm2022/lib/search/search-results-tool/search-results-tool.module.mjs +65 -0
- package/esm2022/lib/search/search.module.mjs +19 -0
- package/esm2022/lib/search/search.state.mjs +145 -0
- package/{esm2020 → esm2022}/lib/storage/index.mjs +2 -2
- package/{esm2020 → esm2022}/lib/storage/storage.module.mjs +16 -16
- package/esm2022/lib/storage/storage.state.mjs +25 -0
- package/{esm2020 → esm2022}/lib/tool/index.mjs +2 -2
- package/{esm2020 → esm2022}/lib/tool/tool.module.mjs +16 -16
- package/esm2022/lib/tool/tool.state.mjs +56 -0
- package/{esm2020 → esm2022}/lib/workspace/index.mjs +4 -4
- package/esm2022/lib/workspace/shared/edition-actions.service.mjs +74 -0
- package/esm2022/lib/workspace/shared/feature-actions.service.mjs +66 -0
- package/{esm2020 → esm2022}/lib/workspace/shared/index.mjs +3 -3
- package/esm2022/lib/workspace/shared/wfs-actions.service.mjs +76 -0
- package/esm2022/lib/workspace/shared/workspace.utils.mjs +162 -0
- package/{esm2020 → esm2022}/lib/workspace/workspace-button/index.mjs +2 -2
- package/esm2022/lib/workspace/workspace-button/workspace-button.component.mjs +76 -0
- package/esm2022/lib/workspace/workspace.module.mjs +38 -0
- package/esm2022/lib/workspace/workspace.state.mjs +204 -0
- package/{esm2020 → esm2022}/public_api.mjs +35 -35
- package/{fesm2020 → fesm2022}/igo2-integration.mjs +6522 -6139
- package/fesm2022/igo2-integration.mjs.map +1 -0
- package/index.d.ts +5 -5
- package/lib/about/about-tool/about-tool.component.d.ts +34 -34
- package/lib/about/about-tool/index.d.ts +1 -1
- package/lib/about/about.module.d.ts +16 -16
- package/lib/about/index.d.ts +1 -1
- package/lib/analytics/analytics-listener.service.d.ts +33 -33
- package/lib/analytics/analytics.module.d.ts +6 -6
- package/lib/analytics/index.d.ts +1 -1
- package/lib/catalog/catalog-browser-tool/catalog-browser-tool.component.d.ts +57 -57
- package/lib/catalog/catalog-browser-tool/catalog-browser-tool.module.d.ts +12 -12
- package/lib/catalog/catalog-library-tool/catalog-library-tool.component.d.ts +50 -50
- package/lib/catalog/catalog-library-tool/catalog-library-tool.module.d.ts +12 -12
- package/lib/catalog/catalog.module.d.ts +8 -8
- package/lib/catalog/catalog.state.d.ts +37 -37
- package/lib/catalog/index.d.ts +5 -5
- package/lib/context/context-editor-tool/context-editor-tool.component.d.ts +9 -9
- package/lib/context/context-manager-tool/context-manager-tool.component.d.ts +15 -15
- package/lib/context/context-permission-manager-tool/context-permission-manager-tool.component.d.ts +5 -5
- package/lib/context/context-share-tool/context-share-tool.component.d.ts +13 -13
- package/lib/context/context.module.d.ts +11 -11
- package/lib/context/context.state.d.ts +37 -37
- package/lib/context/index.d.ts +5 -5
- package/lib/directions/directions-tool/directions-tool.component.d.ts +54 -54
- package/lib/directions/directions-tool/index.d.ts +1 -1
- package/lib/directions/directions.module.d.ts +10 -10
- package/lib/directions/directions.state.d.ts +28 -28
- package/lib/directions/index.d.ts +2 -2
- package/lib/draw/draw.module.d.ts +8 -8
- package/lib/draw/draw.state.d.ts +16 -16
- package/lib/draw/drawing-tool/drawing-tool.component.d.ts +31 -31
- package/lib/draw/drawing-tool/drawing-tool.module.d.ts +11 -0
- package/lib/draw/index.d.ts +2 -2
- package/lib/filter/active-ogc-filter-tool/active-ogc-filter-tool.animation.d.ts +2 -2
- package/lib/filter/active-ogc-filter-tool/active-ogc-filter-tool.component.d.ts +12 -12
- package/lib/filter/active-ogc-filter-tool/index.d.ts +1 -1
- package/lib/filter/active-time-filter-tool/active-time-filter-tool.animation.d.ts +2 -2
- package/lib/filter/active-time-filter-tool/active-time-filter-tool.component.d.ts +12 -12
- package/lib/filter/active-time-filter-tool/index.d.ts +1 -1
- package/lib/filter/filter.module.d.ts +15 -15
- package/lib/filter/index.d.ts +5 -5
- package/lib/filter/ogc-filter-tool/index.d.ts +1 -1
- package/lib/filter/ogc-filter-tool/ogc-filter-tool.component.d.ts +6 -6
- package/lib/filter/spatial-filter-tool/index.d.ts +1 -1
- package/lib/filter/spatial-filter-tool/spatial-filter-tool.component.d.ts +82 -82
- package/lib/filter/time-filter-tool/index.d.ts +1 -1
- package/lib/filter/time-filter-tool/time-filter-tool.component.d.ts +6 -6
- package/lib/import-export/import-export-tool/import-export-tool.component.d.ts +33 -33
- package/lib/import-export/import-export-tool/index.d.ts +1 -1
- package/lib/import-export/import-export.module.d.ts +15 -15
- package/lib/import-export/import-export.state.d.ts +24 -24
- package/lib/import-export/index.d.ts +2 -2
- package/lib/integration.module.d.ts +20 -20
- package/lib/map/advanced-map-tool/advanced-coordinates/advanced-coordinates.component.d.ts +97 -97
- package/lib/map/advanced-map-tool/advanced-map-tool.component.d.ts +12 -12
- package/lib/map/advanced-map-tool/advanced-swipe/advanced-swipe.component.d.ts +65 -65
- package/lib/map/advanced-map-tool/index.d.ts +1 -1
- package/lib/map/index.d.ts +8 -8
- package/lib/map/layer-list-tool.state.d.ts +19 -19
- package/lib/map/map-details-tool/index.d.ts +1 -1
- package/lib/map/map-details-tool/map-details-tool.component.d.ts +38 -38
- package/lib/map/map-legend/index.d.ts +1 -1
- package/lib/map/map-legend/map-legend-tool.component.d.ts +40 -40
- package/lib/map/map-proximity-tool/index.d.ts +1 -1
- package/lib/map/map-proximity-tool/map-proximity-tool.component.d.ts +36 -36
- package/lib/map/map-proximity.state.d.ts +31 -31
- package/lib/map/map-tool/index.d.ts +1 -1
- package/lib/map/map-tool/map-tool.component.d.ts +27 -27
- package/lib/map/map-tools/index.d.ts +1 -1
- package/lib/map/map-tools/map-tools.component.d.ts +66 -66
- package/lib/map/map.module.d.ts +38 -38
- package/lib/map/map.state.d.ts +24 -24
- package/lib/measure/index.d.ts +3 -3
- package/lib/measure/measure.module.d.ts +7 -7
- package/lib/measure/measure.state.d.ts +16 -16
- package/lib/measure/measurer-tool/measurer-tool.component.d.ts +24 -24
- package/lib/measure/measurer-tool/measurer-tool.module.d.ts +11 -11
- package/lib/print/index.d.ts +1 -1
- package/lib/print/print-tool/index.d.ts +1 -1
- package/lib/print/print-tool/print-tool.component.d.ts +10 -10
- package/lib/print/print.module.d.ts +10 -10
- package/lib/search/index.d.ts +6 -6
- package/lib/search/query.state.d.ts +26 -20
- package/lib/search/search-bar/search-bar-binding.directive.d.ts +20 -20
- package/lib/search/search-bar/search-bar.module.d.ts +11 -11
- package/lib/search/search-results-tool/search-results-tool.component.d.ts +100 -100
- package/lib/search/search-results-tool/search-results-tool.module.d.ts +18 -18
- package/lib/search/search.module.d.ts +8 -8
- package/lib/search/search.state.d.ts +62 -60
- package/lib/storage/index.d.ts +1 -1
- package/lib/storage/storage.module.d.ts +6 -6
- package/lib/storage/storage.state.d.ts +12 -12
- package/lib/tool/index.d.ts +1 -1
- package/lib/tool/tool.module.d.ts +6 -6
- package/lib/tool/tool.state.d.ts +22 -22
- package/lib/workspace/index.d.ts +3 -3
- package/lib/workspace/shared/edition-actions.service.d.ts +28 -26
- package/lib/workspace/shared/feature-actions.service.d.ts +27 -25
- package/lib/workspace/shared/index.d.ts +2 -2
- package/lib/workspace/shared/wfs-actions.service.d.ts +29 -27
- package/lib/workspace/shared/workspace.utils.d.ts +9 -2
- package/lib/workspace/workspace-button/index.d.ts +1 -1
- package/lib/workspace/workspace-button/workspace-button.component.d.ts +21 -21
- package/lib/workspace/workspace.module.d.ts +12 -12
- package/lib/workspace/workspace.state.d.ts +63 -63
- package/locale/en.integration.json +126 -0
- package/locale/fr.integration.json +126 -0
- package/package.json +14 -18
- package/public_api.d.ts +31 -31
- package/esm2020/lib/about/about-tool/about-tool.component.mjs +0 -185
- package/esm2020/lib/analytics/analytics-listener.service.mjs +0 -127
- package/esm2020/lib/catalog/catalog-browser-tool/catalog-browser-tool.component.mjs +0 -113
- package/esm2020/lib/catalog/catalog-browser-tool/catalog-browser-tool.module.mjs +0 -29
- package/esm2020/lib/catalog/catalog-library-tool/catalog-library-tool.component.mjs +0 -89
- package/esm2020/lib/catalog/catalog-library-tool/catalog-library-tool.module.mjs +0 -29
- package/esm2020/lib/catalog/catalog.module.mjs +0 -24
- package/esm2020/lib/catalog/catalog.state.mjs +0 -54
- package/esm2020/lib/context/context-editor-tool/context-editor-tool.component.mjs +0 -34
- package/esm2020/lib/context/context-manager-tool/context-manager-tool.component.mjs +0 -44
- package/esm2020/lib/context/context-permission-manager-tool/context-permission-manager-tool.component.mjs +0 -25
- package/esm2020/lib/context/context-share-tool/context-share-tool.component.mjs +0 -34
- package/esm2020/lib/context/context.state.mjs +0 -88
- package/esm2020/lib/directions/directions-tool/directions-tool.component.mjs +0 -84
- package/esm2020/lib/directions/directions.state.mjs +0 -64
- package/esm2020/lib/draw/draw.module.mjs +0 -21
- package/esm2020/lib/draw/draw.state.mjs +0 -39
- package/esm2020/lib/draw/drawing-tool/drawing-tool.component.mjs +0 -72
- package/esm2020/lib/filter/active-ogc-filter-tool/active-ogc-filter-tool.component.mjs +0 -44
- package/esm2020/lib/filter/active-time-filter-tool/active-time-filter-tool.component.mjs +0 -44
- package/esm2020/lib/filter/ogc-filter-tool/ogc-filter-tool.component.mjs +0 -25
- package/esm2020/lib/filter/spatial-filter-tool/spatial-filter-tool.component.mjs +0 -535
- package/esm2020/lib/filter/time-filter-tool/time-filter-tool.component.mjs +0 -25
- package/esm2020/lib/import-export/import-export-tool/import-export-tool.component.mjs +0 -141
- package/esm2020/lib/import-export/import-export.state.mjs +0 -41
- package/esm2020/lib/map/advanced-map-tool/advanced-coordinates/advanced-coordinates.component.mjs +0 -472
- package/esm2020/lib/map/advanced-map-tool/advanced-map-tool.component.mjs +0 -89
- package/esm2020/lib/map/advanced-map-tool/advanced-swipe/advanced-swipe.component.mjs +0 -218
- package/esm2020/lib/map/layer-list-tool.state.mjs +0 -42
- package/esm2020/lib/map/map-details-tool/map-details-tool.component.mjs +0 -256
- package/esm2020/lib/map/map-legend/map-legend-tool.component.mjs +0 -275
- package/esm2020/lib/map/map-proximity-tool/map-proximity-tool.component.mjs +0 -203
- package/esm2020/lib/map/map-proximity.state.mjs +0 -167
- package/esm2020/lib/map/map-tool/map-tool.component.mjs +0 -130
- package/esm2020/lib/map/map-tools/map-tools.component.mjs +0 -495
- package/esm2020/lib/map/map.module.mjs +0 -144
- package/esm2020/lib/map/map.state.mjs +0 -47
- package/esm2020/lib/measure/measure.module.mjs +0 -20
- package/esm2020/lib/measure/measure.state.mjs +0 -35
- package/esm2020/lib/measure/measurer-tool/measurer-tool.component.mjs +0 -45
- package/esm2020/lib/print/print-tool/print-tool.component.mjs +0 -33
- package/esm2020/lib/search/query.state.mjs +0 -34
- package/esm2020/lib/search/search-bar/search-bar-binding.directive.mjs +0 -61
- package/esm2020/lib/search/search-results-tool/search-results-tool.component.mjs +0 -593
- package/esm2020/lib/search/search-results-tool/search-results-tool.module.mjs +0 -65
- package/esm2020/lib/search/search.module.mjs +0 -24
- package/esm2020/lib/search/search.state.mjs +0 -132
- package/esm2020/lib/storage/storage.state.mjs +0 -23
- package/esm2020/lib/tool/tool.state.mjs +0 -52
- package/esm2020/lib/workspace/shared/edition-actions.service.mjs +0 -156
- package/esm2020/lib/workspace/shared/feature-actions.service.mjs +0 -144
- package/esm2020/lib/workspace/shared/wfs-actions.service.mjs +0 -158
- package/esm2020/lib/workspace/shared/workspace.utils.mjs +0 -7
- package/esm2020/lib/workspace/workspace-button/workspace-button.component.mjs +0 -69
- package/esm2020/lib/workspace/workspace.module.mjs +0 -37
- package/esm2020/lib/workspace/workspace.state.mjs +0 -188
- package/fesm2015/igo2-integration.mjs +0 -6759
- package/fesm2015/igo2-integration.mjs.map +0 -1
- package/fesm2020/igo2-integration.mjs.map +0 -1
- package/ngcc.config.js +0 -3
|
@@ -1,188 +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
|
-
if (this.workspace$.value) {
|
|
39
|
-
return this.workspace$.value?.entityStore.stateView.manyBy((r) => r.state.selected === true);
|
|
40
|
-
}
|
|
41
|
-
else {
|
|
42
|
-
return [];
|
|
43
|
-
}
|
|
44
|
-
}
|
|
45
|
-
get workspaceSelection$() {
|
|
46
|
-
if (this.workspace$.value) {
|
|
47
|
-
return this.workspace$.value?.entityStore?.stateView.manyBy$((r) => r.state.selected === true);
|
|
48
|
-
}
|
|
49
|
-
else {
|
|
50
|
-
return of([]);
|
|
51
|
-
}
|
|
52
|
-
}
|
|
53
|
-
/**
|
|
54
|
-
* Initialize the workspace store. Each time a workspace is activated,
|
|
55
|
-
* subscribe to it's active widget. Tracking the active widget is useful
|
|
56
|
-
* to make sure only one widget is active at a time.
|
|
57
|
-
*/
|
|
58
|
-
initWorkspaces() {
|
|
59
|
-
this._store = new WorkspaceStore([]);
|
|
60
|
-
this._store.stateView
|
|
61
|
-
.firstBy$((record) => record.state.active === true)
|
|
62
|
-
.subscribe((record) => {
|
|
63
|
-
const workspace = record ? record.entity : undefined;
|
|
64
|
-
this.workspace$.next(workspace);
|
|
65
|
-
});
|
|
66
|
-
this._store.stateView.all$()
|
|
67
|
-
.subscribe((workspaces) => {
|
|
68
|
-
workspaces.map((wks) => {
|
|
69
|
-
if (wks.entity.actionStore.empty) {
|
|
70
|
-
if (wks.entity instanceof WfsWorkspace) {
|
|
71
|
-
this.wfsActionsService.loadActions(wks.entity, this.rowsInMapExtentCheckCondition$, this.selectOnlyCheckCondition$);
|
|
72
|
-
}
|
|
73
|
-
else if (wks.entity instanceof FeatureWorkspace) {
|
|
74
|
-
this.featureActionsService.loadActions(wks.entity, this.rowsInMapExtentCheckCondition$, this.selectOnlyCheckCondition$);
|
|
75
|
-
}
|
|
76
|
-
else if (wks.entity instanceof EditionWorkspace) {
|
|
77
|
-
this.editionActionsService.loadActions(wks.entity, this.rowsInMapExtentCheckCondition$, this.selectOnlyCheckCondition$);
|
|
78
|
-
}
|
|
79
|
-
}
|
|
80
|
-
});
|
|
81
|
-
});
|
|
82
|
-
this.actionMaximize$$.push(this.featureActionsService.maximize$.subscribe(maximized => {
|
|
83
|
-
this.setWorkspaceIsMaximized(maximized);
|
|
84
|
-
}));
|
|
85
|
-
this.actionMaximize$$.push(this.wfsActionsService.maximize$.subscribe(maximized => {
|
|
86
|
-
this.setWorkspaceIsMaximized(maximized);
|
|
87
|
-
}));
|
|
88
|
-
this.actionMaximize$$.push(this.editionActionsService.maximize$.subscribe(maximized => {
|
|
89
|
-
this.setWorkspaceIsMaximized(maximized);
|
|
90
|
-
}));
|
|
91
|
-
this.activeWorkspace$$ = this.workspace$
|
|
92
|
-
.subscribe((workspace) => {
|
|
93
|
-
if (this.activeWorkspaceWidget$$ !== undefined) {
|
|
94
|
-
this.activeWorkspaceWidget$$.unsubscribe();
|
|
95
|
-
this.activeWorkspaceWidget$$ = undefined;
|
|
96
|
-
}
|
|
97
|
-
if (workspace !== undefined) {
|
|
98
|
-
this.activeWorkspaceWidget$$ = workspace.widget$
|
|
99
|
-
.subscribe((widget) => this.activeWorkspaceWidget$.next(widget));
|
|
100
|
-
}
|
|
101
|
-
});
|
|
102
|
-
this.rowsInMapExtentCheckCondition$$ = this.rowsInMapExtentCheckCondition$.subscribe((rowsInMapExtent) => {
|
|
103
|
-
this._store.stateView.all().map((wks) => {
|
|
104
|
-
if (!wks.entity.actionStore.empty) {
|
|
105
|
-
const filterStrategy = wks.entity.entityStore.getStrategyOfType(EntityStoreFilterCustomFuncStrategy);
|
|
106
|
-
if (filterStrategy) {
|
|
107
|
-
if (rowsInMapExtent) {
|
|
108
|
-
filterStrategy.activate();
|
|
109
|
-
}
|
|
110
|
-
else {
|
|
111
|
-
filterStrategy.deactivate();
|
|
112
|
-
}
|
|
113
|
-
}
|
|
114
|
-
}
|
|
115
|
-
});
|
|
116
|
-
});
|
|
117
|
-
this.selectOnlyCheckCondition$$ = this.selectOnlyCheckCondition$.subscribe((selectOnly) => {
|
|
118
|
-
this._store.stateView.all().map((wks) => {
|
|
119
|
-
if (!wks.entity.actionStore.empty) {
|
|
120
|
-
const filterStrategy = wks.entity.entityStore.getStrategyOfType(EntityStoreFilterSelectionStrategy);
|
|
121
|
-
if (filterStrategy) {
|
|
122
|
-
if (selectOnly) {
|
|
123
|
-
filterStrategy.activate();
|
|
124
|
-
}
|
|
125
|
-
else {
|
|
126
|
-
filterStrategy.deactivate();
|
|
127
|
-
}
|
|
128
|
-
}
|
|
129
|
-
}
|
|
130
|
-
});
|
|
131
|
-
});
|
|
132
|
-
}
|
|
133
|
-
setWorkspaceIsMaximized(maximized) {
|
|
134
|
-
this.storageService.set('workspaceMaximize', maximized);
|
|
135
|
-
this.workspaceMaximize$.next(maximized);
|
|
136
|
-
}
|
|
137
|
-
setActiveWorkspaceById(id) {
|
|
138
|
-
const wksFromId = this.store
|
|
139
|
-
.all()
|
|
140
|
-
.find(workspace => workspace.id === id);
|
|
141
|
-
if (wksFromId) {
|
|
142
|
-
this.store.activateWorkspace(wksFromId);
|
|
143
|
-
}
|
|
144
|
-
}
|
|
145
|
-
setActiveWorkspaceByTitle(title) {
|
|
146
|
-
const wksFromTitle = this.store
|
|
147
|
-
.all()
|
|
148
|
-
.find(workspace => workspace.title === title);
|
|
149
|
-
if (wksFromTitle) {
|
|
150
|
-
this.store.activateWorkspace(wksFromTitle);
|
|
151
|
-
}
|
|
152
|
-
}
|
|
153
|
-
/**
|
|
154
|
-
* Teardown all the workspaces
|
|
155
|
-
* @internal
|
|
156
|
-
*/
|
|
157
|
-
ngOnDestroy() {
|
|
158
|
-
this.teardownWorkspaces();
|
|
159
|
-
this.actionMaximize$$.map(a => a.unsubscribe());
|
|
160
|
-
if (this.rowsInMapExtentCheckCondition$$) {
|
|
161
|
-
this.selectOnlyCheckCondition$$.unsubscribe();
|
|
162
|
-
}
|
|
163
|
-
if (this.selectOnlyCheckCondition$$) {
|
|
164
|
-
this.selectOnlyCheckCondition$$.unsubscribe();
|
|
165
|
-
}
|
|
166
|
-
}
|
|
167
|
-
/**
|
|
168
|
-
* Teardown the workspace store and any subscribers
|
|
169
|
-
*/
|
|
170
|
-
teardownWorkspaces() {
|
|
171
|
-
this.store.clear();
|
|
172
|
-
if (this.activeWorkspaceWidget$$ !== undefined) {
|
|
173
|
-
this.activeWorkspaceWidget$$.unsubscribe();
|
|
174
|
-
}
|
|
175
|
-
if (this.activeWorkspace$$ !== undefined) {
|
|
176
|
-
this.activeWorkspace$$.unsubscribe();
|
|
177
|
-
}
|
|
178
|
-
}
|
|
179
|
-
}
|
|
180
|
-
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)); };
|
|
181
|
-
WorkspaceState.ɵprov = /*@__PURE__*/ i0.ɵɵdefineInjectable({ token: WorkspaceState, factory: WorkspaceState.ɵfac, providedIn: 'root' });
|
|
182
|
-
(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(WorkspaceState, [{
|
|
183
|
-
type: Injectable,
|
|
184
|
-
args: [{
|
|
185
|
-
providedIn: 'root'
|
|
186
|
-
}]
|
|
187
|
-
}], function () { return [{ type: i1.FeatureActionsService }, { type: i2.WfsActionsService }, { type: i3.EditionActionsService }, { type: i4.StorageService }]; }, null); })();
|
|
188
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid29ya3NwYWNlLnN0YXRlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvaW50ZWdyYXRpb24vc3JjL2xpYi93b3Jrc3BhY2Uvd29ya3NwYWNlLnN0YXRlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQWEsTUFBTSxlQUFlLENBQUM7QUFFdEQsT0FBTyxFQUFFLGVBQWUsRUFBNEIsRUFBRSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRXJFLE9BQU8sRUFHTCxjQUFjLEVBRWQsbUNBQW1DLEVBQ25DLGtDQUFrQyxFQUNyQixNQUFNLGNBQWMsQ0FBQztBQUNwQyxPQUFPLEVBQUUsWUFBWSxFQUFFLGdCQUFnQixFQUFFLGdCQUFnQixFQUFFLE1BQU0sV0FBVyxDQUFDOzs7Ozs7QUFNN0U7O0dBRUc7QUFJSCxNQUFNLE9BQU8sY0FBYztJQW9EekIsWUFDVSxxQkFBNEMsRUFDNUMsaUJBQW9DLEVBQ3BDLHFCQUE0QyxFQUM1QyxjQUE4QjtRQUg5QiwwQkFBcUIsR0FBckIscUJBQXFCLENBQXVCO1FBQzVDLHNCQUFpQixHQUFqQixpQkFBaUIsQ0FBbUI7UUFDcEMsMEJBQXFCLEdBQXJCLHFCQUFxQixDQUF1QjtRQUM1QyxtQkFBYyxHQUFkLGNBQWMsQ0FBZ0I7UUF0RGpDLDJCQUFzQixHQUFZLEtBQUssQ0FBQztRQUV0QyxzQkFBaUIsR0FBNkIsSUFBSSxlQUFlLENBQVUsS0FBSyxDQUFDLENBQUM7UUFDbEYsbUNBQThCLEdBQTZCLElBQUksZUFBZSxDQUFVLElBQUksQ0FBQyxDQUFDO1FBQzlGLDhCQUF5QixHQUE2QixJQUFJLGVBQWUsQ0FBVSxLQUFLLENBQUMsQ0FBQztRQUUxRix1QkFBa0IsR0FBNkIsSUFBSSxlQUFlLENBQ3pFLElBQUksQ0FBQyxjQUFjLENBQUMsR0FBRyxDQUFDLG1CQUFtQixDQUFZLENBQ3hELENBQUM7UUFDTSxxQkFBZ0IsR0FBbUIsRUFBRSxDQUFD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QUFDLFdBQVcsRUFBRSxDQUFDO1NBQy9DO1FBQ0QsSUFBSSxJQUFJLENBQUMsMEJBQTBCLEVBQUU7WUFDbkMsSUFBSSxDQUFDLDBCQUEwQixDQUFDLFdBQVcsRUFBRSxDQUFDO1NBQy9DO0lBQ0gsQ0FBQztJQUVEOztPQUVHO0lBQ0ssa0JBQWtCO1FBQ3hCLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDbkIsSUFBSSxJQUFJLENBQUMsdUJBQXVCLEtBQUssU0FBUyxFQUFFO1lBQzlDLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxXQUFXLEVBQUUsQ0FBQztTQUM1QztRQUNELElBQUksSUFBSSxDQUFDLGlCQUFpQixLQUFLLFNBQVMsRUFBRTtZQUN4QyxJQUFJLENBQUMsaUJBQWlCLENBQUMsV0FBVyxFQUFFLENBQUM7U0FDdEM7SUFDSCxDQUFDOzs0RUE3TVUsY0FBYztvRUFBZCxjQUFjLFdBQWQsY0FBYyxtQkFGYixNQUFNO3VGQUVQLGNBQWM7Y0FIMUIsVUFBVTtlQUFDO2dCQUNWLFVBQVUsRUFBRSxNQUFNO2FBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSwgT25EZXN0cm95IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcblxyXG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIFN1YnNjcmlwdGlvbiwgT2JzZXJ2YWJsZSwgb2YgfSBmcm9tICdyeGpzJztcclxuXHJcbmltcG9ydCB7XHJcbiAgRW50aXR5UmVjb3JkLFxyXG4gIFdvcmtzcGFjZSxcclxuICBXb3Jrc3BhY2VTdG9yZSxcclxuICBXaWRnZXQsXHJcbiAgRW50aXR5U3RvcmVGaWx0ZXJDdXN0b21GdW5jU3RyYXRlZ3ksXHJcbiAgRW50aXR5U3RvcmVGaWx0ZXJTZWxlY3Rpb25TdHJhdGVneSxcclxuICBFbnRpdHlTdGF0ZSB9IGZyb20gJ0BpZ28yL2NvbW1vbic7XHJcbmltcG9ydCB7IFdmc1dvcmtzcGFjZSwgRmVhdHVyZVdvcmtzcGFjZSwgRWRpdGlvbldvcmtzcGFjZSB9IGZyb20gJ0BpZ28yL2dlbyc7XHJcbmltcG9ydCB7IEZlYXR1cmVBY3Rpb25zU2VydmljZSB9IGZyb20gJy4vc2hhcmVkL2ZlYXR1cmUtYWN0aW9ucy5zZXJ2aWNlJztcclxuaW1wb3J0IHsgV2ZzQWN0aW9uc1NlcnZpY2UgfSBmcm9tICcuL3NoYXJlZC93ZnMtYWN0aW9ucy5zZXJ2aWNlJztcclxuaW1wb3J0IHsgU3RvcmFnZVNlcnZpY2UgfSBmcm9tICdAaWdvMi9jb3JlJztcclxuaW1wb3J0IHsgRWRpdGlvbkFjdGlvbnNTZXJ2aWNlIH0gZnJvbSAnLi9zaGFyZWQvZWRpdGlvbi1hY3Rpb25zLnNlcnZpY2UnO1xyXG5cclxuLyoqXHJcbiAqIFNlcnZpY2UgdGhhdCBob2xkcyB0aGUgc3RhdGUgb2YgdGhlIHdvcmtzcGFjZSBtb2R1bGVcclxuICovXHJcbkBJbmplY3RhYmxlKHtcclxuICBwcm92aWRlZEluOiAncm9vdCdcclxufSlcclxuZXhwb3J0IGNsYXNzIFdvcmtzcGFjZVN0YXRlIGltcGxlbWVudHMgT25EZXN0cm95IHtcclxuXHJcbiAgcHVibGljIHdvcmtzcGFjZVBhbmVsRXhwYW5kZWQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgcmVhZG9ubHkgd29ya3NwYWNlRW5hYmxlZCQ6IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPiA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4oZmFsc2UpO1xyXG4gIHJlYWRvbmx5IHJvd3NJbk1hcEV4dGVudENoZWNrQ29uZGl0aW9uJDogQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPih0cnVlKTtcclxuICByZWFkb25seSBzZWxlY3RPbmx5Q2hlY2tDb25kaXRpb24kOiBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4gPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KGZhbHNlKTtcclxuXHJcbiAgcmVhZG9ubHkgd29ya3NwYWNlTWF4aW1pemUkOiBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4gPSBuZXcgQmVoYXZpb3JTdWJqZWN0KFxyXG4gICAgdGhpcy5zdG9yYWdlU2VydmljZS5nZXQoJ3dvcmtzcGFjZU1heGltaXplJykgYXMgYm9vbGVhblxyXG4gICk7XHJcbiAgcHJpdmF0ZSBhY3Rpb25NYXhpbWl6ZSQkOiBTdWJzY3JpcHRpb25bXSA9IFtdO1xyXG5cclxuICBwcml2YXRlIHJvd3NJbk1hcEV4dGVudENoZWNrQ29uZGl0aW9uJCQ6IFN1YnNjcmlwdGlvbjtcclxuICBwcml2YXRlIHNlbGVjdE9ubHlDaGVja0NvbmRpdGlvbiQkOiBTdWJzY3JpcHRpb247XHJcblxyXG4gIC8qKiBTdWJzY3JpcHRpb24gdG8gdGhlIGFjdGl2ZSB3b3Jrc3BhY2UgKi9cclxuICBwcml2YXRlIGFjdGl2ZVdvcmtzcGFjZSQkOiBTdWJzY3JpcHRpb247XHJcblxyXG4gIC8qKiBTdWJzY3JpcHRpb24gdG8gdGhlIGFjdGl2ZSB3b3Jrc3BhY2Ugd2lkZ2V0ICovXHJcbiAgcHJpdmF0ZSBhY3RpdmVXb3Jrc3BhY2VXaWRnZXQkJDogU3Vic2NyaXB0aW9uO1xyXG5cclxuICAvKiogQWN0aXZlIHdpZGdldCBvYnNlcnZhYmxlLiBPbmx5IG9uZSBtYXkgYmUgYWN0aXZlIGZvciBhbGwgYXZhaWxhYmxlIHdvcmtzcGFjZXMgKi9cclxuICByZWFkb25seSBhY3RpdmVXb3Jrc3BhY2VXaWRnZXQkOiBCZWhhdmlvclN1YmplY3Q8V2lkZ2V0PiA9IG5ldyBCZWhhdmlvclN1YmplY3Q8V2lkZ2V0Pih1bmRlZmluZWQpO1xyXG5cclxuICAvKipcclxuICAgKiBPYnNlcnZhYmxlIG9mIHRoZSBhY3RpdmUgd29ya3NwYWNlXHJcbiAgICovXHJcbiAgcHVibGljIHdvcmtzcGFjZSQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PFdvcmtzcGFjZT4odW5kZWZpbmVkKTtcclxuXHJcbiAgLyoqXHJcbiAgICogU3RvcmUgdGhhdCBob2xkcyBhbGwgdGhlIGF2YWlsYWJsZSB3b3Jrc3BhY2VzXHJcbiAgICovXHJcbiAgZ2V0IHN0b3JlKCk6IFdvcmtzcGFjZVN0b3JlIHsgcmV0dXJuIHRoaXMuX3N0b3JlOyB9XHJcbiAgcHJpdmF0ZSBfc3RvcmU6IFdvcmtzcGFjZVN0b3JlO1xyXG5cclxuICBnZXQgd29ya3NwYWNlU2VsZWN0aW9uKCkge1xyXG4gICAgaWYgKHRoaXMud29ya3NwYWNlJC52YWx1ZSkge1xyXG4gICAgcmV0dXJuIHRoaXMud29ya3NwYWNlJC52YWx1ZT8uZW50aXR5U3RvcmUuc3RhdGVWaWV3Lm1hbnlCeSgocikgPT4gci5zdGF0ZS5zZWxlY3RlZCA9PT0gdHJ1ZSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICByZXR1cm4gW107XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBnZXQgd29ya3NwYWNlU2VsZWN0aW9uJCgpOiBPYnNlcnZhYmxlPEVudGl0eVJlY29yZDxvYmplY3QsIEVudGl0eVN0YXRlPltdPiB7XHJcbiAgICBpZiAodGhpcy53b3Jrc3BhY2UkLnZhbHVlKSB7XHJcbiAgICAgIHJldHVybiB0aGlzLndvcmtzcGFjZSQudmFsdWU/LmVudGl0eVN0b3JlPy5zdGF0ZVZpZXcubWFueUJ5JCgocikgPT4gci5zdGF0ZS5zZWxlY3RlZCA9PT0gdHJ1ZSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICByZXR1cm4gb2YoW10pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIGZlYXR1cmVBY3Rpb25zU2VydmljZTogRmVhdHVyZUFjdGlvbnNTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSB3ZnNBY3Rpb25zU2VydmljZTogV2ZzQWN0aW9uc1NlcnZpY2UsXHJcbiAgICBwcml2YXRlIGVkaXRpb25BY3Rpb25zU2VydmljZTogRWRpdGlvbkFjdGlvbnNTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBzdG9yYWdlU2VydmljZTogU3RvcmFnZVNlcnZpY2VcclxuICApIHtcclxuICAgIHRoaXMuaW5pdFdvcmtzcGFjZXMoKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEluaXRpYWxpemUgdGhlIHdvcmtzcGFjZSBzdG9yZS4gRWFjaCB0aW1lIGEgd29ya3NwYWNlIGlzIGFjdGl2YXRlZCxcclxuICAgKiBzdWJzY3JpYmUgdG8gaXQncyBhY3RpdmUgd2lkZ2V0LiBUcmFja2luZyB0aGUgYWN0aXZlIHdpZGdldCBpcyB1c2VmdWxcclxuICAgKiB0byBtYWtlIHN1cmUgb25seSBvbmUgd2lkZ2V0IGlzIGFjdGl2ZSBhdCBhIHRpbWUuXHJcbiAgICovXHJcbiAgcHJpdmF0ZSBpbml0V29ya3NwYWNlcygpIHtcclxuICAgIHRoaXMuX3N0b3JlID0gbmV3IFdvcmtzcGFjZVN0b3JlKFtdKTtcclxuICAgIHRoaXMuX3N0b3JlLnN0YXRlVmlld1xyXG4gICAgICAuZmlyc3RCeSQoKHJlY29yZDogRW50aXR5UmVjb3JkPFdvcmtzcGFjZT4pID0+IHJlY29yZC5zdGF0ZS5hY3RpdmUgPT09IHRydWUpXHJcbiAgICAgIC5zdWJzY3JpYmUoKHJlY29yZDogRW50aXR5UmVjb3JkPFdvcmtzcGFjZT4pID0+IHtcclxuICAgICAgICBjb25zdCB3b3Jrc3BhY2UgPSByZWNvcmQgPyByZWNvcmQuZW50aXR5IDogdW5kZWZpbmVkO1xyXG4gICAgICAgIHRoaXMud29ya3NwYWNlJC5uZXh0KHdvcmtzcGFjZSk7XHJcbiAgICAgIH0pO1xyXG5cclxuICAgIHRoaXMuX3N0b3JlLnN0YXRlVmlldy5hbGwkKClcclxuICAgIC5zdWJzY3JpYmUoKHdvcmtzcGFjZXM6IEVudGl0eVJlY29yZDxXb3Jrc3BhY2U+W10pID0+IHtcclxuICAgICAgd29ya3NwYWNlcy5tYXAoKHdrczogRW50aXR5UmVjb3JkPFdvcmtzcGFjZT4pID0+IHtcclxuICAgICAgICBpZiAod2tzLmVudGl0eS5hY3Rpb25TdG9yZS5lbXB0eSkge1xyXG4gICAgICAgICAgaWYgKHdrcy5lbnRpdHkgaW5zdGFuY2VvZiBXZnNXb3Jrc3BhY2UpIHtcclxuICAgICAgICAgICAgdGhpcy53ZnNBY3Rpb25zU2VydmljZS5sb2FkQWN0aW9ucyhcclxuICAgICAgICAgICAgICB3a3MuZW50aXR5LFxyXG4gICAgICAgICAgICAgIHRoaXMucm93c0luTWFwRXh0ZW50Q2hlY2tDb25kaXRpb24kLFxyXG4gICAgICAgICAgICAgIHRoaXMuc2VsZWN0T25seUNoZWNrQ29uZGl0aW9uJCk7XHJcbiAgICAgICAgICB9IGVsc2UgaWYgKHdrcy5lbnRpdHkgaW5zdGFuY2VvZiBGZWF0dXJlV29ya3NwYWNlKSB7XHJcbiAgICAgICAgICAgIHRoaXMuZmVhdHVyZUFjdGlvbnNTZXJ2aWNlLmxvYWRBY3Rpb25zKFxyXG4gICAgICAgICAgICAgIHdrcy5lbnRpdHksXHJcbiAgICAgICAgICAgICAgdGhpcy5yb3dzSW5NYXBFeHRlbnRDaGVja0NvbmRpdGlvbiQsXHJcbiAgICAgICAgICAgICAgdGhpcy5zZWxlY3RPbmx5Q2hlY2tDb25kaXRpb24kKTtcclxuICAgICAgICAgIH0gZWxzZSBpZiAod2tzLmVudGl0eSBpbnN0YW5jZW9mIEVkaXRpb25Xb3Jrc3BhY2UpIHtcclxuICAgICAgICAgICAgdGhpcy5lZGl0aW9uQWN0aW9uc1NlcnZpY2UubG9hZEFjdGlvbnMoXHJcbiAgICAgICAgICAgICAgd2tzLmVudGl0eSxcclxuICAgICAgICAgICAgICB0aGlzLnJvd3NJbk1hcEV4dGVudENoZWNrQ29uZGl0aW9uJCxcclxuICAgICAgICAgICAgICB0aGlzLnNlbGVjdE9ubHlDaGVja0NvbmRpdGlvbiQpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgIH0pO1xyXG4gICAgfSk7XHJcblxyXG4gICAgdGhpcy5hY3Rpb25NYXhpbWl6ZSQkLnB1c2godGhpcy5mZWF0dXJlQWN0aW9uc1NlcnZpY2UubWF4aW1pemUkLnN1YnNjcmliZShtYXhpbWl6ZWQgPT4ge1xyXG4gICAgICB0aGlzLnNldFdvcmtzcGFjZUlzTWF4aW1pemVkKG1heGltaXplZCk7XHJcbiAgICB9KSk7XHJcblxyXG4gICAgdGhpcy5hY3Rpb25NYXhpbWl6ZSQkLnB1c2godGhpcy53ZnNBY3Rpb25zU2VydmljZS5tYXhpbWl6ZSQuc3Vic2NyaWJlKG1heGltaXplZCA9PiB7XHJcbiAgICAgIHRoaXMuc2V0V29ya3NwYWNlSXNNYXhpbWl6ZWQobWF4aW1pemVkKTtcclxuICAgIH0pKTtcclxuXHJcbiAgICB0aGlzLmFjdGlvbk1heGltaXplJCQucHVzaCh0aGlzLmVkaXRpb25BY3Rpb25zU2VydmljZS5tYXhpbWl6ZSQuc3Vic2NyaWJlKG1heGltaXplZCA9PiB7XHJcbiAgICAgIHRoaXMuc2V0V29ya3NwYWNlSXNNYXhpbWl6ZWQobWF4aW1pemVkKTtcclxuICAgIH0pKTtcclxuXHJcbiAgICB0aGlzLmFjdGl2ZVdvcmtzcGFjZSQkID0gdGhpcy53b3Jrc3BhY2UkXHJcbiAgICAgIC5zdWJzY3JpYmUoKHdvcmtzcGFjZTogV29ya3NwYWNlKSA9PiB7XHJcbiAgICAgICAgaWYgKHRoaXMuYWN0aXZlV29ya3NwYWNlV2lkZ2V0JCQgIT09IHVuZGVmaW5lZCkge1xyXG4gICAgICAgICAgdGhpcy5hY3RpdmVXb3Jrc3BhY2VXaWRnZXQkJC51bnN1YnNjcmliZSgpO1xyXG4gICAgICAgICAgdGhpcy5hY3RpdmVXb3Jrc3BhY2VXaWRnZXQkJCA9IHVuZGVmaW5lZDtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmICh3b3Jrc3BhY2UgIT09IHVuZGVmaW5lZCkge1xyXG4gICAgICAgICAgdGhpcy5hY3RpdmVXb3Jrc3BhY2VXaWRnZXQkJCA9IHdvcmtzcGFjZS53aWRnZXQkXHJcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKHdpZGdldDogV2lkZ2V0KSA9PiB0aGlzLmFjdGl2ZVdvcmtzcGFjZVdpZGdldCQubmV4dCh3aWRnZXQpKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG5cclxuICAgIHRoaXMucm93c0luTWFwRXh0ZW50Q2hlY2tDb25kaXRpb24kJCA9IHRoaXMucm93c0luTWFwRXh0ZW50Q2hlY2tDb25kaXRpb24kLnN1YnNjcmliZSgocm93c0luTWFwRXh0ZW50KSA9PiB7XHJcbiAgICAgIHRoaXMuX3N0b3JlLnN0YXRlVmlldy5hbGwoKS5tYXAoKHdrczogRW50aXR5UmVjb3JkPFdvcmtzcGFjZT4pID0+IHtcclxuICAgICAgICBpZiAoIXdrcy5lbnRpdHkuYWN0aW9uU3RvcmUuZW1wdHkpIHtcclxuICAgICAgICAgIGNvbnN0IGZpbHRlclN0cmF0ZWd5ID0gd2tzLmVudGl0eS5lbnRpdHlTdG9yZS5nZXRTdHJhdGVneU9mVHlwZShFbnRpdHlTdG9yZUZpbHRlckN1c3RvbUZ1bmNTdHJhdGVneSk7XHJcbiAgICAgICAgICBpZiAoZmlsdGVyU3RyYXRlZ3kpIHtcclxuICAgICAgICAgICAgaWYgKHJvd3NJbk1hcEV4dGVudCkge1xyXG4gICAgICAgICAgICAgIGZpbHRlclN0cmF0ZWd5LmFjdGl2YXRlKCk7XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgZmlsdGVyU3RyYXRlZ3kuZGVhY3RpdmF0ZSgpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgIH0pO1xyXG5cclxuICAgIHRoaXMuc2VsZWN0T25seUNoZWNrQ29uZGl0aW9uJCQgPSB0aGlzLnNlbGVjdE9ubHlDaGVja0NvbmRpdGlvbiQuc3Vic2NyaWJlKChzZWxlY3RPbmx5KSA9PiB7XHJcbiAgICAgIHRoaXMuX3N0b3JlLnN0YXRlVmlldy5hbGwoKS5tYXAoKHdrczogRW50aXR5UmVjb3JkPFdvcmtzcGFjZT4pID0+IHtcclxuICAgICAgICBpZiAoIXdrcy5lbnRpdHkuYWN0aW9uU3RvcmUuZW1wdHkpIHtcclxuICAgICAgICAgIGNvbnN0IGZpbHRlclN0cmF0ZWd5ID0gd2tzLmVudGl0eS5lbnRpdHlTdG9yZS5nZXRTdHJhdGVneU9mVHlwZShFbnRpdHlTdG9yZUZpbHRlclNlbGVjdGlvblN0cmF0ZWd5KTtcclxuICAgICAgICAgIGlmIChmaWx0ZXJTdHJhdGVneSkge1xyXG4gICAgICAgICAgICBpZiAoc2VsZWN0T25seSkge1xyXG4gICAgICAgICAgICAgIGZpbHRlclN0cmF0ZWd5LmFjdGl2YXRlKCk7XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgZmlsdGVyU3RyYXRlZ3kuZGVhY3RpdmF0ZSgpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBzZXRXb3Jrc3BhY2VJc01heGltaXplZChtYXhpbWl6ZWQ6IGJvb2xlYW4pIHtcclxuICAgIHRoaXMuc3RvcmFnZVNlcnZpY2Uuc2V0KCd3b3Jrc3BhY2VNYXhpbWl6ZScsIG1heGltaXplZCk7XHJcbiAgICB0aGlzLndvcmtzcGFjZU1heGltaXplJC5uZXh0KG1heGltaXplZCk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgc2V0QWN0aXZlV29ya3NwYWNlQnlJZChpZDogc3RyaW5nKSB7XHJcbiAgICBjb25zdCB3a3NGcm9tSWQgPSB0aGlzLnN0b3JlXHJcbiAgICAuYWxsKClcclxuICAgIC5maW5kKHdvcmtzcGFjZSA9PiB3b3Jrc3BhY2UuaWQgPT09IGlkKTtcclxuICAgIGlmICh3a3NGcm9tSWQpIHtcclxuICAgICAgdGhpcy5zdG9yZS5hY3RpdmF0ZVdvcmtzcGFjZSh3a3NGcm9tSWQpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHVibGljIHNldEFjdGl2ZVdvcmtzcGFjZUJ5VGl0bGUodGl0bGU6IHN0cmluZykge1xyXG4gICAgY29uc3Qgd2tzRnJvbVRpdGxlID0gdGhpcy5zdG9yZVxyXG4gICAgICAuYWxsKClcclxuICAgICAgLmZpbmQod29ya3NwYWNlID0+IHdvcmtzcGFjZS50aXRsZSA9PT0gdGl0bGUpO1xyXG4gICAgaWYgKHdrc0Zyb21UaXRsZSkge1xyXG4gICAgICB0aGlzLnN0b3JlLmFjdGl2YXRlV29ya3NwYWNlKHdrc0Zyb21UaXRsZSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBUZWFyZG93biBhbGwgdGhlIHdvcmtzcGFjZXNcclxuICAgKiBAaW50ZXJuYWxcclxuICAgKi9cclxuICBuZ09uRGVzdHJveSgpIHtcclxuICAgIHRoaXMudGVhcmRvd25Xb3Jrc3BhY2VzKCk7XHJcbiAgICB0aGlzLmFjdGlvbk1heGltaXplJCQubWFwKGEgPT4gYS51bnN1YnNjcmliZSgpKTtcclxuICAgIGlmICh0aGlzLnJvd3NJbk1hcEV4dGVudENoZWNrQ29uZGl0aW9uJCQpIHtcclxuICAgICAgdGhpcy5zZWxlY3RPbmx5Q2hlY2tDb25kaXRpb24kJC51bnN1YnNjcmliZSgpO1xyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMuc2VsZWN0T25seUNoZWNrQ29uZGl0aW9uJCQpIHtcclxuICAgICAgdGhpcy5zZWxlY3RPbmx5Q2hlY2tDb25kaXRpb24kJC51bnN1YnNjcmliZSgpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogVGVhcmRvd24gdGhlIHdvcmtzcGFjZSBzdG9yZSBhbmQgYW55IHN1YnNjcmliZXJzXHJcbiAgICovXHJcbiAgcHJpdmF0ZSB0ZWFyZG93bldvcmtzcGFjZXMoKSB7XHJcbiAgICB0aGlzLnN0b3JlLmNsZWFyKCk7XHJcbiAgICBpZiAodGhpcy5hY3RpdmVXb3Jrc3BhY2VXaWRnZXQkJCAhPT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgIHRoaXMuYWN0aXZlV29ya3NwYWNlV2lkZ2V0JCQudW5zdWJzY3JpYmUoKTtcclxuICAgIH1cclxuICAgIGlmICh0aGlzLmFjdGl2ZVdvcmtzcGFjZSQkICE9PSB1bmRlZmluZWQpIHtcclxuICAgICAgdGhpcy5hY3RpdmVXb3Jrc3BhY2UkJC51bnN1YnNjcmliZSgpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbn1cclxuIl19
|