# `Jido.Chat.Markdown.Node`
[🔗](https://github.com/agentjido/jido_chat/blob/v1.0.0/lib/jido/chat/markdown/node.ex#L1)

Canonical Markdown AST node used by `Jido.Chat.Markdown`.

# `node_type`

```elixir
@type node_type() ::
  :root
  | :paragraph
  | :text
  | :strong
  | :emphasis
  | :link
  | :code
  | :code_block
  | :heading
  | :list
  | :list_item
  | :blockquote
  | :table
  | :table_row
  | :table_cell
  | :divider
```

# `t`

```elixir
@type t() :: %Jido.Chat.Markdown.Node{
  align: nil | nil | binary(),
  children: [any()],
  language: nil | nil | binary(),
  level: nil | nil | integer(),
  metadata: map(),
  ordered: nil | nil | boolean(),
  start: nil | nil | integer(),
  text: nil | nil | binary(),
  type:
    :root
    | :paragraph
    | :text
    | :strong
    | :emphasis
    | :link
    | :code
    | :code_block
    | :heading
    | :list
    | :list_item
    | :blockquote
    | :table
    | :table_row
    | :table_cell
    | :divider,
  url: nil | nil | binary()
}
```

# `from_map`

```elixir
@spec from_map(map()) :: t()
```

Builds a Markdown node from serialized map data.

# `new`

```elixir
@spec new(t() | map()) :: t()
```

Creates a canonical Markdown node.

# `normalize`

```elixir
@spec normalize(t() | map() | String.t() | nil) :: t() | nil
```

Normalizes a Markdown node input.

# `schema`

Returns the schema for a Markdown node.

# `to_map`

```elixir
@spec to_map(t()) :: map()
```

Serializes a Markdown node into a plain map with a type marker.

---

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