import { QueryList, TemplateRef, EventEmitter, ChangeDetectorRef } from "@angular/core"; import { MonacoCodeEditorComponent } from "../code-editor.component"; import { IClass, IMethod, ChangeInfo } from "../../code-editor-core/libs/interfaces/declaration"; import { IEditorOptions, IGlobalEditorOptions } from '../monaco.interface'; import { DesignElementLocaleHandler } from "../../utils/locale"; /** 工具栏按钮配置 */ export interface ToolButtonConfig { /** 按钮的标签文本 */ label: string; /** 按钮的标题 */ title?: string; /** 是否禁用,默认不禁用 */ disabled?: boolean; /** 是否隐藏,默认不隐藏 */ hide?: boolean; /** 点击事件处理函数 */ handler?: (event: Event) => void; } export declare class IdeCodeEditorComponent { private cd; /** 是否隐藏左侧的切换按钮 */ hideSwitchButton: boolean; /** 切换到“设计器”按钮被点击 */ switchView: EventEmitter; /** 右侧按钮工具栏配置 */ toolBtnsConfig: ToolButtonConfig[]; /** 切换按钮的文本 */ switchBtnText: string; /** 切换按钮的icon图标的css类,为空则不显示图标 */ switchBtnIconClass: string; codeEditor: MonacoCodeEditorComponent; templates: QueryList; leftTemplate: TemplateRef; centerTemplate: TemplateRef; rightTemplate: TemplateRef; appendTemplate: TemplateRef; getLocaleVaue: typeof DesignElementLocaleHandler.getValue; constructor(cd: ChangeDetectorRef); ngAfterContentInit(): void; /** * 打开文件 * @param path - 文件路径 * @param content - 文件内容 */ open(path: string, content?: string): Promise; /** * 类新增方法片段 * @param path 文件路径 * @param method 方法结构描述 * @param _class 类名,为空则默认第一个类 */ addMethod(path: string, method: IMethod, _class?: string): Promise; /** * 获取文件解析结果 * @param path - 文件路径 * @param errorRecovery - 是否忽略语法错误并继续解析 * @returns 文件内容及类结构,如果文件尚未打开则返回null */ resolve(path: string, errorRecovery?: boolean): Promise<{ content: string; hasFatalError?: boolean; classes?: IClass[]; }>; /** * 保存文件 * @remarks * 将文件的changed属性设置为false,并且记录最后一次保存的文件内容,允许撤销修改 * 如果文件尚未打开则静默失败 * @param path - 文件路径 * @param triggerChangedEvent - 是否触发内容变化事件(默认不触发,如果设置为true,则将触发Changed和OutlineChanged事件,当然,changed属性一定为false) */ save(path: string, triggerChangedEvent?: boolean): Promise; /** * 关闭文件 * @param path - 文件路径 */ close(path: string): void; /** * 监听内容变化事件 * @remarks 注意:本方法的changeInfo中不会包含类结构信息,需要类结构信息需要订阅onOutlineChanged方法 * @param fn 内容变化回调方法 */ onChanged(fn: (path: string, changeInfo: ChangeInfo) => void): Promise; /** * 监听内容变化事件(该方法是经过防抖处理的) * @param fn 内容变化回调方法 */ onOutlineChanged(fn: (path: string, changeInfo: ChangeInfo) => void): Promise; /** * 更改编辑器配置 * @param path 文件路径 * @param option 配置对象 */ updateOptions(path: string, newOptions: IEditorOptions & IGlobalEditorOptions): Promise; /** * 设置主题 * @param isDarkTheme 是否深色主题 */ setTheme(isDarkTheme: boolean): Promise; /** * 定位当前光标位置 * @param path 文件路径 * @param className 类名 * @param methodName 方法名 */ positon(path: string, className: string, methodName: string): Promise; handleSwitchBtnClick(): void; }