# `LivePanels.Canvas.Layout.Bounds`
[🔗](https://github.com/livepanels/livepanels/blob/v0.1.0/lib/livepanels/canvas/layout/bounds.ex#L1)

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.

# `t`

```elixir
@type t() :: %{left: integer(), top: integer(), right: integer(), bottom: integer()}
```

# `axis_start`

```elixir
@spec axis_start(integer(), integer(), integer(), integer()) :: integer()
```

# `fit`

```elixir
@spec fit(map(), pos_integer(), pos_integer()) :: {:ok, t()} | :error
```

# `from_viewport`

```elixir
@spec from_viewport(map() | term()) :: t()
```

# `to_rect`

```elixir
@spec to_rect(t()) :: %{
  x: integer(),
  y: integer(),
  w: non_neg_integer(),
  h: non_neg_integer()
}
```

---

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