feat(wasm): execute client handlers without requests
req: client_local/001\nreq: client_local/004\nreq: client_local/005\nreq: client_local/009\nreq: client_local/010\nreq: client_local/014\nreq: v1_release/001
This commit is contained in:
+29
-1
@@ -649,6 +649,7 @@ impl Resources {
|
||||
out.push_str(&format!("{inner} pub fn text(self, value: impl ::std::string::ToString) -> ::hemx::advanced::Effect {{ self.slot.text(value) }}\n"));
|
||||
out.push_str(&format!("{inner} pub fn set(self, value: impl ::std::string::ToString) -> ::hemx::advanced::Effect {{ self.slot.text(value) }}\n"));
|
||||
out.push_str(&format!("{inner}}}\n"));
|
||||
out.push_str(&format!("{inner}#[cfg(not(target_arch = \"wasm32\"))]\n"));
|
||||
out.push_str(&format!("{inner}impl<T> SlotTarget<T, ()> {{\n"));
|
||||
out.push_str(&format!("{inner} pub fn put(self, view: &impl ::hemplate::Hemplate) -> ::hemx::advanced::Effect {{ super::put(self.slot, view) }}\n"));
|
||||
out.push_str(&format!("{inner} pub fn replace(self, view: &impl ::hemplate::Hemplate) -> ::hemx::advanced::Effect {{ super::put(self.slot, view) }}\n"));
|
||||
@@ -660,6 +661,7 @@ impl Resources {
|
||||
.filter(|res| components.contains(&res.ident) && Some(res.ident.as_str()) != component)
|
||||
{
|
||||
let child = &res.ident;
|
||||
out.push_str(&format!("{inner}#[cfg(not(target_arch = \"wasm32\"))]\n"));
|
||||
out.push_str(&format!(
|
||||
"{inner}impl<T> SlotTarget<T, {child_prefix}{child}::Component> {{\n"
|
||||
));
|
||||
@@ -681,6 +683,7 @@ impl Resources {
|
||||
out.push_str(&format!("{inner}{{\n"));
|
||||
out.push_str(&format!("{inner} const fn new(slot: ::hemx::advanced::KeyedSlot<K, T>) -> Self {{ Self {{ slot, _marker: ::std::marker::PhantomData }} }}\n"));
|
||||
out.push_str(&format!("{inner}}}\n"));
|
||||
out.push_str(&format!("{inner}#[cfg(not(target_arch = \"wasm32\"))]\n"));
|
||||
out.push_str(&format!(
|
||||
"{inner}impl<T> KeyedSlotTarget<::std::string::String, T, ()> {{\n"
|
||||
));
|
||||
@@ -700,6 +703,7 @@ impl Resources {
|
||||
.filter(|res| components.contains(&res.ident) && Some(res.ident.as_str()) != component)
|
||||
{
|
||||
let child = &res.ident;
|
||||
out.push_str(&format!("{inner}#[cfg(not(target_arch = \"wasm32\"))]\n"));
|
||||
out.push_str(&format!(
|
||||
"{inner}impl<T> KeyedSlotTarget<::std::string::String, T, {child_prefix}{child}::Component> {{\n"
|
||||
));
|
||||
@@ -948,6 +952,7 @@ impl Resources {
|
||||
"{pad} ::hemx::__private::html_trusted(lower(html))\n"
|
||||
));
|
||||
out.push_str(&format!("{pad}}}\n\n"));
|
||||
out.push_str(&format!("{pad}#[cfg(not(target_arch = \"wasm32\"))]\n"));
|
||||
out.push_str(&format!("{pad}#[doc(hidden)]\n"));
|
||||
out.push_str(&format!(
|
||||
"{pad}pub fn render(view: &impl ::hemplate::Hemplate) -> ::hemx::Html {{\n"
|
||||
@@ -961,14 +966,17 @@ impl Resources {
|
||||
));
|
||||
out.push_str(&format!("{pad}}}\n\n"));
|
||||
out.push_str(&format!(
|
||||
"{pad}pub fn page(view: &impl ::hemplate::Hemplate) -> ::hemx::Html {{ render(view) }}\n\n"
|
||||
"{pad}#[cfg(not(target_arch = \"wasm32\"))]\n{pad}pub fn page(view: &impl ::hemplate::Hemplate) -> ::hemx::Html {{ render(view) }}\n\n"
|
||||
));
|
||||
out.push_str(&format!("{pad}#[cfg(not(target_arch = \"wasm32\"))]\n"));
|
||||
out.push_str(&format!("{pad}#[doc(hidden)]\n"));
|
||||
out.push_str(&format!("{pad}pub fn render_html(view: &impl ::hemplate::Hemplate) -> ::hemx::Html {{ render(view) }}\n\n"));
|
||||
out.push_str(&format!("{pad}#[cfg(not(target_arch = \"wasm32\"))]\n"));
|
||||
out.push_str(&format!("{pad}#[doc(hidden)]\n"));
|
||||
out.push_str(&format!("{pad}pub fn put<T>(slot: ::hemx::advanced::Slot<T>, view: &impl ::hemplate::Hemplate) -> ::hemx::advanced::Effect {{\n"));
|
||||
out.push_str(&format!("{pad} slot.html(render(view))\n"));
|
||||
out.push_str(&format!("{pad}}}\n\n"));
|
||||
out.push_str(&format!("{pad}#[cfg(not(target_arch = \"wasm32\"))]\n"));
|
||||
out.push_str(&format!("{pad}#[doc(hidden)]\n"));
|
||||
out.push_str(&format!("{pad}pub fn append<K, T>(slot: ::hemx::advanced::KeyedSlot<K, T>, key: K, view: &impl ::hemplate::Hemplate) -> ::hemx::advanced::Effect\n"));
|
||||
out.push_str(&format!("{pad}where\n"));
|
||||
@@ -976,6 +984,7 @@ impl Resources {
|
||||
out.push_str(&format!("{pad}{{\n"));
|
||||
out.push_str(&format!("{pad} slot.append_html(key, render(view))\n"));
|
||||
out.push_str(&format!("{pad}}}\n\n"));
|
||||
out.push_str(&format!("{pad}#[cfg(not(target_arch = \"wasm32\"))]\n"));
|
||||
out.push_str(&format!("{pad}#[doc(hidden)]\n"));
|
||||
out.push_str(&format!("{pad}pub fn prepend<K, T>(slot: ::hemx::advanced::KeyedSlot<K, T>, key: K, view: &impl ::hemplate::Hemplate) -> ::hemx::advanced::Effect\n"));
|
||||
out.push_str(&format!("{pad}where\n"));
|
||||
@@ -983,6 +992,7 @@ impl Resources {
|
||||
out.push_str(&format!("{pad}{{\n"));
|
||||
out.push_str(&format!("{pad} slot.prepend_html(key, render(view))\n"));
|
||||
out.push_str(&format!("{pad}}}\n\n"));
|
||||
out.push_str(&format!("{pad}#[cfg(not(target_arch = \"wasm32\"))]\n"));
|
||||
out.push_str(&format!("{pad}#[doc(hidden)]\n"));
|
||||
out.push_str(&format!("{pad}pub fn replace<K, T>(slot: ::hemx::advanced::KeyedSlot<K, T>, key: K, view: &impl ::hemplate::Hemplate) -> ::hemx::advanced::Effect\n"));
|
||||
out.push_str(&format!("{pad}where\n"));
|
||||
@@ -1597,6 +1607,8 @@ fn known_hemx_attr(name: &str) -> bool {
|
||||
| "data-hemx-atom"
|
||||
| "data-hemx-key"
|
||||
| "data-hemx-on"
|
||||
| "data-hemx-client"
|
||||
| "data-hemx-client-event"
|
||||
| "data-hemx-pending-class"
|
||||
| "data-hemx-indicator"
|
||||
| "data-hemx-confirm"
|
||||
@@ -1640,6 +1652,22 @@ fn reject_invalid_hemx_attr_values(path: &Path, attrs: &[SurfaceAttribute]) -> i
|
||||
"expected `push`, `replace`, or empty for the default push behavior",
|
||||
));
|
||||
}
|
||||
"data-hemx-client" if value.trim().is_empty() => {
|
||||
return Err(invalid_hemx_value(
|
||||
path,
|
||||
&attr.name,
|
||||
value,
|
||||
"expected a non-empty client handler name",
|
||||
));
|
||||
}
|
||||
"data-hemx-client-event" if !valid_event_list(value) => {
|
||||
return Err(invalid_hemx_value(
|
||||
path,
|
||||
&attr.name,
|
||||
value,
|
||||
"expected a runtime-supported event",
|
||||
));
|
||||
}
|
||||
"data-hemx-on" if !valid_event_list(value) => {
|
||||
return Err(invalid_hemx_value(
|
||||
path,
|
||||
|
||||
Reference in New Issue
Block a user