Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
159 commits
Select commit Hold shift + click to select a range
f4d310b
test(renderer): failing repro for foreign Material attach (isMaterial…
bigmistqke May 26, 2026
2ee594a
fix(create-three): drop mergeProps when calling useSceneGraph
bigmistqke May 26, 2026
5d27743
test(hooks): re-enable useLoader integration tests under Suspense
bigmistqke May 26, 2026
b78b048
test(use-loader-suspense): assert scene contents during pending and a…
bigmistqke May 26, 2026
068b8a4
fix(props): duck-type Material/Object3D/Fog/BufferGeometry attach checks
bigmistqke May 26, 2026
addab6f
refactor(create-three): use createResource for renderer init
bigmistqke May 26, 2026
3c488ce
refactor(utils): consolidate isRenderer and isWritable into utils.ts
bigmistqke May 26, 2026
dbbe477
test: cover createEntity, meta/getMeta/hasMeta, useProps, load, Resou…
bigmistqke May 26, 2026
4ac1ac7
fix(Resource): tag loaded resource with meta so parent attach works
bigmistqke May 26, 2026
df08ad8
docs: add tutorial design spec
bigmistqke May 26, 2026
c40ecf7
docs: add MDX authoring + narrow-viewport demo toggle to tutorial spec
bigmistqke May 26, 2026
a73e65a
docs: add tutorial implementation plan
bigmistqke May 26, 2026
d26fd62
feat(tutorial): scaffold tutorial vite root
bigmistqke May 26, 2026
5ee64cb
feat(tutorial): add MDX-with-Solid integration and smoke chapter
bigmistqke May 26, 2026
77bbbcc
feat(tutorial): add chapter loader sorted by part and order
bigmistqke May 26, 2026
ffcaf6d
feat(tutorial): add sidebar grouped by parts with anchor links
bigmistqke May 26, 2026
0d48089
feat(tutorial): sync URL hash + sidebar active state with scroll posi…
bigmistqke May 26, 2026
da2e87f
feat(tutorial): add <Demo> stub and MDX provider wiring
bigmistqke May 26, 2026
9cfb740
feat(tutorial): wire @bigmistqke/repl into <Demo> with viewport toggle
bigmistqke May 26, 2026
a2d10b5
feat(tutorial): pre-bundle local solid-three for demo iframes
bigmistqke May 26, 2026
98f1ae9
docs: pivot tutorial spec to SolidBase (page-per-chapter)
bigmistqke May 26, 2026
e636a0b
feat(tutorial): pivot to SolidStart + SolidBase
bigmistqke May 26, 2026
f44e4eb
fix(tutorial): compile snippet JSX with babel-preset-solid via @bigmi…
bigmistqke May 26, 2026
831522c
fix(tutorial): drop localStorage persistence from Demo
bigmistqke May 26, 2026
bb66fed
docs(tutorial): draft chapter 1 (Hello, Canvas)
bigmistqke May 26, 2026
22502ef
docs(tutorial): code-format three.js and solid-three in prose
bigmistqke May 26, 2026
bd2ac78
feat(tutorial): restructure chapter arc into 14 chapters across 6 par…
bigmistqke May 26, 2026
7cb70c6
docs(tutorial): draft chapter 2 (Nesting & transforms)
bigmistqke May 26, 2026
ce4f5b1
docs(tutorial): draft chapter 3 (Smart props)
bigmistqke May 26, 2026
e8ecd75
fix(tutorial): left-align sidebar part headings and chapter links
bigmistqke May 26, 2026
2a175eb
feat(tutorial): swap Parts 2 & 3 — interaction before animation; rewr…
bigmistqke May 26, 2026
af17498
fix(tutorial): catch compile errors in Demo so the iframe stays alive…
bigmistqke May 26, 2026
1a6ef9c
docs(tutorial): draft chapter 5 (Pointer events)
bigmistqke May 26, 2026
5c842da
docs(tutorial): add chapter 6 (Stopping events); bump subsequent chap…
bigmistqke May 26, 2026
acbeefa
feat(tutorial): add tm-textarea syntax highlighting to Demo editor
bigmistqke May 26, 2026
8698534
feat(tutorial): only show Reset when code is edited; trim demo snippe…
bigmistqke May 26, 2026
9529c6c
refactor(tutorial): move demo snippets to standalone .tsx files (impo…
bigmistqke May 26, 2026
90cebc7
docs(tutorial): draft chapter 7 (Configuring the raycaster)
bigmistqke May 26, 2026
52fe0f4
feat(tutorial): sync Demo editor theme with site light/dark mode
bigmistqke May 26, 2026
b512233
docs(tutorial): add useFrame options demo (priority ordering)
bigmistqke May 26, 2026
ad9bf0e
docs(tutorial): draft chapter 9 (useThree)
bigmistqke May 26, 2026
a012cd2
docs(tutorial): draft chapter 10 (Loaders & Resource)
bigmistqke May 26, 2026
28055c7
docs(tutorial): explain camera/raycaster stack in chapter 9 with demo
bigmistqke May 26, 2026
d3db182
docs(tutorial): draft chapter 10 (Loaders & Resource)
bigmistqke May 26, 2026
41287ad
refactor(site): rename tutorial/ to site/, split into /tutorial and /…
bigmistqke May 26, 2026
6b18fe5
docs(tutorial): draft chapter 12 (Portal)
bigmistqke May 26, 2026
e05b839
docs(tutorial): merge autodispose into a new Custom components chapte…
bigmistqke May 26, 2026
737f710
docs(tutorial): draft chapter 13 (An interactive scene)
bigmistqke May 26, 2026
9dec436
wip: ch14 webgpu drafts
bigmistqke May 26, 2026
c41b6b8
fix(tutorial): drop esm.sh ?bundle, add three/ subpath mapping for We…
bigmistqke May 26, 2026
378157a
docs(tutorial): add TSL uniform-driven slider demo; hard-edged stripes
bigmistqke May 26, 2026
b310705
docs(site): port README API reference into per-export pages
bigmistqke May 26, 2026
17958ae
fix(readme): correct CONTRIBUTING link, broken orange snippet, missin…
bigmistqke May 26, 2026
7858b17
docs(tutorial): rewrite chapter 13 as a small whack-a-cube game
bigmistqke May 26, 2026
8699116
refactor(tutorial): cut to 10 chapters; merge events; renumber + upda…
bigmistqke May 26, 2026
7097ec2
refactor(tutorial): merge nesting/transforms + smart props; renumber …
bigmistqke May 26, 2026
108ef46
docs(tutorial): cut Entity-vs-createT debate from ch1, single cube
bigmistqke May 26, 2026
93e82c8
docs(tutorial): chapter 3 — add Show/For sections, visible run-count …
bigmistqke May 26, 2026
41c7ee5
docs(tutorial): rename chapter 2 to "Props and children"
bigmistqke May 26, 2026
803cf16
docs(api): move createEntity section from T page to Entity page
bigmistqke May 26, 2026
aff2d72
docs(api): move createEntity from T to Entity in README; rephrase intro
bigmistqke May 26, 2026
7ed4a54
docs(tutorial): act on review v2 — ch1 opener, ch6 closer, differenti…
bigmistqke May 26, 2026
72bdfa2
docs(tutorial): bring back Portal as ch8 with render-to-texture demo
bigmistqke May 26, 2026
68b9352
docs(tutorial): cut Custom components chapter; inline the composition…
bigmistqke May 26, 2026
3264e9c
docs(tutorial): ch7 Portal — build up from escape-transform to render…
bigmistqke May 26, 2026
6087f05
fix(tutorial): lighten demo iframe background from pure black to slate
bigmistqke May 26, 2026
9b10e03
fix(tutorial): theme-aware Demo borders (#222 dark / #e7e7e7 light)
bigmistqke May 26, 2026
38dee2c
fix(tutorial): theme-aware iframe background (#e7e7e7 light / #0a0c12…
bigmistqke May 26, 2026
40aa719
fix(tutorial): set color-scheme on iframe so transparent renders corr…
bigmistqke May 26, 2026
930113e
fix(tutorial): postMessage theme to iframe so color-scheme follows pa…
bigmistqke May 26, 2026
d81d771
fix(tutorial): avoid && in iframe inline script (repl encodes & to &a…
bigmistqke May 26, 2026
bb35a79
fix(tutorial): use createRenderEffect to post theme without microtask…
bigmistqke May 26, 2026
887d4f7
fix(tutorial): bake color-scheme into iframe HTML at creation to avoi…
bigmistqke May 26, 2026
9927603
docs(tutorial): ch3 — add Switch/Match, Index, Suspense control flow …
bigmistqke May 26, 2026
28c0e42
fix(tutorial): drop forced button colors so they follow iframe color-…
bigmistqke May 26, 2026
3d75712
refactor(tutorial): split — reactive props moves to ch2; ch3 becomes …
bigmistqke May 26, 2026
bd3213d
docs(tutorial): ch2 — reorder so reactive props comes early, smart-pr…
bigmistqke May 26, 2026
de72e82
feat(tutorial): sticky Reset button inside the editor's scroll container
bigmistqke May 26, 2026
656baa5
Revert "feat(tutorial): sticky Reset button inside the editor's scrol…
bigmistqke May 26, 2026
472b802
docs: restore tutorial review v3 file (was wiped by sticky-reset revert)
bigmistqke May 26, 2026
41f0bee
docs(tutorial): act on review v3 — promote thesis, hand-offs, API lin…
bigmistqke May 26, 2026
33cb357
docs(spec): port-to-next-solid-2 design + analysis
bigmistqke May 26, 2026
3a384c0
docs(plan): port-next-to-next-solid-2 implementation plan
bigmistqke May 26, 2026
2cc60d9
docs(api): beef up events overview + consolidate smart-prop pipeline …
bigmistqke May 26, 2026
54e94ab
fix(xr): support WebGPURenderer XR by driving the loop from the renderer
bigmistqke May 26, 2026
b0833c7
fix(canvas): drop non-null assertions on ref bindings
bigmistqke May 26, 2026
bb2e29c
chore(test): add vitest browser-mode config alongside jsdom
bigmistqke May 26, 2026
fe6d0ee
docs(tutorial): trim reference-feeling sections (events, loaders, pro…
bigmistqke May 26, 2026
890e983
chore(test): consolidate vitest configs into projects, add jsdom cont…
bigmistqke May 26, 2026
4270ea2
ci: install Playwright Chromium before running tests
bigmistqke May 26, 2026
bac32b3
docs: act on review v4 — Portal link+page, loader-cache link, useLoad…
bigmistqke May 26, 2026
f835cf1
docs(plan): correct Task 6/12/14 for Solid 2.x API delta
bigmistqke May 26, 2026
0a7948a
docs: document [ctorArgs, properties] tuple form for the gl prop
bigmistqke May 26, 2026
e2d4771
docs(api): rewrite useProps to match src/props.ts coercion order
bigmistqke May 26, 2026
8fec9de
docs(readme): refresh useProps section + add args/attach/ref/onUpdate
bigmistqke May 26, 2026
9ccea50
docs(readme): refresh event-object section (add intersection fields)
bigmistqke May 26, 2026
2006804
docs: fix metadata page (meta is a function, not a WeakMap)
bigmistqke May 26, 2026
f4266ab
docs(api): document missing exports — load, S3 namespace, TOC catch-up
bigmistqke May 26, 2026
7ec9d38
docs(api): fix Canvas TS interface (Props<WebGLRenderer>, ResolvedRen…
bigmistqke May 26, 2026
4d7f795
docs(api): document Canvas defaults (frameloop, gl, shadows, toneMapp…
bigmistqke May 26, 2026
3ed9326
docs(readme): document Portal onUpdate prop
bigmistqke May 26, 2026
136245d
docs: add api audit report
bigmistqke May 26, 2026
a49d7f7
docs(api): fix broken JSX snippets in entity.mdx
bigmistqke May 26, 2026
e12f5ca
docs(api): tighten useThree return types and drop duplicate example
bigmistqke May 26, 2026
05307e4
docs(api): document useFrame's cleanup return value
bigmistqke May 26, 2026
d437e6a
docs(api): align useLoader/LoaderRegistry interfaces with source
bigmistqke May 26, 2026
97e781f
docs(api): document Resource's inherited loader options
bigmistqke May 26, 2026
f2dacd4
Merge branch 'fixes' into worktree-tutorial
bigmistqke May 26, 2026
c33c062
test: switch fully to real-browser testing, drop jsdom
bigmistqke May 26, 2026
0bed88f
fix(create-three): swap canvas element when recreating default WebGLR…
bigmistqke May 26, 2026
4f61a89
refactor(canvas): replace gl tuple form with flat r3f-style object + …
bigmistqke May 26, 2026
ece7abb
docs: document the new flat gl prop and warn behavior
bigmistqke May 26, 2026
51e85bc
docs(canvas): update gl prop JSDoc to match the flat-form API
bigmistqke May 26, 2026
e496cc4
docs(specs): hero splash REPL design
bigmistqke May 26, 2026
bdf47e0
docs(plans): hero splash REPL implementation plan
bigmistqke May 26, 2026
fd81697
feat(site): add cannon-es for hero physics
bigmistqke May 26, 2026
78f4e35
fix(site): cannon-es alphabetical order in package.json
bigmistqke May 26, 2026
56d8d04
fix(test): use playwright(launchOptions) instead of invalid instance.…
bigmistqke May 26, 2026
39276f5
feat(site): scaffold hero snippet with static SOLID THREE letters
bigmistqke May 26, 2026
dacae10
feat(site): drop hero letters with cannon-es physics
bigmistqke May 26, 2026
a5867fe
feat(site): give hero letters a studio reflection
bigmistqke May 26, 2026
4479028
feat(site): add camera drift and fake contact shadows
bigmistqke May 26, 2026
7f4834e
feat(site): cursor repulsion and click-to-punch on hero letters
bigmistqke May 26, 2026
860d11b
docs(specs): tetris chapter design
bigmistqke May 26, 2026
9e9612f
feat(site): hero wrapper, layout, and home-page integration
bigmistqke May 26, 2026
61cd8c1
docs(specs): add space-to-hard-drop binding to tetris spec
bigmistqke May 26, 2026
849a187
feat(site): lazy-mount Demo editor over hero
bigmistqke May 26, 2026
380d817
feat(site): fullscreen hero, workspace consolidation, and scene overhaul
bigmistqke May 26, 2026
7e06172
feat(site): add tetris stage 1 snippet (render + cycle)
bigmistqke May 26, 2026
38e3347
feat(site): add tetris stage 2 snippet (gravity + keys)
bigmistqke May 26, 2026
bf97757
feat(site): add tetris stage 3 snippet (lines + score)
bigmistqke May 26, 2026
cab4448
fix(site): enable @babel/plugin-syntax-import-attributes for solid-st…
bigmistqke May 26, 2026
8ed0bad
docs(site): add tetris chapter page
bigmistqke May 26, 2026
ef421ae
chore(site): remove temporary tetris scaffolding from old chapter
bigmistqke May 26, 2026
a099f9c
feat(site): replace whack-a-cube chapter with tetris
bigmistqke May 26, 2026
8bbc3e2
fix(site): zoom tetris board out and add white walls to game stages
bigmistqke May 26, 2026
ceacdb7
fix(site): tetris stage 1 cycles on canvas click and zooms to fit piece
bigmistqke May 26, 2026
55ebea0
chore: lockfile for @babel/plugin-syntax-import-attributes
bigmistqke May 26, 2026
fdf8616
Merge branch 'fixes' into next-site
bigmistqke May 26, 2026
1fd9977
docs(api): update Canvas gl prop docs to flat r3f-style form
bigmistqke May 26, 2026
80a3319
refactor: expand 'ctor' abbreviation to 'constructor' in canvas + cre…
bigmistqke May 26, 2026
b672f32
docs: explain that gl constructor args are one-shot and require canva…
bigmistqke May 26, 2026
b763809
style(site): add backdrop-filter to hero CTAs and drop solid backgrou…
bigmistqke May 27, 2026
05f1ac9
fix(ci): pin @swc/helpers + electron-to-chromium to pre-cutoff versio…
bigmistqke May 27, 2026
6f50b25
refactor(canvas): default ResolvedRenderer to WebGLRenderer instead o…
bigmistqke May 27, 2026
721d09c
ci: build library before typecheck so site can resolve solid-three
bigmistqke May 27, 2026
3c23081
fix(site): suppress two upstream type gaps so CI typecheck passes
bigmistqke May 27, 2026
b1c962f
chore(site): drop dead extensionAlias config (Vite 8 dropped support;…
bigmistqke May 27, 2026
2cfd4c4
chore: remove playground (replaced by site/), add build:site/dev:site…
bigmistqke May 27, 2026
82ce506
fix(types): inline Intersect util that lived in deleted playground/
bigmistqke May 27, 2026
1a5b0b3
chore(site): downgrade to SolidStart 1.x + SolidBase 0.2.20 for stabl…
bigmistqke May 27, 2026
acb53ba
chore: pin pnpm@11.3.0 and fix supply-chain policy violations
bigmistqke May 27, 2026
b0a1f34
feat(site): migrate to SolidStart 2 + SolidBase 0.6.3 + Vite 8 + Nitr…
bigmistqke May 27, 2026
4dc2722
refactor(site): rework hero animation into a staged kinematic drop
bigmistqke May 27, 2026
fe3162e
fix(site/demo): drop dead NoHydration + isServer guard
bigmistqke May 27, 2026
7b8b520
fix(site): restore typescript as devDependency for typecheck
bigmistqke May 27, 2026
4f1a58e
test(web/canvas): refresh snapshot for tightened inline-style seriali…
bigmistqke May 27, 2026
52d2bf2
fix(test): set vitest test.environment to 'node' to suppress jsdom probe
bigmistqke May 27, 2026
ab61599
docs(site): tone + interlinking pass across tutorial and API reference
bigmistqke May 27, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
11 changes: 8 additions & 3 deletions .github/workflows/pkg-pr-new.yml
Original file line number Diff line number Diff line change
Expand Up @@ -26,14 +26,19 @@ jobs:
- name: Install dependencies
run: pnpm install

- name: Install Playwright Chromium
run: pnpm exec playwright install --with-deps chromium

# Build the library first so `site/` (which imports `solid-three`
# via `link:..`) can resolve types in the Typecheck step.
- name: Build
run: pnpm build

- name: Typecheck
run: pnpm lint:types

- name: Test
run: pnpm test --run

- name: Build
run: pnpm build

- name: Publish preview
run: pnpx pkg-pr-new publish --compact --template ./demo
7 changes: 7 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -4,3 +4,10 @@ types
node_modules
demo/node_modules
packed/
.vitest-attachments/
tests/**/__screenshots__/
.claude/worktrees/
site/.output
site/.nitro
site/.solid-start
site/.vinxi
35 changes: 3 additions & 32 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -72,7 +72,6 @@ Here's a simple example to get you started:
</Entity>
```

([see](/playground/src/api/entity/constructor-usage.tsx))

Alternatively, using the `createT()` pattern:

Expand All @@ -86,7 +85,6 @@ const T = createT(THREE)
</T.Mesh>
```

([see](/playground/src/api/t/complete-three.tsx))

**Choosing between `Entity` and `T`:**

Expand All @@ -103,7 +101,7 @@ The `Canvas` component initializes the `three.js` rendering context and acts as

- **camera**: Configures the camera used in the scene. Can be partial props for a camera or an existing Camera instance.
- **fallback**: Element to render while the main content is loading asynchronously.
- **gl**: Defines options for the default WebGLRenderer, a factory returning any renderer (`WebGLRenderer`, `WebGPURenderer`, `SVGRenderer`, `CSS2D/3DRenderer`, custom), or a pre-built renderer instance. See [Custom renderers](#custom-renderers) for narrowing the accepted renderer type project-wide.
- **gl**: A flat object mixing `WebGLRenderer` constructor params (e.g. `antialias`, `alpha`, `powerPreference`) and instance-writable props (e.g. `toneMapping`) — solid-three splits the two internally. Instance props stay reactive (set them after construction, update them anytime). **Constructor params are applied once.** They're passed to `new WebGLRenderer({ ... })` at the first construction and never re-read. Updating one later does **not** rebuild the renderer or recreate the WebGL context, because `canvas.getContext("webgl2")` is idempotent: the browser returns the same context object on every subsequent call, with the original creation flags. solid-three logs a warning when it detects a reactive change to one of these keys. If you genuinely need to change them at runtime, unmount and remount the `<Canvas>` (e.g. gate it behind a `<Show>` keyed on the value you want to swap) — that gives you a fresh `<canvas>` element and therefore a fresh context. Also accepts a factory returning any renderer (`WebGLRenderer`, `WebGPURenderer`, `SVGRenderer`, `CSS2D/3DRenderer`, custom), or a pre-built renderer instance. See [Custom renderers](#custom-renderers) for narrowing the accepted renderer type project-wide.
- **scene**: Provides custom settings for the Scene instance or an existing Scene.
- **raycaster**: Configures the Raycaster for mouse and pointer events.
- **shadows**: Enables and configures shadows in the scene with various shadow mapping techniques.
Expand All @@ -126,7 +124,7 @@ interface CanvasProps {
camera?: Partial<PerspectiveCamera | OrthographicCamera> | Camera
fallback?: JSX.Element
gl?:
| Partial<WebGLRenderer>
| Partial<WebGLRenderer & WebGLRendererParameters>
| ((canvas: HTMLCanvasElement) => ResolvedRenderer)
| ResolvedRenderer
scene?: Partial<Scene> | Scene
Expand Down Expand Up @@ -167,7 +165,6 @@ interface CanvasProps {
</Canvas>
```

([see](/playground/src/api/canvas/usage.tsx))

#### Custom renderers

Expand All @@ -187,10 +184,6 @@ import { WebGPURenderer } from "three/webgpu"
solid-three awaits `renderer.init()` automatically before the first
frame, so async WebGPU setup just works. Examples:

- [WebGPURenderer](/playground/src/examples/webgpu-simple.tsx)
- [WebGPU + TSL nodes](/playground/src/examples/webgpu-tsl.tsx)
- [CSS3DRenderer](/playground/src/examples/css3d.tsx)
- [SVGRenderer](/playground/src/examples/svg.tsx)

##### Narrowing the renderer type project-wide

Expand Down Expand Up @@ -221,7 +214,7 @@ function Scene() {
<Canvas gl={canvas => new WebGPURenderer({ canvas })}> {/* ✓ */}
<Canvas gl={canvas => new WebGLRenderer({ canvas })}> {/* ✗ type error */}
<Canvas gl={{ toneMapping: ACESFilmicToneMapping }}> {/* ✗ type error —
the config shorthand
the flat-object form
only builds a default
WebGLRenderer */}
```
Expand All @@ -248,7 +241,6 @@ const mesh = new Mesh(new BoxGeometry(1, 1, 1), new MeshBasicMaterial('orange))
<Entity from={mesh} position={[0, 0, 0]} />
```

([see](/playground/src/api/entity/instance-usage.tsx))

**Props:**

Expand Down Expand Up @@ -305,7 +297,6 @@ function Good(props: { shape: "box" | "sphere" }) {
}
```

([see](/playground/src/api/autodispose/basic-usage.tsx))

#### Advanced Prop Patterns

Expand All @@ -327,7 +318,6 @@ function Good(props: { shape: "box" | "sphere" }) {
/>
```

([see](/playground/src/api/entity/advanced-props.tsx))

**Supported patterns:**

Expand Down Expand Up @@ -355,7 +345,6 @@ const T = createT(THREE)
</T.Mesh>
```

([see](/playground/src/api/t/complete-three.tsx))

You can also create a namespace with specific objects for tree-shaking purposes:

Expand All @@ -367,7 +356,6 @@ import { Mesh, BoxGeometry, MeshBasicMaterial } from "three"
const T = createT({ Mesh, BoxGeometry, MeshBasicMaterial })
```

([see](/playground/src/api/t/tree-shaking.tsx))

**Usage Patterns:**

Expand Down Expand Up @@ -423,7 +411,6 @@ Example:
</Portal>
```

([see](/playground/src/api/portal/usage.tsx))

### Resource

Expand Down Expand Up @@ -463,7 +450,6 @@ Wrapper-component around ['useLoader'](#useloader).
<Resource loader={TextureLoader} url="/dynamic-texture.png" cache={false} />
```

([see](/playground/src/api/resource/usage.tsx))

## Hooks

Expand Down Expand Up @@ -533,7 +519,6 @@ createEffect(() => {
})
```

([see](/playground/src/api/use-three/camera-switch.tsx))

**Practical Example - Camera Switching:**

Expand All @@ -555,7 +540,6 @@ createEffect(() => {
})
```

([see](/playground/src/api/use-three/camera-switch.tsx))

### useFrame

Expand Down Expand Up @@ -608,7 +592,6 @@ useFrame(
)
```

([see](/playground/src/api/use-frame/usage.tsx))

### useLoader

Expand Down Expand Up @@ -661,7 +644,6 @@ const [url, setUrl] = createSignal("texture.jpg")
const texture = useLoader(TextureLoader, url)
```

([see](/playground/src/api/use-loader/single-texture.tsx))

**Record Loading Example:**

Expand All @@ -681,7 +663,6 @@ const textures = useLoader(THREE.TextureLoader, {
/>
```

([see](/playground/src/api/use-loader/texture-record.tsx))

**Cube Texture Example:**

Expand All @@ -706,7 +687,6 @@ const cubeTexture = useLoader(
<T.MeshStandardMaterial envMap={cubeTexture()} />
```

([see](/playground/src/api/use-loader/render-function.tsx))

#### Custom Cache

Expand Down Expand Up @@ -767,7 +747,6 @@ const mesh = new Mesh(new BoxGeometry(), new MeshBasicMaterial())
useProps(mesh, props)
```

([see](/playground/src/api/use-props/usage.tsx))

**What it handles:**

Expand Down Expand Up @@ -796,7 +775,6 @@ export function OrbitControls(props: S3.Props<typeof ThreeOrbitControls>) {
}
```

[see](/playground/controls/orbit-controls.tsx)

## Utilities

Expand Down Expand Up @@ -984,7 +962,6 @@ return (
)
```

([see](/playground/src/api/autodispose/conditional-rendering.tsx))

Creating reusable instances that should be disposed with the component

Expand All @@ -1002,7 +979,6 @@ const material = autodispose(new THREE.MeshStandardMaterial())
</Index>
```

([see](/playground/src/api/autodispose/shared-resources.tsx))

### Metadata Utilities

Expand Down Expand Up @@ -1070,7 +1046,6 @@ const MyTest = () => {
- `onPointerUp` - Fired when pointer is released
- `onWheel` - Fired on mouse wheel events

([see](/playground/src/api/events/overview.tsx))

### Event Object

Expand Down Expand Up @@ -1138,7 +1113,6 @@ const EventPropagation = () => {
}
```

([see](/playground/src/api/events/event-propagation.tsx))

In this example, clicking the overlapping area would normally trigger events in this order:

Expand Down Expand Up @@ -1187,7 +1161,6 @@ const ClickOutside = () => {
}
```

([see](/playground/src/api/events/click-outside.tsx))

**Blocked by stopPropagation**

Expand Down Expand Up @@ -1239,7 +1212,6 @@ const RayPropagation = () => {
}
```

([see](/playground/src/api/events/raycast-blocking.tsx))

This is useful for:

Expand Down Expand Up @@ -1294,7 +1266,6 @@ The `raycastable` prop controls whether an Object3D can be targeted by raycastin
</T.Mesh>
```

([see](/playground/src/api/events/raycastable-prop.tsx))

## Contributing

Expand Down
Loading
Loading