use super::super::folding::FoldIndicator;
use crate::primitives::highlighter::HighlightSpan;
use crate::view::margin::LineIndicator;
use crate::view::overlay::Overlay;
use ratatui::style::Style;
use std::collections::{BTreeMap, HashMap, HashSet};
use std::ops::Range;
pub(crate) struct SelectionContext {
pub ranges: Vec<Range<usize>>,
pub block_rects: Vec<(usize, usize, usize, usize)>,
pub cursor_positions: Vec<usize>,
pub primary_cursor_position: usize,
}
pub(crate) struct DecorationContext {
pub highlight_spans: Vec<HighlightSpan>,
pub semantic_token_spans: Vec<HighlightSpan>,
pub viewport_overlays: Vec<(Overlay, Range<usize>)>,
pub overlay_position_index: Vec<usize>,
pub diagnostic_lines: HashSet<usize>,
pub diagnostic_inline_texts: HashMap<usize, (String, Style)>,
pub line_indicators: BTreeMap<usize, LineIndicator>,
pub fold_indicators: BTreeMap<usize, FoldIndicator>,
}