war3parser_wasm/
mapinfo.rsuse war3parser::war3map_metadata::War3MapMetadata;
use wasm_bindgen::prelude::wasm_bindgen;
use web_sys::js_sys::Uint8Array;
use crate::types::{wasm_image::WasmImage, wasm_w3i::WasmW3i};
#[wasm_bindgen(getter_with_clone)]
pub struct WasmMapInfo {
    pub map_info: Option<WasmW3i>,
    pub images: Vec<WasmImage>,
}
impl From<War3MapMetadata> for WasmMapInfo {
    fn from(metadata: War3MapMetadata) -> Self {
        Self {
            map_info: metadata.map_info.map(WasmW3i::from),
            images: metadata.images.into_iter().map(WasmImage::from).collect(),
        }
    }
}
#[wasm_bindgen]
impl WasmMapInfo {
    pub fn new(buffer: Uint8Array) -> Option<Self> {
        let buffer_vec = buffer.to_vec();
        match War3MapMetadata::from(&buffer_vec) {
            Some(mut metadata) => {
                metadata.update_string_table().unwrap_or(());
                Some(Self::from(metadata))
            }
            None => None,
        }
    }
}