vditor 3.8.5 → 3.8.9
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +48 -45
- package/dist/index.css +2 -2
- package/dist/index.d.ts +4 -1
- package/dist/index.min.js +722 -858
- package/dist/js/i18n/en_US.js +85 -0
- package/dist/js/i18n/ja_JP.js +85 -0
- package/dist/js/i18n/ko_KR.js +85 -0
- package/dist/js/i18n/ru_RU.js +85 -0
- package/dist/js/i18n/zh_CN.js +85 -0
- package/dist/js/i18n/zh_TW.js +85 -0
- package/dist/js/lute/lute.min.js +31 -28
- package/dist/method.d.ts +4 -1
- package/dist/method.min.js +157 -543
- package/dist/ts/markdown/adapterRender.d.ts +33 -0
- package/dist/ts/markdown/codeRender.d.ts +1 -2
- package/dist/ts/ui/initUI.d.ts +1 -0
- package/dist/ts/wysiwyg/index.d.ts +2 -0
- package/dist/types/index.d.ts +773 -0
- package/package.json +4 -4
- package/src/assets/.DS_Store +0 -0
- package/src/assets/scss/_content.scss +4 -0
- package/src/assets/scss/_reset.scss +11 -0
- package/src/index.ts +156 -97
- package/src/method.ts +6 -2
- package/src/ts/.DS_Store +0 -0
- package/src/ts/export/index.ts +7 -5
- package/src/ts/hint/index.ts +20 -11
- package/src/ts/markdown/abcRender.ts +3 -2
- package/src/ts/markdown/adapterRender.ts +33 -0
- package/src/ts/markdown/chartRender.ts +3 -2
- package/src/ts/markdown/codeRender.ts +5 -6
- package/src/ts/markdown/flowchartRender.ts +3 -2
- package/src/ts/markdown/graphvizRender.ts +13 -11
- package/src/ts/markdown/mathRender.ts +5 -4
- package/src/ts/markdown/mermaidRender.ts +4 -2
- package/src/ts/markdown/mindmapRender.ts +3 -2
- package/src/ts/markdown/plantumlRender.ts +3 -2
- package/src/ts/markdown/previewRender.ts +26 -4
- package/src/ts/preview/image.ts +2 -4
- package/src/ts/preview/index.ts +2 -5
- package/src/ts/toolbar/EditMode.ts +3 -4
- package/src/ts/toolbar/Headings.ts +6 -6
- package/src/ts/toolbar/Info.ts +1 -1
- package/src/ts/toolbar/MenuItem.ts +1 -3
- package/src/ts/toolbar/Record.ts +3 -4
- package/src/ts/ui/initUI.ts +19 -5
- package/src/ts/upload/index.ts +11 -11
- package/src/ts/util/Options.ts +255 -196
- package/src/ts/util/editorCommonEvent.ts +2 -2
- package/src/ts/util/fixBrowserBehavior.ts +10 -6
- package/src/ts/util/processCode.ts +1 -1
- package/src/ts/wysiwyg/highlightToolbarWYSIWYG.ts +298 -138
- package/src/ts/wysiwyg/index.ts +9 -4
- package/CHANGELOG.md +0 -1053
- package/dist/images/.DS_Store +0 -0
- package/dist/js/.DS_Store +0 -0
- package/dist/js/lute/.DS_Store +0 -0
- package/dist/js/mathjax/.DS_Store +0 -0
- package/dist/ts/i18n/index.d.ts +0 -2
- package/src/ts/i18n/index.ts +0 -476
|
@@ -0,0 +1,773 @@
|
|
|
1
|
+
declare module "*.svg";
|
|
2
|
+
|
|
3
|
+
declare module "*.png";
|
|
4
|
+
|
|
5
|
+
interface Window {
|
|
6
|
+
VditorI18n: ITips;
|
|
7
|
+
}
|
|
8
|
+
|
|
9
|
+
interface IObject {
|
|
10
|
+
[key: string]: string;
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
interface ILuteNode {
|
|
14
|
+
TokensStr: () => string;
|
|
15
|
+
__internal_object__: {
|
|
16
|
+
Parent: {
|
|
17
|
+
Type: number,
|
|
18
|
+
},
|
|
19
|
+
HeadingLevel: string,
|
|
20
|
+
};
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
type ILuteRenderCallback = (node: ILuteNode, entering: boolean) => [string, number];
|
|
24
|
+
|
|
25
|
+
/** @link https://ld246.com/article/1588412297062 */
|
|
26
|
+
interface ILuteRender {
|
|
27
|
+
renderDocument?: ILuteRenderCallback;
|
|
28
|
+
renderParagraph?: ILuteRenderCallback;
|
|
29
|
+
renderText?: ILuteRenderCallback;
|
|
30
|
+
renderCodeBlock?: ILuteRenderCallback;
|
|
31
|
+
renderCodeBlockOpenMarker?: ILuteRenderCallback;
|
|
32
|
+
renderCodeBlockInfoMarker?: ILuteRenderCallback;
|
|
33
|
+
renderCodeBlockCode?: ILuteRenderCallback;
|
|
34
|
+
renderCodeBlockCloseMarker?: ILuteRenderCallback;
|
|
35
|
+
renderMathBlock?: ILuteRenderCallback;
|
|
36
|
+
renderMathBlockOpenMarker?: ILuteRenderCallback;
|
|
37
|
+
renderMathBlockContent?: ILuteRenderCallback;
|
|
38
|
+
renderMathBlockCloseMarker?: ILuteRenderCallback;
|
|
39
|
+
renderBlockquote?: ILuteRenderCallback;
|
|
40
|
+
renderBlockquoteMarker?: ILuteRenderCallback;
|
|
41
|
+
renderHeading?: ILuteRenderCallback;
|
|
42
|
+
renderHeadingC8hMarker?: ILuteRenderCallback;
|
|
43
|
+
renderList?: ILuteRenderCallback;
|
|
44
|
+
renderListItem?: ILuteRenderCallback;
|
|
45
|
+
renderTaskListItemMarker?: ILuteRenderCallback;
|
|
46
|
+
renderThematicBreak?: ILuteRenderCallback;
|
|
47
|
+
renderHTML?: ILuteRenderCallback;
|
|
48
|
+
renderTable?: ILuteRenderCallback;
|
|
49
|
+
renderTableHead?: ILuteRenderCallback;
|
|
50
|
+
renderTableRow?: ILuteRenderCallback;
|
|
51
|
+
renderTableCell?: ILuteRenderCallback;
|
|
52
|
+
renderFootnotesDef?: ILuteRenderCallback;
|
|
53
|
+
renderCodeSpan?: ILuteRenderCallback;
|
|
54
|
+
renderCodeSpanOpenMarker?: ILuteRenderCallback;
|
|
55
|
+
renderCodeSpanContent?: ILuteRenderCallback;
|
|
56
|
+
renderCodeSpanCloseMarker?: ILuteRenderCallback;
|
|
57
|
+
renderInlineMath?: ILuteRenderCallback;
|
|
58
|
+
renderInlineMathOpenMarker?: ILuteRenderCallback;
|
|
59
|
+
renderInlineMathContent?: ILuteRenderCallback;
|
|
60
|
+
renderInlineMathCloseMarker?: ILuteRenderCallback;
|
|
61
|
+
renderEmphasis?: ILuteRenderCallback;
|
|
62
|
+
renderEmAsteriskOpenMarker?: ILuteRenderCallback;
|
|
63
|
+
renderEmAsteriskCloseMarker?: ILuteRenderCallback;
|
|
64
|
+
renderEmUnderscoreOpenMarker?: ILuteRenderCallback;
|
|
65
|
+
renderEmUnderscoreCloseMarker?: ILuteRenderCallback;
|
|
66
|
+
renderStrong?: ILuteRenderCallback;
|
|
67
|
+
renderStrongA6kOpenMarker?: ILuteRenderCallback;
|
|
68
|
+
renderStrongA6kCloseMarker?: ILuteRenderCallback;
|
|
69
|
+
renderStrongU8eOpenMarker?: ILuteRenderCallback;
|
|
70
|
+
renderStrongU8eCloseMarker?: ILuteRenderCallback;
|
|
71
|
+
renderStrikethrough?: ILuteRenderCallback;
|
|
72
|
+
renderStrikethrough1OpenMarker?: ILuteRenderCallback;
|
|
73
|
+
renderStrikethrough1CloseMarker?: ILuteRenderCallback;
|
|
74
|
+
renderStrikethrough2OpenMarker?: ILuteRenderCallback;
|
|
75
|
+
renderStrikethrough2CloseMarker?: ILuteRenderCallback;
|
|
76
|
+
renderHardBreak?: ILuteRenderCallback;
|
|
77
|
+
renderSoftBreak?: ILuteRenderCallback;
|
|
78
|
+
renderInlineHTML?: ILuteRenderCallback;
|
|
79
|
+
renderLink?: ILuteRenderCallback;
|
|
80
|
+
renderOpenBracket?: ILuteRenderCallback;
|
|
81
|
+
renderCloseBracket?: ILuteRenderCallback;
|
|
82
|
+
renderOpenParen?: ILuteRenderCallback;
|
|
83
|
+
renderCloseParen?: ILuteRenderCallback;
|
|
84
|
+
renderLinkText?: ILuteRenderCallback;
|
|
85
|
+
renderLinkSpace?: ILuteRenderCallback;
|
|
86
|
+
renderLinkDest?: ILuteRenderCallback;
|
|
87
|
+
renderLinkTitle?: ILuteRenderCallback;
|
|
88
|
+
renderImage?: ILuteRenderCallback;
|
|
89
|
+
renderBang?: ILuteRenderCallback;
|
|
90
|
+
renderEmoji?: ILuteRenderCallback;
|
|
91
|
+
renderEmojiUnicode?: ILuteRenderCallback;
|
|
92
|
+
renderEmojiImg?: ILuteRenderCallback;
|
|
93
|
+
renderEmojiAlias?: ILuteRenderCallback;
|
|
94
|
+
renderToC?: ILuteRenderCallback;
|
|
95
|
+
renderFootnotesRef?: ILuteRenderCallback;
|
|
96
|
+
renderBackslash?: ILuteRenderCallback;
|
|
97
|
+
renderBackslashContent?: ILuteRenderCallback;
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
interface ILuteOptions extends IMarkdownConfig {
|
|
101
|
+
emojis: IObject;
|
|
102
|
+
emojiSite: string;
|
|
103
|
+
headingAnchor: boolean;
|
|
104
|
+
inlineMathDigit: boolean;
|
|
105
|
+
lazyLoadImage?: string;
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
declare class Lute {
|
|
109
|
+
public static WalkStop: number;
|
|
110
|
+
public static WalkSkipChildren: number;
|
|
111
|
+
public static WalkContinue: number;
|
|
112
|
+
public static Version: string;
|
|
113
|
+
public static Caret: string;
|
|
114
|
+
|
|
115
|
+
public static New(): Lute;
|
|
116
|
+
|
|
117
|
+
public static GetHeadingID(node: ILuteNode): string;
|
|
118
|
+
|
|
119
|
+
public static NewNodeID(): string;
|
|
120
|
+
|
|
121
|
+
public static Sanitize(html: string): string;
|
|
122
|
+
|
|
123
|
+
private constructor();
|
|
124
|
+
|
|
125
|
+
public SetJSRenderers(options?: {
|
|
126
|
+
renderers: {
|
|
127
|
+
HTML2VditorDOM?: ILuteRender,
|
|
128
|
+
HTML2VditorIRDOM?: ILuteRender,
|
|
129
|
+
HTML2Md?: ILuteRender,
|
|
130
|
+
Md2HTML?: ILuteRender,
|
|
131
|
+
Md2VditorDOM?: ILuteRender,
|
|
132
|
+
Md2VditorIRDOM?: ILuteRender,
|
|
133
|
+
Md2VditorSVDOM?: ILuteRender,
|
|
134
|
+
},
|
|
135
|
+
}): void;
|
|
136
|
+
|
|
137
|
+
public SetChineseParagraphBeginningSpace(enable: boolean): void;
|
|
138
|
+
|
|
139
|
+
public SetHeadingID(enable: boolean): void;
|
|
140
|
+
|
|
141
|
+
public SetRenderListStyle(enable: boolean): void;
|
|
142
|
+
|
|
143
|
+
public SetLinkBase(url: string): void;
|
|
144
|
+
|
|
145
|
+
public SetVditorIR(enable: boolean): void;
|
|
146
|
+
|
|
147
|
+
public SetVditorSV(enable: boolean): void;
|
|
148
|
+
|
|
149
|
+
public SetVditorWYSIWYG(enable: boolean): void;
|
|
150
|
+
|
|
151
|
+
public SetLinkPrefix(url: string): void;
|
|
152
|
+
|
|
153
|
+
public SetMark(enable: boolean): void;
|
|
154
|
+
|
|
155
|
+
public SetSanitize(enable: boolean): void;
|
|
156
|
+
|
|
157
|
+
public SetHeadingAnchor(enable: boolean): void;
|
|
158
|
+
|
|
159
|
+
public SetImageLazyLoading(imagePath: string): void;
|
|
160
|
+
|
|
161
|
+
public SetInlineMathAllowDigitAfterOpenMarker(enable: boolean): void;
|
|
162
|
+
|
|
163
|
+
public SetToC(enable: boolean): void;
|
|
164
|
+
|
|
165
|
+
public SetFootnotes(enable: boolean): void;
|
|
166
|
+
|
|
167
|
+
public SetAutoSpace(enable: boolean): void;
|
|
168
|
+
|
|
169
|
+
public SetFixTermTypo(enable: boolean): void;
|
|
170
|
+
|
|
171
|
+
public SetEmojiSite(emojiSite: string): void;
|
|
172
|
+
|
|
173
|
+
public SetVditorCodeBlockPreview(enable: boolean): void;
|
|
174
|
+
|
|
175
|
+
public SetVditorMathBlockPreview(enable: boolean): void;
|
|
176
|
+
|
|
177
|
+
public PutEmojis(emojis: IObject): void;
|
|
178
|
+
|
|
179
|
+
public GetEmojis(): IObject;
|
|
180
|
+
|
|
181
|
+
// debugger md
|
|
182
|
+
public RenderEChartsJSON(text: string): string;
|
|
183
|
+
|
|
184
|
+
// md 转换为 html
|
|
185
|
+
public Md2HTML(markdown: string): string;
|
|
186
|
+
|
|
187
|
+
// 粘贴时将 html 转换为 md
|
|
188
|
+
public HTML2Md(html: string): string;
|
|
189
|
+
|
|
190
|
+
// wysiwyg 转换为 html
|
|
191
|
+
public VditorDOM2HTML(vhtml: string): string;
|
|
192
|
+
|
|
193
|
+
// wysiwyg 输入渲染
|
|
194
|
+
public SpinVditorDOM(html: string): string;
|
|
195
|
+
|
|
196
|
+
// 粘贴时将 html 转换为 wysiwyg
|
|
197
|
+
public HTML2VditorDOM(html: string): string;
|
|
198
|
+
|
|
199
|
+
// 将 wysiwyg 转换为 md
|
|
200
|
+
public VditorDOM2Md(html: string): string;
|
|
201
|
+
|
|
202
|
+
// 将 md 转换为 wysiwyg
|
|
203
|
+
public Md2VditorDOM(markdown: string): string;
|
|
204
|
+
|
|
205
|
+
// ir 输入渲染
|
|
206
|
+
public SpinVditorIRDOM(markdown: string): string;
|
|
207
|
+
|
|
208
|
+
// ir 获取 md
|
|
209
|
+
public VditorIRDOM2Md(html: string): string;
|
|
210
|
+
|
|
211
|
+
// md 转换为 ir
|
|
212
|
+
public Md2VditorIRDOM(text: string): string;
|
|
213
|
+
|
|
214
|
+
// 获取 HTML
|
|
215
|
+
public VditorIRDOM2HTML(html: string): string;
|
|
216
|
+
|
|
217
|
+
// 粘贴时将 html 转换为 sv
|
|
218
|
+
public HTML2VditorIRDOM(html: string): string;
|
|
219
|
+
|
|
220
|
+
// sv 输入渲染
|
|
221
|
+
public SpinVditorSVDOM(text: string): string;
|
|
222
|
+
|
|
223
|
+
// 粘贴是 md 转换为 sv
|
|
224
|
+
public Md2VditorSVDOM(text: string): string;
|
|
225
|
+
|
|
226
|
+
// 将markdown转化为JSON结构输出 https://github.com/88250/lute/issues/120
|
|
227
|
+
public RenderJSON(markdown: string): string;
|
|
228
|
+
}
|
|
229
|
+
|
|
230
|
+
declare const webkitAudioContext: {
|
|
231
|
+
prototype: AudioContext
|
|
232
|
+
new(contextOptions?: AudioContextOptions): AudioContext,
|
|
233
|
+
};
|
|
234
|
+
|
|
235
|
+
interface ITips {
|
|
236
|
+
[index: string]: string;
|
|
237
|
+
|
|
238
|
+
alignCenter: string;
|
|
239
|
+
alignLeft: string;
|
|
240
|
+
alignRight: string;
|
|
241
|
+
alternateText: string;
|
|
242
|
+
bold: string;
|
|
243
|
+
both: string;
|
|
244
|
+
check: string;
|
|
245
|
+
close: string;
|
|
246
|
+
code: string;
|
|
247
|
+
"code-theme": string;
|
|
248
|
+
column: string;
|
|
249
|
+
comment: string;
|
|
250
|
+
confirm: string;
|
|
251
|
+
"content-theme": string;
|
|
252
|
+
copied: string;
|
|
253
|
+
copy: string;
|
|
254
|
+
"delete-column": string;
|
|
255
|
+
"delete-row": string;
|
|
256
|
+
devtools: string;
|
|
257
|
+
down: string;
|
|
258
|
+
downloadTip: string;
|
|
259
|
+
edit: string;
|
|
260
|
+
"edit-mode": string;
|
|
261
|
+
emoji: string;
|
|
262
|
+
export: string;
|
|
263
|
+
fileTypeError: string;
|
|
264
|
+
footnoteRef: string;
|
|
265
|
+
fullscreen: string;
|
|
266
|
+
generate: string;
|
|
267
|
+
headings: string;
|
|
268
|
+
help: string;
|
|
269
|
+
imageURL: string;
|
|
270
|
+
indent: string;
|
|
271
|
+
info: string;
|
|
272
|
+
"inline-code": string;
|
|
273
|
+
"insert-after": string;
|
|
274
|
+
"insert-before": string;
|
|
275
|
+
insertColumnLeft: string;
|
|
276
|
+
insertColumnRight: string;
|
|
277
|
+
insertRowAbove: string;
|
|
278
|
+
insertRowBelow: string;
|
|
279
|
+
instantRendering: string;
|
|
280
|
+
italic: string;
|
|
281
|
+
language: string;
|
|
282
|
+
line: string;
|
|
283
|
+
link: string;
|
|
284
|
+
linkRef: string;
|
|
285
|
+
list: string;
|
|
286
|
+
more: string;
|
|
287
|
+
nameEmpty: string;
|
|
288
|
+
"ordered-list": string;
|
|
289
|
+
outdent: string;
|
|
290
|
+
outline: string;
|
|
291
|
+
over: string;
|
|
292
|
+
performanceTip: string;
|
|
293
|
+
preview: string;
|
|
294
|
+
quote: string;
|
|
295
|
+
record: string;
|
|
296
|
+
"record-tip": string;
|
|
297
|
+
recording: string;
|
|
298
|
+
redo: string;
|
|
299
|
+
remove: string;
|
|
300
|
+
row: string;
|
|
301
|
+
spin: string;
|
|
302
|
+
splitView: string;
|
|
303
|
+
strike: string;
|
|
304
|
+
table: string;
|
|
305
|
+
textIsNotEmpty: string;
|
|
306
|
+
title: string;
|
|
307
|
+
tooltipText: string;
|
|
308
|
+
undo: string;
|
|
309
|
+
up: string;
|
|
310
|
+
update: string;
|
|
311
|
+
upload: string;
|
|
312
|
+
uploadError: string;
|
|
313
|
+
uploading: string;
|
|
314
|
+
wysiwyg: string;
|
|
315
|
+
}
|
|
316
|
+
|
|
317
|
+
interface II18n {
|
|
318
|
+
en_US: ITips;
|
|
319
|
+
ja_JP: ITips;
|
|
320
|
+
ko_KR: ITips;
|
|
321
|
+
ru_RU: ITips;
|
|
322
|
+
zh_CN: ITips;
|
|
323
|
+
zh_TW: ITips;
|
|
324
|
+
}
|
|
325
|
+
|
|
326
|
+
interface IClasses {
|
|
327
|
+
preview?: string;
|
|
328
|
+
}
|
|
329
|
+
|
|
330
|
+
interface IPreviewTheme {
|
|
331
|
+
current: string;
|
|
332
|
+
list?: IObject;
|
|
333
|
+
path?: string;
|
|
334
|
+
}
|
|
335
|
+
|
|
336
|
+
/** @link https://ld246.com/article/1549638745630#options-upload */
|
|
337
|
+
interface IUpload {
|
|
338
|
+
/** 上传 url */
|
|
339
|
+
url?: string;
|
|
340
|
+
/** 上传文件最大 Byte */
|
|
341
|
+
max?: number;
|
|
342
|
+
/** 剪切板中包含图片地址时,使用此 url 重新上传 */
|
|
343
|
+
linkToImgUrl?: string;
|
|
344
|
+
/** CORS 上传验证,头为 X-Upload-Token */
|
|
345
|
+
token?: string;
|
|
346
|
+
/** 文件上传类型,同 [input accept](https://www.w3schools.com/tags/att_input_accept.asp) */
|
|
347
|
+
accept?: string;
|
|
348
|
+
/** 跨站点访问控制。默认值: false */
|
|
349
|
+
withCredentials?: boolean;
|
|
350
|
+
/** 请求头设置 */
|
|
351
|
+
headers?: IObject;
|
|
352
|
+
/** 额外请求参数 */
|
|
353
|
+
extraData?: { [key: string]: string | Blob };
|
|
354
|
+
/** 是否允许多文件上传。默认值:true */
|
|
355
|
+
multiple?: boolean;
|
|
356
|
+
/** 上传字段名。默认值:file[] */
|
|
357
|
+
fieldName?: string;
|
|
358
|
+
|
|
359
|
+
/** 每次上传前都会重新设置请求头 */
|
|
360
|
+
setHeaders?(): IObject;
|
|
361
|
+
|
|
362
|
+
/** 上传成功回调 */
|
|
363
|
+
success?(editor: HTMLPreElement, msg: string): void;
|
|
364
|
+
|
|
365
|
+
/** 上传失败回调 */
|
|
366
|
+
error?(msg: string): void;
|
|
367
|
+
|
|
368
|
+
/** 文件名安全处理。 默认值: name => name.replace(/\W/g, '') */
|
|
369
|
+
filename?(name: string): string;
|
|
370
|
+
|
|
371
|
+
/** 校验,成功时返回 true 否则返回错误信息 */
|
|
372
|
+
validate?(files: File[]): string | boolean;
|
|
373
|
+
|
|
374
|
+
/** 自定义上传,当发生错误时返回错误信息 */
|
|
375
|
+
handler?(files: File[]): string | null | Promise<string> | Promise<null>;
|
|
376
|
+
|
|
377
|
+
/** 对服务端返回的数据进行转换,以满足内置的数据结构 */
|
|
378
|
+
format?(files: File[], responseText: string): string;
|
|
379
|
+
|
|
380
|
+
/** 对服务端返回的数据进行转换(对应linkToImgUrl),以满足内置的数据结构 */
|
|
381
|
+
linkToImgFormat?(responseText: string): string;
|
|
382
|
+
|
|
383
|
+
/** 将上传的文件处理后再返回 */
|
|
384
|
+
file?(files: File[]): File[] | Promise<File[]>;
|
|
385
|
+
|
|
386
|
+
/** 图片地址上传后的回调 */
|
|
387
|
+
linkToImgCallback?(responseText: string): void;
|
|
388
|
+
}
|
|
389
|
+
|
|
390
|
+
/** @link https://ld246.com/article/1549638745630#options-toolbar */
|
|
391
|
+
interface IMenuItem {
|
|
392
|
+
/** 唯一标示 */
|
|
393
|
+
name: string;
|
|
394
|
+
/** svg 图标 HTML */
|
|
395
|
+
icon?: string;
|
|
396
|
+
/** 元素的样式名称 */
|
|
397
|
+
className?: string;
|
|
398
|
+
/** 提示 */
|
|
399
|
+
tip?: string;
|
|
400
|
+
/** 快捷键,支持⌘/ctrl-key 或 ⌘/ctrl-⇧/shift-key 格式的配置,不支持 wysiwyg 模式 */
|
|
401
|
+
hotkey?: string;
|
|
402
|
+
/** 插入编辑器中的后缀 */
|
|
403
|
+
suffix?: string;
|
|
404
|
+
/** 插入编辑器中的前缀 */
|
|
405
|
+
prefix?: string;
|
|
406
|
+
/** 提示位置:ne, nw */
|
|
407
|
+
tipPosition?: string;
|
|
408
|
+
/** 子菜单 */
|
|
409
|
+
toolbar?: Array<string | IMenuItem>;
|
|
410
|
+
/** 菜单层级,最大为 3,内部使用 */
|
|
411
|
+
level?: number;
|
|
412
|
+
|
|
413
|
+
/** 自定义按钮点击时触发的事件 */
|
|
414
|
+
click?(event: Event, vditor: IVditor): void;
|
|
415
|
+
}
|
|
416
|
+
|
|
417
|
+
/** @link https://ld246.com/article/1549638745630#options-preview-hljs */
|
|
418
|
+
interface IHljs {
|
|
419
|
+
/** 是否启用行号。默认值: false */
|
|
420
|
+
lineNumber?: boolean;
|
|
421
|
+
/** 代码风格,可选值参见 [Chroma](https://xyproto.github.io/splash/docs/longer/all.html)。 默认值: 'github' */
|
|
422
|
+
style?: string;
|
|
423
|
+
/** 是否启用代码高亮。默认值: true */
|
|
424
|
+
enable?: boolean;
|
|
425
|
+
}
|
|
426
|
+
|
|
427
|
+
/** @link https://ld246.com/article/1549638745630#options-preview-math */
|
|
428
|
+
interface IMath {
|
|
429
|
+
/** 内联数学公式起始 $ 后是否允许数字。默认值: false */
|
|
430
|
+
inlineDigit?: boolean;
|
|
431
|
+
/** 使用 MathJax 渲染时传入的宏定义。默认值: {} */
|
|
432
|
+
macros?: object;
|
|
433
|
+
/** 数学公式渲染引擎。默认值: 'KaTeX' */
|
|
434
|
+
engine?: "KaTeX" | "MathJax";
|
|
435
|
+
}
|
|
436
|
+
|
|
437
|
+
/** @link https://ld246.com/article/1549638745630#options-preview-markdown */
|
|
438
|
+
interface IMarkdownConfig {
|
|
439
|
+
/** 自动空格。默认值: false */
|
|
440
|
+
autoSpace?: boolean;
|
|
441
|
+
/** 段落开头是否空两格。默认值: false */
|
|
442
|
+
paragraphBeginningSpace?: boolean;
|
|
443
|
+
/** 自动矫正术语。默认值: false */
|
|
444
|
+
fixTermTypo?: boolean;
|
|
445
|
+
/** 插入目录。默认值: false */
|
|
446
|
+
toc?: boolean;
|
|
447
|
+
/** 脚注。默认值: true */
|
|
448
|
+
footnotes?: boolean;
|
|
449
|
+
/** wysiwyg & ir 模式代码块是否渲染。默认值: true */
|
|
450
|
+
codeBlockPreview?: boolean;
|
|
451
|
+
/** wysiwyg & ir 模式数学公式块是否渲染。默认值: true */
|
|
452
|
+
mathBlockPreview?: boolean;
|
|
453
|
+
/** 是否启用过滤 XSS。默认值: true */
|
|
454
|
+
sanitize?: boolean;
|
|
455
|
+
/** 链接相对路径前缀。默认值:'' */
|
|
456
|
+
linkBase?: string;
|
|
457
|
+
/** 链接强制前缀。默认值:'' */
|
|
458
|
+
linkPrefix?: string;
|
|
459
|
+
/** 为列表添加标记,以便[自定义列表样式](https://github.com/Vanessa219/vditor/issues/390) 默认值:false */
|
|
460
|
+
listStyle?: boolean;
|
|
461
|
+
/** 支持 mark 标记 */
|
|
462
|
+
mark?: boolean;
|
|
463
|
+
}
|
|
464
|
+
|
|
465
|
+
/** @link https://ld246.com/article/1549638745630#options-preview */
|
|
466
|
+
interface IPreview {
|
|
467
|
+
/** 预览 debounce 毫秒间隔。默认值: 1000 */
|
|
468
|
+
delay?: number;
|
|
469
|
+
/** 预览区域最大宽度。默认值: 768 */
|
|
470
|
+
maxWidth?: number;
|
|
471
|
+
/** 显示模式。默认值: 'both' */
|
|
472
|
+
mode?: "both" | "editor";
|
|
473
|
+
/** md 解析请求 */
|
|
474
|
+
url?: string;
|
|
475
|
+
/** @link https://ld246.com/article/1549638745630#options-preview-hljs */
|
|
476
|
+
hljs?: IHljs;
|
|
477
|
+
/** @link https://ld246.com/article/1549638745630#options-preview-math */
|
|
478
|
+
math?: IMath;
|
|
479
|
+
/** @link https://ld246.com/article/1549638745630#options-preview-markdown */
|
|
480
|
+
markdown?: IMarkdownConfig;
|
|
481
|
+
/** @link https://ld246.com/article/1549638745630#options-preview-theme */
|
|
482
|
+
theme?: IPreviewTheme;
|
|
483
|
+
/** @link https://ld246.com/article/1549638745630#options-preview-actions */
|
|
484
|
+
actions?: Array<IPreviewAction | IPreviewActionCustom>;
|
|
485
|
+
|
|
486
|
+
/** 预览回调 */
|
|
487
|
+
parse?(element: HTMLElement): void;
|
|
488
|
+
|
|
489
|
+
/** 渲染之前回调 */
|
|
490
|
+
transform?(html: string): string;
|
|
491
|
+
}
|
|
492
|
+
|
|
493
|
+
type IPreviewAction = "desktop" | "tablet" | "mobile" | "mp-wechat" | "zhihu";
|
|
494
|
+
|
|
495
|
+
interface IPreviewActionCustom {
|
|
496
|
+
/** 键名 */
|
|
497
|
+
key: string;
|
|
498
|
+
/** 按钮文本 */
|
|
499
|
+
text: string;
|
|
500
|
+
/** 按钮 className 值 */
|
|
501
|
+
className?: string;
|
|
502
|
+
/** 按钮提示信息 */
|
|
503
|
+
tooltip?: string;
|
|
504
|
+
/** 点击回调 */
|
|
505
|
+
click: (key: string) => void;
|
|
506
|
+
}
|
|
507
|
+
|
|
508
|
+
interface IPreviewOptions {
|
|
509
|
+
mode: "dark" | "light";
|
|
510
|
+
customEmoji?: IObject;
|
|
511
|
+
lang?: (keyof II18n);
|
|
512
|
+
i18n?: ITips;
|
|
513
|
+
lazyLoadImage?: string;
|
|
514
|
+
emojiPath?: string;
|
|
515
|
+
hljs?: IHljs;
|
|
516
|
+
speech?: {
|
|
517
|
+
enable?: boolean,
|
|
518
|
+
};
|
|
519
|
+
anchor?: number; // 0: no render, 1: render left, 2: render right
|
|
520
|
+
math?: IMath;
|
|
521
|
+
cdn?: string;
|
|
522
|
+
markdown?: IMarkdownConfig;
|
|
523
|
+
renderers?: ILuteRender;
|
|
524
|
+
theme?: IPreviewTheme;
|
|
525
|
+
icon?: "ant" | "material" | undefined;
|
|
526
|
+
|
|
527
|
+
transform?(html: string): string;
|
|
528
|
+
|
|
529
|
+
after?(): void;
|
|
530
|
+
}
|
|
531
|
+
|
|
532
|
+
interface IHintData {
|
|
533
|
+
html: string;
|
|
534
|
+
value: string;
|
|
535
|
+
}
|
|
536
|
+
|
|
537
|
+
interface IHintExtend {
|
|
538
|
+
key: string;
|
|
539
|
+
|
|
540
|
+
hint?(value: string): IHintData[] | Promise<IHintData[]>;
|
|
541
|
+
}
|
|
542
|
+
|
|
543
|
+
/** @link https://ld246.com/article/1549638745630#options-hint */
|
|
544
|
+
interface IHint {
|
|
545
|
+
/** 提示内容是否进行 md 解析 */
|
|
546
|
+
parse?: boolean;
|
|
547
|
+
/** 常用表情提示 HTML */
|
|
548
|
+
emojiTail?: string;
|
|
549
|
+
/** 提示 debounce 毫秒间隔。默认值: 200 */
|
|
550
|
+
delay?: number;
|
|
551
|
+
/** 默认表情,可从 [lute/emoji_map](https://github.com/88250/lute/blob/master/parse/emoji_map.go#L32) 中选取,也可自定义 */
|
|
552
|
+
emoji?: IObject;
|
|
553
|
+
/** 表情图片地址。默认值: 'https://cdn.jsdelivr.net/npm/vditor@${VDITOR_VERSION}/dist/images/emoji' */
|
|
554
|
+
emojiPath?: string;
|
|
555
|
+
extend?: IHintExtend[];
|
|
556
|
+
}
|
|
557
|
+
|
|
558
|
+
interface IResize {
|
|
559
|
+
position?: string;
|
|
560
|
+
enable?: boolean;
|
|
561
|
+
|
|
562
|
+
after?(height: number): void;
|
|
563
|
+
}
|
|
564
|
+
|
|
565
|
+
/** @link https://ld246.com/article/1549638745630#options */
|
|
566
|
+
interface IOptions {
|
|
567
|
+
/** 历史记录间隔 */
|
|
568
|
+
undoDelay?: number;
|
|
569
|
+
/** 内部调试时使用 */
|
|
570
|
+
_lutePath?: string;
|
|
571
|
+
/** 编辑器初始化值。默认值: '' */
|
|
572
|
+
value?: string;
|
|
573
|
+
/** 是否显示日志。默认值: false */
|
|
574
|
+
debugger?: boolean;
|
|
575
|
+
/** 是否启用打字机模式。默认值: false */
|
|
576
|
+
typewriterMode?: boolean;
|
|
577
|
+
/** 编辑器总高度。默认值: 'auto' */
|
|
578
|
+
height?: number | string;
|
|
579
|
+
/** 编辑器最小高度 */
|
|
580
|
+
minHeight?: number;
|
|
581
|
+
/** 编辑器总宽度,支持 %。默认值: 'auto' */
|
|
582
|
+
width?: number | string;
|
|
583
|
+
/** 输入区域为空时的提示。默认值: '' */
|
|
584
|
+
placeholder?: string;
|
|
585
|
+
/** 多语言。默认值: 'zh_CN' */
|
|
586
|
+
lang?: (keyof II18n);
|
|
587
|
+
/** 国际化, 自定义语言。优先级低于lang */
|
|
588
|
+
i18n?: ITips;
|
|
589
|
+
/** @link https://ld246.com/article/1549638745630#options-fullscreen */
|
|
590
|
+
fullscreen?: {
|
|
591
|
+
index: number;
|
|
592
|
+
};
|
|
593
|
+
/** @link https://ld246.com/article/1549638745630#options-toolbar */
|
|
594
|
+
toolbar?: Array<string | IMenuItem>;
|
|
595
|
+
/** @link https://ld246.com/article/1549638745630#options-resize */
|
|
596
|
+
resize?: IResize;
|
|
597
|
+
/** @link https://ld246.com/article/1549638745630#options-counter */
|
|
598
|
+
counter?: {
|
|
599
|
+
enable: boolean;
|
|
600
|
+
max?: number;
|
|
601
|
+
type?: "markdown" | "text";
|
|
602
|
+
after?(length: number, counter: {
|
|
603
|
+
enable: boolean;
|
|
604
|
+
max?: number;
|
|
605
|
+
type?: "markdown" | "text"
|
|
606
|
+
}): void
|
|
607
|
+
};
|
|
608
|
+
/** @link https://ld246.com/article/1549638745630#options-cache */
|
|
609
|
+
cache?: {
|
|
610
|
+
id?: string;
|
|
611
|
+
enable?: boolean;
|
|
612
|
+
after?(markdown: string): void;
|
|
613
|
+
};
|
|
614
|
+
/** 编辑模式。默认值: 'wysiwyg' */
|
|
615
|
+
mode?: "wysiwyg" | "sv" | "ir";
|
|
616
|
+
/** @link https://ld246.com/article/1549638745630#options-preview */
|
|
617
|
+
preview?: IPreview;
|
|
618
|
+
/** @link https://ld246.com/article/1549638745630#options-hint */
|
|
619
|
+
hint?: IHint;
|
|
620
|
+
/** @link https://ld246.com/article/1549638745630#options-toolbarConfig */
|
|
621
|
+
toolbarConfig?: {
|
|
622
|
+
hide?: boolean,
|
|
623
|
+
pin?: boolean,
|
|
624
|
+
};
|
|
625
|
+
/** 评论 */
|
|
626
|
+
comment?: {
|
|
627
|
+
enable: boolean
|
|
628
|
+
add?(id: string, text: string, commentsData: ICommentsData[]): void
|
|
629
|
+
remove?(ids: string[]): void;
|
|
630
|
+
scroll?(top: number): void;
|
|
631
|
+
adjustTop?(commentsData: ICommentsData[]): void;
|
|
632
|
+
};
|
|
633
|
+
/** 主题。默认值: 'classic' */
|
|
634
|
+
theme?: "classic" | "dark";
|
|
635
|
+
/** 图标。默认值: 'ant' */
|
|
636
|
+
icon?: "ant" | "material";
|
|
637
|
+
/** @link https://ld246.com/article/1549638745630#options-upload */
|
|
638
|
+
upload?: IUpload;
|
|
639
|
+
/** @link https://ld246.com/article/1549638745630#options-classes */
|
|
640
|
+
classes?: IClasses;
|
|
641
|
+
/** 配置自建 CDN 地址。默认值: 'https://cdn.jsdelivr.net/npm/vditor@${VDITOR_VERSION}' */
|
|
642
|
+
cdn?: string;
|
|
643
|
+
/** tab 键操作字符串,支持 \t 及任意字符串 */
|
|
644
|
+
tab?: string;
|
|
645
|
+
/** @link https://ld246.com/article/1549638745630#options-outline */
|
|
646
|
+
outline?: {
|
|
647
|
+
enable: boolean,
|
|
648
|
+
position: "left" | "right",
|
|
649
|
+
};
|
|
650
|
+
|
|
651
|
+
/** 编辑器异步渲染完成后的回调方法 */
|
|
652
|
+
after?(): void;
|
|
653
|
+
|
|
654
|
+
/** 输入后触发 */
|
|
655
|
+
input?(value: string): void;
|
|
656
|
+
|
|
657
|
+
/** 聚焦后触发 */
|
|
658
|
+
focus?(value: string): void;
|
|
659
|
+
|
|
660
|
+
/** 失焦后触发 */
|
|
661
|
+
blur?(value: string): void;
|
|
662
|
+
|
|
663
|
+
/** `esc` 按下后触发 */
|
|
664
|
+
esc?(value: string): void;
|
|
665
|
+
|
|
666
|
+
/** `⌘/ctrl+enter` 按下后触发 */
|
|
667
|
+
ctrlEnter?(value: string): void;
|
|
668
|
+
|
|
669
|
+
/** 编辑器中选中文字后触发 */
|
|
670
|
+
select?(value: string): void;
|
|
671
|
+
}
|
|
672
|
+
|
|
673
|
+
interface IEChart {
|
|
674
|
+
setOption(option: any): void;
|
|
675
|
+
|
|
676
|
+
resize(): void;
|
|
677
|
+
}
|
|
678
|
+
|
|
679
|
+
interface IVditor {
|
|
680
|
+
element: HTMLElement;
|
|
681
|
+
options: IOptions;
|
|
682
|
+
originalInnerHTML: string;
|
|
683
|
+
lute: Lute;
|
|
684
|
+
currentMode: "sv" | "wysiwyg" | "ir";
|
|
685
|
+
devtools?: {
|
|
686
|
+
element: HTMLDivElement,
|
|
687
|
+
renderEchart(vditor: IVditor): void,
|
|
688
|
+
};
|
|
689
|
+
outline: {
|
|
690
|
+
element: HTMLElement,
|
|
691
|
+
render(vditor: IVditor): string,
|
|
692
|
+
toggle(vditor: IVditor, show?: boolean): void,
|
|
693
|
+
};
|
|
694
|
+
toolbar?: {
|
|
695
|
+
elements?: { [key: string]: HTMLElement },
|
|
696
|
+
element?: HTMLElement,
|
|
697
|
+
};
|
|
698
|
+
preview?: {
|
|
699
|
+
element: HTMLElement
|
|
700
|
+
render(vditor: IVditor, value?: string): void,
|
|
701
|
+
};
|
|
702
|
+
counter?: {
|
|
703
|
+
element: HTMLElement
|
|
704
|
+
render(vditor: IVditor, mdText?: string): void,
|
|
705
|
+
};
|
|
706
|
+
resize?: {
|
|
707
|
+
element: HTMLElement,
|
|
708
|
+
};
|
|
709
|
+
hint: {
|
|
710
|
+
timeId: number
|
|
711
|
+
element: HTMLDivElement
|
|
712
|
+
recentLanguage: string
|
|
713
|
+
fillEmoji(element: HTMLElement, vditor: IVditor): void
|
|
714
|
+
render(vditor: IVditor): void,
|
|
715
|
+
genHTML(data: IHintData[], key: string, vditor: IVditor): void
|
|
716
|
+
select(event: KeyboardEvent, vditor: IVditor): boolean,
|
|
717
|
+
};
|
|
718
|
+
tip: {
|
|
719
|
+
element: HTMLElement
|
|
720
|
+
show(text: string, time?: number): void
|
|
721
|
+
hide(): void,
|
|
722
|
+
};
|
|
723
|
+
upload?: {
|
|
724
|
+
element: HTMLElement
|
|
725
|
+
isUploading: boolean
|
|
726
|
+
range: Range,
|
|
727
|
+
};
|
|
728
|
+
undo?: {
|
|
729
|
+
clearStack(vditor: IVditor): void,
|
|
730
|
+
redo(vditor: IVditor): void
|
|
731
|
+
undo(vditor: IVditor): void
|
|
732
|
+
addToUndoStack(vditor: IVditor): void
|
|
733
|
+
recordFirstPosition(vditor: IVditor, event: KeyboardEvent): void,
|
|
734
|
+
resetIcon(vditor: IVditor): void,
|
|
735
|
+
};
|
|
736
|
+
wysiwyg?: {
|
|
737
|
+
range: Range,
|
|
738
|
+
element: HTMLPreElement,
|
|
739
|
+
selectPopover: HTMLDivElement,
|
|
740
|
+
popover: HTMLDivElement,
|
|
741
|
+
afterRenderTimeoutId: number,
|
|
742
|
+
hlToolbarTimeoutId: number,
|
|
743
|
+
preventInput: boolean,
|
|
744
|
+
composingLock: boolean,
|
|
745
|
+
commentIds: string[]
|
|
746
|
+
getComments(vditor: IVditor, getData?: boolean): ICommentsData[],
|
|
747
|
+
triggerRemoveComment(vditor: IVditor): void,
|
|
748
|
+
showComment(): void,
|
|
749
|
+
hideComment(): void,
|
|
750
|
+
unbindListener(): void,
|
|
751
|
+
};
|
|
752
|
+
ir?: {
|
|
753
|
+
range: Range,
|
|
754
|
+
element: HTMLPreElement,
|
|
755
|
+
composingLock: boolean,
|
|
756
|
+
preventInput: boolean,
|
|
757
|
+
processTimeoutId: number,
|
|
758
|
+
hlToolbarTimeoutId: number,
|
|
759
|
+
};
|
|
760
|
+
sv?: {
|
|
761
|
+
range: Range,
|
|
762
|
+
element: HTMLPreElement,
|
|
763
|
+
processTimeoutId: number,
|
|
764
|
+
hlToolbarTimeoutId: number,
|
|
765
|
+
composingLock: boolean,
|
|
766
|
+
preventInput: boolean,
|
|
767
|
+
};
|
|
768
|
+
}
|
|
769
|
+
|
|
770
|
+
interface ICommentsData {
|
|
771
|
+
id: string;
|
|
772
|
+
top: number;
|
|
773
|
+
}
|