import { Checkbox, Table, Button } from "@alifd/next"; import { IPublicModelPluginContext } from "@alilc/lowcode-types"; import * as React from 'react'; import { InjectConfig } from "./controller"; import './pane.scss' export function Pane(props: { injectConfig: InjectConfig; pluginContext: IPublicModelPluginContext; updateInjectConfig: (pluginName: string, resourceName: string, viewName: string, check: boolean) => void; getInjectInfo(): Promise<{ injectedSetters: any; }> injectedPluginConfigMap: any; }) { const [injectInfo, setInjectInfo] = React.useState<{ injectedSetters?: any; }>({}); const [dataSource, setDataSource] = React.useState([]); const { workspace } = props.pluginContext; const options: any[] = (workspace as any).resourceTypeList.map(resource => { return { label: resource.description || resource.resourceName, value: resource.resourceName, children: resource.editorViews?.map((view) => ({ label: view.viewName + '视图', value: view.viewName })) } }); options.unshift({ label: '全局', value: 'global', }); const updateConfig = React.useCallback((config) => { const newDataSource = Object.entries(config).map(([key, value]) => { return { pluginName: key } }).filter(d => props.injectedPluginConfigMap[d.pluginName]); setDataSource(newDataSource); props.getInjectInfo().then(res => { setInjectInfo(res); }); }, []); React.useEffect(() => { updateConfig(props.injectConfig.config); props.injectConfig.onChange((config) => { updateConfig(config); }) }, []); const { injectedSetters, } = injectInfo; if (!dataSource?.length && !injectedSetters?.length) { return (