@rnmapbox/maps 10.0.10-rc.0 → 10.0.10-rc.2

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.
@@ -1,5 +1,5 @@
1
1
  def defaultMapboxMapsImpl = "maplibre"
2
- def defaultMapboxMapsVersion = "10.14.0"
2
+ def defaultMapboxMapsVersion = "10.14.1"
3
3
 
4
4
  def safeExtGet(prop, fallback) {
5
5
  rootProject.ext.has(prop) ? rootProject.ext.get(prop) : fallback
@@ -43,12 +43,16 @@ fun Style.addBitmapImage(imageId: String, bitmap: Bitmap, sdf: Boolean = false,
43
43
 
44
44
  fun Style.addBitmapImage(nativeImage: NativeImage) : Expected<String, None> {
45
45
  val info = nativeImage.info
46
- return addBitmapImage(info.name, nativeImage.drawable.bitmap, info.sdf, info.stretchX, info.stretchY, info.content, info.scale)
46
+ return addBitmapImage(info.name, nativeImage.drawable.bitmap, info.sdf, info.stretchX, info.stretchY, info.content, info.getScaleOr(1.0))
47
47
  }
48
48
 
49
- data class ImageInfo(val name: String, val scale: Double = 1.0, val sdf: Boolean = false, val stretchX: List<ImageStretches> = listOf(),
49
+ data class ImageInfo(val name: String, val scale: Double? = 1.0, val sdf: Boolean = false, val stretchX: List<ImageStretches> = listOf(),
50
50
  val stretchY: List<ImageStretches> = listOf(), val content: ImageContent? = null)
51
- {}
51
+ {
52
+ fun getScaleOr(default: Double): Double {
53
+ return scale ?: default;
54
+ }
55
+ }
52
56
 
53
57
  data class NativeImage(val info: ImageInfo, val drawable: BitmapDrawable);
54
58
 
@@ -30,10 +30,10 @@ class RCTMGLImagesManager(private val mContext: ReactApplicationContext) :
30
30
 
31
31
  fun imageInfo(name: String, map: ReadableMap): ImageInfo {
32
32
  var sdf = false
33
- var stretchX = listOf<ImageStretches>();
34
- var stretchY = listOf<ImageStretches>();
35
- var content : ImageContent? = null;
36
- var scale : Double = ImageEntry.defaultScale
33
+ var stretchX = listOf<ImageStretches>()
34
+ var stretchY = listOf<ImageStretches>()
35
+ var content : ImageContent? = null
36
+ var scale : Double? = null
37
37
  if (map.hasKey("sdf")) {
38
38
  sdf = map.getBoolean("sdf");
39
39
  }
@@ -18,7 +18,7 @@ class RCTMGLStyleValue(config: ReadableMap) {
18
18
  private val mPayload: ReadableMap?
19
19
  var imageURI: String? = ""
20
20
  private var isAddImage = false
21
- var imageScale = ImageEntry.defaultScale
21
+ var imageScale: Double? = null
22
22
  private fun isTokenizedValue(value: String): Boolean {
23
23
  return value.startsWith("{") && value.endsWith("}")
24
24
  }
@@ -185,7 +185,7 @@ class RCTMGLStyleValue(config: ReadableMap) {
185
185
  mPayload = config.getMap("stylevalue")
186
186
  isAddImage = false
187
187
  if ("image" == type) {
188
- imageScale = ImageEntry.defaultScale
188
+ imageScale = null
189
189
  if ("hashmap" == mPayload!!.getString("type")) {
190
190
  val map = map
191
191
  imageURI = map!!.getMap("uri")!!.getString("value")
@@ -126,7 +126,7 @@ class DownloadMapImageTask(context: Context, map: MapboxMap, callback: OnAllImag
126
126
  bitmapImages[image.name] = image.bitmap
127
127
  val info = image.info
128
128
  style.addBitmapImage(image.name, image.bitmap,sdf = info.sdf, stretchX = info.stretchX, stretchY = info.stretchY,
129
- content = info.content,scale = info.scale
129
+ content = info.content,scale = info.getScaleOr(1.0)
130
130
  )
131
131
  }
132
132
  }
@@ -134,11 +134,11 @@ class DownloadMapImageTask(context: Context, map: MapboxMap, callback: OnAllImag
134
134
  mCallback?.onAllImagesLoaded()
135
135
  }
136
136
 
137
- private fun getBitmapOptions(metrics: DisplayMetrics, scale: Double): BitmapFactory.Options {
137
+ private fun getBitmapOptions(metrics: DisplayMetrics, scale: Double?): BitmapFactory.Options {
138
138
  val options = BitmapFactory.Options()
139
139
  options.inScreenDensity = metrics.densityDpi
140
140
  options.inTargetDensity = metrics.densityDpi
141
- if (scale != ImageEntry.defaultScale) {
141
+ if (scale != null) {
142
142
  options.inDensity = (DisplayMetrics.DENSITY_DEFAULT.toDouble() * scale).toInt()
143
143
  }
144
144
  return options
@@ -4,14 +4,6 @@ import com.mapbox.rctmgl.components.images.ImageInfo
4
4
 
5
5
  data class ImageEntry(val uri: String, val info: ImageInfo) {
6
6
  fun getScaleOr(v: Double): Double {
7
- return if (info.scale == defaultScale) {
8
- v
9
- } else {
10
- info.scale
11
- }
12
- }
13
-
14
- companion object {
15
- const val defaultScale = 0.0
7
+ return info.getScaleOr(v)
16
8
  }
17
9
  }
@@ -362,11 +362,30 @@ class RCTMGLStyleValue {
362
362
  func mglStyleValueLineCap() -> Value<LineCap> {
363
363
  return mglStyleValueEnum()
364
364
  }
365
+
366
+ func parseExpression(_ expression: [Any]) throws -> Expression {
367
+ let data = try JSONSerialization.data(withJSONObject: expression, options: .prettyPrinted)
368
+ let decodedExpression = try JSONDecoder().decode(Expression.self, from: data)
369
+ return decodedExpression
370
+ }
365
371
 
366
372
  func mglStyleValueEnum<Enum : RawRepresentable>() -> Value<Enum> where Enum.RawValue == String {
367
373
  if let value = value as? Dictionary<String,Any> {
368
374
  let value = RCTMGLStyleValue.convert(value["stylevalue"] as! [String:Any])
369
- return Value.constant(Enum(rawValue: value as! String)!)
375
+ if let value = value as? String {
376
+ return Value.constant(Enum(rawValue: value )!)
377
+ } else if let value = value as? [Any] {
378
+ if let parsedExpression = (logged("mglStyleValueEnum: failed to parse expression") {
379
+ try parseExpression(value)
380
+ }) {
381
+ return .expression(parsedExpression)
382
+ } else {
383
+ return Value.constant(Enum(rawValue: value[0] as! String)!)
384
+ }
385
+ } else {
386
+ Logger.log(level: .error, message:"Invalid value for enum (nor string, not array): \(value) returning something")
387
+ return Value.constant(Enum(rawValue: value as! String)!)
388
+ }
370
389
  } else {
371
390
  Logger.log(level: .error, message:"Invalid value for enum: \(value) returning something")
372
391
  return Value.constant(Enum(rawValue: value as! String)!)
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@rnmapbox/maps",
3
3
  "description": "A Mapbox react native module for creating custom maps",
4
- "version": "10.0.10-rc.0",
4
+ "version": "10.0.10-rc.2",
5
5
  "publishConfig": {
6
6
  "access": "public"
7
7
  },