1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
//! A popper.js integration for Rust
//!
//! ## Examples
//!
//! See the examples in the `examples` folder.

#![cfg_attr(docsrs, feature(doc_auto_cfg))]

mod console;

pub mod modifier;
pub mod options;
pub mod state;

#[cfg(feature = "yew")]
pub mod yew;

pub use popper_rs_sys as sys;

use crate::options::Options;
use std::convert::TryInto;
use wasm_bindgen::JsValue;

/// The prelude
pub mod prelude {
    pub use popper_rs_sys::types::*;
    pub use popper_rs_sys::Instance;

    pub use crate::modifier::*;
    pub use crate::options::Options;
    pub use crate::state::*;

    #[cfg(feature = "yew")]
    pub use super::yew::component::*;
    #[cfg(feature = "yew")]
    pub use super::yew::*;
}

/// Create a new popper instance.
pub fn create(
    reference: &web_sys::Node,
    popper: &web_sys::Node,
    opts: &Options,
) -> Result<prelude::Instance, JsValue> {
    Ok(sys::create_popper(reference, popper, &opts.try_into()?))
}