diff --git a/src/control.rs b/src/control.rs index ad49723..ec966fe 100644 --- a/src/control.rs +++ b/src/control.rs @@ -1,3 +1,4 @@ +mod layers; mod zoom; use crate::{create_object_with_properties, Map}; @@ -5,6 +6,7 @@ use js_sys::Object; use wasm_bindgen::prelude::*; use web_sys::HtmlElement; +pub use layers::LayersControl; pub use zoom::{Zoom, ZoomOptions}; #[wasm_bindgen] diff --git a/src/control/layers.rs b/src/control/layers.rs new file mode 100644 index 0000000..3bbeff1 --- /dev/null +++ b/src/control/layers.rs @@ -0,0 +1,20 @@ +use super::Control; +use js_sys::Object; +use wasm_bindgen::prelude::*; + +#[wasm_bindgen] +extern "C" { + #[derive(Debug, Clone)] + #[wasm_bindgen(extends = Control, js_namespace = ["L", "Control"])] + pub type LayersControl; + + #[wasm_bindgen(js_namespace = ["L", "control"], js_name = "layers")] + fn constructor_layers(options: &Object) -> LayersControl; +} + +impl LayersControl { + #[must_use] + pub fn new(options: &Object) -> Self { + constructor_layers(options) + } +} diff --git a/src/layer_control.rs b/src/layer_control.rs deleted file mode 100644 index ec5afc1..0000000 --- a/src/layer_control.rs +++ /dev/null @@ -1,12 +0,0 @@ -use super::Control; -use wasm_bindgen::prelude::*; - -#[wasm_bindgen] -extern "C" { - #[derive(Debug, Clone)] - #[wasm_bindgen(js_namespace = ["L", "control"], js_name = Layers, extends = Control)] - pub type LayerControl; - - #[wasm_bindgen(constructor)] - pub fn new(base_layers: &JsValue) -> LayerControl; -} diff --git a/src/lib.rs b/src/lib.rs index 7c44232..7d879b1 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -12,7 +12,6 @@ mod icon; mod lat_lng; mod lat_lng_bounds; mod layer; -mod layer_control; mod layer_group; mod map; mod marker; @@ -26,7 +25,7 @@ mod util; use js_sys::Array; use paste::paste; -pub use control::{Control, ControlOptions, Zoom, ZoomOptions}; +pub use control::{Control, ControlOptions, LayersControl, Zoom, ZoomOptions}; pub use crs::Crs; pub use div_icon::{DivIcon, DivIconOptions}; pub use div_overlay::DivOverlay;