popper_rs/
lib.rs

1//! A popper.js integration for Rust
2//!
3//! ## Examples
4//!
5//! See the examples in the `examples` folder.
6
7#![cfg_attr(docsrs, feature(doc_auto_cfg))]
8
9mod console;
10
11pub mod modifier;
12pub mod options;
13pub mod state;
14
15#[cfg(feature = "yew")]
16pub mod yew;
17
18pub use popper_rs_sys as sys;
19
20use crate::options::Options;
21use std::convert::TryInto;
22use wasm_bindgen::JsValue;
23
24/// The prelude
25pub mod prelude {
26    pub use popper_rs_sys::types::*;
27    pub use popper_rs_sys::Instance;
28
29    pub use crate::modifier::*;
30    pub use crate::options::Options;
31    pub use crate::state::*;
32
33    #[cfg(feature = "yew")]
34    pub use super::yew::component::*;
35    #[cfg(feature = "yew")]
36    pub use super::yew::*;
37}
38
39/// Create a new popper instance.
40pub fn create(
41    reference: &web_sys::Node,
42    popper: &web_sys::Node,
43    opts: &Options,
44) -> Result<prelude::Instance, JsValue> {
45    Ok(sys::create_popper(reference, popper, &opts.try_into()?))
46}