"""
end
# The whole page has to load and then hooks are mounded.
# There may be a tiny delay before the markdown is rendered
# or and editors are mounted, so show neat placeholders immediately.
defp render_markdown_content_placeholder("" = _content) do
assigns = %{}
~L"""
"""
end
defp render_markdown_content_placeholder(_content) do
assigns = %{}
~L"""
"""
end
defp render_editor_content_placeholder("" = _content) do
assigns = %{}
~L"""
"""
end
defp render_editor_content_placeholder(_content) do
assigns = %{}
~L"""
"""
end
defp render_outputs(outputs, cell_id) do
assigns = %{outputs: outputs, cell_id: cell_id}
~L"""
<%= for {output, index} <- @outputs |> Enum.reverse() |> Enum.with_index(), output != :ignored do %>
"""
end
defp render_output(output, id) when is_binary(output) do
lines = ansi_to_html_lines(output)
assigns = %{lines: lines, id: id}
~L"""
<%= for line <- @lines do %>
<%= raw line %>
<% end %>
"""
end
defp render_output({:inspect, inspected}, id) do
lines = ansi_to_html_lines(inspected)
assigns = %{lines: lines, id: id}
~L"""
<%= for line <- @lines do %>
<%= raw line %>
<% end %>
"""
end
defp render_output({:error, formatted}, _id) do
assigns = %{formatted: formatted}
~L"""
<%= @formatted %>
"""
end
defp ansi_to_html_lines(string) do
string
|> ansi_string_to_html(
# Make sure every line is styled separately,
# so tht later we can safely split the whole HTML
# into valid HTML lines.
renderer: fn style, content ->
content
|> IO.iodata_to_binary()
|> String.split("\n")
|> Enum.map(&[~s{}, &1, ~s{}])
|> Enum.intersperse("\n")
end
)
|> Phoenix.HTML.safe_to_string()
|> String.split("\n")
end
defp render_cell_status(%{evaluation_status: :evaluating}) do
assigns = %{}
~L"""
Evaluating
"""
end
defp render_cell_status(%{evaluation_status: :queued}) do
assigns = %{}
~L"""
Queued
"""
end
defp render_cell_status(%{validity_status: :evaluated}) do
assigns = %{}
~L"""
Evaluated
"""
end
defp render_cell_status(%{validity_status: :stale}) do
assigns = %{}
~L"""