ratatui_toolkit/widgets/markdown_widget/widget/constructors/
from_state.rs1use crate::widgets::markdown_widget::extensions::scrollbar::ScrollbarConfig;
4use crate::widgets::markdown_widget::extensions::toc::TocConfig;
5use crate::widgets::markdown_widget::state::markdown_state::MarkdownState;
6use crate::widgets::markdown_widget::widget::enums::MarkdownWidgetMode;
7use crate::widgets::markdown_widget::widget::MarkdownWidget;
8
9impl<'a> MarkdownWidget<'a> {
10 pub fn from_state(content: &'a str, state: &'a mut MarkdownState) -> Self {
39 let rendered_lines = state
41 .cache
42 .render
43 .as_ref()
44 .map(|c| c.lines.clone())
45 .unwrap_or_else(|| state.rendered_lines.clone());
46
47 let mode = if state.filter_mode {
49 MarkdownWidgetMode::Filter
50 } else {
51 MarkdownWidgetMode::Normal
52 };
53
54 Self {
55 content,
56 scroll: &mut state.scroll,
57 source: &mut state.source,
58 cache: &mut state.cache,
59 display: &state.display,
60 collapse: &mut state.collapse,
61 expandable: &mut state.expandable,
62 git_stats_state: &mut state.git_stats,
63 vim: &mut state.vim,
64 selection: &mut state.selection,
65 double_click: &mut state.double_click,
66 toc_state: None,
67 is_resizing: false,
68 mode,
69 show_statusline: true,
70 show_scrollbar: false,
71 scrollbar_config: ScrollbarConfig::default(),
72 selection_active: state.selection_active,
73 git_stats: state.cached_git_stats,
74 show_toc: false,
75 toc_config: TocConfig::default(),
76 toc_hovered: state.toc_hovered,
77 toc_hovered_entry: state.toc_hovered_entry,
78 toc_scroll_offset: state.toc_scroll_offset,
79 rendered_lines,
80 app_theme: None,
81 last_double_click: None,
82 filter: state.filter.clone(),
83 filter_mode: state.filter_mode,
84 bordered: false,
85 has_pane: true,
86 pane: None,
87 pane_title: None,
88 pane_color: None,
89 }
90 }
91}