in packages/lowcode-plugin-inject/src/utils.tsx [286:315]
export async function injectComponents(components, injectOptions?: InjectOptions) {
if (!needInject) return components;
const injectUrls = await getInjectUrls('component', 'item', injectOptions);
await loadComponentFromSources(injectUrls.map(item => item.url || item));
const injectedComponents = getComponentFromUrlItems(injectUrls);
const libraryMap = {};
const componentsMap = {};
Object.keys(injectedComponents).forEach((name) => {
const { library } = injectedComponents[name];
const pascalName = pascal(name);
libraryMap[name] = library || pascalName;
window[`${pascalName}Meta`]?.components?.forEach((item) => {
componentsMap[item.componentName] = item.npm;
})
})
const injectedComponentsForRenderer = await buildComponents(libraryMap, componentsMap, undefined);
if (Object.keys(injectedComponents).length > 0) {
Notification.success({
title: '成功注入以下组件',
content: (
<div>
{Object.keys(injectedComponents).map((name) => (
<p>组件:<b>{name}</b></p>
))}
</div>
)
})
}
return { ...components, ...injectedComponentsForRenderer };
}