@rnmapbox/maps 10.1.27 → 10.1.29-rc.0

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 (53) hide show
  1. package/README.md +1 -1
  2. package/android/src/main/java/com/rnmapbox/rnmbx/components/camera/RNMBXCamera.kt +23 -22
  3. package/android/src/main/java/com/rnmapbox/rnmbx/components/mapview/NativeMapViewModule.kt +0 -8
  4. package/android/src/main/java/com/rnmapbox/rnmbx/components/styles/layers/RNMBXLayer.kt +3 -1
  5. package/android/src/main/java/com/rnmapbox/rnmbx/components/styles/sources/RNMBXShapeSourceModule.kt +2 -2
  6. package/android/src/main/java/com/rnmapbox/rnmbx/utils/ViewTagResolver.kt +1 -1
  7. package/android/src/main/old-arch/com/rnmapbox/rnmbx/NativeMapViewModuleSpec.java +13 -13
  8. package/android/src/main/old-arch/com/rnmapbox/rnmbx/NativeRNMBXCameraModuleSpec.java +1 -1
  9. package/android/src/main/old-arch/com/rnmapbox/rnmbx/NativeRNMBXChangeLineOffsetsShapeAnimatorModuleSpec.java +4 -4
  10. package/android/src/main/old-arch/com/rnmapbox/rnmbx/NativeRNMBXImageModuleSpec.java +1 -1
  11. package/android/src/main/old-arch/com/rnmapbox/rnmbx/NativeRNMBXMovePointShapeAnimatorModuleSpec.java +2 -2
  12. package/android/src/main/old-arch/com/rnmapbox/rnmbx/NativeRNMBXPointAnnotationModuleSpec.java +1 -1
  13. package/android/src/main/old-arch/com/rnmapbox/rnmbx/NativeRNMBXShapeSourceModuleSpec.java +3 -3
  14. package/android/src/main/old-arch/com/rnmapbox/rnmbx/NativeRNMBXTileStoreModuleSpec.java +1 -1
  15. package/android/src/main/old-arch/com/rnmapbox/rnmbx/NativeRNMBXViewportModuleSpec.java +3 -3
  16. package/ios/RNMBX/Extensions/Array+asExpressions.swift +1 -1
  17. package/ios/RNMBX/RNMBXFabricPropConvert.h +11 -3
  18. package/ios/RNMBX/RNMBXFabricPropConvert.mm +21 -1
  19. package/ios/RNMBX/RNMBXLayer.swift +37 -37
  20. package/ios/RNMBX/RNMBXMapViewComponentView.mm +1 -4
  21. package/ios/RNMBX/RNMBXShapeSourceComponentView.mm +18 -53
  22. package/ios/RNMBX/RNMBXStyleValue.swift +50 -50
  23. package/lib/commonjs/RNMBXModule.js +2 -3
  24. package/lib/commonjs/RNMBXModule.js.map +1 -1
  25. package/lib/commonjs/components/UserLocation.js.map +1 -1
  26. package/lib/commonjs/specs/RNMBXMapViewNativeComponent.js.map +1 -1
  27. package/lib/commonjs/web/components/Camera.js +53 -0
  28. package/lib/commonjs/web/components/Camera.js.map +1 -1
  29. package/lib/commonjs/web/index.js +1 -0
  30. package/lib/commonjs/web/index.js.map +1 -1
  31. package/lib/module/RNMBXModule.js +2 -3
  32. package/lib/module/RNMBXModule.js.map +1 -1
  33. package/lib/module/components/UserLocation.js +2 -2
  34. package/lib/module/components/UserLocation.js.map +1 -1
  35. package/lib/module/specs/RNMBXMapViewNativeComponent.js.map +1 -1
  36. package/lib/module/web/components/Camera.js +53 -0
  37. package/lib/module/web/components/Camera.js.map +1 -1
  38. package/lib/module/web/index.js +2 -1
  39. package/lib/module/web/index.js.map +1 -1
  40. package/lib/typescript/src/RNMBXModule.d.ts.map +1 -1
  41. package/lib/typescript/src/components/UserLocation.d.ts +1 -1
  42. package/lib/typescript/src/specs/RNMBXMapViewNativeComponent.d.ts +2 -2
  43. package/lib/typescript/src/specs/RNMBXMapViewNativeComponent.d.ts.map +1 -1
  44. package/lib/typescript/src/types/Position.d.ts +1 -1
  45. package/lib/typescript/src/web/components/Camera.d.ts +2 -1
  46. package/lib/typescript/src/web/components/Camera.d.ts.map +1 -1
  47. package/package.json +4 -1
  48. package/src/RNMBXModule.ts +2 -1
  49. package/src/components/UserLocation.tsx +3 -3
  50. package/src/specs/RNMBXMapViewNativeComponent.ts +2 -1
  51. package/src/types/Position.ts +1 -1
  52. package/src/web/components/Camera.tsx +61 -1
  53. package/src/web/index.js +3 -1
package/README.md CHANGED
@@ -252,4 +252,4 @@ Help drive this repo forward - be a sponsor. Add a comment [here](https://github
252
252
  ---
253
253
  ## Developer Group
254
254
 
255
- Have a question or need some help? Join our [Gitter developer group](https://gitter.im/rnmapbox/Lobby)!
255
+ Have a question or need some help? Use [Github discussions](https://github.com/rnmapbox/maps/discussions) or the [react-native channel](https://discord.com/channels/1004826913229000704/1092426983696248893) in the mapbox discord.
@@ -99,9 +99,11 @@ class RNMBXCamera(private val mContext: Context, private val mManager: RNMBXCame
99
99
  override fun addToMap(mapView: RNMBXMapView) {
100
100
  super.addToMap(mapView)
101
101
  mapView.callIfAttachedToWindow {
102
- setInitialCamera()
103
- updateMaxBounds()
104
- mCameraStop?.let { updateCamera(it) }
102
+ withMapView { mapView ->
103
+ setInitialCamera(mapView)
104
+ updateMaxBounds(mapView)
105
+ mCameraStop?.let { updateCamera(it, mapView) }
106
+ }
105
107
  }
106
108
  _observeViewportState(mapView.mapView)
107
109
  _updateViewportState()
@@ -117,8 +119,8 @@ class RNMBXCamera(private val mContext: Context, private val mManager: RNMBXCame
117
119
  fun setStop(stop: CameraStop) {
118
120
  mCameraStop = stop
119
121
  stop.setCallback(mCameraCallback)
120
- if (mMapView != null) {
121
- stop.let { updateCamera(it) }
122
+ withMapView { mapView ->
123
+ stop.let { updateCamera(it, mapView) }
122
124
  }
123
125
  }
124
126
 
@@ -172,25 +174,24 @@ class RNMBXCamera(private val mContext: Context, private val mManager: RNMBXCame
172
174
 
173
175
  fun setMaxBounds(bounds: LatLngBounds?) {
174
176
  mMaxBounds = bounds
175
- updateMaxBounds()
177
+ withMapView { mapView ->
178
+ updateMaxBounds(mapView)
179
+ }
176
180
  }
177
181
 
178
182
 
179
- private fun updateMaxBounds() {
180
- withMapView { mapView ->
181
- val map = mapView.getMapboxMap()
182
- val builder = CameraBoundsOptions.Builder()
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.
186
- map.setBounds(builder.build())
187
- mCameraStop?.let { updateCamera(it) }
188
- }
183
+ private fun updateMaxBounds(mapView: RNMBXMapView) {
184
+ val map = mapView.getMapboxMap()
185
+ val builder = CameraBoundsOptions.Builder()
186
+ builder.bounds(mMaxBounds?.toBounds())
187
+ builder.minZoom(mMinZoomLevel ?: 0.0) // Passing null does not reset this value.
188
+ builder.maxZoom(mMaxZoomLevel ?: 25.0) // Passing null does not reset this value.
189
+ map.setBounds(builder.build())
190
+ mCameraStop?.let { updateCamera(it, mapView) }
189
191
  }
190
192
 
191
- private fun setInitialCamera() {
193
+ private fun setInitialCamera(mapView: RNMBXMapView) {
192
194
  mDefaultStop?.let {
193
- val mapView = mMapView!!
194
195
  val map = mapView.getMapboxMap()
195
196
 
196
197
  it.setDuration(0)
@@ -200,9 +201,9 @@ class RNMBXCamera(private val mContext: Context, private val mManager: RNMBXCame
200
201
  }
201
202
  }
202
203
 
203
- private fun updateCamera(cameraStop: CameraStop) {
204
+ private fun updateCamera(cameraStop: CameraStop, mapView: RNMBXMapView) {
204
205
  mCameraUpdateQueue.offer(cameraStop)
205
- mCameraUpdateQueue.execute(mMapView)
206
+ mCameraUpdateQueue.execute(mapView)
206
207
  }
207
208
 
208
209
  private fun updateUserLocation(isAnimated: Boolean) {
@@ -243,12 +244,12 @@ class RNMBXCamera(private val mContext: Context, private val mManager: RNMBXCame
243
244
 
244
245
  fun setMinZoomLevel(zoomLevel: Double?) {
245
246
  mMinZoomLevel = zoomLevel
246
- updateMaxBounds()
247
+ withMapView { updateMaxBounds(it) }
247
248
  }
248
249
 
249
250
  fun setMaxZoomLevel(zoomLevel: Double?) {
250
251
  mMaxZoomLevel = zoomLevel
251
- updateMaxBounds()
252
+ withMapView { updateMaxBounds(it) }
252
253
  }
253
254
 
254
255
  fun setZoomLevel(zoomLevel: Double) {
@@ -152,14 +152,6 @@ class NativeMapViewModule(context: ReactApplicationContext, val viewTagResolver:
152
152
  }
153
153
  }
154
154
 
155
- public fun setHandledMapChangedEvents(
156
- viewRef: Double?,
157
- events: ReadableArray,
158
- promise: Promise
159
- ) {
160
- setHandledMapChangedEvents(viewRef?.toInt(), events, promise)
161
- }
162
-
163
155
  override fun clearData(viewRef: ViewRefTag?, promise: Promise) {
164
156
  withMapViewOnUIThread(viewRef, promise) {
165
157
  it.clearData(createCommandResponse(promise))
@@ -309,7 +309,9 @@ abstract class RNMBXLayer<T : Layer?>(protected var mContext: Context) : Abstrac
309
309
  val layer = mLayer
310
310
  if (layer != null) {
311
311
  it.removeStyleLayer(layer.layerId)
312
- mLayer = null // see https://github.com/rnmapbox/maps/pull/3392
312
+ if (reason != RemovalReason.REORDER) {
313
+ mLayer = null // see https://github.com/rnmapbox/maps/pull/3392
314
+ }
313
315
  } else {
314
316
  Logger.e("RNMBXLayer","mLayer is null on removal layer from map")
315
317
  }
@@ -44,8 +44,8 @@ class RNMBXShapeSourceModule(reactContext: ReactApplicationContext?, private val
44
44
  override fun getClusterLeaves(
45
45
  viewRef: ViewRefTag?,
46
46
  featureJSON: String,
47
- number: Int,
48
- offset: Int,
47
+ number: Double,
48
+ offset: Double,
49
49
  promise: Promise
50
50
  ) {
51
51
  withShapeSourceOnUIThread(viewRef, promise) {
@@ -16,7 +16,7 @@ data class ViewTagWaiter<V>(
16
16
 
17
17
  const val LOG_TAG = "ViewTagResolver"
18
18
 
19
- typealias ViewRefTag = Int
19
+ typealias ViewRefTag = Double
20
20
  // see https://github.com/rnmapbox/maps/pull/3074
21
21
  open class ViewTagResolver(val context: ReactApplicationContext) {
22
22
  private val createdViews: HashSet<Int> = hashSetOf<Int>()
@@ -37,53 +37,53 @@ public abstract class NativeMapViewModuleSpec extends ReactContextBaseJavaModule
37
37
 
38
38
  @ReactMethod
39
39
  @DoNotStrip
40
- public abstract void takeSnap(@Nullable Integer viewRef, boolean writeToDisk, Promise promise);
40
+ public abstract void takeSnap(@Nullable Double viewRef, boolean writeToDisk, Promise promise);
41
41
 
42
42
  @ReactMethod
43
43
  @DoNotStrip
44
- public abstract void queryTerrainElevation(@Nullable Integer viewRef, ReadableArray coordinates, Promise promise);
44
+ public abstract void queryTerrainElevation(@Nullable Double viewRef, ReadableArray coordinates, Promise promise);
45
45
 
46
46
  @ReactMethod
47
47
  @DoNotStrip
48
- public abstract void setSourceVisibility(@Nullable Integer viewRef, boolean visible, String sourceId, String sourceLayerId, Promise promise);
48
+ public abstract void setSourceVisibility(@Nullable Double viewRef, boolean visible, String sourceId, String sourceLayerId, Promise promise);
49
49
 
50
50
  @ReactMethod
51
51
  @DoNotStrip
52
- public abstract void getCenter(@Nullable Integer viewRef, Promise promise);
52
+ public abstract void getCenter(@Nullable Double viewRef, Promise promise);
53
53
 
54
54
  @ReactMethod
55
55
  @DoNotStrip
56
- public abstract void getCoordinateFromView(@Nullable Integer viewRef, ReadableArray atPoint, Promise promise);
56
+ public abstract void getCoordinateFromView(@Nullable Double viewRef, ReadableArray atPoint, Promise promise);
57
57
 
58
58
  @ReactMethod
59
59
  @DoNotStrip
60
- public abstract void getPointInView(@Nullable Integer viewRef, ReadableArray atCoordinate, Promise promise);
60
+ public abstract void getPointInView(@Nullable Double viewRef, ReadableArray atCoordinate, Promise promise);
61
61
 
62
62
  @ReactMethod
63
63
  @DoNotStrip
64
- public abstract void getZoom(@Nullable Integer viewRef, Promise promise);
64
+ public abstract void getZoom(@Nullable Double viewRef, Promise promise);
65
65
 
66
66
  @ReactMethod
67
67
  @DoNotStrip
68
- public abstract void getVisibleBounds(@Nullable Integer viewRef, Promise promise);
68
+ public abstract void getVisibleBounds(@Nullable Double viewRef, Promise promise);
69
69
 
70
70
  @ReactMethod
71
71
  @DoNotStrip
72
- public abstract void queryRenderedFeaturesAtPoint(@Nullable Integer viewRef, ReadableArray atPoint, ReadableArray withFilter, ReadableArray withLayerIDs, Promise promise);
72
+ public abstract void queryRenderedFeaturesAtPoint(@Nullable Double viewRef, ReadableArray atPoint, ReadableArray withFilter, ReadableArray withLayerIDs, Promise promise);
73
73
 
74
74
  @ReactMethod
75
75
  @DoNotStrip
76
- public abstract void queryRenderedFeaturesInRect(@Nullable Integer viewRef, ReadableArray withBBox, ReadableArray withFilter, ReadableArray withLayerIDs, Promise promise);
76
+ public abstract void queryRenderedFeaturesInRect(@Nullable Double viewRef, ReadableArray withBBox, ReadableArray withFilter, ReadableArray withLayerIDs, Promise promise);
77
77
 
78
78
  @ReactMethod
79
79
  @DoNotStrip
80
- public abstract void setHandledMapChangedEvents(@Nullable Integer viewRef, ReadableArray events, Promise promise);
80
+ public abstract void setHandledMapChangedEvents(@Nullable Double viewRef, ReadableArray events, Promise promise);
81
81
 
82
82
  @ReactMethod
83
83
  @DoNotStrip
84
- public abstract void clearData(@Nullable Integer viewRef, Promise promise);
84
+ public abstract void clearData(@Nullable Double viewRef, Promise promise);
85
85
 
86
86
  @ReactMethod
87
87
  @DoNotStrip
88
- public abstract void querySourceFeatures(@Nullable Integer viewRef, String sourceId, ReadableArray withFilter, ReadableArray withSourceLayerIDs, Promise promise);
88
+ public abstract void querySourceFeatures(@Nullable Double viewRef, String sourceId, ReadableArray withFilter, ReadableArray withSourceLayerIDs, Promise promise);
89
89
  }
@@ -37,5 +37,5 @@ public abstract class NativeRNMBXCameraModuleSpec extends ReactContextBaseJavaMo
37
37
 
38
38
  @ReactMethod
39
39
  @DoNotStrip
40
- public abstract void updateCameraStop(@Nullable Integer viewRef, ReadableMap stop, Promise promise);
40
+ public abstract void updateCameraStop(@Nullable Double viewRef, ReadableMap stop, Promise promise);
41
41
  }
@@ -36,17 +36,17 @@ public abstract class NativeRNMBXChangeLineOffsetsShapeAnimatorModuleSpec extend
36
36
 
37
37
  @ReactMethod
38
38
  @DoNotStrip
39
- public abstract void create(int tag, ReadableArray coordinates, double startOffset, double endOffset, Promise promise);
39
+ public abstract void create(double tag, ReadableArray coordinates, double startOffset, double endOffset, Promise promise);
40
40
 
41
41
  @ReactMethod
42
42
  @DoNotStrip
43
- public abstract void setLineString(int tag, ReadableArray coordinates, double startOffset, double endOffset, Promise promise);
43
+ public abstract void setLineString(double tag, ReadableArray coordinates, double startOffset, double endOffset, Promise promise);
44
44
 
45
45
  @ReactMethod
46
46
  @DoNotStrip
47
- public abstract void setStartOffset(int tag, double offset, double duration, Promise promise);
47
+ public abstract void setStartOffset(double tag, double offset, double duration, Promise promise);
48
48
 
49
49
  @ReactMethod
50
50
  @DoNotStrip
51
- public abstract void setEndOffset(int tag, double offset, double duration, Promise promise);
51
+ public abstract void setEndOffset(double tag, double offset, double duration, Promise promise);
52
52
  }
@@ -36,5 +36,5 @@ public abstract class NativeRNMBXImageModuleSpec extends ReactContextBaseJavaMod
36
36
 
37
37
  @ReactMethod
38
38
  @DoNotStrip
39
- public abstract void refresh(@Nullable Integer viewRef, Promise promise);
39
+ public abstract void refresh(@Nullable Double viewRef, Promise promise);
40
40
  }
@@ -36,9 +36,9 @@ public abstract class NativeRNMBXMovePointShapeAnimatorModuleSpec extends ReactC
36
36
 
37
37
  @ReactMethod
38
38
  @DoNotStrip
39
- public abstract void create(int tag, ReadableArray coordinate, Promise promise);
39
+ public abstract void create(double tag, ReadableArray coordinate, Promise promise);
40
40
 
41
41
  @ReactMethod
42
42
  @DoNotStrip
43
- public abstract void moveTo(int tag, ReadableArray coordinate, double duration, Promise promise);
43
+ public abstract void moveTo(double tag, ReadableArray coordinate, double duration, Promise promise);
44
44
  }
@@ -36,5 +36,5 @@ public abstract class NativeRNMBXPointAnnotationModuleSpec extends ReactContextB
36
36
 
37
37
  @ReactMethod
38
38
  @DoNotStrip
39
- public abstract void refresh(@Nullable Integer viewRef, Promise promise);
39
+ public abstract void refresh(@Nullable Double viewRef, Promise promise);
40
40
  }
@@ -36,13 +36,13 @@ public abstract class NativeRNMBXShapeSourceModuleSpec extends ReactContextBaseJ
36
36
 
37
37
  @ReactMethod
38
38
  @DoNotStrip
39
- public abstract void getClusterExpansionZoom(@Nullable Integer viewRef, String featureJSON, Promise promise);
39
+ public abstract void getClusterExpansionZoom(@Nullable Double viewRef, String featureJSON, Promise promise);
40
40
 
41
41
  @ReactMethod
42
42
  @DoNotStrip
43
- public abstract void getClusterLeaves(@Nullable Integer viewRef, String featureJSON, int number, int offset, Promise promise);
43
+ public abstract void getClusterLeaves(@Nullable Double viewRef, String featureJSON, double number, double offset, Promise promise);
44
44
 
45
45
  @ReactMethod
46
46
  @DoNotStrip
47
- public abstract void getClusterChildren(@Nullable Integer viewRef, String featureJSON, Promise promise);
47
+ public abstract void getClusterChildren(@Nullable Double viewRef, String featureJSON, Promise promise);
48
48
  }
@@ -41,5 +41,5 @@ public abstract class NativeRNMBXTileStoreModuleSpec extends ReactContextBaseJav
41
41
 
42
42
  @ReactMethod
43
43
  @DoNotStrip
44
- public abstract void setOption(int tag, String key, String domain, ReadableMap value, Promise promise);
44
+ public abstract void setOption(double tag, String key, String domain, ReadableMap value, Promise promise);
45
45
  }
@@ -37,13 +37,13 @@ public abstract class NativeRNMBXViewportModuleSpec extends ReactContextBaseJava
37
37
 
38
38
  @ReactMethod
39
39
  @DoNotStrip
40
- public abstract void getState(@Nullable Integer viewRef, Promise promise);
40
+ public abstract void getState(@Nullable Double viewRef, Promise promise);
41
41
 
42
42
  @ReactMethod
43
43
  @DoNotStrip
44
- public abstract void transitionTo(@Nullable Integer viewRef, ReadableMap state, ReadableMap transition, Promise promise);
44
+ public abstract void transitionTo(@Nullable Double viewRef, ReadableMap state, ReadableMap transition, Promise promise);
45
45
 
46
46
  @ReactMethod
47
47
  @DoNotStrip
48
- public abstract void idle(@Nullable Integer viewRef, Promise promise);
48
+ public abstract void idle(@Nullable Double viewRef, Promise promise);
49
49
  }
@@ -1,7 +1,7 @@
1
1
  import MapboxMaps
2
2
 
3
3
  internal extension Array where Element == Any {
4
- func asExpression() throws -> Expression? {
4
+ func asExpression() throws -> MapboxMaps.Expression? {
5
5
  let filter = self
6
6
  if filter.count > 0 {
7
7
  let data = try JSONSerialization.data(withJSONObject: filter, options: .prettyPrinted)
@@ -2,7 +2,7 @@
2
2
 
3
3
  /**
4
4
  *
5
- * 1. Requirest the following prelude
5
+ * 1. Requires the following prelude
6
6
  * const auto &oldViewProps = static_cast<const RNMBXNativeUserLocationProps &>(*oldProps);
7
7
  * const auto &newViewProps = static_cast<const RNMBXNativeUserLocationProps &>(*props);
8
8
  *
@@ -12,6 +12,7 @@
12
12
  NSNumber* RNMBXPropConvert_Optional_BOOL_NSNumber(const folly::dynamic &dyn, NSString* propertyName);
13
13
  BOOL RNMBXPropConvert_Optional_BOOL(const folly::dynamic &dyn, NSString* propertyName);
14
14
  NSString* RNMBXPropConvert_Optional_NSString(const folly::dynamic &dyn, NSString* propertyName);
15
+ NSNumber* RNMBXPropConvert_Optional_NSNumber(const folly::dynamic &dyn, NSString* propertyName);
15
16
  id RNMBXPropConvert_Optional_ExpressionDouble(const folly::dynamic &dyn, NSString* propertyName);
16
17
  BOOL RNMBXPropConvert_BOOL(const folly::dynamic &dyn, NSString* propertyName);
17
18
  NSDictionary* RNMBXPropConvert_Optional_NSDictionary(const folly::dynamic &dyn, NSString* propertyName);
@@ -21,16 +22,23 @@ NSDictionary* RNMBXPropConvert_Optional_NSDictionary(const folly::dynamic &dyn,
21
22
  _view.name = RNMBXPropConvert_Optional_BOOL_NSNumber(newViewProps.name, @#name); \
22
23
  }
23
24
 
24
- #define RNMBX_OPTIONAL_PROP_BOOL(name) \
25
+ #define RNMBX_REMAP_OPTIONAL_PROP_BOOL(name, viewName) \
25
26
  if ((!oldProps.get() || oldViewProps.name != newViewProps.name) && !newViewProps.name.isNull()) { \
26
- _view.name = RNMBXPropConvert_Optional_BOOL(newViewProps.name, @#name); \
27
+ _view.viewName = RNMBXPropConvert_Optional_BOOL(newViewProps.name, @#name); \
27
28
  }
28
29
 
30
+ #define RNMBX_OPTIONAL_PROP_BOOL(name) RNMBX_REMAP_OPTIONAL_PROP_BOOL(name, name)
31
+
29
32
  #define RNMBX_OPTIONAL_PROP_NSString(name) \
30
33
  if ((!oldProps.get() || oldViewProps.name != newViewProps.name) && !newViewProps.name.isNull()) { \
31
34
  _view.name = RNMBXPropConvert_Optional_NSString(newViewProps.name, @#name); \
32
35
  }
33
36
 
37
+ #define RNMBX_OPTIONAL_PROP_NSNumber(name) \
38
+ if ((!oldProps.get() || oldViewProps.name != newViewProps.name) && !newViewProps.name.isNull()) { \
39
+ _view.name = RNMBXPropConvert_Optional_NSNumber(newViewProps.name, @#name); \
40
+ }
41
+
34
42
  #define RNMBX_OPTIONAL_PROP_ExpressionDouble(name) \
35
43
  if ((!oldProps.get() || oldViewProps.name != newViewProps.name) && !newViewProps.name.isNull()) { \
36
44
  _view.name = RNMBXPropConvert_Optional_ExpressionDouble(newViewProps.name, @#name); \
@@ -55,7 +55,7 @@ BOOL RNMBXPropConvert_Optional_BOOL(const folly::dynamic &dyn, NSString* propert
55
55
  }
56
56
 
57
57
  NSString* RNMBXPropConvert_Optional_NSString(const folly::dynamic &dyn, NSString* propertyName) {
58
- switch (dyn.type()) {
58
+ switch (dyn.type()) {
59
59
  case folly::dynamic::STRING:
60
60
  return [NSString stringWithCString:dyn.getString().c_str() encoding:NSUTF8StringEncoding];
61
61
  case folly::dynamic::NULLT:
@@ -71,6 +71,26 @@ NSString* RNMBXPropConvert_Optional_NSString(const folly::dynamic &dyn, NSString
71
71
  }
72
72
  }
73
73
 
74
+ NSNumber* RNMBXPropConvert_Optional_NSNumber(const folly::dynamic &dyn, NSString* propertyName) {
75
+ switch (dyn.type()) {
76
+ case folly::dynamic::INT64:
77
+ return @(dyn.getInt());
78
+ case folly::dynamic::DOUBLE:
79
+ return @(dyn.getDouble());
80
+ case folly::dynamic::NULLT:
81
+ return nil;
82
+ default:
83
+ std::stringstream ss;
84
+ ss << dyn;
85
+ [RNMBXLogger error:[NSString stringWithFormat:@"Property %@ expected to be a number or nil but was: %s",
86
+ propertyName,
87
+ ss.str().c_str()
88
+ ]];
89
+ return nil;
90
+ }
91
+ }
92
+
93
+
74
94
 
75
95
  id RNMBXPropConvert_ID(const folly::dynamic &dyn)
76
96
  {