defmodule LiveDebuggerWeb.Components.TabGroup do @moduledoc """ Component that displays a group of LiveView processes. """ use LiveDebuggerWeb, :component alias LiveDebugger.Utils.Parsers alias LiveDebuggerWeb.Helpers.RoutesHelper attr(:transport_pid, :any, required: true) attr(:grouped_lv_processes, :list, required: true) def group(assigns) do ~H"""

<%= Parsers.pid_to_string(@transport_pid) %>

<.list elements={@grouped_lv_processes}> <:item :let={{root_lv_process, lv_processes}}>
<.list_element lv_process={root_lv_process} />
<.list elements={lv_processes} item_class="group"> <:item :let={lv_process}>
<.nested_indent /> <.list_element lv_process={lv_process} />
""" end defp nested_indent(assigns) do ~H"""
""" end attr(:lv_process, LiveDebugger.Structs.LvProcess, required: true) defp list_element(assigns) do ~H""" <.link navigate={RoutesHelper.channel_dashboard(@lv_process.pid)} class="flex justify-between items-center h-full w-full text-xs p-1.5 hover:bg-surface-0-bg-hover rounded-sm live-view-link" >

<%= Parsers.pid_to_string(@lv_process.pid) %> · <%= @lv_process.socket_id %>

<.badge :if={@lv_process.embedded? and not @lv_process.nested?} text="Embedded" icon="icon-code" />
""" end end