* clean up logging to avoid random extra trace * fix race condition with updates * properly wire up verbose * fix bundling (macos) and logging * Add structured output * clean up clap names * extract out wire format * switch structured key to json * fix random println, fallback to `dioxus/platform` * clean up logging for run/build * clean up logging around project * remove manual exits * fix tokio runtime for mobile * rework dog app * rip out ssg * Switch dioxus/axum to dioxus/server * add android template inline * pre restructure for bundle prep * add the whole res directory * Better theme for the app * remove mobile demo now that most apps work natively * self-referential android * only use deep linking for assets * fix imports for android * clippy, fixup ios and android * I'm not boxing compiler message you can't make me * fix clippy on unix
40 lines
1.3 KiB
Rust
40 lines
1.3 KiB
Rust
//! This module contains the `launch` function, which is the main entry point for dioxus web
|
|
|
|
pub use crate::Config;
|
|
use dioxus_core::prelude::*;
|
|
use std::any::Any;
|
|
|
|
/// Launch the web application with the given root component, context and config
|
|
///
|
|
/// For a builder API, see `LaunchBuilder` defined in the `dioxus` crate.
|
|
pub fn launch(
|
|
root: fn() -> Element,
|
|
contexts: Vec<Box<dyn Fn() -> Box<dyn Any> + Send + Sync>>,
|
|
platform_config: Vec<Box<dyn Any>>,
|
|
) {
|
|
let mut vdom = VirtualDom::new(root);
|
|
for context in contexts {
|
|
vdom.insert_any_root_context(context());
|
|
}
|
|
|
|
let platform_config = *platform_config
|
|
.into_iter()
|
|
.find_map(|cfg| cfg.downcast::<Config>().ok())
|
|
.unwrap_or_default();
|
|
launch_virtual_dom(vdom, platform_config)
|
|
}
|
|
|
|
/// Launch the web application with a prebuild virtual dom
|
|
///
|
|
/// For a builder API, see `LaunchBuilder` defined in the `dioxus` crate.
|
|
pub fn launch_virtual_dom(vdom: VirtualDom, platform_config: Config) {
|
|
wasm_bindgen_futures::spawn_local(async move {
|
|
crate::run(vdom, platform_config).await;
|
|
});
|
|
}
|
|
|
|
/// Launch the web application with the given root component and config
|
|
pub fn launch_cfg(root: fn() -> Element, platform_config: Config) {
|
|
launch(root, Vec::new(), vec![Box::new(platform_config)])
|
|
}
|