ratatui_toolkit/widgets/markdown_widget/extensions/toc/methods/
entry_at_position.rs1use ratatui::layout::Rect;
4
5use super::super::Toc;
6use super::find_entry_at_position_compact::find_entry_at_position_compact;
7use super::find_entry_at_position_expanded::find_entry_at_position_expanded;
8use super::get_expanded_content_area::get_expanded_content_area;
9
10impl<'a> Toc<'a> {
11 pub fn entry_at_position(&self, x: u16, y: u16, area: Rect) -> Option<usize> {
23 if x < area.x || x >= area.x + area.width {
25 return None;
26 }
27
28 if y < area.y {
30 return None;
31 }
32
33 let entries = self.toc_state.entries();
34 if entries.is_empty() {
35 return None;
36 }
37
38 if self.expanded {
39 let content_area = get_expanded_content_area(area, &self.config, entries.len());
41 find_entry_at_position_expanded(
42 x,
43 y,
44 content_area,
45 entries,
46 self.toc_state.scroll_offset,
47 )
48 } else {
49 find_entry_at_position_compact(y, area, &self.config, entries)
50 }
51 }
52}