leptos_leaflet/components/events/
tooltip_events.rs1use crate::leaflet_event;
2use leaflet::TooltipEvent;
3use std::cell::RefCell;
4use std::rc::Rc;
5
6#[derive(Clone, Default)]
7pub struct TooltipEvents {
8 inner: Rc<RefCell<InnerTooltipEvents>>,
9}
10
11#[derive(Default)]
12struct InnerTooltipEvents {
13 on_tooltip_open: Option<Box<dyn Fn(TooltipEvent)>>,
14 on_tooltip_close: Option<Box<dyn Fn(TooltipEvent)>>,
15}
16
17impl TooltipEvents {
18 pub fn new() -> Self {
19 Self::default()
20 }
21
22 pub fn setup(&self, evented: &impl leaflet::TooltipEvents) {
23 if let Some(on_tooltip_open) = self.inner.borrow_mut().on_tooltip_open.take() {
24 evented.on_tooltip_open(on_tooltip_open);
25 }
26 if let Some(on_tooltip_close) = self.inner.borrow_mut().on_tooltip_close.take() {
27 evented.on_tooltip_close(on_tooltip_close);
28 }
29 }
30}
31
32leaflet_event!(TooltipEvents, on_tooltip_open, TooltipEvent);
33leaflet_event!(TooltipEvents, on_tooltip_close, TooltipEvent);