leptos-leaflet 0.10.2

Leaflet components to use in Leptos.
Documentation
use crate::leaflet_event;
use leaflet::TooltipEvent;
use std::cell::RefCell;
use std::rc::Rc;

#[derive(Clone, Default)]
pub struct TooltipEvents {
    inner: Rc<RefCell<InnerTooltipEvents>>,
}

#[derive(Default)]
struct InnerTooltipEvents {
    on_tooltip_open: Option<Box<dyn Fn(TooltipEvent)>>,
    on_tooltip_close: Option<Box<dyn Fn(TooltipEvent)>>,
}

impl TooltipEvents {
    pub fn new() -> Self {
        Self::default()
    }

    pub fn setup(&self, evented: &impl leaflet::TooltipEvents) {
        if let Some(on_tooltip_open) = self.inner.borrow_mut().on_tooltip_open.take() {
            evented.on_tooltip_open(on_tooltip_open);
        }
        if let Some(on_tooltip_close) = self.inner.borrow_mut().on_tooltip_close.take() {
            evented.on_tooltip_close(on_tooltip_close);
        }
    }
}

leaflet_event!(TooltipEvents, on_tooltip_open, TooltipEvent);
leaflet_event!(TooltipEvents, on_tooltip_close, TooltipEvent);