use std::borrow::Cow;
use gpui_kit::{AssetSource, Result, SharedString, assets::Assets};
gpui_kit::assets::icon_assets!(
ComposerExtras,
[
ClipboardList,
FileCode,
FileSpreadsheet,
Gauge,
GitBranch,
Hand,
Image,
Laptop,
Lock,
LockOpen,
Mic,
Presentation,
ShieldAlert,
ShieldCheck,
Video,
]
);
#[derive(Clone, Copy, Debug, Default)]
pub struct ComposerAssets;
impl AssetSource for ComposerAssets {
fn load(&self, path: &str) -> Result<Option<Cow<'static, [u8]>>> {
if let Some(bytes) = ComposerExtras.load(path)? {
return Ok(Some(bytes));
}
Assets.load(path)
}
fn list(&self, path: &str) -> Result<Vec<SharedString>> {
let mut paths = Assets.list(path)?;
paths.extend(ComposerExtras.list(path)?);
paths.sort();
paths.dedup();
Ok(paths)
}
}