diff --git a/Cargo.lock b/Cargo.lock index 52264ce86..7e11d55f2 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1670,7 +1670,6 @@ version = "0.0.0" dependencies = [ "bevy", "color", - "dioxus", "dioxus-native", "tracing-subscriber", "wgpu 26.0.1", @@ -6118,13 +6117,18 @@ dependencies = [ "dioxus-asset-resolver", "dioxus-cli-config", "dioxus-core", + "dioxus-core-macro", "dioxus-devtools", "dioxus-document", "dioxus-history", + "dioxus-hooks", "dioxus-html", "dioxus-native-dom", + "dioxus-signals", + "dioxus-stores", "futures-util", "keyboard-types", + "manganis", "rustc-hash 2.1.1", "tokio", "tracing", diff --git a/examples/10-integrations/bevy/Cargo.toml b/examples/10-integrations/bevy/Cargo.toml index f5050d0c0..9294d22eb 100644 --- a/examples/10-integrations/bevy/Cargo.toml +++ b/examples/10-integrations/bevy/Cargo.toml @@ -6,15 +6,11 @@ license = "MIT" publish = false [features] -default = ["desktop"] -desktop = ["dioxus/desktop"] -native = ["dioxus/native"] tracing = ["dep:tracing-subscriber", "dioxus-native/tracing"] [dependencies] bevy = { workspace = true } -dioxus-native = { workspace = true } -dioxus = { workspace = true } +dioxus-native = { workspace = true, features = ["prelude"] } wgpu = { workspace = true } color = "0.3" tracing-subscriber = { workspace = true, optional = true } diff --git a/examples/10-integrations/bevy/src/main.rs b/examples/10-integrations/bevy/src/main.rs index 3635c6b2c..976890094 100644 --- a/examples/10-integrations/bevy/src/main.rs +++ b/examples/10-integrations/bevy/src/main.rs @@ -3,7 +3,7 @@ use std::any::Any; use color::{palette::css::WHITE, parse_color}; use color::{OpaqueColor, Srgb}; use demo_renderer::{DemoMessage, DemoPaintSource}; -use dioxus::prelude::*; +use dioxus_native::prelude::*; use dioxus_native::use_wgpu; use wgpu::Limits; diff --git a/packages/native/Cargo.toml b/packages/native/Cargo.toml index 731badb97..21aeff158 100644 --- a/packages/native/Cargo.toml +++ b/packages/native/Cargo.toml @@ -11,21 +11,30 @@ keywords = ["dom", "ui", "gui", "react"] [features] default = ["accessibility", "hot-reload", "net", "html", "svg", "system-fonts", "clipboard", "file_dialog"] -clipboard = ["blitz-shell/clipboard"] -file_dialog = ["blitz-shell/file_dialog"] +prelude = ["dep:dioxus-core-macro", "dep:dioxus-hooks", "dep:dioxus-signals", "dep:dioxus-stores", "dep:manganis"] + +# DOM features svg = ["blitz-dom/svg", "blitz-paint/svg"] +incremental = ["blitz-dom/incremental"] +autofocus = ["blitz-dom/autofocus"] +system-fonts = ["blitz-dom/system_fonts"] + +# Shell Features +clipboard = ["blitz-shell/clipboard"] +file_dialog = ["file-dialog"] # Backwards compat. Remove in next breaking version +file-dialog = ["blitz-shell/file_dialog"] +accessibility = ["blitz-shell/accessibility", "blitz-dom/accessibility"] + +# Other features net = ["dep:tokio", "dep:blitz-net"] html = ["dep:blitz-html"] -accessibility = ["blitz-shell/accessibility", "blitz-dom/accessibility"] -tracing = ["dep:tracing", "dioxus-native-dom/tracing", "blitz-shell/tracing", "blitz-dom/tracing"] + +# Dev / Debug hot-reload = ["dep:dioxus-cli-config", "dep:dioxus-devtools"] -system-fonts = ["blitz-dom/system_fonts"] -autofocus = [] +tracing = ["dep:tracing", "dioxus-native-dom/tracing", "blitz-shell/tracing", "blitz-dom/tracing"] [dependencies] # Blitz dependencies -anyrender = { workspace = true } -anyrender_vello = { workspace = true } blitz-dom = { workspace = true } blitz-html = { workspace = true, optional = true } blitz-net = { workspace = true, optional = true } @@ -33,16 +42,29 @@ blitz-paint = { workspace = true, optional = true } blitz-traits = { workspace = true } blitz-shell = { workspace = true } +# AnyRender dependencies +anyrender = { workspace = true } +anyrender_vello = { workspace = true } + # DioxusLabs dependencies dioxus-core = { workspace = true } dioxus-html = { workspace = true } dioxus-native-dom = { workspace = true } dioxus-asset-resolver = { workspace = true, features = ["native"] } -dioxus-cli-config = { workspace = true, optional = true } -dioxus-devtools = { workspace = true, optional = true } dioxus-history = { workspace = true } dioxus-document = { workspace = true } +# Dioxus hot reload +dioxus-cli-config = { workspace = true, optional = true } +dioxus-devtools = { workspace = true, optional = true } + +# Dioxus prelude +dioxus-hooks = { workspace = true, optional = true } +dioxus-signals = { workspace = true, optional = true } +dioxus-stores = { workspace = true, optional = true } +dioxus-core-macro = { workspace = true, optional = true } +manganis = { workspace = true, features = ["dioxus"], optional = true } + # Windowing & Input winit = { workspace = true } keyboard-types = { workspace = true } diff --git a/packages/native/src/dioxus_application.rs b/packages/native/src/dioxus_application.rs index 65033d062..5089089f4 100644 --- a/packages/native/src/dioxus_application.rs +++ b/packages/native/src/dioxus_application.rs @@ -111,6 +111,7 @@ impl DioxusNativeApplication { not(target_os = "android"), not(target_os = "ios") )))] + #[allow(unreachable_patterns)] _ => { let _ = event_loop; let _ = event; diff --git a/packages/native/src/lib.rs b/packages/native/src/lib.rs index 8bc03719d..bf977cd0f 100644 --- a/packages/native/src/lib.rs +++ b/packages/native/src/lib.rs @@ -15,6 +15,9 @@ mod dioxus_application; mod dioxus_renderer; mod link_handler; +#[cfg(feature = "prelude")] +pub mod prelude; + #[doc(inline)] pub use dioxus_native_dom::*; diff --git a/packages/native/src/prelude.rs b/packages/native/src/prelude.rs new file mode 100644 index 000000000..158c581aa --- /dev/null +++ b/packages/native/src/prelude.rs @@ -0,0 +1,28 @@ +// RSX and component definition +pub use dioxus_core; +pub use dioxus_core::{ + consume_context, provide_context, spawn, suspend, try_consume_context, use_drop, use_hook, + AnyhowContext, Attribute, Callback, Component, Element, ErrorBoundary, ErrorContext, Event, + EventHandler, Fragment, HasAttributes, IntoDynNode, RenderError, ScopeId, SuspenseBoundary, + SuspenseContext, VNode, VirtualDom, +}; +#[allow(deprecated)] +pub use dioxus_core_macro::{component, rsx, Props}; +pub use dioxus_html as dioxus_elements; +pub use dioxus_html::{ + events::*, extensions::*, global_attributes, keyboard_types, svg_attributes, traits::*, + GlobalAttributesExtension, SvgAttributesExtension, +}; +pub use dioxus_html::{Code, Key, Location, Modifiers}; + +// Assets +pub use manganis::{self, *}; + +// Hooks, signals, stores +pub use dioxus_hooks::*; +pub use dioxus_signals::{self, *}; +pub use dioxus_stores::{self, store, use_store, GlobalStore, ReadStore, Store, WriteStore}; + +// Document and History +pub use dioxus_document::{self as document, Meta, Stylesheet, Title}; +pub use dioxus_history::{history, History};