#![doc = include_str!("../readme.md")]
#![allow(clippy::collapsible_else_if)]
mod scroll;
mod scroll_area;
pub use scroll::{
SCROLLBAR_DOUBLE_HORIZONTAL, SCROLLBAR_DOUBLE_VERTICAL, SCROLLBAR_HORIZONTAL,
SCROLLBAR_VERTICAL, Scroll, ScrollState, ScrollStyle, ScrollSymbols,
};
pub use scroll_area::{ScrollArea, ScrollAreaState};
pub mod event {
use rat_event::*;
#[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord)]
pub enum ScrollOutcome {
Continue,
Unchanged,
Changed,
Up(usize),
Down(usize),
Left(usize),
Right(usize),
VPos(usize),
HPos(usize),
}
impl ConsumedEvent for ScrollOutcome {
fn is_consumed(&self) -> bool {
!matches!(self, ScrollOutcome::Continue)
}
}
impl From<ScrollOutcome> for Outcome {
fn from(value: ScrollOutcome) -> Self {
match value {
ScrollOutcome::Continue => Outcome::Continue,
ScrollOutcome::Unchanged => Outcome::Unchanged,
ScrollOutcome::Changed => Outcome::Changed,
ScrollOutcome::Up(_) => Outcome::Changed,
ScrollOutcome::Down(_) => Outcome::Changed,
ScrollOutcome::Left(_) => Outcome::Changed,
ScrollOutcome::Right(_) => Outcome::Changed,
ScrollOutcome::VPos(_) => Outcome::Changed,
ScrollOutcome::HPos(_) => Outcome::Changed,
}
}
}
}
#[derive(Debug, Default, Clone, Copy, PartialEq, Eq)]
pub enum ScrollbarPolicy {
Always,
#[default]
Minimize,
Collapse,
}
mod _private {
#[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)]
pub struct NonExhaustive;
}