A tiny virtual DOM library
Dependencies
A tiny virtual DOM library ported from Respo.rs.
// Store must be immutable - no `mut` fields
struct Store {
counted : Int
tasks : @immut/array.T[Task] // Use immutable collections
states : RespoStatesTree
}
// Update returns a new Store, never mutates in place
fn Store::update(self : Store, op : ActionOp) -> Store {
match op {
Increment => { ..self, counted: self.counted + 1 }
// ...
}
}
// At top level, wrap in Ref for mutability
let app_store : Ref[Store] = Ref::new(Store::default())
app_store.val = app_store.val.update(action) // Replace with new valuemoon add tiye/respotype ObscureStatefn[Model : Eq, ActionOp] RespoApp::render_loop(self : RespoApp[Model], renderer : () -> RespoNode[ActionOp] raise RespoCommonError, dispatch_action : (ActionOp) -> Unit raise RespoCommonError) -> Unitpub(all) struct RespoStatesTree {
backup : Json?
cursor : T[String]
branches : HashMap[String, RespoStatesTree]
// private fields
}impl Default for RespoStatesTreeimpl Eq for RespoStatesTreeimpl ToJson for RespoStatesTreeimpl FromJson for RespoStatesTreefn[T : Default + FromJson + ToJson] RespoStatesTree::local_pair(self : RespoStatesTree) -> (T, RespoCursor[T])let (state, cursor) = states.local_pair();impl Eq for RespoUpdateStateimpl ToJson for RespoUpdateStatepub struct StateRef[T] {
cell : Ref[T]
}fn debug_event(event_type : String, details : String) -> Unitfn debug_log(message : String) -> Unitfn debug_render(message : String) -> Unitfn[T, U : Eq] render_node(mount_target : Node, store : Ref[U], renderer : () -> RespoNode[T] raise RespoCommonError, dispatch_action : (T) -> Unit raise RespoCommonError, _interval : Float?) -> Unit raise RespoCommonErrorfn set_debug_mode(enabled : Bool) -> Unitlet ui_center : Stringlet ui_column : Stringlet ui_column_dispersive : Stringlet ui_column_evenly : Stringlet ui_column_parted : Stringlet ui_font_code : Stringlet ui_font_fancy : Stringlet ui_font_normal : Stringlet ui_row : Stringlet ui_row_center : Stringlet ui_row_dispersive : Stringlet ui_row_evenly : Stringlet ui_row_middle : Stringlet ui_row_parted : StringInstall
Download zipA tiny virtual DOM library
Dependencies