LivePanels.Canvas.Layout (livepanels v0.1.0)

Copy Markdown View Source

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

adapter()

@type adapter() :: map()

placement()

strategy()

@type strategy() :: atom() | String.t() | module()

Functions

adapter(state, scope, opts \\ [])

Returns a context adapter payload for external layout engines.

adapter_commands(state, result, opts \\ [])

@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.

adapter_placements(state, result, opts \\ [])

@spec adapter_placements(
  LivePanels.Canvas.State.t(),
  map() | [map()],
  keyword() | map()
) :: [
  {String.t(), placement()}
]

Converts external layout coordinates into {item_id, placement} tuples.

plan(state, actor, strategy, opts \\ [])

@spec plan(LivePanels.Canvas.State.t(), map() | nil, strategy(), keyword() | map()) ::
  {:ok, [placement()]} | {:error, term()}

Returns placement data for a registered layout strategy.

registered_strategies(socket)

@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.