ratatree 0.1.0

A terminal file/directory picker widget for ratatui
Documentation
use super::ListViewState;

impl ListViewState {
    /// Returns the visible range of entries for the current scroll state.
    pub fn visible_range(&self, total: usize, height: usize) -> std::ops::Range<usize> {
        let start = self.scroll_offset;
        let end = (start + height).min(total);
        start..end
    }
}

#[cfg(test)]
mod tests {
    use super::*;

    #[test]
    fn visible_range_basic() {
        let state = ListViewState { cursor: 0, scroll_offset: 0 };
        let range = state.visible_range(20, 10);
        assert_eq!(range, 0..10);
    }

    #[test]
    fn visible_range_scrolled() {
        let state = ListViewState { cursor: 15, scroll_offset: 10 };
        let range = state.visible_range(20, 10);
        assert_eq!(range, 10..20);
    }

    #[test]
    fn visible_range_at_end() {
        let state = ListViewState { cursor: 18, scroll_offset: 15 };
        let range = state.visible_range(20, 10);
        assert_eq!(range, 15..20);
    }
}