use ratatui::buffer::Buffer;
use ratatui::layout::Rect;
use std::ops::BitOrAssign;
use std::sync::Arc;
use crate::options::SkimOptions;
use crate::theme::ColorTheme;
#[derive(Debug, Clone, Copy, Default)]
pub struct SkimRender {
pub items_updated: bool,
pub run_preview: bool,
}
impl BitOrAssign for SkimRender {
fn bitor_assign(&mut self, rhs: Self) {
self.items_updated |= rhs.items_updated;
self.run_preview |= rhs.run_preview;
}
}
pub trait SkimWidget: Sized {
fn from_options(options: &SkimOptions, theme: Arc<ColorTheme>) -> Self;
fn render(&mut self, area: Rect, buf: &mut Buffer) -> SkimRender;
}