use leptos::prelude::*;
use std::sync::Arc;
#[derive(Clone)]
pub struct FolioContext {
pub current_page: ReadSignal<usize>,
pub total_pages: Signal<usize>,
pub go_next: Arc<dyn Fn() + Send + Sync + 'static>,
pub go_prev: Arc<dyn Fn() + Send + Sync + 'static>,
pub go_to: Arc<dyn Fn(usize) + Send + Sync + 'static>,
pub anim_epoch: ReadSignal<u64>,
pub last_dir: ReadSignal<Option<TurnDir>>,
}
#[derive(Clone, Copy, PartialEq, Eq, Debug)]
pub enum TurnDir {
Forward,
Backward,
}
pub fn use_folio_context() -> FolioContext {
use_context::<FolioContext>()
.expect("`use_folio_context` must be called inside a `<Folio>` component")
}