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>;