From 094ad20b518079da35489e151b3c72bb19e04f1c Mon Sep 17 00:00:00 2001 From: Pauan Date: Tue, 23 Jul 2019 07:25:27 +0200 Subject: [PATCH] Minor tweaks --- Cargo.toml | 3 ++- src/bindings.rs | 12 ++++++------ src/dom.rs | 6 +++--- 3 files changed, 11 insertions(+), 10 deletions(-) diff --git a/Cargo.toml b/Cargo.toml index a6a7f8c..a219a39 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -18,7 +18,8 @@ pin-utils = "0.1.0-alpha.4" futures-channel-preview = "0.3.0-alpha.16" futures-util-preview = "0.3.0-alpha.16" futures-signals = "0.3.5" -wasm-bindgen = "0.2.45" +# TODO should this enable interning ? +wasm-bindgen = { version = "0.2.45", features = ["enable-interning"] } js-sys = "0.3.22" [dependencies.wasm-bindgen-futures] diff --git a/src/bindings.rs b/src/bindings.rs index bf3b770..f8ae643 100644 --- a/src/bindings.rs +++ b/src/bindings.rs @@ -1,7 +1,7 @@ use wasm_bindgen::prelude::*; use wasm_bindgen::{JsCast, intern}; use js_sys::Function; -use web_sys::{HtmlElement, Element, Node, Window, History, Document, Text, Comment, CssStyleSheet, CssStyleDeclaration, HtmlStyleElement, CssStyleRule, EventTarget}; +use web_sys::{HtmlElement, Element, Node, Window, History, Document, Text, Comment, DomTokenList, CssStyleSheet, CssStyleDeclaration, HtmlStyleElement, CssStyleRule, EventTarget}; #[wasm_bindgen(inline_js = " @@ -93,7 +93,7 @@ pub(crate) fn make_style_rule(sheet: &CssStyleSheet, selector: &str) -> CssStyle let rules = sheet.css_rules().unwrap_throw(); let length = rules.length(); // TODO don't return u32 ? - sheet.insert_rule_with_index(&format!("{} {{}}", selector), length).unwrap_throw(); + sheet.insert_rule_with_index(&format!("{}{{}}", selector), length).unwrap_throw(); // TODO use dyn_into ? rules.get(length).unwrap_throw().unchecked_into() } @@ -141,12 +141,12 @@ pub(crate) fn remove_attribute_ns(elem: &Element, namespace: &str, key: &str) { elem.remove_attribute_ns(Some(namespace), key).unwrap_throw(); } -pub(crate) fn add_class(elem: &Element, value: &str) { - elem.class_list().add_1(value).unwrap_throw(); +pub(crate) fn add_class(classes: &DomTokenList, value: &str) { + classes.add_1(value).unwrap_throw(); } -pub(crate) fn remove_class(elem: &Element, value: &str) { - elem.class_list().remove_1(value).unwrap_throw(); +pub(crate) fn remove_class(classes: &DomTokenList, value: &str) { + classes.remove_1(value).unwrap_throw(); } pub(crate) fn set_text_content(elem: &Node, value: &str) { diff --git a/src/dom.rs b/src/dom.rs index a262eee..4ab228d 100644 --- a/src/dom.rs +++ b/src/dom.rs @@ -619,10 +619,10 @@ impl DomBuilder where A: AsRef { #[inline] pub fn class(self, name: B) -> Self where B: MultiStr { - let element = self.element.as_ref(); + let classes = self.element.as_ref().class_list(); name.each(|name| { - bindings::add_class(element, intern(name)); + bindings::add_class(&classes, intern(name)); }); self @@ -723,7 +723,7 @@ impl DomBuilder where A: AsRef { where B: MultiStr + 'static, C: Signal + 'static { - let element = self.element.as_ref().clone(); + let element = self.element.as_ref().class_list(); let mut is_set = false;