react-three-map 0.7.1 → 0.8.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.
- package/CHANGELOG.md +15 -0
- package/README.md +42 -4
- package/dist/cjs/main.js +369 -173
- package/dist/es/main.mjs +6 -2
- package/dist/es/main.mjs.map +1 -1
- package/dist/es/main10.mjs +33 -20
- package/dist/es/main10.mjs.map +1 -1
- package/dist/es/main11.mjs +11 -19
- package/dist/es/main11.mjs.map +1 -1
- package/dist/es/main12.mjs +20 -77
- package/dist/es/main12.mjs.map +1 -1
- package/dist/es/main13.mjs +30 -9
- package/dist/es/main13.mjs.map +1 -1
- package/dist/es/main14.mjs +22 -67
- package/dist/es/main14.mjs.map +1 -1
- package/dist/es/main15.mjs +98 -0
- package/dist/es/main15.mjs.map +1 -0
- package/dist/es/main16.mjs +66 -0
- package/dist/es/main16.mjs.map +1 -0
- package/dist/es/main17.mjs +23 -0
- package/dist/es/main17.mjs.map +1 -0
- package/dist/es/main18.mjs +27 -0
- package/dist/es/main18.mjs.map +1 -0
- package/dist/es/main19.mjs +19 -0
- package/dist/es/main19.mjs.map +1 -0
- package/dist/es/main2.mjs.map +1 -1
- package/dist/es/main20.mjs +72 -0
- package/dist/es/main20.mjs.map +1 -0
- package/dist/es/main3.mjs +43 -50
- package/dist/es/main3.mjs.map +1 -1
- package/dist/es/main4.mjs +50 -24
- package/dist/es/main4.mjs.map +1 -1
- package/dist/es/main5.mjs +19 -3
- package/dist/es/main5.mjs.map +1 -1
- package/dist/es/main6.mjs +14 -33
- package/dist/es/main6.mjs.map +1 -1
- package/dist/es/main7.mjs +18 -7
- package/dist/es/main7.mjs.map +1 -1
- package/dist/es/main8.mjs +26 -21
- package/dist/es/main8.mjs.map +1 -1
- package/dist/es/main9.mjs +9 -15
- package/dist/es/main9.mjs.map +1 -1
- package/dist/maplibre/cjs/main.js +369 -173
- package/dist/maplibre/es/main.mjs +6 -2
- package/dist/maplibre/es/main.mjs.map +1 -1
- package/dist/maplibre/es/main10.mjs +33 -20
- package/dist/maplibre/es/main10.mjs.map +1 -1
- package/dist/maplibre/es/main11.mjs +11 -19
- package/dist/maplibre/es/main11.mjs.map +1 -1
- package/dist/maplibre/es/main12.mjs +20 -77
- package/dist/maplibre/es/main12.mjs.map +1 -1
- package/dist/maplibre/es/main13.mjs +30 -9
- package/dist/maplibre/es/main13.mjs.map +1 -1
- package/dist/maplibre/es/main14.mjs +22 -67
- package/dist/maplibre/es/main14.mjs.map +1 -1
- package/dist/maplibre/es/main15.mjs +98 -0
- package/dist/maplibre/es/main15.mjs.map +1 -0
- package/dist/maplibre/es/main16.mjs +66 -0
- package/dist/maplibre/es/main16.mjs.map +1 -0
- package/dist/maplibre/es/main17.mjs +23 -0
- package/dist/maplibre/es/main17.mjs.map +1 -0
- package/dist/maplibre/es/main18.mjs +27 -0
- package/dist/maplibre/es/main18.mjs.map +1 -0
- package/dist/maplibre/es/main19.mjs +19 -0
- package/dist/maplibre/es/main19.mjs.map +1 -0
- package/dist/maplibre/es/main2.mjs.map +1 -1
- package/dist/maplibre/es/main20.mjs +72 -0
- package/dist/maplibre/es/main20.mjs.map +1 -0
- package/dist/maplibre/es/main3.mjs +43 -50
- package/dist/maplibre/es/main3.mjs.map +1 -1
- package/dist/maplibre/es/main4.mjs +50 -24
- package/dist/maplibre/es/main4.mjs.map +1 -1
- package/dist/maplibre/es/main5.mjs +19 -3
- package/dist/maplibre/es/main5.mjs.map +1 -1
- package/dist/maplibre/es/main6.mjs +14 -33
- package/dist/maplibre/es/main6.mjs.map +1 -1
- package/dist/maplibre/es/main7.mjs +18 -7
- package/dist/maplibre/es/main7.mjs.map +1 -1
- package/dist/maplibre/es/main8.mjs +26 -21
- package/dist/maplibre/es/main8.mjs.map +1 -1
- package/dist/maplibre/es/main9.mjs +9 -15
- package/dist/maplibre/es/main9.mjs.map +1 -1
- package/dist/maplibre/types/api/canvas-props.d.ts +4 -4
- package/dist/maplibre/types/api/coords-to-vector-3.d.ts +4 -0
- package/dist/maplibre/types/api/coords.d.ts +5 -0
- package/dist/maplibre/types/api/index.d.ts +5 -0
- package/dist/maplibre/types/api/near-coordinates.d.ts +3 -0
- package/dist/maplibre/types/api/use-map.d.ts +1 -1
- package/dist/maplibre/types/core/canvas-in-layer/use-canvas-in-layer.d.ts +11 -0
- package/dist/maplibre/types/core/canvas-in-layer/use-render.d.ts +12 -0
- package/dist/maplibre/types/core/canvas-in-layer/use-root.d.ts +7 -0
- package/dist/maplibre/types/core/canvas-overlay/canvas-portal.d.ts +11 -0
- package/dist/maplibre/types/core/canvas-overlay/init-canvas-fc.d.ts +12 -0
- package/dist/maplibre/types/core/canvas-overlay/init-r3m.d.ts +10 -0
- package/dist/maplibre/types/core/canvas-overlay/render.d.ts +1 -0
- package/dist/maplibre/types/core/canvas-overlay/sync-camera-fc.d.ts +13 -0
- package/dist/maplibre/types/core/coords-to-matrix.d.ts +2 -4
- package/dist/maplibre/types/core/events.d.ts +4 -0
- package/dist/maplibre/types/core/generic-map.d.ts +2 -0
- package/dist/maplibre/types/core/use-coords-to-matrix.d.ts +5 -0
- package/dist/maplibre/types/core/use-coords.d.ts +7 -5
- package/dist/maplibre/types/core/use-r3m.d.ts +22 -0
- package/dist/maplibre/types/{maplibre → mapbox}/canvas.d.ts +1 -1
- package/dist/maplibre/types/maplibre.index.d.ts +3 -4
- package/dist/types/api/canvas-props.d.ts +4 -4
- package/dist/types/api/coords-to-vector-3.d.ts +4 -0
- package/dist/types/api/coords.d.ts +5 -0
- package/dist/types/api/index.d.ts +5 -0
- package/dist/types/api/near-coordinates.d.ts +3 -0
- package/dist/types/api/use-map.d.ts +1 -1
- package/dist/types/core/canvas-in-layer/use-canvas-in-layer.d.ts +11 -0
- package/dist/types/core/canvas-in-layer/use-render.d.ts +12 -0
- package/dist/types/core/canvas-in-layer/use-root.d.ts +7 -0
- package/dist/types/core/canvas-overlay/canvas-portal.d.ts +11 -0
- package/dist/types/core/canvas-overlay/init-canvas-fc.d.ts +12 -0
- package/dist/types/core/canvas-overlay/init-r3m.d.ts +10 -0
- package/dist/types/core/canvas-overlay/render.d.ts +1 -0
- package/dist/types/core/canvas-overlay/sync-camera-fc.d.ts +13 -0
- package/dist/types/core/coords-to-matrix.d.ts +2 -4
- package/dist/types/core/events.d.ts +4 -0
- package/dist/types/core/generic-map.d.ts +2 -0
- package/dist/types/core/use-coords-to-matrix.d.ts +5 -0
- package/dist/types/core/use-coords.d.ts +7 -5
- package/dist/types/core/use-r3m.d.ts +22 -0
- package/dist/types/mapbox.index.d.ts +2 -3
- package/package.json +12 -9
- package/stories/package.json +12 -5
- package/stories/yarn.lock +128 -135
- package/dist/maplibre/types/core/create-events.d.ts +0 -3
- package/dist/maplibre/types/core/store.d.ts +0 -12
- package/dist/maplibre/types/core/use-canvas.d.ts +0 -11
- package/dist/maplibre/types/core/use-create-root.d.ts +0 -13
- package/dist/maplibre/types/core/use-on-add.d.ts +0 -10
- package/dist/maplibre/types/core/use-render.d.ts +0 -4
- package/dist/types/core/create-events.d.ts +0 -3
- package/dist/types/core/store.d.ts +0 -12
- package/dist/types/core/use-canvas.d.ts +0 -11
- package/dist/types/core/use-create-root.d.ts +0 -13
- package/dist/types/core/use-on-add.d.ts +0 -10
- package/dist/types/core/use-render.d.ts +0 -4
|
@@ -1,18 +1,12 @@
|
|
|
1
|
-
import {
|
|
2
|
-
const
|
|
3
|
-
const
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
const scaleUnit = center.meterInMercatorCoordinateUnits();
|
|
10
|
-
pos.set(center.x, center.y, center.z || 0);
|
|
11
|
-
scale.set(scaleUnit, -scaleUnit, scaleUnit);
|
|
12
|
-
quat.setFromEuler(euler.set(-Math.PI * 0.5, 0, 0));
|
|
13
|
-
return m4.compose(pos, quat, scale).toArray();
|
|
14
|
-
}
|
|
1
|
+
import { useRef, useCallback } from "react";
|
|
2
|
+
const useFunction = (callback) => {
|
|
3
|
+
const callbackRef = useRef(callback);
|
|
4
|
+
callbackRef.current = callback;
|
|
5
|
+
return useCallback((...args) => {
|
|
6
|
+
return callbackRef.current(...args);
|
|
7
|
+
}, []);
|
|
8
|
+
};
|
|
15
9
|
export {
|
|
16
|
-
|
|
10
|
+
useFunction
|
|
17
11
|
};
|
|
18
12
|
//# sourceMappingURL=main9.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"main9.mjs","sources":["../../../src/core/
|
|
1
|
+
{"version":3,"file":"main9.mjs","sources":["../../../src/core/use-function.ts"],"sourcesContent":["import { useCallback, useRef } from 'react';\n\n/* eslint-disable @typescript-eslint/no-explicit-any */\nexport const useFunction = <T extends (...args: any[]) => any>(callback: T): T => {\n const callbackRef = useRef(callback);\n callbackRef.current = callback;\n return useCallback((...args: any[]) => {\n return callbackRef.current(...args);\n }, []) as T;\n};\n"],"names":[],"mappings":";AAGa,MAAA,cAAc,CAAoC,aAAmB;AAC1E,QAAA,cAAc,OAAO,QAAQ;AACnC,cAAY,UAAU;AACf,SAAA,YAAY,IAAI,SAAgB;AAC9B,WAAA,YAAY,QAAQ,GAAG,IAAI;AAAA,EACpC,GAAG,CAAE,CAAA;AACP;"}
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import { RenderProps } from "@react-three/fiber";
|
|
2
2
|
import { PropsWithChildren } from "react";
|
|
3
|
-
|
|
3
|
+
import { Coords } from "./coords";
|
|
4
|
+
export interface CanvasProps extends Coords, Omit<RenderProps<HTMLCanvasElement>, 'frameloop'>, PropsWithChildren {
|
|
4
5
|
id?: string;
|
|
5
6
|
beforeId?: string;
|
|
6
|
-
longitude: number;
|
|
7
|
-
latitude: number;
|
|
8
|
-
altitude?: number;
|
|
9
7
|
frameloop?: 'always' | 'demand';
|
|
8
|
+
/** render on a separated `<canvas>` that sits on top of the map provider */
|
|
9
|
+
overlay?: boolean;
|
|
10
10
|
}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import { Vector3Tuple } from "three";
|
|
2
|
+
import { Coords } from "./coords";
|
|
3
|
+
/** converts geo coordinates `point` to a `Vector3Tuple` (represented in meters) using `origin` as the origin. */
|
|
4
|
+
export declare function coordsToVector3(point: Coords, origin: Coords): Vector3Tuple;
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
import { MapInstance } from "../core/generic-map";
|
|
2
|
-
export declare const useMap: <T extends MapInstance = MapInstance>() => T
|
|
2
|
+
export declare const useMap: <T extends MapInstance = MapInstance>() => T;
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { CanvasProps } from "../../api/canvas-props";
|
|
2
|
+
import { FromLngLat, MapInstance } from "../generic-map";
|
|
3
|
+
/** get all the properties that you need to render as a map `<Layer>` */
|
|
4
|
+
export declare function useCanvasInLayer(props: CanvasProps, fromLngLat: FromLngLat, map: MapInstance): {
|
|
5
|
+
readonly id: string | undefined;
|
|
6
|
+
readonly beforeId: string | undefined;
|
|
7
|
+
readonly onRemove: () => void;
|
|
8
|
+
readonly render: (_gl: WebGL2RenderingContext, projViewMx: number[]) => void;
|
|
9
|
+
readonly type: "custom";
|
|
10
|
+
readonly renderingMode: "3d";
|
|
11
|
+
};
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { RootState } from "@react-three/fiber";
|
|
2
|
+
import { Matrix4Tuple } from "three";
|
|
3
|
+
import { UseBoundStore } from "zustand";
|
|
4
|
+
import { MapInstance } from "../generic-map";
|
|
5
|
+
import { R3M } from "../use-r3m";
|
|
6
|
+
export declare function useRender({ map, origin, useThree, frameloop, r3m, }: {
|
|
7
|
+
map: MapInstance;
|
|
8
|
+
origin: Matrix4Tuple;
|
|
9
|
+
useThree: UseBoundStore<RootState>;
|
|
10
|
+
frameloop?: 'always' | 'demand';
|
|
11
|
+
r3m: R3M;
|
|
12
|
+
}): (_gl: WebGL2RenderingContext, projViewMx: number[]) => void;
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { CanvasProps } from "../../api/canvas-props";
|
|
2
|
+
import { FromLngLat, MapInstance } from "../generic-map";
|
|
3
|
+
export declare function useRoot(fromLngLat: FromLngLat, map: MapInstance, { frameloop, longitude, latitude, altitude, ...props }: CanvasProps): {
|
|
4
|
+
onRemove: () => void;
|
|
5
|
+
useThree: import("zustand").UseBoundStore<import("@react-three/fiber").RootState>;
|
|
6
|
+
r3m: import("../use-r3m").R3M<MapInstance>;
|
|
7
|
+
};
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/// <reference types="react" />
|
|
2
|
+
import { Matrix4Tuple } from "three";
|
|
3
|
+
import { CanvasProps } from "../../api/canvas-props";
|
|
4
|
+
import { FromLngLat, MapInstance } from "../generic-map";
|
|
5
|
+
interface CanvasPortalProps extends CanvasProps {
|
|
6
|
+
setOnRender: (callback: () => (mx: Matrix4Tuple) => void) => void;
|
|
7
|
+
map: MapInstance;
|
|
8
|
+
fromLngLat: FromLngLat;
|
|
9
|
+
}
|
|
10
|
+
export declare const CanvasPortal: import("react").NamedExoticComponent<CanvasPortalProps>;
|
|
11
|
+
export {};
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/// <reference types="react" />
|
|
2
|
+
import { Matrix4Tuple } from "three";
|
|
3
|
+
import { CanvasProps } from "../../api/canvas-props";
|
|
4
|
+
import { FromLngLat, MapInstance } from "../generic-map";
|
|
5
|
+
interface InitCanvasFCProps extends CanvasProps {
|
|
6
|
+
map: MapInstance;
|
|
7
|
+
setOnRender: (callback: () => (mx: Matrix4Tuple) => void) => void;
|
|
8
|
+
frameloop?: 'always' | 'demand';
|
|
9
|
+
fromLngLat: FromLngLat;
|
|
10
|
+
}
|
|
11
|
+
export declare const InitCanvasFC: import("react").NamedExoticComponent<InitCanvasFCProps>;
|
|
12
|
+
export {};
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/// <reference types="react" />
|
|
2
|
+
import { FromLngLat, MapInstance } from "../generic-map";
|
|
3
|
+
import { Coords } from "../../api/coords";
|
|
4
|
+
interface InitR3MProps extends Coords {
|
|
5
|
+
map: MapInstance;
|
|
6
|
+
fromLngLat: FromLngLat;
|
|
7
|
+
}
|
|
8
|
+
/** Initialises the `R3M` hook */
|
|
9
|
+
export declare const InitR3M: import("react").NamedExoticComponent<InitR3MProps>;
|
|
10
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export type Render = (gl: WebGLRenderingContext, matrix: number[]) => void;
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/// <reference types="react" />
|
|
2
|
+
import { Matrix4Tuple } from "three";
|
|
3
|
+
import { Coords } from "../../api/coords";
|
|
4
|
+
interface SyncCameraFCProps extends Coords {
|
|
5
|
+
setOnRender?: (callback: () => (mx: Matrix4Tuple) => void) => void;
|
|
6
|
+
/** on `useFrame` it will manually render (used by `<Coordinates>`) */
|
|
7
|
+
manualRender?: boolean;
|
|
8
|
+
onReady?: () => void;
|
|
9
|
+
mapCanvas: HTMLCanvasElement;
|
|
10
|
+
}
|
|
11
|
+
/** React Component (FC) to sync the Three camera with the map provider */
|
|
12
|
+
export declare const SyncCameraFC: import("react").NamedExoticComponent<SyncCameraFCProps>;
|
|
13
|
+
export {};
|
|
@@ -1,8 +1,6 @@
|
|
|
1
1
|
import { FromLngLat } from "./generic-map";
|
|
2
|
+
import { Coords } from "../api/coords";
|
|
2
3
|
/** calculate Matrix4 from coordinates */
|
|
3
|
-
export declare function coordsToMatrix({ longitude, latitude, altitude, fromLngLat }: {
|
|
4
|
-
longitude: number;
|
|
5
|
-
latitude: number;
|
|
6
|
-
altitude: number;
|
|
4
|
+
export declare function coordsToMatrix({ longitude, latitude, altitude, fromLngLat }: Coords & {
|
|
7
5
|
fromLngLat: FromLngLat;
|
|
8
6
|
}): import("three").Matrix4Tuple;
|
|
@@ -31,6 +31,8 @@ export interface MercatorCoordinate {
|
|
|
31
31
|
/** Generic interface of Mapbox/Maplibre `Map` */
|
|
32
32
|
export interface MapInstance {
|
|
33
33
|
getCanvas(): HTMLCanvasElement;
|
|
34
|
+
/** MapLibre only */
|
|
35
|
+
getPixelRatio?: () => number;
|
|
34
36
|
triggerRepaint(): void;
|
|
35
37
|
on<T extends keyof MapEventType>(type: T, listener: (ev: MapEventType[T] & Object) => void): this;
|
|
36
38
|
off<T extends keyof MapEventType>(type: T, listener: (ev: MapEventType[T] & Object) => void): this;
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import { coordsToMatrix } from "./coords-to-matrix";
|
|
2
|
+
type Props = Parameters<typeof coordsToMatrix>[0];
|
|
3
|
+
/** calculate matrix from coordinates */
|
|
4
|
+
export declare function useCoordsToMatrix({ latitude, longitude, altitude, fromLngLat }: Props): import("three").Matrix4Tuple;
|
|
5
|
+
export {};
|
|
@@ -1,5 +1,7 @@
|
|
|
1
|
-
import {
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
export declare function useCoords(
|
|
5
|
-
export {};
|
|
1
|
+
import { RootState } from "@react-three/fiber";
|
|
2
|
+
import { UseBoundStore } from 'zustand';
|
|
3
|
+
import { Coords } from "../api/coords";
|
|
4
|
+
export declare function useCoords(): Coords;
|
|
5
|
+
export declare function useSetCoords({ longitude, latitude, altitude }: Coords): void;
|
|
6
|
+
export declare function useSetRootCoords(store: UseBoundStore<RootState>, { longitude, latitude, altitude }: Coords): void;
|
|
7
|
+
export declare function setCoords(store: UseBoundStore<RootState>, coords: Coords): void;
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { RootState } from "@react-three/fiber";
|
|
2
|
+
import { Matrix4Tuple } from "three";
|
|
3
|
+
import { UseBoundStore } from 'zustand';
|
|
4
|
+
import { FromLngLat, MapInstance } from "./generic-map";
|
|
5
|
+
export interface R3M<T extends MapInstance = MapInstance> {
|
|
6
|
+
/** Map provider */
|
|
7
|
+
map: T;
|
|
8
|
+
/** view projection matrix coming from the map provider */
|
|
9
|
+
viewProjMx: Matrix4Tuple;
|
|
10
|
+
fromLngLat: FromLngLat;
|
|
11
|
+
}
|
|
12
|
+
export declare function useR3M<T extends MapInstance>(): R3M<T>;
|
|
13
|
+
/** init `useR3M` hook */
|
|
14
|
+
export declare function useInitR3M<T extends MapInstance>(props: {
|
|
15
|
+
map: T;
|
|
16
|
+
fromLngLat: FromLngLat;
|
|
17
|
+
}): void;
|
|
18
|
+
export declare function initR3M<T extends MapInstance>({ store, ...props }: {
|
|
19
|
+
map: T;
|
|
20
|
+
fromLngLat: FromLngLat;
|
|
21
|
+
store: UseBoundStore<RootState>;
|
|
22
|
+
}): R3M<T>;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
/// <reference types="react" />
|
|
2
2
|
import { CanvasProps } from "../api/canvas-props";
|
|
3
|
-
/** react`-three-fiber` canvas inside `
|
|
3
|
+
/** react`-three-fiber` canvas inside `Mapbox` */
|
|
4
4
|
export declare const Canvas: import("react").NamedExoticComponent<CanvasProps>;
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import type { Map } from 'maplibre-gl';
|
|
2
|
-
export * from './api
|
|
3
|
-
export * from './
|
|
4
|
-
export
|
|
5
|
-
export declare const useMap: () => Map | undefined;
|
|
2
|
+
export * from './api';
|
|
3
|
+
export * from './mapbox/canvas';
|
|
4
|
+
export declare const useMap: () => Map;
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import { RenderProps } from "@react-three/fiber";
|
|
2
2
|
import { PropsWithChildren } from "react";
|
|
3
|
-
|
|
3
|
+
import { Coords } from "./coords";
|
|
4
|
+
export interface CanvasProps extends Coords, Omit<RenderProps<HTMLCanvasElement>, 'frameloop'>, PropsWithChildren {
|
|
4
5
|
id?: string;
|
|
5
6
|
beforeId?: string;
|
|
6
|
-
longitude: number;
|
|
7
|
-
latitude: number;
|
|
8
|
-
altitude?: number;
|
|
9
7
|
frameloop?: 'always' | 'demand';
|
|
8
|
+
/** render on a separated `<canvas>` that sits on top of the map provider */
|
|
9
|
+
overlay?: boolean;
|
|
10
10
|
}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import { Vector3Tuple } from "three";
|
|
2
|
+
import { Coords } from "./coords";
|
|
3
|
+
/** converts geo coordinates `point` to a `Vector3Tuple` (represented in meters) using `origin` as the origin. */
|
|
4
|
+
export declare function coordsToVector3(point: Coords, origin: Coords): Vector3Tuple;
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
import { MapInstance } from "../core/generic-map";
|
|
2
|
-
export declare const useMap: <T extends MapInstance = MapInstance>() => T
|
|
2
|
+
export declare const useMap: <T extends MapInstance = MapInstance>() => T;
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { CanvasProps } from "../../api/canvas-props";
|
|
2
|
+
import { FromLngLat, MapInstance } from "../generic-map";
|
|
3
|
+
/** get all the properties that you need to render as a map `<Layer>` */
|
|
4
|
+
export declare function useCanvasInLayer(props: CanvasProps, fromLngLat: FromLngLat, map: MapInstance): {
|
|
5
|
+
readonly id: string | undefined;
|
|
6
|
+
readonly beforeId: string | undefined;
|
|
7
|
+
readonly onRemove: () => void;
|
|
8
|
+
readonly render: (_gl: WebGL2RenderingContext, projViewMx: number[]) => void;
|
|
9
|
+
readonly type: "custom";
|
|
10
|
+
readonly renderingMode: "3d";
|
|
11
|
+
};
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { RootState } from "@react-three/fiber";
|
|
2
|
+
import { Matrix4Tuple } from "three";
|
|
3
|
+
import { UseBoundStore } from "zustand";
|
|
4
|
+
import { MapInstance } from "../generic-map";
|
|
5
|
+
import { R3M } from "../use-r3m";
|
|
6
|
+
export declare function useRender({ map, origin, useThree, frameloop, r3m, }: {
|
|
7
|
+
map: MapInstance;
|
|
8
|
+
origin: Matrix4Tuple;
|
|
9
|
+
useThree: UseBoundStore<RootState>;
|
|
10
|
+
frameloop?: 'always' | 'demand';
|
|
11
|
+
r3m: R3M;
|
|
12
|
+
}): (_gl: WebGL2RenderingContext, projViewMx: number[]) => void;
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { CanvasProps } from "../../api/canvas-props";
|
|
2
|
+
import { FromLngLat, MapInstance } from "../generic-map";
|
|
3
|
+
export declare function useRoot(fromLngLat: FromLngLat, map: MapInstance, { frameloop, longitude, latitude, altitude, ...props }: CanvasProps): {
|
|
4
|
+
onRemove: () => void;
|
|
5
|
+
useThree: import("zustand").UseBoundStore<import("@react-three/fiber").RootState>;
|
|
6
|
+
r3m: import("../use-r3m").R3M<MapInstance>;
|
|
7
|
+
};
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/// <reference types="react" />
|
|
2
|
+
import { Matrix4Tuple } from "three";
|
|
3
|
+
import { CanvasProps } from "../../api/canvas-props";
|
|
4
|
+
import { FromLngLat, MapInstance } from "../generic-map";
|
|
5
|
+
interface CanvasPortalProps extends CanvasProps {
|
|
6
|
+
setOnRender: (callback: () => (mx: Matrix4Tuple) => void) => void;
|
|
7
|
+
map: MapInstance;
|
|
8
|
+
fromLngLat: FromLngLat;
|
|
9
|
+
}
|
|
10
|
+
export declare const CanvasPortal: import("react").NamedExoticComponent<CanvasPortalProps>;
|
|
11
|
+
export {};
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/// <reference types="react" />
|
|
2
|
+
import { Matrix4Tuple } from "three";
|
|
3
|
+
import { CanvasProps } from "../../api/canvas-props";
|
|
4
|
+
import { FromLngLat, MapInstance } from "../generic-map";
|
|
5
|
+
interface InitCanvasFCProps extends CanvasProps {
|
|
6
|
+
map: MapInstance;
|
|
7
|
+
setOnRender: (callback: () => (mx: Matrix4Tuple) => void) => void;
|
|
8
|
+
frameloop?: 'always' | 'demand';
|
|
9
|
+
fromLngLat: FromLngLat;
|
|
10
|
+
}
|
|
11
|
+
export declare const InitCanvasFC: import("react").NamedExoticComponent<InitCanvasFCProps>;
|
|
12
|
+
export {};
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/// <reference types="react" />
|
|
2
|
+
import { FromLngLat, MapInstance } from "../generic-map";
|
|
3
|
+
import { Coords } from "../../api/coords";
|
|
4
|
+
interface InitR3MProps extends Coords {
|
|
5
|
+
map: MapInstance;
|
|
6
|
+
fromLngLat: FromLngLat;
|
|
7
|
+
}
|
|
8
|
+
/** Initialises the `R3M` hook */
|
|
9
|
+
export declare const InitR3M: import("react").NamedExoticComponent<InitR3MProps>;
|
|
10
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export type Render = (gl: WebGLRenderingContext, matrix: number[]) => void;
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/// <reference types="react" />
|
|
2
|
+
import { Matrix4Tuple } from "three";
|
|
3
|
+
import { Coords } from "../../api/coords";
|
|
4
|
+
interface SyncCameraFCProps extends Coords {
|
|
5
|
+
setOnRender?: (callback: () => (mx: Matrix4Tuple) => void) => void;
|
|
6
|
+
/** on `useFrame` it will manually render (used by `<Coordinates>`) */
|
|
7
|
+
manualRender?: boolean;
|
|
8
|
+
onReady?: () => void;
|
|
9
|
+
mapCanvas: HTMLCanvasElement;
|
|
10
|
+
}
|
|
11
|
+
/** React Component (FC) to sync the Three camera with the map provider */
|
|
12
|
+
export declare const SyncCameraFC: import("react").NamedExoticComponent<SyncCameraFCProps>;
|
|
13
|
+
export {};
|
|
@@ -1,8 +1,6 @@
|
|
|
1
1
|
import { FromLngLat } from "./generic-map";
|
|
2
|
+
import { Coords } from "../api/coords";
|
|
2
3
|
/** calculate Matrix4 from coordinates */
|
|
3
|
-
export declare function coordsToMatrix({ longitude, latitude, altitude, fromLngLat }: {
|
|
4
|
-
longitude: number;
|
|
5
|
-
latitude: number;
|
|
6
|
-
altitude: number;
|
|
4
|
+
export declare function coordsToMatrix({ longitude, latitude, altitude, fromLngLat }: Coords & {
|
|
7
5
|
fromLngLat: FromLngLat;
|
|
8
6
|
}): import("three").Matrix4Tuple;
|
|
@@ -31,6 +31,8 @@ export interface MercatorCoordinate {
|
|
|
31
31
|
/** Generic interface of Mapbox/Maplibre `Map` */
|
|
32
32
|
export interface MapInstance {
|
|
33
33
|
getCanvas(): HTMLCanvasElement;
|
|
34
|
+
/** MapLibre only */
|
|
35
|
+
getPixelRatio?: () => number;
|
|
34
36
|
triggerRepaint(): void;
|
|
35
37
|
on<T extends keyof MapEventType>(type: T, listener: (ev: MapEventType[T] & Object) => void): this;
|
|
36
38
|
off<T extends keyof MapEventType>(type: T, listener: (ev: MapEventType[T] & Object) => void): this;
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import { coordsToMatrix } from "./coords-to-matrix";
|
|
2
|
+
type Props = Parameters<typeof coordsToMatrix>[0];
|
|
3
|
+
/** calculate matrix from coordinates */
|
|
4
|
+
export declare function useCoordsToMatrix({ latitude, longitude, altitude, fromLngLat }: Props): import("three").Matrix4Tuple;
|
|
5
|
+
export {};
|
|
@@ -1,5 +1,7 @@
|
|
|
1
|
-
import {
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
export declare function useCoords(
|
|
5
|
-
export {};
|
|
1
|
+
import { RootState } from "@react-three/fiber";
|
|
2
|
+
import { UseBoundStore } from 'zustand';
|
|
3
|
+
import { Coords } from "../api/coords";
|
|
4
|
+
export declare function useCoords(): Coords;
|
|
5
|
+
export declare function useSetCoords({ longitude, latitude, altitude }: Coords): void;
|
|
6
|
+
export declare function useSetRootCoords(store: UseBoundStore<RootState>, { longitude, latitude, altitude }: Coords): void;
|
|
7
|
+
export declare function setCoords(store: UseBoundStore<RootState>, coords: Coords): void;
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { RootState } from "@react-three/fiber";
|
|
2
|
+
import { Matrix4Tuple } from "three";
|
|
3
|
+
import { UseBoundStore } from 'zustand';
|
|
4
|
+
import { FromLngLat, MapInstance } from "./generic-map";
|
|
5
|
+
export interface R3M<T extends MapInstance = MapInstance> {
|
|
6
|
+
/** Map provider */
|
|
7
|
+
map: T;
|
|
8
|
+
/** view projection matrix coming from the map provider */
|
|
9
|
+
viewProjMx: Matrix4Tuple;
|
|
10
|
+
fromLngLat: FromLngLat;
|
|
11
|
+
}
|
|
12
|
+
export declare function useR3M<T extends MapInstance>(): R3M<T>;
|
|
13
|
+
/** init `useR3M` hook */
|
|
14
|
+
export declare function useInitR3M<T extends MapInstance>(props: {
|
|
15
|
+
map: T;
|
|
16
|
+
fromLngLat: FromLngLat;
|
|
17
|
+
}): void;
|
|
18
|
+
export declare function initR3M<T extends MapInstance>({ store, ...props }: {
|
|
19
|
+
map: T;
|
|
20
|
+
fromLngLat: FromLngLat;
|
|
21
|
+
store: UseBoundStore<RootState>;
|
|
22
|
+
}): R3M<T>;
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import type { Map } from 'mapbox-gl';
|
|
2
|
-
export * from './api
|
|
3
|
-
export * from './api/coordinates';
|
|
2
|
+
export * from './api';
|
|
4
3
|
export * from './mapbox/canvas';
|
|
5
|
-
export declare const useMap: () => Map
|
|
4
|
+
export declare const useMap: () => Map;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "react-three-map",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.8.0",
|
|
4
4
|
"description": "Use react-three-fiber inside MapLibre and Mapbox",
|
|
5
5
|
"main": "dist/cjs/main.js",
|
|
6
6
|
"module": "dist/es/main.mjs",
|
|
@@ -29,18 +29,21 @@
|
|
|
29
29
|
"build:stories": "yarn ladle build",
|
|
30
30
|
"test": "yarn vitest"
|
|
31
31
|
},
|
|
32
|
-
"dependencies": {
|
|
32
|
+
"dependencies": {
|
|
33
|
+
"@turf/turf": "^7.0.0-alpha.2"
|
|
34
|
+
},
|
|
33
35
|
"devDependencies": {
|
|
34
36
|
"@changesets/cli": "^2.26.1",
|
|
35
37
|
"@ladle/react": "^2.13.0",
|
|
36
|
-
"@react-three/drei": "^9.
|
|
37
|
-
"@react-three/fiber": "^8.
|
|
38
|
+
"@react-three/drei": "^9.92.3",
|
|
39
|
+
"@react-three/fiber": "^8.15.12",
|
|
40
|
+
"@react-three/postprocessing": "^2.15.11",
|
|
38
41
|
"@types/luxon": "^3.3.1",
|
|
39
42
|
"@types/node": "^20.3.1",
|
|
40
43
|
"@types/react": "^18.0.37",
|
|
41
44
|
"@types/react-dom": "^18.0.11",
|
|
42
45
|
"@types/suncalc": "^1.9.0",
|
|
43
|
-
"@types/three": "^0.
|
|
46
|
+
"@types/three": "^0.159.0",
|
|
44
47
|
"@types/tz-lookup": "^6.1.0",
|
|
45
48
|
"@typescript-eslint/eslint-plugin": "^5.59.11",
|
|
46
49
|
"@typescript-eslint/parser": "^5.59.11",
|
|
@@ -54,14 +57,14 @@
|
|
|
54
57
|
"leva": "^0.9.35",
|
|
55
58
|
"luxon": "^3.3.0",
|
|
56
59
|
"mapbox-gl": "^2.15.0",
|
|
57
|
-
"maplibre-gl": "^3.
|
|
60
|
+
"maplibre-gl": "^3.2.0",
|
|
58
61
|
"react": "^18.2.0",
|
|
59
62
|
"react-dom": "^18.2.0",
|
|
60
63
|
"react-map-gl": "^7.1.0",
|
|
61
64
|
"suncalc": "^1.9.0",
|
|
62
65
|
"suspend-react": "^0.1.3",
|
|
63
|
-
"three": "^0.
|
|
64
|
-
"three-stdlib": "^2.
|
|
66
|
+
"three": "^0.159.0",
|
|
67
|
+
"three-stdlib": "^2.28.7",
|
|
65
68
|
"typescript": "~5.0.2",
|
|
66
69
|
"tz-lookup": "^6.1.25",
|
|
67
70
|
"vite": "^4.4.4",
|
|
@@ -71,7 +74,7 @@
|
|
|
71
74
|
"peerDependencies": {
|
|
72
75
|
"@react-three/fiber": ">=8.13",
|
|
73
76
|
"mapbox-gl": ">=2.15",
|
|
74
|
-
"maplibre-gl": ">=3.
|
|
77
|
+
"maplibre-gl": ">=3.2",
|
|
75
78
|
"react": ">=18.0",
|
|
76
79
|
"react-map-gl": ">=7.1",
|
|
77
80
|
"three": ">=0.133"
|
package/stories/package.json
CHANGED
|
@@ -7,23 +7,30 @@
|
|
|
7
7
|
},
|
|
8
8
|
"dependencies": {
|
|
9
9
|
"@ladle/react": "^2.16.0",
|
|
10
|
-
"@react-three/drei": "^9.
|
|
11
|
-
"@react-three/fiber": "^8.
|
|
10
|
+
"@react-three/drei": "^9.92.3",
|
|
11
|
+
"@react-three/fiber": "^8.15.12",
|
|
12
|
+
"@react-three/postprocessing": "^2.15.11",
|
|
13
|
+
"@types/luxon": "^3.3.7",
|
|
14
|
+
"@types/suncalc": "^1.9.2",
|
|
15
|
+
"@types/tz-lookup": "^6.1.2",
|
|
12
16
|
"leva": "^0.9.35",
|
|
17
|
+
"luxon": "^3.4.4",
|
|
13
18
|
"mapbox-gl": "^2.15.0",
|
|
14
19
|
"maplibre-gl": "^3.2.0",
|
|
15
20
|
"react": "^18.2.0",
|
|
16
21
|
"react-dom": "^18.2.0",
|
|
17
22
|
"react-map-gl": "^7.1.2",
|
|
18
23
|
"react-three-map": "^0.6.1",
|
|
19
|
-
"
|
|
20
|
-
"three
|
|
24
|
+
"suncalc": "^1.9.0",
|
|
25
|
+
"three": "^0.159.0",
|
|
26
|
+
"three-stdlib": "^2.28.7",
|
|
27
|
+
"tz-lookup": "^6.1.25",
|
|
21
28
|
"web-ifc-three": "^0.0.125"
|
|
22
29
|
},
|
|
23
30
|
"devDependencies": {
|
|
24
31
|
"@types/react": "^18.2.15",
|
|
25
32
|
"@types/react-dom": "^18.2.7",
|
|
26
|
-
"@types/three": "^0.
|
|
33
|
+
"@types/three": "^0.159.0",
|
|
27
34
|
"@vitejs/plugin-react": "^4.0.3",
|
|
28
35
|
"typescript": "^5.1.6",
|
|
29
36
|
"vite": "^4.4.4"
|