@redhare/lowcode-types
Version:
Types for Ali lowCode engine
121 lines (120 loc) • 3.52 kB
TypeScript
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;
}