Skip to main content

lib/bb/tui/state/parameters.ex

defmodule BB.TUI.State.Parameters do
  @moduledoc """
  Parameter browser state, split out of `BB.TUI.State`.

  `list` is the local parameter `{path, value}` list with `metadata` keyed by
  path; `tabs`/`tab_selected` drive the Local/bridge tab strip; `remote` caches
  per-bridge remote parameter fetches; `selected` is the highlighted row.
  """

  defstruct list: [],
            metadata: %{},
            tabs: [:local],
            tab_selected: 0,
            remote: %{},
            selected: 0

  @type t :: %__MODULE__{
          list: [{list(), term()}],
          metadata: %{list() => map()},
          tabs: [:local | {:bridge, atom()}],
          tab_selected: non_neg_integer(),
          remote: %{atom() => [map()] | {:error, term()}},
          selected: non_neg_integer()
        }
end