Nottui.FocusA handle represents a primitive area that can request, receive and lose the focus. A visible UI is made of many handles, of which at most one can be active.
val make : unit -> handleCreate a new handle
val request : handle -> unitRequest the focus
val release : handle -> unitRelease the focus (if the handle has it)
status represents the state in which a handle can be. Externally we care about having or not the focus, which can be queried with the has_focus function. Internally, status also keeps track of conflicts (if multiple handles requested the focus).
val empty : statusA status that has no focus and no conflicts
Get the status of a focus handle. The status is a reactive value: it will evolve over time, as focus is received or lost.
val has_focus : status -> boolCheck if this status corresponds to an active focus
TODO This implements a more general concept of "reactive auction":