Skip to content

Commit c5cc893

Browse files
committed
feat!: csr and ssr feature of frender-hook-element
1 parent 0a8c9d0 commit c5cc893

File tree

9 files changed

+77
-39
lines changed

9 files changed

+77
-39
lines changed

Cargo.lock

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

packages/frender-hook-element/Cargo.toml

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

88
[dependencies]
9-
frender-ssr = { path = "../frender-ssr", version = "0.1.0" }
10-
pin-project-lite = "0.2.9"
119
hooks-core = { version = "3.0.0-alpha", default-features = false }
1210
syn-lite = "0.1.0"
13-
frender-html = { version = "0.1.0", path = "../frender-html" }
1411
frender-element = { version = "0.1.0", path = "../frender-element" }
12+
13+
# csr
14+
pin-project-lite = { version = "0.2.9", optional = true }
15+
frender-csr = { path = "../frender-csr", version = "0.1.0", optional = true, features = [
16+
"experimental",
17+
] }
18+
# ssr
19+
frender-ssr = { path = "../frender-ssr", version = "0.1.0", optional = true }
20+
21+
[features]
22+
csr = ["dep:pin-project-lite", "dep:frender-csr", "frender-element/csr"]
23+
ssr = ["dep:frender-ssr", "frender-element/ssr"]

packages/frender-hook-element/src/hook_element.rs

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,9 @@
11
use std::{marker::PhantomData, pin::Pin};
22

3-
pub mod csr;
4-
pub mod ssr;
3+
#[cfg(feature = "csr")]
4+
mod csr;
5+
#[cfg(feature = "ssr")]
6+
mod ssr;
57

68
pub struct HookElement<F>(pub F);
79

packages/frender-hook-element/src/hook_element/csr.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
use std::{marker::PhantomData, pin::Pin, task::Poll};
22

3-
use frender_html::csr::{
3+
use frender_csr::{
44
experimental::{
55
self, HtmlRenderContext, PinnedRenderStateKind, PinnedRenderStateKindPollRender,
66
PinnedUiHandleOfKind, RenderHtml, UnpinnedRenderStateKind,

packages/frender-hook-element/src/lib.rs

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,23 @@
1-
pub use self::hook_element::{new_fn_hook_element, HookElement};
1+
pub use self::hook_element::{new_fn_hook_element, HookElement, UseHookData};
22

33
mod hook_element;
44

55
pub mod component_fn_options {
6+
#[cfg(feature = "ssr")]
7+
#[cfg(feature = "csr")]
8+
#[doc(no_inline)]
69
pub use frender_element::Element;
710

11+
#[cfg(feature = "ssr")]
812
pub mod ssr_only {
9-
pub use frender_ssr::SsrElement as Element;
13+
#[doc(no_inline)]
14+
pub use frender_element::SsrElement as Element;
1015
}
1116

17+
#[cfg(feature = "csr")]
1218
pub mod csr_only {
13-
pub use frender_html::csr::CsrElement as Element;
19+
#[doc(no_inline)]
20+
pub use frender_element::CsrElement as Element;
1421
}
1522
}
1623

packages/frender/Cargo.toml

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -30,13 +30,13 @@ frender-dom-tokens = { version = "0.1.0", path = "../frender-dom-tokens" }
3030
frender-reactive-value = { version = "0.1.0", path = "../frender-reactive-value" }
3131
frender-to-element = { version = "0.1.0", path = "../frender-to-element", optional = true }
3232
frender-memo = { version = "0.1.0", path = "../frender-memo", optional = true }
33-
frender-hooks-ext = { version = "0.1.0", path = "../frender-hooks-ext", optional = true }
3433
frender-synced-collection = { version = "0.1.0", path = "../frender-synced-collection", optional = true }
3534
frender-html-components = { version = "0.1.0", path = "../frender-html-components", optional = true }
3635

37-
[dependencies.frender-hook-element]
38-
path = "../frender-hook-element"
39-
version = "0.1.0"
36+
# hooks
37+
frender-hook-element = { version = "0.1.0", path = "../frender-hook-element", optional = true }
38+
frender-hooks-ext = { version = "0.1.0", path = "../frender-hooks-ext", optional = true }
39+
4040

4141
[dependencies.frender-macros]
4242
version = "1.0.0-alpha.8"
@@ -82,6 +82,7 @@ ssr = [
8282
"frender-memo?/ssr",
8383
"frender-hooks-ext?/ssr",
8484
"frender-synced-collection?/ssr",
85+
"frender-hook-element?/ssr",
8586
]
8687
csr = [
8788
#
@@ -95,6 +96,7 @@ csr = [
9596
"frender-memo?/experimental",
9697
"frender-hooks-ext?/csr",
9798
"frender-synced-collection?/csr",
99+
"frender-hook-element?/csr",
98100
]
99101
# default- features
100102
html-components = ["dep:frender-html-components"]
@@ -105,8 +107,11 @@ either = [
105107
"frender-element/either",
106108
"frender-hooks-ext?/either",
107109
]
108-
hooks = ["frender-context?/hooks", "hooks_ext"]
110+
111+
hooks = ["frender-context?/hooks", "hooks_ext", "HookElement"]
109112
hooks_ext = ["dep:frender-hooks-ext"]
113+
HookElement = ["dep:frender-hook-element"]
114+
110115
ToElement = [
111116
"dep:frender-to-element",
112117
"frender-hooks-ext?/ToElement",
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
pub use frender_hook_element::{
2+
//
3+
component_fn,
4+
new_fn_hook_element,
5+
HookElement,
6+
UseHookData,
7+
};

packages/frender/src/elements/mod.rs

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -103,6 +103,9 @@ Empty as Empty,
103103
#[cfg(feature = "SyncedCollection")]
104104
pub mod synced_collection;
105105

106+
#[cfg(feature = "HookElement")]
107+
pub mod hook_element;
108+
106109
#[cfg(any(test, doc, doctest))]
107110
mod doc_macros;
108111
#[cfg(any(test, doc, doctest))]

packages/frender/src/lib.rs

Lines changed: 29 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,12 @@
1-
// pub use frender_element::Element;
1+
#[cfg(feature = "csr")]
2+
#[cfg(feature = "ssr")]
3+
pub use frender_element::Element;
4+
5+
#[cfg(feature = "csr")]
6+
pub use frender_element::CsrElement;
7+
8+
#[cfg(feature = "ssr")]
9+
pub use frender_element::SsrElement;
210

311
#[cfg(feature = "hooks_ext")]
412
pub mod hooks_ext;
@@ -11,20 +19,17 @@ pub use frender_to_element::{RefToElementWithFn, ToElement, ToElementWithFn};
1119
#[cfg(feature = "SyncedCollection")]
1220
pub use elements::synced_collection::{SyncedCollection, SyncedVec};
1321

22+
#[cfg(feature = "HookElement")]
23+
#[doc(no_inline)]
24+
pub use crate::elements::hook_element::component_fn;
25+
1426
pub use frender_common::{either::EitherElement, EventListenerOptions, HandleEventWithOptions};
15-
pub use frender_hook_element::new_fn_hook_element;
1627
pub use frender_macros::component;
1728
pub use frender_reactive_value::{
1829
non_reactive::Uncached, static_or_temp_ref::StaticOrTempRef, temp_into_static::TempIntoStatic,
1930
temp_ref::TempRef,
2031
};
2132

22-
// #[cfg(feature = "csr")]
23-
// pub use frender_hook_element::frender_csr as csr;
24-
25-
// #[cfg(feature = "ssr")]
26-
// pub use frender_hook_element::frender_ssr as ssr;
27-
2833
pub use frender_ssr as ssr;
2934

3035
pub use prelude::*;
@@ -37,9 +42,6 @@ pub use prelude::*;
3742
// pub use frender_html::html::{components, components as intrinsic_components};
3843
// }
3944

40-
pub use frender_hook_element as hook_element;
41-
pub use frender_hook_element::component_fn;
42-
4345
pub use event::*;
4446
pub use frender_events::event;
4547

@@ -178,18 +180,22 @@ pub mod macros {
178180
// endregion
179181

180182
pub mod prelude {
181-
// #[cfg(all(feature = "csr", feature = "ssr"))]
182-
// pub use crate::Element;
183+
#[cfg(feature = "csr")]
184+
#[cfg(feature = "ssr")]
185+
pub use crate::Element;
183186

184-
pub use crate::rsx;
187+
#[cfg(feature = "csr")]
188+
pub use crate::CsrElement;
185189

186-
pub use frender_common::{HandleEvent, MaybeHandleEvent};
190+
#[cfg(feature = "ssr")]
191+
pub use crate::SsrElement;
187192

188-
pub use frender_hook_element::component_fn;
193+
pub use crate::rsx;
189194

190-
pub use frender_element::CsrElement;
195+
pub use frender_common::{HandleEvent, MaybeHandleEvent};
191196

192-
pub use frender_element::Element;
197+
#[cfg(feature = "HookElement")]
198+
pub use crate::component_fn;
193199

194200
#[cfg(feature = "KeyedElements")]
195201
pub use crate::{Keyed, KeyedElements};
@@ -206,13 +212,8 @@ pub mod prelude {
206212
#[cfg(feature = "hooks_ext")]
207213
pub use crate::hooks_ext::ShareValueExt as _;
208214

209-
// #[cfg(feature = "csr")]
210-
// pub use frender_hook_element::frender_csr::{
211-
// CsrContext, CsrElement, CsrRenderState, ElementsLinkedVec,
212-
// };
213-
214215
// #[cfg(feature = "ssr")]
215-
pub use frender_ssr::{SsrElement, SsrElementExt};
216+
pub use frender_ssr::SsrElementExt;
216217
}
217218

218219
#[macro_export]
@@ -228,8 +229,12 @@ macro_rules! rsx {
228229

229230
#[doc(hidden)]
230231
pub mod __private {
232+
#[cfg(feature = "HookElement")]
233+
// #[cfg(feature = "proc-macro")]
234+
#[doc(hidden)]
231235
pub use frender_hook_element::__private::hooks_core;
232236

237+
#[doc(hidden)]
233238
pub use frender_macros::rsx as impl_rsx;
234239
}
235240

0 commit comments

Comments
 (0)