Expand description
Visit the website
See the github Readme for details
Counter Example
use seed::{prelude::*, *};
// `init` describes what should happen when your app started.
fn init(_: Url, _: &mut impl Orders<Msg>) -> Model {
Model { counter: 0 }
}
// `Model` describes our app state.
struct Model { counter: i32 }
// `Msg` describes the different events you can modify state with.
enum Msg {
Increment,
}
// `update` describes how to handle each `Msg`.
fn update(msg: Msg, model: &mut Model, _: &mut impl Orders<Msg>) {
match msg {
Msg::Increment => model.counter += 1,
}
}
// `view` describes what to display.
fn view(model: &Model) -> Node<Msg> {
div![
"This is a counter: ",
C!["counter"],
button![
model.counter,
ev(Ev::Click, |_| Msg::Increment),
],
]
}
#[wasm_bindgen(start)]
pub fn start() {
// Mount the `app` to the element with the `id` "app".
App::start("app", init, update, view);
}
Re-exports
pub use crate::app::App;
pub use crate::browser::dom::cast::to_drag_event;
pub use crate::browser::dom::cast::to_html_el;
pub use crate::browser::dom::cast::to_input;
pub use crate::browser::dom::cast::to_keyboard_event;
pub use crate::browser::dom::cast::to_mouse_event;
pub use crate::browser::dom::cast::to_select;
pub use crate::browser::dom::cast::to_textarea;
pub use crate::browser::dom::cast::to_touch_event;
pub use crate::browser::dom::cast::to_wheel_event;
pub use crate::browser::fetch;
pub use crate::browser::url::Url;
pub use crate::browser::util;
pub use crate::browser::util::body;
pub use crate::browser::util::canvas;
pub use crate::browser::util::canvas_context_2d;
pub use crate::browser::util::cookies;
pub use crate::browser::util::error;
pub use crate::browser::util::html_document;
pub use crate::browser::util::log;
pub use crate::virtual_dom::Attrs;
pub use crate::virtual_dom::EventHandler;
pub use crate::virtual_dom::Style;
pub use console_error_panic_hook;
pub use futures;
pub use wasm_bindgen_futures;
Modules
Asynchronous values.
Introduce El
and Tag
into the global namespace for convenience (El
will be repeated
often in the output type of components), and UpdateEl
, which is required
for element-creation macros, input event constructors, and the History
struct.
Expose the wasm_bindgen
prelude.
This file exports helper macros for element creation, populated by a higher-level macro, and macros for creating the parts of elements. (attrs, style, events)
Macros
Add classes into the element.
IF!(predicate => expression) -> Option<expression value>
Provide a shortcut for creating attributes.
Convenience macro. Ideal when there are multiple classes, and no other attrs.
Similar to log!
Convenience macro, for brevity.
A key-value pairs, where the keys and values must implement ToString
.
A convenience function for logging to the web browser’s console. We use a macro to supplement the log function to allow multiple inputs.
Converts items to Vec<Node<Ms>
and returns flattened Vec<Node<Ms>
.
Create struct Urls
. It’s useful especially for building Url
s in nested modules.
Provide a shortcut for creating styles.
Allows to write nested macros.
Structs
A Rust Future
backed by a JavaScript Promise
.
Traits
An extension trait for Future
s that provides a variety of convenient
adapters.
Adapters specific to Result
-returning futures
Functions
Convenience function to access the web_sys DOM document.
Create an element flagged in a way that it will not be rendered. Useful in ternary operations.
Convenience function to access the web_sys history.
A high-level wrapper for web_sys::window.set_interval_with_callback_and_timeout_and_arguments_0
:
See set_interval
Runs a Rust Future
on the current thread.
Convenience function to avoid repeating expect logic.