@signalk/freeboard-sk 2.0.0-beta.2 → 2.0.0-beta.4
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/CHANGELOG.md +55 -1
- package/package.json +24 -20
- package/public/590.4431be8bbcdbb3f8.js +1 -0
- package/public/assets/help/img/settings_course.png +0 -0
- package/public/assets/help/img/settings_other_vessels.png +0 -0
- package/public/assets/help/index.html +46 -15
- package/public/assets/img/alarms/weather.png +0 -0
- package/public/index.html +2 -2
- package/public/main.a54a56a8a0f02b2d.js +1 -0
- package/public/polyfills.12ddee7e4cb46a02.js +1 -0
- package/public/runtime.0360fd4b1168b48a.js +1 -0
- package/public/styles.a0bf4282aea78b28.css +1 -0
- package/dist/fb-openlayers/README.md +0 -17
- package/dist/fb-openlayers/bundles/fb-openlayers.umd.js +0 -4884
- package/dist/fb-openlayers/bundles/fb-openlayers.umd.js.map +0 -1
- package/dist/fb-openlayers/esm2015/fb-openlayers.js +0 -5
- package/dist/fb-openlayers/esm2015/index.js +0 -92
- package/dist/fb-openlayers/esm2015/lib/alarms/layer-anchor-alarm.component.js +0 -136
- package/dist/fb-openlayers/esm2015/lib/alarms/layer-cpa-alarm.component.js +0 -135
- package/dist/fb-openlayers/esm2015/lib/content.component.js +0 -16
- package/dist/fb-openlayers/esm2015/lib/control.component.js +0 -37
- package/dist/fb-openlayers/esm2015/lib/controls.directive.js +0 -61
- package/dist/fb-openlayers/esm2015/lib/interactions/interaction-draw.component.js +0 -72
- package/dist/fb-openlayers/esm2015/lib/interactions/interaction-modify.component.js +0 -72
- package/dist/fb-openlayers/esm2015/lib/interactions.directive.js +0 -61
- package/dist/fb-openlayers/esm2015/lib/layer.component.js +0 -157
- package/dist/fb-openlayers/esm2015/lib/map.component.js +0 -206
- package/dist/fb-openlayers/esm2015/lib/map.service.js +0 -70
- package/dist/fb-openlayers/esm2015/lib/models.js +0 -37
- package/dist/fb-openlayers/esm2015/lib/navigation/layer-arrival-circle.component.js +0 -116
- package/dist/fb-openlayers/esm2015/lib/navigation/layer-bearing-line.component.js +0 -229
- package/dist/fb-openlayers/esm2015/lib/navigation/layer-xte-path.component.js +0 -120
- package/dist/fb-openlayers/esm2015/lib/overlay.component.js +0 -56
- package/dist/fb-openlayers/esm2015/lib/resources/layer-charts.component.js +0 -141
- package/dist/fb-openlayers/esm2015/lib/resources/layer-notes.component.js +0 -177
- package/dist/fb-openlayers/esm2015/lib/resources/layer-regions.component.js +0 -184
- package/dist/fb-openlayers/esm2015/lib/resources/layer-resourceset.component.js +0 -226
- package/dist/fb-openlayers/esm2015/lib/resources/layer-routes.component.js +0 -188
- package/dist/fb-openlayers/esm2015/lib/resources/layer-sktarget-tracks.component.js +0 -213
- package/dist/fb-openlayers/esm2015/lib/resources/layer-sktargets.component.js +0 -269
- package/dist/fb-openlayers/esm2015/lib/resources/layer-skvessels.component.js +0 -410
- package/dist/fb-openlayers/esm2015/lib/resources/layer-tracks.component.js +0 -175
- package/dist/fb-openlayers/esm2015/lib/resources/layer-waypoints.component.js +0 -238
- package/dist/fb-openlayers/esm2015/lib/util.js +0 -124
- package/dist/fb-openlayers/esm2015/lib/vessel/layer-vessel-trail.component.js +0 -178
- package/dist/fb-openlayers/esm2015/lib/vessel/layer-vessel.component.js +0 -229
- package/dist/fb-openlayers/esm2015/lib/view.directive.js +0 -141
- package/dist/fb-openlayers/fb-openlayers.d.ts +0 -5
- package/dist/fb-openlayers/fb-openlayers.d.ts.map +0 -1
- package/dist/fb-openlayers/fb-openlayers.metadata.json +0 -1
- package/dist/fb-openlayers/fesm2015/fb-openlayers.js +0 -4326
- package/dist/fb-openlayers/fesm2015/fb-openlayers.js.map +0 -1
- package/dist/fb-openlayers/index.d.ts +0 -33
- package/dist/fb-openlayers/index.d.ts.map +0 -1
- package/dist/fb-openlayers/index.ngfactory.d.ts.map +0 -1
- package/dist/fb-openlayers/lib/alarms/layer-anchor-alarm.component.d.ts +0 -44
- package/dist/fb-openlayers/lib/alarms/layer-anchor-alarm.component.d.ts.map +0 -1
- package/dist/fb-openlayers/lib/alarms/layer-anchor-alarm.component.ngfactory.d.ts.map +0 -1
- package/dist/fb-openlayers/lib/alarms/layer-cpa-alarm.component.d.ts +0 -39
- package/dist/fb-openlayers/lib/alarms/layer-cpa-alarm.component.d.ts.map +0 -1
- package/dist/fb-openlayers/lib/alarms/layer-cpa-alarm.component.ngfactory.d.ts.map +0 -1
- package/dist/fb-openlayers/lib/content.component.d.ts +0 -6
- package/dist/fb-openlayers/lib/content.component.d.ts.map +0 -1
- package/dist/fb-openlayers/lib/content.component.ngfactory.d.ts.map +0 -1
- package/dist/fb-openlayers/lib/control.component.d.ts +0 -14
- package/dist/fb-openlayers/lib/control.component.d.ts.map +0 -1
- package/dist/fb-openlayers/lib/control.component.ngfactory.d.ts.map +0 -1
- package/dist/fb-openlayers/lib/controls.directive.d.ts +0 -14
- package/dist/fb-openlayers/lib/controls.directive.d.ts.map +0 -1
- package/dist/fb-openlayers/lib/controls.directive.ngfactory.d.ts.map +0 -1
- package/dist/fb-openlayers/lib/interactions/interaction-draw.component.d.ts +0 -27
- package/dist/fb-openlayers/lib/interactions/interaction-draw.component.d.ts.map +0 -1
- package/dist/fb-openlayers/lib/interactions/interaction-draw.component.ngfactory.d.ts.map +0 -1
- package/dist/fb-openlayers/lib/interactions/interaction-modify.component.d.ts +0 -26
- package/dist/fb-openlayers/lib/interactions/interaction-modify.component.d.ts.map +0 -1
- package/dist/fb-openlayers/lib/interactions/interaction-modify.component.ngfactory.d.ts.map +0 -1
- package/dist/fb-openlayers/lib/interactions.directive.d.ts +0 -14
- package/dist/fb-openlayers/lib/interactions.directive.d.ts.map +0 -1
- package/dist/fb-openlayers/lib/interactions.directive.ngfactory.d.ts.map +0 -1
- package/dist/fb-openlayers/lib/layer.component.d.ts +0 -41
- package/dist/fb-openlayers/lib/layer.component.d.ts.map +0 -1
- package/dist/fb-openlayers/lib/layer.component.ngfactory.d.ts.map +0 -1
- package/dist/fb-openlayers/lib/map.component.d.ts +0 -71
- package/dist/fb-openlayers/lib/map.component.d.ts.map +0 -1
- package/dist/fb-openlayers/lib/map.component.ngfactory.d.ts.map +0 -1
- package/dist/fb-openlayers/lib/map.component.scss.shim.ngstyle.d.ts.map +0 -1
- package/dist/fb-openlayers/lib/map.service.d.ts +0 -19
- package/dist/fb-openlayers/lib/map.service.d.ts.map +0 -1
- package/dist/fb-openlayers/lib/map.service.ngfactory.d.ts.map +0 -1
- package/dist/fb-openlayers/lib/models.d.ts +0 -42
- package/dist/fb-openlayers/lib/models.d.ts.map +0 -1
- package/dist/fb-openlayers/lib/navigation/layer-arrival-circle.component.d.ts +0 -39
- package/dist/fb-openlayers/lib/navigation/layer-arrival-circle.component.d.ts.map +0 -1
- package/dist/fb-openlayers/lib/navigation/layer-arrival-circle.component.ngfactory.d.ts.map +0 -1
- package/dist/fb-openlayers/lib/navigation/layer-bearing-line.component.d.ts +0 -49
- package/dist/fb-openlayers/lib/navigation/layer-bearing-line.component.d.ts.map +0 -1
- package/dist/fb-openlayers/lib/navigation/layer-bearing-line.component.ngfactory.d.ts.map +0 -1
- package/dist/fb-openlayers/lib/navigation/layer-xte-path.component.d.ts +0 -39
- package/dist/fb-openlayers/lib/navigation/layer-xte-path.component.d.ts.map +0 -1
- package/dist/fb-openlayers/lib/navigation/layer-xte-path.component.ngfactory.d.ts.map +0 -1
- package/dist/fb-openlayers/lib/overlay.component.d.ts +0 -25
- package/dist/fb-openlayers/lib/overlay.component.d.ts.map +0 -1
- package/dist/fb-openlayers/lib/overlay.component.ngfactory.d.ts.map +0 -1
- package/dist/fb-openlayers/lib/resources/layer-charts.component.d.ts +0 -20
- package/dist/fb-openlayers/lib/resources/layer-charts.component.d.ts.map +0 -1
- package/dist/fb-openlayers/lib/resources/layer-charts.component.ngfactory.d.ts.map +0 -1
- package/dist/fb-openlayers/lib/resources/layer-notes.component.d.ts +0 -51
- package/dist/fb-openlayers/lib/resources/layer-notes.component.d.ts.map +0 -1
- package/dist/fb-openlayers/lib/resources/layer-notes.component.ngfactory.d.ts.map +0 -1
- package/dist/fb-openlayers/lib/resources/layer-regions.component.d.ts +0 -53
- package/dist/fb-openlayers/lib/resources/layer-regions.component.d.ts.map +0 -1
- package/dist/fb-openlayers/lib/resources/layer-regions.component.ngfactory.d.ts.map +0 -1
- package/dist/fb-openlayers/lib/resources/layer-resourceset.component.d.ts +0 -49
- package/dist/fb-openlayers/lib/resources/layer-resourceset.component.d.ts.map +0 -1
- package/dist/fb-openlayers/lib/resources/layer-resourceset.component.ngfactory.d.ts.map +0 -1
- package/dist/fb-openlayers/lib/resources/layer-routes.component.d.ts +0 -52
- package/dist/fb-openlayers/lib/resources/layer-routes.component.d.ts.map +0 -1
- package/dist/fb-openlayers/lib/resources/layer-routes.component.ngfactory.d.ts.map +0 -1
- package/dist/fb-openlayers/lib/resources/layer-sktarget-tracks.component.d.ts +0 -44
- package/dist/fb-openlayers/lib/resources/layer-sktarget-tracks.component.d.ts.map +0 -1
- package/dist/fb-openlayers/lib/resources/layer-sktarget-tracks.component.ngfactory.d.ts.map +0 -1
- package/dist/fb-openlayers/lib/resources/layer-sktargets.component.d.ts +0 -51
- package/dist/fb-openlayers/lib/resources/layer-sktargets.component.d.ts.map +0 -1
- package/dist/fb-openlayers/lib/resources/layer-sktargets.component.ngfactory.d.ts.map +0 -1
- package/dist/fb-openlayers/lib/resources/layer-skvessels.component.d.ts +0 -60
- package/dist/fb-openlayers/lib/resources/layer-skvessels.component.d.ts.map +0 -1
- package/dist/fb-openlayers/lib/resources/layer-skvessels.component.ngfactory.d.ts.map +0 -1
- package/dist/fb-openlayers/lib/resources/layer-tracks.component.d.ts +0 -50
- package/dist/fb-openlayers/lib/resources/layer-tracks.component.d.ts.map +0 -1
- package/dist/fb-openlayers/lib/resources/layer-tracks.component.ngfactory.d.ts.map +0 -1
- package/dist/fb-openlayers/lib/resources/layer-waypoints.component.d.ts +0 -57
- package/dist/fb-openlayers/lib/resources/layer-waypoints.component.d.ts.map +0 -1
- package/dist/fb-openlayers/lib/resources/layer-waypoints.component.ngfactory.d.ts.map +0 -1
- package/dist/fb-openlayers/lib/util.d.ts +0 -19
- package/dist/fb-openlayers/lib/util.d.ts.map +0 -1
- package/dist/fb-openlayers/lib/vessel/layer-vessel-trail.component.d.ts +0 -45
- package/dist/fb-openlayers/lib/vessel/layer-vessel-trail.component.d.ts.map +0 -1
- package/dist/fb-openlayers/lib/vessel/layer-vessel-trail.component.ngfactory.d.ts.map +0 -1
- package/dist/fb-openlayers/lib/vessel/layer-vessel.component.d.ts +0 -55
- package/dist/fb-openlayers/lib/vessel/layer-vessel.component.d.ts.map +0 -1
- package/dist/fb-openlayers/lib/vessel/layer-vessel.component.ngfactory.d.ts.map +0 -1
- package/dist/fb-openlayers/lib/view.directive.d.ts +0 -44
- package/dist/fb-openlayers/lib/view.directive.d.ts.map +0 -1
- package/dist/fb-openlayers/lib/view.directive.ngfactory.d.ts.map +0 -1
- package/public/53.4babe18f9baabeea.js +0 -1
- package/public/main.a668c86ee67ed842.js +0 -1
- package/public/polyfills.1ba4e1a897c69e24.js +0 -1
- package/public/runtime.55118010dbcb6e60.js +0 -1
- package/public/styles.f013b594260c141e.css +0 -1
|
@@ -1,206 +0,0 @@
|
|
|
1
|
-
import { ChangeDetectionStrategy, ChangeDetectorRef, Component, ElementRef, EventEmitter, Input, Output } from '@angular/core';
|
|
2
|
-
import { Map } from 'ol';
|
|
3
|
-
import { MapService } from './map.service';
|
|
4
|
-
import { AsyncSubject } from 'rxjs';
|
|
5
|
-
import { toLonLat, transformExtent } from 'ol/proj';
|
|
6
|
-
export class MapComponent {
|
|
7
|
-
constructor(changeDetectorRef, element, mapService) {
|
|
8
|
-
this.changeDetectorRef = changeDetectorRef;
|
|
9
|
-
this.element = element;
|
|
10
|
-
this.mapService = mapService;
|
|
11
|
-
/**
|
|
12
|
-
* This event is triggered after the map is initialized
|
|
13
|
-
* Use this to have access to the maps and some helper functions
|
|
14
|
-
*/
|
|
15
|
-
this.mapReady = new AsyncSubject(); // AsyncSubject will only store the last value, and only publish it when the sequence is completed
|
|
16
|
-
/**
|
|
17
|
-
* This event is triggered after the user clicks on the map.
|
|
18
|
-
* A true single click with no dragging and no double click.
|
|
19
|
-
* Note that this event is delayed by 250 ms to ensure that it is not a double click.
|
|
20
|
-
*/
|
|
21
|
-
this.mapClick = new EventEmitter();
|
|
22
|
-
this.mapSingleClick = new EventEmitter();
|
|
23
|
-
this.mapDblClick = new EventEmitter();
|
|
24
|
-
this.mapMoveStart = new EventEmitter();
|
|
25
|
-
this.mapMoveEnd = new EventEmitter();
|
|
26
|
-
this.mapPointerDrag = new EventEmitter();
|
|
27
|
-
this.mapPointerMove = new EventEmitter();
|
|
28
|
-
this.mapPostCompose = new EventEmitter();
|
|
29
|
-
this.mapPostRender = new EventEmitter();
|
|
30
|
-
this.mapPreCompose = new EventEmitter();
|
|
31
|
-
this.mapPropertyChange = new EventEmitter();
|
|
32
|
-
this.setFocus = false;
|
|
33
|
-
this.hitTolerance = 5;
|
|
34
|
-
// Only arrow function works with addEventListener
|
|
35
|
-
this.emitClickEvent = (event) => {
|
|
36
|
-
this.mapClick.emit(this.augmentClickEvent(event));
|
|
37
|
-
};
|
|
38
|
-
this.emitSingleClickEvent = (event) => {
|
|
39
|
-
this.mapSingleClick.emit(this.augmentClickEvent(event));
|
|
40
|
-
};
|
|
41
|
-
this.emitDblClickEvent = (event) => {
|
|
42
|
-
this.mapDblClick.emit(this.augmentClickEvent(event));
|
|
43
|
-
};
|
|
44
|
-
this.emitMoveStartEvent = (event) => {
|
|
45
|
-
this.mapMoveStart.emit(this.augmentMoveEvent(event));
|
|
46
|
-
};
|
|
47
|
-
this.emitMoveEndEvent = (event) => {
|
|
48
|
-
this.mapMoveEnd.emit(this.augmentMoveEvent(event));
|
|
49
|
-
};
|
|
50
|
-
this.emitPointerDragEvent = (event) => {
|
|
51
|
-
this.mapPointerDrag.emit(this.augmentPointerEvent(event));
|
|
52
|
-
};
|
|
53
|
-
this.emitPointerMoveEvent = (event) => {
|
|
54
|
-
this.mapPointerMove.emit(this.augmentPointerEvent(event));
|
|
55
|
-
};
|
|
56
|
-
this.emitPostComposeEvent = (event) => this.mapPostCompose.emit(event);
|
|
57
|
-
this.emitPostRenderEvent = (event) => this.mapPostRender.emit(event);
|
|
58
|
-
this.emitPreComposeEvent = (event) => this.mapPreCompose.emit(event);
|
|
59
|
-
this.emitPropertyChangeEvent = (event) => this.mapPropertyChange.emit(event);
|
|
60
|
-
this.updateSizeThrottle = () => {
|
|
61
|
-
clearTimeout(this.timeoutId);
|
|
62
|
-
this.timeoutId = setTimeout(() => {
|
|
63
|
-
this.map.updateSize();
|
|
64
|
-
}, 100);
|
|
65
|
-
};
|
|
66
|
-
this.changeDetectorRef.detach();
|
|
67
|
-
}
|
|
68
|
-
ngOnInit() {
|
|
69
|
-
const target = this.element.nativeElement.firstElementChild;
|
|
70
|
-
this.map = new Map(this);
|
|
71
|
-
this.map.setTarget(target);
|
|
72
|
-
this.map.setProperties(this.properties, true);
|
|
73
|
-
// register the map in the injectable mapService
|
|
74
|
-
this.mapService.addMap(this.map);
|
|
75
|
-
this.map.once('postrender', event => {
|
|
76
|
-
this.afterMapReady();
|
|
77
|
-
});
|
|
78
|
-
}
|
|
79
|
-
ngOnDestroy() {
|
|
80
|
-
this.map.un('singleclick', this.emitSingleClickEvent);
|
|
81
|
-
this.map.un('dblclick', this.emitDblClickEvent);
|
|
82
|
-
this.map.un('click', this.emitClickEvent);
|
|
83
|
-
this.map.un('movestart', this.emitMoveStartEvent);
|
|
84
|
-
this.map.un('moveend', this.emitMoveEndEvent);
|
|
85
|
-
this.map.un('pointerdrag', this.emitPointerDragEvent);
|
|
86
|
-
this.map.un('pointermove', this.emitPointerMoveEvent);
|
|
87
|
-
this.map.un('postcompose', this.emitPostComposeEvent);
|
|
88
|
-
this.map.un('postrender', this.emitPostRenderEvent);
|
|
89
|
-
this.map.un('precompose', this.emitPreComposeEvent);
|
|
90
|
-
this.map.un('propertychange', this.emitPropertyChangeEvent);
|
|
91
|
-
window.removeEventListener('resize', this.updateSizeThrottle);
|
|
92
|
-
window.removeEventListener('orientationchange', this.updateSizeThrottle);
|
|
93
|
-
this.map.setTarget(null);
|
|
94
|
-
this.map = null;
|
|
95
|
-
}
|
|
96
|
-
ngOnChanges(changes) {
|
|
97
|
-
if (this.map && typeof changes.setFocus !== 'undefined') {
|
|
98
|
-
if (changes.setFocus.currentValue) {
|
|
99
|
-
this.focusMap();
|
|
100
|
-
}
|
|
101
|
-
}
|
|
102
|
-
}
|
|
103
|
-
afterMapReady() {
|
|
104
|
-
// register map events
|
|
105
|
-
this.map.on('singleclick', this.emitSingleClickEvent);
|
|
106
|
-
this.map.on('dblclick', this.emitDblClickEvent);
|
|
107
|
-
this.map.on('click', this.emitClickEvent);
|
|
108
|
-
this.map.on('movestart', this.emitMoveStartEvent);
|
|
109
|
-
this.map.on('moveend', this.emitMoveEndEvent);
|
|
110
|
-
this.map.on('pointerdrag', this.emitPointerDragEvent);
|
|
111
|
-
this.map.on('pointermove', this.emitPointerMoveEvent);
|
|
112
|
-
this.map.on('postcompose', this.emitPostComposeEvent);
|
|
113
|
-
this.map.on('postrender', this.emitPostRenderEvent);
|
|
114
|
-
this.map.on('precompose', this.emitPreComposeEvent);
|
|
115
|
-
this.map.on('propertychange', this.emitPropertyChangeEvent);
|
|
116
|
-
// react on window events
|
|
117
|
-
window.addEventListener('resize', this.updateSizeThrottle, false);
|
|
118
|
-
window.addEventListener('orientationchange', this.updateSizeThrottle, false);
|
|
119
|
-
this.updateSize();
|
|
120
|
-
this.mapReady.next({ map: this.map, mapService: this.mapService });
|
|
121
|
-
this.mapReady.complete();
|
|
122
|
-
if (this.setFocus) {
|
|
123
|
-
this.focusMap();
|
|
124
|
-
}
|
|
125
|
-
}
|
|
126
|
-
focusMap() {
|
|
127
|
-
this.element.nativeElement.firstElementChild.focus();
|
|
128
|
-
}
|
|
129
|
-
getMap() {
|
|
130
|
-
return this.map;
|
|
131
|
-
}
|
|
132
|
-
updateSize() {
|
|
133
|
-
this.updateSizeThrottle();
|
|
134
|
-
}
|
|
135
|
-
getMapCenter() {
|
|
136
|
-
if (!this.map) {
|
|
137
|
-
return [0, 0];
|
|
138
|
-
}
|
|
139
|
-
return toLonLat(this.map.getView().getCenter());
|
|
140
|
-
}
|
|
141
|
-
getMapExtent() {
|
|
142
|
-
if (!this.map) {
|
|
143
|
-
return [0, 0, 0, 0];
|
|
144
|
-
}
|
|
145
|
-
let v = this.map.getView();
|
|
146
|
-
let mrid = v.getProjection().getCode();
|
|
147
|
-
return transformExtent(v.calculateExtent(this.map.getSize()), mrid, 'EPSG:4326');
|
|
148
|
-
}
|
|
149
|
-
// ** add {lonlat, features}fields to event
|
|
150
|
-
augmentClickEvent(event) {
|
|
151
|
-
return Object.assign(event, {
|
|
152
|
-
features: this.map.getFeaturesAtPixel(event.pixel, { hitTolerance: this.hitTolerance }),
|
|
153
|
-
lonlat: toLonLat(event.coordinate)
|
|
154
|
-
});
|
|
155
|
-
}
|
|
156
|
-
// ** add {lonlat, zoom, extent, projection code} fields to event
|
|
157
|
-
augmentMoveEvent(event) {
|
|
158
|
-
return Object.assign(event, {
|
|
159
|
-
lonlat: this.getMapCenter(),
|
|
160
|
-
zoom: this.map.getView().getZoom(),
|
|
161
|
-
extent: this.getMapExtent(),
|
|
162
|
-
projCode: this.map.getView().getProjection().getCode()
|
|
163
|
-
});
|
|
164
|
-
}
|
|
165
|
-
// ** add {lonlat} field to event
|
|
166
|
-
augmentPointerEvent(event) {
|
|
167
|
-
return Object.assign(event, { lonlat: toLonLat(event.coordinate) });
|
|
168
|
-
}
|
|
169
|
-
}
|
|
170
|
-
MapComponent.decorators = [
|
|
171
|
-
{ type: Component, args: [{
|
|
172
|
-
selector: 'ol-map',
|
|
173
|
-
template: `
|
|
174
|
-
<div style="width: 100%; height: 100%; margin: 0; padding: 0; touch-action: none;" tabindex=-1>
|
|
175
|
-
</div><ng-content></ng-content>
|
|
176
|
-
`,
|
|
177
|
-
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
178
|
-
styles: [".ol-box{box-sizing:border-box;border-radius:2px;border:2px solid blue}.ol-mouse-position{top:8px;right:8px;position:absolute}.ol-scale-line{background:rgba(0,60,136,.3);border-radius:4px;bottom:8px;left:8px;padding:2px;position:absolute}.ol-scale-line-inner{border:1px solid #eee;border-top:none;color:#eee;font-size:10px;text-align:center;margin:1px;will-change:contents,width;transition:all .25s}.ol-scale-bar{position:absolute;bottom:8px;left:8px}.ol-scale-step-marker{width:1px;height:15px;background-color:#000;float:right;z-Index:10}.ol-scale-step-text{bottom:-5px;font-size:12px;z-Index:11}.ol-scale-step-text,.ol-scale-text{position:absolute;color:#000;text-shadow:-2px 0 #fff,0 2px #fff,2px 0 #fff,0 -2px #fff}.ol-scale-text{font-size:14px;text-align:center;bottom:25px}.ol-scale-singlebar{position:relative;height:10px;z-Index:9;box-sizing:border-box;border:1px solid #000}.ol-unsupported{display:none}.ol-unselectable,.ol-viewport{-webkit-touch-callout:none;-webkit-user-select:none;-moz-user-select:none;user-select:none;-webkit-tap-highlight-color:rgba(0,0,0,0)}.ol-selectable{-webkit-touch-callout:default;-webkit-user-select:text;-moz-user-select:text;user-select:text}.ol-grabbing{cursor:-webkit-grabbing;cursor:grabbing}.ol-grab{cursor:move;cursor:-webkit-grab;cursor:grab}.ol-control{position:absolute;background-color:hsla(0,0%,100%,.4);border-radius:4px;padding:2px}.ol-control:hover{background-color:hsla(0,0%,100%,.6)}.ol-zoom{top:.5em;left:.5em}.ol-rotate{top:.5em;right:.5em;transition:opacity .25s linear,visibility 0s linear}.ol-rotate.ol-hidden{opacity:0;visibility:hidden;transition:opacity .25s linear,visibility 0s linear .25s}.ol-zoom-extent{top:4.643em;left:.5em}.ol-full-screen{right:.5em;top:.5em}.ol-control button{display:block;margin:1px;padding:0;color:#fff;font-size:1.14em;font-weight:700;text-decoration:none;text-align:center;height:1.375em;width:1.375em;line-height:.4em;background-color:rgba(0,60,136,.5);border:none;border-radius:2px}.ol-control button::-moz-focus-inner{border:none;padding:0}.ol-zoom-extent button{line-height:1.4em}.ol-compass{display:block;font-weight:400;font-size:1.2em;will-change:transform}.ol-touch .ol-control button{font-size:1.5em}.ol-touch .ol-zoom-extent{top:5.5em}.ol-control button:focus,.ol-control button:hover{text-decoration:none;background-color:rgba(0,60,136,.7)}.ol-zoom .ol-zoom-in{border-radius:2px 2px 0 0}.ol-zoom .ol-zoom-out{border-radius:0 0 2px 2px}.ol-attribution{text-align:right;bottom:.5em;right:.5em;max-width:calc(100% - 1.3em)}.ol-attribution ul{margin:0;padding:0 .5em;color:#000;text-shadow:0 0 2px #fff}.ol-attribution li{display:inline;list-style:none}.ol-attribution li:not(:last-child):after{content:\" \"}.ol-attribution img{max-height:2em;max-width:inherit;vertical-align:middle}.ol-attribution button,.ol-attribution ul{display:inline-block}.ol-attribution.ol-collapsed ul{display:none}.ol-attribution:not(.ol-collapsed){background:hsla(0,0%,100%,.8)}.ol-attribution.ol-uncollapsible{bottom:0;right:0;border-radius:4px 0 0}.ol-attribution.ol-uncollapsible img{margin-top:-.2em;max-height:1.6em}.ol-attribution.ol-uncollapsible button{display:none}.ol-zoomslider{top:4.5em;left:.5em;height:200px}.ol-zoomslider button{position:relative;height:10px}.ol-touch .ol-zoomslider{top:5.5em}.ol-overviewmap{left:.5em;bottom:.5em}.ol-overviewmap.ol-uncollapsible{bottom:0;left:0;border-radius:0 4px 0 0}.ol-overviewmap .ol-overviewmap-map,.ol-overviewmap button{display:inline-block}.ol-overviewmap .ol-overviewmap-map{border:1px solid #7b98bc;height:150px;margin:2px;width:150px}.ol-overviewmap:not(.ol-collapsed) button{bottom:1px;left:2px;position:absolute}.ol-overviewmap.ol-collapsed .ol-overviewmap-map,.ol-overviewmap.ol-uncollapsible button{display:none}.ol-overviewmap:not(.ol-collapsed){background:hsla(0,0%,100%,.8)}.ol-overviewmap-box{border:2px dotted rgba(0,60,136,.7)}.ol-overviewmap .ol-overviewmap-box:hover{cursor:move}"]
|
|
179
|
-
},] }
|
|
180
|
-
];
|
|
181
|
-
MapComponent.ctorParameters = () => [
|
|
182
|
-
{ type: ChangeDetectorRef },
|
|
183
|
-
{ type: ElementRef },
|
|
184
|
-
{ type: MapService }
|
|
185
|
-
];
|
|
186
|
-
MapComponent.propDecorators = {
|
|
187
|
-
mapReady: [{ type: Output }],
|
|
188
|
-
mapClick: [{ type: Output }],
|
|
189
|
-
mapSingleClick: [{ type: Output }],
|
|
190
|
-
mapDblClick: [{ type: Output }],
|
|
191
|
-
mapMoveStart: [{ type: Output }],
|
|
192
|
-
mapMoveEnd: [{ type: Output }],
|
|
193
|
-
mapPointerDrag: [{ type: Output }],
|
|
194
|
-
mapPointerMove: [{ type: Output }],
|
|
195
|
-
mapPostCompose: [{ type: Output }],
|
|
196
|
-
mapPostRender: [{ type: Output }],
|
|
197
|
-
mapPreCompose: [{ type: Output }],
|
|
198
|
-
mapPropertyChange: [{ type: Output }],
|
|
199
|
-
pixelRatio: [{ type: Input }],
|
|
200
|
-
keyboardEventTarget: [{ type: Input }],
|
|
201
|
-
logo: [{ type: Input }],
|
|
202
|
-
properties: [{ type: Input }],
|
|
203
|
-
setFocus: [{ type: Input }],
|
|
204
|
-
hitTolerance: [{ type: Input }]
|
|
205
|
-
};
|
|
206
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFwLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2ZiLW9wZW5sYXllcnMvc3JjL2xpYi9tYXAuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCx1QkFBdUIsRUFBRSxpQkFBaUIsRUFDMUMsU0FBUyxFQUNULFVBQVUsRUFDVixZQUFZLEVBQ1osS0FBSyxFQUdMLE1BQU0sRUFFUCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUMsR0FBRyxFQUFrQixNQUFNLElBQUksQ0FBQztBQUl4QyxPQUFPLEVBQUMsVUFBVSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBRXpDLE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSxNQUFNLENBQUM7QUFFbEMsT0FBTyxFQUFFLFFBQVEsRUFBRSxlQUFlLEVBQUUsTUFBTSxTQUFTLENBQUM7QUFZcEQsTUFBTSxPQUFPLFlBQVk7SUFtQ3ZCLFlBQXNCLGlCQUFvQyxFQUNwQyxPQUFtQixFQUNuQixVQUFzQjtRQUZ0QixzQkFBaUIsR0FBakIsaUJBQWlCLENBQW1CO1FBQ3BDLFlBQU8sR0FBUCxPQUFPLENBQVk7UUFDbkIsZUFBVSxHQUFWLFVBQVUsQ0FBWTtRQWhDNUM7OztXQUdHO1FBQ08sYUFBUSxHQUFnQyxJQUFJLFlBQVksRUFBRSxDQUFDLENBQUMsa0dBQWtHO1FBRXhLOzs7O1dBSUc7UUFDTyxhQUFRLEdBQXNCLElBQUksWUFBWSxFQUFPLENBQUM7UUFDdEQsbUJBQWMsR0FBa0MsSUFBSSxZQUFZLEVBQW1CLENBQUM7UUFDcEYsZ0JBQVcsR0FBa0MsSUFBSSxZQUFZLEVBQW1CLENBQUM7UUFDakYsaUJBQVksR0FBMkIsSUFBSSxZQUFZLEVBQVksQ0FBQztRQUNwRSxlQUFVLEdBQTJCLElBQUksWUFBWSxFQUFZLENBQUM7UUFDbEUsbUJBQWMsR0FBa0MsSUFBSSxZQUFZLEVBQW1CLENBQUM7UUFDcEYsbUJBQWMsR0FB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QUNOLE1BQU07MEJBQ04sTUFBTTsyQkFDTixNQUFNO3lCQUNOLE1BQU07NkJBQ04sTUFBTTs2QkFDTixNQUFNOzZCQUNOLE1BQU07NEJBQ04sTUFBTTs0QkFDTixNQUFNO2dDQUNOLE1BQU07eUJBRU4sS0FBSztrQ0FDTCxLQUFLO21CQUNMLEtBQUs7eUJBQ0wsS0FBSzt1QkFDTCxLQUFLOzJCQUNMLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIENvbXBvbmVudCxcbiAgRWxlbWVudFJlZixcbiAgRXZlbnRFbWl0dGVyLFxuICBJbnB1dCxcbiAgT25EZXN0cm95LFxuICBPbkluaXQsXG4gIE91dHB1dCxcbiAgU2ltcGxlQ2hhbmdlc1xufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7TWFwLCBNYXBCcm93c2VyRXZlbnR9IGZyb20gJ29sJztcbmltcG9ydCBNYXBFdmVudCBmcm9tICdvbC9NYXBFdmVudCc7XG5pbXBvcnQgT2JqZWN0RXZlbnQgZnJvbSAnb2wvT2JqZWN0JztcbmltcG9ydCBSZW5kZXJFdmVudCBmcm9tICdvbC9yZW5kZXIvRXZlbnQnO1xuaW1wb3J0IHtNYXBTZXJ2aWNlfSBmcm9tICcuL21hcC5zZXJ2aWNlJztcbmltcG9ydCB7TWFwUmVhZHlFdmVudH0gZnJvbSAnLi9tb2RlbHMnO1xuaW1wb3J0IHtBc3luY1N1YmplY3R9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHtNYXBPcHRpb25zfSBmcm9tICdvbC9QbHVnZ2FibGVNYXAnO1xuaW1wb3J0IHsgdG9Mb25MYXQsIHRyYW5zZm9ybUV4dGVudCB9IGZyb20gJ29sL3Byb2onO1xuaW1wb3J0IHsgQ29vcmRpbmF0ZSB9IGZyb20gJ29sL2Nvb3JkaW5hdGUnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdvbC1tYXAnLFxuICBzdHlsZVVybHM6IFsnLi9tYXAuY29tcG9uZW50LnNjc3MnXSxcbiAgdGVtcGxhdGU6IGBcbiAgICA8ZGl2IHN0eWxlPVwid2lkdGg6IDEwMCU7IGhlaWdodDogMTAwJTsgbWFyZ2luOiAwOyBwYWRkaW5nOiAwOyB0b3VjaC1hY3Rpb246IG5vbmU7XCIgdGFiaW5kZXg9LTE+XG4gICAgPC9kaXY+PG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxuICBgLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaFxufSlcbmV4cG9ydCBjbGFzcyBNYXBDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XG5cbiAgcHJpdmF0ZSBtYXA6IE1hcDtcbiAgcHJpdmF0ZSB0aW1lb3V0SWQ6IGFueTtcblxuICAvKipcbiAgICogVGhpcyBldmVudCBpcyB0cmlnZ2VyZWQgYWZ0ZXIgdGhlIG1hcCBpcyBpbml0aWFsaXplZFxuICAgKiBVc2UgdGhpcyB0byBoYXZlIGFjY2VzcyB0byB0aGUgbWFwcyBhbmQgc29tZSBoZWxwZXIgZnVuY3Rpb25zXG4gICAqL1xuICBAT3V0cHV0KCkgbWFwUmVhZHk6IEFzeW5jU3ViamVjdDxNYXBSZWFkeUV2ZW50PiA9IG5ldyBBc3luY1N1YmplY3QoKTsgLy8gQXN5bmNTdWJqZWN0IHdpbGwgb25seSBzdG9yZSB0aGUgbGFzdCB2YWx1ZSwgYW5kIG9ubHkgcHVibGlzaCBpdCB3aGVuIHRoZSBzZXF1ZW5jZSBpcyBjb21wbGV0ZWRcblxuICAvKipcbiAgICogVGhpcyBldmVudCBpcyB0cmlnZ2VyZWQgYWZ0ZXIgdGhlIHVzZXIgY2xpY2tzIG9uIHRoZSBtYXAuXG4gICAqIEEgdHJ1ZSBzaW5nbGUgY2xpY2sgd2l0aCBubyBkcmFnZ2luZyBhbmQgbm8gZG91YmxlIGNsaWNrLlxuICAgKiBOb3RlIHRoYXQgdGhpcyBldmVudCBpcyBkZWxheWVkIGJ5IDI1MCBtcyB0byBlbnN1cmUgdGhhdCBpdCBpcyBub3QgYSBkb3VibGUgY2xpY2suXG4gICAqL1xuICBAT3V0cHV0KCkgbWFwQ2xpY2s6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG4gIEBPdXRwdXQoKSBtYXBTaW5nbGVDbGljazogRXZlbnRFbWl0dGVyPE1hcEJyb3dzZXJFdmVudD4gPSBuZXcgRXZlbnRFbWl0dGVyPE1hcEJyb3dzZXJFdmVudD4oKTtcbiAgQE91dHB1dCgpIG1hcERibENsaWNrOiBFdmVudEVtaXR0ZXI8TWFwQnJvd3NlckV2ZW50PiA9IG5ldyBFdmVudEVtaXR0ZXI8TWFwQnJvd3NlckV2ZW50PigpO1xuICBAT3V0cHV0KCkgbWFwTW92ZVN0YXJ0OiBFdmVudEVtaXR0ZXI8TWFwRXZlbnQ+ID0gbmV3IEV2ZW50RW1pdHRlcjxNYXBFdmVudD4oKTtcbiAgQE91dHB1dCgpIG1hcE1vdmVFbmQ6IEV2ZW50RW1pdHRlcjxNYXBFdmVudD4gPSBuZXcgRXZlbnRFbWl0dGVyPE1hcEV2ZW50PigpO1xuICBAT3V0cHV0KCkgbWFwUG9pbnRlckRyYWc6IEV2ZW50RW1pdHRlcjxNYXBCcm93c2VyRXZlbnQ+ID0gbmV3IEV2ZW50RW1pdHRlcjxNYXBCcm93c2VyRXZlbnQ+KCk7XG4gIEBPdXRwdXQoKSBtYXBQb2ludGVyTW92ZTogRXZlbnRFbWl0dGVyPE1hcEJyb3dzZXJFdmVudD4gPSBuZXcgRXZlbnRFbWl0dGVyPE1hcEJyb3dzZXJFdmVudD4oKTtcbiAgQE91dHB1dCgpIG1hcFBvc3RDb21wb3NlOiBFdmVudEVtaXR0ZXI8UmVuZGVyRXZlbnQ+ID0gbmV3IEV2ZW50RW1pdHRlcjxSZW5kZXJFdmVudD4oKTtcbiAgQE91dHB1dCgpIG1hcFBvc3RSZW5kZXI6IEV2ZW50RW1pdHRlcjxNYXBFdmVudD4gPSBuZXcgRXZlbnRFbWl0dGVyPE1hcEV2ZW50PigpO1xuICBAT3V0cHV0KCkgbWFwUHJlQ29tcG9zZTogRXZlbnRFbWl0dGVyPFJlbmRlckV2ZW50PiA9IG5ldyBFdmVudEVtaXR0ZXI8UmVuZGVyRXZlbnQ+KCk7XG4gIEBPdXRwdXQoKSBtYXBQcm9wZXJ0eUNoYW5nZTogRXZlbnRFbWl0dGVyPE9iamVjdEV2ZW50PiA9IG5ldyBFdmVudEVtaXR0ZXI8T2JqZWN0RXZlbnQ+KCk7XG5cbiAgQElucHV0KCkgcGl4ZWxSYXRpbzogbnVtYmVyO1xuICBASW5wdXQoKSBrZXlib2FyZEV2ZW50VGFyZ2V0OiBFbGVtZW50IHwgc3RyaW5nO1xuICBASW5wdXQoKSBsb2dvOiBzdHJpbmcgfCBib29sZWFuO1xuICBASW5wdXQoKSBwcm9wZXJ0aWVzOiB7IFtpbmRleDogc3RyaW5nXTogYW55IH07XG4gIEBJbnB1dCgpIHNldEZvY3VzOiBib29sZWFuPSBmYWxzZTtcbiAgQElucHV0KCkgaGl0VG9sZXJhbmNlOiBudW1iZXI9IDU7XG5cbiAgY29uc3RydWN0b3IocHJvdGVjdGVkIGNoYW5nZURldGVjdG9yUmVmOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICAgICAgICAgICAgcHJvdGVjdGVkIGVsZW1lbnQ6IEVsZW1lbnRSZWYsXG4gICAgICAgICAgICAgIHByb3RlY3RlZCBtYXBTZXJ2aWNlOiBNYXBTZXJ2aWNlKSB7XG4gICAgdGhpcy5jaGFuZ2VEZXRlY3RvclJlZi5kZXRhY2goKTtcbiAgfVxuXG4gIG5nT25Jbml0KCkge1xuICAgIGNvbnN0IHRhcmdldCA9IHRoaXMuZWxlbWVudC5uYXRpdmVFbGVtZW50LmZpcnN0RWxlbWVudENoaWxkO1xuICAgIHRoaXMubWFwID0gbmV3IE1hcCh0aGlzIGFzIE1hcE9wdGlvbnMpO1xuICAgIHRoaXMubWFwLnNldFRhcmdldCh0YXJnZXQpO1xuICAgIHRoaXMubWFwLnNldFByb3BlcnRpZXModGhpcy5wcm9wZXJ0aWVzLCB0cnVlKTtcbiAgICAvLyByZWdpc3RlciB0aGUgbWFwIGluIHRoZSBpbmplY3RhYmxlIG1hcFNlcnZpY2VcbiAgICB0aGlzLm1hcFNlcnZpY2UuYWRkTWFwKHRoaXMubWFwKTtcblxuICAgIHRoaXMubWFwLm9uY2UoJ3Bvc3RyZW5kZXInLCBldmVudCA9PiB7XG4gICAgICB0aGlzLmFmdGVyTWFwUmVhZHkoKTtcbiAgICB9KTtcblxuICB9XG5cbiAgbmdPbkRlc3Ryb3koKSB7XG4gICAgdGhpcy5tYXAudW4oJ3NpbmdsZWNsaWNrJywgdGhpcy5lbWl0U2luZ2xlQ2xpY2tFdmVudCk7XG4gICAgdGhpcy5tYXAudW4oJ2RibGNsaWNrJywgdGhpcy5lbWl0RGJsQ2xpY2tFdmVudCk7XG4gICAgdGhpcy5tYXAudW4oJ2NsaWNrJywgdGhpcy5lbWl0Q2xpY2tFdmVudCk7XG4gICAgdGhpcy5tYXAudW4oJ21vdmVzdGFydCcsIHRoaXMuZW1pdE1vdmVTdGFydEV2ZW50KTtcbiAgICB0aGlzLm1hcC51bignbW92ZWVuZCcsIHRoaXMuZW1pdE1vdmVFbmRFdmVudCk7XG4gICAgdGhpcy5tYXAudW4oJ3BvaW50ZXJkcmFnJywgdGhpcy5lbWl0UG9pbnRlckRyYWdFdmVudCk7XG4gICAgdGhpcy5tYXAudW4oJ3BvaW50ZXJtb3ZlJywgdGhpcy5lbWl0UG9pbnRlck1vdmVFdmVudCk7XG4gICAgdGhpcy5tYXAudW4oJ3Bvc3Rjb21wb3NlJywgdGhpcy5lbWl0UG9zdENvbXBvc2VFdmVudCk7XG4gICAgdGhpcy5tYXAudW4oJ3Bvc3RyZW5kZXInLCB0aGlzLmVtaXRQb3N0UmVuZGVyRXZlbnQpO1xuICAgIHRoaXMubWFwLnVuKCdwcmVjb21wb3NlJywgdGhpcy5lbWl0UHJlQ29tcG9zZUV2ZW50KTtcbiAgICB0aGlzLm1hcC51bigncHJvcGVydHljaGFuZ2UnLCB0aGlzLmVtaXRQcm9wZXJ0eUNoYW5nZUV2ZW50KTtcblxuICAgIHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCdyZXNpemUnLCB0aGlzLnVwZGF0ZVNpemVUaHJvdHRsZSk7XG4gICAgd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ29yaWVudGF0aW9uY2hhbmdlJywgdGhpcy51cGRhdGVTaXplVGhyb3R0bGUpO1xuXG4gICAgdGhpcy5tYXAuc2V0VGFyZ2V0KG51bGwpO1xuICAgIHRoaXMubWFwID0gbnVsbDtcbiAgfVxuXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpIHtcbiAgICBpZih0aGlzLm1hcCAmJiB0eXBlb2YgY2hhbmdlcy5zZXRGb2N1cyE9PSd1bmRlZmluZWQnKSB7XG4gICAgICBpZihjaGFuZ2VzLnNldEZvY3VzLmN1cnJlbnRWYWx1ZSkge1xuICAgICAgICB0aGlzLmZvY3VzTWFwKCk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgYWZ0ZXJNYXBSZWFkeSgpIHtcbiAgICAvLyByZWdpc3RlciBtYXAgZXZlbnRzXG4gICAgdGhpcy5tYXAub24oJ3NpbmdsZWNsaWNrJywgdGhpcy5lbWl0U2luZ2xlQ2xpY2tFdmVudCk7XG4gICAgdGhpcy5tYXAub24oJ2RibGNsaWNrJywgdGhpcy5lbWl0RGJsQ2xpY2tFdmVudCk7XG4gICAgdGhpcy5tYXAub24oJ2NsaWNrJywgdGhpcy5lbWl0Q2xpY2tFdmVudCk7XG4gICAgdGhpcy5tYXAub24oJ21vdmVzdGFydCcsIHRoaXMuZW1pdE1vdmVTdGFydEV2ZW50KTtcbiAgICB0aGlzLm1hcC5vbignbW92ZWVuZCcsIHRoaXMuZW1pdE1vdmVFbmRFdmVudCk7XG4gICAgdGhpcy5tYXAub24oJ3BvaW50ZXJkcmFnJywgdGhpcy5lbWl0UG9pbnRlckRyYWdFdmVudCk7XG4gICAgdGhpcy5tYXAub24oJ3BvaW50ZXJtb3ZlJywgdGhpcy5lbWl0UG9pbnRlck1vdmVFdmVudCk7XG4gICAgdGhpcy5tYXAub24oJ3Bvc3Rjb21wb3NlJywgdGhpcy5lbWl0UG9zdENvbXBvc2VFdmVudCk7XG4gICAgdGhpcy5tYXAub24oJ3Bvc3RyZW5kZXInLCB0aGlzLmVtaXRQb3N0UmVuZGVyRXZlbnQpO1xuICAgIHRoaXMubWFwLm9uKCdwcmVjb21wb3NlJywgdGhpcy5lbWl0UHJlQ29tcG9zZUV2ZW50KTtcbiAgICB0aGlzLm1hcC5vbigncHJvcGVydHljaGFuZ2UnLCB0aGlzLmVtaXRQcm9wZXJ0eUNoYW5nZUV2ZW50KTtcblxuICAgIC8vIHJlYWN0IG9uIHdpbmRvdyBldmVudHNcbiAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigncmVzaXplJywgdGhpcy51cGRhdGVTaXplVGhyb3R0bGUsIGZhbHNlKTtcbiAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcignb3JpZW50YXRpb25jaGFuZ2UnLCB0aGlzLnVwZGF0ZVNpemVUaHJvdHRsZSwgZmFsc2UpO1xuXG4gICAgdGhpcy51cGRhdGVTaXplKCk7XG5cbiAgICB0aGlzLm1hcFJlYWR5Lm5leHQoe21hcDogdGhpcy5tYXAsIG1hcFNlcnZpY2U6IHRoaXMubWFwU2VydmljZX0pO1xuICAgIHRoaXMubWFwUmVhZHkuY29tcGxldGUoKTtcblxuICAgIGlmKHRoaXMuc2V0Rm9jdXMpIHsgdGhpcy5mb2N1c01hcCgpIH1cbiAgfVxuXG4gIGZvY3VzTWFwKCkge1xuICAgIHRoaXMuZWxlbWVudC5uYXRpdmVFbGVtZW50LmZpcnN0RWxlbWVudENoaWxkLmZvY3VzKCk7XG4gIH1cblxuICBnZXRNYXAoKSB7XG4gICAgcmV0dXJuIHRoaXMubWFwO1xuICB9XG5cbiAgdXBkYXRlU2l6ZSgpIHtcbiAgICB0aGlzLnVwZGF0ZVNpemVUaHJvdHRsZSgpO1xuICB9XG5cbiAgZ2V0TWFwQ2VudGVyKCk6IENvb3JkaW5hdGUge1xuICAgIGlmKCF0aGlzLm1hcCkgeyByZXR1cm4gWzAsMF0gfVxuICAgIHJldHVybiB0b0xvbkxhdCh0aGlzLm1hcC5nZXRWaWV3KCkuZ2V0Q2VudGVyKCkpO1xuICB9XG5cbiAgZ2V0TWFwRXh0ZW50KCkge1xuICAgIGlmKCF0aGlzLm1hcCkgeyByZXR1cm4gWzAsMCwwLDBdIH1cbiAgICBsZXQgdj0gdGhpcy5tYXAuZ2V0VmlldygpO1xuICAgIGxldCBtcmlkPSB2LmdldFByb2plY3Rpb24oKS5nZXRDb2RlKCk7XG5cbiAgICByZXR1cm4gdHJhbnNmb3JtRXh0ZW50KFxuICAgICAgICB2LmNhbGN1bGF0ZUV4dGVudCh0aGlzLm1hcC5nZXRTaXplKCkpLFxuICAgICAgICBtcmlkLCBcbiAgICAgICAgJ0VQU0c6NDMyNidcbiAgICApO1xuICB9XG5cbiAgLy8gT25seSBhcnJvdyBmdW5jdGlvbiB3b3JrcyB3aXRoIGFkZEV2ZW50TGlzdGVuZXJcbiAgcHJpdmF0ZSBlbWl0Q2xpY2tFdmVudCA9IChldmVudDogTWFwQnJvd3NlckV2ZW50KSA9PiB7XG4gICAgdGhpcy5tYXBDbGljay5lbWl0KFxuICAgICAgdGhpcy5hdWdtZW50Q2xpY2tFdmVudChldmVudClcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBlbWl0U2luZ2xlQ2xpY2tFdmVudCA9IChldmVudDogTWFwQnJvd3NlckV2ZW50KSA9PiB7XG4gICAgdGhpcy5tYXBTaW5nbGVDbGljay5lbWl0KFxuICAgICAgdGhpcy5hdWdtZW50Q2xpY2tFdmVudChldmVudClcbiAgICApO1xuICB9XG4gIHByaXZhdGUgZW1pdERibENsaWNrRXZlbnQgPSAoZXZlbnQ6IE1hcEJyb3dzZXJFdmVudCkgPT4ge1xuICAgIHRoaXMubWFwRGJsQ2xpY2suZW1pdChcbiAgICAgIHRoaXMuYXVnbWVudENsaWNrRXZlbnQoZXZlbnQpXG4gICAgKTtcbiAgfVxuXG4gIC8vICoqIGFkZCB7bG9ubGF0LCBmZWF0dXJlc31maWVsZHMgdG8gZXZlbnQgXG4gIHByaXZhdGUgYXVnbWVudENsaWNrRXZlbnQoZXZlbnQ6IE1hcEJyb3dzZXJFdmVudCkge1xuICAgIHJldHVybiBPYmplY3QuYXNzaWduKGV2ZW50LCB7XG4gICAgICBmZWF0dXJlczogdGhpcy5tYXAuZ2V0RmVhdHVyZXNBdFBpeGVsKGV2ZW50LnBpeGVsLCB7aGl0VG9sZXJhbmNlOiB0aGlzLmhpdFRvbGVyYW5jZX0pLFxuICAgICAgbG9ubGF0OiB0b0xvbkxhdChldmVudC5jb29yZGluYXRlKVxuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBlbWl0TW92ZVN0YXJ0RXZlbnQgPSAoZXZlbnQ6IE1hcEV2ZW50KSA9PiB7XG4gICAgdGhpcy5tYXBNb3ZlU3RhcnQuZW1pdChcbiAgICAgIHRoaXMuYXVnbWVudE1vdmVFdmVudChldmVudClcbiAgICApO1xuICB9XG4gIHByaXZhdGUgZW1pdE1vdmVFbmRFdmVudCA9IChldmVudDogTWFwRXZlbnQpID0+IHtcbiAgICB0aGlzLm1hcE1vdmVFbmQuZW1pdChcbiAgICAgIHRoaXMuYXVnbWVudE1vdmVFdmVudChldmVudClcbiAgICApO1xuICB9XG5cbiAgLy8gKiogYWRkIHtsb25sYXQsIHpvb20sIGV4dGVudCwgcHJvamVjdGlvbiBjb2RlfSBmaWVsZHMgdG8gZXZlbnQgXG4gIHByaXZhdGUgYXVnbWVudE1vdmVFdmVudChldmVudDogTWFwRXZlbnQpIHtcbiAgICByZXR1cm4gT2JqZWN0LmFzc2lnbihldmVudCwge1xuICAgICAgbG9ubGF0OiB0aGlzLmdldE1hcENlbnRlcigpLFxuICAgICAgem9vbTogdGhpcy5tYXAuZ2V0VmlldygpLmdldFpvb20oKSxcbiAgICAgIGV4dGVudDogdGhpcy5nZXRNYXBFeHRlbnQoKSxcbiAgICAgIHByb2pDb2RlOiB0aGlzLm1hcC5nZXRWaWV3KCkuZ2V0UHJvamVjdGlvbigpLmdldENvZGUoKVxuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBlbWl0UG9pbnRlckRyYWdFdmVudCA9IChldmVudDogTWFwQnJvd3NlckV2ZW50KSA9PiB7XG4gICAgdGhpcy5tYXBQb2ludGVyRHJhZy5lbWl0KFxuICAgICAgdGhpcy5hdWdtZW50UG9pbnRlckV2ZW50KGV2ZW50KVxuICAgICk7XG4gIH1cbiAgcHJpdmF0ZSBlbWl0UG9pbnRlck1vdmVFdmVudCA9IChldmVudDogTWFwQnJvd3NlckV2ZW50KSA9PiB7XG4gICAgdGhpcy5tYXBQb2ludGVyTW92ZS5lbWl0KFxuICAgICAgdGhpcy5hdWdtZW50UG9pbnRlckV2ZW50KGV2ZW50KVxuICAgICk7XG4gIH1cblxuICAvLyAqKiBhZGQge2xvbmxhdH0gZmllbGQgdG8gZXZlbnQgXG4gIHByaXZhdGUgYXVnbWVudFBvaW50ZXJFdmVudChldmVudDogTWFwQnJvd3NlckV2ZW50KSB7XG4gICAgcmV0dXJuIE9iamVjdC5hc3NpZ24oZXZlbnQsIHsgbG9ubGF0OiB0b0xvbkxhdChldmVudC5jb29yZGluYXRlKSB9KTtcbiAgfVxuXG4gIHByaXZhdGUgZW1pdFBvc3RDb21wb3NlRXZlbnQgPSAoZXZlbnQ6IFJlbmRlckV2ZW50KSA9PiB0aGlzLm1hcFBvc3RDb21wb3NlLmVtaXQoZXZlbnQpO1xuICBwcml2YXRlIGVtaXRQb3N0UmVuZGVyRXZlbnQgPSAoZXZlbnQ6IE1hcEV2ZW50KSA9PiB0aGlzLm1hcFBvc3RSZW5kZXIuZW1pdChldmVudCk7XG4gIHByaXZhdGUgZW1pdFByZUNvbXBvc2VFdmVudCA9IChldmVudDogUmVuZGVyRXZlbnQpID0+IHRoaXMubWFwUHJlQ29tcG9zZS5lbWl0KGV2ZW50KTtcbiAgcHJpdmF0ZSBlbWl0UHJvcGVydHlDaGFuZ2VFdmVudCA9IChldmVudDogT2JqZWN0RXZlbnQpID0+IHRoaXMubWFwUHJvcGVydHlDaGFuZ2UuZW1pdChldmVudCk7XG5cbiAgcHJpdmF0ZSB1cGRhdGVTaXplVGhyb3R0bGUgPSAoKSA9PiB7XG4gICAgY2xlYXJUaW1lb3V0KHRoaXMudGltZW91dElkKTtcbiAgICB0aGlzLnRpbWVvdXRJZCA9IHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgdGhpcy5tYXAudXBkYXRlU2l6ZSgpO1xuICAgIH0sIDEwMCk7XG4gIH1cblxufVxuIl19
|
|
@@ -1,70 +0,0 @@
|
|
|
1
|
-
import { Injectable } from '@angular/core';
|
|
2
|
-
import { get as getProj } from 'ol/proj';
|
|
3
|
-
import { register } from 'ol/proj/proj4.js';
|
|
4
|
-
import proj4 from 'proj4';
|
|
5
|
-
import * as i0 from "@angular/core";
|
|
6
|
-
export class MapService {
|
|
7
|
-
constructor() {
|
|
8
|
-
this.maps = [];
|
|
9
|
-
}
|
|
10
|
-
/**
|
|
11
|
-
* Retrieves all the maps
|
|
12
|
-
*/
|
|
13
|
-
getMaps() {
|
|
14
|
-
return this.maps;
|
|
15
|
-
}
|
|
16
|
-
/**
|
|
17
|
-
* Returns a map object from the maps array
|
|
18
|
-
*/
|
|
19
|
-
getMapById(id) {
|
|
20
|
-
let map = null;
|
|
21
|
-
for (let i = 0; i < this.maps.length; i++) {
|
|
22
|
-
if (this.maps[i].getTarget() === id) {
|
|
23
|
-
map = this.maps[i];
|
|
24
|
-
break;
|
|
25
|
-
}
|
|
26
|
-
}
|
|
27
|
-
return map;
|
|
28
|
-
}
|
|
29
|
-
getLayerByKey(key, value) {
|
|
30
|
-
let tl;
|
|
31
|
-
this.maps.forEach(map => {
|
|
32
|
-
map.getLayers().forEach(layer => {
|
|
33
|
-
if (layer.get(key) === value) {
|
|
34
|
-
tl = layer;
|
|
35
|
-
}
|
|
36
|
-
});
|
|
37
|
-
});
|
|
38
|
-
return tl;
|
|
39
|
-
}
|
|
40
|
-
addMap(map) {
|
|
41
|
-
this.maps.push(map);
|
|
42
|
-
}
|
|
43
|
-
updateSize() {
|
|
44
|
-
this.maps.forEach(map => {
|
|
45
|
-
map.updateSize();
|
|
46
|
-
});
|
|
47
|
-
}
|
|
48
|
-
addProj4(epsg, proj4Def, extent) {
|
|
49
|
-
let projection = getProj(epsg);
|
|
50
|
-
if (!projection) {
|
|
51
|
-
proj4.defs(epsg, proj4Def);
|
|
52
|
-
register(proj4);
|
|
53
|
-
projection = getProj(epsg);
|
|
54
|
-
if (extent) {
|
|
55
|
-
projection.setExtent(extent);
|
|
56
|
-
}
|
|
57
|
-
}
|
|
58
|
-
if (!projection) {
|
|
59
|
-
console.error(`Failed to register ${epsg} projection in OpenLayers`);
|
|
60
|
-
}
|
|
61
|
-
}
|
|
62
|
-
}
|
|
63
|
-
MapService.ɵprov = i0.ɵɵdefineInjectable({ factory: function MapService_Factory() { return new MapService(); }, token: MapService, providedIn: "root" });
|
|
64
|
-
MapService.decorators = [
|
|
65
|
-
{ type: Injectable, args: [{
|
|
66
|
-
providedIn: 'root'
|
|
67
|
-
},] }
|
|
68
|
-
];
|
|
69
|
-
MapService.ctorParameters = () => [];
|
|
70
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFwLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9mYi1vcGVubGF5ZXJzL3NyYy9saWIvbWFwLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFVBQVUsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUl6QyxPQUFPLEVBQUMsR0FBRyxJQUFJLE9BQU8sRUFBQyxNQUFNLFNBQVMsQ0FBQztBQUN2QyxPQUFPLEVBQUMsUUFBUSxFQUFDLE1BQU0sa0JBQWtCLENBQUM7QUFDMUMsT0FBTyxLQUFLLE1BQU0sT0FBTyxDQUFDOztBQUsxQixNQUFNLE9BQU8sVUFBVTtJQUduQjtRQUNJLElBQUksQ0FBQyxJQUFJLEdBQUcsRUFBRSxDQUFDO0lBQ25CLENBQUM7SUFFRDs7T0FFRztJQUNILE9BQU87UUFDSCxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUM7SUFDckIsQ0FBQztJQUVEOztPQUVHO0lBQ0gsVUFBVSxDQUFDLEVBQVU7UUFDakIsSUFBSSxHQUFHLEdBQVEsSUFBSSxDQUFDO1FBQ3BCLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRTtZQUN2QyxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxFQUFFLEtBQUssRUFBRSxFQUFFO2dCQUNqQyxHQUFHLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztnQkFDbkIsTUFBTTthQUNUO1NBQ0o7UUFDRCxPQUFPLEdBQUcsQ0FBQztJQUNmLENBQUM7SUFFRCxhQUFhLENBQUMsR0FBVyxFQUFFLEtBQWE7UUFDcEMsSUFBSSxFQUFhLENBQUM7UUFDbEIsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEVBQUU7WUFDcEIsR0FBRyxDQUFDLFNBQVMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsRUFBRTtnQkFDaEMsSUFBSSxLQUFLLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLEtBQUssRUFBRTtvQkFDMUIsRUFBRSxHQUFFLEtBQUssQ0FBQztpQkFDYjtZQUNELENBQUMsQ0FBQyxDQUFDO1FBQ1AsQ0FBQyxDQUFDLENBQUM7UUFDSCxPQUFPLEVBQUUsQ0FBQztJQUNkLENBQUM7SUFFRCxNQUFNLENBQUMsR0FBUTtRQUNYLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ3hCLENBQUM7SUFFRCxVQUFVO1FBQ04sSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEVBQUU7WUFDcEIsR0FBRyxDQUFDLFVBQVUsRUFBRSxDQUFDO1FBQ3JCLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVELFFBQVEsQ0FBQyxJQUFZLEVBQUUsUUFBZ0IsRUFBRSxNQUFZO1FBQ2pELElBQUksVUFBVSxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUMvQixJQUFJLENBQUMsVUFBVSxFQUFFO1lBQ2IsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsUUFBUSxDQUFDLENBQUM7WUFDM0IsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ2hCLFVBQVUsR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDM0IsSUFBSSxNQUFNLEVBQUU7Z0JBQ1IsVUFBVSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQzthQUNoQztTQUNKO1FBQ0QsSUFBSSxDQUFDLFVBQVUsRUFBRTtZQUNiLE9BQU8sQ0FBQyxLQUFLLENBQUMsc0JBQXNCLElBQUksMkJBQTJCLENBQUMsQ0FBQztTQUN4RTtJQUNMLENBQUM7Ozs7WUFsRUosVUFBVSxTQUFDO2dCQUNSLFVBQVUsRUFBRSxNQUFNO2FBQ3JCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtJbmplY3RhYmxlfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7TWFwfSBmcm9tICdvbCc7XG5pbXBvcnQgeyBMYXllciB9IGZyb20gJ29sL2xheWVyJztcbmltcG9ydCBCYXNlTGF5ZXIgZnJvbSAnb2wvbGF5ZXIvQmFzZSdcbmltcG9ydCB7Z2V0IGFzIGdldFByb2p9IGZyb20gJ29sL3Byb2onO1xuaW1wb3J0IHtyZWdpc3Rlcn0gZnJvbSAnb2wvcHJvai9wcm9qNC5qcyc7XG5pbXBvcnQgcHJvajQgZnJvbSAncHJvajQnO1xuXG5ASW5qZWN0YWJsZSh7XG4gICAgcHJvdmlkZWRJbjogJ3Jvb3QnXG59KVxuZXhwb3J0IGNsYXNzIE1hcFNlcnZpY2Uge1xuICAgIG1hcHM6IE1hcFtdO1xuXG4gICAgY29uc3RydWN0b3IoKSB7XG4gICAgICAgIHRoaXMubWFwcyA9IFtdO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJldHJpZXZlcyBhbGwgdGhlIG1hcHNcbiAgICAgKi9cbiAgICBnZXRNYXBzKCk6IE1hcFtdIHtcbiAgICAgICAgcmV0dXJuIHRoaXMubWFwcztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZXR1cm5zIGEgbWFwIG9iamVjdCBmcm9tIHRoZSBtYXBzIGFycmF5XG4gICAgICovXG4gICAgZ2V0TWFwQnlJZChpZDogc3RyaW5nKTogTWFwIHtcbiAgICAgICAgbGV0IG1hcDogTWFwID0gbnVsbDtcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLm1hcHMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIGlmICh0aGlzLm1hcHNbaV0uZ2V0VGFyZ2V0KCkgPT09IGlkKSB7XG4gICAgICAgICAgICAgICAgbWFwID0gdGhpcy5tYXBzW2ldO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBtYXA7XG4gICAgfVxuXG4gICAgZ2V0TGF5ZXJCeUtleShrZXk6IHN0cmluZywgdmFsdWU6IHN0cmluZyk6IEJhc2VMYXllciB7XG4gICAgICAgIGxldCB0bDogQmFzZUxheWVyO1xuICAgICAgICB0aGlzLm1hcHMuZm9yRWFjaChtYXAgPT4ge1xuICAgICAgICAgICAgbWFwLmdldExheWVycygpLmZvckVhY2gobGF5ZXIgPT4ge1xuICAgICAgICAgICAgaWYgKGxheWVyLmdldChrZXkpID09PSB2YWx1ZSkge1xuICAgICAgICAgICAgICAgIHRsPSBsYXllcjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIHRsO1xuICAgIH1cblxuICAgIGFkZE1hcChtYXA6IE1hcCk6IHZvaWQge1xuICAgICAgICB0aGlzLm1hcHMucHVzaChtYXApO1xuICAgIH1cblxuICAgIHVwZGF0ZVNpemUoKSB7XG4gICAgICAgIHRoaXMubWFwcy5mb3JFYWNoKG1hcCA9PiB7XG4gICAgICAgICAgICBtYXAudXBkYXRlU2l6ZSgpO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBhZGRQcm9qNChlcHNnOiBzdHJpbmcsIHByb2o0RGVmOiBzdHJpbmcsIGV4dGVudD86IGFueSkge1xuICAgICAgICBsZXQgcHJvamVjdGlvbiA9IGdldFByb2ooZXBzZyk7XG4gICAgICAgIGlmICghcHJvamVjdGlvbikge1xuICAgICAgICAgICAgcHJvajQuZGVmcyhlcHNnLCBwcm9qNERlZik7XG4gICAgICAgICAgICByZWdpc3Rlcihwcm9qNCk7XG4gICAgICAgICAgICBwcm9qZWN0aW9uID0gZ2V0UHJvaihlcHNnKTtcbiAgICAgICAgICAgIGlmIChleHRlbnQpIHtcbiAgICAgICAgICAgICAgICBwcm9qZWN0aW9uLnNldEV4dGVudChleHRlbnQpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmICghcHJvamVjdGlvbikge1xuICAgICAgICAgICAgY29uc29sZS5lcnJvcihgRmFpbGVkIHRvIHJlZ2lzdGVyICR7ZXBzZ30gcHJvamVjdGlvbiBpbiBPcGVuTGF5ZXJzYCk7XG4gICAgICAgIH1cbiAgICB9XG5cbn1cbiJdfQ==
|
|
@@ -1,37 +0,0 @@
|
|
|
1
|
-
/* enum types */
|
|
2
|
-
export var LayerType;
|
|
3
|
-
(function (LayerType) {
|
|
4
|
-
LayerType[LayerType["IMAGE"] = 0] = "IMAGE";
|
|
5
|
-
LayerType[LayerType["TILE"] = 1] = "TILE";
|
|
6
|
-
LayerType[LayerType["VECTOR_TILE"] = 2] = "VECTOR_TILE";
|
|
7
|
-
LayerType[LayerType["VECTOR"] = 3] = "VECTOR";
|
|
8
|
-
})(LayerType || (LayerType = {}));
|
|
9
|
-
export var SourceType;
|
|
10
|
-
(function (SourceType) {
|
|
11
|
-
SourceType[SourceType["BINGMAPS"] = 0] = "BINGMAPS";
|
|
12
|
-
SourceType[SourceType["CARTODB"] = 1] = "CARTODB";
|
|
13
|
-
SourceType[SourceType["CLUSTER"] = 2] = "CLUSTER";
|
|
14
|
-
SourceType[SourceType["IMAGE"] = 3] = "IMAGE";
|
|
15
|
-
SourceType[SourceType["IMAGEARCGISREST"] = 4] = "IMAGEARCGISREST";
|
|
16
|
-
SourceType[SourceType["IMAGECANVAS"] = 5] = "IMAGECANVAS";
|
|
17
|
-
SourceType[SourceType["IMAGEMAPGUIDE"] = 6] = "IMAGEMAPGUIDE";
|
|
18
|
-
SourceType[SourceType["IMAGESTATIC"] = 7] = "IMAGESTATIC";
|
|
19
|
-
SourceType[SourceType["IMAGEVECTOR"] = 8] = "IMAGEVECTOR";
|
|
20
|
-
SourceType[SourceType["IMAGEWMS"] = 9] = "IMAGEWMS";
|
|
21
|
-
SourceType[SourceType["OSM"] = 10] = "OSM";
|
|
22
|
-
SourceType[SourceType["RASTER"] = 11] = "RASTER";
|
|
23
|
-
SourceType[SourceType["STAMEN"] = 12] = "STAMEN";
|
|
24
|
-
SourceType[SourceType["TILEARCGISREST"] = 13] = "TILEARCGISREST";
|
|
25
|
-
SourceType[SourceType["TILEDEBUG"] = 14] = "TILEDEBUG";
|
|
26
|
-
SourceType[SourceType["TILEIMAGE"] = 15] = "TILEIMAGE";
|
|
27
|
-
SourceType[SourceType["TILEJSON"] = 16] = "TILEJSON";
|
|
28
|
-
SourceType[SourceType["TILEUTFGRID"] = 17] = "TILEUTFGRID";
|
|
29
|
-
SourceType[SourceType["TILEWMS"] = 18] = "TILEWMS";
|
|
30
|
-
SourceType[SourceType["URLTILE"] = 19] = "URLTILE";
|
|
31
|
-
SourceType[SourceType["VECTOR"] = 20] = "VECTOR";
|
|
32
|
-
SourceType[SourceType["VECTORTILE"] = 21] = "VECTORTILE";
|
|
33
|
-
SourceType[SourceType["WMTS"] = 22] = "WMTS";
|
|
34
|
-
SourceType[SourceType["XYZ"] = 23] = "XYZ";
|
|
35
|
-
SourceType[SourceType["ZOOMIFY"] = 24] = "ZOOMIFY";
|
|
36
|
-
})(SourceType || (SourceType = {}));
|
|
37
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kZWxzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvZmItb3BlbmxheWVycy9zcmMvbGliL21vZGVscy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFHQSxnQkFBZ0I7QUFFaEIsTUFBTSxDQUFOLElBQVksU0FFWDtBQUZELFdBQVksU0FBUztJQUNuQiwyQ0FBSyxDQUFBO0lBQUUseUNBQUksQ0FBQTtJQUFFLHVEQUFXLENBQUE7SUFBRSw2Q0FBTSxDQUFBO0FBQ2xDLENBQUMsRUFGVyxTQUFTLEtBQVQsU0FBUyxRQUVwQjtBQUVELE1BQU0sQ0FBTixJQUFZLFVBMEJYO0FBMUJELFdBQVksVUFBVTtJQUNwQixtREFBUSxDQUFBO0lBQ1IsaURBQU8sQ0FBQTtJQUNQLGlEQUFPLENBQUE7SUFDUCw2Q0FBSyxDQUFBO0lBQ0wsaUVBQWUsQ0FBQTtJQUNmLHlEQUFXLENBQUE7SUFDWCw2REFBYSxDQUFBO0lBQ2IseURBQVcsQ0FBQTtJQUNYLHlEQUFXLENBQUE7SUFDWCxtREFBUSxDQUFBO0lBQ1IsMENBQUcsQ0FBQTtJQUNILGdEQUFNLENBQUE7SUFDTixnREFBTSxDQUFBO0lBQ04sZ0VBQWMsQ0FBQTtJQUNkLHNEQUFTLENBQUE7SUFDVCxzREFBUyxDQUFBO0lBQ1Qsb0RBQVEsQ0FBQTtJQUNSLDBEQUFXLENBQUE7SUFDWCxrREFBTyxDQUFBO0lBQ1Asa0RBQU8sQ0FBQTtJQUNQLGdEQUFNLENBQUE7SUFDTix3REFBVSxDQUFBO0lBQ1YsNENBQUksQ0FBQTtJQUNKLDBDQUFHLENBQUE7SUFDSCxrREFBTyxDQUFBO0FBQ1QsQ0FBQyxFQTFCVyxVQUFVLEtBQVYsVUFBVSxRQTBCckIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge01hcH0gZnJvbSAnb2wnO1xuaW1wb3J0IHtNYXBTZXJ2aWNlfSBmcm9tICcuL21hcC5zZXJ2aWNlJztcblxuLyogZW51bSB0eXBlcyAqL1xuXG5leHBvcnQgZW51bSBMYXllclR5cGUge1xuICBJTUFHRSwgVElMRSwgVkVDVE9SX1RJTEUsIFZFQ1RPUlxufVxuXG5leHBvcnQgZW51bSBTb3VyY2VUeXBlIHtcbiAgQklOR01BUFMsXG4gIENBUlRPREIsXG4gIENMVVNURVIsXG4gIElNQUdFLFxuICBJTUFHRUFSQ0dJU1JFU1QsXG4gIElNQUdFQ0FOVkFTLFxuICBJTUFHRU1BUEdVSURFLFxuICBJTUFHRVNUQVRJQyxcbiAgSU1BR0VWRUNUT1IsXG4gIElNQUdFV01TLFxuICBPU00sXG4gIFJBU1RFUixcbiAgU1RBTUVOLFxuICBUSUxFQVJDR0lTUkVTVCxcbiAgVElMRURFQlVHLFxuICBUSUxFSU1BR0UsXG4gIFRJTEVKU09OLFxuICBUSUxFVVRGR1JJRCxcbiAgVElMRVdNUyxcbiAgVVJMVElMRSxcbiAgVkVDVE9SLFxuICBWRUNUT1JUSUxFLFxuICBXTVRTLFxuICBYWVosXG4gIFpPT01JRlksXG59XG5cbi8qIGludGVyZmFjZSB0eXBlcyAqL1xuZXhwb3J0IHR5cGUgQ29vcmRpbmF0ZSA9IFtudW1iZXIsIG51bWJlciwgbnVtYmVyP107XG5cbmV4cG9ydCB0eXBlIEV4dGVudCA9IFtudW1iZXIsIG51bWJlciwgbnVtYmVyLCBudW1iZXJdO1xuXG5leHBvcnQgaW50ZXJmYWNlIE1hcFJlYWR5RXZlbnQge1xuICAgIG1hcDogTWFwO1xuICAgIG1hcFNlcnZpY2U6IE1hcFNlcnZpY2U7XG59XG4iXX0=
|
|
@@ -1,116 +0,0 @@
|
|
|
1
|
-
import { ChangeDetectionStrategy, ChangeDetectorRef, Component, Input, Output } from '@angular/core';
|
|
2
|
-
import { Feature } from 'ol';
|
|
3
|
-
import VectorLayer from 'ol/layer/Vector';
|
|
4
|
-
import VectorSource from 'ol/source/Vector';
|
|
5
|
-
import { Style, Stroke, Fill } from 'ol/style';
|
|
6
|
-
import { Circle } from 'ol/geom';
|
|
7
|
-
import { fromLonLat } from 'ol/proj';
|
|
8
|
-
import { MapComponent } from '../map.component';
|
|
9
|
-
import { mapifyRadius } from '../util';
|
|
10
|
-
import { AsyncSubject } from 'rxjs';
|
|
11
|
-
// ** Freeboard Arrival Circle component **
|
|
12
|
-
export class ArrivalCircleComponent {
|
|
13
|
-
constructor(changeDetectorRef, mapComponent) {
|
|
14
|
-
this.changeDetectorRef = changeDetectorRef;
|
|
15
|
-
this.mapComponent = mapComponent;
|
|
16
|
-
/**
|
|
17
|
-
* This event is triggered after the layer is initialized
|
|
18
|
-
* Use this to have access to the layer and some helper functions
|
|
19
|
-
*/
|
|
20
|
-
this.layerReady = new AsyncSubject(); // AsyncSubject will only store the last value, and only publish it when the sequence is completed
|
|
21
|
-
this.mapifiedLine = [];
|
|
22
|
-
this.changeDetectorRef.detach();
|
|
23
|
-
}
|
|
24
|
-
ngOnInit() {
|
|
25
|
-
this.parseValues();
|
|
26
|
-
this.source = new VectorSource({ features: this.features });
|
|
27
|
-
this.layer = new VectorLayer(Object.assign(this, Object.assign({}, this.layerProperties)));
|
|
28
|
-
const map = this.mapComponent.getMap();
|
|
29
|
-
if (this.layer && map) {
|
|
30
|
-
map.addLayer(this.layer);
|
|
31
|
-
map.render();
|
|
32
|
-
this.layerReady.next(this.layer);
|
|
33
|
-
this.layerReady.complete();
|
|
34
|
-
}
|
|
35
|
-
}
|
|
36
|
-
ngOnChanges(changes) {
|
|
37
|
-
if (this.layer) {
|
|
38
|
-
const properties = {};
|
|
39
|
-
for (const key in changes) {
|
|
40
|
-
if (key == 'position' || key == 'radius') {
|
|
41
|
-
this.parseValues();
|
|
42
|
-
if (this.source) {
|
|
43
|
-
this.source.clear();
|
|
44
|
-
this.source.addFeatures(this.features);
|
|
45
|
-
}
|
|
46
|
-
}
|
|
47
|
-
else if (key == 'layerProperties') {
|
|
48
|
-
this.layer.setProperties(properties, false);
|
|
49
|
-
}
|
|
50
|
-
else {
|
|
51
|
-
properties[key] = changes[key].currentValue;
|
|
52
|
-
}
|
|
53
|
-
}
|
|
54
|
-
this.layer.setProperties(properties, false);
|
|
55
|
-
}
|
|
56
|
-
}
|
|
57
|
-
ngOnDestroy() {
|
|
58
|
-
const map = this.mapComponent.getMap();
|
|
59
|
-
if (this.layer && map) {
|
|
60
|
-
map.removeLayer(this.layer);
|
|
61
|
-
map.render();
|
|
62
|
-
this.layer = null;
|
|
63
|
-
}
|
|
64
|
-
}
|
|
65
|
-
parseValues() {
|
|
66
|
-
let fa = [];
|
|
67
|
-
let f = new Feature({
|
|
68
|
-
geometry: new Circle(fromLonLat(this.position), mapifyRadius(this.radius, this.position))
|
|
69
|
-
});
|
|
70
|
-
f.setStyle(this.buildStyle());
|
|
71
|
-
fa.push(f);
|
|
72
|
-
this.features = fa;
|
|
73
|
-
}
|
|
74
|
-
// build target style
|
|
75
|
-
buildStyle() {
|
|
76
|
-
let cs;
|
|
77
|
-
if (this.layerProperties && this.layerProperties.style) {
|
|
78
|
-
cs = this.layerProperties.style;
|
|
79
|
-
}
|
|
80
|
-
else { // default style
|
|
81
|
-
cs = new Style({
|
|
82
|
-
fill: new Fill({ color: 'rgba(255, 255, 255, .1)' }),
|
|
83
|
-
stroke: new Stroke({
|
|
84
|
-
color: 'rgba(242, 153, 10, 1)',
|
|
85
|
-
width: 2,
|
|
86
|
-
lineDash: [5, 5]
|
|
87
|
-
})
|
|
88
|
-
});
|
|
89
|
-
}
|
|
90
|
-
return cs;
|
|
91
|
-
}
|
|
92
|
-
}
|
|
93
|
-
ArrivalCircleComponent.decorators = [
|
|
94
|
-
{ type: Component, args: [{
|
|
95
|
-
selector: 'ol-map > fb-arrival-circle',
|
|
96
|
-
template: '<ng-content></ng-content>',
|
|
97
|
-
changeDetection: ChangeDetectionStrategy.OnPush
|
|
98
|
-
},] }
|
|
99
|
-
];
|
|
100
|
-
ArrivalCircleComponent.ctorParameters = () => [
|
|
101
|
-
{ type: ChangeDetectorRef },
|
|
102
|
-
{ type: MapComponent }
|
|
103
|
-
];
|
|
104
|
-
ArrivalCircleComponent.propDecorators = {
|
|
105
|
-
layerReady: [{ type: Output }],
|
|
106
|
-
position: [{ type: Input }],
|
|
107
|
-
radius: [{ type: Input }],
|
|
108
|
-
opacity: [{ type: Input }],
|
|
109
|
-
visible: [{ type: Input }],
|
|
110
|
-
extent: [{ type: Input }],
|
|
111
|
-
zIndex: [{ type: Input }],
|
|
112
|
-
minResolution: [{ type: Input }],
|
|
113
|
-
maxResolution: [{ type: Input }],
|
|
114
|
-
layerProperties: [{ type: Input }]
|
|
115
|
-
};
|
|
116
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGF5ZXItYXJyaXZhbC1jaXJjbGUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZmItb3BlbmxheWVycy9zcmMvbGliL25hdmlnYXRpb24vbGF5ZXItYXJyaXZhbC1jaXJjbGUuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCx1QkFBdUIsRUFBRSxpQkFBaUIsRUFDMUMsU0FBUyxFQUNULEtBQUssRUFJTCxNQUFNLEVBRVAsTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLElBQUksQ0FBQztBQUM3QixPQUFPLFdBQVcsTUFBTSxpQkFBaUIsQ0FBQztBQUMxQyxPQUFPLFlBQVksTUFBTSxrQkFBa0IsQ0FBQztBQUM1QyxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFDL0MsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLFNBQVMsQ0FBQztBQUNqQyxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sU0FBUyxDQUFDO0FBQ3JDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUVoRCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sU0FBUyxDQUFDO0FBQ3ZDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFHcEMsMkNBQTJDO0FBTTNDLE1BQU0sT0FBTyxzQkFBc0I7SUF5QmpDLFlBQXNCLGlCQUFvQyxFQUNwQyxZQUEwQjtRQUQxQixzQkFBaUIsR0FBakIsaUJBQWlCLENBQW1CO1FBQ3BDLGlCQUFZLEdBQVosWUFBWSxDQUFjO1FBcEJoRDs7O1dBR0c7UUFDTyxlQUFVLEdBQXdCLElBQUksWUFBWSxFQUFFLENBQUMsQ0FBQyxrR0FBa0c7UUFhM0osaUJBQVksR0FBcUIsRUFBRSxDQUFDO1FBSXpDLElBQUksQ0FBQyxpQkFBaUIs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Q0FBQztRQUNkLElBQUcsSUFBSSxDQUFDLGVBQWUsSUFBSSxJQUFJLENBQUMsZUFBZSxDQUFDLEtBQUssRUFBRTtZQUNyRCxFQUFFLEdBQUUsSUFBSSxDQUFDLGVBQWUsQ0FBQyxLQUFLLENBQUE7U0FDL0I7YUFDSSxFQUFFLGdCQUFnQjtZQUNyQixFQUFFLEdBQUUsSUFBSSxLQUFLLENBQUM7Z0JBQ1osSUFBSSxFQUFFLElBQUksSUFBSSxDQUFDLEVBQUUsS0FBSyxFQUFFLHlCQUF5QixFQUFFLENBQUM7Z0JBQ3BELE1BQU0sRUFBRSxJQUFJLE1BQU0sQ0FBQztvQkFDakIsS0FBSyxFQUFFLHVCQUF1QjtvQkFDOUIsS0FBSyxFQUFFLENBQUM7b0JBQ1IsUUFBUSxFQUFFLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQztpQkFDaEIsQ0FBQzthQUNILENBQUMsQ0FBQztTQUNKO1FBQ0QsT0FBTyxFQUFFLENBQUE7SUFDWCxDQUFDOzs7WUE3R0YsU0FBUyxTQUFDO2dCQUNULFFBQVEsRUFBRSw0QkFBNEI7Z0JBQ3RDLFFBQVEsRUFBRSwyQkFBMkI7Z0JBQ3JDLGVBQWUsRUFBRSx1QkFBdUIsQ0FBQyxNQUFNO2FBQ2hEOzs7WUEzQjBCLGlCQUFpQjtZQWdCbkMsWUFBWTs7O3lCQXNCbEIsTUFBTTt1QkFFTixLQUFLO3FCQUNOLEtBQUs7c0JBQ0osS0FBSztzQkFDTCxLQUFLO3FCQUNMLEtBQUs7cUJBQ0wsS0FBSzs0QkFDTCxLQUFLOzRCQUNMLEtBQUs7OEJBQ0wsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDaGFuZ2VEZXRlY3RvclJlZixcbiAgQ29tcG9uZW50LFxuICBJbnB1dCxcbiAgT25DaGFuZ2VzLFxuICBPbkRlc3Ryb3ksXG4gIE9uSW5pdCxcbiAgT3V0cHV0LFxuICBTaW1wbGVDaGFuZ2VzXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTGF5ZXIgfSBmcm9tICdvbC9sYXllcic7XG5pbXBvcnQgeyBGZWF0dXJlIH0gZnJvbSAnb2wnO1xuaW1wb3J0IFZlY3RvckxheWVyIGZyb20gJ29sL2xheWVyL1ZlY3Rvcic7XG5pbXBvcnQgVmVjdG9yU291cmNlIGZyb20gJ29sL3NvdXJjZS9WZWN0b3InO1xuaW1wb3J0IHsgU3R5bGUsIFN0cm9rZSwgRmlsbCB9IGZyb20gJ29sL3N0eWxlJztcbmltcG9ydCB7IENpcmNsZSB9IGZyb20gJ29sL2dlb20nO1xuaW1wb3J0IHsgZnJvbUxvbkxhdCB9IGZyb20gJ29sL3Byb2onO1xuaW1wb3J0IHsgTWFwQ29tcG9uZW50IH0gZnJvbSAnLi4vbWFwLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBFeHRlbnQsIENvb3JkaW5hdGUgfSBmcm9tICcuLi9tb2RlbHMnO1xuaW1wb3J0IHsgbWFwaWZ5UmFkaXVzIH0gZnJvbSAnLi4vdXRpbCc7XG5pbXBvcnQgeyBBc3luY1N1YmplY3QgfSBmcm9tICdyeGpzJztcblxuXG4vLyAqKiBGcmVlYm9hcmQgQXJyaXZhbCBDaXJjbGUgY29tcG9uZW50ICoqXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdvbC1tYXAgPiBmYi1hcnJpdmFsLWNpcmNsZScsXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PicsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoXG59KVxuZXhwb3J0IGNsYXNzIEFycml2YWxDaXJjbGVDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSwgT25DaGFuZ2VzIHtcblxuICBwcm90ZWN0ZWQgbGF5ZXI6IExheWVyO1xuICBwdWJsaWMgc291cmNlOiBWZWN0b3JTb3VyY2U7XG4gIHByb3RlY3RlZCBmZWF0dXJlczogQXJyYXk8RmVhdHVyZT47XG5cbiAgLyoqXG4gICAqIFRoaXMgZXZlbnQgaXMgdHJpZ2dlcmVkIGFmdGVyIHRoZSBsYXllciBpcyBpbml0aWFsaXplZFxuICAgKiBVc2UgdGhpcyB0byBoYXZlIGFjY2VzcyB0byB0aGUgbGF5ZXIgYW5kIHNvbWUgaGVscGVyIGZ1bmN0aW9uc1xuICAgKi9cbiAgQE91dHB1dCgpIGxheWVyUmVhZHk6IEFzeW5jU3ViamVjdDxMYXllcj4gPSBuZXcgQXN5bmNTdWJqZWN0KCk7IC8vIEFzeW5jU3ViamVjdCB3aWxsIG9ubHkgc3RvcmUgdGhlIGxhc3QgdmFsdWUsIGFuZCBvbmx5IHB1Ymxpc2ggaXQgd2hlbiB0aGUgc2VxdWVuY2UgaXMgY29tcGxldGVkXG5cbiAgQElucHV0KCkgcG9zaXRpb246IENvb3JkaW5hdGU7XG5cdEBJbnB1dCgpIHJhZGl1czogbnVtYmVyO1xuICBASW5wdXQoKSBvcGFjaXR5OiBudW1iZXI7XG4gIEBJbnB1dCgpIHZpc2libGU6IGJvb2xlYW47XG4gIEBJbnB1dCgpIGV4dGVudDogRXh0ZW50O1xuICBASW5wdXQoKSB6SW5kZXg6IG51bWJlcjtcbiAgQElucHV0KCkgbWluUmVzb2x1dGlvbjogbnVtYmVyO1xuICBASW5wdXQoKSBtYXhSZXNvbHV0aW9uOiBudW1iZXI7XG4gIEBJbnB1dCgpIGxheWVyUHJvcGVydGllczogeyBbaW5kZXg6IHN0cmluZ106IGFueSB9O1xuXG5cbiAgcHVibGljIG1hcGlmaWVkTGluZTogQXJyYXk8Q29vcmRpbmF0ZT49IFtdO1xuICBcbiAgY29uc3RydWN0b3IocHJvdGVjdGVkIGNoYW5nZURldGVjdG9yUmVmOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICAgICAgICAgICAgcHJvdGVjdGVkIG1hcENvbXBvbmVudDogTWFwQ29tcG9uZW50KSB7XG4gICAgdGhpcy5jaGFuZ2VEZXRlY3RvclJlZi5kZXRhY2goKTtcbiAgfVxuXG4gIG5nT25Jbml0KCkge1xuICAgIHRoaXMucGFyc2VWYWx1ZXMoKTtcbiAgICB0aGlzLnNvdXJjZSA9IG5ldyBWZWN0b3JTb3VyY2Uoe2ZlYXR1cmVzOiB0aGlzLmZlYXR1cmVzfSk7XG4gICAgdGhpcy5sYXllciA9IG5ldyBWZWN0b3JMYXllcihPYmplY3QuYXNzaWduKHRoaXMsIHsuLi50aGlzLmxheWVyUHJvcGVydGllc30pKTtcblxuICAgIGNvbnN0IG1hcCA9IHRoaXMubWFwQ29tcG9uZW50LmdldE1hcCgpO1xuICAgIGlmKHRoaXMubGF5ZXIgJiYgbWFwKSB7XG4gICAgICBtYXAuYWRkTGF5ZXIodGhpcy5sYXllcik7XG4gICAgICBtYXAucmVuZGVyKCk7XG4gICAgICB0aGlzLmxheWVyUmVhZHkubmV4dCh0aGlzLmxheWVyKTtcbiAgICAgIHRoaXMubGF5ZXJSZWFkeS5jb21wbGV0ZSgpO1xuICAgIH1cblxuICB9XG5cbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcykge1xuICAgIGlmKHRoaXMubGF5ZXIpIHtcbiAgICAgIGNvbnN0IHByb3BlcnRpZXM6IHsgW2luZGV4OiBzdHJpbmddOiBhbnkgfSA9IHt9O1xuXG4gICAgICBmb3IoY29uc3Qga2V5IGluIGNoYW5nZXMpIHtcbiAgICAgICAgaWYoa2V5PT0ncG9zaXRpb24nIHx8IGtleT09J3JhZGl1cycpIHtcbiAgICAgICAgICB0aGlzLnBhcnNlVmFsdWVzKCk7XG4gICAgICAgICAgaWYodGhpcy5zb3VyY2UpIHsgXG4gICAgICAgICAgICB0aGlzLnNvdXJjZS5jbGVhcigpO1xuICAgICAgICAgICAgdGhpcy5zb3VyY2UuYWRkRmVhdHVyZXModGhpcy5mZWF0dXJlcyk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYoIGtleT09J2xheWVyUHJvcGVydGllcycpIHsgXG4gICAgICAgICAgdGhpcy5sYXllci5zZXRQcm9wZXJ0aWVzKHByb3BlcnRpZXMsIGZhbHNlKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICBwcm9wZXJ0aWVzW2tleV0gPSBjaGFuZ2VzW2tleV0uY3VycmVudFZhbHVlO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICB0aGlzLmxheWVyLnNldFByb3BlcnRpZXMocHJvcGVydGllcywgZmFsc2UpO1xuICAgIH1cbiAgfVxuXG4gIG5nT25EZXN0cm95KCkge1xuICAgIGNvbnN0IG1hcCA9IHRoaXMubWFwQ29tcG9uZW50LmdldE1hcCgpO1xuICAgIGlmICh0aGlzLmxheWVyICYmIG1hcCkge1xuICAgICAgbWFwLnJlbW92ZUxheWVyKHRoaXMubGF5ZXIpO1xuICAgICAgbWFwLnJlbmRlcigpO1xuICAgICAgdGhpcy5sYXllciA9IG51bGw7XG4gICAgfVxuICB9XG5cbiAgcGFyc2VWYWx1ZXMoKSB7XG4gICAgbGV0IGZhOiBGZWF0dXJlW109IFtdO1xuICAgIGxldCBmPSBuZXcgRmVhdHVyZSh7XG4gICAgICBnZW9tZXRyeTogbmV3IENpcmNsZSggZnJvbUxvbkxhdCh0aGlzLnBvc2l0aW9uKSwgbWFwaWZ5UmFkaXVzKHRoaXMucmFkaXVzLCB0aGlzLnBvc2l0aW9uKSApXG4gICAgfSk7XG4gICAgZi5zZXRTdHlsZSh0aGlzLmJ1aWxkU3R5bGUoKSk7XG4gICAgZmEucHVzaChmKTtcbiAgICB0aGlzLmZlYXR1cmVzPSBmYTtcbiAgfVxuXG4gIC8vIGJ1aWxkIHRhcmdldCBzdHlsZVxuICBidWlsZFN0eWxlKCk6U3R5bGUge1xuICAgIGxldCBjczogU3R5bGU7XG4gICAgaWYodGhpcy5sYXllclByb3BlcnRpZXMgJiYgdGhpcy5sYXllclByb3BlcnRpZXMuc3R5bGUpIHsgXG4gICAgICBjcz0gdGhpcy5sYXllclByb3BlcnRpZXMuc3R5bGUgXG4gICAgfVxuICAgIGVsc2UgeyAvLyBkZWZhdWx0IHN0eWxlXG4gICAgICBjcz0gbmV3IFN0eWxlKHtcbiAgICAgICAgZmlsbDogbmV3IEZpbGwoeyBjb2xvcjogJ3JnYmEoMjU1LCAyNTUsIDI1NSwgLjEpJyB9KSxcbiAgICAgICAgc3Ryb2tlOiBuZXcgU3Ryb2tlKHsgXG4gICAgICAgICAgY29sb3I6ICdyZ2JhKDI0MiwgMTUzLCAxMCwgMSknLFxuICAgICAgICAgIHdpZHRoOiAyLFxuICAgICAgICAgIGxpbmVEYXNoOiBbNSw1XVxuICAgICAgICB9KVxuICAgICAgfSk7XG4gICAgfVxuICAgIHJldHVybiBjc1xuICB9XG5cbn1cbiJdfQ==
|