wasm_react/react_bindings/
mod.rs

1use crate::{
2  hooks::{RefContainerValue, TmpRef},
3  ComponentWrapper, MemoComponentWrapper,
4};
5use js_sys::{Array, Function};
6use wasm_bindgen::prelude::*;
7
8#[wasm_bindgen(module = "/src/react_bindings/react-bindings.js")]
9extern "C" {
10  #[wasm_bindgen(js_name = useReact)]
11  pub fn use_react(value: &JsValue);
12
13  #[wasm_bindgen(js_name = createElement)]
14  pub fn create_element(
15    typ: &JsValue,
16    props: &JsValue,
17    children: &JsValue,
18  ) -> JsValue;
19
20  #[wasm_bindgen(js_name = createRustComponent)]
21  pub fn create_rust_component(
22    name: &str,
23    key: &JsValue,
24    component: ComponentWrapper,
25  ) -> JsValue;
26
27  #[wasm_bindgen(js_name = createRustMemoComponent)]
28  pub fn create_rust_memo_component(
29    name: &str,
30    key: &JsValue,
31    component: MemoComponentWrapper,
32  ) -> JsValue;
33
34  #[wasm_bindgen(js_name = useRustRef)]
35  pub fn use_rust_ref(
36    create: &JsValue,
37    callback: &mut dyn FnMut(&RefContainerValue),
38  );
39
40  #[wasm_bindgen(js_name = useRustTmpRefs)]
41  pub fn use_rust_tmp_refs();
42
43  #[wasm_bindgen(js_name = useRustTmpRef)]
44  pub fn use_rust_tmp_ref(value: TmpRef, callback: &mut dyn FnMut(&TmpRef));
45
46  #[wasm_bindgen(js_name = useRustState)]
47  pub fn use_rust_state() -> Function;
48
49  #[wasm_bindgen(js_name = useRustEffect)]
50  pub fn use_rust_effect(effect: &JsValue, dep: u8);
51
52  #[wasm_bindgen(js_name = useRustLayoutEffect)]
53  pub fn use_rust_layout_effect(effect: &JsValue, dep: u8);
54
55  #[wasm_bindgen(js_name = useRustContext)]
56  pub fn use_rust_context(
57    context: &JsValue,
58    callback: &mut dyn FnMut(&RefContainerValue),
59  );
60
61  // From the React namespace:
62
63  #[wasm_bindgen(js_namespace = React, js_name = Fragment)]
64  pub static FRAGMENT: JsValue;
65
66  #[wasm_bindgen(js_namespace = React, js_name = Suspense)]
67  pub static SUSPENSE: JsValue;
68
69  #[wasm_bindgen(js_namespace = React, js_name = useRef)]
70  pub fn use_ref(init: &JsValue) -> JsValue;
71
72  #[wasm_bindgen(js_namespace = React, js_name = useId)]
73  pub fn use_id() -> String;
74
75  #[wasm_bindgen(js_namespace = React, js_name = useDeferredValue)]
76  pub fn use_deferred_value(value: u8) -> u8;
77
78  #[wasm_bindgen(js_namespace = React, js_name = useTransition)]
79  pub fn use_transition() -> Array;
80
81  #[wasm_bindgen(js_namespace = React, js_name = createContext)]
82  pub fn create_context(value: RefContainerValue) -> JsValue;
83}