@maplibre/maplibre-react-native 8.6.0-beta.2 → 9.0.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 (74) hide show
  1. package/CHANGELOG.md +7 -0
  2. package/CONTRIBUTING.md +1 -1
  3. package/README.md +1 -3
  4. package/android/install.md +3 -3
  5. package/android/rctmgl/build.gradle +1 -1
  6. package/android/rctmgl/src/main/java/com/mapbox/rctmgl/components/styles/RCTMGLStyleFactory.java +33 -0
  7. package/app.plugin.js +1 -1
  8. package/docs/Annotation.md +1 -1
  9. package/docs/Annotations.md +3 -8
  10. package/docs/BackgroundLayer.md +2 -2
  11. package/docs/Callout.md +1 -1
  12. package/docs/Camera.md +2 -2
  13. package/docs/CircleLayer.md +31 -14
  14. package/docs/CustomHttpHeaders.md +9 -9
  15. package/docs/FillExtrusionLayer.md +2 -2
  16. package/docs/FillLayer.md +27 -10
  17. package/docs/GettingStarted.md +4 -6
  18. package/docs/HeadingIndicator.md +1 -1
  19. package/docs/HeatmapLayer.md +2 -2
  20. package/docs/ImageSource.md +1 -1
  21. package/docs/Images.md +1 -1
  22. package/docs/Light.md +1 -1
  23. package/docs/LineLayer.md +31 -14
  24. package/docs/{MapboxGL.md → MapLibreGL.md} +5 -5
  25. package/docs/MapView.md +5 -5
  26. package/docs/MarkerView.md +1 -1
  27. package/docs/NativeUserLocation.md +1 -1
  28. package/docs/OfflineManager.md +16 -16
  29. package/docs/PointAnnotation.md +1 -1
  30. package/docs/RasterLayer.md +2 -2
  31. package/docs/RasterSource.md +2 -2
  32. package/docs/ShapeSource.md +2 -2
  33. package/docs/Style.md +3 -3
  34. package/docs/StyleSheet.md +93 -72
  35. package/docs/SymbolLayer.md +17 -13
  36. package/docs/UserLocation.md +2 -2
  37. package/docs/VectorSource.md +2 -2
  38. package/docs/docs.json +102 -46
  39. package/docs/snapshotManager.md +7 -7
  40. package/index.d.ts +8 -7
  41. package/ios/RCTMGL/RCTMGLStyle.h +3 -0
  42. package/ios/RCTMGL/RCTMGLStyle.m +23 -2
  43. package/ios/RCTMGL/index.d.ts +24 -5
  44. package/ios/install.md +3 -3
  45. package/javascript/components/BackgroundLayer.js +2 -2
  46. package/javascript/components/Camera.js +6 -6
  47. package/javascript/components/CircleLayer.js +2 -2
  48. package/javascript/components/FillExtrusionLayer.js +2 -2
  49. package/javascript/components/FillLayer.js +2 -2
  50. package/javascript/components/HeatmapLayer.js +2 -2
  51. package/javascript/components/LineLayer.js +2 -2
  52. package/javascript/components/MapView.js +38 -41
  53. package/javascript/components/RasterLayer.js +2 -2
  54. package/javascript/components/RasterSource.js +2 -2
  55. package/javascript/components/ShapeSource.js +2 -2
  56. package/javascript/components/Style.js +3 -3
  57. package/javascript/components/SymbolLayer.js +2 -2
  58. package/javascript/components/UserLocation.js +2 -0
  59. package/javascript/components/VectorSource.js +2 -2
  60. package/javascript/index.js +38 -42
  61. package/javascript/modules/location/locationManager.js +8 -8
  62. package/javascript/modules/offline/OfflinePack.js +4 -4
  63. package/javascript/modules/offline/offlineManager.js +34 -34
  64. package/javascript/modules/snapshot/SnapshotOptions.js +2 -2
  65. package/javascript/modules/snapshot/snapshotManager.js +8 -8
  66. package/javascript/utils/styleMap.js +37 -6
  67. package/maplibre-react-native.podspec +1 -1
  68. package/package.json +5 -5
  69. package/plugin/build/{withMapbox.d.ts → withMapLibre.d.ts} +1 -1
  70. package/plugin/build/{withMapbox.js → withMapLibre.js} +7 -7
  71. package/scripts/download-style-spec.sh +2 -2
  72. package/scripts/templates/component.md.ejs +1 -1
  73. package/scripts/templates/styleMap.js.ejs +1 -1
  74. package/style-spec/v8.json +266 -43
@@ -24,11 +24,19 @@ export function getStyleType(styleProp) {
24
24
  return styleMap[styleProp];
25
25
  }
26
26
 
27
- throw new Error(`${styleProp} is not a valid Mapbox layer style`);
27
+ throw new Error(`${styleProp} is not a valid MapLibre layer style`);
28
28
  }
29
29
 
30
30
  export const FillLayerStyleProp = PropTypes.shape({
31
31
 
32
+ /**
33
+ * Sorts features in ascending order based on this value. Features with a higher sort key will appear above features with a lower sort key.
34
+ */
35
+ fillSortKey: PropTypes.oneOfType([
36
+ PropTypes.number,
37
+ PropTypes.array,
38
+ ]),
39
+
32
40
  /**
33
41
  * Whether this layer is displayed.
34
42
  */
@@ -172,6 +180,14 @@ export const LineLayerStyleProp = PropTypes.shape({
172
180
  PropTypes.array,
173
181
  ]),
174
182
 
183
+ /**
184
+ * Sorts features in ascending order based on this value. Features with a higher sort key will appear above features with a lower sort key.
185
+ */
186
+ lineSortKey: PropTypes.oneOfType([
187
+ PropTypes.number,
188
+ PropTypes.array,
189
+ ]),
190
+
175
191
  /**
176
192
  * Whether this layer is displayed.
177
193
  */
@@ -366,7 +382,7 @@ export const SymbolLayerStyleProp = PropTypes.shape({
366
382
  ]),
367
383
 
368
384
  /**
369
- * If true, the symbols will not cross tile edges to avoid mutual collisions. Recommended in layers that don't have enough padding in the vector tile to prevent collisions, or if it is a point symbol layer placed after a line symbol layer. When using a client that supports global collision detection, like Mapbox GL JS version 0.42.0 or greater, enabling this property is not needed to prevent clipped labels at tile boundaries.
385
+ * If true, the symbols will not cross tile edges to avoid mutual collisions. Recommended in layers that don't have enough padding in the vector tile to prevent collisions, or if it is a point symbol layer placed after a line symbol layer. When using a client that supports global collision detection, like MapLibre GL JS version 0.42.0 or greater, enabling this property is not needed to prevent clipped labels at tile boundaries.
370
386
  */
371
387
  symbolAvoidEdges: PropTypes.oneOfType([
372
388
  PropTypes.bool,
@@ -374,7 +390,7 @@ export const SymbolLayerStyleProp = PropTypes.shape({
374
390
  ]),
375
391
 
376
392
  /**
377
- * Sorts features in ascending order based on this value. Features with a higher sort key will appear above features with a lower sort key when they overlap. Features with a lower sort key will have priority over other features when doing placement.
393
+ * Sorts features in ascending order based on this value. Features with lower sort keys are drawn and placed first. When `iconAllowOverlap` or `textAllowOverlap` is `false`, features with a lower sort key will have priority during placement. When `iconAllowOverlap` or `textAllowOverlap` is set to `true`, features with a higher sort key will overlap over features with a lower sort key.
378
394
  */
379
395
  symbolSortKey: PropTypes.oneOfType([
380
396
  PropTypes.number,
@@ -382,7 +398,7 @@ export const SymbolLayerStyleProp = PropTypes.shape({
382
398
  ]),
383
399
 
384
400
  /**
385
- * Controls the order in which overlapping symbols in the same layer are rendered
401
+ * Determines whether overlapping symbols in the same layer are rendered in the order that they appear in the data source or by their yPosition relative to the viewport. To control the order and prioritization of symbols otherwise, use `symbolSortKey`.
386
402
  */
387
403
  symbolZOrder: PropTypes.oneOfType([
388
404
  PropTypes.oneOf(['auto', 'viewport-y', 'source']),
@@ -393,6 +409,8 @@ export const SymbolLayerStyleProp = PropTypes.shape({
393
409
  * If true, the icon will be visible even if it collides with other previously drawn symbols.
394
410
  *
395
411
  * @requires iconImage
412
+ *
413
+ * @disabledBy iconOverlap
396
414
  */
397
415
  iconAllowOverlap: PropTypes.oneOfType([
398
416
  PropTypes.bool,
@@ -479,7 +497,7 @@ export const SymbolLayerStyleProp = PropTypes.shape({
479
497
  ]),
480
498
 
481
499
  /**
482
- * Size of the additional area around the icon bounding box used for detecting symbol collisions.
500
+ * Size of additional area round the icon bounding box used for detecting symbol collisions. Values are declared using CSS margin shorthand syntax: a single value applies to all four sides; two values apply to [top/bottom, left/right]; three values apply to [top, left/right, bottom]; four values apply to [top, right, bottom, left]. For backwards compatibility, a single bare number is accepted, and treated the same as a oneElement array padding applied to all sides.
483
501
  *
484
502
  * @requires iconImage
485
503
  */
@@ -544,7 +562,7 @@ export const SymbolLayerStyleProp = PropTypes.shape({
544
562
  * @requires textField
545
563
  */
546
564
  textRotationAlignment: PropTypes.oneOfType([
547
- PropTypes.oneOf(['map', 'viewport', 'auto']),
565
+ PropTypes.oneOf(['map', 'viewport', 'viewport-glyph', 'auto']),
548
566
  PropTypes.array,
549
567
  ]),
550
568
 
@@ -718,6 +736,8 @@ export const SymbolLayerStyleProp = PropTypes.shape({
718
736
  * If true, the text will be visible even if it collides with other previously drawn symbols.
719
737
  *
720
738
  * @requires textField
739
+ *
740
+ * @disabledBy textOverlap
721
741
  */
722
742
  textAllowOverlap: PropTypes.oneOfType([
723
743
  PropTypes.bool,
@@ -988,6 +1008,14 @@ export const SymbolLayerStyleProp = PropTypes.shape({
988
1008
 
989
1009
  export const CircleLayerStyleProp = PropTypes.shape({
990
1010
 
1011
+ /**
1012
+ * Sorts features in ascending order based on this value. Features with a higher sort key will appear above features with a lower sort key.
1013
+ */
1014
+ circleSortKey: PropTypes.oneOfType([
1015
+ PropTypes.number,
1016
+ PropTypes.array,
1017
+ ]),
1018
+
991
1019
  /**
992
1020
  * Whether this layer is displayed.
993
1021
  */
@@ -1667,6 +1695,7 @@ export const LightLayerStyleProp = PropTypes.shape({
1667
1695
 
1668
1696
 
1669
1697
  const styleMap = {
1698
+ fillSortKey: StyleTypes.Constant,
1670
1699
  fillAntialias: StyleTypes.Constant,
1671
1700
  fillOpacity: StyleTypes.Constant,
1672
1701
  fillOpacityTransition: StyleTypes.Transition,
@@ -1684,6 +1713,7 @@ const styleMap = {
1684
1713
  lineJoin: StyleTypes.Enum,
1685
1714
  lineMiterLimit: StyleTypes.Constant,
1686
1715
  lineRoundLimit: StyleTypes.Constant,
1716
+ lineSortKey: StyleTypes.Constant,
1687
1717
  lineOpacity: StyleTypes.Constant,
1688
1718
  lineOpacityTransition: StyleTypes.Transition,
1689
1719
  lineColor: StyleTypes.Color,
@@ -1773,6 +1803,7 @@ const styleMap = {
1773
1803
  textTranslateTransition: StyleTypes.Transition,
1774
1804
  textTranslateAnchor: StyleTypes.Enum,
1775
1805
 
1806
+ circleSortKey: StyleTypes.Constant,
1776
1807
  circleRadius: StyleTypes.Constant,
1777
1808
  circleRadiusTransition: StyleTypes.Transition,
1778
1809
  circleColor: StyleTypes.Color,
@@ -28,7 +28,7 @@ def $RNMBGL.post_install(installer)
28
28
  url: "https://github.com/maplibre/maplibre-gl-native-distribution",
29
29
  requirement: {
30
30
  kind: "exactVersion",
31
- version: "5.12.2"
31
+ version: "5.13.0"
32
32
  },
33
33
  product_name: "Mapbox"
34
34
  }
package/package.json CHANGED
@@ -1,19 +1,19 @@
1
1
  {
2
2
  "name": "@maplibre/maplibre-react-native",
3
3
  "description": "A MapLibre GL Native plugin for creating maps in React Native",
4
- "version": "8.6.0-beta.2",
4
+ "version": "9.0.0",
5
5
  "publishConfig": {
6
6
  "access": "public"
7
7
  },
8
8
  "author": "MapLibre",
9
9
  "main": "./javascript/index.js",
10
10
  "keywords": [
11
- "gl",
11
+ "maps",
12
12
  "ios",
13
13
  "android",
14
- "mapbox",
15
14
  "maplibre",
16
- "react-native"
15
+ "react-native",
16
+ "mapbox"
17
17
  ],
18
18
  "license": "MIT",
19
19
  "repository": {
@@ -21,7 +21,7 @@
21
21
  "url": "https://github.com/maplibre/maplibre-react-native"
22
22
  },
23
23
  "scripts": {
24
- "fetch:style:spec": ". ./scripts/download-style-spec.sh",
24
+ "fetch:style:spec": "./scripts/download-style-spec.sh",
25
25
  "generate": "yarn node ./scripts/autogenerate",
26
26
  "test": "npm run lint && npm run unittest",
27
27
  "unittest": "jest",
@@ -2,7 +2,7 @@ import { ConfigPlugin, XcodeProject } from '@expo/config-plugins';
2
2
  type InstallerBlockName = 'pre' | 'post';
3
3
  export declare function applyCocoaPodsModifications(contents: string): string;
4
4
  export declare function addInstallerBlock(src: string, blockName: InstallerBlockName): string;
5
- export declare function addMapboxInstallerBlock(src: string, blockName: InstallerBlockName): string;
5
+ export declare function addMapLibreInstallerBlock(src: string, blockName: InstallerBlockName): string;
6
6
  /**
7
7
  * Exclude building for arm64 on simulator devices in the pbxproj project.
8
8
  * Without this, production builds targeting simulators will fail.
@@ -3,7 +3,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
3
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.setExcludedArchitectures = exports.addMapboxInstallerBlock = exports.addInstallerBlock = exports.applyCocoaPodsModifications = void 0;
6
+ exports.setExcludedArchitectures = exports.addMapLibreInstallerBlock = exports.addInstallerBlock = exports.applyCocoaPodsModifications = void 0;
7
7
  const fs_1 = require("fs");
8
8
  const path_1 = __importDefault(require("path"));
9
9
  const config_plugins_1 = require("@expo/config-plugins");
@@ -43,8 +43,8 @@ function applyCocoaPodsModifications(contents) {
43
43
  // Ensure installer blocks exist
44
44
  let src = addInstallerBlock(contents, 'pre');
45
45
  // src = addInstallerBlock(src, "post");
46
- src = addMapboxInstallerBlock(src, 'pre');
47
- // src = addMapboxInstallerBlock(src, "post");
46
+ src = addMapLibreInstallerBlock(src, 'pre');
47
+ // src = addMapLibreInstallerBlock(src, "post");
48
48
  return src;
49
49
  }
50
50
  exports.applyCocoaPodsModifications = applyCocoaPodsModifications;
@@ -77,7 +77,7 @@ function addInstallerBlock(src, blockName) {
77
77
  }).contents;
78
78
  }
79
79
  exports.addInstallerBlock = addInstallerBlock;
80
- function addMapboxInstallerBlock(src, blockName) {
80
+ function addMapLibreInstallerBlock(src, blockName) {
81
81
  return (0, generateCode_1.mergeContents)({
82
82
  tag: `@maplibre/maplibre-react-native-${blockName}_installer`,
83
83
  src,
@@ -87,7 +87,7 @@ function addMapboxInstallerBlock(src, blockName) {
87
87
  comment: '#',
88
88
  }).contents;
89
89
  }
90
- exports.addMapboxInstallerBlock = addMapboxInstallerBlock;
90
+ exports.addMapLibreInstallerBlock = addMapLibreInstallerBlock;
91
91
  /**
92
92
  * Exclude building for arm64 on simulator devices in the pbxproj project.
93
93
  * Without this, production builds targeting simulators will fail.
@@ -112,8 +112,8 @@ const withExcludedSimulatorArchitectures = c => {
112
112
  return config;
113
113
  });
114
114
  };
115
- const withMapbox = config => {
115
+ const withMapLibre = config => {
116
116
  config = withExcludedSimulatorArchitectures(config);
117
117
  return withCocoaPodsInstallerBlocks(config);
118
118
  };
119
- exports.default = (0, config_plugins_1.createRunOncePlugin)(withMapbox, pkg.name, pkg.version);
119
+ exports.default = (0, config_plugins_1.createRunOncePlugin)(withMapLibre, pkg.name, pkg.version);
@@ -1,6 +1,6 @@
1
1
  #!/bin/sh
2
2
 
3
- echo "Downloading MapboxGL Style Spec"
3
+ echo "Downloading MapLibre Style Spec"
4
4
  cd style-spec/
5
5
 
6
6
  FILENAME=v8.json
@@ -11,5 +11,5 @@ if [ -e "./${FILENAME}" ]; then
11
11
  fi
12
12
 
13
13
  echo "Fetching new style spec ${FILENAME}"
14
- curl -sS https://raw.githubusercontent.com/mapbox/mapbox-gl-js/master/src/style-spec/reference/${FILENAME} -o ${FILENAME}
14
+ curl -sS https://raw.githubusercontent.com/maplibre/maplibre-gl-js/master/src/style-spec/reference/${FILENAME} -o ${FILENAME}
15
15
  cd ..
@@ -2,7 +2,7 @@
2
2
  const component = locals.component;
3
3
  -%>
4
4
  <!-- This file was autogenerated from <%- component.name %>.js do not modify -->
5
- ## <MapboxGL.<%- component.name %> />
5
+ ## <MapLibreGL.<%- component.name %> />
6
6
  ### <%- replaceNewLine(component.description) %>
7
7
 
8
8
  <%_ if (component.props && component.props.length) { _%>
@@ -27,7 +27,7 @@ export function getStyleType(styleProp) {
27
27
  return styleMap[styleProp];
28
28
  }
29
29
 
30
- throw new Error(`${styleProp} is not a valid Mapbox layer style`);
30
+ throw new Error(`${styleProp} is not a valid MapLibre layer style`);
31
31
  }
32
32
 
33
33
  <%_ for (let layer of layers) { _%>