@maplibre/maplibre-react-native 11.0.0-alpha.8 → 11.0.0-alpha.9

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 (337) hide show
  1. package/android/build.gradle +0 -3
  2. package/android/src/main/java/org/maplibre/reactnative/MLRNPackage.kt +43 -0
  3. package/android/src/main/java/org/maplibre/reactnative/components/AbstractEvent.kt +24 -0
  4. package/android/src/main/java/org/maplibre/reactnative/components/AbstractEventEmitter.kt +71 -0
  5. package/android/src/main/java/org/maplibre/reactnative/components/annotation/MLRNPointAnnotation.java +1 -1
  6. package/android/src/main/java/org/maplibre/reactnative/components/camera/CameraStop.kt +203 -0
  7. package/android/src/main/java/org/maplibre/reactnative/components/camera/CameraUpdateItem.kt +109 -0
  8. package/android/src/main/java/org/maplibre/reactnative/components/camera/CameraUpdateQueue.kt +60 -0
  9. package/android/src/main/java/org/maplibre/reactnative/components/camera/MLRNCamera.kt +409 -0
  10. package/android/src/main/java/org/maplibre/reactnative/components/camera/MLRNCameraManager.kt +69 -0
  11. package/android/src/main/java/org/maplibre/reactnative/components/camera/MLRNCameraModule.kt +34 -0
  12. package/android/src/main/java/org/maplibre/reactnative/components/camera/constants/CameraEasing.kt +24 -0
  13. package/android/src/main/java/org/maplibre/reactnative/components/images/MLRNImages.java +1 -2
  14. package/android/src/main/java/org/maplibre/reactnative/components/location/LocationComponentManager.java +1 -1
  15. package/android/src/main/java/org/maplibre/reactnative/components/mapview/MLRNAndroidTextureMapView.kt +23 -0
  16. package/android/src/main/java/org/maplibre/reactnative/components/mapview/MLRNAndroidTextureMapViewManager.kt +23 -0
  17. package/android/src/main/java/org/maplibre/reactnative/components/mapview/MLRNMapView.kt +1338 -0
  18. package/android/src/main/java/org/maplibre/reactnative/components/mapview/MLRNMapViewManager.kt +187 -0
  19. package/android/src/main/java/org/maplibre/reactnative/components/mapview/MLRNMapViewModule.kt +159 -0
  20. package/android/src/main/java/org/maplibre/reactnative/components/mapview/helpers/CameraChangeTracker.kt +26 -0
  21. package/android/src/main/java/org/maplibre/reactnative/components/mapview/helpers/LayerSourceInfo.kt +74 -0
  22. package/android/src/main/java/org/maplibre/reactnative/components/styles/layers/MLRNLayer.java +1 -5
  23. package/android/src/main/java/org/maplibre/reactnative/components/styles/light/MLRNLight.java +1 -6
  24. package/android/src/main/java/org/maplibre/reactnative/components/styles/sources/MLRNShapeSource.java +2 -9
  25. package/android/src/main/java/org/maplibre/reactnative/components/styles/sources/MLRNSource.java +1 -1
  26. package/android/src/main/java/org/maplibre/reactnative/events/AbstractEvent.java +2 -5
  27. package/android/src/main/java/org/maplibre/reactnative/events/MapChangeEvent.kt +18 -0
  28. package/android/src/main/java/org/maplibre/reactnative/events/MapClickEvent.java +4 -0
  29. package/android/src/main/java/org/maplibre/reactnative/events/MapPressEvent.kt +27 -0
  30. package/android/src/main/java/org/maplibre/reactnative/events/TrackUserLocationChangeEvent.kt +24 -0
  31. package/android/src/main/java/org/maplibre/reactnative/events/constants/EventKeys.java +0 -1
  32. package/android/src/main/java/org/maplibre/reactnative/events/constants/EventTypes.java +0 -19
  33. package/android/src/main/java/org/maplibre/reactnative/location/LocationManager.java +1 -1
  34. package/android/src/main/java/org/maplibre/reactnative/location/TrackUserLocationMode.kt +43 -0
  35. package/android/src/main/java/org/maplibre/reactnative/location/{UserTrackingState.java → TrackUserLocationState.java} +1 -1
  36. package/android/src/main/java/org/maplibre/reactnative/location/UserLocation.java +1 -1
  37. package/android/src/main/java/org/maplibre/reactnative/modules/MLRNModule.java +1 -49
  38. package/android/src/main/java/org/maplibre/reactnative/utils/ConvertUtils.java +2 -9
  39. package/android/src/main/java/org/maplibre/reactnative/utils/GeoJSONUtils.kt +322 -0
  40. package/android/src/main/java/org/maplibre/reactnative/utils/ReactTagResolver.kt +85 -0
  41. package/ios/MLRNCallout.h +1 -1
  42. package/ios/MLRNEvent.m +3 -1
  43. package/ios/MLRNEventTypes.h +10 -31
  44. package/ios/MLRNEventTypes.m +10 -30
  45. package/ios/MLRNImages.h +1 -1
  46. package/ios/MLRNImages.m +1 -1
  47. package/ios/MLRNLayer.h +1 -1
  48. package/ios/MLRNLayer.m +2 -2
  49. package/ios/MLRNLight.h +2 -1
  50. package/ios/MLRNLocationModule.m +2 -2
  51. package/ios/MLRNMapTouchEvent.h +2 -1
  52. package/ios/MLRNMapTouchEvent.m +12 -10
  53. package/ios/MLRNModule.m +5 -52
  54. package/ios/MLRNNativeUserLocation.m +0 -1
  55. package/ios/MLRNOfflineModule.h +2 -2
  56. package/ios/MLRNOfflineModule.m +9 -9
  57. package/ios/MLRNPointAnnotation.h +1 -1
  58. package/ios/MLRNShapeSource.h +1 -1
  59. package/ios/MLRNSource.h +3 -1
  60. package/ios/MLRNStyle.m +20 -20
  61. package/ios/MLRNUtils.h +17 -2
  62. package/ios/MLRNUtils.m +25 -2
  63. package/ios/components/camera/CameraEasing.h +8 -0
  64. package/ios/{CameraStop.h → components/camera/CameraStop.h} +10 -6
  65. package/ios/components/camera/CameraStop.m +75 -0
  66. package/ios/{CameraUpdateItem.m → components/camera/CameraUpdateItem.m} +45 -46
  67. package/ios/components/camera/MLRNCamera.h +26 -0
  68. package/ios/components/camera/MLRNCamera.m +195 -0
  69. package/ios/components/camera/MLRNCameraComponentView.h +18 -0
  70. package/ios/components/camera/MLRNCameraComponentView.mm +192 -0
  71. package/ios/components/camera/MLRNCameraManager.h +11 -0
  72. package/ios/components/camera/MLRNCameraManager.m +20 -0
  73. package/ios/components/camera/MLRNCameraModule.h +4 -0
  74. package/ios/components/camera/MLRNCameraModule.mm +111 -0
  75. package/ios/{MLRNMapView.h → components/map-view/MLRNMapView.h} +42 -20
  76. package/ios/components/map-view/MLRNMapView.m +809 -0
  77. package/ios/components/map-view/MLRNMapViewComponentView.h +18 -0
  78. package/ios/components/map-view/MLRNMapViewComponentView.mm +400 -0
  79. package/ios/components/map-view/MLRNMapViewManager.h +70 -0
  80. package/ios/components/map-view/MLRNMapViewManager.m +163 -0
  81. package/ios/components/map-view/MLRNMapViewModule.h +4 -0
  82. package/ios/components/map-view/MLRNMapViewModule.mm +249 -0
  83. package/ios/{MLRNSnapshotModule → modules/snapshot}/MLRNSnapshotModule.mm +0 -1
  84. package/lib/commonjs/MLRNModule.js +1 -3
  85. package/lib/commonjs/MLRNModule.js.map +1 -1
  86. package/lib/commonjs/components/Annotation.js +1 -13
  87. package/lib/commonjs/components/Annotation.js.map +1 -1
  88. package/lib/commonjs/components/Images.js.map +1 -1
  89. package/lib/commonjs/components/ShapeSource.js +2 -21
  90. package/lib/commonjs/components/ShapeSource.js.map +1 -1
  91. package/lib/commonjs/components/VectorSource.js +3 -26
  92. package/lib/commonjs/components/VectorSource.js.map +1 -1
  93. package/lib/commonjs/components/camera/Camera.js +97 -0
  94. package/lib/commonjs/components/camera/Camera.js.map +1 -0
  95. package/lib/commonjs/components/camera/CameraNativeComponent.ts +61 -0
  96. package/lib/commonjs/components/camera/NativeCameraModule.js +11 -0
  97. package/lib/commonjs/components/camera/NativeCameraModule.js.map +1 -0
  98. package/lib/commonjs/components/map-view/MapView.js +115 -0
  99. package/lib/commonjs/components/map-view/MapView.js.map +1 -0
  100. package/lib/commonjs/components/map-view/MapViewNativeComponent.ts +96 -0
  101. package/lib/commonjs/components/map-view/NativeMapViewModule.js +9 -0
  102. package/lib/commonjs/components/map-view/NativeMapViewModule.js.map +1 -0
  103. package/lib/commonjs/index.js +246 -4
  104. package/lib/commonjs/index.js.map +1 -1
  105. package/lib/commonjs/modules/snapshot/NativeSnapshotModule.js +2 -2
  106. package/lib/commonjs/modules/snapshot/NativeSnapshotModule.js.map +1 -1
  107. package/lib/commonjs/modules/snapshot/SnapshotManager.js +3 -2
  108. package/lib/commonjs/modules/snapshot/SnapshotManager.js.map +1 -1
  109. package/lib/commonjs/types/Bounds.js +2 -0
  110. package/lib/commonjs/types/{OnPressEvent.js.map → Bounds.js.map} +1 -1
  111. package/lib/commonjs/types/PressEvent.js +2 -0
  112. package/lib/{module/types/OnPressEvent.js.map → commonjs/types/PressEvent.js.map} +1 -1
  113. package/lib/commonjs/types/ViewPadding.js +2 -0
  114. package/lib/commonjs/types/{MapLibreRNEvent.js.map → ViewPadding.js.map} +1 -1
  115. package/lib/commonjs/types/codegen/UnsafeMixed.js +2 -0
  116. package/lib/commonjs/types/codegen/UnsafeMixed.js.map +1 -0
  117. package/lib/commonjs/utils/index.js +0 -11
  118. package/lib/commonjs/utils/index.js.map +1 -1
  119. package/lib/module/MLRNModule.js +0 -1
  120. package/lib/module/MLRNModule.js.map +1 -1
  121. package/lib/module/components/Annotation.js +2 -14
  122. package/lib/module/components/Annotation.js.map +1 -1
  123. package/lib/module/components/Images.js.map +1 -1
  124. package/lib/module/components/ShapeSource.js +3 -22
  125. package/lib/module/components/ShapeSource.js.map +1 -1
  126. package/lib/module/components/VectorSource.js +4 -27
  127. package/lib/module/components/VectorSource.js.map +1 -1
  128. package/lib/module/components/camera/Camera.js +92 -0
  129. package/lib/module/components/camera/Camera.js.map +1 -0
  130. package/lib/module/components/camera/CameraNativeComponent.ts +61 -0
  131. package/lib/module/components/camera/NativeCameraModule.js +10 -0
  132. package/lib/module/components/camera/NativeCameraModule.js.map +1 -0
  133. package/lib/module/components/map-view/MapView.js +110 -0
  134. package/lib/module/components/map-view/MapView.js.map +1 -0
  135. package/lib/module/components/map-view/MapViewNativeComponent.ts +96 -0
  136. package/lib/module/components/map-view/NativeMapViewModule.js +5 -0
  137. package/lib/module/components/map-view/NativeMapViewModule.js.map +1 -0
  138. package/lib/module/index.js +30 -1
  139. package/lib/module/index.js.map +1 -1
  140. package/lib/module/modules/snapshot/NativeSnapshotModule.js +1 -1
  141. package/lib/module/modules/snapshot/NativeSnapshotModule.js.map +1 -1
  142. package/lib/module/modules/snapshot/SnapshotManager.js +1 -1
  143. package/lib/module/modules/snapshot/SnapshotManager.js.map +1 -1
  144. package/lib/module/types/Bounds.js +2 -0
  145. package/lib/module/types/{MapLibreRNEvent.js.map → Bounds.js.map} +1 -1
  146. package/lib/module/types/PressEvent.js +2 -0
  147. package/lib/module/types/PressEvent.js.map +1 -0
  148. package/lib/module/types/ViewPadding.js +2 -0
  149. package/lib/module/types/ViewPadding.js.map +1 -0
  150. package/lib/module/types/codegen/UnsafeMixed.js +2 -0
  151. package/lib/module/types/codegen/UnsafeMixed.js.map +1 -0
  152. package/lib/module/utils/index.js +0 -9
  153. package/lib/module/utils/index.js.map +1 -1
  154. package/lib/typescript/commonjs/src/MLRNModule.d.ts +1 -7
  155. package/lib/typescript/commonjs/src/MLRNModule.d.ts.map +1 -1
  156. package/lib/typescript/commonjs/src/components/Annotation.d.ts +3 -3
  157. package/lib/typescript/commonjs/src/components/Annotation.d.ts.map +1 -1
  158. package/lib/typescript/commonjs/src/components/Images.d.ts +1 -2
  159. package/lib/typescript/commonjs/src/components/Images.d.ts.map +1 -1
  160. package/lib/typescript/commonjs/src/components/ShapeSource.d.ts +2 -5
  161. package/lib/typescript/commonjs/src/components/ShapeSource.d.ts.map +1 -1
  162. package/lib/typescript/commonjs/src/components/VectorSource.d.ts +3 -2
  163. package/lib/typescript/commonjs/src/components/VectorSource.d.ts.map +1 -1
  164. package/lib/typescript/commonjs/src/components/camera/Camera.d.ts +180 -0
  165. package/lib/typescript/commonjs/src/components/camera/Camera.d.ts.map +1 -0
  166. package/lib/typescript/commonjs/src/components/camera/CameraNativeComponent.d.ts +37 -0
  167. package/lib/typescript/commonjs/src/components/camera/CameraNativeComponent.d.ts.map +1 -0
  168. package/lib/typescript/commonjs/src/components/camera/NativeCameraModule.d.ts +27 -0
  169. package/lib/typescript/commonjs/src/components/camera/NativeCameraModule.d.ts.map +1 -0
  170. package/lib/typescript/commonjs/src/components/map-view/MapView.d.ts +323 -0
  171. package/lib/typescript/commonjs/src/components/map-view/MapView.d.ts.map +1 -0
  172. package/lib/typescript/commonjs/src/components/map-view/MapViewNativeComponent.d.ts +69 -0
  173. package/lib/typescript/commonjs/src/components/map-view/MapViewNativeComponent.d.ts.map +1 -0
  174. package/lib/typescript/commonjs/src/components/map-view/NativeMapViewModule.d.ts +45 -0
  175. package/lib/typescript/commonjs/src/components/map-view/NativeMapViewModule.d.ts.map +1 -0
  176. package/lib/typescript/commonjs/src/index.d.ts +41 -1
  177. package/lib/typescript/commonjs/src/index.d.ts.map +1 -1
  178. package/lib/typescript/commonjs/src/modules/snapshot/NativeSnapshotModule.d.ts +2 -1
  179. package/lib/typescript/commonjs/src/modules/snapshot/NativeSnapshotModule.d.ts.map +1 -1
  180. package/lib/typescript/commonjs/src/types/Bounds.d.ts +2 -0
  181. package/lib/typescript/commonjs/src/types/Bounds.d.ts.map +1 -0
  182. package/lib/typescript/commonjs/src/types/PressEvent.d.ts +16 -0
  183. package/lib/typescript/commonjs/src/types/PressEvent.d.ts.map +1 -0
  184. package/lib/typescript/commonjs/src/types/ViewPadding.d.ts +7 -0
  185. package/lib/typescript/commonjs/src/types/ViewPadding.d.ts.map +1 -0
  186. package/lib/typescript/commonjs/src/types/codegen/UnsafeMixed.d.ts +10 -0
  187. package/lib/typescript/commonjs/src/types/codegen/UnsafeMixed.d.ts.map +1 -0
  188. package/lib/typescript/commonjs/src/utils/index.d.ts +1 -3
  189. package/lib/typescript/commonjs/src/utils/index.d.ts.map +1 -1
  190. package/lib/typescript/module/src/MLRNModule.d.ts +1 -7
  191. package/lib/typescript/module/src/MLRNModule.d.ts.map +1 -1
  192. package/lib/typescript/module/src/components/Annotation.d.ts +3 -3
  193. package/lib/typescript/module/src/components/Annotation.d.ts.map +1 -1
  194. package/lib/typescript/module/src/components/Images.d.ts +1 -2
  195. package/lib/typescript/module/src/components/Images.d.ts.map +1 -1
  196. package/lib/typescript/module/src/components/ShapeSource.d.ts +2 -5
  197. package/lib/typescript/module/src/components/ShapeSource.d.ts.map +1 -1
  198. package/lib/typescript/module/src/components/VectorSource.d.ts +3 -2
  199. package/lib/typescript/module/src/components/VectorSource.d.ts.map +1 -1
  200. package/lib/typescript/module/src/components/camera/Camera.d.ts +180 -0
  201. package/lib/typescript/module/src/components/camera/Camera.d.ts.map +1 -0
  202. package/lib/typescript/module/src/components/camera/CameraNativeComponent.d.ts +37 -0
  203. package/lib/typescript/module/src/components/camera/CameraNativeComponent.d.ts.map +1 -0
  204. package/lib/typescript/module/src/components/camera/NativeCameraModule.d.ts +27 -0
  205. package/lib/typescript/module/src/components/camera/NativeCameraModule.d.ts.map +1 -0
  206. package/lib/typescript/module/src/components/map-view/MapView.d.ts +323 -0
  207. package/lib/typescript/module/src/components/map-view/MapView.d.ts.map +1 -0
  208. package/lib/typescript/module/src/components/map-view/MapViewNativeComponent.d.ts +69 -0
  209. package/lib/typescript/module/src/components/map-view/MapViewNativeComponent.d.ts.map +1 -0
  210. package/lib/typescript/module/src/components/map-view/NativeMapViewModule.d.ts +45 -0
  211. package/lib/typescript/module/src/components/map-view/NativeMapViewModule.d.ts.map +1 -0
  212. package/lib/typescript/module/src/index.d.ts +41 -1
  213. package/lib/typescript/module/src/index.d.ts.map +1 -1
  214. package/lib/typescript/module/src/modules/snapshot/NativeSnapshotModule.d.ts +2 -1
  215. package/lib/typescript/module/src/modules/snapshot/NativeSnapshotModule.d.ts.map +1 -1
  216. package/lib/typescript/module/src/types/Bounds.d.ts +2 -0
  217. package/lib/typescript/module/src/types/Bounds.d.ts.map +1 -0
  218. package/lib/typescript/module/src/types/PressEvent.d.ts +16 -0
  219. package/lib/typescript/module/src/types/PressEvent.d.ts.map +1 -0
  220. package/lib/typescript/module/src/types/ViewPadding.d.ts +7 -0
  221. package/lib/typescript/module/src/types/ViewPadding.d.ts.map +1 -0
  222. package/lib/typescript/module/src/types/codegen/UnsafeMixed.d.ts +10 -0
  223. package/lib/typescript/module/src/types/codegen/UnsafeMixed.d.ts.map +1 -0
  224. package/lib/typescript/module/src/utils/index.d.ts +1 -3
  225. package/lib/typescript/module/src/utils/index.d.ts.map +1 -1
  226. package/package.json +38 -28
  227. package/src/MLRNModule.ts +0 -10
  228. package/src/components/Annotation.tsx +8 -23
  229. package/src/components/Images.tsx +2 -4
  230. package/src/components/ShapeSource.tsx +18 -31
  231. package/src/components/VectorSource.tsx +5 -28
  232. package/src/components/camera/Camera.tsx +311 -0
  233. package/src/components/camera/CameraNativeComponent.ts +61 -0
  234. package/src/components/camera/NativeCameraModule.ts +39 -0
  235. package/src/components/map-view/MapView.tsx +582 -0
  236. package/src/components/map-view/MapViewNativeComponent.ts +96 -0
  237. package/src/components/map-view/NativeMapViewModule.ts +83 -0
  238. package/src/index.ts +86 -1
  239. package/src/modules/snapshot/NativeSnapshotModule.ts +1 -2
  240. package/src/modules/snapshot/SnapshotManager.ts +1 -1
  241. package/src/types/Bounds.ts +1 -0
  242. package/src/types/PressEvent.ts +19 -0
  243. package/src/types/ViewPadding.ts +6 -0
  244. package/src/types/codegen/UnsafeMixed.ts +9 -0
  245. package/src/utils/index.ts +1 -14
  246. package/android/src/main/java/org/maplibre/reactnative/components/AbstractEvent.java +0 -35
  247. package/android/src/main/java/org/maplibre/reactnative/components/AbstractEventEmitter.java +0 -80
  248. package/android/src/main/java/org/maplibre/reactnative/components/camera/CameraStop.java +0 -245
  249. package/android/src/main/java/org/maplibre/reactnative/components/camera/CameraUpdateItem.java +0 -121
  250. package/android/src/main/java/org/maplibre/reactnative/components/camera/CameraUpdateQueue.java +0 -68
  251. package/android/src/main/java/org/maplibre/reactnative/components/camera/MLRNCamera.java +0 -519
  252. package/android/src/main/java/org/maplibre/reactnative/components/camera/MLRNCameraManager.java +0 -101
  253. package/android/src/main/java/org/maplibre/reactnative/components/camera/constants/CameraMode.java +0 -18
  254. package/android/src/main/java/org/maplibre/reactnative/components/mapview/LayerSourceInfo.java +0 -59
  255. package/android/src/main/java/org/maplibre/reactnative/components/mapview/MLRNAndroidTextureMapView.java +0 -13
  256. package/android/src/main/java/org/maplibre/reactnative/components/mapview/MLRNAndroidTextureMapViewManager.java +0 -27
  257. package/android/src/main/java/org/maplibre/reactnative/components/mapview/MLRNMapView.java +0 -1521
  258. package/android/src/main/java/org/maplibre/reactnative/components/mapview/MLRNMapViewManager.java +0 -342
  259. package/android/src/main/java/org/maplibre/reactnative/components/mapview/helpers/CameraChangeTracker.java +0 -37
  260. package/android/src/main/java/org/maplibre/reactnative/events/MapChangeEvent.java +0 -43
  261. package/android/src/main/java/org/maplibre/reactnative/events/MapUserTrackingModeEvent.java +0 -32
  262. package/android/src/main/java/org/maplibre/reactnative/location/UserLocationVerticalAlignment.java +0 -7
  263. package/android/src/main/java/org/maplibre/reactnative/location/UserTrackingMode.java +0 -59
  264. package/android/src/main/java/org/maplibre/reactnative/utils/GeoJSONUtils.java +0 -310
  265. package/ios/CameraMode.h +0 -10
  266. package/ios/CameraMode.m +0 -10
  267. package/ios/CameraStop.m +0 -73
  268. package/ios/MLRNCamera.h +0 -29
  269. package/ios/MLRNCamera.m +0 -236
  270. package/ios/MLRNCameraManager.h +0 -5
  271. package/ios/MLRNCameraManager.m +0 -39
  272. package/ios/MLRNMapView.m +0 -497
  273. package/ios/MLRNMapViewManager.h +0 -9
  274. package/ios/MLRNMapViewManager.m +0 -604
  275. package/lib/commonjs/MapLibreRN.js +0 -266
  276. package/lib/commonjs/MapLibreRN.js.map +0 -1
  277. package/lib/commonjs/components/Camera.js +0 -333
  278. package/lib/commonjs/components/Camera.js.map +0 -1
  279. package/lib/commonjs/components/MapView.js +0 -449
  280. package/lib/commonjs/components/MapView.js.map +0 -1
  281. package/lib/commonjs/hooks/useNativeRef.js +0 -14
  282. package/lib/commonjs/hooks/useNativeRef.js.map +0 -1
  283. package/lib/commonjs/types/CameraMode.js +0 -14
  284. package/lib/commonjs/types/CameraMode.js.map +0 -1
  285. package/lib/commonjs/types/MapLibreRNEvent.js +0 -6
  286. package/lib/commonjs/types/OnPressEvent.js +0 -2
  287. package/lib/module/MapLibreRN.js +0 -33
  288. package/lib/module/MapLibreRN.js.map +0 -1
  289. package/lib/module/components/Camera.js +0 -328
  290. package/lib/module/components/Camera.js.map +0 -1
  291. package/lib/module/components/MapView.js +0 -444
  292. package/lib/module/components/MapView.js.map +0 -1
  293. package/lib/module/hooks/useNativeRef.js +0 -10
  294. package/lib/module/hooks/useNativeRef.js.map +0 -1
  295. package/lib/module/types/CameraMode.js +0 -10
  296. package/lib/module/types/CameraMode.js.map +0 -1
  297. package/lib/module/types/MapLibreRNEvent.js +0 -4
  298. package/lib/module/types/OnPressEvent.js +0 -2
  299. package/lib/typescript/commonjs/src/MapLibreRN.d.ts +0 -41
  300. package/lib/typescript/commonjs/src/MapLibreRN.d.ts.map +0 -1
  301. package/lib/typescript/commonjs/src/components/Camera.d.ts +0 -134
  302. package/lib/typescript/commonjs/src/components/Camera.d.ts.map +0 -1
  303. package/lib/typescript/commonjs/src/components/MapView.d.ts +0 -223
  304. package/lib/typescript/commonjs/src/components/MapView.d.ts.map +0 -1
  305. package/lib/typescript/commonjs/src/hooks/useNativeRef.d.ts +0 -8
  306. package/lib/typescript/commonjs/src/hooks/useNativeRef.d.ts.map +0 -1
  307. package/lib/typescript/commonjs/src/types/CameraMode.d.ts +0 -7
  308. package/lib/typescript/commonjs/src/types/CameraMode.d.ts.map +0 -1
  309. package/lib/typescript/commonjs/src/types/MapLibreRNEvent.d.ts +0 -6
  310. package/lib/typescript/commonjs/src/types/MapLibreRNEvent.d.ts.map +0 -1
  311. package/lib/typescript/commonjs/src/types/OnPressEvent.d.ts +0 -12
  312. package/lib/typescript/commonjs/src/types/OnPressEvent.d.ts.map +0 -1
  313. package/lib/typescript/module/src/MapLibreRN.d.ts +0 -41
  314. package/lib/typescript/module/src/MapLibreRN.d.ts.map +0 -1
  315. package/lib/typescript/module/src/components/Camera.d.ts +0 -134
  316. package/lib/typescript/module/src/components/Camera.d.ts.map +0 -1
  317. package/lib/typescript/module/src/components/MapView.d.ts +0 -223
  318. package/lib/typescript/module/src/components/MapView.d.ts.map +0 -1
  319. package/lib/typescript/module/src/hooks/useNativeRef.d.ts +0 -8
  320. package/lib/typescript/module/src/hooks/useNativeRef.d.ts.map +0 -1
  321. package/lib/typescript/module/src/types/CameraMode.d.ts +0 -7
  322. package/lib/typescript/module/src/types/CameraMode.d.ts.map +0 -1
  323. package/lib/typescript/module/src/types/MapLibreRNEvent.d.ts +0 -6
  324. package/lib/typescript/module/src/types/MapLibreRNEvent.d.ts.map +0 -1
  325. package/lib/typescript/module/src/types/OnPressEvent.d.ts +0 -12
  326. package/lib/typescript/module/src/types/OnPressEvent.d.ts.map +0 -1
  327. package/src/MapLibreRN.ts +0 -75
  328. package/src/components/Camera.tsx +0 -568
  329. package/src/components/MapView.tsx +0 -838
  330. package/src/hooks/useNativeRef.ts +0 -14
  331. package/src/types/CameraMode.ts +0 -6
  332. package/src/types/MapLibreRNEvent.ts +0 -7
  333. package/src/types/OnPressEvent.ts +0 -11
  334. /package/ios/{CameraUpdateItem.h → components/camera/CameraUpdateItem.h} +0 -0
  335. /package/ios/{CameraUpdateQueue.h → components/camera/CameraUpdateQueue.h} +0 -0
  336. /package/ios/{CameraUpdateQueue.m → components/camera/CameraUpdateQueue.m} +0 -0
  337. /package/ios/{MLRNSnapshotModule → modules/snapshot}/MLRNSnapshotModule.h +0 -0
@@ -1,604 +0,0 @@
1
- #import <React/RCTUIManager.h>
2
-
3
- #import "CameraStop.h"
4
- #import "CameraUpdateQueue.h"
5
- #import "FilterParser.h"
6
- #import "MLRNEvent.h"
7
- #import "MLRNEventTypes.h"
8
- #import "MLRNImages.h"
9
- #import "MLRNMapTouchEvent.h"
10
- #import "MLRNMapView.h"
11
- #import "MLRNMapViewManager.h"
12
- #import "MLRNUserLocation.h"
13
- #import "MLRNUtils.h"
14
-
15
- @interface MLRNMapViewManager () <MLNMapViewDelegate>
16
- @end
17
-
18
- @implementation MLRNMapViewManager
19
-
20
- RCT_EXPORT_MODULE(MLRNMapView)
21
-
22
- - (BOOL)requiresMainQueueSetup {
23
- return YES;
24
- }
25
-
26
- // prevents SDK from crashing and cluttering logs
27
- // since we don't have access to the frame right away
28
- - (CGRect)defaultFrame {
29
- return [[UIScreen mainScreen] bounds];
30
- }
31
-
32
- - (UIView *)view {
33
- MLRNMapView *mapView = [[MLRNMapView alloc] initWithFrame:[self defaultFrame]];
34
- mapView.delegate = self;
35
-
36
- // setup map gesture recongizers
37
- UITapGestureRecognizer *doubleTap = [[UITapGestureRecognizer alloc] initWithTarget:self
38
- action:nil];
39
- doubleTap.numberOfTapsRequired = 2;
40
-
41
- UITapGestureRecognizer *tap =
42
- [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(didTapMap:)];
43
- [tap requireGestureRecognizerToFail:doubleTap];
44
-
45
- UILongPressGestureRecognizer *longPress =
46
- [[UILongPressGestureRecognizer alloc] initWithTarget:self action:@selector(didLongPressMap:)];
47
-
48
- // this allows the internal annotation gestures to take precedence over the map tap gesture
49
- for (int i = 0; i < mapView.gestureRecognizers.count; i++) {
50
- UIGestureRecognizer *gestureRecognizer = mapView.gestureRecognizers[i];
51
-
52
- if ([gestureRecognizer isKindOfClass:[UITapGestureRecognizer class]]) {
53
- [tap requireGestureRecognizerToFail:gestureRecognizer];
54
- }
55
- }
56
-
57
- [mapView addGestureRecognizer:doubleTap];
58
- [mapView addGestureRecognizer:tap];
59
- [mapView addGestureRecognizer:longPress];
60
-
61
- return mapView;
62
- }
63
-
64
- #pragma mark - React View Props
65
-
66
- RCT_REMAP_VIEW_PROPERTY(localizeLabels, reactLocalizeLabels, BOOL)
67
- RCT_REMAP_VIEW_PROPERTY(scrollEnabled, reactScrollEnabled, BOOL)
68
- RCT_REMAP_VIEW_PROPERTY(pitchEnabled, reactPitchEnabled, BOOL)
69
- RCT_REMAP_VIEW_PROPERTY(rotateEnabled, reactRotateEnabled, BOOL)
70
- RCT_REMAP_VIEW_PROPERTY(attributionEnabled, reactAttributionEnabled, BOOL)
71
- RCT_REMAP_VIEW_PROPERTY(attributionPosition, reactAttributionPosition, NSDictionary)
72
- RCT_REMAP_VIEW_PROPERTY(logoEnabled, reactLogoEnabled, BOOL)
73
- RCT_REMAP_VIEW_PROPERTY(logoPosition, reactLogoPosition, NSDictionary)
74
- RCT_REMAP_VIEW_PROPERTY(compassEnabled, reactCompassEnabled, BOOL)
75
- RCT_REMAP_VIEW_PROPERTY(zoomEnabled, reactZoomEnabled, BOOL)
76
-
77
- RCT_REMAP_VIEW_PROPERTY(compassViewPosition, reactCompassViewPosition, NSInteger *)
78
- RCT_REMAP_VIEW_PROPERTY(compassViewMargins, reactCompassViewMargins, CGPoint)
79
-
80
- RCT_REMAP_VIEW_PROPERTY(contentInset, reactContentInset, NSArray)
81
- RCT_REMAP_VIEW_PROPERTY(mapStyle, reactMapStyle, NSString)
82
- RCT_REMAP_VIEW_PROPERTY(preferredFramesPerSecond, reactPreferredFramesPerSecond, NSInteger)
83
-
84
- RCT_EXPORT_VIEW_PROPERTY(tintColor, UIColor)
85
-
86
- RCT_EXPORT_VIEW_PROPERTY(onPress, RCTBubblingEventBlock)
87
- RCT_EXPORT_VIEW_PROPERTY(onLongPress, RCTBubblingEventBlock)
88
- RCT_EXPORT_VIEW_PROPERTY(onMapChange, RCTBubblingEventBlock)
89
-
90
- #pragma mark - React Methods
91
-
92
- RCT_EXPORT_METHOD(getPointInView : (nonnull NSNumber *)reactTag atCoordinate : (
93
- NSArray<NSNumber *> *)coordinate resolver : (RCTPromiseResolveBlock)
94
- resolve rejecter : (RCTPromiseRejectBlock)reject) {
95
- [self.bridge.uiManager addUIBlock:^(__unused RCTUIManager *manager,
96
- NSDictionary<NSNumber *, UIView *> *viewRegistry) {
97
- id view = viewRegistry[reactTag];
98
-
99
- if (![view isKindOfClass:[MLRNMapView class]]) {
100
- RCTLogError(@"Invalid react tag, could not find MLRNMapView");
101
- return;
102
- }
103
-
104
- MLRNMapView *reactMapView = (MLRNMapView *)view;
105
-
106
- CGPoint pointInView =
107
- [reactMapView convertCoordinate:CLLocationCoordinate2DMake([coordinate[1] doubleValue],
108
- [coordinate[0] doubleValue])
109
- toPointToView:reactMapView];
110
-
111
- resolve(@{@"pointInView" : @[ @(pointInView.x), @(pointInView.y) ]});
112
- }];
113
- }
114
-
115
- RCT_EXPORT_METHOD(getCoordinateFromView : (nonnull NSNumber *)reactTag atPoint : (CGPoint)
116
- point resolver : (RCTPromiseResolveBlock)
117
- resolve rejecter : (RCTPromiseRejectBlock)reject) {
118
- [self.bridge.uiManager addUIBlock:^(__unused RCTUIManager *manager,
119
- NSDictionary<NSNumber *, UIView *> *viewRegistry) {
120
- id view = viewRegistry[reactTag];
121
-
122
- if (![view isKindOfClass:[MLRNMapView class]]) {
123
- RCTLogError(@"Invalid react tag, could not find MLRNMapView");
124
- return;
125
- }
126
-
127
- MLRNMapView *reactMapView = (MLRNMapView *)view;
128
-
129
- CLLocationCoordinate2D coordinate = [reactMapView convertPoint:point
130
- toCoordinateFromView:reactMapView];
131
-
132
- resolve(@{@"coordinateFromView" : @[ @(coordinate.longitude), @(coordinate.latitude) ]});
133
- }];
134
- }
135
-
136
- RCT_EXPORT_METHOD(takeSnap : (nonnull NSNumber *)reactTag writeToDisk : (BOOL)
137
- writeToDisk resolver : (RCTPromiseResolveBlock)
138
- resolve rejecter : (RCTPromiseRejectBlock)reject) {
139
- [self.bridge.uiManager addUIBlock:^(__unused RCTUIManager *manager,
140
- NSDictionary<NSNumber *, UIView *> *viewRegistry) {
141
- id view = viewRegistry[reactTag];
142
-
143
- if (![view isKindOfClass:[MLRNMapView class]]) {
144
- RCTLogError(@"Invalid react tag, could not find MLRNMapView");
145
- return;
146
- }
147
-
148
- MLRNMapView *reactMapView = (MLRNMapView *)view;
149
- NSString *uri = [reactMapView takeSnap:writeToDisk];
150
- resolve(@{@"uri" : uri});
151
- }];
152
- }
153
-
154
- RCT_EXPORT_METHOD(getVisibleBounds : (nonnull NSNumber *)reactTag resolver : (
155
- RCTPromiseResolveBlock)resolve rejecter : (RCTPromiseRejectBlock)reject) {
156
- [self.bridge.uiManager addUIBlock:^(__unused RCTUIManager *manager,
157
- NSDictionary<NSNumber *, UIView *> *viewRegistry) {
158
- id view = viewRegistry[reactTag];
159
-
160
- if (![view isKindOfClass:[MLRNMapView class]]) {
161
- RCTLogError(@"Invalid react tag, could not find MLRNMapView");
162
- return;
163
- }
164
-
165
- MLRNMapView *reactMapView = (MLRNMapView *)view;
166
- resolve(@{
167
- @"visibleBounds" : [MLRNUtils fromCoordinateBounds:reactMapView.visibleCoordinateBounds]
168
- });
169
- }];
170
- }
171
-
172
- RCT_EXPORT_METHOD(getZoom : (nonnull NSNumber *)reactTag resolver : (RCTPromiseResolveBlock)
173
- resolve rejecter : (RCTPromiseRejectBlock)reject) {
174
- [self.bridge.uiManager addUIBlock:^(__unused RCTUIManager *manager,
175
- NSDictionary<NSNumber *, UIView *> *viewRegistry) {
176
- id view = viewRegistry[reactTag];
177
-
178
- if (![view isKindOfClass:[MLRNMapView class]]) {
179
- RCTLogError(@"Invalid react tag, could not find MLRNMapView");
180
- return;
181
- }
182
-
183
- MLRNMapView *reactMapView = (MLRNMapView *)view;
184
- resolve(@{@"zoom" : @(reactMapView.zoomLevel)});
185
- }];
186
- }
187
-
188
- RCT_EXPORT_METHOD(getCenter : (nonnull NSNumber *)reactTag resolver : (RCTPromiseResolveBlock)
189
- resolve rejecter : (RCTPromiseRejectBlock)reject) {
190
- [self.bridge.uiManager addUIBlock:^(__unused RCTUIManager *manager,
191
- NSDictionary<NSNumber *, UIView *> *viewRegistry) {
192
- id view = viewRegistry[reactTag];
193
-
194
- if (![view isKindOfClass:[MLRNMapView class]]) {
195
- RCTLogError(@"Invalid react tag, could not find MLRNMapView");
196
- return;
197
- }
198
-
199
- MLRNMapView *reactMapView = (MLRNMapView *)view;
200
- resolve(@{
201
- @"center" :
202
- @[ @(reactMapView.centerCoordinate.longitude), @(reactMapView.centerCoordinate.latitude) ]
203
- });
204
- }];
205
- }
206
-
207
- RCT_EXPORT_METHOD(queryRenderedFeaturesAtPoint : (nonnull NSNumber *)reactTag atPoint : (
208
- NSArray<NSNumber *> *)point withFilter : (NSArray *)
209
- filter withLayerIDs : (NSArray<NSString *> *)layerIDs resolver : (
210
- RCTPromiseResolveBlock)resolve rejecter : (RCTPromiseRejectBlock)reject) {
211
- [self.bridge.uiManager addUIBlock:^(__unused RCTUIManager *manager,
212
- NSDictionary<NSNumber *, UIView *> *viewRegistry) {
213
- id view = viewRegistry[reactTag];
214
-
215
- if (![view isKindOfClass:[MLRNMapView class]]) {
216
- RCTLogError(@"Invalid react tag, could not find MLRNMapView");
217
- return;
218
- }
219
-
220
- NSSet *layerIDSet = nil;
221
- if (layerIDs != nil && layerIDs.count > 0) {
222
- layerIDSet = [NSSet setWithArray:layerIDs];
223
- }
224
-
225
- MLRNMapView *reactMapView = (MLRNMapView *)view;
226
- NSPredicate *predicate = [FilterParser parse:filter];
227
- NSArray<id<MLNFeature>> *shapes = [reactMapView
228
- visibleFeaturesAtPoint:CGPointMake([point[0] floatValue], [point[1] floatValue])
229
- inStyleLayersWithIdentifiers:layerIDSet
230
- predicate:predicate];
231
-
232
- NSMutableArray<NSDictionary *> *features = [[NSMutableArray alloc] init];
233
- for (int i = 0; i < shapes.count; i++) {
234
- [features addObject:shapes[i].geoJSONDictionary];
235
- }
236
-
237
- resolve(@{@"data" : @{@"type" : @"FeatureCollection", @"features" : features}});
238
- }];
239
- }
240
-
241
- RCT_EXPORT_METHOD(queryRenderedFeaturesInRect : (nonnull NSNumber *)reactTag withBBox : (
242
- NSArray<NSNumber *> *)bbox withFilter : (NSArray *)filter withLayerIDs : (NSArray<NSString *> *)
243
- layerIDs resolver : (RCTPromiseResolveBlock)
244
- resolve rejecter : (RCTPromiseRejectBlock)reject) {
245
- [self.bridge.uiManager addUIBlock:^(__unused RCTUIManager *manager,
246
- NSDictionary<NSNumber *, UIView *> *viewRegistry) {
247
- id view = viewRegistry[reactTag];
248
-
249
- if (![view isKindOfClass:[MLRNMapView class]]) {
250
- RCTLogError(@"Invalid react tag, could not find MLRNMapView");
251
- return;
252
- }
253
-
254
- MLRNMapView *reactMapView = (MLRNMapView *)view;
255
-
256
- // bbox[top, right, bottom, left]
257
- CGFloat width = [bbox[1] floatValue] - [bbox[3] floatValue];
258
- CGFloat height = [bbox[0] floatValue] - [bbox[2] floatValue];
259
- CGRect rect = CGRectMake([bbox[3] floatValue], [bbox[2] floatValue], width, height);
260
-
261
- NSSet *layerIDSet = nil;
262
- if (layerIDs != nil && layerIDs.count > 0) {
263
- layerIDSet = [NSSet setWithArray:layerIDs];
264
- }
265
-
266
- NSPredicate *predicate = [FilterParser parse:filter];
267
- NSArray<id<MLNFeature>> *shapes = [reactMapView visibleFeaturesInRect:rect
268
- inStyleLayersWithIdentifiers:layerIDSet
269
- predicate:predicate];
270
-
271
- NSArray<NSDictionary *> *features = [self featuresToJSON:shapes];
272
-
273
- resolve(@{@"data" : @{@"type" : @"FeatureCollection", @"features" : features}});
274
- }];
275
- }
276
-
277
- RCT_EXPORT_METHOD(showAttribution : (nonnull NSNumber *)reactTag resolver : (RCTPromiseResolveBlock)
278
- resolve rejecter : (RCTPromiseRejectBlock)reject) {
279
- [self.bridge.uiManager addUIBlock:^(__unused RCTUIManager *manager,
280
- NSDictionary<NSNumber *, UIView *> *viewRegistry) {
281
- id view = viewRegistry[reactTag];
282
-
283
- if (![view isKindOfClass:[MLRNMapView class]]) {
284
- RCTLogError(@"Invalid react tag, could not find MLRNMapView");
285
- return;
286
- }
287
-
288
- __weak MLRNMapView *reactMapView = (MLRNMapView *)view;
289
- [reactMapView showAttribution:reactMapView];
290
- resolve(nil);
291
- }];
292
- }
293
-
294
- RCT_EXPORT_METHOD(setSourceVisibility : (nonnull NSNumber *)reactTag visible : (
295
- BOOL)visible sourceId : (nonnull NSString *)sourceId sourceLayerId : (nullable NSString *)
296
- sourceLayerId resolver : (RCTPromiseResolveBlock)
297
- resolve rejecter : (RCTPromiseRejectBlock)reject) {
298
- [self.bridge.uiManager addUIBlock:^(__unused RCTUIManager *manager,
299
- NSDictionary<NSNumber *, UIView *> *viewRegistry) {
300
- id view = viewRegistry[reactTag];
301
-
302
- if (![view isKindOfClass:[MLRNMapView class]]) {
303
- RCTLogError(@"Invalid react tag, could not find MLRNMapView");
304
- return;
305
- }
306
-
307
- __weak MLRNMapView *reactMapView = (MLRNMapView *)view;
308
- [reactMapView setSourceVisibility:visible sourceId:sourceId sourceLayerId:sourceLayerId];
309
- resolve(nil);
310
- }];
311
- }
312
-
313
- #pragma mark - UIGestureRecognizers
314
-
315
- - (void)didTapMap:(UITapGestureRecognizer *)recognizer {
316
- MLRNMapView *mapView = (MLRNMapView *)recognizer.view;
317
- CGPoint screenPoint = [recognizer locationInView:mapView];
318
- NSArray<MLRNSource *> *touchableSources = [mapView getAllTouchableSources];
319
-
320
- NSMutableDictionary<NSString *, NSArray<id<MLNFeature>> *> *hits =
321
- [[NSMutableDictionary alloc] init];
322
- NSMutableArray<MLRNSource *> *hitTouchableSources = [[NSMutableArray alloc] init];
323
- for (MLRNSource *touchableSource in touchableSources) {
324
- NSDictionary<NSString *, NSNumber *> *hitbox = touchableSource.hitbox;
325
- float halfWidth = [hitbox[@"width"] floatValue] / 2.f;
326
- float halfHeight = [hitbox[@"height"] floatValue] / 2.f;
327
-
328
- CGFloat top = screenPoint.y - halfHeight;
329
- CGFloat left = screenPoint.x - halfWidth;
330
- CGRect hitboxRect =
331
- CGRectMake(left, top, [hitbox[@"width"] floatValue], [hitbox[@"height"] floatValue]);
332
-
333
- NSArray<id<MLNFeature>> *features =
334
- [mapView visibleFeaturesInRect:hitboxRect
335
- inStyleLayersWithIdentifiers:[NSSet setWithArray:[touchableSource getLayerIDs]]
336
- predicate:nil];
337
-
338
- if (features.count > 0) {
339
- hits[touchableSource.id] = features;
340
- [hitTouchableSources addObject:touchableSource];
341
- }
342
- }
343
-
344
- if (hits.count > 0) {
345
- MLRNSource *source = [mapView getTouchableSourceWithHighestZIndex:hitTouchableSources];
346
- if (source != nil && source.hasPressListener) {
347
- NSArray *geoJSONDicts = [self featuresToJSON:hits[source.id]];
348
-
349
- NSString *eventType = RCT_MAPBOX_VECTOR_SOURCE_LAYER_PRESS;
350
- if ([source isKindOfClass:[MLRNShapeSource class]]) {
351
- eventType = RCT_MAPBOX_SHAPE_SOURCE_LAYER_PRESS;
352
- }
353
-
354
- CLLocationCoordinate2D coordinate = [mapView convertPoint:screenPoint
355
- toCoordinateFromView:mapView];
356
-
357
- MLRNEvent *event =
358
- [MLRNEvent makeEvent:eventType
359
- withPayload:@{
360
- @"features" : geoJSONDicts,
361
- @"point" : @{
362
- @"x" : [NSNumber numberWithDouble:screenPoint.x],
363
- @"y" : [NSNumber numberWithDouble:screenPoint.y]
364
- },
365
- @"coordinates" : @{
366
- @"latitude" : [NSNumber numberWithDouble:coordinate.latitude],
367
- @"longitude" : [NSNumber numberWithDouble:coordinate.longitude]
368
- }
369
- }];
370
- [self fireEvent:event withCallback:source.onPress];
371
- return;
372
- }
373
- }
374
-
375
- if (mapView.onPress == nil) {
376
- return;
377
- }
378
-
379
- MLRNMapTouchEvent *event = [MLRNMapTouchEvent makeTapEvent:mapView withPoint:screenPoint];
380
- [self fireEvent:event withCallback:mapView.onPress];
381
- }
382
-
383
- - (void)didLongPressMap:(UILongPressGestureRecognizer *)recognizer {
384
- MLRNMapView *mapView = (MLRNMapView *)recognizer.view;
385
-
386
- if (mapView == nil || mapView.onPress == nil ||
387
- recognizer.state != UIGestureRecognizerStateBegan) {
388
- return;
389
- }
390
-
391
- MLRNMapTouchEvent *event =
392
- [MLRNMapTouchEvent makeLongPressEvent:mapView withPoint:[recognizer locationInView:mapView]];
393
- [self fireEvent:event withCallback:mapView.onLongPress];
394
- }
395
-
396
- #pragma mark - MLNMapViewDelegate
397
-
398
- - (MLNAnnotationView *)mapView:(MLNMapView *)mapView
399
- viewForAnnotation:(id<MLNAnnotation>)annotation {
400
- if ([annotation isKindOfClass:[MLNUserLocation class]] && mapView.userLocation != nil) {
401
- MLRNMapView *reactMapView = ((MLRNMapView *)mapView);
402
- if (reactMapView.useNativeUserLocationAnnotationView) {
403
- return nil;
404
- }
405
- return [[MLRNUserLocation sharedInstance] hiddenUserAnnotation];
406
- } else if ([annotation isKindOfClass:[MLRNPointAnnotation class]]) {
407
- MLRNPointAnnotation *rctAnnotation = (MLRNPointAnnotation *)annotation;
408
- return [rctAnnotation getAnnotationView];
409
- }
410
- return nil;
411
- }
412
-
413
- - (void)mapView:(MLNMapView *)mapView
414
- didChangeUserTrackingMode:(MLNUserTrackingMode)mode
415
- animated:(BOOL)animated {
416
- MLRNMapView *reactMapView = ((MLRNMapView *)mapView);
417
- [reactMapView didChangeUserTrackingMode:mode animated:animated];
418
- }
419
-
420
- - (void)mapView:(MLNMapView *)mapView didSelectAnnotation:(nonnull id<MLNAnnotation>)annotation {
421
- if ([annotation isKindOfClass:[MLRNPointAnnotation class]]) {
422
- MLRNPointAnnotation *rctAnnotation = (MLRNPointAnnotation *)annotation;
423
-
424
- if (rctAnnotation.onSelected != nil) {
425
- MLRNMapTouchEvent *event = [MLRNMapTouchEvent makeAnnotationTapEvent:rctAnnotation];
426
- rctAnnotation.onSelected([event toJSON]);
427
- }
428
- }
429
- }
430
-
431
- - (void)mapView:(MLNMapView *)mapView didDeselectAnnotation:(nonnull id<MLNAnnotation>)annotation {
432
- if ([annotation isKindOfClass:[MLRNPointAnnotation class]]) {
433
- MLRNPointAnnotation *rctAnnotation = (MLRNPointAnnotation *)annotation;
434
-
435
- if (rctAnnotation.onDeselected != nil) {
436
- rctAnnotation.onDeselected(nil);
437
- }
438
- }
439
- }
440
-
441
- - (BOOL)mapView:(MLNMapView *)mapView annotationCanShowCallout:(id<MLNAnnotation>)annotation {
442
- if ([annotation isKindOfClass:[MLRNPointAnnotation class]]) {
443
- MLRNPointAnnotation *rctAnnotation = (MLRNPointAnnotation *)annotation;
444
- return rctAnnotation.calloutView != nil;
445
- }
446
- return NO;
447
- }
448
-
449
- - (UIView<MLNCalloutView> *)mapView:(MLNMapView *)mapView
450
- calloutViewForAnnotation:(id<MLNAnnotation>)annotation {
451
- if ([annotation isKindOfClass:[MLRNPointAnnotation class]]) {
452
- MLRNPointAnnotation *rctAnnotation = (MLRNPointAnnotation *)annotation;
453
- return rctAnnotation.calloutView;
454
- }
455
- return nil;
456
- }
457
-
458
- - (BOOL)mapView:(MLNMapView *)mapView
459
- shouldChangeFromCamera:(MLNMapCamera *)oldCamera
460
- toCamera:(MLNMapCamera *)newCamera {
461
- MLRNMapView *reactMapView = ((MLRNMapView *)mapView);
462
- return MLNCoordinateBoundsIsEmpty(reactMapView.maxBounds) ||
463
- MLNCoordinateInCoordinateBounds(newCamera.centerCoordinate, reactMapView.maxBounds);
464
- }
465
-
466
- - (void)mapView:(MLNMapView *)mapView
467
- regionWillChangeWithReason:(MLNCameraChangeReason)reason
468
- animated:(BOOL)animated {
469
- ((MLRNMapView *)mapView).isUserInteraction = (BOOL)(reason & ~MLNCameraChangeReasonProgrammatic);
470
- NSDictionary *payload = [self _makeRegionPayload:mapView animated:animated];
471
- [self reactMapDidChange:mapView eventType:RCT_MAPBOX_REGION_WILL_CHANGE_EVENT andPayload:payload];
472
- }
473
-
474
- - (void)mapViewRegionIsChanging:(MLNMapView *)mapView {
475
- NSDictionary *payload = [self _makeRegionPayload:mapView animated:false];
476
- [self reactMapDidChange:mapView eventType:RCT_MAPBOX_REGION_IS_CHANGING andPayload:payload];
477
- }
478
-
479
- - (void)mapView:(MLNMapView *)mapView
480
- regionDidChangeWithReason:(MLNCameraChangeReason)reason
481
- animated:(BOOL)animated {
482
- if (((reason & MLNCameraChangeReasonTransitionCancelled) ==
483
- MLNCameraChangeReasonTransitionCancelled) &&
484
- ((reason & MLNCameraChangeReasonGesturePan) != MLNCameraChangeReasonGesturePan))
485
- return;
486
-
487
- ((MLRNMapView *)mapView).isUserInteraction = (BOOL)(reason & ~MLNCameraChangeReasonProgrammatic);
488
-
489
- NSDictionary *payload = [self _makeRegionPayload:mapView animated:animated];
490
- [self reactMapDidChange:mapView eventType:RCT_MAPBOX_REGION_DID_CHANGE andPayload:payload];
491
- }
492
-
493
- - (void)mapViewWillStartLoadingMap:(MLNMapView *)mapView {
494
- [self reactMapDidChange:mapView eventType:RCT_MAPBOX_WILL_START_LOADING_MAP];
495
- }
496
-
497
- - (void)mapViewDidFinishLoadingMap:(MLNMapView *)mapView {
498
- [self reactMapDidChange:mapView eventType:RCT_MAPBOX_DID_FINISH_LOADING_MAP];
499
- }
500
-
501
- - (void)mapViewDidFailLoadingMap:(MLNMapView *)mapView withError:(NSError *)error {
502
- NSLog(@"Failed loading map %@", error);
503
- [self reactMapDidChange:mapView eventType:RCT_MAPBOX_DID_FAIL_LOADING_MAP];
504
- }
505
-
506
- - (void)mapViewWillStartRenderingFrame:(MLNMapView *)mapView {
507
- [self reactMapDidChange:mapView eventType:RCT_MAPBOX_WILL_START_RENDERING_FRAME];
508
- }
509
-
510
- - (void)mapViewDidFinishRenderingFrame:(MLNMapView *)mapView fullyRendered:(BOOL)fullyRendered {
511
- if (fullyRendered) {
512
- [self reactMapDidChange:mapView eventType:RCT_MAPBOX_DID_FINISH_RENDERING_FRAME_FULLY];
513
- } else {
514
- [self reactMapDidChange:mapView eventType:RCT_MAPBOX_DID_FINSIH_RENDERING_FRAME];
515
- }
516
- }
517
-
518
- - (void)mapViewWillStartRenderingMap:(MLNMapView *)mapView {
519
- [self reactMapDidChange:mapView eventType:RCT_MAPBOX_WILL_START_RENDERING_MAP];
520
- }
521
-
522
- - (void)mapViewDidFinishRenderingMap:(MLNMapView *)mapView fullyRendered:(BOOL)fullyRendered {
523
- if (fullyRendered) {
524
- [self reactMapDidChange:mapView eventType:RCT_MAPBOX_DID_FINISH_RENDERING_MAP_FULLY];
525
- } else {
526
- [self reactMapDidChange:mapView eventType:RCT_MAPBOX_DID_FINISH_RENDERING_MAP];
527
- }
528
- }
529
-
530
- - (void)mapView:(MLNMapView *)mapView didFinishLoadingStyle:(MLNStyle *)style {
531
- MLRNMapView *reactMapView = (MLRNMapView *)mapView;
532
- if (reactMapView.reactLocalizeLabels == true) {
533
- [style localizeLabelsIntoLocale:nil];
534
- }
535
-
536
- for (int i = 0; i < reactMapView.sources.count; i++) {
537
- MLRNSource *source = reactMapView.sources[i];
538
- source.map = reactMapView;
539
- }
540
- for (int i = 0; i < reactMapView.layers.count; i++) {
541
- MLRNLayer *layer = reactMapView.layers[i];
542
- layer.map = reactMapView;
543
- }
544
-
545
- if (reactMapView.light != nil) {
546
- reactMapView.light.map = reactMapView;
547
- }
548
-
549
- [reactMapView notifyStyleLoaded];
550
- [self reactMapDidChange:reactMapView eventType:RCT_MAPBOX_DID_FINISH_LOADING_STYLE];
551
- }
552
-
553
- - (UIImage *)mapView:(MLNMapView *)mapView didFailToLoadImage:(NSString *)imageName {
554
- MLRNMapView *reactMapView = ((MLRNMapView *)mapView);
555
- NSArray<MLRNImages *> *allImages = [reactMapView getAllImages];
556
- for (MLRNImages *images in allImages) {
557
- if ([images addMissingImageToStyle:imageName]) {
558
- // The image was added inside addMissingImageToStyle so we can return nil
559
- return nil;
560
- }
561
- }
562
-
563
- for (MLRNImages *images in allImages) {
564
- [images sendImageMissingEvent:imageName];
565
- }
566
- return nil;
567
- }
568
-
569
- - (void)reactMapDidChange:(MLNMapView *)mapView eventType:(NSString *)type {
570
- [self reactMapDidChange:mapView eventType:type andPayload:nil];
571
- }
572
-
573
- - (void)reactMapDidChange:(MLNMapView *)mapView
574
- eventType:(NSString *)type
575
- andPayload:(NSDictionary *)payload {
576
- MLRNMapView *reactMapView = (MLRNMapView *)mapView;
577
- MLRNEvent *event = [MLRNEvent makeEvent:type withPayload:payload];
578
- [self fireEvent:event withCallback:reactMapView.onMapChange];
579
- }
580
-
581
- - (NSDictionary *)_makeRegionPayload:(MLNMapView *)mapView animated:(BOOL)animated {
582
- MLRNMapView *rctMapView = (MLRNMapView *)mapView;
583
- MLNPointFeature *feature = [[MLNPointFeature alloc] init];
584
- feature.coordinate = mapView.centerCoordinate;
585
- feature.attributes = @{
586
- @"zoomLevel" : [NSNumber numberWithDouble:mapView.zoomLevel],
587
- @"heading" : [NSNumber numberWithDouble:mapView.camera.heading],
588
- @"pitch" : [NSNumber numberWithDouble:mapView.camera.pitch],
589
- @"animated" : [NSNumber numberWithBool:animated],
590
- @"isUserInteraction" : @(rctMapView.isUserInteraction),
591
- @"visibleBounds" : [MLRNUtils fromCoordinateBounds:mapView.visibleCoordinateBounds]
592
- };
593
- return feature.geoJSONDictionary;
594
- }
595
-
596
- - (NSArray<NSDictionary *> *)featuresToJSON:(NSArray<id<MLNFeature>> *)features {
597
- NSMutableArray<NSDictionary *> *json = [[NSMutableArray alloc] init];
598
- for (id<MLNFeature> feature in features) {
599
- [json addObject:feature.geoJSONDictionary];
600
- }
601
- return json;
602
- }
603
-
604
- @end