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

Owns committed, active, and explicitly discarded text-presentation leases.

# `key`

```elixir
@type key() :: {MingaEditor.Window.id(), pos_integer()}
```

# `t`

```elixir
@type t() :: %MingaEditor.Renderer.TextPresentations{
  index: MingaEditor.Renderer.TextInteractionIndex.t(),
  leases: %{optional(key()) =&gt; MingaEditor.Renderer.TextPresentation.t()}
}
```

# `acknowledge`

```elixir
@spec acknowledge(t(), [MingaEditor.Renderer.TextPresentation.t()]) :: t()
```

Retains acknowledged presentation candidates without changing visibility.

# `acknowledge_output`

```elixir
@spec acknowledge_output(t(), MingaEditor.RenderPipeline.Input.t()) :: t()
```

Retains every presentation carried by one acknowledged pipeline output.

# `activate`

```elixir
@spec activate(t(), MingaEditor.Window.id(), non_neg_integer()) ::
  {:ok, t()} | {:error, :unknown}
```

Marks an acknowledged presentation active only when its exact lease exists.

# `discard`

```elixir
@spec discard(t(), MingaEditor.Window.id(), non_neg_integer()) :: t()
```

Drops only the exact candidate named by the frontend lifecycle event.

# `drop_buffer`

```elixir
@spec drop_buffer(t(), pid()) :: t()
```

# `new`

```elixir
@spec new() :: t()
```

# `reader`

```elixir
@spec reader(t()) :: MingaEditor.Renderer.TextInteractionIndex.Reader.t()
```

# `reset`

```elixir
@spec reset(t()) :: t()
```

# `resolve`

```elixir
@spec resolve(t(), MingaEditor.Mouse.TextEvent.t()) ::
  {:ok, MingaEditor.Mouse.Target.Text.t()} | {:error, :inactive | atom()}
```

Resolves input only against the presentation currently declared visible.

---

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