@mapcomponents/react-maplibre 0.1.63 → 0.1.65

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 (316) 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 +37 -2
  5. package/coverage/clover.xml +688 -1032
  6. package/coverage/coverage-final.json +25 -21
  7. package/coverage/lcov-report/index.html +127 -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 +2 -2
  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 +2 -2
  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/useLayerFilter/index.html +116 -0
  99. package/coverage/lcov-report/src/hooks/useLayerFilter/useLayerFilter.ts.html +184 -0
  100. package/coverage/lcov-report/src/hooks/useLayerHoverPopup/index.html +116 -0
  101. package/coverage/lcov-report/src/hooks/useLayerHoverPopup/useLayerHoverPopup.tsx.html +331 -0
  102. package/coverage/lcov-report/src/hooks/useMap.ts.html +47 -47
  103. package/coverage/lcov-report/src/hooks/useMapState.ts.html +54 -54
  104. package/coverage/lcov-report/src/hooks/useSource.ts.html +57 -57
  105. package/coverage/lcov-report/src/hooks/{useWms.js.html → useWms.ts.html} +54 -15
  106. package/coverage/lcov-report/src/index.html +1 -1
  107. package/coverage/lcov-report/src/index.ts.html +6 -6
  108. package/coverage/lcov.info +1320 -1960
  109. package/dist/components/MapLibreMap/lib/MapLibreGlWrapper.d.ts +51 -25
  110. package/dist/components/MlCenterPosition/MlCenterPosition.d.ts +3 -2
  111. package/dist/components/MlCenterPosition/MlCenterPosition.stories.d.ts +35 -16
  112. package/dist/components/MlComponentTemplate/MlComponentTemplate.d.ts +1 -1
  113. package/dist/components/MlComponentTemplate/MlComponentTemplate.stories.d.ts +12 -9
  114. package/dist/components/MlCreatePdfButton/MlCreatePdfButton.d.ts +1 -1
  115. package/dist/components/MlCreatePdfButton/MlCreatePdfButton.stories.d.ts +12 -9
  116. package/dist/components/MlGPXViewer/util/GeoJsonContext.d.ts +1 -1
  117. package/dist/components/MlGeoJsonLayer/MlGeoJsonLayer.d.ts +22 -11
  118. package/dist/components/MlGeoJsonLayer/MlGeoJsonLayer.stories.d.ts +4 -95
  119. package/dist/components/MlGeoJsonLayer/story_utils/MlGeojsonLayerCircleStyler.d.ts +3 -0
  120. package/dist/components/MlGeoJsonLayer/story_utils/MlGeojsonLayerHeatMapStyler.d.ts +3 -0
  121. package/dist/components/MlGeojsonLayerWithSource/MlGeojsonLayerWithSource.d.ts +1 -1
  122. package/dist/components/MlGeojsonLayerWithSource/MlGeojsonLayerWithSource.stories.d.ts +12 -9
  123. package/dist/components/MlGpxViewer/MlGpxViewer.d.ts +30 -0
  124. package/dist/components/MlGpxViewer/MlGpxViewer.stories.d.ts +17 -0
  125. package/dist/components/MlGpxViewer/MlGpxViewer.test.d.ts +1 -0
  126. package/dist/components/MlGpxViewer/util/GeoJsonContext.d.ts +10 -0
  127. package/dist/components/MlGpxViewer/util/GeoJsonProvider.d.ts +4 -0
  128. package/dist/components/MlGpxViewer/util/MetadataDrawer.d.ts +7 -0
  129. package/dist/components/MlGpxViewer/util/MlGpxDemoLoader.d.ts +10 -0
  130. package/dist/components/MlGpxViewer/util/MlGpxViewerInstructions.d.ts +3 -0
  131. package/dist/components/MlImageMarkerLayer/MlImageMarkerLayer.d.ts +11 -2
  132. package/dist/components/MlImageMarkerLayer/MlImageMarkerLayer.stories.d.ts +7 -9
  133. package/dist/components/MlLayerMagnify/MlLayerMagnify.d.ts +8 -2
  134. package/dist/components/MlLayerMagnify/MlLayerMagnify.stories.d.ts +13 -9
  135. package/dist/components/MlLayerSwipe/MlLayerSwipe.d.ts +13 -3
  136. package/dist/components/MlLayerSwipe/MlLayerSwipe.stories.d.ts +12 -10
  137. package/dist/components/MlSketchTool/MlSketchTool.d.ts +1 -1
  138. package/dist/components/MlSketchTool/MlSketchTool.stories.d.ts +13 -9
  139. package/dist/components/MlSpatialElevationProfile/MlSpatialElevationProfile.d.ts +33 -14
  140. package/dist/components/MlSpatialElevationProfile/MlSpatialElevationProfile.stories.d.ts +18 -15
  141. package/dist/components/MlSpatialElevationProfile/util/getElevationData.d.ts +14 -0
  142. package/dist/components/MlThreeJsLayer/MlThreeJsLayer.stories.d.ts +20 -15
  143. package/dist/components/MlTransitionGeoJsonLayer/MlTransitionGeoJsonLayer.d.ts +3 -67
  144. package/dist/components/MlWmsFeatureInfoPopup/MlWmsFeatureInfoPopup.stories.d.ts +20 -12
  145. package/dist/components/MlWmsLayer/MlWmsLayer.d.ts +7 -4
  146. package/dist/components/MlWmsLoader/MlWmsLoader.d.ts +17 -10
  147. package/dist/components/MlWmsLoader/MlWmsLoader.stories.d.ts +23 -12
  148. package/dist/components/MlWmsLoader/utils/MlWmsLoaderInstructions.d.ts +3 -0
  149. package/dist/components/MlWmsLoader/utils/WMSLinks.d.ts +6 -0
  150. package/dist/decorators/ThemeWrapper.d.ts +3 -1
  151. package/dist/hooks/useGpx/lib/gpxConverter.d.ts +11 -0
  152. package/dist/hooks/useGpx/useGpx.d.ts +26 -0
  153. package/dist/hooks/useGpx/useGpx.stories.d.ts +10 -0
  154. package/dist/hooks/useLayer.d.ts +13 -7
  155. package/dist/hooks/useLayerFilter/useLayerFilter.d.ts +8 -0
  156. package/dist/hooks/useLayerFilter/useLayerFilter.stories.d.ts +9 -0
  157. package/dist/hooks/useLayerHoverPopup/useLayerHoverPopup.d.ts +23 -0
  158. package/dist/hooks/useLayerHoverPopup/useLayerHoverPopup.stories.d.ts +10 -0
  159. package/dist/hooks/useMap.d.ts +1 -1
  160. package/dist/hooks/useMap.test.d.ts +1 -0
  161. package/dist/hooks/useSource.d.ts +2 -2
  162. package/dist/hooks/useWms.d.ts +24 -16
  163. package/dist/index.d.ts +5 -5
  164. package/dist/index.esm.js +9310 -14006
  165. package/dist/index.esm.js.map +1 -1
  166. package/dist/setupTests.d.ts +6 -5
  167. package/dist/ui_components/Dropzone.d.ts +5 -0
  168. package/dist/ui_components/ImageLoader.d.ts +8 -1
  169. package/dist/ui_components/LoadingOverlayContext.d.ts +11 -11
  170. package/dist/ui_components/Sidebar.d.ts +7 -6
  171. package/dist/ui_components/Tooltip.d.ts +1 -1
  172. package/dist/ui_components/TopToolbar.d.ts +4 -3
  173. package/dist/ui_components/UploadButton.d.ts +6 -0
  174. package/dist/util/BubbleForInstructions.d.ts +2 -0
  175. package/dist/util/Instructions.d.ts +13 -0
  176. package/package.json +195 -191
  177. package/{src/components/MlImageMarkerLayer → public}/assets/wg-marker.png +0 -0
  178. package/scripts/build-catalogue-meta.js +35 -11
  179. package/src/components/MapLibreMap/lib/MapLibreGlWrapper.ts +230 -188
  180. package/src/components/MlCenterPosition/MlCenterPosition.meta_.json +1 -2
  181. package/src/components/MlCenterPosition/MlCenterPosition.stories.tsx +20 -0
  182. package/src/components/MlCenterPosition/MlCenterPosition.tsx +4 -4
  183. package/src/components/MlComponentTemplate/MlComponentTemplate.meta_.json +1 -2
  184. package/src/components/MlComponentTemplate/{MlComponentTemplate.stories.js → MlComponentTemplate.stories.tsx} +2 -2
  185. package/src/components/MlComponentTemplate/MlComponentTemplate.tsx +1 -1
  186. package/src/components/MlCreatePdfButton/MlCreatePdfButton.meta_.json +1 -2
  187. package/src/components/MlCreatePdfButton/{MlCreatePdfButton.stories.js → MlCreatePdfButton.stories.tsx} +1 -1
  188. package/src/components/MlCreatePdfButton/MlCreatePdfButton.tsx +1 -1
  189. package/src/components/MlCreatePdfForm/MlCreatePdfForm.meta.json +1 -2
  190. package/src/components/MlCreatePdfForm/lib/PdfForm.tsx +25 -2
  191. package/src/components/MlFeatureEditor/MlFeatureEditor.meta.json +1 -2
  192. package/src/components/MlFeatureEditor/MlFeatureEditor.tsx +0 -1
  193. package/src/components/MlFillExtrusionLayer/MlFillExtrusionLayer.meta.json +1 -2
  194. package/src/components/MlFollowGps/MlFollowGps.meta.json +1 -2
  195. package/src/components/MlGeoJsonLayer/MlGeoJsonLayer.meta.json +1 -2
  196. package/src/components/MlGeoJsonLayer/MlGeoJsonLayer.stories.tsx +89 -0
  197. package/src/components/MlGeoJsonLayer/MlGeoJsonLayer.tsx +24 -17
  198. package/src/components/MlGeoJsonLayer/assets/earthquake.json +109937 -0
  199. package/src/components/MlGeoJsonLayer/assets/wg_locations.json +65 -0
  200. package/src/components/MlGeoJsonLayer/story_utils/MlGeojsonLayerCircleStyler.tsx +9 -0
  201. package/src/components/MlGeoJsonLayer/story_utils/MlGeojsonLayerHeatMapStyler.tsx +10 -0
  202. package/src/components/MlGeojsonLayerWithSource/MlGeojsonLayerWithSource.meta_.json +1 -2
  203. package/src/components/MlGeojsonLayerWithSource/{MlGeojsonLayerWithSource.stories.js → MlGeojsonLayerWithSource.stories.tsx} +0 -0
  204. package/src/components/MlGeojsonLayerWithSource/MlGeojsonLayerWithSource.tsx +1 -1
  205. package/src/components/{MlGPXViewer/MlGPXViewer.doc.de.md → MlGpxViewer/MlGpxViewer.doc.de.md} +0 -0
  206. package/src/components/{MlGPXViewer/MlGPXViewer.doc.en.md → MlGpxViewer/MlGpxViewer.doc.en.md} +0 -0
  207. package/src/components/{MlGPXViewer/MlGPXViewer.meta.json → MlGpxViewer/MlGpxViewer.meta.json} +2 -3
  208. package/src/components/MlGpxViewer/MlGpxViewer.stories.tsx +109 -0
  209. package/src/components/MlGpxViewer/MlGpxViewer.test.js +53 -0
  210. package/src/components/MlGpxViewer/MlGpxViewer.tsx +103 -0
  211. package/src/components/{MlGPXViewer → MlGpxViewer}/util/GeoJsonContext.ts +0 -0
  212. package/src/components/{MlGPXViewer → MlGpxViewer}/util/GeoJsonProvider.tsx +0 -0
  213. package/src/components/MlGpxViewer/util/MetadataDrawer.tsx +38 -0
  214. package/src/components/MlGpxViewer/util/MlGpxDemoLoader.tsx +128 -0
  215. package/src/components/MlGpxViewer/util/MlGpxViewerInstructions.tsx +71 -0
  216. package/src/components/MlImageMarkerLayer/MlImageMarkerLayer.meta_.json +1 -2
  217. package/src/components/MlImageMarkerLayer/MlImageMarkerLayer.stories.tsx +41 -0
  218. package/src/components/MlImageMarkerLayer/MlImageMarkerLayer.test.js +27 -8
  219. package/src/components/MlImageMarkerLayer/MlImageMarkerLayer.tsx +41 -115
  220. package/src/components/MlLayer/MlLayer.meta_.json +1 -2
  221. package/src/components/MlLayerMagnify/MlLayerMagnify.meta.json +1 -2
  222. package/src/components/MlLayerMagnify/MlLayerMagnify.stories.tsx +44 -0
  223. package/src/components/MlLayerMagnify/{MlLayerMagnify.test.js → MlLayerMagnify.test.tsx} +15 -18
  224. package/src/components/MlLayerMagnify/MlLayerMagnify.tsx +55 -61
  225. package/src/components/MlLayerSwipe/MlLayerSwipe.meta.json +1 -2
  226. package/src/components/MlLayerSwipe/{MlLayerSwipe.stories.js → MlLayerSwipe.stories.tsx} +9 -11
  227. package/src/components/MlLayerSwipe/MlLayerSwipe.tsx +47 -48
  228. package/src/components/MlLayerSwitcher/MlLayerSwitcher.meta_.json +1 -2
  229. package/src/components/MlLayerSwitcher/components/LayerBox.js +22 -19
  230. package/src/components/MlMarker/MlMarker.meta_.json +1 -2
  231. package/src/components/MlMeasureTool/MlMeasureTool.meta.json +1 -2
  232. package/src/components/MlNavigationCompass/MlNavigationCompass.meta.json +1 -2
  233. package/src/components/MlNavigationTools/MlNavigationTools.meta.json +1 -2
  234. package/src/components/MlScaleReference/MlScaleReference.meta.json +1 -2
  235. package/src/components/MlShareMapState/MlShareMapState.meta_.json +1 -2
  236. package/src/components/MlSketchTool/MlSketchTool.meta.json +1 -2
  237. package/src/components/MlSketchTool/{MlSketchTool.stories.js → MlSketchTool.stories.tsx} +1 -1
  238. package/src/components/MlSketchTool/MlSketchTool.tsx +1 -1
  239. package/src/components/MlSpatialElevationProfile/MlSpatialElevationProfile.meta.json +1 -2
  240. package/src/components/MlSpatialElevationProfile/MlSpatialElevationProfile.stories.tsx +121 -0
  241. package/src/components/MlSpatialElevationProfile/MlSpatialElevationProfile.test.js +30 -1
  242. package/src/components/MlSpatialElevationProfile/MlSpatialElevationProfile.tsx +143 -0
  243. package/src/components/MlSpatialElevationProfile/util/getElevationData.tsx +103 -0
  244. package/src/components/MlThreeJsLayer/MlThreeJsLayer.meta.json +1 -2
  245. package/src/components/MlThreeJsLayer/MlThreeJsLayer.stories.tsx +37 -0
  246. package/src/components/MlTransitionGeoJsonLayer/MlTransitionGeoJsonLayer.meta.json +1 -2
  247. package/src/components/MlTransitionGeoJsonLayer/MlTransitionGeoJsonLayer.stories.js +2 -3
  248. package/src/components/MlTransitionGeoJsonLayer/MlTransitionGeoJsonLayer.tsx +17 -79
  249. package/src/components/MlUseMapDebugger/MlUseMapDebugger.meta_.json +1 -2
  250. package/src/components/MlVectorTileLayer/MlVectorTileLayer.meta.json +1 -2
  251. package/src/components/MlVectorTileLayer/MlVectorTileLayer.tsx +3 -2
  252. package/src/components/MlWmsFeatureInfoPopup/MlWmsFeatureInfoPopup.meta_.json +1 -2
  253. package/src/components/MlWmsFeatureInfoPopup/MlWmsFeatureInfoPopup.stories.tsx +22 -0
  254. package/src/components/MlWmsLayer/MlWmsLayer.tsx +59 -41
  255. package/src/components/MlWmsLoader/MlWmsLoader.meta.json +1 -2
  256. package/src/components/MlWmsLoader/MlWmsLoader.stories.tsx +89 -0
  257. package/src/components/MlWmsLoader/MlWmsLoader.tsx +141 -122
  258. package/src/components/MlWmsLoader/utils/MlWmsLoaderInstructions.tsx +50 -0
  259. package/src/components/MlWmsLoader/utils/WMSLinks.tsx +128 -0
  260. package/src/decorators/MapContextDecorator.js +1 -1
  261. package/src/decorators/MapContextDecoratorHooks.js +1 -1
  262. package/src/decorators/ThemeWrapper.tsx +9 -0
  263. package/src/hooks/useCameraFollowPath/useCameraFollowPath.meta.json +1 -2
  264. package/src/{components/MlGPXViewer → hooks/useGpx/lib}/gpxConverter.js +1 -0
  265. package/src/hooks/useGpx/useGpx.doc.de.md +3 -0
  266. package/src/hooks/useGpx/useGpx.meta_.json +15 -0
  267. package/src/{components/MlLayer/MlLayer.stories.js → hooks/useGpx/useGpx.stories.js} +4 -4
  268. package/src/hooks/useGpx/useGpx.tsx +70 -0
  269. package/src/hooks/useLayer.ts +32 -10
  270. package/src/hooks/useLayerFilter/useLayerFilter.doc.de.md +3 -0
  271. package/src/hooks/useLayerFilter/useLayerFilter.meta_.json +14 -0
  272. package/src/hooks/useLayerFilter/useLayerFilter.stories.tsx +40 -0
  273. package/src/hooks/useLayerFilter/useLayerFilter.ts +33 -0
  274. package/src/hooks/useLayerHoverPopup/useLayerHoverPopup.doc.de.md +3 -0
  275. package/src/hooks/useLayerHoverPopup/useLayerHoverPopup.meta_.json +15 -0
  276. package/src/{components/MlWmsFeatureInfoPopup/MlWmsFeatureInfoPopup.stories.js → hooks/useLayerHoverPopup/useLayerHoverPopup.stories.js} +4 -6
  277. package/src/hooks/useLayerHoverPopup/useLayerHoverPopup.tsx +82 -0
  278. package/src/hooks/useMap.test.tsx +48 -0
  279. package/src/hooks/useMap.ts +8 -8
  280. package/src/hooks/useSource.ts +4 -4
  281. package/src/hooks/{useWms.js → useWms.ts} +24 -11
  282. package/src/index.ts +5 -5
  283. package/src/setupTests.js +18 -15
  284. package/src/ui_components/Dropzone.tsx +104 -0
  285. package/src/ui_components/{ImageLoader.js → ImageLoader.tsx} +30 -25
  286. package/src/ui_components/{LoadingOverlayContext.js → LoadingOverlayContext.tsx} +12 -15
  287. package/src/ui_components/Sidebar.tsx +12 -10
  288. package/src/ui_components/Tooltip.tsx +17 -0
  289. package/src/ui_components/TopToolbar.tsx +5 -3
  290. package/src/ui_components/UploadButton.tsx +57 -0
  291. package/src/util/BubbleForInstructions.js +46 -0
  292. package/src/util/Instructions.tsx +60 -0
  293. package/tsconfig.json +1 -1
  294. package/coverage/lcov-report/src/components/MlGPXViewer/MlGPXViewer.tsx.html +0 -1222
  295. package/coverage/lcov-report/src/components/MlGPXViewer/gpxConverter.js.html +0 -1645
  296. package/coverage/lcov-report/src/components/MlSpatialElevationProfile/MlSpatialElevationProfile.js.html +0 -757
  297. package/dist/components/MlGPXViewer/util/MlGPXViewerInstructions.d.ts +0 -1
  298. package/dist/components/MlGPXViewer/util/SampleLayer.d.ts +0 -0
  299. package/dist/components/MlGPXViewer/util/demoViewer.d.ts +0 -5
  300. package/src/components/MlCenterPosition/MlCenterPosition.stories.js +0 -21
  301. package/src/components/MlGPXViewer/MlGPXViewer.stories.js +0 -91
  302. package/src/components/MlGPXViewer/MlGPXViewer.test.js +0 -28
  303. package/src/components/MlGPXViewer/MlGPXViewer.tsx +0 -379
  304. package/src/components/MlGPXViewer/util/MlGPXViewerInstructions.js +0 -145
  305. package/src/components/MlGPXViewer/util/SampleLayer.js +0 -2
  306. package/src/components/MlGPXViewer/util/demoViewer.js +0 -254
  307. package/src/components/MlImageMarkerLayer/MlImageMarkerLayer.stories.js +0 -45
  308. package/src/components/MlLayerMagnify/MlLayerMagnify.stories.js +0 -41
  309. package/src/components/MlSpatialElevationProfile/MlSpatialElevationProfile.js +0 -224
  310. package/src/components/MlSpatialElevationProfile/MlSpatialElevationProfile.stories.js +0 -57
  311. package/src/components/MlThreeJsLayer/MlThreeJsLayer.stories.js +0 -39
  312. package/src/components/MlWmsLoader/MlWmsLoader.stories.js +0 -47
  313. package/src/decorators/ThemeWrapper.jsx +0 -9
  314. package/src/ui_components/Legend.js +0 -44
  315. package/src/ui_components/LoadingOverlay.js +0 -41
  316. package/src/ui_components/Tooltip.js +0 -21
@@ -279,15 +279,7 @@
279
279
  <a name='L214'></a><a href='#L214'>214</a>
280
280
  <a name='L215'></a><a href='#L215'>215</a>
281
281
  <a name='L216'></a><a href='#L216'>216</a>
282
- <a name='L217'></a><a href='#L217'>217</a>
283
- <a name='L218'></a><a href='#L218'>218</a>
284
- <a name='L219'></a><a href='#L219'>219</a>
285
- <a name='L220'></a><a href='#L220'>220</a>
286
- <a name='L221'></a><a href='#L221'>221</a>
287
- <a name='L222'></a><a href='#L222'>222</a>
288
- <a name='L223'></a><a href='#L223'>223</a></td><td class="line-coverage quiet"><span class="cline-any cline-neutral">&nbsp;</span>
289
- <span class="cline-any cline-neutral">&nbsp;</span>
290
- <span class="cline-any cline-neutral">&nbsp;</span>
282
+ <a name='L217'></a><a href='#L217'>217</a></td><td class="line-coverage quiet"><span class="cline-any cline-neutral">&nbsp;</span>
291
283
  <span class="cline-any cline-neutral">&nbsp;</span>
292
284
  <span class="cline-any cline-neutral">&nbsp;</span>
293
285
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -368,8 +360,6 @@
368
360
  <span class="cline-any cline-neutral">&nbsp;</span>
369
361
  <span class="cline-any cline-yes">1x</span>
370
362
  <span class="cline-any cline-neutral">&nbsp;</span>
371
- <span class="cline-any cline-neutral">&nbsp;</span>
372
- <span class="cline-any cline-neutral">&nbsp;</span>
373
363
  <span class="cline-any cline-yes">1x</span>
374
364
  <span class="cline-any cline-neutral">&nbsp;</span>
375
365
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -386,9 +376,6 @@
386
376
  <span class="cline-any cline-yes">1x</span>
387
377
  <span class="cline-any cline-neutral">&nbsp;</span>
388
378
  <span class="cline-any cline-yes">1x</span>
389
- <span class="cline-any cline-neutral">&nbsp;</span>
390
- <span class="cline-any cline-neutral">&nbsp;</span>
391
- <span class="cline-any cline-neutral">&nbsp;</span>
392
379
  <span class="cline-any cline-yes">1x</span>
393
380
  <span class="cline-any cline-yes">1x</span>
394
381
  <span class="cline-any cline-yes">1x</span>
@@ -507,20 +494,15 @@
507
494
  <span class="cline-any cline-neutral">&nbsp;</span>
508
495
  <span class="cline-any cline-neutral">&nbsp;</span>
509
496
  <span class="cline-any cline-neutral">&nbsp;</span>
510
- <span class="cline-any cline-neutral">&nbsp;</span></td><td class="text"><pre class="prettyprint lang-js">import React, {
511
- useContext,
512
- useCallback,
513
- useRef,
514
- useEffect,
515
- useState,
516
- useMemo
517
- } from "react";
497
+ <span class="cline-any cline-neutral">&nbsp;</span>
498
+ <span class="cline-any cline-neutral">&nbsp;</span></td><td class="text"><pre class="prettyprint lang-js">import React, { useContext, useCallback, useRef, useEffect, useState, useMemo } from 'react';
499
+ // eslint-disable-next-line @typescript-eslint/ban-ts-comment
518
500
  // @ts-ignore
519
- import syncMove from "@mapbox/mapbox-gl-sync-move";
520
- import "./style.css";
521
- import MapContext from "../../contexts/MapContext";
501
+ import syncMove from '@mapbox/mapbox-gl-sync-move';
502
+ import './style.css';
503
+ import MapContext from '../../contexts/MapContext';
522
504
  &nbsp;
523
- interface MlLayerMagnifyProps {
505
+ export interface MlLayerMagnifyProps {
524
506
  /**
525
507
  * Id of the first MapLibre instance
526
508
  */
@@ -533,6 +515,10 @@ interface MlLayerMagnifyProps {
533
515
  * Size of the "magnifier"-circle
534
516
  */
535
517
  magnifierRadius?: number;
518
+ /**
519
+ * object (React.CSSProperties) that is added to the magnifier default style
520
+ */
521
+ magnifierStyle: React.CSSProperties | undefined;
536
522
  }
537
523
  &nbsp;
538
524
  /**
@@ -541,7 +527,7 @@ interface MlLayerMagnifyProps {
541
527
  * the map and can be dragged around on top of the MapLibreMap referenced by props.map1Id
542
528
  */
543
529
  const MlLayerMagnify = (props: MlLayerMagnifyProps) =&gt; {
544
- const mapContext:MapContextType = useContext(MapContext);
530
+ const mapContext: MapContextType = useContext(MapContext);
545
531
  const syncMoveInitializedRef = useRef(false);
546
532
  const syncCleanupFunctionRef = useRef(<span class="fstat-no" title="function not covered" >()</span> =&gt; {});
547
533
  &nbsp;
@@ -552,7 +538,7 @@ const MlLayerMagnify = (props: MlLayerMagnifyProps) =&gt; {
552
538
  &nbsp;
553
539
  const magnifierRadius = useMemo(() =&gt; {
554
540
  return props.magnifierRadius || <span class="branch-1 cbranch-no" title="branch not covered" >200;</span>
555
- },[props.magnifierRadius]);
541
+ }, [props.magnifierRadius]);
556
542
  &nbsp;
557
543
  const mapExists = useCallback(() =&gt; {
558
544
  <span class="missing-if-branch" title="if path not taken" >I</span>if (!props.map1Id || !props.map2Id) {
@@ -575,11 +561,11 @@ const MlLayerMagnify = (props: MlLayerMagnifyProps) =&gt; {
575
561
  });
576
562
  &nbsp;
577
563
  useEffect(() =&gt; {
578
- window.addEventListener("resize", onResize.current);
579
- let _onResize = onResize.current;
564
+ window.addEventListener('resize', onResize.current);
565
+ const _onResize = onResize.current;
580
566
  &nbsp;
581
567
  return () =&gt; {
582
- window.removeEventListener("resize", _onResize);
568
+ window.removeEventListener('resize', _onResize);
583
569
  syncCleanupFunctionRef.current();
584
570
  };
585
571
  }, []);
@@ -588,29 +574,24 @@ const MlLayerMagnify = (props: MlLayerMagnifyProps) =&gt; {
588
574
  (e) =&gt; {
589
575
  <span class="missing-if-branch" title="if path not taken" >I</span>if (!mapExists()) <span class="cstat-no" title="statement not covered" >return;</span>
590
576
  &nbsp;
591
- let bounds = mapContext.maps[props.map1Id]
592
- .getCanvas()
593
- .getBoundingClientRect();
577
+ const bounds = mapContext.maps[props.map1Id].getCanvas().getBoundingClientRect();
594
578
  let clientX =
595
579
  e.clientX ||
596
- (typeof e.touches !== "undefined" &amp;&amp; <span class="branch-1 cbranch-no" title="branch not covered" >typeof e.touches[0] !== "undefined"</span>
580
+ (typeof e.touches !== 'undefined' &amp;&amp; <span class="branch-1 cbranch-no" title="branch not covered" >typeof e.touches[0] !== 'undefined'</span>
597
581
  ? <span class="branch-0 cbranch-no" title="branch not covered" >e.touches[0].clientX</span>
598
582
  : 0);
599
583
  let clientY =
600
584
  e.clientY ||
601
- (typeof e.touches !== "undefined" &amp;&amp; <span class="branch-1 cbranch-no" title="branch not covered" >typeof e.touches[0] !== "undefined"</span>
585
+ (typeof e.touches !== 'undefined' &amp;&amp; <span class="branch-1 cbranch-no" title="branch not covered" >typeof e.touches[0] !== 'undefined'</span>
602
586
  ? <span class="branch-0 cbranch-no" title="branch not covered" >e.touches[0].clientY</span>
603
587
  : 0);
604
588
  &nbsp;
605
589
  clientX -= bounds.x;
606
590
  clientY -= bounds.y;
607
- let swipeX_tmp = ((clientX / bounds.width) * 100).toFixed(2);
608
- let swipeY_tmp = ((clientY / bounds.height) * 100).toFixed(2);
591
+ const swipeX_tmp = ((clientX / bounds.width) * 100).toFixed(2);
592
+ const swipeY_tmp = ((clientY / bounds.height) * 100).toFixed(2);
609
593
  &nbsp;
610
- <span class="missing-if-branch" title="else path not taken" >E</span>if (
611
- swipeXRef.current !== swipeX_tmp ||
612
- <span class="branch-1 cbranch-no" title="branch not covered" > swipeYRef.current !== swipeY_tmp</span>
613
- ) {
594
+ <span class="missing-if-branch" title="else path not taken" >E</span>if (swipeXRef.current !== swipeX_tmp || <span class="branch-1 cbranch-no" title="branch not covered" >swipeYRef.current !== swipeY_tmp)</span> {
614
595
  setSwipeX(swipeX_tmp);
615
596
  swipeXRef.current = swipeX_tmp;
616
597
  setSwipeY(swipeY_tmp);
@@ -619,9 +600,9 @@ const MlLayerMagnify = (props: MlLayerMagnifyProps) =&gt; {
619
600
  mapContext.maps[props.map2Id].getContainer().style.clipPath =
620
601
  `circle(${magnifierRadius}px at ` +
621
602
  (parseFloat(swipeXRef.current) * bounds.width) / 100 +
622
- "px " +
603
+ 'px ' +
623
604
  (parseFloat(swipeYRef.current) * bounds.height) / 100 +
624
- "px)";
605
+ 'px)';
625
606
  }
626
607
  },
627
608
  [mapContext, mapExists, props, magnifierRadius]
@@ -669,53 +650,53 @@ const MlLayerMagnify = (props: MlLayerMagnifyProps) =&gt; {
669
650
  });
670
651
  }, [mapContext.mapIds, mapContext, mapExists, props, onMove]);
671
652
  &nbsp;
672
- const onDown = <span class="fstat-no" title="function not covered" >(e</span>:any) =&gt; {
673
- <span class="cstat-no" title="statement not covered" > if (e.touches) {</span>
674
- <span class="cstat-no" title="statement not covered" > document.addEventListener("touchmove", onMove);</span>
675
- <span class="cstat-no" title="statement not covered" > document.addEventListener("touchend", onTouchEnd);</span>
653
+ const onDown = <span class="fstat-no" title="function not covered" >(e</span>: React.MouseEvent | React.TouchEvent) =&gt; {
654
+ <span class="cstat-no" title="statement not covered" > if (e.nativeEvent instanceof TouchEvent) {</span>
655
+ <span class="cstat-no" title="statement not covered" > document.addEventListener('touchmove', onMove);</span>
656
+ <span class="cstat-no" title="statement not covered" > document.addEventListener('touchend', onTouchEnd);</span>
676
657
  } else {
677
- <span class="cstat-no" title="statement not covered" > document.addEventListener("mousemove", onMove);</span>
678
- <span class="cstat-no" title="statement not covered" > document.addEventListener("mouseup", onMouseUp);</span>
658
+ <span class="cstat-no" title="statement not covered" > document.addEventListener('mousemove', onMove);</span>
659
+ <span class="cstat-no" title="statement not covered" > document.addEventListener('mouseup', onMouseUp);</span>
679
660
  }
680
661
  };
681
662
  &nbsp;
682
663
  const onTouchEnd = <span class="fstat-no" title="function not covered" >()</span> =&gt; {
683
- <span class="cstat-no" title="statement not covered" > document.removeEventListener("touchmove", onMove);</span>
684
- <span class="cstat-no" title="statement not covered" > document.removeEventListener("touchend", onTouchEnd);</span>
664
+ <span class="cstat-no" title="statement not covered" > document.removeEventListener('touchmove', onMove);</span>
665
+ <span class="cstat-no" title="statement not covered" > document.removeEventListener('touchend', onTouchEnd);</span>
685
666
  };
686
667
  &nbsp;
687
668
  const onMouseUp = <span class="fstat-no" title="function not covered" >()</span> =&gt; {
688
- <span class="cstat-no" title="statement not covered" > document.removeEventListener("mousemove", onMove);</span>
689
- <span class="cstat-no" title="statement not covered" > document.removeEventListener("mouseup", onMouseUp);</span>
669
+ <span class="cstat-no" title="statement not covered" > document.removeEventListener('mousemove', onMove);</span>
670
+ <span class="cstat-no" title="statement not covered" > document.removeEventListener('mouseup', onMouseUp);</span>
690
671
  };
691
672
  &nbsp;
692
- const onWheel = <span class="fstat-no" title="function not covered" >(e</span>:any) =&gt; {
693
- let evCopy = <span class="cstat-no" title="statement not covered" >new WheelEvent(e.type, e);</span>
673
+ const onWheel = <span class="fstat-no" title="function not covered" >(e</span>: React.WheelEvent) =&gt; {
674
+ const evCopy = <span class="cstat-no" title="statement not covered" >new WheelEvent(e.type, e as unknown as WheelEventInit);</span>
694
675
  <span class="cstat-no" title="statement not covered" > mapContext.map.getCanvas().dispatchEvent(evCopy);</span>
695
676
  };
696
677
  &nbsp;
697
678
  return (
698
679
  &lt;div
699
680
  style={{
700
- position: "absolute",
701
- left: swipeX + "%",
702
- top: swipeY + "%",
703
- borderRadius: "50%",
704
- width: magnifierRadius * 2 + 1 + "px",
705
- height: magnifierRadius * 2 + 1 + "px",
706
- background: "rgba(0,0,0,0)",
707
- border: "2px solid #fafafa",
708
- boxShadow:
709
- "1px 2px 2px rgba(19, 19, 19, .5), inset 1px 1px 1px rgba(19, 19, 19, .2)",
710
- cursor: "pointer",
711
- zIndex: "110",
712
- marginLeft: magnifierRadius * -1 - 1 + "px",
713
- marginTop: magnifierRadius * -1 - 1 + "px",
714
- textAlign: "center",
715
- lineHeight: "91px",
716
- fontSize: "2em",
717
- color: "#fafafa",
718
- userSelect: "none",
681
+ position: 'absolute',
682
+ left: swipeX + '%',
683
+ top: swipeY + '%',
684
+ borderRadius: '50%',
685
+ width: magnifierRadius * 2 - 2 + 'px',
686
+ height: magnifierRadius * 2 - 2 + 'px',
687
+ background: 'rgba(0,0,0,0)',
688
+ border: '2px solid #fafafa',
689
+ boxShadow: '1px 2px 2px rgba(19, 19, 19, .5), inset 1px 1px 1px rgba(19, 19, 19, .2)',
690
+ cursor: 'pointer',
691
+ zIndex: '110',
692
+ marginLeft: magnifierRadius * -1 - 1 + 'px',
693
+ marginTop: magnifierRadius * -1 - 1 + 'px',
694
+ textAlign: 'center',
695
+ lineHeight: '91px',
696
+ fontSize: '2em',
697
+ color: '#fafafa',
698
+ userSelect: 'none',
699
+ ...props.magnifierStyle,
719
700
  }}
720
701
  onTouchStart={onDown}
721
702
  onMouseDown={onDown}
@@ -726,6 +707,7 @@ const MlLayerMagnify = (props: MlLayerMagnifyProps) =&gt; {
726
707
  &nbsp;
727
708
  MlLayerMagnify.defaultProps = {
728
709
  magnifierRadius: 200,
710
+ magnifierStyle: {},
729
711
  };
730
712
  &nbsp;
731
713
  export default MlLayerMagnify;
@@ -736,7 +718,7 @@ export default MlLayerMagnify;
736
718
  <div class='footer quiet pad2 space-top1 center small'>
737
719
  Code coverage generated by
738
720
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
739
- at 2022-12-16T12:30:49.297Z
721
+ at 2023-01-23T12:27:40.277Z
740
722
  </div>
741
723
  <script src="../../../prettify.js"></script>
742
724
  <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-23T12:27:40.277Z
105
105
  </div>
106
106
  <script src="../../../prettify.js"></script>
107
107
  <script>
@@ -23,9 +23,9 @@
23
23
  <div class='clearfix'>
24
24
 
25
25
  <div class='fl pad1y space-right2'>
26
- <span class="strong">76.59% </span>
26
+ <span class="strong">77.08% </span>
27
27
  <span class="quiet">Statements</span>
28
- <span class='fraction'>36/47</span>
28
+ <span class='fraction'>37/48</span>
29
29
  </div>
30
30
 
31
31
 
@@ -44,9 +44,9 @@
44
44
 
45
45
 
46
46
  <div class='fl pad1y space-right2'>
47
- <span class="strong">77.77% </span>
47
+ <span class="strong">78.26% </span>
48
48
  <span class="quiet">Lines</span>
49
- <span class='fraction'>35/45</span>
49
+ <span class='fraction'>36/46</span>
50
50
  </div>
51
51
 
52
52
 
@@ -208,9 +208,7 @@
208
208
  <a name='L143'></a><a href='#L143'>143</a>
209
209
  <a name='L144'></a><a href='#L144'>144</a>
210
210
  <a name='L145'></a><a href='#L145'>145</a>
211
- <a name='L146'></a><a href='#L146'>146</a>
212
- <a name='L147'></a><a href='#L147'>147</a></td><td class="line-coverage quiet"><span class="cline-any cline-neutral">&nbsp;</span>
213
- <span class="cline-any cline-neutral">&nbsp;</span>
211
+ <a name='L146'></a><a href='#L146'>146</a></td><td class="line-coverage quiet"><span class="cline-any cline-neutral">&nbsp;</span>
214
212
  <span class="cline-any cline-neutral">&nbsp;</span>
215
213
  <span class="cline-any cline-neutral">&nbsp;</span>
216
214
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -265,8 +263,6 @@
265
263
  <span class="cline-any cline-neutral">&nbsp;</span>
266
264
  <span class="cline-any cline-yes">1x</span>
267
265
  <span class="cline-any cline-neutral">&nbsp;</span>
268
- <span class="cline-any cline-neutral">&nbsp;</span>
269
- <span class="cline-any cline-neutral">&nbsp;</span>
270
266
  <span class="cline-any cline-yes">1x</span>
271
267
  <span class="cline-any cline-neutral">&nbsp;</span>
272
268
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -279,11 +275,8 @@
279
275
  <span class="cline-any cline-yes">1x</span>
280
276
  <span class="cline-any cline-yes">1x</span>
281
277
  <span class="cline-any cline-neutral">&nbsp;</span>
282
- <span class="cline-any cline-neutral">&nbsp;</span>
283
278
  <span class="cline-any cline-yes">1x</span>
284
279
  <span class="cline-any cline-neutral">&nbsp;</span>
285
- <span class="cline-any cline-neutral">&nbsp;</span>
286
- <span class="cline-any cline-neutral">&nbsp;</span>
287
280
  <span class="cline-any cline-yes">1x</span>
288
281
  <span class="cline-any cline-neutral">&nbsp;</span>
289
282
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -355,19 +348,19 @@
355
348
  <span class="cline-any cline-neutral">&nbsp;</span>
356
349
  <span class="cline-any cline-neutral">&nbsp;</span>
357
350
  <span class="cline-any cline-neutral">&nbsp;</span>
358
- <span class="cline-any cline-neutral">&nbsp;</span></td><td class="text"><pre class="prettyprint lang-js">import React, {
359
- useContext,
360
- useCallback,
361
- useRef,
362
- useEffect,
363
- useState,
364
- } from "react";
351
+ <span class="cline-any cline-yes">11x</span>
352
+ <span class="cline-any cline-neutral">&nbsp;</span>
353
+ <span class="cline-any cline-neutral">&nbsp;</span>
354
+ <span class="cline-any cline-neutral">&nbsp;</span>
355
+ <span class="cline-any cline-neutral">&nbsp;</span>
356
+ <span class="cline-any cline-neutral">&nbsp;</span></td><td class="text"><pre class="prettyprint lang-js">import React, { useContext, useCallback, useRef, useEffect, useState } from 'react';
357
+ // eslint-disable-next-line @typescript-eslint/ban-ts-comment
365
358
  // @ts-ignore
366
- import syncMove from "@mapbox/mapbox-gl-sync-move";
367
- import "./style.css";
368
- import MapContext from "../../contexts/MapContext";
359
+ import syncMove from '@mapbox/mapbox-gl-sync-move';
360
+ import './style.css';
361
+ import MapContext from '../../contexts/MapContext';
369
362
  &nbsp;
370
- interface MlLayerSwipeProps {
363
+ export interface MlLayerSwipeProps {
371
364
  /**
372
365
  * Id of the first MapLibre instance.
373
366
  */
@@ -376,6 +369,10 @@ interface MlLayerSwipeProps {
376
369
  * Id of the second MapLibre instance.
377
370
  */
378
371
  map2Id: string;
372
+ /**
373
+ * object (React.CSSProperties) that is added to the button default style
374
+ */
375
+ buttonStyle: React.CSSProperties | undefined;
379
376
  }
380
377
  &nbsp;
381
378
  /**
@@ -402,33 +399,28 @@ const MlLayerSwipe = (props: MlLayerSwipeProps) =&gt; {
402
399
  }, [mapContext, props.map1Id, props.map2Id]);
403
400
  &nbsp;
404
401
  const cleanup = () =&gt; {
405
- syncCleanupFunctionRef.current();
402
+ syncCleanupFunctionRef.current();
406
403
  };
407
404
  &nbsp;
408
405
  const onMove = useCallback(
409
406
  (e) =&gt; {
410
407
  <span class="missing-if-branch" title="if path not taken" >I</span>if (!mapExists()) <span class="cstat-no" title="statement not covered" >return;</span>
411
408
  &nbsp;
412
- let bounds = mapContext.maps[props.map1Id]
413
- .getCanvas()
414
- .getBoundingClientRect();
409
+ const bounds = mapContext.maps[props.map1Id].getCanvas().getBoundingClientRect();
415
410
  let clientX =
416
411
  e.clientX ||
417
- (typeof e.touches !== "undefined" &amp;&amp; <span class="branch-1 cbranch-no" title="branch not covered" >typeof e.touches[0] !== "undefined"</span>
412
+ (typeof e.touches !== 'undefined' &amp;&amp; <span class="branch-1 cbranch-no" title="branch not covered" >typeof e.touches[0] !== 'undefined'</span>
418
413
  ? <span class="branch-0 cbranch-no" title="branch not covered" >e.touches[0].clientX</span>
419
414
  : 0);
420
415
  &nbsp;
421
416
  clientX -= bounds.x;
422
- let swipeX_tmp = parseFloat(((clientX / bounds.width) * 100).toFixed(2));
417
+ const swipeX_tmp = parseFloat(((clientX / bounds.width) * 100).toFixed(2));
423
418
  &nbsp;
424
419
  <span class="missing-if-branch" title="else path not taken" >E</span>if (swipeXRef.current !== swipeX_tmp) {
425
420
  setSwipeX(swipeX_tmp);
426
421
  swipeXRef.current = swipeX_tmp;
427
422
  &nbsp;
428
- var clipA =
429
- "rect(0, " +
430
- (swipeXRef.current * bounds.width) / 100 +
431
- "px, 999em, 0)";
423
+ const clipA = 'rect(0, ' + (swipeXRef.current * bounds.width) / 100 + 'px, 999em, 0)';
432
424
  &nbsp;
433
425
  mapContext.maps[props.map2Id].getContainer().style.clip = clipA;
434
426
  }
@@ -453,46 +445,47 @@ const MlLayerSwipe = (props: MlLayerSwipeProps) =&gt; {
453
445
  });
454
446
  }, [mapContext.mapIds, mapContext, props, onMove, mapExists]);
455
447
  &nbsp;
456
- const onDown = <span class="fstat-no" title="function not covered" >(e</span>: any) =&gt; {
457
- <span class="cstat-no" title="statement not covered" > if (e.touches) {</span>
458
- <span class="cstat-no" title="statement not covered" > document.addEventListener("touchmove", onMove);</span>
459
- <span class="cstat-no" title="statement not covered" > document.addEventListener("touchend", onTouchEnd);</span>
448
+ const onDown = <span class="fstat-no" title="function not covered" >(e</span>: React.MouseEvent | React.TouchEvent) =&gt; {
449
+ <span class="cstat-no" title="statement not covered" > if (e.nativeEvent instanceof TouchEvent) {</span>
450
+ <span class="cstat-no" title="statement not covered" > document.addEventListener('touchmove', onMove);</span>
451
+ <span class="cstat-no" title="statement not covered" > document.addEventListener('touchend', onTouchEnd);</span>
460
452
  } else {
461
- <span class="cstat-no" title="statement not covered" > document.addEventListener("mousemove", onMove);</span>
462
- <span class="cstat-no" title="statement not covered" > document.addEventListener("mouseup", onMouseUp);</span>
453
+ <span class="cstat-no" title="statement not covered" > document.addEventListener('mousemove', onMove);</span>
454
+ <span class="cstat-no" title="statement not covered" > document.addEventListener('mouseup', onMouseUp);</span>
463
455
  }
464
456
  };
465
457
  &nbsp;
466
458
  const onTouchEnd = <span class="fstat-no" title="function not covered" >()</span> =&gt; {
467
- <span class="cstat-no" title="statement not covered" > document.removeEventListener("touchmove", onMove);</span>
468
- <span class="cstat-no" title="statement not covered" > document.removeEventListener("touchend", onTouchEnd);</span>
459
+ <span class="cstat-no" title="statement not covered" > document.removeEventListener('touchmove', onMove);</span>
460
+ <span class="cstat-no" title="statement not covered" > document.removeEventListener('touchend', onTouchEnd);</span>
469
461
  };
470
462
  &nbsp;
471
463
  const onMouseUp = <span class="fstat-no" title="function not covered" >()</span> =&gt; {
472
- <span class="cstat-no" title="statement not covered" > document.removeEventListener("mousemove", onMove);</span>
473
- <span class="cstat-no" title="statement not covered" > document.removeEventListener("mouseup", onMouseUp);</span>
464
+ <span class="cstat-no" title="statement not covered" > document.removeEventListener('mousemove', onMove);</span>
465
+ <span class="cstat-no" title="statement not covered" > document.removeEventListener('mouseup', onMouseUp);</span>
474
466
  };
475
467
  &nbsp;
476
468
  return (
477
469
  &lt;div
478
470
  style={{
479
- position: "absolute",
480
- left: swipeX + "%",
481
- top: "50%",
482
- borderRadius: "50%",
483
- width: "100px",
484
- height: "100px",
485
- background: "#0066ff",
486
- border: "3px solid #eaebf1",
487
- cursor: "pointer",
488
- zIndex: "110",
489
- marginLeft: "-50px",
490
- marginTop: "-50px",
491
- textAlign: "center",
492
- lineHeight: "91px",
493
- fontSize: "2em",
494
- color: "#fafafa",
495
- userSelect: "none",
471
+ position: 'absolute',
472
+ left: swipeX + '%',
473
+ top: '50%',
474
+ borderRadius: '50%',
475
+ width: '100px',
476
+ height: '100px',
477
+ background: '#0066ff',
478
+ border: '3px solid #eaebf1',
479
+ cursor: 'pointer',
480
+ zIndex: '110',
481
+ marginLeft: '-50px',
482
+ marginTop: '-50px',
483
+ textAlign: 'center',
484
+ lineHeight: '91px',
485
+ fontSize: '2em',
486
+ color: '#fafafa',
487
+ userSelect: 'none',
488
+ ...props.buttonStyle,
496
489
  }}
497
490
  onTouchStart={onDown}
498
491
  onMouseDown={onDown}
@@ -500,6 +493,10 @@ const MlLayerSwipe = (props: MlLayerSwipeProps) =&gt; {
500
493
  );
501
494
  };
502
495
  &nbsp;
496
+ MlLayerSwipe.defaultProps = {
497
+ buttonStyle: {},
498
+ };
499
+ &nbsp;
503
500
  export default MlLayerSwipe;
504
501
  &nbsp;</pre></td></tr></table></pre>
505
502
 
@@ -508,7 +505,7 @@ export default MlLayerSwipe;
508
505
  <div class='footer quiet pad2 space-top1 center small'>
509
506
  Code coverage generated by
510
507
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
511
- at 2022-12-16T12:30:49.297Z
508
+ at 2023-01-23T12:27:40.277Z
512
509
  </div>
513
510
  <script src="../../../prettify.js"></script>
514
511
  <script>
@@ -23,9 +23,9 @@
23
23
  <div class='clearfix'>
24
24
 
25
25
  <div class='fl pad1y space-right2'>
26
- <span class="strong">76.59% </span>
26
+ <span class="strong">77.08% </span>
27
27
  <span class="quiet">Statements</span>
28
- <span class='fraction'>36/47</span>
28
+ <span class='fraction'>37/48</span>
29
29
  </div>
30
30
 
31
31
 
@@ -44,9 +44,9 @@
44
44
 
45
45
 
46
46
  <div class='fl pad1y space-right2'>
47
- <span class="strong">77.77% </span>
47
+ <span class="strong">78.26% </span>
48
48
  <span class="quiet">Lines</span>
49
- <span class='fraction'>35/45</span>
49
+ <span class='fraction'>36/46</span>
50
50
  </div>
51
51
 
52
52
 
@@ -80,17 +80,17 @@
80
80
  </thead>
81
81
  <tbody><tr>
82
82
  <td class="file medium" data-value="MlLayerSwipe.tsx"><a href="MlLayerSwipe.tsx.html">MlLayerSwipe.tsx</a></td>
83
- <td data-value="76.59" class="pic medium">
84
- <div class="chart"><div class="cover-fill" style="width: 76%"></div><div class="cover-empty" style="width: 24%"></div></div>
83
+ <td data-value="77.08" class="pic medium">
84
+ <div class="chart"><div class="cover-fill" style="width: 77%"></div><div class="cover-empty" style="width: 23%"></div></div>
85
85
  </td>
86
- <td data-value="76.59" class="pct medium">76.59%</td>
87
- <td data-value="47" class="abs medium">36/47</td>
86
+ <td data-value="77.08" class="pct medium">77.08%</td>
87
+ <td data-value="48" class="abs medium">37/48</td>
88
88
  <td data-value="70.83" class="pct medium">70.83%</td>
89
89
  <td data-value="24" class="abs medium">17/24</td>
90
90
  <td data-value="60" class="pct medium">60%</td>
91
91
  <td data-value="10" class="abs medium">6/10</td>
92
- <td data-value="77.77" class="pct medium">77.77%</td>
93
- <td data-value="45" class="abs medium">35/45</td>
92
+ <td data-value="78.26" class="pct medium">78.26%</td>
93
+ <td data-value="46" class="abs medium">36/46</td>
94
94
  </tr>
95
95
 
96
96
  </tbody>
@@ -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-23T12:27:40.277Z
105
105
  </div>
106
106
  <script src="../../../prettify.js"></script>
107
107
  <script>
@@ -721,7 +721,7 @@ export default MlLayerSwitcher;
721
721
  <div class='footer quiet pad2 space-top1 center small'>
722
722
  Code coverage generated by
723
723
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
724
- at 2022-12-16T12:30:49.297Z
724
+ at 2023-01-23T12:27:40.277Z
725
725
  </div>
726
726
  <script src="../../../prettify.js"></script>
727
727
  <script>