# `MingaEditor.Renderer.Submission`
[🔗](https://github.com/jsmestad/minga/blob/main/lib/minga_editor/renderer/submission.ex#L1)

Editor-to-Renderer transport containing only changed bulk highlight data.

The packed intent is private to this envelope. Materialize it in mailbox order before rejecting or coalescing frames, so every renderer workflow receives a complete immutable Intent. A full submission replaces the retained maps; a delta preserves unchanged buffers and explicitly removes closed ones.

# `highlights`

```elixir
@type highlights() :: %{required(pid()) =&gt; MingaEditor.UI.Highlight.t()}
```

# `revisions`

```elixir
@type revisions() :: %{required(pid()) =&gt; reference()}
```

# `semantic_tokens`

```elixir
@type semantic_tokens() :: %{
  required(pid()) =&gt; MingaEditor.State.LSP.semantic_layer()
}
```

# `t`

```elixir
@opaque t()
```

# `delta`

```elixir
@spec delta(
  MingaEditor.RenderPipeline.Intent.t(),
  revisions(),
  revisions(),
  revisions()
) :: t()
```

Builds a delta against the same renderer process's last submitted source revisions.

# `full`

```elixir
@spec full(MingaEditor.RenderPipeline.Intent.t()) :: t()
```

Builds a self-contained submission for a new renderer or an independent caller.

# `materialize`

```elixir
@spec materialize(t(), highlights(), semantic_tokens()) ::
  {MingaEditor.RenderPipeline.Intent.t(), highlights(), semantic_tokens()}
```

Installs the update and restores the exact full intent before frame scheduling.

---

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