@rnmapbox/maps 10.0.0-beta.40 → 10.0.0-beta.42

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 (52) hide show
  1. package/.eslintrc.js +2 -1
  2. package/.github/workflows/ios-actions.yml +1 -1
  3. package/android/rctmgl/src/main/java-v10/com/mapbox/rctmgl/RCTMGLPackage.java +2 -0
  4. package/android/rctmgl/src/main/java-v10/com/mapbox/rctmgl/components/AbstractMapFeature.kt +10 -0
  5. package/android/rctmgl/src/main/java-v10/com/mapbox/rctmgl/components/camera/CameraUpdateItem.kt +135 -0
  6. package/android/rctmgl/src/main/java-v10/com/mapbox/rctmgl/components/camera/CameraUpdateQueue.kt +68 -0
  7. package/android/rctmgl/src/main/java-v10/com/mapbox/rctmgl/components/camera/RCTMGLCamera.kt +498 -0
  8. package/android/rctmgl/src/main/java-v10/com/mapbox/rctmgl/components/camera/RCTMGLCameraManager.kt +114 -0
  9. package/android/rctmgl/src/main/java-v10/com/mapbox/rctmgl/components/location/UserLocation.java +1 -1
  10. package/android/rctmgl/src/main/java-v10/com/mapbox/rctmgl/components/location/UserTrackingMode.java +1 -1
  11. package/android/rctmgl/src/main/java-v10/com/mapbox/rctmgl/components/mapview/RCTMGLMapView.kt +21 -31
  12. package/android/rctmgl/src/main/java-v10/com/mapbox/rctmgl/components/styles/RCTMGLStyleFactory.java +26 -0
  13. package/android/rctmgl/src/main/java-v10/com/mapbox/rctmgl/components/styles/atmosphere/RCTMGLAtmosphere.kt +59 -0
  14. package/android/rctmgl/src/main/java-v10/com/mapbox/rctmgl/components/styles/atmosphere/RCTMGLAtmosphereManager.kt +30 -0
  15. package/android/rctmgl/src/main/java-v10/com/mapbox/rctmgl/components/styles/sources/RCTSource.kt +14 -9
  16. package/android/rctmgl/src/main/java-v10/com/mapbox/rctmgl/components/styles/terrain/RCTMGLTerrain.kt +32 -27
  17. package/android/rctmgl/src/main/java-v10/com/mapbox/rctmgl/components/styles/terrain/RCTMGLTerrainManager.kt +5 -11
  18. package/docs/Annotations.md +4 -3
  19. package/docs/Camera.md +1 -1
  20. package/docs/MapView.md +2 -2
  21. package/docs/Terrain.md +64 -9
  22. package/docs/docs.json +54 -45
  23. package/index.d.ts +2 -7
  24. package/ios/RCTMGL-v10/RCTMGLCamera.swift +33 -5
  25. package/ios/RCTMGL-v10/RCTMGLImages.swift +1 -99
  26. package/ios/RCTMGL-v10/RCTMGLLogging.swift +8 -0
  27. package/ios/RCTMGL-v10/RCTMGLMapView.swift +35 -39
  28. package/ios/RCTMGL-v10/RCTMGLSingletonLayer.swift +7 -1
  29. package/ios/RCTMGL-v10/RCTMGLStyle.swift +34 -0
  30. package/ios/RCTMGL-v10/RCTMGLTerrain.swift +56 -63
  31. package/ios/RCTMGL-v10/RCTMGLTerrainManager.m +2 -3
  32. package/javascript/components/Camera.tsx +17 -1
  33. package/javascript/components/MapView.js +8 -12
  34. package/javascript/components/Terrain.tsx +112 -0
  35. package/javascript/index.js +8 -4
  36. package/javascript/types/index.ts +0 -14
  37. package/javascript/utils/MapboxStyles.ts +20 -2
  38. package/javascript/utils/deprecation.ts +39 -0
  39. package/javascript/utils/styleMap.ts +26 -0
  40. package/package.json +6 -6
  41. package/scripts/autogenHelpers/globals.js +2 -0
  42. package/scripts/autogenerate.js +13 -0
  43. package/scripts/templates/MapboxStyles.ts.ejs +1 -1
  44. package/scripts/templates/RCTMGLStyleFactoryv10.java.ejs +1 -0
  45. package/.eslintignore +0 -1
  46. package/android/rctmgl/src/main/java-v10/com/mapbox/rctmgl/components/AbstractMapFeature.java +0 -15
  47. package/android/rctmgl/src/main/java-v10/com/mapbox/rctmgl/components/camera/CameraUpdateItem.java +0 -167
  48. package/android/rctmgl/src/main/java-v10/com/mapbox/rctmgl/components/camera/CameraUpdateQueue.java +0 -73
  49. package/android/rctmgl/src/main/java-v10/com/mapbox/rctmgl/components/camera/RCTMGLCamera.java +0 -662
  50. package/android/rctmgl/src/main/java-v10/com/mapbox/rctmgl/components/camera/RCTMGLCameraManager.java +0 -102
  51. package/javascript/components/Terrain.js +0 -56
  52. package/javascript/utils/deprecation.js +0 -24
package/.eslintrc.js CHANGED
@@ -78,8 +78,9 @@ module.exports = {
78
78
  'no-unused-expressions': ['error', { allowTaggedTemplates: true }],
79
79
  'no-plusplus': ['error', { allowForLoopAfterthoughts: true }],
80
80
  'react-native/no-inline-styles': 0,
81
+ '@typescript-eslint/no-explicit-any': ['error', { ignoreRestArgs: true }],
81
82
  },
82
- ignorePatterns: ['**/rnmapbox.web.symlink'],
83
+ ignorePatterns: ['**/rnmapbox.web.symlink', 'plugin/build/'],
83
84
  overrides: [
84
85
  {
85
86
  // Match TypeScript Files
@@ -64,7 +64,7 @@ jobs:
64
64
  brew install xcbeautify
65
65
 
66
66
  - name: Build for detox
67
- run: yarn detox build --configuration ios.debug | xcbeautify -qq
67
+ run: set -o pipefail && NSUnbufferedIO=YES yarn detox build --configuration ios.debug 2>&1 | xcbeautify -qq
68
68
 
69
69
  - name: Test with detox
70
70
  run: |
@@ -20,6 +20,7 @@ import com.mapbox.rctmgl.components.images.RCTMGLImagesManager;
20
20
  import com.mapbox.rctmgl.components.location.RCTMGLNativeUserLocationManager;
21
21
  import com.mapbox.rctmgl.components.mapview.RCTMGLMapViewManager;
22
22
  import com.mapbox.rctmgl.components.mapview.RCTMGLAndroidTextureMapViewManager;
23
+ import com.mapbox.rctmgl.components.styles.atmosphere.RCTMGLAtmosphereManager;
23
24
  import com.mapbox.rctmgl.components.styles.layers.RCTMGLBackgroundLayerManager;
24
25
  import com.mapbox.rctmgl.components.styles.layers.RCTMGLCircleLayerManager;
25
26
  import com.mapbox.rctmgl.components.styles.layers.RCTMGLFillExtrusionLayerManager;
@@ -107,6 +108,7 @@ public class RCTMGLPackage implements ReactPackage {
107
108
  managers.add(new RCTMGLRasterLayerManager());
108
109
  managers.add(new RCTMGLSkyLayerManager());
109
110
  managers.add(new RCTMGLTerrainManager());
111
+ managers.add(new RCTMGLAtmosphereManager());
110
112
  managers.add(new RCTMGLBackgroundLayerManager());
111
113
 
112
114
  managers.add(new RCTMGLLightManager());
@@ -0,0 +1,10 @@
1
+ package com.mapbox.rctmgl.components
2
+
3
+ import android.content.Context
4
+ import com.facebook.react.views.view.ReactViewGroup
5
+ import com.mapbox.rctmgl.components.mapview.RCTMGLMapView
6
+
7
+ abstract class AbstractMapFeature(context: Context?) : ReactViewGroup(context) {
8
+ abstract fun addToMap(mapView: RCTMGLMapView)
9
+ abstract fun removeFromMap(mapView: RCTMGLMapView)
10
+ }
@@ -0,0 +1,135 @@
1
+ package com.mapbox.rctmgl.components.camera
2
+
3
+ import android.animation.Animator
4
+ import com.mapbox.maps.plugin.animation.MapAnimationOptions
5
+ import com.mapbox.maps.MapboxMap
6
+ import com.mapbox.maps.plugin.animation.CameraAnimationsPlugin
7
+ import com.mapbox.rctmgl.components.camera.CameraStop
8
+ import com.mapbox.rctmgl.components.camera.RCTMGLCamera
9
+ import com.mapbox.maps.CameraOptions
10
+ import android.view.animation.LinearInterpolator
11
+ import android.view.animation.AccelerateDecelerateInterpolator
12
+ import com.mapbox.rctmgl.components.camera.CameraUpdateQueue.OnCompleteAllListener
13
+ import com.mapbox.rctmgl.components.mapview.RCTMGLMapView
14
+ import com.mapbox.rctmgl.components.camera.CameraUpdateItem
15
+ import com.facebook.react.bridge.ReactApplicationContext
16
+ import com.mapbox.rctmgl.components.AbstractEventEmitter
17
+ import com.mapbox.rctmgl.components.camera.RCTMGLCameraManager
18
+ import com.facebook.react.uimanager.ThemedReactContext
19
+ import com.facebook.react.uimanager.annotations.ReactProp
20
+ import com.facebook.react.bridge.ReadableMap
21
+ import com.mapbox.maps.plugin.animation.MapAnimationOptions.Companion.mapAnimationOptions
22
+ import com.mapbox.maps.plugin.animation.easeTo
23
+ import com.mapbox.maps.plugin.animation.flyTo
24
+ import com.mapbox.rctmgl.components.camera.constants.CameraMode
25
+ import java.lang.ref.WeakReference
26
+ import java.util.concurrent.ExecutionException
27
+ import java.util.concurrent.RunnableFuture
28
+ import java.util.concurrent.TimeUnit
29
+ import java.util.concurrent.TimeoutException
30
+
31
+ class CameraUpdateItem(
32
+ map: MapboxMap,
33
+ private val mCameraUpdate: CameraOptions,
34
+ val duration: Int,
35
+ private val mCallback: Animator.AnimatorListener?,
36
+ @param:CameraMode.Mode private val mCameraMode: Int
37
+ ) : RunnableFuture<Void?> {
38
+ private var isCameraActionFinished = false
39
+ private var isCameraActionCancelled = false
40
+ private val mMap: WeakReference<MapboxMap>
41
+
42
+ internal enum class CallbackMode {
43
+ START, END, CANCEL, REPEAT
44
+ }
45
+
46
+ init {
47
+ mMap = WeakReference(map)
48
+ }
49
+
50
+ override fun run() {
51
+ val callback: Animator.AnimatorListener = object : Animator.AnimatorListener {
52
+ override fun onAnimationStart(animator: Animator) {
53
+ isCameraActionCancelled = false
54
+ isCameraActionFinished = false
55
+ mCallback?.onAnimationStart(animator)
56
+ }
57
+
58
+ override fun onAnimationEnd(animator: Animator) {
59
+ isCameraActionCancelled = false
60
+ isCameraActionFinished = true
61
+ mCallback?.onAnimationEnd(animator)
62
+ }
63
+
64
+ override fun onAnimationCancel(animator: Animator) {
65
+ isCameraActionCancelled = true
66
+ isCameraActionFinished = false
67
+ mCallback?.onAnimationCancel(animator)
68
+ }
69
+
70
+ override fun onAnimationRepeat(animator: Animator) {
71
+ isCameraActionCancelled = false
72
+ isCameraActionFinished = false
73
+ mCallback?.onAnimationRepeat(animator)
74
+ }
75
+ }
76
+ val map = mMap.get()
77
+ if (map == null) {
78
+ isCameraActionCancelled = true
79
+ return
80
+ }
81
+ val animationOptions = MapAnimationOptions.Builder().apply {
82
+ animatorListener(callback)
83
+ }
84
+
85
+ // animateCamera / easeCamera only allows positive duration
86
+ if (duration == 0 || mCameraMode == CameraMode.NONE) {
87
+ map.flyTo(mCameraUpdate, animationOptions.apply {
88
+ duration(0)
89
+ animatorListener(callback)
90
+ }.build())
91
+ }
92
+
93
+ // On iOS a duration of -1 means default or dynamic duration (based on flight-path length)
94
+ // On Android we can fallback to Mapbox's default duration as there is no such API
95
+ if (duration > 0) {
96
+ animationOptions.apply { duration(duration.toLong()) }
97
+ }
98
+ if (mCameraMode == CameraMode.FLIGHT) {
99
+ map.flyTo(mCameraUpdate, animationOptions.build())
100
+ } else if (mCameraMode == CameraMode.LINEAR) {
101
+ map.easeTo(
102
+ mCameraUpdate,
103
+ animationOptions.apply { interpolator(LinearInterpolator()) }.build()
104
+ )
105
+ } else if (mCameraMode == CameraMode.EASE) {
106
+ map.easeTo(
107
+ mCameraUpdate,
108
+ animationOptions.apply{ interpolator(AccelerateDecelerateInterpolator()) }.build()
109
+ )
110
+ }
111
+ null
112
+ }
113
+
114
+ override fun cancel(mayInterruptIfRunning: Boolean): Boolean {
115
+ return false
116
+ }
117
+
118
+ override fun isCancelled(): Boolean {
119
+ return isCameraActionCancelled
120
+ }
121
+
122
+ override fun isDone(): Boolean {
123
+ return isCameraActionFinished
124
+ }
125
+
126
+ @Throws(InterruptedException::class, ExecutionException::class)
127
+ override fun get(): Void? {
128
+ return null
129
+ }
130
+
131
+ @Throws(InterruptedException::class, ExecutionException::class, TimeoutException::class)
132
+ override fun get(timeout: Long, unit: TimeUnit): Void? {
133
+ return null
134
+ }
135
+ }
@@ -0,0 +1,68 @@
1
+ package com.mapbox.rctmgl.components.camera
2
+
3
+ import com.mapbox.rctmgl.components.camera.CameraStop.Companion.fromReadableMap
4
+ import com.mapbox.maps.MapboxMap
5
+ import com.mapbox.maps.CameraOptions
6
+ import com.mapbox.maps.plugin.animation.CameraAnimationsPlugin
7
+ import android.view.animation.LinearInterpolator
8
+ import android.view.animation.AccelerateDecelerateInterpolator
9
+ import com.mapbox.rctmgl.components.camera.CameraStop
10
+ import com.mapbox.rctmgl.components.camera.CameraUpdateQueue.OnCompleteAllListener
11
+ import com.mapbox.rctmgl.components.mapview.RCTMGLMapView
12
+ import com.mapbox.rctmgl.components.camera.CameraUpdateItem
13
+ import com.facebook.react.bridge.ReactApplicationContext
14
+ import com.mapbox.rctmgl.components.AbstractEventEmitter
15
+ import com.mapbox.rctmgl.components.camera.RCTMGLCamera
16
+ import com.mapbox.rctmgl.components.camera.RCTMGLCameraManager
17
+ import com.facebook.react.uimanager.ThemedReactContext
18
+ import com.facebook.react.uimanager.annotations.ReactProp
19
+ import com.facebook.react.bridge.ReadableMap
20
+ import java.util.*
21
+
22
+ class CameraUpdateQueue {
23
+ private var mQueue: Queue<CameraStop>
24
+ private var mCompleteListener: OnCompleteAllListener? = null
25
+
26
+ interface OnCompleteAllListener {
27
+ fun onCompleteAll()
28
+ }
29
+
30
+ init {
31
+ mQueue = LinkedList()
32
+ }
33
+
34
+ fun offer(item: CameraStop) {
35
+ mQueue.offer(item)
36
+ }
37
+
38
+ fun size(): Int {
39
+ return mQueue.size
40
+ }
41
+
42
+ val isEmpty: Boolean
43
+ get() = mQueue.isEmpty()
44
+
45
+ fun flush() {
46
+ while (mQueue.size > 0) {
47
+ mQueue.remove()
48
+ }
49
+ mQueue = LinkedList()
50
+ }
51
+
52
+ fun setOnCompleteAllListener(listener: OnCompleteAllListener?) {
53
+ mCompleteListener = listener
54
+ }
55
+
56
+ fun execute(map: RCTMGLMapView?) {
57
+ if (mQueue.isEmpty()) {
58
+ if (mCompleteListener != null) {
59
+ mCompleteListener!!.onCompleteAll()
60
+ }
61
+ return
62
+ }
63
+ val stop = mQueue.poll() ?: return
64
+ val item = stop.toCameraUpdate(map!!)
65
+ item.run()
66
+ execute(map)
67
+ }
68
+ }