datastar

Types

SSE Events that can be send to the client

pub type Event {
  EventMergeFragment(MergeFragmentEventConfig)
  EventRemoveFragments(RemoveFragmentsConfig)
  EventMergeSignals(MergeSignalsConfig)
  EventRemoveSignals(RemoveSignalsConfig)
  EventExecuteScript(ExecuteScriptConfig)
}

Constructors

  • EventMergeFragment(MergeFragmentEventConfig)
  • EventRemoveFragments(RemoveFragmentsConfig)
  • EventMergeSignals(MergeSignalsConfig)
  • EventRemoveSignals(RemoveSignalsConfig)
  • EventExecuteScript(ExecuteScriptConfig)
pub opaque type EventOption(phantom)
pub opaque type ExecuteScriptConfig
pub opaque type ExecuteScriptOptionType
pub opaque type MergeFragmentEventConfig
pub opaque type MergeFragmentOptionType

The merge mode used by merge fragments

pub type MergeMode {
  Morph
  Inner
  Outer
  Prepend
  Append
  Before
  After
  UpsertAttributes
}

Constructors

  • Morph
  • Inner
  • Outer
  • Prepend
  • Append
  • Before
  • After
  • UpsertAttributes
pub opaque type MergeSignalsConfig
pub opaque type MergeSignalsOptionType
pub opaque type RemoveFragmentOptionType
pub opaque type RemoveFragmentsConfig
pub opaque type RemoveSignalsConfig
pub opaque type RemoveSignalsOptionType

Functions

pub fn data_attributes(
  value: List(#(String, String)),
) -> EventOption(ExecuteScriptOptionType)

This option is only used by event_execute_script

data_attributes([#("type", "text/javascript")]),

Generates:

data: attributes type text/javascript
pub fn data_auto_remove(
  value: Bool,
) -> EventOption(ExecuteScriptOptionType)

This option is only used by event_execute_script

data_auto_remove(False),

Generates:

data: autoRemove false
pub fn data_merge_mode(
  mode: MergeMode,
) -> EventOption(MergeFragmentOptionType)

This option is only used by event_merge_fragments

data_merge_mode(MergeMode.Inner),

Generates:

data: mergeMode inner
pub fn data_only_if_missing(
  value: Bool,
) -> EventOption(MergeSignalsOptionType)

Option only used by event_merge_signals

pub fn data_selector(
  value: String,
) -> EventOption(MergeFragmentOptionType)

Option only used by event_merge_fragments

data_selector("#feed"),

Generates:

data: selector #feed
pub fn data_settle_duration(value: Int) -> EventOption(a)

Option used by event_merge_fragments and event_remove_fragments

pub fn data_view_transition(value: Bool) -> EventOption(a)

This option is used by event_merge_fragments and event_remove_fragments

pub fn event_execute_script(
  script: String,
  options: List(EventOption(ExecuteScriptOptionType)),
) -> Event

Generate a datastar-execute-script event

event_execute_script("window.location = \"https://data-star.dev\"", [ event_id("123") ])
|> event_to_string

Generates

event: datastar-execute-script
id: 123
data: script window.location = \"https://data-star.dev\"
pub fn event_id(value: String) -> EventOption(a)

Optional for all SSE events

dt.event_id("123"),

Generates:

id: 123
pub fn event_merge_fragments(
  fragments fragments: String,
  options options: List(EventOption(MergeFragmentOptionType)),
) -> Event

Event to send new fragments to the client

event_merge_fragments("<span>1</span>", [data_selector("#feed")]),

Generates:

event: datastar-merge-fragments
data: selector #feed
data: fragments <span>1</span>

pub fn event_merge_signals(
  signals: String,
  options: List(EventOption(MergeSignalsOptionType)),
) -> Event

Generate a datastar-merge-signals event

event_merge_signals("{\"output\":\"Output Test\"}", []),

Generates:

event: datastar-merge-signals
data: signals {\"output\":\"Output Test\"}

pub fn event_remove_fragments(
  selector: String,
  options: List(EventOption(RemoveFragmentOptionType)),
) -> Event

Event to remove fragments on the client

event_remove_fragments("#feed", []),

Generates:

event: datastar-remove-fragments
data: selector #feed

pub fn event_remove_signals(
  signals: List(String),
  options: List(EventOption(RemoveSignalsOptionType)),
) -> Event

Generate a datastar-remove-signals event

event_remove_signals(["user.name", "user.email"], [])

Generates:

event: datastar-remove-signals
data: paths user.name
data: paths user.email

pub fn event_to_string(event: Event) -> String

Takes an Event and generates a string to send back to the client

remove_fragments("#target", [])
|> event_to_string

Generates

event: datastar-remove-fragments
data: selector #target

pub fn events_to_string(events events: List(Event)) -> String

Takes a list of Events and generates the string to send to the client

pub fn retry(value: Int) -> EventOption(a)

Option used by all events

retry(3000),

Generates:

retry: 3000
Search Document