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()
}
},
});
}