1use wasm_bindgen::prelude::*;
2use wasm_bindgen::JsCast;
3use web_sys::HtmlDivElement;
4use web_sys::HtmlElement;
5
6pub fn get_tooltips(slider: &NoUiSlider) -> Vec<HtmlDivElement> {
7 match js_sys::try_iter(&slider.get_tooltips()) {
8 Ok(Some(iter)) => iter
9 .map(|i| i.unwrap().dyn_into().unwrap())
10 .collect::<Vec<HtmlDivElement>>(),
11 _ => vec![],
12 }
13}
14
15pub fn get_origins(slider: &NoUiSlider) -> Vec<HtmlDivElement> {
16 match js_sys::try_iter(&slider.get_origins()) {
17 Ok(Some(iter)) => iter
18 .map(|i| i.unwrap().dyn_into().unwrap())
19 .collect::<Vec<HtmlDivElement>>(),
20 _ => vec![],
21 }
22}
23
24pub fn get(slider: &NoUiSlider) -> Vec<f64> {
25 slider
26 .get()
27 .into_iter()
28 .map(|i| i.as_string().unwrap().parse::<f64>().unwrap())
29 .collect::<Vec<f64>>()
30}
31
32#[wasm_bindgen]
33extern "C" {
34 #[derive(Debug)]
35 #[wasm_bindgen(js_name = create)]
36 pub type NoUiSlider;
37
38 #[wasm_bindgen(constructor, js_class = create, js_namespace = noUiSlider)]
40 pub fn new(target: &HtmlElement, options: &JsValue) -> NoUiSlider;
41
42 #[wasm_bindgen(method)]
44 pub fn destroy(this: &NoUiSlider);
45
46 #[wasm_bindgen(method)]
48 pub fn set(this: &NoUiSlider, values: &JsValue);
49
50 #[wasm_bindgen(method)]
52 pub fn get(this: &NoUiSlider) -> Vec<JsValue>;
53
54 #[wasm_bindgen(method, js_name = get)]
56 pub fn get_with_options(this: &NoUiSlider, no_formatting: bool) -> Vec<JsValue>;
57
58 #[wasm_bindgen(method)]
60 pub fn on(this: &NoUiSlider, event_name: &str, handler: &JsValue);
61
62 #[wasm_bindgen(method)]
64 pub fn off(this: &NoUiSlider, event_name: &str);
65
66 #[wasm_bindgen(method, js_name = getOrigins)]
68 pub fn get_origins(this: &NoUiSlider) -> JsValue;
69
70 #[wasm_bindgen(method, js_name = getPositions)]
72 pub fn get_positions(this: &NoUiSlider) -> JsValue;
73
74 #[wasm_bindgen(method, js_name = getTooltips)]
76 pub fn get_tooltips(this: &NoUiSlider) -> JsValue;
77
78 #[wasm_bindgen(method, js_name = removeTooltips)]
80 pub fn remove_tooltips(this: &NoUiSlider) -> JsValue;
81
82 #[wasm_bindgen(method, js_name = updateOptions)]
84 pub fn update_options(this: &NoUiSlider, option: &JsValue);
85
86 #[wasm_bindgen(method, js_name = setHandle)]
88 pub fn set_handle(
89 this: &NoUiSlider,
90 handle_number: i64,
91 value: f64,
92 set_event: bool,
93 stepping: bool,
94 );
95
96 #[wasm_bindgen(method, js_name = pips)]
98 pub fn pips(this: &NoUiSlider, options: &JsValue) -> JsValue;
99
100 #[wasm_bindgen(method, js_name = removePips)]
102 pub fn remove_pips(this: &NoUiSlider);
103
104 #[wasm_bindgen(method)]
106 pub fn reset(this: &NoUiSlider) -> JsValue;
107}