Yichus/UI
Builtin package (resource ui.bosatsu).
This is the complete package source used by this build. The export
list names its public API; definitions below give the types and behavior.
New to the API? Start with Make a calculator or Build an API, then use this page to look up a definition.
package Yichus/UI from Bosatsu/Predef import String, Int, List, Unit from Yichus/IO import IO, pure export ( VNode, State, ListState, h, text, fragment, state, read, write, list_state, list_read, list_append, list_remove_at, list_length, list_view, list_view_indexed, list_write, on_click, on_click_pos, on_input, on_change, on_keydown, on_keyup, on_dragstart, on_dragover, on_drop, on_dragleave, on_touchstart, on_touchmove, on_touchend, on_frame ) exposes Yichus/IO external type VNode # Mutable handles both read and write a; their element type is invariant. external type State[a: *] external type ListState[a: *] external def h(tag: String, props: List[(String, String)], children: List[VNode]) -> VNode external def text(content: String) -> VNode external def fragment(children: List[VNode]) -> VNode external def state[a](initial: a) -> IO[State[a]] external def read[a](state: State[a]) -> IO[a] external def write[a](state: State[a], value: a) -> IO[Unit] external def list_state[a](initial: List[a]) -> IO[ListState[a]] external def list_read[a](state: ListState[a]) -> IO[List[a]] external def list_append[a](state: ListState[a], value: a) -> IO[Unit] external def list_remove_at[a](state: ListState[a], index: Int) -> IO[Unit] external def list_length[a](state: ListState[a]) -> IO[Int] external def list_view[a](state: ListState[a], render: a -> VNode) -> VNode external def list_view_indexed[a](state: ListState[a], render: a -> Int -> VNode) -> VNode external def list_write[a](state: ListState[a], value: List[a]) -> IO[Unit] external def on_click(handler: IO[Unit]) -> (String, String) external def on_click_pos(handler: String -> IO[Unit]) -> (String, String) external def on_input(handler: String -> IO[Unit]) -> (String, String) external def on_change(handler: String -> IO[Unit]) -> (String, String) external def on_keydown(handler: String -> IO[Unit]) -> (String, String) external def on_keyup(handler: String -> IO[Unit]) -> (String, String) external def on_dragstart(handler: IO[Unit]) -> (String, String) external def on_dragover(handler: IO[Unit]) -> (String, String) external def on_drop(handler: IO[Unit]) -> (String, String) external def on_dragleave(handler: IO[Unit]) -> (String, String) external def on_touchstart(handler: String -> IO[Unit]) -> (String, String) external def on_touchmove(handler: String -> IO[Unit]) -> (String, String) external def on_touchend(handler: String -> IO[Unit]) -> (String, String) external def on_frame(handler: IO[Unit]) -> (String, String) # Keep Prog import live at term level to satisfy Bosatsu unused-import checks. io_marker = pure(())