use super::*;
pub(crate) fn use_display_demo_state() -> DisplayDemoState {
let scroll: UseScroll = use_scroll();
let carousel_index: Signal<u32> = App::use_signal(|| 0);
let anchor_active: Signal<String> = App::use_signal(|| String::from(DISPLAY_ANCHOR_FIRST));
let split_size: Signal<f64> = App::use_signal(|| DISPLAY_SPLIT_DEFAULT_SIZE);
let back_top_visible: Signal<bool> = App::use_signal(|| false);
watch!(scroll.get_y(), |offset: f64| {
back_top_visible.set(offset > DISPLAY_BACK_TOP_THRESHOLD);
});
DisplayDemoState {
carousel_index,
anchor_active,
split_size,
back_top_visible,
}
}
pub(crate) fn display_on_back_to_top(scroll: UseScroll) -> Option<Rc<dyn Fn(Event)>> {
Some(Rc::new(move |_event: Event| {
scroll.scroll_to_top();
}))
}
pub(crate) fn display_on_anchor_select(active: Signal<String>) -> Option<Rc<dyn Fn(&'static str)>> {
Some(Rc::new(move |value: &'static str| {
active.set(String::from(value));
}))
}
pub(crate) fn display_on_link_click() -> Option<Rc<dyn Fn(Event)>> {
Some(Rc::new(move |_event: Event| {
Console::log(DISPLAY_LINK_LOG);
}))
}
pub(crate) fn display_on_carousel_change() -> Option<Rc<dyn Fn(u32)>> {
Some(Rc::new(move |index: u32| {
Console::log(DISPLAY_CAROUSEL_LOG.replace("{index}", &index.to_string()));
}))
}
pub(crate) fn display_on_empty_action() -> Option<Rc<dyn Fn(Event)>> {
Some(Rc::new(move |_event: Event| {
Console::log(DISPLAY_EMPTY_LOG);
}))
}