import * as vue from 'vue'; import { PropType, VNode, CSSProperties, Component, ExtractPropTypes, SetupContext, App } from 'vue'; import * as vue_jsx_runtime from 'vue/jsx-runtime'; import * as _codemirror_autocomplete from '@codemirror/autocomplete'; import { CompletionSource } from '@codemirror/autocomplete'; import { Extension, Compartment } from '@codemirror/state'; import { KeyBinding, EditorView } from '@codemirror/view'; import { LooseRequired } from '@vue/shared'; import markdownit, { Token } from 'markdown-it'; import * as xss from 'xss'; type IconName = 'bold' | 'underline' | 'italic' | 'strike-through' | 'title' | 'sub' | 'sup' | 'quote' | 'unordered-list' | 'ordered-list' | 'task' | 'code-row' | 'code' | 'link' | 'image' | 'table' | 'revoke' | 'next' | 'save' | 'prettier' | 'minimize' | 'maximize' | 'fullscreen-exit' | 'fullscreen' | 'preview-only' | 'preview' | 'preview-html' | 'catalog' | 'github' | 'mermaid' | 'formula' | 'close' | 'delete' | 'upload'; declare const mdPreviewProps: { /** * markdown content. * * @default '' */ modelValue: { type: PropType; default: string; }; /** * input回调事件 */ onChange: { type: PropType; default: undefined; }; /** * 主题,支持light和dark * * @default 'light' */ theme: { type: PropType; default: string; }; /** * 外层类名 * * @default '' */ class: { type: StringConstructor; default: string; }; /** * 预设语言名称 * * @default 'zh-CN' */ language: { type: PropType; default: string; }; /** * html变化事件 */ onHtmlChanged: { type: PropType; default: undefined; }; /** * 获取目录结构 */ onGetCatalog: { type: PropType; default: undefined; }; /** * 编辑器唯一标识 * * @default 'md-editor-v3' * @deprecated 5.x版本开始使用 id 替换 */ editorId: { type: PropType; default: undefined; }; /** * 5.x版本开始 editorId 的替换 * * @default 'md-editor-v3' */ id: { type: PropType; default: undefined; }; /** * 预览中代码是否显示行号 * * @default true */ showCodeRowNumber: { type: PropType; default: boolean; }; /** * 预览内容样式 * * @default 'default' */ previewTheme: { type: PropType; default: string; }; /** * 编辑器样式 */ style: { type: PropType; default: () => {}; }; /** * 标题的id生成方式 * * @default (text: string) => text */ mdHeadingId: { type: PropType; default: MdHeadingId; }; /** * * 不能保证文本正确的情况,在marked编译md文本后通过该方法处理 * 推荐DOMPurify、sanitize-html * * @default (text: string) => text */ sanitize: { type: PropType<(html: string) => string>; default: (html: string) => string; }; /** * 不使用该mermaid * * @default false */ noMermaid: { type: PropType; default: boolean; }; /** * 不使用katex * * @default false */ noKatex: { type: PropType; default: boolean; }; /** * 代码主题 * * @default 'atom' */ codeTheme: { type: PropType; default: string; }; /** * 复制代码格式化方法 * * @default (text) => text */ formatCopiedText: { type: PropType<(text: string) => string>; default: (text: string) => string; }; /** * 某些预览主题的代码模块背景是暗色系 * 将这个属性设置为true,会自动在该主题下的light模式下使用暗色系的代码风格 * * @default true */ codeStyleReverse: { type: PropType; default: boolean; }; /** * 需要自动调整的预览主题 * * @default ['default', 'mk-cute'] */ codeStyleReverseList: { type: PropType>; default: string[]; }; noHighlight: { type: PropType; default: boolean; }; /** * 是否关闭编辑器默认的放大缩小功能 */ noImgZoomIn: { type: PropType; default: boolean; }; /** * 自定义的图标 */ customIcon: { type: PropType; default: {}; }; sanitizeMermaid: { type: PropType<(h: string) => Promise>; default: (h: string) => Promise; }; /** * 是否开启折叠代码功能 * 不开启会使用div标签替代details标签 * * @default true */ codeFoldable: { type: PropType; default: boolean; }; /** * 触发自动折叠代码的行数阈值 * * @default 30 */ autoFoldThreshold: { type: PropType; default: number; }; /** * 内容重新挂载事件 * * 相比起onHtmlChanged,onRemount会在重新挂载后触发 */ onRemount: { type: PropType<() => void>; default: undefined; }; /** * 不使用 echarts */ noEcharts: { type: PropType; default: boolean; }; previewComponent: { type: PropType; default: undefined; }; }; declare const editorProps: { /** * input回调事件 */ onSave: { type: PropType; default: undefined; }; /** * 上传图片事件 */ onUploadImg: { type: PropType; default: undefined; }; /** * 是否页面内全屏 * * @default false */ pageFullscreen: { type: PropType; default: boolean; }; /** * 是否展开预览 * * @default true */ preview: { type: PropType; default: boolean; }; /** * 是否展开html预览 * * @default false */ htmlPreview: { type: PropType; default: boolean; }; /** * 仅预览模式,不显示toolbar和编辑框 * * @4.0.0开始移除该设置,使用组件MdPreview替换 * * @default false */ /** * 工具栏选择显示 * * @default allToolbar */ toolbars: { type: PropType>; default: string[]; }; /** * 浮动工具栏 * * @version 6.0.0 * @default [] */ floatingToolbars: { type: PropType>; default: never[]; }; /** * 工具栏选择不显示 * * @default [] */ toolbarsExclude: { type: PropType>; default: never[]; }; /** * 格式化md * * @default true */ noPrettier: { type: PropType; default: boolean; }; /** * 一个tab等于空格数 * * @default 2 */ tabWidth: { type: PropType; default: number; }; /** * 表格预设格子数 * * 也可以是[6, 4, 10, 8] * * @default [6, 4] */ tableShape: { type: PropType>; default: number[]; }; /** * 空提示 * * @default '' */ placeholder: { type: PropType; default: string; }; /** * 自定义的工具栏列表 */ defToolbars: { type: PropType; default: undefined; }; /** * 内部错误捕获 */ onError: { type: PropType; default: undefined; }; /** * 页脚列表显示顺序 */ footers: { type: PropType>; default: Footers[]; }; /** * 是否默认激活输入框和预览框同步滚动 * * @default true */ scrollAuto: { type: PropType; default: boolean; }; /** * 自定义的也叫工具组件列表 */ defFooters: { type: PropType; default: undefined; }; /** * 是否禁用上传图片 * * @default false */ noUploadImg: { type: PropType; default: boolean; }; /** * 文本区域自动获得焦点 * * @default false */ autoFocus: { type: PropType; default: boolean; }; /** * 禁用文本区域 * * @default false */ disabled: { type: PropType; default: boolean; }; /** * 文本区域为只读 * * @default false */ readOnly: { type: PropType; default: boolean; }; /** * 文本区域允许的最大字符数 */ maxLength: { type: PropType; default: undefined; }; /** * 是否启用自动识别粘贴代码类别 * 目前支持 vscode 复制的代码识别 * * @default false */ autoDetectCode: { type: PropType; default: boolean; }; /** * 输入框失去焦点时触发事件 */ onBlur: { type: PropType<(event: FocusEvent) => void>; default: undefined; }; /** * 输入框获得焦点时触发事件 */ onFocus: { type: PropType<(event: FocusEvent) => void>; default: undefined; }; /** * @codemirror/autocomplete匹配关键词的方法列表 * * 它会被像下面这样嵌入编辑器 * * import { autocompletion } from '@codemirror/autocomplete'; * autocompletion({ * override: [...completions] * }) */ completions: { type: PropType>; default: undefined; }; /** * 是否在工具栏下面显示对应的文字名称 * * @default false */ showToolbarName: { type: PropType; default: boolean; }; /** * 字符输入事件 */ onInput: { type: PropType<(event: Event) => void>; default: undefined; }; onDrop: { type: PropType<(event: DragEvent) => void>; default: undefined; }; /** * 输入框的默认宽度 * * @example '100px'/'50%' * @default '50% */ inputBoxWidth: { type: PropType; default: string; }; /** * 输入框宽度变化事件 */ oninputBoxWidthChange: { type: PropType<(width: string) => void>; default: undefined; }; /** * 替换粘贴的图片链接 * * @param t 图片链接 * @returns */ transformImgUrl: { type: PropType<(t: string) => string | Promise>; default: (t: string) => string; }; /** * 内置的目录显示的状态 * * 'fixed': 悬浮在内容上方 * 'flat': 展示在右侧 * * \>=5.3.0 * * @default 'fixed' */ catalogLayout: { type: PropType<"fixed" | "flat">; default: string; }; /** * 控制最大显示的目录层级 */ catalogMaxDepth: { type: PropType; default: undefined; }; /** * markdown content. * * @default '' */ modelValue: { type: PropType; default: string; }; /** * input回调事件 */ onChange: { type: PropType; default: undefined; }; /** * 主题,支持light和dark * * @default 'light' */ theme: { type: PropType; default: string; }; /** * 外层类名 * * @default '' */ class: { type: StringConstructor; default: string; }; /** * 预设语言名称 * * @default 'zh-CN' */ language: { type: PropType; default: string; }; /** * html变化事件 */ onHtmlChanged: { type: PropType; default: undefined; }; /** * 获取目录结构 */ onGetCatalog: { type: PropType; default: undefined; }; /** * 编辑器唯一标识 * * @default 'md-editor-v3' * @deprecated 5.x版本开始使用 id 替换 */ editorId: { type: PropType; default: undefined; }; /** * 5.x版本开始 editorId 的替换 * * @default 'md-editor-v3' */ id: { type: PropType; default: undefined; }; /** * 预览中代码是否显示行号 * * @default true */ showCodeRowNumber: { type: PropType; default: boolean; }; /** * 预览内容样式 * * @default 'default' */ previewTheme: { type: PropType; default: string; }; /** * 编辑器样式 */ style: { type: PropType; default: () => {}; }; /** * 标题的id生成方式 * * @default (text: string) => text */ mdHeadingId: { type: PropType; default: MdHeadingId; }; /** * * 不能保证文本正确的情况,在marked编译md文本后通过该方法处理 * 推荐DOMPurify、sanitize-html * * @default (text: string) => text */ sanitize: { type: PropType<(html: string) => string>; default: (html: string) => string; }; /** * 不使用该mermaid * * @default false */ noMermaid: { type: PropType; default: boolean; }; /** * 不使用katex * * @default false */ noKatex: { type: PropType; default: boolean; }; /** * 代码主题 * * @default 'atom' */ codeTheme: { type: PropType; default: string; }; /** * 复制代码格式化方法 * * @default (text) => text */ formatCopiedText: { type: PropType<(text: string) => string>; default: (text: string) => string; }; /** * 某些预览主题的代码模块背景是暗色系 * 将这个属性设置为true,会自动在该主题下的light模式下使用暗色系的代码风格 * * @default true */ codeStyleReverse: { type: PropType; default: boolean; }; /** * 需要自动调整的预览主题 * * @default ['default', 'mk-cute'] */ codeStyleReverseList: { type: PropType>; default: string[]; }; noHighlight: { type: PropType; default: boolean; }; /** * 是否关闭编辑器默认的放大缩小功能 */ noImgZoomIn: { type: PropType; default: boolean; }; /** * 自定义的图标 */ customIcon: { type: PropType; default: {}; }; sanitizeMermaid: { type: PropType<(h: string) => Promise>; default: (h: string) => Promise; }; /** * 是否开启折叠代码功能 * 不开启会使用div标签替代details标签 * * @default true */ codeFoldable: { type: PropType; default: boolean; }; /** * 触发自动折叠代码的行数阈值 * * @default 30 */ autoFoldThreshold: { type: PropType; default: number; }; /** * 内容重新挂载事件 * * 相比起onHtmlChanged,onRemount会在重新挂载后触发 */ onRemount: { type: PropType<() => void>; default: undefined; }; /** * 不使用 echarts */ noEcharts: { type: PropType; default: boolean; }; previewComponent: { type: PropType; default: undefined; }; }; type ToolDirective = 'bold' | 'underline' | 'italic' | 'strikeThrough' | 'h1' | 'h2' | 'h3' | 'h4' | 'h5' | 'h6' | 'quote' | 'unorderedList' | 'orderedList' | 'task' | 'codeRow' | 'code' | 'link' | 'image' | 'table' | 'sub' | 'sup' | 'prettier' | 'flow' | 'sequence' | 'gantt' | 'class' | 'state' | 'pie' | 'relationship' | 'journey' | 'katexInline' | 'katexBlock' | 'universal'; declare global { interface Window { hljs: any; prettier: any; prettierPlugins: any; Cropper: any; screenfull: any; mermaid: any; katex: any; echarts: any; } } interface ToolbarTips { bold?: string; underline?: string; italic?: string; strikeThrough?: string; title?: string; sub?: string; sup?: string; quote?: string; unorderedList?: string; orderedList?: string; task?: string; codeRow?: string; code?: string; link?: string; image?: string; table?: string; mermaid?: string; katex?: string; revoke?: string; next?: string; save?: string; prettier?: string; pageFullscreen?: string; fullscreen?: string; preview?: string; previewOnly?: string; htmlPreview?: string; catalog?: string; github?: string; '-'?: string; '='?: string; } interface StaticTextDefaultValue { toolbarTips?: ToolbarTips; titleItem?: { h1?: string; h2?: string; h3?: string; h4?: string; h5?: string; h6?: string; }; imgTitleItem?: { link: string; upload: string; clip2upload: string; }; linkModalTips?: { linkTitle?: string; imageTitle?: string; descLabel?: string; descLabelPlaceHolder?: string; urlLabel?: string; urlLabelPlaceHolder?: string; buttonOK?: string; }; clipModalTips?: { title?: string; buttonUpload?: string; }; copyCode?: { text?: string; successTips?: string; failTips?: string; }; mermaid?: { flow?: string; sequence?: string; gantt?: string; class?: string; state?: string; pie?: string; relationship?: string; journey?: string; }; katex?: { inline: string; block: string; }; footer?: { markdownTotal: string; scrollAuto: string; }; } interface StaticTextDefault { 'zh-CN': StaticTextDefaultValue; 'en-US': StaticTextDefaultValue; } type StaticTextDefaultKey = keyof StaticTextDefault; type ToolbarNames = keyof ToolbarTips | number; type Footers = '=' | 'markdownTotal' | 'scrollSwitch' | number; interface SettingType { pageFullscreen: boolean; fullscreen: boolean; preview: boolean; htmlPreview: boolean; previewOnly: boolean; } type Themes = 'light' | 'dark'; /** * 预览主题 * * @list ['default', 'github', 'vuepress', 'mk-cute', 'smart-blue', 'cyanosis'] */ type PreviewThemes = string; interface HeadList { text: string; level: 1 | 2 | 3 | 4 | 5 | 6; active?: boolean; line: number; currentToken?: Token; nextToken?: Token; } type MdHeadingId = (options: { text: string; level: number; index: number; currentToken?: Token; nextToken?: Token; }) => string; interface MermaidTemplate { /** * 流程图 */ flow?: string; /** * 时序图 */ sequence?: string; /** * 甘特图 */ gantt?: string; /** * 类图 */ class?: string; /** * 状态图 */ state?: string; /** * 饼图 */ pie?: string; /** * 关系图 */ relationship?: string; /** * 旅程图 */ journey?: string; } interface MarkdownItConfigPlugin { type: string; plugin: markdownit.PluginWithParams; options: any; } /** * CodeMirror扩展类型 * * ^6.0.0 */ interface CodeMirrorExtension { /** * 仅用来提供开发者分别不同扩展的依据 */ type: string; /** * CodeMirror的扩展 */ extension: Extension | ((options: any) => Extension); /** * 包裹扩展的Compartment,只有部分扩展有,提供扩展更新的能力 */ compartment?: Compartment; options?: any; } interface GlobalConfig { /** * 编辑器内部依赖库 */ editorExtensions: { highlight?: { instance?: any; js?: string; css?: CodeCss; }; prettier?: { prettierInstance?: any; parserMarkdownInstance?: any; standaloneJs?: string; parserMarkdownJs?: string; }; cropper?: { instance?: any; js?: string; css?: string; }; screenfull?: { instance?: any; js?: string; }; mermaid?: { instance?: any; js?: string; /** * 是否启用缩放功能 * * @default true */ enableZoom?: boolean; }; katex?: { instance?: any; js?: string; css?: string; }; echarts?: { instance?: any; js?: string; /** * 解析echarts代码块内容。 * * 默认实现会使用new Function以兼容官方配置中的函数写法;当内容来源不可信时, * 业务侧应通过该方法替换为更严格的解析策略。 */ parseOption?: (code: string, options: { editorId: string; element: HTMLElement; }) => any; }; }; /** * 对应editorExtensions中的cdn链接标签属性 * * 不要尝试在editorExtensionsAttrs定义script的src\onload\id,link的rel\href\id * 它们会被默认值覆盖 */ editorExtensionsAttrs: { highlight?: { js?: Partial; css?: CodeCssAttrs; }; prettier?: { standaloneJs?: Partial; parserMarkdownJs?: Partial; }; cropper?: { js?: Partial; css?: Partial; }; screenfull?: { js?: Partial; }; mermaid?: { js?: Partial; }; katex?: { js?: Partial; css?: Partial; }; echarts?: { js?: Partial; }; }; editorConfig: { /** * 自定义提示语言 */ languageUserDefined?: { [key: string]: StaticTextDefaultValue; }; /** * 自定义内部mermaid模块 */ mermaidTemplate?: MermaidTemplate; /** * 输入渲染延迟(ms) */ renderDelay?: number; /** * 内部的弹窗、下拉框等内联zIndex * @default 20000 */ zIndex?: number; }; /** * 根据主题和内部默认的codeMirror扩展自定义新的扩展 * * @params theme 当前主题 * @params innerExtensions 当前主题下的扩展列表 * [keymap, minimalSetup, markdown, EditorView.lineWrapping, EditorView.updateListener, EditorView.domEventHandlers, oneDark??oneLight] * [快捷键, 最低配置, markdown识别, 横向自动换行, 更新事件, dom监听事件, oneDark主题(暗夜模式下), oneLight(默认模式下)] * * @params keyBindings md-editor-v3内置的快捷键 */ codeMirrorExtensions: (extensions: Array, options: { editorId: string; theme: Themes; keyBindings: Array; }) => Array; /** * 自定义markdown-it核心库扩展、属性等 */ markdownItConfig: (md: markdownit, options: { editorId: string; }) => void; /** * 挑选编辑器已预设的markdownIt的扩展 * * @param plugins markdownIt的扩展,带编辑器已设定的属性 * @returns plugins */ markdownItPlugins: (plugins: Array, options: { editorId: string; }) => Array; /** * mermaid配置项 * * @param base * @returns */ mermaidConfig: (base: any) => any; /** * katex配置 * * @param baseConfig * @returns */ katexConfig: (baseConfig: any) => any; /** * echarts配置 * * @returns */ echartsConfig: (base: any) => any; } /** * 扩展编辑器内部功能,包括marked和一些内部依赖实例,如highlight、cropper等 */ type Config = (options: Partial) => void; /** * 编辑器操作潜在的错误 */ interface InnerError { name: 'Cropper' | 'fullscreen' | 'prettier' | 'overlength' | 'mermaid'; message: string; data?: any; error?: Error; } interface CodeCss { [key: string]: { light: string; dark: string; }; } interface CodeCssAttrs { [key: string]: { light: Partial; dark: Partial; }; } type UpdateSetting = (k: keyof SettingType, v?: boolean) => void; type ChangeEvent = (v: string) => void; type SaveEvent = (v: string, h: Promise) => void; type UploadImgCallBackParam = string[] | Array<{ url: string; alt: string; title: string; }>; type UploadImgCallBack = (urls: UploadImgCallBackParam) => void; type UploadImgEvent = (files: Array, callBack: UploadImgCallBack) => void; type HtmlChangedEvent = (h: string) => void; type GetCatalogEvent = (list: HeadList[]) => void; type ErrorEvent = (err: InnerError) => void; interface ExposeEvent { pageFullscreen(status: boolean): void; fullscreen(status: boolean): void; preview(status: boolean): void; previewOnly(status: boolean): void; htmlPreview(status: boolean): void; catalog(status: boolean): void; } type DOMEventHandlers = { [e in keyof HTMLElementEventMap]?: (event: HTMLElementEventMap[e], view: EditorView) => boolean | void; }; interface InsertParam { targetValue: string; select?: boolean; deviationStart?: number; deviationEnd?: number; } /** * 插入的内容的构造函数 */ type InsertContentGenerator = (selectedText: string) => InsertParam; /** * 插入内容的通用函数类型 */ type Insert = (generate: InsertContentGenerator) => void; type FocusOption = 'start' | 'end' | { rangeAnchor?: number; rangeHead?: number; cursorPos: number; }; interface ExposeParam { /** * 添加事件监听 * * @param eventName 事件名称 * @param callBack 事件回调函数 */ on(eventName: E, callBack: C): void; /** * 切换页面内全屏 * * @param status 是否页面全屏 */ togglePageFullscreen(status?: boolean): void; /** * 切换屏幕全屏 * * @param status 是否屏幕全屏 */ toggleFullscreen(status?: boolean): void; /** * 切换是否显示预览 * * @param status 是否显示预览 */ togglePreview(status?: boolean): void; togglePreviewOnly(status?: boolean): void; /** * 切换是否显示html预览 * * @param status html预览状态 */ toggleHtmlPreview(status?: boolean): void; /** * 切换是否显示目录 * * @param status 是否显示目录,不设置默认相反 */ toggleCatalog(status?: boolean): void; /** * 触发保存 */ triggerSave(): void; /** * 手动向文本框插入内容 * * @param {Function} generate 构造插入内容方法 * 构造方法提供「当前选中」的内容为入参 * 返回「待插入内容」和插入的属性 * 入参 selectedText 当前选中的内容 * * targetValue 待插入内容 * select 插入后是否自动选中内容 * deviationStart 插入后选中位置的开始偏移量 * deviationEnd 插入后选中位置的结束偏移量 * */ insert: Insert; /** * 手动聚焦 * * @param options 聚焦时光标的位置,不提供默认上次失焦时的位置 */ focus(options?: FocusOption): void; /** * 手动重新渲染 */ rerender(): void; /** * 获取当前选中的文本 */ getSelectedText(): string | undefined; /** * 重置已经存在的历史记录 */ resetHistory(): void; /** * codemirror事件 * * @param handlers */ domEventHandlers(handlers: DOMEventHandlers): void; /** * 执行内部插入命令 * * @param direct */ execCommand(direct: ToolDirective): void; /** * 获取编辑器实例 */ getEditorView(): EditorView | undefined; } type ExposePreviewParam = Pick; type EditorProps = Readonly>>>; type MdPreviewProps = Readonly>>>; type EditorEmits = Array<'onChange' | 'onSave' | 'onUploadImg' | 'onHtmlChanged' | 'onGetCatalog' | 'onError' | 'update:modelValue' | 'onBlur' | 'onFocus' | 'onInput' | 'onDrop' | 'oninputBoxWidthChange' | 'onRemount'>; type EditorContext = SetupContext; type CustomStrIcon = { copy?: string; 'collapse-tips'?: string; pin?: string; 'pin-off'?: string; check?: string; }; /** * 自定义图标的数据类型 */ type CustomIcon = { [key in IconName]?: { component: Component | VNode | string; props?: { [key: string | number | symbol]: any; }; }; } & CustomStrIcon; declare const Editor: vue.DefineComponent; default: undefined; }; onUploadImg: { type: vue.PropType; default: undefined; }; pageFullscreen: { type: vue.PropType; default: boolean; }; preview: { type: vue.PropType; default: boolean; }; htmlPreview: { type: vue.PropType; default: boolean; }; toolbars: { type: vue.PropType>; default: string[]; }; floatingToolbars: { type: vue.PropType>; default: never[]; }; toolbarsExclude: { type: vue.PropType>; default: never[]; }; noPrettier: { type: vue.PropType; default: boolean; }; tabWidth: { type: vue.PropType; default: number; }; tableShape: { type: vue.PropType>; default: number[]; }; placeholder: { type: vue.PropType; default: string; }; defToolbars: { type: vue.PropType; default: undefined; }; onError: { type: vue.PropType; default: undefined; }; footers: { type: vue.PropType>; default: Footers[]; }; scrollAuto: { type: vue.PropType; default: boolean; }; defFooters: { type: vue.PropType; default: undefined; }; noUploadImg: { type: vue.PropType; default: boolean; }; autoFocus: { type: vue.PropType; default: boolean; }; disabled: { type: vue.PropType; default: boolean; }; readOnly: { type: vue.PropType; default: boolean; }; maxLength: { type: vue.PropType; default: undefined; }; autoDetectCode: { type: vue.PropType; default: boolean; }; onBlur: { type: vue.PropType<(event: FocusEvent) => void>; default: undefined; }; onFocus: { type: vue.PropType<(event: FocusEvent) => void>; default: undefined; }; completions: { type: vue.PropType>; default: undefined; }; showToolbarName: { type: vue.PropType; default: boolean; }; onInput: { type: vue.PropType<(event: Event) => void>; default: undefined; }; onDrop: { type: vue.PropType<(event: DragEvent) => void>; default: undefined; }; inputBoxWidth: { type: vue.PropType; default: string; }; oninputBoxWidthChange: { type: vue.PropType<(width: string) => void>; default: undefined; }; transformImgUrl: { type: vue.PropType<(t: string) => string | Promise>; default: (t: string) => string; }; catalogLayout: { type: vue.PropType<"fixed" | "flat">; default: string; }; catalogMaxDepth: { type: vue.PropType; default: undefined; }; modelValue: { type: vue.PropType; default: string; }; onChange: { type: vue.PropType; default: undefined; }; theme: { type: vue.PropType; default: string; }; class: { type: StringConstructor; default: string; }; language: { type: vue.PropType; default: string; }; onHtmlChanged: { type: vue.PropType; default: undefined; }; onGetCatalog: { type: vue.PropType; default: undefined; }; editorId: { type: vue.PropType; default: undefined; }; id: { type: vue.PropType; default: undefined; }; showCodeRowNumber: { type: vue.PropType; default: boolean; }; previewTheme: { type: vue.PropType; default: string; }; style: { type: vue.PropType; default: () => {}; }; mdHeadingId: { type: vue.PropType; default: MdHeadingId; }; sanitize: { type: vue.PropType<(html: string) => string>; default: (html: string) => string; }; noMermaid: { type: vue.PropType; default: boolean; }; noKatex: { type: vue.PropType; default: boolean; }; codeTheme: { type: vue.PropType; default: string; }; formatCopiedText: { type: vue.PropType<(text: string) => string>; default: (text: string) => string; }; codeStyleReverse: { type: vue.PropType; default: boolean; }; codeStyleReverseList: { type: vue.PropType>; default: string[]; }; noHighlight: { type: vue.PropType; default: boolean; }; noImgZoomIn: { type: vue.PropType; default: boolean; }; customIcon: { type: vue.PropType; default: {}; }; sanitizeMermaid: { type: vue.PropType<(h: string) => Promise>; default: (h: string) => Promise; }; codeFoldable: { type: vue.PropType; default: boolean; }; autoFoldThreshold: { type: vue.PropType; default: number; }; onRemount: { type: vue.PropType<() => void>; default: undefined; }; noEcharts: { type: vue.PropType; default: boolean; }; previewComponent: { type: vue.PropType; default: undefined; }; }>, () => vue_jsx_runtime.JSX.Element, {}, {}, {}, vue.ComponentOptionsMixin, vue.ComponentOptionsMixin, EditorEmits, "onChange" | "onSave" | "onUploadImg" | "onHtmlChanged" | "onGetCatalog" | "onError" | "update:modelValue" | "onBlur" | "onFocus" | "onInput" | "onDrop" | "oninputBoxWidthChange" | "onRemount", vue.PublicProps, Readonly; default: undefined; }; onUploadImg: { type: vue.PropType; default: undefined; }; pageFullscreen: { type: vue.PropType; default: boolean; }; preview: { type: vue.PropType; default: boolean; }; htmlPreview: { type: vue.PropType; default: boolean; }; toolbars: { type: vue.PropType>; default: string[]; }; floatingToolbars: { type: vue.PropType>; default: never[]; }; toolbarsExclude: { type: vue.PropType>; default: never[]; }; noPrettier: { type: vue.PropType; default: boolean; }; tabWidth: { type: vue.PropType; default: number; }; tableShape: { type: vue.PropType>; default: number[]; }; placeholder: { type: vue.PropType; default: string; }; defToolbars: { type: vue.PropType; default: undefined; }; onError: { type: vue.PropType; default: undefined; }; footers: { type: vue.PropType>; default: Footers[]; }; scrollAuto: { type: vue.PropType; default: boolean; }; defFooters: { type: vue.PropType; default: undefined; }; noUploadImg: { type: vue.PropType; default: boolean; }; autoFocus: { type: vue.PropType; default: boolean; }; disabled: { type: vue.PropType; default: boolean; }; readOnly: { type: vue.PropType; default: boolean; }; maxLength: { type: vue.PropType; default: undefined; }; autoDetectCode: { type: vue.PropType; default: boolean; }; onBlur: { type: vue.PropType<(event: FocusEvent) => void>; default: undefined; }; onFocus: { type: vue.PropType<(event: FocusEvent) => void>; default: undefined; }; completions: { type: vue.PropType>; default: undefined; }; showToolbarName: { type: vue.PropType; default: boolean; }; onInput: { type: vue.PropType<(event: Event) => void>; default: undefined; }; onDrop: { type: vue.PropType<(event: DragEvent) => void>; default: undefined; }; inputBoxWidth: { type: vue.PropType; default: string; }; oninputBoxWidthChange: { type: vue.PropType<(width: string) => void>; default: undefined; }; transformImgUrl: { type: vue.PropType<(t: string) => string | Promise>; default: (t: string) => string; }; catalogLayout: { type: vue.PropType<"fixed" | "flat">; default: string; }; catalogMaxDepth: { type: vue.PropType; default: undefined; }; modelValue: { type: vue.PropType; default: string; }; onChange: { type: vue.PropType; default: undefined; }; theme: { type: vue.PropType; default: string; }; class: { type: StringConstructor; default: string; }; language: { type: vue.PropType; default: string; }; onHtmlChanged: { type: vue.PropType; default: undefined; }; onGetCatalog: { type: vue.PropType; default: undefined; }; editorId: { type: vue.PropType; default: undefined; }; id: { type: vue.PropType; default: undefined; }; showCodeRowNumber: { type: vue.PropType; default: boolean; }; previewTheme: { type: vue.PropType; default: string; }; style: { type: vue.PropType; default: () => {}; }; mdHeadingId: { type: vue.PropType; default: MdHeadingId; }; sanitize: { type: vue.PropType<(html: string) => string>; default: (html: string) => string; }; noMermaid: { type: vue.PropType; default: boolean; }; noKatex: { type: vue.PropType; default: boolean; }; codeTheme: { type: vue.PropType; default: string; }; formatCopiedText: { type: vue.PropType<(text: string) => string>; default: (text: string) => string; }; codeStyleReverse: { type: vue.PropType; default: boolean; }; codeStyleReverseList: { type: vue.PropType>; default: string[]; }; noHighlight: { type: vue.PropType; default: boolean; }; noImgZoomIn: { type: vue.PropType; default: boolean; }; customIcon: { type: vue.PropType; default: {}; }; sanitizeMermaid: { type: vue.PropType<(h: string) => Promise>; default: (h: string) => Promise; }; codeFoldable: { type: vue.PropType; default: boolean; }; autoFoldThreshold: { type: vue.PropType; default: number; }; onRemount: { type: vue.PropType<() => void>; default: undefined; }; noEcharts: { type: vue.PropType; default: boolean; }; previewComponent: { type: vue.PropType; default: undefined; }; }>> & Readonly<{ onOnChange?: ((...args: any[]) => any) | undefined; onOnSave?: ((...args: any[]) => any) | undefined; onOnUploadImg?: ((...args: any[]) => any) | undefined; onOnHtmlChanged?: ((...args: any[]) => any) | undefined; onOnGetCatalog?: ((...args: any[]) => any) | undefined; onOnError?: ((...args: any[]) => any) | undefined; "onUpdate:modelValue"?: ((...args: any[]) => any) | undefined; onOnBlur?: ((...args: any[]) => any) | undefined; onOnFocus?: ((...args: any[]) => any) | undefined; onOnInput?: ((...args: any[]) => any) | undefined; onOnDrop?: ((...args: any[]) => any) | undefined; onOninputBoxWidthChange?: ((...args: any[]) => any) | undefined; onOnRemount?: ((...args: any[]) => any) | undefined; }>, { language: string; theme: Themes; previewTheme: string; codeTheme: string; disabled: boolean; showToolbarName: boolean; onChange: ChangeEvent; class: string; style: string | vue.CSSProperties; preview: boolean; pageFullscreen: boolean; htmlPreview: boolean; onSave: SaveEvent; onUploadImg: UploadImgEvent; onHtmlChanged: HtmlChangedEvent; onGetCatalog: GetCatalogEvent; onError: ErrorEvent; onBlur: (event: FocusEvent) => void; onFocus: (event: FocusEvent) => void; onInput: (event: Event) => void; onDrop: (event: DragEvent) => void; oninputBoxWidthChange: (width: string) => void; onRemount: () => void; toolbars: ToolbarNames[]; floatingToolbars: ToolbarNames[]; toolbarsExclude: ToolbarNames[]; noPrettier: boolean; tabWidth: number; tableShape: number[]; placeholder: string; defToolbars: string | vue.VNode; footers: Footers[]; scrollAuto: boolean; defFooters: string | vue.VNode; noUploadImg: boolean; autoFocus: boolean; readOnly: boolean; maxLength: number; autoDetectCode: boolean; completions: _codemirror_autocomplete.CompletionSource[]; inputBoxWidth: string; transformImgUrl: (t: string) => string | Promise; catalogLayout: "flat" | "fixed"; catalogMaxDepth: number; modelValue: string; editorId: string; id: string; showCodeRowNumber: boolean; mdHeadingId: MdHeadingId; sanitize: (html: string) => string; noMermaid: boolean; noKatex: boolean; formatCopiedText: (text: string) => string; codeStyleReverse: boolean; codeStyleReverseList: string[]; noHighlight: boolean; noImgZoomIn: boolean; customIcon: CustomIcon; sanitizeMermaid: (h: string) => Promise; codeFoldable: boolean; autoFoldThreshold: number; noEcharts: boolean; previewComponent: vue.Component; }, {}, {}, {}, string, vue.ComponentProvideOptions, true, {}, any>; declare const _default$c: typeof Editor & { install: (app: App) => App; }; declare const _default$b: vue.DefineComponent; default: string; }; /** * 展示在工具栏的内容,通常是个图标 * * @deprecated 使用默认插槽代替 */ trigger: { type: PropType; default: undefined; }; onClick: { type: PropType<(e: MouseEvent) => void>; default: undefined; }; /** * ==没有意义,仅用于规避克隆组件自动嵌入insert方法时,传入的是该组件而产生的waring */ insert: { type: PropType<() => void>; default: undefined; }; language: { type: PropType; default: undefined; }; theme: { type: PropType; default: undefined; }; previewTheme: { type: PropType; default: undefined; }; codeTheme: { type: PropType; default: undefined; }; disabled: { type: PropType; default: undefined; }; showToolbarName: { type: PropType; default: undefined; }; }>, () => vue_jsx_runtime.JSX.Element, {}, {}, {}, vue.ComponentOptionsMixin, vue.ComponentOptionsMixin, "onClick"[], "onClick", vue.PublicProps, Readonly; default: string; }; /** * 展示在工具栏的内容,通常是个图标 * * @deprecated 使用默认插槽代替 */ trigger: { type: PropType; default: undefined; }; onClick: { type: PropType<(e: MouseEvent) => void>; default: undefined; }; /** * ==没有意义,仅用于规避克隆组件自动嵌入insert方法时,传入的是该组件而产生的waring */ insert: { type: PropType<() => void>; default: undefined; }; language: { type: PropType; default: undefined; }; theme: { type: PropType; default: undefined; }; previewTheme: { type: PropType; default: undefined; }; codeTheme: { type: PropType; default: undefined; }; disabled: { type: PropType; default: undefined; }; showToolbarName: { type: PropType; default: undefined; }; }>> & Readonly<{ onOnClick?: ((...args: any[]) => any) | undefined; }>, { onClick: (e: MouseEvent) => void; title: string; trigger: string | VNode; insert: () => void; language: string; theme: Themes; previewTheme: string; codeTheme: string; disabled: boolean; showToolbarName: boolean; }, {}, {}, {}, string, vue.ComponentProvideOptions, true, {}, any>; declare const _default$a: typeof _default$b & { install: (app: App) => App; }; declare const _default$9: vue.DefineComponent; default: string; }; visible: { type: PropType; default: undefined; }; /** * 展示在工具栏的内容,通常是个图标 * * @deprecated 使用默认插槽代替 */ trigger: { type: PropType; default: undefined; }; onChange: { type: PropType<(visible: boolean) => void>; default: undefined; }; overlay: { type: PropType; default: undefined; }; /** * ==没有意义,仅用于规避克隆组件自动嵌入insert方法时,传入的是该组件而产生的waring */ insert: { type: PropType<() => void>; default: undefined; }; language: { type: PropType; default: undefined; }; theme: { type: PropType; default: undefined; }; previewTheme: { type: PropType; default: undefined; }; codeTheme: { type: PropType; default: undefined; }; disabled: { type: PropType; default: undefined; }; showToolbarName: { type: PropType; default: undefined; }; }>, () => vue_jsx_runtime.JSX.Element, {}, {}, {}, vue.ComponentOptionsMixin, vue.ComponentOptionsMixin, "onChange"[], "onChange", vue.PublicProps, Readonly; default: string; }; visible: { type: PropType; default: undefined; }; /** * 展示在工具栏的内容,通常是个图标 * * @deprecated 使用默认插槽代替 */ trigger: { type: PropType; default: undefined; }; onChange: { type: PropType<(visible: boolean) => void>; default: undefined; }; overlay: { type: PropType; default: undefined; }; /** * ==没有意义,仅用于规避克隆组件自动嵌入insert方法时,传入的是该组件而产生的waring */ insert: { type: PropType<() => void>; default: undefined; }; language: { type: PropType; default: undefined; }; theme: { type: PropType; default: undefined; }; previewTheme: { type: PropType; default: undefined; }; codeTheme: { type: PropType; default: undefined; }; disabled: { type: PropType; default: undefined; }; showToolbarName: { type: PropType; default: undefined; }; }>> & Readonly<{ onOnChange?: ((...args: any[]) => any) | undefined; }>, { title: string; trigger: string | VNode; insert: () => void; language: string; theme: Themes; previewTheme: string; codeTheme: string; disabled: boolean; showToolbarName: boolean; onChange: (visible: boolean) => void; visible: boolean; overlay: string | VNode; }, {}, {}, {}, string, vue.ComponentProvideOptions, true, {}, any>; declare const _default$8: typeof _default$9 & { install: (app: App) => App; }; declare const _default$7: vue.DefineComponent; default: string; }; modalTitle: { type: PropType; default: string; }; visible: { type: PropType; default: undefined; }; width: { type: PropType; default: string; }; height: { type: PropType; default: string; }; trigger: { type: PropType; default: undefined; }; onClick: { type: PropType<() => void>; default: undefined; }; onClose: { type: PropType<() => void>; default: undefined; }; /** * 显示全屏按钮 */ showAdjust: { type: PropType; default: boolean; }; isFullscreen: { type: PropType; default: boolean; }; onAdjust: { type: PropType<(val: boolean) => void>; default: undefined; }; class: { type: PropType; default: undefined; }; style: { type: PropType; default: undefined; }; showMask: { type: PropType; default: boolean; }; /** * ==没有意义,仅用于规避克隆组件自动嵌入insert方法时,传入的是该组件而产生的waring */ insert: { type: PropType<() => void>; default: undefined; }; language: { type: PropType; default: undefined; }; theme: { type: PropType; default: undefined; }; previewTheme: { type: PropType; default: undefined; }; codeTheme: { type: PropType; default: undefined; }; disabled: { type: PropType; default: undefined; }; showToolbarName: { type: PropType; default: undefined; }; }>, () => vue_jsx_runtime.JSX.Element, {}, {}, {}, vue.ComponentOptionsMixin, vue.ComponentOptionsMixin, ("onClick" | "onClose" | "onAdjust")[], "onClick" | "onClose" | "onAdjust", vue.PublicProps, Readonly; default: string; }; modalTitle: { type: PropType; default: string; }; visible: { type: PropType; default: undefined; }; width: { type: PropType; default: string; }; height: { type: PropType; default: string; }; trigger: { type: PropType; default: undefined; }; onClick: { type: PropType<() => void>; default: undefined; }; onClose: { type: PropType<() => void>; default: undefined; }; /** * 显示全屏按钮 */ showAdjust: { type: PropType; default: boolean; }; isFullscreen: { type: PropType; default: boolean; }; onAdjust: { type: PropType<(val: boolean) => void>; default: undefined; }; class: { type: PropType; default: undefined; }; style: { type: PropType; default: undefined; }; showMask: { type: PropType; default: boolean; }; /** * ==没有意义,仅用于规避克隆组件自动嵌入insert方法时,传入的是该组件而产生的waring */ insert: { type: PropType<() => void>; default: undefined; }; language: { type: PropType; default: undefined; }; theme: { type: PropType; default: undefined; }; previewTheme: { type: PropType; default: undefined; }; codeTheme: { type: PropType; default: undefined; }; disabled: { type: PropType; default: undefined; }; showToolbarName: { type: PropType; default: undefined; }; }>> & Readonly<{ onOnClick?: ((...args: any[]) => any) | undefined; onOnClose?: ((...args: any[]) => any) | undefined; onOnAdjust?: ((...args: any[]) => any) | undefined; }>, { onClick: () => void; title: string; trigger: string | VNode; insert: () => void; language: string; theme: Themes; previewTheme: string; codeTheme: string; disabled: boolean; showToolbarName: boolean; visible: boolean; onClose: () => void; onAdjust: (val: boolean) => void; modalTitle: string | VNode; width: string; height: string; showAdjust: boolean; isFullscreen: boolean; class: string; style: string | CSSProperties; showMask: boolean; }, {}, {}, {}, string, vue.ComponentProvideOptions, true, {}, any>; declare const _default$6: typeof _default$7 & { install: (app: App) => App; }; declare const _default$5: vue.DefineComponent; default: string; }; visible: { type: PropType; default: boolean; }; width: { type: PropType; default: string; }; height: { type: PropType; default: string; }; onClose: { type: PropType<() => void>; }; showAdjust: { type: PropType; default: boolean; }; isFullscreen: { type: PropType; default: boolean; }; onAdjust: { type: PropType<(val: boolean) => void>; default: () => void; }; class: { type: PropType; default: undefined; }; style: { type: PropType; default: () => {}; }; showMask: { type: PropType; default: boolean; }; }>, () => "" | vue_jsx_runtime.JSX.Element, {}, {}, {}, vue.ComponentOptionsMixin, vue.ComponentOptionsMixin, "onClose"[], "onClose", vue.PublicProps, Readonly; default: string; }; visible: { type: PropType; default: boolean; }; width: { type: PropType; default: string; }; height: { type: PropType; default: string; }; onClose: { type: PropType<() => void>; }; showAdjust: { type: PropType; default: boolean; }; isFullscreen: { type: PropType; default: boolean; }; onAdjust: { type: PropType<(val: boolean) => void>; default: () => void; }; class: { type: PropType; default: undefined; }; style: { type: PropType; default: () => {}; }; showMask: { type: PropType; default: boolean; }; }>> & Readonly<{ onOnClose?: ((...args: any[]) => any) | undefined; }>, { title: string | VNode | VNode[]; visible: boolean; onAdjust: (val: boolean) => void; width: string; height: string; showAdjust: boolean; isFullscreen: boolean; class: string; style: string | CSSProperties; showMask: boolean; }, {}, {}, {}, string, vue.ComponentProvideOptions, true, {}, any>; declare const _default$4: typeof _default$5 & { install: (app: App) => App; }; declare const StrIcon: (name: keyof CustomStrIcon, customIcon: CustomIcon) => string; declare const _default$3: vue.DefineComponent void>; default: undefined; }; /** * ==没有意义,仅用于规避克隆组件自动嵌入insert方法时,传入的是该组件而产生的waring */ language: { type: PropType; default: undefined; }; theme: { type: PropType; default: undefined; }; disabled: { type: PropType; default: undefined; }; }>, () => vue_jsx_runtime.JSX.Element, {}, {}, {}, vue.ComponentOptionsMixin, vue.ComponentOptionsMixin, "onClick"[], "onClick", vue.PublicProps, Readonly void>; default: undefined; }; /** * ==没有意义,仅用于规避克隆组件自动嵌入insert方法时,传入的是该组件而产生的waring */ language: { type: PropType; default: undefined; }; theme: { type: PropType; default: undefined; }; disabled: { type: PropType; default: undefined; }; }>> & Readonly<{ onOnClick?: ((...args: any[]) => any) | undefined; }>, { onClick: (e: MouseEvent) => void; language: string; theme: Themes; disabled: boolean; }, {}, {}, {}, string, vue.ComponentProvideOptions, true, {}, any>; declare const _default$2: typeof _default$3 & { install: (app: App) => App; }; declare const MdPreview: vue.DefineComponent<{ readonly language: string; readonly theme: Themes; readonly previewTheme: string; readonly codeTheme: string; readonly class: string; readonly style: string | vue.CSSProperties; readonly modelValue: string; readonly showCodeRowNumber: boolean; readonly mdHeadingId: MdHeadingId; readonly sanitize: (html: string) => string; readonly noMermaid: boolean; readonly noKatex: boolean; readonly formatCopiedText: (text: string) => string; readonly codeStyleReverse: boolean; readonly codeStyleReverseList: string[]; readonly noHighlight: boolean; readonly noImgZoomIn: boolean; readonly customIcon: { title?: { component: vue.Component | vue.VNode | string; props?: { [key: string | number | symbol]: any; }; } | undefined; bold?: { component: vue.Component | vue.VNode | string; props?: { [key: string | number | symbol]: any; }; } | undefined; underline?: { component: vue.Component | vue.VNode | string; props?: { [key: string | number | symbol]: any; }; } | undefined; italic?: { component: vue.Component | vue.VNode | string; props?: { [key: string | number | symbol]: any; }; } | undefined; "strike-through"?: { component: vue.Component | vue.VNode | string; props?: { [key: string | number | symbol]: any; }; } | undefined; sub?: { component: vue.Component | vue.VNode | string; props?: { [key: string | number | symbol]: any; }; } | undefined; sup?: { component: vue.Component | vue.VNode | string; props?: { [key: string | number | symbol]: any; }; } | undefined; quote?: { component: vue.Component | vue.VNode | string; props?: { [key: string | number | symbol]: any; }; } | undefined; "unordered-list"?: { component: vue.Component | vue.VNode | string; props?: { [key: string | number | symbol]: any; }; } | undefined; "ordered-list"?: { component: vue.Component | vue.VNode | string; props?: { [key: string | number | symbol]: any; }; } | undefined; task?: { component: vue.Component | vue.VNode | string; props?: { [key: string | number | symbol]: any; }; } | undefined; "code-row"?: { component: vue.Component | vue.VNode | string; props?: { [key: string | number | symbol]: any; }; } | undefined; code?: { component: vue.Component | vue.VNode | string; props?: { [key: string | number | symbol]: any; }; } | undefined; link?: { component: vue.Component | vue.VNode | string; props?: { [key: string | number | symbol]: any; }; } | undefined; image?: { component: vue.Component | vue.VNode | string; props?: { [key: string | number | symbol]: any; }; } | undefined; table?: { component: vue.Component | vue.VNode | string; props?: { [key: string | number | symbol]: any; }; } | undefined; revoke?: { component: vue.Component | vue.VNode | string; props?: { [key: string | number | symbol]: any; }; } | undefined; next?: { component: vue.Component | vue.VNode | string; props?: { [key: string | number | symbol]: any; }; } | undefined; save?: { component: vue.Component | vue.VNode | string; props?: { [key: string | number | symbol]: any; }; } | undefined; prettier?: { component: vue.Component | vue.VNode | string; props?: { [key: string | number | symbol]: any; }; } | undefined; minimize?: { component: vue.Component | vue.VNode | string; props?: { [key: string | number | symbol]: any; }; } | undefined; maximize?: { component: vue.Component | vue.VNode | string; props?: { [key: string | number | symbol]: any; }; } | undefined; "fullscreen-exit"?: { component: vue.Component | vue.VNode | string; props?: { [key: string | number | symbol]: any; }; } | undefined; fullscreen?: { component: vue.Component | vue.VNode | string; props?: { [key: string | number | symbol]: any; }; } | undefined; "preview-only"?: { component: vue.Component | vue.VNode | string; props?: { [key: string | number | symbol]: any; }; } | undefined; preview?: { component: vue.Component | vue.VNode | string; props?: { [key: string | number | symbol]: any; }; } | undefined; "preview-html"?: { component: vue.Component | vue.VNode | string; props?: { [key: string | number | symbol]: any; }; } | undefined; catalog?: { component: vue.Component | vue.VNode | string; props?: { [key: string | number | symbol]: any; }; } | undefined; github?: { component: vue.Component | vue.VNode | string; props?: { [key: string | number | symbol]: any; }; } | undefined; mermaid?: { component: vue.Component | vue.VNode | string; props?: { [key: string | number | symbol]: any; }; } | undefined; formula?: { component: vue.Component | vue.VNode | string; props?: { [key: string | number | symbol]: any; }; } | undefined; close?: { component: vue.Component | vue.VNode | string; props?: { [key: string | number | symbol]: any; }; } | undefined; delete?: { component: vue.Component | vue.VNode | string; props?: { [key: string | number | symbol]: any; }; } | undefined; upload?: { component: vue.Component | vue.VNode | string; props?: { [key: string | number | symbol]: any; }; } | undefined; } & CustomStrIcon; readonly sanitizeMermaid: (h: string) => Promise; readonly codeFoldable: boolean; readonly autoFoldThreshold: number; readonly noEcharts: boolean; readonly onChange: ChangeEvent | undefined; readonly onHtmlChanged: HtmlChangedEvent | undefined; readonly onGetCatalog: GetCatalogEvent | undefined; readonly onRemount: (() => void) | undefined; readonly editorId: string | undefined; readonly id: string | undefined; readonly previewComponent: vue.Component | undefined; }, () => vue_jsx_runtime.JSX.Element, {}, {}, {}, vue.ComponentOptionsMixin, vue.ComponentOptionsMixin, EditorEmits, "onChange" | "onSave" | "onUploadImg" | "onHtmlChanged" | "onGetCatalog" | "onError" | "update:modelValue" | "onBlur" | "onFocus" | "onInput" | "onDrop" | "oninputBoxWidthChange" | "onRemount", vue.PublicProps, Readonly<{ readonly language: string; readonly theme: Themes; readonly previewTheme: string; readonly codeTheme: string; readonly class: string; readonly style: string | vue.CSSProperties; readonly modelValue: string; readonly showCodeRowNumber: boolean; readonly mdHeadingId: MdHeadingId; readonly sanitize: (html: string) => string; readonly noMermaid: boolean; readonly noKatex: boolean; readonly formatCopiedText: (text: string) => string; readonly codeStyleReverse: boolean; readonly codeStyleReverseList: string[]; readonly noHighlight: boolean; readonly noImgZoomIn: boolean; readonly customIcon: { title?: { component: vue.Component | vue.VNode | string; props?: { [key: string | number | symbol]: any; }; } | undefined; bold?: { component: vue.Component | vue.VNode | string; props?: { [key: string | number | symbol]: any; }; } | undefined; underline?: { component: vue.Component | vue.VNode | string; props?: { [key: string | number | symbol]: any; }; } | undefined; italic?: { component: vue.Component | vue.VNode | string; props?: { [key: string | number | symbol]: any; }; } | undefined; "strike-through"?: { component: vue.Component | vue.VNode | string; props?: { [key: string | number | symbol]: any; }; } | undefined; sub?: { component: vue.Component | vue.VNode | string; props?: { [key: string | number | symbol]: any; }; } | undefined; sup?: { component: vue.Component | vue.VNode | string; props?: { [key: string | number | symbol]: any; }; } | undefined; quote?: { component: vue.Component | vue.VNode | string; props?: { [key: string | number | symbol]: any; }; } | undefined; "unordered-list"?: { component: vue.Component | vue.VNode | string; props?: { [key: string | number | symbol]: any; }; } | undefined; "ordered-list"?: { component: vue.Component | vue.VNode | string; props?: { [key: string | number | symbol]: any; }; } | undefined; task?: { component: vue.Component | vue.VNode | string; props?: { [key: string | number | symbol]: any; }; } | undefined; "code-row"?: { component: vue.Component | vue.VNode | string; props?: { [key: string | number | symbol]: any; }; } | undefined; code?: { component: vue.Component | vue.VNode | string; props?: { [key: string | number | symbol]: any; }; } | undefined; link?: { component: vue.Component | vue.VNode | string; props?: { [key: string | number | symbol]: any; }; } | undefined; image?: { component: vue.Component | vue.VNode | string; props?: { [key: string | number | symbol]: any; }; } | undefined; table?: { component: vue.Component | vue.VNode | string; props?: { [key: string | number | symbol]: any; }; } | undefined; revoke?: { component: vue.Component | vue.VNode | string; props?: { [key: string | number | symbol]: any; }; } | undefined; next?: { component: vue.Component | vue.VNode | string; props?: { [key: string | number | symbol]: any; }; } | undefined; save?: { component: vue.Component | vue.VNode | string; props?: { [key: string | number | symbol]: any; }; } | undefined; prettier?: { component: vue.Component | vue.VNode | string; props?: { [key: string | number | symbol]: any; }; } | undefined; minimize?: { component: vue.Component | vue.VNode | string; props?: { [key: string | number | symbol]: any; }; } | undefined; maximize?: { component: vue.Component | vue.VNode | string; props?: { [key: string | number | symbol]: any; }; } | undefined; "fullscreen-exit"?: { component: vue.Component | vue.VNode | string; props?: { [key: string | number | symbol]: any; }; } | undefined; fullscreen?: { component: vue.Component | vue.VNode | string; props?: { [key: string | number | symbol]: any; }; } | undefined; "preview-only"?: { component: vue.Component | vue.VNode | string; props?: { [key: string | number | symbol]: any; }; } | undefined; preview?: { component: vue.Component | vue.VNode | string; props?: { [key: string | number | symbol]: any; }; } | undefined; "preview-html"?: { component: vue.Component | vue.VNode | string; props?: { [key: string | number | symbol]: any; }; } | undefined; catalog?: { component: vue.Component | vue.VNode | string; props?: { [key: string | number | symbol]: any; }; } | undefined; github?: { component: vue.Component | vue.VNode | string; props?: { [key: string | number | symbol]: any; }; } | undefined; mermaid?: { component: vue.Component | vue.VNode | string; props?: { [key: string | number | symbol]: any; }; } | undefined; formula?: { component: vue.Component | vue.VNode | string; props?: { [key: string | number | symbol]: any; }; } | undefined; close?: { component: vue.Component | vue.VNode | string; props?: { [key: string | number | symbol]: any; }; } | undefined; delete?: { component: vue.Component | vue.VNode | string; props?: { [key: string | number | symbol]: any; }; } | undefined; upload?: { component: vue.Component | vue.VNode | string; props?: { [key: string | number | symbol]: any; }; } | undefined; } & CustomStrIcon; readonly sanitizeMermaid: (h: string) => Promise; readonly codeFoldable: boolean; readonly autoFoldThreshold: number; readonly noEcharts: boolean; readonly onChange: ChangeEvent | undefined; readonly onHtmlChanged: HtmlChangedEvent | undefined; readonly onGetCatalog: GetCatalogEvent | undefined; readonly onRemount: (() => void) | undefined; readonly editorId: string | undefined; readonly id: string | undefined; readonly previewComponent: vue.Component | undefined; }> & Readonly<{ onOnChange?: ((...args: any[]) => any) | undefined; onOnSave?: ((...args: any[]) => any) | undefined; onOnUploadImg?: ((...args: any[]) => any) | undefined; onOnHtmlChanged?: ((...args: any[]) => any) | undefined; onOnGetCatalog?: ((...args: any[]) => any) | undefined; onOnError?: ((...args: any[]) => any) | undefined; "onUpdate:modelValue"?: ((...args: any[]) => any) | undefined; onOnBlur?: ((...args: any[]) => any) | undefined; onOnFocus?: ((...args: any[]) => any) | undefined; onOnInput?: ((...args: any[]) => any) | undefined; onOnDrop?: ((...args: any[]) => any) | undefined; onOninputBoxWidthChange?: ((...args: any[]) => any) | undefined; onOnRemount?: ((...args: any[]) => any) | undefined; }>, { language: string; theme: Themes; previewTheme: string; codeTheme: string; onChange: ChangeEvent; class: string; style: string | vue.CSSProperties; onHtmlChanged: HtmlChangedEvent; onGetCatalog: GetCatalogEvent; onRemount: () => void; modelValue: string; editorId: string; id: string; showCodeRowNumber: boolean; mdHeadingId: MdHeadingId; sanitize: (html: string) => string; noMermaid: boolean; noKatex: boolean; formatCopiedText: (text: string) => string; codeStyleReverse: boolean; codeStyleReverseList: string[]; noHighlight: boolean; noImgZoomIn: boolean; customIcon: CustomIcon; sanitizeMermaid: (h: string) => Promise; codeFoldable: boolean; autoFoldThreshold: number; noEcharts: boolean; previewComponent: vue.Component; }, {}, {}, {}, string, vue.ComponentProvideOptions, true, {}, any>; declare const _default$1: typeof MdPreview & { install: (app: App) => App; }; interface TocItem extends HeadList { index: number; children?: Array; } declare const MdCatalog: vue.DefineComponent; default: undefined; }; class: { type: StringConstructor; default: string; }; mdHeadingId: { type: PropType; default: MdHeadingId; }; /** * 指定滚动的容器,选择器需带上对应的符号,默认预览框 * 元素必须定位!!!!!! * * 默认:#md-editor-preview-wrapper */ scrollElement: { type: PropType; default: undefined; }; theme: { type: PropType; default: string; }; /** * 高亮标题相对滚动容器顶部偏移量,即距离该值时,高亮当前目录菜单项 * * 默认:20px */ offsetTop: { type: PropType; default: number; }; /** * 滚动区域的固定顶部高度 * * 默认:0 */ scrollElementOffsetTop: { type: PropType; default: number; }; onClick: { type: PropType<(e: MouseEvent, t: TocItem) => void>; default: undefined; }; onActive: { type: PropType<(heading: HeadList | undefined, activeElement: HTMLDivElement) => void>; default: undefined; }; /** * 滚动容器是否在web component中,默认不在 * * 在其中的话通过document查询不到 */ isScrollElementInShadow: { type: PropType; default: boolean; }; /** * 设置与哪个区域同步,默认与内容区域同步 * * >= v5.3.0 */ syncWith: { type: PropType<"editor" | "preview">; default: string; }; /** * 控制最大显示的目录层级 */ catalogMaxDepth: { type: PropType; default: undefined; }; }>, () => vue_jsx_runtime.JSX.Element, {}, {}, {}, vue.ComponentOptionsMixin, vue.ComponentOptionsMixin, ("onClick" | "onActive")[], "onClick" | "onActive", vue.PublicProps, Readonly; default: undefined; }; class: { type: StringConstructor; default: string; }; mdHeadingId: { type: PropType; default: MdHeadingId; }; /** * 指定滚动的容器,选择器需带上对应的符号,默认预览框 * 元素必须定位!!!!!! * * 默认:#md-editor-preview-wrapper */ scrollElement: { type: PropType; default: undefined; }; theme: { type: PropType; default: string; }; /** * 高亮标题相对滚动容器顶部偏移量,即距离该值时,高亮当前目录菜单项 * * 默认:20px */ offsetTop: { type: PropType; default: number; }; /** * 滚动区域的固定顶部高度 * * 默认:0 */ scrollElementOffsetTop: { type: PropType; default: number; }; onClick: { type: PropType<(e: MouseEvent, t: TocItem) => void>; default: undefined; }; onActive: { type: PropType<(heading: HeadList | undefined, activeElement: HTMLDivElement) => void>; default: undefined; }; /** * 滚动容器是否在web component中,默认不在 * * 在其中的话通过document查询不到 */ isScrollElementInShadow: { type: PropType; default: boolean; }; /** * 设置与哪个区域同步,默认与内容区域同步 * * >= v5.3.0 */ syncWith: { type: PropType<"editor" | "preview">; default: string; }; /** * 控制最大显示的目录层级 */ catalogMaxDepth: { type: PropType; default: undefined; }; }>> & Readonly<{ onOnClick?: ((...args: any[]) => any) | undefined; onOnActive?: ((...args: any[]) => any) | undefined; }>, { onClick: (e: MouseEvent, t: TocItem) => void; theme: Themes; class: string; catalogMaxDepth: number; editorId: string; mdHeadingId: MdHeadingId; onActive: (heading: HeadList | undefined, activeElement: HTMLDivElement) => void; scrollElement: string | HTMLElement; offsetTop: number; scrollElementOffsetTop: number; isScrollElementInShadow: boolean; syncWith: "preview" | "editor"; }, {}, {}, {}, string, vue.ComponentProvideOptions, true, {}, any>; declare const _default: typeof MdCatalog & { install: (app: App) => App; }; /** * 重写markdown-it-xss,它的作者好像不维护了 */ interface XSSPluginType { xss?: (_xss: typeof xss) => XSS.IFilterXSSOptions | xss.IFilterXSSOptions; /** * 它不会覆盖默认的白名单,而是把默认白名单、内置白名单结合 */ extendedWhiteList?: xss.IFilterXSSOptions['whiteList']; } declare const XSSPlugin: (md: markdownit, options: XSSPluginType) => void; declare const prefix = "md-editor"; declare const editorExtensionsAttrs: GlobalConfig['editorExtensionsAttrs']; declare const allToolbar: string[]; declare const allFooter: Array; declare const config: Config; declare const zh_CN: StaticTextDefaultValue; declare const en_US: StaticTextDefaultValue; /** * 清空组件带来的副作用,例如 * 1. 使用CDN嵌入的链接,为了保证多个组件能够正常使用,组件在卸载时不会主动移除 */ declare const clearSideEffects: () => void; export { _default$8 as DropdownToolbar, _default as MdCatalog, _default$c as MdEditor, _default$4 as MdModal, _default$1 as MdPreview, _default$6 as ModalToolbar, _default$2 as NormalFooterToolbar, _default$a as NormalToolbar, StrIcon, XSSPlugin, allFooter, allToolbar, clearSideEffects, config, editorExtensionsAttrs, en_US, prefix, zh_CN }; export type { ChangeEvent, CodeCss, CodeCssAttrs, CodeMirrorExtension, Config, CustomIcon, CustomStrIcon, DOMEventHandlers, EditorContext, EditorEmits, EditorProps, ErrorEvent, ExposeEvent, ExposeParam, ExposePreviewParam, FocusOption, Footers, GetCatalogEvent, GlobalConfig, HeadList, HtmlChangedEvent, InnerError, Insert, InsertContentGenerator, InsertParam, MarkdownItConfigPlugin, MdHeadingId, MdPreviewProps, MermaidTemplate, PreviewThemes, SaveEvent, SettingType, StaticTextDefault, StaticTextDefaultKey, StaticTextDefaultValue, Themes, ToolbarNames, ToolbarTips, UpdateSetting, UploadImgCallBack, UploadImgCallBackParam, UploadImgEvent, XSSPluginType };