import { ICodeFile, ICodeEditor } from "./libs/interfaces/editor"; import { IClass, IMethod, IMarker } from "./libs/interfaces/declaration"; import { EventEmitter } from "./libs/events"; import { HookKey } from "./libs/enum"; import { FileConstructor } from "./libs/interfaces/editor"; export interface Hooks { loadMonaco(): Promise; [key: string]: any; } export declare abstract class CodeEditor implements ICodeEditor { private element; private hooks; protected _monacoPromise?: Promise; readonly monacoPromise: Promise; /** 事件订阅 */ protected events: EventEmitter; /** 获取工程目录下的文件实例列表 */ protected files: { [key: string]: ICodeFile; }; /** 返回当前工程创建文件实例的构造函数 ts类型的工程返回ts创建文件的构造函数 */ protected abstract fileConstructor(): FileConstructor; /** * 获取文件 * @param path 文件路径 */ protected getFile(path: string): ICodeFile | undefined; /** 获取已打开的文件 */ getExistFile(path: string): ICodeFile | undefined; /** * 实例化文件对象 * @param path 文件路径 * @param content 文件内容 * @param language 语法高亮类型 */ protected init(path: string, content?: string, language?: string): Promise; /** * 根据文件名后缀推断代码语言类型 * @param path 代码文件路径 * @returns 语言类型 */ private inferLanguageByPath; /** * 打开或创建文件 * @param path 路径 * @param content 内容 * @param language 语法高亮类型 */ open(path: string, content?: string, language?: string): Promise; resetContentIfFileExist(path: string, content?: string): void; show(path: string): Promise; /** * 关闭文件(取消渲染) * @param path 文件路径 * @param force 是否强制关闭 */ close(path: string, force?: boolean): Promise; /** * 类新增方法 * @param file 文件路径 * @param method 方法结构描述 * @param _class 类名 */ addMethod(file: string, method: IMethod, _class?: string): Promise; /** * 定位到某个类或者类的某个方法 * @param file 文件路径 * @param className 类名 * @param methodName 方法名 */ position(file: string, className: string, methodName?: string): void; format(path: string): Promise; /** 重新布局 */ layout(): void; /** * 事件订阅 * @param event 事件名称 * @param fn 订阅方法 */ on(event: string, fn: (...args: any[]) => void): EventEmitter; /** * 取消事件订阅 * @param event 事件名称 */ off(event: string): EventEmitter; /** * 钩子调用 * @param command 钩子名称 * @param args 参数 */ protected hook(command: HookKey, ...args: any[]): Promise; save(path: string, triggerChangedEvent: boolean): Promise; resolve(path: string, errorRecovery?: boolean): Promise<{ content: string; hasFatalError: boolean; classes?: IClass[]; }>; setDark(isDark?: boolean): Promise; error(file: string, markers: IMarker[]): Promise; localeData: any; /** * 代码编辑器 * @param _language 编程语言 * @param _project 项目名称 */ constructor(element: HTMLElement, hooks: Hooks); }