Behaviour for headless canvas layout strategies.
Strategies receive a %LivePanels.Canvas.Layout.Context{} plus normalized
params. They return placement maps only. LivePanels owns authorization,
reducer application, history, persistence, shared fanout, and browser
projection.
Summary
Types
Callbacks
@callback plan(LivePanels.Canvas.Layout.Context.t(), LivePanels.Canvas.Layout.Options.t()) :: {:ok, [placement()]} | {:error, term()}