# Interface: Monitor Imperative controller for a WebGPU signal monitor canvas. ## Remarks The controller owns its renderer resources, but borrows both the device and canvas supplied to [createMonitor](../index.md#createmonitor). Call [Monitor.destroy](#destroy) before releasing either borrowed resource. ## Methods ### clear() > **clear**(): `void` Clear the loaded series and blank the monitor. #### Returns `void` *** ### destroy() > **destroy**(): `void` Release event handlers, canvas configuration, and renderer resources. #### Returns `void` *** ### extend() > **extend**(`validFrames`, `values?`): `void` Advance the committed frame frontier. Pass `values` to replace the loaded sample buffer; otherwise mutate the existing buffer in place before calling. #### Parameters | Parameter | Type | Description | | :------ | :------ | :------ | | `validFrames` | `number` | Number of frames ready to draw, clamped to the series length. | | `values?` | `Float32Array`\<`ArrayBufferLike`\> | Optional replacement buffer with the same length as the loaded series. | #### Returns `void` #### Throws Error when no series is loaded or the replacement buffer length differs. *** ### load() > **load**(`series`, `signal?`): `void` Bind a series and schedule its committed frames for painting. #### Parameters | Parameter | Type | Description | | :------ | :------ | :------ | | `series` | [`Series`](Series.md) | Packed monitor samples and time coordinates. | | `signal?` | `number` | Initial signal index. Default: `0`. | #### Returns `void` #### Throws Error when the series shape or signal index is invalid. *** ### on() > **on**\<`K`\>(`event`, `handler`): () => `void` Subscribe to a monitor event and receive an unsubscribe callback. #### Type Parameters | Type Parameter | | :------ | | `K` *extends* keyof [`Events`](../index.md#events) | #### Parameters | Parameter | Type | Description | | :------ | :------ | :------ | | `event` | `K` | Event name to observe. | | `handler` | (`payload`) => `void` | Callback invoked with the event payload. | #### Returns A function that removes the handler. () => `void` *** ### pause() > **pause**(): `void` Pause painting and pointer hover work until resumed. #### Returns `void` *** ### resume() > **resume**(): `void` Resume painting after a consumer pause. #### Returns `void` *** ### setColormap() > **setColormap**(`fn`): `void` Replace the transfer function used for trace color. #### Parameters | Parameter | Type | Description | | :------ | :------ | :------ | | `fn` | (`t`) => readonly \[`number`, `number`, `number`\] | Function mapping normalized values in `[0, 1]` to RGB channels in `[0, 1]`. | #### Returns `void` *** ### setFocus() > **setFocus**(`element`): `void` Highlight one element with a foreground trace, or pass null to clear focus. #### Parameters | Parameter | Type | Description | | :------ | :------ | :------ | | `element` | `number` \| `null` | Element index to focus, or `null` to clear focus. | #### Returns `void` *** ### setSignal() > **setSignal**(`signal`): `void` Switch the displayed signal. #### Parameters | Parameter | Type | Description | | :------ | :------ | :------ | | `signal` | `number` | Signal index in `[0, series.signalCount)`. | #### Returns `void` #### Throws Error when no series is loaded or the signal index is invalid. *** ### setValueRange() > **setValueRange**(`range`): `void` Override the value domain, or pass null to return to auto-fit. #### Parameters | Parameter | Type | Description | | :------ | :------ | :------ | | `range` | readonly \[`number`, `number`\] \| `null` | Fixed `[min, max]` domain, or `null` for auto-fit. | #### Returns `void`