Crates.io | leptos_animation |
lib.rs | leptos_animation |
version | 0.5.2 |
source | src |
created_at | 2023-06-29 15:33:37.759947 |
updated_at | 2024-05-15 12:06:32.611999 |
description | Create animated signals in the Leptos framework |
homepage | https://github.com/PaulWagener/leptos_animation |
repository | https://github.com/PaulWagener/leptos_animation |
max_upload_size | |
id | 903404 |
size | 36,427 |
Create derived signals that are animated versions of the original signal
use leptos::*;
use leptos_animation::*;
#[component]
pub fn Counter() -> impl IntoView {
AnimationContext::provide();
let (value, set_value) = create_signal(0.0);
let animated_value = create_animated_signal(move || value.get().into(), tween_default);
let clear = move |_| set_value.set(0.0);
let decrement = move |_| set_value.update(|value| *value -= 1.0);
let increment = move |_| set_value.update(|value| *value += 1.0);
view! {
<main class="simple">
<button on:click=clear>"Clear"</button>
<button on:click=decrement>"-1"</button>
<button on:click=increment>"+1"</button>
<div>"Value: " {value} <br/> "Animated value: " {animated_value}</div>
</main>
}
}
window.request_animation_frame()
: only when there are animations playing and only once per frame
even if there are multiple animated signals running.