UNPKG

@redhare/lowcode-types

Version:

Types for Ali lowCode engine

121 lines (120 loc) 3.52 kB
import { ReactNode, ComponentType } from 'react'; import { IPublicTypeNpmInfo, IPublicModelEditor } from './shell'; export interface EditorConfig { skeleton?: SkeletonConfig; theme?: ThemeConfig; plugins?: PluginsConfig; hooks?: HooksConfig; shortCuts?: ShortCutsConfig; utils?: UtilsConfig; constants?: ConstantsConfig; lifeCycles?: LifeCyclesConfig; i18n?: I18nConfig; } export interface SkeletonConfig { config: IPublicTypeNpmInfo; props?: Record<string, unknown>; handler?: (config: EditorConfig) => EditorConfig; } export interface FusionTheme { package: string; version: string; } export interface ThemeConfig { fusion?: FusionTheme; } export interface PluginsConfig { [key: string]: PluginConfig[]; } export interface PluginConfig { pluginKey: string; type: string; props: { icon?: string; title?: string; width?: number; height?: number; visible?: boolean; disabled?: boolean; marked?: boolean; align?: 'left' | 'right' | 'top' | 'bottom'; onClick?: () => void; dialogProps?: Record<string, unknown>; balloonProps?: Record<string, unknown>; panelProps?: Record<string, unknown>; linkProps?: Record<string, unknown>; }; config?: IPublicTypeNpmInfo; pluginProps?: Record<string, unknown>; } export declare type HooksConfig = HookConfig[]; export interface HookConfig { message: string; type: 'on' | 'once'; handler: (this: IPublicModelEditor, editor: IPublicModelEditor, ...args: any[]) => void; } export declare type ShortCutsConfig = ShortCutConfig[]; export interface ShortCutConfig { keyboard: string; handler: (editor: IPublicModelEditor, ev: Event, keymaster: any) => void; } export declare type UtilsConfig = UtilConfig[]; export interface UtilConfig { name: string; type: 'npm' | 'function'; content: IPublicTypeNpmInfo | ((...args: []) => any); } export declare type ConstantsConfig = Record<string, unknown>; export interface LifeCyclesConfig { init?: (editor: IPublicModelEditor) => any; destroy?: (editor: IPublicModelEditor) => any; } export declare type LocaleType = 'zh-CN' | 'zh-TW' | 'en-US' | 'ja-JP'; export interface I18nMessages { [key: string]: string; } export interface I18nConfig { 'zh-CN'?: I18nMessages; 'zh-TW'?: I18nMessages; 'en-US'?: I18nMessages; 'ja-JP'?: I18nMessages; } export declare type I18nFunction = (key: string, params: any) => string; export interface Utils { [key: string]: (...args: any[]) => any; } export interface PluginProps { editor?: IPublicModelEditor; config: PluginConfig; [key: string]: any; } export declare type Plugin = ReactNode & { open?: () => boolean | undefined | Promise<any>; close?: () => boolean | undefined | Promise<any>; }; export declare type HOCPlugin = ReactNode & { open: () => Promise<any>; close: () => Promise<any>; }; export interface PluginSet { [key: string]: HOCPlugin; } export declare type PluginClass = ComponentType<PluginProps> & { init?: (editor: IPublicModelEditor) => void; defaultProps?: { locale?: LocaleType; messages?: I18nMessages; }; }; export interface PluginClassSet { [key: string]: PluginClass; } export interface PluginStatus { disabled?: boolean; visible?: boolean; marked?: boolean; locked?: boolean; } export interface PluginStatusSet { [key: string]: PluginStatus; }