@maplibre/maplibre-react-native 11.0.0-beta.10 → 11.0.0-beta.12

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 (48) hide show
  1. package/android/src/main/java/org/maplibre/reactnative/components/annotations/pointannotation/MLRNPointAnnotation.kt +40 -24
  2. package/android/src/main/java/org/maplibre/reactnative/components/annotations/pointannotation/MLRNPointAnnotationManager.kt +2 -1
  3. package/android/src/main/java/org/maplibre/reactnative/components/mapview/MLRNMapView.kt +23 -73
  4. package/ios/components/annotations/point-annotation/MLRNPointAnnotation.m +23 -2
  5. package/ios/components/images/MLRNImageLoader.h +27 -0
  6. package/ios/components/images/MLRNImageLoader.m +85 -0
  7. package/ios/components/images/MLRNImageQueue.h +2 -2
  8. package/ios/components/images/MLRNImageQueue.m +2 -2
  9. package/ios/components/images/MLRNImageQueueOperation.h +2 -2
  10. package/ios/components/images/MLRNImageQueueOperation.m +3 -3
  11. package/ios/components/images/MLRNImages.h +0 -3
  12. package/ios/components/images/MLRNImages.m +6 -6
  13. package/ios/components/images/MLRNImagesComponentView.mm +0 -3
  14. package/ios/components/images/MLRNImagesModule.h +6 -0
  15. package/ios/components/images/MLRNImagesModule.mm +23 -0
  16. package/ios/components/layer/MLRNLayer.h +0 -3
  17. package/ios/components/layer/MLRNLayer.m +0 -1
  18. package/ios/components/layer/MLRNLayerComponentView.mm +0 -2
  19. package/ios/components/layer/style/MLRNStyle.h +0 -2
  20. package/ios/components/layer/style/MLRNStyle.m +67 -70
  21. package/ios/components/map-view/MLRNMapView.h +2 -0
  22. package/ios/components/map-view/MLRNMapView.m +30 -11
  23. package/ios/components/sources/geojson-source/MLRNGeoJSONSource.h +0 -3
  24. package/ios/utils/MLRNUtils.h +0 -14
  25. package/ios/utils/MLRNUtils.m +0 -71
  26. package/lib/commonjs/components/images/Images.js +1 -0
  27. package/lib/commonjs/components/images/Images.js.map +1 -1
  28. package/lib/commonjs/components/images/NativeImagesModule.js +10 -0
  29. package/lib/commonjs/components/images/NativeImagesModule.js.map +1 -0
  30. package/lib/module/components/images/Images.js +1 -0
  31. package/lib/module/components/images/Images.js.map +1 -1
  32. package/lib/module/components/images/NativeImagesModule.js +7 -0
  33. package/lib/module/components/images/NativeImagesModule.js.map +1 -0
  34. package/lib/typescript/commonjs/src/components/images/Images.d.ts +1 -0
  35. package/lib/typescript/commonjs/src/components/images/Images.d.ts.map +1 -1
  36. package/lib/typescript/commonjs/src/components/images/NativeImagesModule.d.ts +6 -0
  37. package/lib/typescript/commonjs/src/components/images/NativeImagesModule.d.ts.map +1 -0
  38. package/lib/typescript/module/src/components/images/Images.d.ts +1 -0
  39. package/lib/typescript/module/src/components/images/Images.d.ts.map +1 -1
  40. package/lib/typescript/module/src/components/images/NativeImagesModule.d.ts +6 -0
  41. package/lib/typescript/module/src/components/images/NativeImagesModule.d.ts.map +1 -0
  42. package/package.json +6 -5
  43. package/src/components/images/Images.tsx +1 -0
  44. package/src/components/images/NativeImagesModule.ts +11 -0
  45. package/android/src/main/res/layout/annotation.xml +0 -17
  46. /package/android/src/main/res/drawable-xxhdpi/{red_marker.png → default_marker.png} +0 -0
  47. /package/ios/{components/images → utils}/MLRNImageUtils.h +0 -0
  48. /package/ios/{components/images → utils}/MLRNImageUtils.m +0 -0
@@ -8,7 +8,6 @@
8
8
  #import "RCTFabricComponentsPlugins.h"
9
9
 
10
10
  #import <MapLibre/MapLibre.h>
11
- #import <React/RCTBridge+Private.h>
12
11
  #import <React/RCTConversions.h>
13
12
  #import "MLRNLayer.h"
14
13
  #import "MLRNPropConvert.h"
@@ -38,7 +37,6 @@ using namespace facebook::react;
38
37
  _props = defaultProps;
39
38
 
40
39
  _view = [[MLRNLayer alloc] init];
41
- _view.bridge = [RCTBridge currentBridge];
42
40
  self.contentView = _view;
43
41
  }
44
42
 
@@ -1,7 +1,6 @@
1
1
  // DO NOT MODIFY
2
2
  // This file is auto-generated from scripts/templates/MLRNStyle.h.ejs
3
3
 
4
- #import <React/RCTBridge.h>
5
4
  #import "MLRNStyle.h"
6
5
  #import "MLRNStyleValue.h"
7
6
 
@@ -9,7 +8,6 @@
9
8
 
10
9
  @interface MLRNStyle : NSObject
11
10
 
12
- @property (nonatomic, weak) RCTBridge *bridge;
13
11
  @property (nonatomic, strong) MLNStyle *style;
14
12
 
15
13
  - (id)initWithMLNStyle:(MLNStyle *)mlnStyle;
@@ -2,6 +2,7 @@
2
2
  // This file is auto-generated from scripts/templates/MLRNStyle.m.ejs
3
3
 
4
4
  #import "MLRNStyle.h"
5
+ #import "MLRNImageLoader.h"
5
6
  #import "MLRNUtils.h"
6
7
 
7
8
  @implementation MLRNStyle
@@ -54,20 +55,19 @@
54
55
  } else {
55
56
  NSString *imageURI = [styleValue getImageURI];
56
57
 
57
- [MLRNUtils fetchImage:_bridge
58
- url:imageURI
59
- scale:[styleValue getImageScale]
60
- sdf:[styleValue getImageSdf]
61
- callback:^(NSError *error, UIImage *image) {
62
- if (image != nil) {
63
- dispatch_async(dispatch_get_main_queue(), ^{
64
- if (isValid()) {
65
- [self->_style setImage:image forName:imageURI];
66
- [self setFillPattern:layer withReactStyleValue:styleValue];
67
- }
68
- });
69
- }
70
- }];
58
+ [MLRNImageLoader fetchImage:imageURI
59
+ scale:[styleValue getImageScale]
60
+ sdf:[styleValue getImageSdf]
61
+ callback:^(NSError *error, UIImage *image) {
62
+ if (image != nil) {
63
+ dispatch_async(dispatch_get_main_queue(), ^{
64
+ if (isValid()) {
65
+ [self->_style setImage:image forName:imageURI];
66
+ [self setFillPattern:layer withReactStyleValue:styleValue];
67
+ }
68
+ });
69
+ }
70
+ }];
71
71
  }
72
72
  } else if ([prop isEqualToString:@"fillPatternTransition"]) {
73
73
  [self setFillPatternTransition:layer withReactStyleValue:styleValue];
@@ -139,20 +139,19 @@
139
139
  } else {
140
140
  NSString *imageURI = [styleValue getImageURI];
141
141
 
142
- [MLRNUtils fetchImage:_bridge
143
- url:imageURI
144
- scale:[styleValue getImageScale]
145
- sdf:[styleValue getImageSdf]
146
- callback:^(NSError *error, UIImage *image) {
147
- if (image != nil) {
148
- dispatch_async(dispatch_get_main_queue(), ^{
149
- if (isValid()) {
150
- [self->_style setImage:image forName:imageURI];
151
- [self setLinePattern:layer withReactStyleValue:styleValue];
152
- }
153
- });
154
- }
155
- }];
142
+ [MLRNImageLoader fetchImage:imageURI
143
+ scale:[styleValue getImageScale]
144
+ sdf:[styleValue getImageSdf]
145
+ callback:^(NSError *error, UIImage *image) {
146
+ if (image != nil) {
147
+ dispatch_async(dispatch_get_main_queue(), ^{
148
+ if (isValid()) {
149
+ [self->_style setImage:image forName:imageURI];
150
+ [self setLinePattern:layer withReactStyleValue:styleValue];
151
+ }
152
+ });
153
+ }
154
+ }];
156
155
  }
157
156
  } else if ([prop isEqualToString:@"linePatternTransition"]) {
158
157
  [self setLinePatternTransition:layer withReactStyleValue:styleValue];
@@ -204,20 +203,19 @@
204
203
  } else {
205
204
  NSString *imageURI = [styleValue getImageURI];
206
205
 
207
- [MLRNUtils fetchImage:_bridge
208
- url:imageURI
209
- scale:[styleValue getImageScale]
210
- sdf:[styleValue getImageSdf]
211
- callback:^(NSError *error, UIImage *image) {
212
- if (image != nil) {
213
- dispatch_async(dispatch_get_main_queue(), ^{
214
- if (isValid()) {
215
- [self->_style setImage:image forName:imageURI];
216
- [self setIconImage:layer withReactStyleValue:styleValue];
217
- }
218
- });
219
- }
220
- }];
206
+ [MLRNImageLoader fetchImage:imageURI
207
+ scale:[styleValue getImageScale]
208
+ sdf:[styleValue getImageSdf]
209
+ callback:^(NSError *error, UIImage *image) {
210
+ if (image != nil) {
211
+ dispatch_async(dispatch_get_main_queue(), ^{
212
+ if (isValid()) {
213
+ [self->_style setImage:image forName:imageURI];
214
+ [self setIconImage:layer withReactStyleValue:styleValue];
215
+ }
216
+ });
217
+ }
218
+ }];
221
219
  }
222
220
  } else if ([prop isEqualToString:@"iconRotate"]) {
223
221
  [self setIconRotate:layer withReactStyleValue:styleValue];
@@ -459,20 +457,20 @@
459
457
  } else {
460
458
  NSString *imageURI = [styleValue getImageURI];
461
459
 
462
- [MLRNUtils fetchImage:_bridge
463
- url:imageURI
464
- scale:[styleValue getImageScale]
465
- sdf:[styleValue getImageSdf]
466
- callback:^(NSError *error, UIImage *image) {
467
- if (image != nil) {
468
- dispatch_async(dispatch_get_main_queue(), ^{
469
- if (isValid()) {
470
- [self->_style setImage:image forName:imageURI];
471
- [self setFillExtrusionPattern:layer withReactStyleValue:styleValue];
472
- }
473
- });
474
- }
475
- }];
460
+ [MLRNImageLoader fetchImage:imageURI
461
+ scale:[styleValue getImageScale]
462
+ sdf:[styleValue getImageSdf]
463
+ callback:^(NSError *error, UIImage *image) {
464
+ if (image != nil) {
465
+ dispatch_async(dispatch_get_main_queue(), ^{
466
+ if (isValid()) {
467
+ [self->_style setImage:image forName:imageURI];
468
+ [self setFillExtrusionPattern:layer
469
+ withReactStyleValue:styleValue];
470
+ }
471
+ });
472
+ }
473
+ }];
476
474
  }
477
475
  } else if ([prop isEqualToString:@"fillExtrusionPatternTransition"]) {
478
476
  [self setFillExtrusionPatternTransition:layer withReactStyleValue:styleValue];
@@ -598,20 +596,19 @@
598
596
  } else {
599
597
  NSString *imageURI = [styleValue getImageURI];
600
598
 
601
- [MLRNUtils fetchImage:_bridge
602
- url:imageURI
603
- scale:[styleValue getImageScale]
604
- sdf:[styleValue getImageSdf]
605
- callback:^(NSError *error, UIImage *image) {
606
- if (image != nil) {
607
- dispatch_async(dispatch_get_main_queue(), ^{
608
- if (isValid()) {
609
- [self->_style setImage:image forName:imageURI];
610
- [self setBackgroundPattern:layer withReactStyleValue:styleValue];
611
- }
612
- });
613
- }
614
- }];
599
+ [MLRNImageLoader fetchImage:imageURI
600
+ scale:[styleValue getImageScale]
601
+ sdf:[styleValue getImageSdf]
602
+ callback:^(NSError *error, UIImage *image) {
603
+ if (image != nil) {
604
+ dispatch_async(dispatch_get_main_queue(), ^{
605
+ if (isValid()) {
606
+ [self->_style setImage:image forName:imageURI];
607
+ [self setBackgroundPattern:layer withReactStyleValue:styleValue];
608
+ }
609
+ });
610
+ }
611
+ }];
615
612
  }
616
613
  } else if ([prop isEqualToString:@"backgroundPatternTransition"]) {
617
614
  [self setBackgroundPatternTransition:layer withReactStyleValue:styleValue];
@@ -1,4 +1,5 @@
1
1
  #import <React/RCTComponent.h>
2
+ #import <React/RCTInvalidating.h>
2
3
 
3
4
  #import <MapLibre/MapLibre.h>
4
5
 
@@ -61,6 +62,7 @@ typedef void (^StyleLoadedBlock)(MLNStyle *__nonnull style);
61
62
 
62
63
  @property (nonatomic, assign) BOOL isUserInteraction;
63
64
  @property (nonatomic, assign) BOOL useNativeUserLocationAnnotationView;
65
+ @property (nonatomic, assign) BOOL annotationSelected;
64
66
 
65
67
  @property (nonatomic, copy, nullable) RCTBubblingEventBlock reactOnPress;
66
68
  @property (nonatomic, copy, nullable) RCTBubblingEventBlock reactOnLongPress;
@@ -13,6 +13,7 @@
13
13
 
14
14
  @implementation MLRNMapView {
15
15
  BOOL _pendingInitialLayout;
16
+ CGPoint _lastTapPoint;
16
17
  }
17
18
 
18
19
  static double const DEG2RAD = M_PI / 180;
@@ -26,6 +27,8 @@ static double const M2PI = M_PI * 2;
26
27
  self.delegate = self;
27
28
 
28
29
  _pendingInitialLayout = YES;
30
+ _lastTapPoint = CGPointZero;
31
+ _annotationSelected = NO;
29
32
  _cameraUpdateQueue = [[CameraUpdateQueue alloc] init];
30
33
  _sources = [[NSMutableArray alloc] init];
31
34
  _images = [[NSMutableArray alloc] init];
@@ -251,10 +254,17 @@ static double const M2PI = M_PI * 2;
251
254
 
252
255
  // MARK: - UIGestureRecognizers
253
256
 
254
- - (void)didTapMap:(UITapGestureRecognizer *)recognizer {
255
- MLRNMapView *mapView = (MLRNMapView *)recognizer.view;
256
- CGPoint screenPoint = [recognizer locationInView:mapView];
257
- NSArray<MLRNSource *> *touchableSources = [mapView getAllTouchableSources];
257
+ - (void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event {
258
+ [super touchesBegan:touches withEvent:event];
259
+ _annotationSelected = NO;
260
+ UITouch *touch = touches.anyObject;
261
+ if (touch != nil) {
262
+ _lastTapPoint = [touch locationInView:self];
263
+ }
264
+ }
265
+
266
+ - (void)handleTapAtPoint:(CGPoint)screenPoint {
267
+ NSArray<MLRNSource *> *touchableSources = [self getAllTouchableSources];
258
268
 
259
269
  NSMutableDictionary<NSString *, NSArray<id<MLNFeature>> *> *hits =
260
270
  [[NSMutableDictionary alloc] init];
@@ -270,7 +280,7 @@ static double const M2PI = M_PI * 2;
270
280
  CGRectMake(left, top, [hitbox[@"width"] floatValue], [hitbox[@"height"] floatValue]);
271
281
 
272
282
  NSArray<id<MLNFeature>> *features =
273
- [mapView visibleFeaturesInRect:hitboxRect
283
+ [self visibleFeaturesInRect:hitboxRect
274
284
  inStyleLayersWithIdentifiers:[NSSet setWithArray:[touchableSource getLayerIDs]]
275
285
  predicate:nil];
276
286
 
@@ -281,12 +291,11 @@ static double const M2PI = M_PI * 2;
281
291
  }
282
292
 
283
293
  if (hits.count > 0) {
284
- MLRNSource *source = [mapView getTouchableSourceWithHighestZIndex:hitTouchableSources];
294
+ MLRNSource *source = [self getTouchableSourceWithHighestZIndex:hitTouchableSources];
285
295
  if (source != nil && source.hasPressListener) {
286
296
  NSArray *geoJSONDicts = [MLRNUtils featuresToJSON:hits[source.id]];
287
297
 
288
- CLLocationCoordinate2D coordinate = [mapView convertPoint:screenPoint
289
- toCoordinateFromView:mapView];
298
+ CLLocationCoordinate2D coordinate = [self convertPoint:screenPoint toCoordinateFromView:self];
290
299
 
291
300
  source.onPress(@{
292
301
  @"lngLat" : @[
@@ -303,13 +312,17 @@ static double const M2PI = M_PI * 2;
303
312
  }
304
313
  }
305
314
 
306
- if (mapView.reactOnPress != nil) {
307
- MLRNMapTouchEvent *event = [MLRNMapTouchEvent makeTapEvent:mapView withPoint:screenPoint];
308
-
315
+ if (self.reactOnPress != nil) {
316
+ MLRNMapTouchEvent *event = [MLRNMapTouchEvent makeTapEvent:self withPoint:screenPoint];
309
317
  self.reactOnPress(event.toJSON);
310
318
  }
311
319
  }
312
320
 
321
+ - (void)didTapMap:(UITapGestureRecognizer *)recognizer {
322
+ CGPoint screenPoint = [recognizer locationInView:self];
323
+ [self handleTapAtPoint:screenPoint];
324
+ }
325
+
313
326
  - (void)didLongPressMap:(UILongPressGestureRecognizer *)recognizer {
314
327
  MLRNMapView *mapView = (MLRNMapView *)recognizer.view;
315
328
 
@@ -627,6 +640,12 @@ static double const M2PI = M_PI * 2;
627
640
  rctAnnotation.reactOnDeselected([rctAnnotation makeEventPayload]);
628
641
  }
629
642
  }
643
+
644
+ if (_annotationSelected) {
645
+ _annotationSelected = NO;
646
+ } else {
647
+ [self handleTapAtPoint:_lastTapPoint];
648
+ }
630
649
  }
631
650
 
632
651
  - (BOOL)mapView:(MLNMapView *)mapView annotationCanShowCallout:(id<MLNAnnotation>)annotation {
@@ -1,12 +1,9 @@
1
- #import <React/RCTBridge.h>
2
1
  #import "MLRNSource.h"
3
2
 
4
3
  #import <MapLibre/MapLibre.h>
5
4
 
6
5
  @interface MLRNGeoJSONSource : MLRNSource
7
6
 
8
- @property (nonatomic, weak) RCTBridge *bridge;
9
-
10
7
  @property (nonatomic, copy, nullable) NSString *url;
11
8
  @property (nonatomic, copy, nullable) NSString *shape;
12
9
 
@@ -1,7 +1,5 @@
1
1
  #import <MapLibre/MapLibre.h>
2
- #import <React/RCTBridge.h>
3
2
  #import <React/RCTConvert.h>
4
- #import <React/RCTImageLoader.h>
5
3
 
6
4
  @interface MLRNUtils : NSObject
7
5
 
@@ -24,18 +22,6 @@
24
22
 
25
23
  + (UIColor *)toColor:(id)value;
26
24
 
27
- + (void)fetchImage:(RCTBridge *)bridge
28
- url:(NSString *)url
29
- scale:(double)scale
30
- sdf:(Boolean)sdf
31
- callback:(RCTImageLoaderCompletionBlock)callback;
32
-
33
- + (void)fetchImages:(RCTBridge *)bridge
34
- style:(MLNStyle *)style
35
- objects:(NSDictionary<NSString *, NSString *> *)objects
36
- forceUpdate:(BOOL)forceUpdate
37
- callback:(void (^)(void))callback;
38
-
39
25
  + (CGVector)toCGVector:(NSArray<NSNumber *> *)arr;
40
26
 
41
27
  + (UIEdgeInsets)toUIEdgeInsets:(NSArray<NSNumber *> *)arr;
@@ -1,5 +1,4 @@
1
1
  #import "MLRNUtils.h"
2
- #import "MLRNImageQueue.h"
3
2
 
4
3
  @import MapLibre;
5
4
 
@@ -99,76 +98,6 @@ static double const MS_TO_S = 0.001;
99
98
  return CGVectorMake([arr[0] floatValue], [arr[1] floatValue]);
100
99
  }
101
100
 
102
- + (void)fetchImage:(RCTBridge *)bridge
103
- url:(NSString *)url
104
- scale:(double)scale
105
- sdf:(Boolean)sdf
106
- callback:(RCTImageLoaderCompletionBlock)callback {
107
- [MLRNImageQueue.sharedInstance addImage:url
108
- scale:scale
109
- sdf:sdf
110
- bridge:bridge
111
- completionHandler:callback];
112
- }
113
-
114
- + (void)fetchImages:(RCTBridge *)bridge
115
- style:(MLNStyle *)style
116
- objects:(NSDictionary<NSString *, id> *)objects
117
- forceUpdate:(BOOL)forceUpdate
118
- callback:(void (^)(void))callback {
119
- if (objects == nil) {
120
- callback();
121
- return;
122
- }
123
-
124
- NSArray<NSString *> *imageNames = objects.allKeys;
125
- if (imageNames.count == 0) {
126
- callback();
127
- return;
128
- }
129
-
130
- __block NSUInteger imagesLeftToLoad = imageNames.count;
131
- __weak MLNStyle *weakStyle = style;
132
-
133
- void (^imageLoadedBlock)(void) = ^{
134
- imagesLeftToLoad--;
135
-
136
- if (imagesLeftToLoad == 0) {
137
- callback();
138
- }
139
- };
140
-
141
- for (NSString *imageName in imageNames) {
142
- UIImage *foundImage = forceUpdate ? nil : [style imageForName:imageName];
143
-
144
- if (forceUpdate || foundImage == nil) {
145
- NSDictionary *image = objects[imageName];
146
- BOOL hasScale =
147
- [image isKindOfClass:[NSDictionary class]] && ([image objectForKey:@"scale"] != nil);
148
- BOOL hasSdf =
149
- [image isKindOfClass:[NSDictionary class]] && ([image objectForKey:@"sdf"] != nil);
150
- double scale = hasScale ? [[image objectForKey:@"scale"] doubleValue] : 1.0;
151
- double sdf = hasSdf ? [[image objectForKey:@"sdf"] boolValue] : false;
152
- [MLRNImageQueue.sharedInstance addImage:objects[imageName]
153
- scale:scale
154
- sdf:sdf
155
- bridge:bridge
156
- completionHandler:^(NSError *error, UIImage *image) {
157
- if (!image) {
158
- RCTLogWarn(@"Failed to fetch image: %@ error:%@", imageName, error);
159
- } else {
160
- dispatch_async(dispatch_get_main_queue(), ^{
161
- [weakStyle setImage:image forName:imageName];
162
- imageLoadedBlock();
163
- });
164
- }
165
- }];
166
- } else {
167
- imageLoadedBlock();
168
- }
169
- }
170
- }
171
-
172
101
  + (NSString *)getStyleJsonTempDirectory {
173
102
  static NSString *styleJsonTempDirectory;
174
103
  if (!styleJsonTempDirectory) {
@@ -7,6 +7,7 @@ exports.Images = void 0;
7
7
  var _react = require("react");
8
8
  var _reactNative = require("react-native");
9
9
  var _ImagesNativeComponent = _interopRequireDefault(require("./ImagesNativeComponent"));
10
+ require("./NativeImagesModule.js");
10
11
  var _jsxRuntime = require("react/jsx-runtime");
11
12
  function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
12
13
  /**
@@ -1 +1 @@
1
- {"version":3,"names":["_react","require","_reactNative","_ImagesNativeComponent","_interopRequireDefault","_jsxRuntime","e","__esModule","default","Images","testID","images","onImageMissing","nativeImages","useMemo","result","Object","entries","forEach","imageName","value","uri","resolved","Image","resolveAssetSource","source","scale","sdf","jsx","exports"],"sourceRoot":"../../../../src","sources":["components/images/Images.tsx"],"mappings":";;;;;;AAAA,IAAAA,MAAA,GAAAC,OAAA;AACA,IAAAC,YAAA,GAAAD,OAAA;AAOA,IAAAE,sBAAA,GAAAC,sBAAA,CAAAH,OAAA;AAEiC,IAAAI,WAAA,GAAAJ,OAAA;AAAA,SAAAG,uBAAAE,CAAA,WAAAA,CAAA,IAAAA,CAAA,CAAAC,UAAA,GAAAD,CAAA,KAAAE,OAAA,EAAAF,CAAA;AAsDjC;AACA;AACA;AACA;AACA;AACA;AACO,MAAMG,MAAM,GAAGA,CAAC;EAAEC,MAAM;EAAEC,MAAM;EAAEC;AAA4B,CAAC,KAAK;EACzE,MAAMC,YAAY,GAAG,IAAAC,cAAO,EAAC,MAAM;IACjC,MAAMC,MAAwC,GAAG,CAAC,CAAC;IAEnDC,MAAM,CAACC,OAAO,CAACN,MAAM,CAAC,CAACO,OAAO,CAAC,CAAC,CAACC,SAAS,EAAEC,KAAK,CAAC,KAAK;MACrD,IAAI,OAAOA,KAAK,KAAK,QAAQ,EAAE;QAC7BL,MAAM,CAACI,SAAS,CAAC,GAAG;UAClBE,GAAG,EAAED;QACP,CAAC;MACH,CAAC,MAAM;QACL,MAAME,QAAQ,GAAGC,kBAAK,CAACC,kBAAkB,CACvC,OAAOJ,KAAK,KAAK,QAAQ,GAAGA,KAAK,GAAGA,KAAK,CAACK,MAC5C,CAAC;QAEDV,MAAM,CAACI,SAAS,CAAC,GAAG;UAClBE,GAAG,EAAEC,QAAQ,CAACD,GAAG;UACjBK,KAAK,EAAEJ,QAAQ,CAACI,KAAK;UACrBC,GAAG,EAAE,OAAOP,KAAK,KAAK,QAAQ,GAAGA,KAAK,CAACO,GAAG,GAAG;QAC/C,CAAC;MACH;IACF,CAAC,CAAC;IAEF,OAAOZ,MAAM;EACf,CAAC,EAAE,CAACJ,MAAM,CAAC,CAAC;EAEZ,oBACE,IAAAN,WAAA,CAAAuB,GAAA,EAACzB,sBAAA,CAAAK,OAAqB;IACpBE,MAAM,EAAEA,MAAO;IACfC,MAAM,EAAEE,YAAa;IACrBD,cAAc,EAAEA;EAAe,CAChC,CAAC;AAEN,CAAC;AAACiB,OAAA,CAAApB,MAAA,GAAAA,MAAA","ignoreList":[]}
1
+ {"version":3,"names":["_react","require","_reactNative","_ImagesNativeComponent","_interopRequireDefault","_jsxRuntime","e","__esModule","default","Images","testID","images","onImageMissing","nativeImages","useMemo","result","Object","entries","forEach","imageName","value","uri","resolved","Image","resolveAssetSource","source","scale","sdf","jsx","exports"],"sourceRoot":"../../../../src","sources":["components/images/Images.tsx"],"mappings":";;;;;;AAAA,IAAAA,MAAA,GAAAC,OAAA;AACA,IAAAC,YAAA,GAAAD,OAAA;AAOA,IAAAE,sBAAA,GAAAC,sBAAA,CAAAH,OAAA;AAGAA,OAAA;AAA8B,IAAAI,WAAA,GAAAJ,OAAA;AAAA,SAAAG,uBAAAE,CAAA,WAAAA,CAAA,IAAAA,CAAA,CAAAC,UAAA,GAAAD,CAAA,KAAAE,OAAA,EAAAF,CAAA;AAsD9B;AACA;AACA;AACA;AACA;AACA;AACO,MAAMG,MAAM,GAAGA,CAAC;EAAEC,MAAM;EAAEC,MAAM;EAAEC;AAA4B,CAAC,KAAK;EACzE,MAAMC,YAAY,GAAG,IAAAC,cAAO,EAAC,MAAM;IACjC,MAAMC,MAAwC,GAAG,CAAC,CAAC;IAEnDC,MAAM,CAACC,OAAO,CAACN,MAAM,CAAC,CAACO,OAAO,CAAC,CAAC,CAACC,SAAS,EAAEC,KAAK,CAAC,KAAK;MACrD,IAAI,OAAOA,KAAK,KAAK,QAAQ,EAAE;QAC7BL,MAAM,CAACI,SAAS,CAAC,GAAG;UAClBE,GAAG,EAAED;QACP,CAAC;MACH,CAAC,MAAM;QACL,MAAME,QAAQ,GAAGC,kBAAK,CAACC,kBAAkB,CACvC,OAAOJ,KAAK,KAAK,QAAQ,GAAGA,KAAK,GAAGA,KAAK,CAACK,MAC5C,CAAC;QAEDV,MAAM,CAACI,SAAS,CAAC,GAAG;UAClBE,GAAG,EAAEC,QAAQ,CAACD,GAAG;UACjBK,KAAK,EAAEJ,QAAQ,CAACI,KAAK;UACrBC,GAAG,EAAE,OAAOP,KAAK,KAAK,QAAQ,GAAGA,KAAK,CAACO,GAAG,GAAG;QAC/C,CAAC;MACH;IACF,CAAC,CAAC;IAEF,OAAOZ,MAAM;EACf,CAAC,EAAE,CAACJ,MAAM,CAAC,CAAC;EAEZ,oBACE,IAAAN,WAAA,CAAAuB,GAAA,EAACzB,sBAAA,CAAAK,OAAqB;IACpBE,MAAM,EAAEA,MAAO;IACfC,MAAM,EAAEE,YAAa;IACrBD,cAAc,EAAEA;EAAe,CAChC,CAAC;AAEN,CAAC;AAACiB,OAAA,CAAApB,MAAA,GAAAA,MAAA","ignoreList":[]}
@@ -0,0 +1,10 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+ var _reactNative = require("react-native");
8
+ const imagesModule = _reactNative.Platform.OS === "ios" ? _reactNative.TurboModuleRegistry.getEnforcing("MLRNImagesModule") : null;
9
+ var _default = exports.default = imagesModule;
10
+ //# sourceMappingURL=NativeImagesModule.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_reactNative","require","imagesModule","Platform","OS","TurboModuleRegistry","getEnforcing","_default","exports","default"],"sourceRoot":"../../../../src","sources":["components/images/NativeImagesModule.ts"],"mappings":";;;;;;AAAA,IAAAA,YAAA,GAAAC,OAAA;AAKA,MAAMC,YAAY,GAChBC,qBAAQ,CAACC,EAAE,KAAK,KAAK,GACjBC,gCAAmB,CAACC,YAAY,CAAO,kBAAkB,CAAC,GAC1D,IAAI;AAAC,IAAAC,QAAA,GAAAC,OAAA,CAAAC,OAAA,GAEIP,YAAY","ignoreList":[]}
@@ -3,6 +3,7 @@
3
3
  import { useMemo } from "react";
4
4
  import { Image } from "react-native";
5
5
  import ImagesNativeComponent from "./ImagesNativeComponent";
6
+ import "./NativeImagesModule.js";
6
7
  import { jsx as _jsx } from "react/jsx-runtime";
7
8
  /**
8
9
  * Images defines the images used in Symbol layers.
@@ -1 +1 @@
1
- {"version":3,"names":["useMemo","Image","ImagesNativeComponent","jsx","_jsx","Images","testID","images","onImageMissing","nativeImages","result","Object","entries","forEach","imageName","value","uri","resolved","resolveAssetSource","source","scale","sdf"],"sourceRoot":"../../../../src","sources":["components/images/Images.tsx"],"mappings":";;AAAA,SAASA,OAAO,QAAQ,OAAO;AAC/B,SACEC,KAAK,QAIA,cAAc;AAErB,OAAOC,qBAAqB,MAErB,yBAAyB;AAAC,SAAAC,GAAA,IAAAC,IAAA;AAsDjC;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,MAAMC,MAAM,GAAGA,CAAC;EAAEC,MAAM;EAAEC,MAAM;EAAEC;AAA4B,CAAC,KAAK;EACzE,MAAMC,YAAY,GAAGT,OAAO,CAAC,MAAM;IACjC,MAAMU,MAAwC,GAAG,CAAC,CAAC;IAEnDC,MAAM,CAACC,OAAO,CAACL,MAAM,CAAC,CAACM,OAAO,CAAC,CAAC,CAACC,SAAS,EAAEC,KAAK,CAAC,KAAK;MACrD,IAAI,OAAOA,KAAK,KAAK,QAAQ,EAAE;QAC7BL,MAAM,CAACI,SAAS,CAAC,GAAG;UAClBE,GAAG,EAAED;QACP,CAAC;MACH,CAAC,MAAM;QACL,MAAME,QAAQ,GAAGhB,KAAK,CAACiB,kBAAkB,CACvC,OAAOH,KAAK,KAAK,QAAQ,GAAGA,KAAK,GAAGA,KAAK,CAACI,MAC5C,CAAC;QAEDT,MAAM,CAACI,SAAS,CAAC,GAAG;UAClBE,GAAG,EAAEC,QAAQ,CAACD,GAAG;UACjBI,KAAK,EAAEH,QAAQ,CAACG,KAAK;UACrBC,GAAG,EAAE,OAAON,KAAK,KAAK,QAAQ,GAAGA,KAAK,CAACM,GAAG,GAAG;QAC/C,CAAC;MACH;IACF,CAAC,CAAC;IAEF,OAAOX,MAAM;EACf,CAAC,EAAE,CAACH,MAAM,CAAC,CAAC;EAEZ,oBACEH,IAAA,CAACF,qBAAqB;IACpBI,MAAM,EAAEA,MAAO;IACfC,MAAM,EAAEE,YAAa;IACrBD,cAAc,EAAEA;EAAe,CAChC,CAAC;AAEN,CAAC","ignoreList":[]}
1
+ {"version":3,"names":["useMemo","Image","ImagesNativeComponent","jsx","_jsx","Images","testID","images","onImageMissing","nativeImages","result","Object","entries","forEach","imageName","value","uri","resolved","resolveAssetSource","source","scale","sdf"],"sourceRoot":"../../../../src","sources":["components/images/Images.tsx"],"mappings":";;AAAA,SAASA,OAAO,QAAQ,OAAO;AAC/B,SACEC,KAAK,QAIA,cAAc;AAErB,OAAOC,qBAAqB,MAErB,yBAAyB;AAChC,OAAO,yBAAsB;AAAC,SAAAC,GAAA,IAAAC,IAAA;AAsD9B;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,MAAMC,MAAM,GAAGA,CAAC;EAAEC,MAAM;EAAEC,MAAM;EAAEC;AAA4B,CAAC,KAAK;EACzE,MAAMC,YAAY,GAAGT,OAAO,CAAC,MAAM;IACjC,MAAMU,MAAwC,GAAG,CAAC,CAAC;IAEnDC,MAAM,CAACC,OAAO,CAACL,MAAM,CAAC,CAACM,OAAO,CAAC,CAAC,CAACC,SAAS,EAAEC,KAAK,CAAC,KAAK;MACrD,IAAI,OAAOA,KAAK,KAAK,QAAQ,EAAE;QAC7BL,MAAM,CAACI,SAAS,CAAC,GAAG;UAClBE,GAAG,EAAED;QACP,CAAC;MACH,CAAC,MAAM;QACL,MAAME,QAAQ,GAAGhB,KAAK,CAACiB,kBAAkB,CACvC,OAAOH,KAAK,KAAK,QAAQ,GAAGA,KAAK,GAAGA,KAAK,CAACI,MAC5C,CAAC;QAEDT,MAAM,CAACI,SAAS,CAAC,GAAG;UAClBE,GAAG,EAAEC,QAAQ,CAACD,GAAG;UACjBI,KAAK,EAAEH,QAAQ,CAACG,KAAK;UACrBC,GAAG,EAAE,OAAON,KAAK,KAAK,QAAQ,GAAGA,KAAK,CAACM,GAAG,GAAG;QAC/C,CAAC;MACH;IACF,CAAC,CAAC;IAEF,OAAOX,MAAM;EACf,CAAC,EAAE,CAACH,MAAM,CAAC,CAAC;EAEZ,oBACEH,IAAA,CAACF,qBAAqB;IACpBI,MAAM,EAAEA,MAAO;IACfC,MAAM,EAAEE,YAAa;IACrBD,cAAc,EAAEA;EAAe,CAChC,CAAC;AAEN,CAAC","ignoreList":[]}
@@ -0,0 +1,7 @@
1
+ "use strict";
2
+
3
+ import { Platform } from "react-native";
4
+ import { TurboModuleRegistry } from "react-native";
5
+ const imagesModule = Platform.OS === "ios" ? TurboModuleRegistry.getEnforcing("MLRNImagesModule") : null;
6
+ export default imagesModule;
7
+ //# sourceMappingURL=NativeImagesModule.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["Platform","TurboModuleRegistry","imagesModule","OS","getEnforcing"],"sourceRoot":"../../../../src","sources":["components/images/NativeImagesModule.ts"],"mappings":";;AAAA,SAASA,QAAQ,QAA0B,cAAc;AACzD,SAASC,mBAAmB,QAAQ,cAAc;AAIlD,MAAMC,YAAY,GAChBF,QAAQ,CAACG,EAAE,KAAK,KAAK,GACjBF,mBAAmB,CAACG,YAAY,CAAO,kBAAkB,CAAC,GAC1D,IAAI;AAEV,eAAeF,YAAY","ignoreList":[]}
@@ -1,4 +1,5 @@
1
1
  import { type ImageRequireSource, type ImageSourcePropType, type NativeSyntheticEvent } from "react-native";
2
+ import "./NativeImagesModule";
2
3
  import { type BaseProps } from "../../types/BaseProps";
3
4
  export type ImageSourceWithSdf = {
4
5
  source: ImageSourcePropType;
@@ -1 +1 @@
1
- {"version":3,"file":"Images.d.ts","sourceRoot":"","sources":["../../../../../../src/components/images/Images.tsx"],"names":[],"mappings":"AACA,OAAO,EAEL,KAAK,kBAAkB,EACvB,KAAK,mBAAmB,EACxB,KAAK,oBAAoB,EAC1B,MAAM,cAAc,CAAC;AAKtB,OAAO,EAAE,KAAK,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAEvD,MAAM,MAAM,kBAAkB,GAAG;IAC/B,MAAM,EAAE,mBAAmB,CAAC;IAC5B,GAAG,CAAC,EAAE,OAAO,CAAC;CACf,CAAC;AAEF,MAAM,MAAM,UAAU,GAAG,MAAM,GAAG,kBAAkB,GAAG,kBAAkB,CAAC;AAE1E,MAAM,WAAW,WAAY,SAAQ,SAAS;IAC5C;;;;;;;;;;;;;;;;;;;;;;;OAuBG;IACH,MAAM,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,UAAU,CAAA;KAAE,CAAC;IAEtC;;;;;;;;;;;;;OAaG;IACH,cAAc,CAAC,EAAE,CAAC,KAAK,EAAE,oBAAoB,CAAC;QAAE,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC,KAAK,IAAI,CAAC;CAC3E;AAED;;;;;GAKG;AACH,eAAO,MAAM,MAAM,GAAI,oCAAoC,WAAW,4CAgCrE,CAAC"}
1
+ {"version":3,"file":"Images.d.ts","sourceRoot":"","sources":["../../../../../../src/components/images/Images.tsx"],"names":[],"mappings":"AACA,OAAO,EAEL,KAAK,kBAAkB,EACvB,KAAK,mBAAmB,EACxB,KAAK,oBAAoB,EAC1B,MAAM,cAAc,CAAC;AAKtB,OAAO,sBAAsB,CAAC;AAC9B,OAAO,EAAE,KAAK,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAEvD,MAAM,MAAM,kBAAkB,GAAG;IAC/B,MAAM,EAAE,mBAAmB,CAAC;IAC5B,GAAG,CAAC,EAAE,OAAO,CAAC;CACf,CAAC;AAEF,MAAM,MAAM,UAAU,GAAG,MAAM,GAAG,kBAAkB,GAAG,kBAAkB,CAAC;AAE1E,MAAM,WAAW,WAAY,SAAQ,SAAS;IAC5C;;;;;;;;;;;;;;;;;;;;;;;OAuBG;IACH,MAAM,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,UAAU,CAAA;KAAE,CAAC;IAEtC;;;;;;;;;;;;;OAaG;IACH,cAAc,CAAC,EAAE,CAAC,KAAK,EAAE,oBAAoB,CAAC;QAAE,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC,KAAK,IAAI,CAAC;CAC3E;AAED;;;;;GAKG;AACH,eAAO,MAAM,MAAM,GAAI,oCAAoC,WAAW,4CAgCrE,CAAC"}
@@ -0,0 +1,6 @@
1
+ import { type TurboModule } from "react-native";
2
+ export interface Spec extends TurboModule {
3
+ }
4
+ declare const imagesModule: Spec | null;
5
+ export default imagesModule;
6
+ //# sourceMappingURL=NativeImagesModule.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"NativeImagesModule.d.ts","sourceRoot":"","sources":["../../../../../../src/components/images/NativeImagesModule.ts"],"names":[],"mappings":"AAAA,OAAO,EAAY,KAAK,WAAW,EAAE,MAAM,cAAc,CAAC;AAG1D,MAAM,WAAW,IAAK,SAAQ,WAAW;CAAG;AAE5C,QAAA,MAAM,YAAY,aAGR,CAAC;AAEX,eAAe,YAAY,CAAC"}
@@ -1,4 +1,5 @@
1
1
  import { type ImageRequireSource, type ImageSourcePropType, type NativeSyntheticEvent } from "react-native";
2
+ import "./NativeImagesModule";
2
3
  import { type BaseProps } from "../../types/BaseProps";
3
4
  export type ImageSourceWithSdf = {
4
5
  source: ImageSourcePropType;
@@ -1 +1 @@
1
- {"version":3,"file":"Images.d.ts","sourceRoot":"","sources":["../../../../../../src/components/images/Images.tsx"],"names":[],"mappings":"AACA,OAAO,EAEL,KAAK,kBAAkB,EACvB,KAAK,mBAAmB,EACxB,KAAK,oBAAoB,EAC1B,MAAM,cAAc,CAAC;AAKtB,OAAO,EAAE,KAAK,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAEvD,MAAM,MAAM,kBAAkB,GAAG;IAC/B,MAAM,EAAE,mBAAmB,CAAC;IAC5B,GAAG,CAAC,EAAE,OAAO,CAAC;CACf,CAAC;AAEF,MAAM,MAAM,UAAU,GAAG,MAAM,GAAG,kBAAkB,GAAG,kBAAkB,CAAC;AAE1E,MAAM,WAAW,WAAY,SAAQ,SAAS;IAC5C;;;;;;;;;;;;;;;;;;;;;;;OAuBG;IACH,MAAM,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,UAAU,CAAA;KAAE,CAAC;IAEtC;;;;;;;;;;;;;OAaG;IACH,cAAc,CAAC,EAAE,CAAC,KAAK,EAAE,oBAAoB,CAAC;QAAE,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC,KAAK,IAAI,CAAC;CAC3E;AAED;;;;;GAKG;AACH,eAAO,MAAM,MAAM,GAAI,oCAAoC,WAAW,4CAgCrE,CAAC"}
1
+ {"version":3,"file":"Images.d.ts","sourceRoot":"","sources":["../../../../../../src/components/images/Images.tsx"],"names":[],"mappings":"AACA,OAAO,EAEL,KAAK,kBAAkB,EACvB,KAAK,mBAAmB,EACxB,KAAK,oBAAoB,EAC1B,MAAM,cAAc,CAAC;AAKtB,OAAO,sBAAsB,CAAC;AAC9B,OAAO,EAAE,KAAK,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAEvD,MAAM,MAAM,kBAAkB,GAAG;IAC/B,MAAM,EAAE,mBAAmB,CAAC;IAC5B,GAAG,CAAC,EAAE,OAAO,CAAC;CACf,CAAC;AAEF,MAAM,MAAM,UAAU,GAAG,MAAM,GAAG,kBAAkB,GAAG,kBAAkB,CAAC;AAE1E,MAAM,WAAW,WAAY,SAAQ,SAAS;IAC5C;;;;;;;;;;;;;;;;;;;;;;;OAuBG;IACH,MAAM,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,UAAU,CAAA;KAAE,CAAC;IAEtC;;;;;;;;;;;;;OAaG;IACH,cAAc,CAAC,EAAE,CAAC,KAAK,EAAE,oBAAoB,CAAC;QAAE,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC,KAAK,IAAI,CAAC;CAC3E;AAED;;;;;GAKG;AACH,eAAO,MAAM,MAAM,GAAI,oCAAoC,WAAW,4CAgCrE,CAAC"}
@@ -0,0 +1,6 @@
1
+ import { type TurboModule } from "react-native";
2
+ export interface Spec extends TurboModule {
3
+ }
4
+ declare const imagesModule: Spec | null;
5
+ export default imagesModule;
6
+ //# sourceMappingURL=NativeImagesModule.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"NativeImagesModule.d.ts","sourceRoot":"","sources":["../../../../../../src/components/images/NativeImagesModule.ts"],"names":[],"mappings":"AAAA,OAAO,EAAY,KAAK,WAAW,EAAE,MAAM,cAAc,CAAC;AAG1D,MAAM,WAAW,IAAK,SAAQ,WAAW;CAAG;AAE5C,QAAA,MAAM,YAAY,aAGR,CAAC;AAEX,eAAe,YAAY,CAAC"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@maplibre/maplibre-react-native",
3
3
  "description": "React Native library for creating maps with MapLibre Native for Android & iOS",
4
- "version": "11.0.0-beta.10",
4
+ "version": "11.0.0-beta.12",
5
5
  "publishConfig": {
6
6
  "access": "public",
7
7
  "provenance": true
@@ -143,6 +143,7 @@
143
143
  "modulesProvider": {
144
144
  "MLRNCameraModule": "MLRNCameraModule",
145
145
  "MLRNGeoJSONSourceModule": "MLRNGeoJSONSourceModule",
146
+ "MLRNImagesModule": "MLRNImagesModule",
146
147
  "MLRNLocationModule": "MLRNLocationModule",
147
148
  "MLRNLogModule": "MLRNLogModule",
148
149
  "MLRNMapViewModule": "MLRNMapViewModule",
@@ -180,7 +181,7 @@
180
181
  "devDependencies": {
181
182
  "@expo/config-plugins": "~55.0.4",
182
183
  "@react-native-community/cli": "^20.1.1",
183
- "@react-native/babel-preset": "0.83.1",
184
+ "@react-native/babel-preset": "0.84.1",
184
185
  "@semantic-release/changelog": "^6.0.3",
185
186
  "@semantic-release/exec": "^7.1.0",
186
187
  "@semantic-release/git": "^10.0.1",
@@ -196,11 +197,11 @@
196
197
  "expo-module-scripts": "^5.0.8",
197
198
  "jest": "^29.7.0",
198
199
  "prettier": "3.8.1",
199
- "react": "19.2.0",
200
+ "react": "19.2.3",
200
201
  "react-docgen": "^8.0.1",
201
- "react-native": "0.83.1",
202
+ "react-native": "0.84.1",
202
203
  "react-native-builder-bob": "0.40.17",
203
- "react-test-renderer": "19.2.0",
204
+ "react-test-renderer": "19.2.3",
204
205
  "semantic-release": "^25.0.1",
205
206
  "snapshot-diff": "^0.10.0",
206
207
  "ts-node": "^10.9.2",
@@ -9,6 +9,7 @@ import {
9
9
  import ImagesNativeComponent, {
10
10
  type NativeImageEntry,
11
11
  } from "./ImagesNativeComponent";
12
+ import "./NativeImagesModule";
12
13
  import { type BaseProps } from "../../types/BaseProps";
13
14
 
14
15
  export type ImageSourceWithSdf = {
@@ -0,0 +1,11 @@
1
+ import { Platform, type TurboModule } from "react-native";
2
+ import { TurboModuleRegistry } from "react-native";
3
+
4
+ export interface Spec extends TurboModule {}
5
+
6
+ const imagesModule =
7
+ Platform.OS === "ios"
8
+ ? TurboModuleRegistry.getEnforcing<Spec>("MLRNImagesModule")
9
+ : null;
10
+
11
+ export default imagesModule;