use thiserror::Error;
use wasm_bindgen::JsValue;
pub type Result<T> = std::result::Result<T, VowlError>;
#[derive(Error, Debug, Clone)]
pub enum VowlError {
#[error("Failed to parse ontology: {0}")]
ParseError(String),
#[error("Invalid ontology data: {0}")]
InvalidData(String),
#[error("Graph error: {0}")]
GraphError(String),
#[error("Layout error: {0}")]
LayoutError(String),
#[error("Rendering error: {0}")]
RenderError(String),
#[error("Binding error: {0}")]
BindingError(String),
#[error("Interaction error: {0}")]
InteractionError(String),
}
impl From<VowlError> for JsValue {
fn from(error: VowlError) -> Self {
JsValue::from_str(&error.to_string())
}
}
impl From<serde_json::Error> for VowlError {
fn from(error: serde_json::Error) -> Self {
VowlError::ParseError(error.to_string())
}
}