Emerge.Engine.DiffState (Emerge v0.2.1)

Copy Markdown View Source

Stateful diff helper that keeps numeric id assignments stable.

Summary

Types

t()

@type t() :: %Emerge.Engine.DiffState{
  event_registry: %{
    required(binary()) => %{required(term()) => {pid(), term()}}
  },
  tree: Emerge.Engine.Element.t() | nil,
  vdom: Emerge.Engine.VNode.t() | nil
}

Functions

build_event_registry(tree)

diff_and_encode(state, tree)

@spec diff_and_encode(t(), Emerge.Engine.Element.t()) ::
  {binary(), t(), Emerge.Engine.Element.t()}

Compute patches for a new tree and return {patch_binary, updated_state, assigned_tree}.

dispatch_click(state, id_bin)

@spec dispatch_click(t(), binary()) :: :ok

dispatch_event(diff_state, id_bin, event)

@spec dispatch_event(t(), binary(), term()) :: :ok

dispatch_event(diff_state, id_bin, event, payload)

@spec dispatch_event(t(), binary(), term(), term()) :: :ok

lookup_event(diff_state, id_bin, event)

@spec lookup_event(t(), binary(), term()) :: {:ok, {pid(), term()}} | :error

new(tree \\ nil)

Initialize diff state with an optional tree.