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}