react-three-map 0.7.2 → 0.8.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 (151) hide show
  1. package/CHANGELOG.md +16 -0
  2. package/README.md +57 -4
  3. package/dist/cjs/main.js +386 -181
  4. package/dist/es/main.mjs +9 -3
  5. package/dist/es/main.mjs.map +1 -1
  6. package/dist/es/main10.mjs +8 -20
  7. package/dist/es/main10.mjs.map +1 -1
  8. package/dist/es/main11.mjs +33 -19
  9. package/dist/es/main11.mjs.map +1 -1
  10. package/dist/es/main12.mjs +11 -87
  11. package/dist/es/main12.mjs.map +1 -1
  12. package/dist/es/main13.mjs +23 -9
  13. package/dist/es/main13.mjs.map +1 -1
  14. package/dist/es/main14.mjs +2 -68
  15. package/dist/es/main14.mjs.map +1 -1
  16. package/dist/es/main15.mjs +33 -0
  17. package/dist/es/main15.mjs.map +1 -0
  18. package/dist/es/main16.mjs +26 -0
  19. package/dist/es/main16.mjs.map +1 -0
  20. package/dist/es/main17.mjs +98 -0
  21. package/dist/es/main17.mjs.map +1 -0
  22. package/dist/es/main18.mjs +66 -0
  23. package/dist/es/main18.mjs.map +1 -0
  24. package/dist/es/main19.mjs +23 -0
  25. package/dist/es/main19.mjs.map +1 -0
  26. package/dist/es/main2.mjs.map +1 -1
  27. package/dist/es/main20.mjs +27 -0
  28. package/dist/es/main20.mjs.map +1 -0
  29. package/dist/es/main21.mjs +19 -0
  30. package/dist/es/main21.mjs.map +1 -0
  31. package/dist/es/main22.mjs +83 -0
  32. package/dist/es/main22.mjs.map +1 -0
  33. package/dist/es/main3.mjs +43 -50
  34. package/dist/es/main3.mjs.map +1 -1
  35. package/dist/es/main4.mjs +50 -24
  36. package/dist/es/main4.mjs.map +1 -1
  37. package/dist/es/main5.mjs +12 -3
  38. package/dist/es/main5.mjs.map +1 -1
  39. package/dist/es/main6.mjs +19 -34
  40. package/dist/es/main6.mjs.map +1 -1
  41. package/dist/es/main7.mjs +10 -11
  42. package/dist/es/main7.mjs.map +1 -1
  43. package/dist/es/main8.mjs +17 -16
  44. package/dist/es/main8.mjs.map +1 -1
  45. package/dist/es/main9.mjs +27 -15
  46. package/dist/es/main9.mjs.map +1 -1
  47. package/dist/maplibre/cjs/main.js +386 -181
  48. package/dist/maplibre/es/main.mjs +9 -3
  49. package/dist/maplibre/es/main.mjs.map +1 -1
  50. package/dist/maplibre/es/main10.mjs +9 -20
  51. package/dist/maplibre/es/main10.mjs.map +1 -1
  52. package/dist/maplibre/es/main11.mjs +33 -14
  53. package/dist/maplibre/es/main11.mjs.map +1 -1
  54. package/dist/maplibre/es/main12.mjs +11 -87
  55. package/dist/maplibre/es/main12.mjs.map +1 -1
  56. package/dist/maplibre/es/main13.mjs +23 -9
  57. package/dist/maplibre/es/main13.mjs.map +1 -1
  58. package/dist/maplibre/es/main14.mjs +2 -68
  59. package/dist/maplibre/es/main14.mjs.map +1 -1
  60. package/dist/maplibre/es/main15.mjs +33 -0
  61. package/dist/maplibre/es/main15.mjs.map +1 -0
  62. package/dist/maplibre/es/main16.mjs +26 -0
  63. package/dist/maplibre/es/main16.mjs.map +1 -0
  64. package/dist/maplibre/es/main17.mjs +98 -0
  65. package/dist/maplibre/es/main17.mjs.map +1 -0
  66. package/dist/maplibre/es/main18.mjs +66 -0
  67. package/dist/maplibre/es/main18.mjs.map +1 -0
  68. package/dist/maplibre/es/main19.mjs +23 -0
  69. package/dist/maplibre/es/main19.mjs.map +1 -0
  70. package/dist/maplibre/es/main2.mjs.map +1 -1
  71. package/dist/maplibre/es/main20.mjs +27 -0
  72. package/dist/maplibre/es/main20.mjs.map +1 -0
  73. package/dist/maplibre/es/main21.mjs +19 -0
  74. package/dist/maplibre/es/main21.mjs.map +1 -0
  75. package/dist/maplibre/es/main22.mjs +83 -0
  76. package/dist/maplibre/es/main22.mjs.map +1 -0
  77. package/dist/maplibre/es/main3.mjs +43 -50
  78. package/dist/maplibre/es/main3.mjs.map +1 -1
  79. package/dist/maplibre/es/main4.mjs +50 -24
  80. package/dist/maplibre/es/main4.mjs.map +1 -1
  81. package/dist/maplibre/es/main5.mjs +12 -3
  82. package/dist/maplibre/es/main5.mjs.map +1 -1
  83. package/dist/maplibre/es/main6.mjs +19 -34
  84. package/dist/maplibre/es/main6.mjs.map +1 -1
  85. package/dist/maplibre/es/main7.mjs +10 -11
  86. package/dist/maplibre/es/main7.mjs.map +1 -1
  87. package/dist/maplibre/es/main8.mjs +17 -16
  88. package/dist/maplibre/es/main8.mjs.map +1 -1
  89. package/dist/maplibre/es/main9.mjs +25 -19
  90. package/dist/maplibre/es/main9.mjs.map +1 -1
  91. package/dist/maplibre/types/api/canvas-props.d.ts +4 -4
  92. package/dist/maplibre/types/api/coords-to-vector-3.d.ts +3 -0
  93. package/dist/maplibre/types/api/coords.d.ts +5 -0
  94. package/dist/maplibre/types/api/index.d.ts +6 -0
  95. package/dist/maplibre/types/api/near-coordinates.d.ts +3 -0
  96. package/dist/maplibre/types/api/use-map.d.ts +1 -1
  97. package/dist/maplibre/types/api/vector-3-to-coords.d.ts +3 -0
  98. package/dist/maplibre/types/core/canvas-in-layer/use-canvas-in-layer.d.ts +11 -0
  99. package/dist/maplibre/types/core/canvas-in-layer/use-render.d.ts +12 -0
  100. package/dist/maplibre/types/core/canvas-in-layer/use-root.d.ts +7 -0
  101. package/dist/maplibre/types/core/canvas-overlay/canvas-portal.d.ts +11 -0
  102. package/dist/maplibre/types/core/canvas-overlay/init-canvas-fc.d.ts +12 -0
  103. package/dist/maplibre/types/core/canvas-overlay/init-r3m.d.ts +10 -0
  104. package/dist/maplibre/types/core/canvas-overlay/render.d.ts +1 -0
  105. package/dist/maplibre/types/core/canvas-overlay/sync-camera-fc.d.ts +14 -0
  106. package/dist/maplibre/types/core/coords-to-matrix.d.ts +2 -4
  107. package/dist/maplibre/types/core/earth-radius.d.ts +1 -0
  108. package/dist/maplibre/types/core/events.d.ts +4 -0
  109. package/dist/maplibre/types/core/use-coords-to-matrix.d.ts +5 -0
  110. package/dist/maplibre/types/core/use-coords.d.ts +7 -5
  111. package/dist/maplibre/types/core/use-r3m.d.ts +22 -0
  112. package/dist/maplibre/types/{maplibre → mapbox}/canvas.d.ts +1 -1
  113. package/dist/maplibre/types/maplibre.index.d.ts +3 -4
  114. package/dist/types/api/canvas-props.d.ts +4 -4
  115. package/dist/types/api/coords-to-vector-3.d.ts +3 -0
  116. package/dist/types/api/coords.d.ts +5 -0
  117. package/dist/types/api/index.d.ts +6 -0
  118. package/dist/types/api/near-coordinates.d.ts +3 -0
  119. package/dist/types/api/use-map.d.ts +1 -1
  120. package/dist/types/api/vector-3-to-coords.d.ts +3 -0
  121. package/dist/types/core/canvas-in-layer/use-canvas-in-layer.d.ts +11 -0
  122. package/dist/types/core/canvas-in-layer/use-render.d.ts +12 -0
  123. package/dist/types/core/canvas-in-layer/use-root.d.ts +7 -0
  124. package/dist/types/core/canvas-overlay/canvas-portal.d.ts +11 -0
  125. package/dist/types/core/canvas-overlay/init-canvas-fc.d.ts +12 -0
  126. package/dist/types/core/canvas-overlay/init-r3m.d.ts +10 -0
  127. package/dist/types/core/canvas-overlay/render.d.ts +1 -0
  128. package/dist/types/core/canvas-overlay/sync-camera-fc.d.ts +14 -0
  129. package/dist/types/core/coords-to-matrix.d.ts +2 -4
  130. package/dist/types/core/earth-radius.d.ts +1 -0
  131. package/dist/types/core/events.d.ts +4 -0
  132. package/dist/types/core/use-coords-to-matrix.d.ts +5 -0
  133. package/dist/types/core/use-coords.d.ts +7 -5
  134. package/dist/types/core/use-r3m.d.ts +22 -0
  135. package/dist/types/mapbox.index.d.ts +2 -3
  136. package/package.json +12 -12
  137. package/stories/package.json +15 -8
  138. package/stories/yarn.lock +2033 -1194
  139. package/vitest.config.ts +1 -5
  140. package/dist/maplibre/types/core/create-events.d.ts +0 -3
  141. package/dist/maplibre/types/core/store.d.ts +0 -12
  142. package/dist/maplibre/types/core/use-canvas.d.ts +0 -11
  143. package/dist/maplibre/types/core/use-create-root.d.ts +0 -13
  144. package/dist/maplibre/types/core/use-on-add.d.ts +0 -10
  145. package/dist/maplibre/types/core/use-render.d.ts +0 -4
  146. package/dist/types/core/create-events.d.ts +0 -3
  147. package/dist/types/core/store.d.ts +0 -12
  148. package/dist/types/core/use-canvas.d.ts +0 -11
  149. package/dist/types/core/use-create-root.d.ts +0 -13
  150. package/dist/types/core/use-on-add.d.ts +0 -10
  151. package/dist/types/core/use-render.d.ts +0 -4
@@ -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":[],"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
+ {"version":3,"file":"main7.mjs","sources":["../../../src/api/vector-3-to-coords.ts"],"sourcesContent":["import { MathUtils, Vector3Tuple } from \"three\";\nimport { Coords } from \"./coords\";\nimport { earthRadius } from \"../core/earth-radius\";\n\nexport function vector3ToCoords(position: Vector3Tuple, origin: Coords): Coords {\n const [x, y, z] = position;\n const latitude = origin.latitude + (-z / earthRadius) * MathUtils.RAD2DEG;\n const longitude = origin.longitude + (x / earthRadius) * MathUtils.RAD2DEG / Math.cos(origin.latitude * MathUtils.DEG2RAD);\n const altitude = (origin.altitude || 0) + y;\n const coords: Coords = { latitude, longitude, altitude };\n return coords;\n}"],"names":[],"mappings":";;AAIgB,SAAA,gBAAgB,UAAwB,QAAwB;AAC9E,QAAM,CAAC,GAAG,GAAG,CAAC,IAAI;AAClB,QAAM,WAAW,OAAO,WAAY,CAAC,IAAI,cAAe,UAAU;AAClE,QAAM,YAAY,OAAO,YAAa,IAAI,cAAe,UAAU,UAAU,KAAK,IAAI,OAAO,WAAW,UAAU,OAAO;AACnH,QAAA,YAAY,OAAO,YAAY,KAAK;AAC1C,QAAM,SAAiB,EAAE,UAAU,WAAW,SAAS;AAChD,SAAA;AACT;"}
@@ -1,25 +1,26 @@
1
- import { useCoords } from "./main7.mjs";
2
- import { useCreateRoot } from "./main9.mjs";
3
- import { useRender } from "./main10.mjs";
4
- function useCanvas({
5
- longitude,
6
- latitude,
7
- altitude = 0,
8
- frameloop = "always",
9
- fromLngLat,
10
- ...renderProps
11
- }) {
12
- const m4 = useCoords({
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({
13
7
  latitude,
14
8
  longitude,
15
9
  altitude,
16
10
  fromLngLat
17
11
  });
18
- const { id, onAdd, onRemove, r3mRef } = useCreateRoot({ frameloop, fromLngLat, ...renderProps });
19
- const render = useRender(m4, r3mRef, frameloop);
20
- return { id, onAdd, onRemove, render };
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"
21
+ };
21
22
  }
22
23
  export {
23
- useCanvas
24
+ useCanvasInLayer
24
25
  };
25
26
  //# sourceMappingURL=main8.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"main8.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 Omit<CanvasProps, 'id'|'beforeId'> {\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
+ {"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;"}
@@ -1,24 +1,30 @@
1
1
  import { jsx, Fragment } from "react/jsx-runtime";
2
- import { useId, useEffect } from "react";
3
- import { useOnAdd } from "./main12.mjs";
4
- const useCreateRoot = ({
5
- children,
6
- frameloop,
7
- fromLngLat,
8
- ...renderProps
9
- }) => {
10
- const id = useId();
11
- const { onAdd, onRemove, mounted, r3mRef } = useOnAdd(fromLngLat, { frameloop, ...renderProps });
2
+ import { memo, useState, useEffect } from "react";
3
+ import { createPortal } from "react-dom";
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
+ });
12
17
  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 };
20
- };
18
+ const parent = canvas.parentElement;
19
+ parent.appendChild(el);
20
+ return () => {
21
+ parent.removeChild(el);
22
+ };
23
+ }, []);
24
+ return /* @__PURE__ */ jsx(Fragment, { children: createPortal(/* @__PURE__ */ jsx(CanvasPortal, { ...props }), el) });
25
+ });
26
+ InitCanvasFC.displayName = "InitCanvasFC";
21
27
  export {
22
- useCreateRoot
28
+ InitCanvasFC
23
29
  };
24
30
  //# sourceMappingURL=main9.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"main9.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
+ {"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;"}
@@ -1,10 +1,10 @@
1
1
  import { RenderProps } from "@react-three/fiber";
2
2
  import { PropsWithChildren } from "react";
3
- export interface CanvasProps extends Omit<RenderProps<HTMLCanvasElement>, 'frameloop'>, PropsWithChildren {
3
+ import { Coords } from "./coords";
4
+ export interface CanvasProps extends Coords, Omit<RenderProps<HTMLCanvasElement>, 'frameloop'>, PropsWithChildren {
4
5
  id?: string;
5
6
  beforeId?: string;
6
- longitude: number;
7
- latitude: number;
8
- altitude?: number;
9
7
  frameloop?: 'always' | 'demand';
8
+ /** render on a separated `<canvas>` that sits on top of the map provider */
9
+ overlay?: boolean;
10
10
  }
@@ -0,0 +1,3 @@
1
+ import { Vector3Tuple } from 'three';
2
+ import { Coords } from './coords';
3
+ export declare function coordsToVector3(point: Coords, origin: Coords): Vector3Tuple;
@@ -0,0 +1,5 @@
1
+ export interface Coords {
2
+ longitude: number;
3
+ latitude: number;
4
+ altitude?: number;
5
+ }
@@ -0,0 +1,6 @@
1
+ export * from './canvas-props';
2
+ export * from './coordinates';
3
+ export * from './coords';
4
+ export * from './coords-to-vector-3';
5
+ export * from './near-coordinates';
6
+ export * from './vector-3-to-coords';
@@ -0,0 +1,3 @@
1
+ /// <reference types="react" />
2
+ import { CoordinatesProps } from "./coordinates";
3
+ export declare const NearCoordinates: import("react").NamedExoticComponent<CoordinatesProps>;
@@ -1,2 +1,2 @@
1
1
  import { MapInstance } from "../core/generic-map";
2
- export declare const useMap: <T extends MapInstance = MapInstance>() => T | undefined;
2
+ export declare const useMap: <T extends MapInstance = MapInstance>() => T;
@@ -0,0 +1,3 @@
1
+ import { Vector3Tuple } from "three";
2
+ import { Coords } from "./coords";
3
+ export declare function vector3ToCoords(position: Vector3Tuple, origin: Coords): Coords;
@@ -0,0 +1,11 @@
1
+ import { CanvasProps } from "../../api/canvas-props";
2
+ import { FromLngLat, MapInstance } from "../generic-map";
3
+ /** get all the properties that you need to render as a map `<Layer>` */
4
+ export declare function useCanvasInLayer(props: CanvasProps, fromLngLat: FromLngLat, map: MapInstance): {
5
+ readonly id: string | undefined;
6
+ readonly beforeId: string | undefined;
7
+ readonly onRemove: () => void;
8
+ readonly render: (_gl: WebGL2RenderingContext, projViewMx: number[]) => void;
9
+ readonly type: "custom";
10
+ readonly renderingMode: "3d";
11
+ };
@@ -0,0 +1,12 @@
1
+ import { RootState } from "@react-three/fiber";
2
+ import { Matrix4Tuple } from "three";
3
+ import { UseBoundStore } from "zustand";
4
+ import { MapInstance } from "../generic-map";
5
+ import { R3M } from "../use-r3m";
6
+ export declare function useRender({ map, origin, useThree, frameloop, r3m, }: {
7
+ map: MapInstance;
8
+ origin: Matrix4Tuple;
9
+ useThree: UseBoundStore<RootState>;
10
+ frameloop?: 'always' | 'demand';
11
+ r3m: R3M;
12
+ }): (_gl: WebGL2RenderingContext, projViewMx: number[]) => void;
@@ -0,0 +1,7 @@
1
+ import { CanvasProps } from "../../api/canvas-props";
2
+ import { FromLngLat, MapInstance } from "../generic-map";
3
+ export declare function useRoot(fromLngLat: FromLngLat, map: MapInstance, { frameloop, longitude, latitude, altitude, ...props }: CanvasProps): {
4
+ onRemove: () => void;
5
+ useThree: import("zustand").UseBoundStore<import("@react-three/fiber").RootState>;
6
+ r3m: import("../use-r3m").R3M<MapInstance>;
7
+ };
@@ -0,0 +1,11 @@
1
+ /// <reference types="react" />
2
+ import { Matrix4Tuple } from "three";
3
+ import { CanvasProps } from "../../api/canvas-props";
4
+ import { FromLngLat, MapInstance } from "../generic-map";
5
+ interface CanvasPortalProps extends CanvasProps {
6
+ setOnRender: (callback: () => (mx: Matrix4Tuple) => void) => void;
7
+ map: MapInstance;
8
+ fromLngLat: FromLngLat;
9
+ }
10
+ export declare const CanvasPortal: import("react").NamedExoticComponent<CanvasPortalProps>;
11
+ export {};
@@ -0,0 +1,12 @@
1
+ /// <reference types="react" />
2
+ import { Matrix4Tuple } from "three";
3
+ import { CanvasProps } from "../../api/canvas-props";
4
+ import { FromLngLat, MapInstance } from "../generic-map";
5
+ interface InitCanvasFCProps extends CanvasProps {
6
+ map: MapInstance;
7
+ setOnRender: (callback: () => (mx: Matrix4Tuple) => void) => void;
8
+ frameloop?: 'always' | 'demand';
9
+ fromLngLat: FromLngLat;
10
+ }
11
+ export declare const InitCanvasFC: import("react").NamedExoticComponent<InitCanvasFCProps>;
12
+ export {};
@@ -0,0 +1,10 @@
1
+ /// <reference types="react" />
2
+ import { FromLngLat, MapInstance } from "../generic-map";
3
+ import { Coords } from "../../api/coords";
4
+ interface InitR3MProps extends Coords {
5
+ map: MapInstance;
6
+ fromLngLat: FromLngLat;
7
+ }
8
+ /** Initialises the `R3M` hook */
9
+ export declare const InitR3M: import("react").NamedExoticComponent<InitR3MProps>;
10
+ export {};
@@ -0,0 +1 @@
1
+ export type Render = (gl: WebGLRenderingContext, matrix: number[]) => void;
@@ -0,0 +1,14 @@
1
+ /// <reference types="react" />
2
+ import { Matrix4Tuple } from "three";
3
+ import { Coords } from "../../api/coords";
4
+ import { MapInstance } from "../generic-map";
5
+ interface SyncCameraFCProps extends Coords {
6
+ setOnRender?: (callback: () => (mx: Matrix4Tuple) => void) => void;
7
+ /** on `useFrame` it will manually render (used by `<Coordinates>`) */
8
+ manualRender?: boolean;
9
+ onReady?: () => void;
10
+ map: MapInstance;
11
+ }
12
+ /** React Component (FC) to sync the Three camera with the map provider */
13
+ export declare const SyncCameraFC: import("react").NamedExoticComponent<SyncCameraFCProps>;
14
+ export {};
@@ -1,8 +1,6 @@
1
1
  import { FromLngLat } from "./generic-map";
2
+ import { Coords } from "../api/coords";
2
3
  /** calculate Matrix4 from coordinates */
3
- export declare function coordsToMatrix({ longitude, latitude, altitude, fromLngLat }: {
4
- longitude: number;
5
- latitude: number;
6
- altitude: number;
4
+ export declare function coordsToMatrix({ longitude, latitude, altitude, fromLngLat }: Coords & {
7
5
  fromLngLat: FromLngLat;
8
6
  }): import("three").Matrix4Tuple;
@@ -0,0 +1 @@
1
+ export declare const earthRadius = 6378137;
@@ -0,0 +1,4 @@
1
+ import { Canvas } from "@react-three/fiber";
2
+ type Events = Parameters<typeof Canvas>[0]['events'];
3
+ export declare const events: Events;
4
+ export {};
@@ -0,0 +1,5 @@
1
+ import { coordsToMatrix } from "./coords-to-matrix";
2
+ type Props = Parameters<typeof coordsToMatrix>[0];
3
+ /** calculate matrix from coordinates */
4
+ export declare function useCoordsToMatrix({ latitude, longitude, altitude, fromLngLat }: Props): import("three").Matrix4Tuple;
5
+ export {};
@@ -1,5 +1,7 @@
1
- import { coordsToMatrix } from "./coords-to-matrix";
2
- type Props = Parameters<typeof coordsToMatrix>[0];
3
- /** calculate matrix from coordinates */
4
- export declare function useCoords({ latitude, longitude, altitude, fromLngLat }: Props): import("three").Matrix4Tuple;
5
- export {};
1
+ import { RootState } from "@react-three/fiber";
2
+ import { UseBoundStore } from 'zustand';
3
+ import { Coords } from "../api/coords";
4
+ export declare function useCoords(): Coords;
5
+ export declare function useSetCoords({ longitude, latitude, altitude }: Coords): void;
6
+ export declare function useSetRootCoords(store: UseBoundStore<RootState>, { longitude, latitude, altitude }: Coords): void;
7
+ export declare function setCoords(store: UseBoundStore<RootState>, coords: Coords): void;
@@ -0,0 +1,22 @@
1
+ import { RootState } from "@react-three/fiber";
2
+ import { Matrix4Tuple } from "three";
3
+ import { UseBoundStore } from 'zustand';
4
+ import { FromLngLat, MapInstance } from "./generic-map";
5
+ export interface R3M<T extends MapInstance = MapInstance> {
6
+ /** Map provider */
7
+ map: T;
8
+ /** view projection matrix coming from the map provider */
9
+ viewProjMx: Matrix4Tuple;
10
+ fromLngLat: FromLngLat;
11
+ }
12
+ export declare function useR3M<T extends MapInstance>(): R3M<T>;
13
+ /** init `useR3M` hook */
14
+ export declare function useInitR3M<T extends MapInstance>(props: {
15
+ map: T;
16
+ fromLngLat: FromLngLat;
17
+ }): void;
18
+ export declare function initR3M<T extends MapInstance>({ store, ...props }: {
19
+ map: T;
20
+ fromLngLat: FromLngLat;
21
+ store: UseBoundStore<RootState>;
22
+ }): R3M<T>;
@@ -1,4 +1,4 @@
1
1
  /// <reference types="react" />
2
2
  import { CanvasProps } from "../api/canvas-props";
3
- /** react`-three-fiber` canvas inside `MapLibre` */
3
+ /** react`-three-fiber` canvas inside `Mapbox` */
4
4
  export declare const Canvas: import("react").NamedExoticComponent<CanvasProps>;
@@ -1,5 +1,4 @@
1
1
  import type { Map } from 'maplibre-gl';
2
- export * from './api/canvas-props';
3
- export * from './api/coordinates';
4
- export * from './maplibre/canvas';
5
- export declare const useMap: () => Map | undefined;
2
+ export * from './api';
3
+ export * from './mapbox/canvas';
4
+ export declare const useMap: () => Map;
@@ -1,10 +1,10 @@
1
1
  import { RenderProps } from "@react-three/fiber";
2
2
  import { PropsWithChildren } from "react";
3
- export interface CanvasProps extends Omit<RenderProps<HTMLCanvasElement>, 'frameloop'>, PropsWithChildren {
3
+ import { Coords } from "./coords";
4
+ export interface CanvasProps extends Coords, Omit<RenderProps<HTMLCanvasElement>, 'frameloop'>, PropsWithChildren {
4
5
  id?: string;
5
6
  beforeId?: string;
6
- longitude: number;
7
- latitude: number;
8
- altitude?: number;
9
7
  frameloop?: 'always' | 'demand';
8
+ /** render on a separated `<canvas>` that sits on top of the map provider */
9
+ overlay?: boolean;
10
10
  }
@@ -0,0 +1,3 @@
1
+ import { Vector3Tuple } from 'three';
2
+ import { Coords } from './coords';
3
+ export declare function coordsToVector3(point: Coords, origin: Coords): Vector3Tuple;
@@ -0,0 +1,5 @@
1
+ export interface Coords {
2
+ longitude: number;
3
+ latitude: number;
4
+ altitude?: number;
5
+ }
@@ -0,0 +1,6 @@
1
+ export * from './canvas-props';
2
+ export * from './coordinates';
3
+ export * from './coords';
4
+ export * from './coords-to-vector-3';
5
+ export * from './near-coordinates';
6
+ export * from './vector-3-to-coords';
@@ -0,0 +1,3 @@
1
+ /// <reference types="react" />
2
+ import { CoordinatesProps } from "./coordinates";
3
+ export declare const NearCoordinates: import("react").NamedExoticComponent<CoordinatesProps>;
@@ -1,2 +1,2 @@
1
1
  import { MapInstance } from "../core/generic-map";
2
- export declare const useMap: <T extends MapInstance = MapInstance>() => T | undefined;
2
+ export declare const useMap: <T extends MapInstance = MapInstance>() => T;
@@ -0,0 +1,3 @@
1
+ import { Vector3Tuple } from "three";
2
+ import { Coords } from "./coords";
3
+ export declare function vector3ToCoords(position: Vector3Tuple, origin: Coords): Coords;
@@ -0,0 +1,11 @@
1
+ import { CanvasProps } from "../../api/canvas-props";
2
+ import { FromLngLat, MapInstance } from "../generic-map";
3
+ /** get all the properties that you need to render as a map `<Layer>` */
4
+ export declare function useCanvasInLayer(props: CanvasProps, fromLngLat: FromLngLat, map: MapInstance): {
5
+ readonly id: string | undefined;
6
+ readonly beforeId: string | undefined;
7
+ readonly onRemove: () => void;
8
+ readonly render: (_gl: WebGL2RenderingContext, projViewMx: number[]) => void;
9
+ readonly type: "custom";
10
+ readonly renderingMode: "3d";
11
+ };
@@ -0,0 +1,12 @@
1
+ import { RootState } from "@react-three/fiber";
2
+ import { Matrix4Tuple } from "three";
3
+ import { UseBoundStore } from "zustand";
4
+ import { MapInstance } from "../generic-map";
5
+ import { R3M } from "../use-r3m";
6
+ export declare function useRender({ map, origin, useThree, frameloop, r3m, }: {
7
+ map: MapInstance;
8
+ origin: Matrix4Tuple;
9
+ useThree: UseBoundStore<RootState>;
10
+ frameloop?: 'always' | 'demand';
11
+ r3m: R3M;
12
+ }): (_gl: WebGL2RenderingContext, projViewMx: number[]) => void;
@@ -0,0 +1,7 @@
1
+ import { CanvasProps } from "../../api/canvas-props";
2
+ import { FromLngLat, MapInstance } from "../generic-map";
3
+ export declare function useRoot(fromLngLat: FromLngLat, map: MapInstance, { frameloop, longitude, latitude, altitude, ...props }: CanvasProps): {
4
+ onRemove: () => void;
5
+ useThree: import("zustand").UseBoundStore<import("@react-three/fiber").RootState>;
6
+ r3m: import("../use-r3m").R3M<MapInstance>;
7
+ };
@@ -0,0 +1,11 @@
1
+ /// <reference types="react" />
2
+ import { Matrix4Tuple } from "three";
3
+ import { CanvasProps } from "../../api/canvas-props";
4
+ import { FromLngLat, MapInstance } from "../generic-map";
5
+ interface CanvasPortalProps extends CanvasProps {
6
+ setOnRender: (callback: () => (mx: Matrix4Tuple) => void) => void;
7
+ map: MapInstance;
8
+ fromLngLat: FromLngLat;
9
+ }
10
+ export declare const CanvasPortal: import("react").NamedExoticComponent<CanvasPortalProps>;
11
+ export {};
@@ -0,0 +1,12 @@
1
+ /// <reference types="react" />
2
+ import { Matrix4Tuple } from "three";
3
+ import { CanvasProps } from "../../api/canvas-props";
4
+ import { FromLngLat, MapInstance } from "../generic-map";
5
+ interface InitCanvasFCProps extends CanvasProps {
6
+ map: MapInstance;
7
+ setOnRender: (callback: () => (mx: Matrix4Tuple) => void) => void;
8
+ frameloop?: 'always' | 'demand';
9
+ fromLngLat: FromLngLat;
10
+ }
11
+ export declare const InitCanvasFC: import("react").NamedExoticComponent<InitCanvasFCProps>;
12
+ export {};
@@ -0,0 +1,10 @@
1
+ /// <reference types="react" />
2
+ import { FromLngLat, MapInstance } from "../generic-map";
3
+ import { Coords } from "../../api/coords";
4
+ interface InitR3MProps extends Coords {
5
+ map: MapInstance;
6
+ fromLngLat: FromLngLat;
7
+ }
8
+ /** Initialises the `R3M` hook */
9
+ export declare const InitR3M: import("react").NamedExoticComponent<InitR3MProps>;
10
+ export {};
@@ -0,0 +1 @@
1
+ export type Render = (gl: WebGLRenderingContext, matrix: number[]) => void;
@@ -0,0 +1,14 @@
1
+ /// <reference types="react" />
2
+ import { Matrix4Tuple } from "three";
3
+ import { Coords } from "../../api/coords";
4
+ import { MapInstance } from "../generic-map";
5
+ interface SyncCameraFCProps extends Coords {
6
+ setOnRender?: (callback: () => (mx: Matrix4Tuple) => void) => void;
7
+ /** on `useFrame` it will manually render (used by `<Coordinates>`) */
8
+ manualRender?: boolean;
9
+ onReady?: () => void;
10
+ map: MapInstance;
11
+ }
12
+ /** React Component (FC) to sync the Three camera with the map provider */
13
+ export declare const SyncCameraFC: import("react").NamedExoticComponent<SyncCameraFCProps>;
14
+ export {};
@@ -1,8 +1,6 @@
1
1
  import { FromLngLat } from "./generic-map";
2
+ import { Coords } from "../api/coords";
2
3
  /** calculate Matrix4 from coordinates */
3
- export declare function coordsToMatrix({ longitude, latitude, altitude, fromLngLat }: {
4
- longitude: number;
5
- latitude: number;
6
- altitude: number;
4
+ export declare function coordsToMatrix({ longitude, latitude, altitude, fromLngLat }: Coords & {
7
5
  fromLngLat: FromLngLat;
8
6
  }): import("three").Matrix4Tuple;
@@ -0,0 +1 @@
1
+ export declare const earthRadius = 6378137;
@@ -0,0 +1,4 @@
1
+ import { Canvas } from "@react-three/fiber";
2
+ type Events = Parameters<typeof Canvas>[0]['events'];
3
+ export declare const events: Events;
4
+ export {};
@@ -0,0 +1,5 @@
1
+ import { coordsToMatrix } from "./coords-to-matrix";
2
+ type Props = Parameters<typeof coordsToMatrix>[0];
3
+ /** calculate matrix from coordinates */
4
+ export declare function useCoordsToMatrix({ latitude, longitude, altitude, fromLngLat }: Props): import("three").Matrix4Tuple;
5
+ export {};
@@ -1,5 +1,7 @@
1
- import { coordsToMatrix } from "./coords-to-matrix";
2
- type Props = Parameters<typeof coordsToMatrix>[0];
3
- /** calculate matrix from coordinates */
4
- export declare function useCoords({ latitude, longitude, altitude, fromLngLat }: Props): import("three").Matrix4Tuple;
5
- export {};
1
+ import { RootState } from "@react-three/fiber";
2
+ import { UseBoundStore } from 'zustand';
3
+ import { Coords } from "../api/coords";
4
+ export declare function useCoords(): Coords;
5
+ export declare function useSetCoords({ longitude, latitude, altitude }: Coords): void;
6
+ export declare function useSetRootCoords(store: UseBoundStore<RootState>, { longitude, latitude, altitude }: Coords): void;
7
+ export declare function setCoords(store: UseBoundStore<RootState>, coords: Coords): void;
@@ -0,0 +1,22 @@
1
+ import { RootState } from "@react-three/fiber";
2
+ import { Matrix4Tuple } from "three";
3
+ import { UseBoundStore } from 'zustand';
4
+ import { FromLngLat, MapInstance } from "./generic-map";
5
+ export interface R3M<T extends MapInstance = MapInstance> {
6
+ /** Map provider */
7
+ map: T;
8
+ /** view projection matrix coming from the map provider */
9
+ viewProjMx: Matrix4Tuple;
10
+ fromLngLat: FromLngLat;
11
+ }
12
+ export declare function useR3M<T extends MapInstance>(): R3M<T>;
13
+ /** init `useR3M` hook */
14
+ export declare function useInitR3M<T extends MapInstance>(props: {
15
+ map: T;
16
+ fromLngLat: FromLngLat;
17
+ }): void;
18
+ export declare function initR3M<T extends MapInstance>({ store, ...props }: {
19
+ map: T;
20
+ fromLngLat: FromLngLat;
21
+ store: UseBoundStore<RootState>;
22
+ }): R3M<T>;
@@ -1,5 +1,4 @@
1
1
  import type { Map } from 'mapbox-gl';
2
- export * from './api/canvas-props';
3
- export * from './api/coordinates';
2
+ export * from './api';
4
3
  export * from './mapbox/canvas';
5
- export declare const useMap: () => Map | undefined;
4
+ export declare const useMap: () => Map;