Skip to main content

dioxus_maplibre/handle/
padding.rs

1//! Viewport padding MapHandle methods.
2#![allow(clippy::needless_pass_by_value, clippy::unused_async)]
3
4use super::MapHandle;
5use crate::options::Padding;
6#[cfg(target_arch = "wasm32")]
7use dioxus::prelude::document;
8
9impl MapHandle {
10    /// Set viewport padding
11    pub fn set_padding(&self, padding: Padding) {
12        self.fire_and_forget(|| {
13            let json = serde_json::to_string(&padding).unwrap_or_default();
14            crate::interop::set_padding_js(&self.map_id, &json)
15        });
16    }
17
18    /// Get current viewport padding
19    #[cfg(target_arch = "wasm32")]
20    pub async fn get_padding(&self) -> Option<Padding> {
21        let js = crate::interop::get_padding_js(&self.map_id);
22        document::eval(&js).join::<Padding>().await.ok()
23    }
24
25    /// Get current viewport padding
26    #[cfg(not(target_arch = "wasm32"))]
27    pub async fn get_padding(&self) -> Option<Padding> {
28        None
29    }
30}