async init()

in packages/lowcode-plugin-inject/src/appInject.tsx [79:161]


    async init() {
      const subPluginName = '___injectPlugins___';

      const subPlugin =  (ctx: IPublicModelPluginContext) => {
        injectAssets(ctx, options)
        return {
          async init() {
          }
        }
      }

      subPlugin.pluginName = subPluginName;
      subPlugin.meta = {
        dependencies: [],
        engines: {
          lowcodeEngine: '^1.0.0', // 插件需要配合 ^1.0.0 的引擎才可运行
        },
      };

      workspace.onChangeActiveWindow(async () => {
        for (const pluginName in injectedPluginConfigMap) {
          const injectedSameNamePlugin = await getInjectedPlugin(pluginName, ctx, options);
          if (!injectedSameNamePlugin) {
            continue;
          }

          const resourceName  = workspace.window?.resource?.name;
          const currentEditorView = workspace.window?.currentEditorView;
          const viewName = (currentEditorView as any)?.viewName;
          if (injectConfig.get(pluginName, resourceName, viewName) && !currentEditorView?.plugins.has(pluginName)) {
            await currentEditorView?.plugins.register(injectedPluginConfigMap[pluginName], {
              autoInit: true,
            });
          }

          if (injectConfig.get(pluginName, 'global') && !workspace.plugins.has(pluginName)) {
            await workspace.plugins.register(injectedPluginConfigMap[pluginName], {
              autoInit: true,
            });
          }
        }

        if (workspace.window?.currentEditorView && !workspace.window?.currentEditorView.plugins?.has(subPlugin.pluginName)) {
          await workspace.window?.currentEditorView.plugins.register(subPlugin)
        }
      });

      await getInjectedPlugin(undefined, ctx, options);

      ctx.skeleton.add({
        area: 'leftArea',
        name: 'inject-pane',
        type: 'PanelDock',
        props: {
          icon: <Icon />,
          description: '调试',
          className: 'inject-pane-icon',
        },
        index: 2,
        panelProps: {
          width: '600px',
          canSetFixed: false,
        },
        content: (props) => {
          return <Pane {...props} injectConfig={injectConfig} />
        },
        contentProps: {
          pluginContext: ctx,
          injectConfig,
          injectedPluginConfigMap,
          getInjectInfo: async () => {
            const injectedSetters = await getInjectedResource('vs', options);
            return {
              injectedSetters,
            }
          },
          updateInjectConfig: (pluginName: string, resourceName: string, viewName: string, check: boolean) => {
            injectConfig.set(pluginName, resourceName, viewName, check)
            injectConfig.save()
          }
        },
      });
    }