@maplibre/maplibre-react-native 8.6.0-beta.0

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 (381) hide show
  1. package/.eslintignore +3 -0
  2. package/.eslintrc.js +158 -0
  3. package/.gitattributes +1 -0
  4. package/.nvmrc +1 -0
  5. package/.prettierrc.js +7 -0
  6. package/.sonarcloud.properties +15 -0
  7. package/CHANGELOG.md +367 -0
  8. package/CODE_OF_CONDUCT.md +2 -0
  9. package/CONTRIBUTING.md +34 -0
  10. package/LICENSE.md +9 -0
  11. package/README.md +224 -0
  12. package/RELEASE.md +30 -0
  13. package/android/build.gradle +34 -0
  14. package/android/install.md +16 -0
  15. package/android/rctmgl/.settings/org.eclipse.buildship.core.prefs +2 -0
  16. package/android/rctmgl/build.gradle +61 -0
  17. package/android/rctmgl/proguard-rules.pro +25 -0
  18. package/android/rctmgl/src/main/AndroidManifest.xml +4 -0
  19. package/android/rctmgl/src/main/java/com/mapbox/rctmgl/RCTMGLPackage.java +99 -0
  20. package/android/rctmgl/src/main/java/com/mapbox/rctmgl/components/AbstractEvent.java +35 -0
  21. package/android/rctmgl/src/main/java/com/mapbox/rctmgl/components/AbstractEventEmitter.java +80 -0
  22. package/android/rctmgl/src/main/java/com/mapbox/rctmgl/components/AbstractMapFeature.java +19 -0
  23. package/android/rctmgl/src/main/java/com/mapbox/rctmgl/components/annotation/MarkerView.java +23 -0
  24. package/android/rctmgl/src/main/java/com/mapbox/rctmgl/components/annotation/MarkerViewManager.java +67 -0
  25. package/android/rctmgl/src/main/java/com/mapbox/rctmgl/components/annotation/RCTMGLCallout.java +15 -0
  26. package/android/rctmgl/src/main/java/com/mapbox/rctmgl/components/annotation/RCTMGLCalloutManager.java +22 -0
  27. package/android/rctmgl/src/main/java/com/mapbox/rctmgl/components/annotation/RCTMGLMarkerView.java +112 -0
  28. package/android/rctmgl/src/main/java/com/mapbox/rctmgl/components/annotation/RCTMGLMarkerViewManager.java +45 -0
  29. package/android/rctmgl/src/main/java/com/mapbox/rctmgl/components/annotation/RCTMGLPointAnnotation.java +360 -0
  30. package/android/rctmgl/src/main/java/com/mapbox/rctmgl/components/annotation/RCTMGLPointAnnotationManager.java +88 -0
  31. package/android/rctmgl/src/main/java/com/mapbox/rctmgl/components/camera/CameraStop.java +249 -0
  32. package/android/rctmgl/src/main/java/com/mapbox/rctmgl/components/camera/CameraUpdateItem.java +125 -0
  33. package/android/rctmgl/src/main/java/com/mapbox/rctmgl/components/camera/CameraUpdateQueue.java +73 -0
  34. package/android/rctmgl/src/main/java/com/mapbox/rctmgl/components/camera/RCTMGLCamera.java +530 -0
  35. package/android/rctmgl/src/main/java/com/mapbox/rctmgl/components/camera/RCTMGLCameraManager.java +101 -0
  36. package/android/rctmgl/src/main/java/com/mapbox/rctmgl/components/camera/constants/CameraMode.java +22 -0
  37. package/android/rctmgl/src/main/java/com/mapbox/rctmgl/components/images/RCTMGLImages.java +234 -0
  38. package/android/rctmgl/src/main/java/com/mapbox/rctmgl/components/images/RCTMGLImagesManager.java +103 -0
  39. package/android/rctmgl/src/main/java/com/mapbox/rctmgl/components/location/LocationComponentManager.java +149 -0
  40. package/android/rctmgl/src/main/java/com/mapbox/rctmgl/components/location/RCTMGLNativeUserLocation.java +66 -0
  41. package/android/rctmgl/src/main/java/com/mapbox/rctmgl/components/location/RCTMGLNativeUserLocationManager.java +35 -0
  42. package/android/rctmgl/src/main/java/com/mapbox/rctmgl/components/mapview/LayerSourceInfo.java +59 -0
  43. package/android/rctmgl/src/main/java/com/mapbox/rctmgl/components/mapview/RCTMGLAndroidTextureMapView.java +16 -0
  44. package/android/rctmgl/src/main/java/com/mapbox/rctmgl/components/mapview/RCTMGLAndroidTextureMapViewManager.java +31 -0
  45. package/android/rctmgl/src/main/java/com/mapbox/rctmgl/components/mapview/RCTMGLMapView.java +1527 -0
  46. package/android/rctmgl/src/main/java/com/mapbox/rctmgl/components/mapview/RCTMGLMapViewManager.java +353 -0
  47. package/android/rctmgl/src/main/java/com/mapbox/rctmgl/components/mapview/helpers/CameraChangeTracker.java +41 -0
  48. package/android/rctmgl/src/main/java/com/mapbox/rctmgl/components/styles/RCTMGLStyle.java +83 -0
  49. package/android/rctmgl/src/main/java/com/mapbox/rctmgl/components/styles/RCTMGLStyleFactory.java +2242 -0
  50. package/android/rctmgl/src/main/java/com/mapbox/rctmgl/components/styles/RCTMGLStyleFunctionParser.java +108 -0
  51. package/android/rctmgl/src/main/java/com/mapbox/rctmgl/components/styles/RCTMGLStyleValue.java +212 -0
  52. package/android/rctmgl/src/main/java/com/mapbox/rctmgl/components/styles/layers/RCTLayer.java +287 -0
  53. package/android/rctmgl/src/main/java/com/mapbox/rctmgl/components/styles/layers/RCTMGLBackgroundLayer.java +27 -0
  54. package/android/rctmgl/src/main/java/com/mapbox/rctmgl/components/styles/layers/RCTMGLBackgroundLayerManager.java +64 -0
  55. package/android/rctmgl/src/main/java/com/mapbox/rctmgl/components/styles/layers/RCTMGLCircleLayer.java +55 -0
  56. package/android/rctmgl/src/main/java/com/mapbox/rctmgl/components/styles/layers/RCTMGLCircleLayerManager.java +77 -0
  57. package/android/rctmgl/src/main/java/com/mapbox/rctmgl/components/styles/layers/RCTMGLFillExtrusionLayer.java +55 -0
  58. package/android/rctmgl/src/main/java/com/mapbox/rctmgl/components/styles/layers/RCTMGLFillExtrusionLayerManager.java +80 -0
  59. package/android/rctmgl/src/main/java/com/mapbox/rctmgl/components/styles/layers/RCTMGLFillLayer.java +55 -0
  60. package/android/rctmgl/src/main/java/com/mapbox/rctmgl/components/styles/layers/RCTMGLFillLayerManager.java +80 -0
  61. package/android/rctmgl/src/main/java/com/mapbox/rctmgl/components/styles/layers/RCTMGLHeatmapLayer.java +55 -0
  62. package/android/rctmgl/src/main/java/com/mapbox/rctmgl/components/styles/layers/RCTMGLHeatmapLayerManager.java +77 -0
  63. package/android/rctmgl/src/main/java/com/mapbox/rctmgl/components/styles/layers/RCTMGLLineLayer.java +55 -0
  64. package/android/rctmgl/src/main/java/com/mapbox/rctmgl/components/styles/layers/RCTMGLLineLayerManager.java +79 -0
  65. package/android/rctmgl/src/main/java/com/mapbox/rctmgl/components/styles/layers/RCTMGLRasterLayer.java +27 -0
  66. package/android/rctmgl/src/main/java/com/mapbox/rctmgl/components/styles/layers/RCTMGLRasterLayerManager.java +64 -0
  67. package/android/rctmgl/src/main/java/com/mapbox/rctmgl/components/styles/layers/RCTMGLSymbolLayer.java +55 -0
  68. package/android/rctmgl/src/main/java/com/mapbox/rctmgl/components/styles/layers/RCTMGLSymbolLayerManager.java +75 -0
  69. package/android/rctmgl/src/main/java/com/mapbox/rctmgl/components/styles/light/RCTMGLLight.java +65 -0
  70. package/android/rctmgl/src/main/java/com/mapbox/rctmgl/components/styles/light/RCTMGLLightManager.java +29 -0
  71. package/android/rctmgl/src/main/java/com/mapbox/rctmgl/components/styles/sources/RCTMGLImageSource.java +81 -0
  72. package/android/rctmgl/src/main/java/com/mapbox/rctmgl/components/styles/sources/RCTMGLImageSourceManager.java +72 -0
  73. package/android/rctmgl/src/main/java/com/mapbox/rctmgl/components/styles/sources/RCTMGLRasterSource.java +45 -0
  74. package/android/rctmgl/src/main/java/com/mapbox/rctmgl/components/styles/sources/RCTMGLRasterSourceManager.java +44 -0
  75. package/android/rctmgl/src/main/java/com/mapbox/rctmgl/components/styles/sources/RCTMGLShapeSource.java +302 -0
  76. package/android/rctmgl/src/main/java/com/mapbox/rctmgl/components/styles/sources/RCTMGLShapeSourceManager.java +227 -0
  77. package/android/rctmgl/src/main/java/com/mapbox/rctmgl/components/styles/sources/RCTMGLTileSource.java +97 -0
  78. package/android/rctmgl/src/main/java/com/mapbox/rctmgl/components/styles/sources/RCTMGLTileSourceManager.java +80 -0
  79. package/android/rctmgl/src/main/java/com/mapbox/rctmgl/components/styles/sources/RCTMGLVectorSource.java +64 -0
  80. package/android/rctmgl/src/main/java/com/mapbox/rctmgl/components/styles/sources/RCTMGLVectorSourceManager.java +84 -0
  81. package/android/rctmgl/src/main/java/com/mapbox/rctmgl/components/styles/sources/RCTSource.java +244 -0
  82. package/android/rctmgl/src/main/java/com/mapbox/rctmgl/events/AbstractEvent.java +66 -0
  83. package/android/rctmgl/src/main/java/com/mapbox/rctmgl/events/AndroidCallbackEvent.java +38 -0
  84. package/android/rctmgl/src/main/java/com/mapbox/rctmgl/events/EventEmitter.java +45 -0
  85. package/android/rctmgl/src/main/java/com/mapbox/rctmgl/events/FeatureClickEvent.java +79 -0
  86. package/android/rctmgl/src/main/java/com/mapbox/rctmgl/events/IEvent.java +18 -0
  87. package/android/rctmgl/src/main/java/com/mapbox/rctmgl/events/ImageMissingEvent.java +42 -0
  88. package/android/rctmgl/src/main/java/com/mapbox/rctmgl/events/LocationEvent.java +100 -0
  89. package/android/rctmgl/src/main/java/com/mapbox/rctmgl/events/MapChangeEvent.java +47 -0
  90. package/android/rctmgl/src/main/java/com/mapbox/rctmgl/events/MapClickEvent.java +51 -0
  91. package/android/rctmgl/src/main/java/com/mapbox/rctmgl/events/MapUserTrackingModeEvent.java +36 -0
  92. package/android/rctmgl/src/main/java/com/mapbox/rctmgl/events/OfflineEvent.java +29 -0
  93. package/android/rctmgl/src/main/java/com/mapbox/rctmgl/events/PointAnnotationClickEvent.java +46 -0
  94. package/android/rctmgl/src/main/java/com/mapbox/rctmgl/events/PointAnnotationDragEvent.java +51 -0
  95. package/android/rctmgl/src/main/java/com/mapbox/rctmgl/events/constants/EventKeys.java +39 -0
  96. package/android/rctmgl/src/main/java/com/mapbox/rctmgl/events/constants/EventTypes.java +51 -0
  97. package/android/rctmgl/src/main/java/com/mapbox/rctmgl/http/CustomHeadersInterceptor.java +38 -0
  98. package/android/rctmgl/src/main/java/com/mapbox/rctmgl/location/LocationManager.java +168 -0
  99. package/android/rctmgl/src/main/java/com/mapbox/rctmgl/location/UserLocation.java +63 -0
  100. package/android/rctmgl/src/main/java/com/mapbox/rctmgl/location/UserLocationVerticalAlignment.java +11 -0
  101. package/android/rctmgl/src/main/java/com/mapbox/rctmgl/location/UserTrackingMode.java +63 -0
  102. package/android/rctmgl/src/main/java/com/mapbox/rctmgl/location/UserTrackingState.java +19 -0
  103. package/android/rctmgl/src/main/java/com/mapbox/rctmgl/modules/RCTMGLLocationModule.java +158 -0
  104. package/android/rctmgl/src/main/java/com/mapbox/rctmgl/modules/RCTMGLLogging.java +140 -0
  105. package/android/rctmgl/src/main/java/com/mapbox/rctmgl/modules/RCTMGLModule.java +348 -0
  106. package/android/rctmgl/src/main/java/com/mapbox/rctmgl/modules/RCTMGLOfflineModule.java +597 -0
  107. package/android/rctmgl/src/main/java/com/mapbox/rctmgl/modules/RCTMGLSnapshotModule.java +139 -0
  108. package/android/rctmgl/src/main/java/com/mapbox/rctmgl/utils/BitmapUtils.java +129 -0
  109. package/android/rctmgl/src/main/java/com/mapbox/rctmgl/utils/ConvertUtils.java +257 -0
  110. package/android/rctmgl/src/main/java/com/mapbox/rctmgl/utils/DownloadMapImageTask.java +159 -0
  111. package/android/rctmgl/src/main/java/com/mapbox/rctmgl/utils/ExpressionParser.java +74 -0
  112. package/android/rctmgl/src/main/java/com/mapbox/rctmgl/utils/GeoJSONUtils.java +209 -0
  113. package/android/rctmgl/src/main/java/com/mapbox/rctmgl/utils/GeoViewport.java +38 -0
  114. package/android/rctmgl/src/main/java/com/mapbox/rctmgl/utils/ImageEntry.java +25 -0
  115. package/android/rctmgl/src/main/java/com/mapbox/rctmgl/utils/ResourceUtils.java +30 -0
  116. package/android/rctmgl/src/main/java/com/mapbox/rctmgl/utils/SimpleEventCallback.java +30 -0
  117. package/android/rctmgl/src/main/java/com/mapbox/rctmgl/utils/SphericalMercator.java +69 -0
  118. package/android/rctmgl/src/main/res/drawable/empty.xml +5 -0
  119. package/android/rctmgl/src/main/res/drawable/empty_drawable.png +0 -0
  120. package/android/rctmgl/src/main/res/drawable-xxhdpi/red_marker.png +0 -0
  121. package/android/rctmgl/src/main/res/layout/annotation.xml +17 -0
  122. package/android/rctmgl/src/main/res/values/strings.xml +3 -0
  123. package/android/settings.gradle +1 -0
  124. package/app.plugin.js +1 -0
  125. package/assets/heading.png +0 -0
  126. package/assets/heading@2x.png +0 -0
  127. package/assets/heading@3x.png +0 -0
  128. package/assets/indoor_building_map_android.png +0 -0
  129. package/assets/indoor_building_map_ios.png +0 -0
  130. package/assets/mapbox_logo.png +0 -0
  131. package/babel.config.js +9 -0
  132. package/docs/Annotation.md +39 -0
  133. package/docs/Annotations.md +17 -0
  134. package/docs/BackgroundLayer.md +166 -0
  135. package/docs/Callout.md +15 -0
  136. package/docs/Camera.md +162 -0
  137. package/docs/CircleLayer.md +453 -0
  138. package/docs/CustomHttpHeaders.md +87 -0
  139. package/docs/FillExtrusionLayer.md +327 -0
  140. package/docs/FillLayer.md +293 -0
  141. package/docs/GettingStarted.md +72 -0
  142. package/docs/HeadingIndicator.md +10 -0
  143. package/docs/HeatmapLayer.md +215 -0
  144. package/docs/ImageSource.md +12 -0
  145. package/docs/Images.md +12 -0
  146. package/docs/Light.md +159 -0
  147. package/docs/LineLayer.md +567 -0
  148. package/docs/Logger.md +23 -0
  149. package/docs/MapView.md +211 -0
  150. package/docs/MapboxGL.md +65 -0
  151. package/docs/MarkerView.md +14 -0
  152. package/docs/NativeUserLocation.md +11 -0
  153. package/docs/OfflineManager.md +246 -0
  154. package/docs/PointAnnotation.md +34 -0
  155. package/docs/RasterLayer.md +357 -0
  156. package/docs/RasterSource.md +17 -0
  157. package/docs/ShapeSource.md +100 -0
  158. package/docs/Style.md +10 -0
  159. package/docs/StyleSheet.md +430 -0
  160. package/docs/SymbolLayer.md +1658 -0
  161. package/docs/UserLocation.md +39 -0
  162. package/docs/VectorSource.md +48 -0
  163. package/docs/docs.json +6093 -0
  164. package/docs/snapshotManager.md +53 -0
  165. package/index.d.ts +953 -0
  166. package/ios/RCTMGL/CameraMode.h +18 -0
  167. package/ios/RCTMGL/CameraMode.m +18 -0
  168. package/ios/RCTMGL/CameraStop.h +26 -0
  169. package/ios/RCTMGL/CameraStop.m +83 -0
  170. package/ios/RCTMGL/CameraUpdateItem.h +18 -0
  171. package/ios/RCTMGL/CameraUpdateItem.m +178 -0
  172. package/ios/RCTMGL/CameraUpdateQueue.h +21 -0
  173. package/ios/RCTMGL/CameraUpdateQueue.m +74 -0
  174. package/ios/RCTMGL/FilterParser.h +14 -0
  175. package/ios/RCTMGL/FilterParser.m +22 -0
  176. package/ios/RCTMGL/MGLCustomHeaders.h +20 -0
  177. package/ios/RCTMGL/MGLCustomHeaders.m +98 -0
  178. package/ios/RCTMGL/MGLFaux3DUserLocationAnnotationView.h +23 -0
  179. package/ios/RCTMGL/MGLFaux3DUserLocationAnnotationView.m +474 -0
  180. package/ios/RCTMGL/MGLModule.h +13 -0
  181. package/ios/RCTMGL/MGLModule.m +269 -0
  182. package/ios/RCTMGL/MGLOfflineModule.h +19 -0
  183. package/ios/RCTMGL/MGLOfflineModule.m +516 -0
  184. package/ios/RCTMGL/MGLSnapshotModule.h +13 -0
  185. package/ios/RCTMGL/MGLSnapshotModule.m +80 -0
  186. package/ios/RCTMGL/MGLUserLocationHeadingArrowLayer.h +11 -0
  187. package/ios/RCTMGL/MGLUserLocationHeadingArrowLayer.m +57 -0
  188. package/ios/RCTMGL/MGLUserLocationHeadingBeamLayer.h +11 -0
  189. package/ios/RCTMGL/MGLUserLocationHeadingBeamLayer.m +102 -0
  190. package/ios/RCTMGL/MGLUserLocationHeadingIndicator.h +10 -0
  191. package/ios/RCTMGL/RCTConvert+Mapbox.h +16 -0
  192. package/ios/RCTMGL/RCTConvert+Mapbox.m +32 -0
  193. package/ios/RCTMGL/RCTMGL.h +13 -0
  194. package/ios/RCTMGL/RCTMGL.m +13 -0
  195. package/ios/RCTMGL/RCTMGLBackgroundLayer.h +14 -0
  196. package/ios/RCTMGL/RCTMGLBackgroundLayer.m +27 -0
  197. package/ios/RCTMGL/RCTMGLBackgroundLayerManager.h +13 -0
  198. package/ios/RCTMGL/RCTMGLBackgroundLayerManager.m +35 -0
  199. package/ios/RCTMGL/RCTMGLCallout.h +15 -0
  200. package/ios/RCTMGL/RCTMGLCallout.m +74 -0
  201. package/ios/RCTMGL/RCTMGLCalloutManager.h +13 -0
  202. package/ios/RCTMGL/RCTMGLCalloutManager.m +21 -0
  203. package/ios/RCTMGL/RCTMGLCamera.h +39 -0
  204. package/ios/RCTMGL/RCTMGLCamera.m +258 -0
  205. package/ios/RCTMGL/RCTMGLCameraManager.h +13 -0
  206. package/ios/RCTMGL/RCTMGLCameraManager.m +52 -0
  207. package/ios/RCTMGL/RCTMGLCircleLayer.h +13 -0
  208. package/ios/RCTMGL/RCTMGLCircleLayer.m +34 -0
  209. package/ios/RCTMGL/RCTMGLCircleLayerManager.h +13 -0
  210. package/ios/RCTMGL/RCTMGLCircleLayerManager.m +39 -0
  211. package/ios/RCTMGL/RCTMGLEvent.h +21 -0
  212. package/ios/RCTMGL/RCTMGLEvent.m +47 -0
  213. package/ios/RCTMGL/RCTMGLEventProtocol.h +16 -0
  214. package/ios/RCTMGL/RCTMGLEventTypes.h +50 -0
  215. package/ios/RCTMGL/RCTMGLEventTypes.m +49 -0
  216. package/ios/RCTMGL/RCTMGLFillExtrusionLayer.h +14 -0
  217. package/ios/RCTMGL/RCTMGLFillExtrusionLayer.m +32 -0
  218. package/ios/RCTMGL/RCTMGLFillExtrusionLayerManager.h +13 -0
  219. package/ios/RCTMGL/RCTMGLFillExtrusionLayerManager.m +39 -0
  220. package/ios/RCTMGL/RCTMGLFillLayer.h +14 -0
  221. package/ios/RCTMGL/RCTMGLFillLayer.m +33 -0
  222. package/ios/RCTMGL/RCTMGLFillLayerManager.h +13 -0
  223. package/ios/RCTMGL/RCTMGLFillLayerManager.m +37 -0
  224. package/ios/RCTMGL/RCTMGLHeatmapLayer.h +12 -0
  225. package/ios/RCTMGL/RCTMGLHeatmapLayer.m +30 -0
  226. package/ios/RCTMGL/RCTMGLHeatmapLayerManager.h +12 -0
  227. package/ios/RCTMGL/RCTMGLHeatmapLayerManager.m +38 -0
  228. package/ios/RCTMGL/RCTMGLImageQueue.h +19 -0
  229. package/ios/RCTMGL/RCTMGLImageQueue.m +57 -0
  230. package/ios/RCTMGL/RCTMGLImageQueueOperation.h +17 -0
  231. package/ios/RCTMGL/RCTMGLImageQueueOperation.m +138 -0
  232. package/ios/RCTMGL/RCTMGLImageSource.h +16 -0
  233. package/ios/RCTMGL/RCTMGLImageSource.m +60 -0
  234. package/ios/RCTMGL/RCTMGLImageSourceManager.h +13 -0
  235. package/ios/RCTMGL/RCTMGLImageSourceManager.m +25 -0
  236. package/ios/RCTMGL/RCTMGLImages.h +25 -0
  237. package/ios/RCTMGL/RCTMGLImages.m +126 -0
  238. package/ios/RCTMGL/RCTMGLImagesManager.h +5 -0
  239. package/ios/RCTMGL/RCTMGLImagesManager.m +21 -0
  240. package/ios/RCTMGL/RCTMGLLayer.h +52 -0
  241. package/ios/RCTMGL/RCTMGLLayer.m +236 -0
  242. package/ios/RCTMGL/RCTMGLLight.h +17 -0
  243. package/ios/RCTMGL/RCTMGLLight.m +46 -0
  244. package/ios/RCTMGL/RCTMGLLightManager.h +13 -0
  245. package/ios/RCTMGL/RCTMGLLightManager.m +23 -0
  246. package/ios/RCTMGL/RCTMGLLineLayer.h +14 -0
  247. package/ios/RCTMGL/RCTMGLLineLayer.m +33 -0
  248. package/ios/RCTMGL/RCTMGLLineLayerManager.h +13 -0
  249. package/ios/RCTMGL/RCTMGLLineLayerManager.m +40 -0
  250. package/ios/RCTMGL/RCTMGLLocation.h +19 -0
  251. package/ios/RCTMGL/RCTMGLLocation.m +32 -0
  252. package/ios/RCTMGL/RCTMGLLocationManager.h +30 -0
  253. package/ios/RCTMGL/RCTMGLLocationManager.m +180 -0
  254. package/ios/RCTMGL/RCTMGLLocationManagerDelegate.h +20 -0
  255. package/ios/RCTMGL/RCTMGLLocationModule.h +15 -0
  256. package/ios/RCTMGL/RCTMGLLocationModule.m +99 -0
  257. package/ios/RCTMGL/RCTMGLLogging.h +18 -0
  258. package/ios/RCTMGL/RCTMGLLogging.m +132 -0
  259. package/ios/RCTMGL/RCTMGLMapTouchEvent.h +25 -0
  260. package/ios/RCTMGL/RCTMGLMapTouchEvent.m +77 -0
  261. package/ios/RCTMGL/RCTMGLMapView.h +91 -0
  262. package/ios/RCTMGL/RCTMGLMapView.m +536 -0
  263. package/ios/RCTMGL/RCTMGLMapViewManager.h +17 -0
  264. package/ios/RCTMGL/RCTMGLMapViewManager.m +625 -0
  265. package/ios/RCTMGL/RCTMGLNativeUserLocation.h +18 -0
  266. package/ios/RCTMGL/RCTMGLNativeUserLocation.m +49 -0
  267. package/ios/RCTMGL/RCTMGLNativeUserLocationManager.h +5 -0
  268. package/ios/RCTMGL/RCTMGLNativeUserLocationManager.m +25 -0
  269. package/ios/RCTMGL/RCTMGLPointAnnotation.h +41 -0
  270. package/ios/RCTMGL/RCTMGLPointAnnotation.m +251 -0
  271. package/ios/RCTMGL/RCTMGLPointAnnotationManager.h +13 -0
  272. package/ios/RCTMGL/RCTMGLPointAnnotationManager.m +36 -0
  273. package/ios/RCTMGL/RCTMGLRasterLayer.h +14 -0
  274. package/ios/RCTMGL/RCTMGLRasterLayer.m +30 -0
  275. package/ios/RCTMGL/RCTMGLRasterLayerManager.h +13 -0
  276. package/ios/RCTMGL/RCTMGLRasterLayerManager.m +35 -0
  277. package/ios/RCTMGL/RCTMGLRasterSource.h +16 -0
  278. package/ios/RCTMGL/RCTMGLRasterSource.m +35 -0
  279. package/ios/RCTMGL/RCTMGLRasterSourceManager.h +13 -0
  280. package/ios/RCTMGL/RCTMGLRasterSourceManager.m +32 -0
  281. package/ios/RCTMGL/RCTMGLShapeSource.h +52 -0
  282. package/ios/RCTMGL/RCTMGLShapeSource.m +180 -0
  283. package/ios/RCTMGL/RCTMGLShapeSourceManager.h +14 -0
  284. package/ios/RCTMGL/RCTMGLShapeSourceManager.m +205 -0
  285. package/ios/RCTMGL/RCTMGLSource.h +35 -0
  286. package/ios/RCTMGL/RCTMGLSource.m +143 -0
  287. package/ios/RCTMGL/RCTMGLStyle.h +219 -0
  288. package/ios/RCTMGL/RCTMGLStyle.m +1654 -0
  289. package/ios/RCTMGL/RCTMGLStyleValue.h +27 -0
  290. package/ios/RCTMGL/RCTMGLStyleValue.m +167 -0
  291. package/ios/RCTMGL/RCTMGLSymbolLayer.h +19 -0
  292. package/ios/RCTMGL/RCTMGLSymbolLayer.m +121 -0
  293. package/ios/RCTMGL/RCTMGLSymbolLayerManager.h +13 -0
  294. package/ios/RCTMGL/RCTMGLSymbolLayerManager.m +40 -0
  295. package/ios/RCTMGL/RCTMGLTileSource.h +22 -0
  296. package/ios/RCTMGL/RCTMGLTileSource.m +31 -0
  297. package/ios/RCTMGL/RCTMGLUserLocation.h +15 -0
  298. package/ios/RCTMGL/RCTMGLUserLocation.m +38 -0
  299. package/ios/RCTMGL/RCTMGLUtils.h +31 -0
  300. package/ios/RCTMGL/RCTMGLUtils.m +218 -0
  301. package/ios/RCTMGL/RCTMGLVectorLayer.h +15 -0
  302. package/ios/RCTMGL/RCTMGLVectorLayer.m +59 -0
  303. package/ios/RCTMGL/RCTMGLVectorSource.h +16 -0
  304. package/ios/RCTMGL/RCTMGLVectorSource.m +28 -0
  305. package/ios/RCTMGL/RCTMGLVectorSourceManager.h +14 -0
  306. package/ios/RCTMGL/RCTMGLVectorSourceManager.m +79 -0
  307. package/ios/RCTMGL/RNMBImageUtils.h +17 -0
  308. package/ios/RCTMGL/RNMBImageUtils.m +31 -0
  309. package/ios/RCTMGL/ViewManager.h +16 -0
  310. package/ios/RCTMGL/ViewManager.m +63 -0
  311. package/ios/RCTMGL/index.d.ts +1164 -0
  312. package/ios/RCTMGL.xcodeproj/project.pbxproj +774 -0
  313. package/ios/install.md +44 -0
  314. package/javascript/components/AbstractLayer.js +75 -0
  315. package/javascript/components/AbstractSource.js +15 -0
  316. package/javascript/components/BackgroundLayer.js +97 -0
  317. package/javascript/components/Callout.js +139 -0
  318. package/javascript/components/Camera.js +665 -0
  319. package/javascript/components/CircleLayer.js +101 -0
  320. package/javascript/components/FillExtrusionLayer.js +98 -0
  321. package/javascript/components/FillLayer.js +94 -0
  322. package/javascript/components/HeadingIndicator.js +31 -0
  323. package/javascript/components/HeatmapLayer.js +99 -0
  324. package/javascript/components/ImageSource.js +82 -0
  325. package/javascript/components/Images.js +119 -0
  326. package/javascript/components/Light.js +47 -0
  327. package/javascript/components/LineLayer.js +94 -0
  328. package/javascript/components/MapView.js +817 -0
  329. package/javascript/components/MarkerView.js +87 -0
  330. package/javascript/components/NativeBridgeComponent.js +86 -0
  331. package/javascript/components/NativeUserLocation.js +41 -0
  332. package/javascript/components/PointAnnotation.js +216 -0
  333. package/javascript/components/RasterLayer.js +95 -0
  334. package/javascript/components/RasterSource.js +124 -0
  335. package/javascript/components/ShapeSource.js +357 -0
  336. package/javascript/components/Style.js +264 -0
  337. package/javascript/components/SymbolLayer.js +120 -0
  338. package/javascript/components/UserLocation.js +273 -0
  339. package/javascript/components/VectorSource.js +200 -0
  340. package/javascript/components/annotations/Annotation.js +122 -0
  341. package/javascript/index.js +153 -0
  342. package/javascript/modules/location/locationManager.js +101 -0
  343. package/javascript/modules/offline/OfflineCreatePackOptions.js +46 -0
  344. package/javascript/modules/offline/OfflinePack.js +40 -0
  345. package/javascript/modules/offline/offlineManager.js +378 -0
  346. package/javascript/modules/snapshot/SnapshotOptions.js +67 -0
  347. package/javascript/modules/snapshot/snapshotManager.js +62 -0
  348. package/javascript/utils/BridgeValue.js +81 -0
  349. package/javascript/utils/Logger.js +114 -0
  350. package/javascript/utils/animated/Animated.js +39 -0
  351. package/javascript/utils/animated/AnimatedCoordinatesArray.js +191 -0
  352. package/javascript/utils/animated/AnimatedExtractCoordinateFromArray.js +43 -0
  353. package/javascript/utils/animated/AnimatedPoint.js +126 -0
  354. package/javascript/utils/animated/AnimatedRouteCoordinatesArray.js +124 -0
  355. package/javascript/utils/animated/AnimatedShape.js +72 -0
  356. package/javascript/utils/deprecation.js +25 -0
  357. package/javascript/utils/filterUtils.js +7 -0
  358. package/javascript/utils/geoUtils.js +73 -0
  359. package/javascript/utils/index.js +113 -0
  360. package/javascript/utils/styleMap.js +1901 -0
  361. package/maplibre-react-native.podspec +79 -0
  362. package/package.json +120 -0
  363. package/plugin/build/withMapbox.d.ts +12 -0
  364. package/plugin/build/withMapbox.js +119 -0
  365. package/plugin/install.md +32 -0
  366. package/react-native.config.js +10 -0
  367. package/scripts/autogenHelpers/DocJSONBuilder.js +458 -0
  368. package/scripts/autogenHelpers/JSDocNodeTree.js +131 -0
  369. package/scripts/autogenHelpers/MarkdownBuilder.js +29 -0
  370. package/scripts/autogenHelpers/globals.js +507 -0
  371. package/scripts/autogenerate.js +374 -0
  372. package/scripts/download-style-spec.sh +15 -0
  373. package/scripts/templates/RCTMGLStyle.h.ejs +33 -0
  374. package/scripts/templates/RCTMGLStyle.m.ejs +97 -0
  375. package/scripts/templates/RCTMGLStyleFactory.java.ejs +107 -0
  376. package/scripts/templates/component.md.ejs +122 -0
  377. package/scripts/templates/index.d.ts.ejs +56 -0
  378. package/scripts/templates/styleMap.js.ejs +115 -0
  379. package/setup-jest.js +121 -0
  380. package/style-spec/v8.json +5798 -0
  381. package/tsconfig.json +65 -0
@@ -0,0 +1,218 @@
1
+ //
2
+ // RCTConvert+Mapbox.m
3
+ // RCTMGL
4
+ //
5
+ // Created by Nick Italiano on 8/23/17.
6
+ // Copyright © 2017 Mapbox Inc. All rights reserved.
7
+ //
8
+
9
+ #import "RCTMGLUtils.h"
10
+ #import "RCTMGLImageQueue.h"
11
+
12
+ @import Mapbox;
13
+
14
+ @implementation RCTMGLUtils
15
+
16
+ static double const MS_TO_S = 0.001;
17
+
18
+ + (CLLocationCoordinate2D)fromFeature:(NSString*)jsonStr
19
+ {
20
+ NSData* data = [jsonStr dataUsingEncoding:NSUTF8StringEncoding];
21
+ MGLPointFeature *feature = (MGLPointFeature*)[MGLShape shapeWithData:data encoding:NSUTF8StringEncoding error:nil];
22
+ return feature.coordinate;
23
+ }
24
+
25
+ + (UIEdgeInsets)toUIEdgeInsets:(NSArray<NSNumber *> *)arr
26
+ {
27
+ return UIEdgeInsetsMake([arr[0] floatValue], [arr[1] floatValue], [arr[2] floatValue], [arr[3] floatValue]);
28
+ }
29
+
30
+ + (MGLShape*)shapeFromGeoJSON:(NSString*)jsonStr
31
+ {
32
+ NSData* data = [jsonStr dataUsingEncoding:NSUTF8StringEncoding];
33
+ NSError* error = nil;
34
+ MGLShape* result = [MGLShape shapeWithData:data encoding:NSUTF8StringEncoding error:&error];
35
+ if (error != nil) {
36
+ RCTLogWarn(@"Failed to convert data to shape error:%@ src:%@", error, jsonStr);
37
+ }
38
+ return result;
39
+ }
40
+
41
+ + (NSString *)hashURI:(NSString *)uri
42
+ {
43
+ if (uri == nil) {
44
+ return @"-1";
45
+ }
46
+ NSUInteger hash = [uri hash];
47
+ return [NSString stringWithFormat:@"%lu", (unsigned long)hash];
48
+ }
49
+
50
+ + (MGLCoordinateBounds)fromFeatureCollection:(NSString*)jsonStr
51
+ {
52
+ NSData* data = [jsonStr dataUsingEncoding:NSUTF8StringEncoding];
53
+ MGLShapeCollectionFeature *featureCollection = (MGLShapeCollectionFeature*)[MGLShapeCollectionFeature shapeWithData:data encoding:NSUTF8StringEncoding error:nil];
54
+
55
+ CLLocationCoordinate2D ne = featureCollection.shapes[0].coordinate;
56
+ CLLocationCoordinate2D sw = featureCollection.shapes[1].coordinate;
57
+
58
+ return MGLCoordinateBoundsMake(sw, ne);
59
+ }
60
+
61
+ + (NSArray<NSNumber *> *)fromCoordinateBounds:(MGLCoordinateBounds)bounds
62
+ {
63
+ return @[
64
+ @[@(bounds.ne.longitude), @(bounds.ne.latitude)],
65
+ @[@(bounds.sw.longitude), @(bounds.sw.latitude)]
66
+ ];
67
+ }
68
+
69
+ + (NSTimeInterval)fromMS:(NSNumber *)number
70
+ {
71
+ return [number doubleValue] * MS_TO_S;
72
+ }
73
+
74
+ + (NSNumber*)clamp:(NSNumber *)value min:(NSNumber *)min max:(NSNumber *)max
75
+ {
76
+ if ([value doubleValue] < [min doubleValue]) return min;
77
+ if ([value doubleValue] > [max doubleValue]) return max;
78
+ return value;
79
+ }
80
+
81
+ + (UIColor*)toColor:(id)value
82
+ {
83
+ return [RCTConvert UIColor:value];
84
+ }
85
+
86
+ + (CGVector)toCGVector:(NSArray<NSNumber *> *)arr
87
+ {
88
+ return CGVectorMake([arr[0] floatValue], [arr[1] floatValue]);
89
+ }
90
+
91
+ + (void)fetchImage:(RCTBridge*)bridge url:(NSString *)url scale:(double)scale callback:(RCTImageLoaderCompletionBlock)callback
92
+ {
93
+ [RCTMGLImageQueue.sharedInstance addImage:url scale:scale bridge:bridge completionHandler:callback];
94
+ }
95
+
96
+ + (void)fetchImages:(RCTBridge *)bridge style:(MGLStyle *)style objects:(NSDictionary<NSString *, id>*)objects forceUpdate:(BOOL)forceUpdate callback:(void (^)(void))callback
97
+ {
98
+ if (objects == nil) {
99
+ callback();
100
+ return;
101
+ }
102
+
103
+ NSArray<NSString *> *imageNames = objects.allKeys;
104
+ if (imageNames.count == 0) {
105
+ callback();
106
+ return;
107
+ }
108
+
109
+ __block NSUInteger imagesLeftToLoad = imageNames.count;
110
+ __weak MGLStyle *weakStyle = style;
111
+
112
+ void (^imageLoadedBlock)(void) = ^{
113
+ imagesLeftToLoad--;
114
+
115
+ if (imagesLeftToLoad == 0) {
116
+ callback();
117
+ }
118
+ };
119
+
120
+ for (NSString *imageName in imageNames) {
121
+ UIImage *foundImage = forceUpdate ? nil : [style imageForName:imageName];
122
+
123
+ if (forceUpdate || foundImage == nil) {
124
+ NSDictionary* image = objects[imageName];
125
+ BOOL hasScale = [image isKindOfClass:[NSDictionary class]] && ([image objectForKey:@"scale"] != nil);
126
+ double scale = hasScale ? [[image objectForKey:@"scale"] doubleValue] : 1.0;
127
+ [RCTMGLImageQueue.sharedInstance addImage:objects[imageName] scale:scale bridge:bridge completionHandler:^(NSError *error, UIImage *image) {
128
+ if (!image) {
129
+ RCTLogWarn(@"Failed to fetch image: %@ error:%@", imageName, error);
130
+ }
131
+ else {
132
+ dispatch_async(dispatch_get_main_queue(), ^{
133
+ [weakStyle setImage:image forName:imageName];
134
+ imageLoadedBlock();
135
+ });
136
+ }
137
+ }];
138
+ } else {
139
+ imageLoadedBlock();
140
+ }
141
+ }
142
+ }
143
+
144
+ + (NSString*)getStyleJsonTempDirectory
145
+ {
146
+ static NSString *styleJsonTempDirectory;
147
+ if (!styleJsonTempDirectory) {
148
+ styleJsonTempDirectory = [NSTemporaryDirectory() stringByAppendingPathComponent:@"RCTMGLStyleJSON"];
149
+ }
150
+ return styleJsonTempDirectory;
151
+ }
152
+
153
+ /**
154
+ * Clears cached style-json entries from previous app runs. Can be safely called multiple times as it will
155
+ * only perform the action once per app run.
156
+ *
157
+ * @see styleURLFromStyleJSON:
158
+ */
159
+ + (void)cleanCustomStyleJSONCacheIfNeeded
160
+ {
161
+ NSFileManager *fileManager = [NSFileManager defaultManager];
162
+ NSString *styleJsonTempDirectory = [RCTMGLUtils getStyleJsonTempDirectory];
163
+
164
+ static dispatch_once_t onceToken;
165
+ dispatch_once(&onceToken, ^{
166
+ if ([fileManager fileExistsAtPath:styleJsonTempDirectory]) {
167
+ [fileManager removeItemAtPath:styleJsonTempDirectory error:NULL];
168
+ }
169
+ });
170
+ }
171
+
172
+ /**
173
+ * Provides a way to convert raw style-json into a file so it can be directly referenced / used as styleURL.
174
+ * It's a crude / alternative approach to support Android's API: Style.Builder.fromJson().
175
+ */
176
+ + (NSURL*)styleURLFromStyleJSON:(NSString *)styleJSON
177
+ {
178
+ [RCTMGLUtils cleanCustomStyleJSONCacheIfNeeded];
179
+
180
+ NSFileManager *fileManager = [NSFileManager defaultManager];
181
+ NSString *styleJsonTempDirectory = [RCTMGLUtils getStyleJsonTempDirectory];
182
+
183
+ // attempt to create the temporary directory
184
+ if (![fileManager fileExistsAtPath:styleJsonTempDirectory]) {
185
+ NSError *error;
186
+ [fileManager createDirectoryAtPath:styleJsonTempDirectory
187
+ withIntermediateDirectories:YES
188
+ attributes:nil
189
+ error:&error];
190
+ if (error) {
191
+ RCTLogError(@"Failed to create temporary directory '%@' for storing style-json. Error: %@", styleJsonTempDirectory, error);
192
+ return nil;
193
+ }
194
+ }
195
+
196
+ // Determine filename based on the md5 hash of the style-json.
197
+ // This way, the written file can also act as a cached entry in case
198
+ // the same style-json is used again.
199
+ NSString *hashedFilename = [RCTMD5Hash(styleJSON) stringByAppendingPathExtension:@"json"];
200
+
201
+ // Construct temporary file path (tempdir + md5 hash for filename)
202
+ NSString *styleJsonTempPath = [styleJsonTempDirectory stringByAppendingPathComponent:hashedFilename];
203
+ NSURL* styleJsonTempURL = [NSURL fileURLWithPath:styleJsonTempPath isDirectory:false];
204
+
205
+ // Write style-json to temporary file in case it doesn't already exist
206
+ if (![fileManager fileExistsAtPath:styleJsonTempPath isDirectory:false]) {
207
+ NSError *error;
208
+ [styleJSON writeToURL:styleJsonTempURL atomically:YES encoding:NSUTF8StringEncoding error:&error];
209
+ if (error) {
210
+ RCTLogError(@"Failed to write style-json to temporary file '%@'. Error: %@", styleJsonTempURL, error);
211
+ return nil;
212
+ }
213
+ }
214
+
215
+ return styleJsonTempURL;
216
+ }
217
+
218
+ @end
@@ -0,0 +1,15 @@
1
+ //
2
+ // RCTMGLCircleLayer.h
3
+ // RCTMGL
4
+ //
5
+ // Created by Nick Italiano on 9/18/17.
6
+ // Copyright © 2017 Mapbox Inc. All rights reserved.
7
+ //
8
+
9
+ #import "RCTMGLLayer.h"
10
+
11
+ @interface RCTMGLVectorLayer : RCTMGLLayer
12
+
13
+ @property (nonatomic, copy) NSString *sourceLayerID;
14
+
15
+ @end
@@ -0,0 +1,59 @@
1
+ //
2
+ // RCTMGLCircleLayer.m
3
+ // RCTMGL
4
+ //
5
+ // Created by Nick Italiano on 9/18/17.
6
+ // Copyright © 2017 Mapbox Inc. All rights reserved.
7
+ //
8
+
9
+ #import "RCTMGLVectorLayer.h"
10
+ #import "RCTMGLStyle.h"
11
+ #import "FilterParser.h"
12
+ #import <React/RCTLog.h>
13
+
14
+ @implementation RCTMGLVectorLayer
15
+
16
+
17
+ - (NSPredicate*)buildFilters
18
+ {
19
+ return self.filter ? [FilterParser parse:self.filter] : nil;
20
+ }
21
+
22
+ - (void)updateFilter:(NSPredicate *)predicate
23
+ {
24
+ @try {
25
+ ((MGLVectorStyleLayer *) self.styleLayer).predicate = predicate;
26
+ }
27
+ @catch (NSException* exception) {
28
+ RCTLogError(@"Invalid predicate: %@ on layer %@ - %@ reason: %@", predicate, self, exception.name, exception.reason);
29
+ }
30
+ }
31
+
32
+ - (void)setSourceLayerID:(NSString *)sourceLayerID
33
+ {
34
+ _sourceLayerID = sourceLayerID;
35
+
36
+ if (self.styleLayer != nil) {
37
+ ((MGLVectorStyleLayer*) self.styleLayer).sourceLayerIdentifier = _sourceLayerID;
38
+ }
39
+ }
40
+
41
+ - (void)addedToMap
42
+ {
43
+ NSPredicate *filter = [self buildFilters];
44
+ if (filter != nil) {
45
+ [self updateFilter:filter];
46
+ }
47
+ }
48
+
49
+ - (void)setFilter:(NSArray*)filter
50
+ {
51
+ [super setFilter: filter];
52
+
53
+ if (self.styleLayer != nil) {
54
+ NSPredicate *predicate = [self buildFilters];
55
+ [self updateFilter:predicate];
56
+ }
57
+ }
58
+
59
+ @end
@@ -0,0 +1,16 @@
1
+ //
2
+ // RCTMGLVectorSource.h
3
+ // RCTMGL
4
+ //
5
+ // Created by Nick Italiano on 9/8/17.
6
+ // Copyright © 2017 Mapbox Inc. All rights reserved.
7
+ //
8
+
9
+ #import "RCTMGLTileSource.h"
10
+ @import Mapbox;
11
+
12
+ @interface RCTMGLVectorSource : RCTMGLTileSource
13
+
14
+ - (nonnull NSArray<id <MGLFeature>> *)featuresInSourceLayersWithIdentifiers:(nonnull NSSet<NSString *> *)sourceLayerIdentifiers predicate:(nullable NSPredicate *)predicate;
15
+
16
+ @end
@@ -0,0 +1,28 @@
1
+ //
2
+ // RCTMGLVectorSource.m
3
+ // RCTMGL
4
+ //
5
+ // Created by Nick Italiano on 9/8/17.
6
+ // Copyright © 2017 Mapbox Inc. All rights reserved.
7
+ //
8
+
9
+ #import "RCTMGLVectorSource.h"
10
+
11
+ @implementation RCTMGLVectorSource
12
+
13
+ - (nullable MGLSource*)makeSource
14
+ {
15
+ if (self.url != nil) {
16
+ return [[MGLVectorTileSource alloc] initWithIdentifier:self.id configurationURL:[NSURL URLWithString:self.url]];
17
+ }
18
+ return [[MGLVectorTileSource alloc] initWithIdentifier:self.id tileURLTemplates:self.tileUrlTemplates options:[self getOptions]];
19
+ }
20
+
21
+ - (nonnull NSArray<id <MGLFeature>> *)featuresInSourceLayersWithIdentifiers:(nonnull NSSet<NSString *> *)sourceLayerIdentifiers predicate:(nullable NSPredicate *)predicate
22
+ {
23
+ MGLVectorTileSource* vectorSource = (MGLVectorTileSource*)self.source;
24
+
25
+ return [vectorSource featuresInSourceLayersWithIdentifiers:sourceLayerIdentifiers predicate: predicate];
26
+ }
27
+
28
+ @end
@@ -0,0 +1,14 @@
1
+ //
2
+ // RCTMGLVectorSourceManager.h
3
+ // RCTMGL
4
+ //
5
+ // Created by Nick Italiano on 9/8/17.
6
+ // Copyright © 2017 Mapbox Inc. All rights reserved.
7
+ //
8
+
9
+ #import "ViewManager.h"
10
+ #import <React/RCTBridgeModule.h>
11
+
12
+ @interface RCTMGLVectorSourceManager : ViewManager<RCTBridgeModule>
13
+
14
+ @end
@@ -0,0 +1,79 @@
1
+ //
2
+ // RCTMGLVectorSourceManager.m
3
+ // RCTMGL
4
+ //
5
+ // Created by Nick Italiano on 9/8/17.
6
+ // Copyright © 2017 Mapbox Inc. All rights reserved.
7
+ //
8
+
9
+ #import <React/RCTUIManager.h>
10
+
11
+ #import "RCTMGLVectorSourceManager.h"
12
+ #import "RCTMGLVectorSource.h"
13
+
14
+ #import "FilterParser.h"
15
+
16
+ @implementation RCTMGLVectorSourceManager
17
+
18
+ RCT_EXPORT_MODULE(RCTMGLVectorSource);
19
+
20
+ RCT_EXPORT_VIEW_PROPERTY(id, NSString);
21
+
22
+ - (UIView*)view
23
+ {
24
+ return [RCTMGLVectorSource new];
25
+ }
26
+
27
+ RCT_EXPORT_VIEW_PROPERTY(url, NSString)
28
+ RCT_EXPORT_VIEW_PROPERTY(tileUrlTemplates, NSArray)
29
+ RCT_EXPORT_VIEW_PROPERTY(attribution, NSString)
30
+
31
+ RCT_EXPORT_VIEW_PROPERTY(minZoomLevel, NSNumber)
32
+ RCT_EXPORT_VIEW_PROPERTY(maxZoomLevel, NSNumber)
33
+
34
+ RCT_EXPORT_VIEW_PROPERTY(tms, BOOL)
35
+ RCT_EXPORT_VIEW_PROPERTY(hasPressListener, BOOL)
36
+ RCT_REMAP_VIEW_PROPERTY(onMapboxVectorSourcePress, onPress, RCTBubblingEventBlock)
37
+ RCT_EXPORT_VIEW_PROPERTY(hitbox, NSDictionary)
38
+
39
+
40
+ RCT_EXPORT_METHOD(features:(nonnull NSNumber*)reactTag
41
+ withLayerIDs:(NSArray<NSString*>*)layerIDs
42
+ withFilter:(NSArray<NSDictionary<NSString *, id> *> *)filter
43
+ resolver:(RCTPromiseResolveBlock)resolve
44
+ rejecter:(RCTPromiseRejectBlock)reject)
45
+ {
46
+ [self.bridge.uiManager addUIBlock:^(__unused RCTUIManager *manager, NSDictionary<NSNumber*, UIView*> *viewRegistry) {
47
+ RCTMGLVectorSource* vectorSource = viewRegistry[reactTag];
48
+
49
+ if (![vectorSource isKindOfClass:[RCTMGLVectorSource class]]) {
50
+ RCTLogError(@"Invalid react tag, could not find RCTMGLMapView");
51
+ return;
52
+ }
53
+
54
+ NSSet* layerIDSet = nil;
55
+ if (layerIDs != nil && layerIDs.count > 0) {
56
+ layerIDSet = [NSSet setWithArray:layerIDs];
57
+ }
58
+ NSPredicate* predicate = [FilterParser parse:filter];
59
+ NSArray<id<MGLFeature>> *shapes = [vectorSource
60
+ featuresInSourceLayersWithIdentifiers: layerIDSet
61
+ predicate: predicate];
62
+
63
+ NSMutableArray<NSDictionary*> *features = [[NSMutableArray alloc] initWithCapacity:shapes.count];
64
+ for (int i = 0; i < shapes.count; i++) {
65
+ [features addObject:shapes[i].geoJSONDictionary];
66
+ }
67
+
68
+ resolve(@{
69
+ @"data": @{ @"type": @"FeatureCollection", @"features": features }
70
+ });
71
+ }];
72
+ }
73
+
74
+ RCT_EXPORT_METHOD(addEvent:(NSString *)name location:(NSString *)location)
75
+ {
76
+ RCTLogInfo(@"Pretending to create an event %@ at %@", name, location);
77
+ }
78
+
79
+ @end
@@ -0,0 +1,17 @@
1
+ //
2
+ // RNMBImageUtils.h
3
+ // RCTMGL
4
+ //
5
+ // Created by Nick Italiano on 1/18/18.
6
+ // Copyright © 2018 Mapbox Inc. All rights reserved.
7
+ //
8
+
9
+ #import <UIKit/UIKit.h>
10
+ #import <Foundation/Foundation.h>
11
+
12
+ @interface RNMBImageUtils : NSObject
13
+
14
+ +(NSString *)createTempFile:(UIImage *)image;
15
+ +(NSString *)createBase64:(UIImage *)image;
16
+
17
+ @end
@@ -0,0 +1,31 @@
1
+ //
2
+ // RNMBImageUtils.m
3
+ // RCTMGL
4
+ //
5
+ // Created by Nick Italiano on 1/18/18.
6
+ // Copyright © 2018 Mapbox Inc. All rights reserved.
7
+ //
8
+
9
+ #import "RNMBImageUtils.h"
10
+
11
+ @implementation RNMBImageUtils
12
+
13
+ + (NSString *)createTempFile:(UIImage *)image
14
+ {
15
+ NSString *fileID = [[NSUUID UUID] UUIDString];
16
+ NSString *pathComponent = [NSString stringWithFormat:@"Documents/rctmgl-snapshot-%@.%@", fileID, @"png"];
17
+ NSString *filePath = [NSHomeDirectory() stringByAppendingPathComponent: pathComponent];
18
+
19
+ NSData *data = UIImagePNGRepresentation(image);
20
+ [data writeToFile:filePath atomically:YES];
21
+
22
+ return filePath;
23
+ }
24
+
25
+ + (NSString *)createBase64:(UIImage *)image
26
+ {
27
+ NSData *data = UIImagePNGRepresentation(image);
28
+ return [NSString stringWithFormat:@"%@%@", @"data:image/png;base64,", [data base64EncodedStringWithOptions:NSDataBase64EncodingEndLineWithCarriageReturn]];
29
+ }
30
+
31
+ @end
@@ -0,0 +1,16 @@
1
+ //
2
+ // ViewManager.h
3
+ // RCTMGL
4
+ //
5
+ // Created by Nick Italiano on 8/31/17.
6
+ // Copyright © 2017 Mapbox Inc. All rights reserved.
7
+ //
8
+
9
+ #import <React/RCTViewManager.h>
10
+ #import "RCTMGLEvent.h"
11
+
12
+ @interface ViewManager : RCTViewManager
13
+
14
+ -(void)fireEvent:(RCTMGLEvent*)event withCallback:(RCTBubblingEventBlock)callback;
15
+
16
+ @end
@@ -0,0 +1,63 @@
1
+ //
2
+ // ViewManager.m
3
+ // RCTMGL
4
+ //
5
+ // Created by Nick Italiano on 8/31/17.
6
+ // Copyright © 2017 Mapbox Inc. All rights reserved.
7
+ //
8
+
9
+ #import "ViewManager.h"
10
+
11
+ @implementation ViewManager
12
+ {
13
+ NSMutableDictionary<NSString*, NSNumber*> *eventTimestampCache;
14
+ }
15
+
16
+ + (BOOL)requiresMainQueueSetup
17
+ {
18
+ return YES;
19
+ }
20
+
21
+ + (NSString *)moduleName
22
+ {
23
+ // Hack, to prevent JS from throwing a useless warning
24
+ return @"RCTViewManager";
25
+ }
26
+
27
+ static NSTimeInterval EVENT_THROTTLE_S = 0.01;
28
+
29
+ - (instancetype)init
30
+ {
31
+ if (self = [super init]) {
32
+ eventTimestampCache = [[NSMutableDictionary alloc] init];
33
+ }
34
+
35
+ return self;
36
+ }
37
+
38
+ - (void)fireEvent:(RCTMGLEvent*)event withCallback:(RCTBubblingEventBlock)callback
39
+ {
40
+ if (![self _shouldDropEvent:event]) {
41
+ NSString *cacheKey = [self _getCacheKey:event];
42
+ NSTimeInterval now = [[NSDate date] timeIntervalSince1970];
43
+ [eventTimestampCache setObject:[NSNumber numberWithDouble:now] forKey:cacheKey];
44
+
45
+ if (callback != nil) {
46
+ callback([event toJSON]);
47
+ }
48
+ }
49
+ }
50
+
51
+ - (BOOL)_shouldDropEvent:(RCTMGLEvent *)event
52
+ {
53
+ NSString *cacheKey = [self _getCacheKey:event];
54
+ NSNumber *lastTimestamp = [eventTimestampCache objectForKey:cacheKey];
55
+ return lastTimestamp != nil && (event.timestamp - [lastTimestamp doubleValue]) <= EVENT_THROTTLE_S;
56
+ }
57
+
58
+ - (NSString*)_getCacheKey:(RCTMGLEvent*)event
59
+ {
60
+ return event.type;
61
+ }
62
+
63
+ @end