# Three.js integration types

Import these contracts with `type` from `@pibbl/three`.

## `PibblThreeInputBridge`

Its `connect()` method supplies the input element expected by controls such as
OrbitControls.

## `PibblThreeLayerContext`

Extends the core render-layer context with the owned `THREE.WebGLRenderer` and
input bridge.

## `PibblThreeLayerDefinition`

Defines the synchronous `create`, `update`, `resize`, `render`, `targets`,
`pick`, and `dispose` callbacks used by `defineThreeLayer()`.

## `PibblThreeLayerResources`

Requires the application resource value to expose a Three `scene` and
`camera`.

## `PibblThreePicker`

A custom layer-local point picker that can replace default raycasting.

## `PibblThreePickResult`

The miss, block, or Three-object target result returned by a picker.

## `PibblThreeRendererOptions`

Normal Three renderer parameters except `canvas` and `alpha`; the adapter owns
the OffscreenCanvas and always enables a transparent compositing surface.

## `PibblThreeTarget`

Associates an ordinary `THREE.Object3D` with Pibbl event handlers, cursor, pointer
policy, focusability, and optional keyboard-navigation bounds.

## API details from source

<span id="api-PibblThreeInputBridge"></span>

### PibblThreeInputBridge

Connects Three controls to Pibbl-routed input through an element-compatible bridge.

```ts
interface PibblThreeInputBridge
```

Related API: [PibblThreeInputBridge](/reference/types/three/#pibblthreeinputbridge).

#### See also

[PibblThreeLayerContext](/reference/types/three/#pibblthreelayercontext)

[View source — packages/three/src/lib/types.ts:78](/source/packages/three/src/lib/types-ts/#L78)

#### Properties and methods

<span id="api-PibblThreeInputBridge-connect"></span>
<details>
<summary>connect</summary>


```ts
connect: <Control>(create: (element: HTMLElement) => Control) => Control
```

Creates controls against the Pibbl input bridge and returns the created control instance. See
PibblThreeInputBridge.

##### Parameters

- **`create`** — Factory that constructs controls using Pibbl's routed-input element.

##### Returns

The control object returned by the factory.

[View source — packages/three/src/lib/types.ts:85](/source/packages/three/src/lib/types-ts/#L85)

</details>

<span id="api-PibblThreeLayerContext"></span>

### PibblThreeLayerContext

Pibbl surface context extended with the adapter-owned renderer and controls-input bridge.

```ts
interface PibblThreeLayerContext extends PibblRenderLayerContext
```

Related API: [PibblThreeLayerContext](/reference/types/three/#pibblthreelayercontext), [PibblRenderLayerContext](/reference/types/canvas-runtime/#pibblrenderlayercontext).

#### See also

[PibblRenderLayerContext](/reference/types/canvas-runtime/#pibblrenderlayercontext)

[PibblThreeInputBridge](/reference/types/three/#pibblthreeinputbridge)

[PibblThreeLayerDefinition](/reference/types/three/#pibblthreelayerdefinition)

`THREE.WebGLRenderer`

[View source — packages/three/src/lib/types.ts:120](/source/packages/three/src/lib/types-ts/#L120)

#### Properties and methods

<span id="api-PibblThreeLayerContext-renderer"></span>
<details>
<summary>renderer</summary>


```ts
readonly renderer: THREE.WebGLRenderer
```

The transparent renderer owned by this mounted adapter. See PibblThreeLayerContext.

[View source — packages/three/src/lib/types.ts:122](/source/packages/three/src/lib/types-ts/#L122)

</details>

<span id="api-PibblThreeLayerContext-input"></span>
<details>
<summary>input</summary>


```ts
readonly input: PibblThreeInputBridge
```

Related API: [PibblThreeInputBridge](/reference/types/three/#pibblthreeinputbridge).

Bridge used to connect Three controls to Pibbl-routed events. See PibblThreeInputBridge.

[View source — packages/three/src/lib/types.ts:126](/source/packages/three/src/lib/types-ts/#L126)

</details>

<span id="api-PibblThreeLayerContext-canvas"></span>
<details>
<summary>canvas</summary>


```ts
readonly canvas: OffscreenCanvas
```

Canvas surface associated with this resource or mount. See PibblRenderLayerContext.

[View source — packages/core/src/lib/render-layer/types.ts:74](/source/packages/core/src/lib/render-layer/types-ts/#L74)

</details>

<span id="api-PibblThreeLayerContext-size"></span>
<details>
<summary>size</summary>


```ts
readonly size: PibblRenderLayerSize
```

Related API: [PibblRenderLayerSize](/reference/types/canvas-runtime/#pibblrenderlayersize).

Current logical dimensions, backing-store dimensions, and effective pixel ratios. See PibblRenderLayerSize.

[View source — packages/core/src/lib/render-layer/types.ts:76](/source/packages/core/src/lib/render-layer/types-ts/#L76)

</details>

<span id="api-PibblThreeLayerContext-invalidate"></span>
<details>
<summary>invalidate</summary>


```ts
invalidate: () => void
```

Requests another Pibbl render through the shared scheduler. See PibblRenderLayerContext.

[View source — packages/core/src/lib/render-layer/types.ts:80](/source/packages/core/src/lib/render-layer/types-ts/#L80)

</details>

<span id="api-PibblThreeLayerDefinition"></span>

### PibblThreeLayerDefinition

Three scene resource lifecycle, optional rendering overrides, and Pibbl interaction integration.

```ts
interface PibblThreeLayerDefinition<Props, Resources extends PibblThreeLayerResources>
```

Related API: [PibblThreeLayerDefinition](/reference/types/three/#pibblthreelayerdefinition), [PibblThreeLayerResources](/reference/types/three/#pibblthreelayerresources).

#### See also

[PibblThreeLayerResources](/reference/types/three/#pibblthreelayerresources)

[PibblThreeRendererOptions](/reference/types/three/#pibblthreerendereroptions)

[PibblThreeLayerContext](/reference/types/three/#pibblthreelayercontext)

[PibblRenderLayerSize](/reference/types/canvas-runtime/#pibblrenderlayersize)

[PibblRenderLayerFrame](/reference/types/canvas-runtime/#pibblrenderlayerframe)

[PibblThreeTarget](/reference/types/three/#pibblthreetarget)

[PibblThreePicker](/reference/types/three/#pibblthreepicker)

[defineThreeLayer](/reference/functions/define-three-layer/)

[View source — packages/three/src/lib/types.ts:141](/source/packages/three/src/lib/types-ts/#L141)

#### Properties and methods

<span id="api-PibblThreeLayerDefinition-renderer"></span>
<details>
<summary>renderer (optional)</summary>


```ts
readonly renderer?: PibblThreeRendererOptions | undefined
```

Related API: [PibblThreeRendererOptions](/reference/types/three/#pibblthreerendereroptions).

Three renderer construction options; Pibbl supplies the canvas and enables transparency. See
PibblThreeRendererOptions.

[View source — packages/three/src/lib/types.ts:149](/source/packages/three/src/lib/types-ts/#L149)

</details>

<span id="api-PibblThreeLayerDefinition-create"></span>
<details>
<summary>create</summary>


```ts
create: (context: PibblThreeLayerContext, initialProps: Readonly<Props>) => Resources
```

Related API: [PibblThreeLayerContext](/reference/types/three/#pibblthreelayercontext).

Creates the application's scene, camera, and other explicitly owned resources. See
PibblThreeLayerDefinition.

##### Parameters

- **`context`** — Adapter-owned renderer, surface, input bridge, and invalidation services. See
[PibblThreeLayerContext](/reference/types/three/#pibblthreelayercontext) .

- **`initialProps`** — Props from the first mounted render.

##### Returns

Application-owned scene, camera, and additional resources retained for this mount.

[View source — packages/three/src/lib/types.ts:158](/source/packages/three/src/lib/types-ts/#L158)

</details>

<span id="api-PibblThreeLayerDefinition-update"></span>
<details>
<summary>update (optional)</summary>


```ts
update?: ((resources: Resources, props: Readonly<Props>, context: PibblThreeLayerContext) => void) | undefined
```

Related API: [PibblThreeLayerContext](/reference/types/three/#pibblthreelayercontext).

Applies current props to the persistent Three resources. See PibblThreeLayerDefinition.

##### Parameters

- **`resources`** — Resources returned by create.

- **`props`** — Latest layer props.

- **`context`** — Adapter-owned renderer, surface, input bridge, and invalidation services. See
[PibblThreeLayerContext](/reference/types/three/#pibblthreelayercontext) .

[View source — packages/three/src/lib/types.ts:166](/source/packages/three/src/lib/types-ts/#L166)

</details>

<span id="api-PibblThreeLayerDefinition-resize"></span>
<details>
<summary>resize (optional)</summary>


```ts
resize?: ((resources: Resources, size: PibblRenderLayerSize, context: PibblThreeLayerContext) => void) | undefined
```

Related API: [PibblRenderLayerSize](/reference/types/canvas-runtime/#pibblrenderlayersize), [PibblThreeLayerContext](/reference/types/three/#pibblthreelayercontext).

Updates camera or application render targets after the layer size changes. See
PibblThreeLayerDefinition.

##### Parameters

- **`resources`** — Resources returned by create.

- **`size`** — New logical and backing dimensions. See [PibblRenderLayerSize](/reference/types/canvas-runtime/#pibblrenderlayersize).

- **`context`** — Adapter-owned renderer, surface, input bridge, and invalidation services. See
[PibblThreeLayerContext](/reference/types/three/#pibblthreelayercontext) .

[View source — packages/three/src/lib/types.ts:179](/source/packages/three/src/lib/types-ts/#L179)

</details>

<span id="api-PibblThreeLayerDefinition-render"></span>
<details>
<summary>render (optional)</summary>


```ts
render?: ((resources: Resources, frame: PibblRenderLayerFrame, context: PibblThreeLayerContext) => void) | undefined
```

Related API: [PibblRenderLayerFrame](/reference/types/canvas-runtime/#pibblrenderlayerframe), [PibblThreeLayerContext](/reference/types/three/#pibblthreelayercontext).

Overrides rendering for custom effects; omitted callbacks use ordinary scene/camera rendering.
See PibblThreeLayerDefinition.

##### Parameters

- **`resources`** — Resources returned by create.

- **`frame`** — Shared Pibbl frame timing and invalidation service. See
[PibblRenderLayerFrame](/reference/types/canvas-runtime/#pibblrenderlayerframe) .

- **`context`** — Adapter-owned renderer, surface, input bridge, and invalidation services. See
[PibblThreeLayerContext](/reference/types/three/#pibblthreelayercontext) .

[View source — packages/three/src/lib/types.ts:193](/source/packages/three/src/lib/types-ts/#L193)

</details>

<span id="api-PibblThreeLayerDefinition-targets"></span>
<details>
<summary>targets (optional)</summary>


```ts
targets?: ((resources: Resources, props: Readonly<Props>) => Iterable<PibblThreeTarget>) | undefined
```

Related API: [PibblThreeTarget](/reference/types/three/#pibblthreetarget).

Returns the Three objects exposed as Pibbl interaction and focus targets. See
PibblThreeTarget.

##### Parameters

- **`resources`** — Resources returned by create.

- **`props`** — Props used by this interaction generation.

##### Returns

Object targets and their Pibbl event/focus metadata. See [PibblThreeTarget](/reference/types/three/#pibblthreetarget).

[View source — packages/three/src/lib/types.ts:205](/source/packages/three/src/lib/types-ts/#L205)

</details>

<span id="api-PibblThreeLayerDefinition-pick"></span>
<details>
<summary>pick (optional)</summary>


```ts
pick?: ((resources: Resources, context: PibblThreeLayerContext) => PibblThreePicker) | undefined
```

Related API: [PibblThreeLayerContext](/reference/types/three/#pibblthreelayercontext), [PibblThreePicker](/reference/types/three/#pibblthreepicker).

Creates a custom picker for the settled generation; omission uses the adapter's raycasting.
See PibblThreePicker.

##### Parameters

- **`resources`** — Resources returned by create.

- **`context`** — Adapter-owned renderer, surface, input bridge, and invalidation services. See
[PibblThreeLayerContext](/reference/types/three/#pibblthreelayercontext) .

##### Returns

A picker for the current scene resources. See [PibblThreePicker](/reference/types/three/#pibblthreepicker).

[View source — packages/three/src/lib/types.ts:214](/source/packages/three/src/lib/types-ts/#L214)

</details>

<span id="api-PibblThreeLayerDefinition-dispose"></span>
<details>
<summary>dispose (optional)</summary>


```ts
dispose?: ((resources: Resources, context: PibblThreeLayerContext) => void) | undefined
```

Related API: [PibblThreeLayerContext](/reference/types/three/#pibblthreelayercontext).

Disposes application-created Three resources; the adapter disposes its own renderer. See
PibblThreeLayerDefinition.

##### Parameters

- **`resources`** — Application-owned resources returned by create; release geometries,
materials, and other owned resources here.

- **`context`** — Adapter context; the adapter releases its renderer and bridge after this
callback. See [PibblThreeLayerContext](/reference/types/three/#pibblthreelayercontext) .

[View source — packages/three/src/lib/types.ts:223](/source/packages/three/src/lib/types-ts/#L223)

</details>

<span id="api-PibblThreeLayerResources"></span>

### PibblThreeLayerResources

Application-owned scene and camera required by a Three layer; additional resources may be stored
alongside them.

```ts
interface PibblThreeLayerResources
```

Related API: [PibblThreeLayerResources](/reference/types/three/#pibblthreelayerresources).

#### See also

[PibblThreeLayerDefinition](/reference/types/three/#pibblthreelayerdefinition)

[defineThreeLayer](/reference/functions/define-three-layer/)

`THREE.Scene`

`THREE.Camera`

[View source — packages/three/src/lib/types.ts:22](/source/packages/three/src/lib/types-ts/#L22)

#### Properties and methods

<span id="api-PibblThreeLayerResources-scene"></span>
<details>
<summary>scene</summary>


```ts
readonly scene: THREE.Scene<THREE.Object3DEventMap>
```

Application-owned scene rendered by the layer. See THREE.Scene.

[View source — packages/three/src/lib/types.ts:24](/source/packages/three/src/lib/types-ts/#L24)

</details>

<span id="api-PibblThreeLayerResources-camera"></span>
<details>
<summary>camera</summary>


```ts
readonly camera: THREE.Camera
```

Application-owned camera used for rendering and picking. See THREE.Camera.

[View source — packages/three/src/lib/types.ts:26](/source/packages/three/src/lib/types-ts/#L26)

</details>

<span id="api-PibblThreePicker"></span>

### PibblThreePicker

Hit-tests a layer-local logical point against a settled Three scene.

```ts
type PibblThreePicker = (
  point: Readonly<{
    /**
     * Horizontal coordinate or displacement in the containing coordinate system. See
     * {@link PibblThreePicker}.
     */
    x: number;
    /**
     * Vertical coordinate or displacement in the containing coordinate system. See
     * {@link PibblThreePicker}.
     */
    y: number;
  }>,
) => PibblThreePickResult
```

Related API: [PibblThreePicker](/reference/types/three/#pibblthreepicker), [displacement](/reference/types/filters/#displacement), [PibblThreePickResult](/reference/types/three/#pibblthreepickresult).

#### Parameters

- **`point`** — Pointer position in layer-local logical coordinates.

#### Returns

A Three object target, a blocking hit, or a miss. See [PibblThreePickResult](/reference/types/three/#pibblthreepickresult).

#### See also

[PibblThreePickResult](/reference/types/three/#pibblthreepickresult)

[PibblThreeLayerDefinition](/reference/types/three/#pibblthreelayerdefinition)

[View source — packages/three/src/lib/types.ts:97](/source/packages/three/src/lib/types-ts/#L97)

<span id="api-PibblThreePickResult"></span>

### PibblThreePickResult

The target, block, or miss result of picking in a Three layer.

```ts
type PibblThreePickResult = PibblRenderLayerHit<THREE.Object3D>
```

Related API: [PibblThreePickResult](/reference/types/three/#pibblthreepickresult), [PibblRenderLayerHit](/reference/types/canvas-runtime/#pibblrenderlayerhit).

#### See also

[PibblRenderLayerHit](/reference/types/canvas-runtime/#pibblrenderlayerhit)

[PibblThreePicker](/reference/types/three/#pibblthreepicker)

`THREE.Object3D`

[View source — packages/three/src/lib/types.ts:60](/source/packages/three/src/lib/types-ts/#L60)

#### Properties and methods

<span id="api-PibblThreePickResult-kind"></span>
<details>
<summary>kind</summary>


```ts
readonly kind: "block" | "miss" | "target"
```

Selects the kind of geometry, material, or result. See PibblRenderLayerHit.

[View source — packages/core/src/lib/render-layer/types.ts:103](/source/packages/core/src/lib/render-layer/types-ts/#L103)

</details>

<span id="api-PibblThreeRendererOptions"></span>

### PibblThreeRendererOptions

Three renderer construction options, excluding the canvas and transparency owned by the adapter.

```ts
type PibblThreeRendererOptions = Omit<
  THREE.WebGLRendererParameters,
  "canvas" | "alpha"
>
```

Related API: [PibblThreeRendererOptions](/reference/types/three/#pibblthreerendereroptions).

#### See also

[PibblThreeLayerDefinition](/reference/types/three/#pibblthreelayerdefinition)

`THREE.WebGLRendererParameters`

[View source — packages/three/src/lib/types.ts:68](/source/packages/three/src/lib/types-ts/#L68)

<span id="api-PibblThreeTarget"></span>

### PibblThreeTarget

A Three object registered as a Pibbl logical event and keyboard-focus target.

```ts
interface PibblThreeTarget
```

Related API: [PibblThreeTarget](/reference/types/three/#pibblthreetarget).

#### See also

[PibblEventHandlers](/reference/types/events/#pibbleventhandlers)

[PibblPointerEvents](/reference/types/events/#pibblpointerevents)

[LayoutBox](/reference/types/layout/#layoutbox)

[PibblThreeLayerDefinition](/reference/types/three/#pibblthreelayerdefinition)

`THREE.Object3D`

[View source — packages/three/src/lib/types.ts:38](/source/packages/three/src/lib/types-ts/#L38)

#### Properties and methods

<span id="api-PibblThreeTarget-object"></span>
<details>
<summary>object</summary>


```ts
readonly object: THREE.Object3D<THREE.Object3DEventMap>
```

Three object registered as a Pibbl logical target. See THREE.Object3D.

[View source — packages/three/src/lib/types.ts:40](/source/packages/three/src/lib/types-ts/#L40)

</details>

<span id="api-PibblThreeTarget-handlers"></span>
<details>
<summary>handlers (optional)</summary>


<details>
<summary>Full type declaration</summary>

```ts
readonly handlers?: Partial<{ onAuxClick: PibblEventHandler<"auxclick">; onBeforeInput: PibblEventHandler<"beforeinput">; onBlur: PibblEventHandler<"blur">; onChange: PibblEventHandler<"change">; onClick: PibblEventHandler<"click">; onCompositionEnd: PibblEventHandler<"compositionend">; onCompositionStart: PibblEventHandler<"compositionstart">; onCompositionUpdate: PibblEventHandler<"compositionupdate">; onContextMenu: PibblEventHandler<"contextmenu">; onCopy: PibblEventHandler<"copy">; onCut: PibblEventHandler<"cut">; onDblClick: PibblEventHandler<"dblclick">; onDrag: PibblEventHandler<"drag">; onDragEnd: PibblEventHandler<"dragend">; onDragEnter: PibblEventHandler<"dragenter">; onDragLeave: PibblEventHandler<"dragleave">; onDragOver: PibblEventHandler<"dragover">; onDragStart: PibblEventHandler<"dragstart">; onDrop: PibblEventHandler<"drop">; onFocus: PibblEventHandler<"focus">; onFocusIn: PibblEventHandler<"focusin">; onFocusOut: PibblEventHandler<"focusout">; onGotPointerCapture: PibblEventHandler<"gotpointercapture">; onInput: PibblEventHandler<"input">; onKeyDown: PibblEventHandler<"keydown">; onKeyUp: PibblEventHandler<"keyup">; onLostPointerCapture: PibblEventHandler<"lostpointercapture">; onMouseDown: PibblEventHandler<"mousedown">; onMouseEnter: PibblEventHandler<"mouseenter">; onMouseLeave: PibblEventHandler<"mouseleave">; onMouseMove: PibblEventHandler<"mousemove">; onMouseOut: PibblEventHandler<"mouseout">; onMouseOver: PibblEventHandler<"mouseover">; onMouseUp: PibblEventHandler<"mouseup">; onPaste: PibblEventHandler<"paste">; onPointerCancel: PibblEventHandler<"pointercancel">; onPointerDown: PibblEventHandler<"pointerdown">; onPointerEnter: PibblEventHandler<"pointerenter">; onPointerLeave: PibblEventHandler<"pointerleave">; onPointerMove: PibblEventHandler<"pointermove">; onPointerOut: PibblEventHandler<"pointerout">; onPointerOver: PibblEventHandler<"pointerover">; onPointerRawUpdate: PibblEventHandler<"pointerrawupdate">; onPointerUp: PibblEventHandler<"pointerup">; onSelect: PibblEventHandler<"select">; onSelectionChange: PibblEventHandler<"selectionchange">; onTouchCancel: PibblEventHandler<"touchcancel">; onTouchEnd: PibblEventHandler<"touchend">; onTouchMove: PibblEventHandler<"touchmove">; onTouchStart: PibblEventHandler<"touchstart">; onWheel: PibblEventHandler<"wheel">; } & { onAuxClickCapture: PibblEventHandler<"auxclick">; onBeforeInputCapture: PibblEventHandler<"beforeinput">; onBlurCapture: PibblEventHandler<"blur">; onChangeCapture: PibblEventHandler<"change">; onClickCapture: PibblEventHandler<"click">; onCompositionEndCapture: PibblEventHandler<"compositionend">; onCompositionStartCapture: PibblEventHandler<"compositionstart">; onCompositionUpdateCapture: PibblEventHandler<"compositionupdate">; onContextMenuCapture: PibblEventHandler<"contextmenu">; onCopyCapture: PibblEventHandler<"copy">; onCutCapture: PibblEventHandler<"cut">; onDblClickCapture: PibblEventHandler<"dblclick">; onDragCapture: PibblEventHandler<"drag">; onDragEndCapture: PibblEventHandler<"dragend">; onDragEnterCapture: PibblEventHandler<"dragenter">; onDragLeaveCapture: PibblEventHandler<"dragleave">; onDragOverCapture: PibblEventHandler<"dragover">; onDragStartCapture: PibblEventHandler<"dragstart">; onDropCapture: PibblEventHandler<"drop">; onFocusCapture: PibblEventHandler<"focus">; onFocusInCapture: PibblEventHandler<"focusin">; onFocusOutCapture: PibblEventHandler<"focusout">; onGotPointerCaptureCapture: PibblEventHandler<"gotpointercapture">; onInputCapture: PibblEventHandler<"input">; onKeyDownCapture: PibblEventHandler<"keydown">; onKeyUpCapture: PibblEventHandler<"keyup">; onLostPointerCaptureCapture: PibblEventHandler<"lostpointercapture">; onMouseDownCapture: PibblEventHandler<"mousedown">; onMouseEnterCapture: PibblEventHandler<"mouseenter">; onMouseLeaveCapture: PibblEventHandler<"mouseleave">; onMouseMoveCapture: PibblEventHandler<"mousemove">; onMouseOutCapture: PibblEventHandler<"mouseout">; onMouseOverCapture: PibblEventHandler<"mouseover">; onMouseUpCapture: PibblEventHandler<"mouseup">; onPasteCapture: PibblEventHandler<"paste">; onPointerCancelCapture: PibblEventHandler<"pointercancel">; onPointerDownCapture: PibblEventHandler<"pointerdown">; onPointerEnterCapture: PibblEventHandler<"pointerenter">; onPointerLeaveCapture: PibblEventHandler<"pointerleave">; onPointerMoveCapture: PibblEventHandler<"pointermove">; onPointerOutCapture: PibblEventHandler<"pointerout">; onPointerOverCapture: PibblEventHandler<"pointerover">; onPointerRawUpdateCapture: PibblEventHandler<"pointerrawupdate">; onPointerUpCapture: PibblEventHandler<"pointerup">; onSelectCapture: PibblEventHandler<"select">; onSelectionChangeCapture: PibblEventHandler<"selectionchange">; onTouchCancelCapture: PibblEventHandler<"touchcancel">; onTouchEndCapture: PibblEventHandler<"touchend">; onTouchMoveCapture: PibblEventHandler<"touchmove">; onTouchStartCapture: PibblEventHandler<"touchstart">; onWheelCapture: PibblEventHandler<"wheel">; }> | undefined
```

</details>

Related API: [PibblEventHandler](/reference/types/events/#pibbleventhandler), [blur](/reference/types/filters/#blur).

Event handlers dispatched for this logical target. See PibblEventHandlers.

[View source — packages/three/src/lib/types.ts:42](/source/packages/three/src/lib/types-ts/#L42)

</details>

<span id="api-PibblThreeTarget-pointerEvents"></span>
<details>
<summary>pointerEvents (optional)</summary>


```ts
readonly pointerEvents?: PibblPointerEvents | undefined
```

Related API: [PibblPointerEvents](/reference/types/events/#pibblpointerevents).

Whether this content participates in pointer targeting. See PibblPointerEvents.

[View source — packages/three/src/lib/types.ts:44](/source/packages/three/src/lib/types-ts/#L44)

</details>

<span id="api-PibblThreeTarget-cursor"></span>
<details>
<summary>cursor (optional)</summary>


```ts
readonly cursor?: string | undefined
```

Cursor shown while this target owns pointer presentation. See PibblThreeTarget.

[View source — packages/three/src/lib/types.ts:46](/source/packages/three/src/lib/types-ts/#L46)

</details>

<span id="api-PibblThreeTarget-keyboardFocusable"></span>
<details>
<summary>keyboardFocusable (optional)</summary>


```ts
readonly keyboardFocusable?: boolean | undefined
```

Whether the target may receive keyboard focus. See PibblThreeTarget.

[View source — packages/three/src/lib/types.ts:48](/source/packages/three/src/lib/types-ts/#L48)

</details>

<span id="api-PibblThreeTarget-keyboardNavigationBounds"></span>
<details>
<summary>keyboardNavigationBounds (optional)</summary>


```ts
readonly keyboardNavigationBounds?: Readonly<LayoutBox> | undefined
```

Related API: [LayoutBox](/reference/types/layout/#layoutbox).

Logical rectangle used for directional keyboard navigation. See LayoutBox.

[View source — packages/three/src/lib/types.ts:50](/source/packages/three/src/lib/types-ts/#L50)

</details>

## Implementation guidance for agents

Read the [External renderers and Three.js companion](/agents/topics/external-renderers/) for ownership, adaptation, failure modes, and verification. [Agent start](/agents/) provides the version-selection workflow.

## Complete minimal examples

- [Three.js orbit controls](/minimal-examples/render-layers/orbit-controls/): Drag a cube using OrbitControls connected to Pibbl-routed input. [Plain source](/minimal/render-layers/orbit-controls.tsx)
- [Three.js scene layer](/minimal-examples/render-layers/three-layer/): Mount a lit Three.js cube with Pibbl target clicks and raycast picking. [Plain source](/minimal/render-layers/three-layer.tsx)
## Documentation version

Documentation built with @pibbl/core 0.0.2, revision 272a94a. ALPHA — NOT FOR PRODUCTION USE.
