index.d.ts 21 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678
  1. declare module "*.svg";
  2. declare module "*.png";
  3. interface IObject {
  4. [key: string]: string;
  5. }
  6. interface ILuteNode {
  7. TokensStr: () => string;
  8. __internal_object__: {
  9. Parent: {
  10. Type: number,
  11. },
  12. HeadingLevel: string,
  13. };
  14. }
  15. type ILuteRenderCallback = (node: ILuteNode, entering: boolean) => [string, number];
  16. /** @link https://ld246.com/article/1588412297062 */
  17. interface ILuteRender {
  18. renderDocument?: ILuteRenderCallback;
  19. renderParagraph?: ILuteRenderCallback;
  20. renderText?: ILuteRenderCallback;
  21. renderCodeBlock?: ILuteRenderCallback;
  22. renderCodeBlockOpenMarker?: ILuteRenderCallback;
  23. renderCodeBlockInfoMarker?: ILuteRenderCallback;
  24. renderCodeBlockCode?: ILuteRenderCallback;
  25. renderCodeBlockCloseMarker?: ILuteRenderCallback;
  26. renderMathBlock?: ILuteRenderCallback;
  27. renderMathBlockOpenMarker?: ILuteRenderCallback;
  28. renderMathBlockContent?: ILuteRenderCallback;
  29. renderMathBlockCloseMarker?: ILuteRenderCallback;
  30. renderBlockquote?: ILuteRenderCallback;
  31. renderBlockquoteMarker?: ILuteRenderCallback;
  32. renderHeading?: ILuteRenderCallback;
  33. renderHeadingC8hMarker?: ILuteRenderCallback;
  34. renderList?: ILuteRenderCallback;
  35. renderListItem?: ILuteRenderCallback;
  36. renderTaskListItemMarker?: ILuteRenderCallback;
  37. renderThematicBreak?: ILuteRenderCallback;
  38. renderHTML?: ILuteRenderCallback;
  39. renderTable?: ILuteRenderCallback;
  40. renderTableHead?: ILuteRenderCallback;
  41. renderTableRow?: ILuteRenderCallback;
  42. renderTableCell?: ILuteRenderCallback;
  43. renderFootnotesDef?: ILuteRenderCallback;
  44. renderCodeSpan?: ILuteRenderCallback;
  45. renderCodeSpanOpenMarker?: ILuteRenderCallback;
  46. renderCodeSpanContent?: ILuteRenderCallback;
  47. renderCodeSpanCloseMarker?: ILuteRenderCallback;
  48. renderInlineMath?: ILuteRenderCallback;
  49. renderInlineMathOpenMarker?: ILuteRenderCallback;
  50. renderInlineMathContent?: ILuteRenderCallback;
  51. renderInlineMathCloseMarker?: ILuteRenderCallback;
  52. renderEmphasis?: ILuteRenderCallback;
  53. renderEmAsteriskOpenMarker?: ILuteRenderCallback;
  54. renderEmAsteriskCloseMarker?: ILuteRenderCallback;
  55. renderEmUnderscoreOpenMarker?: ILuteRenderCallback;
  56. renderEmUnderscoreCloseMarker?: ILuteRenderCallback;
  57. renderStrong?: ILuteRenderCallback;
  58. renderStrongA6kOpenMarker?: ILuteRenderCallback;
  59. renderStrongA6kCloseMarker?: ILuteRenderCallback;
  60. renderStrongU8eOpenMarker?: ILuteRenderCallback;
  61. renderStrongU8eCloseMarker?: ILuteRenderCallback;
  62. renderStrikethrough?: ILuteRenderCallback;
  63. renderStrikethrough1OpenMarker?: ILuteRenderCallback;
  64. renderStrikethrough1CloseMarker?: ILuteRenderCallback;
  65. renderStrikethrough2OpenMarker?: ILuteRenderCallback;
  66. renderStrikethrough2CloseMarker?: ILuteRenderCallback;
  67. renderHardBreak?: ILuteRenderCallback;
  68. renderSoftBreak?: ILuteRenderCallback;
  69. renderInlineHTML?: ILuteRenderCallback;
  70. renderLink?: ILuteRenderCallback;
  71. renderOpenBracket?: ILuteRenderCallback;
  72. renderCloseBracket?: ILuteRenderCallback;
  73. renderOpenParen?: ILuteRenderCallback;
  74. renderCloseParen?: ILuteRenderCallback;
  75. renderLinkText?: ILuteRenderCallback;
  76. renderLinkSpace?: ILuteRenderCallback;
  77. renderLinkDest?: ILuteRenderCallback;
  78. renderLinkTitle?: ILuteRenderCallback;
  79. renderImage?: ILuteRenderCallback;
  80. renderBang?: ILuteRenderCallback;
  81. renderEmoji?: ILuteRenderCallback;
  82. renderEmojiUnicode?: ILuteRenderCallback;
  83. renderEmojiImg?: ILuteRenderCallback;
  84. renderEmojiAlias?: ILuteRenderCallback;
  85. renderToC?: ILuteRenderCallback;
  86. renderFootnotesRef?: ILuteRenderCallback;
  87. renderBackslash?: ILuteRenderCallback;
  88. renderBackslashContent?: ILuteRenderCallback;
  89. }
  90. interface ILuteOptions extends IMarkdownConfig {
  91. emojis: IObject;
  92. emojiSite: string;
  93. headingAnchor: boolean;
  94. inlineMathDigit: boolean;
  95. lazyLoadImage?: string;
  96. }
  97. declare class Lute {
  98. public static WalkStop: number;
  99. public static WalkSkipChildren: number;
  100. public static WalkContinue: number;
  101. public static Version: string;
  102. public static Caret: string;
  103. public static New(): Lute;
  104. public static GetHeadingID(node: ILuteNode): string;
  105. public static NewNodeID(): string;
  106. private constructor();
  107. public SetJSRenderers(options?: {
  108. renderers: {
  109. HTML2VditorDOM?: ILuteRender,
  110. HTML2VditorIRDOM?: ILuteRender,
  111. HTML2Md?: ILuteRender,
  112. Md2HTML?: ILuteRender,
  113. Md2VditorDOM?: ILuteRender,
  114. Md2VditorIRDOM?: ILuteRender,
  115. Md2VditorSVDOM?: ILuteRender,
  116. },
  117. }): void;
  118. public SetChineseParagraphBeginningSpace(enable: boolean): void;
  119. public SetHeadingID(enable: boolean): void;
  120. public SetRenderListStyle(enable: boolean): void;
  121. public SetLinkBase(url: string): void;
  122. public SetVditorIR(enable: boolean): void;
  123. public SetVditorSV(enable: boolean): void;
  124. public SetVditorWYSIWYG(enable: boolean): void;
  125. public SetLinkPrefix(url: string): void;
  126. public SetMark(enable: boolean): void;
  127. public SetSanitize(enable: boolean): void;
  128. public SetHeadingAnchor(enable: boolean): void;
  129. public SetImageLazyLoading(imagePath: string): void;
  130. public SetInlineMathAllowDigitAfterOpenMarker(enable: boolean): void;
  131. public SetToC(enable: boolean): void;
  132. public SetFootnotes(enable: boolean): void;
  133. public SetAutoSpace(enable: boolean): void;
  134. public SetFixTermTypo(enable: boolean): void;
  135. public SetEmojiSite(emojiSite: string): void;
  136. public SetVditorCodeBlockPreview(enable: boolean): void;
  137. public SetVditorMathBlockPreview(enable: boolean): void;
  138. public PutEmojis(emojis: IObject): void;
  139. public GetEmojis(): IObject;
  140. // debugger md
  141. public RenderEChartsJSON(text: string): string;
  142. // md 转换为 html
  143. public Md2HTML(markdown: string): string;
  144. // 粘贴时将 html 转换为 md
  145. public HTML2Md(html: string): string;
  146. // wysiwyg 转换为 html
  147. public VditorDOM2HTML(vhtml: string): string;
  148. // wysiwyg 输入渲染
  149. public SpinVditorDOM(html: string): string;
  150. // 粘贴时将 html 转换为 wysiwyg
  151. public HTML2VditorDOM(html: string): string;
  152. // 将 wysiwyg 转换为 md
  153. public VditorDOM2Md(html: string): string;
  154. // 将 md 转换为 wysiwyg
  155. public Md2VditorDOM(markdown: string): string;
  156. // ir 输入渲染
  157. public SpinVditorIRDOM(markdown: string): string;
  158. // ir 获取 md
  159. public VditorIRDOM2Md(html: string): string;
  160. // md 转换为 ir
  161. public Md2VditorIRDOM(text: string): string;
  162. // 获取 HTML
  163. public VditorIRDOM2HTML(html: string): string;
  164. // 粘贴时将 html 转换为 sv
  165. public HTML2VditorIRDOM(html: string): string;
  166. // sv 输入渲染
  167. public SpinVditorSVDOM(text: string): string;
  168. // 粘贴是 md 转换为 sv
  169. public Md2VditorSVDOM(text: string): string;
  170. }
  171. declare const webkitAudioContext: {
  172. prototype: AudioContext
  173. new(contextOptions?: AudioContextOptions): AudioContext,
  174. };
  175. interface II18n {
  176. en_US: IObject;
  177. ja_JP: IObject;
  178. ko_KR: IObject;
  179. ru_RU: IObject;
  180. zh_CN: IObject;
  181. zh_TW: IObject;
  182. }
  183. interface IClasses {
  184. preview?: string;
  185. }
  186. interface IPreviewTheme {
  187. current: string;
  188. list?: IObject;
  189. path?: string;
  190. }
  191. /** @link https://ld246.com/article/1549638745630#options-upload */
  192. interface IUpload {
  193. /** 上传 url */
  194. url?: string;
  195. /** 上传文件最大 Byte */
  196. max?: number;
  197. /** 剪切板中包含图片地址时,使用此 url 重新上传 */
  198. linkToImgUrl?: string;
  199. /** CORS 上传验证,头为 X-Upload-Token */
  200. token?: string;
  201. /** 文件上传类型,同 [input accept](https://www.w3schools.com/tags/att_input_accept.asp) */
  202. accept?: string;
  203. /** 跨站点访问控制。默认值: false */
  204. withCredentials?: boolean;
  205. /** 请求头设置 */
  206. headers?: IObject;
  207. /** 额外请求参数 */
  208. extraData?: { [key: string]: string | Blob };
  209. /** 是否允许多文件上传。默认值:true */
  210. multiple?: boolean;
  211. /** 上传字段名。默认值:file[] */
  212. fieldName?: string;
  213. /** 每次上传前都会重新设置请求头 */
  214. setHeaders?(): IObject;
  215. /** 上传成功回调 */
  216. success?(editor: HTMLPreElement, msg: string): void;
  217. /** 上传失败回调 */
  218. error?(msg: string): void;
  219. /** 文件名安全处理。 默认值: name => name.replace(/\W/g, '') */
  220. filename?(name: string): string;
  221. /** 校验,成功时返回 true 否则返回错误信息 */
  222. validate?(files: File[]): string | boolean;
  223. /** 自定义上传,当发生错误时返回错误信息 */
  224. handler?(files: File[]): string | null;
  225. /** 对服务端返回的数据进行转换,以满足内置的数据结构 */
  226. format?(files: File[], responseText: string): string;
  227. /** 对服务端返回的数据进行转换(对应linkToImgUrl),以满足内置的数据结构 */
  228. linkToImgFormat?(responseText: string): string;
  229. /** 将上传的文件处理后再返回 */
  230. file?(files: File[]): File[];
  231. /** 图片地址上传后的回调 */
  232. linkToImgCallback?(responseText: string): void;
  233. }
  234. /** @link https://ld246.com/article/1549638745630#options-toolbar */
  235. interface IMenuItem {
  236. /** 唯一标示 */
  237. name: string;
  238. /** svg 图标 HTML */
  239. icon?: string;
  240. /** 元素的样式名称 */
  241. className?: string;
  242. /** 提示 */
  243. tip?: string;
  244. /** 快捷键,支持⌘/ctrl-key 或 ⌘/ctrl-⇧/shift-key 格式的配置,不支持 wysiwyg 模式 */
  245. hotkey?: string;
  246. /** 插入编辑器中的后缀 */
  247. suffix?: string;
  248. /** 插入编辑器中的前缀 */
  249. prefix?: string;
  250. /** 提示位置:ne, nw */
  251. tipPosition?: string;
  252. /** 子菜单 */
  253. toolbar?: Array<string | IMenuItem>;
  254. /** 菜单层级,最大为 3,内部使用 */
  255. level?: number;
  256. /** 自定义按钮点击时触发的事件 */
  257. click?(event: Event, vditor: IVditor): void;
  258. }
  259. /** @link https://ld246.com/article/1549638745630#options-preview-hljs */
  260. interface IHljs {
  261. /** 是否启用行号。默认值: false */
  262. lineNumber?: boolean;
  263. /** 代码风格,可选值参见 [Chroma](https://xyproto.github.io/splash/docs/longer/all.html)。 默认值: 'github' */
  264. style?: string;
  265. /** 是否启用代码高亮。默认值: true */
  266. enable?: boolean;
  267. }
  268. /** @link https://ld246.com/article/1549638745630#options-preview-math */
  269. interface IMath {
  270. /** 内联数学公式起始 $ 后是否允许数字。默认值: false */
  271. inlineDigit?: boolean;
  272. /** 使用 MathJax 渲染时传入的宏定义。默认值: {} */
  273. macros?: object;
  274. /** 数学公式渲染引擎。默认值: 'KaTeX' */
  275. engine?: "KaTeX" | "MathJax";
  276. }
  277. /** @link https://ld246.com/article/1549638745630#options-preview-markdown */
  278. interface IMarkdownConfig {
  279. /** 自动空格。默认值: false */
  280. autoSpace?: boolean;
  281. /** 段落开头是否空两格。默认值: false */
  282. paragraphBeginningSpace?: boolean;
  283. /** 自动矫正术语。默认值: false */
  284. fixTermTypo?: boolean;
  285. /** 插入目录。默认值: false */
  286. toc?: boolean;
  287. /** 脚注。默认值: true */
  288. footnotes?: boolean;
  289. /** wysiwyg & ir 模式代码块是否渲染。默认值: true */
  290. codeBlockPreview?: boolean;
  291. /** wysiwyg & ir 模式数学公式块是否渲染。默认值: true */
  292. mathBlockPreview?: boolean;
  293. /** 是否启用过滤 XSS。默认值: true */
  294. sanitize?: boolean;
  295. /** 链接相对路径前缀。默认值:'' */
  296. linkBase?: string;
  297. /** 链接强制前缀。默认值:'' */
  298. linkPrefix?: string;
  299. /** 为列表添加标记,以便[自定义列表样式](https://github.com/Vanessa219/vditor/issues/390) 默认值:false */
  300. listStyle?: boolean;
  301. /** 支持 mark 标记 */
  302. mark?: boolean;
  303. }
  304. /** @link https://ld246.com/article/1549638745630#options-preview */
  305. interface IPreview {
  306. /** 预览 debounce 毫秒间隔。默认值: 1000 */
  307. delay?: number;
  308. /** 预览区域最大宽度。默认值: 768 */
  309. maxWidth?: number;
  310. /** 显示模式。默认值: 'both' */
  311. mode?: "both" | "editor";
  312. /** md 解析请求 */
  313. url?: string;
  314. /** @link https://ld246.com/article/1549638745630#options-preview-hljs */
  315. hljs?: IHljs;
  316. /** @link https://ld246.com/article/1549638745630#options-preview-math */
  317. math?: IMath;
  318. /** @link https://ld246.com/article/1549638745630#options-preview-markdown */
  319. markdown?: IMarkdownConfig;
  320. /** @link https://ld246.com/article/1549638745630#options-preview-theme */
  321. theme?: IPreviewTheme;
  322. /** @link https://ld246.com/article/1549638745630#options-preview-actions */
  323. actions?: Array<IPreviewAction | IPreviewActionCustom>;
  324. /** 预览回调 */
  325. parse?(element: HTMLElement): void;
  326. /** 渲染之前回调 */
  327. transform?(html: string): string;
  328. }
  329. type IPreviewAction = "desktop" | "tablet" | "mobile" | "mp-wechat" | "zhihu";
  330. interface IPreviewActionCustom {
  331. /** 键名 */
  332. key: string;
  333. /** 按钮文本 */
  334. text: string;
  335. /** 按钮 className 值 */
  336. className?: string;
  337. /** 按钮提示信息 */
  338. tooltip?: string;
  339. /** 点击回调 */
  340. click: (key: string) => void;
  341. }
  342. interface IPreviewOptions {
  343. mode: "dark" | "light";
  344. customEmoji?: IObject;
  345. lang?: (keyof II18n);
  346. lazyLoadImage?: string;
  347. emojiPath?: string;
  348. hljs?: IHljs;
  349. speech?: {
  350. enable?: boolean,
  351. };
  352. anchor?: number; // 0: no render, 1: render left, 2: render right
  353. math?: IMath;
  354. cdn?: string;
  355. markdown?: IMarkdownConfig;
  356. renderers?: ILuteRender;
  357. theme?: IPreviewTheme;
  358. icon?: "ant" | "material" | undefined;
  359. transform?(html: string): string;
  360. after?(): void;
  361. }
  362. interface IHintData {
  363. html: string;
  364. value: string;
  365. }
  366. interface IHintExtend {
  367. key: string;
  368. hint?(value: string): IHintData[];
  369. }
  370. /** @link https://ld246.com/article/1549638745630#options-hint */
  371. interface IHint {
  372. /** 提示内容是否进行 md 解析 */
  373. parse?: boolean;
  374. /** 常用表情提示 HTML */
  375. emojiTail?: string;
  376. /** 提示 debounce 毫秒间隔。默认值: 200 */
  377. delay?: number;
  378. /** 默认表情,可从 [lute/emoji_map](https://github.com/88250/lute/blob/master/parse/emoji_map.go#L32) 中选取,也可自定义 */
  379. emoji?: IObject;
  380. /** 表情图片地址。默认值: 'https://cdn.jsdelivr.net/npm/vditor@${VDITOR_VERSION}/dist/images/emoji' */
  381. emojiPath?: string;
  382. extend?: IHintExtend[];
  383. }
  384. interface IResize {
  385. position?: string;
  386. enable?: boolean;
  387. after?(height: number): void;
  388. }
  389. /** @link https://ld246.com/article/1549638745630#options */
  390. interface IOptions {
  391. /** 历史记录间隔 */
  392. undoDelay?: number;
  393. /** 内部调试时使用 */
  394. _lutePath?: string;
  395. /** 编辑器初始化值。默认值: '' */
  396. value?: string;
  397. /** 是否显示日志。默认值: false */
  398. debugger?: boolean;
  399. /** 是否启用打字机模式。默认值: false */
  400. typewriterMode?: boolean;
  401. /** 编辑器总高度。默认值: 'auto' */
  402. height?: number | string;
  403. /** 编辑器最小高度 */
  404. minHeight?: number;
  405. /** 编辑器总宽度,支持 %。默认值: 'auto' */
  406. width?: number | string;
  407. /** 输入区域为空时的提示。默认值: '' */
  408. placeholder?: string;
  409. /** 多语言。默认值: 'zh_CN' */
  410. lang?: (keyof II18n);
  411. /** @link https://ld246.com/article/1549638745630#options-fullscreen */
  412. fullscreen?: {
  413. index: number;
  414. };
  415. /** @link https://ld246.com/article/1549638745630#options-toolbar */
  416. toolbar?: Array<string | IMenuItem>;
  417. /** @link https://ld246.com/article/1549638745630#options-resize */
  418. resize?: IResize;
  419. /** @link https://ld246.com/article/1549638745630#options-counter */
  420. counter?: {
  421. enable: boolean;
  422. max?: number;
  423. type?: "markdown" | "text";
  424. after?(length: number, counter: {
  425. enable: boolean;
  426. max?: number;
  427. type?: "markdown" | "text"
  428. }): void
  429. };
  430. /** @link https://ld246.com/article/1549638745630#options-cache */
  431. cache?: {
  432. id?: string;
  433. enable?: boolean;
  434. after?(markdown: string): void;
  435. };
  436. /** 编辑模式。默认值: 'wysiwyg' */
  437. mode?: "wysiwyg" | "sv" | "ir";
  438. /** @link https://ld246.com/article/1549638745630#options-preview */
  439. preview?: IPreview;
  440. /** @link https://ld246.com/article/1549638745630#options-hint */
  441. hint?: IHint;
  442. /** @link https://ld246.com/article/1549638745630#options-toolbarConfig */
  443. toolbarConfig?: {
  444. hide?: boolean,
  445. pin?: boolean,
  446. };
  447. /** 评论 */
  448. comment?: {
  449. enable: boolean
  450. add?(id: string, text: string, commentsData: ICommentsData[]): void
  451. remove?(ids: string[]): void;
  452. scroll?(top: number): void;
  453. adjustTop?(commentsData: ICommentsData[]): void;
  454. };
  455. /** 主题。默认值: 'classic' */
  456. theme?: "classic" | "dark";
  457. /** 图标。默认值: 'ant' */
  458. icon?: "ant" | "material";
  459. /** @link https://ld246.com/article/1549638745630#options-upload */
  460. upload?: IUpload;
  461. /** @link https://ld246.com/article/1549638745630#options-classes */
  462. classes?: IClasses;
  463. /** 配置自建 CDN 地址。默认值: 'https://cdn.jsdelivr.net/npm/vditor@${VDITOR_VERSION}' */
  464. cdn?: string;
  465. /** tab 键操作字符串,支持 \t 及任意字符串 */
  466. tab?: string;
  467. /** @link https://ld246.com/article/1549638745630#options-outline */
  468. outline?: {
  469. enable: boolean,
  470. position: "left" | "right",
  471. };
  472. /** 编辑器异步渲染完成后的回调方法 */
  473. after?(): void;
  474. /** 输入后触发 */
  475. input?(value: string, previewElement?: HTMLElement): void;
  476. /** 聚焦后触发 */
  477. focus?(value: string): void;
  478. /** 失焦后触发 */
  479. blur?(value: string): void;
  480. /** `esc` 按下后触发 */
  481. esc?(value: string): void;
  482. /** `⌘/ctrl+enter` 按下后触发 */
  483. ctrlEnter?(value: string): void;
  484. /** 编辑器中选中文字后触发 */
  485. select?(value: string): void;
  486. }
  487. interface IEChart {
  488. setOption(option: any): void;
  489. resize(): void;
  490. }
  491. interface IVditor {
  492. element: HTMLElement;
  493. options: IOptions;
  494. originalInnerHTML: string;
  495. lute: Lute;
  496. currentMode: "sv" | "wysiwyg" | "ir";
  497. devtools?: {
  498. element: HTMLDivElement,
  499. renderEchart(vditor: IVditor): void,
  500. };
  501. outline: {
  502. element: HTMLElement,
  503. render(vditor: IVditor): string,
  504. toggle(vditor: IVditor, show?: boolean): void,
  505. };
  506. toolbar?: {
  507. elements?: { [key: string]: HTMLElement },
  508. element?: HTMLElement,
  509. };
  510. preview?: {
  511. element: HTMLElement
  512. render(vditor: IVditor, value?: string): void,
  513. };
  514. counter?: {
  515. element: HTMLElement
  516. render(vditor: IVditor, mdText?: string): void,
  517. };
  518. resize?: {
  519. element: HTMLElement,
  520. };
  521. hint: {
  522. timeId: number
  523. element: HTMLDivElement
  524. recentLanguage: string
  525. fillEmoji(element: HTMLElement, vditor: IVditor): void
  526. render(vditor: IVditor): void,
  527. genHTML(data: IHintData[], key: string, vditor: IVditor): void
  528. select(event: KeyboardEvent, vditor: IVditor): boolean,
  529. };
  530. tip: {
  531. element: HTMLElement
  532. show(text: string, time?: number): void
  533. hide(): void,
  534. };
  535. upload?: {
  536. element: HTMLElement
  537. isUploading: boolean
  538. range: Range,
  539. };
  540. undo?: {
  541. clearStack(vditor: IVditor): void,
  542. redo(vditor: IVditor): void
  543. undo(vditor: IVditor): void
  544. addToUndoStack(vditor: IVditor): void
  545. recordFirstPosition(vditor: IVditor, event: KeyboardEvent): void,
  546. resetIcon(vditor: IVditor): void,
  547. };
  548. wysiwyg?: {
  549. range: Range,
  550. element: HTMLPreElement,
  551. selectPopover: HTMLDivElement,
  552. popover: HTMLDivElement,
  553. afterRenderTimeoutId: number,
  554. hlToolbarTimeoutId: number,
  555. preventInput: boolean,
  556. composingLock: boolean,
  557. commentIds: string[]
  558. getComments(vditor: IVditor, getData?: boolean): ICommentsData[],
  559. triggerRemoveComment(vditor: IVditor): void,
  560. showComment(): void,
  561. hideComment(): void,
  562. };
  563. ir?: {
  564. range: Range,
  565. element: HTMLPreElement,
  566. composingLock: boolean,
  567. preventInput: boolean,
  568. processTimeoutId: number,
  569. hlToolbarTimeoutId: number,
  570. };
  571. sv?: {
  572. range: Range,
  573. element: HTMLPreElement,
  574. processTimeoutId: number,
  575. hlToolbarTimeoutId: number,
  576. composingLock: boolean,
  577. preventInput: boolean,
  578. };
  579. }
  580. interface ICommentsData {
  581. id: string;
  582. top: number;
  583. }