use futures_signals::signal::{Signal, SignalExt};
use include_doc::function_body;
use crate::task::{animation_timestamp, request_animation_frame};
#[doc = function_body!("tests/doc/animation.rs", finite_animation_example, [])]
pub fn finite_animation(duration_millis: f64) -> impl Signal<Item = Option<f64>> + 'static {
animation_timestamp()
.map(move |time| {
if time < duration_millis {
request_animation_frame();
Some(time)
} else {
None
}
})
.dedupe()
}
#[doc = function_body!("tests/doc/animation.rs", infinite_animation_example, [])]
pub fn infinite_animation() -> impl Signal<Item = f64> + 'static {
animation_timestamp()
.map(|time| {
request_animation_frame();
time
})
.dedupe()
}