export async function injectComponents()

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 };
}