# Per-node canvas drawing

**Category:** Widgets  
**Live demo:** https://xenolithengine.github.io/xenolith-graph/examples/preview-nodes/  
**Frameworks shipped:** vanilla, react

## Description

Sparkline + ColorPreview nodes — each paints its own body via a CanvasWidgetController (the equivalent of LiteGraph onDrawForeground). The sparkline rolls a live plot of the upstream slider; the swatch fills from `node.state.tint`. Anything you can draw on a `<canvas>` can be a node body.

## Source files

  - [vanilla] vanilla/preview-nodes.ts
  - [vanilla] shared/preview-nodes.ts
  - [react] demos/PreviewNodesDemo.tsx
  - [react] shared/preview-nodes.ts

## How to use this example

Open the live demo at https://xenolithengine.github.io/xenolith-graph/examples/preview-nodes/ to interact with it in the browser. The same source files are
reproduced verbatim in the page so you can copy-paste into your own project. Every example is
self-contained — pick one, copy the files, install `@xenolithengine/graph-editor` + the relevant framework
adapter, and it runs.

## See also

- Full project docs: https://xenolithengine.github.io/xenolith-graph/llms.txt
- All examples (raw): https://xenolithengine.github.io/xenolith-graph/api/graphs.jsonl
- MCP tool catalog: https://xenolithengine.github.io/xenolith-graph/api/mcp-tools.json
- Repository: https://github.com/XenolithEngine/xenolith-graph
