skima 0.1.0

Rust structural UI library for web
Documentation
use observe::{batch, Var};
use skima::web::event::on;
use skima::web::html::div;
use skima::web::reactive::reactive;
use skima::web::root::Root;
use skima::web::WebSys;
use skima::Markup;
use wasm_bindgen::JsCast;
use wasm_bindgen_test::wasm_bindgen_test;

wasm_bindgen_test::wasm_bindgen_test_configure!(run_in_browser);

fn component() -> impl Markup {
	reactive(|cx| {
		cx.with(Var::new(true));

		let var = cx.get::<Var<bool>>();
		let text = if *var.get(cx) == true {
			"True"
		} else {
			"False"
		};

		div((
			text,
			on(
				"click",
				cx.wrap(|cx, _e| {
					batch(|| cx.get::<Var<bool>>().set(false));
				}),
			),
		))
	})
}

#[wasm_bindgen_test]
pub fn test_reactive() {
	let document = web_sys::window().unwrap().document().unwrap();
	let container = document.create_element("div").unwrap();

	let root = Root::render(component(), container.unchecked_into());
	std::mem::forget(root);
}