@maplibre/maplibre-react-native 10.0.0-beta.1 → 10.0.0-beta.11

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 (259) hide show
  1. package/README.md +36 -35
  2. package/android/build.gradle +98 -51
  3. package/android/gradle.properties +7 -0
  4. package/android/src/main/AndroidManifest.xml +4 -2
  5. package/android/src/main/AndroidManifestNew.xml +5 -0
  6. package/android/src/main/java/org/maplibre/reactnative/MLRNPackage.java +0 -5
  7. package/android/src/main/java/org/maplibre/reactnative/components/mapview/MLRNMapView.java +11 -13
  8. package/android/src/main/java/org/maplibre/reactnative/components/mapview/MLRNMapViewManager.java +4 -11
  9. package/android/src/main/java/org/maplibre/reactnative/components/styles/MLRNStyle.java +1 -4
  10. package/android/src/main/java/org/maplibre/reactnative/components/styles/MLRNStyleFactory.java +10 -11
  11. package/android/src/main/java/org/maplibre/reactnative/components/styles/sources/MLRNShapeSource.java +0 -66
  12. package/android/src/main/java/org/maplibre/reactnative/components/styles/sources/MLRNShapeSourceManager.java +0 -28
  13. package/android/src/main/java/org/maplibre/reactnative/modules/MLRNModule.java +3 -146
  14. package/android/src/main/java/org/maplibre/reactnative/modules/MLRNOfflineModule.java +1 -3
  15. package/android/src/main/java/org/maplibre/reactnative/utils/GeoJSONUtils.java +80 -0
  16. package/ios/MLRN/MLRNBackgroundLayer.h +0 -1
  17. package/ios/MLRN/MLRNFillExtrusionLayer.h +0 -1
  18. package/ios/MLRN/MLRNFillLayer.h +0 -1
  19. package/ios/MLRN/MLRNFillLayer.m +1 -0
  20. package/ios/MLRN/MLRNLineLayer.h +0 -1
  21. package/ios/MLRN/MLRNMapView.h +1 -1
  22. package/ios/MLRN/MLRNMapView.m +7 -7
  23. package/ios/MLRN/MLRNMapViewManager.m +1 -1
  24. package/ios/MLRN/MLRNModule.m +0 -139
  25. package/ios/MLRN/MLRNRasterLayer.h +0 -1
  26. package/ios/MLRN/MLRNShapeSource.h +0 -11
  27. package/ios/MLRN/MLRNShapeSource.m +0 -38
  28. package/ios/MLRN/MLRNShapeSourceManager.m +0 -68
  29. package/ios/MLRN/MLRNSymbolLayer.h +1 -7
  30. package/ios/MLRN/MLRNSymbolLayer.m +1 -89
  31. package/ios/MLRN/MLRNSymbolLayerManager.m +0 -1
  32. package/lib/commonjs/MLRNModule.js +7 -5
  33. package/lib/commonjs/MLRNModule.js.map +1 -1
  34. package/lib/commonjs/MapLibreRN.js +3 -15
  35. package/lib/commonjs/MapLibreRN.js.map +1 -1
  36. package/lib/commonjs/components/Annotation.js.map +1 -1
  37. package/lib/commonjs/components/Images.js +1 -5
  38. package/lib/commonjs/components/Images.js.map +1 -1
  39. package/lib/commonjs/components/MapView.js +15 -28
  40. package/lib/commonjs/components/MapView.js.map +1 -1
  41. package/lib/commonjs/components/ShapeSource.js +6 -38
  42. package/lib/commonjs/components/ShapeSource.js.map +1 -1
  43. package/lib/commonjs/components/SymbolLayer.js +2 -17
  44. package/lib/commonjs/components/SymbolLayer.js.map +1 -1
  45. package/lib/commonjs/components/UserLocation.js.map +1 -1
  46. package/lib/commonjs/components/VectorSource.js +1 -11
  47. package/lib/commonjs/components/VectorSource.js.map +1 -1
  48. package/lib/commonjs/modules/offline/offlineManager.js +1 -1
  49. package/lib/commonjs/modules/offline/offlineManager.js.map +1 -1
  50. package/lib/commonjs/types/MapLibreRNStyles.js +6 -0
  51. package/lib/commonjs/types/MapLibreRNStyles.js.map +1 -0
  52. package/lib/commonjs/utils/StyleValue.js +2 -2
  53. package/lib/commonjs/utils/StyleValue.js.map +1 -1
  54. package/lib/commonjs/utils/getStylePropertyType.js +252 -0
  55. package/lib/commonjs/utils/getStylePropertyType.js.map +1 -0
  56. package/lib/module/MLRNModule.js +3 -2
  57. package/lib/module/MLRNModule.js.map +1 -1
  58. package/lib/module/MapLibreRN.js +1 -5
  59. package/lib/module/MapLibreRN.js.map +1 -1
  60. package/lib/module/components/Annotation.js.map +1 -1
  61. package/lib/module/components/Images.js +1 -5
  62. package/lib/module/components/Images.js.map +1 -1
  63. package/lib/module/components/MapView.js +15 -28
  64. package/lib/module/components/MapView.js.map +1 -1
  65. package/lib/module/components/ShapeSource.js +5 -37
  66. package/lib/module/components/ShapeSource.js.map +1 -1
  67. package/lib/module/components/SymbolLayer.js +3 -18
  68. package/lib/module/components/SymbolLayer.js.map +1 -1
  69. package/lib/module/components/UserLocation.js.map +1 -1
  70. package/lib/module/components/VectorSource.js +1 -11
  71. package/lib/module/components/VectorSource.js.map +1 -1
  72. package/lib/module/modules/offline/offlineManager.js +1 -1
  73. package/lib/module/modules/offline/offlineManager.js.map +1 -1
  74. package/lib/module/types/MapLibreRNStyles.js +4 -0
  75. package/lib/module/types/MapLibreRNStyles.js.map +1 -0
  76. package/lib/module/utils/StyleValue.js +2 -2
  77. package/lib/module/utils/StyleValue.js.map +1 -1
  78. package/lib/module/utils/getStylePropertyType.js +248 -0
  79. package/lib/module/utils/getStylePropertyType.js.map +1 -0
  80. package/lib/typescript/commonjs/jest.config.d.ts +2 -0
  81. package/lib/typescript/commonjs/jest.config.d.ts.map +1 -0
  82. package/lib/typescript/commonjs/src/MLRNModule.d.ts +3 -7
  83. package/lib/typescript/commonjs/src/MLRNModule.d.ts.map +1 -1
  84. package/lib/typescript/commonjs/src/MapLibreRN.d.ts +5 -8
  85. package/lib/typescript/commonjs/src/MapLibreRN.d.ts.map +1 -1
  86. package/lib/typescript/commonjs/src/components/Annotation.d.ts +2 -2
  87. package/lib/typescript/commonjs/src/components/Annotation.d.ts.map +1 -1
  88. package/lib/typescript/commonjs/src/components/BackgroundLayer.d.ts +2 -2
  89. package/lib/typescript/commonjs/src/components/BackgroundLayer.d.ts.map +1 -1
  90. package/lib/typescript/commonjs/src/components/Camera.d.ts +1 -1
  91. package/lib/typescript/commonjs/src/components/CircleLayer.d.ts +2 -2
  92. package/lib/typescript/commonjs/src/components/CircleLayer.d.ts.map +1 -1
  93. package/lib/typescript/commonjs/src/components/FillExtrusionLayer.d.ts +2 -2
  94. package/lib/typescript/commonjs/src/components/FillExtrusionLayer.d.ts.map +1 -1
  95. package/lib/typescript/commonjs/src/components/FillLayer.d.ts +2 -2
  96. package/lib/typescript/commonjs/src/components/FillLayer.d.ts.map +1 -1
  97. package/lib/typescript/commonjs/src/components/HeatmapLayer.d.ts +2 -2
  98. package/lib/typescript/commonjs/src/components/HeatmapLayer.d.ts.map +1 -1
  99. package/lib/typescript/commonjs/src/components/Images.d.ts.map +1 -1
  100. package/lib/typescript/commonjs/src/components/Light.d.ts +2 -2
  101. package/lib/typescript/commonjs/src/components/Light.d.ts.map +1 -1
  102. package/lib/typescript/commonjs/src/components/LineLayer.d.ts +2 -2
  103. package/lib/typescript/commonjs/src/components/LineLayer.d.ts.map +1 -1
  104. package/lib/typescript/commonjs/src/components/MapView.d.ts +7 -11
  105. package/lib/typescript/commonjs/src/components/MapView.d.ts.map +1 -1
  106. package/lib/typescript/commonjs/src/components/RasterLayer.d.ts +2 -2
  107. package/lib/typescript/commonjs/src/components/RasterLayer.d.ts.map +1 -1
  108. package/lib/typescript/commonjs/src/components/ShapeSource.d.ts +1 -2
  109. package/lib/typescript/commonjs/src/components/ShapeSource.d.ts.map +1 -1
  110. package/lib/typescript/commonjs/src/components/SymbolLayer.d.ts +2 -8
  111. package/lib/typescript/commonjs/src/components/SymbolLayer.d.ts.map +1 -1
  112. package/lib/typescript/commonjs/src/components/VectorSource.d.ts.map +1 -1
  113. package/lib/typescript/commonjs/src/hooks/useAbstractLayer.d.ts +2 -2
  114. package/lib/typescript/commonjs/src/hooks/useAbstractLayer.d.ts.map +1 -1
  115. package/lib/typescript/commonjs/src/modules/offline/OfflinePack.d.ts +1 -1
  116. package/lib/typescript/commonjs/src/modules/offline/OfflinePack.d.ts.map +1 -1
  117. package/lib/typescript/commonjs/src/modules/offline/offlineManager.d.ts +4 -14
  118. package/lib/typescript/commonjs/src/modules/offline/offlineManager.d.ts.map +1 -1
  119. package/lib/typescript/commonjs/src/types/MapLibreRNStyles.d.ts +960 -0
  120. package/lib/typescript/commonjs/src/types/MapLibreRNStyles.d.ts.map +1 -0
  121. package/lib/typescript/commonjs/src/utils/StyleValue.d.ts +2 -2
  122. package/lib/typescript/commonjs/src/utils/StyleValue.d.ts.map +1 -1
  123. package/lib/typescript/commonjs/src/utils/animated/AbstractAnimatedCoordinates.d.ts +1 -0
  124. package/lib/typescript/commonjs/src/utils/animated/AbstractAnimatedCoordinates.d.ts.map +1 -1
  125. package/lib/typescript/commonjs/src/utils/animated/AnimatedExtractCoordinateFromArray.d.ts +1 -0
  126. package/lib/typescript/commonjs/src/utils/animated/AnimatedExtractCoordinateFromArray.d.ts.map +1 -1
  127. package/lib/typescript/commonjs/src/utils/animated/AnimatedPoint.d.ts +1 -0
  128. package/lib/typescript/commonjs/src/utils/animated/AnimatedPoint.d.ts.map +1 -1
  129. package/lib/typescript/commonjs/src/utils/animated/AnimatedShape.d.ts +1 -0
  130. package/lib/typescript/commonjs/src/utils/animated/AnimatedShape.d.ts.map +1 -1
  131. package/lib/typescript/commonjs/src/utils/filterUtils.d.ts +1 -1
  132. package/lib/typescript/commonjs/src/utils/filterUtils.d.ts.map +1 -1
  133. package/lib/typescript/commonjs/src/utils/getStylePropertyType.d.ts +35 -0
  134. package/lib/typescript/commonjs/src/utils/getStylePropertyType.d.ts.map +1 -0
  135. package/lib/typescript/module/jest.config.d.ts +2 -0
  136. package/lib/typescript/module/jest.config.d.ts.map +1 -0
  137. package/lib/typescript/module/src/MLRNModule.d.ts +3 -7
  138. package/lib/typescript/module/src/MLRNModule.d.ts.map +1 -1
  139. package/lib/typescript/module/src/MapLibreRN.d.ts +5 -8
  140. package/lib/typescript/module/src/MapLibreRN.d.ts.map +1 -1
  141. package/lib/typescript/module/src/components/Annotation.d.ts +2 -2
  142. package/lib/typescript/module/src/components/Annotation.d.ts.map +1 -1
  143. package/lib/typescript/module/src/components/BackgroundLayer.d.ts +2 -2
  144. package/lib/typescript/module/src/components/BackgroundLayer.d.ts.map +1 -1
  145. package/lib/typescript/module/src/components/Camera.d.ts +1 -1
  146. package/lib/typescript/module/src/components/CircleLayer.d.ts +2 -2
  147. package/lib/typescript/module/src/components/CircleLayer.d.ts.map +1 -1
  148. package/lib/typescript/module/src/components/FillExtrusionLayer.d.ts +2 -2
  149. package/lib/typescript/module/src/components/FillExtrusionLayer.d.ts.map +1 -1
  150. package/lib/typescript/module/src/components/FillLayer.d.ts +2 -2
  151. package/lib/typescript/module/src/components/FillLayer.d.ts.map +1 -1
  152. package/lib/typescript/module/src/components/HeatmapLayer.d.ts +2 -2
  153. package/lib/typescript/module/src/components/HeatmapLayer.d.ts.map +1 -1
  154. package/lib/typescript/module/src/components/Images.d.ts.map +1 -1
  155. package/lib/typescript/module/src/components/Light.d.ts +2 -2
  156. package/lib/typescript/module/src/components/Light.d.ts.map +1 -1
  157. package/lib/typescript/module/src/components/LineLayer.d.ts +2 -2
  158. package/lib/typescript/module/src/components/LineLayer.d.ts.map +1 -1
  159. package/lib/typescript/module/src/components/MapView.d.ts +7 -11
  160. package/lib/typescript/module/src/components/MapView.d.ts.map +1 -1
  161. package/lib/typescript/module/src/components/RasterLayer.d.ts +2 -2
  162. package/lib/typescript/module/src/components/RasterLayer.d.ts.map +1 -1
  163. package/lib/typescript/module/src/components/ShapeSource.d.ts +1 -2
  164. package/lib/typescript/module/src/components/ShapeSource.d.ts.map +1 -1
  165. package/lib/typescript/module/src/components/SymbolLayer.d.ts +2 -8
  166. package/lib/typescript/module/src/components/SymbolLayer.d.ts.map +1 -1
  167. package/lib/typescript/module/src/components/VectorSource.d.ts.map +1 -1
  168. package/lib/typescript/module/src/hooks/useAbstractLayer.d.ts +2 -2
  169. package/lib/typescript/module/src/hooks/useAbstractLayer.d.ts.map +1 -1
  170. package/lib/typescript/module/src/modules/offline/OfflinePack.d.ts +1 -1
  171. package/lib/typescript/module/src/modules/offline/OfflinePack.d.ts.map +1 -1
  172. package/lib/typescript/module/src/modules/offline/offlineManager.d.ts +4 -14
  173. package/lib/typescript/module/src/modules/offline/offlineManager.d.ts.map +1 -1
  174. package/lib/typescript/module/src/types/MapLibreRNStyles.d.ts +960 -0
  175. package/lib/typescript/module/src/types/MapLibreRNStyles.d.ts.map +1 -0
  176. package/lib/typescript/module/src/utils/StyleValue.d.ts +2 -2
  177. package/lib/typescript/module/src/utils/StyleValue.d.ts.map +1 -1
  178. package/lib/typescript/module/src/utils/animated/AbstractAnimatedCoordinates.d.ts +1 -0
  179. package/lib/typescript/module/src/utils/animated/AbstractAnimatedCoordinates.d.ts.map +1 -1
  180. package/lib/typescript/module/src/utils/animated/AnimatedExtractCoordinateFromArray.d.ts +1 -0
  181. package/lib/typescript/module/src/utils/animated/AnimatedExtractCoordinateFromArray.d.ts.map +1 -1
  182. package/lib/typescript/module/src/utils/animated/AnimatedPoint.d.ts +1 -0
  183. package/lib/typescript/module/src/utils/animated/AnimatedPoint.d.ts.map +1 -1
  184. package/lib/typescript/module/src/utils/animated/AnimatedShape.d.ts +1 -0
  185. package/lib/typescript/module/src/utils/animated/AnimatedShape.d.ts.map +1 -1
  186. package/lib/typescript/module/src/utils/filterUtils.d.ts +1 -1
  187. package/lib/typescript/module/src/utils/filterUtils.d.ts.map +1 -1
  188. package/lib/typescript/module/src/utils/getStylePropertyType.d.ts +35 -0
  189. package/lib/typescript/module/src/utils/getStylePropertyType.d.ts.map +1 -0
  190. package/package.json +31 -38
  191. package/plugin/build/withMapLibre.js +6 -6
  192. package/src/MLRNModule.ts +16 -10
  193. package/src/MapLibreRN.ts +22 -23
  194. package/src/components/Annotation.tsx +3 -3
  195. package/src/components/BackgroundLayer.tsx +2 -2
  196. package/src/components/Camera.tsx +1 -1
  197. package/src/components/CircleLayer.tsx +2 -2
  198. package/src/components/FillExtrusionLayer.tsx +2 -2
  199. package/src/components/FillLayer.tsx +2 -2
  200. package/src/components/HeatmapLayer.tsx +2 -2
  201. package/src/components/Images.tsx +1 -10
  202. package/src/components/Light.tsx +2 -2
  203. package/src/components/LineLayer.tsx +2 -2
  204. package/src/components/MapView.tsx +20 -44
  205. package/src/components/RasterLayer.tsx +2 -2
  206. package/src/components/ShapeSource.tsx +9 -77
  207. package/src/components/SymbolLayer.tsx +7 -35
  208. package/src/components/UserLocation.tsx +2 -2
  209. package/src/components/VectorSource.tsx +5 -21
  210. package/src/hooks/useAbstractLayer.ts +3 -3
  211. package/src/modules/offline/OfflinePack.ts +1 -1
  212. package/src/modules/offline/offlineManager.ts +4 -18
  213. package/src/{utils/MapLibreRNStyles.d.ts → types/MapLibreRNStyles.ts} +85 -405
  214. package/src/utils/StyleValue.ts +4 -4
  215. package/src/utils/filterUtils.ts +1 -1
  216. package/src/utils/getStylePropertyType.ts +265 -0
  217. package/android/install.md +0 -32
  218. package/android/src/main/res/values/strings.xml +0 -3
  219. package/ios/install.md +0 -49
  220. package/lib/commonjs/components/Style.js +0 -266
  221. package/lib/commonjs/components/Style.js.map +0 -1
  222. package/lib/commonjs/types/StyleURL.js +0 -11
  223. package/lib/commonjs/types/StyleURL.js.map +0 -1
  224. package/lib/commonjs/utils/MapLibreRNStyles.d.js +0 -181
  225. package/lib/commonjs/utils/MapLibreRNStyles.d.js.map +0 -1
  226. package/lib/commonjs/utils/deprecation.js +0 -31
  227. package/lib/commonjs/utils/deprecation.js.map +0 -1
  228. package/lib/commonjs/utils/styleMap.js +0 -255
  229. package/lib/commonjs/utils/styleMap.js.map +0 -1
  230. package/lib/module/components/Style.js +0 -261
  231. package/lib/module/components/Style.js.map +0 -1
  232. package/lib/module/types/StyleURL.js +0 -7
  233. package/lib/module/types/StyleURL.js.map +0 -1
  234. package/lib/module/utils/MapLibreRNStyles.d.js +0 -180
  235. package/lib/module/utils/MapLibreRNStyles.d.js.map +0 -1
  236. package/lib/module/utils/deprecation.js +0 -27
  237. package/lib/module/utils/deprecation.js.map +0 -1
  238. package/lib/module/utils/styleMap.js +0 -249
  239. package/lib/module/utils/styleMap.js.map +0 -1
  240. package/lib/typescript/commonjs/src/components/Style.d.ts +0 -81
  241. package/lib/typescript/commonjs/src/components/Style.d.ts.map +0 -1
  242. package/lib/typescript/commonjs/src/types/StyleURL.d.ts +0 -4
  243. package/lib/typescript/commonjs/src/types/StyleURL.d.ts.map +0 -1
  244. package/lib/typescript/commonjs/src/utils/deprecation.d.ts +0 -6
  245. package/lib/typescript/commonjs/src/utils/deprecation.d.ts.map +0 -1
  246. package/lib/typescript/commonjs/src/utils/styleMap.d.ts +0 -231
  247. package/lib/typescript/commonjs/src/utils/styleMap.d.ts.map +0 -1
  248. package/lib/typescript/module/src/components/Style.d.ts +0 -81
  249. package/lib/typescript/module/src/components/Style.d.ts.map +0 -1
  250. package/lib/typescript/module/src/types/StyleURL.d.ts +0 -4
  251. package/lib/typescript/module/src/types/StyleURL.d.ts.map +0 -1
  252. package/lib/typescript/module/src/utils/deprecation.d.ts +0 -6
  253. package/lib/typescript/module/src/utils/deprecation.d.ts.map +0 -1
  254. package/lib/typescript/module/src/utils/styleMap.d.ts +0 -231
  255. package/lib/typescript/module/src/utils/styleMap.d.ts.map +0 -1
  256. package/src/components/Style.tsx +0 -371
  257. package/src/types/StyleURL.ts +0 -3
  258. package/src/utils/deprecation.ts +0 -31
  259. package/src/utils/styleMap.ts +0 -265
@@ -1,371 +0,0 @@
1
- import {
2
- useMemo,
3
- useState,
4
- useEffect,
5
- type ReactElement,
6
- type ComponentType,
7
- } from "react";
8
-
9
- import BackgroundLayer, { type BackgroundLayerProps } from "./BackgroundLayer";
10
- import CircleLayer, { type CircleLayerProps } from "./CircleLayer";
11
- import FillExtrusionLayer, {
12
- type FillExtrusionLayerProps,
13
- } from "./FillExtrusionLayer";
14
- import FillLayer, { type FillLayerProps } from "./FillLayer";
15
- import HeatmapLayer, { type HeatmapLayerProps } from "./HeatmapLayer";
16
- import ImageSource from "./ImageSource";
17
- import LineLayer, { type LineLayerProps } from "./LineLayer";
18
- import RasterLayer, { type RasterLayerProps } from "./RasterLayer";
19
- import RasterSource from "./RasterSource";
20
- import ShapeSource from "./ShapeSource";
21
- import SymbolLayer, { type SymbolLayerProps } from "./SymbolLayer";
22
- import VectorSource from "./VectorSource";
23
- import {
24
- type ExpressionField,
25
- type FilterExpression,
26
- } from "../utils/MapLibreRNStyles";
27
-
28
- function toCamelCase(s: string): string {
29
- return s.replace(/([-_][a-z])/gi, ($1) => {
30
- return $1.toUpperCase().replace("-", "").replace("_", "");
31
- });
32
- }
33
-
34
- // Patches the Mapbox Style Specification keys into the style props attributes:
35
- // icon-allow-overlap -> iconAllowOverlap
36
- function toCamelCaseKeys(
37
- oldObj: Record<string, unknown>,
38
- ): Record<string, unknown> {
39
- if (!oldObj) {
40
- return {};
41
- }
42
- const newObj: Record<string, unknown> = {};
43
- Object.keys(oldObj).forEach((key) => {
44
- const value = oldObj[key];
45
- if (key.includes("-")) {
46
- newObj[toCamelCase(key)] = value;
47
- } else {
48
- newObj[key] = value;
49
- }
50
- });
51
- return newObj;
52
- }
53
-
54
- type LayerProps =
55
- | CircleLayerProps
56
- | SymbolLayerProps
57
- | RasterLayerProps
58
- | LineLayerProps
59
- | FillLayerProps
60
- | FillExtrusionLayerProps
61
- | BackgroundLayerProps
62
- | HeatmapLayerProps;
63
-
64
- function getLayerComponentType(
65
- layer: MapLibreJSONLayer,
66
- ): ComponentType<LayerProps> | null {
67
- const { type } = layer;
68
-
69
- switch (type) {
70
- case "circle":
71
- return CircleLayer;
72
- case "symbol":
73
- return SymbolLayer;
74
- case "raster":
75
- return RasterLayer;
76
- case "line":
77
- return LineLayer;
78
- case "fill":
79
- return FillLayer;
80
- case "fill-extrusion":
81
- return FillExtrusionLayer;
82
- case "background":
83
- return BackgroundLayer;
84
- case "heatmap":
85
- return HeatmapLayer;
86
- }
87
-
88
- console.warn(`Mapbox layer type '${type}' is not supported/`);
89
-
90
- return null;
91
- }
92
-
93
- interface MapLibreJSONLayer {
94
- type: string;
95
- paint: { [k: string]: unknown };
96
- layout: { [k: string]: unknown };
97
- source?: string;
98
- "source-layer"?: string;
99
- minzoom?: number;
100
- maxzoom?: number;
101
- filter?: FilterExpression;
102
- id: string;
103
- }
104
-
105
- function asLayerComponent(
106
- layer: MapLibreJSONLayer,
107
- ): ReactElement<LayerProps> | null {
108
- const LayerComponent = getLayerComponentType(layer);
109
-
110
- if (!LayerComponent) {
111
- return null;
112
- }
113
-
114
- const style = {
115
- ...toCamelCaseKeys(layer.paint),
116
- ...toCamelCaseKeys(layer.layout),
117
- };
118
-
119
- const layerProps: Partial<LayerProps> = {};
120
-
121
- if (layer.source) {
122
- layerProps.sourceID = layer.source;
123
- }
124
- if (layer["source-layer"]) {
125
- layerProps.sourceLayerID = layer["source-layer"];
126
- }
127
- if (layer.minzoom) {
128
- layerProps.minZoomLevel = layer.minzoom;
129
- }
130
- if (layer.maxzoom) {
131
- layerProps.maxZoomLevel = layer.maxzoom;
132
- }
133
- if (layer.filter) {
134
- layerProps.filter = layer.filter;
135
- }
136
- if (Object.keys(style).length) {
137
- layerProps.style = style;
138
- }
139
-
140
- return <LayerComponent key={layer.id} id={layer.id} {...layerProps} />;
141
- }
142
-
143
- interface MapLibreJSONSource {
144
- type: string;
145
- url?: string;
146
- tiles?: string[];
147
- minzoom?: number;
148
- maxzoom?: number;
149
- attribution?: string;
150
- scheme?: "xyz" | "tms";
151
- bounds?: number[];
152
- buffer?: number;
153
- tileSize?: number;
154
- coordinates?: [
155
- [number, number],
156
- [number, number],
157
- [number, number],
158
- [number, number],
159
- ];
160
- cluster?: boolean;
161
- clusterMaxZoom?: number;
162
- clusterMinPoints?: number;
163
- clusterRadius?: number;
164
- clusterProperties?: { [propertyName: string]: ExpressionField };
165
- data?: string | object;
166
- filter?: FilterExpression;
167
- generateId?: boolean;
168
- lineMetrics?: boolean;
169
- tolerance?: number;
170
- }
171
-
172
- type SourceProps = {
173
- url?: string;
174
- tileUrlTemplates?: string[];
175
- minZoomLevel?: number;
176
- maxZoomLevel?: number;
177
- attribution?: string;
178
- tms?: boolean;
179
- };
180
-
181
- function getTileSourceProps(source: MapLibreJSONSource): SourceProps {
182
- const sourceProps: Partial<SourceProps> = {};
183
- if (source.url) {
184
- sourceProps.url = source.url;
185
- }
186
- if (source.tiles) {
187
- sourceProps.tileUrlTemplates = source.tiles;
188
- }
189
- if (source.minzoom !== undefined) {
190
- sourceProps.minZoomLevel = source.minzoom;
191
- }
192
- if (source.maxzoom !== undefined) {
193
- sourceProps.maxZoomLevel = source.maxzoom;
194
- }
195
- if (source.attribution) {
196
- sourceProps.attribution = source.attribution;
197
- }
198
- if (source.scheme && source.scheme === "tms") {
199
- sourceProps.tms = true;
200
- }
201
- return sourceProps;
202
- }
203
-
204
- function getVectorSource(id: string, source: MapLibreJSONSource): ReactElement {
205
- const sourceProps = { ...getTileSourceProps(source) };
206
- return <VectorSource key={id} id={id} {...sourceProps} />;
207
- }
208
-
209
- function getRasterSource(id: string, source: MapLibreJSONSource): ReactElement {
210
- const sourceProps: SourceProps & { tileSize?: number } = {
211
- ...getTileSourceProps(source),
212
- };
213
- if (source.tileSize) {
214
- sourceProps.tileSize = source.tileSize;
215
- }
216
- return <RasterSource key={id} id={id} {...sourceProps} />;
217
- }
218
-
219
- function getImageSource(id: string, source: MapLibreJSONSource): ReactElement {
220
- const sourceProps = {
221
- url: source.url,
222
- coordinates: source.coordinates,
223
- };
224
- return <ImageSource key={id} id={id} {...sourceProps} />;
225
- }
226
-
227
- type ShapeSourceShape = (typeof ShapeSource.prototype.props)["shape"];
228
-
229
- function getShapeSource(id: string, source: MapLibreJSONSource): ReactElement {
230
- const sourceProps: SourceProps & {
231
- shape?: ShapeSourceShape;
232
- cluster?: boolean;
233
- clusterRadius?: number;
234
- clusterMaxZoomLevel?: number;
235
- clusterProperties?: { [propertyName: string]: ExpressionField };
236
- buffer?: number;
237
- tolerance?: number;
238
- lineMetrics?: boolean;
239
- } = {};
240
- if (source.data && typeof source.data === "string") {
241
- sourceProps.url = source.data;
242
- } else if (source.data && typeof source.data === "object") {
243
- sourceProps.shape = source.data as ShapeSourceShape;
244
- }
245
- if (source.cluster !== undefined) {
246
- sourceProps.cluster = source.cluster;
247
- }
248
- if (source.clusterRadius !== undefined) {
249
- sourceProps.clusterRadius = source.clusterRadius;
250
- }
251
- if (source.maxzoom !== undefined) {
252
- sourceProps.maxZoomLevel = source.maxzoom;
253
- }
254
- if (source.clusterMaxZoom !== undefined) {
255
- sourceProps.clusterMaxZoomLevel = source.clusterMaxZoom;
256
- }
257
- if (source.clusterProperties !== undefined) {
258
- sourceProps.clusterProperties = source.clusterProperties;
259
- }
260
- if (source.buffer !== undefined) {
261
- sourceProps.buffer = source.buffer;
262
- }
263
- if (source.tolerance !== undefined) {
264
- sourceProps.tolerance = source.tolerance;
265
- }
266
- if (source.lineMetrics !== undefined) {
267
- sourceProps.lineMetrics = source.lineMetrics;
268
- }
269
- return <ShapeSource key={id} id={id} {...sourceProps} />;
270
- }
271
-
272
- function asSourceComponent(
273
- id: string,
274
- source: MapLibreJSONSource,
275
- ): ReactElement | null {
276
- switch (source.type) {
277
- case "vector":
278
- return getVectorSource(id, source);
279
- case "raster":
280
- return getRasterSource(id, source);
281
- case "image":
282
- return getImageSource(id, source);
283
- case "geojson":
284
- return getShapeSource(id, source);
285
- }
286
-
287
- console.warn(`MapLibre source type '${source.type}' is not supported`);
288
-
289
- return null;
290
- }
291
-
292
- interface MapLibreJSON {
293
- layers?: MapLibreJSONLayer[];
294
- sources?: { [key: string]: MapLibreJSONSource };
295
- }
296
-
297
- interface StyleProps {
298
- /**
299
- * A JSON object conforming to the schema described in the MapLibre Style Specification, or a URL to such JSON.
300
- */
301
- json?: MapLibreJSON | URL;
302
- }
303
-
304
- /**
305
- * Style is a component that automatically adds sources / layers to the map using MapLibre Style Spec.
306
- * Only [`sources`](https://maplibre.org/maplibre-gl-js-docs/style-spec/sources/) & [`layers`](https://maplibre.org/maplibre-gl-js-docs/style-spec/layers/) are supported.
307
- * Other fields such as `sprites`, `glyphs` etc. will be ignored. Not all layer / source attributes from the style spec are supported, in general the supported attributes will be mentioned under https://github.com/maplibre/maplibre-react-native/tree/main/docs.
308
- *
309
- * TODO: Maintainer forking this project does not understand the above comment regarding what is supported.
310
- */
311
- const Style = (props: StyleProps): ReactElement => {
312
- const [fetchedJson, setFetchedJson] = useState({});
313
- const json: MapLibreJSON =
314
- typeof props.json === "object" ? props.json : fetchedJson;
315
-
316
- // Fetch style when props.json is a URL
317
- useEffect(() => {
318
- const abortController = new AbortController();
319
- const fetchStyleJson = async (url: string): Promise<void> => {
320
- try {
321
- const response = await fetch(url, {
322
- signal: abortController.signal,
323
- });
324
- const responseJson = await response.json();
325
- setFetchedJson(responseJson);
326
- } catch (error: unknown) {
327
- const e = error as { name?: string };
328
- if (e.name === "AbortError") {
329
- return;
330
- }
331
- throw e;
332
- }
333
- };
334
- if (typeof props.json === "string") {
335
- fetchStyleJson(props.json);
336
- }
337
- return function cleanup(): void {
338
- abortController.abort();
339
- };
340
- }, [props.json]);
341
-
342
- // Extract layer components from json
343
- const layerComponents = useMemo(() => {
344
- if (!json.layers) {
345
- return [];
346
- }
347
- return json.layers
348
- .map(asLayerComponent)
349
- .filter((x: ReactElement | null) => !!x);
350
- }, [json.layers]);
351
-
352
- // Extract source components from json
353
- const sourceComponents = useMemo(() => {
354
- const { sources } = json;
355
- if (!sources || !Object.keys(sources)) {
356
- return [];
357
- }
358
- return Object.entries(sources)
359
- .map(([id, source]) => asSourceComponent(id, source))
360
- .filter((x) => !!x);
361
- }, [json]);
362
-
363
- return (
364
- <>
365
- {sourceComponents}
366
- {layerComponents}
367
- </>
368
- );
369
- };
370
-
371
- export default Style;
@@ -1,3 +0,0 @@
1
- export enum StyleURL {
2
- Default = "https://demotiles.maplibre.org/style.json",
3
- }
@@ -1,31 +0,0 @@
1
- /**
2
- * Copy properties from origObject to newObject, which not exists in newObject,
3
- * calls onDeprecatedCalled callback in case a copied property is invoked.
4
- */
5
-
6
- export function copyPropertiesAsDeprecated<
7
- DeprecatedType extends object,
8
- WithDeprecatedType extends Record<string, unknown>,
9
- >(
10
- origObject: DeprecatedType,
11
- newObject: WithDeprecatedType,
12
- onDeprecatedCalled: (key: string) => void,
13
- accessors: Record<string, (value: any) => unknown> = {},
14
- ): WithDeprecatedType {
15
- const result = { ...newObject };
16
-
17
- for (const [key, value] of Object.entries(origObject)) {
18
- if (!(key in newObject)) {
19
- Object.defineProperty(result, key, {
20
- get() {
21
- onDeprecatedCalled(key);
22
- return accessors[key] ? accessors[key](value) : value;
23
- },
24
- enumerable: true, // Ensure the property is enumerable
25
- configurable: true, // Ensure the property can be reconfigured
26
- });
27
- }
28
- }
29
-
30
- return result;
31
- }
@@ -1,265 +0,0 @@
1
- /* eslint-disable */
2
- // DO NOT MODIFY
3
- // This file is auto-generated from scripts/templates/styleMap.ts.ejs
4
-
5
- import { isAndroid } from "./index";
6
-
7
- export const StyleTypes = {
8
- Constant: "constant",
9
- Color: "color",
10
- Transition: "transition",
11
- Translation: "translation",
12
- Function: "function",
13
- Image: "image",
14
- Enum: "enum",
15
- };
16
-
17
- export function getStyleType(styleProp: keyof typeof styleExtras): string {
18
- if (!isAndroid() && styleExtras[styleProp]) {
19
- return styleExtras[styleProp].iosType;
20
- }
21
-
22
- if (styleMap[styleProp]) {
23
- return styleMap[styleProp];
24
- }
25
-
26
- throw new Error(`${styleProp} is not a valid MapLibre layer style`);
27
- }
28
-
29
- const styleMap = {
30
- fillSortKey: StyleTypes.Constant,
31
- fillAntialias: StyleTypes.Constant,
32
- fillOpacity: StyleTypes.Constant,
33
- fillOpacityTransition: StyleTypes.Transition,
34
- fillColor: StyleTypes.Color,
35
- fillColorTransition: StyleTypes.Transition,
36
- fillOutlineColor: StyleTypes.Color,
37
- fillOutlineColorTransition: StyleTypes.Transition,
38
- fillTranslate: StyleTypes.Translation,
39
- fillTranslateTransition: StyleTypes.Transition,
40
- fillTranslateAnchor: StyleTypes.Enum,
41
- fillPattern: StyleTypes.Image,
42
- fillPatternTransition: StyleTypes.Transition,
43
-
44
- lineCap: StyleTypes.Enum,
45
- lineJoin: StyleTypes.Enum,
46
- lineMiterLimit: StyleTypes.Constant,
47
- lineRoundLimit: StyleTypes.Constant,
48
- lineSortKey: StyleTypes.Constant,
49
- lineOpacity: StyleTypes.Constant,
50
- lineOpacityTransition: StyleTypes.Transition,
51
- lineColor: StyleTypes.Color,
52
- lineColorTransition: StyleTypes.Transition,
53
- lineTranslate: StyleTypes.Translation,
54
- lineTranslateTransition: StyleTypes.Transition,
55
- lineTranslateAnchor: StyleTypes.Enum,
56
- lineWidth: StyleTypes.Constant,
57
- lineWidthTransition: StyleTypes.Transition,
58
- lineGapWidth: StyleTypes.Constant,
59
- lineGapWidthTransition: StyleTypes.Transition,
60
- lineOffset: StyleTypes.Constant,
61
- lineOffsetTransition: StyleTypes.Transition,
62
- lineBlur: StyleTypes.Constant,
63
- lineBlurTransition: StyleTypes.Transition,
64
- lineDasharray: StyleTypes.Constant,
65
- lineDasharrayTransition: StyleTypes.Transition,
66
- linePattern: StyleTypes.Image,
67
- linePatternTransition: StyleTypes.Transition,
68
- lineGradient: StyleTypes.Color,
69
-
70
- symbolPlacement: StyleTypes.Enum,
71
- symbolSpacing: StyleTypes.Constant,
72
- symbolAvoidEdges: StyleTypes.Constant,
73
- symbolSortKey: StyleTypes.Constant,
74
- symbolZOrder: StyleTypes.Enum,
75
- iconAllowOverlap: StyleTypes.Constant,
76
- iconIgnorePlacement: StyleTypes.Constant,
77
- iconOptional: StyleTypes.Constant,
78
- iconRotationAlignment: StyleTypes.Enum,
79
- iconSize: StyleTypes.Constant,
80
- iconTextFit: StyleTypes.Enum,
81
- iconTextFitPadding: StyleTypes.Constant,
82
- iconImage: StyleTypes.Image,
83
- iconRotate: StyleTypes.Constant,
84
- iconPadding: StyleTypes.Constant,
85
- iconKeepUpright: StyleTypes.Constant,
86
- iconOffset: StyleTypes.Constant,
87
- iconAnchor: StyleTypes.Enum,
88
- iconPitchAlignment: StyleTypes.Enum,
89
- textPitchAlignment: StyleTypes.Enum,
90
- textRotationAlignment: StyleTypes.Enum,
91
- textField: StyleTypes.Constant,
92
- textFont: StyleTypes.Constant,
93
- textSize: StyleTypes.Constant,
94
- textMaxWidth: StyleTypes.Constant,
95
- textLineHeight: StyleTypes.Constant,
96
- textLetterSpacing: StyleTypes.Constant,
97
- textJustify: StyleTypes.Enum,
98
- textRadialOffset: StyleTypes.Constant,
99
- textVariableAnchor: StyleTypes.Constant,
100
- textAnchor: StyleTypes.Enum,
101
- textMaxAngle: StyleTypes.Constant,
102
- textWritingMode: StyleTypes.Constant,
103
- textRotate: StyleTypes.Constant,
104
- textPadding: StyleTypes.Constant,
105
- textKeepUpright: StyleTypes.Constant,
106
- textTransform: StyleTypes.Enum,
107
- textOffset: StyleTypes.Constant,
108
- textAllowOverlap: StyleTypes.Constant,
109
- textIgnorePlacement: StyleTypes.Constant,
110
- textOptional: StyleTypes.Constant,
111
- iconOpacity: StyleTypes.Constant,
112
- iconOpacityTransition: StyleTypes.Transition,
113
- iconColor: StyleTypes.Color,
114
- iconColorTransition: StyleTypes.Transition,
115
- iconHaloColor: StyleTypes.Color,
116
- iconHaloColorTransition: StyleTypes.Transition,
117
- iconHaloWidth: StyleTypes.Constant,
118
- iconHaloWidthTransition: StyleTypes.Transition,
119
- iconHaloBlur: StyleTypes.Constant,
120
- iconHaloBlurTransition: StyleTypes.Transition,
121
- iconTranslate: StyleTypes.Translation,
122
- iconTranslateTransition: StyleTypes.Transition,
123
- iconTranslateAnchor: StyleTypes.Enum,
124
- textOpacity: StyleTypes.Constant,
125
- textOpacityTransition: StyleTypes.Transition,
126
- textColor: StyleTypes.Color,
127
- textColorTransition: StyleTypes.Transition,
128
- textHaloColor: StyleTypes.Color,
129
- textHaloColorTransition: StyleTypes.Transition,
130
- textHaloWidth: StyleTypes.Constant,
131
- textHaloWidthTransition: StyleTypes.Transition,
132
- textHaloBlur: StyleTypes.Constant,
133
- textHaloBlurTransition: StyleTypes.Transition,
134
- textTranslate: StyleTypes.Translation,
135
- textTranslateTransition: StyleTypes.Transition,
136
- textTranslateAnchor: StyleTypes.Enum,
137
-
138
- circleSortKey: StyleTypes.Constant,
139
- circleRadius: StyleTypes.Constant,
140
- circleRadiusTransition: StyleTypes.Transition,
141
- circleColor: StyleTypes.Color,
142
- circleColorTransition: StyleTypes.Transition,
143
- circleBlur: StyleTypes.Constant,
144
- circleBlurTransition: StyleTypes.Transition,
145
- circleOpacity: StyleTypes.Constant,
146
- circleOpacityTransition: StyleTypes.Transition,
147
- circleTranslate: StyleTypes.Translation,
148
- circleTranslateTransition: StyleTypes.Transition,
149
- circleTranslateAnchor: StyleTypes.Enum,
150
- circlePitchScale: StyleTypes.Enum,
151
- circlePitchAlignment: StyleTypes.Enum,
152
- circleStrokeWidth: StyleTypes.Constant,
153
- circleStrokeWidthTransition: StyleTypes.Transition,
154
- circleStrokeColor: StyleTypes.Color,
155
- circleStrokeColorTransition: StyleTypes.Transition,
156
- circleStrokeOpacity: StyleTypes.Constant,
157
- circleStrokeOpacityTransition: StyleTypes.Transition,
158
-
159
- heatmapRadius: StyleTypes.Constant,
160
- heatmapRadiusTransition: StyleTypes.Transition,
161
- heatmapWeight: StyleTypes.Constant,
162
- heatmapIntensity: StyleTypes.Constant,
163
- heatmapIntensityTransition: StyleTypes.Transition,
164
- heatmapColor: StyleTypes.Color,
165
- heatmapOpacity: StyleTypes.Constant,
166
- heatmapOpacityTransition: StyleTypes.Transition,
167
-
168
- fillExtrusionOpacity: StyleTypes.Constant,
169
- fillExtrusionOpacityTransition: StyleTypes.Transition,
170
- fillExtrusionColor: StyleTypes.Color,
171
- fillExtrusionColorTransition: StyleTypes.Transition,
172
- fillExtrusionTranslate: StyleTypes.Translation,
173
- fillExtrusionTranslateTransition: StyleTypes.Transition,
174
- fillExtrusionTranslateAnchor: StyleTypes.Enum,
175
- fillExtrusionPattern: StyleTypes.Image,
176
- fillExtrusionPatternTransition: StyleTypes.Transition,
177
- fillExtrusionHeight: StyleTypes.Constant,
178
- fillExtrusionHeightTransition: StyleTypes.Transition,
179
- fillExtrusionBase: StyleTypes.Constant,
180
- fillExtrusionBaseTransition: StyleTypes.Transition,
181
- fillExtrusionVerticalGradient: StyleTypes.Constant,
182
-
183
- rasterOpacity: StyleTypes.Constant,
184
- rasterOpacityTransition: StyleTypes.Transition,
185
- rasterHueRotate: StyleTypes.Constant,
186
- rasterHueRotateTransition: StyleTypes.Transition,
187
- rasterBrightnessMin: StyleTypes.Constant,
188
- rasterBrightnessMinTransition: StyleTypes.Transition,
189
- rasterBrightnessMax: StyleTypes.Constant,
190
- rasterBrightnessMaxTransition: StyleTypes.Transition,
191
- rasterSaturation: StyleTypes.Constant,
192
- rasterSaturationTransition: StyleTypes.Transition,
193
- rasterContrast: StyleTypes.Constant,
194
- rasterContrastTransition: StyleTypes.Transition,
195
- rasterResampling: StyleTypes.Enum,
196
- rasterFadeDuration: StyleTypes.Constant,
197
-
198
- hillshadeIlluminationDirection: StyleTypes.Constant,
199
- hillshadeIlluminationAnchor: StyleTypes.Enum,
200
- hillshadeExaggeration: StyleTypes.Constant,
201
- hillshadeExaggerationTransition: StyleTypes.Transition,
202
- hillshadeShadowColor: StyleTypes.Color,
203
- hillshadeShadowColorTransition: StyleTypes.Transition,
204
- hillshadeHighlightColor: StyleTypes.Color,
205
- hillshadeHighlightColorTransition: StyleTypes.Transition,
206
- hillshadeAccentColor: StyleTypes.Color,
207
- hillshadeAccentColorTransition: StyleTypes.Transition,
208
-
209
- backgroundColor: StyleTypes.Color,
210
- backgroundColorTransition: StyleTypes.Transition,
211
- backgroundPattern: StyleTypes.Image,
212
- backgroundPatternTransition: StyleTypes.Transition,
213
- backgroundOpacity: StyleTypes.Constant,
214
- backgroundOpacityTransition: StyleTypes.Transition,
215
-
216
- anchor: StyleTypes.Enum,
217
- position: StyleTypes.Constant,
218
- positionTransition: StyleTypes.Transition,
219
- color: StyleTypes.Color,
220
- colorTransition: StyleTypes.Transition,
221
- intensity: StyleTypes.Constant,
222
- intensityTransition: StyleTypes.Transition,
223
-
224
- visibility: StyleTypes.Constant,
225
- };
226
-
227
- export const styleExtras = {
228
- // padding
229
- iconTextFitPadding: {
230
- iosType: "edgeinsets",
231
- },
232
-
233
- // offsets
234
- iconOffset: {
235
- iosType: "vector",
236
- },
237
- textOffset: {
238
- iosType: "vector",
239
- },
240
- lineOffset: {
241
- iosType: "vector",
242
- },
243
-
244
- // translates
245
- fillTranslate: {
246
- iosType: "vector",
247
- },
248
- lineTranslate: {
249
- iosType: "vector",
250
- },
251
- iconTranslate: {
252
- iosType: "vector",
253
- },
254
- textTranslate: {
255
- iosType: "vector",
256
- },
257
- circleTranslate: {
258
- iosType: "vector",
259
- },
260
- fillExtrusionTranslate: {
261
- iosType: "vector",
262
- },
263
- };
264
-
265
- export default styleMap;