@mapcomponents/react-maplibre 0.1.14 → 0.1.18
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/.github/workflows/storybook.yml +4 -2
- package/CHANGELOG.md +42 -0
- package/README.md +22 -6
- package/coverage/clover.xml +448 -460
- package/coverage/coverage-final.json +14 -14
- package/coverage/lcov-report/index.html +77 -78
- package/coverage/lcov-report/src/components/MapLibreMap/MapLibreMap.js.html +2 -3
- package/coverage/lcov-report/src/components/MapLibreMap/index.html +2 -3
- package/coverage/lcov-report/src/components/MlCreatePdfButton/MlCreatePdfButton.js.html +2 -3
- package/coverage/lcov-report/src/components/MlCreatePdfButton/index.html +2 -3
- package/coverage/lcov-report/src/components/MlFeatureEditor/MlFeatureEditor.js.html +2 -3
- package/coverage/lcov-report/src/components/MlFeatureEditor/index.html +2 -3
- package/coverage/lcov-report/src/components/MlFillExtrusionLayer/MlFillExtrusionLayer.js.html +2 -3
- package/coverage/lcov-report/src/components/MlFillExtrusionLayer/index.html +2 -3
- package/coverage/lcov-report/src/components/MlFollowGps/MlFollowGps.js.html +112 -107
- package/coverage/lcov-report/src/components/MlFollowGps/index.html +16 -17
- package/coverage/lcov-report/src/components/MlGPXViewer/MlGPXViewer.js.html +2 -3
- package/coverage/lcov-report/src/components/MlGPXViewer/gpxConverter.js.html +2 -3
- package/coverage/lcov-report/src/components/MlGPXViewer/index.html +2 -3
- package/coverage/lcov-report/src/components/MlGeoJsonLayer/MlGeoJsonLayer.js.html +168 -133
- package/coverage/lcov-report/src/components/MlGeoJsonLayer/index.html +20 -21
- package/coverage/lcov-report/src/components/MlImageMarkerLayer/MlImageMarkerLayer.js.html +46 -152
- package/coverage/lcov-report/src/components/MlImageMarkerLayer/index.html +20 -21
- package/coverage/lcov-report/src/components/MlLayer/MlLayer.js.html +92 -30
- package/coverage/lcov-report/src/components/MlLayer/index.html +20 -21
- package/coverage/lcov-report/src/components/MlLayerMagnify/MlLayerMagnify.js.html +2 -3
- package/coverage/lcov-report/src/components/MlLayerMagnify/index.html +2 -3
- package/coverage/lcov-report/src/components/MlLayerSwipe/MlLayerSwipe.js.html +2 -3
- package/coverage/lcov-report/src/components/MlLayerSwipe/index.html +2 -3
- package/coverage/lcov-report/src/components/MlLayerSwitcher/MlLayerSwitcher.js.html +3 -10
- package/coverage/lcov-report/src/components/MlLayerSwitcher/components/LayerBox.js.html +9 -82
- package/coverage/lcov-report/src/components/MlLayerSwitcher/components/index.html +10 -11
- package/coverage/lcov-report/src/components/MlLayerSwitcher/index.html +2 -3
- package/coverage/lcov-report/src/components/MlMarker/MlMarker.js.html +6 -7
- package/coverage/lcov-report/src/components/MlMarker/index.html +6 -7
- package/coverage/lcov-report/src/components/MlNavigationCompass/MlNavigationCompass.js.html +2 -3
- package/coverage/lcov-report/src/components/MlNavigationCompass/index.html +2 -3
- package/coverage/lcov-report/src/components/MlNavigationTools/MlNavigationTools.js.html +11 -15
- package/coverage/lcov-report/src/components/MlNavigationTools/index.html +8 -9
- package/coverage/lcov-report/src/components/MlOsmLayer/MlOsmLayer.js.html +2 -3
- package/coverage/lcov-report/src/components/MlOsmLayer/index.html +2 -3
- package/coverage/lcov-report/src/components/MlScaleReference/MlScaleReference.js.html +2 -3
- package/coverage/lcov-report/src/components/MlScaleReference/index.html +2 -3
- package/coverage/lcov-report/src/components/MlShareMapState/MlShareMapState.js.html +209 -18
- package/coverage/lcov-report/src/components/MlShareMapState/index.html +10 -11
- package/coverage/lcov-report/src/components/MlSpatialElevationProfile/MlSpatialElevationProfile.js.html +2 -3
- package/coverage/lcov-report/src/components/MlSpatialElevationProfile/index.html +2 -3
- package/coverage/lcov-report/src/components/MlThreeJsLayer/MlThreeJsLayer.js.html +2 -3
- package/coverage/lcov-report/src/components/MlThreeJsLayer/index.html +2 -3
- package/coverage/lcov-report/src/components/MlUseMapDebugger/MlUseMapDebugger.js.html +6 -25
- package/coverage/lcov-report/src/components/MlUseMapDebugger/index.html +6 -7
- package/coverage/lcov-report/src/components/MlVectorTileLayer/MlVectorTileLayer.js.html +2 -3
- package/coverage/lcov-report/src/components/MlVectorTileLayer/index.html +2 -3
- package/coverage/lcov-report/src/components/MlWmsFeatureInfoPopup/MlWmsFeatureInfoPopup.js.html +2 -3
- package/coverage/lcov-report/src/components/MlWmsFeatureInfoPopup/index.html +2 -3
- package/coverage/lcov-report/src/components/MlWmsLayer/MlWmsLayer.js.html +2 -3
- package/coverage/lcov-report/src/components/MlWmsLayer/index.html +2 -3
- package/coverage/lcov-report/src/components/MlWmsLoader/MlWmsLoader.js.html +6 -19
- package/coverage/lcov-report/src/components/MlWmsLoader/index.html +8 -9
- package/coverage/lcov-report/src/hooks/index.html +35 -36
- package/coverage/lcov-report/src/hooks/useMap.js.html +81 -169
- package/coverage/lcov-report/src/hooks/useMapState.js.html +82 -125
- package/coverage/lcov-report/src/hooks/useWms.js.html +9 -22
- package/coverage/lcov-report/src/i18n.js.html +2 -3
- package/coverage/lcov-report/src/index.html +2 -3
- package/coverage/lcov-report/src/translations/english.js.html +2 -3
- package/coverage/lcov-report/src/translations/german.js.html +2 -3
- package/coverage/lcov-report/src/translations/index.html +2 -3
- package/coverage/lcov.info +898 -900
- package/dist/index.esm.js +866 -758
- package/dist/index.esm.js.map +1 -1
- package/package.json +2 -2
- package/src/components/MapLibreMap/lib/MapLibreGlWrapper.js +16 -14
- package/src/components/MlComponentTemplate/MlComponentTemplate.js +7 -32
- package/src/components/MlFollowGps/MlFollowGps.js +67 -65
- package/src/components/MlFollowGps/MlFollowGps.test.js +3 -5
- package/src/components/MlGeoJsonLayer/MlGeoJsonLayer.js +101 -89
- package/src/components/MlGeoJsonLayer/MlGeoJsonLayer.stories.js +35 -6
- package/src/components/MlGeoJsonLayer/assets/sample_polygon_1.json +33 -0
- package/src/components/MlGeoJsonLayer/util/getDefaultLayerTypeByGeometry.js +25 -0
- package/src/components/MlGeoJsonLayer/util/getDefaultPaintPropsByType.js +31 -0
- package/src/components/MlImageMarkerLayer/MlImageMarkerLayer.js +21 -56
- package/src/components/MlLayer/MlLayer.js +26 -5
- package/src/components/MlLayerSwitcher/MlLayerSwitcher.js +0 -2
- package/src/components/MlLayerSwitcher/MlLayerSwitcher.stories.js +3 -6
- package/src/components/MlLayerSwitcher/components/LayerBox.js +2 -26
- package/src/components/MlMarker/MlMarker.js +1 -1
- package/src/components/MlNavigationTools/MlNavigationTools.js +4 -5
- package/src/components/MlShareMapState/MlShareMapState.js +73 -9
- package/src/components/MlShareMapState/MlShareMapState.stories.js +22 -2
- package/src/components/MlSpatialElevationProfile/MlSpatialElevationProfile.stories.js +1 -3
- package/src/components/MlUseMapDebugger/MlUseMapDebugger.js +1 -7
- package/src/components/MlWmsLoader/MlWmsLoader.js +0 -4
- package/src/hooks/useMap.js +33 -62
- package/src/hooks/useMapState.js +3 -17
- package/src/hooks/useWms.js +2 -7
- package/src/index.js +2 -0
- package/src/ui_components/ImageLoader.js +8 -3
- package/src/ui_components/Sidebar.js +1 -1
- package/src/ui_components/TopToolbar.js +0 -2
package/dist/index.esm.js
CHANGED
|
@@ -5,17 +5,17 @@ import maplibregl from 'maplibre-gl/dist/maplibre-gl';
|
|
|
5
5
|
import 'maplibre-gl/dist/maplibre-gl.css';
|
|
6
6
|
import { v4 } from 'uuid';
|
|
7
7
|
import Button from '@mui/material/Button';
|
|
8
|
+
import RoomIcon from '@mui/icons-material/Room';
|
|
9
|
+
import { lineString, length, lineChunk, point, circle, bbox, lineOffset, distance } from '@turf/turf';
|
|
8
10
|
import maplibregl$1, { Popup } from 'maplibre-gl';
|
|
9
11
|
import jsPDF from 'jspdf';
|
|
10
12
|
import PrinterIcon from '@mui/icons-material/Print';
|
|
11
|
-
import { lineString, length, lineChunk, point, bbox, lineOffset, distance } from '@turf/turf';
|
|
12
13
|
import ButtonGroup from '@mui/material/ButtonGroup';
|
|
13
14
|
import ControlPointIcon from '@mui/icons-material/ControlPoint';
|
|
14
15
|
import RemoveCircleOutlineIcon from '@mui/icons-material/RemoveCircleOutline';
|
|
15
16
|
import GpsFixedIcon from '@mui/icons-material/GpsFixed';
|
|
16
17
|
import _styled from '@emotion/styled/base';
|
|
17
18
|
import { css } from '@emotion/css';
|
|
18
|
-
import RoomIcon from '@mui/icons-material/Room';
|
|
19
19
|
import useMediaQuery from '@mui/material/useMediaQuery';
|
|
20
20
|
import '@mapbox/mapbox-gl-draw/dist/mapbox-gl-draw.css';
|
|
21
21
|
import MapboxDraw from '@mapbox/mapbox-gl-draw';
|
|
@@ -38,14 +38,9 @@ function ownKeys(object, enumerableOnly) {
|
|
|
38
38
|
|
|
39
39
|
if (Object.getOwnPropertySymbols) {
|
|
40
40
|
var symbols = Object.getOwnPropertySymbols(object);
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
return Object.getOwnPropertyDescriptor(object, sym).enumerable;
|
|
45
|
-
});
|
|
46
|
-
}
|
|
47
|
-
|
|
48
|
-
keys.push.apply(keys, symbols);
|
|
41
|
+
enumerableOnly && (symbols = symbols.filter(function (sym) {
|
|
42
|
+
return Object.getOwnPropertyDescriptor(object, sym).enumerable;
|
|
43
|
+
})), keys.push.apply(keys, symbols);
|
|
49
44
|
}
|
|
50
45
|
|
|
51
46
|
return keys;
|
|
@@ -53,19 +48,12 @@ function ownKeys(object, enumerableOnly) {
|
|
|
53
48
|
|
|
54
49
|
function _objectSpread2(target) {
|
|
55
50
|
for (var i = 1; i < arguments.length; i++) {
|
|
56
|
-
var source = arguments[i]
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
} else if (Object.getOwnPropertyDescriptors) {
|
|
63
|
-
Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));
|
|
64
|
-
} else {
|
|
65
|
-
ownKeys(Object(source)).forEach(function (key) {
|
|
66
|
-
Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));
|
|
67
|
-
});
|
|
68
|
-
}
|
|
51
|
+
var source = null != arguments[i] ? arguments[i] : {};
|
|
52
|
+
i % 2 ? ownKeys(Object(source), !0).forEach(function (key) {
|
|
53
|
+
_defineProperty(target, key, source[key]);
|
|
54
|
+
}) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) {
|
|
55
|
+
Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));
|
|
56
|
+
});
|
|
69
57
|
}
|
|
70
58
|
|
|
71
59
|
return target;
|
|
@@ -74,17 +62,11 @@ function _objectSpread2(target) {
|
|
|
74
62
|
function _typeof(obj) {
|
|
75
63
|
"@babel/helpers - typeof";
|
|
76
64
|
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
}
|
|
82
|
-
_typeof = function (obj) {
|
|
83
|
-
return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj;
|
|
84
|
-
};
|
|
85
|
-
}
|
|
86
|
-
|
|
87
|
-
return _typeof(obj);
|
|
65
|
+
return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) {
|
|
66
|
+
return typeof obj;
|
|
67
|
+
} : function (obj) {
|
|
68
|
+
return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj;
|
|
69
|
+
}, _typeof(obj);
|
|
88
70
|
}
|
|
89
71
|
|
|
90
72
|
function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {
|
|
@@ -319,6 +301,8 @@ var MapLibreGlWrapper = function MapLibreGlWrapper(props) {
|
|
|
319
301
|
if (!Object.is(item.handler, handler)) {
|
|
320
302
|
return item;
|
|
321
303
|
}
|
|
304
|
+
|
|
305
|
+
return false;
|
|
322
306
|
});
|
|
323
307
|
},
|
|
324
308
|
|
|
@@ -342,7 +326,7 @@ var MapLibreGlWrapper = function MapLibreGlWrapper(props) {
|
|
|
342
326
|
/**
|
|
343
327
|
* Array containing an object for each layer in the MapLibre instance providing information on visibility, loading state, order, paint & layout properties
|
|
344
328
|
*/
|
|
345
|
-
layerState:
|
|
329
|
+
layerState: [],
|
|
346
330
|
|
|
347
331
|
/**
|
|
348
332
|
* Maps layerIds to layerState in JSON string form for quick deep comparisons
|
|
@@ -366,12 +350,12 @@ var MapLibreGlWrapper = function MapLibreGlWrapper(props) {
|
|
|
366
350
|
//if (self.baseLayers.indexOf(layer.id) === -1) {
|
|
367
351
|
var paint = {};
|
|
368
352
|
var values = (_layer$paint = layer.paint) === null || _layer$paint === void 0 ? void 0 : _layer$paint._values;
|
|
369
|
-
Object.keys(values || {}).
|
|
353
|
+
Object.keys(values || {}).forEach(function (propName) {
|
|
370
354
|
paint[propName] = typeof values[propName].value !== "undefined" ? values[propName].value.value : values[propName];
|
|
371
355
|
});
|
|
372
356
|
var layout = {};
|
|
373
357
|
values = (_layer$layout = layer.layout) === null || _layer$layout === void 0 ? void 0 : _layer$layout._values;
|
|
374
|
-
Object.keys(values || {}).
|
|
358
|
+
Object.keys(values || {}).forEach(function (propName) {
|
|
375
359
|
layout[propName] = typeof values[propName].value !== "undefined" ? values[propName].value.value : values[propName];
|
|
376
360
|
});
|
|
377
361
|
return {
|
|
@@ -855,28 +839,69 @@ MapLibreMap.propTypes = {
|
|
|
855
839
|
};
|
|
856
840
|
|
|
857
841
|
/**
|
|
858
|
-
*
|
|
859
|
-
*
|
|
860
|
-
* @param {object} props
|
|
861
|
-
* @param {string} props.mapId Id of the target MapLibre instance in mapContext
|
|
842
|
+
* React hook that allows subscribing to map state changes
|
|
862
843
|
*
|
|
863
844
|
* @component
|
|
864
845
|
*/
|
|
865
846
|
|
|
866
|
-
|
|
847
|
+
function useMapState(props) {
|
|
867
848
|
// Use a useRef hook to reference the layer object to be able to access it later inside useEffect hooks
|
|
868
849
|
var mapContext = useContext(MapContext);
|
|
869
850
|
var initializedRef = useRef(false);
|
|
870
851
|
var mapRef = useRef(undefined);
|
|
871
|
-
|
|
852
|
+
|
|
853
|
+
var _useState = useState(undefined),
|
|
854
|
+
_useState2 = _slicedToArray(_useState, 2),
|
|
855
|
+
viewport = _useState2[0],
|
|
856
|
+
setViewport = _useState2[1];
|
|
857
|
+
|
|
858
|
+
var viewportRef = useRef(undefined);
|
|
859
|
+
|
|
860
|
+
var _useState3 = useState(undefined),
|
|
861
|
+
_useState4 = _slicedToArray(_useState3, 2),
|
|
862
|
+
layers = _useState4[0],
|
|
863
|
+
setLayers = _useState4[1];
|
|
864
|
+
|
|
865
|
+
var layersRef = useRef(undefined); //const mapRef = useRef(props.map);
|
|
866
|
+
|
|
867
|
+
var componentId = useRef(v4());
|
|
868
|
+
/**
|
|
869
|
+
* returns the element if it matches the defined filter criteria
|
|
870
|
+
* to be used as filter function on the layers array
|
|
871
|
+
*
|
|
872
|
+
* @param {object} layer
|
|
873
|
+
*/
|
|
874
|
+
|
|
875
|
+
var layerIdFilter = useCallback(function (layer) {
|
|
876
|
+
var _props$filter, _props$filter2;
|
|
877
|
+
|
|
878
|
+
if (!(props !== null && props !== void 0 && (_props$filter = props.filter) !== null && _props$filter !== void 0 && _props$filter.includeBaseLayers) && layer.baseLayer) {
|
|
879
|
+
return false;
|
|
880
|
+
}
|
|
881
|
+
|
|
882
|
+
if (typeof ((_props$filter2 = props.filter) === null || _props$filter2 === void 0 ? void 0 : _props$filter2.matchLayerIds) !== "undefined") {
|
|
883
|
+
if (props.filter.matchLayerIds instanceof RegExp) {
|
|
884
|
+
return props.filter.matchLayerIds.test(layer.id);
|
|
885
|
+
} else {
|
|
886
|
+
return layer.id.includes(props.filter.matchLayerIds);
|
|
887
|
+
}
|
|
888
|
+
}
|
|
889
|
+
|
|
890
|
+
return true;
|
|
891
|
+
}, [props.filter]);
|
|
892
|
+
var refreshLayerState = useCallback(function () {
|
|
893
|
+
var _layerState = mapRef.current.wrapper.layerState.filter(layerIdFilter);
|
|
894
|
+
|
|
895
|
+
var _layerStateString = JSON.stringify(_layerState);
|
|
896
|
+
|
|
897
|
+
if (layersRef.current !== _layerStateString) {
|
|
898
|
+
layersRef.current = _layerStateString;
|
|
899
|
+
setLayers(_layerState);
|
|
900
|
+
}
|
|
901
|
+
}, [layerIdFilter]);
|
|
872
902
|
useEffect(function () {
|
|
873
903
|
var _componentId = componentId.current;
|
|
874
904
|
return function () {
|
|
875
|
-
// This is the cleanup function, it is called when this react component is removed from react-dom
|
|
876
|
-
// try to remove anything this component has added to the MapLibre-gl instance
|
|
877
|
-
// e.g.: remove the layer
|
|
878
|
-
// mapContext.getMap(props.mapId).removeLayer(layerRef.current);
|
|
879
|
-
// check for the existence of map.style before calling getLayer or getSource
|
|
880
905
|
if (mapRef.current) {
|
|
881
906
|
mapRef.current.cleanup(_componentId);
|
|
882
907
|
mapRef.current = undefined;
|
|
@@ -886,13 +911,167 @@ var MlComponentTemplate = function MlComponentTemplate(props) {
|
|
|
886
911
|
};
|
|
887
912
|
}, []);
|
|
888
913
|
useEffect(function () {
|
|
914
|
+
var _props$watch, _props$watch2;
|
|
915
|
+
|
|
889
916
|
if (!mapContext.mapExists(props.mapId) || initializedRef.current) return; // the MapLibre-gl instance (mapContext.getMap(props.mapId)) is accessible here
|
|
890
917
|
// initialize the layer and add it to the MapLibre-gl instance or do something else with it
|
|
891
918
|
|
|
892
919
|
initializedRef.current = true;
|
|
893
920
|
mapRef.current = mapContext.getMap(props.mapId);
|
|
894
|
-
|
|
895
|
-
|
|
921
|
+
|
|
922
|
+
if (props !== null && props !== void 0 && (_props$watch = props.watch) !== null && _props$watch !== void 0 && _props$watch.viewport) {
|
|
923
|
+
setViewport(mapRef.current.wrapper.viewportState);
|
|
924
|
+
mapRef.current.wrapper.on("viewportchange", function () {
|
|
925
|
+
var _mapRef$current;
|
|
926
|
+
|
|
927
|
+
if (viewportRef.current !== ((_mapRef$current = mapRef.current) === null || _mapRef$current === void 0 ? void 0 : _mapRef$current.wrapper.viewportStateString)) {
|
|
928
|
+
var _mapRef$current2;
|
|
929
|
+
|
|
930
|
+
setViewport((_mapRef$current2 = mapRef.current) === null || _mapRef$current2 === void 0 ? void 0 : _mapRef$current2.wrapper.viewportState);
|
|
931
|
+
}
|
|
932
|
+
}, componentId.current);
|
|
933
|
+
}
|
|
934
|
+
|
|
935
|
+
if (props !== null && props !== void 0 && (_props$watch2 = props.watch) !== null && _props$watch2 !== void 0 && _props$watch2.layers) {
|
|
936
|
+
var _props$filter3, _props$filter4;
|
|
937
|
+
|
|
938
|
+
refreshLayerState();
|
|
939
|
+
mapRef.current.wrapper.on("layerchange", refreshLayerState, {
|
|
940
|
+
includeBaseLayers: props === null || props === void 0 ? void 0 : (_props$filter3 = props.filter) === null || _props$filter3 === void 0 ? void 0 : _props$filter3.includeBaseLayers,
|
|
941
|
+
matchLayerIds: props === null || props === void 0 ? void 0 : (_props$filter4 = props.filter) === null || _props$filter4 === void 0 ? void 0 : _props$filter4.matchLayerIds
|
|
942
|
+
}, componentId.current);
|
|
943
|
+
}
|
|
944
|
+
}, [mapContext.mapIds, mapContext, props.mapId, refreshLayerState]);
|
|
945
|
+
return {
|
|
946
|
+
layers: layers,
|
|
947
|
+
viewport: viewport
|
|
948
|
+
};
|
|
949
|
+
}
|
|
950
|
+
|
|
951
|
+
useMapState.defaultProps = {
|
|
952
|
+
mapId: undefined,
|
|
953
|
+
watch: {
|
|
954
|
+
layers: true,
|
|
955
|
+
sources: false,
|
|
956
|
+
viewport: false
|
|
957
|
+
},
|
|
958
|
+
filter: {
|
|
959
|
+
includeBaseLayers: false
|
|
960
|
+
}
|
|
961
|
+
};
|
|
962
|
+
useMapState.propTypes = {
|
|
963
|
+
/**
|
|
964
|
+
* Id of the target MapLibre instance in mapContext
|
|
965
|
+
*/
|
|
966
|
+
mapId: PropTypes.string,
|
|
967
|
+
|
|
968
|
+
/**
|
|
969
|
+
* Defines map Resources to watch
|
|
970
|
+
*/
|
|
971
|
+
watch: PropTypes.shape({
|
|
972
|
+
layers: PropTypes.bool,
|
|
973
|
+
sources: PropTypes.bool,
|
|
974
|
+
viewport: PropTypes.bool
|
|
975
|
+
}),
|
|
976
|
+
|
|
977
|
+
/**
|
|
978
|
+
* Filter string or RegExp to more explicitly define the elements watched and increase performance
|
|
979
|
+
* strings will be matched using layerId.includes(matchString)
|
|
980
|
+
* RegExps will be matched using matchRegExp.test(layerId)
|
|
981
|
+
*/
|
|
982
|
+
filter: PropTypes.shape({
|
|
983
|
+
includeBaseLayers: PropTypes.bool,
|
|
984
|
+
matchLayerIds: PropTypes.oneOfType([PropTypes.string, PropTypes.instanceOf(RegExp)]),
|
|
985
|
+
matchSourceIds: PropTypes.oneOfType([PropTypes.string, PropTypes.instanceOf(RegExp)])
|
|
986
|
+
})
|
|
987
|
+
};
|
|
988
|
+
|
|
989
|
+
function useMap(props) {
|
|
990
|
+
// Use a useRef hook to reference the layer object to be able to access it later inside useEffect hooks
|
|
991
|
+
var mapContext = useContext(MapContext);
|
|
992
|
+
var mapState = useMapState({
|
|
993
|
+
mapId: props.mapId,
|
|
994
|
+
watch: {
|
|
995
|
+
viewport: false,
|
|
996
|
+
layers: true,
|
|
997
|
+
sources: false
|
|
998
|
+
}
|
|
999
|
+
});
|
|
1000
|
+
var initializedRef = useRef(false);
|
|
1001
|
+
var mapRef = useRef(undefined);
|
|
1002
|
+
var componentId = useRef(v4());
|
|
1003
|
+
|
|
1004
|
+
var _useState = useState(undefined),
|
|
1005
|
+
_useState2 = _slicedToArray(_useState, 2),
|
|
1006
|
+
mapIsReady = _useState2[0],
|
|
1007
|
+
setMapIsReady = _useState2[1];
|
|
1008
|
+
|
|
1009
|
+
useEffect(function () {
|
|
1010
|
+
var _componentId = componentId.current;
|
|
1011
|
+
return function () {
|
|
1012
|
+
if (mapRef.current) {
|
|
1013
|
+
mapRef.current.cleanup(_componentId);
|
|
1014
|
+
mapRef.current = undefined;
|
|
1015
|
+
}
|
|
1016
|
+
|
|
1017
|
+
initializedRef.current = false;
|
|
1018
|
+
setMapIsReady(false);
|
|
1019
|
+
};
|
|
1020
|
+
}, []);
|
|
1021
|
+
useEffect(function () {
|
|
1022
|
+
if (!mapContext.mapExists(props.mapId) || initializedRef.current) return; //check if insertBeforeLayer exists
|
|
1023
|
+
|
|
1024
|
+
if (props.waitForLayer) {
|
|
1025
|
+
var _mapState$layers;
|
|
1026
|
+
|
|
1027
|
+
var layerFound = false;
|
|
1028
|
+
mapState === null || mapState === void 0 ? void 0 : (_mapState$layers = mapState.layers) === null || _mapState$layers === void 0 ? void 0 : _mapState$layers.forEach(function (layer) {
|
|
1029
|
+
if (layer.id === props.waitForLayer) {
|
|
1030
|
+
layerFound = true;
|
|
1031
|
+
}
|
|
1032
|
+
});
|
|
1033
|
+
|
|
1034
|
+
if (!layerFound) {
|
|
1035
|
+
return;
|
|
1036
|
+
}
|
|
1037
|
+
} // the MapLibre-gl instance (mapContext.getMap(props.mapId)) is accessible here
|
|
1038
|
+
// initialize the layer and add it to the MapLibre-gl instance or do something else with it
|
|
1039
|
+
|
|
1040
|
+
|
|
1041
|
+
initializedRef.current = true;
|
|
1042
|
+
mapRef.current = mapContext.getMap(props.mapId);
|
|
1043
|
+
setMapIsReady(true);
|
|
1044
|
+
}, [mapContext.mapIds, mapState.layers, mapContext, props.mapId]);
|
|
1045
|
+
return {
|
|
1046
|
+
map: mapRef.current,
|
|
1047
|
+
mapIsReady: mapIsReady,
|
|
1048
|
+
componentId: componentId.current,
|
|
1049
|
+
layers: mapState.layers
|
|
1050
|
+
};
|
|
1051
|
+
}
|
|
1052
|
+
|
|
1053
|
+
/**
|
|
1054
|
+
* TODO: Add short & useful description
|
|
1055
|
+
*
|
|
1056
|
+
* @param {object} props
|
|
1057
|
+
* @param {string} props.mapId Id of the target MapLibre instance in mapContext
|
|
1058
|
+
*
|
|
1059
|
+
* @component
|
|
1060
|
+
*/
|
|
1061
|
+
|
|
1062
|
+
var MlComponentTemplate = function MlComponentTemplate(props) {
|
|
1063
|
+
var mapHook = useMap({
|
|
1064
|
+
mapId: props.mapId,
|
|
1065
|
+
waitForLayer: props.insertBeforeLayer
|
|
1066
|
+
});
|
|
1067
|
+
var initializedRef = useRef(false);
|
|
1068
|
+
useEffect(function () {
|
|
1069
|
+
if (!mapHook.mapIsReady || initializedRef.current) return; // the MapLibre-gl instance (mapHook.map) is accessible here
|
|
1070
|
+
// initialize the layer and add it to the MapLibre-gl instance or do something else with it
|
|
1071
|
+
|
|
1072
|
+
initializedRef.current = true;
|
|
1073
|
+
mapHook.map.setCenter([7.132122000552613, 50.716405378037706]);
|
|
1074
|
+
}, [mapHook.map, mapHook.mapIsReady, props.mapId]);
|
|
896
1075
|
return /*#__PURE__*/React__default.createElement(React__default.Fragment, null);
|
|
897
1076
|
};
|
|
898
1077
|
|
|
@@ -1039,217 +1218,30 @@ MlFillExtrusionLayer.propTypes = {
|
|
|
1039
1218
|
insertBeforeLayer: PropTypes.string
|
|
1040
1219
|
};
|
|
1041
1220
|
|
|
1042
|
-
var
|
|
1043
|
-
|
|
1044
|
-
number: ["house_number", "street_number"],
|
|
1045
|
-
place: ["city", "village", "hamlet", "locality", "croft", "neighbourhood", "suburb", "city_district", "district", "quarter", "borough", "city_block", "residential", "commercial", "industrial", "houses", "subdivision", "allotments", "postal_city", "town", "municipality", "local_administrative_area"],
|
|
1046
|
-
zip: ["postcode", "partial_postcode"],
|
|
1047
|
-
state: ["state", "province", "state_code"]
|
|
1048
|
-
};
|
|
1049
|
-
|
|
1050
|
-
var nmConverter = function nmConverter(nmAddress) {
|
|
1051
|
-
var addressArr = [];
|
|
1052
|
-
|
|
1053
|
-
for (var key in nmMap) {
|
|
1054
|
-
nmMap[key].some(function (element) {
|
|
1055
|
-
if (nmAddress.hasOwnProperty(element)) {
|
|
1056
|
-
addressArr.push(nmAddress[element]);
|
|
1057
|
-
return true;
|
|
1058
|
-
}
|
|
1221
|
+
var _showNextTransitionSegment = function _showNextTransitionSegment(props, layerId, map, transitionInProgressRef, transitionGeojsonDataRef, transitionGeojsonCommonDataRef, currentTransitionStepRef, msPerStep, transitionTimeoutRef) {
|
|
1222
|
+
var _arguments = arguments;
|
|
1059
1223
|
|
|
1060
|
-
|
|
1061
|
-
|
|
1224
|
+
if (typeof map.getSource(layerId) === "undefined" || !transitionInProgressRef.current) {
|
|
1225
|
+
transitionTimeoutRef.current = setTimeout(function () {
|
|
1226
|
+
return _showNextTransitionSegment.apply(void 0, _toConsumableArray(_arguments));
|
|
1227
|
+
}, msPerStep);
|
|
1228
|
+
return;
|
|
1062
1229
|
}
|
|
1063
1230
|
|
|
1064
|
-
|
|
1065
|
-
|
|
1231
|
+
if (typeof transitionGeojsonDataRef.current[currentTransitionStepRef.current] !== "undefined") {
|
|
1232
|
+
var _map$getSource;
|
|
1066
1233
|
|
|
1067
|
-
var
|
|
1068
|
-
var conversionFactor = 96;
|
|
1069
|
-
conversionFactor /= 25.4;
|
|
1070
|
-
return conversionFactor * length + "px";
|
|
1071
|
-
};
|
|
1234
|
+
var newData = currentTransitionStepRef.current + 1 === transitionGeojsonDataRef.current.length ? props.geojson : lineString([].concat(_toConsumableArray(transitionGeojsonCommonDataRef.current), _toConsumableArray(transitionGeojsonDataRef.current[currentTransitionStepRef.current].geometry.coordinates)));
|
|
1072
1235
|
|
|
1073
|
-
|
|
1074
|
-
|
|
1075
|
-
|
|
1076
|
-
var height = 297; // Calculate pixel ratio
|
|
1236
|
+
if (!(map !== null && map !== void 0 && (_map$getSource = map.getSource) !== null && _map$getSource !== void 0 && _map$getSource.call(map, layerId))) {
|
|
1237
|
+
return;
|
|
1238
|
+
}
|
|
1077
1239
|
|
|
1078
|
-
|
|
1240
|
+
map.getSource(layerId).setData(newData);
|
|
1079
1241
|
|
|
1080
|
-
|
|
1081
|
-
|
|
1082
|
-
|
|
1083
|
-
var container = document.createElement("div");
|
|
1084
|
-
container.style.width = toPixels(width);
|
|
1085
|
-
container.style.height = toPixels(height);
|
|
1086
|
-
hidden.appendChild(container); //Render map
|
|
1087
|
-
|
|
1088
|
-
var renderMap = new maplibregl$1.Map({
|
|
1089
|
-
container: container,
|
|
1090
|
-
center: map.getCenter(),
|
|
1091
|
-
zoom: map.getZoom(),
|
|
1092
|
-
bearing: map.getBearing(),
|
|
1093
|
-
pitch: map.getPitch(),
|
|
1094
|
-
interactive: false,
|
|
1095
|
-
preserveDrawingBuffer: true,
|
|
1096
|
-
fadeDuration: 0,
|
|
1097
|
-
attributionControl: false
|
|
1098
|
-
});
|
|
1099
|
-
var style = map.getStyle();
|
|
1100
|
-
|
|
1101
|
-
var _loop = function _loop(name) {
|
|
1102
|
-
var src = style.sources[name];
|
|
1103
|
-
Object.keys(src).forEach(function (key) {
|
|
1104
|
-
//delete properties if value is undefined.
|
|
1105
|
-
// for instance, raster-dem might has undefined value in "url" and "bounds"
|
|
1106
|
-
if (!src[key]) {
|
|
1107
|
-
delete src[key];
|
|
1108
|
-
}
|
|
1109
|
-
});
|
|
1110
|
-
};
|
|
1111
|
-
|
|
1112
|
-
for (var name in style.sources) {
|
|
1113
|
-
_loop(name);
|
|
1114
|
-
}
|
|
1115
|
-
|
|
1116
|
-
renderMap.setStyle(style);
|
|
1117
|
-
renderMap.once("idle", function () {
|
|
1118
|
-
var _hidden$parentNode;
|
|
1119
|
-
|
|
1120
|
-
// TO DO: It is still under development
|
|
1121
|
-
var pdf = new jsPDF({
|
|
1122
|
-
orientation: "p",
|
|
1123
|
-
unit: "mm",
|
|
1124
|
-
compress: true
|
|
1125
|
-
});
|
|
1126
|
-
Object.defineProperty(window, "devicePixelRatio", {
|
|
1127
|
-
get: function get() {
|
|
1128
|
-
return 300 / 96;
|
|
1129
|
-
}
|
|
1130
|
-
});
|
|
1131
|
-
var offsetX = 2.5;
|
|
1132
|
-
var offsetY = 2.5;
|
|
1133
|
-
var marginTop = 3;
|
|
1134
|
-
var marginBottom = 3;
|
|
1135
|
-
var innerMargin = 2;
|
|
1136
|
-
var logo = "data:image/png;base64,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";
|
|
1137
|
-
var textBuffer = 1;
|
|
1138
|
-
var lineHeight = 3.25;
|
|
1139
|
-
var text = locationValue ? nmConverter(locationValue.address) : "";
|
|
1140
|
-
var textChunksSeperator = text.split(",");
|
|
1141
|
-
var textChunks = [];
|
|
1142
|
-
|
|
1143
|
-
if (textChunks.length) {
|
|
1144
|
-
textChunksSeperator.forEach(function (chunk) {
|
|
1145
|
-
var limitChunks = chunk.match(/.{1,34}/g);
|
|
1146
|
-
textChunks.push.apply(textChunks, _toConsumableArray(limitChunks));
|
|
1147
|
-
});
|
|
1148
|
-
} //Render map image
|
|
1149
|
-
|
|
1150
|
-
|
|
1151
|
-
pdf.addImage(renderMap.getCanvas().toDataURL("image/png"), "png", 0, 0, 210, 297, null, "FAST"); //Render lower left Copyright box
|
|
1152
|
-
|
|
1153
|
-
pdf.setFillColor("white");
|
|
1154
|
-
pdf.rect(138, 287, 297, 10, "F");
|
|
1155
|
-
pdf.setFontSize(10); // optional
|
|
1156
|
-
|
|
1157
|
-
pdf.text("Datenquelle: © OpenStreetMap-Mitwirkende", 140, pdf.internal.pageSize.height - 3); //Render infobox
|
|
1158
|
-
|
|
1159
|
-
pdf.setFillColor("white");
|
|
1160
|
-
var infoBoxSize = textChunks.length * lineHeight + marginTop + marginBottom + lineHeight * 2 + innerMargin * 2 + textBuffer;
|
|
1161
|
-
pdf.rect(offsetX, 2, 66.5, infoBoxSize, "F");
|
|
1162
|
-
pdf.setFontSize(10);
|
|
1163
|
-
pdf.text("Karten PDF:", 6, offsetY + marginTop); //Render inner infobox
|
|
1164
|
-
|
|
1165
|
-
pdf.rect(6, 7, 60, textChunks.length * lineHeight + innerMargin * 2 + textBuffer);
|
|
1166
|
-
pdf.setFontSize(10); //Write out address
|
|
1167
|
-
|
|
1168
|
-
textChunks.forEach(function (text, i) {
|
|
1169
|
-
pdf.text(text.trim(), 8, 10 + i * 3.5 + innerMargin);
|
|
1170
|
-
}); //Add WG Logo
|
|
1171
|
-
|
|
1172
|
-
pdf.addImage(logo, "png", 5, offsetY + marginTop + lineHeight * 2 + textChunks.length * 3 + innerMargin * 2, 3, 3, null, "FAST"); //Add WG Url
|
|
1173
|
-
|
|
1174
|
-
pdf.setFontSize(10);
|
|
1175
|
-
pdf.text("wheregroup.com", 40, offsetY + marginTop + lineHeight * 2 + textChunks.length * lineHeight + innerMargin * 2 + textBuffer); //Set pdfs props
|
|
1176
|
-
|
|
1177
|
-
pdf.setProperties({
|
|
1178
|
-
title: "Map export",
|
|
1179
|
-
subject: "Map export",
|
|
1180
|
-
creator: "WhereGroup GmbH",
|
|
1181
|
-
author: "(c)WhereGroup GmbH, (c)OpenStreetMap"
|
|
1182
|
-
});
|
|
1183
|
-
pdf.save("Map.pdf");
|
|
1184
|
-
renderMap.remove();
|
|
1185
|
-
(_hidden$parentNode = hidden.parentNode) === null || _hidden$parentNode === void 0 ? void 0 : _hidden$parentNode.removeChild(hidden);
|
|
1186
|
-
Object.defineProperty(window, "devicePixelRatio", {
|
|
1187
|
-
get: function get() {
|
|
1188
|
-
return actualPixelRatio;
|
|
1189
|
-
}
|
|
1190
|
-
});
|
|
1191
|
-
setLoading(false);
|
|
1192
|
-
});
|
|
1193
|
-
};
|
|
1194
|
-
|
|
1195
|
-
/**
|
|
1196
|
-
* Renders a button that will create a PDF version of the current map view (dimensions adjusted to fit Din A4 Paper).
|
|
1197
|
-
*
|
|
1198
|
-
* @component
|
|
1199
|
-
*/
|
|
1200
|
-
|
|
1201
|
-
var MlCreatePdfButton = function MlCreatePdfButton(props) {
|
|
1202
|
-
var mapContext = useContext(MapContext);
|
|
1203
|
-
var initializedRef = useRef(false);
|
|
1204
|
-
var mapRef = useRef(undefined);
|
|
1205
|
-
useEffect(function () {
|
|
1206
|
-
if (!mapContext.mapExists(props.mapId) || initializedRef.current) return;
|
|
1207
|
-
initializedRef.current = true;
|
|
1208
|
-
mapRef.current = mapContext.getMap(props.mapId);
|
|
1209
|
-
}, [mapContext.mapIds, mapContext, props.mapId]);
|
|
1210
|
-
return /*#__PURE__*/React__default.createElement(React__default.Fragment, null, /*#__PURE__*/React__default.createElement(Button, {
|
|
1211
|
-
color: "primary",
|
|
1212
|
-
variant: "contained",
|
|
1213
|
-
onClick: function onClick() {
|
|
1214
|
-
createPdf(mapRef.current, null, function () {});
|
|
1215
|
-
}
|
|
1216
|
-
}, /*#__PURE__*/React__default.createElement(PrinterIcon, null)));
|
|
1217
|
-
};
|
|
1218
|
-
|
|
1219
|
-
MlCreatePdfButton.defaultProps = {
|
|
1220
|
-
mapId: undefined
|
|
1221
|
-
};
|
|
1222
|
-
MlCreatePdfButton.propTypes = {
|
|
1223
|
-
/**
|
|
1224
|
-
* Id of the target MapLibre instance in mapContext
|
|
1225
|
-
*/
|
|
1226
|
-
mapId: PropTypes.string
|
|
1227
|
-
};
|
|
1228
|
-
|
|
1229
|
-
var _showNextTransitionSegment = function _showNextTransitionSegment(props, layerId, map, transitionInProgressRef, transitionGeojsonDataRef, transitionGeojsonCommonDataRef, currentTransitionStepRef, msPerStep, transitionTimeoutRef) {
|
|
1230
|
-
var _arguments = arguments;
|
|
1231
|
-
|
|
1232
|
-
if (typeof map.getSource(layerId) === "undefined" || !transitionInProgressRef.current) {
|
|
1233
|
-
transitionTimeoutRef.current = setTimeout(function () {
|
|
1234
|
-
return _showNextTransitionSegment.apply(void 0, _toConsumableArray(_arguments));
|
|
1235
|
-
}, msPerStep);
|
|
1236
|
-
return;
|
|
1237
|
-
}
|
|
1238
|
-
|
|
1239
|
-
if (typeof transitionGeojsonDataRef.current[currentTransitionStepRef.current] !== "undefined") {
|
|
1240
|
-
var _map$getSource;
|
|
1241
|
-
|
|
1242
|
-
var newData = currentTransitionStepRef.current + 1 === transitionGeojsonDataRef.current.length ? props.geojson : lineString([].concat(_toConsumableArray(transitionGeojsonCommonDataRef.current), _toConsumableArray(transitionGeojsonDataRef.current[currentTransitionStepRef.current].geometry.coordinates)));
|
|
1243
|
-
|
|
1244
|
-
if (!(map !== null && map !== void 0 && (_map$getSource = map.getSource) !== null && _map$getSource !== void 0 && _map$getSource.call(map, layerId))) {
|
|
1245
|
-
return;
|
|
1246
|
-
}
|
|
1247
|
-
|
|
1248
|
-
map.getSource(layerId).setData(newData);
|
|
1249
|
-
|
|
1250
|
-
if (typeof props.onTransitionFrame === "function") {
|
|
1251
|
-
props.onTransitionFrame(newData);
|
|
1252
|
-
}
|
|
1242
|
+
if (typeof props.onTransitionFrame === "function") {
|
|
1243
|
+
props.onTransitionFrame(newData);
|
|
1244
|
+
}
|
|
1253
1245
|
|
|
1254
1246
|
currentTransitionStepRef.current++;
|
|
1255
1247
|
|
|
@@ -1389,7 +1381,70 @@ var _transitionToGeojson = function _transitionToGeojson(newGeojson, props, tran
|
|
|
1389
1381
|
}, msPerStep);
|
|
1390
1382
|
};
|
|
1391
1383
|
|
|
1384
|
+
var getDefaultPaintPropsByType = function getDefaultPaintPropsByType(type, defaultPaintOverrides) {
|
|
1385
|
+
switch (type) {
|
|
1386
|
+
case "fill":
|
|
1387
|
+
if (defaultPaintOverrides !== null && defaultPaintOverrides !== void 0 && defaultPaintOverrides.fill) {
|
|
1388
|
+
return defaultPaintOverrides.fill;
|
|
1389
|
+
}
|
|
1390
|
+
|
|
1391
|
+
return {
|
|
1392
|
+
"fill-color": "rgba(10,240,256,0.6)"
|
|
1393
|
+
};
|
|
1394
|
+
|
|
1395
|
+
case "line":
|
|
1396
|
+
if (defaultPaintOverrides !== null && defaultPaintOverrides !== void 0 && defaultPaintOverrides.line) {
|
|
1397
|
+
return defaultPaintOverrides.line;
|
|
1398
|
+
}
|
|
1399
|
+
|
|
1400
|
+
return {
|
|
1401
|
+
"line-color": "rgb(100,200,100)",
|
|
1402
|
+
"line-width": 5
|
|
1403
|
+
};
|
|
1404
|
+
|
|
1405
|
+
case "circle":
|
|
1406
|
+
default:
|
|
1407
|
+
if (defaultPaintOverrides !== null && defaultPaintOverrides !== void 0 && defaultPaintOverrides.circle) {
|
|
1408
|
+
return defaultPaintOverrides.circle;
|
|
1409
|
+
}
|
|
1410
|
+
|
|
1411
|
+
return {
|
|
1412
|
+
"circle-color": "#44aaaa",
|
|
1413
|
+
"circle-stroke-color": "#fff",
|
|
1414
|
+
"circle-stroke-width": 2
|
|
1415
|
+
};
|
|
1416
|
+
}
|
|
1417
|
+
};
|
|
1418
|
+
|
|
1419
|
+
var mapGeometryTypesToLayerTypes = {
|
|
1420
|
+
Position: "circle",
|
|
1421
|
+
Point: "circle",
|
|
1422
|
+
MultiPoint: "circle",
|
|
1423
|
+
LineString: "line",
|
|
1424
|
+
MultiLineString: "line",
|
|
1425
|
+
Polygon: "fill",
|
|
1426
|
+
MultiPolygon: "fill",
|
|
1427
|
+
GeometryCollection: "circle"
|
|
1428
|
+
};
|
|
1429
|
+
|
|
1430
|
+
var getDefaulLayerTypeByGeometry = function getDefaulLayerTypeByGeometry(geojson) {
|
|
1431
|
+
if ((geojson === null || geojson === void 0 ? void 0 : geojson.type) === "Feature") {
|
|
1432
|
+
var _geojson$geometry;
|
|
1433
|
+
|
|
1434
|
+
return mapGeometryTypesToLayerTypes !== null && mapGeometryTypesToLayerTypes !== void 0 && mapGeometryTypesToLayerTypes[geojson === null || geojson === void 0 ? void 0 : (_geojson$geometry = geojson.geometry) === null || _geojson$geometry === void 0 ? void 0 : _geojson$geometry.type] ? mapGeometryTypesToLayerTypes[geojson.geometry.type] : "circle";
|
|
1435
|
+
}
|
|
1436
|
+
|
|
1437
|
+
if ((geojson === null || geojson === void 0 ? void 0 : geojson.type) === "FeatureCollection") {
|
|
1438
|
+
if (geojson.features.length) {
|
|
1439
|
+
return getDefaulLayerTypeByGeometry(geojson.features[0]);
|
|
1440
|
+
}
|
|
1441
|
+
|
|
1442
|
+
return "circle";
|
|
1443
|
+
}
|
|
1444
|
+
};
|
|
1445
|
+
|
|
1392
1446
|
var msPerStep = 50;
|
|
1447
|
+
var legalLayerTypes = ["circle", "fill", "line"];
|
|
1393
1448
|
/**
|
|
1394
1449
|
* Adds source and layer of types "line", "fill" or "circle" to display GeoJSON data on the map.
|
|
1395
1450
|
*
|
|
@@ -1398,53 +1453,51 @@ var msPerStep = 50;
|
|
|
1398
1453
|
|
|
1399
1454
|
var MlGeoJsonLayer = function MlGeoJsonLayer(props) {
|
|
1400
1455
|
// Use a useRef hook to reference the layer object to be able to access it later inside useEffect hooks
|
|
1401
|
-
var
|
|
1402
|
-
|
|
1403
|
-
|
|
1456
|
+
var mapHook = useMap({
|
|
1457
|
+
mapId: props.mapId,
|
|
1458
|
+
waitForLayer: props.insertBeforeLayer
|
|
1459
|
+
});
|
|
1404
1460
|
var initializedRef = useRef(false);
|
|
1461
|
+
var layerId = useRef(props.layerId || "MlGeoJsonLayer-" + mapHook.componentId);
|
|
1462
|
+
var layerTypeRef = useRef(undefined); // transition effect variables
|
|
1463
|
+
|
|
1464
|
+
var oldGeojsonRef = useRef(null);
|
|
1405
1465
|
var transitionInProgressRef = useRef(false);
|
|
1406
1466
|
var transitionTimeoutRef = useRef(undefined);
|
|
1407
1467
|
var currentTransitionStepRef = useRef(false);
|
|
1408
1468
|
var transitionGeojsonDataRef = useRef([]);
|
|
1409
1469
|
var transitionGeojsonCommonDataRef = useRef([]);
|
|
1410
|
-
var componentId = useRef((props.layerId ? props.layerId : "MlGeoJsonLayer-") + (props.idSuffix || v4()));
|
|
1411
|
-
var layerId = useRef(props.layerId || componentId.current);
|
|
1412
1470
|
useEffect(function () {
|
|
1413
|
-
var _componentId = componentId.current;
|
|
1414
1471
|
return function () {
|
|
1415
1472
|
// This is the cleanup function, it is called when this react component is removed from react-dom
|
|
1416
1473
|
if (transitionTimeoutRef.current) {
|
|
1417
1474
|
clearTimeout(transitionTimeoutRef.current);
|
|
1418
1475
|
}
|
|
1419
|
-
|
|
1420
|
-
if (mapRef.current) {
|
|
1421
|
-
mapRef.current.cleanup(_componentId);
|
|
1422
|
-
mapRef.current = null;
|
|
1423
|
-
}
|
|
1424
1476
|
};
|
|
1425
1477
|
}, []);
|
|
1426
1478
|
useEffect(function () {
|
|
1427
|
-
if (!
|
|
1479
|
+
if (!mapHook.map || !initializedRef.current) return;
|
|
1428
1480
|
|
|
1429
1481
|
for (var key in props.layout) {
|
|
1430
|
-
|
|
1482
|
+
mapHook.map.setLayoutProperty(layerId.current, key, props.layout[key]);
|
|
1431
1483
|
}
|
|
1432
|
-
}, [props.layout,
|
|
1484
|
+
}, [props.layout, mapHook.map, props.mapId]);
|
|
1433
1485
|
useEffect(function () {
|
|
1434
|
-
if (!
|
|
1486
|
+
if (!mapHook.map || !initializedRef.current) return;
|
|
1487
|
+
|
|
1488
|
+
var _paint = props.paint || getDefaultPaintPropsByType(layerTypeRef.current, props.defaultPaintOverrides);
|
|
1435
1489
|
|
|
1436
|
-
for (var key in
|
|
1437
|
-
|
|
1490
|
+
for (var key in _paint) {
|
|
1491
|
+
mapHook.map.setPaintProperty(layerId.current, key, _paint[key]);
|
|
1438
1492
|
}
|
|
1439
|
-
}, [props.paint,
|
|
1493
|
+
}, [props.paint, mapHook.map, props.mapId, props.defaultPaintOverrides]);
|
|
1440
1494
|
var transitionToGeojson = useCallback(function (newGeojson) {
|
|
1441
|
-
_transitionToGeojson(newGeojson, props, transitionGeojsonCommonDataRef, transitionGeojsonDataRef, transitionInProgressRef, oldGeojsonRef, msPerStep, currentTransitionStepRef,
|
|
1442
|
-
}, [props]);
|
|
1495
|
+
_transitionToGeojson(newGeojson, props, transitionGeojsonCommonDataRef, transitionGeojsonDataRef, transitionInProgressRef, oldGeojsonRef, msPerStep, currentTransitionStepRef, mapHook.map, layerId.current, transitionTimeoutRef);
|
|
1496
|
+
}, [props, mapHook.map]);
|
|
1443
1497
|
useEffect(function () {
|
|
1444
|
-
var
|
|
1498
|
+
var _mapHook$map;
|
|
1445
1499
|
|
|
1446
|
-
if (!(
|
|
1447
|
-
// initialize the layer and add it to the MapLibre-gl instance or do something else with it
|
|
1500
|
+
if (!(mapHook !== null && mapHook !== void 0 && (_mapHook$map = mapHook.map) !== null && _mapHook$map !== void 0 && _mapHook$map.getSource(layerId.current)) || !initializedRef.current) return;
|
|
1448
1501
|
|
|
1449
1502
|
if (typeof props.transitionTime !== "undefined" && props.type === "line" && oldGeojsonRef.current) {
|
|
1450
1503
|
transitionInProgressRef.current = false;
|
|
@@ -1453,57 +1506,61 @@ var MlGeoJsonLayer = function MlGeoJsonLayer(props) {
|
|
|
1453
1506
|
transitionGeojsonCommonDataRef.current = [];
|
|
1454
1507
|
transitionToGeojson(props.geojson);
|
|
1455
1508
|
} else {
|
|
1456
|
-
|
|
1509
|
+
mapHook.map.getSource(layerId.current).setData(props.geojson);
|
|
1457
1510
|
}
|
|
1458
1511
|
|
|
1459
1512
|
oldGeojsonRef.current = props.geojson;
|
|
1460
|
-
}, [props.geojson, props.mapId,
|
|
1461
|
-
|
|
1462
|
-
|
|
1463
|
-
// initialize the layer and add it to the MapLibre-gl instance or do something else with it
|
|
1513
|
+
}, [props.geojson, props.mapId, mapHook.map, props.type, transitionToGeojson, props.transitionTime]);
|
|
1514
|
+
var createLayer = useCallback(function () {
|
|
1515
|
+
var geojson = props.geojson;
|
|
1464
1516
|
|
|
1465
|
-
if (props.geojson) {
|
|
1466
|
-
|
|
1467
|
-
|
|
1517
|
+
if (props.type === "line" && typeof props.transitionTime !== "undefined" && props.transitionTime && typeof props.geojson.geometry !== "undefined") {
|
|
1518
|
+
var tmpChunks = lineChunk(props.geojson, 0.01);
|
|
1519
|
+
geojson = tmpChunks.features[0];
|
|
1520
|
+
}
|
|
1468
1521
|
|
|
1469
|
-
|
|
1470
|
-
|
|
1471
|
-
|
|
1472
|
-
|
|
1522
|
+
layerTypeRef.current = props.type || getDefaulLayerTypeByGeometry(props.geojson);
|
|
1523
|
+
mapHook.map.addLayer({
|
|
1524
|
+
id: layerId.current,
|
|
1525
|
+
source: {
|
|
1526
|
+
type: "geojson",
|
|
1527
|
+
data: geojson
|
|
1528
|
+
},
|
|
1529
|
+
type: layerTypeRef.current,
|
|
1530
|
+
paint: props.paint || getDefaultPaintPropsByType(layerTypeRef.current, props.defaultPaintOverrides),
|
|
1531
|
+
layout: props.layout || {}
|
|
1532
|
+
}, props.insertBeforeLayer, mapHook.componentId);
|
|
1473
1533
|
|
|
1474
|
-
|
|
1475
|
-
|
|
1476
|
-
|
|
1477
|
-
source: {
|
|
1478
|
-
type: "geojson",
|
|
1479
|
-
data: geojson
|
|
1480
|
-
},
|
|
1481
|
-
type: props.type || "line",
|
|
1482
|
-
paint: props.paint || {
|
|
1483
|
-
"line-color": "rgb(100,200,100)",
|
|
1484
|
-
"line-width": 10
|
|
1485
|
-
},
|
|
1486
|
-
layout: props.layout || {}
|
|
1487
|
-
}, props.insertBeforeLayer, componentId.current);
|
|
1488
|
-
|
|
1489
|
-
if (typeof props.onHover !== "undefined") {
|
|
1490
|
-
mapRef.current.on("mousemove", componentId.current, props.onHover, componentId.current);
|
|
1491
|
-
}
|
|
1534
|
+
if (typeof props.onHover !== "undefined") {
|
|
1535
|
+
mapHook.map.on("mousemove", mapHook.componentId, props.onHover, mapHook.componentId);
|
|
1536
|
+
}
|
|
1492
1537
|
|
|
1493
|
-
|
|
1494
|
-
|
|
1495
|
-
|
|
1538
|
+
if (typeof props.onClick !== "undefined") {
|
|
1539
|
+
mapHook.map.on("click", mapHook.componentId, props.onClick, mapHook.componentId);
|
|
1540
|
+
}
|
|
1496
1541
|
|
|
1497
|
-
|
|
1498
|
-
|
|
1499
|
-
|
|
1542
|
+
if (typeof props.onLeave !== "undefined") {
|
|
1543
|
+
mapHook.map.on("mouseleave", mapHook.componentId, props.onLeave, mapHook.componentId);
|
|
1544
|
+
}
|
|
1500
1545
|
|
|
1501
|
-
|
|
1502
|
-
|
|
1503
|
-
|
|
1504
|
-
}
|
|
1546
|
+
if (props.type === "line" && typeof props.transitionTime !== "undefined" && typeof props.geojson.geometry !== "undefined") {
|
|
1547
|
+
transitionToGeojson(props.geojson);
|
|
1548
|
+
oldGeojsonRef.current = props.geojson;
|
|
1505
1549
|
}
|
|
1506
|
-
}, [
|
|
1550
|
+
}, [mapHook.map, props, transitionToGeojson]);
|
|
1551
|
+
useEffect(function () {
|
|
1552
|
+
if (!mapHook.mapIsReady || !props.geojson) return;
|
|
1553
|
+
|
|
1554
|
+
if (initializedRef.current && legalLayerTypes.indexOf(props.type) !== -1 && layerTypeRef.current && props.type !== layerTypeRef.current) {
|
|
1555
|
+
mapHook.map.cleanup(mapHook.componentId);
|
|
1556
|
+
} else if (initializedRef.current && (legalLayerTypes.indexOf(props.type) === -1 || legalLayerTypes.indexOf(props.type) !== -1 && props.type === layerTypeRef.current)) {
|
|
1557
|
+
return;
|
|
1558
|
+
} // initialize the layer and add it to the MapLibre-gl instance or do something else with it
|
|
1559
|
+
|
|
1560
|
+
|
|
1561
|
+
initializedRef.current = true;
|
|
1562
|
+
createLayer();
|
|
1563
|
+
}, [mapHook.mapIsReady, createLayer, props]);
|
|
1507
1564
|
return /*#__PURE__*/React__default.createElement(React__default.Fragment, null);
|
|
1508
1565
|
};
|
|
1509
1566
|
|
|
@@ -1537,6 +1594,11 @@ MlGeoJsonLayer.propTypes = {
|
|
|
1537
1594
|
*/
|
|
1538
1595
|
paint: PropTypes.object,
|
|
1539
1596
|
|
|
1597
|
+
/**
|
|
1598
|
+
* Javascript object with optional properties "fill", "line", "circle" to override implicit layer type default paint properties.
|
|
1599
|
+
*/
|
|
1600
|
+
defaultPaintOverrides: PropTypes.object,
|
|
1601
|
+
|
|
1540
1602
|
/**
|
|
1541
1603
|
* GeoJSON data that is supposed to be rendered by this component.
|
|
1542
1604
|
*/
|
|
@@ -1573,52 +1635,35 @@ MlGeoJsonLayer.propTypes = {
|
|
|
1573
1635
|
* Creates transition animation whenever the geojson prop changes.
|
|
1574
1636
|
* Only works with layer type "line" and LineString GeoJSON data.
|
|
1575
1637
|
*/
|
|
1576
|
-
transitionTime: PropTypes.number
|
|
1577
|
-
|
|
1578
|
-
/**
|
|
1579
|
-
* Id suffix string that is appended to the componentId.
|
|
1580
|
-
* Probably removed soon.
|
|
1581
|
-
*/
|
|
1582
|
-
idSuffix: PropTypes.string
|
|
1638
|
+
transitionTime: PropTypes.number
|
|
1583
1639
|
};
|
|
1584
1640
|
|
|
1585
1641
|
var MlImageMarkerLayer = function MlImageMarkerLayer(props) {
|
|
1586
|
-
|
|
1587
|
-
|
|
1588
|
-
|
|
1589
|
-
|
|
1642
|
+
var mapHook = useMap({
|
|
1643
|
+
mapId: props.mapId,
|
|
1644
|
+
waitForLayer: props.insertBeforeLayer
|
|
1645
|
+
});
|
|
1590
1646
|
var layerInitializedRef = useRef(false);
|
|
1591
|
-
var idSuffixRef = useRef(props.idSuffix || new Date().getTime());
|
|
1592
1647
|
var imageIdRef = useRef(props.imageId || "img_" + new Date().getTime());
|
|
1593
|
-
var layerId = useRef(props.layerId || componentId
|
|
1594
|
-
useEffect(function () {
|
|
1595
|
-
var _componentId = componentId.current;
|
|
1596
|
-
return function () {
|
|
1597
|
-
// This is the cleanup function, it is called when this react component is removed from react-dom
|
|
1598
|
-
if (mapRef.current) {
|
|
1599
|
-
mapRef.current.cleanup(_componentId);
|
|
1600
|
-
mapRef.current = null;
|
|
1601
|
-
}
|
|
1602
|
-
};
|
|
1603
|
-
}, []);
|
|
1648
|
+
var layerId = useRef(props.layerId || "MlImageMarkerLayer-" + mapHook.componentId);
|
|
1604
1649
|
useEffect(function () {
|
|
1605
|
-
if (!
|
|
1650
|
+
if (!mapHook.mapIsReady || mapHook.map && !mapHook.map.getLayer(layerId.current) || !props.options) return; // the MapLibre-gl instance (mapContext.map) is accessible here
|
|
1606
1651
|
// initialize the layer and add it to the MapLibre-gl instance or do something else with it
|
|
1607
1652
|
|
|
1608
1653
|
var key;
|
|
1609
1654
|
|
|
1610
1655
|
if (props.options.layout) {
|
|
1611
1656
|
for (key in props.options.layout) {
|
|
1612
|
-
|
|
1657
|
+
mapHook.map.setLayoutProperty(layerId.current, key, props.options.layout[key]);
|
|
1613
1658
|
}
|
|
1614
1659
|
}
|
|
1615
1660
|
|
|
1616
1661
|
if (props.options.paint) {
|
|
1617
1662
|
for (key in props.options.paint) {
|
|
1618
|
-
|
|
1663
|
+
mapHook.map.setPaintProperty(layerId.current, key, props.options.paint[key]);
|
|
1619
1664
|
}
|
|
1620
1665
|
}
|
|
1621
|
-
}, [props.options, layerId.current,
|
|
1666
|
+
}, [props.options, layerId.current, props.mapId]);
|
|
1622
1667
|
var addLayer = useCallback(function () {
|
|
1623
1668
|
var tmpOptions = _objectSpread2({
|
|
1624
1669
|
id: layerId.current,
|
|
@@ -1626,38 +1671,387 @@ var MlImageMarkerLayer = function MlImageMarkerLayer(props) {
|
|
|
1626
1671
|
}, props.options);
|
|
1627
1672
|
|
|
1628
1673
|
tmpOptions.layout["icon-image"] = imageIdRef.current;
|
|
1629
|
-
|
|
1630
|
-
}, [props]);
|
|
1674
|
+
mapHook.map.addLayer(tmpOptions, props.insertBeforeLayer, mapHook.componentId);
|
|
1675
|
+
}, [props, mapHook.mapIsReady, mapHook.map]);
|
|
1631
1676
|
useEffect(function () {
|
|
1632
|
-
if (!props.options || !
|
|
1633
|
-
// initialize the layer and add it to the MapLibre-gl instance or do something else with it
|
|
1634
|
-
|
|
1635
|
-
mapRef.current = mapContext.getMap(props.mapId);
|
|
1677
|
+
if (!props.options || !mapHook.mapIsReady || layerInitializedRef.current) return;
|
|
1636
1678
|
layerInitializedRef.current = true;
|
|
1637
|
-
console.log(props.imgSrc);
|
|
1638
1679
|
|
|
1639
1680
|
if (props.imgSrc) {
|
|
1640
|
-
|
|
1681
|
+
mapHook.map.loadImage(props.imgSrc, function (error, image) {
|
|
1641
1682
|
if (error) throw error;
|
|
1642
|
-
|
|
1683
|
+
mapHook.map.addImage(imageIdRef.current, image, mapHook.componentId);
|
|
1643
1684
|
});
|
|
1644
1685
|
}
|
|
1645
1686
|
|
|
1646
1687
|
addLayer();
|
|
1647
|
-
}, [
|
|
1688
|
+
}, [mapHook.mapIsReady, mapHook.map, addLayer, props]);
|
|
1648
1689
|
useEffect(function () {
|
|
1649
|
-
if (!
|
|
1690
|
+
if (!mapHook.mapIsReady || mapHook.map && !mapHook.map.getLayer(layerId.current) || !props.options) {
|
|
1650
1691
|
return;
|
|
1651
|
-
}
|
|
1652
|
-
// initialize the layer and add it to the MapLibre-gl instance or do something else with it
|
|
1653
|
-
|
|
1692
|
+
}
|
|
1654
1693
|
|
|
1655
|
-
|
|
1656
|
-
}, [props.options.source.data,
|
|
1694
|
+
mapHook.map.getSource(layerId.current).setData(props.options.source.data);
|
|
1695
|
+
}, [props.options.source.data, props]);
|
|
1657
1696
|
return /*#__PURE__*/React__default.createElement(React__default.Fragment, null);
|
|
1658
1697
|
};
|
|
1659
1698
|
|
|
1660
|
-
|
|
1699
|
+
var marker = "b556faa3bc6829d2.png";
|
|
1700
|
+
|
|
1701
|
+
/**
|
|
1702
|
+
* Adds a button that makes the map follow the users GPS position using
|
|
1703
|
+
* navigator.geolocation.watchPosition if activated
|
|
1704
|
+
*
|
|
1705
|
+
* @param {object} props
|
|
1706
|
+
* @param {string} props.mapId Id of the target MapLibre instance in mapContext
|
|
1707
|
+
*
|
|
1708
|
+
* @component
|
|
1709
|
+
*/
|
|
1710
|
+
|
|
1711
|
+
var MlFollowGps = function MlFollowGps(props) {
|
|
1712
|
+
var mapHook = useMap({
|
|
1713
|
+
mapId: props.mapId,
|
|
1714
|
+
waitForLayer: props.insertBeforeLayer
|
|
1715
|
+
});
|
|
1716
|
+
|
|
1717
|
+
var _useState = useState(false),
|
|
1718
|
+
_useState2 = _slicedToArray(_useState, 2),
|
|
1719
|
+
isFollowed = _useState2[0],
|
|
1720
|
+
setIsFollowed = _useState2[1];
|
|
1721
|
+
|
|
1722
|
+
var _useState3 = useState(undefined),
|
|
1723
|
+
_useState4 = _slicedToArray(_useState3, 2),
|
|
1724
|
+
geoJson = _useState4[0],
|
|
1725
|
+
setGeoJson = _useState4[1];
|
|
1726
|
+
|
|
1727
|
+
var watchIdRef = useRef(undefined);
|
|
1728
|
+
|
|
1729
|
+
var _useState5 = useState(false),
|
|
1730
|
+
_useState6 = _slicedToArray(_useState5, 2),
|
|
1731
|
+
locationAccessDenied = _useState6[0],
|
|
1732
|
+
setLocationAccessDenied = _useState6[1];
|
|
1733
|
+
|
|
1734
|
+
var _useState7 = useState(),
|
|
1735
|
+
_useState8 = _slicedToArray(_useState7, 2),
|
|
1736
|
+
accuracyGeoJson = _useState8[0],
|
|
1737
|
+
setAccuracyGeoJson = _useState8[1];
|
|
1738
|
+
|
|
1739
|
+
useEffect(function () {
|
|
1740
|
+
return function () {
|
|
1741
|
+
if (watchIdRef.current) {
|
|
1742
|
+
navigator.geolocation.clearWatch(watchIdRef.current);
|
|
1743
|
+
watchIdRef.current = undefined;
|
|
1744
|
+
}
|
|
1745
|
+
};
|
|
1746
|
+
}, []);
|
|
1747
|
+
var getLocationSuccess = useCallback(function (pos) {
|
|
1748
|
+
if (!mapHook.map) return;
|
|
1749
|
+
mapHook.map.setCenter([pos.coords.longitude, pos.coords.latitude]);
|
|
1750
|
+
var geoJsonPoint = point([pos.coords.longitude, pos.coords.latitude]);
|
|
1751
|
+
setGeoJson(geoJsonPoint);
|
|
1752
|
+
setAccuracyGeoJson(circle(geoJsonPoint, pos.coords.accuracy / 1000));
|
|
1753
|
+
}, [mapHook.map]);
|
|
1754
|
+
|
|
1755
|
+
var getLocationError = function getLocationError(err) {
|
|
1756
|
+
console.log("Access of user location denied");
|
|
1757
|
+
setLocationAccessDenied(true);
|
|
1758
|
+
};
|
|
1759
|
+
|
|
1760
|
+
useEffect(function () {
|
|
1761
|
+
if (!mapHook.map) return;
|
|
1762
|
+
|
|
1763
|
+
if (isFollowed) {
|
|
1764
|
+
watchIdRef.current = navigator.geolocation.watchPosition(getLocationSuccess, getLocationError);
|
|
1765
|
+
} else {
|
|
1766
|
+
navigator.geolocation.clearWatch(watchIdRef.current);
|
|
1767
|
+
}
|
|
1768
|
+
}, [isFollowed, getLocationSuccess]);
|
|
1769
|
+
return /*#__PURE__*/React__default.createElement(React__default.Fragment, null, isFollowed && geoJson && /*#__PURE__*/React__default.createElement(MlGeoJsonLayer, {
|
|
1770
|
+
geojson: accuracyGeoJson,
|
|
1771
|
+
type: "fill",
|
|
1772
|
+
paint: _objectSpread2({
|
|
1773
|
+
"fill-color": "#ee7700",
|
|
1774
|
+
"fill-opacity": 0.5
|
|
1775
|
+
}, props.accuracyPaint),
|
|
1776
|
+
insertBeforeLayer: "MlFollowGpsMarker"
|
|
1777
|
+
}), isFollowed && geoJson && /*#__PURE__*/React__default.createElement(MlImageMarkerLayer, {
|
|
1778
|
+
layerId: "MlFollowGpsMarker",
|
|
1779
|
+
options: {
|
|
1780
|
+
type: "symbol",
|
|
1781
|
+
source: {
|
|
1782
|
+
type: "geojson",
|
|
1783
|
+
data: geoJson
|
|
1784
|
+
},
|
|
1785
|
+
layout: _objectSpread2({
|
|
1786
|
+
"icon-size": 0.1,
|
|
1787
|
+
"icon-offset": [0, -340]
|
|
1788
|
+
}, props.markerLayout)
|
|
1789
|
+
},
|
|
1790
|
+
imgSrc: props.markerImage || marker
|
|
1791
|
+
}), /*#__PURE__*/React__default.createElement(Button, {
|
|
1792
|
+
sx: _objectSpread2({
|
|
1793
|
+
zIndex: 1002,
|
|
1794
|
+
color: isFollowed ? props.onColor : props.offColor
|
|
1795
|
+
}, props.style),
|
|
1796
|
+
disabled: locationAccessDenied,
|
|
1797
|
+
onClick: function onClick() {
|
|
1798
|
+
setIsFollowed(!isFollowed);
|
|
1799
|
+
}
|
|
1800
|
+
}, " ", /*#__PURE__*/React__default.createElement(RoomIcon, {
|
|
1801
|
+
sx: {
|
|
1802
|
+
fontSize: props.style.fontSize
|
|
1803
|
+
}
|
|
1804
|
+
}), " "));
|
|
1805
|
+
};
|
|
1806
|
+
|
|
1807
|
+
MlFollowGps.defaultProps = {
|
|
1808
|
+
mapId: undefined,
|
|
1809
|
+
style: {
|
|
1810
|
+
minWidth: "30px",
|
|
1811
|
+
minHeight: "30px",
|
|
1812
|
+
width: "30px",
|
|
1813
|
+
height: "30px",
|
|
1814
|
+
backgroundColor: "#414141",
|
|
1815
|
+
borderRadius: "23%",
|
|
1816
|
+
margin: 0.15,
|
|
1817
|
+
fontSize: "1.3em",
|
|
1818
|
+
":hover": {
|
|
1819
|
+
backgroundColor: "#515151",
|
|
1820
|
+
color: "#ececec"
|
|
1821
|
+
}
|
|
1822
|
+
},
|
|
1823
|
+
onColor: "#ececec",
|
|
1824
|
+
offColor: "#666"
|
|
1825
|
+
};
|
|
1826
|
+
MlFollowGps.propTypes = {
|
|
1827
|
+
/**
|
|
1828
|
+
* Id of the target MapLibre instance in mapContext
|
|
1829
|
+
*/
|
|
1830
|
+
mapId: PropTypes.string,
|
|
1831
|
+
|
|
1832
|
+
/**
|
|
1833
|
+
* CSS style object that is applied to the button component
|
|
1834
|
+
*/
|
|
1835
|
+
style: PropTypes.object,
|
|
1836
|
+
|
|
1837
|
+
/**
|
|
1838
|
+
* Active button font color
|
|
1839
|
+
*/
|
|
1840
|
+
onColor: PropTypes.string,
|
|
1841
|
+
|
|
1842
|
+
/**
|
|
1843
|
+
* Inactive button font color
|
|
1844
|
+
*/
|
|
1845
|
+
offColor: PropTypes.string,
|
|
1846
|
+
|
|
1847
|
+
/**
|
|
1848
|
+
* Accuracy paint property object, that is passed to the MlGeoJsonLayer responsible for drawing the accuracy circle.
|
|
1849
|
+
* Use any available paint prop from layer type "fill".
|
|
1850
|
+
* https://maplibre.org/maplibre-gl-js-docs/style-spec/layers/#fill
|
|
1851
|
+
*/
|
|
1852
|
+
accuracyPaint: PropTypes.object,
|
|
1853
|
+
|
|
1854
|
+
/**
|
|
1855
|
+
* Marker layout property object, that is passed to the MlImageMarkerLayer responsible for drawing the position marker.
|
|
1856
|
+
* Use any available layout property from layer type "symbol".
|
|
1857
|
+
* https://maplibre.org/maplibre-gl-js-docs/style-spec/layers/#symbol
|
|
1858
|
+
*/
|
|
1859
|
+
markerLayout: PropTypes.object,
|
|
1860
|
+
|
|
1861
|
+
/**
|
|
1862
|
+
* Replace the default marker image with a custom one.
|
|
1863
|
+
*/
|
|
1864
|
+
markerImage: PropTypes.string
|
|
1865
|
+
};
|
|
1866
|
+
|
|
1867
|
+
var nmMap = {
|
|
1868
|
+
street: ["footway", "street", "road", "street_name", "residential", "path", "pedestrian", "road_reference", "road_reference_intl", "square", "place"],
|
|
1869
|
+
number: ["house_number", "street_number"],
|
|
1870
|
+
place: ["city", "village", "hamlet", "locality", "croft", "neighbourhood", "suburb", "city_district", "district", "quarter", "borough", "city_block", "residential", "commercial", "industrial", "houses", "subdivision", "allotments", "postal_city", "town", "municipality", "local_administrative_area"],
|
|
1871
|
+
zip: ["postcode", "partial_postcode"],
|
|
1872
|
+
state: ["state", "province", "state_code"]
|
|
1873
|
+
};
|
|
1874
|
+
|
|
1875
|
+
var nmConverter = function nmConverter(nmAddress) {
|
|
1876
|
+
var addressArr = [];
|
|
1877
|
+
|
|
1878
|
+
for (var key in nmMap) {
|
|
1879
|
+
nmMap[key].some(function (element) {
|
|
1880
|
+
if (nmAddress.hasOwnProperty(element)) {
|
|
1881
|
+
addressArr.push(nmAddress[element]);
|
|
1882
|
+
return true;
|
|
1883
|
+
}
|
|
1884
|
+
|
|
1885
|
+
return false;
|
|
1886
|
+
});
|
|
1887
|
+
}
|
|
1888
|
+
|
|
1889
|
+
return addressArr.join(", ");
|
|
1890
|
+
};
|
|
1891
|
+
|
|
1892
|
+
var toPixels = function toPixels(length) {
|
|
1893
|
+
var conversionFactor = 96;
|
|
1894
|
+
conversionFactor /= 25.4;
|
|
1895
|
+
return conversionFactor * length + "px";
|
|
1896
|
+
};
|
|
1897
|
+
|
|
1898
|
+
var createPdf = function createPdf(map, locationValue, setLoading) {
|
|
1899
|
+
setLoading(true);
|
|
1900
|
+
var width = 210;
|
|
1901
|
+
var height = 297; // Calculate pixel ratio
|
|
1902
|
+
|
|
1903
|
+
var actualPixelRatio = window.devicePixelRatio; // Create map container
|
|
1904
|
+
|
|
1905
|
+
var hidden = document.createElement("div");
|
|
1906
|
+
hidden.className = "hidden-map";
|
|
1907
|
+
document.body.appendChild(hidden);
|
|
1908
|
+
var container = document.createElement("div");
|
|
1909
|
+
container.style.width = toPixels(width);
|
|
1910
|
+
container.style.height = toPixels(height);
|
|
1911
|
+
hidden.appendChild(container); //Render map
|
|
1912
|
+
|
|
1913
|
+
var renderMap = new maplibregl$1.Map({
|
|
1914
|
+
container: container,
|
|
1915
|
+
center: map.getCenter(),
|
|
1916
|
+
zoom: map.getZoom(),
|
|
1917
|
+
bearing: map.getBearing(),
|
|
1918
|
+
pitch: map.getPitch(),
|
|
1919
|
+
interactive: false,
|
|
1920
|
+
preserveDrawingBuffer: true,
|
|
1921
|
+
fadeDuration: 0,
|
|
1922
|
+
attributionControl: false
|
|
1923
|
+
});
|
|
1924
|
+
var style = map.getStyle();
|
|
1925
|
+
|
|
1926
|
+
var _loop = function _loop(name) {
|
|
1927
|
+
var src = style.sources[name];
|
|
1928
|
+
Object.keys(src).forEach(function (key) {
|
|
1929
|
+
//delete properties if value is undefined.
|
|
1930
|
+
// for instance, raster-dem might has undefined value in "url" and "bounds"
|
|
1931
|
+
if (!src[key]) {
|
|
1932
|
+
delete src[key];
|
|
1933
|
+
}
|
|
1934
|
+
});
|
|
1935
|
+
};
|
|
1936
|
+
|
|
1937
|
+
for (var name in style.sources) {
|
|
1938
|
+
_loop(name);
|
|
1939
|
+
}
|
|
1940
|
+
|
|
1941
|
+
renderMap.setStyle(style);
|
|
1942
|
+
renderMap.once("idle", function () {
|
|
1943
|
+
var _hidden$parentNode;
|
|
1944
|
+
|
|
1945
|
+
// TO DO: It is still under development
|
|
1946
|
+
var pdf = new jsPDF({
|
|
1947
|
+
orientation: "p",
|
|
1948
|
+
unit: "mm",
|
|
1949
|
+
compress: true
|
|
1950
|
+
});
|
|
1951
|
+
Object.defineProperty(window, "devicePixelRatio", {
|
|
1952
|
+
get: function get() {
|
|
1953
|
+
return 300 / 96;
|
|
1954
|
+
}
|
|
1955
|
+
});
|
|
1956
|
+
var offsetX = 2.5;
|
|
1957
|
+
var offsetY = 2.5;
|
|
1958
|
+
var marginTop = 3;
|
|
1959
|
+
var marginBottom = 3;
|
|
1960
|
+
var innerMargin = 2;
|
|
1961
|
+
var logo = "data:image/png;base64,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";
|
|
1962
|
+
var textBuffer = 1;
|
|
1963
|
+
var lineHeight = 3.25;
|
|
1964
|
+
var text = locationValue ? nmConverter(locationValue.address) : "";
|
|
1965
|
+
var textChunksSeperator = text.split(",");
|
|
1966
|
+
var textChunks = [];
|
|
1967
|
+
|
|
1968
|
+
if (textChunks.length) {
|
|
1969
|
+
textChunksSeperator.forEach(function (chunk) {
|
|
1970
|
+
var limitChunks = chunk.match(/.{1,34}/g);
|
|
1971
|
+
textChunks.push.apply(textChunks, _toConsumableArray(limitChunks));
|
|
1972
|
+
});
|
|
1973
|
+
} //Render map image
|
|
1974
|
+
|
|
1975
|
+
|
|
1976
|
+
pdf.addImage(renderMap.getCanvas().toDataURL("image/png"), "png", 0, 0, 210, 297, null, "FAST"); //Render lower left Copyright box
|
|
1977
|
+
|
|
1978
|
+
pdf.setFillColor("white");
|
|
1979
|
+
pdf.rect(138, 287, 297, 10, "F");
|
|
1980
|
+
pdf.setFontSize(10); // optional
|
|
1981
|
+
|
|
1982
|
+
pdf.text("Datenquelle: © OpenStreetMap-Mitwirkende", 140, pdf.internal.pageSize.height - 3); //Render infobox
|
|
1983
|
+
|
|
1984
|
+
pdf.setFillColor("white");
|
|
1985
|
+
var infoBoxSize = textChunks.length * lineHeight + marginTop + marginBottom + lineHeight * 2 + innerMargin * 2 + textBuffer;
|
|
1986
|
+
pdf.rect(offsetX, 2, 66.5, infoBoxSize, "F");
|
|
1987
|
+
pdf.setFontSize(10);
|
|
1988
|
+
pdf.text("Karten PDF:", 6, offsetY + marginTop); //Render inner infobox
|
|
1989
|
+
|
|
1990
|
+
pdf.rect(6, 7, 60, textChunks.length * lineHeight + innerMargin * 2 + textBuffer);
|
|
1991
|
+
pdf.setFontSize(10); //Write out address
|
|
1992
|
+
|
|
1993
|
+
textChunks.forEach(function (text, i) {
|
|
1994
|
+
pdf.text(text.trim(), 8, 10 + i * 3.5 + innerMargin);
|
|
1995
|
+
}); //Add WG Logo
|
|
1996
|
+
|
|
1997
|
+
pdf.addImage(logo, "png", 5, offsetY + marginTop + lineHeight * 2 + textChunks.length * 3 + innerMargin * 2, 3, 3, null, "FAST"); //Add WG Url
|
|
1998
|
+
|
|
1999
|
+
pdf.setFontSize(10);
|
|
2000
|
+
pdf.text("wheregroup.com", 40, offsetY + marginTop + lineHeight * 2 + textChunks.length * lineHeight + innerMargin * 2 + textBuffer); //Set pdfs props
|
|
2001
|
+
|
|
2002
|
+
pdf.setProperties({
|
|
2003
|
+
title: "Map export",
|
|
2004
|
+
subject: "Map export",
|
|
2005
|
+
creator: "WhereGroup GmbH",
|
|
2006
|
+
author: "(c)WhereGroup GmbH, (c)OpenStreetMap"
|
|
2007
|
+
});
|
|
2008
|
+
pdf.save("Map.pdf");
|
|
2009
|
+
renderMap.remove();
|
|
2010
|
+
(_hidden$parentNode = hidden.parentNode) === null || _hidden$parentNode === void 0 ? void 0 : _hidden$parentNode.removeChild(hidden);
|
|
2011
|
+
Object.defineProperty(window, "devicePixelRatio", {
|
|
2012
|
+
get: function get() {
|
|
2013
|
+
return actualPixelRatio;
|
|
2014
|
+
}
|
|
2015
|
+
});
|
|
2016
|
+
setLoading(false);
|
|
2017
|
+
});
|
|
2018
|
+
};
|
|
2019
|
+
|
|
2020
|
+
/**
|
|
2021
|
+
* Renders a button that will create a PDF version of the current map view (dimensions adjusted to fit Din A4 Paper).
|
|
2022
|
+
*
|
|
2023
|
+
* @component
|
|
2024
|
+
*/
|
|
2025
|
+
|
|
2026
|
+
var MlCreatePdfButton = function MlCreatePdfButton(props) {
|
|
2027
|
+
var mapContext = useContext(MapContext);
|
|
2028
|
+
var initializedRef = useRef(false);
|
|
2029
|
+
var mapRef = useRef(undefined);
|
|
2030
|
+
useEffect(function () {
|
|
2031
|
+
if (!mapContext.mapExists(props.mapId) || initializedRef.current) return;
|
|
2032
|
+
initializedRef.current = true;
|
|
2033
|
+
mapRef.current = mapContext.getMap(props.mapId);
|
|
2034
|
+
}, [mapContext.mapIds, mapContext, props.mapId]);
|
|
2035
|
+
return /*#__PURE__*/React__default.createElement(React__default.Fragment, null, /*#__PURE__*/React__default.createElement(Button, {
|
|
2036
|
+
color: "primary",
|
|
2037
|
+
variant: "contained",
|
|
2038
|
+
onClick: function onClick() {
|
|
2039
|
+
createPdf(mapRef.current, null, function () {});
|
|
2040
|
+
}
|
|
2041
|
+
}, /*#__PURE__*/React__default.createElement(PrinterIcon, null)));
|
|
2042
|
+
};
|
|
2043
|
+
|
|
2044
|
+
MlCreatePdfButton.defaultProps = {
|
|
2045
|
+
mapId: undefined
|
|
2046
|
+
};
|
|
2047
|
+
MlCreatePdfButton.propTypes = {
|
|
2048
|
+
/**
|
|
2049
|
+
* Id of the target MapLibre instance in mapContext
|
|
2050
|
+
*/
|
|
2051
|
+
mapId: PropTypes.string
|
|
2052
|
+
};
|
|
2053
|
+
|
|
2054
|
+
function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
|
|
1661
2055
|
|
|
1662
2056
|
function SvgRotateRight(props) {
|
|
1663
2057
|
return /*#__PURE__*/createElement("svg", _extends({
|
|
@@ -1818,246 +2212,90 @@ var MlNavigationCompass = function MlNavigationCompass(props) {
|
|
|
1818
2212
|
}, props.backgroundStyle), process.env.NODE_ENV === "production" ? "" : ";label:MlNavigationCompass;", process.env.NODE_ENV === "production" ? "" : "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIk1sTmF2aWdhdGlvbkNvbXBhc3MuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBMklxQiIsImZpbGUiOiJNbE5hdmlnYXRpb25Db21wYXNzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFJlYWN0LCB7IHVzZVN0YXRlLCB1c2VSZWYsIHVzZUVmZmVjdCwgdXNlQ29udGV4dCB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuXG5pbXBvcnQgeyBNYXBDb250ZXh0IH0gZnJvbSBcIkBtYXBjb21wb25lbnRzL3JlYWN0LWNvcmVcIjtcbmltcG9ydCB7IHY0IGFzIHV1aWR2NCB9IGZyb20gXCJ1dWlkXCI7XG5cbmltcG9ydCB7IFJlYWN0Q29tcG9uZW50IGFzIFJvdGF0ZVJpZ2h0SWNvbiB9IGZyb20gXCIuL2Fzc2V0cy9yb3RhdGVfcmlnaHQuc3ZnXCI7XG5pbXBvcnQgeyBSZWFjdENvbXBvbmVudCBhcyBSb3RhdGVMZWZ0SWNvbiB9IGZyb20gXCIuL2Fzc2V0cy9yb3RhdGVfbGVmdC5zdmdcIjtcbmltcG9ydCB7IFJlYWN0Q29tcG9uZW50IGFzIE5lZWRsZUljb24gfSBmcm9tIFwiLi9hc3NldHMvbmVlZGxlLnN2Z1wiO1xuXG5pbXBvcnQgc3R5bGVkIGZyb20gXCJAZW1vdGlvbi9zdHlsZWRcIjtcbmltcG9ydCB7IGNzcyB9IGZyb20gXCJAZW1vdGlvbi9jc3NcIjtcblxuY29uc3QgTmVlZGxlQnV0dG9uID0gc3R5bGVkLmRpdmBcbiAgd2lkdGg6IDQwJTtcbiAgZGlzcGxheTogZmxleDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcblxuICAmOmhvdmVyIHtcbiAgICBjdXJzb3I6IHBvaW50ZXI7XG4gIH1cbiAgcGF0aCB7XG4gICAgZmlsdGVyOiBkcm9wLXNoYWRvdygwcHggMHB4IDE1cHggcmdiYSgwLCAwLCAwLCAwLjIpKTtcbiAgfVxuICAmOmhvdmVyIHBhdGgge1xuICAgIGZpbHRlcjogZHJvcC1zaGFkb3coMHB4IDBweCAxM3B4IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4xKSk7XG4gIH1cbiAgcGF0aDpudGgtb2YtdHlwZSgyKSB7XG4gICAgZmlsbDogIzM0MzQzNDtcbiAgfVxuICAmOmhvdmVyIHBhdGg6bnRoLW9mLXR5cGUoMikge1xuICAgIGZpbGw6ICM0MzQzNDM7XG4gIH1cbiAgcGF0aDpudGgtb2YtdHlwZSgxKSB7XG4gICAgZmlsbDogI2U5MDMxODtcbiAgfVxuICAmOmhvdmVyIHBhdGg6bnRoLW9mLXR5cGUoMSkge1xuICAgIGZpbGw6ICNmYjQwNTI7XG4gIH1cbmA7XG5jb25zdCBOZWVkbGVDb250YWluZXIgPSBzdHlsZWQuZGl2YFxuICBwb2ludGVyLWV2ZW50czogbm9uZTtcbiAgZGlzcGxheTogZmxleDtcbiAgei1pbmRleDogMTAwMjtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuXG4gIG1hcmdpbi1sZWZ0OiAtMzAlO1xuICBwYXRoOm50aC1vZi10eXBlKDIpIHtcbiAgfVxuICBzdmcgZyB7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoLTc2LjcwNTMsIC0yOS43NzI3KSBzY2FsZSgyLCAxKTtcbiAgfVxuICBzdmcge1xuICAgIHotaW5kZXg6IDk5OTA7XG4gICAgaGVpZ2h0OiAxNTBweDtcbiAgICB3aWR0aDogMjAwcHg7XG4gIH1cbmA7XG5jb25zdCBSb3RhdGVCdXR0b24gPSBzdHlsZWQuZGl2YFxuICB3aWR0aDogMzAlO1xuICBtYXJnaW4tdG9wOiAxNHB4O1xuICB6LWluZGV4OiA5OTk7XG4gIGRpc3BsYXk6IGZsZXg7XG5cbiAgc3ZnOmhvdmVyIHtcbiAgICBjdXJzb3I6IHBvaW50ZXI7XG4gIH1cbiAgc3ZnOmhvdmVyIHBhdGgge1xuICAgIGZpbGw6ICNlY2VjZWM7XG4gICAgZmlsdGVyOiBkcm9wLXNoYWRvdygwcHggMHB4IDVweCByZ2JhKDAsIDAsIDAsIDAuMSkpO1xuICB9XG4gIHBhdGgge1xuICAgIGZpbGw6ICNiYmI7XG4gIH1cbiAgc3ZnIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlKDAuNik7XG4gICAgei1pbmRleDogOTk5MDtcbiAgICBoZWlnaHQ6IDE3MnB4O1xuICB9XG5gO1xuXG4vKipcbiAqIE5hdmlnYXRpb24gY29tcG9uZW50IHRoYXQgZGlzcGxheXMgYSBjb21wYXNzIGNvbXBvbmVudCB3aGljaCBpbmRpY2F0ZXMgdGhlIGN1cnJlbnQgb3JpYW50YXRpb24gb2YgdGhlIG1hcCBpdCBpcyByZWdpc3RlcmVkIGZvciBhbmQgb2ZmZXJzIGNvbnRyb2xzIHRvIHR1cm4gdGhlIGJlYXJpbmcgOTDCsCBsZWZ0L3JpZ2h0IG9yIHJlc2V0IG5vcnRoIHRvIHBvaW50IHVwLlxuICpcbiAqIEFsbCBzdHlsZSBwcm9wcyBhcmUgYXBwbGllZCB1c2luZyBAZW1vdGlvbi9jc3MgdG8gYWxsb3cgbW9yZSBjb21wbGV4IGNzcyBzZWxlY3RvcnMuXG4gKlxuICogQGNvbXBvbmVudFxuICovXG5jb25zdCBNbE5hdmlnYXRpb25Db21wYXNzID0gKHByb3BzKSA9PiB7XG4gIC8vIFVzZSBhIHVzZVJlZiBob29rIHRvIHJlZmVyZW5jZSB0aGUgbGF5ZXIgb2JqZWN0IHRvIGJlIGFibGUgdG8gYWNjZXNzIGl0IGxhdGVyIGluc2lkZSB1c2VFZmZlY3QgaG9va3NcbiAgY29uc3QgbWFwQ29udGV4dCA9IHVzZUNvbnRleHQoTWFwQ29udGV4dCk7XG5cbiAgY29uc3QgaW5pdGlhbGl6ZWRSZWYgPSB1c2VSZWYoZmFsc2UpO1xuICBjb25zdCBtYXBSZWYgPSB1c2VSZWYodW5kZWZpbmVkKTtcbiAgY29uc3QgY29tcG9uZW50SWQgPSB1c2VSZWYoKHByb3BzLmlkUHJlZml4ID8gcHJvcHMuaWRQcmVmaXggOiBcIk1sTmF2aWdhdGlvbkNvbXBhc3MtXCIpICsgdXVpZHY0KCkpO1xuXG4gIGNvbnN0IFtiZWFyaW5nLCBzZXRCZWFyaW5nXSA9IHVzZVN0YXRlKDApO1xuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgbGV0IF9jb21wb25lbnRJZCA9IGNvbXBvbmVudElkLmN1cnJlbnQ7XG5cbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgLy8gVGhpcyBpcyB0aGUgY2xlYW51cCBmdW5jdGlvbiwgaXQgaXMgY2FsbGVkIHdoZW4gdGhpcyByZWFjdCBjb21wb25lbnQgaXMgcmVtb3ZlZCBmcm9tIHJlYWN0LWRvbVxuXG4gICAgICBpZiAobWFwUmVmLmN1cnJlbnQpIHtcbiAgICAgICAgbWFwUmVmLmN1cnJlbnQuY2xlYW51cChfY29tcG9uZW50SWQpO1xuICAgICAgICBtYXBSZWYuY3VycmVudCA9IHVuZGVmaW5lZDtcbiAgICAgIH1cbiAgICAgIGluaXRpYWxpemVkUmVmLmN1cnJlbnQgPSBmYWxzZTtcbiAgICB9O1xuICB9LCBbXSk7XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoIW1hcENvbnRleHQubWFwRXhpc3RzKHByb3BzLm1hcElkKSB8fCBpbml0aWFsaXplZFJlZi5jdXJyZW50KSByZXR1cm47XG4gICAgaW5pdGlhbGl6ZWRSZWYuY3VycmVudCA9IHRydWU7XG4gICAgbWFwUmVmLmN1cnJlbnQgPSBtYXBDb250ZXh0LmdldE1hcChwcm9wcy5tYXBJZCk7XG5cbiAgICBtYXBSZWYuY3VycmVudC5vbihcbiAgICAgIFwicm90YXRlXCIsXG4gICAgICBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHNldEJlYXJpbmcoTWF0aC5yb3VuZChtYXBSZWYuY3VycmVudC5nZXRCZWFyaW5nKCkpKTtcbiAgICAgIH0sXG4gICAgICBjb21wb25lbnRJZC5jdXJyZW50XG4gICAgKTtcbiAgICBzZXRCZWFyaW5nKE1hdGgucm91bmQobWFwUmVmLmN1cnJlbnQuZ2V0QmVhcmluZygpKSk7XG4gIH0sIFttYXBDb250ZXh0Lm1hcElkcywgbWFwQ29udGV4dCwgcHJvcHMubWFwSWRdKTtcblxuICByZXR1cm4gKFxuICAgIDw+XG4gICAgICA8ZGl2XG4gICAgICAgIGNsYXNzTmFtZT17Y3NzKHtcbiAgICAgICAgICB6SW5kZXg6IDEwMDAsXG4gICAgICAgICAgdG9wOiAwLFxuICAgICAgICAgIHBvc2l0aW9uOiBcImFic29sdXRlXCIsXG4gICAgICAgICAgLi4ucHJvcHMuc3R5bGUsXG4gICAgICAgIH0pfVxuICAgICAgPlxuICAgICAgICA8ZGl2XG4gICAgICAgICAgY2xhc3NOYW1lPXtjc3Moe1xuICAgICAgICAgICAgcG9zaXRpb246IFwiYWJzb2x1dGVcIixcbiAgICAgICAgICAgIGJvcmRlcjogXCIxMHB4IHNvbGlkICNiY2JjYmNcIixcbiAgICAgICAgICAgIGJhY2tncm91bmRDb2xvcjogXCIjNzE3MTcxXCIsXG4gICAgICAgICAgICBiYWNrZ3JvdW5kOiBcInJhZGlhbC1ncmFkaWVudCgjNzE3MTcxLCAjNDE0MTQxKVwiLFxuICAgICAgICAgICAgaGVpZ2h0OiBcIjIwMHB4XCIsXG4gICAgICAgICAgICB3aWR0aDogXCIyMDBweFwiLFxuICAgICAgICAgICAgYm9yZGVyUmFkaXVzOiBcIjUwJVwiLFxuICAgICAgICAgICAgZGlzcGxheTogXCJmbGV4XCIsXG4gICAgICAgICAgICBqdXN0aWZ5Q29udGVudDogXCJjZW50ZXJcIixcbiAgICAgICAgICAgIHRyYW5zZm9ybTogXCJzY2FsZSgwLjIpIHRyYW5zbGF0ZVgoLTQ0OHB4KSB0cmFuc2xhdGVZKC00NDhweClcIixcbiAgICAgICAgICAgIC4uLnByb3BzLmJhY2tncm91bmRTdHlsZSxcbiAgICAgICAgICB9KX1cbiAgICAgICAgPlxuICAgICAgICAgIDxSb3RhdGVCdXR0b24gY2xhc3NOYW1lPXtjc3MoeyAuLi5wcm9wcy5yb3RhdGVSaWdodFN0eWxlIH0pfT5cbiAgICAgICAgICAgIDxSb3RhdGVSaWdodEljb25cbiAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4ge1xuICAgICAgICAgICAgICAgIGxldCBiZWFyaW5nID0gTWF0aC5yb3VuZChtYXBSZWYuY3VycmVudD8uZ2V0QmVhcmluZygpKTtcbiAgICAgICAgICAgICAgICBsZXQgcmVzdCA9IE1hdGgucm91bmQoYmVhcmluZyAlIDkwKTtcbiAgICAgICAgICAgICAgICBpZiAoYmVhcmluZyA+IDApIHtcbiAgICAgICAgICAgICAgICAgIHJlc3QgPSA5MCAtIHJlc3Q7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmIChyZXN0ID09PSAwKSB7XG4gICAgICAgICAgICAgICAgICByZXN0ID0gOTA7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIG1hcFJlZi5jdXJyZW50Py5zZXRCZWFyaW5nKE1hdGgucm91bmQoYmVhcmluZyArIE1hdGguYWJzKHJlc3QpKSk7XG4gICAgICAgICAgICAgIH19XG4gICAgICAgICAgICA+PC9Sb3RhdGVSaWdodEljb24+XG4gICAgICAgICAgPC9Sb3RhdGVCdXR0b24+XG4gICAgICAgICAgPE5lZWRsZUJ1dHRvblxuICAgICAgICAgICAgY2xhc3NOYW1lPXtjc3MoeyAuLi5wcm9wcy5uZWVkbGVTdHlsZSB9KX1cbiAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHtcbiAgICAgICAgICAgICAgbWFwUmVmLmN1cnJlbnQ/LnNldEJlYXJpbmcoMCk7XG4gICAgICAgICAgICB9fVxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxOZWVkbGVDb250YWluZXJcbiAgICAgICAgICAgICAgc3R5bGU9e3tcbiAgICAgICAgICAgICAgICB0cmFuc2Zvcm06IFwicm90YXRlKFwiICsgYmVhcmluZyArIFwiZGVnKVwiLFxuICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8TmVlZGxlSWNvbiAvPlxuICAgICAgICAgICAgPC9OZWVkbGVDb250YWluZXI+XG4gICAgICAgICAgPC9OZWVkbGVCdXR0b24+XG4gICAgICAgICAgPFJvdGF0ZUJ1dHRvbiBjbGFzc05hbWU9e2Nzcyh7IC4uLnByb3BzLnJvdGF0ZUxlZnRTdHlsZSB9KX0+XG4gICAgICAgICAgICA8Um90YXRlTGVmdEljb25cbiAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4ge1xuICAgICAgICAgICAgICAgIGxldCBiZWFyaW5nID0gTWF0aC5yb3VuZChtYXBSZWYuY3VycmVudD8uZ2V0QmVhcmluZygpKTtcbiAgICAgICAgICAgICAgICBsZXQgcmVzdCA9IE1hdGgucm91bmQoYmVhcmluZyAlIDkwKTtcbiAgICAgICAgICAgICAgICBpZiAoYmVhcmluZyA8IDApIHtcbiAgICAgICAgICAgICAgICAgIHJlc3QgPSA5MCArIHJlc3Q7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmIChyZXN0ID09PSAwKSB7XG4gICAgICAgICAgICAgICAgICByZXN0ID0gOTA7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIG1hcFJlZi5jdXJyZW50Py5zZXRCZWFyaW5nKE1hdGgucm91bmQoYmVhcmluZyAtIE1hdGguYWJzKHJlc3QpKSk7XG4gICAgICAgICAgICAgIH19XG4gICAgICAgICAgICA+PC9Sb3RhdGVMZWZ0SWNvbj5cbiAgICAgICAgICA8L1JvdGF0ZUJ1dHRvbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8Lz5cbiAgKTtcbn07XG5cbk1sTmF2aWdhdGlvbkNvbXBhc3MucHJvcFR5cGVzID0ge1xuICAvKipcbiAgICogQ29tcG9uZW50IGlkIHByZWZpeFxuICAgKi9cbiAgaWRQcmVmaXg6IFByb3BUeXBlcy5zdHJpbmcsXG4gIC8qKlxuICAgKiBTdHlsZSBvYmplY3QgdG8gYWRqdXN0IGNzcyBkZWZpbml0aW9ucyBvZiB0aGUgY29tcG9uZW50LlxuICAgKi9cbiAgc3R5bGU6IFByb3BUeXBlcy5vYmplY3QsXG4gIC8qKlxuICAgKiBTdHlsZSBvYmplY3QgdG8gYWRqdXN0IGNzcyBkZWZpbml0aW9ucyBvZiB0aGUgYmFja2dyb3VuZC5cbiAgICovXG4gIGJhY2tncm91bmRTdHlsZTogUHJvcFR5cGVzLm9iamVjdCxcbiAgLyoqXG4gICAqIFN0eWxlIG9iamVjdCB0byBhZGp1c3QgY3NzIGRlZmluaXRpb25zIG9mIHRoZSBjb21wYXNzIG5lZWRsZS5cbiAgICovXG4gIG5lZWRsZVN0eWxlOiBQcm9wVHlwZXMub2JqZWN0LFxuICAvKipcbiAgICogU3R5bGUgb2JqZWN0IHRvIGFkanVzdCBjc3MgZGVmaW5pdGlvbnMgb2YgdGhlIHJvdGF0ZSByaWdodCBidXR0b24uXG4gICAqL1xuICByb3RhdGVSaWdodFN0eWxlOiBQcm9wVHlwZXMub2JqZWN0LFxuICAvKipcbiAgICogU3R5bGUgb2JqZWN0IHRvIGFkanVzdCBjc3MgZGVmaW5pdGlvbnMgb2YgdGhlIHJvdGF0ZSBsZWZ0IGJ1dHRvbi5cbiAgICovXG4gIHJvdGF0ZUxlZnRTdHlsZTogUHJvcFR5cGVzLm9iamVjdCxcbn07XG5cbmV4cG9ydCBkZWZhdWx0IE1sTmF2aWdhdGlvbkNvbXBhc3M7XG4iXX0= */")
|
|
1819
2213
|
}, /*#__PURE__*/React__default.createElement(RotateButton, {
|
|
1820
2214
|
className: /*#__PURE__*/css(_objectSpread2({}, props.rotateRightStyle), process.env.NODE_ENV === "production" ? "" : ";label:MlNavigationCompass;", process.env.NODE_ENV === "production" ? "" : "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIk1sTmF2aWdhdGlvbkNvbXBhc3MuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBeUptQyIsImZpbGUiOiJNbE5hdmlnYXRpb25Db21wYXNzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFJlYWN0LCB7IHVzZVN0YXRlLCB1c2VSZWYsIHVzZUVmZmVjdCwgdXNlQ29udGV4dCB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuXG5pbXBvcnQgeyBNYXBDb250ZXh0IH0gZnJvbSBcIkBtYXBjb21wb25lbnRzL3JlYWN0LWNvcmVcIjtcbmltcG9ydCB7IHY0IGFzIHV1aWR2NCB9IGZyb20gXCJ1dWlkXCI7XG5cbmltcG9ydCB7IFJlYWN0Q29tcG9uZW50IGFzIFJvdGF0ZVJpZ2h0SWNvbiB9IGZyb20gXCIuL2Fzc2V0cy9yb3RhdGVfcmlnaHQuc3ZnXCI7XG5pbXBvcnQgeyBSZWFjdENvbXBvbmVudCBhcyBSb3RhdGVMZWZ0SWNvbiB9IGZyb20gXCIuL2Fzc2V0cy9yb3RhdGVfbGVmdC5zdmdcIjtcbmltcG9ydCB7IFJlYWN0Q29tcG9uZW50IGFzIE5lZWRsZUljb24gfSBmcm9tIFwiLi9hc3NldHMvbmVlZGxlLnN2Z1wiO1xuXG5pbXBvcnQgc3R5bGVkIGZyb20gXCJAZW1vdGlvbi9zdHlsZWRcIjtcbmltcG9ydCB7IGNzcyB9IGZyb20gXCJAZW1vdGlvbi9jc3NcIjtcblxuY29uc3QgTmVlZGxlQnV0dG9uID0gc3R5bGVkLmRpdmBcbiAgd2lkdGg6IDQwJTtcbiAgZGlzcGxheTogZmxleDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcblxuICAmOmhvdmVyIHtcbiAgICBjdXJzb3I6IHBvaW50ZXI7XG4gIH1cbiAgcGF0aCB7XG4gICAgZmlsdGVyOiBkcm9wLXNoYWRvdygwcHggMHB4IDE1cHggcmdiYSgwLCAwLCAwLCAwLjIpKTtcbiAgfVxuICAmOmhvdmVyIHBhdGgge1xuICAgIGZpbHRlcjogZHJvcC1zaGFkb3coMHB4IDBweCAxM3B4IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4xKSk7XG4gIH1cbiAgcGF0aDpudGgtb2YtdHlwZSgyKSB7XG4gICAgZmlsbDogIzM0MzQzNDtcbiAgfVxuICAmOmhvdmVyIHBhdGg6bnRoLW9mLXR5cGUoMikge1xuICAgIGZpbGw6ICM0MzQzNDM7XG4gIH1cbiAgcGF0aDpudGgtb2YtdHlwZSgxKSB7XG4gICAgZmlsbDogI2U5MDMxODtcbiAgfVxuICAmOmhvdmVyIHBhdGg6bnRoLW9mLXR5cGUoMSkge1xuICAgIGZpbGw6ICNmYjQwNTI7XG4gIH1cbmA7XG5jb25zdCBOZWVkbGVDb250YWluZXIgPSBzdHlsZWQuZGl2YFxuICBwb2ludGVyLWV2ZW50czogbm9uZTtcbiAgZGlzcGxheTogZmxleDtcbiAgei1pbmRleDogMTAwMjtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuXG4gIG1hcmdpbi1sZWZ0OiAtMzAlO1xuICBwYXRoOm50aC1vZi10eXBlKDIpIHtcbiAgfVxuICBzdmcgZyB7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoLTc2LjcwNTMsIC0yOS43NzI3KSBzY2FsZSgyLCAxKTtcbiAgfVxuICBzdmcge1xuICAgIHotaW5kZXg6IDk5OTA7XG4gICAgaGVpZ2h0OiAxNTBweDtcbiAgICB3aWR0aDogMjAwcHg7XG4gIH1cbmA7XG5jb25zdCBSb3RhdGVCdXR0b24gPSBzdHlsZWQuZGl2YFxuICB3aWR0aDogMzAlO1xuICBtYXJnaW4tdG9wOiAxNHB4O1xuICB6LWluZGV4OiA5OTk7XG4gIGRpc3BsYXk6IGZsZXg7XG5cbiAgc3ZnOmhvdmVyIHtcbiAgICBjdXJzb3I6IHBvaW50ZXI7XG4gIH1cbiAgc3ZnOmhvdmVyIHBhdGgge1xuICAgIGZpbGw6ICNlY2VjZWM7XG4gICAgZmlsdGVyOiBkcm9wLXNoYWRvdygwcHggMHB4IDVweCByZ2JhKDAsIDAsIDAsIDAuMSkpO1xuICB9XG4gIHBhdGgge1xuICAgIGZpbGw6ICNiYmI7XG4gIH1cbiAgc3ZnIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlKDAuNik7XG4gICAgei1pbmRleDogOTk5MDtcbiAgICBoZWlnaHQ6IDE3MnB4O1xuICB9XG5gO1xuXG4vKipcbiAqIE5hdmlnYXRpb24gY29tcG9uZW50IHRoYXQgZGlzcGxheXMgYSBjb21wYXNzIGNvbXBvbmVudCB3aGljaCBpbmRpY2F0ZXMgdGhlIGN1cnJlbnQgb3JpYW50YXRpb24gb2YgdGhlIG1hcCBpdCBpcyByZWdpc3RlcmVkIGZvciBhbmQgb2ZmZXJzIGNvbnRyb2xzIHRvIHR1cm4gdGhlIGJlYXJpbmcgOTDCsCBsZWZ0L3JpZ2h0IG9yIHJlc2V0IG5vcnRoIHRvIHBvaW50IHVwLlxuICpcbiAqIEFsbCBzdHlsZSBwcm9wcyBhcmUgYXBwbGllZCB1c2luZyBAZW1vdGlvbi9jc3MgdG8gYWxsb3cgbW9yZSBjb21wbGV4IGNzcyBzZWxlY3RvcnMuXG4gKlxuICogQGNvbXBvbmVudFxuICovXG5jb25zdCBNbE5hdmlnYXRpb25Db21wYXNzID0gKHByb3BzKSA9PiB7XG4gIC8vIFVzZSBhIHVzZVJlZiBob29rIHRvIHJlZmVyZW5jZSB0aGUgbGF5ZXIgb2JqZWN0IHRvIGJlIGFibGUgdG8gYWNjZXNzIGl0IGxhdGVyIGluc2lkZSB1c2VFZmZlY3QgaG9va3NcbiAgY29uc3QgbWFwQ29udGV4dCA9IHVzZUNvbnRleHQoTWFwQ29udGV4dCk7XG5cbiAgY29uc3QgaW5pdGlhbGl6ZWRSZWYgPSB1c2VSZWYoZmFsc2UpO1xuICBjb25zdCBtYXBSZWYgPSB1c2VSZWYodW5kZWZpbmVkKTtcbiAgY29uc3QgY29tcG9uZW50SWQgPSB1c2VSZWYoKHByb3BzLmlkUHJlZml4ID8gcHJvcHMuaWRQcmVmaXggOiBcIk1sTmF2aWdhdGlvbkNvbXBhc3MtXCIpICsgdXVpZHY0KCkpO1xuXG4gIGNvbnN0IFtiZWFyaW5nLCBzZXRCZWFyaW5nXSA9IHVzZVN0YXRlKDApO1xuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgbGV0IF9jb21wb25lbnRJZCA9IGNvbXBvbmVudElkLmN1cnJlbnQ7XG5cbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgLy8gVGhpcyBpcyB0aGUgY2xlYW51cCBmdW5jdGlvbiwgaXQgaXMgY2FsbGVkIHdoZW4gdGhpcyByZWFjdCBjb21wb25lbnQgaXMgcmVtb3ZlZCBmcm9tIHJlYWN0LWRvbVxuXG4gICAgICBpZiAobWFwUmVmLmN1cnJlbnQpIHtcbiAgICAgICAgbWFwUmVmLmN1cnJlbnQuY2xlYW51cChfY29tcG9uZW50SWQpO1xuICAgICAgICBtYXBSZWYuY3VycmVudCA9IHVuZGVmaW5lZDtcbiAgICAgIH1cbiAgICAgIGluaXRpYWxpemVkUmVmLmN1cnJlbnQgPSBmYWxzZTtcbiAgICB9O1xuICB9LCBbXSk7XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoIW1hcENvbnRleHQubWFwRXhpc3RzKHByb3BzLm1hcElkKSB8fCBpbml0aWFsaXplZFJlZi5jdXJyZW50KSByZXR1cm47XG4gICAgaW5pdGlhbGl6ZWRSZWYuY3VycmVudCA9IHRydWU7XG4gICAgbWFwUmVmLmN1cnJlbnQgPSBtYXBDb250ZXh0LmdldE1hcChwcm9wcy5tYXBJZCk7XG5cbiAgICBtYXBSZWYuY3VycmVudC5vbihcbiAgICAgIFwicm90YXRlXCIsXG4gICAgICBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHNldEJlYXJpbmcoTWF0aC5yb3VuZChtYXBSZWYuY3VycmVudC5nZXRCZWFyaW5nKCkpKTtcbiAgICAgIH0sXG4gICAgICBjb21wb25lbnRJZC5jdXJyZW50XG4gICAgKTtcbiAgICBzZXRCZWFyaW5nKE1hdGgucm91bmQobWFwUmVmLmN1cnJlbnQuZ2V0QmVhcmluZygpKSk7XG4gIH0sIFttYXBDb250ZXh0Lm1hcElkcywgbWFwQ29udGV4dCwgcHJvcHMubWFwSWRdKTtcblxuICByZXR1cm4gKFxuICAgIDw+XG4gICAgICA8ZGl2XG4gICAgICAgIGNsYXNzTmFtZT17Y3NzKHtcbiAgICAgICAgICB6SW5kZXg6IDEwMDAsXG4gICAgICAgICAgdG9wOiAwLFxuICAgICAgICAgIHBvc2l0aW9uOiBcImFic29sdXRlXCIsXG4gICAgICAgICAgLi4ucHJvcHMuc3R5bGUsXG4gICAgICAgIH0pfVxuICAgICAgPlxuICAgICAgICA8ZGl2XG4gICAgICAgICAgY2xhc3NOYW1lPXtjc3Moe1xuICAgICAgICAgICAgcG9zaXRpb246IFwiYWJzb2x1dGVcIixcbiAgICAgICAgICAgIGJvcmRlcjogXCIxMHB4IHNvbGlkICNiY2JjYmNcIixcbiAgICAgICAgICAgIGJhY2tncm91bmRDb2xvcjogXCIjNzE3MTcxXCIsXG4gICAgICAgICAgICBiYWNrZ3JvdW5kOiBcInJhZGlhbC1ncmFkaWVudCgjNzE3MTcxLCAjNDE0MTQxKVwiLFxuICAgICAgICAgICAgaGVpZ2h0OiBcIjIwMHB4XCIsXG4gICAgICAgICAgICB3aWR0aDogXCIyMDBweFwiLFxuICAgICAgICAgICAgYm9yZGVyUmFkaXVzOiBcIjUwJVwiLFxuICAgICAgICAgICAgZGlzcGxheTogXCJmbGV4XCIsXG4gICAgICAgICAgICBqdXN0aWZ5Q29udGVudDogXCJjZW50ZXJcIixcbiAgICAgICAgICAgIHRyYW5zZm9ybTogXCJzY2FsZSgwLjIpIHRyYW5zbGF0ZVgoLTQ0OHB4KSB0cmFuc2xhdGVZKC00NDhweClcIixcbiAgICAgICAgICAgIC4uLnByb3BzLmJhY2tncm91bmRTdHlsZSxcbiAgICAgICAgICB9KX1cbiAgICAgICAgPlxuICAgICAgICAgIDxSb3RhdGVCdXR0b24gY2xhc3NOYW1lPXtjc3MoeyAuLi5wcm9wcy5yb3RhdGVSaWdodFN0eWxlIH0pfT5cbiAgICAgICAgICAgIDxSb3RhdGVSaWdodEljb25cbiAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4ge1xuICAgICAgICAgICAgICAgIGxldCBiZWFyaW5nID0gTWF0aC5yb3VuZChtYXBSZWYuY3VycmVudD8uZ2V0QmVhcmluZygpKTtcbiAgICAgICAgICAgICAgICBsZXQgcmVzdCA9IE1hdGgucm91bmQoYmVhcmluZyAlIDkwKTtcbiAgICAgICAgICAgICAgICBpZiAoYmVhcmluZyA+IDApIHtcbiAgICAgICAgICAgICAgICAgIHJlc3QgPSA5MCAtIHJlc3Q7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmIChyZXN0ID09PSAwKSB7XG4gICAgICAgICAgICAgICAgICByZXN0ID0gOTA7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIG1hcFJlZi5jdXJyZW50Py5zZXRCZWFyaW5nKE1hdGgucm91bmQoYmVhcmluZyArIE1hdGguYWJzKHJlc3QpKSk7XG4gICAgICAgICAgICAgIH19XG4gICAgICAgICAgICA+PC9Sb3RhdGVSaWdodEljb24+XG4gICAgICAgICAgPC9Sb3RhdGVCdXR0b24+XG4gICAgICAgICAgPE5lZWRsZUJ1dHRvblxuICAgICAgICAgICAgY2xhc3NOYW1lPXtjc3MoeyAuLi5wcm9wcy5uZWVkbGVTdHlsZSB9KX1cbiAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHtcbiAgICAgICAgICAgICAgbWFwUmVmLmN1cnJlbnQ/LnNldEJlYXJpbmcoMCk7XG4gICAgICAgICAgICB9fVxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxOZWVkbGVDb250YWluZXJcbiAgICAgICAgICAgICAgc3R5bGU9e3tcbiAgICAgICAgICAgICAgICB0cmFuc2Zvcm06IFwicm90YXRlKFwiICsgYmVhcmluZyArIFwiZGVnKVwiLFxuICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8TmVlZGxlSWNvbiAvPlxuICAgICAgICAgICAgPC9OZWVkbGVDb250YWluZXI+XG4gICAgICAgICAgPC9OZWVkbGVCdXR0b24+XG4gICAgICAgICAgPFJvdGF0ZUJ1dHRvbiBjbGFzc05hbWU9e2Nzcyh7IC4uLnByb3BzLnJvdGF0ZUxlZnRTdHlsZSB9KX0+XG4gICAgICAgICAgICA8Um90YXRlTGVmdEljb25cbiAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4ge1xuICAgICAgICAgICAgICAgIGxldCBiZWFyaW5nID0gTWF0aC5yb3VuZChtYXBSZWYuY3VycmVudD8uZ2V0QmVhcmluZygpKTtcbiAgICAgICAgICAgICAgICBsZXQgcmVzdCA9IE1hdGgucm91bmQoYmVhcmluZyAlIDkwKTtcbiAgICAgICAgICAgICAgICBpZiAoYmVhcmluZyA8IDApIHtcbiAgICAgICAgICAgICAgICAgIHJlc3QgPSA5MCArIHJlc3Q7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmIChyZXN0ID09PSAwKSB7XG4gICAgICAgICAgICAgICAgICByZXN0ID0gOTA7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIG1hcFJlZi5jdXJyZW50Py5zZXRCZWFyaW5nKE1hdGgucm91bmQoYmVhcmluZyAtIE1hdGguYWJzKHJlc3QpKSk7XG4gICAgICAgICAgICAgIH19XG4gICAgICAgICAgICA+PC9Sb3RhdGVMZWZ0SWNvbj5cbiAgICAgICAgICA8L1JvdGF0ZUJ1dHRvbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8Lz5cbiAgKTtcbn07XG5cbk1sTmF2aWdhdGlvbkNvbXBhc3MucHJvcFR5cGVzID0ge1xuICAvKipcbiAgICogQ29tcG9uZW50IGlkIHByZWZpeFxuICAgKi9cbiAgaWRQcmVmaXg6IFByb3BUeXBlcy5zdHJpbmcsXG4gIC8qKlxuICAgKiBTdHlsZSBvYmplY3QgdG8gYWRqdXN0IGNzcyBkZWZpbml0aW9ucyBvZiB0aGUgY29tcG9uZW50LlxuICAgKi9cbiAgc3R5bGU6IFByb3BUeXBlcy5vYmplY3QsXG4gIC8qKlxuICAgKiBTdHlsZSBvYmplY3QgdG8gYWRqdXN0IGNzcyBkZWZpbml0aW9ucyBvZiB0aGUgYmFja2dyb3VuZC5cbiAgICovXG4gIGJhY2tncm91bmRTdHlsZTogUHJvcFR5cGVzLm9iamVjdCxcbiAgLyoqXG4gICAqIFN0eWxlIG9iamVjdCB0byBhZGp1c3QgY3NzIGRlZmluaXRpb25zIG9mIHRoZSBjb21wYXNzIG5lZWRsZS5cbiAgICovXG4gIG5lZWRsZVN0eWxlOiBQcm9wVHlwZXMub2JqZWN0LFxuICAvKipcbiAgICogU3R5bGUgb2JqZWN0IHRvIGFkanVzdCBjc3MgZGVmaW5pdGlvbnMgb2YgdGhlIHJvdGF0ZSByaWdodCBidXR0b24uXG4gICAqL1xuICByb3RhdGVSaWdodFN0eWxlOiBQcm9wVHlwZXMub2JqZWN0LFxuICAvKipcbiAgICogU3R5bGUgb2JqZWN0IHRvIGFkanVzdCBjc3MgZGVmaW5pdGlvbnMgb2YgdGhlIHJvdGF0ZSBsZWZ0IGJ1dHRvbi5cbiAgICovXG4gIHJvdGF0ZUxlZnRTdHlsZTogUHJvcFR5cGVzLm9iamVjdCxcbn07XG5cbmV4cG9ydCBkZWZhdWx0IE1sTmF2aWdhdGlvbkNvbXBhc3M7XG4iXX0= */")
|
|
1821
|
-
}, /*#__PURE__*/React__default.createElement(SvgRotateRight, {
|
|
1822
|
-
onClick: function onClick() {
|
|
1823
|
-
var _mapRef$current, _mapRef$current2;
|
|
1824
|
-
|
|
1825
|
-
var bearing = Math.round((_mapRef$current = mapRef.current) === null || _mapRef$current === void 0 ? void 0 : _mapRef$current.getBearing());
|
|
1826
|
-
var rest = Math.round(bearing % 90);
|
|
1827
|
-
|
|
1828
|
-
if (bearing > 0) {
|
|
1829
|
-
rest = 90 - rest;
|
|
1830
|
-
}
|
|
1831
|
-
|
|
1832
|
-
if (rest === 0) {
|
|
1833
|
-
rest = 90;
|
|
1834
|
-
}
|
|
1835
|
-
|
|
1836
|
-
(_mapRef$current2 = mapRef.current) === null || _mapRef$current2 === void 0 ? void 0 : _mapRef$current2.setBearing(Math.round(bearing + Math.abs(rest)));
|
|
1837
|
-
}
|
|
1838
|
-
})), /*#__PURE__*/React__default.createElement(NeedleButton, {
|
|
1839
|
-
className: /*#__PURE__*/css(_objectSpread2({}, props.needleStyle), process.env.NODE_ENV === "production" ? "" : ";label:MlNavigationCompass;", process.env.NODE_ENV === "production" ? "" : "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIk1sTmF2aWdhdGlvbkNvbXBhc3MuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBeUt1QiIsImZpbGUiOiJNbE5hdmlnYXRpb25Db21wYXNzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFJlYWN0LCB7IHVzZVN0YXRlLCB1c2VSZWYsIHVzZUVmZmVjdCwgdXNlQ29udGV4dCB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuXG5pbXBvcnQgeyBNYXBDb250ZXh0IH0gZnJvbSBcIkBtYXBjb21wb25lbnRzL3JlYWN0LWNvcmVcIjtcbmltcG9ydCB7IHY0IGFzIHV1aWR2NCB9IGZyb20gXCJ1dWlkXCI7XG5cbmltcG9ydCB7IFJlYWN0Q29tcG9uZW50IGFzIFJvdGF0ZVJpZ2h0SWNvbiB9IGZyb20gXCIuL2Fzc2V0cy9yb3RhdGVfcmlnaHQuc3ZnXCI7XG5pbXBvcnQgeyBSZWFjdENvbXBvbmVudCBhcyBSb3RhdGVMZWZ0SWNvbiB9IGZyb20gXCIuL2Fzc2V0cy9yb3RhdGVfbGVmdC5zdmdcIjtcbmltcG9ydCB7IFJlYWN0Q29tcG9uZW50IGFzIE5lZWRsZUljb24gfSBmcm9tIFwiLi9hc3NldHMvbmVlZGxlLnN2Z1wiO1xuXG5pbXBvcnQgc3R5bGVkIGZyb20gXCJAZW1vdGlvbi9zdHlsZWRcIjtcbmltcG9ydCB7IGNzcyB9IGZyb20gXCJAZW1vdGlvbi9jc3NcIjtcblxuY29uc3QgTmVlZGxlQnV0dG9uID0gc3R5bGVkLmRpdmBcbiAgd2lkdGg6IDQwJTtcbiAgZGlzcGxheTogZmxleDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcblxuICAmOmhvdmVyIHtcbiAgICBjdXJzb3I6IHBvaW50ZXI7XG4gIH1cbiAgcGF0aCB7XG4gICAgZmlsdGVyOiBkcm9wLXNoYWRvdygwcHggMHB4IDE1cHggcmdiYSgwLCAwLCAwLCAwLjIpKTtcbiAgfVxuICAmOmhvdmVyIHBhdGgge1xuICAgIGZpbHRlcjogZHJvcC1zaGFkb3coMHB4IDBweCAxM3B4IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4xKSk7XG4gIH1cbiAgcGF0aDpudGgtb2YtdHlwZSgyKSB7XG4gICAgZmlsbDogIzM0MzQzNDtcbiAgfVxuICAmOmhvdmVyIHBhdGg6bnRoLW9mLXR5cGUoMikge1xuICAgIGZpbGw6ICM0MzQzNDM7XG4gIH1cbiAgcGF0aDpudGgtb2YtdHlwZSgxKSB7XG4gICAgZmlsbDogI2U5MDMxODtcbiAgfVxuICAmOmhvdmVyIHBhdGg6bnRoLW9mLXR5cGUoMSkge1xuICAgIGZpbGw6ICNmYjQwNTI7XG4gIH1cbmA7XG5jb25zdCBOZWVkbGVDb250YWluZXIgPSBzdHlsZWQuZGl2YFxuICBwb2ludGVyLWV2ZW50czogbm9uZTtcbiAgZGlzcGxheTogZmxleDtcbiAgei1pbmRleDogMTAwMjtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuXG4gIG1hcmdpbi1sZWZ0OiAtMzAlO1xuICBwYXRoOm50aC1vZi10eXBlKDIpIHtcbiAgfVxuICBzdmcgZyB7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoLTc2LjcwNTMsIC0yOS43NzI3KSBzY2FsZSgyLCAxKTtcbiAgfVxuICBzdmcge1xuICAgIHotaW5kZXg6IDk5OTA7XG4gICAgaGVpZ2h0OiAxNTBweDtcbiAgICB3aWR0aDogMjAwcHg7XG4gIH1cbmA7XG5jb25zdCBSb3RhdGVCdXR0b24gPSBzdHlsZWQuZGl2YFxuICB3aWR0aDogMzAlO1xuICBtYXJnaW4tdG9wOiAxNHB4O1xuICB6LWluZGV4OiA5OTk7XG4gIGRpc3BsYXk6IGZsZXg7XG5cbiAgc3ZnOmhvdmVyIHtcbiAgICBjdXJzb3I6IHBvaW50ZXI7XG4gIH1cbiAgc3ZnOmhvdmVyIHBhdGgge1xuICAgIGZpbGw6ICNlY2VjZWM7XG4gICAgZmlsdGVyOiBkcm9wLXNoYWRvdygwcHggMHB4IDVweCByZ2JhKDAsIDAsIDAsIDAuMSkpO1xuICB9XG4gIHBhdGgge1xuICAgIGZpbGw6ICNiYmI7XG4gIH1cbiAgc3ZnIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlKDAuNik7XG4gICAgei1pbmRleDogOTk5MDtcbiAgICBoZWlnaHQ6IDE3MnB4O1xuICB9XG5gO1xuXG4vKipcbiAqIE5hdmlnYXRpb24gY29tcG9uZW50IHRoYXQgZGlzcGxheXMgYSBjb21wYXNzIGNvbXBvbmVudCB3aGljaCBpbmRpY2F0ZXMgdGhlIGN1cnJlbnQgb3JpYW50YXRpb24gb2YgdGhlIG1hcCBpdCBpcyByZWdpc3RlcmVkIGZvciBhbmQgb2ZmZXJzIGNvbnRyb2xzIHRvIHR1cm4gdGhlIGJlYXJpbmcgOTDCsCBsZWZ0L3JpZ2h0IG9yIHJlc2V0IG5vcnRoIHRvIHBvaW50IHVwLlxuICpcbiAqIEFsbCBzdHlsZSBwcm9wcyBhcmUgYXBwbGllZCB1c2luZyBAZW1vdGlvbi9jc3MgdG8gYWxsb3cgbW9yZSBjb21wbGV4IGNzcyBzZWxlY3RvcnMuXG4gKlxuICogQGNvbXBvbmVudFxuICovXG5jb25zdCBNbE5hdmlnYXRpb25Db21wYXNzID0gKHByb3BzKSA9PiB7XG4gIC8vIFVzZSBhIHVzZVJlZiBob29rIHRvIHJlZmVyZW5jZSB0aGUgbGF5ZXIgb2JqZWN0IHRvIGJlIGFibGUgdG8gYWNjZXNzIGl0IGxhdGVyIGluc2lkZSB1c2VFZmZlY3QgaG9va3NcbiAgY29uc3QgbWFwQ29udGV4dCA9IHVzZUNvbnRleHQoTWFwQ29udGV4dCk7XG5cbiAgY29uc3QgaW5pdGlhbGl6ZWRSZWYgPSB1c2VSZWYoZmFsc2UpO1xuICBjb25zdCBtYXBSZWYgPSB1c2VSZWYodW5kZWZpbmVkKTtcbiAgY29uc3QgY29tcG9uZW50SWQgPSB1c2VSZWYoKHByb3BzLmlkUHJlZml4ID8gcHJvcHMuaWRQcmVmaXggOiBcIk1sTmF2aWdhdGlvbkNvbXBhc3MtXCIpICsgdXVpZHY0KCkpO1xuXG4gIGNvbnN0IFtiZWFyaW5nLCBzZXRCZWFyaW5nXSA9IHVzZVN0YXRlKDApO1xuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgbGV0IF9jb21wb25lbnRJZCA9IGNvbXBvbmVudElkLmN1cnJlbnQ7XG5cbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgLy8gVGhpcyBpcyB0aGUgY2xlYW51cCBmdW5jdGlvbiwgaXQgaXMgY2FsbGVkIHdoZW4gdGhpcyByZWFjdCBjb21wb25lbnQgaXMgcmVtb3ZlZCBmcm9tIHJlYWN0LWRvbVxuXG4gICAgICBpZiAobWFwUmVmLmN1cnJlbnQpIHtcbiAgICAgICAgbWFwUmVmLmN1cnJlbnQuY2xlYW51cChfY29tcG9uZW50SWQpO1xuICAgICAgICBtYXBSZWYuY3VycmVudCA9IHVuZGVmaW5lZDtcbiAgICAgIH1cbiAgICAgIGluaXRpYWxpemVkUmVmLmN1cnJlbnQgPSBmYWxzZTtcbiAgICB9O1xuICB9LCBbXSk7XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoIW1hcENvbnRleHQubWFwRXhpc3RzKHByb3BzLm1hcElkKSB8fCBpbml0aWFsaXplZFJlZi5jdXJyZW50KSByZXR1cm47XG4gICAgaW5pdGlhbGl6ZWRSZWYuY3VycmVudCA9IHRydWU7XG4gICAgbWFwUmVmLmN1cnJlbnQgPSBtYXBDb250ZXh0LmdldE1hcChwcm9wcy5tYXBJZCk7XG5cbiAgICBtYXBSZWYuY3VycmVudC5vbihcbiAgICAgIFwicm90YXRlXCIsXG4gICAgICBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHNldEJlYXJpbmcoTWF0aC5yb3VuZChtYXBSZWYuY3VycmVudC5nZXRCZWFyaW5nKCkpKTtcbiAgICAgIH0sXG4gICAgICBjb21wb25lbnRJZC5jdXJyZW50XG4gICAgKTtcbiAgICBzZXRCZWFyaW5nKE1hdGgucm91bmQobWFwUmVmLmN1cnJlbnQuZ2V0QmVhcmluZygpKSk7XG4gIH0sIFttYXBDb250ZXh0Lm1hcElkcywgbWFwQ29udGV4dCwgcHJvcHMubWFwSWRdKTtcblxuICByZXR1cm4gKFxuICAgIDw+XG4gICAgICA8ZGl2XG4gICAgICAgIGNsYXNzTmFtZT17Y3NzKHtcbiAgICAgICAgICB6SW5kZXg6IDEwMDAsXG4gICAgICAgICAgdG9wOiAwLFxuICAgICAgICAgIHBvc2l0aW9uOiBcImFic29sdXRlXCIsXG4gICAgICAgICAgLi4ucHJvcHMuc3R5bGUsXG4gICAgICAgIH0pfVxuICAgICAgPlxuICAgICAgICA8ZGl2XG4gICAgICAgICAgY2xhc3NOYW1lPXtjc3Moe1xuICAgICAgICAgICAgcG9zaXRpb246IFwiYWJzb2x1dGVcIixcbiAgICAgICAgICAgIGJvcmRlcjogXCIxMHB4IHNvbGlkICNiY2JjYmNcIixcbiAgICAgICAgICAgIGJhY2tncm91bmRDb2xvcjogXCIjNzE3MTcxXCIsXG4gICAgICAgICAgICBiYWNrZ3JvdW5kOiBcInJhZGlhbC1ncmFkaWVudCgjNzE3MTcxLCAjNDE0MTQxKVwiLFxuICAgICAgICAgICAgaGVpZ2h0OiBcIjIwMHB4XCIsXG4gICAgICAgICAgICB3aWR0aDogXCIyMDBweFwiLFxuICAgICAgICAgICAgYm9yZGVyUmFkaXVzOiBcIjUwJVwiLFxuICAgICAgICAgICAgZGlzcGxheTogXCJmbGV4XCIsXG4gICAgICAgICAgICBqdXN0aWZ5Q29udGVudDogXCJjZW50ZXJcIixcbiAgICAgICAgICAgIHRyYW5zZm9ybTogXCJzY2FsZSgwLjIpIHRyYW5zbGF0ZVgoLTQ0OHB4KSB0cmFuc2xhdGVZKC00NDhweClcIixcbiAgICAgICAgICAgIC4uLnByb3BzLmJhY2tncm91bmRTdHlsZSxcbiAgICAgICAgICB9KX1cbiAgICAgICAgPlxuICAgICAgICAgIDxSb3RhdGVCdXR0b24gY2xhc3NOYW1lPXtjc3MoeyAuLi5wcm9wcy5yb3RhdGVSaWdodFN0eWxlIH0pfT5cbiAgICAgICAgICAgIDxSb3RhdGVSaWdodEljb25cbiAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4ge1xuICAgICAgICAgICAgICAgIGxldCBiZWFyaW5nID0gTWF0aC5yb3VuZChtYXBSZWYuY3VycmVudD8uZ2V0QmVhcmluZygpKTtcbiAgICAgICAgICAgICAgICBsZXQgcmVzdCA9IE1hdGgucm91bmQoYmVhcmluZyAlIDkwKTtcbiAgICAgICAgICAgICAgICBpZiAoYmVhcmluZyA+IDApIHtcbiAgICAgICAgICAgICAgICAgIHJlc3QgPSA5MCAtIHJlc3Q7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmIChyZXN0ID09PSAwKSB7XG4gICAgICAgICAgICAgICAgICByZXN0ID0gOTA7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIG1hcFJlZi5jdXJyZW50Py5zZXRCZWFyaW5nKE1hdGgucm91bmQoYmVhcmluZyArIE1hdGguYWJzKHJlc3QpKSk7XG4gICAgICAgICAgICAgIH19XG4gICAgICAgICAgICA+PC9Sb3RhdGVSaWdodEljb24+XG4gICAgICAgICAgPC9Sb3RhdGVCdXR0b24+XG4gICAgICAgICAgPE5lZWRsZUJ1dHRvblxuICAgICAgICAgICAgY2xhc3NOYW1lPXtjc3MoeyAuLi5wcm9wcy5uZWVkbGVTdHlsZSB9KX1cbiAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHtcbiAgICAgICAgICAgICAgbWFwUmVmLmN1cnJlbnQ/LnNldEJlYXJpbmcoMCk7XG4gICAgICAgICAgICB9fVxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxOZWVkbGVDb250YWluZXJcbiAgICAgICAgICAgICAgc3R5bGU9e3tcbiAgICAgICAgICAgICAgICB0cmFuc2Zvcm06IFwicm90YXRlKFwiICsgYmVhcmluZyArIFwiZGVnKVwiLFxuICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8TmVlZGxlSWNvbiAvPlxuICAgICAgICAgICAgPC9OZWVkbGVDb250YWluZXI+XG4gICAgICAgICAgPC9OZWVkbGVCdXR0b24+XG4gICAgICAgICAgPFJvdGF0ZUJ1dHRvbiBjbGFzc05hbWU9e2Nzcyh7IC4uLnByb3BzLnJvdGF0ZUxlZnRTdHlsZSB9KX0+XG4gICAgICAgICAgICA8Um90YXRlTGVmdEljb25cbiAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4ge1xuICAgICAgICAgICAgICAgIGxldCBiZWFyaW5nID0gTWF0aC5yb3VuZChtYXBSZWYuY3VycmVudD8uZ2V0QmVhcmluZygpKTtcbiAgICAgICAgICAgICAgICBsZXQgcmVzdCA9IE1hdGgucm91bmQoYmVhcmluZyAlIDkwKTtcbiAgICAgICAgICAgICAgICBpZiAoYmVhcmluZyA8IDApIHtcbiAgICAgICAgICAgICAgICAgIHJlc3QgPSA5MCArIHJlc3Q7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmIChyZXN0ID09PSAwKSB7XG4gICAgICAgICAgICAgICAgICByZXN0ID0gOTA7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIG1hcFJlZi5jdXJyZW50Py5zZXRCZWFyaW5nKE1hdGgucm91bmQoYmVhcmluZyAtIE1hdGguYWJzKHJlc3QpKSk7XG4gICAgICAgICAgICAgIH19XG4gICAgICAgICAgICA+PC9Sb3RhdGVMZWZ0SWNvbj5cbiAgICAgICAgICA8L1JvdGF0ZUJ1dHRvbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8Lz5cbiAgKTtcbn07XG5cbk1sTmF2aWdhdGlvbkNvbXBhc3MucHJvcFR5cGVzID0ge1xuICAvKipcbiAgICogQ29tcG9uZW50IGlkIHByZWZpeFxuICAgKi9cbiAgaWRQcmVmaXg6IFByb3BUeXBlcy5zdHJpbmcsXG4gIC8qKlxuICAgKiBTdHlsZSBvYmplY3QgdG8gYWRqdXN0IGNzcyBkZWZpbml0aW9ucyBvZiB0aGUgY29tcG9uZW50LlxuICAgKi9cbiAgc3R5bGU6IFByb3BUeXBlcy5vYmplY3QsXG4gIC8qKlxuICAgKiBTdHlsZSBvYmplY3QgdG8gYWRqdXN0IGNzcyBkZWZpbml0aW9ucyBvZiB0aGUgYmFja2dyb3VuZC5cbiAgICovXG4gIGJhY2tncm91bmRTdHlsZTogUHJvcFR5cGVzLm9iamVjdCxcbiAgLyoqXG4gICAqIFN0eWxlIG9iamVjdCB0byBhZGp1c3QgY3NzIGRlZmluaXRpb25zIG9mIHRoZSBjb21wYXNzIG5lZWRsZS5cbiAgICovXG4gIG5lZWRsZVN0eWxlOiBQcm9wVHlwZXMub2JqZWN0LFxuICAvKipcbiAgICogU3R5bGUgb2JqZWN0IHRvIGFkanVzdCBjc3MgZGVmaW5pdGlvbnMgb2YgdGhlIHJvdGF0ZSByaWdodCBidXR0b24uXG4gICAqL1xuICByb3RhdGVSaWdodFN0eWxlOiBQcm9wVHlwZXMub2JqZWN0LFxuICAvKipcbiAgICogU3R5bGUgb2JqZWN0IHRvIGFkanVzdCBjc3MgZGVmaW5pdGlvbnMgb2YgdGhlIHJvdGF0ZSBsZWZ0IGJ1dHRvbi5cbiAgICovXG4gIHJvdGF0ZUxlZnRTdHlsZTogUHJvcFR5cGVzLm9iamVjdCxcbn07XG5cbmV4cG9ydCBkZWZhdWx0IE1sTmF2aWdhdGlvbkNvbXBhc3M7XG4iXX0= */"),
|
|
1840
|
-
onClick: function onClick() {
|
|
1841
|
-
var _mapRef$current3;
|
|
1842
|
-
|
|
1843
|
-
(_mapRef$current3 = mapRef.current) === null || _mapRef$current3 === void 0 ? void 0 : _mapRef$current3.setBearing(0);
|
|
1844
|
-
}
|
|
1845
|
-
}, /*#__PURE__*/React__default.createElement(NeedleContainer, {
|
|
1846
|
-
style: {
|
|
1847
|
-
transform: "rotate(" + bearing + "deg)"
|
|
1848
|
-
}
|
|
1849
|
-
}, /*#__PURE__*/React__default.createElement(SvgNeedle, null))), /*#__PURE__*/React__default.createElement(RotateButton, {
|
|
1850
|
-
className: /*#__PURE__*/css(_objectSpread2({}, props.rotateLeftStyle), process.env.NODE_ENV === "production" ? "" : ";label:MlNavigationCompass;", process.env.NODE_ENV === "production" ? "" : "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIk1sTmF2aWdhdGlvbkNvbXBhc3MuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBc0xtQyIsImZpbGUiOiJNbE5hdmlnYXRpb25Db21wYXNzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFJlYWN0LCB7IHVzZVN0YXRlLCB1c2VSZWYsIHVzZUVmZmVjdCwgdXNlQ29udGV4dCB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuXG5pbXBvcnQgeyBNYXBDb250ZXh0IH0gZnJvbSBcIkBtYXBjb21wb25lbnRzL3JlYWN0LWNvcmVcIjtcbmltcG9ydCB7IHY0IGFzIHV1aWR2NCB9IGZyb20gXCJ1dWlkXCI7XG5cbmltcG9ydCB7IFJlYWN0Q29tcG9uZW50IGFzIFJvdGF0ZVJpZ2h0SWNvbiB9IGZyb20gXCIuL2Fzc2V0cy9yb3RhdGVfcmlnaHQuc3ZnXCI7XG5pbXBvcnQgeyBSZWFjdENvbXBvbmVudCBhcyBSb3RhdGVMZWZ0SWNvbiB9IGZyb20gXCIuL2Fzc2V0cy9yb3RhdGVfbGVmdC5zdmdcIjtcbmltcG9ydCB7IFJlYWN0Q29tcG9uZW50IGFzIE5lZWRsZUljb24gfSBmcm9tIFwiLi9hc3NldHMvbmVlZGxlLnN2Z1wiO1xuXG5pbXBvcnQgc3R5bGVkIGZyb20gXCJAZW1vdGlvbi9zdHlsZWRcIjtcbmltcG9ydCB7IGNzcyB9IGZyb20gXCJAZW1vdGlvbi9jc3NcIjtcblxuY29uc3QgTmVlZGxlQnV0dG9uID0gc3R5bGVkLmRpdmBcbiAgd2lkdGg6IDQwJTtcbiAgZGlzcGxheTogZmxleDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcblxuICAmOmhvdmVyIHtcbiAgICBjdXJzb3I6IHBvaW50ZXI7XG4gIH1cbiAgcGF0aCB7XG4gICAgZmlsdGVyOiBkcm9wLXNoYWRvdygwcHggMHB4IDE1cHggcmdiYSgwLCAwLCAwLCAwLjIpKTtcbiAgfVxuICAmOmhvdmVyIHBhdGgge1xuICAgIGZpbHRlcjogZHJvcC1zaGFkb3coMHB4IDBweCAxM3B4IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4xKSk7XG4gIH1cbiAgcGF0aDpudGgtb2YtdHlwZSgyKSB7XG4gICAgZmlsbDogIzM0MzQzNDtcbiAgfVxuICAmOmhvdmVyIHBhdGg6bnRoLW9mLXR5cGUoMikge1xuICAgIGZpbGw6ICM0MzQzNDM7XG4gIH1cbiAgcGF0aDpudGgtb2YtdHlwZSgxKSB7XG4gICAgZmlsbDogI2U5MDMxODtcbiAgfVxuICAmOmhvdmVyIHBhdGg6bnRoLW9mLXR5cGUoMSkge1xuICAgIGZpbGw6ICNmYjQwNTI7XG4gIH1cbmA7XG5jb25zdCBOZWVkbGVDb250YWluZXIgPSBzdHlsZWQuZGl2YFxuICBwb2ludGVyLWV2ZW50czogbm9uZTtcbiAgZGlzcGxheTogZmxleDtcbiAgei1pbmRleDogMTAwMjtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuXG4gIG1hcmdpbi1sZWZ0OiAtMzAlO1xuICBwYXRoOm50aC1vZi10eXBlKDIpIHtcbiAgfVxuICBzdmcgZyB7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoLTc2LjcwNTMsIC0yOS43NzI3KSBzY2FsZSgyLCAxKTtcbiAgfVxuICBzdmcge1xuICAgIHotaW5kZXg6IDk5OTA7XG4gICAgaGVpZ2h0OiAxNTBweDtcbiAgICB3aWR0aDogMjAwcHg7XG4gIH1cbmA7XG5jb25zdCBSb3RhdGVCdXR0b24gPSBzdHlsZWQuZGl2YFxuICB3aWR0aDogMzAlO1xuICBtYXJnaW4tdG9wOiAxNHB4O1xuICB6LWluZGV4OiA5OTk7XG4gIGRpc3BsYXk6IGZsZXg7XG5cbiAgc3ZnOmhvdmVyIHtcbiAgICBjdXJzb3I6IHBvaW50ZXI7XG4gIH1cbiAgc3ZnOmhvdmVyIHBhdGgge1xuICAgIGZpbGw6ICNlY2VjZWM7XG4gICAgZmlsdGVyOiBkcm9wLXNoYWRvdygwcHggMHB4IDVweCByZ2JhKDAsIDAsIDAsIDAuMSkpO1xuICB9XG4gIHBhdGgge1xuICAgIGZpbGw6ICNiYmI7XG4gIH1cbiAgc3ZnIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlKDAuNik7XG4gICAgei1pbmRleDogOTk5MDtcbiAgICBoZWlnaHQ6IDE3MnB4O1xuICB9XG5gO1xuXG4vKipcbiAqIE5hdmlnYXRpb24gY29tcG9uZW50IHRoYXQgZGlzcGxheXMgYSBjb21wYXNzIGNvbXBvbmVudCB3aGljaCBpbmRpY2F0ZXMgdGhlIGN1cnJlbnQgb3JpYW50YXRpb24gb2YgdGhlIG1hcCBpdCBpcyByZWdpc3RlcmVkIGZvciBhbmQgb2ZmZXJzIGNvbnRyb2xzIHRvIHR1cm4gdGhlIGJlYXJpbmcgOTDCsCBsZWZ0L3JpZ2h0IG9yIHJlc2V0IG5vcnRoIHRvIHBvaW50IHVwLlxuICpcbiAqIEFsbCBzdHlsZSBwcm9wcyBhcmUgYXBwbGllZCB1c2luZyBAZW1vdGlvbi9jc3MgdG8gYWxsb3cgbW9yZSBjb21wbGV4IGNzcyBzZWxlY3RvcnMuXG4gKlxuICogQGNvbXBvbmVudFxuICovXG5jb25zdCBNbE5hdmlnYXRpb25Db21wYXNzID0gKHByb3BzKSA9PiB7XG4gIC8vIFVzZSBhIHVzZVJlZiBob29rIHRvIHJlZmVyZW5jZSB0aGUgbGF5ZXIgb2JqZWN0IHRvIGJlIGFibGUgdG8gYWNjZXNzIGl0IGxhdGVyIGluc2lkZSB1c2VFZmZlY3QgaG9va3NcbiAgY29uc3QgbWFwQ29udGV4dCA9IHVzZUNvbnRleHQoTWFwQ29udGV4dCk7XG5cbiAgY29uc3QgaW5pdGlhbGl6ZWRSZWYgPSB1c2VSZWYoZmFsc2UpO1xuICBjb25zdCBtYXBSZWYgPSB1c2VSZWYodW5kZWZpbmVkKTtcbiAgY29uc3QgY29tcG9uZW50SWQgPSB1c2VSZWYoKHByb3BzLmlkUHJlZml4ID8gcHJvcHMuaWRQcmVmaXggOiBcIk1sTmF2aWdhdGlvbkNvbXBhc3MtXCIpICsgdXVpZHY0KCkpO1xuXG4gIGNvbnN0IFtiZWFyaW5nLCBzZXRCZWFyaW5nXSA9IHVzZVN0YXRlKDApO1xuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgbGV0IF9jb21wb25lbnRJZCA9IGNvbXBvbmVudElkLmN1cnJlbnQ7XG5cbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgLy8gVGhpcyBpcyB0aGUgY2xlYW51cCBmdW5jdGlvbiwgaXQgaXMgY2FsbGVkIHdoZW4gdGhpcyByZWFjdCBjb21wb25lbnQgaXMgcmVtb3ZlZCBmcm9tIHJlYWN0LWRvbVxuXG4gICAgICBpZiAobWFwUmVmLmN1cnJlbnQpIHtcbiAgICAgICAgbWFwUmVmLmN1cnJlbnQuY2xlYW51cChfY29tcG9uZW50SWQpO1xuICAgICAgICBtYXBSZWYuY3VycmVudCA9IHVuZGVmaW5lZDtcbiAgICAgIH1cbiAgICAgIGluaXRpYWxpemVkUmVmLmN1cnJlbnQgPSBmYWxzZTtcbiAgICB9O1xuICB9LCBbXSk7XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoIW1hcENvbnRleHQubWFwRXhpc3RzKHByb3BzLm1hcElkKSB8fCBpbml0aWFsaXplZFJlZi5jdXJyZW50KSByZXR1cm47XG4gICAgaW5pdGlhbGl6ZWRSZWYuY3VycmVudCA9IHRydWU7XG4gICAgbWFwUmVmLmN1cnJlbnQgPSBtYXBDb250ZXh0LmdldE1hcChwcm9wcy5tYXBJZCk7XG5cbiAgICBtYXBSZWYuY3VycmVudC5vbihcbiAgICAgIFwicm90YXRlXCIsXG4gICAgICBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHNldEJlYXJpbmcoTWF0aC5yb3VuZChtYXBSZWYuY3VycmVudC5nZXRCZWFyaW5nKCkpKTtcbiAgICAgIH0sXG4gICAgICBjb21wb25lbnRJZC5jdXJyZW50XG4gICAgKTtcbiAgICBzZXRCZWFyaW5nKE1hdGgucm91bmQobWFwUmVmLmN1cnJlbnQuZ2V0QmVhcmluZygpKSk7XG4gIH0sIFttYXBDb250ZXh0Lm1hcElkcywgbWFwQ29udGV4dCwgcHJvcHMubWFwSWRdKTtcblxuICByZXR1cm4gKFxuICAgIDw+XG4gICAgICA8ZGl2XG4gICAgICAgIGNsYXNzTmFtZT17Y3NzKHtcbiAgICAgICAgICB6SW5kZXg6IDEwMDAsXG4gICAgICAgICAgdG9wOiAwLFxuICAgICAgICAgIHBvc2l0aW9uOiBcImFic29sdXRlXCIsXG4gICAgICAgICAgLi4ucHJvcHMuc3R5bGUsXG4gICAgICAgIH0pfVxuICAgICAgPlxuICAgICAgICA8ZGl2XG4gICAgICAgICAgY2xhc3NOYW1lPXtjc3Moe1xuICAgICAgICAgICAgcG9zaXRpb246IFwiYWJzb2x1dGVcIixcbiAgICAgICAgICAgIGJvcmRlcjogXCIxMHB4IHNvbGlkICNiY2JjYmNcIixcbiAgICAgICAgICAgIGJhY2tncm91bmRDb2xvcjogXCIjNzE3MTcxXCIsXG4gICAgICAgICAgICBiYWNrZ3JvdW5kOiBcInJhZGlhbC1ncmFkaWVudCgjNzE3MTcxLCAjNDE0MTQxKVwiLFxuICAgICAgICAgICAgaGVpZ2h0OiBcIjIwMHB4XCIsXG4gICAgICAgICAgICB3aWR0aDogXCIyMDBweFwiLFxuICAgICAgICAgICAgYm9yZGVyUmFkaXVzOiBcIjUwJVwiLFxuICAgICAgICAgICAgZGlzcGxheTogXCJmbGV4XCIsXG4gICAgICAgICAgICBqdXN0aWZ5Q29udGVudDogXCJjZW50ZXJcIixcbiAgICAgICAgICAgIHRyYW5zZm9ybTogXCJzY2FsZSgwLjIpIHRyYW5zbGF0ZVgoLTQ0OHB4KSB0cmFuc2xhdGVZKC00NDhweClcIixcbiAgICAgICAgICAgIC4uLnByb3BzLmJhY2tncm91bmRTdHlsZSxcbiAgICAgICAgICB9KX1cbiAgICAgICAgPlxuICAgICAgICAgIDxSb3RhdGVCdXR0b24gY2xhc3NOYW1lPXtjc3MoeyAuLi5wcm9wcy5yb3RhdGVSaWdodFN0eWxlIH0pfT5cbiAgICAgICAgICAgIDxSb3RhdGVSaWdodEljb25cbiAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4ge1xuICAgICAgICAgICAgICAgIGxldCBiZWFyaW5nID0gTWF0aC5yb3VuZChtYXBSZWYuY3VycmVudD8uZ2V0QmVhcmluZygpKTtcbiAgICAgICAgICAgICAgICBsZXQgcmVzdCA9IE1hdGgucm91bmQoYmVhcmluZyAlIDkwKTtcbiAgICAgICAgICAgICAgICBpZiAoYmVhcmluZyA+IDApIHtcbiAgICAgICAgICAgICAgICAgIHJlc3QgPSA5MCAtIHJlc3Q7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmIChyZXN0ID09PSAwKSB7XG4gICAgICAgICAgICAgICAgICByZXN0ID0gOTA7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIG1hcFJlZi5jdXJyZW50Py5zZXRCZWFyaW5nKE1hdGgucm91bmQoYmVhcmluZyArIE1hdGguYWJzKHJlc3QpKSk7XG4gICAgICAgICAgICAgIH19XG4gICAgICAgICAgICA+PC9Sb3RhdGVSaWdodEljb24+XG4gICAgICAgICAgPC9Sb3RhdGVCdXR0b24+XG4gICAgICAgICAgPE5lZWRsZUJ1dHRvblxuICAgICAgICAgICAgY2xhc3NOYW1lPXtjc3MoeyAuLi5wcm9wcy5uZWVkbGVTdHlsZSB9KX1cbiAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHtcbiAgICAgICAgICAgICAgbWFwUmVmLmN1cnJlbnQ/LnNldEJlYXJpbmcoMCk7XG4gICAgICAgICAgICB9fVxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxOZWVkbGVDb250YWluZXJcbiAgICAgICAgICAgICAgc3R5bGU9e3tcbiAgICAgICAgICAgICAgICB0cmFuc2Zvcm06IFwicm90YXRlKFwiICsgYmVhcmluZyArIFwiZGVnKVwiLFxuICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8TmVlZGxlSWNvbiAvPlxuICAgICAgICAgICAgPC9OZWVkbGVDb250YWluZXI+XG4gICAgICAgICAgPC9OZWVkbGVCdXR0b24+XG4gICAgICAgICAgPFJvdGF0ZUJ1dHRvbiBjbGFzc05hbWU9e2Nzcyh7IC4uLnByb3BzLnJvdGF0ZUxlZnRTdHlsZSB9KX0+XG4gICAgICAgICAgICA8Um90YXRlTGVmdEljb25cbiAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4ge1xuICAgICAgICAgICAgICAgIGxldCBiZWFyaW5nID0gTWF0aC5yb3VuZChtYXBSZWYuY3VycmVudD8uZ2V0QmVhcmluZygpKTtcbiAgICAgICAgICAgICAgICBsZXQgcmVzdCA9IE1hdGgucm91bmQoYmVhcmluZyAlIDkwKTtcbiAgICAgICAgICAgICAgICBpZiAoYmVhcmluZyA8IDApIHtcbiAgICAgICAgICAgICAgICAgIHJlc3QgPSA5MCArIHJlc3Q7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmIChyZXN0ID09PSAwKSB7XG4gICAgICAgICAgICAgICAgICByZXN0ID0gOTA7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIG1hcFJlZi5jdXJyZW50Py5zZXRCZWFyaW5nKE1hdGgucm91bmQoYmVhcmluZyAtIE1hdGguYWJzKHJlc3QpKSk7XG4gICAgICAgICAgICAgIH19XG4gICAgICAgICAgICA+PC9Sb3RhdGVMZWZ0SWNvbj5cbiAgICAgICAgICA8L1JvdGF0ZUJ1dHRvbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8Lz5cbiAgKTtcbn07XG5cbk1sTmF2aWdhdGlvbkNvbXBhc3MucHJvcFR5cGVzID0ge1xuICAvKipcbiAgICogQ29tcG9uZW50IGlkIHByZWZpeFxuICAgKi9cbiAgaWRQcmVmaXg6IFByb3BUeXBlcy5zdHJpbmcsXG4gIC8qKlxuICAgKiBTdHlsZSBvYmplY3QgdG8gYWRqdXN0IGNzcyBkZWZpbml0aW9ucyBvZiB0aGUgY29tcG9uZW50LlxuICAgKi9cbiAgc3R5bGU6IFByb3BUeXBlcy5vYmplY3QsXG4gIC8qKlxuICAgKiBTdHlsZSBvYmplY3QgdG8gYWRqdXN0IGNzcyBkZWZpbml0aW9ucyBvZiB0aGUgYmFja2dyb3VuZC5cbiAgICovXG4gIGJhY2tncm91bmRTdHlsZTogUHJvcFR5cGVzLm9iamVjdCxcbiAgLyoqXG4gICAqIFN0eWxlIG9iamVjdCB0byBhZGp1c3QgY3NzIGRlZmluaXRpb25zIG9mIHRoZSBjb21wYXNzIG5lZWRsZS5cbiAgICovXG4gIG5lZWRsZVN0eWxlOiBQcm9wVHlwZXMub2JqZWN0LFxuICAvKipcbiAgICogU3R5bGUgb2JqZWN0IHRvIGFkanVzdCBjc3MgZGVmaW5pdGlvbnMgb2YgdGhlIHJvdGF0ZSByaWdodCBidXR0b24uXG4gICAqL1xuICByb3RhdGVSaWdodFN0eWxlOiBQcm9wVHlwZXMub2JqZWN0LFxuICAvKipcbiAgICogU3R5bGUgb2JqZWN0IHRvIGFkanVzdCBjc3MgZGVmaW5pdGlvbnMgb2YgdGhlIHJvdGF0ZSBsZWZ0IGJ1dHRvbi5cbiAgICovXG4gIHJvdGF0ZUxlZnRTdHlsZTogUHJvcFR5cGVzLm9iamVjdCxcbn07XG5cbmV4cG9ydCBkZWZhdWx0IE1sTmF2aWdhdGlvbkNvbXBhc3M7XG4iXX0= */")
|
|
1851
|
-
}, /*#__PURE__*/React__default.createElement(SvgRotateLeft, {
|
|
1852
|
-
onClick: function onClick() {
|
|
1853
|
-
var _mapRef$current4, _mapRef$current5;
|
|
1854
|
-
|
|
1855
|
-
var bearing = Math.round((_mapRef$current4 = mapRef.current) === null || _mapRef$current4 === void 0 ? void 0 : _mapRef$current4.getBearing());
|
|
1856
|
-
var rest = Math.round(bearing % 90);
|
|
1857
|
-
|
|
1858
|
-
if (bearing < 0) {
|
|
1859
|
-
rest = 90 + rest;
|
|
1860
|
-
}
|
|
1861
|
-
|
|
1862
|
-
if (rest === 0) {
|
|
1863
|
-
rest = 90;
|
|
1864
|
-
}
|
|
1865
|
-
|
|
1866
|
-
(_mapRef$current5 = mapRef.current) === null || _mapRef$current5 === void 0 ? void 0 : _mapRef$current5.setBearing(Math.round(bearing - Math.abs(rest)));
|
|
1867
|
-
}
|
|
1868
|
-
})))));
|
|
1869
|
-
};
|
|
1870
|
-
|
|
1871
|
-
MlNavigationCompass.propTypes = {
|
|
1872
|
-
/**
|
|
1873
|
-
* Component id prefix
|
|
1874
|
-
*/
|
|
1875
|
-
idPrefix: PropTypes.string,
|
|
1876
|
-
|
|
1877
|
-
/**
|
|
1878
|
-
* Style object to adjust css definitions of the component.
|
|
1879
|
-
*/
|
|
1880
|
-
style: PropTypes.object,
|
|
1881
|
-
|
|
1882
|
-
/**
|
|
1883
|
-
* Style object to adjust css definitions of the background.
|
|
1884
|
-
*/
|
|
1885
|
-
backgroundStyle: PropTypes.object,
|
|
1886
|
-
|
|
1887
|
-
/**
|
|
1888
|
-
* Style object to adjust css definitions of the compass needle.
|
|
1889
|
-
*/
|
|
1890
|
-
needleStyle: PropTypes.object,
|
|
1891
|
-
|
|
1892
|
-
/**
|
|
1893
|
-
* Style object to adjust css definitions of the rotate right button.
|
|
1894
|
-
*/
|
|
1895
|
-
rotateRightStyle: PropTypes.object,
|
|
1896
|
-
|
|
1897
|
-
/**
|
|
1898
|
-
* Style object to adjust css definitions of the rotate left button.
|
|
1899
|
-
*/
|
|
1900
|
-
rotateLeftStyle: PropTypes.object
|
|
1901
|
-
};
|
|
1902
|
-
|
|
1903
|
-
var marker = "b556faa3bc6829d2.png";
|
|
1904
|
-
|
|
1905
|
-
/**
|
|
1906
|
-
* Adds a button that makes the map follow the users GPS position using
|
|
1907
|
-
* navigator.geolocation.watchPosition if activated
|
|
1908
|
-
*
|
|
1909
|
-
* @param {object} props
|
|
1910
|
-
* @param {string} props.mapId Id of the target MapLibre instance in mapContext
|
|
1911
|
-
*
|
|
1912
|
-
* @component
|
|
1913
|
-
*/
|
|
1914
|
-
|
|
1915
|
-
var MlFollowGps = function MlFollowGps(props) {
|
|
1916
|
-
// Use a useRef hook to reference the layer object to be able to access it later inside useEffect hooks
|
|
1917
|
-
var mapContext = useContext(MapContext);
|
|
1918
|
-
|
|
1919
|
-
var _useState = useState(false),
|
|
1920
|
-
_useState2 = _slicedToArray(_useState, 2),
|
|
1921
|
-
isFollowed = _useState2[0],
|
|
1922
|
-
setIsFollowed = _useState2[1];
|
|
1923
|
-
|
|
1924
|
-
var _useState3 = useState(undefined),
|
|
1925
|
-
_useState4 = _slicedToArray(_useState3, 2),
|
|
1926
|
-
geoJson = _useState4[0],
|
|
1927
|
-
setGeoJson = _useState4[1];
|
|
1928
|
-
|
|
1929
|
-
var watchIdRef = useRef(undefined);
|
|
1930
|
-
|
|
1931
|
-
var _useState5 = useState(false),
|
|
1932
|
-
_useState6 = _slicedToArray(_useState5, 2),
|
|
1933
|
-
locationAccessDenied = _useState6[0],
|
|
1934
|
-
setLocationAccessDenied = _useState6[1];
|
|
1935
|
-
|
|
1936
|
-
var initializedRef = useRef(false);
|
|
1937
|
-
var mapRef = useRef(undefined);
|
|
1938
|
-
var componentId = useRef((props.idPrefix ? props.idPrefix : "MlFollowGps-") + v4());
|
|
1939
|
-
|
|
1940
|
-
var _useState7 = useState(30),
|
|
1941
|
-
_useState8 = _slicedToArray(_useState7, 2),
|
|
1942
|
-
accuracyRadius = _useState8[0],
|
|
1943
|
-
setAccuracyRadius = _useState8[1];
|
|
1944
|
-
|
|
1945
|
-
useEffect(function () {
|
|
1946
|
-
var _componentId = componentId.current;
|
|
1947
|
-
return function () {
|
|
1948
|
-
// This is the cleanup function, it is called when this react component is removed from react-dom
|
|
1949
|
-
// try to remove anything this component has added to the MapLibre-gl instance
|
|
1950
|
-
// e.g.: remove the layer
|
|
1951
|
-
// mapContext.getMap(props.mapId).removeLayer(layerRef.current);
|
|
1952
|
-
// check for the existence of map.style before calling getLayer or getSource
|
|
1953
|
-
if (mapRef.current) {
|
|
1954
|
-
mapRef.current.cleanup(_componentId);
|
|
1955
|
-
mapRef.current = undefined;
|
|
1956
|
-
}
|
|
1957
|
-
|
|
1958
|
-
if (watchIdRef.current) {
|
|
1959
|
-
initializedRef.current = false;
|
|
1960
|
-
navigator.geolocation.clearWatch(watchIdRef.current);
|
|
1961
|
-
watchIdRef.current = undefined;
|
|
1962
|
-
}
|
|
1963
|
-
};
|
|
1964
|
-
}, []);
|
|
1965
|
-
useEffect(function () {
|
|
1966
|
-
if (!mapContext.mapExists(props.mapId) || initializedRef.current) return; // the MapLibre-gl instance (mapContext.getMap(props.mapId)) is accessible here
|
|
1967
|
-
// initialize the layer and add it to the MapLibre-gl instance or do something else with it
|
|
1968
|
-
|
|
1969
|
-
initializedRef.current = true;
|
|
1970
|
-
mapRef.current = mapContext.getMap(props.mapId);
|
|
1971
|
-
mapRef.current.setCenter([7.132122000552613, 50.716405378037706]);
|
|
1972
|
-
}, [mapContext.mapIds, mapContext, props.mapId]);
|
|
1973
|
-
|
|
1974
|
-
var getLocationSuccess = function getLocationSuccess(pos) {
|
|
1975
|
-
if (!mapRef.current) return;
|
|
1976
|
-
mapRef.current.setCenter([pos.coords.longitude, pos.coords.latitude]);
|
|
1977
|
-
setAccuracyRadius(pos.coords.accuracy);
|
|
1978
|
-
setGeoJson(point([pos.coords.longitude, pos.coords.latitude]));
|
|
1979
|
-
};
|
|
1980
|
-
|
|
1981
|
-
var getLocationError = function getLocationError(err) {
|
|
1982
|
-
console.log("Access of user location denied");
|
|
1983
|
-
setLocationAccessDenied(true);
|
|
1984
|
-
};
|
|
1985
|
-
|
|
1986
|
-
return /*#__PURE__*/React__default.createElement(React__default.Fragment, null, isFollowed && geoJson && /*#__PURE__*/React__default.createElement(MlGeoJsonLayer, {
|
|
1987
|
-
geojson: geoJson,
|
|
1988
|
-
type: "circle",
|
|
1989
|
-
paint: {
|
|
1990
|
-
"circle-radius": {
|
|
1991
|
-
stops: [[0, 0], [20, accuracyRadius / 0.075 / Math.cos(geoJson.geometry.coordinates[1] * Math.PI / 180)]],
|
|
1992
|
-
base: 2
|
|
1993
|
-
},
|
|
1994
|
-
"circle-color": "#ee7700",
|
|
1995
|
-
"circle-opacity": 0.5
|
|
1996
|
-
}
|
|
1997
|
-
}), isFollowed && geoJson && /*#__PURE__*/React__default.createElement(MlImageMarkerLayer, {
|
|
1998
|
-
options: {
|
|
1999
|
-
type: "symbol",
|
|
2000
|
-
source: {
|
|
2001
|
-
type: "geojson",
|
|
2002
|
-
data: geoJson
|
|
2003
|
-
},
|
|
2004
|
-
layout: {
|
|
2005
|
-
"icon-size": 0.1,
|
|
2006
|
-
"icon-offset": [0, -340]
|
|
2007
|
-
}
|
|
2008
|
-
},
|
|
2009
|
-
imgSrc: marker
|
|
2010
|
-
}), /*#__PURE__*/React__default.createElement(Button, {
|
|
2011
|
-
sx: _objectSpread2({
|
|
2012
|
-
zIndex: 1002,
|
|
2013
|
-
color: isFollowed ? "#bbb" : "#666"
|
|
2014
|
-
}, props.style),
|
|
2015
|
-
disabled: locationAccessDenied,
|
|
2215
|
+
}, /*#__PURE__*/React__default.createElement(SvgRotateRight, {
|
|
2016
2216
|
onClick: function onClick() {
|
|
2017
|
-
|
|
2018
|
-
|
|
2019
|
-
|
|
2020
|
-
|
|
2217
|
+
var _mapRef$current, _mapRef$current2;
|
|
2218
|
+
|
|
2219
|
+
var bearing = Math.round((_mapRef$current = mapRef.current) === null || _mapRef$current === void 0 ? void 0 : _mapRef$current.getBearing());
|
|
2220
|
+
var rest = Math.round(bearing % 90);
|
|
2221
|
+
|
|
2222
|
+
if (bearing > 0) {
|
|
2223
|
+
rest = 90 - rest;
|
|
2021
2224
|
}
|
|
2022
2225
|
|
|
2023
|
-
|
|
2226
|
+
if (rest === 0) {
|
|
2227
|
+
rest = 90;
|
|
2228
|
+
}
|
|
2229
|
+
|
|
2230
|
+
(_mapRef$current2 = mapRef.current) === null || _mapRef$current2 === void 0 ? void 0 : _mapRef$current2.setBearing(Math.round(bearing + Math.abs(rest)));
|
|
2024
2231
|
}
|
|
2025
|
-
},
|
|
2026
|
-
|
|
2027
|
-
|
|
2232
|
+
})), /*#__PURE__*/React__default.createElement(NeedleButton, {
|
|
2233
|
+
className: /*#__PURE__*/css(_objectSpread2({}, props.needleStyle), process.env.NODE_ENV === "production" ? "" : ";label:MlNavigationCompass;", process.env.NODE_ENV === "production" ? "" : "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIk1sTmF2aWdhdGlvbkNvbXBhc3MuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBeUt1QiIsImZpbGUiOiJNbE5hdmlnYXRpb25Db21wYXNzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFJlYWN0LCB7IHVzZVN0YXRlLCB1c2VSZWYsIHVzZUVmZmVjdCwgdXNlQ29udGV4dCB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuXG5pbXBvcnQgeyBNYXBDb250ZXh0IH0gZnJvbSBcIkBtYXBjb21wb25lbnRzL3JlYWN0LWNvcmVcIjtcbmltcG9ydCB7IHY0IGFzIHV1aWR2NCB9IGZyb20gXCJ1dWlkXCI7XG5cbmltcG9ydCB7IFJlYWN0Q29tcG9uZW50IGFzIFJvdGF0ZVJpZ2h0SWNvbiB9IGZyb20gXCIuL2Fzc2V0cy9yb3RhdGVfcmlnaHQuc3ZnXCI7XG5pbXBvcnQgeyBSZWFjdENvbXBvbmVudCBhcyBSb3RhdGVMZWZ0SWNvbiB9IGZyb20gXCIuL2Fzc2V0cy9yb3RhdGVfbGVmdC5zdmdcIjtcbmltcG9ydCB7IFJlYWN0Q29tcG9uZW50IGFzIE5lZWRsZUljb24gfSBmcm9tIFwiLi9hc3NldHMvbmVlZGxlLnN2Z1wiO1xuXG5pbXBvcnQgc3R5bGVkIGZyb20gXCJAZW1vdGlvbi9zdHlsZWRcIjtcbmltcG9ydCB7IGNzcyB9IGZyb20gXCJAZW1vdGlvbi9jc3NcIjtcblxuY29uc3QgTmVlZGxlQnV0dG9uID0gc3R5bGVkLmRpdmBcbiAgd2lkdGg6IDQwJTtcbiAgZGlzcGxheTogZmxleDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcblxuICAmOmhvdmVyIHtcbiAgICBjdXJzb3I6IHBvaW50ZXI7XG4gIH1cbiAgcGF0aCB7XG4gICAgZmlsdGVyOiBkcm9wLXNoYWRvdygwcHggMHB4IDE1cHggcmdiYSgwLCAwLCAwLCAwLjIpKTtcbiAgfVxuICAmOmhvdmVyIHBhdGgge1xuICAgIGZpbHRlcjogZHJvcC1zaGFkb3coMHB4IDBweCAxM3B4IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4xKSk7XG4gIH1cbiAgcGF0aDpudGgtb2YtdHlwZSgyKSB7XG4gICAgZmlsbDogIzM0MzQzNDtcbiAgfVxuICAmOmhvdmVyIHBhdGg6bnRoLW9mLXR5cGUoMikge1xuICAgIGZpbGw6ICM0MzQzNDM7XG4gIH1cbiAgcGF0aDpudGgtb2YtdHlwZSgxKSB7XG4gICAgZmlsbDogI2U5MDMxODtcbiAgfVxuICAmOmhvdmVyIHBhdGg6bnRoLW9mLXR5cGUoMSkge1xuICAgIGZpbGw6ICNmYjQwNTI7XG4gIH1cbmA7XG5jb25zdCBOZWVkbGVDb250YWluZXIgPSBzdHlsZWQuZGl2YFxuICBwb2ludGVyLWV2ZW50czogbm9uZTtcbiAgZGlzcGxheTogZmxleDtcbiAgei1pbmRleDogMTAwMjtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuXG4gIG1hcmdpbi1sZWZ0OiAtMzAlO1xuICBwYXRoOm50aC1vZi10eXBlKDIpIHtcbiAgfVxuICBzdmcgZyB7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoLTc2LjcwNTMsIC0yOS43NzI3KSBzY2FsZSgyLCAxKTtcbiAgfVxuICBzdmcge1xuICAgIHotaW5kZXg6IDk5OTA7XG4gICAgaGVpZ2h0OiAxNTBweDtcbiAgICB3aWR0aDogMjAwcHg7XG4gIH1cbmA7XG5jb25zdCBSb3RhdGVCdXR0b24gPSBzdHlsZWQuZGl2YFxuICB3aWR0aDogMzAlO1xuICBtYXJnaW4tdG9wOiAxNHB4O1xuICB6LWluZGV4OiA5OTk7XG4gIGRpc3BsYXk6IGZsZXg7XG5cbiAgc3ZnOmhvdmVyIHtcbiAgICBjdXJzb3I6IHBvaW50ZXI7XG4gIH1cbiAgc3ZnOmhvdmVyIHBhdGgge1xuICAgIGZpbGw6ICNlY2VjZWM7XG4gICAgZmlsdGVyOiBkcm9wLXNoYWRvdygwcHggMHB4IDVweCByZ2JhKDAsIDAsIDAsIDAuMSkpO1xuICB9XG4gIHBhdGgge1xuICAgIGZpbGw6ICNiYmI7XG4gIH1cbiAgc3ZnIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlKDAuNik7XG4gICAgei1pbmRleDogOTk5MDtcbiAgICBoZWlnaHQ6IDE3MnB4O1xuICB9XG5gO1xuXG4vKipcbiAqIE5hdmlnYXRpb24gY29tcG9uZW50IHRoYXQgZGlzcGxheXMgYSBjb21wYXNzIGNvbXBvbmVudCB3aGljaCBpbmRpY2F0ZXMgdGhlIGN1cnJlbnQgb3JpYW50YXRpb24gb2YgdGhlIG1hcCBpdCBpcyByZWdpc3RlcmVkIGZvciBhbmQgb2ZmZXJzIGNvbnRyb2xzIHRvIHR1cm4gdGhlIGJlYXJpbmcgOTDCsCBsZWZ0L3JpZ2h0IG9yIHJlc2V0IG5vcnRoIHRvIHBvaW50IHVwLlxuICpcbiAqIEFsbCBzdHlsZSBwcm9wcyBhcmUgYXBwbGllZCB1c2luZyBAZW1vdGlvbi9jc3MgdG8gYWxsb3cgbW9yZSBjb21wbGV4IGNzcyBzZWxlY3RvcnMuXG4gKlxuICogQGNvbXBvbmVudFxuICovXG5jb25zdCBNbE5hdmlnYXRpb25Db21wYXNzID0gKHByb3BzKSA9PiB7XG4gIC8vIFVzZSBhIHVzZVJlZiBob29rIHRvIHJlZmVyZW5jZSB0aGUgbGF5ZXIgb2JqZWN0IHRvIGJlIGFibGUgdG8gYWNjZXNzIGl0IGxhdGVyIGluc2lkZSB1c2VFZmZlY3QgaG9va3NcbiAgY29uc3QgbWFwQ29udGV4dCA9IHVzZUNvbnRleHQoTWFwQ29udGV4dCk7XG5cbiAgY29uc3QgaW5pdGlhbGl6ZWRSZWYgPSB1c2VSZWYoZmFsc2UpO1xuICBjb25zdCBtYXBSZWYgPSB1c2VSZWYodW5kZWZpbmVkKTtcbiAgY29uc3QgY29tcG9uZW50SWQgPSB1c2VSZWYoKHByb3BzLmlkUHJlZml4ID8gcHJvcHMuaWRQcmVmaXggOiBcIk1sTmF2aWdhdGlvbkNvbXBhc3MtXCIpICsgdXVpZHY0KCkpO1xuXG4gIGNvbnN0IFtiZWFyaW5nLCBzZXRCZWFyaW5nXSA9IHVzZVN0YXRlKDApO1xuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgbGV0IF9jb21wb25lbnRJZCA9IGNvbXBvbmVudElkLmN1cnJlbnQ7XG5cbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgLy8gVGhpcyBpcyB0aGUgY2xlYW51cCBmdW5jdGlvbiwgaXQgaXMgY2FsbGVkIHdoZW4gdGhpcyByZWFjdCBjb21wb25lbnQgaXMgcmVtb3ZlZCBmcm9tIHJlYWN0LWRvbVxuXG4gICAgICBpZiAobWFwUmVmLmN1cnJlbnQpIHtcbiAgICAgICAgbWFwUmVmLmN1cnJlbnQuY2xlYW51cChfY29tcG9uZW50SWQpO1xuICAgICAgICBtYXBSZWYuY3VycmVudCA9IHVuZGVmaW5lZDtcbiAgICAgIH1cbiAgICAgIGluaXRpYWxpemVkUmVmLmN1cnJlbnQgPSBmYWxzZTtcbiAgICB9O1xuICB9LCBbXSk7XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoIW1hcENvbnRleHQubWFwRXhpc3RzKHByb3BzLm1hcElkKSB8fCBpbml0aWFsaXplZFJlZi5jdXJyZW50KSByZXR1cm47XG4gICAgaW5pdGlhbGl6ZWRSZWYuY3VycmVudCA9IHRydWU7XG4gICAgbWFwUmVmLmN1cnJlbnQgPSBtYXBDb250ZXh0LmdldE1hcChwcm9wcy5tYXBJZCk7XG5cbiAgICBtYXBSZWYuY3VycmVudC5vbihcbiAgICAgIFwicm90YXRlXCIsXG4gICAgICBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHNldEJlYXJpbmcoTWF0aC5yb3VuZChtYXBSZWYuY3VycmVudC5nZXRCZWFyaW5nKCkpKTtcbiAgICAgIH0sXG4gICAgICBjb21wb25lbnRJZC5jdXJyZW50XG4gICAgKTtcbiAgICBzZXRCZWFyaW5nKE1hdGgucm91bmQobWFwUmVmLmN1cnJlbnQuZ2V0QmVhcmluZygpKSk7XG4gIH0sIFttYXBDb250ZXh0Lm1hcElkcywgbWFwQ29udGV4dCwgcHJvcHMubWFwSWRdKTtcblxuICByZXR1cm4gKFxuICAgIDw+XG4gICAgICA8ZGl2XG4gICAgICAgIGNsYXNzTmFtZT17Y3NzKHtcbiAgICAgICAgICB6SW5kZXg6IDEwMDAsXG4gICAgICAgICAgdG9wOiAwLFxuICAgICAgICAgIHBvc2l0aW9uOiBcImFic29sdXRlXCIsXG4gICAgICAgICAgLi4ucHJvcHMuc3R5bGUsXG4gICAgICAgIH0pfVxuICAgICAgPlxuICAgICAgICA8ZGl2XG4gICAgICAgICAgY2xhc3NOYW1lPXtjc3Moe1xuICAgICAgICAgICAgcG9zaXRpb246IFwiYWJzb2x1dGVcIixcbiAgICAgICAgICAgIGJvcmRlcjogXCIxMHB4IHNvbGlkICNiY2JjYmNcIixcbiAgICAgICAgICAgIGJhY2tncm91bmRDb2xvcjogXCIjNzE3MTcxXCIsXG4gICAgICAgICAgICBiYWNrZ3JvdW5kOiBcInJhZGlhbC1ncmFkaWVudCgjNzE3MTcxLCAjNDE0MTQxKVwiLFxuICAgICAgICAgICAgaGVpZ2h0OiBcIjIwMHB4XCIsXG4gICAgICAgICAgICB3aWR0aDogXCIyMDBweFwiLFxuICAgICAgICAgICAgYm9yZGVyUmFkaXVzOiBcIjUwJVwiLFxuICAgICAgICAgICAgZGlzcGxheTogXCJmbGV4XCIsXG4gICAgICAgICAgICBqdXN0aWZ5Q29udGVudDogXCJjZW50ZXJcIixcbiAgICAgICAgICAgIHRyYW5zZm9ybTogXCJzY2FsZSgwLjIpIHRyYW5zbGF0ZVgoLTQ0OHB4KSB0cmFuc2xhdGVZKC00NDhweClcIixcbiAgICAgICAgICAgIC4uLnByb3BzLmJhY2tncm91bmRTdHlsZSxcbiAgICAgICAgICB9KX1cbiAgICAgICAgPlxuICAgICAgICAgIDxSb3RhdGVCdXR0b24gY2xhc3NOYW1lPXtjc3MoeyAuLi5wcm9wcy5yb3RhdGVSaWdodFN0eWxlIH0pfT5cbiAgICAgICAgICAgIDxSb3RhdGVSaWdodEljb25cbiAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4ge1xuICAgICAgICAgICAgICAgIGxldCBiZWFyaW5nID0gTWF0aC5yb3VuZChtYXBSZWYuY3VycmVudD8uZ2V0QmVhcmluZygpKTtcbiAgICAgICAgICAgICAgICBsZXQgcmVzdCA9IE1hdGgucm91bmQoYmVhcmluZyAlIDkwKTtcbiAgICAgICAgICAgICAgICBpZiAoYmVhcmluZyA+IDApIHtcbiAgICAgICAgICAgICAgICAgIHJlc3QgPSA5MCAtIHJlc3Q7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmIChyZXN0ID09PSAwKSB7XG4gICAgICAgICAgICAgICAgICByZXN0ID0gOTA7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIG1hcFJlZi5jdXJyZW50Py5zZXRCZWFyaW5nKE1hdGgucm91bmQoYmVhcmluZyArIE1hdGguYWJzKHJlc3QpKSk7XG4gICAgICAgICAgICAgIH19XG4gICAgICAgICAgICA+PC9Sb3RhdGVSaWdodEljb24+XG4gICAgICAgICAgPC9Sb3RhdGVCdXR0b24+XG4gICAgICAgICAgPE5lZWRsZUJ1dHRvblxuICAgICAgICAgICAgY2xhc3NOYW1lPXtjc3MoeyAuLi5wcm9wcy5uZWVkbGVTdHlsZSB9KX1cbiAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHtcbiAgICAgICAgICAgICAgbWFwUmVmLmN1cnJlbnQ/LnNldEJlYXJpbmcoMCk7XG4gICAgICAgICAgICB9fVxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxOZWVkbGVDb250YWluZXJcbiAgICAgICAgICAgICAgc3R5bGU9e3tcbiAgICAgICAgICAgICAgICB0cmFuc2Zvcm06IFwicm90YXRlKFwiICsgYmVhcmluZyArIFwiZGVnKVwiLFxuICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8TmVlZGxlSWNvbiAvPlxuICAgICAgICAgICAgPC9OZWVkbGVDb250YWluZXI+XG4gICAgICAgICAgPC9OZWVkbGVCdXR0b24+XG4gICAgICAgICAgPFJvdGF0ZUJ1dHRvbiBjbGFzc05hbWU9e2Nzcyh7IC4uLnByb3BzLnJvdGF0ZUxlZnRTdHlsZSB9KX0+XG4gICAgICAgICAgICA8Um90YXRlTGVmdEljb25cbiAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4ge1xuICAgICAgICAgICAgICAgIGxldCBiZWFyaW5nID0gTWF0aC5yb3VuZChtYXBSZWYuY3VycmVudD8uZ2V0QmVhcmluZygpKTtcbiAgICAgICAgICAgICAgICBsZXQgcmVzdCA9IE1hdGgucm91bmQoYmVhcmluZyAlIDkwKTtcbiAgICAgICAgICAgICAgICBpZiAoYmVhcmluZyA8IDApIHtcbiAgICAgICAgICAgICAgICAgIHJlc3QgPSA5MCArIHJlc3Q7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmIChyZXN0ID09PSAwKSB7XG4gICAgICAgICAgICAgICAgICByZXN0ID0gOTA7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIG1hcFJlZi5jdXJyZW50Py5zZXRCZWFyaW5nKE1hdGgucm91bmQoYmVhcmluZyAtIE1hdGguYWJzKHJlc3QpKSk7XG4gICAgICAgICAgICAgIH19XG4gICAgICAgICAgICA+PC9Sb3RhdGVMZWZ0SWNvbj5cbiAgICAgICAgICA8L1JvdGF0ZUJ1dHRvbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8Lz5cbiAgKTtcbn07XG5cbk1sTmF2aWdhdGlvbkNvbXBhc3MucHJvcFR5cGVzID0ge1xuICAvKipcbiAgICogQ29tcG9uZW50IGlkIHByZWZpeFxuICAgKi9cbiAgaWRQcmVmaXg6IFByb3BUeXBlcy5zdHJpbmcsXG4gIC8qKlxuICAgKiBTdHlsZSBvYmplY3QgdG8gYWRqdXN0IGNzcyBkZWZpbml0aW9ucyBvZiB0aGUgY29tcG9uZW50LlxuICAgKi9cbiAgc3R5bGU6IFByb3BUeXBlcy5vYmplY3QsXG4gIC8qKlxuICAgKiBTdHlsZSBvYmplY3QgdG8gYWRqdXN0IGNzcyBkZWZpbml0aW9ucyBvZiB0aGUgYmFja2dyb3VuZC5cbiAgICovXG4gIGJhY2tncm91bmRTdHlsZTogUHJvcFR5cGVzLm9iamVjdCxcbiAgLyoqXG4gICAqIFN0eWxlIG9iamVjdCB0byBhZGp1c3QgY3NzIGRlZmluaXRpb25zIG9mIHRoZSBjb21wYXNzIG5lZWRsZS5cbiAgICovXG4gIG5lZWRsZVN0eWxlOiBQcm9wVHlwZXMub2JqZWN0LFxuICAvKipcbiAgICogU3R5bGUgb2JqZWN0IHRvIGFkanVzdCBjc3MgZGVmaW5pdGlvbnMgb2YgdGhlIHJvdGF0ZSByaWdodCBidXR0b24uXG4gICAqL1xuICByb3RhdGVSaWdodFN0eWxlOiBQcm9wVHlwZXMub2JqZWN0LFxuICAvKipcbiAgICogU3R5bGUgb2JqZWN0IHRvIGFkanVzdCBjc3MgZGVmaW5pdGlvbnMgb2YgdGhlIHJvdGF0ZSBsZWZ0IGJ1dHRvbi5cbiAgICovXG4gIHJvdGF0ZUxlZnRTdHlsZTogUHJvcFR5cGVzLm9iamVjdCxcbn07XG5cbmV4cG9ydCBkZWZhdWx0IE1sTmF2aWdhdGlvbkNvbXBhc3M7XG4iXX0= */"),
|
|
2234
|
+
onClick: function onClick() {
|
|
2235
|
+
var _mapRef$current3;
|
|
2236
|
+
|
|
2237
|
+
(_mapRef$current3 = mapRef.current) === null || _mapRef$current3 === void 0 ? void 0 : _mapRef$current3.setBearing(0);
|
|
2028
2238
|
}
|
|
2029
|
-
}
|
|
2030
|
-
|
|
2239
|
+
}, /*#__PURE__*/React__default.createElement(NeedleContainer, {
|
|
2240
|
+
style: {
|
|
2241
|
+
transform: "rotate(" + bearing + "deg)"
|
|
2242
|
+
}
|
|
2243
|
+
}, /*#__PURE__*/React__default.createElement(SvgNeedle, null))), /*#__PURE__*/React__default.createElement(RotateButton, {
|
|
2244
|
+
className: /*#__PURE__*/css(_objectSpread2({}, props.rotateLeftStyle), process.env.NODE_ENV === "production" ? "" : ";label:MlNavigationCompass;", process.env.NODE_ENV === "production" ? "" : "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIk1sTmF2aWdhdGlvbkNvbXBhc3MuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBc0xtQyIsImZpbGUiOiJNbE5hdmlnYXRpb25Db21wYXNzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFJlYWN0LCB7IHVzZVN0YXRlLCB1c2VSZWYsIHVzZUVmZmVjdCwgdXNlQ29udGV4dCB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuXG5pbXBvcnQgeyBNYXBDb250ZXh0IH0gZnJvbSBcIkBtYXBjb21wb25lbnRzL3JlYWN0LWNvcmVcIjtcbmltcG9ydCB7IHY0IGFzIHV1aWR2NCB9IGZyb20gXCJ1dWlkXCI7XG5cbmltcG9ydCB7IFJlYWN0Q29tcG9uZW50IGFzIFJvdGF0ZVJpZ2h0SWNvbiB9IGZyb20gXCIuL2Fzc2V0cy9yb3RhdGVfcmlnaHQuc3ZnXCI7XG5pbXBvcnQgeyBSZWFjdENvbXBvbmVudCBhcyBSb3RhdGVMZWZ0SWNvbiB9IGZyb20gXCIuL2Fzc2V0cy9yb3RhdGVfbGVmdC5zdmdcIjtcbmltcG9ydCB7IFJlYWN0Q29tcG9uZW50IGFzIE5lZWRsZUljb24gfSBmcm9tIFwiLi9hc3NldHMvbmVlZGxlLnN2Z1wiO1xuXG5pbXBvcnQgc3R5bGVkIGZyb20gXCJAZW1vdGlvbi9zdHlsZWRcIjtcbmltcG9ydCB7IGNzcyB9IGZyb20gXCJAZW1vdGlvbi9jc3NcIjtcblxuY29uc3QgTmVlZGxlQnV0dG9uID0gc3R5bGVkLmRpdmBcbiAgd2lkdGg6IDQwJTtcbiAgZGlzcGxheTogZmxleDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcblxuICAmOmhvdmVyIHtcbiAgICBjdXJzb3I6IHBvaW50ZXI7XG4gIH1cbiAgcGF0aCB7XG4gICAgZmlsdGVyOiBkcm9wLXNoYWRvdygwcHggMHB4IDE1cHggcmdiYSgwLCAwLCAwLCAwLjIpKTtcbiAgfVxuICAmOmhvdmVyIHBhdGgge1xuICAgIGZpbHRlcjogZHJvcC1zaGFkb3coMHB4IDBweCAxM3B4IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4xKSk7XG4gIH1cbiAgcGF0aDpudGgtb2YtdHlwZSgyKSB7XG4gICAgZmlsbDogIzM0MzQzNDtcbiAgfVxuICAmOmhvdmVyIHBhdGg6bnRoLW9mLXR5cGUoMikge1xuICAgIGZpbGw6ICM0MzQzNDM7XG4gIH1cbiAgcGF0aDpudGgtb2YtdHlwZSgxKSB7XG4gICAgZmlsbDogI2U5MDMxODtcbiAgfVxuICAmOmhvdmVyIHBhdGg6bnRoLW9mLXR5cGUoMSkge1xuICAgIGZpbGw6ICNmYjQwNTI7XG4gIH1cbmA7XG5jb25zdCBOZWVkbGVDb250YWluZXIgPSBzdHlsZWQuZGl2YFxuICBwb2ludGVyLWV2ZW50czogbm9uZTtcbiAgZGlzcGxheTogZmxleDtcbiAgei1pbmRleDogMTAwMjtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuXG4gIG1hcmdpbi1sZWZ0OiAtMzAlO1xuICBwYXRoOm50aC1vZi10eXBlKDIpIHtcbiAgfVxuICBzdmcgZyB7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoLTc2LjcwNTMsIC0yOS43NzI3KSBzY2FsZSgyLCAxKTtcbiAgfVxuICBzdmcge1xuICAgIHotaW5kZXg6IDk5OTA7XG4gICAgaGVpZ2h0OiAxNTBweDtcbiAgICB3aWR0aDogMjAwcHg7XG4gIH1cbmA7XG5jb25zdCBSb3RhdGVCdXR0b24gPSBzdHlsZWQuZGl2YFxuICB3aWR0aDogMzAlO1xuICBtYXJnaW4tdG9wOiAxNHB4O1xuICB6LWluZGV4OiA5OTk7XG4gIGRpc3BsYXk6IGZsZXg7XG5cbiAgc3ZnOmhvdmVyIHtcbiAgICBjdXJzb3I6IHBvaW50ZXI7XG4gIH1cbiAgc3ZnOmhvdmVyIHBhdGgge1xuICAgIGZpbGw6ICNlY2VjZWM7XG4gICAgZmlsdGVyOiBkcm9wLXNoYWRvdygwcHggMHB4IDVweCByZ2JhKDAsIDAsIDAsIDAuMSkpO1xuICB9XG4gIHBhdGgge1xuICAgIGZpbGw6ICNiYmI7XG4gIH1cbiAgc3ZnIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlKDAuNik7XG4gICAgei1pbmRleDogOTk5MDtcbiAgICBoZWlnaHQ6IDE3MnB4O1xuICB9XG5gO1xuXG4vKipcbiAqIE5hdmlnYXRpb24gY29tcG9uZW50IHRoYXQgZGlzcGxheXMgYSBjb21wYXNzIGNvbXBvbmVudCB3aGljaCBpbmRpY2F0ZXMgdGhlIGN1cnJlbnQgb3JpYW50YXRpb24gb2YgdGhlIG1hcCBpdCBpcyByZWdpc3RlcmVkIGZvciBhbmQgb2ZmZXJzIGNvbnRyb2xzIHRvIHR1cm4gdGhlIGJlYXJpbmcgOTDCsCBsZWZ0L3JpZ2h0IG9yIHJlc2V0IG5vcnRoIHRvIHBvaW50IHVwLlxuICpcbiAqIEFsbCBzdHlsZSBwcm9wcyBhcmUgYXBwbGllZCB1c2luZyBAZW1vdGlvbi9jc3MgdG8gYWxsb3cgbW9yZSBjb21wbGV4IGNzcyBzZWxlY3RvcnMuXG4gKlxuICogQGNvbXBvbmVudFxuICovXG5jb25zdCBNbE5hdmlnYXRpb25Db21wYXNzID0gKHByb3BzKSA9PiB7XG4gIC8vIFVzZSBhIHVzZVJlZiBob29rIHRvIHJlZmVyZW5jZSB0aGUgbGF5ZXIgb2JqZWN0IHRvIGJlIGFibGUgdG8gYWNjZXNzIGl0IGxhdGVyIGluc2lkZSB1c2VFZmZlY3QgaG9va3NcbiAgY29uc3QgbWFwQ29udGV4dCA9IHVzZUNvbnRleHQoTWFwQ29udGV4dCk7XG5cbiAgY29uc3QgaW5pdGlhbGl6ZWRSZWYgPSB1c2VSZWYoZmFsc2UpO1xuICBjb25zdCBtYXBSZWYgPSB1c2VSZWYodW5kZWZpbmVkKTtcbiAgY29uc3QgY29tcG9uZW50SWQgPSB1c2VSZWYoKHByb3BzLmlkUHJlZml4ID8gcHJvcHMuaWRQcmVmaXggOiBcIk1sTmF2aWdhdGlvbkNvbXBhc3MtXCIpICsgdXVpZHY0KCkpO1xuXG4gIGNvbnN0IFtiZWFyaW5nLCBzZXRCZWFyaW5nXSA9IHVzZVN0YXRlKDApO1xuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgbGV0IF9jb21wb25lbnRJZCA9IGNvbXBvbmVudElkLmN1cnJlbnQ7XG5cbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgLy8gVGhpcyBpcyB0aGUgY2xlYW51cCBmdW5jdGlvbiwgaXQgaXMgY2FsbGVkIHdoZW4gdGhpcyByZWFjdCBjb21wb25lbnQgaXMgcmVtb3ZlZCBmcm9tIHJlYWN0LWRvbVxuXG4gICAgICBpZiAobWFwUmVmLmN1cnJlbnQpIHtcbiAgICAgICAgbWFwUmVmLmN1cnJlbnQuY2xlYW51cChfY29tcG9uZW50SWQpO1xuICAgICAgICBtYXBSZWYuY3VycmVudCA9IHVuZGVmaW5lZDtcbiAgICAgIH1cbiAgICAgIGluaXRpYWxpemVkUmVmLmN1cnJlbnQgPSBmYWxzZTtcbiAgICB9O1xuICB9LCBbXSk7XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoIW1hcENvbnRleHQubWFwRXhpc3RzKHByb3BzLm1hcElkKSB8fCBpbml0aWFsaXplZFJlZi5jdXJyZW50KSByZXR1cm47XG4gICAgaW5pdGlhbGl6ZWRSZWYuY3VycmVudCA9IHRydWU7XG4gICAgbWFwUmVmLmN1cnJlbnQgPSBtYXBDb250ZXh0LmdldE1hcChwcm9wcy5tYXBJZCk7XG5cbiAgICBtYXBSZWYuY3VycmVudC5vbihcbiAgICAgIFwicm90YXRlXCIsXG4gICAgICBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHNldEJlYXJpbmcoTWF0aC5yb3VuZChtYXBSZWYuY3VycmVudC5nZXRCZWFyaW5nKCkpKTtcbiAgICAgIH0sXG4gICAgICBjb21wb25lbnRJZC5jdXJyZW50XG4gICAgKTtcbiAgICBzZXRCZWFyaW5nKE1hdGgucm91bmQobWFwUmVmLmN1cnJlbnQuZ2V0QmVhcmluZygpKSk7XG4gIH0sIFttYXBDb250ZXh0Lm1hcElkcywgbWFwQ29udGV4dCwgcHJvcHMubWFwSWRdKTtcblxuICByZXR1cm4gKFxuICAgIDw+XG4gICAgICA8ZGl2XG4gICAgICAgIGNsYXNzTmFtZT17Y3NzKHtcbiAgICAgICAgICB6SW5kZXg6IDEwMDAsXG4gICAgICAgICAgdG9wOiAwLFxuICAgICAgICAgIHBvc2l0aW9uOiBcImFic29sdXRlXCIsXG4gICAgICAgICAgLi4ucHJvcHMuc3R5bGUsXG4gICAgICAgIH0pfVxuICAgICAgPlxuICAgICAgICA8ZGl2XG4gICAgICAgICAgY2xhc3NOYW1lPXtjc3Moe1xuICAgICAgICAgICAgcG9zaXRpb246IFwiYWJzb2x1dGVcIixcbiAgICAgICAgICAgIGJvcmRlcjogXCIxMHB4IHNvbGlkICNiY2JjYmNcIixcbiAgICAgICAgICAgIGJhY2tncm91bmRDb2xvcjogXCIjNzE3MTcxXCIsXG4gICAgICAgICAgICBiYWNrZ3JvdW5kOiBcInJhZGlhbC1ncmFkaWVudCgjNzE3MTcxLCAjNDE0MTQxKVwiLFxuICAgICAgICAgICAgaGVpZ2h0OiBcIjIwMHB4XCIsXG4gICAgICAgICAgICB3aWR0aDogXCIyMDBweFwiLFxuICAgICAgICAgICAgYm9yZGVyUmFkaXVzOiBcIjUwJVwiLFxuICAgICAgICAgICAgZGlzcGxheTogXCJmbGV4XCIsXG4gICAgICAgICAgICBqdXN0aWZ5Q29udGVudDogXCJjZW50ZXJcIixcbiAgICAgICAgICAgIHRyYW5zZm9ybTogXCJzY2FsZSgwLjIpIHRyYW5zbGF0ZVgoLTQ0OHB4KSB0cmFuc2xhdGVZKC00NDhweClcIixcbiAgICAgICAgICAgIC4uLnByb3BzLmJhY2tncm91bmRTdHlsZSxcbiAgICAgICAgICB9KX1cbiAgICAgICAgPlxuICAgICAgICAgIDxSb3RhdGVCdXR0b24gY2xhc3NOYW1lPXtjc3MoeyAuLi5wcm9wcy5yb3RhdGVSaWdodFN0eWxlIH0pfT5cbiAgICAgICAgICAgIDxSb3RhdGVSaWdodEljb25cbiAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4ge1xuICAgICAgICAgICAgICAgIGxldCBiZWFyaW5nID0gTWF0aC5yb3VuZChtYXBSZWYuY3VycmVudD8uZ2V0QmVhcmluZygpKTtcbiAgICAgICAgICAgICAgICBsZXQgcmVzdCA9IE1hdGgucm91bmQoYmVhcmluZyAlIDkwKTtcbiAgICAgICAgICAgICAgICBpZiAoYmVhcmluZyA+IDApIHtcbiAgICAgICAgICAgICAgICAgIHJlc3QgPSA5MCAtIHJlc3Q7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmIChyZXN0ID09PSAwKSB7XG4gICAgICAgICAgICAgICAgICByZXN0ID0gOTA7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIG1hcFJlZi5jdXJyZW50Py5zZXRCZWFyaW5nKE1hdGgucm91bmQoYmVhcmluZyArIE1hdGguYWJzKHJlc3QpKSk7XG4gICAgICAgICAgICAgIH19XG4gICAgICAgICAgICA+PC9Sb3RhdGVSaWdodEljb24+XG4gICAgICAgICAgPC9Sb3RhdGVCdXR0b24+XG4gICAgICAgICAgPE5lZWRsZUJ1dHRvblxuICAgICAgICAgICAgY2xhc3NOYW1lPXtjc3MoeyAuLi5wcm9wcy5uZWVkbGVTdHlsZSB9KX1cbiAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHtcbiAgICAgICAgICAgICAgbWFwUmVmLmN1cnJlbnQ/LnNldEJlYXJpbmcoMCk7XG4gICAgICAgICAgICB9fVxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxOZWVkbGVDb250YWluZXJcbiAgICAgICAgICAgICAgc3R5bGU9e3tcbiAgICAgICAgICAgICAgICB0cmFuc2Zvcm06IFwicm90YXRlKFwiICsgYmVhcmluZyArIFwiZGVnKVwiLFxuICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8TmVlZGxlSWNvbiAvPlxuICAgICAgICAgICAgPC9OZWVkbGVDb250YWluZXI+XG4gICAgICAgICAgPC9OZWVkbGVCdXR0b24+XG4gICAgICAgICAgPFJvdGF0ZUJ1dHRvbiBjbGFzc05hbWU9e2Nzcyh7IC4uLnByb3BzLnJvdGF0ZUxlZnRTdHlsZSB9KX0+XG4gICAgICAgICAgICA8Um90YXRlTGVmdEljb25cbiAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4ge1xuICAgICAgICAgICAgICAgIGxldCBiZWFyaW5nID0gTWF0aC5yb3VuZChtYXBSZWYuY3VycmVudD8uZ2V0QmVhcmluZygpKTtcbiAgICAgICAgICAgICAgICBsZXQgcmVzdCA9IE1hdGgucm91bmQoYmVhcmluZyAlIDkwKTtcbiAgICAgICAgICAgICAgICBpZiAoYmVhcmluZyA8IDApIHtcbiAgICAgICAgICAgICAgICAgIHJlc3QgPSA5MCArIHJlc3Q7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmIChyZXN0ID09PSAwKSB7XG4gICAgICAgICAgICAgICAgICByZXN0ID0gOTA7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIG1hcFJlZi5jdXJyZW50Py5zZXRCZWFyaW5nKE1hdGgucm91bmQoYmVhcmluZyAtIE1hdGguYWJzKHJlc3QpKSk7XG4gICAgICAgICAgICAgIH19XG4gICAgICAgICAgICA+PC9Sb3RhdGVMZWZ0SWNvbj5cbiAgICAgICAgICA8L1JvdGF0ZUJ1dHRvbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8Lz5cbiAgKTtcbn07XG5cbk1sTmF2aWdhdGlvbkNvbXBhc3MucHJvcFR5cGVzID0ge1xuICAvKipcbiAgICogQ29tcG9uZW50IGlkIHByZWZpeFxuICAgKi9cbiAgaWRQcmVmaXg6IFByb3BUeXBlcy5zdHJpbmcsXG4gIC8qKlxuICAgKiBTdHlsZSBvYmplY3QgdG8gYWRqdXN0IGNzcyBkZWZpbml0aW9ucyBvZiB0aGUgY29tcG9uZW50LlxuICAgKi9cbiAgc3R5bGU6IFByb3BUeXBlcy5vYmplY3QsXG4gIC8qKlxuICAgKiBTdHlsZSBvYmplY3QgdG8gYWRqdXN0IGNzcyBkZWZpbml0aW9ucyBvZiB0aGUgYmFja2dyb3VuZC5cbiAgICovXG4gIGJhY2tncm91bmRTdHlsZTogUHJvcFR5cGVzLm9iamVjdCxcbiAgLyoqXG4gICAqIFN0eWxlIG9iamVjdCB0byBhZGp1c3QgY3NzIGRlZmluaXRpb25zIG9mIHRoZSBjb21wYXNzIG5lZWRsZS5cbiAgICovXG4gIG5lZWRsZVN0eWxlOiBQcm9wVHlwZXMub2JqZWN0LFxuICAvKipcbiAgICogU3R5bGUgb2JqZWN0IHRvIGFkanVzdCBjc3MgZGVmaW5pdGlvbnMgb2YgdGhlIHJvdGF0ZSByaWdodCBidXR0b24uXG4gICAqL1xuICByb3RhdGVSaWdodFN0eWxlOiBQcm9wVHlwZXMub2JqZWN0LFxuICAvKipcbiAgICogU3R5bGUgb2JqZWN0IHRvIGFkanVzdCBjc3MgZGVmaW5pdGlvbnMgb2YgdGhlIHJvdGF0ZSBsZWZ0IGJ1dHRvbi5cbiAgICovXG4gIHJvdGF0ZUxlZnRTdHlsZTogUHJvcFR5cGVzLm9iamVjdCxcbn07XG5cbmV4cG9ydCBkZWZhdWx0IE1sTmF2aWdhdGlvbkNvbXBhc3M7XG4iXX0= */")
|
|
2245
|
+
}, /*#__PURE__*/React__default.createElement(SvgRotateLeft, {
|
|
2246
|
+
onClick: function onClick() {
|
|
2247
|
+
var _mapRef$current4, _mapRef$current5;
|
|
2031
2248
|
|
|
2032
|
-
|
|
2033
|
-
|
|
2034
|
-
|
|
2035
|
-
|
|
2036
|
-
|
|
2037
|
-
|
|
2038
|
-
|
|
2039
|
-
|
|
2040
|
-
|
|
2041
|
-
|
|
2042
|
-
|
|
2043
|
-
|
|
2044
|
-
backgroundColor: "#515151",
|
|
2045
|
-
color: "#ececec"
|
|
2249
|
+
var bearing = Math.round((_mapRef$current4 = mapRef.current) === null || _mapRef$current4 === void 0 ? void 0 : _mapRef$current4.getBearing());
|
|
2250
|
+
var rest = Math.round(bearing % 90);
|
|
2251
|
+
|
|
2252
|
+
if (bearing < 0) {
|
|
2253
|
+
rest = 90 + rest;
|
|
2254
|
+
}
|
|
2255
|
+
|
|
2256
|
+
if (rest === 0) {
|
|
2257
|
+
rest = 90;
|
|
2258
|
+
}
|
|
2259
|
+
|
|
2260
|
+
(_mapRef$current5 = mapRef.current) === null || _mapRef$current5 === void 0 ? void 0 : _mapRef$current5.setBearing(Math.round(bearing - Math.abs(rest)));
|
|
2046
2261
|
}
|
|
2047
|
-
}
|
|
2262
|
+
})))));
|
|
2048
2263
|
};
|
|
2049
|
-
|
|
2264
|
+
|
|
2265
|
+
MlNavigationCompass.propTypes = {
|
|
2050
2266
|
/**
|
|
2051
|
-
*
|
|
2267
|
+
* Component id prefix
|
|
2052
2268
|
*/
|
|
2053
|
-
|
|
2269
|
+
idPrefix: PropTypes.string,
|
|
2054
2270
|
|
|
2055
2271
|
/**
|
|
2056
|
-
*
|
|
2272
|
+
* Style object to adjust css definitions of the component.
|
|
2273
|
+
*/
|
|
2274
|
+
style: PropTypes.object,
|
|
2275
|
+
|
|
2276
|
+
/**
|
|
2277
|
+
* Style object to adjust css definitions of the background.
|
|
2278
|
+
*/
|
|
2279
|
+
backgroundStyle: PropTypes.object,
|
|
2280
|
+
|
|
2281
|
+
/**
|
|
2282
|
+
* Style object to adjust css definitions of the compass needle.
|
|
2283
|
+
*/
|
|
2284
|
+
needleStyle: PropTypes.object,
|
|
2285
|
+
|
|
2286
|
+
/**
|
|
2287
|
+
* Style object to adjust css definitions of the rotate right button.
|
|
2057
2288
|
*/
|
|
2058
|
-
|
|
2289
|
+
rotateRightStyle: PropTypes.object,
|
|
2290
|
+
|
|
2291
|
+
/**
|
|
2292
|
+
* Style object to adjust css definitions of the rotate left button.
|
|
2293
|
+
*/
|
|
2294
|
+
rotateLeftStyle: PropTypes.object
|
|
2059
2295
|
};
|
|
2060
2296
|
|
|
2297
|
+
var _excluded$1 = ["color"];
|
|
2298
|
+
|
|
2061
2299
|
var MlNavigationTools = function MlNavigationTools(props) {
|
|
2062
2300
|
var mapContext = useContext(MapContext);
|
|
2063
2301
|
var initializedRef = useRef(false);
|
|
@@ -2080,7 +2318,6 @@ var MlNavigationTools = function MlNavigationTools(props) {
|
|
|
2080
2318
|
minHeight: "20px",
|
|
2081
2319
|
width: mediaIsMobile ? "50px" : "30px",
|
|
2082
2320
|
height: mediaIsMobile ? "50px" : "30px",
|
|
2083
|
-
color: "#bbb",
|
|
2084
2321
|
backgroundColor: "#414141",
|
|
2085
2322
|
borderRadius: "23%",
|
|
2086
2323
|
//border: "1px solid #bbb",
|
|
@@ -2088,9 +2325,9 @@ var MlNavigationTools = function MlNavigationTools(props) {
|
|
|
2088
2325
|
margin: 0.15,
|
|
2089
2326
|
fontSize: mediaIsMobile ? "1.5em" : "1.2em",
|
|
2090
2327
|
":hover": {
|
|
2091
|
-
backgroundColor: "#515151"
|
|
2092
|
-
|
|
2093
|
-
|
|
2328
|
+
backgroundColor: "#515151"
|
|
2329
|
+
},
|
|
2330
|
+
color: "#ececec"
|
|
2094
2331
|
};
|
|
2095
2332
|
useEffect(function () {
|
|
2096
2333
|
var _componentId = componentId.current;
|
|
@@ -2200,7 +2437,12 @@ var MlNavigationTools = function MlNavigationTools(props) {
|
|
|
2200
2437
|
fontSize: mediaIsMobile ? "1.5em" : "1.2em"
|
|
2201
2438
|
}
|
|
2202
2439
|
})), /*#__PURE__*/React__default.createElement(MlFollowGps, {
|
|
2203
|
-
style:
|
|
2440
|
+
style: _objectSpread2({}, function (_ref) {
|
|
2441
|
+
var color = _ref.color,
|
|
2442
|
+
rest = _objectWithoutProperties(_ref, _excluded$1);
|
|
2443
|
+
|
|
2444
|
+
return rest;
|
|
2445
|
+
}(buttonStyle))
|
|
2204
2446
|
}), /*#__PURE__*/React__default.createElement(ButtonGroup, {
|
|
2205
2447
|
orientation: "vertical",
|
|
2206
2448
|
sx: {
|
|
@@ -2216,14 +2458,18 @@ var MlNavigationTools = function MlNavigationTools(props) {
|
|
|
2216
2458
|
}
|
|
2217
2459
|
}
|
|
2218
2460
|
}, /*#__PURE__*/React__default.createElement(Button, {
|
|
2219
|
-
sx: buttonStyle,
|
|
2461
|
+
sx: _objectSpread2(_objectSpread2({}, buttonStyle), {}, {
|
|
2462
|
+
color: "#ececec"
|
|
2463
|
+
}),
|
|
2220
2464
|
onClick: zoomIn
|
|
2221
2465
|
}, /*#__PURE__*/React__default.createElement(ControlPointIcon, {
|
|
2222
2466
|
sx: {
|
|
2223
2467
|
fontSize: mediaIsMobile ? "1.5em" : "1.2em"
|
|
2224
2468
|
}
|
|
2225
2469
|
})), /*#__PURE__*/React__default.createElement(Button, {
|
|
2226
|
-
sx: buttonStyle,
|
|
2470
|
+
sx: _objectSpread2(_objectSpread2({}, buttonStyle), {}, {
|
|
2471
|
+
color: "#ececec"
|
|
2472
|
+
}),
|
|
2227
2473
|
onClick: zoomOut
|
|
2228
2474
|
}, /*#__PURE__*/React__default.createElement(RemoveCircleOutlineIcon, {
|
|
2229
2475
|
sx: {
|
|
@@ -2235,10 +2481,17 @@ var MlNavigationTools = function MlNavigationTools(props) {
|
|
|
2235
2481
|
var MlLayer = function MlLayer(props) {
|
|
2236
2482
|
// Use a useRef hook to reference the layer object to be able to access it later inside useEffect hooks
|
|
2237
2483
|
var mapContext = useContext(MapContext);
|
|
2484
|
+
var mapState = useMapState({
|
|
2485
|
+
mapId: props.mapId,
|
|
2486
|
+
watch: {
|
|
2487
|
+
viewport: false,
|
|
2488
|
+
layers: true,
|
|
2489
|
+
sources: false
|
|
2490
|
+
}
|
|
2491
|
+
});
|
|
2238
2492
|
var layerInitializedRef = useRef(false);
|
|
2239
2493
|
var mapRef = useRef(null);
|
|
2240
2494
|
var componentId = useRef((props.layerId ? props.layerId : "MlLayer-") + v4());
|
|
2241
|
-
var idSuffixRef = useRef(props.idSuffix || new Date().getTime());
|
|
2242
2495
|
var layerId = useRef(props.layerId || componentId.current);
|
|
2243
2496
|
var layerPaintConfRef = useRef(undefined);
|
|
2244
2497
|
var layerLayoutConfRef = useRef(undefined);
|
|
@@ -2279,6 +2532,22 @@ var MlLayer = function MlLayer(props) {
|
|
|
2279
2532
|
useEffect(function () {
|
|
2280
2533
|
if (!mapContext.mapExists(props.mapId) || layerInitializedRef.current) return; // the MapLibre-gl instance (mapContext.map) is accessible here
|
|
2281
2534
|
// initialize the layer and add it to the MapLibre-gl instance or do something else with it
|
|
2535
|
+
//check if insertBeforeLayer exists
|
|
2536
|
+
|
|
2537
|
+
if (props.insertBeforeLayer) {
|
|
2538
|
+
var _mapState$layers;
|
|
2539
|
+
|
|
2540
|
+
var layerFound = false;
|
|
2541
|
+
mapState === null || mapState === void 0 ? void 0 : (_mapState$layers = mapState.layers) === null || _mapState$layers === void 0 ? void 0 : _mapState$layers.forEach(function (layer) {
|
|
2542
|
+
if (layer.id === props.insertBeforeLayer) {
|
|
2543
|
+
layerFound = true;
|
|
2544
|
+
}
|
|
2545
|
+
});
|
|
2546
|
+
|
|
2547
|
+
if (!layerFound) {
|
|
2548
|
+
return;
|
|
2549
|
+
}
|
|
2550
|
+
}
|
|
2282
2551
|
|
|
2283
2552
|
mapRef.current = mapContext.getMap(props.mapId);
|
|
2284
2553
|
|
|
@@ -2296,7 +2565,7 @@ var MlLayer = function MlLayer(props) {
|
|
|
2296
2565
|
layerPaintConfRef.current = JSON.stringify((_props$options = props.options) === null || _props$options === void 0 ? void 0 : _props$options.paint);
|
|
2297
2566
|
layerLayoutConfRef.current = JSON.stringify((_props$options2 = props.options) === null || _props$options2 === void 0 ? void 0 : _props$options2.layout);
|
|
2298
2567
|
}
|
|
2299
|
-
}, [mapContext.mapIds, mapContext, props,
|
|
2568
|
+
}, [mapContext.mapIds, mapContext, props, mapState.layers]);
|
|
2300
2569
|
return /*#__PURE__*/React__default.createElement(React__default.Fragment, null);
|
|
2301
2570
|
};
|
|
2302
2571
|
|
|
@@ -5531,166 +5800,5 @@ MlSpatialElevationProfile.propTypes = {
|
|
|
5531
5800
|
insertBeforeLayer: PropTypes.string
|
|
5532
5801
|
};
|
|
5533
5802
|
|
|
5534
|
-
|
|
5535
|
-
* React hook that allows subscribing to map state changes
|
|
5536
|
-
*
|
|
5537
|
-
* @component
|
|
5538
|
-
*/
|
|
5539
|
-
|
|
5540
|
-
function useMapState(props) {
|
|
5541
|
-
// Use a useRef hook to reference the layer object to be able to access it later inside useEffect hooks
|
|
5542
|
-
var mapContext = useContext(MapContext);
|
|
5543
|
-
var initializedRef = useRef(false);
|
|
5544
|
-
var mapRef = useRef(undefined);
|
|
5545
|
-
|
|
5546
|
-
var _useState = useState(undefined),
|
|
5547
|
-
_useState2 = _slicedToArray(_useState, 2),
|
|
5548
|
-
center = _useState2[0],
|
|
5549
|
-
setCenter = _useState2[1];
|
|
5550
|
-
|
|
5551
|
-
var _useState3 = useState(undefined),
|
|
5552
|
-
_useState4 = _slicedToArray(_useState3, 2),
|
|
5553
|
-
viewport = _useState4[0],
|
|
5554
|
-
setViewport = _useState4[1];
|
|
5555
|
-
|
|
5556
|
-
var viewportRef = useRef(undefined);
|
|
5557
|
-
|
|
5558
|
-
var _useState5 = useState(undefined),
|
|
5559
|
-
_useState6 = _slicedToArray(_useState5, 2),
|
|
5560
|
-
layers = _useState6[0],
|
|
5561
|
-
setLayers = _useState6[1];
|
|
5562
|
-
|
|
5563
|
-
var layersRef = useRef(undefined); //const mapRef = useRef(props.map);
|
|
5564
|
-
|
|
5565
|
-
var componentId = useRef(v4());
|
|
5566
|
-
/**
|
|
5567
|
-
* returns the element if it matches the defined filter criteria
|
|
5568
|
-
* to be used as filter function on the layers array
|
|
5569
|
-
*
|
|
5570
|
-
* @param {object} layer
|
|
5571
|
-
*/
|
|
5572
|
-
|
|
5573
|
-
var layerIdFilter = useCallback(function (layer) {
|
|
5574
|
-
if (!props.filter.includeBaseLayers && layer.baseLayer) {
|
|
5575
|
-
return false;
|
|
5576
|
-
}
|
|
5577
|
-
|
|
5578
|
-
if (typeof props.filter.matchLayerIds !== "undefined") {
|
|
5579
|
-
if (props.filter.matchLayerIds instanceof RegExp) {
|
|
5580
|
-
return props.filter.matchLayerIds.test(layer.id);
|
|
5581
|
-
} else {
|
|
5582
|
-
return layer.id.includes(props.filter.matchLayerIds);
|
|
5583
|
-
}
|
|
5584
|
-
}
|
|
5585
|
-
|
|
5586
|
-
return true;
|
|
5587
|
-
}, [props.filter]);
|
|
5588
|
-
var refreshLayerState = useCallback(function () {
|
|
5589
|
-
var _layerState = mapRef.current.wrapper.layerState.filter(layerIdFilter);
|
|
5590
|
-
|
|
5591
|
-
var _layerStateString = JSON.stringify(_layerState);
|
|
5592
|
-
|
|
5593
|
-
if (layersRef.current !== _layerStateString) {
|
|
5594
|
-
layersRef.current = _layerStateString;
|
|
5595
|
-
setLayers(_layerState);
|
|
5596
|
-
}
|
|
5597
|
-
}, [layerIdFilter]);
|
|
5598
|
-
useEffect(function () {
|
|
5599
|
-
var _componentId = componentId.current;
|
|
5600
|
-
return function () {
|
|
5601
|
-
if (mapRef.current) {
|
|
5602
|
-
mapRef.current.cleanup(_componentId);
|
|
5603
|
-
mapRef.current = undefined;
|
|
5604
|
-
}
|
|
5605
|
-
|
|
5606
|
-
initializedRef.current = false;
|
|
5607
|
-
};
|
|
5608
|
-
}, []);
|
|
5609
|
-
useEffect(function () {
|
|
5610
|
-
var _props$watch, _props$watch2;
|
|
5611
|
-
|
|
5612
|
-
if (!mapContext.mapExists(props.mapId) || initializedRef.current) return; // the MapLibre-gl instance (mapContext.getMap(props.mapId)) is accessible here
|
|
5613
|
-
// initialize the layer and add it to the MapLibre-gl instance or do something else with it
|
|
5614
|
-
|
|
5615
|
-
initializedRef.current = true;
|
|
5616
|
-
mapRef.current = mapContext.getMap(props.mapId);
|
|
5617
|
-
/*
|
|
5618
|
-
mapRef.current.on(
|
|
5619
|
-
"move",
|
|
5620
|
-
() => {
|
|
5621
|
-
setCenter(mapRef.current.getCenter());
|
|
5622
|
-
},
|
|
5623
|
-
componentId.current
|
|
5624
|
-
);
|
|
5625
|
-
*/
|
|
5626
|
-
|
|
5627
|
-
if (props !== null && props !== void 0 && (_props$watch = props.watch) !== null && _props$watch !== void 0 && _props$watch.viewport) {
|
|
5628
|
-
setViewport(mapRef.current.wrapper.viewportState);
|
|
5629
|
-
mapRef.current.wrapper.on("viewportchange", function () {
|
|
5630
|
-
var _mapRef$current;
|
|
5631
|
-
|
|
5632
|
-
if (viewportRef.current !== ((_mapRef$current = mapRef.current) === null || _mapRef$current === void 0 ? void 0 : _mapRef$current.wrapper.viewportStateString)) {
|
|
5633
|
-
var _mapRef$current2, _mapRef$current3, _mapRef$current3$wrap;
|
|
5634
|
-
|
|
5635
|
-
setViewport((_mapRef$current2 = mapRef.current) === null || _mapRef$current2 === void 0 ? void 0 : _mapRef$current2.wrapper.viewportState);
|
|
5636
|
-
setCenter((_mapRef$current3 = mapRef.current) === null || _mapRef$current3 === void 0 ? void 0 : (_mapRef$current3$wrap = _mapRef$current3.wrapper.viewportState) === null || _mapRef$current3$wrap === void 0 ? void 0 : _mapRef$current3$wrap.center);
|
|
5637
|
-
}
|
|
5638
|
-
}, componentId.current);
|
|
5639
|
-
}
|
|
5640
|
-
|
|
5641
|
-
if (props !== null && props !== void 0 && (_props$watch2 = props.watch) !== null && _props$watch2 !== void 0 && _props$watch2.layers) {
|
|
5642
|
-
var _props$filter, _props$filter2;
|
|
5643
|
-
|
|
5644
|
-
refreshLayerState();
|
|
5645
|
-
mapRef.current.wrapper.on("layerchange", refreshLayerState, {
|
|
5646
|
-
includeBaseLayers: props === null || props === void 0 ? void 0 : (_props$filter = props.filter) === null || _props$filter === void 0 ? void 0 : _props$filter.includeBaseLayers,
|
|
5647
|
-
matchLayerIds: props === null || props === void 0 ? void 0 : (_props$filter2 = props.filter) === null || _props$filter2 === void 0 ? void 0 : _props$filter2.matchLayerIds
|
|
5648
|
-
}, componentId.current);
|
|
5649
|
-
}
|
|
5650
|
-
}, [mapContext.mapIds, mapContext, props.mapId, refreshLayerState]);
|
|
5651
|
-
return {
|
|
5652
|
-
layers: layers,
|
|
5653
|
-
viewport: viewport
|
|
5654
|
-
};
|
|
5655
|
-
}
|
|
5656
|
-
|
|
5657
|
-
useMapState.defaultProps = {
|
|
5658
|
-
mapId: undefined,
|
|
5659
|
-
watch: {
|
|
5660
|
-
layers: true,
|
|
5661
|
-
sources: false,
|
|
5662
|
-
viewport: false
|
|
5663
|
-
},
|
|
5664
|
-
filter: {
|
|
5665
|
-
includeBaseLayers: false
|
|
5666
|
-
}
|
|
5667
|
-
};
|
|
5668
|
-
useMapState.propTypes = {
|
|
5669
|
-
/**
|
|
5670
|
-
* Id of the target MapLibre instance in mapContext
|
|
5671
|
-
*/
|
|
5672
|
-
mapId: PropTypes.string,
|
|
5673
|
-
|
|
5674
|
-
/**
|
|
5675
|
-
* Defines map Resources to watch
|
|
5676
|
-
*/
|
|
5677
|
-
watch: PropTypes.shape({
|
|
5678
|
-
layers: PropTypes.bool,
|
|
5679
|
-
sources: PropTypes.bool,
|
|
5680
|
-
viewport: PropTypes.bool
|
|
5681
|
-
}),
|
|
5682
|
-
|
|
5683
|
-
/**
|
|
5684
|
-
* Filter string or RegExp to more explicitly define the elements watched and increase performance
|
|
5685
|
-
* strings will be matched using layerId.includes(matchString)
|
|
5686
|
-
* RegExps will be matched using matchRegExp.test(layerId)
|
|
5687
|
-
*/
|
|
5688
|
-
filter: PropTypes.shape({
|
|
5689
|
-
includeBaseLayers: PropTypes.bool,
|
|
5690
|
-
matchLayerIds: PropTypes.oneOfType([PropTypes.string, PropTypes.instanceOf(RegExp)]),
|
|
5691
|
-
matchSourceIds: PropTypes.oneOfType([PropTypes.string, PropTypes.instanceOf(RegExp)])
|
|
5692
|
-
})
|
|
5693
|
-
};
|
|
5694
|
-
|
|
5695
|
-
export { GeoJsonContext, GeoJsonProvider, MapLibreMap, MlBasicComponent, MlComponentTemplate, MlCreatePdfButton, MlFeatureEditor, MlFillExtrusionLayer, MlGPXViewer, MlGeoJsonLayer, MlImageMarkerLayer, MlLayer, MlLayerMagnify, MlLayerSwipe, MlNavigationCompass, MlNavigationTools, MlOsmLayer, MlSpatialElevationProfile, MlVectorTileLayer, MlWmsLayer, useMapState };
|
|
5803
|
+
export { GeoJsonContext, GeoJsonProvider, MapLibreMap, MlBasicComponent, MlComponentTemplate, MlCreatePdfButton, MlFeatureEditor, MlFillExtrusionLayer, MlFollowGps, MlGPXViewer, MlGeoJsonLayer, MlImageMarkerLayer, MlLayer, MlLayerMagnify, MlLayerSwipe, MlNavigationCompass, MlNavigationTools, MlOsmLayer, MlSpatialElevationProfile, MlVectorTileLayer, MlWmsLayer, useMap, useMapState };
|
|
5696
5804
|
//# sourceMappingURL=index.esm.js.map
|