@acorex/cdk 18.10.6 → 18.10.8
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/esm2022/map/index.mjs +2 -1
- package/esm2022/map/map.class.mjs +90 -80
- package/esm2022/map/map.service.mjs +65 -0
- package/fesm2022/acorex-cdk-map.mjs +155 -81
- package/fesm2022/acorex-cdk-map.mjs.map +1 -1
- package/map/index.d.ts +1 -0
- package/map/map.class.d.ts +8 -6
- package/map/map.service.d.ts +12 -0
- package/package.json +7 -7
package/esm2022/map/index.mjs
CHANGED
|
@@ -1,2 +1,3 @@
|
|
|
1
1
|
export * from './map.class';
|
|
2
|
-
|
|
2
|
+
export * from './map.service';
|
|
3
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJzL2Nkay9tYXAvc3JjL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsYUFBYSxDQUFDO0FBQzVCLGNBQWMsZUFBZSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9tYXAuY2xhc3MnO1xuZXhwb3J0ICogZnJvbSAnLi9tYXAuc2VydmljZSc7XG4iXX0=
|
|
@@ -3,12 +3,13 @@ import * as L from 'leaflet';
|
|
|
3
3
|
import 'leaflet-draw';
|
|
4
4
|
import 'leaflet.locatecontrol';
|
|
5
5
|
export class AXLeafletService {
|
|
6
|
-
constructor(mapElement, location, zoom) {
|
|
6
|
+
constructor(mapElement, location, zoom = 13) {
|
|
7
7
|
this.drawnItems = new L.FeatureGroup();
|
|
8
|
+
this.eventHandlers = {};
|
|
8
9
|
this.onMarkerChanged = new EventEmitter();
|
|
9
10
|
this.onMarkerAdded = new EventEmitter();
|
|
10
11
|
this.onLocationFound = new EventEmitter();
|
|
11
|
-
|
|
12
|
+
L.Icon.Default.imagePath = 'https://unpkg.com/leaflet@1.7.1/dist/images/';
|
|
12
13
|
const map = L.map(mapElement).setView([location.latitude, location.longitude], zoom);
|
|
13
14
|
L.tileLayer('https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png', {
|
|
14
15
|
maxZoom: 18,
|
|
@@ -17,31 +18,19 @@ export class AXLeafletService {
|
|
|
17
18
|
this.drawnItems.addTo(map);
|
|
18
19
|
this.map = map;
|
|
19
20
|
}
|
|
20
|
-
setCustomIcons() {
|
|
21
|
-
// Define the paths to your custom icons
|
|
22
|
-
const iconPath = './';
|
|
23
|
-
const defaultIcon = new L.Icon({
|
|
24
|
-
iconUrl: `${iconPath}marker-icon.png`, // Custom marker icon path
|
|
25
|
-
iconSize: [25, 41], // Size of the icon
|
|
26
|
-
iconAnchor: [12, 41], // Point of the icon which will correspond to marker's location
|
|
27
|
-
shadowUrl: `${iconPath}marker-shadow.png`, // Custom marker shadow path
|
|
28
|
-
shadowSize: [41, 41], // Size of the shadow
|
|
29
|
-
shadowAnchor: [12, 41], // Point of the shadow which will correspond to marker's location
|
|
30
|
-
});
|
|
31
|
-
// Set the custom icon as the default icon
|
|
32
|
-
L.Marker.prototype.options.icon = defaultIcon;
|
|
33
|
-
}
|
|
34
21
|
getMap() {
|
|
35
22
|
return this.map;
|
|
36
23
|
}
|
|
37
24
|
setZoomLevel(zoom) {
|
|
38
|
-
this.map
|
|
25
|
+
this.map?.setZoom(zoom);
|
|
39
26
|
}
|
|
40
27
|
setCenter(location) {
|
|
41
|
-
this.map
|
|
28
|
+
if (this.map && location) {
|
|
29
|
+
this.map.setView([location.latitude, location.longitude], this.map.getZoom());
|
|
30
|
+
}
|
|
42
31
|
}
|
|
43
32
|
flyTo(location, zoom, setMarker = false, duration = 1.0) {
|
|
44
|
-
if (this.map) {
|
|
33
|
+
if (this.map && location) {
|
|
45
34
|
this.map.flyTo([location.latitude, location.longitude], zoom || this.map.getZoom(), {
|
|
46
35
|
animate: true,
|
|
47
36
|
duration: duration,
|
|
@@ -73,82 +62,103 @@ export class AXLeafletService {
|
|
|
73
62
|
});
|
|
74
63
|
}
|
|
75
64
|
addDrawControl(position = 'topleft') {
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
const
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
this.onMarkerChanged.emit(this.getMarkers());
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
this.
|
|
102
|
-
|
|
65
|
+
if (this.map) {
|
|
66
|
+
const drawControl = new L.Control.Draw({
|
|
67
|
+
position: position,
|
|
68
|
+
edit: {
|
|
69
|
+
featureGroup: this.drawnItems,
|
|
70
|
+
},
|
|
71
|
+
draw: {
|
|
72
|
+
polygon: false,
|
|
73
|
+
polyline: false,
|
|
74
|
+
rectangle: false,
|
|
75
|
+
circle: false,
|
|
76
|
+
circlemarker: false,
|
|
77
|
+
},
|
|
78
|
+
});
|
|
79
|
+
this.drawControl = drawControl;
|
|
80
|
+
this.map.addControl(drawControl);
|
|
81
|
+
const onCreated = (event) => {
|
|
82
|
+
const layer = event.layer;
|
|
83
|
+
this.drawnItems.addLayer(layer);
|
|
84
|
+
const latLng = layer.getLatLng();
|
|
85
|
+
this.onMarkerAdded.emit({ latitude: latLng.lat, longitude: latLng.lng });
|
|
86
|
+
};
|
|
87
|
+
const onDeleted = () => this.onMarkerChanged.emit(this.getMarkers());
|
|
88
|
+
const onEdited = () => this.onMarkerChanged.emit(this.getMarkers());
|
|
89
|
+
// Save handlers for later removal
|
|
90
|
+
this.eventHandlers[L.Draw.Event.CREATED] = [onCreated];
|
|
91
|
+
this.eventHandlers[L.Draw.Event.DELETED] = [onDeleted];
|
|
92
|
+
this.eventHandlers[L.Draw.Event.EDITED] = [onEdited];
|
|
93
|
+
this.map.on(L.Draw.Event.CREATED, onCreated);
|
|
94
|
+
this.map.on(L.Draw.Event.DELETED, onDeleted);
|
|
95
|
+
this.map.on(L.Draw.Event.EDITED, onEdited);
|
|
96
|
+
}
|
|
103
97
|
}
|
|
104
98
|
addLocateControl(position = 'bottomright') {
|
|
105
|
-
|
|
106
|
-
.
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
const
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
99
|
+
if (this.map) {
|
|
100
|
+
const locateControl = L.control
|
|
101
|
+
.locate({
|
|
102
|
+
position: position,
|
|
103
|
+
flyTo: true,
|
|
104
|
+
setView: 'untilPanOrZoom',
|
|
105
|
+
showPopup: true,
|
|
106
|
+
onLocationError: (e) => alert(e.message),
|
|
107
|
+
onLocationOutsideMapBounds: (control) => control.stop(),
|
|
108
|
+
locateOptions: {
|
|
109
|
+
enableHighAccuracy: true,
|
|
110
|
+
},
|
|
111
|
+
strings: {
|
|
112
|
+
title: 'Show my location',
|
|
113
|
+
popup: 'You are within {distance} meters from this point',
|
|
114
|
+
outsideMapBoundsMsg: 'You seem to be outside the map bounds',
|
|
115
|
+
},
|
|
116
|
+
})
|
|
117
|
+
.addTo(this.map);
|
|
118
|
+
this.locateControl = locateControl;
|
|
119
|
+
const onLocationFound = (event) => {
|
|
120
|
+
const location = {
|
|
121
|
+
latitude: event.latitude,
|
|
122
|
+
longitude: event.longitude,
|
|
123
|
+
precision: event.accuracy,
|
|
124
|
+
};
|
|
125
|
+
this.onLocationFound.emit(location);
|
|
129
126
|
};
|
|
130
|
-
this.onLocationFound
|
|
131
|
-
|
|
127
|
+
this.eventHandlers['locationfound'] = [onLocationFound];
|
|
128
|
+
this.map.on('locationfound', onLocationFound);
|
|
129
|
+
}
|
|
132
130
|
}
|
|
133
131
|
removeDrawControl() {
|
|
134
|
-
if (this.drawControl) {
|
|
132
|
+
if (this.map && this.drawControl) {
|
|
135
133
|
this.map.removeControl(this.drawControl);
|
|
136
134
|
this.drawnItems.clearLayers();
|
|
135
|
+
this.removeEventHandlers([L.Draw.Event.CREATED, L.Draw.Event.DELETED, L.Draw.Event.EDITED]);
|
|
137
136
|
this.drawControl = undefined;
|
|
138
|
-
this.map.off(L.Draw.Event.CREATED);
|
|
139
137
|
}
|
|
140
138
|
}
|
|
141
139
|
removeLocateControl() {
|
|
142
|
-
if (this.locateControl) {
|
|
140
|
+
if (this.map && this.locateControl) {
|
|
143
141
|
this.map.removeControl(this.locateControl);
|
|
142
|
+
this.removeEventHandlers(['locationfound']);
|
|
144
143
|
this.locateControl = undefined;
|
|
145
|
-
this.map.off('locationfound');
|
|
146
|
-
this.map.off('locationerror');
|
|
147
144
|
}
|
|
148
145
|
}
|
|
146
|
+
removeEventHandlers(events) {
|
|
147
|
+
events.forEach((event) => {
|
|
148
|
+
const handlers = this.eventHandlers[event];
|
|
149
|
+
if (handlers && this.map) {
|
|
150
|
+
handlers.forEach((handler) => this.map?.off(event, handler));
|
|
151
|
+
delete this.eventHandlers[event];
|
|
152
|
+
}
|
|
153
|
+
});
|
|
154
|
+
}
|
|
149
155
|
destroyMap() {
|
|
150
|
-
this.map
|
|
151
|
-
|
|
156
|
+
if (this.map) {
|
|
157
|
+
this.map.off();
|
|
158
|
+
this.removeEventHandlers(Object.keys(this.eventHandlers));
|
|
159
|
+
this.map.remove();
|
|
160
|
+
this.map = undefined;
|
|
161
|
+
}
|
|
152
162
|
}
|
|
153
163
|
}
|
|
154
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFwLmNsYXNzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbGlicy9jZGsvbWFwL3NyYy9tYXAuY2xhc3MudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM3QyxPQUFPLEtBQUssQ0FBQyxNQUFNLFNBQVMsQ0FBQztBQUM3QixPQUFPLGNBQWMsQ0FBQztBQUN0QixPQUFPLHVCQUF1QixDQUFDO0FBVS9CLE1BQU0sT0FBTyxnQkFBZ0I7SUFTM0IsWUFBWSxVQUF3QixFQUFFLFFBQXdCLEVBQUUsSUFBYTtRQUxyRSxlQUFVLEdBQW1CLElBQUksQ0FBQyxDQUFDLFlBQVksRUFBRSxDQUFDO1FBQ2xELG9CQUFlLEdBQUcsSUFBSSxZQUFZLEVBQW1CLENBQUM7UUFDdEQsa0JBQWEsR0FBRyxJQUFJLFlBQVksRUFBaUIsQ0FBQztRQUNsRCxvQkFBZSxHQUFHLElBQUksWUFBWSxFQUFpQixDQUFDO1FBRzFELElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQztRQUV0QixNQUFNLEdBQUcsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLFFBQVEsQ0FBQyxRQUFRLEVBQUUsUUFBUSxDQUFDLFNBQVMsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDO1FBRXJGLENBQUMsQ0FBQyxTQUFTLENBQUMsb0RBQW9ELEVBQUU7WUFDaEUsT0FBTyxFQUFFLEVBQUU7WUFDWCxXQUFXLEVBQUUsVUFBVTtTQUN4QixDQUFDLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBRWQsSUFBSSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDM0IsSUFBSSxDQUFDLEdBQUcsR0FBRyxHQUFHLENBQUM7SUFDakIsQ0FBQztJQUNPLGNBQWM7UUFDcEIsd0NBQXdDO1FBQ3hDLE1BQU0sUUFBUSxHQUFHLElB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dCI6WyJpbXBvcnQgeyBFdmVudEVtaXR0ZXIgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCAqIGFzIEwgZnJvbSAnbGVhZmxldCc7XG5pbXBvcnQgJ2xlYWZsZXQtZHJhdyc7XG5pbXBvcnQgJ2xlYWZsZXQubG9jYXRlY29udHJvbCc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgQVhNYXBMb2NhdGlvbiB7XG4gIGxhdGl0dWRlOiBudW1iZXI7XG4gIGxvbmdpdHVkZTogbnVtYmVyO1xuICBwcmVjaXNpb24/OiBudW1iZXI7XG4gIHRpdGxlPzogc3RyaW5nO1xufVxuZXhwb3J0IHR5cGUgQVhNYXBDb250cm9sUGxhY2UgPSAndG9wbGVmdCcgfCAndG9wcmlnaHQnIHwgJ2JvdHRvbWxlZnQnIHwgJ2JvdHRvbXJpZ2h0JztcblxuZXhwb3J0IGNsYXNzIEFYTGVhZmxldFNlcnZpY2Uge1xuICBwcml2YXRlIG1hcD86IEwuTWFwO1xuICBwcml2YXRlIGRyYXdDb250cm9sPzogTC5Db250cm9sLkRyYXc7XG4gIHByaXZhdGUgbG9jYXRlQ29udHJvbD86IEwuQ29udHJvbC5Mb2NhdGU7XG4gIHByaXZhdGUgZHJhd25JdGVtczogTC5GZWF0dXJlR3JvdXAgPSBuZXcgTC5GZWF0dXJlR3JvdXAoKTtcbiAgcHJpdmF0ZSBvbk1hcmtlckNoYW5nZWQgPSBuZXcgRXZlbnRFbWl0dGVyPEFYTWFwTG9jYXRpb25bXT4oKTtcbiAgcHJpdmF0ZSBvbk1hcmtlckFkZGVkID0gbmV3IEV2ZW50RW1pdHRlcjxBWE1hcExvY2F0aW9uPigpO1xuICBwcml2YXRlIG9uTG9jYXRpb25Gb3VuZCA9IG5ldyBFdmVudEVtaXR0ZXI8QVhNYXBMb2NhdGlvbj4oKTtcblxuICBjb25zdHJ1Y3RvcihtYXBFbGVtZW50PzogSFRNTEVsZW1lbnQsIGxvY2F0aW9uPzogQVhNYXBMb2NhdGlvbiwgem9vbT86IG51bWJlcikge1xuICAgIHRoaXMuc2V0Q3VzdG9tSWNvbnMoKTtcblxuICAgIGNvbnN0IG1hcCA9IEwubWFwKG1hcEVsZW1lbnQpLnNldFZpZXcoW2xvY2F0aW9uLmxhdGl0dWRlLCBsb2NhdGlvbi5sb25naXR1ZGVdLCB6b29tKTtcblxuICAgIEwudGlsZUxheWVyKCdodHRwczovL3tzfS50aWxlLm9wZW5zdHJlZXRtYXAub3JnL3t6fS97eH0ve3l9LnBuZycsIHtcbiAgICAgIG1heFpvb206IDE4LFxuICAgICAgYXR0cmlidXRpb246ICfCqSBBQ29yZVgnLFxuICAgIH0pLmFkZFRvKG1hcCk7XG5cbiAgICB0aGlzLmRyYXduSXRlbXMuYWRkVG8obWFwKTtcbiAgICB0aGlzLm1hcCA9IG1hcDtcbiAgfVxuICBwcml2YXRlIHNldEN1c3RvbUljb25zKCkge1xuICAgIC8vIERlZmluZSB0aGUgcGF0aHMgdG8geW91ciBjdXN0b20gaWNvbnNcbiAgICBjb25zdCBpY29uUGF0aCA9ICcuLyc7XG4gICAgY29uc3QgZGVmYXVsdEljb24gPSBuZXcgTC5JY29uKHtcbiAgICAgIGljb25Vcmw6IGAke2ljb25QYXRofW1hcmtlci1pY29uLnBuZ2AsIC8vIEN1c3RvbSBtYXJrZXIgaWNvbiBwYXRoXG4gICAgICBpY29uU2l6ZTogWzI1LCA0MV0sIC8vIFNpemUgb2YgdGhlIGljb25cbiAgICAgIGljb25BbmNob3I6IFsxMiwgNDFdLCAvLyBQb2ludCBvZiB0aGUgaWNvbiB3aGljaCB3aWxsIGNvcnJlc3BvbmQgdG8gbWFya2VyJ3MgbG9jYXRpb25cbiAgICAgIHNoYWRvd1VybDogYCR7aWNvblBhdGh9bWFya2VyLXNoYWRvdy5wbmdgLCAvLyBDdXN0b20gbWFya2VyIHNoYWRvdyBwYXRoXG4gICAgICBzaGFkb3dTaXplOiBbNDEsIDQxXSwgLy8gU2l6ZSBvZiB0aGUgc2hhZG93XG4gICAgICBzaGFkb3dBbmNob3I6IFsxMiwgNDFdLCAvLyBQb2ludCBvZiB0aGUgc2hhZG93IHdoaWNoIHdpbGwgY29ycmVzcG9uZCB0byBtYXJrZXIncyBsb2NhdGlvblxuICAgIH0pO1xuXG4gICAgLy8gU2V0IHRoZSBjdXN0b20gaWNvbiBhcyB0aGUgZGVmYXVsdCBpY29uXG4gICAgTC5NYXJrZXIucHJvdG90eXBlLm9wdGlvbnMuaWNvbiA9IGRlZmF1bHRJY29uO1xuICB9XG5cbiAgZ2V0TWFwKCk6IEwuTWFwIHtcbiAgICByZXR1cm4gdGhpcy5tYXA7XG4gIH1cblxuICBzZXRab29tTGV2ZWwoem9vbTogbnVtYmVyKTogdm9pZCB7XG4gICAgdGhpcy5tYXAuc2V0Wm9vbSh6b29tKTtcbiAgfVxuXG4gIHNldENlbnRlcihsb2NhdGlvbjogQVhNYXBMb2NhdGlvbik6IHZvaWQge1xuICAgIHRoaXMubWFwLnNldFZpZXcoW2xvY2F0aW9uLmxhdGl0dWRlLCBsb2NhdGlvbi5sb25naXR1ZGVdLCB0aGlzLm1hcC5nZXRab29tKCkpO1xuICB9XG5cbiAgZmx5VG8obG9jYXRpb246IEFYTWFwTG9jYXRpb24sIHpvb20/OiBudW1iZXIsIHNldE1hcmtlciA9IGZhbHNlLCBkdXJhdGlvbiA9IDEuMCk6IHZvaWQge1xuICAgIGlmICh0aGlzLm1hcCkge1xuICAgICAgdGhpcy5tYXAuZmx5VG8oW2xvY2F0aW9uLmxhdGl0dWRlLCBsb2NhdGlvbi5sb25naXR1ZGVdLCB6b29tIHx8IHRoaXMubWFwLmdldFpvb20oKSwge1xuICAgICAgICBhbmltYXRlOiB0cnVlLFxuICAgICAgICBkdXJhdGlvbjogZHVyYXRpb24sXG4gICAgICB9KTtcbiAgICAgIHRoaXMubWFwLm9uY2UoJ21vdmVlbmQnLCAoKSA9PiB7XG4gICAgICAgIGlmIChzZXRNYXJrZXIpIHtcbiAgICAgICAgICB0aGlzLmFkZE1hcmtlcihsb2NhdGlvbik7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIGFkZE1hcmtlcihsb2NhdGlvbnM6IEFYTWFwTG9jYXRpb24gfCBBWE1hcExvY2F0aW9uW10pOiB2b2lkIHtcbiAgICBjb25zdCBsb2NhdGlvbnNBcnJheSA9IEFycmF5LmlzQXJyYXkobG9jYXRpb25zKSA/IGxvY2F0aW9ucyA6IFtsb2NhdGlvbnNdO1xuICAgIGxvY2F0aW9uc0FycmF5LmZvckVhY2goKGxvY2F0aW9uKSA9PiB7XG4gICAgICBMLm1hcmtlcihbbG9jYXRpb24ubGF0aXR1ZGUsIGxvY2F0aW9uLmxvbmdpdHVkZV0pLmFkZFRvKHRoaXMuZHJhd25JdGVtcyk7XG4gICAgICB0aGlzLm9uTWFya2VyQWRkZWQuZW1pdChsb2NhdGlvbik7XG4gICAgfSk7XG4gIH1cblxuICBnZXRNYXJrZXJzKCk6IEFYTWFwTG9jYXRpb25bXSB7XG4gICAgcmV0dXJuIHRoaXMuZHJhd25JdGVtc1xuICAgICAgLmdldExheWVycygpXG4gICAgICAuZmlsdGVyKChsYXllcikgPT4gbGF5ZXIgaW5zdGFuY2VvZiBMLk1hcmtlcilcbiAgICAgIC5tYXAoKG1hcmtlcikgPT4ge1xuICAgICAgICBjb25zdCBsYXRMbmcgPSAobWFya2VyIGFzIEwuTWFya2VyKS5nZXRMYXRMbmcoKTtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBsYXRpdHVkZTogbGF0TG5nLmxhdCxcbiAgICAgICAgICBsb25naXR1ZGU6IGxhdExuZy5sbmcsXG4gICAgICAgIH0gYXMgQVhNYXBMb2NhdGlvbjtcbiAgICAgIH0pO1xuICB9XG5cbiAgYWRkRHJhd0NvbnRyb2wocG9zaXRpb246IEFYTWFwQ29udHJvbFBsYWNlID0gJ3RvcGxlZnQnKTogdm9pZCB7XG4gICAgY29uc3QgZHJhd0NvbnRyb2wgPSBuZXcgTC5Db250cm9sLkRyYXcoe1xuICAgICAgcG9zaXRpb246IHBvc2l0aW9uLFxuICAgICAgZWRpdDoge1xuICAgICAgICBmZWF0dXJlR3JvdXA6IHRoaXMuZHJhd25JdGVtcyxcbiAgICAgIH0sXG4gICAgICBkcmF3OiB7XG4gICAgICAgIHBvbHlnb246IGZhbHNlLFxuICAgICAgICBwb2x5bGluZTogZmFsc2UsXG4gICAgICAgIHJlY3RhbmdsZTogZmFsc2UsXG4gICAgICAgIGNpcmNsZTogZmFsc2UsXG4gICAgICAgIGNpcmNsZW1hcmtlcjogZmFsc2UsXG4gICAgICB9LFxuICAgIH0pO1xuXG4gICAgdGhpcy5kcmF3Q29udHJvbCA9IGRyYXdDb250cm9sO1xuICAgIHRoaXMubWFwLmFkZENvbnRyb2woZHJhd0NvbnRyb2wpO1xuXG4gICAgdGhpcy5tYXAub24oTC5EcmF3LkV2ZW50LkNSRUFURUQsIChldmVudDogYW55KSA9PiB7XG4gICAgICBjb25zdCBsYXllciA9IGV2ZW50LmxheWVyO1xuICAgICAgdGhpcy5kcmF3bkl0ZW1zLmFkZExheWVyKGxheWVyKTtcbiAgICAgIGNvbnN0IGxhdExuZyA9IGV2ZW50LmxheWVyLmdldExhdExuZygpO1xuICAgICAgdGhpcy5vbk1hcmtlckFkZGVkLmVtaXQoeyBsYXRpdHVkZTogbGF0TG5nLmxhdCwgbG9uZ2l0dWRlOiBsYXRMbmcubG5nIH0pO1xuICAgIH0pO1xuXG4gICAgdGhpcy5tYXAub24oTC5EcmF3LkV2ZW50LkRFTEVURUQsICgpID0+IHtcbiAgICAgIHRoaXMub25NYXJrZXJDaGFuZ2VkLmVtaXQodGhpcy5nZXRNYXJrZXJzKCkpO1xuICAgIH0pO1xuXG4gICAgdGhpcy5tYXAub24oTC5EcmF3LkV2ZW50LkVESVRFRCwgKCkgPT4ge1xuICAgICAgdGhpcy5vbk1hcmtlckNoYW5nZWQuZW1pdCh0aGlzLmdldE1hcmtlcnMoKSk7XG4gICAgfSk7XG4gIH1cblxuICBhZGRMb2NhdGVDb250cm9sKHBvc2l0aW9uOiBBWE1hcENvbnRyb2xQbGFjZSA9ICdib3R0b21yaWdodCcpOiB2b2lkIHtcbiAgICBjb25zdCBsb2NhdGVDb250cm9sID0gTC5jb250cm9sXG4gICAgICAubG9jYXRlKHtcbiAgICAgICAgcG9zaXRpb246IHBvc2l0aW9uLFxuICAgICAgICBmbHlUbzogdHJ1ZSxcbiAgICAgICAgc2V0VmlldzogJ3VudGlsUGFuT3Jab29tJyxcbiAgICAgICAgc2hvd1BvcHVwOiB0cnVlLFxuICAgICAgICBvbkxvY2F0aW9uRXJyb3I6IChlKSA9PiBhbGVydChlLm1lc3NhZ2UpLFxuICAgICAgICBvbkxvY2F0aW9uT3V0c2lkZU1hcEJvdW5kczogKGNvbnRyb2wpID0+IGNvbnRyb2wuc3RvcCgpLFxuICAgICAgICBsb2NhdGVPcHRpb25zOiB7XG4gICAgICAgICAgZW5hYmxlSGlnaEFjY3VyYWN5OiB0cnVlLFxuICAgICAgICB9LFxuICAgICAgICBzdHJpbmdzOiB7XG4gICAgICAgICAgdGl0bGU6ICdTaG93IG15IGxvY2F0aW9uJyxcbiAgICAgICAgICBwb3B1cDogJ1lvdSBhcmUgd2l0aGluIHtkaXN0YW5jZX0gbWV0ZXJzIGZyb20gdGhpcyBwb2ludCcsXG4gICAgICAgICAgb3V0c2lkZU1hcEJvdW5kc01zZzogJ1lvdSBzZWVtIHRvIGJlIG91dHNpZGUgdGhlIG1hcCBib3VuZHMnLFxuICAgICAgICB9LFxuICAgICAgfSlcbiAgICAgIC5hZGRUbyh0aGlzLm1hcCk7XG5cbiAgICB0aGlzLmxvY2F0ZUNvbnRyb2wgPSBsb2NhdGVDb250cm9sO1xuXG4gICAgdGhpcy5tYXAub24oJ2xvY2F0aW9uZm91bmQnLCAoZXZlbnQ6IGFueSkgPT4ge1xuICAgICAgY29uc3QgbG9jYXRpb246IEFYTWFwTG9jYXRpb24gPSB7XG4gICAgICAgIGxhdGl0dWRlOiBldmVudC5sYXRpdHVkZSxcbiAgICAgICAgbG9uZ2l0dWRlOiBldmVudC5sb25naXR1ZGUsXG4gICAgICAgIHByZWNpc2lvbjogZXZlbnQuYWNjdXJhY3ksXG4gICAgICB9O1xuICAgICAgdGhpcy5vbkxvY2F0aW9uRm91bmQuZW1pdChsb2NhdGlvbik7XG4gICAgfSk7XG4gIH1cblxuICByZW1vdmVEcmF3Q29udHJvbCgpIHtcbiAgICBpZiAodGhpcy5kcmF3Q29udHJvbCkge1xuICAgICAgdGhpcy5tYXAucmVtb3ZlQ29udHJvbCh0aGlzLmRyYXdDb250cm9sKTtcbiAgICAgIHRoaXMuZHJhd25JdGVtcy5jbGVhckxheWVycygpO1xuICAgICAgdGhpcy5kcmF3Q29udHJvbCA9IHVuZGVmaW5lZDtcbiAgICAgIHRoaXMubWFwLm9mZihMLkRyYXcuRXZlbnQuQ1JFQVRFRCk7XG4gICAgfVxuICB9XG5cbiAgcmVtb3ZlTG9jYXRlQ29udHJvbCgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5sb2NhdGVDb250cm9sKSB7XG4gICAgICB0aGlzLm1hcC5yZW1vdmVDb250cm9sKHRoaXMubG9jYXRlQ29udHJvbCk7XG4gICAgICB0aGlzLmxvY2F0ZUNvbnRyb2wgPSB1bmRlZmluZWQ7XG4gICAgICB0aGlzLm1hcC5vZmYoJ2xvY2F0aW9uZm91bmQnKTtcbiAgICAgIHRoaXMubWFwLm9mZignbG9jYXRpb25lcnJvcicpO1xuICAgIH1cbiAgfVxuXG4gIGRlc3Ryb3lNYXAoKSB7XG4gICAgdGhpcy5tYXAub2ZmKCk7XG4gICAgdGhpcy5tYXAucmVtb3ZlKCk7XG4gIH1cbn1cbiJdfQ==
|
|
164
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFwLmNsYXNzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbGlicy9jZGsvbWFwL3NyYy9tYXAuY2xhc3MudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM3QyxPQUFPLEtBQUssQ0FBQyxNQUFNLFNBQVMsQ0FBQztBQUM3QixPQUFPLGNBQWMsQ0FBQztBQUN0QixPQUFPLHVCQUF1QixDQUFDO0FBVS9CLE1BQU0sT0FBTyxnQkFBZ0I7SUFXM0IsWUFBWSxVQUF1QixFQUFFLFFBQXVCLEVBQUUsSUFBSSxHQUFHLEVBQUU7UUFQL0QsZUFBVSxHQUFtQixJQUFJLENBQUMsQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUNsRCxrQkFBYSxHQUE2QixFQUFFLENBQUM7UUFFckQsb0JBQWUsR0FBRyxJQUFJLFlBQVksRUFBbUIsQ0FBQztRQUN0RCxrQkFBYSxHQUFHLElBQUksWUFBWSxFQUFpQixDQUFDO1FBQ2xELG9CQUFlLEdBQUcsSUFBSSxZQUFZLEVBQWlCLENBQUM7UUFHbEQsQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsU0FBUyxHQUFHLDhDQUE4QyxDQUFDO1FBRTFFLE1BQU0sR0FBRyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsUUFBUSxDQUFDLFFBQVEsRUFBRSxRQUFRLENBQUMsU0FBUyxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDckYsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxvREFBb0QsRUFBRTtZQUNoRSxPQUFPLEVBQUUsRUFBRTtZQUNYLFdBQVcsRUFBRSxVQUFVO1NBQ3hCLENBQUMsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7UUFFZCxJQUFJLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUMzQixJQUFJLENBQUMsR0FBRyxHQUFHLEdB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LENBQUMsQ0FBQztZQUMzQyxJQUFJLENBQUMsbUJBQW1CLENBQUMsQ0FBQyxlQUFlLENBQUMsQ0FBQyxDQUFDO1lBQzVDLElBQUksQ0FBQyxhQUFhLEdBQUcsU0FBUyxDQUFDO1FBQ2pDLENBQUM7SUFDSCxDQUFDO0lBRU8sbUJBQW1CLENBQUMsTUFBZ0I7UUFDMUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFO1lBQ3ZCLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDM0MsSUFBSSxRQUFRLElBQUksSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDO2dCQUN6QixRQUFRLENBQUMsT0FBTyxDQUFDLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLEdBQUcsQ0FBQyxLQUFLLEVBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQztnQkFDN0QsT0FBTyxJQUFJLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ25DLENBQUM7UUFDSCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxVQUFVO1FBQ1IsSUFBSSxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUM7WUFDYixJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxDQUFDO1lBQ2YsSUFBSSxDQUFDLG1CQUFtQixDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUM7WUFDMUQsSUFBSSxDQUFDLEdBQUcsQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUNsQixJQUFJLENBQUMsR0FBRyxHQUFHLFNBQVMsQ0FBQztRQUN2QixDQUFDO0lBQ0gsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRXZlbnRFbWl0dGVyIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgKiBhcyBMIGZyb20gJ2xlYWZsZXQnO1xuaW1wb3J0ICdsZWFmbGV0LWRyYXcnO1xuaW1wb3J0ICdsZWFmbGV0LmxvY2F0ZWNvbnRyb2wnO1xuXG5leHBvcnQgaW50ZXJmYWNlIEFYTWFwTG9jYXRpb24ge1xuICBsYXRpdHVkZTogbnVtYmVyO1xuICBsb25naXR1ZGU6IG51bWJlcjtcbiAgcHJlY2lzaW9uPzogbnVtYmVyO1xuICB0aXRsZT86IHN0cmluZztcbn1cbmV4cG9ydCB0eXBlIEFYTWFwQ29udHJvbFBsYWNlID0gJ3RvcGxlZnQnIHwgJ3RvcHJpZ2h0JyB8ICdib3R0b21sZWZ0JyB8ICdib3R0b21yaWdodCc7XG5cbmV4cG9ydCBjbGFzcyBBWExlYWZsZXRTZXJ2aWNlIHtcbiAgcHJpdmF0ZSBtYXA/OiBMLk1hcDtcbiAgcHJpdmF0ZSBkcmF3Q29udHJvbD86IEwuQ29udHJvbC5EcmF3O1xuICBwcml2YXRlIGxvY2F0ZUNvbnRyb2w/OiBMLkNvbnRyb2wuTG9jYXRlO1xuICBwcml2YXRlIGRyYXduSXRlbXM6IEwuRmVhdHVyZUdyb3VwID0gbmV3IEwuRmVhdHVyZUdyb3VwKCk7XG4gIHByaXZhdGUgZXZlbnRIYW5kbGVyczogeyBba2V5OiBzdHJpbmddOiBhbnlbXSB9ID0ge307XG5cbiAgb25NYXJrZXJDaGFuZ2VkID0gbmV3IEV2ZW50RW1pdHRlcjxBWE1hcExvY2F0aW9uW10+KCk7XG4gIG9uTWFya2VyQWRkZWQgPSBuZXcgRXZlbnRFbWl0dGVyPEFYTWFwTG9jYXRpb24+KCk7XG4gIG9uTG9jYXRpb25Gb3VuZCA9IG5ldyBFdmVudEVtaXR0ZXI8QVhNYXBMb2NhdGlvbj4oKTtcblxuICBjb25zdHJ1Y3RvcihtYXBFbGVtZW50OiBIVE1MRWxlbWVudCwgbG9jYXRpb246IEFYTWFwTG9jYXRpb24sIHpvb20gPSAxMykge1xuICAgIEwuSWNvbi5EZWZhdWx0LmltYWdlUGF0aCA9ICdodHRwczovL3VucGtnLmNvbS9sZWFmbGV0QDEuNy4xL2Rpc3QvaW1hZ2VzLyc7XG5cbiAgICBjb25zdCBtYXAgPSBMLm1hcChtYXBFbGVtZW50KS5zZXRWaWV3KFtsb2NhdGlvbi5sYXRpdHVkZSwgbG9jYXRpb24ubG9uZ2l0dWRlXSwgem9vbSk7XG4gICAgTC50aWxlTGF5ZXIoJ2h0dHBzOi8ve3N9LnRpbGUub3BlbnN0cmVldG1hcC5vcmcve3p9L3t4fS97eX0ucG5nJywge1xuICAgICAgbWF4Wm9vbTogMTgsXG4gICAgICBhdHRyaWJ1dGlvbjogJ8KpIEFDb3JlWCcsXG4gICAgfSkuYWRkVG8obWFwKTtcblxuICAgIHRoaXMuZHJhd25JdGVtcy5hZGRUbyhtYXApO1xuICAgIHRoaXMubWFwID0gbWFwO1xuICB9XG5cbiAgZ2V0TWFwKCk6IEwuTWFwIHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gdGhpcy5tYXA7XG4gIH1cblxuICBzZXRab29tTGV2ZWwoem9vbTogbnVtYmVyKTogdm9pZCB7XG4gICAgdGhpcy5tYXA/LnNldFpvb20oem9vbSk7XG4gIH1cblxuICBzZXRDZW50ZXIobG9jYXRpb246IEFYTWFwTG9jYXRpb24pOiB2b2lkIHtcbiAgICBpZiAodGhpcy5tYXAgJiYgbG9jYXRpb24pIHtcbiAgICAgIHRoaXMubWFwLnNldFZpZXcoW2xvY2F0aW9uLmxhdGl0dWRlLCBsb2NhdGlvbi5sb25naXR1ZGVdLCB0aGlzLm1hcC5nZXRab29tKCkpO1xuICAgIH1cbiAgfVxuXG4gIGZseVRvKGxvY2F0aW9uOiBBWE1hcExvY2F0aW9uLCB6b29tPzogbnVtYmVyLCBzZXRNYXJrZXIgPSBmYWxzZSwgZHVyYXRpb24gPSAxLjApOiB2b2lkIHtcbiAgICBpZiAodGhpcy5tYXAgJiYgbG9jYXRpb24pIHtcbiAgICAgIHRoaXMubWFwLmZseVRvKFtsb2NhdGlvbi5sYXRpdHVkZSwgbG9jYXRpb24ubG9uZ2l0dWRlXSwgem9vbSB8fCB0aGlzLm1hcC5nZXRab29tKCksIHtcbiAgICAgICAgYW5pbWF0ZTogdHJ1ZSxcbiAgICAgICAgZHVyYXRpb246IGR1cmF0aW9uLFxuICAgICAgfSk7XG4gICAgICB0aGlzLm1hcC5vbmNlKCdtb3ZlZW5kJywgKCkgPT4ge1xuICAgICAgICBpZiAoc2V0TWFya2VyKSB7XG4gICAgICAgICAgdGhpcy5hZGRNYXJrZXIobG9jYXRpb24pO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBhZGRNYXJrZXIobG9jYXRpb25zOiBBWE1hcExvY2F0aW9uIHwgQVhNYXBMb2NhdGlvbltdKTogdm9pZCB7XG4gICAgY29uc3QgbG9jYXRpb25zQXJyYXkgPSBBcnJheS5pc0FycmF5KGxvY2F0aW9ucykgPyBsb2NhdGlvbnMgOiBbbG9jYXRpb25zXTtcbiAgICBsb2NhdGlvbnNBcnJheS5mb3JFYWNoKChsb2NhdGlvbikgPT4ge1xuICAgICAgTC5tYXJrZXIoW2xvY2F0aW9uLmxhdGl0dWRlLCBsb2NhdGlvbi5sb25naXR1ZGVdKS5hZGRUbyh0aGlzLmRyYXduSXRlbXMpO1xuICAgICAgdGhpcy5vbk1hcmtlckFkZGVkLmVtaXQobG9jYXRpb24pO1xuICAgIH0pO1xuICB9XG5cbiAgZ2V0TWFya2VycygpOiBBWE1hcExvY2F0aW9uW10ge1xuICAgIHJldHVybiB0aGlzLmRyYXduSXRlbXNcbiAgICAgIC5nZXRMYXllcnMoKVxuICAgICAgLmZpbHRlcigobGF5ZXIpID0+IGxheWVyIGluc3RhbmNlb2YgTC5NYXJrZXIpXG4gICAgICAubWFwKChtYXJrZXIpID0+IHtcbiAgICAgICAgY29uc3QgbGF0TG5nID0gKG1hcmtlciBhcyBMLk1hcmtlcikuZ2V0TGF0TG5nKCk7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgbGF0aXR1ZGU6IGxhdExuZy5sYXQsXG4gICAgICAgICAgbG9uZ2l0dWRlOiBsYXRMbmcubG5nLFxuICAgICAgICB9IGFzIEFYTWFwTG9jYXRpb247XG4gICAgICB9KTtcbiAgfVxuXG4gIGFkZERyYXdDb250cm9sKHBvc2l0aW9uOiBBWE1hcENvbnRyb2xQbGFjZSA9ICd0b3BsZWZ0Jyk6IHZvaWQge1xuICAgIGlmICh0aGlzLm1hcCkge1xuICAgICAgY29uc3QgZHJhd0NvbnRyb2wgPSBuZXcgTC5Db250cm9sLkRyYXcoe1xuICAgICAgICBwb3NpdGlvbjogcG9zaXRpb24sXG4gICAgICAgIGVkaXQ6IHtcbiAgICAgICAgICBmZWF0dXJlR3JvdXA6IHRoaXMuZHJhd25JdGVtcyxcbiAgICAgICAgfSxcbiAgICAgICAgZHJhdzoge1xuICAgICAgICAgIHBvbHlnb246IGZhbHNlLFxuICAgICAgICAgIHBvbHlsaW5lOiBmYWxzZSxcbiAgICAgICAgICByZWN0YW5nbGU6IGZhbHNlLFxuICAgICAgICAgIGNpcmNsZTogZmFsc2UsXG4gICAgICAgICAgY2lyY2xlbWFya2VyOiBmYWxzZSxcbiAgICAgICAgfSxcbiAgICAgIH0pO1xuXG4gICAgICB0aGlzLmRyYXdDb250cm9sID0gZHJhd0NvbnRyb2w7XG4gICAgICB0aGlzLm1hcC5hZGRDb250cm9sKGRyYXdDb250cm9sKTtcblxuICAgICAgY29uc3Qgb25DcmVhdGVkID0gKGV2ZW50OiBhbnkpID0+IHtcbiAgICAgICAgY29uc3QgbGF5ZXIgPSBldmVudC5sYXllcjtcbiAgICAgICAgdGhpcy5kcmF3bkl0ZW1zLmFkZExheWVyKGxheWVyKTtcbiAgICAgICAgY29uc3QgbGF0TG5nID0gKGxheWVyIGFzIEwuTWFya2VyKS5nZXRMYXRMbmcoKTtcbiAgICAgICAgdGhpcy5vbk1hcmtlckFkZGVkLmVtaXQoeyBsYXRpdHVkZTogbGF0TG5nLmxhdCwgbG9uZ2l0dWRlOiBsYXRMbmcubG5nIH0pO1xuICAgICAgfTtcblxuICAgICAgY29uc3Qgb25EZWxldGVkID0gKCkgPT4gdGhpcy5vbk1hcmtlckNoYW5nZWQuZW1pdCh0aGlzLmdldE1hcmtlcnMoKSk7XG4gICAgICBjb25zdCBvbkVkaXRlZCA9ICgpID0+IHRoaXMub25NYXJrZXJDaGFuZ2VkLmVtaXQodGhpcy5nZXRNYXJrZXJzKCkpO1xuXG4gICAgICAvLyBTYXZlIGhhbmRsZXJzIGZvciBsYXRlciByZW1vdmFsXG4gICAgICB0aGlzLmV2ZW50SGFuZGxlcnNbTC5EcmF3LkV2ZW50LkNSRUFURURdID0gW29uQ3JlYXRlZF07XG4gICAgICB0aGlzLmV2ZW50SGFuZGxlcnNbTC5EcmF3LkV2ZW50LkRFTEVURURdID0gW29uRGVsZXRlZF07XG4gICAgICB0aGlzLmV2ZW50SGFuZGxlcnNbTC5EcmF3LkV2ZW50LkVESVRFRF0gPSBbb25FZGl0ZWRdO1xuXG4gICAgICB0aGlzLm1hcC5vbihMLkRyYXcuRXZlbnQuQ1JFQVRFRCwgb25DcmVhdGVkKTtcbiAgICAgIHRoaXMubWFwLm9uKEwuRHJhdy5FdmVudC5ERUxFVEVELCBvbkRlbGV0ZWQpO1xuICAgICAgdGhpcy5tYXAub24oTC5EcmF3LkV2ZW50LkVESVRFRCwgb25FZGl0ZWQpO1xuICAgIH1cbiAgfVxuXG4gIGFkZExvY2F0ZUNvbnRyb2wocG9zaXRpb246IEFYTWFwQ29udHJvbFBsYWNlID0gJ2JvdHRvbXJpZ2h0Jyk6IHZvaWQge1xuICAgIGlmICh0aGlzLm1hcCkge1xuICAgICAgY29uc3QgbG9jYXRlQ29udHJvbCA9IEwuY29udHJvbFxuICAgICAgICAubG9jYXRlKHtcbiAgICAgICAgICBwb3NpdGlvbjogcG9zaXRpb24sXG4gICAgICAgICAgZmx5VG86IHRydWUsXG4gICAgICAgICAgc2V0VmlldzogJ3VudGlsUGFuT3Jab29tJyxcbiAgICAgICAgICBzaG93UG9wdXA6IHRydWUsXG4gICAgICAgICAgb25Mb2NhdGlvbkVycm9yOiAoZSkgPT4gYWxlcnQoZS5tZXNzYWdlKSxcbiAgICAgICAgICBvbkxvY2F0aW9uT3V0c2lkZU1hcEJvdW5kczogKGNvbnRyb2wpID0+IGNvbnRyb2wuc3RvcCgpLFxuICAgICAgICAgIGxvY2F0ZU9wdGlvbnM6IHtcbiAgICAgICAgICAgIGVuYWJsZUhpZ2hBY2N1cmFjeTogdHJ1ZSxcbiAgICAgICAgICB9LFxuICAgICAgICAgIHN0cmluZ3M6IHtcbiAgICAgICAgICAgIHRpdGxlOiAnU2hvdyBteSBsb2NhdGlvbicsXG4gICAgICAgICAgICBwb3B1cDogJ1lvdSBhcmUgd2l0aGluIHtkaXN0YW5jZX0gbWV0ZXJzIGZyb20gdGhpcyBwb2ludCcsXG4gICAgICAgICAgICBvdXRzaWRlTWFwQm91bmRzTXNnOiAnWW91IHNlZW0gdG8gYmUgb3V0c2lkZSB0aGUgbWFwIGJvdW5kcycsXG4gICAgICAgICAgfSxcbiAgICAgICAgfSlcbiAgICAgICAgLmFkZFRvKHRoaXMubWFwKTtcblxuICAgICAgdGhpcy5sb2NhdGVDb250cm9sID0gbG9jYXRlQ29udHJvbDtcblxuICAgICAgY29uc3Qgb25Mb2NhdGlvbkZvdW5kID0gKGV2ZW50OiBhbnkpID0+IHtcbiAgICAgICAgY29uc3QgbG9jYXRpb246IEFYTWFwTG9jYXRpb24gPSB7XG4gICAgICAgICAgbGF0aXR1ZGU6IGV2ZW50LmxhdGl0dWRlLFxuICAgICAgICAgIGxvbmdpdHVkZTogZXZlbnQubG9uZ2l0dWRlLFxuICAgICAgICAgIHByZWNpc2lvbjogZXZlbnQuYWNjdXJhY3ksXG4gICAgICAgIH07XG4gICAgICAgIHRoaXMub25Mb2NhdGlvbkZvdW5kLmVtaXQobG9jYXRpb24pO1xuICAgICAgfTtcblxuICAgICAgdGhpcy5ldmVudEhhbmRsZXJzWydsb2NhdGlvbmZvdW5kJ10gPSBbb25Mb2NhdGlvbkZvdW5kXTtcblxuICAgICAgdGhpcy5tYXAub24oJ2xvY2F0aW9uZm91bmQnLCBvbkxvY2F0aW9uRm91bmQpO1xuICAgIH1cbiAgfVxuXG4gIHJlbW92ZURyYXdDb250cm9sKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLm1hcCAmJiB0aGlzLmRyYXdDb250cm9sKSB7XG4gICAgICB0aGlzLm1hcC5yZW1vdmVDb250cm9sKHRoaXMuZHJhd0NvbnRyb2wpO1xuICAgICAgdGhpcy5kcmF3bkl0ZW1zLmNsZWFyTGF5ZXJzKCk7XG4gICAgICB0aGlzLnJlbW92ZUV2ZW50SGFuZGxlcnMoW0wuRHJhdy5FdmVudC5DUkVBVEVELCBMLkRyYXcuRXZlbnQuREVMRVRFRCwgTC5EcmF3LkV2ZW50LkVESVRFRF0pO1xuICAgICAgdGhpcy5kcmF3Q29udHJvbCA9IHVuZGVmaW5lZDtcbiAgICB9XG4gIH1cblxuICByZW1vdmVMb2NhdGVDb250cm9sKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLm1hcCAmJiB0aGlzLmxvY2F0ZUNvbnRyb2wpIHtcbiAgICAgIHRoaXMubWFwLnJlbW92ZUNvbnRyb2wodGhpcy5sb2NhdGVDb250cm9sKTtcbiAgICAgIHRoaXMucmVtb3ZlRXZlbnRIYW5kbGVycyhbJ2xvY2F0aW9uZm91bmQnXSk7XG4gICAgICB0aGlzLmxvY2F0ZUNvbnRyb2wgPSB1bmRlZmluZWQ7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSByZW1vdmVFdmVudEhhbmRsZXJzKGV2ZW50czogc3RyaW5nW10pOiB2b2lkIHtcbiAgICBldmVudHMuZm9yRWFjaCgoZXZlbnQpID0+IHtcbiAgICAgIGNvbnN0IGhhbmRsZXJzID0gdGhpcy5ldmVudEhhbmRsZXJzW2V2ZW50XTtcbiAgICAgIGlmIChoYW5kbGVycyAmJiB0aGlzLm1hcCkge1xuICAgICAgICBoYW5kbGVycy5mb3JFYWNoKChoYW5kbGVyKSA9PiB0aGlzLm1hcD8ub2ZmKGV2ZW50LCBoYW5kbGVyKSk7XG4gICAgICAgIGRlbGV0ZSB0aGlzLmV2ZW50SGFuZGxlcnNbZXZlbnRdO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgZGVzdHJveU1hcCgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5tYXApIHtcbiAgICAgIHRoaXMubWFwLm9mZigpO1xuICAgICAgdGhpcy5yZW1vdmVFdmVudEhhbmRsZXJzKE9iamVjdC5rZXlzKHRoaXMuZXZlbnRIYW5kbGVycykpO1xuICAgICAgdGhpcy5tYXAucmVtb3ZlKCk7XG4gICAgICB0aGlzLm1hcCA9IHVuZGVmaW5lZDtcbiAgICB9XG4gIH1cbn1cbiJdfQ==
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
import { Injectable } from '@angular/core';
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
|
+
export class AXLeafletLoader {
|
|
4
|
+
constructor() {
|
|
5
|
+
this.stylesLoaded = false;
|
|
6
|
+
this.scriptsLoaded = false;
|
|
7
|
+
}
|
|
8
|
+
// Load Leaflet styles
|
|
9
|
+
loadStyles() {
|
|
10
|
+
if (!this.stylesLoaded) {
|
|
11
|
+
this.loadStyle('https://unpkg.com/leaflet@1.7.1/dist/leaflet.css');
|
|
12
|
+
this.loadStyle('https://cdnjs.cloudflare.com/ajax/libs/leaflet.draw/1.0.4/leaflet.draw.css');
|
|
13
|
+
this.loadStyle('https://cdnjs.cloudflare.com/ajax/libs/leaflet.locatecontrol/0.71.0/L.Control.Locate.min.css');
|
|
14
|
+
this.stylesLoaded = true;
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
// Load Leaflet scripts
|
|
18
|
+
loadScripts() {
|
|
19
|
+
if (!this.scriptsLoaded) {
|
|
20
|
+
this.loadScript('https://unpkg.com/leaflet@1.7.1/dist/leaflet.js')
|
|
21
|
+
.then(() => {
|
|
22
|
+
return this.loadScript('https://cdnjs.cloudflare.com/ajax/libs/leaflet.draw/1.0.4/leaflet.draw.js');
|
|
23
|
+
})
|
|
24
|
+
.then(() => {
|
|
25
|
+
return this.loadScript('https://cdnjs.cloudflare.com/ajax/libs/leaflet.locatecontrol/0.71.0/L.Control.Locate.min.js');
|
|
26
|
+
});
|
|
27
|
+
this.scriptsLoaded = true;
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
// Utility function to load styles
|
|
31
|
+
loadStyle(href) {
|
|
32
|
+
const link = document.createElement('link');
|
|
33
|
+
link.rel = 'stylesheet';
|
|
34
|
+
link.href = href;
|
|
35
|
+
document.head.appendChild(link);
|
|
36
|
+
}
|
|
37
|
+
// Utility function to load scripts
|
|
38
|
+
loadScript(src) {
|
|
39
|
+
return new Promise((resolve, reject) => {
|
|
40
|
+
const script = document.createElement('script');
|
|
41
|
+
script.src = src;
|
|
42
|
+
script.async = true;
|
|
43
|
+
script.onload = () => resolve();
|
|
44
|
+
script.onerror = (error) => reject(error);
|
|
45
|
+
document.body.appendChild(script);
|
|
46
|
+
});
|
|
47
|
+
}
|
|
48
|
+
// Initialize Leaflet dependencies
|
|
49
|
+
initLeaflet() {
|
|
50
|
+
return new Promise((resolve) => {
|
|
51
|
+
this.loadStyles();
|
|
52
|
+
this.loadScripts();
|
|
53
|
+
resolve();
|
|
54
|
+
});
|
|
55
|
+
}
|
|
56
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: AXLeafletLoader, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
57
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: AXLeafletLoader, providedIn: 'root' }); }
|
|
58
|
+
}
|
|
59
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: AXLeafletLoader, decorators: [{
|
|
60
|
+
type: Injectable,
|
|
61
|
+
args: [{
|
|
62
|
+
providedIn: 'root',
|
|
63
|
+
}]
|
|
64
|
+
}] });
|
|
65
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFwLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJzL2Nkay9tYXAvc3JjL21hcC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7O0FBSzNDLE1BQU0sT0FBTyxlQUFlO0lBSDVCO1FBSVUsaUJBQVksR0FBRyxLQUFLLENBQUM7UUFDckIsa0JBQWEsR0FBRyxLQUFLLENBQUM7S0EwRC9CO0lBeERDLHNCQUFzQjtJQUNkLFVBQVU7UUFDaEIsSUFBSSxDQUFDLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztZQUN2QixJQUFJLENBQUMsU0FBUyxDQUFDLGtEQUFrRCxDQUFDLENBQUM7WUFDbkUsSUFBSSxDQUFDLFNBQVMsQ0FBQyw0RUFBNEUsQ0FBQyxDQUFDO1lBQzdGLElBQUksQ0FBQyxTQUFTLENBQ1osOEZBQThGLENBQy9GLENBQUM7WUFDRixJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQztRQUMzQixDQUFDO0lBQ0gsQ0FBQztJQUVELHVCQUF1QjtJQUNmLFdBQVc7UUFDakIsSUFBSSxDQUFDLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztZQUN4QixJQUFJLENBQUMsVUFBVSxDQUFDLGlEQUFpRCxDQUFDO2lCQUMvRCxJQUFJLENBQUMsR0FBRyxFQUFFO2dCQUNULE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQywyRUFBMkUsQ0FBQyxDQUFDO1lBQ3RHLENBQUMsQ0FBQztpQkFDRCxJQUFJLENBQUMsR0FBRyxFQUFFO2dCQUNULE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FDcEIsNkZBQTZGLENBQzlGLENBQUM7WUFDSixDQUFDLENBQUMsQ0FBQztZQUNMLElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDO1FBQzVCLENBQUM7SUFDSCxDQUFDO0lBRUQsa0NBQWtDO0lBQzFCLFNBQVMsQ0FBQyxJQUFZO1FBQzVCLE1BQU0sSUFBSSxHQUFHLFFBQVEsQ0FBQyxhQUFhLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDNUMsSUFBSSxDQUFDLEdBQUcsR0FBRyxZQUFZLENBQUM7UUFDeEIsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUM7UUFDakIsUUFBUSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDbEMsQ0FBQztJQUVELG1DQUFtQztJQUMzQixVQUFVLENBQUMsR0FBVztRQUM1QixPQUFPLElBQUksT0FBTyxDQUFDLENBQUMsT0FBTyxFQUFFLE1BQU0sRUFBRSxFQUFFO1lBQ3JDLE1BQU0sTUFBTSxHQUFHLFFBQVEsQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUFDLENBQUM7WUFDaEQsTUFBTSxDQUFDLEdBQUcsR0FBRyxHQUFHLENBQUM7WUFDakIsTUFBTSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUM7WUFDcEIsTUFBTSxDQUFDLE1BQU0sR0FBRyxHQUFHLEVBQUUsQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUNoQyxNQUFNLENBQUMsT0FBTyxHQUFHLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDMUMsUUFBUSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDcEMsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsa0NBQWtDO0lBQ2xDLFdBQVc7UUFDVCxPQUFPLElBQUksT0FBTyxDQUFDLENBQUMsT0FBTyxFQUFFLEVBQUU7WUFDN0IsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO1lBQ2xCLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztZQUNuQixPQUFPLEVBQUUsQ0FBQztRQUNaLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQzs4R0EzRFUsZUFBZTtrSEFBZixlQUFlLGNBRmQsTUFBTTs7MkZBRVAsZUFBZTtrQkFIM0IsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxufSlcbmV4cG9ydCBjbGFzcyBBWExlYWZsZXRMb2FkZXIge1xuICBwcml2YXRlIHN0eWxlc0xvYWRlZCA9IGZhbHNlO1xuICBwcml2YXRlIHNjcmlwdHNMb2FkZWQgPSBmYWxzZTtcblxuICAvLyBMb2FkIExlYWZsZXQgc3R5bGVzXG4gIHByaXZhdGUgbG9hZFN0eWxlcygpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuc3R5bGVzTG9hZGVkKSB7XG4gICAgICB0aGlzLmxvYWRTdHlsZSgnaHR0cHM6Ly91bnBrZy5jb20vbGVhZmxldEAxLjcuMS9kaXN0L2xlYWZsZXQuY3NzJyk7XG4gICAgICB0aGlzLmxvYWRTdHlsZSgnaHR0cHM6Ly9jZG5qcy5jbG91ZGZsYXJlLmNvbS9hamF4L2xpYnMvbGVhZmxldC5kcmF3LzEuMC40L2xlYWZsZXQuZHJhdy5jc3MnKTtcbiAgICAgIHRoaXMubG9hZFN0eWxlKFxuICAgICAgICAnaHR0cHM6Ly9jZG5qcy5jbG91ZGZsYXJlLmNvbS9hamF4L2xpYnMvbGVhZmxldC5sb2NhdGVjb250cm9sLzAuNzEuMC9MLkNvbnRyb2wuTG9jYXRlLm1pbi5jc3MnLFxuICAgICAgKTtcbiAgICAgIHRoaXMuc3R5bGVzTG9hZGVkID0gdHJ1ZTtcbiAgICB9XG4gIH1cblxuICAvLyBMb2FkIExlYWZsZXQgc2NyaXB0c1xuICBwcml2YXRlIGxvYWRTY3JpcHRzKCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5zY3JpcHRzTG9hZGVkKSB7XG4gICAgICB0aGlzLmxvYWRTY3JpcHQoJ2h0dHBzOi8vdW5wa2cuY29tL2xlYWZsZXRAMS43LjEvZGlzdC9sZWFmbGV0LmpzJylcbiAgICAgICAgLnRoZW4oKCkgPT4ge1xuICAgICAgICAgIHJldHVybiB0aGlzLmxvYWRTY3JpcHQoJ2h0dHBzOi8vY2RuanMuY2xvdWRmbGFyZS5jb20vYWpheC9saWJzL2xlYWZsZXQuZHJhdy8xLjAuNC9sZWFmbGV0LmRyYXcuanMnKTtcbiAgICAgICAgfSlcbiAgICAgICAgLnRoZW4oKCkgPT4ge1xuICAgICAgICAgIHJldHVybiB0aGlzLmxvYWRTY3JpcHQoXG4gICAgICAgICAgICAnaHR0cHM6Ly9jZG5qcy5jbG91ZGZsYXJlLmNvbS9hamF4L2xpYnMvbGVhZmxldC5sb2NhdGVjb250cm9sLzAuNzEuMC9MLkNvbnRyb2wuTG9jYXRlLm1pbi5qcycsXG4gICAgICAgICAgKTtcbiAgICAgICAgfSk7XG4gICAgICB0aGlzLnNjcmlwdHNMb2FkZWQgPSB0cnVlO1xuICAgIH1cbiAgfVxuXG4gIC8vIFV0aWxpdHkgZnVuY3Rpb24gdG8gbG9hZCBzdHlsZXNcbiAgcHJpdmF0ZSBsb2FkU3R5bGUoaHJlZjogc3RyaW5nKTogdm9pZCB7XG4gICAgY29uc3QgbGluayA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2xpbmsnKTtcbiAgICBsaW5rLnJlbCA9ICdzdHlsZXNoZWV0JztcbiAgICBsaW5rLmhyZWYgPSBocmVmO1xuICAgIGRvY3VtZW50LmhlYWQuYXBwZW5kQ2hpbGQobGluayk7XG4gIH1cblxuICAvLyBVdGlsaXR5IGZ1bmN0aW9uIHRvIGxvYWQgc2NyaXB0c1xuICBwcml2YXRlIGxvYWRTY3JpcHQoc3JjOiBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgY29uc3Qgc2NyaXB0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc2NyaXB0Jyk7XG4gICAgICBzY3JpcHQuc3JjID0gc3JjO1xuICAgICAgc2NyaXB0LmFzeW5jID0gdHJ1ZTtcbiAgICAgIHNjcmlwdC5vbmxvYWQgPSAoKSA9PiByZXNvbHZlKCk7XG4gICAgICBzY3JpcHQub25lcnJvciA9IChlcnJvcikgPT4gcmVqZWN0KGVycm9yKTtcbiAgICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoc2NyaXB0KTtcbiAgICB9KTtcbiAgfVxuXG4gIC8vIEluaXRpYWxpemUgTGVhZmxldCBkZXBlbmRlbmNpZXNcbiAgaW5pdExlYWZsZXQoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlKSA9PiB7XG4gICAgICB0aGlzLmxvYWRTdHlsZXMoKTtcbiAgICAgIHRoaXMubG9hZFNjcmlwdHMoKTtcbiAgICAgIHJlc29sdmUoKTtcbiAgICB9KTtcbiAgfVxufVxuIl19
|
|
@@ -1,15 +1,17 @@
|
|
|
1
|
-
import
|
|
1
|
+
import * as i0 from '@angular/core';
|
|
2
|
+
import { EventEmitter, Injectable } from '@angular/core';
|
|
2
3
|
import * as L from 'leaflet';
|
|
3
4
|
import 'leaflet-draw';
|
|
4
5
|
import 'leaflet.locatecontrol';
|
|
5
6
|
|
|
6
7
|
class AXLeafletService {
|
|
7
|
-
constructor(mapElement, location, zoom) {
|
|
8
|
+
constructor(mapElement, location, zoom = 13) {
|
|
8
9
|
this.drawnItems = new L.FeatureGroup();
|
|
10
|
+
this.eventHandlers = {};
|
|
9
11
|
this.onMarkerChanged = new EventEmitter();
|
|
10
12
|
this.onMarkerAdded = new EventEmitter();
|
|
11
13
|
this.onLocationFound = new EventEmitter();
|
|
12
|
-
|
|
14
|
+
L.Icon.Default.imagePath = 'https://unpkg.com/leaflet@1.7.1/dist/images/';
|
|
13
15
|
const map = L.map(mapElement).setView([location.latitude, location.longitude], zoom);
|
|
14
16
|
L.tileLayer('https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png', {
|
|
15
17
|
maxZoom: 18,
|
|
@@ -18,31 +20,19 @@ class AXLeafletService {
|
|
|
18
20
|
this.drawnItems.addTo(map);
|
|
19
21
|
this.map = map;
|
|
20
22
|
}
|
|
21
|
-
setCustomIcons() {
|
|
22
|
-
// Define the paths to your custom icons
|
|
23
|
-
const iconPath = './';
|
|
24
|
-
const defaultIcon = new L.Icon({
|
|
25
|
-
iconUrl: `${iconPath}marker-icon.png`, // Custom marker icon path
|
|
26
|
-
iconSize: [25, 41], // Size of the icon
|
|
27
|
-
iconAnchor: [12, 41], // Point of the icon which will correspond to marker's location
|
|
28
|
-
shadowUrl: `${iconPath}marker-shadow.png`, // Custom marker shadow path
|
|
29
|
-
shadowSize: [41, 41], // Size of the shadow
|
|
30
|
-
shadowAnchor: [12, 41], // Point of the shadow which will correspond to marker's location
|
|
31
|
-
});
|
|
32
|
-
// Set the custom icon as the default icon
|
|
33
|
-
L.Marker.prototype.options.icon = defaultIcon;
|
|
34
|
-
}
|
|
35
23
|
getMap() {
|
|
36
24
|
return this.map;
|
|
37
25
|
}
|
|
38
26
|
setZoomLevel(zoom) {
|
|
39
|
-
this.map
|
|
27
|
+
this.map?.setZoom(zoom);
|
|
40
28
|
}
|
|
41
29
|
setCenter(location) {
|
|
42
|
-
this.map
|
|
30
|
+
if (this.map && location) {
|
|
31
|
+
this.map.setView([location.latitude, location.longitude], this.map.getZoom());
|
|
32
|
+
}
|
|
43
33
|
}
|
|
44
34
|
flyTo(location, zoom, setMarker = false, duration = 1.0) {
|
|
45
|
-
if (this.map) {
|
|
35
|
+
if (this.map && location) {
|
|
46
36
|
this.map.flyTo([location.latitude, location.longitude], zoom || this.map.getZoom(), {
|
|
47
37
|
animate: true,
|
|
48
38
|
duration: duration,
|
|
@@ -74,88 +64,172 @@ class AXLeafletService {
|
|
|
74
64
|
});
|
|
75
65
|
}
|
|
76
66
|
addDrawControl(position = 'topleft') {
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
const
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
this.onMarkerChanged.emit(this.getMarkers());
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
this.
|
|
103
|
-
|
|
67
|
+
if (this.map) {
|
|
68
|
+
const drawControl = new L.Control.Draw({
|
|
69
|
+
position: position,
|
|
70
|
+
edit: {
|
|
71
|
+
featureGroup: this.drawnItems,
|
|
72
|
+
},
|
|
73
|
+
draw: {
|
|
74
|
+
polygon: false,
|
|
75
|
+
polyline: false,
|
|
76
|
+
rectangle: false,
|
|
77
|
+
circle: false,
|
|
78
|
+
circlemarker: false,
|
|
79
|
+
},
|
|
80
|
+
});
|
|
81
|
+
this.drawControl = drawControl;
|
|
82
|
+
this.map.addControl(drawControl);
|
|
83
|
+
const onCreated = (event) => {
|
|
84
|
+
const layer = event.layer;
|
|
85
|
+
this.drawnItems.addLayer(layer);
|
|
86
|
+
const latLng = layer.getLatLng();
|
|
87
|
+
this.onMarkerAdded.emit({ latitude: latLng.lat, longitude: latLng.lng });
|
|
88
|
+
};
|
|
89
|
+
const onDeleted = () => this.onMarkerChanged.emit(this.getMarkers());
|
|
90
|
+
const onEdited = () => this.onMarkerChanged.emit(this.getMarkers());
|
|
91
|
+
// Save handlers for later removal
|
|
92
|
+
this.eventHandlers[L.Draw.Event.CREATED] = [onCreated];
|
|
93
|
+
this.eventHandlers[L.Draw.Event.DELETED] = [onDeleted];
|
|
94
|
+
this.eventHandlers[L.Draw.Event.EDITED] = [onEdited];
|
|
95
|
+
this.map.on(L.Draw.Event.CREATED, onCreated);
|
|
96
|
+
this.map.on(L.Draw.Event.DELETED, onDeleted);
|
|
97
|
+
this.map.on(L.Draw.Event.EDITED, onEdited);
|
|
98
|
+
}
|
|
104
99
|
}
|
|
105
100
|
addLocateControl(position = 'bottomright') {
|
|
106
|
-
|
|
107
|
-
.
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
const
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
101
|
+
if (this.map) {
|
|
102
|
+
const locateControl = L.control
|
|
103
|
+
.locate({
|
|
104
|
+
position: position,
|
|
105
|
+
flyTo: true,
|
|
106
|
+
setView: 'untilPanOrZoom',
|
|
107
|
+
showPopup: true,
|
|
108
|
+
onLocationError: (e) => alert(e.message),
|
|
109
|
+
onLocationOutsideMapBounds: (control) => control.stop(),
|
|
110
|
+
locateOptions: {
|
|
111
|
+
enableHighAccuracy: true,
|
|
112
|
+
},
|
|
113
|
+
strings: {
|
|
114
|
+
title: 'Show my location',
|
|
115
|
+
popup: 'You are within {distance} meters from this point',
|
|
116
|
+
outsideMapBoundsMsg: 'You seem to be outside the map bounds',
|
|
117
|
+
},
|
|
118
|
+
})
|
|
119
|
+
.addTo(this.map);
|
|
120
|
+
this.locateControl = locateControl;
|
|
121
|
+
const onLocationFound = (event) => {
|
|
122
|
+
const location = {
|
|
123
|
+
latitude: event.latitude,
|
|
124
|
+
longitude: event.longitude,
|
|
125
|
+
precision: event.accuracy,
|
|
126
|
+
};
|
|
127
|
+
this.onLocationFound.emit(location);
|
|
130
128
|
};
|
|
131
|
-
this.onLocationFound
|
|
132
|
-
|
|
129
|
+
this.eventHandlers['locationfound'] = [onLocationFound];
|
|
130
|
+
this.map.on('locationfound', onLocationFound);
|
|
131
|
+
}
|
|
133
132
|
}
|
|
134
133
|
removeDrawControl() {
|
|
135
|
-
if (this.drawControl) {
|
|
134
|
+
if (this.map && this.drawControl) {
|
|
136
135
|
this.map.removeControl(this.drawControl);
|
|
137
136
|
this.drawnItems.clearLayers();
|
|
137
|
+
this.removeEventHandlers([L.Draw.Event.CREATED, L.Draw.Event.DELETED, L.Draw.Event.EDITED]);
|
|
138
138
|
this.drawControl = undefined;
|
|
139
|
-
this.map.off(L.Draw.Event.CREATED);
|
|
140
139
|
}
|
|
141
140
|
}
|
|
142
141
|
removeLocateControl() {
|
|
143
|
-
if (this.locateControl) {
|
|
142
|
+
if (this.map && this.locateControl) {
|
|
144
143
|
this.map.removeControl(this.locateControl);
|
|
144
|
+
this.removeEventHandlers(['locationfound']);
|
|
145
145
|
this.locateControl = undefined;
|
|
146
|
-
this.map.off('locationfound');
|
|
147
|
-
this.map.off('locationerror');
|
|
148
146
|
}
|
|
149
147
|
}
|
|
148
|
+
removeEventHandlers(events) {
|
|
149
|
+
events.forEach((event) => {
|
|
150
|
+
const handlers = this.eventHandlers[event];
|
|
151
|
+
if (handlers && this.map) {
|
|
152
|
+
handlers.forEach((handler) => this.map?.off(event, handler));
|
|
153
|
+
delete this.eventHandlers[event];
|
|
154
|
+
}
|
|
155
|
+
});
|
|
156
|
+
}
|
|
150
157
|
destroyMap() {
|
|
151
|
-
this.map
|
|
152
|
-
|
|
158
|
+
if (this.map) {
|
|
159
|
+
this.map.off();
|
|
160
|
+
this.removeEventHandlers(Object.keys(this.eventHandlers));
|
|
161
|
+
this.map.remove();
|
|
162
|
+
this.map = undefined;
|
|
163
|
+
}
|
|
164
|
+
}
|
|
165
|
+
}
|
|
166
|
+
|
|
167
|
+
class AXLeafletLoader {
|
|
168
|
+
constructor() {
|
|
169
|
+
this.stylesLoaded = false;
|
|
170
|
+
this.scriptsLoaded = false;
|
|
171
|
+
}
|
|
172
|
+
// Load Leaflet styles
|
|
173
|
+
loadStyles() {
|
|
174
|
+
if (!this.stylesLoaded) {
|
|
175
|
+
this.loadStyle('https://unpkg.com/leaflet@1.7.1/dist/leaflet.css');
|
|
176
|
+
this.loadStyle('https://cdnjs.cloudflare.com/ajax/libs/leaflet.draw/1.0.4/leaflet.draw.css');
|
|
177
|
+
this.loadStyle('https://cdnjs.cloudflare.com/ajax/libs/leaflet.locatecontrol/0.71.0/L.Control.Locate.min.css');
|
|
178
|
+
this.stylesLoaded = true;
|
|
179
|
+
}
|
|
180
|
+
}
|
|
181
|
+
// Load Leaflet scripts
|
|
182
|
+
loadScripts() {
|
|
183
|
+
if (!this.scriptsLoaded) {
|
|
184
|
+
this.loadScript('https://unpkg.com/leaflet@1.7.1/dist/leaflet.js')
|
|
185
|
+
.then(() => {
|
|
186
|
+
return this.loadScript('https://cdnjs.cloudflare.com/ajax/libs/leaflet.draw/1.0.4/leaflet.draw.js');
|
|
187
|
+
})
|
|
188
|
+
.then(() => {
|
|
189
|
+
return this.loadScript('https://cdnjs.cloudflare.com/ajax/libs/leaflet.locatecontrol/0.71.0/L.Control.Locate.min.js');
|
|
190
|
+
});
|
|
191
|
+
this.scriptsLoaded = true;
|
|
192
|
+
}
|
|
193
|
+
}
|
|
194
|
+
// Utility function to load styles
|
|
195
|
+
loadStyle(href) {
|
|
196
|
+
const link = document.createElement('link');
|
|
197
|
+
link.rel = 'stylesheet';
|
|
198
|
+
link.href = href;
|
|
199
|
+
document.head.appendChild(link);
|
|
200
|
+
}
|
|
201
|
+
// Utility function to load scripts
|
|
202
|
+
loadScript(src) {
|
|
203
|
+
return new Promise((resolve, reject) => {
|
|
204
|
+
const script = document.createElement('script');
|
|
205
|
+
script.src = src;
|
|
206
|
+
script.async = true;
|
|
207
|
+
script.onload = () => resolve();
|
|
208
|
+
script.onerror = (error) => reject(error);
|
|
209
|
+
document.body.appendChild(script);
|
|
210
|
+
});
|
|
211
|
+
}
|
|
212
|
+
// Initialize Leaflet dependencies
|
|
213
|
+
initLeaflet() {
|
|
214
|
+
return new Promise((resolve) => {
|
|
215
|
+
this.loadStyles();
|
|
216
|
+
this.loadScripts();
|
|
217
|
+
resolve();
|
|
218
|
+
});
|
|
153
219
|
}
|
|
220
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: AXLeafletLoader, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
221
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: AXLeafletLoader, providedIn: 'root' }); }
|
|
154
222
|
}
|
|
223
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: AXLeafletLoader, decorators: [{
|
|
224
|
+
type: Injectable,
|
|
225
|
+
args: [{
|
|
226
|
+
providedIn: 'root',
|
|
227
|
+
}]
|
|
228
|
+
}] });
|
|
155
229
|
|
|
156
230
|
/**
|
|
157
231
|
* Generated bundle index. Do not edit.
|
|
158
232
|
*/
|
|
159
233
|
|
|
160
|
-
export { AXLeafletService };
|
|
234
|
+
export { AXLeafletLoader, AXLeafletService };
|
|
161
235
|
//# sourceMappingURL=acorex-cdk-map.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"acorex-cdk-map.mjs","sources":["../../../../libs/cdk/map/src/map.class.ts","../../../../libs/cdk/map/src/acorex-cdk-map.ts"],"sourcesContent":["import { EventEmitter } from '@angular/core';\nimport * as L from 'leaflet';\nimport 'leaflet-draw';\nimport 'leaflet.locatecontrol';\n\nexport interface AXMapLocation {\n latitude: number;\n longitude: number;\n precision?: number;\n title?: string;\n}\nexport type AXMapControlPlace = 'topleft' | 'topright' | 'bottomleft' | 'bottomright';\n\nexport class AXLeafletService {\n private map?: L.Map;\n private drawControl?: L.Control.Draw;\n private locateControl?: L.Control.Locate;\n private drawnItems: L.FeatureGroup = new L.FeatureGroup();\n private onMarkerChanged = new EventEmitter<AXMapLocation[]>();\n private onMarkerAdded = new EventEmitter<AXMapLocation>();\n private onLocationFound = new EventEmitter<AXMapLocation>();\n\n constructor(mapElement?: HTMLElement, location?: AXMapLocation, zoom?: number) {\n this.setCustomIcons();\n\n const map = L.map(mapElement).setView([location.latitude, location.longitude], zoom);\n\n L.tileLayer('https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png', {\n maxZoom: 18,\n attribution: '© ACoreX',\n }).addTo(map);\n\n this.drawnItems.addTo(map);\n this.map = map;\n }\n private setCustomIcons() {\n // Define the paths to your custom icons\n const iconPath = './';\n const defaultIcon = new L.Icon({\n iconUrl: `${iconPath}marker-icon.png`, // Custom marker icon path\n iconSize: [25, 41], // Size of the icon\n iconAnchor: [12, 41], // Point of the icon which will correspond to marker's location\n shadowUrl: `${iconPath}marker-shadow.png`, // Custom marker shadow path\n shadowSize: [41, 41], // Size of the shadow\n shadowAnchor: [12, 41], // Point of the shadow which will correspond to marker's location\n });\n\n // Set the custom icon as the default icon\n L.Marker.prototype.options.icon = defaultIcon;\n }\n\n getMap(): L.Map {\n return this.map;\n }\n\n setZoomLevel(zoom: number): void {\n this.map.setZoom(zoom);\n }\n\n setCenter(location: AXMapLocation): void {\n this.map.setView([location.latitude, location.longitude], this.map.getZoom());\n }\n\n flyTo(location: AXMapLocation, zoom?: number, setMarker = false, duration = 1.0): void {\n if (this.map) {\n this.map.flyTo([location.latitude, location.longitude], zoom || this.map.getZoom(), {\n animate: true,\n duration: duration,\n });\n this.map.once('moveend', () => {\n if (setMarker) {\n this.addMarker(location);\n }\n });\n }\n }\n\n addMarker(locations: AXMapLocation | AXMapLocation[]): void {\n const locationsArray = Array.isArray(locations) ? locations : [locations];\n locationsArray.forEach((location) => {\n L.marker([location.latitude, location.longitude]).addTo(this.drawnItems);\n this.onMarkerAdded.emit(location);\n });\n }\n\n getMarkers(): AXMapLocation[] {\n return this.drawnItems\n .getLayers()\n .filter((layer) => layer instanceof L.Marker)\n .map((marker) => {\n const latLng = (marker as L.Marker).getLatLng();\n return {\n latitude: latLng.lat,\n longitude: latLng.lng,\n } as AXMapLocation;\n });\n }\n\n addDrawControl(position: AXMapControlPlace = 'topleft'): void {\n const drawControl = new L.Control.Draw({\n position: position,\n edit: {\n featureGroup: this.drawnItems,\n },\n draw: {\n polygon: false,\n polyline: false,\n rectangle: false,\n circle: false,\n circlemarker: false,\n },\n });\n\n this.drawControl = drawControl;\n this.map.addControl(drawControl);\n\n this.map.on(L.Draw.Event.CREATED, (event: any) => {\n const layer = event.layer;\n this.drawnItems.addLayer(layer);\n const latLng = event.layer.getLatLng();\n this.onMarkerAdded.emit({ latitude: latLng.lat, longitude: latLng.lng });\n });\n\n this.map.on(L.Draw.Event.DELETED, () => {\n this.onMarkerChanged.emit(this.getMarkers());\n });\n\n this.map.on(L.Draw.Event.EDITED, () => {\n this.onMarkerChanged.emit(this.getMarkers());\n });\n }\n\n addLocateControl(position: AXMapControlPlace = 'bottomright'): void {\n const locateControl = L.control\n .locate({\n position: position,\n flyTo: true,\n setView: 'untilPanOrZoom',\n showPopup: true,\n onLocationError: (e) => alert(e.message),\n onLocationOutsideMapBounds: (control) => control.stop(),\n locateOptions: {\n enableHighAccuracy: true,\n },\n strings: {\n title: 'Show my location',\n popup: 'You are within {distance} meters from this point',\n outsideMapBoundsMsg: 'You seem to be outside the map bounds',\n },\n })\n .addTo(this.map);\n\n this.locateControl = locateControl;\n\n this.map.on('locationfound', (event: any) => {\n const location: AXMapLocation = {\n latitude: event.latitude,\n longitude: event.longitude,\n precision: event.accuracy,\n };\n this.onLocationFound.emit(location);\n });\n }\n\n removeDrawControl() {\n if (this.drawControl) {\n this.map.removeControl(this.drawControl);\n this.drawnItems.clearLayers();\n this.drawControl = undefined;\n this.map.off(L.Draw.Event.CREATED);\n }\n }\n\n removeLocateControl(): void {\n if (this.locateControl) {\n this.map.removeControl(this.locateControl);\n this.locateControl = undefined;\n this.map.off('locationfound');\n this.map.off('locationerror');\n }\n }\n\n destroyMap() {\n this.map.off();\n this.map.remove();\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"acorex-cdk-map.mjs","sources":["../../../../libs/cdk/map/src/map.class.ts","../../../../libs/cdk/map/src/map.service.ts","../../../../libs/cdk/map/src/acorex-cdk-map.ts"],"sourcesContent":["import { EventEmitter } from '@angular/core';\nimport * as L from 'leaflet';\nimport 'leaflet-draw';\nimport 'leaflet.locatecontrol';\n\nexport interface AXMapLocation {\n latitude: number;\n longitude: number;\n precision?: number;\n title?: string;\n}\nexport type AXMapControlPlace = 'topleft' | 'topright' | 'bottomleft' | 'bottomright';\n\nexport class AXLeafletService {\n private map?: L.Map;\n private drawControl?: L.Control.Draw;\n private locateControl?: L.Control.Locate;\n private drawnItems: L.FeatureGroup = new L.FeatureGroup();\n private eventHandlers: { [key: string]: any[] } = {};\n\n onMarkerChanged = new EventEmitter<AXMapLocation[]>();\n onMarkerAdded = new EventEmitter<AXMapLocation>();\n onLocationFound = new EventEmitter<AXMapLocation>();\n\n constructor(mapElement: HTMLElement, location: AXMapLocation, zoom = 13) {\n L.Icon.Default.imagePath = 'https://unpkg.com/leaflet@1.7.1/dist/images/';\n\n const map = L.map(mapElement).setView([location.latitude, location.longitude], zoom);\n L.tileLayer('https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png', {\n maxZoom: 18,\n attribution: '© ACoreX',\n }).addTo(map);\n\n this.drawnItems.addTo(map);\n this.map = map;\n }\n\n getMap(): L.Map | undefined {\n return this.map;\n }\n\n setZoomLevel(zoom: number): void {\n this.map?.setZoom(zoom);\n }\n\n setCenter(location: AXMapLocation): void {\n if (this.map && location) {\n this.map.setView([location.latitude, location.longitude], this.map.getZoom());\n }\n }\n\n flyTo(location: AXMapLocation, zoom?: number, setMarker = false, duration = 1.0): void {\n if (this.map && location) {\n this.map.flyTo([location.latitude, location.longitude], zoom || this.map.getZoom(), {\n animate: true,\n duration: duration,\n });\n this.map.once('moveend', () => {\n if (setMarker) {\n this.addMarker(location);\n }\n });\n }\n }\n\n addMarker(locations: AXMapLocation | AXMapLocation[]): void {\n const locationsArray = Array.isArray(locations) ? locations : [locations];\n locationsArray.forEach((location) => {\n L.marker([location.latitude, location.longitude]).addTo(this.drawnItems);\n this.onMarkerAdded.emit(location);\n });\n }\n\n getMarkers(): AXMapLocation[] {\n return this.drawnItems\n .getLayers()\n .filter((layer) => layer instanceof L.Marker)\n .map((marker) => {\n const latLng = (marker as L.Marker).getLatLng();\n return {\n latitude: latLng.lat,\n longitude: latLng.lng,\n } as AXMapLocation;\n });\n }\n\n addDrawControl(position: AXMapControlPlace = 'topleft'): void {\n if (this.map) {\n const drawControl = new L.Control.Draw({\n position: position,\n edit: {\n featureGroup: this.drawnItems,\n },\n draw: {\n polygon: false,\n polyline: false,\n rectangle: false,\n circle: false,\n circlemarker: false,\n },\n });\n\n this.drawControl = drawControl;\n this.map.addControl(drawControl);\n\n const onCreated = (event: any) => {\n const layer = event.layer;\n this.drawnItems.addLayer(layer);\n const latLng = (layer as L.Marker).getLatLng();\n this.onMarkerAdded.emit({ latitude: latLng.lat, longitude: latLng.lng });\n };\n\n const onDeleted = () => this.onMarkerChanged.emit(this.getMarkers());\n const onEdited = () => this.onMarkerChanged.emit(this.getMarkers());\n\n // Save handlers for later removal\n this.eventHandlers[L.Draw.Event.CREATED] = [onCreated];\n this.eventHandlers[L.Draw.Event.DELETED] = [onDeleted];\n this.eventHandlers[L.Draw.Event.EDITED] = [onEdited];\n\n this.map.on(L.Draw.Event.CREATED, onCreated);\n this.map.on(L.Draw.Event.DELETED, onDeleted);\n this.map.on(L.Draw.Event.EDITED, onEdited);\n }\n }\n\n addLocateControl(position: AXMapControlPlace = 'bottomright'): void {\n if (this.map) {\n const locateControl = L.control\n .locate({\n position: position,\n flyTo: true,\n setView: 'untilPanOrZoom',\n showPopup: true,\n onLocationError: (e) => alert(e.message),\n onLocationOutsideMapBounds: (control) => control.stop(),\n locateOptions: {\n enableHighAccuracy: true,\n },\n strings: {\n title: 'Show my location',\n popup: 'You are within {distance} meters from this point',\n outsideMapBoundsMsg: 'You seem to be outside the map bounds',\n },\n })\n .addTo(this.map);\n\n this.locateControl = locateControl;\n\n const onLocationFound = (event: any) => {\n const location: AXMapLocation = {\n latitude: event.latitude,\n longitude: event.longitude,\n precision: event.accuracy,\n };\n this.onLocationFound.emit(location);\n };\n\n this.eventHandlers['locationfound'] = [onLocationFound];\n\n this.map.on('locationfound', onLocationFound);\n }\n }\n\n removeDrawControl(): void {\n if (this.map && this.drawControl) {\n this.map.removeControl(this.drawControl);\n this.drawnItems.clearLayers();\n this.removeEventHandlers([L.Draw.Event.CREATED, L.Draw.Event.DELETED, L.Draw.Event.EDITED]);\n this.drawControl = undefined;\n }\n }\n\n removeLocateControl(): void {\n if (this.map && this.locateControl) {\n this.map.removeControl(this.locateControl);\n this.removeEventHandlers(['locationfound']);\n this.locateControl = undefined;\n }\n }\n\n private removeEventHandlers(events: string[]): void {\n events.forEach((event) => {\n const handlers = this.eventHandlers[event];\n if (handlers && this.map) {\n handlers.forEach((handler) => this.map?.off(event, handler));\n delete this.eventHandlers[event];\n }\n });\n }\n\n destroyMap(): void {\n if (this.map) {\n this.map.off();\n this.removeEventHandlers(Object.keys(this.eventHandlers));\n this.map.remove();\n this.map = undefined;\n }\n }\n}\n","import { Injectable } from '@angular/core';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class AXLeafletLoader {\n private stylesLoaded = false;\n private scriptsLoaded = false;\n\n // Load Leaflet styles\n private loadStyles(): void {\n if (!this.stylesLoaded) {\n this.loadStyle('https://unpkg.com/leaflet@1.7.1/dist/leaflet.css');\n this.loadStyle('https://cdnjs.cloudflare.com/ajax/libs/leaflet.draw/1.0.4/leaflet.draw.css');\n this.loadStyle(\n 'https://cdnjs.cloudflare.com/ajax/libs/leaflet.locatecontrol/0.71.0/L.Control.Locate.min.css',\n );\n this.stylesLoaded = true;\n }\n }\n\n // Load Leaflet scripts\n private loadScripts(): void {\n if (!this.scriptsLoaded) {\n this.loadScript('https://unpkg.com/leaflet@1.7.1/dist/leaflet.js')\n .then(() => {\n return this.loadScript('https://cdnjs.cloudflare.com/ajax/libs/leaflet.draw/1.0.4/leaflet.draw.js');\n })\n .then(() => {\n return this.loadScript(\n 'https://cdnjs.cloudflare.com/ajax/libs/leaflet.locatecontrol/0.71.0/L.Control.Locate.min.js',\n );\n });\n this.scriptsLoaded = true;\n }\n }\n\n // Utility function to load styles\n private loadStyle(href: string): void {\n const link = document.createElement('link');\n link.rel = 'stylesheet';\n link.href = href;\n document.head.appendChild(link);\n }\n\n // Utility function to load scripts\n private loadScript(src: string): Promise<void> {\n return new Promise((resolve, reject) => {\n const script = document.createElement('script');\n script.src = src;\n script.async = true;\n script.onload = () => resolve();\n script.onerror = (error) => reject(error);\n document.body.appendChild(script);\n });\n }\n\n // Initialize Leaflet dependencies\n initLeaflet(): Promise<void> {\n return new Promise((resolve) => {\n this.loadStyles();\n this.loadScripts();\n resolve();\n });\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
package/map/index.d.ts
CHANGED
package/map/map.class.d.ts
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { EventEmitter } from '@angular/core';
|
|
1
2
|
import * as L from 'leaflet';
|
|
2
3
|
import 'leaflet-draw';
|
|
3
4
|
import 'leaflet.locatecontrol';
|
|
@@ -13,12 +14,12 @@ export declare class AXLeafletService {
|
|
|
13
14
|
private drawControl?;
|
|
14
15
|
private locateControl?;
|
|
15
16
|
private drawnItems;
|
|
16
|
-
private
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
getMap(): L.Map;
|
|
17
|
+
private eventHandlers;
|
|
18
|
+
onMarkerChanged: EventEmitter<AXMapLocation[]>;
|
|
19
|
+
onMarkerAdded: EventEmitter<AXMapLocation>;
|
|
20
|
+
onLocationFound: EventEmitter<AXMapLocation>;
|
|
21
|
+
constructor(mapElement: HTMLElement, location: AXMapLocation, zoom?: number);
|
|
22
|
+
getMap(): L.Map | undefined;
|
|
22
23
|
setZoomLevel(zoom: number): void;
|
|
23
24
|
setCenter(location: AXMapLocation): void;
|
|
24
25
|
flyTo(location: AXMapLocation, zoom?: number, setMarker?: boolean, duration?: number): void;
|
|
@@ -28,5 +29,6 @@ export declare class AXLeafletService {
|
|
|
28
29
|
addLocateControl(position?: AXMapControlPlace): void;
|
|
29
30
|
removeDrawControl(): void;
|
|
30
31
|
removeLocateControl(): void;
|
|
32
|
+
private removeEventHandlers;
|
|
31
33
|
destroyMap(): void;
|
|
32
34
|
}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import * as i0 from "@angular/core";
|
|
2
|
+
export declare class AXLeafletLoader {
|
|
3
|
+
private stylesLoaded;
|
|
4
|
+
private scriptsLoaded;
|
|
5
|
+
private loadStyles;
|
|
6
|
+
private loadScripts;
|
|
7
|
+
private loadStyle;
|
|
8
|
+
private loadScript;
|
|
9
|
+
initLeaflet(): Promise<void>;
|
|
10
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<AXLeafletLoader, never>;
|
|
11
|
+
static ɵprov: i0.ɵɵInjectableDeclaration<AXLeafletLoader>;
|
|
12
|
+
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@acorex/cdk",
|
|
3
|
-
"version": "18.10.
|
|
3
|
+
"version": "18.10.8",
|
|
4
4
|
"peerDependencies": {
|
|
5
5
|
"@angular/common": "^18.2.0",
|
|
6
6
|
"@angular/core": "^18.2.0",
|
|
@@ -30,17 +30,17 @@
|
|
|
30
30
|
"esm": "./esm2022/map/acorex-cdk-map.mjs",
|
|
31
31
|
"default": "./fesm2022/acorex-cdk-map.mjs"
|
|
32
32
|
},
|
|
33
|
-
"./qrcode": {
|
|
34
|
-
"types": "./qrcode/index.d.ts",
|
|
35
|
-
"esm2022": "./esm2022/qrcode/acorex-cdk-qrcode.mjs",
|
|
36
|
-
"esm": "./esm2022/qrcode/acorex-cdk-qrcode.mjs",
|
|
37
|
-
"default": "./fesm2022/acorex-cdk-qrcode.mjs"
|
|
38
|
-
},
|
|
39
33
|
"./wysiwyg": {
|
|
40
34
|
"types": "./wysiwyg/index.d.ts",
|
|
41
35
|
"esm2022": "./esm2022/wysiwyg/acorex-cdk-wysiwyg.mjs",
|
|
42
36
|
"esm": "./esm2022/wysiwyg/acorex-cdk-wysiwyg.mjs",
|
|
43
37
|
"default": "./fesm2022/acorex-cdk-wysiwyg.mjs"
|
|
38
|
+
},
|
|
39
|
+
"./qrcode": {
|
|
40
|
+
"types": "./qrcode/index.d.ts",
|
|
41
|
+
"esm2022": "./esm2022/qrcode/acorex-cdk-qrcode.mjs",
|
|
42
|
+
"esm": "./esm2022/qrcode/acorex-cdk-qrcode.mjs",
|
|
43
|
+
"default": "./fesm2022/acorex-cdk-qrcode.mjs"
|
|
44
44
|
}
|
|
45
45
|
},
|
|
46
46
|
"dependencies": {
|