Nex.Datastar
(nex_core v0.4.3)
Copy Markdown
Server-side helpers for the Datastar hypermedia framework.
Produces SSE event maps compatible with Nex.stream/1 that follow
the Datastar wire protocol.
Usage
Nex.stream(fn send ->
send.(Nex.Datastar.patch_elements(~s(<div id="feed">Hello</div>)))
send.(Nex.Datastar.patch_signals(%{count: 1}))
end)
Summary
Functions
Builds a datastar-patch-elements SSE event.
Returns a map that can be passed directly to the send function
inside Nex.stream/1.
Options
:selector- CSS selector for the target element. If omitted, Datastar uses the fragment'sidattribute.:mode- Merge mode. One of"morph","inner","outer","prepend","append","before","after","upsertAttributes".:use_view_transition- Whether to use view transitions. Defaults tofalse.
Examples
Nex.Datastar.patch_elements(~s(<div id="counter">42</div>))
#=> %{event: "datastar-patch-elements", data: "fragments <div id=\"counter\">42</div>"}
Nex.Datastar.patch_elements("<span>hi</span>", selector: "#feed", mode: "append")
Builds a datastar-patch-signals SSE event.
Signals are encoded as JSON following RFC 7396 (JSON Merge Patch).
Options
:only_if_missing- Only set signals that don't already exist on the client. Defaults tofalse.
Examples
Nex.Datastar.patch_signals(%{count: 1, name: "Nex"})
#=> %{event: "datastar-patch-signals", data: "signals {\"count\":1,\"name\":\"Nex\"}"}