mod constructors;
use crate::widgets::markdown_widget::foundation::types::GitStats;
use crate::widgets::markdown_widget::state::{
CacheState, CollapseState, DisplaySettings, DoubleClickState, ExpandableState, GitStatsState,
ScrollState, SelectionState, SourceState, VimState,
};
#[derive(Default, Clone)]
pub struct MarkdownState {
pub scroll: ScrollState,
pub source: SourceState,
pub cache: CacheState,
pub display: DisplaySettings,
pub collapse: CollapseState,
pub expandable: ExpandableState,
pub git_stats: GitStatsState,
pub vim: VimState,
pub selection: SelectionState,
pub double_click: DoubleClickState,
pub toc_hovered: bool,
pub toc_hovered_entry: Option<usize>,
pub toc_scroll_offset: usize,
pub selection_active: bool,
pub cached_git_stats: Option<GitStats>,
pub rendered_lines: Vec<ratatui::text::Line<'static>>,
pub filter: Option<String>,
pub filter_mode: bool,
inner_area: ratatui::layout::Rect,
}
impl MarkdownState {
pub fn inner_area(&self) -> ratatui::layout::Rect {
self.inner_area
}
pub fn set_inner_area(&mut self, area: ratatui::layout::Rect) {
self.inner_area = area;
}
pub fn content(&self) -> &str {
self.source.content().unwrap_or("")
}
pub fn update_git_stats(&mut self) {
self.git_stats.update(self.source.source_path());
self.cached_git_stats = self.git_stats.git_stats();
}
}