export class AssetProvider { constructor() { this.assets = []; } injectAssets(assets) { this.assets = assets; } url(name) { const asset = this.assets.find((x) => x.name === name); if (!asset) { throw new Error(`Asset with name '${name}' does not exist`); } return URL.createObjectURL(asset.file); } fullUrl(name) { return new Promise((resolve, reject) => { const asset = this.assets.find((x) => x.name === name); if (!asset) { throw new Error(`Asset with name '${name}' does not exist`); } const reader = new FileReader(); reader.readAsDataURL(asset.file); reader.onload = () => resolve(reader.result); reader.onerror = () => reject(reader.error); }); } async getAll() { const result = {}; for (const asset of this.assets) { result[asset.name] = await this.fullUrl(asset.name); } return result; } }