`. Provide an explicit `height`.
#### `className` (string) - Optional
Applied to the container `
`.
#### `onReady` ((chart: ChartGPUInstance) => void) - Optional
Called after async create completes successfully.
#### `onClick` ((payload: ChartGPUEventPayload) => void) - Optional
Wires to `chart.on('click', ...)`.
#### `onMouseOver` ((payload: ChartGPUEventPayload) => void) - Optional
Wires to `chart.on('mouseover', ...)`.
#### `onMouseOut` ((payload: ChartGPUEventPayload) => void) - Optional
Wires to `chart.on('mouseout', ...)`.
#### `onCrosshairMove` ((payload: ChartGPUCrosshairMovePayload) => void) - Optional
Wires to `chart.on('crosshairMove', ...)`.
#### `onDataAppend` ((payload: ChartGPUDataAppendPayload) => void) - Optional
Wires to `chart.on('dataAppend', ...)`. Fires when data is appended via `appendData(...)`.
#### `onDeviceLost` ((payload: ChartGPUDeviceLostPayload) => void) - Optional
Wires to `chart.on('deviceLost', ...)`. Most relevant when using shared `gpuContext`.
#### `onZoomChange` ((range: ZoomRange) => void) - Optional
Fires on `zoomRangeChange` event. Also emits the current range once on subscribe (initial hydration).
### Imperative Handle (`ChartGPUHandle`)
Accessible via `ref`. Exposes the following methods:
- `getChart()`: Returns the chart instance.
- `getContainer()`: Returns the container DOM element.
- `appendData(seriesIndex, newPoints)`: Appends data to a series.
- `renderFrame(): boolean`: Renders a single frame (external mode).
- `needsRender(): boolean`: Checks if a render is pending.
- `getRenderMode()`: Gets the current render mode.
- `setRenderMode(mode)`: Sets the render mode.
- `setOption(options)`: Updates chart options with a full replacement.
- `setZoomRange(start, end)`: Sets the zoom range.
- `setInteractionX(x, source?)`: Sets the interaction X coordinate.
- `getInteractionX()`: Gets the interaction X coordinate.
- `hitTest(e)`: Performs a hit test at the given event coordinates.
### Lifecycle & Behavior
#### Async Initialization
On mount, `ChartGPU.create(containerDiv, effectiveOptions, gpuContext?)` is called. If the component unmounts before creation completes, the instance is disposed.
#### Options Updates
Changes to `options` or `theme` trigger `chart.setOption(effectiveOptions)` (full replacement).
#### Resize Behavior
A `ResizeObserver` is used to call `chart.resize()` on container resize. Calls are debounced (100ms).
#### Zoom Change Events
If `onZoomChange` is provided, the component subscribes to `zoomRangeChange` and fires the callback on changes. It also fires the initial zoom range on subscription.
```