jarq 0.8.2

An interactive jq-like JSON query tool with a TUI
Documentation
/// Help popup state
pub struct HelpState {
    pub visible: bool,
    pub scroll: usize,
    pub for_filter_mode: bool,
}

impl HelpState {
    pub(super) fn new() -> Self {
        Self {
            visible: false,
            scroll: 0,
            for_filter_mode: false,
        }
    }

    pub(super) fn toggle(&mut self, is_filter_mode: bool) {
        if self.visible {
            self.visible = false;
        } else {
            self.visible = true;
            self.scroll = 0;
            self.for_filter_mode = is_filter_mode;
        }
    }

    pub(super) fn scroll_down(&mut self, lines: usize) {
        self.scroll = self.scroll.saturating_add(lines);
    }

    pub(super) fn scroll_up(&mut self, lines: usize) {
        self.scroll = self.scroll.saturating_sub(lines);
    }

    pub fn clamp_scroll(&mut self, max_scroll: usize) {
        self.scroll = self.scroll.min(max_scroll);
    }
}