vditor 3.11.2 → 4.0.0

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 (74) hide show
  1. package/README.md +12 -1
  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 +163 -81
  7. package/dist/index.js +3035 -2715
  8. package/dist/index.min.js +1 -1
  9. package/dist/js/i18n/ja_JP.js +2 -2
  10. package/dist/js/i18n/zh_TW.js +8 -8
  11. package/dist/js/lute/lute.min.js +75 -60
  12. package/dist/js/mermaid/mermaid.min.js +2027 -1047
  13. package/dist/js/wavedrom/LICENSE.WaveDrom +21 -0
  14. package/dist/js/wavedrom/wavedrom.min.js +9 -0
  15. package/dist/method.d.ts +2 -0
  16. package/dist/method.js +323 -9
  17. package/dist/method.min.js +1 -1
  18. package/dist/ts/constants.d.ts +4 -0
  19. package/dist/ts/markdown/adapterRender.d.ts +4 -0
  20. package/dist/ts/markdown/imageCaptionRender.d.ts +2 -0
  21. package/dist/ts/markdown/wavedromRender.d.ts +1 -0
  22. package/dist/ts/sv/index.d.ts +1 -5
  23. package/dist/ts/sv/process.d.ts +1 -3
  24. package/dist/ts/upload/getElement.d.ts +1 -1
  25. package/dist/ts/upload/index.d.ts +2 -0
  26. package/dist/ts/util/editorCommonEvent.d.ts +1 -1
  27. package/dist/ts/util/fixBrowserBehavior.d.ts +1 -0
  28. package/dist/types/index.d.ts +22 -5
  29. package/package.json +7 -4
  30. package/src/assets/less/_reset.less +103 -2
  31. package/src/assets/less/_sv.less +2 -98
  32. package/src/assets/less/_wysiwyg.less +30 -0
  33. package/src/assets/less/index.less +20 -0
  34. package/src/index.ts +48 -14
  35. package/src/method.ts +3 -0
  36. package/src/ts/constants.ts +5 -1
  37. package/src/ts/export/index.ts +2 -0
  38. package/src/ts/hint/index.ts +9 -4
  39. package/src/ts/ir/highlightToolbarIR.ts +4 -4
  40. package/src/ts/ir/index.ts +26 -0
  41. package/src/ts/ir/process.ts +24 -1
  42. package/src/ts/markdown/adapterRender.ts +4 -0
  43. package/src/ts/markdown/getHTML.ts +6 -3
  44. package/src/ts/markdown/getMarkdown.ts +3 -3
  45. package/src/ts/markdown/imageCaptionRender.ts +175 -0
  46. package/src/ts/markdown/mermaidRender.ts +1 -1
  47. package/src/ts/markdown/previewRender.ts +7 -1
  48. package/src/ts/markdown/setLute.ts +3 -0
  49. package/src/ts/markdown/wavedromRender.ts +54 -0
  50. package/src/ts/preview/index.ts +5 -0
  51. package/src/ts/sv/index.ts +37 -76
  52. package/src/ts/sv/process.ts +48 -164
  53. package/src/ts/sv/processKeydown.ts +19 -186
  54. package/src/ts/toolbar/EditMode.ts +3 -10
  55. package/src/ts/toolbar/Emoji.ts +8 -1
  56. package/src/ts/toolbar/Record.ts +10 -2
  57. package/src/ts/toolbar/index.ts +3 -0
  58. package/src/ts/ui/initUI.ts +7 -3
  59. package/src/ts/undo/index.ts +32 -17
  60. package/src/ts/upload/index.ts +42 -10
  61. package/src/ts/util/Options.ts +1 -1
  62. package/src/ts/util/editorCommonEvent.ts +18 -9
  63. package/src/ts/util/fixBrowserBehavior.ts +197 -51
  64. package/src/ts/util/processCode.ts +3 -0
  65. package/src/ts/util/selection.ts +11 -3
  66. package/src/ts/wysiwyg/afterRenderEvent.ts +2 -0
  67. package/src/ts/wysiwyg/highlightToolbarWYSIWYG.ts +58 -2
  68. package/src/ts/wysiwyg/input.ts +5 -0
  69. package/src/ts/wysiwyg/processKeydown.ts +47 -0
  70. package/src/ts/wysiwyg/setHeading.ts +110 -6
  71. package/dist/ts/sv/combineFootnote.d.ts +0 -6
  72. package/dist/ts/sv/inputEvent.d.ts +0 -1
  73. package/src/ts/sv/combineFootnote.ts +0 -27
  74. package/src/ts/sv/inputEvent.ts +0 -188
package/dist/method.js CHANGED
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * Vditor v3.11.2 - A markdown editor written in TypeScript.
2
+ * Vditor v4.0.0 - A markdown editor written in TypeScript.
3
3
  *
4
4
  * MIT License
5
5
  *
@@ -45,7 +45,7 @@ return /******/ (() => { // webpackBootstrap
45
45
  /* harmony export */ "g": () => (/* binding */ Constants)
46
46
  /* harmony export */ });
47
47
  /* unused harmony export VDITOR_VERSION */
48
- var _VDITOR_VERSION = (/* unused pure expression or super */ null && ("3.11.2"));
48
+ var _VDITOR_VERSION = (/* unused pure expression or super */ null && ("4.0.0"));
49
49
 
50
50
  var Constants = /** @class */ (function () {
51
51
  function Constants() {
@@ -89,17 +89,19 @@ var Constants = /** @class */ (function () {
89
89
  "stackoverflow-light", "tokyo-night-light", "vs", "xcode", "default"];
90
90
  Constants.ALIAS_CODE_LANGUAGES = [
91
91
  // 自定义
92
- "abc", "plantuml", "mermaid", "flowchart", "echarts", "mindmap", "graphviz", "math", "markmap", "smiles",
92
+ "abc", "plantuml", "mermaid", "flowchart", "echarts", "mindmap", "graphviz", "wavedrom", "math", "markmap", "smiles",
93
93
  // 别名
94
94
  "js", "ts", "html", "toml", "c#", "bat"
95
95
  ];
96
- Constants.CDN = "https://unpkg.com/vditor@".concat("3.11.2");
96
+ Constants.CDN = "https://unpkg.com/vditor@".concat("4.0.0");
97
97
  Constants.MARKDOWN_OPTIONS = {
98
98
  autoSpace: false,
99
+ callout: true,
99
100
  gfmAutoLink: true,
100
101
  codeBlockPreview: true,
101
102
  fixTermTypo: false,
102
103
  footnotes: true,
104
+ imageCaption: false,
103
105
  linkBase: "",
104
106
  linkPrefix: "",
105
107
  listStyle: false,
@@ -107,6 +109,8 @@ var Constants = /** @class */ (function () {
107
109
  mathBlockPreview: true,
108
110
  paragraphBeginningSpace: false,
109
111
  sanitize: true,
112
+ sub: false,
113
+ sup: false,
110
114
  toc: false,
111
115
  };
112
116
  Constants.HLJS_OPTIONS = {
@@ -225,6 +229,7 @@ __webpack_require__.r(__webpack_exports__);
225
229
  /* harmony export */ "chartRenderAdapter": () => (/* binding */ chartRenderAdapter),
226
230
  /* harmony export */ "abcRenderAdapter": () => (/* binding */ abcRenderAdapter),
227
231
  /* harmony export */ "graphvizRenderAdapter": () => (/* binding */ graphvizRenderAdapter),
232
+ /* harmony export */ "wavedromRenderAdapter": () => (/* binding */ wavedromRenderAdapter),
228
233
  /* harmony export */ "flowchartRenderAdapter": () => (/* binding */ flowchartRenderAdapter),
229
234
  /* harmony export */ "plantumlRenderAdapter": () => (/* binding */ plantumlRenderAdapter)
230
235
  /* harmony export */ });
@@ -261,6 +266,10 @@ var graphvizRenderAdapter = {
261
266
  getCode: function (el) { return el.textContent; },
262
267
  getElements: function (el) { return el.querySelectorAll(".language-graphviz"); },
263
268
  };
269
+ var wavedromRenderAdapter = {
270
+ getCode: function (el) { return el.textContent; },
271
+ getElements: function (el) { return el.querySelectorAll(".language-wavedrom"); },
272
+ };
264
273
  var flowchartRenderAdapter = {
265
274
  getCode: function (el) { return el.textContent; },
266
275
  getElements: function (el) { return el.querySelectorAll(".language-flowchart"); },
@@ -617,6 +626,178 @@ var highlightRender = function (hljsOption, element, cdn) {
617
626
  };
618
627
 
619
628
 
629
+ /***/ }),
630
+
631
+ /***/ 161:
632
+ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
633
+
634
+ /* harmony export */ __webpack_require__.d(__webpack_exports__, {
635
+ /* harmony export */ "V": () => (/* binding */ renderImageCaptionHTML)
636
+ /* harmony export */ });
637
+ /* unused harmony export renderImageCaptions */
638
+ var getContentNodes = function (element, ignoreIRMarkers) {
639
+ if (ignoreIRMarkers === void 0) { ignoreIRMarkers = false; }
640
+ return Array.from(element.childNodes).filter(function (node) {
641
+ if (node.nodeType === Node.COMMENT_NODE) {
642
+ return false;
643
+ }
644
+ if (node.nodeType === Node.TEXT_NODE) {
645
+ return node.textContent.replace(/\u200b/g, "").trim() !== "";
646
+ }
647
+ if (!(node instanceof HTMLElement)) {
648
+ return true;
649
+ }
650
+ if (node.tagName === "WBR") {
651
+ return false;
652
+ }
653
+ return !ignoreIRMarkers || !node.classList.contains("vditor-ir__marker");
654
+ });
655
+ };
656
+ var getWYSIWYGImage = function (paragraph) {
657
+ var nodes = getContentNodes(paragraph);
658
+ if (nodes.length !== 1 || !(nodes[0] instanceof HTMLElement)) {
659
+ return undefined;
660
+ }
661
+ var container = nodes[0];
662
+ if (container instanceof HTMLImageElement) {
663
+ return {
664
+ container: container,
665
+ image: container,
666
+ };
667
+ }
668
+ if (container instanceof HTMLAnchorElement) {
669
+ var linkNodes = getContentNodes(container);
670
+ if (linkNodes.length === 1 && linkNodes[0] instanceof HTMLImageElement) {
671
+ return {
672
+ container: container,
673
+ image: linkNodes[0],
674
+ };
675
+ }
676
+ }
677
+ return undefined;
678
+ };
679
+ var getIRImage = function (paragraph) {
680
+ var nodes = getContentNodes(paragraph);
681
+ if (nodes.length !== 1 || !(nodes[0] instanceof HTMLElement)) {
682
+ return undefined;
683
+ }
684
+ var imageNode = nodes[0];
685
+ if (imageNode.getAttribute("data-type") === "a") {
686
+ var linkNodes = getContentNodes(imageNode, true);
687
+ if (linkNodes.length !== 1 || !(linkNodes[0] instanceof HTMLElement)) {
688
+ return undefined;
689
+ }
690
+ imageNode = linkNodes[0];
691
+ }
692
+ if (imageNode.getAttribute("data-type") !== "img") {
693
+ return undefined;
694
+ }
695
+ var image = imageNode.querySelector(":scope > img");
696
+ var titleMarker = imageNode.querySelector(":scope > .vditor-ir__marker--title");
697
+ if (!(image instanceof HTMLImageElement) || !titleMarker) {
698
+ return undefined;
699
+ }
700
+ var markerText = titleMarker.textContent.trim();
701
+ var closeMarker = markerText[0] === "(" ? ")" : markerText[0];
702
+ if (markerText.length < 2 || !["\"", "'", "("].includes(markerText[0]) ||
703
+ markerText[markerText.length - 1] !== closeMarker) {
704
+ return undefined;
705
+ }
706
+ return {
707
+ caption: markerText.slice(1, -1).trim(),
708
+ container: imageNode,
709
+ image: image,
710
+ };
711
+ };
712
+ var unwrapWYSIWYGCaptions = function (element) {
713
+ element.querySelectorAll("span.vditor-image[data-image-caption]").forEach(function (wrapper) {
714
+ while (wrapper.firstChild) {
715
+ wrapper.parentNode.insertBefore(wrapper.firstChild, wrapper);
716
+ }
717
+ wrapper.remove();
718
+ });
719
+ };
720
+ var resetIRCaptions = function (element) {
721
+ element.querySelectorAll(".vditor-image[data-image-caption]").forEach(function (imageNode) {
722
+ imageNode.classList.remove("vditor-image");
723
+ imageNode.removeAttribute("data-image-caption");
724
+ });
725
+ };
726
+ var renderPreviewCaptions = function (element) {
727
+ element.querySelectorAll("p").forEach(function (paragraph) {
728
+ var _a;
729
+ var imageData = getWYSIWYGImage(paragraph);
730
+ var caption = (_a = imageData === null || imageData === void 0 ? void 0 : imageData.image.getAttribute("title")) === null || _a === void 0 ? void 0 : _a.trim();
731
+ if (!imageData || !caption) {
732
+ return;
733
+ }
734
+ var figure = document.createElement("figure");
735
+ Array.from(paragraph.attributes).forEach(function (attribute) {
736
+ figure.setAttribute(attribute.name, attribute.value);
737
+ });
738
+ figure.classList.add("vditor-image");
739
+ var figcaption = document.createElement("figcaption");
740
+ figcaption.textContent = caption;
741
+ figure.append(imageData.container, figcaption);
742
+ paragraph.replaceWith(figure);
743
+ });
744
+ };
745
+ var renderWYSIWYGCaptions = function (element) {
746
+ element.querySelectorAll("p").forEach(function (paragraph) {
747
+ var _a;
748
+ var imageData = getWYSIWYGImage(paragraph);
749
+ var caption = (_a = imageData === null || imageData === void 0 ? void 0 : imageData.image.getAttribute("title")) === null || _a === void 0 ? void 0 : _a.trim();
750
+ if (!imageData || !caption) {
751
+ return;
752
+ }
753
+ var wrapper = document.createElement("span");
754
+ wrapper.className = "vditor-image";
755
+ wrapper.setAttribute("data-image-caption", caption);
756
+ imageData.container.replaceWith(wrapper);
757
+ wrapper.append(imageData.container);
758
+ });
759
+ };
760
+ var renderIRCaptions = function (element) {
761
+ element.querySelectorAll("p").forEach(function (paragraph) {
762
+ var imageData = getIRImage(paragraph);
763
+ if (!(imageData === null || imageData === void 0 ? void 0 : imageData.caption)) {
764
+ return;
765
+ }
766
+ imageData.container.classList.add("vditor-image");
767
+ imageData.container.setAttribute("data-image-caption", imageData.caption);
768
+ });
769
+ };
770
+ var renderImageCaptions = function (element, mode, enable) {
771
+ if (mode === "wysiwyg") {
772
+ unwrapWYSIWYGCaptions(element);
773
+ }
774
+ else if (mode === "ir") {
775
+ resetIRCaptions(element);
776
+ }
777
+ if (!enable) {
778
+ return;
779
+ }
780
+ if (mode === "preview") {
781
+ renderPreviewCaptions(element);
782
+ }
783
+ else if (mode === "wysiwyg") {
784
+ renderWYSIWYGCaptions(element);
785
+ }
786
+ else {
787
+ renderIRCaptions(element);
788
+ }
789
+ };
790
+ var renderImageCaptionHTML = function (html, enable) {
791
+ if (!enable) {
792
+ return html;
793
+ }
794
+ var container = document.createElement("div");
795
+ container.innerHTML = html;
796
+ renderImageCaptions(container, "preview", true);
797
+ return container.innerHTML;
798
+ };
799
+
800
+
620
801
  /***/ }),
621
802
 
622
803
  /***/ 11:
@@ -1000,7 +1181,7 @@ var mermaidRender = function (element, cdn, theme) {
1000
1181
  if (mermaidElements.length === 0) {
1001
1182
  return;
1002
1183
  }
1003
- (0,_util_addScript__WEBPACK_IMPORTED_MODULE_2__/* .addScript */ .G)("".concat(cdn, "/dist/js/mermaid/mermaid.min.js?v=11.6.0"), "vditorMermaidScript").then(function () {
1184
+ (0,_util_addScript__WEBPACK_IMPORTED_MODULE_2__/* .addScript */ .G)("".concat(cdn, "/dist/js/mermaid/mermaid.min.js?v=11.16.1"), "vditorMermaidScript").then(function () {
1004
1185
  var config = {
1005
1186
  securityLevel: "loose",
1006
1187
  altFontFamily: "sans-serif",
@@ -1335,6 +1516,7 @@ var setLute = function (options) {
1335
1516
  lute.SetHeadingAnchor(options.headingAnchor);
1336
1517
  lute.SetInlineMathAllowDigitAfterOpenMarker(options.inlineMathDigit);
1337
1518
  lute.SetAutoSpace(options.autoSpace);
1519
+ lute.SetCallout(options.callout);
1338
1520
  lute.SetToC(options.toc);
1339
1521
  lute.SetFootnotes(options.footnotes);
1340
1522
  lute.SetFixTermTypo(options.fixTermTypo);
@@ -1350,10 +1532,120 @@ var setLute = function (options) {
1350
1532
  if (options.lazyLoadImage) {
1351
1533
  lute.SetImageLazyLoading(options.lazyLoadImage);
1352
1534
  }
1535
+ lute.SetSup(options.sup);
1536
+ lute.SetSub(options.sub);
1353
1537
  return lute;
1354
1538
  };
1355
1539
 
1356
1540
 
1541
+ /***/ }),
1542
+
1543
+ /***/ 497:
1544
+ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
1545
+
1546
+ /* harmony export */ __webpack_require__.d(__webpack_exports__, {
1547
+ /* harmony export */ "F": () => (/* binding */ wavedromRender)
1548
+ /* harmony export */ });
1549
+ /* harmony import */ var _constants__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(145);
1550
+ /* harmony import */ var _util_addScript__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(413);
1551
+ /* harmony import */ var _util_function__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(494);
1552
+ /* harmony import */ var _adapterRender__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(840);
1553
+ var __awaiter = (undefined && undefined.__awaiter) || function (thisArg, _arguments, P, generator) {
1554
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
1555
+ return new (P || (P = Promise))(function (resolve, reject) {
1556
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
1557
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
1558
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
1559
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
1560
+ });
1561
+ };
1562
+ var __generator = (undefined && undefined.__generator) || function (thisArg, body) {
1563
+ var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
1564
+ return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
1565
+ function verb(n) { return function (v) { return step([n, v]); }; }
1566
+ function step(op) {
1567
+ if (f) throw new TypeError("Generator is already executing.");
1568
+ while (g && (g = 0, op[0] && (_ = 0)), _) try {
1569
+ if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
1570
+ if (y = 0, t) op = [op[0] & 2, t.value];
1571
+ switch (op[0]) {
1572
+ case 0: case 1: t = op; break;
1573
+ case 4: _.label++; return { value: op[1], done: false };
1574
+ case 5: _.label++; y = op[1]; op = [0]; continue;
1575
+ case 7: op = _.ops.pop(); _.trys.pop(); continue;
1576
+ default:
1577
+ if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
1578
+ if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
1579
+ if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
1580
+ if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
1581
+ if (t[2]) _.ops.pop();
1582
+ _.trys.pop(); continue;
1583
+ }
1584
+ op = body.call(thisArg, _);
1585
+ } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
1586
+ if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
1587
+ }
1588
+ };
1589
+
1590
+
1591
+
1592
+
1593
+ var wavedromIndex = 0;
1594
+ var wavedromRender = function (element, cdn) {
1595
+ if (element === void 0) { element = document; }
1596
+ if (cdn === void 0) { cdn = _constants__WEBPACK_IMPORTED_MODULE_0__/* .Constants.CDN */ .g.CDN; }
1597
+ var wavedromElements = _adapterRender__WEBPACK_IMPORTED_MODULE_1__.wavedromRenderAdapter.getElements(element);
1598
+ if (wavedromElements.length === 0) {
1599
+ return;
1600
+ }
1601
+ (0,_util_addScript__WEBPACK_IMPORTED_MODULE_2__/* .addScript */ .G)("".concat(cdn, "/dist/js/wavedrom/wavedrom.min.js?v=3.6.2"), "vditorWavedromScript").then(function () {
1602
+ wavedromElements.forEach(function (item) { return __awaiter(void 0, void 0, void 0, function () {
1603
+ var code, renderElement, source, error_1, message, lineBreak;
1604
+ return __generator(this, function (_a) {
1605
+ switch (_a.label) {
1606
+ case 0:
1607
+ if (item.parentElement.classList.contains("vditor-wysiwyg__pre") ||
1608
+ item.parentElement.classList.contains("vditor-ir__marker--pre")) {
1609
+ return [2 /*return*/];
1610
+ }
1611
+ code = _adapterRender__WEBPACK_IMPORTED_MODULE_1__.wavedromRenderAdapter.getCode(item);
1612
+ if (item.getAttribute("data-processed") === "true" || code.trim() === "") {
1613
+ return [2 /*return*/];
1614
+ }
1615
+ renderElement = item;
1616
+ if (item.tagName === "CODE") {
1617
+ renderElement = document.createElement("div");
1618
+ Array.from(item.attributes).forEach(function (attribute) {
1619
+ renderElement.setAttribute(attribute.name, attribute.value);
1620
+ });
1621
+ item.replaceWith(renderElement);
1622
+ }
1623
+ _a.label = 1;
1624
+ case 1:
1625
+ _a.trys.push([1, 3, , 4]);
1626
+ return [4 /*yield*/, (0,_util_function__WEBPACK_IMPORTED_MODULE_3__/* .looseJsonParse */ .Qf)(code)];
1627
+ case 2:
1628
+ source = _a.sent();
1629
+ wavedrom.renderWaveElement(wavedromIndex, source, renderElement, wavedrom.waveSkin, false);
1630
+ wavedromIndex++;
1631
+ return [3 /*break*/, 4];
1632
+ case 3:
1633
+ error_1 = _a.sent();
1634
+ message = error_1 instanceof Error ? error_1.message : String(error_1);
1635
+ lineBreak = document.createElement("br");
1636
+ renderElement.replaceChildren(document.createTextNode("wavedrom render error:"), lineBreak, document.createTextNode(message));
1637
+ renderElement.classList.add("vditor-reset--error");
1638
+ return [3 /*break*/, 4];
1639
+ case 4:
1640
+ renderElement.setAttribute("data-processed", "true");
1641
+ return [2 /*return*/];
1642
+ }
1643
+ });
1644
+ }); });
1645
+ });
1646
+ };
1647
+
1648
+
1357
1649
  /***/ }),
1358
1650
 
1359
1651
  /***/ 190:
@@ -1810,6 +2102,9 @@ var merge = function () {
1810
2102
 
1811
2103
 
1812
2104
  var getEditorRange = function (vditor) {
2105
+ if (vditor.currentMode === "sv") {
2106
+ throw new Error("SV mode uses textarea selection");
2107
+ }
1813
2108
  var range;
1814
2109
  var element = vditor[vditor.currentMode].element;
1815
2110
  if (getSelection().rangeCount > 0) {
@@ -1818,8 +2113,9 @@ var getEditorRange = function (vditor) {
1818
2113
  return range;
1819
2114
  }
1820
2115
  }
1821
- if (vditor[vditor.currentMode].range) {
1822
- return vditor[vditor.currentMode].range;
2116
+ var lastRange = vditor.currentMode === "ir" ? vditor.ir.range : vditor.wysiwyg.range;
2117
+ if (lastRange) {
2118
+ return lastRange;
1823
2119
  }
1824
2120
  element.focus();
1825
2121
  range = element.ownerDocument.createRange();
@@ -2058,7 +2354,12 @@ var insertHTML = function (html, vditor) {
2058
2354
  pasteElement.innerHTML = html;
2059
2355
  var range = getEditorRange(vditor);
2060
2356
  if (range.toString() !== "") {
2061
- vditor[vditor.currentMode].preventInput = true;
2357
+ if (vditor.currentMode === "ir") {
2358
+ vditor.ir.preventInput = true;
2359
+ }
2360
+ else if (vditor.currentMode === "wysiwyg") {
2361
+ vditor.wysiwyg.preventInput = true;
2362
+ }
2062
2363
  document.execCommand("delete", false, "");
2063
2364
  }
2064
2365
  if (pasteElement.firstElementChild &&
@@ -2238,6 +2539,8 @@ var mindmapRender = __webpack_require__(194);
2238
2539
  var outlineRender = __webpack_require__(436);
2239
2540
  // EXTERNAL MODULE: ./src/ts/markdown/plantumlRender.ts
2240
2541
  var plantumlRender = __webpack_require__(229);
2542
+ // EXTERNAL MODULE: ./src/ts/markdown/wavedromRender.ts
2543
+ var wavedromRender = __webpack_require__(497);
2241
2544
  // EXTERNAL MODULE: ./src/ts/constants.ts
2242
2545
  var constants = __webpack_require__(145);
2243
2546
  // EXTERNAL MODULE: ./src/ts/ui/setContentTheme.ts
@@ -2268,6 +2571,8 @@ var anchorRender = function (type) {
2268
2571
  };
2269
2572
  };
2270
2573
 
2574
+ // EXTERNAL MODULE: ./src/ts/markdown/imageCaptionRender.ts
2575
+ var imageCaptionRender = __webpack_require__(161);
2271
2576
  // EXTERNAL MODULE: ./src/ts/markdown/setLute.ts
2272
2577
  var setLute = __webpack_require__(214);
2273
2578
  // EXTERNAL MODULE: ./src/ts/util/selection.ts
@@ -2428,6 +2733,8 @@ var __generator = (undefined && undefined.__generator) || function (thisArg, bod
2428
2733
 
2429
2734
 
2430
2735
 
2736
+
2737
+
2431
2738
 
2432
2739
 
2433
2740
 
@@ -2469,6 +2776,7 @@ var md2html = function (mdText, options) {
2469
2776
  return (0,addScript/* addScript */.G)("".concat(mergedOptions.cdn, "/dist/js/lute/lute.min.js"), "vditorLuteScript").then(function () {
2470
2777
  var lute = (0,setLute/* setLute */.X)({
2471
2778
  autoSpace: mergedOptions.markdown.autoSpace,
2779
+ callout: mergedOptions.markdown.callout,
2472
2780
  gfmAutoLink: mergedOptions.markdown.gfmAutoLink,
2473
2781
  codeBlockPreview: mergedOptions.markdown.codeBlockPreview,
2474
2782
  emojiSite: mergedOptions.emojiPath,
@@ -2485,6 +2793,8 @@ var md2html = function (mdText, options) {
2485
2793
  mathBlockPreview: mergedOptions.markdown.mathBlockPreview,
2486
2794
  paragraphBeginningSpace: mergedOptions.markdown.paragraphBeginningSpace,
2487
2795
  sanitize: mergedOptions.markdown.sanitize,
2796
+ sub: mergedOptions.markdown.sub,
2797
+ sup: mergedOptions.markdown.sup,
2488
2798
  toc: mergedOptions.markdown.toc,
2489
2799
  });
2490
2800
  if (options === null || options === void 0 ? void 0 : options.renderers) {
@@ -2495,7 +2805,7 @@ var md2html = function (mdText, options) {
2495
2805
  });
2496
2806
  }
2497
2807
  lute.SetHeadingID(true);
2498
- return lute.Md2HTML(mdText);
2808
+ return (0,imageCaptionRender/* renderImageCaptionHTML */.V)(lute.Md2HTML(mdText), mergedOptions.markdown.imageCaption);
2499
2809
  });
2500
2810
  };
2501
2811
  var previewRender = function (previewElement, markdown, options) { return __awaiter(void 0, void 0, void 0, function () {
@@ -2553,6 +2863,7 @@ var previewRender = function (previewElement, markdown, options) { return __awai
2553
2863
  (0,markmapRender/* markmapRender */.K)(previewElement, mergedOptions.cdn);
2554
2864
  (0,flowchartRender/* flowchartRender */.P)(previewElement, mergedOptions.cdn);
2555
2865
  (0,graphvizRender/* graphvizRender */.v)(previewElement, mergedOptions.cdn);
2866
+ (0,wavedromRender/* wavedromRender */.F)(previewElement, mergedOptions.cdn);
2556
2867
  (0,chartRender/* chartRender */.p)(previewElement, mergedOptions.cdn, mergedOptions.mode);
2557
2868
  (0,mindmapRender/* mindmapRender */.P)(previewElement, mergedOptions.cdn, mergedOptions.mode);
2558
2869
  (0,plantumlRender/* plantumlRender */.B)(previewElement, mergedOptions.cdn);
@@ -2611,6 +2922,7 @@ var setCodeTheme = __webpack_require__(580);
2611
2922
 
2612
2923
 
2613
2924
 
2925
+
2614
2926
 
2615
2927
 
2616
2928
  var Vditor = /** @class */ (function () {
@@ -2624,6 +2936,8 @@ var Vditor = /** @class */ (function () {
2624
2936
  Vditor.codeRender = codeRender/* codeRender */.O;
2625
2937
  /** 对 graphviz 进行渲染 */
2626
2938
  Vditor.graphvizRender = graphvizRender/* graphvizRender */.v;
2939
+ /** 对数字波形图进行渲染 */
2940
+ Vditor.wavedromRender = wavedromRender/* wavedromRender */.F;
2627
2941
  /** 为 element 中的代码块进行高亮渲染 */
2628
2942
  Vditor.highlightRender = highlightRender/* highlightRender */.s;
2629
2943
  /** 对数学公式进行渲染 */