in packages/template-editor/proj/src/preview.tsx [22:62]
async function init() {
const scenarioName = getScenarioName();
const packages = getPackagesFromLocalStorage(scenarioName);
const projectSchema = getProjectSchemaFromLocalStorage(scenarioName);
const {
componentsMap: componentsMapArray,
componentsTree,
i18n,
dataSource: projectDataSource,
} = projectSchema;
const componentsMap: any = {};
componentsMapArray.forEach((component: any) => {
componentsMap[component.componentName] = component;
});
const pageSchema = componentsTree[0];
const libraryMap = {};
const libraryAsset = [];
packages.forEach(({ package: _package, library, urls, renderUrls }) => {
libraryMap[_package] = library;
if (renderUrls) {
libraryAsset.push(renderUrls);
} else if (urls) {
libraryAsset.push(urls);
}
});
const vendors = [assetBundle(libraryAsset, AssetLevel.Library)];
// TODO asset may cause pollution
const assetLoader = new AssetLoader();
await assetLoader.load(libraryAsset);
const components = await injectComponents(buildComponents(libraryMap, componentsMap));
setData({
schema: pageSchema,
components,
i18n,
projectDataSource,
});
}