use serde::{Deserialize, Serialize};
use crate::data::DataTable;
use crate::element::{ChartElement, Dimensions};
use crate::error::ChartError;
use crate::spec::VisualizeSpec;
use crate::theme::Theme;
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct ChartConfig {
pub visualize: VisualizeSpec,
pub title: Option<String>,
pub width: f64,
pub height: f64,
pub colors: Vec<String>,
#[serde(skip, default)]
pub theme: Theme,
}
pub trait ChartRenderer: Send + Sync {
fn render(&self, data: &DataTable, config: &ChartConfig) -> Result<ChartElement, ChartError>;
fn default_dimensions(&self, _spec: &VisualizeSpec) -> Option<Dimensions> {
None
}
}