@rnmapbox/maps 10.1.0-beta.5 → 10.1.0-beta.7
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/android/install.md +14 -0
- package/android/src/main/java/com/rnmapbox/rnmbx/RNMBXPackage.kt +182 -0
- package/android/src/main/java/com/rnmapbox/rnmbx/components/camera/RNMBXCamera.kt +5 -3
- package/android/src/main/java/com/rnmapbox/rnmbx/components/mapview/NativeMapViewModule.kt +14 -18
- package/android/src/main/java/com/rnmapbox/rnmbx/components/mapview/RNMBXAndroidTextureMapViewManager.kt +4 -2
- package/android/src/main/java/com/rnmapbox/rnmbx/components/mapview/RNMBXMapView.kt +39 -1
- package/android/src/main/java/com/rnmapbox/rnmbx/components/mapview/RNMBXMapViewManager.kt +9 -1
- package/android/src/main/java/com/rnmapbox/rnmbx/components/styles/RNMBXStyleImport.kt +37 -0
- package/android/src/main/java/com/rnmapbox/rnmbx/components/styles/RNMBXStyleImportManager.kt +57 -0
- package/android/src/main/java/com/rnmapbox/rnmbx/components/styles/RNMBXStyleValue.kt +2 -2
- package/android/src/main/java/com/rnmapbox/rnmbx/utils/ViewTagResolver.kt +68 -0
- package/android/src/main/java/com/rnmapbox/rnmbx/utils/extensions/Dynamic.kt +57 -0
- package/android/src/main/mapbox-v11-compat/v10/com/mapbox/rnmbx/v11compat/style.kt +9 -0
- package/android/src/main/mapbox-v11-compat/v11/com/mapbox/rnmbx/v11compat/style.kt +2 -0
- package/android/src/main/old-arch/com/facebook/react/viewmanagers/RNMBXAndroidTextureMapViewManagerDelegate.java +2 -1
- package/android/src/main/old-arch/com/facebook/react/viewmanagers/RNMBXAndroidTextureMapViewManagerInterface.java +2 -1
- package/android/src/main/old-arch/com/facebook/react/viewmanagers/RNMBXMapViewManagerDelegate.java +2 -1
- package/android/src/main/old-arch/com/facebook/react/viewmanagers/RNMBXMapViewManagerInterface.java +2 -1
- package/android/src/main/old-arch/com/facebook/react/viewmanagers/RNMBXStyleImportManagerDelegate.java +38 -0
- package/android/src/main/old-arch/com/facebook/react/viewmanagers/RNMBXStyleImportManagerInterface.java +20 -0
- package/android/src/main/old-arch/com/{mapbox → rnmapbox}/rnmbx/NativeMapViewModuleSpec.java +2 -1
- package/ios/RNMBX/RNMBXMapViewComponentView.mm +1 -7
- package/ios/RNMBX/RNMBXMapViewModule.mm +1 -9
- package/ios/RNMBX/RNMBXStyleImport.swift +42 -0
- package/ios/RNMBX/RNMBXStyleImportComponentView.h +17 -0
- package/ios/RNMBX/RNMBXStyleImportComponentView.mm +40 -0
- package/ios/RNMBX/RNMBXStyleImportManager.m +10 -0
- package/ios/RNMBX/RNMBXStyleImportManager.swift +12 -0
- package/ios/RNMBX/rnmapbox_maps-Swift.h.pre +9 -0
- package/ios/install.md +4 -0
- package/lib/commonjs/Mapbox.js +11 -6
- package/lib/commonjs/Mapbox.js.map +1 -1
- package/lib/commonjs/classes/AnimatedCoordinatesArray.js +1 -2
- package/lib/commonjs/classes/AnimatedCoordinatesArray.js.map +1 -1
- package/lib/commonjs/classes/AnimatedExtractCoordinateFromArray.js +1 -2
- package/lib/commonjs/classes/AnimatedExtractCoordinateFromArray.js.map +1 -1
- package/lib/commonjs/classes/AnimatedPoint.js +1 -2
- package/lib/commonjs/classes/AnimatedPoint.js.map +1 -1
- package/lib/commonjs/classes/AnimatedRouteCoordinatesArray.js +1 -2
- package/lib/commonjs/classes/AnimatedRouteCoordinatesArray.js.map +1 -1
- package/lib/commonjs/classes/AnimatedShape.js +1 -2
- package/lib/commonjs/classes/AnimatedShape.js.map +1 -1
- package/lib/commonjs/components/AbstractLayer.js +1 -2
- package/lib/commonjs/components/AbstractLayer.js.map +1 -1
- package/lib/commonjs/components/AbstractSource.js +1 -2
- package/lib/commonjs/components/AbstractSource.js.map +1 -1
- package/lib/commonjs/components/Annotation.js +1 -2
- package/lib/commonjs/components/Annotation.js.map +1 -1
- package/lib/commonjs/components/Atmosphere.js +2 -4
- package/lib/commonjs/components/Atmosphere.js.map +1 -1
- package/lib/commonjs/components/BackgroundLayer.js +2 -4
- package/lib/commonjs/components/BackgroundLayer.js.map +1 -1
- package/lib/commonjs/components/Callout.js +2 -4
- package/lib/commonjs/components/Callout.js.map +1 -1
- package/lib/commonjs/components/Camera.js +4 -6
- package/lib/commonjs/components/Camera.js.map +1 -1
- package/lib/commonjs/components/CircleLayer.js +2 -4
- package/lib/commonjs/components/CircleLayer.js.map +1 -1
- package/lib/commonjs/components/FillExtrusionLayer.js +2 -4
- package/lib/commonjs/components/FillExtrusionLayer.js.map +1 -1
- package/lib/commonjs/components/FillLayer.js +2 -4
- package/lib/commonjs/components/FillLayer.js.map +1 -1
- package/lib/commonjs/components/HeadingIndicator.js +1 -2
- package/lib/commonjs/components/HeadingIndicator.js.map +1 -1
- package/lib/commonjs/components/HeatmapLayer.js +2 -4
- package/lib/commonjs/components/HeatmapLayer.js.map +1 -1
- package/lib/commonjs/components/Image.js +2 -4
- package/lib/commonjs/components/Image.js.map +1 -1
- package/lib/commonjs/components/ImageSource.js +2 -4
- package/lib/commonjs/components/ImageSource.js.map +1 -1
- package/lib/commonjs/components/Images.js +2 -4
- package/lib/commonjs/components/Images.js.map +1 -1
- package/lib/commonjs/components/Light.js +2 -4
- package/lib/commonjs/components/Light.js.map +1 -1
- package/lib/commonjs/components/LineLayer.js +2 -4
- package/lib/commonjs/components/LineLayer.js.map +1 -1
- package/lib/commonjs/components/MapView.js +11 -7
- package/lib/commonjs/components/MapView.js.map +1 -1
- package/lib/commonjs/components/MarkerView.js +2 -4
- package/lib/commonjs/components/MarkerView.js.map +1 -1
- package/lib/commonjs/components/NativeBridgeComponent.js +1 -2
- package/lib/commonjs/components/NativeBridgeComponent.js.map +1 -1
- package/lib/commonjs/components/NativeUserLocation.js +1 -2
- package/lib/commonjs/components/NativeUserLocation.js.map +1 -1
- package/lib/commonjs/components/PointAnnotation.js +2 -4
- package/lib/commonjs/components/PointAnnotation.js.map +1 -1
- package/lib/commonjs/components/RasterDemSource.js +2 -4
- package/lib/commonjs/components/RasterDemSource.js.map +1 -1
- package/lib/commonjs/components/RasterLayer.js +2 -4
- package/lib/commonjs/components/RasterLayer.js.map +1 -1
- package/lib/commonjs/components/RasterSource.js +2 -4
- package/lib/commonjs/components/RasterSource.js.map +1 -1
- package/lib/commonjs/components/ShapeSource.js +1 -2
- package/lib/commonjs/components/ShapeSource.js.map +1 -1
- package/lib/commonjs/components/SkyLayer.js +2 -4
- package/lib/commonjs/components/SkyLayer.js.map +1 -1
- package/lib/commonjs/components/Style.js +1 -2
- package/lib/commonjs/components/Style.js.map +1 -1
- package/lib/commonjs/components/StyleImport.js +15 -0
- package/lib/commonjs/components/StyleImport.js.map +1 -0
- package/lib/commonjs/components/SymbolLayer.js +1 -2
- package/lib/commonjs/components/SymbolLayer.js.map +1 -1
- package/lib/commonjs/components/Terrain.js +2 -4
- package/lib/commonjs/components/Terrain.js.map +1 -1
- package/lib/commonjs/components/UserLocation.js +2 -4
- package/lib/commonjs/components/UserLocation.js.map +1 -1
- package/lib/commonjs/components/VectorSource.js +3 -4
- package/lib/commonjs/components/VectorSource.js.map +1 -1
- package/lib/commonjs/index.js +1 -2
- package/lib/commonjs/index.js.map +1 -1
- package/lib/commonjs/modules/location/locationManager.js +3 -4
- package/lib/commonjs/modules/location/locationManager.js.map +1 -1
- package/lib/commonjs/modules/offline/OfflineCreatePackOptions.js +1 -2
- package/lib/commonjs/modules/offline/OfflineCreatePackOptions.js.map +1 -1
- package/lib/commonjs/modules/offline/OfflinePack.js +1 -2
- package/lib/commonjs/modules/offline/OfflinePack.js.map +1 -1
- package/lib/commonjs/modules/offline/offlineManager.js +2 -4
- package/lib/commonjs/modules/offline/offlineManager.js.map +1 -1
- package/lib/commonjs/modules/snapshot/SnapshotOptions.js +1 -2
- package/lib/commonjs/modules/snapshot/SnapshotOptions.js.map +1 -1
- package/lib/commonjs/modules/snapshot/snapshotManager.js +1 -2
- package/lib/commonjs/modules/snapshot/snapshotManager.js.map +1 -1
- package/lib/commonjs/specs/NativeMapViewModule.js +1 -2
- package/lib/commonjs/specs/NativeMapViewModule.js.map +1 -1
- package/lib/commonjs/specs/RNMBXAndroidTextureMapViewNativeComponent.js +1 -2
- package/lib/commonjs/specs/RNMBXAndroidTextureMapViewNativeComponent.js.map +1 -1
- package/lib/commonjs/specs/RNMBXMapViewNativeComponent.js +1 -2
- package/lib/commonjs/specs/RNMBXMapViewNativeComponent.js.map +1 -1
- package/lib/commonjs/specs/RNMBXStyleImportNativeComponent.js +10 -0
- package/lib/commonjs/specs/RNMBXStyleImportNativeComponent.js.map +1 -0
- package/lib/commonjs/utils/Logger.js +1 -2
- package/lib/commonjs/utils/Logger.js.map +1 -1
- package/lib/commonjs/utils/animated/Animated.js +1 -2
- package/lib/commonjs/utils/animated/Animated.js.map +1 -1
- package/lib/commonjs/utils/geoUtils.js +5 -10
- package/lib/commonjs/utils/geoUtils.js.map +1 -1
- package/lib/commonjs/utils/styleMap.js +2 -4
- package/lib/commonjs/utils/styleMap.js.map +1 -1
- package/lib/commonjs/web/MapContext.js +1 -2
- package/lib/commonjs/web/MapContext.js.map +1 -1
- package/lib/commonjs/web/MapboxModule.js +1 -2
- package/lib/commonjs/web/MapboxModule.js.map +1 -1
- package/lib/commonjs/web/UnimplementedComponent.js +1 -2
- package/lib/commonjs/web/UnimplementedComponent.js.map +1 -1
- package/lib/commonjs/web/components/Camera.js +1 -2
- package/lib/commonjs/web/components/Camera.js.map +1 -1
- package/lib/commonjs/web/components/MapView.js +1 -2
- package/lib/commonjs/web/components/MapView.js.map +1 -1
- package/lib/commonjs/web/index.js +1 -2
- package/lib/commonjs/web/index.js.map +1 -1
- package/lib/commonjs/web/utils/Logger.js +1 -2
- package/lib/commonjs/web/utils/Logger.js.map +1 -1
- package/lib/module/Mapbox.js +1 -0
- package/lib/module/Mapbox.js.map +1 -1
- package/lib/module/components/MapView.js +9 -3
- package/lib/module/components/MapView.js.map +1 -1
- package/lib/module/components/StyleImport.js +6 -0
- package/lib/module/components/StyleImport.js.map +1 -0
- package/lib/module/specs/RNMBXStyleImportNativeComponent.js +3 -0
- package/lib/module/specs/RNMBXStyleImportNativeComponent.js.map +1 -0
- package/lib/typescript/Mapbox.d.ts +1 -0
- package/lib/typescript/Mapbox.d.ts.map +1 -1
- package/lib/typescript/components/MapView.d.ts +2 -2
- package/lib/typescript/components/MapView.d.ts.map +1 -1
- package/lib/typescript/components/StyleImport.d.ts +11 -0
- package/lib/typescript/components/StyleImport.d.ts.map +1 -0
- package/lib/typescript/specs/RNMBXAndroidTextureMapViewNativeComponent.d.ts +4 -4
- package/lib/typescript/specs/RNMBXAndroidTextureMapViewNativeComponent.d.ts.map +1 -1
- package/lib/typescript/specs/RNMBXMapViewNativeComponent.d.ts +4 -4
- package/lib/typescript/specs/RNMBXMapViewNativeComponent.d.ts.map +1 -1
- package/lib/typescript/specs/RNMBXStyleImportNativeComponent.d.ts +12 -0
- package/lib/typescript/specs/RNMBXStyleImportNativeComponent.d.ts.map +1 -0
- package/lib/typescript/specs/codegenUtils.d.ts +1 -1
- package/lib/typescript/specs/codegenUtils.d.ts.map +1 -1
- package/package.json +1 -1
- package/setup-jest.js +2 -0
- package/src/Mapbox.ts +1 -0
- package/src/components/MapView.tsx +7 -4
- package/src/components/StyleImport.tsx +17 -0
- package/src/specs/RNMBXAndroidTextureMapViewNativeComponent.ts +4 -4
- package/src/specs/RNMBXMapViewNativeComponent.ts +4 -4
- package/src/specs/RNMBXStyleImportNativeComponent.ts +14 -0
- package/src/specs/codegenUtils.ts +1 -1
- package/android/src/main/java/com/rnmapbox/rnmbx/RNMBXPackage.java +0 -215
package/android/install.md
CHANGED
|
@@ -35,6 +35,20 @@ allprojects {
|
|
|
35
35
|
}
|
|
36
36
|
```
|
|
37
37
|
|
|
38
|
+
### Setting Mapbox implementation
|
|
39
|
+
|
|
40
|
+
Note 10.1 or later only supports mapbox 10 and 11 implementations. So you no longer need to set this variable:
|
|
41
|
+
|
|
42
|
+
Set `RNMapboxMapsImpl` in `android/build.gradle > buildscript > ext` section
|
|
43
|
+
|
|
44
|
+
```groovy
|
|
45
|
+
buildscript {
|
|
46
|
+
ext {
|
|
47
|
+
RNMapboxMapsImpl = 'mapbox'
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
```
|
|
51
|
+
|
|
38
52
|
### Using non default mapbox version
|
|
39
53
|
|
|
40
54
|
*Warning*: If you set a custom version, make sure you revisit, any time you update @rnmapbox/maps. Setting it to earlier version than what we exepect will likely result in a build error.
|
|
@@ -0,0 +1,182 @@
|
|
|
1
|
+
package com.rnmapbox.rnmbx
|
|
2
|
+
|
|
3
|
+
import com.facebook.react.TurboReactPackage
|
|
4
|
+
import com.facebook.react.bridge.JavaScriptModule
|
|
5
|
+
import com.facebook.react.bridge.NativeModule
|
|
6
|
+
import com.facebook.react.bridge.ReactApplicationContext
|
|
7
|
+
import com.facebook.react.module.model.ReactModuleInfo
|
|
8
|
+
import com.facebook.react.module.model.ReactModuleInfoProvider
|
|
9
|
+
import com.facebook.react.uimanager.ViewManager
|
|
10
|
+
import com.rnmapbox.rnmbx.components.annotation.RNMBXCalloutManager
|
|
11
|
+
import com.rnmapbox.rnmbx.components.annotation.RNMBXMarkerViewManager
|
|
12
|
+
import com.rnmapbox.rnmbx.components.annotation.RNMBXPointAnnotationManager
|
|
13
|
+
import com.rnmapbox.rnmbx.components.camera.RNMBXCameraManager
|
|
14
|
+
import com.rnmapbox.rnmbx.components.images.RNMBXImageManager
|
|
15
|
+
import com.rnmapbox.rnmbx.components.images.RNMBXImagesManager
|
|
16
|
+
import com.rnmapbox.rnmbx.components.location.RNMBXNativeUserLocationManager
|
|
17
|
+
import com.rnmapbox.rnmbx.components.mapview.NativeMapViewModule
|
|
18
|
+
import com.rnmapbox.rnmbx.components.mapview.RNMBXAndroidTextureMapViewManager
|
|
19
|
+
import com.rnmapbox.rnmbx.components.mapview.RNMBXMapView
|
|
20
|
+
import com.rnmapbox.rnmbx.components.mapview.RNMBXMapViewManager
|
|
21
|
+
import com.rnmapbox.rnmbx.components.styles.RNMBXStyleImportManager
|
|
22
|
+
import com.rnmapbox.rnmbx.components.styles.atmosphere.RNMBXAtmosphereManager
|
|
23
|
+
import com.rnmapbox.rnmbx.components.styles.layers.RNMBXBackgroundLayerManager
|
|
24
|
+
import com.rnmapbox.rnmbx.components.styles.layers.RNMBXCircleLayerManager
|
|
25
|
+
import com.rnmapbox.rnmbx.components.styles.layers.RNMBXFillExtrusionLayerManager
|
|
26
|
+
import com.rnmapbox.rnmbx.components.styles.layers.RNMBXFillLayerManager
|
|
27
|
+
import com.rnmapbox.rnmbx.components.styles.layers.RNMBXHeatmapLayerManager
|
|
28
|
+
import com.rnmapbox.rnmbx.components.styles.layers.RNMBXLineLayerManager
|
|
29
|
+
import com.rnmapbox.rnmbx.components.styles.layers.RNMBXRasterLayerManager
|
|
30
|
+
import com.rnmapbox.rnmbx.components.styles.layers.RNMBXSkyLayerManager
|
|
31
|
+
import com.rnmapbox.rnmbx.components.styles.layers.RNMBXSymbolLayerManager
|
|
32
|
+
import com.rnmapbox.rnmbx.components.styles.light.RNMBXLightManager
|
|
33
|
+
import com.rnmapbox.rnmbx.components.styles.sources.RNMBXImageSourceManager
|
|
34
|
+
import com.rnmapbox.rnmbx.components.styles.sources.RNMBXRasterDemSourceManager
|
|
35
|
+
import com.rnmapbox.rnmbx.components.styles.sources.RNMBXRasterSourceManager
|
|
36
|
+
import com.rnmapbox.rnmbx.components.styles.sources.RNMBXShapeSourceManager
|
|
37
|
+
import com.rnmapbox.rnmbx.components.styles.sources.RNMBXVectorSourceManager
|
|
38
|
+
import com.rnmapbox.rnmbx.components.styles.terrain.RNMBXTerrainManager
|
|
39
|
+
import com.rnmapbox.rnmbx.modules.RNMBXLocationModule
|
|
40
|
+
import com.rnmapbox.rnmbx.modules.RNMBXLogging
|
|
41
|
+
import com.rnmapbox.rnmbx.modules.RNMBXModule
|
|
42
|
+
import com.rnmapbox.rnmbx.modules.RNMBXOfflineModule
|
|
43
|
+
import com.rnmapbox.rnmbx.modules.RNMBXSnapshotModule
|
|
44
|
+
import com.rnmapbox.rnmbx.utils.ViewTagResolver
|
|
45
|
+
|
|
46
|
+
class RNMBXPackage : TurboReactPackage() {
|
|
47
|
+
|
|
48
|
+
var mapViewTagResolver: ViewTagResolver<RNMBXMapView>? = null
|
|
49
|
+
fun getMapViewTagResolver(context: ReactApplicationContext) : ViewTagResolver<RNMBXMapView> {
|
|
50
|
+
val viewTagResolver = mapViewTagResolver
|
|
51
|
+
if (viewTagResolver == null) {
|
|
52
|
+
val viewTagResolver = ViewTagResolver<RNMBXMapView>(context)
|
|
53
|
+
mapViewTagResolver = viewTagResolver
|
|
54
|
+
return viewTagResolver
|
|
55
|
+
}
|
|
56
|
+
return viewTagResolver
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
override fun getModule(
|
|
60
|
+
s: String,
|
|
61
|
+
reactApplicationContext: ReactApplicationContext
|
|
62
|
+
): NativeModule? {
|
|
63
|
+
when (s) {
|
|
64
|
+
RNMBXModule.REACT_CLASS -> return RNMBXModule(reactApplicationContext)
|
|
65
|
+
RNMBXLocationModule.REACT_CLASS -> return RNMBXLocationModule(reactApplicationContext)
|
|
66
|
+
RNMBXOfflineModule.REACT_CLASS -> return RNMBXOfflineModule(reactApplicationContext)
|
|
67
|
+
RNMBXSnapshotModule.REACT_CLASS -> return RNMBXSnapshotModule(reactApplicationContext)
|
|
68
|
+
RNMBXLogging.REACT_CLASS -> return RNMBXLogging(reactApplicationContext)
|
|
69
|
+
NativeMapViewModule.NAME -> return NativeMapViewModule(reactApplicationContext, getMapViewTagResolver(reactApplicationContext))
|
|
70
|
+
}
|
|
71
|
+
return null
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
@Deprecated("")
|
|
75
|
+
fun createJSModules(): List<Class<out JavaScriptModule?>> {
|
|
76
|
+
return emptyList()
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
override fun createViewManagers(reactApplicationContext: ReactApplicationContext): List<ViewManager<*, *>> {
|
|
80
|
+
val managers: MutableList<ViewManager<*, *>> = ArrayList()
|
|
81
|
+
|
|
82
|
+
// components
|
|
83
|
+
managers.add(RNMBXCameraManager(reactApplicationContext))
|
|
84
|
+
managers.add(RNMBXAndroidTextureMapViewManager(reactApplicationContext, getMapViewTagResolver(reactApplicationContext)))
|
|
85
|
+
managers.add(RNMBXMapViewManager(reactApplicationContext, getMapViewTagResolver(reactApplicationContext)))
|
|
86
|
+
managers.add(RNMBXStyleImportManager(reactApplicationContext))
|
|
87
|
+
|
|
88
|
+
// annotations
|
|
89
|
+
managers.add(RNMBXMarkerViewManager(reactApplicationContext))
|
|
90
|
+
managers.add(RNMBXPointAnnotationManager(reactApplicationContext))
|
|
91
|
+
managers.add(RNMBXCalloutManager())
|
|
92
|
+
managers.add(RNMBXNativeUserLocationManager())
|
|
93
|
+
|
|
94
|
+
// sources
|
|
95
|
+
managers.add(RNMBXVectorSourceManager(reactApplicationContext))
|
|
96
|
+
managers.add(RNMBXShapeSourceManager(reactApplicationContext))
|
|
97
|
+
managers.add(RNMBXRasterDemSourceManager(reactApplicationContext))
|
|
98
|
+
managers.add(RNMBXRasterSourceManager(reactApplicationContext))
|
|
99
|
+
managers.add(RNMBXImageSourceManager())
|
|
100
|
+
|
|
101
|
+
// images
|
|
102
|
+
managers.add(RNMBXImagesManager(reactApplicationContext))
|
|
103
|
+
managers.add(RNMBXImageManager(reactApplicationContext))
|
|
104
|
+
|
|
105
|
+
// layers
|
|
106
|
+
managers.add(RNMBXFillLayerManager())
|
|
107
|
+
managers.add(RNMBXFillExtrusionLayerManager())
|
|
108
|
+
managers.add(RNMBXHeatmapLayerManager())
|
|
109
|
+
managers.add(RNMBXLineLayerManager())
|
|
110
|
+
managers.add(RNMBXCircleLayerManager())
|
|
111
|
+
managers.add(RNMBXSymbolLayerManager())
|
|
112
|
+
managers.add(RNMBXRasterLayerManager())
|
|
113
|
+
managers.add(RNMBXSkyLayerManager())
|
|
114
|
+
managers.add(RNMBXTerrainManager())
|
|
115
|
+
managers.add(RNMBXAtmosphereManager())
|
|
116
|
+
managers.add(RNMBXBackgroundLayerManager())
|
|
117
|
+
managers.add(RNMBXLightManager())
|
|
118
|
+
return managers
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
override fun getReactModuleInfoProvider(): ReactModuleInfoProvider {
|
|
122
|
+
return ReactModuleInfoProvider {
|
|
123
|
+
val moduleInfos: MutableMap<String, ReactModuleInfo> = HashMap()
|
|
124
|
+
val isTurboModule = BuildConfig.IS_NEW_ARCHITECTURE_ENABLED
|
|
125
|
+
moduleInfos[RNMBXModule.REACT_CLASS] = ReactModuleInfo(
|
|
126
|
+
RNMBXModule.REACT_CLASS,
|
|
127
|
+
RNMBXModule.REACT_CLASS,
|
|
128
|
+
false, // canOverrideExistingModule
|
|
129
|
+
false, // needsEagerInit
|
|
130
|
+
true, // hasConstants
|
|
131
|
+
false, // isCxxModule
|
|
132
|
+
false // isTurboModule
|
|
133
|
+
)
|
|
134
|
+
moduleInfos[RNMBXLocationModule.REACT_CLASS] = ReactModuleInfo(
|
|
135
|
+
RNMBXLocationModule.REACT_CLASS,
|
|
136
|
+
RNMBXLocationModule.REACT_CLASS,
|
|
137
|
+
false, // canOverrideExistingModule
|
|
138
|
+
false, // needsEagerInit
|
|
139
|
+
true, // hasConstants
|
|
140
|
+
false, // isCxxModule
|
|
141
|
+
false // isTurboModule
|
|
142
|
+
)
|
|
143
|
+
moduleInfos[RNMBXOfflineModule.REACT_CLASS] = ReactModuleInfo(
|
|
144
|
+
RNMBXOfflineModule.REACT_CLASS,
|
|
145
|
+
RNMBXOfflineModule.REACT_CLASS,
|
|
146
|
+
false, // canOverrideExistingModule
|
|
147
|
+
false, // needsEagerInit
|
|
148
|
+
true, // hasConstants
|
|
149
|
+
false, // isCxxModule
|
|
150
|
+
false // isTurboModule
|
|
151
|
+
)
|
|
152
|
+
moduleInfos[RNMBXSnapshotModule.REACT_CLASS] = ReactModuleInfo(
|
|
153
|
+
RNMBXSnapshotModule.REACT_CLASS,
|
|
154
|
+
RNMBXSnapshotModule.REACT_CLASS,
|
|
155
|
+
false, // canOverrideExistingModule
|
|
156
|
+
false, // needsEagerInit
|
|
157
|
+
true, // hasConstants
|
|
158
|
+
false, // isCxxModule
|
|
159
|
+
false // isTurboModule
|
|
160
|
+
)
|
|
161
|
+
moduleInfos[RNMBXLogging.REACT_CLASS] = ReactModuleInfo(
|
|
162
|
+
RNMBXLogging.REACT_CLASS,
|
|
163
|
+
RNMBXLogging.REACT_CLASS,
|
|
164
|
+
false, // canOverrideExistingModule
|
|
165
|
+
false, // needsEagerInit
|
|
166
|
+
true, // hasConstants
|
|
167
|
+
false, // isCxxModule
|
|
168
|
+
false // isTurboModule
|
|
169
|
+
)
|
|
170
|
+
moduleInfos[NativeMapViewModule.NAME] = ReactModuleInfo(
|
|
171
|
+
NativeMapViewModule.NAME,
|
|
172
|
+
NativeMapViewModule.NAME,
|
|
173
|
+
false, // canOverrideExistingModule
|
|
174
|
+
false, // needsEagerInit
|
|
175
|
+
false, // hasConstants
|
|
176
|
+
false, // isCxxModule
|
|
177
|
+
isTurboModule // isTurboModule
|
|
178
|
+
)
|
|
179
|
+
moduleInfos
|
|
180
|
+
}
|
|
181
|
+
}
|
|
182
|
+
}
|
|
@@ -91,9 +91,11 @@ class RNMBXCamera(private val mContext: Context, private val mManager: RNMBXCame
|
|
|
91
91
|
|
|
92
92
|
override fun addToMap(mapView: RNMBXMapView) {
|
|
93
93
|
super.addToMap(mapView)
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
94
|
+
mapView.callIfAttachedToWindow {
|
|
95
|
+
setInitialCamera()
|
|
96
|
+
updateMaxBounds()
|
|
97
|
+
mCameraStop?.let { updateCamera(it) }
|
|
98
|
+
}
|
|
97
99
|
_observeViewportState(mapView.mapView)
|
|
98
100
|
_updateViewportState()
|
|
99
101
|
}
|
|
@@ -1,38 +1,34 @@
|
|
|
1
1
|
package com.rnmapbox.rnmbx.components.mapview
|
|
2
2
|
|
|
3
|
+
import android.util.Log
|
|
3
4
|
import com.facebook.react.bridge.Promise
|
|
4
5
|
import com.facebook.react.bridge.ReactApplicationContext
|
|
5
6
|
import com.facebook.react.bridge.ReadableArray
|
|
7
|
+
import com.facebook.react.bridge.UIManager
|
|
6
8
|
import com.facebook.react.bridge.WritableMap
|
|
7
9
|
import com.facebook.react.bridge.WritableNativeMap
|
|
10
|
+
import com.facebook.react.uimanager.IllegalViewOperationException
|
|
8
11
|
import com.facebook.react.uimanager.UIManagerHelper
|
|
9
12
|
import com.facebook.react.uimanager.common.UIManagerType
|
|
10
13
|
import com.rnmapbox.rnmbx.BuildConfig
|
|
11
14
|
import com.rnmapbox.rnmbx.NativeMapViewModuleSpec
|
|
12
15
|
import com.rnmapbox.rnmbx.utils.ConvertUtils
|
|
13
16
|
import com.rnmapbox.rnmbx.utils.ExpressionParser
|
|
17
|
+
import com.rnmapbox.rnmbx.utils.Logger
|
|
18
|
+
import com.rnmapbox.rnmbx.utils.ViewTagResolver
|
|
14
19
|
import com.rnmapbox.rnmbx.utils.extensions.toCoordinate
|
|
15
20
|
import com.rnmapbox.rnmbx.utils.extensions.toScreenCoordinate
|
|
16
21
|
|
|
17
|
-
class NativeMapViewModule(context: ReactApplicationContext) : NativeMapViewModuleSpec(context) {
|
|
18
|
-
private fun withMapViewOnUIThread(
|
|
22
|
+
class NativeMapViewModule(context: ReactApplicationContext, val viewTagResolver: ViewTagResolver<RNMBXMapView>) : NativeMapViewModuleSpec(context) {
|
|
23
|
+
private fun withMapViewOnUIThread(
|
|
24
|
+
viewRef: Double?,
|
|
25
|
+
reject: Promise,
|
|
26
|
+
fn: (RNMBXMapView) -> Unit
|
|
27
|
+
) {
|
|
19
28
|
if (viewRef == null) {
|
|
20
|
-
|
|
21
|
-
}
|
|
22
|
-
|
|
23
|
-
reactApplicationContext.runOnUiQueueThread {
|
|
24
|
-
val manager = if (BuildConfig.IS_NEW_ARCHITECTURE_ENABLED)
|
|
25
|
-
UIManagerHelper.getUIManager(reactApplicationContext, UIManagerType.FABRIC)
|
|
26
|
-
else
|
|
27
|
-
UIManagerHelper.getUIManager(reactApplicationContext, UIManagerType.DEFAULT)
|
|
28
|
-
|
|
29
|
-
val view = manager?.resolveView(viewRef.toInt()) as? RNMBXMapView
|
|
30
|
-
|
|
31
|
-
if (view != null) {
|
|
32
|
-
fn(view)
|
|
33
|
-
} else {
|
|
34
|
-
promise.reject(Exception("cannot find map view for tag ${viewRef.toInt()}"))
|
|
35
|
-
}
|
|
29
|
+
reject.reject(Exception("viewRef is null"))
|
|
30
|
+
} else {
|
|
31
|
+
viewTagResolver.withViewResolved(viewRef.toInt(), reject, fn)
|
|
36
32
|
}
|
|
37
33
|
}
|
|
38
34
|
|
|
@@ -7,9 +7,11 @@ import com.facebook.react.viewmanagers.RNMBXAndroidTextureMapViewManagerDelegate
|
|
|
7
7
|
import com.facebook.react.viewmanagers.RNMBXAndroidTextureMapViewManagerInterface
|
|
8
8
|
import com.facebook.react.viewmanagers.RNMBXMapViewManagerDelegate
|
|
9
9
|
import com.mapbox.maps.MapInitOptions
|
|
10
|
+
import com.rnmapbox.rnmbx.utils.ViewTagResolver
|
|
10
11
|
|
|
11
|
-
class RNMBXAndroidTextureMapViewManager(context: ReactApplicationContext) : RNMBXMapViewManager(
|
|
12
|
-
context
|
|
12
|
+
class RNMBXAndroidTextureMapViewManager(context: ReactApplicationContext, viewTagResolver: ViewTagResolver<RNMBXMapView>) : RNMBXMapViewManager(
|
|
13
|
+
context,
|
|
14
|
+
viewTagResolver
|
|
13
15
|
), RNMBXAndroidTextureMapViewManagerInterface<RNMBXMapView> {
|
|
14
16
|
private val mDelegate: ViewManagerDelegate<RNMBXMapView>
|
|
15
17
|
|
|
@@ -4,6 +4,8 @@ import android.content.Context
|
|
|
4
4
|
import android.graphics.BitmapFactory
|
|
5
5
|
import android.graphics.PointF
|
|
6
6
|
import android.graphics.RectF
|
|
7
|
+
import android.os.Handler
|
|
8
|
+
import android.os.Looper
|
|
7
9
|
import android.util.Log
|
|
8
10
|
import android.view.Gravity
|
|
9
11
|
import android.view.View
|
|
@@ -102,6 +104,10 @@ interface RNMBXLifeCycleOwner : LifecycleOwner {
|
|
|
102
104
|
fun handleLifecycleEvent(event: Lifecycle.Event)
|
|
103
105
|
}
|
|
104
106
|
|
|
107
|
+
fun interface Cancelable {
|
|
108
|
+
fun cancel()
|
|
109
|
+
}
|
|
110
|
+
|
|
105
111
|
class RNMBXLifeCycle {
|
|
106
112
|
private var lifecycleOwner : RNMBXLifeCycleOwner? = null
|
|
107
113
|
|
|
@@ -150,6 +156,25 @@ class RNMBXLifeCycle {
|
|
|
150
156
|
fun getState() : Lifecycle.State {
|
|
151
157
|
return lifecycleOwner?.lifecycle?.currentState ?: Lifecycle.State.INITIALIZED;
|
|
152
158
|
}
|
|
159
|
+
|
|
160
|
+
var attachedToWindowWaiters : MutableList<()-> Unit> = mutableListOf()
|
|
161
|
+
|
|
162
|
+
fun callIfAttachedToWindow(callback: () -> Unit) : com.rnmapbox.rnmbx.components.mapview.Cancelable {
|
|
163
|
+
if (getState() == Lifecycle.State.STARTED) {
|
|
164
|
+
callback()
|
|
165
|
+
return com.rnmapbox.rnmbx.components.mapview.Cancelable {}
|
|
166
|
+
} else {
|
|
167
|
+
attachedToWindowWaiters.add(callback)
|
|
168
|
+
return com.rnmapbox.rnmbx.components.mapview.Cancelable {
|
|
169
|
+
attachedToWindowWaiters.removeIf { it === callback }
|
|
170
|
+
}
|
|
171
|
+
}
|
|
172
|
+
}
|
|
173
|
+
|
|
174
|
+
fun afterAttachFromLooper() {
|
|
175
|
+
attachedToWindowWaiters.forEach { it() }
|
|
176
|
+
attachedToWindowWaiters.clear()
|
|
177
|
+
}
|
|
153
178
|
}
|
|
154
179
|
|
|
155
180
|
data class FeatureEntry(val feature: AbstractMapFeature?, val view: View?, var addedToMap: Boolean = false) {
|
|
@@ -215,6 +240,11 @@ open class RNMBXMapView(private val mContext: Context, var mManager: RNMBXMapVie
|
|
|
215
240
|
return mapView.getMapboxMap()
|
|
216
241
|
}
|
|
217
242
|
|
|
243
|
+
override fun setId(id: Int) {
|
|
244
|
+
super.setId(id)
|
|
245
|
+
mManager.tagAssigned(id)
|
|
246
|
+
}
|
|
247
|
+
|
|
218
248
|
val pointAnnotationManager: PointAnnotationManager?
|
|
219
249
|
get() {
|
|
220
250
|
if (mPointAnnotationManager == null) {
|
|
@@ -438,6 +468,8 @@ open class RNMBXMapView(private val mContext: Context, var mManager: RNMBXMapVie
|
|
|
438
468
|
feature = childView
|
|
439
469
|
} else if (childView is RCTLayer<*>) {
|
|
440
470
|
feature = childView as AbstractMapFeature?
|
|
471
|
+
} else if (childView is AbstractMapFeature) {
|
|
472
|
+
feature = childView as AbstractMapFeature
|
|
441
473
|
} else if (childView is ViewGroup) {
|
|
442
474
|
val children = childView
|
|
443
475
|
Logger.w(LOG_TAG, "Adding non map components as a child of a map is deprecated!")
|
|
@@ -448,7 +480,6 @@ open class RNMBXMapView(private val mContext: Context, var mManager: RNMBXMapVie
|
|
|
448
480
|
|
|
449
481
|
val addToMap = styleLoaded
|
|
450
482
|
|
|
451
|
-
|
|
452
483
|
var entry = FeatureEntry(feature, childView, false)
|
|
453
484
|
if (addToMap) {
|
|
454
485
|
feature?.addToMap(this)
|
|
@@ -1412,6 +1443,13 @@ open class RNMBXMapView(private val mContext: Context, var mManager: RNMBXMapVie
|
|
|
1412
1443
|
override fun onAttachedToWindow() {
|
|
1413
1444
|
lifecycle.onAttachedToWindow(this)
|
|
1414
1445
|
super.onAttachedToWindow()
|
|
1446
|
+
Handler(Looper.getMainLooper()).post {
|
|
1447
|
+
lifecycle.afterAttachFromLooper()
|
|
1448
|
+
}
|
|
1449
|
+
}
|
|
1450
|
+
|
|
1451
|
+
fun callIfAttachedToWindow(callback: () -> Unit) {
|
|
1452
|
+
lifecycle.callIfAttachedToWindow(callback)
|
|
1415
1453
|
}
|
|
1416
1454
|
|
|
1417
1455
|
override fun onLayoutChange(
|
|
@@ -22,6 +22,7 @@ import com.rnmapbox.rnmbx.events.AndroidCallbackEvent
|
|
|
22
22
|
import com.rnmapbox.rnmbx.utils.ConvertUtils
|
|
23
23
|
import com.rnmapbox.rnmbx.utils.ExpressionParser
|
|
24
24
|
import com.rnmapbox.rnmbx.utils.Logger
|
|
25
|
+
import com.rnmapbox.rnmbx.utils.ViewTagResolver
|
|
25
26
|
import com.rnmapbox.rnmbx.utils.extensions.toCoordinate
|
|
26
27
|
import com.rnmapbox.rnmbx.utils.extensions.toRectF
|
|
27
28
|
import com.rnmapbox.rnmbx.utils.extensions.toScreenCoordinate
|
|
@@ -46,7 +47,7 @@ interface CommandResponse {
|
|
|
46
47
|
fun error(message: String)
|
|
47
48
|
}
|
|
48
49
|
|
|
49
|
-
open class RNMBXMapViewManager(context: ReactApplicationContext) :
|
|
50
|
+
open class RNMBXMapViewManager(context: ReactApplicationContext, val viewTagResolver: ViewTagResolver<RNMBXMapView>) :
|
|
50
51
|
AbstractEventEmitter<RNMBXMapView>(context), RNMBXMapViewManagerInterface<RNMBXMapView> {
|
|
51
52
|
private val mViews: MutableMap<Int, RNMBXMapView>
|
|
52
53
|
|
|
@@ -107,6 +108,9 @@ open class RNMBXMapViewManager(context: ReactApplicationContext) :
|
|
|
107
108
|
|
|
108
109
|
override fun onDropViewInstance(mapView: RNMBXMapView) {
|
|
109
110
|
val reactTag = mapView.id
|
|
111
|
+
|
|
112
|
+
viewTagResolver.viewRemoved(reactTag)
|
|
113
|
+
|
|
110
114
|
if (mViews.containsKey(reactTag)) {
|
|
111
115
|
mViews.remove(reactTag)
|
|
112
116
|
}
|
|
@@ -118,6 +122,10 @@ open class RNMBXMapViewManager(context: ReactApplicationContext) :
|
|
|
118
122
|
return mViews[reactTag]
|
|
119
123
|
}
|
|
120
124
|
|
|
125
|
+
fun tagAssigned(reactTag: Int) {
|
|
126
|
+
return viewTagResolver.tagAssigned(reactTag)
|
|
127
|
+
}
|
|
128
|
+
|
|
121
129
|
// region React Props
|
|
122
130
|
@ReactProp(name = "projection")
|
|
123
131
|
override fun setProjection(mapView: RNMBXMapView, projection: String?) {
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
package com.rnmapbox.rnmbx.components.styles
|
|
2
|
+
|
|
3
|
+
import android.content.Context
|
|
4
|
+
import android.view.ViewGroup
|
|
5
|
+
import com.mapbox.bindgen.Value
|
|
6
|
+
import com.rnmapbox.rnmbx.components.AbstractMapFeature
|
|
7
|
+
import com.rnmapbox.rnmbx.components.mapview.RNMBXMapView
|
|
8
|
+
|
|
9
|
+
import com.rnmapbox.rnmbx.v11compat.style.*
|
|
10
|
+
|
|
11
|
+
class RNMBXStyleImport(context: Context) : AbstractMapFeature(context) {
|
|
12
|
+
var id: String? = null;
|
|
13
|
+
|
|
14
|
+
var config: HashMap<String, Value> = hashMapOf()
|
|
15
|
+
set(value: HashMap<String, Value>) {
|
|
16
|
+
field = value
|
|
17
|
+
if (mMapView != null) { updateConfig() }
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
override fun addToMap(mapView: RNMBXMapView) {
|
|
21
|
+
super.addToMap(mapView)
|
|
22
|
+
updateConfig()
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
fun updateConfig() {
|
|
26
|
+
withMapView {mapView ->
|
|
27
|
+
id?.let { id ->
|
|
28
|
+
val config = this.config
|
|
29
|
+
if (config.isNotEmpty()) {
|
|
30
|
+
mapView.mapView.getMapboxMap().getStyle()
|
|
31
|
+
?.setStyleImportConfigProperties(id, config)
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
}
|
|
37
|
+
}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
package com.rnmapbox.rnmbx.components.styles
|
|
2
|
+
|
|
3
|
+
import com.facebook.react.bridge.Dynamic
|
|
4
|
+
import com.facebook.react.bridge.ReactApplicationContext
|
|
5
|
+
import com.facebook.react.bridge.ReadableMap
|
|
6
|
+
import com.facebook.react.bridge.ReadableType
|
|
7
|
+
import com.facebook.react.common.MapBuilder
|
|
8
|
+
import com.facebook.react.uimanager.ThemedReactContext
|
|
9
|
+
import com.facebook.react.uimanager.annotations.ReactProp
|
|
10
|
+
import com.facebook.react.viewmanagers.RNMBXStyleImportManagerInterface
|
|
11
|
+
import com.rnmapbox.rnmbx.components.AbstractEventEmitter
|
|
12
|
+
import com.rnmapbox.rnmbx.components.mapview.RNMBXMapView
|
|
13
|
+
import com.mapbox.bindgen.Value
|
|
14
|
+
import com.rnmapbox.rnmbx.utils.Logger
|
|
15
|
+
import com.rnmapbox.rnmbx.utils.extensions.toValueHashMap
|
|
16
|
+
import org.json.JSONObject
|
|
17
|
+
|
|
18
|
+
class RNMBXStyleImportManager(context: ReactApplicationContext) :
|
|
19
|
+
AbstractEventEmitter<RNMBXStyleImport>(context),
|
|
20
|
+
RNMBXStyleImportManagerInterface<RNMBXStyleImport> {
|
|
21
|
+
override fun customEvents(): Map<String, String>? {
|
|
22
|
+
return MapBuilder.builder<String, String>().build()
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
override fun getName(): String {
|
|
26
|
+
return REACT_CLASS
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
override fun createViewInstance(context: ThemedReactContext): RNMBXStyleImport {
|
|
30
|
+
return RNMBXStyleImport(context)
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
companion object {
|
|
34
|
+
const val REACT_CLASS = "RNMBXStyleImport"
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
@ReactProp(name = "id")
|
|
38
|
+
override fun setId(view: RNMBXStyleImport, value: String?) {
|
|
39
|
+
if (value != null) {
|
|
40
|
+
view.id = value
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
@ReactProp(name = "existing")
|
|
45
|
+
override fun setExisting(view: RNMBXStyleImport, value: Boolean) {
|
|
46
|
+
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
@ReactProp(name = "config")
|
|
50
|
+
override fun setConfig(view: RNMBXStyleImport, value: Dynamic) {
|
|
51
|
+
if (value.type != ReadableType.Map) {
|
|
52
|
+
Logger.e(REACT_CLASS, "config expected Map but received: ${value.type}")
|
|
53
|
+
} else {
|
|
54
|
+
view.config = value.asMap().toValueHashMap()
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
}
|
|
@@ -169,12 +169,12 @@ class RNMBXStyleValue(config: ReadableMap) {
|
|
|
169
169
|
config.getMap("enablePlacementTransitions")!!.getBoolean("value")
|
|
170
170
|
}
|
|
171
171
|
var duration = 300
|
|
172
|
-
|
|
172
|
+
var delay = 0
|
|
173
173
|
if (config.hasKey("duration") && ReadableType.Map == config.getType("duration")) {
|
|
174
174
|
duration = config.getMap("duration")!!.getInt("value")
|
|
175
175
|
}
|
|
176
176
|
if (config.hasKey("delay") && ReadableType.Map == config.getType("delay")) {
|
|
177
|
-
|
|
177
|
+
delay = config.getMap("delay")!!.getInt("value")
|
|
178
178
|
}
|
|
179
179
|
return Builder().duration(duration.toLong()).delay(delay.toLong()).build()
|
|
180
180
|
}
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
package com.rnmapbox.rnmbx.utils
|
|
2
|
+
|
|
3
|
+
import com.facebook.react.bridge.Promise
|
|
4
|
+
import com.facebook.react.bridge.ReactApplicationContext
|
|
5
|
+
import com.facebook.react.bridge.UIManager
|
|
6
|
+
import com.facebook.react.uimanager.IllegalViewOperationException
|
|
7
|
+
import com.facebook.react.uimanager.UIManagerHelper
|
|
8
|
+
import com.facebook.react.uimanager.common.UIManagerType
|
|
9
|
+
import com.rnmapbox.rnmbx.BuildConfig
|
|
10
|
+
|
|
11
|
+
data class ViewTagWaiter<V>(
|
|
12
|
+
val fn: (V) -> Unit,
|
|
13
|
+
val reject: Promise?
|
|
14
|
+
)
|
|
15
|
+
|
|
16
|
+
// see https://github.com/rnmapbox/maps/pull/3074
|
|
17
|
+
open class ViewTagResolver<V>(val context: ReactApplicationContext) {
|
|
18
|
+
private val createdViews: HashSet<Int> = hashSetOf<Int>()
|
|
19
|
+
private val viewWaiters: HashMap<Int, MutableList<ViewTagWaiter<V>>> = hashMapOf()
|
|
20
|
+
|
|
21
|
+
// to be called from view.setId
|
|
22
|
+
fun tagAssigned(viewTag: Int) {
|
|
23
|
+
createdViews.add(viewTag)
|
|
24
|
+
|
|
25
|
+
val list = viewWaiters[viewTag]
|
|
26
|
+
if (list != null) {
|
|
27
|
+
context.runOnUiQueueThread {
|
|
28
|
+
try {
|
|
29
|
+
val view = manager.resolveView(viewTag) as V
|
|
30
|
+
|
|
31
|
+
list.forEach { it.fn(view) }
|
|
32
|
+
} catch (err: IllegalViewOperationException) {
|
|
33
|
+
list.forEach { it.reject?.reject(err) }
|
|
34
|
+
}
|
|
35
|
+
viewWaiters.remove(viewTag)
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
fun viewRemoved(viewTag: Int) {
|
|
41
|
+
viewWaiters.remove(viewTag)
|
|
42
|
+
createdViews.remove(viewTag)
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
private val manager : UIManager
|
|
46
|
+
get() =
|
|
47
|
+
if (BuildConfig.IS_NEW_ARCHITECTURE_ENABLED) {
|
|
48
|
+
UIManagerHelper.getUIManager(context, UIManagerType.FABRIC)!!
|
|
49
|
+
} else {
|
|
50
|
+
UIManagerHelper.getUIManager(context, UIManagerType.DEFAULT)!!
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
// calls on UiQueueThread with resolved view
|
|
54
|
+
fun withViewResolved(viewTag: Int, reject: Promise? = null, fn: (V) -> Unit) {
|
|
55
|
+
context.runOnUiQueueThread() {
|
|
56
|
+
try {
|
|
57
|
+
val view = manager.resolveView(viewTag) as V
|
|
58
|
+
fn(view)
|
|
59
|
+
} catch (err: IllegalViewOperationException) {
|
|
60
|
+
if (!createdViews.contains(viewTag)) {
|
|
61
|
+
viewWaiters.getOrPut(viewTag) { mutableListOf<ViewTagWaiter<V>>() }.add(ViewTagWaiter(fn, reject))
|
|
62
|
+
} else {
|
|
63
|
+
reject?.reject(err)
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
package com.rnmapbox.rnmbx.utils.extensions
|
|
2
|
+
|
|
3
|
+
import com.facebook.react.bridge.Dynamic;
|
|
4
|
+
import com.facebook.react.bridge.ReadableArray
|
|
5
|
+
import com.facebook.react.bridge.ReadableMap
|
|
6
|
+
import com.facebook.react.bridge.ReadableType
|
|
7
|
+
import com.mapbox.bindgen.Value
|
|
8
|
+
|
|
9
|
+
fun ReadableMap.toValueHashMap(): HashMap<String, Value> {
|
|
10
|
+
var result = hashMapOf<String, Value>()
|
|
11
|
+
var iterator = keySetIterator()
|
|
12
|
+
while (iterator.hasNextKey()) {
|
|
13
|
+
val i = iterator.nextKey()
|
|
14
|
+
|
|
15
|
+
result[i] = when (getType(i)) {
|
|
16
|
+
ReadableType.Null -> Value.nullValue()
|
|
17
|
+
ReadableType.Boolean -> Value.valueOf(getBoolean(i))
|
|
18
|
+
ReadableType.Number -> Value.valueOf(getDouble(i))
|
|
19
|
+
ReadableType.String -> Value.valueOf(getString(i)!!)
|
|
20
|
+
ReadableType.Array -> getArray(i)!!.toValue()
|
|
21
|
+
ReadableType.Map -> getMap(i)!!.toValue()
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
return result
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
fun ReadableMap.toValue() : Value {
|
|
28
|
+
return Value.valueOf(toValueHashMap())
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
fun ReadableArray.toValue(): Value {
|
|
32
|
+
var result = ArrayList<Value>(size())
|
|
33
|
+
|
|
34
|
+
for (i in 0 until size()) {
|
|
35
|
+
result.add(
|
|
36
|
+
when (getType(i)) {
|
|
37
|
+
ReadableType.Null -> Value.nullValue()
|
|
38
|
+
ReadableType.Boolean -> Value.valueOf(getBoolean(i))
|
|
39
|
+
ReadableType.Number -> Value.valueOf(getDouble(i))
|
|
40
|
+
ReadableType.String -> Value.valueOf(getString(i))
|
|
41
|
+
ReadableType.Array -> getArray(i).toValue()
|
|
42
|
+
ReadableType.Map -> getMap(i).toValue()
|
|
43
|
+
})
|
|
44
|
+
}
|
|
45
|
+
return Value.valueOf(result)
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
fun Dynamic.toValue(): Value {
|
|
49
|
+
return when (type) {
|
|
50
|
+
ReadableType.Null -> Value.nullValue()
|
|
51
|
+
ReadableType.Boolean -> Value.valueOf(asBoolean())
|
|
52
|
+
ReadableType.Number -> Value.valueOf(asDouble())
|
|
53
|
+
ReadableType.String -> Value.valueOf(asString())
|
|
54
|
+
ReadableType.Array -> asArray().toValue()
|
|
55
|
+
ReadableType.Map -> asMap().toValue()
|
|
56
|
+
}
|
|
57
|
+
}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
package com.rnmapbox.rnmbx.v11compat.style;
|
|
2
|
+
|
|
3
|
+
import com.mapbox.bindgen.Value
|
|
4
|
+
import com.mapbox.maps.Style
|
|
5
|
+
import com.rnmapbox.rnmbx.utils.Logger
|
|
6
|
+
|
|
7
|
+
fun Style?.setStyleImportConfigProperties(id: String, config: HashMap<String, Value>) {
|
|
8
|
+
Logger.w("RNBMXStyleImport", "Style imports only supported on mapbox v11")
|
|
9
|
+
}
|
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* This code was generated by [react-native-codegen](https://www.npmjs.com/package/react-native-codegen).
|
|
3
3
|
*
|
|
4
|
-
*
|
|
4
|
+
* Do not edit this file as changes may cause incorrect behavior and will be lost
|
|
5
|
+
* once the code is regenerated.
|
|
5
6
|
*
|
|
6
7
|
* @generated by codegen project: GeneratePropsJavaDelegate.js
|
|
7
8
|
*/
|