react-three-map 1.0.0-next.0 → 1.0.0-next.2

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 (84) hide show
  1. package/CHANGELOG.md +12 -0
  2. package/dist/cjs/main.js +41 -1263
  3. package/dist/es/main10.mjs +10 -71
  4. package/dist/es/main10.mjs.map +1 -1
  5. package/dist/es/main11.mjs +35 -12
  6. package/dist/es/main11.mjs.map +1 -1
  7. package/dist/es/main12.mjs +13 -12
  8. package/dist/es/main12.mjs.map +1 -1
  9. package/dist/es/main13.mjs +24 -42
  10. package/dist/es/main13.mjs.map +1 -1
  11. package/dist/es/main14.mjs +4 -13
  12. package/dist/es/main14.mjs.map +1 -1
  13. package/dist/es/main15.mjs +31 -22
  14. package/dist/es/main15.mjs.map +1 -1
  15. package/dist/es/main16.mjs +23 -87
  16. package/dist/es/main16.mjs.map +1 -1
  17. package/dist/es/main17.mjs +94 -14
  18. package/dist/es/main17.mjs.map +1 -1
  19. package/dist/es/main18.mjs +58 -22
  20. package/dist/es/main18.mjs.map +1 -1
  21. package/dist/es/main19.mjs +20 -27
  22. package/dist/es/main19.mjs.map +1 -1
  23. package/dist/es/main20.mjs +23 -8
  24. package/dist/es/main20.mjs.map +1 -1
  25. package/dist/es/main21.mjs +16 -34
  26. package/dist/es/main21.mjs.map +1 -1
  27. package/dist/es/main22.mjs +80 -12
  28. package/dist/es/main22.mjs.map +1 -1
  29. package/dist/es/main3.mjs +4 -13
  30. package/dist/es/main3.mjs.map +1 -1
  31. package/dist/es/main4.mjs +3 -3
  32. package/dist/es/main5.mjs +1 -1
  33. package/dist/es/main6.mjs +1 -1
  34. package/dist/es/main7.mjs +1 -1
  35. package/dist/es/main8.mjs +20 -87
  36. package/dist/es/main8.mjs.map +1 -1
  37. package/dist/es/main9.mjs +24 -80
  38. package/dist/es/main9.mjs.map +1 -1
  39. package/dist/maplibre/cjs/main.js +0 -4
  40. package/dist/maplibre/es/main18.mjs +0 -4
  41. package/dist/maplibre/es/main18.mjs.map +1 -1
  42. package/package.json +1 -1
  43. package/stories/package.json +1 -1
  44. package/stories/yarn.lock +19 -14
  45. package/dist/es/main23.mjs +0 -26
  46. package/dist/es/main23.mjs.map +0 -1
  47. package/dist/es/main24.mjs +0 -5
  48. package/dist/es/main24.mjs.map +0 -1
  49. package/dist/es/main25.mjs +0 -33
  50. package/dist/es/main25.mjs.map +0 -1
  51. package/dist/es/main26.mjs +0 -27
  52. package/dist/es/main26.mjs.map +0 -1
  53. package/dist/es/main27.mjs +0 -98
  54. package/dist/es/main27.mjs.map +0 -1
  55. package/dist/es/main28.mjs +0 -66
  56. package/dist/es/main28.mjs.map +0 -1
  57. package/dist/es/main29.mjs +0 -23
  58. package/dist/es/main29.mjs.map +0 -1
  59. package/dist/es/main30.mjs +0 -27
  60. package/dist/es/main30.mjs.map +0 -1
  61. package/dist/es/main31.mjs +0 -19
  62. package/dist/es/main31.mjs.map +0 -1
  63. package/dist/es/main32.mjs +0 -83
  64. package/dist/es/main32.mjs.map +0 -1
  65. package/dist/es/main33.mjs +0 -501
  66. package/dist/es/main33.mjs.map +0 -1
  67. package/dist/es/main34.mjs +0 -90
  68. package/dist/es/main34.mjs.map +0 -1
  69. package/dist/es/main35.mjs +0 -6
  70. package/dist/es/main35.mjs.map +0 -1
  71. package/dist/es/main36.mjs +0 -26
  72. package/dist/es/main36.mjs.map +0 -1
  73. package/dist/es/main37.mjs +0 -19
  74. package/dist/es/main37.mjs.map +0 -1
  75. package/dist/es/main38.mjs +0 -50
  76. package/dist/es/main38.mjs.map +0 -1
  77. package/dist/es/main39.mjs +0 -31
  78. package/dist/es/main39.mjs.map +0 -1
  79. package/dist/es/main40.mjs +0 -9
  80. package/dist/es/main40.mjs.map +0 -1
  81. package/dist/es/main41.mjs +0 -62
  82. package/dist/es/main41.mjs.map +0 -1
  83. package/dist/es/main42.mjs +0 -42
  84. package/dist/es/main42.mjs.map +0 -1
package/dist/es/main7.mjs CHANGED
@@ -1,5 +1,5 @@
1
1
  import { MathUtils } from "three";
2
- import { earthRadius } from "./main24.mjs";
2
+ import { earthRadius } from "./main14.mjs";
3
3
  function vector3ToCoords(position, origin) {
4
4
  const [x, y, z] = position;
5
5
  const latitude = origin.latitude + -z / earthRadius * MathUtils.RAD2DEG;
package/dist/es/main8.mjs CHANGED
@@ -1,93 +1,26 @@
1
- import * as React from "react";
2
- import { useContext, useState, useRef, useEffect, useImperativeHandle, useMemo } from "react";
3
- import { MountedMapsContext } from "./main17.mjs";
4
- import Mapbox from "./main33.mjs";
5
- import createRef from "./main34.mjs";
6
- import useIsomorphicLayoutEffect from "./main35.mjs";
7
- import setGlobals from "./main36.mjs";
8
- const MapContext = React.createContext(null);
9
- function _Map(props, ref) {
10
- const mountedMapsContext = useContext(MountedMapsContext);
11
- const [mapInstance, setMapInstance] = useState(null);
12
- const containerRef = useRef();
13
- const { current: contextValue } = useRef({ mapLib: null, map: null });
14
- useEffect(() => {
15
- const mapLib = props.mapLib;
16
- let isMounted = true;
17
- let mapbox;
18
- Promise.resolve(mapLib || import("mapbox-gl")).then((module) => {
19
- if (!isMounted) {
20
- return;
21
- }
22
- if (!module) {
23
- throw new Error("Invalid mapLib");
24
- }
25
- const mapboxgl = "Map" in module ? module : module.default;
26
- if (!mapboxgl.Map) {
27
- throw new Error("Invalid mapLib");
28
- }
29
- setGlobals(mapboxgl, props);
30
- if (!mapboxgl.supported || mapboxgl.supported(props)) {
31
- if (props.reuseMaps) {
32
- mapbox = Mapbox.reuse(props, containerRef.current);
33
- }
34
- if (!mapbox) {
35
- mapbox = new Mapbox(mapboxgl.Map, props, containerRef.current);
36
- }
37
- contextValue.map = createRef(mapbox);
38
- contextValue.mapLib = mapboxgl;
39
- setMapInstance(mapbox);
40
- mountedMapsContext == null ? void 0 : mountedMapsContext.onMapMount(contextValue.map, props.id);
41
- } else {
42
- throw new Error("Map is not supported by this browser");
43
- }
44
- }).catch((error) => {
45
- const { onError } = props;
46
- if (onError) {
47
- onError({
48
- type: "error",
49
- target: null,
50
- error
51
- });
52
- } else {
53
- console.error(error);
54
- }
55
- });
56
- return () => {
57
- isMounted = false;
58
- if (mapbox) {
59
- mountedMapsContext == null ? void 0 : mountedMapsContext.onMapUnmount(props.id);
60
- if (props.reuseMaps) {
61
- mapbox.recycle();
62
- } else {
63
- mapbox.destroy();
64
- }
65
- }
66
- };
67
- }, []);
68
- useIsomorphicLayoutEffect(() => {
69
- if (mapInstance) {
70
- mapInstance.setProps(props);
71
- }
1
+ import { useCoordsToMatrix } from "./main12.mjs";
2
+ import { useRender } from "./main16.mjs";
3
+ import { useRoot } from "./main17.mjs";
4
+ function useCanvasInLayer(props, fromLngLat, map) {
5
+ const { latitude, longitude, altitude, frameloop } = props;
6
+ const origin = useCoordsToMatrix({
7
+ latitude,
8
+ longitude,
9
+ altitude,
10
+ fromLngLat
72
11
  });
73
- useImperativeHandle(ref, () => contextValue.map, [mapInstance]);
74
- const style = useMemo(() => ({
75
- position: "relative",
76
- width: "100%",
77
- height: "100%",
78
- ...props.style
79
- }), [props.style]);
80
- const CHILD_CONTAINER_STYLE = {
81
- height: "100%"
12
+ const { onRemove, useThree, r3m } = useRoot(fromLngLat, map, props);
13
+ const render = useRender({ origin, frameloop, useThree, map, r3m });
14
+ return {
15
+ id: props.id,
16
+ beforeId: props.beforeId,
17
+ onRemove,
18
+ render,
19
+ type: "custom",
20
+ renderingMode: "3d"
82
21
  };
83
- return React.createElement("div", { id: props.id, ref: containerRef, style }, mapInstance && React.createElement(
84
- MapContext.Provider,
85
- { value: contextValue },
86
- React.createElement("div", { "mapboxgl-children": "", style: CHILD_CONTAINER_STYLE }, props.children)
87
- ));
88
22
  }
89
- React.forwardRef(_Map);
90
23
  export {
91
- MapContext
24
+ useCanvasInLayer
92
25
  };
93
26
  //# sourceMappingURL=main8.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"main8.mjs","sources":["../../node_modules/@vis.gl/react-mapbox/dist/components/map.js"],"sourcesContent":["import * as React from 'react';\nimport { useState, useRef, useEffect, useContext, useMemo, useImperativeHandle } from 'react';\nimport { MountedMapsContext } from \"./use-map.js\";\nimport Mapbox from \"../mapbox/mapbox.js\";\nimport createRef from \"../mapbox/create-ref.js\";\nimport useIsomorphicLayoutEffect from \"../utils/use-isomorphic-layout-effect.js\";\nimport setGlobals from \"../utils/set-globals.js\";\nexport const MapContext = React.createContext(null);\nfunction _Map(props, ref) {\n const mountedMapsContext = useContext(MountedMapsContext);\n const [mapInstance, setMapInstance] = useState(null);\n const containerRef = useRef();\n const { current: contextValue } = useRef({ mapLib: null, map: null });\n useEffect(() => {\n const mapLib = props.mapLib;\n let isMounted = true;\n let mapbox;\n Promise.resolve(mapLib || import('mapbox-gl'))\n .then((module) => {\n if (!isMounted) {\n return;\n }\n if (!module) {\n throw new Error('Invalid mapLib');\n }\n const mapboxgl = 'Map' in module ? module : module.default;\n if (!mapboxgl.Map) {\n throw new Error('Invalid mapLib');\n }\n // workerUrl & workerClass may change the result of supported()\n // https://github.com/visgl/react-map-gl/discussions/2027\n setGlobals(mapboxgl, props);\n if (!mapboxgl.supported || mapboxgl.supported(props)) {\n if (props.reuseMaps) {\n mapbox = Mapbox.reuse(props, containerRef.current);\n }\n if (!mapbox) {\n mapbox = new Mapbox(mapboxgl.Map, props, containerRef.current);\n }\n contextValue.map = createRef(mapbox);\n contextValue.mapLib = mapboxgl;\n setMapInstance(mapbox);\n mountedMapsContext?.onMapMount(contextValue.map, props.id);\n }\n else {\n throw new Error('Map is not supported by this browser');\n }\n })\n .catch(error => {\n const { onError } = props;\n if (onError) {\n onError({\n type: 'error',\n target: null,\n error\n });\n }\n else {\n console.error(error); // eslint-disable-line\n }\n });\n return () => {\n isMounted = false;\n if (mapbox) {\n mountedMapsContext?.onMapUnmount(props.id);\n if (props.reuseMaps) {\n mapbox.recycle();\n }\n else {\n mapbox.destroy();\n }\n }\n };\n }, []);\n useIsomorphicLayoutEffect(() => {\n if (mapInstance) {\n mapInstance.setProps(props);\n }\n });\n useImperativeHandle(ref, () => contextValue.map, [mapInstance]);\n const style = useMemo(() => ({\n position: 'relative',\n width: '100%',\n height: '100%',\n ...props.style\n }), [props.style]);\n const CHILD_CONTAINER_STYLE = {\n height: '100%'\n };\n return (React.createElement(\"div\", { id: props.id, ref: containerRef, style: style }, mapInstance && (React.createElement(MapContext.Provider, { value: contextValue },\n React.createElement(\"div\", { \"mapboxgl-children\": \"\", style: CHILD_CONTAINER_STYLE }, props.children)))));\n}\nexport const Map = React.forwardRef(_Map);\n//# sourceMappingURL=map.js.map"],"names":[],"mappings":";;;;;;;AAOY,MAAC,aAAa,MAAM,cAAc,IAAI;AAClD,SAAS,KAAK,OAAO,KAAK;AACtB,QAAM,qBAAqB,WAAW,kBAAkB;AACxD,QAAM,CAAC,aAAa,cAAc,IAAI,SAAS,IAAI;AACnD,QAAM,eAAe;AACrB,QAAM,EAAE,SAAS,aAAY,IAAK,OAAO,EAAE,QAAQ,MAAM,KAAK,KAAI,CAAE;AACpE,YAAU,MAAM;AACZ,UAAM,SAAS,MAAM;AACrB,QAAI,YAAY;AAChB,QAAI;AACJ,YAAQ,QAAQ,UAAU,OAAO,WAAW,CAAC,EACxC,KAAK,CAAC,WAAW;AAClB,UAAI,CAAC,WAAW;AACZ;AAAA,MACH;AACD,UAAI,CAAC,QAAQ;AACT,cAAM,IAAI,MAAM,gBAAgB;AAAA,MACnC;AACD,YAAM,WAAW,SAAS,SAAS,SAAS,OAAO;AACnD,UAAI,CAAC,SAAS,KAAK;AACf,cAAM,IAAI,MAAM,gBAAgB;AAAA,MACnC;AAGD,iBAAW,UAAU,KAAK;AAC1B,UAAI,CAAC,SAAS,aAAa,SAAS,UAAU,KAAK,GAAG;AAClD,YAAI,MAAM,WAAW;AACjB,mBAAS,OAAO,MAAM,OAAO,aAAa,OAAO;AAAA,QACpD;AACD,YAAI,CAAC,QAAQ;AACT,mBAAS,IAAI,OAAO,SAAS,KAAK,OAAO,aAAa,OAAO;AAAA,QAChE;AACD,qBAAa,MAAM,UAAU,MAAM;AACnC,qBAAa,SAAS;AACtB,uBAAe,MAAM;AACrB,iEAAoB,WAAW,aAAa,KAAK,MAAM;AAAA,MAC1D,OACI;AACD,cAAM,IAAI,MAAM,sCAAsC;AAAA,MACzD;AAAA,IACb,CAAS,EACI,MAAM,WAAS;AAChB,YAAM,EAAE,QAAS,IAAG;AACpB,UAAI,SAAS;AACT,gBAAQ;AAAA,UACJ,MAAM;AAAA,UACN,QAAQ;AAAA,UACR;AAAA,QACpB,CAAiB;AAAA,MACJ,OACI;AACD,gBAAQ,MAAM,KAAK;AAAA,MACtB;AAAA,IACb,CAAS;AACD,WAAO,MAAM;AACT,kBAAY;AACZ,UAAI,QAAQ;AACR,iEAAoB,aAAa,MAAM;AACvC,YAAI,MAAM,WAAW;AACjB,iBAAO,QAAO;AAAA,QACjB,OACI;AACD,iBAAO,QAAO;AAAA,QACjB;AAAA,MACJ;AAAA,IACb;AAAA,EACK,GAAE,CAAE,CAAA;AACL,4BAA0B,MAAM;AAC5B,QAAI,aAAa;AACb,kBAAY,SAAS,KAAK;AAAA,IAC7B;AAAA,EACT,CAAK;AACD,sBAAoB,KAAK,MAAM,aAAa,KAAK,CAAC,WAAW,CAAC;AAC9D,QAAM,QAAQ,QAAQ,OAAO;AAAA,IACzB,UAAU;AAAA,IACV,OAAO;AAAA,IACP,QAAQ;AAAA,IACR,GAAG,MAAM;AAAA,EACZ,IAAG,CAAC,MAAM,KAAK,CAAC;AACjB,QAAM,wBAAwB;AAAA,IAC1B,QAAQ;AAAA,EAChB;AACI,SAAQ,MAAM,cAAc,OAAO,EAAE,IAAI,MAAM,IAAI,KAAK,cAAc,MAAc,GAAE,eAAgB,MAAM;AAAA,IAAc,WAAW;AAAA,IAAU,EAAE,OAAO,aAAc;AAAA,IAClK,MAAM,cAAc,OAAO,EAAE,qBAAqB,IAAI,OAAO,sBAAuB,GAAE,MAAM,QAAQ;AAAA,EAAC,CAAE;AAC/G;AACmB,MAAM,WAAW,IAAI;","x_google_ignoreList":[0]}
1
+ {"version":3,"file":"main8.mjs","sources":["../../src/core/canvas-in-layer/use-canvas-in-layer.tsx"],"sourcesContent":["import { CanvasProps } from \"../../api/canvas-props\";\nimport { FromLngLat, MapInstance } from \"../generic-map\";\nimport { useCoordsToMatrix } from \"../use-coords-to-matrix\";\nimport { useRender } from \"./use-render\";\nimport { useRoot } from \"./use-root\";\n\n/** get all the properties that you need to render as a map `<Layer>` */\nexport function useCanvasInLayer(props: CanvasProps,fromLngLat: FromLngLat, map: MapInstance) {\n\n const {latitude, longitude, altitude, frameloop } = props;\n\n const origin = useCoordsToMatrix({\n latitude, longitude, altitude, fromLngLat,\n });\n\n const { onRemove, useThree, r3m } = useRoot(fromLngLat, map, props);\n \n const render = useRender({origin, frameloop, useThree, map, r3m});\n \n return {\n id: props.id,\n beforeId: props.beforeId,\n onRemove,\n render,\n type: 'custom',\n renderingMode: '3d'\n } as const\n\n}"],"names":[],"mappings":";;;AAOgB,SAAA,iBAAiB,OAAmB,YAAwB,KAAkB;AAE5F,QAAM,EAAC,UAAU,WAAW,UAAU,cAAc;AAElD,QAAM,SAAS,kBAAkB;AAAA,IAC/B;AAAA,IAAU;AAAA,IAAW;AAAA,IAAU;AAAA,EAAA,CAChC;AAEK,QAAA,EAAE,UAAU,UAAU,IAAA,IAAQ,QAAQ,YAAY,KAAK,KAAK;AAE5D,QAAA,SAAS,UAAU,EAAC,QAAQ,WAAW,UAAU,KAAK,KAAI;AAEzD,SAAA;AAAA,IACL,IAAI,MAAM;AAAA,IACV,UAAU,MAAM;AAAA,IAChB;AAAA,IACA;AAAA,IACA,MAAM;AAAA,IACN,eAAe;AAAA,EAAA;AAGrB;"}
package/dist/es/main9.mjs CHANGED
@@ -1,86 +1,30 @@
1
- import * as React from "react";
2
- import { memo, forwardRef, useContext, useRef, useMemo, useEffect, useImperativeHandle } from "react";
1
+ import { jsx, Fragment } from "react/jsx-runtime";
2
+ import { memo, useState, useEffect } from "react";
3
3
  import { createPortal } from "react-dom";
4
- import { applyReactStyle } from "./main37.mjs";
5
- import { MapContext } from "./main8.mjs";
6
- import { arePointsEqual } from "./main38.mjs";
7
- memo(forwardRef((props, ref) => {
8
- const { map, mapLib } = useContext(MapContext);
9
- const thisRef = useRef({ props });
10
- thisRef.current.props = props;
11
- const marker = useMemo(() => {
12
- let hasChildren = false;
13
- React.Children.forEach(props.children, (el) => {
14
- if (el) {
15
- hasChildren = true;
16
- }
17
- });
18
- const options = {
19
- ...props,
20
- element: hasChildren ? document.createElement("div") : null
21
- };
22
- const mk = new mapLib.Marker(options);
23
- mk.setLngLat([props.longitude, props.latitude]);
24
- mk.getElement().addEventListener("click", (e) => {
25
- var _a, _b;
26
- (_b = (_a = thisRef.current.props).onClick) == null ? void 0 : _b.call(_a, {
27
- type: "click",
28
- target: mk,
29
- originalEvent: e
30
- });
31
- });
32
- mk.on("dragstart", (e) => {
33
- var _a, _b;
34
- const evt = e;
35
- evt.lngLat = marker.getLngLat();
36
- (_b = (_a = thisRef.current.props).onDragStart) == null ? void 0 : _b.call(_a, evt);
37
- });
38
- mk.on("drag", (e) => {
39
- var _a, _b;
40
- const evt = e;
41
- evt.lngLat = marker.getLngLat();
42
- (_b = (_a = thisRef.current.props).onDrag) == null ? void 0 : _b.call(_a, evt);
43
- });
44
- mk.on("dragend", (e) => {
45
- var _a, _b;
46
- const evt = e;
47
- evt.lngLat = marker.getLngLat();
48
- (_b = (_a = thisRef.current.props).onDragEnd) == null ? void 0 : _b.call(_a, evt);
49
- });
50
- return mk;
51
- }, []);
4
+ import { CanvasPortal } from "./main18.mjs";
5
+ const InitCanvasFC = memo((props) => {
6
+ const canvas = props.map.getCanvas();
7
+ const [el] = useState(() => {
8
+ const el2 = document.createElement("div");
9
+ el2.style.position = "absolute";
10
+ el2.style.top = "0";
11
+ el2.style.bottom = "0";
12
+ el2.style.left = "0";
13
+ el2.style.right = "0";
14
+ el2.style.pointerEvents = "none";
15
+ return el2;
16
+ });
52
17
  useEffect(() => {
53
- marker.addTo(map.getMap());
18
+ const parent = canvas.parentElement;
19
+ parent.appendChild(el);
54
20
  return () => {
55
- marker.remove();
21
+ parent.removeChild(el);
56
22
  };
57
23
  }, []);
58
- const { longitude, latitude, offset, style, draggable = false, popup = null, rotation = 0, rotationAlignment = "auto", pitchAlignment = "auto" } = props;
59
- useEffect(() => {
60
- applyReactStyle(marker.getElement(), style);
61
- }, [style]);
62
- useImperativeHandle(ref, () => marker, []);
63
- if (marker.getLngLat().lng !== longitude || marker.getLngLat().lat !== latitude) {
64
- marker.setLngLat([longitude, latitude]);
65
- }
66
- if (offset && !arePointsEqual(marker.getOffset(), offset)) {
67
- marker.setOffset(offset);
68
- }
69
- if (marker.isDraggable() !== draggable) {
70
- marker.setDraggable(draggable);
71
- }
72
- if (marker.getRotation() !== rotation) {
73
- marker.setRotation(rotation);
74
- }
75
- if (marker.getRotationAlignment() !== rotationAlignment) {
76
- marker.setRotationAlignment(rotationAlignment);
77
- }
78
- if (marker.getPitchAlignment() !== pitchAlignment) {
79
- marker.setPitchAlignment(pitchAlignment);
80
- }
81
- if (marker.getPopup() !== popup) {
82
- marker.setPopup(popup);
83
- }
84
- return createPortal(props.children, marker.getElement());
85
- }));
24
+ return /* @__PURE__ */ jsx(Fragment, { children: createPortal(/* @__PURE__ */ jsx(CanvasPortal, { ...props }), el) });
25
+ });
26
+ InitCanvasFC.displayName = "InitCanvasFC";
27
+ export {
28
+ InitCanvasFC
29
+ };
86
30
  //# sourceMappingURL=main9.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"main9.mjs","sources":["../../node_modules/@vis.gl/react-mapbox/dist/components/marker.js"],"sourcesContent":["/* global document */\nimport * as React from 'react';\nimport { createPortal } from 'react-dom';\nimport { useImperativeHandle, useEffect, useMemo, useRef, useContext, forwardRef, memo } from 'react';\nimport { applyReactStyle } from \"../utils/apply-react-style.js\";\nimport { MapContext } from \"./map.js\";\nimport { arePointsEqual } from \"../utils/deep-equal.js\";\n/* eslint-disable complexity,max-statements */\nexport const Marker = memo(forwardRef((props, ref) => {\n const { map, mapLib } = useContext(MapContext);\n const thisRef = useRef({ props });\n thisRef.current.props = props;\n const marker = useMemo(() => {\n let hasChildren = false;\n React.Children.forEach(props.children, el => {\n if (el) {\n hasChildren = true;\n }\n });\n const options = {\n ...props,\n element: hasChildren ? document.createElement('div') : null\n };\n const mk = new mapLib.Marker(options);\n mk.setLngLat([props.longitude, props.latitude]);\n mk.getElement().addEventListener('click', (e) => {\n thisRef.current.props.onClick?.({\n type: 'click',\n target: mk,\n originalEvent: e\n });\n });\n mk.on('dragstart', e => {\n const evt = e;\n evt.lngLat = marker.getLngLat();\n thisRef.current.props.onDragStart?.(evt);\n });\n mk.on('drag', e => {\n const evt = e;\n evt.lngLat = marker.getLngLat();\n thisRef.current.props.onDrag?.(evt);\n });\n mk.on('dragend', e => {\n const evt = e;\n evt.lngLat = marker.getLngLat();\n thisRef.current.props.onDragEnd?.(evt);\n });\n return mk;\n }, []);\n useEffect(() => {\n marker.addTo(map.getMap());\n return () => {\n marker.remove();\n };\n }, []);\n const { longitude, latitude, offset, style, draggable = false, popup = null, rotation = 0, rotationAlignment = 'auto', pitchAlignment = 'auto' } = props;\n useEffect(() => {\n applyReactStyle(marker.getElement(), style);\n }, [style]);\n useImperativeHandle(ref, () => marker, []);\n if (marker.getLngLat().lng !== longitude || marker.getLngLat().lat !== latitude) {\n marker.setLngLat([longitude, latitude]);\n }\n if (offset && !arePointsEqual(marker.getOffset(), offset)) {\n marker.setOffset(offset);\n }\n if (marker.isDraggable() !== draggable) {\n marker.setDraggable(draggable);\n }\n if (marker.getRotation() !== rotation) {\n marker.setRotation(rotation);\n }\n if (marker.getRotationAlignment() !== rotationAlignment) {\n marker.setRotationAlignment(rotationAlignment);\n }\n if (marker.getPitchAlignment() !== pitchAlignment) {\n marker.setPitchAlignment(pitchAlignment);\n }\n if (marker.getPopup() !== popup) {\n marker.setPopup(popup);\n }\n return createPortal(props.children, marker.getElement());\n}));\n//# sourceMappingURL=marker.js.map"],"names":[],"mappings":";;;;;;AAQsB,KAAK,WAAW,CAAC,OAAO,QAAQ;AAClD,QAAM,EAAE,KAAK,OAAQ,IAAG,WAAW,UAAU;AAC7C,QAAM,UAAU,OAAO,EAAE,MAAO,CAAA;AAChC,UAAQ,QAAQ,QAAQ;AACxB,QAAM,SAAS,QAAQ,MAAM;AACzB,QAAI,cAAc;AAClB,UAAM,SAAS,QAAQ,MAAM,UAAU,QAAM;AACzC,UAAI,IAAI;AACJ,sBAAc;AAAA,MACjB;AAAA,IACb,CAAS;AACD,UAAM,UAAU;AAAA,MACZ,GAAG;AAAA,MACH,SAAS,cAAc,SAAS,cAAc,KAAK,IAAI;AAAA,IACnE;AACQ,UAAM,KAAK,IAAI,OAAO,OAAO,OAAO;AACpC,OAAG,UAAU,CAAC,MAAM,WAAW,MAAM,QAAQ,CAAC;AAC9C,OAAG,WAAY,EAAC,iBAAiB,SAAS,CAAC,MAAM;;AAC7C,0BAAQ,QAAQ,OAAM,YAAtB,4BAAgC;AAAA,QAC5B,MAAM;AAAA,QACN,QAAQ;AAAA,QACR,eAAe;AAAA,MAC/B;AAAA,IACA,CAAS;AACD,OAAG,GAAG,aAAa,OAAK;;AACpB,YAAM,MAAM;AACZ,UAAI,SAAS,OAAO;AACpB,0BAAQ,QAAQ,OAAM,gBAAtB,4BAAoC;AAAA,IAChD,CAAS;AACD,OAAG,GAAG,QAAQ,OAAK;;AACf,YAAM,MAAM;AACZ,UAAI,SAAS,OAAO;AACpB,0BAAQ,QAAQ,OAAM,WAAtB,4BAA+B;AAAA,IAC3C,CAAS;AACD,OAAG,GAAG,WAAW,OAAK;;AAClB,YAAM,MAAM;AACZ,UAAI,SAAS,OAAO;AACpB,0BAAQ,QAAQ,OAAM,cAAtB,4BAAkC;AAAA,IAC9C,CAAS;AACD,WAAO;AAAA,EACV,GAAE,CAAE,CAAA;AACL,YAAU,MAAM;AACZ,WAAO,MAAM,IAAI,OAAQ,CAAA;AACzB,WAAO,MAAM;AACT,aAAO,OAAM;AAAA,IACzB;AAAA,EACK,GAAE,CAAE,CAAA;AACL,QAAM,EAAE,WAAW,UAAU,QAAQ,OAAO,YAAY,OAAO,QAAQ,MAAM,WAAW,GAAG,oBAAoB,QAAQ,iBAAiB,OAAQ,IAAG;AACnJ,YAAU,MAAM;AACZ,oBAAgB,OAAO,WAAY,GAAE,KAAK;AAAA,EAClD,GAAO,CAAC,KAAK,CAAC;AACV,sBAAoB,KAAK,MAAM,QAAQ,CAAE,CAAA;AACzC,MAAI,OAAO,UAAW,EAAC,QAAQ,aAAa,OAAO,UAAS,EAAG,QAAQ,UAAU;AAC7E,WAAO,UAAU,CAAC,WAAW,QAAQ,CAAC;AAAA,EACzC;AACD,MAAI,UAAU,CAAC,eAAe,OAAO,UAAS,GAAI,MAAM,GAAG;AACvD,WAAO,UAAU,MAAM;AAAA,EAC1B;AACD,MAAI,OAAO,YAAa,MAAK,WAAW;AACpC,WAAO,aAAa,SAAS;AAAA,EAChC;AACD,MAAI,OAAO,YAAa,MAAK,UAAU;AACnC,WAAO,YAAY,QAAQ;AAAA,EAC9B;AACD,MAAI,OAAO,qBAAsB,MAAK,mBAAmB;AACrD,WAAO,qBAAqB,iBAAiB;AAAA,EAChD;AACD,MAAI,OAAO,kBAAmB,MAAK,gBAAgB;AAC/C,WAAO,kBAAkB,cAAc;AAAA,EAC1C;AACD,MAAI,OAAO,SAAU,MAAK,OAAO;AAC7B,WAAO,SAAS,KAAK;AAAA,EACxB;AACD,SAAO,aAAa,MAAM,UAAU,OAAO,WAAY,CAAA;AAC3D,CAAC,CAAC;","x_google_ignoreList":[0]}
1
+ {"version":3,"file":"main9.mjs","sources":["../../src/core/canvas-overlay/init-canvas-fc.tsx"],"sourcesContent":["import { memo, useEffect, useState } from \"react\";\nimport { createPortal } from 'react-dom';\nimport { Matrix4Tuple } from \"three\";\nimport { CanvasProps } from \"../../api/canvas-props\";\nimport { FromLngLat, MapInstance } from \"../generic-map\";\nimport { CanvasPortal } from \"./canvas-portal\";\n\ninterface InitCanvasFCProps extends CanvasProps {\n map: MapInstance,\n setOnRender: (callback: () => (mx: Matrix4Tuple) => void) => void,\n frameloop?: 'always' | 'demand',\n fromLngLat: FromLngLat,\n}\nexport const InitCanvasFC = memo<InitCanvasFCProps>((props) => {\n const canvas = props.map.getCanvas() // eslint-disable-line @typescript-eslint/no-non-null-assertion\n\n const [el] = useState(() => {\n const el = document.createElement('div');\n el.style.position = 'absolute';\n el.style.top = '0';\n el.style.bottom = '0';\n el.style.left = '0';\n el.style.right = '0';\n el.style.pointerEvents = 'none';\n return el\n })\n\n useEffect(() => {\n const parent = canvas.parentElement!; // eslint-disable-line @typescript-eslint/no-non-null-assertion\n parent.appendChild(el);\n return () => {\n parent.removeChild(el);\n }\n }, []) // eslint-disable-line react-hooks/exhaustive-deps\n return <>\n {createPortal((\n <CanvasPortal {...props} />\n ), el)}\n </>\n})\nInitCanvasFC.displayName = 'InitCanvasFC';\n"],"names":["el"],"mappings":";;;;AAaa,MAAA,eAAe,KAAwB,CAAC,UAAU;AACvD,QAAA,SAAS,MAAM,IAAI,UAAU;AAEnC,QAAM,CAAC,EAAE,IAAI,SAAS,MAAM;AACpBA,UAAAA,MAAK,SAAS,cAAc,KAAK;AACvCA,QAAG,MAAM,WAAW;AACpBA,QAAG,MAAM,MAAM;AACfA,QAAG,MAAM,SAAS;AAClBA,QAAG,MAAM,OAAO;AAChBA,QAAG,MAAM,QAAQ;AACjBA,QAAG,MAAM,gBAAgB;AAClBA,WAAAA;AAAAA,EAAA,CACR;AAED,YAAU,MAAM;AACd,UAAM,SAAS,OAAO;AACtB,WAAO,YAAY,EAAE;AACrB,WAAO,MAAM;AACX,aAAO,YAAY,EAAE;AAAA,IAAA;AAAA,EAEzB,GAAG,CAAE,CAAA;AACE,SAAA,oBAAA,UAAA,EACJ,uBACE,oBAAA,cAAA,EAAc,GAAG,MAAO,CAAA,GACxB,EAAE,EACP,CAAA;AACF,CAAC;AACD,aAAa,cAAc;"}
@@ -479,10 +479,6 @@ const CanvasPortal = react.memo(({
479
479
  return /* @__PURE__ */ jsxRuntime.jsxs(
480
480
  fiber.Canvas,
481
481
  {
482
- camera: {
483
- matrixAutoUpdate: false,
484
- matrixWorldAutoUpdate: false
485
- },
486
482
  events,
487
483
  eventSource,
488
484
  ...props,
@@ -24,10 +24,6 @@ const CanvasPortal = memo(({
24
24
  return /* @__PURE__ */ jsxs(
25
25
  Canvas,
26
26
  {
27
- camera: {
28
- matrixAutoUpdate: false,
29
- matrixWorldAutoUpdate: false
30
- },
31
27
  events,
32
28
  eventSource,
33
29
  ...props,
@@ -1 +1 @@
1
- {"version":3,"file":"main18.mjs","sources":["../../../src/core/canvas-overlay/canvas-portal.tsx"],"sourcesContent":["import { Canvas } from \"@react-three/fiber\";\nimport { memo, useState } from \"react\";\nimport { Matrix4Tuple } from \"three\";\nimport { CanvasProps } from \"../../api/canvas-props\";\nimport { events } from \"../events\";\nimport { FromLngLat, MapInstance } from \"../generic-map\";\nimport { useFunction } from \"../use-function\";\nimport { InitR3M } from \"./init-r3m\";\nimport { SyncCameraFC } from \"./sync-camera-fc\";\n\ninterface CanvasPortalProps extends CanvasProps {\n setOnRender: (callback: () => (mx: Matrix4Tuple) => void) => void,\n map: MapInstance,\n fromLngLat: FromLngLat,\n}\n\nexport const CanvasPortal = memo<CanvasPortalProps>(({\n children, latitude, longitude, altitude,\n setOnRender, map, fromLngLat, ...props\n}) => {\n\n const mapCanvas = map.getCanvas();\n const eventSource = mapCanvas.parentElement!; // eslint-disable-line @typescript-eslint/no-non-null-assertion\n\n const [ready, setReady] = useState(false);\n\n const onReady = useFunction(() => {\n setReady(true);\n })\n\n return <Canvas\n camera={{\n matrixAutoUpdate: false,\n matrixWorldAutoUpdate: false,\n }}\n events={events}\n eventSource={eventSource}\n {...props}\n gl={{ autoClear: false, ...props.gl }}\n >\n <InitR3M\n map={map}\n fromLngLat={fromLngLat}\n latitude={latitude}\n longitude={longitude}\n altitude={altitude}\n />\n <SyncCameraFC\n latitude={latitude}\n longitude={longitude}\n altitude={altitude}\n setOnRender={setOnRender}\n onReady={onReady}\n map={map}\n />\n {ready && children}\n </Canvas>\n})\nCanvasPortal.displayName = 'CanvasPortal';\n"],"names":[],"mappings":";;;;;;;AAgBa,MAAA,eAAe,KAAwB,CAAC;AAAA,EACnD;AAAA,EAAU;AAAA,EAAU;AAAA,EAAW;AAAA,EAC/B;AAAA,EAAa;AAAA,EAAK;AAAA,EAAY,GAAG;AACnC,MAAM;AAEE,QAAA,YAAY,IAAI;AACtB,QAAM,cAAc,UAAU;AAE9B,QAAM,CAAC,OAAO,QAAQ,IAAI,SAAS,KAAK;AAElC,QAAA,UAAU,YAAY,MAAM;AAChC,aAAS,IAAI;AAAA,EAAA,CACd;AAEM,SAAA;AAAA,IAAC;AAAA,IAAA;AAAA,MACN,QAAQ;AAAA,QACN,kBAAkB;AAAA,QAClB,uBAAuB;AAAA,MACzB;AAAA,MACA;AAAA,MACA;AAAA,MACC,GAAG;AAAA,MACJ,IAAI,EAAE,WAAW,OAAO,GAAG,MAAM,GAAG;AAAA,MAEpC,UAAA;AAAA,QAAA;AAAA,UAAC;AAAA,UAAA;AAAA,YACC;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,UAAA;AAAA,QACF;AAAA,QACA;AAAA,UAAC;AAAA,UAAA;AAAA,YACC;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,UAAA;AAAA,QACF;AAAA,QACC,SAAS;AAAA,MAAA;AAAA,IAAA;AAAA,EAAA;AAEd,CAAC;AACD,aAAa,cAAc;"}
1
+ {"version":3,"file":"main18.mjs","sources":["../../../src/core/canvas-overlay/canvas-portal.tsx"],"sourcesContent":["import { Canvas } from \"@react-three/fiber\";\nimport { memo, useState } from \"react\";\nimport { Matrix4Tuple } from \"three\";\nimport { CanvasProps } from \"../../api/canvas-props\";\nimport { events } from \"../events\";\nimport { FromLngLat, MapInstance } from \"../generic-map\";\nimport { useFunction } from \"../use-function\";\nimport { InitR3M } from \"./init-r3m\";\nimport { SyncCameraFC } from \"./sync-camera-fc\";\n\ninterface CanvasPortalProps extends CanvasProps {\n setOnRender: (callback: () => (mx: Matrix4Tuple) => void) => void,\n map: MapInstance,\n fromLngLat: FromLngLat,\n}\n\nexport const CanvasPortal = memo<CanvasPortalProps>(({\n children, latitude, longitude, altitude,\n setOnRender, map, fromLngLat, ...props\n}) => {\n\n const mapCanvas = map.getCanvas();\n const eventSource = mapCanvas.parentElement!; // eslint-disable-line @typescript-eslint/no-non-null-assertion\n\n const [ready, setReady] = useState(false);\n\n const onReady = useFunction(() => {\n setReady(true);\n })\n\n return <Canvas\n events={events}\n eventSource={eventSource}\n {...props}\n gl={{ autoClear: false, ...props.gl }}\n >\n <InitR3M\n map={map}\n fromLngLat={fromLngLat}\n latitude={latitude}\n longitude={longitude}\n altitude={altitude}\n />\n <SyncCameraFC\n latitude={latitude}\n longitude={longitude}\n altitude={altitude}\n setOnRender={setOnRender}\n onReady={onReady}\n map={map}\n />\n {ready && children}\n </Canvas>\n})\nCanvasPortal.displayName = 'CanvasPortal';\n"],"names":[],"mappings":";;;;;;;AAgBa,MAAA,eAAe,KAAwB,CAAC;AAAA,EACnD;AAAA,EAAU;AAAA,EAAU;AAAA,EAAW;AAAA,EAC/B;AAAA,EAAa;AAAA,EAAK;AAAA,EAAY,GAAG;AACnC,MAAM;AAEE,QAAA,YAAY,IAAI;AACtB,QAAM,cAAc,UAAU;AAE9B,QAAM,CAAC,OAAO,QAAQ,IAAI,SAAS,KAAK;AAElC,QAAA,UAAU,YAAY,MAAM;AAChC,aAAS,IAAI;AAAA,EAAA,CACd;AAEM,SAAA;AAAA,IAAC;AAAA,IAAA;AAAA,MACN;AAAA,MACA;AAAA,MACC,GAAG;AAAA,MACJ,IAAI,EAAE,WAAW,OAAO,GAAG,MAAM,GAAG;AAAA,MAEpC,UAAA;AAAA,QAAA;AAAA,UAAC;AAAA,UAAA;AAAA,YACC;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,UAAA;AAAA,QACF;AAAA,QACA;AAAA,UAAC;AAAA,UAAA;AAAA,YACC;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,UAAA;AAAA,QACF;AAAA,QACC,SAAS;AAAA,MAAA;AAAA,IAAA;AAAA,EAAA;AAEd,CAAC;AACD,aAAa,cAAc;"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "react-three-map",
3
- "version": "1.0.0-next.0",
3
+ "version": "1.0.0-next.2",
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",
@@ -16,7 +16,7 @@
16
16
  "leva": "^0.9.35",
17
17
  "luxon": "^3.4.4",
18
18
  "mapbox-gl": "^3.9.4",
19
- "maplibre-gl": "^5.1.0",
19
+ "maplibre-gl": "^4.7.1",
20
20
  "react": "^18.2.0",
21
21
  "react-dom": "^18.2.0",
22
22
  "react-map-gl": "^8.0.1",
package/stories/yarn.lock CHANGED
@@ -821,16 +821,16 @@
821
821
  rw "^1.3.3"
822
822
  sort-object "^3.0.3"
823
823
 
824
- "@maplibre/maplibre-gl-style-spec@^23.1.0":
825
- version "23.1.0"
826
- resolved "https://registry.yarnpkg.com/@maplibre/maplibre-gl-style-spec/-/maplibre-gl-style-spec-23.1.0.tgz#ad59731b0547ee0986ba4ccff699894dd60f0650"
827
- integrity sha512-R6/ihEuC5KRexmKIYkWqUv84Gm+/QwsOUgHyt1yy2XqCdGdLvlBWVWIIeTZWN4NGdwmY6xDzdSGU2R9oBLNg2w==
824
+ "@maplibre/maplibre-gl-style-spec@^20.3.1":
825
+ version "20.4.0"
826
+ resolved "https://registry.yarnpkg.com/@maplibre/maplibre-gl-style-spec/-/maplibre-gl-style-spec-20.4.0.tgz#408339e051fb51e022b40af2235e0beb037937ea"
827
+ integrity sha512-AzBy3095fTFPjDjmWpR2w6HVRAZJ6hQZUCwk5Plz6EyfnfuQW1odeW5i2Ai47Y6TBA2hQnC+azscjBSALpaWgw==
828
828
  dependencies:
829
829
  "@mapbox/jsonlint-lines-primitives" "~2.0.2"
830
830
  "@mapbox/unitbezier" "^0.0.1"
831
831
  json-stringify-pretty-compact "^4.0.0"
832
832
  minimist "^1.2.8"
833
- quickselect "^3.0.0"
833
+ quickselect "^2.0.0"
834
834
  rw "^1.3.3"
835
835
  tinyqueue "^3.0.0"
836
836
 
@@ -1452,7 +1452,7 @@
1452
1452
  resolved "https://registry.yarnpkg.com/@types/geojson/-/geojson-7946.0.10.tgz#6dfbf5ea17142f7f9a043809f1cd4c448cb68249"
1453
1453
  integrity sha512-Nmh0K3iWQJzniTuPRcJn5hxXkfB1T1pgB89SBig5PlJQU5yocazeu4jATJlaA0GYFKWMqDdvYemoSnF2pXgLVA==
1454
1454
 
1455
- "@types/geojson@^7946.0.15", "@types/geojson@^7946.0.16":
1455
+ "@types/geojson@^7946.0.14", "@types/geojson@^7946.0.15":
1456
1456
  version "7946.0.16"
1457
1457
  resolved "https://registry.yarnpkg.com/@types/geojson/-/geojson-7946.0.16.tgz#8ebe53d69efada7044454e3305c19017d97ced2a"
1458
1458
  integrity sha512-6C8nqWur3j98U6+lXDfTUWIfgvZU+EumvpHKcYjujKH7woYyLj2sUmff0tRhrqM7BohUw7Pz3ZB1jj2gW9Fvmg==
@@ -2252,7 +2252,7 @@ draco3d@^1.4.1:
2252
2252
  resolved "https://registry.yarnpkg.com/draco3d/-/draco3d-1.5.6.tgz#0d570a9792e3a3a9fafbfea065b692940441c626"
2253
2253
  integrity sha512-+3NaRjWktb5r61ZFoDejlykPEFKT5N/LkbXsaddlw6xNSXBanUYpFc2AXXpbJDilPHazcSreU/DpQIaxfX0NfQ==
2254
2254
 
2255
- earcut@^3.0.0, earcut@^3.0.1:
2255
+ earcut@^3.0.0:
2256
2256
  version "3.0.1"
2257
2257
  resolved "https://registry.yarnpkg.com/earcut/-/earcut-3.0.1.tgz#f60b3f671c5657cca9d3e131c5527c5dde00ef38"
2258
2258
  integrity sha512-0l1/0gOjESMeQyYaK5IDiPNvFeu93Z/cO0TjZh9eZ1vyCtZnA7KMZ8rQggpsJHIbGSdrqYq9OhuveadOVHCshw==
@@ -3218,10 +3218,10 @@ mapbox-gl@^3.9.4:
3218
3218
  tinyqueue "^3.0.0"
3219
3219
  vt-pbf "^3.1.3"
3220
3220
 
3221
- maplibre-gl@^5.1.0:
3222
- version "5.1.0"
3223
- resolved "https://registry.yarnpkg.com/maplibre-gl/-/maplibre-gl-5.1.0.tgz#201459a840519033147ff054cdb1ab5539a34d2d"
3224
- integrity sha512-6lbf7qAnqAVm1T/vJBMmRtP+g8G/O/Z52IBtWX31SbFj7sEdlrk4YugxJen8IdV/pFjLFnDOw7HiHZl5nYdVjg==
3221
+ maplibre-gl@^4.7.1:
3222
+ version "4.7.1"
3223
+ resolved "https://registry.yarnpkg.com/maplibre-gl/-/maplibre-gl-4.7.1.tgz#06a524438ee2aafbe8bcd91002a4e01468ea5486"
3224
+ integrity sha512-lgL7XpIwsgICiL82ITplfS7IGwrB1OJIw/pCvprDp2dhmSSEBgmPzYRvwYYYvJGJD7fxUv1Tvpih4nZ6VrLuaA==
3225
3225
  dependencies:
3226
3226
  "@mapbox/geojson-rewind" "^0.5.2"
3227
3227
  "@mapbox/jsonlint-lines-primitives" "^2.0.2"
@@ -3230,14 +3230,14 @@ maplibre-gl@^5.1.0:
3230
3230
  "@mapbox/unitbezier" "^0.0.1"
3231
3231
  "@mapbox/vector-tile" "^1.3.1"
3232
3232
  "@mapbox/whoots-js" "^3.1.0"
3233
- "@maplibre/maplibre-gl-style-spec" "^23.1.0"
3234
- "@types/geojson" "^7946.0.16"
3233
+ "@maplibre/maplibre-gl-style-spec" "^20.3.1"
3234
+ "@types/geojson" "^7946.0.14"
3235
3235
  "@types/geojson-vt" "3.2.5"
3236
3236
  "@types/mapbox__point-geometry" "^0.1.4"
3237
3237
  "@types/mapbox__vector-tile" "^1.3.4"
3238
3238
  "@types/pbf" "^3.0.5"
3239
3239
  "@types/supercluster" "^7.1.3"
3240
- earcut "^3.0.1"
3240
+ earcut "^3.0.0"
3241
3241
  geojson-vt "^4.0.2"
3242
3242
  gl-matrix "^3.4.3"
3243
3243
  global-prefix "^4.0.0"
@@ -4196,6 +4196,11 @@ queue-microtask@^1.2.2:
4196
4196
  resolved "https://registry.yarnpkg.com/queue-microtask/-/queue-microtask-1.2.3.tgz#4929228bbc724dfac43e0efb058caf7b6cfb6243"
4197
4197
  integrity sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==
4198
4198
 
4199
+ quickselect@^2.0.0:
4200
+ version "2.0.0"
4201
+ resolved "https://registry.yarnpkg.com/quickselect/-/quickselect-2.0.0.tgz#f19680a486a5eefb581303e023e98faaf25dd018"
4202
+ integrity sha512-RKJ22hX8mHe3Y6wH/N3wCM6BWtjaxIyyUIkpHOvfFnxdI4yD4tBXEBKSbriGujF6jnSVkJrffuo6vxACiSSxIw==
4203
+
4199
4204
  quickselect@^3.0.0:
4200
4205
  version "3.0.0"
4201
4206
  resolved "https://registry.yarnpkg.com/quickselect/-/quickselect-3.0.0.tgz#a37fc953867d56f095a20ac71c6d27063d2de603"
@@ -1,26 +0,0 @@
1
- import { useThree, _roots } from "@react-three/fiber";
2
- import { useState } from "react";
3
- import { Matrix4 } from "three";
4
- function useR3M() {
5
- const r3m = useThree((s) => s.r3m);
6
- return r3m;
7
- }
8
- function useInitR3M(props) {
9
- const canvas = useThree((s) => s.gl.domElement);
10
- useState(() => {
11
- const store = _roots.get(canvas).store;
12
- initR3M({ ...props, store });
13
- });
14
- }
15
- function initR3M({ store, ...props }) {
16
- const viewProjMx = new Matrix4().identity().toArray();
17
- const r3m = { ...props, viewProjMx };
18
- store.setState({ r3m });
19
- return r3m;
20
- }
21
- export {
22
- initR3M,
23
- useInitR3M,
24
- useR3M
25
- };
26
- //# sourceMappingURL=main23.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"main23.mjs","sources":["../../src/core/use-r3m.ts"],"sourcesContent":["import { RootState, _roots, useThree } from \"@react-three/fiber\";\nimport { useState } from \"react\";\nimport { Matrix4, Matrix4Tuple } from \"three\";\nimport { UseBoundStore } from 'zustand';\nimport { FromLngLat, MapInstance } from \"./generic-map\";\n\nexport interface R3M<T extends MapInstance = MapInstance> {\n /** Map provider */\n map: T,\n /** view projection matrix coming from the map provider */\n viewProjMx: Matrix4Tuple,\n fromLngLat: FromLngLat,\n}\n\nexport function useR3M<T extends MapInstance> () {\n const r3m = useThree(s=>(s as any).r3m) as R3M<T>; // eslint-disable-line @typescript-eslint/no-explicit-any\n return r3m;\n}\n\n/** init `useR3M` hook */\nexport function useInitR3M<T extends MapInstance>(props: {\n map: T; fromLngLat: FromLngLat;\n}) {\n const canvas = useThree(s => s.gl.domElement);\n // to run only once\n useState(()=>{\n const store = _roots.get(canvas)!.store; // eslint-disable-line @typescript-eslint/no-non-null-assertion\n initR3M({...props, store})\n })\n}\n\nexport function initR3M<T extends MapInstance>({store, ...props}: {\n map: T;\n fromLngLat: FromLngLat;\n store: UseBoundStore<RootState>;\n}) {\n const viewProjMx = new Matrix4().identity().toArray();\n const r3m : R3M<T> = { ...props, viewProjMx };\n store.setState({r3m} as any); // eslint-disable-line @typescript-eslint/no-explicit-any\n return r3m;\n}"],"names":[],"mappings":";;;AAcO,SAAS,SAAiC;AAC/C,QAAM,MAAM,SAAS,CAAI,MAAA,EAAU,GAAG;AAC/B,SAAA;AACT;AAGO,SAAS,WAAkC,OAE/C;AACD,QAAM,SAAS,SAAS,CAAK,MAAA,EAAE,GAAG,UAAU;AAE5C,WAAS,MAAI;AACX,UAAM,QAAQ,OAAO,IAAI,MAAM,EAAG;AAClC,YAAQ,EAAC,GAAG,OAAO,MAAM,CAAA;AAAA,EAAA,CAC1B;AACH;AAEO,SAAS,QAA+B,EAAC,OAAO,GAAG,SAIvD;AACD,QAAM,aAAa,IAAI,QAAA,EAAU,WAAW,QAAQ;AACpD,QAAM,MAAe,EAAE,GAAG,OAAO,WAAW;AACtC,QAAA,SAAS,EAAC,IAAA,CAAW;AACpB,SAAA;AACT;"}
@@ -1,5 +0,0 @@
1
- const earthRadius = 63710088e-1;
2
- export {
3
- earthRadius
4
- };
5
- //# sourceMappingURL=main24.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"main24.mjs","sources":["../../src/core/earth-radius.ts"],"sourcesContent":["export const earthRadius = 6371008.8;\n"],"names":[],"mappings":"AAAO,MAAM,cAAc;"}
@@ -1,33 +0,0 @@
1
- import { useThree, _roots } from "@react-three/fiber";
2
- import { useMemo } from "react";
3
- function useCoords() {
4
- const coords = useThree((s) => s.coords);
5
- return coords;
6
- }
7
- function useSetCoords({ longitude, latitude, altitude }) {
8
- const canvas = useThree((s) => s.gl.domElement);
9
- useMemo(() => {
10
- const store = _roots.get(canvas).store;
11
- const coords = { longitude, latitude, altitude };
12
- setCoords(store, coords);
13
- }, [longitude, latitude, altitude]);
14
- }
15
- function useSetRootCoords(store, {
16
- longitude,
17
- latitude,
18
- altitude
19
- }) {
20
- useMemo(() => {
21
- setCoords(store, { longitude, latitude, altitude });
22
- }, [longitude, latitude, altitude]);
23
- }
24
- function setCoords(store, coords) {
25
- store.setState({ coords });
26
- }
27
- export {
28
- setCoords,
29
- useCoords,
30
- useSetCoords,
31
- useSetRootCoords
32
- };
33
- //# sourceMappingURL=main25.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"main25.mjs","sources":["../../src/core/use-coords.tsx"],"sourcesContent":["import { RootState, _roots, useThree } from \"@react-three/fiber\";\nimport { useMemo } from \"react\";\nimport { UseBoundStore } from 'zustand';\nimport { Coords } from \"../api/coords\";\n\nexport function useCoords() {\n const coords = useThree(s=>(s as any).coords) as Coords; // eslint-disable-line @typescript-eslint/no-explicit-any\n return coords;\n}\n\nexport function useSetCoords({longitude, latitude, altitude}: Coords) {\n \n const canvas = useThree(s => s.gl.domElement);\n useMemo(()=>{\n const store = _roots.get(canvas)!.store; // eslint-disable-line @typescript-eslint/no-non-null-assertion\n const coords : Coords = { longitude, latitude, altitude };\n setCoords(store, coords);\n }, [longitude, latitude, altitude]) // eslint-disable-line react-hooks/exhaustive-deps\n}\n\nexport function useSetRootCoords(store:UseBoundStore<RootState>, {\n longitude, latitude, altitude\n}: Coords) {\n useMemo(()=>{\n setCoords(store, {longitude, latitude, altitude});\n }, [longitude, latitude, altitude]) // eslint-disable-line react-hooks/exhaustive-deps\n}\n\nexport function setCoords(store:UseBoundStore<RootState>, coords: Coords) {\n store.setState({coords} as any) // eslint-disable-line @typescript-eslint/no-explicit-any\n}"],"names":[],"mappings":";;AAKO,SAAS,YAAY;AAC1B,QAAM,SAAS,SAAS,CAAI,MAAA,EAAU,MAAM;AACrC,SAAA;AACT;AAEO,SAAS,aAAa,EAAC,WAAW,UAAU,YAAmB;AAEpE,QAAM,SAAS,SAAS,CAAK,MAAA,EAAE,GAAG,UAAU;AAC5C,UAAQ,MAAI;AACV,UAAM,QAAQ,OAAO,IAAI,MAAM,EAAG;AAClC,UAAM,SAAkB,EAAE,WAAW,UAAU,SAAS;AACxD,cAAU,OAAO,MAAM;AAAA,EACtB,GAAA,CAAC,WAAW,UAAU,QAAQ,CAAC;AACpC;AAEO,SAAS,iBAAiB,OAAgC;AAAA,EAC/D;AAAA,EAAW;AAAA,EAAU;AACvB,GAAW;AACT,UAAQ,MAAI;AACV,cAAU,OAAO,EAAC,WAAW,UAAU,SAAS,CAAA;AAAA,EAC/C,GAAA,CAAC,WAAW,UAAU,QAAQ,CAAC;AACpC;AAEgB,SAAA,UAAU,OAAgC,QAAgB;AAClE,QAAA,SAAS,EAAC,OAAA,CAAc;AAChC;"}
@@ -1,27 +0,0 @@
1
- import { syncCamera } from "./main21.mjs";
2
- import { useFunction } from "./main20.mjs";
3
- function useRender({
4
- map,
5
- origin,
6
- useThree,
7
- frameloop,
8
- r3m
9
- }) {
10
- const render = useFunction((_gl, projViewMx) => {
11
- const pVMx = "defaultProjectionData" in projViewMx ? Object.values(projViewMx.defaultProjectionData.mainMatrix) : projViewMx;
12
- r3m.viewProjMx.splice(0, 16, ...pVMx);
13
- const state = useThree.getState();
14
- const camera = state.camera;
15
- const { gl, advance } = state;
16
- syncCamera(camera, origin, projViewMx);
17
- gl.resetState();
18
- advance(Date.now() * 1e-3, true);
19
- if (!frameloop || frameloop === "always")
20
- map.triggerRepaint();
21
- });
22
- return render;
23
- }
24
- export {
25
- useRender
26
- };
27
- //# sourceMappingURL=main26.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"main26.mjs","sources":["../../src/core/canvas-in-layer/use-render.ts"],"sourcesContent":["import { RootState } from \"@react-three/fiber\";\nimport { Matrix4Tuple, PerspectiveCamera } from \"three\";\nimport { UseBoundStore } from \"zustand\";\nimport { MapInstance } from \"../generic-map\";\nimport { syncCamera } from \"../sync-camera\";\nimport { useFunction } from \"../use-function\";\nimport { R3M } from \"../use-r3m\";\n\nexport function useRender({\n map, origin, useThree, frameloop, r3m,\n} :{\n map: MapInstance,\n origin: Matrix4Tuple,\n useThree: UseBoundStore<RootState>,\n frameloop?: 'always' | 'demand',\n r3m: R3M\n}) {\n const render = useFunction((_gl: WebGL2RenderingContext, projViewMx: number[] | {defaultProjectionData: {mainMatrix: Record<string, number>}}) => {\n const pVMx = 'defaultProjectionData' in projViewMx ? Object.values(projViewMx.defaultProjectionData.mainMatrix) : projViewMx;\n r3m.viewProjMx.splice(0, 16, ...pVMx)\n const state = useThree.getState();\n const camera = state.camera as PerspectiveCamera;\n const {gl, advance} = state;\n syncCamera(camera as PerspectiveCamera, origin, projViewMx as Matrix4Tuple);\n gl.resetState();\n advance(Date.now() * 0.001, true);\n if (!frameloop || frameloop === 'always') map.triggerRepaint();\n })\n return render;\n}"],"names":[],"mappings":";;AAQO,SAAS,UAAU;AAAA,EACxB;AAAA,EAAK;AAAA,EAAQ;AAAA,EAAU;AAAA,EAAW;AACpC,GAMG;AACD,QAAM,SAAS,YAAY,CAAC,KAA6B,eAAyF;AAC1I,UAAA,OAAO,2BAA2B,aAAa,OAAO,OAAO,WAAW,sBAAsB,UAAU,IAAI;AAClH,QAAI,WAAW,OAAO,GAAG,IAAI,GAAG,IAAI;AAC9B,UAAA,QAAQ,SAAS;AACvB,UAAM,SAAS,MAAM;AACf,UAAA,EAAC,IAAI,QAAW,IAAA;AACX,eAAA,QAA6B,QAAQ,UAA0B;AAC1E,OAAG,WAAW;AACd,YAAQ,KAAK,IAAQ,IAAA,MAAO,IAAI;AAC5B,QAAA,CAAC,aAAa,cAAc;AAAU,UAAI,eAAe;AAAA,EAAA,CAC9D;AACM,SAAA;AACT;"}