use crate::*;
#[derive(Clone, Data, Debug, New, PartialEq)]
pub struct AssetEntry {
#[get(type(copy))]
pub(crate) asset_type: AssetType,
#[get(type(copy))]
pub(crate) state: AssetState,
#[get(type(clone))]
pub(crate) image: Option<HtmlImageElement>,
pub(crate) url: String,
}
#[derive(Clone, Data, Debug, New, PartialEq)]
pub struct AssetCache {
#[get(pub(crate))]
#[get_mut(pub(crate))]
#[set(pub(crate))]
#[new(skip)]
pub(crate) entries: HashMap<String, AssetEntry>,
}
#[derive(Clone, Data, New)]
pub struct AssetLoader {
#[new(skip)]
pub(crate) cache: Rc<RefCell<AssetCache>>,
#[get(pub(crate), type(copy))]
#[get_mut(pub(crate))]
#[set(pub(crate))]
#[new(skip)]
pub(crate) pending_count: u32,
#[new(skip)]
pub(crate) closures: AssetClosures,
}