# `MingaEditor.Input.OverlaySink`
[🔗](https://github.com/jsmestad/minga/blob/main/lib/minga_editor/input/overlay_sink.ex#L1)

Swallow-by-default mouse handler for placed secondary overlays (#2281).

The eight footer-band overlays (float popup, agent context, tool manager,
extension panel, observatory, edit timeline, notifications, extension overlay)
are now FocusTree nodes with a real rect. A FocusTree node with no handler
bubbles its mouse events to ancestors (router passthrough semantics), which
would let a click or scroll over a visible overlay reach the buffer underneath
and move its cursor. That is the exact bug the epic's AC-2 forbids.

This handler is the minimal safety floor: it consumes (`:handled`) presses,
releases, drags, and scroll wheel events that land inside the overlay's rect,
so they never bubble to the buffer. It does not yet interpret them, per-surface
activation semantics (clicking a notification, an observatory row, a timeline
entry) land as the epic's follow-up children (#2330). Those children replace
this sink with a surface-specific handler; until then, the overlay is safe to
click without editing the buffer behind it.

# `state`

```elixir
@type state() :: MingaEditor.Input.Handler.handler_state()
```

---

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