@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,458 @@
1
+ const fs = require('fs');
2
+ const path = require('path');
3
+ const { exec } = require('child_process');
4
+
5
+ const dir = require('node-dir');
6
+ const docgen = require('react-docgen');
7
+ const parseJsDoc = require('react-docgen/dist/utils/parseJsDoc').default;
8
+
9
+ const JSDocNodeTree = require('./JSDocNodeTree');
10
+
11
+ const COMPONENT_PATH = path.join(
12
+ __dirname,
13
+ '..',
14
+ '..',
15
+ 'javascript',
16
+ 'components',
17
+ );
18
+ const MODULES_PATH = path.join(__dirname, '..', '..', 'javascript', 'modules');
19
+
20
+ const OUTPUT_PATH = path.join(__dirname, '..', '..', 'docs', 'docs.json');
21
+ const IGNORE_FILES = [
22
+ 'AbstractLayer',
23
+ 'AbstractSource',
24
+ 'NativeBridgeComponent',
25
+ ];
26
+ const IGNORE_PATTERN = /\.web\./;
27
+
28
+ const IGNORE_METHODS = ['setNativeProps'];
29
+
30
+ const fileExtensionsRegex = /.(js|tsx|(?<!d.)ts)$/;
31
+
32
+ class DocJSONBuilder {
33
+ constructor(styledLayers) {
34
+ this._styledLayers = {};
35
+
36
+ for (const styleLayer of styledLayers) {
37
+ let ComponentName = pascelCase(styleLayer.name);
38
+ const fakeLayers = ['Light', 'Atmosphere', 'Terrain'];
39
+ if (fakeLayers.includes(ComponentName)) {
40
+ this._styledLayers[ComponentName] = styleLayer;
41
+ } else {
42
+ this._styledLayers[ComponentName + 'Layer'] = styleLayer;
43
+ }
44
+ }
45
+ }
46
+
47
+ get options() {
48
+ return {
49
+ match: fileExtensionsRegex,
50
+ shortName: true,
51
+ sort: true,
52
+ };
53
+ }
54
+
55
+ isPrivateMethod(methodName = '') {
56
+ return !methodName || methodName.charAt(0) === '_';
57
+ }
58
+
59
+ postprocess(component, name) {
60
+ // Remove all private methods and parse examples from docblock
61
+
62
+ if (!Array.isArray(component.methods)) {
63
+ return;
64
+ }
65
+
66
+ component.name = name;
67
+
68
+ // Main description
69
+ component.description = component.description.replace(
70
+ /(\n*)(@\w+) (\{.*})/g,
71
+ '',
72
+ );
73
+
74
+ // Styles
75
+ if (this._styledLayers[name] && this._styledLayers[name].properties) {
76
+ component.styles = [];
77
+
78
+ for (const prop of this._styledLayers[name].properties) {
79
+ const docStyle = {
80
+ name: prop.name,
81
+ type: prop.type,
82
+ values: [],
83
+ minimum: prop.doc.minimum,
84
+ maximum: prop.doc.maximum,
85
+ units: prop.doc.units,
86
+ default: prop.doc.default,
87
+ description: prop.doc.description,
88
+ requires: prop.doc.requires,
89
+ disabledBy: prop.doc.disabledBy,
90
+ allowedFunctionTypes: prop.allowedFunctionTypes || [],
91
+ expression: prop.expression,
92
+ transition: prop.transition,
93
+ };
94
+ if (prop.type === 'enum') {
95
+ docStyle.values = Object.keys(prop.doc.values).map((value) => {
96
+ return { value, doc: prop.doc.values[value].doc };
97
+ });
98
+ } else if (prop.type === 'array') {
99
+ docStyle.type = `${docStyle.type}<${prop.value}>`;
100
+ }
101
+
102
+ component.styles.push(docStyle);
103
+ }
104
+ }
105
+
106
+ function mapNestedProp(propMeta) {
107
+ const result = {
108
+ type: {
109
+ name: propMeta.name,
110
+ value: propMeta.value,
111
+ },
112
+ description: propMeta.description,
113
+ required: propMeta.required,
114
+ };
115
+ if (propMeta.value) {
116
+ result.type.value = propMeta.value;
117
+ }
118
+ return result;
119
+ }
120
+
121
+ function tsTypeDesc(tsType) {
122
+ if (!tsType?.name) {
123
+ return null;
124
+ }
125
+
126
+ if (tsType.name === 'signature') {
127
+ if (tsType.raw.length < 200) {
128
+ return `${tsType.raw
129
+ .replace(/(\n|\s)/g, '')
130
+ .replace(/(\|)/g, '\\|')}`;
131
+ } else {
132
+ return 'FIX ME FORMAT BIG OBJECT';
133
+ }
134
+ } else if (tsType.name === 'union') {
135
+ if (tsType.raw) {
136
+ // Props
137
+ return tsType.raw.replace(/\|/g, '\\|');
138
+ } else if (tsType.elements) {
139
+ // Methods
140
+ return tsType.elements.map((e) => e.name).join(' \\| ');
141
+ }
142
+ } else {
143
+ return tsType.name;
144
+ }
145
+ }
146
+
147
+ /**
148
+ * @typedef {{arguments: {type:TSType,name:string}[], return: TSType]}} TSFuncSignature
149
+ * @typedef {{key:string, value:TSType}[]} TSKVProperties
150
+ * @typedef {{properties: TSKVProperties}} TSObjectSignature
151
+ * @typedef {{name: 'void'}} TSVoidType
152
+ * @typedef {{name: string}} TSTypeType
153
+ * @typedef {{name: 'signature', type:'function', raw:string, signature: TSFuncSignature}} TSFunctionType
154
+ * @typedef {{name: 'signature', type:'object', raw:string, signature: TSObjectSignature}} TSObjectType
155
+ * @typedef {TSVoidType | TSFunctionType | TSTypeType | TSObjectType} TSType
156
+ */
157
+
158
+ /**
159
+ * @params {TSType} tsType
160
+ * @returns {tsType is TSFunctionType}
161
+ */
162
+ function tsTypeIsFunction(tsType) {
163
+ return tsType.type === 'function';
164
+ }
165
+
166
+ /**
167
+ * @params {TSType} tsType
168
+ * @returns {tsType is TSObjectType}
169
+ */
170
+ function tsTypeIsObject(tsType) {
171
+ return tsType.type === 'object';
172
+ }
173
+
174
+ /**
175
+ * @param {TSType} tsType
176
+ */
177
+ function tsTypeDump(tsType) {
178
+ if (tsTypeIsFunction(tsType)) {
179
+ let { signature } = tsType;
180
+ return `(${signature.arguments
181
+ .map(({ name, type }) => `${name}:${tsTypeDump(type)}`)
182
+ .join(', ')}) => ${tsTypeDump(signature.return)}`;
183
+ } else if (tsTypeIsObject(tsType)) {
184
+ let { signature } = tsType;
185
+ return `{${signature.properties
186
+ .map(({ key, value }) => `${key}: ${tsTypeDump(value)}`)
187
+ .join(', ')}}`;
188
+ } else {
189
+ return tsType.name;
190
+ }
191
+ }
192
+
193
+ function tsTypeDescType(tsType) {
194
+ if (!tsType?.name) {
195
+ return null;
196
+ }
197
+
198
+ if (tsType.name === 'signature' && tsType.type === 'object') {
199
+ const { properties } = tsType.signature;
200
+ if (properties) {
201
+ const value = properties.map((kv) => {
202
+ return mapProp(
203
+ mapNestedProp({ ...kv.value, description: kv.description }),
204
+ kv.key,
205
+ false,
206
+ );
207
+ });
208
+ return { name: 'shape', value };
209
+ } else if (tsType.raw.length < 200) {
210
+ return `${tsType.raw
211
+ .replace(/(\n|\s)/g, '')
212
+ .replace(/(\|)/g, '\\|')}`;
213
+ } else {
214
+ return 'FIX ME FORMAT BIG OBJECT';
215
+ }
216
+ } else if (tsType.name === 'signature' && tsType.type === 'function') {
217
+ return { name: 'func', funcSignature: tsTypeDump(tsType) };
218
+ } else if (tsType.name === 'union') {
219
+ if (tsType.raw) {
220
+ // Props
221
+ return tsType.raw.replace(/\|/g, '\\|');
222
+ } else if (tsType.elements) {
223
+ // Methods
224
+ return tsType.elements.map((e) => e.name).join(' \\| ');
225
+ }
226
+ } else {
227
+ return tsType.name;
228
+ }
229
+ }
230
+
231
+ function mapProp(propMeta, propName, array) {
232
+ let result = {};
233
+ if (!array) {
234
+ result = {
235
+ name: propName || 'FIX ME NO NAME',
236
+ required: propMeta.required || false,
237
+ type:
238
+ propMeta.type?.name ||
239
+ tsTypeDescType(propMeta.tsType) ||
240
+ 'FIX ME UNKNOWN TYPE',
241
+ default: !propMeta.defaultValue
242
+ ? 'none'
243
+ : propMeta.defaultValue.value.replace(/\n/g, ''),
244
+ description: propMeta.description || 'FIX ME NO DESCRIPTION',
245
+ };
246
+ if (
247
+ result.type &&
248
+ result.type.name === 'func' &&
249
+ result.type.funcSignature
250
+ ) {
251
+ result.description = `${result.description}\n*signature:*\`${result.type.funcSignature}\``;
252
+ }
253
+ } else {
254
+ if (propName) {
255
+ result.name = propName;
256
+ }
257
+ if (propMeta.required !== undefined) {
258
+ result.required = propMeta.required;
259
+ }
260
+ result.type =
261
+ (propMeta.type && propMeta.type.name) ||
262
+ tsTypeDescType(propMeta.tsType) ||
263
+ 'FIX ME UNKNOWN TYPE';
264
+ if (propMeta.defaultValue) {
265
+ result.default = propMeta.defaultValue.value.replace(/\n/g, '');
266
+ }
267
+ if (propMeta.description) {
268
+ result.description = propMeta.description;
269
+ }
270
+ }
271
+
272
+ if (
273
+ propMeta.type &&
274
+ propMeta.type.name === 'arrayOf' &&
275
+ propMeta.type.value
276
+ ) {
277
+ result.type = {
278
+ name: 'array',
279
+ value: mapProp(mapNestedProp(propMeta.type.value), undefined, true),
280
+ };
281
+ }
282
+
283
+ if (propMeta.type && propMeta.type.name === 'func') {
284
+ const jsdoc = parseJsDoc(propMeta.description);
285
+ if (jsdoc && jsdoc.description) {
286
+ result.description = jsdoc.description;
287
+ }
288
+ if (jsdoc && jsdoc.params && jsdoc.params.length > 0) {
289
+ result.params = jsdoc.params;
290
+ }
291
+ if (jsdoc && jsdoc.returns) {
292
+ result.returns = jsdoc.returns;
293
+ }
294
+ }
295
+ if (
296
+ propMeta.type &&
297
+ propMeta.type.name === 'shape' &&
298
+ propMeta.type.value
299
+ ) {
300
+ const type = propMeta.type.value;
301
+ const value = Object.keys(type).map((_name) =>
302
+ mapProp(mapNestedProp(type[_name]), _name, false),
303
+ );
304
+ result.type = { name: 'shape', value };
305
+ }
306
+ return result;
307
+ }
308
+
309
+ // props
310
+ component.props = Object.keys(component.props).map((propName) => {
311
+ const propMeta = component.props[propName];
312
+
313
+ return mapProp(propMeta, propName, false);
314
+ });
315
+
316
+ // methods
317
+ const privateMethods = [];
318
+ for (const method of component.methods) {
319
+ if (this.isPrivateMethod(method.name)) {
320
+ privateMethods.push(method.name);
321
+ continue;
322
+ }
323
+
324
+ if (method.docblock) {
325
+ const examples = method.docblock
326
+ .split('@')
327
+ .filter((block) => block.startsWith('example'));
328
+ method.examples = examples.map((example) =>
329
+ example.substring('example'.length),
330
+ );
331
+ }
332
+ }
333
+ privateMethods.push(...IGNORE_METHODS);
334
+
335
+ component.methods = component.methods.filter(
336
+ (method) => !privateMethods.includes(method.name),
337
+ );
338
+
339
+ component.methods.forEach((method) => {
340
+ method.params.forEach((param) => {
341
+ param.type = { name: tsTypeDesc(param.type) };
342
+ });
343
+ });
344
+
345
+ console.log(
346
+ `Processed ${component.name} (${component.props?.length ?? 0} props, ${
347
+ component.methods?.length ?? 0
348
+ } methods)`,
349
+ );
350
+ }
351
+
352
+ generateReactComponentsTask(results, filePath) {
353
+ return new Promise((resolve, reject) => {
354
+ dir.readFiles(
355
+ filePath,
356
+ this.options,
357
+ (err, content, fileNameWithExt, next) => {
358
+ if (err) {
359
+ return reject(err);
360
+ }
361
+
362
+ let fileName = fileNameWithExt.replace(/\.(js|tsx|ts$)/, '');
363
+ if (
364
+ IGNORE_FILES.includes(fileName) ||
365
+ fileName.match(IGNORE_PATTERN)
366
+ ) {
367
+ next();
368
+ return;
369
+ }
370
+
371
+ let parsedComponents = docgen.parse(content, {
372
+ babelOptions: {
373
+ filename: fileNameWithExt,
374
+ },
375
+ });
376
+ let [parsed] = parsedComponents;
377
+ fileName = fileName.replace(fileExtensionsRegex, '');
378
+ parsed.fileNameWithExt = fileNameWithExt;
379
+ results[fileName] = parsed;
380
+
381
+ this.postprocess(results[fileName], fileName);
382
+
383
+ return next();
384
+ },
385
+ () => resolve(),
386
+ );
387
+ });
388
+ }
389
+
390
+ generateModulesTask(results, filePath) {
391
+ return new Promise((resolve, reject) => {
392
+ exec(
393
+ `yarn run documentation build ${MODULES_PATH} -f json`,
394
+ (err, stdout, stderr) => {
395
+ if (err || stderr) {
396
+ reject(err || stderr);
397
+ return;
398
+ }
399
+
400
+ const modules = JSON.parse(stdout);
401
+ for (const module of modules) {
402
+ const node = new JSDocNodeTree(module);
403
+ const name = `${module.name
404
+ .charAt(0)
405
+ .toLowerCase()}${module.name.substring(1)}`;
406
+
407
+ const pathParts = module.context.file.split('/');
408
+ const fileNameWithExt = pathParts[pathParts.length - 1];
409
+
410
+ results[name] = {
411
+ name,
412
+ fileNameWithExt,
413
+ description: node.getText(),
414
+ props: [],
415
+ styles: [],
416
+ methods: node.getMethods(),
417
+ };
418
+ }
419
+
420
+ resolve();
421
+ },
422
+ );
423
+ });
424
+ }
425
+
426
+ sortObject(not_sorted) {
427
+ return Object.keys(not_sorted)
428
+ .sort()
429
+ .reduce(
430
+ (acc, key) => ({
431
+ ...acc,
432
+ [key]: not_sorted[key],
433
+ }),
434
+ {},
435
+ );
436
+ }
437
+
438
+ async generate() {
439
+ this.generateModulesTask({}, MODULES_PATH);
440
+
441
+ const results = {};
442
+
443
+ const tasks = [
444
+ this.generateReactComponentsTask(results, COMPONENT_PATH),
445
+ this.generateModulesTask(results, MODULES_PATH),
446
+ ];
447
+
448
+ return Promise.all(tasks).then(() => {
449
+ fs.writeFileSync(
450
+ OUTPUT_PATH,
451
+ JSON.stringify(this.sortObject(results), null, 2),
452
+ );
453
+ return true;
454
+ });
455
+ }
456
+ }
457
+
458
+ module.exports = DocJSONBuilder;
@@ -0,0 +1,131 @@
1
+ class JSDocNodeTree {
2
+ constructor (root) {
3
+ this._root = root;
4
+ }
5
+
6
+ getChildrenByTag (node, tag) {
7
+ if (!node || !Array.isArray(node.children)) {
8
+ return [];
9
+ }
10
+ return node.children.filter((child) => child.type === tag);
11
+ }
12
+
13
+ getName () {
14
+ if (!this._root) {
15
+ return '';
16
+ }
17
+ return this._root.namespace;
18
+ }
19
+
20
+ getText () {
21
+ if (!this.hasChildren()) {
22
+ return '';
23
+ }
24
+
25
+ let text = '';
26
+ for (let paragraph of this.getChildrenByTag(this._root.description, 'paragraph')) {
27
+ for (let textNode of this.getChildrenByTag(paragraph, 'text')) {
28
+ text += textNode.value;
29
+ }
30
+ }
31
+
32
+ return text;
33
+ }
34
+
35
+ getMethods () {
36
+ if (!this._hasArray(this._root.members, 'instance')) {
37
+ return [];
38
+ }
39
+
40
+ const methods = [];
41
+ for (let field of this._root.members.instance) {
42
+ if (field.kind !== 'function' || this._isPrivateMethod(field)) {
43
+ continue;
44
+ }
45
+
46
+ const node = new JSDocNodeTree(field);
47
+ methods.push({
48
+ name: field.name,
49
+ description: node.getText(),
50
+ params: this.getMethodParams(field),
51
+ examples: this.getExamples(field),
52
+ returns: this.getReturnValue(field),
53
+ });
54
+ }
55
+
56
+ return methods;
57
+ }
58
+
59
+ getMethodParams (field) {
60
+ if (!this._hasArray(field, 'params')) {
61
+ return [];
62
+ }
63
+
64
+ const methodParams = [];
65
+ for (let param of field.params) {
66
+ if (param.title !== 'param') {
67
+ continue;
68
+ }
69
+
70
+ const node = new JSDocNodeTree(param);
71
+ methodParams.push({
72
+ name: param.name,
73
+ description: node.getText(),
74
+ type: { name: this.getType(param.type) },
75
+ optional: param.type.type === 'OptionalType',
76
+ })
77
+ }
78
+
79
+ return methodParams;
80
+ }
81
+
82
+ getExamples (field) {
83
+ if (!this._hasArray(field, 'examples')) {
84
+ return [];
85
+ }
86
+ return field.examples.map((example) => example.description);
87
+ }
88
+
89
+ getReturnValue (field) {
90
+ if (!this._hasArray(field, 'returns')) {
91
+ return null;
92
+ }
93
+
94
+ const returnNode = field.returns[0];
95
+ const descriptionNode = new JSDocNodeTree(returnNode);
96
+
97
+ return {
98
+ description: descriptionNode.getText(),
99
+ type: { name: this.getType(returnNode.type) },
100
+ };
101
+ }
102
+
103
+ getType (typeNode) {
104
+ if (!typeNode) {
105
+ return '';
106
+ }
107
+
108
+ if (typeNode.expression) {
109
+ return typeNode.expression.name;
110
+ }
111
+
112
+ return typeNode.name || '';
113
+ }
114
+
115
+ hasChildren () {
116
+ return this._hasArray(this._root.description, 'children');
117
+ }
118
+
119
+ _hasArray (node, propName) {
120
+ if (!this._root) {
121
+ return false;
122
+ }
123
+ return Array.isArray(node[propName]) && node[propName].length;
124
+ }
125
+
126
+ _isPrivateMethod(field) {
127
+ return field.name.charAt(0) === '_';
128
+ }
129
+ }
130
+
131
+ module.exports = JSDocNodeTree;
@@ -0,0 +1,29 @@
1
+ const fs = require('fs');
2
+ const path = require('path');
3
+ const ejs = require('ejs');
4
+
5
+ const TMPL_PATH = path.join(__dirname, '..', 'templates');
6
+ const TMPL_FILE = fs.readFileSync(path.join(TMPL_PATH, 'component.md.ejs'), 'utf8');
7
+
8
+ class MarkdownBuilder {
9
+
10
+ generateComponentFile (docJSON, componentName) {
11
+ const tmpl = ejs.compile(TMPL_FILE, { strict: true });
12
+ const fileContents = tmpl({ component: docJSON[componentName] });
13
+ fs.writeFileSync(path.join(__dirname, '..', '..', 'docs', `${componentName}.md`), fileContents);
14
+ }
15
+
16
+ generate () {
17
+ const docJSONFile = fs.readFileSync(path.join(__dirname, '..', '..', 'docs', 'docs.json'), 'utf8');
18
+ const docJSON = JSON.parse(docJSONFile);
19
+ const componentPaths = Object.keys(docJSON);
20
+
21
+ for (let componentPath of componentPaths) {
22
+ this.generateComponentFile(docJSON, componentPath);
23
+ }
24
+
25
+ console.log('Markdown is finished generating');
26
+ }
27
+ }
28
+
29
+ module.exports = MarkdownBuilder;