A text display widget with optional wrapping, alignment, and scrolling.
Fields
:text- the text content. Accepts a plain string (with\nfor newlines), a%ExRatatui.Text.Span{}, a%ExRatatui.Text.Line{}, a%ExRatatui.Text{}, or a list of spans/lines. SeeExRatatui.Textfor the full rich-text model.:style-%ExRatatui.Style{}for foreground/background/modifiers:block- optional%ExRatatui.Widgets.Block{}container (borders, title):alignment-:left,:center, or:right:wrap-trueto wrap text at widget boundary:scroll-{vertical, horizontal}scroll offset
Examples
iex> %ExRatatui.Widgets.Paragraph{text: "Hello!", alignment: :center}
%ExRatatui.Widgets.Paragraph{
text: "Hello!",
style: %ExRatatui.Style{},
block: nil,
alignment: :center,
wrap: false,
scroll: {0, 0}
}
iex> alias ExRatatui.Widgets.{Paragraph, Block}
iex> alias ExRatatui.Style
iex> %Paragraph{
...> text: "Hello, world!",
...> style: %Style{fg: :green, modifiers: [:bold]},
...> alignment: :center,
...> block: %Block{title: "Greeting", borders: [:all]}
...> }
%ExRatatui.Widgets.Paragraph{
text: "Hello, world!",
style: %ExRatatui.Style{fg: :green, modifiers: [:bold]},
block: %ExRatatui.Widgets.Block{title: "Greeting", borders: [:all]},
alignment: :center,
wrap: false,
scroll: {0, 0}
}Rich text with per-span styling:
iex> alias ExRatatui.Widgets.Paragraph
iex> alias ExRatatui.Text.{Line, Span}
iex> alias ExRatatui.Style
iex> %Paragraph{
...> text: [
...> Line.new([Span.new("error: ", style: %Style{fg: :red, modifiers: [:bold]}),
...> Span.new("something broke")])
...> ]
...> }.text
...> |> length()
1
Summary
Types
@type t() :: %ExRatatui.Widgets.Paragraph{ alignment: :left | :center | :right, block: ExRatatui.Widgets.Block.t() | nil, scroll: {non_neg_integer(), non_neg_integer()}, style: ExRatatui.Style.t(), text: text_like(), wrap: boolean() }
@type text_like() :: String.t() | ExRatatui.Text.Span.t() | ExRatatui.Text.Line.t() | ExRatatui.Text.t() | [ExRatatui.Text.Line.t()] | [ExRatatui.Text.Span.t()]