Changes

gpt-engineer-app[bot] committed Nov 27, 2025 at 13:39 UTC a5ac209c1ae573f320325b6c781ad16e1ecab227
5 files changed +913 -13
package-lock.json
+868 -3
@@ -36,6 +36,8 @@
36 "@radix-ui/react-toggle": "^1.1.9",
37 "@radix-ui/react-toggle-group": "^1.1.10",
38 "@radix-ui/react-tooltip": "^1.2.7",
39 + "@react-three/drei": "^9.122.0",
40 + "@react-three/fiber": "^8.18.0",
41 "@tanstack/react-query": "^5.83.0",
42 "class-variance-authority": "^0.7.1",
43 "clsx": "^2.1.1",
@@ -55,6 +57,7 @@
57 "sonner": "^1.7.4",
58 "tailwind-merge": "^2.6.0",
59 "tailwindcss-animate": "^1.0.7",
60 + "three": "^0.160.1",
61 "vaul": "^0.9.9",
62 "zod": "^3.25.76"
63 },
@@ -82,6 +85,7 @@
85 "version": "5.2.0",
86 "resolved": "https://registry.npmjs.org/@alloc/quick-lru/-/quick-lru-5.2.0.tgz",
87 "integrity": "sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw==",
88 + "dev": true,
89 "license": "MIT",
90 "engines": {
91 "node": ">=10"
@@ -149,6 +153,12 @@
153 "node": ">=6.9.0"
154 }
155 },
156 + "node_modules/@dimforge/rapier3d-compat": {
157 + "version": "0.12.0",
158 + "resolved": "https://registry.npmjs.org/@dimforge/rapier3d-compat/-/rapier3d-compat-0.12.0.tgz",
159 + "integrity": "sha512-uekIGetywIgopfD97oDL5PfeezkFpNhwlzlaEYNOA0N6ghdsOvh/HYjSMek5Q2O1PYvRSDFcqFVJl4r4ZBwOow==",
160 + "license": "Apache-2.0"
161 + },
162 "node_modules/@esbuild/aix-ppc64": {
163 "version": "0.21.5",
164 "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.21.5.tgz",
@@ -845,6 +855,7 @@
855 "version": "8.0.2",
856 "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz",
857 "integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==",
858 + "dev": true,
859 "license": "ISC",
860 "dependencies": {
861 "string-width": "^5.1.2",
@@ -862,6 +873,7 @@
873 "version": "0.3.5",
874 "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.5.tgz",
875 "integrity": "sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==",
876 + "dev": true,
877 "license": "MIT",
878 "dependencies": {
879 "@jridgewell/set-array": "^1.2.1",
@@ -876,6 +888,7 @@
888 "version": "3.1.2",
889 "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz",
890 "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==",
891 + "dev": true,
892 "license": "MIT",
893 "engines": {
894 "node": ">=6.0.0"
@@ -885,6 +898,7 @@
898 "version": "1.2.1",
899 "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.2.1.tgz",
900 "integrity": "sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==",
901 + "dev": true,
902 "license": "MIT",
903 "engines": {
904 "node": ">=6.0.0"
@@ -894,22 +908,43 @@
908 "version": "1.5.0",
909 "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz",
910 "integrity": "sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==",
911 + "dev": true,
912 "license": "MIT"
913 },
914 "node_modules/@jridgewell/trace-mapping": {
915 "version": "0.3.25",
916 "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz",
917 "integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==",
918 + "dev": true,
919 "license": "MIT",
920 "dependencies": {
921 "@jridgewell/resolve-uri": "^3.1.0",
922 "@jridgewell/sourcemap-codec": "^1.4.14"
923 }
924 },
925 + "node_modules/@mediapipe/tasks-vision": {
926 + "version": "0.10.17",
927 + "resolved": "https://registry.npmjs.org/@mediapipe/tasks-vision/-/tasks-vision-0.10.17.tgz",
928 + "integrity": "sha512-CZWV/q6TTe8ta61cZXjfnnHsfWIdFhms03M9T7Cnd5y2mdpylJM0rF1qRq+wsQVRMLz1OYPVEBU9ph2Bx8cxrg==",
929 + "license": "Apache-2.0"
930 + },
931 + "node_modules/@monogrid/gainmap-js": {
932 + "version": "3.4.0",
933 + "resolved": "https://registry.npmjs.org/@monogrid/gainmap-js/-/gainmap-js-3.4.0.tgz",
934 + "integrity": "sha512-2Z0FATFHaoYJ8b+Y4y4Hgfn3FRFwuU5zRrk+9dFWp4uGAdHGqVEdP7HP+gLA3X469KXHmfupJaUbKo1b/aDKIg==",
935 + "license": "MIT",
936 + "dependencies": {
937 + "promise-worker-transferable": "^1.0.4"
938 + },
939 + "peerDependencies": {
940 + "three": ">= 0.159.0"
941 + }
942 + },
943 "node_modules/@nodelib/fs.scandir": {
944 "version": "2.1.5",
945 "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz",
946 "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==",
947 + "dev": true,
948 "license": "MIT",
949 "dependencies": {
950 "@nodelib/fs.stat": "2.0.5",
@@ -923,6 +958,7 @@
958 "version": "2.0.5",
959 "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz",
960 "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==",
961 + "dev": true,
962 "license": "MIT",
963 "engines": {
964 "node": ">= 8"
@@ -932,6 +968,7 @@
968 "version": "1.2.8",
969 "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz",
970 "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==",
971 + "dev": true,
972 "license": "MIT",
973 "dependencies": {
974 "@nodelib/fs.scandir": "2.1.5",
@@ -945,6 +982,7 @@
982 "version": "0.11.0",
983 "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz",
984 "integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==",
985 + "dev": true,
986 "license": "MIT",
987 "optional": true,
988 "engines": {
@@ -2305,6 +2343,207 @@
2343 "integrity": "sha512-HPwpGIzkl28mWyZqG52jiqDJ12waP11Pa1lGoiyUkIEuMLBP0oeK/C89esbXrxsky5we7dfd8U58nm0SgAWpVw==",
2344 "license": "MIT"
2345 },
2346 + "node_modules/@react-spring/animated": {
2347 + "version": "9.7.5",
2348 + "resolved": "https://registry.npmjs.org/@react-spring/animated/-/animated-9.7.5.tgz",
2349 + "integrity": "sha512-Tqrwz7pIlsSDITzxoLS3n/v/YCUHQdOIKtOJf4yL6kYVSDTSmVK1LI1Q3M/uu2Sx4X3pIWF3xLUhlsA6SPNTNg==",
2350 + "license": "MIT",
2351 + "dependencies": {
2352 + "@react-spring/shared": "~9.7.5",
2353 + "@react-spring/types": "~9.7.5"
2354 + },
2355 + "peerDependencies": {
2356 + "react": "^16.8.0 || ^17.0.0 || ^18.0.0"
2357 + }
2358 + },
2359 + "node_modules/@react-spring/core": {
2360 + "version": "9.7.5",
2361 + "resolved": "https://registry.npmjs.org/@react-spring/core/-/core-9.7.5.tgz",
2362 + "integrity": "sha512-rmEqcxRcu7dWh7MnCcMXLvrf6/SDlSokLaLTxiPlAYi11nN3B5oiCUAblO72o+9z/87j2uzxa2Inm8UbLjXA+w==",
2363 + "license": "MIT",
2364 + "dependencies": {
2365 + "@react-spring/animated": "~9.7.5",
2366 + "@react-spring/shared": "~9.7.5",
2367 + "@react-spring/types": "~9.7.5"
2368 + },
2369 + "funding": {
2370 + "type": "opencollective",
2371 + "url": "https://opencollective.com/react-spring/donate"
2372 + },
2373 + "peerDependencies": {
2374 + "react": "^16.8.0 || ^17.0.0 || ^18.0.0"
2375 + }
2376 + },
2377 + "node_modules/@react-spring/rafz": {
2378 + "version": "9.7.5",
2379 + "resolved": "https://registry.npmjs.org/@react-spring/rafz/-/rafz-9.7.5.tgz",
2380 + "integrity": "sha512-5ZenDQMC48wjUzPAm1EtwQ5Ot3bLIAwwqP2w2owG5KoNdNHpEJV263nGhCeKKmuA3vG2zLLOdu3or6kuDjA6Aw==",
2381 + "license": "MIT"
2382 + },
2383 + "node_modules/@react-spring/shared": {
2384 + "version": "9.7.5",
2385 + "resolved": "https://registry.npmjs.org/@react-spring/shared/-/shared-9.7.5.tgz",
2386 + "integrity": "sha512-wdtoJrhUeeyD/PP/zo+np2s1Z820Ohr/BbuVYv+3dVLW7WctoiN7std8rISoYoHpUXtbkpesSKuPIw/6U1w1Pw==",
2387 + "license": "MIT",
2388 + "dependencies": {
2389 + "@react-spring/rafz": "~9.7.5",
2390 + "@react-spring/types": "~9.7.5"
2391 + },
2392 + "peerDependencies": {
2393 + "react": "^16.8.0 || ^17.0.0 || ^18.0.0"
2394 + }
2395 + },
2396 + "node_modules/@react-spring/three": {
2397 + "version": "9.7.5",
2398 + "resolved": "https://registry.npmjs.org/@react-spring/three/-/three-9.7.5.tgz",
2399 + "integrity": "sha512-RxIsCoQfUqOS3POmhVHa1wdWS0wyHAUway73uRLp3GAL5U2iYVNdnzQsep6M2NZ994BlW8TcKuMtQHUqOsy6WA==",
2400 + "license": "MIT",
2401 + "dependencies": {
2402 + "@react-spring/animated": "~9.7.5",
2403 + "@react-spring/core": "~9.7.5",
2404 + "@react-spring/shared": "~9.7.5",
2405 + "@react-spring/types": "~9.7.5"
2406 + },
2407 + "peerDependencies": {
2408 + "@react-three/fiber": ">=6.0",
2409 + "react": "^16.8.0 || ^17.0.0 || ^18.0.0",
2410 + "three": ">=0.126"
2411 + }
2412 + },
2413 + "node_modules/@react-spring/types": {
2414 + "version": "9.7.5",
2415 + "resolved": "https://registry.npmjs.org/@react-spring/types/-/types-9.7.5.tgz",
2416 + "integrity": "sha512-HVj7LrZ4ReHWBimBvu2SKND3cDVUPWKLqRTmWe/fNY6o1owGOX0cAHbdPDTMelgBlVbrTKrre6lFkhqGZErK/g==",
2417 + "license": "MIT"
2418 + },
2419 + "node_modules/@react-three/drei": {
2420 + "version": "9.122.0",
2421 + "resolved": "https://registry.npmjs.org/@react-three/drei/-/drei-9.122.0.tgz",
2422 + "integrity": "sha512-SEO/F/rBCTjlLez7WAlpys+iGe9hty4rNgjZvgkQeXFSiwqD4Hbk/wNHMAbdd8vprO2Aj81mihv4dF5bC7D0CA==",
2423 + "license": "MIT",
2424 + "dependencies": {
2425 + "@babel/runtime": "^7.26.0",
2426 + "@mediapipe/tasks-vision": "0.10.17",
2427 + "@monogrid/gainmap-js": "^3.0.6",
2428 + "@react-spring/three": "~9.7.5",
2429 + "@use-gesture/react": "^10.3.1",
2430 + "camera-controls": "^2.9.0",
2431 + "cross-env": "^7.0.3",
2432 + "detect-gpu": "^5.0.56",
2433 + "glsl-noise": "^0.0.0",
2434 + "hls.js": "^1.5.17",
2435 + "maath": "^0.10.8",
2436 + "meshline": "^3.3.1",
2437 + "react-composer": "^5.0.3",
2438 + "stats-gl": "^2.2.8",
2439 + "stats.js": "^0.17.0",
2440 + "suspend-react": "^0.1.3",
2441 + "three-mesh-bvh": "^0.7.8",
2442 + "three-stdlib": "^2.35.6",
2443 + "troika-three-text": "^0.52.0",
2444 + "tunnel-rat": "^0.1.2",
2445 + "utility-types": "^3.11.0",
2446 + "zustand": "^5.0.1"
2447 + },
2448 + "peerDependencies": {
2449 + "@react-three/fiber": "^8",
2450 + "react": "^18",
2451 + "react-dom": "^18",
2452 + "three": ">=0.137"
2453 + },
2454 + "peerDependenciesMeta": {
2455 + "react-dom": {
2456 + "optional": true
2457 + }
2458 + }
2459 + },
2460 + "node_modules/@react-three/drei/node_modules/zustand": {
2461 + "version": "5.0.8",
2462 + "resolved": "https://registry.npmjs.org/zustand/-/zustand-5.0.8.tgz",
2463 + "integrity": "sha512-gyPKpIaxY9XcO2vSMrLbiER7QMAMGOQZVRdJ6Zi782jkbzZygq5GI9nG8g+sMgitRtndwaBSl7uiqC49o1SSiw==",
2464 + "license": "MIT",
2465 + "engines": {
2466 + "node": ">=12.20.0"
2467 + },
2468 + "peerDependencies": {
2469 + "@types/react": ">=18.0.0",
2470 + "immer": ">=9.0.6",
2471 + "react": ">=18.0.0",
2472 + "use-sync-external-store": ">=1.2.0"
2473 + },
2474 + "peerDependenciesMeta": {
2475 + "@types/react": {
2476 + "optional": true
2477 + },
2478 + "immer": {
2479 + "optional": true
2480 + },
2481 + "react": {
2482 + "optional": true
2483 + },
2484 + "use-sync-external-store": {
2485 + "optional": true
2486 + }
2487 + }
2488 + },
2489 + "node_modules/@react-three/fiber": {
2490 + "version": "8.18.0",
2491 + "resolved": "https://registry.npmjs.org/@react-three/fiber/-/fiber-8.18.0.tgz",
2492 + "integrity": "sha512-FYZZqD0UUHUswKz3LQl2Z7H24AhD14XGTsIRw3SJaXUxyfVMi+1yiZGmqTcPt/CkPpdU7rrxqcyQ1zJE5DjvIQ==",
2493 + "license": "MIT",
2494 + "dependencies": {
2495 + "@babel/runtime": "^7.17.8",
2496 + "@types/react-reconciler": "^0.26.7",
2497 + "@types/webxr": "*",
2498 + "base64-js": "^1.5.1",
2499 + "buffer": "^6.0.3",
2500 + "its-fine": "^1.0.6",
2501 + "react-reconciler": "^0.27.0",
2502 + "react-use-measure": "^2.1.7",
2503 + "scheduler": "^0.21.0",
2504 + "suspend-react": "^0.1.3",
2505 + "zustand": "^3.7.1"
2506 + },
2507 + "peerDependencies": {
2508 + "expo": ">=43.0",
2509 + "expo-asset": ">=8.4",
2510 + "expo-file-system": ">=11.0",
2511 + "expo-gl": ">=11.0",
2512 + "react": ">=18 <19",
2513 + "react-dom": ">=18 <19",
2514 + "react-native": ">=0.64",
2515 + "three": ">=0.133"
2516 + },
2517 + "peerDependenciesMeta": {
2518 + "expo": {
2519 + "optional": true
2520 + },
2521 + "expo-asset": {
2522 + "optional": true
2523 + },
2524 + "expo-file-system": {
2525 + "optional": true
2526 + },
2527 + "expo-gl": {
2528 + "optional": true
2529 + },
2530 + "react-dom": {
2531 + "optional": true
2532 + },
2533 + "react-native": {
2534 + "optional": true
2535 + }
2536 + }
2537 + },
2538 + "node_modules/@react-three/fiber/node_modules/scheduler": {
2539 + "version": "0.21.0",
2540 + "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.21.0.tgz",
2541 + "integrity": "sha512-1r87x5fz9MXqswA2ERLo0EbOAU74DpIUO090gIasYTqlVoJeMcl+Z1Rg7WHz+qtPujhS/hGIt9kxZOYBV3faRQ==",
2542 + "license": "MIT",
2543 + "dependencies": {
2544 + "loose-envify": "^1.1.0"
2545 + }
2546 + },
2547 "node_modules/@remix-run/router": {
2548 "version": "1.23.0",
2549 "resolved": "https://registry.npmjs.org/@remix-run/router/-/router-1.23.0.tgz",
@@ -2826,6 +3065,12 @@
3065 "react": "^18 || ^19"
3066 }
3067 },
3068 + "node_modules/@tweenjs/tween.js": {
3069 + "version": "23.1.3",
3070 + "resolved": "https://registry.npmjs.org/@tweenjs/tween.js/-/tween.js-23.1.3.tgz",
3071 + "integrity": "sha512-vJmvvwFxYuGnF2axRtPYocag6Clbb5YS7kLL+SO/TeVFzHqDIWrNKYtcsPMibjDx9O+bu+psAy9NKfWklassUA==",
3072 + "license": "MIT"
3073 + },
3074 "node_modules/@types/d3-array": {
3075 "version": "3.2.1",
3076 "resolved": "https://registry.npmjs.org/@types/d3-array/-/d3-array-3.2.1.tgz",
@@ -2889,6 +3134,12 @@
3134 "integrity": "sha512-Ps3T8E8dZDam6fUyNiMkekK3XUsaUEik+idO9/YjPtfj2qruF8tFBXS7XhtE4iIXBLxhmLjP3SXpLhVf21I9Lw==",
3135 "license": "MIT"
3136 },
3137 + "node_modules/@types/draco3d": {
3138 + "version": "1.4.10",
3139 + "resolved": "https://registry.npmjs.org/@types/draco3d/-/draco3d-1.4.10.tgz",
3140 + "integrity": "sha512-AX22jp8Y7wwaBgAixaSvkoG4M/+PlAcm3Qs4OW8yT9DM4xUpWKeFhLueTAyZF39pviAdcDdeJoACapiAceqNcw==",
3141 + "license": "MIT"
3142 + },
3143 "node_modules/@types/estree": {
3144 "version": "1.0.6",
3145 "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.6.tgz",
@@ -2913,18 +3164,22 @@
3164 "undici-types": "~6.21.0"
3165 }
3166 },
3167 + "node_modules/@types/offscreencanvas": {
3168 + "version": "2019.7.3",
3169 + "resolved": "https://registry.npmjs.org/@types/offscreencanvas/-/offscreencanvas-2019.7.3.tgz",
3170 + "integrity": "sha512-ieXiYmgSRXUDeOntE1InxjWyvEelZGP63M+cGuquuRLuIKKT1osnkXjxev9B7d1nXSug5vpunx+gNlbVxMlC9A==",
3171 + "license": "MIT"
3172 + },
3173 "node_modules/@types/prop-types": {
3174 "version": "15.7.13",
3175 "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.13.tgz",
3176 "integrity": "sha512-hCZTSvwbzWGvhqxp/RqVqwU999pBf2vp7hzIjiYOsl8wqOmUxkQ6ddw1cV3l8811+kdUFus/q4d1Y3E3SyEifA==",
2920 - "devOptional": true,
3177 "license": "MIT"
3178 },
3179 "node_modules/@types/react": {
3180 "version": "18.3.23",
3181 "resolved": "https://registry.npmjs.org/@types/react/-/react-18.3.23.tgz",
3182 "integrity": "sha512-/LDXMQh55EzZQ0uVAZmKKhfENivEvWz6E+EYzh+/MCjMhNsotd+ZHhBGIjFDTi6+fz0OhQQQLbTgdQIxxCsC0w==",
2927 - "devOptional": true,
3183 "license": "MIT",
3184 "dependencies": {
3185 "@types/prop-types": "*",
@@ -2935,12 +3190,48 @@
3190 "version": "18.3.7",
3191 "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-18.3.7.tgz",
3192 "integrity": "sha512-MEe3UeoENYVFXzoXEWsvcpg6ZvlrFNlOQ7EOsvhI3CfAXwzPfO8Qwuxd40nepsYKqyyVQnTdEfv68q91yLcKrQ==",
2938 - "devOptional": true,
3193 + "dev": true,
3194 "license": "MIT",
3195 "peerDependencies": {
3196 "@types/react": "^18.0.0"
3197 }
3198 },
3199 + "node_modules/@types/react-reconciler": {
3200 + "version": "0.26.7",
3201 + "resolved": "https://registry.npmjs.org/@types/react-reconciler/-/react-reconciler-0.26.7.tgz",
3202 + "integrity": "sha512-mBDYl8x+oyPX/VBb3E638N0B7xG+SPk/EAMcVPeexqus/5aTpTphQi0curhhshOqRrc9t6OPoJfEUkbymse/lQ==",
3203 + "license": "MIT",
3204 + "dependencies": {
3205 + "@types/react": "*"
3206 + }
3207 + },
3208 + "node_modules/@types/stats.js": {
3209 + "version": "0.17.4",
3210 + "resolved": "https://registry.npmjs.org/@types/stats.js/-/stats.js-0.17.4.tgz",
3211 + "integrity": "sha512-jIBvWWShCvlBqBNIZt0KAshWpvSjhkwkEu4ZUcASoAvhmrgAUI2t1dXrjSL4xXVLB4FznPrIsX3nKXFl/Dt4vA==",
3212 + "license": "MIT"
3213 + },
3214 + "node_modules/@types/three": {
3215 + "version": "0.181.0",
3216 + "resolved": "https://registry.npmjs.org/@types/three/-/three-0.181.0.tgz",
3217 + "integrity": "sha512-MLF1ks8yRM2k71D7RprFpDb9DOX0p22DbdPqT/uAkc6AtQXjxWCVDjCy23G9t1o8HcQPk7woD2NIyiaWcWPYmA==",
3218 + "license": "MIT",
3219 + "dependencies": {
3220 + "@dimforge/rapier3d-compat": "~0.12.0",
3221 + "@tweenjs/tween.js": "~23.1.3",
3222 + "@types/stats.js": "*",
3223 + "@types/webxr": "*",
3224 + "@webgpu/types": "*",
3225 + "fflate": "~0.8.2",
3226 + "meshoptimizer": "~0.22.0"
3227 + }
3228 + },
3229 + "node_modules/@types/webxr": {
3230 + "version": "0.5.24",
3231 + "resolved": "https://registry.npmjs.org/@types/webxr/-/webxr-0.5.24.tgz",
3232 + "integrity": "sha512-h8fgEd/DpoS9CBrjEQXR+dIDraopAEfu4wYVNY2tEPwk60stPWhvZMf4Foo5FakuQ7HFZoa8WceaWFervK2Ovg==",
3233 + "license": "MIT"
3234 + },
3235 "node_modules/@typescript-eslint/eslint-plugin": {
3236 "version": "8.38.0",
3237 "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.38.0.tgz",
@@ -3199,6 +3490,24 @@
3490 "url": "https://opencollective.com/typescript-eslint"
3491 }
3492 },
3493 + "node_modules/@use-gesture/core": {
3494 + "version": "10.3.1",
3495 + "resolved": "https://registry.npmjs.org/@use-gesture/core/-/core-10.3.1.tgz",
3496 + "integrity": "sha512-WcINiDt8WjqBdUXye25anHiNxPc0VOrlT8F6LLkU6cycrOGUDyY/yyFmsg3k8i5OLvv25llc0QC45GhR/C8llw==",
3497 + "license": "MIT"
3498 + },
3499 + "node_modules/@use-gesture/react": {
3500 + "version": "10.3.1",
3501 + "resolved": "https://registry.npmjs.org/@use-gesture/react/-/react-10.3.1.tgz",
3502 + "integrity": "sha512-Yy19y6O2GJq8f7CHf7L0nxL8bf4PZCPaVOCgJrusOeFHY1LvHgYXnmnXg6N5iwAnbgbZCDjo60SiM6IPJi9C5g==",
3503 + "license": "MIT",
3504 + "dependencies": {
3505 + "@use-gesture/core": "10.3.1"
3506 + },
3507 + "peerDependencies": {
3508 + "react": ">= 16.8.0"
3509 + }
3510 + },
3511 "node_modules/@vitejs/plugin-react-swc": {
3512 "version": "3.11.0",
3513 "resolved": "https://registry.npmjs.org/@vitejs/plugin-react-swc/-/plugin-react-swc-3.11.0.tgz",
@@ -3213,6 +3522,12 @@
3522 "vite": "^4 || ^5 || ^6 || ^7"
3523 }
3524 },
3525 + "node_modules/@webgpu/types": {
3526 + "version": "0.1.66",
3527 + "resolved": "https://registry.npmjs.org/@webgpu/types/-/types-0.1.66.tgz",
3528 + "integrity": "sha512-YA2hLrwLpDsRueNDXIMqN9NTzD6bCDkuXbOSe0heS+f8YE8usA6Gbv1prj81pzVHrbaAma7zObnIC+I6/sXJgA==",
3529 + "license": "BSD-3-Clause"
3530 + },
3531 "node_modules/acorn": {
3532 "version": "8.15.0",
3533 "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.15.0.tgz",
@@ -3257,6 +3572,7 @@
3572 "version": "6.1.0",
3573 "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.1.0.tgz",
3574 "integrity": "sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==",
3575 + "dev": true,
3576 "license": "MIT",
3577 "engines": {
3578 "node": ">=12"
@@ -3269,6 +3585,7 @@
3585 "version": "4.3.0",
3586 "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
3587 "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
3588 + "dev": true,
3589 "license": "MIT",
3590 "dependencies": {
3591 "color-convert": "^2.0.1"
@@ -3284,12 +3601,14 @@
3601 "version": "1.3.0",
3602 "resolved": "https://registry.npmjs.org/any-promise/-/any-promise-1.3.0.tgz",
3603 "integrity": "sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==",
3604 + "dev": true,
3605 "license": "MIT"
3606 },
3607 "node_modules/anymatch": {
3608 "version": "3.1.3",
3609 "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz",
3610 "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==",
3611 + "dev": true,
3612 "license": "ISC",
3613 "dependencies": {
3614 "normalize-path": "^3.0.0",
@@ -3303,6 +3622,7 @@
3622 "version": "5.0.2",
3623 "resolved": "https://registry.npmjs.org/arg/-/arg-5.0.2.tgz",
3624 "integrity": "sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==",
3625 + "dev": true,
3626 "license": "MIT"
3627 },
3628 "node_modules/argparse": {
@@ -3366,12 +3686,43 @@
3686 "version": "1.0.2",
3687 "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz",
3688 "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==",
3689 + "dev": true,
3690 "license": "MIT"
3691 },
3692 + "node_modules/base64-js": {
3693 + "version": "1.5.1",
3694 + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz",
3695 + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==",
3696 + "funding": [
3697 + {
3698 + "type": "github",
3699 + "url": "https://github.com/sponsors/feross"
3700 + },
3701 + {
3702 + "type": "patreon",
3703 + "url": "https://www.patreon.com/feross"
3704 + },
3705 + {
3706 + "type": "consulting",
3707 + "url": "https://feross.org/support"
3708 + }
3709 + ],
3710 + "license": "MIT"
3711 + },
3712 + "node_modules/bidi-js": {
3713 + "version": "1.0.3",
3714 + "resolved": "https://registry.npmjs.org/bidi-js/-/bidi-js-1.0.3.tgz",
3715 + "integrity": "sha512-RKshQI1R3YQ+n9YJz2QQ147P66ELpa1FQEg20Dk8oW9t2KgLbpDLLp9aGZ7y8WHSshDknG0bknqGw5/tyCs5tw==",
3716 + "license": "MIT",
3717 + "dependencies": {
3718 + "require-from-string": "^2.0.2"
3719 + }
3720 + },
3721 "node_modules/binary-extensions": {
3722 "version": "2.3.0",
3723 "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.3.0.tgz",
3724 "integrity": "sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==",
3725 + "dev": true,
3726 "license": "MIT",
3727 "engines": {
3728 "node": ">=8"
@@ -3395,6 +3746,7 @@
3746 "version": "3.0.3",
3747 "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz",
3748 "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==",
3749 + "dev": true,
3750 "license": "MIT",
3751 "dependencies": {
3752 "fill-range": "^7.1.1"
@@ -3436,6 +3788,30 @@
3788 "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7"
3789 }
3790 },
3791 + "node_modules/buffer": {
3792 + "version": "6.0.3",
3793 + "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz",
3794 + "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==",
3795 + "funding": [
3796 + {
3797 + "type": "github",
3798 + "url": "https://github.com/sponsors/feross"
3799 + },
3800 + {
3801 + "type": "patreon",
3802 + "url": "https://www.patreon.com/feross"
3803 + },
3804 + {
3805 + "type": "consulting",
3806 + "url": "https://feross.org/support"
3807 + }
3808 + ],
3809 + "license": "MIT",
3810 + "dependencies": {
3811 + "base64-js": "^1.3.1",
3812 + "ieee754": "^1.2.1"
3813 + }
3814 + },
3815 "node_modules/callsites": {
3816 "version": "3.1.0",
3817 "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz",
@@ -3450,11 +3826,21 @@
3826 "version": "2.0.1",
3827 "resolved": "https://registry.npmjs.org/camelcase-css/-/camelcase-css-2.0.1.tgz",
3828 "integrity": "sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==",
3829 + "dev": true,
3830 "license": "MIT",
3831 "engines": {
3832 "node": ">= 6"
3833 }
3834 },
3835 + "node_modules/camera-controls": {
3836 + "version": "2.10.1",
3837 + "resolved": "https://registry.npmjs.org/camera-controls/-/camera-controls-2.10.1.tgz",
3838 + "integrity": "sha512-KnaKdcvkBJ1Irbrzl8XD6WtZltkRjp869Jx8c0ujs9K+9WD+1D7ryBsCiVqJYUqt6i/HR5FxT7RLASieUD+Q5w==",
3839 + "license": "MIT",
3840 + "peerDependencies": {
3841 + "three": ">=0.126.1"
3842 + }
3843 + },
3844 "node_modules/caniuse-lite": {
3845 "version": "1.0.30001727",
3846 "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001727.tgz",
@@ -3497,6 +3883,7 @@
3883 "version": "3.6.0",
3884 "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz",
3885 "integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==",
3886 + "dev": true,
3887 "license": "MIT",
3888 "dependencies": {
3889 "anymatch": "~3.1.2",
@@ -3521,6 +3908,7 @@
3908 "version": "5.1.2",
3909 "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz",
3910 "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==",
3911 + "dev": true,
3912 "license": "ISC",
3913 "dependencies": {
3914 "is-glob": "^4.0.1"
@@ -3569,6 +3957,7 @@
3957 "version": "2.0.1",
3958 "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
3959 "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
3960 + "dev": true,
3961 "license": "MIT",
3962 "dependencies": {
3963 "color-name": "~1.1.4"
@@ -3581,12 +3970,14 @@
3970 "version": "1.1.4",
3971 "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
3972 "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
3973 + "dev": true,
3974 "license": "MIT"
3975 },
3976 "node_modules/commander": {
3977 "version": "4.1.1",
3978 "resolved": "https://registry.npmjs.org/commander/-/commander-4.1.1.tgz",
3979 "integrity": "sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==",
3980 + "dev": true,
3981 "license": "MIT",
3982 "engines": {
3983 "node": ">= 6"
@@ -3599,6 +3990,24 @@
3990 "dev": true,
3991 "license": "MIT"
3992 },
3993 + "node_modules/cross-env": {
3994 + "version": "7.0.3",
3995 + "resolved": "https://registry.npmjs.org/cross-env/-/cross-env-7.0.3.tgz",
3996 + "integrity": "sha512-+/HKd6EgcQCJGh2PSjZuUitQBQynKor4wrFbRg4DtAgS1aWO+gU52xpH7M9ScGgXSYmAVS9bIJ8EzuaGw0oNAw==",
3997 + "license": "MIT",
3998 + "dependencies": {
3999 + "cross-spawn": "^7.0.1"
4000 + },
4001 + "bin": {
4002 + "cross-env": "src/bin/cross-env.js",
4003 + "cross-env-shell": "src/bin/cross-env-shell.js"
4004 + },
4005 + "engines": {
4006 + "node": ">=10.14",
4007 + "npm": ">=6",
4008 + "yarn": ">=1"
4009 + }
4010 + },
4011 "node_modules/cross-spawn": {
4012 "version": "7.0.6",
4013 "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz",
@@ -3616,6 +4025,7 @@
4025 "version": "3.0.0",
4026 "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz",
4027 "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==",
4028 + "dev": true,
4029 "license": "MIT",
4030 "bin": {
4031 "cssesc": "bin/cssesc"
@@ -3792,6 +4202,15 @@
4202 "dev": true,
4203 "license": "MIT"
4204 },
4205 + "node_modules/detect-gpu": {
4206 + "version": "5.0.70",
4207 + "resolved": "https://registry.npmjs.org/detect-gpu/-/detect-gpu-5.0.70.tgz",
4208 + "integrity": "sha512-bqerEP1Ese6nt3rFkwPnGbsUF9a4q+gMmpTVVOEzoCyeCc+y7/RvJnQZJx1JwhgQI5Ntg0Kgat8Uu7XpBqnz1w==",
4209 + "license": "MIT",
4210 + "dependencies": {
4211 + "webgl-constants": "^1.1.1"
4212 + }
4213 + },
4214 "node_modules/detect-node-es": {
4215 "version": "1.1.0",
4216 "resolved": "https://registry.npmjs.org/detect-node-es/-/detect-node-es-1.1.0.tgz",
@@ -3802,12 +4221,14 @@
4221 "version": "1.2.2",
4222 "resolved": "https://registry.npmjs.org/didyoumean/-/didyoumean-1.2.2.tgz",
4223 "integrity": "sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==",
4224 + "dev": true,
4225 "license": "Apache-2.0"
4226 },
4227 "node_modules/dlv": {
4228 "version": "1.1.3",
4229 "resolved": "https://registry.npmjs.org/dlv/-/dlv-1.1.3.tgz",
4230 "integrity": "sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==",
4231 + "dev": true,
4232 "license": "MIT"
4233 },
4234 "node_modules/dom-helpers": {
@@ -3820,10 +4241,17 @@
4241 "csstype": "^3.0.2"
4242 }
4243 },
4244 + "node_modules/draco3d": {
4245 + "version": "1.5.7",
4246 + "resolved": "https://registry.npmjs.org/draco3d/-/draco3d-1.5.7.tgz",
4247 + "integrity": "sha512-m6WCKt/erDXcw+70IJXnG7M3awwQPAsZvJGX5zY7beBqpELw6RDGkYVU0W43AFxye4pDZ5i2Lbyc/NNGqwjUVQ==",
4248 + "license": "Apache-2.0"
4249 + },
4250 "node_modules/eastasianwidth": {
4251 "version": "0.2.0",
4252 "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz",
4253 "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==",
4254 + "dev": true,
4255 "license": "MIT"
4256 },
4257 "node_modules/electron-to-chromium": {
@@ -3865,6 +4293,7 @@
4293 "version": "9.2.2",
4294 "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz",
4295 "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==",
4296 + "dev": true,
4297 "license": "MIT"
4298 },
4299 "node_modules/esbuild": {
@@ -4143,6 +4572,7 @@
4572 "version": "3.3.2",
4573 "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.2.tgz",
4574 "integrity": "sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==",
4575 + "dev": true,
4576 "license": "MIT",
4577 "dependencies": {
4578 "@nodelib/fs.stat": "^2.0.2",
@@ -4159,6 +4589,7 @@
4589 "version": "5.1.2",
4590 "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz",
4591 "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==",
4592 + "dev": true,
4593 "license": "ISC",
4594 "dependencies": {
4595 "is-glob": "^4.0.1"
@@ -4185,11 +4616,18 @@
4616 "version": "1.17.1",
4617 "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.17.1.tgz",
4618 "integrity": "sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==",
4619 + "dev": true,
4620 "license": "ISC",
4621 "dependencies": {
4622 "reusify": "^1.0.4"
4623 }
4624 },
4625 + "node_modules/fflate": {
4626 + "version": "0.8.2",
4627 + "resolved": "https://registry.npmjs.org/fflate/-/fflate-0.8.2.tgz",
4628 + "integrity": "sha512-cPJU47OaAoCbg0pBvzsgpTPhmhqI5eJjh/JIu8tPj5q+T7iLvW/JAYUqmE7KOB4R1ZyEhzBaIQpQpardBF5z8A==",
4629 + "license": "MIT"
4630 + },
4631 "node_modules/file-entry-cache": {
4632 "version": "8.0.0",
4633 "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-8.0.0.tgz",
@@ -4207,6 +4645,7 @@
4645 "version": "7.1.1",
4646 "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz",
4647 "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==",
4648 + "dev": true,
4649 "license": "MIT",
4650 "dependencies": {
4651 "to-regex-range": "^5.0.1"
@@ -4257,6 +4696,7 @@
4696 "version": "3.3.0",
4697 "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.3.0.tgz",
4698 "integrity": "sha512-Ld2g8rrAyMYFXBhEqMz8ZAHBi4J4uS1i/CxGMDnjyFWddMXLVcDp051DZfu+t7+ab7Wv6SMqpWmyFIj5UbfFvg==",
4699 + "dev": true,
4700 "license": "ISC",
4701 "dependencies": {
4702 "cross-spawn": "^7.0.0",
@@ -4287,6 +4727,7 @@
4727 "version": "2.3.3",
4728 "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz",
4729 "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==",
4730 + "dev": true,
4731 "hasInstallScript": true,
4732 "license": "MIT",
4733 "optional": true,
@@ -4301,6 +4742,7 @@
4742 "version": "1.1.2",
4743 "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz",
4744 "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==",
4745 + "dev": true,
4746 "license": "MIT",
4747 "funding": {
4748 "url": "https://github.com/sponsors/ljharb"
@@ -4319,6 +4761,7 @@
4761 "version": "10.4.5",
4762 "resolved": "https://registry.npmjs.org/glob/-/glob-10.4.5.tgz",
4763 "integrity": "sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==",
4764 + "dev": true,
4765 "license": "ISC",
4766 "dependencies": {
4767 "foreground-child": "^3.1.0",
@@ -4339,6 +4782,7 @@
4782 "version": "6.0.2",
4783 "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz",
4784 "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==",
4785 + "dev": true,
4786 "license": "ISC",
4787 "dependencies": {
4788 "is-glob": "^4.0.3"
@@ -4351,6 +4795,7 @@
4795 "version": "2.0.2",
4796 "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz",
4797 "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==",
4798 + "dev": true,
4799 "license": "MIT",
4800 "dependencies": {
4801 "balanced-match": "^1.0.0"
@@ -4360,6 +4805,7 @@
4805 "version": "9.0.5",
4806 "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz",
4807 "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==",
4808 + "dev": true,
4809 "license": "ISC",
4810 "dependencies": {
4811 "brace-expansion": "^2.0.1"
@@ -4384,6 +4830,12 @@
4830 "url": "https://github.com/sponsors/sindresorhus"
4831 }
4832 },
4833 + "node_modules/glsl-noise": {
4834 + "version": "0.0.0",
4835 + "resolved": "https://registry.npmjs.org/glsl-noise/-/glsl-noise-0.0.0.tgz",
4836 + "integrity": "sha512-b/ZCF6amfAUb7dJM/MxRs7AetQEahYzJ8PtgfrmEdtw6uyGOr+ZSGtgjFm6mfsBkxJ4d2W7kg+Nlqzqvn3Bc0w==",
4837 + "license": "MIT"
4838 + },
4839 "node_modules/graphemer": {
4840 "version": "1.4.0",
4841 "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz",
@@ -4405,6 +4857,7 @@
4857 "version": "2.0.2",
4858 "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz",
4859 "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==",
4860 + "dev": true,
4861 "license": "MIT",
4862 "dependencies": {
4863 "function-bind": "^1.1.2"
@@ -4413,6 +4866,32 @@
4866 "node": ">= 0.4"
4867 }
4868 },
4869 + "node_modules/hls.js": {
4870 + "version": "1.6.15",
4871 + "resolved": "https://registry.npmjs.org/hls.js/-/hls.js-1.6.15.tgz",
4872 + "integrity": "sha512-E3a5VwgXimGHwpRGV+WxRTKeSp2DW5DI5MWv34ulL3t5UNmyJWCQ1KmLEHbYzcfThfXG8amBL+fCYPneGHC4VA==",
4873 + "license": "Apache-2.0"
4874 + },
4875 + "node_modules/ieee754": {
4876 + "version": "1.2.1",
4877 + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz",
4878 + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==",
4879 + "funding": [
4880 + {
4881 + "type": "github",
4882 + "url": "https://github.com/sponsors/feross"
4883 + },
4884 + {
4885 + "type": "patreon",
4886 + "url": "https://www.patreon.com/feross"
4887 + },
4888 + {
4889 + "type": "consulting",
4890 + "url": "https://feross.org/support"
4891 + }
4892 + ],
4893 + "license": "BSD-3-Clause"
4894 + },
4895 "node_modules/ignore": {
4896 "version": "5.3.2",
4897 "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz",
@@ -4423,6 +4902,12 @@
4902 "node": ">= 4"
4903 }
4904 },
4905 + "node_modules/immediate": {
4906 + "version": "3.0.6",
4907 + "resolved": "https://registry.npmjs.org/immediate/-/immediate-3.0.6.tgz",
4908 + "integrity": "sha512-XXOFtyqDjNDAQxVfYxuF7g9Il/IbWmmlQg2MYKOH8ExIT1qg6xc4zyS3HaEEATgs1btfzxq15ciUiY7gjSXRGQ==",
4909 + "license": "MIT"
4910 + },
4911 "node_modules/import-fresh": {
4912 "version": "3.3.1",
4913 "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.1.tgz",
@@ -4473,6 +4958,7 @@
4958 "version": "2.1.0",
4959 "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz",
4960 "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==",
4961 + "dev": true,
4962 "license": "MIT",
4963 "dependencies": {
4964 "binary-extensions": "^2.0.0"
@@ -4485,6 +4971,7 @@
4971 "version": "2.15.1",
4972 "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.15.1.tgz",
4973 "integrity": "sha512-z0vtXSwucUJtANQWldhbtbt7BnL0vxiFjIdDLAatwhDYty2bad6s+rijD6Ri4YuYJubLzIJLUidCh09e1djEVQ==",
4974 + "dev": true,
4975 "license": "MIT",
4976 "dependencies": {
4977 "hasown": "^2.0.2"
@@ -4500,6 +4987,7 @@
4987 "version": "2.1.1",
4988 "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz",
4989 "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==",
4990 + "dev": true,
4991 "license": "MIT",
4992 "engines": {
4993 "node": ">=0.10.0"
@@ -4509,6 +4997,7 @@
4997 "version": "3.0.0",
4998 "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz",
4999 "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==",
5000 + "dev": true,
5001 "license": "MIT",
5002 "engines": {
5003 "node": ">=8"
@@ -4518,6 +5007,7 @@
5007 "version": "4.0.3",
5008 "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz",
5009 "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==",
5010 + "dev": true,
5011 "license": "MIT",
5012 "dependencies": {
5013 "is-extglob": "^2.1.1"
@@ -4530,21 +5020,50 @@
5020 "version": "7.0.0",
5021 "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz",
5022 "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==",
5023 + "dev": true,
5024 "license": "MIT",
5025 "engines": {
5026 "node": ">=0.12.0"
5027 }
5028 },
5029 + "node_modules/is-promise": {
5030 + "version": "2.2.2",
5031 + "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-2.2.2.tgz",
5032 + "integrity": "sha512-+lP4/6lKUBfQjZ2pdxThZvLUAafmZb8OAxFb8XXtiQmS35INgr85hdOGoEs124ez1FCnZJt6jau/T+alh58QFQ==",
5033 + "license": "MIT"
5034 + },
5035 "node_modules/isexe": {
5036 "version": "2.0.0",
5037 "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz",
5038 "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==",
5039 "license": "ISC"
5040 },
5041 + "node_modules/its-fine": {
5042 + "version": "1.2.5",
5043 + "resolved": "https://registry.npmjs.org/its-fine/-/its-fine-1.2.5.tgz",
5044 + "integrity": "sha512-fXtDA0X0t0eBYAGLVM5YsgJGsJ5jEmqZEPrGbzdf5awjv0xE7nqv3TVnvtUF060Tkes15DbDAKW/I48vsb6SyA==",
5045 + "license": "MIT",
5046 + "dependencies": {
5047 + "@types/react-reconciler": "^0.28.0"
5048 + },
5049 + "peerDependencies": {
5050 + "react": ">=18.0"
5051 + }
5052 + },
5053 + "node_modules/its-fine/node_modules/@types/react-reconciler": {
5054 + "version": "0.28.9",
5055 + "resolved": "https://registry.npmjs.org/@types/react-reconciler/-/react-reconciler-0.28.9.tgz",
5056 + "integrity": "sha512-HHM3nxyUZ3zAylX8ZEyrDNd2XZOnQ0D5XfunJF5FLQnZbHHYq4UWvW1QfelQNXv1ICNkwYhfxjwfnqivYB6bFg==",
5057 + "license": "MIT",
5058 + "peerDependencies": {
5059 + "@types/react": "*"
5060 + }
5061 + },
5062 "node_modules/jackspeak": {
5063 "version": "3.4.3",
5064 "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-3.4.3.tgz",
5065 "integrity": "sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==",
5066 + "dev": true,
5067 "license": "BlueOak-1.0.0",
5068 "dependencies": {
5069 "@isaacs/cliui": "^8.0.2"
@@ -4560,6 +5079,7 @@
5079 "version": "1.21.6",
5080 "resolved": "https://registry.npmjs.org/jiti/-/jiti-1.21.6.tgz",
5081 "integrity": "sha512-2yTgeWTWzMWkHu6Jp9NKgePDaYHbntiwvYuuJLbbN9vl7DC9DvXKOB2BC3ZZ92D3cvV/aflH0osDfwpHepQ53w==",
5082 + "dev": true,
5083 "license": "MIT",
5084 "bin": {
5085 "jiti": "bin/jiti.js"
@@ -4629,10 +5149,20 @@
5149 "node": ">= 0.8.0"
5150 }
5151 },
5152 + "node_modules/lie": {
5153 + "version": "3.3.0",
5154 + "resolved": "https://registry.npmjs.org/lie/-/lie-3.3.0.tgz",
5155 + "integrity": "sha512-UaiMJzeWRlEujzAuw5LokY1L5ecNQYZKfmyZ9L7wDHb/p5etKaxXhohBcrw0EYby+G/NA52vRSN4N39dxHAIwQ==",
5156 + "license": "MIT",
5157 + "dependencies": {
5158 + "immediate": "~3.0.5"
5159 + }
5160 + },
5161 "node_modules/lilconfig": {
5162 "version": "3.1.3",
5163 "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-3.1.3.tgz",
5164 "integrity": "sha512-/vlFKAoH5Cgt3Ie+JLhRbwOsCQePABiU3tJ1egGvyQ+33R/vcwM2Zl2QR/LzjsBeItPt3oSVXapn+m4nQDvpzw==",
5165 + "dev": true,
5166 "license": "MIT",
5167 "engines": {
5168 "node": ">=14"
@@ -4645,6 +5175,7 @@
5175 "version": "1.2.4",
5176 "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz",
5177 "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==",
5178 + "dev": true,
5179 "license": "MIT"
5180 },
5181 "node_modules/locate-path": {
@@ -5154,6 +5685,7 @@
5685 "version": "10.4.3",
5686 "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz",
5687 "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==",
5688 + "dev": true,
5689 "license": "ISC"
5690 },
5691 "node_modules/lucide-react": {
@@ -5164,6 +5696,16 @@
5696 "react": "^16.5.1 || ^17.0.0 || ^18.0.0 || ^19.0.0-rc"
5697 }
5698 },
5699 + "node_modules/maath": {
5700 + "version": "0.10.8",
5701 + "resolved": "https://registry.npmjs.org/maath/-/maath-0.10.8.tgz",
5702 + "integrity": "sha512-tRvbDF0Pgqz+9XUa4jjfgAQ8/aPKmQdWXilFu2tMy4GWj4NOsx99HlULO4IeREfbO3a0sA145DZYyvXPkybm0g==",
5703 + "license": "MIT",
5704 + "peerDependencies": {
5705 + "@types/three": ">=0.134.0",
5706 + "three": ">=0.134.0"
5707 + }
5708 + },
5709 "node_modules/magic-string": {
5710 "version": "0.30.12",
5711 "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.12.tgz",
@@ -5178,15 +5720,32 @@
5720 "version": "1.4.1",
5721 "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz",
5722 "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==",
5723 + "dev": true,
5724 "license": "MIT",
5725 "engines": {
5726 "node": ">= 8"
5727 }
5728 },
5729 + "node_modules/meshline": {
5730 + "version": "3.3.1",
5731 + "resolved": "https://registry.npmjs.org/meshline/-/meshline-3.3.1.tgz",
5732 + "integrity": "sha512-/TQj+JdZkeSUOl5Mk2J7eLcYTLiQm2IDzmlSvYm7ov15anEcDJ92GHqqazxTSreeNgfnYu24kiEvvv0WlbCdFQ==",
5733 + "license": "MIT",
5734 + "peerDependencies": {
5735 + "three": ">=0.137"
5736 + }
5737 + },
5738 + "node_modules/meshoptimizer": {
5739 + "version": "0.22.0",
5740 + "resolved": "https://registry.npmjs.org/meshoptimizer/-/meshoptimizer-0.22.0.tgz",
5741 + "integrity": "sha512-IebiK79sqIy+E4EgOr+CAw+Ke8hAspXKzBd0JdgEmPHiAwmvEj2S4h1rfvo+o/BnfEYd/jAOg5IeeIjzlzSnDg==",
5742 + "license": "MIT"
5743 + },
5744 "node_modules/micromatch": {
5745 "version": "4.0.8",
5746 "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz",
5747 "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==",
5748 + "dev": true,
5749 "license": "MIT",
5750 "dependencies": {
5751 "braces": "^3.0.3",
@@ -5213,6 +5772,7 @@
5772 "version": "7.1.2",
5773 "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz",
5774 "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==",
5775 + "dev": true,
5776 "license": "ISC",
5777 "engines": {
5778 "node": ">=16 || 14 >=14.17"
@@ -5229,6 +5789,7 @@
5789 "version": "2.7.0",
5790 "resolved": "https://registry.npmjs.org/mz/-/mz-2.7.0.tgz",
5791 "integrity": "sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==",
5792 + "dev": true,
5793 "license": "MIT",
5794 "dependencies": {
5795 "any-promise": "^1.0.0",
@@ -5240,6 +5801,7 @@
5801 "version": "3.3.11",
5802 "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.11.tgz",
5803 "integrity": "sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==",
5804 + "dev": true,
5805 "funding": [
5806 {
5807 "type": "github",
@@ -5282,6 +5844,7 @@
5844 "version": "3.0.0",
5845 "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz",
5846 "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==",
5847 + "dev": true,
5848 "license": "MIT",
5849 "engines": {
5850 "node": ">=0.10.0"
@@ -5310,6 +5873,7 @@
5873 "version": "3.0.0",
5874 "resolved": "https://registry.npmjs.org/object-hash/-/object-hash-3.0.0.tgz",
5875 "integrity": "sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==",
5876 + "dev": true,
5877 "license": "MIT",
5878 "engines": {
5879 "node": ">= 6"
@@ -5369,6 +5933,7 @@
5933 "version": "1.0.1",
5934 "resolved": "https://registry.npmjs.org/package-json-from-dist/-/package-json-from-dist-1.0.1.tgz",
5935 "integrity": "sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==",
5936 + "dev": true,
5937 "license": "BlueOak-1.0.0"
5938 },
5939 "node_modules/parent-module": {
@@ -5407,12 +5972,14 @@
5972 "version": "1.0.7",
5973 "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz",
5974 "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==",
5975 + "dev": true,
5976 "license": "MIT"
5977 },
5978 "node_modules/path-scurry": {
5979 "version": "1.11.1",
5980 "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.11.1.tgz",
5981 "integrity": "sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==",
5982 + "dev": true,
5983 "license": "BlueOak-1.0.0",
5984 "dependencies": {
5985 "lru-cache": "^10.2.0",
@@ -5429,12 +5996,14 @@
5996 "version": "1.1.1",
5997 "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz",
5998 "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==",
5999 + "dev": true,
6000 "license": "ISC"
6001 },
6002 "node_modules/picomatch": {
6003 "version": "2.3.1",
6004 "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz",
6005 "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==",
6006 + "dev": true,
6007 "license": "MIT",
6008 "engines": {
6009 "node": ">=8.6"
@@ -5447,6 +6016,7 @@
6016 "version": "2.3.0",
6017 "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz",
6018 "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==",
6019 + "dev": true,
6020 "license": "MIT",
6021 "engines": {
6022 "node": ">=0.10.0"
@@ -5456,6 +6026,7 @@
6026 "version": "4.0.6",
6027 "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.6.tgz",
6028 "integrity": "sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==",
6029 + "dev": true,
6030 "license": "MIT",
6031 "engines": {
6032 "node": ">= 6"
@@ -5465,6 +6036,7 @@
6036 "version": "8.5.6",
6037 "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.6.tgz",
6038 "integrity": "sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg==",
6039 + "dev": true,
6040 "funding": [
6041 {
6042 "type": "opencollective",
@@ -5493,6 +6065,7 @@
6065 "version": "15.1.0",
6066 "resolved": "https://registry.npmjs.org/postcss-import/-/postcss-import-15.1.0.tgz",
6067 "integrity": "sha512-hpr+J05B2FVYUAXHeK1YyI267J/dDDhMU6B6civm8hSY1jYJnBXxzKDKDswzJmtLHryrjhnDjqqp/49t8FALew==",
6068 + "dev": true,
6069 "license": "MIT",
6070 "dependencies": {
6071 "postcss-value-parser": "^4.0.0",
@@ -5510,6 +6083,7 @@
6083 "version": "4.0.1",
6084 "resolved": "https://registry.npmjs.org/postcss-js/-/postcss-js-4.0.1.tgz",
6085 "integrity": "sha512-dDLF8pEO191hJMtlHFPRa8xsizHaM82MLfNkUHdUtVEV3tgTp5oj+8qbEqYM57SLfc74KSbw//4SeJma2LRVIw==",
6086 + "dev": true,
6087 "license": "MIT",
6088 "dependencies": {
6089 "camelcase-css": "^2.0.1"
@@ -5529,6 +6103,7 @@
6103 "version": "4.0.2",
6104 "resolved": "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-4.0.2.tgz",
6105 "integrity": "sha512-bSVhyJGL00wMVoPUzAVAnbEoWyqRxkjv64tUl427SKnPrENtq6hJwUojroMz2VB+Q1edmi4IfrAPpami5VVgMQ==",
6106 + "dev": true,
6107 "funding": [
6108 {
6109 "type": "opencollective",
@@ -5564,6 +6139,7 @@
6139 "version": "6.2.0",
6140 "resolved": "https://registry.npmjs.org/postcss-nested/-/postcss-nested-6.2.0.tgz",
6141 "integrity": "sha512-HQbt28KulC5AJzG+cZtj9kvKB93CFCdLvog1WFLf1D+xmMvPGlBstkpTEZfK5+AN9hfJocyBFCNiqyS48bpgzQ==",
6142 + "dev": true,
6143 "funding": [
6144 {
6145 "type": "opencollective",
@@ -5589,6 +6165,7 @@
6165 "version": "6.1.2",
6166 "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.1.2.tgz",
6167 "integrity": "sha512-Q8qQfPiZ+THO/3ZrOrO0cJJKfpYCagtMUkXbnEfmgUjwXg6z/WBeOyS9APBBPCTSiDV+s4SwQGu8yFsiMRIudg==",
6168 + "dev": true,
6169 "license": "MIT",
6170 "dependencies": {
6171 "cssesc": "^3.0.0",
@@ -5602,8 +6179,15 @@
6179 "version": "4.2.0",
6180 "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz",
6181 "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==",
6182 + "dev": true,
6183 "license": "MIT"
6184 },
6185 + "node_modules/potpack": {
6186 + "version": "1.0.2",
6187 + "resolved": "https://registry.npmjs.org/potpack/-/potpack-1.0.2.tgz",
6188 + "integrity": "sha512-choctRBIV9EMT9WGAZHn3V7t0Z2pMQyl0EZE6pFc/6ml3ssw7Dlf/oAOvFwjm1HVsqfQN8GfeFyJ+d8tRzqueQ==",
6189 + "license": "ISC"
6190 + },
6191 "node_modules/prelude-ls": {
6192 "version": "1.2.1",
6193 "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz",
@@ -5614,6 +6198,16 @@
6198 "node": ">= 0.8.0"
6199 }
6200 },
6201 + "node_modules/promise-worker-transferable": {
6202 + "version": "1.0.4",
6203 + "resolved": "https://registry.npmjs.org/promise-worker-transferable/-/promise-worker-transferable-1.0.4.tgz",
6204 + "integrity": "sha512-bN+0ehEnrXfxV2ZQvU2PetO0n4gqBD4ulq3MI1WOPLgr7/Mg9yRQkX5+0v1vagr74ZTsl7XtzlaYDo2EuCeYJw==",
6205 + "license": "Apache-2.0",
6206 + "dependencies": {
6207 + "is-promise": "^2.1.0",
6208 + "lie": "^3.0.2"
6209 + }
6210 + },
6211 "node_modules/prop-types": {
6212 "version": "15.8.1",
6213 "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz",
@@ -5645,6 +6239,7 @@
6239 "version": "1.2.3",
6240 "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz",
6241 "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==",
6242 + "dev": true,
6243 "funding": [
6244 {
6245 "type": "github",
@@ -5673,6 +6268,18 @@
6268 "node": ">=0.10.0"
6269 }
6270 },
6271 + "node_modules/react-composer": {
6272 + "version": "5.0.3",
6273 + "resolved": "https://registry.npmjs.org/react-composer/-/react-composer-5.0.3.tgz",
6274 + "integrity": "sha512-1uWd07EME6XZvMfapwZmc7NgCZqDemcvicRi3wMJzXsQLvZ3L7fTHVyPy1bZdnWXM4iPjYuNE+uJ41MLKeTtnA==",
6275 + "license": "MIT",
6276 + "dependencies": {
6277 + "prop-types": "^15.6.0"
6278 + },
6279 + "peerDependencies": {
6280 + "react": "^15.0.0 || ^16.0.0 || ^17.0.0 || ^18.0.0"
6281 + }
6282 + },
6283 "node_modules/react-day-picker": {
6284 "version": "8.10.1",
6285 "resolved": "https://registry.npmjs.org/react-day-picker/-/react-day-picker-8.10.1.tgz",
@@ -5722,6 +6329,31 @@
6329 "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==",
6330 "license": "MIT"
6331 },
6332 + "node_modules/react-reconciler": {
6333 + "version": "0.27.0",
6334 + "resolved": "https://registry.npmjs.org/react-reconciler/-/react-reconciler-0.27.0.tgz",
6335 + "integrity": "sha512-HmMDKciQjYmBRGuuhIaKA1ba/7a+UsM5FzOZsMO2JYHt9Jh8reCb7j1eDC95NOyUlKM9KRyvdx0flBuDvYSBoA==",
6336 + "license": "MIT",
6337 + "dependencies": {
6338 + "loose-envify": "^1.1.0",
6339 + "scheduler": "^0.21.0"
6340 + },
6341 + "engines": {
6342 + "node": ">=0.10.0"
6343 + },
6344 + "peerDependencies": {
6345 + "react": "^18.0.0"
6346 + }
6347 + },
6348 + "node_modules/react-reconciler/node_modules/scheduler": {
6349 + "version": "0.21.0",
6350 + "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.21.0.tgz",
6351 + "integrity": "sha512-1r87x5fz9MXqswA2ERLo0EbOAU74DpIUO090gIasYTqlVoJeMcl+Z1Rg7WHz+qtPujhS/hGIt9kxZOYBV3faRQ==",
6352 + "license": "MIT",
6353 + "dependencies": {
6354 + "loose-envify": "^1.1.0"
6355 + }
6356 + },
6357 "node_modules/react-remove-scroll": {
6358 "version": "2.7.1",
6359 "resolved": "https://registry.npmjs.org/react-remove-scroll/-/react-remove-scroll-2.7.1.tgz",
@@ -5864,10 +6496,26 @@
6496 "react-dom": ">=16.6.0"
6497 }
6498 },
6499 + "node_modules/react-use-measure": {
6500 + "version": "2.1.7",
6501 + "resolved": "https://registry.npmjs.org/react-use-measure/-/react-use-measure-2.1.7.tgz",
6502 + "integrity": "sha512-KrvcAo13I/60HpwGO5jpW7E9DfusKyLPLvuHlUyP5zqnmAPhNc6qTRjUQrdTADl0lpPpDVU2/Gg51UlOGHXbdg==",
6503 + "license": "MIT",
6504 + "peerDependencies": {
6505 + "react": ">=16.13",
6506 + "react-dom": ">=16.13"
6507 + },
6508 + "peerDependenciesMeta": {
6509 + "react-dom": {
6510 + "optional": true
6511 + }
6512 + }
6513 + },
6514 "node_modules/read-cache": {
6515 "version": "1.0.0",
6516 "resolved": "https://registry.npmjs.org/read-cache/-/read-cache-1.0.0.tgz",
6517 "integrity": "sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==",
6518 + "dev": true,
6519 "license": "MIT",
6520 "dependencies": {
6521 "pify": "^2.3.0"
@@ -5877,6 +6525,7 @@
6525 "version": "3.6.0",
6526 "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz",
6527 "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==",
6528 + "dev": true,
6529 "license": "MIT",
6530 "dependencies": {
6531 "picomatch": "^2.2.1"
@@ -5917,10 +6566,20 @@
6566 "decimal.js-light": "^2.4.1"
6567 }
6568 },
6569 + "node_modules/require-from-string": {
6570 + "version": "2.0.2",
6571 + "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz",
6572 + "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==",
6573 + "license": "MIT",
6574 + "engines": {
6575 + "node": ">=0.10.0"
6576 + }
6577 + },
6578 "node_modules/resolve": {
6579 "version": "1.22.8",
6580 "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz",
6581 "integrity": "sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==",
6582 + "dev": true,
6583 "license": "MIT",
6584 "dependencies": {
6585 "is-core-module": "^2.13.0",
@@ -5948,6 +6607,7 @@
6607 "version": "1.0.4",
6608 "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz",
6609 "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==",
6610 + "dev": true,
6611 "license": "MIT",
6612 "engines": {
6613 "iojs": ">=1.0.0",
@@ -5994,6 +6654,7 @@
6654 "version": "1.2.0",
6655 "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz",
6656 "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==",
6657 + "dev": true,
6658 "funding": [
6659 {
6660 "type": "github",
@@ -6060,6 +6721,7 @@
6721 "version": "4.1.0",
6722 "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz",
6723 "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==",
6724 + "dev": true,
6725 "license": "ISC",
6726 "engines": {
6727 "node": ">=14"
@@ -6082,15 +6744,43 @@
6744 "version": "1.2.1",
6745 "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz",
6746 "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==",
6747 + "dev": true,
6748 "license": "BSD-3-Clause",
6749 "engines": {
6750 "node": ">=0.10.0"
6751 }
6752 },
6753 + "node_modules/stats-gl": {
6754 + "version": "2.4.2",
6755 + "resolved": "https://registry.npmjs.org/stats-gl/-/stats-gl-2.4.2.tgz",
6756 + "integrity": "sha512-g5O9B0hm9CvnM36+v7SFl39T7hmAlv541tU81ME8YeSb3i1CIP5/QdDeSB3A0la0bKNHpxpwxOVRo2wFTYEosQ==",
6757 + "license": "MIT",
6758 + "dependencies": {
6759 + "@types/three": "*",
6760 + "three": "^0.170.0"
6761 + },
6762 + "peerDependencies": {
6763 + "@types/three": "*",
6764 + "three": "*"
6765 + }
6766 + },
6767 + "node_modules/stats-gl/node_modules/three": {
6768 + "version": "0.170.0",
6769 + "resolved": "https://registry.npmjs.org/three/-/three-0.170.0.tgz",
6770 + "integrity": "sha512-FQK+LEpYc0fBD+J8g6oSEyyNzjp+Q7Ks1C568WWaoMRLW+TkNNWmenWeGgJjV105Gd+p/2ql1ZcjYvNiPZBhuQ==",
6771 + "license": "MIT"
6772 + },
6773 + "node_modules/stats.js": {
6774 + "version": "0.17.0",
6775 + "resolved": "https://registry.npmjs.org/stats.js/-/stats.js-0.17.0.tgz",
6776 + "integrity": "sha512-hNKz8phvYLPEcRkeG1rsGmV5ChMjKDAWU7/OJJdDErPBNChQXxCo3WZurGpnWc6gZhAzEPFad1aVgyOANH1sMw==",
6777 + "license": "MIT"
6778 + },
6779 "node_modules/string-width": {
6780 "version": "5.1.2",
6781 "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz",
6782 "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==",
6783 + "dev": true,
6784 "license": "MIT",
6785 "dependencies": {
6786 "eastasianwidth": "^0.2.0",
@@ -6109,6 +6799,7 @@
6799 "version": "4.2.3",
6800 "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz",
6801 "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==",
6802 + "dev": true,
6803 "license": "MIT",
6804 "dependencies": {
6805 "emoji-regex": "^8.0.0",
@@ -6123,6 +6814,7 @@
6814 "version": "5.0.1",
6815 "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz",
6816 "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==",
6817 + "dev": true,
6818 "license": "MIT",
6819 "engines": {
6820 "node": ">=8"
@@ -6132,12 +6824,14 @@
6824 "version": "8.0.0",
6825 "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz",
6826 "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==",
6827 + "dev": true,
6828 "license": "MIT"
6829 },
6830 "node_modules/string-width-cjs/node_modules/strip-ansi": {
6831 "version": "6.0.1",
6832 "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz",
6833 "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
6834 + "dev": true,
6835 "license": "MIT",
6836 "dependencies": {
6837 "ansi-regex": "^5.0.1"
@@ -6150,6 +6844,7 @@
6844 "version": "7.1.0",
6845 "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz",
6846 "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==",
6847 + "dev": true,
6848 "license": "MIT",
6849 "dependencies": {
6850 "ansi-regex": "^6.0.1"
@@ -6166,6 +6861,7 @@
6861 "version": "6.0.1",
6862 "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz",
6863 "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
6864 + "dev": true,
6865 "license": "MIT",
6866 "dependencies": {
6867 "ansi-regex": "^5.0.1"
@@ -6178,6 +6874,7 @@
6874 "version": "5.0.1",
6875 "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz",
6876 "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==",
6877 + "dev": true,
6878 "license": "MIT",
6879 "engines": {
6880 "node": ">=8"
@@ -6200,6 +6897,7 @@
6897 "version": "3.35.0",
6898 "resolved": "https://registry.npmjs.org/sucrase/-/sucrase-3.35.0.tgz",
6899 "integrity": "sha512-8EbVDiu9iN/nESwxeSxDKe0dunta1GOlHufmSSXxMD2z2/tMZpDMpvXQGsc+ajGo8y2uYUmixaSRUc/QPoQ0GA==",
6900 + "dev": true,
6901 "license": "MIT",
6902 "dependencies": {
6903 "@jridgewell/gen-mapping": "^0.3.2",
@@ -6235,6 +6933,7 @@
6933 "version": "1.0.0",
6934 "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz",
6935 "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==",
6936 + "dev": true,
6937 "license": "MIT",
6938 "engines": {
6939 "node": ">= 0.4"
@@ -6243,6 +6942,15 @@
6942 "url": "https://github.com/sponsors/ljharb"
6943 }
6944 },
6945 + "node_modules/suspend-react": {
6946 + "version": "0.1.3",
6947 + "resolved": "https://registry.npmjs.org/suspend-react/-/suspend-react-0.1.3.tgz",
6948 + "integrity": "sha512-aqldKgX9aZqpoDp3e8/BZ8Dm7x1pJl+qI3ZKxDN0i/IQTWUwBx/ManmlVJ3wowqbno6c2bmiIfs+Um6LbsjJyQ==",
6949 + "license": "MIT",
6950 + "peerDependencies": {
6951 + "react": ">=17.0"
6952 + }
6953 + },
6954 "node_modules/tailwind-merge": {
6955 "version": "2.6.0",
6956 "resolved": "https://registry.npmjs.org/tailwind-merge/-/tailwind-merge-2.6.0.tgz",
@@ -6257,6 +6965,7 @@
6965 "version": "3.4.17",
6966 "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-3.4.17.tgz",
6967 "integrity": "sha512-w33E2aCvSDP0tW9RZuNXadXlkHXqFzSkQew/aIa2i/Sj8fThxwovwlXHSPXTbAHwEIhBFXAedUhP2tueAKP8Og==",
6968 + "dev": true,
6969 "license": "MIT",
6970 "dependencies": {
6971 "@alloc/quick-lru": "^5.2.0",
@@ -6303,6 +7012,7 @@
7012 "version": "3.3.1",
7013 "resolved": "https://registry.npmjs.org/thenify/-/thenify-3.3.1.tgz",
7014 "integrity": "sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==",
7015 + "dev": true,
7016 "license": "MIT",
7017 "dependencies": {
7018 "any-promise": "^1.0.0"
@@ -6312,6 +7022,7 @@
7022 "version": "1.6.0",
7023 "resolved": "https://registry.npmjs.org/thenify-all/-/thenify-all-1.6.0.tgz",
7024 "integrity": "sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==",
7025 + "dev": true,
7026 "license": "MIT",
7027 "dependencies": {
7028 "thenify": ">= 3.1.0 < 4"
@@ -6320,6 +7031,45 @@
7031 "node": ">=0.8"
7032 }
7033 },
7034 + "node_modules/three": {
7035 + "version": "0.160.1",
7036 + "resolved": "https://registry.npmjs.org/three/-/three-0.160.1.tgz",
7037 + "integrity": "sha512-Bgl2wPJypDOZ1stAxwfWAcJ0WQf7QzlptsxkjYiURPz+n5k4RBDLsq+6f9Y75TYxn6aHLcWz+JNmwTOXWrQTBQ==",
7038 + "license": "MIT"
7039 + },
7040 + "node_modules/three-mesh-bvh": {
7041 + "version": "0.7.8",
7042 + "resolved": "https://registry.npmjs.org/three-mesh-bvh/-/three-mesh-bvh-0.7.8.tgz",
7043 + "integrity": "sha512-BGEZTOIC14U0XIRw3tO4jY7IjP7n7v24nv9JXS1CyeVRWOCkcOMhRnmENUjuV39gktAw4Ofhr0OvIAiTspQrrw==",
7044 + "deprecated": "Deprecated due to three.js version incompatibility. Please use v0.8.0, instead.",
7045 + "license": "MIT",
7046 + "peerDependencies": {
7047 + "three": ">= 0.151.0"
7048 + }
7049 + },
7050 + "node_modules/three-stdlib": {
7051 + "version": "2.36.1",
7052 + "resolved": "https://registry.npmjs.org/three-stdlib/-/three-stdlib-2.36.1.tgz",
7053 + "integrity": "sha512-XyGQrFmNQ5O/IoKm556ftwKsBg11TIb301MB5dWNicziQBEs2g3gtOYIf7pFiLa0zI2gUwhtCjv9fmjnxKZ1Cg==",
7054 + "license": "MIT",
7055 + "dependencies": {
7056 + "@types/draco3d": "^1.4.0",
7057 + "@types/offscreencanvas": "^2019.6.4",
7058 + "@types/webxr": "^0.5.2",
7059 + "draco3d": "^1.4.1",
7060 + "fflate": "^0.6.9",
7061 + "potpack": "^1.0.1"
7062 + },
7063 + "peerDependencies": {
7064 + "three": ">=0.128.0"
7065 + }
7066 + },
7067 + "node_modules/three-stdlib/node_modules/fflate": {
7068 + "version": "0.6.10",
7069 + "resolved": "https://registry.npmjs.org/fflate/-/fflate-0.6.10.tgz",
7070 + "integrity": "sha512-IQrh3lEPM93wVCEczc9SaAOvkmcoQn/G8Bo1e8ZPlY3X3bnAxWaBdvTdvM1hP62iZp0BXWDy4vTAy4fF0+Dlpg==",
7071 + "license": "MIT"
7072 + },
7073 "node_modules/tiny-invariant": {
7074 "version": "1.3.3",
7075 "resolved": "https://registry.npmjs.org/tiny-invariant/-/tiny-invariant-1.3.3.tgz",
@@ -6330,6 +7080,7 @@
7080 "version": "5.0.1",
7081 "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz",
7082 "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==",
7083 + "dev": true,
7084 "license": "MIT",
7085 "dependencies": {
7086 "is-number": "^7.0.0"
@@ -6338,6 +7089,36 @@
7089 "node": ">=8.0"
7090 }
7091 },
7092 + "node_modules/troika-three-text": {
7093 + "version": "0.52.4",
7094 + "resolved": "https://registry.npmjs.org/troika-three-text/-/troika-three-text-0.52.4.tgz",
7095 + "integrity": "sha512-V50EwcYGruV5rUZ9F4aNsrytGdKcXKALjEtQXIOBfhVoZU9VAqZNIoGQ3TMiooVqFAbR1w15T+f+8gkzoFzawg==",
7096 + "license": "MIT",
7097 + "dependencies": {
7098 + "bidi-js": "^1.0.2",
7099 + "troika-three-utils": "^0.52.4",
7100 + "troika-worker-utils": "^0.52.0",
7101 + "webgl-sdf-generator": "1.1.1"
7102 + },
7103 + "peerDependencies": {
7104 + "three": ">=0.125.0"
7105 + }
7106 + },
7107 + "node_modules/troika-three-utils": {
7108 + "version": "0.52.4",
7109 + "resolved": "https://registry.npmjs.org/troika-three-utils/-/troika-three-utils-0.52.4.tgz",
7110 + "integrity": "sha512-NORAStSVa/BDiG52Mfudk4j1FG4jC4ILutB3foPnfGbOeIs9+G5vZLa0pnmnaftZUGm4UwSoqEpWdqvC7zms3A==",
7111 + "license": "MIT",
7112 + "peerDependencies": {
7113 + "three": ">=0.125.0"
7114 + }
7115 + },
7116 + "node_modules/troika-worker-utils": {
7117 + "version": "0.52.0",
7118 + "resolved": "https://registry.npmjs.org/troika-worker-utils/-/troika-worker-utils-0.52.0.tgz",
7119 + "integrity": "sha512-W1CpvTHykaPH5brv5VHLfQo9D1OYuo0cSBEUQFFT/nBUzM8iD6Lq2/tgG/f1OelbAS1WtaTPQzE5uM49egnngw==",
7120 + "license": "MIT"
7121 + },
7122 "node_modules/ts-api-utils": {
7123 "version": "2.1.0",
7124 "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-2.1.0.tgz",
@@ -6355,6 +7136,7 @@
7136 "version": "0.1.13",
7137 "resolved": "https://registry.npmjs.org/ts-interface-checker/-/ts-interface-checker-0.1.13.tgz",
7138 "integrity": "sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==",
7139 + "dev": true,
7140 "license": "Apache-2.0"
7141 },
7142 "node_modules/tslib": {
@@ -6363,6 +7145,43 @@
7145 "integrity": "sha512-jWVzBLplnCmoaTr13V9dYbiQ99wvZRd0vNWaDRg+aVYRcjDF3nDksxFDE/+fkXnKhpnUUkmx5pK/v8mCtLVqZA==",
7146 "license": "0BSD"
7147 },
7148 + "node_modules/tunnel-rat": {
7149 + "version": "0.1.2",
7150 + "resolved": "https://registry.npmjs.org/tunnel-rat/-/tunnel-rat-0.1.2.tgz",
7151 + "integrity": "sha512-lR5VHmkPhzdhrM092lI2nACsLO4QubF0/yoOhzX7c+wIpbN1GjHNzCc91QlpxBi+cnx8vVJ+Ur6vL5cEoQPFpQ==",
7152 + "license": "MIT",
7153 + "dependencies": {
7154 + "zustand": "^4.3.2"
7155 + }
7156 + },
7157 + "node_modules/tunnel-rat/node_modules/zustand": {
7158 + "version": "4.5.7",
7159 + "resolved": "https://registry.npmjs.org/zustand/-/zustand-4.5.7.tgz",
7160 + "integrity": "sha512-CHOUy7mu3lbD6o6LJLfllpjkzhHXSBlX8B9+qPddUsIfeF5S/UZ5q0kmCsnRqT1UHFQZchNFDDzMbQsuesHWlw==",
7161 + "license": "MIT",
7162 + "dependencies": {
7163 + "use-sync-external-store": "^1.2.2"
7164 + },
7165 + "engines": {
7166 + "node": ">=12.7.0"
7167 + },
7168 + "peerDependencies": {
7169 + "@types/react": ">=16.8",
7170 + "immer": ">=9.0.6",
7171 + "react": ">=16.8"
7172 + },
7173 + "peerDependenciesMeta": {
7174 + "@types/react": {
7175 + "optional": true
7176 + },
7177 + "immer": {
7178 + "optional": true
7179 + },
7180 + "react": {
7181 + "optional": true
7182 + }
7183 + }
7184 + },
7185 "node_modules/type-check": {
7186 "version": "0.4.0",
7187 "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz",
@@ -6518,8 +7337,18 @@
7337 "version": "1.0.2",
7338 "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",
7339 "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==",
7340 + "dev": true,
7341 "license": "MIT"
7342 },
7343 + "node_modules/utility-types": {
7344 + "version": "3.11.0",
7345 + "resolved": "https://registry.npmjs.org/utility-types/-/utility-types-3.11.0.tgz",
7346 + "integrity": "sha512-6Z7Ma2aVEWisaL6TvBCy7P8rm2LQoPv6dJ7ecIaIixHcwfbJ0x7mWdbcwlIM5IGQxPZSFYeqRCqlOOeKoJYMkw==",
7347 + "license": "MIT",
7348 + "engines": {
7349 + "node": ">= 4"
7350 + }
7351 + },
7352 "node_modules/vaul": {
7353 "version": "0.9.9",
7354 "resolved": "https://registry.npmjs.org/vaul/-/vaul-0.9.9.tgz",
@@ -6615,6 +7444,17 @@
7444 }
7445 }
7446 },
7447 + "node_modules/webgl-constants": {
7448 + "version": "1.1.1",
7449 + "resolved": "https://registry.npmjs.org/webgl-constants/-/webgl-constants-1.1.1.tgz",
7450 + "integrity": "sha512-LkBXKjU5r9vAW7Gcu3T5u+5cvSvh5WwINdr0C+9jpzVB41cjQAP5ePArDtk/WHYdVj0GefCgM73BA7FlIiNtdg=="
7451 + },
7452 + "node_modules/webgl-sdf-generator": {
7453 + "version": "1.1.1",
7454 + "resolved": "https://registry.npmjs.org/webgl-sdf-generator/-/webgl-sdf-generator-1.1.1.tgz",
7455 + "integrity": "sha512-9Z0JcMTFxeE+b2x1LJTdnaT8rT8aEp7MVxkNwoycNmJWwPdzoXzMh0BjJSh/AEFP+KPYZUli814h8bJZFIZ2jA==",
7456 + "license": "MIT"
7457 + },
7458 "node_modules/which": {
7459 "version": "2.0.2",
7460 "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz",
@@ -6644,6 +7484,7 @@
7484 "version": "8.1.0",
7485 "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz",
7486 "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==",
7487 + "dev": true,
7488 "license": "MIT",
7489 "dependencies": {
7490 "ansi-styles": "^6.1.0",
@@ -6662,6 +7503,7 @@
7503 "version": "7.0.0",
7504 "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz",
7505 "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==",
7506 + "dev": true,
7507 "license": "MIT",
7508 "dependencies": {
7509 "ansi-styles": "^4.0.0",
@@ -6679,6 +7521,7 @@
7521 "version": "5.0.1",
7522 "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz",
7523 "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==",
7524 + "dev": true,
7525 "license": "MIT",
7526 "engines": {
7527 "node": ">=8"
@@ -6688,12 +7531,14 @@
7531 "version": "8.0.0",
7532 "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz",
7533 "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==",
7534 + "dev": true,
7535 "license": "MIT"
7536 },
7537 "node_modules/wrap-ansi-cjs/node_modules/string-width": {
7538 "version": "4.2.3",
7539 "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz",
7540 "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==",
7541 + "dev": true,
7542 "license": "MIT",
7543 "dependencies": {
7544 "emoji-regex": "^8.0.0",
@@ -6708,6 +7553,7 @@
7553 "version": "6.0.1",
7554 "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz",
7555 "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
7556 + "dev": true,
7557 "license": "MIT",
7558 "dependencies": {
7559 "ansi-regex": "^5.0.1"
@@ -6720,6 +7566,7 @@
7566 "version": "6.2.1",
7567 "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz",
7568 "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==",
7569 + "dev": true,
7570 "license": "MIT",
7571 "engines": {
7572 "node": ">=12"
@@ -6732,6 +7579,7 @@
7579 "version": "2.6.0",
7580 "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.6.0.tgz",
7581 "integrity": "sha512-a6ae//JvKDEra2kdi1qzCyrJW/WZCgFi8ydDV+eXExl95t+5R+ijnqHJbz9tmMh8FUjx3iv2fCQ4dclAQlO2UQ==",
7582 + "dev": true,
7583 "license": "ISC",
7584 "bin": {
7585 "yaml": "bin.mjs"
@@ -6761,6 +7609,23 @@
7609 "funding": {
7610 "url": "https://github.com/sponsors/colinhacks"
7611 }
7612 + },
7613 + "node_modules/zustand": {
7614 + "version": "3.7.2",
7615 + "resolved": "https://registry.npmjs.org/zustand/-/zustand-3.7.2.tgz",
7616 + "integrity": "sha512-PIJDIZKtokhof+9+60cpockVOq05sJzHCriyvaLBmEJixseQ1a5Kdov6fWZfWOu5SK9c+FhH1jU0tntLxRJYMA==",
7617 + "license": "MIT",
7618 + "engines": {
7619 + "node": ">=12.7.0"
7620 + },
7621 + "peerDependencies": {
7622 + "react": ">=16.8"
7623 + },
7624 + "peerDependenciesMeta": {
7625 + "react": {
7626 + "optional": true
7627 + }
7628 + }
7629 }
7630 }
7631 }
package.json
+3
@@ -39,6 +39,8 @@
39 "@radix-ui/react-toggle": "^1.1.9",
40 "@radix-ui/react-toggle-group": "^1.1.10",
41 "@radix-ui/react-tooltip": "^1.2.7",
42 + "@react-three/drei": "^9.122.0",
43 + "@react-three/fiber": "^8.18.0",
44 "@tanstack/react-query": "^5.83.0",
45 "class-variance-authority": "^0.7.1",
46 "clsx": "^2.1.1",
@@ -58,6 +60,7 @@
60 "sonner": "^1.7.4",
61 "tailwind-merge": "^2.6.0",
62 "tailwindcss-animate": "^1.0.7",
63 + "three": "^0.160.1",
64 "vaul": "^0.9.9",
65 "zod": "^3.25.76"
66 },
public/models/building-model.glb
Binary files /dev/null and b/public/models/building-model.glb differ
src/components/landing/Building3DViewer.tsx new
+39
@@ -0,0 +1,39 @@
1 +import { Canvas } from '@react-three/fiber';
2 +import { OrbitControls, useGLTF, Stage } from '@react-three/drei';
3 +import { Suspense } from 'react';
4 +
5 +function BuildingModel() {
6 + const { scene } = useGLTF('/models/building-model.glb');
7 + return <primitive object={scene} scale={1} />;
8 +}
9 +
10 +const Building3DViewer = () => {
11 + return (
12 + <div className="w-full h-[400px] md:h-[500px] relative">
13 + <div className="absolute inset-0 bg-primary/10 rounded-2xl blur-3xl" />
14 + <div className="relative w-full h-full rounded-2xl overflow-hidden">
15 + <Canvas
16 + camera={{ position: [0, 0, 5], fov: 50 }}
17 + className="bg-transparent"
18 + >
19 + <Suspense fallback={null}>
20 + <Stage environment="city" intensity={0.6}>
21 + <BuildingModel />
22 + </Stage>
23 + <OrbitControls
24 + enableZoom={true}
25 + enablePan={true}
26 + minDistance={2}
27 + maxDistance={10}
28 + />
29 + </Suspense>
30 + </Canvas>
31 + </div>
32 + <div className="absolute bottom-4 left-1/2 -translate-x-1/2 text-sm text-muted-foreground bg-background/80 px-4 py-2 rounded-full backdrop-blur-sm">
33 + Drag to rotate • Scroll to zoom
34 + </div>
35 + </div>
36 + );
37 +};
38 +
39 +export default Building3DViewer;
src/components/landing/Hero.tsx
+3 -10
@@ -1,6 +1,6 @@
1 import { Button } from "@/components/ui/button";
2 import { ArrowRight } from "lucide-react";
3 -import buildingModel from "@/assets/building-3d-model.png";
3 +import Building3DViewer from "./Building3DViewer";
4 const Hero = () => {
5 return <section className="pt-32 pb-20 md:pt-40 md:pb-32 bg-background overflow-hidden">
6 <div className="container">
@@ -19,15 +19,8 @@ const Hero = () => {
19 </div>
20
21 {/* 3D Building Model */}
22 - <div className="mt-16 md:mt-24 flex justify-center animate-fade-up animation-delay-400">
23 - <div className="relative max-w-2xl">
24 - <div className="absolute inset-0 bg-primary/10 rounded-2xl blur-3xl" />
25 - <img
26 - src={buildingModel}
27 - alt="3D Building Model"
28 - className="relative w-full h-auto drop-shadow-2xl"
29 - />
30 - </div>
22 + <div className="mt-16 md:mt-24 max-w-4xl mx-auto animate-fade-up animation-delay-400">
23 + <Building3DViewer />
24 </div>
25 </div>
26 </section>;