@mapcomponents/react-maplibre 0.1.66 → 0.1.67

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 (179) hide show
  1. package/.github/workflows/node_version_test.yml +1 -1
  2. package/.storybook/main.js +37 -31
  3. package/.storybook/preview.js +21 -0
  4. package/CHANGELOG.md +13 -0
  5. package/coverage/clover.xml +419 -344
  6. package/coverage/coverage-final.json +15 -14
  7. package/coverage/lcov-report/index.html +61 -61
  8. package/coverage/lcov-report/src/components/MapLibreMap/MapLibreMap.tsx.html +24 -18
  9. package/coverage/lcov-report/src/components/MapLibreMap/index.html +14 -14
  10. package/coverage/lcov-report/src/components/MlCenterPosition/MlCenterPosition.tsx.html +2 -2
  11. package/coverage/lcov-report/src/components/MlCenterPosition/index.html +1 -1
  12. package/coverage/lcov-report/src/components/MlCreatePdfButton/MlCreatePdfButton.tsx.html +1 -1
  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 +1 -1
  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 +9 -9
  22. package/coverage/lcov-report/src/components/MlFollowGps/index.html +1 -1
  23. package/coverage/lcov-report/src/components/MlGeoJsonLayer/MlGeoJsonLayer.tsx.html +1 -1
  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 +1 -1
  28. package/coverage/lcov-report/src/components/MlGeoJsonLayer/story_utils/MlGeojsonLayerHeatMapStyler.tsx.html +1 -1
  29. package/coverage/lcov-report/src/components/MlGeoJsonLayer/story_utils/index.html +1 -1
  30. package/coverage/lcov-report/src/components/MlGeojsonLayerWithSource/MlGeojsonLayerWithSource.tsx.html +1 -1
  31. package/coverage/lcov-report/src/components/MlGeojsonLayerWithSource/index.html +1 -1
  32. package/coverage/lcov-report/src/components/MlGpxViewer/MlGpxViewer.tsx.html +1 -1
  33. package/coverage/lcov-report/src/components/MlGpxViewer/index.html +1 -1
  34. package/coverage/lcov-report/src/components/MlImageMarkerLayer/MlImageMarkerLayer.tsx.html +1 -1
  35. package/coverage/lcov-report/src/components/MlImageMarkerLayer/index.html +1 -1
  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 +52 -40
  39. package/coverage/lcov-report/src/components/MlLayerMagnify/index.html +10 -10
  40. package/coverage/lcov-report/src/components/MlLayerSwipe/MlLayerSwipe.tsx.html +4 -4
  41. package/coverage/lcov-report/src/components/MlLayerSwipe/index.html +1 -1
  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 +1 -1
  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 → MlScaleReference.tsx.html} +57 -36
  58. package/coverage/lcov-report/src/components/MlScaleReference/index.html +2 -2
  59. package/coverage/lcov-report/src/components/MlShareMapState/{MlShareMapState.js.html → MlShareMapState.tsx.html} +192 -84
  60. package/coverage/lcov-report/src/components/MlShareMapState/index.html +20 -20
  61. package/coverage/lcov-report/src/components/MlSketchTool/LayerList/ColorPicker.tsx.html +1 -1
  62. package/coverage/lcov-report/src/components/MlSketchTool/LayerList/LayerList.tsx.html +1 -1
  63. package/coverage/lcov-report/src/components/MlSketchTool/LayerList/LayerListItem.tsx.html +1 -1
  64. package/coverage/lcov-report/src/components/MlSketchTool/LayerList/LayerPropertyForm.tsx.html +1 -1
  65. package/coverage/lcov-report/src/components/MlSketchTool/LayerList/index.html +1 -1
  66. package/coverage/lcov-report/src/components/MlSketchTool/MlSketchTool.tsx.html +1 -1
  67. package/coverage/lcov-report/src/components/MlSketchTool/index.html +1 -1
  68. package/coverage/lcov-report/src/components/MlSpatialElevationProfile/MlSpatialElevationProfile.tsx.html +1 -1
  69. package/coverage/lcov-report/src/components/MlSpatialElevationProfile/index.html +1 -1
  70. package/coverage/lcov-report/src/components/MlThreeJsLayer/MlThreeJsLayer.js.html +1 -1
  71. package/coverage/lcov-report/src/components/MlThreeJsLayer/MlThreejsLayer.tsx.html +769 -0
  72. package/coverage/lcov-report/src/components/MlThreeJsLayer/index.html +25 -10
  73. package/coverage/lcov-report/src/components/MlTransitionGeoJsonLayer/MlTransitionGeoJsonLayer.tsx.html +1 -1
  74. package/coverage/lcov-report/src/components/MlTransitionGeoJsonLayer/index.html +1 -1
  75. package/coverage/lcov-report/src/components/MlUseMapDebugger/MlUseMapDebugger.js.html +1 -1
  76. package/coverage/lcov-report/src/components/MlUseMapDebugger/index.html +1 -1
  77. package/coverage/lcov-report/src/components/MlVectorTileLayer/MlVectorTileLayer.tsx.html +1 -1
  78. package/coverage/lcov-report/src/components/MlVectorTileLayer/index.html +1 -1
  79. package/coverage/lcov-report/src/components/MlWmsFeatureInfoPopup/MlWmsFeatureInfoPopup.js.html +11 -11
  80. package/coverage/lcov-report/src/components/MlWmsFeatureInfoPopup/index.html +11 -11
  81. package/coverage/lcov-report/src/components/MlWmsLayer/MlWmsLayer.tsx.html +1 -1
  82. package/coverage/lcov-report/src/components/MlWmsLayer/index.html +1 -1
  83. package/coverage/lcov-report/src/components/MlWmsLoader/MlWmsLoader.tsx.html +27 -18
  84. package/coverage/lcov-report/src/components/MlWmsLoader/index.html +11 -11
  85. package/coverage/lcov-report/src/contexts/MapContext.tsx.html +50 -26
  86. package/coverage/lcov-report/src/contexts/SimpleDataContext.js.html +1 -1
  87. package/coverage/lcov-report/src/contexts/SimpleDataProvider.js.html +1 -1
  88. package/coverage/lcov-report/src/contexts/index.html +1 -1
  89. package/coverage/lcov-report/src/hooks/index.html +21 -21
  90. package/coverage/lcov-report/src/hooks/useCameraFollowPath/index.html +1 -1
  91. package/coverage/lcov-report/src/hooks/useCameraFollowPath/useCameraFollowPath.tsx.html +1 -1
  92. package/coverage/lcov-report/src/hooks/useExportMap/index.html +1 -1
  93. package/coverage/lcov-report/src/hooks/useExportMap/index.ts.html +1 -1
  94. package/coverage/lcov-report/src/hooks/useExportMap/lib.ts.html +1 -1
  95. package/coverage/lcov-report/src/hooks/useGpx/index.html +1 -1
  96. package/coverage/lcov-report/src/hooks/useGpx/useGpx.tsx.html +1 -1
  97. package/coverage/lcov-report/src/hooks/useLayer.ts.html +1 -1
  98. package/coverage/lcov-report/src/hooks/useLayerEvent.js.html +9 -9
  99. package/coverage/lcov-report/src/hooks/useLayerFilter/index.html +1 -1
  100. package/coverage/lcov-report/src/hooks/useLayerFilter/useLayerFilter.ts.html +1 -1
  101. package/coverage/lcov-report/src/hooks/useLayerHoverPopup/index.html +1 -1
  102. package/coverage/lcov-report/src/hooks/useLayerHoverPopup/useLayerHoverPopup.tsx.html +9 -6
  103. package/coverage/lcov-report/src/hooks/useMap.ts.html +2 -2
  104. package/coverage/lcov-report/src/hooks/useMapState.ts.html +8 -29
  105. package/coverage/lcov-report/src/hooks/useSource.ts.html +10 -10
  106. package/coverage/lcov-report/src/hooks/useWms.ts.html +1 -1
  107. package/coverage/lcov-report/src/index.html +1 -1
  108. package/coverage/lcov-report/src/index.ts.html +80 -11
  109. package/coverage/lcov.info +741 -604
  110. package/dist/components/MapLibreMap/MapLibreMap.stories.d.ts +3 -0
  111. package/dist/components/MapLibreMap/lib/MapLibreGlWrapper.d.ts +17 -15
  112. package/dist/components/MlCenterPosition/MlCenterPosition.stories.d.ts +1 -1
  113. package/dist/components/MlComponentTemplate/MlComponentTemplate.stories.d.ts +1 -1
  114. package/dist/components/MlCreatePdfButton/MlCreatePdfButton.stories.d.ts +1 -1
  115. package/dist/components/MlCreatePdfForm/MlCreatePdfForm.stories.d.ts +1 -1
  116. package/dist/components/MlFeatureEditor/lib/create_supplementary_points.d.ts +1 -1
  117. package/dist/components/MlFeatureEditor/lib/create_vertex.d.ts +1 -1
  118. package/dist/components/MlGeoJsonLayer/MlGeoJsonLayer.stories.d.ts +1 -1
  119. package/dist/components/MlGeojsonLayerWithSource/MlGeojsonLayerWithSource.stories.d.ts +1 -1
  120. package/dist/components/MlGpxViewer/MlGpxViewer.stories.d.ts +1 -1
  121. package/dist/components/MlImageMarkerLayer/MlImageMarkerLayer.stories.d.ts +1 -1
  122. package/dist/components/MlLayerMagnify/MlLayerMagnify.stories.d.ts +1 -1
  123. package/dist/components/MlLayerSwipe/MlLayerSwipe.stories.d.ts +1 -1
  124. package/dist/components/MlScaleReference/MlScaleReference.d.ts +7 -1
  125. package/dist/components/MlShareMapState/MlShareMapState.d.ts +32 -13
  126. package/dist/components/MlShareMapState/MlShareMapState.stories.d.ts +15 -9
  127. package/dist/components/MlSketchTool/MlSketchTool.stories.d.ts +1 -1
  128. package/dist/components/MlSpatialElevationProfile/MlSpatialElevationProfile.stories.d.ts +1 -1
  129. package/dist/components/MlSpatialElevationProfile/util/getElevationData.d.ts +1 -1
  130. package/dist/components/MlThreeJsLayer/MlThreeJsLayer.stories.d.ts +1 -1
  131. package/dist/components/MlThreeJsLayer/MlThreejsLayer.d.ts +29 -0
  132. package/dist/components/MlThreeJsLayer/lib/GLTFLoader.d.ts +2 -1
  133. package/dist/components/MlWmsFeatureInfoPopup/MlWmsFeatureInfoPopup.stories.d.ts +1 -1
  134. package/dist/components/MlWmsLoader/MlWmsLoader.stories.d.ts +1 -1
  135. package/dist/contexts/MapContext.d.ts +13 -2
  136. package/dist/custom.d.d.ts +1 -1
  137. package/dist/decorators/MapContextDecorator.d.ts +1 -1
  138. package/dist/decorators/MapContextDecoratorHooks.d.ts +1 -1
  139. package/dist/decorators/MultiMapContextDecorator.d.ts +1 -1
  140. package/dist/decorators/NoNavToolsDecorator.d.ts +1 -1
  141. package/dist/decorators/ThemeWrapper.d.ts +1 -3
  142. package/dist/hooks/useCameraFollowPath/useCameraFollowPath.stories.d.ts +1 -1
  143. package/dist/hooks/useLayerFilter/useLayerFilter.stories.d.ts +1 -1
  144. package/dist/index.d.ts +18 -8
  145. package/dist/index.esm.js +5590 -3701
  146. package/dist/index.esm.js.map +1 -1
  147. package/dist/setupTests.d.ts +6 -6
  148. package/package.json +56 -49
  149. package/public/thumbnails/{MlGPXViewer.png → MlGpxViewer.png} +0 -0
  150. package/rollup.config.js +49 -48
  151. package/src/@types/assets/index.d.ts +20 -0
  152. package/src/components/MapLibreMap/MapLibreMap.stories.js +8 -1
  153. package/src/components/MapLibreMap/MapLibreMap.tsx +11 -9
  154. package/src/components/MapLibreMap/lib/MapLibreGlWrapper.ts +49 -39
  155. package/src/components/MlCenterPosition/MlCenterPosition.tsx +1 -1
  156. package/src/components/MlFollowGps/MlFollowGps.tsx +8 -8
  157. package/src/components/MlLayerMagnify/MlLayerMagnify.tsx +21 -17
  158. package/src/components/MlLayerSwipe/MlLayerSwipe.tsx +3 -3
  159. package/src/components/MlScaleReference/{MlScaleReference.js → MlScaleReference.tsx} +38 -31
  160. package/src/components/MlShareMapState/MlShareMapState.stories.tsx +100 -0
  161. package/src/components/MlShareMapState/{MlShareMapState.js → MlShareMapState.tsx} +94 -58
  162. package/src/components/MlThreeJsLayer/MlThreejsLayer.tsx +228 -0
  163. package/src/components/MlWmsLoader/MlWmsLoader.tsx +7 -4
  164. package/src/contexts/MapContext.tsx +26 -19
  165. package/src/custom.d.ts +5 -0
  166. package/src/decorators/MapContextDecorator.js +39 -28
  167. package/src/decorators/MapContextDecoratorHooks.js +18 -8
  168. package/src/decorators/MultiMapContextDecorator.js +79 -69
  169. package/src/decorators/NoNavToolsDecorator.js +34 -25
  170. package/src/hooks/useLayerHoverPopup/useLayerHoverPopup.tsx +5 -4
  171. package/src/hooks/useMap.ts +1 -1
  172. package/src/hooks/useMapState.ts +6 -13
  173. package/src/hooks/useSource.ts +1 -1
  174. package/src/index.ts +31 -8
  175. package/src/ui_components/TopToolbar.tsx +1 -1
  176. package/tsconfig.json +1 -0
  177. package/src/components/MlShareMapState/MlShareMapState.stories.js +0 -100
  178. package/src/custom.d.tsx +0 -26
  179. package/src/decorators/ThemeWrapper.tsx +0 -9
@@ -154,10 +154,18 @@
154
154
  <a name='L89'></a><a href='#L89'>89</a>
155
155
  <a name='L90'></a><a href='#L90'>90</a>
156
156
  <a name='L91'></a><a href='#L91'>91</a>
157
- <a name='L92'></a><a href='#L92'>92</a></td><td class="line-coverage quiet"><span class="cline-any cline-neutral">&nbsp;</span>
157
+ <a name='L92'></a><a href='#L92'>92</a>
158
+ <a name='L93'></a><a href='#L93'>93</a>
159
+ <a name='L94'></a><a href='#L94'>94</a>
160
+ <a name='L95'></a><a href='#L95'>95</a>
161
+ <a name='L96'></a><a href='#L96'>96</a>
162
+ <a name='L97'></a><a href='#L97'>97</a>
163
+ <a name='L98'></a><a href='#L98'>98</a>
164
+ <a name='L99'></a><a href='#L99'>99</a>
165
+ <a name='L100'></a><a href='#L100'>100</a></td><td class="line-coverage quiet"><span class="cline-any cline-neutral">&nbsp;</span>
166
+ <span class="cline-any cline-neutral">&nbsp;</span>
158
167
  <span class="cline-any cline-neutral">&nbsp;</span>
159
168
  <span class="cline-any cline-neutral">&nbsp;</span>
160
- <span class="cline-any cline-yes">21x</span>
161
169
  <span class="cline-any cline-neutral">&nbsp;</span>
162
170
  <span class="cline-any cline-neutral">&nbsp;</span>
163
171
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -168,12 +176,20 @@
168
176
  <span class="cline-any cline-neutral">&nbsp;</span>
169
177
  <span class="cline-any cline-neutral">&nbsp;</span>
170
178
  <span class="cline-any cline-yes">21x</span>
179
+ <span class="cline-any cline-neutral">&nbsp;</span>
180
+ <span class="cline-any cline-neutral">&nbsp;</span>
181
+ <span class="cline-any cline-neutral">&nbsp;</span>
182
+ <span class="cline-any cline-neutral">&nbsp;</span>
183
+ <span class="cline-any cline-neutral">&nbsp;</span>
184
+ <span class="cline-any cline-neutral">&nbsp;</span>
185
+ <span class="cline-any cline-neutral">&nbsp;</span>
186
+ <span class="cline-any cline-neutral">&nbsp;</span>
187
+ <span class="cline-any cline-yes">21x</span>
171
188
  <span class="cline-any cline-yes">188x</span>
172
189
  <span class="cline-any cline-yes">188x</span>
173
190
  <span class="cline-any cline-yes">188x</span>
174
191
  <span class="cline-any cline-yes">188x</span>
175
192
  <span class="cline-any cline-neutral">&nbsp;</span>
176
- <span class="cline-any cline-neutral">&nbsp;</span>
177
193
  <span class="cline-any cline-yes">188x</span>
178
194
  <span class="cline-any cline-yes">8x</span>
179
195
  <span class="cline-any cline-yes">6x</span>
@@ -230,8 +246,8 @@
230
246
  <span class="cline-any cline-yes">596x</span>
231
247
  <span class="cline-any cline-neutral">&nbsp;</span>
232
248
  <span class="cline-any cline-neutral">&nbsp;</span>
233
- <span class="cline-any cline-yes">256x</span>
234
- <span class="cline-any cline-yes">25x</span>
249
+ <span class="cline-any cline-yes">258x</span>
250
+ <span class="cline-any cline-yes">27x</span>
235
251
  <span class="cline-any cline-yes">231x</span>
236
252
  <span class="cline-any cline-yes">214x</span>
237
253
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -240,17 +256,26 @@
240
256
  <span class="cline-any cline-neutral">&nbsp;</span>
241
257
  <span class="cline-any cline-neutral">&nbsp;</span>
242
258
  <span class="cline-any cline-neutral">&nbsp;</span>
243
- <span class="cline-any cline-neutral">&nbsp;</span>
244
259
  <span class="cline-any cline-yes">188x</span>
245
260
  <span class="cline-any cline-neutral">&nbsp;</span>
246
261
  <span class="cline-any cline-neutral">&nbsp;</span>
247
262
  <span class="cline-any cline-neutral">&nbsp;</span>
248
- <span class="cline-any cline-neutral">&nbsp;</span></td><td class="text"><pre class="prettyprint lang-js">import React, { useState, useRef } from "react";
263
+ <span class="cline-any cline-neutral">&nbsp;</span>
264
+ <span class="cline-any cline-neutral">&nbsp;</span></td><td class="text"><pre class="prettyprint lang-js">import React, { useState, useRef, ReactNode } from 'react';
249
265
  import MapLibreGlWrapper from '../components/MapLibreMap/lib/MapLibreGlWrapper';
250
266
  &nbsp;
267
+ export interface MapContextType {
268
+ mapIds: string[];
269
+ mapExists: (map_id: string | undefined) =&gt; boolean;
270
+ maps: MapLibreGlWrapper[];
271
+ map: MapLibreGlWrapper | undefined;
272
+ getMap: (map_id: string | undefined) =&gt; MapLibreGlWrapper;
273
+ setMap: (map: MapLibreGlWrapper) =&gt; void;
274
+ removeMap: (map_id: string | undefined) =&gt; void;
275
+ registerMap: (map_id: string | undefined, map: MapLibreGlWrapper) =&gt; void;
276
+ }
251
277
  const MapContext = React.createContext({} as MapContextType);
252
278
  &nbsp;
253
- &nbsp;
254
279
  /**
255
280
  * MapComponentsProvider must be imported and wrapped around component where at least one of its child nodes requires access to a MapLibre-gl or openlayers instance that is registered in this mapContext.
256
281
  MapComponentsProvider must be used one level higher than the first use of MapContext.
@@ -258,19 +283,18 @@ MapComponentsProvider must be used one level higher than the first use of MapCon
258
283
  * MapComponentsProvider requires at least one use of the MapLibreMap component somewhere down the component tree that will create the MapLibre-gl object and set the reference at MapContext.map. For MapLibre maps it is a good idea to provide a mapId attribute to the MapLibreMap Component even if you are only using a single map instance at start. It will make a later transition to using multiple instances within the same project much easier.
259
284
  */
260
285
  &nbsp;
261
- const MapComponentsProvider = ({ children }:{children:any}) =&gt; {
262
- const [map, setMap] = useState&lt;(MapLibreGlWrapper | undefined)&gt;(undefined);
286
+ const MapComponentsProvider = ({ children }: { children: ReactNode }) =&gt; {
287
+ const [map, setMap] = useState&lt;MapLibreGlWrapper | undefined&gt;(undefined);
263
288
  const [mapIds, setMapIds] = useState&lt;[...string[]]&gt;([]);
264
- let mapIds_raw = useRef&lt;[...string[]]&gt;([]);
265
- let maps = useRef&lt;any&gt;({});
289
+ const mapIds_raw = useRef&lt;[...string[]]&gt;([]);
290
+ const maps = useRef&lt;{ [key: string]: MapLibreGlWrapper }&gt;({});
266
291
  &nbsp;
267
- &nbsp;
268
- const removeMap = (mapId:string) =&gt; {
292
+ const removeMap = (mapId: string) =&gt; {
269
293
  if (mapId) {
270
- <span class="missing-if-branch" title="else path not taken" >E</span>if (typeof maps.current[mapId] !== "undefined") {
294
+ <span class="missing-if-branch" title="else path not taken" >E</span>if (typeof maps.current[mapId] !== 'undefined') {
271
295
  delete maps.current[mapId];
272
296
  }
273
- let mapIdIndex = mapIds_raw.current.indexOf(mapId);
297
+ const mapIdIndex = mapIds_raw.current.indexOf(mapId);
274
298
  if (mapIdIndex &gt; -1) {
275
299
  mapIds_raw.current.splice(mapIdIndex, 1);
276
300
  }
@@ -281,15 +305,15 @@ const MapComponentsProvider = ({ children }:{children:any}) =&gt; {
281
305
  }
282
306
  } else {
283
307
  setMap(undefined);
284
- removeMap("anonymous_map");
308
+ removeMap('anonymous_map');
285
309
  }
286
310
  };
287
311
  &nbsp;
288
- const setMapHandler = (mapInstance:MapLibreGlWrapper) =&gt; {
312
+ const setMapHandler = (mapInstance: MapLibreGlWrapper) =&gt; {
289
313
  setMap(mapInstance);
290
314
  &nbsp;
291
315
  <span class="missing-if-branch" title="else path not taken" >E</span>if (mapIds.length === 0) {
292
- let mapId = "anonymous_map";
316
+ const mapId = 'anonymous_map';
293
317
  setMapIds([...mapIds, mapId]);
294
318
  maps.current[mapId] = mapInstance;
295
319
  }
@@ -300,7 +324,7 @@ const MapComponentsProvider = ({ children }:{children:any}) =&gt; {
300
324
  setMap: setMapHandler,
301
325
  maps: maps.current,
302
326
  mapIds: mapIds,
303
- registerMap: (mapId:string, mapInstance:MapLibreGlWrapper) =&gt; {
327
+ registerMap: (mapId: string, mapInstance: MapLibreGlWrapper) =&gt; {
304
328
  <span class="missing-if-branch" title="else path not taken" >E</span>if (mapId &amp;&amp; mapInstance) {
305
329
  maps.current[mapId] = mapInstance;
306
330
  mapIds_raw.current.push(mapId);
@@ -312,7 +336,7 @@ const MapComponentsProvider = ({ children }:{children:any}) =&gt; {
312
336
  }
313
337
  },
314
338
  removeMap,
315
- mapExists: (mapId:string) =&gt; {
339
+ mapExists: (mapId: string) =&gt; {
316
340
  if (mapId &amp;&amp; Object.keys(maps.current).indexOf(mapId) === -1) {
317
341
  return false;
318
342
  } else if (!mapId &amp;&amp; !map) {
@@ -320,7 +344,7 @@ const MapComponentsProvider = ({ children }:{children:any}) =&gt; {
320
344
  }
321
345
  return true;
322
346
  },
323
- getMap: (mapId:string):(MapLibreGlWrapper | null) =&gt; {
347
+ getMap: (mapId: string): MapLibreGlWrapper | null =&gt; {
324
348
  if (mapId &amp;&amp; mapIds.indexOf(mapId) !== -1) {
325
349
  return maps.current[mapId];
326
350
  } else if (!mapId &amp;&amp; map) {
@@ -329,21 +353,21 @@ const MapComponentsProvider = ({ children }:{children:any}) =&gt; {
329
353
  &nbsp;
330
354
  return null;
331
355
  },
332
- };
356
+ } as unknown as MapContextType;
333
357
  &nbsp;
334
- //@ts-ignore
335
358
  return &lt;MapContext.Provider value={value}&gt;{children}&lt;/MapContext.Provider&gt;;
336
359
  };
337
360
  &nbsp;
338
361
  export { MapComponentsProvider };
339
- export default MapContext;</pre></td></tr></table></pre>
362
+ export default MapContext;
363
+ &nbsp;</pre></td></tr></table></pre>
340
364
 
341
365
  <div class='push'></div><!-- for sticky footer -->
342
366
  </div><!-- /wrapper -->
343
367
  <div class='footer quiet pad2 space-top1 center small'>
344
368
  Code coverage generated by
345
369
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
346
- at 2023-01-23T12:34:46.087Z
370
+ at 2023-01-30T08:41:54.902Z
347
371
  </div>
348
372
  <script src="../../prettify.js"></script>
349
373
  <script>
@@ -88,7 +88,7 @@ export default SimpleDataContext;
88
88
  <div class='footer quiet pad2 space-top1 center small'>
89
89
  Code coverage generated by
90
90
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
91
- at 2023-01-23T12:34:46.087Z
91
+ at 2023-01-30T08:41:54.902Z
92
92
  </div>
93
93
  <script src="../../prettify.js"></script>
94
94
  <script>
@@ -262,7 +262,7 @@ export default SimpleDataProvider;
262
262
  <div class='footer quiet pad2 space-top1 center small'>
263
263
  Code coverage generated by
264
264
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
265
- at 2023-01-23T12:34:46.087Z
265
+ at 2023-01-30T08:41:54.902Z
266
266
  </div>
267
267
  <script src="../../prettify.js"></script>
268
268
  <script>
@@ -131,7 +131,7 @@
131
131
  <div class='footer quiet pad2 space-top1 center small'>
132
132
  Code coverage generated by
133
133
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
134
- at 2023-01-23T12:34:46.087Z
134
+ at 2023-01-30T08:41:54.902Z
135
135
  </div>
136
136
  <script src="../../prettify.js"></script>
137
137
  <script>
@@ -23,16 +23,16 @@
23
23
  <div class='clearfix'>
24
24
 
25
25
  <div class='fl pad1y space-right2'>
26
- <span class="strong">59.16% </span>
26
+ <span class="strong">59.58% </span>
27
27
  <span class="quiet">Statements</span>
28
- <span class='fraction'>142/240</span>
28
+ <span class='fraction'>143/240</span>
29
29
  </div>
30
30
 
31
31
 
32
32
  <div class='fl pad1y space-right2'>
33
- <span class="strong">53.89% </span>
33
+ <span class="strong">53.84% </span>
34
34
  <span class="quiet">Branches</span>
35
- <span class='fraction'>83/154</span>
35
+ <span class='fraction'>84/156</span>
36
36
  </div>
37
37
 
38
38
 
@@ -44,9 +44,9 @@
44
44
 
45
45
 
46
46
  <div class='fl pad1y space-right2'>
47
- <span class="strong">59.73% </span>
47
+ <span class="strong">60.17% </span>
48
48
  <span class="quiet">Lines</span>
49
- <span class='fraction'>135/226</span>
49
+ <span class='fraction'>136/226</span>
50
50
  </div>
51
51
 
52
52
 
@@ -95,17 +95,17 @@
95
95
 
96
96
  <tr>
97
97
  <td class="file low" data-value="useLayerEvent.js"><a href="useLayerEvent.js.html">useLayerEvent.js</a></td>
98
- <td data-value="0" class="pic low">
99
- <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div>
98
+ <td data-value="8.69" class="pic low">
99
+ <div class="chart"><div class="cover-fill" style="width: 8%"></div><div class="cover-empty" style="width: 92%"></div></div>
100
100
  </td>
101
- <td data-value="0" class="pct low">0%</td>
102
- <td data-value="23" class="abs low">0/23</td>
101
+ <td data-value="8.69" class="pct low">8.69%</td>
102
+ <td data-value="23" class="abs low">2/23</td>
103
103
  <td data-value="0" class="pct low">0%</td>
104
104
  <td data-value="16" class="abs low">0/16</td>
105
105
  <td data-value="0" class="pct low">0%</td>
106
106
  <td data-value="3" class="abs low">0/3</td>
107
- <td data-value="0" class="pct low">0%</td>
108
- <td data-value="21" class="abs low">0/21</td>
107
+ <td data-value="9.52" class="pct low">9.52%</td>
108
+ <td data-value="21" class="abs low">2/21</td>
109
109
  </tr>
110
110
 
111
111
  <tr>
@@ -140,17 +140,17 @@
140
140
 
141
141
  <tr>
142
142
  <td class="file medium" data-value="useSource.ts"><a href="useSource.ts.html">useSource.ts</a></td>
143
- <td data-value="79.31" class="pic medium">
144
- <div class="chart"><div class="cover-fill" style="width: 79%"></div><div class="cover-empty" style="width: 21%"></div></div>
143
+ <td data-value="75.86" class="pic medium">
144
+ <div class="chart"><div class="cover-fill" style="width: 75%"></div><div class="cover-empty" style="width: 25%"></div></div>
145
145
  </td>
146
- <td data-value="79.31" class="pct medium">79.31%</td>
147
- <td data-value="29" class="abs medium">23/29</td>
148
- <td data-value="55" class="pct medium">55%</td>
149
- <td data-value="20" class="abs medium">11/20</td>
146
+ <td data-value="75.86" class="pct medium">75.86%</td>
147
+ <td data-value="29" class="abs medium">22/29</td>
148
+ <td data-value="54.54" class="pct medium">54.54%</td>
149
+ <td data-value="22" class="abs medium">12/22</td>
150
150
  <td data-value="100" class="pct high">100%</td>
151
151
  <td data-value="6" class="abs high">6/6</td>
152
- <td data-value="80.76" class="pct high">80.76%</td>
153
- <td data-value="26" class="abs high">21/26</td>
152
+ <td data-value="76.92" class="pct medium">76.92%</td>
153
+ <td data-value="26" class="abs medium">20/26</td>
154
154
  </tr>
155
155
 
156
156
  <tr>
@@ -176,7 +176,7 @@
176
176
  <div class='footer quiet pad2 space-top1 center small'>
177
177
  Code coverage generated by
178
178
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
179
- at 2023-01-23T12:34:46.087Z
179
+ at 2023-01-30T08:41:54.902Z
180
180
  </div>
181
181
  <script src="../../prettify.js"></script>
182
182
  <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 2023-01-23T12:34:46.087Z
104
+ at 2023-01-30T08:41:54.902Z
105
105
  </div>
106
106
  <script src="../../../prettify.js"></script>
107
107
  <script>
@@ -646,7 +646,7 @@ export default useCameraFollowPath;
646
646
  <div class='footer quiet pad2 space-top1 center small'>
647
647
  Code coverage generated by
648
648
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
649
- at 2023-01-23T12:34:46.087Z
649
+ at 2023-01-30T08:41:54.902Z
650
650
  </div>
651
651
  <script src="../../../prettify.js"></script>
652
652
  <script>
@@ -116,7 +116,7 @@
116
116
  <div class='footer quiet pad2 space-top1 center small'>
117
117
  Code coverage generated by
118
118
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
119
- at 2023-01-23T12:34:46.087Z
119
+ at 2023-01-30T08:41:54.902Z
120
120
  </div>
121
121
  <script src="../../../prettify.js"></script>
122
122
  <script>
@@ -160,7 +160,7 @@ export default function <span class="fstat-no" title="function not covered" >use
160
160
  <div class='footer quiet pad2 space-top1 center small'>
161
161
  Code coverage generated by
162
162
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
163
- at 2023-01-23T12:34:46.087Z
163
+ at 2023-01-30T08:41:54.902Z
164
164
  </div>
165
165
  <script src="../../../prettify.js"></script>
166
166
  <script>
@@ -544,7 +544,7 @@ export { createExport };
544
544
  <div class='footer quiet pad2 space-top1 center small'>
545
545
  Code coverage generated by
546
546
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
547
- at 2023-01-23T12:34:46.087Z
547
+ at 2023-01-30T08:41:54.902Z
548
548
  </div>
549
549
  <script src="../../../prettify.js"></script>
550
550
  <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 2023-01-23T12:34:46.087Z
104
+ at 2023-01-30T08:41:54.902Z
105
105
  </div>
106
106
  <script src="../../../prettify.js"></script>
107
107
  <script>
@@ -280,7 +280,7 @@ export default useGpx;
280
280
  <div class='footer quiet pad2 space-top1 center small'>
281
281
  Code coverage generated by
282
282
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
283
- at 2023-01-23T12:34:46.087Z
283
+ at 2023-01-30T08:41:54.902Z
284
284
  </div>
285
285
  <script src="../../../prettify.js"></script>
286
286
  <script>
@@ -772,7 +772,7 @@ export default useLayer;
772
772
  <div class='footer quiet pad2 space-top1 center small'>
773
773
  Code coverage generated by
774
774
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
775
- at 2023-01-23T12:34:46.087Z
775
+ at 2023-01-30T08:41:54.902Z
776
776
  </div>
777
777
  <script src="../../prettify.js"></script>
778
778
  <script>
@@ -23,9 +23,9 @@
23
23
  <div class='clearfix'>
24
24
 
25
25
  <div class='fl pad1y space-right2'>
26
- <span class="strong">0% </span>
26
+ <span class="strong">8.69% </span>
27
27
  <span class="quiet">Statements</span>
28
- <span class='fraction'>0/23</span>
28
+ <span class='fraction'>2/23</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">0% </span>
47
+ <span class="strong">9.52% </span>
48
48
  <span class="quiet">Lines</span>
49
- <span class='fraction'>0/21</span>
49
+ <span class='fraction'>2/21</span>
50
50
  </div>
51
51
 
52
52
 
@@ -117,12 +117,12 @@
117
117
  <span class="cline-any cline-neutral">&nbsp;</span>
118
118
  <span class="cline-any cline-neutral">&nbsp;</span>
119
119
  <span class="cline-any cline-neutral">&nbsp;</span>
120
- <span class="cline-any cline-no">&nbsp;</span>
120
+ <span class="cline-any cline-yes">10x</span>
121
121
  <span class="cline-any cline-neutral">&nbsp;</span>
122
122
  <span class="cline-any cline-neutral">&nbsp;</span>
123
123
  <span class="cline-any cline-neutral">&nbsp;</span>
124
124
  <span class="cline-any cline-neutral">&nbsp;</span>
125
- <span class="cline-any cline-no">&nbsp;</span>
125
+ <span class="cline-any cline-yes">10x</span>
126
126
  <span class="cline-any cline-neutral">&nbsp;</span>
127
127
  <span class="cline-any cline-no">&nbsp;</span>
128
128
  <span class="cline-any cline-no">&nbsp;</span>
@@ -166,12 +166,12 @@ import { useEffect } from 'react';
166
166
  import useMapState from './useMapState';
167
167
  import useMap from './useMap';
168
168
  &nbsp;
169
- const touchEquivalents = <span class="cstat-no" title="statement not covered" >{</span>
169
+ const touchEquivalents = {
170
170
  mousedown: 'touchstart',
171
171
  mouseup: 'touchend',
172
172
  mousemove: 'touchmove',
173
173
  };
174
- const touchEquivalentsKeys = <span class="cstat-no" title="statement not covered" >Object.keys(touchEquivalents);</span>
174
+ const touchEquivalentsKeys = Object.keys(touchEquivalents);
175
175
  function <span class="fstat-no" title="function not covered" >useLayerEvent(</span>props) {
176
176
  const mapState = <span class="cstat-no" title="statement not covered" >useMapState({ mapId: props.mapId, watch: { layers: true } });</span>
177
177
  const mapHook = <span class="cstat-no" title="statement not covered" >useMap({ mapId: props.mapId });</span>
@@ -217,7 +217,7 @@ export default useLayerEvent;
217
217
  <div class='footer quiet pad2 space-top1 center small'>
218
218
  Code coverage generated by
219
219
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
220
- at 2023-01-23T12:34:46.087Z
220
+ at 2023-01-30T08:41:54.902Z
221
221
  </div>
222
222
  <script src="../../prettify.js"></script>
223
223
  <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 2023-01-23T12:34:46.087Z
104
+ at 2023-01-30T08:41:54.902Z
105
105
  </div>
106
106
  <script src="../../../prettify.js"></script>
107
107
  <script>
@@ -169,7 +169,7 @@ export default useLayerFilter;
169
169
  <div class='footer quiet pad2 space-top1 center small'>
170
170
  Code coverage generated by
171
171
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
172
- at 2023-01-23T12:34:46.087Z
172
+ at 2023-01-30T08:41:54.902Z
173
173
  </div>
174
174
  <script src="../../../prettify.js"></script>
175
175
  <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 2023-01-23T12:34:46.087Z
104
+ at 2023-01-30T08:41:54.902Z
105
105
  </div>
106
106
  <script src="../../../prettify.js"></script>
107
107
  <script>
@@ -145,7 +145,9 @@
145
145
  <a name='L80'></a><a href='#L80'>80</a>
146
146
  <a name='L81'></a><a href='#L81'>81</a>
147
147
  <a name='L82'></a><a href='#L82'>82</a>
148
- <a name='L83'></a><a href='#L83'>83</a></td><td class="line-coverage quiet"><span class="cline-any cline-neutral">&nbsp;</span>
148
+ <a name='L83'></a><a href='#L83'>83</a>
149
+ <a name='L84'></a><a href='#L84'>84</a></td><td class="line-coverage quiet"><span class="cline-any cline-neutral">&nbsp;</span>
150
+ <span class="cline-any cline-neutral">&nbsp;</span>
149
151
  <span class="cline-any cline-neutral">&nbsp;</span>
150
152
  <span class="cline-any cline-neutral">&nbsp;</span>
151
153
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -229,8 +231,9 @@
229
231
  <span class="cline-any cline-neutral">&nbsp;</span>
230
232
  <span class="cline-any cline-neutral">&nbsp;</span></td><td class="text"><pre class="prettyprint lang-js">import React, { useRef, useEffect } from 'react';
231
233
  import useMap from '../../hooks/useMap';
234
+ import { GeoJSONFeature } from 'maplibre-gl';
232
235
  import {
233
- GeoJSONFeature,
236
+ LngLatLike,
234
237
  Popup,
235
238
  MapEventType,
236
239
  } from 'maplibre-gl';
@@ -270,7 +273,7 @@ const useLayerHoverPopup = (props: useLayerHoverPopupProps) =&gt; {
270
273
  props.layerId,
271
274
  <span class="fstat-no" title="function not covered" > (</span>
272
275
  e: MapEventType &amp; {
273
- features?: GeoJSONFeature[] | undefined;
276
+ features?: ({[key:string]:string} &amp; { geometry:{coordinates:[number,number]}})[] | undefined;
274
277
  lngLat: { lng: number; lat: number };
275
278
  }
276
279
  ) =&gt; {
@@ -281,7 +284,7 @@ const useLayerHoverPopup = (props: useLayerHoverPopupProps) =&gt; {
281
284
  //const description = e.features[0].properties.desc;
282
285
  let content = <span class="cstat-no" title="statement not covered" >'';</span>
283
286
  <span class="cstat-no" title="statement not covered" > if (e?.features?.[0] &amp;&amp; typeof props.getPopupContent === 'function') {</span>
284
- <span class="cstat-no" title="statement not covered" > content = props.getPopupContent(e.features[0]);</span>
287
+ <span class="cstat-no" title="statement not covered" > content = props.getPopupContent(e.features[0] as unknown as GeoJSONFeature);</span>
285
288
  }
286
289
  &nbsp;
287
290
  <span class="cstat-no" title="statement not covered" > if (coordinates?.[0]) {</span>
@@ -295,7 +298,7 @@ const useLayerHoverPopup = (props: useLayerHoverPopupProps) =&gt; {
295
298
  // Populate the popup and set its coordinates
296
299
  &nbsp;
297
300
  // based on the feature found.
298
- <span class="cstat-no" title="statement not covered" > popup.current.setLngLat(coordinates).setHTML(content).addTo(mapHook.map.map);</span>
301
+ <span class="cstat-no" title="statement not covered" > popup.current.setLngLat(coordinates as LngLatLike).setHTML(content).addTo(mapHook.map.map);</span>
299
302
  }
300
303
  },
301
304
  mapHook.componentId
@@ -316,7 +319,7 @@ export default useLayerHoverPopup;
316
319
  <div class='footer quiet pad2 space-top1 center small'>
317
320
  Code coverage generated by
318
321
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
319
- at 2023-01-23T12:34:46.087Z
322
+ at 2023-01-30T08:41:54.902Z
320
323
  </div>
321
324
  <script src="../../../prettify.js"></script>
322
325
  <script>
@@ -247,7 +247,7 @@
247
247
  <span class="cline-any cline-neutral">&nbsp;</span>
248
248
  <span class="cline-any cline-neutral">&nbsp;</span></td><td class="text"><pre class="prettyprint lang-js">import { useContext, useState, useEffect, useRef } from "react";
249
249
  import { v4 as uuidv4 } from "uuid";
250
- import MapContext from "../contexts/MapContext";
250
+ import MapContext, { MapContextType } from "../contexts/MapContext";
251
251
  import useMapState from "./useMapState";
252
252
  import MapLibreGlWrapper, { LayerState } from "../components/MapLibreMap/lib/MapLibreGlWrapper";
253
253
  &nbsp;
@@ -343,7 +343,7 @@ export type { useMapType };
343
343
  <div class='footer quiet pad2 space-top1 center small'>
344
344
  Code coverage generated by
345
345
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
346
- at 2023-01-23T12:34:46.087Z
346
+ at 2023-01-30T08:41:54.902Z
347
347
  </div>
348
348
  <script src="../../prettify.js"></script>
349
349
  <script>