feat(runtime): support viewport-ahead reveals
This commit is contained in:
+24
-2
@@ -1623,6 +1623,7 @@ fn known_hemx_attr(name: &str) -> bool {
|
||||
| "data-hemx-every"
|
||||
| "data-hemx-interval"
|
||||
| "data-hemx-revealed"
|
||||
| "data-hemx-revealed-ahead"
|
||||
| "data-hemx-disable-while-pending"
|
||||
| "data-hemx-policy"
|
||||
| "data-hemx-nav"
|
||||
@@ -1727,6 +1728,20 @@ fn reject_invalid_hemx_attr_values(path: &Path, attrs: &[SurfaceAttribute]) -> i
|
||||
"expected a non-empty same-origin SSE URL",
|
||||
));
|
||||
}
|
||||
"data-hemx-revealed-ahead"
|
||||
if !value
|
||||
.trim()
|
||||
.parse::<f64>()
|
||||
.ok()
|
||||
.is_some_and(|value| value.is_finite() && value >= 0.0) =>
|
||||
{
|
||||
return Err(invalid_hemx_value(
|
||||
path,
|
||||
&attr.name,
|
||||
value,
|
||||
"expected a non-negative number of viewports",
|
||||
));
|
||||
}
|
||||
"data-hemx-debounce" | "data-hemx-delay" | "data-hemx-throttle" | "data-hemx-every"
|
||||
| "data-hemx-interval"
|
||||
if !valid_duration(value) =>
|
||||
@@ -2774,12 +2789,12 @@ mod tests {
|
||||
let canonical_syms = resources.syms();
|
||||
assert_eq!(
|
||||
stable_id("generated-rs", &canonical_generated),
|
||||
3_748_714_336,
|
||||
2_620_423_950,
|
||||
"canonical generated Rust changed"
|
||||
);
|
||||
assert_eq!(
|
||||
stable_id("generated-rs-global", &canonical_globals),
|
||||
2_783_766_475,
|
||||
2_559_847_213,
|
||||
"canonical global-export Rust changed"
|
||||
);
|
||||
assert_eq!(
|
||||
@@ -4223,6 +4238,12 @@ fn main() {{
|
||||
"data-hemx-delay",
|
||||
"milliseconds",
|
||||
),
|
||||
(
|
||||
"revealed-ahead-negative",
|
||||
r#"<form data-hemx-revealed data-hemx-revealed-ahead="-1"></form>"#,
|
||||
"data-hemx-revealed-ahead",
|
||||
"non-negative",
|
||||
),
|
||||
(
|
||||
"throttle-invalid",
|
||||
r#"<button data-hemx-handle="save" data-hemx-throttle="ms">Save</button>"#,
|
||||
@@ -4333,6 +4354,7 @@ fn main() {{
|
||||
"data-hemx-client-state-version" => {
|
||||
"expected a positive client state ABI version"
|
||||
}
|
||||
"data-hemx-revealed-ahead" => "expected a non-negative number of viewports",
|
||||
"data-hemx-on" => "expected runtime-supported events: `click`, `submit`, `input`, `change`, `keydown`, `dragstart`, `dragover`, or `drop`",
|
||||
"data-hemx-confirm" => "expected a non-empty confirmation message",
|
||||
"data-hemx-sse" => "expected a non-empty same-origin SSE URL",
|
||||
|
||||
Reference in New Issue
Block a user