wasm-css 0.2.0

Ergonomic WASM CSS Framework
Documentation
// Authors: Robert Lopez

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(())
    }
}