dioxus-leaflet 0.3.1

A general-purpose Leaflet map component for Dioxus applications
Documentation
use crate::{PopupOptions, interop, types::Id};
use dioxus::prelude::*;
use dioxus_logger::tracing::error;
use std::rc::Rc;

#[component]
pub fn Popup(
    #[props(default = PopupOptions::default())] options: PopupOptions,

    children: Element,
) -> Element {
    let id: Rc<Id> = use_context();
    let id = Id::popup(&id, dioxus_core::current_scope_id().0);
    let class = options.class_name.clone();

    let id2 = id.clone();
    use_effect(move || {
        let id = id2.clone();
        let opts = options.clone();
        spawn(async move {
            if let Err(e) = interop::update_popup(&id, &opts).await {
                error!("{e}");
            }
        });
    });

    rsx!(
        div {
            id: "dioxus-leaflet-{id}",
            class: "dioxus-leaflet-popup-content {class.as_ref().map(|c| c.as_str()).unwrap_or(\"\")}",
            {children}
        }
    )
}