@rnmapbox/maps 10.1.12 → 10.1.14

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 (45) hide show
  1. package/android/src/main/java/com/rnmapbox/rnmbx/RNMBXPackage.kt +13 -2
  2. package/android/src/main/java/com/rnmapbox/rnmbx/components/annotation/RNMBXPointAnnotationCoordinator.kt +39 -40
  3. package/android/src/main/java/com/rnmapbox/rnmbx/components/camera/CameraStop.kt +9 -15
  4. package/android/src/main/java/com/rnmapbox/rnmbx/components/camera/CameraUpdateItem.kt +1 -2
  5. package/android/src/main/java/com/rnmapbox/rnmbx/components/camera/RNMBXCamera.kt +15 -13
  6. package/android/src/main/java/com/rnmapbox/rnmbx/components/camera/RNMBXCameraManager.kt +4 -3
  7. package/android/src/main/java/com/rnmapbox/rnmbx/components/camera/RNMBXCameraModule.kt +51 -0
  8. package/android/src/main/java/com/rnmapbox/rnmbx/components/camera/RNMBXVIewportManager.kt +2 -1
  9. package/android/src/main/java/com/rnmapbox/rnmbx/components/camera/constants/CameraMode.java +3 -2
  10. package/android/src/main/java/com/rnmapbox/rnmbx/components/styles/RNMBXStyleFactory.kt +1046 -987
  11. package/android/src/main/java/com/rnmapbox/rnmbx/modules/RNMBXModule.kt +1 -0
  12. package/android/src/main/java/com/rnmapbox/rnmbx/utils/ViewTagResolver.kt +10 -2
  13. package/android/src/main/old-arch/com/rnmapbox/rnmbx/NativeRNMBXCameraModuleSpec.java +41 -0
  14. package/ios/RNMBX/RNMBXCamera.swift +49 -54
  15. package/ios/RNMBX/RNMBXCameraModule.h +18 -0
  16. package/ios/RNMBX/RNMBXCameraModule.mm +67 -0
  17. package/lib/commonjs/components/Camera.js +14 -15
  18. package/lib/commonjs/components/Camera.js.map +1 -1
  19. package/lib/commonjs/components/Viewport.js +2 -43
  20. package/lib/commonjs/components/Viewport.js.map +1 -1
  21. package/lib/commonjs/specs/NativeRNMBXCameraModule.js +10 -0
  22. package/lib/commonjs/specs/NativeRNMBXCameraModule.js.map +1 -0
  23. package/lib/commonjs/utils/NativeCommands.js +50 -0
  24. package/lib/commonjs/utils/NativeCommands.js.map +1 -0
  25. package/lib/module/components/Camera.js +15 -16
  26. package/lib/module/components/Camera.js.map +1 -1
  27. package/lib/module/components/Viewport.js +1 -42
  28. package/lib/module/components/Viewport.js.map +1 -1
  29. package/lib/module/specs/NativeRNMBXCameraModule.js +6 -0
  30. package/lib/module/specs/NativeRNMBXCameraModule.js.map +1 -0
  31. package/lib/module/utils/NativeCommands.js +43 -0
  32. package/lib/module/utils/NativeCommands.js.map +1 -0
  33. package/lib/typescript/src/components/Camera.d.ts.map +1 -1
  34. package/lib/typescript/src/components/Viewport.d.ts +0 -3
  35. package/lib/typescript/src/components/Viewport.d.ts.map +1 -1
  36. package/lib/typescript/src/specs/NativeRNMBXCameraModule.d.ts +27 -0
  37. package/lib/typescript/src/specs/NativeRNMBXCameraModule.d.ts.map +1 -0
  38. package/lib/typescript/src/utils/NativeCommands.d.ts +25 -0
  39. package/lib/typescript/src/utils/NativeCommands.d.ts.map +1 -0
  40. package/package.json +1 -1
  41. package/setup-jest.js +4 -0
  42. package/src/components/Camera.tsx +22 -10
  43. package/src/components/Viewport.tsx +2 -94
  44. package/src/specs/NativeRNMBXCameraModule.ts +36 -0
  45. package/src/utils/NativeCommands.ts +89 -0
@@ -13,6 +13,7 @@ import com.rnmapbox.rnmbx.components.annotation.RNMBXMarkerViewManager
13
13
  import com.rnmapbox.rnmbx.components.annotation.RNMBXPointAnnotationManager
14
14
  import com.rnmapbox.rnmbx.components.annotation.RNMBXPointAnnotationModule
15
15
  import com.rnmapbox.rnmbx.components.camera.RNMBXCameraManager
16
+ import com.rnmapbox.rnmbx.components.camera.RNMBXCameraModule
16
17
  import com.rnmapbox.rnmbx.components.camera.RNMBXViewport
17
18
  import com.rnmapbox.rnmbx.components.camera.RNMBXViewportManager
18
19
  import com.rnmapbox.rnmbx.components.camera.RNMBXViewportModule
@@ -96,6 +97,7 @@ class RNMBXPackage : TurboReactPackage() {
96
97
  RNMBXSnapshotModule.REACT_CLASS -> return RNMBXSnapshotModule(reactApplicationContext)
97
98
  RNMBXLogging.REACT_CLASS -> return RNMBXLogging(reactApplicationContext)
98
99
  NativeMapViewModule.NAME -> return NativeMapViewModule(reactApplicationContext, getViewTagResolver(reactApplicationContext, s))
100
+ RNMBXCameraModule.NAME -> return RNMBXCameraModule(reactApplicationContext, getViewTagResolver(reactApplicationContext, s))
99
101
  RNMBXViewportModule.NAME -> return RNMBXViewportModule(reactApplicationContext, getViewTagResolver(reactApplicationContext, s))
100
102
  RNMBXShapeSourceModule.NAME -> return RNMBXShapeSourceModule(reactApplicationContext, getViewTagResolver(reactApplicationContext, s))
101
103
  RNMBXImageModule.NAME -> return RNMBXImageModule(reactApplicationContext, getViewTagResolver(reactApplicationContext, s))
@@ -114,8 +116,8 @@ class RNMBXPackage : TurboReactPackage() {
114
116
  val managers: MutableList<ViewManager<*, *>> = ArrayList()
115
117
 
116
118
  // components
117
- managers.add(RNMBXCameraManager(reactApplicationContext))
118
- managers.add(RNMBXViewportManager(reactApplicationContext))
119
+ managers.add(RNMBXCameraManager(reactApplicationContext, getViewTagResolver(reactApplicationContext, "RNMBXCameraManager")))
120
+ managers.add(RNMBXViewportManager(reactApplicationContext, getViewTagResolver(reactApplicationContext, "RNMBXViewportManager")))
119
121
  managers.add(RNMBXMapViewManager(reactApplicationContext, getViewTagResolver(reactApplicationContext, "RNMBXMapViewManager")))
120
122
  managers.add(RNMBXStyleImportManager(reactApplicationContext))
121
123
  managers.add(RNMBXModelsManager(reactApplicationContext))
@@ -245,6 +247,15 @@ class RNMBXPackage : TurboReactPackage() {
245
247
  false, // isCxxModule
246
248
  isTurboModule // isTurboModule
247
249
  )
250
+ moduleInfos[RNMBXCameraModule.NAME] = ReactModuleInfo(
251
+ RNMBXCameraModule.NAME,
252
+ RNMBXCameraModule.NAME,
253
+ false, // canOverrideExistingModule
254
+ false, // needsEagerInit
255
+ false, // hasConstants
256
+ false, // isCxxModule
257
+ isTurboModule // isTurboModule
258
+ )
248
259
  moduleInfos[RNMBXShapeSourceModule.NAME] = ReactModuleInfo(
249
260
  RNMBXShapeSourceModule.NAME,
250
261
  RNMBXShapeSourceModule.NAME,
@@ -29,6 +29,45 @@ class RNMBXPointAnnotationCoordinator(val mapView: MapView) {
29
29
  onAnnotationClick(pointAnnotation)
30
30
  false
31
31
  })
32
+ manager.addDragListener(object : OnPointAnnotationDragListener {
33
+ override fun onAnnotationDragStarted(_annotation: Annotation<*>) {
34
+ annotationDragged = true;
35
+ var reactAnnotation: RNMBXPointAnnotation? = null
36
+ for (key in annotations.keys) {
37
+ val annotation = annotations[key]
38
+ val curMarkerID = annotation?.mapboxID
39
+ if (_annotation.id == curMarkerID) {
40
+ reactAnnotation = annotation
41
+ }
42
+ }
43
+ reactAnnotation?.let { it.onDragStart() }
44
+ }
45
+
46
+ override fun onAnnotationDrag(_annotation: Annotation<*>) {
47
+ var reactAnnotation: RNMBXPointAnnotation? = null
48
+ for (key in annotations.keys) {
49
+ val annotation = annotations[key]
50
+ val curMarkerID = annotation?.mapboxID
51
+ if (_annotation.id == curMarkerID) {
52
+ reactAnnotation = annotation
53
+ }
54
+ }
55
+ reactAnnotation?.let { it.onDrag() }
56
+ }
57
+
58
+ override fun onAnnotationDragFinished(_annotation: Annotation<*>) {
59
+ annotationDragged = false;
60
+ var reactAnnotation: RNMBXPointAnnotation? = null
61
+ for (key in annotations.keys) {
62
+ val annotation = annotations[key]
63
+ val curMarkerID = annotation?.mapboxID
64
+ if (_annotation.id == curMarkerID) {
65
+ reactAnnotation = annotation
66
+ }
67
+ }
68
+ reactAnnotation?.let { it.onDragEnd() }
69
+ }
70
+ })
32
71
  }
33
72
 
34
73
  fun getAndClearAnnotationClicked(): Boolean {
@@ -70,46 +109,6 @@ class RNMBXPointAnnotationCoordinator(val mapView: MapView) {
70
109
  newSelected = null
71
110
  }
72
111
 
73
- manager.addDragListener(object : OnPointAnnotationDragListener {
74
- override fun onAnnotationDragStarted(_annotation: Annotation<*>) {
75
- annotationDragged = true;
76
- var reactAnnotation: RNMBXPointAnnotation? = null
77
- for (key in annotations.keys) {
78
- val annotation = annotations[key]
79
- val curMarkerID = annotation?.mapboxID
80
- if (_annotation.id == curMarkerID) {
81
- reactAnnotation = annotation
82
- }
83
- }
84
- reactAnnotation?.let { it.onDragStart() }
85
- }
86
-
87
- override fun onAnnotationDrag(_annotation: Annotation<*>) {
88
- var reactAnnotation: RNMBXPointAnnotation? = null
89
- for (key in annotations.keys) {
90
- val annotation = annotations[key]
91
- val curMarkerID = annotation?.mapboxID
92
- if (_annotation.id == curMarkerID) {
93
- reactAnnotation = annotation
94
- }
95
- }
96
- reactAnnotation?.let { it.onDrag() }
97
- }
98
-
99
- override fun onAnnotationDragFinished(_annotation: Annotation<*>) {
100
- annotationDragged = false;
101
- var reactAnnotation: RNMBXPointAnnotation? = null
102
- for (key in annotations.keys) {
103
- val annotation = annotations[key]
104
- val curMarkerID = annotation?.mapboxID
105
- if (_annotation.id == curMarkerID) {
106
- reactAnnotation = annotation
107
- }
108
- }
109
- reactAnnotation?.let { it.onDragEnd() }
110
- }
111
- })
112
-
113
112
  oldSelected?.let { deselectAnnotation(it) }
114
113
  newSelected?.let { selectAnnotation(it) }
115
114
 
@@ -31,8 +31,6 @@ class CameraStop {
31
31
  private var mDuration = 2000
32
32
  private var mCallback: Animator.AnimatorListener? = null
33
33
 
34
- var ts: Int? = null
35
-
36
34
  fun setBearing(bearing: Double) {
37
35
  mBearing = bearing
38
36
  }
@@ -97,12 +95,10 @@ class CameraStop {
97
95
  fun toCameraUpdate(mapView: RNMBXMapView): CameraUpdateItem {
98
96
  val map = mapView.getMapboxMap()
99
97
  val currentCamera = map.cameraState
98
+
100
99
  val builder = CameraOptions.Builder()
101
100
  builder.center(currentCamera.center)
102
101
  builder.bearing(currentCamera.bearing)
103
-
104
- val currentPadding = currentCamera.padding
105
-
106
102
  builder.padding(currentCamera.padding)
107
103
  builder.zoom(currentCamera.zoom)
108
104
  if (mBearing != null) {
@@ -111,7 +107,11 @@ class CameraStop {
111
107
  if (mTilt != null) {
112
108
  builder.pitch(mTilt)
113
109
  }
110
+ if (mZoom != null) {
111
+ builder.zoom(mZoom)
112
+ }
114
113
 
114
+ val currentPadding = currentCamera.padding
115
115
  val paddingLeft: Int = mPaddingLeft ?: currentPadding.left.toInt()
116
116
  val paddingTop: Int = mPaddingTop ?: currentPadding.top.toInt()
117
117
  val paddingRight: Int = mPaddingRight ?: currentPadding.right.toInt()
@@ -119,10 +119,10 @@ class CameraStop {
119
119
  val cameraPadding = intArrayOf(paddingLeft, paddingTop, paddingRight, paddingBottom)
120
120
  val cameraPaddingClipped = clippedPadding(cameraPadding, mapView)
121
121
  val cameraPaddingEdgeInsets = convert(cameraPaddingClipped)
122
+ builder.padding(cameraPaddingEdgeInsets)
122
123
 
123
124
  if (mLatLng != null) {
124
125
  builder.center(mLatLng!!.point)
125
- builder.padding(cameraPaddingEdgeInsets)
126
126
  } else if (mBounds != null) {
127
127
  val tilt = if (mTilt != null) mTilt!! else currentCamera.pitch
128
128
  val bearing = if (mBearing != null) mBearing!! else currentCamera.bearing
@@ -133,17 +133,14 @@ class CameraStop {
133
133
  bearing,
134
134
  tilt
135
135
  )
136
-
137
136
  builder.center(boundsCamera.center)
138
137
  builder.anchor(boundsCamera.anchor)
139
138
  builder.zoom(boundsCamera.zoom)
139
+ builder.bearing(boundsCamera.bearing)
140
+ builder.pitch(boundsCamera.pitch)
140
141
  builder.padding(boundsCamera.padding)
141
142
  }
142
143
 
143
- if (mZoom != null) {
144
- builder.zoom(mZoom)
145
- }
146
-
147
144
  return CameraUpdateItem(map, builder.build(), mDuration, mCallback, mMode)
148
145
  }
149
146
 
@@ -156,10 +153,6 @@ class CameraStop {
156
153
  ): CameraStop {
157
154
  val stop = CameraStop()
158
155
 
159
- if (readableMap.hasKey("__updateTS")) {
160
- stop.ts = readableMap.getInt("__updateTS")
161
- }
162
-
163
156
  if (readableMap.hasKey("pitch")) {
164
157
  stop.setTilt(readableMap.getDouble("pitch"))
165
158
  }
@@ -201,6 +194,7 @@ class CameraStop {
201
194
  when (readableMap.getInt("mode")) {
202
195
  CameraMode.FLIGHT -> stop.setMode(CameraMode.FLIGHT)
203
196
  CameraMode.LINEAR -> stop.setMode(CameraMode.LINEAR)
197
+ CameraMode.MOVE -> stop.setMode(CameraMode.MOVE)
204
198
  CameraMode.NONE -> stop.setMode(CameraMode.NONE)
205
199
  else -> stop.setMode(CameraMode.EASE)
206
200
  }
@@ -83,7 +83,7 @@ class CameraUpdateItem(
83
83
  val animationOptions = MapAnimationOptions.Builder();
84
84
 
85
85
  // animateCamera / easeCamera only allows positive duration
86
- if (duration == 0 || mCameraMode == CameraMode.NONE) {
86
+ if (duration == 0 || mCameraMode == CameraMode.MOVE || mCameraMode == CameraMode.NONE) {
87
87
  map.flyToV11(mCameraUpdate, animationOptions.apply {
88
88
  duration(0)
89
89
  },
@@ -109,7 +109,6 @@ class CameraUpdateItem(
109
109
  callback
110
110
  )
111
111
  }
112
- null
113
112
  }
114
113
 
115
114
  override fun cancel(mayInterruptIfRunning: Boolean): Boolean {
@@ -3,6 +3,7 @@ package com.rnmapbox.rnmbx.components.camera
3
3
  import android.animation.Animator
4
4
  import android.content.Context
5
5
  import android.location.Location
6
+ import com.facebook.react.bridge.Dynamic
6
7
  import com.facebook.react.bridge.ReadableMap
7
8
  import com.mapbox.maps.plugin.gestures.gestures
8
9
  import com.rnmapbox.rnmbx.location.LocationManager.Companion.getInstance
@@ -15,6 +16,7 @@ import com.mapbox.maps.plugin.locationcomponent.OnIndicatorBearingChangedListene
15
16
  import com.mapbox.maps.plugin.locationcomponent.OnIndicatorPositionChangedListener
16
17
  import com.facebook.react.bridge.WritableMap
17
18
  import com.facebook.react.bridge.WritableNativeMap
19
+ import com.facebook.react.uimanager.annotations.ReactProp
18
20
  import com.mapbox.maps.*
19
21
  import com.mapbox.maps.plugin.locationcomponent.location
20
22
  import com.mapbox.maps.plugin.viewport.ViewportStatus
@@ -113,15 +115,18 @@ class RNMBXCamera(private val mContext: Context, private val mManager: RNMBXCame
113
115
  }
114
116
  }
115
117
  fun setStop(stop: CameraStop) {
116
- if ((stop.ts != mCameraStop?.ts) || (mCameraStop == null)) {
117
- mCameraStop = stop
118
- stop.setCallback(mCameraCallback)
119
- if (mMapView != null) {
120
- stop.let { updateCamera(it) }
121
- }
118
+ mCameraStop = stop
119
+ stop.setCallback(mCameraCallback)
120
+ if (mMapView != null) {
121
+ stop.let { updateCamera(it) }
122
122
  }
123
123
  }
124
124
 
125
+ fun updateCameraStop(map: ReadableMap) {
126
+ val stop = CameraStop.fromReadableMap(mContext, map, null)
127
+ setStop(stop)
128
+ }
129
+
125
130
  fun setDefaultStop(stop: CameraStop?) {
126
131
  mDefaultStop = stop
127
132
  }
@@ -174,15 +179,12 @@ class RNMBXCamera(private val mContext: Context, private val mManager: RNMBXCame
174
179
  private fun updateMaxBounds() {
175
180
  withMapView { mapView ->
176
181
  val map = mapView.getMapboxMap()
177
- val maxBounds = mMaxBounds
178
182
  val builder = CameraBoundsOptions.Builder()
179
-
180
- if (maxBounds != null) {
181
- builder.bounds(maxBounds.toBounds())
182
- }
183
- mMinZoomLevel?.let { builder.minZoom(it) }
184
- mMaxZoomLevel?.let { builder.maxZoom(it) }
183
+ builder.bounds(mMaxBounds?.toBounds())
184
+ builder.minZoom(mMinZoomLevel ?: 0.0) // Passing null does not reset this value.
185
+ builder.maxZoom(mMaxZoomLevel ?: 25.0) // Passing null does not reset this value.
185
186
  map.setBounds(builder.build())
187
+ mCameraStop?.let { updateCamera(it) }
186
188
  }
187
189
  }
188
190
 
@@ -9,11 +9,12 @@ import com.mapbox.geojson.FeatureCollection
9
9
  import com.rnmapbox.rnmbx.components.AbstractEventEmitter
10
10
  import com.rnmapbox.rnmbx.components.camera.CameraStop.Companion.fromReadableMap
11
11
  import com.rnmapbox.rnmbx.utils.GeoJSONUtils.toLatLngBounds
12
+ import com.rnmapbox.rnmbx.utils.ViewTagResolver
12
13
  import com.rnmapbox.rnmbx.utils.extensions.asBooleanOrNull
13
14
  import com.rnmapbox.rnmbx.utils.extensions.asDoubleOrNull
14
15
  import com.rnmapbox.rnmbx.utils.extensions.asStringOrNull
15
16
 
16
- class RNMBXCameraManager(private val mContext: ReactApplicationContext) :
17
+ class RNMBXCameraManager(private val mContext: ReactApplicationContext, val viewTagResolver: ViewTagResolver) :
17
18
  AbstractEventEmitter<RNMBXCamera?>(
18
19
  mContext
19
20
  ), RNMBXCameraManagerInterface<RNMBXCamera> {
@@ -58,12 +59,12 @@ class RNMBXCameraManager(private val mContext: ReactApplicationContext) :
58
59
 
59
60
  @ReactProp(name = "minZoomLevel")
60
61
  override fun setMinZoomLevel(camera: RNMBXCamera, value: Dynamic) {
61
- camera.setMinZoomLevel(value.asDouble())
62
+ camera.setMinZoomLevel(value.asDoubleOrNull())
62
63
  }
63
64
 
64
65
  @ReactProp(name = "maxZoomLevel")
65
66
  override fun setMaxZoomLevel(camera: RNMBXCamera, value: Dynamic) {
66
- camera.setMaxZoomLevel(value.asDouble())
67
+ camera.setMaxZoomLevel(value.asDoubleOrNull())
67
68
  }
68
69
 
69
70
  @ReactProp(name = "followUserLocation")
@@ -0,0 +1,51 @@
1
+ package com.rnmapbox.rnmbx.components.camera
2
+
3
+ import com.facebook.react.bridge.Callback
4
+ import com.facebook.react.bridge.Promise
5
+ import com.facebook.react.bridge.ReactApplicationContext
6
+ import com.facebook.react.bridge.ReadableArray
7
+ import com.facebook.react.bridge.ReadableMap
8
+ import com.facebook.react.bridge.WritableMap
9
+ import com.facebook.react.bridge.WritableNativeMap
10
+ import com.rnmapbox.rnmbx.NativeRNMBXCameraModuleSpec
11
+ import com.rnmapbox.rnmbx.components.mapview.CommandResponse
12
+ import com.rnmapbox.rnmbx.utils.ViewTagResolver
13
+
14
+
15
+ class RNMBXCameraModule(context: ReactApplicationContext, val viewTagResolver: ViewTagResolver) : NativeRNMBXCameraModuleSpec(context) {
16
+ private fun withViewportOnUIThread(
17
+ viewRef: Double?,
18
+ reject: Promise,
19
+ fn: (RNMBXCamera) -> Unit
20
+ ) {
21
+ if (viewRef == null) {
22
+ reject.reject(Exception("viewRef is null"))
23
+ } else {
24
+ viewTagResolver.withViewResolved(viewRef.toInt(), reject, fn)
25
+ }
26
+ }
27
+
28
+ private fun createCommandResponse(promise: Promise): CommandResponse = object : CommandResponse {
29
+ override fun success(builder: (WritableMap) -> Unit) {
30
+ val payload: WritableMap = WritableNativeMap()
31
+ builder(payload)
32
+
33
+ promise.resolve(payload)
34
+ }
35
+
36
+ override fun error(message: String) {
37
+ promise.reject(Exception(message))
38
+ }
39
+ }
40
+
41
+ companion object {
42
+ const val NAME = "RNMBXCameraModule"
43
+ }
44
+
45
+ override fun updateCameraStop(viewRef: Double?, stop: ReadableMap, promise: Promise) {
46
+ withViewportOnUIThread(viewRef, promise) {
47
+ it.updateCameraStop(stop)
48
+ promise.resolve(null)
49
+ }
50
+ }
51
+ }
@@ -12,8 +12,9 @@ import com.facebook.react.viewmanagers.RNMBXViewportManagerInterface
12
12
  import com.rnmapbox.rnmbx.components.AbstractEventEmitter
13
13
  import com.rnmapbox.rnmbx.events.constants.EventKeys
14
14
  import com.rnmapbox.rnmbx.events.constants.eventMapOf
15
+ import com.rnmapbox.rnmbx.utils.ViewTagResolver
15
16
 
16
- class RNMBXViewportManager(private val mContext: ReactApplicationContext) : AbstractEventEmitter<RNMBXViewport?>(
17
+ class RNMBXViewportManager(private val mContext: ReactApplicationContext, val viewTagResolver: ViewTagResolver) : AbstractEventEmitter<RNMBXViewport?>(
17
18
  mContext
18
19
  ), RNMBXViewportManagerInterface<RNMBXViewport> {
19
20
 
@@ -7,12 +7,13 @@ import java.lang.annotation.RetentionPolicy;
7
7
 
8
8
  public class CameraMode {
9
9
 
10
- @IntDef({ FLIGHT, EASE, LINEAR, NONE })
10
+ @IntDef({ FLIGHT, EASE, LINEAR, MOVE, NONE })
11
11
  @Retention(RetentionPolicy.SOURCE)
12
12
  public @interface Mode {}
13
13
 
14
14
  public static final int FLIGHT = 1;
15
15
  public static final int EASE = 2;
16
16
  public static final int LINEAR = 3;
17
- public static final int NONE = 4;
17
+ public static final int MOVE = 4;
18
+ public static final int NONE = 5;
18
19
  }