defmodule AshHqWeb.Components.DocSidebar do use Surface.Component alias AshHqWeb.Routes alias Surface.Components.LivePatch prop class, :css_class, default: "" prop libraries, :list, required: true prop extension, :any, default: nil prop guide, :any, default: nil prop library, :any, default: nil prop library_version, :any, default: nil prop selected_versions, :map, default: %{} prop id, :string, required: true prop dsl, :any, required: true prop module, :any, required: true prop sidebar_state, :map, required: true prop collapse_sidebar, :event, required: true prop expand_sidebar, :event, required: true @spec render(any) :: Phoenix.LiveView.Rendered.t() def render(assigns) do ~F""" """ end defp modules_and_categories(modules) do modules |> Enum.group_by(&{&1.category_index, &1.category}) |> Enum.sort_by(fn {{index, _}, _} -> index end) |> Enum.map(fn {{_, category}, list} -> {category, list} end) end defp render_dsls(assigns, dsls, path) do ~F""" """ end def render_icon(assigns, "Resource") do ~F""" """ end def render_icon(assigns, "Api") do ~F""" """ end def render_icon(assigns, "DataLayer") do ~F""" """ end def render_icon(assigns, "Flow") do ~F""" """ end def render_icon(assigns, "Notifier") do ~F""" """ end def render_icon(assigns, "Registry") do ~F""" """ end def render_icon(assigns, _) do ~F""" """ end defp guides_by_category(guides) do guides |> Enum.group_by(& &1.category) |> Enum.sort_by(fn {category, _guides} -> Enum.find_index(["Tutorials", "Topics", "How To", "Misc"], &(&1 == category)) || :infinity end) |> Enum.map(fn {category, guides} -> {category, Enum.sort_by(guides, & &1.order)} end) end defp selected_version_name(library, selected_versions) do if selected_versions[library.id] in ["latest", nil, ""] do "latest" else Enum.find_value(library.versions, fn version -> version.version if version.id == selected_versions[library.id] do version.version end end) || "latest" end end defp get_extensions(library, selected_versions) do case Enum.find(library.versions, &(&1.id == selected_versions[library.id])) do nil -> [] version -> version.extensions end end end