@maplibre/maplibre-react-native 10.0.0-alpha.24 → 10.0.0-alpha.26

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 (173) hide show
  1. package/CHANGELOG.md +12 -0
  2. package/CONTRIBUTING.md +1 -1
  3. package/android/build.gradle +51 -16
  4. package/docs/Annotation.md +8 -17
  5. package/docs/BackgroundLayer.md +136 -128
  6. package/docs/Callout.md +5 -4
  7. package/docs/Camera.md +38 -39
  8. package/docs/CircleLayer.md +413 -388
  9. package/docs/FillExtrusionLayer.md +303 -292
  10. package/docs/FillLayer.md +266 -251
  11. package/docs/HeadingIndicator.md +5 -4
  12. package/docs/HeatmapLayer.md +179 -172
  13. package/docs/ImageSource.md +5 -4
  14. package/docs/Images.md +5 -4
  15. package/docs/Light.md +131 -123
  16. package/docs/LineLayer.md +525 -498
  17. package/docs/MapView.md +23 -42
  18. package/docs/MarkerView.md +5 -4
  19. package/docs/NativeUserLocation.md +5 -4
  20. package/docs/PointAnnotation.md +7 -10
  21. package/docs/RasterLayer.md +318 -310
  22. package/docs/RasterSource.md +5 -4
  23. package/docs/ShapeSource.md +16 -15
  24. package/docs/Style.md +5 -4
  25. package/docs/SymbolLayer.md +1501 -1406
  26. package/docs/UserLocation.md +10 -13
  27. package/docs/VectorSource.md +10 -9
  28. package/docs/coordinates.md +4 -3
  29. package/docs/docs.json +49 -88
  30. package/docs/location.md +4 -3
  31. package/docs/offlineManager.md +29 -44
  32. package/docs/snapshotManager.md +7 -6
  33. package/ios/RCTMLN/RCTMLNCamera.h +0 -3
  34. package/ios/RCTMLN/RCTMLNCamera.m +1 -1
  35. package/ios/RCTMLN/RCTMLNCameraManager.m +0 -3
  36. package/javascript/MLNModule.ts +9 -0
  37. package/javascript/Maplibre.ts +1 -1
  38. package/javascript/components/{annotations/Annotation.tsx → Annotation.tsx} +5 -5
  39. package/javascript/components/Camera.tsx +257 -388
  40. package/javascript/components/UserLocation.tsx +1 -1
  41. package/javascript/hooks/useNativeRef.ts +2 -1
  42. package/javascript/types/CameraMode.ts +6 -0
  43. package/package.json +16 -24
  44. package/scripts/codegen.ts +340 -0
  45. package/scripts/templates/MaplibreStyles.ts.ejs +8 -7
  46. package/scripts/templates/RCTMLNStyle.h.ejs +4 -3
  47. package/scripts/templates/RCTMLNStyle.m.ejs +11 -10
  48. package/scripts/templates/RCTMLNStyleFactory.java.ejs +12 -11
  49. package/scripts/templates/component.md.ejs +88 -85
  50. package/scripts/templates/index.d.ts.ejs +2 -1
  51. package/scripts/templates/styleMap.ts.ejs +2 -1
  52. package/scripts/utils/{DocJSONBuilder.js → DocJSONBuilder.ts} +133 -128
  53. package/scripts/utils/{JSDocNodeTree.js → JSDocNodeTree.ts} +14 -13
  54. package/scripts/utils/MarkdownBuilder.ts +44 -0
  55. package/scripts/utils/{template-globals.js → TemplateHelpers.ts} +66 -95
  56. package/scripts/utils/getNativeVersion.ts +53 -0
  57. package/tsconfig.json +2 -3
  58. package/.husky/pre-commit +0 -5
  59. package/android/rctmln/.settings/org.eclipse.buildship.core.prefs +0 -2
  60. package/android/rctmln/build.gradle +0 -64
  61. package/android/rctmln/proguard-rules.pro +0 -25
  62. package/docs/OfflineManager.md +0 -246
  63. package/react-native.config.js +0 -10
  64. package/scripts/download-style-spec.sh +0 -15
  65. package/scripts/generate-docs.js +0 -396
  66. package/scripts/utils/MarkdownBuilder.js +0 -37
  67. package/style-spec/v8.json +0 -6645
  68. /package/android/{rctmln/src → src}/main/AndroidManifest.xml +0 -0
  69. /package/android/{rctmln/src → src}/main/java/com/maplibre/rctmln/RCTMLNPackage.java +0 -0
  70. /package/android/{rctmln/src → src}/main/java/com/maplibre/rctmln/components/AbstractEvent.java +0 -0
  71. /package/android/{rctmln/src → src}/main/java/com/maplibre/rctmln/components/AbstractEventEmitter.java +0 -0
  72. /package/android/{rctmln/src → src}/main/java/com/maplibre/rctmln/components/AbstractMapFeature.java +0 -0
  73. /package/android/{rctmln/src → src}/main/java/com/maplibre/rctmln/components/annotation/MarkerView.java +0 -0
  74. /package/android/{rctmln/src → src}/main/java/com/maplibre/rctmln/components/annotation/MarkerViewManager.java +0 -0
  75. /package/android/{rctmln/src → src}/main/java/com/maplibre/rctmln/components/annotation/RCTMLNCallout.java +0 -0
  76. /package/android/{rctmln/src → src}/main/java/com/maplibre/rctmln/components/annotation/RCTMLNCalloutManager.java +0 -0
  77. /package/android/{rctmln/src → src}/main/java/com/maplibre/rctmln/components/annotation/RCTMLNMarkerView.java +0 -0
  78. /package/android/{rctmln/src → src}/main/java/com/maplibre/rctmln/components/annotation/RCTMLNMarkerViewManager.java +0 -0
  79. /package/android/{rctmln/src → src}/main/java/com/maplibre/rctmln/components/annotation/RCTMLNPointAnnotation.java +0 -0
  80. /package/android/{rctmln/src → src}/main/java/com/maplibre/rctmln/components/annotation/RCTMLNPointAnnotationManager.java +0 -0
  81. /package/android/{rctmln/src → src}/main/java/com/maplibre/rctmln/components/camera/CameraStop.java +0 -0
  82. /package/android/{rctmln/src → src}/main/java/com/maplibre/rctmln/components/camera/CameraUpdateItem.java +0 -0
  83. /package/android/{rctmln/src → src}/main/java/com/maplibre/rctmln/components/camera/CameraUpdateQueue.java +0 -0
  84. /package/android/{rctmln/src → src}/main/java/com/maplibre/rctmln/components/camera/RCTMLNCamera.java +0 -0
  85. /package/android/{rctmln/src → src}/main/java/com/maplibre/rctmln/components/camera/RCTMLNCameraManager.java +0 -0
  86. /package/android/{rctmln/src → src}/main/java/com/maplibre/rctmln/components/camera/constants/CameraMode.java +0 -0
  87. /package/android/{rctmln/src → src}/main/java/com/maplibre/rctmln/components/images/RCTMLNImages.java +0 -0
  88. /package/android/{rctmln/src → src}/main/java/com/maplibre/rctmln/components/images/RCTMLNImagesManager.java +0 -0
  89. /package/android/{rctmln/src → src}/main/java/com/maplibre/rctmln/components/location/LocationComponentManager.java +0 -0
  90. /package/android/{rctmln/src → src}/main/java/com/maplibre/rctmln/components/location/RCTMLNNativeUserLocation.java +0 -0
  91. /package/android/{rctmln/src → src}/main/java/com/maplibre/rctmln/components/location/RCTMLNNativeUserLocationManager.java +0 -0
  92. /package/android/{rctmln/src → src}/main/java/com/maplibre/rctmln/components/mapview/LayerSourceInfo.java +0 -0
  93. /package/android/{rctmln/src → src}/main/java/com/maplibre/rctmln/components/mapview/RCTMLNAndroidTextureMapView.java +0 -0
  94. /package/android/{rctmln/src → src}/main/java/com/maplibre/rctmln/components/mapview/RCTMLNAndroidTextureMapViewManager.java +0 -0
  95. /package/android/{rctmln/src → src}/main/java/com/maplibre/rctmln/components/mapview/RCTMLNMapView.java +0 -0
  96. /package/android/{rctmln/src → src}/main/java/com/maplibre/rctmln/components/mapview/RCTMLNMapViewManager.java +0 -0
  97. /package/android/{rctmln/src → src}/main/java/com/maplibre/rctmln/components/mapview/helpers/CameraChangeTracker.java +0 -0
  98. /package/android/{rctmln/src → src}/main/java/com/maplibre/rctmln/components/styles/RCTMLNStyle.java +0 -0
  99. /package/android/{rctmln/src → src}/main/java/com/maplibre/rctmln/components/styles/RCTMLNStyleFactory.java +0 -0
  100. /package/android/{rctmln/src → src}/main/java/com/maplibre/rctmln/components/styles/RCTMLNStyleFunctionParser.java +0 -0
  101. /package/android/{rctmln/src → src}/main/java/com/maplibre/rctmln/components/styles/RCTMLNStyleValue.java +0 -0
  102. /package/android/{rctmln/src → src}/main/java/com/maplibre/rctmln/components/styles/layers/RCTLayer.java +0 -0
  103. /package/android/{rctmln/src → src}/main/java/com/maplibre/rctmln/components/styles/layers/RCTMLNBackgroundLayer.java +0 -0
  104. /package/android/{rctmln/src → src}/main/java/com/maplibre/rctmln/components/styles/layers/RCTMLNBackgroundLayerManager.java +0 -0
  105. /package/android/{rctmln/src → src}/main/java/com/maplibre/rctmln/components/styles/layers/RCTMLNCircleLayer.java +0 -0
  106. /package/android/{rctmln/src → src}/main/java/com/maplibre/rctmln/components/styles/layers/RCTMLNCircleLayerManager.java +0 -0
  107. /package/android/{rctmln/src → src}/main/java/com/maplibre/rctmln/components/styles/layers/RCTMLNFillExtrusionLayer.java +0 -0
  108. /package/android/{rctmln/src → src}/main/java/com/maplibre/rctmln/components/styles/layers/RCTMLNFillExtrusionLayerManager.java +0 -0
  109. /package/android/{rctmln/src → src}/main/java/com/maplibre/rctmln/components/styles/layers/RCTMLNFillLayer.java +0 -0
  110. /package/android/{rctmln/src → src}/main/java/com/maplibre/rctmln/components/styles/layers/RCTMLNFillLayerManager.java +0 -0
  111. /package/android/{rctmln/src → src}/main/java/com/maplibre/rctmln/components/styles/layers/RCTMLNHeatmapLayer.java +0 -0
  112. /package/android/{rctmln/src → src}/main/java/com/maplibre/rctmln/components/styles/layers/RCTMLNHeatmapLayerManager.java +0 -0
  113. /package/android/{rctmln/src → src}/main/java/com/maplibre/rctmln/components/styles/layers/RCTMLNLineLayer.java +0 -0
  114. /package/android/{rctmln/src → src}/main/java/com/maplibre/rctmln/components/styles/layers/RCTMLNLineLayerManager.java +0 -0
  115. /package/android/{rctmln/src → src}/main/java/com/maplibre/rctmln/components/styles/layers/RCTMLNRasterLayer.java +0 -0
  116. /package/android/{rctmln/src → src}/main/java/com/maplibre/rctmln/components/styles/layers/RCTMLNRasterLayerManager.java +0 -0
  117. /package/android/{rctmln/src → src}/main/java/com/maplibre/rctmln/components/styles/layers/RCTMLNSymbolLayer.java +0 -0
  118. /package/android/{rctmln/src → src}/main/java/com/maplibre/rctmln/components/styles/layers/RCTMLNSymbolLayerManager.java +0 -0
  119. /package/android/{rctmln/src → src}/main/java/com/maplibre/rctmln/components/styles/light/RCTMLNLight.java +0 -0
  120. /package/android/{rctmln/src → src}/main/java/com/maplibre/rctmln/components/styles/light/RCTMLNLightManager.java +0 -0
  121. /package/android/{rctmln/src → src}/main/java/com/maplibre/rctmln/components/styles/sources/RCTMLNImageSource.java +0 -0
  122. /package/android/{rctmln/src → src}/main/java/com/maplibre/rctmln/components/styles/sources/RCTMLNImageSourceManager.java +0 -0
  123. /package/android/{rctmln/src → src}/main/java/com/maplibre/rctmln/components/styles/sources/RCTMLNRasterSource.java +0 -0
  124. /package/android/{rctmln/src → src}/main/java/com/maplibre/rctmln/components/styles/sources/RCTMLNRasterSourceManager.java +0 -0
  125. /package/android/{rctmln/src → src}/main/java/com/maplibre/rctmln/components/styles/sources/RCTMLNShapeSource.java +0 -0
  126. /package/android/{rctmln/src → src}/main/java/com/maplibre/rctmln/components/styles/sources/RCTMLNShapeSourceManager.java +0 -0
  127. /package/android/{rctmln/src → src}/main/java/com/maplibre/rctmln/components/styles/sources/RCTMLNTileSource.java +0 -0
  128. /package/android/{rctmln/src → src}/main/java/com/maplibre/rctmln/components/styles/sources/RCTMLNTileSourceManager.java +0 -0
  129. /package/android/{rctmln/src → src}/main/java/com/maplibre/rctmln/components/styles/sources/RCTMLNVectorSource.java +0 -0
  130. /package/android/{rctmln/src → src}/main/java/com/maplibre/rctmln/components/styles/sources/RCTMLNVectorSourceManager.java +0 -0
  131. /package/android/{rctmln/src → src}/main/java/com/maplibre/rctmln/components/styles/sources/RCTSource.java +0 -0
  132. /package/android/{rctmln/src → src}/main/java/com/maplibre/rctmln/events/AbstractEvent.java +0 -0
  133. /package/android/{rctmln/src → src}/main/java/com/maplibre/rctmln/events/AndroidCallbackEvent.java +0 -0
  134. /package/android/{rctmln/src → src}/main/java/com/maplibre/rctmln/events/EventEmitter.java +0 -0
  135. /package/android/{rctmln/src → src}/main/java/com/maplibre/rctmln/events/FeatureClickEvent.java +0 -0
  136. /package/android/{rctmln/src → src}/main/java/com/maplibre/rctmln/events/IEvent.java +0 -0
  137. /package/android/{rctmln/src → src}/main/java/com/maplibre/rctmln/events/ImageMissingEvent.java +0 -0
  138. /package/android/{rctmln/src → src}/main/java/com/maplibre/rctmln/events/LocationEvent.java +0 -0
  139. /package/android/{rctmln/src → src}/main/java/com/maplibre/rctmln/events/MapChangeEvent.java +0 -0
  140. /package/android/{rctmln/src → src}/main/java/com/maplibre/rctmln/events/MapClickEvent.java +0 -0
  141. /package/android/{rctmln/src → src}/main/java/com/maplibre/rctmln/events/MapUserTrackingModeEvent.java +0 -0
  142. /package/android/{rctmln/src → src}/main/java/com/maplibre/rctmln/events/OfflineEvent.java +0 -0
  143. /package/android/{rctmln/src → src}/main/java/com/maplibre/rctmln/events/PointAnnotationClickEvent.java +0 -0
  144. /package/android/{rctmln/src → src}/main/java/com/maplibre/rctmln/events/PointAnnotationDragEvent.java +0 -0
  145. /package/android/{rctmln/src → src}/main/java/com/maplibre/rctmln/events/constants/EventKeys.java +0 -0
  146. /package/android/{rctmln/src → src}/main/java/com/maplibre/rctmln/events/constants/EventTypes.java +0 -0
  147. /package/android/{rctmln/src → src}/main/java/com/maplibre/rctmln/http/CustomHeadersInterceptor.java +0 -0
  148. /package/android/{rctmln/src → src}/main/java/com/maplibre/rctmln/location/LocationManager.java +0 -0
  149. /package/android/{rctmln/src → src}/main/java/com/maplibre/rctmln/location/UserLocation.java +0 -0
  150. /package/android/{rctmln/src → src}/main/java/com/maplibre/rctmln/location/UserLocationVerticalAlignment.java +0 -0
  151. /package/android/{rctmln/src → src}/main/java/com/maplibre/rctmln/location/UserTrackingMode.java +0 -0
  152. /package/android/{rctmln/src → src}/main/java/com/maplibre/rctmln/location/UserTrackingState.java +0 -0
  153. /package/android/{rctmln/src → src}/main/java/com/maplibre/rctmln/modules/RCTMLNLocationModule.java +0 -0
  154. /package/android/{rctmln/src → src}/main/java/com/maplibre/rctmln/modules/RCTMLNLogging.java +0 -0
  155. /package/android/{rctmln/src → src}/main/java/com/maplibre/rctmln/modules/RCTMLNModule.java +0 -0
  156. /package/android/{rctmln/src → src}/main/java/com/maplibre/rctmln/modules/RCTMLNOfflineModule.java +0 -0
  157. /package/android/{rctmln/src → src}/main/java/com/maplibre/rctmln/modules/RCTMLNSnapshotModule.java +0 -0
  158. /package/android/{rctmln/src → src}/main/java/com/maplibre/rctmln/utils/BitmapUtils.java +0 -0
  159. /package/android/{rctmln/src → src}/main/java/com/maplibre/rctmln/utils/ClusterPropertyEntry.java +0 -0
  160. /package/android/{rctmln/src → src}/main/java/com/maplibre/rctmln/utils/ConvertUtils.java +0 -0
  161. /package/android/{rctmln/src → src}/main/java/com/maplibre/rctmln/utils/DownloadMapImageTask.java +0 -0
  162. /package/android/{rctmln/src → src}/main/java/com/maplibre/rctmln/utils/ExpressionParser.java +0 -0
  163. /package/android/{rctmln/src → src}/main/java/com/maplibre/rctmln/utils/GeoJSONUtils.java +0 -0
  164. /package/android/{rctmln/src → src}/main/java/com/maplibre/rctmln/utils/GeoViewport.java +0 -0
  165. /package/android/{rctmln/src → src}/main/java/com/maplibre/rctmln/utils/ImageEntry.java +0 -0
  166. /package/android/{rctmln/src → src}/main/java/com/maplibre/rctmln/utils/ResourceUtils.java +0 -0
  167. /package/android/{rctmln/src → src}/main/java/com/maplibre/rctmln/utils/SimpleEventCallback.java +0 -0
  168. /package/android/{rctmln/src → src}/main/java/com/maplibre/rctmln/utils/SphericalMercator.java +0 -0
  169. /package/android/{rctmln/src → src}/main/res/drawable/empty.xml +0 -0
  170. /package/android/{rctmln/src → src}/main/res/drawable/empty_drawable.png +0 -0
  171. /package/android/{rctmln/src → src}/main/res/drawable-xxhdpi/red_marker.png +0 -0
  172. /package/android/{rctmln/src → src}/main/res/layout/annotation.xml +0 -0
  173. /package/android/{rctmln/src → src}/main/res/values/strings.xml +0 -0
@@ -1,6 +1,6 @@
1
- const iosPropNameOverrides = {};
1
+ const iosPropNameOverrides: Record<string, string> = {};
2
2
 
3
- const iosSpecOverrides = {
3
+ const iosSpecOverrides: Record<string, string> = {
4
4
  "icon-allow-overlap": "icon-allows-overlap",
5
5
  "icon-image": "icon-image-name",
6
6
  "icon-ignore-placement": "icon-ignores-placement",
@@ -40,19 +40,18 @@ const iosSpecOverrides = {
40
40
  "text-writing-mode": "text-writing-modes",
41
41
  };
42
42
 
43
- function exists(value) {
43
+ export function exists<T>(value: T): value is NonNullable<T> {
44
44
  return typeof value !== "undefined" && value !== null;
45
45
  }
46
- global.exists = exists;
47
46
 
48
- global.getValue = function (value, defaultValue) {
47
+ export function getValue(value: any, defaultValue: any) {
49
48
  if (!exists(value) || value === "") {
50
49
  return defaultValue;
51
50
  }
52
51
  return value;
53
- };
52
+ }
54
53
 
55
- function camelCase(str, delimiter = "-") {
54
+ export function camelCase(str: string, delimiter = "-") {
56
55
  const parts = str.split(delimiter);
57
56
  return parts
58
57
  .map((part, index) => {
@@ -63,9 +62,8 @@ function camelCase(str, delimiter = "-") {
63
62
  })
64
63
  .join("");
65
64
  }
66
- global.camelCase = camelCase;
67
65
 
68
- function pascalCase(str, delimiter = "-") {
66
+ export function pascalCase(str: string, delimiter = "-") {
69
67
  const parts = str.split(delimiter);
70
68
  return parts
71
69
  .map((part) => {
@@ -73,16 +71,15 @@ function pascalCase(str, delimiter = "-") {
73
71
  })
74
72
  .join("");
75
73
  }
76
- global.pascalCase = pascalCase;
77
74
 
78
- global.setLayerMethodName = function (layer, platform) {
75
+ export function setLayerMethodName(layer: any, platform: "android" | "ios") {
79
76
  if (platform === "ios") {
80
77
  return `${camelCase(layer.name)}Layer`;
81
78
  }
82
79
  return `set${pascalCase(layer.name)}LayerStyle`;
83
- };
80
+ }
84
81
 
85
- global.getLayerType = function (layer, platform) {
82
+ export function getLayerType(layer: any, platform: "android" | "ios") {
86
83
  const isIOS = platform === "ios";
87
84
 
88
85
  switch (layer.name) {
@@ -111,20 +108,20 @@ global.getLayerType = function (layer, platform) {
111
108
  `Is ${layer.name} a new layer? We should add support for it!`,
112
109
  );
113
110
  }
114
- };
111
+ }
115
112
 
116
- global.ifOrElseIf = function (index) {
113
+ export function ifOrElseIf(index: number) {
117
114
  if (index === 0) {
118
115
  return "if";
119
116
  }
120
117
  return "} else if";
121
- };
118
+ }
122
119
 
123
- global.iosStringArrayLiteral = function (arr) {
124
- return `@[@${arr.map((item) => `"${item}"`).join(", @")}]`;
125
- };
120
+ export function iosStringArrayLiteral(array: string[]) {
121
+ return `@[@${array.map((item) => `"${item}"`).join(", @")}]`;
122
+ }
126
123
 
127
- function iosPropName(name) {
124
+ export function iosPropName(name: string) {
128
125
  if (name.indexOf("visibility") !== -1) {
129
126
  return "visible";
130
127
  }
@@ -137,24 +134,22 @@ function iosPropName(name) {
137
134
  return name;
138
135
  }
139
136
 
140
- global.iosPropName = iosPropName;
141
-
142
- global.iosMapLibrePropName = function (name) {
137
+ export function iosMapLibrePropName(name: string) {
143
138
  const result = iosPropName(name);
144
139
  if (result === "fillExtrusionVerticalGradient") {
145
140
  return "fillExtrusionHasVerticalGradient";
146
141
  }
147
142
  return undefined;
148
- };
143
+ }
149
144
 
150
- global.iosPropMethodName = function (layer, name) {
145
+ export function iosPropMethodName(layer: any, name: string) {
151
146
  if (name.indexOf("Visibility") !== -1) {
152
147
  return pascalCase(layer.name) + "StyleLayer" + name;
153
148
  }
154
149
  return name;
155
- };
150
+ }
156
151
 
157
- function androidInputType(type, value) {
152
+ export function androidInputType(type: string, value?: string): string {
158
153
  if (type === "array" && value) {
159
154
  return `${androidInputType(value)}[]`;
160
155
  }
@@ -171,9 +166,7 @@ function androidInputType(type, value) {
171
166
  }
172
167
  }
173
168
 
174
- global.androidInputType = androidInputType;
175
-
176
- function androidOutputType(type, value) {
169
+ export function androidOutputType(type: string, value?: any): string {
177
170
  if (type === "array" && value) {
178
171
  return `${androidOutputType(value)}[]`;
179
172
  }
@@ -190,9 +183,7 @@ function androidOutputType(type, value) {
190
183
  }
191
184
  }
192
185
 
193
- global.androidOutputType = androidOutputType;
194
-
195
- global.androidGetConfigType = function (androidType, prop) {
186
+ export function androidGetConfigType(androidType: string, prop: any) {
196
187
  switch (androidType) {
197
188
  case "Integer":
198
189
  return "styleValue.getInt(VALUE_KEY)";
@@ -211,9 +202,9 @@ global.androidGetConfigType = function (androidType, prop) {
211
202
  return "styleValue.getString(VALUE_KEY)";
212
203
  }
213
204
  }
214
- };
205
+ }
215
206
 
216
- global.jsStyleType = function (prop) {
207
+ export function jsStyleType(prop: any) {
217
208
  if (prop.type === "color") {
218
209
  return "StyleTypes.Color";
219
210
  }
@@ -235,9 +226,9 @@ global.jsStyleType = function (prop) {
235
226
  }
236
227
 
237
228
  return "StyleTypes.Constant";
238
- };
229
+ }
239
230
 
240
- global.jsDocPropRequires = function (prop) {
231
+ export function jsDocPropRequires(prop: any) {
241
232
  if (!prop.doc.requires) {
242
233
  return;
243
234
  }
@@ -250,13 +241,13 @@ global.jsDocPropRequires = function (prop) {
250
241
  }
251
242
 
252
243
  return desc;
253
- };
244
+ }
254
245
 
255
- global.getEnums = function (layers) {
256
- const result = {};
246
+ export function getEnums(layers: any[]) {
247
+ const result: Record<string, any> = {};
257
248
 
258
249
  layers.forEach((layer) => {
259
- layer.properties.forEach((property) => {
250
+ layer.properties.forEach((property: any) => {
260
251
  if (
261
252
  property.type === "enum" ||
262
253
  (property.type === "array" && property.value === "enum")
@@ -269,10 +260,10 @@ global.getEnums = function (layers) {
269
260
  });
270
261
  });
271
262
  return Object.values(result);
272
- };
263
+ }
273
264
 
274
- global.dtsInterfaceType = function (prop) {
275
- const propTypes = [];
265
+ export function dtsInterfaceType(prop: any) {
266
+ const propTypes: string[] = [];
276
267
 
277
268
  if (prop.name.indexOf("Translate") !== -1 && prop.type !== "enum") {
278
269
  propTypes.push("Translation");
@@ -332,7 +323,7 @@ ${startAtSpace(2, "")}`;
332
323
  let params = "";
333
324
  if (prop.expression && prop.expression.parameters) {
334
325
  params = `,[${prop.expression.parameters
335
- .map((v) => `'${v}'`)
326
+ .map((v: string) => `'${v}'`)
336
327
  .join(",")}]`;
337
328
  }
338
329
  return `Value<${propTypes[0]}${params}>`;
@@ -340,9 +331,9 @@ ${startAtSpace(2, "")}`;
340
331
  return propTypes[0];
341
332
  }
342
333
  }
343
- };
334
+ }
344
335
 
345
- global.jsDocReactProp = function (prop) {
336
+ export function jsDocReactProp(prop: any) {
346
337
  const propTypes = [];
347
338
 
348
339
  if (prop.type === "color") {
@@ -394,9 +385,9 @@ ${startAtSpace(2, "])")}`;
394
385
  } else {
395
386
  return propTypes[0];
396
387
  }
397
- };
388
+ }
398
389
 
399
- function startAtSpace(spaceCount, str) {
390
+ export function startAtSpace(spaceCount: number, str: string) {
400
391
  let value = "";
401
392
 
402
393
  for (let i = 0; i < spaceCount; i++) {
@@ -406,31 +397,21 @@ function startAtSpace(spaceCount, str) {
406
397
  return `${value}${str}`;
407
398
  }
408
399
 
409
- global.startAtSpace = startAtSpace;
410
-
411
- function replaceNewLine(str) {
412
- if (str === undefined) {
413
- return undefined;
414
- }
415
- if (str === null) {
416
- return null;
417
- }
418
- return str.replace(/\n/g, "<br/>");
400
+ export function replaceNewLine(str: string) {
401
+ return str?.replace(/\n/g, "<br/>");
419
402
  }
420
403
 
421
- global.replaceNewLine = replaceNewLine;
422
-
423
- global.styleMarkdownTableRow = function (style) {
404
+ export function styleMarkdownTableRow(style: any) {
424
405
  return `| \`${style.name}\` | \`${style.type}\` | \`${
425
406
  style.requires.join(", ") || "none"
426
407
  }\` | \`${style.disabledBy.join(", ") || "none"}\` | ${replaceNewLine(
427
408
  style.description,
428
409
  )} |`;
429
- };
410
+ }
430
411
 
431
- global.methodMarkdownTableRow = function (method) {
412
+ export function methodMarkdownTableRow(method: any) {
432
413
  return method.params
433
- .map((param) => {
414
+ .map((param: any) => {
434
415
  return `| \`${param.name}\` | \`${
435
416
  (param.type && param.type.name) || "n/a"
436
417
  }\` | \`${param.optional ? "No" : "Yes"}\` | ${replaceNewLine(
@@ -438,9 +419,9 @@ global.methodMarkdownTableRow = function (method) {
438
419
  )} |`;
439
420
  })
440
421
  .join("\n");
441
- };
422
+ }
442
423
 
443
- function _propMarkdownTableRows(props, prefix = "") {
424
+ function _propMarkdownTableRows(props: any[], prefix = "") {
444
425
  return props
445
426
  .map((prop) => {
446
427
  let { type } = prop;
@@ -449,51 +430,46 @@ function _propMarkdownTableRows(props, prefix = "") {
449
430
  }
450
431
  const defaultValue = prop.default || "";
451
432
  const { description = "" } = prop;
433
+
452
434
  let result = `| ${prefix}${
453
435
  prop.name
454
436
  } | \`${type.replace(/^\\\| /, "").replace(/\n/g, " ")}\` | \`${defaultValue}\` | \`${
455
437
  prop.required
456
438
  }\` | ${replaceNewLine(description)} |`;
439
+
457
440
  if (type === "shape") {
458
441
  result = `${result}\n${_propMarkdownTableRows(
459
442
  prop.type.value,
460
443
  `&nbsp;&nbsp;${prefix}`,
461
444
  )}`;
462
445
  }
446
+
463
447
  return result;
464
448
  })
465
449
  .join("\n");
466
450
  }
467
451
 
468
- global.propMarkdownTableRows = function (component) {
452
+ export function propMarkdownTableRows(component: any) {
469
453
  return _propMarkdownTableRows(component.props, "");
470
- };
454
+ }
471
455
 
472
- global.getMarkdownMethodSignature = function (method) {
456
+ export function getMarkdownMethodSignature(method: {
457
+ name: string;
458
+ params: { name: string; optional: boolean }[];
459
+ }) {
473
460
  const params = method.params
474
- .map((param, i) => {
475
- const isOptional = param.optional;
461
+ .map((param) => (param.optional ? `[${param.name}]` : param.name))
462
+ .join(", ");
476
463
 
477
- let name = "";
478
-
479
- if (i !== 0) {
480
- name += ", ";
481
- }
482
-
483
- name += param.name;
484
- return isOptional ? `[${name}]` : name;
485
- })
486
- .join("");
487
-
488
- return `${method.name}(${params})`;
489
- };
464
+ return `\`${method.name}(${params})\``;
465
+ }
490
466
 
491
- global.getMarkdownMethodExamples = function (method) {
467
+ export function getMarkdownMethodExamples(method: any) {
492
468
  if (method.examples == null) {
493
469
  return null;
494
470
  }
495
471
  return method.examples
496
- .map((example) => {
472
+ .map((example: string) => {
497
473
  return `
498
474
 
499
475
  \`\`\`javascript
@@ -503,9 +479,9 @@ ${example.trim()}
503
479
  `;
504
480
  })
505
481
  .join("");
506
- };
482
+ }
507
483
 
508
- global.getStyleDefaultValue = function (style) {
484
+ export function getStyleDefaultValue(style: any) {
509
485
  if (style.type === "string" && style.default === "") {
510
486
  return "empty string";
511
487
  } else if (style.type.includes("array")) {
@@ -513,7 +489,7 @@ global.getStyleDefaultValue = function (style) {
513
489
  } else {
514
490
  return style.default;
515
491
  }
516
- };
492
+ }
517
493
 
518
494
  Object.keys(iosSpecOverrides).forEach((propName) => {
519
495
  const camelCasePropName = camelCase(propName);
@@ -521,8 +497,3 @@ Object.keys(iosSpecOverrides).forEach((propName) => {
521
497
  iosSpecOverrides[propName],
522
498
  );
523
499
  });
524
-
525
- module.exports = {
526
- camelCase,
527
- pascalCase,
528
- };
@@ -0,0 +1,53 @@
1
+ import { promises as fs } from "fs";
2
+ import path from "node:path";
3
+
4
+ async function getNativeVersion(pathSegments: string[], regex: RegExp) {
5
+ const resolvedFilePath = path.join(__dirname, "..", "..", ...pathSegments);
6
+ const lines = (await fs.readFile(resolvedFilePath, "utf8")).split("\n");
7
+ const line = lines.filter((i) => regex.exec(i))[0];
8
+ const version = regex.exec(line)?.[1];
9
+
10
+ if (!version) {
11
+ throw new Error("Could not find native version from " + resolvedFilePath);
12
+ }
13
+
14
+ return version;
15
+ }
16
+
17
+ let cachedAndroidVersion: string;
18
+ let cachedIosVersion: string;
19
+
20
+ export const getAndroidVersion = async () => {
21
+ if (!cachedAndroidVersion) {
22
+ cachedAndroidVersion = await getNativeVersion(
23
+ ["android", "build.gradle"],
24
+ /^\s+implementation\s+"org.maplibre.gl:android-sdk:(\d+\.\d+\.\d+)"$/,
25
+ );
26
+ }
27
+
28
+ return cachedAndroidVersion;
29
+ };
30
+
31
+ export const getIosVersion = async () => {
32
+ if (!cachedIosVersion) {
33
+ cachedIosVersion = await getNativeVersion(
34
+ ["maplibre-react-native.podspec"],
35
+ /^\s+version:\s*"(\d+\.\d+\.\d+)"$/,
36
+ );
37
+ }
38
+
39
+ return cachedIosVersion;
40
+ };
41
+
42
+ export function isVersionGTE(
43
+ version: string,
44
+ otherVersion: string | undefined,
45
+ ) {
46
+ return (
47
+ !!otherVersion?.match(/^(\d+\.\d+\.\d+)$/) &&
48
+ version.localeCompare(otherVersion, undefined, {
49
+ numeric: true,
50
+ sensitivity: "base",
51
+ }) >= 0
52
+ );
53
+ }
package/tsconfig.json CHANGED
@@ -10,6 +10,7 @@
10
10
  "isolatedModules": true,
11
11
  "skipLibCheck": true,
12
12
  "strict": true,
13
+ "strictNullChecks": true,
13
14
  "types": ["node", "react-native", "geojson", "jest"],
14
15
  "moduleResolution": "node",
15
16
  "allowSyntheticDefaultImports": true,
@@ -17,7 +18,5 @@
17
18
  "noUnusedLocals": true,
18
19
  "noImplicitReturns": true
19
20
  },
20
- "include": [
21
- "javascript/**/*", "index.ts"
22
- ],
21
+ "include": ["javascript/**/*", "index.ts"]
23
22
  }
package/.husky/pre-commit DELETED
@@ -1,5 +0,0 @@
1
- #!/usr/bin/env sh
2
- . "$(dirname -- "$0")/_/husky.sh"
3
-
4
- yarn lint-staged
5
- yarn generate
@@ -1,2 +0,0 @@
1
- connection.project.dir=../../packages/react-native-app/android
2
- eclipse.preferences.version=1
@@ -1,64 +0,0 @@
1
- apply plugin: 'com.android.library'
2
-
3
- def safeExtGet(prop, fallback) {
4
- rootProject.ext.has(prop) ? rootProject.ext.get(prop) : fallback
5
- }
6
-
7
- def isNewArchitectureEnabled() {
8
- return project.hasProperty("newArchEnabled") && project.newArchEnabled == "true"
9
- }
10
-
11
- android {
12
- compileSdkVersion safeExtGet("compileSdkVersion", 33)
13
- buildToolsVersion safeExtGet("buildToolsVersion", '33.0.1')
14
-
15
- defaultConfig {
16
- minSdkVersion safeExtGet('minSdkVersion', 16)
17
- targetSdkVersion safeExtGet('targetSdkVersion', 26)
18
- versionCode 1
19
- versionName "1.0"
20
- buildConfigField("boolean", "IS_NEW_ARCHITECTURE_ENABLED", isNewArchitectureEnabled().toString())
21
- }
22
-
23
- compileOptions {
24
- sourceCompatibility JavaVersion.VERSION_1_8
25
- targetCompatibility JavaVersion.VERSION_1_8
26
- }
27
-
28
- buildTypes {
29
- release {
30
- minifyEnabled false
31
- proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
32
- }
33
- }
34
- }
35
-
36
- dependencies {
37
- // The version of react-native is set by the React Native Gradle Plugin
38
- implementation("com.facebook.react:react-android")
39
-
40
- // MapLibre SDK
41
- implementation "org.maplibre.gl:android-sdk:11.5.0"
42
- implementation "org.maplibre.gl:android-sdk-turf:6.0.1"
43
-
44
- // Dependencies
45
- implementation "androidx.vectordrawable:vectordrawable:1.1.0"
46
- implementation "androidx.annotation:annotation:1.7.0"
47
- implementation "androidx.appcompat:appcompat:1.6.1"
48
- implementation "com.squareup.okhttp3:okhttp:${safeExtGet('okhttpVersion', '4.9.0')}"
49
- implementation "com.squareup.okhttp3:okhttp-urlconnection:${safeExtGet('okhttpVersion', '4.9.0')}"
50
-
51
-
52
- // MapLibre plugins
53
- implementation ("org.maplibre.gl:android-plugin-localization-v9:3.0.1")
54
- implementation ("org.maplibre.gl:android-plugin-annotation-v9:3.0.1")
55
- implementation ("org.maplibre.gl:android-plugin-markerview-v9:3.0.1")
56
- }
57
-
58
- allprojects {
59
- repositories {
60
- maven {
61
- url = "https://dl.bintray.com/maplibre/maplibre-gl-native"
62
- }
63
- }
64
- }
@@ -1,25 +0,0 @@
1
- # Add project specific ProGuard rules here.
2
- # By default, the flags in this file are appended to flags specified
3
- # in /Users/nickitaliano/Library/Android/sdk/tools/proguard/proguard-android.txt
4
- # You can edit the include path and order by changing the proguardFiles
5
- # directive in build.gradle.
6
- #
7
- # For more details, see
8
- # http://developer.android.com/guide/developing/tools/proguard.html
9
-
10
- # Add any project specific keep options here:
11
-
12
- # If your project uses WebView with JS, uncomment the following
13
- # and specify the fully qualified class name to the JavaScript interface
14
- # class:
15
- #-keepclassmembers class fqcn.of.javascript.interface.for.webview {
16
- # public *;
17
- #}
18
-
19
- # Uncomment this to preserve the line number information for
20
- # debugging stack traces.
21
- #-keepattributes SourceFile,LineNumberTable
22
-
23
- # If you keep the line number information, uncomment this to
24
- # hide the original source file name.
25
- #-renamesourcefileattribute SourceFile