fix: 调整一些类型声明

This commit is contained in:
1ncounter 2024-05-30 20:15:10 +08:00
parent 42a53b504c
commit f1711e0fc9
5 changed files with 40 additions and 37 deletions

View File

@ -1,33 +1,14 @@
import { isLowCodeComponentSchema } from '@alilc/lowcode-shared';
import { useRenderContext } from '../context/render'; import { useRenderContext } from '../context/render';
import { createComponentBySchema, ReactComponent } from '../runtime'; import { getComponentByName } from '../runtime';
import Route from './route'; import Route from './route';
import { rendererExtends } from '../plugin'; import { rendererExtends } from '../plugin';
export default function App() { export default function App() {
const { schema, packageManager } = useRenderContext(); const renderContext = useRenderContext();
const { schema } = renderContext;
const appWrappers = rendererExtends.getAppWrappers(); const appWrappers = rendererExtends.getAppWrappers();
const wrappers = rendererExtends.getRouteWrappers(); const wrappers = rendererExtends.getRouteWrappers();
function getLayoutComponent() {
const config = schema.get('config');
const componentName = config?.layout?.componentName as string;
if (componentName) {
const Component = packageManager.getComponent<ReactComponent>(componentName);
if (isLowCodeComponentSchema(Component)) {
return createComponentBySchema(Component.schema, {
displayName: componentName,
});
}
return Component;
}
}
const Layout = getLayoutComponent();
let element = <Route />; let element = <Route />;
if (wrappers.length > 0) { if (wrappers.length > 0) {
@ -36,9 +17,16 @@ export default function App() {
}, element); }, element);
} }
if (Layout) { const layoutConfig = schema.get('config')?.layout;
const layoutProps: any = schema.get('config')?.layout?.props ?? {};
element = <Layout {...layoutProps}>{element}</Layout>; if (layoutConfig) {
const componentName = layoutConfig.componentName as string;
const Layout = getComponentByName(componentName, renderContext);
if (Layout) {
const layoutProps: any = layoutConfig.props ?? {};
element = <Layout {...layoutProps}>{element}</Layout>;
}
} }
if (appWrappers.length > 0) { if (appWrappers.length > 0) {

View File

@ -4,5 +4,6 @@ export { defineRendererPlugin } from './plugin';
export * from './context/render'; export * from './context/render';
export * from './context/router'; export * from './context/router';
export type { Spec, ProCodeComponent, LowCodeComponent } from '@alilc/lowcode-shared';
export type { PackageLoader, CodeScope, Plugin } from '@alilc/lowcode-renderer-core'; export type { PackageLoader, CodeScope, Plugin } from '@alilc/lowcode-renderer-core';
export type { RendererExtends } from './plugin'; export type { RendererExtends } from './plugin';

View File

@ -53,7 +53,10 @@ export interface LowCodeComponentProps {
const lowCodeComponentsCache = new Map<string, ReactComponent>(); const lowCodeComponentsCache = new Map<string, ReactComponent>();
function getComponentByName(name: string, { packageManager }: RenderContext): ReactComponent { export function getComponentByName(
name: string,
{ packageManager, boostsManager }: RenderContext,
): ReactComponent {
const componentsRecord = packageManager.getComponentsNameRecord<ReactComponent>(); const componentsRecord = packageManager.getComponentsNameRecord<ReactComponent>();
// read cache first // read cache first
const result = lowCodeComponentsCache.get(name) || componentsRecord[name]; const result = lowCodeComponentsCache.get(name) || componentsRecord[name];
@ -61,7 +64,23 @@ function getComponentByName(name: string, { packageManager }: RenderContext): Re
invariant(result, `${name} component not found in componentsRecord`); invariant(result, `${name} component not found in componentsRecord`);
if (isLowCodeComponentSchema(result)) { if (isLowCodeComponentSchema(result)) {
const lowCodeComponent = createComponentBySchema(result.schema, { const { componentsMap, componentsTree, utils, i18n } = result.schema;
if (componentsMap.length > 0) {
packageManager.resolveComponentMaps(componentsMap);
}
const boosts = boostsManager.toExpose();
utils?.forEach((util) => boosts.util.add(util));
if (i18n) {
Object.keys(i18n).forEach((locale) => {
boosts.intl.addTranslations(locale, i18n[locale]);
});
}
const lowCodeComponent = createComponentBySchema(componentsTree[0], {
displayName: name, displayName: name,
}); });

View File

@ -1,14 +1,14 @@
import { Package } from './specs/asset-spec'; import { Package } from './specs/asset-spec';
import { ComponentTree } from './specs/lowcode-spec'; import { Project } from './specs/lowcode-spec';
export interface ProCodeComponent extends Package { export interface ProCodeComponent extends Package {
package: string; package: string;
type: 'proCode'; type: 'proCode';
} }
export interface LowCodeComponent extends Omit<Package, 'schema'> { export interface LowCodeComponent extends Package {
id: string; id: string;
type: 'lowCode'; type: 'lowCode';
componentName: string; componentName: string;
schema: ComponentTree; schema: Project;
} }

View File

@ -28,7 +28,7 @@ export interface Package {
/** /**
* CDN url js css urls * CDN url js css urls
*/ */
advancedUrls?: ComplexUrls; advancedUrls?: MultiModeUrls;
/** /**
* CDN url js css * CDN url js css
*/ */
@ -36,7 +36,7 @@ export interface Package {
/** /**
* CDN url js css editUrls * CDN url js css editUrls
*/ */
advancedEditUrls?: ComplexUrls; advancedEditUrls?: MultiModeUrls;
/** /**
* schema * schema
*/ */
@ -79,11 +79,6 @@ export interface Package {
exportSourceLibrary?: string; exportSourceLibrary?: string;
} }
/**
* urls
*/
export type ComplexUrls = string[] | MultiModeUrls;
/** /**
* *
*/ */