LivePanels.Canvas.Layout.Context (livepanels v0.1.0)

Copy Markdown View Source

Headless planning context passed to canvas layout strategies.

The context is derived from canonical canvas state plus the requesting actor. Strategies receive already-scoped items, viewport geometry, reservation-aware usable bounds, blocking rectangles, z-order metadata, current selection, and normalized options. They return placement data; reducers and persistence stay in LivePanels.

Summary

Types

scope()

@type scope() :: :visible | :all | :selection | {:items, [String.t()]}

t()

@type t() :: %LivePanels.Canvas.Layout.Context{
  actor: map() | nil,
  blocked_rects: [map()],
  items: [LivePanels.Item.t()],
  options: map(),
  scope: scope(),
  selected_item_ids: MapSet.t(String.t()),
  selection: LivePanels.Canvas.Selection.t(),
  state: LivePanels.Canvas.State.t(),
  usable_bounds: LivePanels.Canvas.Layout.Bounds.t(),
  usable_viewport: map(),
  viewport: map(),
  viewport_bounds: LivePanels.Canvas.Layout.Bounds.t(),
  z_order: [String.t()],
  z_positions: %{optional(String.t()) => non_neg_integer()}
}