defmodule LiveDebuggerWeb.Live.Traces.Components do @moduledoc """ UI components for the TracesLive module. """ use LiveDebuggerWeb, :live_component alias LiveDebugger.Structs.Trace alias LiveDebuggerWeb.Components.ElixirDisplay alias LiveDebugger.Utils.TermParser attr(:id, :string, required: true) attr(:trace, :map, default: nil) def trace_fullscreen(assigns) do assigns = case assigns.trace do nil -> assigns |> assign(:callback_name, "Unknown trace") |> assign(:trace_args, []) trace -> assigns |> assign(:callback_name, Trace.callback_name(trace)) |> assign(:trace_args, trace.args) end ~H""" <.fullscreen id={@id} title={@callback_name}>
<.trace_body id={@id <> "-fullscreen"} trace_args={@trace_args} trace={@trace} />
""" end attr(:id, :string, required: true) attr(:trace_args, :list, required: true) attr(:trace, :map, required: true) def trace_body(assigns) do ~H""" <%= for {args, index} <- Enum.with_index(@trace_args) do %>
0} class="border-t border-default-border w-full">

Arg <%= index %> (<%= Trace.arg_name(@trace, index) %>)

<.copy_button id={"#{@id}-arg-#{index}"} value={TermParser.term_to_copy_string(args)} />
"-#{index}"} node={TermParser.term_to_display_tree(args)} level={1} />
<% end %> """ end end