ratatui_toolkit/widgets/markdown_widget/extensions/toc/traits/
widget.rs1use ratatui::{buffer::Buffer, layout::Rect, widgets::Widget};
4
5use crate::widgets::markdown_widget::extensions::toc::Toc;
6
7impl<'a> Widget for Toc<'a> {
8 fn render(self, area: Rect, buf: &mut Buffer) {
9 if area.width == 0 || area.height == 0 {
10 return;
11 }
12
13 if self.expanded {
14 for y in area.y..area.y + area.height {
16 for x in area.x..area.x + area.width {
17 if let Some(cell) = buf.cell_mut((x, y)) {
18 cell.set_char(' ').set_style(self.config.background_style);
19 }
20 }
21 }
22
23 let content_area = if self.config.show_border {
24 self.render_border(area, buf)
25 } else {
26 area
27 };
28 self.render_expanded(content_area, buf);
29 } else {
30 self.render_compact(area, buf);
32 }
33 }
34}