clean up prelude (#4416)
* clear away prelude on dioxus * clippy * wip - drop prelude from dioxus-html * docs clippy * wip * more fixe * delete all preludes * doc... * better export * merge some imports * fewer global imports * global incremental renderer * fix cargo doc
This commit is contained in:
1 parent
54d465a7b5
commit
4f1d039bad
140 files changed
+374
-477
No files matched your search
@@ -9,7 +9,7 @@ use axum_session::{SessionConfig, SessionLayer, SessionStore};
|
|||||||
use axum_session_auth::*;
|
use axum_session_auth::*;
|
||||||
use axum_session_sqlx::SessionSqlitePool;
|
use axum_session_sqlx::SessionSqlitePool;
|
||||||
use core::pin::Pin;
|
use core::pin::Pin;
|
||||||
use dioxus_fullstack::prelude::*;
|
use dioxus::prelude::*;
|
||||||
use serde::{Deserialize, Serialize};
|
use serde::{Deserialize, Serialize};
|
||||||
use sqlx::sqlite::{SqliteConnectOptions, SqlitePool, SqlitePoolOptions};
|
use sqlx::sqlite::{SqliteConnectOptions, SqlitePool, SqlitePoolOptions};
|
||||||
use std::error::Error;
|
use std::error::Error;
|
||||||
|
|||||||
@@ -4,7 +4,6 @@
|
|||||||
mod auth;
|
mod auth;
|
||||||
|
|
||||||
use dioxus::prelude::*;
|
use dioxus::prelude::*;
|
||||||
use dioxus_fullstack::prelude::*;
|
|
||||||
use serde::{Deserialize, Serialize};
|
use serde::{Deserialize, Serialize};
|
||||||
|
|
||||||
fn main() {
|
fn main() {
|
||||||
|
|||||||
@@ -4,7 +4,7 @@ use dioxus::prelude::*;
|
|||||||
fn main() {
|
fn main() {
|
||||||
// Set the url of the server where server functions are hosted.
|
// Set the url of the server where server functions are hosted.
|
||||||
#[cfg(not(feature = "server"))]
|
#[cfg(not(feature = "server"))]
|
||||||
dioxus::fullstack::prelude::server_fn::client::set_server_url("http://127.0.0.1:8080");
|
dioxus::fullstack::set_server_url("http://127.0.0.1:8080");
|
||||||
dioxus::launch(app);
|
dioxus::launch(app);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -9,7 +9,7 @@ use dioxus::prelude::*;
|
|||||||
fn main() {
|
fn main() {
|
||||||
dioxus::LaunchBuilder::new()
|
dioxus::LaunchBuilder::new()
|
||||||
.with_cfg(server_only!(ServeConfig::builder().incremental(
|
.with_cfg(server_only!(ServeConfig::builder().incremental(
|
||||||
IncrementalRendererConfig::default()
|
dioxus::fullstack::IncrementalRendererConfig::default()
|
||||||
.invalidate_after(std::time::Duration::from_secs(120)),
|
.invalidate_after(std::time::Duration::from_secs(120)),
|
||||||
)))
|
)))
|
||||||
.launch(app);
|
.launch(app);
|
||||||
|
|||||||
@@ -2,7 +2,7 @@
|
|||||||
//!
|
//!
|
||||||
//! The enum router makes it easy to use your route as state in your app. This example shows how to use the router to encode search text into the url and decode it back into a string.
|
//! The enum router makes it easy to use your route as state in your app. This example shows how to use the router to encode search text into the url and decode it back into a string.
|
||||||
//!
|
//!
|
||||||
//! Run this example on desktop with
|
//! Run this example on desktop with
|
||||||
//! ```sh
|
//! ```sh
|
||||||
//! dx serve --example query_segment_search
|
//! dx serve --example query_segment_search
|
||||||
//! ```
|
//! ```
|
||||||
@@ -29,7 +29,7 @@ enum Route {
|
|||||||
|
|
||||||
// The each query segment must implement <https://docs.rs/dioxus-router/latest/dioxus_router/routable/trait.FromQueryArgument.html> and Display.
|
// The each query segment must implement <https://docs.rs/dioxus-router/latest/dioxus_router/routable/trait.FromQueryArgument.html> and Display.
|
||||||
// You can use multiple query segments separated by `&`s.
|
// You can use multiple query segments separated by `&`s.
|
||||||
#[route("/search?:query&:word_count")]
|
#[route("/search?:query&:word_count")]
|
||||||
Search {
|
Search {
|
||||||
query: String,
|
query: String,
|
||||||
word_count: usize,
|
word_count: usize,
|
||||||
|
|||||||
@@ -544,7 +544,7 @@ fn extract_inner_type_from_segment(segment: &PathSegment) -> Option<&Type> {
|
|||||||
mod struct_info {
|
mod struct_info {
|
||||||
use convert_case::{Case, Casing};
|
use convert_case::{Case, Casing};
|
||||||
use proc_macro2::TokenStream;
|
use proc_macro2::TokenStream;
|
||||||
use quote::quote;
|
use quote::{quote, ToTokens};
|
||||||
use syn::parse::Error;
|
use syn::parse::Error;
|
||||||
use syn::punctuated::Punctuated;
|
use syn::punctuated::Punctuated;
|
||||||
use syn::spanned::Spanned;
|
use syn::spanned::Spanned;
|
||||||
@@ -884,7 +884,7 @@ Finally, call `.build()` to create the instance of `{name}`.
|
|||||||
_phantom: (#( #phantom_generics ),*),
|
_phantom: (#( #phantom_generics ),*),
|
||||||
}
|
}
|
||||||
|
|
||||||
impl #impl_generics dioxus_core::prelude::Properties for #name #ty_generics
|
impl #impl_generics dioxus_core::Properties for #name #ty_generics
|
||||||
#b_generics_where
|
#b_generics_where
|
||||||
{
|
{
|
||||||
type Builder = #builder_name #generics_with_empty;
|
type Builder = #builder_name #generics_with_empty;
|
||||||
@@ -1024,22 +1024,19 @@ Finally, call `.build()` to create the instance of `{name}`.
|
|||||||
|
|
||||||
Ok(quote! {
|
Ok(quote! {
|
||||||
#[allow(dead_code, non_camel_case_types, missing_docs)]
|
#[allow(dead_code, non_camel_case_types, missing_docs)]
|
||||||
impl #impl_generics dioxus_core::prelude::HasAttributes for #builder_name < #( #ty_generics ),* > #where_clause {
|
impl #impl_generics dioxus_core::HasAttributes for #builder_name < #( #ty_generics ),* > #where_clause {
|
||||||
fn push_attribute<L>(
|
fn push_attribute<L>(
|
||||||
mut self,
|
mut self,
|
||||||
____name: &'static str,
|
____name: &'static str,
|
||||||
____ns: Option<&'static str>,
|
____ns: Option<&'static str>,
|
||||||
____attr: impl dioxus_core::prelude::IntoAttributeValue<L>,
|
____attr: impl dioxus_core::IntoAttributeValue<L>,
|
||||||
____volatile: bool
|
____volatile: bool
|
||||||
) -> Self {
|
) -> Self {
|
||||||
let ( #(#descructuring,)* ) = self.fields;
|
let ( #(#descructuring,)* ) = self.fields;
|
||||||
self.#field_name.push(
|
self.#field_name.push(
|
||||||
dioxus_core::Attribute::new(
|
dioxus_core::Attribute::new(
|
||||||
____name,
|
____name,
|
||||||
{
|
dioxus_core::IntoAttributeValue::<L>::into_value(____attr),
|
||||||
use dioxus_core::prelude::IntoAttributeValue;
|
|
||||||
____attr.into_value()
|
|
||||||
},
|
|
||||||
____ns,
|
____ns,
|
||||||
____volatile,
|
____volatile,
|
||||||
)
|
)
|
||||||
@@ -1150,16 +1147,16 @@ Finally, call `.build()` to create the instance of `{name}`.
|
|||||||
let marker_ident = syn::Ident::new("__Marker", proc_macro2::Span::call_site());
|
let marker_ident = syn::Ident::new("__Marker", proc_macro2::Span::call_site());
|
||||||
marker = Some(marker_ident.clone());
|
marker = Some(marker_ident.clone());
|
||||||
(
|
(
|
||||||
quote!(impl dioxus_core::prelude::SuperInto<#arg_type, #marker_ident>),
|
quote!(impl dioxus_core::SuperInto<#arg_type, #marker_ident>),
|
||||||
// If this looks like a signal type, we automatically convert it with SuperInto and use the props struct as the owner
|
// If this looks like a signal type, we automatically convert it with SuperInto and use the props struct as the owner
|
||||||
quote!(with_owner(self.owner.clone(), move || dioxus_core::prelude::SuperInto::super_into(#field_name))),
|
quote!(dioxus_core::with_owner(self.owner.clone(), move || dioxus_core::SuperInto::super_into(#field_name))),
|
||||||
)
|
)
|
||||||
} else if field.builder_attr.auto_into || field.builder_attr.strip_option {
|
} else if field.builder_attr.auto_into || field.builder_attr.strip_option {
|
||||||
let marker_ident = syn::Ident::new("__Marker", proc_macro2::Span::call_site());
|
let marker_ident = syn::Ident::new("__Marker", proc_macro2::Span::call_site());
|
||||||
marker = Some(marker_ident.clone());
|
marker = Some(marker_ident.clone());
|
||||||
(
|
(
|
||||||
quote!(impl dioxus_core::prelude::SuperInto<#arg_type, #marker_ident>),
|
quote!(impl dioxus_core::SuperInto<#arg_type, #marker_ident>),
|
||||||
quote!(dioxus_core::prelude::SuperInto::super_into(#field_name)),
|
quote!(dioxus_core::SuperInto::super_into(#field_name)),
|
||||||
)
|
)
|
||||||
} else if field.builder_attr.from_displayable {
|
} else if field.builder_attr.from_displayable {
|
||||||
(
|
(
|
||||||
@@ -1419,24 +1416,27 @@ Finally, call `.build()` to create the instance of `{name}`.
|
|||||||
// If this is a signal type, we use super_into and the props struct as the owner
|
// If this is a signal type, we use super_into and the props struct as the owner
|
||||||
let is_child_owned_type = child_owned_type(field.ty);
|
let is_child_owned_type = child_owned_type(field.ty);
|
||||||
|
|
||||||
let mut into = quote!{};
|
|
||||||
|
|
||||||
if !is_default {
|
let body = if !is_default {
|
||||||
if is_child_owned_type {
|
if is_child_owned_type {
|
||||||
into = quote!{ .super_into() }
|
quote!{ dioxus_core::SuperInto::super_into(#default) }
|
||||||
} else if field.builder_attr.auto_into {
|
} else if field.builder_attr.auto_into {
|
||||||
into = quote!{ .into() }
|
quote!{ (#default).into() }
|
||||||
} else if field.builder_attr.auto_to_string {
|
} else if field.builder_attr.auto_to_string {
|
||||||
into = quote!{ .to_string() }
|
quote!{ (#default).to_string() }
|
||||||
|
} else {
|
||||||
|
default.to_token_stream()
|
||||||
}
|
}
|
||||||
}
|
} else {
|
||||||
|
default.to_token_stream()
|
||||||
|
};
|
||||||
|
|
||||||
if field.builder_attr.skip {
|
if field.builder_attr.skip {
|
||||||
quote!(let #name = #default #into;)
|
quote!(let #name = #body;)
|
||||||
} else if is_child_owned_type {
|
} else if is_child_owned_type {
|
||||||
quote!(let #name = #helper_trait_name::into_value(#name, || with_owner(self.owner.clone(), move || (#default) #into));)
|
quote!(let #name = #helper_trait_name::into_value(#name, || dioxus_core::with_owner(self.owner.clone(), move || #body));)
|
||||||
} else {
|
} else {
|
||||||
quote!(let #name = #helper_trait_name::into_value(#name, || #default #into);)
|
quote!(let #name = #helper_trait_name::into_value(#name, || #body);)
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
quote!(let #name = #name.0;)
|
quote!(let #name = #name.0;)
|
||||||
@@ -1484,15 +1484,15 @@ Finally, call `.build()` to create the instance of `{name}`.
|
|||||||
/// Create a component from the props.
|
/// Create a component from the props.
|
||||||
pub fn into_vcomponent<M: 'static>(
|
pub fn into_vcomponent<M: 'static>(
|
||||||
self,
|
self,
|
||||||
render_fn: impl dioxus_core::prelude::ComponentFunction<#original_name #ty_generics, M>,
|
render_fn: impl dioxus_core::ComponentFunction<#original_name #ty_generics, M>,
|
||||||
) -> dioxus_core::VComponent {
|
) -> dioxus_core::VComponent {
|
||||||
use dioxus_core::prelude::ComponentFunction;
|
use dioxus_core::ComponentFunction;
|
||||||
let component_name = ::std::any::type_name_of_val(&render_fn);
|
let component_name = ::std::any::type_name_of_val(&render_fn);
|
||||||
dioxus_core::VComponent::new(move |wrapper: Self| render_fn.rebuild(wrapper.inner), self, component_name)
|
dioxus_core::VComponent::new(move |wrapper: Self| render_fn.rebuild(wrapper.inner), self, component_name)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
impl #original_impl_generics dioxus_core::prelude::Properties for #name #ty_generics #where_clause {
|
impl #original_impl_generics dioxus_core::Properties for #name #ty_generics #where_clause {
|
||||||
type Builder = ();
|
type Builder = ();
|
||||||
fn builder() -> Self::Builder {
|
fn builder() -> Self::Builder {
|
||||||
unreachable!()
|
unreachable!()
|
||||||
@@ -1742,7 +1742,7 @@ fn child_owned_type(ty: &Type) -> bool {
|
|||||||
fn looks_like_signal_type(ty: &Type) -> bool {
|
fn looks_like_signal_type(ty: &Type) -> bool {
|
||||||
match extract_base_type_without_generics(ty) {
|
match extract_base_type_without_generics(ty) {
|
||||||
Some(path_without_generics) => {
|
Some(path_without_generics) => {
|
||||||
path_without_generics == parse_quote!(dioxus_core::prelude::ReadOnlySignal)
|
path_without_generics == parse_quote!(dioxus_core::ReadOnlySignal)
|
||||||
|| path_without_generics == parse_quote!(prelude::ReadOnlySignal)
|
|| path_without_generics == parse_quote!(prelude::ReadOnlySignal)
|
||||||
|| path_without_generics == parse_quote!(ReadOnlySignal)
|
|| path_without_generics == parse_quote!(ReadOnlySignal)
|
||||||
}
|
}
|
||||||
@@ -1754,10 +1754,10 @@ fn looks_like_callback_type(ty: &Type) -> bool {
|
|||||||
let type_without_option = remove_option_wrapper(ty.clone());
|
let type_without_option = remove_option_wrapper(ty.clone());
|
||||||
match extract_base_type_without_generics(&type_without_option) {
|
match extract_base_type_without_generics(&type_without_option) {
|
||||||
Some(path_without_generics) => {
|
Some(path_without_generics) => {
|
||||||
path_without_generics == parse_quote!(dioxus_core::prelude::EventHandler)
|
path_without_generics == parse_quote!(dioxus_core::EventHandler)
|
||||||
|| path_without_generics == parse_quote!(prelude::EventHandler)
|
|| path_without_generics == parse_quote!(prelude::EventHandler)
|
||||||
|| path_without_generics == parse_quote!(EventHandler)
|
|| path_without_generics == parse_quote!(EventHandler)
|
||||||
|| path_without_generics == parse_quote!(dioxus_core::prelude::Callback)
|
|| path_without_generics == parse_quote!(dioxus_core::Callback)
|
||||||
|| path_without_generics == parse_quote!(prelude::Callback)
|
|| path_without_generics == parse_quote!(prelude::Callback)
|
||||||
|| path_without_generics == parse_quote!(Callback)
|
|| path_without_generics == parse_quote!(Callback)
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,4 +1,7 @@
|
|||||||
use dioxus::prelude::*;
|
use dioxus::{
|
||||||
|
core::{generation, needs_update},
|
||||||
|
prelude::*,
|
||||||
|
};
|
||||||
use dioxus_core::ElementId;
|
use dioxus_core::ElementId;
|
||||||
use std::{any::Any, rc::Rc};
|
use std::{any::Any, rc::Rc};
|
||||||
|
|
||||||
@@ -136,6 +139,8 @@ fn TakesSignal(sig: ReadOnlySignal<usize>, number: usize) -> Element {
|
|||||||
// Regression test for https://github.com/DioxusLabs/dioxus/issues/2582
|
// Regression test for https://github.com/DioxusLabs/dioxus/issues/2582
|
||||||
#[test]
|
#[test]
|
||||||
fn spreads_memorize_in_place() {
|
fn spreads_memorize_in_place() {
|
||||||
|
use dioxus_core::Properties;
|
||||||
|
|
||||||
#[derive(Props, Clone, PartialEq)]
|
#[derive(Props, Clone, PartialEq)]
|
||||||
struct CompProps {
|
struct CompProps {
|
||||||
#[props(extends = GlobalAttributes)]
|
#[props(extends = GlobalAttributes)]
|
||||||
|
|||||||
@@ -4,8 +4,7 @@
|
|||||||
|
|
||||||
```rust, no_run
|
```rust, no_run
|
||||||
# tokio::runtime::Runtime::new().unwrap().block_on(async {
|
# tokio::runtime::Runtime::new().unwrap().block_on(async {
|
||||||
use dioxus_core::prelude::*;
|
use dioxus_core::{VirtualDom, Event, Element, Mutations};
|
||||||
use dioxus_core::*;
|
|
||||||
|
|
||||||
let mut vdom = VirtualDom::new(app);
|
let mut vdom = VirtualDom::new(app);
|
||||||
let real_dom = SomeRenderer::new();
|
let real_dom = SomeRenderer::new();
|
||||||
|
|||||||
@@ -10,10 +10,9 @@ use crate::{
|
|||||||
VComponent, WriteMutations,
|
VComponent, WriteMutations,
|
||||||
},
|
},
|
||||||
nodes::{AsVNode, VNode},
|
nodes::{AsVNode, VNode},
|
||||||
prelude::SuspenseContext,
|
|
||||||
scopes::ScopeId,
|
scopes::ScopeId,
|
||||||
virtual_dom::VirtualDom,
|
virtual_dom::VirtualDom,
|
||||||
Element,
|
Element, SuspenseContext,
|
||||||
};
|
};
|
||||||
|
|
||||||
impl VirtualDom {
|
impl VirtualDom {
|
||||||
|
|||||||
@@ -1,6 +1,4 @@
|
|||||||
use crate::{
|
use crate::{current_scope_id, properties::SuperFrom, runtime::RuntimeGuard, Runtime, ScopeId};
|
||||||
prelude::current_scope_id, properties::SuperFrom, runtime::RuntimeGuard, Runtime, ScopeId,
|
|
||||||
};
|
|
||||||
use generational_box::GenerationalBox;
|
use generational_box::GenerationalBox;
|
||||||
use std::{any::Any, cell::RefCell, marker::PhantomData, panic::Location, rc::Rc};
|
use std::{any::Any, cell::RefCell, marker::PhantomData, panic::Location, rc::Rc};
|
||||||
|
|
||||||
@@ -337,7 +335,7 @@ impl<Ret> SpawnIfAsync<(), Ret> for Ret {
|
|||||||
pub struct AsyncMarker;
|
pub struct AsyncMarker;
|
||||||
impl<F: std::future::Future<Output = ()> + 'static> SpawnIfAsync<AsyncMarker> for F {
|
impl<F: std::future::Future<Output = ()> + 'static> SpawnIfAsync<AsyncMarker> for F {
|
||||||
fn spawn(self) {
|
fn spawn(self) {
|
||||||
crate::prelude::spawn(async move {
|
crate::spawn(async move {
|
||||||
self.await;
|
self.await;
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
@@ -353,9 +351,9 @@ where
|
|||||||
{
|
{
|
||||||
#[inline]
|
#[inline]
|
||||||
fn spawn(self) {
|
fn spawn(self) {
|
||||||
crate::prelude::spawn(async move {
|
crate::spawn(async move {
|
||||||
if let Err(err) = self.await {
|
if let Err(err) = self.await {
|
||||||
crate::prelude::throw_error(err)
|
crate::throw_error(err)
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
@@ -366,7 +364,7 @@ impl SpawnIfAsync<()> for crate::Result<()> {
|
|||||||
#[inline]
|
#[inline]
|
||||||
fn spawn(self) {
|
fn spawn(self) {
|
||||||
if let Err(err) = self {
|
if let Err(err) = self {
|
||||||
crate::prelude::throw_error(err)
|
crate::throw_error(err)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,6 +1,8 @@
|
|||||||
use crate::prelude::SuspenseContext;
|
|
||||||
use crate::runtime::RuntimeError;
|
use crate::runtime::RuntimeError;
|
||||||
use crate::{innerlude::SuspendedFuture, runtime::Runtime, CapturedError, Element, ScopeId, Task};
|
use crate::{
|
||||||
|
innerlude::SuspendedFuture, runtime::Runtime, CapturedError, Element, ScopeId, SuspenseContext,
|
||||||
|
Task,
|
||||||
|
};
|
||||||
use std::future::Future;
|
use std::future::Future;
|
||||||
use std::sync::Arc;
|
use std::sync::Arc;
|
||||||
|
|
||||||
@@ -18,7 +20,7 @@ pub fn vdom_is_rendering() -> bool {
|
|||||||
Runtime::with(|rt| rt.rendering.get()).unwrap_or_default()
|
Runtime::with(|rt| rt.rendering.get()).unwrap_or_default()
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Throw a [`CapturedError`] into the current scope. The error will bubble up to the nearest [`crate::prelude::ErrorBoundary()`] or the root of the app.
|
/// Throw a [`CapturedError`] into the current scope. The error will bubble up to the nearest [`crate::ErrorBoundary()`] or the root of the app.
|
||||||
///
|
///
|
||||||
/// # Examples
|
/// # Examples
|
||||||
/// ```rust, no_run
|
/// ```rust, no_run
|
||||||
|
|||||||
+14
-26
@@ -77,32 +77,20 @@ pub(crate) mod innerlude {
|
|||||||
}
|
}
|
||||||
|
|
||||||
pub use crate::innerlude::{
|
pub use crate::innerlude::{
|
||||||
fc_to_builder, generation, schedule_update, schedule_update_any, use_hook, vdom_is_rendering,
|
consume_context, consume_context_from_scope, current_owner, current_scope_id, fc_to_builder,
|
||||||
AnyValue, Attribute, AttributeValue, CapturedError, Component, ComponentFunction, DynamicNode,
|
force_all_dirty, generation, has_context, needs_update, needs_update_any, parent_scope,
|
||||||
Element, ElementId, Event, Fragment, HasAttributes, IntoDynNode, LaunchConfig,
|
provide_context, provide_error_boundary, provide_root_context, queue_effect, remove_future,
|
||||||
ListenerCallback, MarkerWrapper, Mutation, Mutations, NoOpMutations, Ok, Properties, Result,
|
schedule_update, schedule_update_any, spawn, spawn_forever, spawn_isomorphic, suspend,
|
||||||
Runtime, ScopeId, ScopeState, SpawnIfAsync, Task, Template, TemplateAttribute, TemplateNode,
|
suspense_context, throw_error, try_consume_context, use_after_render, use_before_render,
|
||||||
VComponent, VNode, VNodeInner, VPlaceholder, VText, VirtualDom, WriteMutations,
|
use_drop, use_hook, use_hook_with_cleanup, vdom_is_rendering, with_owner, AnyValue, Attribute,
|
||||||
|
AttributeValue, Callback, CapturedError, Component, ComponentFunction, Context, DynamicNode,
|
||||||
|
Element, ElementId, ErrorBoundary, ErrorContext, Event, EventHandler, Fragment, HasAttributes,
|
||||||
|
IntoAttributeValue, IntoDynNode, LaunchConfig, ListenerCallback, MarkerWrapper, Mutation,
|
||||||
|
Mutations, NoOpMutations, Ok, OptionStringFromMarker, Properties, ReactiveContext, RenderError,
|
||||||
|
Result, Runtime, RuntimeGuard, ScopeId, ScopeState, SpawnIfAsync, SuperFrom, SuperInto,
|
||||||
|
SuspendedFuture, SuspenseBoundary, SuspenseBoundaryProps, SuspenseContext, SuspenseExtension,
|
||||||
|
Task, Template, TemplateAttribute, TemplateNode, VComponent, VNode, VNodeInner, VPlaceholder,
|
||||||
|
VText, VirtualDom, WriteMutations,
|
||||||
};
|
};
|
||||||
|
|
||||||
/// The purpose of this module is to alleviate imports of many common types
|
|
||||||
///
|
|
||||||
/// This includes types like [`Element`], and [`Component`].
|
|
||||||
pub mod prelude {
|
|
||||||
pub use crate::innerlude::{
|
|
||||||
consume_context, consume_context_from_scope, current_owner, current_scope_id,
|
|
||||||
fc_to_builder, force_all_dirty, generation, has_context, needs_update, needs_update_any,
|
|
||||||
parent_scope, provide_context, provide_error_boundary, provide_root_context, queue_effect,
|
|
||||||
remove_future, spawn, spawn_forever, spawn_isomorphic, suspend, suspense_context,
|
|
||||||
throw_error, try_consume_context, use_after_render, use_before_render, use_drop, use_hook,
|
|
||||||
use_hook_with_cleanup, with_owner, AnyValue, Attribute, Callback, Component,
|
|
||||||
ComponentFunction, Context, Element, ErrorBoundary, ErrorContext, Event, EventHandler,
|
|
||||||
Fragment, HasAttributes, IntoAttributeValue, IntoDynNode, OptionStringFromMarker,
|
|
||||||
Properties, ReactiveContext, RenderError, Runtime, RuntimeGuard, ScopeId, ScopeState,
|
|
||||||
SuperFrom, SuperInto, SuspendedFuture, SuspenseBoundary, SuspenseBoundaryProps,
|
|
||||||
SuspenseContext, SuspenseExtension, Task, Template, TemplateAttribute, TemplateNode, VNode,
|
|
||||||
VNodeInner, VirtualDom,
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
||||||
pub use const_format;
|
pub use const_format;
|
||||||
@@ -1,15 +1,12 @@
|
|||||||
use dioxus_core_types::DioxusFormattable;
|
|
||||||
|
|
||||||
use crate::events::ListenerCallback;
|
|
||||||
use crate::innerlude::VProps;
|
|
||||||
use crate::prelude::RenderError;
|
|
||||||
use crate::{any_props::BoxedAnyProps, innerlude::ScopeState};
|
|
||||||
use crate::{arena::ElementId, Element, Event};
|
|
||||||
use crate::{
|
use crate::{
|
||||||
innerlude::{ElementRef, MountId},
|
any_props::BoxedAnyProps,
|
||||||
|
arena::ElementId,
|
||||||
|
events::ListenerCallback,
|
||||||
|
innerlude::{ElementRef, MountId, ScopeState, VProps},
|
||||||
properties::ComponentFunction,
|
properties::ComponentFunction,
|
||||||
|
Element, Event, Properties, RenderError, ScopeId, VirtualDom,
|
||||||
};
|
};
|
||||||
use crate::{Properties, ScopeId, VirtualDom};
|
use dioxus_core_types::DioxusFormattable;
|
||||||
use std::ops::Deref;
|
use std::ops::Deref;
|
||||||
use std::rc::Rc;
|
use std::rc::Rc;
|
||||||
use std::vec;
|
use std::vec;
|
||||||
|
|||||||
@@ -1,9 +1,4 @@
|
|||||||
use crate::{
|
use crate::{current_scope_id, scope_context::Scope, tasks::SchedulerMsg, Runtime, ScopeId};
|
||||||
prelude::{current_scope_id, ScopeId},
|
|
||||||
scope_context::Scope,
|
|
||||||
tasks::SchedulerMsg,
|
|
||||||
Runtime,
|
|
||||||
};
|
|
||||||
use futures_channel::mpsc::UnboundedReceiver;
|
use futures_channel::mpsc::UnboundedReceiver;
|
||||||
use generational_box::{BorrowMutError, GenerationalBox, SyncStorage};
|
use generational_box::{BorrowMutError, GenerationalBox, SyncStorage};
|
||||||
use std::{
|
use std::{
|
||||||
|
|||||||
@@ -1,4 +1,7 @@
|
|||||||
use crate::{prelude::*, properties::RootProps, DynamicNode, VComponent};
|
use crate::{
|
||||||
|
fc_to_builder, properties::RootProps, DynamicNode, Element, ErrorBoundary, Properties,
|
||||||
|
SuspenseBoundary, Template, TemplateNode, VComponent, VNode,
|
||||||
|
};
|
||||||
|
|
||||||
// We wrap the root scope in a component that renders it inside a default ErrorBoundary and SuspenseBoundary
|
// We wrap the root scope in a component that renders it inside a default ErrorBoundary and SuspenseBoundary
|
||||||
#[allow(non_snake_case)]
|
#[allow(non_snake_case)]
|
||||||
|
|||||||
@@ -1,13 +1,11 @@
|
|||||||
use crate::innerlude::{throw_error, RenderError, ScopeOrder};
|
|
||||||
use crate::nodes::AsVNode;
|
|
||||||
use crate::prelude::ReactiveContext;
|
|
||||||
use crate::scope_context::SuspenseLocation;
|
|
||||||
use crate::{
|
use crate::{
|
||||||
any_props::{AnyProps, BoxedAnyProps},
|
any_props::{AnyProps, BoxedAnyProps},
|
||||||
innerlude::ScopeState,
|
innerlude::{throw_error, RenderError, ScopeOrder, ScopeState},
|
||||||
scope_context::Scope,
|
nodes::AsVNode,
|
||||||
|
scope_context::{Scope, SuspenseLocation},
|
||||||
scopes::ScopeId,
|
scopes::ScopeId,
|
||||||
virtual_dom::VirtualDom,
|
virtual_dom::VirtualDom,
|
||||||
|
ReactiveContext,
|
||||||
};
|
};
|
||||||
use crate::{Element, VNode};
|
use crate::{Element, VNode};
|
||||||
|
|
||||||
|
|||||||
@@ -1,8 +1,7 @@
|
|||||||
use crate::runtime::RuntimeError;
|
|
||||||
use crate::{innerlude::SchedulerMsg, Runtime, ScopeId, Task};
|
|
||||||
use crate::{
|
use crate::{
|
||||||
innerlude::{throw_into, CapturedError},
|
innerlude::{throw_into, CapturedError, SchedulerMsg, SuspenseContext},
|
||||||
prelude::SuspenseContext,
|
runtime::RuntimeError,
|
||||||
|
Runtime, ScopeId, Task,
|
||||||
};
|
};
|
||||||
use generational_box::{AnyStorage, Owner};
|
use generational_box::{AnyStorage, Owner};
|
||||||
use rustc_hash::FxHashSet;
|
use rustc_hash::FxHashSet;
|
||||||
@@ -159,7 +158,7 @@ impl Scope {
|
|||||||
|
|
||||||
/// Schedule an update for any component given its [`ScopeId`].
|
/// Schedule an update for any component given its [`ScopeId`].
|
||||||
///
|
///
|
||||||
/// A component's [`ScopeId`] can be obtained from `use_hook` or the [`current_scope_id`](crate::prelude::current_scope_id) method.
|
/// A component's [`ScopeId`] can be obtained from `use_hook` or the [`current_scope_id`](crate::current_scope_id) method.
|
||||||
///
|
///
|
||||||
/// This method should be used when you want to schedule an update for a component.
|
/// This method should be used when you want to schedule an update for a component.
|
||||||
///
|
///
|
||||||
@@ -612,7 +611,7 @@ impl ScopeId {
|
|||||||
.on_scope(self, f)
|
.on_scope(self, f)
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Throw a [`CapturedError`] into a scope. The error will bubble up to the nearest [`ErrorBoundary`](crate::prelude::ErrorBoundary) or the root of the app.
|
/// Throw a [`CapturedError`] into a scope. The error will bubble up to the nearest [`ErrorBoundary`](crate::ErrorBoundary) or the root of the app.
|
||||||
///
|
///
|
||||||
/// # Examples
|
/// # Examples
|
||||||
/// ```rust, no_run
|
/// ```rust, no_run
|
||||||
|
|||||||
@@ -33,7 +33,7 @@ impl std::fmt::Debug for ScopeId {
|
|||||||
}
|
}
|
||||||
|
|
||||||
impl ScopeId {
|
impl ScopeId {
|
||||||
/// The ScopeId of the main scope passed into [`crate::prelude::VirtualDom::new`].
|
/// The ScopeId of the main scope passed into [`crate::VirtualDom::new`].
|
||||||
///
|
///
|
||||||
/// This scope will last for the entire duration of your app, making it convenient for long-lived state
|
/// This scope will last for the entire duration of your app, making it convenient for long-lived state
|
||||||
/// that is created dynamically somewhere down the component tree.
|
/// that is created dynamically somewhere down the component tree.
|
||||||
@@ -51,7 +51,7 @@ impl ScopeId {
|
|||||||
pub const APP: ScopeId = ScopeId(3);
|
pub const APP: ScopeId = ScopeId(3);
|
||||||
|
|
||||||
/// The ScopeId of the topmost scope in the tree.
|
/// The ScopeId of the topmost scope in the tree.
|
||||||
/// This will be higher up in the tree than [`ScopeId::APP`] because dioxus inserts a default [`crate::prelude::SuspenseBoundary`] and [`crate::prelude::ErrorBoundary`] at the root of the tree.
|
/// This will be higher up in the tree than [`ScopeId::APP`] because dioxus inserts a default [`crate::SuspenseBoundary`] and [`crate::ErrorBoundary`] at the root of the tree.
|
||||||
// ScopeId(0) is the root scope wrapper
|
// ScopeId(0) is the root scope wrapper
|
||||||
pub const ROOT: ScopeId = ScopeId(0);
|
pub const ROOT: ScopeId = ScopeId(0);
|
||||||
|
|
||||||
|
|||||||
@@ -2,8 +2,8 @@
|
|||||||
//!
|
//!
|
||||||
//! This tests to ensure we clean it up
|
//! This tests to ensure we clean it up
|
||||||
|
|
||||||
use dioxus::dioxus_core::{ElementId, Mutation::*};
|
|
||||||
use dioxus::prelude::*;
|
use dioxus::prelude::*;
|
||||||
|
use dioxus_core::{generation, ElementId, IntoAttributeValue, Mutation::*};
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn attrs_cycle() {
|
fn attrs_cycle() {
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
use dioxus::prelude::*;
|
use dioxus::prelude::*;
|
||||||
|
use dioxus_core::TemplateNode;
|
||||||
|
|
||||||
/// Make sure that rsx! is parsing templates and their attributes properly
|
/// Make sure that rsx! is parsing templates and their attributes properly
|
||||||
#[test]
|
#[test]
|
||||||
|
|||||||
@@ -1,6 +1,7 @@
|
|||||||
//! we should properly bubble up errors from components
|
//! we should properly bubble up errors from components
|
||||||
|
|
||||||
use dioxus::prelude::*;
|
use dioxus::prelude::*;
|
||||||
|
use dioxus_core::generation;
|
||||||
|
|
||||||
fn app() -> Element {
|
fn app() -> Element {
|
||||||
let raw = match generation() % 2 {
|
let raw = match generation() % 2 {
|
||||||
|
|||||||
@@ -3,6 +3,7 @@
|
|||||||
use std::{sync::atomic::AtomicUsize, time::Duration};
|
use std::{sync::atomic::AtomicUsize, time::Duration};
|
||||||
|
|
||||||
use dioxus::prelude::*;
|
use dioxus::prelude::*;
|
||||||
|
use dioxus_core::generation;
|
||||||
|
|
||||||
#[tokio::test]
|
#[tokio::test]
|
||||||
async fn child_futures_drop_first() {
|
async fn child_futures_drop_first() {
|
||||||
|
|||||||
@@ -1,5 +1,6 @@
|
|||||||
use dioxus::dioxus_core::{ElementId, Mutation::*};
|
use dioxus::dioxus_core::{ElementId, Mutation::*};
|
||||||
use dioxus::prelude::*;
|
use dioxus::prelude::*;
|
||||||
|
use dioxus_core::generation;
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn state_shares() {
|
fn state_shares() {
|
||||||
|
|||||||
@@ -1,5 +1,6 @@
|
|||||||
use dioxus::dioxus_core::{ElementId, Mutation::*};
|
use dioxus::dioxus_core::{ElementId, Mutation::*};
|
||||||
use dioxus::prelude::*;
|
use dioxus::prelude::*;
|
||||||
|
use dioxus_core::generation;
|
||||||
|
|
||||||
/// As we clean up old templates, the ID for the node should cycle
|
/// As we clean up old templates, the ID for the node should cycle
|
||||||
#[test]
|
#[test]
|
||||||
|
|||||||
@@ -1,5 +1,6 @@
|
|||||||
use dioxus::dioxus_core::{ElementId, Mutation::*};
|
use dioxus::dioxus_core::{ElementId, Mutation::*};
|
||||||
use dioxus::prelude::*;
|
use dioxus::prelude::*;
|
||||||
|
use dioxus_core::generation;
|
||||||
use pretty_assertions::assert_eq;
|
use pretty_assertions::assert_eq;
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
|
|||||||
@@ -1,6 +1,7 @@
|
|||||||
use dioxus::dioxus_core::Mutation::*;
|
use dioxus::dioxus_core::Mutation::*;
|
||||||
use dioxus::dioxus_core::{AttributeValue, ElementId, NoOpMutations};
|
use dioxus::dioxus_core::{AttributeValue, ElementId, NoOpMutations};
|
||||||
use dioxus::prelude::*;
|
use dioxus::prelude::*;
|
||||||
|
use dioxus_core::generation;
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn text_diff() {
|
fn text_diff() {
|
||||||
|
|||||||
@@ -6,6 +6,7 @@
|
|||||||
|
|
||||||
use dioxus::dioxus_core::{ElementId, Mutation::*};
|
use dioxus::dioxus_core::{ElementId, Mutation::*};
|
||||||
use dioxus::prelude::*;
|
use dioxus::prelude::*;
|
||||||
|
use dioxus_core::generation;
|
||||||
|
|
||||||
/// Should result in moves, but not removals or additions
|
/// Should result in moves, but not removals or additions
|
||||||
#[test]
|
#[test]
|
||||||
|
|||||||
@@ -2,7 +2,7 @@ use std::collections::HashSet;
|
|||||||
|
|
||||||
use dioxus::dioxus_core::{ElementId, Mutation::*};
|
use dioxus::dioxus_core::{ElementId, Mutation::*};
|
||||||
use dioxus::prelude::*;
|
use dioxus::prelude::*;
|
||||||
use dioxus_core::Mutation;
|
use dioxus_core::{generation, Mutation};
|
||||||
use pretty_assertions::assert_eq;
|
use pretty_assertions::assert_eq;
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
|
|||||||
@@ -1,5 +1,6 @@
|
|||||||
use dioxus::dioxus_core::{ElementId, Mutation};
|
use dioxus::dioxus_core::{ElementId, Mutation};
|
||||||
use dioxus::prelude::*;
|
use dioxus::prelude::*;
|
||||||
|
use dioxus_core::IntoAttributeValue;
|
||||||
use pretty_assertions::assert_eq;
|
use pretty_assertions::assert_eq;
|
||||||
|
|
||||||
fn basic_syntax_is_a_template() -> Element {
|
fn basic_syntax_is_a_template() -> Element {
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
use dioxus::prelude::*;
|
use dioxus::prelude::*;
|
||||||
|
use dioxus_core::generation;
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn app_drops() {
|
fn app_drops() {
|
||||||
|
|||||||
@@ -3,7 +3,7 @@
|
|||||||
use std::rc::Rc;
|
use std::rc::Rc;
|
||||||
|
|
||||||
use dioxus::prelude::*;
|
use dioxus::prelude::*;
|
||||||
use dioxus_core::NoOpMutations;
|
use dioxus_core::{generation, NoOpMutations};
|
||||||
|
|
||||||
/// This test checks that we should release all memory used by the virtualdom when it exits.
|
/// This test checks that we should release all memory used by the virtualdom when it exits.
|
||||||
///
|
///
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
use dioxus::prelude::*;
|
use dioxus::prelude::*;
|
||||||
use dioxus_core::{AttributeValue, ElementId, Mutation};
|
use dioxus_core::{generation, AttributeValue, ElementId, Mutation};
|
||||||
use pretty_assertions::assert_eq;
|
use pretty_assertions::assert_eq;
|
||||||
use std::future::poll_fn;
|
use std::future::poll_fn;
|
||||||
use std::task::Poll;
|
use std::task::Poll;
|
||||||
|
|||||||
@@ -3,6 +3,7 @@
|
|||||||
use std::{sync::atomic::AtomicUsize, time::Duration};
|
use std::{sync::atomic::AtomicUsize, time::Duration};
|
||||||
|
|
||||||
use dioxus::prelude::*;
|
use dioxus::prelude::*;
|
||||||
|
use dioxus_core::{generation, needs_update, spawn_forever};
|
||||||
|
|
||||||
async fn run_vdom(app: fn() -> Element) {
|
async fn run_vdom(app: fn() -> Element) {
|
||||||
let mut dom = VirtualDom::new(app);
|
let mut dom = VirtualDom::new(app);
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
use dioxus::html::SerializedHtmlEventConverter;
|
use dioxus::html::SerializedHtmlEventConverter;
|
||||||
use dioxus::prelude::*;
|
use dioxus::prelude::*;
|
||||||
use dioxus_core::ElementId;
|
use dioxus_core::{ElementId, Event};
|
||||||
use std::{any::Any, rc::Rc};
|
use std::{any::Any, rc::Rc};
|
||||||
use tracing_fluent_assertions::{AssertionRegistry, AssertionsLayer};
|
use tracing_fluent_assertions::{AssertionRegistry, AssertionsLayer};
|
||||||
use tracing_subscriber::{layer::SubscriberExt, Registry};
|
use tracing_subscriber::{layer::SubscriberExt, Registry};
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
use dioxus_core::prelude::Callback;
|
use dioxus_core::Callback;
|
||||||
use rustc_hash::FxHashMap;
|
use rustc_hash::FxHashMap;
|
||||||
use std::{cell::RefCell, rc::Rc};
|
use std::{cell::RefCell, rc::Rc};
|
||||||
use wry::{http::Request, RequestAsyncResponder};
|
use wry::{http::Request, RequestAsyncResponder};
|
||||||
|
|||||||
@@ -8,7 +8,7 @@ use crate::{
|
|||||||
webview::PendingWebview,
|
webview::PendingWebview,
|
||||||
AssetRequest, Config, WindowCloseBehaviour, WryEventHandler,
|
AssetRequest, Config, WindowCloseBehaviour, WryEventHandler,
|
||||||
};
|
};
|
||||||
use dioxus_core::{prelude::Callback, VirtualDom};
|
use dioxus_core::{Callback, VirtualDom};
|
||||||
use std::{
|
use std::{
|
||||||
cell::Cell,
|
cell::Cell,
|
||||||
future::{Future, IntoFuture},
|
future::{Future, IntoFuture},
|
||||||
@@ -31,7 +31,7 @@ use tao::platform::ios::WindowExtIOS;
|
|||||||
///
|
///
|
||||||
/// This function will panic if it is called outside of the context of a Dioxus App.
|
/// This function will panic if it is called outside of the context of a Dioxus App.
|
||||||
pub fn window() -> DesktopContext {
|
pub fn window() -> DesktopContext {
|
||||||
dioxus_core::prelude::consume_context()
|
dioxus_core::consume_context()
|
||||||
}
|
}
|
||||||
|
|
||||||
/// A handle to the [`DesktopService`] that can be passed around.
|
/// A handle to the [`DesktopService`] that can be passed around.
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
use crate::{query::Query, DesktopContext, WeakDesktopContext};
|
use crate::{query::Query, DesktopContext, WeakDesktopContext};
|
||||||
use dioxus_core::prelude::queue_effect;
|
use dioxus_core::queue_effect;
|
||||||
use dioxus_document::{
|
use dioxus_document::{
|
||||||
create_element_in_head, Document, Eval, EvalError, Evaluator, LinkProps, MetaProps,
|
create_element_in_head, Document, Eval, EvalError, Evaluator, LinkProps, MetaProps,
|
||||||
ScriptProps, StyleProps,
|
ScriptProps, StyleProps,
|
||||||
|
|||||||
@@ -11,8 +11,8 @@ use dioxus_html::{
|
|||||||
point_interaction::{
|
point_interaction::{
|
||||||
InteractionElementOffset, InteractionLocation, ModifiersInteraction, PointerInteraction,
|
InteractionElementOffset, InteractionLocation, ModifiersInteraction, PointerInteraction,
|
||||||
},
|
},
|
||||||
prelude::{SerializedMouseData, SerializedPointInteraction},
|
FileEngine, HasDragData, HasFileData, HasFormData, HasMouseData, SerializedMouseData,
|
||||||
FileEngine, HasDragData, HasFileData, HasFormData, HasMouseData,
|
SerializedPointInteraction,
|
||||||
};
|
};
|
||||||
|
|
||||||
use serde::Deserialize;
|
use serde::Deserialize;
|
||||||
@@ -233,7 +233,7 @@ impl InteractionElementOffset for DesktopFileDragEvent {
|
|||||||
}
|
}
|
||||||
|
|
||||||
impl ModifiersInteraction for DesktopFileDragEvent {
|
impl ModifiersInteraction for DesktopFileDragEvent {
|
||||||
fn modifiers(&self) -> dioxus_html::prelude::Modifiers {
|
fn modifiers(&self) -> dioxus_html::Modifiers {
|
||||||
self.mouse.modifiers()
|
self.mouse.modifiers()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -4,10 +4,7 @@ use crate::{
|
|||||||
assets::*, ipc::UserWindowEvent, shortcut::IntoAccelerator, window, DesktopContext,
|
assets::*, ipc::UserWindowEvent, shortcut::IntoAccelerator, window, DesktopContext,
|
||||||
HotKeyState, ShortcutHandle, ShortcutRegistryError, WryEventHandler,
|
HotKeyState, ShortcutHandle, ShortcutRegistryError, WryEventHandler,
|
||||||
};
|
};
|
||||||
use dioxus_core::{
|
use dioxus_core::{consume_context, use_hook, use_hook_with_cleanup, Runtime};
|
||||||
prelude::{consume_context, use_hook_with_cleanup},
|
|
||||||
use_hook, Runtime,
|
|
||||||
};
|
|
||||||
|
|
||||||
use dioxus_hooks::use_callback;
|
use dioxus_hooks::use_callback;
|
||||||
use tao::{event::Event, event_loop::EventLoopWindowTarget};
|
use tao::{event::Event, event_loop::EventLoopWindowTarget};
|
||||||
@@ -22,7 +19,7 @@ pub fn use_window() -> DesktopContext {
|
|||||||
pub fn use_wry_event_handler(
|
pub fn use_wry_event_handler(
|
||||||
mut handler: impl FnMut(&Event<UserWindowEvent>, &EventLoopWindowTarget<UserWindowEvent>) + 'static,
|
mut handler: impl FnMut(&Event<UserWindowEvent>, &EventLoopWindowTarget<UserWindowEvent>) + 'static,
|
||||||
) -> WryEventHandler {
|
) -> WryEventHandler {
|
||||||
use dioxus_core::prelude::current_scope_id;
|
use dioxus_core::current_scope_id;
|
||||||
|
|
||||||
// Capture the current runtime and scope ID.
|
// Capture the current runtime and scope ID.
|
||||||
let runtime = Runtime::current().unwrap();
|
let runtime = Runtime::current().unwrap();
|
||||||
|
|||||||
@@ -1,9 +1,6 @@
|
|||||||
//! tray icon
|
//! tray icon
|
||||||
|
|
||||||
use dioxus_core::{
|
use dioxus_core::{provide_context, try_consume_context, use_hook};
|
||||||
prelude::{provide_context, try_consume_context},
|
|
||||||
use_hook,
|
|
||||||
};
|
|
||||||
|
|
||||||
#[cfg(not(any(target_os = "ios", target_os = "android")))]
|
#[cfg(not(any(target_os = "ios", target_os = "android")))]
|
||||||
pub use tray_icon::*;
|
pub use tray_icon::*;
|
||||||
|
|||||||
@@ -44,7 +44,7 @@ pub fn try_apply_changes(dom: &VirtualDom, msg: &HotReloadMsg) -> Result<(), Pat
|
|||||||
|
|
||||||
if msg.for_pid == our_pid {
|
if msg.for_pid == our_pid {
|
||||||
unsafe { subsecond::apply_patch(jump_table) }?;
|
unsafe { subsecond::apply_patch(jump_table) }?;
|
||||||
dioxus_core::prelude::force_all_dirty();
|
dioxus_core::force_all_dirty();
|
||||||
ctx.clear::<Signal<Option<HotReloadedTemplate>>>();
|
ctx.clear::<Signal<Option<HotReloadedTemplate>>>();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -3,6 +3,8 @@
|
|||||||
#![doc(html_logo_url = "https://avatars.githubusercontent.com/u/79236386")]
|
#![doc(html_logo_url = "https://avatars.githubusercontent.com/u/79236386")]
|
||||||
#![doc(html_favicon_url = "https://avatars.githubusercontent.com/u/79236386")]
|
#![doc(html_favicon_url = "https://avatars.githubusercontent.com/u/79236386")]
|
||||||
|
|
||||||
|
pub use dioxus_core as core;
|
||||||
|
|
||||||
#[cfg(feature = "hooks")]
|
#[cfg(feature = "hooks")]
|
||||||
pub use dioxus_hooks as hooks;
|
pub use dioxus_hooks as hooks;
|
||||||
|
|
||||||
@@ -10,8 +12,8 @@ pub use dioxus_hooks as hooks;
|
|||||||
pub use dioxus_signals as signals;
|
pub use dioxus_signals as signals;
|
||||||
|
|
||||||
pub mod events {
|
pub mod events {
|
||||||
#[cfg(feature = "html")]
|
// #[cfg(feature = "html")]
|
||||||
pub use dioxus_html::prelude::*;
|
// pub use dioxus_html::prelude::*;
|
||||||
}
|
}
|
||||||
|
|
||||||
#[cfg(feature = "html")]
|
#[cfg(feature = "html")]
|
||||||
@@ -43,8 +45,6 @@ pub mod prelude {
|
|||||||
#[cfg(feature = "signals")]
|
#[cfg(feature = "signals")]
|
||||||
pub use dioxus_signals::*;
|
pub use dioxus_signals::*;
|
||||||
|
|
||||||
pub use dioxus_core::prelude::*;
|
|
||||||
|
|
||||||
#[cfg(feature = "macro")]
|
#[cfg(feature = "macro")]
|
||||||
#[allow(deprecated)]
|
#[allow(deprecated)]
|
||||||
pub use dioxus_core_macro::{component, rsx, Props};
|
pub use dioxus_core_macro::{component, rsx, Props};
|
||||||
@@ -56,7 +56,14 @@ pub mod prelude {
|
|||||||
pub use dioxus_html as dioxus_elements;
|
pub use dioxus_html as dioxus_elements;
|
||||||
|
|
||||||
#[cfg(feature = "html")]
|
#[cfg(feature = "html")]
|
||||||
pub use dioxus_elements::{global_attributes, prelude::*, svg_attributes};
|
pub use dioxus_elements::{events::*, global_attributes, svg_attributes, traits::*};
|
||||||
|
|
||||||
pub use dioxus_core;
|
pub use dioxus_core;
|
||||||
|
|
||||||
|
pub use dioxus_core::{
|
||||||
|
consume_context, provide_context, spawn, suspend, try_consume_context, use_hook, Attribute,
|
||||||
|
Callback, Component, Context, Element, ErrorBoundary, ErrorContext, Event, EventHandler,
|
||||||
|
Fragment, HasAttributes, IntoDynNode, RenderError, ScopeId, SuspenseBoundary,
|
||||||
|
SuspenseContext, SuspenseExtension, VNode, VirtualDom,
|
||||||
|
};
|
||||||
}
|
}
|
||||||
@@ -1,7 +1,7 @@
|
|||||||
#![allow(clippy::new_without_default)]
|
#![allow(clippy::new_without_default)]
|
||||||
#![allow(unused)]
|
#![allow(unused)]
|
||||||
use dioxus_config_macro::*;
|
use dioxus_config_macro::*;
|
||||||
use dioxus_core::LaunchConfig;
|
use dioxus_core::{Element, LaunchConfig};
|
||||||
use std::any::Any;
|
use std::any::Any;
|
||||||
|
|
||||||
use crate::prelude::*;
|
use crate::prelude::*;
|
||||||
@@ -299,7 +299,7 @@ impl LaunchBuilder {
|
|||||||
// Set any flags if we're running under fullstack
|
// Set any flags if we're running under fullstack
|
||||||
#[cfg(feature = "fullstack")]
|
#[cfg(feature = "fullstack")]
|
||||||
{
|
{
|
||||||
use dioxus_fullstack::prelude::server_fn::client::{get_server_url, set_server_url};
|
use dioxus_fullstack::server_fn::client::{get_server_url, set_server_url};
|
||||||
|
|
||||||
// Make sure to set the server_fn endpoint if the user specified the fullstack feature
|
// Make sure to set the server_fn endpoint if the user specified the fullstack feature
|
||||||
// We only set this on native targets
|
// We only set this on native targets
|
||||||
|
|||||||
@@ -32,6 +32,8 @@ pub use dioxus_core::{CapturedError, Ok, Result};
|
|||||||
#[cfg_attr(docsrs, doc(cfg(feature = "launch")))]
|
#[cfg_attr(docsrs, doc(cfg(feature = "launch")))]
|
||||||
mod launch;
|
mod launch;
|
||||||
|
|
||||||
|
pub use dioxus_core as core;
|
||||||
|
|
||||||
#[cfg(feature = "launch")]
|
#[cfg(feature = "launch")]
|
||||||
#[cfg_attr(docsrs, doc(cfg(feature = "launch")))]
|
#[cfg_attr(docsrs, doc(cfg(feature = "launch")))]
|
||||||
pub use crate::launch::*;
|
pub use crate::launch::*;
|
||||||
@@ -47,7 +49,7 @@ pub use dioxus_signals as signals;
|
|||||||
pub mod events {
|
pub mod events {
|
||||||
#[cfg(feature = "html")]
|
#[cfg(feature = "html")]
|
||||||
#[cfg_attr(docsrs, doc(cfg(feature = "html")))]
|
#[cfg_attr(docsrs, doc(cfg(feature = "html")))]
|
||||||
pub use dioxus_html::prelude::*;
|
pub use dioxus_html::events::*;
|
||||||
}
|
}
|
||||||
|
|
||||||
#[cfg(feature = "document")]
|
#[cfg(feature = "document")]
|
||||||
@@ -143,8 +145,6 @@ pub mod prelude {
|
|||||||
#[cfg_attr(docsrs, doc(cfg(feature = "signals")))]
|
#[cfg_attr(docsrs, doc(cfg(feature = "signals")))]
|
||||||
pub use dioxus_signals::*;
|
pub use dioxus_signals::*;
|
||||||
|
|
||||||
pub use dioxus_core::prelude::*;
|
|
||||||
|
|
||||||
#[cfg(feature = "macro")]
|
#[cfg(feature = "macro")]
|
||||||
#[cfg_attr(docsrs, doc(cfg(feature = "macro")))]
|
#[cfg_attr(docsrs, doc(cfg(feature = "macro")))]
|
||||||
#[allow(deprecated)]
|
#[allow(deprecated)]
|
||||||
@@ -160,7 +160,10 @@ pub mod prelude {
|
|||||||
|
|
||||||
#[cfg(feature = "html")]
|
#[cfg(feature = "html")]
|
||||||
#[cfg_attr(docsrs, doc(cfg(feature = "html")))]
|
#[cfg_attr(docsrs, doc(cfg(feature = "html")))]
|
||||||
pub use dioxus_elements::{global_attributes, prelude::*, svg_attributes};
|
pub use dioxus_elements::{
|
||||||
|
events::*, extensions::*, global_attributes, keyboard_types, svg_attributes, traits::*,
|
||||||
|
Code, GlobalAttributesExtension, Key, Location, Modifiers, SvgAttributesExtension,
|
||||||
|
};
|
||||||
|
|
||||||
#[cfg(feature = "devtools")]
|
#[cfg(feature = "devtools")]
|
||||||
#[cfg_attr(docsrs, doc(cfg(feature = "devtools")))]
|
#[cfg_attr(docsrs, doc(cfg(feature = "devtools")))]
|
||||||
@@ -170,7 +173,15 @@ pub mod prelude {
|
|||||||
|
|
||||||
#[cfg(feature = "fullstack")]
|
#[cfg(feature = "fullstack")]
|
||||||
#[cfg_attr(docsrs, doc(cfg(feature = "fullstack")))]
|
#[cfg_attr(docsrs, doc(cfg(feature = "fullstack")))]
|
||||||
pub use dioxus_fullstack::prelude::*;
|
pub use dioxus_fullstack::{
|
||||||
|
server, server_fn, use_server_cached, use_server_future, ServerFnError, ServerFnResult,
|
||||||
|
};
|
||||||
|
|
||||||
|
#[cfg(feature = "server")]
|
||||||
|
#[cfg_attr(docsrs, doc(cfg(feature = "server")))]
|
||||||
|
pub use dioxus_server::{
|
||||||
|
extract, DioxusRouterExt, DioxusRouterFnExt, FromContext, ServeConfig,
|
||||||
|
};
|
||||||
|
|
||||||
#[cfg(feature = "router")]
|
#[cfg(feature = "router")]
|
||||||
#[cfg_attr(docsrs, doc(cfg(feature = "router")))]
|
#[cfg_attr(docsrs, doc(cfg(feature = "router")))]
|
||||||
@@ -178,7 +189,10 @@ pub mod prelude {
|
|||||||
|
|
||||||
#[cfg(feature = "router")]
|
#[cfg(feature = "router")]
|
||||||
#[cfg_attr(docsrs, doc(cfg(feature = "router")))]
|
#[cfg_attr(docsrs, doc(cfg(feature = "router")))]
|
||||||
pub use dioxus_router::prelude::*;
|
pub use dioxus_router::{
|
||||||
|
hooks::*, navigator, use_navigator, GoBackButton, GoForwardButton, Link, NavigationTarget,
|
||||||
|
Outlet, Routable, Router,
|
||||||
|
};
|
||||||
|
|
||||||
#[cfg(feature = "asset")]
|
#[cfg(feature = "asset")]
|
||||||
#[cfg_attr(docsrs, doc(cfg(feature = "asset")))]
|
#[cfg_attr(docsrs, doc(cfg(feature = "asset")))]
|
||||||
@@ -187,4 +201,11 @@ pub mod prelude {
|
|||||||
#[cfg(feature = "wasm-split")]
|
#[cfg(feature = "wasm-split")]
|
||||||
#[cfg_attr(docsrs, doc(cfg(feature = "wasm-split")))]
|
#[cfg_attr(docsrs, doc(cfg(feature = "wasm-split")))]
|
||||||
pub use wasm_splitter as wasm_split;
|
pub use wasm_splitter as wasm_split;
|
||||||
|
|
||||||
|
pub use dioxus_core::{
|
||||||
|
consume_context, provide_context, spawn, suspend, try_consume_context, use_hook, Attribute,
|
||||||
|
Callback, Component, Context, Element, ErrorBoundary, ErrorContext, Event, EventHandler,
|
||||||
|
Fragment, HasAttributes, IntoDynNode, RenderError, ScopeId, SuspenseBoundary,
|
||||||
|
SuspenseContext, SuspenseExtension, VNode, VirtualDom,
|
||||||
|
};
|
||||||
}
|
}
|
||||||
@@ -1,5 +1,6 @@
|
|||||||
use super::*;
|
use super::*;
|
||||||
use crate::document;
|
use crate::document;
|
||||||
|
use dioxus_core::{use_hook, VNode};
|
||||||
use dioxus_html as dioxus_elements;
|
use dioxus_html as dioxus_elements;
|
||||||
|
|
||||||
#[non_exhaustive]
|
#[non_exhaustive]
|
||||||
|
|||||||
@@ -1,5 +1,6 @@
|
|||||||
use super::*;
|
use super::*;
|
||||||
use crate::document;
|
use crate::document;
|
||||||
|
use dioxus_core::{use_hook, VNode};
|
||||||
use dioxus_html as dioxus_elements;
|
use dioxus_html as dioxus_elements;
|
||||||
|
|
||||||
#[non_exhaustive]
|
#[non_exhaustive]
|
||||||
|
|||||||
@@ -2,7 +2,7 @@
|
|||||||
|
|
||||||
use std::{cell::RefCell, collections::HashSet, rc::Rc};
|
use std::{cell::RefCell, collections::HashSet, rc::Rc};
|
||||||
|
|
||||||
use dioxus_core::{prelude::*, DynamicNode};
|
use dioxus_core::{Attribute, DynamicNode, Element, RenderError, ScopeId, Template, TemplateNode};
|
||||||
use dioxus_core_macro::*;
|
use dioxus_core_macro::*;
|
||||||
|
|
||||||
mod link;
|
mod link;
|
||||||
@@ -23,6 +23,8 @@ pub use title::*;
|
|||||||
fn use_update_warning<T: PartialEq + Clone + 'static>(value: &T, name: &'static str) {
|
fn use_update_warning<T: PartialEq + Clone + 'static>(value: &T, name: &'static str) {
|
||||||
#[cfg(debug_assertions)]
|
#[cfg(debug_assertions)]
|
||||||
{
|
{
|
||||||
|
use dioxus_core::use_hook;
|
||||||
|
|
||||||
let cloned_value = value.clone();
|
let cloned_value = value.clone();
|
||||||
let initial = use_hook(move || value.clone());
|
let initial = use_hook(move || value.clone());
|
||||||
|
|
||||||
|
|||||||
@@ -1,5 +1,6 @@
|
|||||||
use super::*;
|
use super::*;
|
||||||
use crate::document;
|
use crate::document;
|
||||||
|
use dioxus_core::{use_hook, VNode};
|
||||||
use dioxus_html as dioxus_elements;
|
use dioxus_html as dioxus_elements;
|
||||||
|
|
||||||
#[non_exhaustive]
|
#[non_exhaustive]
|
||||||
|
|||||||
@@ -1,5 +1,6 @@
|
|||||||
use super::*;
|
use super::*;
|
||||||
use crate::document;
|
use crate::document;
|
||||||
|
use dioxus_core::{use_hook, VNode};
|
||||||
use dioxus_html as dioxus_elements;
|
use dioxus_html as dioxus_elements;
|
||||||
|
|
||||||
#[non_exhaustive]
|
#[non_exhaustive]
|
||||||
|
|||||||
@@ -1,3 +1,5 @@
|
|||||||
|
use dioxus_core::{use_hook, VNode};
|
||||||
|
|
||||||
use crate::document;
|
use crate::document;
|
||||||
|
|
||||||
use super::*;
|
use super::*;
|
||||||
|
|||||||
@@ -12,7 +12,7 @@ pub use eval::*;
|
|||||||
|
|
||||||
/// Get the document provider for the current platform or a no-op provider if the platform doesn't document functionality.
|
/// Get the document provider for the current platform or a no-op provider if the platform doesn't document functionality.
|
||||||
pub fn document() -> Rc<dyn Document> {
|
pub fn document() -> Rc<dyn Document> {
|
||||||
match dioxus_core::prelude::try_consume_context::<Rc<dyn Document>>() {
|
match dioxus_core::try_consume_context::<Rc<dyn Document>>() {
|
||||||
Some(document) => document,
|
Some(document) => document,
|
||||||
None => {
|
None => {
|
||||||
tracing::error!(
|
tracing::error!(
|
||||||
|
|||||||
@@ -2,7 +2,7 @@
|
|||||||
|
|
||||||
use std::cell::OnceCell;
|
use std::cell::OnceCell;
|
||||||
|
|
||||||
use dioxus_core::{prelude::queue_effect, schedule_update};
|
use dioxus_core::{queue_effect, schedule_update};
|
||||||
use dioxus_fullstack_protocol::is_hydrating;
|
use dioxus_fullstack_protocol::is_hydrating;
|
||||||
use dioxus_history::History;
|
use dioxus_history::History;
|
||||||
|
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
use dioxus_core::prelude::use_hook;
|
use dioxus_core::use_hook;
|
||||||
use dioxus_fullstack_protocol::SerializeContextEntry;
|
use dioxus_fullstack_protocol::SerializeContextEntry;
|
||||||
use serde::{de::DeserializeOwned, Serialize};
|
use serde::{de::DeserializeOwned, Serialize};
|
||||||
|
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
use dioxus_core::prelude::{suspend, use_hook, RenderError};
|
use dioxus_core::{suspend, use_hook, RenderError};
|
||||||
use dioxus_hooks::*;
|
use dioxus_hooks::*;
|
||||||
use dioxus_signals::Readable;
|
use dioxus_signals::Readable;
|
||||||
use serde::{de::DeserializeOwned, Serialize};
|
use serde::{de::DeserializeOwned, Serialize};
|
||||||
|
|||||||
@@ -5,9 +5,5 @@ pub mod history;
|
|||||||
mod hooks;
|
mod hooks;
|
||||||
mod streaming;
|
mod streaming;
|
||||||
|
|
||||||
pub mod prelude {
|
pub use crate::hooks::*;
|
||||||
//! A prelude of commonly used items in dioxus-fullstack-hooks.
|
pub use crate::streaming::*;
|
||||||
|
|
||||||
pub use crate::hooks::*;
|
|
||||||
pub use crate::streaming::*;
|
|
||||||
}
|
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
use dioxus_core::prelude::try_consume_context;
|
use dioxus_core::try_consume_context;
|
||||||
use dioxus_signals::{Readable, Signal, Writable};
|
use dioxus_signals::{Readable, Signal, Writable};
|
||||||
|
|
||||||
/// The status of the streaming response
|
/// The status of the streaming response
|
||||||
|
|||||||
@@ -174,8 +174,8 @@ pub fn serialize_context() -> HydrationContext {
|
|||||||
#[cfg(not(feature = "web"))]
|
#[cfg(not(feature = "web"))]
|
||||||
{
|
{
|
||||||
// On the server each scope creates the context lazily
|
// On the server each scope creates the context lazily
|
||||||
dioxus_core::prelude::has_context()
|
dioxus_core::has_context()
|
||||||
.unwrap_or_else(|| dioxus_core::prelude::provide_context(HydrationContext::default()))
|
.unwrap_or_else(|| dioxus_core::provide_context(HydrationContext::default()))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -4,7 +4,7 @@ use std::{
|
|||||||
str::FromStr,
|
str::FromStr,
|
||||||
};
|
};
|
||||||
|
|
||||||
use dioxus_lib::prelude::{dioxus_core::CapturedError, RenderError};
|
use dioxus_lib::core::{CapturedError, RenderError};
|
||||||
use serde::{de::DeserializeOwned, Serialize};
|
use serde::{de::DeserializeOwned, Serialize};
|
||||||
use server_fn::{
|
use server_fn::{
|
||||||
codec::JsonEncoding,
|
codec::JsonEncoding,
|
||||||
|
|||||||
@@ -12,19 +12,16 @@ mod error;
|
|||||||
#[cfg(all(feature = "web", feature = "document"))]
|
#[cfg(all(feature = "web", feature = "document"))]
|
||||||
pub use web::FullstackWebDocument;
|
pub use web::FullstackWebDocument;
|
||||||
|
|
||||||
#[cfg(feature = "server")]
|
|
||||||
pub use dioxus_server::*;
|
|
||||||
|
|
||||||
pub use dioxus_fullstack_hooks::history::FullstackHistory;
|
pub use dioxus_fullstack_hooks::history::FullstackHistory;
|
||||||
|
|
||||||
/// A prelude of commonly used items in dioxus-fullstack.
|
pub use crate::error::{ServerFnError, ServerFnResult};
|
||||||
pub mod prelude {
|
pub use dioxus_fullstack_hooks::*;
|
||||||
pub use dioxus_fullstack_hooks::prelude::*;
|
#[cfg(feature = "server")]
|
||||||
|
pub use dioxus_server::*;
|
||||||
pub use crate::error::{ServerFnError, ServerFnResult};
|
pub use dioxus_server_macro::*;
|
||||||
pub use dioxus_server_macro::*;
|
pub use server_fn::{
|
||||||
pub use server_fn::{self, ServerFn as _};
|
self, client,
|
||||||
|
client::{get_server_url, set_server_url},
|
||||||
#[cfg(feature = "server")]
|
codec, server, BoxedStream, ContentType, Decodes, Encodes, Format, FormatType, ServerFn as _,
|
||||||
pub use dioxus_server::prelude::*;
|
ServerFn, Websocket,
|
||||||
}
|
};
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
use dioxus_core::prelude::{provide_context, provide_root_context};
|
use dioxus_core::{provide_context, provide_root_context};
|
||||||
use std::{rc::Rc, sync::Arc};
|
use std::{rc::Rc, sync::Arc};
|
||||||
|
|
||||||
mod memory;
|
mod memory;
|
||||||
@@ -6,7 +6,7 @@ pub use memory::*;
|
|||||||
|
|
||||||
/// Get the history provider for the current platform if the platform doesn't implement a history functionality.
|
/// Get the history provider for the current platform if the platform doesn't implement a history functionality.
|
||||||
pub fn history() -> Rc<dyn History> {
|
pub fn history() -> Rc<dyn History> {
|
||||||
match dioxus_core::prelude::try_consume_context::<Rc<dyn History>>() {
|
match dioxus_core::try_consume_context::<Rc<dyn History>>() {
|
||||||
Some(history) => history,
|
Some(history) => history,
|
||||||
None => {
|
None => {
|
||||||
tracing::error!("Unable to find a history provider in the renderer. Make sure your renderer supports the Router. Falling back to the in-memory history provider.");
|
tracing::error!("Unable to find a history provider in the renderer. Make sure your renderer supports the Router. Falling back to the in-memory history provider.");
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
use dioxus_core::{prelude::suspense_context, use_hook};
|
use dioxus_core::{suspense_context, use_hook};
|
||||||
|
|
||||||
/// Run a closure after the suspense boundary this is under is resolved. The
|
/// Run a closure after the suspense boundary this is under is resolved. The
|
||||||
/// closure will be run immediately if the suspense boundary is already resolved
|
/// closure will be run immediately if the suspense boundary is already resolved
|
||||||
|
|||||||
@@ -1,5 +1,4 @@
|
|||||||
use dioxus_core::prelude::use_hook;
|
use dioxus_core::{use_hook, Callback};
|
||||||
use dioxus_core::prelude::Callback;
|
|
||||||
|
|
||||||
/// Create a callback that's always up to date. Whenever this hook is called the inner callback will be replaced with the new callback but the handle will remain.
|
/// Create a callback that's always up to date. Whenever this hook is called the inner callback will be replaced with the new callback but the handle will remain.
|
||||||
///
|
///
|
||||||
|
|||||||
@@ -1,7 +1,4 @@
|
|||||||
use dioxus_core::{
|
use dioxus_core::{consume_context, provide_context, try_consume_context, use_hook};
|
||||||
prelude::{consume_context, provide_context, try_consume_context},
|
|
||||||
use_hook,
|
|
||||||
};
|
|
||||||
|
|
||||||
/// Consume some context in the tree, providing a sharable handle to the value
|
/// Consume some context in the tree, providing a sharable handle to the value
|
||||||
///
|
///
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
use crate::{use_context_provider, use_future, UseFuture};
|
use crate::{use_context_provider, use_future, UseFuture};
|
||||||
use dioxus_core::prelude::{consume_context, use_hook};
|
|
||||||
use dioxus_core::Task;
|
use dioxus_core::Task;
|
||||||
|
use dioxus_core::{consume_context, use_hook};
|
||||||
use dioxus_signals::*;
|
use dioxus_signals::*;
|
||||||
pub use futures_channel::mpsc::{UnboundedReceiver, UnboundedSender};
|
pub use futures_channel::mpsc::{UnboundedReceiver, UnboundedSender};
|
||||||
use std::future::Future;
|
use std::future::Future;
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
use std::{cell::Cell, rc::Rc};
|
use std::{cell::Cell, rc::Rc};
|
||||||
|
|
||||||
use dioxus_core::prelude::*;
|
use dioxus_core::*;
|
||||||
use futures_util::StreamExt;
|
use futures_util::StreamExt;
|
||||||
|
|
||||||
use crate::use_callback;
|
use crate::use_callback;
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
#![allow(missing_docs)]
|
#![allow(missing_docs)]
|
||||||
use crate::{use_callback, use_hook_did_run, use_signal};
|
use crate::{use_callback, use_hook_did_run, use_signal};
|
||||||
use dioxus_core::prelude::*;
|
use dioxus_core::{use_hook, Callback, Task};
|
||||||
use dioxus_signals::*;
|
use dioxus_signals::*;
|
||||||
use std::future::Future;
|
use std::future::Future;
|
||||||
use std::ops::Deref;
|
use std::ops::Deref;
|
||||||
@@ -8,7 +8,7 @@ use std::ops::Deref;
|
|||||||
/// A hook that allows you to spawn a future the first time you render a component.
|
/// A hook that allows you to spawn a future the first time you render a component.
|
||||||
///
|
///
|
||||||
///
|
///
|
||||||
/// This future will **not** run on the server. To run a future on the server, you should use [`spawn_isomorphic`] directly.
|
/// This future will **not** run on the server. To run a future on the server, you should use [`dioxus_core::spawn_isomorphic`] directly.
|
||||||
///
|
///
|
||||||
///
|
///
|
||||||
/// `use_future` **won't return a value**. If you want to return a value from a future, use [`crate::use_resource()`] instead.
|
/// `use_future` **won't return a value**. If you want to return a value from a future, use [`crate::use_resource()`] instead.
|
||||||
@@ -50,7 +50,7 @@ where
|
|||||||
|
|
||||||
let callback = use_callback(move |_| {
|
let callback = use_callback(move |_| {
|
||||||
let fut = future();
|
let fut = future();
|
||||||
spawn(async move {
|
dioxus_core::spawn(async move {
|
||||||
state.set(UseFutureState::Pending);
|
state.set(UseFutureState::Pending);
|
||||||
fut.await;
|
fut.await;
|
||||||
state.set(UseFutureState::Ready);
|
state.set(UseFutureState::Ready);
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
use dioxus_core::prelude::*;
|
use dioxus_core::{use_after_render, use_before_render, use_hook};
|
||||||
use dioxus_signals::{CopyValue, Writable};
|
use dioxus_signals::{CopyValue, Writable};
|
||||||
|
|
||||||
/// A hook that uses before/after lifecycle hooks to determine if the hook was run
|
/// A hook that uses before/after lifecycle hooks to determine if the hook was run
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
use crate::use_callback;
|
use crate::use_callback;
|
||||||
use dioxus_core::prelude::*;
|
use dioxus_core::use_hook;
|
||||||
use dioxus_signals::Memo;
|
use dioxus_signals::Memo;
|
||||||
|
|
||||||
#[doc = include_str!("../docs/derived_state.md")]
|
#[doc = include_str!("../docs/derived_state.md")]
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
use dioxus_core::prelude::use_drop;
|
use dioxus_core::use_drop;
|
||||||
|
|
||||||
#[deprecated(note = "Use `use_drop` instead, which has the same functionality.")]
|
#[deprecated(note = "Use `use_drop` instead, which has the same functionality.")]
|
||||||
pub fn use_on_unmount<D: FnOnce() + 'static>(destroy: D) {
|
pub fn use_on_unmount<D: FnOnce() + 'static>(destroy: D) {
|
||||||
|
|||||||
@@ -1,7 +1,11 @@
|
|||||||
#![allow(missing_docs)]
|
#![allow(missing_docs)]
|
||||||
|
|
||||||
use crate::{use_callback, use_signal};
|
use crate::{use_callback, use_signal};
|
||||||
use dioxus_core::prelude::*;
|
|
||||||
|
use dioxus_core::{
|
||||||
|
spawn, use_hook, Callback, IntoAttributeValue, IntoDynNode, ReactiveContext, RenderError,
|
||||||
|
SuspendedFuture, Task,
|
||||||
|
};
|
||||||
use dioxus_signals::*;
|
use dioxus_signals::*;
|
||||||
use futures_util::{future, pin_mut, FutureExt, StreamExt};
|
use futures_util::{future, pin_mut, FutureExt, StreamExt};
|
||||||
use std::ops::Deref;
|
use std::ops::Deref;
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
use dioxus_core::{prelude::provide_root_context, prelude::try_consume_context, use_hook};
|
use dioxus_core::{provide_root_context, try_consume_context, use_hook};
|
||||||
|
|
||||||
/// Try to get a value from the root of the virtual dom, if it doesn't exist, create a new one with the closure provided.
|
/// Try to get a value from the root of the virtual dom, if it doesn't exist, create a new one with the closure provided.
|
||||||
///
|
///
|
||||||
|
|||||||
@@ -1,7 +1,6 @@
|
|||||||
use std::hash::Hash;
|
use dioxus_core::use_hook;
|
||||||
|
|
||||||
use dioxus_core::prelude::*;
|
|
||||||
use dioxus_signals::{ReadOnlySignal, SetCompare};
|
use dioxus_signals::{ReadOnlySignal, SetCompare};
|
||||||
|
use std::hash::Hash;
|
||||||
|
|
||||||
/// Creates a new SetCompare which efficiently tracks when a value changes to check if it is equal to a set of values.
|
/// Creates a new SetCompare which efficiently tracks when a value changes to check if it is equal to a set of values.
|
||||||
///
|
///
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
use dioxus_core::prelude::*;
|
use dioxus_core::use_hook;
|
||||||
use dioxus_signals::{Signal, SignalData, Storage, SyncStorage, UnsyncStorage};
|
use dioxus_signals::{Signal, SignalData, Storage, SyncStorage, UnsyncStorage};
|
||||||
|
|
||||||
/// Creates a new Signal. Signals are a Copy state management solution with automatic dependency tracking.
|
/// Creates a new Signal. Signals are a Copy state management solution with automatic dependency tracking.
|
||||||
|
|||||||
@@ -30,7 +30,7 @@ async fn effects_rerun() {
|
|||||||
println!("Signal: {:?}", signal);
|
println!("Signal: {:?}", signal);
|
||||||
|
|
||||||
// Stop the wait for work manually
|
// Stop the wait for work manually
|
||||||
needs_update();
|
dioxus_core::needs_update();
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
signal += 1;
|
signal += 1;
|
||||||
|
|||||||
@@ -1,3 +1,5 @@
|
|||||||
|
use dioxus_core::generation;
|
||||||
|
|
||||||
#[tokio::test]
|
#[tokio::test]
|
||||||
async fn memo_updates() {
|
async fn memo_updates() {
|
||||||
use std::cell::RefCell;
|
use std::cell::RefCell;
|
||||||
|
|||||||
@@ -1,8 +1,8 @@
|
|||||||
#![allow(non_upper_case_globals)]
|
#![allow(non_upper_case_globals)]
|
||||||
#![allow(deprecated)]
|
#![allow(deprecated)]
|
||||||
|
|
||||||
use dioxus_core::prelude::IntoAttributeValue;
|
|
||||||
use dioxus_core::HasAttributes;
|
use dioxus_core::HasAttributes;
|
||||||
|
use dioxus_core::IntoAttributeValue;
|
||||||
use dioxus_html_internal_macro::impl_extension_attributes;
|
use dioxus_html_internal_macro::impl_extension_attributes;
|
||||||
|
|
||||||
use crate::AttributeDescription;
|
use crate::AttributeDescription;
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
#![allow(non_upper_case_globals)]
|
#![allow(non_upper_case_globals)]
|
||||||
|
|
||||||
use dioxus_core::prelude::IntoAttributeValue;
|
|
||||||
use dioxus_core::HasAttributes;
|
use dioxus_core::HasAttributes;
|
||||||
|
use dioxus_core::IntoAttributeValue;
|
||||||
#[cfg(feature = "hot-reload-context")]
|
#[cfg(feature = "hot-reload-context")]
|
||||||
use dioxus_core_types::HotReloadingContext;
|
use dioxus_core_types::HotReloadingContext;
|
||||||
use dioxus_html_internal_macro::impl_extension_attributes;
|
use dioxus_html_internal_macro::impl_extension_attributes;
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
use crate::geometry::{ClientPoint, Coordinates, ElementPoint, PagePoint, ScreenPoint};
|
use crate::geometry::{ClientPoint, Coordinates, ElementPoint, PagePoint, ScreenPoint};
|
||||||
use crate::input_data::{MouseButton, MouseButtonSet};
|
use crate::input_data::{MouseButton, MouseButtonSet};
|
||||||
use crate::prelude::*;
|
use crate::*;
|
||||||
|
|
||||||
use dioxus_core::Event;
|
use dioxus_core::Event;
|
||||||
use keyboard_types::Modifiers;
|
use keyboard_types::Modifiers;
|
||||||
|
|||||||
@@ -2,7 +2,7 @@ use dioxus_core::Event;
|
|||||||
use keyboard_types::{Code, Key, Location, Modifiers};
|
use keyboard_types::{Code, Key, Location, Modifiers};
|
||||||
use std::fmt::Debug;
|
use std::fmt::Debug;
|
||||||
|
|
||||||
use crate::prelude::ModifiersInteraction;
|
use crate::ModifiersInteraction;
|
||||||
|
|
||||||
#[cfg(feature = "serialize")]
|
#[cfg(feature = "serialize")]
|
||||||
fn resilient_deserialize_code<'de, D>(deserializer: D) -> Result<Code, D::Error>
|
fn resilient_deserialize_code<'de, D>(deserializer: D) -> Result<Code, D::Error>
|
||||||
|
|||||||
@@ -25,7 +25,7 @@ macro_rules! impl_event {
|
|||||||
#[doc(alias = $js_name)]
|
#[doc(alias = $js_name)]
|
||||||
)?
|
)?
|
||||||
#[inline]
|
#[inline]
|
||||||
pub fn $name<__Marker>(mut _f: impl ::dioxus_core::prelude::SuperInto<::dioxus_core::ListenerCallback<$data>, __Marker>) -> ::dioxus_core::Attribute {
|
pub fn $name<__Marker>(mut _f: impl ::dioxus_core::SuperInto<::dioxus_core::ListenerCallback<$data>, __Marker>) -> ::dioxus_core::Attribute {
|
||||||
let event_handler = _f.super_into();
|
let event_handler = _f.super_into();
|
||||||
::dioxus_core::Attribute::new(
|
::dioxus_core::Attribute::new(
|
||||||
impl_event!(@name $name $($js_name)?),
|
impl_event!(@name $name $($js_name)?),
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
use crate::geometry::{ClientPoint, Coordinates, ElementPoint, PagePoint, ScreenPoint};
|
use crate::geometry::{ClientPoint, Coordinates, ElementPoint, PagePoint, ScreenPoint};
|
||||||
use crate::input_data::{MouseButton, MouseButtonSet};
|
use crate::input_data::{MouseButton, MouseButtonSet};
|
||||||
use crate::prelude::*;
|
use crate::*;
|
||||||
use dioxus_core::Event;
|
use dioxus_core::Event;
|
||||||
use keyboard_types::Modifiers;
|
use keyboard_types::Modifiers;
|
||||||
|
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
use dioxus_core::Event;
|
use dioxus_core::Event;
|
||||||
use keyboard_types::Modifiers;
|
use keyboard_types::Modifiers;
|
||||||
|
|
||||||
use crate::{geometry::*, input_data::*, prelude::*};
|
use crate::{geometry::*, input_data::*, *};
|
||||||
|
|
||||||
/// A synthetic event that wraps a web-style [`PointerEvent`](https://developer.mozilla.org/en-US/docs/Web/API/PointerEvent)
|
/// A synthetic event that wraps a web-style [`PointerEvent`](https://developer.mozilla.org/en-US/docs/Web/API/PointerEvent)
|
||||||
pub type PointerEvent = Event<PointerData>;
|
pub type PointerEvent = Event<PointerData>;
|
||||||
|
|||||||
@@ -2,7 +2,7 @@ use dioxus_core::Event;
|
|||||||
use keyboard_types::Modifiers;
|
use keyboard_types::Modifiers;
|
||||||
|
|
||||||
use crate::geometry::*;
|
use crate::geometry::*;
|
||||||
use crate::prelude::{InteractionLocation, ModifiersInteraction};
|
use crate::{InteractionLocation, ModifiersInteraction};
|
||||||
|
|
||||||
pub type TouchEvent = Event<TouchData>;
|
pub type TouchEvent = Event<TouchData>;
|
||||||
pub struct TouchData {
|
pub struct TouchData {
|
||||||
|
|||||||
@@ -1,9 +1,12 @@
|
|||||||
use dioxus_core::Event;
|
use dioxus_core::Event;
|
||||||
|
use keyboard_types::Modifiers;
|
||||||
use std::fmt::Formatter;
|
use std::fmt::Formatter;
|
||||||
|
|
||||||
use crate::geometry::*;
|
use crate::{geometry::*, InteractionLocation, ModifiersInteraction, PointerInteraction};
|
||||||
use crate::input_data::{MouseButton, MouseButtonSet};
|
use crate::{
|
||||||
use crate::prelude::*;
|
input_data::{MouseButton, MouseButtonSet},
|
||||||
|
InteractionElementOffset,
|
||||||
|
};
|
||||||
|
|
||||||
use super::HasMouseData;
|
use super::HasMouseData;
|
||||||
|
|
||||||
|
|||||||
@@ -41,15 +41,17 @@ pub use elements::*;
|
|||||||
pub use events::*;
|
pub use events::*;
|
||||||
pub use render_template::*;
|
pub use render_template::*;
|
||||||
|
|
||||||
|
pub use crate::attribute_groups::{GlobalAttributesExtension, SvgAttributesExtension};
|
||||||
|
pub use crate::elements::extensions::*;
|
||||||
|
pub use crate::point_interaction::*;
|
||||||
|
pub use keyboard_types::{self, Code, Key, Location, Modifiers};
|
||||||
|
|
||||||
|
pub mod traits {
|
||||||
|
pub use crate::events::*;
|
||||||
|
pub use crate::point_interaction::*;
|
||||||
|
}
|
||||||
|
|
||||||
pub mod extensions {
|
pub mod extensions {
|
||||||
pub use crate::attribute_groups::{GlobalAttributesExtension, SvgAttributesExtension};
|
pub use crate::attribute_groups::{GlobalAttributesExtension, SvgAttributesExtension};
|
||||||
pub use crate::elements::extensions::*;
|
pub use crate::elements::extensions::*;
|
||||||
}
|
}
|
||||||
|
|
||||||
pub mod prelude {
|
|
||||||
pub use crate::attribute_groups::{GlobalAttributesExtension, SvgAttributesExtension};
|
|
||||||
pub use crate::elements::extensions::*;
|
|
||||||
pub use crate::events::*;
|
|
||||||
pub use crate::point_interaction::*;
|
|
||||||
pub use keyboard_types::{self, Code, Key, Location, Modifiers};
|
|
||||||
}
|
|
||||||
@@ -41,7 +41,7 @@ impl LiveviewRouter for Router {
|
|||||||
fn with_virtual_dom(
|
fn with_virtual_dom(
|
||||||
self,
|
self,
|
||||||
route: &str,
|
route: &str,
|
||||||
app: impl Fn() -> dioxus_core::prelude::VirtualDom + Send + Sync + 'static,
|
app: impl Fn() -> dioxus_core::VirtualDom + Send + Sync + 'static,
|
||||||
) -> Self {
|
) -> Self {
|
||||||
let view = crate::LiveViewPool::new();
|
let view = crate::LiveViewPool::new();
|
||||||
|
|
||||||
|
|||||||
@@ -33,7 +33,7 @@ impl<R: LiveviewRouter> Config<R> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/// Create a new configuration for the LiveView server.
|
/// Create a new configuration for the LiveView server.
|
||||||
pub fn with_app(mut self, app: fn() -> dioxus_core::prelude::Element) -> Self {
|
pub fn with_app(mut self, app: fn() -> dioxus_core::Element) -> Self {
|
||||||
self.router = self.router.with_app(&self.route, app);
|
self.router = self.router.with_app(&self.route, app);
|
||||||
self
|
self
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
use dioxus_core::prelude::queue_effect;
|
use dioxus_core::queue_effect;
|
||||||
use dioxus_core::ScopeId;
|
use dioxus_core::ScopeId;
|
||||||
use dioxus_document::{
|
use dioxus_document::{
|
||||||
create_element_in_head, Document, Eval, EvalError, Evaluator, LinkProps, MetaProps,
|
create_element_in_head, Document, Eval, EvalError, Evaluator, LinkProps, MetaProps,
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
use dioxus_core::prelude::spawn;
|
use dioxus_core::spawn;
|
||||||
use dioxus_document::Eval;
|
use dioxus_document::Eval;
|
||||||
use dioxus_history::History;
|
use dioxus_history::History;
|
||||||
use serde::{Deserialize, Serialize};
|
use serde::{Deserialize, Serialize};
|
||||||
|
|||||||
@@ -5,7 +5,8 @@ use crate::{
|
|||||||
query::{QueryEngine, QueryResult},
|
query::{QueryEngine, QueryResult},
|
||||||
LiveViewError,
|
LiveViewError,
|
||||||
};
|
};
|
||||||
use dioxus_core::prelude::*;
|
|
||||||
|
use dioxus_core::{provide_context, Element, Event, ScopeId, VirtualDom};
|
||||||
use dioxus_html::{EventData, HtmlEvent, PlatformEventData};
|
use dioxus_html::{EventData, HtmlEvent, PlatformEventData};
|
||||||
use dioxus_interpreter_js::MutationState;
|
use dioxus_interpreter_js::MutationState;
|
||||||
use futures_util::{pin_mut, SinkExt, StreamExt};
|
use futures_util::{pin_mut, SinkExt, StreamExt};
|
||||||
|
|||||||
@@ -10,7 +10,7 @@ pub use anyrender_vello::{
|
|||||||
};
|
};
|
||||||
|
|
||||||
pub fn use_wgpu<T: CustomPaintSource>(create_source: impl FnOnce() -> T) -> u64 {
|
pub fn use_wgpu<T: CustomPaintSource>(create_source: impl FnOnce() -> T) -> u64 {
|
||||||
use dioxus_core::prelude::{consume_context, use_hook_with_cleanup};
|
use dioxus_core::{consume_context, use_hook_with_cleanup};
|
||||||
|
|
||||||
let (_renderer, id) = use_hook_with_cleanup(
|
let (_renderer, id) = use_hook_with_cleanup(
|
||||||
|| {
|
|| {
|
||||||
|
|||||||
@@ -5,10 +5,8 @@
|
|||||||
// - Hydration
|
// - Hydration
|
||||||
|
|
||||||
#![allow(non_snake_case)]
|
#![allow(non_snake_case)]
|
||||||
use dioxus::prelude::{
|
use dioxus::fullstack::{codec::JsonEncoding, commit_initial_chunk, BoxedStream, Websocket};
|
||||||
server_fn::{codec::JsonEncoding, BoxedStream, Websocket},
|
use dioxus::prelude::*;
|
||||||
*,
|
|
||||||
};
|
|
||||||
use futures::{channel::mpsc, SinkExt, StreamExt};
|
use futures::{channel::mpsc, SinkExt, StreamExt};
|
||||||
|
|
||||||
fn main() {
|
fn main() {
|
||||||
@@ -77,6 +75,7 @@ fn DefaultServerFnCodec() -> Element {
|
|||||||
|
|
||||||
#[cfg(feature = "server")]
|
#[cfg(feature = "server")]
|
||||||
async fn assert_server_context_provided() {
|
async fn assert_server_context_provided() {
|
||||||
|
use dioxus::server::{extract, FromContext};
|
||||||
let FromContext(i): FromContext<u32> = extract().await.unwrap();
|
let FromContext(i): FromContext<u32> = extract().await.unwrap();
|
||||||
assert_eq!(i, 1234u32);
|
assert_eq!(i, 1234u32);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -12,7 +12,7 @@ use serde::{Deserialize, Serialize};
|
|||||||
|
|
||||||
pub fn app() -> Element {
|
pub fn app() -> Element {
|
||||||
// Start streaming immediately
|
// Start streaming immediately
|
||||||
use_hook(commit_initial_chunk);
|
use_hook(dioxus::fullstack::commit_initial_chunk);
|
||||||
|
|
||||||
rsx! {
|
rsx! {
|
||||||
SuspenseBoundary {
|
SuspenseBoundary {
|
||||||
|
|||||||
@@ -9,7 +9,7 @@ fn main() {
|
|||||||
.with_cfg(server_only! {
|
.with_cfg(server_only! {
|
||||||
ServeConfig::builder()
|
ServeConfig::builder()
|
||||||
.incremental(
|
.incremental(
|
||||||
IncrementalRendererConfig::new()
|
dioxus::server::IncrementalRendererConfig::new()
|
||||||
.static_dir(
|
.static_dir(
|
||||||
std::env::current_exe()
|
std::env::current_exe()
|
||||||
.unwrap()
|
.unwrap()
|
||||||
|
|||||||
@@ -5,7 +5,7 @@
|
|||||||
// - Server futures
|
// - Server futures
|
||||||
|
|
||||||
#![allow(non_snake_case, unused)]
|
#![allow(non_snake_case, unused)]
|
||||||
use dioxus::prelude::*;
|
use dioxus::{fullstack::commit_initial_chunk, prelude::*};
|
||||||
use serde::{Deserialize, Serialize};
|
use serde::{Deserialize, Serialize};
|
||||||
|
|
||||||
fn app() -> Element {
|
fn app() -> Element {
|
||||||
|
|||||||
@@ -134,7 +134,7 @@ async fn add_body_element() {
|
|||||||
let output_box = document.get_element_by_id("output-box").unwrap_throw();
|
let output_box = document.get_element_by_id("output-box").unwrap_throw();
|
||||||
output_box.append_child(&output).unwrap_throw();
|
output_box.append_child(&output).unwrap_throw();
|
||||||
|
|
||||||
dioxus::prelude::queue_effect(move || {
|
dioxus::core::queue_effect(move || {
|
||||||
web_sys::console::log_1(&"add body async internal!".into());
|
web_sys::console::log_1(&"add body async internal!".into());
|
||||||
*GLOBAL_COUNTER.write() += 2;
|
*GLOBAL_COUNTER.write() += 2;
|
||||||
});
|
});
|
||||||
@@ -146,7 +146,7 @@ async fn gzip_it() {
|
|||||||
let reader = Box::pin(futures::io::BufReader::new(DATA));
|
let reader = Box::pin(futures::io::BufReader::new(DATA));
|
||||||
let reader: Pin<Box<dyn futures::io::AsyncBufRead>> = reader;
|
let reader: Pin<Box<dyn futures::io::AsyncBufRead>> = reader;
|
||||||
|
|
||||||
dioxus::prelude::spawn(async move {
|
dioxus::core::spawn(async move {
|
||||||
let mut fut = Box::pin(async_compression::futures::bufread::GzipDecoder::new(
|
let mut fut = Box::pin(async_compression::futures::bufread::GzipDecoder::new(
|
||||||
reader,
|
reader,
|
||||||
));
|
));
|
||||||
@@ -177,7 +177,7 @@ async fn brotli_it(data: &'static [u8]) {
|
|||||||
let reader = Box::pin(futures::io::BufReader::new(data));
|
let reader = Box::pin(futures::io::BufReader::new(data));
|
||||||
let reader: Pin<Box<dyn futures::io::AsyncBufRead>> = reader;
|
let reader: Pin<Box<dyn futures::io::AsyncBufRead>> = reader;
|
||||||
|
|
||||||
dioxus::prelude::spawn(async move {
|
dioxus::core::spawn(async move {
|
||||||
let mut fut = Box::pin(async_compression::futures::bufread::BrotliDecoder::new(
|
let mut fut = Box::pin(async_compression::futures::bufread::BrotliDecoder::new(
|
||||||
reader,
|
reader,
|
||||||
));
|
));
|
||||||
@@ -274,7 +274,7 @@ fn ChildSplit() -> Element {
|
|||||||
button {
|
button {
|
||||||
onclick: move |_| {
|
onclick: move |_| {
|
||||||
set_stars("stars".to_string(), num + 1);
|
set_stars("stars".to_string(), num + 1);
|
||||||
dioxus::prelude::needs_update();
|
dioxus::core::needs_update();
|
||||||
},
|
},
|
||||||
"Add Star"
|
"Add Star"
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -30,7 +30,9 @@ impl RouteSegment {
|
|||||||
write!(f, "/{}", dioxus_router::exports::percent_encoding::utf8_percent_encode(&as_string, dioxus_router::exports::PATH_ASCII_SET))?;
|
write!(f, "/{}", dioxus_router::exports::percent_encoding::utf8_percent_encode(&as_string, dioxus_router::exports::PATH_ASCII_SET))?;
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
Self::CatchAll(ident, _) => quote! { #ident.display_route_segments(f)?; },
|
Self::CatchAll(ident, _) => quote! {
|
||||||
|
dioxus_router::ToRouteSegments::display_route_segments(#ident,f)?;
|
||||||
|
},
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -2,7 +2,7 @@
|
|||||||
/// to the child router that maps child routes to root routes and vice versa.
|
/// to the child router that maps child routes to root routes and vice versa.
|
||||||
use dioxus_lib::prelude::*;
|
use dioxus_lib::prelude::*;
|
||||||
|
|
||||||
use crate::prelude::Routable;
|
use crate::Routable;
|
||||||
|
|
||||||
/// Maps a child route into the root router and vice versa
|
/// Maps a child route into the root router and vice versa
|
||||||
// NOTE: Currently child routers only support simple static prefixes, but this
|
// NOTE: Currently child routers only support simple static prefixes, but this
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
use crate::prelude::{outlet::OutletContext, *};
|
use crate::{outlet::OutletContext, *};
|
||||||
use dioxus_lib::prelude::*;
|
use dioxus_lib::prelude::*;
|
||||||
|
|
||||||
/// An outlet for the current content.
|
/// An outlet for the current content.
|
||||||
|
|||||||
@@ -1,10 +1,6 @@
|
|||||||
use dioxus_lib::prelude::*;
|
use dioxus_lib::prelude::*;
|
||||||
|
|
||||||
use crate::{
|
use crate::{provide_router_context, routable::Routable, router_cfg::RouterConfig, Outlet};
|
||||||
prelude::{provide_router_context, Outlet},
|
|
||||||
routable::Routable,
|
|
||||||
router_cfg::RouterConfig,
|
|
||||||
};
|
|
||||||
|
|
||||||
/// The props for [`Router`].
|
/// The props for [`Router`].
|
||||||
#[derive(Props)]
|
#[derive(Props)]
|
||||||
@@ -38,7 +34,7 @@ impl<R: Clone> PartialEq for RouterProps<R> {
|
|||||||
|
|
||||||
/// A component that renders the current route.
|
/// A component that renders the current route.
|
||||||
pub fn Router<R: Routable + Clone>(props: RouterProps<R>) -> Element {
|
pub fn Router<R: Routable + Clone>(props: RouterProps<R>) -> Element {
|
||||||
use crate::prelude::{outlet::OutletContext, RouterContext};
|
use crate::{outlet::OutletContext, RouterContext};
|
||||||
|
|
||||||
use_hook(|| {
|
use_hook(|| {
|
||||||
provide_router_context(RouterContext::new(props.config.call(())));
|
provide_router_context(RouterContext::new(props.config.call(())));
|
||||||
@@ -46,7 +42,7 @@ pub fn Router<R: Routable + Clone>(props: RouterProps<R>) -> Element {
|
|||||||
|
|
||||||
#[cfg(feature = "streaming")]
|
#[cfg(feature = "streaming")]
|
||||||
use_after_suspense_resolved(|| {
|
use_after_suspense_resolved(|| {
|
||||||
dioxus_fullstack_hooks::prelude::commit_initial_chunk();
|
dioxus_fullstack_hooks::commit_initial_chunk();
|
||||||
});
|
});
|
||||||
|
|
||||||
use_hook(|| {
|
use_hook(|| {
|
||||||
|
|||||||
Loaded 100 of 140 files, more files were not shown because too many files have changed in this diff.
Show more
Reference in new issue
Block a user