# `MingaEditor.Mouse.HitTest`
[🔗](https://github.com/jsmestad/minga/blob/main/lib/minga_editor/mouse/hit_test.ex#L1)

Resolves mouse screen coordinates to editor targets.

# `position_result`

```elixir
@type position_result() ::
  {:position, MingaEditor.Mouse.Target.Buffer.position()}
  | {:command, term()}
  | :block_noop
  | :miss
```

# `state`

```elixir
@type state() :: MingaEditor.State.t()
```

# `target`

```elixir
@type target() ::
  {:buffer, MingaEditor.Mouse.Target.Buffer.t()}
  | {:command, term()}
  | :block_noop
  | :miss
```

# `buffer_gutter_width`

```elixir
@spec buffer_gutter_width(pid() | nil, non_neg_integer()) :: non_neg_integer()
```

# `clamp_col_to_line`

```elixir
@spec clamp_col_to_line(pid(), non_neg_integer(), non_neg_integer()) ::
  non_neg_integer()
```

# `content_text_width`

```elixir
@spec content_text_width(pid(), non_neg_integer(), pos_integer()) :: pos_integer()
```

# `position`

```elixir
@spec position(
  state() | nil,
  pid(),
  MingaEditor.Window.t() | nil,
  integer(),
  non_neg_integer(),
  non_neg_integer(),
  {pos_integer(), pos_integer(), non_neg_integer()}
) :: position_result()
```

# `resolve_buffer`

```elixir
@spec resolve_buffer(state(), integer(), integer()) :: target()
```

# `scroll_top`

```elixir
@spec scroll_top(
  MingaEditor.Window.t() | nil,
  pos_integer(),
  pos_integer(),
  non_neg_integer(),
  pid()
) ::
  non_neg_integer()
```

---

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