use dioxus_core::LaunchConfig;
use wasm_bindgen::JsCast as _;
pub struct Config {
pub(crate) hydrate: bool,
pub(crate) root: ConfigRoot,
}
impl LaunchConfig for Config {}
pub(crate) enum ConfigRoot {
RootName(String),
RootNode(web_sys::Node),
}
impl Config {
pub fn new() -> Self {
Self::default()
}
#[cfg(feature = "hydrate")]
pub fn hydrate(mut self, f: bool) -> Self {
self.hydrate = f;
self
}
pub fn rootname(mut self, name: impl Into<String>) -> Self {
self.root = ConfigRoot::RootName(name.into());
self
}
pub fn rootelement(mut self, elem: web_sys::Element) -> Self {
self.root = ConfigRoot::RootNode(elem.unchecked_into());
self
}
pub fn rootnode(mut self, node: web_sys::Node) -> Self {
self.root = ConfigRoot::RootNode(node);
self
}
}
impl Default for Config {
fn default() -> Self {
Self {
hydrate: false,
root: ConfigRoot::RootName("main".to_string()),
}
}
}