agnostic/runtime/headless
Types
pub type Config(message) {
Config(
open_shadow_root: Bool,
adopt_styles: Bool,
attributes: dict.Dict(
String,
fn(String) -> Result(message, Nil),
),
properties: dict.Dict(String, decode.Decoder(message)),
contexts: dict.Dict(String, decode.Decoder(message)),
on_connect: option.Option(message),
on_disconnect: option.Option(message),
)
}
Constructors
-
Config( open_shadow_root: Bool, adopt_styles: Bool, attributes: dict.Dict( String, fn(String) -> Result(message, Nil), ), properties: dict.Dict(String, decode.Decoder(message)), contexts: dict.Dict(String, decode.Decoder(message)), on_connect: option.Option(message), on_disconnect: option.Option(message), )
pub type Message(message) {
ClientDispatchedMessage(message: transport.ServerMessage)
ClientRegisteredSubject(
client: process.Subject(transport.ClientMessage(message)),
)
ClientDeregisteredSubject(
client: process.Subject(transport.ClientMessage(message)),
)
ClientRegisteredCallback(
callback: fn(transport.ClientMessage(message)) -> Nil,
)
ClientDeregisteredCallback(
callback: fn(transport.ClientMessage(message)) -> Nil,
)
EffectAddedSelector(
selector: process.Selector(Message(message)),
)
EffectDispatchedMessage(message: message)
EffectEmitEvent(name: String, data: json.Json)
EffectProvidedValue(key: String, value: json.Json)
EffectRequestedContextSubscription(
key: String,
decoder: decode.Decoder(message),
)
EffectRemovedContextSubscription(key: String)
MonitorReportedDown(monitor: process.Monitor)
SystemRequestedShutdown
}
Constructors
-
ClientDispatchedMessage(message: transport.ServerMessage) -
ClientRegisteredSubject( client: process.Subject(transport.ClientMessage(message)), ) -
ClientDeregisteredSubject( client: process.Subject(transport.ClientMessage(message)), ) -
ClientRegisteredCallback( callback: fn(transport.ClientMessage(message)) -> Nil, ) -
ClientDeregisteredCallback( callback: fn(transport.ClientMessage(message)) -> Nil, ) -
EffectAddedSelector(selector: process.Selector(Message(message))) -
EffectDispatchedMessage(message: message) -
EffectEmitEvent(name: String, data: json.Json) -
EffectProvidedValue(key: String, value: json.Json) -
EffectRequestedContextSubscription( key: String, decoder: decode.Decoder(message), ) -
EffectRemovedContextSubscription(key: String) -
MonitorReportedDown(monitor: process.Monitor) -
SystemRequestedShutdown
pub type ServerComponent(message) =
process.Subject(Message(message))
pub type State(model, message) {
State(
self: process.Subject(Message(message)),
selector: process.Selector(Message(message)),
base_selector: process.Selector(Message(message)),
model: model,
update: fn(model, message) -> #(model, effect.Effect(message)),
view: fn(model) -> vnode.Element(message),
config: Config(message),
vdom: vnode.Element(message),
cache: cache.Cache(message),
providers: dict.Dict(String, json.Json),
subscribers: dict.Dict(
process.Subject(transport.ClientMessage(message)),
process.Monitor,
),
callbacks: set.Set(
fn(transport.ClientMessage(message)) -> Nil,
),
)
}
Constructors
-
State( self: process.Subject(Message(message)), selector: process.Selector(Message(message)), base_selector: process.Selector(Message(message)), model: model, update: fn(model, message) -> #(model, effect.Effect(message)), view: fn(model) -> vnode.Element(message), config: Config(message), vdom: vnode.Element(message), cache: cache.Cache(message), providers: dict.Dict(String, json.Json), subscribers: dict.Dict( process.Subject(transport.ClientMessage(message)), process.Monitor, ), callbacks: set.Set(fn(transport.ClientMessage(message)) -> Nil), )
Values
pub fn start(
name: option.Option(process.Name(Message(message))),
init: fn(arguments) -> #(model, effect.Effect(message)),
update: fn(model, message) -> #(model, effect.Effect(message)),
view: fn(model) -> vnode.Element(message),
config: Config(message),
arguments: arguments,
) -> Result(
actor.Started(process.Subject(Message(message))),
actor.StartError,
)