datastar
Types
SSE Events that can be send to the client
pub type Event {
EventMergeFragment(MergeFragmentConfig)
EventRemoveFragments(RemoveFragmentsConfig)
EventMergeSignals(MergeSignalsConfig)
EventRemoveSignals(RemoveSignalsConfig)
EventExecuteScript(ExecuteScriptConfig)
}
Constructors
-
EventMergeFragment(MergeFragmentConfig)
-
EventRemoveFragments(RemoveFragmentsConfig)
-
EventMergeSignals(MergeSignalsConfig)
-
EventRemoveSignals(RemoveSignalsConfig)
-
EventExecuteScript(ExecuteScriptConfig)
pub type ExecuteScriptConfig {
ExecuteScriptConfig(
script: String,
options: ExecuteScriptOptions,
)
}
Constructors
-
ExecuteScriptConfig( script: String, options: ExecuteScriptOptions, )
pub type ExecuteScriptOptions {
ExecuteScriptOptions(
attributes: List(#(String, String)),
auto_remove: Bool,
event_id: Option(String),
retry: Option(Int),
)
}
Constructors
-
ExecuteScriptOptions( attributes: List(#(String, String)), auto_remove: Bool, event_id: Option(String), retry: Option(Int), )
pub type MergeFragmentConfig {
MergeFragmentConfig(
fragments: String,
options: MergeFragmentOptions,
)
}
Constructors
-
MergeFragmentConfig( fragments: String, options: MergeFragmentOptions, )
pub type MergeFragmentOptions {
MergeFragmentOptions(
event_id: Option(String),
merge_mode: MergeMode,
retry: Option(Int),
selector: Option(String),
settle_duration: Int,
view_transition: Bool,
)
}
Constructors
-
MergeFragmentOptions( event_id: Option(String), merge_mode: MergeMode, retry: Option(Int), selector: Option(String), settle_duration: Int, view_transition: Bool, )
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 type MergeSignalsConfig {
MergeSignalsConfig(
signals: String,
options: MergeSignalsOptions,
)
}
Constructors
-
MergeSignalsConfig(signals: String, options: MergeSignalsOptions)
pub type MergeSignalsOptions {
MergeSignalsOptions(
event_id: Option(String),
retry: Option(Int),
only_if_missing: Bool,
)
}
Constructors
-
MergeSignalsOptions( event_id: Option(String), retry: Option(Int), only_if_missing: Bool, )
pub type RemoveFragmentsConfig {
RemoveFragmentsConfig(
selector: String,
options: RemoveFragmentsOptions,
)
}
Constructors
-
RemoveFragmentsConfig( selector: String, options: RemoveFragmentsOptions, )
pub type RemoveFragmentsOptions {
RemoveFragmentsOptions(
event_id: Option(String),
retry: Option(Int),
settle_duration: Int,
view_transition: Bool,
)
}
Constructors
-
RemoveFragmentsOptions( event_id: Option(String), retry: Option(Int), settle_duration: Int, view_transition: Bool, )
pub type RemoveSignalsConfig {
RemoveSignalsConfig(
signals: List(String),
options: RemoveSignalsOptions,
)
}
Constructors
-
RemoveSignalsConfig( signals: List(String), options: RemoveSignalsOptions, )
pub type RemoveSignalsOptions {
RemoveSignalsOptions(
event_id: Option(String),
retry: Option(Int),
)
}
Constructors
-
RemoveSignalsOptions( event_id: Option(String), retry: Option(Int), )
Functions
pub fn event_to_string(event: Event) -> String
Takes an Event
and generates a string to send back to the client
remove_fragments("#target")
|> remove_fragments_end
|> 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 Event
and generates the string to send to the client
[
merge_fragments("<span>Hello</span>")
|> merge_fragments_end,
remove_fragments("#target")
|> remove_fragments_end,
]
|> events_to_string
Generates:
event: datastar-merge-fragments
data: fragments <span>Hello</span>
event: datastar-remove-fragments
data: selector #target
pub fn execute_script(script: String) -> ExecuteScriptConfig
Generate a datastar-execute-script
event
execute_script("window.location = \"https://data-star.dev\"")
|> execute_script_event_id("123")
|> execute_script_end
Generates
event: datastar-execute-script
id: 123
data: script window.location = \"https://data-star.dev\"
pub fn execute_script_attributes(
config: ExecuteScriptConfig,
value: List(#(String, String)),
) -> ExecuteScriptConfig
|> execute_script_attributes([#("type", "text/javascript")]),
Generates:
data: attributes type text/javascript
pub fn execute_script_auto_remove(
config: ExecuteScriptConfig,
value: Bool,
) -> ExecuteScriptConfig
|> execute_script_auto_remove(False),
Generates:
data: autoRemove false
pub fn execute_script_end(config: ExecuteScriptConfig) -> Event
pub fn execute_script_event_id(
config: ExecuteScriptConfig,
value: String,
) -> ExecuteScriptConfig
...
|> execute_script_event_id("123")
Generates:
id: 123
pub fn execute_script_retry(
config: ExecuteScriptConfig,
value: Int,
) -> ExecuteScriptConfig
|> execute_script_retry(3000),
Generates:
retry: 3000
pub fn merge_fragments(
fragments fragments: String,
) -> MergeFragmentConfig
Event to send new fragments to the client
merge_fragments("<span>1</span>")
|> merge_fragments_selector("#feed")
|> merge_fragments_end
Generates:
event: datastar-merge-fragments
data: selector #feed
data: fragments <span>1</span>
pub fn merge_fragments_end(config: MergeFragmentConfig) -> Event
pub fn merge_fragments_event_id(
config: MergeFragmentConfig,
value: String,
) -> MergeFragmentConfig
|> merge_fragments_event_id("123"),
Generates:
id: 123
pub fn merge_fragments_merge_mode(
config: MergeFragmentConfig,
value: MergeMode,
) -> MergeFragmentConfig
|> merge_fragments_merge_mode(MergeMode.Inner),
Generates:
data: mergeMode inner
pub fn merge_fragments_retry(
config: MergeFragmentConfig,
value: Int,
) -> MergeFragmentConfig
|> merge_fragments_retry(3000),
Generates:
retry: 3000
pub fn merge_fragments_selector(
config: MergeFragmentConfig,
value: String,
) -> MergeFragmentConfig
|> merge_fragments_selector("#feed"),
Generates:
data: selector #feed
pub fn merge_fragments_settle_duration(
config: MergeFragmentConfig,
value: Int,
) -> MergeFragmentConfig
pub fn merge_fragments_view_transition(
config: MergeFragmentConfig,
value: Bool,
) -> MergeFragmentConfig
pub fn merge_signals(signals: String) -> MergeSignalsConfig
Generate a datastar-merge-signals
event
merge_signals("{\"output\":\"Output Test\"}")
|> merge_signals_end
Generates:
event: datastar-merge-signals
data: signals {\"output\":\"Output Test\"}
pub fn merge_signals_end(config: MergeSignalsConfig) -> Event
pub fn merge_signals_event_id(
config: MergeSignalsConfig,
value: String,
) -> MergeSignalsConfig
...
|> merge_signals_event_id("123")
Generates:
id: 123
pub fn merge_signals_only_if_missing(
config: MergeSignalsConfig,
value: Bool,
) -> MergeSignalsConfig
|> merge_signals_only_if_missing(True),
Generates:
data: onlyIfMissing true
pub fn merge_signals_retry(
config: MergeSignalsConfig,
value: Int,
) -> MergeSignalsConfig
|> merge_signals_retry(3000),
Generates:
retry: 3000
pub fn remove_fragments(
selector: String,
) -> RemoveFragmentsConfig
Event to remove fragments on the client
remove_fragments("#feed")
|> remove_fragments_end
Generates:
event: datastar-remove-fragments
data: selector #feed
pub fn remove_fragments_end(
config: RemoveFragmentsConfig,
) -> Event
pub fn remove_fragments_event_id(
config: RemoveFragmentsConfig,
value: String,
) -> RemoveFragmentsConfig
|> remove_fragments_event_id("123"),
Generates:
id: 123
pub fn remove_fragments_retry(
config: RemoveFragmentsConfig,
value: Int,
) -> RemoveFragmentsConfig
|> remove_fragments_retry(3000),
Generates:
retry: 3000
pub fn remove_fragments_settle_duration(
config: RemoveFragmentsConfig,
value: Int,
) -> RemoveFragmentsConfig
pub fn remove_fragments_view_transition(
config: RemoveFragmentsConfig,
value: Bool,
) -> RemoveFragmentsConfig
pub fn remove_signals(
signals: List(String),
) -> RemoveSignalsConfig
Generate a datastar-remove-signals
event
remove_signals(["user.name", "user.email"])
|> remove_signals_end
Generates:
event: datastar-remove-signals
data: paths user.name
data: paths user.email
pub fn remove_signals_end(config: RemoveSignalsConfig) -> Event
pub fn remove_signals_event_id(
config: RemoveSignalsConfig,
value: String,
) -> RemoveSignalsConfig
...
|> remove_signals_event_id("123")
Generates:
id: 123
pub fn remove_signals_retry(
config: RemoveSignalsConfig,
value: Int,
) -> RemoveSignalsConfig
|> remove_signals_retry(3000),
Generates:
retry: 3000