@mapcomponents/react-maplibre 0.1.63 → 0.1.64

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 (294) hide show
  1. package/.editorconfig +1 -1
  2. package/.eslintrc.js +9 -6
  3. package/.github/workflows/check-catalogue-metadata-schema.yml +19 -0
  4. package/CHANGELOG.md +27 -2
  5. package/coverage/clover.xml +671 -1032
  6. package/coverage/coverage-final.json +24 -21
  7. package/coverage/lcov-report/index.html +112 -82
  8. package/coverage/lcov-report/src/components/MapLibreMap/MapLibreMap.tsx.html +24 -24
  9. package/coverage/lcov-report/src/components/MapLibreMap/index.html +1 -1
  10. package/coverage/lcov-report/src/components/MlCenterPosition/MlCenterPosition.tsx.html +5 -5
  11. package/coverage/lcov-report/src/components/MlCenterPosition/index.html +1 -1
  12. package/coverage/lcov-report/src/components/MlCreatePdfButton/MlCreatePdfButton.tsx.html +2 -2
  13. package/coverage/lcov-report/src/components/MlCreatePdfButton/index.html +1 -1
  14. package/coverage/lcov-report/src/components/MlCreatePdfForm/MlCreatePdfForm.cy.tsx.html +1 -1
  15. package/coverage/lcov-report/src/components/MlCreatePdfForm/MlCreatePdfForm.tsx.html +1 -1
  16. package/coverage/lcov-report/src/components/MlCreatePdfForm/index.html +1 -1
  17. package/coverage/lcov-report/src/components/MlFeatureEditor/MlFeatureEditor.tsx.html +2 -5
  18. package/coverage/lcov-report/src/components/MlFeatureEditor/index.html +1 -1
  19. package/coverage/lcov-report/src/components/MlFillExtrusionLayer/MlFillExtrusionLayer.tsx.html +1 -1
  20. package/coverage/lcov-report/src/components/MlFillExtrusionLayer/index.html +1 -1
  21. package/coverage/lcov-report/src/components/MlFollowGps/MlFollowGps.tsx.html +1 -1
  22. package/coverage/lcov-report/src/components/MlFollowGps/index.html +1 -1
  23. package/coverage/lcov-report/src/components/MlGeoJsonLayer/MlGeoJsonLayer.tsx.html +40 -19
  24. package/coverage/lcov-report/src/components/MlGeoJsonLayer/index.html +1 -1
  25. package/coverage/lcov-report/src/components/MlGeoJsonLayer/story_utils/MlGeoJsonLayer.lineStyler.js.html +1 -1
  26. package/coverage/lcov-report/src/components/MlGeoJsonLayer/story_utils/MlGeoJsonLayer.polygonStyler.js.html +1 -1
  27. package/coverage/lcov-report/src/components/MlGeoJsonLayer/story_utils/MlGeojsonLayerCircleStyler.tsx.html +112 -0
  28. package/coverage/lcov-report/src/components/MlGeoJsonLayer/story_utils/MlGeojsonLayerHeatMapStyler.tsx.html +115 -0
  29. package/coverage/lcov-report/src/components/MlGeoJsonLayer/story_utils/index.html +34 -4
  30. package/coverage/lcov-report/src/components/MlGeojsonLayerWithSource/MlGeojsonLayerWithSource.tsx.html +1 -1
  31. package/coverage/lcov-report/src/components/MlGeojsonLayerWithSource/index.html +1 -1
  32. package/coverage/lcov-report/src/components/MlGpxViewer/MlGpxViewer.tsx.html +394 -0
  33. package/coverage/lcov-report/src/components/{MlGPXViewer → MlGpxViewer}/index.html +23 -38
  34. package/coverage/lcov-report/src/components/MlImageMarkerLayer/MlImageMarkerLayer.tsx.html +63 -285
  35. package/coverage/lcov-report/src/components/MlImageMarkerLayer/index.html +21 -21
  36. package/coverage/lcov-report/src/components/MlLayer/MlLayer.tsx.html +1 -1
  37. package/coverage/lcov-report/src/components/MlLayer/index.html +1 -1
  38. package/coverage/lcov-report/src/components/MlLayerMagnify/MlLayerMagnify.tsx.html +58 -76
  39. package/coverage/lcov-report/src/components/MlLayerMagnify/index.html +1 -1
  40. package/coverage/lcov-report/src/components/MlLayerSwipe/MlLayerSwipe.tsx.html +58 -61
  41. package/coverage/lcov-report/src/components/MlLayerSwipe/index.html +11 -11
  42. package/coverage/lcov-report/src/components/MlLayerSwitcher/MlLayerSwitcher.js.html +1 -1
  43. package/coverage/lcov-report/src/components/MlLayerSwitcher/components/LayerBox.js.html +30 -21
  44. package/coverage/lcov-report/src/components/MlLayerSwitcher/components/index.html +1 -1
  45. package/coverage/lcov-report/src/components/MlLayerSwitcher/index.html +1 -1
  46. package/coverage/lcov-report/src/components/MlMarker/MlMarker.tsx.html +1 -1
  47. package/coverage/lcov-report/src/components/MlMarker/index.html +1 -1
  48. package/coverage/lcov-report/src/components/MlMeasureTool/MlMeasureTool.tsx.html +1 -1
  49. package/coverage/lcov-report/src/components/MlMeasureTool/index.html +1 -1
  50. package/coverage/lcov-report/src/components/MlNavigationCompass/MlNavigationCompass.tsx.html +1 -1
  51. package/coverage/lcov-report/src/components/MlNavigationCompass/index.html +1 -1
  52. package/coverage/lcov-report/src/components/MlNavigationTools/MlNavigationTools.tsx.html +1 -1
  53. package/coverage/lcov-report/src/components/MlNavigationTools/index.html +1 -1
  54. package/coverage/lcov-report/src/components/MlOsmLayer/MlOsmLayer.js.html +1 -1
  55. package/coverage/lcov-report/src/components/MlOsmLayer/MlOsmLayer.stories_.js.html +1 -1
  56. package/coverage/lcov-report/src/components/MlOsmLayer/index.html +1 -1
  57. package/coverage/lcov-report/src/components/MlScaleReference/MlScaleReference.js.html +1 -1
  58. package/coverage/lcov-report/src/components/MlScaleReference/index.html +1 -1
  59. package/coverage/lcov-report/src/components/MlShareMapState/MlShareMapState.js.html +1 -1
  60. package/coverage/lcov-report/src/components/MlShareMapState/index.html +1 -1
  61. package/coverage/lcov-report/src/components/MlSketchTool/LayerList/ColorPicker.tsx.html +1 -1
  62. package/coverage/lcov-report/src/components/MlSketchTool/LayerList/LayerList.tsx.html +1 -1
  63. package/coverage/lcov-report/src/components/MlSketchTool/LayerList/LayerListItem.tsx.html +1 -1
  64. package/coverage/lcov-report/src/components/MlSketchTool/LayerList/LayerPropertyForm.tsx.html +1 -1
  65. package/coverage/lcov-report/src/components/MlSketchTool/LayerList/index.html +1 -1
  66. package/coverage/lcov-report/src/components/MlSketchTool/MlSketchTool.tsx.html +1 -1
  67. package/coverage/lcov-report/src/components/MlSketchTool/index.html +1 -1
  68. package/coverage/lcov-report/src/components/MlSpatialElevationProfile/MlSpatialElevationProfile.tsx.html +514 -0
  69. package/coverage/lcov-report/src/components/MlSpatialElevationProfile/index.html +21 -21
  70. package/coverage/lcov-report/src/components/MlThreeJsLayer/MlThreeJsLayer.js.html +1 -1
  71. package/coverage/lcov-report/src/components/MlThreeJsLayer/index.html +1 -1
  72. package/coverage/lcov-report/src/components/MlTransitionGeoJsonLayer/MlTransitionGeoJsonLayer.tsx.html +20 -206
  73. package/coverage/lcov-report/src/components/MlTransitionGeoJsonLayer/index.html +1 -1
  74. package/coverage/lcov-report/src/components/MlUseMapDebugger/MlUseMapDebugger.js.html +1 -1
  75. package/coverage/lcov-report/src/components/MlUseMapDebugger/index.html +1 -1
  76. package/coverage/lcov-report/src/components/MlVectorTileLayer/MlVectorTileLayer.tsx.html +10 -7
  77. package/coverage/lcov-report/src/components/MlVectorTileLayer/index.html +5 -5
  78. package/coverage/lcov-report/src/components/MlWmsFeatureInfoPopup/MlWmsFeatureInfoPopup.js.html +1 -1
  79. package/coverage/lcov-report/src/components/MlWmsFeatureInfoPopup/index.html +1 -1
  80. package/coverage/lcov-report/src/components/MlWmsLayer/MlWmsLayer.tsx.html +111 -57
  81. package/coverage/lcov-report/src/components/MlWmsLayer/index.html +19 -19
  82. package/coverage/lcov-report/src/components/MlWmsLoader/MlWmsLoader.tsx.html +201 -144
  83. package/coverage/lcov-report/src/components/MlWmsLoader/index.html +9 -9
  84. package/coverage/lcov-report/src/contexts/MapContext.tsx.html +23 -23
  85. package/coverage/lcov-report/src/contexts/SimpleDataContext.js.html +1 -1
  86. package/coverage/lcov-report/src/contexts/SimpleDataProvider.js.html +1 -1
  87. package/coverage/lcov-report/src/contexts/index.html +1 -1
  88. package/coverage/lcov-report/src/hooks/index.html +50 -50
  89. package/coverage/lcov-report/src/hooks/useCameraFollowPath/index.html +1 -1
  90. package/coverage/lcov-report/src/hooks/useCameraFollowPath/useCameraFollowPath.tsx.html +1 -1
  91. package/coverage/lcov-report/src/hooks/useExportMap/index.html +1 -1
  92. package/coverage/lcov-report/src/hooks/useExportMap/index.ts.html +1 -1
  93. package/coverage/lcov-report/src/hooks/useExportMap/lib.ts.html +1 -1
  94. package/coverage/lcov-report/src/hooks/useGpx/index.html +116 -0
  95. package/coverage/lcov-report/src/hooks/useGpx/useGpx.tsx.html +295 -0
  96. package/coverage/lcov-report/src/hooks/useLayer.ts.html +132 -66
  97. package/coverage/lcov-report/src/hooks/useLayerEvent.js.html +1 -1
  98. package/coverage/lcov-report/src/hooks/useLayerHoverPopup/index.html +116 -0
  99. package/coverage/lcov-report/src/hooks/useLayerHoverPopup/useLayerHoverPopup.tsx.html +331 -0
  100. package/coverage/lcov-report/src/hooks/useMap.ts.html +47 -47
  101. package/coverage/lcov-report/src/hooks/useMapState.ts.html +54 -54
  102. package/coverage/lcov-report/src/hooks/useSource.ts.html +57 -57
  103. package/coverage/lcov-report/src/hooks/{useWms.js.html → useWms.ts.html} +54 -15
  104. package/coverage/lcov-report/src/index.html +1 -1
  105. package/coverage/lcov-report/src/index.ts.html +6 -6
  106. package/coverage/lcov.info +1284 -1959
  107. package/dist/components/MapLibreMap/lib/MapLibreGlWrapper.d.ts +51 -25
  108. package/dist/components/MlCenterPosition/MlCenterPosition.d.ts +3 -2
  109. package/dist/components/MlCenterPosition/MlCenterPosition.stories.d.ts +35 -16
  110. package/dist/components/MlComponentTemplate/MlComponentTemplate.d.ts +1 -1
  111. package/dist/components/MlComponentTemplate/MlComponentTemplate.stories.d.ts +12 -9
  112. package/dist/components/MlCreatePdfButton/MlCreatePdfButton.d.ts +1 -1
  113. package/dist/components/MlCreatePdfButton/MlCreatePdfButton.stories.d.ts +12 -9
  114. package/dist/components/MlGPXViewer/util/GeoJsonContext.d.ts +1 -1
  115. package/dist/components/MlGeoJsonLayer/MlGeoJsonLayer.d.ts +22 -11
  116. package/dist/components/MlGeoJsonLayer/MlGeoJsonLayer.stories.d.ts +4 -95
  117. package/dist/components/MlGeoJsonLayer/story_utils/MlGeojsonLayerCircleStyler.d.ts +3 -0
  118. package/dist/components/MlGeoJsonLayer/story_utils/MlGeojsonLayerHeatMapStyler.d.ts +3 -0
  119. package/dist/components/MlGpxViewer/MlGpxViewer.d.ts +30 -0
  120. package/dist/components/MlGpxViewer/MlGpxViewer.stories.d.ts +17 -0
  121. package/dist/components/MlGpxViewer/MlGpxViewer.test.d.ts +1 -0
  122. package/dist/components/MlGpxViewer/util/GeoJsonContext.d.ts +10 -0
  123. package/dist/components/MlGpxViewer/util/GeoJsonProvider.d.ts +4 -0
  124. package/dist/components/MlGpxViewer/util/MetadataDrawer.d.ts +7 -0
  125. package/dist/components/MlGpxViewer/util/MlGpxDemoLoader.d.ts +10 -0
  126. package/dist/components/MlGpxViewer/util/MlGpxViewerInstructions.d.ts +3 -0
  127. package/dist/components/MlImageMarkerLayer/MlImageMarkerLayer.d.ts +11 -2
  128. package/dist/components/MlImageMarkerLayer/MlImageMarkerLayer.stories.d.ts +7 -9
  129. package/dist/components/MlLayerMagnify/MlLayerMagnify.d.ts +8 -2
  130. package/dist/components/MlLayerMagnify/MlLayerMagnify.stories.d.ts +13 -9
  131. package/dist/components/MlLayerSwipe/MlLayerSwipe.d.ts +13 -3
  132. package/dist/components/MlLayerSwipe/MlLayerSwipe.stories.d.ts +12 -10
  133. package/dist/components/MlSpatialElevationProfile/MlSpatialElevationProfile.d.ts +33 -14
  134. package/dist/components/MlSpatialElevationProfile/MlSpatialElevationProfile.stories.d.ts +18 -15
  135. package/dist/components/MlSpatialElevationProfile/util/getElevationData.d.ts +14 -0
  136. package/dist/components/MlTransitionGeoJsonLayer/MlTransitionGeoJsonLayer.d.ts +3 -67
  137. package/dist/components/MlWmsLayer/MlWmsLayer.d.ts +7 -4
  138. package/dist/components/MlWmsLoader/MlWmsLoader.d.ts +17 -10
  139. package/dist/components/MlWmsLoader/MlWmsLoader.stories.d.ts +23 -12
  140. package/dist/components/MlWmsLoader/utils/MlWmsLoaderInstructions.d.ts +3 -0
  141. package/dist/components/MlWmsLoader/utils/WMSLinks.d.ts +6 -0
  142. package/dist/decorators/ThemeWrapper.d.ts +3 -1
  143. package/dist/hooks/useGpx/lib/gpxConverter.d.ts +11 -0
  144. package/dist/hooks/useGpx/useGpx.d.ts +26 -0
  145. package/dist/hooks/useGpx/useGpx.stories.d.ts +10 -0
  146. package/dist/hooks/useLayer.d.ts +13 -7
  147. package/dist/hooks/useLayerHoverPopup/useLayerHoverPopup.d.ts +23 -0
  148. package/dist/hooks/useLayerHoverPopup/useLayerHoverPopup.stories.d.ts +10 -0
  149. package/dist/hooks/useMap.d.ts +1 -1
  150. package/dist/hooks/useMap.test.d.ts +1 -0
  151. package/dist/hooks/useSource.d.ts +2 -2
  152. package/dist/hooks/useWms.d.ts +24 -16
  153. package/dist/index.d.ts +5 -5
  154. package/dist/index.esm.js +9310 -14006
  155. package/dist/index.esm.js.map +1 -1
  156. package/dist/setupTests.d.ts +6 -5
  157. package/dist/ui_components/Dropzone.d.ts +5 -0
  158. package/dist/ui_components/ImageLoader.d.ts +8 -1
  159. package/dist/ui_components/LoadingOverlayContext.d.ts +11 -11
  160. package/dist/ui_components/Sidebar.d.ts +7 -6
  161. package/dist/ui_components/Tooltip.d.ts +1 -1
  162. package/dist/ui_components/TopToolbar.d.ts +4 -3
  163. package/dist/ui_components/UploadButton.d.ts +6 -0
  164. package/dist/util/BubbleForInstructions.d.ts +2 -0
  165. package/dist/util/Instructions.d.ts +13 -0
  166. package/package.json +195 -191
  167. package/{src/components/MlImageMarkerLayer → public}/assets/wg-marker.png +0 -0
  168. package/scripts/build-catalogue-meta.js +35 -11
  169. package/src/components/MapLibreMap/lib/MapLibreGlWrapper.ts +230 -188
  170. package/src/components/MlCenterPosition/MlCenterPosition.meta_.json +1 -2
  171. package/src/components/MlCenterPosition/MlCenterPosition.stories.tsx +20 -0
  172. package/src/components/MlCenterPosition/MlCenterPosition.tsx +4 -4
  173. package/src/components/MlComponentTemplate/MlComponentTemplate.meta_.json +1 -2
  174. package/src/components/MlComponentTemplate/{MlComponentTemplate.stories.js → MlComponentTemplate.stories.tsx} +2 -2
  175. package/src/components/MlComponentTemplate/MlComponentTemplate.tsx +1 -1
  176. package/src/components/MlCreatePdfButton/MlCreatePdfButton.meta_.json +1 -2
  177. package/src/components/MlCreatePdfButton/{MlCreatePdfButton.stories.js → MlCreatePdfButton.stories.tsx} +1 -1
  178. package/src/components/MlCreatePdfButton/MlCreatePdfButton.tsx +1 -1
  179. package/src/components/MlCreatePdfForm/MlCreatePdfForm.meta.json +1 -2
  180. package/src/components/MlCreatePdfForm/lib/PdfForm.tsx +25 -2
  181. package/src/components/MlFeatureEditor/MlFeatureEditor.meta.json +1 -2
  182. package/src/components/MlFeatureEditor/MlFeatureEditor.tsx +0 -1
  183. package/src/components/MlFillExtrusionLayer/MlFillExtrusionLayer.meta.json +1 -2
  184. package/src/components/MlFollowGps/MlFollowGps.meta.json +1 -2
  185. package/src/components/MlGeoJsonLayer/MlGeoJsonLayer.meta.json +1 -2
  186. package/src/components/MlGeoJsonLayer/MlGeoJsonLayer.stories.tsx +89 -0
  187. package/src/components/MlGeoJsonLayer/MlGeoJsonLayer.tsx +24 -17
  188. package/src/components/MlGeoJsonLayer/assets/earthquake.json +109937 -0
  189. package/src/components/MlGeoJsonLayer/assets/wg_locations.json +65 -0
  190. package/src/components/MlGeoJsonLayer/story_utils/MlGeojsonLayerCircleStyler.tsx +9 -0
  191. package/src/components/MlGeoJsonLayer/story_utils/MlGeojsonLayerHeatMapStyler.tsx +10 -0
  192. package/src/components/MlGeojsonLayerWithSource/MlGeojsonLayerWithSource.meta_.json +1 -2
  193. package/src/components/{MlGPXViewer/MlGPXViewer.doc.de.md → MlGpxViewer/MlGpxViewer.doc.de.md} +0 -0
  194. package/src/components/{MlGPXViewer/MlGPXViewer.doc.en.md → MlGpxViewer/MlGpxViewer.doc.en.md} +0 -0
  195. package/src/components/{MlGPXViewer/MlGPXViewer.meta.json → MlGpxViewer/MlGpxViewer.meta.json} +2 -3
  196. package/src/components/MlGpxViewer/MlGpxViewer.stories.tsx +109 -0
  197. package/src/components/MlGpxViewer/MlGpxViewer.test.js +53 -0
  198. package/src/components/MlGpxViewer/MlGpxViewer.tsx +103 -0
  199. package/src/components/{MlGPXViewer → MlGpxViewer}/util/GeoJsonContext.ts +0 -0
  200. package/src/components/{MlGPXViewer → MlGpxViewer}/util/GeoJsonProvider.tsx +0 -0
  201. package/src/components/MlGpxViewer/util/MetadataDrawer.tsx +38 -0
  202. package/src/components/MlGpxViewer/util/MlGpxDemoLoader.tsx +128 -0
  203. package/src/components/MlGpxViewer/util/MlGpxViewerInstructions.tsx +68 -0
  204. package/src/components/MlImageMarkerLayer/MlImageMarkerLayer.meta_.json +1 -2
  205. package/src/components/MlImageMarkerLayer/MlImageMarkerLayer.stories.tsx +41 -0
  206. package/src/components/MlImageMarkerLayer/MlImageMarkerLayer.test.js +27 -8
  207. package/src/components/MlImageMarkerLayer/MlImageMarkerLayer.tsx +41 -115
  208. package/src/components/MlLayer/MlLayer.meta_.json +1 -2
  209. package/src/components/MlLayerMagnify/MlLayerMagnify.meta.json +1 -2
  210. package/src/components/MlLayerMagnify/MlLayerMagnify.stories.tsx +44 -0
  211. package/src/components/MlLayerMagnify/{MlLayerMagnify.test.js → MlLayerMagnify.test.tsx} +15 -18
  212. package/src/components/MlLayerMagnify/MlLayerMagnify.tsx +55 -61
  213. package/src/components/MlLayerSwipe/MlLayerSwipe.meta.json +1 -2
  214. package/src/components/MlLayerSwipe/{MlLayerSwipe.stories.js → MlLayerSwipe.stories.tsx} +9 -11
  215. package/src/components/MlLayerSwipe/MlLayerSwipe.tsx +47 -48
  216. package/src/components/MlLayerSwitcher/MlLayerSwitcher.meta_.json +1 -2
  217. package/src/components/MlLayerSwitcher/components/LayerBox.js +22 -19
  218. package/src/components/MlMarker/MlMarker.meta_.json +1 -2
  219. package/src/components/MlMeasureTool/MlMeasureTool.meta.json +1 -2
  220. package/src/components/MlNavigationCompass/MlNavigationCompass.meta.json +1 -2
  221. package/src/components/MlNavigationTools/MlNavigationTools.meta.json +1 -2
  222. package/src/components/MlScaleReference/MlScaleReference.meta.json +1 -2
  223. package/src/components/MlShareMapState/MlShareMapState.meta_.json +1 -2
  224. package/src/components/MlSketchTool/MlSketchTool.meta.json +1 -2
  225. package/src/components/MlSpatialElevationProfile/MlSpatialElevationProfile.meta.json +1 -2
  226. package/src/components/MlSpatialElevationProfile/MlSpatialElevationProfile.stories.tsx +121 -0
  227. package/src/components/MlSpatialElevationProfile/MlSpatialElevationProfile.test.js +30 -1
  228. package/src/components/MlSpatialElevationProfile/MlSpatialElevationProfile.tsx +143 -0
  229. package/src/components/MlSpatialElevationProfile/util/getElevationData.tsx +103 -0
  230. package/src/components/MlThreeJsLayer/MlThreeJsLayer.meta.json +1 -2
  231. package/src/components/MlTransitionGeoJsonLayer/MlTransitionGeoJsonLayer.meta.json +1 -2
  232. package/src/components/MlTransitionGeoJsonLayer/MlTransitionGeoJsonLayer.stories.js +2 -3
  233. package/src/components/MlTransitionGeoJsonLayer/MlTransitionGeoJsonLayer.tsx +17 -79
  234. package/src/components/MlUseMapDebugger/MlUseMapDebugger.meta_.json +1 -2
  235. package/src/components/MlVectorTileLayer/MlVectorTileLayer.meta.json +1 -2
  236. package/src/components/MlVectorTileLayer/MlVectorTileLayer.tsx +3 -2
  237. package/src/components/MlWmsFeatureInfoPopup/MlWmsFeatureInfoPopup.meta_.json +1 -2
  238. package/src/components/MlWmsLayer/MlWmsLayer.tsx +59 -41
  239. package/src/components/MlWmsLoader/MlWmsLoader.meta.json +1 -2
  240. package/src/components/MlWmsLoader/MlWmsLoader.stories.tsx +89 -0
  241. package/src/components/MlWmsLoader/MlWmsLoader.tsx +141 -122
  242. package/src/components/MlWmsLoader/utils/MlWmsLoaderInstructions.tsx +50 -0
  243. package/src/components/MlWmsLoader/utils/WMSLinks.tsx +128 -0
  244. package/src/decorators/MapContextDecorator.js +1 -1
  245. package/src/decorators/MapContextDecoratorHooks.js +1 -1
  246. package/src/decorators/ThemeWrapper.tsx +9 -0
  247. package/src/hooks/useCameraFollowPath/useCameraFollowPath.meta.json +1 -2
  248. package/src/{components/MlGPXViewer → hooks/useGpx/lib}/gpxConverter.js +1 -0
  249. package/src/hooks/useGpx/useGpx.doc.de.md +3 -0
  250. package/src/hooks/useGpx/useGpx.meta_.json +15 -0
  251. package/src/{components/MlCenterPosition/MlCenterPosition.stories.js → hooks/useGpx/useGpx.stories.js} +4 -5
  252. package/src/hooks/useGpx/useGpx.tsx +70 -0
  253. package/src/hooks/useLayer.ts +32 -10
  254. package/src/hooks/useLayerHoverPopup/useLayerHoverPopup.doc.de.md +3 -0
  255. package/src/hooks/useLayerHoverPopup/useLayerHoverPopup.meta_.json +15 -0
  256. package/src/hooks/useLayerHoverPopup/useLayerHoverPopup.stories.js +20 -0
  257. package/src/hooks/useLayerHoverPopup/useLayerHoverPopup.tsx +82 -0
  258. package/src/hooks/useMap.test.tsx +48 -0
  259. package/src/hooks/useMap.ts +8 -8
  260. package/src/hooks/useSource.ts +4 -4
  261. package/src/hooks/{useWms.js → useWms.ts} +24 -11
  262. package/src/index.ts +5 -5
  263. package/src/setupTests.js +18 -15
  264. package/src/ui_components/Dropzone.tsx +104 -0
  265. package/src/ui_components/{ImageLoader.js → ImageLoader.tsx} +30 -25
  266. package/src/ui_components/{LoadingOverlayContext.js → LoadingOverlayContext.tsx} +12 -15
  267. package/src/ui_components/Sidebar.tsx +12 -10
  268. package/src/ui_components/Tooltip.tsx +17 -0
  269. package/src/ui_components/TopToolbar.tsx +5 -3
  270. package/src/ui_components/UploadButton.tsx +57 -0
  271. package/src/util/BubbleForInstructions.js +46 -0
  272. package/src/util/Instructions.tsx +60 -0
  273. package/tsconfig.json +1 -1
  274. package/coverage/lcov-report/src/components/MlGPXViewer/MlGPXViewer.tsx.html +0 -1222
  275. package/coverage/lcov-report/src/components/MlGPXViewer/gpxConverter.js.html +0 -1645
  276. package/coverage/lcov-report/src/components/MlSpatialElevationProfile/MlSpatialElevationProfile.js.html +0 -757
  277. package/dist/components/MlGPXViewer/util/MlGPXViewerInstructions.d.ts +0 -1
  278. package/dist/components/MlGPXViewer/util/SampleLayer.d.ts +0 -0
  279. package/dist/components/MlGPXViewer/util/demoViewer.d.ts +0 -5
  280. package/src/components/MlGPXViewer/MlGPXViewer.stories.js +0 -91
  281. package/src/components/MlGPXViewer/MlGPXViewer.test.js +0 -28
  282. package/src/components/MlGPXViewer/MlGPXViewer.tsx +0 -379
  283. package/src/components/MlGPXViewer/util/MlGPXViewerInstructions.js +0 -145
  284. package/src/components/MlGPXViewer/util/SampleLayer.js +0 -2
  285. package/src/components/MlGPXViewer/util/demoViewer.js +0 -254
  286. package/src/components/MlImageMarkerLayer/MlImageMarkerLayer.stories.js +0 -45
  287. package/src/components/MlLayerMagnify/MlLayerMagnify.stories.js +0 -41
  288. package/src/components/MlSpatialElevationProfile/MlSpatialElevationProfile.js +0 -224
  289. package/src/components/MlSpatialElevationProfile/MlSpatialElevationProfile.stories.js +0 -57
  290. package/src/components/MlWmsLoader/MlWmsLoader.stories.js +0 -47
  291. package/src/decorators/ThemeWrapper.jsx +0 -9
  292. package/src/ui_components/Legend.js +0 -44
  293. package/src/ui_components/LoadingOverlay.js +0 -41
  294. package/src/ui_components/Tooltip.js +0 -21
@@ -1,7 +1,23 @@
1
- import { Map, IControl, MapOptions as MapOptionsType, } from "!maplibre-gl";
2
- import { Map as MapType } from "maplibre-gl";
3
-
4
- type EventArgArray = [string, string | Function, Function?];
1
+ import {
2
+ Map,
3
+ IControl,
4
+ MapOptions as MapOptionsType,
5
+ MapEventType,
6
+ MapLayerEventType,
7
+ StyleImageInterface,
8
+ LayerSpecification,
9
+ CustomLayerInterface,
10
+ SourceSpecification,
11
+ ControlPosition,
12
+ } from '!maplibre-gl';
13
+ import { Map as MapType, Style } from 'maplibre-gl';
14
+
15
+ type WrapperEventArgArray = [string, (arg0: unknown) => void];
16
+ type EventArgArray = [
17
+ keyof MapLayerEventType | keyof MapEventType,
18
+ string | ((arg0: unknown) => void),
19
+ ((arg0: unknown) => void)?
20
+ ];
5
21
  type LayerState = {
6
22
  id: string;
7
23
  type: string;
@@ -22,52 +38,103 @@ type ViewportState = {
22
38
  *
23
39
  * @class
24
40
  */
41
+
25
42
  class MapLibreGlWrapper {
26
43
  registeredElements: {
27
44
  [key: string]: {
28
45
  layers: [string?];
29
46
  sources: [string?];
30
47
  images: [string?];
31
- controls: [IControl?];
48
+ controls: [(IControl | unknown)?];
32
49
  events: [EventArgArray?];
33
- wrapperEvents: [EventArgArray?];
50
+ wrapperEvents: [WrapperEventArgArray?];
34
51
  };
35
52
  };
36
53
  baseLayers: [string?];
37
54
  firstSymbolLayer: string | undefined;
38
- eventHandlers: { layerchange: [Function?]; viewportchange: [Function?] };
55
+ eventHandlers: {
56
+ layerchange: {
57
+ handler: (ev: unknown) => void;
58
+ options?: object | string;
59
+ }[];
60
+ viewportchange: {
61
+ handler: (ev: unknown) => void;
62
+ }[];
63
+ };
39
64
  wrapper: {
40
- on: Function;
41
- off: Function;
42
- fire: Function;
43
- layerState: [LayerState?];
65
+ on: (
66
+ eventName: string,
67
+ handler: (ev: unknown) => void,
68
+ options?: object | string,
69
+ componentId?: string
70
+ ) => void;
71
+ off: (type: string, listener: (ev: unknown) => void) => void;
72
+ fire: (eventName: string, context?: unknown) => void;
73
+ layerState: LayerState[];
44
74
  layerStateString: string;
45
75
  oldLayerStateStrings: object;
46
- buildLayerObject: Function;
47
- buildLayerObjects: Function;
48
- refreshLayerState: Function;
76
+ buildLayerObject: (layer: ReturnType<Style['getLayer']>) => LayerState;
77
+ buildLayerObjects: () => LayerState[];
78
+ refreshLayerState: () => void;
49
79
  viewportState: ViewportState;
50
80
  viewportStateString: string;
51
81
  oldViewportStateString: string;
52
- getViewport: Function;
53
- refreshViewport: Function;
82
+ getViewport: () => {
83
+ center: { lng: number; lat: number };
84
+ zoom: number;
85
+ bearing: number;
86
+ pitch: number;
87
+ };
88
+ refreshViewport: () => void;
54
89
  };
55
- initRegisteredElements: Function;
56
- addNativeMaplibreFunctionsAndProps: Function;
90
+ initRegisteredElements: (componentId: string, force?: boolean | undefined) => void;
91
+ addNativeMaplibreFunctionsAndProps: () => void;
57
92
  map: MapType;
58
93
  style: object;
59
94
 
60
95
  styleJson: object;
61
- addLayer: Function;
62
- addSource: Function;
63
- addControl: Function;
64
- addImage: Function;
65
- on: Function;
66
- cleanup: Function;
67
-
68
- constructor(props: { mapOptions: MapOptionsType; onReady: Function }) {
96
+ addLayer: (
97
+ layer:
98
+ | (LayerSpecification & {
99
+ source?: string | SourceSpecification | undefined;
100
+ })
101
+ | (CustomLayerInterface & {
102
+ source?: string | SourceSpecification | undefined;
103
+ }),
104
+ beforeId?: string | undefined,
105
+ componentId?: string | undefined
106
+ ) => Map | undefined;
107
+ addSource: (id: string, source: SourceSpecification,componentId?: string | undefined) => Map | undefined;
108
+ addControl: (control: IControl | unknown, position?: ControlPosition | undefined,componentId?: string | undefined) => Map | undefined;
109
+ addImage: (
110
+ id: string,
111
+ image:
112
+ | HTMLImageElement
113
+ | ImageBitmap
114
+ | ImageData
115
+ | {
116
+ width: number;
117
+ height: number;
118
+ data: Uint8Array | Uint8ClampedArray;
119
+ }
120
+ | StyleImageInterface,
121
+ componentId?: string | undefined
122
+ ) => void;
123
+ on: (
124
+ type: keyof MapLayerEventType | keyof MapEventType | string,
125
+ layerId: string | ((ev: unknown) => void),
126
+ handler?: ((ev: MapEventType & unknown) => Map | void) | string,
127
+ componentId?: string | undefined
128
+ ) => Map | undefined;
129
+ cleanup: (componentId: string) => void;
130
+
131
+ constructor(props: {
132
+ mapOptions: MapOptionsType;
133
+ onReady: (map: MapType, context: unknown) => void;
134
+ }) {
69
135
  // closure variable to safely point to the object context of the current MapLibreGlWrapper instance
70
- let self = this;
136
+ // eslint-disable-next-line @typescript-eslint/no-this-alias
137
+ const self = this;
71
138
 
72
139
  // element registration and cleanup on a component level is experimental
73
140
  this.registeredElements = {};
@@ -98,21 +165,21 @@ class MapLibreGlWrapper {
98
165
  */
99
166
  on: (
100
167
  eventName: string,
101
- handler: Function,
168
+ handler: (ev: unknown) => void,
102
169
  options?: object | string,
103
170
  componentId?: string
104
171
  ) => {
105
172
  if (!self.eventHandlers[eventName]) return;
106
173
 
107
- if (typeof options === "string") {
174
+ if (typeof options === 'string') {
108
175
  componentId = options;
109
176
  options = {};
110
177
  }
111
178
 
112
179
  self.eventHandlers[eventName].push({ handler, options });
113
180
 
114
- let _arguments: EventArgArray = [eventName, handler];
115
- if (componentId && typeof componentId === "string") {
181
+ const _arguments: WrapperEventArgArray = [eventName, handler];
182
+ if (componentId && typeof componentId === 'string') {
116
183
  self.initRegisteredElements(componentId);
117
184
  self.registeredElements[componentId].wrapperEvents.push(_arguments);
118
185
  }
@@ -124,12 +191,12 @@ class MapLibreGlWrapper {
124
191
  * @param {function} handler
125
192
  * @returns {undefined}
126
193
  */
127
- off: (eventName: string, handler: Function) => {
194
+ off: (eventName, handler) => {
128
195
  if (!self.eventHandlers[eventName]) return;
129
196
 
130
197
  self.eventHandlers[eventName] = self.eventHandlers[eventName].filter(
131
- (item: any) => {
132
- if (!Object.is(item.handler, handler)) {
198
+ (item: WrapperEventArgArray) => {
199
+ if (!Object.is(item[1], handler)) {
133
200
  return item;
134
201
  }
135
202
  return false;
@@ -143,13 +210,17 @@ class MapLibreGlWrapper {
143
210
  * @param {object} context
144
211
  * @returns {undefined}
145
212
  */
146
- fire: (eventName: string, context: object) => {
213
+ fire: (eventName, context) => {
147
214
  if (!self.eventHandlers[eventName]) return;
148
215
 
149
- var scope = context || window;
150
- let event = new Event(eventName);
216
+ const scope = context || window;
217
+ const event = new Event(eventName);
151
218
 
152
- self.eventHandlers[eventName].forEach(function (item: any) {
219
+ self.eventHandlers[eventName].forEach(function (
220
+ item:
221
+ | MapLibreGlWrapper['eventHandlers']['layerchange'][0]
222
+ | MapLibreGlWrapper['eventHandlers']['viewportchange'][0]
223
+ ) {
153
224
  item.handler.call(scope, event, self);
154
225
  });
155
226
  },
@@ -160,7 +231,7 @@ class MapLibreGlWrapper {
160
231
  /**
161
232
  * Maps layerIds to layerState in JSON string form for quick deep comparisons
162
233
  */
163
- layerStateString: "",
234
+ layerStateString: '',
164
235
  /**
165
236
  * Previous Version of layerStateString
166
237
  */
@@ -171,7 +242,7 @@ class MapLibreGlWrapper {
171
242
  * @param {string} layer
172
243
  * @returns object
173
244
  */
174
- buildLayerObject: (layer: any) => {
245
+ buildLayerObject: (layer: ReturnType<Style['getLayer']>) => {
175
246
  //if (self.baseLayers.indexOf(layer.id) === -1) {
176
247
  //let paint = {};
177
248
  //let values = layer.paint?._values;
@@ -192,7 +263,7 @@ class MapLibreGlWrapper {
192
263
  return {
193
264
  id: layer.id,
194
265
  type: layer.type,
195
- visible: layer.visibility === "none" ? false : true,
266
+ visible: layer.visibility === 'none' ? false : true,
196
267
  baseLayer: self.baseLayers.indexOf(layer.id) !== -1,
197
268
  //paint,
198
269
  //layout,
@@ -213,56 +284,53 @@ class MapLibreGlWrapper {
213
284
  * @returns array
214
285
  */
215
286
  buildLayerObjects: () => {
216
- // @ts-ignore
217
287
  return self.map.style._order
218
288
  .map((layerId: string) => {
219
- return self.wrapper.buildLayerObject(
220
- self.map.style._layers[layerId]
221
- );
289
+ return self.wrapper.buildLayerObject(self.map.style._layers[layerId]);
222
290
  })
223
- .filter((n: string) => n);
291
+ .filter((n) => typeof n !== 'undefined');
224
292
  },
225
293
  /**
226
294
  * Updates layer state info objects
227
295
  */
228
296
  refreshLayerState: () => {
229
297
  self.wrapper.layerState = self.wrapper.buildLayerObjects();
230
- if (
231
- JSON.stringify(self.wrapper.layerState) !==
232
- self.wrapper.layerStateString
233
- ) {
234
- self.wrapper.fire("layerchange");
235
- self.wrapper.layerStateString = JSON.stringify(
236
- self.wrapper.layerState
237
- );
298
+ if (JSON.stringify(self.wrapper.layerState) !== self.wrapper.layerStateString) {
299
+ self.wrapper.fire('layerchange');
300
+ self.wrapper.layerStateString = JSON.stringify(self.wrapper.layerState);
238
301
  }
239
302
  },
240
303
  /**
241
304
  * Object containing information on the current viewport state
242
305
  */
243
306
  viewportState: {
244
- center:{lng:0,lat:0},
307
+ center: { lng: 0, lat: 0 },
245
308
  zoom: 0,
246
- bearing:0,
247
- pitch:0
309
+ bearing: 0,
310
+ pitch: 0,
248
311
  },
249
312
  /**
250
313
  * The same data as viewportState in JSON string form for quick deep comparisons
251
314
  */
252
- viewportStateString: "{}",
315
+ viewportStateString: '{}',
253
316
  /**
254
317
  * Previous version of viewportStateString
255
318
  */
256
- oldViewportStateString: "{}",
319
+ oldViewportStateString: '{}',
257
320
  getViewport: () =>
258
- typeof self.map.getCenter === "function"
321
+ typeof self.map.getCenter === 'function'
259
322
  ? {
260
323
  center: (({ lng, lat }) => ({ lng, lat }))(self.map.getCenter()),
261
324
  zoom: self.map.getZoom(),
262
325
  bearing: self.map.getBearing(),
263
326
  pitch: self.map.getPitch(),
264
- }
265
- : {},
327
+ }
328
+ : {
329
+ center: { lng: 0, lat: 0 },
330
+ zoom: 0,
331
+ bearing: 0,
332
+ pitch: 0,
333
+ },
266
334
  refreshViewport: () => {
267
335
  self.wrapper.viewportState = self.wrapper.getViewport();
268
336
  },
@@ -274,13 +342,10 @@ class MapLibreGlWrapper {
274
342
  * @param {string} componentId
275
343
  * @param {boolean} force
276
344
  */
277
- this.initRegisteredElements = (
278
- componentId: string,
279
- force: boolean | undefined
280
- ) => {
345
+ this.initRegisteredElements = (componentId: string, force?: boolean | undefined) => {
281
346
  if (
282
- typeof self.registeredElements[componentId] === "undefined" ||
283
- (typeof force !== "undefined" && force)
347
+ typeof self.registeredElements[componentId] === 'undefined' ||
348
+ (typeof force !== 'undefined' && force)
284
349
  ) {
285
350
  self.registeredElements[componentId] = {
286
351
  layers: [],
@@ -299,26 +364,22 @@ class MapLibreGlWrapper {
299
364
  * @param {object} layer
300
365
  * @param {string} beforeId
301
366
  * @param {string} componentId
302
- * @returns {undefined}
303
367
  */
304
- this.addLayer = (layer: any, beforeId: string, componentId: string) => {
368
+ this.addLayer = (layer, beforeId, componentId) => {
305
369
  if (!self.map.style) {
306
370
  return;
307
371
  }
308
- if (
309
- componentId &&
310
- typeof componentId === "string" &&
311
- typeof layer.id !== "undefined"
312
- ) {
372
+ if (componentId && typeof componentId === 'string' && typeof layer.id !== 'undefined') {
313
373
  self.initRegisteredElements(componentId);
314
374
  self.registeredElements[componentId].layers.push(layer.id);
315
375
 
316
- if (typeof layer.source === "object") {
376
+ if (layer?.source && typeof layer?.source !== 'string') {
317
377
  self.registeredElements[componentId].sources.push(layer.id);
318
378
  }
319
379
  }
320
380
 
321
381
  self.map.addLayer(layer, beforeId);
382
+ return self.map;
322
383
  };
323
384
 
324
385
  /**
@@ -330,20 +391,17 @@ class MapLibreGlWrapper {
330
391
  * @param {string} componentId
331
392
  * @returns {undefined}
332
393
  */
333
- this.addSource = (sourceId: string, source: any, componentId: string) => {
394
+ this.addSource = (sourceId, source, componentId) => {
334
395
  if (!self.map.style) {
335
396
  return;
336
397
  }
337
- if (
338
- componentId &&
339
- typeof componentId === "string" &&
340
- typeof sourceId !== "undefined"
341
- ) {
398
+ if (componentId && typeof componentId === 'string' && typeof sourceId !== 'undefined') {
342
399
  self.initRegisteredElements(componentId);
343
400
  self.registeredElements[componentId].sources.push(sourceId);
344
401
  }
345
402
 
346
403
  self.map.addSource(sourceId, source);
404
+ return self.map;
347
405
  };
348
406
 
349
407
  /**
@@ -355,23 +413,16 @@ class MapLibreGlWrapper {
355
413
  * @param {string} componentId
356
414
  * @returns {undefined}
357
415
  */
358
- this.addImage = (id: string, image: any, ref: any, componentId: string) => {
416
+ this.addImage = (id, image, componentId) => {
359
417
  if (!self.map.style) {
360
418
  return;
361
419
  }
362
- if (typeof ref === "string" && typeof componentId === "undefined") {
363
- return self.addImage.call(self, id, image, undefined, ref);
364
- }
365
- if (
366
- componentId &&
367
- typeof componentId === "string" &&
368
- typeof id !== "undefined"
369
- ) {
420
+ if (componentId && typeof componentId === 'string' && typeof id !== 'undefined') {
370
421
  self.initRegisteredElements(componentId);
371
422
  self.registeredElements[componentId].images.push(id);
372
423
  }
373
424
 
374
- self.map.addImage(id, image, ref);
425
+ self.map.addImage(id, image);
375
426
  };
376
427
 
377
428
  /**
@@ -381,15 +432,14 @@ class MapLibreGlWrapper {
381
432
  * @param {string} layerId
382
433
  * @param {function} handler
383
434
  * @param {string} componentId
384
- * @returns {undefined}
385
435
  */
386
436
  this.on = (
387
- type: string,
388
- layerId: string,
389
- handler: Function,
390
- componentId: string
437
+ type: keyof MapLayerEventType | keyof MapEventType,
438
+ layerId: string | ((ev: unknown) => void),
439
+ handler: (ev: MapEventType & unknown) => Map | void,
440
+ componentId?: string
391
441
  ) => {
392
- if (typeof handler === "string" && typeof layerId === "function") {
442
+ if (typeof handler === 'string' && typeof layerId === 'function') {
393
443
  return self.on.call(self, type, undefined, layerId, handler);
394
444
  }
395
445
 
@@ -398,13 +448,15 @@ class MapLibreGlWrapper {
398
448
  _arguments = [type, handler];
399
449
  }
400
450
 
401
- if (componentId && typeof componentId === "string") {
451
+ if (componentId && typeof componentId === 'string') {
402
452
  self.initRegisteredElements(componentId);
403
453
  self.registeredElements[componentId].events.push(_arguments);
404
454
  }
405
455
 
406
- // @ts-ignore:
456
+ // eslint-disable-next-line @typescript-eslint/ban-ts-comment
457
+ // @ts-ignore
407
458
  self.map.on(..._arguments);
459
+ return self.map;
408
460
  };
409
461
 
410
462
  /**
@@ -414,13 +466,14 @@ class MapLibreGlWrapper {
414
466
  * @param {string} position
415
467
  * @param {string} componentId
416
468
  */
417
- this.addControl = (control: any, position: any, componentId: string) => {
418
- if (componentId && typeof componentId === "string") {
469
+ this.addControl = (control, position, componentId) => {
470
+ if (componentId && typeof componentId === 'string') {
419
471
  self.initRegisteredElements(componentId);
420
472
  self.registeredElements[componentId].controls.push(control);
421
473
  }
422
474
 
423
- self.map.addControl(control, position);
475
+ self.map.addControl(control as IControl, position);
476
+ return self.map;
424
477
  };
425
478
 
426
479
  /**
@@ -429,68 +482,60 @@ class MapLibreGlWrapper {
429
482
  * @param {string} componentId
430
483
  */
431
484
  this.cleanup = (componentId: string) => {
432
- if (
433
- self.map.style &&
434
- typeof self.registeredElements[componentId] !== "undefined"
435
- ) {
485
+ if (self.map.style && typeof self.registeredElements[componentId] !== 'undefined') {
436
486
  // cleanup layers
437
- self.registeredElements[componentId].layers.forEach((item: any) => {
487
+ self.registeredElements[componentId].layers.forEach((item: string) => {
438
488
  if (self.map.style.getLayer(item)) {
439
489
  self.map.style.removeLayer(item);
440
490
  }
441
491
  });
442
492
 
443
493
  // cleanup sources
444
- self.registeredElements[componentId].sources.forEach((item: any) => {
494
+ self.registeredElements[componentId].sources.forEach((item: string) => {
445
495
  if (self.map.style.getSource(item)) {
446
496
  self.map.style.removeSource(item);
447
497
  }
448
498
  });
449
499
 
450
500
  // cleanup images
451
- self.registeredElements[componentId].images.forEach((item: any) => {
501
+ self.registeredElements[componentId].images.forEach((item: string) => {
452
502
  if (self.map.hasImage(item)) {
453
503
  self.map.style.removeImage(item);
454
504
  }
455
505
  });
456
506
 
457
507
  // cleanup events
458
- self.registeredElements[componentId].events.forEach((item: any) => {
508
+ self.registeredElements[componentId].events.forEach((item: EventArgArray) => {
509
+ // eslint-disable-next-line @typescript-eslint/ban-ts-comment
459
510
  // @ts-ignore
460
511
  self.map.off(...item);
461
512
  });
462
513
 
463
514
  // cleanup controls
464
- self.registeredElements[componentId].controls.forEach((item: any) => {
465
- self.map.removeControl(item);
515
+ self.registeredElements[componentId].controls.forEach((item: IControl | unknown) => {
516
+ self.map.removeControl(item as IControl);
466
517
  });
467
518
 
468
519
  // cleanup wrapper events
469
- self.registeredElements[componentId].wrapperEvents.forEach(
470
- (item: any) => {
471
- self.wrapper.off(...item);
472
- }
473
- );
520
+ self.registeredElements[componentId].wrapperEvents.forEach((item: WrapperEventArgArray) => {
521
+ self.wrapper.off(...item);
522
+ });
474
523
 
475
524
  self.initRegisteredElements(componentId, true);
476
525
  }
477
526
  };
478
527
 
479
528
  // add style prop functions that require map._update to be called afterwards
480
- let updatingStyleFunctions = [
481
- "moveLayer",
482
- "removeLayer",
483
- "removeSource",
484
- "setPaintProperty",
485
- "setLayoutProperty",
529
+ const updatingStyleFunctions = [
530
+ 'moveLayer',
531
+ 'removeLayer',
532
+ 'removeSource',
533
+ 'setPaintProperty',
534
+ 'setLayoutProperty',
486
535
  ];
487
536
  updatingStyleFunctions.forEach((item) => {
488
537
  this[item] = (...props: any[]) => {
489
- if (
490
- self.map &&
491
- self.map.style &&
492
- typeof self.map.style[item] === "function"
493
- ) {
538
+ if (self.map && self.map.style && typeof self.map.style[item] === 'function') {
494
539
  self.map.style[item](...props);
495
540
  }
496
541
  return self.map._update ? self.map._update(true) : undefined;
@@ -498,13 +543,13 @@ class MapLibreGlWrapper {
498
543
  });
499
544
 
500
545
  // add style prop functions
501
- let styleFunctions = [
502
- "getLayer",
503
- "getSource",
504
- "listImages",
505
- "getPaintProperty",
506
- "getLayoutProperty",
507
- "removeImage",
546
+ const styleFunctions = [
547
+ 'getLayer',
548
+ 'getSource',
549
+ 'listImages',
550
+ 'getPaintProperty',
551
+ 'getLayoutProperty',
552
+ 'removeImage',
508
553
  ];
509
554
  styleFunctions.forEach((item) => {
510
555
  this[item] = (...props: any[]) => {
@@ -517,57 +562,55 @@ class MapLibreGlWrapper {
517
562
 
518
563
  this.addNativeMaplibreFunctionsAndProps = () => {
519
564
  // add MapLibre-gl functions
520
- Object.getOwnPropertyNames(Object.getPrototypeOf(this.map)).forEach(
521
- (item) => {
522
- if (typeof this[item] === "undefined") {
523
- this[item] = (...props: any[]) => self.map[item](...props);
524
- }
565
+ Object.getOwnPropertyNames(Object.getPrototypeOf(this.map)).forEach((item) => {
566
+ if (typeof this[item] === 'undefined') {
567
+ this[item] = (...props: any[]) => self.map[item](...props);
525
568
  }
526
- );
569
+ });
527
570
 
528
571
  // add MapLibre-gl properties
529
572
  Object.keys(this.map).forEach((item) => {
530
- if (typeof this[item] === "undefined") {
573
+ if (typeof this[item] === 'undefined') {
531
574
  this[item] = self.map[item];
532
575
  }
533
576
  });
534
577
  };
535
578
 
536
579
  // add functions that are missing on the MapLibre instances prototype
537
- let missingFunctions = [
538
- "getZoom",
539
- "setZoom",
540
- "getCenter",
541
- "setCenter",
542
- "getBearing",
543
- "setBearing",
544
- "getPitch",
545
- "setPitch",
546
- "jumpTo",
547
- "flyTo",
548
- "panTo",
549
- "panBy",
550
- "panBy",
551
- "zoomTo",
552
- "zoomIn",
553
- "zoomOut",
554
- "getPadding",
555
- "setPadding",
556
- "rotateTo",
557
- "resetNorth",
558
- "resetNorthPitch",
559
- "snapToNorth",
560
- "cameraForBounds",
561
- "fitBounds",
562
- "fitScreenCoordinates",
563
- "getFreeCameraOptions",
564
- "setFreeCameraOptions",
565
- "easeTo",
566
- "stop",
580
+ const missingFunctions = [
581
+ 'getZoom',
582
+ 'setZoom',
583
+ 'getCenter',
584
+ 'setCenter',
585
+ 'getBearing',
586
+ 'setBearing',
587
+ 'getPitch',
588
+ 'setPitch',
589
+ 'jumpTo',
590
+ 'flyTo',
591
+ 'panTo',
592
+ 'panBy',
593
+ 'panBy',
594
+ 'zoomTo',
595
+ 'zoomIn',
596
+ 'zoomOut',
597
+ 'getPadding',
598
+ 'setPadding',
599
+ 'rotateTo',
600
+ 'resetNorth',
601
+ 'resetNorthPitch',
602
+ 'snapToNorth',
603
+ 'cameraForBounds',
604
+ 'fitBounds',
605
+ 'fitScreenCoordinates',
606
+ 'getFreeCameraOptions',
607
+ 'setFreeCameraOptions',
608
+ 'easeTo',
609
+ 'stop',
567
610
  ];
568
611
  missingFunctions.forEach((item) => {
569
612
  this[item] = (...props: any[]) => {
570
- if (typeof self.map[item] === "function") {
613
+ if (typeof self.map[item] === 'function') {
571
614
  return self.map[item].call(self.map, ...props);
572
615
  }
573
616
  return undefined;
@@ -575,24 +618,24 @@ class MapLibreGlWrapper {
575
618
  });
576
619
 
577
620
  // initialize the MapLibre-gl instance
578
- let initializeMapLibre = async () => {
621
+ const initializeMapLibre = async () => {
579
622
  // if mapOptions style URL is given and if it is not a mapbox URL fetch the json and initialize the mapbox object
580
623
  if (
581
- typeof props.mapOptions.style === "string" &&
582
- props.mapOptions.style.indexOf("mapbox://") === -1
624
+ typeof props.mapOptions.style === 'string' &&
625
+ props.mapOptions.style.indexOf('mapbox://') === -1
583
626
  ) {
584
627
  await fetch(props.mapOptions.style)
585
628
  .then((response) => {
586
629
  if (response.ok) {
587
630
  return response.json();
588
631
  } else {
589
- throw new Error("error loading map style.json");
632
+ throw new Error('error loading map style.json');
590
633
  }
591
634
  })
592
635
  .then((styleJson) => {
593
636
  styleJson.layers.forEach((item: any) => {
594
637
  self.baseLayers.push(item.id);
595
- if (!self.firstSymbolLayer && item.type === "symbol") {
638
+ if (!self.firstSymbolLayer && item.type === 'symbol') {
596
639
  self.firstSymbolLayer = item.id;
597
640
  }
598
641
  });
@@ -605,28 +648,27 @@ class MapLibreGlWrapper {
605
648
  }
606
649
 
607
650
  self.map = new Map(props.mapOptions) as MapType;
608
- //@ts-ignore
609
- window._map = self.map;
651
+ window['_map'] = self.map;
610
652
 
611
653
  self.addNativeMaplibreFunctionsAndProps();
612
654
  self.wrapper.refreshViewport();
613
- self.wrapper.fire("viewportchange");
655
+ self.wrapper.fire('viewportchange');
614
656
 
615
- self.map.on("load", () => {
657
+ self.map.on('load', () => {
616
658
  self.addNativeMaplibreFunctionsAndProps();
617
659
  });
618
660
 
619
- self.map.on("move", () => {
661
+ self.map.on('move', () => {
620
662
  self.wrapper.viewportState = self.wrapper.getViewport();
621
- self.wrapper.fire("viewportchange");
663
+ self.wrapper.fire('viewportchange');
622
664
  });
623
- self.map.on("idle", () => {
665
+ self.map.on('idle', () => {
624
666
  self.wrapper.refreshLayerState();
625
667
  });
626
- self.map.on("data", () => {
668
+ self.map.on('data', () => {
627
669
  self.wrapper.refreshLayerState();
628
670
  });
629
- if (typeof props.onReady === "function") {
671
+ if (typeof props.onReady === 'function') {
630
672
  props.onReady(self.map, self);
631
673
  }
632
674
  };