| | |
| | | "name": "three-asrs", |
| | | "version": "0.0.0", |
| | | "dependencies": { |
| | | "@react-three/drei": "9.92.0", |
| | | "@react-three/fiber": "8.15.12", |
| | | "@tweenjs/tween.js": "^21.0.0", |
| | | "axios": "^1.6.2", |
| | | "react": "^18.2.0", |
| | | "react-dom": "^18.2.0", |
| | | "react-router-dom": "^6.15.0", |
| | | "three": "^0.155.0", |
| | | "three": "^0.159.0", |
| | | "valtio": "^1.12.1" |
| | | }, |
| | | "devDependencies": { |
| | |
| | | }, |
| | | "peerDependencies": { |
| | | "@babel/core": "^7.0.0-0" |
| | | } |
| | | }, |
| | | "node_modules/@babel/runtime": { |
| | | "version": "7.24.4", |
| | | "resolved": "https://registry.npmmirror.com/@babel/runtime/-/runtime-7.24.4.tgz", |
| | | "integrity": "sha512-dkxf7+hn8mFBwKjs9bvBlArzLVxVbS8usaPUDd5p2a9JCL9tB8OaOVN1isD4+Xyk4ns89/xeOmbQvgdK7IIVdA==", |
| | | "dependencies": { |
| | | "regenerator-runtime": "^0.14.0" |
| | | }, |
| | | "engines": { |
| | | "node": ">=6.9.0" |
| | | } |
| | | }, |
| | | "node_modules/@babel/template": { |
| | |
| | | "@jridgewell/sourcemap-codec": "^1.4.14" |
| | | } |
| | | }, |
| | | "node_modules/@mediapipe/tasks-vision": { |
| | | "version": "0.10.8", |
| | | "resolved": "https://registry.npmmirror.com/@mediapipe/tasks-vision/-/tasks-vision-0.10.8.tgz", |
| | | "integrity": "sha512-Rp7ll8BHrKB3wXaRFKhrltwZl1CiXGdibPxuWXvqGnKTnv8fqa/nvftYNuSbf+pbJWKYCXdBtYTITdAUTGGh0Q==" |
| | | }, |
| | | "node_modules/@nodelib/fs.scandir": { |
| | | "version": "2.1.5", |
| | | "resolved": "https://registry.npmmirror.com/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", |
| | |
| | | "optional": true, |
| | | "engines": { |
| | | "node": ">=14" |
| | | } |
| | | }, |
| | | "node_modules/@react-spring/animated": { |
| | | "version": "9.6.1", |
| | | "resolved": "https://registry.npmmirror.com/@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.npmmirror.com/@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" |
| | | }, |
| | | "peerDependencies": { |
| | | "react": "^16.8.0 || ^17.0.0 || ^18.0.0" |
| | | } |
| | | }, |
| | | "node_modules/@react-spring/rafz": { |
| | | "version": "9.6.1", |
| | | "resolved": "https://registry.npmmirror.com/@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.npmmirror.com/@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.npmmirror.com/@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.npmmirror.com/@react-spring/types/-/types-9.6.1.tgz", |
| | | "integrity": "sha512-POu8Mk0hIU3lRXB3bGIGe4VHIwwDsQyoD1F394OK7STTiX9w4dG3cTLljjYswkQN+hDSHRrj4O36kuVa7KPU8Q==" |
| | | }, |
| | | "node_modules/@react-three/drei": { |
| | | "version": "9.92.0", |
| | | "resolved": "https://registry.npmmirror.com/@react-three/drei/-/drei-9.92.0.tgz", |
| | | "integrity": "sha512-CVugeEp84JmXvhkuBJJwC3dbq/5guWfH61v0loCR2+deZQDCxXFlwtPzog19YebB6giHWzuS+kL4Zh0yqJ1sYg==", |
| | | "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.9.0", |
| | | "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.12", |
| | | "resolved": "https://registry.npmmirror.com/@react-three/fiber/-/fiber-8.15.12.tgz", |
| | | "integrity": "sha512-yg0CyXVHIdSbNjM/GAgDrGJnKLTsfTlaR5FoJGEh9IgVKptOoudnFZhBt/Cau4rzx2X6eLmB1+aWOm1dEHSUpg==", |
| | | "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/@react-three/fiber/node_modules/scheduler": { |
| | | "version": "0.21.0", |
| | | "resolved": "https://registry.npmmirror.com/scheduler/-/scheduler-0.21.0.tgz", |
| | | "integrity": "sha512-1r87x5fz9MXqswA2ERLo0EbOAU74DpIUO090gIasYTqlVoJeMcl+Z1Rg7WHz+qtPujhS/hGIt9kxZOYBV3faRQ==", |
| | | "dependencies": { |
| | | "loose-envify": "^1.1.0" |
| | | } |
| | | }, |
| | | "node_modules/@remix-run/router": { |
| | |
| | | "@babel/types": "^7.20.7" |
| | | } |
| | | }, |
| | | "node_modules/@types/draco3d": { |
| | | "version": "1.4.9", |
| | | "resolved": "https://registry.npmmirror.com/@types/draco3d/-/draco3d-1.4.9.tgz", |
| | | "integrity": "sha512-4MMUjMQb4yA5fJ4osXx+QxGHt0/ZSy4spT6jL1HM7Tn8OJEC35siqdnpOo+HxPhYjqEFumKfGVF9hJfdyKBIBA==" |
| | | }, |
| | | "node_modules/@types/estree": { |
| | | "version": "1.0.5", |
| | | "resolved": "https://registry.npmmirror.com/@types/estree/-/estree-1.0.5.tgz", |
| | | "integrity": "sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==", |
| | | "dev": true |
| | | }, |
| | | "node_modules/@types/offscreencanvas": { |
| | | "version": "2019.7.3", |
| | | "resolved": "https://registry.npmmirror.com/@types/offscreencanvas/-/offscreencanvas-2019.7.3.tgz", |
| | | "integrity": "sha512-ieXiYmgSRXUDeOntE1InxjWyvEelZGP63M+cGuquuRLuIKKT1osnkXjxev9B7d1nXSug5vpunx+gNlbVxMlC9A==" |
| | | }, |
| | | "node_modules/@types/prop-types": { |
| | | "version": "15.7.12", |
| | | "resolved": "https://registry.npmmirror.com/@types/prop-types/-/prop-types-15.7.12.tgz", |
| | | "integrity": "sha512-5zvhXYtRNRluoE/jAp4GVsSduVUzNWKkOZrCDBWYtE7biZywwdC2AcEzg+cSMLFRfVgeAFqpfNabiPjxFddV1Q==", |
| | | "devOptional": true |
| | | "integrity": "sha512-5zvhXYtRNRluoE/jAp4GVsSduVUzNWKkOZrCDBWYtE7biZywwdC2AcEzg+cSMLFRfVgeAFqpfNabiPjxFddV1Q==" |
| | | }, |
| | | "node_modules/@types/react": { |
| | | "version": "18.2.78", |
| | | "resolved": "https://registry.npmmirror.com/@types/react/-/react-18.2.78.tgz", |
| | | "integrity": "sha512-qOwdPnnitQY4xKlKayt42q5W5UQrSHjgoXNVEtxeqdITJ99k4VXJOP3vt8Rkm9HmgJpH50UNU+rlqfkfWOqp0A==", |
| | | "devOptional": true, |
| | | "dependencies": { |
| | | "@types/prop-types": "*", |
| | | "csstype": "^3.0.2" |
| | |
| | | "@types/react": "*" |
| | | } |
| | | }, |
| | | "node_modules/@types/react-reconciler": { |
| | | "version": "0.26.7", |
| | | "resolved": "https://registry.npmmirror.com/@types/react-reconciler/-/react-reconciler-0.26.7.tgz", |
| | | "integrity": "sha512-mBDYl8x+oyPX/VBb3E638N0B7xG+SPk/EAMcVPeexqus/5aTpTphQi0curhhshOqRrc9t6OPoJfEUkbymse/lQ==", |
| | | "dependencies": { |
| | | "@types/react": "*" |
| | | } |
| | | }, |
| | | "node_modules/@types/stats.js": { |
| | | "version": "0.17.3", |
| | | "resolved": "https://registry.npmmirror.com/@types/stats.js/-/stats.js-0.17.3.tgz", |
| | | "integrity": "sha512-pXNfAD3KHOdif9EQXZ9deK82HVNaXP5ZIF5RP2QG6OQFNTaY2YIetfrE9t528vEreGQvEPRDDc8muaoYeK0SxQ==" |
| | | }, |
| | | "node_modules/@types/three": { |
| | | "version": "0.163.0", |
| | | "resolved": "https://registry.npmmirror.com/@types/three/-/three-0.163.0.tgz", |
| | | "integrity": "sha512-uIdDhsXRpQiBUkflBS/i1l3JX14fW6Ot9csed60nfbZNXHDTRsnV2xnTVwXcgbvTiboAR4IW+t+lTL5f1rqIqA==", |
| | | "dependencies": { |
| | | "@tweenjs/tween.js": "~23.1.1", |
| | | "@types/stats.js": "*", |
| | | "@types/webxr": "*", |
| | | "fflate": "~0.8.2", |
| | | "meshoptimizer": "~0.18.1" |
| | | } |
| | | }, |
| | | "node_modules/@types/three/node_modules/@tweenjs/tween.js": { |
| | | "version": "23.1.1", |
| | | "resolved": "https://registry.npmmirror.com/@tweenjs/tween.js/-/tween.js-23.1.1.tgz", |
| | | "integrity": "sha512-ZpboH7pCPPeyBWKf8c7TJswtCEQObFo3bOBYalm99NzZarATALYCo5OhbCa/n4RQyJyHfhkdx+hNrdL5ByFYDw==" |
| | | }, |
| | | "node_modules/@types/webxr": { |
| | | "version": "0.5.15", |
| | | "resolved": "https://registry.npmmirror.com/@types/webxr/-/webxr-0.5.15.tgz", |
| | | "integrity": "sha512-nC9116Gd4N+CqTxqo6gvCfhAMAzgRcfS8ZsciNodHq8uwW4JCVKwhagw8yN0XmC7mHrLnWqniJpoVEiR+72Drw==" |
| | | }, |
| | | "node_modules/@ungap/structured-clone": { |
| | | "version": "1.2.0", |
| | | "resolved": "https://registry.npmmirror.com/@ungap/structured-clone/-/structured-clone-1.2.0.tgz", |
| | | "integrity": "sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==", |
| | | "dev": true |
| | | }, |
| | | "node_modules/@use-gesture/core": { |
| | | "version": "10.3.1", |
| | | "resolved": "https://registry.npmmirror.com/@use-gesture/core/-/core-10.3.1.tgz", |
| | | "integrity": "sha512-WcINiDt8WjqBdUXye25anHiNxPc0VOrlT8F6LLkU6cycrOGUDyY/yyFmsg3k8i5OLvv25llc0QC45GhR/C8llw==" |
| | | }, |
| | | "node_modules/@use-gesture/react": { |
| | | "version": "10.3.1", |
| | | "resolved": "https://registry.npmmirror.com/@use-gesture/react/-/react-10.3.1.tgz", |
| | | "integrity": "sha512-Yy19y6O2GJq8f7CHf7L0nxL8bf4PZCPaVOCgJrusOeFHY1LvHgYXnmnXg6N5iwAnbgbZCDjo60SiM6IPJi9C5g==", |
| | | "dependencies": { |
| | | "@use-gesture/core": "10.3.1" |
| | | }, |
| | | "peerDependencies": { |
| | | "react": ">= 16.8.0" |
| | | } |
| | | }, |
| | | "node_modules/@vitejs/plugin-react": { |
| | | "version": "4.2.1", |
| | |
| | | "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", |
| | | "dev": true |
| | | }, |
| | | "node_modules/base64-js": { |
| | | "version": "1.5.1", |
| | | "resolved": "https://registry.npmmirror.com/base64-js/-/base64-js-1.5.1.tgz", |
| | | "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==" |
| | | }, |
| | | "node_modules/bidi-js": { |
| | | "version": "1.0.3", |
| | | "resolved": "https://registry.npmmirror.com/bidi-js/-/bidi-js-1.0.3.tgz", |
| | | "integrity": "sha512-RKshQI1R3YQ+n9YJz2QQ147P66ELpa1FQEg20Dk8oW9t2KgLbpDLLp9aGZ7y8WHSshDknG0bknqGw5/tyCs5tw==", |
| | | "dependencies": { |
| | | "require-from-string": "^2.0.2" |
| | | } |
| | | }, |
| | | "node_modules/binary-extensions": { |
| | | "version": "2.3.0", |
| | | "resolved": "https://registry.npmmirror.com/binary-extensions/-/binary-extensions-2.3.0.tgz", |
| | |
| | | "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" |
| | | } |
| | | }, |
| | | "node_modules/buffer": { |
| | | "version": "6.0.3", |
| | | "resolved": "https://registry.npmmirror.com/buffer/-/buffer-6.0.3.tgz", |
| | | "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", |
| | | "dependencies": { |
| | | "base64-js": "^1.3.1", |
| | | "ieee754": "^1.2.1" |
| | | } |
| | | }, |
| | | "node_modules/call-bind": { |
| | | "version": "1.0.7", |
| | | "resolved": "https://registry.npmmirror.com/call-bind/-/call-bind-1.0.7.tgz", |
| | |
| | | "dev": true, |
| | | "engines": { |
| | | "node": ">= 6" |
| | | } |
| | | }, |
| | | "node_modules/camera-controls": { |
| | | "version": "2.8.3", |
| | | "resolved": "https://registry.npmmirror.com/camera-controls/-/camera-controls-2.8.3.tgz", |
| | | "integrity": "sha512-zFjqUR6onLkG+z1A6vAWfzovxZxWVSvp6e5t3lfZgfgPZtX3n74aykNAUaoRbq8Y3tOxadHkDjbfGDOP9hFf2w==", |
| | | "peerDependencies": { |
| | | "three": ">=0.126.1" |
| | | } |
| | | }, |
| | | "node_modules/caniuse-lite": { |
| | |
| | | "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", |
| | | "dev": true |
| | | }, |
| | | "node_modules/cross-env": { |
| | | "version": "7.0.3", |
| | | "resolved": "https://registry.npmmirror.com/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.npmmirror.com/cross-spawn/-/cross-spawn-7.0.3.tgz", |
| | | "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", |
| | | "dev": true, |
| | | "dependencies": { |
| | | "path-key": "^3.1.0", |
| | | "shebang-command": "^2.0.0", |
| | |
| | | "node_modules/csstype": { |
| | | "version": "3.1.3", |
| | | "resolved": "https://registry.npmmirror.com/csstype/-/csstype-3.1.3.tgz", |
| | | "integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==", |
| | | "devOptional": true |
| | | "integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==" |
| | | }, |
| | | "node_modules/data-view-buffer": { |
| | | "version": "1.0.1", |
| | |
| | | "engines": { |
| | | "node": ">= 0.4" |
| | | } |
| | | }, |
| | | "node_modules/debounce": { |
| | | "version": "1.2.1", |
| | | "resolved": "https://registry.npmmirror.com/debounce/-/debounce-1.2.1.tgz", |
| | | "integrity": "sha512-XRRe6Glud4rd/ZGQfiV1ruXSfbvfJedlV9Y6zOlP+2K04vBYiJEte6stfFkCP03aMnY5tsipamumUjL14fofug==" |
| | | }, |
| | | "node_modules/debug": { |
| | | "version": "4.3.4", |
| | |
| | | "valtio": "*" |
| | | } |
| | | }, |
| | | "node_modules/detect-gpu": { |
| | | "version": "5.0.38", |
| | | "resolved": "https://registry.npmmirror.com/detect-gpu/-/detect-gpu-5.0.38.tgz", |
| | | "integrity": "sha512-36QeGHSXYcJ/RfrnPEScR8GDprbXFG4ZhXsfVNVHztZr38+fRxgHnJl3CjYXXjbeRUhu3ZZBJh6Lg0A9v0Qd8A==", |
| | | "dependencies": { |
| | | "webgl-constants": "^1.1.1" |
| | | } |
| | | }, |
| | | "node_modules/didyoumean": { |
| | | "version": "1.2.2", |
| | | "resolved": "https://registry.npmmirror.com/didyoumean/-/didyoumean-1.2.2.tgz", |
| | |
| | | "engines": { |
| | | "node": ">=6.0.0" |
| | | } |
| | | }, |
| | | "node_modules/draco3d": { |
| | | "version": "1.5.7", |
| | | "resolved": "https://registry.npmmirror.com/draco3d/-/draco3d-1.5.7.tgz", |
| | | "integrity": "sha512-m6WCKt/erDXcw+70IJXnG7M3awwQPAsZvJGX5zY7beBqpELw6RDGkYVU0W43AFxye4pDZ5i2Lbyc/NNGqwjUVQ==" |
| | | }, |
| | | "node_modules/eastasianwidth": { |
| | | "version": "0.2.0", |
| | |
| | | "reusify": "^1.0.4" |
| | | } |
| | | }, |
| | | "node_modules/fflate": { |
| | | "version": "0.8.2", |
| | | "resolved": "https://registry.npmmirror.com/fflate/-/fflate-0.8.2.tgz", |
| | | "integrity": "sha512-cPJU47OaAoCbg0pBvzsgpTPhmhqI5eJjh/JIu8tPj5q+T7iLvW/JAYUqmE7KOB4R1ZyEhzBaIQpQpardBF5z8A==" |
| | | }, |
| | | "node_modules/file-entry-cache": { |
| | | "version": "6.0.1", |
| | | "resolved": "https://registry.npmmirror.com/file-entry-cache/-/file-entry-cache-6.0.1.tgz", |
| | |
| | | "node": ">= 0.4" |
| | | } |
| | | }, |
| | | "node_modules/glsl-noise": { |
| | | "version": "0.0.0", |
| | | "resolved": "https://registry.npmmirror.com/glsl-noise/-/glsl-noise-0.0.0.tgz", |
| | | "integrity": "sha512-b/ZCF6amfAUb7dJM/MxRs7AetQEahYzJ8PtgfrmEdtw6uyGOr+ZSGtgjFm6mfsBkxJ4d2W7kg+Nlqzqvn3Bc0w==" |
| | | }, |
| | | "node_modules/gopd": { |
| | | "version": "1.0.1", |
| | | "resolved": "https://registry.npmmirror.com/gopd/-/gopd-1.0.1.tgz", |
| | |
| | | "engines": { |
| | | "node": ">= 0.4" |
| | | } |
| | | }, |
| | | "node_modules/ieee754": { |
| | | "version": "1.2.1", |
| | | "resolved": "https://registry.npmmirror.com/ieee754/-/ieee754-1.2.1.tgz", |
| | | "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==" |
| | | }, |
| | | "node_modules/ignore": { |
| | | "version": "5.3.1", |
| | |
| | | "node_modules/isexe": { |
| | | "version": "2.0.0", |
| | | "resolved": "https://registry.npmmirror.com/isexe/-/isexe-2.0.0.tgz", |
| | | "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", |
| | | "dev": true |
| | | "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==" |
| | | }, |
| | | "node_modules/iterator.prototype": { |
| | | "version": "1.1.2", |
| | |
| | | "has-symbols": "^1.0.3", |
| | | "reflect.getprototypeof": "^1.0.4", |
| | | "set-function-name": "^2.0.1" |
| | | } |
| | | }, |
| | | "node_modules/its-fine": { |
| | | "version": "1.2.5", |
| | | "resolved": "https://registry.npmmirror.com/its-fine/-/its-fine-1.2.5.tgz", |
| | | "integrity": "sha512-fXtDA0X0t0eBYAGLVM5YsgJGsJ5jEmqZEPrGbzdf5awjv0xE7nqv3TVnvtUF060Tkes15DbDAKW/I48vsb6SyA==", |
| | | "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.npmmirror.com/@types/react-reconciler/-/react-reconciler-0.28.8.tgz", |
| | | "integrity": "sha512-SN9c4kxXZonFhbX4hJrZy37yw9e7EIxcpHCxQv5JUS18wDE5ovkQKlqQEkufdJCCMfuI9BnjUJvhYeJ9x5Ra7g==", |
| | | "dependencies": { |
| | | "@types/react": "*" |
| | | } |
| | | }, |
| | | "node_modules/jackspeak": { |
| | |
| | | "node": ">=10" |
| | | } |
| | | }, |
| | | "node_modules/lodash.clamp": { |
| | | "version": "4.0.3", |
| | | "resolved": "https://registry.npmmirror.com/lodash.clamp/-/lodash.clamp-4.0.3.tgz", |
| | | "integrity": "sha512-HvzRFWjtcguTW7yd8NJBshuNaCa8aqNFtnswdT7f/cMd/1YKy5Zzoq4W/Oxvnx9l7aeY258uSdDfM793+eLsVg==" |
| | | }, |
| | | "node_modules/lodash.merge": { |
| | | "version": "4.6.2", |
| | | "resolved": "https://registry.npmmirror.com/lodash.merge/-/lodash.merge-4.6.2.tgz", |
| | | "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", |
| | | "dev": true |
| | | }, |
| | | "node_modules/lodash.omit": { |
| | | "version": "4.5.0", |
| | | "resolved": "https://registry.npmmirror.com/lodash.omit/-/lodash.omit-4.5.0.tgz", |
| | | "integrity": "sha512-XeqSp49hNGmlkj2EJlfrQFIzQ6lXdNro9sddtQzcJY8QaoC2GO0DT7xaIokHeyM+mIT0mPMlPvkYzg2xCuHdZg==" |
| | | }, |
| | | "node_modules/lodash.pick": { |
| | | "version": "4.4.0", |
| | | "resolved": "https://registry.npmmirror.com/lodash.pick/-/lodash.pick-4.4.0.tgz", |
| | | "integrity": "sha512-hXt6Ul/5yWjfklSGvLQl8vM//l3FtyHZeuelpzK6mm99pNvN9yTDruNZPEJZD1oWrqo+izBmB7oUfWgcCX7s4Q==" |
| | | }, |
| | | "node_modules/loose-envify": { |
| | | "version": "1.4.0", |
| | |
| | | "yallist": "^3.0.2" |
| | | } |
| | | }, |
| | | "node_modules/maath": { |
| | | "version": "0.9.0", |
| | | "resolved": "https://registry.npmmirror.com/maath/-/maath-0.9.0.tgz", |
| | | "integrity": "sha512-aAR8hoUqPxlsU8VOxkS9y37jhUzdUxM017NpCuxFU1Gk+nMaZASZxymZrV8LRSHzRk/watlbfyNKu6XPUhCFrQ==", |
| | | "peerDependencies": { |
| | | "@types/three": ">=0.144.0", |
| | | "three": ">=0.144.0" |
| | | } |
| | | }, |
| | | "node_modules/merge2": { |
| | | "version": "1.4.1", |
| | | "resolved": "https://registry.npmmirror.com/merge2/-/merge2-1.4.1.tgz", |
| | |
| | | "engines": { |
| | | "node": ">= 8" |
| | | } |
| | | }, |
| | | "node_modules/meshline": { |
| | | "version": "3.3.0", |
| | | "resolved": "https://registry.npmmirror.com/meshline/-/meshline-3.3.0.tgz", |
| | | "integrity": "sha512-EKKf2TLnfyqUeA7ryWFKgT9HchTMATvECGZnMQjtlcyxK0sB8shVLVkemBUp9dB3tkDEmoqQDLJCPStjkH8D7A==", |
| | | "peerDependencies": { |
| | | "three": ">=0.137" |
| | | } |
| | | }, |
| | | "node_modules/meshoptimizer": { |
| | | "version": "0.18.1", |
| | | "resolved": "https://registry.npmmirror.com/meshoptimizer/-/meshoptimizer-0.18.1.tgz", |
| | | "integrity": "sha512-ZhoIoL7TNV4s5B6+rx5mC//fw8/POGyNxS/DZyCJeiZ12ScLfVwRE/GfsxwiTkMYYD5DmK2/JXnEVXqL4rF+Sw==" |
| | | }, |
| | | "node_modules/micromatch": { |
| | | "version": "4.0.5", |
| | |
| | | "version": "4.1.1", |
| | | "resolved": "https://registry.npmmirror.com/object-assign/-/object-assign-4.1.1.tgz", |
| | | "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", |
| | | "dev": true, |
| | | "engines": { |
| | | "node": ">=0.10.0" |
| | | } |
| | |
| | | "version": "3.1.1", |
| | | "resolved": "https://registry.npmmirror.com/path-key/-/path-key-3.1.1.tgz", |
| | | "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", |
| | | "dev": true, |
| | | "engines": { |
| | | "node": ">=8" |
| | | } |
| | |
| | | "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==", |
| | | "dev": true |
| | | }, |
| | | "node_modules/potpack": { |
| | | "version": "1.0.2", |
| | | "resolved": "https://registry.npmmirror.com/potpack/-/potpack-1.0.2.tgz", |
| | | "integrity": "sha512-choctRBIV9EMT9WGAZHn3V7t0Z2pMQyl0EZE6pFc/6ml3ssw7Dlf/oAOvFwjm1HVsqfQN8GfeFyJ+d8tRzqueQ==" |
| | | }, |
| | | "node_modules/prelude-ls": { |
| | | "version": "1.2.1", |
| | | "resolved": "https://registry.npmmirror.com/prelude-ls/-/prelude-ls-1.2.1.tgz", |
| | |
| | | "version": "15.8.1", |
| | | "resolved": "https://registry.npmmirror.com/prop-types/-/prop-types-15.8.1.tgz", |
| | | "integrity": "sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==", |
| | | "dev": true, |
| | | "dependencies": { |
| | | "loose-envify": "^1.4.0", |
| | | "object-assign": "^4.1.1", |
| | |
| | | "node": ">=0.10.0" |
| | | } |
| | | }, |
| | | "node_modules/react-composer": { |
| | | "version": "5.0.3", |
| | | "resolved": "https://registry.npmmirror.com/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.npmmirror.com/react-dom/-/react-dom-18.2.0.tgz", |
| | |
| | | "node_modules/react-is": { |
| | | "version": "16.13.1", |
| | | "resolved": "https://registry.npmmirror.com/react-is/-/react-is-16.13.1.tgz", |
| | | "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==", |
| | | "dev": true |
| | | "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==" |
| | | }, |
| | | "node_modules/react-merge-refs": { |
| | | "version": "1.1.0", |
| | | "resolved": "https://registry.npmmirror.com/react-merge-refs/-/react-merge-refs-1.1.0.tgz", |
| | | "integrity": "sha512-alTKsjEL0dKH/ru1Iyn7vliS2QRcBp9zZPGoWxUOvRGWPUYgjo+V01is7p04It6KhgrzhJGnIj9GgX8W4bZoCQ==" |
| | | }, |
| | | "node_modules/react-reconciler": { |
| | | "version": "0.27.0", |
| | | "resolved": "https://registry.npmmirror.com/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-reconciler/node_modules/scheduler": { |
| | | "version": "0.21.0", |
| | | "resolved": "https://registry.npmmirror.com/scheduler/-/scheduler-0.21.0.tgz", |
| | | "integrity": "sha512-1r87x5fz9MXqswA2ERLo0EbOAU74DpIUO090gIasYTqlVoJeMcl+Z1Rg7WHz+qtPujhS/hGIt9kxZOYBV3faRQ==", |
| | | "dependencies": { |
| | | "loose-envify": "^1.1.0" |
| | | } |
| | | }, |
| | | "node_modules/react-refresh": { |
| | | "version": "0.14.0", |
| | |
| | | "peerDependencies": { |
| | | "react": ">=16.8", |
| | | "react-dom": ">=16.8" |
| | | } |
| | | }, |
| | | "node_modules/react-use-measure": { |
| | | "version": "2.1.1", |
| | | "resolved": "https://registry.npmmirror.com/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/read-cache": { |
| | |
| | | "node": ">= 0.4" |
| | | } |
| | | }, |
| | | "node_modules/regenerator-runtime": { |
| | | "version": "0.14.1", |
| | | "resolved": "https://registry.npmmirror.com/regenerator-runtime/-/regenerator-runtime-0.14.1.tgz", |
| | | "integrity": "sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==" |
| | | }, |
| | | "node_modules/regexp.prototype.flags": { |
| | | "version": "1.5.2", |
| | | "resolved": "https://registry.npmmirror.com/regexp.prototype.flags/-/regexp.prototype.flags-1.5.2.tgz", |
| | |
| | | }, |
| | | "engines": { |
| | | "node": ">= 0.4" |
| | | } |
| | | }, |
| | | "node_modules/require-from-string": { |
| | | "version": "2.0.2", |
| | | "resolved": "https://registry.npmmirror.com/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/resolve": { |
| | |
| | | "version": "2.0.0", |
| | | "resolved": "https://registry.npmmirror.com/shebang-command/-/shebang-command-2.0.0.tgz", |
| | | "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", |
| | | "dev": true, |
| | | "dependencies": { |
| | | "shebang-regex": "^3.0.0" |
| | | }, |
| | |
| | | "version": "3.0.0", |
| | | "resolved": "https://registry.npmmirror.com/shebang-regex/-/shebang-regex-3.0.0.tgz", |
| | | "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", |
| | | "dev": true, |
| | | "engines": { |
| | | "node": ">=8" |
| | | } |
| | |
| | | "engines": { |
| | | "node": ">=0.10.0" |
| | | } |
| | | }, |
| | | "node_modules/stats-gl": { |
| | | "version": "2.2.8", |
| | | "resolved": "https://registry.npmmirror.com/stats-gl/-/stats-gl-2.2.8.tgz", |
| | | "integrity": "sha512-94G5nZvduDmzxBS7K0lYnynYwreZpkknD8g5dZmU6mpwIhy3caCrjAm11Qm1cbyx7mqix7Fp00RkbsonzKWnoQ==", |
| | | "dependencies": { |
| | | "@types/three": "^0.163.0" |
| | | } |
| | | }, |
| | | "node_modules/stats.js": { |
| | | "version": "0.17.0", |
| | | "resolved": "https://registry.npmmirror.com/stats.js/-/stats.js-0.17.0.tgz", |
| | | "integrity": "sha512-hNKz8phvYLPEcRkeG1rsGmV5ChMjKDAWU7/OJJdDErPBNChQXxCo3WZurGpnWc6gZhAzEPFad1aVgyOANH1sMw==" |
| | | }, |
| | | "node_modules/string-width": { |
| | | "version": "5.1.2", |
| | |
| | | "node": ">= 0.4" |
| | | } |
| | | }, |
| | | "node_modules/suspend-react": { |
| | | "version": "0.1.3", |
| | | "resolved": "https://registry.npmmirror.com/suspend-react/-/suspend-react-0.1.3.tgz", |
| | | "integrity": "sha512-aqldKgX9aZqpoDp3e8/BZ8Dm7x1pJl+qI3ZKxDN0i/IQTWUwBx/ManmlVJ3wowqbno6c2bmiIfs+Um6LbsjJyQ==", |
| | | "peerDependencies": { |
| | | "react": ">=17.0" |
| | | } |
| | | }, |
| | | "node_modules/tailwindcss": { |
| | | "version": "3.4.3", |
| | | "resolved": "https://registry.npmmirror.com/tailwindcss/-/tailwindcss-3.4.3.tgz", |
| | |
| | | } |
| | | }, |
| | | "node_modules/three": { |
| | | "version": "0.155.0", |
| | | "resolved": "https://registry.npmmirror.com/three/-/three-0.155.0.tgz", |
| | | "integrity": "sha512-sNgCYmDijnIqkD/bMfk+1pHg3YzsxW7V2ChpuP6HCQ8NiZr3RufsXQr8M3SSUMjW4hG+sUk7YbyuY0DncaDTJQ==" |
| | | "version": "0.159.0", |
| | | "resolved": "https://registry.npmmirror.com/three/-/three-0.159.0.tgz", |
| | | "integrity": "sha512-eCmhlLGbBgucuo4VEA9IO3Qpc7dh8Bd4VKzr7WfW4+8hMcIfoAVi1ev0pJYN9PTTsCslbcKgBwr2wNZ1EvLInA==" |
| | | }, |
| | | "node_modules/three-mesh-bvh": { |
| | | "version": "0.6.8", |
| | | "resolved": "https://registry.npmmirror.com/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.29.6", |
| | | "resolved": "https://registry.npmmirror.com/three-stdlib/-/three-stdlib-2.29.6.tgz", |
| | | "integrity": "sha512-nj9bHkzhhwfmqQcM/keC2RDb0bHhbw6bRXTy81ehzi8F1rtp6pJ5eS0/vl1Eg5RMFqXOMyxJ6sDHPoLU+IrVZg==", |
| | | "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/three-stdlib/node_modules/fflate": { |
| | | "version": "0.6.10", |
| | | "resolved": "https://registry.npmmirror.com/fflate/-/fflate-0.6.10.tgz", |
| | | "integrity": "sha512-IQrh3lEPM93wVCEczc9SaAOvkmcoQn/G8Bo1e8ZPlY3X3bnAxWaBdvTdvM1hP62iZp0BXWDy4vTAy4fF0+Dlpg==" |
| | | }, |
| | | "node_modules/to-fast-properties": { |
| | | "version": "2.0.0", |
| | |
| | | "engines": { |
| | | "node": ">=8.0" |
| | | } |
| | | }, |
| | | "node_modules/troika-three-text": { |
| | | "version": "0.47.2", |
| | | "resolved": "https://registry.npmmirror.com/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.npmmirror.com/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.npmmirror.com/troika-worker-utils/-/troika-worker-utils-0.47.2.tgz", |
| | | "integrity": "sha512-mzss4MeyzUkYBppn4x5cdAqrhBHFEuVmMMgLMTyFV23x6GvQMyo+/R5E5Lsbrt7WSt5RfvewjcwD1DChRTA9lA==" |
| | | }, |
| | | "node_modules/ts-interface-checker": { |
| | | "version": "0.1.13", |
| | |
| | | "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", |
| | | "dev": true |
| | | }, |
| | | "node_modules/utility-types": { |
| | | "version": "3.11.0", |
| | | "resolved": "https://registry.npmmirror.com/utility-types/-/utility-types-3.11.0.tgz", |
| | | "integrity": "sha512-6Z7Ma2aVEWisaL6TvBCy7P8rm2LQoPv6dJ7ecIaIixHcwfbJ0x7mWdbcwlIM5IGQxPZSFYeqRCqlOOeKoJYMkw==", |
| | | "engines": { |
| | | "node": ">= 4" |
| | | } |
| | | }, |
| | | "node_modules/uuid": { |
| | | "version": "9.0.1", |
| | | "resolved": "https://registry.npmmirror.com/uuid/-/uuid-9.0.1.tgz", |
| | | "integrity": "sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==", |
| | | "bin": { |
| | | "uuid": "dist/bin/uuid" |
| | | } |
| | | }, |
| | | "node_modules/valtio": { |
| | | "version": "1.13.2", |
| | | "resolved": "https://registry.npmmirror.com/valtio/-/valtio-1.13.2.tgz", |
| | |
| | | } |
| | | } |
| | | }, |
| | | "node_modules/webgl-constants": { |
| | | "version": "1.1.1", |
| | | "resolved": "https://registry.npmmirror.com/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.npmmirror.com/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.npmmirror.com/which/-/which-2.0.2.tgz", |
| | | "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", |
| | | "dev": true, |
| | | "dependencies": { |
| | | "isexe": "^2.0.0" |
| | | }, |
| | |
| | | "engines": { |
| | | "node": ">=10" |
| | | } |
| | | }, |
| | | "node_modules/zustand": { |
| | | "version": "3.7.2", |
| | | "resolved": "https://registry.npmmirror.com/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 |
| | | } |
| | | } |
| | | } |
| | | } |
| | | } |
| | |
| | | }, |
| | | "dependencies": { |
| | | "@tweenjs/tween.js": "^21.0.0", |
| | | "@react-three/drei": "9.92.0", |
| | | "@react-three/fiber": "8.15.12", |
| | | "axios": "^1.6.2", |
| | | "react": "^18.2.0", |
| | | "react-dom": "^18.2.0", |
| | | "react-router-dom": "^6.15.0", |
| | | "three": "^0.155.0", |
| | | "three": "^0.159.0", |
| | | "valtio": "^1.12.1" |
| | | }, |
| | | "devDependencies": { |
| | |
| | | |
| | | return ( |
| | | <> |
| | | <h1 class="text-3xl font-bold underline"> |
| | | <h1 className="text-3xl font-bold underline"> |
| | | {store.text} |
| | | </h1> |
| | | </> |
New file |
| | |
| | | import * as THREE from 'three' |
| | | import Stats from 'three/addons/libs/stats.module.js'; |
| | | import { OrbitControls } from 'three/examples/jsm/controls/OrbitControls' |
| | | import TWEEN from '@tweenjs/tween.js'; |
| | | import { EffectComposer } from 'three/examples/jsm/postprocessing/EffectComposer'; |
| | | import { RenderPass } from 'three/examples/jsm/postprocessing/RenderPass'; |
| | | import { OutlinePass } from 'three/examples/jsm/postprocessing/OutlinePass'; |
| | | import { ShaderPass } from 'three/examples/jsm/postprocessing/ShaderPass'; |
| | | import { FXAAShader } from 'three/examples/jsm/shaders/FXAAShader'; |
| | | import { FBXLoader } from 'three/examples/jsm/loaders/FBXLoader' |
| | | |
| | | const help = false; |
| | | |
| | | export default class ShelfThree { |
| | | |
| | | constructor(dom) { |
| | | this.dom = dom; |
| | | |
| | | this.objects = []; |
| | | } |
| | | |
| | | startup = () => { |
| | | this.scene = this.initScene(); |
| | | this.camera = this.initCamera(); |
| | | this.renderer = this.initRenderer(); |
| | | this.controls = this.initControls(); |
| | | this.stats = this.initStats(); |
| | | this.composer = this.initComposer(); |
| | | this.windowResize(); |
| | | this.initRaycaster(); |
| | | initLight(this.scene); |
| | | |
| | | this.animate(); |
| | | } |
| | | |
| | | animate = () => { |
| | | this.animationFrame = requestAnimationFrame(this.animate); |
| | | this.render(); |
| | | TWEEN.update(); |
| | | } |
| | | |
| | | render = () => { |
| | | // this.renderer.render(this.scene, this.camera); |
| | | this.composer.render(); // use special effects |
| | | this.stats.update(); |
| | | // Rotate the scene |
| | | this.controls.update() |
| | | this.controls.autoRotateSpeed = 2; |
| | | } |
| | | |
| | | getFullWidth = () => { |
| | | return this.dom?.offsetWidth; |
| | | } |
| | | |
| | | getFullHeight = () => { |
| | | return this.dom?.offsetHeight; |
| | | } |
| | | |
| | | addObject = (object) => { |
| | | this.scene.add(object); |
| | | this.objects.push(object); |
| | | } |
| | | |
| | | initScene = () => { |
| | | const scene = new THREE.Scene(); |
| | | // scene.background = new THREE.Color(0xf8f8f8); |
| | | scene.background = new THREE.Color(0x7a7a7a); |
| | | scene.fog = new THREE.Fog(scene.background, 1, 5000); |
| | | if (help) { |
| | | scene.add(new THREE.AxesHelper(1000)); |
| | | } |
| | | return scene; |
| | | } |
| | | |
| | | initCamera = () => { |
| | | const camera = new THREE.PerspectiveCamera(70, this.getFullWidth() / this.getFullHeight(), 1, 60000); |
| | | camera.position.set(-400, 400, 400); |
| | | this.scene.add(camera); |
| | | return camera; |
| | | } |
| | | |
| | | initRenderer = () => { |
| | | const renderer = new THREE.WebGLRenderer({ antialias: true, alpha: true }); |
| | | renderer.setClearAlpha(0); |
| | | // renderer.useLegacyLights = false; // 旧版光源 重要 |
| | | renderer.shadowMap.enabled = true; |
| | | // this.renderer.shadowMap.type = THREE.BasicShadowMap; // 最低阴影 |
| | | // renderer.toneMapping = THREE.ReinhardToneMapping; |
| | | renderer.toneMapping = THREE.ACESFilmicToneMapping; |
| | | renderer.setPixelRatio(window.devicePixelRatio); |
| | | renderer.setSize(this.getFullWidth(), this.getFullHeight()); |
| | | this.dom?.appendChild(renderer.domElement); |
| | | return renderer; |
| | | } |
| | | |
| | | initComposer = () => { |
| | | const composer = new EffectComposer(this.renderer); |
| | | const renderPass = new RenderPass(this.scene, this.camera); |
| | | composer.addPass(renderPass); |
| | | // pixel ratio |
| | | const pixelRatio = this.renderer.getPixelRatio(); |
| | | const newWidth = Math.floor(this.getFullWidth() * pixelRatio) || 1; |
| | | const newHeight = Math.floor(this.getFullHeight() * pixelRatio) || 1; |
| | | composer.setSize(newWidth, newHeight); |
| | | // antialias |
| | | const effectFXAA = new ShaderPass(FXAAShader); |
| | | effectFXAA.uniforms['resolution'].value.set(1 / newWidth, 1 / newHeight); |
| | | composer.addPass(effectFXAA); |
| | | // outline |
| | | this.outlinePass = new OutlinePass(new THREE.Vector2(this.getFullWidth(), this.getFullHeight()), this.scene, this.camera); |
| | | this.outlinePass.visibleEdgeColor.set('#ffffff'); // outline color |
| | | this.outlinePass.edgeStrength = 10; // outline weight |
| | | composer.addPass(this.outlinePass); |
| | | return composer; |
| | | } |
| | | |
| | | initControls = () => { |
| | | const controls = new OrbitControls(this.camera, this.renderer.domElement); |
| | | // controls.enableRotate = false; // 禁用整体旋转功能 |
| | | controls.enablePan = false; // 允许平移 |
| | | controls.enableDamping = true; // 开启阻尼 |
| | | controls.dampingFactor = 0.08; // 阻尼因子 |
| | | controls.enableZoom = true; // 允许缩放 |
| | | // controls.minDistance = 1; // 最小缩放距离 |
| | | // controls.maxDistance = 30; // 最大缩放距离 |
| | | controls.minPolarAngle = 0; // 最小俯仰角度(向下看) |
| | | controls.minPolarAngle = Math.PI / 2.1; |
| | | controls.maxPolarAngle = Math.PI / 2.1; // 最大俯仰角度(向上看) |
| | | controls.rotateSpeed = 0.6; // 视角移动速度减慢 |
| | | controls.autoRotate = true; // 自动旋转 |
| | | |
| | | controls.target = new THREE.Vector3(0, 250, 0) // 屏幕中心点 平替 camera的lookAt |
| | | return controls; |
| | | } |
| | | |
| | | initStats = () => { |
| | | const stats = new Stats(); |
| | | this.dom?.appendChild(stats.dom); |
| | | if (!help) { |
| | | stats.domElement.style.display = 'none'; |
| | | } |
| | | return stats; |
| | | } |
| | | |
| | | windowResize = () => { |
| | | this.resizeHandler = () => { |
| | | this.camera.aspect = this.getFullWidth() / this.getFullHeight(); |
| | | this.camera.updateProjectionMatrix(); |
| | | this.renderer.setSize(this.getFullWidth(), this.getFullHeight()); |
| | | this.renderer.setPixelRatio(window.devicePixelRatio); |
| | | }; |
| | | window.addEventListener('resize', this.resizeHandler, false); |
| | | } |
| | | |
| | | initRaycaster = () => { |
| | | const raycaster = new THREE.Raycaster(); |
| | | const mouse = new THREE.Vector2(); |
| | | this.handleClickEvent = (event) => { |
| | | let x, y; |
| | | if (event.changedTouches) { |
| | | x = event.changedTouches[0].pageX; |
| | | y = event.changedTouches[0].pageY; |
| | | } else { |
| | | x = event.clientX; |
| | | y = event.clientY; |
| | | } |
| | | let rect = this.dom.getBoundingClientRect(); |
| | | mouse.x = ((x - rect.left) / rect.width) * 2 - 1; |
| | | mouse.y = -((y - rect.top) / rect.height) * 2 + 1; |
| | | event.preventDefault(); |
| | | raycaster.setFromCamera(mouse, this.camera); |
| | | let intersects = raycaster.intersectObjects(this.objects, true); |
| | | if (intersects.length === 0) { |
| | | return; |
| | | } |
| | | let objName = intersects[0].object.name; |
| | | this.objects.forEach(obj => { |
| | | if (obj.name === objName) { |
| | | this.outlinePass.selectedObjects = [obj]; |
| | | } |
| | | }) |
| | | if (objName && this.handleClick) { |
| | | this.handleClick(objName, x, y); |
| | | } |
| | | } |
| | | this.dom?.addEventListener("click", this.handleClickEvent, false); |
| | | } |
| | | |
| | | generateMesh = (fn) => { |
| | | const loader = new FBXLoader(); |
| | | fn(loader, this.addObject); |
| | | } |
| | | |
| | | setNewSelectedMesh = (objName) => { |
| | | for (const mesh of this.objects) { |
| | | if (mesh.name === objName) { |
| | | this.outlinePass.selectedObjects = [mesh]; |
| | | break; |
| | | } |
| | | } |
| | | } |
| | | |
| | | rePerspective = (maxHeight, normalHeight) => { |
| | | const height = Math.max(maxHeight, normalHeight) |
| | | const cameraPosScale = 0.7; |
| | | this.camera.position.set( |
| | | -height * cameraPosScale, |
| | | height * cameraPosScale, |
| | | height * cameraPosScale |
| | | ); |
| | | this.controls.target = new THREE.Vector3(0, maxHeight * 0.53, 0); |
| | | } |
| | | |
| | | destroy = () => { |
| | | cancelAnimationFrame(this.animationFrame); |
| | | window.removeEventListener('resize', this.resizeHandler); |
| | | if (this.scene) { |
| | | while (this.scene.children.length > 0) { |
| | | this.removeEntity(this.scene.children[0]); |
| | | } |
| | | this.scene = null; |
| | | } |
| | | if (this.renderer) { |
| | | this.renderer.dispose(); |
| | | this.renderer.forceContextLoss(); |
| | | this.renderer.context = null; |
| | | this.renderer.domElement = null; |
| | | this.renderer = null; |
| | | } |
| | | if (this.composer) { |
| | | this.composer.passes.forEach(pass => { |
| | | if (pass.dispose) { |
| | | pass.dispose(); |
| | | } |
| | | }); |
| | | this.composer = null; |
| | | } |
| | | if (this.controls) { |
| | | this.controls.dispose(); |
| | | this.controls = null; |
| | | } |
| | | this.dom?.removeEventListener("click", this.handleClickEvent); |
| | | this.camera = null; |
| | | this.objects = []; |
| | | while (this.dom?.firstChild) { |
| | | this.dom.removeChild(this.dom.firstChild); |
| | | } |
| | | } |
| | | |
| | | removeEntity = (object) => { |
| | | if (object.material) object.material.dispose(); |
| | | if (object.geometry) object.geometry.dispose(); |
| | | if (object.texture) object.texture.dispose(); |
| | | this.scene.remove(object); |
| | | } |
| | | }; |
| | | |
| | | const initLight = (scene) => { |
| | | const hemiLight = new THREE.HemisphereLight(0xffffff, 0xffffff, 6); |
| | | hemiLight.color.setHSL(0.6, 1, 0.6); |
| | | hemiLight.groundColor.setHSL(0.095, 1, 0.75); |
| | | hemiLight.position.set(0, 1500, 0); |
| | | scene.add(hemiLight); |
| | | |
| | | const dirLight = new THREE.DirectionalLight(0xffffff, 2.5); |
| | | dirLight.color.setHSL(0.1, 1, 0.95); |
| | | dirLight.position.set(-10, 10, 10); |
| | | dirLight.position.multiplyScalar(30); |
| | | scene.add(dirLight); |
| | | |
| | | const dirLight1 = new THREE.DirectionalLight(0xffffff, 2.5); |
| | | dirLight1.color.setHSL(0.1, 1, 0.95); |
| | | dirLight1.position.set(10, 10, -10); |
| | | dirLight1.position.multiplyScalar(30); |
| | | scene.add(dirLight1); |
| | | } |
| | |
| | | box-sizing: border-box; |
| | | } |
| | | |
| | | html, |
| | | body, |
| | | #root { |
| | | width: 100%; |
| | | height: 100%; |
| | | } |
| | | |
| | | /* base model conflicts with ant design, and can be commented out. */ |
| | | @tailwind base; |
| | | @tailwind components; |