From db9aaecf55da485b9fc29d26b73f16a7820c226a Mon Sep 17 00:00:00 2001 From: Ali Houssain Sareini Date: Sat, 6 Jan 2024 15:15:23 -0500 Subject: [PATCH] initial commit --- .gitignore | 2 + package-lock.json | 2148 +++++++++++++++++++++++++++++++++++ package.json | 22 + public/Geist-UltraBlack.otf | Bin 0 -> 60172 bytes src/Experience.jsx | 71 ++ src/index.html | 13 + src/index.jsx | 20 + src/style.css | 25 + vite.config.js | 39 + 9 files changed, 2340 insertions(+) create mode 100644 .gitignore create mode 100644 package-lock.json create mode 100644 package.json create mode 100644 public/Geist-UltraBlack.otf create mode 100644 src/Experience.jsx create mode 100644 src/index.html create mode 100644 src/index.jsx create mode 100644 src/style.css create mode 100644 vite.config.js diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..db4c6d9 --- /dev/null +++ b/.gitignore @@ -0,0 +1,2 @@ +dist +node_modules \ No newline at end of file diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 0000000..956a8cb --- /dev/null +++ b/package-lock.json @@ -0,0 +1,2148 @@ +{ + "name": "threejs-journey-exercise", + "version": "0.0.0", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "threejs-journey-exercise", + "version": "0.0.0", + "dependencies": { + "@react-three/drei": "^9.88.7", + "@react-three/fiber": "^8.15.8", + "r3f-perf": "^7.1.2", + "react": "18.2", + "react-dom": "18.2", + "three": "^0.158.0" + }, + "devDependencies": { + "@vitejs/plugin-react": "4.1", + "vite": "^4.5.0" + } + }, + "node_modules/@ampproject/remapping": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.1.tgz", + "integrity": "sha512-lFMjJTrFL3j7L9yBxwYfCq2k6qqwHyzuUl/XBnif78PWTJYyL/dfowQHWE3sp6U6ZzqWiiIZnpTMO96zhkjwtg==", + "dev": true, + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.0", + "@jridgewell/trace-mapping": "^0.3.9" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@babel/code-frame": { + "version": "7.23.5", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.23.5.tgz", + "integrity": "sha512-CgH3s1a96LipHCmSUmYFPwY7MNx8C3avkq7i4Wl3cfa662ldtUe4VM1TPXX70pfmrlWTb6jLqTYrZyT2ZTJBgA==", + "dev": true, + "dependencies": { + "@babel/highlight": "^7.23.4", + "chalk": "^2.4.2" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/compat-data": { + "version": "7.23.5", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.23.5.tgz", + "integrity": "sha512-uU27kfDRlhfKl+w1U6vp16IuvSLtjAxdArVXPa9BvLkrr7CYIsxH5adpHObeAGY/41+syctUWOZ140a2Rvkgjw==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/core": { + "version": "7.23.7", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.23.7.tgz", + "integrity": "sha512-+UpDgowcmqe36d4NwqvKsyPMlOLNGMsfMmQ5WGCu+siCe3t3dfe9njrzGfdN4qq+bcNUt0+Vw6haRxBOycs4dw==", + "dev": true, + "dependencies": { + "@ampproject/remapping": "^2.2.0", + "@babel/code-frame": "^7.23.5", + "@babel/generator": "^7.23.6", + "@babel/helper-compilation-targets": "^7.23.6", + "@babel/helper-module-transforms": "^7.23.3", + "@babel/helpers": "^7.23.7", + "@babel/parser": "^7.23.6", + "@babel/template": "^7.22.15", + "@babel/traverse": "^7.23.7", + "@babel/types": "^7.23.6", + "convert-source-map": "^2.0.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.2", + "json5": "^2.2.3", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/babel" + } + }, + "node_modules/@babel/generator": { + "version": "7.23.6", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.23.6.tgz", + "integrity": "sha512-qrSfCYxYQB5owCmGLbl8XRpX1ytXlpueOb0N0UmQwA073KZxejgQTzAmJezxvpwQD9uGtK2shHdi55QT+MbjIw==", + "dev": true, + "dependencies": { + "@babel/types": "^7.23.6", + "@jridgewell/gen-mapping": "^0.3.2", + "@jridgewell/trace-mapping": "^0.3.17", + "jsesc": "^2.5.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-compilation-targets": { + "version": "7.23.6", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.23.6.tgz", + "integrity": "sha512-9JB548GZoQVmzrFgp8o7KxdgkTGm6xs9DW0o/Pim72UDjzr5ObUQ6ZzYPqA+g9OTS2bBQoctLJrky0RDCAWRgQ==", + "dev": true, + "dependencies": { + "@babel/compat-data": "^7.23.5", + "@babel/helper-validator-option": "^7.23.5", + "browserslist": "^4.22.2", + "lru-cache": "^5.1.1", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-environment-visitor": { + "version": "7.22.20", + "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.20.tgz", + "integrity": "sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-function-name": { + "version": "7.23.0", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.23.0.tgz", + "integrity": "sha512-OErEqsrxjZTJciZ4Oo+eoZqeW9UIiOcuYKRJA4ZAgV9myA+pOXhhmpfNCKjEH/auVfEYVFJ6y1Tc4r0eIApqiw==", + "dev": true, + "dependencies": { + "@babel/template": "^7.22.15", + "@babel/types": "^7.23.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-hoist-variables": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.22.5.tgz", + "integrity": "sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw==", + "dev": true, + "dependencies": { + "@babel/types": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-imports": { + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.22.15.tgz", + "integrity": "sha512-0pYVBnDKZO2fnSPCrgM/6WMc7eS20Fbok+0r88fp+YtWVLZrp4CkafFGIp+W0VKw4a22sgebPT99y+FDNMdP4w==", + "dev": true, + "dependencies": { + "@babel/types": "^7.22.15" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-transforms": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.23.3.tgz", + "integrity": "sha512-7bBs4ED9OmswdfDzpz4MpWgSrV7FXlc3zIagvLFjS5H+Mk7Snr21vQ6QwrsoCGMfNC4e4LQPdoULEt4ykz0SRQ==", + "dev": true, + "dependencies": { + "@babel/helper-environment-visitor": "^7.22.20", + "@babel/helper-module-imports": "^7.22.15", + "@babel/helper-simple-access": "^7.22.5", + "@babel/helper-split-export-declaration": "^7.22.6", + "@babel/helper-validator-identifier": "^7.22.20" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-plugin-utils": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.22.5.tgz", + "integrity": "sha512-uLls06UVKgFG9QD4OeFYLEGteMIAa5kpTPcFL28yuCIIzsf6ZyKZMllKVOCZFhiZ5ptnwX4mtKdWCBE/uT4amg==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-simple-access": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.22.5.tgz", + "integrity": "sha512-n0H99E/K+Bika3++WNL17POvo4rKWZ7lZEp1Q+fStVbUi8nxPQEBOlTmCOxW/0JsS56SKKQ+ojAe2pHKJHN35w==", + "dev": true, + "dependencies": { + "@babel/types": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-split-export-declaration": { + "version": "7.22.6", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.22.6.tgz", + "integrity": "sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g==", + "dev": true, + "dependencies": { + "@babel/types": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-string-parser": { + "version": "7.23.4", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.23.4.tgz", + "integrity": "sha512-803gmbQdqwdf4olxrX4AJyFBV/RTr3rSmOj0rKwesmzlfhYNDEs+/iOcznzpNWlJlIlTJC2QfPFcHB6DlzdVLQ==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-identifier": { + "version": "7.22.20", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.20.tgz", + "integrity": "sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-option": { + "version": "7.23.5", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.23.5.tgz", + "integrity": "sha512-85ttAOMLsr53VgXkTbkx8oA6YTfT4q7/HzXSLEYmjcSTJPMPQtvq1BD79Byep5xMUYbGRzEpDsjUf3dyp54IKw==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helpers": { + "version": "7.23.7", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.23.7.tgz", + "integrity": "sha512-6AMnjCoC8wjqBzDHkuqpa7jAKwvMo4dC+lr/TFBz+ucfulO1XMpDnwWPGBNwClOKZ8h6xn5N81W/R5OrcKtCbQ==", + "dev": true, + "dependencies": { + "@babel/template": "^7.22.15", + "@babel/traverse": "^7.23.7", + "@babel/types": "^7.23.6" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/highlight": { + "version": "7.23.4", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.23.4.tgz", + "integrity": "sha512-acGdbYSfp2WheJoJm/EBBBLh/ID8KDc64ISZ9DYtBmC8/Q204PZJLHyzeB5qMzJ5trcOkybd78M4x2KWsUq++A==", + "dev": true, + "dependencies": { + "@babel/helper-validator-identifier": "^7.22.20", + "chalk": "^2.4.2", + "js-tokens": "^4.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/parser": { + "version": "7.23.6", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.23.6.tgz", + "integrity": "sha512-Z2uID7YJ7oNvAI20O9X0bblw7Qqs8Q2hFy0R9tAfnfLkp5MW0UH9eUvnDSnFwKZ0AvgS1ucqR4KzvVHgnke1VQ==", + "dev": true, + "bin": { + "parser": "bin/babel-parser.js" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@babel/plugin-transform-react-jsx-self": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.23.3.tgz", + "integrity": "sha512-qXRvbeKDSfwnlJnanVRp0SfuWE5DQhwQr5xtLBzp56Wabyo+4CMosF6Kfp+eOD/4FYpql64XVJ2W0pVLlJZxOQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-react-jsx-source": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.23.3.tgz", + "integrity": "sha512-91RS0MDnAWDNvGC6Wio5XYkyWI39FMFO+JK9+4AlgaTH+yWwVTsw7/sn6LK0lH7c5F+TFkpv/3LfCJ1Ydwof/g==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/runtime": { + "version": "7.23.7", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.23.7.tgz", + "integrity": "sha512-w06OXVOFso7LcbzMiDGt+3X7Rh7Ho8MmgPoWU3rarH+8upf+wSU/grlGbWzQyr3DkdN6ZeuMFjpdwW0Q+HxobA==", + "dependencies": { + "regenerator-runtime": "^0.14.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/template": { + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.22.15.tgz", + "integrity": "sha512-QPErUVm4uyJa60rkI73qneDacvdvzxshT3kksGqlGWYdOTIUOwJ7RDUL8sGqslY1uXWSL6xMFKEXDS3ox2uF0w==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.22.13", + "@babel/parser": "^7.22.15", + "@babel/types": "^7.22.15" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/traverse": { + "version": "7.23.7", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.23.7.tgz", + "integrity": "sha512-tY3mM8rH9jM0YHFGyfC0/xf+SB5eKUu7HPj7/k3fpi9dAlsMc5YbQvDi0Sh2QTPXqMhyaAtzAr807TIyfQrmyg==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.23.5", + "@babel/generator": "^7.23.6", + "@babel/helper-environment-visitor": "^7.22.20", + "@babel/helper-function-name": "^7.23.0", + "@babel/helper-hoist-variables": "^7.22.5", + "@babel/helper-split-export-declaration": "^7.22.6", + "@babel/parser": "^7.23.6", + "@babel/types": "^7.23.6", + "debug": "^4.3.1", + "globals": "^11.1.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/types": { + "version": "7.23.6", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.23.6.tgz", + "integrity": "sha512-+uarb83brBzPKN38NX1MkB6vb6+mwvR6amUulqAE7ccQw1pEl+bCia9TbdG1lsnFP7lZySvUn37CHyXQdfTwzg==", + "dev": true, + "dependencies": { + "@babel/helper-string-parser": "^7.23.4", + "@babel/helper-validator-identifier": "^7.22.20", + "to-fast-properties": "^2.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@esbuild/android-arm": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.18.20.tgz", + "integrity": "sha512-fyi7TDI/ijKKNZTUJAQqiG5T7YjJXgnzkURqmGj13C6dCqckZBLdl4h7bkhHt/t0WP+zO9/zwroDvANaOqO5Sw==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/android-arm64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.18.20.tgz", + "integrity": "sha512-Nz4rJcchGDtENV0eMKUNa6L12zz2zBDXuhj/Vjh18zGqB44Bi7MBMSXjgunJgjRhCmKOjnPuZp4Mb6OKqtMHLQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/android-x64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.18.20.tgz", + "integrity": "sha512-8GDdlePJA8D6zlZYJV/jnrRAi6rOiNaCC/JclcXpB+KIuvfBN4owLtgzY2bsxnx666XjJx2kDPUmnTtR8qKQUg==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/darwin-arm64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.18.20.tgz", + "integrity": "sha512-bxRHW5kHU38zS2lPTPOyuyTm+S+eobPUnTNkdJEfAddYgEcll4xkT8DB9d2008DtTbl7uJag2HuE5NZAZgnNEA==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/darwin-x64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.18.20.tgz", + "integrity": "sha512-pc5gxlMDxzm513qPGbCbDukOdsGtKhfxD1zJKXjCCcU7ju50O7MeAZ8c4krSJcOIJGFR+qx21yMMVYwiQvyTyQ==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/freebsd-arm64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.18.20.tgz", + "integrity": "sha512-yqDQHy4QHevpMAaxhhIwYPMv1NECwOvIpGCZkECn8w2WFHXjEwrBn3CeNIYsibZ/iZEUemj++M26W3cNR5h+Tw==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/freebsd-x64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.18.20.tgz", + "integrity": "sha512-tgWRPPuQsd3RmBZwarGVHZQvtzfEBOreNuxEMKFcd5DaDn2PbBxfwLcj4+aenoh7ctXcbXmOQIn8HI6mCSw5MQ==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-arm": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.18.20.tgz", + "integrity": "sha512-/5bHkMWnq1EgKr1V+Ybz3s1hWXok7mDFUMQ4cG10AfW3wL02PSZi5kFpYKrptDsgb2WAJIvRcDm+qIvXf/apvg==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-arm64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.18.20.tgz", + "integrity": "sha512-2YbscF+UL7SQAVIpnWvYwM+3LskyDmPhe31pE7/aoTMFKKzIc9lLbyGUpmmb8a8AixOL61sQ/mFh3jEjHYFvdA==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-ia32": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.18.20.tgz", + "integrity": "sha512-P4etWwq6IsReT0E1KHU40bOnzMHoH73aXp96Fs8TIT6z9Hu8G6+0SHSw9i2isWrD2nbx2qo5yUqACgdfVGx7TA==", + "cpu": [ + "ia32" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-loong64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.18.20.tgz", + "integrity": "sha512-nXW8nqBTrOpDLPgPY9uV+/1DjxoQ7DoB2N8eocyq8I9XuqJ7BiAMDMf9n1xZM9TgW0J8zrquIb/A7s3BJv7rjg==", + "cpu": [ + "loong64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-mips64el": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.18.20.tgz", + "integrity": "sha512-d5NeaXZcHp8PzYy5VnXV3VSd2D328Zb+9dEq5HE6bw6+N86JVPExrA6O68OPwobntbNJ0pzCpUFZTo3w0GyetQ==", + "cpu": [ + "mips64el" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-ppc64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.18.20.tgz", + "integrity": "sha512-WHPyeScRNcmANnLQkq6AfyXRFr5D6N2sKgkFo2FqguP44Nw2eyDlbTdZwd9GYk98DZG9QItIiTlFLHJHjxP3FA==", + "cpu": [ + "ppc64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-riscv64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.18.20.tgz", + "integrity": "sha512-WSxo6h5ecI5XH34KC7w5veNnKkju3zBRLEQNY7mv5mtBmrP/MjNBCAlsM2u5hDBlS3NGcTQpoBvRzqBcRtpq1A==", + "cpu": [ + "riscv64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-s390x": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.18.20.tgz", + "integrity": "sha512-+8231GMs3mAEth6Ja1iK0a1sQ3ohfcpzpRLH8uuc5/KVDFneH6jtAJLFGafpzpMRO6DzJ6AvXKze9LfFMrIHVQ==", + "cpu": [ + "s390x" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-x64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.18.20.tgz", + "integrity": "sha512-UYqiqemphJcNsFEskc73jQ7B9jgwjWrSayxawS6UVFZGWrAAtkzjxSqnoclCXxWtfwLdzU+vTpcNYhpn43uP1w==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/netbsd-x64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.18.20.tgz", + "integrity": "sha512-iO1c++VP6xUBUmltHZoMtCUdPlnPGdBom6IrO4gyKPFFVBKioIImVooR5I83nTew5UOYrk3gIJhbZh8X44y06A==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/openbsd-x64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.18.20.tgz", + "integrity": "sha512-e5e4YSsuQfX4cxcygw/UCPIEP6wbIL+se3sxPdCiMbFLBWu0eiZOJ7WoD+ptCLrmjZBK1Wk7I6D/I3NglUGOxg==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/sunos-x64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.18.20.tgz", + "integrity": "sha512-kDbFRFp0YpTQVVrqUd5FTYmWo45zGaXe0X8E1G/LKFC0v8x0vWrhOWSLITcCn63lmZIxfOMXtCfti/RxN/0wnQ==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "sunos" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-arm64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.18.20.tgz", + "integrity": "sha512-ddYFR6ItYgoaq4v4JmQQaAI5s7npztfV4Ag6NrhiaW0RrnOXqBkgwZLofVTlq1daVTQNhtI5oieTvkRPfZrePg==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-ia32": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.18.20.tgz", + "integrity": "sha512-Wv7QBi3ID/rROT08SABTS7eV4hX26sVduqDOTe1MvGMjNd3EjOz4b7zeexIR62GTIEKrfJXKL9LFxTYgkyeu7g==", + "cpu": [ + "ia32" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-x64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.18.20.tgz", + "integrity": "sha512-kTdfRcSiDfQca/y9QIkng02avJ+NCaQvrMejlsB3RRv5sE9rRoeBPISaZpKxHELzRxZyLvNts1P27W3wV+8geQ==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@jridgewell/gen-mapping": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.3.tgz", + "integrity": "sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==", + "dev": true, + "dependencies": { + "@jridgewell/set-array": "^1.0.1", + "@jridgewell/sourcemap-codec": "^1.4.10", + "@jridgewell/trace-mapping": "^0.3.9" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/resolve-uri": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.1.tgz", + "integrity": "sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA==", + "dev": true, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/set-array": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz", + "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==", + "dev": true, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.4.15", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz", + "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==", + "dev": true + }, + "node_modules/@jridgewell/trace-mapping": { + "version": "0.3.20", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.20.tgz", + "integrity": "sha512-R8LcPeWZol2zR8mmH3JeKQ6QRCFb7XgUhV9ZlGhHLGyg4wpPiPZNQOOWhFZhxKw8u//yTbNGI42Bx/3paXEQ+Q==", + "dev": true, + "dependencies": { + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" + } + }, + "node_modules/@mediapipe/tasks-vision": { + "version": "0.10.8", + "resolved": "https://registry.npmjs.org/@mediapipe/tasks-vision/-/tasks-vision-0.10.8.tgz", + "integrity": "sha512-Rp7ll8BHrKB3wXaRFKhrltwZl1CiXGdibPxuWXvqGnKTnv8fqa/nvftYNuSbf+pbJWKYCXdBtYTITdAUTGGh0Q==" + }, + "node_modules/@radix-ui/react-icons": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-icons/-/react-icons-1.3.0.tgz", + "integrity": "sha512-jQxj/0LKgp+j9BiTXz3O3sgs26RNet2iLWmsPyRz2SIcR4q/4SbazXfnYwbAr+vLYKSfc7qxzyGQA1HLlYiuNw==", + "peerDependencies": { + "react": "^16.x || ^17.x || ^18.x" + } + }, + "node_modules/@react-spring/animated": { + "version": "9.6.1", + "resolved": "https://registry.npmjs.org/@react-spring/animated/-/animated-9.6.1.tgz", + "integrity": "sha512-ls/rJBrAqiAYozjLo5EPPLLOb1LM0lNVQcXODTC1SMtS6DbuBCPaKco5svFUQFMP2dso3O+qcC4k9FsKc0KxMQ==", + "dependencies": { + "@react-spring/shared": "~9.6.1", + "@react-spring/types": "~9.6.1" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0 || ^18.0.0" + } + }, + "node_modules/@react-spring/core": { + "version": "9.6.1", + "resolved": "https://registry.npmjs.org/@react-spring/core/-/core-9.6.1.tgz", + "integrity": "sha512-3HAAinAyCPessyQNNXe5W0OHzRfa8Yo5P748paPcmMowZ/4sMfaZ2ZB6e5x5khQI8NusOHj8nquoutd6FRY5WQ==", + "dependencies": { + "@react-spring/animated": "~9.6.1", + "@react-spring/rafz": "~9.6.1", + "@react-spring/shared": "~9.6.1", + "@react-spring/types": "~9.6.1" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/react-spring/donate" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0 || ^18.0.0" + } + }, + "node_modules/@react-spring/rafz": { + "version": "9.6.1", + "resolved": "https://registry.npmjs.org/@react-spring/rafz/-/rafz-9.6.1.tgz", + "integrity": "sha512-v6qbgNRpztJFFfSE3e2W1Uz+g8KnIBs6SmzCzcVVF61GdGfGOuBrbjIcp+nUz301awVmREKi4eMQb2Ab2gGgyQ==" + }, + "node_modules/@react-spring/shared": { + "version": "9.6.1", + "resolved": "https://registry.npmjs.org/@react-spring/shared/-/shared-9.6.1.tgz", + "integrity": "sha512-PBFBXabxFEuF8enNLkVqMC9h5uLRBo6GQhRMQT/nRTnemVENimgRd+0ZT4yFnAQ0AxWNiJfX3qux+bW2LbG6Bw==", + "dependencies": { + "@react-spring/rafz": "~9.6.1", + "@react-spring/types": "~9.6.1" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0 || ^18.0.0" + } + }, + "node_modules/@react-spring/three": { + "version": "9.6.1", + "resolved": "https://registry.npmjs.org/@react-spring/three/-/three-9.6.1.tgz", + "integrity": "sha512-Tyw2YhZPKJAX3t2FcqvpLRb71CyTe1GvT3V+i+xJzfALgpk10uPGdGaQQ5Xrzmok1340DAeg2pR/MCfaW7b8AA==", + "dependencies": { + "@react-spring/animated": "~9.6.1", + "@react-spring/core": "~9.6.1", + "@react-spring/shared": "~9.6.1", + "@react-spring/types": "~9.6.1" + }, + "peerDependencies": { + "@react-three/fiber": ">=6.0", + "react": "^16.8.0 || ^17.0.0 || ^18.0.0", + "three": ">=0.126" + } + }, + "node_modules/@react-spring/types": { + "version": "9.6.1", + "resolved": "https://registry.npmjs.org/@react-spring/types/-/types-9.6.1.tgz", + "integrity": "sha512-POu8Mk0hIU3lRXB3bGIGe4VHIwwDsQyoD1F394OK7STTiX9w4dG3cTLljjYswkQN+hDSHRrj4O36kuVa7KPU8Q==" + }, + "node_modules/@react-three/drei": { + "version": "9.93.0", + "resolved": "https://registry.npmjs.org/@react-three/drei/-/drei-9.93.0.tgz", + "integrity": "sha512-G59IZqPzpIZPvVLmzdCITXJQB+mnKMtFv7FvSRFogeelLzOFkyfnkED9QiY0WQCBMFOFLnSx6vb5xzmbQjHyQA==", + "dependencies": { + "@babel/runtime": "^7.11.2", + "@mediapipe/tasks-vision": "0.10.8", + "@react-spring/three": "~9.6.1", + "@use-gesture/react": "^10.2.24", + "camera-controls": "^2.4.2", + "cross-env": "^7.0.3", + "detect-gpu": "^5.0.28", + "glsl-noise": "^0.0.0", + "lodash.clamp": "^4.0.3", + "lodash.omit": "^4.5.0", + "lodash.pick": "^4.4.0", + "maath": "^0.10.7", + "meshline": "^3.1.6", + "react-composer": "^5.0.3", + "react-merge-refs": "^1.1.0", + "stats-gl": "^2.0.0", + "stats.js": "^0.17.0", + "suspend-react": "^0.1.3", + "three-mesh-bvh": "^0.6.7", + "three-stdlib": "^2.28.0", + "troika-three-text": "^0.47.2", + "utility-types": "^3.10.0", + "uuid": "^9.0.1", + "zustand": "^3.5.13" + }, + "peerDependencies": { + "@react-three/fiber": ">=8.0", + "react": ">=18.0", + "react-dom": ">=18.0", + "three": ">=0.137" + }, + "peerDependenciesMeta": { + "react-dom": { + "optional": true + } + } + }, + "node_modules/@react-three/fiber": { + "version": "8.15.13", + "resolved": "https://registry.npmjs.org/@react-three/fiber/-/fiber-8.15.13.tgz", + "integrity": "sha512-FS6F/k69q2KEf7nxdce1Rzd5qyp6VHtTgjouTMfiotWNiNwlhfQQeAxfcnDg0i2XVaOUGkLaD9BK8LBVnpfzUA==", + "dependencies": { + "@babel/runtime": "^7.17.8", + "@types/react-reconciler": "^0.26.7", + "@types/webxr": "*", + "base64-js": "^1.5.1", + "buffer": "^6.0.3", + "its-fine": "^1.0.6", + "react-reconciler": "^0.27.0", + "react-use-measure": "^2.1.1", + "scheduler": "^0.21.0", + "suspend-react": "^0.1.3", + "zustand": "^3.7.1" + }, + "peerDependencies": { + "expo": ">=43.0", + "expo-asset": ">=8.4", + "expo-file-system": ">=11.0", + "expo-gl": ">=11.0", + "react": ">=18.0", + "react-dom": ">=18.0", + "react-native": ">=0.64", + "three": ">=0.133" + }, + "peerDependenciesMeta": { + "expo": { + "optional": true + }, + "expo-asset": { + "optional": true + }, + "expo-file-system": { + "optional": true + }, + "expo-gl": { + "optional": true + }, + "react-dom": { + "optional": true + }, + "react-native": { + "optional": true + } + } + }, + "node_modules/@stitches/react": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@stitches/react/-/react-1.2.8.tgz", + "integrity": "sha512-9g9dWI4gsSVe8bNLlb+lMkBYsnIKCZTmvqvDG+Avnn69XfmHZKiaMrx7cgTaddq7aTPPmXiTsbFcUy0xgI4+wA==", + "peerDependencies": { + "react": ">= 16.3.0" + } + }, + "node_modules/@types/babel__core": { + "version": "7.20.5", + "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.5.tgz", + "integrity": "sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==", + "dev": true, + "dependencies": { + "@babel/parser": "^7.20.7", + "@babel/types": "^7.20.7", + "@types/babel__generator": "*", + "@types/babel__template": "*", + "@types/babel__traverse": "*" + } + }, + "node_modules/@types/babel__generator": { + "version": "7.6.8", + "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.6.8.tgz", + "integrity": "sha512-ASsj+tpEDsEiFr1arWrlN6V3mdfjRMZt6LtK/Vp/kreFLnr5QH5+DhvD5nINYZXzwJvXeGq+05iUXcAzVrqWtw==", + "dev": true, + "dependencies": { + "@babel/types": "^7.0.0" + } + }, + "node_modules/@types/babel__template": { + "version": "7.4.4", + "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.4.tgz", + "integrity": "sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==", + "dev": true, + "dependencies": { + "@babel/parser": "^7.1.0", + "@babel/types": "^7.0.0" + } + }, + "node_modules/@types/babel__traverse": { + "version": "7.20.5", + "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.20.5.tgz", + "integrity": "sha512-WXCyOcRtH37HAUkpXhUduaxdm82b4GSlyTqajXviN4EfiuPgNYR109xMCKvpl6zPIpua0DGlMEDCq+g8EdoheQ==", + "dev": true, + "dependencies": { + "@babel/types": "^7.20.7" + } + }, + "node_modules/@types/draco3d": { + "version": "1.4.9", + "resolved": "https://registry.npmjs.org/@types/draco3d/-/draco3d-1.4.9.tgz", + "integrity": "sha512-4MMUjMQb4yA5fJ4osXx+QxGHt0/ZSy4spT6jL1HM7Tn8OJEC35siqdnpOo+HxPhYjqEFumKfGVF9hJfdyKBIBA==" + }, + "node_modules/@types/offscreencanvas": { + "version": "2019.7.3", + "resolved": "https://registry.npmjs.org/@types/offscreencanvas/-/offscreencanvas-2019.7.3.tgz", + "integrity": "sha512-ieXiYmgSRXUDeOntE1InxjWyvEelZGP63M+cGuquuRLuIKKT1osnkXjxev9B7d1nXSug5vpunx+gNlbVxMlC9A==" + }, + "node_modules/@types/prop-types": { + "version": "15.7.11", + "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.11.tgz", + "integrity": "sha512-ga8y9v9uyeiLdpKddhxYQkxNDrfvuPrlFb0N1qnZZByvcElJaXthF1UhvCh9TLWJBEHeNtdnbysW7Y6Uq8CVng==" + }, + "node_modules/@types/react": { + "version": "18.2.47", + "resolved": "https://registry.npmjs.org/@types/react/-/react-18.2.47.tgz", + "integrity": "sha512-xquNkkOirwyCgoClNk85BjP+aqnIS+ckAJ8i37gAbDs14jfW/J23f2GItAf33oiUPQnqNMALiFeoM9Y5mbjpVQ==", + "dependencies": { + "@types/prop-types": "*", + "@types/scheduler": "*", + "csstype": "^3.0.2" + } + }, + "node_modules/@types/react-reconciler": { + "version": "0.26.7", + "resolved": "https://registry.npmjs.org/@types/react-reconciler/-/react-reconciler-0.26.7.tgz", + "integrity": "sha512-mBDYl8x+oyPX/VBb3E638N0B7xG+SPk/EAMcVPeexqus/5aTpTphQi0curhhshOqRrc9t6OPoJfEUkbymse/lQ==", + "dependencies": { + "@types/react": "*" + } + }, + "node_modules/@types/scheduler": { + "version": "0.16.8", + "resolved": "https://registry.npmjs.org/@types/scheduler/-/scheduler-0.16.8.tgz", + "integrity": "sha512-WZLiwShhwLRmeV6zH+GkbOFT6Z6VklCItrDioxUnv+u4Ll+8vKeFySoFyK/0ctcRpOmwAicELfmys1sDc/Rw+A==" + }, + "node_modules/@types/stats.js": { + "version": "0.17.3", + "resolved": "https://registry.npmjs.org/@types/stats.js/-/stats.js-0.17.3.tgz", + "integrity": "sha512-pXNfAD3KHOdif9EQXZ9deK82HVNaXP5ZIF5RP2QG6OQFNTaY2YIetfrE9t528vEreGQvEPRDDc8muaoYeK0SxQ==", + "peer": true + }, + "node_modules/@types/three": { + "version": "0.160.0", + "resolved": "https://registry.npmjs.org/@types/three/-/three-0.160.0.tgz", + "integrity": "sha512-jWlbUBovicUKaOYxzgkLlhkiEQJkhCVvg4W2IYD2trqD2om3VK4DGLpHH5zQHNr7RweZK/5re/4IVhbhvxbV9w==", + "peer": true, + "dependencies": { + "@types/stats.js": "*", + "@types/webxr": "*", + "fflate": "~0.6.10", + "meshoptimizer": "~0.18.1" + } + }, + "node_modules/@types/webxr": { + "version": "0.5.10", + "resolved": "https://registry.npmjs.org/@types/webxr/-/webxr-0.5.10.tgz", + "integrity": "sha512-n3u5sqXQJhf1CS68mw3Wf16FQ4cRPNBBwdYLFzq3UddiADOim1Pn3Y6PBdDilz1vOJF3ybLxJ8ZEDlLIzrOQZg==" + }, + "node_modules/@use-gesture/core": { + "version": "10.3.0", + "resolved": "https://registry.npmjs.org/@use-gesture/core/-/core-10.3.0.tgz", + "integrity": "sha512-rh+6MND31zfHcy9VU3dOZCqGY511lvGcfyJenN4cWZe0u1BH6brBpBddLVXhF2r4BMqWbvxfsbL7D287thJU2A==" + }, + "node_modules/@use-gesture/react": { + "version": "10.3.0", + "resolved": "https://registry.npmjs.org/@use-gesture/react/-/react-10.3.0.tgz", + "integrity": "sha512-3zc+Ve99z4usVP6l9knYVbVnZgfqhKah7sIG+PS2w+vpig2v2OLct05vs+ZXMzwxdNCMka8B+8WlOo0z6Pn6DA==", + "dependencies": { + "@use-gesture/core": "10.3.0" + }, + "peerDependencies": { + "react": ">= 16.8.0" + } + }, + "node_modules/@utsubo/events": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/@utsubo/events/-/events-0.1.7.tgz", + "integrity": "sha512-WB/GEj/0h27Bz8rJ0+CBtNz5mLT79ne1OjB7PUM4n0qLBqEDwm6yBzZC3j6tasHjlBPJDYZiBVIA1glaMlgZ5g==", + "dependencies": { + "eventemitter3": "^4.0.7" + }, + "peerDependencies": { + "react": ">=16.8.0" + }, + "peerDependenciesMeta": { + "react": { + "optional": true + } + } + }, + "node_modules/@vitejs/plugin-react": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/@vitejs/plugin-react/-/plugin-react-4.1.1.tgz", + "integrity": "sha512-Jie2HERK+uh27e+ORXXwEP5h0Y2lS9T2PRGbfebiHGlwzDO0dEnd2aNtOR/qjBlPb1YgxwAONeblL1xqLikLag==", + "dev": true, + "dependencies": { + "@babel/core": "^7.23.2", + "@babel/plugin-transform-react-jsx-self": "^7.22.5", + "@babel/plugin-transform-react-jsx-source": "^7.22.5", + "@types/babel__core": "^7.20.3", + "react-refresh": "^0.14.0" + }, + "engines": { + "node": "^14.18.0 || >=16.0.0" + }, + "peerDependencies": { + "vite": "^4.2.0" + } + }, + "node_modules/ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/base64-js": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/bidi-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/bidi-js/-/bidi-js-1.0.3.tgz", + "integrity": "sha512-RKshQI1R3YQ+n9YJz2QQ147P66ELpa1FQEg20Dk8oW9t2KgLbpDLLp9aGZ7y8WHSshDknG0bknqGw5/tyCs5tw==", + "dependencies": { + "require-from-string": "^2.0.2" + } + }, + "node_modules/browserslist": { + "version": "4.22.2", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.22.2.tgz", + "integrity": "sha512-0UgcrvQmBDvZHFGdYUehrCNIazki7/lUP3kkoi/r3YB2amZbFM9J43ZRkJTXBUZK4gmx56+Sqk9+Vs9mwZx9+A==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "dependencies": { + "caniuse-lite": "^1.0.30001565", + "electron-to-chromium": "^1.4.601", + "node-releases": "^2.0.14", + "update-browserslist-db": "^1.0.13" + }, + "bin": { + "browserslist": "cli.js" + }, + "engines": { + "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" + } + }, + "node_modules/buffer": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", + "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "dependencies": { + "base64-js": "^1.3.1", + "ieee754": "^1.2.1" + } + }, + "node_modules/camera-controls": { + "version": "2.7.3", + "resolved": "https://registry.npmjs.org/camera-controls/-/camera-controls-2.7.3.tgz", + "integrity": "sha512-L4mxjBd3u8qiOLozdWrH2P8ZybSsDXBF7iyNyqNEFJhPUkovmuARWR8JTc1B/qlclOIg6FvZZA/0uAZMMim0mw==", + "peerDependencies": { + "three": ">=0.126.1" + } + }, + "node_modules/caniuse-lite": { + "version": "1.0.30001574", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001574.tgz", + "integrity": "sha512-BtYEK4r/iHt/txm81KBudCUcTy7t+s9emrIaHqjYurQ10x71zJ5VQ9x1dYPcz/b+pKSp4y/v1xSI67A+LzpNyg==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/caniuse-lite" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ] + }, + "node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", + "dev": true + }, + "node_modules/convert-source-map": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", + "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", + "dev": true + }, + "node_modules/cross-env": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-env/-/cross-env-7.0.3.tgz", + "integrity": "sha512-+/HKd6EgcQCJGh2PSjZuUitQBQynKor4wrFbRg4DtAgS1aWO+gU52xpH7M9ScGgXSYmAVS9bIJ8EzuaGw0oNAw==", + "dependencies": { + "cross-spawn": "^7.0.1" + }, + "bin": { + "cross-env": "src/bin/cross-env.js", + "cross-env-shell": "src/bin/cross-env-shell.js" + }, + "engines": { + "node": ">=10.14", + "npm": ">=6", + "yarn": ">=1" + } + }, + "node_modules/cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/csstype": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz", + "integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==" + }, + "node_modules/debounce": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/debounce/-/debounce-1.2.1.tgz", + "integrity": "sha512-XRRe6Glud4rd/ZGQfiV1ruXSfbvfJedlV9Y6zOlP+2K04vBYiJEte6stfFkCP03aMnY5tsipamumUjL14fofug==" + }, + "node_modules/debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dev": true, + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/detect-gpu": { + "version": "5.0.37", + "resolved": "https://registry.npmjs.org/detect-gpu/-/detect-gpu-5.0.37.tgz", + "integrity": "sha512-EraWs84faI4iskB4qvE39bevMIazEvd1RpoyGLOBesRLbiz6eMeJqqRPHjEFClfRByYZzi9IzU35rBXIO76oDw==", + "dependencies": { + "webgl-constants": "^1.1.1" + } + }, + "node_modules/draco3d": { + "version": "1.5.6", + "resolved": "https://registry.npmjs.org/draco3d/-/draco3d-1.5.6.tgz", + "integrity": "sha512-+3NaRjWktb5r61ZFoDejlykPEFKT5N/LkbXsaddlw6xNSXBanUYpFc2AXXpbJDilPHazcSreU/DpQIaxfX0NfQ==" + }, + "node_modules/electron-to-chromium": { + "version": "1.4.623", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.623.tgz", + "integrity": "sha512-lKoz10iCYlP1WtRYdh5MvocQPWVRoI7ysp6qf18bmeBgR8abE6+I2CsfyNKztRDZvhdWc+krKT6wS7Neg8sw3A==", + "dev": true + }, + "node_modules/esbuild": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.18.20.tgz", + "integrity": "sha512-ceqxoedUrcayh7Y7ZX6NdbbDzGROiyVBgC4PriJThBKSVPWnnFHZAkfI1lJT8QFkOwH4qOS2SJkS4wvpGl8BpA==", + "dev": true, + "hasInstallScript": true, + "bin": { + "esbuild": "bin/esbuild" + }, + "engines": { + "node": ">=12" + }, + "optionalDependencies": { + "@esbuild/android-arm": "0.18.20", + "@esbuild/android-arm64": "0.18.20", + "@esbuild/android-x64": "0.18.20", + "@esbuild/darwin-arm64": "0.18.20", + "@esbuild/darwin-x64": "0.18.20", + "@esbuild/freebsd-arm64": "0.18.20", + "@esbuild/freebsd-x64": "0.18.20", + "@esbuild/linux-arm": "0.18.20", + "@esbuild/linux-arm64": "0.18.20", + "@esbuild/linux-ia32": "0.18.20", + "@esbuild/linux-loong64": "0.18.20", + "@esbuild/linux-mips64el": "0.18.20", + "@esbuild/linux-ppc64": "0.18.20", + "@esbuild/linux-riscv64": "0.18.20", + "@esbuild/linux-s390x": "0.18.20", + "@esbuild/linux-x64": "0.18.20", + "@esbuild/netbsd-x64": "0.18.20", + "@esbuild/openbsd-x64": "0.18.20", + "@esbuild/sunos-x64": "0.18.20", + "@esbuild/win32-arm64": "0.18.20", + "@esbuild/win32-ia32": "0.18.20", + "@esbuild/win32-x64": "0.18.20" + } + }, + "node_modules/escalade": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", + "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "dev": true, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/eventemitter3": { + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz", + "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==" + }, + "node_modules/fflate": { + "version": "0.6.10", + "resolved": "https://registry.npmjs.org/fflate/-/fflate-0.6.10.tgz", + "integrity": "sha512-IQrh3lEPM93wVCEczc9SaAOvkmcoQn/G8Bo1e8ZPlY3X3bnAxWaBdvTdvM1hP62iZp0BXWDy4vTAy4fF0+Dlpg==" + }, + "node_modules/fsevents": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", + "dev": true, + "hasInstallScript": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/gensync": { + "version": "1.0.0-beta.2", + "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", + "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/globals": { + "version": "11.12.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", + "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/glsl-noise": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/glsl-noise/-/glsl-noise-0.0.0.tgz", + "integrity": "sha512-b/ZCF6amfAUb7dJM/MxRs7AetQEahYzJ8PtgfrmEdtw6uyGOr+ZSGtgjFm6mfsBkxJ4d2W7kg+Nlqzqvn3Bc0w==" + }, + "node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/ieee754": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==" + }, + "node_modules/its-fine": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/its-fine/-/its-fine-1.1.1.tgz", + "integrity": "sha512-v1Ia1xl20KbuSGlwoaGsW0oxsw8Be+TrXweidxD9oT/1lAh6O3K3/GIM95Tt6WCiv6W+h2M7RB1TwdoAjQyyKw==", + "dependencies": { + "@types/react-reconciler": "^0.28.0" + }, + "peerDependencies": { + "react": ">=18.0" + } + }, + "node_modules/its-fine/node_modules/@types/react-reconciler": { + "version": "0.28.8", + "resolved": "https://registry.npmjs.org/@types/react-reconciler/-/react-reconciler-0.28.8.tgz", + "integrity": "sha512-SN9c4kxXZonFhbX4hJrZy37yw9e7EIxcpHCxQv5JUS18wDE5ovkQKlqQEkufdJCCMfuI9BnjUJvhYeJ9x5Ra7g==", + "dependencies": { + "@types/react": "*" + } + }, + "node_modules/js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" + }, + "node_modules/jsesc": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", + "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", + "dev": true, + "bin": { + "jsesc": "bin/jsesc" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/json5": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", + "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", + "dev": true, + "bin": { + "json5": "lib/cli.js" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/lodash.clamp": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/lodash.clamp/-/lodash.clamp-4.0.3.tgz", + "integrity": "sha512-HvzRFWjtcguTW7yd8NJBshuNaCa8aqNFtnswdT7f/cMd/1YKy5Zzoq4W/Oxvnx9l7aeY258uSdDfM793+eLsVg==" + }, + "node_modules/lodash.omit": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.omit/-/lodash.omit-4.5.0.tgz", + "integrity": "sha512-XeqSp49hNGmlkj2EJlfrQFIzQ6lXdNro9sddtQzcJY8QaoC2GO0DT7xaIokHeyM+mIT0mPMlPvkYzg2xCuHdZg==" + }, + "node_modules/lodash.pick": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/lodash.pick/-/lodash.pick-4.4.0.tgz", + "integrity": "sha512-hXt6Ul/5yWjfklSGvLQl8vM//l3FtyHZeuelpzK6mm99pNvN9yTDruNZPEJZD1oWrqo+izBmB7oUfWgcCX7s4Q==" + }, + "node_modules/loose-envify": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", + "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", + "dependencies": { + "js-tokens": "^3.0.0 || ^4.0.0" + }, + "bin": { + "loose-envify": "cli.js" + } + }, + "node_modules/lru-cache": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", + "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", + "dev": true, + "dependencies": { + "yallist": "^3.0.2" + } + }, + "node_modules/maath": { + "version": "0.10.7", + "resolved": "https://registry.npmjs.org/maath/-/maath-0.10.7.tgz", + "integrity": "sha512-zQ2xd7dNOIVTjAS+hj22fyj1EFYmOJX6tzKjZ92r6WDoq8hyFxjuGA2q950tmR4iC/EKXoMQdSipkaJVuUHDTg==", + "peerDependencies": { + "@types/three": ">=0.144.0", + "three": ">=0.144.0" + } + }, + "node_modules/meshline": { + "version": "3.1.7", + "resolved": "https://registry.npmjs.org/meshline/-/meshline-3.1.7.tgz", + "integrity": "sha512-uf9fPI9wy0Ie0kZjvKuIkf2n7gi3ih0wdTeb/kmSvmzpPyEL5d9lFohg9+JV9VC4sQUBOZDgxu6fnjn57goSHg==", + "peerDependencies": { + "three": ">=0.137" + } + }, + "node_modules/meshoptimizer": { + "version": "0.18.1", + "resolved": "https://registry.npmjs.org/meshoptimizer/-/meshoptimizer-0.18.1.tgz", + "integrity": "sha512-ZhoIoL7TNV4s5B6+rx5mC//fw8/POGyNxS/DZyCJeiZ12ScLfVwRE/GfsxwiTkMYYD5DmK2/JXnEVXqL4rF+Sw==", + "peer": true + }, + "node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "node_modules/nanoid": { + "version": "3.3.7", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.7.tgz", + "integrity": "sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "bin": { + "nanoid": "bin/nanoid.cjs" + }, + "engines": { + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + } + }, + "node_modules/node-releases": { + "version": "2.0.14", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.14.tgz", + "integrity": "sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw==", + "dev": true + }, + "node_modules/object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "engines": { + "node": ">=8" + } + }, + "node_modules/picocolors": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", + "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", + "dev": true + }, + "node_modules/postcss": { + "version": "8.4.33", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.33.tgz", + "integrity": "sha512-Kkpbhhdjw2qQs2O2DGX+8m5OVqEcbB9HRBvuYM9pgrjEFUg30A9LmXNlTAUj4S9kgtGyrMbTzVjH7E+s5Re2yg==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "dependencies": { + "nanoid": "^3.3.7", + "picocolors": "^1.0.0", + "source-map-js": "^1.0.2" + }, + "engines": { + "node": "^10 || ^12 || >=14" + } + }, + "node_modules/potpack": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/potpack/-/potpack-1.0.2.tgz", + "integrity": "sha512-choctRBIV9EMT9WGAZHn3V7t0Z2pMQyl0EZE6pFc/6ml3ssw7Dlf/oAOvFwjm1HVsqfQN8GfeFyJ+d8tRzqueQ==" + }, + "node_modules/prop-types": { + "version": "15.8.1", + "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz", + "integrity": "sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==", + "dependencies": { + "loose-envify": "^1.4.0", + "object-assign": "^4.1.1", + "react-is": "^16.13.1" + } + }, + "node_modules/r3f-perf": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/r3f-perf/-/r3f-perf-7.1.2.tgz", + "integrity": "sha512-AQ78ULjufILylHZpbgBdzk7JF3F7bceehlgOL19xtyJIDhvi4J4vwE5wpxNZ5q4PT4Oza1WADZt6KSlrkCqgkA==", + "dependencies": { + "@radix-ui/react-icons": "^1.0.3", + "@react-three/drei": "^9.56.10", + "@stitches/react": "^1.2.8", + "@utsubo/events": "^0.1.7", + "zustand": "~4.1.5" + }, + "peerDependencies": { + "@react-three/fiber": ">=8.0", + "react": ">=18.0", + "react-dom": ">=18.0", + "three": ">=0.133" + }, + "peerDependenciesMeta": { + "@react-three/fiber": { + "optional": true + }, + "dom": { + "optional": true + }, + "react-dom": { + "optional": true + } + } + }, + "node_modules/r3f-perf/node_modules/zustand": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/zustand/-/zustand-4.1.5.tgz", + "integrity": "sha512-PsdRT8Bvq22Yyh1tvpgdHNE7OAeFKqJXUxtJvj1Ixw2B9O2YZ1M34ImQ+xyZah4wZrR4lENMoDUutKPpyXCQ/Q==", + "dependencies": { + "use-sync-external-store": "1.2.0" + }, + "engines": { + "node": ">=12.7.0" + }, + "peerDependencies": { + "immer": ">=9.0", + "react": ">=16.8" + }, + "peerDependenciesMeta": { + "immer": { + "optional": true + }, + "react": { + "optional": true + } + } + }, + "node_modules/react": { + "version": "18.2.0", + "resolved": "https://registry.npmjs.org/react/-/react-18.2.0.tgz", + "integrity": "sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ==", + "dependencies": { + "loose-envify": "^1.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/react-composer": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/react-composer/-/react-composer-5.0.3.tgz", + "integrity": "sha512-1uWd07EME6XZvMfapwZmc7NgCZqDemcvicRi3wMJzXsQLvZ3L7fTHVyPy1bZdnWXM4iPjYuNE+uJ41MLKeTtnA==", + "dependencies": { + "prop-types": "^15.6.0" + }, + "peerDependencies": { + "react": "^15.0.0 || ^16.0.0 || ^17.0.0 || ^18.0.0" + } + }, + "node_modules/react-dom": { + "version": "18.2.0", + "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-18.2.0.tgz", + "integrity": "sha512-6IMTriUmvsjHUjNtEDudZfuDQUoWXVxKHhlEGSk81n4YFS+r/Kl99wXiwlVXtPBtJenozv2P+hxDsw9eA7Xo6g==", + "dependencies": { + "loose-envify": "^1.1.0", + "scheduler": "^0.23.0" + }, + "peerDependencies": { + "react": "^18.2.0" + } + }, + "node_modules/react-dom/node_modules/scheduler": { + "version": "0.23.0", + "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.23.0.tgz", + "integrity": "sha512-CtuThmgHNg7zIZWAXi3AsyIzA3n4xx7aNyjwC2VJldO2LMVDhFK+63xGqq6CsJH4rTAt6/M+N4GhZiDYPx9eUw==", + "dependencies": { + "loose-envify": "^1.1.0" + } + }, + "node_modules/react-is": { + "version": "16.13.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", + "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==" + }, + "node_modules/react-merge-refs": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/react-merge-refs/-/react-merge-refs-1.1.0.tgz", + "integrity": "sha512-alTKsjEL0dKH/ru1Iyn7vliS2QRcBp9zZPGoWxUOvRGWPUYgjo+V01is7p04It6KhgrzhJGnIj9GgX8W4bZoCQ==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" + } + }, + "node_modules/react-reconciler": { + "version": "0.27.0", + "resolved": "https://registry.npmjs.org/react-reconciler/-/react-reconciler-0.27.0.tgz", + "integrity": "sha512-HmMDKciQjYmBRGuuhIaKA1ba/7a+UsM5FzOZsMO2JYHt9Jh8reCb7j1eDC95NOyUlKM9KRyvdx0flBuDvYSBoA==", + "dependencies": { + "loose-envify": "^1.1.0", + "scheduler": "^0.21.0" + }, + "engines": { + "node": ">=0.10.0" + }, + "peerDependencies": { + "react": "^18.0.0" + } + }, + "node_modules/react-refresh": { + "version": "0.14.0", + "resolved": "https://registry.npmjs.org/react-refresh/-/react-refresh-0.14.0.tgz", + "integrity": "sha512-wViHqhAd8OHeLS/IRMJjTSDHF3U9eWi62F/MledQGPdJGDhodXJ9PBLNGr6WWL7qlH12Mt3TyTpbS+hGXMjCzQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/react-use-measure": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/react-use-measure/-/react-use-measure-2.1.1.tgz", + "integrity": "sha512-nocZhN26cproIiIduswYpV5y5lQpSQS1y/4KuvUCjSKmw7ZWIS/+g3aFnX3WdBkyuGUtTLif3UTqnLLhbDoQig==", + "dependencies": { + "debounce": "^1.2.1" + }, + "peerDependencies": { + "react": ">=16.13", + "react-dom": ">=16.13" + } + }, + "node_modules/regenerator-runtime": { + "version": "0.14.1", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.14.1.tgz", + "integrity": "sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==" + }, + "node_modules/require-from-string": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", + "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/rollup": { + "version": "3.29.4", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-3.29.4.tgz", + "integrity": "sha512-oWzmBZwvYrU0iJHtDmhsm662rC15FRXmcjCk1xD771dFDx5jJ02ufAQQTn0etB2emNk4J9EZg/yWKpsn9BWGRw==", + "dev": true, + "bin": { + "rollup": "dist/bin/rollup" + }, + "engines": { + "node": ">=14.18.0", + "npm": ">=8.0.0" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + } + }, + "node_modules/scheduler": { + "version": "0.21.0", + "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.21.0.tgz", + "integrity": "sha512-1r87x5fz9MXqswA2ERLo0EbOAU74DpIUO090gIasYTqlVoJeMcl+Z1Rg7WHz+qtPujhS/hGIt9kxZOYBV3faRQ==", + "dependencies": { + "loose-envify": "^1.1.0" + } + }, + "node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dependencies": { + "shebang-regex": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "engines": { + "node": ">=8" + } + }, + "node_modules/source-map-js": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz", + "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/stats-gl": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/stats-gl/-/stats-gl-2.0.1.tgz", + "integrity": "sha512-EhFm1AxoSBK3MflkFawZ4jmOX1dWu0nBAtCpvGxGsondEvCpsohbpRpM8pi8UAcxG5eRsDsCiRcxdH20j3Rp9A==" + }, + "node_modules/stats.js": { + "version": "0.17.0", + "resolved": "https://registry.npmjs.org/stats.js/-/stats.js-0.17.0.tgz", + "integrity": "sha512-hNKz8phvYLPEcRkeG1rsGmV5ChMjKDAWU7/OJJdDErPBNChQXxCo3WZurGpnWc6gZhAzEPFad1aVgyOANH1sMw==" + }, + "node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/suspend-react": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/suspend-react/-/suspend-react-0.1.3.tgz", + "integrity": "sha512-aqldKgX9aZqpoDp3e8/BZ8Dm7x1pJl+qI3ZKxDN0i/IQTWUwBx/ManmlVJ3wowqbno6c2bmiIfs+Um6LbsjJyQ==", + "peerDependencies": { + "react": ">=17.0" + } + }, + "node_modules/three": { + "version": "0.158.0", + "resolved": "https://registry.npmjs.org/three/-/three-0.158.0.tgz", + "integrity": "sha512-TALj4EOpdDPF1henk2Q+s17K61uEAAWQ7TJB68nr7FKxqwyDr3msOt5IWdbGm4TaWKjrtWS8DJJWe9JnvsWOhQ==" + }, + "node_modules/three-mesh-bvh": { + "version": "0.6.8", + "resolved": "https://registry.npmjs.org/three-mesh-bvh/-/three-mesh-bvh-0.6.8.tgz", + "integrity": "sha512-EGebF9DZx1S8+7OZYNNTT80GXJZVf+UYXD/HyTg/e2kR/ApofIFfUS4ZzIHNnUVIadpnLSzM4n96wX+l7GMbnQ==", + "peerDependencies": { + "three": ">= 0.151.0" + } + }, + "node_modules/three-stdlib": { + "version": "2.28.12", + "resolved": "https://registry.npmjs.org/three-stdlib/-/three-stdlib-2.28.12.tgz", + "integrity": "sha512-6ZAomFjrtDVNxI56F3QNgV7uVn8JlEZVgzZP+UE9h/zpKmeD3pIZvmWymw9sYPoteof0hLDFom3cETRhErQh3g==", + "dependencies": { + "@types/draco3d": "^1.4.0", + "@types/offscreencanvas": "^2019.6.4", + "@types/webxr": "^0.5.2", + "draco3d": "^1.4.1", + "fflate": "^0.6.9", + "potpack": "^1.0.1" + }, + "peerDependencies": { + "three": ">=0.128.0" + } + }, + "node_modules/to-fast-properties": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", + "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/troika-three-text": { + "version": "0.47.2", + "resolved": "https://registry.npmjs.org/troika-three-text/-/troika-three-text-0.47.2.tgz", + "integrity": "sha512-qylT0F+U7xGs+/PEf3ujBdJMYWbn0Qci0kLqI5BJG2kW1wdg4T1XSxneypnF05DxFqJhEzuaOR9S2SjiyknMng==", + "dependencies": { + "bidi-js": "^1.0.2", + "troika-three-utils": "^0.47.2", + "troika-worker-utils": "^0.47.2", + "webgl-sdf-generator": "1.1.1" + }, + "peerDependencies": { + "three": ">=0.125.0" + } + }, + "node_modules/troika-three-utils": { + "version": "0.47.2", + "resolved": "https://registry.npmjs.org/troika-three-utils/-/troika-three-utils-0.47.2.tgz", + "integrity": "sha512-/28plhCxfKtH7MSxEGx8e3b/OXU5A0xlwl+Sbdp0H8FXUHKZDoksduEKmjQayXYtxAyuUiCRunYIv/8Vi7aiyg==", + "peerDependencies": { + "three": ">=0.125.0" + } + }, + "node_modules/troika-worker-utils": { + "version": "0.47.2", + "resolved": "https://registry.npmjs.org/troika-worker-utils/-/troika-worker-utils-0.47.2.tgz", + "integrity": "sha512-mzss4MeyzUkYBppn4x5cdAqrhBHFEuVmMMgLMTyFV23x6GvQMyo+/R5E5Lsbrt7WSt5RfvewjcwD1DChRTA9lA==" + }, + "node_modules/update-browserslist-db": { + "version": "1.0.13", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.13.tgz", + "integrity": "sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "dependencies": { + "escalade": "^3.1.1", + "picocolors": "^1.0.0" + }, + "bin": { + "update-browserslist-db": "cli.js" + }, + "peerDependencies": { + "browserslist": ">= 4.21.0" + } + }, + "node_modules/use-sync-external-store": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/use-sync-external-store/-/use-sync-external-store-1.2.0.tgz", + "integrity": "sha512-eEgnFxGQ1Ife9bzYs6VLi8/4X6CObHMw9Qr9tPY43iKwsPw8xE8+EFsf/2cFZ5S3esXgpWgtSCtLNS41F+sKPA==", + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0 || ^18.0.0" + } + }, + "node_modules/utility-types": { + "version": "3.10.0", + "resolved": "https://registry.npmjs.org/utility-types/-/utility-types-3.10.0.tgz", + "integrity": "sha512-O11mqxmi7wMKCo6HKFt5AhO4BwY3VV68YU07tgxfz8zJTIxr4BpsezN49Ffwy9j3ZpwwJp4fkRwjRzq3uWE6Rg==", + "engines": { + "node": ">= 4" + } + }, + "node_modules/uuid": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.1.tgz", + "integrity": "sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==", + "funding": [ + "https://github.com/sponsors/broofa", + "https://github.com/sponsors/ctavan" + ], + "bin": { + "uuid": "dist/bin/uuid" + } + }, + "node_modules/vite": { + "version": "4.5.1", + "resolved": "https://registry.npmjs.org/vite/-/vite-4.5.1.tgz", + "integrity": "sha512-AXXFaAJ8yebyqzoNB9fu2pHoo/nWX+xZlaRwoeYUxEqBO+Zj4msE5G+BhGBll9lYEKv9Hfks52PAF2X7qDYXQA==", + "dev": true, + "dependencies": { + "esbuild": "^0.18.10", + "postcss": "^8.4.27", + "rollup": "^3.27.1" + }, + "bin": { + "vite": "bin/vite.js" + }, + "engines": { + "node": "^14.18.0 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/vitejs/vite?sponsor=1" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + }, + "peerDependencies": { + "@types/node": ">= 14", + "less": "*", + "lightningcss": "^1.21.0", + "sass": "*", + "stylus": "*", + "sugarss": "*", + "terser": "^5.4.0" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + }, + "less": { + "optional": true + }, + "lightningcss": { + "optional": true + }, + "sass": { + "optional": true + }, + "stylus": { + "optional": true + }, + "sugarss": { + "optional": true + }, + "terser": { + "optional": true + } + } + }, + "node_modules/webgl-constants": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/webgl-constants/-/webgl-constants-1.1.1.tgz", + "integrity": "sha512-LkBXKjU5r9vAW7Gcu3T5u+5cvSvh5WwINdr0C+9jpzVB41cjQAP5ePArDtk/WHYdVj0GefCgM73BA7FlIiNtdg==" + }, + "node_modules/webgl-sdf-generator": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/webgl-sdf-generator/-/webgl-sdf-generator-1.1.1.tgz", + "integrity": "sha512-9Z0JcMTFxeE+b2x1LJTdnaT8rT8aEp7MVxkNwoycNmJWwPdzoXzMh0BjJSh/AEFP+KPYZUli814h8bJZFIZ2jA==" + }, + "node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/yallist": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", + "dev": true + }, + "node_modules/zustand": { + "version": "3.7.2", + "resolved": "https://registry.npmjs.org/zustand/-/zustand-3.7.2.tgz", + "integrity": "sha512-PIJDIZKtokhof+9+60cpockVOq05sJzHCriyvaLBmEJixseQ1a5Kdov6fWZfWOu5SK9c+FhH1jU0tntLxRJYMA==", + "engines": { + "node": ">=12.7.0" + }, + "peerDependencies": { + "react": ">=16.8" + }, + "peerDependenciesMeta": { + "react": { + "optional": true + } + } + } + } +} diff --git a/package.json b/package.json new file mode 100644 index 0000000..1a35267 --- /dev/null +++ b/package.json @@ -0,0 +1,22 @@ +{ + "name": "threejs-journey-exercise", + "private": true, + "version": "0.0.0", + "type": "module", + "scripts": { + "dev": "vite", + "build": "vite build" + }, + "devDependencies": { + "@vitejs/plugin-react": "4.1", + "vite": "^4.5.0" + }, + "dependencies": { + "@react-three/drei": "^9.88.7", + "@react-three/fiber": "^8.15.8", + "r3f-perf": "^7.1.2", + "react": "18.2", + "react-dom": "18.2", + "three": "^0.158.0" + } +} diff --git a/public/Geist-UltraBlack.otf b/public/Geist-UltraBlack.otf new file mode 100644 index 0000000000000000000000000000000000000000..615d2849062f7080cc2ab5f4df1e934c8ec487e2 GIT binary patch literal 60172 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 literal 0 HcmV?d00001 diff --git a/src/Experience.jsx b/src/Experience.jsx new file mode 100644 index 0000000..356d1ab --- /dev/null +++ b/src/Experience.jsx @@ -0,0 +1,71 @@ +import { + Text, + Html, + ContactShadows, + PresentationControls, + Float, + Environment, + useGLTF, +} from "@react-three/drei"; + +export default function Experience() { + const computer = useGLTF( + "https://vazxmixjsiawhamofees.supabase.co/storage/v1/object/public/models/macbook/model.gltf" + ); + + return ( + <> + + + + + + + + + + +