atac 0.13.0

Arguably a Terminal API Client. Feature-full, free, open-source, offline and account-less.
use ratatui::widgets::{ScrollbarState};

#[derive(Default)]
pub struct StatefulScrollbar {
    pub scroll: u16,
    pub max_scroll: u16,
    pub state: ScrollbarState,
}

impl StatefulScrollbar {
    pub fn page_up(&mut self) {
        if self.scroll > 0 {
            self.scroll -= 1;
        }
        self.state.prev();
    }

    pub fn page_down(&mut self) {
        if self.scroll < self.max_scroll {
            self.scroll += 1;
        }
        self.state.next();
    }

    pub fn set_scroll(&mut self, lines: usize) {
        if lines > 0 {
            self.max_scroll = lines as u16 - 1;
        }
        else {
            self.max_scroll = 0;
        }

        self.scroll = 0;
        self.state.first();

        self.state = self.state.content_length(lines);
    }
}