UNPKG

react-repl-plus

Version:

React component for editing React components, it is similar to vue repl

83 lines (72 loc) 2.22 kB
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 { }