@igo2/integration 1.15.3 → 1.15.5
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/igo2-integration.mjs +4 -4
- package/esm2020/lib/about/about-tool/about-tool.component.mjs +185 -185
- package/esm2020/lib/about/about-tool/index.mjs +2 -2
- package/esm2020/lib/about/about.module.mjs +55 -55
- package/esm2020/lib/about/index.mjs +2 -2
- package/esm2020/lib/analytics/analytics-listener.service.mjs +127 -127
- package/esm2020/lib/analytics/analytics.module.mjs +16 -16
- package/esm2020/lib/analytics/index.mjs +2 -2
- package/esm2020/lib/catalog/catalog-browser-tool/catalog-browser-tool.component.mjs +113 -113
- package/esm2020/lib/catalog/catalog-browser-tool/catalog-browser-tool.module.mjs +29 -29
- package/esm2020/lib/catalog/catalog-library-tool/catalog-library-tool.component.mjs +89 -89
- package/esm2020/lib/catalog/catalog-library-tool/catalog-library-tool.module.mjs +29 -29
- package/esm2020/lib/catalog/catalog.module.mjs +24 -24
- package/esm2020/lib/catalog/catalog.state.mjs +54 -54
- package/esm2020/lib/catalog/index.mjs +6 -6
- package/esm2020/lib/context/context-editor-tool/context-editor-tool.component.mjs +34 -34
- package/esm2020/lib/context/context-manager-tool/context-manager-tool.component.mjs +44 -44
- package/esm2020/lib/context/context-permission-manager-tool/context-permission-manager-tool.component.mjs +25 -25
- package/esm2020/lib/context/context-share-tool/context-share-tool.component.mjs +34 -34
- package/esm2020/lib/context/context.module.mjs +39 -39
- package/esm2020/lib/context/context.state.mjs +88 -88
- package/esm2020/lib/context/index.mjs +6 -6
- package/esm2020/lib/directions/directions-tool/directions-tool.component.mjs +84 -84
- package/esm2020/lib/directions/directions-tool/index.mjs +2 -2
- package/esm2020/lib/directions/directions.module.mjs +26 -26
- package/esm2020/lib/directions/directions.state.mjs +64 -64
- package/esm2020/lib/directions/index.mjs +3 -3
- package/esm2020/lib/draw/draw.module.mjs +21 -21
- package/esm2020/lib/draw/draw.state.mjs +39 -39
- package/esm2020/lib/draw/drawing-tool/drawing-tool.component.mjs +72 -72
- package/esm2020/lib/draw/index.mjs +3 -3
- package/esm2020/lib/filter/active-ogc-filter-tool/active-ogc-filter-tool.animation.mjs +10 -10
- package/esm2020/lib/filter/active-ogc-filter-tool/active-ogc-filter-tool.component.mjs +44 -44
- package/esm2020/lib/filter/active-ogc-filter-tool/index.mjs +2 -2
- package/esm2020/lib/filter/active-time-filter-tool/active-time-filter-tool.animation.mjs +10 -10
- package/esm2020/lib/filter/active-time-filter-tool/active-time-filter-tool.component.mjs +44 -44
- package/esm2020/lib/filter/active-time-filter-tool/index.mjs +2 -2
- package/esm2020/lib/filter/filter.module.mjs +51 -51
- package/esm2020/lib/filter/index.mjs +6 -6
- package/esm2020/lib/filter/ogc-filter-tool/index.mjs +2 -2
- package/esm2020/lib/filter/ogc-filter-tool/ogc-filter-tool.component.mjs +25 -25
- package/esm2020/lib/filter/spatial-filter-tool/index.mjs +2 -2
- package/esm2020/lib/filter/spatial-filter-tool/spatial-filter-tool.component.mjs +535 -535
- package/esm2020/lib/filter/time-filter-tool/index.mjs +2 -2
- package/esm2020/lib/filter/time-filter-tool/time-filter-tool.component.mjs +25 -25
- package/esm2020/lib/import-export/import-export-tool/import-export-tool.component.mjs +141 -141
- package/esm2020/lib/import-export/import-export-tool/index.mjs +2 -2
- package/esm2020/lib/import-export/import-export.module.mjs +51 -51
- package/esm2020/lib/import-export/import-export.state.mjs +41 -41
- package/esm2020/lib/import-export/index.mjs +3 -3
- package/esm2020/lib/integration.module.mjs +72 -72
- package/esm2020/lib/map/advanced-map-tool/advanced-coordinates/advanced-coordinates.component.mjs +472 -472
- package/esm2020/lib/map/advanced-map-tool/advanced-map-tool.component.mjs +89 -89
- package/esm2020/lib/map/advanced-map-tool/advanced-swipe/advanced-swipe.component.mjs +218 -218
- package/esm2020/lib/map/advanced-map-tool/index.mjs +2 -2
- package/esm2020/lib/map/index.mjs +9 -9
- package/esm2020/lib/map/layer-list-tool.state.mjs +42 -42
- package/esm2020/lib/map/map-details-tool/index.mjs +2 -2
- package/esm2020/lib/map/map-details-tool/map-details-tool.component.mjs +256 -256
- package/esm2020/lib/map/map-legend/index.mjs +2 -2
- package/esm2020/lib/map/map-legend/map-legend-tool.component.mjs +275 -275
- package/esm2020/lib/map/map-proximity-tool/index.mjs +2 -2
- package/esm2020/lib/map/map-proximity-tool/map-proximity-tool.component.mjs +203 -203
- package/esm2020/lib/map/map-proximity.state.mjs +167 -167
- package/esm2020/lib/map/map-tool/index.mjs +2 -2
- package/esm2020/lib/map/map-tool/map-tool.component.mjs +130 -130
- package/esm2020/lib/map/map-tools/index.mjs +2 -2
- package/esm2020/lib/map/map-tools/map-tools.component.mjs +495 -495
- package/esm2020/lib/map/map.module.mjs +144 -144
- package/esm2020/lib/map/map.state.mjs +47 -47
- package/esm2020/lib/measure/index.mjs +4 -4
- package/esm2020/lib/measure/measure.module.mjs +20 -20
- package/esm2020/lib/measure/measure.state.mjs +35 -35
- package/esm2020/lib/measure/measurer-tool/measurer-tool.component.mjs +45 -45
- package/esm2020/lib/measure/measurer-tool/measurer-tool.module.mjs +25 -25
- package/esm2020/lib/print/index.mjs +2 -2
- package/esm2020/lib/print/print-tool/index.mjs +2 -2
- package/esm2020/lib/print/print-tool/print-tool.component.mjs +33 -33
- package/esm2020/lib/print/print.module.mjs +26 -26
- package/esm2020/lib/search/index.mjs +7 -7
- package/esm2020/lib/search/query.state.mjs +42 -34
- package/esm2020/lib/search/search-bar/search-bar-binding.directive.mjs +61 -61
- package/esm2020/lib/search/search-bar/search-bar.module.mjs +22 -22
- package/esm2020/lib/search/search-results-tool/search-results-tool.component.mjs +593 -593
- package/esm2020/lib/search/search-results-tool/search-results-tool.module.mjs +65 -65
- package/esm2020/lib/search/search.module.mjs +24 -24
- package/esm2020/lib/search/search.state.mjs +132 -132
- package/esm2020/lib/storage/index.mjs +2 -2
- package/esm2020/lib/storage/storage.module.mjs +16 -16
- package/esm2020/lib/storage/storage.state.mjs +23 -23
- package/esm2020/lib/tool/index.mjs +2 -2
- package/esm2020/lib/tool/tool.module.mjs +16 -16
- package/esm2020/lib/tool/tool.state.mjs +52 -52
- package/esm2020/lib/workspace/index.mjs +4 -4
- package/esm2020/lib/workspace/shared/edition-actions.service.mjs +156 -156
- package/esm2020/lib/workspace/shared/feature-actions.service.mjs +144 -144
- package/esm2020/lib/workspace/shared/index.mjs +3 -3
- package/esm2020/lib/workspace/shared/wfs-actions.service.mjs +158 -158
- package/esm2020/lib/workspace/shared/workspace.utils.mjs +7 -7
- package/esm2020/lib/workspace/workspace-button/index.mjs +2 -2
- package/esm2020/lib/workspace/workspace-button/workspace-button.component.mjs +69 -69
- package/esm2020/lib/workspace/workspace.module.mjs +37 -37
- package/esm2020/lib/workspace/workspace.state.mjs +188 -188
- package/esm2020/public_api.mjs +35 -35
- package/fesm2015/igo2-integration.mjs +6558 -6553
- package/fesm2015/igo2-integration.mjs.map +1 -1
- package/fesm2020/igo2-integration.mjs +6114 -6109
- package/fesm2020/igo2-integration.mjs.map +1 -1
- 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/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 +24 -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 +60 -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 +26 -26
- package/lib/workspace/shared/feature-actions.service.d.ts +25 -25
- package/lib/workspace/shared/index.d.ts +2 -2
- package/lib/workspace/shared/wfs-actions.service.d.ts +27 -27
- package/lib/workspace/shared/workspace.utils.d.ts +2 -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/ngcc.config.js +3 -3
- package/package.json +3 -3
- package/public_api.d.ts +31 -31
|
@@ -1,167 +1,167 @@
|
|
|
1
|
-
import { Injectable } from '@angular/core';
|
|
2
|
-
import { FeatureStore, featureFromOl, measureOlGeometryLength, FEATURE, roundCoordTo } from '@igo2/geo';
|
|
3
|
-
import { BehaviorSubject, combineLatest, interval } from 'rxjs';
|
|
4
|
-
import { debounceTime } from 'rxjs/operators';
|
|
5
|
-
import GeoJSON from 'ol/format/GeoJSON';
|
|
6
|
-
import { uuid } from '@igo2/utils';
|
|
7
|
-
import olLayerVector from 'ol/layer/Vector';
|
|
8
|
-
import olLineString from 'ol/geom/LineString';
|
|
9
|
-
import * as olProj from 'ol/proj';
|
|
10
|
-
import * as i0 from "@angular/core";
|
|
11
|
-
import * as i1 from "../map/map.state";
|
|
12
|
-
import * as i2 from "@igo2/core";
|
|
13
|
-
/**
|
|
14
|
-
* Service that holds the state of the direction module
|
|
15
|
-
*/
|
|
16
|
-
export class MapProximityState {
|
|
17
|
-
constructor(mapState, storageService) {
|
|
18
|
-
this.mapState = mapState;
|
|
19
|
-
this.storageService = storageService;
|
|
20
|
-
this.defaultProximityRadiusValue = 30;
|
|
21
|
-
this.enabled$ = new BehaviorSubject(false);
|
|
22
|
-
this.proximityRadiusValue$ = new BehaviorSubject(this.storageService.get('mapProximityRadius') || this.defaultProximityRadiusValue);
|
|
23
|
-
this.proximitylocationType$ = new BehaviorSubject('geolocation');
|
|
24
|
-
this.proximityFeatureStore = new FeatureStore([], { map: this.mapState.map });
|
|
25
|
-
this.subs$$ = [];
|
|
26
|
-
this.currentPositionCoordinate$ = new BehaviorSubject(undefined);
|
|
27
|
-
this.mapState.map.ol.once('rendercomplete', () => {
|
|
28
|
-
this.subscribeProximityMonitor();
|
|
29
|
-
});
|
|
30
|
-
}
|
|
31
|
-
get map() {
|
|
32
|
-
return this.mapState.map;
|
|
33
|
-
}
|
|
34
|
-
subscribeProximityMonitor() {
|
|
35
|
-
this.subs$$.push(combineLatest([
|
|
36
|
-
this.enabled$,
|
|
37
|
-
this.proximitylocationType$,
|
|
38
|
-
this.proximityRadiusValue$,
|
|
39
|
-
interval(5000),
|
|
40
|
-
this.map.geolocationController.position$
|
|
41
|
-
])
|
|
42
|
-
.pipe(debounceTime(750))
|
|
43
|
-
.subscribe((bunch) => {
|
|
44
|
-
this.proximityFeatureStore.clear();
|
|
45
|
-
const enabled = bunch[0];
|
|
46
|
-
const layers = this.map.layers;
|
|
47
|
-
const currentPos = this.map.geolocationController.position$.value;
|
|
48
|
-
const locationType = bunch[1];
|
|
49
|
-
const proximityRadiusValue = bunch[2];
|
|
50
|
-
this.storageService.set('mapProximityRadius', proximityRadiusValue || this.defaultProximityRadiusValue);
|
|
51
|
-
if (!enabled) {
|
|
52
|
-
return;
|
|
53
|
-
}
|
|
54
|
-
let coord;
|
|
55
|
-
if (locationType === 'geolocation') {
|
|
56
|
-
if (!currentPos || !currentPos.position) {
|
|
57
|
-
return;
|
|
58
|
-
}
|
|
59
|
-
coord = olProj.transform(currentPos.position, currentPos.projection, this.map.projection);
|
|
60
|
-
this.map.mapCenter$.next(false);
|
|
61
|
-
}
|
|
62
|
-
else {
|
|
63
|
-
coord = this.map.viewController.getCenter();
|
|
64
|
-
;
|
|
65
|
-
this.map.mapCenter$.next(true);
|
|
66
|
-
}
|
|
67
|
-
const coordLonLat = olProj.transform(coord, this.map.projection, 'EPSG:4269');
|
|
68
|
-
const roundedCoordLonLat = roundCoordTo(coordLonLat, 6);
|
|
69
|
-
this.currentPositionCoordinate$.next(roundedCoordLonLat);
|
|
70
|
-
const layersToMonitor = layers
|
|
71
|
-
.filter(layer => layer.ol instanceof olLayerVector &&
|
|
72
|
-
layer.dataSource.options.queryable &&
|
|
73
|
-
layer.visible &&
|
|
74
|
-
layer.isInResolutionsRange);
|
|
75
|
-
layersToMonitor.map(layerToMonitor => {
|
|
76
|
-
const layerSource = layerToMonitor.ol.getSource();
|
|
77
|
-
// Mostly for polygon features.
|
|
78
|
-
const olFeaturesAtCoordinate = layerSource.getFeaturesAtCoordinate(coord);
|
|
79
|
-
if (olFeaturesAtCoordinate && olFeaturesAtCoordinate.length) {
|
|
80
|
-
olFeaturesAtCoordinate.map(olFeatureAtCoordinate => {
|
|
81
|
-
const featureAtThisPosition = featureFromOl(olFeatureAtCoordinate, this.map.projection);
|
|
82
|
-
let title = this.getQueryTitle(featureAtThisPosition, layerToMonitor);
|
|
83
|
-
// todo handle imported layers without querytitle? prompt title or detect first column?
|
|
84
|
-
this.addFeatureToStore(layerToMonitor, coord, featureAtThisPosition, title, 0);
|
|
85
|
-
});
|
|
86
|
-
}
|
|
87
|
-
else {
|
|
88
|
-
// compute proximity for remaining sources
|
|
89
|
-
const closestOlFeature = layerSource.getClosestFeatureToCoordinate(coord);
|
|
90
|
-
if (closestOlFeature) {
|
|
91
|
-
const closestOlGeom = closestOlFeature.getGeometry();
|
|
92
|
-
const closestFeature = featureFromOl(closestOlFeature, this.map.projection);
|
|
93
|
-
const geometryClosestPoint = closestOlGeom.getClosestPoint(coord);
|
|
94
|
-
const linebetween = new olLineString([coord, geometryClosestPoint]);
|
|
95
|
-
const lineLength = measureOlGeometryLength(linebetween, 'EPSG:3857');
|
|
96
|
-
if (lineLength <= proximityRadiusValue) {
|
|
97
|
-
let title = this.getQueryTitle(closestFeature, layerToMonitor);
|
|
98
|
-
// todo handle imported layers without querytitle? prompt title or detect first column?
|
|
99
|
-
this.addFeatureToStore(layerToMonitor, coord, closestFeature, title, lineLength);
|
|
100
|
-
}
|
|
101
|
-
}
|
|
102
|
-
}
|
|
103
|
-
});
|
|
104
|
-
}));
|
|
105
|
-
}
|
|
106
|
-
/**
|
|
107
|
-
* Add a feature with proximity properties to the store
|
|
108
|
-
* @internal
|
|
109
|
-
*/
|
|
110
|
-
addFeatureToStore(layer, coordFromCalculatedDistance, feature, title, distance) {
|
|
111
|
-
const featureId = uuid();
|
|
112
|
-
const projection = this.map.ol.getView().getProjection();
|
|
113
|
-
const olGeometry = feature.ol.getGeometry();
|
|
114
|
-
const geometry = new GeoJSON().writeGeometryObject(olGeometry, {
|
|
115
|
-
featureProjection: projection,
|
|
116
|
-
dataProjection: projection
|
|
117
|
-
});
|
|
118
|
-
this.proximityFeatureStore.update({
|
|
119
|
-
type: FEATURE,
|
|
120
|
-
geometry,
|
|
121
|
-
projection: projection.getCode(),
|
|
122
|
-
properties: { ...feature.properties, ...{
|
|
123
|
-
id: featureId,
|
|
124
|
-
element: title,
|
|
125
|
-
distance,
|
|
126
|
-
coordFromCalculatedDistance,
|
|
127
|
-
layerSrcId: layer.id,
|
|
128
|
-
layerSrcTitle: layer.title
|
|
129
|
-
} },
|
|
130
|
-
meta: {
|
|
131
|
-
id: featureId
|
|
132
|
-
}
|
|
133
|
-
});
|
|
134
|
-
}
|
|
135
|
-
getQueryTitle(feature, layer) {
|
|
136
|
-
let title;
|
|
137
|
-
if (layer.options?.source?.options) {
|
|
138
|
-
const dataSourceOptions = layer.options.source
|
|
139
|
-
.options;
|
|
140
|
-
if (dataSourceOptions.queryTitle) {
|
|
141
|
-
title = this.getLabelMatch(feature, dataSourceOptions.queryTitle);
|
|
142
|
-
}
|
|
143
|
-
}
|
|
144
|
-
return title;
|
|
145
|
-
}
|
|
146
|
-
getLabelMatch(feature, labelMatch) {
|
|
147
|
-
let label = labelMatch;
|
|
148
|
-
const labelToGet = Array.from(labelMatch.matchAll(/\$\{([^\{\}]+)\}/g));
|
|
149
|
-
labelToGet.forEach(v => {
|
|
150
|
-
label = label.replace(v[0], feature.properties[v[1]]);
|
|
151
|
-
});
|
|
152
|
-
// Nothing done? check feature's attribute
|
|
153
|
-
if (labelToGet.length === 0 && label === labelMatch) {
|
|
154
|
-
label = feature.properties[labelMatch] || labelMatch;
|
|
155
|
-
}
|
|
156
|
-
return label;
|
|
157
|
-
}
|
|
158
|
-
}
|
|
159
|
-
MapProximityState.ɵfac = function MapProximityState_Factory(t) { return new (t || MapProximityState)(i0.ɵɵinject(i1.MapState), i0.ɵɵinject(i2.StorageService)); };
|
|
160
|
-
MapProximityState.ɵprov = /*@__PURE__*/ i0.ɵɵdefineInjectable({ token: MapProximityState, factory: MapProximityState.ɵfac, providedIn: 'root' });
|
|
161
|
-
(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MapProximityState, [{
|
|
162
|
-
type: Injectable,
|
|
163
|
-
args: [{
|
|
164
|
-
providedIn: 'root'
|
|
165
|
-
}]
|
|
166
|
-
}], function () { return [{ type: i1.MapState }, { type: i2.StorageService }]; }, null); })();
|
|
167
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFwLXByb3hpbWl0eS5zdGF0ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2ludGVncmF0aW9uL3NyYy9saWIvbWFwL21hcC1wcm94aW1pdHkuc3RhdGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUUzQyxPQUFPLEVBQ0wsWUFBWSxFQUNaLGFBQWEsRUFBRSx1QkFBdUIsRUFBcUMsT0FBTyxFQUFFLFlBQVksRUFDakcsTUFBTSxXQUFXLENBQUM7QUFDbkIsT0FBTyxFQUFFLGVBQWUsRUFBRSxhQUFhLEVBQUUsUUFBUSxFQUFnQixNQUFNLE1BQU0sQ0FBQztBQUM5RSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFHOUMsT0FBTyxPQUFPLE1BQU0sbUJBQW1CLENBQUM7QUFDeEMsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUVuQyxPQUFPLGFBQWEsTUFBTSxpQkFBaUIsQ0FBQztBQUc1QyxPQUFPLFlBQVksTUFBTSxvQkFBb0IsQ0FBQztBQUM5QyxPQUFPLEtBQUssTUFBTSxNQUFNLFNBQVMsQ0FBQzs7OztBQUVsQzs7R0FFRztBQUlILE1BQU0sT0FBTyxpQkFBaUI7SUFnQjVCLFlBQ1UsUUFBa0IsRUFDbEIsY0FBOEI7UUFEOUIsYUFBUSxHQUFSLFFBQVEsQ0FBVTtRQUNsQixtQkFBYyxHQUFkLGNBQWMsQ0FBZ0I7UUFoQmhDLGdDQUEyQixHQUFXLEVBQUUsQ0FBQztRQUUxQyxhQUFRLEdBQTZCLElBQUksZUFBZSxDQUFVLEtBQUssQ0FBQyxDQUFDO1FBQ3pFLDBCQUFxQixHQUE0QixJQUFJLGVBQWUsQ0FDekUsSUFBSSxDQUFDLGNBQWMsQ0FBQyxHQUFHLENBQUMsb0JBQW9CLENBQVcsSUFBSSxJQUFJLENBQUMsMkJBQTJCLENBQUMsQ0FBQztRQUN4RiwyQkFBc0IsR0FBNEIs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Q0FBQyxFQUFFLE9BQU8sQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUN4RCxDQUFDLENBQUMsQ0FBQztRQUVILDBDQUEwQztRQUMxQyxJQUFJLFVBQVUsQ0FBQyxNQUFNLEtBQUssQ0FBQyxJQUFJLEtBQUssS0FBSyxVQUFVLEVBQUU7WUFDbkQsS0FBSyxHQUFHLE9BQU8sQ0FBQyxVQUFVLENBQUMsVUFBVSxDQUFDLElBQUksVUFBVSxDQUFDO1NBQ3REO1FBQ0QsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDOztrRkFqS1UsaUJBQWlCO3VFQUFqQixpQkFBaUIsV0FBakIsaUJBQWlCLG1CQUZoQixNQUFNO3VGQUVQLGlCQUFpQjtjQUg3QixVQUFVO2VBQUM7Z0JBQ1YsVUFBVSxFQUFFLE1BQU07YUFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcblxyXG5pbXBvcnQge1xyXG4gIEZlYXR1cmVTdG9yZSwgRmVhdHVyZSwgSWdvTWFwLFxyXG4gIGZlYXR1cmVGcm9tT2wsIG1lYXN1cmVPbEdlb21ldHJ5TGVuZ3RoLCBMYXllciwgUXVlcnlhYmxlRGF0YVNvdXJjZU9wdGlvbnMsIEZFQVRVUkUsIHJvdW5kQ29vcmRUbywgUXVlcnlhYmxlRGF0YVNvdXJjZSwgTWFwR2VvbG9jYXRpb25TdGF0ZVxyXG59IGZyb20gJ0BpZ28yL2dlbyc7XHJcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgY29tYmluZUxhdGVzdCwgaW50ZXJ2YWwsIFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBkZWJvdW5jZVRpbWUgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcbmltcG9ydCB7IE1hcFN0YXRlIH0gZnJvbSAnLi4vbWFwL21hcC5zdGF0ZSc7XHJcblxyXG5pbXBvcnQgR2VvSlNPTiBmcm9tICdvbC9mb3JtYXQvR2VvSlNPTic7XHJcbmltcG9ydCB7IHV1aWQgfSBmcm9tICdAaWdvMi91dGlscyc7XHJcblxyXG5pbXBvcnQgb2xMYXllclZlY3RvciBmcm9tICdvbC9sYXllci9WZWN0b3InO1xyXG5pbXBvcnQgb2xWZWN0b3JTb3VyY2UgZnJvbSAnb2wvc291cmNlL1ZlY3Rvcic7XHJcbmltcG9ydCBHZW9tZXRyeSBmcm9tICdvbC9nZW9tL0dlb21ldHJ5JztcclxuaW1wb3J0IG9sTGluZVN0cmluZyBmcm9tICdvbC9nZW9tL0xpbmVTdHJpbmcnO1xyXG5pbXBvcnQgKiBhcyBvbFByb2ogZnJvbSAnb2wvcHJvaic7XHJcbmltcG9ydCB7IFN0b3JhZ2VTZXJ2aWNlIH0gZnJvbSAnQGlnbzIvY29yZSc7XHJcbi8qKlxyXG4gKiBTZXJ2aWNlIHRoYXQgaG9sZHMgdGhlIHN0YXRlIG9mIHRoZSBkaXJlY3Rpb24gbW9kdWxlXHJcbiAqL1xyXG5ASW5qZWN0YWJsZSh7XHJcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBNYXBQcm94aW1pdHlTdGF0ZSB7XHJcblxyXG4gIHByaXZhdGUgZGVmYXVsdFByb3hpbWl0eVJhZGl1c1ZhbHVlOiBudW1iZXIgPSAzMDtcclxuXHJcbiAgcHVibGljIGVuYWJsZWQkOiBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4gPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KGZhbHNlKTtcclxuICBwdWJsaWMgcHJveGltaXR5UmFkaXVzVmFsdWUkOiBCZWhhdmlvclN1YmplY3Q8bnVtYmVyPiA9IG5ldyBCZWhhdmlvclN1YmplY3Q8bnVtYmVyPihcclxuICAgIHRoaXMuc3RvcmFnZVNlcnZpY2UuZ2V0KCdtYXBQcm94aW1pdHlSYWRpdXMnKSBhcyBudW1iZXIgfHwgdGhpcy5kZWZhdWx0UHJveGltaXR5UmFkaXVzVmFsdWUpO1xyXG4gIHB1YmxpYyBwcm94aW1pdHlsb2NhdGlvblR5cGUkOiBCZWhhdmlvclN1YmplY3Q8c3RyaW5nPiA9IG5ldyBCZWhhdmlvclN1YmplY3Q8c3RyaW5nPignZ2VvbG9jYXRpb24nKTtcclxuICBwdWJsaWMgcHJveGltaXR5RmVhdHVyZVN0b3JlOiBGZWF0dXJlU3RvcmU8RmVhdHVyZT4gPSBuZXcgRmVhdHVyZVN0b3JlPEZlYXR1cmU+KFtdLCB7IG1hcDogdGhpcy5tYXBTdGF0ZS5tYXAgfSk7XHJcbiAgcHJpdmF0ZSBzdWJzJCQ6IFN1YnNjcmlwdGlvbltdID0gW107XHJcbiAgcHVibGljIGN1cnJlbnRQb3NpdGlvbkNvb3JkaW5hdGUkOiBCZWhhdmlvclN1YmplY3Q8W251bWJlciwgbnVtYmVyXT4gPSBuZXcgQmVoYXZpb3JTdWJqZWN0KHVuZGVmaW5lZCk7XHJcblxyXG4gIGdldCBtYXAoKTogSWdvTWFwIHtcclxuICAgIHJldHVybiB0aGlzLm1hcFN0YXRlLm1hcDtcclxuICB9XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSBtYXBTdGF0ZTogTWFwU3RhdGUsXHJcbiAgICBwcml2YXRlIHN0b3JhZ2VTZXJ2aWNlOiBTdG9yYWdlU2VydmljZSkge1xyXG5cclxuICAgIHRoaXMubWFwU3RhdGUubWFwLm9sLm9uY2UoJ3JlbmRlcmNvbXBsZXRlJywgKCkgPT4ge1xyXG4gICAgICB0aGlzLnN1YnNjcmliZVByb3hpbWl0eU1vbml0b3IoKTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcblxyXG4gIHN1YnNjcmliZVByb3hpbWl0eU1vbml0b3IoKSB7XHJcbiAgICB0aGlzLnN1YnMkJC5wdXNoKGNvbWJpbmVMYXRlc3QoW1xyXG4gICAgICB0aGlzLmVuYWJsZWQkLFxyXG4gICAgICB0aGlzLnByb3hpbWl0eWxvY2F0aW9uVHlwZSQsXHJcbiAgICAgIHRoaXMucHJveGltaXR5UmFkaXVzVmFsdWUkLFxyXG4gICAgICBpbnRlcnZhbCg1MDAwKSxcclxuICAgICAgdGhpcy5tYXAuZ2VvbG9jYXRpb25Db250cm9sbGVyLnBvc2l0aW9uJFxyXG4gICAgXSlcclxuICAgICAgLnBpcGUoZGVib3VuY2VUaW1lKDc1MCkpXHJcbiAgICAgIC5zdWJzY3JpYmUoKGJ1bmNoOiBbYm9vbGVhbiwgc3RyaW5nLCBudW1iZXIsIG51bWJlciwgTWFwR2VvbG9jYXRpb25TdGF0ZV0pID0+IHtcclxuICAgICAgICB0aGlzLnByb3hpbWl0eUZlYXR1cmVTdG9yZS5jbGVhcigpO1xyXG4gICAgICAgIGNvbnN0IGVuYWJsZWQgPSBidW5jaFswXTtcclxuICAgICAgICBjb25zdCBsYXllcnMgPSB0aGlzLm1hcC5sYXllcnM7XHJcbiAgICAgICAgY29uc3QgY3VycmVudFBvcyA9IHRoaXMubWFwLmdlb2xvY2F0aW9uQ29udHJvbGxlci5wb3NpdGlvbiQudmFsdWU7XHJcbiAgICAgICAgY29uc3QgbG9jYXRpb25UeXBlID0gYnVuY2hbMV07XHJcbiAgICAgICAgY29uc3QgcHJveGltaXR5UmFkaXVzVmFsdWUgPSBidW5jaFsyXTtcclxuICAgICAgICB0aGlzLnN0b3JhZ2VTZXJ2aWNlLnNldCgnbWFwUHJveGltaXR5UmFkaXVzJywgcHJveGltaXR5UmFkaXVzVmFsdWUgfHwgdGhpcy5kZWZhdWx0UHJveGltaXR5UmFkaXVzVmFsdWUpO1xyXG5cclxuICAgICAgICBpZiAoIWVuYWJsZWQpIHtcclxuICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcblxyXG5cclxuICAgICAgICBsZXQgY29vcmQ6IG51bWJlcltdO1xyXG4gICAgICAgIGlmIChsb2NhdGlvblR5cGUgPT09ICdnZW9sb2NhdGlvbicpIHtcclxuICAgICAgICAgIGlmICghY3VycmVudFBvcyB8fCAhY3VycmVudFBvcy5wb3NpdGlvbikge1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgY29vcmQgPSBvbFByb2oudHJhbnNmb3JtKGN1cnJlbnRQb3MucG9zaXRpb24sIGN1cnJlbnRQb3MucHJvamVjdGlvbiwgdGhpcy5tYXAucHJvamVjdGlvbik7XHJcbiAgICAgICAgICB0aGlzLm1hcC5tYXBDZW50ZXIkLm5leHQoZmFsc2UpO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICBjb29yZCA9IHRoaXMubWFwLnZpZXdDb250cm9sbGVyLmdldENlbnRlcigpOztcclxuICAgICAgICAgIHRoaXMubWFwLm1hcENlbnRlciQubmV4dCh0cnVlKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGNvbnN0IGNvb3JkTG9uTGF0ID0gb2xQcm9qLnRyYW5zZm9ybShjb29yZCwgdGhpcy5tYXAucHJvamVjdGlvbiwgJ0VQU0c6NDI2OScpO1xyXG4gICAgICAgIGNvbnN0IHJvdW5kZWRDb29yZExvbkxhdCA9IHJvdW5kQ29vcmRUbyhjb29yZExvbkxhdCBhcyBbbnVtYmVyLCBudW1iZXJdLCA2KTtcclxuICAgICAgICB0aGlzLmN1cnJlbnRQb3NpdGlvbkNvb3JkaW5hdGUkLm5leHQocm91bmRlZENvb3JkTG9uTGF0KTtcclxuXHJcbiAgICAgICAgY29uc3QgbGF5ZXJzVG9Nb25pdG9yID0gbGF5ZXJzXHJcbiAgICAgICAgICAuZmlsdGVyKGxheWVyID0+XHJcbiAgICAgICAgICAgIGxheWVyLm9sIGluc3RhbmNlb2Ygb2xMYXllclZlY3RvciAmJlxyXG4gICAgICAgICAgICAobGF5ZXIuZGF0YVNvdXJjZSBhcyBRdWVyeWFibGVEYXRhU291cmNlKS5vcHRpb25zLnF1ZXJ5YWJsZSAmJlxyXG4gICAgICAgICAgICBsYXllci52aXNpYmxlICYmXHJcbiAgICAgICAgICAgIGxheWVyLmlzSW5SZXNvbHV0aW9uc1JhbmdlKTtcclxuXHJcbiAgICAgICAgbGF5ZXJzVG9Nb25pdG9yLm1hcChsYXllclRvTW9uaXRvciA9PiB7XHJcbiAgICAgICAgICBjb25zdCBsYXllclNvdXJjZSA9IGxheWVyVG9Nb25pdG9yLm9sLmdldFNvdXJjZSgpIGFzIG9sVmVjdG9yU291cmNlPEdlb21ldHJ5PjtcclxuXHJcbiAgICAgICAgICAvLyBNb3N0bHkgZm9yIHBvbHlnb24gZmVhdHVyZXMuXHJcbiAgICAgICAgICBjb25zdCBvbEZlYXR1cmVzQXRDb29yZGluYXRlID0gbGF5ZXJTb3VyY2UuZ2V0RmVhdHVyZXNBdENvb3JkaW5hdGUoY29vcmQpO1xyXG4gICAgICAgICAgaWYgKG9sRmVhdHVyZXNBdENvb3JkaW5hdGUgJiYgb2xGZWF0dXJlc0F0Q29vcmRpbmF0ZS5sZW5ndGgpIHtcclxuICAgICAgICAgICAgb2xGZWF0dXJlc0F0Q29vcmRpbmF0ZS5tYXAob2xGZWF0dXJlQXRDb29yZGluYXRlID0+IHtcclxuICAgICAgICAgICAgICBjb25zdCBmZWF0dXJlQXRUaGlzUG9zaXRpb24gPSBmZWF0dXJlRnJvbU9sKG9sRmVhdHVyZUF0Q29vcmRpbmF0ZSwgdGhpcy5tYXAucHJvamVjdGlvbik7XHJcbiAgICAgICAgICAgICAgbGV0IHRpdGxlID0gdGhpcy5nZXRRdWVyeVRpdGxlKGZlYXR1cmVBdFRoaXNQb3NpdGlvbiwgbGF5ZXJUb01vbml0b3IpO1xyXG4gICAgICAgICAgICAgIC8vIHRvZG8gaGFuZGxlIGltcG9ydGVkIGxheWVycyB3aXRob3V0IHF1ZXJ5dGl0bGU/IHByb21wdCB0aXRsZSBvciBkZXRlY3QgZmlyc3QgY29sdW1uP1xyXG4gICAgICAgICAgICAgIHRoaXMuYWRkRmVhdHVyZVRvU3RvcmUobGF5ZXJUb01vbml0b3IsIGNvb3JkLCBmZWF0dXJlQXRUaGlzUG9zaXRpb24sIHRpdGxlLCAwKTtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAvLyBjb21wdXRlIHByb3hpbWl0eSBmb3IgcmVtYWluaW5nIHNvdXJjZXNcclxuICAgICAgICAgICAgY29uc3QgY2xvc2VzdE9sRmVhdHVyZSA9IGxheWVyU291cmNlLmdldENsb3Nlc3RGZWF0dXJlVG9Db29yZGluYXRlKGNvb3JkKTtcclxuICAgICAgICAgICAgaWYgKGNsb3Nlc3RPbEZlYXR1cmUpIHtcclxuICAgICAgICAgICAgICBjb25zdCBjbG9zZXN0T2xHZW9tID0gY2xvc2VzdE9sRmVhdHVyZS5nZXRHZW9tZXRyeSgpO1xyXG4gICAgICAgICAgICAgIGNvbnN0IGNsb3Nlc3RGZWF0dXJlID0gZmVhdHVyZUZyb21PbChjbG9zZXN0T2xGZWF0dXJlLCB0aGlzLm1hcC5wcm9qZWN0aW9uKTtcclxuICAgICAgICAgICAgICBjb25zdCBnZW9tZXRyeUNsb3Nlc3RQb2ludCA9IGNsb3Nlc3RPbEdlb20uZ2V0Q2xvc2VzdFBvaW50KGNvb3JkKTtcclxuICAgICAgICAgICAgICBjb25zdCBsaW5lYmV0d2VlbiA9IG5ldyBvbExpbmVTdHJpbmcoW2Nvb3JkLCBnZW9tZXRyeUNsb3Nlc3RQb2ludF0pO1xyXG4gICAgICAgICAgICAgIGNvbnN0IGxpbmVMZW5ndGggPSBtZWFzdXJlT2xHZW9tZXRyeUxlbmd0aChsaW5lYmV0d2VlbiwgJ0VQU0c6Mzg1NycpO1xyXG4gICAgICAgICAgICAgIGlmIChsaW5lTGVuZ3RoIDw9IHByb3hpbWl0eVJhZGl1c1ZhbHVlKSB7XHJcbiAgICAgICAgICAgICAgICBsZXQgdGl0bGUgPSB0aGlzLmdldFF1ZXJ5VGl0bGUoY2xvc2VzdEZlYXR1cmUsIGxheWVyVG9Nb25pdG9yKTtcclxuICAgICAgICAgICAgICAgIC8vIHRvZG8gaGFuZGxlIGltcG9ydGVkIGxheWVycyB3aXRob3V0IHF1ZXJ5dGl0bGU/IHByb21wdCB0aXRsZSBvciBkZXRlY3QgZmlyc3QgY29sdW1uP1xyXG4gICAgICAgICAgICAgICAgdGhpcy5hZGRGZWF0dXJlVG9TdG9yZShsYXllclRvTW9uaXRvciwgY29vcmQsIGNsb3Nlc3RGZWF0dXJlLCB0aXRsZSwgbGluZUxlbmd0aCk7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcblxyXG4gICAgICB9KSk7XHJcbiAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAqIEFkZCBhIGZlYXR1cmUgd2l0aCBwcm94aW1pdHkgcHJvcGVydGllcyB0byB0aGUgc3RvcmVcclxuICAgKiBAaW50ZXJuYWxcclxuICAgKi9cclxuICAgICBwcml2YXRlIGFkZEZlYXR1cmVUb1N0b3JlKGxheWVyOiBMYXllciwgY29vcmRGcm9tQ2FsY3VsYXRlZERpc3RhbmNlLCBmZWF0dXJlOiBGZWF0dXJlLCB0aXRsZSwgZGlzdGFuY2UpIHtcclxuICAgICAgY29uc3QgZmVhdHVyZUlkID0gdXVpZCgpO1xyXG4gICAgICBjb25zdCBwcm9qZWN0aW9uID0gdGhpcy5tYXAub2wuZ2V0VmlldygpLmdldFByb2plY3Rpb24oKTtcclxuICAgICAgY29uc3Qgb2xHZW9tZXRyeSA9IGZlYXR1cmUub2wuZ2V0R2VvbWV0cnkoKSBhcyBHZW9tZXRyeTtcclxuICAgICAgY29uc3QgZ2VvbWV0cnkgPSBuZXcgR2VvSlNPTigpLndyaXRlR2VvbWV0cnlPYmplY3Qob2xHZW9tZXRyeSwge1xyXG4gICAgICAgIGZlYXR1cmVQcm9qZWN0aW9uOiBwcm9qZWN0aW9uLFxyXG4gICAgICAgIGRhdGFQcm9qZWN0aW9uOiBwcm9qZWN0aW9uXHJcbiAgICAgIH0pIGFzIGFueTtcclxuICAgICAgdGhpcy5wcm94aW1pdHlGZWF0dXJlU3RvcmUudXBkYXRlKHtcclxuICAgICAgICB0eXBlOiBGRUFUVVJFLFxyXG4gICAgICAgIGdlb21ldHJ5LFxyXG4gICAgICAgIHByb2plY3Rpb246IHByb2plY3Rpb24uZ2V0Q29kZSgpLFxyXG4gICAgICAgIHByb3BlcnRpZXM6IHsuLi5mZWF0dXJlLnByb3BlcnRpZXMsLi4ue1xyXG4gICAgICAgICAgaWQ6IGZlYXR1cmVJZCxcclxuICAgICAgICAgIGVsZW1lbnQ6IHRpdGxlLFxyXG4gICAgICAgICAgZGlzdGFuY2UsXHJcbiAgICAgICAgICBjb29yZEZyb21DYWxjdWxhdGVkRGlzdGFuY2UsXHJcbiAgICAgICAgICBsYXllclNyY0lkOiBsYXllci5pZCxcclxuICAgICAgICAgIGxheWVyU3JjVGl0bGU6IGxheWVyLnRpdGxlXHJcbiAgICAgICAgfX0sXHJcbiAgICAgICAgbWV0YToge1xyXG4gICAgICAgICAgaWQ6IGZlYXR1cmVJZFxyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gIGdldFF1ZXJ5VGl0bGUoZmVhdHVyZTogRmVhdHVyZSwgbGF5ZXI6IExheWVyKTogc3RyaW5nIHtcclxuICAgIGxldCB0aXRsZTtcclxuICAgIGlmIChsYXllci5vcHRpb25zPy5zb3VyY2U/Lm9wdGlvbnMpIHtcclxuICAgICAgY29uc3QgZGF0YVNvdXJjZU9wdGlvbnMgPSBsYXllci5vcHRpb25zLnNvdXJjZVxyXG4gICAgICAgIC5vcHRpb25zIGFzIFF1ZXJ5YWJsZURhdGFTb3VyY2VPcHRpb25zO1xyXG4gICAgICBpZiAoZGF0YVNvdXJjZU9wdGlvbnMucXVlcnlUaXRsZSkge1xyXG4gICAgICAgIHRpdGxlID0gdGhpcy5nZXRMYWJlbE1hdGNoKGZlYXR1cmUsIGRhdGFTb3VyY2VPcHRpb25zLnF1ZXJ5VGl0bGUpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gdGl0bGU7XHJcbiAgfVxyXG5cclxuICBnZXRMYWJlbE1hdGNoKGZlYXR1cmU6IEZlYXR1cmUsIGxhYmVsTWF0Y2gpOiBzdHJpbmcge1xyXG4gICAgbGV0IGxhYmVsID0gbGFiZWxNYXRjaDtcclxuICAgIGNvbnN0IGxhYmVsVG9HZXQgPSBBcnJheS5mcm9tKGxhYmVsTWF0Y2gubWF0Y2hBbGwoL1xcJFxceyhbXlxce1xcfV0rKVxcfS9nKSk7XHJcblxyXG4gICAgbGFiZWxUb0dldC5mb3JFYWNoKHYgPT4ge1xyXG4gICAgICBsYWJlbCA9IGxhYmVsLnJlcGxhY2UodlswXSwgZmVhdHVyZS5wcm9wZXJ0aWVzW3ZbMV1dKTtcclxuICAgIH0pO1xyXG5cclxuICAgIC8vIE5vdGhpbmcgZG9uZT8gY2hlY2sgZmVhdHVyZSdzIGF0dHJpYnV0ZVxyXG4gICAgaWYgKGxhYmVsVG9HZXQubGVuZ3RoID09PSAwICYmIGxhYmVsID09PSBsYWJlbE1hdGNoKSB7XHJcbiAgICAgIGxhYmVsID0gZmVhdHVyZS5wcm9wZXJ0aWVzW2xhYmVsTWF0Y2hdIHx8IGxhYmVsTWF0Y2g7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gbGFiZWw7XHJcbiAgfVxyXG59XHJcbiJdfQ==
|
|
1
|
+
import { Injectable } from '@angular/core';
|
|
2
|
+
import { FeatureStore, featureFromOl, measureOlGeometryLength, FEATURE, roundCoordTo } from '@igo2/geo';
|
|
3
|
+
import { BehaviorSubject, combineLatest, interval } from 'rxjs';
|
|
4
|
+
import { debounceTime } from 'rxjs/operators';
|
|
5
|
+
import GeoJSON from 'ol/format/GeoJSON';
|
|
6
|
+
import { uuid } from '@igo2/utils';
|
|
7
|
+
import olLayerVector from 'ol/layer/Vector';
|
|
8
|
+
import olLineString from 'ol/geom/LineString';
|
|
9
|
+
import * as olProj from 'ol/proj';
|
|
10
|
+
import * as i0 from "@angular/core";
|
|
11
|
+
import * as i1 from "../map/map.state";
|
|
12
|
+
import * as i2 from "@igo2/core";
|
|
13
|
+
/**
|
|
14
|
+
* Service that holds the state of the direction module
|
|
15
|
+
*/
|
|
16
|
+
export class MapProximityState {
|
|
17
|
+
constructor(mapState, storageService) {
|
|
18
|
+
this.mapState = mapState;
|
|
19
|
+
this.storageService = storageService;
|
|
20
|
+
this.defaultProximityRadiusValue = 30;
|
|
21
|
+
this.enabled$ = new BehaviorSubject(false);
|
|
22
|
+
this.proximityRadiusValue$ = new BehaviorSubject(this.storageService.get('mapProximityRadius') || this.defaultProximityRadiusValue);
|
|
23
|
+
this.proximitylocationType$ = new BehaviorSubject('geolocation');
|
|
24
|
+
this.proximityFeatureStore = new FeatureStore([], { map: this.mapState.map });
|
|
25
|
+
this.subs$$ = [];
|
|
26
|
+
this.currentPositionCoordinate$ = new BehaviorSubject(undefined);
|
|
27
|
+
this.mapState.map.ol.once('rendercomplete', () => {
|
|
28
|
+
this.subscribeProximityMonitor();
|
|
29
|
+
});
|
|
30
|
+
}
|
|
31
|
+
get map() {
|
|
32
|
+
return this.mapState.map;
|
|
33
|
+
}
|
|
34
|
+
subscribeProximityMonitor() {
|
|
35
|
+
this.subs$$.push(combineLatest([
|
|
36
|
+
this.enabled$,
|
|
37
|
+
this.proximitylocationType$,
|
|
38
|
+
this.proximityRadiusValue$,
|
|
39
|
+
interval(5000),
|
|
40
|
+
this.map.geolocationController.position$
|
|
41
|
+
])
|
|
42
|
+
.pipe(debounceTime(750))
|
|
43
|
+
.subscribe((bunch) => {
|
|
44
|
+
this.proximityFeatureStore.clear();
|
|
45
|
+
const enabled = bunch[0];
|
|
46
|
+
const layers = this.map.layers;
|
|
47
|
+
const currentPos = this.map.geolocationController.position$.value;
|
|
48
|
+
const locationType = bunch[1];
|
|
49
|
+
const proximityRadiusValue = bunch[2];
|
|
50
|
+
this.storageService.set('mapProximityRadius', proximityRadiusValue || this.defaultProximityRadiusValue);
|
|
51
|
+
if (!enabled) {
|
|
52
|
+
return;
|
|
53
|
+
}
|
|
54
|
+
let coord;
|
|
55
|
+
if (locationType === 'geolocation') {
|
|
56
|
+
if (!currentPos || !currentPos.position) {
|
|
57
|
+
return;
|
|
58
|
+
}
|
|
59
|
+
coord = olProj.transform(currentPos.position, currentPos.projection, this.map.projection);
|
|
60
|
+
this.map.mapCenter$.next(false);
|
|
61
|
+
}
|
|
62
|
+
else {
|
|
63
|
+
coord = this.map.viewController.getCenter();
|
|
64
|
+
;
|
|
65
|
+
this.map.mapCenter$.next(true);
|
|
66
|
+
}
|
|
67
|
+
const coordLonLat = olProj.transform(coord, this.map.projection, 'EPSG:4269');
|
|
68
|
+
const roundedCoordLonLat = roundCoordTo(coordLonLat, 6);
|
|
69
|
+
this.currentPositionCoordinate$.next(roundedCoordLonLat);
|
|
70
|
+
const layersToMonitor = layers
|
|
71
|
+
.filter(layer => layer.ol instanceof olLayerVector &&
|
|
72
|
+
layer.dataSource.options.queryable &&
|
|
73
|
+
layer.visible &&
|
|
74
|
+
layer.isInResolutionsRange);
|
|
75
|
+
layersToMonitor.map(layerToMonitor => {
|
|
76
|
+
const layerSource = layerToMonitor.ol.getSource();
|
|
77
|
+
// Mostly for polygon features.
|
|
78
|
+
const olFeaturesAtCoordinate = layerSource.getFeaturesAtCoordinate(coord);
|
|
79
|
+
if (olFeaturesAtCoordinate && olFeaturesAtCoordinate.length) {
|
|
80
|
+
olFeaturesAtCoordinate.map(olFeatureAtCoordinate => {
|
|
81
|
+
const featureAtThisPosition = featureFromOl(olFeatureAtCoordinate, this.map.projection);
|
|
82
|
+
let title = this.getQueryTitle(featureAtThisPosition, layerToMonitor);
|
|
83
|
+
// todo handle imported layers without querytitle? prompt title or detect first column?
|
|
84
|
+
this.addFeatureToStore(layerToMonitor, coord, featureAtThisPosition, title, 0);
|
|
85
|
+
});
|
|
86
|
+
}
|
|
87
|
+
else {
|
|
88
|
+
// compute proximity for remaining sources
|
|
89
|
+
const closestOlFeature = layerSource.getClosestFeatureToCoordinate(coord);
|
|
90
|
+
if (closestOlFeature) {
|
|
91
|
+
const closestOlGeom = closestOlFeature.getGeometry();
|
|
92
|
+
const closestFeature = featureFromOl(closestOlFeature, this.map.projection);
|
|
93
|
+
const geometryClosestPoint = closestOlGeom.getClosestPoint(coord);
|
|
94
|
+
const linebetween = new olLineString([coord, geometryClosestPoint]);
|
|
95
|
+
const lineLength = measureOlGeometryLength(linebetween, 'EPSG:3857');
|
|
96
|
+
if (lineLength <= proximityRadiusValue) {
|
|
97
|
+
let title = this.getQueryTitle(closestFeature, layerToMonitor);
|
|
98
|
+
// todo handle imported layers without querytitle? prompt title or detect first column?
|
|
99
|
+
this.addFeatureToStore(layerToMonitor, coord, closestFeature, title, lineLength);
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
});
|
|
104
|
+
}));
|
|
105
|
+
}
|
|
106
|
+
/**
|
|
107
|
+
* Add a feature with proximity properties to the store
|
|
108
|
+
* @internal
|
|
109
|
+
*/
|
|
110
|
+
addFeatureToStore(layer, coordFromCalculatedDistance, feature, title, distance) {
|
|
111
|
+
const featureId = uuid();
|
|
112
|
+
const projection = this.map.ol.getView().getProjection();
|
|
113
|
+
const olGeometry = feature.ol.getGeometry();
|
|
114
|
+
const geometry = new GeoJSON().writeGeometryObject(olGeometry, {
|
|
115
|
+
featureProjection: projection,
|
|
116
|
+
dataProjection: projection
|
|
117
|
+
});
|
|
118
|
+
this.proximityFeatureStore.update({
|
|
119
|
+
type: FEATURE,
|
|
120
|
+
geometry,
|
|
121
|
+
projection: projection.getCode(),
|
|
122
|
+
properties: { ...feature.properties, ...{
|
|
123
|
+
id: featureId,
|
|
124
|
+
element: title,
|
|
125
|
+
distance,
|
|
126
|
+
coordFromCalculatedDistance,
|
|
127
|
+
layerSrcId: layer.id,
|
|
128
|
+
layerSrcTitle: layer.title
|
|
129
|
+
} },
|
|
130
|
+
meta: {
|
|
131
|
+
id: featureId
|
|
132
|
+
}
|
|
133
|
+
});
|
|
134
|
+
}
|
|
135
|
+
getQueryTitle(feature, layer) {
|
|
136
|
+
let title;
|
|
137
|
+
if (layer.options?.source?.options) {
|
|
138
|
+
const dataSourceOptions = layer.options.source
|
|
139
|
+
.options;
|
|
140
|
+
if (dataSourceOptions.queryTitle) {
|
|
141
|
+
title = this.getLabelMatch(feature, dataSourceOptions.queryTitle);
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
return title;
|
|
145
|
+
}
|
|
146
|
+
getLabelMatch(feature, labelMatch) {
|
|
147
|
+
let label = labelMatch;
|
|
148
|
+
const labelToGet = Array.from(labelMatch.matchAll(/\$\{([^\{\}]+)\}/g));
|
|
149
|
+
labelToGet.forEach(v => {
|
|
150
|
+
label = label.replace(v[0], feature.properties[v[1]]);
|
|
151
|
+
});
|
|
152
|
+
// Nothing done? check feature's attribute
|
|
153
|
+
if (labelToGet.length === 0 && label === labelMatch) {
|
|
154
|
+
label = feature.properties[labelMatch] || labelMatch;
|
|
155
|
+
}
|
|
156
|
+
return label;
|
|
157
|
+
}
|
|
158
|
+
}
|
|
159
|
+
MapProximityState.ɵfac = function MapProximityState_Factory(t) { return new (t || MapProximityState)(i0.ɵɵinject(i1.MapState), i0.ɵɵinject(i2.StorageService)); };
|
|
160
|
+
MapProximityState.ɵprov = /*@__PURE__*/ i0.ɵɵdefineInjectable({ token: MapProximityState, factory: MapProximityState.ɵfac, providedIn: 'root' });
|
|
161
|
+
(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MapProximityState, [{
|
|
162
|
+
type: Injectable,
|
|
163
|
+
args: [{
|
|
164
|
+
providedIn: 'root'
|
|
165
|
+
}]
|
|
166
|
+
}], function () { return [{ type: i1.MapState }, { type: i2.StorageService }]; }, null); })();
|
|
167
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFwLXByb3hpbWl0eS5zdGF0ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2ludGVncmF0aW9uL3NyYy9saWIvbWFwL21hcC1wcm94aW1pdHkuc3RhdGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUUzQyxPQUFPLEVBQ0wsWUFBWSxFQUNaLGFBQWEsRUFBRSx1QkFBdUIsRUFBcUMsT0FBTyxFQUFFLFlBQVksRUFDakcsTUFBTSxXQUFXLENBQUM7QUFDbkIsT0FBTyxFQUFFLGVBQWUsRUFBRSxhQUFhLEVBQUUsUUFBUSxFQUFnQixNQUFNLE1BQU0sQ0FBQztBQUM5RSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFHOUMsT0FBTyxPQUFPLE1BQU0sbUJBQW1CLENBQUM7QUFDeEMsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUVuQyxPQUFPLGFBQWEsTUFBTSxpQkFBaUIsQ0FBQztBQUc1QyxPQUFPLFlBQVksTUFBTSxvQkFBb0IsQ0FBQztBQUM5QyxPQUFPLEtBQUssTUFBTSxNQUFNLFNBQVMsQ0FBQzs7OztBQUVsQzs7R0FFRztBQUlILE1BQU0sT0FBTyxpQkFBaUI7SUFnQjVCLFlBQ1UsUUFBa0IsRUFDbEIsY0FBOEI7UUFEOUIsYUFBUSxHQUFSLFFBQVEsQ0FBVTtRQUNsQixtQkFBYyxHQUFkLGNBQWMsQ0FBZ0I7UUFoQmhDLGdDQUEyQixHQUFXLEVBQUUsQ0FBQztRQUUxQyxhQUFRLEdBQTZCLElBQUksZUFBZSxDQUFVLEtBQUssQ0FBQyxDQUFDO1FBQ3pFLDBCQUFxQixHQUE0QixJQUFJLGVBQWUsQ0FDekUsSUFBSSxDQUFDLGNBQWMsQ0FBQyxHQUFHLENBQUMsb0JBQW9CLENBQVcsSUFBSSxJQUFJLENBQUMsMkJBQTJCLENBQUMsQ0FBQztRQUN4RiwyQkFBc0IsR0FBNEIsSUFBSSxlQUFlLENBQVMsYUFBYSxDQUFDLENBQUM7UUFDN0YsMEJBQXFCLEdBQTBCLElBQUksWUFBWSxDQUFVLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUM7UUFDeEcsV0FBTSxHQUFtQixFQUFFLENBQUM7UUFDN0IsK0JBQTBCLEdBQXNDLElBQUksZUFBZSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBVXBHLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsR0FBRyxFQUFFO1lBQy9DLElBQUksQ0FBQyx5QkFBeUIsRUFBRSxDQUFDO1FBQ25DLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQVhELElBQUksR0FBRztRQUNMLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUM7SUFDM0IsQ0FBQztJQVlELHlCQUF5QjtRQUN2QixJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUM7WUFDN0IsSUFBSSxDQUFDLFFBQVE7WUFDYixJQUFJLENBQUMsc0JBQXNCO1lBQzNCLElBQUksQ0FBQyxxQkFBcUI7WUFDMUIsUUFBUSxDQUFDLElBQUksQ0FBQztZQUNkLElBQUksQ0FBQyxHQUFHLENBQUMscUJBQXFCLENBQUMsU0FBUztTQUN6QyxDQUFDO2FBQ0MsSUFBSSxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUMsQ0FBQzthQUN2QixTQUFTLENBQUMsQ0FBQyxLQUE2RCxFQUFFLEVBQUU7WUFDM0UsSUFBSSxDQUFDLHFCQUFxQixDQUFDLEtBQUssRUFBRSxDQUFDO1lBQ25DLE1BQU0sT0FBTyxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUN6QixNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQztZQUMvQixNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLHFCQUFxQixDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUM7WUFDbEUsTUFBTSxZQUFZLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQzlCLE1BQU0sb0JBQW9CLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ3RDLElBQUksQ0FBQyxjQUFjLENBQUMsR0FBRyxDQUFDLG9CQUFvQixFQUFFLG9CQUFvQixJQUFJLElBQUksQ0FBQywyQkFBMkIsQ0FBQyxDQUFDO1lBRXhHLElBQUksQ0FBQyxPQUFPLEVBQUU7Z0JBQ1osT0FBTzthQUNSO1lBR0QsSUFBSSxLQUFlLENBQUM7WUFDcEIsSUFBSSxZQUFZLEtBQUssYUFBYSxFQUFFO2dCQUNsQyxJQUFJLENBQUMsVUFBVSxJQUFJLENBQUMsVUFBVSxDQUFDLFFBQVEsRUFBRTtvQkFDdkMsT0FBTztpQkFDUjtnQkFFRCxLQUFLLEdBQUcsTUFBTSxDQUFDLFNBQVMsQ0FBQyxVQUFVLENBQUMsUUFBUSxFQUFFLFVBQVUsQ0FBQyxVQUFVLEVBQUUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsQ0FBQztnQkFDMUYsSUFBSSxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO2FBQ2pDO2lCQUFNO2dCQUNMLEtBQUssR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLGNBQWMsQ0FBQyxTQUFTLEVBQUUsQ0FBQztnQkFBQSxDQUFDO2dCQUM3QyxJQUFJLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7YUFDaEM7WUFFRCxNQUFNLFdBQVcsR0FBRyxNQUFNLENBQUMsU0FBUyxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsR0FBRyxDQUFDLFVBQVUsRUFBRSxXQUFXLENBQUMsQ0FBQztZQUM5RSxNQUFNLGtCQUFrQixHQUFHLFlBQVksQ0FBQyxXQUErQixFQUFFLENBQUMsQ0FBQyxDQUFDO1lBQzVFLElBQUksQ0FBQywwQkFBMEIsQ0FBQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsQ0FBQztZQUV6RCxNQUFNLGVBQWUsR0FBRyxNQUFNO2lCQUMzQixNQUFNLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FDZCxLQUFLLENBQUMsRUFBRSxZQUFZLGFBQWE7Z0JBQ2hDLEtBQUssQ0FBQyxVQUFrQyxDQUFDLE9BQU8sQ0FBQyxTQUFTO2dCQUMzRCxLQUFLLENBQUMsT0FBTztnQkFDYixLQUFLLENBQUMsb0JBQW9CLENBQUMsQ0FBQztZQUVoQyxlQUFlLENBQUMsR0FBRyxDQUFDLGNBQWMsQ0FBQyxFQUFFO2dCQUNuQyxNQUFNLFdBQVcsR0FBRyxjQUFjLENBQUMsRUFBRSxDQUFDLFNBQVMsRUFBOEIsQ0FBQztnQkFFOUUsK0JBQStCO2dCQUMvQixNQUFNLHNCQUFzQixHQUFHLFdBQVcsQ0FBQyx1QkFBdUIsQ0FBQyxLQUFLLENBQUMsQ0FBQztnQkFDMUUsSUFBSSxzQkFBc0IsSUFBSSxzQkFBc0IsQ0FBQyxNQUFNLEVBQUU7b0JBQzNELHNCQUFzQixDQUFDLEdBQUcsQ0FBQyxxQkFBcUIsQ0FBQyxFQUFFO3dCQUNqRCxNQUFNLHFCQUFxQixHQUFHLGFBQWEsQ0FBQyxxQkFBcUIsRUFBRSxJQUFJLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxDQUFDO3dCQUN4RixJQUFJLEtBQUssR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLHFCQUFxQixFQUFFLGNBQWMsQ0FBQyxDQUFDO3dCQUN0RSx1RkFBdUY7d0JBQ3ZGLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxjQUFjLEVBQUUsS0FBSyxFQUFFLHFCQUFxQixFQUFFLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQztvQkFDakYsQ0FBQyxDQUFDLENBQUM7aUJBQ0o7cUJBQU07b0JBQ0wsMENBQTBDO29CQUMxQyxNQUFNLGdCQUFnQixHQUFHLFdBQVcsQ0FBQyw2QkFBNkIsQ0FBQyxLQUFLLENBQUMsQ0FBQztvQkFDMUUsSUFBSSxnQkFBZ0IsRUFBRTt3QkFDcEIsTUFBTSxhQUFhLEdBQUcsZ0JBQWdCLENBQUMsV0FBVyxFQUFFLENBQUM7d0JBQ3JELE1BQU0sY0FBYyxHQUFHLGFBQWEsQ0FBQyxnQkFBZ0IsRUFBRSxJQUFJLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxDQUFDO3dCQUM1RSxNQUFNLG9CQUFvQixHQUFHLGFBQWEsQ0FBQyxlQUFlLENBQUMsS0FBSyxDQUFDLENBQUM7d0JBQ2xFLE1BQU0sV0FBVyxHQUFHLElBQUksWUFBWSxDQUFDLENBQUMsS0FBSyxFQUFFLG9CQUFvQixDQUFDLENBQUMsQ0FBQzt3QkFDcEUsTUFBTSxVQUFVLEdBQUcsdUJBQXVCLENBQUMsV0FBVyxFQUFFLFdBQVcsQ0FBQyxDQUFDO3dCQUNyRSxJQUFJLFVBQVUsSUFBSSxvQkFBb0IsRUFBRTs0QkFDdEMsSUFBSSxLQUFLLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxjQUFjLEVBQUUsY0FBYyxDQUFDLENBQUM7NEJBQy9ELHVGQUF1Rjs0QkFDdkYsSUFBSSxDQUFDLGlCQUFpQixDQUFDLGNBQWMsRUFBRSxLQUFLLEVBQUUsY0FBYyxFQUFFLEtBQUssRUFBRSxVQUFVLENBQUMsQ0FBQzt5QkFDbEY7cUJBQ0Y7aUJBQ0Y7WUFDSCxDQUFDLENBQUMsQ0FBQztRQUVMLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDUixDQUFDO0lBRUM7OztLQUdDO0lBQ1EsaUJBQWlCLENBQUMsS0FBWSxFQUFFLDJCQUEyQixFQUFFLE9BQWdCLEVBQUUsS0FBSyxFQUFFLFFBQVE7UUFDckcsTUFBTSxTQUFTLEdBQUcsSUFBSSxFQUFFLENBQUM7UUFDekIsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsT0FBTyxFQUFFLENBQUMsYUFBYSxFQUFFLENBQUM7UUFDekQsTUFBTSxVQUFVLEdBQUcsT0FBTyxDQUFDLEVBQUUsQ0FBQyxXQUFXLEVBQWMsQ0FBQztRQUN4RCxNQUFNLFFBQVEsR0FBRyxJQUFJLE9BQU8sRUFBRSxDQUFDLG1CQUFtQixDQUFDLFVBQVUsRUFBRTtZQUM3RCxpQkFBaUIsRUFBRSxVQUFVO1lBQzdCLGNBQWMsRUFBRSxVQUFVO1NBQzNCLENBQVEsQ0FBQztRQUNWLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxNQUFNLENBQUM7WUFDaEMsSUFBSSxFQUFFLE9BQU87WUFDYixRQUFRO1lBQ1IsVUFBVSxFQUFFLFVBQVUsQ0FBQyxPQUFPLEVBQUU7WUFDaEMsVUFBVSxFQUFFLEVBQUMsR0FBRyxPQUFPLENBQUMsVUFBVSxFQUFDLEdBQUc7b0JBQ3BDLEVBQUUsRUFBRSxTQUFTO29CQUNiLE9BQU8sRUFBRSxLQUFLO29CQUNkLFFBQVE7b0JBQ1IsMkJBQTJCO29CQUMzQixVQUFVLEVBQUUsS0FBSyxDQUFDLEVBQUU7b0JBQ3BCLGFBQWEsRUFBRSxLQUFLLENBQUMsS0FBSztpQkFDM0IsRUFBQztZQUNGLElBQUksRUFBRTtnQkFDSixFQUFFLEVBQUUsU0FBUzthQUNkO1NBQ0YsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVILGFBQWEsQ0FBQyxPQUFnQixFQUFFLEtBQVk7UUFDMUMsSUFBSSxLQUFLLENBQUM7UUFDVixJQUFJLEtBQUssQ0FBQyxPQUFPLEVBQUUsTUFBTSxFQUFFLE9BQU8sRUFBRTtZQUNsQyxNQUFNLGlCQUFpQixHQUFHLEtBQUssQ0FBQyxPQUFPLENBQUMsTUFBTTtpQkFDM0MsT0FBcUMsQ0FBQztZQUN6QyxJQUFJLGlCQUFpQixDQUFDLFVBQVUsRUFBRTtnQkFDaEMsS0FBSyxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsT0FBTyxFQUFFLGlCQUFpQixDQUFDLFVBQVUsQ0FBQyxDQUFDO2FBQ25FO1NBQ0Y7UUFDRCxPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7SUFFRCxhQUFhLENBQUMsT0FBZ0IsRUFBRSxVQUFVO1FBQ3hDLElBQUksS0FBSyxHQUFHLFVBQVUsQ0FBQztRQUN2QixNQUFNLFVBQVUsR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsbUJBQW1CLENBQUMsQ0FBQyxDQUFDO1FBRXhFLFVBQVUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUU7WUFDckIsS0FBSyxHQUFHLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLE9BQU8sQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUN4RCxDQUFDLENBQUMsQ0FBQztRQUVILDBDQUEwQztRQUMxQyxJQUFJLFVBQVUsQ0FBQyxNQUFNLEtBQUssQ0FBQyxJQUFJLEtBQUssS0FBSyxVQUFVLEVBQUU7WUFDbkQsS0FBSyxHQUFHLE9BQU8sQ0FBQyxVQUFVLENBQUMsVUFBVSxDQUFDLElBQUksVUFBVSxDQUFDO1NBQ3REO1FBQ0QsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDOztrRkFqS1UsaUJBQWlCO3VFQUFqQixpQkFBaUIsV0FBakIsaUJBQWlCLG1CQUZoQixNQUFNO3VGQUVQLGlCQUFpQjtjQUg3QixVQUFVO2VBQUM7Z0JBQ1YsVUFBVSxFQUFFLE1BQU07YUFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7XG4gIEZlYXR1cmVTdG9yZSwgRmVhdHVyZSwgSWdvTWFwLFxuICBmZWF0dXJlRnJvbU9sLCBtZWFzdXJlT2xHZW9tZXRyeUxlbmd0aCwgTGF5ZXIsIFF1ZXJ5YWJsZURhdGFTb3VyY2VPcHRpb25zLCBGRUFUVVJFLCByb3VuZENvb3JkVG8sIFF1ZXJ5YWJsZURhdGFTb3VyY2UsIE1hcEdlb2xvY2F0aW9uU3RhdGVcbn0gZnJvbSAnQGlnbzIvZ2VvJztcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgY29tYmluZUxhdGVzdCwgaW50ZXJ2YWwsIFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgZGVib3VuY2VUaW1lIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgTWFwU3RhdGUgfSBmcm9tICcuLi9tYXAvbWFwLnN0YXRlJztcblxuaW1wb3J0IEdlb0pTT04gZnJvbSAnb2wvZm9ybWF0L0dlb0pTT04nO1xuaW1wb3J0IHsgdXVpZCB9IGZyb20gJ0BpZ28yL3V0aWxzJztcblxuaW1wb3J0IG9sTGF5ZXJWZWN0b3IgZnJvbSAnb2wvbGF5ZXIvVmVjdG9yJztcbmltcG9ydCBvbFZlY3RvclNvdXJjZSBmcm9tICdvbC9zb3VyY2UvVmVjdG9yJztcbmltcG9ydCBHZW9tZXRyeSBmcm9tICdvbC9nZW9tL0dlb21ldHJ5JztcbmltcG9ydCBvbExpbmVTdHJpbmcgZnJvbSAnb2wvZ2VvbS9MaW5lU3RyaW5nJztcbmltcG9ydCAqIGFzIG9sUHJvaiBmcm9tICdvbC9wcm9qJztcbmltcG9ydCB7IFN0b3JhZ2VTZXJ2aWNlIH0gZnJvbSAnQGlnbzIvY29yZSc7XG4vKipcbiAqIFNlcnZpY2UgdGhhdCBob2xkcyB0aGUgc3RhdGUgb2YgdGhlIGRpcmVjdGlvbiBtb2R1bGVcbiAqL1xuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCdcbn0pXG5leHBvcnQgY2xhc3MgTWFwUHJveGltaXR5U3RhdGUge1xuXG4gIHByaXZhdGUgZGVmYXVsdFByb3hpbWl0eVJhZGl1c1ZhbHVlOiBudW1iZXIgPSAzMDtcblxuICBwdWJsaWMgZW5hYmxlZCQ6IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPiA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4oZmFsc2UpO1xuICBwdWJsaWMgcHJveGltaXR5UmFkaXVzVmFsdWUkOiBCZWhhdmlvclN1YmplY3Q8bnVtYmVyPiA9IG5ldyBCZWhhdmlvclN1YmplY3Q8bnVtYmVyPihcbiAgICB0aGlzLnN0b3JhZ2VTZXJ2aWNlLmdldCgnbWFwUHJveGltaXR5UmFkaXVzJykgYXMgbnVtYmVyIHx8IHRoaXMuZGVmYXVsdFByb3hpbWl0eVJhZGl1c1ZhbHVlKTtcbiAgcHVibGljIHByb3hpbWl0eWxvY2F0aW9uVHlwZSQ6IEJlaGF2aW9yU3ViamVjdDxzdHJpbmc+ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxzdHJpbmc+KCdnZW9sb2NhdGlvbicpO1xuICBwdWJsaWMgcHJveGltaXR5RmVhdHVyZVN0b3JlOiBGZWF0dXJlU3RvcmU8RmVhdHVyZT4gPSBuZXcgRmVhdHVyZVN0b3JlPEZlYXR1cmU+KFtdLCB7IG1hcDogdGhpcy5tYXBTdGF0ZS5tYXAgfSk7XG4gIHByaXZhdGUgc3VicyQkOiBTdWJzY3JpcHRpb25bXSA9IFtdO1xuICBwdWJsaWMgY3VycmVudFBvc2l0aW9uQ29vcmRpbmF0ZSQ6IEJlaGF2aW9yU3ViamVjdDxbbnVtYmVyLCBudW1iZXJdPiA9IG5ldyBCZWhhdmlvclN1YmplY3QodW5kZWZpbmVkKTtcblxuICBnZXQgbWFwKCk6IElnb01hcCB7XG4gICAgcmV0dXJuIHRoaXMubWFwU3RhdGUubWFwO1xuICB9XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBtYXBTdGF0ZTogTWFwU3RhdGUsXG4gICAgcHJpdmF0ZSBzdG9yYWdlU2VydmljZTogU3RvcmFnZVNlcnZpY2UpIHtcblxuICAgIHRoaXMubWFwU3RhdGUubWFwLm9sLm9uY2UoJ3JlbmRlcmNvbXBsZXRlJywgKCkgPT4ge1xuICAgICAgdGhpcy5zdWJzY3JpYmVQcm94aW1pdHlNb25pdG9yKCk7XG4gICAgfSk7XG4gIH1cblxuXG4gIHN1YnNjcmliZVByb3hpbWl0eU1vbml0b3IoKSB7XG4gICAgdGhpcy5zdWJzJCQucHVzaChjb21iaW5lTGF0ZXN0KFtcbiAgICAgIHRoaXMuZW5hYmxlZCQsXG4gICAgICB0aGlzLnByb3hpbWl0eWxvY2F0aW9uVHlwZSQsXG4gICAgICB0aGlzLnByb3hpbWl0eVJhZGl1c1ZhbHVlJCxcbiAgICAgIGludGVydmFsKDUwMDApLFxuICAgICAgdGhpcy5tYXAuZ2VvbG9jYXRpb25Db250cm9sbGVyLnBvc2l0aW9uJFxuICAgIF0pXG4gICAgICAucGlwZShkZWJvdW5jZVRpbWUoNzUwKSlcbiAgICAgIC5zdWJzY3JpYmUoKGJ1bmNoOiBbYm9vbGVhbiwgc3RyaW5nLCBudW1iZXIsIG51bWJlciwgTWFwR2VvbG9jYXRpb25TdGF0ZV0pID0+IHtcbiAgICAgICAgdGhpcy5wcm94aW1pdHlGZWF0dXJlU3RvcmUuY2xlYXIoKTtcbiAgICAgICAgY29uc3QgZW5hYmxlZCA9IGJ1bmNoWzBdO1xuICAgICAgICBjb25zdCBsYXllcnMgPSB0aGlzLm1hcC5sYXllcnM7XG4gICAgICAgIGNvbnN0IGN1cnJlbnRQb3MgPSB0aGlzLm1hcC5nZW9sb2NhdGlvbkNvbnRyb2xsZXIucG9zaXRpb24kLnZhbHVlO1xuICAgICAgICBjb25zdCBsb2NhdGlvblR5cGUgPSBidW5jaFsxXTtcbiAgICAgICAgY29uc3QgcHJveGltaXR5UmFkaXVzVmFsdWUgPSBidW5jaFsyXTtcbiAgICAgICAgdGhpcy5zdG9yYWdlU2VydmljZS5zZXQoJ21hcFByb3hpbWl0eVJhZGl1cycsIHByb3hpbWl0eVJhZGl1c1ZhbHVlIHx8IHRoaXMuZGVmYXVsdFByb3hpbWl0eVJhZGl1c1ZhbHVlKTtcblxuICAgICAgICBpZiAoIWVuYWJsZWQpIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuXG4gICAgICAgIGxldCBjb29yZDogbnVtYmVyW107XG4gICAgICAgIGlmIChsb2NhdGlvblR5cGUgPT09ICdnZW9sb2NhdGlvbicpIHtcbiAgICAgICAgICBpZiAoIWN1cnJlbnRQb3MgfHwgIWN1cnJlbnRQb3MucG9zaXRpb24pIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBjb29yZCA9IG9sUHJvai50cmFuc2Zvcm0oY3VycmVudFBvcy5wb3NpdGlvbiwgY3VycmVudFBvcy5wcm9qZWN0aW9uLCB0aGlzLm1hcC5wcm9qZWN0aW9uKTtcbiAgICAgICAgICB0aGlzLm1hcC5tYXBDZW50ZXIkLm5leHQoZmFsc2UpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGNvb3JkID0gdGhpcy5tYXAudmlld0NvbnRyb2xsZXIuZ2V0Q2VudGVyKCk7O1xuICAgICAgICAgIHRoaXMubWFwLm1hcENlbnRlciQubmV4dCh0cnVlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGNvb3JkTG9uTGF0ID0gb2xQcm9qLnRyYW5zZm9ybShjb29yZCwgdGhpcy5tYXAucHJvamVjdGlvbiwgJ0VQU0c6NDI2OScpO1xuICAgICAgICBjb25zdCByb3VuZGVkQ29vcmRMb25MYXQgPSByb3VuZENvb3JkVG8oY29vcmRMb25MYXQgYXMgW251bWJlciwgbnVtYmVyXSwgNik7XG4gICAgICAgIHRoaXMuY3VycmVudFBvc2l0aW9uQ29vcmRpbmF0ZSQubmV4dChyb3VuZGVkQ29vcmRMb25MYXQpO1xuXG4gICAgICAgIGNvbnN0IGxheWVyc1RvTW9uaXRvciA9IGxheWVyc1xuICAgICAgICAgIC5maWx0ZXIobGF5ZXIgPT5cbiAgICAgICAgICAgIGxheWVyLm9sIGluc3RhbmNlb2Ygb2xMYXllclZlY3RvciAmJlxuICAgICAgICAgICAgKGxheWVyLmRhdGFTb3VyY2UgYXMgUXVlcnlhYmxlRGF0YVNvdXJjZSkub3B0aW9ucy5xdWVyeWFibGUgJiZcbiAgICAgICAgICAgIGxheWVyLnZpc2libGUgJiZcbiAgICAgICAgICAgIGxheWVyLmlzSW5SZXNvbHV0aW9uc1JhbmdlKTtcblxuICAgICAgICBsYXllcnNUb01vbml0b3IubWFwKGxheWVyVG9Nb25pdG9yID0+IHtcbiAgICAgICAgICBjb25zdCBsYXllclNvdXJjZSA9IGxheWVyVG9Nb25pdG9yLm9sLmdldFNvdXJjZSgpIGFzIG9sVmVjdG9yU291cmNlPEdlb21ldHJ5PjtcblxuICAgICAgICAgIC8vIE1vc3RseSBmb3IgcG9seWdvbiBmZWF0dXJlcy5cbiAgICAgICAgICBjb25zdCBvbEZlYXR1cmVzQXRDb29yZGluYXRlID0gbGF5ZXJTb3VyY2UuZ2V0RmVhdHVyZXNBdENvb3JkaW5hdGUoY29vcmQpO1xuICAgICAgICAgIGlmIChvbEZlYXR1cmVzQXRDb29yZGluYXRlICYmIG9sRmVhdHVyZXNBdENvb3JkaW5hdGUubGVuZ3RoKSB7XG4gICAgICAgICAgICBvbEZlYXR1cmVzQXRDb29yZGluYXRlLm1hcChvbEZlYXR1cmVBdENvb3JkaW5hdGUgPT4ge1xuICAgICAgICAgICAgICBjb25zdCBmZWF0dXJlQXRUaGlzUG9zaXRpb24gPSBmZWF0dXJlRnJvbU9sKG9sRmVhdHVyZUF0Q29vcmRpbmF0ZSwgdGhpcy5tYXAucHJvamVjdGlvbik7XG4gICAgICAgICAgICAgIGxldCB0aXRsZSA9IHRoaXMuZ2V0UXVlcnlUaXRsZShmZWF0dXJlQXRUaGlzUG9zaXRpb24sIGxheWVyVG9Nb25pdG9yKTtcbiAgICAgICAgICAgICAgLy8gdG9kbyBoYW5kbGUgaW1wb3J0ZWQgbGF5ZXJzIHdpdGhvdXQgcXVlcnl0aXRsZT8gcHJvbXB0IHRpdGxlIG9yIGRldGVjdCBmaXJzdCBjb2x1bW4/XG4gICAgICAgICAgICAgIHRoaXMuYWRkRmVhdHVyZVRvU3RvcmUobGF5ZXJUb01vbml0b3IsIGNvb3JkLCBmZWF0dXJlQXRUaGlzUG9zaXRpb24sIHRpdGxlLCAwKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAvLyBjb21wdXRlIHByb3hpbWl0eSBmb3IgcmVtYWluaW5nIHNvdXJjZXNcbiAgICAgICAgICAgIGNvbnN0IGNsb3Nlc3RPbEZlYXR1cmUgPSBsYXllclNvdXJjZS5nZXRDbG9zZXN0RmVhdHVyZVRvQ29vcmRpbmF0ZShjb29yZCk7XG4gICAgICAgICAgICBpZiAoY2xvc2VzdE9sRmVhdHVyZSkge1xuICAgICAgICAgICAgICBjb25zdCBjbG9zZXN0T2xHZW9tID0gY2xvc2VzdE9sRmVhdHVyZS5nZXRHZW9tZXRyeSgpO1xuICAgICAgICAgICAgICBjb25zdCBjbG9zZXN0RmVhdHVyZSA9IGZlYXR1cmVGcm9tT2woY2xvc2VzdE9sRmVhdHVyZSwgdGhpcy5tYXAucHJvamVjdGlvbik7XG4gICAgICAgICAgICAgIGNvbnN0IGdlb21ldHJ5Q2xvc2VzdFBvaW50ID0gY2xvc2VzdE9sR2VvbS5nZXRDbG9zZXN0UG9pbnQoY29vcmQpO1xuICAgICAgICAgICAgICBjb25zdCBsaW5lYmV0d2VlbiA9IG5ldyBvbExpbmVTdHJpbmcoW2Nvb3JkLCBnZW9tZXRyeUNsb3Nlc3RQb2ludF0pO1xuICAgICAgICAgICAgICBjb25zdCBsaW5lTGVuZ3RoID0gbWVhc3VyZU9sR2VvbWV0cnlMZW5ndGgobGluZWJldHdlZW4sICdFUFNHOjM4NTcnKTtcbiAgICAgICAgICAgICAgaWYgKGxpbmVMZW5ndGggPD0gcHJveGltaXR5UmFkaXVzVmFsdWUpIHtcbiAgICAgICAgICAgICAgICBsZXQgdGl0bGUgPSB0aGlzLmdldFF1ZXJ5VGl0bGUoY2xvc2VzdEZlYXR1cmUsIGxheWVyVG9Nb25pdG9yKTtcbiAgICAgICAgICAgICAgICAvLyB0b2RvIGhhbmRsZSBpbXBvcnRlZCBsYXllcnMgd2l0aG91dCBxdWVyeXRpdGxlPyBwcm9tcHQgdGl0bGUgb3IgZGV0ZWN0IGZpcnN0IGNvbHVtbj9cbiAgICAgICAgICAgICAgICB0aGlzLmFkZEZlYXR1cmVUb1N0b3JlKGxheWVyVG9Nb25pdG9yLCBjb29yZCwgY2xvc2VzdEZlYXR1cmUsIHRpdGxlLCBsaW5lTGVuZ3RoKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG5cbiAgICAgIH0pKTtcbiAgfVxuXG4gICAgLyoqXG4gICAqIEFkZCBhIGZlYXR1cmUgd2l0aCBwcm94aW1pdHkgcHJvcGVydGllcyB0byB0aGUgc3RvcmVcbiAgICogQGludGVybmFsXG4gICAqL1xuICAgICBwcml2YXRlIGFkZEZlYXR1cmVUb1N0b3JlKGxheWVyOiBMYXllciwgY29vcmRGcm9tQ2FsY3VsYXRlZERpc3RhbmNlLCBmZWF0dXJlOiBGZWF0dXJlLCB0aXRsZSwgZGlzdGFuY2UpIHtcbiAgICAgIGNvbnN0IGZlYXR1cmVJZCA9IHV1aWQoKTtcbiAgICAgIGNvbnN0IHByb2plY3Rpb24gPSB0aGlzLm1hcC5vbC5nZXRWaWV3KCkuZ2V0UHJvamVjdGlvbigpO1xuICAgICAgY29uc3Qgb2xHZW9tZXRyeSA9IGZlYXR1cmUub2wuZ2V0R2VvbWV0cnkoKSBhcyBHZW9tZXRyeTtcbiAgICAgIGNvbnN0IGdlb21ldHJ5ID0gbmV3IEdlb0pTT04oKS53cml0ZUdlb21ldHJ5T2JqZWN0KG9sR2VvbWV0cnksIHtcbiAgICAgICAgZmVhdHVyZVByb2plY3Rpb246IHByb2plY3Rpb24sXG4gICAgICAgIGRhdGFQcm9qZWN0aW9uOiBwcm9qZWN0aW9uXG4gICAgICB9KSBhcyBhbnk7XG4gICAgICB0aGlzLnByb3hpbWl0eUZlYXR1cmVTdG9yZS51cGRhdGUoe1xuICAgICAgICB0eXBlOiBGRUFUVVJFLFxuICAgICAgICBnZW9tZXRyeSxcbiAgICAgICAgcHJvamVjdGlvbjogcHJvamVjdGlvbi5nZXRDb2RlKCksXG4gICAgICAgIHByb3BlcnRpZXM6IHsuLi5mZWF0dXJlLnByb3BlcnRpZXMsLi4ue1xuICAgICAgICAgIGlkOiBmZWF0dXJlSWQsXG4gICAgICAgICAgZWxlbWVudDogdGl0bGUsXG4gICAgICAgICAgZGlzdGFuY2UsXG4gICAgICAgICAgY29vcmRGcm9tQ2FsY3VsYXRlZERpc3RhbmNlLFxuICAgICAgICAgIGxheWVyU3JjSWQ6IGxheWVyLmlkLFxuICAgICAgICAgIGxheWVyU3JjVGl0bGU6IGxheWVyLnRpdGxlXG4gICAgICAgIH19LFxuICAgICAgICBtZXRhOiB7XG4gICAgICAgICAgaWQ6IGZlYXR1cmVJZFxuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG5cbiAgZ2V0UXVlcnlUaXRsZShmZWF0dXJlOiBGZWF0dXJlLCBsYXllcjogTGF5ZXIpOiBzdHJpbmcge1xuICAgIGxldCB0aXRsZTtcbiAgICBpZiAobGF5ZXIub3B0aW9ucz8uc291cmNlPy5vcHRpb25zKSB7XG4gICAgICBjb25zdCBkYXRhU291cmNlT3B0aW9ucyA9IGxheWVyLm9wdGlvbnMuc291cmNlXG4gICAgICAgIC5vcHRpb25zIGFzIFF1ZXJ5YWJsZURhdGFTb3VyY2VPcHRpb25zO1xuICAgICAgaWYgKGRhdGFTb3VyY2VPcHRpb25zLnF1ZXJ5VGl0bGUpIHtcbiAgICAgICAgdGl0bGUgPSB0aGlzLmdldExhYmVsTWF0Y2goZmVhdHVyZSwgZGF0YVNvdXJjZU9wdGlvbnMucXVlcnlUaXRsZSk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiB0aXRsZTtcbiAgfVxuXG4gIGdldExhYmVsTWF0Y2goZmVhdHVyZTogRmVhdHVyZSwgbGFiZWxNYXRjaCk6IHN0cmluZyB7XG4gICAgbGV0IGxhYmVsID0gbGFiZWxNYXRjaDtcbiAgICBjb25zdCBsYWJlbFRvR2V0ID0gQXJyYXkuZnJvbShsYWJlbE1hdGNoLm1hdGNoQWxsKC9cXCRcXHsoW15cXHtcXH1dKylcXH0vZykpO1xuXG4gICAgbGFiZWxUb0dldC5mb3JFYWNoKHYgPT4ge1xuICAgICAgbGFiZWwgPSBsYWJlbC5yZXBsYWNlKHZbMF0sIGZlYXR1cmUucHJvcGVydGllc1t2WzFdXSk7XG4gICAgfSk7XG5cbiAgICAvLyBOb3RoaW5nIGRvbmU/IGNoZWNrIGZlYXR1cmUncyBhdHRyaWJ1dGVcbiAgICBpZiAobGFiZWxUb0dldC5sZW5ndGggPT09IDAgJiYgbGFiZWwgPT09IGxhYmVsTWF0Y2gpIHtcbiAgICAgIGxhYmVsID0gZmVhdHVyZS5wcm9wZXJ0aWVzW2xhYmVsTWF0Y2hdIHx8IGxhYmVsTWF0Y2g7XG4gICAgfVxuICAgIHJldHVybiBsYWJlbDtcbiAgfVxufVxuIl19
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export * from './map-tool.component';
|
|
2
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
1
|
+
export * from './map-tool.component';
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9pbnRlZ3JhdGlvbi9zcmMvbGliL21hcC9tYXAtdG9vbC9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLHNCQUFzQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9tYXAtdG9vbC5jb21wb25lbnQnO1xuIl19
|