vditor 3.11.1 → 3.11.3

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.
Files changed (52) hide show
  1. package/README.md +13 -2
  2. package/dist/css/content-theme/ant-design.css +10 -0
  3. package/dist/css/content-theme/dark.css +10 -0
  4. package/dist/css/content-theme/light.css +13 -0
  5. package/dist/css/content-theme/wechat.css +10 -0
  6. package/dist/index.css +133 -4
  7. package/dist/index.js +715 -57
  8. package/dist/index.min.js +1 -1
  9. package/dist/js/i18n/es_ES.js +86 -0
  10. package/dist/js/i18n/ja_JP.js +2 -2
  11. package/dist/js/i18n/vi_VN.js +86 -0
  12. package/dist/js/i18n/zh_TW.js +8 -8
  13. package/dist/js/icons/ant.js +1 -1
  14. package/dist/js/icons/material.js +1 -1
  15. package/dist/js/lute/lute.min.js +87 -71
  16. package/dist/js/mermaid/mermaid.min.js +2027 -1047
  17. package/dist/js/wavedrom/LICENSE.WaveDrom +21 -0
  18. package/dist/js/wavedrom/wavedrom.min.js +9 -0
  19. package/dist/method.d.ts +2 -0
  20. package/dist/method.js +319 -8
  21. package/dist/method.min.js +1 -1
  22. package/dist/ts/constants.d.ts +4 -0
  23. package/dist/ts/markdown/adapterRender.d.ts +4 -0
  24. package/dist/ts/markdown/imageCaptionRender.d.ts +2 -0
  25. package/dist/ts/markdown/wavedromRender.d.ts +1 -0
  26. package/dist/ts/util/fixBrowserBehavior.d.ts +1 -0
  27. package/dist/types/index.d.ts +47 -3
  28. package/package.json +7 -4
  29. package/src/assets/less/_reset.less +103 -2
  30. package/src/assets/less/index.less +20 -0
  31. package/src/index.ts +4 -1
  32. package/src/method.ts +3 -0
  33. package/src/ts/constants.ts +5 -1
  34. package/src/ts/export/index.ts +2 -0
  35. package/src/ts/ir/index.ts +26 -0
  36. package/src/ts/ir/process.ts +24 -1
  37. package/src/ts/markdown/adapterRender.ts +4 -0
  38. package/src/ts/markdown/getHTML.ts +6 -3
  39. package/src/ts/markdown/imageCaptionRender.ts +175 -0
  40. package/src/ts/markdown/mermaidRender.ts +1 -1
  41. package/src/ts/markdown/previewRender.ts +8 -2
  42. package/src/ts/markdown/setLute.ts +3 -0
  43. package/src/ts/markdown/wavedromRender.ts +54 -0
  44. package/src/ts/preview/index.ts +5 -0
  45. package/src/ts/util/Options.ts +1 -1
  46. package/src/ts/util/fixBrowserBehavior.ts +165 -21
  47. package/src/ts/util/processCode.ts +3 -0
  48. package/src/ts/util/selection.ts +7 -2
  49. package/src/ts/wysiwyg/afterRenderEvent.ts +2 -0
  50. package/src/ts/wysiwyg/highlightToolbarWYSIWYG.ts +23 -4
  51. package/src/ts/wysiwyg/input.ts +5 -0
  52. package/src/ts/wysiwyg/setHeading.ts +110 -6
package/README.md CHANGED
@@ -20,6 +20,10 @@
20
20
  <a href="https://github.com/Vanessa219/vditor/blob/master/README_en_US.md">English</a> &nbsp;|&nbsp; <a href="https://b3log.org/vditor/demo/index.html">Demo</a>
21
21
  </p>
22
22
 
23
+ <p align="center">
24
+ 🔥 欢迎观摩我们的另一个开源项目 <a href="https://github.com/siyuan-note/siyuan">思源笔记</a>
25
+ <p>
26
+
23
27
  ## 💡 简介
24
28
 
25
29
  [Vditor](https://b3log.org/vditor) 是一款浏览器端的 Markdown 编辑器,支持所见即所得、即时渲染(类似 Typora)和分屏预览模式。它使用 TypeScript 实现,支持原生 JavaScript 以及 Vue、React、Angular 和 Svelte 等框架。
@@ -53,7 +57,7 @@ Vditor 在这些方面做了努力,希望能为现代化的通用 Markdown 编
53
57
  ## ✨ 特性
54
58
 
55
59
  * 支持三种编辑模式:所见即所得(wysiwyg)、即时渲染(ir)、分屏预览(sv)
56
- * 支持大纲、数学公式、脑图、图表、流程图、甘特图、时序图、五线谱、[多媒体](https://ld246.com/article/1589813914768)、语音阅读、标题锚点、代码高亮及复制、graphviz 渲染、[plantuml](https://plantuml.com)UML图
60
+ * 支持大纲、数学公式、脑图、图表、流程图、甘特图、时序图、数字波形图、五线谱、[多媒体](https://ld246.com/article/1589813914768)、语音阅读、标题锚点、代码高亮及复制、graphviz 渲染、[plantuml](https://plantuml.com)UML图
57
61
  * 导出、图片懒加载、任务列表、多平台预览、多主题切换、复制到微信公众号/知乎功能
58
62
  * 实现 CommonMark 和 GFM 规范,可对 Markdown 进行格式化和语法树查看,并支持[10+项](https://ld246.com/article/1549638745630#options-preview-markdown)配置
59
63
  * 工具栏包含 36+ 项操作,除支持扩展外还可对每一项中的[快捷键](https://ld246.com/article/1582778815353)、提示、提示位置、图标、点击事件、类名、子工具栏进行自定义
@@ -99,6 +103,7 @@ Vditor 在这些方面做了努力,希望能为现代化的通用 Markdown 编
99
103
  * 图表语法
100
104
  * 流程图、时序图、甘特图,通过 Mermaid 支持
101
105
  * Graphviz
106
+ * 数字波形图,通过 WaveDrom 支持
102
107
  * 折线图、饼图、脑图等,通过 ECharts 支持
103
108
  * 五线谱:通过 abc.js 支持
104
109
  * 数学公式:数学公式块、行级数学公式,通过 MathJax 和 KaTeX 支持
@@ -201,7 +206,7 @@ Markdown 输出的 HTML 所展现的外观。内置 ant-design, light,dark,w
201
206
  | minHeight | 编辑区域最小高度 | - |
202
207
  | width | 编辑器总宽度,支持 % | 'auto' |
203
208
  | placeholder | 输入区域为空时的提示 | '' |
204
- | lang | 语言种类:de_DE, en_US, fr_FR, pt_BR, ja_JP, ko_KR, ru_RU, sv_SE, zh_CN, zh_TW | 'zh_CN' |
209
+ | lang | 语言种类:de_DE, en_US, es_ES, fr_FR, ja_JP, ko_KR, pt_BR, ru_RU, sv_SE, vi_VN, zh_CN, zh_TW | 'zh_CN' |
205
210
  | input(value: string) | 输入后触发 | - |
206
211
  | focus(value: string) | 聚焦后触发 | - |
207
212
  | blur(value: string) | 失焦后触发 | - |
@@ -219,6 +224,7 @@ Markdown 输出的 HTML 所展现的外观。内置 ant-design, light,dark,w
219
224
  | theme | 主题:classic, dark | 'classic' |
220
225
  | icon | 图标风格:ant, material | 'ant' |
221
226
  | customRenders: {language: string, render: (element: HTMLElement, vditor: IVditor) => void}[] | 自定义渲染器 | [] |
227
+ | customWysiwygToolbar(type: TWYSISYGToolbar, element: HTMLElement): void | 对 wysiwyg 模式下的工具栏进行自定义 | - |
222
228
 
223
229
  #### options.toolbar
224
230
 
@@ -317,6 +323,7 @@ new Vditor('vditor', {
317
323
  | | 说明 | 默认值 |
318
324
  | - | - | - |
319
325
  | autoSpace | 自动空格 | false |
326
+ | callout | Callout 块 | true |
320
327
  | gfmAutoLink | 自动链接 | true |
321
328
  | fixTermTypo | 自动矫正术语 | false |
322
329
  | toc | 插入目录 | false |
@@ -329,6 +336,8 @@ new Vditor('vditor', {
329
336
  | linkBase | 链接相对路径前缀 | '' |
330
337
  | linkPrefix | 链接强制前缀 | '' |
331
338
  | mark | 启用 mark 标记 | false |
339
+ | sup | 上标 | false |
340
+ | sub | 下标 | false |
332
341
 
333
342
  #### options.preview.theme
334
343
 
@@ -613,6 +622,7 @@ options?: IPreviewOptions {
613
622
  | mathRender(element: HTMLElement, options?: {cdn?: string, math?: IMath}) | 对数学公式进行渲染 |
614
623
  | speechRender(element: HTMLElement, lang?: (keyof II18nLang)) | 对选中的文字进行阅读 |
615
624
  | graphvizRender(element: HTMLElement, cdn?: string) | 对 graphviz 进行渲染 |
625
+ | wavedromRender(element: (HTMLElement \| Document) = document, cdn = options.cdn) | 对数字波形图进行渲染 |
616
626
  | outlineRender(contentElement: HTMLElement, targetElement: Element) | 对大纲进行渲染 |
617
627
  | lazyLoadImageRender(element: (HTMLElement \| Document) = document) | 对启用懒加载的图片进行渲染 |
618
628
  | setCodeTheme(codeTheme: string, cdn = options.cdn) | 设置代码主题,codeTheme 参见 options.preview.hljs.style |
@@ -670,6 +680,7 @@ Vditor 使用 [MIT](https://opensource.org/licenses/MIT) 开源协议。
670
680
  * [Lute](https://github.com/88250/lute):🎼 一款结构化的 Markdown 引擎,支持 Go 和 JavaScript
671
681
  * [highlight.js](https://github.com/highlightjs/highlight.js):JavaScript syntax highlighter
672
682
  * [mermaid](https://github.com/knsv/mermaid):Generation of diagram and flowchart from text in a similar manner as Markdown
683
+ * [WaveDrom](https://github.com/wavedrom/wavedrom):Digital timing diagram rendering engine
673
684
  * [incubator-echarts](https://github.com/apache/incubator-echarts):A powerful, interactive charting and visualization library for browser
674
685
  * [abcjs](https://github.com/paulrosen/abcjs):JavaScript library for rendering standard music notation in a browser
675
686
 
@@ -29,6 +29,16 @@
29
29
  color: rgba(0, 0, 0, .85);
30
30
  font-size: 14px;
31
31
  line-height: 2;
32
+ --callout-note-color: #0969da;
33
+ --callout-note-background-color: rgba(9, 105, 218, 0.08);
34
+ --callout-tip-color: #1a7f37;
35
+ --callout-tip-background-color: rgba(26, 127, 55, 0.08);
36
+ --callout-important-color: #8250df;
37
+ --callout-important-background-color: rgba(130, 80, 223, 0.08);
38
+ --callout-warning-color: #9a6700;
39
+ --callout-warning-background-color: rgba(154, 103, 0, 0.08);
40
+ --callout-caution-color: #cf222e;
41
+ --callout-caution-background-color: rgba(207, 34, 46, 0.08);
32
42
  }
33
43
 
34
44
  .vditor-reset img {
@@ -26,6 +26,16 @@
26
26
  */
27
27
  .vditor-reset {
28
28
  color: #d1d5da;
29
+ --callout-note-color: #58a6ff;
30
+ --callout-note-background-color: rgba(56, 139, 253, 0.15);
31
+ --callout-tip-color: #3fb950;
32
+ --callout-tip-background-color: rgba(46, 160, 67, 0.15);
33
+ --callout-important-color: #a371f7;
34
+ --callout-important-background-color: rgba(163, 113, 247, 0.15);
35
+ --callout-warning-color: #d29922;
36
+ --callout-warning-background-color: rgba(187, 128, 9, 0.15);
37
+ --callout-caution-color: #f85149;
38
+ --callout-caution-background-color: rgba(248, 81, 73, 0.15);
29
39
  }
30
40
 
31
41
  .vditor-reset a, .vditor-ir__link {
@@ -24,6 +24,19 @@
24
24
  * SOFTWARE.
25
25
  *
26
26
  */
27
+ .vditor-reset {
28
+ --callout-note-color: #0969da;
29
+ --callout-note-background-color: rgba(9, 105, 218, 0.08);
30
+ --callout-tip-color: #1a7f37;
31
+ --callout-tip-background-color: rgba(26, 127, 55, 0.08);
32
+ --callout-important-color: #8250df;
33
+ --callout-important-background-color: rgba(130, 80, 223, 0.08);
34
+ --callout-warning-color: #9a6700;
35
+ --callout-warning-background-color: rgba(154, 103, 0, 0.08);
36
+ --callout-caution-color: #cf222e;
37
+ --callout-caution-background-color: rgba(207, 34, 46, 0.08);
38
+ }
39
+
27
40
  .vditor-reset h1, .vditor-reset h2 {
28
41
  padding-bottom: 0.3em;
29
42
  border-bottom: 1px solid #eaecef;
@@ -27,6 +27,16 @@
27
27
  .vditor-reset {
28
28
  font-family: "mp-quote", -apple-system-font, BlinkMacSystemFont, "Helvetica Neue", "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Noto Color Emoji", "Segoe UI Symbol", "Android Emoji", "EmojiSymbols";
29
29
  color: rgb(62, 62, 62);
30
+ --callout-note-color: #0969da;
31
+ --callout-note-background-color: rgba(9, 105, 218, 0.08);
32
+ --callout-tip-color: #1a7f37;
33
+ --callout-tip-background-color: rgba(26, 127, 55, 0.08);
34
+ --callout-important-color: #8250df;
35
+ --callout-important-background-color: rgba(130, 80, 223, 0.08);
36
+ --callout-warning-color: #9a6700;
37
+ --callout-warning-background-color: rgba(154, 103, 0, 0.08);
38
+ --callout-caution-color: #cf222e;
39
+ --callout-caution-background-color: rgba(207, 34, 46, 0.08);
30
40
  }
31
41
 
32
42
  .vditor-reset a, .vditor-ir__link {
package/dist/index.css CHANGED
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * Vditor v3.11.1 - A markdown editor written in TypeScript.
2
+ * Vditor v3.11.3 - A markdown editor written in TypeScript.
3
3
  *
4
4
  * MIT License
5
5
  *
@@ -25,7 +25,7 @@
25
25
  *
26
26
  */
27
27
  /*!
28
- * Vditor v3.11.1 - A markdown editor written in TypeScript.
28
+ * Vditor v3.11.3 - A markdown editor written in TypeScript.
29
29
  *
30
30
  * MIT License
31
31
  *
@@ -69,6 +69,16 @@
69
69
  --count-background-color: rgba(27, 31, 35, 0.05);
70
70
  --heading-border-color: #eaecef;
71
71
  --blockquote-color: #6a737d;
72
+ --callout-note-color: #0969da;
73
+ --callout-note-background-color: rgba(9, 105, 218, 0.08);
74
+ --callout-tip-color: #1a7f37;
75
+ --callout-tip-background-color: rgba(26, 127, 55, 0.08);
76
+ --callout-important-color: #8250df;
77
+ --callout-important-background-color: rgba(130, 80, 223, 0.08);
78
+ --callout-warning-color: #9a6700;
79
+ --callout-warning-background-color: rgba(154, 103, 0, 0.08);
80
+ --callout-caution-color: #cf222e;
81
+ --callout-caution-background-color: rgba(207, 34, 46, 0.08);
72
82
  --ir-heading-color: #660e7a;
73
83
  --ir-title-color: #808080;
74
84
  --ir-bi-color: #0033b3;
@@ -93,6 +103,16 @@
93
103
  --count-background-color: rgba(66, 133, 244, 0.36);
94
104
  --heading-border-color: var(--textarea-text-color);
95
105
  --blockquote-color: var(--toolbar-icon-color);
106
+ --callout-note-color: #58a6ff;
107
+ --callout-note-background-color: rgba(56, 139, 253, 0.15);
108
+ --callout-tip-color: #3fb950;
109
+ --callout-tip-background-color: rgba(46, 160, 67, 0.15);
110
+ --callout-important-color: #a371f7;
111
+ --callout-important-background-color: rgba(163, 113, 247, 0.15);
112
+ --callout-warning-color: #d29922;
113
+ --callout-warning-background-color: rgba(187, 128, 9, 0.15);
114
+ --callout-caution-color: #f85149;
115
+ --callout-caution-background-color: rgba(248, 81, 73, 0.15);
96
116
  --ir-heading-color: #9876aa;
97
117
  --ir-title-color: #808080;
98
118
  --ir-bi-color: #cc7832;
@@ -866,6 +886,31 @@
866
886
  max-width: 20px;
867
887
  vertical-align: sub;
868
888
  }
889
+ .vditor-reset figure.vditor-image {
890
+ margin: 0 0 16px;
891
+ text-align: center;
892
+ }
893
+ .vditor-reset figure.vditor-image figcaption {
894
+ font-size: 0.875em;
895
+ margin-top: 4px;
896
+ opacity: 0.65;
897
+ white-space: pre-wrap;
898
+ }
899
+ .vditor-reset span.vditor-image[data-image-caption] {
900
+ display: inline-block;
901
+ max-width: 100%;
902
+ text-align: center;
903
+ vertical-align: top;
904
+ }
905
+ .vditor-reset span.vditor-image[data-image-caption]::after {
906
+ content: attr(data-image-caption);
907
+ display: block;
908
+ font-size: 0.875em;
909
+ line-height: 1.5;
910
+ margin-top: 4px;
911
+ opacity: 0.65;
912
+ white-space: pre-wrap;
913
+ }
869
914
  .vditor-reset h1,
870
915
  .vditor-reset h2,
871
916
  .vditor-reset h3,
@@ -1011,7 +1056,8 @@
1011
1056
  .vditor-reset .language-markmap,
1012
1057
  .vditor-reset .language-abc,
1013
1058
  .vditor-reset .language-flowchart,
1014
- .vditor-reset .language-graphviz {
1059
+ .vditor-reset .language-graphviz,
1060
+ .vditor-reset .language-wavedrom {
1015
1061
  margin-bottom: 16px;
1016
1062
  }
1017
1063
  .vditor-reset .language-math mjx-container:focus {
@@ -1031,7 +1077,8 @@
1031
1077
  .vditor-reset .language-mermaid,
1032
1078
  .vditor-reset .language-markmap,
1033
1079
  .vditor-reset .language-flowchart,
1034
- .vditor-reset .language-graphviz {
1080
+ .vditor-reset .language-graphviz,
1081
+ .vditor-reset .language-wavedrom {
1035
1082
  text-align: center;
1036
1083
  }
1037
1084
  .vditor-reset .language-graphviz parsererror {
@@ -1333,6 +1380,88 @@
1333
1380
  .vditor-outline__action--close {
1334
1381
  transform: rotate(-90deg);
1335
1382
  }
1383
+ .vditor-reset .callout,
1384
+ .vditor-wysiwyg blockquote.callout,
1385
+ .vditor-ir blockquote.callout {
1386
+ --callout-color: var(--callout-note-color, #0969da);
1387
+ --callout-background-color: var(--callout-note-background-color, rgba(9, 105, 218, 0.08));
1388
+ position: relative;
1389
+ margin: 0 0 16px;
1390
+ padding: 0.75em 1em;
1391
+ color: inherit;
1392
+ background-color: var(--callout-background-color);
1393
+ border: 0;
1394
+ border-left: 0.25em solid var(--callout-color);
1395
+ }
1396
+ .vditor-reset .callout[data-subtype="TIP"],
1397
+ .vditor-wysiwyg blockquote.callout[data-subtype="TIP"],
1398
+ .vditor-ir blockquote.callout[data-subtype="TIP"] {
1399
+ --callout-color: var(--callout-tip-color, #1a7f37);
1400
+ --callout-background-color: var(--callout-tip-background-color, rgba(26, 127, 55, 0.08));
1401
+ }
1402
+ .vditor-reset .callout[data-subtype="IMPORTANT"],
1403
+ .vditor-wysiwyg blockquote.callout[data-subtype="IMPORTANT"],
1404
+ .vditor-ir blockquote.callout[data-subtype="IMPORTANT"] {
1405
+ --callout-color: var(--callout-important-color, #8250df);
1406
+ --callout-background-color: var(--callout-important-background-color, rgba(130, 80, 223, 0.08));
1407
+ }
1408
+ .vditor-reset .callout[data-subtype="WARNING"],
1409
+ .vditor-wysiwyg blockquote.callout[data-subtype="WARNING"],
1410
+ .vditor-ir blockquote.callout[data-subtype="WARNING"] {
1411
+ --callout-color: var(--callout-warning-color, #9a6700);
1412
+ --callout-background-color: var(--callout-warning-background-color, rgba(154, 103, 0, 0.08));
1413
+ }
1414
+ .vditor-reset .callout[data-subtype="CAUTION"],
1415
+ .vditor-wysiwyg blockquote.callout[data-subtype="CAUTION"],
1416
+ .vditor-ir blockquote.callout[data-subtype="CAUTION"] {
1417
+ --callout-color: var(--callout-caution-color, #cf222e);
1418
+ --callout-background-color: var(--callout-caution-background-color, rgba(207, 34, 46, 0.08));
1419
+ }
1420
+ .vditor-reset .callout > .callout-info,
1421
+ .vditor-wysiwyg blockquote.callout > .callout-info,
1422
+ .vditor-ir blockquote.callout > .callout-info {
1423
+ display: flex;
1424
+ align-items: center;
1425
+ min-height: 1.5em;
1426
+ margin: 0 0 0.5em;
1427
+ color: var(--callout-color);
1428
+ font-weight: 600;
1429
+ }
1430
+ .vditor-reset .callout > .callout-info .callout-icon,
1431
+ .vditor-wysiwyg blockquote.callout > .callout-info .callout-icon,
1432
+ .vditor-ir blockquote.callout > .callout-info .callout-icon {
1433
+ display: inline-flex;
1434
+ align-items: center;
1435
+ margin-right: 0.35em;
1436
+ }
1437
+ .vditor-reset .callout > .callout-info .callout-title,
1438
+ .vditor-wysiwyg blockquote.callout > .callout-info .callout-title,
1439
+ .vditor-ir blockquote.callout > .callout-info .callout-title {
1440
+ min-width: 1px;
1441
+ }
1442
+ .vditor-reset .callout > .callout-info .callout-img,
1443
+ .vditor-wysiwyg blockquote.callout > .callout-info .callout-img,
1444
+ .vditor-ir blockquote.callout > .callout-info .callout-img,
1445
+ .vditor-reset .callout > .callout-info > .callout-img,
1446
+ .vditor-wysiwyg blockquote.callout > .callout-info > .callout-img,
1447
+ .vditor-ir blockquote.callout > .callout-info > .callout-img {
1448
+ width: 1.2em;
1449
+ height: 1.2em;
1450
+ margin-right: 0.35em;
1451
+ -o-object-fit: contain;
1452
+ object-fit: contain;
1453
+ }
1454
+ .vditor-reset .callout > .callout-content > :last-child,
1455
+ .vditor-wysiwyg blockquote.callout > .callout-content > :last-child,
1456
+ .vditor-ir blockquote.callout > .callout-content > :last-child,
1457
+ .vditor-reset .callout > :last-child,
1458
+ .vditor-wysiwyg blockquote.callout > :last-child,
1459
+ .vditor-ir blockquote.callout > :last-child {
1460
+ margin-bottom: 0;
1461
+ }
1462
+ .vditor-wysiwyg__callout-marker {
1463
+ display: none;
1464
+ }
1336
1465
  .vditor-wysiwyg {
1337
1466
  box-sizing: border-box;
1338
1467
  flex: 1;