@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
@@ -23,30 +23,30 @@
23
23
  <div class='clearfix'>
24
24
 
25
25
  <div class='fl pad1y space-right2'>
26
- <span class="strong">56% </span>
26
+ <span class="strong">72% </span>
27
27
  <span class="quiet">Statements</span>
28
- <span class='fraction'>28/50</span>
28
+ <span class='fraction'>36/50</span>
29
29
  </div>
30
30
 
31
31
 
32
32
  <div class='fl pad1y space-right2'>
33
- <span class="strong">30.76% </span>
33
+ <span class="strong">42.3% </span>
34
34
  <span class="quiet">Branches</span>
35
- <span class='fraction'>8/26</span>
35
+ <span class='fraction'>11/26</span>
36
36
  </div>
37
37
 
38
38
 
39
39
  <div class='fl pad1y space-right2'>
40
- <span class="strong">57.14% </span>
40
+ <span class="strong">71.42% </span>
41
41
  <span class="quiet">Functions</span>
42
- <span class='fraction'>4/7</span>
42
+ <span class='fraction'>5/7</span>
43
43
  </div>
44
44
 
45
45
 
46
46
  <div class='fl pad1y space-right2'>
47
- <span class="strong">56.25% </span>
47
+ <span class="strong">72.91% </span>
48
48
  <span class="quiet">Lines</span>
49
- <span class='fraction'>27/48</span>
49
+ <span class='fraction'>35/48</span>
50
50
  </div>
51
51
 
52
52
 
@@ -292,18 +292,18 @@
292
292
  <span class="cline-any cline-neutral">&nbsp;</span>
293
293
  <span class="cline-any cline-neutral">&nbsp;</span>
294
294
  <span class="cline-any cline-neutral">&nbsp;</span>
295
- <span class="cline-any cline-yes">211x</span>
295
+ <span class="cline-any cline-yes">371x</span>
296
296
  <span class="cline-any cline-neutral">&nbsp;</span>
297
- <span class="cline-any cline-yes">211x</span>
298
- <span class="cline-any cline-yes">211x</span>
297
+ <span class="cline-any cline-yes">371x</span>
298
+ <span class="cline-any cline-yes">371x</span>
299
299
  <span class="cline-any cline-neutral">&nbsp;</span>
300
- <span class="cline-any cline-yes">211x</span>
301
- <span class="cline-any cline-yes">211x</span>
300
+ <span class="cline-any cline-yes">371x</span>
301
+ <span class="cline-any cline-yes">371x</span>
302
302
  <span class="cline-any cline-neutral">&nbsp;</span>
303
- <span class="cline-any cline-yes">211x</span>
304
- <span class="cline-any cline-yes">211x</span>
303
+ <span class="cline-any cline-yes">371x</span>
304
+ <span class="cline-any cline-yes">371x</span>
305
305
  <span class="cline-any cline-neutral">&nbsp;</span>
306
- <span class="cline-any cline-yes">211x</span>
306
+ <span class="cline-any cline-yes">371x</span>
307
307
  <span class="cline-any cline-neutral">&nbsp;</span>
308
308
  <span class="cline-any cline-neutral">&nbsp;</span>
309
309
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -311,7 +311,7 @@
311
311
  <span class="cline-any cline-neutral">&nbsp;</span>
312
312
  <span class="cline-any cline-neutral">&nbsp;</span>
313
313
  <span class="cline-any cline-neutral">&nbsp;</span>
314
- <span class="cline-any cline-yes">211x</span>
314
+ <span class="cline-any cline-yes">371x</span>
315
315
  <span class="cline-any cline-neutral">&nbsp;</span>
316
316
  <span class="cline-any cline-no">&nbsp;</span>
317
317
  <span class="cline-any cline-no">&nbsp;</span>
@@ -330,43 +330,43 @@
330
330
  <span class="cline-any cline-neutral">&nbsp;</span>
331
331
  <span class="cline-any cline-neutral">&nbsp;</span>
332
332
  <span class="cline-any cline-neutral">&nbsp;</span>
333
- <span class="cline-any cline-yes">211x</span>
334
- <span class="cline-any cline-no">&nbsp;</span>
333
+ <span class="cline-any cline-yes">371x</span>
334
+ <span class="cline-any cline-yes">6x</span>
335
335
  <span class="cline-any cline-neutral">&nbsp;</span>
336
- <span class="cline-any cline-no">&nbsp;</span>
337
- <span class="cline-any cline-no">&nbsp;</span>
338
- <span class="cline-any cline-no">&nbsp;</span>
339
- <span class="cline-any cline-no">&nbsp;</span>
340
- <span class="cline-any cline-no">&nbsp;</span>
336
+ <span class="cline-any cline-yes">6x</span>
337
+ <span class="cline-any cline-yes">6x</span>
338
+ <span class="cline-any cline-yes">6x</span>
339
+ <span class="cline-any cline-yes">6x</span>
340
+ <span class="cline-any cline-yes">6x</span>
341
341
  <span class="cline-any cline-neutral">&nbsp;</span>
342
342
  <span class="cline-any cline-neutral">&nbsp;</span>
343
343
  <span class="cline-any cline-neutral">&nbsp;</span>
344
- <span class="cline-any cline-yes">211x</span>
345
- <span class="cline-any cline-yes">57x</span>
344
+ <span class="cline-any cline-yes">371x</span>
345
+ <span class="cline-any cline-yes">94x</span>
346
346
  <span class="cline-any cline-neutral">&nbsp;</span>
347
- <span class="cline-any cline-yes">57x</span>
347
+ <span class="cline-any cline-yes">94x</span>
348
348
  <span class="cline-any cline-neutral">&nbsp;</span>
349
- <span class="cline-any cline-yes">26x</span>
350
- <span class="cline-any cline-yes">26x</span>
351
- <span class="cline-any cline-yes">26x</span>
349
+ <span class="cline-any cline-yes">44x</span>
350
+ <span class="cline-any cline-yes">44x</span>
351
+ <span class="cline-any cline-yes">44x</span>
352
352
  <span class="cline-any cline-neutral">&nbsp;</span>
353
- <span class="cline-any cline-yes">26x</span>
353
+ <span class="cline-any cline-yes">44x</span>
354
354
  <span class="cline-any cline-neutral">&nbsp;</span>
355
355
  <span class="cline-any cline-neutral">&nbsp;</span>
356
356
  <span class="cline-any cline-neutral">&nbsp;</span>
357
- <span class="cline-any cline-yes">211x</span>
358
- <span class="cline-any cline-yes">211x</span>
357
+ <span class="cline-any cline-yes">371x</span>
358
+ <span class="cline-any cline-yes">368x</span>
359
359
  <span class="cline-any cline-neutral">&nbsp;</span>
360
360
  <span class="cline-any cline-neutral">&nbsp;</span>
361
- <span class="cline-any cline-yes">57x</span>
362
- <span class="cline-any cline-yes">57x</span>
361
+ <span class="cline-any cline-yes">94x</span>
362
+ <span class="cline-any cline-yes">94x</span>
363
363
  <span class="cline-any cline-neutral">&nbsp;</span>
364
- <span class="cline-any cline-yes">57x</span>
364
+ <span class="cline-any cline-yes">94x</span>
365
365
  <span class="cline-any cline-no">&nbsp;</span>
366
366
  <span class="cline-any cline-no">&nbsp;</span>
367
367
  <span class="cline-any cline-neutral">&nbsp;</span>
368
368
  <span class="cline-any cline-neutral">&nbsp;</span>
369
- <span class="cline-any cline-yes">57x</span>
369
+ <span class="cline-any cline-yes">94x</span>
370
370
  <span class="cline-any cline-no">&nbsp;</span>
371
371
  <span class="cline-any cline-neutral">&nbsp;</span>
372
372
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -382,10 +382,10 @@
382
382
  <span class="cline-any cline-neutral">&nbsp;</span>
383
383
  <span class="cline-any cline-neutral">&nbsp;</span>
384
384
  <span class="cline-any cline-neutral">&nbsp;</span>
385
- <span class="cline-any cline-yes">57x</span>
386
- <span class="cline-any cline-no">&nbsp;</span>
385
+ <span class="cline-any cline-yes">94x</span>
386
+ <span class="cline-any cline-yes">6x</span>
387
387
  <span class="cline-any cline-neutral">&nbsp;</span>
388
- <span class="cline-any cline-no">&nbsp;</span>
388
+ <span class="cline-any cline-yes">6x</span>
389
389
  <span class="cline-any cline-neutral">&nbsp;</span>
390
390
  <span class="cline-any cline-neutral">&nbsp;</span>
391
391
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -397,13 +397,13 @@
397
397
  <span class="cline-any cline-neutral">&nbsp;</span>
398
398
  <span class="cline-any cline-neutral">&nbsp;</span>
399
399
  <span class="cline-any cline-neutral">&nbsp;</span>
400
- <span class="cline-any cline-yes">211x</span>
400
+ <span class="cline-any cline-yes">371x</span>
401
401
  <span class="cline-any cline-neutral">&nbsp;</span>
402
402
  <span class="cline-any cline-neutral">&nbsp;</span>
403
403
  <span class="cline-any cline-neutral">&nbsp;</span>
404
404
  <span class="cline-any cline-neutral">&nbsp;</span>
405
405
  <span class="cline-any cline-neutral">&nbsp;</span>
406
- <span class="cline-any cline-yes">15x</span>
406
+ <span class="cline-any cline-yes">16x</span>
407
407
  <span class="cline-any cline-neutral">&nbsp;</span>
408
408
  <span class="cline-any cline-neutral">&nbsp;</span>
409
409
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -415,7 +415,7 @@
415
415
  <span class="cline-any cline-neutral">&nbsp;</span>
416
416
  <span class="cline-any cline-neutral">&nbsp;</span>
417
417
  <span class="cline-any cline-neutral">&nbsp;</span>
418
- <span class="cline-any cline-yes">15x</span>
418
+ <span class="cline-any cline-yes">16x</span>
419
419
  <span class="cline-any cline-neutral">&nbsp;</span>
420
420
  <span class="cline-any cline-neutral">&nbsp;</span>
421
421
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -519,14 +519,14 @@ function useMapState(props: {
519
519
  [props.filter]
520
520
  );
521
521
  &nbsp;
522
- const refreshLayerState = useCallback(<span class="fstat-no" title="function not covered" >()</span> =&gt; {
523
- <span class="cstat-no" title="statement not covered" > if (!mapRef.current) <span class="cstat-no" title="statement not covered" >return;</span></span>
522
+ const refreshLayerState = useCallback(() =&gt; {
523
+ <span class="missing-if-branch" title="if path not taken" >I</span>if (!mapRef.current) <span class="cstat-no" title="statement not covered" >return;</span>
524
524
  &nbsp;
525
- let _layerState = <span class="cstat-no" title="statement not covered" >mapRef.current.wrapper.layerState.filter(layerIdFilter);</span>
526
- let _layerStateString = <span class="cstat-no" title="statement not covered" >JSON.stringify(_layerState);</span>
527
- <span class="cstat-no" title="statement not covered" > if (layersRef.current !== _layerStateString) {</span>
528
- <span class="cstat-no" title="statement not covered" > layersRef.current = _layerStateString;</span>
529
- <span class="cstat-no" title="statement not covered" > setLayers(_layerState);</span>
525
+ let _layerState = mapRef.current.wrapper.layerState.filter(layerIdFilter);
526
+ let _layerStateString = JSON.stringify(_layerState);
527
+ <span class="missing-if-branch" title="else path not taken" >E</span>if (layersRef.current !== _layerStateString) {
528
+ layersRef.current = _layerStateString;
529
+ setLayers(_layerState);
530
530
  }
531
531
  }, [layerIdFilter]);
532
532
  &nbsp;
@@ -571,10 +571,10 @@ function useMapState(props: {
571
571
  }
572
572
  &nbsp;
573
573
  // register layerchange event handler
574
- <span class="missing-if-branch" title="if path not taken" >I</span>if (props?.watch?.layers) {
575
- <span class="cstat-no" title="statement not covered" > refreshLayerState();</span>
574
+ if (props?.watch?.layers) {
575
+ refreshLayerState();
576
576
  &nbsp;
577
- <span class="cstat-no" title="statement not covered" > mapRef.current.wrapper.on(</span>
577
+ mapRef.current.wrapper.on(
578
578
  "layerchange",
579
579
  refreshLayerState,
580
580
  {
@@ -637,7 +637,7 @@ export default useMapState;
637
637
  <div class='footer quiet pad2 space-top1 center small'>
638
638
  Code coverage generated by
639
639
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
640
- at 2022-12-16T12:30:49.297Z
640
+ at 2023-01-15T17:55:43.336Z
641
641
  </div>
642
642
  <script src="../../prettify.js"></script>
643
643
  <script>
@@ -23,30 +23,30 @@
23
23
  <div class='clearfix'>
24
24
 
25
25
  <div class='fl pad1y space-right2'>
26
- <span class="strong">0% </span>
26
+ <span class="strong">79.31% </span>
27
27
  <span class="quiet">Statements</span>
28
- <span class='fraction'>0/29</span>
28
+ <span class='fraction'>23/29</span>
29
29
  </div>
30
30
 
31
31
 
32
32
  <div class='fl pad1y space-right2'>
33
- <span class="strong">0% </span>
33
+ <span class="strong">55% </span>
34
34
  <span class="quiet">Branches</span>
35
- <span class='fraction'>0/20</span>
35
+ <span class='fraction'>11/20</span>
36
36
  </div>
37
37
 
38
38
 
39
39
  <div class='fl pad1y space-right2'>
40
- <span class="strong">0% </span>
40
+ <span class="strong">100% </span>
41
41
  <span class="quiet">Functions</span>
42
- <span class='fraction'>0/6</span>
42
+ <span class='fraction'>6/6</span>
43
43
  </div>
44
44
 
45
45
 
46
46
  <div class='fl pad1y space-right2'>
47
- <span class="strong">0% </span>
47
+ <span class="strong">80.76% </span>
48
48
  <span class="quiet">Lines</span>
49
- <span class='fraction'>0/26</span>
49
+ <span class='fraction'>21/26</span>
50
50
  </div>
51
51
 
52
52
 
@@ -61,7 +61,7 @@
61
61
  </div>
62
62
  </template>
63
63
  </div>
64
- <div class='status-line low'></div>
64
+ <div class='status-line medium'></div>
65
65
  <pre><table class="coverage">
66
66
  <tr><td class="line-count quiet"><a name='L1'></a><a href='#L1'>1</a>
67
67
  <a name='L2'></a><a href='#L2'>2</a>
@@ -166,38 +166,38 @@
166
166
  <span class="cline-any cline-neutral">&nbsp;</span>
167
167
  <span class="cline-any cline-neutral">&nbsp;</span>
168
168
  <span class="cline-any cline-neutral">&nbsp;</span>
169
- <span class="cline-any cline-no">&nbsp;</span>
169
+ <span class="cline-any cline-yes">40x</span>
170
170
  <span class="cline-any cline-neutral">&nbsp;</span>
171
171
  <span class="cline-any cline-neutral">&nbsp;</span>
172
172
  <span class="cline-any cline-neutral">&nbsp;</span>
173
- <span class="cline-any cline-no">&nbsp;</span>
174
- <span class="cline-any cline-no">&nbsp;</span>
175
- <span class="cline-any cline-no">&nbsp;</span>
173
+ <span class="cline-any cline-yes">40x</span>
174
+ <span class="cline-any cline-yes">40x</span>
175
+ <span class="cline-any cline-yes">40x</span>
176
176
  <span class="cline-any cline-neutral">&nbsp;</span>
177
177
  <span class="cline-any cline-neutral">&nbsp;</span>
178
178
  <span class="cline-any cline-neutral">&nbsp;</span>
179
- <span class="cline-any cline-no">&nbsp;</span>
180
- <span class="cline-any cline-no">&nbsp;</span>
181
- <span class="cline-any cline-no">&nbsp;</span>
179
+ <span class="cline-any cline-yes">40x</span>
180
+ <span class="cline-any cline-yes">10x</span>
181
+ <span class="cline-any cline-yes">10x</span>
182
182
  <span class="cline-any cline-neutral">&nbsp;</span>
183
- <span class="cline-any cline-no">&nbsp;</span>
183
+ <span class="cline-any cline-yes">10x</span>
184
184
  <span class="cline-any cline-no">&nbsp;</span>
185
185
  <span class="cline-any cline-neutral">&nbsp;</span>
186
186
  <span class="cline-any cline-neutral">&nbsp;</span>
187
- <span class="cline-any cline-no">&nbsp;</span>
187
+ <span class="cline-any cline-yes">10x</span>
188
188
  <span class="cline-any cline-neutral">&nbsp;</span>
189
189
  <span class="cline-any cline-neutral">&nbsp;</span>
190
190
  <span class="cline-any cline-neutral">&nbsp;</span>
191
- <span class="cline-any cline-no">&nbsp;</span>
191
+ <span class="cline-any cline-yes">10x</span>
192
192
  <span class="cline-any cline-neutral">&nbsp;</span>
193
193
  <span class="cline-any cline-neutral">&nbsp;</span>
194
- <span class="cline-any cline-no">&nbsp;</span>
195
- <span class="cline-any cline-no">&nbsp;</span>
196
- <span class="cline-any cline-no">&nbsp;</span>
194
+ <span class="cline-any cline-yes">40x</span>
195
+ <span class="cline-any cline-yes">40x</span>
196
+ <span class="cline-any cline-yes">10x</span>
197
197
  <span class="cline-any cline-neutral">&nbsp;</span>
198
198
  <span class="cline-any cline-neutral">&nbsp;</span>
199
- <span class="cline-any cline-no">&nbsp;</span>
200
- <span class="cline-any cline-no">&nbsp;</span>
199
+ <span class="cline-any cline-yes">40x</span>
200
+ <span class="cline-any cline-yes">16x</span>
201
201
  <span class="cline-any cline-neutral">&nbsp;</span>
202
202
  <span class="cline-any cline-neutral">&nbsp;</span>
203
203
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -207,11 +207,11 @@
207
207
  <span class="cline-any cline-neutral">&nbsp;</span>
208
208
  <span class="cline-any cline-neutral">&nbsp;</span>
209
209
  <span class="cline-any cline-neutral">&nbsp;</span>
210
- <span class="cline-any cline-no">&nbsp;</span>
211
- <span class="cline-any cline-no">&nbsp;</span>
212
- <span class="cline-any cline-no">&nbsp;</span>
213
- <span class="cline-any cline-no">&nbsp;</span>
214
- <span class="cline-any cline-no">&nbsp;</span>
210
+ <span class="cline-any cline-yes">40x</span>
211
+ <span class="cline-any cline-yes">20x</span>
212
+ <span class="cline-any cline-yes">15x</span>
213
+ <span class="cline-any cline-yes">15x</span>
214
+ <span class="cline-any cline-yes">5x</span>
215
215
  <span class="cline-any cline-no">&nbsp;</span>
216
216
  <span class="cline-any cline-no">&nbsp;</span>
217
217
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -222,7 +222,7 @@
222
222
  <span class="cline-any cline-neutral">&nbsp;</span>
223
223
  <span class="cline-any cline-neutral">&nbsp;</span>
224
224
  <span class="cline-any cline-neutral">&nbsp;</span>
225
- <span class="cline-any cline-no">&nbsp;</span>
225
+ <span class="cline-any cline-yes">40x</span>
226
226
  <span class="cline-any cline-neutral">&nbsp;</span>
227
227
  <span class="cline-any cline-neutral">&nbsp;</span>
228
228
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -234,11 +234,11 @@
234
234
  <span class="cline-any cline-neutral">&nbsp;</span></td><td class="text"><pre class="prettyprint lang-js">import { useEffect, useRef, useCallback, useState } from "react";
235
235
  import useMap, { useMapType } from "./useMap";
236
236
  import MapLibreGlWrapper from "../components/MapLibreMap/lib/MapLibreGlWrapper";
237
- import { SourceSpecification } from "maplibre-gl";
237
+ import { Source, SourceSpecification } from "maplibre-gl";
238
238
  &nbsp;
239
239
  type useSourceType = {
240
240
  map: MapLibreGlWrapper | undefined;
241
- source: SourceSpecification;
241
+ source: Source | undefined;
242
242
  componentId: string;
243
243
  mapHook: useMapType;
244
244
  };
@@ -249,39 +249,39 @@ interface useSourceProps {
249
249
  sourceId: string;
250
250
  }
251
251
  &nbsp;
252
- function <span class="fstat-no" title="function not covered" >useSource(</span>props: useSourceProps): useSourceType {
253
- const mapHook = <span class="cstat-no" title="statement not covered" >useMap({</span>
252
+ function useSource(props: useSourceProps): useSourceType {
253
+ const mapHook = useMap({
254
254
  mapId: props.mapId,
255
255
  });
256
256
  &nbsp;
257
- const initializedRef = <span class="cstat-no" title="statement not covered" >useRef&lt;boolean&gt;(false);</span>
258
- const [source, setSource] = <span class="cstat-no" title="statement not covered" >useState&lt;any&gt;();</span>
259
- const sourceId = <span class="cstat-no" title="statement not covered" >useRef(</span>
260
- props.sourceId || (props.idPrefix ? props.idPrefix : "Source-") + mapHook.componentId
257
+ const initializedRef = useRef&lt;boolean&gt;(false);
258
+ const [source, setSource] = useState&lt;Source&gt;();
259
+ const sourceId = useRef(
260
+ props.sourceId || <span class="branch-1 cbranch-no" title="branch not covered" >(props.idPrefix ? props.idPrefix : "Source-") + mapHook.componentId</span>
261
261
  );
262
262
  &nbsp;
263
- const createSource = <span class="cstat-no" title="statement not covered" >useCallback(<span class="fstat-no" title="function not covered" >()</span> =&gt; {</span>
264
- <span class="cstat-no" title="statement not covered" > if (!mapHook.map) <span class="cstat-no" title="statement not covered" >return;</span></span>
265
- <span class="cstat-no" title="statement not covered" > initializedRef.current = true;</span>
263
+ const createSource = useCallback(() =&gt; {
264
+ <span class="missing-if-branch" title="if path not taken" >I</span>if (!mapHook.map) <span class="cstat-no" title="statement not covered" >return;</span>
265
+ initializedRef.current = true;
266
266
  &nbsp;
267
- <span class="cstat-no" title="statement not covered" > if (mapHook.map.map.getSource(sourceId.current)) {</span>
267
+ <span class="missing-if-branch" title="if path not taken" >I</span>if (mapHook.map.map.getSource(sourceId.current)) {
268
268
  <span class="cstat-no" title="statement not covered" > mapHook.cleanup();</span>
269
269
  }
270
270
  &nbsp;
271
- <span class="cstat-no" title="statement not covered" > mapHook.map?.addSource(sourceId.current, {</span>
271
+ mapHook.map?.addSource(sourceId.current, {
272
272
  ...props.source,
273
- });
273
+ }, mapHook.componentId);
274
274
  &nbsp;
275
- <span class="cstat-no" title="statement not covered" > setSource(mapHook.map.map.getSource(sourceId.current));</span>
275
+ setSource(mapHook.map.map.getSource(sourceId.current));
276
276
  }, [props, mapHook.map]);
277
277
  &nbsp;
278
- <span class="cstat-no" title="statement not covered" > useEffect(<span class="fstat-no" title="function not covered" >()</span> =&gt; {</span>
279
- <span class="cstat-no" title="statement not covered" > if (!mapHook.map || initializedRef.current) <span class="cstat-no" title="statement not covered" >return;</span></span>
280
- <span class="cstat-no" title="statement not covered" > createSource();</span>
278
+ useEffect(() =&gt; {
279
+ if (!mapHook.map || initializedRef.current) return;
280
+ createSource();
281
281
  }, [mapHook.map, props, createSource]);
282
282
  &nbsp;
283
- <span class="cstat-no" title="statement not covered" > useEffect(<span class="fstat-no" title="function not covered" >()</span> =&gt; {</span>
284
- <span class="cstat-no" title="statement not covered" > if (!initializedRef.current || !mapHook.map?.map?.getSource(props.sourceId)) <span class="cstat-no" title="statement not covered" >return;</span></span>
283
+ useEffect(() =&gt; {
284
+ <span class="missing-if-branch" title="else path not taken" >E</span>if (!initializedRef.current || <span class="branch-1 cbranch-no" title="branch not covered" >!mapHook.map?.map?.getSource(props.sourceId))</span> return;
285
285
  &nbsp;
286
286
  // eslint-disable-next-line @typescript-eslint/ban-ts-comment
287
287
  //@ts-ignore setData only exists on GeoJsonSource
@@ -291,11 +291,11 @@ function <span class="fstat-no" title="function not covered" >useSource(</span>p
291
291
  }, [props.source?.data]);
292
292
  &nbsp;
293
293
  //cleanup
294
- <span class="cstat-no" title="statement not covered" > useEffect(<span class="fstat-no" title="function not covered" >()</span> =&gt; {</span>
295
- <span class="cstat-no" title="statement not covered" > return <span class="fstat-no" title="function not covered" >()</span> =&gt; {</span>
296
- <span class="cstat-no" title="statement not covered" > initializedRef.current = false;</span>
297
- <span class="cstat-no" title="statement not covered" > if (mapHook.map) {</span>
298
- <span class="cstat-no" title="statement not covered" > for (const [layerId, layer] of Object.entries(mapHook.map.map.style._layers)) {</span>
294
+ useEffect(() =&gt; {
295
+ return () =&gt; {
296
+ initializedRef.current = false;
297
+ if (mapHook.map) {
298
+ for (const [layerId, layer] of Object.entries(mapHook.map.map.style._layers)) {
299
299
  <span class="cstat-no" title="statement not covered" > if (layer.source === sourceId.current) {</span>
300
300
  <span class="cstat-no" title="statement not covered" > mapHook.map.map.removeLayer(layerId);</span>
301
301
  }
@@ -306,7 +306,7 @@ function <span class="fstat-no" title="function not covered" >useSource(</span>p
306
306
  };
307
307
  }, [mapHook.map]);
308
308
  &nbsp;
309
- <span class="cstat-no" title="statement not covered" > return {</span>
309
+ return {
310
310
  map: mapHook.map,
311
311
  source: source,
312
312
  componentId: mapHook.componentId,
@@ -322,7 +322,7 @@ export default useSource;
322
322
  <div class='footer quiet pad2 space-top1 center small'>
323
323
  Code coverage generated by
324
324
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
325
- at 2022-12-16T12:30:49.297Z
325
+ at 2023-01-15T17:55:43.336Z
326
326
  </div>
327
327
  <script src="../../prettify.js"></script>
328
328
  <script>
@@ -3,7 +3,7 @@
3
3
  <html lang="en">
4
4
 
5
5
  <head>
6
- <title>Code coverage report for src/hooks/useWms.js</title>
6
+ <title>Code coverage report for src/hooks/useWms.ts</title>
7
7
  <meta charset="utf-8" />
8
8
  <link rel="stylesheet" href="../../prettify.css" />
9
9
  <link rel="stylesheet" href="../../base.css" />
@@ -19,7 +19,7 @@
19
19
  <body>
20
20
  <div class='wrapper'>
21
21
  <div class='pad1'>
22
- <h1><a href="../../index.html">All files</a> / <a href="index.html">src/hooks</a> useWms.js</h1>
22
+ <h1><a href="../../index.html">All files</a> / <a href="index.html">src/hooks</a> useWms.ts</h1>
23
23
  <div class='clearfix'>
24
24
 
25
25
  <div class='fl pad1y space-right2'>
@@ -154,7 +154,33 @@
154
154
  <a name='L89'></a><a href='#L89'>89</a>
155
155
  <a name='L90'></a><a href='#L90'>90</a>
156
156
  <a name='L91'></a><a href='#L91'>91</a>
157
- <a name='L92'></a><a href='#L92'>92</a></td><td class="line-coverage quiet"><span class="cline-any cline-neutral">&nbsp;</span>
157
+ <a name='L92'></a><a href='#L92'>92</a>
158
+ <a name='L93'></a><a href='#L93'>93</a>
159
+ <a name='L94'></a><a href='#L94'>94</a>
160
+ <a name='L95'></a><a href='#L95'>95</a>
161
+ <a name='L96'></a><a href='#L96'>96</a>
162
+ <a name='L97'></a><a href='#L97'>97</a>
163
+ <a name='L98'></a><a href='#L98'>98</a>
164
+ <a name='L99'></a><a href='#L99'>99</a>
165
+ <a name='L100'></a><a href='#L100'>100</a>
166
+ <a name='L101'></a><a href='#L101'>101</a>
167
+ <a name='L102'></a><a href='#L102'>102</a>
168
+ <a name='L103'></a><a href='#L103'>103</a>
169
+ <a name='L104'></a><a href='#L104'>104</a>
170
+ <a name='L105'></a><a href='#L105'>105</a></td><td class="line-coverage quiet"><span class="cline-any cline-neutral">&nbsp;</span>
171
+ <span class="cline-any cline-neutral">&nbsp;</span>
172
+ <span class="cline-any cline-neutral">&nbsp;</span>
173
+ <span class="cline-any cline-neutral">&nbsp;</span>
174
+ <span class="cline-any cline-neutral">&nbsp;</span>
175
+ <span class="cline-any cline-neutral">&nbsp;</span>
176
+ <span class="cline-any cline-neutral">&nbsp;</span>
177
+ <span class="cline-any cline-neutral">&nbsp;</span>
178
+ <span class="cline-any cline-neutral">&nbsp;</span>
179
+ <span class="cline-any cline-neutral">&nbsp;</span>
180
+ <span class="cline-any cline-neutral">&nbsp;</span>
181
+ <span class="cline-any cline-neutral">&nbsp;</span>
182
+ <span class="cline-any cline-neutral">&nbsp;</span>
183
+ <span class="cline-any cline-neutral">&nbsp;</span>
158
184
  <span class="cline-any cline-neutral">&nbsp;</span>
159
185
  <span class="cline-any cline-neutral">&nbsp;</span>
160
186
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -246,15 +272,28 @@
246
272
  <span class="cline-any cline-neutral">&nbsp;</span>
247
273
  <span class="cline-any cline-neutral">&nbsp;</span>
248
274
  <span class="cline-any cline-neutral">&nbsp;</span></td><td class="text"><pre class="prettyprint lang-js">import { useState, useEffect } from "react";
249
- import WMSCapabilities from "wms-capabilities";
275
+ import WMSCapabilities, { WMSCapabilitiesJSON } from "wms-capabilities";
276
+ &nbsp;
277
+ export interface useWmsProps{
278
+ url?:string;
279
+ urlParameters?:{[key: string]: string};
280
+ }
281
+ &nbsp;
282
+ export interface useWmsReturnType{
283
+ capabilities:WMSCapabilitiesJSON | null | undefined;
284
+ getFeatureInfoUrl:string | undefined;
285
+ wmsUrl:string | undefined;
286
+ error:string | undefined;
287
+ setUrl:(value:string|undefined) =&gt; void;
288
+ }
250
289
  &nbsp;
251
- function <span class="fstat-no" title="function not covered" >useWms(</span>props) {
290
+ function <span class="fstat-no" title="function not covered" >useWms(</span>props:useWmsProps):useWmsReturnType {
252
291
  // Use a useRef hook to reference the layer object to be able to access it later inside useEffect hooks
253
- const [getFeatureInfoUrl, setGetFeatureInfoUrl] = <span class="cstat-no" title="statement not covered" >useState(undefined);</span>
292
+ const [getFeatureInfoUrl, setGetFeatureInfoUrl] = <span class="cstat-no" title="statement not covered" >useState&lt;string&gt;();</span>
254
293
  const [url, setUrl] = <span class="cstat-no" title="statement not covered" >useState(props.url);</span>
255
294
  const [wmsUrl, setWmsUrl] = <span class="cstat-no" title="statement not covered" >useState("");</span>
256
- const [capabilities, setCapabilities] = <span class="cstat-no" title="statement not covered" >useState(undefined);</span>
257
- const [error, setError] = <span class="cstat-no" title="statement not covered" >useState(undefined);</span>
295
+ const [capabilities, setCapabilities] = <span class="cstat-no" title="statement not covered" >useState&lt;WMSCapabilitiesJSON | null | undefined&gt;();</span>
296
+ const [error, setError] = <span class="cstat-no" title="statement not covered" >useState();</span>
258
297
  &nbsp;
259
298
  const clearState = <span class="cstat-no" title="statement not covered" ><span class="fstat-no" title="function not covered" >()</span> =&gt; {</span>
260
299
  <span class="cstat-no" title="statement not covered" > setGetFeatureInfoUrl(undefined);</span>
@@ -276,16 +315,16 @@ function <span class="fstat-no" title="function not covered" >useWms(</span>prop
276
315
  <span class="cstat-no" title="statement not covered" > _propsUrlParams = url.split("?");</span>
277
316
  <span class="cstat-no" title="statement not covered" > _wmsUrl = _propsUrlParams[0];</span>
278
317
  }
279
- let _urlParamsFromUrl = <span class="cstat-no" title="statement not covered" >new URLSearchParams(_propsUrlParams?.[1]);</span>
318
+ const _urlParamsFromUrl = <span class="cstat-no" title="statement not covered" >new URLSearchParams(_propsUrlParams?.[1]);</span>
280
319
  &nbsp;
281
- let urlParamsObj = <span class="cstat-no" title="statement not covered" >{</span>
320
+ const urlParamsObj = <span class="cstat-no" title="statement not covered" >{</span>
282
321
  ...Object.fromEntries(_urlParamsFromUrl),
283
322
  ...props.urlParameters,
284
323
  };
285
324
  // create URLSearchParams object to assemble the URL Parameters
286
- let urlParams = <span class="cstat-no" title="statement not covered" >new URLSearchParams(urlParamsObj);</span>
325
+ const urlParams = <span class="cstat-no" title="statement not covered" >new URLSearchParams(urlParamsObj);</span>
287
326
  &nbsp;
288
- let urlParamsStr =
327
+ const urlParamsStr =
289
328
  <span class="cstat-no" title="statement not covered" > decodeURIComponent(urlParams.toString()) + "".replace(/%2F/g, "/").replace(/%3A/g, ":");</span>
290
329
  &nbsp;
291
330
  <span class="cstat-no" title="statement not covered" > fetch(_wmsUrl + "?" + urlParamsStr)</span>
@@ -296,8 +335,8 @@ function <span class="fstat-no" title="function not covered" >useWms(</span>prop
296
335
  <span class="cstat-no" title="statement not covered" > return res.text();</span>
297
336
  }
298
337
  })
299
- .then(<span class="fstat-no" title="function not covered" >(d</span>ata) =&gt; {
300
- <span class="cstat-no" title="statement not covered" > setCapabilities(new WMSCapabilities(data).toJSON());</span>
338
+ .then(<span class="fstat-no" title="function not covered" >(d</span>ata:string) =&gt; {
339
+ <span class="cstat-no" title="statement not covered" > setCapabilities(new WMSCapabilities(data, window.DOMParser).toJSON());</span>
301
340
  })
302
341
  .catch(<span class="fstat-no" title="function not covered" >(e</span>rror) =&gt; {
303
342
  //reset local state
@@ -343,7 +382,7 @@ export default useWms;
343
382
  <div class='footer quiet pad2 space-top1 center small'>
344
383
  Code coverage generated by
345
384
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
346
- at 2022-12-16T12:30:49.297Z
385
+ at 2023-01-15T17:55:43.336Z
347
386
  </div>
348
387
  <script src="../../prettify.js"></script>
349
388
  <script>
@@ -101,7 +101,7 @@
101
101
  <div class='footer quiet pad2 space-top1 center small'>
102
102
  Code coverage generated by
103
103
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
104
- at 2022-12-16T12:30:49.297Z
104
+ at 2023-01-15T17:55:43.336Z
105
105
  </div>
106
106
  <script src="../prettify.js"></script>
107
107
  <script>