@maplibre/maplibre-react-native 11.0.0-beta.11 → 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 (41) hide show
  1. package/ios/components/images/MLRNImageLoader.h +27 -0
  2. package/ios/components/images/MLRNImageLoader.m +85 -0
  3. package/ios/components/images/MLRNImageQueue.h +2 -2
  4. package/ios/components/images/MLRNImageQueue.m +2 -2
  5. package/ios/components/images/MLRNImageQueueOperation.h +2 -2
  6. package/ios/components/images/MLRNImageQueueOperation.m +3 -3
  7. package/ios/components/images/MLRNImages.h +0 -3
  8. package/ios/components/images/MLRNImages.m +6 -6
  9. package/ios/components/images/MLRNImagesComponentView.mm +0 -3
  10. package/ios/components/images/MLRNImagesModule.h +6 -0
  11. package/ios/components/images/MLRNImagesModule.mm +23 -0
  12. package/ios/components/layer/MLRNLayer.h +0 -3
  13. package/ios/components/layer/MLRNLayer.m +0 -1
  14. package/ios/components/layer/MLRNLayerComponentView.mm +0 -2
  15. package/ios/components/layer/style/MLRNStyle.h +0 -2
  16. package/ios/components/layer/style/MLRNStyle.m +67 -70
  17. package/ios/components/map-view/MLRNMapView.h +1 -0
  18. package/ios/components/sources/geojson-source/MLRNGeoJSONSource.h +0 -3
  19. package/ios/utils/MLRNUtils.h +0 -14
  20. package/ios/utils/MLRNUtils.m +0 -71
  21. package/lib/commonjs/components/images/Images.js +1 -0
  22. package/lib/commonjs/components/images/Images.js.map +1 -1
  23. package/lib/commonjs/components/images/NativeImagesModule.js +10 -0
  24. package/lib/commonjs/components/images/NativeImagesModule.js.map +1 -0
  25. package/lib/module/components/images/Images.js +1 -0
  26. package/lib/module/components/images/Images.js.map +1 -1
  27. package/lib/module/components/images/NativeImagesModule.js +7 -0
  28. package/lib/module/components/images/NativeImagesModule.js.map +1 -0
  29. package/lib/typescript/commonjs/src/components/images/Images.d.ts +1 -0
  30. package/lib/typescript/commonjs/src/components/images/Images.d.ts.map +1 -1
  31. package/lib/typescript/commonjs/src/components/images/NativeImagesModule.d.ts +6 -0
  32. package/lib/typescript/commonjs/src/components/images/NativeImagesModule.d.ts.map +1 -0
  33. package/lib/typescript/module/src/components/images/Images.d.ts +1 -0
  34. package/lib/typescript/module/src/components/images/Images.d.ts.map +1 -1
  35. package/lib/typescript/module/src/components/images/NativeImagesModule.d.ts +6 -0
  36. package/lib/typescript/module/src/components/images/NativeImagesModule.d.ts.map +1 -0
  37. package/package.json +6 -5
  38. package/src/components/images/Images.tsx +1 -0
  39. package/src/components/images/NativeImagesModule.ts +11 -0
  40. /package/ios/{components/images → utils}/MLRNImageUtils.h +0 -0
  41. /package/ios/{components/images → utils}/MLRNImageUtils.m +0 -0
@@ -0,0 +1,27 @@
1
+ #import <MapLibre/MapLibre.h>
2
+ #import <React/RCTImageLoaderProtocol.h>
3
+
4
+ NS_ASSUME_NONNULL_BEGIN
5
+
6
+ /**
7
+ * Singleton that exposes the image loader obtained from the TurboModule registry.
8
+ */
9
+ @interface MLRNImageLoader : NSObject
10
+
11
+ + (instancetype)sharedInstance;
12
+
13
+ @property (nonatomic, strong, nullable) id<RCTImageLoaderProtocol> imageLoader;
14
+
15
+ + (void)fetchImage:(NSString *)url
16
+ scale:(double)scale
17
+ sdf:(BOOL)sdf
18
+ callback:(RCTImageLoaderCompletionBlock)callback;
19
+
20
+ + (void)fetchImages:(MLNStyle *)style
21
+ objects:(NSDictionary<NSString *, id> *)objects
22
+ forceUpdate:(BOOL)forceUpdate
23
+ callback:(void (^)(void))callback;
24
+
25
+ @end
26
+
27
+ NS_ASSUME_NONNULL_END
@@ -0,0 +1,85 @@
1
+ #import "MLRNImageLoader.h"
2
+ #import "MLRNImageQueue.h"
3
+
4
+ #import <React/RCTLog.h>
5
+
6
+ @implementation MLRNImageLoader
7
+
8
+ + (instancetype)sharedInstance {
9
+ static MLRNImageLoader *_instance = nil;
10
+ static dispatch_once_t onceToken;
11
+ dispatch_once(&onceToken, ^{
12
+ _instance = [[MLRNImageLoader alloc] init];
13
+ });
14
+ return _instance;
15
+ }
16
+
17
+ + (void)fetchImage:(NSString *)url
18
+ scale:(double)scale
19
+ sdf:(BOOL)sdf
20
+ callback:(RCTImageLoaderCompletionBlock)callback {
21
+ [MLRNImageQueue.sharedInstance addImage:url
22
+ scale:scale
23
+ sdf:sdf
24
+ imageLoader:[MLRNImageLoader sharedInstance].imageLoader
25
+ completionHandler:callback];
26
+ }
27
+
28
+ + (void)fetchImages:(MLNStyle *)style
29
+ objects:(NSDictionary<NSString *, id> *)objects
30
+ forceUpdate:(BOOL)forceUpdate
31
+ callback:(void (^)(void))callback {
32
+ if (objects == nil) {
33
+ callback();
34
+ return;
35
+ }
36
+
37
+ NSArray<NSString *> *imageNames = objects.allKeys;
38
+ if (imageNames.count == 0) {
39
+ callback();
40
+ return;
41
+ }
42
+
43
+ __block NSUInteger imagesLeftToLoad = imageNames.count;
44
+ __weak MLNStyle *weakStyle = style;
45
+
46
+ void (^imageLoadedBlock)(void) = ^{
47
+ imagesLeftToLoad--;
48
+
49
+ if (imagesLeftToLoad == 0) {
50
+ callback();
51
+ }
52
+ };
53
+
54
+ for (NSString *imageName in imageNames) {
55
+ UIImage *foundImage = forceUpdate ? nil : [style imageForName:imageName];
56
+
57
+ if (forceUpdate || foundImage == nil) {
58
+ NSDictionary *image = objects[imageName];
59
+ BOOL hasScale =
60
+ [image isKindOfClass:[NSDictionary class]] && ([image objectForKey:@"scale"] != nil);
61
+ BOOL hasSdf =
62
+ [image isKindOfClass:[NSDictionary class]] && ([image objectForKey:@"sdf"] != nil);
63
+ double scale = hasScale ? [[image objectForKey:@"scale"] doubleValue] : 1.0;
64
+ BOOL sdf = hasSdf ? [[image objectForKey:@"sdf"] boolValue] : NO;
65
+ [MLRNImageQueue.sharedInstance addImage:objects[imageName]
66
+ scale:scale
67
+ sdf:sdf
68
+ imageLoader:[MLRNImageLoader sharedInstance].imageLoader
69
+ completionHandler:^(NSError *error, UIImage *img) {
70
+ if (!img) {
71
+ RCTLogWarn(@"Failed to fetch image: %@ error:%@", imageName, error);
72
+ } else {
73
+ dispatch_async(dispatch_get_main_queue(), ^{
74
+ [weakStyle setImage:img forName:imageName];
75
+ imageLoadedBlock();
76
+ });
77
+ }
78
+ }];
79
+ } else {
80
+ imageLoadedBlock();
81
+ }
82
+ }
83
+ }
84
+
85
+ @end
@@ -1,5 +1,5 @@
1
1
  #import <Foundation/Foundation.h>
2
- #import <React/RCTImageLoader.h>
2
+ #import <React/RCTImageLoaderProtocol.h>
3
3
 
4
4
  @interface MLRNImageQueue : NSObject
5
5
 
@@ -9,7 +9,7 @@
9
9
  - (void)addImage:(NSString *)imageURL
10
10
  scale:(double)scale
11
11
  sdf:(Boolean)sdf
12
- bridge:(RCTBridge *)bridge
12
+ imageLoader:(id<RCTImageLoaderProtocol>)imageLoader
13
13
  completionHandler:(RCTImageLoaderCompletionBlock)handler;
14
14
 
15
15
  @end
@@ -34,10 +34,10 @@
34
34
  - (void)addImage:(NSString *)imageURL
35
35
  scale:(double)scale
36
36
  sdf:(Boolean)sdf
37
- bridge:(RCTBridge *)bridge
37
+ imageLoader:(id<RCTImageLoaderProtocol>)imageLoader
38
38
  completionHandler:(RCTImageLoaderCompletionBlock)handler {
39
39
  MLRNImageQueueOperation *operation = [[MLRNImageQueueOperation alloc] init];
40
- operation.bridge = bridge;
40
+ operation.imageLoader = imageLoader;
41
41
  operation.urlRequest = [RCTConvert NSURLRequest:imageURL];
42
42
  operation.sdf = sdf;
43
43
  operation.completionHandler = handler;
@@ -1,8 +1,8 @@
1
- #import <React/RCTImageLoader.h>
1
+ #import <React/RCTImageLoaderProtocol.h>
2
2
 
3
3
  @interface MLRNImageQueueOperation : NSBlockOperation
4
4
 
5
- @property (nonatomic, weak) RCTBridge *bridge;
5
+ @property (nonatomic, weak) id<RCTImageLoaderProtocol> imageLoader;
6
6
  @property (nonatomic, copy) RCTImageLoaderCompletionBlock completionHandler;
7
7
  @property (nonatomic, copy) NSURLRequest *urlRequest;
8
8
  @property (nonatomic) Boolean sdf;
@@ -1,5 +1,7 @@
1
1
  #import "MLRNImageQueueOperation.h"
2
2
 
3
+ #import <React/RCTImageLoader.h>
4
+
3
5
  typedef NS_ENUM(NSInteger, MLRNImageQueueOperationState) {
4
6
  IOState_Initial,
5
7
  IOState_CancelledDoNotExecute,
@@ -101,9 +103,7 @@ typedef NS_ENUM(NSInteger, MLRNImageQueueOperationState) {
101
103
  __weak MLRNImageQueueOperation *weakSelf = self;
102
104
  dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
103
105
  [weakSelf
104
- setCancellationBlock:[[weakSelf.bridge moduleForName:@"ImageLoader"
105
- lazilyLoadIfNecessary:YES]
106
- loadImageWithURLRequest:weakSelf.urlRequest
106
+ setCancellationBlock:[weakSelf.imageLoader loadImageWithURLRequest:weakSelf.urlRequest
107
107
  size:CGSizeZero
108
108
  scale:weakSelf.scale
109
109
  clipped:YES
@@ -1,4 +1,3 @@
1
- #import <React/RCTBridge.h>
2
1
  #import <React/RCTComponent.h>
3
2
  #import <UIKit/UIKit.h>
4
3
 
@@ -8,8 +7,6 @@
8
7
 
9
8
  @interface MLRNImages : UIView
10
9
 
11
- @property (nonatomic, weak) RCTBridge *bridge;
12
-
13
10
  @property (nonatomic, strong) MLRNMapView *_Nullable map;
14
11
  @property (nonatomic, strong, nonnull) NSMutableArray<id<RCTComponent>> *reactSubviews;
15
12
 
@@ -2,6 +2,7 @@
2
2
  #import <React/UIView+React.h>
3
3
  #import "MLRNEvent.h"
4
4
  #import "MLRNEventTypes.h"
5
+ #import "MLRNImageLoader.h"
5
6
  #import "MLRNMapView.h"
6
7
  #import "MLRNUtils.h"
7
8
 
@@ -169,12 +170,11 @@ static UIImage *_placeHolderImage;
169
170
 
170
171
  if (missingImages.count > 0) {
171
172
  // forceUpdate to ensure the placeholder images are updated
172
- [MLRNUtils fetchImages:_bridge
173
- style:self.map.style
174
- objects:missingImages
175
- forceUpdate:true
176
- callback:^{
177
- }];
173
+ [MLRNImageLoader fetchImages:self.map.style
174
+ objects:missingImages
175
+ forceUpdate:true
176
+ callback:^{
177
+ }];
178
178
  }
179
179
  }
180
180
 
@@ -7,7 +7,6 @@
7
7
 
8
8
  #import "RCTFabricComponentsPlugins.h"
9
9
 
10
- #import <React/RCTBridge+Private.h>
11
10
  #import <React/RCTConversions.h>
12
11
  #import "MLRNFollyConvert.h"
13
12
  #import "MLRNImages.h"
@@ -37,8 +36,6 @@ using namespace facebook::react;
37
36
  - (void)prepareView {
38
37
  _view = [[MLRNImages alloc] init];
39
38
 
40
- _view.bridge = [RCTBridge currentBridge];
41
-
42
39
  // Capture weak self reference to prevent retain cycle
43
40
  __weak __typeof__(self) weakSelf = self;
44
41
 
@@ -0,0 +1,6 @@
1
+ #import <MapLibreReactNativeSpec/MapLibreReactNativeSpec.h>
2
+
3
+ #import <React/RCTInitializing.h>
4
+
5
+ @interface MLRNImagesModule : NSObject <NativeImagesModuleSpec, RCTInitializing>
6
+ @end
@@ -0,0 +1,23 @@
1
+ #import "MLRNImagesModule.h"
2
+ #import "MLRNImageLoader.h"
3
+
4
+ #import <MapLibreReactNativeSpec/MapLibreReactNativeSpec.h>
5
+
6
+ @implementation MLRNImagesModule
7
+
8
+ @synthesize moduleRegistry = _moduleRegistry;
9
+
10
+ + (NSString *)moduleName {
11
+ return @"MLRNImagesModule";
12
+ }
13
+
14
+ - (std::shared_ptr<facebook::react::TurboModule>)getTurboModule:
15
+ (const facebook::react::ObjCTurboModule::InitParams &)params {
16
+ return std::make_shared<facebook::react::NativeImagesModuleSpecJSI>(params);
17
+ }
18
+
19
+ - (void)initialize {
20
+ [MLRNImageLoader sharedInstance].imageLoader = [_moduleRegistry moduleForName:"ImageLoader"];
21
+ }
22
+
23
+ @end
@@ -1,4 +1,3 @@
1
- #import <React/RCTBridge.h>
2
1
  #import <UIKit/UIKit.h>
3
2
 
4
3
  @class MLRNMapView;
@@ -7,8 +6,6 @@
7
6
 
8
7
  @interface MLRNLayer : UIView
9
8
 
10
- @property (nonatomic, weak, nullable) RCTBridge *bridge;
11
-
12
9
  @property (nonatomic, strong, nullable) MLNStyleLayer *styleLayer;
13
10
  @property (nonatomic, strong, nullable) MLNStyle *style;
14
11
  @property (nonatomic, weak, nullable) MLRNMapView *map;
@@ -211,7 +211,6 @@
211
211
 
212
212
  - (void)addStyles {
213
213
  MLRNStyle *style = [[MLRNStyle alloc] initWithMLNStyle:self.style];
214
- style.bridge = self.bridge;
215
214
 
216
215
  BOOL (^isValid)(void) = ^{
217
216
  return [self isAddedToMap];
@@ -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
 
@@ -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.11",
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;