Skip to content

Commit 9be6c41

Browse files
authored
Support react-map-gl v8 (#135)
1 parent 8fb0dc2 commit 9be6c41

File tree

17 files changed

+370
-207
lines changed

17 files changed

+370
-207
lines changed

.changeset/pre.json

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
{
2+
"mode": "pre",
3+
"tag": "next",
4+
"initialVersions": {
5+
"react-three-map": "0.8.2"
6+
},
7+
"changesets": []
8+
}

.changeset/wet-trees-scream.md

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
---
2+
"react-three-map": major
3+
---
4+
5+
Updated to work with `react-map-gl >= 8.0.0`.
6+
7+
This has the cascade effect of requiring also to upgrade either of the map providers you are using:
8+
9+
- `mapbox-gl >= 3.5.0`
10+
- `maplibre-gl >= 4.0.0`

package.json

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -53,11 +53,11 @@
5353
"happy-dom": "^10.5.2",
5454
"leva": "^0.9.35",
5555
"luxon": "^3.3.0",
56-
"mapbox-gl": "^3.1.2",
57-
"maplibre-gl": "^3.2.0",
56+
"mapbox-gl": "^3.9.4",
57+
"maplibre-gl": "4.7.1",
5858
"react": "^18.2.0",
5959
"react-dom": "^18.2.0",
60-
"react-map-gl": "^7.1.7",
60+
"react-map-gl": "^8.0.1",
6161
"suncalc": "^1.9.0",
6262
"suspend-react": "^0.1.3",
6363
"three": "^0.159.0",
@@ -70,10 +70,10 @@
7070
},
7171
"peerDependencies": {
7272
"@react-three/fiber": ">=8.13",
73-
"mapbox-gl": ">=2.15",
74-
"maplibre-gl": ">=3.2",
73+
"mapbox-gl": ">=3.5.0",
74+
"maplibre-gl": ">=4.0.0",
7575
"react": ">=18.0",
76-
"react-map-gl": ">=7.1",
76+
"react-map-gl": ">=8.0.0",
7777
"three": ">=0.133"
7878
},
7979
"peerDependenciesMeta": {

src/core/canvas-in-layer/use-render.ts

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,8 +15,9 @@ export function useRender({
1515
frameloop?: 'always' | 'demand',
1616
r3m: R3M
1717
}) {
18-
const render = useFunction((_gl: WebGL2RenderingContext, projViewMx: number[]) => {
19-
r3m.viewProjMx.splice(0, 16, ...projViewMx)
18+
const render = useFunction((_gl: WebGL2RenderingContext, projViewMx: number[] | {defaultProjectionData: {mainMatrix: Record<string, number>}}) => {
19+
const pVMx = 'defaultProjectionData' in projViewMx ? Object.values(projViewMx.defaultProjectionData.mainMatrix) : projViewMx;
20+
r3m.viewProjMx.splice(0, 16, ...pVMx)
2021
const state = useThree.getState();
2122
const camera = state.camera as PerspectiveCamera;
2223
const {gl, advance} = state;

src/core/generic-map.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -41,9 +41,9 @@ export interface MapInstance {
4141
getPixelRatio?: ()=>number;
4242
triggerRepaint(): void;
4343
// eslint-disable-next-line @typescript-eslint/ban-types
44-
on<T extends keyof MapEventType>(type: T, listener: (ev: MapEventType[T] & Object) => void): this;
44+
on<T extends keyof MapEventType>(type: T, listener: (ev: MapEventType[T] & Object) => void): void;
4545
// eslint-disable-next-line @typescript-eslint/ban-types
46-
off<T extends keyof MapEventType>(type: T, listener: (ev: MapEventType[T] & Object) => void): this;
46+
off<T extends keyof MapEventType>(type: T, listener: (ev: MapEventType[T] & Object) => void): void;
4747
}
4848

4949
/** Generic interface of Mapbox/Maplibre `MapEventType` */

src/mapbox/canvas.tsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
import { extend } from "@react-three/fiber";
33
import { MercatorCoordinate } from "mapbox-gl";
44
import { memo, useState } from "react";
5-
import { Layer, useMap } from "react-map-gl";
5+
import { Layer, useMap } from "react-map-gl/mapbox";
66
import * as THREE from "three";
77
import { Matrix4Tuple } from "three";
88
import { CanvasProps } from "../api/canvas-props";
@@ -16,7 +16,7 @@ extend(THREE);
1616

1717
const fromLngLat = MercatorCoordinate.fromLngLat
1818

19-
/** react`-three-fiber` canvas inside `Mapbox` */
19+
/** `react-three-fiber` canvas inside `Mapbox` */
2020
export const Canvas = memo<CanvasProps>(({ overlay, ...props }) => {
2121

2222
const map = useMap().current!.getMap(); // eslint-disable-line @typescript-eslint/no-non-null-assertion

src/maplibre.index.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,6 @@ import type { Map } from 'maplibre-gl';
22
import { useMap as useMapGeneric } from './api/use-map';
33

44
export * from './api';
5-
export * from './mapbox/canvas';
5+
export * from './maplibre/canvas';
66

77
export const useMap = useMapGeneric<Map>;

src/maplibre/canvas.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ extend(THREE);
1616

1717
const fromLngLat = MercatorCoordinate.fromLngLat
1818

19-
/** react`-three-fiber` canvas inside `MapLibre` */
19+
/** `react-three-fiber` canvas inside `MapLibre` */
2020
export const Canvas = memo<CanvasProps>(({ overlay, ...props }) => {
2121

2222
const map = useMap().current!.getMap(); // eslint-disable-line @typescript-eslint/no-non-null-assertion

stories/package.json

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -15,11 +15,11 @@
1515
"@types/tz-lookup": "^6.1.2",
1616
"leva": "^0.9.35",
1717
"luxon": "^3.4.4",
18-
"mapbox-gl": "^3.1.2",
19-
"maplibre-gl": "^3.2.0",
18+
"mapbox-gl": "^3.9.4",
19+
"maplibre-gl": "^5.1.0",
2020
"react": "^18.2.0",
2121
"react-dom": "^18.2.0",
22-
"react-map-gl": "^7.1.7",
22+
"react-map-gl": "^8.0.1",
2323
"react-three-map": "^0.8.1",
2424
"suncalc": "^1.9.0",
2525
"three": "^0.159.0",

stories/src/canvas/mapbox.stories.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ import { useControls } from "leva";
33
import MapboxGl from "mapbox-gl";
44
import 'mapbox-gl/dist/mapbox-gl.css';
55
import { FC, PropsWithChildren, useRef, useState } from "react";
6-
import Map from 'react-map-gl';
6+
import Map from 'react-map-gl/mapbox';
77
import { Canvas } from "react-three-map";
88
import { Mesh } from "three";
99

0 commit comments

Comments
 (0)