Skip to content

Commit 933df19

Browse files
committed
wip!: refactor
1 parent a0e4d12 commit 933df19

File tree

50 files changed

+814
-484
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

50 files changed

+814
-484
lines changed

Cargo.lock

Lines changed: 2 additions & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

examples/html-elements/src/main.rs

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
use frender::{
2-
html::form_control::value::UncontrolledWithDefaultValue, prelude::*, Empty,
3-
ScriptInnerTextWronglyEncoded,
2+
form_control::UncontrolledWithDefaultValue, prelude::*, Empty, ScriptInnerTextWronglyEncoded,
43
};
54
use hooks::{IntoEq, ShareValue, ToOwnedShareValue};
65

packages/frender-common/src/primary_borrow.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
use std::borrow::Borrow;
22

3+
// TODO: remove
34
/// The non generic version of [`Borrow`].
45
pub trait PrimarilyBorrow: Borrow<Self::Borrowed> {
56
type Borrowed: ?Sized;

packages/frender-csr-ext/Cargo.toml

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,5 +6,7 @@ edition = "2021"
66
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
77

88
[dependencies]
9-
frender-html = { version = "0.1.0", path = "../frender-html", default-features = false }
9+
frender-csr = { version = "0.1.0", path = "../frender-csr", features = [
10+
"experimental",
11+
] }
1012
pin-project-lite = "0.2.13"

packages/frender-csr-ext/src/into_render_element_ext.rs

Lines changed: 10 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,29 +1,31 @@
11
use std::{future::Future, pin::pin};
22

3-
use frender_html::{
4-
dom::ProvideRenderContext,
5-
experimental::{PinnedRenderStateKind, PinnedRenderStateKindPollRender, RenderInitPinned as _},
6-
CsrElement as Element, RenderHtml, StateUnmount,
3+
use frender_csr::{
4+
experimental::{
5+
PinnedRenderStateKind, PinnedRenderStateKindPollRender, ProvideRenderContext,
6+
RenderInitPinned as _,
7+
},
8+
CsrElement, RenderHtml, StateUnmount,
79
};
810

911
pub trait IntoRenderElementExt: ProvideRenderContext {
10-
fn into_render_element<E: Element>(self, element: E) -> crate::RenderElement<Self, E>
12+
fn into_render_element<E: CsrElement>(self, element: E) -> crate::RenderElement<Self, E>
1113
where
1214
Self: Sized,
1315
Self::Renderer: RenderHtml,
1416
{
1517
crate::RenderElement::new(self, element)
1618
}
1719

18-
fn render_element<E: Element>(&mut self, element: E) -> crate::RenderElement<&mut Self, E>
20+
fn render_element<E: CsrElement>(&mut self, element: E) -> crate::RenderElement<&mut Self, E>
1921
where
2022
Self::Renderer: RenderHtml,
2123
{
2224
crate::RenderElement::new(self, element)
2325
}
2426

2527
/// The caller could then unmount the ui handle or just drop it without unmounting.
26-
fn into_render_element_until_non_reactive<E: Element>(
28+
fn into_render_element_until_non_reactive<E: CsrElement>(
2729
mut self,
2830
element: E,
2931
) -> impl Future<
@@ -58,7 +60,7 @@ pub trait IntoRenderElementExt: ProvideRenderContext {
5860
}
5961
}
6062

61-
fn render_element_until_non_reactive<E: Element>(
63+
fn render_element_until_non_reactive<E: CsrElement>(
6264
&mut self,
6365
element: E,
6466
) -> impl Future<

packages/frender-csr-ext/src/lib.rs

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,3 @@
1-
pub use frender_html::{CsrComponent, CsrElement};
21
pub use into_render_element_ext::IntoRenderElementExt;
32
pub use render_element::RenderElement;
43

packages/frender-csr-ext/src/render_element.rs

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,10 @@
11
use std::{future::Future, pin::Pin, task::Poll};
22

3-
use frender_html::{
4-
dom::{ui_handle::UiHandle as _, ProvideRenderContext},
5-
experimental::{PinnedRenderStateKind, PinnedRenderStateKindPollRender as _},
6-
CsrElement, RenderHtml, StateUnmount as _,
3+
use frender_csr::{
4+
experimental::{
5+
PinnedRenderStateKind, PinnedRenderStateKindPollRender as _, ProvideRenderContext,
6+
},
7+
CsrElement, RenderHtml, StateUnmount as _, UiHandle as _,
78
};
89

910
pin_project_lite::pin_project!(
@@ -152,12 +153,12 @@ where
152153
let (mut state, ui_handle) = this.p.provide_render_context(|render_context| {
153154
this.element_or_state.as_mut().as_pin_mut_state_or_insert(
154155
|element| {
155-
use frender_html::dom::render::RenderContext as _;
156+
use frender_csr::render::RenderContext as _;
156157
let (state, init) = element.pinned_render_init(render_context.renderer_mut());
157158
(state, (init, render_context))
158159
},
159160
|(init, render_context), state| {
160-
use frender_html::experimental::RenderInitPinned as _;
161+
use frender_csr::experimental::RenderInitPinned as _;
161162

162163
init.render_init_pinned(render_context, state)
163164
},

packages/frender-csr-web/Cargo.toml

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ edition = "2021"
77

88
[dependencies]
99
frender-common = { version = "0.1.0", path = "../frender-common" }
10-
frender-csr-ext = { version = "0.1.0", path = "../frender-csr-ext" }
10+
frender-csr-ext = { version = "0.1.0", path = "../frender-csr-ext", optional = true }
1111
frender-html = { version = "0.1.0", path = "../frender-html", features = [
1212
"web",
1313
] }
@@ -33,3 +33,4 @@ features = [
3333

3434
[features]
3535
spawn = ["dep:wasm-bindgen-futures"]
36+
csr = ["dep:frender-csr-ext"]
Lines changed: 8 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,11 @@
1-
use frender_csr_ext::IntoRenderElementExt as _;
2-
use frender_html::CsrElement as Element;
1+
#[cfg(feature = "csr")]
2+
pub use self::csr::mount_to_dom_element;
3+
#[cfg(feature = "csr")]
4+
#[cfg(feature = "spawn")]
5+
pub use self::csr::spawn_mount_to_dom_element;
6+
7+
#[cfg(feature = "csr")]
8+
mod csr;
39

410
pub trait GetDomElement {
511
fn get_dom_element(self, document: &web_sys::Document) -> web_sys::Element;
@@ -22,23 +28,3 @@ where
2228
self(document)
2329
}
2430
}
25-
26-
pub fn mount_to_dom_element<'e, E: Element + 'e>(
27-
element: E,
28-
get_dom_element: impl GetDomElement,
29-
) -> impl std::future::Future<Output = ()> + 'e {
30-
let window = web_sys::window().unwrap();
31-
32-
let document = window.document().unwrap();
33-
let current_parent = get_dom_element.get_dom_element(&document);
34-
35-
crate::renderer::RendererWithRoot::new(document, current_parent).into_render_element(element)
36-
}
37-
38-
#[cfg(feature = "spawn")]
39-
pub fn spawn_mount_to_dom_element<E: Element + 'static>(
40-
get_element: E,
41-
get_dom_element: impl GetDomElement,
42-
) {
43-
wasm_bindgen_futures::spawn_local(mount_to_dom_element(get_element, get_dom_element))
44-
}
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
use frender_csr_ext::IntoRenderElementExt as _;
2+
use frender_html::CsrElement;
3+
4+
use super::GetDomElement;
5+
6+
pub fn mount_to_dom_element<'e, E: CsrElement + 'e>(
7+
element: E,
8+
get_dom_element: impl GetDomElement,
9+
) -> impl std::future::Future<Output = ()> + 'e {
10+
let window = web_sys::window().unwrap();
11+
12+
let document = window.document().unwrap();
13+
let current_parent = get_dom_element.get_dom_element(&document);
14+
15+
crate::renderer::RendererWithRoot::new(document, current_parent).into_render_element(element)
16+
}
17+
18+
#[cfg(feature = "spawn")]
19+
pub fn spawn_mount_to_dom_element<E: CsrElement + 'static>(
20+
get_element: E,
21+
get_dom_element: impl GetDomElement,
22+
) {
23+
wasm_bindgen_futures::spawn_local(mount_to_dom_element(get_element, get_dom_element))
24+
}

0 commit comments

Comments
 (0)