@smartbit4all/ng-client 4.0.149 → 4.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2022/lib/smart-client/smart-component-api-client.mjs +32 -7
- package/esm2022/lib/smart-client/smart.component.mjs +12 -5
- package/esm2022/lib/smart-component-layout/smart-component-layout-utility.mjs +18 -1
- package/esm2022/lib/smart-component-layout/smart-component-layout.component.mjs +5 -2
- package/esm2022/lib/smart-map/abstract-map.mjs +74 -0
- package/esm2022/lib/smart-map/api/api/api.mjs +4 -0
- package/esm2022/lib/smart-map/api/api/geoMap.service.mjs +312 -0
- package/esm2022/lib/smart-map/api/api.module.mjs +40 -0
- package/esm2022/lib/smart-map/api/configuration.mjs +91 -0
- package/esm2022/lib/smart-map/api/encoder.mjs +19 -0
- package/esm2022/lib/smart-map/api/index.mjs +7 -0
- package/esm2022/lib/smart-map/api/model/gPSPosition.mjs +13 -0
- package/esm2022/lib/smart-map/api/model/geoMapChange.mjs +2 -0
- package/esm2022/lib/smart-map/api/model/geoMapDataLoadingMode.mjs +17 -0
- package/esm2022/lib/smart-map/api/model/geoMapDataSourceDescriptor.mjs +2 -0
- package/esm2022/lib/smart-map/api/model/geoMapDataSourceType.mjs +18 -0
- package/esm2022/lib/smart-map/api/model/geoMapInteraction.mjs +2 -0
- package/esm2022/lib/smart-map/api/model/geoMapItem.mjs +2 -0
- package/esm2022/lib/smart-map/api/model/geoMapItemKind.mjs +18 -0
- package/esm2022/lib/smart-map/api/model/geoMapLayer.mjs +2 -0
- package/esm2022/lib/smart-map/api/model/geoMapLayerChange.mjs +2 -0
- package/esm2022/lib/smart-map/api/model/geoMapLayerDescriptor.mjs +2 -0
- package/esm2022/lib/smart-map/api/model/geoMapModel.mjs +2 -0
- package/esm2022/lib/smart-map/api/model/geoMapOperationMode.mjs +18 -0
- package/esm2022/lib/smart-map/api/model/geoMapSelectionMode.mjs +18 -0
- package/esm2022/lib/smart-map/api/model/geoMapServerModel.mjs +2 -0
- package/esm2022/lib/smart-map/api/model/geoMapTextType.mjs +17 -0
- package/esm2022/lib/smart-map/api/model/geoMapViewState.mjs +2 -0
- package/esm2022/lib/smart-map/api/model/geoMapViewport.mjs +2 -0
- package/esm2022/lib/smart-map/api/model/models.mjs +19 -0
- package/esm2022/lib/smart-map/api/param.mjs +2 -0
- package/esm2022/lib/smart-map/api/variables.mjs +9 -0
- package/esm2022/lib/smart-map/api-default/api-default.mjs +2 -0
- package/esm2022/lib/smart-map/impl/google-map.mjs +220 -0
- package/esm2022/lib/smart-map/impl/leaflet-map.mjs +165 -0
- package/esm2022/lib/smart-map/projects.mjs +9 -0
- package/esm2022/lib/smart-map/smart-map.component.mjs +193 -0
- package/esm2022/lib/smart-map/smart-map.module.mjs +22 -0
- package/esm2022/lib/smart-map/smart-map.types.mjs +2 -0
- package/esm2022/projects.mjs +2 -1
- package/fesm2022/smartbit4all-ng-client.mjs +1415 -140
- package/fesm2022/smartbit4all-ng-client.mjs.map +1 -1
- package/lib/smart-client/smart-component-api-client.d.ts +9 -6
- package/lib/smart-client/smart.component.d.ts +7 -4
- package/lib/smart-component-layout/smart-component-layout-utility.d.ts +3 -1
- package/lib/smart-component-layout/smart-component-layout.component.d.ts +3 -0
- package/lib/smart-map/abstract-map.d.ts +32 -0
- package/lib/smart-map/api/api/api.d.ts +3 -0
- package/lib/smart-map/api/api/geoMap.service.d.ts +101 -0
- package/lib/smart-map/api/api.module.d.ts +11 -0
- package/lib/smart-map/api/configuration.d.ts +104 -0
- package/lib/smart-map/api/encoder.d.ts +11 -0
- package/lib/smart-map/api/index.d.ts +6 -0
- package/lib/smart-map/api/model/gPSPosition.d.ts +32 -0
- package/lib/smart-map/api/model/geoMapChange.d.ts +19 -0
- package/lib/smart-map/api/model/geoMapDataLoadingMode.d.ts +15 -0
- package/lib/smart-map/api/model/geoMapDataSourceDescriptor.d.ts +50 -0
- package/lib/smart-map/api/model/geoMapDataSourceType.d.ts +16 -0
- package/lib/smart-map/api/model/geoMapInteraction.d.ts +22 -0
- package/lib/smart-map/api/model/geoMapItem.d.ts +38 -0
- package/lib/smart-map/api/model/geoMapItemKind.d.ts +16 -0
- package/lib/smart-map/api/model/geoMapLayer.d.ts +19 -0
- package/lib/smart-map/api/model/geoMapLayerChange.d.ts +20 -0
- package/lib/smart-map/api/model/geoMapLayerDescriptor.d.ts +28 -0
- package/lib/smart-map/api/model/geoMapModel.d.ts +27 -0
- package/lib/smart-map/api/model/geoMapOperationMode.d.ts +16 -0
- package/lib/smart-map/api/model/geoMapSelectionMode.d.ts +16 -0
- package/lib/smart-map/api/model/geoMapServerModel.d.ts +28 -0
- package/lib/smart-map/api/model/geoMapTextType.d.ts +15 -0
- package/lib/smart-map/api/model/geoMapViewState.d.ts +25 -0
- package/lib/smart-map/api/model/geoMapViewport.d.ts +20 -0
- package/lib/smart-map/api/model/models.d.ts +18 -0
- package/lib/smart-map/api/param.d.ts +37 -0
- package/lib/smart-map/api/variables.d.ts +8 -0
- package/lib/smart-map/api-default/api-default.d.ts +2 -0
- package/lib/smart-map/impl/google-map.d.ts +21 -0
- package/lib/smart-map/impl/leaflet-map.d.ts +15 -0
- package/lib/smart-map/projects.d.ts +8 -0
- package/lib/smart-map/smart-map.component.d.ts +33 -0
- package/lib/smart-map/smart-map.module.d.ts +11 -0
- package/lib/smart-map/smart-map.types.d.ts +21 -0
- package/package.json +1 -1
- package/projects.d.ts +1 -0
- package/smartbit4all-ng-client-4.1.1.tgz +0 -0
- package/smartbit4all-ng-client-4.0.149.tgz +0 -0
|
@@ -0,0 +1,165 @@
|
|
|
1
|
+
import { Component } from '@angular/core';
|
|
2
|
+
import { AbstractMap } from '../abstract-map';
|
|
3
|
+
import { GeoMapItemKind } from '../api';
|
|
4
|
+
import * as i0 from "@angular/core";
|
|
5
|
+
function createLeafletMapItem(item) {
|
|
6
|
+
switch (item.kind) {
|
|
7
|
+
case GeoMapItemKind.MARKER:
|
|
8
|
+
return L.marker(L.latLng(item.position.latitude, item.position.longitude), {
|
|
9
|
+
title: item.label,
|
|
10
|
+
});
|
|
11
|
+
case GeoMapItemKind.POLYGON:
|
|
12
|
+
return L.polygon(item.bounds.map((p) => [p.latitude, p.longitude]), { title: item.label });
|
|
13
|
+
}
|
|
14
|
+
throw new Error('Foo!');
|
|
15
|
+
}
|
|
16
|
+
export class LeafletMap extends AbstractMap {
|
|
17
|
+
constructor(el, cd, zone) {
|
|
18
|
+
super(el, cd, zone, createLeafletMapItem);
|
|
19
|
+
}
|
|
20
|
+
ngAfterViewChecked() {
|
|
21
|
+
if (!this.map && this.el.nativeElement.offsetParent) {
|
|
22
|
+
this.initialize();
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
initialize() {
|
|
26
|
+
const options = this.createLeafletMapOptions();
|
|
27
|
+
this.map = L.map('leaflet').setView(options.centre, options.zoom);
|
|
28
|
+
L.tileLayer('https://tile.openstreetmap.org/{z}/{x}/{y}.png', {
|
|
29
|
+
maxZoom: 19,
|
|
30
|
+
attribution: '© <a href="http://www.openstreetmap.org/copyright">OpenStreetMap</a>',
|
|
31
|
+
}).addTo(this.map);
|
|
32
|
+
const items = this.items();
|
|
33
|
+
const toAdd = items.map((it) => ({
|
|
34
|
+
id: it.id,
|
|
35
|
+
record: createLeafletMapItem(it),
|
|
36
|
+
}));
|
|
37
|
+
this.handleItemChanges([], toAdd);
|
|
38
|
+
const model = this.model();
|
|
39
|
+
if (model.viewState?.fitToInitialItems) {
|
|
40
|
+
const datasetBounds = this.findDatasetBounds();
|
|
41
|
+
if (datasetBounds) {
|
|
42
|
+
const { a, b } = datasetBounds;
|
|
43
|
+
const pntA = L.latLng(a.x, a.y);
|
|
44
|
+
const pntB = L.latLng(b.x, b.y);
|
|
45
|
+
const bounds = L.latLngBounds(pntA, pntB);
|
|
46
|
+
this.zone.run(() => {
|
|
47
|
+
this.map.fitBounds(bounds);
|
|
48
|
+
});
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
this.map.on('click', (event) => {
|
|
52
|
+
this.zone.run(() => {
|
|
53
|
+
const pos = event.latlng;
|
|
54
|
+
this.onMapClick.emit({
|
|
55
|
+
coordinates: {
|
|
56
|
+
latitude: pos.lat,
|
|
57
|
+
longitude: pos.lng,
|
|
58
|
+
},
|
|
59
|
+
originalEvent: event,
|
|
60
|
+
});
|
|
61
|
+
});
|
|
62
|
+
});
|
|
63
|
+
this.map.on('moveend', (event) => {
|
|
64
|
+
this.zone.run(() => {
|
|
65
|
+
const viewport = this.getViewport();
|
|
66
|
+
this.onMapDragEnd.emit({
|
|
67
|
+
viewport,
|
|
68
|
+
originalEvent: event,
|
|
69
|
+
});
|
|
70
|
+
});
|
|
71
|
+
});
|
|
72
|
+
this.map.on('zoomend', (event) => {
|
|
73
|
+
this.zone.run(() => {
|
|
74
|
+
const viewport = this.getViewport();
|
|
75
|
+
this.onMapDragEnd.emit({
|
|
76
|
+
viewport,
|
|
77
|
+
originalEvent: event,
|
|
78
|
+
});
|
|
79
|
+
});
|
|
80
|
+
});
|
|
81
|
+
}
|
|
82
|
+
getViewport() {
|
|
83
|
+
if (!this.map) {
|
|
84
|
+
throw new Error('Map is not yet initialised!');
|
|
85
|
+
}
|
|
86
|
+
const center = this.map.getCenter();
|
|
87
|
+
const zoomLevel = this.map.getZoom();
|
|
88
|
+
const leafletBounds = this.map.getBounds();
|
|
89
|
+
const { lat: swLat, lng: swLng } = leafletBounds.getSouthWest();
|
|
90
|
+
const { lat: neLat, lng: neLng } = leafletBounds.getNorthEast();
|
|
91
|
+
return {
|
|
92
|
+
center: {
|
|
93
|
+
latitude: center.lat,
|
|
94
|
+
longitude: center.lng,
|
|
95
|
+
},
|
|
96
|
+
zoomLevel,
|
|
97
|
+
bounds: [
|
|
98
|
+
{ latitude: swLat, longitude: swLng },
|
|
99
|
+
{ latitude: neLat, longitude: neLng },
|
|
100
|
+
],
|
|
101
|
+
};
|
|
102
|
+
}
|
|
103
|
+
createLeafletMapOptions() {
|
|
104
|
+
const viewport = this.model().viewport;
|
|
105
|
+
return {
|
|
106
|
+
centre: [viewport.center.latitude, viewport.center.longitude],
|
|
107
|
+
zoom: viewport.zoomLevel,
|
|
108
|
+
};
|
|
109
|
+
}
|
|
110
|
+
handleItemChanges(toRemove, toAdd) {
|
|
111
|
+
if (!this.map) {
|
|
112
|
+
return;
|
|
113
|
+
}
|
|
114
|
+
toRemove.forEach((it) => {
|
|
115
|
+
it.record.remove();
|
|
116
|
+
this.overlays.delete(it.id);
|
|
117
|
+
});
|
|
118
|
+
toAdd.forEach((it) => {
|
|
119
|
+
it.record.on('click', (event) => {
|
|
120
|
+
this.zone.run(() => {
|
|
121
|
+
this.onOverlayClick.emit({
|
|
122
|
+
itemId: it.id,
|
|
123
|
+
originalEvent: {
|
|
124
|
+
originalEvent: event,
|
|
125
|
+
overlay: it.record,
|
|
126
|
+
map: this.map,
|
|
127
|
+
},
|
|
128
|
+
});
|
|
129
|
+
});
|
|
130
|
+
});
|
|
131
|
+
it.record.addTo(this.map);
|
|
132
|
+
this.overlays.set(it.id, it.record);
|
|
133
|
+
});
|
|
134
|
+
}
|
|
135
|
+
findDatasetBounds() {
|
|
136
|
+
const items = this.items()
|
|
137
|
+
.flatMap((it) => (it.position ? [it.position] : []))
|
|
138
|
+
.map((it) => {
|
|
139
|
+
return { x: it.latitude, y: it.longitude };
|
|
140
|
+
});
|
|
141
|
+
if (!items || items.length === 0) {
|
|
142
|
+
return null;
|
|
143
|
+
}
|
|
144
|
+
let southwest = { x: items[0].x, y: items[0].y };
|
|
145
|
+
let northeast = { x: items[0].x, y: items[0].y };
|
|
146
|
+
items.forEach((it) => {
|
|
147
|
+
if (it.x < southwest.x)
|
|
148
|
+
southwest.x = it.x;
|
|
149
|
+
if (it.y < southwest.y)
|
|
150
|
+
southwest.y = it.y;
|
|
151
|
+
if (it.x > northeast.x)
|
|
152
|
+
northeast.x = it.x;
|
|
153
|
+
if (it.y > northeast.y)
|
|
154
|
+
northeast.y = it.y;
|
|
155
|
+
});
|
|
156
|
+
return { a: southwest, b: northeast };
|
|
157
|
+
}
|
|
158
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: LeafletMap, deps: [{ token: i0.ElementRef }, { token: i0.ChangeDetectorRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
159
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.11", type: LeafletMap, selector: "leaflet-map", usesInheritance: true, ngImport: i0, template: ` <div id="leaflet"></div>`, isInline: true, styles: ["#leaflet{height:720px}\n"] }); }
|
|
160
|
+
}
|
|
161
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: LeafletMap, decorators: [{
|
|
162
|
+
type: Component,
|
|
163
|
+
args: [{ selector: 'leaflet-map', template: ` <div id="leaflet"></div>`, styles: ["#leaflet{height:720px}\n"] }]
|
|
164
|
+
}], ctorParameters: () => [{ type: i0.ElementRef }, { type: i0.ChangeDetectorRef }, { type: i0.NgZone }] });
|
|
165
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGVhZmxldC1tYXAuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zbWFydC1uZy1jbGllbnQvc3JjL2xpYi9zbWFydC1tYXAvaW1wbC9sZWFmbGV0LW1hcC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQXVDLFNBQVMsRUFBc0IsTUFBTSxlQUFlLENBQUM7QUFDbkcsT0FBTyxFQUFFLFdBQVcsRUFBZ0IsTUFBTSxpQkFBaUIsQ0FBQztBQUM1RCxPQUFPLEVBQWMsY0FBYyxFQUFrQixNQUFNLFFBQVEsQ0FBQzs7QUFVcEUsU0FBUyxvQkFBb0IsQ0FBQyxJQUFnQjtJQUM1QyxRQUFRLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUNsQixLQUFLLGNBQWMsQ0FBQyxNQUFNO1lBQ3hCLE9BQU8sQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxRQUFTLENBQUMsUUFBUSxFQUFFLElBQUksQ0FBQyxRQUFTLENBQUMsU0FBUyxDQUFDLEVBQUU7Z0JBQzNFLEtBQUssRUFBRSxJQUFJLENBQUMsS0FBSzthQUNsQixDQUFDLENBQUM7UUFDTCxLQUFLLGNBQWMsQ0FBQyxPQUFPO1lBQ3pCLE9BQU8sQ0FBQyxDQUFDLE9BQU8sQ0FDZCxJQUFJLENBQUMsTUFBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxFQUNsRCxFQUFFLEtBQUssRUFBRSxJQUFJLENBQUMsS0FBSyxFQUFFLENBQ3RCLENBQUM7SUFDTixDQUFDO0lBQ0QsTUFBTSxJQUFJLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQztBQUMxQixDQUFDO0FBVUQsTUFBTSxPQUFPLFVBQVcsU0FBUSxXQUFXO0lBQ3pDLFlBQVksRUFBYyxFQUFFLEVBQXFCLEVBQUUsSUFBWTtRQUM3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QUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO1FBQ3hELElBQUksU0FBUyxHQUFVLEVBQUUsQ0FBQyxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztRQUV4RCxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUU7WUFDbkIsSUFBSSxFQUFFLENBQUMsQ0FBQyxHQUFHLFNBQVMsQ0FBQyxDQUFDO2dCQUFFLFNBQVMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQztZQUMzQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLEdBQUcsU0FBUyxDQUFDLENBQUM7Z0JBQUUsU0FBUyxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDO1lBRTNDLElBQUksRUFBRSxDQUFDLENBQUMsR0FBRyxTQUFTLENBQUMsQ0FBQztnQkFBRSxTQUFTLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUM7WUFDM0MsSUFBSSxFQUFFLENBQUMsQ0FBQyxHQUFHLFNBQVMsQ0FBQyxDQUFDO2dCQUFFLFNBQVMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUM3QyxDQUFDLENBQUMsQ0FBQztRQUVILE9BQU8sRUFBRSxDQUFDLEVBQUUsU0FBUyxFQUFFLENBQUMsRUFBRSxTQUFTLEVBQUUsQ0FBQztJQUN4QyxDQUFDOytHQTFKVSxVQUFVO21HQUFWLFVBQVUsMEVBTlgsMkJBQTJCOzs0RkFNMUIsVUFBVTtrQkFSdEIsU0FBUzsrQkFDRSxhQUFhLFlBQ2IsMkJBQTJCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQWZ0ZXJWaWV3Q2hlY2tlZCwgQ2hhbmdlRGV0ZWN0b3JSZWYsIENvbXBvbmVudCwgRWxlbWVudFJlZiwgTmdab25lIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEFic3RyYWN0TWFwLCBSZWNvcmRXaXRoSWQgfSBmcm9tICcuLi9hYnN0cmFjdC1tYXAnO1xyXG5pbXBvcnQgeyBHZW9NYXBJdGVtLCBHZW9NYXBJdGVtS2luZCwgR2VvTWFwVmlld3BvcnQgfSBmcm9tICcuLi9hcGknO1xyXG5pbXBvcnQgeyBDb29yZCB9IGZyb20gJy4uL3NtYXJ0LW1hcC50eXBlcyc7XHJcblxyXG5kZWNsYXJlIHZhciBMOiBhbnk7XHJcblxyXG5pbnRlcmZhY2UgTGVhZmxldE1hcE9wdGlvbnMge1xyXG4gIGNlbnRyZTogQXJyYXk8bnVtYmVyPjtcclxuICB6b29tOiBudW1iZXI7XHJcbn1cclxuXHJcbmZ1bmN0aW9uIGNyZWF0ZUxlYWZsZXRNYXBJdGVtKGl0ZW06IEdlb01hcEl0ZW0pOiBhbnkge1xyXG4gIHN3aXRjaCAoaXRlbS5raW5kKSB7XHJcbiAgICBjYXNlIEdlb01hcEl0ZW1LaW5kLk1BUktFUjpcclxuICAgICAgcmV0dXJuIEwubWFya2VyKEwubGF0TG5nKGl0ZW0ucG9zaXRpb24hLmxhdGl0dWRlLCBpdGVtLnBvc2l0aW9uIS5sb25naXR1ZGUpLCB7XHJcbiAgICAgICAgdGl0bGU6IGl0ZW0ubGFiZWwsXHJcbiAgICAgIH0pO1xyXG4gICAgY2FzZSBHZW9NYXBJdGVtS2luZC5QT0xZR09OOlxyXG4gICAgICByZXR1cm4gTC5wb2x5Z29uKFxyXG4gICAgICAgIGl0ZW0uYm91bmRzIS5tYXAoKHApID0+IFtwLmxhdGl0dWRlLCBwLmxvbmdpdHVkZV0pLFxyXG4gICAgICAgIHsgdGl0bGU6IGl0ZW0ubGFiZWwgfVxyXG4gICAgICApO1xyXG4gIH1cclxuICB0aHJvdyBuZXcgRXJyb3IoJ0ZvbyEnKTtcclxufVxyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdsZWFmbGV0LW1hcCcsXHJcbiAgdGVtcGxhdGU6IGAgPGRpdiBpZD1cImxlYWZsZXRcIj48L2Rpdj5gLFxyXG4gIHN0eWxlczogYFxyXG4gICAgICAjbGVhZmxldCB7XHJcbiAgICAgICAgICBoZWlnaHQ6IDcyMHB4O1xyXG4gICAgICB9YCxcclxufSlcclxuZXhwb3J0IGNsYXNzIExlYWZsZXRNYXAgZXh0ZW5kcyBBYnN0cmFjdE1hcCBpbXBsZW1lbnRzIEFmdGVyVmlld0NoZWNrZWQge1xyXG4gIGNvbnN0cnVjdG9yKGVsOiBFbGVtZW50UmVmLCBjZDogQ2hhbmdlRGV0ZWN0b3JSZWYsIHpvbmU6IE5nWm9uZSkge1xyXG4gICAgc3VwZXIoZWwsIGNkLCB6b25lLCBjcmVhdGVMZWFmbGV0TWFwSXRlbSk7XHJcbiAgfVxyXG5cclxuICBuZ0FmdGVyVmlld0NoZWNrZWQoKTogdm9pZCB7XHJcbiAgICBpZiAoIXRoaXMubWFwICYmIHRoaXMuZWwubmF0aXZlRWxlbWVudC5vZmZzZXRQYXJlbnQpIHtcclxuICAgICAgdGhpcy5pbml0aWFsaXplKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGluaXRpYWxpemUoKTogdm9pZCB7XHJcbiAgICBjb25zdCBvcHRpb25zID0gdGhpcy5jcmVhdGVMZWFmbGV0TWFwT3B0aW9ucygpO1xyXG4gICAgdGhpcy5tYXAgPSBMLm1hcCgnbGVhZmxldCcpLnNldFZpZXcob3B0aW9ucy5jZW50cmUsIG9wdGlvbnMuem9vbSk7XHJcbiAgICBMLnRpbGVMYXllcignaHR0cHM6Ly90aWxlLm9wZW5zdHJlZXRtYXAub3JnL3t6fS97eH0ve3l9LnBuZycsIHtcclxuICAgICAgbWF4Wm9vbTogMTksXHJcbiAgICAgIGF0dHJpYnV0aW9uOiAnJmNvcHk7IDxhIGhyZWY9XCJodHRwOi8vd3d3Lm9wZW5zdHJlZXRtYXAub3JnL2NvcHlyaWdodFwiPk9wZW5TdHJlZXRNYXA8L2E+JyxcclxuICAgIH0pLmFkZFRvKHRoaXMubWFwKTtcclxuXHJcbiAgICBjb25zdCBpdGVtcyA9IHRoaXMuaXRlbXMoKTtcclxuICAgIGNvbnN0IHRvQWRkOiBBcnJheTxSZWNvcmRXaXRoSWQ+ID0gaXRlbXMubWFwKChpdCkgPT4gKHtcclxuICAgICAgaWQ6IGl0LmlkISxcclxuICAgICAgcmVjb3JkOiBjcmVhdGVMZWFmbGV0TWFwSXRlbShpdCksXHJcbiAgICB9KSk7XHJcbiAgICB0aGlzLmhhbmRsZUl0ZW1DaGFuZ2VzKFtdLCB0b0FkZCk7XHJcbiAgICBjb25zdCBtb2RlbCA9IHRoaXMubW9kZWwoKTtcclxuICAgIGlmIChtb2RlbC52aWV3U3RhdGU/LmZpdFRvSW5pdGlhbEl0ZW1zKSB7XHJcbiAgICAgIGNvbnN0IGRhdGFzZXRCb3VuZHMgPSB0aGlzLmZpbmREYXRhc2V0Qm91bmRzKCk7XHJcbiAgICAgIGlmIChkYXRhc2V0Qm91bmRzKSB7XHJcbiAgICAgICAgY29uc3QgeyBhLCBiIH0gPSBkYXRhc2V0Qm91bmRzO1xyXG4gICAgICAgIGNvbnN0IHBudEEgPSBMLmxhdExuZyhhLngsIGEueSk7XHJcbiAgICAgICAgY29uc3QgcG50QiA9IEwubGF0TG5nKGIueCwgYi55KTtcclxuICAgICAgICBjb25zdCBib3VuZHMgPSBMLmxhdExuZ0JvdW5kcyhwbnRBLCBwbnRCKTtcclxuICAgICAgICB0aGlzLnpvbmUucnVuKCgpID0+IHtcclxuICAgICAgICAgIHRoaXMubWFwLmZpdEJvdW5kcyhib3VuZHMpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICB0aGlzLm1hcC5vbignY2xpY2snLCAoZXZlbnQ6IGFueSkgPT4ge1xyXG4gICAgICB0aGlzLnpvbmUucnVuKCgpID0+IHtcclxuICAgICAgICBjb25zdCBwb3MgPSBldmVudC5sYXRsbmc7XHJcbiAgICAgICAgdGhpcy5vbk1hcENsaWNrLmVtaXQoe1xyXG4gICAgICAgICAgY29vcmRpbmF0ZXM6IHtcclxuICAgICAgICAgICAgbGF0aXR1ZGU6IHBvcy5sYXQgYXMgbnVtYmVyLFxyXG4gICAgICAgICAgICBsb25naXR1ZGU6IHBvcy5sbmcgYXMgbnVtYmVyLFxyXG4gICAgICAgICAgfSxcclxuICAgICAgICAgIG9yaWdpbmFsRXZlbnQ6IGV2ZW50LFxyXG4gICAgICAgIH0pO1xyXG4gICAgICB9KTtcclxuICAgIH0pO1xyXG5cclxuICAgIHRoaXMubWFwLm9uKCdtb3ZlZW5kJywgKGV2ZW50OiBhbnkpID0+IHtcclxuICAgICAgdGhpcy56b25lLnJ1bigoKSA9PiB7XHJcbiAgICAgICAgY29uc3Qgdmlld3BvcnQgPSB0aGlzLmdldFZpZXdwb3J0KCk7XHJcbiAgICAgICAgdGhpcy5vbk1hcERyYWdFbmQuZW1pdCh7XHJcbiAgICAgICAgICB2aWV3cG9ydCxcclxuICAgICAgICAgIG9yaWdpbmFsRXZlbnQ6IGV2ZW50LFxyXG4gICAgICAgIH0pO1xyXG4gICAgICB9KTtcclxuICAgIH0pO1xyXG5cclxuICAgIHRoaXMubWFwLm9uKCd6b29tZW5kJywgKGV2ZW50OiBhbnkpID0+IHtcclxuICAgICAgdGhpcy56b25lLnJ1bigoKSA9PiB7XHJcbiAgICAgICAgY29uc3Qgdmlld3BvcnQgPSB0aGlzLmdldFZpZXdwb3J0KCk7XHJcbiAgICAgICAgdGhpcy5vbk1hcERyYWdFbmQuZW1pdCh7XHJcbiAgICAgICAgICB2aWV3cG9ydCxcclxuICAgICAgICAgIG9yaWdpbmFsRXZlbnQ6IGV2ZW50LFxyXG4gICAgICAgIH0pO1xyXG4gICAgICB9KTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgZ2V0Vmlld3BvcnQoKTogR2VvTWFwVmlld3BvcnQge1xyXG4gICAgaWYgKCF0aGlzLm1hcCkge1xyXG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ01hcCBpcyBub3QgeWV0IGluaXRpYWxpc2VkIScpO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IGNlbnRlciA9IHRoaXMubWFwLmdldENlbnRlcigpO1xyXG4gICAgY29uc3Qgem9vbUxldmVsID0gdGhpcy5tYXAuZ2V0Wm9vbSgpIGFzIG51bWJlcjtcclxuICAgIGNvbnN0IGxlYWZsZXRCb3VuZHMgPSB0aGlzLm1hcC5nZXRCb3VuZHMoKTtcclxuICAgIGNvbnN0IHsgbGF0OiBzd0xhdCwgbG5nOiBzd0xuZyB9ID0gbGVhZmxldEJvdW5kcy5nZXRTb3V0aFdlc3QoKTtcclxuICAgIGNvbnN0IHsgbGF0OiBuZUxhdCwgbG5nOiBuZUxuZyB9ID0gbGVhZmxldEJvdW5kcy5nZXROb3J0aEVhc3QoKTtcclxuXHJcbiAgICByZXR1cm4ge1xyXG4gICAgICBjZW50ZXI6IHtcclxuICAgICAgICBsYXRpdHVkZTogY2VudGVyLmxhdCBhcyBudW1iZXIsXHJcbiAgICAgICAgbG9uZ2l0dWRlOiBjZW50ZXIubG5nIGFzIG51bWJlcixcclxuICAgICAgfSxcclxuICAgICAgem9vbUxldmVsLFxyXG4gICAgICBib3VuZHM6IFtcclxuICAgICAgICB7IGxhdGl0dWRlOiBzd0xhdCwgbG9uZ2l0dWRlOiBzd0xuZyB9LFxyXG4gICAgICAgIHsgbGF0aXR1ZGU6IG5lTGF0LCBsb25naXR1ZGU6IG5lTG5nIH0sXHJcbiAgICAgIF0sXHJcbiAgICB9O1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBjcmVhdGVMZWFmbGV0TWFwT3B0aW9ucygpOiBMZWFmbGV0TWFwT3B0aW9ucyB7XHJcbiAgICBjb25zdCB2aWV3cG9ydDogR2VvTWFwVmlld3BvcnQgPSB0aGlzLm1vZGVsKCkudmlld3BvcnQhO1xyXG4gICAgcmV0dXJuIHtcclxuICAgICAgY2VudHJlOiBbdmlld3BvcnQuY2VudGVyIS5sYXRpdHVkZSwgdmlld3BvcnQuY2VudGVyIS5sb25naXR1ZGVdLFxyXG4gICAgICB6b29tOiB2aWV3cG9ydC56b29tTGV2ZWwhLFxyXG4gICAgfTtcclxuICB9XHJcblxyXG4gIG92ZXJyaWRlIGhhbmRsZUl0ZW1DaGFuZ2VzKHRvUmVtb3ZlOiBBcnJheTxSZWNvcmRXaXRoSWQ+LCB0b0FkZDogQXJyYXk8UmVjb3JkV2l0aElkPik6IHZvaWQge1xyXG4gICAgaWYgKCF0aGlzLm1hcCkge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgdG9SZW1vdmUuZm9yRWFjaCgoaXQpID0+IHtcclxuICAgICAgaXQucmVjb3JkLnJlbW92ZSgpO1xyXG4gICAgICB0aGlzLm92ZXJsYXlzLmRlbGV0ZShpdC5pZCk7XHJcbiAgICB9KTtcclxuXHJcbiAgICB0b0FkZC5mb3JFYWNoKChpdCkgPT4ge1xyXG4gICAgICBpdC5yZWNvcmQub24oJ2NsaWNrJywgKGV2ZW50OiBhbnkpID0+IHtcclxuICAgICAgICB0aGlzLnpvbmUucnVuKCgpID0+IHtcclxuICAgICAgICAgIHRoaXMub25PdmVybGF5Q2xpY2suZW1pdCh7XHJcbiAgICAgICAgICAgIGl0ZW1JZDogaXQuaWQsXHJcbiAgICAgICAgICAgIG9yaWdpbmFsRXZlbnQ6IHtcclxuICAgICAgICAgICAgICBvcmlnaW5hbEV2ZW50OiBldmVudCxcclxuICAgICAgICAgICAgICBvdmVybGF5OiBpdC5yZWNvcmQsXHJcbiAgICAgICAgICAgICAgbWFwOiB0aGlzLm1hcCxcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICB9KTtcclxuICAgICAgaXQucmVjb3JkLmFkZFRvKHRoaXMubWFwKTtcclxuICAgICAgdGhpcy5vdmVybGF5cy5zZXQoaXQuaWQsIGl0LnJlY29yZCk7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZmluZERhdGFzZXRCb3VuZHMoKTogeyBhOiBDb29yZDsgYjogQ29vcmQgfSB8IG51bGwge1xyXG4gICAgY29uc3QgaXRlbXM6IEFycmF5PENvb3JkPiA9IHRoaXMuaXRlbXMoKVxyXG4gICAgICAuZmxhdE1hcCgoaXQpID0+IChpdC5wb3NpdGlvbiA/IFtpdC5wb3NpdGlvbl0gOiBbXSkpXHJcbiAgICAgIC5tYXAoKGl0KSA9PiB7XHJcbiAgICAgICAgcmV0dXJuIHsgeDogaXQubGF0aXR1ZGUsIHk6IGl0LmxvbmdpdHVkZSB9O1xyXG4gICAgICB9KTtcclxuICAgIGlmICghaXRlbXMgfHwgaXRlbXMubGVuZ3RoID09PSAwKSB7XHJcbiAgICAgIHJldHVybiBudWxsO1xyXG4gICAgfVxyXG5cclxuICAgIGxldCBzb3V0aHdlc3Q6IENvb3JkID0geyB4OiBpdGVtc1swXS54LCB5OiBpdGVtc1swXS55IH07XHJcbiAgICBsZXQgbm9ydGhlYXN0OiBDb29yZCA9IHsgeDogaXRlbXNbMF0ueCwgeTogaXRlbXNbMF0ueSB9O1xyXG5cclxuICAgIGl0ZW1zLmZvckVhY2goKGl0KSA9PiB7XHJcbiAgICAgIGlmIChpdC54IDwgc291dGh3ZXN0LngpIHNvdXRod2VzdC54ID0gaXQueDtcclxuICAgICAgaWYgKGl0LnkgPCBzb3V0aHdlc3QueSkgc291dGh3ZXN0LnkgPSBpdC55O1xyXG5cclxuICAgICAgaWYgKGl0LnggPiBub3J0aGVhc3QueCkgbm9ydGhlYXN0LnggPSBpdC54O1xyXG4gICAgICBpZiAoaXQueSA+IG5vcnRoZWFzdC55KSBub3J0aGVhc3QueSA9IGl0Lnk7XHJcbiAgICB9KTtcclxuXHJcbiAgICByZXR1cm4geyBhOiBzb3V0aHdlc3QsIGI6IG5vcnRoZWFzdCB9O1xyXG4gIH1cclxufVxyXG4iXX0=
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
export * from './smart-map.component';
|
|
2
|
+
export * from './smart-map.module';
|
|
3
|
+
export * from './impl/google-map';
|
|
4
|
+
export * from './impl/leaflet-map';
|
|
5
|
+
export * from './api/model/models';
|
|
6
|
+
export * from './smart-map.types';
|
|
7
|
+
export * from './abstract-map';
|
|
8
|
+
export * from './api-default/api-default';
|
|
9
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvamVjdHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zbWFydC1uZy1jbGllbnQvc3JjL2xpYi9zbWFydC1tYXAvcHJvamVjdHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyx1QkFBdUIsQ0FBQztBQUN0QyxjQUFjLG9CQUFvQixDQUFDO0FBQ25DLGNBQWMsbUJBQW1CLENBQUM7QUFDbEMsY0FBYyxvQkFBb0IsQ0FBQztBQUNuQyxjQUFjLG9CQUFvQixDQUFDO0FBQ25DLGNBQWMsbUJBQW1CLENBQUM7QUFDbEMsY0FBYyxnQkFBZ0IsQ0FBQztBQUMvQixjQUFjLDJCQUEyQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9zbWFydC1tYXAuY29tcG9uZW50JztcclxuZXhwb3J0ICogZnJvbSAnLi9zbWFydC1tYXAubW9kdWxlJztcclxuZXhwb3J0ICogZnJvbSAnLi9pbXBsL2dvb2dsZS1tYXAnO1xyXG5leHBvcnQgKiBmcm9tICcuL2ltcGwvbGVhZmxldC1tYXAnO1xyXG5leHBvcnQgKiBmcm9tICcuL2FwaS9tb2RlbC9tb2RlbHMnO1xyXG5leHBvcnQgKiBmcm9tICcuL3NtYXJ0LW1hcC50eXBlcyc7XHJcbmV4cG9ydCAqIGZyb20gJy4vYWJzdHJhY3QtbWFwJztcclxuZXhwb3J0ICogZnJvbSAnLi9hcGktZGVmYXVsdC9hcGktZGVmYXVsdCc7XHJcbiJdfQ==
|
|
@@ -0,0 +1,193 @@
|
|
|
1
|
+
import { Component, computed, Inject, InjectionToken, Input, signal, } from '@angular/core';
|
|
2
|
+
import { lastValueFrom } from 'rxjs';
|
|
3
|
+
import { GeoMapItemKind, GeoMapOperationMode, } from './api';
|
|
4
|
+
import * as i0 from "@angular/core";
|
|
5
|
+
import * as i1 from "./api";
|
|
6
|
+
import * as i2 from "./impl/google-map";
|
|
7
|
+
import * as i3 from "./impl/leaflet-map";
|
|
8
|
+
export var MapEngine;
|
|
9
|
+
(function (MapEngine) {
|
|
10
|
+
MapEngine["GOOGLE"] = "GOOGLE";
|
|
11
|
+
MapEngine["LEAFLET"] = "LEAFLET";
|
|
12
|
+
})(MapEngine || (MapEngine = {}));
|
|
13
|
+
export const MAP_ENGINE = new InjectionToken('MAP_ENGINE');
|
|
14
|
+
const itemEq = (a, b) => {
|
|
15
|
+
const positions = new Set(a.map((it) => it.position));
|
|
16
|
+
b.forEach((it) => positions.delete(it.position));
|
|
17
|
+
return a.length === b.length && positions.size === 0;
|
|
18
|
+
};
|
|
19
|
+
export class SmartMapComponent {
|
|
20
|
+
constructor(mapEngine, api) {
|
|
21
|
+
this.mapEngine = mapEngine;
|
|
22
|
+
this.api = api;
|
|
23
|
+
this.MapEngine = MapEngine;
|
|
24
|
+
this.model = signal(undefined);
|
|
25
|
+
this.items = computed(() => {
|
|
26
|
+
const model = this.model();
|
|
27
|
+
return model?.layers.flatMap((l) => l.items ?? []) ?? [];
|
|
28
|
+
});
|
|
29
|
+
this.selection = computed(() => new Set(this.items()
|
|
30
|
+
.filter((it) => !!it.selected)
|
|
31
|
+
.map((it) => it.id)
|
|
32
|
+
.values()));
|
|
33
|
+
}
|
|
34
|
+
ngOnInit() {
|
|
35
|
+
// this.load();
|
|
36
|
+
}
|
|
37
|
+
ngAfterViewInit() {
|
|
38
|
+
this.load();
|
|
39
|
+
}
|
|
40
|
+
async load() {
|
|
41
|
+
const model = await lastValueFrom(this.api.load(this.uuid, this.identifier));
|
|
42
|
+
if (!model.viewport) {
|
|
43
|
+
throw new Error('GeoMapModel contains no viewport!');
|
|
44
|
+
}
|
|
45
|
+
this.model.update(() => model);
|
|
46
|
+
}
|
|
47
|
+
async move(viewport) {
|
|
48
|
+
this.model.update((it) => {
|
|
49
|
+
console.log('model update is running!');
|
|
50
|
+
if (it) {
|
|
51
|
+
it.viewport = viewport;
|
|
52
|
+
}
|
|
53
|
+
return it;
|
|
54
|
+
});
|
|
55
|
+
const change = await lastValueFrom(this.api.move(this.uuid, this.identifier, viewport));
|
|
56
|
+
this.handleChange(change);
|
|
57
|
+
}
|
|
58
|
+
async update(mapState) {
|
|
59
|
+
this.model.update((it) => {
|
|
60
|
+
if (it) {
|
|
61
|
+
it.viewState = mapState;
|
|
62
|
+
}
|
|
63
|
+
return it;
|
|
64
|
+
});
|
|
65
|
+
const change = await lastValueFrom(this.api.update(this.uuid, this.identifier, mapState));
|
|
66
|
+
this.handleChange(change);
|
|
67
|
+
}
|
|
68
|
+
handleChange(change) {
|
|
69
|
+
if (!change.items) {
|
|
70
|
+
return;
|
|
71
|
+
}
|
|
72
|
+
this.model.update((it) => {
|
|
73
|
+
const layersById = new Map();
|
|
74
|
+
if (!it) {
|
|
75
|
+
return it;
|
|
76
|
+
}
|
|
77
|
+
it.layers.forEach((layer) => layersById.set(layer.code, layer));
|
|
78
|
+
for (const layerChange of change.items) {
|
|
79
|
+
const layerId = layerChange.code;
|
|
80
|
+
const toAdd = layerChange.toAdd;
|
|
81
|
+
layersById.set(layerId, {
|
|
82
|
+
code: layerId,
|
|
83
|
+
items: toAdd,
|
|
84
|
+
});
|
|
85
|
+
}
|
|
86
|
+
return {
|
|
87
|
+
...it,
|
|
88
|
+
layers: [...layersById.values()],
|
|
89
|
+
};
|
|
90
|
+
});
|
|
91
|
+
}
|
|
92
|
+
handleMapClick(position) {
|
|
93
|
+
const operationMode = this.model()?.viewState?.operationMode ?? GeoMapOperationMode.ACTION;
|
|
94
|
+
switch (operationMode) {
|
|
95
|
+
case GeoMapOperationMode.ACTION:
|
|
96
|
+
// TODO: Fire action for layer, if applicable (maybe only on double click).
|
|
97
|
+
break;
|
|
98
|
+
case GeoMapOperationMode.SELECTION:
|
|
99
|
+
// no-op, can't select empty space.
|
|
100
|
+
break;
|
|
101
|
+
case GeoMapOperationMode.PLACEMENT:
|
|
102
|
+
lastValueFrom(this.api.interact(this.uuid, this.identifier, {
|
|
103
|
+
operationMode,
|
|
104
|
+
targetItem: {
|
|
105
|
+
kind: GeoMapItemKind.MARKER, // FIXME: We shall support more item kinds!
|
|
106
|
+
position,
|
|
107
|
+
icons: {},
|
|
108
|
+
bounds: [],
|
|
109
|
+
actions: [],
|
|
110
|
+
},
|
|
111
|
+
targetLayer: '',
|
|
112
|
+
inverse: false,
|
|
113
|
+
})).then((change) => {
|
|
114
|
+
if (!this.viewContextService) {
|
|
115
|
+
console.warn('Smart Map has no ViewContext Service set up!');
|
|
116
|
+
return null;
|
|
117
|
+
}
|
|
118
|
+
else {
|
|
119
|
+
return this.viewContextService.handlePerformActionResponse(change);
|
|
120
|
+
}
|
|
121
|
+
}, (err) => {
|
|
122
|
+
console.warn('Could not submit selection change! ', err);
|
|
123
|
+
});
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
handleItemClick(id) {
|
|
127
|
+
const operationMode = this.model()?.viewState?.operationMode ?? GeoMapOperationMode.ACTION;
|
|
128
|
+
const targetItem = this.items().find((it) => id === it.id);
|
|
129
|
+
if (!targetItem) {
|
|
130
|
+
console.warn('Selection item is seemingly missing from known items: ', id);
|
|
131
|
+
return;
|
|
132
|
+
}
|
|
133
|
+
switch (operationMode) {
|
|
134
|
+
case GeoMapOperationMode.ACTION:
|
|
135
|
+
// TODO: fire action!
|
|
136
|
+
break;
|
|
137
|
+
case GeoMapOperationMode.SELECTION:
|
|
138
|
+
lastValueFrom(this.api.interact(this.uuid, this.identifier, {
|
|
139
|
+
operationMode,
|
|
140
|
+
targetItem,
|
|
141
|
+
targetLayer: '',
|
|
142
|
+
inverse: this.selection().has(id),
|
|
143
|
+
})).then((change) => {
|
|
144
|
+
if (!this.viewContextService) {
|
|
145
|
+
console.warn('Smart Map has no ViewContext Service set up!');
|
|
146
|
+
return null;
|
|
147
|
+
}
|
|
148
|
+
else {
|
|
149
|
+
return this.viewContextService.handlePerformActionResponse(change);
|
|
150
|
+
}
|
|
151
|
+
}, (err) => {
|
|
152
|
+
console.warn('Could not submit selection change! ', err);
|
|
153
|
+
});
|
|
154
|
+
break;
|
|
155
|
+
case GeoMapOperationMode.PLACEMENT:
|
|
156
|
+
// clicking an item may remove it, if it's only a pending item. To reposition existing
|
|
157
|
+
// items, we shall react to dragEnd events only.
|
|
158
|
+
lastValueFrom(this.api.interact(this.uuid, this.identifier, {
|
|
159
|
+
operationMode,
|
|
160
|
+
targetItem,
|
|
161
|
+
targetLayer: '',
|
|
162
|
+
inverse: true,
|
|
163
|
+
})).then((change) => {
|
|
164
|
+
if (!this.viewContextService) {
|
|
165
|
+
console.warn('Smart Map has no ViewContext Service set up!');
|
|
166
|
+
return null;
|
|
167
|
+
}
|
|
168
|
+
else {
|
|
169
|
+
return this.viewContextService.handlePerformActionResponse(change);
|
|
170
|
+
}
|
|
171
|
+
}, (err) => {
|
|
172
|
+
console.warn('Could not submit placement change! ', err);
|
|
173
|
+
});
|
|
174
|
+
break;
|
|
175
|
+
}
|
|
176
|
+
}
|
|
177
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: SmartMapComponent, deps: [{ token: MAP_ENGINE }, { token: i1.GeoMapService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
178
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.11", type: SmartMapComponent, selector: "smart-map", inputs: { uuid: "uuid", identifier: "identifier", parent: "parent" }, ngImport: i0, template: "@if (model()) { @if (mapEngine === MapEngine.GOOGLE) {\r\n<google-map\r\n [model]=\"model()!\"\r\n [items]=\"items()\"\r\n [style]=\"{ width: '100%', height: '320px' }\"\r\n (onMapDragEnd)=\"move($event.viewport)\"\r\n (onZoomChanged)=\"move($event.viewport)\"\r\n (onMapClick)=\"handleMapClick($event.coordinates)\"\r\n (onOverlayClick)=\"handleItemClick($event.itemId)\"\r\n>\r\n</google-map>\r\n} @else if (mapEngine === MapEngine.LEAFLET) {\r\n<leaflet-map\r\n [model]=\"model()!\"\r\n [items]=\"items()\"\r\n (onMapDragEnd)=\"move($event.viewport)\"\r\n (onZoomChanged)=\"move($event.viewport)\"\r\n (onMapClick)=\"handleMapClick($event.coordinates)\"\r\n (onOverlayClick)=\"handleItemClick($event.itemId)\"\r\n>\r\n</leaflet-map>\r\n} @else {\r\n<p>\r\n <strong>Not recognised map engine: [ {{ mapEngine }} ]</strong>\r\n</p>\r\n<p>Please provide a valid choice of map engine!</p>\r\n} }\r\n", styles: [""], dependencies: [{ kind: "component", type: i2.GoogleMap, selector: "google-map", inputs: ["style", "styleClass"], outputs: ["onOverlayDblClick", "onOverlayDragStart", "onOverlayDrag", "onOverlayDragEnd", "onMapReady"] }, { kind: "component", type: i3.LeafletMap, selector: "leaflet-map" }] }); }
|
|
179
|
+
}
|
|
180
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: SmartMapComponent, decorators: [{
|
|
181
|
+
type: Component,
|
|
182
|
+
args: [{ selector: 'smart-map', template: "@if (model()) { @if (mapEngine === MapEngine.GOOGLE) {\r\n<google-map\r\n [model]=\"model()!\"\r\n [items]=\"items()\"\r\n [style]=\"{ width: '100%', height: '320px' }\"\r\n (onMapDragEnd)=\"move($event.viewport)\"\r\n (onZoomChanged)=\"move($event.viewport)\"\r\n (onMapClick)=\"handleMapClick($event.coordinates)\"\r\n (onOverlayClick)=\"handleItemClick($event.itemId)\"\r\n>\r\n</google-map>\r\n} @else if (mapEngine === MapEngine.LEAFLET) {\r\n<leaflet-map\r\n [model]=\"model()!\"\r\n [items]=\"items()\"\r\n (onMapDragEnd)=\"move($event.viewport)\"\r\n (onZoomChanged)=\"move($event.viewport)\"\r\n (onMapClick)=\"handleMapClick($event.coordinates)\"\r\n (onOverlayClick)=\"handleItemClick($event.itemId)\"\r\n>\r\n</leaflet-map>\r\n} @else {\r\n<p>\r\n <strong>Not recognised map engine: [ {{ mapEngine }} ]</strong>\r\n</p>\r\n<p>Please provide a valid choice of map engine!</p>\r\n} }\r\n" }]
|
|
183
|
+
}], ctorParameters: () => [{ type: MapEngine, decorators: [{
|
|
184
|
+
type: Inject,
|
|
185
|
+
args: [MAP_ENGINE]
|
|
186
|
+
}] }, { type: i1.GeoMapService }], propDecorators: { uuid: [{
|
|
187
|
+
type: Input
|
|
188
|
+
}], identifier: [{
|
|
189
|
+
type: Input
|
|
190
|
+
}], parent: [{
|
|
191
|
+
type: Input
|
|
192
|
+
}] } });
|
|
193
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic21hcnQtbWFwLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NtYXJ0LW5nLWNsaWVudC9zcmMvbGliL3NtYXJ0LW1hcC9zbWFydC1tYXAuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc21hcnQtbmctY2xpZW50L3NyYy9saWIvc21hcnQtbWFwL3NtYXJ0LW1hcC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBRUwsU0FBUyxFQUNULFFBQVEsRUFDUixNQUFNLEVBQ04sY0FBYyxFQUNkLEtBQUssRUFHTCxNQUFNLEdBR1AsTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNyQyxPQUFPLEVBR0wsY0FBYyxFQUdkLG1CQUFtQixHQUtwQixNQUFNLE9BQU8sQ0FBQzs7Ozs7QUFJZixNQUFNLENBQU4sSUFBWSxTQUdYO0FBSEQsV0FBWSxTQUFTO0lBQ25CLDhCQUFpQixDQUFBO0lBQ2pCLGdDQUFtQixDQUFBO0FBQ3JCLENBQUMsRUFIVyxTQUFTLEtBQVQsU0FBUyxRQUdwQjtBQUVELE1BQU0sQ0FBQyxNQUFNLFVBQVUsR0FBRyxJQUFJLGNBQWMsQ0FBWSxZQUFZLENBQUMsQ0FBQztBQUV0RSxNQUFNLE1BQU0sR0FBdUMsQ0FBQyxDQUFvQixFQUFFLENBQW9CLEVBQUUsRUFBRTtJQUNoRyxNQUFNLFNBQVMsR0FBRyxJQUFJLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBYyxFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQztJQUNsRSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsRUFBYyxFQUFFLEVBQUUsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDO0lBQzdELE9B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clxuICBBZnRlclZpZXdJbml0LFxyXG4gIENvbXBvbmVudCxcclxuICBjb21wdXRlZCxcclxuICBJbmplY3QsXHJcbiAgSW5qZWN0aW9uVG9rZW4sXHJcbiAgSW5wdXQsXHJcbiAgT25Jbml0LFxyXG4gIFNpZ25hbCxcclxuICBzaWduYWwsXHJcbiAgVmFsdWVFcXVhbGl0eUZuLFxyXG4gIFdyaXRhYmxlU2lnbmFsLFxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBTbWFydENvbXBvbmVudCB9IGZyb20gJy4uL3NtYXJ0LWNsaWVudC9zbWFydC5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBsYXN0VmFsdWVGcm9tIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7XHJcbiAgR2VvTWFwQ2hhbmdlLFxyXG4gIEdlb01hcEl0ZW0sXHJcbiAgR2VvTWFwSXRlbUtpbmQsXHJcbiAgR2VvTWFwTGF5ZXIsXHJcbiAgR2VvTWFwTW9kZWwsXHJcbiAgR2VvTWFwT3BlcmF0aW9uTW9kZSxcclxuICBHZW9NYXBTZXJ2aWNlLFxyXG4gIEdlb01hcFZpZXdwb3J0LFxyXG4gIEdlb01hcFZpZXdTdGF0ZSxcclxuICBHUFNQb3NpdGlvbixcclxufSBmcm9tICcuL2FwaSc7XHJcbmltcG9ydCB7IFZpZXdDb250ZXh0Q2hhbmdlIH0gZnJvbSAnLi4vdmlldy1jb250ZXh0L2FwaSc7XHJcbmltcG9ydCB7IFNtYXJ0Vmlld0NvbnRleHRTZXJ2aWNlIH0gZnJvbSAnLi4vdmlldy1jb250ZXh0L3NtYXJ0LXZpZXctY29udGV4dC5zZXJ2aWNlJztcclxuXHJcbmV4cG9ydCBlbnVtIE1hcEVuZ2luZSB7XHJcbiAgR09PR0xFID0gJ0dPT0dMRScsXHJcbiAgTEVBRkxFVCA9ICdMRUFGTEVUJyxcclxufVxyXG5cclxuZXhwb3J0IGNvbnN0IE1BUF9FTkdJTkUgPSBuZXcgSW5qZWN0aW9uVG9rZW48TWFwRW5naW5lPignTUFQX0VOR0lORScpO1xyXG5cclxuY29uc3QgaXRlbUVxOiBWYWx1ZUVxdWFsaXR5Rm48QXJyYXk8R2VvTWFwSXRlbT4+ID0gKGE6IEFycmF5PEdlb01hcEl0ZW0+LCBiOiBBcnJheTxHZW9NYXBJdGVtPikgPT4ge1xyXG4gIGNvbnN0IHBvc2l0aW9ucyA9IG5ldyBTZXQoYS5tYXAoKGl0OiBHZW9NYXBJdGVtKSA9PiBpdC5wb3NpdGlvbikpO1xyXG4gIGIuZm9yRWFjaCgoaXQ6IEdlb01hcEl0ZW0pID0+IHBvc2l0aW9ucy5kZWxldGUoaXQucG9zaXRpb24pKTtcclxuICByZXR1cm4gYS5sZW5ndGggPT09IGIubGVuZ3RoICYmIHBvc2l0aW9ucy5zaXplID09PSAwO1xyXG59O1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdzbWFydC1tYXAnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9zbWFydC1tYXAuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsOiAnLi9zbWFydC1tYXAuY29tcG9uZW50LmNzcycsXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBTbWFydE1hcENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgQWZ0ZXJWaWV3SW5pdCB7XHJcbiAgTWFwRW5naW5lID0gTWFwRW5naW5lO1xyXG5cclxuICBASW5wdXQoKSB1dWlkITogc3RyaW5nO1xyXG4gIEBJbnB1dCgpIGlkZW50aWZpZXIhOiBzdHJpbmc7XHJcbiAgQElucHV0KCkgcGFyZW50PzogU21hcnRDb21wb25lbnQ8YW55PjtcclxuXHJcbiAgcmVhZG9ubHkgbW9kZWw6IFdyaXRhYmxlU2lnbmFsPEdlb01hcE1vZGVsIHwgdW5kZWZpbmVkPiA9IHNpZ25hbCh1bmRlZmluZWQpO1xyXG4gIHJlYWRvbmx5IGl0ZW1zOiBTaWduYWw8QXJyYXk8R2VvTWFwSXRlbT4+ID0gY29tcHV0ZWQoKCkgPT4ge1xyXG4gICAgY29uc3QgbW9kZWwgPSB0aGlzLm1vZGVsKCk7XHJcbiAgICByZXR1cm4gbW9kZWw/LmxheWVycy5mbGF0TWFwKChsKSA9PiBsLml0ZW1zID8/IFtdKSA/PyBbXTtcclxuICB9KTtcclxuXHJcbiAgcmVhZG9ubHkgc2VsZWN0aW9uOiBTaWduYWw8U2V0PHN0cmluZz4+ID0gY29tcHV0ZWQoXHJcbiAgICAoKSA9PlxyXG4gICAgICBuZXcgU2V0KFxyXG4gICAgICAgIHRoaXMuaXRlbXMoKVxyXG4gICAgICAgICAgLmZpbHRlcigoaXQpID0+ICEhaXQuc2VsZWN0ZWQpXHJcbiAgICAgICAgICAubWFwKChpdCkgPT4gaXQuaWQhKVxyXG4gICAgICAgICAgLnZhbHVlcygpXHJcbiAgICAgIClcclxuICApO1xyXG5cclxuICB2aWV3Q29udGV4dFNlcnZpY2U/OiBTbWFydFZpZXdDb250ZXh0U2VydmljZTtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBASW5qZWN0KE1BUF9FTkdJTkUpXHJcbiAgICBwdWJsaWMgbWFwRW5naW5lOiBNYXBFbmdpbmUsXHJcbiAgICBwcml2YXRlIGFwaTogR2VvTWFwU2VydmljZVxyXG4gICkge31cclxuXHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICAvLyB0aGlzLmxvYWQoKTtcclxuICB9XHJcblxyXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcclxuICAgIHRoaXMubG9hZCgpO1xyXG4gIH1cclxuXHJcbiAgYXN5bmMgbG9hZCgpOiBQcm9taXNlPHZvaWQ+IHtcclxuICAgIGNvbnN0IG1vZGVsOiBHZW9NYXBNb2RlbCA9IGF3YWl0IGxhc3RWYWx1ZUZyb20odGhpcy5hcGkubG9hZCh0aGlzLnV1aWQsIHRoaXMuaWRlbnRpZmllcikpO1xyXG4gICAgaWYgKCFtb2RlbC52aWV3cG9ydCkge1xyXG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0dlb01hcE1vZGVsIGNvbnRhaW5zIG5vIHZpZXdwb3J0IScpO1xyXG4gICAgfVxyXG4gICAgdGhpcy5tb2RlbC51cGRhdGUoKCkgPT4gbW9kZWwpO1xyXG4gIH1cclxuXHJcbiAgYXN5bmMgbW92ZSh2aWV3cG9ydDogR2VvTWFwVmlld3BvcnQpOiBQcm9taXNlPHZvaWQ+IHtcclxuICAgIHRoaXMubW9kZWwudXBkYXRlKChpdCkgPT4ge1xyXG4gICAgICBjb25zb2xlLmxvZygnbW9kZWwgdXBkYXRlIGlzIHJ1bm5pbmchJyk7XHJcbiAgICAgIGlmIChpdCkge1xyXG4gICAgICAgIGl0LnZpZXdwb3J0ID0gdmlld3BvcnQ7XHJcbiAgICAgIH1cclxuICAgICAgcmV0dXJuIGl0O1xyXG4gICAgfSk7XHJcbiAgICBjb25zdCBjaGFuZ2U6IEdlb01hcENoYW5nZSA9IGF3YWl0IGxhc3RWYWx1ZUZyb20oXHJcbiAgICAgIHRoaXMuYXBpLm1vdmUodGhpcy51dWlkLCB0aGlzLmlkZW50aWZpZXIsIHZpZXdwb3J0KVxyXG4gICAgKTtcclxuICAgIHRoaXMuaGFuZGxlQ2hhbmdlKGNoYW5nZSk7XHJcbiAgfVxyXG5cclxuICBhc3luYyB1cGRhdGUobWFwU3RhdGU6IEdlb01hcFZpZXdTdGF0ZSk6IFByb21pc2U8dm9pZD4ge1xyXG4gICAgdGhpcy5tb2RlbC51cGRhdGUoKGl0KSA9PiB7XHJcbiAgICAgIGlmIChpdCkge1xyXG4gICAgICAgIGl0LnZpZXdTdGF0ZSA9IG1hcFN0YXRlO1xyXG4gICAgICB9XHJcbiAgICAgIHJldHVybiBpdDtcclxuICAgIH0pO1xyXG4gICAgY29uc3QgY2hhbmdlOiBHZW9NYXBDaGFuZ2UgPSBhd2FpdCBsYXN0VmFsdWVGcm9tKFxyXG4gICAgICB0aGlzLmFwaS51cGRhdGUodGhpcy51dWlkLCB0aGlzLmlkZW50aWZpZXIsIG1hcFN0YXRlKVxyXG4gICAgKTtcclxuICAgIHRoaXMuaGFuZGxlQ2hhbmdlKGNoYW5nZSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGhhbmRsZUNoYW5nZShjaGFuZ2U6IEdlb01hcENoYW5nZSk6IHZvaWQge1xyXG4gICAgaWYgKCFjaGFuZ2UuaXRlbXMpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMubW9kZWwudXBkYXRlKChpdCkgPT4ge1xyXG4gICAgICBjb25zdCBsYXllcnNCeUlkOiBNYXA8c3RyaW5nLCBHZW9NYXBMYXllcj4gPSBuZXcgTWFwKCk7XHJcbiAgICAgIGlmICghaXQpIHtcclxuICAgICAgICByZXR1cm4gaXQ7XHJcbiAgICAgIH1cclxuICAgICAgaXQubGF5ZXJzLmZvckVhY2goKGxheWVyKSA9PiBsYXllcnNCeUlkLnNldChsYXllci5jb2RlISwgbGF5ZXIpKTtcclxuICAgICAgZm9yIChjb25zdCBsYXllckNoYW5nZSBvZiBjaGFuZ2UuaXRlbXMpIHtcclxuICAgICAgICBjb25zdCBsYXllcklkID0gbGF5ZXJDaGFuZ2UuY29kZSE7XHJcbiAgICAgICAgY29uc3QgdG9BZGQgPSBsYXllckNoYW5nZS50b0FkZDtcclxuICAgICAgICBsYXllcnNCeUlkLnNldChsYXllcklkLCB7XHJcbiAgICAgICAgICBjb2RlOiBsYXllcklkLFxyXG4gICAgICAgICAgaXRlbXM6IHRvQWRkLFxyXG4gICAgICAgIH0pO1xyXG4gICAgICB9XHJcbiAgICAgIHJldHVybiB7XHJcbiAgICAgICAgLi4uaXQsXHJcbiAgICAgICAgbGF5ZXJzOiBbLi4ubGF5ZXJzQnlJZC52YWx1ZXMoKV0sXHJcbiAgICAgIH07XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIGhhbmRsZU1hcENsaWNrKHBvc2l0aW9uOiBHUFNQb3NpdGlvbik6IHZvaWQge1xyXG4gICAgY29uc3Qgb3BlcmF0aW9uTW9kZSA9IHRoaXMubW9kZWwoKT8udmlld1N0YXRlPy5vcGVyYXRpb25Nb2RlID8/IEdlb01hcE9wZXJhdGlvbk1vZGUuQUNUSU9OO1xyXG4gICAgc3dpdGNoIChvcGVyYXRpb25Nb2RlKSB7XHJcbiAgICAgIGNhc2UgR2VvTWFwT3BlcmF0aW9uTW9kZS5BQ1RJT046XHJcbiAgICAgICAgLy8gVE9ETzogRmlyZSBhY3Rpb24gZm9yIGxheWVyLCBpZiBhcHBsaWNhYmxlIChtYXliZSBvbmx5IG9uIGRvdWJsZSBjbGljaykuXHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgR2VvTWFwT3BlcmF0aW9uTW9kZS5TRUxFQ1RJT046XHJcbiAgICAgICAgLy8gbm8tb3AsIGNhbid0IHNlbGVjdCBlbXB0eSBzcGFjZS5cclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSBHZW9NYXBPcGVyYXRpb25Nb2RlLlBMQUNFTUVOVDpcclxuICAgICAgICBsYXN0VmFsdWVGcm9tKFxyXG4gICAgICAgICAgdGhpcy5hcGkuaW50ZXJhY3QodGhpcy51dWlkLCB0aGlzLmlkZW50aWZpZXIsIHtcclxuICAgICAgICAgICAgb3BlcmF0aW9uTW9kZSxcclxuICAgICAgICAgICAgdGFyZ2V0SXRlbToge1xyXG4gICAgICAgICAgICAgIGtpbmQ6IEdlb01hcEl0ZW1LaW5kLk1BUktFUiwgLy8gRklYTUU6IFdlIHNoYWxsIHN1cHBvcnQgbW9yZSBpdGVtIGtpbmRzIVxyXG4gICAgICAgICAgICAgIHBvc2l0aW9uLFxyXG4gICAgICAgICAgICAgIGljb25zOiB7fSxcclxuICAgICAgICAgICAgICBib3VuZHM6IFtdLFxyXG4gICAgICAgICAgICAgIGFjdGlvbnM6IFtdLFxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICB0YXJnZXRMYXllcjogJycsXHJcbiAgICAgICAgICAgIGludmVyc2U6IGZhbHNlLFxyXG4gICAgICAgICAgfSlcclxuICAgICAgICApLnRoZW4oXHJcbiAgICAgICAgICAoY2hhbmdlOiBWaWV3Q29udGV4dENoYW5nZSkgPT4ge1xyXG4gICAgICAgICAgICBpZiAoIXRoaXMudmlld0NvbnRleHRTZXJ2aWNlKSB7XHJcbiAgICAgICAgICAgICAgY29uc29sZS53YXJuKCdTbWFydCBNYXAgaGFzIG5vIFZpZXdDb250ZXh0IFNlcnZpY2Ugc2V0IHVwIScpO1xyXG4gICAgICAgICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgIHJldHVybiB0aGlzLnZpZXdDb250ZXh0U2VydmljZS5oYW5kbGVQZXJmb3JtQWN0aW9uUmVzcG9uc2UoY2hhbmdlKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfSxcclxuICAgICAgICAgIChlcnI6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICBjb25zb2xlLndhcm4oJ0NvdWxkIG5vdCBzdWJtaXQgc2VsZWN0aW9uIGNoYW5nZSEgJywgZXJyKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICApO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgaGFuZGxlSXRlbUNsaWNrKGlkOiBzdHJpbmcpOiB2b2lkIHtcclxuICAgIGNvbnN0IG9wZXJhdGlvbk1vZGUgPSB0aGlzLm1vZGVsKCk/LnZpZXdTdGF0ZT8ub3BlcmF0aW9uTW9kZSA/PyBHZW9NYXBPcGVyYXRpb25Nb2RlLkFDVElPTjtcclxuICAgIGNvbnN0IHRhcmdldEl0ZW0gPSB0aGlzLml0ZW1zKCkuZmluZCgoaXQpID0+IGlkID09PSBpdC5pZCk7XHJcbiAgICBpZiAoIXRhcmdldEl0ZW0pIHtcclxuICAgICAgY29uc29sZS53YXJuKCdTZWxlY3Rpb24gaXRlbSBpcyBzZWVtaW5nbHkgbWlzc2luZyBmcm9tIGtub3duIGl0ZW1zOiAnLCBpZCk7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICBzd2l0Y2ggKG9wZXJhdGlvbk1vZGUpIHtcclxuICAgICAgY2FzZSBHZW9NYXBPcGVyYXRpb25Nb2RlLkFDVElPTjpcclxuICAgICAgICAvLyBUT0RPOiBmaXJlIGFjdGlvbiFcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSBHZW9NYXBPcGVyYXRpb25Nb2RlLlNFTEVDVElPTjpcclxuICAgICAgICBsYXN0VmFsdWVGcm9tKFxyXG4gICAgICAgICAgdGhpcy5hcGkuaW50ZXJhY3QodGhpcy51dWlkLCB0aGlzLmlkZW50aWZpZXIsIHtcclxuICAgICAgICAgICAgb3BlcmF0aW9uTW9kZSxcclxuICAgICAgICAgICAgdGFyZ2V0SXRlbSxcclxuICAgICAgICAgICAgdGFyZ2V0TGF5ZXI6ICcnLFxyXG4gICAgICAgICAgICBpbnZlcnNlOiB0aGlzLnNlbGVjdGlvbigpLmhhcyhpZCksXHJcbiAgICAgICAgICB9KVxyXG4gICAgICAgICkudGhlbihcclxuICAgICAgICAgIChjaGFuZ2U6IFZpZXdDb250ZXh0Q2hhbmdlKSA9PiB7XHJcbiAgICAgICAgICAgIGlmICghdGhpcy52aWV3Q29udGV4dFNlcnZpY2UpIHtcclxuICAgICAgICAgICAgICBjb25zb2xlLndhcm4oJ1NtYXJ0IE1hcCBoYXMgbm8gVmlld0NvbnRleHQgU2VydmljZSBzZXQgdXAhJyk7XHJcbiAgICAgICAgICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgcmV0dXJuIHRoaXMudmlld0NvbnRleHRTZXJ2aWNlLmhhbmRsZVBlcmZvcm1BY3Rpb25SZXNwb25zZShjaGFuZ2UpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgICAgKGVycjogYW55KSA9PiB7XHJcbiAgICAgICAgICAgIGNvbnNvbGUud2FybignQ291bGQgbm90IHN1Ym1pdCBzZWxlY3Rpb24gY2hhbmdlISAnLCBlcnIpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICk7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgR2VvTWFwT3BlcmF0aW9uTW9kZS5QTEFDRU1FTlQ6XHJcbiAgICAgICAgLy8gY2xpY2tpbmcgYW4gaXRlbSBtYXkgcmVtb3ZlIGl0LCBpZiBpdCdzIG9ubHkgYSBwZW5kaW5nIGl0ZW0uIFRvIHJlcG9zaXRpb24gZXhpc3RpbmdcclxuICAgICAgICAvLyBpdGVtcywgd2Ugc2hhbGwgcmVhY3QgdG8gZHJhZ0VuZCBldmVudHMgb25seS5cclxuICAgICAgICBsYXN0VmFsdWVGcm9tKFxyXG4gICAgICAgICAgdGhpcy5hcGkuaW50ZXJhY3QodGhpcy51dWlkLCB0aGlzLmlkZW50aWZpZXIsIHtcclxuICAgICAgICAgICAgb3BlcmF0aW9uTW9kZSxcclxuICAgICAgICAgICAgdGFyZ2V0SXRlbSxcclxuICAgICAgICAgICAgdGFyZ2V0TGF5ZXI6ICcnLFxyXG4gICAgICAgICAgICBpbnZlcnNlOiB0cnVlLFxyXG4gICAgICAgICAgfSlcclxuICAgICAgICApLnRoZW4oXHJcbiAgICAgICAgICAoY2hhbmdlOiBWaWV3Q29udGV4dENoYW5nZSkgPT4ge1xyXG4gICAgICAgICAgICBpZiAoIXRoaXMudmlld0NvbnRleHRTZXJ2aWNlKSB7XHJcbiAgICAgICAgICAgICAgY29uc29sZS53YXJuKCdTbWFydCBNYXAgaGFzIG5vIFZpZXdDb250ZXh0IFNlcnZpY2Ugc2V0IHVwIScpO1xyXG4gICAgICAgICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgIHJldHVybiB0aGlzLnZpZXdDb250ZXh0U2VydmljZS5oYW5kbGVQZXJmb3JtQWN0aW9uUmVzcG9uc2UoY2hhbmdlKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfSxcclxuICAgICAgICAgIChlcnI6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICBjb25zb2xlLndhcm4oJ0NvdWxkIG5vdCBzdWJtaXQgcGxhY2VtZW50IGNoYW5nZSEgJywgZXJyKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICApO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgfVxyXG4gIH1cclxufVxyXG4iLCJAaWYgKG1vZGVsKCkpIHsgQGlmIChtYXBFbmdpbmUgPT09IE1hcEVuZ2luZS5HT09HTEUpIHtcclxuPGdvb2dsZS1tYXBcclxuICBbbW9kZWxdPVwibW9kZWwoKSFcIlxyXG4gIFtpdGVtc109XCJpdGVtcygpXCJcclxuICBbc3R5bGVdPVwieyB3aWR0aDogJzEwMCUnLCBoZWlnaHQ6ICczMjBweCcgfVwiXHJcbiAgKG9uTWFwRHJhZ0VuZCk9XCJtb3ZlKCRldmVudC52aWV3cG9ydClcIlxyXG4gIChvblpvb21DaGFuZ2VkKT1cIm1vdmUoJGV2ZW50LnZpZXdwb3J0KVwiXHJcbiAgKG9uTWFwQ2xpY2spPVwiaGFuZGxlTWFwQ2xpY2soJGV2ZW50LmNvb3JkaW5hdGVzKVwiXHJcbiAgKG9uT3ZlcmxheUNsaWNrKT1cImhhbmRsZUl0ZW1DbGljaygkZXZlbnQuaXRlbUlkKVwiXHJcbj5cclxuPC9nb29nbGUtbWFwPlxyXG59IEBlbHNlIGlmIChtYXBFbmdpbmUgPT09IE1hcEVuZ2luZS5MRUFGTEVUKSB7XHJcbjxsZWFmbGV0LW1hcFxyXG4gIFttb2RlbF09XCJtb2RlbCgpIVwiXHJcbiAgW2l0ZW1zXT1cIml0ZW1zKClcIlxyXG4gIChvbk1hcERyYWdFbmQpPVwibW92ZSgkZXZlbnQudmlld3BvcnQpXCJcclxuICAob25ab29tQ2hhbmdlZCk9XCJtb3ZlKCRldmVudC52aWV3cG9ydClcIlxyXG4gIChvbk1hcENsaWNrKT1cImhhbmRsZU1hcENsaWNrKCRldmVudC5jb29yZGluYXRlcylcIlxyXG4gIChvbk92ZXJsYXlDbGljayk9XCJoYW5kbGVJdGVtQ2xpY2soJGV2ZW50Lml0ZW1JZClcIlxyXG4+XHJcbjwvbGVhZmxldC1tYXA+XHJcbn0gQGVsc2Uge1xyXG48cD5cclxuICA8c3Ryb25nPk5vdCByZWNvZ25pc2VkIG1hcCBlbmdpbmU6IFsge3sgbWFwRW5naW5lIH19IF08L3N0cm9uZz5cclxuPC9wPlxyXG48cD5QbGVhc2UgcHJvdmlkZSBhIHZhbGlkIGNob2ljZSBvZiBtYXAgZW5naW5lITwvcD5cclxufSB9XHJcbiJdfQ==
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { NgModule } from '@angular/core';
|
|
2
|
+
import { MAP_ENGINE, MapEngine, SmartMapComponent } from './smart-map.component';
|
|
3
|
+
import { BrowserModule } from '@angular/platform-browser';
|
|
4
|
+
import { CommonModule } from '@angular/common';
|
|
5
|
+
import { GoogleMap } from './impl/google-map';
|
|
6
|
+
import { LeafletMap } from './impl/leaflet-map';
|
|
7
|
+
import * as i0 from "@angular/core";
|
|
8
|
+
export class SmartMapModule {
|
|
9
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: SmartMapModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
10
|
+
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "17.3.11", ngImport: i0, type: SmartMapModule, declarations: [SmartMapComponent, GoogleMap, LeafletMap], imports: [CommonModule, BrowserModule], exports: [SmartMapComponent, GoogleMap, LeafletMap] }); }
|
|
11
|
+
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: SmartMapModule, providers: [{ provide: MAP_ENGINE, useValue: MapEngine.GOOGLE }], imports: [CommonModule, BrowserModule] }); }
|
|
12
|
+
}
|
|
13
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: SmartMapModule, decorators: [{
|
|
14
|
+
type: NgModule,
|
|
15
|
+
args: [{
|
|
16
|
+
declarations: [SmartMapComponent, GoogleMap, LeafletMap],
|
|
17
|
+
imports: [CommonModule, BrowserModule],
|
|
18
|
+
providers: [{ provide: MAP_ENGINE, useValue: MapEngine.GOOGLE }],
|
|
19
|
+
exports: [SmartMapComponent, GoogleMap, LeafletMap],
|
|
20
|
+
}]
|
|
21
|
+
}] });
|
|
22
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic21hcnQtbWFwLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NtYXJ0LW5nLWNsaWVudC9zcmMvbGliL3NtYXJ0LW1hcC9zbWFydC1tYXAubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUFFLFVBQVUsRUFBRSxTQUFTLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUNqRixPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDMUQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUM5QyxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7O0FBUWhELE1BQU0sT0FBTyxjQUFjOytHQUFkLGNBQWM7Z0hBQWQsY0FBYyxpQkFMVixpQkFBaUIsRUFBRSxTQUFTLEVBQUUsVUFBVSxhQUM3QyxZQUFZLEVBQUUsYUFBYSxhQUUzQixpQkFBaUIsRUFBRSxTQUFTLEVBQUUsVUFBVTtnSEFFdkMsY0FBYyxhQUhkLENBQUMsRUFBRSxPQUFPLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBRSxTQUFTLENBQUMsTUFBTSxFQUFFLENBQUMsWUFEdEQsWUFBWSxFQUFFLGFBQWE7OzRGQUkxQixjQUFjO2tCQU4xQixRQUFRO21CQUFDO29CQUNSLFlBQVksRUFBRSxDQUFDLGlCQUFpQixFQUFFLFNBQVMsRUFBRSxVQUFVLENBQUM7b0JBQ3hELE9BQU8sRUFBRSxDQUFDLFlBQVksRUFBRSxhQUFhLENBQUM7b0JBQ3RDLFNBQVMsRUFBRSxDQUFDLEVBQUUsT0FBTyxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsU0FBUyxDQUFDLE1BQU0sRUFBRSxDQUFDO29CQUNoRSxPQUFPLEVBQUUsQ0FBQyxpQkFBaUIsRUFBRSxTQUFTLEVBQUUsVUFBVSxDQUFDO2lCQUNwRCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IE1BUF9FTkdJTkUsIE1hcEVuZ2luZSwgU21hcnRNYXBDb21wb25lbnQgfSBmcm9tICcuL3NtYXJ0LW1hcC5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBCcm93c2VyTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvcGxhdGZvcm0tYnJvd3Nlcic7XHJcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcbmltcG9ydCB7IEdvb2dsZU1hcCB9IGZyb20gJy4vaW1wbC9nb29nbGUtbWFwJztcclxuaW1wb3J0IHsgTGVhZmxldE1hcCB9IGZyb20gJy4vaW1wbC9sZWFmbGV0LW1hcCc7XHJcblxyXG5ATmdNb2R1bGUoe1xyXG4gIGRlY2xhcmF0aW9uczogW1NtYXJ0TWFwQ29tcG9uZW50LCBHb29nbGVNYXAsIExlYWZsZXRNYXBdLFxyXG4gIGltcG9ydHM6IFtDb21tb25Nb2R1bGUsIEJyb3dzZXJNb2R1bGVdLFxyXG4gIHByb3ZpZGVyczogW3sgcHJvdmlkZTogTUFQX0VOR0lORSwgdXNlVmFsdWU6IE1hcEVuZ2luZS5HT09HTEUgfV0sXHJcbiAgZXhwb3J0czogW1NtYXJ0TWFwQ29tcG9uZW50LCBHb29nbGVNYXAsIExlYWZsZXRNYXBdLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgU21hcnRNYXBNb2R1bGUge31cclxuIl19
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export {};
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic21hcnQtbWFwLnR5cGVzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc21hcnQtbmctY2xpZW50L3NyYy9saWIvc21hcnQtbWFwL3NtYXJ0LW1hcC50eXBlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgR2VvTWFwVmlld3BvcnQsIEdQU1Bvc2l0aW9uIH0gZnJvbSAnLi9hcGknO1xyXG5cclxuZXhwb3J0IHR5cGUgTWFwRHJhZ2dlZEV2ZW50ID0ge1xyXG4gIHZpZXdwb3J0OiBHZW9NYXBWaWV3cG9ydDtcclxuICBvcmlnaW5hbEV2ZW50OiBhbnk7XHJcbn07XHJcblxyXG5leHBvcnQgdHlwZSBNYXBab29tQ2hhbmdlZEV2ZW50ID0ge1xyXG4gIHZpZXdwb3J0OiBHZW9NYXBWaWV3cG9ydDtcclxuICBvcmlnaW5hbEV2ZW50OiBhbnk7XHJcbn07XHJcblxyXG5leHBvcnQgdHlwZSBNYXBJdGVtQ2xpY2tlZEV2ZW50ID0ge1xyXG4gIGl0ZW1JZDogc3RyaW5nO1xyXG4gIG9yaWdpbmFsRXZlbnQ6IGFueTtcclxufTtcclxuXHJcbmV4cG9ydCB0eXBlIE1hcENsaWNrZWRFdmVudCA9IHtcclxuICBjb29yZGluYXRlczogR1BTUG9zaXRpb247XHJcbiAgb3JpZ2luYWxFdmVudDogYW55O1xyXG59O1xyXG5cclxuZXhwb3J0IGludGVyZmFjZSBDb29yZCB7XHJcbiAgeDogbnVtYmVyO1xyXG4gIHk6IG51bWJlcjtcclxufVxyXG4iXX0=
|
package/esm2022/projects.mjs
CHANGED
|
@@ -23,4 +23,5 @@ export * from './lib/smart-tree/projects';
|
|
|
23
23
|
export * from './lib/view-context/projects';
|
|
24
24
|
export * from './lib/smart-filter-editor/project';
|
|
25
25
|
export * from './lib/shared/projects';
|
|
26
|
-
|
|
26
|
+
export * from './lib/smart-map/projects';
|
|
27
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvamVjdHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9wcm9qZWN0cy9zbWFydC1uZy1jbGllbnQvc3JjL3Byb2plY3RzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsY0FBYywrQkFBK0IsQ0FBQztBQUM5QyxjQUFjLDhCQUE4QixDQUFDO0FBQzdDLGNBQWMsc0VBQXNFLENBQUM7QUFDckYsY0FBYyw2QkFBNkIsQ0FBQztBQUU1QyxjQUFjLDBDQUEwQyxDQUFDO0FBQ3pELGNBQWMsd0JBQXdCLENBQUM7QUFDdkMsY0FBYyx1Q0FBdUMsQ0FBQztBQUN0RCxjQUFjLDZCQUE2QixDQUFDO0FBQzVDLGNBQWMseUNBQXlDLENBQUM7QUFDeEQsY0FBYyw2QkFBNkIsQ0FBQztBQUM1QyxjQUFjLDJCQUEyQixDQUFDO0FBQzFDLGNBQWMsMkJBQTJCLENBQUM7QUFDMUMsY0FBYywyQkFBMkIsQ0FBQztBQUMxQyxjQUFjLDZCQUE2QixDQUFDO0FBQzVDLGNBQWMsaUNBQWlDLENBQUM7QUFDaEQsY0FBYyw4QkFBOEIsQ0FBQztBQUM3QyxjQUFjLGdDQUFnQyxDQUFDO0FBQy9DLGNBQWMsNEJBQTRCLENBQUM7QUFDM0MsY0FBYywyQkFBMkIsQ0FBQztBQUMxQyxjQUFjLDZCQUE2QixDQUFDO0FBQzVDLGNBQWMsbUNBQW1DLENBQUM7QUFDbEQsY0FBYyx1QkFBdUIsQ0FBQztBQUN0QyxjQUFjLDBCQUEwQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLypcclxuICogUHVibGljIEFQSSBTdXJmYWNlIG9mIHNtYXJ0LW5nLWNsaWVudFxyXG4gKi9cclxuXHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL3NtYXJ0LW5nLWNsaWVudC5zZXJ2aWNlJztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvc21hcnQtbmctY2xpZW50Lm1vZHVsZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL3NtYXJ0LWNsaWVudC9zbWFydC1maWxlLXVwbG9hZGVyL3NtYXJ0LWZpbGUtdXBsb2FkZXIuY29tcG9uZW50JztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvc21hcnQtY2xpZW50L3Byb2plY3RzJztcclxuXHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudC1mYWN0b3J5LXNlcnZpY2UvcHJvamVjdHMnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9zZXNzaW9uL3Byb2plY3RzJztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvc21hcnQtY29tcG9uZW50LWxheW91dC9wcm9qZWN0cyc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL3NtYXJ0LWRpYWxvZy9wcm9qZWN0cyc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL3NtYXJ0LWV4cGFuZGFibGUtc2VjdGlvbi9wcm9qZWN0cyc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL3NtYXJ0LWZpbHRlci9wcm9qZWN0cyc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL3NtYXJ0LWZvcm0vcHJvamVjdHMnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9zbWFydC1ncmlkL3Byb2plY3RzJztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvc21hcnQtaWNvbi9wcm9qZWN0cyc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL3NtYXJ0LW5hdmJhci9wcm9qZWN0cyc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL3NtYXJ0LW5hdmlnYXRpb24vcHJvamVjdHMnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9zbWFydC1zdWJqZWN0L3Byb2plY3RzJztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvc21hcnQtdGFiLWdyb3VwL3Byb2plY3RzJztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvc21hcnQtdGFibGUvcHJvamVjdHMnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9zbWFydC10cmVlL3Byb2plY3RzJztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvdmlldy1jb250ZXh0L3Byb2plY3RzJztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvc21hcnQtZmlsdGVyLWVkaXRvci9wcm9qZWN0JztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvc2hhcmVkL3Byb2plY3RzJztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvc21hcnQtbWFwL3Byb2plY3RzJztcclxuIl19
|