Skip to main content

leptos_leaflet/components/events/
tooltip_events.rs

1use 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);