@mapcomponents/react-maplibre 0.1.56 → 0.1.58

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 (277) hide show
  1. package/.eslintignore +11 -0
  2. package/.eslintrc.js +20 -0
  3. package/.github/workflows/check-formatting.yml +46 -0
  4. package/.prettierignore +11 -0
  5. package/.prettierrc.json +6 -0
  6. package/CHANGELOG.md +20 -0
  7. package/coverage/clover.xml +232 -80
  8. package/coverage/coverage-final.json +43 -37
  9. package/coverage/lcov-report/index.html +71 -26
  10. package/coverage/lcov-report/src/components/MapLibreMap/MapLibreMap.tsx.html +83 -83
  11. package/coverage/lcov-report/src/components/MapLibreMap/index.html +1 -1
  12. package/coverage/lcov-report/src/components/MlCenterPosition/MlCenterPosition.tsx.html +66 -66
  13. package/coverage/lcov-report/src/components/MlCenterPosition/index.html +1 -1
  14. package/coverage/lcov-report/src/components/MlCreatePdfButton/MlCreatePdfButton.tsx.html +30 -30
  15. package/coverage/lcov-report/src/components/MlCreatePdfButton/index.html +1 -1
  16. package/coverage/lcov-report/src/components/MlCreatePdfForm/MlCreatePdfForm.tsx.html +202 -0
  17. package/coverage/lcov-report/src/components/MlCreatePdfForm/index.html +116 -0
  18. package/coverage/lcov-report/src/components/MlFeatureEditor/MlFeatureEditor.tsx.html +99 -99
  19. package/coverage/lcov-report/src/components/MlFeatureEditor/index.html +1 -1
  20. package/coverage/lcov-report/src/components/MlFillExtrusionLayer/MlFillExtrusionLayer.tsx.html +66 -66
  21. package/coverage/lcov-report/src/components/MlFillExtrusionLayer/index.html +1 -1
  22. package/coverage/lcov-report/src/components/MlFollowGps/MlFollowGps.tsx.html +221 -221
  23. package/coverage/lcov-report/src/components/MlFollowGps/index.html +1 -1
  24. package/coverage/lcov-report/src/components/MlGPXViewer/MlGPXViewer.tsx.html +308 -308
  25. package/coverage/lcov-report/src/components/MlGPXViewer/gpxConverter.js.html +497 -497
  26. package/coverage/lcov-report/src/components/MlGPXViewer/index.html +1 -1
  27. package/coverage/lcov-report/src/components/MlGeoJsonLayer/MlGeoJsonLayer.tsx.html +85 -85
  28. package/coverage/lcov-report/src/components/MlGeoJsonLayer/index.html +1 -1
  29. package/coverage/lcov-report/src/components/MlGeojsonLayerWithSource/MlGeojsonLayerWithSource.tsx.html +469 -0
  30. package/coverage/lcov-report/src/components/MlGeojsonLayerWithSource/index.html +116 -0
  31. package/coverage/lcov-report/src/components/MlImageMarkerLayer/MlImageMarkerLayer.tsx.html +140 -140
  32. package/coverage/lcov-report/src/components/MlImageMarkerLayer/index.html +1 -1
  33. package/coverage/lcov-report/src/components/MlLayer/MlLayer.tsx.html +37 -37
  34. package/coverage/lcov-report/src/components/MlLayer/index.html +1 -1
  35. package/coverage/lcov-report/src/components/MlLayerMagnify/MlLayerMagnify.tsx.html +179 -179
  36. package/coverage/lcov-report/src/components/MlLayerMagnify/index.html +1 -1
  37. package/coverage/lcov-report/src/components/MlLayerSwipe/MlLayerSwipe.tsx.html +113 -113
  38. package/coverage/lcov-report/src/components/MlLayerSwipe/index.html +1 -1
  39. package/coverage/lcov-report/src/components/MlLayerSwitcher/MlLayerSwitcher.js.html +181 -181
  40. package/coverage/lcov-report/src/components/MlLayerSwitcher/components/LayerBox.js.html +58 -58
  41. package/coverage/lcov-report/src/components/MlLayerSwitcher/components/index.html +1 -1
  42. package/coverage/lcov-report/src/components/MlLayerSwitcher/index.html +1 -1
  43. package/coverage/lcov-report/src/components/MlMarker/MlMarker.tsx.html +108 -108
  44. package/coverage/lcov-report/src/components/MlMarker/index.html +1 -1
  45. package/coverage/lcov-report/src/components/MlMeasureTool/MlMeasureTool.tsx.html +39 -39
  46. package/coverage/lcov-report/src/components/MlMeasureTool/index.html +1 -1
  47. package/coverage/lcov-report/src/components/MlNavigationCompass/MlNavigationCompass.tsx.html +183 -183
  48. package/coverage/lcov-report/src/components/MlNavigationCompass/index.html +1 -1
  49. package/coverage/lcov-report/src/components/MlNavigationTools/MlNavigationTools.tsx.html +163 -163
  50. package/coverage/lcov-report/src/components/MlNavigationTools/index.html +1 -1
  51. package/coverage/lcov-report/src/components/MlOsmLayer/MlOsmLayer.js.html +50 -50
  52. package/coverage/lcov-report/src/components/MlOsmLayer/MlOsmLayer.stories_.js.html +30 -30
  53. package/coverage/lcov-report/src/components/MlOsmLayer/index.html +1 -1
  54. package/coverage/lcov-report/src/components/MlScaleReference/MlScaleReference.js.html +89 -89
  55. package/coverage/lcov-report/src/components/MlScaleReference/index.html +11 -11
  56. package/coverage/lcov-report/src/components/MlShareMapState/MlShareMapState.js.html +204 -204
  57. package/coverage/lcov-report/src/components/MlShareMapState/index.html +1 -1
  58. package/coverage/lcov-report/src/components/MlSpatialElevationProfile/MlSpatialElevationProfile.js.html +180 -180
  59. package/coverage/lcov-report/src/components/MlSpatialElevationProfile/index.html +1 -1
  60. package/coverage/lcov-report/src/components/MlThreeJsLayer/MlThreeJsLayer.js.html +163 -163
  61. package/coverage/lcov-report/src/components/MlThreeJsLayer/index.html +1 -1
  62. package/coverage/lcov-report/src/components/MlTransitionGeoJsonLayer/MlTransitionGeoJsonLayer.tsx.html +136 -136
  63. package/coverage/lcov-report/src/components/MlTransitionGeoJsonLayer/index.html +1 -1
  64. package/coverage/lcov-report/src/components/MlUseMapDebugger/MlUseMapDebugger.js.html +53 -53
  65. package/coverage/lcov-report/src/components/MlUseMapDebugger/index.html +1 -1
  66. package/coverage/lcov-report/src/components/MlVectorTileLayer/MlVectorTileLayer.tsx.html +123 -123
  67. package/coverage/lcov-report/src/components/MlVectorTileLayer/index.html +1 -1
  68. package/coverage/lcov-report/src/components/MlWmsFeatureInfoPopup/MlWmsFeatureInfoPopup.js.html +35 -35
  69. package/coverage/lcov-report/src/components/MlWmsFeatureInfoPopup/index.html +1 -1
  70. package/coverage/lcov-report/src/components/MlWmsLayer/MlWmsLayer.tsx.html +155 -155
  71. package/coverage/lcov-report/src/components/MlWmsLayer/index.html +1 -1
  72. package/coverage/lcov-report/src/components/MlWmsLoader/MlWmsLoader.tsx.html +255 -255
  73. package/coverage/lcov-report/src/components/MlWmsLoader/index.html +1 -1
  74. package/coverage/lcov-report/src/contexts/MapContext.tsx.html +66 -66
  75. package/coverage/lcov-report/src/contexts/SimpleDataContext.js.html +1 -1
  76. package/coverage/lcov-report/src/contexts/SimpleDataProvider.js.html +48 -48
  77. package/coverage/lcov-report/src/contexts/index.html +1 -1
  78. package/coverage/lcov-report/src/hooks/exportMap/index.html +131 -0
  79. package/coverage/lcov-report/src/hooks/exportMap/index.ts.html +175 -0
  80. package/coverage/lcov-report/src/hooks/exportMap/lib.ts.html +646 -0
  81. package/coverage/lcov-report/src/hooks/index.html +48 -18
  82. package/coverage/lcov-report/src/hooks/useLayer.ts.html +230 -188
  83. package/coverage/lcov-report/src/hooks/useLayerEvent.js.html +232 -0
  84. package/coverage/lcov-report/src/hooks/useMap.ts.html +72 -69
  85. package/coverage/lcov-report/src/hooks/useMapState.ts.html +145 -145
  86. package/coverage/lcov-report/src/hooks/useSource.ts.html +337 -0
  87. package/coverage/lcov-report/src/hooks/useWms.js.html +72 -72
  88. package/coverage/lcov-report/src/index.html +1 -1
  89. package/coverage/lcov-report/src/index.ts.html +14 -2
  90. package/coverage/lcov.info +450 -153
  91. package/dist/components/MlCreatePdfForm/MlCreatePdfForm.d.ts +24 -0
  92. package/dist/components/MlCreatePdfForm/MlCreatePdfForm.stories.d.ts +13 -0
  93. package/dist/components/MlCreatePdfForm/lib/PdfContext.d.ts +21 -0
  94. package/dist/components/MlCreatePdfForm/lib/PdfForm.d.ts +10 -0
  95. package/dist/components/MlCreatePdfForm/lib/PdfPreview.d.ts +13 -0
  96. package/dist/components/MlCreatePdfForm/lib/pdf.templates.d.ts +11 -0
  97. package/dist/components/MlFeatureEditor/lib/create_vertex.d.ts +1 -1
  98. package/dist/components/MlGeojsonLayerWithSource/MlGeojsonLayerWithSource.d.ts +22 -0
  99. package/dist/components/MlGeojsonLayerWithSource/MlGeojsonLayerWithSource.stories.d.ts +10 -0
  100. package/dist/components/MlLayerSwipe/MlLayerSwipe.d.ts +1 -1
  101. package/dist/components/MlWmsLayer/MlWmsLayer.d.ts +2 -2
  102. package/dist/decorators/MapContextDecoratorHooks.d.ts +2 -0
  103. package/dist/decorators/ThemeWrapper.d.ts +1 -0
  104. package/dist/hooks/exportMap/index.d.ts +11 -0
  105. package/dist/hooks/exportMap/lib.d.ts +36 -0
  106. package/dist/hooks/useLayer.d.ts +6 -5
  107. package/dist/hooks/useLayerEvent.d.ts +2 -0
  108. package/dist/hooks/useMap.d.ts +1 -1
  109. package/dist/hooks/useMapState.stories.d.ts +2 -2
  110. package/dist/hooks/useSource.d.ts +17 -0
  111. package/dist/hooks/useSources.stories.d.ts +13 -0
  112. package/dist/index.d.ts +4 -0
  113. package/dist/index.esm.js +479 -190
  114. package/dist/index.esm.js.map +1 -1
  115. package/eslintErrorTest.js +10 -0
  116. package/package.json +7 -1
  117. package/public/thumbnails/MlCreatePdfForm.png +0 -0
  118. package/src/components/MapLibreMap/MapLibreMap.stories.js +72 -72
  119. package/src/components/MapLibreMap/MapLibreMap.test.js +60 -60
  120. package/src/components/MapLibreMap/MapLibreMap.tsx +82 -82
  121. package/src/components/MapLibreMap/lib/MapLibreGlWrapper.test.js +343 -343
  122. package/src/components/MapLibreMap/lib/MapLibreGlWrapper.ts +619 -619
  123. package/src/components/MlBasicComponent.js +25 -25
  124. package/src/components/MlCenterPosition/MlCenterPosition.stories.js +6 -6
  125. package/src/components/MlCenterPosition/MlCenterPosition.tsx +65 -65
  126. package/src/components/MlComponentTemplate/MlComponentTemplate.stories.js +5 -5
  127. package/src/components/MlComponentTemplate/MlComponentTemplate.tsx +23 -23
  128. package/src/components/MlCreatePdfButton/{MlCreatePdfButton.meta.json → MlCreatePdfButton.meta_.json} +0 -0
  129. package/src/components/MlCreatePdfButton/MlCreatePdfButton.stories.js +16 -16
  130. package/src/components/MlCreatePdfButton/MlCreatePdfButton.tsx +29 -29
  131. package/src/components/MlCreatePdfButton/lib/createPdf.ts +175 -175
  132. package/src/components/MlCreatePdfButton/lib/nominatimMap.ts +51 -51
  133. package/src/components/MlCreatePdfForm/MlCreatePdfForm.doc.de.md +3 -0
  134. package/src/components/MlCreatePdfForm/MlCreatePdfForm.meta.json +15 -0
  135. package/src/components/MlCreatePdfForm/MlCreatePdfForm.stories.tsx +152 -0
  136. package/src/components/MlCreatePdfForm/MlCreatePdfForm.tsx +39 -0
  137. package/src/components/MlCreatePdfForm/lib/PdfContext.tsx +53 -0
  138. package/src/components/MlCreatePdfForm/lib/PdfForm.tsx +161 -0
  139. package/src/components/MlCreatePdfForm/lib/PdfPreview.tsx +399 -0
  140. package/src/components/MlCreatePdfForm/lib/pdf.templates.ts +82 -0
  141. package/src/components/MlFeatureEditor/MlFeatureEditor.stories.js +55 -55
  142. package/src/components/MlFeatureEditor/MlFeatureEditor.test.js +105 -105
  143. package/src/components/MlFeatureEditor/MlFeatureEditor.tsx +119 -119
  144. package/src/components/MlFeatureEditor/custom-direct-select-mode.js +208 -208
  145. package/src/components/MlFeatureEditor/custom-polygon-mode.js +148 -148
  146. package/src/components/MlFeatureEditor/custom-select-mode.js +314 -314
  147. package/src/components/MlFeatureEditor/lib/common_selectors.js +34 -34
  148. package/src/components/MlFeatureEditor/lib/constants.js +61 -61
  149. package/src/components/MlFeatureEditor/lib/constrain_feature_movement.js +51 -51
  150. package/src/components/MlFeatureEditor/lib/create_midpoint.js +30 -30
  151. package/src/components/MlFeatureEditor/lib/create_supplementary_points.js +82 -82
  152. package/src/components/MlFeatureEditor/lib/create_vertex.js +16 -16
  153. package/src/components/MlFeatureEditor/lib/double_click_zoom.js +23 -23
  154. package/src/components/MlFeatureEditor/lib/euclidean_distance.js +3 -3
  155. package/src/components/MlFeatureEditor/lib/features_at.js +23 -23
  156. package/src/components/MlFeatureEditor/lib/get_features_and_set_cursor.js +15 -15
  157. package/src/components/MlFeatureEditor/lib/is_click.js +8 -8
  158. package/src/components/MlFeatureEditor/lib/is_event_at_coordinates.js +2 -2
  159. package/src/components/MlFeatureEditor/lib/is_tap.js +6 -6
  160. package/src/components/MlFeatureEditor/lib/map_event_to_bounding_box.js +4 -4
  161. package/src/components/MlFeatureEditor/lib/mode_handler.js +105 -105
  162. package/src/components/MlFeatureEditor/lib/mouse_event_point.js +5 -5
  163. package/src/components/MlFeatureEditor/lib/move_features.js +33 -33
  164. package/src/components/MlFeatureEditor/lib/sort_features.js +25 -25
  165. package/src/components/MlFeatureEditor/lib/string_set.js +36 -36
  166. package/src/components/MlFeatureEditor/lib/string_sets_are_equal.js +2 -2
  167. package/src/components/MlFeatureEditor/lib/theme.js +230 -230
  168. package/src/components/MlFeatureEditor/lib/to_dense_array.js +1 -1
  169. package/src/components/MlFeatureEditor/lib/utils.js +40 -40
  170. package/src/components/MlFillExtrusionLayer/MlFillExtrusionLayer.stories.js +9 -9
  171. package/src/components/MlFillExtrusionLayer/MlFillExtrusionLayer.test.js +4 -4
  172. package/src/components/MlFillExtrusionLayer/MlFillExtrusionLayer.tsx +65 -65
  173. package/src/components/MlFollowGps/MlFollowGps.stories.js +6 -6
  174. package/src/components/MlFollowGps/MlFollowGps.test.js +44 -44
  175. package/src/components/MlFollowGps/MlFollowGps.tsx +220 -220
  176. package/src/components/MlGPXViewer/MlGPXViewer.stories.js +15 -15
  177. package/src/components/MlGPXViewer/MlGPXViewer.test.js +12 -12
  178. package/src/components/MlGPXViewer/MlGPXViewer.tsx +345 -345
  179. package/src/components/MlGPXViewer/gpxConverter.js +496 -496
  180. package/src/components/MlGPXViewer/util/GeoJsonContext.ts +4 -4
  181. package/src/components/MlGPXViewer/util/GeoJsonProvider.tsx +16 -16
  182. package/src/components/MlGeoJsonLayer/MlGeoJsonLayer.stories.js +34 -34
  183. package/src/components/MlGeoJsonLayer/MlGeoJsonLayer.test.js +8 -8
  184. package/src/components/MlGeoJsonLayer/MlGeoJsonLayer.tsx +84 -84
  185. package/src/components/MlGeoJsonLayer/util/getDefaultLayerTypeByGeometry.ts +21 -21
  186. package/src/components/MlGeoJsonLayer/util/getDefaultPaintPropsByType.ts +27 -27
  187. package/src/components/MlGeojsonLayerWithSource/MlGeojsonLayerWithSource.doc.de.md +3 -0
  188. package/src/components/MlGeojsonLayerWithSource/MlGeojsonLayerWithSource.meta_.json +15 -0
  189. package/src/components/MlGeojsonLayerWithSource/MlGeojsonLayerWithSource.stories.js +19 -0
  190. package/src/components/MlGeojsonLayerWithSource/MlGeojsonLayerWithSource.tsx +128 -0
  191. package/src/components/MlImageMarkerLayer/MlImageMarkerLayer.stories.js +28 -28
  192. package/src/components/MlImageMarkerLayer/MlImageMarkerLayer.test.js +8 -8
  193. package/src/components/MlImageMarkerLayer/MlImageMarkerLayer.tsx +162 -162
  194. package/src/components/MlLayer/MlLayer.stories.js +5 -5
  195. package/src/components/MlLayer/MlLayer.test.js +86 -86
  196. package/src/components/MlLayer/MlLayer.tsx +36 -36
  197. package/src/components/MlLayerMagnify/MlLayerMagnify.stories.js +21 -21
  198. package/src/components/MlLayerMagnify/MlLayerMagnify.test.js +54 -54
  199. package/src/components/MlLayerMagnify/MlLayerMagnify.tsx +201 -201
  200. package/src/components/MlLayerSwipe/MlLayerSwipe.stories.js +20 -20
  201. package/src/components/MlLayerSwipe/MlLayerSwipe.test.js +54 -54
  202. package/src/components/MlLayerSwipe/MlLayerSwipe.tsx +130 -130
  203. package/src/components/MlLayerSwitcher/MlLayerSwitcher.js +194 -194
  204. package/src/components/MlLayerSwitcher/MlLayerSwitcher.stories.js +85 -85
  205. package/src/components/MlLayerSwitcher/components/LayerBox.js +57 -57
  206. package/src/components/MlMarker/MlMarker.stories.js +7 -7
  207. package/src/components/MlMarker/MlMarker.tsx +119 -119
  208. package/src/components/MlMeasureTool/MlMeasureTool.stories.js +64 -64
  209. package/src/components/MlMeasureTool/MlMeasureTool.tsx +38 -38
  210. package/src/components/MlNavigationCompass/MlNavigationCompass.stories.js +45 -45
  211. package/src/components/MlNavigationCompass/MlNavigationCompass.test.js +40 -40
  212. package/src/components/MlNavigationCompass/MlNavigationCompass.tsx +192 -192
  213. package/src/components/MlNavigationTools/MlNavigationTools.stories.js +18 -18
  214. package/src/components/MlNavigationTools/MlNavigationTools.tsx +173 -173
  215. package/src/components/MlOsmLayer/MlOsmLayer.js +49 -49
  216. package/src/components/MlOsmLayer/MlOsmLayer.stories_.js +29 -29
  217. package/src/components/MlOsmLayer/MlOsmLayer.test.js +8 -8
  218. package/src/components/MlScaleReference/MlScaleReference.js +82 -82
  219. package/src/components/MlScaleReference/MlScaleReference.stories.js +33 -35
  220. package/src/components/MlShareMapState/MlShareMapState.js +203 -203
  221. package/src/components/MlShareMapState/MlShareMapState.stories.js +68 -68
  222. package/src/components/MlSpatialElevationProfile/MlSpatialElevationProfile.js +201 -201
  223. package/src/components/MlSpatialElevationProfile/MlSpatialElevationProfile.stories.js +35 -35
  224. package/src/components/MlSpatialElevationProfile/MlSpatialElevationProfile.test.js +8 -8
  225. package/src/components/MlThreeJsLayer/MlThreeJsLayer.js +186 -186
  226. package/src/components/MlThreeJsLayer/MlThreeJsLayer.stories.js +21 -21
  227. package/src/components/MlThreeJsLayer/MlThreeJsLayer.test.js +24 -24
  228. package/src/components/MlThreeJsLayer/lib/GLTFLoader.js +3327 -3327
  229. package/src/components/MlTransitionGeoJsonLayer/MlTransitionGeoJsonLayer.stories.js +31 -30
  230. package/src/components/MlTransitionGeoJsonLayer/MlTransitionGeoJsonLayer.test.js +8 -8
  231. package/src/components/MlTransitionGeoJsonLayer/MlTransitionGeoJsonLayer.tsx +146 -146
  232. package/src/components/MlTransitionGeoJsonLayer/util/transitionFunctions.js +207 -207
  233. package/src/components/MlUseMapDebugger/MlUseMapDebugger.js +52 -52
  234. package/src/components/MlUseMapDebugger/MlUseMapDebugger.stories.js +13 -13
  235. package/src/components/MlVectorTileLayer/MlVectorTileLayer.stories.js +27 -27
  236. package/src/components/MlVectorTileLayer/MlVectorTileLayer.test.js +27 -27
  237. package/src/components/MlVectorTileLayer/MlVectorTileLayer.tsx +137 -137
  238. package/src/components/MlWmsFeatureInfoPopup/MlWmsFeatureInfoPopup.js +34 -34
  239. package/src/components/MlWmsFeatureInfoPopup/MlWmsFeatureInfoPopup.stories.js +7 -7
  240. package/src/components/MlWmsLayer/MlWmsLayer.stories.js +26 -26
  241. package/src/components/MlWmsLayer/MlWmsLayer.test.js +8 -8
  242. package/src/components/MlWmsLayer/MlWmsLayer.tsx +167 -167
  243. package/src/components/MlWmsLoader/MlWmsLoader.stories.js +27 -27
  244. package/src/components/MlWmsLoader/MlWmsLoader.tsx +254 -254
  245. package/src/contexts/MapComponentsProvider.test.js +229 -229
  246. package/src/contexts/MapContext.tsx +65 -65
  247. package/src/contexts/SimpleDataProvider.js +47 -47
  248. package/src/contexts/SimpleDataProvider.test.js +29 -29
  249. package/src/custom.d.tsx +14 -14
  250. package/src/decorators/MapContextDecorator.js +23 -25
  251. package/src/decorators/MapContextDecoratorHooks.js +34 -0
  252. package/src/decorators/MultiMapContextDecorator.js +63 -63
  253. package/src/decorators/NoNavToolsDecorator.js +17 -17
  254. package/src/decorators/ThemeWrapper.jsx +9 -0
  255. package/src/hooks/assets/pointWG.json +13 -0
  256. package/src/hooks/exportMap/index.ts +30 -0
  257. package/src/hooks/exportMap/lib.ts +187 -0
  258. package/src/hooks/useLayer.test.js +188 -188
  259. package/src/hooks/useLayer.ts +194 -180
  260. package/src/hooks/useLayerEvent.js +49 -0
  261. package/src/hooks/useMap.ts +67 -66
  262. package/src/hooks/useMapState.stories.js +78 -78
  263. package/src/hooks/useMapState.ts +161 -161
  264. package/src/hooks/useSource.ts +84 -0
  265. package/src/hooks/useSources.stories.js +232 -0
  266. package/src/hooks/useWms.js +71 -71
  267. package/src/index.ts +4 -0
  268. package/src/setupTests.js +86 -86
  269. package/src/ui_components/ImageLoader.js +62 -62
  270. package/src/ui_components/Legend.js +34 -34
  271. package/src/ui_components/LoadingOverlay.js +29 -29
  272. package/src/ui_components/LoadingOverlayContext.js +68 -68
  273. package/src/ui_components/Sidebar.js +80 -80
  274. package/src/ui_components/Tooltip.js +9 -9
  275. package/src/ui_components/TopToolbar.js +23 -23
  276. package/src/util/layerRemovalTest.js +111 -111
  277. package/src/util/sourceRemovalTest.js +103 -103
@@ -9,66 +9,66 @@ import useMapState from "../../../hooks/useMapState";
9
9
  *
10
10
  */
11
11
  const LayerBox = (props) => {
12
- const { layers } = useMapState({
13
- mapId: props.mapId,
14
- watch: {
15
- viewport: false,
16
- layers: true,
17
- sources: false,
18
- },
19
- filter: {
20
- matchLayerIds: props.layerId,
21
- },
22
- });
23
- const width = "40px";
12
+ const { layers } = useMapState({
13
+ mapId: props.mapId,
14
+ watch: {
15
+ viewport: false,
16
+ layers: true,
17
+ sources: false,
18
+ },
19
+ filter: {
20
+ matchLayerIds: props.layerId,
21
+ },
22
+ });
23
+ const width = "40px";
24
24
 
25
- const defaultClass = css`
26
- & img:hover {
27
- }
28
- `;
25
+ const defaultClass = css`
26
+ & img:hover {
27
+ }
28
+ `;
29
29
 
30
- return (
31
- <>
32
- <Box
33
- key={props.layerId}
34
- className={defaultClass}
35
- sx={{
36
- width,
37
- height: "53px",
38
- justifyContent: "center",
39
- py: 0.25,
40
- px: "1rem",
41
- cursor: "pointer",
42
- }}
43
- onClick={() => {
44
- props?.handleLayerBoxClick?.(props.layerId);
45
- }}
46
- >
47
- <ImageLoader
48
- style={{
49
- border: "2px solid " + (layers?.[0]?.visible ? "#64c864" : "#fd720f"),
50
- borderRadius: "8px",
51
- height: "40px",
52
- width: "40px",
53
- }}
54
- src={props.thumbnail}
55
- />
30
+ return (
31
+ <>
32
+ <Box
33
+ key={props.layerId}
34
+ className={defaultClass}
35
+ sx={{
36
+ width,
37
+ height: "53px",
38
+ justifyContent: "center",
39
+ py: 0.25,
40
+ px: "1rem",
41
+ cursor: "pointer",
42
+ }}
43
+ onClick={() => {
44
+ props?.handleLayerBoxClick?.(props.layerId);
45
+ }}
46
+ >
47
+ <ImageLoader
48
+ style={{
49
+ border: "2px solid " + (layers?.[0]?.visible ? "#64c864" : "#fd720f"),
50
+ borderRadius: "8px",
51
+ height: "40px",
52
+ width: "40px",
53
+ }}
54
+ src={props.thumbnail}
55
+ />
56
56
 
57
- <div
58
- className="mllayerswitcher-layer-text"
59
- style={{
60
- textAlign: "center",
61
- color: "rgb(112, 117, 122)",
62
- fontFamily: "Roboto, Arial",
63
- width,
64
- fontSize: "0.60rem",
65
- }}
66
- >
67
- {props.label}
68
- </div>
69
- </Box>
70
- </>
71
- );
57
+ <div
58
+ className="mllayerswitcher-layer-text"
59
+ style={{
60
+ textAlign: "center",
61
+ color: "rgb(112, 117, 122)",
62
+ fontFamily: "Roboto, Arial",
63
+ width,
64
+ fontSize: "0.60rem",
65
+ }}
66
+ >
67
+ {props.label}
68
+ </div>
69
+ </Box>
70
+ </>
71
+ );
72
72
  };
73
73
 
74
74
  export default LayerBox;
@@ -5,9 +5,9 @@ import MlMarker from "./MlMarker";
5
5
  import mapContextDecorator from "../../decorators/MapContextDecorator";
6
6
 
7
7
  const storyoptions = {
8
- title: "MapComponents/MlMarker",
9
- component: MlMarker,
10
- decorators: mapContextDecorator,
8
+ title: "MapComponents/MlMarker",
9
+ component: MlMarker,
10
+ decorators: mapContextDecorator,
11
11
  };
12
12
  export default storyoptions;
13
13
 
@@ -15,8 +15,8 @@ const Template = (args) => <MlMarker {...args}/>;
15
15
 
16
16
  export const ExampleConfig = Template.bind({});
17
17
  ExampleConfig.args = {
18
- content: 'WhereGroup',
19
- lng: 7.0851268,
20
- lat: 50.73884,
21
- mapId: 'map_1',
18
+ content: 'WhereGroup',
19
+ lng: 7.0851268,
20
+ lat: 50.73884,
21
+ mapId: 'map_1',
22
22
  };
@@ -7,134 +7,134 @@ import useMap from "../../hooks/useMap";
7
7
  import Point from "@mapbox/point-geometry";
8
8
 
9
9
  interface MlMarkerProps {
10
- /**
11
- * Id of the target MapLibre instance in mapContext
12
- */
13
- mapId?: string;
14
- /**
15
- * The layerId of an existing layer this layer should be rendered visually beneath
16
- * https://maplibre.org/maplibre-gl-js-docs/api/map/#map#addlayer - see "beforeId" property
17
- */
18
- insertBeforeLayer?: string;
19
- /**
20
- * Longitude of the marker position
21
- */
22
- lng: number;
23
- /**
24
- * Latitude of the marker position
25
- */
26
- lat: number;
27
- /**
28
- * Content of the description popup
29
- */
30
- content?: string;
10
+ /**
11
+ * Id of the target MapLibre instance in mapContext
12
+ */
13
+ mapId?: string;
14
+ /**
15
+ * The layerId of an existing layer this layer should be rendered visually beneath
16
+ * https://maplibre.org/maplibre-gl-js-docs/api/map/#map#addlayer - see "beforeId" property
17
+ */
18
+ insertBeforeLayer?: string;
19
+ /**
20
+ * Longitude of the marker position
21
+ */
22
+ lng: number;
23
+ /**
24
+ * Latitude of the marker position
25
+ */
26
+ lat: number;
27
+ /**
28
+ * Content of the description popup
29
+ */
30
+ content?: string;
31
31
  }
32
32
 
33
33
  /**
34
34
  * Adds a marker to the map and displays the contents of the "content" property in an iframe next to it
35
35
  */
36
36
  const MlMarker = (props: MlMarkerProps) => {
37
- const mapHook = useMap({
38
- mapId: props.mapId,
39
- waitForLayer: props.insertBeforeLayer,
40
- });
41
-
42
- const mapState = useMapState({
43
- mapId: props.mapId,
44
- watch: { viewport: true },
45
- });
46
-
47
- const iframe = useRef<HTMLIFrameElement>(null);
48
-
49
- const [iframeDimensions, setIframeDimensions] = useState({
50
- width: "400px",
51
- height: "500px",
52
- });
53
-
54
- const [markerPixelPos, setMarkerPixelPos] = useState<Point>();
55
-
56
- useEffect(() => {
57
- if (!mapHook.map?.map?.project) return;
58
-
59
- const _pixelPos = mapHook.map.map.project([props.lng, props.lat]);
60
-
61
- setMarkerPixelPos(_pixelPos);
62
- }, [mapHook.map, props.lng, props.lat, mapState.viewport]);
63
-
64
- useEffect(() => {
65
- if (
66
- !mapHook.map ||
67
- !iframe.current?.contentWindow?.document?.body?.scrollHeight
68
- )
69
- return;
70
-
71
- let mapHeight = mapHook.map.map._container.clientHeight;
72
-
73
- const _pixelPos = mapHook.map.map.project([props.lng, props.lat]);
74
- let pixelToBottom = mapHeight - _pixelPos.y;
75
- let iframeHeight =
76
- iframe.current?.contentWindow?.document?.body?.scrollHeight;
77
- let iframeWidth =
78
- iframe.current?.contentWindow?.document?.body?.scrollWidth;
79
-
80
- setIframeDimensions({
81
- width: iframeWidth + "px",
82
- height:
83
- (pixelToBottom < iframeHeight ? pixelToBottom : iframeHeight) + "px",
84
- });
85
- }, [props.lng, props.lat, props.content]);
86
-
87
- return (
88
- <>
89
- <MlGeoJsonLayer
90
- geojson={{
91
- type: "Feature",
92
- geometry: {
93
- type: "Point",
94
- coordinates: [props.lng, props.lat],
95
- },
96
- properties: {},
97
- }}
98
- paint={{
99
- "circle-radius": 14,
100
- "circle-color": "rgba(40,200,20,0.5)",
101
- }}
102
- type="circle"
103
- mapId={props.mapId}
104
- ></MlGeoJsonLayer>
105
- {markerPixelPos && (
106
- <Paper
107
- sx={{
108
- opacity: 0.7,
109
- position: "fixed",
110
- display: "flex",
111
- /** TODO: fix positioning delay when moving the map */
112
- left: markerPixelPos.x,
113
- top: markerPixelPos.y,
114
- width: iframeDimensions.width,
115
- height: iframeDimensions.height,
116
- "&:hover": {
117
- opacity: 1,
118
- },
119
- zIndex: -1,
120
- }}
121
- >
122
- <iframe
123
- style={{ width: "100%" }}
124
- srcDoc={props.content}
125
- ref={iframe}
126
- sandbox="allow-same-origin allow-popups-to-escape-sandbox"
127
- frameBorder="0"
128
- title={mapHook.componentId}
129
- ></iframe>
130
- </Paper>
131
- )}
132
- </>
133
- );
37
+ const mapHook = useMap({
38
+ mapId: props.mapId,
39
+ waitForLayer: props.insertBeforeLayer,
40
+ });
41
+
42
+ const mapState = useMapState({
43
+ mapId: props.mapId,
44
+ watch: { viewport: true },
45
+ });
46
+
47
+ const iframe = useRef<HTMLIFrameElement>(null);
48
+
49
+ const [iframeDimensions, setIframeDimensions] = useState({
50
+ width: "400px",
51
+ height: "500px",
52
+ });
53
+
54
+ const [markerPixelPos, setMarkerPixelPos] = useState<Point>();
55
+
56
+ useEffect(() => {
57
+ if (!mapHook.map?.map?.project) return;
58
+
59
+ const _pixelPos = mapHook.map.map.project([props.lng, props.lat]);
60
+
61
+ setMarkerPixelPos(_pixelPos);
62
+ }, [mapHook.map, props.lng, props.lat, mapState.viewport]);
63
+
64
+ useEffect(() => {
65
+ if (
66
+ !mapHook.map ||
67
+ !iframe.current?.contentWindow?.document?.body?.scrollHeight
68
+ )
69
+ return;
70
+
71
+ let mapHeight = mapHook.map.map._container.clientHeight;
72
+
73
+ const _pixelPos = mapHook.map.map.project([props.lng, props.lat]);
74
+ let pixelToBottom = mapHeight - _pixelPos.y;
75
+ let iframeHeight =
76
+ iframe.current?.contentWindow?.document?.body?.scrollHeight;
77
+ let iframeWidth =
78
+ iframe.current?.contentWindow?.document?.body?.scrollWidth;
79
+
80
+ setIframeDimensions({
81
+ width: iframeWidth + "px",
82
+ height:
83
+ (pixelToBottom < iframeHeight ? pixelToBottom : iframeHeight) + "px",
84
+ });
85
+ }, [props.lng, props.lat, props.content]);
86
+
87
+ return (
88
+ <>
89
+ <MlGeoJsonLayer
90
+ geojson={{
91
+ type: "Feature",
92
+ geometry: {
93
+ type: "Point",
94
+ coordinates: [props.lng, props.lat],
95
+ },
96
+ properties: {},
97
+ }}
98
+ paint={{
99
+ "circle-radius": 14,
100
+ "circle-color": "rgba(40,200,20,0.5)",
101
+ }}
102
+ type="circle"
103
+ mapId={props.mapId}
104
+ ></MlGeoJsonLayer>
105
+ {markerPixelPos && (
106
+ <Paper
107
+ sx={{
108
+ opacity: 0.7,
109
+ position: "fixed",
110
+ display: "flex",
111
+ /** TODO: fix positioning delay when moving the map */
112
+ left: markerPixelPos.x,
113
+ top: markerPixelPos.y,
114
+ width: iframeDimensions.width,
115
+ height: iframeDimensions.height,
116
+ "&:hover": {
117
+ opacity: 1,
118
+ },
119
+ zIndex: -1,
120
+ }}
121
+ >
122
+ <iframe
123
+ style={{ width: "100%" }}
124
+ srcDoc={props.content}
125
+ ref={iframe}
126
+ sandbox="allow-same-origin allow-popups-to-escape-sandbox"
127
+ frameBorder="0"
128
+ title={mapHook.componentId}
129
+ ></iframe>
130
+ </Paper>
131
+ )}
132
+ </>
133
+ );
134
134
  };
135
135
 
136
136
  MlMarker.defaultProps = {
137
- mapId: undefined,
137
+ mapId: undefined,
138
138
  };
139
139
 
140
140
  export default MlMarker;
@@ -10,81 +10,81 @@ import Box from "@mui/material/Box";
10
10
  import { MenuItem, Select } from "@mui/material";
11
11
 
12
12
  const storyoptions = {
13
- title: "MapComponents/MlMeasureTool",
14
- component: MlMeasureTool,
15
- argTypes: {},
16
- decorators: mapContextDecorator,
13
+ title: "MapComponents/MlMeasureTool",
14
+ component: MlMeasureTool,
15
+ argTypes: {},
16
+ decorators: mapContextDecorator,
17
17
  };
18
18
  export default storyoptions;
19
19
 
20
20
  const Template = (args) => {
21
- const [unit, setUnit] = useState("kilometers");
22
- const handleChange = (event) => {
23
- setUnit(event.target.value);
24
- };
21
+ const [unit, setUnit] = useState("kilometers");
22
+ const handleChange = (event) => {
23
+ setUnit(event.target.value);
24
+ };
25
25
 
26
- return (
27
- <div style={{ width: "200px", position: "absolute", zIndex: 105 }}>
28
- <Select
29
- name={"units"}
30
- onChange={handleChange}
31
- label={"Unit for measurement"}
32
- defaultValue={"kilometers"}
33
- >
34
- <MenuItem value={"kilometers"}>Kilometers</MenuItem>
35
- <MenuItem value={"miles"}>Miles</MenuItem>
36
- </Select>
37
- <Grid
38
- container
39
- style={{
40
- textAlign: "left",
41
- alignItems: "center",
42
- }}
43
- >
44
- <SquareFootOutlinedIcon />
45
- <h4 style={{ margin: "0px" }}>Measure Polygon</h4>
46
- </Grid>
26
+ return (
27
+ <div style={{ width: "200px", position: "absolute", zIndex: 105 }}>
28
+ <Select
29
+ name={"units"}
30
+ onChange={handleChange}
31
+ label={"Unit for measurement"}
32
+ defaultValue={"kilometers"}
33
+ >
34
+ <MenuItem value={"kilometers"}>Kilometers</MenuItem>
35
+ <MenuItem value={"miles"}>Miles</MenuItem>
36
+ </Select>
37
+ <Grid
38
+ container
39
+ style={{
40
+ textAlign: "left",
41
+ alignItems: "center",
42
+ }}
43
+ >
44
+ <SquareFootOutlinedIcon />
45
+ <h4 style={{ margin: "0px" }}>Measure Polygon</h4>
46
+ </Grid>
47
47
 
48
- <Box m={2} style={{ textAlign: "left" }}>
49
- Area: <MlMeasureTool measureType={"polygon"} unit={unit} />
50
- </Box>
51
- </div>
52
- );
48
+ <Box m={2} style={{ textAlign: "left" }}>
49
+ Area: <MlMeasureTool measureType={"polygon"} unit={unit} />
50
+ </Box>
51
+ </div>
52
+ );
53
53
  };
54
54
 
55
55
  const LineTemplate = (args) => {
56
- const [unit, setUnit] = useState("kilometers");
57
- const handleChange = (event) => {
58
- setUnit(event.target.value);
59
- };
56
+ const [unit, setUnit] = useState("kilometers");
57
+ const handleChange = (event) => {
58
+ setUnit(event.target.value);
59
+ };
60
60
 
61
- return (
62
- <div style={{ width: "200px", position: "absolute", zIndex: 105 }}>
63
- <Select
64
- name={"units"}
65
- onChange={handleChange}
66
- label={"Unit for measurement"}
67
- defaultValue={"kilometers"}
68
- >
69
- <MenuItem value={"kilometers"}> Kilometers</MenuItem>
70
- <MenuItem value={"miles"}> Miles</MenuItem>
71
- </Select>
72
- <Grid
73
- container
74
- style={{
75
- textAlign: "left",
76
- alignItems: "center",
77
- }}
78
- >
79
- <StraightenOutlinedIcon />
80
- <h4 style={{ margin: "0px" }}>Measure Line</h4>
81
- </Grid>
61
+ return (
62
+ <div style={{ width: "200px", position: "absolute", zIndex: 105 }}>
63
+ <Select
64
+ name={"units"}
65
+ onChange={handleChange}
66
+ label={"Unit for measurement"}
67
+ defaultValue={"kilometers"}
68
+ >
69
+ <MenuItem value={"kilometers"}> Kilometers</MenuItem>
70
+ <MenuItem value={"miles"}> Miles</MenuItem>
71
+ </Select>
72
+ <Grid
73
+ container
74
+ style={{
75
+ textAlign: "left",
76
+ alignItems: "center",
77
+ }}
78
+ >
79
+ <StraightenOutlinedIcon />
80
+ <h4 style={{ margin: "0px" }}>Measure Line</h4>
81
+ </Grid>
82
82
 
83
- <Box m={2} style={{ textAlign: "left" }}>
84
- Length: <MlMeasureTool measureType={"line"} unit={unit} />
85
- </Box>
86
- </div>
87
- );
83
+ <Box m={2} style={{ textAlign: "left" }}>
84
+ Length: <MlMeasureTool measureType={"line"} unit={unit} />
85
+ </Box>
86
+ </div>
87
+ );
88
88
  };
89
89
 
90
90
  export const MeasureLine = LineTemplate.bind({});
@@ -3,58 +3,58 @@ import MlFeatureEditor from "../MlFeatureEditor/MlFeatureEditor";
3
3
  import * as turf from "@turf/turf";
4
4
 
5
5
  interface MlMeasureToolProps {
6
- /**
7
- * String that specify if the Tool measures an area ("polygon") or length ("line")
8
- */
9
- measureType?: string;
10
- /**
11
- * String that dictates which unit of measurement is used
12
- */
13
- unit?: turf.Units;
6
+ /**
7
+ * String that specify if the Tool measures an area ("polygon") or length ("line")
8
+ */
9
+ measureType?: string;
10
+ /**
11
+ * String that dictates which unit of measurement is used
12
+ */
13
+ unit?: turf.Units;
14
14
  }
15
15
 
16
16
  //const unitSquareConvert = {
17
- // kilometers: 1,
18
- // miles: 1 / 2.58998811,
17
+ // kilometers: 1,
18
+ // miles: 1 / 2.58998811,
19
19
  //};
20
20
  function getUnitSquareMultiplier(measureType:string | undefined) {
21
- return measureType === "miles" ? 1 / 2.58998811 : 1;
21
+ return measureType === "miles" ? 1 / 2.58998811 : 1;
22
22
  }
23
23
  function getUnitLabel(measureType:string | undefined) {
24
- return measureType === "miles" ? 'mi' : 'km';
24
+ return measureType === "miles" ? 'mi' : 'km';
25
25
  }
26
26
 
27
27
  const MlMeasureTool = (props: MlMeasureToolProps) => {
28
- const [length, setLength] = useState(0);
29
- const [currentFeatures, setCurrentFeatures] = useState([undefined]);
28
+ const [length, setLength] = useState(0);
29
+ const [currentFeatures, setCurrentFeatures] = useState([undefined]);
30
30
 
31
- useEffect(() => {
32
- if (currentFeatures[0]) {
33
- setLength(
34
- props.measureType === "polygon"
35
- ? (turf.area(currentFeatures[0]) / 1000000) * getUnitSquareMultiplier(props.unit)
36
- : turf.length(currentFeatures[0], { units: props.unit })
37
- );
38
- }
39
- }, [props.unit, currentFeatures]);
31
+ useEffect(() => {
32
+ if (currentFeatures[0]) {
33
+ setLength(
34
+ props.measureType === "polygon"
35
+ ? (turf.area(currentFeatures[0]) / 1000000) * getUnitSquareMultiplier(props.unit)
36
+ : turf.length(currentFeatures[0], { units: props.unit })
37
+ );
38
+ }
39
+ }, [props.unit, currentFeatures]);
40
40
 
41
- return (
42
- <>
43
- <MlFeatureEditor
44
- onChange={(features:any) => {
45
- setCurrentFeatures(features);
46
- }}
47
- mode={props.measureType === "polygon" ? "custom_polygon" : "draw_line_string"}
48
- />
49
- {length.toFixed(2)} {getUnitLabel(props.unit)}
50
- {props.measureType === "polygon" ? "²" : ""}
51
- </>
52
- );
41
+ return (
42
+ <>
43
+ <MlFeatureEditor
44
+ onChange={(features:any) => {
45
+ setCurrentFeatures(features);
46
+ }}
47
+ mode={props.measureType === "polygon" ? "custom_polygon" : "draw_line_string"}
48
+ />
49
+ {length.toFixed(2)} {getUnitLabel(props.unit)}
50
+ {props.measureType === "polygon" ? "²" : ""}
51
+ </>
52
+ );
53
53
  };
54
54
 
55
55
  MlMeasureTool.defaultProps = {
56
- mapId: undefined,
57
- measureType: "line",
58
- unit: "kilometers",
56
+ mapId: undefined,
57
+ measureType: "line",
58
+ unit: "kilometers",
59
59
  };
60
60
  export default MlMeasureTool;