convert_js/internal/
js_object.rs1use 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}