StarView. Phoenix. Controller
(star_view v0.3.2)
Copy Markdown
Phoenix controller helpers for StarView.
Use use StarView, :controller from your web module after
use Phoenix.Controller has been applied:
def controller do
quote do
use Phoenix.Controller, formats: [:html]
use StarView, :controller
end
endControllers implement StarView.StarView:
@impl StarView
def handle_event("increment", signals, conn), 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.