konnektoren_core/konnektoren_js/
event.rs

1use wasm_bindgen::prelude::*;
2use web_sys::Window;
3
4pub struct EventHandler<'a> {
5    window: &'a Window,
6}
7
8impl<'a> EventHandler<'a> {
9    pub fn new(window: &'a Window) -> Self {
10        Self { window }
11    }
12
13    pub fn expose_send_event<F>(&self, on_event: F)
14    where
15        F: 'static + FnMut(JsValue),
16    {
17        let closure = Closure::wrap(Box::new(on_event) as Box<dyn FnMut(JsValue)>);
18        let konnektoren_obj =
19            js_sys::Reflect::get(self.window, &JsValue::from_str("konnektoren")).unwrap();
20        js_sys::Reflect::set(
21            &konnektoren_obj,
22            &JsValue::from_str("sendEvent"),
23            closure.as_ref().unchecked_ref(),
24        )
25        .unwrap();
26        closure.forget();
27    }
28}