diff --git a/components/Layers/Model/index.tsx b/components/Layers/Model/index.tsx
new file mode 100644
index 00000000..8d39998e
--- /dev/null
+++ b/components/Layers/Model/index.tsx
@@ -0,0 +1,102 @@
+/* eslint-disable import/no-extraneous-dependencies */
+import * as THREE from 'three';
+import maplibregl from 'maplibre-gl';
+import { GLTFLoader } from 'three/examples/jsm/loaders/GLTFLoader';
+import { COORDS_EKATERINBURG } from 'constants/coords';
+
+// parameters to ensure the model is georeferenced correctly on the map
+const modelOrigin = COORDS_EKATERINBURG;
+const modelAltitude = 0;
+const modelRotate = [Math.PI / 2, 0, 0];
+
+const modelAsMercatorCoordinate = maplibregl.MercatorCoordinate.fromLngLat(
+ modelOrigin,
+ modelAltitude,
+);
+
+// transformation parameters to position, rotate and scale the 3D model onto the map
+const modelTransform = {
+ translateX: modelAsMercatorCoordinate.x,
+ translateY: modelAsMercatorCoordinate.y,
+ translateZ: modelAsMercatorCoordinate.z,
+ rotateX: modelRotate[0],
+ rotateY: modelRotate[1],
+ rotateZ: modelRotate[2],
+ /* Since our 3D model is in real world meters, a scale transform needs to be
+ * applied since the CustomLayerInterface expects units in MercatorCoordinates.
+ */
+ scale: modelAsMercatorCoordinate.meterInMercatorCoordinateUnits(),
+};
+
+// configuration of the custom layer for a 3D model per the CustomLayerInterface
+export const getModelLayer = (id: string, path: string) => ({
+ id,
+ type: 'custom',
+ renderingMode: '3d',
+ onAdd(map, gl) {
+ this.camera = new THREE.Camera();
+ this.scene = new THREE.Scene();
+
+ // create two three.js lights to illuminate the model
+ const directionalLight = new THREE.DirectionalLight(0xffffff);
+ directionalLight.position.set(0, -70, 100).normalize();
+ this.scene.add(directionalLight);
+
+ const directionalLight2 = new THREE.DirectionalLight(0xffffff);
+ directionalLight2.position.set(0, 70, 100).normalize();
+ this.scene.add(directionalLight2);
+
+ // use the three.js GLTF loader to add the 3D model to the three.js scene
+ const loader = new GLTFLoader();
+ loader.load(path, (gltf) => {
+ this.scene.add(gltf.scene);
+ });
+ this.map = map;
+
+ // use the MapLibre GL JS map canvas for three.js
+ this.renderer = new THREE.WebGLRenderer({
+ canvas: map.getCanvas(),
+ context: gl,
+ antialias: true,
+ });
+
+ this.renderer.autoClear = false;
+ },
+ render(gl, matrix) {
+ const rotationX = new THREE.Matrix4().makeRotationAxis(
+ new THREE.Vector3(1, 0, 0),
+ modelTransform.rotateX,
+ );
+ const rotationY = new THREE.Matrix4().makeRotationAxis(
+ new THREE.Vector3(0, 1, 0),
+ modelTransform.rotateY,
+ );
+ const rotationZ = new THREE.Matrix4().makeRotationAxis(
+ new THREE.Vector3(0, 0, 1),
+ modelTransform.rotateZ,
+ );
+
+ const m = new THREE.Matrix4().fromArray(matrix);
+ const l = new THREE.Matrix4()
+ .makeTranslation(
+ modelTransform.translateX,
+ modelTransform.translateY,
+ modelTransform.translateZ,
+ )
+ .scale(
+ new THREE.Vector3(
+ modelTransform.scale,
+ -modelTransform.scale,
+ modelTransform.scale,
+ ),
+ )
+ .multiply(rotationX)
+ .multiply(rotationY)
+ .multiply(rotationZ);
+
+ this.camera.projectionMatrix = m.multiply(l);
+ this.renderer.resetState();
+ this.renderer.render(this.scene, this.camera);
+ this.map.triggerRepaint();
+ },
+});
diff --git a/components/Map/Map.tsx b/components/Map/Map.tsx
index 58debece..cbaa2745 100644
--- a/components/Map/Map.tsx
+++ b/components/Map/Map.tsx
@@ -14,6 +14,7 @@ import { DesignCodeSource } from './layers/DesignCodeSource';
import { MapContext } from './providers/MapProvider';
import 'maplibre-gl/dist/maplibre-gl.css';
+import { ModelSource } from './layers/ModelSource';
function MapLayers() {
return (
@@ -23,6 +24,7 @@ function MapLayers() {
+
>
);
}
@@ -40,7 +42,7 @@ export function Map() {
pitch: 30,
}}
minZoom={11}
- maxZoom={20}
+ maxZoom={23}
// hash
style={{ width: '100vw', height: '100vh', color: 'black' }}
mapStyle="https://map-backend.netlify.app/style.json"
diff --git a/components/Map/layers/ModelSource.tsx b/components/Map/layers/ModelSource.tsx
new file mode 100644
index 00000000..029ebbb1
--- /dev/null
+++ b/components/Map/layers/ModelSource.tsx
@@ -0,0 +1,24 @@
+import React from 'react';
+import { useMap } from 'react-map-gl';
+import { getModelLayer } from 'components/Layers/Model';
+
+export function ModelSource() {
+ const ekbMap = useMap();
+
+ return (
+ {
+ const map = ekbMap?.current?.getMap?.();
+ map.addLayer(
+ // @ts-ignore
+ getModelLayer(
+ `3d-model-${Math.round(Math.random() * 1000)}`,
+ URL.createObjectURL(e.target.files[0]),
+ ),
+ );
+ }}
+ />
+ );
+}
diff --git a/package.json b/package.json
index b05eda3f..cbbfe661 100644
--- a/package.json
+++ b/package.json
@@ -18,10 +18,10 @@
"@types/lodash": "^4.14.197",
"@types/node": "20.5.4",
"@types/react": "^18.2.21",
+ "@types/three": "^0.155.1",
"classnames": "^2.3.2",
"ekb": "^1.1.4",
"framer-motion": "^10.16.1",
- "hls.js": "^1.4.10",
"lodash": "^4.17.21",
"mapbox-gl": "npm:empty-npm-package@1.0.0",
"maplibre-gl": "^3.3.0",
@@ -36,6 +36,7 @@
"react-modal-sheet": "^2.0.0",
"react-redux": "^8.1.2",
"redux": "^4.2.1",
+ "three": "^0.156.0",
"typescript": "^5.1.6"
},
"devDependencies": {
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index dacd3e19..bfccfe2a 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -17,6 +17,9 @@ dependencies:
'@types/react':
specifier: ^18.2.21
version: 18.2.21
+ '@types/three':
+ specifier: ^0.155.1
+ version: 0.155.1
classnames:
specifier: ^2.3.2
version: 2.3.2
@@ -26,9 +29,6 @@ dependencies:
framer-motion:
specifier: ^10.16.1
version: 10.16.1(react-dom@18.2.0)(react@18.2.0)
- hls.js:
- specifier: ^1.4.10
- version: 1.4.10
lodash:
specifier: ^4.17.21
version: 4.17.21
@@ -43,16 +43,16 @@ dependencies:
version: 13.4.19(@babel/core@7.20.12)(react-dom@18.2.0)(react@18.2.0)
postcss-flexbugs-fixes:
specifier: ^5.0.2
- version: 5.0.2(postcss@8.4.21)
+ version: 5.0.2(postcss@8.4.31)
postcss-mixins:
specifier: ^9.0.4
- version: 9.0.4(postcss@8.4.21)
+ version: 9.0.4(postcss@8.4.31)
postcss-nesting:
specifier: ^12.0.1
- version: 12.0.1(postcss@8.4.21)
+ version: 12.0.1(postcss@8.4.31)
postcss-preset-env:
specifier: ^9.1.4
- version: 9.2.0(postcss@8.4.21)
+ version: 9.2.0(postcss@8.4.31)
react:
specifier: 18.2.0
version: 18.2.0
@@ -71,6 +71,9 @@ dependencies:
redux:
specifier: ^4.2.1
version: 4.2.1
+ three:
+ specifier: ^0.156.0
+ version: 0.156.0
typescript:
specifier: ^5.1.6
version: 5.1.6
@@ -402,18 +405,18 @@ packages:
'@csstools/css-tokenizer': 2.2.1
dev: false
- /@csstools/postcss-cascade-layers@4.0.0(postcss@8.4.21):
+ /@csstools/postcss-cascade-layers@4.0.0(postcss@8.4.31):
resolution: {integrity: sha512-dVPVVqQG0FixjM9CG/+8eHTsCAxRKqmNh6H69IpruolPlnEF1611f2AoLK8TijTSAsqBSclKd4WHs1KUb/LdJw==}
engines: {node: ^14 || ^16 || >=18}
peerDependencies:
postcss: ^8.4
dependencies:
'@csstools/selector-specificity': 3.0.0(postcss-selector-parser@6.0.13)
- postcss: 8.4.21
+ postcss: 8.4.31
postcss-selector-parser: 6.0.13
dev: false
- /@csstools/postcss-color-function@3.0.7(postcss@8.4.21):
+ /@csstools/postcss-color-function@3.0.7(postcss@8.4.31):
resolution: {integrity: sha512-/PIB20G1TPCXmQlaJLWIYzTZRZpj6csT4ijgnshIj/kcmniIRroAfDa0xSWnfuO1eNo0NptIaPU7jzUukWn55Q==}
engines: {node: ^14 || ^16 || >=18}
peerDependencies:
@@ -422,11 +425,11 @@ packages:
'@csstools/css-color-parser': 1.4.0(@csstools/css-parser-algorithms@2.3.2)(@csstools/css-tokenizer@2.2.1)
'@csstools/css-parser-algorithms': 2.3.2(@csstools/css-tokenizer@2.2.1)
'@csstools/css-tokenizer': 2.2.1
- '@csstools/postcss-progressive-custom-properties': 3.0.2(postcss@8.4.21)
- postcss: 8.4.21
+ '@csstools/postcss-progressive-custom-properties': 3.0.2(postcss@8.4.31)
+ postcss: 8.4.31
dev: false
- /@csstools/postcss-color-mix-function@2.0.7(postcss@8.4.21):
+ /@csstools/postcss-color-mix-function@2.0.7(postcss@8.4.31):
resolution: {integrity: sha512-57/g8aGo5eKFjEeJMiRKh8Qq43K2rCyk5ZZTvJ34TNl4zUtYU5DvLkIkOnhCtL8/a4z9oMA42aOnFPddRrScUQ==}
engines: {node: ^14 || ^16 || >=18}
peerDependencies:
@@ -435,11 +438,11 @@ packages:
'@csstools/css-color-parser': 1.4.0(@csstools/css-parser-algorithms@2.3.2)(@csstools/css-tokenizer@2.2.1)
'@csstools/css-parser-algorithms': 2.3.2(@csstools/css-tokenizer@2.2.1)
'@csstools/css-tokenizer': 2.2.1
- '@csstools/postcss-progressive-custom-properties': 3.0.2(postcss@8.4.21)
- postcss: 8.4.21
+ '@csstools/postcss-progressive-custom-properties': 3.0.2(postcss@8.4.31)
+ postcss: 8.4.31
dev: false
- /@csstools/postcss-exponential-functions@1.0.1(postcss@8.4.21):
+ /@csstools/postcss-exponential-functions@1.0.1(postcss@8.4.31):
resolution: {integrity: sha512-ZLK2iSK4DUxeypGce2PnQSdYugUqDTwxnhNiq1o6OyKMNYgYs4eKbvEhFG8JKr1sJWbeqBi5jRr0017l2EWVvg==}
engines: {node: ^14 || ^16 || >=18}
peerDependencies:
@@ -448,20 +451,20 @@ packages:
'@csstools/css-calc': 1.1.4(@csstools/css-parser-algorithms@2.3.2)(@csstools/css-tokenizer@2.2.1)
'@csstools/css-parser-algorithms': 2.3.2(@csstools/css-tokenizer@2.2.1)
'@csstools/css-tokenizer': 2.2.1
- postcss: 8.4.21
+ postcss: 8.4.31
dev: false
- /@csstools/postcss-font-format-keywords@3.0.0(postcss@8.4.21):
+ /@csstools/postcss-font-format-keywords@3.0.0(postcss@8.4.31):
resolution: {integrity: sha512-ntkGj+1uDa/u6lpjPxnkPcjJn7ChO/Kcy08YxctOZI7vwtrdYvFhmE476dq8bj1yna306+jQ9gzXIG/SWfOaRg==}
engines: {node: ^14 || ^16 || >=18}
peerDependencies:
postcss: ^8.4
dependencies:
- postcss: 8.4.21
+ postcss: 8.4.31
postcss-value-parser: 4.2.0
dev: false
- /@csstools/postcss-gamut-mapping@1.0.0(postcss@8.4.21):
+ /@csstools/postcss-gamut-mapping@1.0.0(postcss@8.4.31):
resolution: {integrity: sha512-6UQyK8l9YaG5Ao5rBDcCnKHrLsHiQ1E0zeFQuqDJqEtinVzAPb/MwSw3TenZXL1Rnd7th3tb+4CBFHBXdW5tbQ==}
engines: {node: ^14 || ^16 || >=18}
peerDependencies:
@@ -470,10 +473,10 @@ packages:
'@csstools/css-color-parser': 1.4.0(@csstools/css-parser-algorithms@2.3.2)(@csstools/css-tokenizer@2.2.1)
'@csstools/css-parser-algorithms': 2.3.2(@csstools/css-tokenizer@2.2.1)
'@csstools/css-tokenizer': 2.2.1
- postcss: 8.4.21
+ postcss: 8.4.31
dev: false
- /@csstools/postcss-gradients-interpolation-method@4.0.7(postcss@8.4.21):
+ /@csstools/postcss-gradients-interpolation-method@4.0.7(postcss@8.4.31):
resolution: {integrity: sha512-GT1CzE/Tyr/ei4j5BwKESkHAgg+Gzys/0mAY7W+UiR+XrcYk5hDbOrE/YJIx1rflfO/7La1bDoZtA0YnLl4qNA==}
engines: {node: ^14 || ^16 || >=18}
peerDependencies:
@@ -482,11 +485,11 @@ packages:
'@csstools/css-color-parser': 1.4.0(@csstools/css-parser-algorithms@2.3.2)(@csstools/css-tokenizer@2.2.1)
'@csstools/css-parser-algorithms': 2.3.2(@csstools/css-tokenizer@2.2.1)
'@csstools/css-tokenizer': 2.2.1
- '@csstools/postcss-progressive-custom-properties': 3.0.2(postcss@8.4.21)
- postcss: 8.4.21
+ '@csstools/postcss-progressive-custom-properties': 3.0.2(postcss@8.4.31)
+ postcss: 8.4.31
dev: false
- /@csstools/postcss-hwb-function@3.0.6(postcss@8.4.21):
+ /@csstools/postcss-hwb-function@3.0.6(postcss@8.4.31):
resolution: {integrity: sha512-uQgWt2Ho2yy2S6qthWY7mD5v57NKxi6dD1NB8nAybU5bJSsm+hLXRGm3/zbOH4xNrqO3Cl60DFSNlSrUME3Xjg==}
engines: {node: ^14 || ^16 || >=18}
peerDependencies:
@@ -495,70 +498,70 @@ packages:
'@csstools/css-color-parser': 1.4.0(@csstools/css-parser-algorithms@2.3.2)(@csstools/css-tokenizer@2.2.1)
'@csstools/css-parser-algorithms': 2.3.2(@csstools/css-tokenizer@2.2.1)
'@csstools/css-tokenizer': 2.2.1
- postcss: 8.4.21
+ postcss: 8.4.31
dev: false
- /@csstools/postcss-ic-unit@3.0.2(postcss@8.4.21):
+ /@csstools/postcss-ic-unit@3.0.2(postcss@8.4.31):
resolution: {integrity: sha512-n28Er7W9qc48zNjJnvTKuVHY26/+6YlA9WzJRksIHiAWOMxSH5IksXkw7FpkIOd+jLi59BMrX/BWrZMgjkLBHg==}
engines: {node: ^14 || ^16 || >=18}
peerDependencies:
postcss: ^8.4
dependencies:
- '@csstools/postcss-progressive-custom-properties': 3.0.2(postcss@8.4.21)
- postcss: 8.4.21
+ '@csstools/postcss-progressive-custom-properties': 3.0.2(postcss@8.4.31)
+ postcss: 8.4.31
postcss-value-parser: 4.2.0
dev: false
- /@csstools/postcss-initial@1.0.0(postcss@8.4.21):
+ /@csstools/postcss-initial@1.0.0(postcss@8.4.31):
resolution: {integrity: sha512-1l7iHHjIl5qmVeGItugr4ZOlCREDP71mNKqoEyxlosIoiu3Os1nPWMHpuCvDLCLiWI/ONTOg3nzJh7gwHOrqUA==}
engines: {node: ^14 || ^16 || >=18}
peerDependencies:
postcss: ^8.4
dependencies:
- postcss: 8.4.21
+ postcss: 8.4.31
dev: false
- /@csstools/postcss-is-pseudo-class@4.0.3(postcss@8.4.21):
+ /@csstools/postcss-is-pseudo-class@4.0.3(postcss@8.4.31):
resolution: {integrity: sha512-/dt5M9Ty/x3Yiq0Nm/5PJJzwkVFchJgdjKVnryBPtoMCb9ohb/nDIJOwr/Wr3hK3FDs1EA1GE6PyRYsUmQPS8Q==}
engines: {node: ^14 || ^16 || >=18}
peerDependencies:
postcss: ^8.4
dependencies:
'@csstools/selector-specificity': 3.0.0(postcss-selector-parser@6.0.13)
- postcss: 8.4.21
+ postcss: 8.4.31
postcss-selector-parser: 6.0.13
dev: false
- /@csstools/postcss-logical-float-and-clear@2.0.0(postcss@8.4.21):
+ /@csstools/postcss-logical-float-and-clear@2.0.0(postcss@8.4.31):
resolution: {integrity: sha512-Wki4vxsF6icRvRz8eF9bPpAvwaAt0RHwhVOyzfoFg52XiIMjb6jcbHkGxwpJXP4DVrnFEwpwmrz5aTRqOW82kg==}
engines: {node: ^14 || ^16 || >=18}
peerDependencies:
postcss: ^8.4
dependencies:
- postcss: 8.4.21
+ postcss: 8.4.31
dev: false
- /@csstools/postcss-logical-resize@2.0.0(postcss@8.4.21):
+ /@csstools/postcss-logical-resize@2.0.0(postcss@8.4.31):
resolution: {integrity: sha512-lCQ1aX8c5+WI4t5EoYf3alTzJNNocMqTb+u1J9CINdDhFh1fjovqK+0aHalUHsNstZmzFPNzIkU4Mb3eM9U8SA==}
engines: {node: ^14 || ^16 || >=18}
peerDependencies:
postcss: ^8.4
dependencies:
- postcss: 8.4.21
+ postcss: 8.4.31
postcss-value-parser: 4.2.0
dev: false
- /@csstools/postcss-logical-viewport-units@2.0.3(postcss@8.4.21):
+ /@csstools/postcss-logical-viewport-units@2.0.3(postcss@8.4.31):
resolution: {integrity: sha512-xeVxqND5rlQyqLGdH7rX34sIm/JbbQKxpKQP8oD1YQqUHHCLQR9NUS57WqJKajxKN6AcNAMWJhb5LUH5RfPcyA==}
engines: {node: ^14 || ^16 || >=18}
peerDependencies:
postcss: ^8.4
dependencies:
'@csstools/css-tokenizer': 2.2.1
- postcss: 8.4.21
+ postcss: 8.4.31
dev: false
- /@csstools/postcss-media-minmax@1.1.0(postcss@8.4.21):
+ /@csstools/postcss-media-minmax@1.1.0(postcss@8.4.31):
resolution: {integrity: sha512-t5Li/DPC5QmW/6VFLfUvsw/4dNYYseWR0tOXDeJg/9EKUodBgNawz5tuk5vYKtNvoj+Q08odMuXcpS5YJj0AFA==}
engines: {node: ^14 || ^16 || >=18}
peerDependencies:
@@ -568,10 +571,10 @@ packages:
'@csstools/css-parser-algorithms': 2.3.2(@csstools/css-tokenizer@2.2.1)
'@csstools/css-tokenizer': 2.2.1
'@csstools/media-query-list-parser': 2.1.5(@csstools/css-parser-algorithms@2.3.2)(@csstools/css-tokenizer@2.2.1)
- postcss: 8.4.21
+ postcss: 8.4.31
dev: false
- /@csstools/postcss-media-queries-aspect-ratio-number-values@2.0.3(postcss@8.4.21):
+ /@csstools/postcss-media-queries-aspect-ratio-number-values@2.0.3(postcss@8.4.31):
resolution: {integrity: sha512-IPL8AvnwMYW+cWtp+j8cW3MFN0RyXNT4hLOvs6Rf2N+NcbvXhSyKxZuE3W9Cv4KjaNoNoGx1d0UhT6tktq6tUw==}
engines: {node: ^14 || ^16 || >=18}
peerDependencies:
@@ -580,30 +583,30 @@ packages:
'@csstools/css-parser-algorithms': 2.3.2(@csstools/css-tokenizer@2.2.1)
'@csstools/css-tokenizer': 2.2.1
'@csstools/media-query-list-parser': 2.1.5(@csstools/css-parser-algorithms@2.3.2)(@csstools/css-tokenizer@2.2.1)
- postcss: 8.4.21
+ postcss: 8.4.31
dev: false
- /@csstools/postcss-nested-calc@3.0.0(postcss@8.4.21):
+ /@csstools/postcss-nested-calc@3.0.0(postcss@8.4.31):
resolution: {integrity: sha512-HsB66aDWAouOwD/GcfDTS0a7wCuVWaTpXcjl5VKP0XvFxDiU+r0T8FG7xgb6ovZNZ+qzvGIwRM+CLHhDgXrYgQ==}
engines: {node: ^14 || ^16 || >=18}
peerDependencies:
postcss: ^8.4
dependencies:
- postcss: 8.4.21
+ postcss: 8.4.31
postcss-value-parser: 4.2.0
dev: false
- /@csstools/postcss-normalize-display-values@3.0.1(postcss@8.4.21):
+ /@csstools/postcss-normalize-display-values@3.0.1(postcss@8.4.31):
resolution: {integrity: sha512-nUvRxI+ALJwkxZdPU4EDyuM380vP91sAGvI3jAOHs/sr3jfcCOzLkY6xKI1Mr526kZ3RivmMoYM/xq+XFyE/bw==}
engines: {node: ^14 || ^16 || >=18}
peerDependencies:
postcss: ^8.4
dependencies:
- postcss: 8.4.21
+ postcss: 8.4.31
postcss-value-parser: 4.2.0
dev: false
- /@csstools/postcss-oklab-function@3.0.7(postcss@8.4.21):
+ /@csstools/postcss-oklab-function@3.0.7(postcss@8.4.31):
resolution: {integrity: sha512-vBFTQD3CARB3u/XIGO44wWbcO7xG/4GsYqJlcPuUGRSK8mtxes6n4vvNFlIByyAZy2k4d4RY63nyvTbMpeNTaQ==}
engines: {node: ^14 || ^16 || >=18}
peerDependencies:
@@ -612,21 +615,21 @@ packages:
'@csstools/css-color-parser': 1.4.0(@csstools/css-parser-algorithms@2.3.2)(@csstools/css-tokenizer@2.2.1)
'@csstools/css-parser-algorithms': 2.3.2(@csstools/css-tokenizer@2.2.1)
'@csstools/css-tokenizer': 2.2.1
- '@csstools/postcss-progressive-custom-properties': 3.0.2(postcss@8.4.21)
- postcss: 8.4.21
+ '@csstools/postcss-progressive-custom-properties': 3.0.2(postcss@8.4.31)
+ postcss: 8.4.31
dev: false
- /@csstools/postcss-progressive-custom-properties@3.0.2(postcss@8.4.21):
+ /@csstools/postcss-progressive-custom-properties@3.0.2(postcss@8.4.31):
resolution: {integrity: sha512-YEvTozk1SxnV/PGL5DllBVDuLQ+jiQhyCSQiZJ6CwBMU5JQ9hFde3i1qqzZHuclZfptjrU0JjlX4ePsOhxNzHw==}
engines: {node: ^14 || ^16 || >=18}
peerDependencies:
postcss: ^8.4
dependencies:
- postcss: 8.4.21
+ postcss: 8.4.31
postcss-value-parser: 4.2.0
dev: false
- /@csstools/postcss-relative-color-syntax@2.0.7(postcss@8.4.21):
+ /@csstools/postcss-relative-color-syntax@2.0.7(postcss@8.4.31):
resolution: {integrity: sha512-2AiFbJSVF4EyymLxme4JzSrbXykHolx8DdZECHjYKMhoulhKLltx5ccYgtrK3BmXGd3v3nJrWFCc8JM8bjuiOg==}
engines: {node: ^14 || ^16 || >=18}
peerDependencies:
@@ -635,21 +638,21 @@ packages:
'@csstools/css-color-parser': 1.4.0(@csstools/css-parser-algorithms@2.3.2)(@csstools/css-tokenizer@2.2.1)
'@csstools/css-parser-algorithms': 2.3.2(@csstools/css-tokenizer@2.2.1)
'@csstools/css-tokenizer': 2.2.1
- '@csstools/postcss-progressive-custom-properties': 3.0.2(postcss@8.4.21)
- postcss: 8.4.21
+ '@csstools/postcss-progressive-custom-properties': 3.0.2(postcss@8.4.31)
+ postcss: 8.4.31
dev: false
- /@csstools/postcss-scope-pseudo-class@3.0.0(postcss@8.4.21):
+ /@csstools/postcss-scope-pseudo-class@3.0.0(postcss@8.4.31):
resolution: {integrity: sha512-GFNVsD97OuEcfHmcT0/DAZWAvTM/FFBDQndIOLawNc1Wq8YqpZwBdHa063Lq+Irk7azygTT+Iinyg3Lt76p7rg==}
engines: {node: ^14 || ^16 || >=18}
peerDependencies:
postcss: ^8.4
dependencies:
- postcss: 8.4.21
+ postcss: 8.4.31
postcss-selector-parser: 6.0.13
dev: false
- /@csstools/postcss-stepped-value-functions@3.0.2(postcss@8.4.21):
+ /@csstools/postcss-stepped-value-functions@3.0.2(postcss@8.4.31):
resolution: {integrity: sha512-I3wX44MZVv+tDuWfrd3BTvRB/YRIM2F5v1MBtTI89sxpFn47mNpTwpPYUOGPVCgKlRDfZSlxIUYhUQmqRQZZFQ==}
engines: {node: ^14 || ^16 || >=18}
peerDependencies:
@@ -658,21 +661,21 @@ packages:
'@csstools/css-calc': 1.1.4(@csstools/css-parser-algorithms@2.3.2)(@csstools/css-tokenizer@2.2.1)
'@csstools/css-parser-algorithms': 2.3.2(@csstools/css-tokenizer@2.2.1)
'@csstools/css-tokenizer': 2.2.1
- postcss: 8.4.21
+ postcss: 8.4.31
dev: false
- /@csstools/postcss-text-decoration-shorthand@3.0.3(postcss@8.4.21):
+ /@csstools/postcss-text-decoration-shorthand@3.0.3(postcss@8.4.31):
resolution: {integrity: sha512-d5J9m49HhqXRcw1S6vTZuviHi/iknUKGjBpChiNK1ARg9sSa3b8m5lsWz5Izs8ISORZdv2bZRwbw5Z2R6gQ9kQ==}
engines: {node: ^14 || ^16 || >=18}
peerDependencies:
postcss: ^8.4
dependencies:
'@csstools/color-helpers': 3.0.2
- postcss: 8.4.21
+ postcss: 8.4.31
postcss-value-parser: 4.2.0
dev: false
- /@csstools/postcss-trigonometric-functions@3.0.2(postcss@8.4.21):
+ /@csstools/postcss-trigonometric-functions@3.0.2(postcss@8.4.31):
resolution: {integrity: sha512-AwzNhF4QOKaLOKvMljwwFkeYXwufhRO15G+kKohHkyoNOL75xWkN+W2Y9ik9tSeAyDv+cYNlYaF+o/a79WjVjg==}
engines: {node: ^14 || ^16 || >=18}
peerDependencies:
@@ -681,16 +684,16 @@ packages:
'@csstools/css-calc': 1.1.4(@csstools/css-parser-algorithms@2.3.2)(@csstools/css-tokenizer@2.2.1)
'@csstools/css-parser-algorithms': 2.3.2(@csstools/css-tokenizer@2.2.1)
'@csstools/css-tokenizer': 2.2.1
- postcss: 8.4.21
+ postcss: 8.4.31
dev: false
- /@csstools/postcss-unset-value@3.0.0(postcss@8.4.21):
+ /@csstools/postcss-unset-value@3.0.0(postcss@8.4.31):
resolution: {integrity: sha512-P0JD1WHh3avVyKKRKjd0dZIjCEeaBer8t1BbwGMUDtSZaLhXlLNBqZ8KkqHzYWXOJgHleXAny2/sx8LYl6qhEA==}
engines: {node: ^14 || ^16 || >=18}
peerDependencies:
postcss: ^8.4
dependencies:
- postcss: 8.4.21
+ postcss: 8.4.31
dev: false
/@csstools/selector-specificity@2.1.1(postcss-selector-parser@6.0.13)(postcss@8.4.21):
@@ -1416,6 +1419,10 @@ packages:
tslib: 2.6.0
dev: false
+ /@tweenjs/tween.js@18.6.4:
+ resolution: {integrity: sha512-lB9lMjuqjtuJrx7/kOkqQBtllspPIN+96OvTCeJ2j5FEzinoAXTdAMFnDAQT1KVPRlnYfBrqxtqP66vDM40xxQ==}
+ dev: false
+
/@types/estree@1.0.0:
resolution: {integrity: sha512-WulqXMDUTYAXCjZnk6JtIHPigp55cVtDgDrO2gHRwhyJto21+1zbVCtOYB2L1F9w4qCQ0rOGWBnBe0FNTiEJIQ==}
dev: false
@@ -1493,16 +1500,35 @@ packages:
resolution: {integrity: sha512-G8hZ6XJiHnuhQKR7ZmysCeJWE08o8T0AXtk5darsCaTVsYZhhgUrq53jizaR2FvsoeCwJhlmwTjkXBY5Pn/ZHw==}
dev: true
+ /@types/stats.js@0.17.0:
+ resolution: {integrity: sha512-9w+a7bR8PeB0dCT/HBULU2fMqf6BAzvKbxFboYhmDtDkKPiyXYbjoe2auwsXlEFI7CFNMF1dCv3dFH5Poy9R1w==}
+ dev: false
+
/@types/supercluster@7.1.0:
resolution: {integrity: sha512-6JapQ2GmEkH66r23BK49I+u6zczVDGTtiJEVvKDYZVSm/vepWaJuTq6BXzJ6I4agG5s8vA1KM7m/gXWDg03O4Q==}
dependencies:
'@types/geojson': 7946.0.10
dev: false
+ /@types/three@0.155.1:
+ resolution: {integrity: sha512-uNUwnz/wWRxahjIqTtDYQ1qdE1R1py21obxfuILkT+kKrjocMwRLQQA1l8nMxfQU7VXb7CXu04ucMo8OqZt4ZA==}
+ dependencies:
+ '@tweenjs/tween.js': 18.6.4
+ '@types/stats.js': 0.17.0
+ '@types/webxr': 0.5.4
+ fflate: 0.6.10
+ lil-gui: 0.17.0
+ meshoptimizer: 0.18.1
+ dev: false
+
/@types/use-sync-external-store@0.0.3:
resolution: {integrity: sha512-EwmlvuaxPNej9+T4v5AuBPJa2x2UOJVdjCtDHgcDqitUeOtjnJKJ+apYjVcAoBEMjKW1VVFGZLUb5+qqa09XFA==}
dev: false
+ /@types/webxr@0.5.4:
+ resolution: {integrity: sha512-41gfGLTtqXZhcmoDlLDHqMJDuwAMwhHwXf9Q2job3TUBsvkNfPNI/3IWVEtLH4tyY1ElWtfwIaoNeqeEX238/Q==}
+ dev: false
+
/@typescript-eslint/eslint-plugin@6.4.1(@typescript-eslint/parser@6.4.1)(eslint@8.47.0)(typescript@5.1.6):
resolution: {integrity: sha512-3F5PtBzUW0dYlq77Lcqo13fv+58KDwUib3BddilE8ajPJT+faGgxmI9Sw+I8ZS22BYwoir9ZhNXcLi+S+I2bkw==}
engines: {node: ^16.0.0 || >=18.0.0}
@@ -1815,7 +1841,7 @@ packages:
postcss-value-parser: 4.2.0
dev: false
- /autoprefixer@10.4.16(postcss@8.4.21):
+ /autoprefixer@10.4.16(postcss@8.4.31):
resolution: {integrity: sha512-7vd3UC6xKp0HLfua5IjZlcXvGAGy7cBAXTg2lyQ/8WpNhd6SiZ8Be+xm3FyBSYJx5GKcpRCzBh7RH4/0dnY+uQ==}
engines: {node: ^10 || ^12 || >=14}
hasBin: true
@@ -1827,7 +1853,7 @@ packages:
fraction.js: 4.3.7
normalize-range: 0.1.2
picocolors: 1.0.0
- postcss: 8.4.21
+ postcss: 8.4.31
postcss-value-parser: 4.2.0
dev: false
@@ -2066,35 +2092,35 @@ packages:
which: 2.0.2
dev: true
- /css-blank-pseudo@6.0.0(postcss@8.4.21):
+ /css-blank-pseudo@6.0.0(postcss@8.4.31):
resolution: {integrity: sha512-VbfLlOWO7sBHBTn6pwDQzc07Z0SDydgDBfNfCE0nvrehdBNv9RKsuupIRa/qal0+fBZhAALyQDPMKz5lnvcchw==}
engines: {node: ^14 || ^16 || >=18}
peerDependencies:
postcss: ^8.4
dependencies:
- postcss: 8.4.21
+ postcss: 8.4.31
postcss-selector-parser: 6.0.13
dev: false
- /css-has-pseudo@6.0.0(postcss@8.4.21):
+ /css-has-pseudo@6.0.0(postcss@8.4.31):
resolution: {integrity: sha512-X+r+JBuoO37FBOWVNhVJhxtSBUFHgHbrcc0CjFT28JEdOw1qaDwABv/uunyodUuSy2hMPe9j/HjssxSlvUmKjg==}
engines: {node: ^14 || ^16 || >=18}
peerDependencies:
postcss: ^8.4
dependencies:
'@csstools/selector-specificity': 3.0.0(postcss-selector-parser@6.0.13)
- postcss: 8.4.21
+ postcss: 8.4.31
postcss-selector-parser: 6.0.13
postcss-value-parser: 4.2.0
dev: false
- /css-prefers-color-scheme@9.0.0(postcss@8.4.21):
+ /css-prefers-color-scheme@9.0.0(postcss@8.4.31):
resolution: {integrity: sha512-03QGAk/FXIRseDdLb7XAiu6gidQ0Nd8945xuM7VFVPpc6goJsG9uIO8xQjTxwbPdPIIV4o4AJoOJyt8gwDl67g==}
engines: {node: ^14 || ^16 || >=18}
peerDependencies:
postcss: ^8.4
dependencies:
- postcss: 8.4.21
+ postcss: 8.4.31
dev: false
/cssdb@7.8.0:
@@ -2917,6 +2943,10 @@ packages:
dependencies:
reusify: 1.0.4
+ /fflate@0.6.10:
+ resolution: {integrity: sha512-IQrh3lEPM93wVCEczc9SaAOvkmcoQn/G8Bo1e8ZPlY3X3bnAxWaBdvTdvM1hP62iZp0BXWDy4vTAy4fF0+Dlpg==}
+ dev: false
+
/file-entry-cache@6.0.1:
resolution: {integrity: sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==}
engines: {node: ^10.12.0 || >=12.0.0}
@@ -3211,10 +3241,6 @@ packages:
function-bind: 1.1.1
dev: true
- /hls.js@1.4.10:
- resolution: {integrity: sha512-wAVSj4Fm2MqOHy5+BlYnlKxXvJlv5IuZHjlzHu18QmjRzSDFQiUDWdHs5+NsFMQrgKEBwuWDcyvaMC9dUzJ5Uw==}
- dev: false
-
/hoist-non-react-statics@3.3.2:
resolution: {integrity: sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==}
dependencies:
@@ -3633,6 +3659,10 @@ packages:
type-check: 0.4.0
dev: true
+ /lil-gui@0.17.0:
+ resolution: {integrity: sha512-MVBHmgY+uEbmJNApAaPbtvNh1RCAeMnKym82SBjtp5rODTYKWtM+MXHCifLe2H2Ti1HuBGBtK/5SyG4ShQ3pUQ==}
+ dev: false
+
/lilconfig@2.1.0:
resolution: {integrity: sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==}
engines: {node: '>=10'}
@@ -3763,6 +3793,10 @@ packages:
resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==}
engines: {node: '>= 8'}
+ /meshoptimizer@0.18.1:
+ resolution: {integrity: sha512-ZhoIoL7TNV4s5B6+rx5mC//fw8/POGyNxS/DZyCJeiZ12ScLfVwRE/GfsxwiTkMYYD5DmK2/JXnEVXqL4rF+Sw==}
+ dev: false
+
/micromatch@4.0.5:
resolution: {integrity: sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==}
engines: {node: '>=8.6'}
@@ -4068,58 +4102,58 @@ packages:
hasBin: true
dev: true
- /postcss-attribute-case-insensitive@6.0.2(postcss@8.4.21):
+ /postcss-attribute-case-insensitive@6.0.2(postcss@8.4.31):
resolution: {integrity: sha512-IRuCwwAAQbgaLhxQdQcIIK0dCVXg3XDUnzgKD8iwdiYdwU4rMWRWyl/W9/0nA4ihVpq5pyALiHB2veBJ0292pw==}
engines: {node: ^14 || ^16 || >=18}
peerDependencies:
postcss: ^8.4
dependencies:
- postcss: 8.4.21
+ postcss: 8.4.31
postcss-selector-parser: 6.0.13
dev: false
- /postcss-clamp@4.1.0(postcss@8.4.21):
+ /postcss-clamp@4.1.0(postcss@8.4.31):
resolution: {integrity: sha512-ry4b1Llo/9zz+PKC+030KUnPITTJAHeOwjfAyyB60eT0AorGLdzp52s31OsPRHRf8NchkgFoG2y6fCfn1IV1Ow==}
engines: {node: '>=7.6.0'}
peerDependencies:
postcss: ^8.4.6
dependencies:
- postcss: 8.4.21
+ postcss: 8.4.31
postcss-value-parser: 4.2.0
dev: false
- /postcss-color-functional-notation@6.0.2(postcss@8.4.21):
+ /postcss-color-functional-notation@6.0.2(postcss@8.4.31):
resolution: {integrity: sha512-FsjSmlSufuiFBsIqQ++VxFmvX7zKndZpBkHmfXr4wqhvzM92FTEkAh703iqWTl1U3faTgqioIqCbfqdWiFVwtw==}
engines: {node: ^14 || ^16 || >=18}
peerDependencies:
postcss: ^8.4
dependencies:
- '@csstools/postcss-progressive-custom-properties': 3.0.2(postcss@8.4.21)
- postcss: 8.4.21
+ '@csstools/postcss-progressive-custom-properties': 3.0.2(postcss@8.4.31)
+ postcss: 8.4.31
postcss-value-parser: 4.2.0
dev: false
- /postcss-color-hex-alpha@9.0.2(postcss@8.4.21):
+ /postcss-color-hex-alpha@9.0.2(postcss@8.4.31):
resolution: {integrity: sha512-SfPjgr//VQ/DOCf80STIAsdAs7sbIbxATvVmd+Ec7JvR8onz9pjawhq3BJM3Pie40EE3TyB0P6hft16D33Nlyg==}
engines: {node: ^14 || ^16 || >=18}
peerDependencies:
postcss: ^8.4
dependencies:
- postcss: 8.4.21
+ postcss: 8.4.31
postcss-value-parser: 4.2.0
dev: false
- /postcss-color-rebeccapurple@9.0.1(postcss@8.4.21):
+ /postcss-color-rebeccapurple@9.0.1(postcss@8.4.31):
resolution: {integrity: sha512-ds4cq5BjRieizVb2PnvbJ0omg9VCo2/KzluvoFZbxuGpsGJ5BQSD93CHBooinEtangCM5YqUOerGDl4xGmOb6Q==}
engines: {node: ^14 || ^16 || >=18}
peerDependencies:
postcss: ^8.4
dependencies:
- postcss: 8.4.21
+ postcss: 8.4.31
postcss-value-parser: 4.2.0
dev: false
- /postcss-custom-media@10.0.2(postcss@8.4.21):
+ /postcss-custom-media@10.0.2(postcss@8.4.31):
resolution: {integrity: sha512-zcEFNRmDm2fZvTPdI1pIW3W//UruMcLosmMiCdpQnrCsTRzWlKQPYMa1ud9auL0BmrryKK1+JjIGn19K0UjO/w==}
engines: {node: ^14 || ^16 || >=18}
peerDependencies:
@@ -4129,10 +4163,10 @@ packages:
'@csstools/css-parser-algorithms': 2.3.2(@csstools/css-tokenizer@2.2.1)
'@csstools/css-tokenizer': 2.2.1
'@csstools/media-query-list-parser': 2.1.5(@csstools/css-parser-algorithms@2.3.2)(@csstools/css-tokenizer@2.2.1)
- postcss: 8.4.21
+ postcss: 8.4.31
dev: false
- /postcss-custom-properties@13.3.2(postcss@8.4.21):
+ /postcss-custom-properties@13.3.2(postcss@8.4.31):
resolution: {integrity: sha512-2Coszybpo8lpLY24vy2CYv9AasiZ39/bs8Imv0pWMq55Gl8NWzfc24OAo3zIX7rc6uUJAqESnVOMZ6V6lpMjJA==}
engines: {node: ^14 || ^16 || >=18}
peerDependencies:
@@ -4141,11 +4175,11 @@ packages:
'@csstools/cascade-layer-name-parser': 1.0.5(@csstools/css-parser-algorithms@2.3.2)(@csstools/css-tokenizer@2.2.1)
'@csstools/css-parser-algorithms': 2.3.2(@csstools/css-tokenizer@2.2.1)
'@csstools/css-tokenizer': 2.2.1
- postcss: 8.4.21
+ postcss: 8.4.31
postcss-value-parser: 4.2.0
dev: false
- /postcss-custom-selectors@7.1.6(postcss@8.4.21):
+ /postcss-custom-selectors@7.1.6(postcss@8.4.31):
resolution: {integrity: sha512-svsjWRaxqL3vAzv71dV0/65P24/FB8TbPX+lWyyf9SZ7aZm4S4NhCn7N3Bg+Z5sZunG3FS8xQ80LrCU9hb37cw==}
engines: {node: ^14 || ^16 || >=18}
peerDependencies:
@@ -4154,97 +4188,97 @@ packages:
'@csstools/cascade-layer-name-parser': 1.0.5(@csstools/css-parser-algorithms@2.3.2)(@csstools/css-tokenizer@2.2.1)
'@csstools/css-parser-algorithms': 2.3.2(@csstools/css-tokenizer@2.2.1)
'@csstools/css-tokenizer': 2.2.1
- postcss: 8.4.21
+ postcss: 8.4.31
postcss-selector-parser: 6.0.13
dev: false
- /postcss-dir-pseudo-class@8.0.0(postcss@8.4.21):
+ /postcss-dir-pseudo-class@8.0.0(postcss@8.4.31):
resolution: {integrity: sha512-Oy5BBi0dWPwij/IA+yDYj+/OBMQ9EPqAzTHeSNUYrUWdll/PRJmcbiUj0MNcsBi681I1gcSTLvMERPaXzdbvJg==}
engines: {node: ^14 || ^16 || >=18}
peerDependencies:
postcss: ^8.4
dependencies:
- postcss: 8.4.21
+ postcss: 8.4.31
postcss-selector-parser: 6.0.13
dev: false
- /postcss-double-position-gradients@5.0.2(postcss@8.4.21):
+ /postcss-double-position-gradients@5.0.2(postcss@8.4.31):
resolution: {integrity: sha512-KTbvdOOy8z8zb0BTkEg4/1vqlRlApdvjw8/pFoehgQl0WVO+fezDGlvo0B8xRA+XccA7ohkQCULKNsiNOx70Cw==}
engines: {node: ^14 || ^16 || >=18}
peerDependencies:
postcss: ^8.4
dependencies:
- '@csstools/postcss-progressive-custom-properties': 3.0.2(postcss@8.4.21)
- postcss: 8.4.21
+ '@csstools/postcss-progressive-custom-properties': 3.0.2(postcss@8.4.31)
+ postcss: 8.4.31
postcss-value-parser: 4.2.0
dev: false
- /postcss-flexbugs-fixes@5.0.2(postcss@8.4.21):
+ /postcss-flexbugs-fixes@5.0.2(postcss@8.4.31):
resolution: {integrity: sha512-18f9voByak7bTktR2QgDveglpn9DTbBWPUzSOe9g0N4WR/2eSt6Vrcbf0hmspvMI6YWGywz6B9f7jzpFNJJgnQ==}
peerDependencies:
postcss: ^8.1.4
dependencies:
- postcss: 8.4.21
+ postcss: 8.4.31
dev: false
- /postcss-focus-visible@9.0.0(postcss@8.4.21):
+ /postcss-focus-visible@9.0.0(postcss@8.4.31):
resolution: {integrity: sha512-zA4TbVaIaT8npZBEROhZmlc+GBKE8AELPHXE7i4TmIUEQhw/P/mSJfY9t6tBzpQ1rABeGtEOHYrW4SboQeONMQ==}
engines: {node: ^14 || ^16 || >=18}
peerDependencies:
postcss: ^8.4
dependencies:
- postcss: 8.4.21
+ postcss: 8.4.31
postcss-selector-parser: 6.0.13
dev: false
- /postcss-focus-within@8.0.0(postcss@8.4.21):
+ /postcss-focus-within@8.0.0(postcss@8.4.31):
resolution: {integrity: sha512-E7+J9nuQzZaA37D/MUZMX1K817RZGDab8qw6pFwzAkDd/QtlWJ9/WTKmzewNiuxzeq6WWY7ATiRePVoDKp+DnA==}
engines: {node: ^14 || ^16 || >=18}
peerDependencies:
postcss: ^8.4
dependencies:
- postcss: 8.4.21
+ postcss: 8.4.31
postcss-selector-parser: 6.0.13
dev: false
- /postcss-font-variant@5.0.0(postcss@8.4.21):
+ /postcss-font-variant@5.0.0(postcss@8.4.31):
resolution: {integrity: sha512-1fmkBaCALD72CK2a9i468mA/+tr9/1cBxRRMXOUaZqO43oWPR5imcyPjXwuv7PXbCid4ndlP5zWhidQVVa3hmA==}
peerDependencies:
postcss: ^8.1.0
dependencies:
- postcss: 8.4.21
+ postcss: 8.4.31
dev: false
- /postcss-gap-properties@5.0.0(postcss@8.4.21):
+ /postcss-gap-properties@5.0.0(postcss@8.4.31):
resolution: {integrity: sha512-YjsEEL6890P7MCv6fch6Am1yq0EhQCJMXyT4LBohiu87+4/WqR7y5W3RIv53WdA901hhytgRvjlrAhibhW4qsA==}
engines: {node: ^14 || ^16 || >=18}
peerDependencies:
postcss: ^8.4
dependencies:
- postcss: 8.4.21
+ postcss: 8.4.31
dev: false
- /postcss-image-set-function@6.0.1(postcss@8.4.21):
+ /postcss-image-set-function@6.0.1(postcss@8.4.31):
resolution: {integrity: sha512-VlZncC9hhZ5tg0JllY4g6Z28BeoPO8DIkelioEEkXL0AA0IORlqYpTi2L8TUnl4YQrlwvBgxVy+mdZJw5R/cIQ==}
engines: {node: ^14 || ^16 || >=18}
peerDependencies:
postcss: ^8.4
dependencies:
- postcss: 8.4.21
+ postcss: 8.4.31
postcss-value-parser: 4.2.0
dev: false
- /postcss-js@4.0.1(postcss@8.4.21):
+ /postcss-js@4.0.1(postcss@8.4.31):
resolution: {integrity: sha512-dDLF8pEO191hJMtlHFPRa8xsizHaM82MLfNkUHdUtVEV3tgTp5oj+8qbEqYM57SLfc74KSbw//4SeJma2LRVIw==}
engines: {node: ^12 || ^14 || >= 16}
peerDependencies:
postcss: ^8.4.21
dependencies:
camelcase-css: 2.0.1
- postcss: 8.4.21
+ postcss: 8.4.31
dev: false
- /postcss-lab-function@6.0.7(postcss@8.4.21):
+ /postcss-lab-function@6.0.7(postcss@8.4.31):
resolution: {integrity: sha512-4d1lhDVPukHFqkMv4G5vVcK+tgY52vwb5uR1SWKOaO5389r2q8fMxBWuXSW+YtbCOEGP0/X9KERi9E9le2pJuw==}
engines: {node: ^14 || ^16 || >=18}
peerDependencies:
@@ -4253,31 +4287,31 @@ packages:
'@csstools/css-color-parser': 1.4.0(@csstools/css-parser-algorithms@2.3.2)(@csstools/css-tokenizer@2.2.1)
'@csstools/css-parser-algorithms': 2.3.2(@csstools/css-tokenizer@2.2.1)
'@csstools/css-tokenizer': 2.2.1
- '@csstools/postcss-progressive-custom-properties': 3.0.2(postcss@8.4.21)
- postcss: 8.4.21
+ '@csstools/postcss-progressive-custom-properties': 3.0.2(postcss@8.4.31)
+ postcss: 8.4.31
dev: false
- /postcss-logical@7.0.0(postcss@8.4.21):
+ /postcss-logical@7.0.0(postcss@8.4.31):
resolution: {integrity: sha512-zYf3vHkoW82f5UZTEXChTJvH49Yl9X37axTZsJGxrCG2kOUwtaAoz9E7tqYg0lsIoJLybaL8fk/2mOi81zVIUw==}
engines: {node: ^14 || ^16 || >=18}
peerDependencies:
postcss: ^8.4
dependencies:
- postcss: 8.4.21
+ postcss: 8.4.31
postcss-value-parser: 4.2.0
dev: false
- /postcss-mixins@9.0.4(postcss@8.4.21):
+ /postcss-mixins@9.0.4(postcss@8.4.31):
resolution: {integrity: sha512-XVq5jwQJDRu5M1XGkdpgASqLk37OqkH4JCFDXl/Dn7janOJjCTEKL+36cnRVy7bMtoBzALfO7bV7nTIsFnUWLA==}
engines: {node: '>=14.0'}
peerDependencies:
postcss: ^8.2.14
dependencies:
fast-glob: 3.3.0
- postcss: 8.4.21
- postcss-js: 4.0.1(postcss@8.4.21)
- postcss-simple-vars: 7.0.1(postcss@8.4.21)
- sugarss: 4.0.1(postcss@8.4.21)
+ postcss: 8.4.31
+ postcss-js: 4.0.1(postcss@8.4.31)
+ postcss-simple-vars: 7.0.1(postcss@8.4.31)
+ sugarss: 4.0.1(postcss@8.4.31)
dev: false
/postcss-nesting@11.2.2(postcss@8.4.21):
@@ -4291,146 +4325,146 @@ packages:
postcss-selector-parser: 6.0.13
dev: false
- /postcss-nesting@12.0.1(postcss@8.4.21):
+ /postcss-nesting@12.0.1(postcss@8.4.31):
resolution: {integrity: sha512-6LCqCWP9pqwXw/njMvNK0hGY44Fxc4B2EsGbn6xDcxbNRzP8GYoxT7yabVVMLrX3quqOJ9hg2jYMsnkedOf8pA==}
engines: {node: ^14 || ^16 || >=18}
peerDependencies:
postcss: ^8.4
dependencies:
'@csstools/selector-specificity': 3.0.0(postcss-selector-parser@6.0.13)
- postcss: 8.4.21
+ postcss: 8.4.31
postcss-selector-parser: 6.0.13
dev: false
- /postcss-opacity-percentage@2.0.0(postcss@8.4.21):
+ /postcss-opacity-percentage@2.0.0(postcss@8.4.31):
resolution: {integrity: sha512-lyDrCOtntq5Y1JZpBFzIWm2wG9kbEdujpNt4NLannF+J9c8CgFIzPa80YQfdza+Y+yFfzbYj/rfoOsYsooUWTQ==}
engines: {node: ^14 || ^16 || >=18}
peerDependencies:
postcss: ^8.2
dependencies:
- postcss: 8.4.21
+ postcss: 8.4.31
dev: false
- /postcss-overflow-shorthand@5.0.0(postcss@8.4.21):
+ /postcss-overflow-shorthand@5.0.0(postcss@8.4.31):
resolution: {integrity: sha512-2rlxDyeSics/hC2FuMdPnWiP9WUPZ5x7FTuArXLFVpaSQ2woPSfZS4RD59HuEokbZhs/wPUQJ1E3MT6zVv94MQ==}
engines: {node: ^14 || ^16 || >=18}
peerDependencies:
postcss: ^8.4
dependencies:
- postcss: 8.4.21
+ postcss: 8.4.31
postcss-value-parser: 4.2.0
dev: false
- /postcss-page-break@3.0.4(postcss@8.4.21):
+ /postcss-page-break@3.0.4(postcss@8.4.31):
resolution: {integrity: sha512-1JGu8oCjVXLa9q9rFTo4MbeeA5FMe00/9C7lN4va606Rdb+HkxXtXsmEDrIraQ11fGz/WvKWa8gMuCKkrXpTsQ==}
peerDependencies:
postcss: ^8
dependencies:
- postcss: 8.4.21
+ postcss: 8.4.31
dev: false
- /postcss-place@9.0.0(postcss@8.4.21):
+ /postcss-place@9.0.0(postcss@8.4.31):
resolution: {integrity: sha512-qLEPD9VPH5opDVemwmRaujODF9nExn24VOC3ghgVLEvfYN7VZLwJHes0q/C9YR5hI2UC3VgBE8Wkdp1TxCXhtg==}
engines: {node: ^14 || ^16 || >=18}
peerDependencies:
postcss: ^8.4
dependencies:
- postcss: 8.4.21
+ postcss: 8.4.31
postcss-value-parser: 4.2.0
dev: false
- /postcss-preset-env@9.2.0(postcss@8.4.21):
+ /postcss-preset-env@9.2.0(postcss@8.4.31):
resolution: {integrity: sha512-Lnr4C5gb7t5Cc8akQMJzNdJkqw7s7s7BHUaQSgsuf+CTY9Lsz5lqQTft5yNZr59JyCLz0aFNSAqSLm/xRtcTpg==}
engines: {node: ^14 || ^16 || >=18}
peerDependencies:
postcss: ^8.4
dependencies:
- '@csstools/postcss-cascade-layers': 4.0.0(postcss@8.4.21)
- '@csstools/postcss-color-function': 3.0.7(postcss@8.4.21)
- '@csstools/postcss-color-mix-function': 2.0.7(postcss@8.4.21)
- '@csstools/postcss-exponential-functions': 1.0.1(postcss@8.4.21)
- '@csstools/postcss-font-format-keywords': 3.0.0(postcss@8.4.21)
- '@csstools/postcss-gamut-mapping': 1.0.0(postcss@8.4.21)
- '@csstools/postcss-gradients-interpolation-method': 4.0.7(postcss@8.4.21)
- '@csstools/postcss-hwb-function': 3.0.6(postcss@8.4.21)
- '@csstools/postcss-ic-unit': 3.0.2(postcss@8.4.21)
- '@csstools/postcss-initial': 1.0.0(postcss@8.4.21)
- '@csstools/postcss-is-pseudo-class': 4.0.3(postcss@8.4.21)
- '@csstools/postcss-logical-float-and-clear': 2.0.0(postcss@8.4.21)
- '@csstools/postcss-logical-resize': 2.0.0(postcss@8.4.21)
- '@csstools/postcss-logical-viewport-units': 2.0.3(postcss@8.4.21)
- '@csstools/postcss-media-minmax': 1.1.0(postcss@8.4.21)
- '@csstools/postcss-media-queries-aspect-ratio-number-values': 2.0.3(postcss@8.4.21)
- '@csstools/postcss-nested-calc': 3.0.0(postcss@8.4.21)
- '@csstools/postcss-normalize-display-values': 3.0.1(postcss@8.4.21)
- '@csstools/postcss-oklab-function': 3.0.7(postcss@8.4.21)
- '@csstools/postcss-progressive-custom-properties': 3.0.2(postcss@8.4.21)
- '@csstools/postcss-relative-color-syntax': 2.0.7(postcss@8.4.21)
- '@csstools/postcss-scope-pseudo-class': 3.0.0(postcss@8.4.21)
- '@csstools/postcss-stepped-value-functions': 3.0.2(postcss@8.4.21)
- '@csstools/postcss-text-decoration-shorthand': 3.0.3(postcss@8.4.21)
- '@csstools/postcss-trigonometric-functions': 3.0.2(postcss@8.4.21)
- '@csstools/postcss-unset-value': 3.0.0(postcss@8.4.21)
- autoprefixer: 10.4.16(postcss@8.4.21)
+ '@csstools/postcss-cascade-layers': 4.0.0(postcss@8.4.31)
+ '@csstools/postcss-color-function': 3.0.7(postcss@8.4.31)
+ '@csstools/postcss-color-mix-function': 2.0.7(postcss@8.4.31)
+ '@csstools/postcss-exponential-functions': 1.0.1(postcss@8.4.31)
+ '@csstools/postcss-font-format-keywords': 3.0.0(postcss@8.4.31)
+ '@csstools/postcss-gamut-mapping': 1.0.0(postcss@8.4.31)
+ '@csstools/postcss-gradients-interpolation-method': 4.0.7(postcss@8.4.31)
+ '@csstools/postcss-hwb-function': 3.0.6(postcss@8.4.31)
+ '@csstools/postcss-ic-unit': 3.0.2(postcss@8.4.31)
+ '@csstools/postcss-initial': 1.0.0(postcss@8.4.31)
+ '@csstools/postcss-is-pseudo-class': 4.0.3(postcss@8.4.31)
+ '@csstools/postcss-logical-float-and-clear': 2.0.0(postcss@8.4.31)
+ '@csstools/postcss-logical-resize': 2.0.0(postcss@8.4.31)
+ '@csstools/postcss-logical-viewport-units': 2.0.3(postcss@8.4.31)
+ '@csstools/postcss-media-minmax': 1.1.0(postcss@8.4.31)
+ '@csstools/postcss-media-queries-aspect-ratio-number-values': 2.0.3(postcss@8.4.31)
+ '@csstools/postcss-nested-calc': 3.0.0(postcss@8.4.31)
+ '@csstools/postcss-normalize-display-values': 3.0.1(postcss@8.4.31)
+ '@csstools/postcss-oklab-function': 3.0.7(postcss@8.4.31)
+ '@csstools/postcss-progressive-custom-properties': 3.0.2(postcss@8.4.31)
+ '@csstools/postcss-relative-color-syntax': 2.0.7(postcss@8.4.31)
+ '@csstools/postcss-scope-pseudo-class': 3.0.0(postcss@8.4.31)
+ '@csstools/postcss-stepped-value-functions': 3.0.2(postcss@8.4.31)
+ '@csstools/postcss-text-decoration-shorthand': 3.0.3(postcss@8.4.31)
+ '@csstools/postcss-trigonometric-functions': 3.0.2(postcss@8.4.31)
+ '@csstools/postcss-unset-value': 3.0.0(postcss@8.4.31)
+ autoprefixer: 10.4.16(postcss@8.4.31)
browserslist: 4.22.1
- css-blank-pseudo: 6.0.0(postcss@8.4.21)
- css-has-pseudo: 6.0.0(postcss@8.4.21)
- css-prefers-color-scheme: 9.0.0(postcss@8.4.21)
+ css-blank-pseudo: 6.0.0(postcss@8.4.31)
+ css-has-pseudo: 6.0.0(postcss@8.4.31)
+ css-prefers-color-scheme: 9.0.0(postcss@8.4.31)
cssdb: 7.8.0
- postcss: 8.4.21
- postcss-attribute-case-insensitive: 6.0.2(postcss@8.4.21)
- postcss-clamp: 4.1.0(postcss@8.4.21)
- postcss-color-functional-notation: 6.0.2(postcss@8.4.21)
- postcss-color-hex-alpha: 9.0.2(postcss@8.4.21)
- postcss-color-rebeccapurple: 9.0.1(postcss@8.4.21)
- postcss-custom-media: 10.0.2(postcss@8.4.21)
- postcss-custom-properties: 13.3.2(postcss@8.4.21)
- postcss-custom-selectors: 7.1.6(postcss@8.4.21)
- postcss-dir-pseudo-class: 8.0.0(postcss@8.4.21)
- postcss-double-position-gradients: 5.0.2(postcss@8.4.21)
- postcss-focus-visible: 9.0.0(postcss@8.4.21)
- postcss-focus-within: 8.0.0(postcss@8.4.21)
- postcss-font-variant: 5.0.0(postcss@8.4.21)
- postcss-gap-properties: 5.0.0(postcss@8.4.21)
- postcss-image-set-function: 6.0.1(postcss@8.4.21)
- postcss-lab-function: 6.0.7(postcss@8.4.21)
- postcss-logical: 7.0.0(postcss@8.4.21)
- postcss-nesting: 12.0.1(postcss@8.4.21)
- postcss-opacity-percentage: 2.0.0(postcss@8.4.21)
- postcss-overflow-shorthand: 5.0.0(postcss@8.4.21)
- postcss-page-break: 3.0.4(postcss@8.4.21)
- postcss-place: 9.0.0(postcss@8.4.21)
- postcss-pseudo-class-any-link: 9.0.0(postcss@8.4.21)
- postcss-replace-overflow-wrap: 4.0.0(postcss@8.4.21)
- postcss-selector-not: 7.0.1(postcss@8.4.21)
+ postcss: 8.4.31
+ postcss-attribute-case-insensitive: 6.0.2(postcss@8.4.31)
+ postcss-clamp: 4.1.0(postcss@8.4.31)
+ postcss-color-functional-notation: 6.0.2(postcss@8.4.31)
+ postcss-color-hex-alpha: 9.0.2(postcss@8.4.31)
+ postcss-color-rebeccapurple: 9.0.1(postcss@8.4.31)
+ postcss-custom-media: 10.0.2(postcss@8.4.31)
+ postcss-custom-properties: 13.3.2(postcss@8.4.31)
+ postcss-custom-selectors: 7.1.6(postcss@8.4.31)
+ postcss-dir-pseudo-class: 8.0.0(postcss@8.4.31)
+ postcss-double-position-gradients: 5.0.2(postcss@8.4.31)
+ postcss-focus-visible: 9.0.0(postcss@8.4.31)
+ postcss-focus-within: 8.0.0(postcss@8.4.31)
+ postcss-font-variant: 5.0.0(postcss@8.4.31)
+ postcss-gap-properties: 5.0.0(postcss@8.4.31)
+ postcss-image-set-function: 6.0.1(postcss@8.4.31)
+ postcss-lab-function: 6.0.7(postcss@8.4.31)
+ postcss-logical: 7.0.0(postcss@8.4.31)
+ postcss-nesting: 12.0.1(postcss@8.4.31)
+ postcss-opacity-percentage: 2.0.0(postcss@8.4.31)
+ postcss-overflow-shorthand: 5.0.0(postcss@8.4.31)
+ postcss-page-break: 3.0.4(postcss@8.4.31)
+ postcss-place: 9.0.0(postcss@8.4.31)
+ postcss-pseudo-class-any-link: 9.0.0(postcss@8.4.31)
+ postcss-replace-overflow-wrap: 4.0.0(postcss@8.4.31)
+ postcss-selector-not: 7.0.1(postcss@8.4.31)
postcss-value-parser: 4.2.0
dev: false
- /postcss-pseudo-class-any-link@9.0.0(postcss@8.4.21):
+ /postcss-pseudo-class-any-link@9.0.0(postcss@8.4.31):
resolution: {integrity: sha512-QNCYIL98VKFKY6HGDEJpF6+K/sg9bxcUYnOmNHJxZS5wsFDFaVoPeG68WAuhsqwbIBSo/b9fjEnTwY2mTSD+uA==}
engines: {node: ^14 || ^16 || >=18}
peerDependencies:
postcss: ^8.4
dependencies:
- postcss: 8.4.21
+ postcss: 8.4.31
postcss-selector-parser: 6.0.13
dev: false
- /postcss-replace-overflow-wrap@4.0.0(postcss@8.4.21):
+ /postcss-replace-overflow-wrap@4.0.0(postcss@8.4.31):
resolution: {integrity: sha512-KmF7SBPphT4gPPcKZc7aDkweHiKEEO8cla/GjcBK+ckKxiZslIu3C4GCRW3DNfL0o7yW7kMQu9xlZ1kXRXLXtw==}
peerDependencies:
postcss: ^8.0.3
dependencies:
- postcss: 8.4.21
+ postcss: 8.4.31
dev: false
- /postcss-selector-not@7.0.1(postcss@8.4.21):
+ /postcss-selector-not@7.0.1(postcss@8.4.31):
resolution: {integrity: sha512-1zT5C27b/zeJhchN7fP0kBr16Cc61mu7Si9uWWLoA3Px/D9tIJPKchJCkUH3tPO5D0pCFmGeApAv8XpXBQJ8SQ==}
engines: {node: ^14 || ^16 || >=18}
peerDependencies:
postcss: ^8.4
dependencies:
- postcss: 8.4.21
+ postcss: 8.4.31
postcss-selector-parser: 6.0.13
dev: false
@@ -4442,13 +4476,13 @@ packages:
util-deprecate: 1.0.2
dev: false
- /postcss-simple-vars@7.0.1(postcss@8.4.21):
+ /postcss-simple-vars@7.0.1(postcss@8.4.31):
resolution: {integrity: sha512-5GLLXaS8qmzHMOjVxqkk1TZPf1jMqesiI7qLhnlyERalG0sMbHIbJqrcnrpmZdKCLglHnRHoEBB61RtGTsj++A==}
engines: {node: '>=14.0'}
peerDependencies:
postcss: ^8.2.1
dependencies:
- postcss: 8.4.21
+ postcss: 8.4.31
dev: false
/postcss-value-parser@4.2.0:
@@ -5028,13 +5062,13 @@ packages:
react: 18.2.0
dev: false
- /sugarss@4.0.1(postcss@8.4.21):
+ /sugarss@4.0.1(postcss@8.4.31):
resolution: {integrity: sha512-WCjS5NfuVJjkQzK10s8WOBY+hhDxxNt/N6ZaGwxFZ+wN3/lKKFSaaKUNecULcTTvE4urLcKaZFQD8vO0mOZujw==}
engines: {node: '>=12.0'}
peerDependencies:
postcss: ^8.3.3
dependencies:
- postcss: 8.4.21
+ postcss: 8.4.31
dev: false
/supercluster@8.0.1:
@@ -5083,6 +5117,10 @@ packages:
resolution: {integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==}
dev: true
+ /three@0.156.0:
+ resolution: {integrity: sha512-r6meetGWDk3aYjDRh6NpKuUkzoPlI3yldDQe2SkwCcqTTB5NZn7vKQBUXyMExvlwZShaLmvAbsVWaFzp1rkk3A==}
+ dev: false
+
/tinyqueue@2.0.3:
resolution: {integrity: sha512-ppJZNDuKGgxzkHihX8v9v9G5f+18gzaTfrukGrq6ueg0lmH4nqVnA2IPG0AEH3jKEk2GRJCUhDoqpoiw3PHLBA==}
dev: false