Renderer-owned delta-driven resident composition state.
Summary
Functions
Plans source requirements before the orchestration stage fetches lines.
Types
@type inputs() :: %{ source: source(), plan: plan(), line_count: non_neg_integer(), compose_fp: integer(), highlight_fp: integer() | nil, reset?: boolean(), hydration_reason: atom() | nil, keyframe?: boolean(), retained_rows: retained_rows(), edit_deltas: [Minga.Buffer.EditDelta.t()], font_registry: MingaEditor.UI.FontRegistry.t(), build_all: (MingaEditor.UI.FontRegistry.t() -> {[payload()], MingaEditor.UI.FontRegistry.t()}), build_dirty: (MapSet.t(non_neg_integer()), MingaEditor.UI.FontRegistry.t() -> {%{required(non_neg_integer()) => payload()}, MingaEditor.UI.FontRegistry.t()}) }
@type payload() :: MingaEditor.RenderModel.Window.VisualRow.t()
@type plan() :: :reuse | {:hydrate, atom()} | {:splice, non_neg_integer(), non_neg_integer(), non_neg_integer()} | {:splices, [non_neg_integer()]}
@type retained_rows() :: %{ optional(Minga.RenderModel.Window.Row.row_id()) => {non_neg_integer(), Minga.RenderModel.Window.Row.t()} }
@type source() :: {:complete, [String.t()]} | {:range, non_neg_integer(), [String.t()]}
@type t() :: %MingaEditor.RenderModel.Window.ResidentBuild{ compose_fp: integer() | nil, highlight_fp: integer() | nil, line_count: non_neg_integer(), revision: pos_integer(), store: MingaEditor.RenderModel.Window.ResidentStore.t() }