convert_js/internal/
js_object.rs

1use wasm_bindgen::JsValue;
2
3use crate::ToJs;
4
5pub struct JsObject(js_sys::Object);
6
7impl JsObject {
8    #[inline]
9    pub fn new() -> Self {
10        Self(js_sys::Object::new())
11    }
12
13    #[inline]
14    pub fn into_inner(self) -> js_sys::Object {
15        self.0
16    }
17
18    #[inline]
19    pub fn into_js_value(self) -> JsValue {
20        self.0.into()
21    }
22
23    #[inline]
24    pub fn with_prop<K: ToJs, V: ToJs>(self, key: &K, v: &V) -> Self {
25        self.set_prop(key, v);
26        self
27    }
28
29    #[inline]
30    pub fn set_prop<K: ToJs, V: ToJs>(&self, key: &K, v: &V) -> &Self {
31        if let Some(v) = v.to_js_property_value() {
32            let k = key.to_js();
33            js_sys::Reflect::set(&self.0, &k, &v).unwrap();
34        }
35
36        self
37    }
38}