@mapcomponents/react-maplibre 0.1.33 → 0.1.36

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 (305) hide show
  1. package/.babelrc +3 -0
  2. package/.github/workflows/storybook.yml +1 -1
  3. package/.storybook/.babelrc +26 -0
  4. package/.storybook/main.js +15 -1
  5. package/.storybook/mapcomponents_logo.png +0 -0
  6. package/CHANGELOG.md +10 -0
  7. package/config/env.js +106 -0
  8. package/config/getHttpsConfig.js +66 -0
  9. package/config/jest/babelTransform.js +29 -0
  10. package/config/jest/cssTransform.js +14 -0
  11. package/config/jest/fileTransform.js +40 -0
  12. package/config/modules.js +134 -0
  13. package/config/paths.js +75 -0
  14. package/config/pnpTs.js +35 -0
  15. package/config/webpack.config.js +757 -0
  16. package/config/webpackDevServer.config.js +130 -0
  17. package/coverage/clover.xml +822 -900
  18. package/coverage/coverage-final.json +23 -24
  19. package/coverage/lcov-report/index.html +135 -150
  20. package/coverage/lcov-report/src/components/MapLibreMap/{MapLibreMap.js.html → MapLibreMap.tsx.html} +77 -68
  21. package/coverage/lcov-report/src/components/MapLibreMap/index.html +6 -6
  22. package/coverage/lcov-report/src/components/MlCreatePdfButton/{MlCreatePdfButton.js.html → MlCreatePdfButton.tsx.html} +40 -43
  23. package/coverage/lcov-report/src/components/MlCreatePdfButton/index.html +10 -10
  24. package/coverage/lcov-report/src/components/MlFeatureEditor/{MlFeatureEditor.js.html → MlFeatureEditor.tsx.html} +145 -85
  25. package/coverage/lcov-report/src/components/MlFeatureEditor/index.html +21 -21
  26. package/coverage/lcov-report/src/components/{MlImageMarkerLayer/MlImageMarkerLayer.js.html → MlFillExtrusionLayer/MlFillExtrusionLayer.tsx.html} +141 -111
  27. package/coverage/lcov-report/src/components/MlFillExtrusionLayer/index.html +20 -20
  28. package/coverage/lcov-report/src/components/MlFollowGps/{MlFollowGps.js.html → MlFollowGps.tsx.html} +177 -138
  29. package/coverage/lcov-report/src/components/MlFollowGps/index.html +15 -15
  30. package/coverage/lcov-report/src/components/MlGPXViewer/{MlGPXViewer.js.html → MlGPXViewer.tsx.html} +134 -80
  31. package/coverage/lcov-report/src/components/MlGPXViewer/gpxConverter.js.html +1 -1
  32. package/coverage/lcov-report/src/components/MlGPXViewer/index.html +16 -16
  33. package/coverage/lcov-report/src/components/{MlLayer/MlLayer.js.html → MlGeoJsonLayer/MlGeoJsonLayer.tsx.html} +151 -154
  34. package/coverage/lcov-report/src/components/MlGeoJsonLayer/index.html +19 -19
  35. package/coverage/lcov-report/src/components/{MlFillExtrusionLayer/MlFillExtrusionLayer.js.html → MlImageMarkerLayer/MlImageMarkerLayer.tsx.html} +151 -223
  36. package/coverage/lcov-report/src/components/MlImageMarkerLayer/index.html +16 -16
  37. package/coverage/lcov-report/src/components/MlLayer/MlLayer.tsx.html +229 -0
  38. package/coverage/lcov-report/src/components/MlLayer/index.html +21 -21
  39. package/coverage/lcov-report/src/components/MlLayerMagnify/{MlLayerMagnify.js.html → MlLayerMagnify.tsx.html} +134 -77
  40. package/coverage/lcov-report/src/components/MlLayerMagnify/index.html +20 -20
  41. package/coverage/lcov-report/src/components/MlLayerSwipe/{MlLayerSwipe.js.html → MlLayerSwipe.tsx.html} +83 -41
  42. package/coverage/lcov-report/src/components/MlLayerSwipe/index.html +2 -2
  43. package/coverage/lcov-report/src/components/MlLayerSwitcher/MlLayerSwitcher.js.html +3 -15
  44. package/coverage/lcov-report/src/components/MlLayerSwitcher/components/LayerBox.js.html +1 -1
  45. package/coverage/lcov-report/src/components/MlLayerSwitcher/components/index.html +1 -1
  46. package/coverage/lcov-report/src/components/MlLayerSwitcher/index.html +1 -1
  47. package/coverage/lcov-report/src/components/MlMarker/{MlMarker.js.html → MlMarker.tsx.html} +89 -137
  48. package/coverage/lcov-report/src/components/MlMarker/index.html +10 -10
  49. package/coverage/lcov-report/src/components/MlNavigationCompass/{MlNavigationCompass.js.html → MlNavigationCompass.tsx.html} +76 -25
  50. package/coverage/lcov-report/src/components/MlNavigationCompass/index.html +17 -17
  51. package/coverage/lcov-report/src/components/MlNavigationTools/{MlNavigationTools.js.html → MlNavigationTools.tsx.html} +67 -52
  52. package/coverage/lcov-report/src/components/MlNavigationTools/index.html +10 -10
  53. package/coverage/lcov-report/src/components/MlOsmLayer/MlOsmLayer.js.html +1 -1
  54. package/coverage/lcov-report/src/components/MlOsmLayer/index.html +1 -1
  55. package/coverage/lcov-report/src/components/MlScaleReference/MlScaleReference.js.html +1 -1
  56. package/coverage/lcov-report/src/components/MlScaleReference/index.html +1 -1
  57. package/coverage/lcov-report/src/components/MlShareMapState/MlShareMapState.js.html +1 -1
  58. package/coverage/lcov-report/src/components/MlShareMapState/index.html +1 -1
  59. package/coverage/lcov-report/src/components/MlSpatialElevationProfile/MlSpatialElevationProfile.js.html +3 -3
  60. package/coverage/lcov-report/src/components/MlSpatialElevationProfile/index.html +1 -1
  61. package/coverage/lcov-report/src/components/MlThreeJsLayer/MlThreeJsLayer.js.html +5 -5
  62. package/coverage/lcov-report/src/components/MlThreeJsLayer/index.html +1 -1
  63. package/coverage/lcov-report/src/components/MlTransitionGeoJsonLayer/{MlTransitionGeoJsonLayer.js.html → MlTransitionGeoJsonLayer.tsx.html} +127 -118
  64. package/coverage/lcov-report/src/components/MlTransitionGeoJsonLayer/index.html +11 -11
  65. package/coverage/lcov-report/src/components/MlUseMapDebugger/MlUseMapDebugger.js.html +1 -1
  66. package/coverage/lcov-report/src/components/MlUseMapDebugger/index.html +1 -1
  67. package/coverage/lcov-report/src/components/MlVectorTileLayer/{MlVectorTileLayer.js.html → MlVectorTileLayer.tsx.html} +59 -11
  68. package/coverage/lcov-report/src/components/MlVectorTileLayer/index.html +2 -2
  69. package/coverage/lcov-report/src/components/MlWmsFeatureInfoPopup/MlWmsFeatureInfoPopup.js.html +1 -1
  70. package/coverage/lcov-report/src/components/MlWmsFeatureInfoPopup/index.html +1 -1
  71. package/coverage/lcov-report/src/components/MlWmsLayer/{MlWmsLayer.js.html → MlWmsLayer.tsx.html} +56 -11
  72. package/coverage/lcov-report/src/components/MlWmsLayer/index.html +2 -2
  73. package/coverage/lcov-report/src/components/MlWmsLoader/{MlWmsLoader.js.html → MlWmsLoader.tsx.html} +102 -78
  74. package/coverage/lcov-report/src/components/MlWmsLoader/index.html +8 -8
  75. package/coverage/lcov-report/src/hooks/index.html +44 -29
  76. package/coverage/lcov-report/src/{components/MlGeoJsonLayer/MlGeoJsonLayer.js.html → hooks/useLayer.ts.html} +328 -184
  77. package/coverage/lcov-report/src/hooks/{useMap.js.html → useMap.ts.html} +140 -50
  78. package/coverage/lcov-report/src/hooks/{useMapState.js.html → useMapState.ts.html} +166 -61
  79. package/coverage/lcov-report/src/hooks/useWms.js.html +1 -1
  80. package/coverage/lcov-report/src/index.html +15 -15
  81. package/coverage/lcov-report/src/{i18n.js.html → index.ts.html} +50 -32
  82. package/coverage/lcov.info +1540 -1669
  83. package/dist/index.esm.css +195 -0
  84. package/dist/index.esm.js +17059 -4275
  85. package/dist/index.esm.js.map +1 -1
  86. package/docs-build/0.d0c23b79.iframe.bundle.js +2 -0
  87. package/docs-build/0.d0c23b79.iframe.bundle.js.map +1 -0
  88. package/docs-build/0.fd1aa3ea21956d993519.manager.bundle.js +1 -0
  89. package/docs-build/1.34075652.iframe.bundle.js +10 -0
  90. package/docs-build/1.34075652.iframe.bundle.js.map +1 -0
  91. package/docs-build/16.ca488dae.iframe.bundle.js +2 -0
  92. package/docs-build/16.ca488dae.iframe.bundle.js.map +1 -0
  93. package/docs-build/17.e40eac7f.iframe.bundle.js +17 -0
  94. package/docs-build/17.e40eac7f.iframe.bundle.js.map +1 -0
  95. package/docs-build/18.62af0912.iframe.bundle.js +14 -0
  96. package/docs-build/18.62af0912.iframe.bundle.js.map +1 -0
  97. package/docs-build/19.0a217189.iframe.bundle.js +2 -0
  98. package/docs-build/19.0a217189.iframe.bundle.js.map +1 -0
  99. package/docs-build/2.f15ae19a.iframe.bundle.js +2 -0
  100. package/docs-build/2.f15ae19a.iframe.bundle.js.map +1 -0
  101. package/docs-build/20.4c43e27c.iframe.bundle.js +4 -0
  102. package/docs-build/20.4c43e27c.iframe.bundle.js.map +1 -0
  103. package/docs-build/21.19c21085.iframe.bundle.js +22 -0
  104. package/docs-build/21.19c21085.iframe.bundle.js.map +1 -0
  105. package/docs-build/3.5dd9e88b.iframe.bundle.js +2 -0
  106. package/docs-build/3.5dd9e88b.iframe.bundle.js.map +1 -0
  107. package/docs-build/4.f741dafe1833630ec8bf.manager.bundle.js +2 -0
  108. package/docs-build/4.f741dafe1833630ec8bf.manager.bundle.js.LICENSE.txt +8 -0
  109. package/docs-build/5.d4de191e7daeefb036ca.manager.bundle.js +1 -0
  110. package/docs-build/6.2b178c5444648ee5c0fa.manager.bundle.js +2 -0
  111. package/docs-build/6.2b178c5444648ee5c0fa.manager.bundle.js.LICENSE.txt +12 -0
  112. package/docs-build/7.7c16aea8ec7ea6e91994.manager.bundle.js +1 -0
  113. package/docs-build/8.52fa838fdf937b29676a.manager.bundle.js +1 -0
  114. package/docs-build/assets/dop.png +0 -0
  115. package/docs-build/assets/historic.png +0 -0
  116. package/docs-build/assets/marker.png +0 -0
  117. package/docs-build/assets/osm.png +0 -0
  118. package/docs-build/assets/sample.gpx +716 -0
  119. package/docs-build/{.gitkeep → catalogue/.gitkeep} +0 -0
  120. package/docs-build/catalogue/mc_meta.json +1 -0
  121. package/docs-build/favicon.ico +0 -0
  122. package/docs-build/iframe.html +348 -0
  123. package/docs-build/index.html +59 -0
  124. package/docs-build/logo.png +0 -0
  125. package/docs-build/main.8a7ec710ea1c16b5e13f.manager.bundle.js +1 -0
  126. package/docs-build/main~24120820.ba6665a8.iframe.bundle.js +2 -0
  127. package/docs-build/main~24120820.ba6665a8.iframe.bundle.js.map +1 -0
  128. package/docs-build/manifest.json +25 -0
  129. package/docs-build/robots.txt +3 -0
  130. package/docs-build/runtime~main.67aa1de2d72f40a81164.manager.bundle.js +1 -0
  131. package/docs-build/static/media/mapcomponents_logo.98b01a05.png +0 -0
  132. package/docs-build/static/media/wg-marker.bf3eeb2d.png +0 -0
  133. package/docs-build/stories.json +331 -0
  134. package/docs-build/thumbnails/MapLibreMap.png +0 -0
  135. package/docs-build/thumbnails/MlCameraFollowPath.png +0 -0
  136. package/docs-build/thumbnails/MlCreatePdfButton.png +0 -0
  137. package/docs-build/thumbnails/MlDeckGlLayer.png +0 -0
  138. package/docs-build/thumbnails/MlDeckGlTerrainLayer.png +0 -0
  139. package/docs-build/thumbnails/MlDemoDashboard.png +0 -0
  140. package/docs-build/thumbnails/MlFeatureEditor.png +0 -0
  141. package/docs-build/thumbnails/MlFillExtrusionLayer.png +0 -0
  142. package/docs-build/thumbnails/MlFollowGps.png +0 -0
  143. package/docs-build/thumbnails/MlGPXViewer.png +0 -0
  144. package/docs-build/thumbnails/MlGeoJsonLayer.png +0 -0
  145. package/docs-build/thumbnails/MlHillshadeLayer.png +0 -0
  146. package/docs-build/thumbnails/MlIconLayer.png +0 -0
  147. package/docs-build/thumbnails/MlLaermkarte.png +0 -0
  148. package/docs-build/thumbnails/MlLayerMagnify.png +0 -0
  149. package/docs-build/thumbnails/MlLayerSwipe.png +0 -0
  150. package/docs-build/thumbnails/MlMapDrawTools.png +0 -0
  151. package/docs-build/thumbnails/MlMobilerImker.png +0 -0
  152. package/docs-build/thumbnails/MlNavigationCompass.png +0 -0
  153. package/docs-build/thumbnails/MlNavigationTools.png +0 -0
  154. package/docs-build/thumbnails/MlOsmLayer.png +0 -0
  155. package/docs-build/thumbnails/MlScaleReference.png +0 -0
  156. package/docs-build/thumbnails/MlSpatialElevationProfile.png +0 -0
  157. package/docs-build/thumbnails/MlThreeJsLayer.png +0 -0
  158. package/docs-build/thumbnails/MlTransitionGeoJsonLayer.png +0 -0
  159. package/docs-build/thumbnails/MlVectorTileLayer.png +0 -0
  160. package/docs-build/thumbnails/MlWanderApp.png +0 -0
  161. package/docs-build/thumbnails/MlWmsLayer.png +0 -0
  162. package/docs-build/thumbnails/MlWmsLoader.png +0 -0
  163. package/docs-build/vendors~main.351900838c49e9200954.manager.bundle.js +2 -0
  164. package/docs-build/vendors~main.351900838c49e9200954.manager.bundle.js.LICENSE.txt +101 -0
  165. package/docs-build/vendors~main~0ad7406a.a6abfed7.iframe.bundle.js +8 -0
  166. package/docs-build/vendors~main~0ad7406a.a6abfed7.iframe.bundle.js.map +1 -0
  167. package/docs-build/vendors~main~0f485567.1d7a15b7.iframe.bundle.js +2 -0
  168. package/docs-build/vendors~main~0f485567.1d7a15b7.iframe.bundle.js.map +1 -0
  169. package/docs-build/vendors~main~41a6ab2c.525ecc56.iframe.bundle.js +2 -0
  170. package/docs-build/vendors~main~41a6ab2c.525ecc56.iframe.bundle.js.map +1 -0
  171. package/docs-build/vendors~main~52589227.1d1558cd.iframe.bundle.js +8 -0
  172. package/docs-build/vendors~main~52589227.1d1558cd.iframe.bundle.js.map +1 -0
  173. package/docs-build/vendors~main~73914085.227c6747.iframe.bundle.js +293 -0
  174. package/docs-build/vendors~main~73914085.227c6747.iframe.bundle.js.map +1 -0
  175. package/docs-build/vendors~main~9c5b28f6.f02cc741.iframe.bundle.js +7 -0
  176. package/docs-build/vendors~main~9c5b28f6.f02cc741.iframe.bundle.js.map +1 -0
  177. package/docs-build/vendors~main~b5906859.4083ac60.iframe.bundle.js +21 -0
  178. package/docs-build/vendors~main~b5906859.4083ac60.iframe.bundle.js.map +1 -0
  179. package/docs-build/vendors~main~b8f44717.7a612c34.iframe.bundle.js +89 -0
  180. package/docs-build/vendors~main~b8f44717.7a612c34.iframe.bundle.js.map +1 -0
  181. package/docs-build/vendors~main~b9cf3951.45da142d.iframe.bundle.js +68 -0
  182. package/docs-build/vendors~main~b9cf3951.45da142d.iframe.bundle.js.map +1 -0
  183. package/docs-build/vendors~main~d939e436.92c27fbf.iframe.bundle.js +2 -0
  184. package/docs-build/vendors~main~d939e436.92c27fbf.iframe.bundle.js.map +1 -0
  185. package/docs-build/vendors~main~dab50aa4.b0d58038.iframe.bundle.js +107 -0
  186. package/docs-build/vendors~main~dab50aa4.b0d58038.iframe.bundle.js.map +1 -0
  187. package/package.json +134 -116
  188. package/public/favicon.ico +0 -0
  189. package/public/logo.png +0 -0
  190. package/rollup.config.js +26 -3
  191. package/scripts/start.js +166 -0
  192. package/scripts/test.js +53 -0
  193. package/src/components/MapLibreMap/MapLibreMap.stories.js +14 -5
  194. package/src/components/MapLibreMap/MapLibreMap.test.js +1 -1
  195. package/src/components/MapLibreMap/{MapLibreMap.js → MapLibreMap.tsx} +40 -37
  196. package/src/components/MapLibreMap/lib/MapLibreGlWrapper.test.js +3 -3
  197. package/src/components/MapLibreMap/lib/MapLibreGlWrapper.ts +636 -0
  198. package/src/components/MlComponentTemplate/MlComponentTemplate.stories.js +0 -2
  199. package/src/components/MlComponentTemplate/MlComponentTemplate.tsx +42 -0
  200. package/src/components/MlCreatePdfButton/MlCreatePdfButton.stories.js +0 -5
  201. package/src/components/MlCreatePdfButton/MlCreatePdfButton.tsx +51 -0
  202. package/src/components/MlCreatePdfButton/lib/{createPdf.js → createPdf.ts} +26 -23
  203. package/src/components/MlCreatePdfButton/lib/{nominatimMap.js → nominatimMap.ts} +3 -3
  204. package/src/components/MlFeatureEditor/MlFeatureEditor.tsx +139 -0
  205. package/src/components/MlFeatureEditor/custom-direct-select-mode.js +12 -8
  206. package/src/components/MlFeatureEditor/custom-polygon-mode.js +9 -5
  207. package/src/components/MlFeatureEditor/custom-select-mode.js +11 -7
  208. package/src/components/MlFeatureEditor/lib/LICENSE.md +18 -0
  209. package/src/components/MlFeatureEditor/lib/common_selectors.js +4 -0
  210. package/src/components/MlFeatureEditor/lib/constants.js +4 -0
  211. package/src/components/MlFeatureEditor/lib/constrain_feature_movement.js +4 -0
  212. package/src/components/MlFeatureEditor/lib/create_midpoint.js +4 -0
  213. package/src/components/MlFeatureEditor/lib/create_supplementary_points.js +4 -0
  214. package/src/components/MlFeatureEditor/lib/create_vertex.js +4 -0
  215. package/src/components/MlFeatureEditor/lib/double_click_zoom.js +4 -0
  216. package/src/components/MlFeatureEditor/lib/euclidean_distance.js +4 -0
  217. package/src/components/MlFeatureEditor/lib/features_at.js +4 -0
  218. package/src/components/MlFeatureEditor/lib/get_features_and_set_cursor.js +4 -0
  219. package/src/components/MlFeatureEditor/lib/is_click.js +4 -0
  220. package/src/components/MlFeatureEditor/lib/is_event_at_coordinates.js +4 -0
  221. package/src/components/MlFeatureEditor/lib/is_tap.js +4 -0
  222. package/src/components/MlFeatureEditor/lib/map_event_to_bounding_box.js +4 -0
  223. package/src/components/MlFeatureEditor/lib/mode_handler.js +4 -0
  224. package/src/components/MlFeatureEditor/lib/mouse_event_point.js +4 -0
  225. package/src/components/MlFeatureEditor/lib/move_features.js +4 -0
  226. package/src/components/MlFeatureEditor/lib/sort_features.js +4 -0
  227. package/src/components/MlFeatureEditor/lib/string_set.js +4 -0
  228. package/src/components/MlFeatureEditor/lib/string_sets_are_equal.js +4 -0
  229. package/src/components/MlFeatureEditor/lib/theme.js +4 -0
  230. package/src/components/MlFeatureEditor/lib/to_dense_array.js +4 -0
  231. package/src/components/MlFeatureEditor/lib/utils.js +4 -0
  232. package/src/components/MlFillExtrusionLayer/MlFillExtrusionLayer.stories.js +6 -11
  233. package/src/components/MlFillExtrusionLayer/MlFillExtrusionLayer.tsx +85 -0
  234. package/src/components/MlFollowGps/MlFollowGps.stories.js +0 -2
  235. package/src/components/MlFollowGps/{MlFollowGps.js → MlFollowGps.tsx} +99 -86
  236. package/src/components/MlGPXViewer/{MlGPXViewer.js → MlGPXViewer.tsx} +68 -50
  237. package/src/components/MlGPXViewer/util/GeoJsonContext.ts +13 -0
  238. package/src/components/MlGPXViewer/util/{GeoJsonProvider.js → GeoJsonProvider.tsx} +3 -7
  239. package/src/components/MlGeoJsonLayer/MlGeoJsonLayer.stories.js +8 -3
  240. package/src/components/MlGeoJsonLayer/MlGeoJsonLayer.tsx +106 -0
  241. package/src/components/MlGeoJsonLayer/util/{getDefaultLayerTypeByGeometry.js → getDefaultLayerTypeByGeometry.ts} +6 -1
  242. package/src/components/MlGeoJsonLayer/util/{getDefaultPaintPropsByType.js → getDefaultPaintPropsByType.ts} +1 -1
  243. package/src/components/MlImageMarkerLayer/MlImageMarkerLayer.stories.js +1 -4
  244. package/src/components/MlImageMarkerLayer/MlImageMarkerLayer.tsx +129 -0
  245. package/src/components/MlLayer/MlLayer.stories.js +0 -2
  246. package/src/components/MlLayer/MlLayer.tsx +48 -0
  247. package/src/components/MlLayerMagnify/MlLayerMagnify.stories.js +3 -3
  248. package/src/components/MlLayerMagnify/{MlLayerMagnify.js → MlLayerMagnify.tsx} +62 -43
  249. package/src/components/MlLayerSwipe/MlLayerSwipe.stories.js +0 -2
  250. package/src/components/MlLayerSwipe/{MlLayerSwipe.js → MlLayerSwipe.tsx} +38 -24
  251. package/src/components/MlLayerSwitcher/MlLayerSwitcher.js +0 -4
  252. package/src/components/MlMarker/MlMarker.tsx +140 -0
  253. package/src/components/MlNavigationCompass/{MlNavigationCompass.js → MlNavigationCompass.tsx} +27 -10
  254. package/src/components/MlNavigationTools/{MlNavigationTools.js → MlNavigationTools.tsx} +37 -32
  255. package/src/components/MlTransitionGeoJsonLayer/{MlTransitionGeoJsonLayer.js → MlTransitionGeoJsonLayer.tsx} +76 -73
  256. package/src/components/MlVectorTileLayer/{MlVectorTileLayer.js → MlVectorTileLayer.tsx} +23 -7
  257. package/src/components/MlWmsLayer/{MlWmsLayer.js → MlWmsLayer.tsx} +22 -7
  258. package/src/components/MlWmsLoader/{MlWmsLoader.js → MlWmsLoader.tsx} +55 -47
  259. package/src/custom.d.tsx +26 -0
  260. package/src/hooks/useLayer.ts +221 -0
  261. package/src/hooks/{useMap.js → useMap.ts} +48 -17
  262. package/src/hooks/{useMapState.js → useMapState.ts} +42 -7
  263. package/src/{index.js → index.ts} +15 -8
  264. package/tsconfig.json +18 -24
  265. package/.env +0 -1
  266. package/.storybook/main.bck.js +0 -56
  267. package/babel.config.json +0 -4
  268. package/coverage/lcov-report/src/translations/english.js.html +0 -94
  269. package/coverage/lcov-report/src/translations/german.js.html +0 -94
  270. package/coverage/lcov-report/src/translations/index.html +0 -131
  271. package/jest.config.json +0 -16
  272. package/jsdoc.json +0 -21
  273. package/public/assets/3D/posttower.gltf +0 -103
  274. package/public/assets/3D/posttower_simple.gltf +0 -103
  275. package/public/assets/3D/posttower_wh.gltf.glb +0 -0
  276. package/public/bee.png +0 -0
  277. package/public/logo192.png +0 -0
  278. package/public/logo512.png +0 -0
  279. package/src/components/MapLibreMap/lib/MapLibreGlWrapper.js +0 -528
  280. package/src/components/MlComponentTemplate/MlComponentTemplate.js +0 -39
  281. package/src/components/MlCreatePdfButton/MlCreatePdfButton.js +0 -52
  282. package/src/components/MlFeatureEditor/MlFeatureEditor.js +0 -119
  283. package/src/components/MlFillExtrusionLayer/MlFillExtrusionLayer.js +0 -153
  284. package/src/components/MlGPXViewer/util/GeoJsonContext.js +0 -6
  285. package/src/components/MlGeoJsonLayer/MlGeoJsonLayer.js +0 -173
  286. package/src/components/MlImageMarkerLayer/MlImageMarkerLayer.js +0 -75
  287. package/src/components/MlLayer/MlLayer.js +0 -107
  288. package/src/components/MlLayerMagnify/utils/compareMagnify.js +0 -173
  289. package/src/components/MlLayerSwipe/utils/swipeCompare.js +0 -220
  290. package/src/components/MlMarker/MlMarker.js +0 -156
  291. package/src/components/index.js +0 -6
  292. package/src/i18n.js +0 -28
  293. package/src/react-app-env.d.ts +0 -1
  294. package/src/stories/IntroductionCore.stories.mdx +0 -3
  295. package/src/stories/assets/code-brackets.svg +0 -1
  296. package/src/stories/assets/colors.svg +0 -1
  297. package/src/stories/assets/comments.svg +0 -1
  298. package/src/stories/assets/direction.svg +0 -1
  299. package/src/stories/assets/flow.svg +0 -1
  300. package/src/stories/assets/plugin.svg +0 -1
  301. package/src/stories/assets/repo.svg +0 -1
  302. package/src/stories/assets/stackalt.svg +0 -1
  303. package/src/stories/components/ComponentTeaser.js +0 -64
  304. package/src/translations/english.js +0 -4
  305. package/src/translations/german.js +0 -4
@@ -0,0 +1,636 @@
1
+ import { Map, IControl, MapOptions } from "maplibre-gl";
2
+
3
+ type EventArgArray = [string, string | Function, Function?];
4
+ type LayerState = {
5
+ id: string;
6
+ type: string;
7
+ visible: boolean;
8
+ baseLayer: boolean;
9
+ };
10
+ type ViewportState = {
11
+ center: { lng: number; lat: number };
12
+ zoom: number;
13
+ bearing: number;
14
+ pitch: number;
15
+ };
16
+
17
+ /**
18
+ * Creates a MapLibre-gl-js instance and offers all of the native MapLibre functions and properties as well as additional functionality such as element registration & cleanup and more events.
19
+ *
20
+ * @param {object} props
21
+ *
22
+ * @class
23
+ */
24
+ class MapLibreGlWrapper {
25
+ registeredElements: {
26
+ [key: string]: {
27
+ layers: [string?];
28
+ sources: [string?];
29
+ images: [string?];
30
+ controls: [IControl?];
31
+ events: [EventArgArray?];
32
+ wrapperEvents: [EventArgArray?];
33
+ };
34
+ };
35
+ baseLayers: [string?];
36
+ firstSymbolLayer: string | undefined;
37
+ eventHandlers: { layerchange: [Function?]; viewportchange: [Function?] };
38
+ wrapper: {
39
+ on: Function;
40
+ off: Function;
41
+ fire: Function;
42
+ layerState: [LayerState?];
43
+ layerStateString: string;
44
+ oldLayerStateStrings: object;
45
+ buildLayerObject: Function;
46
+ buildLayerObjects: Function;
47
+ refreshLayerState: Function;
48
+ viewportState: ViewportState;
49
+ viewportStateString: string;
50
+ oldViewportStateString: string;
51
+ getViewport: Function;
52
+ refreshViewport: Function;
53
+ };
54
+ initRegisteredElements: Function;
55
+ addNativeMaplibreFunctionsAndProps: Function;
56
+ map: Map;
57
+ style: object;
58
+
59
+ styleJson: object;
60
+ addLayer: Function;
61
+ addSource: Function;
62
+ addControl: Function;
63
+ addImage: Function;
64
+ on: Function;
65
+ cleanup: Function;
66
+
67
+ constructor(props: { mapOptions: MapOptions; onReady: Function }) {
68
+ // closure variable to safely point to the object context of the current MapLibreGlWrapper instance
69
+ let self = this;
70
+
71
+ // element registration and cleanup on a component level is experimental
72
+ this.registeredElements = {};
73
+
74
+ // array of base layer ids, all layers that have been added by the style passed to the MapLibreGl coonstructor
75
+ this.baseLayers = [];
76
+
77
+ // layer id of the first symbol layer
78
+ this.firstSymbolLayer = undefined;
79
+
80
+ // event handlers registered in MapLibreGlWrapper
81
+ this.eventHandlers = {
82
+ layerchange: [],
83
+ viewportchange: [],
84
+ };
85
+
86
+ // functions and properties provided by the wrapper
87
+ // Add new functions and properties introduced by the wrapper to this object to prevent collisions due to future MapLibre API changes
88
+ this.wrapper = {
89
+ /**
90
+ * Subscribe the given event handler to an event
91
+ *
92
+ * @param {string} eventName
93
+ * @param {function} handler
94
+ * @param {object} options
95
+ * @param {string} componentId
96
+ * @returns {undefined}
97
+ */
98
+ on: (
99
+ eventName: string,
100
+ handler: Function,
101
+ options?: object | string,
102
+ componentId?: string
103
+ ) => {
104
+ if (!self.eventHandlers[eventName]) return;
105
+
106
+ if (typeof options === "string") {
107
+ componentId = options;
108
+ options = {};
109
+ }
110
+
111
+ self.eventHandlers[eventName].push({ handler, options });
112
+
113
+ let _arguments: EventArgArray = [eventName, handler];
114
+ if (componentId && typeof componentId === "string") {
115
+ self.initRegisteredElements(componentId);
116
+ self.registeredElements[componentId].wrapperEvents.push(_arguments);
117
+ }
118
+ },
119
+ /**
120
+ * Unsubscribes the given event handler from an event
121
+ *
122
+ * @param {string} eventName
123
+ * @param {function} handler
124
+ * @returns {undefined}
125
+ */
126
+ off: (eventName: string, handler: Function) => {
127
+ if (!self.eventHandlers[eventName]) return;
128
+
129
+ self.eventHandlers[eventName] = self.eventHandlers[eventName].filter(
130
+ (item: any) => {
131
+ if (!Object.is(item.handler, handler)) {
132
+ return item;
133
+ }
134
+ return false;
135
+ }
136
+ );
137
+ },
138
+ /**
139
+ * Calls all event handlers that have been subscribed to the given eventName
140
+ *
141
+ * @param {string} eventName
142
+ * @param {object} context
143
+ * @returns {undefined}
144
+ */
145
+ fire: (eventName: string, context: object) => {
146
+ if (!self.eventHandlers[eventName]) return;
147
+
148
+ var scope = context || window;
149
+ let event = new Event(eventName);
150
+
151
+ self.eventHandlers[eventName].forEach(function (item: any) {
152
+ item.handler.call(scope, event, self);
153
+ });
154
+ },
155
+ /**
156
+ * Array containing an object for each layer in the MapLibre instance providing information on visibility, loading state, order, paint & layout properties
157
+ */
158
+ layerState: [],
159
+ /**
160
+ * Maps layerIds to layerState in JSON string form for quick deep comparisons
161
+ */
162
+ layerStateString: "",
163
+ /**
164
+ * Previous Version of layerStateString
165
+ */
166
+ oldLayerStateStrings: {},
167
+ /**
168
+ * Builds the layer info object for a given layer id
169
+ *
170
+ * @param {string} layer
171
+ * @returns object
172
+ */
173
+ buildLayerObject: (layer: any) => {
174
+ //if (self.baseLayers.indexOf(layer.id) === -1) {
175
+ //let paint = {};
176
+ //let values = layer.paint?._values;
177
+ //Object.keys(values || {}).map((propName) => {
178
+ // paint[propName] =
179
+ // typeof values[propName].value !== "undefined"
180
+ // ? values[propName].value.value
181
+ // : values[propName];
182
+ //});
183
+ //let layout = {};
184
+ //values = layer.layout?._values;
185
+ //Object.keys(values || {}).map((propName) => {
186
+ // layout[propName] =
187
+ // typeof values[propName].value !== "undefined"
188
+ // ? values[propName].value.value
189
+ // : values[propName];
190
+ //});
191
+ return {
192
+ id: layer.id,
193
+ type: layer.type,
194
+ visible: layer.visibility === "none" ? false : true,
195
+ baseLayer: self.baseLayers.indexOf(layer.id) !== -1,
196
+ //paint,
197
+ //layout,
198
+ //filter: layers[layerId].filter,
199
+ //layout: layers[layerId].layout,
200
+ //maxzoom: layers[layerId].maxzoom,
201
+ //metadata: layers[layerId].metadata,
202
+ //minzoom: layers[layerId].minzoom,
203
+ //paint: layers[layerId].paint.get(),
204
+ //source: layers[layerId].source,
205
+ //sourceLayer: layers[layerId].sourceLayer,
206
+ };
207
+ //}
208
+ },
209
+ /**
210
+ * Returns an array of layer state info objects for all layers in the MapLibre instance
211
+ *
212
+ * @returns array
213
+ */
214
+ buildLayerObjects: () => {
215
+ // @ts-ignore
216
+ return self.style._order
217
+ .map((layerId: string) => {
218
+ return self.wrapper.buildLayerObject(
219
+ self.map.style._layers[layerId]
220
+ );
221
+ })
222
+ .filter((n: string) => n);
223
+ },
224
+ /**
225
+ * Updates layer state info objects
226
+ */
227
+ refreshLayerState: () => {
228
+ self.wrapper.layerState = self.wrapper.buildLayerObjects();
229
+ if (
230
+ JSON.stringify(self.wrapper.layerState) !==
231
+ self.wrapper.layerStateString
232
+ ) {
233
+ self.wrapper.fire("layerchange");
234
+ self.wrapper.layerStateString = JSON.stringify(
235
+ self.wrapper.layerState
236
+ );
237
+ }
238
+ },
239
+ /**
240
+ * Object containing information on the current viewport state
241
+ */
242
+ viewportState: {
243
+ center:{lng:0,lat:0},
244
+ zoom: 0,
245
+ bearing:0,
246
+ pitch:0
247
+ },
248
+ /**
249
+ * The same data as viewportState in JSON string form for quick deep comparisons
250
+ */
251
+ viewportStateString: "{}",
252
+ /**
253
+ * Previous version of viewportStateString
254
+ */
255
+ oldViewportStateString: "{}",
256
+ getViewport: () =>
257
+ typeof self.map.getCenter === "function"
258
+ ? {
259
+ center: (({ lng, lat }) => ({ lng, lat }))(self.map.getCenter()),
260
+ zoom: self.map.getZoom(),
261
+ bearing: self.map.getBearing(),
262
+ pitch: self.map.getPitch(),
263
+ }
264
+ : {},
265
+ refreshViewport: () => {
266
+ self.wrapper.viewportState = self.wrapper.getViewport();
267
+ },
268
+ };
269
+
270
+ /**
271
+ * Initializes an empty registered elements object for the given componentId
272
+ *
273
+ * @param {string} componentId
274
+ * @param {boolean} force
275
+ */
276
+ this.initRegisteredElements = (
277
+ componentId: string,
278
+ force: boolean | undefined
279
+ ) => {
280
+ if (
281
+ typeof self.registeredElements[componentId] === "undefined" ||
282
+ (typeof force !== "undefined" && force)
283
+ ) {
284
+ self.registeredElements[componentId] = {
285
+ layers: [],
286
+ sources: [],
287
+ images: [],
288
+ events: [],
289
+ controls: [],
290
+ wrapperEvents: [],
291
+ };
292
+ }
293
+ };
294
+
295
+ /**
296
+ * Overrides MapLibre-gl-js addLayer function providing an additional componentId parameter for the wrapper element registration.
297
+ *
298
+ * @param {object} layer
299
+ * @param {string} beforeId
300
+ * @param {string} componentId
301
+ * @returns {undefined}
302
+ */
303
+ this.addLayer = (layer: any, beforeId: string, componentId: string) => {
304
+ if (!self.map.style) {
305
+ return;
306
+ }
307
+ if (
308
+ componentId &&
309
+ typeof componentId === "string" &&
310
+ typeof layer.id !== "undefined"
311
+ ) {
312
+ self.initRegisteredElements(componentId);
313
+ self.registeredElements[componentId].layers.push(layer.id);
314
+
315
+ if (typeof layer.source === "object") {
316
+ self.registeredElements[componentId].sources.push(layer.id);
317
+ }
318
+ }
319
+
320
+ self.map.addLayer(layer, beforeId);
321
+ };
322
+
323
+ /**
324
+ * Overrides MapLibre-gl-js addSource function providing an additional componentId parameter for the wrapper element registration.
325
+ *
326
+ * @param {string} sourceId
327
+ * @param {object} source
328
+ * @param {object} options
329
+ * @param {string} componentId
330
+ * @returns {undefined}
331
+ */
332
+ this.addSource = (sourceId: string, source: any, componentId: string) => {
333
+ if (!self.map.style) {
334
+ return;
335
+ }
336
+ if (
337
+ componentId &&
338
+ typeof componentId === "string" &&
339
+ typeof sourceId !== "undefined"
340
+ ) {
341
+ self.initRegisteredElements(componentId);
342
+ self.registeredElements[componentId].sources.push(sourceId);
343
+ }
344
+
345
+ self.map.addSource(sourceId, source);
346
+ };
347
+
348
+ /**
349
+ * Overrides MapLibre-gl-js addImage function providing an additional componentId parameter for the wrapper element registration.
350
+ *
351
+ * @param {string} id
352
+ * @param {*} image
353
+ * @param {*} ref
354
+ * @param {string} componentId
355
+ * @returns {undefined}
356
+ */
357
+ this.addImage = (id: string, image: any, ref: any, componentId: string) => {
358
+ if (!self.map.style) {
359
+ return;
360
+ }
361
+ if (typeof ref === "string" && typeof componentId === "undefined") {
362
+ return self.addImage.call(self, id, image, undefined, ref);
363
+ }
364
+ if (
365
+ componentId &&
366
+ typeof componentId === "string" &&
367
+ typeof id !== "undefined"
368
+ ) {
369
+ self.initRegisteredElements(componentId);
370
+ self.registeredElements[componentId].images.push(id);
371
+ }
372
+
373
+ self.map.addImage(id, image, ref);
374
+ };
375
+
376
+ /**
377
+ * Overrides MapLibre-gl-js on function providing an additional componentId parameter for the wrapper element registration.
378
+ *
379
+ * @param {string} type
380
+ * @param {string} layerId
381
+ * @param {function} handler
382
+ * @param {string} componentId
383
+ * @returns {undefined}
384
+ */
385
+ this.on = (
386
+ type: string,
387
+ layerId: string,
388
+ handler: Function,
389
+ componentId: string
390
+ ) => {
391
+ if (typeof handler === "string" && typeof layerId === "function") {
392
+ return self.on.call(self, type, undefined, layerId, handler);
393
+ }
394
+
395
+ let _arguments: EventArgArray = [type, layerId, handler];
396
+ if (!layerId) {
397
+ _arguments = [type, handler];
398
+ }
399
+
400
+ if (componentId && typeof componentId === "string") {
401
+ self.initRegisteredElements(componentId);
402
+ self.registeredElements[componentId].events.push(_arguments);
403
+ }
404
+
405
+ // @ts-ignore:
406
+ self.map.on(..._arguments);
407
+ };
408
+
409
+ /**
410
+ * Overrides MapLibre-gl-js addControl function providing an additional componentId parameter for the wrapper element registration.
411
+ *
412
+ * @param {object} control
413
+ * @param {string} position
414
+ * @param {string} componentId
415
+ */
416
+ this.addControl = (control: any, position: any, componentId: string) => {
417
+ if (componentId && typeof componentId === "string") {
418
+ self.initRegisteredElements(componentId);
419
+ self.registeredElements[componentId].controls.push(control);
420
+ }
421
+
422
+ self.map.addControl(control, position);
423
+ };
424
+
425
+ /**
426
+ * Removes anything that has been added to the maplibre instance referenced with componentId
427
+ *
428
+ * @param {string} componentId
429
+ */
430
+ this.cleanup = (componentId: string) => {
431
+ if (
432
+ self.map.style &&
433
+ typeof self.registeredElements[componentId] !== "undefined"
434
+ ) {
435
+ // cleanup layers
436
+ self.registeredElements[componentId].layers.forEach((item: any) => {
437
+ if (self.map.style.getLayer(item)) {
438
+ self.map.style.removeLayer(item);
439
+ }
440
+ });
441
+
442
+ // cleanup sources
443
+ self.registeredElements[componentId].sources.forEach((item: any) => {
444
+ if (self.map.style.getSource(item)) {
445
+ self.map.style.removeSource(item);
446
+ }
447
+ });
448
+
449
+ // cleanup images
450
+ self.registeredElements[componentId].images.forEach((item: any) => {
451
+ if (self.map.hasImage(item)) {
452
+ self.map.style.removeImage(item);
453
+ }
454
+ });
455
+
456
+ // cleanup events
457
+ self.registeredElements[componentId].events.forEach((item: any) => {
458
+ // @ts-ignore
459
+ self.map.off(...item);
460
+ });
461
+
462
+ // cleanup controls
463
+ self.registeredElements[componentId].controls.forEach((item: any) => {
464
+ self.map.removeControl(item);
465
+ });
466
+
467
+ // cleanup wrapper events
468
+ self.registeredElements[componentId].wrapperEvents.forEach(
469
+ (item: any) => {
470
+ self.wrapper.off(...item);
471
+ }
472
+ );
473
+
474
+ self.initRegisteredElements(componentId, true);
475
+ }
476
+ };
477
+
478
+ // add style prop functions that require map._update to be called afterwards
479
+ let updatingStyleFunctions = [
480
+ "moveLayer",
481
+ "removeLayer",
482
+ "removeSource",
483
+ "setPaintProperty",
484
+ "setLayoutProperty",
485
+ ];
486
+ updatingStyleFunctions.forEach((item) => {
487
+ this[item] = (...props: any[]) => {
488
+ if (
489
+ self.map &&
490
+ this.map.style &&
491
+ typeof self.map.style[item] === "function"
492
+ ) {
493
+ self.map.style[item](...props);
494
+ }
495
+ return self.map._update ? self.map._update(true) : undefined;
496
+ };
497
+ });
498
+
499
+ // add style prop functions
500
+ let styleFunctions = [
501
+ "getLayer",
502
+ "getSource",
503
+ "listImages",
504
+ "getPaintProperty",
505
+ "getLayoutProperty",
506
+ "removeImage",
507
+ ];
508
+ styleFunctions.forEach((item) => {
509
+ this[item] = (...props: any[]) => {
510
+ if (self.map && self.map.style) {
511
+ return self.map.style[item](...props);
512
+ }
513
+ return false;
514
+ };
515
+ });
516
+
517
+ this.addNativeMaplibreFunctionsAndProps = () => {
518
+ // add MapLibre-gl functions
519
+ Object.getOwnPropertyNames(Object.getPrototypeOf(this.map)).forEach(
520
+ (item) => {
521
+ if (typeof this[item] === "undefined") {
522
+ this[item] = (...props: any[]) => self.map[item](...props);
523
+ }
524
+ }
525
+ );
526
+
527
+ // add MapLibre-gl properties
528
+ Object.keys(this.map).forEach((item) => {
529
+ if (typeof this[item] === "undefined") {
530
+ this[item] = self.map[item];
531
+ }
532
+ });
533
+ };
534
+
535
+ // add functions that are missing on the MapLibre instances prototype
536
+ let missingFunctions = [
537
+ "getZoom",
538
+ "setZoom",
539
+ "getCenter",
540
+ "setCenter",
541
+ "getBearing",
542
+ "setBearing",
543
+ "getPitch",
544
+ "setPitch",
545
+ "jumpTo",
546
+ "flyTo",
547
+ "panTo",
548
+ "panBy",
549
+ "panBy",
550
+ "zoomTo",
551
+ "zoomIn",
552
+ "zoomOut",
553
+ "getPadding",
554
+ "setPadding",
555
+ "rotateTo",
556
+ "resetNorth",
557
+ "resetNorthPitch",
558
+ "snapToNorth",
559
+ "cameraForBounds",
560
+ "fitBounds",
561
+ "fitScreenCoordinates",
562
+ "getFreeCameraOptions",
563
+ "setFreeCameraOptions",
564
+ "easeTo",
565
+ "stop",
566
+ ];
567
+ missingFunctions.forEach((item) => {
568
+ this[item] = (...props: any[]) => {
569
+ if (typeof self.map[item] === "function") {
570
+ return self.map[item].call(self.map, ...props);
571
+ }
572
+ return undefined;
573
+ };
574
+ });
575
+
576
+ // initialize the MapLibre-gl instance
577
+ let initializeMapLibre = async () => {
578
+ // if mapOptions style URL is given and if it is not a mapbox URL fetch the json and initialize the mapbox object
579
+ if (
580
+ typeof props.mapOptions.style === "string" &&
581
+ props.mapOptions.style.indexOf("mapbox://") === -1
582
+ ) {
583
+ await fetch(props.mapOptions.style)
584
+ .then((response) => {
585
+ if (response.ok) {
586
+ return response.json();
587
+ } else {
588
+ throw new Error("error loading map style.json");
589
+ }
590
+ })
591
+ .then((styleJson) => {
592
+ styleJson.layers.forEach((item: any) => {
593
+ self.baseLayers.push(item.id);
594
+ if (!self.firstSymbolLayer && item.type === "symbol") {
595
+ self.firstSymbolLayer = item.id;
596
+ }
597
+ });
598
+ self.styleJson = styleJson;
599
+ props.mapOptions.style = styleJson;
600
+ })
601
+ .catch((error) => {
602
+ console.log(error);
603
+ });
604
+ }
605
+
606
+ self.map = new Map(props.mapOptions);
607
+
608
+ self.addNativeMaplibreFunctionsAndProps();
609
+ self.wrapper.refreshViewport();
610
+ self.wrapper.fire("viewportchange");
611
+
612
+ self.map.on("load", () => {
613
+ self.addNativeMaplibreFunctionsAndProps();
614
+ });
615
+
616
+ self.map.on("move", () => {
617
+ self.wrapper.viewportState = self.wrapper.getViewport();
618
+ self.wrapper.fire("viewportchange");
619
+ });
620
+ self.map.on("idle", () => {
621
+ self.wrapper.refreshLayerState();
622
+ });
623
+ self.map.on("data", () => {
624
+ self.wrapper.refreshLayerState();
625
+ });
626
+ if (typeof props.onReady === "function") {
627
+ props.onReady(self.map, self);
628
+ }
629
+ };
630
+ initializeMapLibre();
631
+ }
632
+ }
633
+
634
+ export default MapLibreGlWrapper;
635
+
636
+ export type { LayerState, ViewportState };
@@ -8,8 +8,6 @@ const storyoptions = {
8
8
  title: "MapComponents/MlComponentTemplate",
9
9
  component: MlComponentTemplate,
10
10
  argTypes: {
11
- url: {},
12
- layer: {},
13
11
  },
14
12
  decorators: mapContextDecorator,
15
13
  };
@@ -0,0 +1,42 @@
1
+ import React, { useRef, useEffect } from "react";
2
+ import useMap from "../../hooks/useMap";
3
+
4
+ interface MlComponentTemplateProps {
5
+ /**
6
+ * Id of the target MapLibre instance in mapContext
7
+ */
8
+ mapId?: string;
9
+ /**
10
+ * Id of an existing layer in the mapLibre instance to help specify the layer order
11
+ * This layer will be visually beneath the layer with the "insertBeforeLayer" id.
12
+ */
13
+ insertBeforeLayer?: string;
14
+ }
15
+
16
+ /**
17
+ * Component template
18
+ *
19
+ */
20
+ const MlComponentTemplate = (props: MlComponentTemplateProps) => {
21
+ const mapHook = useMap({
22
+ mapId: props.mapId,
23
+ waitForLayer: props.insertBeforeLayer,
24
+ });
25
+ const initializedRef = useRef(false);
26
+
27
+ useEffect(() => {
28
+ if (!mapHook.map || initializedRef.current) return;
29
+ // the MapLibre-gl instance (mapHook.map) is accessible here
30
+ // initialize the layer and add it to the MapLibre-gl instance or do something else with it
31
+ initializedRef.current = true;
32
+
33
+ mapHook.map.map.setCenter([7.132122000552613, 50.716405378037706]);
34
+ }, [mapHook.map, props.mapId]);
35
+
36
+ return <></>;
37
+ };
38
+
39
+ MlComponentTemplate.defaultProps = {
40
+ mapId: undefined,
41
+ };
42
+ export default MlComponentTemplate;
@@ -10,11 +10,6 @@ const storyoptions = {
10
10
  title: "MapComponents/MlCreatePdfButton",
11
11
  component: MlCreatePdfButton,
12
12
  argTypes: {
13
- options: {
14
- control: {
15
- type: "object",
16
- },
17
- },
18
13
  },
19
14
  decorators: mapContextDecorator,
20
15
  };