{"_id":"@dandre3000/three-canvas-sandbox","_rev":"2-c4253f67e9596d9774a04dab4824ca0e","name":"@dandre3000/three-canvas-sandbox","dist-tags":{"latest":"0.2.0"},"versions":{"0.1.0":{"name":"@dandre3000/three-canvas-sandbox","version":"0.1.0","keywords":["three","canvas","renderer","worker","sandbox","thread","browser"],"author":{"url":"https://github.com/dandre3000","name":"DeAundre Payne","email":"apps.fondling796@passinbox.com"},"license":"MIT","_id":"@dandre3000/three-canvas-sandbox@0.1.0","maintainers":[{"name":"dandre3000","email":"apps.fondling796@passinbox.com"}],"homepage":"https://github.com/dandre3000/sandbox#readme","bugs":{"url":"https://github.com/dandre3000/sandbox/issues"},"dist":{"shasum":"dddd14a8acfd434f4ddfb619439bfdc1d904b1c7","tarball":"https://registry.npmjs.org/@dandre3000/three-canvas-sandbox/-/three-canvas-sandbox-0.1.0.tgz","fileCount":6,"integrity":"sha512-ysLVlJZUR0LkslkyNR+SHJd2aOQkodnvqYMjo+TnVzoFYiwPkJugHfl50yho/ClDJ3uq2Sa6b7tDcQvcvNl0ig==","signatures":[{"sig":"MEUCIGi0IcxLecOlQg3S7vElJKV14KJ8+3a4CB+hlQwa4Ih5AiEAhIvrOQvcxeq4TnySVqL6oUj4fiaRnsqQah3Zkop6PcA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":8765},"type":"module","exports":{"types":"./build/index.d.ts","import":"./build/index.js"},"gitHead":"8cac65d3c9ccfea78f7e7d3a32e3437a7322a704","scripts":{"build":"bun run types && bun pre-transpile.js && bun run transpile-index && bun run transpile-worker && bun post-transpile.js","types":"tsc --project tsconfig.build.json","prepack":"bun run build","transpile-index":"bun build ./src/index.ts --external @dandre3000/environment --external @dandre3000/sandbox --outdir ./build --minify-whitespace --minify-syntax","transpile-worker":"bun build ./src/worker.ts --external @dandre3000/sandbox --external three --outdir ./build --minify-whitespace --minify-syntax"},"_npmUser":{"name":"dandre3000","email":"apps.fondling796@passinbox.com"},"repository":{"url":"git+https://github.com/dandre3000/sandbox.git","type":"git"},"_npmVersion":"11.0.0","description":"Three.js OffscreenCanvas renderer in a worker sandbox.","directories":{},"_nodeVersion":"23.5.0","dependencies":{"three":"^0.184.0","@dandre3000/sandbox":"^0.2.0","@dandre3000/environment":"^0.2.2"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^6.0.3","@types/three":"^0.184.1"},"_npmOperationalInternal":{"tmp":"tmp/three-canvas-sandbox_0.1.0_1780110311512_0.9107815348694739","host":"s3://npm-registry-packages-npm-production"}},"0.2.0":{"name":"@dandre3000/three-canvas-sandbox","version":"0.2.0","license":"MIT","author":{"name":"DeAundre Payne","email":"apps.fondling796@passinbox.com","url":"https://github.com/dandre3000"},"repository":{"type":"git","url":"git+https://github.com/dandre3000/three-canvas-sandbox.git"},"description":"Three.js OffscreenCanvas renderer in a worker sandbox.","keywords":["three","canvas","renderer","worker","sandbox","thread","browser"],"exports":{"types":"./build/index.d.ts","import":"./build/index.js"},"dependencies":{"@dandre3000/environment":"^0.2.2","@dandre3000/sandbox":"^0.2.0","three":"^0.184.0"},"devDependencies":{"@types/three":"^0.184.1","typescript":"^6.0.3"},"scripts":{"types":"tsc --project tsconfig.build.json","transpile-index":"bun build ./src/index.ts --external @dandre3000/environment --external @dandre3000/sandbox --outdir ./build --minify-whitespace --minify-syntax","transpile-worker":"bun build ./src/worker.ts --external @dandre3000/sandbox --external three --outdir ./build --minify-whitespace --minify-syntax","build":"bun run types && bun pre-transpile.js && bun run transpile-index && bun run transpile-worker && bun post-transpile.js","prepack":"bun run build"},"type":"module","_id":"@dandre3000/three-canvas-sandbox@0.2.0","gitHead":"cb8a6310f2407999998e6cec145bf0b5a639a28b","bugs":{"url":"https://github.com/dandre3000/three-canvas-sandbox/issues"},"homepage":"https://github.com/dandre3000/three-canvas-sandbox#readme","_nodeVersion":"23.5.0","_npmVersion":"11.0.0","dist":{"integrity":"sha512-jORnwB/iLX4ZRZu2lQqGtkA0O0U6xtirksLEQ6u11+wm02NaaNlcDsc6z2OZUB80PzhTAyOzYmi/Mn4OPshsSA==","shasum":"abed1020388b01b0283388813a49ab1bc97d8e63","tarball":"https://registry.npmjs.org/@dandre3000/three-canvas-sandbox/-/three-canvas-sandbox-0.2.0.tgz","fileCount":6,"unpackedSize":9694,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQDQrR9DjYzCmL/2cx0v6wV7g56nzE/KHJwA1JGOwcbV5wIhAJsbmYnnOdiwzlhwf5OtWS3UV97lgyZgx+W3ZGZr4J0Q"}]},"_npmUser":{"name":"dandre3000","email":"apps.fondling796@passinbox.com"},"directories":{},"maintainers":[{"name":"dandre3000","email":"apps.fondling796@passinbox.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/three-canvas-sandbox_0.2.0_1780278555298_0.19895872413021243"},"_hasShrinkwrap":false}},"time":{"created":"2026-05-30T03:05:11.358Z","modified":"2026-06-01T01:49:15.537Z","0.1.0":"2026-05-30T03:05:11.667Z","0.2.0":"2026-06-01T01:49:15.443Z"},"bugs":{"url":"https://github.com/dandre3000/three-canvas-sandbox/issues"},"author":{"name":"DeAundre Payne","email":"apps.fondling796@passinbox.com","url":"https://github.com/dandre3000"},"license":"MIT","homepage":"https://github.com/dandre3000/three-canvas-sandbox#readme","keywords":["three","canvas","renderer","worker","sandbox","thread","browser"],"repository":{"type":"git","url":"git+https://github.com/dandre3000/three-canvas-sandbox.git"},"description":"Three.js OffscreenCanvas renderer in a worker sandbox.","maintainers":[{"name":"dandre3000","email":"apps.fondling796@passinbox.com"}],"readme":"# @dandre3000/three-canvas-sandbox\n\nThree.js OffscreenCanvas renderer in a worker sandbox.\n\n## Install\n\nnpm i @dandre3000/three-canvas-sandbox\n\n## Usage\n\n```js\nimport { ThreeCanvasSandbox } from '@dandre3000/three-canvas-sandbox'\n\nconst canvasSandbox = new ThreeCanvasSandbox\ndocument.body.appendChild(canvasSandbox.canvasContainer)\n\nconst createScene = () => {\n    /** @type {import('@dandre3000/three-canvas-sandbox').ThreeCanvasSandboxContext} */\n    const { renderer, three } = (globalThis)\n    const { x, y } = renderer.getSize(new three.Vector2)\n    const scene = new three.Scene()\n    const camera = new three.PerspectiveCamera(75, x / y, 0.1, 1000)\n    const geometry = new three.BoxGeometry(1, 1, 1)\n    const material = new three.MeshBasicMaterial({ color: 0x00ff00 })\n    const cube = new three.Mesh(geometry, material)\n    scene.add(cube)\n\n    camera.position.z = 5\n\n    const animate = time => {\n        const { width, height } = renderer.domElement\n\n        renderer.setViewport(0, 0, width, height)\n        camera.aspect = width / height\n        camera.updateProjectionMatrix()\n        cube.rotation.x = time / 2000\n        cube.rotation.y = time / 1000\n\n        renderer.render(scene, camera)\n    }\n\n    renderer.setAnimationLoop(animate)\n}\n\nconst getRendererFPS = () => {\n    /** @type {import(\"@dandre3000/three-canvas-sandbox\").ThreeCanvasSandboxContext} */\n    const { getFPS } = (globalThis)\n\n    return getFPS()\n}\n\ncanvasSandbox.setRemoteFunction('demo', createScene)\ncanvasSandbox.setRemoteFunction('getFPS', getRendererFPS)\ncanvasSandbox.callRemoteFunction('demo')\n\nconst fpsDisplay = document.createElement('p')\ndocument.body.appendChild(fpsDisplay)\n\nsetInterval(async () => {\n    fpsDisplay.innerText = await canvasSandbox.callRemoteFunction('getFPS')\n}, 1000)\n```\n## Exports\n\n<h4>type ThreeCanvasSandboxContext = RestrictedGlobalProxy & {\n    </br>&emsp;global: ThreeCanvasSandboxContext\n    </br>&emsp;globalThis: ThreeCanvasSandboxContext\n    </br>&emsp;getFPS: () => number\n    </br>&emsp;renderer: Omit&lt;three.WebGLRenderer, 'dispose' | 'domElement' | 'setSize'&gt;\n    </br>&emsp;three: Omit&lt;typeof three, 'Audio' | 'AudioAnalyser' | 'AudioContext' | 'AudioListener' | 'AudioLoader' | 'PositionalAudio'\n    </br>&emsp;| 'WebGLRenderer'&gt;\n</br>}</h4>\n\n### Class ThreeCanvasSandbox extends import('@dandre3000/sandbox').SandboxPort\n\n#### canvasContainer: HTMLDivElement\n\n#### minCanvasWidth: string\n\n#### minCanvasHeight: string\n\n#### getCanvasWidth (): string\n#### getCanvasHeight (): string\n\n#### setLocalFunction (id: string, fn: Function | null): void\nCreate sandboxed function on the main thread or remove it if fn is null.\n\n#### setRemoteFunction (id: string, fn: Function | null): Promise&lt;void&gt;\nCreate a sandboxed function on the canvas thread or remove it if fn is null.\n\n#### callRemoteFunction (id: string): Promise&lt;void&gt;\nCall a sandboxed function on the canvas thread.\n\n## License\n\n[MIT](https://github.com/dandre3000/three-canvas-sandbox/blob/main/LICENSE)","readmeFilename":"README.md"}