use super::*;
#[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_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<EngineCell<AssetCache>>,
#[new(skip)]
pub(crate) pending: AssetPending,
#[new(skip)]
pub(crate) closures: AssetClosures,
}
#[derive(Debug, Default)]
pub struct AssetClosureStore {
pub slots: Vec<Option<Closure<dyn FnMut()>>>,
pub settled: Vec<bool>,
}