ruviz wasm demo

# ruviz in the browser

This demo uses the new `ruviz` JS/TS SDK on top of the wasm bridge to render and interact with plots in the browser. Left-drag pans, right-drag box-zooms, and the mouse wheel zooms around the pointer. The panels below cover direct export, main-thread sessions, worker sessions, temporal signal playback, and observable/reactive updates.

## Direct Export

Static export through `Plot::render_png_bytes()` and `Plot::render_to_svg()` without creating an interactive canvas session.

## Main-thread Canvas

Browser-session API coverage on an HTML canvas, including backend preference, viewport SVG export, and detach/reattach lifecycle controls.

Backend

## Offscreen Worker

Interactive rendering delegated to a worker using `OffscreenCanvas`.

## Temporal Signal View

Time-varying data backed by `Signal<Vec<f64>>`. Use the time slider or Play to drive `session.set_time(...)` on a plot built from signal sources.

Time 0.00 s

## Observable Interactive View

Reactive plot data backed by `ruviz::data::Observable<Vec<f64>>`. Move the phase slider or press Play to mutate the series while keeping the current interactive viewport.

Phase 0.00 rad