TEA web UI framework for MoonBit
Dependencies
typealias Int as Model
let model = 0
enum Msg {
Increment
Decrement
}
fn update(msg : Msg, model : Model) -> (Cmd[Msg], Model) {
match msg {
Increment => (none(), model + 1)
Decrement => (none(), model - 1)
}
}
fn view(model : Model) -> Html[Msg] {
div([
h1([text(model.to_string())]),
button(click=Increment, [text("+")]),
button(click=Decrement, [text("-")]),
])
}
fn main {
@tea.startup(model~, update~, view~)
}fn delay[M](msg : M, ms : Int) -> Cmd[M] {
Cmd(events => {
set_timeout(() => { events.trigger_update(msg) }, ms)
})
}
extern "js" fn set_timeout(f : () -> Unit, ms : Int) = "(f,ms) => setTimeout(f, ms)"type App[Msg, Model]TEA web UI framework for MoonBit
Dependencies