@igo2/integration 1.14.1 → 1.14.3

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.
Files changed (213) hide show
  1. package/esm2020/igo2-integration.mjs +4 -4
  2. package/esm2020/lib/about/about-tool/about-tool.component.mjs +184 -184
  3. package/esm2020/lib/about/about-tool/index.mjs +1 -1
  4. package/esm2020/lib/about/about.module.mjs +54 -54
  5. package/esm2020/lib/about/index.mjs +1 -1
  6. package/esm2020/lib/analytics/analytics-listener.service.mjs +71 -71
  7. package/esm2020/lib/analytics/analytics.module.mjs +15 -15
  8. package/esm2020/lib/analytics/index.mjs +1 -1
  9. package/esm2020/lib/catalog/catalog-browser-tool/catalog-browser-tool.component.mjs +112 -112
  10. package/esm2020/lib/catalog/catalog-browser-tool/catalog-browser-tool.module.mjs +28 -28
  11. package/esm2020/lib/catalog/catalog-library-tool/catalog-library-tool.component.mjs +88 -88
  12. package/esm2020/lib/catalog/catalog-library-tool/catalog-library-tool.module.mjs +28 -28
  13. package/esm2020/lib/catalog/catalog.module.mjs +23 -23
  14. package/esm2020/lib/catalog/catalog.state.mjs +53 -53
  15. package/esm2020/lib/catalog/index.mjs +5 -5
  16. package/esm2020/lib/context/context-editor-tool/context-editor-tool.component.mjs +33 -33
  17. package/esm2020/lib/context/context-manager-tool/context-manager-tool.component.mjs +43 -43
  18. package/esm2020/lib/context/context-permission-manager-tool/context-permission-manager-tool.component.mjs +24 -24
  19. package/esm2020/lib/context/context-share-tool/context-share-tool.component.mjs +33 -33
  20. package/esm2020/lib/context/context.module.mjs +38 -38
  21. package/esm2020/lib/context/context.state.mjs +87 -87
  22. package/esm2020/lib/context/index.mjs +5 -5
  23. package/esm2020/lib/directions/directions-tool/directions-tool.component.mjs +86 -86
  24. package/esm2020/lib/directions/directions-tool/index.mjs +1 -1
  25. package/esm2020/lib/directions/directions.module.mjs +25 -25
  26. package/esm2020/lib/directions/directions.state.mjs +63 -63
  27. package/esm2020/lib/directions/index.mjs +2 -2
  28. package/esm2020/lib/draw/draw.module.mjs +20 -20
  29. package/esm2020/lib/draw/draw.state.mjs +40 -39
  30. package/esm2020/lib/draw/drawing-tool/drawing-tool.component.mjs +71 -71
  31. package/esm2020/lib/draw/index.mjs +2 -2
  32. package/esm2020/lib/filter/active-ogc-filter-tool/active-ogc-filter-tool.animation.mjs +9 -9
  33. package/esm2020/lib/filter/active-ogc-filter-tool/active-ogc-filter-tool.component.mjs +43 -43
  34. package/esm2020/lib/filter/active-ogc-filter-tool/index.mjs +1 -1
  35. package/esm2020/lib/filter/active-time-filter-tool/active-time-filter-tool.animation.mjs +9 -9
  36. package/esm2020/lib/filter/active-time-filter-tool/active-time-filter-tool.component.mjs +43 -43
  37. package/esm2020/lib/filter/active-time-filter-tool/index.mjs +1 -1
  38. package/esm2020/lib/filter/filter.module.mjs +50 -50
  39. package/esm2020/lib/filter/index.mjs +5 -5
  40. package/esm2020/lib/filter/ogc-filter-tool/index.mjs +1 -1
  41. package/esm2020/lib/filter/ogc-filter-tool/ogc-filter-tool.component.mjs +24 -24
  42. package/esm2020/lib/filter/spatial-filter-tool/index.mjs +1 -1
  43. package/esm2020/lib/filter/spatial-filter-tool/spatial-filter-tool.component.mjs +534 -534
  44. package/esm2020/lib/filter/time-filter-tool/index.mjs +1 -1
  45. package/esm2020/lib/filter/time-filter-tool/time-filter-tool.component.mjs +24 -24
  46. package/esm2020/lib/import-export/import-export-tool/import-export-tool.component.mjs +136 -136
  47. package/esm2020/lib/import-export/import-export-tool/index.mjs +1 -1
  48. package/esm2020/lib/import-export/import-export.module.mjs +47 -47
  49. package/esm2020/lib/import-export/import-export.state.mjs +40 -40
  50. package/esm2020/lib/import-export/index.mjs +2 -2
  51. package/esm2020/lib/integration.module.mjs +71 -71
  52. package/esm2020/lib/map/advanced-map-tool/advanced-coordinates/advanced-coordinates.component.mjs +472 -472
  53. package/esm2020/lib/map/advanced-map-tool/advanced-map-tool.component.mjs +88 -88
  54. package/esm2020/lib/map/advanced-map-tool/advanced-swipe/advanced-swipe.component.mjs +217 -217
  55. package/esm2020/lib/map/advanced-map-tool/index.mjs +1 -1
  56. package/esm2020/lib/map/index.mjs +8 -8
  57. package/esm2020/lib/map/layer-list-tool.state.mjs +41 -41
  58. package/esm2020/lib/map/map-details-tool/index.mjs +1 -1
  59. package/esm2020/lib/map/map-details-tool/map-details-tool.component.mjs +255 -255
  60. package/esm2020/lib/map/map-legend/index.mjs +1 -1
  61. package/esm2020/lib/map/map-legend/map-legend-tool.component.mjs +274 -274
  62. package/esm2020/lib/map/map-proximity-tool/index.mjs +1 -1
  63. package/esm2020/lib/map/map-proximity-tool/map-proximity-tool.component.mjs +205 -205
  64. package/esm2020/lib/map/map-proximity.state.mjs +162 -162
  65. package/esm2020/lib/map/map-tool/index.mjs +1 -1
  66. package/esm2020/lib/map/map-tool/map-tool.component.mjs +129 -129
  67. package/esm2020/lib/map/map-tools/index.mjs +1 -1
  68. package/esm2020/lib/map/map-tools/map-tools.component.mjs +477 -477
  69. package/esm2020/lib/map/map.module.mjs +140 -140
  70. package/esm2020/lib/map/map.state.mjs +46 -46
  71. package/esm2020/lib/measure/index.mjs +3 -3
  72. package/esm2020/lib/measure/measure.module.mjs +19 -19
  73. package/esm2020/lib/measure/measure.state.mjs +34 -34
  74. package/esm2020/lib/measure/measurer-tool/measurer-tool.component.mjs +44 -44
  75. package/esm2020/lib/measure/measurer-tool/measurer-tool.module.mjs +24 -24
  76. package/esm2020/lib/print/index.mjs +1 -1
  77. package/esm2020/lib/print/print-tool/index.mjs +1 -1
  78. package/esm2020/lib/print/print-tool/print-tool.component.mjs +32 -32
  79. package/esm2020/lib/print/print.module.mjs +25 -25
  80. package/esm2020/lib/search/index.mjs +6 -6
  81. package/esm2020/lib/search/query.state.mjs +33 -33
  82. package/esm2020/lib/search/search-bar/search-bar-binding.directive.mjs +60 -60
  83. package/esm2020/lib/search/search-bar/search-bar.module.mjs +21 -21
  84. package/esm2020/lib/search/search-results-tool/search-results-tool.component.mjs +593 -588
  85. package/esm2020/lib/search/search-results-tool/search-results-tool.module.mjs +64 -64
  86. package/esm2020/lib/search/search.module.mjs +23 -23
  87. package/esm2020/lib/search/search.state.mjs +106 -106
  88. package/esm2020/lib/storage/index.mjs +1 -1
  89. package/esm2020/lib/storage/storage.module.mjs +15 -15
  90. package/esm2020/lib/storage/storage.state.mjs +22 -22
  91. package/esm2020/lib/tool/index.mjs +1 -1
  92. package/esm2020/lib/tool/tool.module.mjs +15 -15
  93. package/esm2020/lib/tool/tool.state.mjs +51 -51
  94. package/esm2020/lib/workspace/index.mjs +3 -3
  95. package/esm2020/lib/workspace/shared/edition-actions.service.mjs +155 -155
  96. package/esm2020/lib/workspace/shared/feature-actions.service.mjs +143 -143
  97. package/esm2020/lib/workspace/shared/index.mjs +2 -2
  98. package/esm2020/lib/workspace/shared/wfs-actions.service.mjs +157 -157
  99. package/esm2020/lib/workspace/shared/workspace.utils.mjs +6 -6
  100. package/esm2020/lib/workspace/workspace-button/index.mjs +1 -1
  101. package/esm2020/lib/workspace/workspace-button/workspace-button.component.mjs +68 -68
  102. package/esm2020/lib/workspace/workspace.module.mjs +36 -36
  103. package/esm2020/lib/workspace/workspace.state.mjs +187 -187
  104. package/esm2020/public_api.mjs +34 -34
  105. package/fesm2015/igo2-integration.mjs +6462 -6457
  106. package/fesm2015/igo2-integration.mjs.map +1 -1
  107. package/fesm2020/igo2-integration.mjs +6021 -6016
  108. package/fesm2020/igo2-integration.mjs.map +1 -1
  109. package/index.d.ts +5 -5
  110. package/lib/about/about-tool/about-tool.component.d.ts +34 -34
  111. package/lib/about/about-tool/index.d.ts +1 -1
  112. package/lib/about/about.module.d.ts +16 -16
  113. package/lib/about/index.d.ts +1 -1
  114. package/lib/analytics/analytics-listener.service.d.ts +27 -27
  115. package/lib/analytics/analytics.module.d.ts +6 -6
  116. package/lib/analytics/index.d.ts +1 -1
  117. package/lib/catalog/catalog-browser-tool/catalog-browser-tool.component.d.ts +57 -57
  118. package/lib/catalog/catalog-browser-tool/catalog-browser-tool.module.d.ts +12 -12
  119. package/lib/catalog/catalog-library-tool/catalog-library-tool.component.d.ts +50 -50
  120. package/lib/catalog/catalog-library-tool/catalog-library-tool.module.d.ts +12 -12
  121. package/lib/catalog/catalog.module.d.ts +8 -8
  122. package/lib/catalog/catalog.state.d.ts +37 -37
  123. package/lib/catalog/index.d.ts +5 -5
  124. package/lib/context/context-editor-tool/context-editor-tool.component.d.ts +9 -9
  125. package/lib/context/context-manager-tool/context-manager-tool.component.d.ts +15 -15
  126. package/lib/context/context-permission-manager-tool/context-permission-manager-tool.component.d.ts +5 -5
  127. package/lib/context/context-share-tool/context-share-tool.component.d.ts +13 -13
  128. package/lib/context/context.module.d.ts +11 -11
  129. package/lib/context/context.state.d.ts +37 -37
  130. package/lib/context/index.d.ts +5 -5
  131. package/lib/directions/directions-tool/directions-tool.component.d.ts +54 -54
  132. package/lib/directions/directions-tool/index.d.ts +1 -1
  133. package/lib/directions/directions.module.d.ts +10 -10
  134. package/lib/directions/directions.state.d.ts +28 -28
  135. package/lib/directions/index.d.ts +2 -2
  136. package/lib/draw/draw.module.d.ts +8 -8
  137. package/lib/draw/draw.state.d.ts +17 -16
  138. package/lib/draw/drawing-tool/drawing-tool.component.d.ts +31 -31
  139. package/lib/draw/index.d.ts +2 -2
  140. package/lib/filter/active-ogc-filter-tool/active-ogc-filter-tool.animation.d.ts +2 -2
  141. package/lib/filter/active-ogc-filter-tool/active-ogc-filter-tool.component.d.ts +12 -12
  142. package/lib/filter/active-ogc-filter-tool/index.d.ts +1 -1
  143. package/lib/filter/active-time-filter-tool/active-time-filter-tool.animation.d.ts +2 -2
  144. package/lib/filter/active-time-filter-tool/active-time-filter-tool.component.d.ts +12 -12
  145. package/lib/filter/active-time-filter-tool/index.d.ts +1 -1
  146. package/lib/filter/filter.module.d.ts +15 -15
  147. package/lib/filter/index.d.ts +5 -5
  148. package/lib/filter/ogc-filter-tool/index.d.ts +1 -1
  149. package/lib/filter/ogc-filter-tool/ogc-filter-tool.component.d.ts +6 -6
  150. package/lib/filter/spatial-filter-tool/index.d.ts +1 -1
  151. package/lib/filter/spatial-filter-tool/spatial-filter-tool.component.d.ts +82 -82
  152. package/lib/filter/time-filter-tool/index.d.ts +1 -1
  153. package/lib/filter/time-filter-tool/time-filter-tool.component.d.ts +6 -6
  154. package/lib/import-export/import-export-tool/import-export-tool.component.d.ts +31 -31
  155. package/lib/import-export/import-export-tool/index.d.ts +1 -1
  156. package/lib/import-export/import-export.module.d.ts +15 -15
  157. package/lib/import-export/import-export.state.d.ts +24 -24
  158. package/lib/import-export/index.d.ts +2 -2
  159. package/lib/integration.module.d.ts +20 -20
  160. package/lib/map/advanced-map-tool/advanced-coordinates/advanced-coordinates.component.d.ts +97 -97
  161. package/lib/map/advanced-map-tool/advanced-map-tool.component.d.ts +12 -12
  162. package/lib/map/advanced-map-tool/advanced-swipe/advanced-swipe.component.d.ts +65 -65
  163. package/lib/map/advanced-map-tool/index.d.ts +1 -1
  164. package/lib/map/index.d.ts +8 -8
  165. package/lib/map/layer-list-tool.state.d.ts +19 -19
  166. package/lib/map/map-details-tool/index.d.ts +1 -1
  167. package/lib/map/map-details-tool/map-details-tool.component.d.ts +38 -38
  168. package/lib/map/map-legend/index.d.ts +1 -1
  169. package/lib/map/map-legend/map-legend-tool.component.d.ts +40 -40
  170. package/lib/map/map-proximity-tool/index.d.ts +1 -1
  171. package/lib/map/map-proximity-tool/map-proximity-tool.component.d.ts +36 -36
  172. package/lib/map/map-proximity.state.d.ts +28 -28
  173. package/lib/map/map-tool/index.d.ts +1 -1
  174. package/lib/map/map-tool/map-tool.component.d.ts +27 -27
  175. package/lib/map/map-tools/index.d.ts +1 -1
  176. package/lib/map/map-tools/map-tools.component.d.ts +65 -65
  177. package/lib/map/map.module.d.ts +38 -38
  178. package/lib/map/map.state.d.ts +24 -24
  179. package/lib/measure/index.d.ts +3 -3
  180. package/lib/measure/measure.module.d.ts +7 -7
  181. package/lib/measure/measure.state.d.ts +16 -16
  182. package/lib/measure/measurer-tool/measurer-tool.component.d.ts +24 -24
  183. package/lib/measure/measurer-tool/measurer-tool.module.d.ts +11 -11
  184. package/lib/print/index.d.ts +1 -1
  185. package/lib/print/print-tool/index.d.ts +1 -1
  186. package/lib/print/print-tool/print-tool.component.d.ts +10 -10
  187. package/lib/print/print.module.d.ts +10 -10
  188. package/lib/search/index.d.ts +6 -6
  189. package/lib/search/query.state.d.ts +20 -20
  190. package/lib/search/search-bar/search-bar-binding.directive.d.ts +20 -20
  191. package/lib/search/search-bar/search-bar.module.d.ts +11 -11
  192. package/lib/search/search-results-tool/search-results-tool.component.d.ts +101 -98
  193. package/lib/search/search-results-tool/search-results-tool.module.d.ts +18 -18
  194. package/lib/search/search.module.d.ts +8 -8
  195. package/lib/search/search.state.d.ts +54 -54
  196. package/lib/storage/index.d.ts +1 -1
  197. package/lib/storage/storage.module.d.ts +6 -6
  198. package/lib/storage/storage.state.d.ts +12 -12
  199. package/lib/tool/index.d.ts +1 -1
  200. package/lib/tool/tool.module.d.ts +6 -6
  201. package/lib/tool/tool.state.d.ts +22 -22
  202. package/lib/workspace/index.d.ts +3 -3
  203. package/lib/workspace/shared/edition-actions.service.d.ts +26 -26
  204. package/lib/workspace/shared/feature-actions.service.d.ts +25 -25
  205. package/lib/workspace/shared/index.d.ts +2 -2
  206. package/lib/workspace/shared/wfs-actions.service.d.ts +27 -27
  207. package/lib/workspace/shared/workspace.utils.d.ts +2 -2
  208. package/lib/workspace/workspace-button/index.d.ts +1 -1
  209. package/lib/workspace/workspace-button/workspace-button.component.d.ts +21 -21
  210. package/lib/workspace/workspace.module.d.ts +12 -12
  211. package/lib/workspace/workspace.state.d.ts +63 -63
  212. package/package.json +3 -3
  213. package/public_api.d.ts +31 -31
@@ -1,163 +1,163 @@
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
- /**
13
- * Service that holds the state of the direction module
14
- */
15
- export class MapProximityState {
16
- constructor(mapState) {
17
- this.mapState = mapState;
18
- this.enabled$ = new BehaviorSubject(false);
19
- this.proximityRadiusValue$ = new BehaviorSubject(30);
20
- this.proximitylocationType$ = new BehaviorSubject('geolocation');
21
- this.proximityFeatureStore = new FeatureStore([], { map: this.mapState.map });
22
- this.subs$$ = [];
23
- this.currentPositionCoordinate$ = new BehaviorSubject(undefined);
24
- this.mapState.map.ol.once('rendercomplete', () => {
25
- this.subscribeProximityMonitor();
26
- });
27
- }
28
- get map() {
29
- return this.mapState.map;
30
- }
31
- subscribeProximityMonitor() {
32
- this.subs$$.push(combineLatest([
33
- this.enabled$,
34
- this.proximitylocationType$,
35
- this.proximityRadiusValue$,
36
- interval(5000),
37
- this.map.geolocationController.position$
38
- ])
39
- .pipe(debounceTime(750))
40
- .subscribe((bunch) => {
41
- this.proximityFeatureStore.clear();
42
- const enabled = bunch[0];
43
- const layers = this.map.layers;
44
- const currentPos = this.map.geolocationController.position$.value;
45
- const locationType = bunch[1];
46
- const proximityRadiusValue = bunch[2];
47
- if (!enabled) {
48
- return;
49
- }
50
- let coord;
51
- if (locationType === 'geolocation') {
52
- if (!currentPos || !currentPos.position) {
53
- return;
54
- }
55
- coord = olProj.transform(currentPos.position, currentPos.projection, this.map.projection);
56
- this.map.mapCenter$.next(false);
57
- }
58
- else {
59
- coord = this.map.viewController.getCenter();
60
- ;
61
- this.map.mapCenter$.next(true);
62
- }
63
- const coordLonLat = olProj.transform(coord, this.map.projection, 'EPSG:4269');
64
- const roundedCoordLonLat = roundCoordTo(coordLonLat, 6);
65
- this.currentPositionCoordinate$.next(roundedCoordLonLat);
66
- const layersToMonitor = layers
67
- .filter(layer => layer.ol instanceof olLayerVector &&
68
- layer.dataSource.options.queryable &&
69
- layer.visible &&
70
- layer.isInResolutionsRange);
71
- layersToMonitor.map(layerToMonitor => {
72
- const layerSource = layerToMonitor.ol.getSource();
73
- // Mostly for polygon features.
74
- const olFeaturesAtCoordinate = layerSource.getFeaturesAtCoordinate(coord);
75
- if (olFeaturesAtCoordinate && olFeaturesAtCoordinate.length) {
76
- olFeaturesAtCoordinate.map(olFeatureAtCoordinate => {
77
- const featureAtThisPosition = featureFromOl(olFeatureAtCoordinate, this.map.projection);
78
- let title = this.getQueryTitle(featureAtThisPosition, layerToMonitor);
79
- // todo handle imported layers without querytitle? prompt title or detect first column?
80
- this.addFeatureToStore(layerToMonitor, coord, featureAtThisPosition, title, 0);
81
- });
82
- }
83
- else {
84
- // compute proximity for remaining sources
85
- const closestOlFeature = layerSource.getClosestFeatureToCoordinate(coord);
86
- if (closestOlFeature) {
87
- const closestOlGeom = closestOlFeature.getGeometry();
88
- const closestFeature = featureFromOl(closestOlFeature, this.map.projection);
89
- const geometryClosestPoint = closestOlGeom.getClosestPoint(coord);
90
- const linebetween = new olLineString([coord, geometryClosestPoint]);
91
- const lineLength = measureOlGeometryLength(linebetween, 'EPSG:3857');
92
- if (lineLength <= proximityRadiusValue) {
93
- let title = this.getQueryTitle(closestFeature, layerToMonitor);
94
- // todo handle imported layers without querytitle? prompt title or detect first column?
95
- this.addFeatureToStore(layerToMonitor, coord, closestFeature, title, lineLength);
96
- }
97
- }
98
- }
99
- });
100
- }));
101
- }
102
- /**
103
- * Add a feature with proximity properties to the store
104
- * @internal
105
- */
106
- addFeatureToStore(layer, coordFromCalculatedDistance, feature, title, distance) {
107
- const featureId = uuid();
108
- const projection = this.map.ol.getView().getProjection();
109
- const olGeometry = feature.ol.getGeometry();
110
- const geometry = new GeoJSON().writeGeometryObject(olGeometry, {
111
- featureProjection: projection,
112
- dataProjection: projection
113
- });
114
- this.proximityFeatureStore.update({
115
- type: FEATURE,
116
- geometry,
117
- projection: projection.getCode(),
118
- properties: { ...feature.properties, ...{
119
- id: featureId,
120
- element: title,
121
- distance,
122
- coordFromCalculatedDistance,
123
- layerSrcId: layer.id,
124
- layerSrcTitle: layer.title
125
- } },
126
- meta: {
127
- id: featureId
128
- }
129
- });
130
- }
131
- getQueryTitle(feature, layer) {
132
- let title;
133
- if (layer.options?.source?.options) {
134
- const dataSourceOptions = layer.options.source
135
- .options;
136
- if (dataSourceOptions.queryTitle) {
137
- title = this.getLabelMatch(feature, dataSourceOptions.queryTitle);
138
- }
139
- }
140
- return title;
141
- }
142
- getLabelMatch(feature, labelMatch) {
143
- let label = labelMatch;
144
- const labelToGet = Array.from(labelMatch.matchAll(/\$\{([^\{\}]+)\}/g));
145
- labelToGet.forEach(v => {
146
- label = label.replace(v[0], feature.properties[v[1]]);
147
- });
148
- // Nothing done? check feature's attribute
149
- if (labelToGet.length === 0 && label === labelMatch) {
150
- label = feature.properties[labelMatch] || labelMatch;
151
- }
152
- return label;
153
- }
154
- }
155
- MapProximityState.ɵfac = function MapProximityState_Factory(t) { return new (t || MapProximityState)(i0.ɵɵinject(i1.MapState)); };
156
- MapProximityState.ɵprov = /*@__PURE__*/ i0.ɵɵdefineInjectable({ token: MapProximityState, factory: MapProximityState.ɵfac, providedIn: 'root' });
157
- (function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MapProximityState, [{
158
- type: Injectable,
159
- args: [{
160
- providedIn: 'root'
161
- }]
162
- }], function () { return [{ type: i1.MapState }]; }, null); })();
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
+ /**
13
+ * Service that holds the state of the direction module
14
+ */
15
+ export class MapProximityState {
16
+ constructor(mapState) {
17
+ this.mapState = mapState;
18
+ this.enabled$ = new BehaviorSubject(false);
19
+ this.proximityRadiusValue$ = new BehaviorSubject(30);
20
+ this.proximitylocationType$ = new BehaviorSubject('geolocation');
21
+ this.proximityFeatureStore = new FeatureStore([], { map: this.mapState.map });
22
+ this.subs$$ = [];
23
+ this.currentPositionCoordinate$ = new BehaviorSubject(undefined);
24
+ this.mapState.map.ol.once('rendercomplete', () => {
25
+ this.subscribeProximityMonitor();
26
+ });
27
+ }
28
+ get map() {
29
+ return this.mapState.map;
30
+ }
31
+ subscribeProximityMonitor() {
32
+ this.subs$$.push(combineLatest([
33
+ this.enabled$,
34
+ this.proximitylocationType$,
35
+ this.proximityRadiusValue$,
36
+ interval(5000),
37
+ this.map.geolocationController.position$
38
+ ])
39
+ .pipe(debounceTime(750))
40
+ .subscribe((bunch) => {
41
+ this.proximityFeatureStore.clear();
42
+ const enabled = bunch[0];
43
+ const layers = this.map.layers;
44
+ const currentPos = this.map.geolocationController.position$.value;
45
+ const locationType = bunch[1];
46
+ const proximityRadiusValue = bunch[2];
47
+ if (!enabled) {
48
+ return;
49
+ }
50
+ let coord;
51
+ if (locationType === 'geolocation') {
52
+ if (!currentPos || !currentPos.position) {
53
+ return;
54
+ }
55
+ coord = olProj.transform(currentPos.position, currentPos.projection, this.map.projection);
56
+ this.map.mapCenter$.next(false);
57
+ }
58
+ else {
59
+ coord = this.map.viewController.getCenter();
60
+ ;
61
+ this.map.mapCenter$.next(true);
62
+ }
63
+ const coordLonLat = olProj.transform(coord, this.map.projection, 'EPSG:4269');
64
+ const roundedCoordLonLat = roundCoordTo(coordLonLat, 6);
65
+ this.currentPositionCoordinate$.next(roundedCoordLonLat);
66
+ const layersToMonitor = layers
67
+ .filter(layer => layer.ol instanceof olLayerVector &&
68
+ layer.dataSource.options.queryable &&
69
+ layer.visible &&
70
+ layer.isInResolutionsRange);
71
+ layersToMonitor.map(layerToMonitor => {
72
+ const layerSource = layerToMonitor.ol.getSource();
73
+ // Mostly for polygon features.
74
+ const olFeaturesAtCoordinate = layerSource.getFeaturesAtCoordinate(coord);
75
+ if (olFeaturesAtCoordinate && olFeaturesAtCoordinate.length) {
76
+ olFeaturesAtCoordinate.map(olFeatureAtCoordinate => {
77
+ const featureAtThisPosition = featureFromOl(olFeatureAtCoordinate, this.map.projection);
78
+ let title = this.getQueryTitle(featureAtThisPosition, layerToMonitor);
79
+ // todo handle imported layers without querytitle? prompt title or detect first column?
80
+ this.addFeatureToStore(layerToMonitor, coord, featureAtThisPosition, title, 0);
81
+ });
82
+ }
83
+ else {
84
+ // compute proximity for remaining sources
85
+ const closestOlFeature = layerSource.getClosestFeatureToCoordinate(coord);
86
+ if (closestOlFeature) {
87
+ const closestOlGeom = closestOlFeature.getGeometry();
88
+ const closestFeature = featureFromOl(closestOlFeature, this.map.projection);
89
+ const geometryClosestPoint = closestOlGeom.getClosestPoint(coord);
90
+ const linebetween = new olLineString([coord, geometryClosestPoint]);
91
+ const lineLength = measureOlGeometryLength(linebetween, 'EPSG:3857');
92
+ if (lineLength <= proximityRadiusValue) {
93
+ let title = this.getQueryTitle(closestFeature, layerToMonitor);
94
+ // todo handle imported layers without querytitle? prompt title or detect first column?
95
+ this.addFeatureToStore(layerToMonitor, coord, closestFeature, title, lineLength);
96
+ }
97
+ }
98
+ }
99
+ });
100
+ }));
101
+ }
102
+ /**
103
+ * Add a feature with proximity properties to the store
104
+ * @internal
105
+ */
106
+ addFeatureToStore(layer, coordFromCalculatedDistance, feature, title, distance) {
107
+ const featureId = uuid();
108
+ const projection = this.map.ol.getView().getProjection();
109
+ const olGeometry = feature.ol.getGeometry();
110
+ const geometry = new GeoJSON().writeGeometryObject(olGeometry, {
111
+ featureProjection: projection,
112
+ dataProjection: projection
113
+ });
114
+ this.proximityFeatureStore.update({
115
+ type: FEATURE,
116
+ geometry,
117
+ projection: projection.getCode(),
118
+ properties: { ...feature.properties, ...{
119
+ id: featureId,
120
+ element: title,
121
+ distance,
122
+ coordFromCalculatedDistance,
123
+ layerSrcId: layer.id,
124
+ layerSrcTitle: layer.title
125
+ } },
126
+ meta: {
127
+ id: featureId
128
+ }
129
+ });
130
+ }
131
+ getQueryTitle(feature, layer) {
132
+ let title;
133
+ if (layer.options?.source?.options) {
134
+ const dataSourceOptions = layer.options.source
135
+ .options;
136
+ if (dataSourceOptions.queryTitle) {
137
+ title = this.getLabelMatch(feature, dataSourceOptions.queryTitle);
138
+ }
139
+ }
140
+ return title;
141
+ }
142
+ getLabelMatch(feature, labelMatch) {
143
+ let label = labelMatch;
144
+ const labelToGet = Array.from(labelMatch.matchAll(/\$\{([^\{\}]+)\}/g));
145
+ labelToGet.forEach(v => {
146
+ label = label.replace(v[0], feature.properties[v[1]]);
147
+ });
148
+ // Nothing done? check feature's attribute
149
+ if (labelToGet.length === 0 && label === labelMatch) {
150
+ label = feature.properties[labelMatch] || labelMatch;
151
+ }
152
+ return label;
153
+ }
154
+ }
155
+ MapProximityState.ɵfac = function MapProximityState_Factory(t) { return new (t || MapProximityState)(i0.ɵɵinject(i1.MapState)); };
156
+ MapProximityState.ɵprov = /*@__PURE__*/ i0.ɵɵdefineInjectable({ token: MapProximityState, factory: MapProximityState.ɵfac, providedIn: 'root' });
157
+ (function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MapProximityState, [{
158
+ type: Injectable,
159
+ args: [{
160
+ providedIn: 'root'
161
+ }]
162
+ }], function () { return [{ type: i1.MapState }]; }, null); })();
163
163
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFwLXByb3hpbWl0eS5zdGF0ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2ludGVncmF0aW9uL3NyYy9saWIvbWFwL21hcC1wcm94aW1pdHkuc3RhdGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUUzQyxPQUFPLEVBQ0wsWUFBWSxFQUNaLGFBQWEsRUFBRSx1QkFBdUIsRUFBcUMsT0FBTyxFQUFFLFlBQVksRUFDakcsTUFBTSxXQUFXLENBQUM7QUFDbkIsT0FBTyxFQUFFLGVBQWUsRUFBRSxhQUFhLEVBQUUsUUFBUSxFQUFnQixNQUFNLE1BQU0sQ0FBQztBQUM5RSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFHOUMsT0FBTyxPQUFPLE1BQU0sbUJBQW1CLENBQUM7QUFDeEMsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUVuQyxPQUFPLGFBQWEsTUFBTSxpQkFBaUIsQ0FBQztBQUc1QyxPQUFPLFlBQVksTUFBTSxvQkFBb0IsQ0FBQztBQUM5QyxPQUFPLEtBQUssTUFBTSxNQUFNLFNBQVMsQ0FBQzs7O0FBQ2xDOztHQUVHO0FBSUgsTUFBTSxPQUFPLGlCQUFpQjtJQWE1QixZQUFvQixRQUFrQjtRQUFsQixhQUFRLEdBQVIsUUFBUSxDQUFVO1FBWC9CLGFBQVEsR0FBNkIsSUFBSSxlQUFlLENBQVUsS0FBSyxDQUFDLENBQUM7UUFDekUsMEJBQXFCLEdBQTRCLElBQUksZUFBZSxDQUFTLEVBQUUsQ0FBQyxDQUFDO1FBQ2pGLDJCQUFzQixHQUE0QixJQUFJLGVBQWUsQ0FBUyxhQUFhLENBQUMsQ0FBQztRQUM3RiwwQkFBcUIsR0FBMEIsSUFBSSxZQUFZLENBQVUsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQztR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QUM7U0FDdEQ7UUFDRCxPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7O2tGQTNKVSxpQkFBaUI7dUVBQWpCLGlCQUFpQixXQUFqQixpQkFBaUIsbUJBRmhCLE1BQU07dUZBRVAsaUJBQWlCO2NBSDdCLFVBQVU7ZUFBQztnQkFDVixVQUFVLEVBQUUsTUFBTTthQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHtcbiAgRmVhdHVyZVN0b3JlLCBGZWF0dXJlLCBJZ29NYXAsXG4gIGZlYXR1cmVGcm9tT2wsIG1lYXN1cmVPbEdlb21ldHJ5TGVuZ3RoLCBMYXllciwgUXVlcnlhYmxlRGF0YVNvdXJjZU9wdGlvbnMsIEZFQVRVUkUsIHJvdW5kQ29vcmRUbywgUXVlcnlhYmxlRGF0YVNvdXJjZSwgTWFwR2VvbG9jYXRpb25TdGF0ZVxufSBmcm9tICdAaWdvMi9nZW8nO1xuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBjb21iaW5lTGF0ZXN0LCBpbnRlcnZhbCwgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBkZWJvdW5jZVRpbWUgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBNYXBTdGF0ZSB9IGZyb20gJy4uL21hcC9tYXAuc3RhdGUnO1xuXG5pbXBvcnQgR2VvSlNPTiBmcm9tICdvbC9mb3JtYXQvR2VvSlNPTic7XG5pbXBvcnQgeyB1dWlkIH0gZnJvbSAnQGlnbzIvdXRpbHMnO1xuXG5pbXBvcnQgb2xMYXllclZlY3RvciBmcm9tICdvbC9sYXllci9WZWN0b3InO1xuaW1wb3J0IG9sVmVjdG9yU291cmNlIGZyb20gJ29sL3NvdXJjZS9WZWN0b3InO1xuaW1wb3J0IEdlb21ldHJ5IGZyb20gJ29sL2dlb20vR2VvbWV0cnknO1xuaW1wb3J0IG9sTGluZVN0cmluZyBmcm9tICdvbC9nZW9tL0xpbmVTdHJpbmcnO1xuaW1wb3J0ICogYXMgb2xQcm9qIGZyb20gJ29sL3Byb2onO1xuLyoqXG4gKiBTZXJ2aWNlIHRoYXQgaG9sZHMgdGhlIHN0YXRlIG9mIHRoZSBkaXJlY3Rpb24gbW9kdWxlXG4gKi9cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXG59KVxuZXhwb3J0IGNsYXNzIE1hcFByb3hpbWl0eVN0YXRlIHtcblxuICBwdWJsaWMgZW5hYmxlZCQ6IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPiA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4oZmFsc2UpO1xuICBwdWJsaWMgcHJveGltaXR5UmFkaXVzVmFsdWUkOiBCZWhhdmlvclN1YmplY3Q8bnVtYmVyPiA9IG5ldyBCZWhhdmlvclN1YmplY3Q8bnVtYmVyPigzMCk7XG4gIHB1YmxpYyBwcm94aW1pdHlsb2NhdGlvblR5cGUkOiBCZWhhdmlvclN1YmplY3Q8c3RyaW5nPiA9IG5ldyBCZWhhdmlvclN1YmplY3Q8c3RyaW5nPignZ2VvbG9jYXRpb24nKTtcbiAgcHVibGljIHByb3hpbWl0eUZlYXR1cmVTdG9yZTogRmVhdHVyZVN0b3JlPEZlYXR1cmU+ID0gbmV3IEZlYXR1cmVTdG9yZTxGZWF0dXJlPihbXSwgeyBtYXA6IHRoaXMubWFwU3RhdGUubWFwIH0pO1xuICBwcml2YXRlIHN1YnMkJDogU3Vic2NyaXB0aW9uW10gPSBbXTtcbiAgcHVibGljIGN1cnJlbnRQb3NpdGlvbkNvb3JkaW5hdGUkOiBCZWhhdmlvclN1YmplY3Q8W251bWJlciwgbnVtYmVyXT4gPSBuZXcgQmVoYXZpb3JTdWJqZWN0KHVuZGVmaW5lZCk7XG5cbiAgZ2V0IG1hcCgpOiBJZ29NYXAge1xuICAgIHJldHVybiB0aGlzLm1hcFN0YXRlLm1hcDtcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgbWFwU3RhdGU6IE1hcFN0YXRlKSB7XG5cbiAgICB0aGlzLm1hcFN0YXRlLm1hcC5vbC5vbmNlKCdyZW5kZXJjb21wbGV0ZScsICgpID0+IHtcbiAgICAgIHRoaXMuc3Vic2NyaWJlUHJveGltaXR5TW9uaXRvcigpO1xuICAgIH0pO1xuICB9XG5cblxuICBzdWJzY3JpYmVQcm94aW1pdHlNb25pdG9yKCkge1xuICAgIHRoaXMuc3VicyQkLnB1c2goY29tYmluZUxhdGVzdChbXG4gICAgICB0aGlzLmVuYWJsZWQkLFxuICAgICAgdGhpcy5wcm94aW1pdHlsb2NhdGlvblR5cGUkLFxuICAgICAgdGhpcy5wcm94aW1pdHlSYWRpdXNWYWx1ZSQsXG4gICAgICBpbnRlcnZhbCg1MDAwKSxcbiAgICAgIHRoaXMubWFwLmdlb2xvY2F0aW9uQ29udHJvbGxlci5wb3NpdGlvbiRcbiAgICBdKVxuICAgICAgLnBpcGUoZGVib3VuY2VUaW1lKDc1MCkpXG4gICAgICAuc3Vic2NyaWJlKChidW5jaDogW2Jvb2xlYW4sIHN0cmluZywgbnVtYmVyLCBudW1iZXIsIE1hcEdlb2xvY2F0aW9uU3RhdGVdKSA9PiB7XG4gICAgICAgIHRoaXMucHJveGltaXR5RmVhdHVyZVN0b3JlLmNsZWFyKCk7XG4gICAgICAgIGNvbnN0IGVuYWJsZWQgPSBidW5jaFswXTtcbiAgICAgICAgY29uc3QgbGF5ZXJzID0gdGhpcy5tYXAubGF5ZXJzO1xuICAgICAgICBjb25zdCBjdXJyZW50UG9zID0gdGhpcy5tYXAuZ2VvbG9jYXRpb25Db250cm9sbGVyLnBvc2l0aW9uJC52YWx1ZTtcbiAgICAgICAgY29uc3QgbG9jYXRpb25UeXBlID0gYnVuY2hbMV07XG4gICAgICAgIGNvbnN0IHByb3hpbWl0eVJhZGl1c1ZhbHVlID0gYnVuY2hbMl07XG5cbiAgICAgICAgaWYgKCFlbmFibGVkKSB7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cblxuICAgICAgICBsZXQgY29vcmQ6IG51bWJlcltdO1xuICAgICAgICBpZiAobG9jYXRpb25UeXBlID09PSAnZ2VvbG9jYXRpb24nKSB7XG4gICAgICAgICAgaWYgKCFjdXJyZW50UG9zIHx8ICFjdXJyZW50UG9zLnBvc2l0aW9uKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgY29vcmQgPSBvbFByb2oudHJhbnNmb3JtKGN1cnJlbnRQb3MucG9zaXRpb24sIGN1cnJlbnRQb3MucHJvamVjdGlvbiwgdGhpcy5tYXAucHJvamVjdGlvbik7XG4gICAgICAgICAgdGhpcy5tYXAubWFwQ2VudGVyJC5uZXh0KGZhbHNlKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBjb29yZCA9IHRoaXMubWFwLnZpZXdDb250cm9sbGVyLmdldENlbnRlcigpOztcbiAgICAgICAgICB0aGlzLm1hcC5tYXBDZW50ZXIkLm5leHQodHJ1ZSk7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBjb29yZExvbkxhdCA9IG9sUHJvai50cmFuc2Zvcm0oY29vcmQsIHRoaXMubWFwLnByb2plY3Rpb24sICdFUFNHOjQyNjknKTtcbiAgICAgICAgY29uc3Qgcm91bmRlZENvb3JkTG9uTGF0ID0gcm91bmRDb29yZFRvKGNvb3JkTG9uTGF0IGFzIFtudW1iZXIsIG51bWJlcl0sIDYpO1xuICAgICAgICB0aGlzLmN1cnJlbnRQb3NpdGlvbkNvb3JkaW5hdGUkLm5leHQocm91bmRlZENvb3JkTG9uTGF0KTtcblxuICAgICAgICBjb25zdCBsYXllcnNUb01vbml0b3IgPSBsYXllcnNcbiAgICAgICAgICAuZmlsdGVyKGxheWVyID0+XG4gICAgICAgICAgICBsYXllci5vbCBpbnN0YW5jZW9mIG9sTGF5ZXJWZWN0b3IgJiZcbiAgICAgICAgICAgIChsYXllci5kYXRhU291cmNlIGFzIFF1ZXJ5YWJsZURhdGFTb3VyY2UpLm9wdGlvbnMucXVlcnlhYmxlICYmXG4gICAgICAgICAgICBsYXllci52aXNpYmxlICYmXG4gICAgICAgICAgICBsYXllci5pc0luUmVzb2x1dGlvbnNSYW5nZSk7XG5cbiAgICAgICAgbGF5ZXJzVG9Nb25pdG9yLm1hcChsYXllclRvTW9uaXRvciA9PiB7XG4gICAgICAgICAgY29uc3QgbGF5ZXJTb3VyY2UgPSBsYXllclRvTW9uaXRvci5vbC5nZXRTb3VyY2UoKSBhcyBvbFZlY3RvclNvdXJjZTxHZW9tZXRyeT47XG5cbiAgICAgICAgICAvLyBNb3N0bHkgZm9yIHBvbHlnb24gZmVhdHVyZXMuXG4gICAgICAgICAgY29uc3Qgb2xGZWF0dXJlc0F0Q29vcmRpbmF0ZSA9IGxheWVyU291cmNlLmdldEZlYXR1cmVzQXRDb29yZGluYXRlKGNvb3JkKTtcbiAgICAgICAgICBpZiAob2xGZWF0dXJlc0F0Q29vcmRpbmF0ZSAmJiBvbEZlYXR1cmVzQXRDb29yZGluYXRlLmxlbmd0aCkge1xuICAgICAgICAgICAgb2xGZWF0dXJlc0F0Q29vcmRpbmF0ZS5tYXAob2xGZWF0dXJlQXRDb29yZGluYXRlID0+IHtcbiAgICAgICAgICAgICAgY29uc3QgZmVhdHVyZUF0VGhpc1Bvc2l0aW9uID0gZmVhdHVyZUZyb21PbChvbEZlYXR1cmVBdENvb3JkaW5hdGUsIHRoaXMubWFwLnByb2plY3Rpb24pO1xuICAgICAgICAgICAgICBsZXQgdGl0bGUgPSB0aGlzLmdldFF1ZXJ5VGl0bGUoZmVhdHVyZUF0VGhpc1Bvc2l0aW9uLCBsYXllclRvTW9uaXRvcik7XG4gICAgICAgICAgICAgIC8vIHRvZG8gaGFuZGxlIGltcG9ydGVkIGxheWVycyB3aXRob3V0IHF1ZXJ5dGl0bGU/IHByb21wdCB0aXRsZSBvciBkZXRlY3QgZmlyc3QgY29sdW1uP1xuICAgICAgICAgICAgICB0aGlzLmFkZEZlYXR1cmVUb1N0b3JlKGxheWVyVG9Nb25pdG9yLCBjb29yZCwgZmVhdHVyZUF0VGhpc1Bvc2l0aW9uLCB0aXRsZSwgMCk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgLy8gY29tcHV0ZSBwcm94aW1pdHkgZm9yIHJlbWFpbmluZyBzb3VyY2VzXG4gICAgICAgICAgICBjb25zdCBjbG9zZXN0T2xGZWF0dXJlID0gbGF5ZXJTb3VyY2UuZ2V0Q2xvc2VzdEZlYXR1cmVUb0Nvb3JkaW5hdGUoY29vcmQpO1xuICAgICAgICAgICAgaWYgKGNsb3Nlc3RPbEZlYXR1cmUpIHtcbiAgICAgICAgICAgICAgY29uc3QgY2xvc2VzdE9sR2VvbSA9IGNsb3Nlc3RPbEZlYXR1cmUuZ2V0R2VvbWV0cnkoKTtcbiAgICAgICAgICAgICAgY29uc3QgY2xvc2VzdEZlYXR1cmUgPSBmZWF0dXJlRnJvbU9sKGNsb3Nlc3RPbEZlYXR1cmUsIHRoaXMubWFwLnByb2plY3Rpb24pO1xuICAgICAgICAgICAgICBjb25zdCBnZW9tZXRyeUNsb3Nlc3RQb2ludCA9IGNsb3Nlc3RPbEdlb20uZ2V0Q2xvc2VzdFBvaW50KGNvb3JkKTtcbiAgICAgICAgICAgICAgY29uc3QgbGluZWJldHdlZW4gPSBuZXcgb2xMaW5lU3RyaW5nKFtjb29yZCwgZ2VvbWV0cnlDbG9zZXN0UG9pbnRdKTtcbiAgICAgICAgICAgICAgY29uc3QgbGluZUxlbmd0aCA9IG1lYXN1cmVPbEdlb21ldHJ5TGVuZ3RoKGxpbmViZXR3ZWVuLCAnRVBTRzozODU3Jyk7XG4gICAgICAgICAgICAgIGlmIChsaW5lTGVuZ3RoIDw9IHByb3hpbWl0eVJhZGl1c1ZhbHVlKSB7XG4gICAgICAgICAgICAgICAgbGV0IHRpdGxlID0gdGhpcy5nZXRRdWVyeVRpdGxlKGNsb3Nlc3RGZWF0dXJlLCBsYXllclRvTW9uaXRvcik7XG4gICAgICAgICAgICAgICAgLy8gdG9kbyBoYW5kbGUgaW1wb3J0ZWQgbGF5ZXJzIHdpdGhvdXQgcXVlcnl0aXRsZT8gcHJvbXB0IHRpdGxlIG9yIGRldGVjdCBmaXJzdCBjb2x1bW4/XG4gICAgICAgICAgICAgICAgdGhpcy5hZGRGZWF0dXJlVG9TdG9yZShsYXllclRvTW9uaXRvciwgY29vcmQsIGNsb3Nlc3RGZWF0dXJlLCB0aXRsZSwgbGluZUxlbmd0aCk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuXG4gICAgICB9KSk7XG4gIH1cblxuICAgIC8qKlxuICAgKiBBZGQgYSBmZWF0dXJlIHdpdGggcHJveGltaXR5IHByb3BlcnRpZXMgdG8gdGhlIHN0b3JlXG4gICAqIEBpbnRlcm5hbFxuICAgKi9cbiAgICAgcHJpdmF0ZSBhZGRGZWF0dXJlVG9TdG9yZShsYXllcjogTGF5ZXIsIGNvb3JkRnJvbUNhbGN1bGF0ZWREaXN0YW5jZSwgZmVhdHVyZTogRmVhdHVyZSwgdGl0bGUsIGRpc3RhbmNlKSB7XG4gICAgICBjb25zdCBmZWF0dXJlSWQgPSB1dWlkKCk7XG4gICAgICBjb25zdCBwcm9qZWN0aW9uID0gdGhpcy5tYXAub2wuZ2V0VmlldygpLmdldFByb2plY3Rpb24oKTtcbiAgICAgIGNvbnN0IG9sR2VvbWV0cnkgPSBmZWF0dXJlLm9sLmdldEdlb21ldHJ5KCkgYXMgR2VvbWV0cnk7XG4gICAgICBjb25zdCBnZW9tZXRyeSA9IG5ldyBHZW9KU09OKCkud3JpdGVHZW9tZXRyeU9iamVjdChvbEdlb21ldHJ5LCB7XG4gICAgICAgIGZlYXR1cmVQcm9qZWN0aW9uOiBwcm9qZWN0aW9uLFxuICAgICAgICBkYXRhUHJvamVjdGlvbjogcHJvamVjdGlvblxuICAgICAgfSkgYXMgYW55O1xuICAgICAgdGhpcy5wcm94aW1pdHlGZWF0dXJlU3RvcmUudXBkYXRlKHtcbiAgICAgICAgdHlwZTogRkVBVFVSRSxcbiAgICAgICAgZ2VvbWV0cnksXG4gICAgICAgIHByb2plY3Rpb246IHByb2plY3Rpb24uZ2V0Q29kZSgpLFxuICAgICAgICBwcm9wZXJ0aWVzOiB7Li4uZmVhdHVyZS5wcm9wZXJ0aWVzLC4uLntcbiAgICAgICAgICBpZDogZmVhdHVyZUlkLFxuICAgICAgICAgIGVsZW1lbnQ6IHRpdGxlLFxuICAgICAgICAgIGRpc3RhbmNlLFxuICAgICAgICAgIGNvb3JkRnJvbUNhbGN1bGF0ZWREaXN0YW5jZSxcbiAgICAgICAgICBsYXllclNyY0lkOiBsYXllci5pZCxcbiAgICAgICAgICBsYXllclNyY1RpdGxlOiBsYXllci50aXRsZVxuICAgICAgICB9fSxcbiAgICAgICAgbWV0YToge1xuICAgICAgICAgIGlkOiBmZWF0dXJlSWRcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuXG4gIGdldFF1ZXJ5VGl0bGUoZmVhdHVyZTogRmVhdHVyZSwgbGF5ZXI6IExheWVyKTogc3RyaW5nIHtcbiAgICBsZXQgdGl0bGU7XG4gICAgaWYgKGxheWVyLm9wdGlvbnM/LnNvdXJjZT8ub3B0aW9ucykge1xuICAgICAgY29uc3QgZGF0YVNvdXJjZU9wdGlvbnMgPSBsYXllci5vcHRpb25zLnNvdXJjZVxuICAgICAgICAub3B0aW9ucyBhcyBRdWVyeWFibGVEYXRhU291cmNlT3B0aW9ucztcbiAgICAgIGlmIChkYXRhU291cmNlT3B0aW9ucy5xdWVyeVRpdGxlKSB7XG4gICAgICAgIHRpdGxlID0gdGhpcy5nZXRMYWJlbE1hdGNoKGZlYXR1cmUsIGRhdGFTb3VyY2VPcHRpb25zLnF1ZXJ5VGl0bGUpO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gdGl0bGU7XG4gIH1cblxuICBnZXRMYWJlbE1hdGNoKGZlYXR1cmU6IEZlYXR1cmUsIGxhYmVsTWF0Y2gpOiBzdHJpbmcge1xuICAgIGxldCBsYWJlbCA9IGxhYmVsTWF0Y2g7XG4gICAgY29uc3QgbGFiZWxUb0dldCA9IEFycmF5LmZyb20obGFiZWxNYXRjaC5tYXRjaEFsbCgvXFwkXFx7KFteXFx7XFx9XSspXFx9L2cpKTtcblxuICAgIGxhYmVsVG9HZXQuZm9yRWFjaCh2ID0+IHtcbiAgICAgIGxhYmVsID0gbGFiZWwucmVwbGFjZSh2WzBdLCBmZWF0dXJlLnByb3BlcnRpZXNbdlsxXV0pO1xuICAgIH0pO1xuXG4gICAgLy8gTm90aGluZyBkb25lPyBjaGVjayBmZWF0dXJlJ3MgYXR0cmlidXRlXG4gICAgaWYgKGxhYmVsVG9HZXQubGVuZ3RoID09PSAwICYmIGxhYmVsID09PSBsYWJlbE1hdGNoKSB7XG4gICAgICBsYWJlbCA9IGZlYXR1cmUucHJvcGVydGllc1tsYWJlbE1hdGNoXSB8fCBsYWJlbE1hdGNoO1xuICAgIH1cbiAgICByZXR1cm4gbGFiZWw7XG4gIH1cbn1cbiJdfQ==
@@ -1,2 +1,2 @@
1
- export * from './map-tool.component';
1
+ export * from './map-tool.component';
2
2
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9pbnRlZ3JhdGlvbi9zcmMvbGliL21hcC9tYXAtdG9vbC9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLHNCQUFzQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9tYXAtdG9vbC5jb21wb25lbnQnO1xuIl19