UNPKG

markdown-editor-preview

Version:

基于Vue3和TypeScript的Markdown预览编辑器,支持双向滚动同步、代码高亮和自定义渲染器,提供流畅的编辑和预览体验

63 lines (62 loc) 1.8 kB
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; }>;