@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,597 @@
1
+ package com.mapbox.rctmgl.modules;
2
+
3
+ import android.os.Handler;
4
+ import android.os.Looper;
5
+ import android.util.Log;
6
+
7
+ import com.facebook.react.bridge.Arguments;
8
+ import com.facebook.react.bridge.Promise;
9
+ import com.facebook.react.bridge.ReactApplicationContext;
10
+ import com.facebook.react.bridge.ReactContextBaseJavaModule;
11
+ import com.facebook.react.bridge.ReactMethod;
12
+ import com.facebook.react.bridge.ReadableMap;
13
+ import com.facebook.react.bridge.WritableArray;
14
+ import com.facebook.react.bridge.WritableMap;
15
+ import com.facebook.react.bridge.WritableNativeMap;
16
+ import com.facebook.react.module.annotations.ReactModule;
17
+ import com.facebook.react.modules.core.RCTNativeAppEventEmitter;
18
+ import com.mapbox.geojson.FeatureCollection;
19
+ // import com.mapbox.mapboxsdk.constants.Style;
20
+ import com.mapbox.mapboxsdk.geometry.LatLngBounds;
21
+ import com.mapbox.mapboxsdk.offline.OfflineManager;
22
+ import com.mapbox.mapboxsdk.offline.OfflineRegion;
23
+ import com.mapbox.mapboxsdk.offline.OfflineRegionDefinition;
24
+ import com.mapbox.mapboxsdk.offline.OfflineRegionError;
25
+ import com.mapbox.mapboxsdk.offline.OfflineRegionStatus;
26
+ import com.mapbox.mapboxsdk.offline.OfflineTilePyramidRegionDefinition;
27
+ import com.mapbox.mapboxsdk.storage.FileSource;
28
+ import com.mapbox.rctmgl.events.IEvent;
29
+ import com.mapbox.rctmgl.events.OfflineEvent;
30
+ import com.mapbox.rctmgl.events.constants.EventTypes;
31
+ import com.mapbox.rctmgl.utils.ConvertUtils;
32
+ import com.mapbox.rctmgl.utils.GeoJSONUtils;
33
+ import com.mapbox.mapboxsdk.maps.Style;
34
+
35
+ import org.json.JSONException;
36
+ import org.json.JSONObject;
37
+
38
+ import java.io.File;
39
+ import java.io.UnsupportedEncodingException;
40
+ import java.util.Locale;
41
+
42
+ /**
43
+ * Created by nickitaliano on 10/24/17.
44
+ */
45
+
46
+ @ReactModule(name = RCTMGLOfflineModule.REACT_CLASS)
47
+ public class RCTMGLOfflineModule extends ReactContextBaseJavaModule {
48
+ public static final String REACT_CLASS = "RCTMGLOfflineModule";
49
+
50
+ public static final int INACTIVE_REGION_DOWNLOAD_STATE = OfflineRegion.STATE_INACTIVE;
51
+ public static final int ACTIVE_REGION_DOWNLOAD_STATE = OfflineRegion.STATE_ACTIVE;
52
+ public static final int COMPLETE_REGION_DOWNLOAD_STATE = 2;
53
+
54
+ public static final String OFFLINE_ERROR = "MapboxOfflineRegionError";
55
+ public static final String OFFLINE_PROGRESS = "MapboxOfflineRegionProgress";
56
+
57
+ public static final String DEFAULT_STYLE_URL = "https://demotiles.maplibre.org/style.json";
58
+ public static final Double DEFAULT_MIN_ZOOM_LEVEL = 10.0;
59
+ public static final Double DEFAULT_MAX_ZOOM_LEVEL = 20.0;
60
+
61
+ private ReactApplicationContext mReactContext;
62
+ private Double mProgressEventThrottle = 300.0;
63
+
64
+ public RCTMGLOfflineModule(ReactApplicationContext reactApplicationContext) {
65
+ super(reactApplicationContext);
66
+ mReactContext = reactApplicationContext;
67
+ }
68
+
69
+ @Override
70
+ public String getName () {
71
+ return REACT_CLASS;
72
+ }
73
+
74
+ @ReactMethod
75
+ public void addListener(String eventName) {
76
+ // Set up any upstream listeners or background tasks as necessary
77
+ }
78
+
79
+ @ReactMethod
80
+ public void removeListeners(Integer count) {
81
+ // Remove upstream listeners, stop unnecessary background tasks
82
+ }
83
+
84
+ @ReactMethod
85
+ public void createPack(ReadableMap options, final Promise promise) {
86
+ final String name = ConvertUtils.getString("name", options, "");
87
+ final OfflineManager offlineManager = OfflineManager.getInstance(mReactContext);
88
+ LatLngBounds latLngBounds = getBoundsFromOptions(options);
89
+
90
+ OfflineRegionDefinition definition = makeDefinition(latLngBounds, options);
91
+ byte[] metadataBytes = getMetadataBytes(ConvertUtils.getString("metadata", options, ""));
92
+
93
+ OfflineManager.CreateOfflineRegionCallback callback = new OfflineManager.CreateOfflineRegionCallback() {
94
+ @Override
95
+ public void onCreate(OfflineRegion offlineRegion) {
96
+ promise.resolve(fromOfflineRegion(offlineRegion));
97
+ setOfflineRegionObserver(name, offlineRegion);
98
+ }
99
+
100
+ @Override
101
+ public void onError(String error) {
102
+ sendEvent(makeErrorEvent(name, EventTypes.OFFLINE_ERROR, error));
103
+ }
104
+ };
105
+
106
+ offlineManager.createOfflineRegion(definition, metadataBytes, callback);
107
+ }
108
+
109
+ @ReactMethod
110
+ public void getPacks(final Promise promise) {
111
+ activateFileSource();
112
+
113
+ final OfflineManager offlineManager = OfflineManager.getInstance(mReactContext);
114
+
115
+ offlineManager.listOfflineRegions(new OfflineManager.ListOfflineRegionsCallback() {
116
+ @Override
117
+ public void onList(OfflineRegion[] offlineRegions) {
118
+ WritableArray payload = Arguments.createArray();
119
+
120
+ for (OfflineRegion region : offlineRegions) {
121
+ payload.pushMap(fromOfflineRegion(region));
122
+ }
123
+
124
+ promise.resolve(payload);
125
+ }
126
+
127
+ @Override
128
+ public void onError(String error) {
129
+ promise.reject("getRegions", error);
130
+ }
131
+ });
132
+ }
133
+
134
+ @ReactMethod
135
+ public void invalidateAmbientCache(final Promise promise) {
136
+ activateFileSource();
137
+ final OfflineManager offlineManager = OfflineManager.getInstance(mReactContext);
138
+ offlineManager.invalidateAmbientCache(new OfflineManager.FileSourceCallback() {
139
+ @Override
140
+ public void onSuccess() {
141
+ promise.resolve(null);
142
+ }
143
+
144
+ @Override
145
+ public void onError(String error) {
146
+ promise.reject("invalidateAmbientCache", error);
147
+ }
148
+ });
149
+ }
150
+
151
+ @ReactMethod
152
+ public void clearAmbientCache(final Promise promise) {
153
+ activateFileSource();
154
+
155
+ final OfflineManager offlineManager = OfflineManager.getInstance(mReactContext);
156
+
157
+ offlineManager.clearAmbientCache(new OfflineManager.FileSourceCallback() {
158
+ @Override
159
+ public void onSuccess() {
160
+ promise.resolve(null);
161
+ }
162
+
163
+ @Override
164
+ public void onError(String error) {
165
+ promise.reject("clearAmbientCache", error);
166
+ }
167
+ });
168
+ }
169
+
170
+ @ReactMethod
171
+ public void setMaximumAmbientCacheSize(int size, final Promise promise) {
172
+ activateFileSource();
173
+
174
+ final OfflineManager offlineManager = OfflineManager.getInstance(mReactContext);
175
+
176
+ offlineManager.setMaximumAmbientCacheSize(size, new OfflineManager.FileSourceCallback() {
177
+ @Override
178
+ public void onSuccess() {
179
+ promise.resolve(null);
180
+ }
181
+
182
+ @Override
183
+ public void onError(String error) {
184
+ promise.reject("setMaximumAmbientCacheSize", error);
185
+ }
186
+ });
187
+ }
188
+
189
+
190
+ @ReactMethod
191
+ public void resetDatabase(final Promise promise) {
192
+ activateFileSource();
193
+ final OfflineManager offlineManager = OfflineManager.getInstance(mReactContext);
194
+ offlineManager.resetDatabase(new OfflineManager.FileSourceCallback() {
195
+ @Override
196
+ public void onSuccess() {
197
+ promise.resolve(null);
198
+ }
199
+
200
+ @Override
201
+ public void onError(String error) {
202
+ promise.reject("resetDatabase", error);
203
+ }
204
+ });
205
+ }
206
+
207
+ @ReactMethod
208
+ public void getPackStatus(final String name, final Promise promise) {
209
+ activateFileSource();
210
+
211
+ final OfflineManager offlineManager = OfflineManager.getInstance(mReactContext);
212
+
213
+ offlineManager.listOfflineRegions(new OfflineManager.ListOfflineRegionsCallback() {
214
+ @Override
215
+ public void onList(OfflineRegion[] offlineRegions) {
216
+ OfflineRegion region = getRegionByName(name, offlineRegions);
217
+
218
+ if (region == null) {
219
+ promise.resolve(null);
220
+ Log.w(REACT_CLASS, "getPackStatus - Unknown offline region");
221
+ return;
222
+ }
223
+
224
+ region.getStatus(new OfflineRegion.OfflineRegionStatusCallback() {
225
+ @Override
226
+ public void onStatus(OfflineRegionStatus status) {
227
+ promise.resolve(makeRegionStatus(name, status));
228
+ }
229
+
230
+ @Override
231
+ public void onError(String error) {
232
+ promise.reject("getPackStatus", error);
233
+ }
234
+ });
235
+ }
236
+
237
+ @Override
238
+ public void onError(String error) {
239
+ promise.reject("getPackStatus", error);
240
+ }
241
+ });
242
+ }
243
+
244
+ @ReactMethod
245
+ public void setPackObserver(final String name, final Promise promise) {
246
+ activateFileSource();
247
+
248
+ final OfflineManager offlineManager = OfflineManager.getInstance(mReactContext);
249
+
250
+ offlineManager.listOfflineRegions(new OfflineManager.ListOfflineRegionsCallback() {
251
+ @Override
252
+ public void onList(OfflineRegion[] offlineRegions) {
253
+ OfflineRegion region = getRegionByName(name, offlineRegions);
254
+ boolean hasRegion = region != null;
255
+
256
+ if (hasRegion) {
257
+ setOfflineRegionObserver(name, region);
258
+ }
259
+
260
+ promise.resolve(hasRegion);
261
+ }
262
+
263
+ @Override
264
+ public void onError(String error) {
265
+ promise.reject("setPackObserver", error);
266
+ }
267
+ });
268
+ }
269
+
270
+ @ReactMethod
271
+ public void invalidatePack(final String name, final Promise promise) {
272
+ activateFileSource();
273
+
274
+ final OfflineManager offlineManager = OfflineManager.getInstance(mReactContext);
275
+
276
+ offlineManager.listOfflineRegions(new OfflineManager.ListOfflineRegionsCallback() {
277
+ @Override
278
+ public void onList(OfflineRegion[] offlineRegions) {
279
+ OfflineRegion region = getRegionByName(name, offlineRegions);
280
+
281
+ if (region == null) {
282
+ promise.resolve(null);
283
+ Log.w(REACT_CLASS, "invalidateRegion - Unknown offline region");
284
+ return;
285
+ }
286
+
287
+ region.invalidate(new OfflineRegion.OfflineRegionInvalidateCallback() {
288
+ @Override
289
+ public void onInvalidate() {
290
+ promise.resolve(null);
291
+ }
292
+
293
+ @Override
294
+ public void onError(String error) {
295
+ promise.reject("invalidateRegion", error);
296
+ }
297
+ });
298
+ }
299
+
300
+ @Override
301
+ public void onError(String error) {
302
+ promise.reject("invalidateRegion", error);
303
+ }
304
+ });
305
+ }
306
+
307
+ @ReactMethod
308
+ public void deletePack(final String name, final Promise promise) {
309
+ activateFileSource();
310
+
311
+ final OfflineManager offlineManager = OfflineManager.getInstance(mReactContext);
312
+
313
+ offlineManager.listOfflineRegions(new OfflineManager.ListOfflineRegionsCallback() {
314
+ @Override
315
+ public void onList(OfflineRegion[] offlineRegions) {
316
+ OfflineRegion region = getRegionByName(name, offlineRegions);
317
+
318
+ if (region == null) {
319
+ promise.resolve(null);
320
+ Log.w(REACT_CLASS, "deleteRegion - Unknown offline region");
321
+ return;
322
+ }
323
+
324
+ // stop download before deleting (https://github.com/mapbox/mapbox-gl-native/issues/12382#issuecomment-431055103)
325
+ region.setDownloadState(INACTIVE_REGION_DOWNLOAD_STATE);
326
+
327
+ region.delete(new OfflineRegion.OfflineRegionDeleteCallback() {
328
+ @Override
329
+ public void onDelete() {
330
+ promise.resolve(null);
331
+ }
332
+
333
+ @Override
334
+ public void onError(String error) {
335
+ promise.reject("deleteRegion", error);
336
+ }
337
+ });
338
+ }
339
+
340
+ @Override
341
+ public void onError(String error) {
342
+ promise.reject("deleteRegion", error);
343
+ }
344
+ });
345
+ }
346
+
347
+ @ReactMethod
348
+ public void pausePackDownload(final String name, final Promise promise) {
349
+ activateFileSource();
350
+
351
+ final OfflineManager offlineManager = OfflineManager.getInstance(mReactContext);
352
+
353
+ offlineManager.listOfflineRegions(new OfflineManager.ListOfflineRegionsCallback() {
354
+ @Override
355
+ public void onList(OfflineRegion[] offlineRegions) {
356
+ final OfflineRegion offlineRegion = getRegionByName(name, offlineRegions);
357
+
358
+ if (offlineRegion == null) {
359
+ promise.reject("pauseRegionDownload", "Unknown offline region");
360
+ return;
361
+ }
362
+
363
+ new Handler(Looper.getMainLooper()).post(new Runnable() {
364
+ @Override
365
+ public void run() {
366
+ offlineRegion.setDownloadState(INACTIVE_REGION_DOWNLOAD_STATE);
367
+ promise.resolve(null);
368
+ }
369
+ });
370
+ }
371
+
372
+ @Override
373
+ public void onError(String error) {
374
+ promise.reject("pauseRegionDownload", error);
375
+ }
376
+ });
377
+ }
378
+
379
+ @ReactMethod
380
+ public void resumePackDownload(final String name, final Promise promise) {
381
+ activateFileSource();
382
+
383
+ final OfflineManager offlineManager = OfflineManager.getInstance(mReactContext);
384
+
385
+ offlineManager.listOfflineRegions(new OfflineManager.ListOfflineRegionsCallback() {
386
+ @Override
387
+ public void onList(OfflineRegion[] offlineRegions) {
388
+ OfflineRegion offlineRegion = getRegionByName(name, offlineRegions);
389
+
390
+ if (offlineRegion == null) {
391
+ promise.reject("resumeRegionDownload", "Unknown offline region");
392
+ return;
393
+ }
394
+
395
+ offlineRegion.setDownloadState(ACTIVE_REGION_DOWNLOAD_STATE);
396
+ promise.resolve(null);
397
+ }
398
+
399
+ @Override
400
+ public void onError(String error) {
401
+ promise.reject("resumeRegionDownload", error);
402
+ }
403
+ });
404
+ }
405
+
406
+ @ReactMethod
407
+ public void mergeOfflineRegions(final String path, final Promise promise) {
408
+ activateFileSource();
409
+
410
+ final OfflineManager offlineManager = OfflineManager.getInstance(mReactContext);
411
+
412
+ offlineManager.mergeOfflineRegions(path, new OfflineManager.MergeOfflineRegionsCallback() {
413
+ @Override
414
+ public void onMerge(OfflineRegion[] offlineRegions) {
415
+ promise.resolve(null);
416
+ }
417
+
418
+ @Override
419
+ public void onError(String error) {
420
+ promise.reject("mergeOfflineRegions", error);
421
+ }
422
+ });
423
+ }
424
+
425
+ @ReactMethod
426
+ public void setTileCountLimit(int tileCountLimit) {
427
+ OfflineManager offlineManager = OfflineManager.getInstance(mReactContext);
428
+ offlineManager.setOfflineMapboxTileCountLimit(tileCountLimit);
429
+ }
430
+
431
+ @ReactMethod
432
+ public void setProgressEventThrottle(double eventThrottle) {
433
+ mProgressEventThrottle = eventThrottle;
434
+ }
435
+
436
+ private OfflineRegionDefinition makeDefinition(LatLngBounds latLngBounds, ReadableMap options) {
437
+ return new OfflineTilePyramidRegionDefinition(
438
+ ConvertUtils.getString("styleURL", options, DEFAULT_STYLE_URL),
439
+ latLngBounds,
440
+ ConvertUtils.getDouble("minZoom", options, DEFAULT_MIN_ZOOM_LEVEL),
441
+ ConvertUtils.getDouble("maxZoom", options, DEFAULT_MAX_ZOOM_LEVEL),
442
+ mReactContext.getResources().getDisplayMetrics().density);
443
+ }
444
+
445
+ private byte[] getMetadataBytes(String metadata) {
446
+ byte[] metadataBytes = null;
447
+
448
+ if (metadata == null || metadata.isEmpty()) {
449
+ return metadataBytes;
450
+ }
451
+
452
+ try {
453
+ metadataBytes = metadata.getBytes("utf-8");
454
+ } catch (UnsupportedEncodingException e) {
455
+ Log.w(REACT_CLASS, e.getLocalizedMessage());
456
+ }
457
+
458
+ return metadataBytes;
459
+ }
460
+
461
+ private void setOfflineRegionObserver(final String name, final OfflineRegion region) {
462
+ region.setObserver(new OfflineRegion.OfflineRegionObserver() {
463
+ OfflineRegionStatus prevStatus = null;
464
+ long timestamp = System.currentTimeMillis();
465
+
466
+ @Override
467
+ public void onStatusChanged(OfflineRegionStatus status) {
468
+ if (shouldSendUpdate(System.currentTimeMillis(), status)) {
469
+ sendEvent(makeStatusEvent(name, status));
470
+ timestamp = System.currentTimeMillis();
471
+ }
472
+ prevStatus = status;
473
+ }
474
+
475
+ @Override
476
+ public void onError(OfflineRegionError error) {
477
+ sendEvent(makeErrorEvent(name, EventTypes.OFFLINE_ERROR, error.getMessage()));
478
+ }
479
+
480
+ @Override
481
+ public void mapboxTileCountLimitExceeded(long limit) {
482
+ String message = String.format(Locale.getDefault(), "Mapbox tile limit exceeded %d", limit);
483
+ sendEvent(makeErrorEvent(name, EventTypes.OFFLINE_TILE_LIMIT, message));
484
+ }
485
+
486
+ private boolean shouldSendUpdate (long currentTimestamp, OfflineRegionStatus curStatus) {
487
+ if (prevStatus == null) {
488
+ return false;
489
+ }
490
+
491
+ if (prevStatus.getDownloadState() != curStatus.getDownloadState()) {
492
+ return true;
493
+ }
494
+
495
+ if (currentTimestamp - timestamp > mProgressEventThrottle) {
496
+ return true;
497
+ }
498
+
499
+ return false;
500
+ }
501
+ });
502
+
503
+ region.setDownloadState(ACTIVE_REGION_DOWNLOAD_STATE);
504
+ }
505
+
506
+ private void sendEvent(IEvent event) {
507
+ RCTNativeAppEventEmitter eventEmitter = getEventEmitter();
508
+ eventEmitter.emit(event.getKey(), event.toJSON());
509
+ }
510
+
511
+ private RCTNativeAppEventEmitter getEventEmitter() {
512
+ return mReactContext.getJSModule(RCTNativeAppEventEmitter.class);
513
+ }
514
+
515
+ private OfflineEvent makeErrorEvent(String regionName, String errorType, String message) {
516
+ WritableMap payload = new WritableNativeMap();
517
+ payload.putString("message", message);
518
+ payload.putString("name", regionName);
519
+ return new OfflineEvent(OFFLINE_ERROR, errorType, payload);
520
+ }
521
+
522
+ private OfflineEvent makeStatusEvent(String regionName, OfflineRegionStatus status) {
523
+ return new OfflineEvent(OFFLINE_PROGRESS, EventTypes.OFFLINE_STATUS, makeRegionStatus(regionName, status));
524
+ }
525
+
526
+ private WritableMap makeRegionStatus(String regionName, OfflineRegionStatus status) {
527
+ WritableMap map = Arguments.createMap();
528
+
529
+ int downloadState = status.getDownloadState();
530
+ double percentage = 0.0;
531
+
532
+ if (status.isComplete()) {
533
+ downloadState = COMPLETE_REGION_DOWNLOAD_STATE;
534
+ percentage = 100.0;
535
+ } else {
536
+ percentage = status.getRequiredResourceCount() >= 0
537
+ ? (100.0 * status.getCompletedResourceCount() / status.getRequiredResourceCount()) :
538
+ 0.0;
539
+ }
540
+
541
+ map.putString("name", regionName);
542
+ map.putInt("state", downloadState);
543
+ map.putDouble("percentage", percentage);
544
+ map.putInt("completedResourceCount", (int)status.getCompletedResourceCount());
545
+ map.putInt("completedResourceSize", (int)status.getCompletedResourceSize());
546
+ map.putInt("completedTileSize", (int)status.getCompletedTileSize());
547
+ map.putInt("completedTileCount", (int)status.getCompletedTileCount());
548
+ map.putInt("requiredResourceCount", (int)status.getRequiredResourceCount());
549
+
550
+ return map;
551
+ }
552
+
553
+ private LatLngBounds getBoundsFromOptions(ReadableMap options) {
554
+ String featureCollectionJSONStr = ConvertUtils.getString("bounds", options, "{}");
555
+ FeatureCollection featureCollection = FeatureCollection.fromJson(featureCollectionJSONStr);
556
+ return GeoJSONUtils.toLatLngBounds(featureCollection);
557
+ }
558
+
559
+ private WritableMap fromOfflineRegion(OfflineRegion region) {
560
+ WritableMap map = Arguments.createMap();
561
+ map.putArray("bounds", GeoJSONUtils.fromLatLngBounds(region.getDefinition().getBounds()));
562
+ map.putString("metadata", new String(region.getMetadata()));
563
+ return map;
564
+ }
565
+
566
+ private OfflineRegion getRegionByName(String name, OfflineRegion[] offlineRegions) {
567
+ if (name == null || name.isEmpty()) {
568
+ return null;
569
+ }
570
+
571
+ for (OfflineRegion region : offlineRegions) {
572
+ boolean isRegion = false;
573
+
574
+ try {
575
+ byte[] byteMetadata = region.getMetadata();
576
+
577
+ if (byteMetadata != null) {
578
+ JSONObject metadata = new JSONObject(new String(byteMetadata));
579
+ isRegion = name.equals(metadata.getString("name"));
580
+ }
581
+ } catch (JSONException e) {
582
+ Log.w(REACT_CLASS, e.getLocalizedMessage());
583
+ }
584
+
585
+ if (isRegion) {
586
+ return region;
587
+ }
588
+ }
589
+
590
+ return null;
591
+ }
592
+
593
+ private void activateFileSource() {
594
+ FileSource fileSource = FileSource.getInstance(mReactContext);
595
+ fileSource.activate();
596
+ }
597
+ }