From b54f7dd5d29bef6add9458ea64ecee94d0d81cd2 Mon Sep 17 00:00:00 2001 From: Evan Almloff Date: Fri, 25 Aug 2023 21:28:44 -0500 Subject: [PATCH] fix no default features on the web renderer --- Cargo.toml | 2 +- packages/html/Cargo.toml | 6 +++++- packages/html/src/lib.rs | 2 ++ packages/web/Cargo.toml | 4 +++- packages/web/src/dom.rs | 10 +++++++++- packages/web/src/lib.rs | 1 + 6 files changed, 21 insertions(+), 4 deletions(-) diff --git a/Cargo.toml b/Cargo.toml index 252e9c83e..07f25171a 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -59,7 +59,7 @@ dioxus-core = { path = "packages/core", version = "0.4.2" } dioxus-core-macro = { path = "packages/core-macro", version = "0.4.0" } dioxus-router = { path = "packages/router", version = "0.4.1" } dioxus-router-macro = { path = "packages/router-macro", version = "0.4.1" } -dioxus-html = { path = "packages/html", version = "0.4.0" } +dioxus-html = { path = "packages/html", default-features = false, version = "0.4.0" } dioxus-hooks = { path = "packages/hooks", version = "0.4.0" } dioxus-web = { path = "packages/web", version = "0.4.0" } dioxus-ssr = { path = "packages/ssr", version = "0.4.0" } diff --git a/packages/html/Cargo.toml b/packages/html/Cargo.toml index 3a2495b02..b06ce3375 100644 --- a/packages/html/Cargo.toml +++ b/packages/html/Cargo.toml @@ -47,7 +47,7 @@ features = [ serde_json = "1" [features] -default = ["serialize", "mounted"] +default = ["serialize", "mounted", "eval"] serialize = [ "serde", "serde/rc", @@ -66,6 +66,10 @@ mounted = [ "web-sys/ScrollBehavior", "web-sys/HtmlElement", ] +eval = [ + "serde", + "serde_json" +] wasm-bind = ["web-sys", "wasm-bindgen"] native-bind = ["tokio"] hot-reload-context = ["dioxus-rsx"] diff --git a/packages/html/src/lib.rs b/packages/html/src/lib.rs index 2a08241d9..55037b2dc 100644 --- a/packages/html/src/lib.rs +++ b/packages/html/src/lib.rs @@ -38,9 +38,11 @@ pub use events::*; pub use global_attributes::*; pub use render_template::*; +#[cfg(feature = "eval")] pub mod eval; pub mod prelude { + #[cfg(feature = "eval")] pub use crate::eval::*; pub use crate::events::*; pub use crate::point_interaction::PointInteraction; diff --git a/packages/web/Cargo.toml b/packages/web/Cargo.toml index 8de282869..88ee3b680 100644 --- a/packages/web/Cargo.toml +++ b/packages/web/Cargo.toml @@ -65,7 +65,9 @@ hot_reload = [ "web-sys/WebSocket", "web-sys/Location", ] -eval = [] +eval = [ + "dioxus-html/eval", +] [dev-dependencies] dioxus = { workspace = true } diff --git a/packages/web/src/dom.rs b/packages/web/src/dom.rs index c19886666..3a38b22b6 100644 --- a/packages/web/src/dom.rs +++ b/packages/web/src/dom.rs @@ -173,6 +173,7 @@ impl WebsysDom { pub fn apply_edits(&mut self, mut edits: Vec) { use Mutation::*; let i = &mut self.interpreter; + #[cfg(feature = "mounted")] // we need to apply the mount events last, so we collect them here let mut to_mount = Vec::new(); for edit in &edits { @@ -228,6 +229,7 @@ impl WebsysDom { match *name { // mounted events are fired immediately after the element is mounted. "mounted" => { + #[cfg(feature = "mounted")] to_mount.push(*id); } _ => { @@ -248,6 +250,7 @@ impl WebsysDom { edits.clear(); i.flush(); + #[cfg(feature = "mounted")] for id in to_mount { let node = get_node(id.0 as u32); if let Some(element) = node.dyn_ref::() { @@ -326,7 +329,12 @@ impl HtmlEventConverter for WebEventConverter { } fn convert_mounted_data(&self, event: &dioxus_html::PlatformEventData) -> MountedData { - MountedData::from(downcast_event(event).element.clone()) + #[cfg(feature = "mounted")] + {MountedData::from(downcast_event(event).element.clone())} + #[cfg(not(feature = "mounted"))] + { + panic!("mounted events are not supported without the mounted feature on the dioxus-web crate enabled") + } } fn convert_mouse_data(&self, event: &dioxus_html::PlatformEventData) -> dioxus_html::MouseData { diff --git a/packages/web/src/lib.rs b/packages/web/src/lib.rs index 261232607..ce1fad116 100644 --- a/packages/web/src/lib.rs +++ b/packages/web/src/lib.rs @@ -54,6 +54,7 @@ // - Do DOM work in the next requestAnimationFrame callback pub use crate::cfg::Config; +#[cfg(feature = "file_engine")] pub use crate::file_engine::WebFileEngineExt; use dioxus_core::{Element, Scope, VirtualDom}; use futures_util::{