@mapcomponents/react-maplibre 0.1.11 → 0.1.15
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 +10 -5
- package/coverage/clover.xml +894 -747
- package/coverage/coverage-final.json +22 -17
- package/coverage/lcov-report/block-navigation.js +8 -0
- package/coverage/lcov-report/index.html +188 -122
- package/coverage/lcov-report/sorter.js +26 -0
- package/coverage/lcov-report/{components → src/components}/MapLibreMap/MapLibreMap.js.html +17 -11
- package/coverage/lcov-report/{components → src/components}/MapLibreMap/index.html +17 -11
- package/coverage/lcov-report/{components → src/components}/MlCreatePdfButton/MlCreatePdfButton.js.html +17 -11
- package/coverage/lcov-report/{components → src/components}/MlCreatePdfButton/index.html +17 -11
- package/coverage/lcov-report/{components → src/components}/MlFeatureEditor/MlFeatureEditor.js.html +17 -11
- package/coverage/lcov-report/{components → src/components}/MlFeatureEditor/index.html +17 -11
- package/coverage/lcov-report/{components → src/components}/MlFillExtrusionLayer/MlFillExtrusionLayer.js.html +17 -11
- package/coverage/lcov-report/{components → src/components}/MlFillExtrusionLayer/index.html +17 -11
- package/coverage/lcov-report/{components → src/components}/MlFollowGps/MlFollowGps.js.html +84 -69
- package/coverage/lcov-report/{components → src/components}/MlFollowGps/index.html +27 -21
- package/coverage/lcov-report/{components → src/components}/MlGPXViewer/MlGPXViewer.js.html +73 -61
- package/coverage/lcov-report/{components → src/components}/MlGPXViewer/gpxConverter.js.html +56 -71
- package/coverage/lcov-report/{components → src/components}/MlGPXViewer/index.html +32 -26
- package/coverage/lcov-report/{components → src/components}/MlGeoJsonLayer/MlGeoJsonLayer.js.html +162 -48
- package/coverage/lcov-report/{components → src/components}/MlGeoJsonLayer/index.html +35 -29
- package/coverage/lcov-report/src/components/MlImageMarkerLayer/MlImageMarkerLayer.js.html +311 -0
- package/coverage/lcov-report/{components → src/components}/MlImageMarkerLayer/index.html +35 -29
- package/coverage/lcov-report/{components/MlImageMarkerLayer/MlImageMarkerLayer.js.html → src/components/MlLayer/MlLayer.js.html} +123 -126
- package/coverage/lcov-report/src/components/MlLayer/index.html +117 -0
- package/coverage/lcov-report/{components → src/components}/MlLayerMagnify/MlLayerMagnify.js.html +48 -42
- package/coverage/lcov-report/{components → src/components}/MlLayerMagnify/index.html +31 -25
- package/coverage/lcov-report/{components → src/components}/MlLayerSwipe/MlLayerSwipe.js.html +45 -42
- package/coverage/lcov-report/{components → src/components}/MlLayerSwipe/index.html +31 -25
- package/coverage/lcov-report/src/components/MlLayerSwitcher/MlLayerSwitcher.js.html +755 -0
- package/coverage/lcov-report/src/components/MlLayerSwitcher/components/LayerBox.js.html +380 -0
- package/coverage/lcov-report/src/components/MlLayerSwitcher/components/index.html +117 -0
- package/coverage/lcov-report/src/components/MlLayerSwitcher/index.html +117 -0
- package/coverage/lcov-report/{components → src/components}/MlMarker/MlMarker.js.html +18 -12
- package/coverage/lcov-report/{components → src/components}/MlMarker/index.html +17 -11
- package/coverage/lcov-report/{components → src/components}/MlNavigationCompass/MlNavigationCompass.js.html +17 -11
- package/coverage/lcov-report/{components → src/components}/MlNavigationCompass/index.html +17 -11
- package/coverage/lcov-report/{components → src/components}/MlNavigationTools/MlNavigationTools.js.html +57 -42
- package/coverage/lcov-report/{components → src/components}/MlNavigationTools/index.html +25 -19
- package/coverage/lcov-report/{components → src/components}/MlOsmLayer/MlOsmLayer.js.html +17 -11
- package/coverage/lcov-report/{components → src/components}/MlOsmLayer/index.html +17 -11
- package/coverage/lcov-report/{components → src/components}/MlScaleReference/MlScaleReference.js.html +17 -11
- package/coverage/lcov-report/{components → src/components}/MlScaleReference/index.html +17 -11
- package/coverage/lcov-report/{components → src/components}/MlShareMapState/MlShareMapState.js.html +224 -26
- package/coverage/lcov-report/{components → src/components}/MlShareMapState/index.html +25 -19
- package/coverage/lcov-report/{components → src/components}/MlSpatialElevationProfile/MlSpatialElevationProfile.js.html +17 -11
- package/coverage/lcov-report/{components → src/components}/MlSpatialElevationProfile/index.html +17 -11
- package/coverage/lcov-report/{components → src/components}/MlThreeJsLayer/MlThreeJsLayer.js.html +37 -55
- package/coverage/lcov-report/{components → src/components}/MlThreeJsLayer/index.html +31 -25
- package/coverage/lcov-report/{components → src/components}/MlUseMapDebugger/MlUseMapDebugger.js.html +17 -11
- package/coverage/lcov-report/{components → src/components}/MlUseMapDebugger/index.html +17 -11
- package/coverage/lcov-report/{components → src/components}/MlVectorTileLayer/MlVectorTileLayer.js.html +17 -11
- package/coverage/lcov-report/{components → src/components}/MlVectorTileLayer/index.html +17 -11
- package/coverage/lcov-report/{components → src/components}/MlWmsFeatureInfoPopup/MlWmsFeatureInfoPopup.js.html +17 -11
- package/coverage/lcov-report/{components → src/components}/MlWmsFeatureInfoPopup/index.html +17 -11
- package/coverage/lcov-report/{components → src/components}/MlWmsLayer/MlWmsLayer.js.html +20 -14
- package/coverage/lcov-report/{components → src/components}/MlWmsLayer/index.html +21 -15
- package/coverage/lcov-report/{components → src/components}/MlWmsLoader/MlWmsLoader.js.html +38 -20
- package/coverage/lcov-report/{components → src/components}/MlWmsLoader/index.html +23 -17
- package/coverage/lcov-report/src/hooks/index.html +147 -0
- package/coverage/lcov-report/{components/MlLayer/MlLayer.js.html → src/hooks/useMap.js.html} +86 -119
- package/coverage/lcov-report/{hooks → src/hooks}/useMapState.js.html +98 -92
- package/coverage/lcov-report/{hooks → src/hooks}/useWms.js.html +25 -19
- package/coverage/lcov-report/src/i18n.js.html +167 -0
- package/coverage/lcov-report/src/index.html +117 -0
- package/coverage/lcov-report/src/translations/english.js.html +95 -0
- package/coverage/lcov-report/src/translations/german.js.html +95 -0
- package/coverage/lcov-report/src/translations/index.html +132 -0
- package/coverage/lcov.info +1620 -1306
- package/dist/b556faa3bc6829d2.png +0 -0
- package/dist/index.esm.js +976 -688
- package/dist/index.esm.js.map +1 -1
- package/package.json +3 -1
- package/public/assets/dop.png +0 -0
- package/public/assets/historic.png +0 -0
- package/public/assets/osm.png +0 -0
- package/public/thumbnails/MlFollowGps.png +0 -0
- package/public/thumbnails/MlThreeJsLayer.png +0 -0
- package/rollup.config.js +7 -1
- package/src/components/MapLibreMap/lib/MapLibreGlWrapper.js +53 -67
- package/src/components/MlCreatePdfButton/MlCreatePdfButton.meta.json +1 -1
- package/src/components/MlFeatureEditor/MlFeatureEditor.meta.json +2 -2
- package/src/components/MlFollowGps/MlFollowGps.js +49 -46
- package/src/components/MlFollowGps/MlFollowGps.meta.json +2 -2
- package/src/components/MlFollowGps/assets/marker.png +0 -0
- package/src/components/MlGPXViewer/MlGPXViewer.js +45 -43
- package/src/components/MlGPXViewer/gpxConverter.js +22 -29
- package/src/components/MlGeoJsonLayer/MlGeoJsonLayer.js +45 -9
- package/src/components/MlGeoJsonLayer/MlGeoJsonLayer.meta.json +1 -1
- package/src/components/MlImageMarkerLayer/MlImageMarkerLayer.js +21 -57
- package/src/components/MlImageMarkerLayer/MlImageMarkerLayer.test.js +6 -7
- package/src/components/MlLayer/MlLayer.js +28 -6
- package/src/components/MlLayer/MlLayer.test.js +12 -10
- package/src/components/MlLayerMagnify/MlLayerMagnify.js +3 -3
- package/src/components/MlLayerSwipe/MlLayerSwipe.js +4 -5
- package/src/components/MlLayerSwitcher/MlLayerSwitcher.css +17 -0
- package/src/components/MlLayerSwitcher/MlLayerSwitcher.doc.de.md +3 -0
- package/src/components/MlLayerSwitcher/MlLayerSwitcher.js +223 -0
- package/src/components/MlLayerSwitcher/MlLayerSwitcher.meta_.json +15 -0
- package/src/components/MlLayerSwitcher/MlLayerSwitcher.stories.js +106 -0
- package/src/components/MlLayerSwitcher/assets/sample_1.json +26 -0
- package/src/components/MlLayerSwitcher/assets/sample_2.json +22 -0
- package/src/components/MlLayerSwitcher/components/LayerBox.js +98 -0
- package/src/components/MlMarker/MlMarker.js +1 -1
- package/src/components/MlNavigationTools/MlNavigationTools.js +29 -26
- package/src/components/MlScaleReference/MlScaleReference.meta.json +1 -1
- package/src/components/MlScaleReference/MlScaleReference.stories.js +25 -21
- package/src/components/MlShareMapState/MlShareMapState.js +73 -9
- package/src/components/MlShareMapState/MlShareMapState.stories.js +24 -1
- package/src/components/MlSpatialElevationProfile/MlSpatialElevationProfile.stories.js +12 -6
- package/src/components/MlThreeJsLayer/MlThreeJsLayer.js +8 -15
- package/src/components/MlVectorTileLayer/MlVectorTileLayer.meta.json +3 -3
- package/src/components/MlWmsLayer/MlWmsLayer.js +1 -1
- package/src/components/MlWmsLoader/MlWmsLoader.js +8 -4
- package/src/components/MlWmsLoader/MlWmsLoader.meta.json +1 -1
- package/src/components/MlWmsLoader/MlWmsLoader.stories.js +5 -4
- package/src/decorators/EmptyMapContextDecorator.js +11 -6
- package/src/decorators/MapContext3DDecorator.js +25 -20
- package/src/decorators/MapContextDashboardDecorator.js +7 -2
- package/src/decorators/MapContextDecorator.js +7 -3
- package/src/decorators/MapContextKlokantechBasicDecorator.js +8 -4
- package/src/decorators/MultiMapContextDecorator.js +2 -1
- package/src/hooks/useMap.js +36 -62
- package/src/hooks/useMapState.js +3 -3
- package/src/hooks/useWms.js +7 -6
- package/src/i18n.js +28 -0
- package/src/index.js +3 -0
- package/src/translations/english.js +4 -0
- package/src/translations/german.js +4 -0
- package/src/ui_components/ImageLoader.js +73 -0
- package/src/ui_components/Sidebar.js +76 -22
- package/src/ui_components/TopToolbar.js +18 -18
- package/coverage/lcov-report/components/MlLayer/index.html +0 -111
- package/coverage/lcov-report/hooks/index.html +0 -141
- package/coverage/lcov-report/hooks/useMap.js.html +0 -377
package/dist/index.esm.js
CHANGED
|
@@ -5,17 +5,18 @@ 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 } 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
|
|
19
|
+
import useMediaQuery from '@mui/material/useMediaQuery';
|
|
19
20
|
import '@mapbox/mapbox-gl-draw/dist/mapbox-gl-draw.css';
|
|
20
21
|
import MapboxDraw from '@mapbox/mapbox-gl-draw';
|
|
21
22
|
import Point from '@mapbox/point-geometry';
|
|
@@ -30,6 +31,7 @@ import FileCopy from '@mui/icons-material/FileCopy';
|
|
|
30
31
|
import List from '@mui/material/List';
|
|
31
32
|
import ListItem from '@mui/material/ListItem';
|
|
32
33
|
import ListItemText from '@mui/material/ListItemText';
|
|
34
|
+
import { lineString as lineString$1, polygon } from '@turf/helpers';
|
|
33
35
|
|
|
34
36
|
function ownKeys(object, enumerableOnly) {
|
|
35
37
|
var keys = Object.keys(object);
|
|
@@ -287,7 +289,7 @@ var MapLibreGlWrapper = function MapLibreGlWrapper(props) {
|
|
|
287
289
|
on: function on(eventName, handler, options, componentId) {
|
|
288
290
|
if (!self.eventHandlers[eventName]) return;
|
|
289
291
|
|
|
290
|
-
if (typeof options ===
|
|
292
|
+
if (typeof options === "string") {
|
|
291
293
|
componentId = options;
|
|
292
294
|
options = {};
|
|
293
295
|
}
|
|
@@ -340,7 +342,7 @@ var MapLibreGlWrapper = function MapLibreGlWrapper(props) {
|
|
|
340
342
|
/**
|
|
341
343
|
* Array containing an object for each layer in the MapLibre instance providing information on visibility, loading state, order, paint & layout properties
|
|
342
344
|
*/
|
|
343
|
-
layerState:
|
|
345
|
+
layerState: [],
|
|
344
346
|
|
|
345
347
|
/**
|
|
346
348
|
* Maps layerIds to layerState in JSON string form for quick deep comparisons
|
|
@@ -428,7 +430,7 @@ var MapLibreGlWrapper = function MapLibreGlWrapper(props) {
|
|
|
428
430
|
*/
|
|
429
431
|
oldViewportStateString: "{}",
|
|
430
432
|
getViewport: function getViewport() {
|
|
431
|
-
return typeof self.map.getCenter ===
|
|
433
|
+
return typeof self.map.getCenter === "function" ? {
|
|
432
434
|
center: function (_ref) {
|
|
433
435
|
var lng = _ref.lng,
|
|
434
436
|
lat = _ref.lat,
|
|
@@ -444,24 +446,8 @@ var MapLibreGlWrapper = function MapLibreGlWrapper(props) {
|
|
|
444
446
|
pitch: self.map.getPitch()
|
|
445
447
|
} : {};
|
|
446
448
|
},
|
|
447
|
-
|
|
448
|
-
|
|
449
|
-
refreshViewport: function refreshViewport(force) {
|
|
450
|
-
if (self.wrapper.viewportRefreshEnabled || force) {
|
|
451
|
-
self.wrapper.viewportRefreshEnabled = false;
|
|
452
|
-
self.wrapper.viewportState = self.wrapper.getViewport();
|
|
453
|
-
self.wrapper.viewportStateString = JSON.stringify(self.wrapper.viewportState);
|
|
454
|
-
setTimeout(function () {
|
|
455
|
-
self.wrapper.viewportRefreshEnabled = true;
|
|
456
|
-
|
|
457
|
-
if (self.wrapper.viewportRefreshWaiting) {
|
|
458
|
-
self.wrapper.viewportRefreshWaiting = false;
|
|
459
|
-
self.wrapper.refreshViewport();
|
|
460
|
-
}
|
|
461
|
-
}, 50);
|
|
462
|
-
} else {
|
|
463
|
-
self.wrapper.viewportRefreshWaiting = true;
|
|
464
|
-
}
|
|
449
|
+
refreshViewport: function refreshViewport() {
|
|
450
|
+
self.wrapper.viewportState = self.wrapper.getViewport();
|
|
465
451
|
}
|
|
466
452
|
};
|
|
467
453
|
/**
|
|
@@ -738,7 +724,7 @@ var MapLibreGlWrapper = function MapLibreGlWrapper(props) {
|
|
|
738
724
|
if (response.ok) {
|
|
739
725
|
return response.json();
|
|
740
726
|
} else {
|
|
741
|
-
throw new Error(
|
|
727
|
+
throw new Error("error loading map style.json");
|
|
742
728
|
}
|
|
743
729
|
}).then(function (styleJson) {
|
|
744
730
|
styleJson.layers.forEach(function (item) {
|
|
@@ -757,15 +743,11 @@ var MapLibreGlWrapper = function MapLibreGlWrapper(props) {
|
|
|
757
743
|
case 3:
|
|
758
744
|
self.map = new maplibregl.Map(props.mapOptions);
|
|
759
745
|
self.addNativeMaplibreFunctionsAndProps();
|
|
760
|
-
self.wrapper.refreshViewport(
|
|
746
|
+
self.wrapper.refreshViewport();
|
|
761
747
|
self.wrapper.fire("viewportchange");
|
|
762
748
|
self.map.on("move", function () {
|
|
763
|
-
self.wrapper.
|
|
764
|
-
|
|
765
|
-
if (self.wrapper.viewportStateString !== self.wrapper.oldViewportStateString) {
|
|
766
|
-
self.wrapper.oldViewportStateString = self.wrapper.viewportStateString;
|
|
767
|
-
self.wrapper.fire("viewportchange");
|
|
768
|
-
}
|
|
749
|
+
self.wrapper.viewportState = self.wrapper.getViewport();
|
|
750
|
+
self.wrapper.fire("viewportchange");
|
|
769
751
|
});
|
|
770
752
|
self.map.on("data", function () {
|
|
771
753
|
self.wrapper.refreshLayerState();
|
|
@@ -1057,191 +1039,167 @@ MlFillExtrusionLayer.propTypes = {
|
|
|
1057
1039
|
insertBeforeLayer: PropTypes.string
|
|
1058
1040
|
};
|
|
1059
1041
|
|
|
1060
|
-
|
|
1061
|
-
|
|
1062
|
-
|
|
1063
|
-
|
|
1064
|
-
|
|
1065
|
-
state: ["state", "province", "state_code"]
|
|
1066
|
-
};
|
|
1042
|
+
/**
|
|
1043
|
+
* React hook that allows subscribing to map state changes
|
|
1044
|
+
*
|
|
1045
|
+
* @component
|
|
1046
|
+
*/
|
|
1067
1047
|
|
|
1068
|
-
|
|
1069
|
-
|
|
1048
|
+
function useMapState(props) {
|
|
1049
|
+
// Use a useRef hook to reference the layer object to be able to access it later inside useEffect hooks
|
|
1050
|
+
var mapContext = useContext(MapContext);
|
|
1051
|
+
var initializedRef = useRef(false);
|
|
1052
|
+
var mapRef = useRef(undefined);
|
|
1070
1053
|
|
|
1071
|
-
|
|
1072
|
-
|
|
1073
|
-
|
|
1074
|
-
|
|
1075
|
-
return true;
|
|
1076
|
-
}
|
|
1054
|
+
var _useState = useState(undefined),
|
|
1055
|
+
_useState2 = _slicedToArray(_useState, 2),
|
|
1056
|
+
center = _useState2[0],
|
|
1057
|
+
setCenter = _useState2[1];
|
|
1077
1058
|
|
|
1078
|
-
|
|
1079
|
-
|
|
1080
|
-
|
|
1059
|
+
var _useState3 = useState(undefined),
|
|
1060
|
+
_useState4 = _slicedToArray(_useState3, 2),
|
|
1061
|
+
viewport = _useState4[0],
|
|
1062
|
+
setViewport = _useState4[1];
|
|
1081
1063
|
|
|
1082
|
-
|
|
1083
|
-
};
|
|
1064
|
+
var viewportRef = useRef(undefined);
|
|
1084
1065
|
|
|
1085
|
-
var
|
|
1086
|
-
|
|
1087
|
-
|
|
1088
|
-
|
|
1089
|
-
};
|
|
1066
|
+
var _useState5 = useState(undefined),
|
|
1067
|
+
_useState6 = _slicedToArray(_useState5, 2),
|
|
1068
|
+
layers = _useState6[0],
|
|
1069
|
+
setLayers = _useState6[1];
|
|
1090
1070
|
|
|
1091
|
-
var
|
|
1092
|
-
setLoading(true);
|
|
1093
|
-
var width = 210;
|
|
1094
|
-
var height = 297; // Calculate pixel ratio
|
|
1071
|
+
var layersRef = useRef(undefined); //const mapRef = useRef(props.map);
|
|
1095
1072
|
|
|
1096
|
-
var
|
|
1073
|
+
var componentId = useRef(v4());
|
|
1074
|
+
/**
|
|
1075
|
+
* returns the element if it matches the defined filter criteria
|
|
1076
|
+
* to be used as filter function on the layers array
|
|
1077
|
+
*
|
|
1078
|
+
* @param {object} layer
|
|
1079
|
+
*/
|
|
1097
1080
|
|
|
1098
|
-
var
|
|
1099
|
-
|
|
1100
|
-
document.body.appendChild(hidden);
|
|
1101
|
-
var container = document.createElement("div");
|
|
1102
|
-
container.style.width = toPixels(width);
|
|
1103
|
-
container.style.height = toPixels(height);
|
|
1104
|
-
hidden.appendChild(container); //Render map
|
|
1081
|
+
var layerIdFilter = useCallback(function (layer) {
|
|
1082
|
+
var _props$filter, _props$filter2;
|
|
1105
1083
|
|
|
1106
|
-
|
|
1107
|
-
|
|
1108
|
-
|
|
1109
|
-
zoom: map.getZoom(),
|
|
1110
|
-
bearing: map.getBearing(),
|
|
1111
|
-
pitch: map.getPitch(),
|
|
1112
|
-
interactive: false,
|
|
1113
|
-
preserveDrawingBuffer: true,
|
|
1114
|
-
fadeDuration: 0,
|
|
1115
|
-
attributionControl: false
|
|
1116
|
-
});
|
|
1117
|
-
var style = map.getStyle();
|
|
1084
|
+
if (!(props !== null && props !== void 0 && (_props$filter = props.filter) !== null && _props$filter !== void 0 && _props$filter.includeBaseLayers) && layer.baseLayer) {
|
|
1085
|
+
return false;
|
|
1086
|
+
}
|
|
1118
1087
|
|
|
1119
|
-
|
|
1120
|
-
|
|
1121
|
-
|
|
1122
|
-
|
|
1123
|
-
|
|
1124
|
-
if (!src[key]) {
|
|
1125
|
-
delete src[key];
|
|
1088
|
+
if (typeof ((_props$filter2 = props.filter) === null || _props$filter2 === void 0 ? void 0 : _props$filter2.matchLayerIds) !== "undefined") {
|
|
1089
|
+
if (props.filter.matchLayerIds instanceof RegExp) {
|
|
1090
|
+
return props.filter.matchLayerIds.test(layer.id);
|
|
1091
|
+
} else {
|
|
1092
|
+
return layer.id.includes(props.filter.matchLayerIds);
|
|
1126
1093
|
}
|
|
1127
|
-
}
|
|
1128
|
-
};
|
|
1094
|
+
}
|
|
1129
1095
|
|
|
1130
|
-
|
|
1131
|
-
|
|
1132
|
-
|
|
1096
|
+
return true;
|
|
1097
|
+
}, [props.filter]);
|
|
1098
|
+
var refreshLayerState = useCallback(function () {
|
|
1099
|
+
var _layerState = mapRef.current.wrapper.layerState.filter(layerIdFilter);
|
|
1133
1100
|
|
|
1134
|
-
|
|
1135
|
-
renderMap.once("idle", function () {
|
|
1136
|
-
var _hidden$parentNode;
|
|
1101
|
+
var _layerStateString = JSON.stringify(_layerState);
|
|
1137
1102
|
|
|
1138
|
-
|
|
1139
|
-
|
|
1140
|
-
|
|
1141
|
-
|
|
1142
|
-
|
|
1143
|
-
|
|
1144
|
-
|
|
1145
|
-
|
|
1146
|
-
|
|
1103
|
+
if (layersRef.current !== _layerStateString) {
|
|
1104
|
+
layersRef.current = _layerStateString;
|
|
1105
|
+
setLayers(_layerState);
|
|
1106
|
+
}
|
|
1107
|
+
}, [layerIdFilter]);
|
|
1108
|
+
useEffect(function () {
|
|
1109
|
+
var _componentId = componentId.current;
|
|
1110
|
+
return function () {
|
|
1111
|
+
if (mapRef.current) {
|
|
1112
|
+
mapRef.current.cleanup(_componentId);
|
|
1113
|
+
mapRef.current = undefined;
|
|
1147
1114
|
}
|
|
1148
|
-
});
|
|
1149
|
-
var offsetX = 2.5;
|
|
1150
|
-
var offsetY = 2.5;
|
|
1151
|
-
var marginTop = 3;
|
|
1152
|
-
var marginBottom = 3;
|
|
1153
|
-
var innerMargin = 2;
|
|
1154
|
-
var logo = "data:image/png;base64,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";
|
|
1155
|
-
var textBuffer = 1;
|
|
1156
|
-
var lineHeight = 3.25;
|
|
1157
|
-
var text = locationValue ? nmConverter(locationValue.address) : "";
|
|
1158
|
-
var textChunksSeperator = text.split(",");
|
|
1159
|
-
var textChunks = [];
|
|
1160
|
-
|
|
1161
|
-
if (textChunks.length) {
|
|
1162
|
-
textChunksSeperator.forEach(function (chunk) {
|
|
1163
|
-
var limitChunks = chunk.match(/.{1,34}/g);
|
|
1164
|
-
textChunks.push.apply(textChunks, _toConsumableArray(limitChunks));
|
|
1165
|
-
});
|
|
1166
|
-
} //Render map image
|
|
1167
1115
|
|
|
1116
|
+
initializedRef.current = false;
|
|
1117
|
+
};
|
|
1118
|
+
}, []);
|
|
1119
|
+
useEffect(function () {
|
|
1120
|
+
var _props$watch, _props$watch2;
|
|
1168
1121
|
|
|
1169
|
-
|
|
1170
|
-
|
|
1171
|
-
pdf.setFillColor("white");
|
|
1172
|
-
pdf.rect(138, 287, 297, 10, "F");
|
|
1173
|
-
pdf.setFontSize(10); // optional
|
|
1122
|
+
if (!mapContext.mapExists(props.mapId) || initializedRef.current) return; // the MapLibre-gl instance (mapContext.getMap(props.mapId)) is accessible here
|
|
1123
|
+
// initialize the layer and add it to the MapLibre-gl instance or do something else with it
|
|
1174
1124
|
|
|
1175
|
-
|
|
1125
|
+
initializedRef.current = true;
|
|
1126
|
+
mapRef.current = mapContext.getMap(props.mapId);
|
|
1127
|
+
/*
|
|
1128
|
+
mapRef.current.on(
|
|
1129
|
+
"move",
|
|
1130
|
+
() => {
|
|
1131
|
+
setCenter(mapRef.current.getCenter());
|
|
1132
|
+
},
|
|
1133
|
+
componentId.current
|
|
1134
|
+
);
|
|
1135
|
+
*/
|
|
1176
1136
|
|
|
1177
|
-
|
|
1178
|
-
|
|
1179
|
-
|
|
1180
|
-
|
|
1181
|
-
pdf.text("Karten PDF:", 6, offsetY + marginTop); //Render inner infobox
|
|
1137
|
+
if (props !== null && props !== void 0 && (_props$watch = props.watch) !== null && _props$watch !== void 0 && _props$watch.viewport) {
|
|
1138
|
+
setViewport(mapRef.current.wrapper.viewportState);
|
|
1139
|
+
mapRef.current.wrapper.on("viewportchange", function () {
|
|
1140
|
+
var _mapRef$current;
|
|
1182
1141
|
|
|
1183
|
-
|
|
1184
|
-
|
|
1142
|
+
if (viewportRef.current !== ((_mapRef$current = mapRef.current) === null || _mapRef$current === void 0 ? void 0 : _mapRef$current.wrapper.viewportStateString)) {
|
|
1143
|
+
var _mapRef$current2, _mapRef$current3, _mapRef$current3$wrap;
|
|
1185
1144
|
|
|
1186
|
-
|
|
1187
|
-
|
|
1188
|
-
|
|
1145
|
+
setViewport((_mapRef$current2 = mapRef.current) === null || _mapRef$current2 === void 0 ? void 0 : _mapRef$current2.wrapper.viewportState);
|
|
1146
|
+
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);
|
|
1147
|
+
}
|
|
1148
|
+
}, componentId.current);
|
|
1149
|
+
}
|
|
1189
1150
|
|
|
1190
|
-
|
|
1151
|
+
if (props !== null && props !== void 0 && (_props$watch2 = props.watch) !== null && _props$watch2 !== void 0 && _props$watch2.layers) {
|
|
1152
|
+
var _props$filter3, _props$filter4;
|
|
1191
1153
|
|
|
1192
|
-
|
|
1193
|
-
|
|
1154
|
+
refreshLayerState();
|
|
1155
|
+
mapRef.current.wrapper.on("layerchange", refreshLayerState, {
|
|
1156
|
+
includeBaseLayers: props === null || props === void 0 ? void 0 : (_props$filter3 = props.filter) === null || _props$filter3 === void 0 ? void 0 : _props$filter3.includeBaseLayers,
|
|
1157
|
+
matchLayerIds: props === null || props === void 0 ? void 0 : (_props$filter4 = props.filter) === null || _props$filter4 === void 0 ? void 0 : _props$filter4.matchLayerIds
|
|
1158
|
+
}, componentId.current);
|
|
1159
|
+
}
|
|
1160
|
+
}, [mapContext.mapIds, mapContext, props.mapId, refreshLayerState]);
|
|
1161
|
+
return {
|
|
1162
|
+
layers: layers,
|
|
1163
|
+
viewport: viewport
|
|
1164
|
+
};
|
|
1165
|
+
}
|
|
1194
1166
|
|
|
1195
|
-
|
|
1196
|
-
|
|
1197
|
-
|
|
1198
|
-
|
|
1199
|
-
|
|
1200
|
-
|
|
1201
|
-
|
|
1202
|
-
|
|
1203
|
-
|
|
1204
|
-
|
|
1205
|
-
get: function get() {
|
|
1206
|
-
return actualPixelRatio;
|
|
1207
|
-
}
|
|
1208
|
-
});
|
|
1209
|
-
setLoading(false);
|
|
1210
|
-
});
|
|
1167
|
+
useMapState.defaultProps = {
|
|
1168
|
+
mapId: undefined,
|
|
1169
|
+
watch: {
|
|
1170
|
+
layers: true,
|
|
1171
|
+
sources: false,
|
|
1172
|
+
viewport: false
|
|
1173
|
+
},
|
|
1174
|
+
filter: {
|
|
1175
|
+
includeBaseLayers: false
|
|
1176
|
+
}
|
|
1211
1177
|
};
|
|
1178
|
+
useMapState.propTypes = {
|
|
1179
|
+
/**
|
|
1180
|
+
* Id of the target MapLibre instance in mapContext
|
|
1181
|
+
*/
|
|
1182
|
+
mapId: PropTypes.string,
|
|
1212
1183
|
|
|
1213
|
-
/**
|
|
1214
|
-
|
|
1215
|
-
|
|
1216
|
-
|
|
1217
|
-
|
|
1218
|
-
|
|
1219
|
-
|
|
1220
|
-
|
|
1221
|
-
var initializedRef = useRef(false);
|
|
1222
|
-
var mapRef = useRef(undefined);
|
|
1223
|
-
useEffect(function () {
|
|
1224
|
-
if (!mapContext.mapExists(props.mapId) || initializedRef.current) return;
|
|
1225
|
-
initializedRef.current = true;
|
|
1226
|
-
mapRef.current = mapContext.getMap(props.mapId);
|
|
1227
|
-
}, [mapContext.mapIds, mapContext, props.mapId]);
|
|
1228
|
-
return /*#__PURE__*/React__default.createElement(React__default.Fragment, null, /*#__PURE__*/React__default.createElement(Button, {
|
|
1229
|
-
color: "primary",
|
|
1230
|
-
variant: "contained",
|
|
1231
|
-
onClick: function onClick() {
|
|
1232
|
-
createPdf(mapRef.current, null, function () {});
|
|
1233
|
-
}
|
|
1234
|
-
}, /*#__PURE__*/React__default.createElement(PrinterIcon, null)));
|
|
1235
|
-
};
|
|
1184
|
+
/**
|
|
1185
|
+
* Defines map Resources to watch
|
|
1186
|
+
*/
|
|
1187
|
+
watch: PropTypes.shape({
|
|
1188
|
+
layers: PropTypes.bool,
|
|
1189
|
+
sources: PropTypes.bool,
|
|
1190
|
+
viewport: PropTypes.bool
|
|
1191
|
+
}),
|
|
1236
1192
|
|
|
1237
|
-
MlCreatePdfButton.defaultProps = {
|
|
1238
|
-
mapId: undefined
|
|
1239
|
-
};
|
|
1240
|
-
MlCreatePdfButton.propTypes = {
|
|
1241
1193
|
/**
|
|
1242
|
-
*
|
|
1194
|
+
* Filter string or RegExp to more explicitly define the elements watched and increase performance
|
|
1195
|
+
* strings will be matched using layerId.includes(matchString)
|
|
1196
|
+
* RegExps will be matched using matchRegExp.test(layerId)
|
|
1243
1197
|
*/
|
|
1244
|
-
|
|
1198
|
+
filter: PropTypes.shape({
|
|
1199
|
+
includeBaseLayers: PropTypes.bool,
|
|
1200
|
+
matchLayerIds: PropTypes.oneOfType([PropTypes.string, PropTypes.instanceOf(RegExp)]),
|
|
1201
|
+
matchSourceIds: PropTypes.oneOfType([PropTypes.string, PropTypes.instanceOf(RegExp)])
|
|
1202
|
+
})
|
|
1245
1203
|
};
|
|
1246
1204
|
|
|
1247
1205
|
var _showNextTransitionSegment = function _showNextTransitionSegment(props, layerId, map, transitionInProgressRef, transitionGeojsonDataRef, transitionGeojsonCommonDataRef, currentTransitionStepRef, msPerStep, transitionTimeoutRef) {
|
|
@@ -1417,6 +1375,14 @@ var msPerStep = 50;
|
|
|
1417
1375
|
var MlGeoJsonLayer = function MlGeoJsonLayer(props) {
|
|
1418
1376
|
// Use a useRef hook to reference the layer object to be able to access it later inside useEffect hooks
|
|
1419
1377
|
var mapContext = useContext(MapContext);
|
|
1378
|
+
var mapState = useMapState({
|
|
1379
|
+
mapId: props.mapId,
|
|
1380
|
+
watch: {
|
|
1381
|
+
viewport: false,
|
|
1382
|
+
layers: true,
|
|
1383
|
+
sources: false
|
|
1384
|
+
}
|
|
1385
|
+
});
|
|
1420
1386
|
var oldGeojsonRef = useRef(null);
|
|
1421
1387
|
var mapRef = useRef(null);
|
|
1422
1388
|
var initializedRef = useRef(false);
|
|
@@ -1442,11 +1408,17 @@ var MlGeoJsonLayer = function MlGeoJsonLayer(props) {
|
|
|
1442
1408
|
};
|
|
1443
1409
|
}, []);
|
|
1444
1410
|
useEffect(function () {
|
|
1445
|
-
if (!mapRef.current || !initializedRef.current) return;
|
|
1446
|
-
|
|
1411
|
+
if (!mapRef.current || !initializedRef.current) return;
|
|
1412
|
+
|
|
1413
|
+
for (var key in props.layout) {
|
|
1414
|
+
mapContext.getMap(props.mapId).setLayoutProperty(layerId.current, key, props.layout[key]);
|
|
1415
|
+
}
|
|
1416
|
+
}, [props.layout, mapContext, props.mapId]);
|
|
1417
|
+
useEffect(function () {
|
|
1418
|
+
if (!mapRef.current || !initializedRef.current) return;
|
|
1447
1419
|
|
|
1448
1420
|
for (var key in props.paint) {
|
|
1449
|
-
mapContext.getMap(props.mapId).setPaintProperty(
|
|
1421
|
+
mapContext.getMap(props.mapId).setPaintProperty(layerId.current, key, props.paint[key]);
|
|
1450
1422
|
}
|
|
1451
1423
|
}, [props.paint, mapContext, props.mapId]);
|
|
1452
1424
|
var transitionToGeojson = useCallback(function (newGeojson) {
|
|
@@ -1475,6 +1447,22 @@ var MlGeoJsonLayer = function MlGeoJsonLayer(props) {
|
|
|
1475
1447
|
// initialize the layer and add it to the MapLibre-gl instance or do something else with it
|
|
1476
1448
|
|
|
1477
1449
|
if (props.geojson) {
|
|
1450
|
+
//check if insertBeforeLayer exists
|
|
1451
|
+
if (props.insertBeforeLayer) {
|
|
1452
|
+
var _mapState$layers;
|
|
1453
|
+
|
|
1454
|
+
var layerFound = false;
|
|
1455
|
+
mapState === null || mapState === void 0 ? void 0 : (_mapState$layers = mapState.layers) === null || _mapState$layers === void 0 ? void 0 : _mapState$layers.forEach(function (layer) {
|
|
1456
|
+
if (layer.id === props.insertBeforeLayer) {
|
|
1457
|
+
layerFound = true;
|
|
1458
|
+
}
|
|
1459
|
+
});
|
|
1460
|
+
|
|
1461
|
+
if (!layerFound) {
|
|
1462
|
+
return;
|
|
1463
|
+
}
|
|
1464
|
+
}
|
|
1465
|
+
|
|
1478
1466
|
initializedRef.current = true;
|
|
1479
1467
|
var geojson = props.geojson;
|
|
1480
1468
|
|
|
@@ -1494,7 +1482,8 @@ var MlGeoJsonLayer = function MlGeoJsonLayer(props) {
|
|
|
1494
1482
|
paint: props.paint || {
|
|
1495
1483
|
"line-color": "rgb(100,200,100)",
|
|
1496
1484
|
"line-width": 10
|
|
1497
|
-
}
|
|
1485
|
+
},
|
|
1486
|
+
layout: props.layout || {}
|
|
1498
1487
|
}, props.insertBeforeLayer, componentId.current);
|
|
1499
1488
|
|
|
1500
1489
|
if (typeof props.onHover !== "undefined") {
|
|
@@ -1514,7 +1503,7 @@ var MlGeoJsonLayer = function MlGeoJsonLayer(props) {
|
|
|
1514
1503
|
oldGeojsonRef.current = props.geojson;
|
|
1515
1504
|
}
|
|
1516
1505
|
}
|
|
1517
|
-
}, [mapContext.mapIds, mapContext, props, transitionToGeojson]);
|
|
1506
|
+
}, [mapContext.mapIds, mapContext, props, transitionToGeojson, mapState.layers]);
|
|
1518
1507
|
return /*#__PURE__*/React__default.createElement(React__default.Fragment, null);
|
|
1519
1508
|
};
|
|
1520
1509
|
|
|
@@ -1531,8 +1520,17 @@ MlGeoJsonLayer.propTypes = {
|
|
|
1531
1520
|
type: PropTypes.string,
|
|
1532
1521
|
|
|
1533
1522
|
/**
|
|
1534
|
-
*
|
|
1535
|
-
* Possible
|
|
1523
|
+
* Layout property object, that is passed to the addLayer call.
|
|
1524
|
+
* Possible props depend on the layer type.
|
|
1525
|
+
* https://maplibre.org/maplibre-gl-js-docs/style-spec/layers/#line
|
|
1526
|
+
* https://maplibre.org/maplibre-gl-js-docs/style-spec/layers/#circle
|
|
1527
|
+
* https://maplibre.org/maplibre-gl-js-docs/style-spec/layers/#fill
|
|
1528
|
+
*/
|
|
1529
|
+
layout: PropTypes.object,
|
|
1530
|
+
|
|
1531
|
+
/**
|
|
1532
|
+
* Paint property object, that is passed to the addLayer call.
|
|
1533
|
+
* Possible props depend on the layer type.
|
|
1536
1534
|
* https://maplibre.org/maplibre-gl-js-docs/style-spec/layers/#line
|
|
1537
1535
|
* https://maplibre.org/maplibre-gl-js-docs/style-spec/layers/#circle
|
|
1538
1536
|
* https://maplibre.org/maplibre-gl-js-docs/style-spec/layers/#fill
|
|
@@ -1584,43 +1582,100 @@ MlGeoJsonLayer.propTypes = {
|
|
|
1584
1582
|
idSuffix: PropTypes.string
|
|
1585
1583
|
};
|
|
1586
1584
|
|
|
1587
|
-
|
|
1585
|
+
function useMap(props) {
|
|
1588
1586
|
// Use a useRef hook to reference the layer object to be able to access it later inside useEffect hooks
|
|
1589
|
-
var mapRef = useRef(null);
|
|
1590
|
-
var componentId = useRef((props.idPrefix ? props.idPrefix : "MlOsmLayer-") + v4());
|
|
1591
1587
|
var mapContext = useContext(MapContext);
|
|
1592
|
-
var
|
|
1593
|
-
|
|
1594
|
-
|
|
1595
|
-
|
|
1588
|
+
var mapState = useMapState({
|
|
1589
|
+
mapId: props.mapId,
|
|
1590
|
+
watch: {
|
|
1591
|
+
viewport: false,
|
|
1592
|
+
layers: true,
|
|
1593
|
+
sources: false
|
|
1594
|
+
}
|
|
1595
|
+
});
|
|
1596
|
+
var initializedRef = useRef(false);
|
|
1597
|
+
var mapRef = useRef(undefined);
|
|
1598
|
+
var componentId = useRef(v4());
|
|
1599
|
+
|
|
1600
|
+
var _useState = useState(undefined),
|
|
1601
|
+
_useState2 = _slicedToArray(_useState, 2),
|
|
1602
|
+
mapIsReady = _useState2[0],
|
|
1603
|
+
setMapIsReady = _useState2[1];
|
|
1604
|
+
|
|
1596
1605
|
useEffect(function () {
|
|
1597
1606
|
var _componentId = componentId.current;
|
|
1598
1607
|
return function () {
|
|
1599
|
-
// This is the cleanup function, it is called when this react component is removed from react-dom
|
|
1600
1608
|
if (mapRef.current) {
|
|
1601
1609
|
mapRef.current.cleanup(_componentId);
|
|
1602
|
-
mapRef.current =
|
|
1610
|
+
mapRef.current = undefined;
|
|
1603
1611
|
}
|
|
1612
|
+
|
|
1613
|
+
initializedRef.current = false;
|
|
1614
|
+
setMapIsReady(false);
|
|
1604
1615
|
};
|
|
1605
1616
|
}, []);
|
|
1606
1617
|
useEffect(function () {
|
|
1607
|
-
if (!
|
|
1618
|
+
if (!mapContext.mapExists(props.mapId) || initializedRef.current) return;
|
|
1619
|
+
console.log("initialize useMap hook"); //check if insertBeforeLayer exists
|
|
1620
|
+
|
|
1621
|
+
if (props.waitForLayer) {
|
|
1622
|
+
var _mapState$layers;
|
|
1623
|
+
|
|
1624
|
+
var layerFound = false;
|
|
1625
|
+
mapState === null || mapState === void 0 ? void 0 : (_mapState$layers = mapState.layers) === null || _mapState$layers === void 0 ? void 0 : _mapState$layers.forEach(function (layer) {
|
|
1626
|
+
console.log(layer.id + " " + props.waitForLayer);
|
|
1627
|
+
|
|
1628
|
+
if (layer.id === props.waitForLayer) {
|
|
1629
|
+
layerFound = true;
|
|
1630
|
+
}
|
|
1631
|
+
});
|
|
1632
|
+
|
|
1633
|
+
if (!layerFound) {
|
|
1634
|
+
return;
|
|
1635
|
+
}
|
|
1636
|
+
}
|
|
1637
|
+
|
|
1638
|
+
console.log("done initialize useMap hook"); // the MapLibre-gl instance (mapContext.getMap(props.mapId)) is accessible here
|
|
1639
|
+
// initialize the layer and add it to the MapLibre-gl instance or do something else with it
|
|
1640
|
+
|
|
1641
|
+
initializedRef.current = true;
|
|
1642
|
+
mapRef.current = mapContext.getMap(props.mapId);
|
|
1643
|
+
setMapIsReady(true);
|
|
1644
|
+
}, [mapContext.mapIds, mapState.layers, mapContext, props.mapId]);
|
|
1645
|
+
return {
|
|
1646
|
+
map: mapRef.current,
|
|
1647
|
+
mapIsReady: mapIsReady,
|
|
1648
|
+
componentId: componentId.current,
|
|
1649
|
+
layers: mapState.layers
|
|
1650
|
+
};
|
|
1651
|
+
}
|
|
1652
|
+
|
|
1653
|
+
var MlImageMarkerLayer = function MlImageMarkerLayer(props) {
|
|
1654
|
+
var mapHook = useMap({
|
|
1655
|
+
mapId: props.mapId,
|
|
1656
|
+
waitForLayer: props.insertBeforeLayer
|
|
1657
|
+
});
|
|
1658
|
+
var layerInitializedRef = useRef(false);
|
|
1659
|
+
var imageIdRef = useRef(props.imageId || "img_" + new Date().getTime());
|
|
1660
|
+
var layerId = useRef(props.layerId || "MlImageMarkerLayer-" + mapHook.componentId);
|
|
1661
|
+
useEffect(function () {
|
|
1662
|
+
if (!mapHook.mapIsReady || mapHook.map && !mapHook.map.getLayer(layerId.current) || !props.options) return; // the MapLibre-gl instance (mapContext.map) is accessible here
|
|
1608
1663
|
// initialize the layer and add it to the MapLibre-gl instance or do something else with it
|
|
1609
1664
|
|
|
1610
1665
|
var key;
|
|
1611
1666
|
|
|
1612
1667
|
if (props.options.layout) {
|
|
1613
1668
|
for (key in props.options.layout) {
|
|
1614
|
-
|
|
1669
|
+
mapHook.map.setLayoutProperty(layerId.current, key, props.options.layout[key]);
|
|
1615
1670
|
}
|
|
1616
1671
|
}
|
|
1617
1672
|
|
|
1618
1673
|
if (props.options.paint) {
|
|
1619
1674
|
for (key in props.options.paint) {
|
|
1620
|
-
|
|
1675
|
+
mapHook.map.setPaintProperty(layerId.current, key, props.options.paint[key]);
|
|
1621
1676
|
}
|
|
1622
1677
|
}
|
|
1623
|
-
}, [props.options, layerId.current,
|
|
1678
|
+
}, [props.options, layerId.current, props.mapId]);
|
|
1624
1679
|
var addLayer = useCallback(function () {
|
|
1625
1680
|
var tmpOptions = _objectSpread2({
|
|
1626
1681
|
id: layerId.current,
|
|
@@ -1628,180 +1683,531 @@ var MlImageMarkerLayer = function MlImageMarkerLayer(props) {
|
|
|
1628
1683
|
}, props.options);
|
|
1629
1684
|
|
|
1630
1685
|
tmpOptions.layout["icon-image"] = imageIdRef.current;
|
|
1631
|
-
|
|
1632
|
-
}, [props]);
|
|
1686
|
+
mapHook.map.addLayer(tmpOptions, props.insertBeforeLayer, mapHook.componentId);
|
|
1687
|
+
}, [props, mapHook.mapIsReady, mapHook.map]);
|
|
1633
1688
|
useEffect(function () {
|
|
1634
|
-
if (!props.options || !
|
|
1635
|
-
// initialize the layer and add it to the MapLibre-gl instance or do something else with it
|
|
1636
|
-
|
|
1637
|
-
mapRef.current = mapContext.getMap(props.mapId);
|
|
1689
|
+
if (!props.options || !mapHook.mapIsReady || layerInitializedRef.current) return;
|
|
1638
1690
|
layerInitializedRef.current = true;
|
|
1639
1691
|
|
|
1640
1692
|
if (props.imgSrc) {
|
|
1641
|
-
|
|
1693
|
+
mapHook.map.loadImage(props.imgSrc, function (error, image) {
|
|
1642
1694
|
if (error) throw error;
|
|
1643
|
-
|
|
1695
|
+
mapHook.map.addImage(imageIdRef.current, image, mapHook.componentId);
|
|
1644
1696
|
});
|
|
1645
1697
|
}
|
|
1646
1698
|
|
|
1647
1699
|
addLayer();
|
|
1648
|
-
}, [
|
|
1700
|
+
}, [mapHook.mapIsReady, mapHook.map, addLayer, props]);
|
|
1649
1701
|
useEffect(function () {
|
|
1650
|
-
if (!
|
|
1702
|
+
if (!mapHook.mapIsReady || mapHook.map && !mapHook.map.getLayer(layerId.current) || !props.options) {
|
|
1651
1703
|
return;
|
|
1652
|
-
}
|
|
1653
|
-
// initialize the layer and add it to the MapLibre-gl instance or do something else with it
|
|
1654
|
-
|
|
1704
|
+
}
|
|
1655
1705
|
|
|
1656
|
-
|
|
1657
|
-
}, [props.options.source.data,
|
|
1706
|
+
mapHook.map.getSource(layerId.current).setData(props.options.source.data);
|
|
1707
|
+
}, [props.options.source.data, props]);
|
|
1658
1708
|
return /*#__PURE__*/React__default.createElement(React__default.Fragment, null);
|
|
1659
1709
|
};
|
|
1660
1710
|
|
|
1661
|
-
|
|
1662
|
-
|
|
1663
|
-
function SvgRotateRight(props) {
|
|
1664
|
-
return /*#__PURE__*/createElement("svg", _extends({
|
|
1665
|
-
width: "39.675098mm",
|
|
1666
|
-
height: "104.27064mm",
|
|
1667
|
-
viewBox: "0 0 39.675098 104.27064"
|
|
1668
|
-
}, props), /*#__PURE__*/createElement("g", {
|
|
1669
|
-
transform: "translate(-86.019554,-58.032633)"
|
|
1670
|
-
}, /*#__PURE__*/createElement("path", {
|
|
1671
|
-
style: {
|
|
1672
|
-
strokeWidth: 0.744756
|
|
1673
|
-
},
|
|
1674
|
-
d: "m 442.74023,219.33594 -117.62695,32.32422 54.71094,31.12304 c -21.99397,41.5931 -32.8507,84.88283 -38.33008,127.89649 -6.86182,50.94051 -5.95715,103.99765 20.23828,155.46484 5.97246,11.72776 13.65817,23.59773 24.38867,35.06641 2.6597,2.84073 5.65602,5.75455 9.12891,8.68164 0.87557,0.7378 1.85363,1.52609 2.95117,2.35547 0.29669,0.22563 0.63616,0.47742 1.02149,0.75586 l 0.58203,0.42578 34.57812,-15.12305 -0.33789,-0.2207 c -0.0265,-0.0151 -0.0842,-0.0587 -0.18359,-0.13086 -0.46723,-0.34885 -0.9819,-0.76796 -1.56055,-1.25 -2.29757,-1.91343 -4.46539,-4.04643 -6.64062,-6.33985 -8.80052,-9.27114 -15.30333,-19.4993 -20.83985,-30.13867 -24.42289,-46.90715 -24.77465,-97.03535 -18.58008,-146.68164 4.94388,-37.37493 13.65299,-74.4847 30.20508,-109.92969 l 58.6211,33.34766 z",
|
|
1675
|
-
transform: "scale(0.26458333)"
|
|
1676
|
-
})));
|
|
1677
|
-
}
|
|
1678
|
-
|
|
1679
|
-
var _g;
|
|
1680
|
-
|
|
1681
|
-
function _extends$1() { _extends$1 = 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$1.apply(this, arguments); }
|
|
1682
|
-
|
|
1683
|
-
function SvgRotateLeft(props) {
|
|
1684
|
-
return /*#__PURE__*/createElement("svg", _extends$1({
|
|
1685
|
-
width: "39.675098mm",
|
|
1686
|
-
height: "104.27064mm",
|
|
1687
|
-
viewBox: "0 0 39.675098 104.27064"
|
|
1688
|
-
}, props), _g || (_g = /*#__PURE__*/createElement("g", {
|
|
1689
|
-
transform: "translate(-86.019554,-58.032633)"
|
|
1690
|
-
}, /*#__PURE__*/createElement("path", {
|
|
1691
|
-
d: "m 94.572523,58.032633 31.122127,8.55245 -14.4756,8.234638 c 5.81924,11.004841 8.69175,22.458582 10.1415,33.839279 1.81552,13.47801 1.57616,27.51604 -5.35471,41.13341 -1.58021,3.10296 -3.61373,6.24356 -6.45284,9.27798 -0.70371,0.75161 -1.49649,1.52256 -2.41535,2.29702 -0.23167,0.19521 -0.49044,0.40378 -0.78083,0.62322 -0.0785,0.0597 -0.16832,0.12632 -0.27027,0.19999 l -0.154,0.11265 -9.148793,-4.00131 0.0894,-0.0584 c 0.007,-0.004 0.02228,-0.0155 0.04857,-0.0346 0.123621,-0.0923 0.259794,-0.20319 0.412895,-0.33073 0.607899,-0.50626 1.181468,-1.07062 1.756997,-1.67742 2.328481,-2.45299 4.049011,-5.15919 5.513881,-7.97419 6.46189,-12.41085 6.55496,-25.67394 4.91598,-38.80952 -1.30807,-9.888781 -3.61235,-19.707408 -7.99176,-29.085561 l -15.510171,8.823235 z"
|
|
1692
|
-
}))));
|
|
1693
|
-
}
|
|
1694
|
-
|
|
1695
|
-
var _g$1;
|
|
1696
|
-
|
|
1697
|
-
function _extends$2() { _extends$2 = 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$2.apply(this, arguments); }
|
|
1698
|
-
|
|
1699
|
-
function SvgNeedle(props) {
|
|
1700
|
-
return /*#__PURE__*/createElement("svg", _extends$2({
|
|
1701
|
-
width: "75.967445mm",
|
|
1702
|
-
height: "234.71339mm",
|
|
1703
|
-
viewBox: "0 0 75.967445 234.71339"
|
|
1704
|
-
}, props), _g$1 || (_g$1 = /*#__PURE__*/createElement("g", {
|
|
1705
|
-
transform: "translate(-76.705281,-29.77268)"
|
|
1706
|
-
}, /*#__PURE__*/createElement("path", {
|
|
1707
|
-
d: "m 114.68901,29.77268 37.98372,117.3567 H 76.705281 Z"
|
|
1708
|
-
}), /*#__PURE__*/createElement("path", {
|
|
1709
|
-
d: "m 114.68901,264.48608 37.98372,-117.3567 H 76.705281 Z"
|
|
1710
|
-
}))));
|
|
1711
|
-
}
|
|
1712
|
-
|
|
1713
|
-
function _EMOTION_STRINGIFIED_CSS_ERROR__() { return "You have tried to stringify object returned from `css` function. It isn't supposed to be used directly (e.g. as value of the `className` prop), but rather handed to emotion so it can handle it (e.g. as value of `css` prop)."; }
|
|
1714
|
-
|
|
1715
|
-
var NeedleButton = _styled("div", process.env.NODE_ENV === "production" ? {
|
|
1716
|
-
target: "e12lzm5x2"
|
|
1717
|
-
} : {
|
|
1718
|
-
target: "e12lzm5x2",
|
|
1719
|
-
label: "NeedleButton"
|
|
1720
|
-
})(process.env.NODE_ENV === "production" ? {
|
|
1721
|
-
name: "1204o9",
|
|
1722
|
-
styles: "width:40%;display:flex;align-items:center;&:hover{cursor:pointer;}path{filter:drop-shadow(0px 0px 15px rgba(0, 0, 0, 0.2));}&:hover path{filter:drop-shadow(0px 0px 13px rgba(255, 255, 255, 0.1));}path:nth-of-type(2){fill:#343434;}&:hover path:nth-of-type(2){fill:#434343;}path:nth-of-type(1){fill:#e90318;}&:hover path:nth-of-type(1){fill:#fb4052;}"
|
|
1723
|
-
} : {
|
|
1724
|
-
name: "1204o9",
|
|
1725
|
-
styles: "width:40%;display:flex;align-items:center;&:hover{cursor:pointer;}path{filter:drop-shadow(0px 0px 15px rgba(0, 0, 0, 0.2));}&:hover path{filter:drop-shadow(0px 0px 13px rgba(255, 255, 255, 0.1));}path:nth-of-type(2){fill:#343434;}&:hover path:nth-of-type(2){fill:#434343;}path:nth-of-type(1){fill:#e90318;}&:hover path:nth-of-type(1){fill:#fb4052;}",
|
|
1726
|
-
map: "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIk1sTmF2aWdhdGlvbkNvbXBhc3MuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBYStCIiwiZmlsZSI6Ik1sTmF2aWdhdGlvbkNvbXBhc3MuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgUmVhY3QsIHsgdXNlU3RhdGUsIHVzZVJlZiwgdXNlRWZmZWN0LCB1c2VDb250ZXh0IH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5cbmltcG9ydCB7IE1hcENvbnRleHQgfSBmcm9tIFwiQG1hcGNvbXBvbmVudHMvcmVhY3QtY29yZVwiO1xuaW1wb3J0IHsgdjQgYXMgdXVpZHY0IH0gZnJvbSBcInV1aWRcIjtcblxuaW1wb3J0IHsgUmVhY3RDb21wb25lbnQgYXMgUm90YXRlUmlnaHRJY29uIH0gZnJvbSBcIi4vYXNzZXRzL3JvdGF0ZV9yaWdodC5zdmdcIjtcbmltcG9ydCB7IFJlYWN0Q29tcG9uZW50IGFzIFJvdGF0ZUxlZnRJY29uIH0gZnJvbSBcIi4vYXNzZXRzL3JvdGF0ZV9sZWZ0LnN2Z1wiO1xuaW1wb3J0IHsgUmVhY3RDb21wb25lbnQgYXMgTmVlZGxlSWNvbiB9IGZyb20gXCIuL2Fzc2V0cy9uZWVkbGUuc3ZnXCI7XG5cbmltcG9ydCBzdHlsZWQgZnJvbSBcIkBlbW90aW9uL3N0eWxlZFwiO1xuaW1wb3J0IHsgY3NzIH0gZnJvbSBcIkBlbW90aW9uL2Nzc1wiO1xuXG5jb25zdCBOZWVkbGVCdXR0b24gPSBzdHlsZWQuZGl2YFxuICB3aWR0aDogNDAlO1xuICBkaXNwbGF5OiBmbGV4O1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuXG4gICY6aG92ZXIge1xuICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgfVxuICBwYXRoIHtcbiAgICBmaWx0ZXI6IGRyb3Atc2hhZG93KDBweCAwcHggMTVweCByZ2JhKDAsIDAsIDAsIDAuMikpO1xuICB9XG4gICY6aG92ZXIgcGF0aCB7XG4gICAgZmlsdGVyOiBkcm9wLXNoYWRvdygwcHggMHB4IDEzcHggcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjEpKTtcbiAgfVxuICBwYXRoOm50aC1vZi10eXBlKDIpIHtcbiAgICBmaWxsOiAjMzQzNDM0O1xuICB9XG4gICY6aG92ZXIgcGF0aDpudGgtb2YtdHlwZSgyKSB7XG4gICAgZmlsbDogIzQzNDM0MztcbiAgfVxuICBwYXRoOm50aC1vZi10eXBlKDEpIHtcbiAgICBmaWxsOiAjZTkwMzE4O1xuICB9XG4gICY6aG92ZXIgcGF0aDpudGgtb2YtdHlwZSgxKSB7XG4gICAgZmlsbDogI2ZiNDA1MjtcbiAgfVxuYDtcbmNvbnN0IE5lZWRsZUNvbnRhaW5lciA9IHN0eWxlZC5kaXZgXG4gIHBvaW50ZXItZXZlbnRzOiBub25lO1xuICBkaXNwbGF5OiBmbGV4O1xuICB6LWluZGV4OiAxMDAyO1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG5cbiAgbWFyZ2luLWxlZnQ6IC0zMCU7XG4gIHBhdGg6bnRoLW9mLXR5cGUoMikge1xuICB9XG4gIHN2ZyBnIHtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgtNzYuNzA1MywgLTI5Ljc3MjcpIHNjYWxlKDIsIDEpO1xuICB9XG4gIHN2ZyB7XG4gICAgei1pbmRleDogOTk5MDtcbiAgICBoZWlnaHQ6IDE1MHB4O1xuICAgIHdpZHRoOiAyMDBweDtcbiAgfVxuYDtcbmNvbnN0IFJvdGF0ZUJ1dHRvbiA9IHN0eWxlZC5kaXZgXG4gIHdpZHRoOiAzMCU7XG4gIG1hcmdpbi10b3A6IDE0cHg7XG4gIHotaW5kZXg6IDk5OTtcbiAgZGlzcGxheTogZmxleDtcblxuICBzdmc6aG92ZXIge1xuICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgfVxuICBzdmc6aG92ZXIgcGF0aCB7XG4gICAgZmlsbDogI2VjZWNlYztcbiAgICBmaWx0ZXI6IGRyb3Atc2hhZG93KDBweCAwcHggNXB4IHJnYmEoMCwgMCwgMCwgMC4xKSk7XG4gIH1cbiAgcGF0aCB7XG4gICAgZmlsbDogI2JiYjtcbiAgfVxuICBzdmcge1xuICAgIHRyYW5zZm9ybTogc2NhbGUoMC42KTtcbiAgICB6LWluZGV4OiA5OTkwO1xuICAgIGhlaWdodDogMTcycHg7XG4gIH1cbmA7XG5cbi8qKlxuICogTmF2aWdhdGlvbiBjb21wb25lbnQgdGhhdCBkaXNwbGF5cyBhIGNvbXBhc3MgY29tcG9uZW50IHdoaWNoIGluZGljYXRlcyB0aGUgY3VycmVudCBvcmlhbnRhdGlvbiBvZiB0aGUgbWFwIGl0IGlzIHJlZ2lzdGVyZWQgZm9yIGFuZCBvZmZlcnMgY29udHJvbHMgdG8gdHVybiB0aGUgYmVhcmluZyA5MMKwIGxlZnQvcmlnaHQgb3IgcmVzZXQgbm9ydGggdG8gcG9pbnQgdXAuXG4gKlxuICogQWxsIHN0eWxlIHByb3BzIGFyZSBhcHBsaWVkIHVzaW5nIEBlbW90aW9uL2NzcyB0byBhbGxvdyBtb3JlIGNvbXBsZXggY3NzIHNlbGVjdG9ycy5cbiAqXG4gKiBAY29tcG9uZW50XG4gKi9cbmNvbnN0IE1sTmF2aWdhdGlvbkNvbXBhc3MgPSAocHJvcHMpID0+IHtcbiAgLy8gVXNlIGEgdXNlUmVmIGhvb2sgdG8gcmVmZXJlbmNlIHRoZSBsYXllciBvYmplY3QgdG8gYmUgYWJsZSB0byBhY2Nlc3MgaXQgbGF0ZXIgaW5zaWRlIHVzZUVmZmVjdCBob29rc1xuICBjb25zdCBtYXBDb250ZXh0ID0gdXNlQ29udGV4dChNYXBDb250ZXh0KTtcblxuICBjb25zdCBpbml0aWFsaXplZFJlZiA9IHVzZVJlZihmYWxzZSk7XG4gIGNvbnN0IG1hcFJlZiA9IHVzZVJlZih1bmRlZmluZWQpO1xuICBjb25zdCBjb21wb25lbnRJZCA9IHVzZVJlZigocHJvcHMuaWRQcmVmaXggPyBwcm9wcy5pZFByZWZpeCA6IFwiTWxOYXZpZ2F0aW9uQ29tcGFzcy1cIikgKyB1dWlkdjQoKSk7XG5cbiAgY29uc3QgW2JlYXJpbmcsIHNldEJlYXJpbmddID0gdXNlU3RhdGUoMCk7XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBsZXQgX2NvbXBvbmVudElkID0gY29tcG9uZW50SWQuY3VycmVudDtcblxuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICAvLyBUaGlzIGlzIHRoZSBjbGVhbnVwIGZ1bmN0aW9uLCBpdCBpcyBjYWxsZWQgd2hlbiB0aGlzIHJlYWN0IGNvbXBvbmVudCBpcyByZW1vdmVkIGZyb20gcmVhY3QtZG9tXG5cbiAgICAgIGlmIChtYXBSZWYuY3VycmVudCkge1xuICAgICAgICBtYXBSZWYuY3VycmVudC5jbGVhbnVwKF9jb21wb25lbnRJZCk7XG4gICAgICAgIG1hcFJlZi5jdXJyZW50ID0gdW5kZWZpbmVkO1xuICAgICAgfVxuICAgICAgaW5pdGlhbGl6ZWRSZWYuY3VycmVudCA9IGZhbHNlO1xuICAgIH07XG4gIH0sIFtdKTtcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmICghbWFwQ29udGV4dC5tYXBFeGlzdHMocHJvcHMubWFwSWQpIHx8IGluaXRpYWxpemVkUmVmLmN1cnJlbnQpIHJldHVybjtcbiAgICBpbml0aWFsaXplZFJlZi5jdXJyZW50ID0gdHJ1ZTtcbiAgICBtYXBSZWYuY3VycmVudCA9IG1hcENvbnRleHQuZ2V0TWFwKHByb3BzLm1hcElkKTtcblxuICAgIG1hcFJlZi5jdXJyZW50Lm9uKFxuICAgICAgXCJyb3RhdGVcIixcbiAgICAgIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgc2V0QmVhcmluZyhNYXRoLnJvdW5kKG1hcFJlZi5jdXJyZW50LmdldEJlYXJpbmcoKSkpO1xuICAgICAgfSxcbiAgICAgIGNvbXBvbmVudElkLmN1cnJlbnRcbiAgICApO1xuICAgIHNldEJlYXJpbmcoTWF0aC5yb3VuZChtYXBSZWYuY3VycmVudC5nZXRCZWFyaW5nKCkpKTtcbiAgfSwgW21hcENvbnRleHQubWFwSWRzLCBtYXBDb250ZXh0LCBwcm9wcy5tYXBJZF0pO1xuXG4gIHJldHVybiAoXG4gICAgPD5cbiAgICAgIDxkaXZcbiAgICAgICAgY2xhc3NOYW1lPXtjc3Moe1xuICAgICAgICAgIHpJbmRleDogMTAwMCxcbiAgICAgICAgICB0b3A6IDAsXG4gICAgICAgICAgcG9zaXRpb246IFwiYWJzb2x1dGVcIixcbiAgICAgICAgICAuLi5wcm9wcy5zdHlsZSxcbiAgICAgICAgfSl9XG4gICAgICA+XG4gICAgICAgIDxkaXZcbiAgICAgICAgICBjbGFzc05hbWU9e2Nzcyh7XG4gICAgICAgICAgICBwb3NpdGlvbjogXCJhYnNvbHV0ZVwiLFxuICAgICAgICAgICAgYm9yZGVyOiBcIjEwcHggc29saWQgI2JjYmNiY1wiLFxuICAgICAgICAgICAgYmFja2dyb3VuZENvbG9yOiBcIiM3MTcxNzFcIixcbiAgICAgICAgICAgIGJhY2tncm91bmQ6IFwicmFkaWFsLWdyYWRpZW50KCM3MTcxNzEsICM0MTQxNDEpXCIsXG4gICAgICAgICAgICBoZWlnaHQ6IFwiMjAwcHhcIixcbiAgICAgICAgICAgIHdpZHRoOiBcIjIwMHB4XCIsXG4gICAgICAgICAgICBib3JkZXJSYWRpdXM6IFwiNTAlXCIsXG4gICAgICAgICAgICBkaXNwbGF5OiBcImZsZXhcIixcbiAgICAgICAgICAgIGp1c3RpZnlDb250ZW50OiBcImNlbnRlclwiLFxuICAgICAgICAgICAgdHJhbnNmb3JtOiBcInNjYWxlKDAuMikgdHJhbnNsYXRlWCgtNDQ4cHgpIHRyYW5zbGF0ZVkoLTQ0OHB4KVwiLFxuICAgICAgICAgICAgLi4ucHJvcHMuYmFja2dyb3VuZFN0eWxlLFxuICAgICAgICAgIH0pfVxuICAgICAgICA+XG4gICAgICAgICAgPFJvdGF0ZUJ1dHRvbiBjbGFzc05hbWU9e2Nzcyh7IC4uLnByb3BzLnJvdGF0ZVJpZ2h0U3R5bGUgfSl9PlxuICAgICAgICAgICAgPFJvdGF0ZVJpZ2h0SWNvblxuICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB7XG4gICAgICAgICAgICAgICAgbGV0IGJlYXJpbmcgPSBNYXRoLnJvdW5kKG1hcFJlZi5jdXJyZW50Py5nZXRCZWFyaW5nKCkpO1xuICAgICAgICAgICAgICAgIGxldCByZXN0ID0gTWF0aC5yb3VuZChiZWFyaW5nICUgOTApO1xuICAgICAgICAgICAgICAgIGlmIChiZWFyaW5nID4gMCkge1xuICAgICAgICAgICAgICAgICAgcmVzdCA9IDkwIC0gcmVzdDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKHJlc3QgPT09IDApIHtcbiAgICAgICAgICAgICAgICAgIHJlc3QgPSA5MDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgbWFwUmVmLmN1cnJlbnQ/LnNldEJlYXJpbmcoTWF0aC5yb3VuZChiZWFyaW5nICsgTWF0aC5hYnMocmVzdCkpKTtcbiAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgID48L1JvdGF0ZVJpZ2h0SWNvbj5cbiAgICAgICAgICA8L1JvdGF0ZUJ1dHRvbj5cbiAgICAgICAgICA8TmVlZGxlQnV0dG9uXG4gICAgICAgICAgICBjbGFzc05hbWU9e2Nzcyh7IC4uLnByb3BzLm5lZWRsZVN0eWxlIH0pfVxuICAgICAgICAgICAgb25DbGljaz17KCkgPT4ge1xuICAgICAgICAgICAgICBtYXBSZWYuY3VycmVudD8uc2V0QmVhcmluZygwKTtcbiAgICAgICAgICAgIH19XG4gICAgICAgICAgPlxuICAgICAgICAgICAgPE5lZWRsZUNvbnRhaW5lclxuICAgICAgICAgICAgICBzdHlsZT17e1xuICAgICAgICAgICAgICAgIHRyYW5zZm9ybTogXCJyb3RhdGUoXCIgKyBiZWFyaW5nICsgXCJkZWcpXCIsXG4gICAgICAgICAgICAgIH19XG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxOZWVkbGVJY29uIC8+XG4gICAgICAgICAgICA8L05lZWRsZUNvbnRhaW5lcj5cbiAgICAgICAgICA8L05lZWRsZUJ1dHRvbj5cbiAgICAgICAgICA8Um90YXRlQnV0dG9uIGNsYXNzTmFtZT17Y3NzKHsgLi4ucHJvcHMucm90YXRlTGVmdFN0eWxlIH0pfT5cbiAgICAgICAgICAgIDxSb3RhdGVMZWZ0SWNvblxuICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB7XG4gICAgICAgICAgICAgICAgbGV0IGJlYXJpbmcgPSBNYXRoLnJvdW5kKG1hcFJlZi5jdXJyZW50Py5nZXRCZWFyaW5nKCkpO1xuICAgICAgICAgICAgICAgIGxldCByZXN0ID0gTWF0aC5yb3VuZChiZWFyaW5nICUgOTApO1xuICAgICAgICAgICAgICAgIGlmIChiZWFyaW5nIDwgMCkge1xuICAgICAgICAgICAgICAgICAgcmVzdCA9IDkwICsgcmVzdDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKHJlc3QgPT09IDApIHtcbiAgICAgICAgICAgICAgICAgIHJlc3QgPSA5MDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgbWFwUmVmLmN1cnJlbnQ/LnNldEJlYXJpbmcoTWF0aC5yb3VuZChiZWFyaW5nIC0gTWF0aC5hYnMocmVzdCkpKTtcbiAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgID48L1JvdGF0ZUxlZnRJY29uPlxuICAgICAgICAgIDwvUm90YXRlQnV0dG9uPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvPlxuICApO1xufTtcblxuTWxOYXZpZ2F0aW9uQ29tcGFzcy5wcm9wVHlwZXMgPSB7XG4gIC8qKlxuICAgKiBDb21wb25lbnQgaWQgcHJlZml4XG4gICAqL1xuICBpZFByZWZpeDogUHJvcFR5cGVzLnN0cmluZyxcbiAgLyoqXG4gICAqIFN0eWxlIG9iamVjdCB0byBhZGp1c3QgY3NzIGRlZmluaXRpb25zIG9mIHRoZSBjb21wb25lbnQuXG4gICAqL1xuICBzdHlsZTogUHJvcFR5cGVzLm9iamVjdCxcbiAgLyoqXG4gICAqIFN0eWxlIG9iamVjdCB0byBhZGp1c3QgY3NzIGRlZmluaXRpb25zIG9mIHRoZSBiYWNrZ3JvdW5kLlxuICAgKi9cbiAgYmFja2dyb3VuZFN0eWxlOiBQcm9wVHlwZXMub2JqZWN0LFxuICAvKipcbiAgICogU3R5bGUgb2JqZWN0IHRvIGFkanVzdCBjc3MgZGVmaW5pdGlvbnMgb2YgdGhlIGNvbXBhc3MgbmVlZGxlLlxuICAgKi9cbiAgbmVlZGxlU3R5bGU6IFByb3BUeXBlcy5vYmplY3QsXG4gIC8qKlxuICAgKiBTdHlsZSBvYmplY3QgdG8gYWRqdXN0IGNzcyBkZWZpbml0aW9ucyBvZiB0aGUgcm90YXRlIHJpZ2h0IGJ1dHRvbi5cbiAgICovXG4gIHJvdGF0ZVJpZ2h0U3R5bGU6IFByb3BUeXBlcy5vYmplY3QsXG4gIC8qKlxuICAgKiBTdHlsZSBvYmplY3QgdG8gYWRqdXN0IGNzcyBkZWZpbml0aW9ucyBvZiB0aGUgcm90YXRlIGxlZnQgYnV0dG9uLlxuICAgKi9cbiAgcm90YXRlTGVmdFN0eWxlOiBQcm9wVHlwZXMub2JqZWN0LFxufTtcblxuZXhwb3J0IGRlZmF1bHQgTWxOYXZpZ2F0aW9uQ29tcGFzcztcbiJdfQ== */",
|
|
1727
|
-
toString: _EMOTION_STRINGIFIED_CSS_ERROR__
|
|
1728
|
-
});
|
|
1729
|
-
|
|
1730
|
-
var NeedleContainer = _styled("div", process.env.NODE_ENV === "production" ? {
|
|
1731
|
-
target: "e12lzm5x1"
|
|
1732
|
-
} : {
|
|
1733
|
-
target: "e12lzm5x1",
|
|
1734
|
-
label: "NeedleContainer"
|
|
1735
|
-
})(process.env.NODE_ENV === "production" ? {
|
|
1736
|
-
name: "1m8y6tb",
|
|
1737
|
-
styles: "pointer-events:none;display:flex;z-index:1002;position:absolute;align-items:center;margin-left:-30%;path:nth-of-type(2){}svg g{transform:translate(-76.7053, -29.7727) scale(2, 1);}svg{z-index:9990;height:150px;width:200px;}"
|
|
1738
|
-
} : {
|
|
1739
|
-
name: "1m8y6tb",
|
|
1740
|
-
styles: "pointer-events:none;display:flex;z-index:1002;position:absolute;align-items:center;margin-left:-30%;path:nth-of-type(2){}svg g{transform:translate(-76.7053, -29.7727) scale(2, 1);}svg{z-index:9990;height:150px;width:200px;}",
|
|
1741
|
-
map: "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIk1sTmF2aWdhdGlvbkNvbXBhc3MuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBd0NrQyIsImZpbGUiOiJNbE5hdmlnYXRpb25Db21wYXNzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFJlYWN0LCB7IHVzZVN0YXRlLCB1c2VSZWYsIHVzZUVmZmVjdCwgdXNlQ29udGV4dCB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuXG5pbXBvcnQgeyBNYXBDb250ZXh0IH0gZnJvbSBcIkBtYXBjb21wb25lbnRzL3JlYWN0LWNvcmVcIjtcbmltcG9ydCB7IHY0IGFzIHV1aWR2NCB9IGZyb20gXCJ1dWlkXCI7XG5cbmltcG9ydCB7IFJlYWN0Q29tcG9uZW50IGFzIFJvdGF0ZVJpZ2h0SWNvbiB9IGZyb20gXCIuL2Fzc2V0cy9yb3RhdGVfcmlnaHQuc3ZnXCI7XG5pbXBvcnQgeyBSZWFjdENvbXBvbmVudCBhcyBSb3RhdGVMZWZ0SWNvbiB9IGZyb20gXCIuL2Fzc2V0cy9yb3RhdGVfbGVmdC5zdmdcIjtcbmltcG9ydCB7IFJlYWN0Q29tcG9uZW50IGFzIE5lZWRsZUljb24gfSBmcm9tIFwiLi9hc3NldHMvbmVlZGxlLnN2Z1wiO1xuXG5pbXBvcnQgc3R5bGVkIGZyb20gXCJAZW1vdGlvbi9zdHlsZWRcIjtcbmltcG9ydCB7IGNzcyB9IGZyb20gXCJAZW1vdGlvbi9jc3NcIjtcblxuY29uc3QgTmVlZGxlQnV0dG9uID0gc3R5bGVkLmRpdmBcbiAgd2lkdGg6IDQwJTtcbiAgZGlzcGxheTogZmxleDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcblxuICAmOmhvdmVyIHtcbiAgICBjdXJzb3I6IHBvaW50ZXI7XG4gIH1cbiAgcGF0aCB7XG4gICAgZmlsdGVyOiBkcm9wLXNoYWRvdygwcHggMHB4IDE1cHggcmdiYSgwLCAwLCAwLCAwLjIpKTtcbiAgfVxuICAmOmhvdmVyIHBhdGgge1xuICAgIGZpbHRlcjogZHJvcC1zaGFkb3coMHB4IDBweCAxM3B4IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4xKSk7XG4gIH1cbiAgcGF0aDpudGgtb2YtdHlwZSgyKSB7XG4gICAgZmlsbDogIzM0MzQzNDtcbiAgfVxuICAmOmhvdmVyIHBhdGg6bnRoLW9mLXR5cGUoMikge1xuICAgIGZpbGw6ICM0MzQzNDM7XG4gIH1cbiAgcGF0aDpudGgtb2YtdHlwZSgxKSB7XG4gICAgZmlsbDogI2U5MDMxODtcbiAgfVxuICAmOmhvdmVyIHBhdGg6bnRoLW9mLXR5cGUoMSkge1xuICAgIGZpbGw6ICNmYjQwNTI7XG4gIH1cbmA7XG5jb25zdCBOZWVkbGVDb250YWluZXIgPSBzdHlsZWQuZGl2YFxuICBwb2ludGVyLWV2ZW50czogbm9uZTtcbiAgZGlzcGxheTogZmxleDtcbiAgei1pbmRleDogMTAwMjtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuXG4gIG1hcmdpbi1sZWZ0OiAtMzAlO1xuICBwYXRoOm50aC1vZi10eXBlKDIpIHtcbiAgfVxuICBzdmcgZyB7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoLTc2LjcwNTMsIC0yOS43NzI3KSBzY2FsZSgyLCAxKTtcbiAgfVxuICBzdmcge1xuICAgIHotaW5kZXg6IDk5OTA7XG4gICAgaGVpZ2h0OiAxNTBweDtcbiAgICB3aWR0aDogMjAwcHg7XG4gIH1cbmA7XG5jb25zdCBSb3RhdGVCdXR0b24gPSBzdHlsZWQuZGl2YFxuICB3aWR0aDogMzAlO1xuICBtYXJnaW4tdG9wOiAxNHB4O1xuICB6LWluZGV4OiA5OTk7XG4gIGRpc3BsYXk6IGZsZXg7XG5cbiAgc3ZnOmhvdmVyIHtcbiAgICBjdXJzb3I6IHBvaW50ZXI7XG4gIH1cbiAgc3ZnOmhvdmVyIHBhdGgge1xuICAgIGZpbGw6ICNlY2VjZWM7XG4gICAgZmlsdGVyOiBkcm9wLXNoYWRvdygwcHggMHB4IDVweCByZ2JhKDAsIDAsIDAsIDAuMSkpO1xuICB9XG4gIHBhdGgge1xuICAgIGZpbGw6ICNiYmI7XG4gIH1cbiAgc3ZnIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlKDAuNik7XG4gICAgei1pbmRleDogOTk5MDtcbiAgICBoZWlnaHQ6IDE3MnB4O1xuICB9XG5gO1xuXG4vKipcbiAqIE5hdmlnYXRpb24gY29tcG9uZW50IHRoYXQgZGlzcGxheXMgYSBjb21wYXNzIGNvbXBvbmVudCB3aGljaCBpbmRpY2F0ZXMgdGhlIGN1cnJlbnQgb3JpYW50YXRpb24gb2YgdGhlIG1hcCBpdCBpcyByZWdpc3RlcmVkIGZvciBhbmQgb2ZmZXJzIGNvbnRyb2xzIHRvIHR1cm4gdGhlIGJlYXJpbmcgOTDCsCBsZWZ0L3JpZ2h0IG9yIHJlc2V0IG5vcnRoIHRvIHBvaW50IHVwLlxuICpcbiAqIEFsbCBzdHlsZSBwcm9wcyBhcmUgYXBwbGllZCB1c2luZyBAZW1vdGlvbi9jc3MgdG8gYWxsb3cgbW9yZSBjb21wbGV4IGNzcyBzZWxlY3RvcnMuXG4gKlxuICogQGNvbXBvbmVudFxuICovXG5jb25zdCBNbE5hdmlnYXRpb25Db21wYXNzID0gKHByb3BzKSA9PiB7XG4gIC8vIFVzZSBhIHVzZVJlZiBob29rIHRvIHJlZmVyZW5jZSB0aGUgbGF5ZXIgb2JqZWN0IHRvIGJlIGFibGUgdG8gYWNjZXNzIGl0IGxhdGVyIGluc2lkZSB1c2VFZmZlY3QgaG9va3NcbiAgY29uc3QgbWFwQ29udGV4dCA9IHVzZUNvbnRleHQoTWFwQ29udGV4dCk7XG5cbiAgY29uc3QgaW5pdGlhbGl6ZWRSZWYgPSB1c2VSZWYoZmFsc2UpO1xuICBjb25zdCBtYXBSZWYgPSB1c2VSZWYodW5kZWZpbmVkKTtcbiAgY29uc3QgY29tcG9uZW50SWQgPSB1c2VSZWYoKHByb3BzLmlkUHJlZml4ID8gcHJvcHMuaWRQcmVmaXggOiBcIk1sTmF2aWdhdGlvbkNvbXBhc3MtXCIpICsgdXVpZHY0KCkpO1xuXG4gIGNvbnN0IFtiZWFyaW5nLCBzZXRCZWFyaW5nXSA9IHVzZVN0YXRlKDApO1xuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgbGV0IF9jb21wb25lbnRJZCA9IGNvbXBvbmVudElkLmN1cnJlbnQ7XG5cbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgLy8gVGhpcyBpcyB0aGUgY2xlYW51cCBmdW5jdGlvbiwgaXQgaXMgY2FsbGVkIHdoZW4gdGhpcyByZWFjdCBjb21wb25lbnQgaXMgcmVtb3ZlZCBmcm9tIHJlYWN0LWRvbVxuXG4gICAgICBpZiAobWFwUmVmLmN1cnJlbnQpIHtcbiAgICAgICAgbWFwUmVmLmN1cnJlbnQuY2xlYW51cChfY29tcG9uZW50SWQpO1xuICAgICAgICBtYXBSZWYuY3VycmVudCA9IHVuZGVmaW5lZDtcbiAgICAgIH1cbiAgICAgIGluaXRpYWxpemVkUmVmLmN1cnJlbnQgPSBmYWxzZTtcbiAgICB9O1xuICB9LCBbXSk7XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoIW1hcENvbnRleHQubWFwRXhpc3RzKHByb3BzLm1hcElkKSB8fCBpbml0aWFsaXplZFJlZi5jdXJyZW50KSByZXR1cm47XG4gICAgaW5pdGlhbGl6ZWRSZWYuY3VycmVudCA9IHRydWU7XG4gICAgbWFwUmVmLmN1cnJlbnQgPSBtYXBDb250ZXh0LmdldE1hcChwcm9wcy5tYXBJZCk7XG5cbiAgICBtYXBSZWYuY3VycmVudC5vbihcbiAgICAgIFwicm90YXRlXCIsXG4gICAgICBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHNldEJlYXJpbmcoTWF0aC5yb3VuZChtYXBSZWYuY3VycmVudC5nZXRCZWFyaW5nKCkpKTtcbiAgICAgIH0sXG4gICAgICBjb21wb25lbnRJZC5jdXJyZW50XG4gICAgKTtcbiAgICBzZXRCZWFyaW5nKE1hdGgucm91bmQobWFwUmVmLmN1cnJlbnQuZ2V0QmVhcmluZygpKSk7XG4gIH0sIFttYXBDb250ZXh0Lm1hcElkcywgbWFwQ29udGV4dCwgcHJvcHMubWFwSWRdKTtcblxuICByZXR1cm4gKFxuICAgIDw+XG4gICAgICA8ZGl2XG4gICAgICAgIGNsYXNzTmFtZT17Y3NzKHtcbiAgICAgICAgICB6SW5kZXg6IDEwMDAsXG4gICAgICAgICAgdG9wOiAwLFxuICAgICAgICAgIHBvc2l0aW9uOiBcImFic29sdXRlXCIsXG4gICAgICAgICAgLi4ucHJvcHMuc3R5bGUsXG4gICAgICAgIH0pfVxuICAgICAgPlxuICAgICAgICA8ZGl2XG4gICAgICAgICAgY2xhc3NOYW1lPXtjc3Moe1xuICAgICAgICAgICAgcG9zaXRpb246IFwiYWJzb2x1dGVcIixcbiAgICAgICAgICAgIGJvcmRlcjogXCIxMHB4IHNvbGlkICNiY2JjYmNcIixcbiAgICAgICAgICAgIGJhY2tncm91bmRDb2xvcjogXCIjNzE3MTcxXCIsXG4gICAgICAgICAgICBiYWNrZ3JvdW5kOiBcInJhZGlhbC1ncmFkaWVudCgjNzE3MTcxLCAjNDE0MTQxKVwiLFxuICAgICAgICAgICAgaGVpZ2h0OiBcIjIwMHB4XCIsXG4gICAgICAgICAgICB3aWR0aDogXCIyMDBweFwiLFxuICAgICAgICAgICAgYm9yZGVyUmFkaXVzOiBcIjUwJVwiLFxuICAgICAgICAgICAgZGlzcGxheTogXCJmbGV4XCIsXG4gICAgICAgICAgICBqdXN0aWZ5Q29udGVudDogXCJjZW50ZXJcIixcbiAgICAgICAgICAgIHRyYW5zZm9ybTogXCJzY2FsZSgwLjIpIHRyYW5zbGF0ZVgoLTQ0OHB4KSB0cmFuc2xhdGVZKC00NDhweClcIixcbiAgICAgICAgICAgIC4uLnByb3BzLmJhY2tncm91bmRTdHlsZSxcbiAgICAgICAgICB9KX1cbiAgICAgICAgPlxuICAgICAgICAgIDxSb3RhdGVCdXR0b24gY2xhc3NOYW1lPXtjc3MoeyAuLi5wcm9wcy5yb3RhdGVSaWdodFN0eWxlIH0pfT5cbiAgICAgICAgICAgIDxSb3RhdGVSaWdodEljb25cbiAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4ge1xuICAgICAgICAgICAgICAgIGxldCBiZWFyaW5nID0gTWF0aC5yb3VuZChtYXBSZWYuY3VycmVudD8uZ2V0QmVhcmluZygpKTtcbiAgICAgICAgICAgICAgICBsZXQgcmVzdCA9IE1hdGgucm91bmQoYmVhcmluZyAlIDkwKTtcbiAgICAgICAgICAgICAgICBpZiAoYmVhcmluZyA+IDApIHtcbiAgICAgICAgICAgICAgICAgIHJlc3QgPSA5MCAtIHJlc3Q7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmIChyZXN0ID09PSAwKSB7XG4gICAgICAgICAgICAgICAgICByZXN0ID0gOTA7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIG1hcFJlZi5jdXJyZW50Py5zZXRCZWFyaW5nKE1hdGgucm91bmQoYmVhcmluZyArIE1hdGguYWJzKHJlc3QpKSk7XG4gICAgICAgICAgICAgIH19XG4gICAgICAgICAgICA+PC9Sb3RhdGVSaWdodEljb24+XG4gICAgICAgICAgPC9Sb3RhdGVCdXR0b24+XG4gICAgICAgICAgPE5lZWRsZUJ1dHRvblxuICAgICAgICAgICAgY2xhc3NOYW1lPXtjc3MoeyAuLi5wcm9wcy5uZWVkbGVTdHlsZSB9KX1cbiAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHtcbiAgICAgICAgICAgICAgbWFwUmVmLmN1cnJlbnQ/LnNldEJlYXJpbmcoMCk7XG4gICAgICAgICAgICB9fVxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxOZWVkbGVDb250YWluZXJcbiAgICAgICAgICAgICAgc3R5bGU9e3tcbiAgICAgICAgICAgICAgICB0cmFuc2Zvcm06IFwicm90YXRlKFwiICsgYmVhcmluZyArIFwiZGVnKVwiLFxuICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8TmVlZGxlSWNvbiAvPlxuICAgICAgICAgICAgPC9OZWVkbGVDb250YWluZXI+XG4gICAgICAgICAgPC9OZWVkbGVCdXR0b24+XG4gICAgICAgICAgPFJvdGF0ZUJ1dHRvbiBjbGFzc05hbWU9e2Nzcyh7IC4uLnByb3BzLnJvdGF0ZUxlZnRTdHlsZSB9KX0+XG4gICAgICAgICAgICA8Um90YXRlTGVmdEljb25cbiAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4ge1xuICAgICAgICAgICAgICAgIGxldCBiZWFyaW5nID0gTWF0aC5yb3VuZChtYXBSZWYuY3VycmVudD8uZ2V0QmVhcmluZygpKTtcbiAgICAgICAgICAgICAgICBsZXQgcmVzdCA9IE1hdGgucm91bmQoYmVhcmluZyAlIDkwKTtcbiAgICAgICAgICAgICAgICBpZiAoYmVhcmluZyA8IDApIHtcbiAgICAgICAgICAgICAgICAgIHJlc3QgPSA5MCArIHJlc3Q7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmIChyZXN0ID09PSAwKSB7XG4gICAgICAgICAgICAgICAgICByZXN0ID0gOTA7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIG1hcFJlZi5jdXJyZW50Py5zZXRCZWFyaW5nKE1hdGgucm91bmQoYmVhcmluZyAtIE1hdGguYWJzKHJlc3QpKSk7XG4gICAgICAgICAgICAgIH19XG4gICAgICAgICAgICA+PC9Sb3RhdGVMZWZ0SWNvbj5cbiAgICAgICAgICA8L1JvdGF0ZUJ1dHRvbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8Lz5cbiAgKTtcbn07XG5cbk1sTmF2aWdhdGlvbkNvbXBhc3MucHJvcFR5cGVzID0ge1xuICAvKipcbiAgICogQ29tcG9uZW50IGlkIHByZWZpeFxuICAgKi9cbiAgaWRQcmVmaXg6IFByb3BUeXBlcy5zdHJpbmcsXG4gIC8qKlxuICAgKiBTdHlsZSBvYmplY3QgdG8gYWRqdXN0IGNzcyBkZWZpbml0aW9ucyBvZiB0aGUgY29tcG9uZW50LlxuICAgKi9cbiAgc3R5bGU6IFByb3BUeXBlcy5vYmplY3QsXG4gIC8qKlxuICAgKiBTdHlsZSBvYmplY3QgdG8gYWRqdXN0IGNzcyBkZWZpbml0aW9ucyBvZiB0aGUgYmFja2dyb3VuZC5cbiAgICovXG4gIGJhY2tncm91bmRTdHlsZTogUHJvcFR5cGVzLm9iamVjdCxcbiAgLyoqXG4gICAqIFN0eWxlIG9iamVjdCB0byBhZGp1c3QgY3NzIGRlZmluaXRpb25zIG9mIHRoZSBjb21wYXNzIG5lZWRsZS5cbiAgICovXG4gIG5lZWRsZVN0eWxlOiBQcm9wVHlwZXMub2JqZWN0LFxuICAvKipcbiAgICogU3R5bGUgb2JqZWN0IHRvIGFkanVzdCBjc3MgZGVmaW5pdGlvbnMgb2YgdGhlIHJvdGF0ZSByaWdodCBidXR0b24uXG4gICAqL1xuICByb3RhdGVSaWdodFN0eWxlOiBQcm9wVHlwZXMub2JqZWN0LFxuICAvKipcbiAgICogU3R5bGUgb2JqZWN0IHRvIGFkanVzdCBjc3MgZGVmaW5pdGlvbnMgb2YgdGhlIHJvdGF0ZSBsZWZ0IGJ1dHRvbi5cbiAgICovXG4gIHJvdGF0ZUxlZnRTdHlsZTogUHJvcFR5cGVzLm9iamVjdCxcbn07XG5cbmV4cG9ydCBkZWZhdWx0IE1sTmF2aWdhdGlvbkNvbXBhc3M7XG4iXX0= */",
|
|
1742
|
-
toString: _EMOTION_STRINGIFIED_CSS_ERROR__
|
|
1743
|
-
});
|
|
1711
|
+
var marker = "b556faa3bc6829d2.png";
|
|
1744
1712
|
|
|
1745
|
-
var RotateButton = _styled("div", process.env.NODE_ENV === "production" ? {
|
|
1746
|
-
target: "e12lzm5x0"
|
|
1747
|
-
} : {
|
|
1748
|
-
target: "e12lzm5x0",
|
|
1749
|
-
label: "RotateButton"
|
|
1750
|
-
})(process.env.NODE_ENV === "production" ? {
|
|
1751
|
-
name: "1j4uu1m",
|
|
1752
|
-
styles: "width:30%;margin-top:14px;z-index:999;display:flex;svg:hover{cursor:pointer;}svg:hover path{fill:#ececec;filter:drop-shadow(0px 0px 5px rgba(0, 0, 0, 0.1));}path{fill:#bbb;}svg{transform:scale(0.6);z-index:9990;height:172px;}"
|
|
1753
|
-
} : {
|
|
1754
|
-
name: "1j4uu1m",
|
|
1755
|
-
styles: "width:30%;margin-top:14px;z-index:999;display:flex;svg:hover{cursor:pointer;}svg:hover path{fill:#ececec;filter:drop-shadow(0px 0px 5px rgba(0, 0, 0, 0.1));}path{fill:#bbb;}svg{transform:scale(0.6);z-index:9990;height:172px;}",
|
|
1756
|
-
map: "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIk1sTmF2aWdhdGlvbkNvbXBhc3MuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBMkQrQiIsImZpbGUiOiJNbE5hdmlnYXRpb25Db21wYXNzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFJlYWN0LCB7IHVzZVN0YXRlLCB1c2VSZWYsIHVzZUVmZmVjdCwgdXNlQ29udGV4dCB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuXG5pbXBvcnQgeyBNYXBDb250ZXh0IH0gZnJvbSBcIkBtYXBjb21wb25lbnRzL3JlYWN0LWNvcmVcIjtcbmltcG9ydCB7IHY0IGFzIHV1aWR2NCB9IGZyb20gXCJ1dWlkXCI7XG5cbmltcG9ydCB7IFJlYWN0Q29tcG9uZW50IGFzIFJvdGF0ZVJpZ2h0SWNvbiB9IGZyb20gXCIuL2Fzc2V0cy9yb3RhdGVfcmlnaHQuc3ZnXCI7XG5pbXBvcnQgeyBSZWFjdENvbXBvbmVudCBhcyBSb3RhdGVMZWZ0SWNvbiB9IGZyb20gXCIuL2Fzc2V0cy9yb3RhdGVfbGVmdC5zdmdcIjtcbmltcG9ydCB7IFJlYWN0Q29tcG9uZW50IGFzIE5lZWRsZUljb24gfSBmcm9tIFwiLi9hc3NldHMvbmVlZGxlLnN2Z1wiO1xuXG5pbXBvcnQgc3R5bGVkIGZyb20gXCJAZW1vdGlvbi9zdHlsZWRcIjtcbmltcG9ydCB7IGNzcyB9IGZyb20gXCJAZW1vdGlvbi9jc3NcIjtcblxuY29uc3QgTmVlZGxlQnV0dG9uID0gc3R5bGVkLmRpdmBcbiAgd2lkdGg6IDQwJTtcbiAgZGlzcGxheTogZmxleDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcblxuICAmOmhvdmVyIHtcbiAgICBjdXJzb3I6IHBvaW50ZXI7XG4gIH1cbiAgcGF0aCB7XG4gICAgZmlsdGVyOiBkcm9wLXNoYWRvdygwcHggMHB4IDE1cHggcmdiYSgwLCAwLCAwLCAwLjIpKTtcbiAgfVxuICAmOmhvdmVyIHBhdGgge1xuICAgIGZpbHRlcjogZHJvcC1zaGFkb3coMHB4IDBweCAxM3B4IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4xKSk7XG4gIH1cbiAgcGF0aDpudGgtb2YtdHlwZSgyKSB7XG4gICAgZmlsbDogIzM0MzQzNDtcbiAgfVxuICAmOmhvdmVyIHBhdGg6bnRoLW9mLXR5cGUoMikge1xuICAgIGZpbGw6ICM0MzQzNDM7XG4gIH1cbiAgcGF0aDpudGgtb2YtdHlwZSgxKSB7XG4gICAgZmlsbDogI2U5MDMxODtcbiAgfVxuICAmOmhvdmVyIHBhdGg6bnRoLW9mLXR5cGUoMSkge1xuICAgIGZpbGw6ICNmYjQwNTI7XG4gIH1cbmA7XG5jb25zdCBOZWVkbGVDb250YWluZXIgPSBzdHlsZWQuZGl2YFxuICBwb2ludGVyLWV2ZW50czogbm9uZTtcbiAgZGlzcGxheTogZmxleDtcbiAgei1pbmRleDogMTAwMjtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuXG4gIG1hcmdpbi1sZWZ0OiAtMzAlO1xuICBwYXRoOm50aC1vZi10eXBlKDIpIHtcbiAgfVxuICBzdmcgZyB7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoLTc2LjcwNTMsIC0yOS43NzI3KSBzY2FsZSgyLCAxKTtcbiAgfVxuICBzdmcge1xuICAgIHotaW5kZXg6IDk5OTA7XG4gICAgaGVpZ2h0OiAxNTBweDtcbiAgICB3aWR0aDogMjAwcHg7XG4gIH1cbmA7XG5jb25zdCBSb3RhdGVCdXR0b24gPSBzdHlsZWQuZGl2YFxuICB3aWR0aDogMzAlO1xuICBtYXJnaW4tdG9wOiAxNHB4O1xuICB6LWluZGV4OiA5OTk7XG4gIGRpc3BsYXk6IGZsZXg7XG5cbiAgc3ZnOmhvdmVyIHtcbiAgICBjdXJzb3I6IHBvaW50ZXI7XG4gIH1cbiAgc3ZnOmhvdmVyIHBhdGgge1xuICAgIGZpbGw6ICNlY2VjZWM7XG4gICAgZmlsdGVyOiBkcm9wLXNoYWRvdygwcHggMHB4IDVweCByZ2JhKDAsIDAsIDAsIDAuMSkpO1xuICB9XG4gIHBhdGgge1xuICAgIGZpbGw6ICNiYmI7XG4gIH1cbiAgc3ZnIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlKDAuNik7XG4gICAgei1pbmRleDogOTk5MDtcbiAgICBoZWlnaHQ6IDE3MnB4O1xuICB9XG5gO1xuXG4vKipcbiAqIE5hdmlnYXRpb24gY29tcG9uZW50IHRoYXQgZGlzcGxheXMgYSBjb21wYXNzIGNvbXBvbmVudCB3aGljaCBpbmRpY2F0ZXMgdGhlIGN1cnJlbnQgb3JpYW50YXRpb24gb2YgdGhlIG1hcCBpdCBpcyByZWdpc3RlcmVkIGZvciBhbmQgb2ZmZXJzIGNvbnRyb2xzIHRvIHR1cm4gdGhlIGJlYXJpbmcgOTDCsCBsZWZ0L3JpZ2h0IG9yIHJlc2V0IG5vcnRoIHRvIHBvaW50IHVwLlxuICpcbiAqIEFsbCBzdHlsZSBwcm9wcyBhcmUgYXBwbGllZCB1c2luZyBAZW1vdGlvbi9jc3MgdG8gYWxsb3cgbW9yZSBjb21wbGV4IGNzcyBzZWxlY3RvcnMuXG4gKlxuICogQGNvbXBvbmVudFxuICovXG5jb25zdCBNbE5hdmlnYXRpb25Db21wYXNzID0gKHByb3BzKSA9PiB7XG4gIC8vIFVzZSBhIHVzZVJlZiBob29rIHRvIHJlZmVyZW5jZSB0aGUgbGF5ZXIgb2JqZWN0IHRvIGJlIGFibGUgdG8gYWNjZXNzIGl0IGxhdGVyIGluc2lkZSB1c2VFZmZlY3QgaG9va3NcbiAgY29uc3QgbWFwQ29udGV4dCA9IHVzZUNvbnRleHQoTWFwQ29udGV4dCk7XG5cbiAgY29uc3QgaW5pdGlhbGl6ZWRSZWYgPSB1c2VSZWYoZmFsc2UpO1xuICBjb25zdCBtYXBSZWYgPSB1c2VSZWYodW5kZWZpbmVkKTtcbiAgY29uc3QgY29tcG9uZW50SWQgPSB1c2VSZWYoKHByb3BzLmlkUHJlZml4ID8gcHJvcHMuaWRQcmVmaXggOiBcIk1sTmF2aWdhdGlvbkNvbXBhc3MtXCIpICsgdXVpZHY0KCkpO1xuXG4gIGNvbnN0IFtiZWFyaW5nLCBzZXRCZWFyaW5nXSA9IHVzZVN0YXRlKDApO1xuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgbGV0IF9jb21wb25lbnRJZCA9IGNvbXBvbmVudElkLmN1cnJlbnQ7XG5cbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgLy8gVGhpcyBpcyB0aGUgY2xlYW51cCBmdW5jdGlvbiwgaXQgaXMgY2FsbGVkIHdoZW4gdGhpcyByZWFjdCBjb21wb25lbnQgaXMgcmVtb3ZlZCBmcm9tIHJlYWN0LWRvbVxuXG4gICAgICBpZiAobWFwUmVmLmN1cnJlbnQpIHtcbiAgICAgICAgbWFwUmVmLmN1cnJlbnQuY2xlYW51cChfY29tcG9uZW50SWQpO1xuICAgICAgICBtYXBSZWYuY3VycmVudCA9IHVuZGVmaW5lZDtcbiAgICAgIH1cbiAgICAgIGluaXRpYWxpemVkUmVmLmN1cnJlbnQgPSBmYWxzZTtcbiAgICB9O1xuICB9LCBbXSk7XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoIW1hcENvbnRleHQubWFwRXhpc3RzKHByb3BzLm1hcElkKSB8fCBpbml0aWFsaXplZFJlZi5jdXJyZW50KSByZXR1cm47XG4gICAgaW5pdGlhbGl6ZWRSZWYuY3VycmVudCA9IHRydWU7XG4gICAgbWFwUmVmLmN1cnJlbnQgPSBtYXBDb250ZXh0LmdldE1hcChwcm9wcy5tYXBJZCk7XG5cbiAgICBtYXBSZWYuY3VycmVudC5vbihcbiAgICAgIFwicm90YXRlXCIsXG4gICAgICBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHNldEJlYXJpbmcoTWF0aC5yb3VuZChtYXBSZWYuY3VycmVudC5nZXRCZWFyaW5nKCkpKTtcbiAgICAgIH0sXG4gICAgICBjb21wb25lbnRJZC5jdXJyZW50XG4gICAgKTtcbiAgICBzZXRCZWFyaW5nKE1hdGgucm91bmQobWFwUmVmLmN1cnJlbnQuZ2V0QmVhcmluZygpKSk7XG4gIH0sIFttYXBDb250ZXh0Lm1hcElkcywgbWFwQ29udGV4dCwgcHJvcHMubWFwSWRdKTtcblxuICByZXR1cm4gKFxuICAgIDw+XG4gICAgICA8ZGl2XG4gICAgICAgIGNsYXNzTmFtZT17Y3NzKHtcbiAgICAgICAgICB6SW5kZXg6IDEwMDAsXG4gICAgICAgICAgdG9wOiAwLFxuICAgICAgICAgIHBvc2l0aW9uOiBcImFic29sdXRlXCIsXG4gICAgICAgICAgLi4ucHJvcHMuc3R5bGUsXG4gICAgICAgIH0pfVxuICAgICAgPlxuICAgICAgICA8ZGl2XG4gICAgICAgICAgY2xhc3NOYW1lPXtjc3Moe1xuICAgICAgICAgICAgcG9zaXRpb246IFwiYWJzb2x1dGVcIixcbiAgICAgICAgICAgIGJvcmRlcjogXCIxMHB4IHNvbGlkICNiY2JjYmNcIixcbiAgICAgICAgICAgIGJhY2tncm91bmRDb2xvcjogXCIjNzE3MTcxXCIsXG4gICAgICAgICAgICBiYWNrZ3JvdW5kOiBcInJhZGlhbC1ncmFkaWVudCgjNzE3MTcxLCAjNDE0MTQxKVwiLFxuICAgICAgICAgICAgaGVpZ2h0OiBcIjIwMHB4XCIsXG4gICAgICAgICAgICB3aWR0aDogXCIyMDBweFwiLFxuICAgICAgICAgICAgYm9yZGVyUmFkaXVzOiBcIjUwJVwiLFxuICAgICAgICAgICAgZGlzcGxheTogXCJmbGV4XCIsXG4gICAgICAgICAgICBqdXN0aWZ5Q29udGVudDogXCJjZW50ZXJcIixcbiAgICAgICAgICAgIHRyYW5zZm9ybTogXCJzY2FsZSgwLjIpIHRyYW5zbGF0ZVgoLTQ0OHB4KSB0cmFuc2xhdGVZKC00NDhweClcIixcbiAgICAgICAgICAgIC4uLnByb3BzLmJhY2tncm91bmRTdHlsZSxcbiAgICAgICAgICB9KX1cbiAgICAgICAgPlxuICAgICAgICAgIDxSb3RhdGVCdXR0b24gY2xhc3NOYW1lPXtjc3MoeyAuLi5wcm9wcy5yb3RhdGVSaWdodFN0eWxlIH0pfT5cbiAgICAgICAgICAgIDxSb3RhdGVSaWdodEljb25cbiAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4ge1xuICAgICAgICAgICAgICAgIGxldCBiZWFyaW5nID0gTWF0aC5yb3VuZChtYXBSZWYuY3VycmVudD8uZ2V0QmVhcmluZygpKTtcbiAgICAgICAgICAgICAgICBsZXQgcmVzdCA9IE1hdGgucm91bmQoYmVhcmluZyAlIDkwKTtcbiAgICAgICAgICAgICAgICBpZiAoYmVhcmluZyA+IDApIHtcbiAgICAgICAgICAgICAgICAgIHJlc3QgPSA5MCAtIHJlc3Q7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmIChyZXN0ID09PSAwKSB7XG4gICAgICAgICAgICAgICAgICByZXN0ID0gOTA7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIG1hcFJlZi5jdXJyZW50Py5zZXRCZWFyaW5nKE1hdGgucm91bmQoYmVhcmluZyArIE1hdGguYWJzKHJlc3QpKSk7XG4gICAgICAgICAgICAgIH19XG4gICAgICAgICAgICA+PC9Sb3RhdGVSaWdodEljb24+XG4gICAgICAgICAgPC9Sb3RhdGVCdXR0b24+XG4gICAgICAgICAgPE5lZWRsZUJ1dHRvblxuICAgICAgICAgICAgY2xhc3NOYW1lPXtjc3MoeyAuLi5wcm9wcy5uZWVkbGVTdHlsZSB9KX1cbiAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHtcbiAgICAgICAgICAgICAgbWFwUmVmLmN1cnJlbnQ/LnNldEJlYXJpbmcoMCk7XG4gICAgICAgICAgICB9fVxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxOZWVkbGVDb250YWluZXJcbiAgICAgICAgICAgICAgc3R5bGU9e3tcbiAgICAgICAgICAgICAgICB0cmFuc2Zvcm06IFwicm90YXRlKFwiICsgYmVhcmluZyArIFwiZGVnKVwiLFxuICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8TmVlZGxlSWNvbiAvPlxuICAgICAgICAgICAgPC9OZWVkbGVDb250YWluZXI+XG4gICAgICAgICAgPC9OZWVkbGVCdXR0b24+XG4gICAgICAgICAgPFJvdGF0ZUJ1dHRvbiBjbGFzc05hbWU9e2Nzcyh7IC4uLnByb3BzLnJvdGF0ZUxlZnRTdHlsZSB9KX0+XG4gICAgICAgICAgICA8Um90YXRlTGVmdEljb25cbiAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4ge1xuICAgICAgICAgICAgICAgIGxldCBiZWFyaW5nID0gTWF0aC5yb3VuZChtYXBSZWYuY3VycmVudD8uZ2V0QmVhcmluZygpKTtcbiAgICAgICAgICAgICAgICBsZXQgcmVzdCA9IE1hdGgucm91bmQoYmVhcmluZyAlIDkwKTtcbiAgICAgICAgICAgICAgICBpZiAoYmVhcmluZyA8IDApIHtcbiAgICAgICAgICAgICAgICAgIHJlc3QgPSA5MCArIHJlc3Q7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmIChyZXN0ID09PSAwKSB7XG4gICAgICAgICAgICAgICAgICByZXN0ID0gOTA7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIG1hcFJlZi5jdXJyZW50Py5zZXRCZWFyaW5nKE1hdGgucm91bmQoYmVhcmluZyAtIE1hdGguYWJzKHJlc3QpKSk7XG4gICAgICAgICAgICAgIH19XG4gICAgICAgICAgICA+PC9Sb3RhdGVMZWZ0SWNvbj5cbiAgICAgICAgICA8L1JvdGF0ZUJ1dHRvbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8Lz5cbiAgKTtcbn07XG5cbk1sTmF2aWdhdGlvbkNvbXBhc3MucHJvcFR5cGVzID0ge1xuICAvKipcbiAgICogQ29tcG9uZW50IGlkIHByZWZpeFxuICAgKi9cbiAgaWRQcmVmaXg6IFByb3BUeXBlcy5zdHJpbmcsXG4gIC8qKlxuICAgKiBTdHlsZSBvYmplY3QgdG8gYWRqdXN0IGNzcyBkZWZpbml0aW9ucyBvZiB0aGUgY29tcG9uZW50LlxuICAgKi9cbiAgc3R5bGU6IFByb3BUeXBlcy5vYmplY3QsXG4gIC8qKlxuICAgKiBTdHlsZSBvYmplY3QgdG8gYWRqdXN0IGNzcyBkZWZpbml0aW9ucyBvZiB0aGUgYmFja2dyb3VuZC5cbiAgICovXG4gIGJhY2tncm91bmRTdHlsZTogUHJvcFR5cGVzLm9iamVjdCxcbiAgLyoqXG4gICAqIFN0eWxlIG9iamVjdCB0byBhZGp1c3QgY3NzIGRlZmluaXRpb25zIG9mIHRoZSBjb21wYXNzIG5lZWRsZS5cbiAgICovXG4gIG5lZWRsZVN0eWxlOiBQcm9wVHlwZXMub2JqZWN0LFxuICAvKipcbiAgICogU3R5bGUgb2JqZWN0IHRvIGFkanVzdCBjc3MgZGVmaW5pdGlvbnMgb2YgdGhlIHJvdGF0ZSByaWdodCBidXR0b24uXG4gICAqL1xuICByb3RhdGVSaWdodFN0eWxlOiBQcm9wVHlwZXMub2JqZWN0LFxuICAvKipcbiAgICogU3R5bGUgb2JqZWN0IHRvIGFkanVzdCBjc3MgZGVmaW5pdGlvbnMgb2YgdGhlIHJvdGF0ZSBsZWZ0IGJ1dHRvbi5cbiAgICovXG4gIHJvdGF0ZUxlZnRTdHlsZTogUHJvcFR5cGVzLm9iamVjdCxcbn07XG5cbmV4cG9ydCBkZWZhdWx0IE1sTmF2aWdhdGlvbkNvbXBhc3M7XG4iXX0= */",
|
|
1757
|
-
toString: _EMOTION_STRINGIFIED_CSS_ERROR__
|
|
1758
|
-
});
|
|
1759
1713
|
/**
|
|
1760
|
-
*
|
|
1714
|
+
* Adds a button that makes the map follow the users GPS position using
|
|
1715
|
+
* navigator.geolocation.watchPosition if activated
|
|
1761
1716
|
*
|
|
1762
|
-
*
|
|
1717
|
+
* @param {object} props
|
|
1718
|
+
* @param {string} props.mapId Id of the target MapLibre instance in mapContext
|
|
1763
1719
|
*
|
|
1764
1720
|
* @component
|
|
1765
1721
|
*/
|
|
1766
1722
|
|
|
1767
|
-
|
|
1768
|
-
var MlNavigationCompass = function MlNavigationCompass(props) {
|
|
1723
|
+
var MlFollowGps = function MlFollowGps(props) {
|
|
1769
1724
|
// Use a useRef hook to reference the layer object to be able to access it later inside useEffect hooks
|
|
1770
1725
|
var mapContext = useContext(MapContext);
|
|
1726
|
+
|
|
1727
|
+
var _useState = useState(false),
|
|
1728
|
+
_useState2 = _slicedToArray(_useState, 2),
|
|
1729
|
+
isFollowed = _useState2[0],
|
|
1730
|
+
setIsFollowed = _useState2[1];
|
|
1731
|
+
|
|
1732
|
+
var _useState3 = useState(undefined),
|
|
1733
|
+
_useState4 = _slicedToArray(_useState3, 2),
|
|
1734
|
+
geoJson = _useState4[0],
|
|
1735
|
+
setGeoJson = _useState4[1];
|
|
1736
|
+
|
|
1737
|
+
var watchIdRef = useRef(undefined);
|
|
1738
|
+
|
|
1739
|
+
var _useState5 = useState(false),
|
|
1740
|
+
_useState6 = _slicedToArray(_useState5, 2),
|
|
1741
|
+
locationAccessDenied = _useState6[0],
|
|
1742
|
+
setLocationAccessDenied = _useState6[1];
|
|
1743
|
+
|
|
1771
1744
|
var initializedRef = useRef(false);
|
|
1772
1745
|
var mapRef = useRef(undefined);
|
|
1773
|
-
var componentId = useRef((props.idPrefix ? props.idPrefix : "
|
|
1746
|
+
var componentId = useRef((props.idPrefix ? props.idPrefix : "MlFollowGps-") + v4());
|
|
1774
1747
|
|
|
1775
|
-
var
|
|
1776
|
-
|
|
1777
|
-
|
|
1778
|
-
|
|
1748
|
+
var _useState7 = useState(),
|
|
1749
|
+
_useState8 = _slicedToArray(_useState7, 2),
|
|
1750
|
+
accuracyGeoJson = _useState8[0],
|
|
1751
|
+
setAccuracyGeoJson = _useState8[1];
|
|
1779
1752
|
|
|
1780
1753
|
useEffect(function () {
|
|
1781
1754
|
var _componentId = componentId.current;
|
|
1782
1755
|
return function () {
|
|
1783
1756
|
// This is the cleanup function, it is called when this react component is removed from react-dom
|
|
1757
|
+
// try to remove anything this component has added to the MapLibre-gl instance
|
|
1758
|
+
// e.g.: remove the layer
|
|
1759
|
+
// mapContext.getMap(props.mapId).removeLayer(layerRef.current);
|
|
1760
|
+
// check for the existence of map.style before calling getLayer or getSource
|
|
1784
1761
|
if (mapRef.current) {
|
|
1785
1762
|
mapRef.current.cleanup(_componentId);
|
|
1786
1763
|
mapRef.current = undefined;
|
|
1787
1764
|
}
|
|
1788
1765
|
|
|
1789
|
-
|
|
1766
|
+
if (watchIdRef.current) {
|
|
1767
|
+
initializedRef.current = false;
|
|
1768
|
+
navigator.geolocation.clearWatch(watchIdRef.current);
|
|
1769
|
+
watchIdRef.current = undefined;
|
|
1770
|
+
}
|
|
1790
1771
|
};
|
|
1791
1772
|
}, []);
|
|
1792
1773
|
useEffect(function () {
|
|
1793
|
-
if (!mapContext.mapExists(props.mapId) || initializedRef.current) return;
|
|
1774
|
+
if (!mapContext.mapExists(props.mapId) || initializedRef.current) return; // the MapLibre-gl instance (mapContext.getMap(props.mapId)) is accessible here
|
|
1775
|
+
// initialize the layer and add it to the MapLibre-gl instance or do something else with it
|
|
1776
|
+
|
|
1794
1777
|
initializedRef.current = true;
|
|
1795
1778
|
mapRef.current = mapContext.getMap(props.mapId);
|
|
1796
|
-
mapRef.current.
|
|
1797
|
-
setBearing(Math.round(mapRef.current.getBearing()));
|
|
1798
|
-
}, componentId.current);
|
|
1799
|
-
setBearing(Math.round(mapRef.current.getBearing()));
|
|
1779
|
+
mapRef.current.setCenter([7.132122000552613, 50.716405378037706]);
|
|
1800
1780
|
}, [mapContext.mapIds, mapContext, props.mapId]);
|
|
1801
|
-
|
|
1802
|
-
|
|
1803
|
-
|
|
1804
|
-
|
|
1781
|
+
|
|
1782
|
+
var getLocationSuccess = function getLocationSuccess(pos) {
|
|
1783
|
+
if (!mapRef.current) return;
|
|
1784
|
+
mapRef.current.setCenter([pos.coords.longitude, pos.coords.latitude]);
|
|
1785
|
+
var geoJsonPoint = point([pos.coords.longitude, pos.coords.latitude]);
|
|
1786
|
+
setGeoJson(geoJsonPoint);
|
|
1787
|
+
setAccuracyGeoJson(circle(geoJsonPoint, pos.coords.accuracy / 1000));
|
|
1788
|
+
};
|
|
1789
|
+
|
|
1790
|
+
var getLocationError = function getLocationError(err) {
|
|
1791
|
+
console.log("Access of user location denied");
|
|
1792
|
+
setLocationAccessDenied(true);
|
|
1793
|
+
};
|
|
1794
|
+
|
|
1795
|
+
return /*#__PURE__*/React__default.createElement(React__default.Fragment, null, isFollowed && geoJson && /*#__PURE__*/React__default.createElement(MlGeoJsonLayer, {
|
|
1796
|
+
geojson: accuracyGeoJson,
|
|
1797
|
+
type: "fill",
|
|
1798
|
+
paint: {
|
|
1799
|
+
"fill-color": "#ee7700",
|
|
1800
|
+
"fill-opacity": 0.5
|
|
1801
|
+
},
|
|
1802
|
+
insertBeforeLayer: "MlFollowGpsMarker"
|
|
1803
|
+
}), isFollowed && geoJson && /*#__PURE__*/React__default.createElement(MlImageMarkerLayer, {
|
|
1804
|
+
layerId: "MlFollowGpsMarker",
|
|
1805
|
+
options: {
|
|
1806
|
+
type: "symbol",
|
|
1807
|
+
source: {
|
|
1808
|
+
type: "geojson",
|
|
1809
|
+
data: geoJson
|
|
1810
|
+
},
|
|
1811
|
+
layout: {
|
|
1812
|
+
"icon-size": 0.1,
|
|
1813
|
+
"icon-offset": [0, -340]
|
|
1814
|
+
}
|
|
1815
|
+
},
|
|
1816
|
+
imgSrc: marker
|
|
1817
|
+
}), /*#__PURE__*/React__default.createElement(Button, {
|
|
1818
|
+
sx: _objectSpread2({
|
|
1819
|
+
zIndex: 1002,
|
|
1820
|
+
color: isFollowed ? props.onColor : props.offColor
|
|
1821
|
+
}, props.style),
|
|
1822
|
+
disabled: locationAccessDenied,
|
|
1823
|
+
onClick: function onClick() {
|
|
1824
|
+
if (isFollowed) {
|
|
1825
|
+
navigator.geolocation.clearWatch(watchIdRef.current);
|
|
1826
|
+
} else {
|
|
1827
|
+
watchIdRef.current = navigator.geolocation.watchPosition(getLocationSuccess, getLocationError);
|
|
1828
|
+
}
|
|
1829
|
+
|
|
1830
|
+
setIsFollowed(!isFollowed);
|
|
1831
|
+
}
|
|
1832
|
+
}, " ", /*#__PURE__*/React__default.createElement(RoomIcon, {
|
|
1833
|
+
sx: {
|
|
1834
|
+
fontSize: props.style.fontSize
|
|
1835
|
+
}
|
|
1836
|
+
}), " "));
|
|
1837
|
+
};
|
|
1838
|
+
|
|
1839
|
+
MlFollowGps.defaultProps = {
|
|
1840
|
+
mapId: undefined,
|
|
1841
|
+
style: {
|
|
1842
|
+
minWidth: "30px",
|
|
1843
|
+
minHeight: "30px",
|
|
1844
|
+
width: "30px",
|
|
1845
|
+
height: "30px",
|
|
1846
|
+
backgroundColor: "#414141",
|
|
1847
|
+
borderRadius: "23%",
|
|
1848
|
+
margin: 0.15,
|
|
1849
|
+
fontSize: "1.3em",
|
|
1850
|
+
":hover": {
|
|
1851
|
+
backgroundColor: "#515151",
|
|
1852
|
+
color: "#ececec"
|
|
1853
|
+
}
|
|
1854
|
+
},
|
|
1855
|
+
onColor: "#ececec",
|
|
1856
|
+
offColor: "#666"
|
|
1857
|
+
};
|
|
1858
|
+
MlFollowGps.propTypes = {
|
|
1859
|
+
/**
|
|
1860
|
+
* Id of the target MapLibre instance in mapContext
|
|
1861
|
+
*/
|
|
1862
|
+
mapId: PropTypes.string,
|
|
1863
|
+
|
|
1864
|
+
/**
|
|
1865
|
+
* CSS style object that is applied to the button component
|
|
1866
|
+
*/
|
|
1867
|
+
style: PropTypes.object,
|
|
1868
|
+
|
|
1869
|
+
/**
|
|
1870
|
+
* Active button font color
|
|
1871
|
+
*/
|
|
1872
|
+
onColor: PropTypes.string,
|
|
1873
|
+
|
|
1874
|
+
/**
|
|
1875
|
+
* Inactive button font color
|
|
1876
|
+
*/
|
|
1877
|
+
offColor: PropTypes.string
|
|
1878
|
+
};
|
|
1879
|
+
|
|
1880
|
+
var nmMap = {
|
|
1881
|
+
street: ["footway", "street", "road", "street_name", "residential", "path", "pedestrian", "road_reference", "road_reference_intl", "square", "place"],
|
|
1882
|
+
number: ["house_number", "street_number"],
|
|
1883
|
+
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"],
|
|
1884
|
+
zip: ["postcode", "partial_postcode"],
|
|
1885
|
+
state: ["state", "province", "state_code"]
|
|
1886
|
+
};
|
|
1887
|
+
|
|
1888
|
+
var nmConverter = function nmConverter(nmAddress) {
|
|
1889
|
+
var addressArr = [];
|
|
1890
|
+
|
|
1891
|
+
for (var key in nmMap) {
|
|
1892
|
+
nmMap[key].some(function (element) {
|
|
1893
|
+
if (nmAddress.hasOwnProperty(element)) {
|
|
1894
|
+
addressArr.push(nmAddress[element]);
|
|
1895
|
+
return true;
|
|
1896
|
+
}
|
|
1897
|
+
|
|
1898
|
+
return false;
|
|
1899
|
+
});
|
|
1900
|
+
}
|
|
1901
|
+
|
|
1902
|
+
return addressArr.join(", ");
|
|
1903
|
+
};
|
|
1904
|
+
|
|
1905
|
+
var toPixels = function toPixels(length) {
|
|
1906
|
+
var conversionFactor = 96;
|
|
1907
|
+
conversionFactor /= 25.4;
|
|
1908
|
+
return conversionFactor * length + "px";
|
|
1909
|
+
};
|
|
1910
|
+
|
|
1911
|
+
var createPdf = function createPdf(map, locationValue, setLoading) {
|
|
1912
|
+
setLoading(true);
|
|
1913
|
+
var width = 210;
|
|
1914
|
+
var height = 297; // Calculate pixel ratio
|
|
1915
|
+
|
|
1916
|
+
var actualPixelRatio = window.devicePixelRatio; // Create map container
|
|
1917
|
+
|
|
1918
|
+
var hidden = document.createElement("div");
|
|
1919
|
+
hidden.className = "hidden-map";
|
|
1920
|
+
document.body.appendChild(hidden);
|
|
1921
|
+
var container = document.createElement("div");
|
|
1922
|
+
container.style.width = toPixels(width);
|
|
1923
|
+
container.style.height = toPixels(height);
|
|
1924
|
+
hidden.appendChild(container); //Render map
|
|
1925
|
+
|
|
1926
|
+
var renderMap = new maplibregl$1.Map({
|
|
1927
|
+
container: container,
|
|
1928
|
+
center: map.getCenter(),
|
|
1929
|
+
zoom: map.getZoom(),
|
|
1930
|
+
bearing: map.getBearing(),
|
|
1931
|
+
pitch: map.getPitch(),
|
|
1932
|
+
interactive: false,
|
|
1933
|
+
preserveDrawingBuffer: true,
|
|
1934
|
+
fadeDuration: 0,
|
|
1935
|
+
attributionControl: false
|
|
1936
|
+
});
|
|
1937
|
+
var style = map.getStyle();
|
|
1938
|
+
|
|
1939
|
+
var _loop = function _loop(name) {
|
|
1940
|
+
var src = style.sources[name];
|
|
1941
|
+
Object.keys(src).forEach(function (key) {
|
|
1942
|
+
//delete properties if value is undefined.
|
|
1943
|
+
// for instance, raster-dem might has undefined value in "url" and "bounds"
|
|
1944
|
+
if (!src[key]) {
|
|
1945
|
+
delete src[key];
|
|
1946
|
+
}
|
|
1947
|
+
});
|
|
1948
|
+
};
|
|
1949
|
+
|
|
1950
|
+
for (var name in style.sources) {
|
|
1951
|
+
_loop(name);
|
|
1952
|
+
}
|
|
1953
|
+
|
|
1954
|
+
renderMap.setStyle(style);
|
|
1955
|
+
renderMap.once("idle", function () {
|
|
1956
|
+
var _hidden$parentNode;
|
|
1957
|
+
|
|
1958
|
+
// TO DO: It is still under development
|
|
1959
|
+
var pdf = new jsPDF({
|
|
1960
|
+
orientation: "p",
|
|
1961
|
+
unit: "mm",
|
|
1962
|
+
compress: true
|
|
1963
|
+
});
|
|
1964
|
+
Object.defineProperty(window, "devicePixelRatio", {
|
|
1965
|
+
get: function get() {
|
|
1966
|
+
return 300 / 96;
|
|
1967
|
+
}
|
|
1968
|
+
});
|
|
1969
|
+
var offsetX = 2.5;
|
|
1970
|
+
var offsetY = 2.5;
|
|
1971
|
+
var marginTop = 3;
|
|
1972
|
+
var marginBottom = 3;
|
|
1973
|
+
var innerMargin = 2;
|
|
1974
|
+
var logo = "data:image/png;base64,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";
|
|
1975
|
+
var textBuffer = 1;
|
|
1976
|
+
var lineHeight = 3.25;
|
|
1977
|
+
var text = locationValue ? nmConverter(locationValue.address) : "";
|
|
1978
|
+
var textChunksSeperator = text.split(",");
|
|
1979
|
+
var textChunks = [];
|
|
1980
|
+
|
|
1981
|
+
if (textChunks.length) {
|
|
1982
|
+
textChunksSeperator.forEach(function (chunk) {
|
|
1983
|
+
var limitChunks = chunk.match(/.{1,34}/g);
|
|
1984
|
+
textChunks.push.apply(textChunks, _toConsumableArray(limitChunks));
|
|
1985
|
+
});
|
|
1986
|
+
} //Render map image
|
|
1987
|
+
|
|
1988
|
+
|
|
1989
|
+
pdf.addImage(renderMap.getCanvas().toDataURL("image/png"), "png", 0, 0, 210, 297, null, "FAST"); //Render lower left Copyright box
|
|
1990
|
+
|
|
1991
|
+
pdf.setFillColor("white");
|
|
1992
|
+
pdf.rect(138, 287, 297, 10, "F");
|
|
1993
|
+
pdf.setFontSize(10); // optional
|
|
1994
|
+
|
|
1995
|
+
pdf.text("Datenquelle: © OpenStreetMap-Mitwirkende", 140, pdf.internal.pageSize.height - 3); //Render infobox
|
|
1996
|
+
|
|
1997
|
+
pdf.setFillColor("white");
|
|
1998
|
+
var infoBoxSize = textChunks.length * lineHeight + marginTop + marginBottom + lineHeight * 2 + innerMargin * 2 + textBuffer;
|
|
1999
|
+
pdf.rect(offsetX, 2, 66.5, infoBoxSize, "F");
|
|
2000
|
+
pdf.setFontSize(10);
|
|
2001
|
+
pdf.text("Karten PDF:", 6, offsetY + marginTop); //Render inner infobox
|
|
2002
|
+
|
|
2003
|
+
pdf.rect(6, 7, 60, textChunks.length * lineHeight + innerMargin * 2 + textBuffer);
|
|
2004
|
+
pdf.setFontSize(10); //Write out address
|
|
2005
|
+
|
|
2006
|
+
textChunks.forEach(function (text, i) {
|
|
2007
|
+
pdf.text(text.trim(), 8, 10 + i * 3.5 + innerMargin);
|
|
2008
|
+
}); //Add WG Logo
|
|
2009
|
+
|
|
2010
|
+
pdf.addImage(logo, "png", 5, offsetY + marginTop + lineHeight * 2 + textChunks.length * 3 + innerMargin * 2, 3, 3, null, "FAST"); //Add WG Url
|
|
2011
|
+
|
|
2012
|
+
pdf.setFontSize(10);
|
|
2013
|
+
pdf.text("wheregroup.com", 40, offsetY + marginTop + lineHeight * 2 + textChunks.length * lineHeight + innerMargin * 2 + textBuffer); //Set pdfs props
|
|
2014
|
+
|
|
2015
|
+
pdf.setProperties({
|
|
2016
|
+
title: "Map export",
|
|
2017
|
+
subject: "Map export",
|
|
2018
|
+
creator: "WhereGroup GmbH",
|
|
2019
|
+
author: "(c)WhereGroup GmbH, (c)OpenStreetMap"
|
|
2020
|
+
});
|
|
2021
|
+
pdf.save("Map.pdf");
|
|
2022
|
+
renderMap.remove();
|
|
2023
|
+
(_hidden$parentNode = hidden.parentNode) === null || _hidden$parentNode === void 0 ? void 0 : _hidden$parentNode.removeChild(hidden);
|
|
2024
|
+
Object.defineProperty(window, "devicePixelRatio", {
|
|
2025
|
+
get: function get() {
|
|
2026
|
+
return actualPixelRatio;
|
|
2027
|
+
}
|
|
2028
|
+
});
|
|
2029
|
+
setLoading(false);
|
|
2030
|
+
});
|
|
2031
|
+
};
|
|
2032
|
+
|
|
2033
|
+
/**
|
|
2034
|
+
* Renders a button that will create a PDF version of the current map view (dimensions adjusted to fit Din A4 Paper).
|
|
2035
|
+
*
|
|
2036
|
+
* @component
|
|
2037
|
+
*/
|
|
2038
|
+
|
|
2039
|
+
var MlCreatePdfButton = function MlCreatePdfButton(props) {
|
|
2040
|
+
var mapContext = useContext(MapContext);
|
|
2041
|
+
var initializedRef = useRef(false);
|
|
2042
|
+
var mapRef = useRef(undefined);
|
|
2043
|
+
useEffect(function () {
|
|
2044
|
+
if (!mapContext.mapExists(props.mapId) || initializedRef.current) return;
|
|
2045
|
+
initializedRef.current = true;
|
|
2046
|
+
mapRef.current = mapContext.getMap(props.mapId);
|
|
2047
|
+
}, [mapContext.mapIds, mapContext, props.mapId]);
|
|
2048
|
+
return /*#__PURE__*/React__default.createElement(React__default.Fragment, null, /*#__PURE__*/React__default.createElement(Button, {
|
|
2049
|
+
color: "primary",
|
|
2050
|
+
variant: "contained",
|
|
2051
|
+
onClick: function onClick() {
|
|
2052
|
+
createPdf(mapRef.current, null, function () {});
|
|
2053
|
+
}
|
|
2054
|
+
}, /*#__PURE__*/React__default.createElement(PrinterIcon, null)));
|
|
2055
|
+
};
|
|
2056
|
+
|
|
2057
|
+
MlCreatePdfButton.defaultProps = {
|
|
2058
|
+
mapId: undefined
|
|
2059
|
+
};
|
|
2060
|
+
MlCreatePdfButton.propTypes = {
|
|
2061
|
+
/**
|
|
2062
|
+
* Id of the target MapLibre instance in mapContext
|
|
2063
|
+
*/
|
|
2064
|
+
mapId: PropTypes.string
|
|
2065
|
+
};
|
|
2066
|
+
|
|
2067
|
+
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); }
|
|
2068
|
+
|
|
2069
|
+
function SvgRotateRight(props) {
|
|
2070
|
+
return /*#__PURE__*/createElement("svg", _extends({
|
|
2071
|
+
width: "39.675098mm",
|
|
2072
|
+
height: "104.27064mm",
|
|
2073
|
+
viewBox: "0 0 39.675098 104.27064"
|
|
2074
|
+
}, props), /*#__PURE__*/createElement("g", {
|
|
2075
|
+
transform: "translate(-86.019554,-58.032633)"
|
|
2076
|
+
}, /*#__PURE__*/createElement("path", {
|
|
2077
|
+
style: {
|
|
2078
|
+
strokeWidth: 0.744756
|
|
2079
|
+
},
|
|
2080
|
+
d: "m 442.74023,219.33594 -117.62695,32.32422 54.71094,31.12304 c -21.99397,41.5931 -32.8507,84.88283 -38.33008,127.89649 -6.86182,50.94051 -5.95715,103.99765 20.23828,155.46484 5.97246,11.72776 13.65817,23.59773 24.38867,35.06641 2.6597,2.84073 5.65602,5.75455 9.12891,8.68164 0.87557,0.7378 1.85363,1.52609 2.95117,2.35547 0.29669,0.22563 0.63616,0.47742 1.02149,0.75586 l 0.58203,0.42578 34.57812,-15.12305 -0.33789,-0.2207 c -0.0265,-0.0151 -0.0842,-0.0587 -0.18359,-0.13086 -0.46723,-0.34885 -0.9819,-0.76796 -1.56055,-1.25 -2.29757,-1.91343 -4.46539,-4.04643 -6.64062,-6.33985 -8.80052,-9.27114 -15.30333,-19.4993 -20.83985,-30.13867 -24.42289,-46.90715 -24.77465,-97.03535 -18.58008,-146.68164 4.94388,-37.37493 13.65299,-74.4847 30.20508,-109.92969 l 58.6211,33.34766 z",
|
|
2081
|
+
transform: "scale(0.26458333)"
|
|
2082
|
+
})));
|
|
2083
|
+
}
|
|
2084
|
+
|
|
2085
|
+
var _g;
|
|
2086
|
+
|
|
2087
|
+
function _extends$1() { _extends$1 = 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$1.apply(this, arguments); }
|
|
2088
|
+
|
|
2089
|
+
function SvgRotateLeft(props) {
|
|
2090
|
+
return /*#__PURE__*/createElement("svg", _extends$1({
|
|
2091
|
+
width: "39.675098mm",
|
|
2092
|
+
height: "104.27064mm",
|
|
2093
|
+
viewBox: "0 0 39.675098 104.27064"
|
|
2094
|
+
}, props), _g || (_g = /*#__PURE__*/createElement("g", {
|
|
2095
|
+
transform: "translate(-86.019554,-58.032633)"
|
|
2096
|
+
}, /*#__PURE__*/createElement("path", {
|
|
2097
|
+
d: "m 94.572523,58.032633 31.122127,8.55245 -14.4756,8.234638 c 5.81924,11.004841 8.69175,22.458582 10.1415,33.839279 1.81552,13.47801 1.57616,27.51604 -5.35471,41.13341 -1.58021,3.10296 -3.61373,6.24356 -6.45284,9.27798 -0.70371,0.75161 -1.49649,1.52256 -2.41535,2.29702 -0.23167,0.19521 -0.49044,0.40378 -0.78083,0.62322 -0.0785,0.0597 -0.16832,0.12632 -0.27027,0.19999 l -0.154,0.11265 -9.148793,-4.00131 0.0894,-0.0584 c 0.007,-0.004 0.02228,-0.0155 0.04857,-0.0346 0.123621,-0.0923 0.259794,-0.20319 0.412895,-0.33073 0.607899,-0.50626 1.181468,-1.07062 1.756997,-1.67742 2.328481,-2.45299 4.049011,-5.15919 5.513881,-7.97419 6.46189,-12.41085 6.55496,-25.67394 4.91598,-38.80952 -1.30807,-9.888781 -3.61235,-19.707408 -7.99176,-29.085561 l -15.510171,8.823235 z"
|
|
2098
|
+
}))));
|
|
2099
|
+
}
|
|
2100
|
+
|
|
2101
|
+
var _g$1;
|
|
2102
|
+
|
|
2103
|
+
function _extends$2() { _extends$2 = 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$2.apply(this, arguments); }
|
|
2104
|
+
|
|
2105
|
+
function SvgNeedle(props) {
|
|
2106
|
+
return /*#__PURE__*/createElement("svg", _extends$2({
|
|
2107
|
+
width: "75.967445mm",
|
|
2108
|
+
height: "234.71339mm",
|
|
2109
|
+
viewBox: "0 0 75.967445 234.71339"
|
|
2110
|
+
}, props), _g$1 || (_g$1 = /*#__PURE__*/createElement("g", {
|
|
2111
|
+
transform: "translate(-76.705281,-29.77268)"
|
|
2112
|
+
}, /*#__PURE__*/createElement("path", {
|
|
2113
|
+
d: "m 114.68901,29.77268 37.98372,117.3567 H 76.705281 Z"
|
|
2114
|
+
}), /*#__PURE__*/createElement("path", {
|
|
2115
|
+
d: "m 114.68901,264.48608 37.98372,-117.3567 H 76.705281 Z"
|
|
2116
|
+
}))));
|
|
2117
|
+
}
|
|
2118
|
+
|
|
2119
|
+
function _EMOTION_STRINGIFIED_CSS_ERROR__() { return "You have tried to stringify object returned from `css` function. It isn't supposed to be used directly (e.g. as value of the `className` prop), but rather handed to emotion so it can handle it (e.g. as value of `css` prop)."; }
|
|
2120
|
+
|
|
2121
|
+
var NeedleButton = _styled("div", process.env.NODE_ENV === "production" ? {
|
|
2122
|
+
target: "e12lzm5x2"
|
|
2123
|
+
} : {
|
|
2124
|
+
target: "e12lzm5x2",
|
|
2125
|
+
label: "NeedleButton"
|
|
2126
|
+
})(process.env.NODE_ENV === "production" ? {
|
|
2127
|
+
name: "1204o9",
|
|
2128
|
+
styles: "width:40%;display:flex;align-items:center;&:hover{cursor:pointer;}path{filter:drop-shadow(0px 0px 15px rgba(0, 0, 0, 0.2));}&:hover path{filter:drop-shadow(0px 0px 13px rgba(255, 255, 255, 0.1));}path:nth-of-type(2){fill:#343434;}&:hover path:nth-of-type(2){fill:#434343;}path:nth-of-type(1){fill:#e90318;}&:hover path:nth-of-type(1){fill:#fb4052;}"
|
|
2129
|
+
} : {
|
|
2130
|
+
name: "1204o9",
|
|
2131
|
+
styles: "width:40%;display:flex;align-items:center;&:hover{cursor:pointer;}path{filter:drop-shadow(0px 0px 15px rgba(0, 0, 0, 0.2));}&:hover path{filter:drop-shadow(0px 0px 13px rgba(255, 255, 255, 0.1));}path:nth-of-type(2){fill:#343434;}&:hover path:nth-of-type(2){fill:#434343;}path:nth-of-type(1){fill:#e90318;}&:hover path:nth-of-type(1){fill:#fb4052;}",
|
|
2132
|
+
map: "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIk1sTmF2aWdhdGlvbkNvbXBhc3MuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBYStCIiwiZmlsZSI6Ik1sTmF2aWdhdGlvbkNvbXBhc3MuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgUmVhY3QsIHsgdXNlU3RhdGUsIHVzZVJlZiwgdXNlRWZmZWN0LCB1c2VDb250ZXh0IH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5cbmltcG9ydCB7IE1hcENvbnRleHQgfSBmcm9tIFwiQG1hcGNvbXBvbmVudHMvcmVhY3QtY29yZVwiO1xuaW1wb3J0IHsgdjQgYXMgdXVpZHY0IH0gZnJvbSBcInV1aWRcIjtcblxuaW1wb3J0IHsgUmVhY3RDb21wb25lbnQgYXMgUm90YXRlUmlnaHRJY29uIH0gZnJvbSBcIi4vYXNzZXRzL3JvdGF0ZV9yaWdodC5zdmdcIjtcbmltcG9ydCB7IFJlYWN0Q29tcG9uZW50IGFzIFJvdGF0ZUxlZnRJY29uIH0gZnJvbSBcIi4vYXNzZXRzL3JvdGF0ZV9sZWZ0LnN2Z1wiO1xuaW1wb3J0IHsgUmVhY3RDb21wb25lbnQgYXMgTmVlZGxlSWNvbiB9IGZyb20gXCIuL2Fzc2V0cy9uZWVkbGUuc3ZnXCI7XG5cbmltcG9ydCBzdHlsZWQgZnJvbSBcIkBlbW90aW9uL3N0eWxlZFwiO1xuaW1wb3J0IHsgY3NzIH0gZnJvbSBcIkBlbW90aW9uL2Nzc1wiO1xuXG5jb25zdCBOZWVkbGVCdXR0b24gPSBzdHlsZWQuZGl2YFxuICB3aWR0aDogNDAlO1xuICBkaXNwbGF5OiBmbGV4O1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuXG4gICY6aG92ZXIge1xuICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgfVxuICBwYXRoIHtcbiAgICBmaWx0ZXI6IGRyb3Atc2hhZG93KDBweCAwcHggMTVweCByZ2JhKDAsIDAsIDAsIDAuMikpO1xuICB9XG4gICY6aG92ZXIgcGF0aCB7XG4gICAgZmlsdGVyOiBkcm9wLXNoYWRvdygwcHggMHB4IDEzcHggcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjEpKTtcbiAgfVxuICBwYXRoOm50aC1vZi10eXBlKDIpIHtcbiAgICBmaWxsOiAjMzQzNDM0O1xuICB9XG4gICY6aG92ZXIgcGF0aDpudGgtb2YtdHlwZSgyKSB7XG4gICAgZmlsbDogIzQzNDM0MztcbiAgfVxuICBwYXRoOm50aC1vZi10eXBlKDEpIHtcbiAgICBmaWxsOiAjZTkwMzE4O1xuICB9XG4gICY6aG92ZXIgcGF0aDpudGgtb2YtdHlwZSgxKSB7XG4gICAgZmlsbDogI2ZiNDA1MjtcbiAgfVxuYDtcbmNvbnN0IE5lZWRsZUNvbnRhaW5lciA9IHN0eWxlZC5kaXZgXG4gIHBvaW50ZXItZXZlbnRzOiBub25lO1xuICBkaXNwbGF5OiBmbGV4O1xuICB6LWluZGV4OiAxMDAyO1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG5cbiAgbWFyZ2luLWxlZnQ6IC0zMCU7XG4gIHBhdGg6bnRoLW9mLXR5cGUoMikge1xuICB9XG4gIHN2ZyBnIHtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgtNzYuNzA1MywgLTI5Ljc3MjcpIHNjYWxlKDIsIDEpO1xuICB9XG4gIHN2ZyB7XG4gICAgei1pbmRleDogOTk5MDtcbiAgICBoZWlnaHQ6IDE1MHB4O1xuICAgIHdpZHRoOiAyMDBweDtcbiAgfVxuYDtcbmNvbnN0IFJvdGF0ZUJ1dHRvbiA9IHN0eWxlZC5kaXZgXG4gIHdpZHRoOiAzMCU7XG4gIG1hcmdpbi10b3A6IDE0cHg7XG4gIHotaW5kZXg6IDk5OTtcbiAgZGlzcGxheTogZmxleDtcblxuICBzdmc6aG92ZXIge1xuICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgfVxuICBzdmc6aG92ZXIgcGF0aCB7XG4gICAgZmlsbDogI2VjZWNlYztcbiAgICBmaWx0ZXI6IGRyb3Atc2hhZG93KDBweCAwcHggNXB4IHJnYmEoMCwgMCwgMCwgMC4xKSk7XG4gIH1cbiAgcGF0aCB7XG4gICAgZmlsbDogI2JiYjtcbiAgfVxuICBzdmcge1xuICAgIHRyYW5zZm9ybTogc2NhbGUoMC42KTtcbiAgICB6LWluZGV4OiA5OTkwO1xuICAgIGhlaWdodDogMTcycHg7XG4gIH1cbmA7XG5cbi8qKlxuICogTmF2aWdhdGlvbiBjb21wb25lbnQgdGhhdCBkaXNwbGF5cyBhIGNvbXBhc3MgY29tcG9uZW50IHdoaWNoIGluZGljYXRlcyB0aGUgY3VycmVudCBvcmlhbnRhdGlvbiBvZiB0aGUgbWFwIGl0IGlzIHJlZ2lzdGVyZWQgZm9yIGFuZCBvZmZlcnMgY29udHJvbHMgdG8gdHVybiB0aGUgYmVhcmluZyA5MMKwIGxlZnQvcmlnaHQgb3IgcmVzZXQgbm9ydGggdG8gcG9pbnQgdXAuXG4gKlxuICogQWxsIHN0eWxlIHByb3BzIGFyZSBhcHBsaWVkIHVzaW5nIEBlbW90aW9uL2NzcyB0byBhbGxvdyBtb3JlIGNvbXBsZXggY3NzIHNlbGVjdG9ycy5cbiAqXG4gKiBAY29tcG9uZW50XG4gKi9cbmNvbnN0IE1sTmF2aWdhdGlvbkNvbXBhc3MgPSAocHJvcHMpID0+IHtcbiAgLy8gVXNlIGEgdXNlUmVmIGhvb2sgdG8gcmVmZXJlbmNlIHRoZSBsYXllciBvYmplY3QgdG8gYmUgYWJsZSB0byBhY2Nlc3MgaXQgbGF0ZXIgaW5zaWRlIHVzZUVmZmVjdCBob29rc1xuICBjb25zdCBtYXBDb250ZXh0ID0gdXNlQ29udGV4dChNYXBDb250ZXh0KTtcblxuICBjb25zdCBpbml0aWFsaXplZFJlZiA9IHVzZVJlZihmYWxzZSk7XG4gIGNvbnN0IG1hcFJlZiA9IHVzZVJlZih1bmRlZmluZWQpO1xuICBjb25zdCBjb21wb25lbnRJZCA9IHVzZVJlZigocHJvcHMuaWRQcmVmaXggPyBwcm9wcy5pZFByZWZpeCA6IFwiTWxOYXZpZ2F0aW9uQ29tcGFzcy1cIikgKyB1dWlkdjQoKSk7XG5cbiAgY29uc3QgW2JlYXJpbmcsIHNldEJlYXJpbmddID0gdXNlU3RhdGUoMCk7XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBsZXQgX2NvbXBvbmVudElkID0gY29tcG9uZW50SWQuY3VycmVudDtcblxuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICAvLyBUaGlzIGlzIHRoZSBjbGVhbnVwIGZ1bmN0aW9uLCBpdCBpcyBjYWxsZWQgd2hlbiB0aGlzIHJlYWN0IGNvbXBvbmVudCBpcyByZW1vdmVkIGZyb20gcmVhY3QtZG9tXG5cbiAgICAgIGlmIChtYXBSZWYuY3VycmVudCkge1xuICAgICAgICBtYXBSZWYuY3VycmVudC5jbGVhbnVwKF9jb21wb25lbnRJZCk7XG4gICAgICAgIG1hcFJlZi5jdXJyZW50ID0gdW5kZWZpbmVkO1xuICAgICAgfVxuICAgICAgaW5pdGlhbGl6ZWRSZWYuY3VycmVudCA9IGZhbHNlO1xuICAgIH07XG4gIH0sIFtdKTtcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmICghbWFwQ29udGV4dC5tYXBFeGlzdHMocHJvcHMubWFwSWQpIHx8IGluaXRpYWxpemVkUmVmLmN1cnJlbnQpIHJldHVybjtcbiAgICBpbml0aWFsaXplZFJlZi5jdXJyZW50ID0gdHJ1ZTtcbiAgICBtYXBSZWYuY3VycmVudCA9IG1hcENvbnRleHQuZ2V0TWFwKHByb3BzLm1hcElkKTtcblxuICAgIG1hcFJlZi5jdXJyZW50Lm9uKFxuICAgICAgXCJyb3RhdGVcIixcbiAgICAgIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgc2V0QmVhcmluZyhNYXRoLnJvdW5kKG1hcFJlZi5jdXJyZW50LmdldEJlYXJpbmcoKSkpO1xuICAgICAgfSxcbiAgICAgIGNvbXBvbmVudElkLmN1cnJlbnRcbiAgICApO1xuICAgIHNldEJlYXJpbmcoTWF0aC5yb3VuZChtYXBSZWYuY3VycmVudC5nZXRCZWFyaW5nKCkpKTtcbiAgfSwgW21hcENvbnRleHQubWFwSWRzLCBtYXBDb250ZXh0LCBwcm9wcy5tYXBJZF0pO1xuXG4gIHJldHVybiAoXG4gICAgPD5cbiAgICAgIDxkaXZcbiAgICAgICAgY2xhc3NOYW1lPXtjc3Moe1xuICAgICAgICAgIHpJbmRleDogMTAwMCxcbiAgICAgICAgICB0b3A6IDAsXG4gICAgICAgICAgcG9zaXRpb246IFwiYWJzb2x1dGVcIixcbiAgICAgICAgICAuLi5wcm9wcy5zdHlsZSxcbiAgICAgICAgfSl9XG4gICAgICA+XG4gICAgICAgIDxkaXZcbiAgICAgICAgICBjbGFzc05hbWU9e2Nzcyh7XG4gICAgICAgICAgICBwb3NpdGlvbjogXCJhYnNvbHV0ZVwiLFxuICAgICAgICAgICAgYm9yZGVyOiBcIjEwcHggc29saWQgI2JjYmNiY1wiLFxuICAgICAgICAgICAgYmFja2dyb3VuZENvbG9yOiBcIiM3MTcxNzFcIixcbiAgICAgICAgICAgIGJhY2tncm91bmQ6IFwicmFkaWFsLWdyYWRpZW50KCM3MTcxNzEsICM0MTQxNDEpXCIsXG4gICAgICAgICAgICBoZWlnaHQ6IFwiMjAwcHhcIixcbiAgICAgICAgICAgIHdpZHRoOiBcIjIwMHB4XCIsXG4gICAgICAgICAgICBib3JkZXJSYWRpdXM6IFwiNTAlXCIsXG4gICAgICAgICAgICBkaXNwbGF5OiBcImZsZXhcIixcbiAgICAgICAgICAgIGp1c3RpZnlDb250ZW50OiBcImNlbnRlclwiLFxuICAgICAgICAgICAgdHJhbnNmb3JtOiBcInNjYWxlKDAuMikgdHJhbnNsYXRlWCgtNDQ4cHgpIHRyYW5zbGF0ZVkoLTQ0OHB4KVwiLFxuICAgICAgICAgICAgLi4ucHJvcHMuYmFja2dyb3VuZFN0eWxlLFxuICAgICAgICAgIH0pfVxuICAgICAgICA+XG4gICAgICAgICAgPFJvdGF0ZUJ1dHRvbiBjbGFzc05hbWU9e2Nzcyh7IC4uLnByb3BzLnJvdGF0ZVJpZ2h0U3R5bGUgfSl9PlxuICAgICAgICAgICAgPFJvdGF0ZVJpZ2h0SWNvblxuICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB7XG4gICAgICAgICAgICAgICAgbGV0IGJlYXJpbmcgPSBNYXRoLnJvdW5kKG1hcFJlZi5jdXJyZW50Py5nZXRCZWFyaW5nKCkpO1xuICAgICAgICAgICAgICAgIGxldCByZXN0ID0gTWF0aC5yb3VuZChiZWFyaW5nICUgOTApO1xuICAgICAgICAgICAgICAgIGlmIChiZWFyaW5nID4gMCkge1xuICAgICAgICAgICAgICAgICAgcmVzdCA9IDkwIC0gcmVzdDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKHJlc3QgPT09IDApIHtcbiAgICAgICAgICAgICAgICAgIHJlc3QgPSA5MDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgbWFwUmVmLmN1cnJlbnQ/LnNldEJlYXJpbmcoTWF0aC5yb3VuZChiZWFyaW5nICsgTWF0aC5hYnMocmVzdCkpKTtcbiAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgID48L1JvdGF0ZVJpZ2h0SWNvbj5cbiAgICAgICAgICA8L1JvdGF0ZUJ1dHRvbj5cbiAgICAgICAgICA8TmVlZGxlQnV0dG9uXG4gICAgICAgICAgICBjbGFzc05hbWU9e2Nzcyh7IC4uLnByb3BzLm5lZWRsZVN0eWxlIH0pfVxuICAgICAgICAgICAgb25DbGljaz17KCkgPT4ge1xuICAgICAgICAgICAgICBtYXBSZWYuY3VycmVudD8uc2V0QmVhcmluZygwKTtcbiAgICAgICAgICAgIH19XG4gICAgICAgICAgPlxuICAgICAgICAgICAgPE5lZWRsZUNvbnRhaW5lclxuICAgICAgICAgICAgICBzdHlsZT17e1xuICAgICAgICAgICAgICAgIHRyYW5zZm9ybTogXCJyb3RhdGUoXCIgKyBiZWFyaW5nICsgXCJkZWcpXCIsXG4gICAgICAgICAgICAgIH19XG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxOZWVkbGVJY29uIC8+XG4gICAgICAgICAgICA8L05lZWRsZUNvbnRhaW5lcj5cbiAgICAgICAgICA8L05lZWRsZUJ1dHRvbj5cbiAgICAgICAgICA8Um90YXRlQnV0dG9uIGNsYXNzTmFtZT17Y3NzKHsgLi4ucHJvcHMucm90YXRlTGVmdFN0eWxlIH0pfT5cbiAgICAgICAgICAgIDxSb3RhdGVMZWZ0SWNvblxuICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB7XG4gICAgICAgICAgICAgICAgbGV0IGJlYXJpbmcgPSBNYXRoLnJvdW5kKG1hcFJlZi5jdXJyZW50Py5nZXRCZWFyaW5nKCkpO1xuICAgICAgICAgICAgICAgIGxldCByZXN0ID0gTWF0aC5yb3VuZChiZWFyaW5nICUgOTApO1xuICAgICAgICAgICAgICAgIGlmIChiZWFyaW5nIDwgMCkge1xuICAgICAgICAgICAgICAgICAgcmVzdCA9IDkwICsgcmVzdDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKHJlc3QgPT09IDApIHtcbiAgICAgICAgICAgICAgICAgIHJlc3QgPSA5MDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgbWFwUmVmLmN1cnJlbnQ/LnNldEJlYXJpbmcoTWF0aC5yb3VuZChiZWFyaW5nIC0gTWF0aC5hYnMocmVzdCkpKTtcbiAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgID48L1JvdGF0ZUxlZnRJY29uPlxuICAgICAgICAgIDwvUm90YXRlQnV0dG9uPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvPlxuICApO1xufTtcblxuTWxOYXZpZ2F0aW9uQ29tcGFzcy5wcm9wVHlwZXMgPSB7XG4gIC8qKlxuICAgKiBDb21wb25lbnQgaWQgcHJlZml4XG4gICAqL1xuICBpZFByZWZpeDogUHJvcFR5cGVzLnN0cmluZyxcbiAgLyoqXG4gICAqIFN0eWxlIG9iamVjdCB0byBhZGp1c3QgY3NzIGRlZmluaXRpb25zIG9mIHRoZSBjb21wb25lbnQuXG4gICAqL1xuICBzdHlsZTogUHJvcFR5cGVzLm9iamVjdCxcbiAgLyoqXG4gICAqIFN0eWxlIG9iamVjdCB0byBhZGp1c3QgY3NzIGRlZmluaXRpb25zIG9mIHRoZSBiYWNrZ3JvdW5kLlxuICAgKi9cbiAgYmFja2dyb3VuZFN0eWxlOiBQcm9wVHlwZXMub2JqZWN0LFxuICAvKipcbiAgICogU3R5bGUgb2JqZWN0IHRvIGFkanVzdCBjc3MgZGVmaW5pdGlvbnMgb2YgdGhlIGNvbXBhc3MgbmVlZGxlLlxuICAgKi9cbiAgbmVlZGxlU3R5bGU6IFByb3BUeXBlcy5vYmplY3QsXG4gIC8qKlxuICAgKiBTdHlsZSBvYmplY3QgdG8gYWRqdXN0IGNzcyBkZWZpbml0aW9ucyBvZiB0aGUgcm90YXRlIHJpZ2h0IGJ1dHRvbi5cbiAgICovXG4gIHJvdGF0ZVJpZ2h0U3R5bGU6IFByb3BUeXBlcy5vYmplY3QsXG4gIC8qKlxuICAgKiBTdHlsZSBvYmplY3QgdG8gYWRqdXN0IGNzcyBkZWZpbml0aW9ucyBvZiB0aGUgcm90YXRlIGxlZnQgYnV0dG9uLlxuICAgKi9cbiAgcm90YXRlTGVmdFN0eWxlOiBQcm9wVHlwZXMub2JqZWN0LFxufTtcblxuZXhwb3J0IGRlZmF1bHQgTWxOYXZpZ2F0aW9uQ29tcGFzcztcbiJdfQ== */",
|
|
2133
|
+
toString: _EMOTION_STRINGIFIED_CSS_ERROR__
|
|
2134
|
+
});
|
|
2135
|
+
|
|
2136
|
+
var NeedleContainer = _styled("div", process.env.NODE_ENV === "production" ? {
|
|
2137
|
+
target: "e12lzm5x1"
|
|
2138
|
+
} : {
|
|
2139
|
+
target: "e12lzm5x1",
|
|
2140
|
+
label: "NeedleContainer"
|
|
2141
|
+
})(process.env.NODE_ENV === "production" ? {
|
|
2142
|
+
name: "1m8y6tb",
|
|
2143
|
+
styles: "pointer-events:none;display:flex;z-index:1002;position:absolute;align-items:center;margin-left:-30%;path:nth-of-type(2){}svg g{transform:translate(-76.7053, -29.7727) scale(2, 1);}svg{z-index:9990;height:150px;width:200px;}"
|
|
2144
|
+
} : {
|
|
2145
|
+
name: "1m8y6tb",
|
|
2146
|
+
styles: "pointer-events:none;display:flex;z-index:1002;position:absolute;align-items:center;margin-left:-30%;path:nth-of-type(2){}svg g{transform:translate(-76.7053, -29.7727) scale(2, 1);}svg{z-index:9990;height:150px;width:200px;}",
|
|
2147
|
+
map: "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIk1sTmF2aWdhdGlvbkNvbXBhc3MuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBd0NrQyIsImZpbGUiOiJNbE5hdmlnYXRpb25Db21wYXNzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFJlYWN0LCB7IHVzZVN0YXRlLCB1c2VSZWYsIHVzZUVmZmVjdCwgdXNlQ29udGV4dCB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuXG5pbXBvcnQgeyBNYXBDb250ZXh0IH0gZnJvbSBcIkBtYXBjb21wb25lbnRzL3JlYWN0LWNvcmVcIjtcbmltcG9ydCB7IHY0IGFzIHV1aWR2NCB9IGZyb20gXCJ1dWlkXCI7XG5cbmltcG9ydCB7IFJlYWN0Q29tcG9uZW50IGFzIFJvdGF0ZVJpZ2h0SWNvbiB9IGZyb20gXCIuL2Fzc2V0cy9yb3RhdGVfcmlnaHQuc3ZnXCI7XG5pbXBvcnQgeyBSZWFjdENvbXBvbmVudCBhcyBSb3RhdGVMZWZ0SWNvbiB9IGZyb20gXCIuL2Fzc2V0cy9yb3RhdGVfbGVmdC5zdmdcIjtcbmltcG9ydCB7IFJlYWN0Q29tcG9uZW50IGFzIE5lZWRsZUljb24gfSBmcm9tIFwiLi9hc3NldHMvbmVlZGxlLnN2Z1wiO1xuXG5pbXBvcnQgc3R5bGVkIGZyb20gXCJAZW1vdGlvbi9zdHlsZWRcIjtcbmltcG9ydCB7IGNzcyB9IGZyb20gXCJAZW1vdGlvbi9jc3NcIjtcblxuY29uc3QgTmVlZGxlQnV0dG9uID0gc3R5bGVkLmRpdmBcbiAgd2lkdGg6IDQwJTtcbiAgZGlzcGxheTogZmxleDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcblxuICAmOmhvdmVyIHtcbiAgICBjdXJzb3I6IHBvaW50ZXI7XG4gIH1cbiAgcGF0aCB7XG4gICAgZmlsdGVyOiBkcm9wLXNoYWRvdygwcHggMHB4IDE1cHggcmdiYSgwLCAwLCAwLCAwLjIpKTtcbiAgfVxuICAmOmhvdmVyIHBhdGgge1xuICAgIGZpbHRlcjogZHJvcC1zaGFkb3coMHB4IDBweCAxM3B4IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4xKSk7XG4gIH1cbiAgcGF0aDpudGgtb2YtdHlwZSgyKSB7XG4gICAgZmlsbDogIzM0MzQzNDtcbiAgfVxuICAmOmhvdmVyIHBhdGg6bnRoLW9mLXR5cGUoMikge1xuICAgIGZpbGw6ICM0MzQzNDM7XG4gIH1cbiAgcGF0aDpudGgtb2YtdHlwZSgxKSB7XG4gICAgZmlsbDogI2U5MDMxODtcbiAgfVxuICAmOmhvdmVyIHBhdGg6bnRoLW9mLXR5cGUoMSkge1xuICAgIGZpbGw6ICNmYjQwNTI7XG4gIH1cbmA7XG5jb25zdCBOZWVkbGVDb250YWluZXIgPSBzdHlsZWQuZGl2YFxuICBwb2ludGVyLWV2ZW50czogbm9uZTtcbiAgZGlzcGxheTogZmxleDtcbiAgei1pbmRleDogMTAwMjtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuXG4gIG1hcmdpbi1sZWZ0OiAtMzAlO1xuICBwYXRoOm50aC1vZi10eXBlKDIpIHtcbiAgfVxuICBzdmcgZyB7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoLTc2LjcwNTMsIC0yOS43NzI3KSBzY2FsZSgyLCAxKTtcbiAgfVxuICBzdmcge1xuICAgIHotaW5kZXg6IDk5OTA7XG4gICAgaGVpZ2h0OiAxNTBweDtcbiAgICB3aWR0aDogMjAwcHg7XG4gIH1cbmA7XG5jb25zdCBSb3RhdGVCdXR0b24gPSBzdHlsZWQuZGl2YFxuICB3aWR0aDogMzAlO1xuICBtYXJnaW4tdG9wOiAxNHB4O1xuICB6LWluZGV4OiA5OTk7XG4gIGRpc3BsYXk6IGZsZXg7XG5cbiAgc3ZnOmhvdmVyIHtcbiAgICBjdXJzb3I6IHBvaW50ZXI7XG4gIH1cbiAgc3ZnOmhvdmVyIHBhdGgge1xuICAgIGZpbGw6ICNlY2VjZWM7XG4gICAgZmlsdGVyOiBkcm9wLXNoYWRvdygwcHggMHB4IDVweCByZ2JhKDAsIDAsIDAsIDAuMSkpO1xuICB9XG4gIHBhdGgge1xuICAgIGZpbGw6ICNiYmI7XG4gIH1cbiAgc3ZnIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlKDAuNik7XG4gICAgei1pbmRleDogOTk5MDtcbiAgICBoZWlnaHQ6IDE3MnB4O1xuICB9XG5gO1xuXG4vKipcbiAqIE5hdmlnYXRpb24gY29tcG9uZW50IHRoYXQgZGlzcGxheXMgYSBjb21wYXNzIGNvbXBvbmVudCB3aGljaCBpbmRpY2F0ZXMgdGhlIGN1cnJlbnQgb3JpYW50YXRpb24gb2YgdGhlIG1hcCBpdCBpcyByZWdpc3RlcmVkIGZvciBhbmQgb2ZmZXJzIGNvbnRyb2xzIHRvIHR1cm4gdGhlIGJlYXJpbmcgOTDCsCBsZWZ0L3JpZ2h0IG9yIHJlc2V0IG5vcnRoIHRvIHBvaW50IHVwLlxuICpcbiAqIEFsbCBzdHlsZSBwcm9wcyBhcmUgYXBwbGllZCB1c2luZyBAZW1vdGlvbi9jc3MgdG8gYWxsb3cgbW9yZSBjb21wbGV4IGNzcyBzZWxlY3RvcnMuXG4gKlxuICogQGNvbXBvbmVudFxuICovXG5jb25zdCBNbE5hdmlnYXRpb25Db21wYXNzID0gKHByb3BzKSA9PiB7XG4gIC8vIFVzZSBhIHVzZVJlZiBob29rIHRvIHJlZmVyZW5jZSB0aGUgbGF5ZXIgb2JqZWN0IHRvIGJlIGFibGUgdG8gYWNjZXNzIGl0IGxhdGVyIGluc2lkZSB1c2VFZmZlY3QgaG9va3NcbiAgY29uc3QgbWFwQ29udGV4dCA9IHVzZUNvbnRleHQoTWFwQ29udGV4dCk7XG5cbiAgY29uc3QgaW5pdGlhbGl6ZWRSZWYgPSB1c2VSZWYoZmFsc2UpO1xuICBjb25zdCBtYXBSZWYgPSB1c2VSZWYodW5kZWZpbmVkKTtcbiAgY29uc3QgY29tcG9uZW50SWQgPSB1c2VSZWYoKHByb3BzLmlkUHJlZml4ID8gcHJvcHMuaWRQcmVmaXggOiBcIk1sTmF2aWdhdGlvbkNvbXBhc3MtXCIpICsgdXVpZHY0KCkpO1xuXG4gIGNvbnN0IFtiZWFyaW5nLCBzZXRCZWFyaW5nXSA9IHVzZVN0YXRlKDApO1xuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgbGV0IF9jb21wb25lbnRJZCA9IGNvbXBvbmVudElkLmN1cnJlbnQ7XG5cbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgLy8gVGhpcyBpcyB0aGUgY2xlYW51cCBmdW5jdGlvbiwgaXQgaXMgY2FsbGVkIHdoZW4gdGhpcyByZWFjdCBjb21wb25lbnQgaXMgcmVtb3ZlZCBmcm9tIHJlYWN0LWRvbVxuXG4gICAgICBpZiAobWFwUmVmLmN1cnJlbnQpIHtcbiAgICAgICAgbWFwUmVmLmN1cnJlbnQuY2xlYW51cChfY29tcG9uZW50SWQpO1xuICAgICAgICBtYXBSZWYuY3VycmVudCA9IHVuZGVmaW5lZDtcbiAgICAgIH1cbiAgICAgIGluaXRpYWxpemVkUmVmLmN1cnJlbnQgPSBmYWxzZTtcbiAgICB9O1xuICB9LCBbXSk7XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoIW1hcENvbnRleHQubWFwRXhpc3RzKHByb3BzLm1hcElkKSB8fCBpbml0aWFsaXplZFJlZi5jdXJyZW50KSByZXR1cm47XG4gICAgaW5pdGlhbGl6ZWRSZWYuY3VycmVudCA9IHRydWU7XG4gICAgbWFwUmVmLmN1cnJlbnQgPSBtYXBDb250ZXh0LmdldE1hcChwcm9wcy5tYXBJZCk7XG5cbiAgICBtYXBSZWYuY3VycmVudC5vbihcbiAgICAgIFwicm90YXRlXCIsXG4gICAgICBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHNldEJlYXJpbmcoTWF0aC5yb3VuZChtYXBSZWYuY3VycmVudC5nZXRCZWFyaW5nKCkpKTtcbiAgICAgIH0sXG4gICAgICBjb21wb25lbnRJZC5jdXJyZW50XG4gICAgKTtcbiAgICBzZXRCZWFyaW5nKE1hdGgucm91bmQobWFwUmVmLmN1cnJlbnQuZ2V0QmVhcmluZygpKSk7XG4gIH0sIFttYXBDb250ZXh0Lm1hcElkcywgbWFwQ29udGV4dCwgcHJvcHMubWFwSWRdKTtcblxuICByZXR1cm4gKFxuICAgIDw+XG4gICAgICA8ZGl2XG4gICAgICAgIGNsYXNzTmFtZT17Y3NzKHtcbiAgICAgICAgICB6SW5kZXg6IDEwMDAsXG4gICAgICAgICAgdG9wOiAwLFxuICAgICAgICAgIHBvc2l0aW9uOiBcImFic29sdXRlXCIsXG4gICAgICAgICAgLi4ucHJvcHMuc3R5bGUsXG4gICAgICAgIH0pfVxuICAgICAgPlxuICAgICAgICA8ZGl2XG4gICAgICAgICAgY2xhc3NOYW1lPXtjc3Moe1xuICAgICAgICAgICAgcG9zaXRpb246IFwiYWJzb2x1dGVcIixcbiAgICAgICAgICAgIGJvcmRlcjogXCIxMHB4IHNvbGlkICNiY2JjYmNcIixcbiAgICAgICAgICAgIGJhY2tncm91bmRDb2xvcjogXCIjNzE3MTcxXCIsXG4gICAgICAgICAgICBiYWNrZ3JvdW5kOiBcInJhZGlhbC1ncmFkaWVudCgjNzE3MTcxLCAjNDE0MTQxKVwiLFxuICAgICAgICAgICAgaGVpZ2h0OiBcIjIwMHB4XCIsXG4gICAgICAgICAgICB3aWR0aDogXCIyMDBweFwiLFxuICAgICAgICAgICAgYm9yZGVyUmFkaXVzOiBcIjUwJVwiLFxuICAgICAgICAgICAgZGlzcGxheTogXCJmbGV4XCIsXG4gICAgICAgICAgICBqdXN0aWZ5Q29udGVudDogXCJjZW50ZXJcIixcbiAgICAgICAgICAgIHRyYW5zZm9ybTogXCJzY2FsZSgwLjIpIHRyYW5zbGF0ZVgoLTQ0OHB4KSB0cmFuc2xhdGVZKC00NDhweClcIixcbiAgICAgICAgICAgIC4uLnByb3BzLmJhY2tncm91bmRTdHlsZSxcbiAgICAgICAgICB9KX1cbiAgICAgICAgPlxuICAgICAgICAgIDxSb3RhdGVCdXR0b24gY2xhc3NOYW1lPXtjc3MoeyAuLi5wcm9wcy5yb3RhdGVSaWdodFN0eWxlIH0pfT5cbiAgICAgICAgICAgIDxSb3RhdGVSaWdodEljb25cbiAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4ge1xuICAgICAgICAgICAgICAgIGxldCBiZWFyaW5nID0gTWF0aC5yb3VuZChtYXBSZWYuY3VycmVudD8uZ2V0QmVhcmluZygpKTtcbiAgICAgICAgICAgICAgICBsZXQgcmVzdCA9IE1hdGgucm91bmQoYmVhcmluZyAlIDkwKTtcbiAgICAgICAgICAgICAgICBpZiAoYmVhcmluZyA+IDApIHtcbiAgICAgICAgICAgICAgICAgIHJlc3QgPSA5MCAtIHJlc3Q7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmIChyZXN0ID09PSAwKSB7XG4gICAgICAgICAgICAgICAgICByZXN0ID0gOTA7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIG1hcFJlZi5jdXJyZW50Py5zZXRCZWFyaW5nKE1hdGgucm91bmQoYmVhcmluZyArIE1hdGguYWJzKHJlc3QpKSk7XG4gICAgICAgICAgICAgIH19XG4gICAgICAgICAgICA+PC9Sb3RhdGVSaWdodEljb24+XG4gICAgICAgICAgPC9Sb3RhdGVCdXR0b24+XG4gICAgICAgICAgPE5lZWRsZUJ1dHRvblxuICAgICAgICAgICAgY2xhc3NOYW1lPXtjc3MoeyAuLi5wcm9wcy5uZWVkbGVTdHlsZSB9KX1cbiAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHtcbiAgICAgICAgICAgICAgbWFwUmVmLmN1cnJlbnQ/LnNldEJlYXJpbmcoMCk7XG4gICAgICAgICAgICB9fVxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxOZWVkbGVDb250YWluZXJcbiAgICAgICAgICAgICAgc3R5bGU9e3tcbiAgICAgICAgICAgICAgICB0cmFuc2Zvcm06IFwicm90YXRlKFwiICsgYmVhcmluZyArIFwiZGVnKVwiLFxuICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8TmVlZGxlSWNvbiAvPlxuICAgICAgICAgICAgPC9OZWVkbGVDb250YWluZXI+XG4gICAgICAgICAgPC9OZWVkbGVCdXR0b24+XG4gICAgICAgICAgPFJvdGF0ZUJ1dHRvbiBjbGFzc05hbWU9e2Nzcyh7IC4uLnByb3BzLnJvdGF0ZUxlZnRTdHlsZSB9KX0+XG4gICAgICAgICAgICA8Um90YXRlTGVmdEljb25cbiAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4ge1xuICAgICAgICAgICAgICAgIGxldCBiZWFyaW5nID0gTWF0aC5yb3VuZChtYXBSZWYuY3VycmVudD8uZ2V0QmVhcmluZygpKTtcbiAgICAgICAgICAgICAgICBsZXQgcmVzdCA9IE1hdGgucm91bmQoYmVhcmluZyAlIDkwKTtcbiAgICAgICAgICAgICAgICBpZiAoYmVhcmluZyA8IDApIHtcbiAgICAgICAgICAgICAgICAgIHJlc3QgPSA5MCArIHJlc3Q7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmIChyZXN0ID09PSAwKSB7XG4gICAgICAgICAgICAgICAgICByZXN0ID0gOTA7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIG1hcFJlZi5jdXJyZW50Py5zZXRCZWFyaW5nKE1hdGgucm91bmQoYmVhcmluZyAtIE1hdGguYWJzKHJlc3QpKSk7XG4gICAgICAgICAgICAgIH19XG4gICAgICAgICAgICA+PC9Sb3RhdGVMZWZ0SWNvbj5cbiAgICAgICAgICA8L1JvdGF0ZUJ1dHRvbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8Lz5cbiAgKTtcbn07XG5cbk1sTmF2aWdhdGlvbkNvbXBhc3MucHJvcFR5cGVzID0ge1xuICAvKipcbiAgICogQ29tcG9uZW50IGlkIHByZWZpeFxuICAgKi9cbiAgaWRQcmVmaXg6IFByb3BUeXBlcy5zdHJpbmcsXG4gIC8qKlxuICAgKiBTdHlsZSBvYmplY3QgdG8gYWRqdXN0IGNzcyBkZWZpbml0aW9ucyBvZiB0aGUgY29tcG9uZW50LlxuICAgKi9cbiAgc3R5bGU6IFByb3BUeXBlcy5vYmplY3QsXG4gIC8qKlxuICAgKiBTdHlsZSBvYmplY3QgdG8gYWRqdXN0IGNzcyBkZWZpbml0aW9ucyBvZiB0aGUgYmFja2dyb3VuZC5cbiAgICovXG4gIGJhY2tncm91bmRTdHlsZTogUHJvcFR5cGVzLm9iamVjdCxcbiAgLyoqXG4gICAqIFN0eWxlIG9iamVjdCB0byBhZGp1c3QgY3NzIGRlZmluaXRpb25zIG9mIHRoZSBjb21wYXNzIG5lZWRsZS5cbiAgICovXG4gIG5lZWRsZVN0eWxlOiBQcm9wVHlwZXMub2JqZWN0LFxuICAvKipcbiAgICogU3R5bGUgb2JqZWN0IHRvIGFkanVzdCBjc3MgZGVmaW5pdGlvbnMgb2YgdGhlIHJvdGF0ZSByaWdodCBidXR0b24uXG4gICAqL1xuICByb3RhdGVSaWdodFN0eWxlOiBQcm9wVHlwZXMub2JqZWN0LFxuICAvKipcbiAgICogU3R5bGUgb2JqZWN0IHRvIGFkanVzdCBjc3MgZGVmaW5pdGlvbnMgb2YgdGhlIHJvdGF0ZSBsZWZ0IGJ1dHRvbi5cbiAgICovXG4gIHJvdGF0ZUxlZnRTdHlsZTogUHJvcFR5cGVzLm9iamVjdCxcbn07XG5cbmV4cG9ydCBkZWZhdWx0IE1sTmF2aWdhdGlvbkNvbXBhc3M7XG4iXX0= */",
|
|
2148
|
+
toString: _EMOTION_STRINGIFIED_CSS_ERROR__
|
|
2149
|
+
});
|
|
2150
|
+
|
|
2151
|
+
var RotateButton = _styled("div", process.env.NODE_ENV === "production" ? {
|
|
2152
|
+
target: "e12lzm5x0"
|
|
2153
|
+
} : {
|
|
2154
|
+
target: "e12lzm5x0",
|
|
2155
|
+
label: "RotateButton"
|
|
2156
|
+
})(process.env.NODE_ENV === "production" ? {
|
|
2157
|
+
name: "1j4uu1m",
|
|
2158
|
+
styles: "width:30%;margin-top:14px;z-index:999;display:flex;svg:hover{cursor:pointer;}svg:hover path{fill:#ececec;filter:drop-shadow(0px 0px 5px rgba(0, 0, 0, 0.1));}path{fill:#bbb;}svg{transform:scale(0.6);z-index:9990;height:172px;}"
|
|
2159
|
+
} : {
|
|
2160
|
+
name: "1j4uu1m",
|
|
2161
|
+
styles: "width:30%;margin-top:14px;z-index:999;display:flex;svg:hover{cursor:pointer;}svg:hover path{fill:#ececec;filter:drop-shadow(0px 0px 5px rgba(0, 0, 0, 0.1));}path{fill:#bbb;}svg{transform:scale(0.6);z-index:9990;height:172px;}",
|
|
2162
|
+
map: "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIk1sTmF2aWdhdGlvbkNvbXBhc3MuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBMkQrQiIsImZpbGUiOiJNbE5hdmlnYXRpb25Db21wYXNzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFJlYWN0LCB7IHVzZVN0YXRlLCB1c2VSZWYsIHVzZUVmZmVjdCwgdXNlQ29udGV4dCB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuXG5pbXBvcnQgeyBNYXBDb250ZXh0IH0gZnJvbSBcIkBtYXBjb21wb25lbnRzL3JlYWN0LWNvcmVcIjtcbmltcG9ydCB7IHY0IGFzIHV1aWR2NCB9IGZyb20gXCJ1dWlkXCI7XG5cbmltcG9ydCB7IFJlYWN0Q29tcG9uZW50IGFzIFJvdGF0ZVJpZ2h0SWNvbiB9IGZyb20gXCIuL2Fzc2V0cy9yb3RhdGVfcmlnaHQuc3ZnXCI7XG5pbXBvcnQgeyBSZWFjdENvbXBvbmVudCBhcyBSb3RhdGVMZWZ0SWNvbiB9IGZyb20gXCIuL2Fzc2V0cy9yb3RhdGVfbGVmdC5zdmdcIjtcbmltcG9ydCB7IFJlYWN0Q29tcG9uZW50IGFzIE5lZWRsZUljb24gfSBmcm9tIFwiLi9hc3NldHMvbmVlZGxlLnN2Z1wiO1xuXG5pbXBvcnQgc3R5bGVkIGZyb20gXCJAZW1vdGlvbi9zdHlsZWRcIjtcbmltcG9ydCB7IGNzcyB9IGZyb20gXCJAZW1vdGlvbi9jc3NcIjtcblxuY29uc3QgTmVlZGxlQnV0dG9uID0gc3R5bGVkLmRpdmBcbiAgd2lkdGg6IDQwJTtcbiAgZGlzcGxheTogZmxleDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcblxuICAmOmhvdmVyIHtcbiAgICBjdXJzb3I6IHBvaW50ZXI7XG4gIH1cbiAgcGF0aCB7XG4gICAgZmlsdGVyOiBkcm9wLXNoYWRvdygwcHggMHB4IDE1cHggcmdiYSgwLCAwLCAwLCAwLjIpKTtcbiAgfVxuICAmOmhvdmVyIHBhdGgge1xuICAgIGZpbHRlcjogZHJvcC1zaGFkb3coMHB4IDBweCAxM3B4IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4xKSk7XG4gIH1cbiAgcGF0aDpudGgtb2YtdHlwZSgyKSB7XG4gICAgZmlsbDogIzM0MzQzNDtcbiAgfVxuICAmOmhvdmVyIHBhdGg6bnRoLW9mLXR5cGUoMikge1xuICAgIGZpbGw6ICM0MzQzNDM7XG4gIH1cbiAgcGF0aDpudGgtb2YtdHlwZSgxKSB7XG4gICAgZmlsbDogI2U5MDMxODtcbiAgfVxuICAmOmhvdmVyIHBhdGg6bnRoLW9mLXR5cGUoMSkge1xuICAgIGZpbGw6ICNmYjQwNTI7XG4gIH1cbmA7XG5jb25zdCBOZWVkbGVDb250YWluZXIgPSBzdHlsZWQuZGl2YFxuICBwb2ludGVyLWV2ZW50czogbm9uZTtcbiAgZGlzcGxheTogZmxleDtcbiAgei1pbmRleDogMTAwMjtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuXG4gIG1hcmdpbi1sZWZ0OiAtMzAlO1xuICBwYXRoOm50aC1vZi10eXBlKDIpIHtcbiAgfVxuICBzdmcgZyB7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoLTc2LjcwNTMsIC0yOS43NzI3KSBzY2FsZSgyLCAxKTtcbiAgfVxuICBzdmcge1xuICAgIHotaW5kZXg6IDk5OTA7XG4gICAgaGVpZ2h0OiAxNTBweDtcbiAgICB3aWR0aDogMjAwcHg7XG4gIH1cbmA7XG5jb25zdCBSb3RhdGVCdXR0b24gPSBzdHlsZWQuZGl2YFxuICB3aWR0aDogMzAlO1xuICBtYXJnaW4tdG9wOiAxNHB4O1xuICB6LWluZGV4OiA5OTk7XG4gIGRpc3BsYXk6IGZsZXg7XG5cbiAgc3ZnOmhvdmVyIHtcbiAgICBjdXJzb3I6IHBvaW50ZXI7XG4gIH1cbiAgc3ZnOmhvdmVyIHBhdGgge1xuICAgIGZpbGw6ICNlY2VjZWM7XG4gICAgZmlsdGVyOiBkcm9wLXNoYWRvdygwcHggMHB4IDVweCByZ2JhKDAsIDAsIDAsIDAuMSkpO1xuICB9XG4gIHBhdGgge1xuICAgIGZpbGw6ICNiYmI7XG4gIH1cbiAgc3ZnIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlKDAuNik7XG4gICAgei1pbmRleDogOTk5MDtcbiAgICBoZWlnaHQ6IDE3MnB4O1xuICB9XG5gO1xuXG4vKipcbiAqIE5hdmlnYXRpb24gY29tcG9uZW50IHRoYXQgZGlzcGxheXMgYSBjb21wYXNzIGNvbXBvbmVudCB3aGljaCBpbmRpY2F0ZXMgdGhlIGN1cnJlbnQgb3JpYW50YXRpb24gb2YgdGhlIG1hcCBpdCBpcyByZWdpc3RlcmVkIGZvciBhbmQgb2ZmZXJzIGNvbnRyb2xzIHRvIHR1cm4gdGhlIGJlYXJpbmcgOTDCsCBsZWZ0L3JpZ2h0IG9yIHJlc2V0IG5vcnRoIHRvIHBvaW50IHVwLlxuICpcbiAqIEFsbCBzdHlsZSBwcm9wcyBhcmUgYXBwbGllZCB1c2luZyBAZW1vdGlvbi9jc3MgdG8gYWxsb3cgbW9yZSBjb21wbGV4IGNzcyBzZWxlY3RvcnMuXG4gKlxuICogQGNvbXBvbmVudFxuICovXG5jb25zdCBNbE5hdmlnYXRpb25Db21wYXNzID0gKHByb3BzKSA9PiB7XG4gIC8vIFVzZSBhIHVzZVJlZiBob29rIHRvIHJlZmVyZW5jZSB0aGUgbGF5ZXIgb2JqZWN0IHRvIGJlIGFibGUgdG8gYWNjZXNzIGl0IGxhdGVyIGluc2lkZSB1c2VFZmZlY3QgaG9va3NcbiAgY29uc3QgbWFwQ29udGV4dCA9IHVzZUNvbnRleHQoTWFwQ29udGV4dCk7XG5cbiAgY29uc3QgaW5pdGlhbGl6ZWRSZWYgPSB1c2VSZWYoZmFsc2UpO1xuICBjb25zdCBtYXBSZWYgPSB1c2VSZWYodW5kZWZpbmVkKTtcbiAgY29uc3QgY29tcG9uZW50SWQgPSB1c2VSZWYoKHByb3BzLmlkUHJlZml4ID8gcHJvcHMuaWRQcmVmaXggOiBcIk1sTmF2aWdhdGlvbkNvbXBhc3MtXCIpICsgdXVpZHY0KCkpO1xuXG4gIGNvbnN0IFtiZWFyaW5nLCBzZXRCZWFyaW5nXSA9IHVzZVN0YXRlKDApO1xuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgbGV0IF9jb21wb25lbnRJZCA9IGNvbXBvbmVudElkLmN1cnJlbnQ7XG5cbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgLy8gVGhpcyBpcyB0aGUgY2xlYW51cCBmdW5jdGlvbiwgaXQgaXMgY2FsbGVkIHdoZW4gdGhpcyByZWFjdCBjb21wb25lbnQgaXMgcmVtb3ZlZCBmcm9tIHJlYWN0LWRvbVxuXG4gICAgICBpZiAobWFwUmVmLmN1cnJlbnQpIHtcbiAgICAgICAgbWFwUmVmLmN1cnJlbnQuY2xlYW51cChfY29tcG9uZW50SWQpO1xuICAgICAgICBtYXBSZWYuY3VycmVudCA9IHVuZGVmaW5lZDtcbiAgICAgIH1cbiAgICAgIGluaXRpYWxpemVkUmVmLmN1cnJlbnQgPSBmYWxzZTtcbiAgICB9O1xuICB9LCBbXSk7XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoIW1hcENvbnRleHQubWFwRXhpc3RzKHByb3BzLm1hcElkKSB8fCBpbml0aWFsaXplZFJlZi5jdXJyZW50KSByZXR1cm47XG4gICAgaW5pdGlhbGl6ZWRSZWYuY3VycmVudCA9IHRydWU7XG4gICAgbWFwUmVmLmN1cnJlbnQgPSBtYXBDb250ZXh0LmdldE1hcChwcm9wcy5tYXBJZCk7XG5cbiAgICBtYXBSZWYuY3VycmVudC5vbihcbiAgICAgIFwicm90YXRlXCIsXG4gICAgICBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHNldEJlYXJpbmcoTWF0aC5yb3VuZChtYXBSZWYuY3VycmVudC5nZXRCZWFyaW5nKCkpKTtcbiAgICAgIH0sXG4gICAgICBjb21wb25lbnRJZC5jdXJyZW50XG4gICAgKTtcbiAgICBzZXRCZWFyaW5nKE1hdGgucm91bmQobWFwUmVmLmN1cnJlbnQuZ2V0QmVhcmluZygpKSk7XG4gIH0sIFttYXBDb250ZXh0Lm1hcElkcywgbWFwQ29udGV4dCwgcHJvcHMubWFwSWRdKTtcblxuICByZXR1cm4gKFxuICAgIDw+XG4gICAgICA8ZGl2XG4gICAgICAgIGNsYXNzTmFtZT17Y3NzKHtcbiAgICAgICAgICB6SW5kZXg6IDEwMDAsXG4gICAgICAgICAgdG9wOiAwLFxuICAgICAgICAgIHBvc2l0aW9uOiBcImFic29sdXRlXCIsXG4gICAgICAgICAgLi4ucHJvcHMuc3R5bGUsXG4gICAgICAgIH0pfVxuICAgICAgPlxuICAgICAgICA8ZGl2XG4gICAgICAgICAgY2xhc3NOYW1lPXtjc3Moe1xuICAgICAgICAgICAgcG9zaXRpb246IFwiYWJzb2x1dGVcIixcbiAgICAgICAgICAgIGJvcmRlcjogXCIxMHB4IHNvbGlkICNiY2JjYmNcIixcbiAgICAgICAgICAgIGJhY2tncm91bmRDb2xvcjogXCIjNzE3MTcxXCIsXG4gICAgICAgICAgICBiYWNrZ3JvdW5kOiBcInJhZGlhbC1ncmFkaWVudCgjNzE3MTcxLCAjNDE0MTQxKVwiLFxuICAgICAgICAgICAgaGVpZ2h0OiBcIjIwMHB4XCIsXG4gICAgICAgICAgICB3aWR0aDogXCIyMDBweFwiLFxuICAgICAgICAgICAgYm9yZGVyUmFkaXVzOiBcIjUwJVwiLFxuICAgICAgICAgICAgZGlzcGxheTogXCJmbGV4XCIsXG4gICAgICAgICAgICBqdXN0aWZ5Q29udGVudDogXCJjZW50ZXJcIixcbiAgICAgICAgICAgIHRyYW5zZm9ybTogXCJzY2FsZSgwLjIpIHRyYW5zbGF0ZVgoLTQ0OHB4KSB0cmFuc2xhdGVZKC00NDhweClcIixcbiAgICAgICAgICAgIC4uLnByb3BzLmJhY2tncm91bmRTdHlsZSxcbiAgICAgICAgICB9KX1cbiAgICAgICAgPlxuICAgICAgICAgIDxSb3RhdGVCdXR0b24gY2xhc3NOYW1lPXtjc3MoeyAuLi5wcm9wcy5yb3RhdGVSaWdodFN0eWxlIH0pfT5cbiAgICAgICAgICAgIDxSb3RhdGVSaWdodEljb25cbiAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4ge1xuICAgICAgICAgICAgICAgIGxldCBiZWFyaW5nID0gTWF0aC5yb3VuZChtYXBSZWYuY3VycmVudD8uZ2V0QmVhcmluZygpKTtcbiAgICAgICAgICAgICAgICBsZXQgcmVzdCA9IE1hdGgucm91bmQoYmVhcmluZyAlIDkwKTtcbiAgICAgICAgICAgICAgICBpZiAoYmVhcmluZyA+IDApIHtcbiAgICAgICAgICAgICAgICAgIHJlc3QgPSA5MCAtIHJlc3Q7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmIChyZXN0ID09PSAwKSB7XG4gICAgICAgICAgICAgICAgICByZXN0ID0gOTA7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIG1hcFJlZi5jdXJyZW50Py5zZXRCZWFyaW5nKE1hdGgucm91bmQoYmVhcmluZyArIE1hdGguYWJzKHJlc3QpKSk7XG4gICAgICAgICAgICAgIH19XG4gICAgICAgICAgICA+PC9Sb3RhdGVSaWdodEljb24+XG4gICAgICAgICAgPC9Sb3RhdGVCdXR0b24+XG4gICAgICAgICAgPE5lZWRsZUJ1dHRvblxuICAgICAgICAgICAgY2xhc3NOYW1lPXtjc3MoeyAuLi5wcm9wcy5uZWVkbGVTdHlsZSB9KX1cbiAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHtcbiAgICAgICAgICAgICAgbWFwUmVmLmN1cnJlbnQ/LnNldEJlYXJpbmcoMCk7XG4gICAgICAgICAgICB9fVxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxOZWVkbGVDb250YWluZXJcbiAgICAgICAgICAgICAgc3R5bGU9e3tcbiAgICAgICAgICAgICAgICB0cmFuc2Zvcm06IFwicm90YXRlKFwiICsgYmVhcmluZyArIFwiZGVnKVwiLFxuICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8TmVlZGxlSWNvbiAvPlxuICAgICAgICAgICAgPC9OZWVkbGVDb250YWluZXI+XG4gICAgICAgICAgPC9OZWVkbGVCdXR0b24+XG4gICAgICAgICAgPFJvdGF0ZUJ1dHRvbiBjbGFzc05hbWU9e2Nzcyh7IC4uLnByb3BzLnJvdGF0ZUxlZnRTdHlsZSB9KX0+XG4gICAgICAgICAgICA8Um90YXRlTGVmdEljb25cbiAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4ge1xuICAgICAgICAgICAgICAgIGxldCBiZWFyaW5nID0gTWF0aC5yb3VuZChtYXBSZWYuY3VycmVudD8uZ2V0QmVhcmluZygpKTtcbiAgICAgICAgICAgICAgICBsZXQgcmVzdCA9IE1hdGgucm91bmQoYmVhcmluZyAlIDkwKTtcbiAgICAgICAgICAgICAgICBpZiAoYmVhcmluZyA8IDApIHtcbiAgICAgICAgICAgICAgICAgIHJlc3QgPSA5MCArIHJlc3Q7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmIChyZXN0ID09PSAwKSB7XG4gICAgICAgICAgICAgICAgICByZXN0ID0gOTA7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIG1hcFJlZi5jdXJyZW50Py5zZXRCZWFyaW5nKE1hdGgucm91bmQoYmVhcmluZyAtIE1hdGguYWJzKHJlc3QpKSk7XG4gICAgICAgICAgICAgIH19XG4gICAgICAgICAgICA+PC9Sb3RhdGVMZWZ0SWNvbj5cbiAgICAgICAgICA8L1JvdGF0ZUJ1dHRvbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8Lz5cbiAgKTtcbn07XG5cbk1sTmF2aWdhdGlvbkNvbXBhc3MucHJvcFR5cGVzID0ge1xuICAvKipcbiAgICogQ29tcG9uZW50IGlkIHByZWZpeFxuICAgKi9cbiAgaWRQcmVmaXg6IFByb3BUeXBlcy5zdHJpbmcsXG4gIC8qKlxuICAgKiBTdHlsZSBvYmplY3QgdG8gYWRqdXN0IGNzcyBkZWZpbml0aW9ucyBvZiB0aGUgY29tcG9uZW50LlxuICAgKi9cbiAgc3R5bGU6IFByb3BUeXBlcy5vYmplY3QsXG4gIC8qKlxuICAgKiBTdHlsZSBvYmplY3QgdG8gYWRqdXN0IGNzcyBkZWZpbml0aW9ucyBvZiB0aGUgYmFja2dyb3VuZC5cbiAgICovXG4gIGJhY2tncm91bmRTdHlsZTogUHJvcFR5cGVzLm9iamVjdCxcbiAgLyoqXG4gICAqIFN0eWxlIG9iamVjdCB0byBhZGp1c3QgY3NzIGRlZmluaXRpb25zIG9mIHRoZSBjb21wYXNzIG5lZWRsZS5cbiAgICovXG4gIG5lZWRsZVN0eWxlOiBQcm9wVHlwZXMub2JqZWN0LFxuICAvKipcbiAgICogU3R5bGUgb2JqZWN0IHRvIGFkanVzdCBjc3MgZGVmaW5pdGlvbnMgb2YgdGhlIHJvdGF0ZSByaWdodCBidXR0b24uXG4gICAqL1xuICByb3RhdGVSaWdodFN0eWxlOiBQcm9wVHlwZXMub2JqZWN0LFxuICAvKipcbiAgICogU3R5bGUgb2JqZWN0IHRvIGFkanVzdCBjc3MgZGVmaW5pdGlvbnMgb2YgdGhlIHJvdGF0ZSBsZWZ0IGJ1dHRvbi5cbiAgICovXG4gIHJvdGF0ZUxlZnRTdHlsZTogUHJvcFR5cGVzLm9iamVjdCxcbn07XG5cbmV4cG9ydCBkZWZhdWx0IE1sTmF2aWdhdGlvbkNvbXBhc3M7XG4iXX0= */",
|
|
2163
|
+
toString: _EMOTION_STRINGIFIED_CSS_ERROR__
|
|
2164
|
+
});
|
|
2165
|
+
/**
|
|
2166
|
+
* Navigation component that displays a compass component which indicates the current oriantation of the map it is registered for and offers controls to turn the bearing 90° left/right or reset north to point up.
|
|
2167
|
+
*
|
|
2168
|
+
* All style props are applied using @emotion/css to allow more complex css selectors.
|
|
2169
|
+
*
|
|
2170
|
+
* @component
|
|
2171
|
+
*/
|
|
2172
|
+
|
|
2173
|
+
|
|
2174
|
+
var MlNavigationCompass = function MlNavigationCompass(props) {
|
|
2175
|
+
// Use a useRef hook to reference the layer object to be able to access it later inside useEffect hooks
|
|
2176
|
+
var mapContext = useContext(MapContext);
|
|
2177
|
+
var initializedRef = useRef(false);
|
|
2178
|
+
var mapRef = useRef(undefined);
|
|
2179
|
+
var componentId = useRef((props.idPrefix ? props.idPrefix : "MlNavigationCompass-") + v4());
|
|
2180
|
+
|
|
2181
|
+
var _useState = useState(0),
|
|
2182
|
+
_useState2 = _slicedToArray(_useState, 2),
|
|
2183
|
+
bearing = _useState2[0],
|
|
2184
|
+
setBearing = _useState2[1];
|
|
2185
|
+
|
|
2186
|
+
useEffect(function () {
|
|
2187
|
+
var _componentId = componentId.current;
|
|
2188
|
+
return function () {
|
|
2189
|
+
// This is the cleanup function, it is called when this react component is removed from react-dom
|
|
2190
|
+
if (mapRef.current) {
|
|
2191
|
+
mapRef.current.cleanup(_componentId);
|
|
2192
|
+
mapRef.current = undefined;
|
|
2193
|
+
}
|
|
2194
|
+
|
|
2195
|
+
initializedRef.current = false;
|
|
2196
|
+
};
|
|
2197
|
+
}, []);
|
|
2198
|
+
useEffect(function () {
|
|
2199
|
+
if (!mapContext.mapExists(props.mapId) || initializedRef.current) return;
|
|
2200
|
+
initializedRef.current = true;
|
|
2201
|
+
mapRef.current = mapContext.getMap(props.mapId);
|
|
2202
|
+
mapRef.current.on("rotate", function () {
|
|
2203
|
+
setBearing(Math.round(mapRef.current.getBearing()));
|
|
2204
|
+
}, componentId.current);
|
|
2205
|
+
setBearing(Math.round(mapRef.current.getBearing()));
|
|
2206
|
+
}, [mapContext.mapIds, mapContext, props.mapId]);
|
|
2207
|
+
return /*#__PURE__*/React__default.createElement(React__default.Fragment, null, /*#__PURE__*/React__default.createElement("div", {
|
|
2208
|
+
className: /*#__PURE__*/css(_objectSpread2({
|
|
2209
|
+
zIndex: 1000,
|
|
2210
|
+
top: 0,
|
|
1805
2211
|
position: "absolute"
|
|
1806
2212
|
}, props.style), process.env.NODE_ENV === "production" ? "" : ";label:MlNavigationCompass;", process.env.NODE_ENV === "production" ? "" : "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIk1sTmF2aWdhdGlvbkNvbXBhc3MuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBbUltQiIsImZpbGUiOiJNbE5hdmlnYXRpb25Db21wYXNzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFJlYWN0LCB7IHVzZVN0YXRlLCB1c2VSZWYsIHVzZUVmZmVjdCwgdXNlQ29udGV4dCB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuXG5pbXBvcnQgeyBNYXBDb250ZXh0IH0gZnJvbSBcIkBtYXBjb21wb25lbnRzL3JlYWN0LWNvcmVcIjtcbmltcG9ydCB7IHY0IGFzIHV1aWR2NCB9IGZyb20gXCJ1dWlkXCI7XG5cbmltcG9ydCB7IFJlYWN0Q29tcG9uZW50IGFzIFJvdGF0ZVJpZ2h0SWNvbiB9IGZyb20gXCIuL2Fzc2V0cy9yb3RhdGVfcmlnaHQuc3ZnXCI7XG5pbXBvcnQgeyBSZWFjdENvbXBvbmVudCBhcyBSb3RhdGVMZWZ0SWNvbiB9IGZyb20gXCIuL2Fzc2V0cy9yb3RhdGVfbGVmdC5zdmdcIjtcbmltcG9ydCB7IFJlYWN0Q29tcG9uZW50IGFzIE5lZWRsZUljb24gfSBmcm9tIFwiLi9hc3NldHMvbmVlZGxlLnN2Z1wiO1xuXG5pbXBvcnQgc3R5bGVkIGZyb20gXCJAZW1vdGlvbi9zdHlsZWRcIjtcbmltcG9ydCB7IGNzcyB9IGZyb20gXCJAZW1vdGlvbi9jc3NcIjtcblxuY29uc3QgTmVlZGxlQnV0dG9uID0gc3R5bGVkLmRpdmBcbiAgd2lkdGg6IDQwJTtcbiAgZGlzcGxheTogZmxleDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcblxuICAmOmhvdmVyIHtcbiAgICBjdXJzb3I6IHBvaW50ZXI7XG4gIH1cbiAgcGF0aCB7XG4gICAgZmlsdGVyOiBkcm9wLXNoYWRvdygwcHggMHB4IDE1cHggcmdiYSgwLCAwLCAwLCAwLjIpKTtcbiAgfVxuICAmOmhvdmVyIHBhdGgge1xuICAgIGZpbHRlcjogZHJvcC1zaGFkb3coMHB4IDBweCAxM3B4IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4xKSk7XG4gIH1cbiAgcGF0aDpudGgtb2YtdHlwZSgyKSB7XG4gICAgZmlsbDogIzM0MzQzNDtcbiAgfVxuICAmOmhvdmVyIHBhdGg6bnRoLW9mLXR5cGUoMikge1xuICAgIGZpbGw6ICM0MzQzNDM7XG4gIH1cbiAgcGF0aDpudGgtb2YtdHlwZSgxKSB7XG4gICAgZmlsbDogI2U5MDMxODtcbiAgfVxuICAmOmhvdmVyIHBhdGg6bnRoLW9mLXR5cGUoMSkge1xuICAgIGZpbGw6ICNmYjQwNTI7XG4gIH1cbmA7XG5jb25zdCBOZWVkbGVDb250YWluZXIgPSBzdHlsZWQuZGl2YFxuICBwb2ludGVyLWV2ZW50czogbm9uZTtcbiAgZGlzcGxheTogZmxleDtcbiAgei1pbmRleDogMTAwMjtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuXG4gIG1hcmdpbi1sZWZ0OiAtMzAlO1xuICBwYXRoOm50aC1vZi10eXBlKDIpIHtcbiAgfVxuICBzdmcgZyB7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoLTc2LjcwNTMsIC0yOS43NzI3KSBzY2FsZSgyLCAxKTtcbiAgfVxuICBzdmcge1xuICAgIHotaW5kZXg6IDk5OTA7XG4gICAgaGVpZ2h0OiAxNTBweDtcbiAgICB3aWR0aDogMjAwcHg7XG4gIH1cbmA7XG5jb25zdCBSb3RhdGVCdXR0b24gPSBzdHlsZWQuZGl2YFxuICB3aWR0aDogMzAlO1xuICBtYXJnaW4tdG9wOiAxNHB4O1xuICB6LWluZGV4OiA5OTk7XG4gIGRpc3BsYXk6IGZsZXg7XG5cbiAgc3ZnOmhvdmVyIHtcbiAgICBjdXJzb3I6IHBvaW50ZXI7XG4gIH1cbiAgc3ZnOmhvdmVyIHBhdGgge1xuICAgIGZpbGw6ICNlY2VjZWM7XG4gICAgZmlsdGVyOiBkcm9wLXNoYWRvdygwcHggMHB4IDVweCByZ2JhKDAsIDAsIDAsIDAuMSkpO1xuICB9XG4gIHBhdGgge1xuICAgIGZpbGw6ICNiYmI7XG4gIH1cbiAgc3ZnIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlKDAuNik7XG4gICAgei1pbmRleDogOTk5MDtcbiAgICBoZWlnaHQ6IDE3MnB4O1xuICB9XG5gO1xuXG4vKipcbiAqIE5hdmlnYXRpb24gY29tcG9uZW50IHRoYXQgZGlzcGxheXMgYSBjb21wYXNzIGNvbXBvbmVudCB3aGljaCBpbmRpY2F0ZXMgdGhlIGN1cnJlbnQgb3JpYW50YXRpb24gb2YgdGhlIG1hcCBpdCBpcyByZWdpc3RlcmVkIGZvciBhbmQgb2ZmZXJzIGNvbnRyb2xzIHRvIHR1cm4gdGhlIGJlYXJpbmcgOTDCsCBsZWZ0L3JpZ2h0IG9yIHJlc2V0IG5vcnRoIHRvIHBvaW50IHVwLlxuICpcbiAqIEFsbCBzdHlsZSBwcm9wcyBhcmUgYXBwbGllZCB1c2luZyBAZW1vdGlvbi9jc3MgdG8gYWxsb3cgbW9yZSBjb21wbGV4IGNzcyBzZWxlY3RvcnMuXG4gKlxuICogQGNvbXBvbmVudFxuICovXG5jb25zdCBNbE5hdmlnYXRpb25Db21wYXNzID0gKHByb3BzKSA9PiB7XG4gIC8vIFVzZSBhIHVzZVJlZiBob29rIHRvIHJlZmVyZW5jZSB0aGUgbGF5ZXIgb2JqZWN0IHRvIGJlIGFibGUgdG8gYWNjZXNzIGl0IGxhdGVyIGluc2lkZSB1c2VFZmZlY3QgaG9va3NcbiAgY29uc3QgbWFwQ29udGV4dCA9IHVzZUNvbnRleHQoTWFwQ29udGV4dCk7XG5cbiAgY29uc3QgaW5pdGlhbGl6ZWRSZWYgPSB1c2VSZWYoZmFsc2UpO1xuICBjb25zdCBtYXBSZWYgPSB1c2VSZWYodW5kZWZpbmVkKTtcbiAgY29uc3QgY29tcG9uZW50SWQgPSB1c2VSZWYoKHByb3BzLmlkUHJlZml4ID8gcHJvcHMuaWRQcmVmaXggOiBcIk1sTmF2aWdhdGlvbkNvbXBhc3MtXCIpICsgdXVpZHY0KCkpO1xuXG4gIGNvbnN0IFtiZWFyaW5nLCBzZXRCZWFyaW5nXSA9IHVzZVN0YXRlKDApO1xuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgbGV0IF9jb21wb25lbnRJZCA9IGNvbXBvbmVudElkLmN1cnJlbnQ7XG5cbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgLy8gVGhpcyBpcyB0aGUgY2xlYW51cCBmdW5jdGlvbiwgaXQgaXMgY2FsbGVkIHdoZW4gdGhpcyByZWFjdCBjb21wb25lbnQgaXMgcmVtb3ZlZCBmcm9tIHJlYWN0LWRvbVxuXG4gICAgICBpZiAobWFwUmVmLmN1cnJlbnQpIHtcbiAgICAgICAgbWFwUmVmLmN1cnJlbnQuY2xlYW51cChfY29tcG9uZW50SWQpO1xuICAgICAgICBtYXBSZWYuY3VycmVudCA9IHVuZGVmaW5lZDtcbiAgICAgIH1cbiAgICAgIGluaXRpYWxpemVkUmVmLmN1cnJlbnQgPSBmYWxzZTtcbiAgICB9O1xuICB9LCBbXSk7XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoIW1hcENvbnRleHQubWFwRXhpc3RzKHByb3BzLm1hcElkKSB8fCBpbml0aWFsaXplZFJlZi5jdXJyZW50KSByZXR1cm47XG4gICAgaW5pdGlhbGl6ZWRSZWYuY3VycmVudCA9IHRydWU7XG4gICAgbWFwUmVmLmN1cnJlbnQgPSBtYXBDb250ZXh0LmdldE1hcChwcm9wcy5tYXBJZCk7XG5cbiAgICBtYXBSZWYuY3VycmVudC5vbihcbiAgICAgIFwicm90YXRlXCIsXG4gICAgICBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHNldEJlYXJpbmcoTWF0aC5yb3VuZChtYXBSZWYuY3VycmVudC5nZXRCZWFyaW5nKCkpKTtcbiAgICAgIH0sXG4gICAgICBjb21wb25lbnRJZC5jdXJyZW50XG4gICAgKTtcbiAgICBzZXRCZWFyaW5nKE1hdGgucm91bmQobWFwUmVmLmN1cnJlbnQuZ2V0QmVhcmluZygpKSk7XG4gIH0sIFttYXBDb250ZXh0Lm1hcElkcywgbWFwQ29udGV4dCwgcHJvcHMubWFwSWRdKTtcblxuICByZXR1cm4gKFxuICAgIDw+XG4gICAgICA8ZGl2XG4gICAgICAgIGNsYXNzTmFtZT17Y3NzKHtcbiAgICAgICAgICB6SW5kZXg6IDEwMDAsXG4gICAgICAgICAgdG9wOiAwLFxuICAgICAgICAgIHBvc2l0aW9uOiBcImFic29sdXRlXCIsXG4gICAgICAgICAgLi4ucHJvcHMuc3R5bGUsXG4gICAgICAgIH0pfVxuICAgICAgPlxuICAgICAgICA8ZGl2XG4gICAgICAgICAgY2xhc3NOYW1lPXtjc3Moe1xuICAgICAgICAgICAgcG9zaXRpb246IFwiYWJzb2x1dGVcIixcbiAgICAgICAgICAgIGJvcmRlcjogXCIxMHB4IHNvbGlkICNiY2JjYmNcIixcbiAgICAgICAgICAgIGJhY2tncm91bmRDb2xvcjogXCIjNzE3MTcxXCIsXG4gICAgICAgICAgICBiYWNrZ3JvdW5kOiBcInJhZGlhbC1ncmFkaWVudCgjNzE3MTcxLCAjNDE0MTQxKVwiLFxuICAgICAgICAgICAgaGVpZ2h0OiBcIjIwMHB4XCIsXG4gICAgICAgICAgICB3aWR0aDogXCIyMDBweFwiLFxuICAgICAgICAgICAgYm9yZGVyUmFkaXVzOiBcIjUwJVwiLFxuICAgICAgICAgICAgZGlzcGxheTogXCJmbGV4XCIsXG4gICAgICAgICAgICBqdXN0aWZ5Q29udGVudDogXCJjZW50ZXJcIixcbiAgICAgICAgICAgIHRyYW5zZm9ybTogXCJzY2FsZSgwLjIpIHRyYW5zbGF0ZVgoLTQ0OHB4KSB0cmFuc2xhdGVZKC00NDhweClcIixcbiAgICAgICAgICAgIC4uLnByb3BzLmJhY2tncm91bmRTdHlsZSxcbiAgICAgICAgICB9KX1cbiAgICAgICAgPlxuICAgICAgICAgIDxSb3RhdGVCdXR0b24gY2xhc3NOYW1lPXtjc3MoeyAuLi5wcm9wcy5yb3RhdGVSaWdodFN0eWxlIH0pfT5cbiAgICAgICAgICAgIDxSb3RhdGVSaWdodEljb25cbiAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4ge1xuICAgICAgICAgICAgICAgIGxldCBiZWFyaW5nID0gTWF0aC5yb3VuZChtYXBSZWYuY3VycmVudD8uZ2V0QmVhcmluZygpKTtcbiAgICAgICAgICAgICAgICBsZXQgcmVzdCA9IE1hdGgucm91bmQoYmVhcmluZyAlIDkwKTtcbiAgICAgICAgICAgICAgICBpZiAoYmVhcmluZyA+IDApIHtcbiAgICAgICAgICAgICAgICAgIHJlc3QgPSA5MCAtIHJlc3Q7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmIChyZXN0ID09PSAwKSB7XG4gICAgICAgICAgICAgICAgICByZXN0ID0gOTA7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIG1hcFJlZi5jdXJyZW50Py5zZXRCZWFyaW5nKE1hdGgucm91bmQoYmVhcmluZyArIE1hdGguYWJzKHJlc3QpKSk7XG4gICAgICAgICAgICAgIH19XG4gICAgICAgICAgICA+PC9Sb3RhdGVSaWdodEljb24+XG4gICAgICAgICAgPC9Sb3RhdGVCdXR0b24+XG4gICAgICAgICAgPE5lZWRsZUJ1dHRvblxuICAgICAgICAgICAgY2xhc3NOYW1lPXtjc3MoeyAuLi5wcm9wcy5uZWVkbGVTdHlsZSB9KX1cbiAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHtcbiAgICAgICAgICAgICAgbWFwUmVmLmN1cnJlbnQ/LnNldEJlYXJpbmcoMCk7XG4gICAgICAgICAgICB9fVxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxOZWVkbGVDb250YWluZXJcbiAgICAgICAgICAgICAgc3R5bGU9e3tcbiAgICAgICAgICAgICAgICB0cmFuc2Zvcm06IFwicm90YXRlKFwiICsgYmVhcmluZyArIFwiZGVnKVwiLFxuICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8TmVlZGxlSWNvbiAvPlxuICAgICAgICAgICAgPC9OZWVkbGVDb250YWluZXI+XG4gICAgICAgICAgPC9OZWVkbGVCdXR0b24+XG4gICAgICAgICAgPFJvdGF0ZUJ1dHRvbiBjbGFzc05hbWU9e2Nzcyh7IC4uLnByb3BzLnJvdGF0ZUxlZnRTdHlsZSB9KX0+XG4gICAgICAgICAgICA8Um90YXRlTGVmdEljb25cbiAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4ge1xuICAgICAgICAgICAgICAgIGxldCBiZWFyaW5nID0gTWF0aC5yb3VuZChtYXBSZWYuY3VycmVudD8uZ2V0QmVhcmluZygpKTtcbiAgICAgICAgICAgICAgICBsZXQgcmVzdCA9IE1hdGgucm91bmQoYmVhcmluZyAlIDkwKTtcbiAgICAgICAgICAgICAgICBpZiAoYmVhcmluZyA8IDApIHtcbiAgICAgICAgICAgICAgICAgIHJlc3QgPSA5MCArIHJlc3Q7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmIChyZXN0ID09PSAwKSB7XG4gICAgICAgICAgICAgICAgICByZXN0ID0gOTA7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIG1hcFJlZi5jdXJyZW50Py5zZXRCZWFyaW5nKE1hdGgucm91bmQoYmVhcmluZyAtIE1hdGguYWJzKHJlc3QpKSk7XG4gICAgICAgICAgICAgIH19XG4gICAgICAgICAgICA+PC9Sb3RhdGVMZWZ0SWNvbj5cbiAgICAgICAgICA8L1JvdGF0ZUJ1dHRvbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8Lz5cbiAgKTtcbn07XG5cbk1sTmF2aWdhdGlvbkNvbXBhc3MucHJvcFR5cGVzID0ge1xuICAvKipcbiAgICogQ29tcG9uZW50IGlkIHByZWZpeFxuICAgKi9cbiAgaWRQcmVmaXg6IFByb3BUeXBlcy5zdHJpbmcsXG4gIC8qKlxuICAgKiBTdHlsZSBvYmplY3QgdG8gYWRqdXN0IGNzcyBkZWZpbml0aW9ucyBvZiB0aGUgY29tcG9uZW50LlxuICAgKi9cbiAgc3R5bGU6IFByb3BUeXBlcy5vYmplY3QsXG4gIC8qKlxuICAgKiBTdHlsZSBvYmplY3QgdG8gYWRqdXN0IGNzcyBkZWZpbml0aW9ucyBvZiB0aGUgYmFja2dyb3VuZC5cbiAgICovXG4gIGJhY2tncm91bmRTdHlsZTogUHJvcFR5cGVzLm9iamVjdCxcbiAgLyoqXG4gICAqIFN0eWxlIG9iamVjdCB0byBhZGp1c3QgY3NzIGRlZmluaXRpb25zIG9mIHRoZSBjb21wYXNzIG5lZWRsZS5cbiAgICovXG4gIG5lZWRsZVN0eWxlOiBQcm9wVHlwZXMub2JqZWN0LFxuICAvKipcbiAgICogU3R5bGUgb2JqZWN0IHRvIGFkanVzdCBjc3MgZGVmaW5pdGlvbnMgb2YgdGhlIHJvdGF0ZSByaWdodCBidXR0b24uXG4gICAqL1xuICByb3RhdGVSaWdodFN0eWxlOiBQcm9wVHlwZXMub2JqZWN0LFxuICAvKipcbiAgICogU3R5bGUgb2JqZWN0IHRvIGFkanVzdCBjc3MgZGVmaW5pdGlvbnMgb2YgdGhlIHJvdGF0ZSBsZWZ0IGJ1dHRvbi5cbiAgICovXG4gIHJvdGF0ZUxlZnRTdHlsZTogUHJvcFR5cGVzLm9iamVjdCxcbn07XG5cbmV4cG9ydCBkZWZhdWx0IE1sTmF2aWdhdGlvbkNvbXBhc3M7XG4iXX0= */")
|
|
1807
2213
|
}, /*#__PURE__*/React__default.createElement("div", {
|
|
@@ -1860,200 +2266,49 @@ var MlNavigationCompass = function MlNavigationCompass(props) {
|
|
|
1860
2266
|
rest = 90 + rest;
|
|
1861
2267
|
}
|
|
1862
2268
|
|
|
1863
|
-
if (rest === 0) {
|
|
1864
|
-
rest = 90;
|
|
1865
|
-
}
|
|
1866
|
-
|
|
1867
|
-
(_mapRef$current5 = mapRef.current) === null || _mapRef$current5 === void 0 ? void 0 : _mapRef$current5.setBearing(Math.round(bearing - Math.abs(rest)));
|
|
1868
|
-
}
|
|
1869
|
-
})))));
|
|
1870
|
-
};
|
|
1871
|
-
|
|
1872
|
-
MlNavigationCompass.propTypes = {
|
|
1873
|
-
/**
|
|
1874
|
-
* Component id prefix
|
|
1875
|
-
*/
|
|
1876
|
-
idPrefix: PropTypes.string,
|
|
1877
|
-
|
|
1878
|
-
/**
|
|
1879
|
-
* Style object to adjust css definitions of the component.
|
|
1880
|
-
*/
|
|
1881
|
-
style: PropTypes.object,
|
|
1882
|
-
|
|
1883
|
-
/**
|
|
1884
|
-
* Style object to adjust css definitions of the background.
|
|
1885
|
-
*/
|
|
1886
|
-
backgroundStyle: PropTypes.object,
|
|
1887
|
-
|
|
1888
|
-
/**
|
|
1889
|
-
* Style object to adjust css definitions of the compass needle.
|
|
1890
|
-
*/
|
|
1891
|
-
needleStyle: PropTypes.object,
|
|
1892
|
-
|
|
1893
|
-
/**
|
|
1894
|
-
* Style object to adjust css definitions of the rotate right button.
|
|
1895
|
-
*/
|
|
1896
|
-
rotateRightStyle: PropTypes.object,
|
|
1897
|
-
|
|
1898
|
-
/**
|
|
1899
|
-
* Style object to adjust css definitions of the rotate left button.
|
|
1900
|
-
*/
|
|
1901
|
-
rotateLeftStyle: PropTypes.object
|
|
1902
|
-
};
|
|
1903
|
-
|
|
1904
|
-
/**
|
|
1905
|
-
* Adds a button that makes the map follow the users GPS position using
|
|
1906
|
-
* navigator.geolocation.watchPosition if activated
|
|
1907
|
-
*
|
|
1908
|
-
* @param {object} props
|
|
1909
|
-
* @param {string} props.mapId Id of the target MapLibre instance in mapContext
|
|
1910
|
-
*
|
|
1911
|
-
* @component
|
|
1912
|
-
*/
|
|
1913
|
-
|
|
1914
|
-
var MlFollowGps = function MlFollowGps(props) {
|
|
1915
|
-
// Use a useRef hook to reference the layer object to be able to access it later inside useEffect hooks
|
|
1916
|
-
var mapContext = useContext(MapContext);
|
|
1917
|
-
|
|
1918
|
-
var _useState = useState(false),
|
|
1919
|
-
_useState2 = _slicedToArray(_useState, 2),
|
|
1920
|
-
isFollowed = _useState2[0],
|
|
1921
|
-
setIsFollowed = _useState2[1];
|
|
1922
|
-
|
|
1923
|
-
var _useState3 = useState(undefined),
|
|
1924
|
-
_useState4 = _slicedToArray(_useState3, 2),
|
|
1925
|
-
geoJson = _useState4[0],
|
|
1926
|
-
setGeoJson = _useState4[1];
|
|
1927
|
-
|
|
1928
|
-
var watchIdRef = useRef(undefined);
|
|
1929
|
-
|
|
1930
|
-
var _useState5 = useState(false),
|
|
1931
|
-
_useState6 = _slicedToArray(_useState5, 2),
|
|
1932
|
-
locationAccessDenied = _useState6[0],
|
|
1933
|
-
setLocationAccessDenied = _useState6[1];
|
|
1934
|
-
|
|
1935
|
-
var initializedRef = useRef(false);
|
|
1936
|
-
var mapRef = useRef(undefined);
|
|
1937
|
-
var componentId = useRef((props.idPrefix ? props.idPrefix : "MlFollowGps-") + v4());
|
|
1938
|
-
|
|
1939
|
-
var _useState7 = useState(30),
|
|
1940
|
-
_useState8 = _slicedToArray(_useState7, 2),
|
|
1941
|
-
accuracyRadius = _useState8[0],
|
|
1942
|
-
setAccuracyRadius = _useState8[1];
|
|
1943
|
-
|
|
1944
|
-
useEffect(function () {
|
|
1945
|
-
var _componentId = componentId.current;
|
|
1946
|
-
return function () {
|
|
1947
|
-
// This is the cleanup function, it is called when this react component is removed from react-dom
|
|
1948
|
-
// try to remove anything this component has added to the MapLibre-gl instance
|
|
1949
|
-
// e.g.: remove the layer
|
|
1950
|
-
// mapContext.getMap(props.mapId).removeLayer(layerRef.current);
|
|
1951
|
-
// check for the existence of map.style before calling getLayer or getSource
|
|
1952
|
-
if (mapRef.current) {
|
|
1953
|
-
mapRef.current.cleanup(_componentId);
|
|
1954
|
-
mapRef.current = undefined;
|
|
1955
|
-
}
|
|
1956
|
-
|
|
1957
|
-
if (watchIdRef.current) {
|
|
1958
|
-
initializedRef.current = false;
|
|
1959
|
-
navigator.geolocation.clearWatch(watchIdRef.current);
|
|
1960
|
-
watchIdRef.current = undefined;
|
|
1961
|
-
}
|
|
1962
|
-
};
|
|
1963
|
-
}, []);
|
|
1964
|
-
useEffect(function () {
|
|
1965
|
-
if (!mapContext.mapExists(props.mapId) || initializedRef.current) return; // the MapLibre-gl instance (mapContext.getMap(props.mapId)) is accessible here
|
|
1966
|
-
// initialize the layer and add it to the MapLibre-gl instance or do something else with it
|
|
1967
|
-
|
|
1968
|
-
initializedRef.current = true;
|
|
1969
|
-
mapRef.current = mapContext.getMap(props.mapId);
|
|
1970
|
-
mapRef.current.setCenter([7.132122000552613, 50.716405378037706]);
|
|
1971
|
-
}, [mapContext.mapIds, mapContext, props.mapId]);
|
|
1972
|
-
|
|
1973
|
-
var getLocationSuccess = function getLocationSuccess(pos) {
|
|
1974
|
-
if (!mapRef.current) return;
|
|
1975
|
-
mapRef.current.setCenter([pos.coords.longitude, pos.coords.latitude]);
|
|
1976
|
-
setAccuracyRadius(pos.coords.accuracy);
|
|
1977
|
-
setGeoJson(point([pos.coords.longitude, pos.coords.latitude]));
|
|
1978
|
-
};
|
|
1979
|
-
|
|
1980
|
-
var getLocationError = function getLocationError(err) {
|
|
1981
|
-
console.log("Access of user location denied");
|
|
1982
|
-
setLocationAccessDenied(true);
|
|
1983
|
-
};
|
|
1984
|
-
|
|
1985
|
-
return /*#__PURE__*/React__default.createElement(React__default.Fragment, null, isFollowed && geoJson && /*#__PURE__*/React__default.createElement(MlGeoJsonLayer, {
|
|
1986
|
-
geojson: geoJson,
|
|
1987
|
-
type: "circle",
|
|
1988
|
-
paint: {
|
|
1989
|
-
"circle-radius": {
|
|
1990
|
-
stops: [[0, 0], [20, accuracyRadius / 0.075 / Math.cos(geoJson.geometry.coordinates[1] * Math.PI / 180)]],
|
|
1991
|
-
base: 2
|
|
1992
|
-
},
|
|
1993
|
-
"circle-color": "#ee7700",
|
|
1994
|
-
"circle-opacity": 0.5
|
|
1995
|
-
}
|
|
1996
|
-
}), isFollowed && geoJson && /*#__PURE__*/React__default.createElement(MlImageMarkerLayer, {
|
|
1997
|
-
options: {
|
|
1998
|
-
type: "symbol",
|
|
1999
|
-
source: {
|
|
2000
|
-
type: "geojson",
|
|
2001
|
-
data: geoJson
|
|
2002
|
-
},
|
|
2003
|
-
layout: {
|
|
2004
|
-
"icon-size": 0.1,
|
|
2005
|
-
"icon-offset": [0, -340]
|
|
2006
|
-
}
|
|
2007
|
-
},
|
|
2008
|
-
imgSrc: "/assets/marker.png"
|
|
2009
|
-
}), /*#__PURE__*/React__default.createElement(Button, {
|
|
2010
|
-
sx: _objectSpread2({
|
|
2011
|
-
zIndex: 1002,
|
|
2012
|
-
color: isFollowed ? "#bbb" : "#666"
|
|
2013
|
-
}, props.style),
|
|
2014
|
-
disabled: locationAccessDenied,
|
|
2015
|
-
onClick: function onClick() {
|
|
2016
|
-
if (isFollowed) {
|
|
2017
|
-
navigator.geolocation.clearWatch(watchIdRef.current);
|
|
2018
|
-
} else {
|
|
2019
|
-
watchIdRef.current = navigator.geolocation.watchPosition(getLocationSuccess, getLocationError);
|
|
2020
|
-
}
|
|
2021
|
-
|
|
2022
|
-
setIsFollowed(!isFollowed);
|
|
2023
|
-
}
|
|
2024
|
-
}, " ", /*#__PURE__*/React__default.createElement(RoomIcon, {
|
|
2025
|
-
sx: {}
|
|
2026
|
-
}), " "));
|
|
2027
|
-
};
|
|
2269
|
+
if (rest === 0) {
|
|
2270
|
+
rest = 90;
|
|
2271
|
+
}
|
|
2028
2272
|
|
|
2029
|
-
|
|
2030
|
-
mapId: undefined,
|
|
2031
|
-
style: {
|
|
2032
|
-
minWidth: "30px",
|
|
2033
|
-
minHeight: "30px",
|
|
2034
|
-
width: "30px",
|
|
2035
|
-
height: "30px",
|
|
2036
|
-
backgroundColor: "#414141",
|
|
2037
|
-
borderRadius: "23%",
|
|
2038
|
-
margin: 0.15,
|
|
2039
|
-
":hover": {
|
|
2040
|
-
backgroundColor: "#515151",
|
|
2041
|
-
color: "#ececec"
|
|
2273
|
+
(_mapRef$current5 = mapRef.current) === null || _mapRef$current5 === void 0 ? void 0 : _mapRef$current5.setBearing(Math.round(bearing - Math.abs(rest)));
|
|
2042
2274
|
}
|
|
2043
|
-
}
|
|
2275
|
+
})))));
|
|
2044
2276
|
};
|
|
2045
|
-
|
|
2277
|
+
|
|
2278
|
+
MlNavigationCompass.propTypes = {
|
|
2046
2279
|
/**
|
|
2047
|
-
*
|
|
2280
|
+
* Component id prefix
|
|
2048
2281
|
*/
|
|
2049
|
-
|
|
2282
|
+
idPrefix: PropTypes.string,
|
|
2050
2283
|
|
|
2051
2284
|
/**
|
|
2052
|
-
*
|
|
2285
|
+
* Style object to adjust css definitions of the component.
|
|
2286
|
+
*/
|
|
2287
|
+
style: PropTypes.object,
|
|
2288
|
+
|
|
2289
|
+
/**
|
|
2290
|
+
* Style object to adjust css definitions of the background.
|
|
2291
|
+
*/
|
|
2292
|
+
backgroundStyle: PropTypes.object,
|
|
2293
|
+
|
|
2294
|
+
/**
|
|
2295
|
+
* Style object to adjust css definitions of the compass needle.
|
|
2296
|
+
*/
|
|
2297
|
+
needleStyle: PropTypes.object,
|
|
2298
|
+
|
|
2299
|
+
/**
|
|
2300
|
+
* Style object to adjust css definitions of the rotate right button.
|
|
2053
2301
|
*/
|
|
2054
|
-
|
|
2302
|
+
rotateRightStyle: PropTypes.object,
|
|
2303
|
+
|
|
2304
|
+
/**
|
|
2305
|
+
* Style object to adjust css definitions of the rotate left button.
|
|
2306
|
+
*/
|
|
2307
|
+
rotateLeftStyle: PropTypes.object
|
|
2055
2308
|
};
|
|
2056
2309
|
|
|
2310
|
+
var _excluded$1 = ["color"];
|
|
2311
|
+
|
|
2057
2312
|
var MlNavigationTools = function MlNavigationTools(props) {
|
|
2058
2313
|
var mapContext = useContext(MapContext);
|
|
2059
2314
|
var initializedRef = useRef(false);
|
|
@@ -2070,21 +2325,22 @@ var MlNavigationTools = function MlNavigationTools(props) {
|
|
|
2070
2325
|
locationAccessDenied = _useState4[0],
|
|
2071
2326
|
setLocationAccessDenied = _useState4[1];
|
|
2072
2327
|
|
|
2328
|
+
var mediaIsMobile = useMediaQuery("(max-width:900px)");
|
|
2073
2329
|
var buttonStyle = {
|
|
2074
|
-
minWidth: "
|
|
2075
|
-
minHeight: "
|
|
2076
|
-
width: "30px",
|
|
2077
|
-
height: "30px",
|
|
2078
|
-
color: "#bbb",
|
|
2330
|
+
minWidth: "20px",
|
|
2331
|
+
minHeight: "20px",
|
|
2332
|
+
width: mediaIsMobile ? "50px" : "30px",
|
|
2333
|
+
height: mediaIsMobile ? "50px" : "30px",
|
|
2079
2334
|
backgroundColor: "#414141",
|
|
2080
2335
|
borderRadius: "23%",
|
|
2081
2336
|
//border: "1px solid #bbb",
|
|
2082
2337
|
//boxShadow: "0px 0px 4px rgba(0,0,0,.5)",
|
|
2083
2338
|
margin: 0.15,
|
|
2339
|
+
fontSize: mediaIsMobile ? "1.5em" : "1.2em",
|
|
2084
2340
|
":hover": {
|
|
2085
|
-
backgroundColor: "#515151"
|
|
2086
|
-
|
|
2087
|
-
|
|
2341
|
+
backgroundColor: "#515151"
|
|
2342
|
+
},
|
|
2343
|
+
color: "#ececec"
|
|
2088
2344
|
};
|
|
2089
2345
|
useEffect(function () {
|
|
2090
2346
|
var _componentId = componentId.current;
|
|
@@ -2164,8 +2420,8 @@ var MlNavigationTools = function MlNavigationTools(props) {
|
|
|
2164
2420
|
style: {
|
|
2165
2421
|
zIndex: 501,
|
|
2166
2422
|
position: "absolute",
|
|
2167
|
-
right: "
|
|
2168
|
-
bottom: "20px",
|
|
2423
|
+
right: mediaIsMobile ? "15px" : "5px",
|
|
2424
|
+
bottom: mediaIsMobile ? "40px" : "20px",
|
|
2169
2425
|
display: "flex",
|
|
2170
2426
|
flexDirection: "column"
|
|
2171
2427
|
}
|
|
@@ -2173,15 +2429,15 @@ var MlNavigationTools = function MlNavigationTools(props) {
|
|
|
2173
2429
|
style: {
|
|
2174
2430
|
width: "31px",
|
|
2175
2431
|
position: "relative",
|
|
2176
|
-
height: "
|
|
2177
|
-
marginLeft: "-5px"
|
|
2432
|
+
height: mediaIsMobile ? "55px" : "45px",
|
|
2433
|
+
marginLeft: mediaIsMobile ? "3px" : "-5px",
|
|
2434
|
+
transform: mediaIsMobile ? "scale(1.6)" : "scale(1)"
|
|
2178
2435
|
},
|
|
2179
2436
|
backgroundStyle: {
|
|
2180
2437
|
boxShadow: "0px 0px 18px rgba(0,0,0,.5)"
|
|
2181
2438
|
}
|
|
2182
2439
|
}), /*#__PURE__*/React__default.createElement(Button, {
|
|
2183
2440
|
sx: _objectSpread2(_objectSpread2({}, buttonStyle), {}, {
|
|
2184
|
-
fontSize: ".9em",
|
|
2185
2441
|
fontWeight: 600
|
|
2186
2442
|
}),
|
|
2187
2443
|
onClick: adjustPitch
|
|
@@ -2191,15 +2447,22 @@ var MlNavigationTools = function MlNavigationTools(props) {
|
|
|
2191
2447
|
disabled: locationAccessDenied
|
|
2192
2448
|
}, /*#__PURE__*/React__default.createElement(GpsFixedIcon, {
|
|
2193
2449
|
sx: {
|
|
2194
|
-
|
|
2450
|
+
fontSize: mediaIsMobile ? "1.5em" : "1.2em"
|
|
2195
2451
|
}
|
|
2196
|
-
})), /*#__PURE__*/React__default.createElement(MlFollowGps,
|
|
2452
|
+
})), /*#__PURE__*/React__default.createElement(MlFollowGps, {
|
|
2453
|
+
style: _objectSpread2({}, function (_ref) {
|
|
2454
|
+
var color = _ref.color,
|
|
2455
|
+
rest = _objectWithoutProperties(_ref, _excluded$1);
|
|
2456
|
+
|
|
2457
|
+
return rest;
|
|
2458
|
+
}(buttonStyle))
|
|
2459
|
+
}), /*#__PURE__*/React__default.createElement(ButtonGroup, {
|
|
2197
2460
|
orientation: "vertical",
|
|
2198
2461
|
sx: {
|
|
2199
|
-
width: "
|
|
2462
|
+
width: "50px",
|
|
2200
2463
|
border: "none",
|
|
2201
2464
|
Button: {
|
|
2202
|
-
minWidth: "
|
|
2465
|
+
minWidth: "20px !important",
|
|
2203
2466
|
border: "none",
|
|
2204
2467
|
padding: 0
|
|
2205
2468
|
},
|
|
@@ -2208,22 +2471,42 @@ var MlNavigationTools = function MlNavigationTools(props) {
|
|
|
2208
2471
|
}
|
|
2209
2472
|
}
|
|
2210
2473
|
}, /*#__PURE__*/React__default.createElement(Button, {
|
|
2211
|
-
sx: buttonStyle,
|
|
2474
|
+
sx: _objectSpread2(_objectSpread2({}, buttonStyle), {}, {
|
|
2475
|
+
color: "#ececec"
|
|
2476
|
+
}),
|
|
2212
2477
|
onClick: zoomIn
|
|
2213
|
-
}, /*#__PURE__*/React__default.createElement(ControlPointIcon,
|
|
2214
|
-
sx:
|
|
2478
|
+
}, /*#__PURE__*/React__default.createElement(ControlPointIcon, {
|
|
2479
|
+
sx: {
|
|
2480
|
+
fontSize: mediaIsMobile ? "1.5em" : "1.2em"
|
|
2481
|
+
}
|
|
2482
|
+
})), /*#__PURE__*/React__default.createElement(Button, {
|
|
2483
|
+
sx: _objectSpread2(_objectSpread2({}, buttonStyle), {}, {
|
|
2484
|
+
color: "#ececec"
|
|
2485
|
+
}),
|
|
2215
2486
|
onClick: zoomOut
|
|
2216
|
-
}, /*#__PURE__*/React__default.createElement(RemoveCircleOutlineIcon,
|
|
2487
|
+
}, /*#__PURE__*/React__default.createElement(RemoveCircleOutlineIcon, {
|
|
2488
|
+
sx: {
|
|
2489
|
+
fontSize: mediaIsMobile ? "1.5em" : "1.2em"
|
|
2490
|
+
}
|
|
2491
|
+
}))));
|
|
2217
2492
|
};
|
|
2218
2493
|
|
|
2219
2494
|
var MlLayer = function MlLayer(props) {
|
|
2220
2495
|
// Use a useRef hook to reference the layer object to be able to access it later inside useEffect hooks
|
|
2221
2496
|
var mapContext = useContext(MapContext);
|
|
2497
|
+
var mapState = useMapState({
|
|
2498
|
+
mapId: props.mapId,
|
|
2499
|
+
watch: {
|
|
2500
|
+
viewport: false,
|
|
2501
|
+
layers: true,
|
|
2502
|
+
sources: false
|
|
2503
|
+
}
|
|
2504
|
+
});
|
|
2222
2505
|
var layerInitializedRef = useRef(false);
|
|
2223
2506
|
var mapRef = useRef(null);
|
|
2224
2507
|
var componentId = useRef((props.layerId ? props.layerId : "MlLayer-") + v4());
|
|
2225
2508
|
var idSuffixRef = useRef(props.idSuffix || new Date().getTime());
|
|
2226
|
-
var layerId = (props.layerId ||
|
|
2509
|
+
var layerId = useRef(props.layerId || componentId.current);
|
|
2227
2510
|
var layerPaintConfRef = useRef(undefined);
|
|
2228
2511
|
var layerLayoutConfRef = useRef(undefined);
|
|
2229
2512
|
useEffect(function () {
|
|
@@ -2263,6 +2546,22 @@ var MlLayer = function MlLayer(props) {
|
|
|
2263
2546
|
useEffect(function () {
|
|
2264
2547
|
if (!mapContext.mapExists(props.mapId) || layerInitializedRef.current) return; // the MapLibre-gl instance (mapContext.map) is accessible here
|
|
2265
2548
|
// initialize the layer and add it to the MapLibre-gl instance or do something else with it
|
|
2549
|
+
//check if insertBeforeLayer exists
|
|
2550
|
+
|
|
2551
|
+
if (props.insertBeforeLayer) {
|
|
2552
|
+
var _mapState$layers;
|
|
2553
|
+
|
|
2554
|
+
var layerFound = false;
|
|
2555
|
+
mapState === null || mapState === void 0 ? void 0 : (_mapState$layers = mapState.layers) === null || _mapState$layers === void 0 ? void 0 : _mapState$layers.forEach(function (layer) {
|
|
2556
|
+
if (layer.id === props.insertBeforeLayer) {
|
|
2557
|
+
layerFound = true;
|
|
2558
|
+
}
|
|
2559
|
+
});
|
|
2560
|
+
|
|
2561
|
+
if (!layerFound) {
|
|
2562
|
+
return;
|
|
2563
|
+
}
|
|
2564
|
+
}
|
|
2266
2565
|
|
|
2267
2566
|
mapRef.current = mapContext.getMap(props.mapId);
|
|
2268
2567
|
|
|
@@ -2271,7 +2570,7 @@ var MlLayer = function MlLayer(props) {
|
|
|
2271
2570
|
|
|
2272
2571
|
layerInitializedRef.current = true;
|
|
2273
2572
|
mapRef.current.addLayer(_objectSpread2({
|
|
2274
|
-
id: layerId,
|
|
2573
|
+
id: layerId.current,
|
|
2275
2574
|
type: "background",
|
|
2276
2575
|
paint: {
|
|
2277
2576
|
"background-color": "rgba(0,0,0,0)"
|
|
@@ -2280,7 +2579,7 @@ var MlLayer = function MlLayer(props) {
|
|
|
2280
2579
|
layerPaintConfRef.current = JSON.stringify((_props$options = props.options) === null || _props$options === void 0 ? void 0 : _props$options.paint);
|
|
2281
2580
|
layerLayoutConfRef.current = JSON.stringify((_props$options2 = props.options) === null || _props$options2 === void 0 ? void 0 : _props$options2.layout);
|
|
2282
2581
|
}
|
|
2283
|
-
}, [mapContext.mapIds, mapContext, props,
|
|
2582
|
+
}, [mapContext.mapIds, mapContext, props, mapState.layers]);
|
|
2284
2583
|
return /*#__PURE__*/React__default.createElement(React__default.Fragment, null);
|
|
2285
2584
|
};
|
|
2286
2585
|
|
|
@@ -2537,7 +2836,7 @@ var defaultProps = {
|
|
|
2537
2836
|
|
|
2538
2837
|
var MlWmsLayer = function MlWmsLayer(props) {
|
|
2539
2838
|
var mapContext = useContext(MapContext);
|
|
2540
|
-
var componentId = useRef(
|
|
2839
|
+
var componentId = useRef(props.layerId || "MlWmsLayer-" + v4());
|
|
2541
2840
|
var mapRef = useRef(null);
|
|
2542
2841
|
var initializedRef = useRef(false);
|
|
2543
2842
|
var layerId = useRef(props.layerId || componentId.current);
|
|
@@ -4143,7 +4442,7 @@ var MlLayerMagnify = function MlLayerMagnify(props) {
|
|
|
4143
4442
|
return false;
|
|
4144
4443
|
}
|
|
4145
4444
|
|
|
4146
|
-
if (!mapContext.
|
|
4445
|
+
if (!mapContext.getMap(props.map1Id) || !mapContext.getMap(props.map2Id)) {
|
|
4147
4446
|
return false;
|
|
4148
4447
|
}
|
|
4149
4448
|
|
|
@@ -4188,7 +4487,7 @@ var MlLayerMagnify = function MlLayerMagnify(props) {
|
|
|
4188
4487
|
useEffect(function () {
|
|
4189
4488
|
if (!mapExists() || syncMoveInitializedRef.current) return;
|
|
4190
4489
|
syncMoveInitializedRef.current = true;
|
|
4191
|
-
syncCleanupFunctionRef.current = syncMove(mapContext.getMap(props.map1Id), mapContext.getMap(props.map2Id));
|
|
4490
|
+
syncCleanupFunctionRef.current = syncMove(mapContext.getMap(props.map1Id).map, mapContext.getMap(props.map2Id).map);
|
|
4192
4491
|
|
|
4193
4492
|
if (mapContext.maps[props.map1Id].getCanvas().clientWidth > mapContext.maps[props.map1Id].getCanvas().clientHeight && magnifierRadiusRef.current * 2 > mapContext.maps[props.map1Id].getCanvas().clientHeight) {
|
|
4194
4493
|
magnifierRadiusRef.current = Math.floor(mapContext.maps[props.map1Id].getCanvas().clientHeight / 2);
|
|
@@ -4300,7 +4599,7 @@ var MlLayerSwipe = function MlLayerSwipe(props) {
|
|
|
4300
4599
|
return false;
|
|
4301
4600
|
}
|
|
4302
4601
|
|
|
4303
|
-
if (!mapContext.
|
|
4602
|
+
if (!mapContext.getMap(props.map1Id) || !mapContext.getMap(props.map2Id)) {
|
|
4304
4603
|
return false;
|
|
4305
4604
|
}
|
|
4306
4605
|
|
|
@@ -4333,7 +4632,7 @@ var MlLayerSwipe = function MlLayerSwipe(props) {
|
|
|
4333
4632
|
useEffect(function () {
|
|
4334
4633
|
if (!mapExists() || initializedRef.current) return;
|
|
4335
4634
|
initializedRef.current = true;
|
|
4336
|
-
syncCleanupFunctionRef.current = syncMove(mapContext.getMap(props.map1Id), mapContext.getMap(props.map2Id));
|
|
4635
|
+
syncCleanupFunctionRef.current = syncMove(mapContext.getMap(props.map1Id).map, mapContext.getMap(props.map2Id).map);
|
|
4337
4636
|
onMove({
|
|
4338
4637
|
clientX: mapContext.maps[props.map1Id].getCanvas().clientWidth / 2
|
|
4339
4638
|
});
|
|
@@ -4399,6 +4698,19 @@ MlLayerSwipe.propTypes = {
|
|
|
4399
4698
|
var GeoJsonContext = /*#__PURE__*/React__default.createContext({});
|
|
4400
4699
|
var GeoJsonContextProvider = GeoJsonContext.Provider;
|
|
4401
4700
|
|
|
4701
|
+
/**
|
|
4702
|
+
* https://github.com/mapbox/togeojson
|
|
4703
|
+
*
|
|
4704
|
+
* Copyright (c) 2016 Mapbox All rights reserved.
|
|
4705
|
+
*
|
|
4706
|
+
* Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
|
|
4707
|
+
*
|
|
4708
|
+
* 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
|
|
4709
|
+
*
|
|
4710
|
+
* 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
|
|
4711
|
+
*
|
|
4712
|
+
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
4713
|
+
*/
|
|
4402
4714
|
var toGeoJSON = function () {
|
|
4403
4715
|
var removeSpace = /\s*/g,
|
|
4404
4716
|
trimSpace = /^\s*|\s*$/g,
|
|
@@ -5039,6 +5351,7 @@ var MlGPXViewer = function MlGPXViewer(props) {
|
|
|
5039
5351
|
setMetaData = _useState6[1];
|
|
5040
5352
|
|
|
5041
5353
|
var fileupload = useRef(null);
|
|
5354
|
+
var mediaIsMobile = useMediaQuery("(max-width:900px)");
|
|
5042
5355
|
var popup = useRef(new Popup({
|
|
5043
5356
|
closeButton: false,
|
|
5044
5357
|
closeOnClick: true
|
|
@@ -5236,14 +5549,20 @@ var MlGPXViewer = function MlGPXViewer(props) {
|
|
|
5236
5549
|
fileupload.current.click();
|
|
5237
5550
|
};
|
|
5238
5551
|
|
|
5239
|
-
return /*#__PURE__*/React__default.createElement(React__default.Fragment, null, /*#__PURE__*/React__default.createElement(
|
|
5240
|
-
onClick: manualUpload,
|
|
5552
|
+
return /*#__PURE__*/React__default.createElement(React__default.Fragment, null, /*#__PURE__*/React__default.createElement("div", {
|
|
5241
5553
|
style: {
|
|
5242
|
-
position: "
|
|
5554
|
+
position: "fixed",
|
|
5243
5555
|
right: "5px",
|
|
5244
|
-
bottom: "
|
|
5245
|
-
|
|
5556
|
+
bottom: mediaIsMobile ? "40px" : "25px",
|
|
5557
|
+
display: "flex",
|
|
5558
|
+
flexDirection: "column",
|
|
5559
|
+
gap: "5px",
|
|
5246
5560
|
zIndex: 1000
|
|
5561
|
+
}
|
|
5562
|
+
}, /*#__PURE__*/React__default.createElement(IconButton, {
|
|
5563
|
+
onClick: manualUpload,
|
|
5564
|
+
style: {
|
|
5565
|
+
backgroundColor: "rgba(255,255,255,1)"
|
|
5247
5566
|
},
|
|
5248
5567
|
size: "large"
|
|
5249
5568
|
}, /*#__PURE__*/React__default.createElement("input", {
|
|
@@ -5258,14 +5577,10 @@ var MlGPXViewer = function MlGPXViewer(props) {
|
|
|
5258
5577
|
}), /*#__PURE__*/React__default.createElement(FileCopy, null)), /*#__PURE__*/React__default.createElement(IconButton, {
|
|
5259
5578
|
onClick: toogleDrawer,
|
|
5260
5579
|
style: {
|
|
5261
|
-
|
|
5262
|
-
right: "5px",
|
|
5263
|
-
bottom: "25px",
|
|
5264
|
-
backgroundColor: "rgba(255,255,255,1)",
|
|
5265
|
-
zIndex: 1000
|
|
5580
|
+
backgroundColor: "rgba(255,255,255,1)"
|
|
5266
5581
|
},
|
|
5267
5582
|
size: "large"
|
|
5268
|
-
}, /*#__PURE__*/React__default.createElement(InfoIcon, null)), /*#__PURE__*/React__default.createElement(Drawer, {
|
|
5583
|
+
}, /*#__PURE__*/React__default.createElement(InfoIcon, null))), /*#__PURE__*/React__default.createElement(Drawer, {
|
|
5269
5584
|
variant: "persistent",
|
|
5270
5585
|
anchor: "left",
|
|
5271
5586
|
open: open
|
|
@@ -5366,165 +5681,138 @@ GeoJsonProvider.propTypes = {
|
|
|
5366
5681
|
};
|
|
5367
5682
|
|
|
5368
5683
|
/**
|
|
5369
|
-
*
|
|
5684
|
+
* MlSpatialElevationProfile returns a Button that will add a standard OSM tile layer to the maplibre-gl instance.
|
|
5370
5685
|
*
|
|
5371
5686
|
* @component
|
|
5372
5687
|
*/
|
|
5373
5688
|
|
|
5374
|
-
function
|
|
5375
|
-
// Use a useRef hook to reference the layer object to be able to access it later inside useEffect hooks
|
|
5689
|
+
var MlSpatialElevationProfile = function MlSpatialElevationProfile(props) {
|
|
5376
5690
|
var mapContext = useContext(MapContext);
|
|
5691
|
+
var componentId = useRef((props.idPrefix ? props.idPrefix : "MlSpatialElevationProfile-") + v4());
|
|
5692
|
+
var mapRef = useRef(null);
|
|
5377
5693
|
var initializedRef = useRef(false);
|
|
5378
|
-
var
|
|
5379
|
-
|
|
5380
|
-
var
|
|
5381
|
-
|
|
5382
|
-
|
|
5383
|
-
|
|
5384
|
-
|
|
5385
|
-
|
|
5386
|
-
|
|
5387
|
-
|
|
5388
|
-
|
|
5389
|
-
|
|
5390
|
-
|
|
5391
|
-
|
|
5392
|
-
|
|
5393
|
-
|
|
5394
|
-
|
|
5395
|
-
setLayers = _useState6[1];
|
|
5396
|
-
|
|
5397
|
-
var layersRef = useRef(undefined); //const mapRef = useRef(props.map);
|
|
5398
|
-
|
|
5399
|
-
var componentId = useRef(v4());
|
|
5400
|
-
/**
|
|
5401
|
-
* returns the element if it matches the defined filter criteria
|
|
5402
|
-
* to be used as filter function on the layers array
|
|
5403
|
-
*
|
|
5404
|
-
* @param {object} layer
|
|
5405
|
-
*/
|
|
5406
|
-
|
|
5407
|
-
var layerIdFilter = useCallback(function (layer) {
|
|
5408
|
-
if (!props.filter.includeBaseLayers && layer.baseLayer) {
|
|
5409
|
-
return false;
|
|
5410
|
-
}
|
|
5411
|
-
|
|
5412
|
-
if (typeof props.filter.matchLayerIds !== "undefined") {
|
|
5413
|
-
if (props.filter.matchLayerIds instanceof RegExp) {
|
|
5414
|
-
return props.filter.matchLayerIds.test(layer.id);
|
|
5415
|
-
} else {
|
|
5416
|
-
return layer.id.includes(props.filter.matchLayerIds);
|
|
5417
|
-
}
|
|
5418
|
-
}
|
|
5419
|
-
|
|
5420
|
-
return true;
|
|
5421
|
-
}, [props.filter]);
|
|
5422
|
-
var refreshLayerState = useCallback(function () {
|
|
5423
|
-
var _layerState = mapRef.current.wrapper.layerState.filter(layerIdFilter);
|
|
5424
|
-
|
|
5425
|
-
var _layerStateString = JSON.stringify(_layerState);
|
|
5426
|
-
|
|
5427
|
-
if (layersRef.current !== _layerStateString) {
|
|
5428
|
-
layersRef.current = _layerStateString;
|
|
5429
|
-
setLayers(_layerState);
|
|
5430
|
-
}
|
|
5431
|
-
}, [layerIdFilter]);
|
|
5694
|
+
var dataSource = useContext(GeoJsonContext);
|
|
5695
|
+
var sourceName = useRef("elevationprofile-" + v4());
|
|
5696
|
+
var layerName = useRef("elevationprofile-layer-" + v4());
|
|
5697
|
+
var createStep = useCallback(function (x, y, z, x2, y2) {
|
|
5698
|
+
//const summand = 0.0002;
|
|
5699
|
+
var line = lineString$1([[x, y], [x2, y2]]);
|
|
5700
|
+
var offsetLine = lineOffset(line, 5, {
|
|
5701
|
+
units: "meters"
|
|
5702
|
+
});
|
|
5703
|
+
var x3 = offsetLine.geometry.coordinates[0][0];
|
|
5704
|
+
var y3 = offsetLine.geometry.coordinates[0][1];
|
|
5705
|
+
var x4 = offsetLine.geometry.coordinates[1][0];
|
|
5706
|
+
var y4 = offsetLine.geometry.coordinates[1][1];
|
|
5707
|
+
return polygon([[[x, y], [x2, y2], [x4, y4], [x3, y3], [x, y]]], {
|
|
5708
|
+
height: z * props.elevationFactor
|
|
5709
|
+
});
|
|
5710
|
+
}, [props.elevationFactor]);
|
|
5432
5711
|
useEffect(function () {
|
|
5433
5712
|
var _componentId = componentId.current;
|
|
5434
5713
|
return function () {
|
|
5714
|
+
// This is the cleanup function, it is called when this react component is removed from react-dom
|
|
5435
5715
|
if (mapRef.current) {
|
|
5436
5716
|
mapRef.current.cleanup(_componentId);
|
|
5437
|
-
mapRef.current =
|
|
5717
|
+
mapRef.current = null;
|
|
5438
5718
|
}
|
|
5439
|
-
|
|
5440
|
-
initializedRef.current = false;
|
|
5441
5719
|
};
|
|
5442
5720
|
}, []);
|
|
5443
5721
|
useEffect(function () {
|
|
5444
|
-
|
|
5445
|
-
|
|
5446
|
-
if (!mapContext.mapExists(props.mapId) || initializedRef.current) return; // the MapLibre-gl instance (mapContext.getMap(props.mapId)) is accessible here
|
|
5447
|
-
// initialize the layer and add it to the MapLibre-gl instance or do something else with it
|
|
5448
|
-
|
|
5722
|
+
if (!mapContext.mapExists(props.mapId) || initializedRef.current) return;
|
|
5449
5723
|
initializedRef.current = true;
|
|
5450
5724
|
mapRef.current = mapContext.getMap(props.mapId);
|
|
5451
|
-
|
|
5452
|
-
|
|
5453
|
-
|
|
5454
|
-
|
|
5455
|
-
|
|
5456
|
-
|
|
5457
|
-
|
|
5458
|
-
|
|
5459
|
-
|
|
5725
|
+
mapRef.current.addSource(sourceName.current, {
|
|
5726
|
+
type: "geojson",
|
|
5727
|
+
data: dataSource.data
|
|
5728
|
+
}, componentId.current);
|
|
5729
|
+
mapRef.current.addLayer({
|
|
5730
|
+
id: layerName.current,
|
|
5731
|
+
source: sourceName.current,
|
|
5732
|
+
type: "fill-extrusion",
|
|
5733
|
+
paint: {
|
|
5734
|
+
"fill-extrusion-height": ["get", "height"],
|
|
5735
|
+
"fill-extrusion-opacity": 0.9,
|
|
5736
|
+
"fill-extrusion-color": ["interpolate", ["linear"], ["get", "height"], 0, "rgba(0, 0, 255, 0)", 0.1, "royalblue", 0.3, "cyan", 0.5, "lime", 0.7, "yellow", 1, "yellow"]
|
|
5737
|
+
}
|
|
5738
|
+
}, props.insertBeforeLayer, componentId.current);
|
|
5739
|
+
}, [mapContext.mapIds, props.insertBeforeLayer, props.mapId, dataSource, mapContext]);
|
|
5740
|
+
useEffect(function () {
|
|
5741
|
+
var _mapRef$current$getSo;
|
|
5460
5742
|
|
|
5461
|
-
if (
|
|
5462
|
-
|
|
5463
|
-
|
|
5464
|
-
|
|
5743
|
+
if (!mapRef.current || !mapRef.current.getLayer(layerName.current)) return;
|
|
5744
|
+
var data = dataSource.data;
|
|
5745
|
+
if (!data || !data.features) return;
|
|
5746
|
+
var line = data.features.find(function (element) {
|
|
5747
|
+
return element.geometry.type === "LineString";
|
|
5748
|
+
});
|
|
5749
|
+
if (!line || !line.geometry) return;
|
|
5750
|
+
var heights = line.geometry.coordinates.map(function (coordinate, index) {
|
|
5751
|
+
return coordinate[2];
|
|
5752
|
+
});
|
|
5753
|
+
var min = Math.min.apply(Math, _toConsumableArray(heights));
|
|
5754
|
+
var max = Math.max.apply(Math, _toConsumableArray(heights)) - min;
|
|
5755
|
+
max = max === 0 ? 1 : max;
|
|
5756
|
+
mapRef.current.setPaintProperty(layerName.current, "fill-extrusion-color", ["interpolate", ["linear"], ["get", "height"], 0, "rgb(0,255,55)", max * props.elevationFactor, "rgb(255,0,0)"]);
|
|
5465
5757
|
|
|
5466
|
-
|
|
5467
|
-
|
|
5758
|
+
var lerp = function lerp(x, y, a) {
|
|
5759
|
+
return x * (1 - a) + y * a;
|
|
5760
|
+
};
|
|
5468
5761
|
|
|
5469
|
-
|
|
5470
|
-
|
|
5762
|
+
var points = [];
|
|
5763
|
+
line.geometry.coordinates.forEach(function (coordinate, index) {
|
|
5764
|
+
//const point = createPoint(coordinate[0],coordinate[1],coordinate[2]-min);
|
|
5765
|
+
//points.push(point);
|
|
5766
|
+
if (line.geometry.coordinates[index + 1]) {
|
|
5767
|
+
var wayLength = distance([coordinate[0], coordinate[1]], [line.geometry.coordinates[index + 1][0], line.geometry.coordinates[index + 1][1]], {
|
|
5768
|
+
units: "kilometers"
|
|
5769
|
+
});
|
|
5770
|
+
var listLength = ~~(wayLength * 1000 / 10);
|
|
5771
|
+
listLength = listLength < 1 ? 1 : listLength;
|
|
5772
|
+
|
|
5773
|
+
for (var i = 0; i < listLength; i++) {
|
|
5774
|
+
var x = lerp(line.geometry.coordinates[index][0], line.geometry.coordinates[index + 1][0], i / listLength);
|
|
5775
|
+
var y = lerp(line.geometry.coordinates[index][1], line.geometry.coordinates[index + 1][1], i / listLength);
|
|
5776
|
+
var z = lerp(line.geometry.coordinates[index][2] - min, line.geometry.coordinates[index + 1][2] - min, i / listLength);
|
|
5777
|
+
var x2 = lerp(line.geometry.coordinates[index][0], line.geometry.coordinates[index + 1][0], (i + 1) / listLength);
|
|
5778
|
+
var y2 = lerp(line.geometry.coordinates[index][1], line.geometry.coordinates[index + 1][1], (i + 1) / listLength);
|
|
5779
|
+
var point = createStep(x, y, z, x2, y2);
|
|
5780
|
+
points.push(point);
|
|
5471
5781
|
}
|
|
5472
|
-
}
|
|
5473
|
-
}
|
|
5474
|
-
|
|
5475
|
-
|
|
5476
|
-
|
|
5477
|
-
|
|
5478
|
-
|
|
5479
|
-
|
|
5480
|
-
includeBaseLayers: props === null || props === void 0 ? void 0 : (_props$filter = props.filter) === null || _props$filter === void 0 ? void 0 : _props$filter.includeBaseLayers,
|
|
5481
|
-
matchLayerIds: props === null || props === void 0 ? void 0 : (_props$filter2 = props.filter) === null || _props$filter2 === void 0 ? void 0 : _props$filter2.matchLayerIds
|
|
5482
|
-
}, componentId.current);
|
|
5483
|
-
}
|
|
5484
|
-
}, [mapContext.mapIds, mapContext, props.mapId, refreshLayerState]);
|
|
5485
|
-
return {
|
|
5486
|
-
layers: layers,
|
|
5487
|
-
viewport: viewport
|
|
5488
|
-
};
|
|
5489
|
-
}
|
|
5782
|
+
}
|
|
5783
|
+
});
|
|
5784
|
+
var newData = dataSource.getEmptyFeatureCollection();
|
|
5785
|
+
newData.features = points;
|
|
5786
|
+
(_mapRef$current$getSo = mapRef.current.getSource(sourceName.current)) === null || _mapRef$current$getSo === void 0 ? void 0 : _mapRef$current$getSo.setData(newData);
|
|
5787
|
+
}, [dataSource.data, createStep, dataSource, props.elevationFactor, mapContext]);
|
|
5788
|
+
return /*#__PURE__*/React__default.createElement(React__default.Fragment, null);
|
|
5789
|
+
};
|
|
5490
5790
|
|
|
5491
|
-
|
|
5492
|
-
|
|
5493
|
-
watch: {
|
|
5494
|
-
layers: true,
|
|
5495
|
-
sources: false,
|
|
5496
|
-
viewport: false
|
|
5497
|
-
},
|
|
5498
|
-
filter: {
|
|
5499
|
-
includeBaseLayers: false
|
|
5500
|
-
}
|
|
5791
|
+
MlSpatialElevationProfile.defaultProps = {
|
|
5792
|
+
elevationFactor: 1
|
|
5501
5793
|
};
|
|
5502
|
-
|
|
5794
|
+
MlSpatialElevationProfile.propTypes = {
|
|
5503
5795
|
/**
|
|
5504
5796
|
* Id of the target MapLibre instance in mapContext
|
|
5505
5797
|
*/
|
|
5506
5798
|
mapId: PropTypes.string,
|
|
5507
5799
|
|
|
5508
5800
|
/**
|
|
5509
|
-
*
|
|
5801
|
+
* Prefix of the component id this component uses when adding elements to the MapLibreGl-instance
|
|
5510
5802
|
*/
|
|
5511
|
-
|
|
5512
|
-
layers: PropTypes.bool,
|
|
5513
|
-
sources: PropTypes.bool,
|
|
5514
|
-
viewport: PropTypes.bool
|
|
5515
|
-
}),
|
|
5803
|
+
idPrefix: PropTypes.string,
|
|
5516
5804
|
|
|
5517
5805
|
/**
|
|
5518
|
-
*
|
|
5519
|
-
* strings will be matched using layerId.includes(matchString)
|
|
5520
|
-
* RegExps will be matched using matchRegExp.test(layerId)
|
|
5806
|
+
* Number describes the factor of the height of the elevation
|
|
5521
5807
|
*/
|
|
5522
|
-
|
|
5523
|
-
|
|
5524
|
-
|
|
5525
|
-
|
|
5526
|
-
|
|
5808
|
+
elevationFactor: PropTypes.number,
|
|
5809
|
+
|
|
5810
|
+
/**
|
|
5811
|
+
* The layerId of an existing layer this layer should be rendered visually beneath
|
|
5812
|
+
* https://maplibre.org/maplibre-gl-js-docs/api/map/#map#addlayer - see "beforeId" property
|
|
5813
|
+
*/
|
|
5814
|
+
insertBeforeLayer: PropTypes.string
|
|
5527
5815
|
};
|
|
5528
5816
|
|
|
5529
|
-
export { GeoJsonContext, GeoJsonProvider, MapLibreMap, MlBasicComponent, MlComponentTemplate, MlCreatePdfButton, MlFeatureEditor, MlFillExtrusionLayer, MlGPXViewer, MlGeoJsonLayer, MlImageMarkerLayer, MlLayer, MlLayerMagnify, MlLayerSwipe, MlNavigationCompass, MlNavigationTools, MlOsmLayer, MlVectorTileLayer, MlWmsLayer, useMapState };
|
|
5817
|
+
export { GeoJsonContext, GeoJsonProvider, MapLibreMap, MlBasicComponent, MlComponentTemplate, MlCreatePdfButton, MlFeatureEditor, MlFillExtrusionLayer, MlFollowGps, MlGPXViewer, MlGeoJsonLayer, MlImageMarkerLayer, MlLayer, MlLayerMagnify, MlLayerSwipe, MlNavigationCompass, MlNavigationTools, MlOsmLayer, MlSpatialElevationProfile, MlVectorTileLayer, MlWmsLayer, useMap, useMapState };
|
|
5530
5818
|
//# sourceMappingURL=index.esm.js.map
|