1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
// Authors: Robert Lopez
use super::{components::Components, Style};
use crate::error::WasmCssError;
impl Style {
/// Extend `Style` with `css`, re-rendering if `new_css` is not empty.
///
/// Returns error if missing access to: `Head`, `Window`, `Document`.
///
/// ---
/// Example Usage:
/// ```
///
/// let mut style = named_style!(
/// "my_style",
/// "
/// font-size: 10rem;
/// background-color: blue;
/// "
/// )?;
///
/// style.extend_from_css("font-size: 30rem; display: flex;")?;
/// ```
pub fn extend_from_css(&mut self, new_css: &str) -> Result<(), WasmCssError> {
let new_components = Components::from_css(new_css);
if !new_components.fields.is_empty() || !new_components.effects.is_empty() {
self.components.fields.extend(new_components.fields);
'effect_loop: for effect in new_components.effects {
for index in 0..self.components.effects.len() {
if effect.key == self.components.effects[index].key {
self.components.effects[index] = effect;
continue 'effect_loop;
}
}
self.components.effects.push(effect);
}
self.css = self.components.to_css(&self.css_name);
self.render()?;
}
Ok(())
}
}