use web_sys::wasm_bindgen;
#[derive(thiserror::Error, Debug)]
pub enum Error {
#[error("Unable to retrieve window")]
UnableToRetrieveWindow,
#[error("Unable to retrieve document")]
UnableToRetrieveDocument,
#[error("Unable to retrieve body")]
UnableToRetrieveBody,
#[error("Unable to retrieve element: {0}")]
UnableToRetrieveElementById(String),
#[error("Unable to retrieve canvas context")]
UnableToRetrieveCanvasContext,
#[error("JS value error: {0:?}")]
JsValue(wasm_bindgen::JsValue),
#[error("WebGL2Backend error: {0}")]
WebGl2Error(beamterm_renderer::Error),
#[error("Failed to retrieve component: {0}")]
UnableToRetrieveComponent(&'static str),
}
impl From<wasm_bindgen::JsValue> for Error {
fn from(value: wasm_bindgen::JsValue) -> Self {
Self::JsValue(value)
}
}
impl From<Error> for std::io::Error {
fn from(error: Error) -> Self {
std::io::Error::new(std::io::ErrorKind::Other, error.to_string())
}
}
impl From<beamterm_renderer::Error> for Error {
fn from(value: beamterm_renderer::Error) -> Self {
Self::WebGl2Error(value)
}
}