@mapcomponents/react-maplibre 0.1.22 → 0.1.23

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.
Files changed (71) hide show
  1. package/coverage/clover.xml +90 -109
  2. package/coverage/coverage-final.json +3 -3
  3. package/coverage/lcov-report/index.html +18 -18
  4. package/coverage/lcov-report/src/components/MapLibreMap/MapLibreMap.js.html +1 -1
  5. package/coverage/lcov-report/src/components/MapLibreMap/index.html +1 -1
  6. package/coverage/lcov-report/src/components/MlCreatePdfButton/MlCreatePdfButton.js.html +1 -1
  7. package/coverage/lcov-report/src/components/MlCreatePdfButton/index.html +1 -1
  8. package/coverage/lcov-report/src/components/MlFeatureEditor/MlFeatureEditor.js.html +1 -1
  9. package/coverage/lcov-report/src/components/MlFeatureEditor/index.html +1 -1
  10. package/coverage/lcov-report/src/components/MlFillExtrusionLayer/MlFillExtrusionLayer.js.html +1 -1
  11. package/coverage/lcov-report/src/components/MlFillExtrusionLayer/index.html +1 -1
  12. package/coverage/lcov-report/src/components/MlFollowGps/MlFollowGps.js.html +1 -1
  13. package/coverage/lcov-report/src/components/MlFollowGps/index.html +1 -1
  14. package/coverage/lcov-report/src/components/MlGPXViewer/MlGPXViewer.js.html +1 -1
  15. package/coverage/lcov-report/src/components/MlGPXViewer/gpxConverter.js.html +1 -1
  16. package/coverage/lcov-report/src/components/MlGPXViewer/index.html +1 -1
  17. package/coverage/lcov-report/src/components/MlGeoJsonLayer/MlGeoJsonLayer.js.html +1 -1
  18. package/coverage/lcov-report/src/components/MlGeoJsonLayer/index.html +1 -1
  19. package/coverage/lcov-report/src/components/MlImageMarkerLayer/MlImageMarkerLayer.js.html +1 -1
  20. package/coverage/lcov-report/src/components/MlImageMarkerLayer/index.html +1 -1
  21. package/coverage/lcov-report/src/components/MlLayer/MlLayer.js.html +1 -1
  22. package/coverage/lcov-report/src/components/MlLayer/index.html +1 -1
  23. package/coverage/lcov-report/src/components/MlLayerMagnify/MlLayerMagnify.js.html +1 -1
  24. package/coverage/lcov-report/src/components/MlLayerMagnify/index.html +1 -1
  25. package/coverage/lcov-report/src/components/MlLayerSwipe/MlLayerSwipe.js.html +1 -1
  26. package/coverage/lcov-report/src/components/MlLayerSwipe/index.html +1 -1
  27. package/coverage/lcov-report/src/components/MlLayerSwitcher/MlLayerSwitcher.js.html +1 -1
  28. package/coverage/lcov-report/src/components/MlLayerSwitcher/components/LayerBox.js.html +1 -1
  29. package/coverage/lcov-report/src/components/MlLayerSwitcher/components/index.html +1 -1
  30. package/coverage/lcov-report/src/components/MlLayerSwitcher/index.html +1 -1
  31. package/coverage/lcov-report/src/components/MlMarker/MlMarker.js.html +1 -1
  32. package/coverage/lcov-report/src/components/MlMarker/index.html +1 -1
  33. package/coverage/lcov-report/src/components/MlNavigationCompass/MlNavigationCompass.js.html +1 -1
  34. package/coverage/lcov-report/src/components/MlNavigationCompass/index.html +1 -1
  35. package/coverage/lcov-report/src/components/MlNavigationTools/MlNavigationTools.js.html +1 -1
  36. package/coverage/lcov-report/src/components/MlNavigationTools/index.html +1 -1
  37. package/coverage/lcov-report/src/components/MlOsmLayer/MlOsmLayer.js.html +1 -1
  38. package/coverage/lcov-report/src/components/MlOsmLayer/index.html +1 -1
  39. package/coverage/lcov-report/src/components/MlScaleReference/MlScaleReference.js.html +1 -1
  40. package/coverage/lcov-report/src/components/MlScaleReference/index.html +1 -1
  41. package/coverage/lcov-report/src/components/MlShareMapState/MlShareMapState.js.html +1 -1
  42. package/coverage/lcov-report/src/components/MlShareMapState/index.html +1 -1
  43. package/coverage/lcov-report/src/components/MlSpatialElevationProfile/MlSpatialElevationProfile.js.html +1 -1
  44. package/coverage/lcov-report/src/components/MlSpatialElevationProfile/index.html +1 -1
  45. package/coverage/lcov-report/src/components/MlThreeJsLayer/MlThreeJsLayer.js.html +1 -1
  46. package/coverage/lcov-report/src/components/MlThreeJsLayer/index.html +1 -1
  47. package/coverage/lcov-report/src/components/MlUseMapDebugger/MlUseMapDebugger.js.html +1 -1
  48. package/coverage/lcov-report/src/components/MlUseMapDebugger/index.html +1 -1
  49. package/coverage/lcov-report/src/components/MlVectorTileLayer/MlVectorTileLayer.js.html +74 -194
  50. package/coverage/lcov-report/src/components/MlVectorTileLayer/index.html +17 -17
  51. package/coverage/lcov-report/src/components/MlWmsFeatureInfoPopup/MlWmsFeatureInfoPopup.js.html +1 -1
  52. package/coverage/lcov-report/src/components/MlWmsFeatureInfoPopup/index.html +1 -1
  53. package/coverage/lcov-report/src/components/MlWmsLayer/MlWmsLayer.js.html +1 -1
  54. package/coverage/lcov-report/src/components/MlWmsLayer/index.html +1 -1
  55. package/coverage/lcov-report/src/components/MlWmsLoader/MlWmsLoader.js.html +1 -1
  56. package/coverage/lcov-report/src/components/MlWmsLoader/index.html +1 -1
  57. package/coverage/lcov-report/src/hooks/index.html +1 -1
  58. package/coverage/lcov-report/src/hooks/useMap.js.html +22 -22
  59. package/coverage/lcov-report/src/hooks/useMapState.js.html +34 -34
  60. package/coverage/lcov-report/src/hooks/useWms.js.html +1 -1
  61. package/coverage/lcov-report/src/i18n.js.html +1 -1
  62. package/coverage/lcov-report/src/index.html +1 -1
  63. package/coverage/lcov-report/src/translations/english.js.html +1 -1
  64. package/coverage/lcov-report/src/translations/german.js.html +1 -1
  65. package/coverage/lcov-report/src/translations/index.html +1 -1
  66. package/coverage/lcov.info +132 -167
  67. package/dist/index.esm.js +23 -60
  68. package/dist/index.esm.js.map +1 -1
  69. package/package.json +1 -1
  70. package/src/components/MlVectorTileLayer/MlVectorTileLayer.js +51 -91
  71. package/src/components/MlVectorTileLayer/MlVectorTileLayer.test.js +6 -6
@@ -1 +1 @@
1
- {"version":3,"file":"index.esm.js","sources":["../src/components/MapLibreMap/lib/MapLibreGlWrapper.js","../src/components/MapLibreMap/MapLibreMap.js","../src/hooks/useMapState.js","../src/hooks/useMap.js","../src/components/MlComponentTemplate/MlComponentTemplate.js","../src/components/MlFillExtrusionLayer/MlFillExtrusionLayer.js","../src/components/MlGeoJsonLayer/util/transitionFunctions.js","../src/components/MlGeoJsonLayer/util/getDefaultPaintPropsByType.js","../src/components/MlGeoJsonLayer/util/getDefaultLayerTypeByGeometry.js","../src/components/MlGeoJsonLayer/MlGeoJsonLayer.js","../src/components/MlImageMarkerLayer/MlImageMarkerLayer.js","../src/components/MlFollowGps/assets/marker.png","../src/components/MlFollowGps/MlFollowGps.js","../src/components/MlCreatePdfButton/lib/nominatimMap.js","../src/components/MlCreatePdfButton/lib/createPdf.js","../src/components/MlCreatePdfButton/MlCreatePdfButton.js","../src/components/MlNavigationCompass/MlNavigationCompass.js","../src/components/MlNavigationTools/MlNavigationTools.js","../src/components/MlLayer/MlLayer.js","../src/components/MlOsmLayer/MlOsmLayer.js","../src/components/MlVectorTileLayer/MlVectorTileLayer.js","../src/components/MlWmsLayer/MlWmsLayer.js","../src/components/MlFeatureEditor/lib/constants.js","../src/components/MlFeatureEditor/lib/common_selectors.js","../src/components/MlFeatureEditor/lib/double_click_zoom.js","../src/components/MlFeatureEditor/lib/is_event_at_coordinates.js","../src/components/MlFeatureEditor/lib/create_vertex.js","../src/components/MlFeatureEditor/custom-polygon-mode.js","../src/components/MlFeatureEditor/lib/mouse_event_point.js","../src/components/MlFeatureEditor/lib/create_midpoint.js","../src/components/MlFeatureEditor/lib/create_supplementary_points.js","../src/components/MlFeatureEditor/lib/string_set.js","../src/components/MlFeatureEditor/lib/constrain_feature_movement.js","../src/components/MlFeatureEditor/lib/move_features.js","../src/components/MlFeatureEditor/custom-select-mode.js","../src/components/MlFeatureEditor/lib/utils.js","../src/components/MlFeatureEditor/custom-direct-select-mode.js","../src/components/MlFeatureEditor/MlFeatureEditor.js","../src/components/MlBasicComponent.js","../src/components/MlLayerMagnify/MlLayerMagnify.js","../src/components/MlLayerSwipe/MlLayerSwipe.js","../src/components/MlGPXViewer/util/GeoJsonContext.js","../src/components/MlGPXViewer/gpxConverter.js","../src/components/MlGPXViewer/MlGPXViewer.js","../src/components/MlGPXViewer/util/GeoJsonProvider.js","../src/components/MlSpatialElevationProfile/MlSpatialElevationProfile.js"],"sourcesContent":["// @ts-ignore: TS export Problem to be fixed upstream\nimport maplibregl from \"maplibre-gl/dist/maplibre-gl\";\n\n/**\n * Creates a MapLibre-gl-js instance and offers all of the native MapLibre functions and properties as well as additional functionality such as element registration & cleanup and more events.\n *\n * @param {object} props\n *\n * @class\n */\nconst MapLibreGlWrapper = function (props) {\n // closure variable to safely point to the object context of the current MapLibreGlWrapper instance\n let self = this;\n\n // element registration and cleanup on a component level is experimental\n this.registeredElements = {};\n\n // array of base layer ids, all layers that have been added by the style passed to the MapLibreGl coonstructor\n this.baseLayers = [];\n\n // layer id of the first symbol layer\n this.firstSymbolLayer = undefined;\n\n // event handlers registered in MapLibreGlWrapper\n this.eventHandlers = {\n layerchange: [],\n viewportchange: [],\n };\n\n // functions and properties provided by the wrapper\n // Add new functions and properties introduced by the wrapper to this object to prevent collisions due to future MapLibre API changes\n this.wrapper = {\n /**\n * Subscribe the given event handler to an event\n *\n * @param {string} eventName\n * @param {function} handler\n * @param {object} options\n * @param {string} componentId\n * @returns {undefined}\n */\n on: (eventName, handler, options, componentId) => {\n if (!self.eventHandlers[eventName]) return;\n\n if (typeof options === \"string\") {\n componentId = options;\n options = {};\n }\n\n self.eventHandlers[eventName].push({ handler, options });\n\n let _arguments = [eventName, handler];\n if (componentId && typeof componentId === \"string\") {\n self.initRegisteredElements(componentId);\n self.registeredElements[componentId].wrapperEvents.push(_arguments);\n }\n },\n /**\n * Unsubscribes the given event handler from an event\n *\n * @param {string} eventName\n * @param {function} handler\n * @returns {undefined}\n */\n off: (eventName, handler) => {\n if (!self.eventHandlers[eventName]) return;\n\n self.eventHandlers[eventName] = self.eventHandlers[eventName].filter((item) => {\n if (!Object.is(item.handler, handler)) {\n return item;\n }\n return false;\n });\n },\n /**\n * Calls all event handlers that have been subscribed to the given eventName\n *\n * @param {string} eventName\n * @param {object} context\n * @returns {undefined}\n */\n fire: (eventName, context) => {\n if (!self.eventHandlers[eventName]) return;\n\n var scope = context || window;\n let event = new Event(eventName);\n event.data = self;\n\n self.eventHandlers[eventName].forEach(function (item) {\n item.handler.call(scope, event);\n });\n },\n /**\n * Array containing an object for each layer in the MapLibre instance providing information on visibility, loading state, order, paint & layout properties\n */\n layerState: [],\n /**\n * Maps layerIds to layerState in JSON string form for quick deep comparisons\n */\n layerStateString: \"\",\n /**\n * Previous Version of layerStateString\n */\n oldLayerStateStrings: {},\n /**\n * Builds the layer info object for a given layer id\n *\n * @param {string} layer\n * @returns object\n */\n buildLayerObject: (layer) => {\n //if (self.baseLayers.indexOf(layer.id) === -1) {\n //let paint = {};\n //let values = layer.paint?._values;\n //Object.keys(values || {}).map((propName) => {\n // paint[propName] =\n // typeof values[propName].value !== \"undefined\"\n // ? values[propName].value.value\n // : values[propName];\n //});\n //let layout = {};\n //values = layer.layout?._values;\n //Object.keys(values || {}).map((propName) => {\n // layout[propName] =\n // typeof values[propName].value !== \"undefined\"\n // ? values[propName].value.value\n // : values[propName];\n //});\n return {\n id: layer.id,\n type: layer.type,\n visible: layer.visibility === \"none\" ? false : true,\n baseLayer: self.baseLayers.indexOf(layer.id) !== -1,\n //paint,\n //layout,\n //filter: layers[layerId].filter,\n //layout: layers[layerId].layout,\n //maxzoom: layers[layerId].maxzoom,\n //metadata: layers[layerId].metadata,\n //minzoom: layers[layerId].minzoom,\n //paint: layers[layerId].paint.get(),\n //source: layers[layerId].source,\n //sourceLayer: layers[layerId].sourceLayer,\n };\n //}\n },\n /**\n * Returns an array of layer state info objects for all layers in the MapLibre instance\n *\n * @returns array\n */\n buildLayerObjects: () => {\n return self.style._order\n .map((layerId) => {\n return self.wrapper.buildLayerObject(self.map.style._layers[layerId]);\n })\n .filter((n) => n);\n },\n /**\n * Updates layer state info objects\n */\n refreshLayerState: () => {\n self.wrapper.layerState = self.wrapper.buildLayerObjects();\n if (JSON.stringify(self.wrapper.layerState) !== self.wrapper.layerStateString) {\n self.wrapper.fire(\"layerchange\");\n self.wrapper.layerStateString = JSON.stringify(self.wrapper.layerState);\n }\n },\n /**\n * Object containing information on the current viewport state\n */\n viewportState: {},\n /**\n * The same data as viewportState in JSON string form for quick deep comparisons\n */\n viewportStateString: \"{}\",\n /**\n * Previous version of viewportStateString\n */\n oldViewportStateString: \"{}\",\n getViewport: () =>\n typeof self.map.getCenter === \"function\"\n ? {\n center: (({ lng, lat, ...rest }) => ({ lng, lat }))(self.map.getCenter()),\n zoom: self.map.getZoom(),\n bearing: self.map.getBearing(),\n pitch: self.map.getPitch(),\n }\n : {},\n refreshViewport: () => {\n self.wrapper.viewportState = self.wrapper.getViewport();\n },\n };\n\n /**\n * Initializes an empty registered elements object for the given componentId\n *\n * @param {string} componentId\n * @param {boolean} force\n */\n this.initRegisteredElements = (componentId, force) => {\n if (\n typeof self.registeredElements[componentId] === \"undefined\" ||\n (force !== \"undefined\" && force)\n ) {\n self.registeredElements[componentId] = {\n layers: [],\n sources: [],\n images: [],\n events: [],\n controls: [],\n wrapperEvents: [],\n };\n }\n };\n\n /**\n * Overrides MapLibre-gl-js addLayer function providing an additional componentId parameter for the wrapper element registration.\n *\n * @param {object} layer\n * @param {string} beforeId\n * @param {string} componentId\n * @returns {undefined}\n */\n this.addLayer = (layer, beforeId, componentId) => {\n if (!self.map.style) {\n return;\n }\n if (componentId && typeof componentId === \"string\" && typeof layer.id !== \"undefined\") {\n self.initRegisteredElements(componentId);\n self.registeredElements[componentId].layers.push(layer.id);\n\n if (typeof layer.source === \"object\") {\n self.registeredElements[componentId].sources.push(layer.id);\n }\n }\n\n self.map.addLayer(layer, beforeId);\n };\n\n /**\n * Overrides MapLibre-gl-js addSource function providing an additional componentId parameter for the wrapper element registration.\n *\n * @param {string} sourceId\n * @param {object} source\n * @param {object} options\n * @param {string} componentId\n * @returns {undefined}\n */\n this.addSource = (sourceId, source, options, componentId) => {\n if (!self.map.style) {\n return;\n }\n if (typeof options === \"string\" && typeof componentId === \"undefined\") {\n return self.addSource.call(self, sourceId, source, undefined, options);\n }\n if (componentId && typeof componentId === \"string\" && typeof sourceId !== \"undefined\") {\n self.initRegisteredElements(componentId);\n self.registeredElements[componentId].sources.push(sourceId);\n }\n\n self.map.addSource(sourceId, source, options);\n };\n\n /**\n * Overrides MapLibre-gl-js addImage function providing an additional componentId parameter for the wrapper element registration.\n *\n * @param {string} id\n * @param {*} image\n * @param {*} ref\n * @param {string} componentId\n * @returns {undefined}\n */\n this.addImage = (id, image, ref, componentId) => {\n if (!self.map.style) {\n return;\n }\n if (typeof ref === \"string\" && typeof componentId === \"undefined\") {\n return self.addImage.call(self, id, image, undefined, ref);\n }\n if (componentId && typeof componentId === \"string\" && typeof id !== \"undefined\") {\n self.initRegisteredElements(componentId);\n self.registeredElements[componentId].images.push(id);\n }\n\n self.map.addImage(id, image, ref);\n };\n\n /**\n * Overrides MapLibre-gl-js on function providing an additional componentId parameter for the wrapper element registration.\n *\n * @param {string} type\n * @param {string} layerId\n * @param {function} listener\n * @param {string} componentId\n * @returns {undefined}\n */\n this.on = (type, layerId, listener, componentId) => {\n if (typeof listener === \"string\" && typeof layerId === \"function\") {\n return self.on.call(self, type, undefined, layerId, listener);\n }\n\n let _arguments = [type, layerId, listener];\n if (!layerId) {\n _arguments = [type, listener];\n }\n\n if (componentId && typeof componentId === \"string\") {\n self.initRegisteredElements(componentId);\n self.registeredElements[componentId].events.push(_arguments);\n }\n\n self.map.on(..._arguments);\n };\n\n /**\n * Overrides MapLibre-gl-js addControl function providing an additional componentId parameter for the wrapper element registration.\n *\n * @param {object} control\n * @param {string} position\n * @param {string} componentId\n */\n this.addControl = (control, position, componentId) => {\n if (componentId && typeof componentId === \"string\") {\n self.initRegisteredElements(componentId);\n self.registeredElements[componentId].controls.push(control);\n }\n\n self.map.addControl(control, position);\n };\n\n /**\n * Removes anything that has been added to the maplibre instance referenced with componentId\n *\n * @param {string} componentId\n */\n this.cleanup = (componentId) => {\n if (self.map.style && typeof self.registeredElements[componentId] !== \"undefined\") {\n // cleanup layers\n self.registeredElements[componentId].layers.forEach((item) => {\n if (self.map.style.getLayer(item)) {\n self.map.style.removeLayer(item);\n }\n });\n\n // cleanup sources\n self.registeredElements[componentId].sources.forEach((item) => {\n if (self.map.style.getSource(item)) {\n self.map.style.removeSource(item);\n }\n });\n\n // cleanup images\n self.registeredElements[componentId].images.forEach((item) => {\n if (self.map.hasImage(item)) {\n self.map.style.removeImage(item);\n }\n });\n\n // cleanup events\n self.registeredElements[componentId].events.forEach((item) => {\n self.map.off(...item);\n });\n\n // cleanup controls\n self.registeredElements[componentId].controls.forEach((item) => {\n self.map.removeControl(item);\n });\n\n // cleanup wrapper events\n self.registeredElements[componentId].wrapperEvents.forEach((item) => {\n self.wrapper.off(...item);\n });\n\n self.initRegisteredElements(componentId, true);\n }\n };\n\n // add style prop functions that require map._update to be called afterwards\n let updatingStyleFunctions = [\n \"moveLayer\",\n \"removeLayer\",\n \"removeSource\",\n \"setPaintProperty\",\n \"setLayoutProperty\",\n ];\n updatingStyleFunctions.forEach((item) => {\n this[item] = (...props) => {\n if (self.map && this.map.style && typeof self.map.style[item] === \"function\") {\n self.map.style[item](...props);\n }\n return self.map._update ? self.map._update(true) : undefined;\n };\n });\n\n // add style prop functions\n let styleFunctions = [\n \"getLayer\",\n \"getSource\",\n \"listImages\",\n \"getPaintProperty\",\n \"getLayoutProperty\",\n \"removeImage\",\n ];\n styleFunctions.forEach((item) => {\n this[item] = (...props) => {\n if (self.map && self.map.style) {\n return self.map.style[item](...props);\n }\n return false;\n };\n });\n\n this.addNativeMaplibreFunctionsAndProps = () => {\n // add MapLibre-gl functions\n Object.keys(this.map.__proto__).forEach((item) => {\n if (typeof this[item] === \"undefined\") {\n this[item] = (...props) => self.map[item](...props);\n }\n });\n\n // add MapLibre-gl properties\n Object.keys(this.map).forEach((item) => {\n if (typeof this[item] === \"undefined\") {\n this[item] = self.map[item];\n }\n });\n };\n\n // add functions that are missing on the MapLibre instances prototype\n let missingFunctions = [\n \"getZoom\",\n \"setZoom\",\n \"getCenter\",\n \"setCenter\",\n \"getBearing\",\n \"setBearing\",\n \"getPitch\",\n \"setPitch\",\n \"jumpTo\",\n \"flyTo\",\n \"panTo\",\n \"panBy\",\n \"panBy\",\n \"zoomTo\",\n \"zoomIn\",\n \"zoomOut\",\n \"getPadding\",\n \"setPadding\",\n \"rotateTo\",\n \"resetNorth\",\n \"resetNorthPitch\",\n \"snapToNorth\",\n \"cameraForBounds\",\n \"fitBounds\",\n \"fitScreenCoordinates\",\n \"getFreeCameraOptions\",\n \"setFreeCameraOptions\",\n \"easeTo\",\n \"stop\",\n ];\n missingFunctions.forEach((item) => {\n this[item] = (...props) => {\n if (typeof self.map[item] === \"function\") {\n return self.map[item].call(self.map, ...props);\n }\n return undefined;\n };\n });\n\n // initialize the MapLibre-gl instance\n let initializeMapLibre = async () => {\n // if mapOptions style URL is given and if it is not a mapbox URL fetch the json and initialize the mapbox object\n if (\n typeof props.mapOptions.style === \"string\" &&\n props.mapOptions.style.indexOf(\"mapbox://\") === -1\n ) {\n await fetch(props.mapOptions.style)\n .then((response) => {\n if (response.ok) {\n return response.json();\n } else {\n throw new Error(\"error loading map style.json\");\n }\n })\n .then((styleJson) => {\n styleJson.layers.forEach((item) => {\n self.baseLayers.push(item.id);\n if (!self.firstSymbolLayer && item.type === \"symbol\") {\n self.firstSymbolLayer = item.id;\n }\n });\n self.styleJson = styleJson;\n props.mapOptions.style = styleJson;\n })\n .catch((error) => {\n console.log(error);\n });\n }\n\n self.map = new maplibregl.Map(props.mapOptions);\n\n self.addNativeMaplibreFunctionsAndProps();\n self.wrapper.refreshViewport();\n self.wrapper.fire(\"viewportchange\");\n\n self.map.on(\"move\", () => {\n self.wrapper.viewportState = self.wrapper.getViewport();\n self.wrapper.fire(\"viewportchange\");\n });\n self.map.on(\"idle\", () => {\n self.wrapper.refreshLayerState();\n });\n self.map.on(\"data\", () => {\n self.wrapper.refreshLayerState();\n });\n if (typeof props.onReady === \"function\") {\n props.onReady(self.map, self);\n }\n };\n initializeMapLibre();\n};\n\nexport default MapLibreGlWrapper;\n","import React, { useRef, useEffect, useContext } from \"react\";\nimport PropTypes from \"prop-types\";\nimport { MapContext } from \"@mapcomponents/react-core\";\nimport MapLibreGlWrapper from \"./lib/MapLibreGlWrapper\";\n\nimport \"maplibre-gl/dist/maplibre-gl.css\";\n\n/**\n * Creates a MapLibreGlWrapper instance and registers it in MapContext\n * after the MapLibre-gl load event has fired.\n *\n * MapLibreMap returns the html node that will be used by MapLibre-gl to render the map.\n * This Component must be kept unaware of any related components that interact with the MapLibre-gl\n * instance.\n *\n * @component\n */\nconst MapLibreMap = (props) => {\n const map = useRef(null);\n const mapContainer = useRef(null);\n\n const mapContext = useContext(MapContext);\n const mapContextRef = useRef(mapContext);\n\n const mapIdRef = useRef(props.mapId);\n const mapOptions = props.options;\n\n useEffect(() => {\n let mapId = mapIdRef.current;\n let _mapContext = mapContextRef.current;\n\n return () => {\n _mapContext.removeMap(mapId);\n map.current?.remove?.();\n map.current = null;\n };\n }, []);\n\n useEffect(() => {\n if (mapContainer.current) {\n map.current = new MapLibreGlWrapper({\n mapOptions: {\n container: mapContainer.current,\n ...mapOptions,\n },\n onReady: (map, wrapper) => {\n map.once(\"load\", () => {\n if (props.mapId) {\n mapContext.registerMap(props.mapId, wrapper);\n } else {\n mapContext.setMap(wrapper);\n }\n });\n\n // TODO: remove this line\n window.map = wrapper;\n },\n });\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [mapContainer]);\n\n return <div ref={mapContainer} className=\"mapContainer\" />;\n};\n\nMapLibreMap.defaultProps = {\n mapId: undefined,\n options: {\n lng: 8.607,\n lat: 53.1409349,\n zoom: 10,\n accessToken:\n \"pk.eyJ1IjoibWF4dG9iaSIsImEiOiJjaW1rcWQ5bWMwMDJvd2hrbWZ2ZTBhcnM5In0.NcGt5NmLP5Q1WC7P5u6qUA\",\n },\n};\n\nMapLibreMap.propTypes = {\n /**\n * Id of the MapLibreGl(Wrapper) instance in mapContext\n */\n mapId: PropTypes.string,\n /**\n * Config object that is passed to the MapLibreGl constructor as first parameter.\n * See https://maplibre.org/maplibre-gl-js-docs/api/map/ for a formal documentation of al\n * available properties.\n */\n options: PropTypes.object,\n};\n\nexport default MapLibreMap;\n","import { useContext, useCallback, useState, useEffect, useRef } from \"react\";\nimport PropTypes from \"prop-types\";\nimport { v4 as uuidv4 } from \"uuid\";\nimport { MapContext } from \"@mapcomponents/react-core\";\n\n/**\n * React hook that allows subscribing to map state changes\n *\n * @component\n */\nfunction useMapState(props) {\n // Use a useRef hook to reference the layer object to be able to access it later inside useEffect hooks\n const mapContext = useContext(MapContext);\n\n const initializedRef = useRef(false);\n const mapRef = useRef(undefined);\n\n const [viewport, setViewport] = useState(undefined);\n const viewportRef = useRef(undefined);\n\n const [layers, setLayers] = useState(undefined);\n const layersRef = useRef(undefined);\n //const mapRef = useRef(props.map);\n const componentId = useRef(uuidv4());\n\n /**\n * returns the element if it matches the defined filter criteria\n * to be used as filter function on the layers array\n *\n * @param {object} layer\n */\n const layerIdFilter = useCallback(\n (layer) => {\n if (!props?.filter?.includeBaseLayers && layer.baseLayer) {\n return false;\n }\n\n if (typeof props.filter?.matchLayerIds !== \"undefined\") {\n if (props.filter.matchLayerIds instanceof RegExp) {\n return props.filter.matchLayerIds.test(layer.id);\n } else {\n return layer.id.includes(props.filter.matchLayerIds);\n }\n }\n\n return true;\n },\n [props.filter]\n );\n\n const refreshLayerState = useCallback(() => {\n let _layerState = mapRef.current.wrapper.layerState.filter(layerIdFilter);\n let _layerStateString = JSON.stringify(_layerState);\n if (layersRef.current !== _layerStateString) {\n layersRef.current = _layerStateString;\n setLayers(_layerState);\n }\n }, [layerIdFilter]);\n\n useEffect(() => {\n let _componentId = componentId.current;\n\n return () => {\n if (mapRef.current) {\n mapRef.current.cleanup(_componentId);\n mapRef.current = undefined;\n }\n initializedRef.current = false;\n };\n }, []);\n\n useEffect(() => {\n if (!mapContext.mapExists(props.mapId) || initializedRef.current) return;\n // the MapLibre-gl instance (mapContext.getMap(props.mapId)) is accessible here\n // initialize the layer and add it to the MapLibre-gl instance or do something else with it\n initializedRef.current = true;\n mapRef.current = mapContext.getMap(props.mapId);\n\n if (props?.watch?.viewport) {\n setViewport(mapRef.current.wrapper.viewportState);\n\n mapRef.current.wrapper.on(\n \"viewportchange\",\n () => {\n if (viewportRef.current !== mapRef.current?.wrapper.viewportStateString) {\n setViewport(mapRef.current?.wrapper.viewportState);\n }\n },\n componentId.current\n );\n }\n\n if (props?.watch?.layers) {\n refreshLayerState();\n\n mapRef.current.wrapper.on(\n \"layerchange\",\n refreshLayerState,\n {\n includeBaseLayers: props?.filter?.includeBaseLayers,\n matchLayerIds: props?.filter?.matchLayerIds,\n },\n componentId.current\n );\n }\n }, [mapContext.mapIds, mapContext, props.mapId, refreshLayerState]);\n\n return {\n layers,\n viewport,\n };\n}\n\nuseMapState.defaultProps = {\n mapId: undefined,\n watch: {\n layers: true,\n sources: false,\n viewport: false,\n },\n filter: {\n includeBaseLayers: false,\n },\n};\n\nuseMapState.propTypes = {\n /**\n * Id of the target MapLibre instance in mapContext\n */\n mapId: PropTypes.string,\n /**\n * Defines map Resources to watch\n */\n watch: PropTypes.shape({\n layers: PropTypes.bool,\n sources: PropTypes.bool,\n viewport: PropTypes.bool,\n }),\n /**\n * Filter string or RegExp to more explicitly define the elements watched and increase performance\n * strings will be matched using layerId.includes(matchString)\n * RegExps will be matched using matchRegExp.test(layerId)\n */\n filter: PropTypes.shape({\n includeBaseLayers: PropTypes.bool,\n matchLayerIds: PropTypes.oneOfType([PropTypes.string, PropTypes.instanceOf(RegExp)]),\n matchSourceIds: PropTypes.oneOfType([PropTypes.string, PropTypes.instanceOf(RegExp)]),\n }),\n};\n\nexport default useMapState;\n","import React, { useContext, useState, useEffect, useRef } from \"react\";\nimport { v4 as uuidv4 } from \"uuid\";\nimport { MapContext } from \"@mapcomponents/react-core\";\nimport useMapState from \"./useMapState\";\n\nfunction useMap(props) {\n // Use a useRef hook to reference the layer object to be able to access it later inside useEffect hooks\n const mapContext = useContext(MapContext);\n\n const mapState = useMapState({\n mapId: props.mapId,\n watch: {\n viewport: false,\n layers: true,\n sources: false,\n },\n });\n\n const initializedRef = useRef(false);\n const mapRef = useRef(undefined);\n\n const componentId = useRef(uuidv4());\n\n const [mapIsReady, setMapIsReady] = useState(undefined);\n\n useEffect(() => {\n let _componentId = componentId.current;\n\n return () => {\n if (mapRef.current) {\n mapRef.current.cleanup(_componentId);\n mapRef.current = undefined;\n }\n initializedRef.current = false;\n setMapIsReady(false);\n };\n }, []);\n\n useEffect(() => {\n if (!mapContext.mapExists(props.mapId) || initializedRef.current) return;\n\n //check if insertBeforeLayer exists\n if (props.waitForLayer) {\n let layerFound = false;\n\n mapState?.layers?.forEach((layer) => {\n if (layer.id === props.waitForLayer) {\n layerFound = true;\n }\n });\n if (!layerFound) {\n return;\n }\n }\n // the MapLibre-gl instance (mapContext.getMap(props.mapId)) is accessible here\n // initialize the layer and add it to the MapLibre-gl instance or do something else with it\n initializedRef.current = true;\n mapRef.current = mapContext.getMap(props.mapId);\n setMapIsReady(true);\n }, [mapContext.mapIds, mapState.layers, mapContext, props.mapId]);\n\n return {\n map: mapRef.current,\n mapIsReady,\n componentId: componentId.current,\n layers: mapState.layers,\n };\n}\n\nexport default useMap;\n","import React, { useRef, useEffect } from \"react\";\nimport PropTypes from \"prop-types\";\nimport useMap from \"../../hooks/useMap\";\n\n/**\n * TODO: Add short & useful description\n *\n * @param {object} props\n * @param {string} props.mapId Id of the target MapLibre instance in mapContext\n *\n * @component\n */\nconst MlComponentTemplate = (props) => {\n const mapHook = useMap({ mapId: props.mapId, waitForLayer: props.insertBeforeLayer });\n const initializedRef = useRef(false);\n\n useEffect(() => {\n if (!mapHook.mapIsReady || initializedRef.current) return;\n // the MapLibre-gl instance (mapHook.map) is accessible here\n // initialize the layer and add it to the MapLibre-gl instance or do something else with it\n initializedRef.current = true;\n\n mapHook.map.setCenter([7.132122000552613, 50.716405378037706]);\n }, [mapHook.map, mapHook.mapIsReady, props.mapId]);\n\n return <></>;\n};\n\nMlComponentTemplate.defaultProps = {\n mapId: undefined,\n};\n\nMlComponentTemplate.propTypes = {\n /**\n * Id of the target MapLibre instance in mapContext\n */\n mapId: PropTypes.string,\n};\nexport default MlComponentTemplate;\n","import React, { useContext, useRef, useEffect, useState } from \"react\";\nimport PropTypes from \"prop-types\";\nimport { MapContext } from \"@mapcomponents/react-core\";\n\nimport { v4 as uuidv4 } from \"uuid\";\nimport Button from \"@mui/material/Button\";\n\n/**\n * Adds a fill extrusion layer to the MapLibre instance reference by props.mapId\n *\n * @Component\n */\nconst MlFillExtrusionLayer = (props) => {\n const mapContext = useContext(MapContext);\n const mapRef = useRef(null);\n\n const [showLayer, setShowLayer] = useState(true);\n const componentId = useRef(\n (props.idPrefix ? props.idPrefix : \"MlFillExtrusionLayer-\") + uuidv4()\n );\n const initializedRef = useRef(false);\n const layerId = useRef(props.layerId || \"MlFillExtrusionLayer-\" + uuidv4());\n\n useEffect(() => {\n let _componentId = componentId.current;\n\n return () => {\n if (mapRef.current) {\n mapRef.current.cleanup(_componentId);\n mapRef.current = undefined;\n }\n initializedRef.current = false;\n };\n }, []);\n\n useEffect(() => {\n if (!mapContext.mapExists(props.mapId) || initializedRef.current) return;\n // the MapLibre-gl instance (mapContext.getMap(props.mapId)) is accessible here\n // initialize the layer and add it to the MapLibre-gl instance or do something else with it\n initializedRef.current = true;\n mapRef.current = mapContext.getMap(props.mapId);\n\n let lastLabelLayerId = undefined;\n if (mapContext.map.getLayer(\"waterway-name\")) {\n lastLabelLayerId = \"waterway-name\";\n }\n\n if (mapContext.map.getLayer(\"poi_label\")) {\n lastLabelLayerId = \"poi_label\";\n }\n\n mapContext.map.addLayer(\n {\n id: layerId.current,\n type: \"fill-extrusion\",\n source: props.sourceId || \"openmaptiles\",\n \"source-layer\": props.sourceLayer || \"building\",\n minzoom: props.minZoom || 14,\n paint: {\n ...props.paint,\n },\n },\n props.insertBeforeLayer || lastLabelLayerId,\n componentId.current\n );\n }, [\n mapContext,\n props.insertBeforeLayer,\n props.mapId,\n props.minZoom,\n props.paint,\n props.sourceId,\n props.sourceLayer,\n ]);\n\n useEffect(() => {\n if (!initializedRef.current) return;\n\n // toggle layer visibility by changing the layout object's visibility property\n mapRef.current.setLayoutProperty(layerId.current, \"visibility\", showLayer ? \"visible\" : \"none\");\n }, [showLayer, mapContext]);\n\n return (\n <Button\n color=\"primary\"\n variant={showLayer ? \"contained\" : \"outlined\"}\n onClick={() => setShowLayer(!showLayer)}\n >\n Composite\n </Button>\n );\n};\n\nMlFillExtrusionLayer.defaultProps = {\n mapId: undefined,\n paint: {\n \"fill-extrusion-color\": \"hsl(196, 61%, 83%)\",\n \"fill-extrusion-height\": {\n property: \"render_height\",\n type: \"identity\",\n },\n \"fill-extrusion-base\": {\n property: \"render_min_height\",\n type: \"identity\",\n },\n \"fill-extrusion-opacity\": 1,\n },\n};\n\nMlFillExtrusionLayer.propTypes = {\n /**\n * Id of the target MapLibre instance in mapContext\n */\n mapId: PropTypes.string,\n /**\n * Id of the layer that will be added by this component\n */\n layerId: PropTypes.string,\n /**\n * Prefix of the component id this component uses when adding elements to the MapLibreGl-instance\n */\n idPrefix: PropTypes.string,\n /**\n * Paint properties of the config object that is passed to the MapLibreGl.addLayer call. All\n * available properties are documented in the MapLibreGl documentation\n * https://maplibre.org/maplibre-gl-js-docs/style-spec/layers/#fill-extrusion\n */\n paint: PropTypes.object,\n /**\n * Source id of a vector tile source containing the geometries to use for this fill-extrusion\n * layer.\n * https://maplibre.org/maplibre-gl-js-docs/style-spec/layers/#source-layer\n */\n sourceId: PropTypes.string,\n /**\n * Layer id from a vector tile source containing the geometries to use for this fill-extrusion\n * layer.\n * https://maplibre.org/maplibre-gl-js-docs/style-spec/layers/#source-layer\n */\n sourceLayer: PropTypes.string,\n /**\n * This layer will be hidde for zoom levels lower than defined on this property\n * https://maplibre.org/maplibre-gl-js-docs/style-spec/layers/#minzoom\n */\n minZoom: PropTypes.number,\n /**\n * The layerId of an existing layer this layer should be rendered visually beneath\n * https://maplibre.org/maplibre-gl-js-docs/api/map/#map#addlayer - see \"beforeId\" property\n */\n insertBeforeLayer: PropTypes.string,\n};\n\nexport default MlFillExtrusionLayer;\n","import * as turf from \"@turf/turf\";\n\nconst _showNextTransitionSegment = function (\n props,\n layerId,\n map,\n transitionInProgressRef,\n transitionGeojsonDataRef,\n transitionGeojsonCommonDataRef,\n currentTransitionStepRef,\n msPerStep,\n transitionTimeoutRef\n) {\n if (\n typeof map.getSource(layerId) === \"undefined\" ||\n !transitionInProgressRef.current\n ) {\n transitionTimeoutRef.current = setTimeout(() => _showNextTransitionSegment(...arguments), msPerStep);\n return;\n }\n if (\n typeof transitionGeojsonDataRef.current[currentTransitionStepRef.current] !==\n \"undefined\"\n ) {\n let newData =\n currentTransitionStepRef.current + 1 ===\n transitionGeojsonDataRef.current.length\n ? props.geojson\n : turf.lineString([\n ...transitionGeojsonCommonDataRef.current,\n ...transitionGeojsonDataRef.current[currentTransitionStepRef.current]\n .geometry.coordinates,\n ]);\n\n if (!map?.getSource?.(layerId)) {\n return;\n }\n\n map.getSource(layerId).setData(newData);\n\n if (typeof props.onTransitionFrame === \"function\") {\n props.onTransitionFrame(newData);\n }\n\n currentTransitionStepRef.current++;\n if (\n transitionInProgressRef.current &&\n currentTransitionStepRef.current < transitionGeojsonDataRef.current.length\n ) {\n transitionTimeoutRef.current = setTimeout(() => _showNextTransitionSegment(...arguments), msPerStep);\n } else {\n if (typeof props.onTransitionEnd === \"function\") {\n props.onTransitionEnd(props.geojson);\n }\n transitionInProgressRef.current = false;\n }\n }\n};\n\nconst _transitionToGeojson = (\n newGeojson,\n props,\n transitionGeojsonCommonDataRef,\n transitionGeojsonDataRef,\n transitionInProgressRef,\n oldGeojsonRef,\n msPerStep,\n currentTransitionStepRef,\n map,\n layerId,\n transitionTimeoutRef\n) => {\n // create the transition geojson between oldGeojsonRef.current and props.geojson\n\n // create a geojson that contains no common point between the two line features\n let transitionCoordinatesShort = [];\n let transitionCoordinatesLong = [];\n let targetCoordinates = [];\n let srcCoordinates = [];\n transitionGeojsonCommonDataRef.current = [];\n let sourceGeojson = oldGeojsonRef.current || {\n geometry: {\n type: \"LineString\",\n coordinates: [],\n },\n properties: {},\n type: \"Feature\",\n };\n\n let targetGeojson = newGeojson;\n\n let longerGeojson = targetGeojson;\n let shorterGeojson = sourceGeojson;\n let reverseOrder = false;\n // In case one geojson is missing completely use the first two coordinates of the other geojson\n if (\n typeof longerGeojson.geometry === \"undefined\" &&\n typeof shorterGeojson.geometry !== \"undefined\" &&\n shorterGeojson.geometry.coordinates.length > 1\n ) {\n longerGeojson = turf.lineString(shorterGeojson.geometry.coordinates.slice(0, 2));\n } else if (\n typeof shorterGeojson.geometry === \"undefined\" &&\n typeof longerGeojson.geometry !== \"undefined\" &&\n longerGeojson.geometry.coordinates.length > 1\n ) {\n shorterGeojson = turf.lineString(longerGeojson.geometry.coordinates.slice(0, 2));\n } else if (\n typeof shorterGeojson.geometry === \"undefined\" &&\n typeof longerGeojson.geometry === \"undefined\"\n ) {\n return;\n }\n\n if (\n longerGeojson.geometry.coordinates.length <\n shorterGeojson.geometry.coordinates.length\n ) {\n longerGeojson = sourceGeojson;\n shorterGeojson = targetGeojson;\n reverseOrder = true;\n }\n\n if (longerGeojson && shorterGeojson) {\n for (var i = 0, len = longerGeojson.geometry.coordinates.length; i < len; i++) {\n if (\n typeof shorterGeojson.geometry.coordinates[i] !== \"undefined\" &&\n longerGeojson.geometry.coordinates[i][0] ===\n shorterGeojson.geometry.coordinates[i][0] &&\n longerGeojson.geometry.coordinates[i][1] ===\n shorterGeojson.geometry.coordinates[i][1]\n ) {\n // if coordinates are equal\n transitionGeojsonCommonDataRef.current.push(\n longerGeojson.geometry.coordinates[i]\n );\n } else {\n if (typeof longerGeojson.geometry.coordinates[i] !== \"undefined\") {\n transitionCoordinatesLong.push(longerGeojson.geometry.coordinates[i]);\n }\n if (typeof shorterGeojson.geometry.coordinates[i] !== \"undefined\") {\n transitionCoordinatesShort.push(shorterGeojson.geometry.coordinates[i]);\n }\n }\n }\n }\n\n if (reverseOrder) {\n targetCoordinates = transitionCoordinatesShort;\n srcCoordinates = transitionCoordinatesLong;\n } else {\n targetCoordinates = transitionCoordinatesLong;\n srcCoordinates = transitionCoordinatesShort;\n }\n\n if (targetCoordinates.length < 2 && srcCoordinates < 2) return;\n // create props.transitionTime / msPerStep (=: transitionSteps) Versions of transitionGeojsonCommonDataRef.current + transitionCoordinates making the transitionCoordinates transitionCoordinatesDistance / transitionSteps longer on each step\n\n let transitionSteps = props.transitionTime / msPerStep;\n let srcCoordinatesDistance =\n srcCoordinates.length > 1\n ? Math.round(turf.length(turf.lineString(srcCoordinates)))\n : 0;\n let targetCoordinatesDistance =\n targetCoordinates.length > 1\n ? Math.round(turf.length(turf.lineString(targetCoordinates)))\n : 0;\n let transitionDistance = targetCoordinatesDistance + srcCoordinatesDistance;\n\n let srcCoordinatesShare = srcCoordinatesDistance / transitionDistance;\n let srcTransitionSteps = Math.round(transitionSteps * srcCoordinatesShare);\n let srcPerStepDistance =\n Math.round((srcCoordinatesDistance / srcTransitionSteps) * 100) / 100;\n\n let targetCoordinatesShare = targetCoordinatesDistance / transitionDistance;\n let targetTransitionSteps = Math.round(transitionSteps * targetCoordinatesShare);\n let targetPerStepDistance =\n Math.round((targetCoordinatesDistance / targetTransitionSteps) * 100) / 100;\n\n transitionGeojsonDataRef.current = [];\n\n // use srcPerStepDistance as src coordinates are always animated backwards\n let loopStepDistance = srcCoordinatesDistance;\n if (loopStepDistance <= 0) {\n loopStepDistance = 0.1;\n }\n let tmpLinestring = {};\n let tmpChunks = {};\n\n if (srcCoordinates.length > 1) {\n tmpChunks = turf.lineChunk(\n turf.lineString(srcCoordinates),\n srcPerStepDistance\n //{reverse:true}\n );\n // for some reason turf.lineChunk returns the full lineString as element 0, chunks start at 1\n tmpLinestring = tmpChunks.features[1];\n for (i = 0; i < srcTransitionSteps; i++) {\n transitionGeojsonDataRef.current.push(tmpLinestring);\n if (typeof tmpChunks.features[i] !== \"undefined\") {\n tmpLinestring = turf.lineString([\n ...tmpLinestring.geometry.coordinates,\n ...tmpChunks.features[i].geometry.coordinates,\n ]);\n } else {\n transitionGeojsonDataRef.current.push(tmpLinestring);\n break;\n }\n }\n transitionGeojsonDataRef.current.reverse();\n }\n\n if (targetCoordinates.length > 1) {\n loopStepDistance = 0;\n tmpChunks = turf.lineChunk(\n turf.lineString(targetCoordinates),\n targetPerStepDistance\n );\n // for some reason turf.lineChunk returns the full lineString as element 0, chunks start at 1\n tmpLinestring = tmpChunks.features[1];\n for (i = 0; i < targetTransitionSteps; i++) {\n transitionGeojsonDataRef.current.push(tmpLinestring);\n if (typeof tmpChunks.features[i] !== \"undefined\") {\n tmpLinestring = turf.lineString([\n ...tmpLinestring.geometry.coordinates,\n ...tmpChunks.features[i].geometry.coordinates,\n ]);\n } else {\n transitionGeojsonDataRef.current.push(tmpLinestring);\n break;\n }\n }\n }\n transitionGeojsonDataRef.current.push(props.geojson);\n\n currentTransitionStepRef.current = 1;\n transitionInProgressRef.current = true;\n transitionTimeoutRef.current = setTimeout(\n () =>\n _showNextTransitionSegment(\n props,\n layerId,\n map,\n transitionInProgressRef,\n transitionGeojsonDataRef,\n transitionGeojsonCommonDataRef,\n currentTransitionStepRef,\n msPerStep,\n transitionTimeoutRef\n ),\n msPerStep\n );\n};\n\nexport { _showNextTransitionSegment, _transitionToGeojson };\n","const getDefaultPaintPropsByType = (type, defaultPaintOverrides) => {\n switch (type) {\n case \"fill\":\n if (defaultPaintOverrides?.fill) {\n return defaultPaintOverrides.fill;\n }\n return {\n \"fill-color\": \"rgba(10,240,256,0.6)\",\n };\n case \"line\":\n if (defaultPaintOverrides?.line) {\n return defaultPaintOverrides.line;\n }\n return {\n \"line-color\": \"rgb(100,200,100)\",\n \"line-width\": 5,\n };\n case \"circle\":\n default:\n if (defaultPaintOverrides?.circle) {\n return defaultPaintOverrides.circle;\n }\n return {\n \"circle-color\": \"#44aaaa\",\n \"circle-stroke-color\": \"#fff\",\n \"circle-stroke-width\": 2,\n };\n }\n};\n\nexport default getDefaultPaintPropsByType;\n","const mapGeometryTypesToLayerTypes = {\n Position: \"circle\",\n Point: \"circle\",\n MultiPoint: \"circle\",\n LineString: \"line\",\n MultiLineString: \"line\",\n Polygon: \"fill\",\n MultiPolygon: \"fill\",\n GeometryCollection: \"circle\",\n};\n\nconst getDefaulLayerTypeByGeometry = (geojson) => {\n if (geojson?.type === \"Feature\") {\n return mapGeometryTypesToLayerTypes?.[geojson?.geometry?.type]\n ? mapGeometryTypesToLayerTypes[geojson.geometry.type]\n : \"circle\";\n }\n if (geojson?.type === \"FeatureCollection\") {\n if (geojson.features.length) {\n return getDefaulLayerTypeByGeometry(geojson.features[0]);\n }\n return \"circle\";\n }\n};\nexport default getDefaulLayerTypeByGeometry;\n","import React, { useRef, useEffect, useCallback } from \"react\";\nimport PropTypes from \"prop-types\";\n\nimport * as turf from \"@turf/turf\";\n\nimport useMap from \"../../hooks/useMap\";\n\nimport { _transitionToGeojson } from \"./util/transitionFunctions\";\nimport getDefaultPaintPropsByType from \"./util/getDefaultPaintPropsByType\";\nimport getDefaulLayerTypeByGeometry from \"./util/getDefaultLayerTypeByGeometry\";\n\nconst msPerStep = 50;\nconst legalLayerTypes = [\"circle\", \"fill\", \"line\"];\n\n/**\n * Adds source and layer of types \"line\", \"fill\" or \"circle\" to display GeoJSON data on the map.\n *\n * @component\n */\nconst MlGeoJsonLayer = (props) => {\n // Use a useRef hook to reference the layer object to be able to access it later inside useEffect hooks\n const mapHook = useMap({ mapId: props.mapId, waitForLayer: props.insertBeforeLayer });\n const initializedRef = useRef(false);\n const layerId = useRef(props.layerId || \"MlGeoJsonLayer-\" + mapHook.componentId);\n const layerTypeRef = useRef(undefined);\n\n // transition effect variables\n const oldGeojsonRef = useRef(null);\n const transitionInProgressRef = useRef(false);\n const transitionTimeoutRef = useRef(undefined);\n const currentTransitionStepRef = useRef(false);\n const transitionGeojsonDataRef = useRef([]);\n const transitionGeojsonCommonDataRef = useRef([]);\n\n useEffect(() => {\n return () => {\n // This is the cleanup function, it is called when this react component is removed from react-dom\n if (transitionTimeoutRef.current) {\n clearTimeout(transitionTimeoutRef.current);\n }\n };\n }, []);\n\n useEffect(() => {\n if (!mapHook.map || !initializedRef.current) return;\n\n for (var key in props.layout) {\n mapHook.map.setLayoutProperty(layerId.current, key, props.layout[key]);\n }\n }, [props.layout, mapHook.map, props.mapId]);\n\n useEffect(() => {\n if (!mapHook.map || !initializedRef.current) return;\n\n let _paint =\n props.paint || getDefaultPaintPropsByType(layerTypeRef.current, props.defaultPaintOverrides);\n\n for (var key in _paint) {\n mapHook.map.setPaintProperty(layerId.current, key, _paint[key]);\n }\n }, [props.paint, mapHook.map, props.mapId, props.defaultPaintOverrides]);\n\n const transitionToGeojson = useCallback(\n (newGeojson) => {\n _transitionToGeojson(\n newGeojson,\n props,\n transitionGeojsonCommonDataRef,\n transitionGeojsonDataRef,\n transitionInProgressRef,\n oldGeojsonRef,\n msPerStep,\n currentTransitionStepRef,\n mapHook.map,\n layerId.current,\n transitionTimeoutRef\n );\n },\n [props, mapHook.map]\n );\n\n useEffect(() => {\n if (!mapHook?.map?.getSource(layerId.current) || !initializedRef.current) return;\n\n if (\n typeof props.transitionTime !== \"undefined\" &&\n props.type === \"line\" &&\n oldGeojsonRef.current\n ) {\n transitionInProgressRef.current = false;\n currentTransitionStepRef.current = false;\n transitionGeojsonDataRef.current = [];\n transitionGeojsonCommonDataRef.current = [];\n transitionToGeojson(props.geojson);\n } else {\n mapHook.map.getSource(layerId.current).setData(props.geojson);\n }\n oldGeojsonRef.current = props.geojson;\n }, [\n props.geojson,\n props.mapId,\n mapHook.map,\n props.type,\n transitionToGeojson,\n props.transitionTime,\n ]);\n\n const createLayer = useCallback(() => {\n let geojson = props.geojson;\n\n if (\n props.type === \"line\" &&\n typeof props.transitionTime !== \"undefined\" &&\n props.transitionTime &&\n typeof props.geojson.geometry !== \"undefined\"\n ) {\n var tmpChunks = turf.lineChunk(props.geojson, 0.01);\n geojson = tmpChunks.features[0];\n }\n\n layerTypeRef.current = props.type || getDefaulLayerTypeByGeometry(props.geojson);\n\n mapHook.map.addLayer(\n {\n id: layerId.current,\n source: {\n type: \"geojson\",\n data: geojson,\n },\n type: layerTypeRef.current,\n paint:\n props.paint ||\n getDefaultPaintPropsByType(layerTypeRef.current, props.defaultPaintOverrides),\n layout: props.layout || {},\n ...props.options,\n },\n props.insertBeforeLayer,\n mapHook.componentId\n );\n\n if (typeof props.onHover !== \"undefined\") {\n mapHook.map.on(\"mousemove\", layerId.current, props.onHover, mapHook.componentId);\n }\n\n if (typeof props.onClick !== \"undefined\") {\n mapHook.map.on(\"click\", layerId.current, props.onClick, mapHook.componentId);\n }\n\n if (typeof props.onLeave !== \"undefined\") {\n mapHook.map.on(\"mouseleave\", layerId.current, props.onLeave, mapHook.componentId);\n }\n\n if (\n props.type === \"line\" &&\n typeof props.transitionTime !== \"undefined\" &&\n typeof props.geojson.geometry !== \"undefined\"\n ) {\n transitionToGeojson(props.geojson);\n oldGeojsonRef.current = props.geojson;\n }\n }, [mapHook.map, props, transitionToGeojson]);\n\n useEffect(() => {\n if (!mapHook.mapIsReady || !props.geojson) return;\n\n if (\n initializedRef.current &&\n legalLayerTypes.indexOf(props.type) !== -1 &&\n layerTypeRef.current &&\n props.type !== layerTypeRef.current\n ) {\n mapHook.map.cleanup(mapHook.componentId);\n } else if (\n initializedRef.current &&\n (legalLayerTypes.indexOf(props.type) === -1 ||\n (legalLayerTypes.indexOf(props.type) !== -1 && props.type === layerTypeRef.current))\n ) {\n return;\n }\n\n // initialize the layer and add it to the MapLibre-gl instance or do something else with it\n initializedRef.current = true;\n\n createLayer();\n }, [mapHook.mapIsReady, createLayer, props]);\n\n return <></>;\n};\n\nMlGeoJsonLayer.propTypes = {\n /**\n * Id of the target MapLibre instance in mapContext\n */\n mapId: PropTypes.string,\n /**\n * Type of the layer that will be added to the MapLibre instance.\n * Possible values: \"line\", \"circle\", \"fill\"\n */\n type: PropTypes.string,\n /**\n * Layout property object, that is passed to the addLayer call.\n * Possible props depend on the layer type.\n * https://maplibre.org/maplibre-gl-js-docs/style-spec/layers/#line\n * https://maplibre.org/maplibre-gl-js-docs/style-spec/layers/#circle\n * https://maplibre.org/maplibre-gl-js-docs/style-spec/layers/#fill\n */\n layout: PropTypes.object,\n /**\n * Paint property object, that is passed to the addLayer call.\n * Possible props depend on the layer type.\n * https://maplibre.org/maplibre-gl-js-docs/style-spec/layers/#line\n * https://maplibre.org/maplibre-gl-js-docs/style-spec/layers/#circle\n * https://maplibre.org/maplibre-gl-js-docs/style-spec/layers/#fill\n */\n paint: PropTypes.object,\n /**\n * Javascript object with optional properties \"fill\", \"line\", \"circle\" to override implicit layer type default paint properties.\n */\n defaultPaintOverrides: PropTypes.object,\n /**\n * Javascript object that is spread into the addLayer commands first parameter.\n */\n options: PropTypes.object,\n /**\n * GeoJSON data that is supposed to be rendered by this component.\n */\n geojson: PropTypes.object,\n /**\n * Id of an existing layer in the mapLibre instance to help specify the layer order\n * This layer will be visually beneath the layer with the \"insertBeforeLayer\" id.\n */\n insertBeforeLayer: PropTypes.string,\n /**\n * Id of the new layer and source that are added to the MapLibre instance\n */\n layerId: PropTypes.string,\n /**\n * Click event handler that is executed whenever a geometry rendered by this component is clicked.\n */\n onClick: PropTypes.func,\n /**\n * Hover event handler that is executed whenever a geometry rendered by this component is hovered.\n */\n onHover: PropTypes.func,\n /**\n * Leave event handler that is executed whenever a geometry rendered by this component is\n * left/unhovered.\n */\n onLeave: PropTypes.func,\n /**\n * Creates transition animation whenever the geojson prop changes.\n * Only works with layer type \"line\" and LineString GeoJSON data.\n */\n transitionTime: PropTypes.number,\n};\n\nexport default MlGeoJsonLayer;\n","import React, { useRef, useCallback, useEffect } from \"react\";\n\nimport useMap from \"../../hooks/useMap\";\n\nconst MlImageMarkerLayer = (props) => {\n const mapHook = useMap({ mapId: props.mapId, waitForLayer: props.insertBeforeLayer });\n\n const layerInitializedRef = useRef(false);\n const imageIdRef = useRef(props.imageId || \"img_\" + new Date().getTime());\n const layerId = useRef(props.layerId || \"MlImageMarkerLayer-\" + mapHook.componentId);\n\n useEffect(() => {\n if (\n !mapHook.mapIsReady ||\n (mapHook.map && !mapHook.map.getLayer(layerId.current)) ||\n !props.options\n )\n return;\n // the MapLibre-gl instance (mapContext.map) is accessible here\n // initialize the layer and add it to the MapLibre-gl instance or do something else with it\n var key;\n\n if (props.options.layout) {\n for (key in props.options.layout) {\n mapHook.map.setLayoutProperty(layerId.current, key, props.options.layout[key]);\n }\n }\n if (props.options.paint) {\n for (key in props.options.paint) {\n mapHook.map.setPaintProperty(layerId.current, key, props.options.paint[key]);\n }\n }\n }, [props.options, layerId.current, props.mapId]);\n\n const addLayer = useCallback(() => {\n let tmpOptions = {\n id: layerId.current,\n layout: {},\n ...props.options,\n };\n tmpOptions.layout[\"icon-image\"] = imageIdRef.current;\n mapHook.map.addLayer(tmpOptions, props.insertBeforeLayer, mapHook.componentId);\n }, [props, mapHook.mapIsReady, mapHook.map]);\n\n useEffect(() => {\n if (!props.options || !mapHook.mapIsReady || layerInitializedRef.current) return;\n\n layerInitializedRef.current = true;\n\n if (props.imgSrc) {\n mapHook.map.loadImage(props.imgSrc, function (error, image) {\n if (error) throw error;\n mapHook.map.addImage(imageIdRef.current, image, mapHook.componentId);\n });\n }\n\n addLayer();\n }, [mapHook.mapIsReady, mapHook.map, addLayer, props]);\n\n useEffect(() => {\n if (\n !mapHook.mapIsReady ||\n (mapHook.map && !mapHook.map.getLayer(layerId.current)) ||\n !props.options\n ) {\n return;\n }\n\n mapHook.map.getSource(layerId.current).setData(props.options.source.data);\n }, [props.options.source.data, props]);\n\n return <></>;\n};\n\nexport default MlImageMarkerLayer;\n","export default \"b556faa3bc6829d2.png\"","import React, { useRef, useEffect, useState, useCallback } from \"react\";\nimport PropTypes from \"prop-types\";\nimport useMap from \"../../hooks/useMap\";\n\nimport Button from \"@mui/material/Button\";\nimport RoomIcon from \"@mui/icons-material/Room\";\nimport { point, circle } from \"@turf/turf\";\nimport MlGeoJsonLayer from \"../MlGeoJsonLayer/MlGeoJsonLayer\";\nimport MlImageMarkerLayer from \"../MlImageMarkerLayer/MlImageMarkerLayer\";\n\nimport marker from \"./assets/marker.png\";\n\n/**\n * Adds a button that makes the map follow the users GPS position using\n * navigator.geolocation.watchPosition if activated\n *\n * @param {object} props\n * @param {string} props.mapId Id of the target MapLibre instance in mapContext\n *\n * @component\n */\nconst MlFollowGps = (props) => {\n const mapHook = useMap({ mapId: props.mapId, waitForLayer: props.insertBeforeLayer });\n\n const [isFollowed, setIsFollowed] = useState(false);\n const [geoJson, setGeoJson] = useState(undefined);\n const watchIdRef = useRef(undefined);\n const [locationAccessDenied, setLocationAccessDenied] = useState(false);\n\n const [accuracyGeoJson, setAccuracyGeoJson] = useState();\n\n useEffect(() => {\n return () => {\n if (watchIdRef.current) {\n navigator.geolocation.clearWatch(watchIdRef.current);\n watchIdRef.current = undefined;\n }\n };\n }, []);\n\n const getLocationSuccess = useCallback(\n (pos) => {\n if (!mapHook.map) return;\n\n mapHook.map.setCenter([pos.coords.longitude, pos.coords.latitude]);\n const geoJsonPoint = point([pos.coords.longitude, pos.coords.latitude]);\n setGeoJson(geoJsonPoint);\n setAccuracyGeoJson(circle(geoJsonPoint, pos.coords.accuracy / 1000));\n },\n [mapHook.map]\n );\n\n const getLocationError = (err) => {\n console.log(\"Access of user location denied\");\n setLocationAccessDenied(true);\n };\n\n useEffect(() => {\n if (!mapHook.map) return;\n\n if (isFollowed) {\n watchIdRef.current = navigator.geolocation.watchPosition(\n getLocationSuccess,\n getLocationError\n );\n } else {\n navigator.geolocation.clearWatch(watchIdRef.current);\n }\n }, [isFollowed, getLocationSuccess]);\n\n return (\n <>\n {isFollowed && geoJson && (\n <MlGeoJsonLayer\n geojson={accuracyGeoJson}\n type={\"fill\"}\n paint={{\n \"fill-color\": \"#ee7700\",\n \"fill-opacity\": 0.5,\n ...props.accuracyPaint,\n }}\n insertBeforeLayer={\"MlFollowGpsMarker\"}\n />\n )}\n\n {isFollowed && geoJson && (\n <MlImageMarkerLayer\n layerId={\"MlFollowGpsMarker\"}\n options={{\n type: \"symbol\",\n source: {\n type: \"geojson\",\n data: geoJson,\n },\n layout: {\n \"icon-size\": 0.1,\n \"icon-offset\": [0, -340],\n ...props.markerLayout,\n },\n }}\n imgSrc={props.markerImage || marker}\n />\n )}\n\n <Button\n sx={{ zIndex: 1002, color: isFollowed ? props.onColor : props.offColor, ...props.style }}\n disabled={locationAccessDenied}\n onClick={() => {\n setIsFollowed(!isFollowed);\n }}\n >\n {\" \"}\n <RoomIcon sx={{ fontSize: props.style.fontSize }} />{\" \"}\n </Button>\n </>\n );\n};\n\nMlFollowGps.defaultProps = {\n mapId: undefined,\n style: {\n minWidth: \"30px\",\n minHeight: \"30px\",\n width: \"30px\",\n height: \"30px\",\n backgroundColor: \"#414141\",\n borderRadius: \"23%\",\n margin: 0.15,\n fontSize: \"1.3em\",\n \":hover\": {\n backgroundColor: \"#515151\",\n color: \"#ececec\",\n },\n },\n onColor: \"#ececec\",\n offColor: \"#666\",\n};\n\nMlFollowGps.propTypes = {\n /**\n * Id of the target MapLibre instance in mapContext\n */\n mapId: PropTypes.string,\n /**\n * CSS style object that is applied to the button component\n */\n style: PropTypes.object,\n /**\n * Active button font color\n */\n onColor: PropTypes.string,\n /**\n * Inactive button font color\n */\n offColor: PropTypes.string,\n /**\n * Accuracy paint property object, that is passed to the MlGeoJsonLayer responsible for drawing the accuracy circle.\n * Use any available paint prop from layer type \"fill\".\n * https://maplibre.org/maplibre-gl-js-docs/style-spec/layers/#fill\n */\n accuracyPaint: PropTypes.object,\n /**\n * Marker layout property object, that is passed to the MlImageMarkerLayer responsible for drawing the position marker.\n * Use any available layout property from layer type \"symbol\".\n * https://maplibre.org/maplibre-gl-js-docs/style-spec/layers/#symbol\n */\n markerLayout: PropTypes.object,\n /**\n * Replace the default marker image with a custom one.\n */\n markerImage: PropTypes.string,\n};\nexport default MlFollowGps;\n","const nmMap = {\n street: [\n \"footway\",\n \"street\",\n \"road\",\n \"street_name\",\n \"residential\",\n \"path\",\n \"pedestrian\",\n \"road_reference\",\n \"road_reference_intl\",\n \"square\",\n \"place\",\n ],\n number: [\"house_number\", \"street_number\"],\n place: [\n \"city\",\n \"village\",\n \"hamlet\",\n \"locality\",\n \"croft\",\n \"neighbourhood\",\n \"suburb\",\n \"city_district\",\n \"district\",\n \"quarter\",\n \"borough\",\n \"city_block\",\n \"residential\",\n \"commercial\",\n \"industrial\",\n \"houses\",\n \"subdivision\",\n \"allotments\",\n \"postal_city\",\n \"town\",\n \"municipality\",\n \"local_administrative_area\",\n ],\n zip: [\"postcode\", \"partial_postcode\"],\n state: [\"state\", \"province\", \"state_code\"],\n};\n\nconst nmConverter = (nmAddress) => {\n const addressArr = [];\n for (let key in nmMap) {\n nmMap[key].some((element) => {\n if (nmAddress.hasOwnProperty(element)) {\n addressArr.push(nmAddress[element]);\n return true;\n }\n return false;\n });\n }\n return addressArr.join(\", \");\n};\nexport default nmConverter;\n","import maplibregl from \"maplibre-gl\";\nimport jsPDF from \"jspdf\";\nimport nmConverter from \"./nominatimMap.js\";\n\nconst toPixels = (length) => {\n let conversionFactor = 96;\n\n conversionFactor /= 25.4;\n\n return conversionFactor * length + \"px\";\n};\n\nconst createPdf = (map, locationValue, setLoading) => {\n setLoading(true);\n\n const width = 210;\n const height = 297;\n // Calculate pixel ratio\n const actualPixelRatio = window.devicePixelRatio;\n\n // Create map container\n const hidden = document.createElement(\"div\");\n hidden.className = \"hidden-map\";\n document.body.appendChild(hidden);\n const container = document.createElement(\"div\");\n container.style.width = toPixels(width);\n container.style.height = toPixels(height);\n hidden.appendChild(container);\n\n //Render map\n var renderMap = new maplibregl.Map({\n container: container,\n center: map.getCenter(),\n zoom: map.getZoom(),\n bearing: map.getBearing(),\n pitch: map.getPitch(),\n interactive: false,\n preserveDrawingBuffer: true,\n fadeDuration: 0,\n attributionControl: false,\n });\n let style = map.getStyle();\n for (let name in style.sources) {\n let src = style.sources[name];\n\n Object.keys(src).forEach((key) => {\n //delete properties if value is undefined.\n // for instance, raster-dem might has undefined value in \"url\" and \"bounds\"\n if (!src[key]) {\n delete src[key];\n }\n });\n }\n renderMap.setStyle(style);\n\n renderMap.once(\"idle\", function () {\n // TO DO: It is still under development\n const pdf = new jsPDF({\n orientation: \"p\",\n unit: \"mm\",\n compress: true,\n });\n Object.defineProperty(window, \"devicePixelRatio\", {\n get: function () {\n return 300 / 96;\n },\n });\n const offsetX = 2.5;\n const offsetY = 2.5;\n const marginTop = 3;\n const marginBottom = 3;\n const innerMargin = 2;\n const logo =\n \"data:image/png;base64,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\";\n const textBuffer = 1;\n const lineHeight = 3.25;\n const text = locationValue ? nmConverter(locationValue.address) : \"\";\n const textChunksSeperator = text.split(\",\");\n const textChunks = [];\n\n if (textChunks.length) {\n textChunksSeperator.forEach((chunk) => {\n const limitChunks = chunk.match(/.{1,34}/g);\n textChunks.push(...limitChunks);\n });\n }\n\n //Render map image\n pdf.addImage(\n renderMap.getCanvas().toDataURL(\"image/png\"),\n \"png\",\n 0,\n 0,\n 210,\n 297,\n null,\n \"FAST\"\n );\n\n //Render lower left Copyright box\n pdf.setFillColor(\"white\");\n pdf.rect(138, 287, 297, 10, \"F\");\n pdf.setFontSize(10); // optional\n pdf.text(\n \"Datenquelle: © OpenStreetMap-Mitwirkende\",\n 140,\n pdf.internal.pageSize.height - 3\n );\n\n //Render infobox\n pdf.setFillColor(\"white\");\n const infoBoxSize =\n textChunks.length * lineHeight +\n marginTop +\n marginBottom +\n lineHeight * 2 +\n innerMargin * 2 +\n textBuffer;\n\n pdf.rect(offsetX, 2, 66.5, infoBoxSize, \"F\");\n\n pdf.setFontSize(10);\n pdf.text(\"Karten PDF:\", 6, offsetY + marginTop);\n\n //Render inner infobox\n pdf.rect(\n 6,\n 7,\n 60,\n textChunks.length * lineHeight + innerMargin * 2 + textBuffer\n );\n pdf.setFontSize(10);\n\n //Write out address\n textChunks.forEach((text, i) => {\n pdf.text(text.trim(), 8, 10 + i * 3.5 + innerMargin);\n });\n\n //Add WG Logo\n pdf.addImage(\n logo,\n \"png\",\n 5,\n offsetY + marginTop + lineHeight * 2 + textChunks.length * 3 + innerMargin * 2,\n 3,\n 3,\n null,\n \"FAST\"\n );\n\n //Add WG Url\n pdf.setFontSize(10);\n pdf.text(\n \"wheregroup.com\",\n 40,\n offsetY +\n marginTop +\n lineHeight * 2 +\n textChunks.length * lineHeight +\n innerMargin * 2 +\n textBuffer\n );\n\n //Set pdfs props\n pdf.setProperties({\n title: \"Map export\",\n subject: \"Map export\",\n creator: \"WhereGroup GmbH\",\n author: \"(c)WhereGroup GmbH, (c)OpenStreetMap\",\n });\n\n pdf.save(\"Map.pdf\");\n\n renderMap.remove();\n hidden.parentNode?.removeChild(hidden);\n Object.defineProperty(window, \"devicePixelRatio\", {\n get: function () {\n return actualPixelRatio;\n },\n });\n\n setLoading(false);\n });\n};\n\nexport default createPdf;\n","import React, { useRef, useEffect, useContext } from \"react\";\nimport PropTypes from \"prop-types\";\nimport { MapContext } from \"@mapcomponents/react-core\";\n\nimport createPdf from \"./lib/createPdf.js\";\n\nimport PrinterIcon from \"@mui/icons-material/Print\";\nimport Button from \"@mui/material/Button\";\n\n/**\n * Renders a button that will create a PDF version of the current map view (dimensions adjusted to fit Din A4 Paper).\n *\n * @component\n */\nconst MlCreatePdfButton = (props) => {\n const mapContext = useContext(MapContext);\n const initializedRef = useRef(false);\n const mapRef = useRef(undefined);\n\n useEffect(() => {\n if (!mapContext.mapExists(props.mapId) || initializedRef.current) return;\n initializedRef.current = true;\n mapRef.current = mapContext.getMap(props.mapId);\n }, [mapContext.mapIds, mapContext, props.mapId]);\n\n return (\n <>\n <Button\n color=\"primary\"\n variant=\"contained\"\n onClick={() => {\n createPdf(mapRef.current, null, () => {});\n }}\n >\n <PrinterIcon />\n </Button>\n </>\n );\n};\n\nMlCreatePdfButton.defaultProps = {\n mapId: undefined,\n};\n\nMlCreatePdfButton.propTypes = {\n /**\n * Id of the target MapLibre instance in mapContext\n */\n mapId: PropTypes.string,\n};\n\nexport default MlCreatePdfButton;\n","import React, { useState, useRef, useEffect, useContext } from \"react\";\nimport PropTypes from \"prop-types\";\n\nimport { MapContext } from \"@mapcomponents/react-core\";\nimport { v4 as uuidv4 } from \"uuid\";\n\nimport { ReactComponent as RotateRightIcon } from \"./assets/rotate_right.svg\";\nimport { ReactComponent as RotateLeftIcon } from \"./assets/rotate_left.svg\";\nimport { ReactComponent as NeedleIcon } from \"./assets/needle.svg\";\n\nimport styled from \"@emotion/styled\";\nimport { css } from \"@emotion/css\";\n\nconst NeedleButton = styled.div`\n width: 40%;\n display: flex;\n align-items: center;\n\n &:hover {\n cursor: pointer;\n }\n path {\n filter: drop-shadow(0px 0px 15px rgba(0, 0, 0, 0.2));\n }\n &:hover path {\n filter: drop-shadow(0px 0px 13px rgba(255, 255, 255, 0.1));\n }\n path:nth-of-type(2) {\n fill: #343434;\n }\n &:hover path:nth-of-type(2) {\n fill: #434343;\n }\n path:nth-of-type(1) {\n fill: #e90318;\n }\n &:hover path:nth-of-type(1) {\n fill: #fb4052;\n }\n`;\nconst NeedleContainer = styled.div`\n pointer-events: none;\n display: flex;\n z-index: 1002;\n position: absolute;\n align-items: center;\n\n margin-left: -30%;\n path:nth-of-type(2) {\n }\n svg g {\n transform: translate(-76.7053, -29.7727) scale(2, 1);\n }\n svg {\n z-index: 9990;\n height: 150px;\n width: 200px;\n }\n`;\nconst RotateButton = styled.div`\n width: 30%;\n margin-top: 14px;\n z-index: 999;\n display: flex;\n\n svg:hover {\n cursor: pointer;\n }\n svg:hover path {\n fill: #ececec;\n filter: drop-shadow(0px 0px 5px rgba(0, 0, 0, 0.1));\n }\n path {\n fill: #bbb;\n }\n svg {\n transform: scale(0.6);\n z-index: 9990;\n height: 172px;\n }\n`;\n\n/**\n * 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.\n *\n * All style props are applied using @emotion/css to allow more complex css selectors.\n *\n * @component\n */\nconst MlNavigationCompass = (props) => {\n // Use a useRef hook to reference the layer object to be able to access it later inside useEffect hooks\n const mapContext = useContext(MapContext);\n\n const initializedRef = useRef(false);\n const mapRef = useRef(undefined);\n const componentId = useRef((props.idPrefix ? props.idPrefix : \"MlNavigationCompass-\") + uuidv4());\n\n const [bearing, setBearing] = useState(0);\n\n useEffect(() => {\n let _componentId = componentId.current;\n\n return () => {\n // This is the cleanup function, it is called when this react component is removed from react-dom\n\n if (mapRef.current) {\n mapRef.current.cleanup(_componentId);\n mapRef.current = undefined;\n }\n initializedRef.current = false;\n };\n }, []);\n\n useEffect(() => {\n if (!mapContext.mapExists(props.mapId) || initializedRef.current) return;\n initializedRef.current = true;\n mapRef.current = mapContext.getMap(props.mapId);\n\n mapRef.current.on(\n \"rotate\",\n function () {\n setBearing(Math.round(mapRef.current.getBearing()));\n },\n componentId.current\n );\n setBearing(Math.round(mapRef.current.getBearing()));\n }, [mapContext.mapIds, mapContext, props.mapId]);\n\n return (\n <>\n <div\n className={css({\n zIndex: 1000,\n top: 0,\n position: \"absolute\",\n ...props.style,\n })}\n >\n <div\n className={css({\n position: \"absolute\",\n border: \"10px solid #bcbcbc\",\n backgroundColor: \"#717171\",\n background: \"radial-gradient(#717171, #414141)\",\n height: \"200px\",\n width: \"200px\",\n borderRadius: \"50%\",\n display: \"flex\",\n justifyContent: \"center\",\n transform: \"scale(0.2) translateX(-448px) translateY(-448px)\",\n ...props.backgroundStyle,\n })}\n >\n <RotateButton className={css({ ...props.rotateRightStyle })}>\n <RotateRightIcon\n onClick={() => {\n let bearing = Math.round(mapRef.current?.getBearing());\n let rest = Math.round(bearing % 90);\n if (bearing > 0) {\n rest = 90 - rest;\n }\n if (rest === 0) {\n rest = 90;\n }\n mapRef.current?.setBearing(Math.round(bearing + Math.abs(rest)));\n }}\n ></RotateRightIcon>\n </RotateButton>\n <NeedleButton\n className={css({ ...props.needleStyle })}\n onClick={() => {\n mapRef.current?.setBearing(0);\n }}\n >\n <NeedleContainer\n style={{\n transform: \"rotate(\" + bearing + \"deg)\",\n }}\n >\n <NeedleIcon />\n </NeedleContainer>\n </NeedleButton>\n <RotateButton className={css({ ...props.rotateLeftStyle })}>\n <RotateLeftIcon\n onClick={() => {\n let bearing = Math.round(mapRef.current?.getBearing());\n let rest = Math.round(bearing % 90);\n if (bearing < 0) {\n rest = 90 + rest;\n }\n if (rest === 0) {\n rest = 90;\n }\n mapRef.current?.setBearing(Math.round(bearing - Math.abs(rest)));\n }}\n ></RotateLeftIcon>\n </RotateButton>\n </div>\n </div>\n </>\n );\n};\n\nMlNavigationCompass.propTypes = {\n /**\n * Component id prefix\n */\n idPrefix: PropTypes.string,\n /**\n * Style object to adjust css definitions of the component.\n */\n style: PropTypes.object,\n /**\n * Style object to adjust css definitions of the background.\n */\n backgroundStyle: PropTypes.object,\n /**\n * Style object to adjust css definitions of the compass needle.\n */\n needleStyle: PropTypes.object,\n /**\n * Style object to adjust css definitions of the rotate right button.\n */\n rotateRightStyle: PropTypes.object,\n /**\n * Style object to adjust css definitions of the rotate left button.\n */\n rotateLeftStyle: PropTypes.object,\n};\n\nexport default MlNavigationCompass;\n","import React from \"react\";\n\nimport {MapContext} from \"@mapcomponents/react-core\";\nimport {useEffect, useRef, useContext, useState} from \"react\";\nimport Button from \"@mui/material/Button\";\nimport ButtonGroup from \"@mui/material/ButtonGroup\";\nimport ControlPointIcon from \"@mui/icons-material/ControlPoint\";\nimport RemoveCircleOutlineIcon from \"@mui/icons-material/RemoveCircleOutline\";\n//import ZoomOutIcon from \"@mui/icons-material/ZoomOut\";\n//import ZoomInIcon from \"@mui/icons-material/ZoomIn\";\nimport GpsFixedIcon from \"@mui/icons-material/GpsFixed\";\nimport {v4 as uuidv4} from \"uuid\";\n\nimport MlNavigationCompass from \"../MlNavigationCompass/MlNavigationCompass\";\nimport MlFollowGps from \"../MlFollowGps/MlFollowGps\";\nimport useMediaQuery from \"@mui/material/useMediaQuery\";\n\nconst MlNavigationTools = (props) => {\n const mapContext = useContext(MapContext);\n const initializedRef = useRef(false);\n const mapRef = useRef(undefined);\n const componentId = useRef((props.idPrefix ? props.idPrefix : \"MlComponentTemplate-\") + uuidv4());\n\n const [pitch, setPitch] = useState(0);\n const [locationAccessDenied, setLocationAccessDenied] = useState(false);\n const mediaIsMobile = useMediaQuery(\"(max-width:900px)\");\n const buttonStyle = {\n minWidth: \"20px\",\n minHeight: \"20px\",\n width: mediaIsMobile ? \"50px\" : \"30px\",\n height: mediaIsMobile ? \"50px\" : \"30px\",\n backgroundColor: \"#414141\",\n borderRadius: \"23%\",\n //border: \"1px solid #bbb\",\n //boxShadow: \"0px 0px 4px rgba(0,0,0,.5)\",\n margin: 0.15,\n fontSize: mediaIsMobile ? \"1.5em\" : \"1.2em\",\n \":hover\": {\n backgroundColor: \"#515151\",\n },\n color: \"#ececec\"\n };\n\n useEffect(() => {\n let _componentId = componentId.current;\n\n return () => {\n // This is the cleanup function, it is called when this react component is removed from react-dom\n // try to remove anything this component has added to the MapLibre-gl instance\n // e.g.: remove the layer\n // mapContext.getMap(props.mapId).removeLayer(layerRef.current);\n // check for the existence of map.style before calling getLayer or getSource\n\n if (mapRef.current) {\n mapRef.current.cleanup(_componentId);\n mapRef.current = undefined;\n }\n initializedRef.current = false;\n };\n }, []);\n\n useEffect(() => {\n if (!mapContext.mapExists(props.mapId) || initializedRef.current) return;\n // the MapLibre-gl instance (mapContext.getMap(props.mapId)) is accessible here\n // initialize the layer and add it to the MapLibre-gl instance or do something else with it\n initializedRef.current = true;\n mapRef.current = mapContext.getMap(props.mapId);\n mapRef.current.on(\n \"pitchend\",\n () => {\n setPitch(mapRef.current.getPitch());\n },\n componentId.current\n );\n setPitch(mapRef.current.getPitch());\n }, [mapContext.mapIds, mapContext, props.mapId]);\n\n const zoomIn = () => {\n if (!mapRef.current) return;\n\n if (mapRef.current.transform._zoom + 0.5 <= mapRef.current.transform._maxZoom) {\n mapRef.current.easeTo({zoom: mapRef.current.transform._zoom + 0.5});\n }\n };\n\n const zoomOut = () => {\n if (!mapRef.current) return;\n\n if (mapRef.current.transform._zoom - 0.5 >= mapRef.current.transform._minZoom) {\n mapRef.current.easeTo({zoom: mapRef.current.transform._zoom - 0.5});\n }\n };\n\n const adjustPitch = () => {\n if (!mapRef.current) return;\n\n let targetPitch = 60;\n if (mapRef.current.getPitch() !== 0) {\n targetPitch = 0;\n }\n mapRef.current.easeTo({pitch: targetPitch});\n };\n\n const moveToCurrentLocation = () => {\n navigator.geolocation.getCurrentPosition(getLocationSuccess, getLocationError);\n };\n\n const getLocationSuccess = (location) => {\n mapRef.current.setCenter([location.coords.longitude, location.coords.latitude]);\n };\n\n const getLocationError = () => {\n console.log(\"Access of user location denied\");\n setLocationAccessDenied(true);\n };\n\n return (\n <div\n style={{\n zIndex: 501,\n position: \"absolute\",\n right: mediaIsMobile ? \"15px\" : \"5px\",\n bottom: mediaIsMobile ? \"40px\" : \"20px\",\n display: \"flex\",\n flexDirection: \"column\",\n }}\n >\n <MlNavigationCompass\n style={{\n width: \"31px\",\n position: \"relative\",\n height: mediaIsMobile ? \"55px\" : \"45px\",\n marginLeft: mediaIsMobile ? \"3px\" : \"-5px\",\n transform: mediaIsMobile ? \"scale(1.6)\" : \"scale(1)\"\n }}\n backgroundStyle={{\n boxShadow: \"0px 0px 18px rgba(0,0,0,.5)\",\n }}\n />\n <Button sx={{...buttonStyle, fontWeight: 600}} onClick={adjustPitch}>\n {pitch ? \"2D\" : \"3D\"}\n </Button>\n <Button sx={buttonStyle} onClick={moveToCurrentLocation} disabled={locationAccessDenied}>\n <GpsFixedIcon sx={{fontSize: mediaIsMobile ? \"1.5em\" : \"1.2em\"}}/>\n </Button>\n <MlFollowGps style={{...(({color, ...rest}) => rest)(buttonStyle)}} />\n <ButtonGroup\n orientation=\"vertical\"\n sx={{\n width: \"50px\",\n border: \"none\",\n Button: {minWidth: \"20px !important\", border: \"none\", padding: 0},\n \"Button:hover\": {border: \"none\"},\n }}\n >\n <Button sx={{...buttonStyle, color: \"#ececec\",}} onClick={zoomIn}>\n <ControlPointIcon sx={{fontSize: mediaIsMobile ? \"1.5em\" : \"1.2em\"}}/>\n </Button>\n <Button sx={{...buttonStyle, color: \"#ececec\",}} onClick={zoomOut}>\n <RemoveCircleOutlineIcon sx={{fontSize: mediaIsMobile ? \"1.5em\" : \"1.2em\"}}/>\n </Button>\n </ButtonGroup>\n </div>\n );\n};\n\nexport default MlNavigationTools;\n","import React, { useRef, useEffect, useContext } from \"react\";\n\nimport { v4 as uuidv4 } from \"uuid\";\nimport { MapContext } from \"@mapcomponents/react-core\";\nimport useMapState from \"../../hooks/useMapState\";\n\nconst MlLayer = (props) => {\n // Use a useRef hook to reference the layer object to be able to access it later inside useEffect hooks\n const mapContext = useContext(MapContext);\n\n const mapState = useMapState({\n mapId: props.mapId,\n watch: {\n viewport: false,\n layers: true,\n sources: false,\n },\n });\n const layerInitializedRef = useRef(false);\n const mapRef = useRef(null);\n const componentId = useRef((props.layerId ? props.layerId : \"MlLayer-\") + uuidv4());\n const layerId = useRef(props.layerId || componentId.current);\n const layerPaintConfRef = useRef(undefined);\n const layerLayoutConfRef = useRef(undefined);\n\n useEffect(() => {\n let _componentId = componentId.current;\n\n return () => {\n if (mapRef.current) {\n mapRef.current.cleanup(_componentId);\n mapRef.current = null;\n }\n };\n }, []);\n\n useEffect(() => {\n if (\n !mapContext.mapExists(props.mapId) ||\n !mapContext.getMap(props.mapId)?.getLayer?.(layerId) ||\n !layerInitializedRef.current ||\n !props.options\n )\n return;\n // the MapLibre-gl instance (mapContext.map) is accessible here\n // initialize the layer and add it to the MapLibre-gl instance or do something else with it\n var key;\n\n let layoutString = JSON.stringify(props.options.layout);\n if (props.options.layout && layoutString !== layerLayoutConfRef.current) {\n for (key in props.options.layout) {\n mapRef.current.setLayoutProperty(layerId, key, props.options.layout[key]);\n }\n layerLayoutConfRef.current = layoutString;\n }\n\n let paintString = JSON.stringify(props.options.paint);\n if (props.options.paint && paintString === layerPaintConfRef.current) {\n for (key in props.options.paint) {\n mapRef.current.setPaintProperty(layerId, key, props.options.paint[key]);\n }\n }\n }, [props.options, layerId, mapContext, props]);\n\n useEffect(() => {\n if (!mapContext.mapExists(props.mapId) || layerInitializedRef.current) return;\n // the MapLibre-gl instance (mapContext.map) is accessible here\n // initialize the layer and add it to the MapLibre-gl instance or do something else with it\n\n //check if insertBeforeLayer exists\n if (props.insertBeforeLayer) {\n let layerFound = false;\n\n mapState?.layers?.forEach((layer) => {\n if (layer.id === props.insertBeforeLayer) {\n layerFound = true;\n }\n });\n if (!layerFound) {\n return;\n }\n }\n\n mapRef.current = mapContext.getMap(props.mapId);\n if (mapRef.current) {\n layerInitializedRef.current = true;\n mapRef.current.addLayer(\n {\n id: layerId.current,\n type: \"background\",\n paint: {\n \"background-color\": \"rgba(0,0,0,0)\",\n },\n ...props.options,\n },\n props.insertBeforeLayer,\n componentId.current\n );\n layerPaintConfRef.current = JSON.stringify(props.options?.paint);\n layerLayoutConfRef.current = JSON.stringify(props.options?.layout);\n }\n }, [mapContext.mapIds, mapContext, props, mapState.layers]);\n\n return <></>;\n};\n\nexport default MlLayer;\n","import React, { useContext, useRef, useEffect, useState } from \"react\";\nimport { MapContext } from \"@mapcomponents/react-core\";\nimport { v4 as uuidv4 } from \"uuid\";\n\nimport Button from \"@mui/material/Button\";\nimport PropTypes from \"prop-types\";\n\n/**\n * Adds a standard OSM tile layer to the maplibre-gl instancereference by\n * props.mapId\n *\n * @component\n */\nconst MlOsmLayer = (props) => {\n const mapContext = useContext(MapContext);\n const mapRef = useRef(undefined);\n\n const [showLayer, setShowLayer] = useState(true);\n const componentId = useRef((props.idPrefix ? props.idPrefix : \"MlOsmLayer-\") + uuidv4());\n const initializedRef = useRef(false);\n const sourceIdRef = useRef((props.idPrefix ? props.idPrefix : \"MlOsmLayer-source-\") + uuidv4());\n const layerIdRef = useRef((props.idPrefix ? props.idPrefix : \"MlOsmLayer-layer-\") + uuidv4());\n\n useEffect(() => {\n let _componentId = componentId.current;\n return () => {\n // This is the cleanup function, it is called when this react component is removed from react-dom\n if (mapRef.current) {\n mapRef.current.cleanup(_componentId);\n\n mapRef.current = null;\n }\n };\n }, []);\n\n useEffect(() => {\n if (!mapContext.mapExists(props.mapId) || initializedRef.current) return;\n\n initializedRef.current = true;\n mapRef.current = mapContext.getMap(props.mapId);\n\n mapRef.current.addSource(\n sourceIdRef.current,\n {\n type: \"raster\",\n tileSize: 256,\n ...props.sourceOptions,\n },\n componentId.current\n );\n mapRef.current.addLayer(\n {\n id: layerIdRef.current,\n type: \"raster\",\n source: sourceIdRef.current,\n minzoom: 0,\n maxzoom: 22,\n ...props.layerOptions,\n },\n props.insertBeforeLayer,\n componentId.current\n );\n }, [mapContext.mapIds, props, mapContext]);\n\n useEffect(() => {\n if (!mapRef.current) return;\n\n // toggle layer visibility by changing the layout object's visibility property\n if (showLayer) {\n mapRef.current.setLayoutProperty(layerIdRef.current, \"visibility\", \"visible\");\n } else {\n mapRef.current.setLayoutProperty(layerIdRef.current, \"visibility\", \"none\");\n }\n }, [showLayer]);\n\n return (\n <Button\n color=\"primary\"\n variant={showLayer ? \"contained\" : \"outlined\"}\n onClick={() => setShowLayer(!showLayer)}\n >\n OSM\n </Button>\n );\n};\n\nMlOsmLayer.propTypes = {\n /**\n * Id of the target MapLibre instance in mapContext\n */\n mapId: PropTypes.string,\n /**\n * Prefix of the component id this component uses when adding elements to the MapLibreGl-instance\n */\n idPrefix: PropTypes.string,\n /**\n * Options object that will be used as first parameter on the MapLibreGl.addSource call see MapLibre source options documentation.\n */\n sourceOptions: PropTypes.object,\n /**\n * Options object that will be used as first parameter on the MapLibreGl.addLayer call see MapLibre layer options documentation.\n *\n */\n layerOptions: PropTypes.object,\n /**\n * The layerId of an existing layer this layer should be rendered visually beneath\n * https://maplibre.org/maplibre-gl-js-docs/api/map/#map#addlayer - see \"beforeId\" property\n */\n insertBeforeLayer: PropTypes.string,\n};\n\nexport default MlOsmLayer;\n","import React, { useContext, useRef, useEffect } from \"react\";\nimport { MapContext } from \"@mapcomponents/react-core\";\nimport PropTypes from \"prop-types\";\n\n/**\n * Adds a vector-tile source and 0...n vector-tile-layers to the MapLibre instance referenced by\n * props.mapId\n *\n * @component\n */\nconst MlVectorTileLayer = (props) => {\n const mapContext = useContext(MapContext);\n\n const layerName = \"vector-tile-layer-\";\n const sourceName = \"vector-tile-source-\";\n const idSuffixRef = useRef(new Date().getTime());\n const layerIdsRef = useRef({});\n const layerPaintConfsRef = useRef({});\n const layerLayoutConfsRef = useRef({});\n const initializedRef = useRef(false);\n const mapRef = useRef(null);\n\n const cleanup = () => {\n if (mapRef.current && mapRef.current.style) {\n for (let key in layerIdsRef.current) {\n if (mapRef.current.getLayer(layerIdsRef.current[key])) {\n mapRef.current.removeLayer(layerIdsRef.current[key]);\n }\n }\n if (mapRef.current.getSource(sourceName + idSuffixRef.current)) {\n mapRef.current.removeSource(sourceName + idSuffixRef.current);\n }\n }\n };\n\n useEffect(() => {\n return cleanup;\n }, []);\n\n useEffect(() => {\n if (!mapContext.mapExists(props.mapId) || initializedRef.current) return;\n\n initializedRef.current = true;\n mapRef.current = mapContext.getMap(props.mapId);\n\n // Add the new layer to the openlayers instance once it is available\n mapRef.current.addSource(sourceName + idSuffixRef.current, {\n type: \"vector\",\n tiles: [props.url],\n tileSize: 512,\n attribution: \"\",\n ...props.sourceOptions,\n });\n\n for (let key in props.layers) {\n let layerId = layerName + \"_\" + key + \"_\" + idSuffixRef.current;\n layerIdsRef.current[key] = layerId;\n\n mapRef.current.addLayer({\n id: layerId,\n source: sourceName + idSuffixRef.current,\n type: \"line\",\n minzoom: 0,\n maxzoom: 22,\n layout: {},\n paint: {\n \"line-opacity\": 0.5,\n \"line-color\": \"rgb(80, 80, 80)\",\n \"line-width\": 2,\n },\n ...props.layers[key],\n });\n layerPaintConfsRef.current[key] = JSON.stringify(props.layers[key].paint);\n layerLayoutConfsRef.current[key] = JSON.stringify(props.layers[key].layout);\n }\n }, [mapContext.mapIds, props, mapContext]);\n\n useEffect(() => {\n if (!mapRef.current) return;\n // the MapLibre-gl instance (mapContext.map) is accessible here\n // initialize the layer and add it to the MapLibre-gl instance or do something else with it\n for (var key in props.layers) {\n if (mapRef.current.getLayer(layerIdsRef.current[key])) {\n // update changed paint property\n let layerPaintConfString = JSON.stringify(props.layers[key].paint);\n\n if (layerPaintConfString !== layerPaintConfsRef.current[key]) {\n for (let paintKey in props.layers[key].paint) {\n mapContext\n .getMap(props.mapId)\n .setPaintProperty(\n layerIdsRef.current[key],\n paintKey,\n props.layers[key].paint[paintKey]\n );\n }\n }\n layerPaintConfsRef.current[key] = layerPaintConfString;\n\n // update changed layout property\n let layerLayoutConfString = JSON.stringify(props.layers[key].layout);\n\n if (layerLayoutConfString !== layerLayoutConfsRef.current[key]) {\n for (let layoutKey in props.layers[key].layout) {\n mapContext\n .getMap(props.mapId)\n .setLayoutProperty(\n layerIdsRef.current[key],\n layoutKey,\n props.layers[key].layout[layoutKey]\n );\n }\n }\n layerLayoutConfsRef.current[key] = layerLayoutConfString;\n }\n }\n }, [props.layers, props, mapContext]);\n\n useEffect(() => {\n if (!mapRef.current) return;\n\n for (var key in props.layers) {\n if (mapRef.current.getLayer(layerIdsRef.current[key])) {\n // toggle layer visibility by changing the layout object's visibility property\n if (props.visible) {\n mapContext\n .getMap(props.mapId)\n .setLayoutProperty(layerIdsRef.current[key], \"visibility\", \"visible\");\n } else {\n mapContext\n .getMap(props.mapId)\n .setLayoutProperty(layerIdsRef.current[key], \"visibility\", \"none\");\n }\n }\n }\n }, [props.visible]);\n\n return <></>;\n};\n\nMlVectorTileLayer.propTypes = {\n /**\n * Id of the target MapLibre instance in mapContext\n */\n mapId: PropTypes.string,\n /**\n * Options object that will be used as first parameter on the MapLibreGl.addSource call see MapLibre source options documentation.\n */\n sourceOptions: PropTypes.object,\n /**\n * Object that hold layers\n */\n layers: PropTypes.object,\n /**\n * Boolean value to control the visibility of this layer\n */\n visible: PropTypes.bool,\n /**\n * String of the URL of a wms layer\n */\n url: PropTypes.string,\n};\n\nexport default MlVectorTileLayer;\n","import React, { useRef, useEffect } from \"react\";\nimport useMap from \"../../hooks/useMap\";\n\nimport PropTypes from \"prop-types\";\nimport { v4 as uuidv4 } from \"uuid\";\n\nconst defaultProps = {\n visible: true,\n urlParameters: {\n bbox: \"{bbox-epsg-3857}\",\n format: \"image/png\",\n service: \"WMS\",\n version: \"1.1.1\",\n request: \"GetMap\",\n srs: \"EPSG:3857\",\n width: 256,\n height: 256,\n styles: \"\",\n },\n attribution: \"\",\n sourceOptions: {\n minZoom: 0,\n maxZoom: 20,\n },\n layerOptions: {\n minZoom: 0,\n maxZoom: 20,\n },\n};\n\n/**\n * Adds a WMS raster source & layer to the maplibre-gl instance\n *\n * @param {object} props\n * @param {object} props.urlParameters URL query parameters that will be added to the WMS URL. A layers property (string) is mandatory. Any value defined on this attribute will extend the default object\n * @param {string} props.url WMS URL\n * @param {bool} props.visible Sets layer \"visibility\" property to \"visible\" if true or \"none\" if false\n * @param {string} props.attribution MapLibre attribution shown in the bottom right of the map, if this layer is visible\n * @param {string} props.mapId Id of the target MapLibre instance in mapContext\n * @param {object} props.sourceOptions Object that is passed to the MapLibre.addSource call as config option parameter\n * @param {object} props.layerOptions Object that is passed to the MapLibre.addLayer call as config option parameter\n * @param {string} props.insertBeforeLayer Id of an existing layer in the mapLibre instance to help specify the layer order\n This layer will be visually beneath the layer with the \"insertBeforeLayer\" id\n *\n * @component\n */\nconst MlWmsLayer = (props) => {\n const mapHook = useMap({ mapId: props.mapId, waitForLayer: props.insertBeforeLayer });\n\n const initializedRef = useRef(false);\n const layerId = useRef(props.layerId || \"MlWmsLayer-\" + mapHook.componentId);\n\n useEffect(() => {\n if (!mapHook.map || initializedRef.current) return;\n\n initializedRef.current = true;\n\n let _propsUrlParams;\n let _wmsUrl = props.url;\n if (props.url.indexOf(\"?\") !== -1) {\n _propsUrlParams = props.url.split(\"?\");\n _wmsUrl = _propsUrlParams[0];\n }\n let _urlParamsFromUrl = new URLSearchParams(_propsUrlParams?.[1]);\n // first spread in default props manually to enable overriding a single parameter without replacing the whole default urlParameters object\n let urlParamsObj = {\n ...defaultProps.urlParameters,\n ...Object.fromEntries(_urlParamsFromUrl),\n ...props.urlParameters,\n };\n let urlParams = new URLSearchParams(urlParamsObj);\n let urlParamsStr =\n decodeURIComponent(urlParams.toString()) + \"\".replace(/%2F/g, \"/\").replace(/%3A/g, \":\");\n\n mapHook.map.addSource(\n layerId.current,\n {\n type: \"raster\",\n tiles: [_wmsUrl + \"?\" + urlParamsStr],\n tileSize: urlParamsObj.width,\n attribution: props.attribution,\n ...props.sourceOptions,\n },\n mapHook.componentId\n );\n\n mapHook.map.addLayer(\n {\n id: layerId.current,\n type: \"raster\",\n source: layerId.current,\n ...props.layerOptions,\n },\n props.insertBeforeLayer,\n mapHook.componentId\n );\n\n if (!props.visible) {\n mapHook.map.setLayoutProperty(layerId.current, \"visibility\", \"none\");\n }\n }, [mapHook.map, props]);\n\n useEffect(() => {\n if (!mapHook.map || !initializedRef.current) return;\n\n // toggle layer visibility by changing the layout object's visibility property\n if (props.visible) {\n mapHook.map.setLayoutProperty(layerId.current, \"visibility\", \"visible\");\n } else {\n mapHook.map.setLayoutProperty(layerId.current, \"visibility\", \"none\");\n }\n }, [props.visible, mapHook.map]);\n\n return <></>;\n};\n\nMlWmsLayer.defaultProps = {\n ...defaultProps,\n};\n\nMlWmsLayer.propTypes = {\n /**\n * WMS URL\n */\n url: PropTypes.string.isRequired,\n /**\n * URL query parameters that will be added to the WMS URL. A layers property (string) is mandatory. Any value defined on this attribute will extend the default object.\n */\n urlParameters: PropTypes.shape({\n layers: PropTypes.string.isRequired,\n bbox: PropTypes.string,\n format: PropTypes.string,\n service: PropTypes.string,\n version: PropTypes.string,\n request: PropTypes.string,\n srs: PropTypes.string,\n width: PropTypes.number,\n height: PropTypes.number,\n }),\n /**\n * Id of the target MapLibre instance in mapContext\n */\n mapId: PropTypes.string,\n /**\n * MapLibre attribution shown in the bottom right of the map, if this layer is visible\n */\n attribution: PropTypes.string,\n /**\n * Object that is passed to the MapLibre.addLayer call as config option parameter\n */\n layerOptions: PropTypes.object,\n /**\n * Object that is passed to the MapLibre.addSource call as config option parameter\n */\n sourceOptions: PropTypes.object,\n /**\n * Id of an existing layer in the mapLibre instance to help specify the layer order\n * This layer will be visually beneath the layer with the \"insertBeforeLayer\" id.\n */\n insertBeforeLayer: PropTypes.string,\n /**\n * Sets layer \"visibility\" property to \"visible\" if true or \"none\" if false\n */\n visible: PropTypes.bool,\n};\nexport default MlWmsLayer;\n","export const classes = {\n CONTROL_BASE: 'mapboxgl-ctrl',\n CONTROL_PREFIX: 'mapboxgl-ctrl-',\n CONTROL_BUTTON: 'mapbox-gl-draw_ctrl-draw-btn',\n CONTROL_BUTTON_LINE: 'mapbox-gl-draw_line',\n CONTROL_BUTTON_POLYGON: 'mapbox-gl-draw_polygon',\n CONTROL_BUTTON_POINT: 'mapbox-gl-draw_point',\n CONTROL_BUTTON_TRASH: 'mapbox-gl-draw_trash',\n CONTROL_BUTTON_COMBINE_FEATURES: 'mapbox-gl-draw_combine',\n CONTROL_BUTTON_UNCOMBINE_FEATURES: 'mapbox-gl-draw_uncombine',\n CONTROL_GROUP: 'mapboxgl-ctrl-group',\n ATTRIBUTION: 'mapboxgl-ctrl-attrib',\n ACTIVE_BUTTON: 'active',\n BOX_SELECT: 'mapbox-gl-draw_boxselect'\n};\n\nexport const sources = {\n HOT: 'mapbox-gl-draw-hot',\n COLD: 'mapbox-gl-draw-cold'\n};\n\nexport const cursors = {\n ADD: 'add',\n MOVE: 'move',\n DRAG: 'drag',\n POINTER: 'pointer',\n NONE: 'none'\n};\n\nexport const types = {\n POLYGON: 'polygon',\n LINE: 'line_string',\n POINT: 'point'\n};\n\nexport const geojsonTypes = {\n FEATURE: 'Feature',\n POLYGON: 'Polygon',\n LINE_STRING: 'LineString',\n POINT: 'Point',\n FEATURE_COLLECTION: 'FeatureCollection',\n MULTI_PREFIX: 'Multi',\n MULTI_POINT: 'MultiPoint',\n MULTI_LINE_STRING: 'MultiLineString',\n MULTI_POLYGON: 'MultiPolygon'\n};\n\nexport const modes = {\n DRAW_LINE_STRING: 'draw_line_string',\n DRAW_POLYGON: 'draw_polygon',\n DRAW_POINT: 'draw_point',\n SIMPLE_SELECT: 'simple_select',\n DIRECT_SELECT: 'direct_select',\n STATIC: 'static'\n};\n\nexport const events = {\n CREATE: 'draw.create',\n DELETE: 'draw.delete',\n UPDATE: 'draw.update',\n SELECTION_CHANGE: 'draw.selectionchange',\n MODE_CHANGE: 'draw.modechange',\n ACTIONABLE: 'draw.actionable',\n RENDER: 'draw.render',\n COMBINE_FEATURES: 'draw.combine',\n UNCOMBINE_FEATURES: 'draw.uncombine'\n};\n\nexport const updateActions = {\n MOVE: 'move',\n CHANGE_COORDINATES: 'change_coordinates'\n};\n\nexport const meta = {\n FEATURE: 'feature',\n MIDPOINT: 'midpoint',\n VERTEX: 'vertex'\n};\n\nexport const activeStates = {\n ACTIVE: 'true',\n INACTIVE: 'false'\n};\n\nexport const interactions = [\n 'scrollZoom',\n 'boxZoom',\n 'dragRotate',\n 'dragPan',\n 'keyboard',\n 'doubleClickZoom',\n 'touchZoomRotate'\n];\n\nexport const LAT_MIN = -90;\nexport const LAT_RENDERED_MIN = -85;\nexport const LAT_MAX = 90;\nexport const LAT_RENDERED_MAX = 85;\nexport const LNG_MIN = -270;\nexport const LNG_MAX = 270;\n","import * as Constants from \"./constants\";\n\nexport function isOfMetaType(type) {\n return function (e) {\n const featureTarget = e.featureTarget;\n if (!featureTarget) return false;\n if (!featureTarget.properties) return false;\n return featureTarget.properties.meta === type;\n };\n}\n\nexport function isShiftMousedown(e) {\n if (!e.originalEvent) return false;\n if (!e.originalEvent.shiftKey) return false;\n return e.originalEvent.button === 0;\n}\n\nexport function isActiveFeature(e) {\n if (!e.featureTarget) return false;\n if (!e.featureTarget.properties) return false;\n return (\n e.featureTarget.properties.active === Constants.activeStates.ACTIVE &&\n e.featureTarget.properties.meta === Constants.meta.FEATURE\n );\n}\n\nexport function isInactiveFeature(e) {\n if (!e.featureTarget) return false;\n if (!e.featureTarget.properties) return false;\n return (\n e.featureTarget.properties.active === Constants.activeStates.INACTIVE &&\n e.featureTarget.properties.meta === Constants.meta.FEATURE\n );\n}\n\nexport function noTarget(e) {\n return e.featureTarget === undefined;\n}\n\nexport function isFeature(e) {\n if (!e.featureTarget) return false;\n if (!e.featureTarget.properties) return false;\n return e.featureTarget.properties.meta === Constants.meta.FEATURE;\n}\n\nexport function isVertex(e) {\n const featureTarget = e.featureTarget;\n if (!featureTarget) return false;\n if (!featureTarget.properties) return false;\n return featureTarget.properties.meta === Constants.meta.VERTEX;\n}\n\nexport function isShiftDown(e) {\n if (!e.originalEvent) return false;\n return e.originalEvent.shiftKey === true;\n}\n\nexport function isEscapeKey(e) {\n return e.keyCode === 27;\n}\n\nexport function isEnterKey(e) {\n return e.keyCode === 13;\n}\n\nexport function isTrue() {\n return true;\n}\n","const doubleClickZoom = {\n enable(ctx) {\n setTimeout(() => {\n // First check we've got a map and some context.\n if (\n !ctx.map ||\n !ctx.map.doubleClickZoom ||\n !ctx._ctx ||\n !ctx._ctx.store ||\n !ctx._ctx.store.getInitialConfigValue\n )\n return;\n // Now check initial state wasn't false (we leave it disabled if so)\n if (!ctx._ctx.store.getInitialConfigValue(\"doubleClickZoom\")) return;\n ctx.map.doubleClickZoom.enable();\n }, 0);\n },\n disable(ctx) {\n setTimeout(() => {\n if (!ctx.map || !ctx.map.doubleClickZoom) return;\n // Always disable here, as it's necessary in some cases.\n ctx.map.doubleClickZoom.disable();\n }, 0);\n },\n};\nexport default doubleClickZoom;\n","function isEventAtCoordinates(event, coordinates) {\n if (!event.lngLat) return false;\n return event.lngLat.lng === coordinates[0] && event.lngLat.lat === coordinates[1];\n}\n\nexport default isEventAtCoordinates;\n","import * as Constants from \"./constants\";\n\n/**\n * Returns GeoJSON for a Point representing the\n * vertex of another feature.\n *\n * @param {string} parentId\n * @param {Array<number>} coordinates\n * @param {string} path - Dot-separated numbers indicating exactly\n * where the point exists within its parent feature's coordinates.\n * @param {boolean} selected\n * @return {GeoJSON} Point\n */\nconst create_vertex = function (parentId, coordinates, path, selected) {\n return {\n type: Constants.geojsonTypes.FEATURE,\n properties: {\n meta: Constants.meta.VERTEX,\n parent: parentId,\n coord_path: path,\n active: selected\n ? Constants.activeStates.ACTIVE\n : Constants.activeStates.INACTIVE,\n },\n geometry: {\n type: Constants.geojsonTypes.POINT,\n coordinates,\n },\n };\n};\nexport default create_vertex;\n","import * as CommonSelectors from \"./lib/common_selectors\";\nimport doubleClickZoom from \"./lib/double_click_zoom\";\nimport * as Constants from \"./lib/constants\";\nimport isEventAtCoordinates from \"./lib/is_event_at_coordinates\";\nimport createVertex from \"./lib/create_vertex\";\n\nconst CustomPolygonMode = {};\n\nCustomPolygonMode.onSetup = function () {\n console.log(\"Change mode: custom polygon\");\n\n const polygon = this.newFeature({\n type: Constants.geojsonTypes.FEATURE,\n properties: {},\n geometry: {\n type: Constants.geojsonTypes.POLYGON,\n coordinates: [[]],\n },\n });\n\n this.addFeature(polygon);\n\n this.clearSelectedFeatures();\n doubleClickZoom.disable(this);\n this.updateUIClasses({ mouse: Constants.cursors.ADD });\n this.activateUIButton(Constants.types.POLYGON);\n this.setActionableState({\n trash: true,\n });\n\n return {\n polygon,\n currentVertexPosition: 0,\n };\n};\n\nCustomPolygonMode.clickAnywhere = function (state, e) {\n if (\n state.currentVertexPosition > 0 &&\n isEventAtCoordinates(\n e,\n state.polygon.coordinates[0][state.currentVertexPosition - 1]\n )\n ) {\n return this.changeMode(\"custom_select\", {\n featureIds: [state.polygon.id],\n });\n }\n this.updateUIClasses({ mouse: Constants.cursors.ADD });\n state.polygon.updateCoordinate(\n `0.${state.currentVertexPosition}`,\n e.lngLat.lng,\n e.lngLat.lat\n );\n state.currentVertexPosition++;\n state.polygon.updateCoordinate(\n `0.${state.currentVertexPosition}`,\n e.lngLat.lng,\n e.lngLat.lat\n );\n\n this.map.fire(Constants.events.CREATE, {\n features: [state.polygon.toGeoJSON()],\n });\n};\n\nCustomPolygonMode.clickOnVertex = function (state) {\n return this.changeMode(\"custom_select\", {\n featureIds: [state.polygon.id],\n });\n};\n\nCustomPolygonMode.onMouseMove = function (state, e) {\n state.polygon.updateCoordinate(\n `0.${state.currentVertexPosition}`,\n e.lngLat.lng,\n e.lngLat.lat\n );\n\n if (CommonSelectors.isVertex(e)) {\n this.updateUIClasses({ mouse: Constants.cursors.POINTER });\n }\n};\n\nCustomPolygonMode.onTap = CustomPolygonMode.onClick = function (state, e) {\n if (CommonSelectors.isVertex(e)) return this.clickOnVertex(state, e);\n return this.clickAnywhere(state, e);\n};\n\nCustomPolygonMode.onKeyUp = function (state, e) {\n if (CommonSelectors.isEscapeKey(e)) {\n this.deleteFeature([state.polygon.id], { silent: true });\n this.changeMode(\"custom_select\");\n } else if (CommonSelectors.isEnterKey(e)) {\n this.changeMode(\"custom_select\", {\n featureIds: [state.polygon.id],\n });\n }\n};\n\nCustomPolygonMode.onStop = function (state) {\n this.updateUIClasses({ mouse: Constants.cursors.NONE });\n doubleClickZoom.enable(this);\n this.activateUIButton();\n\n // check to see if we've deleted this feature\n if (this.getFeature(state.polygon.id) === undefined) return;\n\n //remove last added coordinate\n state.polygon.removeCoordinate(`0.${state.currentVertexPosition}`);\n if (state.polygon.isValid()) {\n this.map.fire(Constants.events.CREATE, {\n features: [state.polygon.toGeoJSON()],\n });\n } else {\n this.deleteFeature([state.polygon.id], { silent: true });\n this.changeMode(\"custom_select\", {}, { silent: true });\n }\n};\n\nCustomPolygonMode.toDisplayFeatures = function (state, geojson, display) {\n const isActivePolygon = geojson.properties.id === state.polygon.id;\n geojson.properties.active = isActivePolygon\n ? Constants.activeStates.ACTIVE\n : Constants.activeStates.INACTIVE;\n if (!isActivePolygon) return display(geojson);\n\n // Don't render a polygon until it has two positions\n // (and a 3rd which is just the first repeated)\n if (geojson.geometry.coordinates.length === 0) return;\n\n const coordinateCount = geojson.geometry.coordinates[0].length;\n // 2 coordinates after selecting a draw type\n // 3 after creating the first point\n if (coordinateCount < 3) {\n return;\n }\n geojson.properties.meta = Constants.meta.FEATURE;\n display(\n createVertex(state.polygon.id, geojson.geometry.coordinates[0][0], \"0.0\", false)\n );\n if (coordinateCount > 3) {\n // Add a start position marker to the map, clicking on this will finish the feature\n // This should only be shown when we're in a valid spot\n const endPos = geojson.geometry.coordinates[0].length - 3;\n display(\n createVertex(\n state.polygon.id,\n geojson.geometry.coordinates[0][endPos],\n `0.${endPos}`,\n false\n )\n );\n }\n if (coordinateCount <= 4) {\n // If we've only drawn two positions (plus the closer),\n // make a LineString instead of a Polygon\n const lineCoordinates = [\n [geojson.geometry.coordinates[0][0][0], geojson.geometry.coordinates[0][0][1]],\n [geojson.geometry.coordinates[0][1][0], geojson.geometry.coordinates[0][1][1]],\n ];\n // create an initial vertex so that we can track the first point on mobile devices\n display({\n type: Constants.geojsonTypes.FEATURE,\n properties: geojson.properties,\n geometry: {\n coordinates: lineCoordinates,\n type: Constants.geojsonTypes.LINE_STRING,\n },\n });\n if (coordinateCount === 3) {\n return;\n }\n }\n // render the Polygon\n return display(geojson);\n};\n\nCustomPolygonMode.onTrash = function (state) {\n this.deleteFeature([state.polygon.id], { silent: true });\n this.changeMode(\"custom_select\");\n};\n\nexport default CustomPolygonMode;\n","import Point from '@mapbox/point-geometry';\n\n/**\n * Returns a Point representing a mouse event's position\n * relative to a containing element.\n *\n * @param {MouseEvent} mouseEvent\n * @param {Node} container\n * @returns {Point}\n */\nfunction mouseEventPoint(mouseEvent, container) {\n const rect = container.getBoundingClientRect();\n return new Point(\n mouseEvent.clientX - rect.left - (container.clientLeft || 0),\n mouseEvent.clientY - rect.top - (container.clientTop || 0)\n );\n}\n\nexport default mouseEventPoint;\n","import * as Constants from \"./constants\";\n\nconst create_midpoint = function (parent, startVertex, endVertex) {\n const startCoord = startVertex.geometry.coordinates;\n const endCoord = endVertex.geometry.coordinates;\n\n // If a coordinate exceeds the projection, we can't calculate a midpoint,\n // so run away\n if (\n startCoord[1] > Constants.LAT_RENDERED_MAX ||\n startCoord[1] < Constants.LAT_RENDERED_MIN ||\n endCoord[1] > Constants.LAT_RENDERED_MAX ||\n endCoord[1] < Constants.LAT_RENDERED_MIN\n ) {\n return null;\n }\n\n const mid = {\n lng: (startCoord[0] + endCoord[0]) / 2,\n lat: (startCoord[1] + endCoord[1]) / 2,\n };\n\n return {\n type: Constants.geojsonTypes.FEATURE,\n properties: {\n meta: Constants.meta.MIDPOINT,\n parent,\n lng: mid.lng,\n lat: mid.lat,\n coord_path: endVertex.properties.coord_path,\n },\n geometry: {\n type: Constants.geojsonTypes.POINT,\n coordinates: [mid.lng, mid.lat],\n },\n };\n};\nexport default create_midpoint;\n","import createVertex from \"./create_vertex\";\nimport createMidpoint from \"./create_midpoint\";\nimport * as Constants from \"./constants\";\n\nfunction createSupplementaryPoints(geojson, options = {}, basePath = null) {\n const { type, coordinates } = geojson.geometry;\n const featureId = geojson.properties && geojson.properties.id;\n\n let supplementaryPoints = [];\n\n if (type === Constants.geojsonTypes.POINT) {\n // For points, just create a vertex\n supplementaryPoints.push(\n createVertex(featureId, coordinates, basePath, isSelectedPath(basePath))\n );\n } else if (type === Constants.geojsonTypes.POLYGON) {\n // Cycle through a Polygon's rings and\n // process each line\n coordinates.forEach((line, lineIndex) => {\n processLine(\n line,\n basePath !== null ? `${basePath}.${lineIndex}` : String(lineIndex)\n );\n });\n } else if (type === Constants.geojsonTypes.LINE_STRING) {\n processLine(coordinates, basePath);\n } else if (type.indexOf(Constants.geojsonTypes.MULTI_PREFIX) === 0) {\n processMultiGeometry();\n }\n\n function processLine(line, lineBasePath) {\n let firstPointString = \"\";\n let lastVertex = null;\n line.forEach((point, pointIndex) => {\n const pointPath =\n lineBasePath !== undefined && lineBasePath !== null\n ? `${lineBasePath}.${pointIndex}`\n : String(pointIndex);\n const vertex = createVertex(\n featureId,\n point,\n pointPath,\n isSelectedPath(pointPath)\n );\n\n // If we're creating midpoints, check if there was a\n // vertex before this one. If so, add a midpoint\n // between that vertex and this one.\n if (options.midpoints && lastVertex) {\n const midpoint = createMidpoint(featureId, lastVertex, vertex);\n if (midpoint) {\n supplementaryPoints.push(midpoint);\n }\n }\n lastVertex = vertex;\n\n // A Polygon line's last point is the same as the first point. If we're on the last\n // point, we want to draw a midpoint before it but not another vertex on it\n // (since we already a vertex there, from the first point).\n const stringifiedPoint = JSON.stringify(point);\n if (firstPointString !== stringifiedPoint) {\n supplementaryPoints.push(vertex);\n }\n if (pointIndex === 0) {\n firstPointString = stringifiedPoint;\n }\n });\n }\n\n function isSelectedPath(path) {\n if (!options.selectedPaths) return false;\n return options.selectedPaths.indexOf(path) !== -1;\n }\n\n // Split a multi-geometry into constituent\n // geometries, and accumulate the supplementary points\n // for each of those constituents\n function processMultiGeometry() {\n const subType = type.replace(Constants.geojsonTypes.MULTI_PREFIX, \"\");\n coordinates.forEach((subCoordinates, index) => {\n const subFeature = {\n type: Constants.geojsonTypes.FEATURE,\n properties: geojson.properties,\n geometry: {\n type: subType,\n coordinates: subCoordinates,\n },\n };\n supplementaryPoints = supplementaryPoints.concat(\n createSupplementaryPoints(subFeature, options, index)\n );\n });\n }\n\n return supplementaryPoints;\n}\n\nexport default createSupplementaryPoints;\n","function StringSet(items) {\n this._items = {};\n this._nums = {};\n this._length = items ? items.length : 0;\n if (!items) return;\n for (let i = 0, l = items.length; i < l; i++) {\n this.add(items[i]);\n if (items[i] === undefined) continue;\n if (typeof items[i] === 'string') this._items[items[i]] = i;\n else this._nums[items[i]] = i;\n\n }\n}\n\nStringSet.prototype.add = function(x) {\n if (this.has(x)) return this;\n this._length++;\n if (typeof x === 'string') this._items[x] = this._length;\n else this._nums[x] = this._length;\n return this;\n};\n\nStringSet.prototype.delete = function(x) {\n if (this.has(x) === false) return this;\n this._length--;\n delete this._items[x];\n delete this._nums[x];\n return this;\n};\n\nStringSet.prototype.has = function(x) {\n if (typeof x !== 'string' && typeof x !== 'number') return false;\n return this._items[x] !== undefined || this._nums[x] !== undefined;\n};\n\nStringSet.prototype.values = function() {\n const values = [];\n Object.keys(this._items).forEach((k) => {\n values.push({ k, v: this._items[k] });\n });\n Object.keys(this._nums).forEach((k) => {\n values.push({ k: JSON.parse(k), v: this._nums[k] });\n });\n\n return values.sort((a, b) => a.v - b.v).map(a => a.k);\n};\n\nStringSet.prototype.clear = function() {\n this._length = 0;\n this._items = {};\n this._nums = {};\n return this;\n};\n\nexport default StringSet;\n","import extent from \"@mapbox/geojson-extent\";\nimport * as Constants from \"./constants\";\n\nconst {\n LAT_MIN,\n LAT_MAX,\n LAT_RENDERED_MIN,\n LAT_RENDERED_MAX,\n LNG_MIN,\n LNG_MAX,\n} = Constants;\n\n// Ensure that we do not drag north-south far enough for\n// - any part of any feature to exceed the poles\n// - any feature to be completely lost in the space between the projection's\n// edge and the poles, such that it couldn't be re-selected and moved back\nconst constrain_feature_movement = function (geojsonFeatures, delta) {\n // \"inner edge\" = a feature's latitude closest to the equator\n let northInnerEdge = LAT_MIN;\n let southInnerEdge = LAT_MAX;\n // \"outer edge\" = a feature's latitude furthest from the equator\n let northOuterEdge = LAT_MIN;\n let southOuterEdge = LAT_MAX;\n\n let westEdge = LNG_MAX;\n let eastEdge = LNG_MIN;\n\n geojsonFeatures.forEach((feature) => {\n const bounds = extent(feature);\n const featureSouthEdge = bounds[1];\n const featureNorthEdge = bounds[3];\n const featureWestEdge = bounds[0];\n const featureEastEdge = bounds[2];\n if (featureSouthEdge > northInnerEdge) northInnerEdge = featureSouthEdge;\n if (featureNorthEdge < southInnerEdge) southInnerEdge = featureNorthEdge;\n if (featureNorthEdge > northOuterEdge) northOuterEdge = featureNorthEdge;\n if (featureSouthEdge < southOuterEdge) southOuterEdge = featureSouthEdge;\n if (featureWestEdge < westEdge) westEdge = featureWestEdge;\n if (featureEastEdge > eastEdge) eastEdge = featureEastEdge;\n });\n\n // These changes are not mutually exclusive: we might hit the inner\n // edge but also have hit the outer edge and therefore need\n // another readjustment\n const constrainedDelta = delta;\n if (northInnerEdge + constrainedDelta.lat > LAT_RENDERED_MAX) {\n constrainedDelta.lat = LAT_RENDERED_MAX - northInnerEdge;\n }\n if (northOuterEdge + constrainedDelta.lat > LAT_MAX) {\n constrainedDelta.lat = LAT_MAX - northOuterEdge;\n }\n if (southInnerEdge + constrainedDelta.lat < LAT_RENDERED_MIN) {\n constrainedDelta.lat = LAT_RENDERED_MIN - southInnerEdge;\n }\n if (southOuterEdge + constrainedDelta.lat < LAT_MIN) {\n constrainedDelta.lat = LAT_MIN - southOuterEdge;\n }\n if (westEdge + constrainedDelta.lng <= LNG_MIN) {\n constrainedDelta.lng += Math.ceil(Math.abs(constrainedDelta.lng) / 360) * 360;\n }\n if (eastEdge + constrainedDelta.lng >= LNG_MAX) {\n constrainedDelta.lng -= Math.ceil(Math.abs(constrainedDelta.lng) / 360) * 360;\n }\n\n return constrainedDelta;\n};\n\nexport default constrain_feature_movement;\n","import constrainFeatureMovement from \"./constrain_feature_movement\";\nimport * as Constants from \"./constants\";\n\nvar move_features = function (features, delta) {\n const constrainedDelta = constrainFeatureMovement(\n features.map((feature) => feature.toGeoJSON()),\n delta\n );\n\n features.forEach((feature) => {\n const currentCoordinates = feature.getCoordinates();\n\n const moveCoordinate = (coord) => {\n const point = {\n lng: coord[0] + constrainedDelta.lng,\n lat: coord[1] + constrainedDelta.lat,\n };\n return [point.lng, point.lat];\n };\n const moveRing = (ring) => ring.map((coord) => moveCoordinate(coord));\n const moveMultiPolygon = (multi) => multi.map((ring) => moveRing(ring));\n\n let nextCoordinates;\n if (feature.type === Constants.geojsonTypes.POINT) {\n nextCoordinates = moveCoordinate(currentCoordinates);\n } else if (\n feature.type === Constants.geojsonTypes.LINE_STRING ||\n feature.type === Constants.geojsonTypes.MULTI_POINT\n ) {\n nextCoordinates = currentCoordinates.map(moveCoordinate);\n } else if (\n feature.type === Constants.geojsonTypes.POLYGON ||\n feature.type === Constants.geojsonTypes.MULTI_LINE_STRING\n ) {\n nextCoordinates = currentCoordinates.map(moveRing);\n } else if (feature.type === Constants.geojsonTypes.MULTI_POLYGON) {\n nextCoordinates = currentCoordinates.map(moveMultiPolygon);\n }\n\n feature.incomingCoords(nextCoordinates);\n });\n};\nexport default move_features;\n","import * as CommonSelectors from \"./lib/common_selectors\";\nimport doubleClickZoom from \"./lib/double_click_zoom\";\nimport * as Constants from \"./lib/constants\";\nimport mouseEventPoint from \"./lib/mouse_event_point\";\nimport createSupplementaryPoints from \"./lib/create_supplementary_points\";\nimport StringSet from \"./lib/string_set\";\nimport moveFeatures from \"./lib/move_features\";\n\nconst CustomSelectMode = {};\nCustomSelectMode.onSetup = function (opts) {\n console.log(\"Change mode: custom select\");\n\n // turn the opts into state.\n const state = {\n dragMoveLocation: null,\n boxSelectStartLocation: null,\n boxSelectElement: undefined,\n boxSelecting: false,\n canBoxSelect: false,\n dragMoving: false,\n canDragMove: false,\n initiallySelectedFeatureIds: opts.featureIds || [],\n };\n\n this.setSelected(\n state.initiallySelectedFeatureIds.filter(\n (id) => this.getFeature(id) !== undefined\n )\n );\n this.fireActionable();\n\n this.setActionableState({\n combineFeatures: true,\n uncombineFeatures: true,\n trash: true,\n });\n\n return state;\n};\n\nCustomSelectMode.fireUpdate = function () {\n this.map.fire(Constants.events.UPDATE, {\n action: Constants.updateActions.MOVE,\n features: this.getSelected().map((f) => f.toGeoJSON()),\n });\n};\n\nCustomSelectMode.fireActionable = function () {\n const selectedFeatures = this.getSelected();\n\n const multiFeatures = selectedFeatures.filter((feature) =>\n this.isInstanceOf(\"MultiFeature\", feature)\n );\n\n let combineFeatures = false;\n\n if (selectedFeatures.length > 1) {\n combineFeatures = true;\n const featureType = selectedFeatures[0].type.replace(\"Multi\", \"\");\n selectedFeatures.forEach((feature) => {\n if (feature.type.replace(\"Multi\", \"\") !== featureType) {\n combineFeatures = false;\n }\n });\n }\n\n const uncombineFeatures = multiFeatures.length > 0;\n const trash = selectedFeatures.length > 0;\n\n this.setActionableState({\n combineFeatures,\n uncombineFeatures,\n trash,\n });\n};\n\nCustomSelectMode.getUniqueIds = function (allFeatures) {\n if (!allFeatures.length) return [];\n const ids = allFeatures\n .map((s) => s.properties.id)\n .filter((id) => id !== undefined)\n .reduce((memo, id) => {\n memo.add(id);\n return memo;\n }, new StringSet());\n\n return ids.values();\n};\n\nCustomSelectMode.stopExtendedInteractions = function (state) {\n if (state.boxSelectElement) {\n if (state.boxSelectElement.parentNode)\n state.boxSelectElement.parentNode.removeChild(state.boxSelectElement);\n state.boxSelectElement = null;\n }\n\n this.map.dragPan.enable();\n\n state.boxSelecting = false;\n state.canBoxSelect = false;\n state.dragMoving = false;\n state.canDragMove = false;\n};\n\nCustomSelectMode.onStop = function () {\n doubleClickZoom.enable(this);\n};\n\nCustomSelectMode.onMouseMove = function (state) {\n // On mousemove that is not a drag, stop extended interactions.\n // This is useful if you drag off the canvas, release the button,\n // then move the mouse back over the canvas --- we don't allow the\n // interaction to continue then, but we do let it continue if you held\n // the mouse button that whole time\n return this.stopExtendedInteractions(state);\n};\n\nCustomSelectMode.onMouseOut = function (state) {\n // As soon as you mouse leaves the canvas, update the feature\n if (state.dragMoving) return this.fireUpdate();\n};\n\nCustomSelectMode.onTap = CustomSelectMode.onClick = function (state, e) {\n // Click (with or without shift) on no feature\n if (CommonSelectors.noTarget(e)) return this.clickAnywhere(state, e); // also tap\n if (CommonSelectors.isOfMetaType(Constants.meta.VERTEX)(e))\n return this.clickOnVertex(state, e); //tap\n if (CommonSelectors.isFeature(e)) return this.clickOnFeature(state, e);\n};\n\nCustomSelectMode.clickAnywhere = function (state) {\n // Clear the re-render selection\n const wasSelected = this.getSelectedIds();\n if (wasSelected.length) {\n this.clearSelectedFeatures();\n wasSelected.forEach((id) => this.doRender(id));\n }\n doubleClickZoom.enable(this);\n this.stopExtendedInteractions(state);\n};\n\nCustomSelectMode.clickOnVertex = function (state, e) {\n // Enter direct select mode\n this.changeMode(\"custom_direct_select\", {\n featureId: e.featureTarget.properties.parent,\n coordPath: e.featureTarget.properties.coord_path,\n startPos: e.lngLat,\n // groupMove_vertices: matchingVertices,\n });\n this.updateUIClasses({ mouse: Constants.cursors.MOVE });\n};\n\nCustomSelectMode.startOnActiveFeature = function (state, e) {\n // Stop any already-underway extended interactions\n this.stopExtendedInteractions(state);\n\n // Disable map.dragPan immediately so it can't start\n this.map.dragPan.disable();\n\n // Re-render it and enable drag move\n this.doRender(e.featureTarget.properties.id);\n\n // Set up the state for drag moving\n state.canDragMove = true;\n state.dragMoveLocation = e.lngLat;\n};\n\nCustomSelectMode.clickOnFeature = function (state, e) {\n // Stop everything\n doubleClickZoom.disable(this);\n this.stopExtendedInteractions(state);\n\n const isShiftClick = CommonSelectors.isShiftDown(e);\n const selectedFeatureIds = this.getSelectedIds();\n const featureId = e.featureTarget.properties.id;\n const isFeatureSelected = this.isSelected(featureId);\n\n // Click (without shift) on any selected feature but a point\n if (\n !isShiftClick &&\n isFeatureSelected &&\n this.getFeature(featureId).type !== Constants.geojsonTypes.POINT\n ) {\n // Enter direct select mode\n return this.changeMode(\"custom_direct_select\", {\n featureId,\n });\n }\n\n // Shift-click on a selected feature\n if (isFeatureSelected && isShiftClick) {\n // Deselect it\n this.deselect(featureId);\n this.updateUIClasses({ mouse: Constants.cursors.POINTER });\n if (selectedFeatureIds.length === 1) {\n doubleClickZoom.enable(this);\n }\n // Shift-click on an unselected feature\n } else if (!isFeatureSelected && isShiftClick) {\n // Add it to the selection\n this.select(featureId);\n this.updateUIClasses({ mouse: Constants.cursors.MOVE });\n // Click (without shift) on an unselected feature\n } else if (!isFeatureSelected && !isShiftClick) {\n // Make it the only selected feature\n selectedFeatureIds.forEach((id) => this.doRender(id));\n this.setSelected(featureId);\n this.updateUIClasses({ mouse: Constants.cursors.MOVE });\n }\n\n // No matter what, re-render the clicked feature\n this.doRender(featureId);\n};\n\nCustomSelectMode.onMouseDown = function (state, e) {\n if (CommonSelectors.isActiveFeature(e)) return this.startOnActiveFeature(state, e);\n if (this.drawConfig.boxSelect && CommonSelectors.isShiftMousedown(e))\n return this.startBoxSelect(state, e);\n};\n\nCustomSelectMode.startBoxSelect = function (state, e) {\n this.stopExtendedInteractions(state);\n this.map.dragPan.disable();\n // Enable box select\n state.boxSelectStartLocation = mouseEventPoint(\n e.originalEvent,\n this.map.getContainer()\n );\n state.canBoxSelect = true;\n};\n\nCustomSelectMode.onTouchStart = function (state, e) {\n if (CommonSelectors.isActiveFeature(e)) return this.startOnActiveFeature(state, e);\n};\n\nCustomSelectMode.onDrag = function (state, e) {\n if (state.canDragMove) return this.dragMove(state, e);\n if (this.drawConfig.boxSelect && state.canBoxSelect)\n return this.whileBoxSelect(state, e);\n};\n\nCustomSelectMode.whileBoxSelect = function (state, e) {\n state.boxSelecting = true;\n this.updateUIClasses({ mouse: Constants.cursors.ADD });\n\n // Create the box node if it doesn't exist\n if (!state.boxSelectElement) {\n state.boxSelectElement = document.createElement(\"div\");\n state.boxSelectElement.classList.add(Constants.classes.BOX_SELECT);\n this.map.getContainer().appendChild(state.boxSelectElement);\n }\n\n // Adjust the box node's width and xy position\n const current = mouseEventPoint(e.originalEvent, this.map.getContainer());\n const minX = Math.min(state.boxSelectStartLocation.x, current.x);\n const maxX = Math.max(state.boxSelectStartLocation.x, current.x);\n const minY = Math.min(state.boxSelectStartLocation.y, current.y);\n const maxY = Math.max(state.boxSelectStartLocation.y, current.y);\n const translateValue = `translate(${minX}px, ${minY}px)`;\n state.boxSelectElement.style.transform = translateValue;\n state.boxSelectElement.style.WebkitTransform = translateValue;\n state.boxSelectElement.style.width = `${maxX - minX}px`;\n state.boxSelectElement.style.height = `${maxY - minY}px`;\n};\n\nCustomSelectMode.dragMove = function (state, e) {\n // Dragging when drag move is enabled\n state.dragMoving = true;\n e.originalEvent.stopPropagation();\n\n const delta = {\n lng: e.lngLat.lng - state.dragMoveLocation.lng,\n lat: e.lngLat.lat - state.dragMoveLocation.lat,\n };\n\n moveFeatures(this.getSelected(), delta);\n\n state.dragMoveLocation = e.lngLat;\n};\n\nCustomSelectMode.onMouseUp = function (state, e) {\n // End any extended interactions\n if (state.dragMoving) {\n this.fireUpdate();\n } else if (state.boxSelecting) {\n const bbox = [\n state.boxSelectStartLocation,\n mouseEventPoint(e.originalEvent, this.map.getContainer()),\n ];\n const featuresInBox = this.featuresAt(null, bbox, \"click\");\n const idsToSelect = this.getUniqueIds(featuresInBox).filter(\n (id) => !this.isSelected(id)\n );\n\n if (idsToSelect.length) {\n this.select(idsToSelect);\n idsToSelect.forEach((id) => this.doRender(id));\n this.updateUIClasses({ mouse: Constants.cursors.MOVE });\n }\n }\n this.stopExtendedInteractions(state);\n};\n\nCustomSelectMode.toDisplayFeatures = function (state, geojson, display) {\n geojson.properties.active = this.isSelected(geojson.properties.id)\n ? Constants.activeStates.ACTIVE\n : Constants.activeStates.INACTIVE;\n display(geojson);\n this.fireActionable();\n if (\n geojson.properties.active !== Constants.activeStates.ACTIVE ||\n geojson.geometry.type === Constants.geojsonTypes.POINT\n )\n return;\n createSupplementaryPoints(geojson).forEach(display);\n};\n\nCustomSelectMode.onTrash = function () {\n this.deleteFeature(this.getSelectedIds());\n this.fireActionable();\n};\n\nCustomSelectMode.onCombineFeatures = function () {\n const selectedFeatures = this.getSelected();\n\n if (selectedFeatures.length === 0 || selectedFeatures.length < 2) return;\n\n const coordinates = [],\n featuresCombined = [];\n const featureType = selectedFeatures[0].type.replace(\"Multi\", \"\");\n\n for (let i = 0; i < selectedFeatures.length; i++) {\n const feature = selectedFeatures[i];\n\n if (feature.type.replace(\"Multi\", \"\") !== featureType) {\n return;\n }\n if (feature.type.includes(\"Multi\")) {\n feature.getCoordinates().forEach((subcoords) => {\n coordinates.push(subcoords);\n });\n } else {\n coordinates.push(feature.getCoordinates());\n }\n\n featuresCombined.push(feature.toGeoJSON());\n }\n\n if (featuresCombined.length > 1) {\n const multiFeature = this.newFeature({\n type: Constants.geojsonTypes.FEATURE,\n properties: featuresCombined[0].properties,\n geometry: {\n type: `Multi${featureType}`,\n coordinates,\n },\n });\n\n this.addFeature(multiFeature);\n this.deleteFeature(this.getSelectedIds(), { silent: true });\n this.setSelected([multiFeature.id]);\n\n this.map.fire(Constants.events.COMBINE_FEATURES, {\n createdFeatures: [multiFeature.toGeoJSON()],\n deletedFeatures: featuresCombined,\n });\n }\n this.fireActionable();\n};\n\nCustomSelectMode.onUncombineFeatures = function () {\n const selectedFeatures = this.getSelected();\n if (selectedFeatures.length === 0) return;\n\n const createdFeatures = [];\n const featuresUncombined = [];\n\n for (let i = 0; i < selectedFeatures.length; i++) {\n const feature = selectedFeatures[i];\n\n if (this.isInstanceOf(\"MultiFeature\", feature)) {\n feature.getFeatures().forEach((subFeature) => {\n this.addFeature(subFeature);\n subFeature.properties = feature.properties;\n createdFeatures.push(subFeature.toGeoJSON());\n this.select([subFeature.id]);\n });\n this.deleteFeature(feature.id, { silent: true });\n featuresUncombined.push(feature.toGeoJSON());\n }\n }\n\n if (createdFeatures.length > 1) {\n this.map.fire(Constants.events.UNCOMBINE_FEATURES, {\n createdFeatures,\n deletedFeatures: featuresUncombined,\n });\n }\n this.fireActionable();\n};\n\nexport default CustomSelectMode;\n","const drawUtils = {\n getMatchingVertices: (vertex, featureId, allFeatures, map) => {\n // number of decimals should probably be dynamic depending on zoom level\n let decimals = 5;\n let matchingVertices = [];\n\n let v_lng = vertex[0].toFixed(decimals);\n let v_lat = vertex[1].toFixed(decimals);\n\n for (var i = 0; i < allFeatures.length; i++) {\n if (allFeatures[i].id !== featureId) {\n for (var k = 0; k < allFeatures[i].geometry.coordinates.length; k++) {\n for (var m = 0; m < allFeatures[i].geometry.coordinates[k].length; m++) {\n if (\n v_lng ===\n allFeatures[i].geometry.coordinates[k][m][0].toFixed(decimals) &&\n v_lat ===\n allFeatures[i].geometry.coordinates[k][m][1].toFixed(decimals)\n ) {\n matchingVertices.push({\n featureId: allFeatures[i].id,\n coord_path: k + \".\" + m,\n //feature: map.getFeature(allFeatures[i].id),\n lng: allFeatures[i].geometry.coordinates[k][m][0],\n lat: allFeatures[i].geometry.coordinates[k][m][1],\n });\n }\n }\n }\n }\n }\n\n return matchingVertices;\n },\n getDrawInstance: (map) => {\n for (var i = map._controls.length - 1; i >= 0; i--) {\n if (\n map._controls[i].options &&\n map._controls[i].options.defaultMode === \"custom_select\"\n ) {\n return map._controls[i];\n }\n }\n return null;\n },\n};\n\nexport default drawUtils;\n","import {\n noTarget,\n isOfMetaType,\n isActiveFeature,\n isInactiveFeature,\n isShiftDown,\n} from \"./lib/common_selectors\";\nimport createSupplementaryPoints from \"./lib/create_supplementary_points\";\nimport constrainFeatureMovement from \"./lib/constrain_feature_movement\";\nimport doubleClickZoom from \"./lib/double_click_zoom\";\nimport * as Constants from \"./lib/constants\";\nimport moveFeatures from \"./lib/move_features\";\nimport drawUtils from \"./lib/utils\";\n\nconst isVertex = isOfMetaType(Constants.meta.VERTEX);\nconst isMidpoint = isOfMetaType(Constants.meta.MIDPOINT);\n\nconst DirectSelect = {};\n\n// INTERNAL FUCNTIONS\n\nDirectSelect.fireUpdate = function () {\n this.map.fire(Constants.events.UPDATE, {\n action: Constants.updateActions.CHANGE_COORDINATES,\n features: this.getSelected().map((f) => f.toGeoJSON()),\n });\n};\n\nDirectSelect.fireActionable = function (state) {\n this.setActionableState({\n combineFeatures: false,\n uncombineFeatures: false,\n trash: state.selectedCoordPaths.length > 0,\n });\n};\n\nDirectSelect.startDragging = function (state, e) {\n this.map.dragPan.disable();\n state.canDragMove = true;\n state.dragMoveLocation = e.lngLat;\n};\n\nDirectSelect.stopDragging = function (state) {\n this.map.dragPan.enable();\n state.dragMoving = false;\n state.canDragMove = false;\n state.dragMoveLocation = null;\n};\n\nDirectSelect.onVertex = function (state, e) {\n this.startDragging(state, e);\n const about = e.featureTarget.properties;\n const selectedIndex = state.selectedCoordPaths.indexOf(about.coord_path);\n if (!isShiftDown(e) && selectedIndex === -1) {\n state.selectedCoordPaths = [about.coord_path];\n } else if (isShiftDown(e) && selectedIndex === -1) {\n state.selectedCoordPaths.push(about.coord_path);\n }\n\n // currently this work with single selected vertices only\n let allFeatures = drawUtils.getDrawInstance(this.map).getAll();\n\n let matchingVertices = drawUtils.getMatchingVertices(\n e.featureTarget._geometry.coordinates,\n e.featureTarget.properties.parent,\n allFeatures.features,\n this.map\n );\n state.groupMove_vertices = matchingVertices;\n\n for (let i = 0; i < state.groupMove_vertices.length; i++) {\n state.groupMove_vertices[i].feature = this.getFeature(\n state.groupMove_vertices[i].featureId\n );\n }\n\n const selectedCoordinates = this.pathsToCoordinates(\n state.featureId,\n state.selectedCoordPaths\n );\n this.setSelectedCoordinates(selectedCoordinates);\n};\n\nDirectSelect.onMidpoint = function (state, e) {\n this.startDragging(state, e);\n const about = e.featureTarget.properties;\n state.feature.addCoordinate(about.coord_path, about.lng, about.lat);\n this.fireUpdate();\n state.selectedCoordPaths = [about.coord_path];\n};\n\nDirectSelect.pathsToCoordinates = function (featureId, paths) {\n return paths.map((coord_path) => ({ feature_id: featureId, coord_path }));\n};\n\nDirectSelect.onFeature = function (state, e) {\n if (state.selectedCoordPaths.length === 0) this.startDragging(state, e);\n else this.stopDragging(state);\n};\n\nDirectSelect.dragFeature = function (state, e, delta) {\n moveFeatures(this.getSelected(), delta);\n state.dragMoveLocation = e.lngLat;\n};\n\nDirectSelect.dragVertex = function (state, e, delta) {\n const selectedCoords = state.selectedCoordPaths.map((coord_path) =>\n state.feature.getCoordinate(coord_path)\n );\n const selectedCoordPoints = selectedCoords.map((coords) => ({\n type: Constants.geojsonTypes.FEATURE,\n properties: {},\n geometry: {\n type: Constants.geojsonTypes.POINT,\n coordinates: coords,\n },\n }));\n\n const constrainedDelta = constrainFeatureMovement(selectedCoordPoints, delta);\n for (let i = 0; i < selectedCoords.length; i++) {\n const coord = selectedCoords[i];\n state.feature.updateCoordinate(\n state.selectedCoordPaths[i],\n coord[0] + constrainedDelta.lng,\n coord[1] + constrainedDelta.lat\n );\n\n for (let k = 0; k < state.groupMove_vertices.length; k++) {\n let coord_path_m = state.groupMove_vertices[k].coord_path.split(\".\");\n if (\n typeof coord_path_m[0] !== \"undefined\" &&\n typeof coord_path_m[1] !== \"undefined\" &&\n typeof state.groupMove_vertices[k].feature.coordinates[coord_path_m[0]] !==\n \"undefined\" &&\n typeof state.groupMove_vertices[k].feature.coordinates[coord_path_m[0]][\n coord_path_m[1]\n ] !== \"undefined\"\n ) {\n let coord_m =\n state.groupMove_vertices[k].feature.coordinates[coord_path_m[0]][\n coord_path_m[1]\n ];\n state.groupMove_vertices[k].feature.updateCoordinate(\n state.groupMove_vertices[k].coord_path,\n coord_m[0] + constrainedDelta.lng,\n coord_m[1] + constrainedDelta.lat\n );\n }\n }\n }\n};\n\nDirectSelect.clickNoTarget = function () {\n this.changeMode(\"custom_select\");\n};\n\nDirectSelect.clickInactive = function () {\n this.changeMode(\"custom_select\");\n};\n\nDirectSelect.clickActiveFeature = function (state) {\n state.selectedCoordPaths = [];\n this.clearSelectedCoordinates();\n state.feature.changed();\n};\n\n// EXTERNAL FUNCTIONS\n\nDirectSelect.onSetup = function (opts) {\n const featureId = opts.featureId;\n const feature = this.getFeature(featureId);\n\n if (!feature) {\n throw new Error(\"You must provide a featureId to enter direct_select mode\");\n }\n\n if (feature.type === Constants.geojsonTypes.POINT) {\n throw new TypeError(\"direct_select mode doesn't handle point features\");\n }\n\n const state = {\n featureId,\n feature,\n dragMoveLocation: opts.startPos || null,\n dragMoving: false,\n canDragMove: false,\n selectedCoordPaths: opts.coordPath ? [opts.coordPath] : [],\n groupMove_vertices: opts.groupMove_vertices ? opts.groupMove_vertices : [],\n };\n\n this.setSelectedCoordinates(\n this.pathsToCoordinates(featureId, state.selectedCoordPaths)\n );\n this.setSelected(featureId);\n doubleClickZoom.disable(this);\n\n this.setActionableState({\n trash: true,\n });\n\n return state;\n};\n\nDirectSelect.onStop = function () {\n doubleClickZoom.enable(this);\n this.clearSelectedCoordinates();\n};\n\nDirectSelect.toDisplayFeatures = function (state, geojson, push) {\n if (state.featureId === geojson.properties.id) {\n geojson.properties.active = Constants.activeStates.ACTIVE;\n push(geojson);\n createSupplementaryPoints(geojson, {\n map: this.map,\n midpoints: true,\n selectedPaths: state.selectedCoordPaths,\n }).forEach(push);\n } else {\n geojson.properties.active = Constants.activeStates.INACTIVE;\n push(geojson);\n }\n this.fireActionable(state);\n};\n\nDirectSelect.onTrash = function (state) {\n // Uses number-aware sorting to make sure '9' < '10'. Comparison is reversed because we want them\n // in reverse order so that we can remove by index safely.\n state.selectedCoordPaths\n .sort((a, b) => b.localeCompare(a, \"en\", { numeric: true }))\n .forEach((id) => state.feature.removeCoordinate(id));\n this.fireUpdate();\n state.selectedCoordPaths = [];\n this.clearSelectedCoordinates();\n this.fireActionable(state);\n if (state.feature.isValid() === false) {\n this.deleteFeature([state.featureId]);\n this.changeMode(\"custom_select\", {});\n }\n};\n\nDirectSelect.onMouseMove = function (state, e) {\n // On mousemove that is not a drag, stop vertex movement.\n const isFeature = isActiveFeature(e);\n const onVertex = isVertex(e);\n const noCoords = state.selectedCoordPaths.length === 0;\n if (isFeature && noCoords) this.updateUIClasses({ mouse: Constants.cursors.MOVE });\n else if (onVertex && !noCoords)\n this.updateUIClasses({ mouse: Constants.cursors.MOVE });\n else this.updateUIClasses({ mouse: Constants.cursors.NONE });\n this.stopDragging(state);\n};\n\nDirectSelect.onMouseOut = function (state) {\n // As soon as you mouse leaves the canvas, update the feature\n if (state.dragMoving) this.fireUpdate();\n};\n\nDirectSelect.onTouchStart = DirectSelect.onMouseDown = function (state, e) {\n if (isVertex(e)) return this.onVertex(state, e);\n if (isActiveFeature(e)) return this.onFeature(state, e);\n if (isMidpoint(e)) return this.onMidpoint(state, e);\n};\n\nDirectSelect.onDrag = function (state, e) {\n if (state.canDragMove !== true) return;\n state.dragMoving = true;\n e.originalEvent.stopPropagation();\n\n const delta = {\n lng: e.lngLat.lng - state.dragMoveLocation.lng,\n lat: e.lngLat.lat - state.dragMoveLocation.lat,\n };\n if (state.selectedCoordPaths.length > 0) this.dragVertex(state, e, delta);\n else this.dragFeature(state, e, delta);\n\n state.dragMoveLocation = e.lngLat;\n};\n\nDirectSelect.onClick = function (state, e) {\n if (noTarget(e)) return this.clickNoTarget(state, e);\n if (isActiveFeature(e)) return this.clickActiveFeature(state, e);\n if (isInactiveFeature(e)) return this.clickInactive(state, e);\n this.stopDragging(state);\n};\n\nDirectSelect.onTap = function (state, e) {\n if (noTarget(e)) return this.clickNoTarget(state, e);\n if (isActiveFeature(e)) return this.clickActiveFeature(state, e);\n if (isInactiveFeature(e)) return this.clickInactive(state, e);\n};\n\nDirectSelect.onTouchEnd = DirectSelect.onMouseUp = function (state) {\n if (state.dragMoving) {\n this.fireUpdate();\n }\n this.stopDragging(state);\n};\n\nexport default DirectSelect;\n","import React, { useState, useEffect, useContext, useRef } from \"react\";\nimport \"./MlFeatureEditor.css\";\n\nimport \"@mapbox/mapbox-gl-draw/dist/mapbox-gl-draw.css\";\nimport MapboxDraw from \"@mapbox/mapbox-gl-draw\";\nimport CustomPolygonMode from \"./custom-polygon-mode\";\nimport CustomSelectMode from \"./custom-select-mode\";\nimport CustomDirectSelectMode from \"./custom-direct-select-mode\";\nimport { v4 as uuidv4 } from \"uuid\";\n\nimport { MapContext } from \"@mapcomponents/react-core\";\n\nfunction MlFeatureEditor(props) {\n const mapRef = useRef(null);\n const draw = useRef(null);\n const mapContext = useContext(MapContext);\n const componentId = useRef(\n (props.idPrefix ? props.idPrefix : \"MlFeatureEditor-\") + uuidv4()\n );\n const onChangeRef = useRef(props.onChange);\n\n const [drawToolsInitialized, setDrawToolsInitialized] = useState(false);\n const [drawToolsReady, setDrawToolsReady] = useState(false);\n\n const [mouseUpTrigger, setMouseUpTrigger] = useState(false);\n\n const modeChangeHandler = (e) => {\n console.log(\"MlFeatureEditor mode change to \" + e.mode);\n //setDrawMode(e.mode);\n };\n\n const mouseUpHandler = () => {\n setMouseUpTrigger(Math.random());\n };\n\n useEffect(() => {\n let _componentId = componentId.current;\n return () => {\n if (mapRef.current) {\n mapRef.current.cleanup(_componentId);\n //mapRef.current.removeControl(draw.current, \"top-left\");\n mapRef.current = null;\n }\n };\n }, []);\n\n useEffect(() => {\n if (\n mapContext.mapExists(props.mapId) &&\n mapContext.getMap(props.mapId).style &&\n !drawToolsInitialized\n ) {\n mapRef.current = mapContext.getMap(props.mapId);\n setDrawToolsInitialized(true);\n if (\n mapRef.current &&\n mapRef.current.style &&\n mapRef.current.getSource(\"mapbox-gl-draw-cold\") &&\n draw.current &&\n typeof draw.current.remove !== \"undefined\"\n ) {\n // remove old Mapbox-gl-Draw from Mapbox instance when hot-reloading this component during development\n draw.current.remove();\n }\n\n draw.current = new MapboxDraw({\n displayControlsDefault: false,\n defaultMode: props.mode || \"custom_select\",\n modes: Object.assign(\n {\n custom_polygon: CustomPolygonMode,\n custom_select: CustomSelectMode,\n custom_direct_select: CustomDirectSelectMode,\n },\n MapboxDraw.modes\n ),\n });\n\n mapRef.current.on(\"draw.modechange\", modeChangeHandler, componentId.current);\n\n mapRef.current.addControl(draw.current, \"top-left\", componentId.current);\n\n mapRef.current.on(\"mouseup\", mouseUpHandler, componentId.current);\n\n setDrawToolsReady(true);\n }\n }, [mapContext.map, mapContext, props, drawToolsInitialized]);\n\n useEffect(() => {\n if (\n draw.current &&\n props.geojson &&\n props.geojson.geometry &&\n props.geojson.geometry.coordinates\n ) {\n draw.current.set({ type: \"FeatureCollection\", features: [props.geojson] });\n }\n }, [props.geojson, drawToolsReady]);\n\n useEffect(() => {\n if (draw.current && mouseUpTrigger) {\n // update drawnFeatures state object\n let currentFeatureCollection = draw.current.getAll();\n if (typeof onChangeRef.current === \"function\") {\n onChangeRef.current(currentFeatureCollection.features);\n }\n }\n }, [mouseUpTrigger]);\n\n useEffect(() => {\n if (props.mode && draw.current) {\n draw.current.changeMode(props.mode);\n }\n }, [props.mode]);\n\n return <></>;\n}\n\nexport default MlFeatureEditor;\n","import React, { useEffect, useContext } from \"react\";\n\nimport { MapContext } from \"@mapcomponents/react-core\";\n\nconst MlBasicComponent = (props) => {\n // Use a useRef hook to reference the layer object to be able to access it later inside useEffect hooks\n // without the requirement of adding it to the dependency list (ignore the false eslint exhaustive deps warning)\n // const layerRef = useRef(null);\n const mapContext = useContext(MapContext);\n\n useEffect(() => {\n if (!mapContext.mapExists()) return;\n return () => {\n // This is the cleanup function, it is called when this react component is removed from react-dom\n // try to remove anything this component has added to the MapLibre-gl instance\n // e.g.: remove the layer\n // mapContext.map.removeLayer(layerRef.current);\n if (typeof props.cleanup === \"function\") {\n props.cleanup(mapContext.getMap(props.mapId));\n }\n };\n });\n\n useEffect(() => {\n if (!mapContext.mapExists(props.mapId)) return;\n // the MapLibre-gl instance (mapContext.map) is accessible here\n // initialize the layer and add it to the MapLibre-gl instance\n if (typeof props.mapIsReady === \"function\") {\n props.mapIsReady(mapContext.getMap(props.mapId));\n }\n }, [mapContext.mapIds, mapContext, props]);\n\n return <></>;\n};\n\nexport default MlBasicComponent;\n","import React, { useContext, useCallback, useRef, useEffect, useState } from \"react\";\nimport PropTypes from \"prop-types\";\nimport syncMove from \"@mapbox/mapbox-gl-sync-move\";\nimport \"./style.css\";\nimport { MapContext } from \"@mapcomponents/react-core\";\n\n/**\n *\n * Hides the MapLibreMap referenced by props.map2Id except for the \"magnifier\"-circle that reveals\n * the map and can be dragged around on top of the MapLibreMap referenced by props.map1Id\n *\n * @component\n */\nconst MlLayerMagnify = (props) => {\n const mapContext = useContext(MapContext);\n const syncMoveInitializedRef = useRef(false);\n const syncCleanupFunctionRef = useRef(null);\n\n const [swipeX, setSwipeX] = useState(50);\n const swipeXRef = useRef(50);\n const [swipeY, setSwipeY] = useState(50);\n const swipeYRef = useRef(50);\n\n const magnifierRadiusRef = useRef(props.magnifierRadius);\n\n const [magnifierRadius, setMagnifierRadius] = useState(magnifierRadiusRef.current);\n\n const mapExists = useCallback(() => {\n if (!props.map1Id || !props.map2Id) {\n return false;\n }\n if (!mapContext.getMap(props.map1Id) || !mapContext.getMap(props.map2Id)) {\n return false;\n }\n\n return true;\n }, [props, mapContext]);\n\n const onResize = useRef(() => {\n if (!mapExists()) return;\n\n onMove({\n clientX: swipeXRef.current,\n clientY: swipeYRef.current,\n });\n });\n\n useEffect(() => {\n window.addEventListener(\"resize\", onResize.current);\n let _onResize = onResize.current;\n\n return () => {\n window.removeEventListener(\"resize\", _onResize);\n if (syncCleanupFunctionRef.current) {\n syncCleanupFunctionRef.current();\n }\n };\n }, []);\n\n const onMove = useCallback(\n (e) => {\n if (!mapExists()) return;\n\n let bounds = mapContext.maps[props.map1Id].getCanvas().getBoundingClientRect();\n let clientX =\n e.clientX ||\n (typeof e.touches !== \"undefined\" && typeof e.touches[0] !== \"undefined\"\n ? e.touches[0].clientX\n : 0);\n let clientY =\n e.clientY ||\n (typeof e.touches !== \"undefined\" && typeof e.touches[0] !== \"undefined\"\n ? e.touches[0].clientY\n : 0);\n\n clientX -= bounds.x;\n clientY -= bounds.y;\n let swipeX_tmp = ((clientX / bounds.width) * 100).toFixed(2);\n let swipeY_tmp = ((clientY / bounds.height) * 100).toFixed(2);\n\n if (swipeXRef.current !== swipeX_tmp || swipeYRef.current !== swipeY_tmp) {\n setSwipeX(swipeX_tmp);\n swipeXRef.current = swipeX_tmp;\n setSwipeY(swipeY_tmp);\n swipeYRef.current = swipeY_tmp;\n\n mapContext.maps[props.map2Id].getContainer().style.clipPath =\n `circle(${magnifierRadiusRef.current}px at ` +\n (swipeXRef.current * bounds.width) / 100 +\n \"px \" +\n (swipeYRef.current * bounds.height) / 100 +\n \"px)\";\n }\n },\n [mapContext, mapExists, props]\n );\n\n useEffect(() => {\n if (!mapExists() || syncMoveInitializedRef.current) return;\n\n syncMoveInitializedRef.current = true;\n syncCleanupFunctionRef.current = syncMove(\n mapContext.getMap(props.map1Id).map,\n mapContext.getMap(props.map2Id).map\n );\n\n if (\n mapContext.maps[props.map1Id].getCanvas().clientWidth >\n mapContext.maps[props.map1Id].getCanvas().clientHeight &&\n magnifierRadiusRef.current * 2 > mapContext.maps[props.map1Id].getCanvas().clientHeight\n ) {\n magnifierRadiusRef.current = Math.floor(\n mapContext.maps[props.map1Id].getCanvas().clientHeight / 2\n );\n setMagnifierRadius(magnifierRadiusRef.current);\n }\n\n if (\n mapContext.maps[props.map1Id].getCanvas().clientHeight >\n mapContext.maps[props.map1Id].getCanvas().clientWidth &&\n magnifierRadiusRef.current * 2 > mapContext.maps[props.map1Id].getCanvas().clientWidth\n ) {\n magnifierRadiusRef.current = Math.floor(\n mapContext.maps[props.map1Id].getCanvas().clientWidth / 2\n );\n setMagnifierRadius(magnifierRadiusRef.current);\n }\n\n onMove({\n clientX: mapContext.maps[props.map1Id].getCanvas().clientWidth / 2,\n clientY: mapContext.maps[props.map1Id].getCanvas().clientHeight / 2,\n });\n }, [mapContext.mapIds, mapContext, mapExists, props, onMove]);\n\n const onDown = (e) => {\n if (e.touches) {\n document.addEventListener(\"touchmove\", onMove);\n document.addEventListener(\"touchend\", onTouchEnd);\n } else {\n document.addEventListener(\"mousemove\", onMove);\n document.addEventListener(\"mouseup\", onMouseUp);\n }\n };\n\n const onTouchEnd = () => {\n document.removeEventListener(\"touchmove\", onMove);\n document.removeEventListener(\"touchend\", onTouchEnd);\n };\n\n const onMouseUp = () => {\n document.removeEventListener(\"mousemove\", onMove);\n document.removeEventListener(\"mouseup\", onMouseUp);\n };\n\n const onWheel = (e) => {\n let evCopy = new WheelEvent(e.type, e);\n mapContext.map.getCanvas().dispatchEvent(evCopy);\n };\n\n return (\n <div\n style={{\n position: \"absolute\",\n left: swipeX + \"%\",\n top: swipeY + \"%\",\n borderRadius: \"50%\",\n width: magnifierRadius * 2 + 1 + \"px\",\n height: magnifierRadius * 2 + 1 + \"px\",\n background: \"rgba(0,0,0,0)\",\n border: \"2px solid #fafafa\",\n boxShadow: \"1px 2px 2px rgba(19, 19, 19, .5), inset 1px 1px 1px rgba(19, 19, 19, .2)\",\n cursor: \"pointer\",\n zIndex: \"110\",\n marginLeft: magnifierRadius * -1 - 1 + \"px\",\n marginTop: magnifierRadius * -1 - 1 + \"px\",\n textAlign: \"center\",\n lineHeight: \"91px\",\n fontSize: \"2em\",\n color: \"#fafafa\",\n userSelect: \"none\",\n }}\n onTouchStart={onDown}\n onMouseDown={onDown}\n onWheel={onWheel}\n ></div>\n );\n};\n\nMlLayerMagnify.defaultProps = {\n magnifierRadius: 200,\n};\n\nMlLayerMagnify.propTypes = {\n /**\n * Id of the first MapLibre instance\n */\n map1Id: PropTypes.string,\n /**\n * Id of the second MapLibre instance\n */\n map2Id: PropTypes.string,\n /**\n * Size of the \"magnifier\"-circle\n */\n magnifierRadius: PropTypes.number,\n};\nexport default MlLayerMagnify;\n","import React, { useContext, useCallback, useRef, useEffect, useState } from \"react\";\nimport syncMove from \"@mapbox/mapbox-gl-sync-move\";\nimport \"./style.css\";\nimport { MapContext } from \"@mapcomponents/react-core\";\nimport PropTypes from \"prop-types\";\n\n/**\n * MlLayerSwipe returns a Button that will add a standard OSM tile layer to the maplibre-gl instance, that you can move like a curtain.\n *\n * @component\n */\nconst MlLayerSwipe = (props) => {\n const mapContext = useContext(MapContext);\n const initializedRef = useRef(false);\n\n const [swipeX, setSwipeX] = useState(50);\n const swipeXRef = useRef(50);\n\n const syncCleanupFunctionRef = useRef(null);\n\n const mapExists = useCallback(() => {\n if (!props.map1Id || !props.map2Id) {\n return false;\n }\n if (!mapContext.getMap(props.map1Id) || !mapContext.getMap(props.map2Id)) {\n return false;\n }\n\n return true;\n }, [mapContext, props.map1Id, props.map2Id]);\n\n const cleanup = () => {\n if (syncCleanupFunctionRef.current) {\n syncCleanupFunctionRef.current();\n }\n };\n\n const onMove = useCallback(\n (e) => {\n if (!mapExists()) return;\n\n let bounds = mapContext.maps[props.map1Id].getCanvas().getBoundingClientRect();\n let clientX =\n e.clientX ||\n (typeof e.touches !== \"undefined\" && typeof e.touches[0] !== \"undefined\"\n ? e.touches[0].clientX\n : 0);\n\n clientX -= bounds.x;\n let swipeX_tmp = ((clientX / bounds.width) * 100).toFixed(2);\n\n if (swipeXRef.current !== swipeX_tmp) {\n setSwipeX(swipeX_tmp);\n swipeXRef.current = swipeX_tmp;\n\n var clipA = \"rect(0, \" + (swipeXRef.current * bounds.width) / 100 + \"px, 999em, 0)\";\n\n mapContext.maps[props.map2Id].getContainer().style.clip = clipA;\n }\n },\n [mapContext, mapExists, props.map1Id, props.map2Id]\n );\n\n useEffect(() => {\n return cleanup;\n }, []);\n\n useEffect(() => {\n if (!mapExists() || initializedRef.current) return;\n\n initializedRef.current = true;\n syncCleanupFunctionRef.current = syncMove(\n mapContext.getMap(props.map1Id).map,\n mapContext.getMap(props.map2Id).map\n );\n onMove({ clientX: mapContext.maps[props.map1Id].getCanvas().clientWidth / 2 });\n }, [mapContext.mapIds, mapContext, props, onMove, mapExists]);\n\n const onDown = (e) => {\n if (e.touches) {\n document.addEventListener(\"touchmove\", onMove);\n document.addEventListener(\"touchend\", onTouchEnd);\n } else {\n document.addEventListener(\"mousemove\", onMove);\n document.addEventListener(\"mouseup\", onMouseUp);\n }\n };\n\n const onTouchEnd = () => {\n document.removeEventListener(\"touchmove\", onMove);\n document.removeEventListener(\"touchend\", onTouchEnd);\n };\n\n const onMouseUp = () => {\n document.removeEventListener(\"mousemove\", onMove);\n document.removeEventListener(\"mouseup\", onMouseUp);\n };\n\n return (\n <div\n style={{\n position: \"absolute\",\n left: swipeX + \"%\",\n top: \"50%\",\n borderRadius: \"50%\",\n width: \"100px\",\n height: \"100px\",\n background: \"#0066ff\",\n border: \"3px solid #eaebf1\",\n cursor: \"pointer\",\n zIndex: \"110\",\n marginLeft: \"-50px\",\n marginTop: \"-50px\",\n textAlign: \"center\",\n lineHeight: \"91px\",\n fontSize: \"2em\",\n color: \"#fafafa\",\n userSelect: \"none\",\n }}\n onTouchStart={onDown}\n onMouseDown={onDown}\n ></div>\n );\n};\n\nMlLayerSwipe.propTypes = {\n /**\n * Id of the first MapLibre instance.\n */\n map1Id: PropTypes.string,\n /**\n * Id of the second MapLibre instance.\n */\n map2Id: PropTypes.string,\n}\n\nexport default MlLayerSwipe;\n","import React from \"react\";\n\nconst GeoJsonContext = React.createContext({});\n\nexport const GeoJsonContextProvider = GeoJsonContext.Provider;\nexport default GeoJsonContext;\n","/**\n * https://github.com/mapbox/togeojson\n *\n * Copyright (c) 2016 Mapbox All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:\n *\n * 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.\n *\n * 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.\n *\n * 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.\n */\nvar toGeoJSON = (function () {\n var removeSpace = /\\s*/g,\n trimSpace = /^\\s*|\\s*$/g,\n splitSpace = /\\s+/;\n // generate a short, numeric hash of a string\n function okhash(x) {\n if (!x || !x.length) return 0;\n for (var i = 0, h = 0; i < x.length; i++) {\n h = ((h << 5) - h + x.charCodeAt(i)) | 0;\n }\n return h;\n }\n // all Y children of X\n function get(x, y) {\n return x.getElementsByTagName(y);\n }\n function attr(x, y) {\n return x.getAttribute(y);\n }\n function attrf(x, y) {\n return parseFloat(attr(x, y));\n }\n // one Y child of X, if any, otherwise null\n function get1(x, y) {\n var n = get(x, y);\n return n.length ? n[0] : null;\n }\n // https://developer.mozilla.org/en-US/docs/Web/API/Node.normalize\n function norm(el) {\n if (el.normalize) {\n el.normalize();\n }\n return el;\n }\n // cast array x into numbers\n function numarray(x) {\n for (var j = 0, o = []; j < x.length; j++) {\n o[j] = parseFloat(x[j]);\n }\n return o;\n }\n // get the content of a text node, if any\n function nodeVal(x) {\n if (x) {\n norm(x);\n }\n return (x && x.textContent) || \"\";\n }\n // get the contents of multiple text nodes, if present\n function getMulti(x, ys) {\n var o = {},\n n,\n k;\n for (k = 0; k < ys.length; k++) {\n n = get1(x, ys[k]);\n if (n) o[ys[k]] = nodeVal(n);\n }\n return o;\n }\n // add properties of Y to X, overwriting if present in both\n function extend(x, y) {\n for (var k in y) x[k] = y[k];\n }\n // get one coordinate from a coordinate array, if any\n function coord1(v) {\n return numarray(v.replace(removeSpace, \"\").split(\",\"));\n }\n // get all coordinates from a coordinate array as [[],[]]\n function coord(v) {\n var coords = v.replace(trimSpace, \"\").split(splitSpace),\n o = [];\n for (var i = 0; i < coords.length; i++) {\n o.push(coord1(coords[i]));\n }\n return o;\n }\n function coordPair(x) {\n var ll = [attrf(x, \"lon\"), attrf(x, \"lat\")],\n ele = get1(x, \"ele\"),\n // handle namespaced attribute in browser\n heartRate = get1(x, \"gpxtpx:hr\") || get1(x, \"hr\"),\n time = get1(x, \"time\"),\n e;\n if (ele) {\n e = parseFloat(nodeVal(ele));\n if (!isNaN(e)) {\n ll.push(e);\n }\n }\n return {\n coordinates: ll,\n time: time ? nodeVal(time) : null,\n heartRate: heartRate ? parseFloat(nodeVal(heartRate)) : null,\n };\n }\n\n // create a new feature collection parent object\n function fc() {\n return {\n type: \"FeatureCollection\",\n features: [],\n };\n }\n\n var serializer;\n if (typeof XMLSerializer !== \"undefined\") {\n /* istanbul ignore next */\n serializer = new XMLSerializer();\n } else {\n var isNodeEnv = typeof process === \"object\" && !process.browser;\n var isTitaniumEnv = typeof Titanium === \"object\";\n if (typeof exports === \"object\" && (isNodeEnv || isTitaniumEnv)) {\n serializer = new (require(\"xmldom\").XMLSerializer)();\n } else {\n throw new Error(\"Unable to initialize serializer\");\n }\n }\n function xml2str(str) {\n // IE9 will create a new XMLSerializer but it'll crash immediately.\n // This line is ignored because we don't run coverage tests in IE9\n /* istanbul ignore next */\n if (str.xml !== undefined) return str.xml;\n return serializer.serializeToString(str);\n }\n\n var t = {\n kml: function (doc) {\n var gj = fc(),\n // styleindex keeps track of hashed styles in order to match features\n styleIndex = {},\n styleByHash = {},\n // stylemapindex keeps track of style maps to expose in properties\n styleMapIndex = {},\n // atomic geospatial types supported by KML - MultiGeometry is\n // handled separately\n geotypes = [\"Polygon\", \"LineString\", \"Point\", \"Track\", \"gx:Track\"],\n // all root placemarks in the file\n placemarks = get(doc, \"Placemark\"),\n styles = get(doc, \"Style\"),\n styleMaps = get(doc, \"StyleMap\");\n\n for (var k = 0; k < styles.length; k++) {\n var hash = okhash(xml2str(styles[k])).toString(16);\n styleIndex[\"#\" + attr(styles[k], \"id\")] = hash;\n styleByHash[hash] = styles[k];\n }\n for (var l = 0; l < styleMaps.length; l++) {\n styleIndex[\"#\" + attr(styleMaps[l], \"id\")] = okhash(xml2str(styleMaps[l])).toString(16);\n var pairs = get(styleMaps[l], \"Pair\");\n var pairsMap = {};\n for (var m = 0; m < pairs.length; m++) {\n pairsMap[nodeVal(get1(pairs[m], \"key\"))] = nodeVal(get1(pairs[m], \"styleUrl\"));\n }\n styleMapIndex[\"#\" + attr(styleMaps[l], \"id\")] = pairsMap;\n }\n for (var j = 0; j < placemarks.length; j++) {\n gj.features = gj.features.concat(getPlacemark(placemarks[j]));\n }\n function kmlColor(v) {\n var color, opacity;\n v = v || \"\";\n if (v.substr(0, 1) === \"#\") {\n v = v.substr(1);\n }\n if (v.length === 6 || v.length === 3) {\n color = v;\n }\n if (v.length === 8) {\n opacity = parseInt(v.substr(0, 2), 16) / 255;\n color = \"#\" + v.substr(6, 2) + v.substr(4, 2) + v.substr(2, 2);\n }\n return [color, isNaN(opacity) ? undefined : opacity];\n }\n function gxCoord(v) {\n return numarray(v.split(\" \"));\n }\n function gxCoords(root) {\n var elems = get(root, \"coord\", \"gx\"),\n coords = [],\n times = [];\n if (elems.length === 0) elems = get(root, \"gx:coord\");\n for (var i = 0; i < elems.length; i++) coords.push(gxCoord(nodeVal(elems[i])));\n var timeElems = get(root, \"when\");\n for (var j = 0; j < timeElems.length; j++) times.push(nodeVal(timeElems[j]));\n return {\n coords: coords,\n times: times,\n };\n }\n function getGeometry(root) {\n var geomNode,\n geomNodes,\n i,\n j,\n k,\n geoms = [],\n coordTimes = [];\n if (get1(root, \"MultiGeometry\")) {\n return getGeometry(get1(root, \"MultiGeometry\"));\n }\n if (get1(root, \"MultiTrack\")) {\n return getGeometry(get1(root, \"MultiTrack\"));\n }\n if (get1(root, \"gx:MultiTrack\")) {\n return getGeometry(get1(root, \"gx:MultiTrack\"));\n }\n for (i = 0; i < geotypes.length; i++) {\n geomNodes = get(root, geotypes[i]);\n if (geomNodes) {\n for (j = 0; j < geomNodes.length; j++) {\n geomNode = geomNodes[j];\n if (geotypes[i] === \"Point\") {\n geoms.push({\n type: \"Point\",\n coordinates: coord1(nodeVal(get1(geomNode, \"coordinates\"))),\n });\n } else if (geotypes[i] === \"LineString\") {\n geoms.push({\n type: \"LineString\",\n coordinates: coord(nodeVal(get1(geomNode, \"coordinates\"))),\n });\n } else if (geotypes[i] === \"Polygon\") {\n var rings = get(geomNode, \"LinearRing\"),\n coords = [];\n for (k = 0; k < rings.length; k++) {\n coords.push(coord(nodeVal(get1(rings[k], \"coordinates\"))));\n }\n geoms.push({\n type: \"Polygon\",\n coordinates: coords,\n });\n } else if (geotypes[i] === \"Track\" || geotypes[i] === \"gx:Track\") {\n var track = gxCoords(geomNode);\n geoms.push({\n type: \"LineString\",\n coordinates: track.coords,\n });\n if (track.times.length) coordTimes.push(track.times);\n }\n }\n }\n }\n return {\n geoms: geoms,\n coordTimes: coordTimes,\n };\n }\n function getPlacemark(root) {\n var geomsAndTimes = getGeometry(root),\n i,\n properties = {},\n name = nodeVal(get1(root, \"name\")),\n address = nodeVal(get1(root, \"address\")),\n styleUrl = nodeVal(get1(root, \"styleUrl\")),\n description = nodeVal(get1(root, \"description\")),\n timeSpan = get1(root, \"TimeSpan\"),\n timeStamp = get1(root, \"TimeStamp\"),\n extendedData = get1(root, \"ExtendedData\"),\n lineStyle = get1(root, \"LineStyle\"),\n polyStyle = get1(root, \"PolyStyle\"),\n visibility = get1(root, \"visibility\");\n\n if (!geomsAndTimes.geoms.length) return [];\n if (name) properties.name = name;\n if (address) properties.address = address;\n if (styleUrl) {\n if (styleUrl[0] !== \"#\") {\n styleUrl = \"#\" + styleUrl;\n }\n\n properties.styleUrl = styleUrl;\n if (styleIndex[styleUrl]) {\n properties.styleHash = styleIndex[styleUrl];\n }\n if (styleMapIndex[styleUrl]) {\n properties.styleMapHash = styleMapIndex[styleUrl];\n properties.styleHash = styleIndex[styleMapIndex[styleUrl].normal];\n }\n // Try to populate the lineStyle or polyStyle since we got the style hash\n var style = styleByHash[properties.styleHash];\n if (style) {\n if (!lineStyle) lineStyle = get1(style, \"LineStyle\");\n if (!polyStyle) polyStyle = get1(style, \"PolyStyle\");\n var iconStyle = get1(style, \"IconStyle\");\n if (iconStyle) {\n var icon = get1(iconStyle, \"Icon\");\n if (icon) {\n var href = nodeVal(get1(icon, \"href\"));\n if (href) properties.icon = href;\n }\n }\n }\n }\n if (description) properties.description = description;\n if (timeSpan) {\n var begin = nodeVal(get1(timeSpan, \"begin\"));\n var end = nodeVal(get1(timeSpan, \"end\"));\n properties.timespan = { begin: begin, end: end };\n }\n if (timeStamp) {\n properties.timestamp = nodeVal(get1(timeStamp, \"when\"));\n }\n if (lineStyle) {\n var linestyles = kmlColor(nodeVal(get1(lineStyle, \"color\"))),\n color = linestyles[0],\n opacity = linestyles[1],\n width = parseFloat(nodeVal(get1(lineStyle, \"width\")));\n if (color) properties.stroke = color;\n if (!isNaN(opacity)) properties[\"stroke-opacity\"] = opacity;\n if (!isNaN(width)) properties[\"stroke-width\"] = width;\n }\n if (polyStyle) {\n var polystyles = kmlColor(nodeVal(get1(polyStyle, \"color\"))),\n pcolor = polystyles[0],\n popacity = polystyles[1],\n fill = nodeVal(get1(polyStyle, \"fill\")),\n outline = nodeVal(get1(polyStyle, \"outline\"));\n if (pcolor) properties.fill = pcolor;\n if (!isNaN(popacity)) properties[\"fill-opacity\"] = popacity;\n if (fill) properties[\"fill-opacity\"] = fill === \"1\" ? properties[\"fill-opacity\"] || 1 : 0;\n if (outline)\n properties[\"stroke-opacity\"] = outline === \"1\" ? properties[\"stroke-opacity\"] || 1 : 0;\n }\n if (extendedData) {\n var datas = get(extendedData, \"Data\"),\n simpleDatas = get(extendedData, \"SimpleData\");\n\n for (i = 0; i < datas.length; i++) {\n properties[datas[i].getAttribute(\"name\")] = nodeVal(get1(datas[i], \"value\"));\n }\n for (i = 0; i < simpleDatas.length; i++) {\n properties[simpleDatas[i].getAttribute(\"name\")] = nodeVal(simpleDatas[i]);\n }\n }\n if (visibility) {\n properties.visibility = nodeVal(visibility);\n }\n if (geomsAndTimes.coordTimes.length) {\n properties.coordTimes =\n geomsAndTimes.coordTimes.length === 1\n ? geomsAndTimes.coordTimes[0]\n : geomsAndTimes.coordTimes;\n }\n var feature = {\n type: \"Feature\",\n geometry:\n geomsAndTimes.geoms.length === 1\n ? geomsAndTimes.geoms[0]\n : {\n type: \"GeometryCollection\",\n geometries: geomsAndTimes.geoms,\n },\n properties: properties,\n };\n if (attr(root, \"id\")) feature.id = attr(root, \"id\");\n return [feature];\n }\n return gj;\n },\n gpx: function (doc) {\n var i,\n tracks = get(doc, \"trk\"),\n routes = get(doc, \"rte\"),\n waypoints = get(doc, \"wpt\"),\n // a feature collection\n gj = fc(),\n feature;\n for (i = 0; i < tracks.length; i++) {\n feature = getTrack(tracks[i]);\n if (feature) gj.features.push(feature);\n }\n for (i = 0; i < routes.length; i++) {\n feature = getRoute(routes[i]);\n if (feature) gj.features.push(feature);\n }\n for (i = 0; i < waypoints.length; i++) {\n gj.features.push(getPoint(waypoints[i]));\n }\n function initializeArray(arr, size) {\n for (var h = 0; h < size; h++) {\n arr.push(null);\n }\n return arr;\n }\n function getPoints(node, pointname) {\n var pts = get(node, pointname),\n line = [],\n times = [],\n heartRates = [],\n l = pts.length;\n if (l < 2) return {}; // Invalid line in GeoJSON\n for (var i = 0; i < l; i++) {\n var c = coordPair(pts[i]);\n line.push(c.coordinates);\n if (c.time) times.push(c.time);\n if (c.heartRate || heartRates.length) {\n if (!heartRates.length) initializeArray(heartRates, i);\n heartRates.push(c.heartRate || null);\n }\n }\n return {\n line: line,\n times: times,\n heartRates: heartRates,\n };\n }\n function getTrack(node) {\n var segments = get(node, \"trkseg\"),\n track = [],\n times = [],\n heartRates = [],\n line;\n for (var i = 0; i < segments.length; i++) {\n line = getPoints(segments[i], \"trkpt\");\n if (line) {\n if (line.line) track.push(line.line);\n if (line.times && line.times.length) times.push(line.times);\n if (heartRates.length || (line.heartRates && line.heartRates.length)) {\n if (!heartRates.length) {\n for (var s = 0; s < i; s++) {\n heartRates.push(initializeArray([], track[s].length));\n }\n }\n if (line.heartRates && line.heartRates.length) {\n heartRates.push(line.heartRates);\n } else {\n heartRates.push(initializeArray([], line.line.length || 0));\n }\n }\n }\n }\n if (track.length === 0) return;\n var properties = getProperties(node);\n extend(properties, getLineStyle(get1(node, \"extensions\")));\n if (times.length) properties.coordTimes = track.length === 1 ? times[0] : times;\n if (heartRates.length)\n properties.heartRates = track.length === 1 ? heartRates[0] : heartRates;\n return {\n type: \"Feature\",\n properties: properties,\n geometry: {\n type: track.length === 1 ? \"LineString\" : \"MultiLineString\",\n coordinates: track.length === 1 ? track[0] : track,\n },\n };\n }\n function getRoute(node) {\n var line = getPoints(node, \"rtept\");\n if (!line.line) return;\n var prop = getProperties(node);\n extend(prop, getLineStyle(get1(node, \"extensions\")));\n var routeObj = {\n type: \"Feature\",\n properties: prop,\n geometry: {\n type: \"LineString\",\n coordinates: line.line,\n },\n };\n return routeObj;\n }\n function getPoint(node) {\n var prop = getProperties(node);\n extend(prop, getMulti(node, [\"sym\"]));\n return {\n type: \"Feature\",\n properties: prop,\n geometry: {\n type: \"Point\",\n coordinates: coordPair(node).coordinates,\n },\n };\n }\n function getLineStyle(extensions) {\n var style = {};\n if (extensions) {\n var lineStyle = get1(extensions, \"line\");\n if (lineStyle) {\n var color = nodeVal(get1(lineStyle, \"color\")),\n opacity = parseFloat(nodeVal(get1(lineStyle, \"opacity\"))),\n width = parseFloat(nodeVal(get1(lineStyle, \"width\")));\n if (color) style.stroke = color;\n if (!isNaN(opacity)) style[\"stroke-opacity\"] = opacity;\n // GPX width is in mm, convert to px with 96 px per inch\n if (!isNaN(width)) style[\"stroke-width\"] = (width * 96) / 25.4;\n }\n }\n return style;\n }\n function getProperties(node) {\n var prop = getMulti(node, [\"name\", \"cmt\", \"desc\", \"type\", \"time\", \"keywords\"]),\n links = get(node, \"link\");\n if (links.length) prop.links = [];\n for (var i = 0, link; i < links.length; i++) {\n link = { href: attr(links[i], \"href\") };\n extend(link, getMulti(links[i], [\"text\", \"type\"]));\n prop.links.push(link);\n }\n return prop;\n }\n return gj;\n },\n };\n return t;\n})();\n\nexport default toGeoJSON;\n","import React, {useContext, useRef, useEffect, useState} from \"react\";\nimport PropTypes from \"prop-types\";\nimport {MapContext} from \"@mapcomponents/react-core\";\nimport {bbox} from \"@turf/turf\";\nimport Divider from \"@mui/material/Divider\";\nimport Typography from \"@mui/material/Typography\";\nimport Drawer from \"@mui/material/Drawer\";\nimport IconButton from \"@mui/material/IconButton\";\nimport InfoIcon from \"@mui/icons-material/Info\";\nimport FileCopy from \"@mui/icons-material/FileCopy\";\nimport {Popup} from \"maplibre-gl\";\nimport List from \"@mui/material/List\";\nimport ListItem from \"@mui/material/ListItem\";\nimport ListItemText from \"@mui/material/ListItemText\";\nimport GeoJsonContext from \"./util/GeoJsonContext\";\nimport toGeoJSON from \"./gpxConverter\";\nimport useMediaQuery from \"@mui/material/useMediaQuery\";\n\nimport {v4 as uuidv4} from \"uuid\";\n\n/**\n * MlGPXViewer returns a dropzone and a button to load a GPX Track into the map.\n *\n * @component\n */\nconst MlGPXViewer = (props) => {\n const dataSource = useContext(GeoJsonContext);\n const componentId = useRef((props.idPrefix ? props.idPrefix : \"MlGpxViewer-\") + uuidv4());\n const mapContext = useContext(MapContext);\n const mapId = props.mapId;\n const initializedRef = useRef(false);\n const mapRef = useRef(null);\n const sourceName = \"import-source\";\n const layerNameLines = \"importer-layer-lines\";\n const layerNamePoints = \"importer-layer-points\";\n\n const [open, setIsOpen] = useState(false);\n const dropZone = useRef(null);\n const [zIndex, setZIndex] = useState(0);\n const [metaData, setMetaData] = useState([]);\n const fileupload = useRef(null);\n const mediaIsMobile = useMediaQuery(\"(max-width:900px)\");\n\n const popup = useRef(\n new Popup({\n closeButton: false,\n closeOnClick: true,\n })\n );\n\n useEffect(() => {\n let _componentId = componentId.current;\n let _popup = popup.current;\n return () => {\n // This is the cleanup function, it is called when this react component is removed from react-dom\n if (mapRef.current) {\n mapRef.current.cleanup(_componentId);\n\n mapRef.current.getCanvas().style.cursor = \"\";\n\n mapRef.current = null;\n }\n _popup.remove();\n };\n }, []);\n\n useEffect(() => {\n if (!mapContext.mapExists(mapId) || initializedRef.current) return;\n\n initializedRef.current = true;\n mapRef.current = mapContext.getMap(mapId);\n\n mapRef.current.addSource(\n sourceName,\n {\n type: \"geojson\",\n data: dataSource.data,\n },\n componentId.current\n );\n mapRef.current.addLayer(\n {\n id: layerNameLines,\n source: sourceName,\n type: \"line\",\n paint: {\n \"line-width\": 4,\n \"line-color\": \"rgba(212, 55, 23,0.5)\",\n },\n },\n props.insertBeforeLayer,\n componentId.current\n );\n mapRef.current.addLayer(\n {\n id: layerNamePoints,\n source: sourceName,\n type: \"circle\",\n paint: {\n \"circle-color\": \"rgba(72, 77, 99,0.5)\",\n \"circle-radius\": 7,\n },\n filter: [\"==\", \"$type\", \"Point\"],\n },\n props.insertBeforeLayer,\n componentId.current\n );\n\n [layerNameLines, layerNamePoints].forEach((layerName) => {\n mapRef.current.setLayoutProperty(layerName, \"visibility\", \"visible\");\n });\n mapRef.current.on(\"mouseenter\", layerNamePoints, (e) => {\n // Change the cursor style as a UI indicator.\n mapContext.getMap(props.mapId).getCanvas().style.cursor = \"pointer\";\n\n const coordinates = e.features[0].geometry.coordinates.slice();\n //const description = e.features[0].properties.desc;\n const name = e.features[0].properties.name;\n\n // Ensure that if the map is zoomed out such that multiple\n // copies of the feature are visible, the popup appears\n // over the copy being pointed to.\n while (Math.abs(e.lngLat.lng - coordinates[0]) > 180) {\n coordinates[0] += e.lngLat.lng > coordinates[0] ? 360 : -360;\n }\n\n // Populate the popup and set its coordinates\n\n // based on the feature found.\n popup.current.setLngLat(coordinates).setHTML(name).addTo(mapRef.current);\n });\n\n mapRef.current.on(\"mouseleave\", \"places\", function () {\n mapRef.current.getCanvas().style.cursor = \"\";\n popup.current.remove();\n });\n\n mapRef.current.setZoom(10);\n }, [mapContext.mapIds, mapContext, dataSource.data, mapId, props]);\n\n useEffect(() => {\n const dropZoneCurrent = dropZone.current;\n const raiseDropZoneAndStopDefault = (event) => {\n setZIndex(1000);\n stopDefault(event);\n };\n const lowerDropZone = () => {\n setZIndex(0);\n };\n const lowerDropZoneAndStopDefault = (event) => {\n setZIndex(0);\n stopDefault(event);\n };\n\n window.addEventListener(\"dragenter\", raiseDropZoneAndStopDefault);\n window.addEventListener(\"dragover\", stopDefault);\n\n dropZoneCurrent.addEventListener(\"dragleave\", lowerDropZone);\n\n window.addEventListener(\"drop\", lowerDropZoneAndStopDefault);\n\n return () => {\n window.removeEventListener(\"dragenter\", raiseDropZoneAndStopDefault);\n window.removeEventListener(\"dragover\", stopDefault);\n window.removeEventListener(\"drop\", stopDefault);\n dropZoneCurrent.removeEventListener(\"dragleave\", lowerDropZone);\n window.removeEventListener(\"drop\", (event) => lowerDropZoneAndStopDefault);\n };\n });\n\n const stopDefault = (event) => {\n event.preventDefault();\n event.stopPropagation();\n };\n\n useEffect(() => {\n if (!mapRef.current) return;\n\n const visibility = props.visible ? \"visible\" : \"none\";\n\n [layerNameLines, layerNamePoints].forEach((layerName) => {\n mapRef.current.setLayoutProperty(layerName, \"visibility\", visibility);\n });\n }, [props.visible]);\n\n const dropHandler = (event) => {\n event.preventDefault();\n\n if (event.dataTransfer.items) {\n if (event.dataTransfer.items.length > 1) {\n return false;\n }\n // If dropped items aren't files, reject them\n if (event.dataTransfer.items[0].kind === \"file\") {\n const reader = new FileReader();\n reader.onload = (payload) => {\n addGPXToMap(payload.currentTarget.result);\n };\n const file = event.dataTransfer.items[0].getAsFile();\n reader.readAsText(file);\n }\n } else {\n // Use DataTransfer interface to access the file(s)\n }\n };\n\n const addGPXToMap = (gpxAsString) => {\n if (!mapRef.current) return;\n try {\n setMetaData([]);\n const domParser = new DOMParser();\n const gpxDoc = domParser.parseFromString(gpxAsString, \"application/xml\");\n const metadata = gpxDoc.querySelector(\"metadata\");\n metadata.childNodes.forEach((node) => {\n let value = node.textContent;\n const title = node.nodeName;\n\n if (node.nodeName === \"link\") {\n value = node.getAttribute(\"href\");\n }\n if (!!value.trim().length) {\n const metaDatEntry = {\n title: title,\n value: value,\n id: new Date().getTime(),\n };\n setMetaData((prevState) => [...prevState, metaDatEntry]);\n }\n });\n const data = toGeoJSON.gpx(gpxDoc);\n dataSource.setData(data);\n mapRef.current.getSource(sourceName).setData(data);\n const bounds = bbox(data);\n mapRef.current.fitBounds(bounds);\n } catch (e) {\n console.log(e);\n }\n };\n\n const toogleDrawer = () => {\n setIsOpen((prevState) => !prevState);\n };\n\n const fileUploadOnChange = () => {\n const file = fileupload.current.files[0];\n if (!file) return false;\n const reader = new FileReader();\n reader.onload = (payload) => {\n addGPXToMap(payload.currentTarget.result);\n };\n\n reader.readAsText(file);\n };\n\n const manualUpload = () => {\n fileupload.current.click();\n };\n return (\n <>\n <div style={{\n position: \"fixed\",\n right: \"5px\",\n bottom: mediaIsMobile ? \"40px\" : \"25px\",\n display: \"flex\",\n flexDirection: \"column\",\n gap: \"5px\",\n zIndex: 1000,\n }}>\n <IconButton\n onClick={manualUpload}\n style={{\n backgroundColor: \"rgba(255,255,255,1)\",\n }}\n size=\"large\"\n >\n <input\n ref={fileupload}\n onChange={fileUploadOnChange}\n type=\"file\"\n id=\"input\"\n multiple\n style={{display: \"none\"}}\n ></input>\n <FileCopy/>\n </IconButton>\n <IconButton\n onClick={toogleDrawer}\n style={{\n backgroundColor: \"rgba(255,255,255,1)\",\n }}\n size=\"large\"\n >\n <InfoIcon/>\n </IconButton>\n </div>\n <Drawer variant=\"persistent\" anchor=\"left\" open={open}>\n <Typography\n variant=\"h6\"\n style={{\n textAlign: \"center\",\n padding: \"1em\",\n }}\n noWrap\n >\n Informationen zur Route\n </Typography>\n <Divider/>\n <List>\n {metaData.map((item) => (\n <ListItem key={`item--${item.id}`}>\n <ListItemText primary={item.value}/>\n </ListItem>\n ))}\n </List>\n </Drawer>\n <div\n onDrop={dropHandler}\n ref={dropZone}\n style={{\n position: \"absolute\",\n left: \"0\",\n top: \"0\",\n backgroundColor: \"rgba(255,255,255,0.5)\",\n width: \"100%\",\n height: \"100%\",\n zIndex: zIndex,\n }}\n >\n <Typography\n variant=\"h6\"\n style={{\n top: \"50%\",\n position: \"absolute\",\n left: \"50%\",\n msTransform: \"translate(-50%, -50%)\",\n transform: \" translate(-50%, -50%)\",\n }}\n noWrap\n >\n Gpx-Datei ablegen\n </Typography>\n </div>\n </>\n );\n};\n\nMlGPXViewer.defaultProps = {\n visible: true,\n};\n\nMlGPXViewer.propTypes = {\n /**\n * Id of the target MapLibre instance in mapContext\n */\n mapId: PropTypes.string,\n /**\n * Prefix of the component id this component uses when adding elements to the MapLibreGl-instance\n */\n idPrefix: PropTypes.string,\n /**\n * Sets the layers layout-property \"visibility\" to \"none\" if false or \"visible\" if true\n */\n visible: PropTypes.bool,\n /**\n * The layerId of an existing layer this layer should be rendered visually beneath\n * https://maplibre.org/maplibre-gl-js-docs/api/map/#map#addlayer - see \"beforeId\" property\n */\n insertBeforeLayer: PropTypes.string,\n};\n\nexport default MlGPXViewer;\n","import React, { useState } from \"react\";\nimport PropTypes from \"prop-types\";\nimport { GeoJsonContextProvider } from \"./GeoJsonContext\";\n\nconst GeoJsonProvider = ({ children }) => {\n const [data, setData] = useState({\n type: \"FeatureCollection\",\n features: [],\n });\n const getEmptyFeatureCollection = () => {\n return {\n type: \"FeatureCollection\",\n features: [],\n };\n };\n const value = {\n data,\n setData,\n getEmptyFeatureCollection,\n };\n\n return <GeoJsonContextProvider value={value}>{children}</GeoJsonContextProvider>;\n};\n\nGeoJsonProvider.propTypes = {\n children: PropTypes.node.isRequired,\n};\n\nexport default GeoJsonProvider;\n","import React, { useCallback, useRef, useContext, useEffect } from \"react\";\nimport { MapContext } from \"@mapcomponents/react-core\";\nimport GeoJsonContext from \"../MlGPXViewer/util/GeoJsonContext\";\nimport { polygon, lineString } from \"@turf/helpers\";\nimport { distance, lineOffset } from \"@turf/turf\";\nimport { v4 as uuidv4 } from \"uuid\";\nimport PropTypes from \"prop-types\";\n\n/**\n * MlSpatialElevationProfile returns a Button that will add a standard OSM tile layer to the maplibre-gl instance.\n *\n * @component\n */\nconst MlSpatialElevationProfile = (props) => {\n const mapContext = useContext(MapContext);\n\n const componentId = useRef(\n (props.idPrefix ? props.idPrefix : \"MlSpatialElevationProfile-\") + uuidv4()\n );\n const mapRef = useRef(null);\n const initializedRef = useRef(false);\n\n const dataSource = useContext(GeoJsonContext);\n const sourceName = useRef(\"elevationprofile-\" + uuidv4());\n const layerName = useRef(\"elevationprofile-layer-\" + uuidv4());\n\n const createStep = useCallback(\n (x, y, z, x2, y2) => {\n //const summand = 0.0002;\n const line = lineString([\n [x, y],\n [x2, y2],\n ]);\n const offsetLine = lineOffset(line, 5, { units: \"meters\" });\n const x3 = offsetLine.geometry.coordinates[0][0];\n const y3 = offsetLine.geometry.coordinates[0][1];\n const x4 = offsetLine.geometry.coordinates[1][0];\n const y4 = offsetLine.geometry.coordinates[1][1];\n\n return polygon(\n [\n [\n [x, y],\n [x2, y2],\n\n [x4, y4],\n [x3, y3],\n [x, y],\n ],\n ],\n { height: z * props.elevationFactor }\n );\n },\n [props.elevationFactor]\n );\n\n useEffect(() => {\n let _componentId = componentId.current;\n return () => {\n // This is the cleanup function, it is called when this react component is removed from react-dom\n if (mapRef.current) {\n mapRef.current.cleanup(_componentId);\n\n mapRef.current = null;\n }\n };\n }, []);\n\n useEffect(() => {\n if (!mapContext.mapExists(props.mapId) || initializedRef.current) return;\n\n initializedRef.current = true;\n mapRef.current = mapContext.getMap(props.mapId);\n\n mapRef.current.addSource(\n sourceName.current,\n {\n type: \"geojson\",\n data: dataSource.data,\n },\n componentId.current\n );\n mapRef.current.addLayer(\n {\n id: layerName.current,\n source: sourceName.current,\n type: \"fill-extrusion\",\n paint: {\n \"fill-extrusion-height\": [\"get\", \"height\"],\n \"fill-extrusion-opacity\": 0.9,\n \"fill-extrusion-color\": [\n \"interpolate\",\n [\"linear\"],\n [\"get\", \"height\"],\n 0,\n \"rgba(0, 0, 255, 0)\",\n 0.1,\n \"royalblue\",\n 0.3,\n \"cyan\",\n 0.5,\n \"lime\",\n 0.7,\n \"yellow\",\n 1,\n \"yellow\",\n ],\n },\n },\n props.insertBeforeLayer,\n componentId.current\n );\n }, [\n mapContext.mapIds,\n props.insertBeforeLayer,\n props.mapId,\n dataSource,\n mapContext,\n ]);\n\n useEffect(() => {\n if (!mapRef.current || !mapRef.current.getLayer(layerName.current)) return;\n const { data } = dataSource;\n if (!data || !data.features) return;\n\n const line = data.features.find((element) => {\n return element.geometry.type === \"LineString\";\n });\n if (!line || !line.geometry) return;\n const heights = line.geometry.coordinates.map((coordinate, index) => {\n return coordinate[2];\n });\n\n const min = Math.min(...heights);\n\n let max = Math.max(...heights) - min;\n\n max = max === 0 ? 1 : max;\n\n mapRef.current.setPaintProperty(layerName.current, \"fill-extrusion-color\", [\n \"interpolate\",\n [\"linear\"],\n [\"get\", \"height\"],\n 0,\n \"rgb(0,255,55)\",\n max * props.elevationFactor,\n \"rgb(255,0,0)\",\n ]);\n const lerp = (x, y, a) => x * (1 - a) + y * a;\n const points = [];\n\n line.geometry.coordinates.forEach((coordinate, index) => {\n //const point = createPoint(coordinate[0],coordinate[1],coordinate[2]-min);\n //points.push(point);\n if (line.geometry.coordinates[index + 1]) {\n const wayLength = distance(\n [coordinate[0], coordinate[1]],\n [\n line.geometry.coordinates[index + 1][0],\n line.geometry.coordinates[index + 1][1],\n ],\n { units: \"kilometers\" }\n );\n let listLength = ~~((wayLength * 1000) / 10);\n listLength = listLength < 1 ? 1 : listLength;\n for (let i = 0; i < listLength; i++) {\n const x = lerp(\n line.geometry.coordinates[index][0],\n line.geometry.coordinates[index + 1][0],\n i / listLength\n );\n const y = lerp(\n line.geometry.coordinates[index][1],\n line.geometry.coordinates[index + 1][1],\n i / listLength\n );\n const z = lerp(\n line.geometry.coordinates[index][2] - min,\n line.geometry.coordinates[index + 1][2] - min,\n i / listLength\n );\n\n const x2 = lerp(\n line.geometry.coordinates[index][0],\n line.geometry.coordinates[index + 1][0],\n (i + 1) / listLength\n );\n const y2 = lerp(\n line.geometry.coordinates[index][1],\n line.geometry.coordinates[index + 1][1],\n (i + 1) / listLength\n );\n\n const point = createStep(x, y, z, x2, y2);\n points.push(point);\n }\n }\n });\n\n const newData = dataSource.getEmptyFeatureCollection();\n newData.features = points;\n\n mapRef.current.getSource(sourceName.current)?.setData(newData);\n }, [dataSource.data, createStep, dataSource, props.elevationFactor, mapContext]);\n\n return <></>;\n};\n\nMlSpatialElevationProfile.defaultProps = {\n elevationFactor: 1,\n};\n\nMlSpatialElevationProfile.propTypes = {\n /**\n * Id of the target MapLibre instance in mapContext\n */\n mapId: PropTypes.string,\n /**\n * Prefix of the component id this component uses when adding elements to the MapLibreGl-instance\n */\n idPrefix: PropTypes.string,\n /**\n * Number describes the factor of the height of the elevation\n */\n elevationFactor: PropTypes.number,\n /**\n * The layerId of an existing layer this layer should be rendered visually beneath\n * https://maplibre.org/maplibre-gl-js-docs/api/map/#map#addlayer - see \"beforeId\" property\n */\n insertBeforeLayer: PropTypes.string,\n}\n\nexport default MlSpatialElevationProfile;\n"],"names":["MapLibreGlWrapper","props","self","registeredElements","baseLayers","firstSymbolLayer","undefined","eventHandlers","layerchange","viewportchange","wrapper","on","eventName","handler","options","componentId","push","_arguments","initRegisteredElements","wrapperEvents","off","filter","item","Object","is","fire","context","scope","window","event","Event","data","forEach","call","layerState","layerStateString","oldLayerStateStrings","buildLayerObject","layer","id","type","visible","visibility","baseLayer","indexOf","buildLayerObjects","style","_order","map","layerId","_layers","n","refreshLayerState","JSON","stringify","viewportState","viewportStateString","oldViewportStateString","getViewport","getCenter","center","lng","lat","rest","zoom","getZoom","bearing","getBearing","pitch","getPitch","refreshViewport","force","layers","sources","images","events","controls","addLayer","beforeId","source","addSource","sourceId","addImage","image","ref","listener","addControl","control","position","cleanup","getLayer","removeLayer","getSource","removeSource","hasImage","removeImage","removeControl","updatingStyleFunctions","_update","styleFunctions","addNativeMaplibreFunctionsAndProps","keys","__proto__","missingFunctions","initializeMapLibre","mapOptions","fetch","then","response","ok","json","Error","styleJson","catch","error","console","log","maplibregl","Map","onReady","MapLibreMap","useRef","mapContainer","mapContext","useContext","MapContext","mapContextRef","mapIdRef","mapId","useEffect","current","_mapContext","removeMap","remove","container","once","registerMap","setMap","React","defaultProps","accessToken","propTypes","PropTypes","string","object","useMapState","initializedRef","mapRef","useState","viewport","setViewport","viewportRef","setLayers","layersRef","uuidv4","layerIdFilter","useCallback","includeBaseLayers","matchLayerIds","RegExp","test","includes","_layerState","_layerStateString","_componentId","mapExists","getMap","watch","mapIds","shape","bool","oneOfType","instanceOf","matchSourceIds","useMap","mapState","mapIsReady","setMapIsReady","waitForLayer","layerFound","MlComponentTemplate","mapHook","insertBeforeLayer","setCenter","MlFillExtrusionLayer","showLayer","setShowLayer","idPrefix","lastLabelLayerId","sourceLayer","minzoom","minZoom","paint","setLayoutProperty","property","number","_showNextTransitionSegment","transitionInProgressRef","transitionGeojsonDataRef","transitionGeojsonCommonDataRef","currentTransitionStepRef","msPerStep","transitionTimeoutRef","setTimeout","arguments","newData","length","geojson","turf","geometry","coordinates","setData","onTransitionFrame","onTransitionEnd","_transitionToGeojson","newGeojson","oldGeojsonRef","transitionCoordinatesShort","transitionCoordinatesLong","targetCoordinates","srcCoordinates","sourceGeojson","properties","targetGeojson","longerGeojson","shorterGeojson","reverseOrder","slice","i","len","transitionSteps","transitionTime","srcCoordinatesDistance","Math","round","targetCoordinatesDistance","transitionDistance","srcCoordinatesShare","srcTransitionSteps","srcPerStepDistance","targetCoordinatesShare","targetTransitionSteps","targetPerStepDistance","tmpLinestring","tmpChunks","features","reverse","loopStepDistance","getDefaultPaintPropsByType","defaultPaintOverrides","fill","line","circle","mapGeometryTypesToLayerTypes","Position","Point","MultiPoint","LineString","MultiLineString","Polygon","MultiPolygon","GeometryCollection","getDefaulLayerTypeByGeometry","legalLayerTypes","MlGeoJsonLayer","layerTypeRef","clearTimeout","key","layout","_paint","setPaintProperty","transitionToGeojson","createLayer","onHover","onClick","onLeave","func","MlImageMarkerLayer","layerInitializedRef","imageIdRef","imageId","Date","getTime","tmpOptions","imgSrc","loadImage","MlFollowGps","isFollowed","setIsFollowed","geoJson","setGeoJson","watchIdRef","locationAccessDenied","setLocationAccessDenied","accuracyGeoJson","setAccuracyGeoJson","navigator","geolocation","clearWatch","getLocationSuccess","pos","coords","longitude","latitude","geoJsonPoint","point","accuracy","getLocationError","err","watchPosition","accuracyPaint","markerLayout","markerImage","marker","zIndex","color","onColor","offColor","fontSize","minWidth","minHeight","width","height","backgroundColor","borderRadius","margin","nmMap","street","place","zip","state","nmConverter","nmAddress","addressArr","some","element","hasOwnProperty","join","toPixels","conversionFactor","createPdf","locationValue","setLoading","actualPixelRatio","devicePixelRatio","hidden","document","createElement","className","body","appendChild","renderMap","interactive","preserveDrawingBuffer","fadeDuration","attributionControl","getStyle","name","src","setStyle","pdf","jsPDF","orientation","unit","compress","defineProperty","get","offsetX","offsetY","marginTop","marginBottom","innerMargin","logo","textBuffer","lineHeight","text","address","textChunksSeperator","split","textChunks","chunk","limitChunks","match","getCanvas","toDataURL","setFillColor","rect","setFontSize","internal","pageSize","infoBoxSize","trim","setProperties","title","subject","creator","author","save","parentNode","removeChild","MlCreatePdfButton","NeedleButton","NeedleContainer","RotateButton","MlNavigationCompass","setBearing","css","top","border","background","display","justifyContent","transform","backgroundStyle","rotateRightStyle","RotateRightIcon","abs","needleStyle","NeedleIcon","rotateLeftStyle","RotateLeftIcon","MlNavigationTools","setPitch","mediaIsMobile","useMediaQuery","buttonStyle","zoomIn","_zoom","_maxZoom","easeTo","zoomOut","_minZoom","adjustPitch","targetPitch","moveToCurrentLocation","getCurrentPosition","location","right","bottom","flexDirection","marginLeft","boxShadow","fontWeight","Button","padding","MlLayer","layerPaintConfRef","layerLayoutConfRef","layoutString","paintString","MlOsmLayer","sourceIdRef","layerIdRef","tileSize","sourceOptions","maxzoom","layerOptions","MlVectorTileLayer","layerName","sourceName","idSuffixRef","layerIdsRef","layerPaintConfsRef","layerLayoutConfsRef","tiles","url","attribution","layerPaintConfString","paintKey","layerLayoutConfString","layoutKey","urlParameters","bbox","format","service","version","request","srs","styles","maxZoom","MlWmsLayer","_propsUrlParams","_wmsUrl","_urlParamsFromUrl","URLSearchParams","urlParamsObj","fromEntries","urlParams","urlParamsStr","decodeURIComponent","toString","replace","isRequired","classes","CONTROL_BASE","CONTROL_PREFIX","CONTROL_BUTTON","CONTROL_BUTTON_LINE","CONTROL_BUTTON_POLYGON","CONTROL_BUTTON_POINT","CONTROL_BUTTON_TRASH","CONTROL_BUTTON_COMBINE_FEATURES","CONTROL_BUTTON_UNCOMBINE_FEATURES","CONTROL_GROUP","ATTRIBUTION","ACTIVE_BUTTON","BOX_SELECT","cursors","ADD","MOVE","DRAG","POINTER","NONE","types","POLYGON","LINE","POINT","geojsonTypes","FEATURE","LINE_STRING","FEATURE_COLLECTION","MULTI_PREFIX","MULTI_POINT","MULTI_LINE_STRING","MULTI_POLYGON","CREATE","DELETE","UPDATE","SELECTION_CHANGE","MODE_CHANGE","ACTIONABLE","RENDER","COMBINE_FEATURES","UNCOMBINE_FEATURES","updateActions","CHANGE_COORDINATES","meta","MIDPOINT","VERTEX","activeStates","ACTIVE","INACTIVE","LAT_MIN","LAT_RENDERED_MIN","LAT_MAX","LAT_RENDERED_MAX","LNG_MIN","LNG_MAX","isOfMetaType","e","featureTarget","isShiftMousedown","originalEvent","shiftKey","button","isActiveFeature","active","Constants","isInactiveFeature","noTarget","isFeature","isVertex","isShiftDown","isEscapeKey","keyCode","isEnterKey","doubleClickZoom","enable","ctx","_ctx","store","getInitialConfigValue","disable","isEventAtCoordinates","lngLat","create_vertex","parentId","path","selected","parent","coord_path","CustomPolygonMode","onSetup","polygon","newFeature","addFeature","clearSelectedFeatures","updateUIClasses","mouse","activateUIButton","setActionableState","trash","currentVertexPosition","clickAnywhere","changeMode","featureIds","updateCoordinate","toGeoJSON","clickOnVertex","onMouseMove","CommonSelectors","onTap","onKeyUp","deleteFeature","silent","onStop","getFeature","removeCoordinate","isValid","toDisplayFeatures","isActivePolygon","coordinateCount","createVertex","endPos","lineCoordinates","onTrash","mouseEventPoint","mouseEvent","getBoundingClientRect","clientX","left","clientLeft","clientY","clientTop","create_midpoint","startVertex","endVertex","startCoord","endCoord","mid","createSupplementaryPoints","basePath","featureId","supplementaryPoints","isSelectedPath","lineIndex","processLine","String","processMultiGeometry","lineBasePath","firstPointString","lastVertex","pointIndex","pointPath","vertex","midpoints","midpoint","createMidpoint","stringifiedPoint","selectedPaths","subType","subCoordinates","index","subFeature","concat","StringSet","items","_items","_nums","_length","l","add","prototype","x","has","delete","values","k","v","parse","sort","a","b","clear","constrain_feature_movement","geojsonFeatures","delta","northInnerEdge","southInnerEdge","northOuterEdge","southOuterEdge","westEdge","eastEdge","feature","bounds","extent","featureSouthEdge","featureNorthEdge","featureWestEdge","featureEastEdge","constrainedDelta","ceil","move_features","constrainFeatureMovement","currentCoordinates","getCoordinates","moveCoordinate","coord","moveRing","ring","moveMultiPolygon","multi","nextCoordinates","incomingCoords","CustomSelectMode","opts","dragMoveLocation","boxSelectStartLocation","boxSelectElement","boxSelecting","canBoxSelect","dragMoving","canDragMove","initiallySelectedFeatureIds","setSelected","fireActionable","combineFeatures","uncombineFeatures","fireUpdate","action","getSelected","f","selectedFeatures","multiFeatures","isInstanceOf","featureType","getUniqueIds","allFeatures","ids","s","reduce","memo","stopExtendedInteractions","dragPan","onMouseOut","clickOnFeature","wasSelected","getSelectedIds","doRender","coordPath","startPos","startOnActiveFeature","isShiftClick","selectedFeatureIds","isFeatureSelected","isSelected","deselect","select","onMouseDown","drawConfig","boxSelect","startBoxSelect","getContainer","onTouchStart","onDrag","dragMove","whileBoxSelect","classList","minX","min","maxX","max","minY","y","maxY","translateValue","WebkitTransform","stopPropagation","moveFeatures","onMouseUp","featuresInBox","featuresAt","idsToSelect","onCombineFeatures","featuresCombined","subcoords","multiFeature","createdFeatures","deletedFeatures","onUncombineFeatures","featuresUncombined","getFeatures","drawUtils","getMatchingVertices","decimals","matchingVertices","v_lng","toFixed","v_lat","m","getDrawInstance","_controls","defaultMode","isMidpoint","DirectSelect","selectedCoordPaths","startDragging","stopDragging","onVertex","about","selectedIndex","getAll","_geometry","groupMove_vertices","selectedCoordinates","pathsToCoordinates","setSelectedCoordinates","onMidpoint","addCoordinate","paths","feature_id","onFeature","dragFeature","dragVertex","selectedCoords","getCoordinate","selectedCoordPoints","coord_path_m","coord_m","clickNoTarget","clickInactive","clickActiveFeature","clearSelectedCoordinates","changed","TypeError","localeCompare","numeric","noCoords","onTouchEnd","MlFeatureEditor","draw","onChangeRef","onChange","drawToolsInitialized","setDrawToolsInitialized","drawToolsReady","setDrawToolsReady","mouseUpTrigger","setMouseUpTrigger","modeChangeHandler","mode","mouseUpHandler","random","MapboxDraw","displayControlsDefault","modes","assign","custom_polygon","custom_select","custom_direct_select","CustomDirectSelectMode","set","currentFeatureCollection","MlBasicComponent","MlLayerMagnify","syncMoveInitializedRef","syncCleanupFunctionRef","swipeX","setSwipeX","swipeXRef","swipeY","setSwipeY","swipeYRef","magnifierRadiusRef","magnifierRadius","setMagnifierRadius","map1Id","map2Id","onResize","onMove","addEventListener","_onResize","removeEventListener","maps","touches","swipeX_tmp","swipeY_tmp","clipPath","syncMove","clientWidth","clientHeight","floor","onDown","onWheel","evCopy","WheelEvent","dispatchEvent","cursor","textAlign","userSelect","MlLayerSwipe","clipA","clip","GeoJsonContext","createContext","GeoJsonContextProvider","Provider","removeSpace","trimSpace","splitSpace","okhash","h","charCodeAt","getElementsByTagName","attr","getAttribute","attrf","parseFloat","get1","norm","el","normalize","numarray","j","o","nodeVal","textContent","getMulti","ys","extend","coord1","coordPair","ll","ele","heartRate","time","isNaN","fc","serializer","XMLSerializer","isNodeEnv","process","browser","isTitaniumEnv","Titanium","exports","require","xml2str","str","xml","serializeToString","t","kml","doc","gj","styleIndex","styleByHash","styleMapIndex","geotypes","placemarks","styleMaps","hash","pairs","pairsMap","getPlacemark","kmlColor","opacity","substr","parseInt","gxCoord","gxCoords","root","elems","times","timeElems","getGeometry","geomNode","geomNodes","geoms","coordTimes","rings","track","geomsAndTimes","styleUrl","description","timeSpan","timeStamp","extendedData","lineStyle","polyStyle","styleHash","styleMapHash","normal","iconStyle","icon","href","begin","end","timespan","timestamp","linestyles","stroke","polystyles","pcolor","popacity","outline","datas","simpleDatas","geometries","gpx","tracks","routes","waypoints","getTrack","getRoute","getPoint","initializeArray","arr","size","getPoints","node","pointname","pts","heartRates","c","segments","getProperties","getLineStyle","prop","routeObj","extensions","links","link","MlGPXViewer","dataSource","layerNameLines","layerNamePoints","open","setIsOpen","dropZone","setZIndex","metaData","setMetaData","fileupload","popup","Popup","closeButton","closeOnClick","_popup","setLngLat","setHTML","addTo","setZoom","dropZoneCurrent","raiseDropZoneAndStopDefault","stopDefault","lowerDropZone","lowerDropZoneAndStopDefault","preventDefault","dropHandler","dataTransfer","kind","reader","FileReader","onload","payload","addGPXToMap","currentTarget","result","file","getAsFile","readAsText","gpxAsString","domParser","DOMParser","gpxDoc","parseFromString","metadata","querySelector","childNodes","value","nodeName","metaDatEntry","prevState","fitBounds","toogleDrawer","fileUploadOnChange","files","manualUpload","click","gap","msTransform","GeoJsonProvider","children","getEmptyFeatureCollection","MlSpatialElevationProfile","createStep","z","x2","y2","lineString","offsetLine","lineOffset","units","x3","y3","x4","y4","elevationFactor","find","heights","coordinate","lerp","points","wayLength","distance","listLength"],"mappings":"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"}
1
+ {"version":3,"file":"index.esm.js","sources":["../src/components/MapLibreMap/lib/MapLibreGlWrapper.js","../src/components/MapLibreMap/MapLibreMap.js","../src/hooks/useMapState.js","../src/hooks/useMap.js","../src/components/MlComponentTemplate/MlComponentTemplate.js","../src/components/MlFillExtrusionLayer/MlFillExtrusionLayer.js","../src/components/MlGeoJsonLayer/util/transitionFunctions.js","../src/components/MlGeoJsonLayer/util/getDefaultPaintPropsByType.js","../src/components/MlGeoJsonLayer/util/getDefaultLayerTypeByGeometry.js","../src/components/MlGeoJsonLayer/MlGeoJsonLayer.js","../src/components/MlImageMarkerLayer/MlImageMarkerLayer.js","../src/components/MlFollowGps/assets/marker.png","../src/components/MlFollowGps/MlFollowGps.js","../src/components/MlCreatePdfButton/lib/nominatimMap.js","../src/components/MlCreatePdfButton/lib/createPdf.js","../src/components/MlCreatePdfButton/MlCreatePdfButton.js","../src/components/MlNavigationCompass/MlNavigationCompass.js","../src/components/MlNavigationTools/MlNavigationTools.js","../src/components/MlLayer/MlLayer.js","../src/components/MlOsmLayer/MlOsmLayer.js","../src/components/MlVectorTileLayer/MlVectorTileLayer.js","../src/components/MlWmsLayer/MlWmsLayer.js","../src/components/MlFeatureEditor/lib/constants.js","../src/components/MlFeatureEditor/lib/common_selectors.js","../src/components/MlFeatureEditor/lib/double_click_zoom.js","../src/components/MlFeatureEditor/lib/is_event_at_coordinates.js","../src/components/MlFeatureEditor/lib/create_vertex.js","../src/components/MlFeatureEditor/custom-polygon-mode.js","../src/components/MlFeatureEditor/lib/mouse_event_point.js","../src/components/MlFeatureEditor/lib/create_midpoint.js","../src/components/MlFeatureEditor/lib/create_supplementary_points.js","../src/components/MlFeatureEditor/lib/string_set.js","../src/components/MlFeatureEditor/lib/constrain_feature_movement.js","../src/components/MlFeatureEditor/lib/move_features.js","../src/components/MlFeatureEditor/custom-select-mode.js","../src/components/MlFeatureEditor/lib/utils.js","../src/components/MlFeatureEditor/custom-direct-select-mode.js","../src/components/MlFeatureEditor/MlFeatureEditor.js","../src/components/MlBasicComponent.js","../src/components/MlLayerMagnify/MlLayerMagnify.js","../src/components/MlLayerSwipe/MlLayerSwipe.js","../src/components/MlGPXViewer/util/GeoJsonContext.js","../src/components/MlGPXViewer/gpxConverter.js","../src/components/MlGPXViewer/MlGPXViewer.js","../src/components/MlGPXViewer/util/GeoJsonProvider.js","../src/components/MlSpatialElevationProfile/MlSpatialElevationProfile.js"],"sourcesContent":["// @ts-ignore: TS export Problem to be fixed upstream\nimport maplibregl from \"maplibre-gl/dist/maplibre-gl\";\n\n/**\n * Creates a MapLibre-gl-js instance and offers all of the native MapLibre functions and properties as well as additional functionality such as element registration & cleanup and more events.\n *\n * @param {object} props\n *\n * @class\n */\nconst MapLibreGlWrapper = function (props) {\n // closure variable to safely point to the object context of the current MapLibreGlWrapper instance\n let self = this;\n\n // element registration and cleanup on a component level is experimental\n this.registeredElements = {};\n\n // array of base layer ids, all layers that have been added by the style passed to the MapLibreGl coonstructor\n this.baseLayers = [];\n\n // layer id of the first symbol layer\n this.firstSymbolLayer = undefined;\n\n // event handlers registered in MapLibreGlWrapper\n this.eventHandlers = {\n layerchange: [],\n viewportchange: [],\n };\n\n // functions and properties provided by the wrapper\n // Add new functions and properties introduced by the wrapper to this object to prevent collisions due to future MapLibre API changes\n this.wrapper = {\n /**\n * Subscribe the given event handler to an event\n *\n * @param {string} eventName\n * @param {function} handler\n * @param {object} options\n * @param {string} componentId\n * @returns {undefined}\n */\n on: (eventName, handler, options, componentId) => {\n if (!self.eventHandlers[eventName]) return;\n\n if (typeof options === \"string\") {\n componentId = options;\n options = {};\n }\n\n self.eventHandlers[eventName].push({ handler, options });\n\n let _arguments = [eventName, handler];\n if (componentId && typeof componentId === \"string\") {\n self.initRegisteredElements(componentId);\n self.registeredElements[componentId].wrapperEvents.push(_arguments);\n }\n },\n /**\n * Unsubscribes the given event handler from an event\n *\n * @param {string} eventName\n * @param {function} handler\n * @returns {undefined}\n */\n off: (eventName, handler) => {\n if (!self.eventHandlers[eventName]) return;\n\n self.eventHandlers[eventName] = self.eventHandlers[eventName].filter((item) => {\n if (!Object.is(item.handler, handler)) {\n return item;\n }\n return false;\n });\n },\n /**\n * Calls all event handlers that have been subscribed to the given eventName\n *\n * @param {string} eventName\n * @param {object} context\n * @returns {undefined}\n */\n fire: (eventName, context) => {\n if (!self.eventHandlers[eventName]) return;\n\n var scope = context || window;\n let event = new Event(eventName);\n event.data = self;\n\n self.eventHandlers[eventName].forEach(function (item) {\n item.handler.call(scope, event);\n });\n },\n /**\n * Array containing an object for each layer in the MapLibre instance providing information on visibility, loading state, order, paint & layout properties\n */\n layerState: [],\n /**\n * Maps layerIds to layerState in JSON string form for quick deep comparisons\n */\n layerStateString: \"\",\n /**\n * Previous Version of layerStateString\n */\n oldLayerStateStrings: {},\n /**\n * Builds the layer info object for a given layer id\n *\n * @param {string} layer\n * @returns object\n */\n buildLayerObject: (layer) => {\n //if (self.baseLayers.indexOf(layer.id) === -1) {\n //let paint = {};\n //let values = layer.paint?._values;\n //Object.keys(values || {}).map((propName) => {\n // paint[propName] =\n // typeof values[propName].value !== \"undefined\"\n // ? values[propName].value.value\n // : values[propName];\n //});\n //let layout = {};\n //values = layer.layout?._values;\n //Object.keys(values || {}).map((propName) => {\n // layout[propName] =\n // typeof values[propName].value !== \"undefined\"\n // ? values[propName].value.value\n // : values[propName];\n //});\n return {\n id: layer.id,\n type: layer.type,\n visible: layer.visibility === \"none\" ? false : true,\n baseLayer: self.baseLayers.indexOf(layer.id) !== -1,\n //paint,\n //layout,\n //filter: layers[layerId].filter,\n //layout: layers[layerId].layout,\n //maxzoom: layers[layerId].maxzoom,\n //metadata: layers[layerId].metadata,\n //minzoom: layers[layerId].minzoom,\n //paint: layers[layerId].paint.get(),\n //source: layers[layerId].source,\n //sourceLayer: layers[layerId].sourceLayer,\n };\n //}\n },\n /**\n * Returns an array of layer state info objects for all layers in the MapLibre instance\n *\n * @returns array\n */\n buildLayerObjects: () => {\n return self.style._order\n .map((layerId) => {\n return self.wrapper.buildLayerObject(self.map.style._layers[layerId]);\n })\n .filter((n) => n);\n },\n /**\n * Updates layer state info objects\n */\n refreshLayerState: () => {\n self.wrapper.layerState = self.wrapper.buildLayerObjects();\n if (JSON.stringify(self.wrapper.layerState) !== self.wrapper.layerStateString) {\n self.wrapper.fire(\"layerchange\");\n self.wrapper.layerStateString = JSON.stringify(self.wrapper.layerState);\n }\n },\n /**\n * Object containing information on the current viewport state\n */\n viewportState: {},\n /**\n * The same data as viewportState in JSON string form for quick deep comparisons\n */\n viewportStateString: \"{}\",\n /**\n * Previous version of viewportStateString\n */\n oldViewportStateString: \"{}\",\n getViewport: () =>\n typeof self.map.getCenter === \"function\"\n ? {\n center: (({ lng, lat, ...rest }) => ({ lng, lat }))(self.map.getCenter()),\n zoom: self.map.getZoom(),\n bearing: self.map.getBearing(),\n pitch: self.map.getPitch(),\n }\n : {},\n refreshViewport: () => {\n self.wrapper.viewportState = self.wrapper.getViewport();\n },\n };\n\n /**\n * Initializes an empty registered elements object for the given componentId\n *\n * @param {string} componentId\n * @param {boolean} force\n */\n this.initRegisteredElements = (componentId, force) => {\n if (\n typeof self.registeredElements[componentId] === \"undefined\" ||\n (force !== \"undefined\" && force)\n ) {\n self.registeredElements[componentId] = {\n layers: [],\n sources: [],\n images: [],\n events: [],\n controls: [],\n wrapperEvents: [],\n };\n }\n };\n\n /**\n * Overrides MapLibre-gl-js addLayer function providing an additional componentId parameter for the wrapper element registration.\n *\n * @param {object} layer\n * @param {string} beforeId\n * @param {string} componentId\n * @returns {undefined}\n */\n this.addLayer = (layer, beforeId, componentId) => {\n if (!self.map.style) {\n return;\n }\n if (componentId && typeof componentId === \"string\" && typeof layer.id !== \"undefined\") {\n self.initRegisteredElements(componentId);\n self.registeredElements[componentId].layers.push(layer.id);\n\n if (typeof layer.source === \"object\") {\n self.registeredElements[componentId].sources.push(layer.id);\n }\n }\n\n self.map.addLayer(layer, beforeId);\n };\n\n /**\n * Overrides MapLibre-gl-js addSource function providing an additional componentId parameter for the wrapper element registration.\n *\n * @param {string} sourceId\n * @param {object} source\n * @param {object} options\n * @param {string} componentId\n * @returns {undefined}\n */\n this.addSource = (sourceId, source, options, componentId) => {\n if (!self.map.style) {\n return;\n }\n if (typeof options === \"string\" && typeof componentId === \"undefined\") {\n return self.addSource.call(self, sourceId, source, undefined, options);\n }\n if (componentId && typeof componentId === \"string\" && typeof sourceId !== \"undefined\") {\n self.initRegisteredElements(componentId);\n self.registeredElements[componentId].sources.push(sourceId);\n }\n\n self.map.addSource(sourceId, source, options);\n };\n\n /**\n * Overrides MapLibre-gl-js addImage function providing an additional componentId parameter for the wrapper element registration.\n *\n * @param {string} id\n * @param {*} image\n * @param {*} ref\n * @param {string} componentId\n * @returns {undefined}\n */\n this.addImage = (id, image, ref, componentId) => {\n if (!self.map.style) {\n return;\n }\n if (typeof ref === \"string\" && typeof componentId === \"undefined\") {\n return self.addImage.call(self, id, image, undefined, ref);\n }\n if (componentId && typeof componentId === \"string\" && typeof id !== \"undefined\") {\n self.initRegisteredElements(componentId);\n self.registeredElements[componentId].images.push(id);\n }\n\n self.map.addImage(id, image, ref);\n };\n\n /**\n * Overrides MapLibre-gl-js on function providing an additional componentId parameter for the wrapper element registration.\n *\n * @param {string} type\n * @param {string} layerId\n * @param {function} listener\n * @param {string} componentId\n * @returns {undefined}\n */\n this.on = (type, layerId, listener, componentId) => {\n if (typeof listener === \"string\" && typeof layerId === \"function\") {\n return self.on.call(self, type, undefined, layerId, listener);\n }\n\n let _arguments = [type, layerId, listener];\n if (!layerId) {\n _arguments = [type, listener];\n }\n\n if (componentId && typeof componentId === \"string\") {\n self.initRegisteredElements(componentId);\n self.registeredElements[componentId].events.push(_arguments);\n }\n\n self.map.on(..._arguments);\n };\n\n /**\n * Overrides MapLibre-gl-js addControl function providing an additional componentId parameter for the wrapper element registration.\n *\n * @param {object} control\n * @param {string} position\n * @param {string} componentId\n */\n this.addControl = (control, position, componentId) => {\n if (componentId && typeof componentId === \"string\") {\n self.initRegisteredElements(componentId);\n self.registeredElements[componentId].controls.push(control);\n }\n\n self.map.addControl(control, position);\n };\n\n /**\n * Removes anything that has been added to the maplibre instance referenced with componentId\n *\n * @param {string} componentId\n */\n this.cleanup = (componentId) => {\n if (self.map.style && typeof self.registeredElements[componentId] !== \"undefined\") {\n // cleanup layers\n self.registeredElements[componentId].layers.forEach((item) => {\n if (self.map.style.getLayer(item)) {\n self.map.style.removeLayer(item);\n }\n });\n\n // cleanup sources\n self.registeredElements[componentId].sources.forEach((item) => {\n if (self.map.style.getSource(item)) {\n self.map.style.removeSource(item);\n }\n });\n\n // cleanup images\n self.registeredElements[componentId].images.forEach((item) => {\n if (self.map.hasImage(item)) {\n self.map.style.removeImage(item);\n }\n });\n\n // cleanup events\n self.registeredElements[componentId].events.forEach((item) => {\n self.map.off(...item);\n });\n\n // cleanup controls\n self.registeredElements[componentId].controls.forEach((item) => {\n self.map.removeControl(item);\n });\n\n // cleanup wrapper events\n self.registeredElements[componentId].wrapperEvents.forEach((item) => {\n self.wrapper.off(...item);\n });\n\n self.initRegisteredElements(componentId, true);\n }\n };\n\n // add style prop functions that require map._update to be called afterwards\n let updatingStyleFunctions = [\n \"moveLayer\",\n \"removeLayer\",\n \"removeSource\",\n \"setPaintProperty\",\n \"setLayoutProperty\",\n ];\n updatingStyleFunctions.forEach((item) => {\n this[item] = (...props) => {\n if (self.map && this.map.style && typeof self.map.style[item] === \"function\") {\n self.map.style[item](...props);\n }\n return self.map._update ? self.map._update(true) : undefined;\n };\n });\n\n // add style prop functions\n let styleFunctions = [\n \"getLayer\",\n \"getSource\",\n \"listImages\",\n \"getPaintProperty\",\n \"getLayoutProperty\",\n \"removeImage\",\n ];\n styleFunctions.forEach((item) => {\n this[item] = (...props) => {\n if (self.map && self.map.style) {\n return self.map.style[item](...props);\n }\n return false;\n };\n });\n\n this.addNativeMaplibreFunctionsAndProps = () => {\n // add MapLibre-gl functions\n Object.keys(this.map.__proto__).forEach((item) => {\n if (typeof this[item] === \"undefined\") {\n this[item] = (...props) => self.map[item](...props);\n }\n });\n\n // add MapLibre-gl properties\n Object.keys(this.map).forEach((item) => {\n if (typeof this[item] === \"undefined\") {\n this[item] = self.map[item];\n }\n });\n };\n\n // add functions that are missing on the MapLibre instances prototype\n let missingFunctions = [\n \"getZoom\",\n \"setZoom\",\n \"getCenter\",\n \"setCenter\",\n \"getBearing\",\n \"setBearing\",\n \"getPitch\",\n \"setPitch\",\n \"jumpTo\",\n \"flyTo\",\n \"panTo\",\n \"panBy\",\n \"panBy\",\n \"zoomTo\",\n \"zoomIn\",\n \"zoomOut\",\n \"getPadding\",\n \"setPadding\",\n \"rotateTo\",\n \"resetNorth\",\n \"resetNorthPitch\",\n \"snapToNorth\",\n \"cameraForBounds\",\n \"fitBounds\",\n \"fitScreenCoordinates\",\n \"getFreeCameraOptions\",\n \"setFreeCameraOptions\",\n \"easeTo\",\n \"stop\",\n ];\n missingFunctions.forEach((item) => {\n this[item] = (...props) => {\n if (typeof self.map[item] === \"function\") {\n return self.map[item].call(self.map, ...props);\n }\n return undefined;\n };\n });\n\n // initialize the MapLibre-gl instance\n let initializeMapLibre = async () => {\n // if mapOptions style URL is given and if it is not a mapbox URL fetch the json and initialize the mapbox object\n if (\n typeof props.mapOptions.style === \"string\" &&\n props.mapOptions.style.indexOf(\"mapbox://\") === -1\n ) {\n await fetch(props.mapOptions.style)\n .then((response) => {\n if (response.ok) {\n return response.json();\n } else {\n throw new Error(\"error loading map style.json\");\n }\n })\n .then((styleJson) => {\n styleJson.layers.forEach((item) => {\n self.baseLayers.push(item.id);\n if (!self.firstSymbolLayer && item.type === \"symbol\") {\n self.firstSymbolLayer = item.id;\n }\n });\n self.styleJson = styleJson;\n props.mapOptions.style = styleJson;\n })\n .catch((error) => {\n console.log(error);\n });\n }\n\n self.map = new maplibregl.Map(props.mapOptions);\n\n self.addNativeMaplibreFunctionsAndProps();\n self.wrapper.refreshViewport();\n self.wrapper.fire(\"viewportchange\");\n\n self.map.on(\"move\", () => {\n self.wrapper.viewportState = self.wrapper.getViewport();\n self.wrapper.fire(\"viewportchange\");\n });\n self.map.on(\"idle\", () => {\n self.wrapper.refreshLayerState();\n });\n self.map.on(\"data\", () => {\n self.wrapper.refreshLayerState();\n });\n if (typeof props.onReady === \"function\") {\n props.onReady(self.map, self);\n }\n };\n initializeMapLibre();\n};\n\nexport default MapLibreGlWrapper;\n","import React, { useRef, useEffect, useContext } from \"react\";\nimport PropTypes from \"prop-types\";\nimport { MapContext } from \"@mapcomponents/react-core\";\nimport MapLibreGlWrapper from \"./lib/MapLibreGlWrapper\";\n\nimport \"maplibre-gl/dist/maplibre-gl.css\";\n\n/**\n * Creates a MapLibreGlWrapper instance and registers it in MapContext\n * after the MapLibre-gl load event has fired.\n *\n * MapLibreMap returns the html node that will be used by MapLibre-gl to render the map.\n * This Component must be kept unaware of any related components that interact with the MapLibre-gl\n * instance.\n *\n * @component\n */\nconst MapLibreMap = (props) => {\n const map = useRef(null);\n const mapContainer = useRef(null);\n\n const mapContext = useContext(MapContext);\n const mapContextRef = useRef(mapContext);\n\n const mapIdRef = useRef(props.mapId);\n const mapOptions = props.options;\n\n useEffect(() => {\n let mapId = mapIdRef.current;\n let _mapContext = mapContextRef.current;\n\n return () => {\n _mapContext.removeMap(mapId);\n map.current?.remove?.();\n map.current = null;\n };\n }, []);\n\n useEffect(() => {\n if (mapContainer.current) {\n map.current = new MapLibreGlWrapper({\n mapOptions: {\n container: mapContainer.current,\n ...mapOptions,\n },\n onReady: (map, wrapper) => {\n map.once(\"load\", () => {\n if (props.mapId) {\n mapContext.registerMap(props.mapId, wrapper);\n } else {\n mapContext.setMap(wrapper);\n }\n });\n\n // TODO: remove this line\n window.map = wrapper;\n },\n });\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [mapContainer]);\n\n return <div ref={mapContainer} className=\"mapContainer\" />;\n};\n\nMapLibreMap.defaultProps = {\n mapId: undefined,\n options: {\n lng: 8.607,\n lat: 53.1409349,\n zoom: 10,\n accessToken:\n \"pk.eyJ1IjoibWF4dG9iaSIsImEiOiJjaW1rcWQ5bWMwMDJvd2hrbWZ2ZTBhcnM5In0.NcGt5NmLP5Q1WC7P5u6qUA\",\n },\n};\n\nMapLibreMap.propTypes = {\n /**\n * Id of the MapLibreGl(Wrapper) instance in mapContext\n */\n mapId: PropTypes.string,\n /**\n * Config object that is passed to the MapLibreGl constructor as first parameter.\n * See https://maplibre.org/maplibre-gl-js-docs/api/map/ for a formal documentation of al\n * available properties.\n */\n options: PropTypes.object,\n};\n\nexport default MapLibreMap;\n","import { useContext, useCallback, useState, useEffect, useRef } from \"react\";\nimport PropTypes from \"prop-types\";\nimport { v4 as uuidv4 } from \"uuid\";\nimport { MapContext } from \"@mapcomponents/react-core\";\n\n/**\n * React hook that allows subscribing to map state changes\n *\n * @component\n */\nfunction useMapState(props) {\n // Use a useRef hook to reference the layer object to be able to access it later inside useEffect hooks\n const mapContext = useContext(MapContext);\n\n const initializedRef = useRef(false);\n const mapRef = useRef(undefined);\n\n const [viewport, setViewport] = useState(undefined);\n const viewportRef = useRef(undefined);\n\n const [layers, setLayers] = useState(undefined);\n const layersRef = useRef(undefined);\n //const mapRef = useRef(props.map);\n const componentId = useRef(uuidv4());\n\n /**\n * returns the element if it matches the defined filter criteria\n * to be used as filter function on the layers array\n *\n * @param {object} layer\n */\n const layerIdFilter = useCallback(\n (layer) => {\n if (!props?.filter?.includeBaseLayers && layer.baseLayer) {\n return false;\n }\n\n if (typeof props.filter?.matchLayerIds !== \"undefined\") {\n if (props.filter.matchLayerIds instanceof RegExp) {\n return props.filter.matchLayerIds.test(layer.id);\n } else {\n return layer.id.includes(props.filter.matchLayerIds);\n }\n }\n\n return true;\n },\n [props.filter]\n );\n\n const refreshLayerState = useCallback(() => {\n let _layerState = mapRef.current.wrapper.layerState.filter(layerIdFilter);\n let _layerStateString = JSON.stringify(_layerState);\n if (layersRef.current !== _layerStateString) {\n layersRef.current = _layerStateString;\n setLayers(_layerState);\n }\n }, [layerIdFilter]);\n\n useEffect(() => {\n let _componentId = componentId.current;\n\n return () => {\n if (mapRef.current) {\n mapRef.current.cleanup(_componentId);\n mapRef.current = undefined;\n }\n initializedRef.current = false;\n };\n }, []);\n\n useEffect(() => {\n if (!mapContext.mapExists(props.mapId) || initializedRef.current) return;\n // the MapLibre-gl instance (mapContext.getMap(props.mapId)) is accessible here\n // initialize the layer and add it to the MapLibre-gl instance or do something else with it\n initializedRef.current = true;\n mapRef.current = mapContext.getMap(props.mapId);\n\n if (props?.watch?.viewport) {\n setViewport(mapRef.current.wrapper.viewportState);\n\n mapRef.current.wrapper.on(\n \"viewportchange\",\n () => {\n if (viewportRef.current !== mapRef.current?.wrapper.viewportStateString) {\n setViewport(mapRef.current?.wrapper.viewportState);\n }\n },\n componentId.current\n );\n }\n\n if (props?.watch?.layers) {\n refreshLayerState();\n\n mapRef.current.wrapper.on(\n \"layerchange\",\n refreshLayerState,\n {\n includeBaseLayers: props?.filter?.includeBaseLayers,\n matchLayerIds: props?.filter?.matchLayerIds,\n },\n componentId.current\n );\n }\n }, [mapContext.mapIds, mapContext, props.mapId, refreshLayerState]);\n\n return {\n layers,\n viewport,\n };\n}\n\nuseMapState.defaultProps = {\n mapId: undefined,\n watch: {\n layers: true,\n sources: false,\n viewport: false,\n },\n filter: {\n includeBaseLayers: false,\n },\n};\n\nuseMapState.propTypes = {\n /**\n * Id of the target MapLibre instance in mapContext\n */\n mapId: PropTypes.string,\n /**\n * Defines map Resources to watch\n */\n watch: PropTypes.shape({\n layers: PropTypes.bool,\n sources: PropTypes.bool,\n viewport: PropTypes.bool,\n }),\n /**\n * Filter string or RegExp to more explicitly define the elements watched and increase performance\n * strings will be matched using layerId.includes(matchString)\n * RegExps will be matched using matchRegExp.test(layerId)\n */\n filter: PropTypes.shape({\n includeBaseLayers: PropTypes.bool,\n matchLayerIds: PropTypes.oneOfType([PropTypes.string, PropTypes.instanceOf(RegExp)]),\n matchSourceIds: PropTypes.oneOfType([PropTypes.string, PropTypes.instanceOf(RegExp)]),\n }),\n};\n\nexport default useMapState;\n","import React, { useContext, useState, useEffect, useRef } from \"react\";\nimport { v4 as uuidv4 } from \"uuid\";\nimport { MapContext } from \"@mapcomponents/react-core\";\nimport useMapState from \"./useMapState\";\n\nfunction useMap(props) {\n // Use a useRef hook to reference the layer object to be able to access it later inside useEffect hooks\n const mapContext = useContext(MapContext);\n\n const mapState = useMapState({\n mapId: props.mapId,\n watch: {\n viewport: false,\n layers: true,\n sources: false,\n },\n });\n\n const initializedRef = useRef(false);\n const mapRef = useRef(undefined);\n\n const componentId = useRef(uuidv4());\n\n const [mapIsReady, setMapIsReady] = useState(undefined);\n\n useEffect(() => {\n let _componentId = componentId.current;\n\n return () => {\n if (mapRef.current) {\n mapRef.current.cleanup(_componentId);\n mapRef.current = undefined;\n }\n initializedRef.current = false;\n setMapIsReady(false);\n };\n }, []);\n\n useEffect(() => {\n if (!mapContext.mapExists(props.mapId) || initializedRef.current) return;\n\n //check if insertBeforeLayer exists\n if (props.waitForLayer) {\n let layerFound = false;\n\n mapState?.layers?.forEach((layer) => {\n if (layer.id === props.waitForLayer) {\n layerFound = true;\n }\n });\n if (!layerFound) {\n return;\n }\n }\n // the MapLibre-gl instance (mapContext.getMap(props.mapId)) is accessible here\n // initialize the layer and add it to the MapLibre-gl instance or do something else with it\n initializedRef.current = true;\n mapRef.current = mapContext.getMap(props.mapId);\n setMapIsReady(true);\n }, [mapContext.mapIds, mapState.layers, mapContext, props.mapId]);\n\n return {\n map: mapRef.current,\n mapIsReady,\n componentId: componentId.current,\n layers: mapState.layers,\n };\n}\n\nexport default useMap;\n","import React, { useRef, useEffect } from \"react\";\nimport PropTypes from \"prop-types\";\nimport useMap from \"../../hooks/useMap\";\n\n/**\n * TODO: Add short & useful description\n *\n * @param {object} props\n * @param {string} props.mapId Id of the target MapLibre instance in mapContext\n *\n * @component\n */\nconst MlComponentTemplate = (props) => {\n const mapHook = useMap({ mapId: props.mapId, waitForLayer: props.insertBeforeLayer });\n const initializedRef = useRef(false);\n\n useEffect(() => {\n if (!mapHook.mapIsReady || initializedRef.current) return;\n // the MapLibre-gl instance (mapHook.map) is accessible here\n // initialize the layer and add it to the MapLibre-gl instance or do something else with it\n initializedRef.current = true;\n\n mapHook.map.setCenter([7.132122000552613, 50.716405378037706]);\n }, [mapHook.map, mapHook.mapIsReady, props.mapId]);\n\n return <></>;\n};\n\nMlComponentTemplate.defaultProps = {\n mapId: undefined,\n};\n\nMlComponentTemplate.propTypes = {\n /**\n * Id of the target MapLibre instance in mapContext\n */\n mapId: PropTypes.string,\n};\nexport default MlComponentTemplate;\n","import React, { useContext, useRef, useEffect, useState } from \"react\";\nimport PropTypes from \"prop-types\";\nimport { MapContext } from \"@mapcomponents/react-core\";\n\nimport { v4 as uuidv4 } from \"uuid\";\nimport Button from \"@mui/material/Button\";\n\n/**\n * Adds a fill extrusion layer to the MapLibre instance reference by props.mapId\n *\n * @Component\n */\nconst MlFillExtrusionLayer = (props) => {\n const mapContext = useContext(MapContext);\n const mapRef = useRef(null);\n\n const [showLayer, setShowLayer] = useState(true);\n const componentId = useRef(\n (props.idPrefix ? props.idPrefix : \"MlFillExtrusionLayer-\") + uuidv4()\n );\n const initializedRef = useRef(false);\n const layerId = useRef(props.layerId || \"MlFillExtrusionLayer-\" + uuidv4());\n\n useEffect(() => {\n let _componentId = componentId.current;\n\n return () => {\n if (mapRef.current) {\n mapRef.current.cleanup(_componentId);\n mapRef.current = undefined;\n }\n initializedRef.current = false;\n };\n }, []);\n\n useEffect(() => {\n if (!mapContext.mapExists(props.mapId) || initializedRef.current) return;\n // the MapLibre-gl instance (mapContext.getMap(props.mapId)) is accessible here\n // initialize the layer and add it to the MapLibre-gl instance or do something else with it\n initializedRef.current = true;\n mapRef.current = mapContext.getMap(props.mapId);\n\n let lastLabelLayerId = undefined;\n if (mapContext.map.getLayer(\"waterway-name\")) {\n lastLabelLayerId = \"waterway-name\";\n }\n\n if (mapContext.map.getLayer(\"poi_label\")) {\n lastLabelLayerId = \"poi_label\";\n }\n\n mapContext.map.addLayer(\n {\n id: layerId.current,\n type: \"fill-extrusion\",\n source: props.sourceId || \"openmaptiles\",\n \"source-layer\": props.sourceLayer || \"building\",\n minzoom: props.minZoom || 14,\n paint: {\n ...props.paint,\n },\n },\n props.insertBeforeLayer || lastLabelLayerId,\n componentId.current\n );\n }, [\n mapContext,\n props.insertBeforeLayer,\n props.mapId,\n props.minZoom,\n props.paint,\n props.sourceId,\n props.sourceLayer,\n ]);\n\n useEffect(() => {\n if (!initializedRef.current) return;\n\n // toggle layer visibility by changing the layout object's visibility property\n mapRef.current.setLayoutProperty(layerId.current, \"visibility\", showLayer ? \"visible\" : \"none\");\n }, [showLayer, mapContext]);\n\n return (\n <Button\n color=\"primary\"\n variant={showLayer ? \"contained\" : \"outlined\"}\n onClick={() => setShowLayer(!showLayer)}\n >\n Composite\n </Button>\n );\n};\n\nMlFillExtrusionLayer.defaultProps = {\n mapId: undefined,\n paint: {\n \"fill-extrusion-color\": \"hsl(196, 61%, 83%)\",\n \"fill-extrusion-height\": {\n property: \"render_height\",\n type: \"identity\",\n },\n \"fill-extrusion-base\": {\n property: \"render_min_height\",\n type: \"identity\",\n },\n \"fill-extrusion-opacity\": 1,\n },\n};\n\nMlFillExtrusionLayer.propTypes = {\n /**\n * Id of the target MapLibre instance in mapContext\n */\n mapId: PropTypes.string,\n /**\n * Id of the layer that will be added by this component\n */\n layerId: PropTypes.string,\n /**\n * Prefix of the component id this component uses when adding elements to the MapLibreGl-instance\n */\n idPrefix: PropTypes.string,\n /**\n * Paint properties of the config object that is passed to the MapLibreGl.addLayer call. All\n * available properties are documented in the MapLibreGl documentation\n * https://maplibre.org/maplibre-gl-js-docs/style-spec/layers/#fill-extrusion\n */\n paint: PropTypes.object,\n /**\n * Source id of a vector tile source containing the geometries to use for this fill-extrusion\n * layer.\n * https://maplibre.org/maplibre-gl-js-docs/style-spec/layers/#source-layer\n */\n sourceId: PropTypes.string,\n /**\n * Layer id from a vector tile source containing the geometries to use for this fill-extrusion\n * layer.\n * https://maplibre.org/maplibre-gl-js-docs/style-spec/layers/#source-layer\n */\n sourceLayer: PropTypes.string,\n /**\n * This layer will be hidde for zoom levels lower than defined on this property\n * https://maplibre.org/maplibre-gl-js-docs/style-spec/layers/#minzoom\n */\n minZoom: PropTypes.number,\n /**\n * The layerId of an existing layer this layer should be rendered visually beneath\n * https://maplibre.org/maplibre-gl-js-docs/api/map/#map#addlayer - see \"beforeId\" property\n */\n insertBeforeLayer: PropTypes.string,\n};\n\nexport default MlFillExtrusionLayer;\n","import * as turf from \"@turf/turf\";\n\nconst _showNextTransitionSegment = function (\n props,\n layerId,\n map,\n transitionInProgressRef,\n transitionGeojsonDataRef,\n transitionGeojsonCommonDataRef,\n currentTransitionStepRef,\n msPerStep,\n transitionTimeoutRef\n) {\n if (\n typeof map.getSource(layerId) === \"undefined\" ||\n !transitionInProgressRef.current\n ) {\n transitionTimeoutRef.current = setTimeout(() => _showNextTransitionSegment(...arguments), msPerStep);\n return;\n }\n if (\n typeof transitionGeojsonDataRef.current[currentTransitionStepRef.current] !==\n \"undefined\"\n ) {\n let newData =\n currentTransitionStepRef.current + 1 ===\n transitionGeojsonDataRef.current.length\n ? props.geojson\n : turf.lineString([\n ...transitionGeojsonCommonDataRef.current,\n ...transitionGeojsonDataRef.current[currentTransitionStepRef.current]\n .geometry.coordinates,\n ]);\n\n if (!map?.getSource?.(layerId)) {\n return;\n }\n\n map.getSource(layerId).setData(newData);\n\n if (typeof props.onTransitionFrame === \"function\") {\n props.onTransitionFrame(newData);\n }\n\n currentTransitionStepRef.current++;\n if (\n transitionInProgressRef.current &&\n currentTransitionStepRef.current < transitionGeojsonDataRef.current.length\n ) {\n transitionTimeoutRef.current = setTimeout(() => _showNextTransitionSegment(...arguments), msPerStep);\n } else {\n if (typeof props.onTransitionEnd === \"function\") {\n props.onTransitionEnd(props.geojson);\n }\n transitionInProgressRef.current = false;\n }\n }\n};\n\nconst _transitionToGeojson = (\n newGeojson,\n props,\n transitionGeojsonCommonDataRef,\n transitionGeojsonDataRef,\n transitionInProgressRef,\n oldGeojsonRef,\n msPerStep,\n currentTransitionStepRef,\n map,\n layerId,\n transitionTimeoutRef\n) => {\n // create the transition geojson between oldGeojsonRef.current and props.geojson\n\n // create a geojson that contains no common point between the two line features\n let transitionCoordinatesShort = [];\n let transitionCoordinatesLong = [];\n let targetCoordinates = [];\n let srcCoordinates = [];\n transitionGeojsonCommonDataRef.current = [];\n let sourceGeojson = oldGeojsonRef.current || {\n geometry: {\n type: \"LineString\",\n coordinates: [],\n },\n properties: {},\n type: \"Feature\",\n };\n\n let targetGeojson = newGeojson;\n\n let longerGeojson = targetGeojson;\n let shorterGeojson = sourceGeojson;\n let reverseOrder = false;\n // In case one geojson is missing completely use the first two coordinates of the other geojson\n if (\n typeof longerGeojson.geometry === \"undefined\" &&\n typeof shorterGeojson.geometry !== \"undefined\" &&\n shorterGeojson.geometry.coordinates.length > 1\n ) {\n longerGeojson = turf.lineString(shorterGeojson.geometry.coordinates.slice(0, 2));\n } else if (\n typeof shorterGeojson.geometry === \"undefined\" &&\n typeof longerGeojson.geometry !== \"undefined\" &&\n longerGeojson.geometry.coordinates.length > 1\n ) {\n shorterGeojson = turf.lineString(longerGeojson.geometry.coordinates.slice(0, 2));\n } else if (\n typeof shorterGeojson.geometry === \"undefined\" &&\n typeof longerGeojson.geometry === \"undefined\"\n ) {\n return;\n }\n\n if (\n longerGeojson.geometry.coordinates.length <\n shorterGeojson.geometry.coordinates.length\n ) {\n longerGeojson = sourceGeojson;\n shorterGeojson = targetGeojson;\n reverseOrder = true;\n }\n\n if (longerGeojson && shorterGeojson) {\n for (var i = 0, len = longerGeojson.geometry.coordinates.length; i < len; i++) {\n if (\n typeof shorterGeojson.geometry.coordinates[i] !== \"undefined\" &&\n longerGeojson.geometry.coordinates[i][0] ===\n shorterGeojson.geometry.coordinates[i][0] &&\n longerGeojson.geometry.coordinates[i][1] ===\n shorterGeojson.geometry.coordinates[i][1]\n ) {\n // if coordinates are equal\n transitionGeojsonCommonDataRef.current.push(\n longerGeojson.geometry.coordinates[i]\n );\n } else {\n if (typeof longerGeojson.geometry.coordinates[i] !== \"undefined\") {\n transitionCoordinatesLong.push(longerGeojson.geometry.coordinates[i]);\n }\n if (typeof shorterGeojson.geometry.coordinates[i] !== \"undefined\") {\n transitionCoordinatesShort.push(shorterGeojson.geometry.coordinates[i]);\n }\n }\n }\n }\n\n if (reverseOrder) {\n targetCoordinates = transitionCoordinatesShort;\n srcCoordinates = transitionCoordinatesLong;\n } else {\n targetCoordinates = transitionCoordinatesLong;\n srcCoordinates = transitionCoordinatesShort;\n }\n\n if (targetCoordinates.length < 2 && srcCoordinates < 2) return;\n // create props.transitionTime / msPerStep (=: transitionSteps) Versions of transitionGeojsonCommonDataRef.current + transitionCoordinates making the transitionCoordinates transitionCoordinatesDistance / transitionSteps longer on each step\n\n let transitionSteps = props.transitionTime / msPerStep;\n let srcCoordinatesDistance =\n srcCoordinates.length > 1\n ? Math.round(turf.length(turf.lineString(srcCoordinates)))\n : 0;\n let targetCoordinatesDistance =\n targetCoordinates.length > 1\n ? Math.round(turf.length(turf.lineString(targetCoordinates)))\n : 0;\n let transitionDistance = targetCoordinatesDistance + srcCoordinatesDistance;\n\n let srcCoordinatesShare = srcCoordinatesDistance / transitionDistance;\n let srcTransitionSteps = Math.round(transitionSteps * srcCoordinatesShare);\n let srcPerStepDistance =\n Math.round((srcCoordinatesDistance / srcTransitionSteps) * 100) / 100;\n\n let targetCoordinatesShare = targetCoordinatesDistance / transitionDistance;\n let targetTransitionSteps = Math.round(transitionSteps * targetCoordinatesShare);\n let targetPerStepDistance =\n Math.round((targetCoordinatesDistance / targetTransitionSteps) * 100) / 100;\n\n transitionGeojsonDataRef.current = [];\n\n // use srcPerStepDistance as src coordinates are always animated backwards\n let loopStepDistance = srcCoordinatesDistance;\n if (loopStepDistance <= 0) {\n loopStepDistance = 0.1;\n }\n let tmpLinestring = {};\n let tmpChunks = {};\n\n if (srcCoordinates.length > 1) {\n tmpChunks = turf.lineChunk(\n turf.lineString(srcCoordinates),\n srcPerStepDistance\n //{reverse:true}\n );\n // for some reason turf.lineChunk returns the full lineString as element 0, chunks start at 1\n tmpLinestring = tmpChunks.features[1];\n for (i = 0; i < srcTransitionSteps; i++) {\n transitionGeojsonDataRef.current.push(tmpLinestring);\n if (typeof tmpChunks.features[i] !== \"undefined\") {\n tmpLinestring = turf.lineString([\n ...tmpLinestring.geometry.coordinates,\n ...tmpChunks.features[i].geometry.coordinates,\n ]);\n } else {\n transitionGeojsonDataRef.current.push(tmpLinestring);\n break;\n }\n }\n transitionGeojsonDataRef.current.reverse();\n }\n\n if (targetCoordinates.length > 1) {\n loopStepDistance = 0;\n tmpChunks = turf.lineChunk(\n turf.lineString(targetCoordinates),\n targetPerStepDistance\n );\n // for some reason turf.lineChunk returns the full lineString as element 0, chunks start at 1\n tmpLinestring = tmpChunks.features[1];\n for (i = 0; i < targetTransitionSteps; i++) {\n transitionGeojsonDataRef.current.push(tmpLinestring);\n if (typeof tmpChunks.features[i] !== \"undefined\") {\n tmpLinestring = turf.lineString([\n ...tmpLinestring.geometry.coordinates,\n ...tmpChunks.features[i].geometry.coordinates,\n ]);\n } else {\n transitionGeojsonDataRef.current.push(tmpLinestring);\n break;\n }\n }\n }\n transitionGeojsonDataRef.current.push(props.geojson);\n\n currentTransitionStepRef.current = 1;\n transitionInProgressRef.current = true;\n transitionTimeoutRef.current = setTimeout(\n () =>\n _showNextTransitionSegment(\n props,\n layerId,\n map,\n transitionInProgressRef,\n transitionGeojsonDataRef,\n transitionGeojsonCommonDataRef,\n currentTransitionStepRef,\n msPerStep,\n transitionTimeoutRef\n ),\n msPerStep\n );\n};\n\nexport { _showNextTransitionSegment, _transitionToGeojson };\n","const getDefaultPaintPropsByType = (type, defaultPaintOverrides) => {\n switch (type) {\n case \"fill\":\n if (defaultPaintOverrides?.fill) {\n return defaultPaintOverrides.fill;\n }\n return {\n \"fill-color\": \"rgba(10,240,256,0.6)\",\n };\n case \"line\":\n if (defaultPaintOverrides?.line) {\n return defaultPaintOverrides.line;\n }\n return {\n \"line-color\": \"rgb(100,200,100)\",\n \"line-width\": 5,\n };\n case \"circle\":\n default:\n if (defaultPaintOverrides?.circle) {\n return defaultPaintOverrides.circle;\n }\n return {\n \"circle-color\": \"#44aaaa\",\n \"circle-stroke-color\": \"#fff\",\n \"circle-stroke-width\": 2,\n };\n }\n};\n\nexport default getDefaultPaintPropsByType;\n","const mapGeometryTypesToLayerTypes = {\n Position: \"circle\",\n Point: \"circle\",\n MultiPoint: \"circle\",\n LineString: \"line\",\n MultiLineString: \"line\",\n Polygon: \"fill\",\n MultiPolygon: \"fill\",\n GeometryCollection: \"circle\",\n};\n\nconst getDefaulLayerTypeByGeometry = (geojson) => {\n if (geojson?.type === \"Feature\") {\n return mapGeometryTypesToLayerTypes?.[geojson?.geometry?.type]\n ? mapGeometryTypesToLayerTypes[geojson.geometry.type]\n : \"circle\";\n }\n if (geojson?.type === \"FeatureCollection\") {\n if (geojson.features.length) {\n return getDefaulLayerTypeByGeometry(geojson.features[0]);\n }\n return \"circle\";\n }\n};\nexport default getDefaulLayerTypeByGeometry;\n","import React, { useRef, useEffect, useCallback } from \"react\";\nimport PropTypes from \"prop-types\";\n\nimport * as turf from \"@turf/turf\";\n\nimport useMap from \"../../hooks/useMap\";\n\nimport { _transitionToGeojson } from \"./util/transitionFunctions\";\nimport getDefaultPaintPropsByType from \"./util/getDefaultPaintPropsByType\";\nimport getDefaulLayerTypeByGeometry from \"./util/getDefaultLayerTypeByGeometry\";\n\nconst msPerStep = 50;\nconst legalLayerTypes = [\"circle\", \"fill\", \"line\"];\n\n/**\n * Adds source and layer of types \"line\", \"fill\" or \"circle\" to display GeoJSON data on the map.\n *\n * @component\n */\nconst MlGeoJsonLayer = (props) => {\n // Use a useRef hook to reference the layer object to be able to access it later inside useEffect hooks\n const mapHook = useMap({ mapId: props.mapId, waitForLayer: props.insertBeforeLayer });\n const initializedRef = useRef(false);\n const layerId = useRef(props.layerId || \"MlGeoJsonLayer-\" + mapHook.componentId);\n const layerTypeRef = useRef(undefined);\n\n // transition effect variables\n const oldGeojsonRef = useRef(null);\n const transitionInProgressRef = useRef(false);\n const transitionTimeoutRef = useRef(undefined);\n const currentTransitionStepRef = useRef(false);\n const transitionGeojsonDataRef = useRef([]);\n const transitionGeojsonCommonDataRef = useRef([]);\n\n useEffect(() => {\n return () => {\n // This is the cleanup function, it is called when this react component is removed from react-dom\n if (transitionTimeoutRef.current) {\n clearTimeout(transitionTimeoutRef.current);\n }\n };\n }, []);\n\n useEffect(() => {\n if (!mapHook.map || !initializedRef.current) return;\n\n for (var key in props.layout) {\n mapHook.map.setLayoutProperty(layerId.current, key, props.layout[key]);\n }\n }, [props.layout, mapHook.map, props.mapId]);\n\n useEffect(() => {\n if (!mapHook.map || !initializedRef.current) return;\n\n let _paint =\n props.paint || getDefaultPaintPropsByType(layerTypeRef.current, props.defaultPaintOverrides);\n\n for (var key in _paint) {\n mapHook.map.setPaintProperty(layerId.current, key, _paint[key]);\n }\n }, [props.paint, mapHook.map, props.mapId, props.defaultPaintOverrides]);\n\n const transitionToGeojson = useCallback(\n (newGeojson) => {\n _transitionToGeojson(\n newGeojson,\n props,\n transitionGeojsonCommonDataRef,\n transitionGeojsonDataRef,\n transitionInProgressRef,\n oldGeojsonRef,\n msPerStep,\n currentTransitionStepRef,\n mapHook.map,\n layerId.current,\n transitionTimeoutRef\n );\n },\n [props, mapHook.map]\n );\n\n useEffect(() => {\n if (!mapHook?.map?.getSource(layerId.current) || !initializedRef.current) return;\n\n if (\n typeof props.transitionTime !== \"undefined\" &&\n props.type === \"line\" &&\n oldGeojsonRef.current\n ) {\n transitionInProgressRef.current = false;\n currentTransitionStepRef.current = false;\n transitionGeojsonDataRef.current = [];\n transitionGeojsonCommonDataRef.current = [];\n transitionToGeojson(props.geojson);\n } else {\n mapHook.map.getSource(layerId.current).setData(props.geojson);\n }\n oldGeojsonRef.current = props.geojson;\n }, [\n props.geojson,\n props.mapId,\n mapHook.map,\n props.type,\n transitionToGeojson,\n props.transitionTime,\n ]);\n\n const createLayer = useCallback(() => {\n let geojson = props.geojson;\n\n if (\n props.type === \"line\" &&\n typeof props.transitionTime !== \"undefined\" &&\n props.transitionTime &&\n typeof props.geojson.geometry !== \"undefined\"\n ) {\n var tmpChunks = turf.lineChunk(props.geojson, 0.01);\n geojson = tmpChunks.features[0];\n }\n\n layerTypeRef.current = props.type || getDefaulLayerTypeByGeometry(props.geojson);\n\n mapHook.map.addLayer(\n {\n id: layerId.current,\n source: {\n type: \"geojson\",\n data: geojson,\n },\n type: layerTypeRef.current,\n paint:\n props.paint ||\n getDefaultPaintPropsByType(layerTypeRef.current, props.defaultPaintOverrides),\n layout: props.layout || {},\n ...props.options,\n },\n props.insertBeforeLayer,\n mapHook.componentId\n );\n\n if (typeof props.onHover !== \"undefined\") {\n mapHook.map.on(\"mousemove\", layerId.current, props.onHover, mapHook.componentId);\n }\n\n if (typeof props.onClick !== \"undefined\") {\n mapHook.map.on(\"click\", layerId.current, props.onClick, mapHook.componentId);\n }\n\n if (typeof props.onLeave !== \"undefined\") {\n mapHook.map.on(\"mouseleave\", layerId.current, props.onLeave, mapHook.componentId);\n }\n\n if (\n props.type === \"line\" &&\n typeof props.transitionTime !== \"undefined\" &&\n typeof props.geojson.geometry !== \"undefined\"\n ) {\n transitionToGeojson(props.geojson);\n oldGeojsonRef.current = props.geojson;\n }\n }, [mapHook.map, props, transitionToGeojson]);\n\n useEffect(() => {\n if (!mapHook.mapIsReady || !props.geojson) return;\n\n if (\n initializedRef.current &&\n legalLayerTypes.indexOf(props.type) !== -1 &&\n layerTypeRef.current &&\n props.type !== layerTypeRef.current\n ) {\n mapHook.map.cleanup(mapHook.componentId);\n } else if (\n initializedRef.current &&\n (legalLayerTypes.indexOf(props.type) === -1 ||\n (legalLayerTypes.indexOf(props.type) !== -1 && props.type === layerTypeRef.current))\n ) {\n return;\n }\n\n // initialize the layer and add it to the MapLibre-gl instance or do something else with it\n initializedRef.current = true;\n\n createLayer();\n }, [mapHook.mapIsReady, createLayer, props]);\n\n return <></>;\n};\n\nMlGeoJsonLayer.propTypes = {\n /**\n * Id of the target MapLibre instance in mapContext\n */\n mapId: PropTypes.string,\n /**\n * Type of the layer that will be added to the MapLibre instance.\n * Possible values: \"line\", \"circle\", \"fill\"\n */\n type: PropTypes.string,\n /**\n * Layout property object, that is passed to the addLayer call.\n * Possible props depend on the layer type.\n * https://maplibre.org/maplibre-gl-js-docs/style-spec/layers/#line\n * https://maplibre.org/maplibre-gl-js-docs/style-spec/layers/#circle\n * https://maplibre.org/maplibre-gl-js-docs/style-spec/layers/#fill\n */\n layout: PropTypes.object,\n /**\n * Paint property object, that is passed to the addLayer call.\n * Possible props depend on the layer type.\n * https://maplibre.org/maplibre-gl-js-docs/style-spec/layers/#line\n * https://maplibre.org/maplibre-gl-js-docs/style-spec/layers/#circle\n * https://maplibre.org/maplibre-gl-js-docs/style-spec/layers/#fill\n */\n paint: PropTypes.object,\n /**\n * Javascript object with optional properties \"fill\", \"line\", \"circle\" to override implicit layer type default paint properties.\n */\n defaultPaintOverrides: PropTypes.object,\n /**\n * Javascript object that is spread into the addLayer commands first parameter.\n */\n options: PropTypes.object,\n /**\n * GeoJSON data that is supposed to be rendered by this component.\n */\n geojson: PropTypes.object,\n /**\n * Id of an existing layer in the mapLibre instance to help specify the layer order\n * This layer will be visually beneath the layer with the \"insertBeforeLayer\" id.\n */\n insertBeforeLayer: PropTypes.string,\n /**\n * Id of the new layer and source that are added to the MapLibre instance\n */\n layerId: PropTypes.string,\n /**\n * Click event handler that is executed whenever a geometry rendered by this component is clicked.\n */\n onClick: PropTypes.func,\n /**\n * Hover event handler that is executed whenever a geometry rendered by this component is hovered.\n */\n onHover: PropTypes.func,\n /**\n * Leave event handler that is executed whenever a geometry rendered by this component is\n * left/unhovered.\n */\n onLeave: PropTypes.func,\n /**\n * Creates transition animation whenever the geojson prop changes.\n * Only works with layer type \"line\" and LineString GeoJSON data.\n */\n transitionTime: PropTypes.number,\n};\n\nexport default MlGeoJsonLayer;\n","import React, { useRef, useCallback, useEffect } from \"react\";\n\nimport useMap from \"../../hooks/useMap\";\n\nconst MlImageMarkerLayer = (props) => {\n const mapHook = useMap({ mapId: props.mapId, waitForLayer: props.insertBeforeLayer });\n\n const layerInitializedRef = useRef(false);\n const imageIdRef = useRef(props.imageId || \"img_\" + new Date().getTime());\n const layerId = useRef(props.layerId || \"MlImageMarkerLayer-\" + mapHook.componentId);\n\n useEffect(() => {\n if (\n !mapHook.mapIsReady ||\n (mapHook.map && !mapHook.map.getLayer(layerId.current)) ||\n !props.options\n )\n return;\n // the MapLibre-gl instance (mapContext.map) is accessible here\n // initialize the layer and add it to the MapLibre-gl instance or do something else with it\n var key;\n\n if (props.options.layout) {\n for (key in props.options.layout) {\n mapHook.map.setLayoutProperty(layerId.current, key, props.options.layout[key]);\n }\n }\n if (props.options.paint) {\n for (key in props.options.paint) {\n mapHook.map.setPaintProperty(layerId.current, key, props.options.paint[key]);\n }\n }\n }, [props.options, layerId.current, props.mapId]);\n\n const addLayer = useCallback(() => {\n let tmpOptions = {\n id: layerId.current,\n layout: {},\n ...props.options,\n };\n tmpOptions.layout[\"icon-image\"] = imageIdRef.current;\n mapHook.map.addLayer(tmpOptions, props.insertBeforeLayer, mapHook.componentId);\n }, [props, mapHook.mapIsReady, mapHook.map]);\n\n useEffect(() => {\n if (!props.options || !mapHook.mapIsReady || layerInitializedRef.current) return;\n\n layerInitializedRef.current = true;\n\n if (props.imgSrc) {\n mapHook.map.loadImage(props.imgSrc, function (error, image) {\n if (error) throw error;\n mapHook.map.addImage(imageIdRef.current, image, mapHook.componentId);\n });\n }\n\n addLayer();\n }, [mapHook.mapIsReady, mapHook.map, addLayer, props]);\n\n useEffect(() => {\n if (\n !mapHook.mapIsReady ||\n (mapHook.map && !mapHook.map.getLayer(layerId.current)) ||\n !props.options\n ) {\n return;\n }\n\n mapHook.map.getSource(layerId.current).setData(props.options.source.data);\n }, [props.options.source.data, props]);\n\n return <></>;\n};\n\nexport default MlImageMarkerLayer;\n","export default \"b556faa3bc6829d2.png\"","import React, { useRef, useEffect, useState, useCallback } from \"react\";\nimport PropTypes from \"prop-types\";\nimport useMap from \"../../hooks/useMap\";\n\nimport Button from \"@mui/material/Button\";\nimport RoomIcon from \"@mui/icons-material/Room\";\nimport { point, circle } from \"@turf/turf\";\nimport MlGeoJsonLayer from \"../MlGeoJsonLayer/MlGeoJsonLayer\";\nimport MlImageMarkerLayer from \"../MlImageMarkerLayer/MlImageMarkerLayer\";\n\nimport marker from \"./assets/marker.png\";\n\n/**\n * Adds a button that makes the map follow the users GPS position using\n * navigator.geolocation.watchPosition if activated\n *\n * @param {object} props\n * @param {string} props.mapId Id of the target MapLibre instance in mapContext\n *\n * @component\n */\nconst MlFollowGps = (props) => {\n const mapHook = useMap({ mapId: props.mapId, waitForLayer: props.insertBeforeLayer });\n\n const [isFollowed, setIsFollowed] = useState(false);\n const [geoJson, setGeoJson] = useState(undefined);\n const watchIdRef = useRef(undefined);\n const [locationAccessDenied, setLocationAccessDenied] = useState(false);\n\n const [accuracyGeoJson, setAccuracyGeoJson] = useState();\n\n useEffect(() => {\n return () => {\n if (watchIdRef.current) {\n navigator.geolocation.clearWatch(watchIdRef.current);\n watchIdRef.current = undefined;\n }\n };\n }, []);\n\n const getLocationSuccess = useCallback(\n (pos) => {\n if (!mapHook.map) return;\n\n mapHook.map.setCenter([pos.coords.longitude, pos.coords.latitude]);\n const geoJsonPoint = point([pos.coords.longitude, pos.coords.latitude]);\n setGeoJson(geoJsonPoint);\n setAccuracyGeoJson(circle(geoJsonPoint, pos.coords.accuracy / 1000));\n },\n [mapHook.map]\n );\n\n const getLocationError = (err) => {\n console.log(\"Access of user location denied\");\n setLocationAccessDenied(true);\n };\n\n useEffect(() => {\n if (!mapHook.map) return;\n\n if (isFollowed) {\n watchIdRef.current = navigator.geolocation.watchPosition(\n getLocationSuccess,\n getLocationError\n );\n } else {\n navigator.geolocation.clearWatch(watchIdRef.current);\n }\n }, [isFollowed, getLocationSuccess]);\n\n return (\n <>\n {isFollowed && geoJson && (\n <MlGeoJsonLayer\n geojson={accuracyGeoJson}\n type={\"fill\"}\n paint={{\n \"fill-color\": \"#ee7700\",\n \"fill-opacity\": 0.5,\n ...props.accuracyPaint,\n }}\n insertBeforeLayer={\"MlFollowGpsMarker\"}\n />\n )}\n\n {isFollowed && geoJson && (\n <MlImageMarkerLayer\n layerId={\"MlFollowGpsMarker\"}\n options={{\n type: \"symbol\",\n source: {\n type: \"geojson\",\n data: geoJson,\n },\n layout: {\n \"icon-size\": 0.1,\n \"icon-offset\": [0, -340],\n ...props.markerLayout,\n },\n }}\n imgSrc={props.markerImage || marker}\n />\n )}\n\n <Button\n sx={{ zIndex: 1002, color: isFollowed ? props.onColor : props.offColor, ...props.style }}\n disabled={locationAccessDenied}\n onClick={() => {\n setIsFollowed(!isFollowed);\n }}\n >\n {\" \"}\n <RoomIcon sx={{ fontSize: props.style.fontSize }} />{\" \"}\n </Button>\n </>\n );\n};\n\nMlFollowGps.defaultProps = {\n mapId: undefined,\n style: {\n minWidth: \"30px\",\n minHeight: \"30px\",\n width: \"30px\",\n height: \"30px\",\n backgroundColor: \"#414141\",\n borderRadius: \"23%\",\n margin: 0.15,\n fontSize: \"1.3em\",\n \":hover\": {\n backgroundColor: \"#515151\",\n color: \"#ececec\",\n },\n },\n onColor: \"#ececec\",\n offColor: \"#666\",\n};\n\nMlFollowGps.propTypes = {\n /**\n * Id of the target MapLibre instance in mapContext\n */\n mapId: PropTypes.string,\n /**\n * CSS style object that is applied to the button component\n */\n style: PropTypes.object,\n /**\n * Active button font color\n */\n onColor: PropTypes.string,\n /**\n * Inactive button font color\n */\n offColor: PropTypes.string,\n /**\n * Accuracy paint property object, that is passed to the MlGeoJsonLayer responsible for drawing the accuracy circle.\n * Use any available paint prop from layer type \"fill\".\n * https://maplibre.org/maplibre-gl-js-docs/style-spec/layers/#fill\n */\n accuracyPaint: PropTypes.object,\n /**\n * Marker layout property object, that is passed to the MlImageMarkerLayer responsible for drawing the position marker.\n * Use any available layout property from layer type \"symbol\".\n * https://maplibre.org/maplibre-gl-js-docs/style-spec/layers/#symbol\n */\n markerLayout: PropTypes.object,\n /**\n * Replace the default marker image with a custom one.\n */\n markerImage: PropTypes.string,\n};\nexport default MlFollowGps;\n","const nmMap = {\n street: [\n \"footway\",\n \"street\",\n \"road\",\n \"street_name\",\n \"residential\",\n \"path\",\n \"pedestrian\",\n \"road_reference\",\n \"road_reference_intl\",\n \"square\",\n \"place\",\n ],\n number: [\"house_number\", \"street_number\"],\n place: [\n \"city\",\n \"village\",\n \"hamlet\",\n \"locality\",\n \"croft\",\n \"neighbourhood\",\n \"suburb\",\n \"city_district\",\n \"district\",\n \"quarter\",\n \"borough\",\n \"city_block\",\n \"residential\",\n \"commercial\",\n \"industrial\",\n \"houses\",\n \"subdivision\",\n \"allotments\",\n \"postal_city\",\n \"town\",\n \"municipality\",\n \"local_administrative_area\",\n ],\n zip: [\"postcode\", \"partial_postcode\"],\n state: [\"state\", \"province\", \"state_code\"],\n};\n\nconst nmConverter = (nmAddress) => {\n const addressArr = [];\n for (let key in nmMap) {\n nmMap[key].some((element) => {\n if (nmAddress.hasOwnProperty(element)) {\n addressArr.push(nmAddress[element]);\n return true;\n }\n return false;\n });\n }\n return addressArr.join(\", \");\n};\nexport default nmConverter;\n","import maplibregl from \"maplibre-gl\";\nimport jsPDF from \"jspdf\";\nimport nmConverter from \"./nominatimMap.js\";\n\nconst toPixels = (length) => {\n let conversionFactor = 96;\n\n conversionFactor /= 25.4;\n\n return conversionFactor * length + \"px\";\n};\n\nconst createPdf = (map, locationValue, setLoading) => {\n setLoading(true);\n\n const width = 210;\n const height = 297;\n // Calculate pixel ratio\n const actualPixelRatio = window.devicePixelRatio;\n\n // Create map container\n const hidden = document.createElement(\"div\");\n hidden.className = \"hidden-map\";\n document.body.appendChild(hidden);\n const container = document.createElement(\"div\");\n container.style.width = toPixels(width);\n container.style.height = toPixels(height);\n hidden.appendChild(container);\n\n //Render map\n var renderMap = new maplibregl.Map({\n container: container,\n center: map.getCenter(),\n zoom: map.getZoom(),\n bearing: map.getBearing(),\n pitch: map.getPitch(),\n interactive: false,\n preserveDrawingBuffer: true,\n fadeDuration: 0,\n attributionControl: false,\n });\n let style = map.getStyle();\n for (let name in style.sources) {\n let src = style.sources[name];\n\n Object.keys(src).forEach((key) => {\n //delete properties if value is undefined.\n // for instance, raster-dem might has undefined value in \"url\" and \"bounds\"\n if (!src[key]) {\n delete src[key];\n }\n });\n }\n renderMap.setStyle(style);\n\n renderMap.once(\"idle\", function () {\n // TO DO: It is still under development\n const pdf = new jsPDF({\n orientation: \"p\",\n unit: \"mm\",\n compress: true,\n });\n Object.defineProperty(window, \"devicePixelRatio\", {\n get: function () {\n return 300 / 96;\n },\n });\n const offsetX = 2.5;\n const offsetY = 2.5;\n const marginTop = 3;\n const marginBottom = 3;\n const innerMargin = 2;\n const logo =\n \"data:image/png;base64,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\";\n const textBuffer = 1;\n const lineHeight = 3.25;\n const text = locationValue ? nmConverter(locationValue.address) : \"\";\n const textChunksSeperator = text.split(\",\");\n const textChunks = [];\n\n if (textChunks.length) {\n textChunksSeperator.forEach((chunk) => {\n const limitChunks = chunk.match(/.{1,34}/g);\n textChunks.push(...limitChunks);\n });\n }\n\n //Render map image\n pdf.addImage(\n renderMap.getCanvas().toDataURL(\"image/png\"),\n \"png\",\n 0,\n 0,\n 210,\n 297,\n null,\n \"FAST\"\n );\n\n //Render lower left Copyright box\n pdf.setFillColor(\"white\");\n pdf.rect(138, 287, 297, 10, \"F\");\n pdf.setFontSize(10); // optional\n pdf.text(\n \"Datenquelle: © OpenStreetMap-Mitwirkende\",\n 140,\n pdf.internal.pageSize.height - 3\n );\n\n //Render infobox\n pdf.setFillColor(\"white\");\n const infoBoxSize =\n textChunks.length * lineHeight +\n marginTop +\n marginBottom +\n lineHeight * 2 +\n innerMargin * 2 +\n textBuffer;\n\n pdf.rect(offsetX, 2, 66.5, infoBoxSize, \"F\");\n\n pdf.setFontSize(10);\n pdf.text(\"Karten PDF:\", 6, offsetY + marginTop);\n\n //Render inner infobox\n pdf.rect(\n 6,\n 7,\n 60,\n textChunks.length * lineHeight + innerMargin * 2 + textBuffer\n );\n pdf.setFontSize(10);\n\n //Write out address\n textChunks.forEach((text, i) => {\n pdf.text(text.trim(), 8, 10 + i * 3.5 + innerMargin);\n });\n\n //Add WG Logo\n pdf.addImage(\n logo,\n \"png\",\n 5,\n offsetY + marginTop + lineHeight * 2 + textChunks.length * 3 + innerMargin * 2,\n 3,\n 3,\n null,\n \"FAST\"\n );\n\n //Add WG Url\n pdf.setFontSize(10);\n pdf.text(\n \"wheregroup.com\",\n 40,\n offsetY +\n marginTop +\n lineHeight * 2 +\n textChunks.length * lineHeight +\n innerMargin * 2 +\n textBuffer\n );\n\n //Set pdfs props\n pdf.setProperties({\n title: \"Map export\",\n subject: \"Map export\",\n creator: \"WhereGroup GmbH\",\n author: \"(c)WhereGroup GmbH, (c)OpenStreetMap\",\n });\n\n pdf.save(\"Map.pdf\");\n\n renderMap.remove();\n hidden.parentNode?.removeChild(hidden);\n Object.defineProperty(window, \"devicePixelRatio\", {\n get: function () {\n return actualPixelRatio;\n },\n });\n\n setLoading(false);\n });\n};\n\nexport default createPdf;\n","import React, { useRef, useEffect, useContext } from \"react\";\nimport PropTypes from \"prop-types\";\nimport { MapContext } from \"@mapcomponents/react-core\";\n\nimport createPdf from \"./lib/createPdf.js\";\n\nimport PrinterIcon from \"@mui/icons-material/Print\";\nimport Button from \"@mui/material/Button\";\n\n/**\n * Renders a button that will create a PDF version of the current map view (dimensions adjusted to fit Din A4 Paper).\n *\n * @component\n */\nconst MlCreatePdfButton = (props) => {\n const mapContext = useContext(MapContext);\n const initializedRef = useRef(false);\n const mapRef = useRef(undefined);\n\n useEffect(() => {\n if (!mapContext.mapExists(props.mapId) || initializedRef.current) return;\n initializedRef.current = true;\n mapRef.current = mapContext.getMap(props.mapId);\n }, [mapContext.mapIds, mapContext, props.mapId]);\n\n return (\n <>\n <Button\n color=\"primary\"\n variant=\"contained\"\n onClick={() => {\n createPdf(mapRef.current, null, () => {});\n }}\n >\n <PrinterIcon />\n </Button>\n </>\n );\n};\n\nMlCreatePdfButton.defaultProps = {\n mapId: undefined,\n};\n\nMlCreatePdfButton.propTypes = {\n /**\n * Id of the target MapLibre instance in mapContext\n */\n mapId: PropTypes.string,\n};\n\nexport default MlCreatePdfButton;\n","import React, { useState, useRef, useEffect, useContext } from \"react\";\nimport PropTypes from \"prop-types\";\n\nimport { MapContext } from \"@mapcomponents/react-core\";\nimport { v4 as uuidv4 } from \"uuid\";\n\nimport { ReactComponent as RotateRightIcon } from \"./assets/rotate_right.svg\";\nimport { ReactComponent as RotateLeftIcon } from \"./assets/rotate_left.svg\";\nimport { ReactComponent as NeedleIcon } from \"./assets/needle.svg\";\n\nimport styled from \"@emotion/styled\";\nimport { css } from \"@emotion/css\";\n\nconst NeedleButton = styled.div`\n width: 40%;\n display: flex;\n align-items: center;\n\n &:hover {\n cursor: pointer;\n }\n path {\n filter: drop-shadow(0px 0px 15px rgba(0, 0, 0, 0.2));\n }\n &:hover path {\n filter: drop-shadow(0px 0px 13px rgba(255, 255, 255, 0.1));\n }\n path:nth-of-type(2) {\n fill: #343434;\n }\n &:hover path:nth-of-type(2) {\n fill: #434343;\n }\n path:nth-of-type(1) {\n fill: #e90318;\n }\n &:hover path:nth-of-type(1) {\n fill: #fb4052;\n }\n`;\nconst NeedleContainer = styled.div`\n pointer-events: none;\n display: flex;\n z-index: 1002;\n position: absolute;\n align-items: center;\n\n margin-left: -30%;\n path:nth-of-type(2) {\n }\n svg g {\n transform: translate(-76.7053, -29.7727) scale(2, 1);\n }\n svg {\n z-index: 9990;\n height: 150px;\n width: 200px;\n }\n`;\nconst RotateButton = styled.div`\n width: 30%;\n margin-top: 14px;\n z-index: 999;\n display: flex;\n\n svg:hover {\n cursor: pointer;\n }\n svg:hover path {\n fill: #ececec;\n filter: drop-shadow(0px 0px 5px rgba(0, 0, 0, 0.1));\n }\n path {\n fill: #bbb;\n }\n svg {\n transform: scale(0.6);\n z-index: 9990;\n height: 172px;\n }\n`;\n\n/**\n * 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.\n *\n * All style props are applied using @emotion/css to allow more complex css selectors.\n *\n * @component\n */\nconst MlNavigationCompass = (props) => {\n // Use a useRef hook to reference the layer object to be able to access it later inside useEffect hooks\n const mapContext = useContext(MapContext);\n\n const initializedRef = useRef(false);\n const mapRef = useRef(undefined);\n const componentId = useRef((props.idPrefix ? props.idPrefix : \"MlNavigationCompass-\") + uuidv4());\n\n const [bearing, setBearing] = useState(0);\n\n useEffect(() => {\n let _componentId = componentId.current;\n\n return () => {\n // This is the cleanup function, it is called when this react component is removed from react-dom\n\n if (mapRef.current) {\n mapRef.current.cleanup(_componentId);\n mapRef.current = undefined;\n }\n initializedRef.current = false;\n };\n }, []);\n\n useEffect(() => {\n if (!mapContext.mapExists(props.mapId) || initializedRef.current) return;\n initializedRef.current = true;\n mapRef.current = mapContext.getMap(props.mapId);\n\n mapRef.current.on(\n \"rotate\",\n function () {\n setBearing(Math.round(mapRef.current.getBearing()));\n },\n componentId.current\n );\n setBearing(Math.round(mapRef.current.getBearing()));\n }, [mapContext.mapIds, mapContext, props.mapId]);\n\n return (\n <>\n <div\n className={css({\n zIndex: 1000,\n top: 0,\n position: \"absolute\",\n ...props.style,\n })}\n >\n <div\n className={css({\n position: \"absolute\",\n border: \"10px solid #bcbcbc\",\n backgroundColor: \"#717171\",\n background: \"radial-gradient(#717171, #414141)\",\n height: \"200px\",\n width: \"200px\",\n borderRadius: \"50%\",\n display: \"flex\",\n justifyContent: \"center\",\n transform: \"scale(0.2) translateX(-448px) translateY(-448px)\",\n ...props.backgroundStyle,\n })}\n >\n <RotateButton className={css({ ...props.rotateRightStyle })}>\n <RotateRightIcon\n onClick={() => {\n let bearing = Math.round(mapRef.current?.getBearing());\n let rest = Math.round(bearing % 90);\n if (bearing > 0) {\n rest = 90 - rest;\n }\n if (rest === 0) {\n rest = 90;\n }\n mapRef.current?.setBearing(Math.round(bearing + Math.abs(rest)));\n }}\n ></RotateRightIcon>\n </RotateButton>\n <NeedleButton\n className={css({ ...props.needleStyle })}\n onClick={() => {\n mapRef.current?.setBearing(0);\n }}\n >\n <NeedleContainer\n style={{\n transform: \"rotate(\" + bearing + \"deg)\",\n }}\n >\n <NeedleIcon />\n </NeedleContainer>\n </NeedleButton>\n <RotateButton className={css({ ...props.rotateLeftStyle })}>\n <RotateLeftIcon\n onClick={() => {\n let bearing = Math.round(mapRef.current?.getBearing());\n let rest = Math.round(bearing % 90);\n if (bearing < 0) {\n rest = 90 + rest;\n }\n if (rest === 0) {\n rest = 90;\n }\n mapRef.current?.setBearing(Math.round(bearing - Math.abs(rest)));\n }}\n ></RotateLeftIcon>\n </RotateButton>\n </div>\n </div>\n </>\n );\n};\n\nMlNavigationCompass.propTypes = {\n /**\n * Component id prefix\n */\n idPrefix: PropTypes.string,\n /**\n * Style object to adjust css definitions of the component.\n */\n style: PropTypes.object,\n /**\n * Style object to adjust css definitions of the background.\n */\n backgroundStyle: PropTypes.object,\n /**\n * Style object to adjust css definitions of the compass needle.\n */\n needleStyle: PropTypes.object,\n /**\n * Style object to adjust css definitions of the rotate right button.\n */\n rotateRightStyle: PropTypes.object,\n /**\n * Style object to adjust css definitions of the rotate left button.\n */\n rotateLeftStyle: PropTypes.object,\n};\n\nexport default MlNavigationCompass;\n","import React from \"react\";\n\nimport {MapContext} from \"@mapcomponents/react-core\";\nimport {useEffect, useRef, useContext, useState} from \"react\";\nimport Button from \"@mui/material/Button\";\nimport ButtonGroup from \"@mui/material/ButtonGroup\";\nimport ControlPointIcon from \"@mui/icons-material/ControlPoint\";\nimport RemoveCircleOutlineIcon from \"@mui/icons-material/RemoveCircleOutline\";\n//import ZoomOutIcon from \"@mui/icons-material/ZoomOut\";\n//import ZoomInIcon from \"@mui/icons-material/ZoomIn\";\nimport GpsFixedIcon from \"@mui/icons-material/GpsFixed\";\nimport {v4 as uuidv4} from \"uuid\";\n\nimport MlNavigationCompass from \"../MlNavigationCompass/MlNavigationCompass\";\nimport MlFollowGps from \"../MlFollowGps/MlFollowGps\";\nimport useMediaQuery from \"@mui/material/useMediaQuery\";\n\nconst MlNavigationTools = (props) => {\n const mapContext = useContext(MapContext);\n const initializedRef = useRef(false);\n const mapRef = useRef(undefined);\n const componentId = useRef((props.idPrefix ? props.idPrefix : \"MlComponentTemplate-\") + uuidv4());\n\n const [pitch, setPitch] = useState(0);\n const [locationAccessDenied, setLocationAccessDenied] = useState(false);\n const mediaIsMobile = useMediaQuery(\"(max-width:900px)\");\n const buttonStyle = {\n minWidth: \"20px\",\n minHeight: \"20px\",\n width: mediaIsMobile ? \"50px\" : \"30px\",\n height: mediaIsMobile ? \"50px\" : \"30px\",\n backgroundColor: \"#414141\",\n borderRadius: \"23%\",\n //border: \"1px solid #bbb\",\n //boxShadow: \"0px 0px 4px rgba(0,0,0,.5)\",\n margin: 0.15,\n fontSize: mediaIsMobile ? \"1.5em\" : \"1.2em\",\n \":hover\": {\n backgroundColor: \"#515151\",\n },\n color: \"#ececec\"\n };\n\n useEffect(() => {\n let _componentId = componentId.current;\n\n return () => {\n // This is the cleanup function, it is called when this react component is removed from react-dom\n // try to remove anything this component has added to the MapLibre-gl instance\n // e.g.: remove the layer\n // mapContext.getMap(props.mapId).removeLayer(layerRef.current);\n // check for the existence of map.style before calling getLayer or getSource\n\n if (mapRef.current) {\n mapRef.current.cleanup(_componentId);\n mapRef.current = undefined;\n }\n initializedRef.current = false;\n };\n }, []);\n\n useEffect(() => {\n if (!mapContext.mapExists(props.mapId) || initializedRef.current) return;\n // the MapLibre-gl instance (mapContext.getMap(props.mapId)) is accessible here\n // initialize the layer and add it to the MapLibre-gl instance or do something else with it\n initializedRef.current = true;\n mapRef.current = mapContext.getMap(props.mapId);\n mapRef.current.on(\n \"pitchend\",\n () => {\n setPitch(mapRef.current.getPitch());\n },\n componentId.current\n );\n setPitch(mapRef.current.getPitch());\n }, [mapContext.mapIds, mapContext, props.mapId]);\n\n const zoomIn = () => {\n if (!mapRef.current) return;\n\n if (mapRef.current.transform._zoom + 0.5 <= mapRef.current.transform._maxZoom) {\n mapRef.current.easeTo({zoom: mapRef.current.transform._zoom + 0.5});\n }\n };\n\n const zoomOut = () => {\n if (!mapRef.current) return;\n\n if (mapRef.current.transform._zoom - 0.5 >= mapRef.current.transform._minZoom) {\n mapRef.current.easeTo({zoom: mapRef.current.transform._zoom - 0.5});\n }\n };\n\n const adjustPitch = () => {\n if (!mapRef.current) return;\n\n let targetPitch = 60;\n if (mapRef.current.getPitch() !== 0) {\n targetPitch = 0;\n }\n mapRef.current.easeTo({pitch: targetPitch});\n };\n\n const moveToCurrentLocation = () => {\n navigator.geolocation.getCurrentPosition(getLocationSuccess, getLocationError);\n };\n\n const getLocationSuccess = (location) => {\n mapRef.current.setCenter([location.coords.longitude, location.coords.latitude]);\n };\n\n const getLocationError = () => {\n console.log(\"Access of user location denied\");\n setLocationAccessDenied(true);\n };\n\n return (\n <div\n style={{\n zIndex: 501,\n position: \"absolute\",\n right: mediaIsMobile ? \"15px\" : \"5px\",\n bottom: mediaIsMobile ? \"40px\" : \"20px\",\n display: \"flex\",\n flexDirection: \"column\",\n }}\n >\n <MlNavigationCompass\n style={{\n width: \"31px\",\n position: \"relative\",\n height: mediaIsMobile ? \"55px\" : \"45px\",\n marginLeft: mediaIsMobile ? \"3px\" : \"-5px\",\n transform: mediaIsMobile ? \"scale(1.6)\" : \"scale(1)\"\n }}\n backgroundStyle={{\n boxShadow: \"0px 0px 18px rgba(0,0,0,.5)\",\n }}\n />\n <Button sx={{...buttonStyle, fontWeight: 600}} onClick={adjustPitch}>\n {pitch ? \"2D\" : \"3D\"}\n </Button>\n <Button sx={buttonStyle} onClick={moveToCurrentLocation} disabled={locationAccessDenied}>\n <GpsFixedIcon sx={{fontSize: mediaIsMobile ? \"1.5em\" : \"1.2em\"}}/>\n </Button>\n <MlFollowGps style={{...(({color, ...rest}) => rest)(buttonStyle)}} />\n <ButtonGroup\n orientation=\"vertical\"\n sx={{\n width: \"50px\",\n border: \"none\",\n Button: {minWidth: \"20px !important\", border: \"none\", padding: 0},\n \"Button:hover\": {border: \"none\"},\n }}\n >\n <Button sx={{...buttonStyle, color: \"#ececec\",}} onClick={zoomIn}>\n <ControlPointIcon sx={{fontSize: mediaIsMobile ? \"1.5em\" : \"1.2em\"}}/>\n </Button>\n <Button sx={{...buttonStyle, color: \"#ececec\",}} onClick={zoomOut}>\n <RemoveCircleOutlineIcon sx={{fontSize: mediaIsMobile ? \"1.5em\" : \"1.2em\"}}/>\n </Button>\n </ButtonGroup>\n </div>\n );\n};\n\nexport default MlNavigationTools;\n","import React, { useRef, useEffect, useContext } from \"react\";\n\nimport { v4 as uuidv4 } from \"uuid\";\nimport { MapContext } from \"@mapcomponents/react-core\";\nimport useMapState from \"../../hooks/useMapState\";\n\nconst MlLayer = (props) => {\n // Use a useRef hook to reference the layer object to be able to access it later inside useEffect hooks\n const mapContext = useContext(MapContext);\n\n const mapState = useMapState({\n mapId: props.mapId,\n watch: {\n viewport: false,\n layers: true,\n sources: false,\n },\n });\n const layerInitializedRef = useRef(false);\n const mapRef = useRef(null);\n const componentId = useRef((props.layerId ? props.layerId : \"MlLayer-\") + uuidv4());\n const layerId = useRef(props.layerId || componentId.current);\n const layerPaintConfRef = useRef(undefined);\n const layerLayoutConfRef = useRef(undefined);\n\n useEffect(() => {\n let _componentId = componentId.current;\n\n return () => {\n if (mapRef.current) {\n mapRef.current.cleanup(_componentId);\n mapRef.current = null;\n }\n };\n }, []);\n\n useEffect(() => {\n if (\n !mapContext.mapExists(props.mapId) ||\n !mapContext.getMap(props.mapId)?.getLayer?.(layerId) ||\n !layerInitializedRef.current ||\n !props.options\n )\n return;\n // the MapLibre-gl instance (mapContext.map) is accessible here\n // initialize the layer and add it to the MapLibre-gl instance or do something else with it\n var key;\n\n let layoutString = JSON.stringify(props.options.layout);\n if (props.options.layout && layoutString !== layerLayoutConfRef.current) {\n for (key in props.options.layout) {\n mapRef.current.setLayoutProperty(layerId, key, props.options.layout[key]);\n }\n layerLayoutConfRef.current = layoutString;\n }\n\n let paintString = JSON.stringify(props.options.paint);\n if (props.options.paint && paintString === layerPaintConfRef.current) {\n for (key in props.options.paint) {\n mapRef.current.setPaintProperty(layerId, key, props.options.paint[key]);\n }\n }\n }, [props.options, layerId, mapContext, props]);\n\n useEffect(() => {\n if (!mapContext.mapExists(props.mapId) || layerInitializedRef.current) return;\n // the MapLibre-gl instance (mapContext.map) is accessible here\n // initialize the layer and add it to the MapLibre-gl instance or do something else with it\n\n //check if insertBeforeLayer exists\n if (props.insertBeforeLayer) {\n let layerFound = false;\n\n mapState?.layers?.forEach((layer) => {\n if (layer.id === props.insertBeforeLayer) {\n layerFound = true;\n }\n });\n if (!layerFound) {\n return;\n }\n }\n\n mapRef.current = mapContext.getMap(props.mapId);\n if (mapRef.current) {\n layerInitializedRef.current = true;\n mapRef.current.addLayer(\n {\n id: layerId.current,\n type: \"background\",\n paint: {\n \"background-color\": \"rgba(0,0,0,0)\",\n },\n ...props.options,\n },\n props.insertBeforeLayer,\n componentId.current\n );\n layerPaintConfRef.current = JSON.stringify(props.options?.paint);\n layerLayoutConfRef.current = JSON.stringify(props.options?.layout);\n }\n }, [mapContext.mapIds, mapContext, props, mapState.layers]);\n\n return <></>;\n};\n\nexport default MlLayer;\n","import React, { useContext, useRef, useEffect, useState } from \"react\";\nimport { MapContext } from \"@mapcomponents/react-core\";\nimport { v4 as uuidv4 } from \"uuid\";\n\nimport Button from \"@mui/material/Button\";\nimport PropTypes from \"prop-types\";\n\n/**\n * Adds a standard OSM tile layer to the maplibre-gl instancereference by\n * props.mapId\n *\n * @component\n */\nconst MlOsmLayer = (props) => {\n const mapContext = useContext(MapContext);\n const mapRef = useRef(undefined);\n\n const [showLayer, setShowLayer] = useState(true);\n const componentId = useRef((props.idPrefix ? props.idPrefix : \"MlOsmLayer-\") + uuidv4());\n const initializedRef = useRef(false);\n const sourceIdRef = useRef((props.idPrefix ? props.idPrefix : \"MlOsmLayer-source-\") + uuidv4());\n const layerIdRef = useRef((props.idPrefix ? props.idPrefix : \"MlOsmLayer-layer-\") + uuidv4());\n\n useEffect(() => {\n let _componentId = componentId.current;\n return () => {\n // This is the cleanup function, it is called when this react component is removed from react-dom\n if (mapRef.current) {\n mapRef.current.cleanup(_componentId);\n\n mapRef.current = null;\n }\n };\n }, []);\n\n useEffect(() => {\n if (!mapContext.mapExists(props.mapId) || initializedRef.current) return;\n\n initializedRef.current = true;\n mapRef.current = mapContext.getMap(props.mapId);\n\n mapRef.current.addSource(\n sourceIdRef.current,\n {\n type: \"raster\",\n tileSize: 256,\n ...props.sourceOptions,\n },\n componentId.current\n );\n mapRef.current.addLayer(\n {\n id: layerIdRef.current,\n type: \"raster\",\n source: sourceIdRef.current,\n minzoom: 0,\n maxzoom: 22,\n ...props.layerOptions,\n },\n props.insertBeforeLayer,\n componentId.current\n );\n }, [mapContext.mapIds, props, mapContext]);\n\n useEffect(() => {\n if (!mapRef.current) return;\n\n // toggle layer visibility by changing the layout object's visibility property\n if (showLayer) {\n mapRef.current.setLayoutProperty(layerIdRef.current, \"visibility\", \"visible\");\n } else {\n mapRef.current.setLayoutProperty(layerIdRef.current, \"visibility\", \"none\");\n }\n }, [showLayer]);\n\n return (\n <Button\n color=\"primary\"\n variant={showLayer ? \"contained\" : \"outlined\"}\n onClick={() => setShowLayer(!showLayer)}\n >\n OSM\n </Button>\n );\n};\n\nMlOsmLayer.propTypes = {\n /**\n * Id of the target MapLibre instance in mapContext\n */\n mapId: PropTypes.string,\n /**\n * Prefix of the component id this component uses when adding elements to the MapLibreGl-instance\n */\n idPrefix: PropTypes.string,\n /**\n * Options object that will be used as first parameter on the MapLibreGl.addSource call see MapLibre source options documentation.\n */\n sourceOptions: PropTypes.object,\n /**\n * Options object that will be used as first parameter on the MapLibreGl.addLayer call see MapLibre layer options documentation.\n *\n */\n layerOptions: PropTypes.object,\n /**\n * The layerId of an existing layer this layer should be rendered visually beneath\n * https://maplibre.org/maplibre-gl-js-docs/api/map/#map#addlayer - see \"beforeId\" property\n */\n insertBeforeLayer: PropTypes.string,\n};\n\nexport default MlOsmLayer;\n","import React, { useRef, useEffect } from \"react\";\nimport useMap from \"../../hooks/useMap\";\nimport PropTypes from \"prop-types\";\n\n/**\n * Adds a vector-tile source and 0...n vector-tile-layers to the MapLibre instance referenced by\n * props.mapId\n *\n * @component\n */\nconst MlVectorTileLayer = (props) => {\n const mapHook = useMap({ mapId: props.mapId, waitForLayer: props.insertBeforeLayer });\n\n const layerIdsRef = useRef({});\n const layerId = useRef(props.layerId || \"MlVectorTileLayer-\" + mapHook.componentId);\n const layerPaintConfsRef = useRef({});\n const layerLayoutConfsRef = useRef({});\n const initializedRef = useRef(false);\n\n useEffect(() => {\n if (!mapHook.map || initializedRef.current) return;\n\n initializedRef.current = true;\n\n // Add the new layer to the openlayers instance once it is available\n mapHook.map.addSource(\n layerId,\n {\n type: \"vector\",\n tiles: [props.url],\n tileSize: 512,\n attribution: \"\",\n ...props.sourceOptions,\n },\n mapHook.componentId\n );\n\n for (let key in props.layers) {\n let _layerId = layerId.current + \"_\" + key;\n layerIdsRef.current[key] = _layerId;\n\n console.log(_layerId);\n mapHook.map.addLayer(\n {\n id: _layerId,\n source: layerId.current,\n type: \"line\",\n minzoom: 0,\n maxzoom: 22,\n layout: {},\n paint: {\n \"line-opacity\": 0.5,\n \"line-color\": \"rgb(80, 80, 80)\",\n \"line-width\": 2,\n },\n ...props.layers[key],\n },\n props.insertBeforeLayer,\n mapHook.componentId\n );\n layerPaintConfsRef.current[key] = JSON.stringify(props.layers[key].paint);\n layerLayoutConfsRef.current[key] = JSON.stringify(props.layers[key].layout);\n }\n }, [mapHook.map, props]);\n\n useEffect(() => {\n if (!mapHook.map || !initializedRef.current) return;\n // initialize the layer and add it to the MapLibre-gl instance or do something else with it\n for (var key in props.layers) {\n if (mapHook.map.getLayer(layerIdsRef.current[key])) {\n // update changed paint property\n let layerPaintConfString = JSON.stringify(props.layers[key].paint);\n\n if (layerPaintConfString !== layerPaintConfsRef.current[key]) {\n for (let paintKey in props.layers[key].paint) {\n mapHook.map.setPaintProperty(\n layerIdsRef.current[key],\n paintKey,\n props.layers[key].paint[paintKey]\n );\n }\n }\n layerPaintConfsRef.current[key] = layerPaintConfString;\n\n // update changed layout property\n let layerLayoutConfString = JSON.stringify(props.layers[key].layout);\n\n if (layerLayoutConfString !== layerLayoutConfsRef.current[key]) {\n for (let layoutKey in props.layers[key].layout) {\n mapHook.map.setLayoutProperty(\n layerIdsRef.current[key],\n layoutKey,\n props.layers[key].layout[layoutKey]\n );\n }\n }\n layerLayoutConfsRef.current[key] = layerLayoutConfString;\n }\n }\n }, [props.layers, mapHook.map]);\n\n return <></>;\n};\n\nMlVectorTileLayer.propTypes = {\n /**\n * Id of the target MapLibre instance in mapContext\n */\n mapId: PropTypes.string,\n /**\n * Options object that will be used as first parameter on the MapLibreGl.addSource call see MapLibre source options documentation.\n */\n sourceOptions: PropTypes.object,\n /**\n * Object that hold layers\n */\n layers: PropTypes.object,\n /**\n * String of the URL of a wms layer\n */\n url: PropTypes.string,\n};\n\nexport default MlVectorTileLayer;\n","import React, { useRef, useEffect } from \"react\";\nimport useMap from \"../../hooks/useMap\";\n\nimport PropTypes from \"prop-types\";\nimport { v4 as uuidv4 } from \"uuid\";\n\nconst defaultProps = {\n visible: true,\n urlParameters: {\n bbox: \"{bbox-epsg-3857}\",\n format: \"image/png\",\n service: \"WMS\",\n version: \"1.1.1\",\n request: \"GetMap\",\n srs: \"EPSG:3857\",\n width: 256,\n height: 256,\n styles: \"\",\n },\n attribution: \"\",\n sourceOptions: {\n minZoom: 0,\n maxZoom: 20,\n },\n layerOptions: {\n minZoom: 0,\n maxZoom: 20,\n },\n};\n\n/**\n * Adds a WMS raster source & layer to the maplibre-gl instance\n *\n * @param {object} props\n * @param {object} props.urlParameters URL query parameters that will be added to the WMS URL. A layers property (string) is mandatory. Any value defined on this attribute will extend the default object\n * @param {string} props.url WMS URL\n * @param {bool} props.visible Sets layer \"visibility\" property to \"visible\" if true or \"none\" if false\n * @param {string} props.attribution MapLibre attribution shown in the bottom right of the map, if this layer is visible\n * @param {string} props.mapId Id of the target MapLibre instance in mapContext\n * @param {object} props.sourceOptions Object that is passed to the MapLibre.addSource call as config option parameter\n * @param {object} props.layerOptions Object that is passed to the MapLibre.addLayer call as config option parameter\n * @param {string} props.insertBeforeLayer Id of an existing layer in the mapLibre instance to help specify the layer order\n This layer will be visually beneath the layer with the \"insertBeforeLayer\" id\n *\n * @component\n */\nconst MlWmsLayer = (props) => {\n const mapHook = useMap({ mapId: props.mapId, waitForLayer: props.insertBeforeLayer });\n\n const initializedRef = useRef(false);\n const layerId = useRef(props.layerId || \"MlWmsLayer-\" + mapHook.componentId);\n\n useEffect(() => {\n if (!mapHook.map || initializedRef.current) return;\n\n initializedRef.current = true;\n\n let _propsUrlParams;\n let _wmsUrl = props.url;\n if (props.url.indexOf(\"?\") !== -1) {\n _propsUrlParams = props.url.split(\"?\");\n _wmsUrl = _propsUrlParams[0];\n }\n let _urlParamsFromUrl = new URLSearchParams(_propsUrlParams?.[1]);\n // first spread in default props manually to enable overriding a single parameter without replacing the whole default urlParameters object\n let urlParamsObj = {\n ...defaultProps.urlParameters,\n ...Object.fromEntries(_urlParamsFromUrl),\n ...props.urlParameters,\n };\n let urlParams = new URLSearchParams(urlParamsObj);\n let urlParamsStr =\n decodeURIComponent(urlParams.toString()) + \"\".replace(/%2F/g, \"/\").replace(/%3A/g, \":\");\n\n mapHook.map.addSource(\n layerId.current,\n {\n type: \"raster\",\n tiles: [_wmsUrl + \"?\" + urlParamsStr],\n tileSize: urlParamsObj.width,\n attribution: props.attribution,\n ...props.sourceOptions,\n },\n mapHook.componentId\n );\n\n mapHook.map.addLayer(\n {\n id: layerId.current,\n type: \"raster\",\n source: layerId.current,\n ...props.layerOptions,\n },\n props.insertBeforeLayer,\n mapHook.componentId\n );\n\n if (!props.visible) {\n mapHook.map.setLayoutProperty(layerId.current, \"visibility\", \"none\");\n }\n }, [mapHook.map, props]);\n\n useEffect(() => {\n if (!mapHook.map || !initializedRef.current) return;\n\n // toggle layer visibility by changing the layout object's visibility property\n if (props.visible) {\n mapHook.map.setLayoutProperty(layerId.current, \"visibility\", \"visible\");\n } else {\n mapHook.map.setLayoutProperty(layerId.current, \"visibility\", \"none\");\n }\n }, [props.visible, mapHook.map]);\n\n return <></>;\n};\n\nMlWmsLayer.defaultProps = {\n ...defaultProps,\n};\n\nMlWmsLayer.propTypes = {\n /**\n * WMS URL\n */\n url: PropTypes.string.isRequired,\n /**\n * URL query parameters that will be added to the WMS URL. A layers property (string) is mandatory. Any value defined on this attribute will extend the default object.\n */\n urlParameters: PropTypes.shape({\n layers: PropTypes.string.isRequired,\n bbox: PropTypes.string,\n format: PropTypes.string,\n service: PropTypes.string,\n version: PropTypes.string,\n request: PropTypes.string,\n srs: PropTypes.string,\n width: PropTypes.number,\n height: PropTypes.number,\n }),\n /**\n * Id of the target MapLibre instance in mapContext\n */\n mapId: PropTypes.string,\n /**\n * MapLibre attribution shown in the bottom right of the map, if this layer is visible\n */\n attribution: PropTypes.string,\n /**\n * Object that is passed to the MapLibre.addLayer call as config option parameter\n */\n layerOptions: PropTypes.object,\n /**\n * Object that is passed to the MapLibre.addSource call as config option parameter\n */\n sourceOptions: PropTypes.object,\n /**\n * Id of an existing layer in the mapLibre instance to help specify the layer order\n * This layer will be visually beneath the layer with the \"insertBeforeLayer\" id.\n */\n insertBeforeLayer: PropTypes.string,\n /**\n * Sets layer \"visibility\" property to \"visible\" if true or \"none\" if false\n */\n visible: PropTypes.bool,\n};\nexport default MlWmsLayer;\n","export const classes = {\n CONTROL_BASE: 'mapboxgl-ctrl',\n CONTROL_PREFIX: 'mapboxgl-ctrl-',\n CONTROL_BUTTON: 'mapbox-gl-draw_ctrl-draw-btn',\n CONTROL_BUTTON_LINE: 'mapbox-gl-draw_line',\n CONTROL_BUTTON_POLYGON: 'mapbox-gl-draw_polygon',\n CONTROL_BUTTON_POINT: 'mapbox-gl-draw_point',\n CONTROL_BUTTON_TRASH: 'mapbox-gl-draw_trash',\n CONTROL_BUTTON_COMBINE_FEATURES: 'mapbox-gl-draw_combine',\n CONTROL_BUTTON_UNCOMBINE_FEATURES: 'mapbox-gl-draw_uncombine',\n CONTROL_GROUP: 'mapboxgl-ctrl-group',\n ATTRIBUTION: 'mapboxgl-ctrl-attrib',\n ACTIVE_BUTTON: 'active',\n BOX_SELECT: 'mapbox-gl-draw_boxselect'\n};\n\nexport const sources = {\n HOT: 'mapbox-gl-draw-hot',\n COLD: 'mapbox-gl-draw-cold'\n};\n\nexport const cursors = {\n ADD: 'add',\n MOVE: 'move',\n DRAG: 'drag',\n POINTER: 'pointer',\n NONE: 'none'\n};\n\nexport const types = {\n POLYGON: 'polygon',\n LINE: 'line_string',\n POINT: 'point'\n};\n\nexport const geojsonTypes = {\n FEATURE: 'Feature',\n POLYGON: 'Polygon',\n LINE_STRING: 'LineString',\n POINT: 'Point',\n FEATURE_COLLECTION: 'FeatureCollection',\n MULTI_PREFIX: 'Multi',\n MULTI_POINT: 'MultiPoint',\n MULTI_LINE_STRING: 'MultiLineString',\n MULTI_POLYGON: 'MultiPolygon'\n};\n\nexport const modes = {\n DRAW_LINE_STRING: 'draw_line_string',\n DRAW_POLYGON: 'draw_polygon',\n DRAW_POINT: 'draw_point',\n SIMPLE_SELECT: 'simple_select',\n DIRECT_SELECT: 'direct_select',\n STATIC: 'static'\n};\n\nexport const events = {\n CREATE: 'draw.create',\n DELETE: 'draw.delete',\n UPDATE: 'draw.update',\n SELECTION_CHANGE: 'draw.selectionchange',\n MODE_CHANGE: 'draw.modechange',\n ACTIONABLE: 'draw.actionable',\n RENDER: 'draw.render',\n COMBINE_FEATURES: 'draw.combine',\n UNCOMBINE_FEATURES: 'draw.uncombine'\n};\n\nexport const updateActions = {\n MOVE: 'move',\n CHANGE_COORDINATES: 'change_coordinates'\n};\n\nexport const meta = {\n FEATURE: 'feature',\n MIDPOINT: 'midpoint',\n VERTEX: 'vertex'\n};\n\nexport const activeStates = {\n ACTIVE: 'true',\n INACTIVE: 'false'\n};\n\nexport const interactions = [\n 'scrollZoom',\n 'boxZoom',\n 'dragRotate',\n 'dragPan',\n 'keyboard',\n 'doubleClickZoom',\n 'touchZoomRotate'\n];\n\nexport const LAT_MIN = -90;\nexport const LAT_RENDERED_MIN = -85;\nexport const LAT_MAX = 90;\nexport const LAT_RENDERED_MAX = 85;\nexport const LNG_MIN = -270;\nexport const LNG_MAX = 270;\n","import * as Constants from \"./constants\";\n\nexport function isOfMetaType(type) {\n return function (e) {\n const featureTarget = e.featureTarget;\n if (!featureTarget) return false;\n if (!featureTarget.properties) return false;\n return featureTarget.properties.meta === type;\n };\n}\n\nexport function isShiftMousedown(e) {\n if (!e.originalEvent) return false;\n if (!e.originalEvent.shiftKey) return false;\n return e.originalEvent.button === 0;\n}\n\nexport function isActiveFeature(e) {\n if (!e.featureTarget) return false;\n if (!e.featureTarget.properties) return false;\n return (\n e.featureTarget.properties.active === Constants.activeStates.ACTIVE &&\n e.featureTarget.properties.meta === Constants.meta.FEATURE\n );\n}\n\nexport function isInactiveFeature(e) {\n if (!e.featureTarget) return false;\n if (!e.featureTarget.properties) return false;\n return (\n e.featureTarget.properties.active === Constants.activeStates.INACTIVE &&\n e.featureTarget.properties.meta === Constants.meta.FEATURE\n );\n}\n\nexport function noTarget(e) {\n return e.featureTarget === undefined;\n}\n\nexport function isFeature(e) {\n if (!e.featureTarget) return false;\n if (!e.featureTarget.properties) return false;\n return e.featureTarget.properties.meta === Constants.meta.FEATURE;\n}\n\nexport function isVertex(e) {\n const featureTarget = e.featureTarget;\n if (!featureTarget) return false;\n if (!featureTarget.properties) return false;\n return featureTarget.properties.meta === Constants.meta.VERTEX;\n}\n\nexport function isShiftDown(e) {\n if (!e.originalEvent) return false;\n return e.originalEvent.shiftKey === true;\n}\n\nexport function isEscapeKey(e) {\n return e.keyCode === 27;\n}\n\nexport function isEnterKey(e) {\n return e.keyCode === 13;\n}\n\nexport function isTrue() {\n return true;\n}\n","const doubleClickZoom = {\n enable(ctx) {\n setTimeout(() => {\n // First check we've got a map and some context.\n if (\n !ctx.map ||\n !ctx.map.doubleClickZoom ||\n !ctx._ctx ||\n !ctx._ctx.store ||\n !ctx._ctx.store.getInitialConfigValue\n )\n return;\n // Now check initial state wasn't false (we leave it disabled if so)\n if (!ctx._ctx.store.getInitialConfigValue(\"doubleClickZoom\")) return;\n ctx.map.doubleClickZoom.enable();\n }, 0);\n },\n disable(ctx) {\n setTimeout(() => {\n if (!ctx.map || !ctx.map.doubleClickZoom) return;\n // Always disable here, as it's necessary in some cases.\n ctx.map.doubleClickZoom.disable();\n }, 0);\n },\n};\nexport default doubleClickZoom;\n","function isEventAtCoordinates(event, coordinates) {\n if (!event.lngLat) return false;\n return event.lngLat.lng === coordinates[0] && event.lngLat.lat === coordinates[1];\n}\n\nexport default isEventAtCoordinates;\n","import * as Constants from \"./constants\";\n\n/**\n * Returns GeoJSON for a Point representing the\n * vertex of another feature.\n *\n * @param {string} parentId\n * @param {Array<number>} coordinates\n * @param {string} path - Dot-separated numbers indicating exactly\n * where the point exists within its parent feature's coordinates.\n * @param {boolean} selected\n * @return {GeoJSON} Point\n */\nconst create_vertex = function (parentId, coordinates, path, selected) {\n return {\n type: Constants.geojsonTypes.FEATURE,\n properties: {\n meta: Constants.meta.VERTEX,\n parent: parentId,\n coord_path: path,\n active: selected\n ? Constants.activeStates.ACTIVE\n : Constants.activeStates.INACTIVE,\n },\n geometry: {\n type: Constants.geojsonTypes.POINT,\n coordinates,\n },\n };\n};\nexport default create_vertex;\n","import * as CommonSelectors from \"./lib/common_selectors\";\nimport doubleClickZoom from \"./lib/double_click_zoom\";\nimport * as Constants from \"./lib/constants\";\nimport isEventAtCoordinates from \"./lib/is_event_at_coordinates\";\nimport createVertex from \"./lib/create_vertex\";\n\nconst CustomPolygonMode = {};\n\nCustomPolygonMode.onSetup = function () {\n console.log(\"Change mode: custom polygon\");\n\n const polygon = this.newFeature({\n type: Constants.geojsonTypes.FEATURE,\n properties: {},\n geometry: {\n type: Constants.geojsonTypes.POLYGON,\n coordinates: [[]],\n },\n });\n\n this.addFeature(polygon);\n\n this.clearSelectedFeatures();\n doubleClickZoom.disable(this);\n this.updateUIClasses({ mouse: Constants.cursors.ADD });\n this.activateUIButton(Constants.types.POLYGON);\n this.setActionableState({\n trash: true,\n });\n\n return {\n polygon,\n currentVertexPosition: 0,\n };\n};\n\nCustomPolygonMode.clickAnywhere = function (state, e) {\n if (\n state.currentVertexPosition > 0 &&\n isEventAtCoordinates(\n e,\n state.polygon.coordinates[0][state.currentVertexPosition - 1]\n )\n ) {\n return this.changeMode(\"custom_select\", {\n featureIds: [state.polygon.id],\n });\n }\n this.updateUIClasses({ mouse: Constants.cursors.ADD });\n state.polygon.updateCoordinate(\n `0.${state.currentVertexPosition}`,\n e.lngLat.lng,\n e.lngLat.lat\n );\n state.currentVertexPosition++;\n state.polygon.updateCoordinate(\n `0.${state.currentVertexPosition}`,\n e.lngLat.lng,\n e.lngLat.lat\n );\n\n this.map.fire(Constants.events.CREATE, {\n features: [state.polygon.toGeoJSON()],\n });\n};\n\nCustomPolygonMode.clickOnVertex = function (state) {\n return this.changeMode(\"custom_select\", {\n featureIds: [state.polygon.id],\n });\n};\n\nCustomPolygonMode.onMouseMove = function (state, e) {\n state.polygon.updateCoordinate(\n `0.${state.currentVertexPosition}`,\n e.lngLat.lng,\n e.lngLat.lat\n );\n\n if (CommonSelectors.isVertex(e)) {\n this.updateUIClasses({ mouse: Constants.cursors.POINTER });\n }\n};\n\nCustomPolygonMode.onTap = CustomPolygonMode.onClick = function (state, e) {\n if (CommonSelectors.isVertex(e)) return this.clickOnVertex(state, e);\n return this.clickAnywhere(state, e);\n};\n\nCustomPolygonMode.onKeyUp = function (state, e) {\n if (CommonSelectors.isEscapeKey(e)) {\n this.deleteFeature([state.polygon.id], { silent: true });\n this.changeMode(\"custom_select\");\n } else if (CommonSelectors.isEnterKey(e)) {\n this.changeMode(\"custom_select\", {\n featureIds: [state.polygon.id],\n });\n }\n};\n\nCustomPolygonMode.onStop = function (state) {\n this.updateUIClasses({ mouse: Constants.cursors.NONE });\n doubleClickZoom.enable(this);\n this.activateUIButton();\n\n // check to see if we've deleted this feature\n if (this.getFeature(state.polygon.id) === undefined) return;\n\n //remove last added coordinate\n state.polygon.removeCoordinate(`0.${state.currentVertexPosition}`);\n if (state.polygon.isValid()) {\n this.map.fire(Constants.events.CREATE, {\n features: [state.polygon.toGeoJSON()],\n });\n } else {\n this.deleteFeature([state.polygon.id], { silent: true });\n this.changeMode(\"custom_select\", {}, { silent: true });\n }\n};\n\nCustomPolygonMode.toDisplayFeatures = function (state, geojson, display) {\n const isActivePolygon = geojson.properties.id === state.polygon.id;\n geojson.properties.active = isActivePolygon\n ? Constants.activeStates.ACTIVE\n : Constants.activeStates.INACTIVE;\n if (!isActivePolygon) return display(geojson);\n\n // Don't render a polygon until it has two positions\n // (and a 3rd which is just the first repeated)\n if (geojson.geometry.coordinates.length === 0) return;\n\n const coordinateCount = geojson.geometry.coordinates[0].length;\n // 2 coordinates after selecting a draw type\n // 3 after creating the first point\n if (coordinateCount < 3) {\n return;\n }\n geojson.properties.meta = Constants.meta.FEATURE;\n display(\n createVertex(state.polygon.id, geojson.geometry.coordinates[0][0], \"0.0\", false)\n );\n if (coordinateCount > 3) {\n // Add a start position marker to the map, clicking on this will finish the feature\n // This should only be shown when we're in a valid spot\n const endPos = geojson.geometry.coordinates[0].length - 3;\n display(\n createVertex(\n state.polygon.id,\n geojson.geometry.coordinates[0][endPos],\n `0.${endPos}`,\n false\n )\n );\n }\n if (coordinateCount <= 4) {\n // If we've only drawn two positions (plus the closer),\n // make a LineString instead of a Polygon\n const lineCoordinates = [\n [geojson.geometry.coordinates[0][0][0], geojson.geometry.coordinates[0][0][1]],\n [geojson.geometry.coordinates[0][1][0], geojson.geometry.coordinates[0][1][1]],\n ];\n // create an initial vertex so that we can track the first point on mobile devices\n display({\n type: Constants.geojsonTypes.FEATURE,\n properties: geojson.properties,\n geometry: {\n coordinates: lineCoordinates,\n type: Constants.geojsonTypes.LINE_STRING,\n },\n });\n if (coordinateCount === 3) {\n return;\n }\n }\n // render the Polygon\n return display(geojson);\n};\n\nCustomPolygonMode.onTrash = function (state) {\n this.deleteFeature([state.polygon.id], { silent: true });\n this.changeMode(\"custom_select\");\n};\n\nexport default CustomPolygonMode;\n","import Point from '@mapbox/point-geometry';\n\n/**\n * Returns a Point representing a mouse event's position\n * relative to a containing element.\n *\n * @param {MouseEvent} mouseEvent\n * @param {Node} container\n * @returns {Point}\n */\nfunction mouseEventPoint(mouseEvent, container) {\n const rect = container.getBoundingClientRect();\n return new Point(\n mouseEvent.clientX - rect.left - (container.clientLeft || 0),\n mouseEvent.clientY - rect.top - (container.clientTop || 0)\n );\n}\n\nexport default mouseEventPoint;\n","import * as Constants from \"./constants\";\n\nconst create_midpoint = function (parent, startVertex, endVertex) {\n const startCoord = startVertex.geometry.coordinates;\n const endCoord = endVertex.geometry.coordinates;\n\n // If a coordinate exceeds the projection, we can't calculate a midpoint,\n // so run away\n if (\n startCoord[1] > Constants.LAT_RENDERED_MAX ||\n startCoord[1] < Constants.LAT_RENDERED_MIN ||\n endCoord[1] > Constants.LAT_RENDERED_MAX ||\n endCoord[1] < Constants.LAT_RENDERED_MIN\n ) {\n return null;\n }\n\n const mid = {\n lng: (startCoord[0] + endCoord[0]) / 2,\n lat: (startCoord[1] + endCoord[1]) / 2,\n };\n\n return {\n type: Constants.geojsonTypes.FEATURE,\n properties: {\n meta: Constants.meta.MIDPOINT,\n parent,\n lng: mid.lng,\n lat: mid.lat,\n coord_path: endVertex.properties.coord_path,\n },\n geometry: {\n type: Constants.geojsonTypes.POINT,\n coordinates: [mid.lng, mid.lat],\n },\n };\n};\nexport default create_midpoint;\n","import createVertex from \"./create_vertex\";\nimport createMidpoint from \"./create_midpoint\";\nimport * as Constants from \"./constants\";\n\nfunction createSupplementaryPoints(geojson, options = {}, basePath = null) {\n const { type, coordinates } = geojson.geometry;\n const featureId = geojson.properties && geojson.properties.id;\n\n let supplementaryPoints = [];\n\n if (type === Constants.geojsonTypes.POINT) {\n // For points, just create a vertex\n supplementaryPoints.push(\n createVertex(featureId, coordinates, basePath, isSelectedPath(basePath))\n );\n } else if (type === Constants.geojsonTypes.POLYGON) {\n // Cycle through a Polygon's rings and\n // process each line\n coordinates.forEach((line, lineIndex) => {\n processLine(\n line,\n basePath !== null ? `${basePath}.${lineIndex}` : String(lineIndex)\n );\n });\n } else if (type === Constants.geojsonTypes.LINE_STRING) {\n processLine(coordinates, basePath);\n } else if (type.indexOf(Constants.geojsonTypes.MULTI_PREFIX) === 0) {\n processMultiGeometry();\n }\n\n function processLine(line, lineBasePath) {\n let firstPointString = \"\";\n let lastVertex = null;\n line.forEach((point, pointIndex) => {\n const pointPath =\n lineBasePath !== undefined && lineBasePath !== null\n ? `${lineBasePath}.${pointIndex}`\n : String(pointIndex);\n const vertex = createVertex(\n featureId,\n point,\n pointPath,\n isSelectedPath(pointPath)\n );\n\n // If we're creating midpoints, check if there was a\n // vertex before this one. If so, add a midpoint\n // between that vertex and this one.\n if (options.midpoints && lastVertex) {\n const midpoint = createMidpoint(featureId, lastVertex, vertex);\n if (midpoint) {\n supplementaryPoints.push(midpoint);\n }\n }\n lastVertex = vertex;\n\n // A Polygon line's last point is the same as the first point. If we're on the last\n // point, we want to draw a midpoint before it but not another vertex on it\n // (since we already a vertex there, from the first point).\n const stringifiedPoint = JSON.stringify(point);\n if (firstPointString !== stringifiedPoint) {\n supplementaryPoints.push(vertex);\n }\n if (pointIndex === 0) {\n firstPointString = stringifiedPoint;\n }\n });\n }\n\n function isSelectedPath(path) {\n if (!options.selectedPaths) return false;\n return options.selectedPaths.indexOf(path) !== -1;\n }\n\n // Split a multi-geometry into constituent\n // geometries, and accumulate the supplementary points\n // for each of those constituents\n function processMultiGeometry() {\n const subType = type.replace(Constants.geojsonTypes.MULTI_PREFIX, \"\");\n coordinates.forEach((subCoordinates, index) => {\n const subFeature = {\n type: Constants.geojsonTypes.FEATURE,\n properties: geojson.properties,\n geometry: {\n type: subType,\n coordinates: subCoordinates,\n },\n };\n supplementaryPoints = supplementaryPoints.concat(\n createSupplementaryPoints(subFeature, options, index)\n );\n });\n }\n\n return supplementaryPoints;\n}\n\nexport default createSupplementaryPoints;\n","function StringSet(items) {\n this._items = {};\n this._nums = {};\n this._length = items ? items.length : 0;\n if (!items) return;\n for (let i = 0, l = items.length; i < l; i++) {\n this.add(items[i]);\n if (items[i] === undefined) continue;\n if (typeof items[i] === 'string') this._items[items[i]] = i;\n else this._nums[items[i]] = i;\n\n }\n}\n\nStringSet.prototype.add = function(x) {\n if (this.has(x)) return this;\n this._length++;\n if (typeof x === 'string') this._items[x] = this._length;\n else this._nums[x] = this._length;\n return this;\n};\n\nStringSet.prototype.delete = function(x) {\n if (this.has(x) === false) return this;\n this._length--;\n delete this._items[x];\n delete this._nums[x];\n return this;\n};\n\nStringSet.prototype.has = function(x) {\n if (typeof x !== 'string' && typeof x !== 'number') return false;\n return this._items[x] !== undefined || this._nums[x] !== undefined;\n};\n\nStringSet.prototype.values = function() {\n const values = [];\n Object.keys(this._items).forEach((k) => {\n values.push({ k, v: this._items[k] });\n });\n Object.keys(this._nums).forEach((k) => {\n values.push({ k: JSON.parse(k), v: this._nums[k] });\n });\n\n return values.sort((a, b) => a.v - b.v).map(a => a.k);\n};\n\nStringSet.prototype.clear = function() {\n this._length = 0;\n this._items = {};\n this._nums = {};\n return this;\n};\n\nexport default StringSet;\n","import extent from \"@mapbox/geojson-extent\";\nimport * as Constants from \"./constants\";\n\nconst {\n LAT_MIN,\n LAT_MAX,\n LAT_RENDERED_MIN,\n LAT_RENDERED_MAX,\n LNG_MIN,\n LNG_MAX,\n} = Constants;\n\n// Ensure that we do not drag north-south far enough for\n// - any part of any feature to exceed the poles\n// - any feature to be completely lost in the space between the projection's\n// edge and the poles, such that it couldn't be re-selected and moved back\nconst constrain_feature_movement = function (geojsonFeatures, delta) {\n // \"inner edge\" = a feature's latitude closest to the equator\n let northInnerEdge = LAT_MIN;\n let southInnerEdge = LAT_MAX;\n // \"outer edge\" = a feature's latitude furthest from the equator\n let northOuterEdge = LAT_MIN;\n let southOuterEdge = LAT_MAX;\n\n let westEdge = LNG_MAX;\n let eastEdge = LNG_MIN;\n\n geojsonFeatures.forEach((feature) => {\n const bounds = extent(feature);\n const featureSouthEdge = bounds[1];\n const featureNorthEdge = bounds[3];\n const featureWestEdge = bounds[0];\n const featureEastEdge = bounds[2];\n if (featureSouthEdge > northInnerEdge) northInnerEdge = featureSouthEdge;\n if (featureNorthEdge < southInnerEdge) southInnerEdge = featureNorthEdge;\n if (featureNorthEdge > northOuterEdge) northOuterEdge = featureNorthEdge;\n if (featureSouthEdge < southOuterEdge) southOuterEdge = featureSouthEdge;\n if (featureWestEdge < westEdge) westEdge = featureWestEdge;\n if (featureEastEdge > eastEdge) eastEdge = featureEastEdge;\n });\n\n // These changes are not mutually exclusive: we might hit the inner\n // edge but also have hit the outer edge and therefore need\n // another readjustment\n const constrainedDelta = delta;\n if (northInnerEdge + constrainedDelta.lat > LAT_RENDERED_MAX) {\n constrainedDelta.lat = LAT_RENDERED_MAX - northInnerEdge;\n }\n if (northOuterEdge + constrainedDelta.lat > LAT_MAX) {\n constrainedDelta.lat = LAT_MAX - northOuterEdge;\n }\n if (southInnerEdge + constrainedDelta.lat < LAT_RENDERED_MIN) {\n constrainedDelta.lat = LAT_RENDERED_MIN - southInnerEdge;\n }\n if (southOuterEdge + constrainedDelta.lat < LAT_MIN) {\n constrainedDelta.lat = LAT_MIN - southOuterEdge;\n }\n if (westEdge + constrainedDelta.lng <= LNG_MIN) {\n constrainedDelta.lng += Math.ceil(Math.abs(constrainedDelta.lng) / 360) * 360;\n }\n if (eastEdge + constrainedDelta.lng >= LNG_MAX) {\n constrainedDelta.lng -= Math.ceil(Math.abs(constrainedDelta.lng) / 360) * 360;\n }\n\n return constrainedDelta;\n};\n\nexport default constrain_feature_movement;\n","import constrainFeatureMovement from \"./constrain_feature_movement\";\nimport * as Constants from \"./constants\";\n\nvar move_features = function (features, delta) {\n const constrainedDelta = constrainFeatureMovement(\n features.map((feature) => feature.toGeoJSON()),\n delta\n );\n\n features.forEach((feature) => {\n const currentCoordinates = feature.getCoordinates();\n\n const moveCoordinate = (coord) => {\n const point = {\n lng: coord[0] + constrainedDelta.lng,\n lat: coord[1] + constrainedDelta.lat,\n };\n return [point.lng, point.lat];\n };\n const moveRing = (ring) => ring.map((coord) => moveCoordinate(coord));\n const moveMultiPolygon = (multi) => multi.map((ring) => moveRing(ring));\n\n let nextCoordinates;\n if (feature.type === Constants.geojsonTypes.POINT) {\n nextCoordinates = moveCoordinate(currentCoordinates);\n } else if (\n feature.type === Constants.geojsonTypes.LINE_STRING ||\n feature.type === Constants.geojsonTypes.MULTI_POINT\n ) {\n nextCoordinates = currentCoordinates.map(moveCoordinate);\n } else if (\n feature.type === Constants.geojsonTypes.POLYGON ||\n feature.type === Constants.geojsonTypes.MULTI_LINE_STRING\n ) {\n nextCoordinates = currentCoordinates.map(moveRing);\n } else if (feature.type === Constants.geojsonTypes.MULTI_POLYGON) {\n nextCoordinates = currentCoordinates.map(moveMultiPolygon);\n }\n\n feature.incomingCoords(nextCoordinates);\n });\n};\nexport default move_features;\n","import * as CommonSelectors from \"./lib/common_selectors\";\nimport doubleClickZoom from \"./lib/double_click_zoom\";\nimport * as Constants from \"./lib/constants\";\nimport mouseEventPoint from \"./lib/mouse_event_point\";\nimport createSupplementaryPoints from \"./lib/create_supplementary_points\";\nimport StringSet from \"./lib/string_set\";\nimport moveFeatures from \"./lib/move_features\";\n\nconst CustomSelectMode = {};\nCustomSelectMode.onSetup = function (opts) {\n console.log(\"Change mode: custom select\");\n\n // turn the opts into state.\n const state = {\n dragMoveLocation: null,\n boxSelectStartLocation: null,\n boxSelectElement: undefined,\n boxSelecting: false,\n canBoxSelect: false,\n dragMoving: false,\n canDragMove: false,\n initiallySelectedFeatureIds: opts.featureIds || [],\n };\n\n this.setSelected(\n state.initiallySelectedFeatureIds.filter(\n (id) => this.getFeature(id) !== undefined\n )\n );\n this.fireActionable();\n\n this.setActionableState({\n combineFeatures: true,\n uncombineFeatures: true,\n trash: true,\n });\n\n return state;\n};\n\nCustomSelectMode.fireUpdate = function () {\n this.map.fire(Constants.events.UPDATE, {\n action: Constants.updateActions.MOVE,\n features: this.getSelected().map((f) => f.toGeoJSON()),\n });\n};\n\nCustomSelectMode.fireActionable = function () {\n const selectedFeatures = this.getSelected();\n\n const multiFeatures = selectedFeatures.filter((feature) =>\n this.isInstanceOf(\"MultiFeature\", feature)\n );\n\n let combineFeatures = false;\n\n if (selectedFeatures.length > 1) {\n combineFeatures = true;\n const featureType = selectedFeatures[0].type.replace(\"Multi\", \"\");\n selectedFeatures.forEach((feature) => {\n if (feature.type.replace(\"Multi\", \"\") !== featureType) {\n combineFeatures = false;\n }\n });\n }\n\n const uncombineFeatures = multiFeatures.length > 0;\n const trash = selectedFeatures.length > 0;\n\n this.setActionableState({\n combineFeatures,\n uncombineFeatures,\n trash,\n });\n};\n\nCustomSelectMode.getUniqueIds = function (allFeatures) {\n if (!allFeatures.length) return [];\n const ids = allFeatures\n .map((s) => s.properties.id)\n .filter((id) => id !== undefined)\n .reduce((memo, id) => {\n memo.add(id);\n return memo;\n }, new StringSet());\n\n return ids.values();\n};\n\nCustomSelectMode.stopExtendedInteractions = function (state) {\n if (state.boxSelectElement) {\n if (state.boxSelectElement.parentNode)\n state.boxSelectElement.parentNode.removeChild(state.boxSelectElement);\n state.boxSelectElement = null;\n }\n\n this.map.dragPan.enable();\n\n state.boxSelecting = false;\n state.canBoxSelect = false;\n state.dragMoving = false;\n state.canDragMove = false;\n};\n\nCustomSelectMode.onStop = function () {\n doubleClickZoom.enable(this);\n};\n\nCustomSelectMode.onMouseMove = function (state) {\n // On mousemove that is not a drag, stop extended interactions.\n // This is useful if you drag off the canvas, release the button,\n // then move the mouse back over the canvas --- we don't allow the\n // interaction to continue then, but we do let it continue if you held\n // the mouse button that whole time\n return this.stopExtendedInteractions(state);\n};\n\nCustomSelectMode.onMouseOut = function (state) {\n // As soon as you mouse leaves the canvas, update the feature\n if (state.dragMoving) return this.fireUpdate();\n};\n\nCustomSelectMode.onTap = CustomSelectMode.onClick = function (state, e) {\n // Click (with or without shift) on no feature\n if (CommonSelectors.noTarget(e)) return this.clickAnywhere(state, e); // also tap\n if (CommonSelectors.isOfMetaType(Constants.meta.VERTEX)(e))\n return this.clickOnVertex(state, e); //tap\n if (CommonSelectors.isFeature(e)) return this.clickOnFeature(state, e);\n};\n\nCustomSelectMode.clickAnywhere = function (state) {\n // Clear the re-render selection\n const wasSelected = this.getSelectedIds();\n if (wasSelected.length) {\n this.clearSelectedFeatures();\n wasSelected.forEach((id) => this.doRender(id));\n }\n doubleClickZoom.enable(this);\n this.stopExtendedInteractions(state);\n};\n\nCustomSelectMode.clickOnVertex = function (state, e) {\n // Enter direct select mode\n this.changeMode(\"custom_direct_select\", {\n featureId: e.featureTarget.properties.parent,\n coordPath: e.featureTarget.properties.coord_path,\n startPos: e.lngLat,\n // groupMove_vertices: matchingVertices,\n });\n this.updateUIClasses({ mouse: Constants.cursors.MOVE });\n};\n\nCustomSelectMode.startOnActiveFeature = function (state, e) {\n // Stop any already-underway extended interactions\n this.stopExtendedInteractions(state);\n\n // Disable map.dragPan immediately so it can't start\n this.map.dragPan.disable();\n\n // Re-render it and enable drag move\n this.doRender(e.featureTarget.properties.id);\n\n // Set up the state for drag moving\n state.canDragMove = true;\n state.dragMoveLocation = e.lngLat;\n};\n\nCustomSelectMode.clickOnFeature = function (state, e) {\n // Stop everything\n doubleClickZoom.disable(this);\n this.stopExtendedInteractions(state);\n\n const isShiftClick = CommonSelectors.isShiftDown(e);\n const selectedFeatureIds = this.getSelectedIds();\n const featureId = e.featureTarget.properties.id;\n const isFeatureSelected = this.isSelected(featureId);\n\n // Click (without shift) on any selected feature but a point\n if (\n !isShiftClick &&\n isFeatureSelected &&\n this.getFeature(featureId).type !== Constants.geojsonTypes.POINT\n ) {\n // Enter direct select mode\n return this.changeMode(\"custom_direct_select\", {\n featureId,\n });\n }\n\n // Shift-click on a selected feature\n if (isFeatureSelected && isShiftClick) {\n // Deselect it\n this.deselect(featureId);\n this.updateUIClasses({ mouse: Constants.cursors.POINTER });\n if (selectedFeatureIds.length === 1) {\n doubleClickZoom.enable(this);\n }\n // Shift-click on an unselected feature\n } else if (!isFeatureSelected && isShiftClick) {\n // Add it to the selection\n this.select(featureId);\n this.updateUIClasses({ mouse: Constants.cursors.MOVE });\n // Click (without shift) on an unselected feature\n } else if (!isFeatureSelected && !isShiftClick) {\n // Make it the only selected feature\n selectedFeatureIds.forEach((id) => this.doRender(id));\n this.setSelected(featureId);\n this.updateUIClasses({ mouse: Constants.cursors.MOVE });\n }\n\n // No matter what, re-render the clicked feature\n this.doRender(featureId);\n};\n\nCustomSelectMode.onMouseDown = function (state, e) {\n if (CommonSelectors.isActiveFeature(e)) return this.startOnActiveFeature(state, e);\n if (this.drawConfig.boxSelect && CommonSelectors.isShiftMousedown(e))\n return this.startBoxSelect(state, e);\n};\n\nCustomSelectMode.startBoxSelect = function (state, e) {\n this.stopExtendedInteractions(state);\n this.map.dragPan.disable();\n // Enable box select\n state.boxSelectStartLocation = mouseEventPoint(\n e.originalEvent,\n this.map.getContainer()\n );\n state.canBoxSelect = true;\n};\n\nCustomSelectMode.onTouchStart = function (state, e) {\n if (CommonSelectors.isActiveFeature(e)) return this.startOnActiveFeature(state, e);\n};\n\nCustomSelectMode.onDrag = function (state, e) {\n if (state.canDragMove) return this.dragMove(state, e);\n if (this.drawConfig.boxSelect && state.canBoxSelect)\n return this.whileBoxSelect(state, e);\n};\n\nCustomSelectMode.whileBoxSelect = function (state, e) {\n state.boxSelecting = true;\n this.updateUIClasses({ mouse: Constants.cursors.ADD });\n\n // Create the box node if it doesn't exist\n if (!state.boxSelectElement) {\n state.boxSelectElement = document.createElement(\"div\");\n state.boxSelectElement.classList.add(Constants.classes.BOX_SELECT);\n this.map.getContainer().appendChild(state.boxSelectElement);\n }\n\n // Adjust the box node's width and xy position\n const current = mouseEventPoint(e.originalEvent, this.map.getContainer());\n const minX = Math.min(state.boxSelectStartLocation.x, current.x);\n const maxX = Math.max(state.boxSelectStartLocation.x, current.x);\n const minY = Math.min(state.boxSelectStartLocation.y, current.y);\n const maxY = Math.max(state.boxSelectStartLocation.y, current.y);\n const translateValue = `translate(${minX}px, ${minY}px)`;\n state.boxSelectElement.style.transform = translateValue;\n state.boxSelectElement.style.WebkitTransform = translateValue;\n state.boxSelectElement.style.width = `${maxX - minX}px`;\n state.boxSelectElement.style.height = `${maxY - minY}px`;\n};\n\nCustomSelectMode.dragMove = function (state, e) {\n // Dragging when drag move is enabled\n state.dragMoving = true;\n e.originalEvent.stopPropagation();\n\n const delta = {\n lng: e.lngLat.lng - state.dragMoveLocation.lng,\n lat: e.lngLat.lat - state.dragMoveLocation.lat,\n };\n\n moveFeatures(this.getSelected(), delta);\n\n state.dragMoveLocation = e.lngLat;\n};\n\nCustomSelectMode.onMouseUp = function (state, e) {\n // End any extended interactions\n if (state.dragMoving) {\n this.fireUpdate();\n } else if (state.boxSelecting) {\n const bbox = [\n state.boxSelectStartLocation,\n mouseEventPoint(e.originalEvent, this.map.getContainer()),\n ];\n const featuresInBox = this.featuresAt(null, bbox, \"click\");\n const idsToSelect = this.getUniqueIds(featuresInBox).filter(\n (id) => !this.isSelected(id)\n );\n\n if (idsToSelect.length) {\n this.select(idsToSelect);\n idsToSelect.forEach((id) => this.doRender(id));\n this.updateUIClasses({ mouse: Constants.cursors.MOVE });\n }\n }\n this.stopExtendedInteractions(state);\n};\n\nCustomSelectMode.toDisplayFeatures = function (state, geojson, display) {\n geojson.properties.active = this.isSelected(geojson.properties.id)\n ? Constants.activeStates.ACTIVE\n : Constants.activeStates.INACTIVE;\n display(geojson);\n this.fireActionable();\n if (\n geojson.properties.active !== Constants.activeStates.ACTIVE ||\n geojson.geometry.type === Constants.geojsonTypes.POINT\n )\n return;\n createSupplementaryPoints(geojson).forEach(display);\n};\n\nCustomSelectMode.onTrash = function () {\n this.deleteFeature(this.getSelectedIds());\n this.fireActionable();\n};\n\nCustomSelectMode.onCombineFeatures = function () {\n const selectedFeatures = this.getSelected();\n\n if (selectedFeatures.length === 0 || selectedFeatures.length < 2) return;\n\n const coordinates = [],\n featuresCombined = [];\n const featureType = selectedFeatures[0].type.replace(\"Multi\", \"\");\n\n for (let i = 0; i < selectedFeatures.length; i++) {\n const feature = selectedFeatures[i];\n\n if (feature.type.replace(\"Multi\", \"\") !== featureType) {\n return;\n }\n if (feature.type.includes(\"Multi\")) {\n feature.getCoordinates().forEach((subcoords) => {\n coordinates.push(subcoords);\n });\n } else {\n coordinates.push(feature.getCoordinates());\n }\n\n featuresCombined.push(feature.toGeoJSON());\n }\n\n if (featuresCombined.length > 1) {\n const multiFeature = this.newFeature({\n type: Constants.geojsonTypes.FEATURE,\n properties: featuresCombined[0].properties,\n geometry: {\n type: `Multi${featureType}`,\n coordinates,\n },\n });\n\n this.addFeature(multiFeature);\n this.deleteFeature(this.getSelectedIds(), { silent: true });\n this.setSelected([multiFeature.id]);\n\n this.map.fire(Constants.events.COMBINE_FEATURES, {\n createdFeatures: [multiFeature.toGeoJSON()],\n deletedFeatures: featuresCombined,\n });\n }\n this.fireActionable();\n};\n\nCustomSelectMode.onUncombineFeatures = function () {\n const selectedFeatures = this.getSelected();\n if (selectedFeatures.length === 0) return;\n\n const createdFeatures = [];\n const featuresUncombined = [];\n\n for (let i = 0; i < selectedFeatures.length; i++) {\n const feature = selectedFeatures[i];\n\n if (this.isInstanceOf(\"MultiFeature\", feature)) {\n feature.getFeatures().forEach((subFeature) => {\n this.addFeature(subFeature);\n subFeature.properties = feature.properties;\n createdFeatures.push(subFeature.toGeoJSON());\n this.select([subFeature.id]);\n });\n this.deleteFeature(feature.id, { silent: true });\n featuresUncombined.push(feature.toGeoJSON());\n }\n }\n\n if (createdFeatures.length > 1) {\n this.map.fire(Constants.events.UNCOMBINE_FEATURES, {\n createdFeatures,\n deletedFeatures: featuresUncombined,\n });\n }\n this.fireActionable();\n};\n\nexport default CustomSelectMode;\n","const drawUtils = {\n getMatchingVertices: (vertex, featureId, allFeatures, map) => {\n // number of decimals should probably be dynamic depending on zoom level\n let decimals = 5;\n let matchingVertices = [];\n\n let v_lng = vertex[0].toFixed(decimals);\n let v_lat = vertex[1].toFixed(decimals);\n\n for (var i = 0; i < allFeatures.length; i++) {\n if (allFeatures[i].id !== featureId) {\n for (var k = 0; k < allFeatures[i].geometry.coordinates.length; k++) {\n for (var m = 0; m < allFeatures[i].geometry.coordinates[k].length; m++) {\n if (\n v_lng ===\n allFeatures[i].geometry.coordinates[k][m][0].toFixed(decimals) &&\n v_lat ===\n allFeatures[i].geometry.coordinates[k][m][1].toFixed(decimals)\n ) {\n matchingVertices.push({\n featureId: allFeatures[i].id,\n coord_path: k + \".\" + m,\n //feature: map.getFeature(allFeatures[i].id),\n lng: allFeatures[i].geometry.coordinates[k][m][0],\n lat: allFeatures[i].geometry.coordinates[k][m][1],\n });\n }\n }\n }\n }\n }\n\n return matchingVertices;\n },\n getDrawInstance: (map) => {\n for (var i = map._controls.length - 1; i >= 0; i--) {\n if (\n map._controls[i].options &&\n map._controls[i].options.defaultMode === \"custom_select\"\n ) {\n return map._controls[i];\n }\n }\n return null;\n },\n};\n\nexport default drawUtils;\n","import {\n noTarget,\n isOfMetaType,\n isActiveFeature,\n isInactiveFeature,\n isShiftDown,\n} from \"./lib/common_selectors\";\nimport createSupplementaryPoints from \"./lib/create_supplementary_points\";\nimport constrainFeatureMovement from \"./lib/constrain_feature_movement\";\nimport doubleClickZoom from \"./lib/double_click_zoom\";\nimport * as Constants from \"./lib/constants\";\nimport moveFeatures from \"./lib/move_features\";\nimport drawUtils from \"./lib/utils\";\n\nconst isVertex = isOfMetaType(Constants.meta.VERTEX);\nconst isMidpoint = isOfMetaType(Constants.meta.MIDPOINT);\n\nconst DirectSelect = {};\n\n// INTERNAL FUCNTIONS\n\nDirectSelect.fireUpdate = function () {\n this.map.fire(Constants.events.UPDATE, {\n action: Constants.updateActions.CHANGE_COORDINATES,\n features: this.getSelected().map((f) => f.toGeoJSON()),\n });\n};\n\nDirectSelect.fireActionable = function (state) {\n this.setActionableState({\n combineFeatures: false,\n uncombineFeatures: false,\n trash: state.selectedCoordPaths.length > 0,\n });\n};\n\nDirectSelect.startDragging = function (state, e) {\n this.map.dragPan.disable();\n state.canDragMove = true;\n state.dragMoveLocation = e.lngLat;\n};\n\nDirectSelect.stopDragging = function (state) {\n this.map.dragPan.enable();\n state.dragMoving = false;\n state.canDragMove = false;\n state.dragMoveLocation = null;\n};\n\nDirectSelect.onVertex = function (state, e) {\n this.startDragging(state, e);\n const about = e.featureTarget.properties;\n const selectedIndex = state.selectedCoordPaths.indexOf(about.coord_path);\n if (!isShiftDown(e) && selectedIndex === -1) {\n state.selectedCoordPaths = [about.coord_path];\n } else if (isShiftDown(e) && selectedIndex === -1) {\n state.selectedCoordPaths.push(about.coord_path);\n }\n\n // currently this work with single selected vertices only\n let allFeatures = drawUtils.getDrawInstance(this.map).getAll();\n\n let matchingVertices = drawUtils.getMatchingVertices(\n e.featureTarget._geometry.coordinates,\n e.featureTarget.properties.parent,\n allFeatures.features,\n this.map\n );\n state.groupMove_vertices = matchingVertices;\n\n for (let i = 0; i < state.groupMove_vertices.length; i++) {\n state.groupMove_vertices[i].feature = this.getFeature(\n state.groupMove_vertices[i].featureId\n );\n }\n\n const selectedCoordinates = this.pathsToCoordinates(\n state.featureId,\n state.selectedCoordPaths\n );\n this.setSelectedCoordinates(selectedCoordinates);\n};\n\nDirectSelect.onMidpoint = function (state, e) {\n this.startDragging(state, e);\n const about = e.featureTarget.properties;\n state.feature.addCoordinate(about.coord_path, about.lng, about.lat);\n this.fireUpdate();\n state.selectedCoordPaths = [about.coord_path];\n};\n\nDirectSelect.pathsToCoordinates = function (featureId, paths) {\n return paths.map((coord_path) => ({ feature_id: featureId, coord_path }));\n};\n\nDirectSelect.onFeature = function (state, e) {\n if (state.selectedCoordPaths.length === 0) this.startDragging(state, e);\n else this.stopDragging(state);\n};\n\nDirectSelect.dragFeature = function (state, e, delta) {\n moveFeatures(this.getSelected(), delta);\n state.dragMoveLocation = e.lngLat;\n};\n\nDirectSelect.dragVertex = function (state, e, delta) {\n const selectedCoords = state.selectedCoordPaths.map((coord_path) =>\n state.feature.getCoordinate(coord_path)\n );\n const selectedCoordPoints = selectedCoords.map((coords) => ({\n type: Constants.geojsonTypes.FEATURE,\n properties: {},\n geometry: {\n type: Constants.geojsonTypes.POINT,\n coordinates: coords,\n },\n }));\n\n const constrainedDelta = constrainFeatureMovement(selectedCoordPoints, delta);\n for (let i = 0; i < selectedCoords.length; i++) {\n const coord = selectedCoords[i];\n state.feature.updateCoordinate(\n state.selectedCoordPaths[i],\n coord[0] + constrainedDelta.lng,\n coord[1] + constrainedDelta.lat\n );\n\n for (let k = 0; k < state.groupMove_vertices.length; k++) {\n let coord_path_m = state.groupMove_vertices[k].coord_path.split(\".\");\n if (\n typeof coord_path_m[0] !== \"undefined\" &&\n typeof coord_path_m[1] !== \"undefined\" &&\n typeof state.groupMove_vertices[k].feature.coordinates[coord_path_m[0]] !==\n \"undefined\" &&\n typeof state.groupMove_vertices[k].feature.coordinates[coord_path_m[0]][\n coord_path_m[1]\n ] !== \"undefined\"\n ) {\n let coord_m =\n state.groupMove_vertices[k].feature.coordinates[coord_path_m[0]][\n coord_path_m[1]\n ];\n state.groupMove_vertices[k].feature.updateCoordinate(\n state.groupMove_vertices[k].coord_path,\n coord_m[0] + constrainedDelta.lng,\n coord_m[1] + constrainedDelta.lat\n );\n }\n }\n }\n};\n\nDirectSelect.clickNoTarget = function () {\n this.changeMode(\"custom_select\");\n};\n\nDirectSelect.clickInactive = function () {\n this.changeMode(\"custom_select\");\n};\n\nDirectSelect.clickActiveFeature = function (state) {\n state.selectedCoordPaths = [];\n this.clearSelectedCoordinates();\n state.feature.changed();\n};\n\n// EXTERNAL FUNCTIONS\n\nDirectSelect.onSetup = function (opts) {\n const featureId = opts.featureId;\n const feature = this.getFeature(featureId);\n\n if (!feature) {\n throw new Error(\"You must provide a featureId to enter direct_select mode\");\n }\n\n if (feature.type === Constants.geojsonTypes.POINT) {\n throw new TypeError(\"direct_select mode doesn't handle point features\");\n }\n\n const state = {\n featureId,\n feature,\n dragMoveLocation: opts.startPos || null,\n dragMoving: false,\n canDragMove: false,\n selectedCoordPaths: opts.coordPath ? [opts.coordPath] : [],\n groupMove_vertices: opts.groupMove_vertices ? opts.groupMove_vertices : [],\n };\n\n this.setSelectedCoordinates(\n this.pathsToCoordinates(featureId, state.selectedCoordPaths)\n );\n this.setSelected(featureId);\n doubleClickZoom.disable(this);\n\n this.setActionableState({\n trash: true,\n });\n\n return state;\n};\n\nDirectSelect.onStop = function () {\n doubleClickZoom.enable(this);\n this.clearSelectedCoordinates();\n};\n\nDirectSelect.toDisplayFeatures = function (state, geojson, push) {\n if (state.featureId === geojson.properties.id) {\n geojson.properties.active = Constants.activeStates.ACTIVE;\n push(geojson);\n createSupplementaryPoints(geojson, {\n map: this.map,\n midpoints: true,\n selectedPaths: state.selectedCoordPaths,\n }).forEach(push);\n } else {\n geojson.properties.active = Constants.activeStates.INACTIVE;\n push(geojson);\n }\n this.fireActionable(state);\n};\n\nDirectSelect.onTrash = function (state) {\n // Uses number-aware sorting to make sure '9' < '10'. Comparison is reversed because we want them\n // in reverse order so that we can remove by index safely.\n state.selectedCoordPaths\n .sort((a, b) => b.localeCompare(a, \"en\", { numeric: true }))\n .forEach((id) => state.feature.removeCoordinate(id));\n this.fireUpdate();\n state.selectedCoordPaths = [];\n this.clearSelectedCoordinates();\n this.fireActionable(state);\n if (state.feature.isValid() === false) {\n this.deleteFeature([state.featureId]);\n this.changeMode(\"custom_select\", {});\n }\n};\n\nDirectSelect.onMouseMove = function (state, e) {\n // On mousemove that is not a drag, stop vertex movement.\n const isFeature = isActiveFeature(e);\n const onVertex = isVertex(e);\n const noCoords = state.selectedCoordPaths.length === 0;\n if (isFeature && noCoords) this.updateUIClasses({ mouse: Constants.cursors.MOVE });\n else if (onVertex && !noCoords)\n this.updateUIClasses({ mouse: Constants.cursors.MOVE });\n else this.updateUIClasses({ mouse: Constants.cursors.NONE });\n this.stopDragging(state);\n};\n\nDirectSelect.onMouseOut = function (state) {\n // As soon as you mouse leaves the canvas, update the feature\n if (state.dragMoving) this.fireUpdate();\n};\n\nDirectSelect.onTouchStart = DirectSelect.onMouseDown = function (state, e) {\n if (isVertex(e)) return this.onVertex(state, e);\n if (isActiveFeature(e)) return this.onFeature(state, e);\n if (isMidpoint(e)) return this.onMidpoint(state, e);\n};\n\nDirectSelect.onDrag = function (state, e) {\n if (state.canDragMove !== true) return;\n state.dragMoving = true;\n e.originalEvent.stopPropagation();\n\n const delta = {\n lng: e.lngLat.lng - state.dragMoveLocation.lng,\n lat: e.lngLat.lat - state.dragMoveLocation.lat,\n };\n if (state.selectedCoordPaths.length > 0) this.dragVertex(state, e, delta);\n else this.dragFeature(state, e, delta);\n\n state.dragMoveLocation = e.lngLat;\n};\n\nDirectSelect.onClick = function (state, e) {\n if (noTarget(e)) return this.clickNoTarget(state, e);\n if (isActiveFeature(e)) return this.clickActiveFeature(state, e);\n if (isInactiveFeature(e)) return this.clickInactive(state, e);\n this.stopDragging(state);\n};\n\nDirectSelect.onTap = function (state, e) {\n if (noTarget(e)) return this.clickNoTarget(state, e);\n if (isActiveFeature(e)) return this.clickActiveFeature(state, e);\n if (isInactiveFeature(e)) return this.clickInactive(state, e);\n};\n\nDirectSelect.onTouchEnd = DirectSelect.onMouseUp = function (state) {\n if (state.dragMoving) {\n this.fireUpdate();\n }\n this.stopDragging(state);\n};\n\nexport default DirectSelect;\n","import React, { useState, useEffect, useContext, useRef } from \"react\";\nimport \"./MlFeatureEditor.css\";\n\nimport \"@mapbox/mapbox-gl-draw/dist/mapbox-gl-draw.css\";\nimport MapboxDraw from \"@mapbox/mapbox-gl-draw\";\nimport CustomPolygonMode from \"./custom-polygon-mode\";\nimport CustomSelectMode from \"./custom-select-mode\";\nimport CustomDirectSelectMode from \"./custom-direct-select-mode\";\nimport { v4 as uuidv4 } from \"uuid\";\n\nimport { MapContext } from \"@mapcomponents/react-core\";\n\nfunction MlFeatureEditor(props) {\n const mapRef = useRef(null);\n const draw = useRef(null);\n const mapContext = useContext(MapContext);\n const componentId = useRef(\n (props.idPrefix ? props.idPrefix : \"MlFeatureEditor-\") + uuidv4()\n );\n const onChangeRef = useRef(props.onChange);\n\n const [drawToolsInitialized, setDrawToolsInitialized] = useState(false);\n const [drawToolsReady, setDrawToolsReady] = useState(false);\n\n const [mouseUpTrigger, setMouseUpTrigger] = useState(false);\n\n const modeChangeHandler = (e) => {\n console.log(\"MlFeatureEditor mode change to \" + e.mode);\n //setDrawMode(e.mode);\n };\n\n const mouseUpHandler = () => {\n setMouseUpTrigger(Math.random());\n };\n\n useEffect(() => {\n let _componentId = componentId.current;\n return () => {\n if (mapRef.current) {\n mapRef.current.cleanup(_componentId);\n //mapRef.current.removeControl(draw.current, \"top-left\");\n mapRef.current = null;\n }\n };\n }, []);\n\n useEffect(() => {\n if (\n mapContext.mapExists(props.mapId) &&\n mapContext.getMap(props.mapId).style &&\n !drawToolsInitialized\n ) {\n mapRef.current = mapContext.getMap(props.mapId);\n setDrawToolsInitialized(true);\n if (\n mapRef.current &&\n mapRef.current.style &&\n mapRef.current.getSource(\"mapbox-gl-draw-cold\") &&\n draw.current &&\n typeof draw.current.remove !== \"undefined\"\n ) {\n // remove old Mapbox-gl-Draw from Mapbox instance when hot-reloading this component during development\n draw.current.remove();\n }\n\n draw.current = new MapboxDraw({\n displayControlsDefault: false,\n defaultMode: props.mode || \"custom_select\",\n modes: Object.assign(\n {\n custom_polygon: CustomPolygonMode,\n custom_select: CustomSelectMode,\n custom_direct_select: CustomDirectSelectMode,\n },\n MapboxDraw.modes\n ),\n });\n\n mapRef.current.on(\"draw.modechange\", modeChangeHandler, componentId.current);\n\n mapRef.current.addControl(draw.current, \"top-left\", componentId.current);\n\n mapRef.current.on(\"mouseup\", mouseUpHandler, componentId.current);\n\n setDrawToolsReady(true);\n }\n }, [mapContext.map, mapContext, props, drawToolsInitialized]);\n\n useEffect(() => {\n if (\n draw.current &&\n props.geojson &&\n props.geojson.geometry &&\n props.geojson.geometry.coordinates\n ) {\n draw.current.set({ type: \"FeatureCollection\", features: [props.geojson] });\n }\n }, [props.geojson, drawToolsReady]);\n\n useEffect(() => {\n if (draw.current && mouseUpTrigger) {\n // update drawnFeatures state object\n let currentFeatureCollection = draw.current.getAll();\n if (typeof onChangeRef.current === \"function\") {\n onChangeRef.current(currentFeatureCollection.features);\n }\n }\n }, [mouseUpTrigger]);\n\n useEffect(() => {\n if (props.mode && draw.current) {\n draw.current.changeMode(props.mode);\n }\n }, [props.mode]);\n\n return <></>;\n}\n\nexport default MlFeatureEditor;\n","import React, { useEffect, useContext } from \"react\";\n\nimport { MapContext } from \"@mapcomponents/react-core\";\n\nconst MlBasicComponent = (props) => {\n // Use a useRef hook to reference the layer object to be able to access it later inside useEffect hooks\n // without the requirement of adding it to the dependency list (ignore the false eslint exhaustive deps warning)\n // const layerRef = useRef(null);\n const mapContext = useContext(MapContext);\n\n useEffect(() => {\n if (!mapContext.mapExists()) return;\n return () => {\n // This is the cleanup function, it is called when this react component is removed from react-dom\n // try to remove anything this component has added to the MapLibre-gl instance\n // e.g.: remove the layer\n // mapContext.map.removeLayer(layerRef.current);\n if (typeof props.cleanup === \"function\") {\n props.cleanup(mapContext.getMap(props.mapId));\n }\n };\n });\n\n useEffect(() => {\n if (!mapContext.mapExists(props.mapId)) return;\n // the MapLibre-gl instance (mapContext.map) is accessible here\n // initialize the layer and add it to the MapLibre-gl instance\n if (typeof props.mapIsReady === \"function\") {\n props.mapIsReady(mapContext.getMap(props.mapId));\n }\n }, [mapContext.mapIds, mapContext, props]);\n\n return <></>;\n};\n\nexport default MlBasicComponent;\n","import React, { useContext, useCallback, useRef, useEffect, useState } from \"react\";\nimport PropTypes from \"prop-types\";\nimport syncMove from \"@mapbox/mapbox-gl-sync-move\";\nimport \"./style.css\";\nimport { MapContext } from \"@mapcomponents/react-core\";\n\n/**\n *\n * Hides the MapLibreMap referenced by props.map2Id except for the \"magnifier\"-circle that reveals\n * the map and can be dragged around on top of the MapLibreMap referenced by props.map1Id\n *\n * @component\n */\nconst MlLayerMagnify = (props) => {\n const mapContext = useContext(MapContext);\n const syncMoveInitializedRef = useRef(false);\n const syncCleanupFunctionRef = useRef(null);\n\n const [swipeX, setSwipeX] = useState(50);\n const swipeXRef = useRef(50);\n const [swipeY, setSwipeY] = useState(50);\n const swipeYRef = useRef(50);\n\n const magnifierRadiusRef = useRef(props.magnifierRadius);\n\n const [magnifierRadius, setMagnifierRadius] = useState(magnifierRadiusRef.current);\n\n const mapExists = useCallback(() => {\n if (!props.map1Id || !props.map2Id) {\n return false;\n }\n if (!mapContext.getMap(props.map1Id) || !mapContext.getMap(props.map2Id)) {\n return false;\n }\n\n return true;\n }, [props, mapContext]);\n\n const onResize = useRef(() => {\n if (!mapExists()) return;\n\n onMove({\n clientX: swipeXRef.current,\n clientY: swipeYRef.current,\n });\n });\n\n useEffect(() => {\n window.addEventListener(\"resize\", onResize.current);\n let _onResize = onResize.current;\n\n return () => {\n window.removeEventListener(\"resize\", _onResize);\n if (syncCleanupFunctionRef.current) {\n syncCleanupFunctionRef.current();\n }\n };\n }, []);\n\n const onMove = useCallback(\n (e) => {\n if (!mapExists()) return;\n\n let bounds = mapContext.maps[props.map1Id].getCanvas().getBoundingClientRect();\n let clientX =\n e.clientX ||\n (typeof e.touches !== \"undefined\" && typeof e.touches[0] !== \"undefined\"\n ? e.touches[0].clientX\n : 0);\n let clientY =\n e.clientY ||\n (typeof e.touches !== \"undefined\" && typeof e.touches[0] !== \"undefined\"\n ? e.touches[0].clientY\n : 0);\n\n clientX -= bounds.x;\n clientY -= bounds.y;\n let swipeX_tmp = ((clientX / bounds.width) * 100).toFixed(2);\n let swipeY_tmp = ((clientY / bounds.height) * 100).toFixed(2);\n\n if (swipeXRef.current !== swipeX_tmp || swipeYRef.current !== swipeY_tmp) {\n setSwipeX(swipeX_tmp);\n swipeXRef.current = swipeX_tmp;\n setSwipeY(swipeY_tmp);\n swipeYRef.current = swipeY_tmp;\n\n mapContext.maps[props.map2Id].getContainer().style.clipPath =\n `circle(${magnifierRadiusRef.current}px at ` +\n (swipeXRef.current * bounds.width) / 100 +\n \"px \" +\n (swipeYRef.current * bounds.height) / 100 +\n \"px)\";\n }\n },\n [mapContext, mapExists, props]\n );\n\n useEffect(() => {\n if (!mapExists() || syncMoveInitializedRef.current) return;\n\n syncMoveInitializedRef.current = true;\n syncCleanupFunctionRef.current = syncMove(\n mapContext.getMap(props.map1Id).map,\n mapContext.getMap(props.map2Id).map\n );\n\n if (\n mapContext.maps[props.map1Id].getCanvas().clientWidth >\n mapContext.maps[props.map1Id].getCanvas().clientHeight &&\n magnifierRadiusRef.current * 2 > mapContext.maps[props.map1Id].getCanvas().clientHeight\n ) {\n magnifierRadiusRef.current = Math.floor(\n mapContext.maps[props.map1Id].getCanvas().clientHeight / 2\n );\n setMagnifierRadius(magnifierRadiusRef.current);\n }\n\n if (\n mapContext.maps[props.map1Id].getCanvas().clientHeight >\n mapContext.maps[props.map1Id].getCanvas().clientWidth &&\n magnifierRadiusRef.current * 2 > mapContext.maps[props.map1Id].getCanvas().clientWidth\n ) {\n magnifierRadiusRef.current = Math.floor(\n mapContext.maps[props.map1Id].getCanvas().clientWidth / 2\n );\n setMagnifierRadius(magnifierRadiusRef.current);\n }\n\n onMove({\n clientX: mapContext.maps[props.map1Id].getCanvas().clientWidth / 2,\n clientY: mapContext.maps[props.map1Id].getCanvas().clientHeight / 2,\n });\n }, [mapContext.mapIds, mapContext, mapExists, props, onMove]);\n\n const onDown = (e) => {\n if (e.touches) {\n document.addEventListener(\"touchmove\", onMove);\n document.addEventListener(\"touchend\", onTouchEnd);\n } else {\n document.addEventListener(\"mousemove\", onMove);\n document.addEventListener(\"mouseup\", onMouseUp);\n }\n };\n\n const onTouchEnd = () => {\n document.removeEventListener(\"touchmove\", onMove);\n document.removeEventListener(\"touchend\", onTouchEnd);\n };\n\n const onMouseUp = () => {\n document.removeEventListener(\"mousemove\", onMove);\n document.removeEventListener(\"mouseup\", onMouseUp);\n };\n\n const onWheel = (e) => {\n let evCopy = new WheelEvent(e.type, e);\n mapContext.map.getCanvas().dispatchEvent(evCopy);\n };\n\n return (\n <div\n style={{\n position: \"absolute\",\n left: swipeX + \"%\",\n top: swipeY + \"%\",\n borderRadius: \"50%\",\n width: magnifierRadius * 2 + 1 + \"px\",\n height: magnifierRadius * 2 + 1 + \"px\",\n background: \"rgba(0,0,0,0)\",\n border: \"2px solid #fafafa\",\n boxShadow: \"1px 2px 2px rgba(19, 19, 19, .5), inset 1px 1px 1px rgba(19, 19, 19, .2)\",\n cursor: \"pointer\",\n zIndex: \"110\",\n marginLeft: magnifierRadius * -1 - 1 + \"px\",\n marginTop: magnifierRadius * -1 - 1 + \"px\",\n textAlign: \"center\",\n lineHeight: \"91px\",\n fontSize: \"2em\",\n color: \"#fafafa\",\n userSelect: \"none\",\n }}\n onTouchStart={onDown}\n onMouseDown={onDown}\n onWheel={onWheel}\n ></div>\n );\n};\n\nMlLayerMagnify.defaultProps = {\n magnifierRadius: 200,\n};\n\nMlLayerMagnify.propTypes = {\n /**\n * Id of the first MapLibre instance\n */\n map1Id: PropTypes.string,\n /**\n * Id of the second MapLibre instance\n */\n map2Id: PropTypes.string,\n /**\n * Size of the \"magnifier\"-circle\n */\n magnifierRadius: PropTypes.number,\n};\nexport default MlLayerMagnify;\n","import React, { useContext, useCallback, useRef, useEffect, useState } from \"react\";\nimport syncMove from \"@mapbox/mapbox-gl-sync-move\";\nimport \"./style.css\";\nimport { MapContext } from \"@mapcomponents/react-core\";\nimport PropTypes from \"prop-types\";\n\n/**\n * MlLayerSwipe returns a Button that will add a standard OSM tile layer to the maplibre-gl instance, that you can move like a curtain.\n *\n * @component\n */\nconst MlLayerSwipe = (props) => {\n const mapContext = useContext(MapContext);\n const initializedRef = useRef(false);\n\n const [swipeX, setSwipeX] = useState(50);\n const swipeXRef = useRef(50);\n\n const syncCleanupFunctionRef = useRef(null);\n\n const mapExists = useCallback(() => {\n if (!props.map1Id || !props.map2Id) {\n return false;\n }\n if (!mapContext.getMap(props.map1Id) || !mapContext.getMap(props.map2Id)) {\n return false;\n }\n\n return true;\n }, [mapContext, props.map1Id, props.map2Id]);\n\n const cleanup = () => {\n if (syncCleanupFunctionRef.current) {\n syncCleanupFunctionRef.current();\n }\n };\n\n const onMove = useCallback(\n (e) => {\n if (!mapExists()) return;\n\n let bounds = mapContext.maps[props.map1Id].getCanvas().getBoundingClientRect();\n let clientX =\n e.clientX ||\n (typeof e.touches !== \"undefined\" && typeof e.touches[0] !== \"undefined\"\n ? e.touches[0].clientX\n : 0);\n\n clientX -= bounds.x;\n let swipeX_tmp = ((clientX / bounds.width) * 100).toFixed(2);\n\n if (swipeXRef.current !== swipeX_tmp) {\n setSwipeX(swipeX_tmp);\n swipeXRef.current = swipeX_tmp;\n\n var clipA = \"rect(0, \" + (swipeXRef.current * bounds.width) / 100 + \"px, 999em, 0)\";\n\n mapContext.maps[props.map2Id].getContainer().style.clip = clipA;\n }\n },\n [mapContext, mapExists, props.map1Id, props.map2Id]\n );\n\n useEffect(() => {\n return cleanup;\n }, []);\n\n useEffect(() => {\n if (!mapExists() || initializedRef.current) return;\n\n initializedRef.current = true;\n syncCleanupFunctionRef.current = syncMove(\n mapContext.getMap(props.map1Id).map,\n mapContext.getMap(props.map2Id).map\n );\n onMove({ clientX: mapContext.maps[props.map1Id].getCanvas().clientWidth / 2 });\n }, [mapContext.mapIds, mapContext, props, onMove, mapExists]);\n\n const onDown = (e) => {\n if (e.touches) {\n document.addEventListener(\"touchmove\", onMove);\n document.addEventListener(\"touchend\", onTouchEnd);\n } else {\n document.addEventListener(\"mousemove\", onMove);\n document.addEventListener(\"mouseup\", onMouseUp);\n }\n };\n\n const onTouchEnd = () => {\n document.removeEventListener(\"touchmove\", onMove);\n document.removeEventListener(\"touchend\", onTouchEnd);\n };\n\n const onMouseUp = () => {\n document.removeEventListener(\"mousemove\", onMove);\n document.removeEventListener(\"mouseup\", onMouseUp);\n };\n\n return (\n <div\n style={{\n position: \"absolute\",\n left: swipeX + \"%\",\n top: \"50%\",\n borderRadius: \"50%\",\n width: \"100px\",\n height: \"100px\",\n background: \"#0066ff\",\n border: \"3px solid #eaebf1\",\n cursor: \"pointer\",\n zIndex: \"110\",\n marginLeft: \"-50px\",\n marginTop: \"-50px\",\n textAlign: \"center\",\n lineHeight: \"91px\",\n fontSize: \"2em\",\n color: \"#fafafa\",\n userSelect: \"none\",\n }}\n onTouchStart={onDown}\n onMouseDown={onDown}\n ></div>\n );\n};\n\nMlLayerSwipe.propTypes = {\n /**\n * Id of the first MapLibre instance.\n */\n map1Id: PropTypes.string,\n /**\n * Id of the second MapLibre instance.\n */\n map2Id: PropTypes.string,\n}\n\nexport default MlLayerSwipe;\n","import React from \"react\";\n\nconst GeoJsonContext = React.createContext({});\n\nexport const GeoJsonContextProvider = GeoJsonContext.Provider;\nexport default GeoJsonContext;\n","/**\n * https://github.com/mapbox/togeojson\n *\n * Copyright (c) 2016 Mapbox All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:\n *\n * 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.\n *\n * 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.\n *\n * 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.\n */\nvar toGeoJSON = (function () {\n var removeSpace = /\\s*/g,\n trimSpace = /^\\s*|\\s*$/g,\n splitSpace = /\\s+/;\n // generate a short, numeric hash of a string\n function okhash(x) {\n if (!x || !x.length) return 0;\n for (var i = 0, h = 0; i < x.length; i++) {\n h = ((h << 5) - h + x.charCodeAt(i)) | 0;\n }\n return h;\n }\n // all Y children of X\n function get(x, y) {\n return x.getElementsByTagName(y);\n }\n function attr(x, y) {\n return x.getAttribute(y);\n }\n function attrf(x, y) {\n return parseFloat(attr(x, y));\n }\n // one Y child of X, if any, otherwise null\n function get1(x, y) {\n var n = get(x, y);\n return n.length ? n[0] : null;\n }\n // https://developer.mozilla.org/en-US/docs/Web/API/Node.normalize\n function norm(el) {\n if (el.normalize) {\n el.normalize();\n }\n return el;\n }\n // cast array x into numbers\n function numarray(x) {\n for (var j = 0, o = []; j < x.length; j++) {\n o[j] = parseFloat(x[j]);\n }\n return o;\n }\n // get the content of a text node, if any\n function nodeVal(x) {\n if (x) {\n norm(x);\n }\n return (x && x.textContent) || \"\";\n }\n // get the contents of multiple text nodes, if present\n function getMulti(x, ys) {\n var o = {},\n n,\n k;\n for (k = 0; k < ys.length; k++) {\n n = get1(x, ys[k]);\n if (n) o[ys[k]] = nodeVal(n);\n }\n return o;\n }\n // add properties of Y to X, overwriting if present in both\n function extend(x, y) {\n for (var k in y) x[k] = y[k];\n }\n // get one coordinate from a coordinate array, if any\n function coord1(v) {\n return numarray(v.replace(removeSpace, \"\").split(\",\"));\n }\n // get all coordinates from a coordinate array as [[],[]]\n function coord(v) {\n var coords = v.replace(trimSpace, \"\").split(splitSpace),\n o = [];\n for (var i = 0; i < coords.length; i++) {\n o.push(coord1(coords[i]));\n }\n return o;\n }\n function coordPair(x) {\n var ll = [attrf(x, \"lon\"), attrf(x, \"lat\")],\n ele = get1(x, \"ele\"),\n // handle namespaced attribute in browser\n heartRate = get1(x, \"gpxtpx:hr\") || get1(x, \"hr\"),\n time = get1(x, \"time\"),\n e;\n if (ele) {\n e = parseFloat(nodeVal(ele));\n if (!isNaN(e)) {\n ll.push(e);\n }\n }\n return {\n coordinates: ll,\n time: time ? nodeVal(time) : null,\n heartRate: heartRate ? parseFloat(nodeVal(heartRate)) : null,\n };\n }\n\n // create a new feature collection parent object\n function fc() {\n return {\n type: \"FeatureCollection\",\n features: [],\n };\n }\n\n var serializer;\n if (typeof XMLSerializer !== \"undefined\") {\n /* istanbul ignore next */\n serializer = new XMLSerializer();\n } else {\n var isNodeEnv = typeof process === \"object\" && !process.browser;\n var isTitaniumEnv = typeof Titanium === \"object\";\n if (typeof exports === \"object\" && (isNodeEnv || isTitaniumEnv)) {\n serializer = new (require(\"xmldom\").XMLSerializer)();\n } else {\n throw new Error(\"Unable to initialize serializer\");\n }\n }\n function xml2str(str) {\n // IE9 will create a new XMLSerializer but it'll crash immediately.\n // This line is ignored because we don't run coverage tests in IE9\n /* istanbul ignore next */\n if (str.xml !== undefined) return str.xml;\n return serializer.serializeToString(str);\n }\n\n var t = {\n kml: function (doc) {\n var gj = fc(),\n // styleindex keeps track of hashed styles in order to match features\n styleIndex = {},\n styleByHash = {},\n // stylemapindex keeps track of style maps to expose in properties\n styleMapIndex = {},\n // atomic geospatial types supported by KML - MultiGeometry is\n // handled separately\n geotypes = [\"Polygon\", \"LineString\", \"Point\", \"Track\", \"gx:Track\"],\n // all root placemarks in the file\n placemarks = get(doc, \"Placemark\"),\n styles = get(doc, \"Style\"),\n styleMaps = get(doc, \"StyleMap\");\n\n for (var k = 0; k < styles.length; k++) {\n var hash = okhash(xml2str(styles[k])).toString(16);\n styleIndex[\"#\" + attr(styles[k], \"id\")] = hash;\n styleByHash[hash] = styles[k];\n }\n for (var l = 0; l < styleMaps.length; l++) {\n styleIndex[\"#\" + attr(styleMaps[l], \"id\")] = okhash(xml2str(styleMaps[l])).toString(16);\n var pairs = get(styleMaps[l], \"Pair\");\n var pairsMap = {};\n for (var m = 0; m < pairs.length; m++) {\n pairsMap[nodeVal(get1(pairs[m], \"key\"))] = nodeVal(get1(pairs[m], \"styleUrl\"));\n }\n styleMapIndex[\"#\" + attr(styleMaps[l], \"id\")] = pairsMap;\n }\n for (var j = 0; j < placemarks.length; j++) {\n gj.features = gj.features.concat(getPlacemark(placemarks[j]));\n }\n function kmlColor(v) {\n var color, opacity;\n v = v || \"\";\n if (v.substr(0, 1) === \"#\") {\n v = v.substr(1);\n }\n if (v.length === 6 || v.length === 3) {\n color = v;\n }\n if (v.length === 8) {\n opacity = parseInt(v.substr(0, 2), 16) / 255;\n color = \"#\" + v.substr(6, 2) + v.substr(4, 2) + v.substr(2, 2);\n }\n return [color, isNaN(opacity) ? undefined : opacity];\n }\n function gxCoord(v) {\n return numarray(v.split(\" \"));\n }\n function gxCoords(root) {\n var elems = get(root, \"coord\", \"gx\"),\n coords = [],\n times = [];\n if (elems.length === 0) elems = get(root, \"gx:coord\");\n for (var i = 0; i < elems.length; i++) coords.push(gxCoord(nodeVal(elems[i])));\n var timeElems = get(root, \"when\");\n for (var j = 0; j < timeElems.length; j++) times.push(nodeVal(timeElems[j]));\n return {\n coords: coords,\n times: times,\n };\n }\n function getGeometry(root) {\n var geomNode,\n geomNodes,\n i,\n j,\n k,\n geoms = [],\n coordTimes = [];\n if (get1(root, \"MultiGeometry\")) {\n return getGeometry(get1(root, \"MultiGeometry\"));\n }\n if (get1(root, \"MultiTrack\")) {\n return getGeometry(get1(root, \"MultiTrack\"));\n }\n if (get1(root, \"gx:MultiTrack\")) {\n return getGeometry(get1(root, \"gx:MultiTrack\"));\n }\n for (i = 0; i < geotypes.length; i++) {\n geomNodes = get(root, geotypes[i]);\n if (geomNodes) {\n for (j = 0; j < geomNodes.length; j++) {\n geomNode = geomNodes[j];\n if (geotypes[i] === \"Point\") {\n geoms.push({\n type: \"Point\",\n coordinates: coord1(nodeVal(get1(geomNode, \"coordinates\"))),\n });\n } else if (geotypes[i] === \"LineString\") {\n geoms.push({\n type: \"LineString\",\n coordinates: coord(nodeVal(get1(geomNode, \"coordinates\"))),\n });\n } else if (geotypes[i] === \"Polygon\") {\n var rings = get(geomNode, \"LinearRing\"),\n coords = [];\n for (k = 0; k < rings.length; k++) {\n coords.push(coord(nodeVal(get1(rings[k], \"coordinates\"))));\n }\n geoms.push({\n type: \"Polygon\",\n coordinates: coords,\n });\n } else if (geotypes[i] === \"Track\" || geotypes[i] === \"gx:Track\") {\n var track = gxCoords(geomNode);\n geoms.push({\n type: \"LineString\",\n coordinates: track.coords,\n });\n if (track.times.length) coordTimes.push(track.times);\n }\n }\n }\n }\n return {\n geoms: geoms,\n coordTimes: coordTimes,\n };\n }\n function getPlacemark(root) {\n var geomsAndTimes = getGeometry(root),\n i,\n properties = {},\n name = nodeVal(get1(root, \"name\")),\n address = nodeVal(get1(root, \"address\")),\n styleUrl = nodeVal(get1(root, \"styleUrl\")),\n description = nodeVal(get1(root, \"description\")),\n timeSpan = get1(root, \"TimeSpan\"),\n timeStamp = get1(root, \"TimeStamp\"),\n extendedData = get1(root, \"ExtendedData\"),\n lineStyle = get1(root, \"LineStyle\"),\n polyStyle = get1(root, \"PolyStyle\"),\n visibility = get1(root, \"visibility\");\n\n if (!geomsAndTimes.geoms.length) return [];\n if (name) properties.name = name;\n if (address) properties.address = address;\n if (styleUrl) {\n if (styleUrl[0] !== \"#\") {\n styleUrl = \"#\" + styleUrl;\n }\n\n properties.styleUrl = styleUrl;\n if (styleIndex[styleUrl]) {\n properties.styleHash = styleIndex[styleUrl];\n }\n if (styleMapIndex[styleUrl]) {\n properties.styleMapHash = styleMapIndex[styleUrl];\n properties.styleHash = styleIndex[styleMapIndex[styleUrl].normal];\n }\n // Try to populate the lineStyle or polyStyle since we got the style hash\n var style = styleByHash[properties.styleHash];\n if (style) {\n if (!lineStyle) lineStyle = get1(style, \"LineStyle\");\n if (!polyStyle) polyStyle = get1(style, \"PolyStyle\");\n var iconStyle = get1(style, \"IconStyle\");\n if (iconStyle) {\n var icon = get1(iconStyle, \"Icon\");\n if (icon) {\n var href = nodeVal(get1(icon, \"href\"));\n if (href) properties.icon = href;\n }\n }\n }\n }\n if (description) properties.description = description;\n if (timeSpan) {\n var begin = nodeVal(get1(timeSpan, \"begin\"));\n var end = nodeVal(get1(timeSpan, \"end\"));\n properties.timespan = { begin: begin, end: end };\n }\n if (timeStamp) {\n properties.timestamp = nodeVal(get1(timeStamp, \"when\"));\n }\n if (lineStyle) {\n var linestyles = kmlColor(nodeVal(get1(lineStyle, \"color\"))),\n color = linestyles[0],\n opacity = linestyles[1],\n width = parseFloat(nodeVal(get1(lineStyle, \"width\")));\n if (color) properties.stroke = color;\n if (!isNaN(opacity)) properties[\"stroke-opacity\"] = opacity;\n if (!isNaN(width)) properties[\"stroke-width\"] = width;\n }\n if (polyStyle) {\n var polystyles = kmlColor(nodeVal(get1(polyStyle, \"color\"))),\n pcolor = polystyles[0],\n popacity = polystyles[1],\n fill = nodeVal(get1(polyStyle, \"fill\")),\n outline = nodeVal(get1(polyStyle, \"outline\"));\n if (pcolor) properties.fill = pcolor;\n if (!isNaN(popacity)) properties[\"fill-opacity\"] = popacity;\n if (fill) properties[\"fill-opacity\"] = fill === \"1\" ? properties[\"fill-opacity\"] || 1 : 0;\n if (outline)\n properties[\"stroke-opacity\"] = outline === \"1\" ? properties[\"stroke-opacity\"] || 1 : 0;\n }\n if (extendedData) {\n var datas = get(extendedData, \"Data\"),\n simpleDatas = get(extendedData, \"SimpleData\");\n\n for (i = 0; i < datas.length; i++) {\n properties[datas[i].getAttribute(\"name\")] = nodeVal(get1(datas[i], \"value\"));\n }\n for (i = 0; i < simpleDatas.length; i++) {\n properties[simpleDatas[i].getAttribute(\"name\")] = nodeVal(simpleDatas[i]);\n }\n }\n if (visibility) {\n properties.visibility = nodeVal(visibility);\n }\n if (geomsAndTimes.coordTimes.length) {\n properties.coordTimes =\n geomsAndTimes.coordTimes.length === 1\n ? geomsAndTimes.coordTimes[0]\n : geomsAndTimes.coordTimes;\n }\n var feature = {\n type: \"Feature\",\n geometry:\n geomsAndTimes.geoms.length === 1\n ? geomsAndTimes.geoms[0]\n : {\n type: \"GeometryCollection\",\n geometries: geomsAndTimes.geoms,\n },\n properties: properties,\n };\n if (attr(root, \"id\")) feature.id = attr(root, \"id\");\n return [feature];\n }\n return gj;\n },\n gpx: function (doc) {\n var i,\n tracks = get(doc, \"trk\"),\n routes = get(doc, \"rte\"),\n waypoints = get(doc, \"wpt\"),\n // a feature collection\n gj = fc(),\n feature;\n for (i = 0; i < tracks.length; i++) {\n feature = getTrack(tracks[i]);\n if (feature) gj.features.push(feature);\n }\n for (i = 0; i < routes.length; i++) {\n feature = getRoute(routes[i]);\n if (feature) gj.features.push(feature);\n }\n for (i = 0; i < waypoints.length; i++) {\n gj.features.push(getPoint(waypoints[i]));\n }\n function initializeArray(arr, size) {\n for (var h = 0; h < size; h++) {\n arr.push(null);\n }\n return arr;\n }\n function getPoints(node, pointname) {\n var pts = get(node, pointname),\n line = [],\n times = [],\n heartRates = [],\n l = pts.length;\n if (l < 2) return {}; // Invalid line in GeoJSON\n for (var i = 0; i < l; i++) {\n var c = coordPair(pts[i]);\n line.push(c.coordinates);\n if (c.time) times.push(c.time);\n if (c.heartRate || heartRates.length) {\n if (!heartRates.length) initializeArray(heartRates, i);\n heartRates.push(c.heartRate || null);\n }\n }\n return {\n line: line,\n times: times,\n heartRates: heartRates,\n };\n }\n function getTrack(node) {\n var segments = get(node, \"trkseg\"),\n track = [],\n times = [],\n heartRates = [],\n line;\n for (var i = 0; i < segments.length; i++) {\n line = getPoints(segments[i], \"trkpt\");\n if (line) {\n if (line.line) track.push(line.line);\n if (line.times && line.times.length) times.push(line.times);\n if (heartRates.length || (line.heartRates && line.heartRates.length)) {\n if (!heartRates.length) {\n for (var s = 0; s < i; s++) {\n heartRates.push(initializeArray([], track[s].length));\n }\n }\n if (line.heartRates && line.heartRates.length) {\n heartRates.push(line.heartRates);\n } else {\n heartRates.push(initializeArray([], line.line.length || 0));\n }\n }\n }\n }\n if (track.length === 0) return;\n var properties = getProperties(node);\n extend(properties, getLineStyle(get1(node, \"extensions\")));\n if (times.length) properties.coordTimes = track.length === 1 ? times[0] : times;\n if (heartRates.length)\n properties.heartRates = track.length === 1 ? heartRates[0] : heartRates;\n return {\n type: \"Feature\",\n properties: properties,\n geometry: {\n type: track.length === 1 ? \"LineString\" : \"MultiLineString\",\n coordinates: track.length === 1 ? track[0] : track,\n },\n };\n }\n function getRoute(node) {\n var line = getPoints(node, \"rtept\");\n if (!line.line) return;\n var prop = getProperties(node);\n extend(prop, getLineStyle(get1(node, \"extensions\")));\n var routeObj = {\n type: \"Feature\",\n properties: prop,\n geometry: {\n type: \"LineString\",\n coordinates: line.line,\n },\n };\n return routeObj;\n }\n function getPoint(node) {\n var prop = getProperties(node);\n extend(prop, getMulti(node, [\"sym\"]));\n return {\n type: \"Feature\",\n properties: prop,\n geometry: {\n type: \"Point\",\n coordinates: coordPair(node).coordinates,\n },\n };\n }\n function getLineStyle(extensions) {\n var style = {};\n if (extensions) {\n var lineStyle = get1(extensions, \"line\");\n if (lineStyle) {\n var color = nodeVal(get1(lineStyle, \"color\")),\n opacity = parseFloat(nodeVal(get1(lineStyle, \"opacity\"))),\n width = parseFloat(nodeVal(get1(lineStyle, \"width\")));\n if (color) style.stroke = color;\n if (!isNaN(opacity)) style[\"stroke-opacity\"] = opacity;\n // GPX width is in mm, convert to px with 96 px per inch\n if (!isNaN(width)) style[\"stroke-width\"] = (width * 96) / 25.4;\n }\n }\n return style;\n }\n function getProperties(node) {\n var prop = getMulti(node, [\"name\", \"cmt\", \"desc\", \"type\", \"time\", \"keywords\"]),\n links = get(node, \"link\");\n if (links.length) prop.links = [];\n for (var i = 0, link; i < links.length; i++) {\n link = { href: attr(links[i], \"href\") };\n extend(link, getMulti(links[i], [\"text\", \"type\"]));\n prop.links.push(link);\n }\n return prop;\n }\n return gj;\n },\n };\n return t;\n})();\n\nexport default toGeoJSON;\n","import React, {useContext, useRef, useEffect, useState} from \"react\";\nimport PropTypes from \"prop-types\";\nimport {MapContext} from \"@mapcomponents/react-core\";\nimport {bbox} from \"@turf/turf\";\nimport Divider from \"@mui/material/Divider\";\nimport Typography from \"@mui/material/Typography\";\nimport Drawer from \"@mui/material/Drawer\";\nimport IconButton from \"@mui/material/IconButton\";\nimport InfoIcon from \"@mui/icons-material/Info\";\nimport FileCopy from \"@mui/icons-material/FileCopy\";\nimport {Popup} from \"maplibre-gl\";\nimport List from \"@mui/material/List\";\nimport ListItem from \"@mui/material/ListItem\";\nimport ListItemText from \"@mui/material/ListItemText\";\nimport GeoJsonContext from \"./util/GeoJsonContext\";\nimport toGeoJSON from \"./gpxConverter\";\nimport useMediaQuery from \"@mui/material/useMediaQuery\";\n\nimport {v4 as uuidv4} from \"uuid\";\n\n/**\n * MlGPXViewer returns a dropzone and a button to load a GPX Track into the map.\n *\n * @component\n */\nconst MlGPXViewer = (props) => {\n const dataSource = useContext(GeoJsonContext);\n const componentId = useRef((props.idPrefix ? props.idPrefix : \"MlGpxViewer-\") + uuidv4());\n const mapContext = useContext(MapContext);\n const mapId = props.mapId;\n const initializedRef = useRef(false);\n const mapRef = useRef(null);\n const sourceName = \"import-source\";\n const layerNameLines = \"importer-layer-lines\";\n const layerNamePoints = \"importer-layer-points\";\n\n const [open, setIsOpen] = useState(false);\n const dropZone = useRef(null);\n const [zIndex, setZIndex] = useState(0);\n const [metaData, setMetaData] = useState([]);\n const fileupload = useRef(null);\n const mediaIsMobile = useMediaQuery(\"(max-width:900px)\");\n\n const popup = useRef(\n new Popup({\n closeButton: false,\n closeOnClick: true,\n })\n );\n\n useEffect(() => {\n let _componentId = componentId.current;\n let _popup = popup.current;\n return () => {\n // This is the cleanup function, it is called when this react component is removed from react-dom\n if (mapRef.current) {\n mapRef.current.cleanup(_componentId);\n\n mapRef.current.getCanvas().style.cursor = \"\";\n\n mapRef.current = null;\n }\n _popup.remove();\n };\n }, []);\n\n useEffect(() => {\n if (!mapContext.mapExists(mapId) || initializedRef.current) return;\n\n initializedRef.current = true;\n mapRef.current = mapContext.getMap(mapId);\n\n mapRef.current.addSource(\n sourceName,\n {\n type: \"geojson\",\n data: dataSource.data,\n },\n componentId.current\n );\n mapRef.current.addLayer(\n {\n id: layerNameLines,\n source: sourceName,\n type: \"line\",\n paint: {\n \"line-width\": 4,\n \"line-color\": \"rgba(212, 55, 23,0.5)\",\n },\n },\n props.insertBeforeLayer,\n componentId.current\n );\n mapRef.current.addLayer(\n {\n id: layerNamePoints,\n source: sourceName,\n type: \"circle\",\n paint: {\n \"circle-color\": \"rgba(72, 77, 99,0.5)\",\n \"circle-radius\": 7,\n },\n filter: [\"==\", \"$type\", \"Point\"],\n },\n props.insertBeforeLayer,\n componentId.current\n );\n\n [layerNameLines, layerNamePoints].forEach((layerName) => {\n mapRef.current.setLayoutProperty(layerName, \"visibility\", \"visible\");\n });\n mapRef.current.on(\"mouseenter\", layerNamePoints, (e) => {\n // Change the cursor style as a UI indicator.\n mapContext.getMap(props.mapId).getCanvas().style.cursor = \"pointer\";\n\n const coordinates = e.features[0].geometry.coordinates.slice();\n //const description = e.features[0].properties.desc;\n const name = e.features[0].properties.name;\n\n // Ensure that if the map is zoomed out such that multiple\n // copies of the feature are visible, the popup appears\n // over the copy being pointed to.\n while (Math.abs(e.lngLat.lng - coordinates[0]) > 180) {\n coordinates[0] += e.lngLat.lng > coordinates[0] ? 360 : -360;\n }\n\n // Populate the popup and set its coordinates\n\n // based on the feature found.\n popup.current.setLngLat(coordinates).setHTML(name).addTo(mapRef.current);\n });\n\n mapRef.current.on(\"mouseleave\", \"places\", function () {\n mapRef.current.getCanvas().style.cursor = \"\";\n popup.current.remove();\n });\n\n mapRef.current.setZoom(10);\n }, [mapContext.mapIds, mapContext, dataSource.data, mapId, props]);\n\n useEffect(() => {\n const dropZoneCurrent = dropZone.current;\n const raiseDropZoneAndStopDefault = (event) => {\n setZIndex(1000);\n stopDefault(event);\n };\n const lowerDropZone = () => {\n setZIndex(0);\n };\n const lowerDropZoneAndStopDefault = (event) => {\n setZIndex(0);\n stopDefault(event);\n };\n\n window.addEventListener(\"dragenter\", raiseDropZoneAndStopDefault);\n window.addEventListener(\"dragover\", stopDefault);\n\n dropZoneCurrent.addEventListener(\"dragleave\", lowerDropZone);\n\n window.addEventListener(\"drop\", lowerDropZoneAndStopDefault);\n\n return () => {\n window.removeEventListener(\"dragenter\", raiseDropZoneAndStopDefault);\n window.removeEventListener(\"dragover\", stopDefault);\n window.removeEventListener(\"drop\", stopDefault);\n dropZoneCurrent.removeEventListener(\"dragleave\", lowerDropZone);\n window.removeEventListener(\"drop\", (event) => lowerDropZoneAndStopDefault);\n };\n });\n\n const stopDefault = (event) => {\n event.preventDefault();\n event.stopPropagation();\n };\n\n useEffect(() => {\n if (!mapRef.current) return;\n\n const visibility = props.visible ? \"visible\" : \"none\";\n\n [layerNameLines, layerNamePoints].forEach((layerName) => {\n mapRef.current.setLayoutProperty(layerName, \"visibility\", visibility);\n });\n }, [props.visible]);\n\n const dropHandler = (event) => {\n event.preventDefault();\n\n if (event.dataTransfer.items) {\n if (event.dataTransfer.items.length > 1) {\n return false;\n }\n // If dropped items aren't files, reject them\n if (event.dataTransfer.items[0].kind === \"file\") {\n const reader = new FileReader();\n reader.onload = (payload) => {\n addGPXToMap(payload.currentTarget.result);\n };\n const file = event.dataTransfer.items[0].getAsFile();\n reader.readAsText(file);\n }\n } else {\n // Use DataTransfer interface to access the file(s)\n }\n };\n\n const addGPXToMap = (gpxAsString) => {\n if (!mapRef.current) return;\n try {\n setMetaData([]);\n const domParser = new DOMParser();\n const gpxDoc = domParser.parseFromString(gpxAsString, \"application/xml\");\n const metadata = gpxDoc.querySelector(\"metadata\");\n metadata.childNodes.forEach((node) => {\n let value = node.textContent;\n const title = node.nodeName;\n\n if (node.nodeName === \"link\") {\n value = node.getAttribute(\"href\");\n }\n if (!!value.trim().length) {\n const metaDatEntry = {\n title: title,\n value: value,\n id: new Date().getTime(),\n };\n setMetaData((prevState) => [...prevState, metaDatEntry]);\n }\n });\n const data = toGeoJSON.gpx(gpxDoc);\n dataSource.setData(data);\n mapRef.current.getSource(sourceName).setData(data);\n const bounds = bbox(data);\n mapRef.current.fitBounds(bounds);\n } catch (e) {\n console.log(e);\n }\n };\n\n const toogleDrawer = () => {\n setIsOpen((prevState) => !prevState);\n };\n\n const fileUploadOnChange = () => {\n const file = fileupload.current.files[0];\n if (!file) return false;\n const reader = new FileReader();\n reader.onload = (payload) => {\n addGPXToMap(payload.currentTarget.result);\n };\n\n reader.readAsText(file);\n };\n\n const manualUpload = () => {\n fileupload.current.click();\n };\n return (\n <>\n <div style={{\n position: \"fixed\",\n right: \"5px\",\n bottom: mediaIsMobile ? \"40px\" : \"25px\",\n display: \"flex\",\n flexDirection: \"column\",\n gap: \"5px\",\n zIndex: 1000,\n }}>\n <IconButton\n onClick={manualUpload}\n style={{\n backgroundColor: \"rgba(255,255,255,1)\",\n }}\n size=\"large\"\n >\n <input\n ref={fileupload}\n onChange={fileUploadOnChange}\n type=\"file\"\n id=\"input\"\n multiple\n style={{display: \"none\"}}\n ></input>\n <FileCopy/>\n </IconButton>\n <IconButton\n onClick={toogleDrawer}\n style={{\n backgroundColor: \"rgba(255,255,255,1)\",\n }}\n size=\"large\"\n >\n <InfoIcon/>\n </IconButton>\n </div>\n <Drawer variant=\"persistent\" anchor=\"left\" open={open}>\n <Typography\n variant=\"h6\"\n style={{\n textAlign: \"center\",\n padding: \"1em\",\n }}\n noWrap\n >\n Informationen zur Route\n </Typography>\n <Divider/>\n <List>\n {metaData.map((item) => (\n <ListItem key={`item--${item.id}`}>\n <ListItemText primary={item.value}/>\n </ListItem>\n ))}\n </List>\n </Drawer>\n <div\n onDrop={dropHandler}\n ref={dropZone}\n style={{\n position: \"absolute\",\n left: \"0\",\n top: \"0\",\n backgroundColor: \"rgba(255,255,255,0.5)\",\n width: \"100%\",\n height: \"100%\",\n zIndex: zIndex,\n }}\n >\n <Typography\n variant=\"h6\"\n style={{\n top: \"50%\",\n position: \"absolute\",\n left: \"50%\",\n msTransform: \"translate(-50%, -50%)\",\n transform: \" translate(-50%, -50%)\",\n }}\n noWrap\n >\n Gpx-Datei ablegen\n </Typography>\n </div>\n </>\n );\n};\n\nMlGPXViewer.defaultProps = {\n visible: true,\n};\n\nMlGPXViewer.propTypes = {\n /**\n * Id of the target MapLibre instance in mapContext\n */\n mapId: PropTypes.string,\n /**\n * Prefix of the component id this component uses when adding elements to the MapLibreGl-instance\n */\n idPrefix: PropTypes.string,\n /**\n * Sets the layers layout-property \"visibility\" to \"none\" if false or \"visible\" if true\n */\n visible: PropTypes.bool,\n /**\n * The layerId of an existing layer this layer should be rendered visually beneath\n * https://maplibre.org/maplibre-gl-js-docs/api/map/#map#addlayer - see \"beforeId\" property\n */\n insertBeforeLayer: PropTypes.string,\n};\n\nexport default MlGPXViewer;\n","import React, { useState } from \"react\";\nimport PropTypes from \"prop-types\";\nimport { GeoJsonContextProvider } from \"./GeoJsonContext\";\n\nconst GeoJsonProvider = ({ children }) => {\n const [data, setData] = useState({\n type: \"FeatureCollection\",\n features: [],\n });\n const getEmptyFeatureCollection = () => {\n return {\n type: \"FeatureCollection\",\n features: [],\n };\n };\n const value = {\n data,\n setData,\n getEmptyFeatureCollection,\n };\n\n return <GeoJsonContextProvider value={value}>{children}</GeoJsonContextProvider>;\n};\n\nGeoJsonProvider.propTypes = {\n children: PropTypes.node.isRequired,\n};\n\nexport default GeoJsonProvider;\n","import React, { useCallback, useRef, useContext, useEffect } from \"react\";\nimport { MapContext } from \"@mapcomponents/react-core\";\nimport GeoJsonContext from \"../MlGPXViewer/util/GeoJsonContext\";\nimport { polygon, lineString } from \"@turf/helpers\";\nimport { distance, lineOffset } from \"@turf/turf\";\nimport { v4 as uuidv4 } from \"uuid\";\nimport PropTypes from \"prop-types\";\n\n/**\n * MlSpatialElevationProfile returns a Button that will add a standard OSM tile layer to the maplibre-gl instance.\n *\n * @component\n */\nconst MlSpatialElevationProfile = (props) => {\n const mapContext = useContext(MapContext);\n\n const componentId = useRef(\n (props.idPrefix ? props.idPrefix : \"MlSpatialElevationProfile-\") + uuidv4()\n );\n const mapRef = useRef(null);\n const initializedRef = useRef(false);\n\n const dataSource = useContext(GeoJsonContext);\n const sourceName = useRef(\"elevationprofile-\" + uuidv4());\n const layerName = useRef(\"elevationprofile-layer-\" + uuidv4());\n\n const createStep = useCallback(\n (x, y, z, x2, y2) => {\n //const summand = 0.0002;\n const line = lineString([\n [x, y],\n [x2, y2],\n ]);\n const offsetLine = lineOffset(line, 5, { units: \"meters\" });\n const x3 = offsetLine.geometry.coordinates[0][0];\n const y3 = offsetLine.geometry.coordinates[0][1];\n const x4 = offsetLine.geometry.coordinates[1][0];\n const y4 = offsetLine.geometry.coordinates[1][1];\n\n return polygon(\n [\n [\n [x, y],\n [x2, y2],\n\n [x4, y4],\n [x3, y3],\n [x, y],\n ],\n ],\n { height: z * props.elevationFactor }\n );\n },\n [props.elevationFactor]\n );\n\n useEffect(() => {\n let _componentId = componentId.current;\n return () => {\n // This is the cleanup function, it is called when this react component is removed from react-dom\n if (mapRef.current) {\n mapRef.current.cleanup(_componentId);\n\n mapRef.current = null;\n }\n };\n }, []);\n\n useEffect(() => {\n if (!mapContext.mapExists(props.mapId) || initializedRef.current) return;\n\n initializedRef.current = true;\n mapRef.current = mapContext.getMap(props.mapId);\n\n mapRef.current.addSource(\n sourceName.current,\n {\n type: \"geojson\",\n data: dataSource.data,\n },\n componentId.current\n );\n mapRef.current.addLayer(\n {\n id: layerName.current,\n source: sourceName.current,\n type: \"fill-extrusion\",\n paint: {\n \"fill-extrusion-height\": [\"get\", \"height\"],\n \"fill-extrusion-opacity\": 0.9,\n \"fill-extrusion-color\": [\n \"interpolate\",\n [\"linear\"],\n [\"get\", \"height\"],\n 0,\n \"rgba(0, 0, 255, 0)\",\n 0.1,\n \"royalblue\",\n 0.3,\n \"cyan\",\n 0.5,\n \"lime\",\n 0.7,\n \"yellow\",\n 1,\n \"yellow\",\n ],\n },\n },\n props.insertBeforeLayer,\n componentId.current\n );\n }, [\n mapContext.mapIds,\n props.insertBeforeLayer,\n props.mapId,\n dataSource,\n mapContext,\n ]);\n\n useEffect(() => {\n if (!mapRef.current || !mapRef.current.getLayer(layerName.current)) return;\n const { data } = dataSource;\n if (!data || !data.features) return;\n\n const line = data.features.find((element) => {\n return element.geometry.type === \"LineString\";\n });\n if (!line || !line.geometry) return;\n const heights = line.geometry.coordinates.map((coordinate, index) => {\n return coordinate[2];\n });\n\n const min = Math.min(...heights);\n\n let max = Math.max(...heights) - min;\n\n max = max === 0 ? 1 : max;\n\n mapRef.current.setPaintProperty(layerName.current, \"fill-extrusion-color\", [\n \"interpolate\",\n [\"linear\"],\n [\"get\", \"height\"],\n 0,\n \"rgb(0,255,55)\",\n max * props.elevationFactor,\n \"rgb(255,0,0)\",\n ]);\n const lerp = (x, y, a) => x * (1 - a) + y * a;\n const points = [];\n\n line.geometry.coordinates.forEach((coordinate, index) => {\n //const point = createPoint(coordinate[0],coordinate[1],coordinate[2]-min);\n //points.push(point);\n if (line.geometry.coordinates[index + 1]) {\n const wayLength = distance(\n [coordinate[0], coordinate[1]],\n [\n line.geometry.coordinates[index + 1][0],\n line.geometry.coordinates[index + 1][1],\n ],\n { units: \"kilometers\" }\n );\n let listLength = ~~((wayLength * 1000) / 10);\n listLength = listLength < 1 ? 1 : listLength;\n for (let i = 0; i < listLength; i++) {\n const x = lerp(\n line.geometry.coordinates[index][0],\n line.geometry.coordinates[index + 1][0],\n i / listLength\n );\n const y = lerp(\n line.geometry.coordinates[index][1],\n line.geometry.coordinates[index + 1][1],\n i / listLength\n );\n const z = lerp(\n line.geometry.coordinates[index][2] - min,\n line.geometry.coordinates[index + 1][2] - min,\n i / listLength\n );\n\n const x2 = lerp(\n line.geometry.coordinates[index][0],\n line.geometry.coordinates[index + 1][0],\n (i + 1) / listLength\n );\n const y2 = lerp(\n line.geometry.coordinates[index][1],\n line.geometry.coordinates[index + 1][1],\n (i + 1) / listLength\n );\n\n const point = createStep(x, y, z, x2, y2);\n points.push(point);\n }\n }\n });\n\n const newData = dataSource.getEmptyFeatureCollection();\n newData.features = points;\n\n mapRef.current.getSource(sourceName.current)?.setData(newData);\n }, [dataSource.data, createStep, dataSource, props.elevationFactor, mapContext]);\n\n return <></>;\n};\n\nMlSpatialElevationProfile.defaultProps = {\n elevationFactor: 1,\n};\n\nMlSpatialElevationProfile.propTypes = {\n /**\n * Id of the target MapLibre instance in mapContext\n */\n mapId: PropTypes.string,\n /**\n * Prefix of the component id this component uses when adding elements to the MapLibreGl-instance\n */\n idPrefix: PropTypes.string,\n /**\n * Number describes the factor of the height of the elevation\n */\n elevationFactor: PropTypes.number,\n /**\n * The layerId of an existing layer this layer should be rendered visually beneath\n * https://maplibre.org/maplibre-gl-js-docs/api/map/#map#addlayer - see \"beforeId\" property\n */\n insertBeforeLayer: PropTypes.string,\n}\n\nexport default MlSpatialElevationProfile;\n"],"names":["MapLibreGlWrapper","props","self","registeredElements","baseLayers","firstSymbolLayer","undefined","eventHandlers","layerchange","viewportchange","wrapper","on","eventName","handler","options","componentId","push","_arguments","initRegisteredElements","wrapperEvents","off","filter","item","Object","is","fire","context","scope","window","event","Event","data","forEach","call","layerState","layerStateString","oldLayerStateStrings","buildLayerObject","layer","id","type","visible","visibility","baseLayer","indexOf","buildLayerObjects","style","_order","map","layerId","_layers","n","refreshLayerState","JSON","stringify","viewportState","viewportStateString","oldViewportStateString","getViewport","getCenter","center","lng","lat","rest","zoom","getZoom","bearing","getBearing","pitch","getPitch","refreshViewport","force","layers","sources","images","events","controls","addLayer","beforeId","source","addSource","sourceId","addImage","image","ref","listener","addControl","control","position","cleanup","getLayer","removeLayer","getSource","removeSource","hasImage","removeImage","removeControl","updatingStyleFunctions","_update","styleFunctions","addNativeMaplibreFunctionsAndProps","keys","__proto__","missingFunctions","initializeMapLibre","mapOptions","fetch","then","response","ok","json","Error","styleJson","catch","error","console","log","maplibregl","Map","onReady","MapLibreMap","useRef","mapContainer","mapContext","useContext","MapContext","mapContextRef","mapIdRef","mapId","useEffect","current","_mapContext","removeMap","remove","container","once","registerMap","setMap","React","defaultProps","accessToken","propTypes","PropTypes","string","object","useMapState","initializedRef","mapRef","useState","viewport","setViewport","viewportRef","setLayers","layersRef","uuidv4","layerIdFilter","useCallback","includeBaseLayers","matchLayerIds","RegExp","test","includes","_layerState","_layerStateString","_componentId","mapExists","getMap","watch","mapIds","shape","bool","oneOfType","instanceOf","matchSourceIds","useMap","mapState","mapIsReady","setMapIsReady","waitForLayer","layerFound","MlComponentTemplate","mapHook","insertBeforeLayer","setCenter","MlFillExtrusionLayer","showLayer","setShowLayer","idPrefix","lastLabelLayerId","sourceLayer","minzoom","minZoom","paint","setLayoutProperty","property","number","_showNextTransitionSegment","transitionInProgressRef","transitionGeojsonDataRef","transitionGeojsonCommonDataRef","currentTransitionStepRef","msPerStep","transitionTimeoutRef","setTimeout","arguments","newData","length","geojson","turf","geometry","coordinates","setData","onTransitionFrame","onTransitionEnd","_transitionToGeojson","newGeojson","oldGeojsonRef","transitionCoordinatesShort","transitionCoordinatesLong","targetCoordinates","srcCoordinates","sourceGeojson","properties","targetGeojson","longerGeojson","shorterGeojson","reverseOrder","slice","i","len","transitionSteps","transitionTime","srcCoordinatesDistance","Math","round","targetCoordinatesDistance","transitionDistance","srcCoordinatesShare","srcTransitionSteps","srcPerStepDistance","targetCoordinatesShare","targetTransitionSteps","targetPerStepDistance","tmpLinestring","tmpChunks","features","reverse","loopStepDistance","getDefaultPaintPropsByType","defaultPaintOverrides","fill","line","circle","mapGeometryTypesToLayerTypes","Position","Point","MultiPoint","LineString","MultiLineString","Polygon","MultiPolygon","GeometryCollection","getDefaulLayerTypeByGeometry","legalLayerTypes","MlGeoJsonLayer","layerTypeRef","clearTimeout","key","layout","_paint","setPaintProperty","transitionToGeojson","createLayer","onHover","onClick","onLeave","func","MlImageMarkerLayer","layerInitializedRef","imageIdRef","imageId","Date","getTime","tmpOptions","imgSrc","loadImage","MlFollowGps","isFollowed","setIsFollowed","geoJson","setGeoJson","watchIdRef","locationAccessDenied","setLocationAccessDenied","accuracyGeoJson","setAccuracyGeoJson","navigator","geolocation","clearWatch","getLocationSuccess","pos","coords","longitude","latitude","geoJsonPoint","point","accuracy","getLocationError","err","watchPosition","accuracyPaint","markerLayout","markerImage","marker","zIndex","color","onColor","offColor","fontSize","minWidth","minHeight","width","height","backgroundColor","borderRadius","margin","nmMap","street","place","zip","state","nmConverter","nmAddress","addressArr","some","element","hasOwnProperty","join","toPixels","conversionFactor","createPdf","locationValue","setLoading","actualPixelRatio","devicePixelRatio","hidden","document","createElement","className","body","appendChild","renderMap","interactive","preserveDrawingBuffer","fadeDuration","attributionControl","getStyle","name","src","setStyle","pdf","jsPDF","orientation","unit","compress","defineProperty","get","offsetX","offsetY","marginTop","marginBottom","innerMargin","logo","textBuffer","lineHeight","text","address","textChunksSeperator","split","textChunks","chunk","limitChunks","match","getCanvas","toDataURL","setFillColor","rect","setFontSize","internal","pageSize","infoBoxSize","trim","setProperties","title","subject","creator","author","save","parentNode","removeChild","MlCreatePdfButton","NeedleButton","NeedleContainer","RotateButton","MlNavigationCompass","setBearing","css","top","border","background","display","justifyContent","transform","backgroundStyle","rotateRightStyle","RotateRightIcon","abs","needleStyle","NeedleIcon","rotateLeftStyle","RotateLeftIcon","MlNavigationTools","setPitch","mediaIsMobile","useMediaQuery","buttonStyle","zoomIn","_zoom","_maxZoom","easeTo","zoomOut","_minZoom","adjustPitch","targetPitch","moveToCurrentLocation","getCurrentPosition","location","right","bottom","flexDirection","marginLeft","boxShadow","fontWeight","Button","padding","MlLayer","layerPaintConfRef","layerLayoutConfRef","layoutString","paintString","MlOsmLayer","sourceIdRef","layerIdRef","tileSize","sourceOptions","maxzoom","layerOptions","MlVectorTileLayer","layerIdsRef","layerPaintConfsRef","layerLayoutConfsRef","tiles","url","attribution","_layerId","layerPaintConfString","paintKey","layerLayoutConfString","layoutKey","urlParameters","bbox","format","service","version","request","srs","styles","maxZoom","MlWmsLayer","_propsUrlParams","_wmsUrl","_urlParamsFromUrl","URLSearchParams","urlParamsObj","fromEntries","urlParams","urlParamsStr","decodeURIComponent","toString","replace","isRequired","classes","CONTROL_BASE","CONTROL_PREFIX","CONTROL_BUTTON","CONTROL_BUTTON_LINE","CONTROL_BUTTON_POLYGON","CONTROL_BUTTON_POINT","CONTROL_BUTTON_TRASH","CONTROL_BUTTON_COMBINE_FEATURES","CONTROL_BUTTON_UNCOMBINE_FEATURES","CONTROL_GROUP","ATTRIBUTION","ACTIVE_BUTTON","BOX_SELECT","cursors","ADD","MOVE","DRAG","POINTER","NONE","types","POLYGON","LINE","POINT","geojsonTypes","FEATURE","LINE_STRING","FEATURE_COLLECTION","MULTI_PREFIX","MULTI_POINT","MULTI_LINE_STRING","MULTI_POLYGON","CREATE","DELETE","UPDATE","SELECTION_CHANGE","MODE_CHANGE","ACTIONABLE","RENDER","COMBINE_FEATURES","UNCOMBINE_FEATURES","updateActions","CHANGE_COORDINATES","meta","MIDPOINT","VERTEX","activeStates","ACTIVE","INACTIVE","LAT_MIN","LAT_RENDERED_MIN","LAT_MAX","LAT_RENDERED_MAX","LNG_MIN","LNG_MAX","isOfMetaType","e","featureTarget","isShiftMousedown","originalEvent","shiftKey","button","isActiveFeature","active","Constants","isInactiveFeature","noTarget","isFeature","isVertex","isShiftDown","isEscapeKey","keyCode","isEnterKey","doubleClickZoom","enable","ctx","_ctx","store","getInitialConfigValue","disable","isEventAtCoordinates","lngLat","create_vertex","parentId","path","selected","parent","coord_path","CustomPolygonMode","onSetup","polygon","newFeature","addFeature","clearSelectedFeatures","updateUIClasses","mouse","activateUIButton","setActionableState","trash","currentVertexPosition","clickAnywhere","changeMode","featureIds","updateCoordinate","toGeoJSON","clickOnVertex","onMouseMove","CommonSelectors","onTap","onKeyUp","deleteFeature","silent","onStop","getFeature","removeCoordinate","isValid","toDisplayFeatures","isActivePolygon","coordinateCount","createVertex","endPos","lineCoordinates","onTrash","mouseEventPoint","mouseEvent","getBoundingClientRect","clientX","left","clientLeft","clientY","clientTop","create_midpoint","startVertex","endVertex","startCoord","endCoord","mid","createSupplementaryPoints","basePath","featureId","supplementaryPoints","isSelectedPath","lineIndex","processLine","String","processMultiGeometry","lineBasePath","firstPointString","lastVertex","pointIndex","pointPath","vertex","midpoints","midpoint","createMidpoint","stringifiedPoint","selectedPaths","subType","subCoordinates","index","subFeature","concat","StringSet","items","_items","_nums","_length","l","add","prototype","x","has","delete","values","k","v","parse","sort","a","b","clear","constrain_feature_movement","geojsonFeatures","delta","northInnerEdge","southInnerEdge","northOuterEdge","southOuterEdge","westEdge","eastEdge","feature","bounds","extent","featureSouthEdge","featureNorthEdge","featureWestEdge","featureEastEdge","constrainedDelta","ceil","move_features","constrainFeatureMovement","currentCoordinates","getCoordinates","moveCoordinate","coord","moveRing","ring","moveMultiPolygon","multi","nextCoordinates","incomingCoords","CustomSelectMode","opts","dragMoveLocation","boxSelectStartLocation","boxSelectElement","boxSelecting","canBoxSelect","dragMoving","canDragMove","initiallySelectedFeatureIds","setSelected","fireActionable","combineFeatures","uncombineFeatures","fireUpdate","action","getSelected","f","selectedFeatures","multiFeatures","isInstanceOf","featureType","getUniqueIds","allFeatures","ids","s","reduce","memo","stopExtendedInteractions","dragPan","onMouseOut","clickOnFeature","wasSelected","getSelectedIds","doRender","coordPath","startPos","startOnActiveFeature","isShiftClick","selectedFeatureIds","isFeatureSelected","isSelected","deselect","select","onMouseDown","drawConfig","boxSelect","startBoxSelect","getContainer","onTouchStart","onDrag","dragMove","whileBoxSelect","classList","minX","min","maxX","max","minY","y","maxY","translateValue","WebkitTransform","stopPropagation","moveFeatures","onMouseUp","featuresInBox","featuresAt","idsToSelect","onCombineFeatures","featuresCombined","subcoords","multiFeature","createdFeatures","deletedFeatures","onUncombineFeatures","featuresUncombined","getFeatures","drawUtils","getMatchingVertices","decimals","matchingVertices","v_lng","toFixed","v_lat","m","getDrawInstance","_controls","defaultMode","isMidpoint","DirectSelect","selectedCoordPaths","startDragging","stopDragging","onVertex","about","selectedIndex","getAll","_geometry","groupMove_vertices","selectedCoordinates","pathsToCoordinates","setSelectedCoordinates","onMidpoint","addCoordinate","paths","feature_id","onFeature","dragFeature","dragVertex","selectedCoords","getCoordinate","selectedCoordPoints","coord_path_m","coord_m","clickNoTarget","clickInactive","clickActiveFeature","clearSelectedCoordinates","changed","TypeError","localeCompare","numeric","noCoords","onTouchEnd","MlFeatureEditor","draw","onChangeRef","onChange","drawToolsInitialized","setDrawToolsInitialized","drawToolsReady","setDrawToolsReady","mouseUpTrigger","setMouseUpTrigger","modeChangeHandler","mode","mouseUpHandler","random","MapboxDraw","displayControlsDefault","modes","assign","custom_polygon","custom_select","custom_direct_select","CustomDirectSelectMode","set","currentFeatureCollection","MlBasicComponent","MlLayerMagnify","syncMoveInitializedRef","syncCleanupFunctionRef","swipeX","setSwipeX","swipeXRef","swipeY","setSwipeY","swipeYRef","magnifierRadiusRef","magnifierRadius","setMagnifierRadius","map1Id","map2Id","onResize","onMove","addEventListener","_onResize","removeEventListener","maps","touches","swipeX_tmp","swipeY_tmp","clipPath","syncMove","clientWidth","clientHeight","floor","onDown","onWheel","evCopy","WheelEvent","dispatchEvent","cursor","textAlign","userSelect","MlLayerSwipe","clipA","clip","GeoJsonContext","createContext","GeoJsonContextProvider","Provider","removeSpace","trimSpace","splitSpace","okhash","h","charCodeAt","getElementsByTagName","attr","getAttribute","attrf","parseFloat","get1","norm","el","normalize","numarray","j","o","nodeVal","textContent","getMulti","ys","extend","coord1","coordPair","ll","ele","heartRate","time","isNaN","fc","serializer","XMLSerializer","isNodeEnv","process","browser","isTitaniumEnv","Titanium","exports","require","xml2str","str","xml","serializeToString","t","kml","doc","gj","styleIndex","styleByHash","styleMapIndex","geotypes","placemarks","styleMaps","hash","pairs","pairsMap","getPlacemark","kmlColor","opacity","substr","parseInt","gxCoord","gxCoords","root","elems","times","timeElems","getGeometry","geomNode","geomNodes","geoms","coordTimes","rings","track","geomsAndTimes","styleUrl","description","timeSpan","timeStamp","extendedData","lineStyle","polyStyle","styleHash","styleMapHash","normal","iconStyle","icon","href","begin","end","timespan","timestamp","linestyles","stroke","polystyles","pcolor","popacity","outline","datas","simpleDatas","geometries","gpx","tracks","routes","waypoints","getTrack","getRoute","getPoint","initializeArray","arr","size","getPoints","node","pointname","pts","heartRates","c","segments","getProperties","getLineStyle","prop","routeObj","extensions","links","link","MlGPXViewer","dataSource","sourceName","layerNameLines","layerNamePoints","open","setIsOpen","dropZone","setZIndex","metaData","setMetaData","fileupload","popup","Popup","closeButton","closeOnClick","_popup","layerName","setLngLat","setHTML","addTo","setZoom","dropZoneCurrent","raiseDropZoneAndStopDefault","stopDefault","lowerDropZone","lowerDropZoneAndStopDefault","preventDefault","dropHandler","dataTransfer","kind","reader","FileReader","onload","payload","addGPXToMap","currentTarget","result","file","getAsFile","readAsText","gpxAsString","domParser","DOMParser","gpxDoc","parseFromString","metadata","querySelector","childNodes","value","nodeName","metaDatEntry","prevState","fitBounds","toogleDrawer","fileUploadOnChange","files","manualUpload","click","gap","msTransform","GeoJsonProvider","children","getEmptyFeatureCollection","MlSpatialElevationProfile","createStep","z","x2","y2","lineString","offsetLine","lineOffset","units","x3","y3","x4","y4","elevationFactor","find","heights","coordinate","lerp","points","wayLength","distance","listLength"],"mappings":"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"}