Преглед на файлове

fix no default features on the web renderer

Evan Almloff преди 1 година
родител
ревизия
b54f7dd5d2
променени са 6 файла, в които са добавени 21 реда и са изтрити 4 реда
  1. 1 1
      Cargo.toml
  2. 5 1
      packages/html/Cargo.toml
  3. 2 0
      packages/html/src/lib.rs
  4. 3 1
      packages/web/Cargo.toml
  5. 9 1
      packages/web/src/dom.rs
  6. 1 0
      packages/web/src/lib.rs

+ 1 - 1
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"  }

+ 5 - 1
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"]

+ 2 - 0
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;

+ 3 - 1
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 }

+ 9 - 1
packages/web/src/dom.rs

@@ -173,6 +173,7 @@ impl WebsysDom {
     pub fn apply_edits(&mut self, mut edits: Vec<Mutation>) {
         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::<Element>() {
@@ -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 {

+ 1 - 0
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::{