datastar/ds_sse
This module provides functions to work with Datastar server sent events.
See reference here https://data-star.dev/reference/sse_events.
Types
SSE Events that can be send to the client.
Like datastar-patch-elements
.
pub opaque type Event
The merge mode used by patch elements
pub type MergeMode {
After
Append
Before
Inner
Outer
Prepend
Replace
Remove
}
Constructors
-
After
-
Append
-
Before
-
Inner
-
Outer
-
Prepend
-
Replace
-
Remove
pub opaque type PatchElementConfig
pub opaque type PatchSignalsConfig
Functions
pub fn event_to_string(event: Event) -> String
Takes an Event
and generates a string to send back to the client
patch_elements("#target")
|> patch_elements_end
|> event_to_string
Generates:
event: datastar-patch-elements
data: selector #target
pub fn events_to_string(events events: List(Event)) -> String
Takes a list of Event
and generates the string to send to the client
[
patch_elements("<span>Hello</span>")
|> patch_elements_end,
patch_elements("#target")
|> patch_elements_mode(Remove)
|> patch_elements_end,
]
|> events_to_string
Generates:
event: datastar-patch-elements
data: elements <span>Hello</span>
event: datastar-patch-elements
data: mode remove
data: selector #target
pub fn patch_elements() -> PatchElementConfig
Event to send new elements to the client
patch_elements()
|> patch_elements_element("<span>1</span>")
|> patch_elements_selector("#feed")
|> patch_elements_end
Generates:
event: datastar-patch-elements
data: selector #feed
data: elements <span>1</span>
pub fn patch_elements_elements(
config: PatchElementConfig,
value: String,
) -> PatchElementConfig
|> patch_elements_elements("<div>Hello</div>"),
Generates:
id: 123
pub fn patch_elements_end(config: PatchElementConfig) -> Event
pub fn patch_elements_event_id(
config: PatchElementConfig,
value: String,
) -> PatchElementConfig
|> patch_elements_event_id("123"),
Generates:
id: 123
pub fn patch_elements_merge_mode(
config: PatchElementConfig,
value: MergeMode,
) -> PatchElementConfig
|> patch_elements_merge_mode(MergeMode.Inner),
Generates:
data: mode inner
pub fn patch_elements_retry(
config: PatchElementConfig,
value: Int,
) -> PatchElementConfig
|> patch_elements_retry(3000),
Generates:
retry: 3000
pub fn patch_elements_selector(
config: PatchElementConfig,
value: String,
) -> PatchElementConfig
|> patch_elements_selector("#feed"),
Generates:
data: selector #feed
pub fn patch_elements_settle_duration(
config: PatchElementConfig,
value: Int,
) -> PatchElementConfig
pub fn patch_elements_view_transition(
config: PatchElementConfig,
value: Bool,
) -> PatchElementConfig
pub fn patch_signals(signals: Json) -> PatchSignalsConfig
Generate a datastar-patch-signals
event
let json = json.object([
#("name", json.string("sam"))
])
patch_signals(json)
|> patch_signals_end
Generates:
event: datastar-patch-signals
data: signals {\"name\":\"Sam\"}
pub fn patch_signals_end(config: PatchSignalsConfig) -> Event
pub fn patch_signals_event_id(
config: PatchSignalsConfig,
value: String,
) -> PatchSignalsConfig
...
|> patch_signals_event_id("123")
Generates:
id: 123
pub fn patch_signals_only_if_missing(
config: PatchSignalsConfig,
value: Bool,
) -> PatchSignalsConfig
|> patch_signals_only_if_missing(True),
Generates:
data: onlyIfMissing true
pub fn patch_signals_retry(
config: PatchSignalsConfig,
value: Int,
) -> PatchSignalsConfig
|> patch_signals_retry(3000),
Generates:
retry: 3000