markdown-editor-preview
Version:
基于Vue3和TypeScript的Markdown预览编辑器,支持双向滚动同步、代码高亮和自定义渲染器,提供流畅的编辑和预览体验
63 lines (62 loc) • 1.8 kB
TypeScript
import { Ref, ShallowRef, ComputedRef } from 'vue';
import { Renderer } from '../core';
import * as monaco from "monaco-editor/esm/vs/editor/editor.api.js";
export interface EditorProps {
/**
* Markdown 渲染器,可以为 MarkdownIt 的实例。
*
* @default "rich"
*/
renderer?: Renderer;
/**
* 渲染函数的防抖(毫秒)。
*
* @default 500
*/
debounce?: number;
/**
* 是否同步滚动。
*
* @default true
*/
scrollSynced?: boolean;
}
export declare function useEditor(content: Ref<string>, props: Required<EditorProps>): {
editor: ShallowRef<monaco.editor.IStandaloneCodeEditor | null, monaco.editor.IStandaloneCodeEditor | null>;
editorRef: ShallowRef<HTMLElement | undefined, HTMLElement | undefined>;
debouncedContent: Readonly<Ref<string, string>>;
computedScrollSynced: ComputedRef<boolean>;
editorRenderer: ComputedRef<{
render(text: string, env: object): string;
}>;
selection: ShallowRef<{
start: number;
count: number;
startLineNumber: number;
startColumn: number;
endLineNumber: number;
endColumn: number;
}, {
start: number;
count: number;
startLineNumber: number;
startColumn: number;
endLineNumber: number;
endColumn: number;
}>;
};
export declare function useEditorSelection(editor: ShallowRef<monaco.editor.IStandaloneCodeEditor | null>): ShallowRef<{
start: number;
count: number;
startLineNumber: number;
startColumn: number;
endLineNumber: number;
endColumn: number;
}, {
start: number;
count: number;
startLineNumber: number;
startColumn: number;
endLineNumber: number;
endColumn: number;
}>;