{"_id":"mujoco-react","_rev":"50-44c200b038e029a93efb5544eecb126c","name":"mujoco-react","dist-tags":{"latest":"10.9.0"},"versions":{"0.1.0":{"name":"mujoco-react","version":"0.1.0","keywords":["mujoco","react","three","r3f","react-three-fiber","physics","simulation","robotics","wasm"],"license":"Apache-2.0","_id":"mujoco-react@0.1.0","maintainers":[{"name":"noasterdamus","email":"noah.wardlow.0@gmail.com"}],"homepage":"https://github.com/noah/mujoco-react#readme","bugs":{"url":"https://github.com/noah/mujoco-react/issues"},"dist":{"shasum":"bb8438d4f3f1fbca556342c433d47ea0aca601f0","tarball":"https://registry.npmjs.org/mujoco-react/-/mujoco-react-0.1.0.tgz","fileCount":42,"integrity":"sha512-T8Bp4bLMqGRNHM/GX/s5wmQUm7ACTN8HREYPDi+6MClo8QTXAqhcQW0SmA1fP1SJKYHCTtPm2BzPL1jwRxhxQw==","signatures":[{"sig":"MEUCIFYC3IQW/egUjsXzhuG7gICRzqvpd7Df9/Tx0Amxzgg7AiEAj92RHJNRg73lbVtDYvBa81JEPONoGtonx0e6lpLAMEY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":648117},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.js"}},"./package.json":"./package.json"},"gitHead":"dd2f25a27debb9519768ae904808d8b160792113","scripts":{"dev":"tsup --watch","build":"tsup","typecheck":"tsc --noEmit","prepublishOnly":"npm run build"},"_npmUser":{"name":"noasterdamus","email":"noah.wardlow.0@gmail.com"},"repository":{"url":"git+https://github.com/noah/mujoco-react.git","type":"git"},"_npmVersion":"11.9.0","description":"Composable React Three Fiber building blocks for MuJoCo WASM simulations","directories":{},"sideEffects":false,"_nodeVersion":"25.6.0","dependencies":{"mujoco-js":"0.0.7"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.4.0","react":"^19.2.0","three":"^0.181.0","typescript":"~5.8.2","@types/react":"^19.0.0","@types/three":"^0.181.0","@react-three/drei":"^10.7.7","@react-three/fiber":"^9.5.0"},"peerDependencies":{"react":">=18","three":">=0.160.0","@react-three/drei":">=9","@react-three/fiber":">=8"},"_npmOperationalInternal":{"tmp":"tmp/mujoco-react_0.1.0_1770595803313_0.028627024929488876","host":"s3://npm-registry-packages-npm-production"}},"0.2.0":{"name":"mujoco-react","version":"0.2.0","keywords":["mujoco","react","three","r3f","react-three-fiber","physics","simulation","robotics","wasm"],"license":"Apache-2.0","_id":"mujoco-react@0.2.0","maintainers":[{"name":"noasterdamus","email":"noah.wardlow.0@gmail.com"}],"homepage":"https://github.com/noah/mujoco-react#readme","bugs":{"url":"https://github.com/noah/mujoco-react/issues"},"dist":{"shasum":"67b79f3fc39380c52f3ad88a935ebc9c69179a2e","tarball":"https://registry.npmjs.org/mujoco-react/-/mujoco-react-0.2.0.tgz","fileCount":42,"integrity":"sha512-v4I0Xh3M3G++Riv0ku+dmAROF6LDxQsEFfLjTYsBglXmgJpEbDhexnLJs5nmKdTXk9WeRfYU2jRmS+ufGE97RQ==","signatures":[{"sig":"MEUCIQD1WZ0qwAL/R8ZnsPmHPhN8dHRa1QCGDakRFhewE088/wIgY6oGBQ8wgvXDSgawZMZkJGra7yR60NrsllOZGfqWiK0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":649661},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.js"}},"./package.json":"./package.json"},"gitHead":"e57ad7993faea6aef8ee46f4c1907030849e5f8a","scripts":{"dev":"tsup --watch","build":"tsup","typecheck":"tsc --noEmit","prepublishOnly":"npm run build"},"_npmUser":{"name":"noasterdamus","email":"noah.wardlow.0@gmail.com"},"repository":{"url":"git+https://github.com/noah/mujoco-react.git","type":"git"},"_npmVersion":"11.9.0","description":"Composable React Three Fiber building blocks for MuJoCo WASM simulations","directories":{},"sideEffects":false,"_nodeVersion":"25.6.0","dependencies":{"mujoco-js":"0.0.7"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.4.0","react":"^19.2.0","three":"^0.181.0","typescript":"~5.8.2","@types/react":"^19.0.0","@types/three":"^0.181.0","@react-three/drei":"^10.7.7","@react-three/fiber":"^9.5.0"},"peerDependencies":{"react":">=18","three":">=0.160.0","@react-three/drei":">=9","@react-three/fiber":">=8"},"_npmOperationalInternal":{"tmp":"tmp/mujoco-react_0.2.0_1770596786456_0.8158046577295248","host":"s3://npm-registry-packages-npm-production"}},"0.3.0":{"name":"mujoco-react","version":"0.3.0","keywords":["mujoco","react","three","r3f","react-three-fiber","physics","simulation","robotics","wasm"],"license":"Apache-2.0","_id":"mujoco-react@0.3.0","maintainers":[{"name":"noasterdamus","email":"noah.wardlow.0@gmail.com"}],"homepage":"https://github.com/noah/mujoco-react#readme","bugs":{"url":"https://github.com/noah/mujoco-react/issues"},"dist":{"shasum":"5328eb6c4c64fe6691c1b68c471c9c772d375626","tarball":"https://registry.npmjs.org/mujoco-react/-/mujoco-react-0.3.0.tgz","fileCount":48,"integrity":"sha512-zuEWVFS6YVPqCJnAiHxTJHqfYFtzfkidIQqnHZwyx9Y6/0eS4SgIawHQIDncvA4iFaqiQZpD+SqvkV2XZVb0lg==","signatures":[{"sig":"MEUCIQCwuEj3LXkHAS18MUWBQf/A5yfz3wdyoX1cDjVo9dUqZwIgOl9nQHYpHXLb7xlCx3jisKAExD9/LBTljYX8TvfNyAA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":734621},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.js"}},"./package.json":"./package.json"},"gitHead":"6f964e089ea8068b2ea4dd9408f376bbeadc4b4f","scripts":{"dev":"tsup --watch","build":"tsup","typecheck":"tsc --noEmit","prepublishOnly":"npm run build"},"_npmUser":{"name":"noasterdamus","email":"noah.wardlow.0@gmail.com"},"repository":{"url":"git+https://github.com/noah/mujoco-react.git","type":"git"},"_npmVersion":"11.9.0","description":"Composable React Three Fiber building blocks for MuJoCo WASM simulations","directories":{},"sideEffects":false,"_nodeVersion":"25.6.0","dependencies":{"mujoco-js":"0.0.7"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.4.0","react":"^19.2.0","three":"^0.181.0","typescript":"~5.8.2","@types/react":"^19.0.0","@types/three":"^0.181.0","@react-three/drei":"^10.7.7","@react-three/fiber":"^9.5.0"},"peerDependencies":{"react":">=18","three":">=0.160.0","@react-three/drei":">=9","@react-three/fiber":">=8"},"_npmOperationalInternal":{"tmp":"tmp/mujoco-react_0.3.0_1771288294250_0.06433116976001019","host":"s3://npm-registry-packages-npm-production"}},"1.0.0":{"name":"mujoco-react","version":"1.0.0","keywords":["mujoco","react","three","r3f","react-three-fiber","physics","simulation","robotics","wasm"],"license":"Apache-2.0","_id":"mujoco-react@1.0.0","maintainers":[{"name":"primlabs","email":"noah.wardlow.0@gmail.com"}],"homepage":"https://github.com/noah-wardlow/mujoco-react#readme","bugs":{"url":"https://github.com/noah-wardlow/mujoco-react/issues"},"dist":{"shasum":"2c9b34432d8c67c0c452be34b5b3a6c44e4821c0","tarball":"https://registry.npmjs.org/mujoco-react/-/mujoco-react-1.0.0.tgz","fileCount":49,"integrity":"sha512-BOs8FXur2bHkY6ZqEybvx3B5xklZer23h10ORWFp+OjUdyVxBy6/2A8eAiBIAQlVutMrpcCxoiGRSmwjZC2pig==","signatures":[{"sig":"MEUCIQCUjGDOpwsPcTulJppDrBN5qReOTEcAAJ6BIVtV01vSYAIgG+ajK9iLaQSsc7fA+ZdxrF3HR5zu8MBII7Q0wBpeuRI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/mujoco-react@1.0.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":743157},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.js"}},"./package.json":"./package.json"},"gitHead":"4d4138fa5c88192c83298d3f6f9ed92a66275c98","scripts":{"dev":"tsup --watch","build":"tsup","typecheck":"tsc --noEmit"},"_npmUser":{"name":"primlabs","email":"noah.wardlow.0@gmail.com"},"repository":{"url":"git+https://github.com/noah-wardlow/mujoco-react.git","type":"git"},"_npmVersion":"11.10.0","description":"Composable React Three Fiber building blocks for MuJoCo WASM simulations","directories":{},"sideEffects":false,"_nodeVersion":"22.22.0","dependencies":{"mujoco-js":"0.0.7"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.4.0","react":"^19.2.0","three":"^0.181.0","typescript":"~5.8.2","@types/react":"^19.0.0","@types/three":"^0.181.0","semantic-release":"^25.0.3","@react-three/drei":"^10.7.7","@react-three/fiber":"^9.5.0","@semantic-release/git":"^10.0.1","@semantic-release/changelog":"^6.0.3"},"peerDependencies":{"react":">=18","three":">=0.160.0","@react-three/drei":">=9","@react-three/fiber":">=8"},"_npmOperationalInternal":{"tmp":"tmp/mujoco-react_1.0.0_1771725144636_0.6309779057415918","host":"s3://npm-registry-packages-npm-production"}},"2.0.0":{"name":"mujoco-react","version":"2.0.0","keywords":["mujoco","react","three","r3f","react-three-fiber","physics","simulation","robotics","wasm"],"license":"Apache-2.0","_id":"mujoco-react@2.0.0","maintainers":[{"name":"primlabs","email":"noah.wardlow.0@gmail.com"}],"homepage":"https://github.com/noah-wardlow/mujoco-react#readme","bugs":{"url":"https://github.com/noah-wardlow/mujoco-react/issues"},"dist":{"shasum":"d88357941624aff0bb9c455d6e9498aea6c6b8c9","tarball":"https://registry.npmjs.org/mujoco-react/-/mujoco-react-2.0.0.tgz","fileCount":49,"integrity":"sha512-K0A29MwufpFFIId5u2DAastCO7+20Zhcgl6iJXaeiNckYAHxBl1UOmOCUx+AgMZgX/lm2H2X8K08EP4WVyGk/A==","signatures":[{"sig":"MEYCIQCNRYovzdK/2zMCd955057XRSNdhd0h4gEklygW2Cm9CQIhAMBpKoik+OznPrVSKScE18U9ogZ0yEPB2RWFOsidIAZ1","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/mujoco-react@2.0.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":742778},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.js"}},"./package.json":"./package.json"},"gitHead":"45ad18b370134a5646e08d6efc85c394444eb6ee","scripts":{"dev":"tsup --watch","build":"tsup","typecheck":"tsc --noEmit"},"_npmUser":{"name":"primlabs","email":"noah.wardlow.0@gmail.com"},"repository":{"url":"git+https://github.com/noah-wardlow/mujoco-react.git","type":"git"},"_npmVersion":"11.10.0","description":"Composable React Three Fiber building blocks for MuJoCo WASM simulations","directories":{},"sideEffects":false,"_nodeVersion":"22.22.0","dependencies":{"mujoco-js":"0.0.7"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.4.0","react":"^19.2.0","three":"^0.181.0","typescript":"~5.8.2","@types/react":"^19.0.0","@types/three":"^0.181.0","semantic-release":"^25.0.3","@react-three/drei":"^10.7.7","@react-three/fiber":"^9.5.0","@semantic-release/git":"^10.0.1","@semantic-release/changelog":"^6.0.3"},"peerDependencies":{"react":">=18","three":">=0.160.0","@react-three/drei":">=9","@react-three/fiber":">=8"},"_npmOperationalInternal":{"tmp":"tmp/mujoco-react_2.0.0_1771736257070_0.5277127408587672","host":"s3://npm-registry-packages-npm-production"}},"3.0.0":{"name":"mujoco-react","version":"3.0.0","keywords":["mujoco","react","three","r3f","react-three-fiber","physics","simulation","robotics","wasm"],"license":"Apache-2.0","_id":"mujoco-react@3.0.0","maintainers":[{"name":"primlabs","email":"noah.wardlow.0@gmail.com"}],"homepage":"https://github.com/noah-wardlow/mujoco-react#readme","bugs":{"url":"https://github.com/noah-wardlow/mujoco-react/issues"},"dist":{"shasum":"e65d609e5fa2f3a4afbc1e37279c3395f2454c20","tarball":"https://registry.npmjs.org/mujoco-react/-/mujoco-react-3.0.0.tgz","fileCount":49,"integrity":"sha512-eYZ3SWN9CgQzYhN4xeI9V+xGLrwq/k2Lj2kLMJeR5wSzd9kS4TmIsHnXFBLUc8t4IuedAxMFQMECx0FTvrP+Iw==","signatures":[{"sig":"MEYCIQCjKegemi93nDKeVY/YiNkaX1zmx8GJBv6iZtNURorx+QIhALpI8jcAFNIE4ff2lpcc4bMOJVW/vjf7Sx029DuYAuvu","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/mujoco-react@3.0.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":741850},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.js"}},"./package.json":"./package.json"},"gitHead":"d28231f59e0b3ec315d7192321a8cb1a80472cd4","scripts":{"dev":"tsup --watch","build":"tsup","typecheck":"tsc --noEmit"},"_npmUser":{"name":"primlabs","email":"noah.wardlow.0@gmail.com"},"repository":{"url":"git+https://github.com/noah-wardlow/mujoco-react.git","type":"git"},"_npmVersion":"11.10.0","description":"Composable React Three Fiber building blocks for MuJoCo WASM simulations","directories":{},"sideEffects":false,"_nodeVersion":"22.22.0","dependencies":{"mujoco-js":"0.0.7"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.4.0","react":"^19.2.0","three":"^0.181.0","typescript":"~5.8.2","@types/react":"^19.0.0","@types/three":"^0.181.0","semantic-release":"^25.0.3","@react-three/drei":"^10.7.7","@react-three/fiber":"^9.5.0","@semantic-release/git":"^10.0.1","@semantic-release/changelog":"^6.0.3"},"peerDependencies":{"react":">=18","three":">=0.160.0","@react-three/drei":">=9","@react-three/fiber":">=8"},"_npmOperationalInternal":{"tmp":"tmp/mujoco-react_3.0.0_1771737192570_0.4964437401450881","host":"s3://npm-registry-packages-npm-production"}},"4.0.0":{"name":"mujoco-react","version":"4.0.0","keywords":["mujoco","react","three","r3f","react-three-fiber","physics","simulation","robotics","wasm"],"license":"Apache-2.0","_id":"mujoco-react@4.0.0","maintainers":[{"name":"primlabs","email":"noah.wardlow.0@gmail.com"}],"homepage":"https://github.com/noah-wardlow/mujoco-react#readme","bugs":{"url":"https://github.com/noah-wardlow/mujoco-react/issues"},"dist":{"shasum":"ed6801b5a9838763ed28d87d27c2ffabd1dc1c13","tarball":"https://registry.npmjs.org/mujoco-react/-/mujoco-react-4.0.0.tgz","fileCount":49,"integrity":"sha512-GHCgrZkJnbgsdi0b86H+pxhjnlIB66SE4ORAzS0P2V4ysD/LM/7B0+8DbmH5BmKNpuWaGwcRcQkeu/1C5C7rTg==","signatures":[{"sig":"MEQCIC0ng33jCVUnp9Bzpri9M2yaFUG4yBieG9dVwtSubC9/AiBJImalBbdXNPMSuMyciNSQ44dLbdhBc/Xc+wCcORX1WA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/mujoco-react@4.0.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":741850},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.js"}},"./package.json":"./package.json"},"gitHead":"2bde4c062d506665cb8b51c47ed7a917103c7194","scripts":{"dev":"tsup --watch","build":"tsup","typecheck":"tsc --noEmit"},"_npmUser":{"name":"primlabs","email":"noah.wardlow.0@gmail.com"},"repository":{"url":"git+https://github.com/noah-wardlow/mujoco-react.git","type":"git"},"_npmVersion":"11.10.0","description":"Composable React Three Fiber building blocks for MuJoCo WASM simulations","directories":{},"sideEffects":false,"_nodeVersion":"22.22.0","dependencies":{"mujoco-js":"0.0.7"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.4.0","react":"^19.2.0","three":"^0.181.0","typescript":"~5.8.2","@types/react":"^19.0.0","@types/three":"^0.181.0","semantic-release":"^25.0.3","@react-three/drei":"^10.7.7","@react-three/fiber":"^9.5.0","@semantic-release/git":"^10.0.1","@semantic-release/changelog":"^6.0.3"},"peerDependencies":{"react":">=18","three":">=0.160.0","@react-three/drei":">=9","@react-three/fiber":">=8"},"_npmOperationalInternal":{"tmp":"tmp/mujoco-react_4.0.0_1771738131070_0.7939743083450612","host":"s3://npm-registry-packages-npm-production"}},"5.0.0":{"name":"mujoco-react","version":"5.0.0","keywords":["mujoco","react","three","r3f","react-three-fiber","physics","simulation","robotics","wasm"],"license":"Apache-2.0","_id":"mujoco-react@5.0.0","maintainers":[{"name":"primlabs","email":"noah.wardlow.0@gmail.com"}],"homepage":"https://github.com/noah-wardlow/mujoco-react#readme","bugs":{"url":"https://github.com/noah-wardlow/mujoco-react/issues"},"dist":{"shasum":"3a60a5f7d95f0085257a91022c045ca8d945a41f","tarball":"https://registry.npmjs.org/mujoco-react/-/mujoco-react-5.0.0.tgz","fileCount":49,"integrity":"sha512-8Rlp5bUBf6dbJnxaUEKXjN73hK8RJJyyqawScfnd1XdSH2ufuBlDNdV4OtP1sFKGL6yAU5B2hebHULbGlnURew==","signatures":[{"sig":"MEUCIQC+BNCE5EMB6imRn5js/MNfb/qHnsa25wb6lZkglOeKIAIgCrKP3ns8PXJ0x779K+9+dr/GuoSjiwPzr1qvxH4DPRM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/mujoco-react@5.0.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":741832},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.js"}},"./package.json":"./package.json"},"gitHead":"5ed421bd3270474674ee1b20eb2423f546061c48","scripts":{"dev":"tsup --watch","build":"tsup","typecheck":"tsc --noEmit"},"_npmUser":{"name":"primlabs","email":"noah.wardlow.0@gmail.com"},"repository":{"url":"git+https://github.com/noah-wardlow/mujoco-react.git","type":"git"},"_npmVersion":"11.10.0","description":"Composable React Three Fiber building blocks for MuJoCo WASM simulations","directories":{},"sideEffects":false,"_nodeVersion":"22.22.0","dependencies":{"mujoco-js":"0.0.7"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.4.0","react":"^19.2.0","three":"^0.181.0","typescript":"~5.8.2","@types/react":"^19.0.0","@types/three":"^0.181.0","semantic-release":"^25.0.3","@react-three/drei":"^10.7.7","@react-three/fiber":"^9.5.0","@semantic-release/git":"^10.0.1","@semantic-release/changelog":"^6.0.3"},"peerDependencies":{"react":">=18","three":">=0.160.0","@react-three/drei":">=9","@react-three/fiber":">=8"},"_npmOperationalInternal":{"tmp":"tmp/mujoco-react_5.0.0_1771738844360_0.18688278825720128","host":"s3://npm-registry-packages-npm-production"}},"6.0.0":{"name":"mujoco-react","version":"6.0.0","keywords":["mujoco","react","three","r3f","react-three-fiber","physics","simulation","robotics","wasm"],"license":"Apache-2.0","_id":"mujoco-react@6.0.0","maintainers":[{"name":"primlabs","email":"noah.wardlow.0@gmail.com"}],"homepage":"https://github.com/noah-wardlow/mujoco-react#readme","bugs":{"url":"https://github.com/noah-wardlow/mujoco-react/issues"},"dist":{"shasum":"f611a487b986bc8549143e810bb35423d0774cd1","tarball":"https://registry.npmjs.org/mujoco-react/-/mujoco-react-6.0.0.tgz","fileCount":50,"integrity":"sha512-2cft0ipdnBPZLMqio9y3w4ZlGoqTHrTz0ZLHW+OrRRSUWkWV9y5YjiZlWYGmh9BmGkeePnhQrU8Z3HplO8Pjuw==","signatures":[{"sig":"MEQCIAH/N5Eb/PsdR//jLnecwlrfih6lVuUdvO8daQ4zXRh5AiAn8KzHF1/Chhq/8ZxuFSyITQLdK5qk7hNbnqZsWJITRA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/mujoco-react@6.0.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":743075},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.js"}},"./package.json":"./package.json"},"gitHead":"e1da4f06db2ec1a444961ca8cdeab97178e4fcc3","scripts":{"dev":"tsup --watch","build":"tsup","typecheck":"tsc --noEmit"},"_npmUser":{"name":"primlabs","email":"noah.wardlow.0@gmail.com"},"repository":{"url":"git+https://github.com/noah-wardlow/mujoco-react.git","type":"git"},"_npmVersion":"11.10.0","description":"Composable React Three Fiber building blocks for MuJoCo WASM simulations","directories":{},"sideEffects":false,"_nodeVersion":"22.22.0","dependencies":{"mujoco-js":"0.0.7"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.4.0","react":"^19.2.0","three":"^0.181.0","typescript":"~5.8.2","@types/react":"^19.0.0","@types/three":"^0.181.0","semantic-release":"^25.0.3","@react-three/drei":"^10.7.7","@react-three/fiber":"^9.5.0","@semantic-release/git":"^10.0.1","@semantic-release/changelog":"^6.0.3"},"peerDependencies":{"react":">=18","three":">=0.160.0","@react-three/drei":">=9","@react-three/fiber":">=8"},"_npmOperationalInternal":{"tmp":"tmp/mujoco-react_6.0.0_1771740414916_0.6768975138948679","host":"s3://npm-registry-packages-npm-production"}},"6.0.1":{"name":"mujoco-react","version":"6.0.1","keywords":["mujoco","react","three","r3f","react-three-fiber","physics","simulation","robotics","wasm"],"license":"Apache-2.0","_id":"mujoco-react@6.0.1","maintainers":[{"name":"primlabs","email":"noah.wardlow.0@gmail.com"}],"homepage":"https://github.com/noah-wardlow/mujoco-react#readme","bugs":{"url":"https://github.com/noah-wardlow/mujoco-react/issues"},"dist":{"shasum":"a2286871504cfa0b23bc9f6949af686eee684b9f","tarball":"https://registry.npmjs.org/mujoco-react/-/mujoco-react-6.0.1.tgz","fileCount":50,"integrity":"sha512-UdwHUx/uWULlSFDuUblCkb4LGDtqYiuW1TvepUkcsGmNkjGehGJ3I44wWzPwzBdRfX/aTN3TayNYx0+Cr3Y3Ug==","signatures":[{"sig":"MEUCIQClx0nBEpW/9EUnlpSWj3CaQ8wMsNy0g/Ad7VKdrl5uAQIgdV/xTmrVBPy9AQ+oFbk80xyJKURRC50mcIJtFvEsOU4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/mujoco-react@6.0.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":743075},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.js"}},"./package.json":"./package.json"},"gitHead":"7b6cc691558bd6e78d4a272c38225a2ffdc3fb94","scripts":{"dev":"tsup --watch","build":"tsup","typecheck":"tsc --noEmit"},"_npmUser":{"name":"primlabs","email":"noah.wardlow.0@gmail.com"},"repository":{"url":"git+https://github.com/noah-wardlow/mujoco-react.git","type":"git"},"_npmVersion":"11.10.0","description":"Composable React Three Fiber building blocks for MuJoCo WASM simulations","directories":{},"sideEffects":false,"_nodeVersion":"22.22.0","dependencies":{"mujoco-js":"0.0.7"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.4.0","react":"^19.2.0","three":"^0.181.0","typescript":"~5.8.2","@types/react":"^19.0.0","@types/three":"^0.181.0","semantic-release":"^25.0.3","@react-three/drei":"^10.7.7","@react-three/fiber":"^9.5.0","@semantic-release/git":"^10.0.1","@semantic-release/changelog":"^6.0.3"},"peerDependencies":{"react":">=18","three":">=0.160.0","@react-three/drei":">=9","@react-three/fiber":">=8"},"_npmOperationalInternal":{"tmp":"tmp/mujoco-react_6.0.1_1771741821907_0.6041919719185975","host":"s3://npm-registry-packages-npm-production"}},"7.0.0":{"name":"mujoco-react","version":"7.0.0","keywords":["mujoco","react","three","r3f","react-three-fiber","physics","simulation","robotics","wasm"],"license":"Apache-2.0","_id":"mujoco-react@7.0.0","maintainers":[{"name":"primlabs","email":"noah.wardlow.0@gmail.com"}],"homepage":"https://github.com/noah-wardlow/mujoco-react#readme","bugs":{"url":"https://github.com/noah-wardlow/mujoco-react/issues"},"dist":{"shasum":"2cac4670cefaf33f9a47c91d061713d66d175636","tarball":"https://registry.npmjs.org/mujoco-react/-/mujoco-react-7.0.0.tgz","fileCount":50,"integrity":"sha512-l559hlW4STDqBCObjMfwpM2FLWpZVOFmQPrsrEFtcPLahEtQc5VNP9SyYucnRW2fW8esFnHWqpQfsOEMv51tlg==","signatures":[{"sig":"MEUCIQD8ZNCZX1ewCJvdZRIbcg6+L1sLirqhneB21I8fKBwElgIgGv/gqBo1laR6FYHNVhjebAFjDnG6I/kulpx75g1LM4c=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/mujoco-react@7.0.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":770388},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.js"}},"./package.json":"./package.json"},"gitHead":"a3c8e2d15e8a6a4d4c65e000bbabb840f33ffaf8","scripts":{"dev":"tsup --watch","build":"tsup","typecheck":"tsc --noEmit"},"_npmUser":{"name":"primlabs","email":"noah.wardlow.0@gmail.com"},"repository":{"url":"git+https://github.com/noah-wardlow/mujoco-react.git","type":"git"},"_npmVersion":"11.10.0","description":"Composable React Three Fiber building blocks for MuJoCo WASM simulations","directories":{},"sideEffects":false,"_nodeVersion":"22.22.0","dependencies":{"mujoco-js":"0.0.7"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.4.0","react":"^19.2.0","three":"^0.181.0","typescript":"~5.8.2","@types/react":"^19.0.0","@types/three":"^0.181.0","semantic-release":"^25.0.3","@react-three/drei":"^10.7.7","@react-three/fiber":"^9.5.0","@semantic-release/git":"^10.0.1","@semantic-release/changelog":"^6.0.3"},"peerDependencies":{"react":">=18","three":">=0.160.0","@react-three/drei":">=9","@react-three/fiber":">=8"},"_npmOperationalInternal":{"tmp":"tmp/mujoco-react_7.0.0_1771778148904_0.5665667711831923","host":"s3://npm-registry-packages-npm-production"}},"7.0.1":{"name":"mujoco-react","version":"7.0.1","keywords":["mujoco","react","three","r3f","react-three-fiber","physics","simulation","robotics","wasm"],"license":"Apache-2.0","_id":"mujoco-react@7.0.1","maintainers":[{"name":"primlabs","email":"noah.wardlow.0@gmail.com"}],"homepage":"https://github.com/noah-wardlow/mujoco-react#readme","bugs":{"url":"https://github.com/noah-wardlow/mujoco-react/issues"},"dist":{"shasum":"0ff93cc1e9062a7e684b3d98f68676102f4ff6a4","tarball":"https://registry.npmjs.org/mujoco-react/-/mujoco-react-7.0.1.tgz","fileCount":50,"integrity":"sha512-a/hwaI0ZvSQKFtsxVdYmMOuyRmrqnYL2pnqBovOyKSOpaTrqyDuTUNaZzImuf0gM6qwWcwuWUGVb6u3lZgx/lg==","signatures":[{"sig":"MEQCIBvZwxDB8CxUU3o+2cbQAIeGw3m2gyX9ZsOmctoI8miJAiA95bn4EA0oFmL8bFmYNBmwqZhkKR7n/Yz1M8aJsORj8Q==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/mujoco-react@7.0.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":770314},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.js"}},"./package.json":"./package.json"},"gitHead":"8c17e8378b05e7969c7de6f81324ca4bb8a5478f","scripts":{"dev":"tsup --watch","build":"tsup","typecheck":"tsc --noEmit"},"_npmUser":{"name":"primlabs","email":"noah.wardlow.0@gmail.com"},"repository":{"url":"git+https://github.com/noah-wardlow/mujoco-react.git","type":"git"},"_npmVersion":"11.10.0","description":"Composable React Three Fiber building blocks for MuJoCo WASM simulations","directories":{},"sideEffects":false,"_nodeVersion":"22.22.0","dependencies":{"mujoco-js":"0.0.7"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.4.0","react":"^19.2.0","three":"^0.181.0","typescript":"~5.8.2","@types/react":"^19.0.0","@types/three":"^0.181.0","semantic-release":"^25.0.3","@react-three/drei":"^10.7.7","@react-three/fiber":"^9.5.0","@semantic-release/git":"^10.0.1","@semantic-release/changelog":"^6.0.3"},"peerDependencies":{"react":">=18","three":">=0.160.0","@react-three/drei":">=9","@react-three/fiber":">=8"},"_npmOperationalInternal":{"tmp":"tmp/mujoco-react_7.0.1_1771778546375_0.21880380049938197","host":"s3://npm-registry-packages-npm-production"}},"8.0.0":{"name":"mujoco-react","version":"8.0.0","keywords":["mujoco","react","three","r3f","react-three-fiber","physics","simulation","robotics","wasm"],"license":"Apache-2.0","_id":"mujoco-react@8.0.0","maintainers":[{"name":"primlabs","email":"noah.wardlow.0@gmail.com"}],"homepage":"https://github.com/noah-wardlow/mujoco-react#readme","bugs":{"url":"https://github.com/noah-wardlow/mujoco-react/issues"},"dist":{"shasum":"abe8544ac1a2d89c7bfb06727404d281401ed397","tarball":"https://registry.npmjs.org/mujoco-react/-/mujoco-react-8.0.0.tgz","fileCount":50,"integrity":"sha512-YTqmWea/zslWvNrBT+OAwZxDotdb8yJZwZDEBWBGmPq1+Jm8Jrn+L9V3P9qaKK9R971jzRyrEyDG2PLNYR4CAQ==","signatures":[{"sig":"MEUCIQCTjQesh8ThNtaxkpn8MTfGMVnMuYFlMjtQAOD/3kmRjQIgSdUSrJSHh+I0N/tFJzCxjMZol3XgljieQMsG/P/6xgE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/mujoco-react@8.0.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":778726},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.js"}},"./package.json":"./package.json"},"gitHead":"07de6e96b82ae0aa6c26bcea32b7e178263bb37b","scripts":{"dev":"tsup --watch","build":"tsup","typecheck":"tsc --noEmit"},"_npmUser":{"name":"primlabs","email":"noah.wardlow.0@gmail.com"},"repository":{"url":"git+https://github.com/noah-wardlow/mujoco-react.git","type":"git"},"_npmVersion":"11.10.0","description":"Composable React Three Fiber building blocks for MuJoCo WASM simulations","directories":{},"sideEffects":false,"_nodeVersion":"22.22.0","dependencies":{"mujoco-js":"0.0.7"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.4.0","react":"^19.2.0","three":"^0.181.0","typescript":"~5.8.2","@types/react":"^19.0.0","@types/three":"^0.181.0","semantic-release":"^25.0.3","@react-three/drei":"^10.7.7","@react-three/fiber":"^9.5.0","@semantic-release/git":"^10.0.1","@semantic-release/changelog":"^6.0.3"},"peerDependencies":{"react":">=18","three":">=0.160.0","@react-three/drei":">=9","@react-three/fiber":">=8"},"_npmOperationalInternal":{"tmp":"tmp/mujoco-react_8.0.0_1771779925047_0.6629710062584144","host":"s3://npm-registry-packages-npm-production"}},"8.1.0":{"name":"mujoco-react","version":"8.1.0","keywords":["mujoco","react","three","r3f","react-three-fiber","physics","simulation","robotics","wasm"],"license":"Apache-2.0","_id":"mujoco-react@8.1.0","maintainers":[{"name":"primlabs","email":"noah.wardlow.0@gmail.com"}],"homepage":"https://github.com/noah-wardlow/mujoco-react#readme","bugs":{"url":"https://github.com/noah-wardlow/mujoco-react/issues"},"dist":{"shasum":"829e6f383d39a673eabe86eb886cf41ba921ca96","tarball":"https://registry.npmjs.org/mujoco-react/-/mujoco-react-8.1.0.tgz","fileCount":50,"integrity":"sha512-IyMygqdPyrrsuGq1E0TZpTVbXE0smasC1UKGJT7xoc4SlUOB0UyTu9hy33vWKro35z4JY5m4jr+xfvXdm08EDw==","signatures":[{"sig":"MEQCIHYQP/ul1g5Rp4ceEJxaUGDH4dwSZV4kTGjUb82JZGn3AiBrQ9jhArNJfbXUe4ov2QtyPk3iwr+mbJr0kRi9W6C3lw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/mujoco-react@8.1.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":795447},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.js"}},"./package.json":"./package.json"},"gitHead":"2dc83d9e99ccf3b57ac59796986c2bdf51aa815e","scripts":{"dev":"tsup --watch","build":"tsup","typecheck":"tsc --noEmit"},"_npmUser":{"name":"primlabs","email":"noah.wardlow.0@gmail.com"},"repository":{"url":"git+https://github.com/noah-wardlow/mujoco-react.git","type":"git"},"_npmVersion":"11.10.0","description":"Composable React Three Fiber building blocks for MuJoCo WASM simulations","directories":{},"sideEffects":false,"_nodeVersion":"22.22.0","dependencies":{"mujoco-js":"0.0.7"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.4.0","react":"^19.2.0","three":"^0.181.0","typescript":"~5.8.2","@types/react":"^19.0.0","@types/three":"^0.181.0","semantic-release":"^25.0.3","@react-three/drei":"^10.7.7","@react-three/fiber":"^9.5.0","@semantic-release/git":"^10.0.1","@semantic-release/changelog":"^6.0.3"},"peerDependencies":{"react":">=18","three":">=0.160.0","@react-three/drei":">=9","@react-three/fiber":">=8"},"_npmOperationalInternal":{"tmp":"tmp/mujoco-react_8.1.0_1771787146113_0.6913496101838572","host":"s3://npm-registry-packages-npm-production"}},"8.1.1":{"name":"mujoco-react","version":"8.1.1","keywords":["mujoco","react","three","r3f","react-three-fiber","physics","simulation","robotics","wasm"],"license":"Apache-2.0","_id":"mujoco-react@8.1.1","maintainers":[{"name":"primlabs","email":"noah.wardlow.0@gmail.com"}],"homepage":"https://github.com/noah-wardlow/mujoco-react#readme","bugs":{"url":"https://github.com/noah-wardlow/mujoco-react/issues"},"dist":{"shasum":"273e4227778f6e7c31697b314b205ac35e5a474f","tarball":"https://registry.npmjs.org/mujoco-react/-/mujoco-react-8.1.1.tgz","fileCount":50,"integrity":"sha512-fsyXzHIjsU7ifb6hMZh1wFm+cGznLpoYqfLRKoPAiYdn2cA6jVTtKCDeaYzVnrqkRjfN0/udxEElIJC1XcHeuA==","signatures":[{"sig":"MEUCIEra7tKTVdeuFDsTezfUHiOXPEGd1C0gBG0DyuxKlDdZAiEA+JmEkpiOwaD0osUe4hNRSDZDqOdRXqWVVORrDVvUH84=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/mujoco-react@8.1.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":798271},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.js"}},"./package.json":"./package.json"},"gitHead":"b9a7aa741577b49afd1ef10053ffc7b13f4e2225","scripts":{"dev":"tsup --watch","build":"tsup","typecheck":"tsc --noEmit"},"_npmUser":{"name":"primlabs","email":"noah.wardlow.0@gmail.com"},"repository":{"url":"git+https://github.com/noah-wardlow/mujoco-react.git","type":"git"},"_npmVersion":"11.10.0","description":"Composable React Three Fiber building blocks for MuJoCo WASM simulations","directories":{},"sideEffects":false,"_nodeVersion":"22.22.0","dependencies":{"mujoco-js":"0.0.7"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.4.0","react":"^19.2.0","three":"^0.181.0","typescript":"~5.8.2","@types/react":"^19.0.0","@types/three":"^0.181.0","semantic-release":"^25.0.3","@react-three/drei":"^10.7.7","@react-three/fiber":"^9.5.0","@semantic-release/git":"^10.0.1","@semantic-release/changelog":"^6.0.3"},"peerDependencies":{"react":">=18","three":">=0.160.0","@react-three/drei":">=9","@react-three/fiber":">=8"},"_npmOperationalInternal":{"tmp":"tmp/mujoco-react_8.1.1_1771910739293_0.5010808403703348","host":"s3://npm-registry-packages-npm-production"}},"8.2.0":{"name":"mujoco-react","version":"8.2.0","keywords":["mujoco","react","three","r3f","react-three-fiber","physics","simulation","robotics","wasm"],"license":"Apache-2.0","_id":"mujoco-react@8.2.0","maintainers":[{"name":"primlabs","email":"noah.wardlow.0@gmail.com"}],"homepage":"https://github.com/noah-wardlow/mujoco-react#readme","bugs":{"url":"https://github.com/noah-wardlow/mujoco-react/issues"},"dist":{"shasum":"50f582008f0e9ceaf30754a51db621b48f6ba3e1","tarball":"https://registry.npmjs.org/mujoco-react/-/mujoco-react-8.2.0.tgz","fileCount":50,"integrity":"sha512-ts3dYb4kOn0Xro/vrbR3VLbSQe8CQAkiEkMa9DOpgaS4+0Ppp4k2c8iZavjirCbeC6eWhE0qGtsU4pQBYCLlRw==","signatures":[{"sig":"MEQCIF5gjTi3HiGC9UfwKxifsagPBWzp64CueHfrq80HOt6/AiAdO5zhPw7Y1ad58A6x8Tyo2Qg6eBPfkh59IwBa8pkzLg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/mujoco-react@8.2.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":800354},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.js"}},"./package.json":"./package.json"},"gitHead":"8effdcd251116b5007a65a25df68a50537221e5f","scripts":{"dev":"tsup --watch","build":"tsup","typecheck":"tsc --noEmit"},"_npmUser":{"name":"primlabs","email":"noah.wardlow.0@gmail.com"},"repository":{"url":"git+https://github.com/noah-wardlow/mujoco-react.git","type":"git"},"_npmVersion":"11.10.0","description":"Composable React Three Fiber building blocks for MuJoCo WASM simulations","directories":{},"sideEffects":false,"_nodeVersion":"22.22.0","dependencies":{"mujoco-js":"0.0.7"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.4.0","react":"^19.2.0","three":"^0.181.0","typescript":"~5.8.2","@types/react":"^19.0.0","@types/three":"^0.181.0","semantic-release":"^25.0.3","@react-three/drei":"^10.7.7","@react-three/fiber":"^9.5.0","@semantic-release/git":"^10.0.1","@semantic-release/changelog":"^6.0.3"},"peerDependencies":{"react":">=18","three":">=0.160.0","@react-three/drei":">=9","@react-three/fiber":">=8"},"_npmOperationalInternal":{"tmp":"tmp/mujoco-react_8.2.0_1771912634891_0.6146304045513928","host":"s3://npm-registry-packages-npm-production"}},"8.2.1":{"name":"mujoco-react","version":"8.2.1","keywords":["mujoco","react","three","r3f","react-three-fiber","physics","simulation","robotics","wasm"],"license":"Apache-2.0","_id":"mujoco-react@8.2.1","maintainers":[{"name":"primlabs","email":"noah.wardlow.0@gmail.com"}],"homepage":"https://github.com/noah-wardlow/mujoco-react#readme","bugs":{"url":"https://github.com/noah-wardlow/mujoco-react/issues"},"dist":{"shasum":"ac8b80715d3b021858f375773de109e09eb4aa92","tarball":"https://registry.npmjs.org/mujoco-react/-/mujoco-react-8.2.1.tgz","fileCount":50,"integrity":"sha512-wzfYAbw5OrEYKdIrq/EiGnjM835EtPbDxkOKKEHn7NCS2/mT9QJuWhJRl29HIenhXoY6GbD8a7BJG0dC5i74+A==","signatures":[{"sig":"MEQCIAW8ZYlWmF9nc+SBVKoEKEKTOUnu17PKhX8Ngp7fZBfxAiBMvVO1ya64jAK8A9MUDDomA9UVf1IFCDXU5cRv+w6yiA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/mujoco-react@8.2.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":799721},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.js"}},"./package.json":"./package.json"},"gitHead":"dfdd719116d61388b32ea52ef26b96409440c799","scripts":{"dev":"tsup --watch","build":"tsup","typecheck":"tsc --noEmit"},"_npmUser":{"name":"primlabs","email":"noah.wardlow.0@gmail.com"},"repository":{"url":"git+https://github.com/noah-wardlow/mujoco-react.git","type":"git"},"_npmVersion":"11.10.0","description":"Composable React Three Fiber building blocks for MuJoCo WASM simulations","directories":{},"sideEffects":false,"_nodeVersion":"22.22.0","dependencies":{"mujoco-js":"0.0.7"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.4.0","react":"^19.2.0","three":"^0.181.0","typescript":"~5.8.2","@types/react":"^19.0.0","@types/three":"^0.181.0","semantic-release":"^25.0.3","@react-three/drei":"^10.7.7","@react-three/fiber":"^9.5.0","@semantic-release/git":"^10.0.1","@semantic-release/changelog":"^6.0.3"},"peerDependencies":{"react":">=18","three":">=0.160.0","@react-three/drei":">=9","@react-three/fiber":">=8"},"_npmOperationalInternal":{"tmp":"tmp/mujoco-react_8.2.1_1771913600715_0.584749769205759","host":"s3://npm-registry-packages-npm-production"}},"8.3.3":{"name":"mujoco-react","version":"8.3.3","keywords":["mujoco","react","three","r3f","react-three-fiber","physics","simulation","robotics","wasm"],"license":"Apache-2.0","_id":"mujoco-react@8.3.3","maintainers":[{"name":"primlabs","email":"noah.wardlow.0@gmail.com"}],"homepage":"https://github.com/noah-wardlow/mujoco-react#readme","bugs":{"url":"https://github.com/noah-wardlow/mujoco-react/issues"},"dist":{"shasum":"451e43c85ebbaab0508ebcb08d9f9cd0c9d36eaa","tarball":"https://registry.npmjs.org/mujoco-react/-/mujoco-react-8.3.3.tgz","fileCount":51,"integrity":"sha512-1sB+nrDpV3B9jOijZRlulTfi7T0cQL7yhBmZ3ng+S9KtxxUoTvR1QyXOwTfNq+HDAz3WymS9I/EElpo+HeJH3w==","signatures":[{"sig":"MEQCID85bGnwyyASQmBW87gwfT0knlWvLTxA+v8f7sJcWdPyAiAB5cQBJevViMiMaBmTXXdLJLQ5zKw39lc6gep6kVTf9Q==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/mujoco-react@8.3.3","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":806418},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.js"}},"./package.json":"./package.json"},"gitHead":"7ec7a0712200f5d635ad896d1325b492601cc302","scripts":{"dev":"tsup --watch","build":"tsup","typecheck":"tsc --noEmit"},"_npmUser":{"name":"primlabs","email":"noah.wardlow.0@gmail.com"},"repository":{"url":"git+https://github.com/noah-wardlow/mujoco-react.git","type":"git"},"_npmVersion":"11.10.0","description":"Composable React Three Fiber building blocks for MuJoCo WASM simulations","directories":{},"sideEffects":false,"_nodeVersion":"22.22.3","dependencies":{"@mujoco/mujoco":"^3.9.0"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.4.0","react":"^19.2.0","three":"^0.181.0","typescript":"~5.8.2","@types/react":"^19.0.0","@types/three":"^0.181.0","semantic-release":"^25.0.3","@react-three/drei":"^10.7.7","@react-three/fiber":"^9.5.0","@semantic-release/git":"^10.0.1","@semantic-release/changelog":"^6.0.3"},"peerDependencies":{"react":">=18","three":">=0.160.0","@react-three/drei":">=9","@react-three/fiber":">=8"},"_npmOperationalInternal":{"tmp":"tmp/mujoco-react_8.3.3_1780632726210_0.38231400888264533","host":"s3://npm-registry-packages-npm-production"}},"8.4.0":{"name":"mujoco-react","version":"8.4.0","keywords":["mujoco","react","three","r3f","react-three-fiber","physics","simulation","robotics","wasm"],"license":"Apache-2.0","_id":"mujoco-react@8.4.0","maintainers":[{"name":"primlabs","email":"noah.wardlow.0@gmail.com"}],"homepage":"https://github.com/noah-wardlow/mujoco-react#readme","bugs":{"url":"https://github.com/noah-wardlow/mujoco-react/issues"},"dist":{"shasum":"f202bf2d571eea5700986503a7b3606b3ad79fd4","tarball":"https://registry.npmjs.org/mujoco-react/-/mujoco-react-8.4.0.tgz","fileCount":51,"integrity":"sha512-OSNzd8BjL0UP37/YX9Be0vsuF1Bqnb84IE5micUwG87qUAHTeEZQKeugCpbqizTFaaNX3EdSDOK0+3Rb9ZA2Dg==","signatures":[{"sig":"MEQCICQv5B/YPeMXtwq2AxPFbisZAx3TFq0alqWLsRP7accFAiA/bE3T/hNvGW2RepgExPliDcW8GDpBrvMqvjJVF7Hkcw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/mujoco-react@8.4.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":877826},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.js"}},"./package.json":"./package.json"},"gitHead":"11589d99bfd47af6be997efe3b5c0381eb225079","scripts":{"dev":"tsup --watch","build":"tsup","typecheck":"tsc --noEmit"},"_npmUser":{"name":"primlabs","email":"noah.wardlow.0@gmail.com"},"repository":{"url":"git+https://github.com/noah-wardlow/mujoco-react.git","type":"git"},"_npmVersion":"11.10.0","description":"Composable React Three Fiber building blocks for MuJoCo WASM simulations","directories":{},"sideEffects":false,"_nodeVersion":"22.22.3","dependencies":{"@mujoco/mujoco":"^3.9.0"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.4.0","react":"^19.2.0","three":"^0.181.0","typescript":"~5.8.2","@types/react":"^19.0.0","@types/three":"^0.181.0","semantic-release":"^25.0.3","@react-three/drei":"^10.7.7","@react-three/fiber":"^9.5.0","@semantic-release/git":"^10.0.1","@semantic-release/changelog":"^6.0.3"},"peerDependencies":{"react":">=18","three":">=0.160.0","@react-three/drei":">=9","@react-three/fiber":">=8"},"_npmOperationalInternal":{"tmp":"tmp/mujoco-react_8.4.0_1780635593733_0.1513069882403475","host":"s3://npm-registry-packages-npm-production"}},"8.4.1":{"name":"mujoco-react","version":"8.4.1","keywords":["mujoco","react","three","r3f","react-three-fiber","physics","simulation","robotics","wasm"],"license":"Apache-2.0","_id":"mujoco-react@8.4.1","maintainers":[{"name":"primlabs","email":"noah.wardlow.0@gmail.com"}],"homepage":"https://github.com/noah-wardlow/mujoco-react#readme","bugs":{"url":"https://github.com/noah-wardlow/mujoco-react/issues"},"dist":{"shasum":"fe22b80c5d3d862e3b95022c9d7f4517bdbc6d2c","tarball":"https://registry.npmjs.org/mujoco-react/-/mujoco-react-8.4.1.tgz","fileCount":51,"integrity":"sha512-zshgw5uDOWe362fOEDN1b8Fe27SOxIN5wtlC1gliFLcdHdTylKMQByFOrLg7gxQHOJPFCfmdb9Lbao37sG8AqA==","signatures":[{"sig":"MEQCIC+mpuBBYClko8+1m14IZkleUUt2b0Nx7r0zE+wiNQMTAiA27wSn+8qUV3SoQnYL0Q2CAUj+zgIofcZdDrFvlJ+S0g==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/mujoco-react@8.4.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":876680},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.js"}},"./package.json":"./package.json"},"gitHead":"be230b38864b6d3c1f4dbe06dce2fb618e6e3e57","scripts":{"dev":"tsup --watch","build":"tsup","typecheck":"tsc --noEmit"},"_npmUser":{"name":"primlabs","email":"noah.wardlow.0@gmail.com"},"repository":{"url":"git+https://github.com/noah-wardlow/mujoco-react.git","type":"git"},"_npmVersion":"11.10.0","description":"Composable React Three Fiber building blocks for MuJoCo WASM simulations","directories":{},"sideEffects":false,"_nodeVersion":"22.22.3","dependencies":{"@mujoco/mujoco":"^3.9.0"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.4.0","react":"^19.2.0","three":"^0.181.0","typescript":"~5.8.2","@types/react":"^19.0.0","@types/three":"^0.181.0","semantic-release":"^25.0.3","@react-three/drei":"^10.7.7","@react-three/fiber":"^9.5.0","@semantic-release/git":"^10.0.1","@semantic-release/changelog":"^6.0.3"},"peerDependencies":{"react":">=18","three":">=0.160.0","@react-three/drei":">=9","@react-three/fiber":">=8"},"_npmOperationalInternal":{"tmp":"tmp/mujoco-react_8.4.1_1780636439881_0.6878147384932363","host":"s3://npm-registry-packages-npm-production"}},"8.4.2":{"name":"mujoco-react","version":"8.4.2","keywords":["mujoco","react","three","r3f","react-three-fiber","physics","simulation","robotics","wasm"],"license":"Apache-2.0","_id":"mujoco-react@8.4.2","maintainers":[{"name":"primlabs","email":"noah.wardlow.0@gmail.com"}],"homepage":"https://github.com/noah-wardlow/mujoco-react#readme","bugs":{"url":"https://github.com/noah-wardlow/mujoco-react/issues"},"dist":{"shasum":"ec2ff16d5aa78cf9977989afe8906670ddc65b17","tarball":"https://registry.npmjs.org/mujoco-react/-/mujoco-react-8.4.2.tgz","fileCount":51,"integrity":"sha512-TqnuIHVUQDa4IQ4U7yDpVzNHg2FWYySiRyK5yMaLD8fQnOS99UpDBI6Q4IiarqEXCQqP1ak3vQ1PyeaJbCj+uw==","signatures":[{"sig":"MEYCIQDdLq1CGa8C2EUuU1Zwjs4gPvsvUqZH0toa46Nc4TPsnQIhAMHl57q/KaemVhaYlF8bdIEszB3tWEUqNH/eWAkHps7d","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/mujoco-react@8.4.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":876584},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.js"}},"./package.json":"./package.json"},"gitHead":"c41169d868eb5357cd47a49c6d09eeef26958c9a","scripts":{"dev":"tsup --watch","build":"tsup","typecheck":"tsc --noEmit"},"_npmUser":{"name":"primlabs","email":"noah.wardlow.0@gmail.com"},"repository":{"url":"git+https://github.com/noah-wardlow/mujoco-react.git","type":"git"},"_npmVersion":"11.10.0","description":"Composable React Three Fiber building blocks for MuJoCo WASM simulations","directories":{},"sideEffects":false,"_nodeVersion":"22.22.3","dependencies":{"@mujoco/mujoco":"^3.9.0"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.4.0","react":"^19.2.0","three":"^0.181.0","typescript":"~5.8.2","@types/react":"^19.0.0","@types/three":"^0.181.0","semantic-release":"^25.0.3","@react-three/drei":"^10.7.7","@react-three/fiber":"^9.5.0","@semantic-release/git":"^10.0.1","@semantic-release/changelog":"^6.0.3"},"peerDependencies":{"react":">=18","three":">=0.160.0","@react-three/drei":">=9","@react-three/fiber":">=8"},"_npmOperationalInternal":{"tmp":"tmp/mujoco-react_8.4.2_1780636497618_0.28629681135093055","host":"s3://npm-registry-packages-npm-production"}},"8.5.0":{"name":"mujoco-react","version":"8.5.0","keywords":["mujoco","react","three","r3f","react-three-fiber","physics","simulation","robotics","wasm"],"license":"Apache-2.0","_id":"mujoco-react@8.5.0","maintainers":[{"name":"primlabs","email":"noah.wardlow.0@gmail.com"}],"homepage":"https://github.com/noah-wardlow/mujoco-react#readme","bugs":{"url":"https://github.com/noah-wardlow/mujoco-react/issues"},"dist":{"shasum":"1bd6249886224db192bcfcc6a5d99207a611561c","tarball":"https://registry.npmjs.org/mujoco-react/-/mujoco-react-8.5.0.tgz","fileCount":53,"integrity":"sha512-HNlQg17GR6ZigrOmheil3o2q5bc040Eiky2ahMrOt6Bm4OEgr1WjiujcMtc/rqmX1IhcQeAmMesvAwms2p6CzQ==","signatures":[{"sig":"MEUCIQCUlf17Bo8ufzLSykdPcdE8AMuTjncHJr5j/DtKOh1o/wIgGmGev3Dt72jBMio/cHpx8oOSQI7XzkMjQgmaPYHA3SI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/mujoco-react@8.5.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":901827},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.js"}},"./package.json":"./package.json"},"gitHead":"755af8a91cb7152a43fa906a71a2f14996272113","scripts":{"dev":"tsup --watch","build":"tsup","typecheck":"tsc --noEmit"},"_npmUser":{"name":"primlabs","email":"noah.wardlow.0@gmail.com"},"repository":{"url":"git+https://github.com/noah-wardlow/mujoco-react.git","type":"git"},"_npmVersion":"11.10.0","description":"Composable React Three Fiber building blocks for MuJoCo WASM simulations","directories":{},"sideEffects":false,"_nodeVersion":"22.22.3","dependencies":{"@mujoco/mujoco":"^3.9.0"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.4.0","react":"^19.2.0","three":"^0.181.0","typescript":"~5.8.2","@types/react":"^19.0.0","@types/three":"^0.181.0","semantic-release":"^25.0.3","@react-three/drei":"^10.7.7","@react-three/fiber":"^9.5.0","@semantic-release/git":"^10.0.1","@semantic-release/changelog":"^6.0.3"},"peerDependencies":{"react":">=18","three":">=0.160.0","@react-three/drei":">=9","@react-three/fiber":">=8"},"_npmOperationalInternal":{"tmp":"tmp/mujoco-react_8.5.0_1780637392337_0.6820739428399152","host":"s3://npm-registry-packages-npm-production"}},"8.6.0":{"name":"mujoco-react","version":"8.6.0","keywords":["mujoco","react","three","r3f","react-three-fiber","physics","simulation","robotics","wasm"],"license":"Apache-2.0","_id":"mujoco-react@8.6.0","maintainers":[{"name":"primlabs","email":"noah.wardlow.0@gmail.com"}],"homepage":"https://github.com/noah-wardlow/mujoco-react#readme","bugs":{"url":"https://github.com/noah-wardlow/mujoco-react/issues"},"bin":{"mujoco-react":"bin/mujoco-react.mjs","mujoco-react-codegen":"bin/mujoco-react-codegen.mjs"},"dist":{"shasum":"3df760297bb339bd46451489895f36c9bb4945d3","tarball":"https://registry.npmjs.org/mujoco-react/-/mujoco-react-8.6.0.tgz","fileCount":60,"integrity":"sha512-3vKtDA889gfwNfTf+WmUAtyL57Chj8tuojdxYaREE9Nyhmr7A4cSDPxn3hOlfW7jQMDPzsM6WYV9yOqDWi+gFw==","signatures":[{"sig":"MEYCIQCQkJSg1fRFkH4E1wCSdWLUQmQGwtCeT2LVTEvR6dtIwAIhAIhSzasQEJEmilcN8pqM+JZ0IzCXzbkzZorlcqw009QU","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/mujoco-react@8.6.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1002638},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.js"}},"./vite":{"import":{"types":"./dist/vite.d.ts","default":"./dist/vite.js"}},"./package.json":"./package.json"},"gitHead":"75fcabd3c2a7eabd125527c41f11bd8f75c780dd","scripts":{"dev":"tsup --watch","build":"tsup","typecheck":"tsc --noEmit"},"_npmUser":{"name":"primlabs","email":"noah.wardlow.0@gmail.com"},"repository":{"url":"git+https://github.com/noah-wardlow/mujoco-react.git","type":"git"},"_npmVersion":"11.10.0","description":"Composable React Three Fiber building blocks for MuJoCo WASM simulations","directories":{},"sideEffects":false,"_nodeVersion":"22.22.3","dependencies":{"@mujoco/mujoco":"^3.9.0"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.4.0","react":"^19.2.0","three":"^0.181.0","typescript":"~5.8.2","@types/node":"^25.9.1","@types/react":"^19.0.0","@types/three":"^0.181.0","semantic-release":"^25.0.3","@react-three/drei":"^10.7.7","@react-three/fiber":"^9.5.0","@semantic-release/git":"^10.0.1","@semantic-release/changelog":"^6.0.3"},"peerDependencies":{"react":">=18","three":">=0.160.0","@react-three/drei":">=9","@react-three/fiber":">=8"},"_npmOperationalInternal":{"tmp":"tmp/mujoco-react_8.6.0_1780639305012_0.7858569987312882","host":"s3://npm-registry-packages-npm-production"}},"8.7.0":{"name":"mujoco-react","version":"8.7.0","keywords":["mujoco","react","three","r3f","react-three-fiber","physics","simulation","robotics","wasm"],"license":"Apache-2.0","_id":"mujoco-react@8.7.0","maintainers":[{"name":"primlabs","email":"noah.wardlow.0@gmail.com"}],"homepage":"https://github.com/noah-wardlow/mujoco-react#readme","bugs":{"url":"https://github.com/noah-wardlow/mujoco-react/issues"},"bin":{"mujoco-react":"bin/mujoco-react.mjs","mujoco-react-codegen":"bin/mujoco-react-codegen.mjs"},"dist":{"shasum":"4f9e1c318dce6fe4887be0a162d816848df39176","tarball":"https://registry.npmjs.org/mujoco-react/-/mujoco-react-8.7.0.tgz","fileCount":60,"integrity":"sha512-WgqZc5y+SY5cUGGsUTf1iLOmDcVUPKpaEvFnSwOk87F3Lw/bPm+nis2RvRyls7WSAocHBkTfUVCiPlPR81Ms/Q==","signatures":[{"sig":"MEQCICqXf92ykaiMj63KCut5iruwbhCFu7u1eLYw+g5efYHiAiA9a4vb3fBg1kwXJ5Sm6GUJ8VWHSnR2wNqlaqTOoOybsg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/mujoco-react@8.7.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1016958},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.js"}},"./vite":{"import":{"types":"./dist/vite.d.ts","default":"./dist/vite.js"}},"./package.json":"./package.json"},"gitHead":"3ad4844a916f97d83b8ecbbdb1d3754600a27a08","scripts":{"dev":"tsup --watch","build":"tsup","typecheck":"tsc --noEmit"},"_npmUser":{"name":"primlabs","email":"noah.wardlow.0@gmail.com"},"repository":{"url":"git+https://github.com/noah-wardlow/mujoco-react.git","type":"git"},"_npmVersion":"11.10.0","description":"Composable React Three Fiber building blocks for MuJoCo WASM simulations","directories":{},"sideEffects":false,"_nodeVersion":"22.22.3","dependencies":{"@mujoco/mujoco":"^3.9.0"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.4.0","react":"^19.2.0","three":"^0.181.0","typescript":"~5.8.2","@types/node":"^25.9.1","@types/react":"^19.0.0","@types/three":"^0.181.0","semantic-release":"^25.0.3","@react-three/drei":"^10.7.7","@react-three/fiber":"^9.5.0","@semantic-release/git":"^10.0.1","@semantic-release/changelog":"^6.0.3"},"peerDependencies":{"react":">=18","three":">=0.160.0","@react-three/drei":">=9","@react-three/fiber":">=8"},"_npmOperationalInternal":{"tmp":"tmp/mujoco-react_8.7.0_1780641171616_0.07886649311585803","host":"s3://npm-registry-packages-npm-production"}},"8.8.0":{"name":"mujoco-react","version":"8.8.0","keywords":["mujoco","react","three","r3f","react-three-fiber","physics","simulation","robotics","wasm"],"license":"Apache-2.0","_id":"mujoco-react@8.8.0","maintainers":[{"name":"primlabs","email":"noah.wardlow.0@gmail.com"}],"homepage":"https://github.com/noah-wardlow/mujoco-react#readme","bugs":{"url":"https://github.com/noah-wardlow/mujoco-react/issues"},"bin":{"mujoco-react":"bin/mujoco-react.mjs","mujoco-react-codegen":"bin/mujoco-react-codegen.mjs"},"dist":{"shasum":"fb43568b7ed84a7780c14afd5eb70945de05f001","tarball":"https://registry.npmjs.org/mujoco-react/-/mujoco-react-8.8.0.tgz","fileCount":60,"integrity":"sha512-RqKiBBlY/shdpzoM9V4PoccahZsK35WPdBaAdZ7MB/UE/BHAiwVY2EXkvqiA9o9tZGD1YgUUYpvAM/eNiXWU2w==","signatures":[{"sig":"MEUCIFYo1XfrWTjIARgS4WaQSQuJOB9uSI/4Z22lTxTgrFFRAiEAk1s7TWRVqwgXwbjMG6WxZXwuekfPrfLm1dP8VbrsUks=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/mujoco-react@8.8.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1021477},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.js"}},"./vite":{"import":{"types":"./dist/vite.d.ts","default":"./dist/vite.js"}},"./package.json":"./package.json"},"gitHead":"2d92617efedf93367e27c355a647133d32b78106","scripts":{"dev":"tsup --watch","build":"tsup","typecheck":"tsc --noEmit"},"_npmUser":{"name":"primlabs","email":"noah.wardlow.0@gmail.com"},"repository":{"url":"git+https://github.com/noah-wardlow/mujoco-react.git","type":"git"},"_npmVersion":"11.10.0","description":"Composable React Three Fiber building blocks for MuJoCo WASM simulations","directories":{},"sideEffects":false,"_nodeVersion":"22.22.3","dependencies":{"@mujoco/mujoco":"^3.9.0"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.4.0","react":"^19.2.0","three":"^0.181.0","typescript":"~5.8.2","@types/node":"^25.9.1","@types/react":"^19.0.0","@types/three":"^0.181.0","semantic-release":"^25.0.3","@react-three/drei":"^10.7.7","@react-three/fiber":"^9.5.0","@semantic-release/git":"^10.0.1","@semantic-release/changelog":"^6.0.3"},"peerDependencies":{"react":">=18","three":">=0.160.0","@react-three/drei":">=9","@react-three/fiber":">=8"},"_npmOperationalInternal":{"tmp":"tmp/mujoco-react_8.8.0_1780727114643_0.7187887170210989","host":"s3://npm-registry-packages-npm-production"}},"8.9.0":{"name":"mujoco-react","version":"8.9.0","keywords":["mujoco","react","three","r3f","react-three-fiber","physics","simulation","robotics","wasm"],"license":"Apache-2.0","_id":"mujoco-react@8.9.0","maintainers":[{"name":"primlabs","email":"noah.wardlow.0@gmail.com"}],"homepage":"https://github.com/noah-wardlow/mujoco-react#readme","bugs":{"url":"https://github.com/noah-wardlow/mujoco-react/issues"},"bin":{"mujoco-react":"bin/mujoco-react.mjs","mujoco-react-codegen":"bin/mujoco-react-codegen.mjs"},"dist":{"shasum":"46250665c759e415737f492422a3f0401777c4d5","tarball":"https://registry.npmjs.org/mujoco-react/-/mujoco-react-8.9.0.tgz","fileCount":60,"integrity":"sha512-xRMklUvs5JX/ezK2F9D1l9XOLfqK0xnfjrEx0zuWgxYklCoGNF2c02oFn9XnRo/6qFU1+V7yitEiJD/aXRL7LA==","signatures":[{"sig":"MEUCICBhAMop2EaKJP07lWD7mBA2Tq4tzwDkVsAYc052v+2mAiEAxkbQZPvRiRdTIQWQT0QS1SOJw7+q8gKzrwLHVoCfo/4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/mujoco-react@8.9.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1048293},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.js"}},"./vite":{"import":{"types":"./dist/vite.d.ts","default":"./dist/vite.js"}},"./package.json":"./package.json"},"gitHead":"52edbcbe57603269316c9dc68b5f6c13c91dd91e","scripts":{"dev":"tsup --watch","build":"tsup","typecheck":"tsc --noEmit"},"_npmUser":{"name":"primlabs","email":"noah.wardlow.0@gmail.com"},"repository":{"url":"git+https://github.com/noah-wardlow/mujoco-react.git","type":"git"},"_npmVersion":"11.10.0","description":"Composable React Three Fiber building blocks for MuJoCo WASM simulations","directories":{},"sideEffects":false,"_nodeVersion":"22.22.3","dependencies":{"@mujoco/mujoco":"^3.9.0"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.4.0","react":"^19.2.0","three":"^0.181.0","typescript":"~5.8.2","@types/node":"^25.9.1","@types/react":"^19.0.0","@types/three":"^0.181.0","semantic-release":"^25.0.3","@react-three/drei":"^10.7.7","@react-three/fiber":"^9.5.0","@semantic-release/git":"^10.0.1","@semantic-release/changelog":"^6.0.3"},"peerDependencies":{"react":">=18","three":">=0.160.0","@react-three/drei":">=9","@react-three/fiber":">=8"},"_npmOperationalInternal":{"tmp":"tmp/mujoco-react_8.9.0_1780728387031_0.6029426803614748","host":"s3://npm-registry-packages-npm-production"}},"8.9.1":{"name":"mujoco-react","version":"8.9.1","keywords":["mujoco","react","three","r3f","react-three-fiber","physics","simulation","robotics","wasm"],"license":"Apache-2.0","_id":"mujoco-react@8.9.1","maintainers":[{"name":"primlabs","email":"noah.wardlow.0@gmail.com"}],"homepage":"https://github.com/noah-wardlow/mujoco-react#readme","bugs":{"url":"https://github.com/noah-wardlow/mujoco-react/issues"},"bin":{"mujoco-react":"bin/mujoco-react.mjs","mujoco-react-codegen":"bin/mujoco-react-codegen.mjs"},"dist":{"shasum":"aa66982ab9a505e31b717df3fabd8a000066eba8","tarball":"https://registry.npmjs.org/mujoco-react/-/mujoco-react-8.9.1.tgz","fileCount":60,"integrity":"sha512-TUZnpmUv6oHh781za2vj6axpOBUQtJPwN8+dUulgByfnmXz6ScgE8N0dstdLCh4t0gDpTrDwZc9laWAURyNIJA==","signatures":[{"sig":"MEQCIC0uzbjv/UhwirJNfcfSlg931PUtFIt44rPCsZMm2NttAiAeeOOaOwRFIhJNL2Inohbs9rfTbx9PgiQQoTdOAT/81A==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/mujoco-react@8.9.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1048558},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.js"}},"./vite":{"import":{"types":"./dist/vite.d.ts","default":"./dist/vite.js"}},"./package.json":"./package.json"},"gitHead":"45a04dba34973353b2373750beeffa63f5c79a66","scripts":{"dev":"tsup --watch","build":"tsup","typecheck":"tsc --noEmit"},"_npmUser":{"name":"primlabs","email":"noah.wardlow.0@gmail.com"},"repository":{"url":"git+https://github.com/noah-wardlow/mujoco-react.git","type":"git"},"_npmVersion":"11.10.0","description":"Composable React Three Fiber building blocks for MuJoCo WASM simulations","directories":{},"sideEffects":false,"_nodeVersion":"22.22.3","dependencies":{"@mujoco/mujoco":"^3.9.0"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.4.0","react":"^19.2.0","three":"^0.181.0","typescript":"~5.8.2","@types/node":"^25.9.1","@types/react":"^19.0.0","@types/three":"^0.181.0","semantic-release":"^25.0.3","@react-three/drei":"^10.7.7","@react-three/fiber":"^9.5.0","@semantic-release/git":"^10.0.1","@semantic-release/changelog":"^6.0.3"},"peerDependencies":{"react":">=18","three":">=0.160.0","@react-three/drei":">=9","@react-three/fiber":">=8"},"_npmOperationalInternal":{"tmp":"tmp/mujoco-react_8.9.1_1780728998201_0.12077735839466697","host":"s3://npm-registry-packages-npm-production"}},"8.9.2":{"name":"mujoco-react","version":"8.9.2","keywords":["mujoco","react","three","r3f","react-three-fiber","physics","simulation","robotics","wasm"],"license":"Apache-2.0","_id":"mujoco-react@8.9.2","maintainers":[{"name":"primlabs","email":"noah.wardlow.0@gmail.com"}],"homepage":"https://github.com/noah-wardlow/mujoco-react#readme","bugs":{"url":"https://github.com/noah-wardlow/mujoco-react/issues"},"bin":{"mujoco-react":"bin/mujoco-react.mjs","mujoco-react-codegen":"bin/mujoco-react-codegen.mjs"},"dist":{"shasum":"004885d91894325baa9d7ad888ca8c757120de80","tarball":"https://registry.npmjs.org/mujoco-react/-/mujoco-react-8.9.2.tgz","fileCount":60,"integrity":"sha512-Au0aeJxxIKEFOxakzMfdGpsK2nfCyV6FSMzRz6e42qmAcQZprXGXRaEuq+7/sRtkZEx8Iat5ibAbDr7tS+flVg==","signatures":[{"sig":"MEYCIQDegLWhLBadrL8XC9aQHEmr3uZ7Rarrvn8CkcThrWzNygIhAJi4wJurg/oQZVq04ly/rjeDBj2stGex3NtOBM3xef6W","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/mujoco-react@8.9.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1047833},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.js"}},"./vite":{"import":{"types":"./dist/vite.d.ts","default":"./dist/vite.js"}},"./package.json":"./package.json"},"gitHead":"06b24b8ad14cd52649004f87abcc89d9ccc8b931","scripts":{"dev":"tsup --watch","build":"tsup","typecheck":"tsc --noEmit"},"_npmUser":{"name":"primlabs","email":"noah.wardlow.0@gmail.com"},"repository":{"url":"git+https://github.com/noah-wardlow/mujoco-react.git","type":"git"},"_npmVersion":"11.10.0","description":"Composable React Three Fiber building blocks for MuJoCo WASM simulations","directories":{},"sideEffects":false,"_nodeVersion":"22.22.3","dependencies":{"@mujoco/mujoco":"^3.9.0"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.4.0","react":"^19.2.0","three":"^0.181.0","typescript":"~5.8.2","@types/node":"^25.9.1","@types/react":"^19.0.0","@types/three":"^0.181.0","semantic-release":"^25.0.3","@react-three/drei":"^10.7.7","@react-three/fiber":"^9.5.0","@semantic-release/git":"^10.0.1","@semantic-release/changelog":"^6.0.3"},"peerDependencies":{"react":">=18","three":">=0.160.0","@react-three/drei":">=9","@react-three/fiber":">=8"},"_npmOperationalInternal":{"tmp":"tmp/mujoco-react_8.9.2_1780772388620_0.4379695008455833","host":"s3://npm-registry-packages-npm-production"}},"8.10.0":{"name":"mujoco-react","version":"8.10.0","keywords":["mujoco","react","three","r3f","react-three-fiber","physics","simulation","robotics","wasm"],"license":"Apache-2.0","_id":"mujoco-react@8.10.0","maintainers":[{"name":"primlabs","email":"noah.wardlow.0@gmail.com"}],"homepage":"https://github.com/noah-wardlow/mujoco-react#readme","bugs":{"url":"https://github.com/noah-wardlow/mujoco-react/issues"},"bin":{"mujoco-react":"bin/mujoco-react.mjs","mujoco-react-codegen":"bin/mujoco-react-codegen.mjs"},"dist":{"shasum":"005c8d4a545499a91c72c2e0034cb5e4d3e5c780","tarball":"https://registry.npmjs.org/mujoco-react/-/mujoco-react-8.10.0.tgz","fileCount":68,"integrity":"sha512-ZbqKgt/zIWgYIn77NQgby5wDondNyKYid/9Y/sZXrbdwRsaMWC/6bPQVpOBbDSDoRvDjojkXvJDswUikIFOAxQ==","signatures":[{"sig":"MEUCIQD3qgIF41dxESewlggDcgHm7aKj+X64s0Hsqg7ilYA+qwIgSzExeaeZQuHwHji29r1Z7FzJEPlrMQtmpho2hzzA3dw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/mujoco-react@8.10.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1113116},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.js"}},"./vite":{"import":{"types":"./dist/vite.d.ts","default":"./dist/vite.js"}},"./spark":{"import":{"types":"./dist/spark.d.ts","default":"./dist/spark.js"}},"./package.json":"./package.json"},"gitHead":"c713fca05a327a495602e15f7ef8909fdd19d244","scripts":{"dev":"tsup --watch","build":"tsup","typecheck":"tsc --noEmit"},"_npmUser":{"name":"primlabs","email":"noah.wardlow.0@gmail.com"},"repository":{"url":"git+https://github.com/noah-wardlow/mujoco-react.git","type":"git"},"_npmVersion":"11.10.0","description":"Composable React Three Fiber building blocks for MuJoCo WASM simulations","directories":{},"sideEffects":false,"_nodeVersion":"22.22.3","dependencies":{"@mujoco/mujoco":"^3.9.0"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.4.0","react":"^19.2.0","three":"^0.181.0","typescript":"~5.8.2","@types/node":"^25.9.1","@types/react":"^19.0.0","@types/three":"^0.181.0","semantic-release":"^25.0.3","@react-three/drei":"^10.7.7","@sparkjsdev/spark":"^2.1.0","@react-three/fiber":"^9.5.0","@semantic-release/git":"^10.0.1","@semantic-release/changelog":"^6.0.3"},"peerDependencies":{"react":">=18","three":">=0.180.0","@react-three/drei":">=9","@sparkjsdev/spark":">=2.1.0","@react-three/fiber":">=8"},"peerDependenciesMeta":{"@sparkjsdev/spark":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/mujoco-react_8.10.0_1781412834847_0.20431474001835181","host":"s3://npm-registry-packages-npm-production"}},"8.11.0":{"name":"mujoco-react","version":"8.11.0","keywords":["mujoco","react","three","r3f","react-three-fiber","physics","simulation","robotics","wasm"],"license":"Apache-2.0","_id":"mujoco-react@8.11.0","maintainers":[{"name":"primlabs","email":"noah.wardlow.0@gmail.com"}],"homepage":"https://github.com/noah-wardlow/mujoco-react#readme","bugs":{"url":"https://github.com/noah-wardlow/mujoco-react/issues"},"bin":{"mujoco-react":"bin/mujoco-react.mjs","mujoco-react-codegen":"bin/mujoco-react-codegen.mjs"},"dist":{"shasum":"119921ae2e28f0e595f85df5e774bdb972ce083b","tarball":"https://registry.npmjs.org/mujoco-react/-/mujoco-react-8.11.0.tgz","fileCount":69,"integrity":"sha512-m2clTga3olo0AFg+eVhpc8ksRXpPDM/IXKOaJ7/rRTe1/3pLaDu9YXYFvzV/gx6Sm4o0zeFAIA9P46ma8bPwxw==","signatures":[{"sig":"MEQCIDXYNBV4mqx9viE9dQsVNoauMLedF01hMZHeFD64cGbZAiA9s54pi2TOv3yhIEXDzz177Rpbtlz5sDP6R9VtyKw8mQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/mujoco-react@8.11.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1213150},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.js"}},"./vite":{"import":{"types":"./dist/vite.d.ts","default":"./dist/vite.js"}},"./spark":{"import":{"types":"./dist/spark.d.ts","default":"./dist/spark.js"}},"./package.json":"./package.json"},"gitHead":"c982311b7e93d150bd6ca14c0565c96c031102c8","scripts":{"dev":"tsup --watch","build":"tsup","typecheck":"tsc --noEmit"},"_npmUser":{"name":"primlabs","email":"noah.wardlow.0@gmail.com"},"repository":{"url":"git+https://github.com/noah-wardlow/mujoco-react.git","type":"git"},"_npmVersion":"11.10.0","description":"Composable React Three Fiber building blocks for MuJoCo WASM simulations","directories":{},"sideEffects":false,"_nodeVersion":"22.22.3","dependencies":{"@mujoco/mujoco":"^3.9.0"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.4.0","react":"^19.2.0","three":"^0.181.0","typescript":"~5.8.2","@types/node":"^25.9.1","@types/react":"^19.0.0","@types/three":"^0.181.0","semantic-release":"^25.0.3","@react-three/drei":"^10.7.7","@sparkjsdev/spark":"^2.1.0","@react-three/fiber":"^9.5.0","@semantic-release/git":"^10.0.1","@semantic-release/changelog":"^6.0.3"},"peerDependencies":{"react":">=18","three":">=0.180.0","@react-three/drei":">=9","@sparkjsdev/spark":">=2.1.0","@react-three/fiber":">=8"},"peerDependenciesMeta":{"@sparkjsdev/spark":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/mujoco-react_8.11.0_1781446663940_0.5487784166267138","host":"s3://npm-registry-packages-npm-production"}},"9.0.0":{"name":"mujoco-react","version":"9.0.0","keywords":["mujoco","react","three","r3f","react-three-fiber","physics","simulation","robotics","wasm"],"license":"Apache-2.0","_id":"mujoco-react@9.0.0","maintainers":[{"name":"primlabs","email":"noah.wardlow.0@gmail.com"}],"homepage":"https://github.com/noah-wardlow/mujoco-react#readme","bugs":{"url":"https://github.com/noah-wardlow/mujoco-react/issues"},"bin":{"mujoco-react":"bin/mujoco-react.mjs","mujoco-react-codegen":"bin/mujoco-react-codegen.mjs"},"dist":{"shasum":"6757d20eb087140f58115bc6e032360a3b358f51","tarball":"https://registry.npmjs.org/mujoco-react/-/mujoco-react-9.0.0.tgz","fileCount":69,"integrity":"sha512-syzdIUsDsSJdadbChg+zi431dgKH0KI4f/U34CEMSGPwQ5+x4w8TC4JVm6gihQnm4EX82iiCHn1GylceMOtqTg==","signatures":[{"sig":"MEUCIQCFj7ApVR5ppqypk2ZgPWufDaE2uOTbs1XQB2kd5Zp4YgIgBtVRKPyw48+D3ZN629YKTJYa7u8dL7l3E52EETDk4yU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/mujoco-react@9.0.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1218497},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.js"}},"./vite":{"import":{"types":"./dist/vite.d.ts","default":"./dist/vite.js"}},"./spark":{"import":{"types":"./dist/spark.d.ts","default":"./dist/spark.js"}},"./package.json":"./package.json"},"gitHead":"578ff493148d21c05b05e521e1a0d085ef564f1c","scripts":{"dev":"tsup --watch","build":"tsup","typecheck":"tsc --noEmit"},"_npmUser":{"name":"primlabs","email":"noah.wardlow.0@gmail.com"},"repository":{"url":"git+https://github.com/noah-wardlow/mujoco-react.git","type":"git"},"_npmVersion":"11.10.0","description":"Composable React Three Fiber building blocks for MuJoCo WASM simulations","directories":{},"sideEffects":false,"_nodeVersion":"22.22.3","dependencies":{"@mujoco/mujoco":"^3.9.0"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.4.0","react":"^19.2.0","three":"^0.181.0","typescript":"~5.8.2","@types/node":"^25.9.1","@types/react":"^19.0.0","@types/three":"^0.181.0","semantic-release":"^25.0.3","@react-three/drei":"^10.7.7","@sparkjsdev/spark":"^2.1.0","@react-three/fiber":"^9.5.0","@semantic-release/git":"^10.0.1","@semantic-release/changelog":"^6.0.3"},"peerDependencies":{"react":">=18","three":">=0.180.0","@react-three/drei":">=9","@sparkjsdev/spark":">=2.1.0","@react-three/fiber":">=8"},"peerDependenciesMeta":{"@sparkjsdev/spark":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/mujoco-react_9.0.0_1781448941442_0.2076614148543705","host":"s3://npm-registry-packages-npm-production"}},"9.1.0":{"name":"mujoco-react","version":"9.1.0","keywords":["mujoco","react","three","r3f","react-three-fiber","physics","simulation","robotics","wasm"],"license":"Apache-2.0","_id":"mujoco-react@9.1.0","maintainers":[{"name":"primlabs","email":"noah.wardlow.0@gmail.com"}],"homepage":"https://github.com/noah-wardlow/mujoco-react#readme","bugs":{"url":"https://github.com/noah-wardlow/mujoco-react/issues"},"bin":{"mujoco-react":"bin/mujoco-react.mjs","mujoco-react-codegen":"bin/mujoco-react-codegen.mjs"},"dist":{"shasum":"537286562c6ccc24f306776eec67d5fb6437e407","tarball":"https://registry.npmjs.org/mujoco-react/-/mujoco-react-9.1.0.tgz","fileCount":69,"integrity":"sha512-jzObxlcXdVgkmSddQU3Lolg6TD/2XZmBgp7krhdIF6C9oYML/4oZPPv+cjyTg5vUVTZCVaOicvU1r/iM0IM7tg==","signatures":[{"sig":"MEYCIQCQAjrPbTpDwpz/hC0IckL/034zyIIuLH4hsSwGXHqUjwIhAM1H/urIAa4IyPvst0Ja6ik2Mmi8zUF+aPorRS/Pw+tD","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/mujoco-react@9.1.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1223264},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.js"}},"./vite":{"import":{"types":"./dist/vite.d.ts","default":"./dist/vite.js"}},"./spark":{"import":{"types":"./dist/spark.d.ts","default":"./dist/spark.js"}},"./package.json":"./package.json"},"gitHead":"d5948970acb11df5357850308db7b98e7f5e4c59","scripts":{"dev":"tsup --watch","build":"tsup","typecheck":"tsc --noEmit"},"_npmUser":{"name":"primlabs","email":"noah.wardlow.0@gmail.com"},"repository":{"url":"git+https://github.com/noah-wardlow/mujoco-react.git","type":"git"},"_npmVersion":"11.10.0","description":"Composable React Three Fiber building blocks for MuJoCo WASM simulations","directories":{},"sideEffects":false,"_nodeVersion":"22.22.3","dependencies":{"@mujoco/mujoco":"^3.9.0"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.4.0","react":"^19.2.0","three":"^0.181.0","typescript":"~5.8.2","@types/node":"^25.9.1","@types/react":"^19.0.0","@types/three":"^0.181.0","semantic-release":"^25.0.3","@react-three/drei":"^10.7.7","@sparkjsdev/spark":"^2.1.0","@react-three/fiber":"^9.5.0","@semantic-release/git":"^10.0.1","@semantic-release/changelog":"^6.0.3"},"peerDependencies":{"react":">=18","three":">=0.180.0","@react-three/drei":">=9","@sparkjsdev/spark":">=2.1.0","@react-three/fiber":">=8"},"peerDependenciesMeta":{"@sparkjsdev/spark":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/mujoco-react_9.1.0_1781450680495_0.7114140410487049","host":"s3://npm-registry-packages-npm-production"}},"9.2.0":{"name":"mujoco-react","version":"9.2.0","keywords":["mujoco","react","three","r3f","react-three-fiber","physics","simulation","robotics","wasm"],"license":"Apache-2.0","_id":"mujoco-react@9.2.0","maintainers":[{"name":"primlabs","email":"noah.wardlow.0@gmail.com"}],"homepage":"https://github.com/noah-wardlow/mujoco-react#readme","bugs":{"url":"https://github.com/noah-wardlow/mujoco-react/issues"},"bin":{"mujoco-react":"bin/mujoco-react.mjs","mujoco-react-codegen":"bin/mujoco-react-codegen.mjs"},"dist":{"shasum":"3ae7e4f6562b9f0dc43b1f81f7536fc51ead1012","tarball":"https://registry.npmjs.org/mujoco-react/-/mujoco-react-9.2.0.tgz","fileCount":72,"integrity":"sha512-lNZTr+66qeuhMI7HTD5cmOVew3CbPnTrmoCSnitWD67DI2MlUrzRCb7bsYT9WEtU4rvem/ctpR1FtashbDovHg==","signatures":[{"sig":"MEQCIFnn9PQGfppUG134BzrwHoDn1SI9028wbvny0hXEvz/RAiBei+Wj+Wx667Qu3d64rHseLmGspUrPGddlCxdTbgP5RA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/mujoco-react@9.2.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1281783},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.js"}},"./vite":{"import":{"types":"./dist/vite.d.ts","default":"./dist/vite.js"}},"./spark":{"import":{"types":"./dist/spark.d.ts","default":"./dist/spark.js"}},"./package.json":"./package.json"},"gitHead":"f9f592afd988534d7feedad65b9511e9acc6c809","scripts":{"dev":"tsup --watch","build":"tsup","typecheck":"tsc --noEmit"},"_npmUser":{"name":"primlabs","email":"noah.wardlow.0@gmail.com"},"repository":{"url":"git+https://github.com/noah-wardlow/mujoco-react.git","type":"git"},"_npmVersion":"11.10.0","description":"Composable React Three Fiber building blocks for MuJoCo WASM simulations","directories":{},"sideEffects":false,"_nodeVersion":"22.22.3","dependencies":{"@mujoco/mujoco":"^3.9.0"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.4.0","react":"^19.2.0","three":"^0.181.0","typescript":"~5.8.2","@types/node":"^25.9.1","@types/react":"^19.0.0","@types/three":"^0.181.0","semantic-release":"^25.0.3","@react-three/drei":"^10.7.7","@sparkjsdev/spark":"^2.1.0","@react-three/fiber":"^9.5.0","@semantic-release/git":"^10.0.1","@semantic-release/changelog":"^6.0.3"},"peerDependencies":{"react":">=18","three":">=0.180.0","@react-three/drei":">=9","@sparkjsdev/spark":">=2.1.0","@react-three/fiber":">=8"},"peerDependenciesMeta":{"@sparkjsdev/spark":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/mujoco-react_9.2.0_1781454586656_0.5435374104103696","host":"s3://npm-registry-packages-npm-production"}},"9.3.0":{"name":"mujoco-react","version":"9.3.0","keywords":["mujoco","react","three","r3f","react-three-fiber","physics","simulation","robotics","wasm"],"license":"Apache-2.0","_id":"mujoco-react@9.3.0","maintainers":[{"name":"primlabs","email":"noah.wardlow.0@gmail.com"}],"homepage":"https://github.com/noah-wardlow/mujoco-react#readme","bugs":{"url":"https://github.com/noah-wardlow/mujoco-react/issues"},"bin":{"mujoco-react":"bin/mujoco-react.mjs","mujoco-react-codegen":"bin/mujoco-react-codegen.mjs"},"dist":{"shasum":"2019ce985d531a43a2f75a30782c4493da5c1e9e","tarball":"https://registry.npmjs.org/mujoco-react/-/mujoco-react-9.3.0.tgz","fileCount":74,"integrity":"sha512-voUKeEloIZsXBXsX0MY1S1iMr3OthdQ2x5PmfoNZLwDhICoR3+K20t3hkQZySwhkWrDPhU2dsUFo4OYR5xISJg==","signatures":[{"sig":"MEUCIQCH0pTDsp3H/U7w8vbP1qq52+bpD70j8LCJAjDhaE5yOwIgeb2/m9hXAusHa/uMn/wOuqqAA8rKH9bddhbYihbSAH4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/mujoco-react@9.3.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1446202},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.js"}},"./vite":{"import":{"types":"./dist/vite.d.ts","default":"./dist/vite.js"}},"./spark":{"import":{"types":"./dist/spark.d.ts","default":"./dist/spark.js"}},"./package.json":"./package.json"},"gitHead":"9dbfb2e432a37cf27e52a287a2000a4810a503cb","scripts":{"dev":"tsup --watch","build":"tsup","typecheck":"tsc --noEmit"},"_npmUser":{"name":"primlabs","email":"noah.wardlow.0@gmail.com"},"repository":{"url":"git+https://github.com/noah-wardlow/mujoco-react.git","type":"git"},"_npmVersion":"11.10.0","description":"Composable React Three Fiber building blocks for MuJoCo WASM simulations","directories":{},"sideEffects":false,"_nodeVersion":"22.22.3","dependencies":{"@mujoco/mujoco":"^3.9.0"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.4.0","react":"^19.2.0","three":"^0.181.0","typescript":"~5.8.2","@types/node":"^25.9.1","@types/react":"^19.0.0","@types/three":"^0.181.0","semantic-release":"^25.0.3","@react-three/drei":"^10.7.7","@sparkjsdev/spark":"^2.1.0","@react-three/fiber":"^9.5.0","@semantic-release/git":"^10.0.1","@semantic-release/changelog":"^6.0.3"},"peerDependencies":{"react":">=18","three":">=0.180.0","@react-three/drei":">=9","@sparkjsdev/spark":">=2.1.0","@react-three/fiber":">=8"},"peerDependenciesMeta":{"@sparkjsdev/spark":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/mujoco-react_9.3.0_1781545338665_0.36179109794068465","host":"s3://npm-registry-packages-npm-production"}},"9.4.0":{"name":"mujoco-react","version":"9.4.0","keywords":["mujoco","react","three","r3f","react-three-fiber","physics","simulation","robotics","wasm"],"license":"Apache-2.0","_id":"mujoco-react@9.4.0","maintainers":[{"name":"primlabs","email":"noah.wardlow.0@gmail.com"}],"homepage":"https://github.com/noah-wardlow/mujoco-react#readme","bugs":{"url":"https://github.com/noah-wardlow/mujoco-react/issues"},"bin":{"mujoco-react":"bin/mujoco-react.mjs","mujoco-react-codegen":"bin/mujoco-react-codegen.mjs"},"dist":{"shasum":"e9e9f133056f67cd24ec772dc4d9c8f4648713be","tarball":"https://registry.npmjs.org/mujoco-react/-/mujoco-react-9.4.0.tgz","fileCount":75,"integrity":"sha512-izsyfbnbBqzfmjeITPN1xFXIcOQECKY/mJyJsJJiNUM9sFlkpXEhLYjNYU0CsjGTqsktVtpIlFKjSBkK61A13g==","signatures":[{"sig":"MEUCIDjDvlIGPpForXRWXjqscXbTFd62yB3MjVhyZr2RKxVQAiEAqATFFSYdv/ednjItLBqQ7EZN1IK1qwGiMcxPoR2E6Oc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/mujoco-react@9.4.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1550713},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.js"}},"./vite":{"import":{"types":"./dist/vite.d.ts","default":"./dist/vite.js"}},"./spark":{"import":{"types":"./dist/spark.d.ts","default":"./dist/spark.js"}},"./package.json":"./package.json"},"gitHead":"e1ae6ddf34560dcb794eb076ffd90984584d53b7","scripts":{"dev":"tsup --watch","build":"tsup","typecheck":"tsc --noEmit"},"_npmUser":{"name":"primlabs","email":"noah.wardlow.0@gmail.com"},"repository":{"url":"git+https://github.com/noah-wardlow/mujoco-react.git","type":"git"},"_npmVersion":"11.10.0","description":"Composable React Three Fiber building blocks for MuJoCo WASM simulations","directories":{},"sideEffects":false,"_nodeVersion":"22.22.3","dependencies":{"@mujoco/mujoco":"^3.9.0"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.4.0","react":"^19.2.0","three":"^0.181.0","typescript":"~5.8.2","@types/node":"^25.9.1","@types/react":"^19.0.0","@types/three":"^0.181.0","semantic-release":"^25.0.3","@react-three/drei":"^10.7.7","@sparkjsdev/spark":"^2.1.0","@react-three/fiber":"^9.5.0","@semantic-release/git":"^10.0.1","@semantic-release/changelog":"^6.0.3"},"peerDependencies":{"react":">=18","three":">=0.180.0","@react-three/drei":">=9","@sparkjsdev/spark":">=2.1.0","@react-three/fiber":">=8"},"peerDependenciesMeta":{"@sparkjsdev/spark":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/mujoco-react_9.4.0_1781704994032_0.9653897672282545","host":"s3://npm-registry-packages-npm-production"}},"9.5.0":{"name":"mujoco-react","version":"9.5.0","keywords":["mujoco","react","three","r3f","react-three-fiber","physics","simulation","robotics","wasm"],"license":"Apache-2.0","_id":"mujoco-react@9.5.0","maintainers":[{"name":"primlabs","email":"noah.wardlow.0@gmail.com"}],"homepage":"https://github.com/noah-wardlow/mujoco-react#readme","bugs":{"url":"https://github.com/noah-wardlow/mujoco-react/issues"},"bin":{"mujoco-react":"bin/mujoco-react.mjs","mujoco-react-codegen":"bin/mujoco-react-codegen.mjs"},"dist":{"shasum":"76efbe1f5ee9ec061103406e46d9e784d905516d","tarball":"https://registry.npmjs.org/mujoco-react/-/mujoco-react-9.5.0.tgz","fileCount":75,"integrity":"sha512-MOy76alh89Nz/D9Cr/Oks27t/G/3GVntI3S438Ku0qdtX0qM0LeZOHTUyupCE8AyczQAyVx3l3/Yp2HdujIChw==","signatures":[{"sig":"MEUCIBhnJTGFtP93dNuKy/y+0exCSDIM9g2BsJGAxuPrQq+DAiEA4POPkO8fqEHSeIwA8mBX8emYJtRIakyF/XgJc4ZljMA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/mujoco-react@9.5.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1627916},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.js"}},"./vite":{"import":{"types":"./dist/vite.d.ts","default":"./dist/vite.js"}},"./spark":{"import":{"types":"./dist/spark.d.ts","default":"./dist/spark.js"}},"./package.json":"./package.json"},"gitHead":"4ab7f1228710cd1effc6bdbe1902ac7c0f6412ff","scripts":{"dev":"tsup --watch","build":"tsup","typecheck":"tsc --noEmit"},"_npmUser":{"name":"primlabs","email":"noah.wardlow.0@gmail.com"},"repository":{"url":"git+https://github.com/noah-wardlow/mujoco-react.git","type":"git"},"_npmVersion":"11.10.0","description":"Composable React Three Fiber building blocks for MuJoCo WASM simulations","directories":{},"sideEffects":false,"_nodeVersion":"22.22.3","dependencies":{"@mujoco/mujoco":"^3.9.0"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.4.0","react":"^19.2.0","three":"^0.181.0","typescript":"~5.8.2","@types/node":"^25.9.1","@types/react":"^19.0.0","@types/three":"^0.181.0","semantic-release":"^25.0.3","@react-three/drei":"^10.7.7","@sparkjsdev/spark":"^2.1.0","@react-three/fiber":"^9.5.0","@semantic-release/git":"^10.0.1","@semantic-release/changelog":"^6.0.3"},"peerDependencies":{"react":">=18","three":">=0.180.0","@react-three/drei":">=9","@sparkjsdev/spark":">=2.1.0","@react-three/fiber":">=8"},"peerDependenciesMeta":{"@sparkjsdev/spark":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/mujoco-react_9.5.0_1781839633590_0.03123325605083349","host":"s3://npm-registry-packages-npm-production"}},"9.6.0":{"name":"mujoco-react","version":"9.6.0","keywords":["mujoco","react","three","r3f","react-three-fiber","physics","simulation","robotics","wasm"],"license":"Apache-2.0","_id":"mujoco-react@9.6.0","maintainers":[{"name":"primlabs","email":"noah.wardlow.0@gmail.com"}],"homepage":"https://github.com/noah-wardlow/mujoco-react#readme","bugs":{"url":"https://github.com/noah-wardlow/mujoco-react/issues"},"bin":{"mujoco-react":"bin/mujoco-react.mjs","mujoco-react-codegen":"bin/mujoco-react-codegen.mjs"},"dist":{"shasum":"4a22f1b0aecc1f492817fc5c2b41d707da65b8c4","tarball":"https://registry.npmjs.org/mujoco-react/-/mujoco-react-9.6.0.tgz","fileCount":76,"integrity":"sha512-57+odeH9W6y7guJ8qHfdpjw18OsuPiFTjqqWCcNrGBBfQJEEzWQu2+cbRBM2/O7zZPSRn2VJDT2JTYNSh/YO3A==","signatures":[{"sig":"MEUCIQCEf6jao4gxUOA4b5eHgksxUDMeIleWARVnyUEuCdwX4QIgQL27RA0+SZmmFKQ4GrK/Xmiln/YMoI9BCYPzTHGPKrA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/mujoco-react@9.6.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1653477},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.js"}},"./vite":{"import":{"types":"./dist/vite.d.ts","default":"./dist/vite.js"}},"./spark":{"import":{"types":"./dist/spark.d.ts","default":"./dist/spark.js"}},"./package.json":"./package.json"},"gitHead":"adec31cb85a937c78947e8a07727007d32d2aa18","scripts":{"dev":"tsup --watch","build":"tsup","typecheck":"tsc --noEmit"},"_npmUser":{"name":"primlabs","email":"noah.wardlow.0@gmail.com"},"repository":{"url":"git+https://github.com/noah-wardlow/mujoco-react.git","type":"git"},"_npmVersion":"11.10.0","description":"Composable React Three Fiber building blocks for MuJoCo WASM simulations","directories":{},"sideEffects":false,"_nodeVersion":"22.22.3","dependencies":{"@mujoco/mujoco":"^3.9.0"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.4.0","react":"^19.2.0","three":"^0.181.0","typescript":"~5.8.2","@types/node":"^25.9.1","@types/react":"^19.0.0","@types/three":"^0.181.0","semantic-release":"^25.0.3","@react-three/drei":"^10.7.7","@sparkjsdev/spark":"^2.1.0","@react-three/fiber":"^9.5.0","@semantic-release/git":"^10.0.1","@semantic-release/changelog":"^6.0.3"},"peerDependencies":{"react":">=18","three":">=0.180.0","@react-three/drei":">=9","@sparkjsdev/spark":">=2.1.0","@react-three/fiber":">=8"},"peerDependenciesMeta":{"@sparkjsdev/spark":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/mujoco-react_9.6.0_1782020223430_0.32694552539103205","host":"s3://npm-registry-packages-npm-production"}},"10.0.0":{"name":"mujoco-react","version":"10.0.0","keywords":["mujoco","react","three","r3f","react-three-fiber","physics","simulation","robotics","wasm"],"license":"Apache-2.0","_id":"mujoco-react@10.0.0","maintainers":[{"name":"primlabs","email":"noah.wardlow.0@gmail.com"}],"homepage":"https://github.com/noah-wardlow/mujoco-react#readme","bugs":{"url":"https://github.com/noah-wardlow/mujoco-react/issues"},"bin":{"mujoco-react":"bin/mujoco-react.mjs","mujoco-react-codegen":"bin/mujoco-react-codegen.mjs"},"dist":{"shasum":"718c719140bf168c0e8edab0ae089c949e437085","tarball":"https://registry.npmjs.org/mujoco-react/-/mujoco-react-10.0.0.tgz","fileCount":76,"integrity":"sha512-b1acQU5j2tRPgvElomSomXSczLP5iny3aQEbgwbcmw1GPDppP/7fsuqSngCZEyC7R3zHH3sURfVDjmFz8QheLg==","signatures":[{"sig":"MEQCIDmfYHM5iTaCuWmAAuzewDaXi30+MxFOhV3vDRVCRjNxAiA8Gw4Kcrg1jQI+gubstF+40qcPrgLXAamUPY4rHp0/vA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/mujoco-react@10.0.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1657643},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.js"}},"./vite":{"import":{"types":"./dist/vite.d.ts","default":"./dist/vite.js"}},"./spark":{"import":{"types":"./dist/spark.d.ts","default":"./dist/spark.js"}},"./package.json":"./package.json"},"gitHead":"63c8de60afaec78491589259bcc66cedd6f839b1","scripts":{"dev":"tsup --watch","build":"tsup","typecheck":"tsc --noEmit"},"_npmUser":{"name":"primlabs","email":"noah.wardlow.0@gmail.com"},"repository":{"url":"git+https://github.com/noah-wardlow/mujoco-react.git","type":"git"},"_npmVersion":"11.10.0","description":"Composable React Three Fiber building blocks for MuJoCo WASM simulations","directories":{},"sideEffects":false,"_nodeVersion":"22.22.3","dependencies":{"@mujoco/mujoco":"^3.9.0"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.4.0","react":"^19.2.0","three":"^0.181.0","typescript":"~5.8.2","@types/node":"^25.9.1","@types/react":"^19.0.0","@types/three":"^0.181.0","semantic-release":"^25.0.3","@react-three/drei":"^10.7.7","@sparkjsdev/spark":"^2.1.0","@react-three/fiber":"^9.5.0","@semantic-release/git":"^10.0.1","@semantic-release/changelog":"^6.0.3"},"peerDependencies":{"react":">=18","three":">=0.180.0","@react-three/drei":">=9","@sparkjsdev/spark":">=2.1.0","@react-three/fiber":">=8"},"peerDependenciesMeta":{"@sparkjsdev/spark":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/mujoco-react_10.0.0_1782022302535_0.5365995134466832","host":"s3://npm-registry-packages-npm-production"}},"10.0.1":{"name":"mujoco-react","version":"10.0.1","keywords":["mujoco","react","three","r3f","react-three-fiber","physics","simulation","robotics","wasm"],"license":"Apache-2.0","_id":"mujoco-react@10.0.1","maintainers":[{"name":"primlabs","email":"noah.wardlow.0@gmail.com"}],"homepage":"https://github.com/noah-wardlow/mujoco-react#readme","bugs":{"url":"https://github.com/noah-wardlow/mujoco-react/issues"},"bin":{"mujoco-react":"bin/mujoco-react.mjs","mujoco-react-codegen":"bin/mujoco-react-codegen.mjs"},"dist":{"shasum":"6647c73e4c5a1588b1d6f8e3f8709ccfed954f71","tarball":"https://registry.npmjs.org/mujoco-react/-/mujoco-react-10.0.1.tgz","fileCount":76,"integrity":"sha512-sgoQADACuNAjadMan8i5Gk4XzBJDI5xfOdWhM2HYXsV5bD3CWw4MNSGB+GVsYb3oKI1TSIWpyv1ymHaYYIyxwg==","signatures":[{"sig":"MEQCIFQAmWxYzgT3a7noBF+EnxxqxwdkUKuBlbcQkoeWs+lOAiBah2SH/rguckSEz6a73IzYmaROpOLChDzHP97nAX6lbA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/mujoco-react@10.0.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1659282},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.js"}},"./vite":{"import":{"types":"./dist/vite.d.ts","default":"./dist/vite.js"}},"./spark":{"import":{"types":"./dist/spark.d.ts","default":"./dist/spark.js"}},"./package.json":"./package.json"},"gitHead":"38bb59b7917fbc2390f930737aad5b5957e164f3","scripts":{"dev":"tsup --watch","build":"tsup","typecheck":"tsc --noEmit"},"_npmUser":{"name":"primlabs","email":"noah.wardlow.0@gmail.com"},"repository":{"url":"git+https://github.com/noah-wardlow/mujoco-react.git","type":"git"},"_npmVersion":"11.10.0","description":"Composable React Three Fiber building blocks for MuJoCo WASM simulations","directories":{},"sideEffects":false,"_nodeVersion":"22.22.3","dependencies":{"@mujoco/mujoco":"^3.9.0"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.4.0","react":"^19.2.0","three":"^0.181.0","typescript":"~5.8.2","@types/node":"^25.9.1","@types/react":"^19.0.0","@types/three":"^0.181.0","semantic-release":"^25.0.3","@react-three/drei":"^10.7.7","@sparkjsdev/spark":"^2.1.0","@react-three/fiber":"^9.5.0","@semantic-release/git":"^10.0.1","@semantic-release/changelog":"^6.0.3"},"peerDependencies":{"react":">=18","three":">=0.180.0","@react-three/drei":">=9","@sparkjsdev/spark":">=2.1.0","@react-three/fiber":">=8"},"peerDependenciesMeta":{"@sparkjsdev/spark":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/mujoco-react_10.0.1_1782081844684_0.7090380835517676","host":"s3://npm-registry-packages-npm-production"}},"10.1.0":{"name":"mujoco-react","version":"10.1.0","keywords":["mujoco","react","three","r3f","react-three-fiber","physics","simulation","robotics","wasm"],"license":"Apache-2.0","_id":"mujoco-react@10.1.0","maintainers":[{"name":"primlabs","email":"noah.wardlow.0@gmail.com"}],"homepage":"https://github.com/noah-wardlow/mujoco-react#readme","bugs":{"url":"https://github.com/noah-wardlow/mujoco-react/issues"},"bin":{"mujoco-react":"bin/mujoco-react.mjs","mujoco-react-codegen":"bin/mujoco-react-codegen.mjs"},"dist":{"shasum":"df31a81dd832bdae9c483cde2982adf87f26371a","tarball":"https://registry.npmjs.org/mujoco-react/-/mujoco-react-10.1.0.tgz","fileCount":85,"integrity":"sha512-3oJ/IBSc399Akcq5s9ZX2pv6Oh7SD/2/e9a4wpqh8YWQEXbJE1JEdjciGuTfEOOtPyM0Xj/C7Wjr/i43O4EWKw==","signatures":[{"sig":"MEUCIFshUdnI/qXELYr4nREi1I70nZV8UwmGPlWzUd12bYrkAiEAvNXnRtqVau0nk7DXoyfTZyx2e5Qm7hWRbqLx2X8eED8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/mujoco-react@10.1.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1860719},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.js"}},"./vite":{"import":{"types":"./dist/vite.d.ts","default":"./dist/vite.js"}},"./spark":{"import":{"types":"./dist/spark.d.ts","default":"./dist/spark.js"}},"./package.json":"./package.json"},"gitHead":"158189d9b0fbf30efa5febf1da2150c1fba87745","scripts":{"dev":"tsup --watch","build":"tsup","typecheck":"tsc --noEmit"},"_npmUser":{"name":"primlabs","email":"noah.wardlow.0@gmail.com"},"repository":{"url":"git+https://github.com/noah-wardlow/mujoco-react.git","type":"git"},"_npmVersion":"11.10.0","description":"Composable React Three Fiber building blocks for MuJoCo WASM simulations","directories":{},"sideEffects":false,"_nodeVersion":"22.22.3","dependencies":{"@mujoco/mujoco":"^3.9.0"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.4.0","react":"^19.2.0","three":"^0.181.0","typescript":"~5.8.2","@types/node":"^25.9.1","@types/react":"^19.0.0","@types/three":"^0.181.0","semantic-release":"^25.0.3","@react-three/drei":"^10.7.7","@sparkjsdev/spark":"^2.1.0","@react-three/fiber":"^9.5.0","@semantic-release/git":"^10.0.1","@semantic-release/changelog":"^6.0.3"},"peerDependencies":{"react":">=18","three":">=0.180.0","@react-three/drei":">=9","@sparkjsdev/spark":">=2.1.0","@react-three/fiber":">=8"},"peerDependenciesMeta":{"@sparkjsdev/spark":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/mujoco-react_10.1.0_1782153537971_0.8011842064339241","host":"s3://npm-registry-packages-npm-production"}},"10.2.0":{"name":"mujoco-react","version":"10.2.0","keywords":["mujoco","react","three","r3f","react-three-fiber","physics","simulation","robotics","wasm"],"license":"Apache-2.0","_id":"mujoco-react@10.2.0","maintainers":[{"name":"primlabs","email":"noah.wardlow.0@gmail.com"}],"homepage":"https://github.com/noah-wardlow/mujoco-react#readme","bugs":{"url":"https://github.com/noah-wardlow/mujoco-react/issues"},"bin":{"mujoco-react":"bin/mujoco-react.mjs","mujoco-react-codegen":"bin/mujoco-react-codegen.mjs"},"dist":{"shasum":"7bf866e4065e2559387d14445334ab6920539d20","tarball":"https://registry.npmjs.org/mujoco-react/-/mujoco-react-10.2.0.tgz","fileCount":86,"integrity":"sha512-/7jIfBhV6SSrRa8D/fUmNercofMgL9legRll4k4HkpCk5/ysESQ0tlCx8efhy9nPopgHvD96WF2+zntgFfSg6Q==","signatures":[{"sig":"MEQCIGQi+sb9YhiUCirkl8HrqFMKqdfEUDzLz1YIstc8F9sJAiBpliZReomYasZGrwoARDz2qBTLW475Tq2GYAKJPmMSAw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/mujoco-react@10.2.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1891695},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.js"}},"./vite":{"import":{"types":"./dist/vite.d.ts","default":"./dist/vite.js"}},"./spark":{"import":{"types":"./dist/spark.d.ts","default":"./dist/spark.js"}},"./package.json":"./package.json"},"gitHead":"bab233f2fd1dc7ba0dca36176a0bd50f90b37f9b","scripts":{"dev":"tsup --watch","build":"tsup","typecheck":"tsc --noEmit"},"_npmUser":{"name":"primlabs","email":"noah.wardlow.0@gmail.com"},"repository":{"url":"git+https://github.com/noah-wardlow/mujoco-react.git","type":"git"},"_npmVersion":"11.10.0","description":"Composable React Three Fiber building blocks for MuJoCo WASM simulations","directories":{},"sideEffects":false,"_nodeVersion":"22.22.3","dependencies":{"@mujoco/mujoco":"^3.9.0"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.4.0","react":"^19.2.0","three":"^0.181.0","typescript":"~5.8.2","@types/node":"^25.9.1","@types/react":"^19.0.0","@types/three":"^0.181.0","semantic-release":"^25.0.3","@react-three/drei":"^10.7.7","@sparkjsdev/spark":"^2.1.0","@react-three/fiber":"^9.5.0","@semantic-release/git":"^10.0.1","@semantic-release/changelog":"^6.0.3"},"peerDependencies":{"react":">=18","three":">=0.180.0","@react-three/drei":">=9","@sparkjsdev/spark":">=2.1.0","@react-three/fiber":">=8"},"peerDependenciesMeta":{"@sparkjsdev/spark":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/mujoco-react_10.2.0_1782159091191_0.12051539543973844","host":"s3://npm-registry-packages-npm-production"}},"10.2.1":{"name":"mujoco-react","version":"10.2.1","keywords":["mujoco","react","three","r3f","react-three-fiber","physics","simulation","robotics","wasm"],"license":"Apache-2.0","_id":"mujoco-react@10.2.1","maintainers":[{"name":"primlabs","email":"noah.wardlow.0@gmail.com"}],"homepage":"https://github.com/noah-wardlow/mujoco-react#readme","bugs":{"url":"https://github.com/noah-wardlow/mujoco-react/issues"},"bin":{"mujoco-react":"bin/mujoco-react.mjs","mujoco-react-codegen":"bin/mujoco-react-codegen.mjs"},"dist":{"shasum":"f4c3267e0e97a06ffd4b46b87f82ed0a6de4b8db","tarball":"https://registry.npmjs.org/mujoco-react/-/mujoco-react-10.2.1.tgz","fileCount":86,"integrity":"sha512-k9AdVNjbXe0qtElQZwI60R+WpYQSGu4/s3rnnf2z14CEER2zhuzXwXmnLRUtDAHc8RrazePzTClz9b5ljU3ZbQ==","signatures":[{"sig":"MEUCIQCMx7WA7JMxgbNbBPTA+WkCIJWY5K/ruqDDJJ8LdEMGJAIgRExwNrNG5jZ9DdetTH4Pf5uD1zgtKZQjcNfKxVdkQnM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/mujoco-react@10.2.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1896744},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.js"}},"./vite":{"import":{"types":"./dist/vite.d.ts","default":"./dist/vite.js"}},"./spark":{"import":{"types":"./dist/spark.d.ts","default":"./dist/spark.js"}},"./package.json":"./package.json"},"gitHead":"ff0203a9aad92a4a7fb0fd8e60fc76e91e2d0155","scripts":{"dev":"tsup --watch","build":"tsup","typecheck":"tsc --noEmit"},"_npmUser":{"name":"primlabs","email":"noah.wardlow.0@gmail.com"},"repository":{"url":"git+https://github.com/noah-wardlow/mujoco-react.git","type":"git"},"_npmVersion":"11.10.0","description":"Composable React Three Fiber building blocks for MuJoCo WASM simulations","directories":{},"sideEffects":false,"_nodeVersion":"22.22.3","dependencies":{"@mujoco/mujoco":"^3.9.0"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.4.0","react":"^19.2.0","three":"^0.181.0","typescript":"~5.8.2","@types/node":"^25.9.1","@types/react":"^19.0.0","@types/three":"^0.181.0","semantic-release":"^25.0.3","@react-three/drei":"^10.7.7","@sparkjsdev/spark":"^2.1.0","@react-three/fiber":"^9.5.0","@semantic-release/git":"^10.0.1","@semantic-release/changelog":"^6.0.3"},"peerDependencies":{"react":">=18","three":">=0.180.0","@react-three/drei":">=9","@sparkjsdev/spark":">=2.1.0","@react-three/fiber":">=8"},"peerDependenciesMeta":{"@sparkjsdev/spark":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/mujoco-react_10.2.1_1782164843182_0.8521420108947739","host":"s3://npm-registry-packages-npm-production"}},"10.3.0":{"name":"mujoco-react","version":"10.3.0","keywords":["mujoco","react","three","r3f","react-three-fiber","physics","simulation","robotics","wasm"],"license":"Apache-2.0","_id":"mujoco-react@10.3.0","maintainers":[{"name":"primlabs","email":"noah.wardlow.0@gmail.com"}],"homepage":"https://github.com/noah-wardlow/mujoco-react#readme","bugs":{"url":"https://github.com/noah-wardlow/mujoco-react/issues"},"bin":{"mujoco-react":"bin/mujoco-react.mjs","mujoco-react-codegen":"bin/mujoco-react-codegen.mjs"},"dist":{"shasum":"3fc332a5e4620cdeb7212d8c9ed8fc9f3277c606","tarball":"https://registry.npmjs.org/mujoco-react/-/mujoco-react-10.3.0.tgz","fileCount":86,"integrity":"sha512-WBDext7xbbsYEi+fnXDzC83uKoqRwY6z58res6lcmCjKl0TFgeIwoiUE/IWDEG7G28S2meflRo8QA5ga1ABQCw==","signatures":[{"sig":"MEUCIFF6z/EGEHcQPW6Scyih0xPuMe6H5rIw7ip9mD2pYJX7AiEAiPqEiUc9n7ss4B66GddAnYKWWdvb8HpKUGyjvpx0zWs=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/mujoco-react@10.3.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1964084},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.js"}},"./vite":{"import":{"types":"./dist/vite.d.ts","default":"./dist/vite.js"}},"./spark":{"import":{"types":"./dist/spark.d.ts","default":"./dist/spark.js"}},"./package.json":"./package.json"},"gitHead":"9b3a8dc21df0d1520844fd7f07eec15a43d8c7b2","scripts":{"dev":"tsup --watch","build":"tsup","typecheck":"tsc --noEmit"},"_npmUser":{"name":"primlabs","email":"noah.wardlow.0@gmail.com"},"repository":{"url":"git+https://github.com/noah-wardlow/mujoco-react.git","type":"git"},"_npmVersion":"11.10.0","description":"Composable React Three Fiber building blocks for MuJoCo WASM simulations","directories":{},"sideEffects":false,"_nodeVersion":"22.22.3","dependencies":{"@mujoco/mujoco":"^3.9.0"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.4.0","react":"^19.2.0","three":"^0.181.0","typescript":"~5.8.2","@types/node":"^25.9.1","@types/react":"^19.0.0","@types/three":"^0.181.0","semantic-release":"^25.0.3","@react-three/drei":"^10.7.7","@sparkjsdev/spark":"^2.1.0","@react-three/fiber":"^9.5.0","@semantic-release/git":"^10.0.1","@semantic-release/changelog":"^6.0.3"},"peerDependencies":{"react":">=18","three":">=0.180.0","@react-three/drei":">=9","@sparkjsdev/spark":">=2.1.0","@react-three/fiber":">=8"},"peerDependenciesMeta":{"@sparkjsdev/spark":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/mujoco-react_10.3.0_1782235322243_0.41095567190107407","host":"s3://npm-registry-packages-npm-production"}},"10.4.0":{"name":"mujoco-react","version":"10.4.0","keywords":["mujoco","react","three","r3f","react-three-fiber","physics","simulation","robotics","wasm"],"license":"Apache-2.0","_id":"mujoco-react@10.4.0","maintainers":[{"name":"primlabs","email":"noah.wardlow.0@gmail.com"}],"homepage":"https://github.com/noah-wardlow/mujoco-react#readme","bugs":{"url":"https://github.com/noah-wardlow/mujoco-react/issues"},"bin":{"mujoco-react":"bin/mujoco-react.mjs","mujoco-react-codegen":"bin/mujoco-react-codegen.mjs"},"dist":{"shasum":"84eb83fcbf24fc84fc1c006f0f84fdbfb3167a03","tarball":"https://registry.npmjs.org/mujoco-react/-/mujoco-react-10.4.0.tgz","fileCount":86,"integrity":"sha512-z1GVkFSHw2HMRlAcLlJW9kD6+DQqpr11rQz4UJSOT5jyQlYBzhYtuxMgkE1JMQ/AdNTTAdDcgBK3PkQA+jfDtw==","signatures":[{"sig":"MEYCIQCrvla7GqLWeAaj2zmIe6oHXA8C13k8gphaRZ7WVICkZgIhAPq1gqfExqSLAUikhi3uhmIBQrXgnP1U4P8XRujaErdS","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/mujoco-react@10.4.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1990752},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.js"}},"./vite":{"import":{"types":"./dist/vite.d.ts","default":"./dist/vite.js"}},"./spark":{"import":{"types":"./dist/spark.d.ts","default":"./dist/spark.js"}},"./package.json":"./package.json"},"gitHead":"2dc83655fc891cc63b1a3f40ea0efec1a4579028","scripts":{"dev":"tsup --watch","build":"tsup","typecheck":"tsc --noEmit"},"_npmUser":{"name":"primlabs","email":"noah.wardlow.0@gmail.com"},"repository":{"url":"git+https://github.com/noah-wardlow/mujoco-react.git","type":"git"},"_npmVersion":"11.10.0","description":"Composable React Three Fiber building blocks for MuJoCo WASM simulations","directories":{},"sideEffects":false,"_nodeVersion":"22.23.0","dependencies":{"@mujoco/mujoco":"^3.9.0"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.4.0","react":"^19.2.0","three":"^0.181.0","typescript":"~5.8.2","@types/node":"^25.9.1","@types/react":"^19.0.0","@types/three":"^0.181.0","semantic-release":"^25.0.3","@react-three/drei":"^10.7.7","@sparkjsdev/spark":"^2.1.0","@react-three/fiber":"^9.5.0","@semantic-release/git":"^10.0.1","@semantic-release/changelog":"^6.0.3"},"peerDependencies":{"react":">=18","three":">=0.180.0","@react-three/drei":">=9","@sparkjsdev/spark":">=2.1.0","@react-three/fiber":">=8"},"peerDependenciesMeta":{"@sparkjsdev/spark":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/mujoco-react_10.4.0_1782335174090_0.8225323487009595","host":"s3://npm-registry-packages-npm-production"}},"10.5.0":{"name":"mujoco-react","version":"10.5.0","keywords":["mujoco","react","three","r3f","react-three-fiber","physics","simulation","robotics","wasm"],"license":"Apache-2.0","_id":"mujoco-react@10.5.0","maintainers":[{"name":"primlabs","email":"noah.wardlow.0@gmail.com"}],"homepage":"https://github.com/noah-wardlow/mujoco-react#readme","bugs":{"url":"https://github.com/noah-wardlow/mujoco-react/issues"},"bin":{"mujoco-react":"bin/mujoco-react.mjs","mujoco-react-codegen":"bin/mujoco-react-codegen.mjs"},"dist":{"shasum":"8f5819ccd7d0f62f5ad1035dfc87c8e512068977","tarball":"https://registry.npmjs.org/mujoco-react/-/mujoco-react-10.5.0.tgz","fileCount":95,"integrity":"sha512-ujFgWlUr7lIpVyScpxuYPTWVhUSGS2Rd5kHllL3myZ7Wj/l9iPxj6uoq0pMFMDWpdMBAIsuaTevC0fZO7VPRSw==","signatures":[{"sig":"MEUCIQD5bgtOzV/qjgdSTUOlzg+coGscxFUF7adb2K+QShdvxQIgY8MqkDBQu86fgSxtTpOgv6vJsUTPv6P+BM7Yo15IKoM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/mujoco-react@10.5.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":2131589},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.js"}},"./onnx":{"import":{"types":"./dist/onnx.d.ts","default":"./dist/onnx.js"}},"./vite":{"import":{"types":"./dist/vite.d.ts","default":"./dist/vite.js"}},"./spark":{"import":{"types":"./dist/spark.d.ts","default":"./dist/spark.js"}},"./package.json":"./package.json"},"gitHead":"242091290812447af795863b8567c4d18575c852","scripts":{"dev":"tsup --watch","build":"tsup","typecheck":"tsc --noEmit"},"_npmUser":{"name":"primlabs","email":"noah.wardlow.0@gmail.com"},"repository":{"url":"git+https://github.com/noah-wardlow/mujoco-react.git","type":"git"},"_npmVersion":"11.10.0","description":"Composable React Three Fiber building blocks for MuJoCo WASM simulations","directories":{},"sideEffects":false,"_nodeVersion":"22.23.0","dependencies":{"@mujoco/mujoco":"^3.9.0"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.4.0","react":"^19.2.0","three":"^0.181.0","typescript":"~5.8.2","@types/node":"^25.9.1","@types/react":"^19.0.0","@types/three":"^0.181.0","onnxruntime-web":"^1.27.0","semantic-release":"^25.0.3","@react-three/drei":"^10.7.7","@sparkjsdev/spark":"^2.1.0","@react-three/fiber":"^9.5.0","@semantic-release/git":"^10.0.1","@semantic-release/changelog":"^6.0.3"},"peerDependencies":{"react":">=18","three":">=0.180.0","onnxruntime-web":">=1.20.0","@react-three/drei":">=9","@sparkjsdev/spark":">=2.1.0","@react-three/fiber":">=8"},"peerDependenciesMeta":{"onnxruntime-web":{"optional":true},"@sparkjsdev/spark":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/mujoco-react_10.5.0_1782445128026_0.23671748317496788","host":"s3://npm-registry-packages-npm-production"}},"10.6.0":{"name":"mujoco-react","version":"10.6.0","keywords":["mujoco","react","three","r3f","react-three-fiber","physics","simulation","robotics","wasm"],"license":"Apache-2.0","_id":"mujoco-react@10.6.0","maintainers":[{"name":"primlabs","email":"noah.wardlow.0@gmail.com"}],"homepage":"https://github.com/noah-wardlow/mujoco-react#readme","bugs":{"url":"https://github.com/noah-wardlow/mujoco-react/issues"},"bin":{"mujoco-react":"bin/mujoco-react.mjs","mujoco-react-codegen":"bin/mujoco-react-codegen.mjs"},"dist":{"shasum":"189ab9e56402037d075c6b2ed6f7b2f26c537f2d","tarball":"https://registry.npmjs.org/mujoco-react/-/mujoco-react-10.6.0.tgz","fileCount":95,"integrity":"sha512-K34e6rjSPCFC6E4K2FQmwzJecLBK0Sq1j3AwYJFOOZcPGrkTfj65Lcc0+RAsPUAUySBPveGn3E61TkdZXZsdnQ==","signatures":[{"sig":"MEQCIBHv6k/9EizmPS66kdKObse0I+vCv7MyGW5J1IyFPQiKAiBM9EDqs+J5NMhf49cvB9GTkcjdo+WueaqqxsxBBEIhIg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/mujoco-react@10.6.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":2135916},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.js"}},"./onnx":{"import":{"types":"./dist/onnx.d.ts","default":"./dist/onnx.js"}},"./vite":{"import":{"types":"./dist/vite.d.ts","default":"./dist/vite.js"}},"./spark":{"import":{"types":"./dist/spark.d.ts","default":"./dist/spark.js"}},"./package.json":"./package.json"},"gitHead":"c775d69afa3ce08fa324643c50bac71f7437bd79","scripts":{"dev":"tsup --watch","build":"tsup","typecheck":"tsc --noEmit"},"_npmUser":{"name":"primlabs","email":"noah.wardlow.0@gmail.com"},"repository":{"url":"git+https://github.com/noah-wardlow/mujoco-react.git","type":"git"},"_npmVersion":"11.10.0","description":"Composable React Three Fiber building blocks for MuJoCo WASM simulations","directories":{},"sideEffects":false,"_nodeVersion":"22.23.0","dependencies":{"@mujoco/mujoco":"^3.9.0"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.4.0","react":"^19.2.0","three":"^0.181.0","typescript":"~5.8.2","@types/node":"^25.9.1","@types/react":"^19.0.0","@types/three":"^0.181.0","onnxruntime-web":"^1.27.0","semantic-release":"^25.0.3","@react-three/drei":"^10.7.7","@sparkjsdev/spark":"^2.1.0","@react-three/fiber":"^9.5.0","@semantic-release/git":"^10.0.1","@semantic-release/changelog":"^6.0.3"},"peerDependencies":{"react":">=18","three":">=0.180.0","onnxruntime-web":">=1.20.0","@react-three/drei":">=9","@sparkjsdev/spark":">=2.1.0","@react-three/fiber":">=8"},"peerDependenciesMeta":{"onnxruntime-web":{"optional":true},"@sparkjsdev/spark":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/mujoco-react_10.6.0_1782449761114_0.5304655522541277","host":"s3://npm-registry-packages-npm-production"}},"10.7.0":{"name":"mujoco-react","version":"10.7.0","keywords":["mujoco","react","three","r3f","react-three-fiber","physics","simulation","robotics","wasm"],"license":"Apache-2.0","_id":"mujoco-react@10.7.0","maintainers":[{"name":"primlabs","email":"noah.wardlow.0@gmail.com"}],"homepage":"https://github.com/noah-wardlow/mujoco-react#readme","bugs":{"url":"https://github.com/noah-wardlow/mujoco-react/issues"},"bin":{"mujoco-react":"bin/mujoco-react.mjs","mujoco-react-codegen":"bin/mujoco-react-codegen.mjs"},"dist":{"shasum":"d3df783dd903c9741c790fbfa186071f07d6043b","tarball":"https://registry.npmjs.org/mujoco-react/-/mujoco-react-10.7.0.tgz","fileCount":95,"integrity":"sha512-CzbpXNT5QSLhpcNV+suz4zIu2GlL/JTklWCX6Klt/QqddolcABExtTAbuGwXHN2JRDW6hlNQ+aqWzDHxMVOMHw==","signatures":[{"sig":"MEYCIQDWzcbwfmxaKgvFO5CbX4bgv+QA+yBR+uvekOzNmshhYQIhAIC+Kr98dyHCRmmAK0bOjYxCqfLYeWEsjpW3LoSHTz6m","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/mujoco-react@10.7.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":2154391},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.js"}},"./onnx":{"import":{"types":"./dist/onnx.d.ts","default":"./dist/onnx.js"}},"./vite":{"import":{"types":"./dist/vite.d.ts","default":"./dist/vite.js"}},"./spark":{"import":{"types":"./dist/spark.d.ts","default":"./dist/spark.js"}},"./package.json":"./package.json"},"gitHead":"eea8a00528f12d340d1faecbbb27615b3437fce5","scripts":{"dev":"tsup --watch","build":"tsup","typecheck":"tsc --noEmit"},"_npmUser":{"name":"primlabs","email":"noah.wardlow.0@gmail.com"},"repository":{"url":"git+https://github.com/noah-wardlow/mujoco-react.git","type":"git"},"_npmVersion":"11.10.0","description":"Composable React Three Fiber building blocks for MuJoCo WASM simulations","directories":{},"sideEffects":false,"_nodeVersion":"22.23.0","dependencies":{"@mujoco/mujoco":"^3.9.0"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.4.0","react":"^19.2.0","three":"^0.181.0","typescript":"~5.8.2","@types/node":"^25.9.1","@types/react":"^19.0.0","@types/three":"^0.181.0","onnxruntime-web":"^1.27.0","semantic-release":"^25.0.3","@react-three/drei":"^10.7.7","@sparkjsdev/spark":"^2.1.0","@react-three/fiber":"^9.5.0","@semantic-release/git":"^10.0.1","@semantic-release/changelog":"^6.0.3"},"peerDependencies":{"react":">=18","three":">=0.180.0","onnxruntime-web":">=1.20.0","@react-three/drei":">=9","@sparkjsdev/spark":">=2.1.0","@react-three/fiber":">=8"},"peerDependenciesMeta":{"onnxruntime-web":{"optional":true},"@sparkjsdev/spark":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/mujoco-react_10.7.0_1782518100235_0.21636157898103026","host":"s3://npm-registry-packages-npm-production"}},"10.8.0":{"name":"mujoco-react","version":"10.8.0","keywords":["mujoco","react","three","r3f","react-three-fiber","physics","simulation","robotics","wasm"],"license":"Apache-2.0","_id":"mujoco-react@10.8.0","maintainers":[{"name":"primlabs","email":"noah.wardlow.0@gmail.com"}],"homepage":"https://github.com/noah-wardlow/mujoco-react#readme","bugs":{"url":"https://github.com/noah-wardlow/mujoco-react/issues"},"bin":{"mujoco-react":"bin/mujoco-react.mjs","mujoco-react-codegen":"bin/mujoco-react-codegen.mjs"},"dist":{"shasum":"76f5a51dd26533c39697046ec34d5b6c65d2ca8e","tarball":"https://registry.npmjs.org/mujoco-react/-/mujoco-react-10.8.0.tgz","fileCount":95,"integrity":"sha512-Q0TkFtCfqiGa2Ll51s9sZQv38hM4pxZtMfMKvr0p+Gtl8EmovhPVuE8skwJfrWHjb5NnHfbN59kultLFT/rhqg==","signatures":[{"sig":"MEUCICzC41xJNIKFaAmCNj51knK2ud3SeTdEbawf1pdhGq3DAiEA3BeanEVYNhbRYa+HywgYObXTiw0qiySWWy/E4WXDFGs=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/mujoco-react@10.8.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":2169617},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.js"}},"./onnx":{"import":{"types":"./dist/onnx.d.ts","default":"./dist/onnx.js"}},"./vite":{"import":{"types":"./dist/vite.d.ts","default":"./dist/vite.js"}},"./spark":{"import":{"types":"./dist/spark.d.ts","default":"./dist/spark.js"}},"./package.json":"./package.json"},"gitHead":"85715fd6d2450fe3d0a47d222350e05452e8ee0f","scripts":{"dev":"tsup --watch","build":"tsup","typecheck":"tsc --noEmit"},"_npmUser":{"name":"primlabs","email":"noah.wardlow.0@gmail.com"},"repository":{"url":"git+https://github.com/noah-wardlow/mujoco-react.git","type":"git"},"_npmVersion":"11.10.0","description":"Composable React Three Fiber building blocks for MuJoCo WASM simulations","directories":{},"sideEffects":false,"_nodeVersion":"22.23.1","dependencies":{"@mujoco/mujoco":"^3.9.0"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.4.0","react":"^19.2.0","three":"^0.181.0","typescript":"~5.8.2","@types/node":"^25.9.1","@types/react":"^19.0.0","@types/three":"^0.181.0","onnxruntime-web":"^1.27.0","semantic-release":"^25.0.3","@react-three/drei":"^10.7.7","@sparkjsdev/spark":"^2.1.0","@react-three/fiber":"^9.5.0","@semantic-release/git":"^10.0.1","@semantic-release/changelog":"^6.0.3"},"peerDependencies":{"react":">=18","three":">=0.180.0","onnxruntime-web":">=1.20.0","@react-three/drei":">=9","@sparkjsdev/spark":">=2.1.0","@react-three/fiber":">=8"},"peerDependenciesMeta":{"onnxruntime-web":{"optional":true},"@sparkjsdev/spark":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/mujoco-react_10.8.0_1783956431920_0.8525102894992582","host":"s3://npm-registry-packages-npm-production"}},"10.9.0":{"name":"mujoco-react","version":"10.9.0","description":"Composable React Three Fiber building blocks for MuJoCo WASM simulations","type":"module","main":"./dist/index.js","module":"./dist/index.js","types":"./dist/index.d.ts","exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.js"}},"./vite":{"import":{"types":"./dist/vite.d.ts","default":"./dist/vite.js"}},"./spark":{"import":{"types":"./dist/spark.d.ts","default":"./dist/spark.js"}},"./package.json":"./package.json","./onnx":{"import":{"types":"./dist/onnx.d.ts","default":"./dist/onnx.js"}}},"bin":{"mujoco-react":"bin/mujoco-react.mjs","mujoco-react-codegen":"bin/mujoco-react-codegen.mjs"},"sideEffects":false,"keywords":["mujoco","react","three","r3f","react-three-fiber","physics","simulation","robotics","wasm"],"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/noah-wardlow/mujoco-react.git"},"scripts":{"build":"tsup","dev":"tsup --watch","typecheck":"tsc --noEmit"},"peerDependencies":{"@react-three/drei":">=9","@react-three/fiber":">=8","@sparkjsdev/spark":">=2.1.0","react":">=18","three":">=0.180.0","onnxruntime-web":">=1.20.0"},"peerDependenciesMeta":{"@sparkjsdev/spark":{"optional":true},"onnxruntime-web":{"optional":true}},"dependencies":{"@mujoco/mujoco":"^3.9.0"},"devDependencies":{"@react-three/drei":"^10.7.7","@react-three/fiber":"^9.5.0","@semantic-release/changelog":"^6.0.3","@semantic-release/git":"^10.0.1","@sparkjsdev/spark":"^2.1.0","@types/node":"^25.9.1","@types/react":"^19.0.0","@types/three":"^0.181.0","onnxruntime-web":"^1.27.0","react":"^19.2.0","semantic-release":"^25.0.3","three":"^0.181.0","tsup":"^8.4.0","typescript":"~5.8.2"},"gitHead":"6d9ffaf5a30f159d3982aabd97c88ecbb7ff0e5d","_id":"mujoco-react@10.9.0","bugs":{"url":"https://github.com/noah-wardlow/mujoco-react/issues"},"homepage":"https://github.com/noah-wardlow/mujoco-react#readme","_nodeVersion":"22.23.1","_npmVersion":"11.10.0","dist":{"integrity":"sha512-r7KHT8w+vok2hjftnS3MTuVuQNoVzyq1MAUUGLKnn2alU7BoMx72TEDUEpbABfDRJRRHdJxIeAv00QBJRg1S+w==","shasum":"d52d21572b9820ab34997907df0f841963c7efce","tarball":"https://registry.npmjs.org/mujoco-react/-/mujoco-react-10.9.0.tgz","fileCount":95,"unpackedSize":2173269,"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/mujoco-react@10.9.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIAbt634xvXgIrXTm+PDmMEP0dC6QGlde0vPLvEjaiq5XAiEA1B7gzTD+w2YyiGp8iqEISN/tBa9D/y6yFeXGDqwzzPs="}]},"_npmUser":{"name":"primlabs","email":"noah.wardlow.0@gmail.com"},"directories":{},"maintainers":[{"name":"primlabs","email":"noah.wardlow.0@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/mujoco-react_10.9.0_1784477293595_0.7390909308255265"},"_hasShrinkwrap":false}},"time":{"created":"2026-02-09T00:10:03.312Z","modified":"2026-07-19T16:08:14.035Z","0.1.0":"2026-02-09T00:10:03.505Z","0.2.0":"2026-02-09T00:26:26.654Z","0.3.0":"2026-02-17T00:31:34.544Z","1.0.0":"2026-02-22T01:52:24.853Z","2.0.0":"2026-02-22T04:57:37.236Z","3.0.0":"2026-02-22T05:13:12.738Z","4.0.0":"2026-02-22T05:28:51.236Z","5.0.0":"2026-02-22T05:40:44.526Z","6.0.0":"2026-02-22T06:06:55.100Z","6.0.1":"2026-02-22T06:30:22.060Z","7.0.0":"2026-02-22T16:35:49.088Z","7.0.1":"2026-02-22T16:42:26.611Z","8.0.0":"2026-02-22T17:05:25.272Z","8.1.0":"2026-02-22T19:05:46.290Z","8.1.1":"2026-02-24T05:25:39.474Z","8.2.0":"2026-02-24T05:57:15.111Z","8.2.1":"2026-02-24T06:13:20.906Z","8.3.3":"2026-06-05T04:12:06.448Z","8.4.0":"2026-06-05T04:59:53.960Z","8.4.1":"2026-06-05T05:14:00.057Z","8.4.2":"2026-06-05T05:14:57.802Z","8.5.0":"2026-06-05T05:29:52.549Z","8.6.0":"2026-06-05T06:01:45.209Z","8.7.0":"2026-06-05T06:32:51.795Z","8.8.0":"2026-06-06T06:25:14.813Z","8.9.0":"2026-06-06T06:46:27.221Z","8.9.1":"2026-06-06T06:56:38.366Z","8.9.2":"2026-06-06T18:59:48.783Z","8.10.0":"2026-06-14T04:53:55.006Z","8.11.0":"2026-06-14T14:17:44.167Z","9.0.0":"2026-06-14T14:55:41.609Z","9.1.0":"2026-06-14T15:24:40.627Z","9.2.0":"2026-06-14T16:29:46.855Z","9.3.0":"2026-06-15T17:42:18.841Z","9.4.0":"2026-06-17T14:03:14.247Z","9.5.0":"2026-06-19T03:27:13.745Z","9.6.0":"2026-06-21T05:37:03.575Z","10.0.0":"2026-06-21T06:11:42.726Z","10.0.1":"2026-06-21T22:44:04.843Z","10.1.0":"2026-06-22T18:38:58.138Z","10.2.0":"2026-06-22T20:11:31.424Z","10.2.1":"2026-06-22T21:47:23.371Z","10.3.0":"2026-06-23T17:22:02.427Z","10.4.0":"2026-06-24T21:06:14.307Z","10.5.0":"2026-06-26T03:38:48.258Z","10.6.0":"2026-06-26T04:56:01.293Z","10.7.0":"2026-06-26T23:55:00.390Z","10.8.0":"2026-07-13T15:27:12.078Z","10.9.0":"2026-07-19T16:08:13.750Z"},"bugs":{"url":"https://github.com/noah-wardlow/mujoco-react/issues"},"license":"Apache-2.0","homepage":"https://github.com/noah-wardlow/mujoco-react#readme","keywords":["mujoco","react","three","r3f","react-three-fiber","physics","simulation","robotics","wasm"],"repository":{"type":"git","url":"git+https://github.com/noah-wardlow/mujoco-react.git"},"description":"Composable React Three Fiber building blocks for MuJoCo WASM simulations","maintainers":[{"name":"primlabs","email":"noah.wardlow.0@gmail.com"}],"readme":"<p align=\"center\">\n  <img width=\"941\" height=\"598\" alt=\"Screenshot 2026-06-24 at 5 44 13 PM\" src=\"https://github.com/user-attachments/assets/09999f02-c093-473e-aaee-519fe2e4cdd4\" />\n</p>\n\n# mujoco-react\n\nComposable [React Three Fiber](https://docs.pmnd.rs/react-three-fiber) wrapper around the official [@mujoco/mujoco](https://www.npmjs.com/package/@mujoco/mujoco) WASM bindings. Load any MuJoCo model, step physics, render bodies, and write controllers as React components.\n\n[![npm](https://img.shields.io/npm/v/mujoco-react)](https://www.npmjs.com/package/mujoco-react)\n\n**[Demo](https://mujoco-react-example.pages.dev)** | **[Docs](https://dadd.mintlify.app)** | **[npm](https://www.npmjs.com/package/mujoco-react)** | **[Example Source](https://github.com/noah-wardlow/mujoco-react-example)** | **[llms.txt](https://dadd.mintlify.app/llms.txt)**\n\n## Install\n\n```bash\nnpm install mujoco-react three @react-three/fiber @react-three/drei\n```\n\n## Vite Plugin and Type-Safe Names\n\nUse the Vite plugin to generate declaration merging for actuator, sensor, body, joint, site, geom, and keyframe names:\n\n```ts\n// vite.config.ts\nimport { defineConfig } from \"vite\";\nimport { mujocoReact } from \"mujoco-react/vite\";\n\nexport default defineConfig({\n  plugins: [\n    mujocoReact({\n      models: {\n        franka: \"models/panda/scene.xml\",\n      },\n    }),\n  ],\n});\n```\n\nThe plugin writes `src/mujoco-register.gen.ts` during dev and build. Commit that generated file. Vite auto-loads it, so app code imports generated values from `mujoco-react`, not from the generated file:\n\n```ts\n// src/mujoco-register.gen.ts\n// Auto-generated by mujoco-react. Do not edit.\n\nimport { registerModelResources } from \"mujoco-react\";\n\nconst generatedModelResources = {\n  franka: {\n    actuators: { joint1: \"joint1\", joint2: \"joint2\", joint3: \"joint3\", gripper: \"gripper\" },\n    sensors: { force_sensor: \"force_sensor\", torque_sensor: \"torque_sensor\" },\n    bodies: { link0: \"link0\", link1: \"link1\", hand: \"hand\" },\n    joints: { joint1: \"joint1\", joint2: \"joint2\", joint3: \"joint3\" },\n    sites: { tcp: \"tcp\" },\n    geoms: { floor: \"floor\" },\n    keyframes: { home: \"home\" },\n  },\n};\n\nregisterModelResources(generatedModelResources);\n\ndeclare module \"mujoco-react\" {\n  interface Register {\n    models: {\n      franka: {\n        actuators: \"joint1\" | \"joint2\" | \"joint3\" | \"gripper\";\n        sensors: \"force_sensor\" | \"torque_sensor\";\n        bodies: \"link0\" | \"link1\" | \"hand\";\n        joints: \"joint1\" | \"joint2\" | \"joint3\";\n        sites: \"tcp\";\n        geoms: \"floor\";\n        keyframes: \"home\";\n      };\n    };\n    actuators: \"joint1\" | \"joint2\" | \"joint3\" | \"gripper\";\n    sensors: \"force_sensor\" | \"torque_sensor\";\n    bodies: \"link0\" | \"link1\" | \"hand\";\n  }\n}\n```\n\nOnce generated, hooks like `useCtrl`, `useSensor`, `useBodyState`, and API methods like `setCtrl`, `applyForce`, `getSensorData` accept the global union. For model-scoped code, use package exports such as `ModelActuators.franka.gripper`, `ModelSites.franka.tcp`, and `ModelBodies.franka.hand`. Generic type helpers like `ModelActuators<\"franka\">` are still available for reusable library code. When no `Register` augmentation is present, names fall back to `string`.\n\nNon-Vite projects can generate the same file with:\n\n```bash\nnpx mujoco-react codegen franka=models/panda/scene.xml\n```\n\n## Load a Model\n\n```tsx\nimport { MujocoProvider, MujocoCanvas } from \"mujoco-react\";\nimport type { SceneConfig } from \"mujoco-react\";\n\nconst panda: SceneConfig = {\n  src: \"https://raw.githubusercontent.com/google-deepmind/mujoco_menagerie/main/franka_emika_panda/\",\n  sceneFile: \"scene.xml\",\n  homeJoints: [1.707, -1.754, 0.003, -2.702, 0.003, 0.951, 2.490],\n};\n\nexport function App() {\n  return (\n    <MujocoProvider>\n      <MujocoCanvas\n        config={panda}\n        camera={{ position: [2, -1.5, 2.5], up: [0, 0, 1], fov: 45 }}\n        style={{ width: \"100%\", height: \"100vh\" }}\n      />\n    </MujocoProvider>\n  );\n}\n```\n\n## Add Scene Tools\n\n```tsx\nimport { OrbitControls } from \"@react-three/drei\";\nimport { IkGizmo, ModelSites, useIkController } from \"mujoco-react\";\n\nfunction PandaTools() {\n  const ik = useIkController({ siteName: ModelSites.franka.tcp });\n\n  return (\n    <>\n      <OrbitControls makeDefault />\n      {ik && <IkGizmo controller={ik} />}\n      <ambientLight intensity={0.7} />\n      <directionalLight position={[1, 2, 5]} intensity={1.2} />\n    </>\n  );\n}\n```\n\nUse it as a child of `<MujocoCanvas>`:\n\n```tsx\n<MujocoCanvas config={panda}>\n  <PandaTools />\n</MujocoCanvas>\n```\n\n## Gaussian Splat Environments\n\nGaussian splats are visual context; MuJoCo XML remains the source of physics, contacts, and task fixtures. Use visual-only splats when you only need rendered environment context, and add collision proxy metadata when a workflow needs simplified contact geometry.\n\nUse `VisualScenarioEffects` when the same MuJoCo task should render under\ndifferent camera exposure, fog/background, and deterministic material variants:\n\n```tsx\nimport { ScenarioLighting, VisualScenarioEffects } from \"mujoco-react\";\n\n<MujocoCanvas config={sceneConfig}>\n  <VisualScenarioEffects\n    scenario={scenario}\n    materialFilter={({ object }) => object.name.startsWith(\"prop_\")}\n  />\n  <ScenarioLighting preset={scenario.lighting} />\n</MujocoCanvas>;\n```\n\nUse the renderer-agnostic boundary from the main package. If your app stores\nvisual scenarios as data, pass the scenario directly; the component resolves the\nsplat asset and any paired MJCF collision proxy metadata for you. Visual-only\nsplats are valid, and readiness tells you whether a collision proxy is required\nfor your training/physics handoff.\n\n```tsx\nimport { MujocoCanvas, SplatEnvironment, useSplatSceneConfig } from \"mujoco-react\";\n\nconst splat = useSplatSceneConfig({ sceneConfig, scenario });\n\n<MujocoCanvas config={splat.sceneConfig}>\n  {splat.environment ? (\n    <SplatEnvironment environment={splat.environment} renderer=\"custom\">\n      <MySplatRenderer src={splat.environment.splat.src} />\n    </SplatEnvironment>\n  ) : null}\n</MujocoCanvas>;\n```\n\nWhen a splat scenario includes paired MJCF collision proxy metadata, render a\ngeneric wireframe preview from that XML with `SplatCollisionProxyPreview`. The\ncomponent parses MJCF primitives such as planes, boxes, spheres, capsules, and\nmesh placeholders from any fetchable proxy XML; the tabletop example is just one\npossible environment.\n\n```tsx\nimport {\n  SplatCollisionProxyPreview,\n  SplatEnvironment,\n  useSplatCollisionProxyGeoms,\n  useSplatSceneConfig,\n} from \"mujoco-react\";\n\nconst splat = useSplatSceneConfig({ sceneConfig, scenario });\nconst proxy = splat.environment?.collisionProxy;\n\n<SplatEnvironment\n  environment={splat.environment}\n  collisionProxy={\n    proxy ? <SplatCollisionProxyPreview collisionProxy={proxy} /> : undefined\n  }\n/>;\n```\n\nUse `useSplatCollisionProxyGeoms()` when your app wants to inspect or style the\nproxy primitives itself:\n\n```tsx\nconst proxyPreview = useSplatCollisionProxyGeoms({\n  collisionProxy: splat.environment?.collisionProxy,\n});\n\nproxyPreview.geoms.map((geom) => geom.type);\n```\n\nUse `splat.readiness` or `getSplatEnvironmentReadiness(scenario)` to gate\nauthoring and import flows. The status distinguishes disabled scenarios,\nmissing visual assets, missing collision proxies, unsupported renderer formats,\nand ready environments.\n\nUse `createSplatSceneConfig()` when the same scene composition needs to run\noutside React, such as codegen, import validation, backend handoff metadata, or\ntests:\n\n```tsx\nimport { createSplatSceneConfig } from \"mujoco-react\";\n\nconst splat = createSplatSceneConfig({\n  sceneConfig,\n  scenario,\n  renderer: \"spark\",\n});\n```\n\nUse `createVisualScenarioExecutionContext()` or\n`useVisualScenarioExecutionContext()` when recording rollouts or exporting\nLeRobot/HF Jobs handoff artifacts. It resolves the scenario seed, camera\nexposure/noise/blur/jitter, material randomization, splat source, collision\nproxy, and readiness into one serializable object.\n\n```tsx\nimport { createVisualScenarioExecutionContext } from \"mujoco-react\";\n\nconst visualContext = createVisualScenarioExecutionContext({\n  scenario,\n  renderer: \"spark\",\n  variantId,\n});\n\nwriteEpisodeManifest({\n  task,\n  visualExecutionContext: visualContext,\n});\n```\n\nFor MuJoCo + 3DGS composition, derive the optional collision environment from\nthe same splat metadata and pass the resulting config to `<MujocoCanvas>`:\n\n```tsx\nconst sceneConfig = withSplatEnvironment(\n  {\n    src: \"/models/xlerobot/\",\n    sceneFile: \"xlerobot.xml\",\n  },\n  kitchenScenario\n);\n```\n\nFor first-class Spark rendering, install Spark and import the optional adapter:\n\n```bash\nnpm install @sparkjsdev/spark\n```\n\n```tsx\nimport {\n  SparkSplatEnvironment,\n  useSparkSplatEnvironment,\n} from \"mujoco-react/spark\";\n\nfunction Scene() {\n  const splat = useSparkSplatEnvironment({ sceneConfig, scenario });\n\n  return (\n    <MujocoCanvas config={splat.sceneConfig} gl={{ preserveDrawingBuffer: true }}>\n      {splat.environment ? (\n        <SparkSplatEnvironment hideGroundMeshes {...splat.props} />\n      ) : null}\n      <StatusBadge status={splat.lifecycle.status} error={splat.lifecycle.error} />\n    </MujocoCanvas>\n  );\n}\n```\n\n`SparkSplatEnvironment` currently renders `.spz` assets. Use the renderer-agnostic\n`SplatEnvironment` for `.ply`/`.splat` metadata or when wiring a different renderer.\nTune live rendering and snapshots separately with `renderTuning` and\n`captureTuning`:\n\n```tsx\n<SparkSplatEnvironment\n  {...splat.props}\n  renderTuning={{ lodSplatScale: 0.75, minSortIntervalMs: 50 }}\n  captureTuning={{ lodSplatScale: 1.4, lodRenderScale: 0.45, maxWarmupFrames: 6 }}\n/>\n```\n\n## Write Controllers\n\n```tsx\nimport { ModelActuators, useBeforePhysicsStep, useCtrl } from \"mujoco-react\";\n\nfunction MyController() {\n  const shoulder = useCtrl(ModelActuators.franka.actuator1);\n\n  useBeforePhysicsStep(({ data }) => {\n    shoulder.write(Math.sin(data.time));\n  });\n\n  return null;\n}\n```\n\nControllers are just React children that read sensors, write named controls, apply forces, or call the `MujocoSimAPI` at physics-step time.\n\nWith generated resource values, reusable controllers can be scoped to one robot without hand-typing names:\n\n```tsx\nimport { ModelActuators, ModelJoints, ModelSites, useCtrl, useIkController } from \"mujoco-react\";\n\nfunction FrankaTypedControls() {\n  const gripper = useCtrl(ModelActuators.franka.gripper);\n  const ik = useIkController({\n    siteName: ModelSites.franka.tcp,\n    joints: [\n      ModelJoints.franka.joint1,\n      ModelJoints.franka.joint2,\n      ModelJoints.franka.joint3,\n      ModelJoints.franka.joint4,\n      ModelJoints.franka.joint5,\n      ModelJoints.franka.joint6,\n      ModelJoints.franka.joint7,\n    ],\n    actuators: [\n      ModelActuators.franka.actuator1,\n      ModelActuators.franka.actuator2,\n      ModelActuators.franka.actuator3,\n      ModelActuators.franka.actuator4,\n      ModelActuators.franka.actuator5,\n      ModelActuators.franka.actuator6,\n      ModelActuators.franka.actuator7,\n    ],\n  });\n\n  return null;\n}\n```\n\n## Use the Sim API\n\n```tsx\nimport { useMujoco } from \"mujoco-react\";\n\nfunction ResetButton() {\n  const sim = useMujoco();\n  if (!sim.isReady) return null;\n\n  return <button onClick={() => sim.api.reset()}>Reset</button>;\n}\n```\n\n## Map Controls to Joints\n\nUse named controls when a controller should write actuator commands without\nhard-coding `data.ctrl` offsets:\n\n```tsx\nimport {\n  ModelActuators,\n  defineControls,\n  useBeforePhysicsStep,\n  useControls,\n} from \"mujoco-react\";\n\nconst arm = defineControls({\n  shoulder: ModelActuators.so101.shoulder_pan,\n  lift: ModelActuators.so101.shoulder_lift,\n  elbow: ModelActuators.so101.elbow_flex,\n});\n\nfunction PolicyDriver({ action }: { action: number[] }) {\n  const controls = useControls(arm);\n\n  useBeforePhysicsStep(() => {\n    controls.write(action);\n    controls.patch({ elbow: 1.2 });\n  });\n\n  return null;\n}\n```\n\n`defineControls()` preserves the alias keys for `set()`, `patch()`, `get()`,\nand `read()`, while `write()` accepts an ordered vector in the same order as the\nobject. The Vite plugin injects the generated register module automatically, so\napplication code imports generated names from `mujoco-react`, not from\n`src/mujoco-register.gen.ts`.\n\nUse lower-level control groups when a robot's actuator order does not match a\nsimple `qpos[0..n]` layout or you want actuator-name keys directly:\n\n```tsx\nimport { controlGroup, ModelActuators, useControlGroup } from \"mujoco-react\";\n\nconst gripper = controlGroup([ModelActuators.so101.gripper]);\n\nfunction HoldGripper() {\n  const controls = useControlGroup(gripper);\n  controls.set(ModelActuators.so101.gripper, -0.17453);\n  return null;\n}\n```\n\nFor selector-based introspection, `resolveControlGroup()` accepts `{ siteName }`,\n`{ bodyName }`, `{ joints }`, or `{ actuators }`. Selectors can be a name,\nordered name array, regex, or predicate.\n\n## Build Observations\n\nBuild policy-ready observation vectors from common MuJoCo state without hard-coding offsets:\n\n```tsx\nimport { buildObservation, useBeforePhysicsStep } from \"mujoco-react\";\n\nfunction PolicyDriver() {\n  useBeforePhysicsStep(({ model, data }) => {\n    const obs = buildObservation(model, data, {\n      qpos: true,\n      qvel: true,\n      ctrl: true,\n      sensors: [\"imu_gyro\", \"imu_accel\"],\n      sites: [\"tcp\"],\n      projectedGravity: \"torso\",\n    });\n\n    runPolicy(obs.values, obs.layout);\n  });\n\n  return null;\n}\n```\n\nUse `output: \"float64\"` when a downstream model expects double precision. Named resources are skipped when absent, so `obs.layout` is the source of truth for the current model.\n\n## WebSocket Control\n\nStream actuator commands over a WebSocket and send simulation state back. Use a schema validator such as Zod at this boundary because socket messages are untrusted app input (`npm install zod` for this example):\n\n```tsx\nimport { useEffect, useRef } from \"react\";\nimport { z } from \"zod\";\nimport { useMujoco, useBeforePhysicsStep, useAfterPhysicsStep } from \"mujoco-react\";\n\nconst CtrlCommand = z.preprocess((data) => {\n  try {\n    return typeof data === \"string\" ? JSON.parse(data) : data;\n  } catch {\n    return undefined;\n  }\n}, z.object({\n  type: z.literal(\"ctrl_command\"),\n  ctrl: z.array(z.number()),\n}));\n\nfunction useWebSocketControls(url: string) {\n  const wsRef = useRef<WebSocket | null>(null);\n  const latestCtrlRef = useRef<number[] | null>(null);\n\n  useEffect(() => {\n    const ws = new WebSocket(url);\n    wsRef.current = ws;\n\n    ws.onmessage = (evt) => {\n      const command = CtrlCommand.safeParse(evt.data);\n      if (command.success) latestCtrlRef.current = command.data.ctrl;\n    };\n\n    return () => ws.close();\n  }, [url]);\n\n  // Apply incoming actuator controls each physics step.\n  useBeforePhysicsStep(({ model, data }) => {\n    const ctrl = latestCtrlRef.current;\n    if (!ctrl) return;\n    for (let i = 0; i < Math.min(ctrl.length, model.nu); i++) {\n      data.ctrl[i] = ctrl[i];\n    }\n  });\n\n  // Send simulation feedback back after physics.\n  useAfterPhysicsStep(({ data }) => {\n    const ws = wsRef.current;\n    if (!ws || ws.readyState !== WebSocket.OPEN) return;\n\n    ws.send(JSON.stringify({\n      type: \"feedback\",\n      time: data.time,\n      qpos: Array.from(data.qpos),\n      qvel: Array.from(data.qvel),\n      sensordata: Array.from(data.sensordata),\n    }));\n  });\n}\n```\n\nFor reusable controllers with typed config, default merging, and children, use the `createController` factory:\n\n```tsx\nimport {\n  ModelActuators,\n  createController,\n  useBeforePhysicsStep,\n  useCtrl,\n} from \"mujoco-react\";\n\nexport const MyController = createController<{ gain: number }>(\n  { name: \"MyController\", defaultConfig: { gain: 1.0 } },\n  ({ config, children }) => {\n    const shoulder = useCtrl(ModelActuators.franka.actuator1);\n\n    useBeforePhysicsStep(({ data }) => {\n      shoulder.write(config.gain * Math.sin(data.time));\n    });\n\n    return <>{children}</>;\n  },\n);\n\n// <MyController config={{ gain: 2.0 }}>\n//   <Debug showJoints />\n// </MyController>\n```\n\nA `createControllerHook` factory is also available for the hook equivalent — see the [Building Controllers](https://dadd.mintlify.app/guides/building-controllers) guide.\n\n## Architecture\n\n`<MujocoCanvas>` wraps R3F `<Canvas>` and forwards all Canvas props (`camera`, `shadows`, `gl`, etc.). For full control over the Canvas, use `<MujocoPhysics>` inside your own:\n\n```\n<MujocoProvider>                           <MujocoProvider>\n  <MujocoCanvas config={...}>               <Canvas shadows gl={...}>\n    <Scene />                                  <MujocoPhysics config={...}>\n    <MyController />                             <MyController />\n  </MujocoCanvas>                              </MujocoPhysics>\n</MujocoProvider>                              <EffectComposer>...</EffectComposer>\n                                             </Canvas>\n                                           </MujocoProvider>\n```\n\n### Custom IK Solvers\n\nThe built-in `useIkController()` uses Damped Least-Squares. Pass `ikSolveFn` to swap in your own solver (analytical, learned, etc.):\n\n```tsx\nimport { ModelSites } from \"mujoco-react\";\nimport type { IKSolveFn } from \"mujoco-react\";\n\nconst myIK: IKSolveFn = ({ position, currentQ }) => {\n  return myAnalyticalSolver(position, currentQ); // return joint angles or null\n};\n\nconst ik = useIkController({ siteName: ModelSites.franka.tcp, ikSolveFn: myIK });\n```\n\n### `useIkController(config | null)`\n\nHook for interactive end-effector control. Pass `null` to disable IK (safe to call unconditionally):\n\n```tsx\nimport { IkGizmo, ModelSites, useIkController } from \"mujoco-react\";\n\nconst ik = useIkController({ siteName: ModelSites.franka.tcp });\nreturn ik ? <IkGizmo controller={ik} /> : null;\n```\n\n| Config | Type | Default | Description |\n|--------|------|---------|-------------|\n| `siteName` | `string` | **required** | MuJoCo site to track |\n| `joints` | `string \\| string[] \\| RegExp \\| (joint) => boolean` | inferred | Explicit hinge/slide joints for IK |\n| `actuators` | `string \\| string[] \\| RegExp \\| (actuator) => boolean` | inferred | Explicit actuators for IK output |\n| `numJoints` | `number` | legacy only | Contiguous qpos/ctrl count from older examples |\n| `ikSolveFn` | `IKSolveFn` | built-in DLS | Custom solver function |\n| `damping` | `number` | `0.01` | DLS damping |\n| `maxIterations` | `number` | `50` | Max solver iterations |\n\nReturns `IkContextValue | null` with methods like `setIkEnabled`, `moveTarget`, `syncTargetToSite`, `solveIK`, and `getGizmoStats`.\n\nPass the returned value to `<IkGizmo controller={ik} />` or to your own controller as a prop.\n\nBy default the controller infers scalar hinge/slide joints by walking from the site body toward the model root. For robots where the MJCF control layout is not a simple chain, pass explicit names:\n\n```tsx\nimport { ModelActuators, ModelJoints, ModelSites } from \"mujoco-react\";\n\nconst leftArmIk = useIkController({\n  siteName: ModelSites.franka.tcp,\n  joints: [\n    ModelJoints.franka.joint1,\n    ModelJoints.franka.joint2,\n    ModelJoints.franka.joint3,\n    ModelJoints.franka.joint4,\n    ModelJoints.franka.joint5,\n    ModelJoints.franka.joint6,\n    ModelJoints.franka.joint7,\n  ],\n});\n\nconst gripperIk = useIkController({\n  siteName: ModelSites.franka.tcp,\n  actuators: [\n    ModelActuators.franka.actuator1,\n    ModelActuators.franka.actuator2,\n    ModelActuators.franka.actuator3,\n    ModelActuators.franka.actuator4,\n    ModelActuators.franka.actuator5,\n    ModelActuators.franka.actuator6,\n    ModelActuators.franka.actuator7,\n  ],\n});\n```\n\n## Loading Models\n\nThe loader fetches `src + sceneFile`, parses the XML for dependencies (meshes, textures, includes), recursively fetches those too, and writes everything to MuJoCo's in-memory WASM filesystem.\n\n```tsx\n// MuJoCo Menagerie\nconst franka: SceneConfig = {\n  src: \"https://raw.githubusercontent.com/google-deepmind/mujoco_menagerie/main/franka_emika_panda/\",\n  sceneFile: \"scene.xml\",\n};\n\n// Any URL\nconst custom: SceneConfig = {\n  src: \"http://localhost:3000/models/my_model/\",\n  sceneFile: \"model.xml\",\n};\n```\n\n## SceneConfig\n\n```ts\ninterface SceneConfig {\n  src: string;                      // Base URL for model files\n  sceneFile: string;                // Entry XML/URDF file, e.g. \"scene.xml\"\n  files?: File[];                   // Local files for browser upload workflows\n  environmentFiles?: string[];      // Static MJCF environment XMLs merged before compile\n  sceneObjects?: SceneObject[];     // Objects injected into scene XML at load time\n  homeJoints?: number[];            // Initial joint positions\n  xmlPatches?: XmlPatch[];          // Patches applied to XML files during loading\n  onReset?: ({ model, data }) => void;  // Called during reset after mj_resetData\n}\n```\n\nUse `environmentFiles` to compose reusable physics/collision layers with a robot model. For Gaussian splat scenes, keep the `.spz` as a parallel visual layer and point `environmentFiles` at a paired MJCF proxy scene only when contact geometry is needed:\n\n```tsx\nconst kitchenRobot: SceneConfig = {\n  src: \"/models/xlerobot/\",\n  sceneFile: \"xlerobot.xml\",\n  environmentFiles: [\"splats/tabletop/scene.xml\"],\n};\n```\n\n### Local Files and URDF\n\nLoad browser-selected MJCF or URDF files directly. Folder uploads preserve `webkitRelativePath`, and flat uploads fall back to matching referenced mesh/texture assets by basename:\n\n```tsx\nimport { useEffect, useRef } from \"react\";\nimport { useMujoco } from \"mujoco-react\";\n\nfunction ModelUpload() {\n  const sim = useMujoco();\n  const inputRef = useRef<HTMLInputElement>(null);\n\n  useEffect(() => {\n    inputRef.current?.setAttribute(\"webkitdirectory\", \"\");\n  }, []);\n\n  return (\n    <input\n      ref={inputRef}\n      type=\"file\"\n      multiple\n      onChange={(event) => {\n        if (sim.isReady && event.currentTarget.files) {\n          sim.api.loadFromFiles(event.currentTarget.files);\n        }\n      }}\n    />\n  );\n}\n```\n\n### Adding Objects to Any Scene\n\n```tsx\nconst config: SceneConfig = {\n  src: \"https://raw.githubusercontent.com/google-deepmind/mujoco_menagerie/main/franka_emika_panda/\",\n  sceneFile: \"scene.xml\",\n  sceneObjects: [\n    { name: \"ball\", type: \"sphere\", size: [0.03, 0.03, 0.03],\n      position: [0.5, 0, 0.1], rgba: [1, 0, 0, 1], mass: 0.1, freejoint: true },\n    { name: \"platform\", type: \"box\", size: [0.2, 0.2, 0.01],\n      position: [0.4, 0.3, 0], rgba: [0.5, 0.5, 0.5, 1] },\n  ],\n};\n```\n\n### XML Patching\n\n```tsx\nxmlPatches: [{\n  target: \"panda.xml\",\n  replace: [\"name=\\\"actuator8\\\"\", \"name=\\\"gripper\\\"\"],\n  inject: \"<site name=\\\"tcp\\\" pos=\\\"0 0 0.1\\\" size=\\\"0.01\\\"/>\",\n  injectAfter: \"<body name=\\\"hand\\\"\",\n}]\n```\n\n## Components\n\n### `<MujocoProvider>`\n\nLoads the MuJoCo WASM module. Wrap your entire app in this.\n\n| Prop | Type | Description |\n|------|------|-------------|\n| `wasmUrl` | `string?` | Custom WASM URL override |\n| `mtWasmUrl` | `string?` | Custom multi-threaded WASM URL override |\n| `threadedLoader` | `(options?) => Promise<unknown>` | Optional loader imported from `@mujoco/mujoco/mt` |\n| `wasmVariant` | `\"single\" \\| \"threaded\" \\| \"auto\"` | MuJoCo WASM build. Defaults to `\"single\"` |\n| `timeout` | `number` | WASM load timeout in ms |\n| `onError` | `(error: Error) => void` | Called if WASM fails to load |\n\nThe official `@mujoco/mujoco` package also ships a multi-threaded WASM build. Import it only in apps that opt into it:\n\n```tsx\nimport loadMujocoMt from \"@mujoco/mujoco/mt\";\nimport mtWasmUrl from \"@mujoco/mujoco/mt/mujoco.wasm?url\";\n\n<MujocoProvider\n  wasmVariant=\"auto\"\n  threadedLoader={loadMujocoMt}\n  mtWasmUrl={mtWasmUrl}\n>\n  <App />\n</MujocoProvider>\n```\n\n`\"auto\"` uses the threaded build only when `threadedLoader` and `mtWasmUrl` are provided and `globalThis.crossOriginIsolated` is true. Forced `\"threaded\"` mode requires `threadedLoader`, `mtWasmUrl`, `Cross-Origin-Opener-Policy: same-origin` and `Cross-Origin-Embedder-Policy: require-corp`.\n\n### `<MujocoCanvas>`\n\nThin wrapper around R3F `<Canvas>`. Accepts all R3F Canvas props plus:\n\n| Prop | Type | Description |\n|------|------|-------------|\n| `config` | `SceneConfig` | **Required.** Scene/robot configuration |\n| `onReady` | `({ api }) => void` | Fires when model is loaded |\n| `onError` | `(error: Error) => void` | Fires on scene load failure |\n| `onStep` | `({ time, model, data }) => void` | Called each physics step |\n| `onSelection` | `({ bodyId, name }) => void` | Called on double-click |\n| `gravity` | `[number, number, number]` | Override model gravity |\n| `timestep` | `number` | Override model.opt.timestep |\n| `substeps` | `number` | mj_step calls per frame |\n| `paused` | `boolean` | Declarative pause |\n| `speed` | `number` | Simulation speed multiplier |\n| `renderOptions` | `MujocoRenderOptions` | Optional render-time geometry settings such as `meshNormalSmoothing` |\n| `hiddenBodies` | `readonly string[]` | Names of model bodies whose meshes are skipped at build time. The bodies still simulate (indices unchanged); only rendering is skipped. Reapplied on every rebuild, so toggling names can't be lost to a scene rebuild |\n\n### `<MujocoPhysics>`\n\nPhysics provider for use inside your own R3F `<Canvas>`. Same physics props as `<MujocoCanvas>` without the Canvas wrapper. Accepts a `ref` for the `MujocoSimAPI`.\n\n```tsx\n<MujocoProvider>\n  <Canvas shadows camera={{ position: [2, 2, 2] }}>\n    <MujocoPhysics ref={apiRef} config={config} paused={paused}>\n      <MyController />\n    </MujocoPhysics>\n    <OrbitControls />\n  </Canvas>\n</MujocoProvider>\n```\n\n| Prop | Type | Description |\n|------|------|-------------|\n| `config` | `SceneConfig` | **Required.** Scene/robot configuration |\n| `onReady` | `({ api }) => void` | Fires when model is loaded |\n| `onError` | `(error: Error) => void` | Fires on scene load failure |\n| `onStep` | `({ time, model, data }) => void` | Called each physics step |\n| `onSelection` | `({ bodyId, name }) => void` | Called on double-click |\n| `gravity` | `[number, number, number]` | Override model gravity |\n| `timestep` | `number` | Override model.opt.timestep |\n| `substeps` | `number` | mj_step calls per frame |\n| `paused` | `boolean` | Declarative pause |\n| `speed` | `number` | Simulation speed multiplier |\n\n### `<Body />`\n\nDeclaratively add physics bodies to the simulation as JSX. Bodies are injected into the MJCF XML before model compilation.\n\n```tsx\n<Body name=\"cube\" type=\"box\" size={[0.05, 0.05, 0.05]}\n      position={[0.5, 0, 0.05]} rgba={[1, 0, 0, 1]}\n      mass={0.1} freejoint />\n\n// With custom Three.js visuals\n<Body name=\"ball\" type=\"sphere\" size={[0.03, 0, 0]}\n      position={[0, 0.3, 0.1]} mass={0.5} freejoint>\n  <mesh>\n    <sphereGeometry args={[0.03]} />\n    <meshPhysicalMaterial color=\"gold\" metalness={0.8} />\n  </mesh>\n</Body>\n```\n\n| Prop | Type | Default | Description |\n|------|------|---------|-------------|\n| `name` | `string` | **required** | Unique body name |\n| `type` | `'box' \\| 'sphere' \\| 'cylinder'` | **required** | Geom type |\n| `size` | `[number, number, number]` | **required** | Geom size |\n| `position` | `[number, number, number]` | `[0,0,0]` | Initial position |\n| `rgba` | `[number, number, number, number]` | `[0.5,0.5,0.5,1]` | Color (ignored with children) |\n| `mass` | `number?` | -- | Body mass in kg |\n| `freejoint` | `boolean?` | -- | Add freejoint for free movement |\n| `friction` | `string?` | -- | MuJoCo friction params |\n| `condim` | `number?` | -- | Contact dimensionality (4-6 for grasping) |\n| `children` | `ReactNode?` | -- | Custom Three.js visuals |\n\n### `<IkGizmo />`\n\ndrei PivotControls gizmo that tracks a MuJoCo site and drives IK on drag. Requires a `controller` from `useIkController()`.\n\n| Prop | Type | Default | Description |\n|------|------|---------|-------------|\n| `controller` | `IkContextValue` | **required** | Controller from `useIkController()` |\n| `siteName` | `string?` | controller's site | MuJoCo site to track |\n| `scale` | `number?` | `0.18` | Gizmo handle scale |\n| `onDrag` | `({ position, quaternion }) => void` | -- | Custom drag handler (disables auto-IK) |\n\n### `<DragInteraction />`\n\nClick-drag to apply spring forces to bodies. Raycasts to find bodies, applies `F = (mouseWorld - grabWorld) * body_mass * stiffness` via `mj_applyFT`.\n\n### R3F Group Props\n\nAll visual components (`DragInteraction`, `ContactMarkers`, `Debug`, `TendonRenderer`, `FlexRenderer`) accept standard R3F group props like `position`, `rotation`, `scale`, `visible`.\n\n```tsx\n<ContactMarkers visible={showContacts} />\n<Debug showJoints scale={0.5} />\n```\n\n### `<ContactMarkers />`\n\nInstancedMesh showing MuJoCo contact points for debugging.\n\n| Prop | Type | Default | Description |\n|------|------|---------|-------------|\n| `maxContacts` | `number?` | `100` | Max contacts to display |\n| `radius` | `number?` | `0.005` | Marker sphere radius |\n| `color` | `string?` | `\"#4f46e5\"` | Marker color |\n| `visible` | `boolean?` | `true` | Toggle visibility |\n\n### `<SceneLights />`\n\nAuto-creates Three.js lights from MJCF `<light>` elements. Also available as `useSceneLights(intensity?)` hook.\n\n### `<Debug />`\n\nVisualization overlays:\n\n| Prop | Type | Default | Description |\n|------|------|---------|-------------|\n| `showGeoms` | `boolean?` | `false` | Wireframe collision geoms |\n| `showSites` | `boolean?` | `false` | Site markers |\n| `showJoints` | `boolean?` | `false` | Joint axes |\n| `showContacts` | `boolean?` | `false` | Contact force vectors |\n| `showCameras` | `boolean?` | `false` | MuJoCo camera positions, frustums, and forward rays |\n| `virtualCameras` | `DebugVirtualCamera[]?` | `[]` | Explicit virtual policy/offscreen render camera poses to draw alongside MuJoCo cameras |\n| `showCOM` | `boolean?` | `false` | Center of mass markers |\n| `showInertia` | `boolean?` | `false` | Inertia ellipsoids |\n| `showTendons` | `boolean?` | `false` | Tendon paths |\n| `geomColor` | `string?` | `\"#00ff00\"` | Color for wireframe geoms |\n| `siteColor` | `string?` | `\"#ff00ff\"` | Color for site markers |\n| `contactColor` | `string?` | `\"#ff4444\"` | Color for contact force arrows |\n| `comColor` | `string?` | `\"#ff0000\"` | Color for COM markers |\n\nCamera debug overlays use the live MuJoCo `cam_xpos` / `cam_xmat` frame, so the frustum matches mounted camera captures and follows parent body motion. Use `virtualCameras` for synthetic fixed policy/offscreen render viewpoints that are not declared as MJCF `<camera>` elements. Debug camera overlays are excluded from camera captures.\n\n### `<TendonRenderer />`\n\nRenders tendons as tube geometry from wrap paths.\n\n### `<FlexRenderer />`\n\nRenders deformable flex bodies from `flexvert_xpos`.\n\n### `<InstancedGeomRenderer />`\n\nOpt-in renderer for repeated compatible geoms. It batches matching geom shape/material signatures into Three.js `InstancedMesh` objects and syncs instance transforms from `data.geom_xpos` / `data.geom_xmat`.\n\n### `<ContactListener />`\n\nComponent wrapper for contact events:\n\n```tsx\n<ContactListener\n  body=\"block_1\"\n  onContactEnter={(info) => console.log(\"contact!\", info)}\n  onContactExit={(info) => console.log(\"released\", info)}\n/>\n```\n\n### `<TrajectoryPlayer />`\n\nPlays back recorded qpos trajectories with scrubbing.\n\n## Hooks\n\n### `useMujoco()`\n\nAccess the simulation API (must be inside `<MujocoCanvas>` or `<MujocoPhysics>`). Narrow on `isReady`, `isPending`, or `isError`:\n\n```tsx\nconst sim = useMujoco();\nif (sim.isReady) {\n  sim.api.reset(); // fully typed\n}\n```\n\n### `useMujocoWasm()`\n\nAccess the raw WASM module lifecycle from any child of `<MujocoProvider>`. Most users won't need this — `useMujoco()` and hooks like `useBeforePhysicsStep` handle the model/data lifecycle for you.\n\n```tsx\nimport { useMujocoWasm } from \"mujoco-react\";\n\nconst { mujoco, status } = useMujocoWasm();\n\nif (mujoco) {\n  const model = mujoco.MjModel.from_xml_path(\"/path/to/scene.xml\");\n  const data = new mujoco.MjData(model);\n  mujoco.mj_step(model, data);\n  console.log(data.qpos);  // joint positions after one step\n}\n```\n\n### `useBeforePhysicsStep(callback)`\n\nRun logic **before** `mj_step` each frame. Write to `data.ctrl`, apply forces, drive automation.\n\n```tsx\nimport { ModelActuators, useBeforePhysicsStep, useCtrl } from \"mujoco-react\";\n\nconst shoulder = useCtrl(ModelActuators.franka.actuator1);\n\nuseBeforePhysicsStep(({ data }) => {\n  shoulder.write(Math.sin(data.time));\n});\n```\n\n### `useAfterPhysicsStep(callback)`\n\nRun logic **after** `mj_step` each frame. Read results, compute rewards, log telemetry.\n\n### `useIkController(config | null)`\n\nSet up IK control for a MuJoCo site. Pass `null` to disable. Returns `IkContextValue | null`.\n\n### `useCameraAnimation()`\n\nStandalone camera animation hook:\n\n```tsx\nconst { getCameraState, moveCameraTo } = useCameraAnimation();\n\n// Animate camera over 1 second\nawait moveCameraTo(\n  new THREE.Vector3(3, 0, 2),\n  new THREE.Vector3(0, 0, 0.5),\n  1000\n);\n```\n\n### `useSensor(name)` / `useSensors()`\n\nRead sensor values by name. Returns a `SensorHandle` with `read()`, `dim`, and `name`:\n\n```tsx\nimport { ModelSensors, useSensor } from \"mujoco-react\";\n\nconst imu = useSensor(ModelSensors.g1[\"imu-torso-angular-velocity\"]);\n// imu.read() -> Float64Array, imu.dim -> number\n```\n\n### `useBodyState(name)`\n\nPosition, quaternion, linear/angular velocity of a body (ref-based):\n\n```tsx\nconst { position, quaternion, linearVelocity, angularVelocity } = useBodyState(\"block_1\");\n```\n\n### `useJointState(name)`\n\nJoint position and velocity:\n\n```tsx\nconst { position, velocity } = useJointState(\"joint1\");\n```\n\n### `useCtrl(name)`\n\nRead/write actuator control by name. Returns a `CtrlHandle` with `read()`, `write()`, `name`, and `range`:\n\n```tsx\nimport { ModelActuators, useCtrl } from \"mujoco-react\";\n\nconst gripper = useCtrl(ModelActuators.franka.gripper);\n// gripper.read() -> number, gripper.write(0.04), gripper.range -> [min, max]\n```\n\n### `useContacts(bodyName?)` / `useContactEvents(bodyName, handlers)`\n\nQuery contacts or subscribe to enter/exit events:\n\n```tsx\nuseContactEvents(\"block_1\", {\n  onEnter: (info) => console.log(\"contact!\", info),\n  onExit: (info) => console.log(\"released\", info),\n});\n```\n\n### `useKeyboardTeleop(config)`\n\nMap keyboard keys to actuators:\n\n```tsx\nimport { ModelActuators, useKeyboardTeleop } from \"mujoco-react\";\n\nuseKeyboardTeleop({\n  bindings: {\n    \"w\": { actuator: \"forward\", delta: 0.1 },\n    \"s\": { actuator: \"forward\", delta: -0.1 },\n    \"v\": { actuator: ModelActuators.franka.gripper, toggle: [0, 0.04] },\n  },\n});\n```\n\n### `useGamepad(config)`\n\nMap gamepad axes/buttons to actuators:\n\n```tsx\nuseGamepad({\n  axes: { 0: \"joint1\", 1: \"joint2\" },\n  buttons: { 0: \"gripper\" },\n  deadzone: 0.1,\n});\n```\n\n### `usePolicy(config)`\n\nFramework-agnostic decimation loop for RL policies:\n\n```tsx\nconst obs = useObservation({ qpos: true, qvel: true, projectedGravity: \"torso\" });\n\nconst policy = usePolicy({\n  frequency: 50,\n  onObservation: () => obs.readValues(),\n  infer: ({ observation }) => policySession.run(observation),\n  onAction: ({ action, data }) => applyAction(action, data),\n});\n```\n\n### `buildObservation(model, data, config)` / `useObservation(config)`\n\nBuild a flat `Float32Array` or `Float64Array` plus a layout map from qpos, qvel, ctrl, actuator activations, sensordata, named sensors, named site positions, and projected gravity.\n\n### `useTrajectoryRecorder(config)` / `useTrajectoryPlayer(trajectory, config)`\n\nRecord and play back simulation trajectories:\n\n```tsx\n// Record\nconst recorder = useTrajectoryRecorder({ fields: [\"qpos\", \"ctrl\"] });\nrecorder.start();\n// ... interact with simulation ...\nrecorder.stop();\n\n// Play back recorded frames directly (no conversion needed)\nconst player = useTrajectoryPlayer(recorder.frames, {\n  fps: 30,\n  speed: 1.0,        // 0.5x, 1x, 2x, etc.\n  loop: true,\n  mode: \"kinematic\",  // or \"physics\" to replay ctrl through the sim\n  onComplete: () => console.log(\"done\"),\n});\n// player.play(), player.pause(), player.seek(42), player.setSpeed(2)\n// player.state → \"idle\" | \"playing\" | \"paused\" | \"completed\"\n// player.progress → 0-1\n```\n\n### `useVideoRecorder(config)`\n\nRecord the canvas as video:\n\n```tsx\nconst video = useVideoRecorder({ fps: 30, mimeType: \"video/webm\" });\n// video.start(), video.stop() -> returns Blob\n```\n\n### Camera Frames, Streams, and Tensors\n\nA camera pose — the viewer camera, a MuJoCo `cameraName`/`siteName`/`bodyName`, or\nan explicit `position`+`lookAt` — can be turned into three outputs: a **snapshot**\n(PNG/JPEG), a **live on-screen stream**, or a **policy tensor**.\n\n**Snapshots.** `captureFrame()`/`captureFrameBlob()` grab the live canvas (or use\n`useFrameCapture()` / the standalone `captureFrame()` when you own the canvas).\n`captureCameraFrame()`/`captureCameraFrameBlob()` render a chosen camera offscreen\nat a stable resolution without moving the viewport; pass `cameraName`/`siteName`/\n`bodyName` for true mounted frames (`source.kind` lets dataset pipelines reject\nfallback/synthetic poses). Set `mujocoCameraCompatibility` to inherit a MJCF\ncamera's `resolution`, `fovy`, clipping, and calibrated intrinsics; use\n`visualOverrides`/`renderIsolation` for canonical training captures.\n\n```tsx\nconst frame = await apiRef.current?.captureCameraFrame({\n  cameraName: \"front_camera\",\n  width: 640,\n  type: \"image/jpeg\",\n  mujocoCameraCompatibility: true,\n});\n```\n\n**Live streams.** `useCameraStream(canvasRef, options)` renders a camera into a\nDOM `<canvas>` every frame (offscreen render → blit: no PNG round-trip, no render-\nloop takeover, splat scenes stream safely). Call it inside `<MujocoCanvas>`; the\ncanvas can live anywhere in your DOM:\n\n```tsx\nfunction WristStream({ canvasRef }) {\n  useCameraStream(canvasRef, { cameraName: \"wrist_cam\", width: 256, height: 192 });\n  return null;\n}\n```\n\nFor a transparent picture-in-picture overlay, use `<CameraView>` (or\n`useCameraViewport` to track your own element). It scissors into the main canvas —\ncheaper, but it takes over the render loop while mounted (incompatible with\npostprocessing, occluded by opaque DOM), so prefer `useCameraStream` for panel\ntiles:\n\n```tsx\n<MujocoCanvas config={config}>\n  <CameraView cameraName=\"wrist_cam\" style={{ right: 16, bottom: 16, width: 240, height: 180 }} />\n</MujocoCanvas>\n```\n\n**Policy tensors.** For in-browser inference, capture straight into a\n`Float32Array` — no canvas, no PNG. `usePolicyCameraTensors` keeps one reusable\nsession per camera and re-aims it to the live pose each step:\n\n```tsx\nconst cams = usePolicyCameraTensors({\n  streams: [\n    { key: \"wrist\", cameraName: \"wrist_cam\", width: 96, height: 96, layout: \"CHW\" },\n    { key: \"front\", cameraName: \"front\",     width: 96, height: 96, layout: \"CHW\" },\n  ],\n});\n\nuseAfterPhysicsStep(() => {\n  const { tensors } = cams.capture();\n  const wrist = new ort.Tensor(\"float32\", tensors.wrist.data, [1, ...tensors.wrist.shape]);\n});\n```\n\nUse `usePolicyCameraTensorsFromMountedStreams` for dataset-name resolution,\n`captureCameraFrameTensor()` for one-offs, or `createCameraFrameCaptureSession()`\n+ `pixelsToPolicyImageTensor()` for lower-level control. The optional\n`mujoco-react/onnx` entry point wraps ONNX Runtime Web: `createOnnxPolicySession()`\nloads a manifest plus model, and `onnxTensorToPolicyActionChunk()` decodes the\noutput into action chunks.\n\n**Dataset recording.** `recordMountedCameraFrameSequence()` steps a rollout and\ncaptures synchronized per-camera frames, resolving LeRobot-style task camera keys\nto MuJoCo cameras/sites/bodies. It requires every requested `cameraKey` by default\n(set `requireAll: false` for exploratory tooling) and returns a plan, readiness,\nand per-camera source provenance:\n\n```tsx\nconst sequence = await recordMountedCameraFrameSequence(api, {\n  cameraKeys: [\"head\", \"left_wrist\", \"right_wrist\"],\n  aliases: {\n    head: [{ siteName: \"head_camera_rgb_optical_frame\" }],\n    left_wrist: [{ siteName: \"left_wrist_camera_optical_frame\" }],\n    right_wrist: [{ siteName: \"right_wrist_camera_optical_frame\" }],\n  },\n  defaults: { width: 640, height: 480, type: \"image/png\", fov: 45 },\n  frames: 16,\n  onFrame: ({ frameIndex, cameras }) => queueLeRobotImages(frameIndex, cameras),\n});\n\nconst manifest = createMountedCameraFrameSequenceManifest(sequence); // dataset-facing manifest\n```\n\nInside `<MujocoCanvas>`, `useMountedCameraSequenceRecorder()` exposes the same\nplanning/recording with React status and a `checkReadiness()` preflight gate.\n`resolveMountedCameraFrameSource()` maps a single dataset feature name to a MuJoCo\nsource (aliases first, then camera > site > body, then normalized prefix/suffix\nmatches) when you need the selector before recording. The lower-level\n`recordCameraSequence()` / `useCameraSequenceRecorder()` take explicit camera\nconfigs.\n\n### `useCtrlNoise(config)`\n\nApply Gaussian noise to controls for robustness testing:\n\n```tsx\nuseCtrlNoise({ rate: 0.01, std: 0.05 });\n```\n\n### `useGravityCompensation(enabled?)`\n\nApplies `qfrc_bias` to `qfrc_applied` so joints hold position against gravity.\n\n### `useActuators()`\n\nReturns actuator metadata for building control UIs.\n\n### `useSitePosition(siteName)`\n\nRef-based site position/quaternion tracking.\n\n### `useBodyMeshes(bodyId)`\n\nReturns the Three.js meshes belonging to a MuJoCo body. Use for custom selection visuals, outlines, postprocessing, or any per-body mesh manipulation:\n\n```tsx\nconst meshes = useBodyMeshes(selectedBodyId);\n\n// Use with drei Outline, or manipulate materials directly\n```\n\n### `useSelectionHighlight(bodyId, options?)`\n\nConvenience wrapper around `useBodyMeshes` that applies an emissive highlight:\n\n```tsx\nuseSelectionHighlight(selectedBodyId, { color: \"#00ff00\", emissiveIntensity: 0.5 });\n```\n\n### `useSceneLights(intensity?)`\n\nHook form of `<SceneLights>`. Create Three.js lights from MJCF definitions imperatively:\n\n```tsx\nuseSceneLights(1.5);\n```\n\n## MujocoSimAPI\n\nThe full API object available via `ref` or `useMujoco()` (when `isReady`):\n\n### Simulation Control\n\n| Method | Description |\n|--------|-------------|\n| `reset()` | Reset sim, re-apply home joints |\n| `setPaused(paused)` | Set pause state |\n| `togglePause()` | Toggle pause, returns new state |\n| `setSpeed(multiplier)` | Set simulation speed |\n| `step(n?)` | Advance exactly n steps while paused |\n| `getTime()` | Current simulation time |\n| `getTimestep()` | Current timestep |\n\n### State Management\n\n| Method | Description |\n|--------|-------------|\n| `saveState()` | Snapshot qpos, qvel, ctrl, time, act |\n| `restoreState(snapshot)` | Restore from snapshot |\n| `setQpos(values)` / `getQpos()` | Direct qpos access |\n| `setQvel(values)` / `getQvel()` | Direct qvel access |\n| `setCtrl(nameOrValues, value?)` | Set control by name or batch |\n| `getCtrl()` | Get all control values |\n| `getControlMap()` | Map directly actuated scalar joints to qpos/dof/ctrl addresses |\n| `getActuatedJoints()` | List scalar hinge/slide joints with matching actuators |\n| `resolveControlGroup(selector)` | Resolve qpos/ctrl mapping from a site, body, joint selector, or actuator selector |\n| `buildObservation(model, data, config)` | Build policy-ready observation vectors with layout metadata |\n| `applyKeyframe(nameOrIndex)` | Apply a keyframe |\n| `getKeyframeNames()` / `getKeyframeCount()` | Keyframe introspection |\n\n### Forces\n\n| Method | Description |\n|--------|-------------|\n| `applyForce(bodyName, force, point?)` | Apply force via `mj_applyFT` |\n| `applyTorque(bodyName, torque)` | Apply torque via `mj_applyFT` |\n| `setExternalForce(bodyName, force, torque)` | Write to `xfrc_applied` |\n| `applyGeneralizedForce(values)` | Write to `qfrc_applied` |\n\n### Model Introspection\n\n| Method | Description |\n|--------|-------------|\n| `getBodies()` | All bodies with id, name, mass, parentId |\n| `getJoints()` | All joints with id, name, type, range, bodyId |\n| `getGeoms()` | All geoms with id, name, type, size, bodyId |\n| `getSites()` | All sites with id, name, bodyId |\n| `getActuators()` | All actuators with id, name, range |\n| `getSensors()` | All sensors with id, name, type, dim |\n| `getSensorData(name)` | Read sensor value by name |\n| `getContacts()` | All active contacts |\n| `getModelOption()` | Timestep, gravity, integrator |\n\n### Model Mutation\n\n| Method | Description |\n|--------|-------------|\n| `setGravity(g)` | Set gravity vector |\n| `setTimestep(dt)` | Set timestep |\n| `addBody(body)` | Add a `SceneObject` and recompile the scene |\n| `removeBody(name)` | Remove a generated `SceneObject` and recompile |\n| `recompile(patches?)` | Recompile current scene, optionally appending XML patches |\n| `setBodyMass(name, mass)` | Domain randomization |\n| `setGeomFriction(name, friction)` | Domain randomization |\n| `setGeomSize(name, size)` | Domain randomization |\n\n### Spatial Queries\n\n| Method | Description |\n|--------|-------------|\n| `raycast(origin, direction, maxDist?)` | Physics raycast via `mj_ray` |\n| `project2DTo3D(x, y, camPos, lookAt)` | Screen-to-world raycast (returns bodyId + geomId) |\n| `getCanvas()` | Return the underlying R3F canvas element |\n| `getCanvasSnapshot(w?, h?, mime?)` | Base64 screenshot |\n| `captureFrame(options?)` | Capture the canvas as a data URL |\n| `captureFrameBlob(options?)` | Capture the canvas as a Blob |\n\n### Scene Management\n\n| Method | Description |\n|--------|-------------|\n| `loadScene(newConfig)` | Runtime model swap |\n| `loadFromFiles(files, options?)` | Load MJCF/URDF from a browser `FileList` |\n\n## Guides\n\n### Building Controllers\n\nSee [Building Controllers](https://dadd.mintlify.app/guides/building-controllers) for full patterns including config-driven controllers, IK gizmo coexistence, multi-arm support, and the `createControllerHook`/`createController` factories.\n\n### Contact Parameters\n\nObjects that need stable contact (grasping, stacking, etc.) require tuned MuJoCo solver parameters — `friction`, `solref`, `solimp`, and `condim`. See [Contact Parameters](https://dadd.mintlify.app/guides/graspable-objects) for details.\n\n### Click-to-Select\n\nCombine R3F raycasting with `useSelectionHighlight` for body selection:\n\n```tsx\nfunction ClickSelectOverlay() {\n  const selectedBodyId = useClickSelect(); // your raycasting hook\n  useSelectionHighlight(selectedBodyId);\n  return null;\n}\n```\n\nSee [Click-to-Select](https://dadd.mintlify.app/guides/click-to-select) for the full implementation.\n\n## useFrame Priority\n\n| Priority | Owner | Purpose |\n|----------|-------|---------|\n| -1 | MujocoSimProvider | beforeStep, mj_step, afterStep |\n| 0 (default) | SceneRenderer (internal), useIkController, your code | Body mesh sync, IK, rendering |\n\n## Roadmap\n\nFeatures planned but not yet implemented:\n\n| Feature | Priority | Description |\n|---------|----------|-------------|\n| **Web Worker physics** | P2 | Run `mj_step` off main thread via SharedArrayBuffer |\n\n### WASM Limitations (@mujoco/mujoco)\n\nThese MuJoCo features are not yet exposed in the WASM binding:\n\n- `flex_faceadr` / `flex_facenum` / `flex_face` -- FlexRenderer renders vertices without face indices\n- `ten_rgba` / `ten_width` -- TendonRenderer uses default color/width\n\n## License\n\nApache-2.0\n","readmeFilename":"README.md"}