Integer viewport bounds used by layout strategy planning contexts.
Layout strategies receive %LivePanels.Canvas.Layout.Context{} values with
viewport_bounds and usable_bounds fields normalized through this module.
Bounds use inclusive :left/:top origins and exclusive :right/:bottom
edges so strategy code can derive rectangle width and height by subtraction.
Summary
Types
Functions
@spec fit(map(), pos_integer(), pos_integer()) :: {:ok, t()} | :error
@spec to_rect(t()) :: %{ x: integer(), y: integer(), w: non_neg_integer(), h: non_neg_integer() }