CanvasSource
Externally owned source of image or native drawing output for one or more canvases.
A source is an immutable description and does not own a screen, retained node, or attachment. Each attached canvas opens its own binding on the owning UI thread; replacing the source or detaching that session closes the binding without closing the source. Source identity, rather than value equality, determines whether reconciliation replaces an existing binding. Native implementations belong in the matching versioned runtime and must keep their handles and producer callbacks outside draw commands.