@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.
- package/.eslintignore +11 -0
- package/.eslintrc.js +20 -0
- package/.github/workflows/check-formatting.yml +46 -0
- package/.prettierignore +11 -0
- package/.prettierrc.json +6 -0
- package/CHANGELOG.md +20 -0
- package/coverage/clover.xml +232 -80
- package/coverage/coverage-final.json +43 -37
- package/coverage/lcov-report/index.html +71 -26
- package/coverage/lcov-report/src/components/MapLibreMap/MapLibreMap.tsx.html +83 -83
- package/coverage/lcov-report/src/components/MapLibreMap/index.html +1 -1
- package/coverage/lcov-report/src/components/MlCenterPosition/MlCenterPosition.tsx.html +66 -66
- package/coverage/lcov-report/src/components/MlCenterPosition/index.html +1 -1
- package/coverage/lcov-report/src/components/MlCreatePdfButton/MlCreatePdfButton.tsx.html +30 -30
- package/coverage/lcov-report/src/components/MlCreatePdfButton/index.html +1 -1
- package/coverage/lcov-report/src/components/MlCreatePdfForm/MlCreatePdfForm.tsx.html +202 -0
- package/coverage/lcov-report/src/components/MlCreatePdfForm/index.html +116 -0
- package/coverage/lcov-report/src/components/MlFeatureEditor/MlFeatureEditor.tsx.html +99 -99
- package/coverage/lcov-report/src/components/MlFeatureEditor/index.html +1 -1
- package/coverage/lcov-report/src/components/MlFillExtrusionLayer/MlFillExtrusionLayer.tsx.html +66 -66
- package/coverage/lcov-report/src/components/MlFillExtrusionLayer/index.html +1 -1
- package/coverage/lcov-report/src/components/MlFollowGps/MlFollowGps.tsx.html +221 -221
- package/coverage/lcov-report/src/components/MlFollowGps/index.html +1 -1
- package/coverage/lcov-report/src/components/MlGPXViewer/MlGPXViewer.tsx.html +308 -308
- package/coverage/lcov-report/src/components/MlGPXViewer/gpxConverter.js.html +497 -497
- package/coverage/lcov-report/src/components/MlGPXViewer/index.html +1 -1
- package/coverage/lcov-report/src/components/MlGeoJsonLayer/MlGeoJsonLayer.tsx.html +85 -85
- package/coverage/lcov-report/src/components/MlGeoJsonLayer/index.html +1 -1
- package/coverage/lcov-report/src/components/MlGeojsonLayerWithSource/MlGeojsonLayerWithSource.tsx.html +469 -0
- package/coverage/lcov-report/src/components/MlGeojsonLayerWithSource/index.html +116 -0
- package/coverage/lcov-report/src/components/MlImageMarkerLayer/MlImageMarkerLayer.tsx.html +140 -140
- package/coverage/lcov-report/src/components/MlImageMarkerLayer/index.html +1 -1
- package/coverage/lcov-report/src/components/MlLayer/MlLayer.tsx.html +37 -37
- package/coverage/lcov-report/src/components/MlLayer/index.html +1 -1
- package/coverage/lcov-report/src/components/MlLayerMagnify/MlLayerMagnify.tsx.html +179 -179
- package/coverage/lcov-report/src/components/MlLayerMagnify/index.html +1 -1
- package/coverage/lcov-report/src/components/MlLayerSwipe/MlLayerSwipe.tsx.html +113 -113
- package/coverage/lcov-report/src/components/MlLayerSwipe/index.html +1 -1
- package/coverage/lcov-report/src/components/MlLayerSwitcher/MlLayerSwitcher.js.html +181 -181
- package/coverage/lcov-report/src/components/MlLayerSwitcher/components/LayerBox.js.html +58 -58
- package/coverage/lcov-report/src/components/MlLayerSwitcher/components/index.html +1 -1
- package/coverage/lcov-report/src/components/MlLayerSwitcher/index.html +1 -1
- package/coverage/lcov-report/src/components/MlMarker/MlMarker.tsx.html +108 -108
- package/coverage/lcov-report/src/components/MlMarker/index.html +1 -1
- package/coverage/lcov-report/src/components/MlMeasureTool/MlMeasureTool.tsx.html +39 -39
- package/coverage/lcov-report/src/components/MlMeasureTool/index.html +1 -1
- package/coverage/lcov-report/src/components/MlNavigationCompass/MlNavigationCompass.tsx.html +183 -183
- package/coverage/lcov-report/src/components/MlNavigationCompass/index.html +1 -1
- package/coverage/lcov-report/src/components/MlNavigationTools/MlNavigationTools.tsx.html +163 -163
- package/coverage/lcov-report/src/components/MlNavigationTools/index.html +1 -1
- package/coverage/lcov-report/src/components/MlOsmLayer/MlOsmLayer.js.html +50 -50
- package/coverage/lcov-report/src/components/MlOsmLayer/MlOsmLayer.stories_.js.html +30 -30
- package/coverage/lcov-report/src/components/MlOsmLayer/index.html +1 -1
- package/coverage/lcov-report/src/components/MlScaleReference/MlScaleReference.js.html +89 -89
- package/coverage/lcov-report/src/components/MlScaleReference/index.html +11 -11
- package/coverage/lcov-report/src/components/MlShareMapState/MlShareMapState.js.html +204 -204
- package/coverage/lcov-report/src/components/MlShareMapState/index.html +1 -1
- package/coverage/lcov-report/src/components/MlSpatialElevationProfile/MlSpatialElevationProfile.js.html +180 -180
- package/coverage/lcov-report/src/components/MlSpatialElevationProfile/index.html +1 -1
- package/coverage/lcov-report/src/components/MlThreeJsLayer/MlThreeJsLayer.js.html +163 -163
- package/coverage/lcov-report/src/components/MlThreeJsLayer/index.html +1 -1
- package/coverage/lcov-report/src/components/MlTransitionGeoJsonLayer/MlTransitionGeoJsonLayer.tsx.html +136 -136
- package/coverage/lcov-report/src/components/MlTransitionGeoJsonLayer/index.html +1 -1
- package/coverage/lcov-report/src/components/MlUseMapDebugger/MlUseMapDebugger.js.html +53 -53
- package/coverage/lcov-report/src/components/MlUseMapDebugger/index.html +1 -1
- package/coverage/lcov-report/src/components/MlVectorTileLayer/MlVectorTileLayer.tsx.html +123 -123
- package/coverage/lcov-report/src/components/MlVectorTileLayer/index.html +1 -1
- package/coverage/lcov-report/src/components/MlWmsFeatureInfoPopup/MlWmsFeatureInfoPopup.js.html +35 -35
- package/coverage/lcov-report/src/components/MlWmsFeatureInfoPopup/index.html +1 -1
- package/coverage/lcov-report/src/components/MlWmsLayer/MlWmsLayer.tsx.html +155 -155
- package/coverage/lcov-report/src/components/MlWmsLayer/index.html +1 -1
- package/coverage/lcov-report/src/components/MlWmsLoader/MlWmsLoader.tsx.html +255 -255
- package/coverage/lcov-report/src/components/MlWmsLoader/index.html +1 -1
- package/coverage/lcov-report/src/contexts/MapContext.tsx.html +66 -66
- package/coverage/lcov-report/src/contexts/SimpleDataContext.js.html +1 -1
- package/coverage/lcov-report/src/contexts/SimpleDataProvider.js.html +48 -48
- package/coverage/lcov-report/src/contexts/index.html +1 -1
- package/coverage/lcov-report/src/hooks/exportMap/index.html +131 -0
- package/coverage/lcov-report/src/hooks/exportMap/index.ts.html +175 -0
- package/coverage/lcov-report/src/hooks/exportMap/lib.ts.html +646 -0
- package/coverage/lcov-report/src/hooks/index.html +48 -18
- package/coverage/lcov-report/src/hooks/useLayer.ts.html +230 -188
- package/coverage/lcov-report/src/hooks/useLayerEvent.js.html +232 -0
- package/coverage/lcov-report/src/hooks/useMap.ts.html +72 -69
- package/coverage/lcov-report/src/hooks/useMapState.ts.html +145 -145
- package/coverage/lcov-report/src/hooks/useSource.ts.html +337 -0
- package/coverage/lcov-report/src/hooks/useWms.js.html +72 -72
- package/coverage/lcov-report/src/index.html +1 -1
- package/coverage/lcov-report/src/index.ts.html +14 -2
- package/coverage/lcov.info +450 -153
- package/dist/components/MlCreatePdfForm/MlCreatePdfForm.d.ts +24 -0
- package/dist/components/MlCreatePdfForm/MlCreatePdfForm.stories.d.ts +13 -0
- package/dist/components/MlCreatePdfForm/lib/PdfContext.d.ts +21 -0
- package/dist/components/MlCreatePdfForm/lib/PdfForm.d.ts +10 -0
- package/dist/components/MlCreatePdfForm/lib/PdfPreview.d.ts +13 -0
- package/dist/components/MlCreatePdfForm/lib/pdf.templates.d.ts +11 -0
- package/dist/components/MlFeatureEditor/lib/create_vertex.d.ts +1 -1
- package/dist/components/MlGeojsonLayerWithSource/MlGeojsonLayerWithSource.d.ts +22 -0
- package/dist/components/MlGeojsonLayerWithSource/MlGeojsonLayerWithSource.stories.d.ts +10 -0
- package/dist/components/MlLayerSwipe/MlLayerSwipe.d.ts +1 -1
- package/dist/components/MlWmsLayer/MlWmsLayer.d.ts +2 -2
- package/dist/decorators/MapContextDecoratorHooks.d.ts +2 -0
- package/dist/decorators/ThemeWrapper.d.ts +1 -0
- package/dist/hooks/exportMap/index.d.ts +11 -0
- package/dist/hooks/exportMap/lib.d.ts +36 -0
- package/dist/hooks/useLayer.d.ts +6 -5
- package/dist/hooks/useLayerEvent.d.ts +2 -0
- package/dist/hooks/useMap.d.ts +1 -1
- package/dist/hooks/useMapState.stories.d.ts +2 -2
- package/dist/hooks/useSource.d.ts +17 -0
- package/dist/hooks/useSources.stories.d.ts +13 -0
- package/dist/index.d.ts +4 -0
- package/dist/index.esm.js +479 -190
- package/dist/index.esm.js.map +1 -1
- package/eslintErrorTest.js +10 -0
- package/package.json +7 -1
- package/public/thumbnails/MlCreatePdfForm.png +0 -0
- package/src/components/MapLibreMap/MapLibreMap.stories.js +72 -72
- package/src/components/MapLibreMap/MapLibreMap.test.js +60 -60
- package/src/components/MapLibreMap/MapLibreMap.tsx +82 -82
- package/src/components/MapLibreMap/lib/MapLibreGlWrapper.test.js +343 -343
- package/src/components/MapLibreMap/lib/MapLibreGlWrapper.ts +619 -619
- package/src/components/MlBasicComponent.js +25 -25
- package/src/components/MlCenterPosition/MlCenterPosition.stories.js +6 -6
- package/src/components/MlCenterPosition/MlCenterPosition.tsx +65 -65
- package/src/components/MlComponentTemplate/MlComponentTemplate.stories.js +5 -5
- package/src/components/MlComponentTemplate/MlComponentTemplate.tsx +23 -23
- package/src/components/MlCreatePdfButton/{MlCreatePdfButton.meta.json → MlCreatePdfButton.meta_.json} +0 -0
- package/src/components/MlCreatePdfButton/MlCreatePdfButton.stories.js +16 -16
- package/src/components/MlCreatePdfButton/MlCreatePdfButton.tsx +29 -29
- package/src/components/MlCreatePdfButton/lib/createPdf.ts +175 -175
- package/src/components/MlCreatePdfButton/lib/nominatimMap.ts +51 -51
- package/src/components/MlCreatePdfForm/MlCreatePdfForm.doc.de.md +3 -0
- package/src/components/MlCreatePdfForm/MlCreatePdfForm.meta.json +15 -0
- package/src/components/MlCreatePdfForm/MlCreatePdfForm.stories.tsx +152 -0
- package/src/components/MlCreatePdfForm/MlCreatePdfForm.tsx +39 -0
- package/src/components/MlCreatePdfForm/lib/PdfContext.tsx +53 -0
- package/src/components/MlCreatePdfForm/lib/PdfForm.tsx +161 -0
- package/src/components/MlCreatePdfForm/lib/PdfPreview.tsx +399 -0
- package/src/components/MlCreatePdfForm/lib/pdf.templates.ts +82 -0
- package/src/components/MlFeatureEditor/MlFeatureEditor.stories.js +55 -55
- package/src/components/MlFeatureEditor/MlFeatureEditor.test.js +105 -105
- package/src/components/MlFeatureEditor/MlFeatureEditor.tsx +119 -119
- package/src/components/MlFeatureEditor/custom-direct-select-mode.js +208 -208
- package/src/components/MlFeatureEditor/custom-polygon-mode.js +148 -148
- package/src/components/MlFeatureEditor/custom-select-mode.js +314 -314
- package/src/components/MlFeatureEditor/lib/common_selectors.js +34 -34
- package/src/components/MlFeatureEditor/lib/constants.js +61 -61
- package/src/components/MlFeatureEditor/lib/constrain_feature_movement.js +51 -51
- package/src/components/MlFeatureEditor/lib/create_midpoint.js +30 -30
- package/src/components/MlFeatureEditor/lib/create_supplementary_points.js +82 -82
- package/src/components/MlFeatureEditor/lib/create_vertex.js +16 -16
- package/src/components/MlFeatureEditor/lib/double_click_zoom.js +23 -23
- package/src/components/MlFeatureEditor/lib/euclidean_distance.js +3 -3
- package/src/components/MlFeatureEditor/lib/features_at.js +23 -23
- package/src/components/MlFeatureEditor/lib/get_features_and_set_cursor.js +15 -15
- package/src/components/MlFeatureEditor/lib/is_click.js +8 -8
- package/src/components/MlFeatureEditor/lib/is_event_at_coordinates.js +2 -2
- package/src/components/MlFeatureEditor/lib/is_tap.js +6 -6
- package/src/components/MlFeatureEditor/lib/map_event_to_bounding_box.js +4 -4
- package/src/components/MlFeatureEditor/lib/mode_handler.js +105 -105
- package/src/components/MlFeatureEditor/lib/mouse_event_point.js +5 -5
- package/src/components/MlFeatureEditor/lib/move_features.js +33 -33
- package/src/components/MlFeatureEditor/lib/sort_features.js +25 -25
- package/src/components/MlFeatureEditor/lib/string_set.js +36 -36
- package/src/components/MlFeatureEditor/lib/string_sets_are_equal.js +2 -2
- package/src/components/MlFeatureEditor/lib/theme.js +230 -230
- package/src/components/MlFeatureEditor/lib/to_dense_array.js +1 -1
- package/src/components/MlFeatureEditor/lib/utils.js +40 -40
- package/src/components/MlFillExtrusionLayer/MlFillExtrusionLayer.stories.js +9 -9
- package/src/components/MlFillExtrusionLayer/MlFillExtrusionLayer.test.js +4 -4
- package/src/components/MlFillExtrusionLayer/MlFillExtrusionLayer.tsx +65 -65
- package/src/components/MlFollowGps/MlFollowGps.stories.js +6 -6
- package/src/components/MlFollowGps/MlFollowGps.test.js +44 -44
- package/src/components/MlFollowGps/MlFollowGps.tsx +220 -220
- package/src/components/MlGPXViewer/MlGPXViewer.stories.js +15 -15
- package/src/components/MlGPXViewer/MlGPXViewer.test.js +12 -12
- package/src/components/MlGPXViewer/MlGPXViewer.tsx +345 -345
- package/src/components/MlGPXViewer/gpxConverter.js +496 -496
- package/src/components/MlGPXViewer/util/GeoJsonContext.ts +4 -4
- package/src/components/MlGPXViewer/util/GeoJsonProvider.tsx +16 -16
- package/src/components/MlGeoJsonLayer/MlGeoJsonLayer.stories.js +34 -34
- package/src/components/MlGeoJsonLayer/MlGeoJsonLayer.test.js +8 -8
- package/src/components/MlGeoJsonLayer/MlGeoJsonLayer.tsx +84 -84
- package/src/components/MlGeoJsonLayer/util/getDefaultLayerTypeByGeometry.ts +21 -21
- package/src/components/MlGeoJsonLayer/util/getDefaultPaintPropsByType.ts +27 -27
- package/src/components/MlGeojsonLayerWithSource/MlGeojsonLayerWithSource.doc.de.md +3 -0
- package/src/components/MlGeojsonLayerWithSource/MlGeojsonLayerWithSource.meta_.json +15 -0
- package/src/components/MlGeojsonLayerWithSource/MlGeojsonLayerWithSource.stories.js +19 -0
- package/src/components/MlGeojsonLayerWithSource/MlGeojsonLayerWithSource.tsx +128 -0
- package/src/components/MlImageMarkerLayer/MlImageMarkerLayer.stories.js +28 -28
- package/src/components/MlImageMarkerLayer/MlImageMarkerLayer.test.js +8 -8
- package/src/components/MlImageMarkerLayer/MlImageMarkerLayer.tsx +162 -162
- package/src/components/MlLayer/MlLayer.stories.js +5 -5
- package/src/components/MlLayer/MlLayer.test.js +86 -86
- package/src/components/MlLayer/MlLayer.tsx +36 -36
- package/src/components/MlLayerMagnify/MlLayerMagnify.stories.js +21 -21
- package/src/components/MlLayerMagnify/MlLayerMagnify.test.js +54 -54
- package/src/components/MlLayerMagnify/MlLayerMagnify.tsx +201 -201
- package/src/components/MlLayerSwipe/MlLayerSwipe.stories.js +20 -20
- package/src/components/MlLayerSwipe/MlLayerSwipe.test.js +54 -54
- package/src/components/MlLayerSwipe/MlLayerSwipe.tsx +130 -130
- package/src/components/MlLayerSwitcher/MlLayerSwitcher.js +194 -194
- package/src/components/MlLayerSwitcher/MlLayerSwitcher.stories.js +85 -85
- package/src/components/MlLayerSwitcher/components/LayerBox.js +57 -57
- package/src/components/MlMarker/MlMarker.stories.js +7 -7
- package/src/components/MlMarker/MlMarker.tsx +119 -119
- package/src/components/MlMeasureTool/MlMeasureTool.stories.js +64 -64
- package/src/components/MlMeasureTool/MlMeasureTool.tsx +38 -38
- package/src/components/MlNavigationCompass/MlNavigationCompass.stories.js +45 -45
- package/src/components/MlNavigationCompass/MlNavigationCompass.test.js +40 -40
- package/src/components/MlNavigationCompass/MlNavigationCompass.tsx +192 -192
- package/src/components/MlNavigationTools/MlNavigationTools.stories.js +18 -18
- package/src/components/MlNavigationTools/MlNavigationTools.tsx +173 -173
- package/src/components/MlOsmLayer/MlOsmLayer.js +49 -49
- package/src/components/MlOsmLayer/MlOsmLayer.stories_.js +29 -29
- package/src/components/MlOsmLayer/MlOsmLayer.test.js +8 -8
- package/src/components/MlScaleReference/MlScaleReference.js +82 -82
- package/src/components/MlScaleReference/MlScaleReference.stories.js +33 -35
- package/src/components/MlShareMapState/MlShareMapState.js +203 -203
- package/src/components/MlShareMapState/MlShareMapState.stories.js +68 -68
- package/src/components/MlSpatialElevationProfile/MlSpatialElevationProfile.js +201 -201
- package/src/components/MlSpatialElevationProfile/MlSpatialElevationProfile.stories.js +35 -35
- package/src/components/MlSpatialElevationProfile/MlSpatialElevationProfile.test.js +8 -8
- package/src/components/MlThreeJsLayer/MlThreeJsLayer.js +186 -186
- package/src/components/MlThreeJsLayer/MlThreeJsLayer.stories.js +21 -21
- package/src/components/MlThreeJsLayer/MlThreeJsLayer.test.js +24 -24
- package/src/components/MlThreeJsLayer/lib/GLTFLoader.js +3327 -3327
- package/src/components/MlTransitionGeoJsonLayer/MlTransitionGeoJsonLayer.stories.js +31 -30
- package/src/components/MlTransitionGeoJsonLayer/MlTransitionGeoJsonLayer.test.js +8 -8
- package/src/components/MlTransitionGeoJsonLayer/MlTransitionGeoJsonLayer.tsx +146 -146
- package/src/components/MlTransitionGeoJsonLayer/util/transitionFunctions.js +207 -207
- package/src/components/MlUseMapDebugger/MlUseMapDebugger.js +52 -52
- package/src/components/MlUseMapDebugger/MlUseMapDebugger.stories.js +13 -13
- package/src/components/MlVectorTileLayer/MlVectorTileLayer.stories.js +27 -27
- package/src/components/MlVectorTileLayer/MlVectorTileLayer.test.js +27 -27
- package/src/components/MlVectorTileLayer/MlVectorTileLayer.tsx +137 -137
- package/src/components/MlWmsFeatureInfoPopup/MlWmsFeatureInfoPopup.js +34 -34
- package/src/components/MlWmsFeatureInfoPopup/MlWmsFeatureInfoPopup.stories.js +7 -7
- package/src/components/MlWmsLayer/MlWmsLayer.stories.js +26 -26
- package/src/components/MlWmsLayer/MlWmsLayer.test.js +8 -8
- package/src/components/MlWmsLayer/MlWmsLayer.tsx +167 -167
- package/src/components/MlWmsLoader/MlWmsLoader.stories.js +27 -27
- package/src/components/MlWmsLoader/MlWmsLoader.tsx +254 -254
- package/src/contexts/MapComponentsProvider.test.js +229 -229
- package/src/contexts/MapContext.tsx +65 -65
- package/src/contexts/SimpleDataProvider.js +47 -47
- package/src/contexts/SimpleDataProvider.test.js +29 -29
- package/src/custom.d.tsx +14 -14
- package/src/decorators/MapContextDecorator.js +23 -25
- package/src/decorators/MapContextDecoratorHooks.js +34 -0
- package/src/decorators/MultiMapContextDecorator.js +63 -63
- package/src/decorators/NoNavToolsDecorator.js +17 -17
- package/src/decorators/ThemeWrapper.jsx +9 -0
- package/src/hooks/assets/pointWG.json +13 -0
- package/src/hooks/exportMap/index.ts +30 -0
- package/src/hooks/exportMap/lib.ts +187 -0
- package/src/hooks/useLayer.test.js +188 -188
- package/src/hooks/useLayer.ts +194 -180
- package/src/hooks/useLayerEvent.js +49 -0
- package/src/hooks/useMap.ts +67 -66
- package/src/hooks/useMapState.stories.js +78 -78
- package/src/hooks/useMapState.ts +161 -161
- package/src/hooks/useSource.ts +84 -0
- package/src/hooks/useSources.stories.js +232 -0
- package/src/hooks/useWms.js +71 -71
- package/src/index.ts +4 -0
- package/src/setupTests.js +86 -86
- package/src/ui_components/ImageLoader.js +62 -62
- package/src/ui_components/Legend.js +34 -34
- package/src/ui_components/LoadingOverlay.js +29 -29
- package/src/ui_components/LoadingOverlayContext.js +68 -68
- package/src/ui_components/Sidebar.js +80 -80
- package/src/ui_components/Tooltip.js +9 -9
- package/src/ui_components/TopToolbar.js +23 -23
- package/src/util/layerRemovalTest.js +111 -111
- package/src/util/sourceRemovalTest.js +103 -103
|
@@ -446,20 +446,20 @@ import PropTypes from "prop-types";
|
|
|
446
446
|
import { v4 as uuidv4 } from "uuid";
|
|
447
447
|
import MapContext from "../contexts/MapContext";
|
|
448
448
|
import MapLibreGlWrapper, {
|
|
449
|
-
|
|
450
|
-
|
|
449
|
+
LayerState,
|
|
450
|
+
ViewportState,
|
|
451
451
|
} from "../components/MapLibreMap/lib/MapLibreGlWrapper";
|
|
452
452
|
|
|
453
453
|
type useMapStateType = {
|
|
454
|
-
|
|
455
|
-
|
|
454
|
+
layers: (LayerState | undefined)[];
|
|
455
|
+
viewport: ViewportState | undefined;
|
|
456
456
|
};
|
|
457
457
|
type MapContext = {
|
|
458
|
-
|
|
459
|
-
|
|
460
|
-
|
|
461
|
-
|
|
462
|
-
|
|
458
|
+
mapIds: [string?];
|
|
459
|
+
mapExists: Function;
|
|
460
|
+
maps: [];
|
|
461
|
+
getMap: Function;
|
|
462
|
+
setMap: Function;
|
|
463
463
|
};
|
|
464
464
|
|
|
465
465
|
/**
|
|
@@ -468,165 +468,165 @@ type MapContext = {
|
|
|
468
468
|
* @component
|
|
469
469
|
*/
|
|
470
470
|
function useMapState(props: {
|
|
471
|
-
|
|
472
|
-
|
|
473
|
-
|
|
474
|
-
|
|
475
|
-
|
|
476
|
-
|
|
477
|
-
|
|
478
|
-
|
|
479
|
-
|
|
480
|
-
|
|
481
|
-
|
|
471
|
+
mapId?: string;
|
|
472
|
+
watch?: {
|
|
473
|
+
layers?: boolean;
|
|
474
|
+
sources?: boolean;
|
|
475
|
+
viewport?: boolean;
|
|
476
|
+
};
|
|
477
|
+
filter?: {
|
|
478
|
+
includeBaseLayers?: boolean;
|
|
479
|
+
matchLayerIds?: RegExp | string;
|
|
480
|
+
matchSourceIds?: RegExp | string;
|
|
481
|
+
};
|
|
482
482
|
}): useMapStateType {
|
|
483
|
-
|
|
484
|
-
|
|
483
|
+
// Use a useRef hook to reference the layer object to be able to access it later inside useEffect hooks
|
|
484
|
+
const mapContext = useContext<MapContextType>(MapContext);
|
|
485
485
|
|
|
486
|
-
|
|
487
|
-
|
|
486
|
+
const initializedRef = useRef(false);
|
|
487
|
+
const mapRef = useRef<MapLibreGlWrapper>();
|
|
488
488
|
|
|
489
|
-
|
|
490
|
-
|
|
489
|
+
const [viewport, setViewport] = useState<ViewportState | undefined>();
|
|
490
|
+
const viewportRef = useRef(undefined);
|
|
491
491
|
|
|
492
|
-
|
|
493
|
-
|
|
494
|
-
|
|
495
|
-
|
|
492
|
+
const [layers, setLayers] = useState<(LayerState | undefined)[]>([]);
|
|
493
|
+
const layersRef = useRef<string>();
|
|
494
|
+
//const mapRef = useRef(props.map);
|
|
495
|
+
const componentId = useRef(uuidv4());
|
|
496
496
|
|
|
497
|
-
|
|
498
|
-
|
|
499
|
-
|
|
500
|
-
|
|
501
|
-
|
|
502
|
-
|
|
503
|
-
|
|
504
|
-
<span class="fstat-no" title="function not covered" >
|
|
505
|
-
<span class="cstat-no" title="statement not covered" >
|
|
506
|
-
<span class="cstat-no" title="statement not covered" >
|
|
507
|
-
|
|
497
|
+
/**
|
|
498
|
+
* returns the element if it matches the defined filter criteria
|
|
499
|
+
* to be used as filter function on the layers array
|
|
500
|
+
*
|
|
501
|
+
* @param {object} layer
|
|
502
|
+
*/
|
|
503
|
+
const layerIdFilter = useCallback(
|
|
504
|
+
<span class="fstat-no" title="function not covered" > (l</span>ayer) => {
|
|
505
|
+
<span class="cstat-no" title="statement not covered" > if (!props?.filter?.includeBaseLayers && layer.baseLayer) {</span>
|
|
506
|
+
<span class="cstat-no" title="statement not covered" > return false;</span>
|
|
507
|
+
}
|
|
508
508
|
|
|
509
|
-
<span class="cstat-no" title="statement not covered" >
|
|
510
|
-
<span class="cstat-no" title="statement not covered" >
|
|
511
|
-
<span class="cstat-no" title="statement not covered" >
|
|
512
|
-
|
|
513
|
-
<span class="cstat-no" title="statement not covered" >
|
|
514
|
-
|
|
515
|
-
|
|
509
|
+
<span class="cstat-no" title="statement not covered" > if (typeof props.filter?.matchLayerIds !== "undefined") {</span>
|
|
510
|
+
<span class="cstat-no" title="statement not covered" > if (props.filter.matchLayerIds instanceof RegExp) {</span>
|
|
511
|
+
<span class="cstat-no" title="statement not covered" > return props.filter.matchLayerIds.test(layer.id);</span>
|
|
512
|
+
} else {
|
|
513
|
+
<span class="cstat-no" title="statement not covered" > return layer.id.includes(props.filter.matchLayerIds);</span>
|
|
514
|
+
}
|
|
515
|
+
}
|
|
516
516
|
|
|
517
|
-
<span class="cstat-no" title="statement not covered" >
|
|
518
|
-
|
|
519
|
-
|
|
520
|
-
|
|
517
|
+
<span class="cstat-no" title="statement not covered" > return true;</span>
|
|
518
|
+
},
|
|
519
|
+
[props.filter]
|
|
520
|
+
);
|
|
521
521
|
|
|
522
|
-
|
|
523
|
-
<span class="cstat-no" title="statement not covered" >
|
|
522
|
+
const refreshLayerState = useCallback(<span class="fstat-no" title="function not covered" >()</span> => {
|
|
523
|
+
<span class="cstat-no" title="statement not covered" > if (!mapRef.current) <span class="cstat-no" title="statement not covered" >return;</span></span>
|
|
524
524
|
|
|
525
|
-
|
|
526
|
-
|
|
527
|
-
<span class="cstat-no" title="statement not covered" >
|
|
528
|
-
<span class="cstat-no" title="statement not covered" >
|
|
529
|
-
<span class="cstat-no" title="statement not covered" >
|
|
530
|
-
|
|
531
|
-
|
|
525
|
+
let _layerState = <span class="cstat-no" title="statement not covered" >mapRef.current.wrapper.layerState.filter(layerIdFilter);</span>
|
|
526
|
+
let _layerStateString = <span class="cstat-no" title="statement not covered" >JSON.stringify(_layerState);</span>
|
|
527
|
+
<span class="cstat-no" title="statement not covered" > if (layersRef.current !== _layerStateString) {</span>
|
|
528
|
+
<span class="cstat-no" title="statement not covered" > layersRef.current = _layerStateString;</span>
|
|
529
|
+
<span class="cstat-no" title="statement not covered" > setLayers(_layerState);</span>
|
|
530
|
+
}
|
|
531
|
+
}, [layerIdFilter]);
|
|
532
532
|
|
|
533
|
-
|
|
534
|
-
|
|
533
|
+
useEffect(() => {
|
|
534
|
+
let _componentId = componentId.current;
|
|
535
535
|
|
|
536
|
-
|
|
537
|
-
|
|
538
|
-
|
|
539
|
-
|
|
540
|
-
|
|
541
|
-
|
|
542
|
-
|
|
543
|
-
|
|
544
|
-
|
|
536
|
+
return () => {
|
|
537
|
+
// cleanup all event listeners
|
|
538
|
+
<span class="missing-if-branch" title="else path not taken" >E</span>if (mapRef.current) {
|
|
539
|
+
mapRef.current.cleanup(_componentId);
|
|
540
|
+
mapRef.current = undefined;
|
|
541
|
+
}
|
|
542
|
+
initializedRef.current = false;
|
|
543
|
+
};
|
|
544
|
+
}, []);
|
|
545
545
|
|
|
546
|
-
|
|
547
|
-
|
|
548
|
-
|
|
549
|
-
|
|
550
|
-
|
|
551
|
-
|
|
546
|
+
useEffect(() => {
|
|
547
|
+
if (!mapContext.mapExists(props.mapId) || initializedRef.current) return;
|
|
548
|
+
// the MapLibre-gl instance (mapContext.getMap(props.mapId)) is accessible here
|
|
549
|
+
// initialize the layer and add it to the MapLibre-gl instance or do something else with it
|
|
550
|
+
initializedRef.current = true;
|
|
551
|
+
mapRef.current = mapContext.getMap(props.mapId);
|
|
552
552
|
|
|
553
|
-
|
|
554
|
-
<span class="cstat-no" title="statement not covered" >
|
|
555
|
-
<span class="cstat-no" title="statement not covered" >
|
|
556
|
-
|
|
553
|
+
<span class="missing-if-branch" title="if path not taken" >I</span>if (!mapRef.current) {
|
|
554
|
+
<span class="cstat-no" title="statement not covered" > initializedRef.current = false;</span>
|
|
555
|
+
<span class="cstat-no" title="statement not covered" > return;</span>
|
|
556
|
+
}
|
|
557
557
|
|
|
558
|
-
|
|
559
|
-
<span class="cstat-no" title="statement not covered" >
|
|
558
|
+
<span class="missing-if-branch" title="if path not taken" >I</span>if (props?.watch?.viewport) {
|
|
559
|
+
<span class="cstat-no" title="statement not covered" > setViewport(mapRef.current.wrapper.viewportState);</span>
|
|
560
560
|
|
|
561
|
-
|
|
562
|
-
<span class="cstat-no" title="statement not covered" >
|
|
563
|
-
|
|
564
|
-
<span class="fstat-no" title="function not covered" >
|
|
565
|
-
<span class="cstat-no" title="statement not covered" >
|
|
566
|
-
<span class="cstat-no" title="statement not covered" >
|
|
567
|
-
|
|
568
|
-
|
|
569
|
-
|
|
570
|
-
|
|
571
|
-
|
|
561
|
+
// register viewportchange event handler
|
|
562
|
+
<span class="cstat-no" title="statement not covered" > mapRef.current.wrapper.on(</span>
|
|
563
|
+
"viewportchange",
|
|
564
|
+
<span class="fstat-no" title="function not covered" > ()</span> => {
|
|
565
|
+
<span class="cstat-no" title="statement not covered" > if (viewportRef.current !== mapRef.current?.wrapper.viewportStateString) {</span>
|
|
566
|
+
<span class="cstat-no" title="statement not covered" > setViewport(mapRef.current?.wrapper.viewportState);</span>
|
|
567
|
+
}
|
|
568
|
+
},
|
|
569
|
+
componentId.current
|
|
570
|
+
);
|
|
571
|
+
}
|
|
572
572
|
|
|
573
|
-
|
|
574
|
-
|
|
575
|
-
<span class="cstat-no" title="statement not covered" >
|
|
573
|
+
// register layerchange event handler
|
|
574
|
+
<span class="missing-if-branch" title="if path not taken" >I</span>if (props?.watch?.layers) {
|
|
575
|
+
<span class="cstat-no" title="statement not covered" > refreshLayerState();</span>
|
|
576
576
|
|
|
577
|
-
<span class="cstat-no" title="statement not covered" >
|
|
578
|
-
|
|
579
|
-
|
|
580
|
-
|
|
581
|
-
|
|
582
|
-
|
|
583
|
-
|
|
584
|
-
|
|
585
|
-
|
|
586
|
-
|
|
587
|
-
|
|
577
|
+
<span class="cstat-no" title="statement not covered" > mapRef.current.wrapper.on(</span>
|
|
578
|
+
"layerchange",
|
|
579
|
+
refreshLayerState,
|
|
580
|
+
{
|
|
581
|
+
includeBaseLayers: props?.filter?.includeBaseLayers,
|
|
582
|
+
matchLayerIds: props?.filter?.matchLayerIds,
|
|
583
|
+
},
|
|
584
|
+
componentId.current
|
|
585
|
+
);
|
|
586
|
+
}
|
|
587
|
+
}, [mapContext.mapIds, mapContext, props.mapId, refreshLayerState, props]);
|
|
588
588
|
|
|
589
|
-
|
|
590
|
-
|
|
591
|
-
|
|
592
|
-
|
|
589
|
+
return {
|
|
590
|
+
layers,
|
|
591
|
+
viewport,
|
|
592
|
+
};
|
|
593
593
|
}
|
|
594
594
|
|
|
595
595
|
useMapState.defaultProps = {
|
|
596
|
-
|
|
597
|
-
|
|
598
|
-
|
|
599
|
-
|
|
600
|
-
|
|
601
|
-
|
|
602
|
-
|
|
603
|
-
|
|
604
|
-
|
|
596
|
+
mapId: undefined,
|
|
597
|
+
watch: {
|
|
598
|
+
layers: true,
|
|
599
|
+
sources: false,
|
|
600
|
+
viewport: false,
|
|
601
|
+
},
|
|
602
|
+
filter: {
|
|
603
|
+
includeBaseLayers: false,
|
|
604
|
+
},
|
|
605
605
|
};
|
|
606
606
|
|
|
607
607
|
useMapState.propTypes = {
|
|
608
|
-
|
|
609
|
-
|
|
610
|
-
|
|
611
|
-
|
|
612
|
-
|
|
613
|
-
|
|
614
|
-
|
|
615
|
-
|
|
616
|
-
|
|
617
|
-
|
|
618
|
-
|
|
619
|
-
|
|
620
|
-
|
|
621
|
-
|
|
622
|
-
|
|
623
|
-
|
|
624
|
-
|
|
625
|
-
|
|
626
|
-
|
|
627
|
-
|
|
628
|
-
|
|
629
|
-
|
|
608
|
+
/**
|
|
609
|
+
* Id of the target MapLibre instance in mapContext
|
|
610
|
+
*/
|
|
611
|
+
mapId: PropTypes.string,
|
|
612
|
+
/**
|
|
613
|
+
* Defines map Resources to watch
|
|
614
|
+
*/
|
|
615
|
+
watch: PropTypes.shape({
|
|
616
|
+
layers: PropTypes.bool,
|
|
617
|
+
sources: PropTypes.bool,
|
|
618
|
+
viewport: PropTypes.bool,
|
|
619
|
+
}),
|
|
620
|
+
/**
|
|
621
|
+
* Filter string or RegExp to more explicitly define the elements watched and increase performance
|
|
622
|
+
* strings will be matched using layerId.includes(matchString)
|
|
623
|
+
* RegExps will be matched using matchRegExp.test(layerId)
|
|
624
|
+
*/
|
|
625
|
+
filter: PropTypes.shape({
|
|
626
|
+
includeBaseLayers: PropTypes.bool,
|
|
627
|
+
matchLayerIds: PropTypes.oneOfType([PropTypes.string, PropTypes.instanceOf(RegExp)]),
|
|
628
|
+
matchSourceIds: PropTypes.oneOfType([PropTypes.string, PropTypes.instanceOf(RegExp)]),
|
|
629
|
+
}),
|
|
630
630
|
};
|
|
631
631
|
|
|
632
632
|
export default useMapState;
|
|
@@ -637,7 +637,7 @@ export default useMapState;
|
|
|
637
637
|
<div class='footer quiet pad2 space-top1 center small'>
|
|
638
638
|
Code coverage generated by
|
|
639
639
|
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
|
640
|
-
at
|
|
640
|
+
at Tue Oct 04 2022 11:59:51 GMT+0000 (Coordinated Universal Time)
|
|
641
641
|
</div>
|
|
642
642
|
<script src="../../prettify.js"></script>
|
|
643
643
|
<script>
|