# `Dala.ComponentRegistry`
[🔗](https://github.com/manhvu/dala/blob/main/lib/dala/component_registry.ex#L1)

Public API for component registry operations.

This module delegates to `Dala.Ui.NativeView.Registry` for managing
component processes in the UI tree.

# `deregister`

```elixir
@spec deregister(pid(), atom(), module()) :: :ok
```

Remove a component registration.

# `lookup`

```elixir
@spec lookup(pid(), atom(), module()) :: {:ok, pid()} | {:error, :not_found}
```

Look up the component pid for a given key.

# `reconcile`

```elixir
@spec reconcile(pid(), MapSet.t()) :: :ok
```

Stop any component processes for `screen_pid` whose {id, module} key is NOT
in `active_keys`. Called after each render to reap components that left the tree.

# `register`

```elixir
@spec register(pid(), atom(), module(), pid()) :: :ok
```

Register a component process.

Raises if the same {screen_pid, id, module} is already registered
(duplicate id on the same screen).

# `start_link`

```elixir
@spec start_link(keyword()) :: GenServer.on_start()
```

Start the component registry.

---

*Consult [api-reference.md](api-reference.md) for complete listing*
