Logo FS-Skia-UI

InteractiveAppHost<'model, 'msg> Type

Pointer-routing, size-aware durable host (feature 085, research D3-AMEND). Mirrors `GeneratedAppHost` field-for-field PLUS a `MapPointer` seam over `PointerInteraction` and a size-carrying `View` that returns a `Control<'msg>` tree (so `Control.renderTree` yields the `Scene` + `Layout` + `EventBindings` the host routes). Lives in Controls.Elmish — not SkiaViewer — because `PointerInteraction`/`interpretPointerOutcome` are Controls surface and the viewer is host-independent. `Theme` drives `renderTree`. Feature 090: a hit control's authored `EventBindings` (`onClick`/`onChanged`) are dispatched in the live window; `MapKey` gains a focus-aware text-routing seam for the focused text control (see `routeInteractivePointer`, `routeFocusedText`, and `runInteractiveApp`). Feature 108: the additive `MapKeyChord` / `OnFrameMetrics` fields carry inert defaults (at-rest byte-identical).

Record fields

Record Field Description

Diagnostics

Full Usage: Diagnostics

Field type: ViewerDiagnosticsOptions

Init

Full Usage: Init

Field type: unit -> 'model * ViewerEffect list
Field type: unit -> 'model * ViewerEffect list

MapKey

Full Usage: MapKey

Field type: ViewerKey -> bool -> 'msg option
Field type: ViewerKey -> bool -> 'msg option

MapKeyChord

Full Usage: MapKeyChord

Field type: ViewerKey -> KeyModifiers -> 'msg option

Feature 108 (US5, FR-016): an additive modifier-aware key seam consulted BEFORE `MapKey`. The default (`fun _ _ -> None`) ignores modifiers and defers to `MapKey`, so unmodified keys route exactly as today (at-rest byte-identical, SC-012).

Field type: ViewerKey -> KeyModifiers -> 'msg option

MapPointer

Full Usage: MapPointer

Field type: PointerInteraction -> 'msg option
Field type: PointerInteraction -> 'msg option

OnFrameMetrics

Full Usage: OnFrameMetrics

Field type: FrameMetrics -> unit

Feature 108 (US2, FR-006): an additive opt-in observability sink called once per frame with that frame's `FrameMetrics`. The default (`ignore`) is inert, so a host that does not observe metrics is byte-identical to its pre-108 behaviour (SC-012).

Field type: FrameMetrics -> unit

Theme

Full Usage: Theme

Field type: Theme
Field type: Theme

Tick

Full Usage: Tick

Field type: TimeSpan -> 'msg option
Field type: TimeSpan -> 'msg option

Update

Full Usage: Update

Field type: 'msg -> 'model -> 'model * ViewerEffect list
Field type: 'msg -> 'model -> 'model * ViewerEffect list

View

Full Usage: View

Field type: Size -> 'model -> Control<'msg>
Field type: Size -> 'model -> Control<'msg>

Type something to start searching.