popper_rs_sys/
lib.rs

1use crate::types::Placement;
2use wasm_bindgen::prelude::*;
3use web_sys::HtmlElement;
4
5pub mod types;
6
7#[cfg_attr(debug_assertions, wasm_bindgen(module = "/js/debug/popperjs.js"))]
8#[cfg_attr(
9    not(debug_assertions),
10    wasm_bindgen(module = "/js/release/popperjs.js")
11)]
12extern "C" {
13
14    #[wasm_bindgen(js_name = "createPopper")]
15    pub fn create_popper(
16        reference: &web_sys::Node,
17        popper: &web_sys::Node,
18        opts: &JsValue,
19    ) -> Instance;
20
21    #[derive(Clone, Debug)]
22    pub type Instance;
23
24    #[wasm_bindgen(method)]
25    pub fn destroy(this: &Instance);
26
27    #[wasm_bindgen(method)]
28    pub async fn update(this: &Instance);
29
30    #[wasm_bindgen(method, js_name = "forceUpdate")]
31    pub fn force_update(this: &Instance);
32
33    #[wasm_bindgen(method, getter)]
34    pub fn state(this: &Instance) -> State;
35}
36
37#[wasm_bindgen]
38extern "C" {
39    #[derive(Clone, Debug)]
40    pub type State;
41
42    #[wasm_bindgen(method, getter)]
43    pub fn attributes(this: &State) -> Attributes;
44
45    #[wasm_bindgen(method, getter)]
46    pub fn elements(this: &State) -> Elements;
47
48    #[wasm_bindgen(method, getter)]
49    pub fn styles(this: &State) -> Styles;
50
51    #[wasm_bindgen(method, getter)]
52    pub fn placement(this: &State) -> Placement;
53}
54
55#[wasm_bindgen]
56extern "C" {
57    #[derive(Clone, Debug)]
58    pub type Styles;
59
60    #[wasm_bindgen(method, getter)]
61    pub fn arrow(this: &Styles) -> JsValue;
62
63    #[wasm_bindgen(method, getter)]
64    pub fn popper(this: &Styles) -> JsValue;
65}
66
67#[wasm_bindgen]
68extern "C" {
69    #[derive(Clone, Debug)]
70    pub type Attributes;
71
72    #[wasm_bindgen(method, getter)]
73    pub fn popper(this: &Attributes) -> JsValue;
74}
75
76#[wasm_bindgen]
77extern "C" {
78    #[derive(Clone, Debug)]
79    pub type Elements;
80
81    #[wasm_bindgen(method, getter)]
82    pub fn reference(this: &Elements) -> JsValue;
83
84    #[wasm_bindgen(method, getter)]
85    pub fn popper(this: &Elements) -> HtmlElement;
86
87    #[wasm_bindgen(method, getter)]
88    pub fn arrow(this: &Elements) -> Option<HtmlElement>;
89}
90
91#[wasm_bindgen]
92extern "C" {
93    #[derive(Clone, Debug)]
94    pub type ModifierArguments;
95
96    #[wasm_bindgen(method, getter)]
97    pub fn instance(this: &ModifierArguments) -> Instance;
98
99    #[wasm_bindgen(method, getter)]
100    pub fn state(this: &ModifierArguments) -> State;
101}