react-three-map 0.4.0 → 0.4.1

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 (55) hide show
  1. package/CHANGELOG.md +6 -0
  2. package/README.md +2 -2
  3. package/dist/cjs/main.js +337 -1
  4. package/dist/es/main.mjs +4 -4
  5. package/dist/es/main10.mjs +14 -6
  6. package/dist/es/main10.mjs.map +1 -1
  7. package/dist/es/main11.mjs +48 -34
  8. package/dist/es/main11.mjs.map +1 -1
  9. package/dist/es/main12.mjs +8 -5
  10. package/dist/es/main12.mjs.map +1 -1
  11. package/dist/es/main13.mjs +64 -37
  12. package/dist/es/main13.mjs.map +1 -1
  13. package/dist/es/main2.mjs +18 -17
  14. package/dist/es/main2.mjs.map +1 -1
  15. package/dist/es/main3.mjs +46 -32
  16. package/dist/es/main3.mjs.map +1 -1
  17. package/dist/es/main4.mjs +20 -18
  18. package/dist/es/main4.mjs.map +1 -1
  19. package/dist/es/main5.mjs +3 -3
  20. package/dist/es/main5.mjs.map +1 -1
  21. package/dist/es/main6.mjs +33 -5
  22. package/dist/es/main6.mjs.map +1 -1
  23. package/dist/es/main7.mjs +11 -10
  24. package/dist/es/main7.mjs.map +1 -1
  25. package/dist/es/main8.mjs +19 -13
  26. package/dist/es/main8.mjs.map +1 -1
  27. package/dist/es/main9.mjs +17 -9
  28. package/dist/es/main9.mjs.map +1 -1
  29. package/dist/maplibre/cjs/main.js +337 -1
  30. package/dist/maplibre/es/main.mjs +4 -4
  31. package/dist/maplibre/es/main10.mjs +14 -6
  32. package/dist/maplibre/es/main10.mjs.map +1 -1
  33. package/dist/maplibre/es/main11.mjs +48 -34
  34. package/dist/maplibre/es/main11.mjs.map +1 -1
  35. package/dist/maplibre/es/main12.mjs +8 -5
  36. package/dist/maplibre/es/main12.mjs.map +1 -1
  37. package/dist/maplibre/es/main13.mjs +64 -37
  38. package/dist/maplibre/es/main13.mjs.map +1 -1
  39. package/dist/maplibre/es/main2.mjs +18 -17
  40. package/dist/maplibre/es/main2.mjs.map +1 -1
  41. package/dist/maplibre/es/main3.mjs +46 -32
  42. package/dist/maplibre/es/main3.mjs.map +1 -1
  43. package/dist/maplibre/es/main4.mjs +20 -18
  44. package/dist/maplibre/es/main4.mjs.map +1 -1
  45. package/dist/maplibre/es/main5.mjs +3 -3
  46. package/dist/maplibre/es/main5.mjs.map +1 -1
  47. package/dist/maplibre/es/main6.mjs +33 -5
  48. package/dist/maplibre/es/main6.mjs.map +1 -1
  49. package/dist/maplibre/es/main7.mjs +11 -10
  50. package/dist/maplibre/es/main7.mjs.map +1 -1
  51. package/dist/maplibre/es/main8.mjs +19 -13
  52. package/dist/maplibre/es/main8.mjs.map +1 -1
  53. package/dist/maplibre/es/main9.mjs +17 -9
  54. package/dist/maplibre/es/main9.mjs.map +1 -1
  55. package/package.json +1 -1
@@ -1,56 +1,83 @@
1
- import { createEvents as p } from "@react-three/fiber";
2
- const c = {
3
- onClick: ["click", !1],
4
- onContextMenu: ["contextmenu", !1],
5
- onDoubleClick: ["dblclick", !1],
6
- onWheel: ["wheel", !0],
7
- onPointerDown: ["pointerdown", !0],
8
- onPointerUp: ["pointerup", !0],
9
- onPointerLeave: ["pointerleave", !0],
10
- onPointerMove: ["pointermove", !0],
11
- onPointerCancel: ["pointercancel", !0],
12
- onLostPointerCapture: ["lostpointercapture", !0]
1
+ import { createEvents as createEvents$1 } from "@react-three/fiber";
2
+ import { PerspectiveCamera } from "three";
3
+ const DOM_EVENTS = {
4
+ onClick: ["click", false],
5
+ onContextMenu: ["contextmenu", false],
6
+ onDoubleClick: ["dblclick", false],
7
+ onWheel: ["wheel", true],
8
+ onPointerDown: ["pointerdown", true],
9
+ onPointerUp: ["pointerup", true],
10
+ onPointerLeave: ["pointerleave", true],
11
+ onPointerMove: ["pointermove", true],
12
+ onPointerCancel: ["pointercancel", true],
13
+ onLostPointerCapture: ["lostpointercapture", true]
13
14
  };
14
- function u() {
15
- return (o) => {
16
- const { handlePointer: a } = p(o);
15
+ const identity = [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1];
16
+ function createEvents() {
17
+ return (store) => {
18
+ const { handlePointer } = createEvents$1(store);
19
+ const rayCamera = new PerspectiveCamera();
20
+ rayCamera.position.z = 5;
21
+ rayCamera.matrixAutoUpdate = false;
22
+ rayCamera.matrixWorldAutoUpdate = false;
23
+ rayCamera.lookAt(0, 0, 0);
17
24
  return {
18
25
  priority: 1,
19
- enabled: !0,
20
- compute(n, e) {
21
- e.size.width = e.gl.domElement.width / window.devicePixelRatio, e.size.height = e.gl.domElement.height / window.devicePixelRatio, e.pointer.x = n.offsetX / e.size.width * 2 - 1, e.pointer.y = 1 - n.offsetY / e.size.height * 2, e.raycaster.camera = e.camera, e.raycaster.ray.origin.setScalar(0).applyMatrix4(e.camera.projectionMatrixInverse), e.raycaster.ray.direction.set(e.pointer.x, e.pointer.y, 1).applyMatrix4(e.camera.projectionMatrixInverse).sub(e.raycaster.ray.origin).normalize();
26
+ enabled: true,
27
+ compute(event, state) {
28
+ state.size.width = state.gl.domElement.width / window.devicePixelRatio;
29
+ state.size.height = state.gl.domElement.height / window.devicePixelRatio;
30
+ state.pointer.x = event.offsetX / state.size.width * 2 - 1;
31
+ state.pointer.y = 1 - event.offsetY / state.size.height * 2;
32
+ rayCamera.copy(state.camera);
33
+ const projByViewInv = rayCamera.userData.projByViewInv || identity;
34
+ rayCamera.matrix.identity();
35
+ rayCamera.matrixWorld.identity();
36
+ rayCamera.matrixWorldInverse.copy(rayCamera.matrixWorld).invert();
37
+ rayCamera.projectionMatrixInverse.fromArray(projByViewInv);
38
+ rayCamera.projectionMatrix.fromArray(rayCamera.userData.projByView);
39
+ state.raycaster.camera = state.camera;
40
+ state.raycaster.ray.origin.setScalar(0).applyMatrix4(rayCamera.projectionMatrixInverse);
41
+ state.raycaster.ray.direction.set(state.pointer.x, state.pointer.y, 1).applyMatrix4(rayCamera.projectionMatrixInverse).sub(state.raycaster.ray.origin).normalize();
22
42
  },
23
43
  connected: void 0,
24
- handlers: Object.keys(c).reduce(
25
- (n, e) => ({ ...n, [e]: a(e) }),
44
+ handlers: Object.keys(DOM_EVENTS).reduce(
45
+ (acc, key) => ({ ...acc, [key]: handlePointer(key) }),
26
46
  {}
27
47
  ),
28
48
  update: () => {
29
- var t;
30
- const { events: n, internal: e } = o.getState();
31
- (t = e.lastEvent) != null && t.current && n.handlers && n.handlers.onPointerMove(e.lastEvent.current);
49
+ var _a;
50
+ const { events, internal } = store.getState();
51
+ if (((_a = internal.lastEvent) == null ? void 0 : _a.current) && events.handlers) {
52
+ events.handlers.onPointerMove(internal.lastEvent.current);
53
+ }
32
54
  },
33
- connect: (n) => {
34
- var i;
35
- const { set: e, events: t } = o.getState();
36
- (i = t.disconnect) == null || i.call(t), e((r) => ({ events: { ...r.events, connected: n.parentNode } })), Object.entries(t.handlers ?? []).forEach(([r, l]) => {
37
- const [s, d] = c[r];
38
- n.addEventListener(s, l, { passive: d });
55
+ connect: (target) => {
56
+ var _a;
57
+ const { set, events } = store.getState();
58
+ (_a = events.disconnect) == null ? void 0 : _a.call(events);
59
+ set((state) => ({ events: { ...state.events, connected: target.parentNode } }));
60
+ Object.entries(events.handlers ?? []).forEach(([name, event]) => {
61
+ const [eventName, passive] = DOM_EVENTS[name];
62
+ target.addEventListener(eventName, event, { passive });
39
63
  });
40
64
  },
41
65
  disconnect: () => {
42
- const { set: n, events: e } = o.getState();
43
- e.connected && (Object.entries(e.handlers ?? []).forEach(([t, i]) => {
44
- if (e && e.connected instanceof HTMLElement) {
45
- const [r] = c[t];
46
- e.connected.removeEventListener(r, i);
47
- }
48
- }), n((t) => ({ events: { ...t.events, connected: void 0 } })));
66
+ const { set, events } = store.getState();
67
+ if (events.connected) {
68
+ Object.entries(events.handlers ?? []).forEach(([name, event]) => {
69
+ if (events && events.connected instanceof HTMLElement) {
70
+ const [eventName] = DOM_EVENTS[name];
71
+ events.connected.removeEventListener(eventName, event);
72
+ }
73
+ });
74
+ set((state) => ({ events: { ...state.events, connected: void 0 } }));
75
+ }
49
76
  }
50
77
  };
51
78
  };
52
79
  }
53
80
  export {
54
- u as createEvents
81
+ createEvents
55
82
  };
56
83
  //# sourceMappingURL=main13.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"main13.mjs","sources":["../../../src/core/create-events.ts"],"sourcesContent":["import { Events, RenderProps, RootState, createEvents as createFiberEvents } from \"@react-three/fiber\";\nimport { UseBoundStore } from \"zustand\";\n\ntype DomEvent = PointerEvent | MouseEvent | WheelEvent;\n\nconst DOM_EVENTS = {\n onClick: [\"click\", false],\n onContextMenu: [\"contextmenu\", false],\n onDoubleClick: [\"dblclick\", false],\n onWheel: [\"wheel\", true],\n onPointerDown: [\"pointerdown\", true],\n onPointerUp: [\"pointerup\", true],\n onPointerLeave: [\"pointerleave\", true],\n onPointerMove: [\"pointermove\", true],\n onPointerCancel: [\"pointercancel\", true],\n onLostPointerCapture: [\"lostpointercapture\", true],\n} as const;\n\n/** ThreeLayer event manager for MapLibre and Mapbox */\nexport function createEvents(): RenderProps<HTMLCanvasElement>[\"events\"] {\n return (store: UseBoundStore<RootState>) => {\n const { handlePointer } = createFiberEvents(store);\n return {\n priority: 1,\n enabled: true,\n compute(event: DomEvent, state: RootState) {\n state.size.width = state.gl.domElement.width / window.devicePixelRatio;\n state.size.height = state.gl.domElement.height / window.devicePixelRatio;\n state.pointer.x = (event.offsetX / state.size.width) * 2 - 1;\n state.pointer.y = 1 - (event.offsetY / state.size.height) * 2;\n state.raycaster.camera = state.camera;\n state.raycaster.ray.origin.setScalar(0).applyMatrix4(state.camera.projectionMatrixInverse);\n state.raycaster.ray.direction\n .set(state.pointer.x, state.pointer.y, 1)\n .applyMatrix4(state.camera.projectionMatrixInverse)\n .sub(state.raycaster.ray.origin)\n .normalize();\n },\n connected: undefined,\n handlers: Object.keys(DOM_EVENTS).reduce(\n (acc, key) => ({ ...acc, [key]: handlePointer(key) }),\n {}\n ) as unknown as Events,\n update: () => {\n const { events, internal } = store.getState();\n if (internal.lastEvent?.current && events.handlers) {\n events.handlers.onPointerMove(internal.lastEvent.current);\n }\n },\n connect: (target: HTMLElement) => {\n const { set, events } = store.getState();\n events.disconnect?.();\n set((state) => ({ events: { ...state.events, connected: target.parentNode } }));\n Object.entries(events.handlers ?? []).forEach(([name, event]) => {\n const [eventName, passive] = DOM_EVENTS[name as keyof typeof DOM_EVENTS];\n target.addEventListener(eventName, event, { passive });\n });\n },\n disconnect: () => {\n const { set, events } = store.getState();\n if (events.connected) {\n Object.entries(events.handlers ?? []).forEach(([name, event]) => {\n if (events && events.connected instanceof HTMLElement) {\n const [eventName] = DOM_EVENTS[name as keyof typeof DOM_EVENTS];\n events.connected.removeEventListener(eventName, event);\n }\n });\n set((state) => ({ events: { ...state.events, connected: undefined } }));\n }\n },\n };\n };\n}\n"],"names":["DOM_EVENTS","createEvents","store","handlePointer","createFiberEvents","event","state","acc","key","events","internal","_a","target","set","name","eventName","passive"],"mappings":"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"}
1
+ {"version":3,"file":"main13.mjs","sources":["../../../src/core/create-events.ts"],"sourcesContent":["import { Events, RenderProps, RootState, createEvents as createFiberEvents } from \"@react-three/fiber\";\nimport { PerspectiveCamera } from \"three\";\nimport { UseBoundStore } from \"zustand\";\n\ntype DomEvent = PointerEvent | MouseEvent | WheelEvent;\n\nconst DOM_EVENTS = {\n onClick: [\"click\", false],\n onContextMenu: [\"contextmenu\", false],\n onDoubleClick: [\"dblclick\", false],\n onWheel: [\"wheel\", true],\n onPointerDown: [\"pointerdown\", true],\n onPointerUp: [\"pointerup\", true],\n onPointerLeave: [\"pointerleave\", true],\n onPointerMove: [\"pointermove\", true],\n onPointerCancel: [\"pointercancel\", true],\n onLostPointerCapture: [\"lostpointercapture\", true],\n} as const;\n\nconst identity = [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1]\n\n/** ThreeLayer event manager for MapLibre and Mapbox */\nexport function createEvents(): RenderProps<HTMLCanvasElement>[\"events\"] {\n return (store: UseBoundStore<RootState>) => {\n const { handlePointer } = createFiberEvents(store);\n const rayCamera = new PerspectiveCamera();\n rayCamera.position.z = 5\n rayCamera.matrixAutoUpdate = false;\n rayCamera.matrixWorldAutoUpdate = false;\n rayCamera.lookAt(0, 0, 0)\n\n return {\n priority: 1,\n enabled: true,\n compute(event: DomEvent, state: RootState) {\n state.size.width = state.gl.domElement.width / window.devicePixelRatio;\n state.size.height = state.gl.domElement.height / window.devicePixelRatio;\n state.pointer.x = (event.offsetX / state.size.width) * 2 - 1;\n state.pointer.y = 1 - (event.offsetY / state.size.height) * 2;\n\n rayCamera.copy(state.camera as PerspectiveCamera);\n\n const projByViewInv = rayCamera.userData.projByViewInv || identity;\n\n rayCamera.matrix.identity();\n rayCamera.matrixWorld.identity();\n rayCamera.matrixWorldInverse.copy(rayCamera.matrixWorld).invert();\n rayCamera.projectionMatrixInverse.fromArray(projByViewInv)\n rayCamera.projectionMatrix.fromArray(rayCamera.userData.projByView)\n\n state.raycaster.camera = state.camera;\n state.raycaster.ray.origin.setScalar(0).applyMatrix4(rayCamera.projectionMatrixInverse);\n state.raycaster.ray.direction\n .set(state.pointer.x, state.pointer.y, 1)\n .applyMatrix4(rayCamera.projectionMatrixInverse)\n .sub(state.raycaster.ray.origin)\n .normalize();\n },\n connected: undefined,\n handlers: Object.keys(DOM_EVENTS).reduce(\n (acc, key) => ({ ...acc, [key]: handlePointer(key) }),\n {}\n ) as unknown as Events,\n update: () => {\n const { events, internal } = store.getState();\n if (internal.lastEvent?.current && events.handlers) {\n events.handlers.onPointerMove(internal.lastEvent.current);\n }\n },\n connect: (target: HTMLElement) => {\n const { set, events } = store.getState();\n events.disconnect?.();\n set((state) => ({ events: { ...state.events, connected: target.parentNode } }));\n Object.entries(events.handlers ?? []).forEach(([name, event]) => {\n const [eventName, passive] = DOM_EVENTS[name as keyof typeof DOM_EVENTS];\n target.addEventListener(eventName, event, { passive });\n });\n },\n disconnect: () => {\n const { set, events } = store.getState();\n if (events.connected) {\n Object.entries(events.handlers ?? []).forEach(([name, event]) => {\n if (events && events.connected instanceof HTMLElement) {\n const [eventName] = DOM_EVENTS[name as keyof typeof DOM_EVENTS];\n events.connected.removeEventListener(eventName, event);\n }\n });\n set((state) => ({ events: { ...state.events, connected: undefined } }));\n }\n },\n };\n };\n}\n"],"names":["createFiberEvents"],"mappings":"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"}
@@ -1,26 +1,27 @@
1
- import { jsx as n } from "react/jsx-runtime";
2
- import { extend as a } from "@react-three/fiber";
3
- import { MercatorCoordinate as i } from "maplibre-gl";
4
- import { memo as d } from "react";
5
- import { Layer as f } from "react-map-gl/maplibre";
6
- import * as p from "three";
7
- import { useCanvas as s } from "./main4.mjs";
8
- a(p);
9
- const c = i.fromLngLat, y = d((o) => {
10
- const { id: r, onAdd: m, onRemove: t, render: e } = s({ ...o, fromLngLat: c });
11
- return /* @__PURE__ */ n(
12
- f,
1
+ import { jsx } from "react/jsx-runtime";
2
+ import { extend } from "@react-three/fiber";
3
+ import { MercatorCoordinate } from "maplibre-gl";
4
+ import { memo } from "react";
5
+ import { Layer } from "react-map-gl/maplibre";
6
+ import * as THREE from "three";
7
+ import { useCanvas } from "./main4.mjs";
8
+ extend(THREE);
9
+ const fromLngLat = MercatorCoordinate.fromLngLat;
10
+ const Canvas = memo((props) => {
11
+ const { id, onAdd, onRemove, render } = useCanvas({ ...props, fromLngLat });
12
+ return /* @__PURE__ */ jsx(
13
+ Layer,
13
14
  {
14
- id: r,
15
+ id,
15
16
  type: "custom",
16
17
  renderingMode: "3d",
17
- onAdd: m,
18
- onRemove: t,
19
- render: e
18
+ onAdd,
19
+ onRemove,
20
+ render
20
21
  }
21
22
  );
22
23
  });
23
24
  export {
24
- y as Canvas
25
+ Canvas
25
26
  };
26
27
  //# sourceMappingURL=main2.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"main2.mjs","sources":["../../../src/maplibre/canvas.tsx"],"sourcesContent":["import { extend } from \"@react-three/fiber\";\nimport { MercatorCoordinate } from \"maplibre-gl\";\nimport { memo } from \"react\";\nimport { Layer } from \"react-map-gl/maplibre\";\nimport * as THREE from \"three\";\nimport { useCanvas } from \"../core/use-canvas\";\nimport { CanvasProps } from \"../api/canvas-props\";\n\nextend(THREE);\n\nconst fromLngLat = MercatorCoordinate.fromLngLat\n\n/** react`-three-fiber` canvas inside `MapLibre` */\nexport const Canvas = memo<CanvasProps>((props) => {\n\n const { id, onAdd, onRemove, render } = useCanvas({ ...props, fromLngLat });\n\n return <Layer\n id={id}\n type=\"custom\"\n renderingMode=\"3d\"\n onAdd={onAdd}\n onRemove={onRemove}\n render={render}\n />\n})"],"names":["extend","THREE","fromLngLat","MercatorCoordinate","Canvas","memo","props","id","onAdd","onRemove","render","useCanvas","jsx","Layer"],"mappings":";;;;;;;AAQAA,EAAOC,CAAK;AAEZ,MAAMC,IAAaC,EAAmB,YAGzBC,IAASC,EAAkB,CAACC,MAAU;AAE3C,QAAA,EAAE,IAAAC,GAAI,OAAAC,GAAO,UAAAC,GAAU,QAAAC,EAAA,IAAWC,EAAU,EAAE,GAAGL,GAAO,YAAAJ,EAAA,CAAY;AAEnE,SAAA,gBAAAU;AAAA,IAACC;AAAA,IAAA;AAAA,MACN,IAAAN;AAAA,MACA,MAAK;AAAA,MACL,eAAc;AAAA,MACd,OAAAC;AAAA,MACA,UAAAC;AAAA,MACA,QAAAC;AAAA,IAAA;AAAA,EAAA;AAEJ,CAAC;"}
1
+ {"version":3,"file":"main2.mjs","sources":["../../../src/maplibre/canvas.tsx"],"sourcesContent":["import { extend } from \"@react-three/fiber\";\nimport { MercatorCoordinate } from \"maplibre-gl\";\nimport { memo } from \"react\";\nimport { Layer } from \"react-map-gl/maplibre\";\nimport * as THREE from \"three\";\nimport { useCanvas } from \"../core/use-canvas\";\nimport { CanvasProps } from \"../api/canvas-props\";\n\nextend(THREE);\n\nconst fromLngLat = MercatorCoordinate.fromLngLat\n\n/** react`-three-fiber` canvas inside `MapLibre` */\nexport const Canvas = memo<CanvasProps>((props) => {\n\n const { id, onAdd, onRemove, render } = useCanvas({ ...props, fromLngLat });\n\n return <Layer\n id={id}\n type=\"custom\"\n renderingMode=\"3d\"\n onAdd={onAdd}\n onRemove={onRemove}\n render={render}\n />\n})"],"names":[],"mappings":";;;;;;;AAQA,OAAO,KAAK;AAEZ,MAAM,aAAa,mBAAmB;AAGzB,MAAA,SAAS,KAAkB,CAAC,UAAU;AAE3C,QAAA,EAAE,IAAI,OAAO,UAAU,OAAA,IAAW,UAAU,EAAE,GAAG,OAAO,WAAA,CAAY;AAEnE,SAAA;AAAA,IAAC;AAAA,IAAA;AAAA,MACN;AAAA,MACA,MAAK;AAAA,MACL,eAAc;AAAA,MACd;AAAA,MACA;AAAA,MACA;AAAA,IAAA;AAAA,EAAA;AAEJ,CAAC;"}
@@ -1,42 +1,56 @@
1
- import { jsx as m, Fragment as s, jsxs as c } from "react/jsx-runtime";
2
- import { createPortal as u, useThree as f, useFrame as p } from "@react-three/fiber";
3
- import { memo as d, useState as l, useRef as C, useLayoutEffect as g } from "react";
4
- import { Scene as x } from "three";
5
- import { useR3M as L } from "./main5.mjs";
6
- import { syncCamera as R } from "./main6.mjs";
7
- import { useCoords as y } from "./main7.mjs";
8
- const h = d(({
9
- latitude: e,
10
- longitude: n,
11
- altitude: o = 0,
12
- children: a
1
+ import { jsx, Fragment, jsxs } from "react/jsx-runtime";
2
+ import { createPortal, useThree, useFrame } from "@react-three/fiber";
3
+ import { memo, useState, useRef, useLayoutEffect } from "react";
4
+ import { Scene } from "three";
5
+ import { useR3M } from "./main5.mjs";
6
+ import { syncCamera } from "./main6.mjs";
7
+ import { useCoords } from "./main7.mjs";
8
+ const Coordinates = memo(({
9
+ latitude,
10
+ longitude,
11
+ altitude = 0,
12
+ children
13
13
  }) => {
14
- const [t] = l(() => new x()), r = L(), i = y({
15
- latitude: e,
16
- longitude: n,
17
- altitude: o,
18
- fromLngLat: r.fromLngLat
14
+ const [scene] = useState(() => new Scene());
15
+ const r3m = useR3M();
16
+ const origin = useCoords({
17
+ latitude,
18
+ longitude,
19
+ altitude,
20
+ fromLngLat: r3m.fromLngLat
19
21
  });
20
- return /* @__PURE__ */ m(s, { children: u(/* @__PURE__ */ c(s, { children: [
21
- /* @__PURE__ */ m(v, { r3m: r, origin: i }),
22
- a
23
- ] }), t, { events: { priority: 2 } }) });
22
+ return /* @__PURE__ */ jsx(Fragment, { children: createPortal(/* @__PURE__ */ jsxs(Fragment, { children: [
23
+ /* @__PURE__ */ jsx(RenderAtCoords, { r3m, origin }),
24
+ children
25
+ ] }), scene, { events: { priority: 2 } }) });
24
26
  });
25
- h.displayName = "Coordinates";
26
- function v({ r3m: e, origin: n }) {
27
- const { gl: o, scene: a, set: t } = f(), r = C(null);
28
- return p(() => {
29
- e.mapCamMx && r.current && (R(r.current, n, e.mapCamMx), o.render(a, r.current));
30
- }), g(() => {
31
- r.current && t({
27
+ Coordinates.displayName = "Coordinates";
28
+ function RenderAtCoords({ r3m, origin }) {
29
+ const { gl, scene, set } = useThree();
30
+ const cameraRef = useRef(null);
31
+ useFrame(() => {
32
+ if (!r3m.mapCamMx)
33
+ return;
34
+ if (!cameraRef.current)
35
+ return;
36
+ syncCamera(cameraRef.current, origin, r3m.mapCamMx);
37
+ gl.render(scene, cameraRef.current);
38
+ });
39
+ useLayoutEffect(() => {
40
+ if (!cameraRef.current)
41
+ return;
42
+ set({
32
43
  invalidate: () => {
33
- e.map && e.map.triggerRepaint();
44
+ if (!r3m.map)
45
+ return;
46
+ r3m.map.triggerRepaint();
34
47
  },
35
- camera: r.current
48
+ camera: cameraRef.current
36
49
  });
37
- }, [t, e]), /* @__PURE__ */ m("perspectiveCamera", { ref: r });
50
+ }, [set, r3m]);
51
+ return /* @__PURE__ */ jsx("perspectiveCamera", { ref: cameraRef });
38
52
  }
39
53
  export {
40
- h as Coordinates
54
+ Coordinates
41
55
  };
42
56
  //# sourceMappingURL=main3.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"main3.mjs","sources":["../../../src/api/coordinates.tsx"],"sourcesContent":["import { createPortal, useFrame, useThree } from \"@react-three/fiber\";\nimport { PropsWithChildren, memo, useLayoutEffect, useRef, useState } from \"react\";\nimport { Matrix4Tuple, PerspectiveCamera, Scene } from \"three\";\nimport { R3mStore, useR3M } from \"../core/store\";\nimport { syncCamera } from \"../core/sync-camera\";\nimport { useCoords } from \"../core/use-coords\";\n\nexport interface CoordinatesProps extends PropsWithChildren {\n longitude: number,\n latitude: number,\n altitude?: number,\n}\n\nexport const Coordinates = memo<CoordinatesProps>(({\n latitude, longitude, altitude = 0, children\n}) => {\n\n const [scene] = useState(() => new Scene())\n\n const r3m = useR3M();\n\n const origin = useCoords({\n latitude, longitude, altitude, fromLngLat: r3m.fromLngLat,\n });\n\n\n return <>{createPortal(<>\n <RenderAtCoords r3m={r3m} origin={origin} />\n {children}\n </>, scene, { events: { priority: 2 } })}</>\n})\n\nCoordinates.displayName = 'Coordinates';\n\ninterface RenderAtCoordsProps {\n r3m: R3mStore,\n origin: Matrix4Tuple\n}\n\nfunction RenderAtCoords({ r3m, origin }: RenderAtCoordsProps) {\n\n const { gl, scene, set } = useThree()\n\n const cameraRef = useRef<PerspectiveCamera>(null)\n\n useFrame(() => {\n if (!r3m.mapCamMx) return;\n if (!cameraRef.current) return;\n syncCamera(cameraRef.current, origin, r3m.mapCamMx);\n gl.render(scene, cameraRef.current);\n })\n\n useLayoutEffect(() => {\n if (!cameraRef.current) return;\n set({\n invalidate: () => {\n if (!r3m.map) return;\n r3m.map.triggerRepaint();\n },\n camera: cameraRef.current,\n });\n }, [set, r3m])\n\n return <perspectiveCamera ref={cameraRef} />\n}"],"names":["Coordinates","memo","latitude","longitude","altitude","children","scene","useState","Scene","r3m","useR3M","origin","useCoords","jsx","Fragment","jsxs","RenderAtCoords","gl","set","useThree","cameraRef","useRef","useFrame","syncCamera","useLayoutEffect"],"mappings":";;;;;;;AAaa,MAAAA,IAAcC,EAAuB,CAAC;AAAA,EACjD,UAAAC;AAAA,EAAU,WAAAC;AAAA,EAAW,UAAAC,IAAW;AAAA,EAAG,UAAAC;AACrC,MAAM;AAEJ,QAAM,CAACC,CAAK,IAAIC,EAAS,MAAM,IAAIC,EAAO,CAAA,GAEpCC,IAAMC,KAENC,IAASC,EAAU;AAAA,IACvB,UAAAV;AAAA,IAAU,WAAAC;AAAA,IAAW,UAAAC;AAAA,IAAU,YAAYK,EAAI;AAAA,EAAA,CAChD;AAGM,SAAA,gBAAAI,EAAAC,GAAA,EAAG,YACR,gBAAAC,EAAAD,GAAA,EAAA,UAAA;AAAA,IAAC,gBAAAD,EAAAG,GAAA,EAAe,KAAAP,GAAU,QAAAE,EAAgB,CAAA;AAAA,IACzCN;AAAA,EAAA,GACH,GAAKC,GAAO,EAAE,QAAQ,EAAE,UAAU,EAAA,GAAK,EAAE,CAAA;AAC3C,CAAC;AAEDN,EAAY,cAAc;AAO1B,SAASgB,EAAe,EAAE,KAAAP,GAAK,QAAAE,KAA+B;AAE5D,QAAM,EAAE,IAAAM,GAAI,OAAAX,GAAO,KAAAY,MAAQC,EAAS,GAE9BC,IAAYC,EAA0B,IAAI;AAEhD,SAAAC,EAAS,MAAM;AACb,IAAKb,EAAI,YACJW,EAAU,YACfG,EAAWH,EAAU,SAAST,GAAQF,EAAI,QAAQ,GAC/CQ,EAAA,OAAOX,GAAOc,EAAU,OAAO;AAAA,EAAA,CACnC,GAEDI,EAAgB,MAAM;AACpB,IAAKJ,EAAU,WACXF,EAAA;AAAA,MACF,YAAY,MAAM;AAChB,QAAKT,EAAI,OACTA,EAAI,IAAI;MACV;AAAA,MACA,QAAQW,EAAU;AAAA,IAAA,CACnB;AAAA,EAAA,GACA,CAACF,GAAKT,CAAG,CAAC,GAEN,gBAAAI,EAAC,qBAAkB,EAAA,KAAKO,EAAW,CAAA;AAC5C;"}
1
+ {"version":3,"file":"main3.mjs","sources":["../../../src/api/coordinates.tsx"],"sourcesContent":["import { createPortal, useFrame, useThree } from \"@react-three/fiber\";\nimport { PropsWithChildren, memo, useLayoutEffect, useRef, useState } from \"react\";\nimport { Matrix4Tuple, PerspectiveCamera, Scene } from \"three\";\nimport { R3mStore, useR3M } from \"../core/store\";\nimport { syncCamera } from \"../core/sync-camera\";\nimport { useCoords } from \"../core/use-coords\";\n\nexport interface CoordinatesProps extends PropsWithChildren {\n longitude: number,\n latitude: number,\n altitude?: number,\n}\n\nexport const Coordinates = memo<CoordinatesProps>(({\n latitude, longitude, altitude = 0, children\n}) => {\n\n const [scene] = useState(() => new Scene())\n\n const r3m = useR3M();\n\n const origin = useCoords({\n latitude, longitude, altitude, fromLngLat: r3m.fromLngLat,\n });\n\n\n return <>{createPortal(<>\n <RenderAtCoords r3m={r3m} origin={origin} />\n {children}\n </>, scene, { events: { priority: 2 } })}</>\n})\n\nCoordinates.displayName = 'Coordinates';\n\ninterface RenderAtCoordsProps {\n r3m: R3mStore,\n origin: Matrix4Tuple\n}\n\nfunction RenderAtCoords({ r3m, origin }: RenderAtCoordsProps) {\n\n const { gl, scene, set } = useThree()\n\n const cameraRef = useRef<PerspectiveCamera>(null)\n\n useFrame(() => {\n if (!r3m.mapCamMx) return;\n if (!cameraRef.current) return;\n syncCamera(cameraRef.current, origin, r3m.mapCamMx);\n gl.render(scene, cameraRef.current);\n })\n\n useLayoutEffect(() => {\n if (!cameraRef.current) return;\n set({\n invalidate: () => {\n if (!r3m.map) return;\n r3m.map.triggerRepaint();\n },\n camera: cameraRef.current,\n });\n }, [set, r3m])\n\n return <perspectiveCamera ref={cameraRef} />\n}"],"names":[],"mappings":";;;;;;;AAaa,MAAA,cAAc,KAAuB,CAAC;AAAA,EACjD;AAAA,EAAU;AAAA,EAAW,WAAW;AAAA,EAAG;AACrC,MAAM;AAEJ,QAAM,CAAC,KAAK,IAAI,SAAS,MAAM,IAAI,MAAO,CAAA;AAE1C,QAAM,MAAM;AAEZ,QAAM,SAAS,UAAU;AAAA,IACvB;AAAA,IAAU;AAAA,IAAW;AAAA,IAAU,YAAY,IAAI;AAAA,EAAA,CAChD;AAGM,SAAA,oBAAA,UAAA,EAAG,uBACR,qBAAA,UAAA,EAAA,UAAA;AAAA,IAAC,oBAAA,gBAAA,EAAe,KAAU,OAAgB,CAAA;AAAA,IACzC;AAAA,EAAA,GACH,GAAK,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAA,GAAK,EAAE,CAAA;AAC3C,CAAC;AAED,YAAY,cAAc;AAO1B,SAAS,eAAe,EAAE,KAAK,UAA+B;AAE5D,QAAM,EAAE,IAAI,OAAO,QAAQ,SAAS;AAE9B,QAAA,YAAY,OAA0B,IAAI;AAEhD,WAAS,MAAM;AACb,QAAI,CAAC,IAAI;AAAU;AACnB,QAAI,CAAC,UAAU;AAAS;AACxB,eAAW,UAAU,SAAS,QAAQ,IAAI,QAAQ;AAC/C,OAAA,OAAO,OAAO,UAAU,OAAO;AAAA,EAAA,CACnC;AAED,kBAAgB,MAAM;AACpB,QAAI,CAAC,UAAU;AAAS;AACpB,QAAA;AAAA,MACF,YAAY,MAAM;AAChB,YAAI,CAAC,IAAI;AAAK;AACd,YAAI,IAAI;MACV;AAAA,MACA,QAAQ,UAAU;AAAA,IAAA,CACnB;AAAA,EAAA,GACA,CAAC,KAAK,GAAG,CAAC;AAEN,SAAA,oBAAC,qBAAkB,EAAA,KAAK,UAAW,CAAA;AAC5C;"}
@@ -1,23 +1,25 @@
1
- import { useCoords as a } from "./main7.mjs";
2
- import { useCreateRoot as f } from "./main8.mjs";
3
- import { useRender as p } from "./main9.mjs";
4
- function x({
5
- longitude: r,
6
- latitude: n,
7
- altitude: s = 0,
8
- frameloop: o = "always",
9
- fromLngLat: e,
10
- ...t
1
+ import { useCoords } from "./main7.mjs";
2
+ import { useCreateRoot } from "./main8.mjs";
3
+ import { useRender } from "./main9.mjs";
4
+ function useCanvas({
5
+ longitude,
6
+ latitude,
7
+ altitude = 0,
8
+ frameloop = "always",
9
+ fromLngLat,
10
+ ...renderProps
11
11
  }) {
12
- const m = a({
13
- latitude: n,
14
- longitude: r,
15
- altitude: s,
16
- fromLngLat: e
17
- }), { id: d, onAdd: u, onRemove: i, r3mRef: c } = f({ frameloop: o, fromLngLat: e, ...t }), R = p(m, c, o);
18
- return { id: d, onAdd: u, onRemove: i, render: R };
12
+ const m4 = useCoords({
13
+ latitude,
14
+ longitude,
15
+ altitude,
16
+ fromLngLat
17
+ });
18
+ const { id, onAdd, onRemove, r3mRef } = useCreateRoot({ frameloop, fromLngLat, ...renderProps });
19
+ const render = useRender(m4, r3mRef, frameloop);
20
+ return { id, onAdd, onRemove, render };
19
21
  }
20
22
  export {
21
- x as useCanvas
23
+ useCanvas
22
24
  };
23
25
  //# sourceMappingURL=main4.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"main4.mjs","sources":["../../../src/core/use-canvas.ts"],"sourcesContent":["import { CanvasProps } from \"../api/canvas-props\";\nimport { FromLngLat } from \"./generic-map\";\nimport { useCoords } from \"./use-coords\";\nimport { useCreateRoot } from \"./use-create-root\";\nimport { useRender } from \"./use-render\";\n\nexport interface useCanvasProps extends CanvasProps {\n fromLngLat: FromLngLat,\n}\n\nexport function useCanvas({\n longitude, latitude, altitude = 0,\n frameloop = 'always',\n fromLngLat,\n ...renderProps\n}: useCanvasProps) {\n\n const m4 = useCoords({\n latitude, longitude, altitude, fromLngLat,\n });\n\n const { id, onAdd, onRemove, r3mRef } = useCreateRoot({ frameloop, fromLngLat, ...renderProps });\n\n const render = useRender(m4, r3mRef, frameloop);\n\n return { id, onAdd, onRemove, render }\n}"],"names":["useCanvas","longitude","latitude","altitude","frameloop","fromLngLat","renderProps","m4","useCoords","id","onAdd","onRemove","r3mRef","useCreateRoot","render","useRender"],"mappings":";;;AAUO,SAASA,EAAU;AAAA,EACxB,WAAAC;AAAA,EAAW,UAAAC;AAAA,EAAU,UAAAC,IAAW;AAAA,EAChC,WAAAC,IAAY;AAAA,EACZ,YAAAC;AAAA,EACA,GAAGC;AACL,GAAmB;AAEjB,QAAMC,IAAKC,EAAU;AAAA,IACnB,UAAAN;AAAA,IAAU,WAAAD;AAAA,IAAW,UAAAE;AAAA,IAAU,YAAAE;AAAA,EAAA,CAChC,GAEK,EAAE,IAAAI,GAAI,OAAAC,GAAO,UAAAC,GAAU,QAAAC,EAAO,IAAIC,EAAc,EAAE,WAAAT,GAAW,YAAAC,GAAY,GAAGC,EAAa,CAAA,GAEzFQ,IAASC,EAAUR,GAAIK,GAAQR,CAAS;AAE9C,SAAO,EAAE,IAAAK,GAAI,OAAAC,GAAO,UAAAC,GAAU,QAAAG,EAAO;AACvC;"}
1
+ {"version":3,"file":"main4.mjs","sources":["../../../src/core/use-canvas.ts"],"sourcesContent":["import { CanvasProps } from \"../api/canvas-props\";\nimport { FromLngLat } from \"./generic-map\";\nimport { useCoords } from \"./use-coords\";\nimport { useCreateRoot } from \"./use-create-root\";\nimport { useRender } from \"./use-render\";\n\nexport interface useCanvasProps extends CanvasProps {\n fromLngLat: FromLngLat,\n}\n\nexport function useCanvas({\n longitude, latitude, altitude = 0,\n frameloop = 'always',\n fromLngLat,\n ...renderProps\n}: useCanvasProps) {\n\n const m4 = useCoords({\n latitude, longitude, altitude, fromLngLat,\n });\n\n const { id, onAdd, onRemove, r3mRef } = useCreateRoot({ frameloop, fromLngLat, ...renderProps });\n\n const render = useRender(m4, r3mRef, frameloop);\n\n return { id, onAdd, onRemove, render }\n}"],"names":[],"mappings":";;;AAUO,SAAS,UAAU;AAAA,EACxB;AAAA,EAAW;AAAA,EAAU,WAAW;AAAA,EAChC,YAAY;AAAA,EACZ;AAAA,EACA,GAAG;AACL,GAAmB;AAEjB,QAAM,KAAK,UAAU;AAAA,IACnB;AAAA,IAAU;AAAA,IAAW;AAAA,IAAU;AAAA,EAAA,CAChC;AAED,QAAM,EAAE,IAAI,OAAO,UAAU,OAAO,IAAI,cAAc,EAAE,WAAW,YAAY,GAAG,YAAa,CAAA;AAE/F,QAAM,SAAS,UAAU,IAAI,QAAQ,SAAS;AAE9C,SAAO,EAAE,IAAI,OAAO,UAAU,OAAO;AACvC;"}
@@ -1,6 +1,6 @@
1
- import { useThree as r } from "@react-three/fiber";
2
- const m = () => r((e) => e.r3m);
1
+ import { useThree } from "@react-three/fiber";
2
+ const useR3M = () => useThree((s) => s.r3m);
3
3
  export {
4
- m as useR3M
4
+ useR3M
5
5
  };
6
6
  //# sourceMappingURL=main5.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"main5.mjs","sources":["../../../src/core/store.ts"],"sourcesContent":["import { ReconcilerRoot, RootState, useThree } from \"@react-three/fiber\";\nimport { Matrix4Tuple } from \"three\";\nimport { FromLngLat, MapInstance } from \"./generic-map\";\n\n/** react-three-map store */\nexport interface R3mStore {\n fromLngLat: FromLngLat,\n map?: MapInstance;\n mapCamMx?: Matrix4Tuple;\n state?: RootState\n root?: ReconcilerRoot<HTMLCanvasElement>;\n}\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport const useR3M = (): R3mStore => useThree((s: any) => s.r3m);"],"names":["useR3M","useThree","s"],"mappings":";AAcO,MAAMA,IAAS,MAAgBC,EAAS,CAACC,MAAWA,EAAE,GAAG;"}
1
+ {"version":3,"file":"main5.mjs","sources":["../../../src/core/store.ts"],"sourcesContent":["import { ReconcilerRoot, RootState, useThree } from \"@react-three/fiber\";\nimport { Matrix4Tuple } from \"three\";\nimport { FromLngLat, MapInstance } from \"./generic-map\";\n\n/** react-three-map store */\nexport interface R3mStore {\n fromLngLat: FromLngLat,\n map?: MapInstance;\n mapCamMx?: Matrix4Tuple;\n state?: RootState\n root?: ReconcilerRoot<HTMLCanvasElement>;\n}\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport const useR3M = (): R3mStore => useThree((s: any) => s.r3m);"],"names":[],"mappings":";AAcO,MAAM,SAAS,MAAgB,SAAS,CAAC,MAAW,EAAE,GAAG;"}
@@ -1,9 +1,37 @@
1
- import { Matrix4 as i } from "three";
2
- const n = new i();
3
- function p(r, o, t) {
4
- r.projectionMatrix.fromArray(t).multiply(n.fromArray(o)), r.projectionMatrixInverse.copy(r.projectionMatrix).invert();
1
+ import { Matrix4, Vector3 } from "three";
2
+ const originMx = new Matrix4();
3
+ const projByView = new Matrix4();
4
+ const projByViewInv = new Matrix4();
5
+ const fwd = new Vector3();
6
+ function syncCamera(camera, origin, mapCamMx) {
7
+ projByView.fromArray(mapCamMx).multiply(originMx.fromArray(origin));
8
+ projByViewInv.copy(projByView).invert();
9
+ updateCamera(camera, projByViewInv);
10
+ camera.updateMatrix();
11
+ camera.updateMatrixWorld(true);
12
+ camera.projectionMatrix.copy(camera.matrix).premultiply(projByView);
13
+ camera.projectionMatrixInverse.copy(camera.projectionMatrix).invert();
14
+ camera.far = calculateFar(
15
+ camera.matrix.elements[10],
16
+ camera.matrix.elements[14],
17
+ camera.near
18
+ );
19
+ camera.userData.projByView = projByView.toArray();
20
+ camera.userData.projByViewInv = projByViewInv.toArray();
21
+ }
22
+ const updateCamera = (target, projByViewInv2) => {
23
+ target.position.setScalar(0).applyMatrix4(projByViewInv2);
24
+ target.up.set(0, -1, 0).applyMatrix4(projByViewInv2).negate().add(target.position).normalize();
25
+ fwd.set(0, 0, 1).applyMatrix4(projByViewInv2);
26
+ target.lookAt(fwd);
27
+ };
28
+ function calculateFar(c, d, near) {
29
+ const numerator = d * (c - 1);
30
+ const denominator = c * near + near;
31
+ const far = numerator / denominator;
32
+ return far;
5
33
  }
6
34
  export {
7
- p as syncCamera
35
+ syncCamera
8
36
  };
9
37
  //# sourceMappingURL=main6.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"main6.mjs","sources":["../../../src/core/sync-camera.ts"],"sourcesContent":["import { Matrix4, Matrix4Tuple, PerspectiveCamera } from \"three\";\n\nconst mx = new Matrix4();\n\nexport function syncCamera(camera: PerspectiveCamera, origin: Matrix4Tuple, mapCamMx: Matrix4Tuple) {\n camera.projectionMatrix.fromArray(mapCamMx).multiply(mx.fromArray(origin));\n camera.projectionMatrixInverse.copy(camera.projectionMatrix).invert();\n}"],"names":["mx","Matrix4","syncCamera","camera","origin","mapCamMx"],"mappings":";AAEA,MAAMA,IAAK,IAAIC;AAEC,SAAAC,EAAWC,GAA2BC,GAAsBC,GAAwB;AAC3F,EAAAF,EAAA,iBAAiB,UAAUE,CAAQ,EAAE,SAASL,EAAG,UAAUI,CAAM,CAAC,GACzED,EAAO,wBAAwB,KAAKA,EAAO,gBAAgB,EAAE;AAC/D;"}
1
+ {"version":3,"file":"main6.mjs","sources":["../../../src/core/sync-camera.ts"],"sourcesContent":["import { Matrix4, Matrix4Tuple, Object3D, PerspectiveCamera, Vector3 } from \"three\";\n\nconst originMx = new Matrix4();\n\n/** projection * view matrix */\nconst projByView = new Matrix4();\n/** projection * view matrix inverted */\nconst projByViewInv = new Matrix4();\n\n/** forward */\nconst fwd = new Vector3();\n\n\nexport function syncCamera(camera: PerspectiveCamera, origin: Matrix4Tuple, mapCamMx: Matrix4Tuple) {\n\n projByView\n .fromArray(mapCamMx)\n .multiply(originMx.fromArray(origin));\n projByViewInv\n .copy(projByView)\n .invert();\n\n updateCamera(camera, projByViewInv);\n camera.updateMatrix();\n camera.updateMatrixWorld(true); \n\n camera.projectionMatrix.copy(camera.matrix).premultiply(projByView);\n camera.projectionMatrixInverse.copy(camera.projectionMatrix).invert();\n\n camera.far = calculateFar(\n camera.matrix.elements[10], camera.matrix.elements[14], camera.near\n )\n\n camera.userData.projByView = projByView.toArray();\n camera.userData.projByViewInv = projByViewInv.toArray();\n\n}\n\nconst updateCamera = (target: Object3D, projByViewInv: Matrix4) => {\n\n target.position\n .setScalar(0)\n .applyMatrix4(projByViewInv)\n\n target.up\n .set(0, -1, 0)\n .applyMatrix4(projByViewInv)\n .negate()\n .add(target.position)\n .normalize()\n\n fwd\n .set(0, 0, 1)\n .applyMatrix4(projByViewInv)\n\n target.lookAt(fwd);\n\n}\n\nfunction calculateFar(c: number, d: number, near: number): number {\n const numerator = d * (c - 1);\n const denominator = c * near + near;\n const far = numerator / denominator;\n return far;\n}"],"names":["projByViewInv"],"mappings":";AAEA,MAAM,WAAW,IAAI;AAGrB,MAAM,aAAa,IAAI;AAEvB,MAAM,gBAAgB,IAAI;AAG1B,MAAM,MAAM,IAAI;AAGA,SAAA,WAAW,QAA2B,QAAsB,UAAwB;AAElG,aACG,UAAU,QAAQ,EAClB,SAAS,SAAS,UAAU,MAAM,CAAC;AAEnC,gBAAA,KAAK,UAAU,EACf,OAAO;AAEV,eAAa,QAAQ,aAAa;AAClC,SAAO,aAAa;AACpB,SAAO,kBAAkB,IAAI;AAE7B,SAAO,iBAAiB,KAAK,OAAO,MAAM,EAAE,YAAY,UAAU;AAClE,SAAO,wBAAwB,KAAK,OAAO,gBAAgB,EAAE;AAE7D,SAAO,MAAM;AAAA,IACX,OAAO,OAAO,SAAS,EAAE;AAAA,IAAG,OAAO,OAAO,SAAS,EAAE;AAAA,IAAG,OAAO;AAAA,EAAA;AAG1D,SAAA,SAAS,aAAa,WAAW,QAAQ;AACzC,SAAA,SAAS,gBAAgB,cAAc,QAAQ;AAExD;AAEA,MAAM,eAAe,CAAC,QAAkBA,mBAA2B;AAEjE,SAAO,SACJ,UAAU,CAAC,EACX,aAAaA,cAAa;AAE7B,SAAO,GACJ,IAAI,GAAG,IAAI,CAAC,EACZ,aAAaA,cAAa,EAC1B,SACA,IAAI,OAAO,QAAQ,EACnB;AAEH,MACG,IAAI,GAAG,GAAG,CAAC,EACX,aAAaA,cAAa;AAE7B,SAAO,OAAO,GAAG;AAEnB;AAEA,SAAS,aAAa,GAAW,GAAW,MAAsB;AAC1D,QAAA,YAAY,KAAK,IAAI;AACrB,QAAA,cAAc,IAAI,OAAO;AAC/B,QAAM,MAAM,YAAY;AACjB,SAAA;AACT;"}
@@ -1,14 +1,15 @@
1
- import { useMemo as c } from "react";
2
- import { coordsToMatrix as p } from "./main10.mjs";
3
- function x({ latitude: o, longitude: r, altitude: m, fromLngLat: s }) {
4
- return c(() => p({
5
- latitude: o,
6
- longitude: r,
7
- altitude: m,
8
- fromLngLat: s
9
- }), [o, r, m, s]);
1
+ import { useMemo } from "react";
2
+ import { coordsToMatrix } from "./main10.mjs";
3
+ function useCoords({ latitude, longitude, altitude, fromLngLat }) {
4
+ const m4 = useMemo(() => coordsToMatrix({
5
+ latitude,
6
+ longitude,
7
+ altitude,
8
+ fromLngLat
9
+ }), [latitude, longitude, altitude, fromLngLat]);
10
+ return m4;
10
11
  }
11
12
  export {
12
- x as useCoords
13
+ useCoords
13
14
  };
14
15
  //# sourceMappingURL=main7.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"main7.mjs","sources":["../../../src/core/use-coords.ts"],"sourcesContent":["import { useMemo } from \"react\";\nimport { coordsToMatrix } from \"./coords-to-matrix\";\n\ntype Props = Parameters<typeof coordsToMatrix>[0];\n\n/** calculate matrix from coordinates */\nexport function useCoords({latitude, longitude, altitude, fromLngLat}: Props) {\n const m4 = useMemo(() => coordsToMatrix({\n latitude, longitude, altitude, fromLngLat,\n }), [latitude, longitude, altitude, fromLngLat]);\n\n return m4;\n}"],"names":["useCoords","latitude","longitude","altitude","fromLngLat","useMemo","coordsToMatrix"],"mappings":";;AAMO,SAASA,EAAU,EAAC,UAAAC,GAAU,WAAAC,GAAW,UAAAC,GAAU,YAAAC,KAAoB;AAKrE,SAJIC,EAAQ,MAAMC,EAAe;AAAA,IACtC,UAAAL;AAAA,IAAU,WAAAC;AAAA,IAAW,UAAAC;AAAA,IAAU,YAAAC;AAAA,EAAA,CAChC,GAAG,CAACH,GAAUC,GAAWC,GAAUC,CAAU,CAAC;AAGjD;"}
1
+ {"version":3,"file":"main7.mjs","sources":["../../../src/core/use-coords.ts"],"sourcesContent":["import { useMemo } from \"react\";\nimport { coordsToMatrix } from \"./coords-to-matrix\";\n\ntype Props = Parameters<typeof coordsToMatrix>[0];\n\n/** calculate matrix from coordinates */\nexport function useCoords({latitude, longitude, altitude, fromLngLat}: Props) {\n const m4 = useMemo(() => coordsToMatrix({\n latitude, longitude, altitude, fromLngLat,\n }), [latitude, longitude, altitude, fromLngLat]);\n\n return m4;\n}"],"names":[],"mappings":";;AAMO,SAAS,UAAU,EAAC,UAAU,WAAW,UAAU,cAAoB;AACtE,QAAA,KAAK,QAAQ,MAAM,eAAe;AAAA,IACtC;AAAA,IAAU;AAAA,IAAW;AAAA,IAAU;AAAA,EAAA,CAChC,GAAG,CAAC,UAAU,WAAW,UAAU,UAAU,CAAC;AAExC,SAAA;AACT;"}
@@ -1,18 +1,24 @@
1
- import { jsx as d, Fragment as c } from "react/jsx-runtime";
2
- import { useId as i, useEffect as p } from "react";
3
- import { useOnAdd as R } from "./main11.mjs";
4
- const g = ({
5
- children: o,
6
- frameloop: t,
7
- fromLngLat: n,
8
- ...m
1
+ import { jsx, Fragment } from "react/jsx-runtime";
2
+ import { useId, useEffect } from "react";
3
+ import { useOnAdd } from "./main11.mjs";
4
+ const useCreateRoot = ({
5
+ children,
6
+ frameloop,
7
+ fromLngLat,
8
+ ...renderProps
9
9
  }) => {
10
- const u = i(), { onAdd: f, onRemove: s, mounted: e, r3mRef: r } = R(n, { frameloop: t, ...m });
11
- return p(() => {
12
- e && r.current.root && r.current.root.render(/* @__PURE__ */ d(c, { children: o }));
13
- }, [r, e, o]), { id: u, onAdd: f, onRemove: s, r3mRef: r };
10
+ const id = useId();
11
+ const { onAdd, onRemove, mounted, r3mRef } = useOnAdd(fromLngLat, { frameloop, ...renderProps });
12
+ useEffect(() => {
13
+ if (!mounted)
14
+ return;
15
+ if (!r3mRef.current.root)
16
+ return;
17
+ r3mRef.current.root.render(/* @__PURE__ */ jsx(Fragment, { children }));
18
+ }, [r3mRef, mounted, children]);
19
+ return { id, onAdd, onRemove, r3mRef };
14
20
  };
15
21
  export {
16
- g as useCreateRoot
22
+ useCreateRoot
17
23
  };
18
24
  //# sourceMappingURL=main8.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"main8.mjs","sources":["../../../src/core/use-create-root.tsx"],"sourcesContent":["import { RenderProps } from \"@react-three/fiber\";\nimport { PropsWithChildren, useEffect, useId } from \"react\";\nimport { FromLngLat } from \"./generic-map\";\nimport { useOnAdd } from \"./use-on-add\";\n\nexport interface useCanvasProps extends Omit<RenderProps<HTMLCanvasElement>, 'frameloop'>, PropsWithChildren {\n frameloop: 'always' | 'demand',\n fromLngLat: FromLngLat\n}\n\nexport const useCreateRoot = (({\n children, frameloop, fromLngLat, ...renderProps\n}: useCanvasProps) => {\n\n const id = useId();\n\n const { onAdd, onRemove, mounted, r3mRef } = useOnAdd(fromLngLat, { frameloop, ...renderProps });\n\n useEffect(() => {\n if (!mounted) return;\n if (!r3mRef.current.root) return;\n r3mRef.current.root.render(<>\n {children}\n </>);\n }, [r3mRef, mounted, children])\n\n return { id, onAdd, onRemove, r3mRef }\n})"],"names":["useCreateRoot","children","frameloop","fromLngLat","renderProps","id","useId","onAdd","onRemove","mounted","r3mRef","useOnAdd","useEffect","jsx","Fragment"],"mappings":";;;AAUO,MAAMA,IAAiB,CAAC;AAAA,EAC7B,UAAAC;AAAA,EAAU,WAAAC;AAAA,EAAW,YAAAC;AAAA,EAAY,GAAGC;AACtC,MAAsB;AAEpB,QAAMC,IAAKC,KAEL,EAAE,OAAAC,GAAO,UAAAC,GAAU,SAAAC,GAAS,QAAAC,EAAO,IAAIC,EAASR,GAAY,EAAE,WAAAD,GAAW,GAAGE,EAAa,CAAA;AAE/F,SAAAQ,EAAU,MAAM;AACd,IAAKH,KACAC,EAAO,QAAQ,QACpBA,EAAO,QAAQ,KAAK,OAAO,gBAAAG,EAAAC,GAAA,EACxB,UAAAb,EACH,CAAA,CAAG;AAAA,EACF,GAAA,CAACS,GAAQD,GAASR,CAAQ,CAAC,GAEvB,EAAE,IAAAI,GAAI,OAAAE,GAAO,UAAAC,GAAU,QAAAE,EAAO;AACvC;"}
1
+ {"version":3,"file":"main8.mjs","sources":["../../../src/core/use-create-root.tsx"],"sourcesContent":["import { RenderProps } from \"@react-three/fiber\";\nimport { PropsWithChildren, useEffect, useId } from \"react\";\nimport { FromLngLat } from \"./generic-map\";\nimport { useOnAdd } from \"./use-on-add\";\n\nexport interface useCanvasProps extends Omit<RenderProps<HTMLCanvasElement>, 'frameloop'>, PropsWithChildren {\n frameloop: 'always' | 'demand',\n fromLngLat: FromLngLat\n}\n\nexport const useCreateRoot = (({\n children, frameloop, fromLngLat, ...renderProps\n}: useCanvasProps) => {\n\n const id = useId();\n\n const { onAdd, onRemove, mounted, r3mRef } = useOnAdd(fromLngLat, { frameloop, ...renderProps });\n\n useEffect(() => {\n if (!mounted) return;\n if (!r3mRef.current.root) return;\n r3mRef.current.root.render(<>\n {children}\n </>);\n }, [r3mRef, mounted, children])\n\n return { id, onAdd, onRemove, r3mRef }\n})"],"names":[],"mappings":";;;AAUO,MAAM,gBAAiB,CAAC;AAAA,EAC7B;AAAA,EAAU;AAAA,EAAW;AAAA,EAAY,GAAG;AACtC,MAAsB;AAEpB,QAAM,KAAK;AAEX,QAAM,EAAE,OAAO,UAAU,SAAS,OAAO,IAAI,SAAS,YAAY,EAAE,WAAW,GAAG,YAAa,CAAA;AAE/F,YAAU,MAAM;AACd,QAAI,CAAC;AAAS;AACV,QAAA,CAAC,OAAO,QAAQ;AAAM;AAC1B,WAAO,QAAQ,KAAK,OAAO,oBAAA,UAAA,EACxB,SACH,CAAA,CAAG;AAAA,EACF,GAAA,CAAC,QAAQ,SAAS,QAAQ,CAAC;AAE9B,SAAO,EAAE,IAAI,OAAO,UAAU,OAAO;AACvC;"}
@@ -1,15 +1,23 @@
1
- import { syncCamera as m } from "./main6.mjs";
2
- import { useFunction as i } from "./main12.mjs";
3
- function g(r, a, n) {
4
- return i((p, t) => {
5
- const e = a.current;
6
- if (!e.state || !e.map)
1
+ import { syncCamera } from "./main6.mjs";
2
+ import { useFunction } from "./main12.mjs";
3
+ function useRender(origin, r3mRef, frameloop) {
4
+ const render = useFunction((_gl, mapCamMx) => {
5
+ const r3m = r3mRef.current;
6
+ if (!r3m.state || !r3m.map)
7
7
  return;
8
- const s = e.state.camera, c = e.state.gl, o = e.state.advance;
9
- e.mapCamMx = t, m(s, r, t), c.resetState(), o(Date.now() * 1e-3, !0), n === "always" && e.map.triggerRepaint();
8
+ const camera = r3m.state.camera;
9
+ const gl = r3m.state.gl;
10
+ const advance = r3m.state.advance;
11
+ r3m.mapCamMx = mapCamMx;
12
+ syncCamera(camera, origin, mapCamMx);
13
+ gl.resetState();
14
+ advance(Date.now() * 1e-3, true);
15
+ if (frameloop === "always")
16
+ r3m.map.triggerRepaint();
10
17
  });
18
+ return render;
11
19
  }
12
20
  export {
13
- g as useRender
21
+ useRender
14
22
  };
15
23
  //# sourceMappingURL=main9.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"main9.mjs","sources":["../../../src/core/use-render.ts"],"sourcesContent":["import { MutableRefObject } from \"react\";\nimport { Matrix4Tuple, PerspectiveCamera } from \"three\";\nimport { R3mStore } from \"./store\";\nimport { syncCamera } from \"./sync-camera\";\nimport { useFunction } from \"./use-function\";\n\nexport function useRender(\n origin: Matrix4Tuple, r3mRef: MutableRefObject<R3mStore>, frameloop: 'always' | 'demand'\n) {\n\n const render = useFunction((_gl: WebGL2RenderingContext, mapCamMx: number[]) => {\n const r3m = r3mRef.current;\n if (!r3m.state || !r3m.map) return;\n const camera = r3m.state.camera;\n const gl = r3m.state.gl;\n const advance = r3m.state.advance;\n r3m.mapCamMx = mapCamMx as Matrix4Tuple;\n syncCamera(camera as PerspectiveCamera, origin, mapCamMx as Matrix4Tuple);\n gl.resetState();\n advance(Date.now() * 0.001, true);\n if (frameloop === 'always') r3m.map.triggerRepaint();\n })\n\n return render;\n\n}"],"names":["useRender","origin","r3mRef","frameloop","useFunction","_gl","mapCamMx","r3m","camera","gl","advance","syncCamera"],"mappings":";;AAMgB,SAAAA,EACdC,GAAsBC,GAAoCC,GAC1D;AAeO,SAbQC,EAAY,CAACC,GAA6BC,MAAuB;AAC9E,UAAMC,IAAML,EAAO;AACnB,QAAI,CAACK,EAAI,SAAS,CAACA,EAAI;AAAK;AACtB,UAAAC,IAASD,EAAI,MAAM,QACnBE,IAAKF,EAAI,MAAM,IACfG,IAAUH,EAAI,MAAM;AAC1B,IAAAA,EAAI,WAAWD,GACJK,EAAAH,GAA6BP,GAAQK,CAAwB,GACxEG,EAAG,WAAW,GACdC,EAAQ,KAAK,IAAQ,IAAA,MAAO,EAAI,GAC5BP,MAAc,YAAUI,EAAI,IAAI;EAAe,CACpD;AAIH;"}
1
+ {"version":3,"file":"main9.mjs","sources":["../../../src/core/use-render.ts"],"sourcesContent":["import { MutableRefObject } from \"react\";\nimport { Matrix4Tuple, PerspectiveCamera } from \"three\";\nimport { R3mStore } from \"./store\";\nimport { syncCamera } from \"./sync-camera\";\nimport { useFunction } from \"./use-function\";\n\nexport function useRender(\n origin: Matrix4Tuple, r3mRef: MutableRefObject<R3mStore>, frameloop: 'always' | 'demand'\n) {\n\n const render = useFunction((_gl: WebGL2RenderingContext, mapCamMx: number[]) => {\n const r3m = r3mRef.current;\n if (!r3m.state || !r3m.map) return;\n const camera = r3m.state.camera;\n const gl = r3m.state.gl;\n const advance = r3m.state.advance;\n r3m.mapCamMx = mapCamMx as Matrix4Tuple;\n syncCamera(camera as PerspectiveCamera, origin, mapCamMx as Matrix4Tuple);\n gl.resetState();\n advance(Date.now() * 0.001, true);\n if (frameloop === 'always') r3m.map.triggerRepaint();\n })\n\n return render;\n\n}"],"names":[],"mappings":";;AAMgB,SAAA,UACd,QAAsB,QAAoC,WAC1D;AAEA,QAAM,SAAS,YAAY,CAAC,KAA6B,aAAuB;AAC9E,UAAM,MAAM,OAAO;AACnB,QAAI,CAAC,IAAI,SAAS,CAAC,IAAI;AAAK;AACtB,UAAA,SAAS,IAAI,MAAM;AACnB,UAAA,KAAK,IAAI,MAAM;AACf,UAAA,UAAU,IAAI,MAAM;AAC1B,QAAI,WAAW;AACJ,eAAA,QAA6B,QAAQ,QAAwB;AACxE,OAAG,WAAW;AACd,YAAQ,KAAK,IAAQ,IAAA,MAAO,IAAI;AAChC,QAAI,cAAc;AAAU,UAAI,IAAI;EAAe,CACpD;AAEM,SAAA;AAET;"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "react-three-map",
3
- "version": "0.4.0",
3
+ "version": "0.4.1",
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",