lustre
Types
pub type Attribute(action) =
attribute.Attribute(action)
pub type Cmd(action) =
cmd.Cmd(action)
pub type Element(action) =
element.Element(action)
pub type Error {
ElementNotFound
}
Constructors
-
ElementNotFound
pub opaque type Program(state, action)
Functions
pub fn application(init: #(a, Cmd(b)), update: fn(a, b) ->
#(a, Cmd(b)), render: fn(a) -> Element(b)) -> Program(a, b)
Create a more complex application mimicing TEA – the Elm architecture. We
start with some initial state
, a function to update that state, and then
a render function to derive our program’s view from that state.
Events produced by elements are passed a dispatch
function that can be
used to emit actions that trigger your update
function to be called and
trigger a rerender.
pub fn basic(element: Element(a)) -> Program(Nil, a)
Create a basic lustre program that just renders some element on the page.
Note that this doesn’t mean the content is static! With element.stateful
you can still create components with local state.
Basic lustre programs don’t have any global application state and so the
plumbing is a lot simpler. If you find yourself passing lot’s state of state
around, you might want to consider using application
instead.
pub fn start(program: Program(a, b), selector: String) -> Result(
fn(b) -> Nil,
Error,
)
Once you have created a program with either basic
or application
, you
need to actually start it! This function will mount your program to the DOM
node that matches the query selector you provide.
If everything mounted OK, we’ll get back a dispatch function that you can call to send actions to your program and trigger an update.