# `Plushie.Type.Length`
[🔗](https://github.com/plushie-ui/plushie-elixir/blob/v0.7.2/lib/plushie/type/length.ex#L1)

Size value for the `width` and `height` props on most widgets.

Maps to iced's `Length` enum. Accepts `:fill`, `:shrink`,
`{:fill_portion, n}`, or a numeric pixel value.

# `t`

```elixir
@type t() :: :fill | :shrink | {:fill_portion, pos_integer()} | number()
```

# `cast`

```elixir
@spec cast(term()) :: {:ok, t()} | :error
```

Validates a length value.

## Examples

    iex> Plushie.Type.Length.cast(:fill)
    {:ok, :fill}

    iex> Plushie.Type.Length.cast(:shrink)
    {:ok, :shrink}

    iex> Plushie.Type.Length.cast({:fill_portion, 3})
    {:ok, {:fill_portion, 3}}

    iex> Plushie.Type.Length.cast(200)
    {:ok, 200}

    iex> Plushie.Type.Length.cast(:bogus)
    :error

# `encode`

```elixir
@spec encode(length :: t()) :: String.t() | number() | map()
```

Encodes a length value to the wire format expected by the renderer.

## Examples

    iex> Plushie.Type.Length.encode(:fill)
    "fill"

    iex> Plushie.Type.Length.encode(:shrink)
    "shrink"

    iex> Plushie.Type.Length.encode({:fill_portion, 3})
    %{fill_portion: 3}

    iex> Plushie.Type.Length.encode(200)
    200

---

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