MingaEditor.RenderModel.Window.ResidentBuild (Minga v0.1.0)

Copy Markdown View Source

Renderer-owned delta-driven resident composition state.

Summary

Functions

Plans source requirements before the orchestration stage fetches lines.

Types

inputs()

@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()})
}

payload()

plan()

@type plan() ::
  :reuse
  | {:hydrate, atom()}
  | {:splice, non_neg_integer(), non_neg_integer(), non_neg_integer()}
  | {:splices, [non_neg_integer()]}

retained_rows()

@type retained_rows() :: %{
  optional(Minga.RenderModel.Window.Row.row_id()) =>
    {non_neg_integer(), Minga.RenderModel.Window.Row.t()}
}

source()

@type source() ::
  {:complete, [String.t()]} | {:range, non_neg_integer(), [String.t()]}

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()
}

Functions

plan(prev, inputs)

@spec plan(t() | nil, map()) :: plan()

Plans source requirements before the orchestration stage fetches lines.

run(prev, inputs)

@spec run(t() | nil, inputs()) :: {t(), map(), MingaEditor.UI.FontRegistry.t()}