react-native-maps 1.21.0-alpha.13 → 1.21.0-alpha.131

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 (243) hide show
  1. package/android/build.gradle +73 -53
  2. package/android/gradlew +1 -2
  3. package/android/src/main/RCTAppDependencyProvider.h +25 -0
  4. package/android/src/main/RCTAppDependencyProvider.mm +55 -0
  5. package/android/src/main/RCTModulesConformingToProtocolsProvider.h +18 -0
  6. package/android/src/main/RCTModulesConformingToProtocolsProvider.mm +33 -0
  7. package/android/src/main/RCTThirdPartyComponentsProvider.h +16 -0
  8. package/android/src/main/RCTThirdPartyComponentsProvider.mm +28 -0
  9. package/android/src/main/ReactAppDependencyProvider.podspec +34 -0
  10. package/android/src/main/java/com/facebook/fbreact/specs/NativeAirMapsModuleSpec.java +63 -0
  11. package/android/src/main/java/com/facebook/react/viewmanagers/RNMapsCalloutManagerDelegate.java +35 -0
  12. package/android/src/main/java/com/facebook/react/viewmanagers/RNMapsCalloutManagerInterface.java +17 -0
  13. package/android/src/main/java/com/facebook/react/viewmanagers/RNMapsCircleManagerDelegate.java +49 -0
  14. package/android/src/main/java/com/facebook/react/viewmanagers/RNMapsCircleManagerInterface.java +23 -0
  15. package/android/src/main/java/com/facebook/react/viewmanagers/RNMapsGooglePolygonManagerDelegate.java +49 -0
  16. package/android/src/main/java/com/facebook/react/viewmanagers/RNMapsGooglePolygonManagerInterface.java +23 -0
  17. package/android/src/main/java/com/facebook/react/viewmanagers/RNMapsMapViewManagerDelegate.java +206 -0
  18. package/android/src/main/java/com/facebook/react/viewmanagers/RNMapsMapViewManagerInterface.java +73 -0
  19. package/android/src/main/java/com/facebook/react/viewmanagers/RNMapsMarkerManagerDelegate.java +104 -0
  20. package/android/src/main/java/com/facebook/react/viewmanagers/RNMapsMarkerManagerInterface.java +39 -0
  21. package/android/src/main/java/com/facebook/react/viewmanagers/RNMapsOverlayManagerDelegate.java +46 -0
  22. package/android/src/main/java/com/facebook/react/viewmanagers/RNMapsOverlayManagerInterface.java +23 -0
  23. package/android/src/main/java/com/facebook/react/viewmanagers/RNMapsPolylineManagerDelegate.java +58 -0
  24. package/android/src/main/java/com/facebook/react/viewmanagers/RNMapsPolylineManagerInterface.java +26 -0
  25. package/android/src/main/java/com/rnmaps/fabric/CalloutManager.java +77 -0
  26. package/android/src/main/java/com/rnmaps/fabric/CircleManager.java +94 -0
  27. package/android/src/main/java/com/rnmaps/fabric/JSONUtil.java +86 -0
  28. package/android/src/main/java/com/rnmaps/fabric/MapViewManager.java +619 -0
  29. package/android/src/main/java/com/rnmaps/fabric/MarkerManager.java +258 -0
  30. package/android/src/main/java/com/rnmaps/fabric/NativeAirMapsModule.java +235 -2
  31. package/android/src/main/java/com/rnmaps/fabric/OverlayManager.java +95 -0
  32. package/android/src/main/java/com/rnmaps/fabric/PolygonManager.java +89 -0
  33. package/android/src/main/java/com/rnmaps/fabric/PolylineManager.java +121 -0
  34. package/android/src/main/java/com/rnmaps/fabric/event/OnCalloutPressEvent.java +25 -0
  35. package/android/src/main/java/com/rnmaps/fabric/event/OnDeselectEvent.java +28 -0
  36. package/android/src/main/java/com/rnmaps/fabric/event/OnDoublePressEvent.java +27 -0
  37. package/android/src/main/java/com/rnmaps/fabric/event/OnDragEndEvent.java +28 -0
  38. package/android/src/main/java/com/rnmaps/fabric/event/OnDragEvent.java +28 -0
  39. package/android/src/main/java/com/rnmaps/fabric/event/OnDragStartEvent.java +28 -0
  40. package/android/src/main/java/com/rnmaps/fabric/event/OnIndoorBuildingFocusedEvent.java +28 -0
  41. package/android/src/main/java/com/rnmaps/fabric/event/OnIndoorLevelActivatedEvent.java +28 -0
  42. package/android/src/main/java/com/rnmaps/fabric/event/OnKmlReadyEvent.java +28 -0
  43. package/android/src/main/java/com/rnmaps/fabric/event/OnLongPressEvent.java +28 -0
  44. package/android/src/main/java/com/rnmaps/fabric/event/OnMapLoadedEvent.java +29 -0
  45. package/android/src/main/java/com/rnmaps/fabric/event/OnMapReadyEvent.java +29 -0
  46. package/android/src/main/java/com/rnmaps/fabric/event/OnMarkerDeselectEvent.java +28 -0
  47. package/android/src/main/java/com/rnmaps/fabric/event/OnMarkerDragEndEvent.java +28 -0
  48. package/android/src/main/java/com/rnmaps/fabric/event/OnMarkerDragEvent.java +28 -0
  49. package/android/src/main/java/com/rnmaps/fabric/event/OnMarkerDragStartEvent.java +28 -0
  50. package/android/src/main/java/com/rnmaps/fabric/event/OnMarkerPressEvent.java +28 -0
  51. package/android/src/main/java/com/rnmaps/fabric/event/OnMarkerSelectEvent.java +28 -0
  52. package/android/src/main/java/com/rnmaps/fabric/event/OnPanDragEvent.java +28 -0
  53. package/android/src/main/java/com/rnmaps/fabric/event/OnPoiClickEvent.java +27 -0
  54. package/android/src/main/java/com/rnmaps/fabric/event/OnPressEvent.java +27 -0
  55. package/android/src/main/java/com/rnmaps/fabric/event/OnRegionChangeCompleteEvent.java +30 -0
  56. package/android/src/main/java/com/rnmaps/fabric/event/OnRegionChangeEvent.java +48 -0
  57. package/android/src/main/java/com/rnmaps/fabric/event/OnRegionChangeStartEvent.java +33 -0
  58. package/android/src/main/java/com/rnmaps/fabric/event/OnSelectEvent.java +28 -0
  59. package/android/src/main/java/com/rnmaps/fabric/event/OnUserLocationChangeEvent.java +28 -0
  60. package/android/src/main/java/com/rnmaps/maps/MapAirModulePackage.java +40 -4
  61. package/android/src/main/java/com/rnmaps/maps/MapCallout.java +18 -0
  62. package/android/src/main/java/com/rnmaps/maps/MapCircle.java +24 -0
  63. package/android/src/main/java/com/rnmaps/maps/MapManager.java +14 -14
  64. package/android/src/main/java/com/rnmaps/maps/MapMarker.java +637 -556
  65. package/android/src/main/java/com/rnmaps/maps/MapMarkerManager.java +3 -3
  66. package/android/src/main/java/com/rnmaps/maps/MapModule.java +206 -206
  67. package/android/src/main/java/com/rnmaps/maps/MapOverlay.java +267 -151
  68. package/android/src/main/java/com/rnmaps/maps/MapPolygon.java +31 -1
  69. package/android/src/main/java/com/rnmaps/maps/MapPolyline.java +207 -141
  70. package/android/src/main/java/com/rnmaps/maps/MapPolylineManager.java +1 -16
  71. package/android/src/main/java/com/rnmaps/maps/MapView.java +1650 -1337
  72. package/android/src/main/jni/CMakeLists.txt +36 -0
  73. package/android/src/main/jni/RNMapsSpecs-generated.cpp +68 -0
  74. package/android/src/main/jni/RNMapsSpecs.h +31 -0
  75. package/android/src/main/jni/react/renderer/components/RNMapsSpecs/ComponentDescriptors.cpp +29 -0
  76. package/android/src/main/jni/react/renderer/components/RNMapsSpecs/ComponentDescriptors.h +31 -0
  77. package/android/src/main/jni/react/renderer/components/RNMapsSpecs/EventEmitters.cpp +977 -0
  78. package/android/src/main/jni/react/renderer/components/RNMapsSpecs/EventEmitters.h +846 -0
  79. package/android/src/main/jni/react/renderer/components/RNMapsSpecs/Props.cpp +193 -0
  80. package/android/src/main/jni/react/renderer/components/RNMapsSpecs/Props.h +1223 -0
  81. package/android/src/main/jni/react/renderer/components/RNMapsSpecs/RNMapsSpecsJSI-generated.cpp +74 -0
  82. package/android/src/main/jni/react/renderer/components/RNMapsSpecs/RNMapsSpecsJSI.h +268 -0
  83. package/android/src/main/jni/react/renderer/components/RNMapsSpecs/ShadowNodes.cpp +24 -0
  84. package/android/src/main/jni/react/renderer/components/RNMapsSpecs/ShadowNodes.h +109 -0
  85. package/android/src/main/jni/react/renderer/components/RNMapsSpecs/States.cpp +16 -0
  86. package/android/src/main/jni/react/renderer/components/RNMapsSpecs/States.h +113 -0
  87. package/ios/AirGoogleMaps/AIRGoogleMap.h +10 -11
  88. package/ios/AirGoogleMaps/AIRGoogleMap.m +103 -69
  89. package/ios/AirGoogleMaps/AIRGoogleMapCircle.m +23 -11
  90. package/ios/AirGoogleMaps/AIRGoogleMapManager.m +10 -9
  91. package/ios/AirGoogleMaps/AIRGoogleMapMarker.m +6 -3
  92. package/ios/AirGoogleMaps/AIRGoogleMapMarkerManager.m +1 -1
  93. package/ios/AirGoogleMaps/AIRGoogleMapPolygon.m +3 -0
  94. package/ios/AirGoogleMaps/AIRGoogleMapPolyline.h +0 -1
  95. package/ios/AirGoogleMaps/AIRGoogleMapPolyline.m +0 -7
  96. package/ios/AirGoogleMaps/AIRGoogleMapUrlTile.m +2 -2
  97. package/ios/AirGoogleMaps/AIRGoogleMapWMSTile.h +1 -1
  98. package/ios/AirGoogleMaps/AIRGoogleMapWMSTile.m +4 -4
  99. package/ios/AirGoogleMaps/RNMapsGoogleMapView.h +1 -1
  100. package/ios/AirGoogleMaps/RNMapsGoogleMapView.mm +112 -43
  101. package/ios/AirGoogleMaps/RNMapsGoogleMapViewManager.mm +16 -1
  102. package/ios/AirGoogleMaps/RNMapsGooglePolygonView.h +26 -0
  103. package/ios/AirGoogleMaps/RNMapsGooglePolygonView.mm +217 -0
  104. package/ios/AirGoogleMaps/RNMapsGooglePolygonViewManager.mm +26 -0
  105. package/ios/AirMaps/AIRMap.h +8 -9
  106. package/ios/AirMaps/AIRMap.m +222 -239
  107. package/ios/AirMaps/AIRMapManager.m +10 -7
  108. package/ios/AirMaps/AIRMapMarker.h +1 -0
  109. package/ios/AirMaps/AIRMapMarker.m +165 -103
  110. package/ios/AirMaps/Callout/SMCalloutView.m +1 -1
  111. package/ios/AirMaps/FabricPlaceholders/PlaceHolderGoogleMapView.h +28 -0
  112. package/ios/AirMaps/FabricPlaceholders/PlaceHolderGoogleMapView.mm +68 -0
  113. package/ios/AirMaps/FabricPlaceholders/PlaceHolderPolygonView.h +25 -0
  114. package/ios/AirMaps/FabricPlaceholders/PlaceHolderPolygonView.mm +43 -0
  115. package/ios/AirMaps/RNMapsAirModule.h +1 -1
  116. package/ios/AirMaps/RNMapsAirModule.mm +4 -3
  117. package/ios/AirMaps/RNMapsDefines.h +0 -0
  118. package/ios/AirMaps/RNMapsMapView.h +1 -1
  119. package/ios/AirMaps/RNMapsMapView.mm +119 -95
  120. package/ios/AirMaps/RNMapsMapViewManager.mm +19 -1
  121. package/ios/AirMaps/RNMapsMarkerView.h +24 -0
  122. package/ios/AirMaps/RNMapsMarkerView.mm +430 -0
  123. package/ios/AirMaps/RNMapsMarkerViewManager.mm +28 -0
  124. package/ios/AirMaps.xcodeproj/project.pbxproj +20 -0
  125. package/ios/generated/RCTAppDependencyProvider.h +25 -0
  126. package/ios/generated/RCTAppDependencyProvider.mm +55 -0
  127. package/ios/generated/RCTModulesConformingToProtocolsProvider.h +18 -0
  128. package/ios/generated/RCTModulesConformingToProtocolsProvider.mm +33 -0
  129. package/ios/generated/RCTThirdPartyComponentsProvider.h +16 -0
  130. package/ios/generated/RCTThirdPartyComponentsProvider.mm +26 -0
  131. package/ios/{AirMaps → generated}/RNMapsAirModuleDelegate.h +2 -2
  132. package/ios/generated/RNMapsSpecs/ComponentDescriptors.cpp +29 -0
  133. package/ios/generated/RNMapsSpecs/ComponentDescriptors.h +31 -0
  134. package/ios/generated/RNMapsSpecs/EventEmitters.cpp +977 -0
  135. package/ios/generated/RNMapsSpecs/EventEmitters.h +846 -0
  136. package/ios/generated/RNMapsSpecs/Props.cpp +193 -0
  137. package/ios/generated/RNMapsSpecs/Props.h +1223 -0
  138. package/ios/generated/RNMapsSpecs/RCTComponentViewHelpers.h +591 -0
  139. package/ios/generated/RNMapsSpecs/RNMapsSpecs-generated.mm +92 -0
  140. package/ios/generated/RNMapsSpecs/RNMapsSpecs.h +137 -0
  141. package/ios/generated/RNMapsSpecs/ShadowNodes.cpp +24 -0
  142. package/ios/generated/RNMapsSpecs/ShadowNodes.h +109 -0
  143. package/ios/generated/RNMapsSpecs/States.cpp +16 -0
  144. package/ios/generated/RNMapsSpecs/States.h +113 -0
  145. package/ios/generated/RNMapsSpecsJSI-generated.cpp +74 -0
  146. package/ios/generated/RNMapsSpecsJSI.h +268 -0
  147. package/ios/generated/ReactAppDependencyProvider.podspec +34 -0
  148. package/package.json +25 -18
  149. package/react-native-google-maps.podspec +26 -0
  150. package/react-native-maps-generated.podspec +31 -0
  151. package/react-native-maps.podspec +55 -15
  152. package/react-native.config.js +16 -0
  153. package/src/AnimatedRegion.ts +169 -0
  154. package/src/Geojson.tsx +541 -0
  155. package/src/MapCallout.tsx +77 -0
  156. package/src/MapCalloutSubview.tsx +64 -0
  157. package/src/MapCircle.tsx +162 -0
  158. package/src/MapHeatmap.tsx +125 -0
  159. package/src/MapLocalTile.tsx +60 -0
  160. package/src/MapMarker.tsx +531 -0
  161. package/src/MapMarkerNativeComponent.ts +51 -0
  162. package/src/MapOverlay.tsx +156 -0
  163. package/src/MapPolygon.tsx +188 -0
  164. package/src/MapPolygon.types.ts +25 -0
  165. package/src/MapPolyline.tsx +215 -0
  166. package/src/MapUrlTile.tsx +169 -0
  167. package/src/MapView.tsx +1223 -0
  168. package/src/MapView.types.ts +212 -0
  169. package/src/MapView.web.ts +2 -0
  170. package/src/MapViewNativeComponent.ts +86 -0
  171. package/src/MapWMSTile.tsx +148 -0
  172. package/src/ProviderConstants.ts +2 -0
  173. package/src/createFabricMap.tsx +253 -0
  174. package/src/decorateMapComponent.ts +219 -0
  175. package/src/fixImageProp.ts +17 -0
  176. package/src/index.ts +52 -0
  177. package/src/sharedTypes.ts +101 -0
  178. package/src/specs/NativeAirMapsModule.ts +36 -0
  179. package/src/specs/NativeComponentCallout.ts +63 -0
  180. package/src/specs/NativeComponentCircle.ts +93 -0
  181. package/src/specs/NativeComponentGoogleMapView.ts +913 -0
  182. package/src/specs/NativeComponentGooglePolygon.ts +94 -0
  183. package/src/specs/NativeComponentMapView.ts +1091 -0
  184. package/src/specs/NativeComponentMarker.ts +326 -0
  185. package/src/specs/NativeComponentOverlay.ts +89 -0
  186. package/src/specs/NativeComponentPolyline.ts +124 -0
  187. package/lib/AnimatedRegion.d.ts +0 -19
  188. package/lib/AnimatedRegion.js +0 -134
  189. package/lib/Geojson.d.ts +0 -204
  190. package/lib/Geojson.js +0 -166
  191. package/lib/MapCallout.d.ts +0 -40
  192. package/lib/MapCallout.js +0 -51
  193. package/lib/MapCalloutSubview.d.ts +0 -34
  194. package/lib/MapCalloutSubview.js +0 -48
  195. package/lib/MapCircle.d.ts +0 -117
  196. package/lib/MapCircle.js +0 -53
  197. package/lib/MapHeatmap.d.ts +0 -78
  198. package/lib/MapHeatmap.js +0 -59
  199. package/lib/MapLocalTile.d.ts +0 -35
  200. package/lib/MapLocalTile.js +0 -44
  201. package/lib/MapMarker.d.ts +0 -309
  202. package/lib/MapMarker.js +0 -116
  203. package/lib/MapMarkerNativeComponent.d.ts +0 -15
  204. package/lib/MapMarkerNativeComponent.js +0 -17
  205. package/lib/MapOverlay.d.ts +0 -87
  206. package/lib/MapOverlay.js +0 -63
  207. package/lib/MapPolygon.d.ts +0 -140
  208. package/lib/MapPolygon.js +0 -53
  209. package/lib/MapPolygon.types.d.ts +0 -18
  210. package/lib/MapPolygon.types.js +0 -2
  211. package/lib/MapPolyline.d.ts +0 -156
  212. package/lib/MapPolyline.js +0 -53
  213. package/lib/MapUrlTile.d.ts +0 -134
  214. package/lib/MapUrlTile.js +0 -44
  215. package/lib/MapView.d.ts +0 -715
  216. package/lib/MapView.js +0 -447
  217. package/lib/MapView.types.d.ts +0 -161
  218. package/lib/MapView.types.js +0 -2
  219. package/lib/MapView.web.d.ts +0 -1
  220. package/lib/MapView.web.js +0 -9
  221. package/lib/MapViewNativeComponent.d.ts +0 -18
  222. package/lib/MapViewNativeComponent.js +0 -19
  223. package/lib/MapWMSTile.d.ts +0 -116
  224. package/lib/MapWMSTile.js +0 -44
  225. package/lib/ProviderConstants.d.ts +0 -2
  226. package/lib/ProviderConstants.js +0 -5
  227. package/lib/createFabricMap.d.ts +0 -23
  228. package/lib/createFabricMap.js +0 -175
  229. package/lib/decorateMapComponent.d.ts +0 -36
  230. package/lib/decorateMapComponent.js +0 -80
  231. package/lib/index.d.ts +0 -38
  232. package/lib/index.js +0 -81
  233. package/lib/sharedTypes.d.ts +0 -81
  234. package/lib/sharedTypes.js +0 -2
  235. package/lib/sharedTypesInternal.js +0 -2
  236. package/lib/specs/NativeAirMapsModule.d.ts +0 -31
  237. package/lib/specs/NativeAirMapsModule.js +0 -4
  238. package/lib/specs/NativeComponentGoogleMapView.d.ts +0 -713
  239. package/lib/specs/NativeComponentGoogleMapView.js +0 -21
  240. package/lib/specs/NativeComponentMapView.d.ts +0 -855
  241. package/lib/specs/NativeComponentMapView.js +0 -21
  242. /package/ios/{AirMaps → generated}/RNMapsHostVewDelegate.h +0 -0
  243. /package/{lib/sharedTypesInternal.d.ts → src/sharedTypesInternal.ts} +0 -0
@@ -0,0 +1,430 @@
1
+ //
2
+ // RNMapsMarker.m
3
+ // AirMaps
4
+ //
5
+ // Created by Salah Ghanim on 23.11.24.
6
+ // Copyright © 2024 react-native-maps. All rights reserved.
7
+ //
8
+
9
+ #import "RNMapsMarkerView.h"
10
+ #import "AIRMap.h"
11
+ #import "AIRMapMarker.h"
12
+ #import "AIRMapMarkerManager.h"
13
+ #import <react-native-maps-generated/ComponentDescriptors.h>
14
+ #import <react-native-maps-generated/EventEmitters.h>
15
+ #import <react-native-maps-generated/Props.h>
16
+ #import <react-native-maps-generated/RCTComponentViewHelpers.h>
17
+ #import "RCTFabricComponentsPlugins.h"
18
+ #import <React/RCTConversions.h>
19
+ #import "UIView+AirMap.h"
20
+
21
+ using namespace facebook::react;
22
+
23
+ @interface RNMapsMarkerView () <RCTRNMapsMarkerViewProtocol>
24
+ @end
25
+
26
+ @implementation RNMapsMarkerView {
27
+ AIRMapMarker *_view;
28
+ AIRMapMarkerManager* _legacyMapManager;
29
+ }
30
+
31
+ - (AIRMapMarker *) marker {
32
+ return _view;
33
+ }
34
+ - (void) prepareForRecycle
35
+ {
36
+ [super prepareForRecycle];
37
+ [_view removeFromSuperview];
38
+ _view = nil;
39
+ _legacyMapManager = nil;
40
+ }
41
+
42
+ #pragma mark - JS Commands
43
+
44
+
45
+ #pragma mark - Native commands
46
+
47
+ - (void)handleCommand:(const NSString *)commandName args:(const NSArray *)args
48
+ {
49
+ RCTRNMapsMarkerHandleCommand(self, commandName, args);
50
+ }
51
+
52
+
53
+ + (ComponentDescriptorProvider)componentDescriptorProvider
54
+ {
55
+ return concreteComponentDescriptorProvider<RNMapsMarkerComponentDescriptor>();
56
+ }
57
+
58
+ - (void) animateToCoordinates:(double)latitude longitude:(double)longitude duration:(NSInteger)duration
59
+ {
60
+ [_view animateToCoordinate:CLLocationCoordinate2DMake(latitude, longitude) duration:duration/1000];
61
+ }
62
+
63
+ - (void) showCallout
64
+ {
65
+ [_view.map selectAnnotation:_view animated:YES];
66
+ }
67
+
68
+ - (void) hideCallout
69
+ {
70
+ [_view.map deselectAnnotation:_view animated:YES];
71
+
72
+ }
73
+ - (void) redraw
74
+ {
75
+ // do nothing
76
+ }
77
+ - (void) redrawCallout
78
+ {
79
+ // do nothing
80
+ }
81
+
82
+ - (void) setCoordinates:(double)latitude longitude:(double)longitude
83
+ {
84
+ [_view setCoordinate:CLLocationCoordinate2DMake(latitude, longitude)];
85
+ }
86
+
87
+
88
+
89
+ - (void) prepareMarkerView
90
+ {
91
+ if (_legacyMapManager && _view) return;
92
+ static const auto defaultProps = std::make_shared<const RNMapsMarkerProps>();
93
+ _props = defaultProps;
94
+ _legacyMapManager = [[AIRMapMarkerManager alloc] init];
95
+ _view = (AIRMapMarker *)[_legacyMapManager view];
96
+
97
+
98
+ _view.onPress = [self](NSDictionary* dictionary) {
99
+ if (_eventEmitter) {
100
+ // Extract values from the NSDictionary
101
+ NSDictionary* coordinateDict = dictionary[@"coordinate"];
102
+ NSDictionary* positionDict = dictionary[@"position"];
103
+
104
+ // Populate the OnCalloutPressPoint struct
105
+ facebook::react::RNMapsMarkerEventEmitter::OnPressPosition point = {
106
+ .x = [coordinateDict[@"x"] doubleValue],
107
+ .y = [coordinateDict[@"y"] doubleValue],
108
+ };
109
+
110
+
111
+ facebook::react::RNMapsMarkerEventEmitter::OnPressCoordinate coordinate = {
112
+ .latitude = [coordinateDict[@"latitude"] doubleValue],
113
+ .longitude = [coordinateDict[@"longitude"] doubleValue],
114
+ };
115
+
116
+ auto eventEmitter = std::static_pointer_cast<RNMapsMarkerEventEmitter const>(_eventEmitter);
117
+ facebook::react::RNMapsMarkerEventEmitter::OnPress data = {
118
+ .action = std::string([dictionary[@"action"] UTF8String]),
119
+ .id = std::string([dictionary[@"id"] UTF8String]),
120
+ .position = point,
121
+ .coordinate = coordinate,
122
+ };
123
+ eventEmitter->onPress(data);
124
+ }
125
+ };
126
+
127
+ _view.onDeselect = [self](NSDictionary* dictionary) {
128
+ if (_eventEmitter) {
129
+ // Extract values from the NSDictionary
130
+ NSDictionary* coordinateDict = dictionary[@"coordinate"];
131
+ NSDictionary* positionDict = dictionary[@"position"];
132
+
133
+ // Populate the OnCalloutPressPoint struct
134
+ facebook::react::RNMapsMarkerEventEmitter::OnDeselectPosition point = {
135
+ .x = [coordinateDict[@"x"] doubleValue],
136
+ .y = [coordinateDict[@"y"] doubleValue],
137
+ };
138
+
139
+
140
+ facebook::react::RNMapsMarkerEventEmitter::OnDeselectCoordinate coordinate = {
141
+ .latitude = [coordinateDict[@"latitude"] doubleValue],
142
+ .longitude = [coordinateDict[@"longitude"] doubleValue],
143
+ };
144
+
145
+ auto eventEmitter = std::static_pointer_cast<RNMapsMarkerEventEmitter const>(_eventEmitter);
146
+ facebook::react::RNMapsMarkerEventEmitter::OnDeselect data = {
147
+ .action = std::string([dictionary[@"action"] UTF8String]),
148
+ .id = std::string([dictionary[@"id"] UTF8String]),
149
+ .position = point,
150
+ .coordinate = coordinate,
151
+ };
152
+ eventEmitter->onDeselect(data);
153
+ }
154
+ };
155
+
156
+ _view.onDrag = [self](NSDictionary* dictionary) {
157
+ if (_eventEmitter) {
158
+ // Extract values from the NSDictionary
159
+ NSDictionary* coordinateDict = dictionary[@"coordinate"];
160
+
161
+
162
+ facebook::react::RNMapsMarkerEventEmitter::OnDragCoordinate coordinate = {
163
+ .latitude = [coordinateDict[@"latitude"] doubleValue],
164
+ .longitude = [coordinateDict[@"longitude"] doubleValue],
165
+ };
166
+
167
+ auto eventEmitter = std::static_pointer_cast<RNMapsMarkerEventEmitter const>(_eventEmitter);
168
+ facebook::react::RNMapsMarkerEventEmitter::OnDrag data = {
169
+ .id = std::string([dictionary[@"id"] UTF8String]),
170
+ .coordinate = coordinate,
171
+ };
172
+ eventEmitter->onDrag(data);
173
+ }
174
+ };
175
+ _view.onDragStart = [self](NSDictionary* dictionary) {
176
+ if (_eventEmitter) {
177
+ // Extract values from the NSDictionary
178
+ NSDictionary* coordinateDict = dictionary[@"coordinate"];
179
+
180
+ facebook::react::RNMapsMarkerEventEmitter::OnDragStartCoordinate coordinate = {
181
+ .latitude = [coordinateDict[@"latitude"] doubleValue],
182
+ .longitude = [coordinateDict[@"longitude"] doubleValue],
183
+ };
184
+
185
+ auto eventEmitter = std::static_pointer_cast<RNMapsMarkerEventEmitter const>(_eventEmitter);
186
+ facebook::react::RNMapsMarkerEventEmitter::OnDragStart data = {
187
+ .id = std::string([dictionary[@"id"] UTF8String]),
188
+ .coordinate = coordinate,
189
+ };
190
+ eventEmitter->onDragStart(data);
191
+ }
192
+ };
193
+
194
+ _view.onDragEnd = [self](NSDictionary* dictionary) {
195
+ if (_eventEmitter) {
196
+ // Extract values from the NSDictionary
197
+ NSDictionary* coordinateDict = dictionary[@"coordinate"];
198
+
199
+
200
+ facebook::react::RNMapsMarkerEventEmitter::OnDragEndCoordinate coordinate = {
201
+ .latitude = [coordinateDict[@"latitude"] doubleValue],
202
+ .longitude = [coordinateDict[@"longitude"] doubleValue],
203
+ };
204
+
205
+ auto eventEmitter = std::static_pointer_cast<RNMapsMarkerEventEmitter const>(_eventEmitter);
206
+ facebook::react::RNMapsMarkerEventEmitter::OnDragEnd data = {
207
+ .id = std::string([dictionary[@"id"] UTF8String]),
208
+ .coordinate = coordinate,
209
+ };
210
+ eventEmitter->onDragEnd(data);
211
+ }
212
+ };
213
+
214
+ _view.onSelect = [self](NSDictionary* dictionary) {
215
+ if (_eventEmitter) {
216
+ // Extract values from the NSDictionary
217
+ NSDictionary* coordinateDict = dictionary[@"coordinate"];
218
+ NSDictionary* positionDict = dictionary[@"position"];
219
+
220
+ // Populate the OnCalloutPressPoint struct
221
+ facebook::react::RNMapsMarkerEventEmitter::OnSelectPosition point = {
222
+ .x = [coordinateDict[@"x"] doubleValue],
223
+ .y = [coordinateDict[@"y"] doubleValue],
224
+ };
225
+
226
+
227
+ facebook::react::RNMapsMarkerEventEmitter::OnSelectCoordinate coordinate = {
228
+ .latitude = [coordinateDict[@"latitude"] doubleValue],
229
+ .longitude = [coordinateDict[@"longitude"] doubleValue],
230
+ };
231
+
232
+ auto eventEmitter = std::static_pointer_cast<RNMapsMarkerEventEmitter const>(_eventEmitter);
233
+ facebook::react::RNMapsMarkerEventEmitter::OnSelect data = {
234
+ .action = std::string([dictionary[@"action"] UTF8String]),
235
+ .id = std::string([dictionary[@"id"] UTF8String]),
236
+ .position = point,
237
+ .coordinate = coordinate,
238
+ };
239
+ eventEmitter->onSelect(data);
240
+ }
241
+ };
242
+
243
+
244
+ _view.onCalloutPress = [self](NSDictionary* dictionary) {
245
+ if (_eventEmitter) {
246
+ // Extract values from the NSDictionary
247
+ NSDictionary* pointDict = dictionary[@"point"];
248
+ NSDictionary* frameDict = dictionary[@"frame"];
249
+
250
+ // Populate the OnCalloutPressPoint struct
251
+ facebook::react::RNMapsMarkerEventEmitter::OnCalloutPressPoint point = {
252
+ .x = [pointDict[@"x"] doubleValue],
253
+ .y = [pointDict[@"y"] doubleValue],
254
+ };
255
+
256
+
257
+ facebook::react::RNMapsMarkerEventEmitter::OnCalloutPressFrame frame = {
258
+ .x = [frameDict[@"x"] doubleValue],
259
+ .y = [frameDict[@"x"] doubleValue],
260
+ .width = [frameDict[@"width"] doubleValue],
261
+ .height = [frameDict[@"height"] doubleValue],
262
+ };
263
+
264
+ auto eventEmitter = std::static_pointer_cast<RNMapsMarkerEventEmitter const>(_eventEmitter);
265
+ facebook::react::RNMapsMarkerEventEmitter::OnCalloutPress data = {
266
+ .action = std::string([dictionary[@"action"] UTF8String]),
267
+ .id = std::string([dictionary[@"id"] UTF8String]),
268
+ .frame = frame,
269
+ .point = point,
270
+ };
271
+ eventEmitter->onCalloutPress(data);
272
+ }
273
+ };
274
+
275
+ }
276
+
277
+ - (void)mountChildComponentView:(UIView<RCTComponentViewProtocol> *)childComponentView index:(NSInteger)index{
278
+ if (!_view){
279
+ [self prepareMarkerView];
280
+ }
281
+ id<RCTComponent> paperView = [childComponentView getPaperViewFromChildComponentView];
282
+ if (paperView){
283
+ [_view insertReactSubview:paperView atIndex:index];
284
+ } else {
285
+ [_view insertReactSubview:childComponentView atIndex:index];
286
+ }
287
+ }
288
+
289
+ - (void) unmountChildComponentView:(UIView<RCTComponentViewProtocol> *)childComponentView index:(NSInteger)index
290
+ {
291
+ id<RCTComponent> paperView = [childComponentView getPaperViewFromChildComponentView];
292
+ if (paperView){
293
+ [_view removeReactSubview:paperView];
294
+ } else {
295
+ [_view removeReactSubview:childComponentView];
296
+ }
297
+ }
298
+ - (instancetype)initWithFrame:(CGRect)frame
299
+ {
300
+ if (self = [super initWithFrame:frame]) {
301
+ [self prepareMarkerView];
302
+ }
303
+
304
+ return self;
305
+ }
306
+
307
+ - (void)updateProps:(Props::Shared const &)props oldProps:(Props::Shared const &)oldProps
308
+ {
309
+ [self prepareMarkerView];
310
+ const auto &oldViewProps = *std::static_pointer_cast<RNMapsMarkerProps const>(_props);
311
+ const auto &newViewProps = *std::static_pointer_cast<RNMapsMarkerProps const>(props);
312
+ BOOL completionHandlerCalled = false;
313
+
314
+ #define REMAP_MAPVIEW_PROP(name) \
315
+ if (oldViewProps.name != newViewProps.name) { \
316
+ _view.name = newViewProps.name; \
317
+ }
318
+
319
+ #define REMAP_MAPVIEW_STRING_PROP(name) \
320
+ if (oldViewProps.name != newViewProps.name) { \
321
+ _view.name = RCTNSStringFromString(newViewProps.name); \
322
+ }
323
+
324
+ #define REMAP_MAPVIEW_COLOR_PROP(name) \
325
+ if (oldViewProps.name != newViewProps.name) { \
326
+ _view.name = RCTUIColorFromSharedColor(newViewProps.name); \
327
+ }
328
+
329
+ #define REMAP_MAPVIEW_POINT_PROP(name) \
330
+ if (newViewProps.name.x != oldViewProps.name.x || \
331
+ newViewProps.name.y != oldViewProps.name.y) { \
332
+ _view.name = CGPointMake(newViewProps.name.x, newViewProps.name.y); \
333
+ }
334
+
335
+ if (newViewProps.zIndex != oldViewProps.zIndex){
336
+ if (newViewProps.zIndex.has_value()){
337
+ _view.zIndex = newViewProps.zIndex.value();
338
+ } else {
339
+ // default
340
+ _view.zIndex = 0;
341
+ }
342
+ }
343
+ if (newViewProps.image != oldViewProps.image){
344
+ if (newViewProps.image.uri.size()){
345
+ [_view setImageSrc:RCTNSStringFromString(newViewProps.image.uri)];
346
+ completionHandlerCalled = true;
347
+ } else {
348
+ [_view setImageSrc:nil];
349
+ }
350
+ }
351
+
352
+ REMAP_MAPVIEW_PROP(useLegacyPinView)
353
+
354
+
355
+ REMAP_MAPVIEW_PROP(opacity)
356
+ REMAP_MAPVIEW_PROP(draggable)
357
+ REMAP_MAPVIEW_PROP(isPreselected)
358
+
359
+ REMAP_MAPVIEW_COLOR_PROP(pinColor)
360
+
361
+
362
+ REMAP_MAPVIEW_POINT_PROP(calloutOffset)
363
+ if (newViewProps.coordinate.latitude != oldViewProps.coordinate.latitude ||
364
+ newViewProps.coordinate.longitude != oldViewProps.coordinate.longitude) {
365
+ CLLocationCoordinate2D coordinates = CLLocationCoordinate2DMake(
366
+ newViewProps.coordinate.latitude,
367
+ newViewProps.coordinate.longitude);
368
+ _view.coordinate = coordinates;
369
+ }
370
+
371
+
372
+ if (newViewProps.description != oldViewProps.description){
373
+ _view.subtitle = RCTNSStringFromString(newViewProps.description);
374
+ }
375
+ REMAP_MAPVIEW_STRING_PROP(title)
376
+ REMAP_MAPVIEW_STRING_PROP(identifier)
377
+ if (newViewProps.titleVisibility != oldViewProps.titleVisibility){
378
+ switch (newViewProps.titleVisibility) {
379
+ case RNMapsMarkerTitleVisibility::Visible:
380
+ [_view setTitleVisibility:MKFeatureVisibilityVisible];
381
+ break;
382
+ case RNMapsMarkerTitleVisibility::Adaptive:
383
+ [_view setTitleVisibility:MKFeatureVisibilityAdaptive];
384
+ break;
385
+ case RNMapsMarkerTitleVisibility::Hidden:
386
+ [_view setTitleVisibility:MKFeatureVisibilityHidden];
387
+ break;
388
+ }
389
+ }
390
+ if (newViewProps.subtitleVisibility != oldViewProps.subtitleVisibility){
391
+ switch (newViewProps.subtitleVisibility) {
392
+ case RNMapsMarkerSubtitleVisibility::Visible:
393
+ [_view setSubtitleVisibility:MKFeatureVisibilityVisible];
394
+ break;
395
+ case RNMapsMarkerSubtitleVisibility::Adaptive:
396
+ [_view setSubtitleVisibility:MKFeatureVisibilityAdaptive];
397
+ break;
398
+ case RNMapsMarkerSubtitleVisibility::Hidden:
399
+ [_view setSubtitleVisibility:MKFeatureVisibilityHidden];
400
+ break;
401
+
402
+ }
403
+ }
404
+
405
+ if (newViewProps.displayPriority != oldViewProps.displayPriority){
406
+ switch (newViewProps.displayPriority) {
407
+ case RNMapsMarkerDisplayPriority::Required:
408
+ [_view setDisplayPriority:MKFeatureDisplayPriorityRequired];
409
+ break;
410
+ case RNMapsMarkerDisplayPriority::High:
411
+ [_view setDisplayPriority:MKFeatureDisplayPriorityDefaultHigh];
412
+ break;
413
+ case RNMapsMarkerDisplayPriority::Low:
414
+ [_view setDisplayPriority:MKFeatureDisplayPriorityDefaultLow];
415
+ break;
416
+
417
+ }
418
+ }
419
+
420
+
421
+ [super updateProps:props oldProps:oldProps];
422
+ }
423
+
424
+
425
+ @end
426
+
427
+ Class<RCTComponentViewProtocol> RNMapsMarkerCls(void)
428
+ {
429
+ return RNMapsMarkerView.class;
430
+ }
@@ -0,0 +1,28 @@
1
+ //
2
+ // RNMapsMarkerManager.m
3
+ // AirMaps
4
+ //
5
+ // Created by Salah Ghanim on 23.11.24.
6
+ // Copyright © 2024 react-native-maps. All rights reserved.
7
+ //
8
+
9
+ #import <React/RCTLog.h>
10
+ #import <React/RCTUIManager.h>
11
+ #import <React/RCTViewManager.h>
12
+
13
+ @interface RNMapsMarkerViewManager : RCTViewManager
14
+ @end
15
+
16
+ @implementation RNMapsMarkerViewManager
17
+
18
+ RCT_EXPORT_MODULE(RNMapsMarkerViewManager)
19
+
20
+ RCT_EXPORT_VIEW_PROPERTY(onPress, RCTBubblingEventBlock)
21
+ RCT_EXPORT_VIEW_PROPERTY(onSelect, RCTDirectEventBlock)
22
+ RCT_EXPORT_VIEW_PROPERTY(onDeselect, RCTDirectEventBlock)
23
+ RCT_EXPORT_VIEW_PROPERTY(onCalloutPress, RCTDirectEventBlock)
24
+ RCT_EXPORT_VIEW_PROPERTY(onDragStart, RCTDirectEventBlock)
25
+ RCT_EXPORT_VIEW_PROPERTY(onDrag, RCTDirectEventBlock)
26
+ RCT_EXPORT_VIEW_PROPERTY(onDragEnd, RCTDirectEventBlock)
27
+
28
+ @end
@@ -26,6 +26,8 @@
26
26
  4C99C9DE2226CF2800A8693E /* AIRWeakTimerReference.m in Sources */ = {isa = PBXBuildFile; fileRef = 4C99C9DD2226CF2800A8693E /* AIRWeakTimerReference.m */; };
27
27
  4C99C9E12226D8C400A8693E /* AIRWeakMapReference.m in Sources */ = {isa = PBXBuildFile; fileRef = 4C99C9E02226D8C400A8693E /* AIRWeakMapReference.m */; };
28
28
  4E0CFBDE2B388F2B0017E126 /* RCTComponentData+Maps.m in Sources */ = {isa = PBXBuildFile; fileRef = 4E0CFBDD2B388F2B0017E126 /* RCTComponentData+Maps.m */; };
29
+ 4E34FA002D84E24A009CC683 /* PlaceHolderGoogleMapView.mm in Sources */ = {isa = PBXBuildFile; fileRef = 4E34F9FC2D84E24A009CC683 /* PlaceHolderGoogleMapView.mm */; };
30
+ 4E34FA012D84E24A009CC683 /* PlaceHolderPolygonView.mm in Sources */ = {isa = PBXBuildFile; fileRef = 4E34F9FE2D84E24A009CC683 /* PlaceHolderPolygonView.mm */; };
29
31
  4E430F272CF20153006E4F41 /* RNMapsMarkerManager.mm in Sources */ = {isa = PBXBuildFile; fileRef = 4E430F262CF20153006E4F41 /* RNMapsMarkerManager.mm */; };
30
32
  4E430F2A2CF20305006E4F41 /* RNMapsMarker.mm in Sources */ = {isa = PBXBuildFile; fileRef = 4E430F292CF20305006E4F41 /* RNMapsMarker.mm */; };
31
33
  53D31636202E723B00B55447 /* AIRMapOverlayManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 53D31635202E723B00B55447 /* AIRMapOverlayManager.m */; };
@@ -119,6 +121,10 @@
119
121
  4E0A36152BFB4E76009FCCE4 /* PrivacyInfo.xcprivacy */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = PrivacyInfo.xcprivacy; sourceTree = "<group>"; };
120
122
  4E0CFBDC2B388F2B0017E126 /* RCTComponentData+Maps.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "RCTComponentData+Maps.h"; sourceTree = "<group>"; };
121
123
  4E0CFBDD2B388F2B0017E126 /* RCTComponentData+Maps.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = "RCTComponentData+Maps.m"; sourceTree = "<group>"; };
124
+ 4E34F9FB2D84E24A009CC683 /* PlaceHolderGoogleMapView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = PlaceHolderGoogleMapView.h; sourceTree = "<group>"; };
125
+ 4E34F9FC2D84E24A009CC683 /* PlaceHolderGoogleMapView.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; path = PlaceHolderGoogleMapView.mm; sourceTree = "<group>"; };
126
+ 4E34F9FD2D84E24A009CC683 /* PlaceHolderPolygonView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = PlaceHolderPolygonView.h; sourceTree = "<group>"; };
127
+ 4E34F9FE2D84E24A009CC683 /* PlaceHolderPolygonView.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; path = PlaceHolderPolygonView.mm; sourceTree = "<group>"; };
122
128
  4E430F262CF20153006E4F41 /* RNMapsMarkerManager.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; path = RNMapsMarkerManager.mm; sourceTree = "<group>"; };
123
129
  4E430F282CF20305006E4F41 /* RNMapsMarker.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = RNMapsMarker.h; sourceTree = "<group>"; };
124
130
  4E430F292CF20305006E4F41 /* RNMapsMarker.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; path = RNMapsMarker.mm; sourceTree = "<group>"; };
@@ -228,6 +234,7 @@
228
234
  11FA5C531C4A1296003AC2EE /* AirMaps */ = {
229
235
  isa = PBXGroup;
230
236
  children = (
237
+ 4E34F9FF2D84E24A009CC683 /* FabricPlaceholders */,
231
238
  4E0CFBDC2B388F2B0017E126 /* RCTComponentData+Maps.h */,
232
239
  4E0CFBDD2B388F2B0017E126 /* RCTComponentData+Maps.m */,
233
240
  BE2E4EC72621F63C00CC7F2E /* AIRMapUrlTileCachedOverlay.h */,
@@ -297,6 +304,17 @@
297
304
  path = AirMaps;
298
305
  sourceTree = "<group>";
299
306
  };
307
+ 4E34F9FF2D84E24A009CC683 /* FabricPlaceholders */ = {
308
+ isa = PBXGroup;
309
+ children = (
310
+ 4E34F9FB2D84E24A009CC683 /* PlaceHolderGoogleMapView.h */,
311
+ 4E34F9FC2D84E24A009CC683 /* PlaceHolderGoogleMapView.mm */,
312
+ 4E34F9FD2D84E24A009CC683 /* PlaceHolderPolygonView.h */,
313
+ 4E34F9FE2D84E24A009CC683 /* PlaceHolderPolygonView.mm */,
314
+ );
315
+ path = FabricPlaceholders;
316
+ sourceTree = "<group>";
317
+ };
300
318
  9B9498A32017EF9D00158761 /* AirGoogleMaps */ = {
301
319
  isa = PBXGroup;
302
320
  children = (
@@ -437,6 +455,8 @@
437
455
  BE2E4EC92621F63C00CC7F2E /* AIRMapUrlTileCachedOverlay.m in Sources */,
438
456
  DA6C263E1C9E324A0035349F /* AIRMapUrlTileManager.m in Sources */,
439
457
  9B9498DB2017EFB800158761 /* AIRGoogleMapMarker.m in Sources */,
458
+ 4E34FA002D84E24A009CC683 /* PlaceHolderGoogleMapView.mm in Sources */,
459
+ 4E34FA012D84E24A009CC683 /* PlaceHolderPolygonView.mm in Sources */,
440
460
  628F81201FD16DF80058313A /* AIRMapLocalTile.m in Sources */,
441
461
  9B9498D92017EFB800158761 /* AIRGoogleMapCalloutManager.m in Sources */,
442
462
  53D3163A202E72FC00B55447 /* AIRMapOverlay.m in Sources */,
@@ -0,0 +1,25 @@
1
+ /*
2
+ * Copyright (c) Meta Platforms, Inc. and affiliates.
3
+ *
4
+ * This source code is licensed under the MIT license found in the
5
+ * LICENSE file in the root directory of this source tree.
6
+ */
7
+
8
+
9
+ #import <Foundation/Foundation.h>
10
+
11
+ #if __has_include(<React-RCTAppDelegate/RCTDependencyProvider.h>)
12
+ #import <React-RCTAppDelegate/RCTDependencyProvider.h>
13
+ #elif __has_include(<React_RCTAppDelegate/RCTDependencyProvider.h>)
14
+ #import <React_RCTAppDelegate/RCTDependencyProvider.h>
15
+ #else
16
+ #import "RCTDependencyProvider.h"
17
+ #endif
18
+
19
+ NS_ASSUME_NONNULL_BEGIN
20
+
21
+ @interface RCTAppDependencyProvider : NSObject <RCTDependencyProvider>
22
+
23
+ @end
24
+
25
+ NS_ASSUME_NONNULL_END
@@ -0,0 +1,55 @@
1
+ /*
2
+ * Copyright (c) Meta Platforms, Inc. and affiliates.
3
+ *
4
+ * This source code is licensed under the MIT license found in the
5
+ * LICENSE file in the root directory of this source tree.
6
+ */
7
+
8
+ #import "RCTAppDependencyProvider.h"
9
+ #import <ReactCodegen/RCTModulesConformingToProtocolsProvider.h>
10
+ #import <ReactCodegen/RCTThirdPartyComponentsProvider.h>
11
+
12
+ @implementation RCTAppDependencyProvider {
13
+ NSArray<NSString *> * _URLRequestHandlerClassNames;
14
+ NSArray<NSString *> * _imageDataDecoderClassNames;
15
+ NSArray<NSString *> * _imageURLLoaderClassNames;
16
+ NSDictionary<NSString *,Class<RCTComponentViewProtocol>> * _thirdPartyFabricComponents;
17
+ }
18
+
19
+ - (nonnull NSArray<NSString *> *)URLRequestHandlerClassNames {
20
+ static dispatch_once_t requestUrlToken;
21
+ dispatch_once(&requestUrlToken, ^{
22
+ self->_URLRequestHandlerClassNames = RCTModulesConformingToProtocolsProvider.URLRequestHandlerClassNames;
23
+ });
24
+
25
+ return _URLRequestHandlerClassNames;
26
+ }
27
+
28
+ - (nonnull NSArray<NSString *> *)imageDataDecoderClassNames {
29
+ static dispatch_once_t dataDecoderToken;
30
+ dispatch_once(&dataDecoderToken, ^{
31
+ _imageDataDecoderClassNames = RCTModulesConformingToProtocolsProvider.imageDataDecoderClassNames;
32
+ });
33
+
34
+ return _imageDataDecoderClassNames;
35
+ }
36
+
37
+ - (nonnull NSArray<NSString *> *)imageURLLoaderClassNames {
38
+ static dispatch_once_t urlLoaderToken;
39
+ dispatch_once(&urlLoaderToken, ^{
40
+ _imageURLLoaderClassNames = RCTModulesConformingToProtocolsProvider.imageURLLoaderClassNames;
41
+ });
42
+
43
+ return _imageURLLoaderClassNames;
44
+ }
45
+
46
+ - (nonnull NSDictionary<NSString *,Class<RCTComponentViewProtocol>> *)thirdPartyFabricComponents {
47
+ static dispatch_once_t nativeComponentsToken;
48
+ dispatch_once(&nativeComponentsToken, ^{
49
+ _thirdPartyFabricComponents = RCTThirdPartyComponentsProvider.thirdPartyFabricComponents;
50
+ });
51
+
52
+ return _thirdPartyFabricComponents;
53
+ }
54
+
55
+ @end
@@ -0,0 +1,18 @@
1
+ /*
2
+ * Copyright (c) Meta Platforms, Inc. and affiliates.
3
+ *
4
+ * This source code is licensed under the MIT license found in the
5
+ * LICENSE file in the root directory of this source tree.
6
+ */
7
+
8
+ #import <Foundation/Foundation.h>
9
+
10
+ @interface RCTModulesConformingToProtocolsProvider: NSObject
11
+
12
+ +(NSArray<NSString *> *)imageURLLoaderClassNames;
13
+
14
+ +(NSArray<NSString *> *)imageDataDecoderClassNames;
15
+
16
+ +(NSArray<NSString *> *)URLRequestHandlerClassNames;
17
+
18
+ @end
@@ -0,0 +1,33 @@
1
+ /*
2
+ * Copyright (c) Meta Platforms, Inc. and affiliates.
3
+ *
4
+ * This source code is licensed under the MIT license found in the
5
+ * LICENSE file in the root directory of this source tree.
6
+ */
7
+
8
+ #import "RCTModulesConformingToProtocolsProvider.h"
9
+
10
+ @implementation RCTModulesConformingToProtocolsProvider
11
+
12
+ +(NSArray<NSString *> *)imageURLLoaderClassNames
13
+ {
14
+ return @[
15
+
16
+ ];
17
+ }
18
+
19
+ +(NSArray<NSString *> *)imageDataDecoderClassNames
20
+ {
21
+ return @[
22
+
23
+ ];
24
+ }
25
+
26
+ +(NSArray<NSString *> *)URLRequestHandlerClassNames
27
+ {
28
+ return @[
29
+
30
+ ];
31
+ }
32
+
33
+ @end
@@ -0,0 +1,16 @@
1
+ /*
2
+ * Copyright (c) Meta Platforms, Inc. and affiliates.
3
+ *
4
+ * This source code is licensed under the MIT license found in the
5
+ * LICENSE file in the root directory of this source tree.
6
+ */
7
+
8
+ #import <Foundation/Foundation.h>
9
+
10
+ @protocol RCTComponentViewProtocol;
11
+
12
+ @interface RCTThirdPartyComponentsProvider: NSObject
13
+
14
+ + (NSDictionary<NSString *, Class<RCTComponentViewProtocol>> *)thirdPartyFabricComponents;
15
+
16
+ @end
@@ -0,0 +1,26 @@
1
+ /*
2
+ * Copyright (c) Meta Platforms, Inc. and affiliates.
3
+ *
4
+ * This source code is licensed under the MIT license found in the
5
+ * LICENSE file in the root directory of this source tree.
6
+ */
7
+
8
+
9
+ #import <Foundation/Foundation.h>
10
+
11
+ #import "RCTThirdPartyComponentsProvider.h"
12
+ #import <React/RCTComponentViewProtocol.h>
13
+
14
+ @implementation RCTThirdPartyComponentsProvider
15
+
16
+ + (NSDictionary<NSString *, Class<RCTComponentViewProtocol>> *)thirdPartyFabricComponents
17
+ {
18
+ return @{
19
+ @"RNMapsGoogleMapView": NSClassFromString(@"RNMapsGoogleMapView"), // react-native-maps
20
+ @"RNMapsGooglePolygon": NSClassFromString(@"RNMapsGooglePolygonView"), // react-native-maps
21
+ @"RNMapsMapView": NSClassFromString(@"RNMapsMapView"), // react-native-maps
22
+ @"RNMapsMarker": NSClassFromString(@"RNMapsMarkerView"), // react-native-maps
23
+ };
24
+ }
25
+
26
+ @end