Headless canvas layout planning contracts.
LivePanels.Canvas.Arrange submits layout commands. This module exposes the
planning side: registered strategy lookup, external-engine adapter payloads,
and conversion from external coordinates back into ordinary place_item
command tuples.
Summary
Functions
Returns a context adapter payload for external layout engines.
Converts external layout coordinates into place_item commands.
Converts external layout coordinates into {item_id, placement} tuples.
Returns placement data for a registered layout strategy.
Returns the layout strategies available to a socket or state.
Types
Functions
@spec adapter( LivePanels.Canvas.State.t(), LivePanels.Canvas.Layout.Context.scope(), keyword() | map() ) :: adapter()
Returns a context adapter payload for external layout engines.
@spec adapter_commands( LivePanels.Canvas.State.t(), map() | [map()], keyword() | map() ) :: [ {:place_item, String.t(), placement()} ]
Converts external layout coordinates into place_item commands.
Result entries accept atom or string keys: id, x, y, and optional
w, h, space, and anchor.
@spec adapter_placements( LivePanels.Canvas.State.t(), map() | [map()], keyword() | map() ) :: [ {String.t(), placement()} ]
Converts external layout coordinates into {item_id, placement} tuples.
@spec plan(LivePanels.Canvas.State.t(), map() | nil, strategy(), keyword() | map()) :: {:ok, [placement()]} | {:error, term()}
Returns placement data for a registered layout strategy.
@spec registered_strategies(Phoenix.LiveView.Socket.t() | LivePanels.Canvas.State.t()) :: %{ optional(String.t()) => module() }
Returns the layout strategies available to a socket or state.