OctaStar. Phoenix. Controller
(octa_star v0.1.0)
Copy Markdown
Phoenix controller helpers for OctaStar.
Use use OctaStar, :controller from your web module after
use Phoenix.Controller has been applied:
def controller do
quote do
use Phoenix.Controller, formats: [:html]
use OctaStar, :controller
end
endControllers implement OctaStar.StarView:
@impl StarView
def handle_event(conn, "increment", signals), do: ...assign/3 vs signal/3
assign/3sets a Plug connection assign. Function components can read it via@key, but it is never sent to the browser.signal/3doesassign/3and tracks the key for automatic flushing. Function components can read it, and the dispatcher sends it to the Datastar client as a signal patch.
Summary
Functions
Extracts tracked signal keys, values, and per-signal options.
Flushes tracked signals as Datastar signal patch events.
Returns the tracked signal map as JSON for data-signals.
Patches a rendered component or HTML value against current assigns.
Assigns a value and tracks it as a Datastar signal.
Functions
@spec extract_signals(Plug.Conn.t()) :: [{atom(), term(), keyword()}]
Extracts tracked signal keys, values, and per-signal options.
@spec flush_signals(Plug.Conn.t()) :: Plug.Conn.t()
Flushes tracked signals as Datastar signal patch events.
@spec init_signals(Plug.Conn.t()) :: String.t() | nil
Returns the tracked signal map as JSON for data-signals.
@spec patch_element(Plug.Conn.t(), (map() -> term()) | term(), keyword()) :: Plug.Conn.t()
Patches a rendered component or HTML value against current assigns.
@spec signal(Plug.Conn.t(), atom(), term(), keyword()) :: Plug.Conn.t()
Assigns a value and tracks it as a Datastar signal.