react-repl-plus
Version:
React component for editing React components, it is similar to vue repl
83 lines (72 loc) • 2.22 kB
TypeScript
import { JSX as JSX_2 } from 'react/jsx-runtime';
declare class File_2 {
filename: string;
code: string;
constructor(filename: string, code: string);
get language(): "typescript" | "javascript";
}
declare interface ImportMap {
imports?: Record<string, string | undefined>;
scopes?: Record<string, Record<string, string>>;
}
export declare const Repl: (props: ReplProps) => JSX_2.Element;
export declare interface ReplProps {
/**
* 全局数据
*/
store?: ReplStore;
/**
* 是否自动保存
* @default true
*/
autoSave?: boolean;
/**
* 主题色
* @default "light"
*/
theme?: Theme;
/**
* 布局
* @default 'horizontal'
*/
layout?: "horizontal" | "vertical";
}
export declare class ReplStore {
/**
* file system
*/
files: StoreParams["files"];
mainFile: StoreParams["mainFile"];
activeFilename: StoreParams["activeFilename"];
template: StoreParams["template"];
useTs: StoreParams["useTs"];
version: number;
private update;
constructor({ files, template, mainFile, activeFilename, builtinImportMap, useTs, }: Partial<StoreParams> | undefined, update: Subscribe);
get activeFile(): File_2;
addFile: (fileOrFilename: string | File_2) => void;
deleteFile: (filename: string) => void;
renameFile: (oldFilename: string, newFilename: string) => void;
updateFile: (code: string) => void;
setActive: (filename: string) => void;
getImportMap: () => ImportMap;
setImportMap: (map: ImportMap) => void;
serialize: () => string;
deserialize: (serializedState: string) => void;
}
declare type StoreParams = {
/** file system */
files: Record<string, File_2>;
template: {
welcomeCode: string;
templateCode: string;
};
mainFile: string;
activeFilename: string;
builtinImportMap: ImportMap;
useTs: boolean;
};
declare type Subscribe = () => void;
declare type Theme = "light" | "dark";
export declare function useStore(storeParams?: Partial<StoreParams>, serializedState?: string): ReplStore;
export { }