vditor 3.11.0 → 3.11.2
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/LICENSE +1 -1
- package/README.md +3 -1
- package/dist/index.css +2 -2
- package/dist/index.d.ts +1 -0
- package/dist/index.js +140 -26
- package/dist/index.min.js +1 -1
- package/dist/js/i18n/de_DE.js +86 -0
- package/dist/js/i18n/en_US.js +2 -2
- package/dist/js/i18n/es_ES.js +86 -0
- package/dist/js/i18n/vi_VN.js +86 -0
- package/dist/js/icons/ant.js +1 -1
- package/dist/js/icons/material.js +1 -1
- package/dist/js/lute/lute.min.js +72 -71
- package/dist/method.js +11 -5
- package/dist/method.min.js +1 -1
- package/dist/types/index.d.ts +34 -3
- package/package.json +1 -1
- package/src/index.ts +9 -4
- package/src/ts/markdown/previewRender.ts +1 -1
- package/src/ts/upload/index.ts +6 -4
- package/src/ts/util/fixBrowserBehavior.ts +75 -7
- package/src/ts/util/selection.ts +7 -2
- package/src/ts/wysiwyg/highlightToolbarWYSIWYG.ts +19 -4
package/LICENSE
CHANGED
package/README.md
CHANGED
|
@@ -201,7 +201,7 @@ Markdown 输出的 HTML 所展现的外观。内置 ant-design, light,dark,w
|
|
|
201
201
|
| minHeight | 编辑区域最小高度 | - |
|
|
202
202
|
| width | 编辑器总宽度,支持 % | 'auto' |
|
|
203
203
|
| placeholder | 输入区域为空时的提示 | '' |
|
|
204
|
-
| lang | 语言种类:en_US,
|
|
204
|
+
| 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
205
|
| input(value: string) | 输入后触发 | - |
|
|
206
206
|
| focus(value: string) | 聚焦后触发 | - |
|
|
207
207
|
| blur(value: string) | 失焦后触发 | - |
|
|
@@ -219,6 +219,7 @@ Markdown 输出的 HTML 所展现的外观。内置 ant-design, light,dark,w
|
|
|
219
219
|
| theme | 主题:classic, dark | 'classic' |
|
|
220
220
|
| icon | 图标风格:ant, material | 'ant' |
|
|
221
221
|
| customRenders: {language: string, render: (element: HTMLElement, vditor: IVditor) => void}[] | 自定义渲染器 | [] |
|
|
222
|
+
| customWysiwygToolbar(type: TWYSISYGToolbar, element: HTMLElement): void | 对 wysiwyg 模式下的工具栏进行自定义 | - |
|
|
222
223
|
|
|
223
224
|
#### options.toolbar
|
|
224
225
|
|
|
@@ -465,6 +466,7 @@ if (xhr.status === 200) {
|
|
|
465
466
|
|
|
466
467
|
| | 说明 | 默认值 |
|
|
467
468
|
| - | - | - |
|
|
469
|
+
| xhr | 上传时使用的 XMLHttpRequest | - |
|
|
468
470
|
| url | 上传 url,为空则不会触发上传相关事件 | '' |
|
|
469
471
|
| max | 上传文件最大 Byte | 10 * 1024 * 1024 |
|
|
470
472
|
| linkToImgUrl | 剪切板中包含图片地址时,使用此 url 重新上传 | '' |
|
package/dist/index.css
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/*!
|
|
2
|
-
* Vditor v3.11.
|
|
2
|
+
* Vditor v3.11.2 - 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.
|
|
28
|
+
* Vditor v3.11.2 - A markdown editor written in TypeScript.
|
|
29
29
|
*
|
|
30
30
|
* MIT License
|
|
31
31
|
*
|
package/dist/index.d.ts
CHANGED
package/dist/index.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/*!
|
|
2
|
-
* Vditor v3.11.
|
|
2
|
+
* Vditor v3.11.2 - A markdown editor written in TypeScript.
|
|
3
3
|
*
|
|
4
4
|
* MIT License
|
|
5
5
|
*
|
|
@@ -2471,7 +2471,7 @@ var previewRender = function (previewElement, markdown, options) { return __awai
|
|
|
2471
2471
|
previewElement.innerHTML = html;
|
|
2472
2472
|
previewElement.classList.add("vditor-reset");
|
|
2473
2473
|
if (!!mergedOptions.i18n) return [3 /*break*/, 5];
|
|
2474
|
-
if (!!["en_US", "
|
|
2474
|
+
if (!!["de_DE", "en_US", "es_ES", "fr_FR", "ja_JP", "ko_KR", "pt_BR", "ru_RU", "sv_SE", "vi_VN", "zh_CN", "zh_TW"].includes(mergedOptions.lang)) return [3 /*break*/, 2];
|
|
2475
2475
|
throw new Error("options.lang error, see https://ld246.com/article/1549638745630#options");
|
|
2476
2476
|
case 2:
|
|
2477
2477
|
i18nScriptPrefix = "vditorI18nScript";
|
|
@@ -2633,7 +2633,7 @@ var Vditor = /** @class */ (function () {
|
|
|
2633
2633
|
/* harmony export */ "H": () => (/* binding */ _VDITOR_VERSION),
|
|
2634
2634
|
/* harmony export */ "g": () => (/* binding */ Constants)
|
|
2635
2635
|
/* harmony export */ });
|
|
2636
|
-
var _VDITOR_VERSION = "3.11.
|
|
2636
|
+
var _VDITOR_VERSION = "3.11.2";
|
|
2637
2637
|
|
|
2638
2638
|
var Constants = /** @class */ (function () {
|
|
2639
2639
|
function Constants() {
|
|
@@ -2681,7 +2681,7 @@ var Constants = /** @class */ (function () {
|
|
|
2681
2681
|
// 别名
|
|
2682
2682
|
"js", "ts", "html", "toml", "c#", "bat"
|
|
2683
2683
|
];
|
|
2684
|
-
Constants.CDN = "https://unpkg.com/vditor@".concat("3.11.
|
|
2684
|
+
Constants.CDN = "https://unpkg.com/vditor@".concat("3.11.2");
|
|
2685
2685
|
Constants.MARKDOWN_OPTIONS = {
|
|
2686
2686
|
autoSpace: false,
|
|
2687
2687
|
gfmAutoLink: true,
|
|
@@ -4785,7 +4785,13 @@ var insertHTML = function (html, vditor) {
|
|
|
4785
4785
|
vditor[vditor.currentMode].element.insertAdjacentHTML("beforeend", pasteElement.innerHTML);
|
|
4786
4786
|
}
|
|
4787
4787
|
else {
|
|
4788
|
-
|
|
4788
|
+
var liElement = (0,_hasClosest__WEBPACK_IMPORTED_MODULE_1__/* .hasClosestByMatchTag */ .lG)(range.startContainer, "LI");
|
|
4789
|
+
if (liElement && pasteElement.firstElementChild.tagName === "UL") {
|
|
4790
|
+
liElement.insertAdjacentHTML("afterend", pasteElement.firstElementChild.innerHTML);
|
|
4791
|
+
}
|
|
4792
|
+
else {
|
|
4793
|
+
blockElement.insertAdjacentHTML("afterend", pasteElement.innerHTML);
|
|
4794
|
+
}
|
|
4789
4795
|
}
|
|
4790
4796
|
setRangeByWbr(vditor[vditor.currentMode].element, range);
|
|
4791
4797
|
}
|
|
@@ -7132,6 +7138,7 @@ var highlightToolbarWYSIWYG = function (vditor) {
|
|
|
7132
7138
|
if (footnotesElement) {
|
|
7133
7139
|
vditor.wysiwyg.popover.innerHTML = "";
|
|
7134
7140
|
genClose(footnotesElement, vditor);
|
|
7141
|
+
customWysiwygToolbar(vditor, "footnotes-block");
|
|
7135
7142
|
setPopoverPosition(vditor, footnotesElement);
|
|
7136
7143
|
return;
|
|
7137
7144
|
}
|
|
@@ -7254,6 +7261,7 @@ var highlightToolbarWYSIWYG = function (vditor) {
|
|
|
7254
7261
|
if (tocElement) {
|
|
7255
7262
|
vditor.wysiwyg.popover.innerHTML = "";
|
|
7256
7263
|
genClose(tocElement, vditor);
|
|
7264
|
+
customWysiwygToolbar(vditor, "vditor-toc");
|
|
7257
7265
|
setPopoverPosition(vditor, tocElement);
|
|
7258
7266
|
return;
|
|
7259
7267
|
}
|
|
@@ -7264,6 +7272,7 @@ var highlightToolbarWYSIWYG = function (vditor) {
|
|
|
7264
7272
|
genUp(range, blockquoteElement, vditor);
|
|
7265
7273
|
genDown(range, blockquoteElement, vditor);
|
|
7266
7274
|
genClose(blockquoteElement, vditor);
|
|
7275
|
+
customWysiwygToolbar(vditor, "blockquote");
|
|
7267
7276
|
setPopoverPosition(vditor, blockquoteElement);
|
|
7268
7277
|
}
|
|
7269
7278
|
// list item popover
|
|
@@ -7272,6 +7281,7 @@ var highlightToolbarWYSIWYG = function (vditor) {
|
|
|
7272
7281
|
genUp(range, liElement, vditor);
|
|
7273
7282
|
genDown(range, liElement, vditor);
|
|
7274
7283
|
genClose(liElement, vditor);
|
|
7284
|
+
customWysiwygToolbar(vditor, "li");
|
|
7275
7285
|
setPopoverPosition(vditor, liElement);
|
|
7276
7286
|
}
|
|
7277
7287
|
// table popover
|
|
@@ -7586,6 +7596,7 @@ var highlightToolbarWYSIWYG = function (vditor) {
|
|
|
7586
7596
|
vditor.wysiwyg.popover.insertAdjacentElement("beforeend", inputWrap);
|
|
7587
7597
|
vditor.wysiwyg.popover.insertAdjacentHTML("beforeend", " x ");
|
|
7588
7598
|
vditor.wysiwyg.popover.insertAdjacentElement("beforeend", input2Wrap);
|
|
7599
|
+
customWysiwygToolbar(vditor, "table");
|
|
7589
7600
|
setPopoverPosition(vditor, tableElement);
|
|
7590
7601
|
}
|
|
7591
7602
|
// link ref popover
|
|
@@ -7629,6 +7640,7 @@ var highlightToolbarWYSIWYG = function (vditor) {
|
|
|
7629
7640
|
};
|
|
7630
7641
|
genClose(footnotesRefElement, vditor);
|
|
7631
7642
|
vditor.wysiwyg.popover.insertAdjacentElement("beforeend", inputWrap);
|
|
7643
|
+
customWysiwygToolbar(vditor, "footnotes-ref");
|
|
7632
7644
|
setPopoverPosition(vditor, footnotesRefElement);
|
|
7633
7645
|
}
|
|
7634
7646
|
// block popover: math-inline, math-block, html-block, html-inline, code-block, html-entity
|
|
@@ -7721,6 +7733,10 @@ var highlightToolbarWYSIWYG = function (vditor) {
|
|
|
7721
7733
|
event.preventDefault();
|
|
7722
7734
|
};
|
|
7723
7735
|
vditor.wysiwyg.popover.insertAdjacentElement("beforeend", languageWrap);
|
|
7736
|
+
customWysiwygToolbar(vditor, "code-block");
|
|
7737
|
+
}
|
|
7738
|
+
else {
|
|
7739
|
+
customWysiwygToolbar(vditor, "block");
|
|
7724
7740
|
}
|
|
7725
7741
|
setPopoverPosition(vditor, blockRenderElement);
|
|
7726
7742
|
}
|
|
@@ -7759,6 +7775,7 @@ var highlightToolbarWYSIWYG = function (vditor) {
|
|
|
7759
7775
|
genDown(range, headingElement, vditor);
|
|
7760
7776
|
genClose(headingElement, vditor);
|
|
7761
7777
|
vditor.wysiwyg.popover.insertAdjacentElement("beforeend", inputWrap);
|
|
7778
|
+
customWysiwygToolbar(vditor, "heading");
|
|
7762
7779
|
setPopoverPosition(vditor, headingElement);
|
|
7763
7780
|
}
|
|
7764
7781
|
// a popover
|
|
@@ -7781,6 +7798,7 @@ var highlightToolbarWYSIWYG = function (vditor) {
|
|
|
7781
7798
|
genUp(range, blockElement, vditor);
|
|
7782
7799
|
genDown(range, blockElement, vditor);
|
|
7783
7800
|
genClose(blockElement, vditor);
|
|
7801
|
+
customWysiwygToolbar(vditor, "block");
|
|
7784
7802
|
setPopoverPosition(vditor, blockElement);
|
|
7785
7803
|
}
|
|
7786
7804
|
else {
|
|
@@ -7878,6 +7896,7 @@ var genLinkRefPopover = function (vditor, linkRefElement, range) {
|
|
|
7878
7896
|
genClose(linkRefElement, vditor);
|
|
7879
7897
|
vditor.wysiwyg.popover.insertAdjacentElement("beforeend", inputWrap);
|
|
7880
7898
|
vditor.wysiwyg.popover.insertAdjacentElement("beforeend", input1Wrap);
|
|
7899
|
+
customWysiwygToolbar(vditor, "link-ref");
|
|
7881
7900
|
setPopoverPosition(vditor, linkRefElement);
|
|
7882
7901
|
};
|
|
7883
7902
|
var genUp = function (range, element, vditor) {
|
|
@@ -8051,6 +8070,7 @@ var genAPopover = function (vditor, aElement, range) {
|
|
|
8051
8070
|
vditor.wysiwyg.popover.insertAdjacentElement("beforeend", inputWrap);
|
|
8052
8071
|
vditor.wysiwyg.popover.insertAdjacentElement("beforeend", input1Wrap);
|
|
8053
8072
|
vditor.wysiwyg.popover.insertAdjacentElement("beforeend", input2Wrap);
|
|
8073
|
+
customWysiwygToolbar(vditor, "a");
|
|
8054
8074
|
setPopoverPosition(vditor, aElement);
|
|
8055
8075
|
};
|
|
8056
8076
|
var genImagePopover = function (event, vditor) {
|
|
@@ -8111,6 +8131,7 @@ var genImagePopover = function (event, vditor) {
|
|
|
8111
8131
|
vditor.wysiwyg.popover.insertAdjacentElement("beforeend", inputWrap);
|
|
8112
8132
|
vditor.wysiwyg.popover.insertAdjacentElement("beforeend", altWrap);
|
|
8113
8133
|
vditor.wysiwyg.popover.insertAdjacentElement("beforeend", titleWrap);
|
|
8134
|
+
customWysiwygToolbar(vditor, "image");
|
|
8114
8135
|
setPopoverPosition(vditor, imgElement);
|
|
8115
8136
|
};
|
|
8116
8137
|
var focusToElement = function (event, range) {
|
|
@@ -8123,6 +8144,9 @@ var focusToElement = function (event, range) {
|
|
|
8123
8144
|
return true;
|
|
8124
8145
|
}
|
|
8125
8146
|
};
|
|
8147
|
+
var customWysiwygToolbar = function (vditor, type) {
|
|
8148
|
+
vditor.options.customWysiwygToolbar(type, vditor.wysiwyg.popover);
|
|
8149
|
+
};
|
|
8126
8150
|
|
|
8127
8151
|
;// CONCATENATED MODULE: ./src/ts/util/highlightToolbar.ts
|
|
8128
8152
|
|
|
@@ -9488,6 +9512,7 @@ var uploadFiles = function (vditor, files, element) { return __awaiter(void 0, v
|
|
|
9488
9512
|
formData.append(vditor.options.upload.fieldName, validateResult[i]);
|
|
9489
9513
|
}
|
|
9490
9514
|
xhr = new XMLHttpRequest();
|
|
9515
|
+
vditor.upload.xhr = xhr;
|
|
9491
9516
|
xhr.open("POST", vditor.options.upload.url);
|
|
9492
9517
|
if (vditor.options.upload.token) {
|
|
9493
9518
|
xhr.setRequestHeader("X-Upload-Token", vditor.options.upload.token);
|
|
@@ -9526,6 +9551,7 @@ var uploadFiles = function (vditor, files, element) { return __awaiter(void 0, v
|
|
|
9526
9551
|
element.value = "";
|
|
9527
9552
|
}
|
|
9528
9553
|
vditor.upload.element.style.display = "none";
|
|
9554
|
+
vditor.upload.xhr = undefined;
|
|
9529
9555
|
}
|
|
9530
9556
|
};
|
|
9531
9557
|
xhr.upload.onprogress = function (event) {
|
|
@@ -9815,7 +9841,7 @@ var fixCJKPosition = function (range, vditor, event) {
|
|
|
9815
9841
|
if (pLiElement && (0,selection/* getSelectPosition */.im)(pLiElement, vditor[vditor.currentMode].element, range).start === 0) {
|
|
9816
9842
|
// https://github.com/Vanessa219/vditor/issues/1289 WKWebView切换输入法产生六分之一空格,造成光标错位
|
|
9817
9843
|
if (pLiElement.nodeValue) {
|
|
9818
|
-
pLiElement.nodeValue = pLiElement.nodeValue.replace(/\u2006/g,
|
|
9844
|
+
pLiElement.nodeValue = pLiElement.nodeValue.replace(/\u2006/g, "");
|
|
9819
9845
|
}
|
|
9820
9846
|
var zwspNode = document.createTextNode(constants/* Constants.ZWSP */.g.ZWSP);
|
|
9821
9847
|
range.insertNode(zwspNode);
|
|
@@ -10799,7 +10825,7 @@ var fixBlockquote = function (vditor, range, event, pElement) {
|
|
|
10799
10825
|
};
|
|
10800
10826
|
var fixTask = function (vditor, range, event) {
|
|
10801
10827
|
var startContainer = range.startContainer;
|
|
10802
|
-
var taskItemElement = (0,hasClosest/* hasClosestByMatchTag */.lG)(startContainer, "
|
|
10828
|
+
var taskItemElement = (0,hasClosest/* hasClosestByMatchTag */.lG)(startContainer, "LI");
|
|
10803
10829
|
if (taskItemElement && taskItemElement.classList.contains("vditor-task")) {
|
|
10804
10830
|
if (matchHotKey("⇧⌘J", event)) {
|
|
10805
10831
|
// ctrl + shift: toggle checked
|
|
@@ -11109,15 +11135,23 @@ var paste = function (vditor, event, callback) { return fixBrowserBehavior_await
|
|
|
11109
11135
|
processCodeRender(codeElement.parentElement.nextElementSibling, vditor);
|
|
11110
11136
|
}
|
|
11111
11137
|
}
|
|
11112
|
-
return [3 /*break*/,
|
|
11138
|
+
return [3 /*break*/, 10];
|
|
11113
11139
|
case 1:
|
|
11114
11140
|
if (!code) return [3 /*break*/, 2];
|
|
11115
11141
|
callback.pasteCode(code);
|
|
11116
|
-
return [3 /*break*/,
|
|
11142
|
+
return [3 /*break*/, 10];
|
|
11117
11143
|
case 2:
|
|
11118
|
-
if (!(textHTML.trim() !== "")) return [3 /*break*/,
|
|
11144
|
+
if (!(textHTML.trim() !== "")) return [3 /*break*/, 5];
|
|
11119
11145
|
tempElement = document.createElement("div");
|
|
11120
11146
|
tempElement.innerHTML = textHTML;
|
|
11147
|
+
if (!!vditor.options.upload.base64ToLink) return [3 /*break*/, 4];
|
|
11148
|
+
// word 复制的图文混合,替换为 link: <v:imagedata src="file:///C:/Users/ADMINI~1/AppData/Local/Temp/msohtmlclip1/01/clip_image001.png" o:title="">
|
|
11149
|
+
return [4 /*yield*/, processVMLImage(vditor, tempElement, ("clipboardData" in event ? event.clipboardData : event.dataTransfer).getData("text/rtf"))];
|
|
11150
|
+
case 3:
|
|
11151
|
+
// word 复制的图文混合,替换为 link: <v:imagedata src="file:///C:/Users/ADMINI~1/AppData/Local/Temp/msohtmlclip1/01/clip_image001.png" o:title="">
|
|
11152
|
+
_b.sent();
|
|
11153
|
+
_b.label = 4;
|
|
11154
|
+
case 4:
|
|
11121
11155
|
tempElement.querySelectorAll("[style]").forEach(function (e) {
|
|
11122
11156
|
e.removeAttribute("style");
|
|
11123
11157
|
});
|
|
@@ -11140,15 +11174,15 @@ var paste = function (vditor, event, callback) { return fixBrowserBehavior_await
|
|
|
11140
11174
|
processPaste(vditor, vditor.lute.HTML2Md(tempElement.innerHTML).trimRight());
|
|
11141
11175
|
}
|
|
11142
11176
|
vditor.outline.render(vditor);
|
|
11143
|
-
return [3 /*break*/,
|
|
11144
|
-
case
|
|
11145
|
-
if (!(files.length > 0)) return [3 /*break*/,
|
|
11146
|
-
if (!(vditor.options.upload.url || vditor.options.upload.handler)) return [3 /*break*/,
|
|
11177
|
+
return [3 /*break*/, 10];
|
|
11178
|
+
case 5:
|
|
11179
|
+
if (!(files.length > 0)) return [3 /*break*/, 9];
|
|
11180
|
+
if (!(vditor.options.upload.url || vditor.options.upload.handler)) return [3 /*break*/, 7];
|
|
11147
11181
|
return [4 /*yield*/, uploadFiles(vditor, files)];
|
|
11148
|
-
case
|
|
11182
|
+
case 6:
|
|
11149
11183
|
_b.sent();
|
|
11150
|
-
return [3 /*break*/,
|
|
11151
|
-
case
|
|
11184
|
+
return [3 /*break*/, 8];
|
|
11185
|
+
case 7:
|
|
11152
11186
|
fileReader_1 = new FileReader();
|
|
11153
11187
|
if ("clipboardData" in event) {
|
|
11154
11188
|
files = event.clipboardData.files;
|
|
@@ -11161,7 +11195,7 @@ var paste = function (vditor, event, callback) { return fixBrowserBehavior_await
|
|
|
11161
11195
|
if (file_1 && file_1.type.startsWith("image")) {
|
|
11162
11196
|
fileReader_1.readAsDataURL(file_1);
|
|
11163
11197
|
fileReader_1.onload = function () {
|
|
11164
|
-
var imgHTML =
|
|
11198
|
+
var imgHTML = "";
|
|
11165
11199
|
if (vditor.currentMode === "wysiwyg") {
|
|
11166
11200
|
imgHTML += "<img alt=\"".concat(file_1.name, "\" src=\"").concat(fileReader_1.result.toString(), "\">\n");
|
|
11167
11201
|
}
|
|
@@ -11171,9 +11205,9 @@ var paste = function (vditor, event, callback) { return fixBrowserBehavior_await
|
|
|
11171
11205
|
document.execCommand("insertHTML", false, imgHTML);
|
|
11172
11206
|
};
|
|
11173
11207
|
}
|
|
11174
|
-
_b.label =
|
|
11175
|
-
case
|
|
11176
|
-
case
|
|
11208
|
+
_b.label = 8;
|
|
11209
|
+
case 8: return [3 /*break*/, 10];
|
|
11210
|
+
case 9:
|
|
11177
11211
|
if (textPlain.trim() !== "" && files.length === 0) {
|
|
11178
11212
|
range = (0,selection/* getEditorRange */.zh)(vditor);
|
|
11179
11213
|
if (range.toString() !== "" && vditor.lute.IsValidLinkDest(textPlain)) {
|
|
@@ -11182,12 +11216,12 @@ var paste = function (vditor, event, callback) { return fixBrowserBehavior_await
|
|
|
11182
11216
|
if (vditor.currentMode === "ir") {
|
|
11183
11217
|
renderers.Md2VditorIRDOM = { renderLinkDest: renderLinkDest };
|
|
11184
11218
|
vditor.lute.SetJSRenderers({ renderers: renderers });
|
|
11185
|
-
(0,selection/* insertHTML */.oC)(vditor.lute.Md2VditorIRDOM(textPlain), vditor);
|
|
11219
|
+
(0,selection/* insertHTML */.oC)(Lute.Sanitize(vditor.lute.Md2VditorIRDOM(textPlain)), vditor);
|
|
11186
11220
|
}
|
|
11187
11221
|
else if (vditor.currentMode === "wysiwyg") {
|
|
11188
11222
|
renderers.Md2VditorDOM = { renderLinkDest: renderLinkDest };
|
|
11189
11223
|
vditor.lute.SetJSRenderers({ renderers: renderers });
|
|
11190
|
-
(0,selection/* insertHTML */.oC)(vditor.lute.Md2VditorDOM(textPlain), vditor);
|
|
11224
|
+
(0,selection/* insertHTML */.oC)(Lute.Sanitize(vditor.lute.Md2VditorDOM(textPlain)), vditor);
|
|
11191
11225
|
}
|
|
11192
11226
|
else {
|
|
11193
11227
|
renderers.Md2VditorSVDOM = { renderLinkDest: renderLinkDest };
|
|
@@ -11196,8 +11230,8 @@ var paste = function (vditor, event, callback) { return fixBrowserBehavior_await
|
|
|
11196
11230
|
}
|
|
11197
11231
|
vditor.outline.render(vditor);
|
|
11198
11232
|
}
|
|
11199
|
-
_b.label =
|
|
11200
|
-
case
|
|
11233
|
+
_b.label = 10;
|
|
11234
|
+
case 10:
|
|
11201
11235
|
if (vditor.currentMode !== "sv") {
|
|
11202
11236
|
blockElement = (0,hasClosest/* hasClosestBlock */.F9)((0,selection/* getEditorRange */.zh)(vditor).startContainer);
|
|
11203
11237
|
if (blockElement) {
|
|
@@ -11229,6 +11263,81 @@ var paste = function (vditor, event, callback) { return fixBrowserBehavior_await
|
|
|
11229
11263
|
}
|
|
11230
11264
|
});
|
|
11231
11265
|
}); };
|
|
11266
|
+
var processVMLImage = function (vditor, root, rtfData) { return fixBrowserBehavior_awaiter(void 0, void 0, void 0, function () {
|
|
11267
|
+
var regexPictureHeader, regexPicture, regImages, images, _i, regImages_1, image, imageType, shapes, i, img, newSrc, imgs, i, src, _a;
|
|
11268
|
+
return fixBrowserBehavior_generator(this, function (_b) {
|
|
11269
|
+
switch (_b.label) {
|
|
11270
|
+
case 0:
|
|
11271
|
+
if (!rtfData) {
|
|
11272
|
+
return [2 /*return*/];
|
|
11273
|
+
}
|
|
11274
|
+
regexPictureHeader = /{\\pict[\s\S]+?\\bliptag-?\d+(\\blipupi-?\d+)?({\\\*\\blipuid\s?[\da-fA-F]+)?[\s}]*?/;
|
|
11275
|
+
regexPicture = new RegExp("(?:(" + regexPictureHeader.source + "))([\\da-fA-F\\s]+)\\}", "g");
|
|
11276
|
+
regImages = rtfData.match(regexPicture);
|
|
11277
|
+
images = [];
|
|
11278
|
+
if (regImages) {
|
|
11279
|
+
for (_i = 0, regImages_1 = regImages; _i < regImages_1.length; _i++) {
|
|
11280
|
+
image = regImages_1[_i];
|
|
11281
|
+
imageType = void 0;
|
|
11282
|
+
if (image.includes("\\pngblip")) {
|
|
11283
|
+
imageType = "image/png";
|
|
11284
|
+
}
|
|
11285
|
+
else if (image.includes("\\jpegblip")) {
|
|
11286
|
+
imageType = "image/jpeg";
|
|
11287
|
+
}
|
|
11288
|
+
if (imageType) {
|
|
11289
|
+
images.push({
|
|
11290
|
+
hex: image.replace(regexPictureHeader, "").replace(/[^\da-fA-F]/g, ""),
|
|
11291
|
+
type: imageType,
|
|
11292
|
+
});
|
|
11293
|
+
}
|
|
11294
|
+
}
|
|
11295
|
+
}
|
|
11296
|
+
shapes = [];
|
|
11297
|
+
walk(root, function (child) {
|
|
11298
|
+
if (child.tagName === "V:SHAPE") {
|
|
11299
|
+
walk(child, function (sub) {
|
|
11300
|
+
if (sub.tagName === "V:IMAGEDATA")
|
|
11301
|
+
shapes.push({ shape: child, img: sub });
|
|
11302
|
+
});
|
|
11303
|
+
return false;
|
|
11304
|
+
}
|
|
11305
|
+
});
|
|
11306
|
+
for (i = 0; i < shapes.length; i++) {
|
|
11307
|
+
img = document.createElement("img");
|
|
11308
|
+
newSrc = "data:" + images[i].type + ";base64," + btoa((images[i].hex.match(/\w{2}/g) || []).map(function (char) {
|
|
11309
|
+
return String.fromCharCode(parseInt(char, 16));
|
|
11310
|
+
}).join(""));
|
|
11311
|
+
img.src = newSrc;
|
|
11312
|
+
img.title = shapes[i].img.getAttribute("title");
|
|
11313
|
+
shapes[i].shape.parentNode.replaceChild(img, shapes[i].shape);
|
|
11314
|
+
}
|
|
11315
|
+
imgs = root.querySelectorAll("img");
|
|
11316
|
+
i = 0;
|
|
11317
|
+
_b.label = 1;
|
|
11318
|
+
case 1:
|
|
11319
|
+
if (!(i < imgs.length)) return [3 /*break*/, 4];
|
|
11320
|
+
src = imgs[i].src || "";
|
|
11321
|
+
if (!src) return [3 /*break*/, 3];
|
|
11322
|
+
_a = imgs[i];
|
|
11323
|
+
return [4 /*yield*/, vditor.options.upload.base64ToLink(src)];
|
|
11324
|
+
case 2:
|
|
11325
|
+
_a.src = _b.sent();
|
|
11326
|
+
_b.label = 3;
|
|
11327
|
+
case 3:
|
|
11328
|
+
i++;
|
|
11329
|
+
return [3 /*break*/, 1];
|
|
11330
|
+
case 4: return [2 /*return*/];
|
|
11331
|
+
}
|
|
11332
|
+
});
|
|
11333
|
+
}); };
|
|
11334
|
+
var walk = function (el, fn) {
|
|
11335
|
+
var goNext = fn(el);
|
|
11336
|
+
if (goNext !== false)
|
|
11337
|
+
for (var i = 0; i < el.children.length; i++) {
|
|
11338
|
+
walk(el.children[i], fn);
|
|
11339
|
+
}
|
|
11340
|
+
};
|
|
11232
11341
|
var templateObject_1;
|
|
11233
11342
|
|
|
11234
11343
|
;// CONCATENATED MODULE: ./src/ts/ir/process.ts
|
|
@@ -15409,6 +15518,7 @@ var Vditor = /** @class */ (function (_super) {
|
|
|
15409
15518
|
*/
|
|
15410
15519
|
function Vditor(id, options) {
|
|
15411
15520
|
var _this = _super.call(this) || this;
|
|
15521
|
+
_this.isDestroyed = false;
|
|
15412
15522
|
_this.version = constants/* VDITOR_VERSION */.H;
|
|
15413
15523
|
if (typeof id === "string") {
|
|
15414
15524
|
if (!options) {
|
|
@@ -15434,7 +15544,7 @@ var Vditor = /** @class */ (function (_super) {
|
|
|
15434
15544
|
var mergedOptions = getOptions.merge();
|
|
15435
15545
|
// 支持自定义国际化
|
|
15436
15546
|
if (!mergedOptions.i18n) {
|
|
15437
|
-
if (!["en_US", "
|
|
15547
|
+
if (!["de_DE", "en_US", "es_ES", "fr_FR", "ja_JP", "ko_KR", "pt_BR", "ru_RU", "sv_SE", "vi_VN", "zh_CN", "zh_TW"].includes(mergedOptions.lang)) {
|
|
15438
15548
|
throw new Error("options.lang error, see https://ld246.com/article/1549638745630#options");
|
|
15439
15549
|
}
|
|
15440
15550
|
else {
|
|
@@ -15706,6 +15816,7 @@ var Vditor = /** @class */ (function (_super) {
|
|
|
15706
15816
|
UIUnbindListener();
|
|
15707
15817
|
this.vditor.wysiwyg.unbindListener();
|
|
15708
15818
|
this.vditor.options.after = undefined;
|
|
15819
|
+
this.isDestroyed = true;
|
|
15709
15820
|
};
|
|
15710
15821
|
/** 获取评论 ID */
|
|
15711
15822
|
Vditor.prototype.getCommentIds = function () {
|
|
@@ -15809,6 +15920,9 @@ var Vditor = /** @class */ (function (_super) {
|
|
|
15809
15920
|
};
|
|
15810
15921
|
Vditor.prototype.init = function (id, mergedOptions) {
|
|
15811
15922
|
var _this = this;
|
|
15923
|
+
if (this.isDestroyed) {
|
|
15924
|
+
return;
|
|
15925
|
+
}
|
|
15812
15926
|
this.vditor = {
|
|
15813
15927
|
currentMode: mergedOptions.mode,
|
|
15814
15928
|
element: id,
|