mod constructors;
pub mod enums;
mod helpers;
mod methods;
mod traits;
pub use enums::MarkdownWidgetMode;
pub use methods::WidgetStateSync;
use crate::primitives::pane::Pane;
use crate::services::theme::AppTheme;
use crate::widgets::markdown_widget::extensions::scrollbar::ScrollbarConfig;
use crate::widgets::markdown_widget::extensions::toc::TocConfig;
use crate::widgets::markdown_widget::foundation::types::GitStats;
use crate::widgets::markdown_widget::state::{
CacheState, CollapseState, DisplaySettings, DoubleClickState, ExpandableState, GitStatsState,
ScrollState, SelectionState, SourceState, TocState, VimState,
};
pub struct MarkdownWidget<'a> {
pub(crate) content: String,
pub(crate) scroll: ScrollState,
pub(crate) source: SourceState,
pub(crate) cache: CacheState,
pub(crate) display: DisplaySettings,
pub(crate) collapse: CollapseState,
pub(crate) expandable: ExpandableState,
pub(crate) git_stats_state: GitStatsState,
pub(crate) vim: VimState,
pub(crate) selection: SelectionState,
pub(crate) double_click: DoubleClickState,
pub(crate) toc_state: Option<TocState>,
pub(crate) is_resizing: bool,
pub(crate) mode: MarkdownWidgetMode,
pub(crate) show_statusline: bool,
pub(crate) show_scrollbar: bool,
pub(crate) scrollbar_config: ScrollbarConfig,
pub(crate) selection_active: bool,
pub(crate) git_stats: Option<GitStats>,
pub(crate) show_toc: bool,
pub(crate) toc_config: TocConfig,
pub(crate) toc_hovered: bool,
pub(crate) toc_hovered_entry: Option<usize>,
pub(crate) toc_scroll_offset: usize,
pub(crate) rendered_lines: Vec<ratatui::text::Line<'static>>,
pub(crate) app_theme: Option<AppTheme>,
pub(crate) last_double_click: Option<(usize, String, String)>,
pub(crate) filter: Option<String>,
pub(crate) filter_mode: bool,
pub(crate) bordered: bool,
pub(crate) has_pane: bool,
pub(crate) pane: Option<Pane<'a>>,
pub(crate) pane_title: Option<String>,
pub(crate) pane_color: Option<ratatui::style::Color>,
pub inner_area: Option<ratatui::layout::Rect>,
}