use super::Style;
use crate::error::{format_error, WasmCssError};
use web_sys::window;
impl Style {
pub(crate) fn render(&self) -> Result<(), WasmCssError> {
let window = window().ok_or(format_error!("Failed to obtain Window object"))?;
let document = window
.document()
.ok_or(format_error!("Failed to obtain Document object"))?;
if let Some(existing_style) = document.get_element_by_id(&self.css_name) {
existing_style.set_inner_html(&self.css);
return Ok(());
}
let head = document
.head()
.ok_or(format_error!("Failed to obtain HtmlHeadElement object"))?;
let style = document
.create_element("style")
.map_err(|_| format_error!("Failed to create new style Element"))?;
style.set_id(&self.css_name);
style.set_inner_html(&self.css);
head.append_child(&style)
.map_err(|_| format_error!("Failed to add new style Element to HtmlHeadElement"))?;
Ok(())
}
}