123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895 |
- declare module "*.svg";
- declare module "*.png";
- interface Window {
- VditorI18n: ITips;
- hljs: {
- listLanguages(): string[];
- highlight(text: string, options: {
- language?: string,
- ignoreIllegals: boolean
- }): {
- value: string
- };
- getLanguage(text: string): {
- name: string
- };
- };
- }
- interface IObject {
- [key: string]: string;
- }
- interface ILuteNode {
- TokensStr: () => string;
- __internal_object__: {
- Parent: {
- Type: number,
- },
- HeadingLevel: string,
- };
- }
- type ILuteRenderCallback = (node: ILuteNode, entering: boolean) => [string, number];
- /** @link https://ld246.com/article/1588412297062 */
- interface ILuteRender {
- renderDocument?: ILuteRenderCallback;
- renderParagraph?: ILuteRenderCallback;
- renderText?: ILuteRenderCallback;
- renderCodeBlock?: ILuteRenderCallback;
- renderCodeBlockOpenMarker?: ILuteRenderCallback;
- renderCodeBlockInfoMarker?: ILuteRenderCallback;
- renderCodeBlockCode?: ILuteRenderCallback;
- renderCodeBlockCloseMarker?: ILuteRenderCallback;
- renderMathBlock?: ILuteRenderCallback;
- renderMathBlockOpenMarker?: ILuteRenderCallback;
- renderMathBlockContent?: ILuteRenderCallback;
- renderMathBlockCloseMarker?: ILuteRenderCallback;
- renderBlockquote?: ILuteRenderCallback;
- renderBlockquoteMarker?: ILuteRenderCallback;
- renderHeading?: ILuteRenderCallback;
- renderHeadingC8hMarker?: ILuteRenderCallback;
- renderList?: ILuteRenderCallback;
- renderListItem?: ILuteRenderCallback;
- renderTaskListItemMarker?: ILuteRenderCallback;
- renderThematicBreak?: ILuteRenderCallback;
- renderHTML?: ILuteRenderCallback;
- renderTable?: ILuteRenderCallback;
- renderTableHead?: ILuteRenderCallback;
- renderTableRow?: ILuteRenderCallback;
- renderTableCell?: ILuteRenderCallback;
- renderFootnotesDef?: ILuteRenderCallback;
- renderCodeSpan?: ILuteRenderCallback;
- renderCodeSpanOpenMarker?: ILuteRenderCallback;
- renderCodeSpanContent?: ILuteRenderCallback;
- renderCodeSpanCloseMarker?: ILuteRenderCallback;
- renderInlineMath?: ILuteRenderCallback;
- renderInlineMathOpenMarker?: ILuteRenderCallback;
- renderInlineMathContent?: ILuteRenderCallback;
- renderInlineMathCloseMarker?: ILuteRenderCallback;
- renderEmphasis?: ILuteRenderCallback;
- renderEmAsteriskOpenMarker?: ILuteRenderCallback;
- renderEmAsteriskCloseMarker?: ILuteRenderCallback;
- renderEmUnderscoreOpenMarker?: ILuteRenderCallback;
- renderEmUnderscoreCloseMarker?: ILuteRenderCallback;
- renderStrong?: ILuteRenderCallback;
- renderStrongA6kOpenMarker?: ILuteRenderCallback;
- renderStrongA6kCloseMarker?: ILuteRenderCallback;
- renderStrongU8eOpenMarker?: ILuteRenderCallback;
- renderStrongU8eCloseMarker?: ILuteRenderCallback;
- renderStrikethrough?: ILuteRenderCallback;
- renderStrikethrough1OpenMarker?: ILuteRenderCallback;
- renderStrikethrough1CloseMarker?: ILuteRenderCallback;
- renderStrikethrough2OpenMarker?: ILuteRenderCallback;
- renderStrikethrough2CloseMarker?: ILuteRenderCallback;
- renderHardBreak?: ILuteRenderCallback;
- renderSoftBreak?: ILuteRenderCallback;
- renderInlineHTML?: ILuteRenderCallback;
- renderLink?: ILuteRenderCallback;
- renderOpenBracket?: ILuteRenderCallback;
- renderCloseBracket?: ILuteRenderCallback;
- renderOpenParen?: ILuteRenderCallback;
- renderCloseParen?: ILuteRenderCallback;
- renderLinkText?: ILuteRenderCallback;
- renderLinkSpace?: ILuteRenderCallback;
- renderLinkDest?: ILuteRenderCallback;
- renderLinkTitle?: ILuteRenderCallback;
- renderImage?: ILuteRenderCallback;
- renderBang?: ILuteRenderCallback;
- renderEmoji?: ILuteRenderCallback;
- renderEmojiUnicode?: ILuteRenderCallback;
- renderEmojiImg?: ILuteRenderCallback;
- renderEmojiAlias?: ILuteRenderCallback;
- renderToC?: ILuteRenderCallback;
- renderFootnotesRef?: ILuteRenderCallback;
- renderBackslash?: ILuteRenderCallback;
- renderBackslashContent?: ILuteRenderCallback;
- }
- interface ILuteOptions extends IMarkdownConfig {
- emojis: IObject;
- emojiSite: string;
- headingAnchor: boolean;
- inlineMathDigit: boolean;
- lazyLoadImage?: string;
- }
- declare class Lute {
- public static WalkStop: number;
- public static WalkSkipChildren: number;
- public static WalkContinue: number;
- public static Version: string;
- public static Caret: string;
- public static New(): Lute;
- public static EscapeHTMLStr(html: string): string;
- public static GetHeadingID(node: ILuteNode): string;
- public static NewNodeID(): string;
- public static Sanitize(html: string): string;
- private constructor();
- public SetJSRenderers(options?: {
- renderers: {
- HTML2VditorDOM?: ILuteRender,
- HTML2VditorIRDOM?: ILuteRender,
- HTML2Md?: ILuteRender,
- Md2HTML?: ILuteRender,
- Md2VditorDOM?: ILuteRender,
- Md2VditorIRDOM?: ILuteRender,
- Md2VditorSVDOM?: ILuteRender,
- },
- }): void;
- public SetChineseParagraphBeginningSpace(enable: boolean): void;
- public SetHeadingID(enable: boolean): void;
- public SetRenderListStyle(enable: boolean): void;
- public SetLinkBase(url: string): void;
- public SetVditorIR(enable: boolean): void;
- public SetVditorSV(enable: boolean): void;
- public SetVditorWYSIWYG(enable: boolean): void;
- public SetLinkPrefix(url: string): void;
- public SetMark(enable: boolean): void;
- public SetGFMAutoLink(enable: boolean): void;
- public SetSanitize(enable: boolean): void;
- public SetHeadingAnchor(enable: boolean): void;
- public SetImageLazyLoading(imagePath: string): void;
- public SetInlineMathAllowDigitAfterOpenMarker(enable: boolean): void;
- public SetToC(enable: boolean): void;
- public SetFootnotes(enable: boolean): void;
- public SetAutoSpace(enable: boolean): void;
- public SetFixTermTypo(enable: boolean): void;
- public SetEmojiSite(emojiSite: string): void;
- public SetVditorCodeBlockPreview(enable: boolean): void;
- public SetVditorMathBlockPreview(enable: boolean): void;
- public PutEmojis(emojis: IObject): void;
- public GetEmojis(): IObject;
- public IsValidLinkDest(link: string): boolean;
- // debugger md
- public RenderEChartsJSON(text: string): string;
- // md 转换为 html
- public Md2HTML(markdown: string): string;
- // 粘贴时将 html 转换为 md
- public HTML2Md(html: string): string;
- // wysiwyg 转换为 html
- public VditorDOM2HTML(vhtml: string): string;
- // wysiwyg 输入渲染
- public SpinVditorDOM(html: string): string;
- // 粘贴时将 html 转换为 wysiwyg
- public HTML2VditorDOM(html: string): string;
- // 将 wysiwyg 转换为 md
- public VditorDOM2Md(html: string): string;
- // 将 md 转换为 wysiwyg
- public Md2VditorDOM(markdown: string): string;
- // ir 输入渲染
- public SpinVditorIRDOM(markdown: string): string;
- // ir 获取 md
- public VditorIRDOM2Md(html: string): string;
- // md 转换为 ir
- public Md2VditorIRDOM(text: string): string;
- // 获取 HTML
- public VditorIRDOM2HTML(html: string): string;
- // 粘贴时将 html 转换为 sv
- public HTML2VditorIRDOM(html: string): string;
- // sv 输入渲染
- public SpinVditorSVDOM(text: string): string;
- // 粘贴是 md 转换为 sv
- public Md2VditorSVDOM(text: string): string;
- // 将markdown转化为JSON结构输出 https://github.com/88250/lute/issues/120
- public RenderJSON(markdown: string): string;
- }
- declare const webkitAudioContext: {
- prototype: AudioContext
- new(contextOptions?: AudioContextOptions): AudioContext,
- };
- interface ITips {
- [index: string]: string;
- alignCenter: string;
- alignLeft: string;
- alignRight: string;
- alternateText: string;
- bold: string;
- both: string;
- check: string;
- close: string;
- code: string;
- "code-theme": string;
- column: string;
- comment: string;
- confirm: string;
- "content-theme": string;
- copied: string;
- copy: string;
- "delete-column": string;
- "delete-row": string;
- devtools: string;
- down: string;
- downloadTip: string;
- edit: string;
- "edit-mode": string;
- emoji: string;
- export: string;
- fileTypeError: string;
- footnoteRef: string;
- fullscreen: string;
- generate: string;
- headings: string;
- help: string;
- imageURL: string;
- indent: string;
- info: string;
- "inline-code": string;
- "insert-after": string;
- "insert-before": string;
- insertColumnLeft: string;
- insertColumnRight: string;
- insertRowAbove: string;
- insertRowBelow: string;
- instantRendering: string;
- italic: string;
- language: string;
- line: string;
- link: string;
- linkRef: string;
- list: string;
- more: string;
- nameEmpty: string;
- "ordered-list": string;
- outdent: string;
- outline: string;
- over: string;
- performanceTip: string;
- preview: string;
- quote: string;
- record: string;
- "record-tip": string;
- recording: string;
- redo: string;
- remove: string;
- row: string;
- spin: string;
- splitView: string;
- strike: string;
- table: string;
- textIsNotEmpty: string;
- title: string;
- tooltipText: string;
- undo: string;
- up: string;
- update: string;
- upload: string;
- uploadError: string;
- uploading: string;
- wysiwyg: string;
- }
- interface II18n {
- de_DE: ITips;
- en_US: ITips;
- fr_FR: ITips;
- ja_JP: ITips;
- ko_KR: ITips;
- ru_RU: ITips;
- sv_SE: ITips;
- zh_CN: ITips;
- zh_TW: ITips;
- pt_BR: ITips;
- }
- interface IClasses {
- preview?: string;
- }
- interface IPreviewTheme {
- current: string;
- list?: IObject;
- path?: string;
- }
- /** @link https://ld246.com/article/1549638745630#options-upload */
- interface IUpload {
- /** 上传 url */
- url?: string;
- /** 上传文件最大 Byte */
- max?: number;
- /** 剪切板中包含图片地址时,使用此 url 重新上传 */
- linkToImgUrl?: string;
- /** 剪切板中包含图片地址时,使用此方法进行自定义 */
- renderLinkDest?(vditor: IVditor, node: ILuteNode, entering: boolean): [string, number];
- /** CORS 上传验证,头为 X-Upload-Token */
- token?: string;
- /** 文件上传类型,同 [input accept](https://www.w3schools.com/tags/att_input_accept.asp) */
- accept?: string;
- /** 跨站点访问控制。默认值: false */
- withCredentials?: boolean;
- /** 请求头设置 */
- headers?: IObject;
- /** 额外请求参数 */
- extraData?: { [key: string]: string | Blob };
- /** 是否允许多文件上传。默认值:true */
- multiple?: boolean;
- /** 上传字段名。默认值:file[] */
- fieldName?: string;
- /** 每次上传前都会重新设置请求头 */
- setHeaders?(): IObject;
- /** 上传成功回调 */
- success?(editor: HTMLPreElement, msg: string): void;
- /** 上传失败回调 */
- error?(msg: string): void;
- /** 文件名安全处理。 默认值: name => name.replace(/\W/g, '') */
- filename?(name: string): string;
- /** 校验,成功时返回 true 否则返回错误信息 */
- validate?(files: File[]): string | boolean;
- /** 自定义上传,当发生错误时返回错误信息 */
- handler?(files: File[]): string | null | Promise<string> | Promise<null>;
- //将dataUrl上传到服务器,并返回获取数据的url
- handleDataUrl?(dataUrl: string): string | Promise<string>;
- /** 对服务端返回的数据进行转换,以满足内置的数据结构 */
- format?(files: File[], responseText: string): string;
- /** 对服务端返回的数据进行转换(对应linkToImgUrl),以满足内置的数据结构 */
- linkToImgFormat?(responseText: string): string;
- /** 将上传的文件处理后再返回 */
- file?(files: File[]): File[] | Promise<File[]>;
- /** 取消正在上传的文件 */
- cancel?(files: File[]): void;
- /** 图片地址上传后的回调 */
- linkToImgCallback?(responseText: string): void;
- }
- /** @link https://ld246.com/article/1549638745630#options-toolbar */
- interface IMenuItem {
- /** 唯一标示 */
- name: string;
- /** svg 图标 HTML */
- icon?: string;
- /** 元素的样式名称 */
- className?: string;
- /** 提示 */
- tip?: string;
- /** 快捷键,支持⌘/ctrl-key 或 ⌘/ctrl-⇧/shift-key 格式的配置,不支持 wysiwyg 模式 */
- hotkey?: string;
- /** 插入编辑器中的后缀 */
- suffix?: string;
- /** 插入编辑器中的前缀 */
- prefix?: string;
- /** 提示位置:ne, nw */
- tipPosition?: string;
- /** 子菜单 */
- toolbar?: Array<string | IMenuItem>;
- /** 菜单层级,最大为 3,内部使用 */
- level?: number;
- /** 自定义按钮点击时触发的事件 */
- click?(event: Event, vditor: IVditor): void;
- }
- /** @link https://ld246.com/article/1549638745630#options-preview-hljs */
- interface IHljs {
- /** 代码块没有指定语言时,使用此值。默认值: "" */
- defaultLang?: string;
- /** 是否启用行号。默认值: false */
- lineNumber?: boolean;
- /** 代码风格,可选值参见 [Chroma](https://xyproto.github.io/splash/docs/longer/all.html)。 默认值: 'github' */
- style?: string;
- /** 是否启用代码高亮。默认值: true */
- enable?: boolean;
- /** 自定义指定语言: CODE_LANGUAGES */
- langs?: string[];
- /** 渲染右上角菜单按钮 */
- renderMenu?(element: HTMLElement, menuElement: HTMLElement): void;
- }
- /** @link https://ld246.com/article/1549638745630#options-preview-math */
- interface IMath {
- /** 内联数学公式起始 $ 后是否允许数字。默认值: false */
- inlineDigit?: boolean;
- /** 使用 MathJax 渲染时传入的宏定义。默认值: {} */
- macros?: object;
- /** 数学公式渲染引擎。默认值: 'KaTeX' */
- engine?: "KaTeX" | "MathJax";
- /** 数学公式渲染引擎为 MathJax 时传入的参数 */
- mathJaxOptions?: any;
- }
- /** @link https://ld246.com/article/1549638745630#options-preview-markdown */
- interface IMarkdownConfig {
- /** 自动空格。默认值: false */
- autoSpace?: boolean;
- /** 段落开头是否空两格。默认值: false */
- paragraphBeginningSpace?: boolean;
- /** 自动矫正术语。默认值: false */
- fixTermTypo?: boolean;
- /** 插入目录。默认值: false */
- toc?: boolean;
- /** 脚注。默认值: true */
- footnotes?: boolean;
- /** wysiwyg & ir 模式代码块是否渲染。默认值: true */
- codeBlockPreview?: boolean;
- /** wysiwyg & ir 模式数学公式块是否渲染。默认值: true */
- mathBlockPreview?: boolean;
- /** 是否启用过滤 XSS。默认值: true */
- sanitize?: boolean;
- /** 链接相对路径前缀。默认值:'' */
- linkBase?: string;
- /** 链接强制前缀。默认值:'' */
- linkPrefix?: string;
- /** 为列表添加标记,以便[自定义列表样式](https://github.com/Vanessa219/vditor/issues/390) 默认值:false */
- listStyle?: boolean;
- /** 支持 mark 标记 */
- mark?: boolean;
- /** 支持自动链接 */
- gfmAutoLink?: boolean;
- }
- /** @link https://ld246.com/article/1549638745630#options-preview */
- interface IPreview {
- /** 预览 debounce 毫秒间隔。默认值: 1000 */
- delay?: number;
- /** 预览区域最大宽度。默认值: 768 */
- maxWidth?: number;
- /** 显示模式。默认值: 'both' */
- mode?: "both" | "editor";
- /** md 解析请求 */
- url?: string;
- /** @link https://ld246.com/article/1549638745630#options-preview-hljs */
- hljs?: IHljs;
- /** @link https://ld246.com/article/1549638745630#options-preview-math */
- math?: IMath;
- /** @link https://ld246.com/article/1549638745630#options-preview-markdown */
- markdown?: IMarkdownConfig;
- /** @link https://ld246.com/article/1549638745630#options-preview-theme */
- theme?: IPreviewTheme;
- /** @link https://ld246.com/article/1549638745630#options-preview-actions */
- actions?: Array<IPreviewAction | IPreviewActionCustom>;
- render?: IPreviewRender;
- /** 预览回调 */
- parse?(element: HTMLElement): void;
- /** 渲染之前回调 */
- transform?(html: string): string;
- }
- interface IPreviewRender {
- media?: {
- enable?: boolean;
- };
- }
- type IPreviewAction = "desktop" | "tablet" | "mobile" | "mp-wechat" | "zhihu";
- interface IPreviewActionCustom {
- /** 键名 */
- key: string;
- /** 按钮文本 */
- text: string;
- /** 按钮 className 值 */
- className?: string;
- /** 按钮提示信息 */
- tooltip?: string;
- /** 点击回调 */
- click: (key: string) => void;
- }
- interface IPreviewOptions {
- mode: "dark" | "light";
- customEmoji?: IObject;
- lang?: (keyof II18n);
- i18n?: ITips;
- lazyLoadImage?: string;
- emojiPath?: string;
- hljs?: IHljs;
- speech?: {
- enable?: boolean,
- };
- anchor?: number; // 0: no render, 1: render left, 2: render right
- math?: IMath;
- cdn?: string;
- markdown?: IMarkdownConfig;
- renderers?: ILuteRender;
- theme?: IPreviewTheme;
- icon?: "ant" | "material" | undefined;
- render?: IPreviewRender;
- transform?(html: string): string;
- after?(): void;
- }
- interface IHintData {
- html: string;
- value: string;
- }
- interface IHintExtend {
- key: string;
- hint?(value: string): IHintData[] | Promise<IHintData[]>;
- }
- /** @link https://ld246.com/article/1549638745630#options-hint */
- interface IHint {
- /** 提示内容是否进行 md 解析 */
- parse?: boolean;
- /** 常用表情提示 HTML */
- emojiTail?: string;
- /** 提示 debounce 毫秒间隔。默认值: 200 */
- delay?: number;
- /** 默认表情,可从 [lute/emoji_map](https://github.com/88250/lute/blob/master/parse/emoji_map.go#L32) 中选取,也可自定义 */
- emoji?: IObject;
- /** 表情图片地址。默认值: 'https://unpkg.com/vditor@${VDITOR_VERSION}/dist/images/emoji' */
- emojiPath?: string;
- extend?: IHintExtend[];
- }
- /** @link https://ld246.com/article/1549638745630#options-toolbarConfig */
- interface IToolbarConfig {
- /** 是否隐藏工具栏。默认值: false */
- hide?: boolean;
- /** 是否固定工具栏。默认值: false */
- pin?: boolean;
- }
- /** @link https://ld246.com/article/1549638745630#options-comment */
- interface IComment {
- /** 是否启用评论模式。默认值: false */
- enable: boolean;
- /** 添加评论回调 */
- add?(id: string, text: string, commentsData: ICommentsData[]): void;
- /** 删除评论回调 */
- remove?(ids: string[]): void;
- /** 滚动回调 */
- scroll?(top: number): void;
- /** 文档修改时,适配评论高度 */
- adjustTop?(commentsData: ICommentsData[]): void;
- }
- /** @link https://ld246.com/article/1549638745630#options-outline */
- interface IOutline {
- /** 初始化是否展现大纲。默认值: false */
- enable: boolean;
- /** 大纲位置:'left', 'right'。默认值: 'left' */
- position: "left" | "right";
- }
- interface IResize {
- position?: string;
- enable?: boolean;
- after?(height: number): void;
- }
- /** @link https://ld246.com/article/1549638745630#options */
- interface IOptions {
- /** RTL */
- rtl?: boolean;
- /** 历史记录间隔 */
- undoDelay?: number;
- /** 内部调试时使用 */
- _lutePath?: string;
- /** 编辑器初始化值。默认值: '' */
- value?: string;
- /** 是否显示日志。默认值: false */
- debugger?: boolean;
- /** 是否启用打字机模式。默认值: false */
- typewriterMode?: boolean;
- /** 编辑器总高度。默认值: 'auto' */
- height?: number | string;
- /** 编辑器最小高度 */
- minHeight?: number;
- /** 编辑器总宽度,支持 %。默认值: 'auto' */
- width?: number | string;
- /** 输入区域为空时的提示。默认值: '' */
- placeholder?: string;
- /** 多语言。默认值: 'zh_CN' */
- lang?: (keyof II18n);
- /** 国际化, 自定义语言。优先级低于lang */
- i18n?: ITips;
- /** @link https://ld246.com/article/1549638745630#options-fullscreen */
- fullscreen?: {
- /** 全屏层级。默认值: 90 */
- index: number;
- };
- /** @link https://ld246.com/article/1549638745630#options-toolbar */
- toolbar?: Array<string | IMenuItem>;
- /** @link https://ld246.com/article/1549638745630#options-resize */
- resize?: IResize;
- /** @link https://ld246.com/article/1549638745630#options-counter */
- counter?: {
- /** 是否启用计数器。默认值: false */
- enable: boolean;
- /** 允许输入的最大值 */
- max?: number;
- /** 统计类型。默认值: 'markdown' */
- type?: "markdown" | "text";
- /** 字数统计回调。 */
- after?(length: number, counter: {
- /** 是否启用计数器。默认值: false */
- enable: boolean;
- /** 允许输入的最大值 */
- max?: number;
- /** 统计类型。默认值: 'markdown' */
- type?: "markdown" | "text"
- }): void
- };
- /** @link https://ld246.com/article/1549638745630#options-cache */
- cache?: {
- /** 缓存 key,第一个参数为元素且启用缓存时必填 */
- id?: string;
- /** 是否使用 localStorage 进行缓存。默认值: true */
- enable?: boolean;
- /** 缓存后的回调 */
- after?(markdown: string): void;
- };
- /** 编辑模式。默认值: 'wysiwyg'
- *
- * wysiwyg: 所见即所得
- *
- * ir: 即时渲染
- *
- * sv: 分屏预览
- */
- mode?: "wysiwyg" | "sv" | "ir";
- /** @link https://ld246.com/article/1549638745630#options-preview */
- preview?: IPreview;
- /** @link https://ld246.com/article/1549638745630#options-link */
- link?: {
- /** 是否打开链接地址。默认值: true */
- isOpen?: boolean;
- /** 点击链接事件 */
- click?: (bom: Element) => void;
- },
- /** @link https://ld246.com/article/1549638745630#options-image */
- image?: {
- /** 是否预览图片。默认值: true */
- isPreview?: boolean;
- /** 图片预览处理 */
- preview?: (bom: Element) => void;
- },
- /** @link https://ld246.com/article/1549638745630#options-hint */
- hint?: IHint;
- /** @link https://ld246.com/article/1549638745630#options-toolbarConfig */
- toolbarConfig?: IToolbarConfig;
- /** 评论
- * @link https://ld246.com/article/1549638745630#options-comment
- */
- comment?: IComment;
- /** 主题。默认值: 'classic' */
- theme?: "classic" | "dark";
- /** 图标。默认值: 'ant' */
- icon?: "ant" | "material";
- /** @link https://ld246.com/article/1549638745630#options-upload */
- upload?: IUpload;
- /** @link https://ld246.com/article/1549638745630#options-classes */
- classes?: IClasses;
- /** 配置自建 CDN 地址。默认值: 'https://unpkg.com/vditor@${VDITOR_VERSION}' */
- cdn?: string;
- /** tab 键操作字符串,支持 \t 及任意字符串 */
- tab?: string;
- /** @link https://ld246.com/article/1549638745630#options-outline */
- outline?: IOutline;
- customRenders?: {
- language: string,
- render: (element: HTMLElement, vditor: IVditor) => void
- }[],
- /** 编辑器异步渲染完成后的回调方法 */
- after?(): void;
- /** 输入后触发 */
- input?(value: string): void;
- /** 聚焦后触发 */
- focus?(value: string): void;
- /** 失焦后触发 */
- blur?(value: string): void;
- /** 按下键盘触发 */
- keydown?(event: KeyboardEvent): void;
- /** `esc` 按下后触发 */
- esc?(value: string): void;
- /** `⌘/ctrl+enter` 按下后触发 */
- ctrlEnter?(value: string): void;
- /** 编辑器中选中文字后触发 */
- select?(value: string): void;
- /** 编辑器中未选中文字后触发 */
- unSelect?(): void;
- }
- interface IEChart {
- setOption(option: any): void;
- resize(): void;
- }
- interface IVditor {
- element: HTMLElement;
- options: IOptions;
- originalInnerHTML: string;
- lute: Lute;
- currentMode: "sv" | "wysiwyg" | "ir";
- devtools?: {
- element: HTMLDivElement,
- renderEchart(vditor: IVditor): void,
- };
- outline: {
- element: HTMLElement,
- render(vditor: IVditor): string,
- toggle(vditor: IVditor, show?: boolean, focus?: boolean): void,
- };
- toolbar?: {
- elements?: { [key: string]: HTMLElement },
- element?: HTMLElement,
- updateConfig(vditor: IVditor, options: IToolbarConfig): void,
- };
- preview?: {
- element: HTMLElement,
- previewElement: HTMLElement,
- render(vditor: IVditor, value?: string): void,
- };
- counter?: {
- element: HTMLElement
- render(vditor: IVditor, mdText?: string): void,
- };
- resize?: {
- element: HTMLElement,
- };
- hint: {
- timeId: number
- element: HTMLDivElement
- recentLanguage: string
- fillEmoji(element: HTMLElement, vditor: IVditor): void
- render(vditor: IVditor): void,
- genHTML(data: IHintData[], key: string, vditor: IVditor): void
- select(event: KeyboardEvent, vditor: IVditor): boolean,
- };
- tip: {
- element: HTMLElement
- show(text: string, time?: number): void
- hide(): void,
- };
- upload?: {
- element: HTMLElement
- isUploading: boolean
- range: Range,
- xhr?: XMLHttpRequest,
- };
- undo?: {
- clearStack(vditor: IVditor): void,
- redo(vditor: IVditor): void
- undo(vditor: IVditor): void
- addToUndoStack(vditor: IVditor): void
- recordFirstPosition(vditor: IVditor, event: KeyboardEvent): void,
- resetIcon(vditor: IVditor): void,
- };
- wysiwyg?: {
- range: Range,
- element: HTMLPreElement,
- selectPopover: HTMLDivElement,
- popover: HTMLDivElement,
- afterRenderTimeoutId: number,
- hlToolbarTimeoutId: number,
- preventInput: boolean,
- composingLock: boolean,
- commentIds: string[]
- getComments(vditor: IVditor, getData?: boolean): ICommentsData[],
- triggerRemoveComment(vditor: IVditor): void,
- showComment(): void,
- hideComment(): void,
- unbindListener(): void,
- };
- ir?: {
- range: Range,
- element: HTMLPreElement,
- composingLock: boolean,
- preventInput: boolean,
- processTimeoutId: number,
- hlToolbarTimeoutId: number,
- };
- sv?: {
- range: Range,
- element: HTMLPreElement,
- processTimeoutId: number,
- hlToolbarTimeoutId: number,
- composingLock: boolean,
- preventInput: boolean,
- };
- }
- interface ICommentsData {
- id: string;
- top: number;
- }
|