# `MingaEditor.RenderPipeline.ComposedFrame`
[🔗](https://github.com/jsmestad/minga/blob/main/lib/minga_editor/render_pipeline/composed_frame.ex#L1)

Product of the Compose stage: the flattened semantic frame the Emit stage
encodes.

Holds the frame's `RenderModel.Window` list (already flattened across every
editor window) and the single resolved `RenderModel.Cursor`. The top-level
`RenderModel.Builder` reads these two fields directly, so this struct is the
literal pipeline product handed to frontend adapters (#2241). Chrome and UI
surfaces ride alongside via the `Chrome` struct passed to the builder, not
through this frame.

# `t`

```elixir
@type t() :: %MingaEditor.RenderPipeline.ComposedFrame{
  cursor: Minga.RenderModel.Cursor.t(),
  windows: [Minga.RenderModel.Window.t()]
}
```

# `new`

```elixir
@spec new([Minga.RenderModel.Window.t()], Minga.RenderModel.Cursor.t()) :: t()
```

Builds a composed frame from the flattened window list and resolved cursor.

---

*Consult [api-reference.md](api-reference.md) for complete listing*
