Emerge.Engine.Reconcile (Emerge v0.3.0)

Copy Markdown View Source

Reconcile Emerge.Engine.Element trees into stable node ids and patch operations.

Summary

Functions

Assign fresh node ids to a tree without a previous version.

Reconcile a new tree against the previous vdom.

Types

ctx()

@type ctx() :: %{
  next_id: non_neg_integer(),
  seen: MapSet.t(),
  old_key_index: %{
    optional(term()) => %{scope: scope_ref(), vnode: Emerge.Engine.VNode.t()}
  }
}

result()

scope_ref()

@type scope_ref() ::
  :root | {:children, non_neg_integer()} | {:nearby, non_neg_integer()}

Functions

assign_ids(element)

Assign fresh node ids to a tree without a previous version.

assign_ids(element, next_id)

reconcile(old_vnode, element)

@spec reconcile(Emerge.Engine.VNode.t() | nil, Emerge.Engine.Element.t()) :: result()

Reconcile a new tree against the previous vdom.

reconcile(old_vnode, element, next_id)