use std::time::Duration;
use freya_animation::prelude::*;
use freya_core::prelude::Color;
use freya_sdk::timeout::*;
const ANIMATION_TIME: Duration = Duration::from_millis(100);
const WAIT_ANIMATION_TIME: Duration = Duration::from_millis(750);
const ANIMATION_TIMEOUT: Duration = Duration::from_millis(500);
pub fn use_cursor_blink(enable: bool, color: Color) -> (Timeout, Color) {
let movement_timeout = use_timeout(|| ANIMATION_TIMEOUT);
let cursor_blink = use_animation_with_dependencies(
&(enable, movement_timeout.elapsed()),
|conf, (enable, movement_elapsed)| {
if *enable && *movement_elapsed {
conf.on_creation(OnCreation::Run);
conf.on_change(OnChange::Rerun);
conf.on_finish(OnFinish::reverse_with_delay(WAIT_ANIMATION_TIME));
}
AnimNum::new(255., 0.).duration(ANIMATION_TIME)
},
);
let cursor_color = color.with_a(cursor_blink.get().value() as u8);
(movement_timeout, cursor_color)
}