[Framework examples →](../)

# Custom 2D input

View live: <https://observablehq.observablehq.cloud/framework-example-custom-input-2d/>

This Observable Framework example demonstrates how to implement a custom 2D range input using a canvas element. The custom input is bound to two separate 1D range inputs using side effects. The custom 2D range input is implemented in [`src/Range2D.js`](./src/Range2D.js) and usage is demonstrated in [`src/index.md`](./src/index.md?plain=1).
