jamis
Version:
一种支持通过JSON配置方式生成页面的组件库
45 lines (44 loc) • 1.54 kB
TypeScript
import type { RendererEnv, RendererProps, Schema, SchemaNode } from 'jamis-core';
import type { History } from 'history';
import type { ReactNode } from 'react';
import type { SchemaCollection } from '../sdk';
import type { IRendererStore } from './RendererStore';
export type { IRendererStore } from './RendererStore';
export type { IRootStore } from './RootStore';
export type { TailwindSpacing, TailwindWidth, TailwindHeight } from './Tailwind';
export interface RootRenderProps {
location?: History['location'];
[propName: string]: any;
}
export interface RootProps {
schema: SchemaNode;
rootStore: IRendererStore;
env: RendererEnv;
pathPrefix?: string;
[propName: string]: any;
}
export interface RootWrapperProps {
env: RendererEnv;
children: React.ReactNode;
schema: SchemaNode;
rootStore: IRendererStore;
[propName: string]: any;
}
export interface RenderChildProps extends Partial<RendererProps> {
env: RendererEnv;
}
export type ReactElement = React.ReactNode[] | JSX.Element | null | false;
export interface SchemaRendererProps extends Partial<RendererProps> {
schema: Schema;
$path: string;
env: RendererEnv;
}
/**
* 替换`classNameParam`参数对应的元素为slots body里配置的schema
*/
export type RenderSlotBodyType = (classNameParam: string | string[], schemaRegion: string, restParams?: {
data?: Record<string, any>;
props?: Record<string, any>;
defaultSchema?: SchemaCollection;
children?: ReactNode | (() => ReactNode);
}) => ReactNode;