@8btc/mditor 0.0.5 → 0.0.7
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/dist/index.css +2 -2
- package/dist/index.d.ts +7 -0
- package/dist/index.js +419 -276
- package/dist/index.min.js +1 -1
- package/dist/method.d.ts +10 -10
- package/dist/method.js +3 -3
- package/dist/method.min.js +1 -1
- package/dist/ts/util/attachLineNumbers.d.ts +3 -19
- package/dist/types/index.d.ts +0 -12
- package/package.json +1 -1
- package/src/index.ts +23 -1
- package/src/method.ts +42 -21
- package/src/ts/util/attachLineNumbers.ts +15 -4
package/src/method.ts
CHANGED
|
@@ -1,27 +1,31 @@
|
|
|
1
|
-
import {abcRender} from "./ts/markdown/abcRender";
|
|
1
|
+
import { abcRender } from "./ts/markdown/abcRender";
|
|
2
2
|
import * as adapterRender from "./ts/markdown/adapterRender";
|
|
3
|
-
import {chartRender} from "./ts/markdown/chartRender";
|
|
4
|
-
import {codeRender} from "./ts/markdown/codeRender";
|
|
5
|
-
import {flowchartRender} from "./ts/markdown/flowchartRender";
|
|
6
|
-
import {graphvizRender} from "./ts/markdown/graphvizRender";
|
|
7
|
-
import {highlightRender} from "./ts/markdown/highlightRender";
|
|
8
|
-
import {lazyLoadImageRender} from "./ts/markdown/lazyLoadImageRender";
|
|
9
|
-
import {mathRender} from "./ts/markdown/mathRender";
|
|
10
|
-
import {mediaRender} from "./ts/markdown/mediaRender";
|
|
11
|
-
import {mermaidRender} from "./ts/markdown/mermaidRender";
|
|
12
|
-
import {SMILESRender} from "./ts/markdown/SMILESRender";
|
|
13
|
-
import {markmapRender} from "./ts/markdown/markmapRender";
|
|
14
|
-
import {mindmapRender} from "./ts/markdown/mindmapRender";
|
|
15
|
-
import {outlineRender} from "./ts/markdown/outlineRender";
|
|
16
|
-
import {plantumlRender} from "./ts/markdown/plantumlRender";
|
|
17
|
-
import {md2html, previewRender} from "./ts/markdown/previewRender";
|
|
18
|
-
import {speechRender} from "./ts/markdown/speechRender";
|
|
19
|
-
import {previewImage} from "./ts/preview/image";
|
|
20
|
-
import {setCodeTheme} from "./ts/ui/setCodeTheme";
|
|
21
|
-
import {setContentTheme} from "./ts/ui/setContentTheme";
|
|
3
|
+
import { chartRender } from "./ts/markdown/chartRender";
|
|
4
|
+
import { codeRender } from "./ts/markdown/codeRender";
|
|
5
|
+
import { flowchartRender } from "./ts/markdown/flowchartRender";
|
|
6
|
+
import { graphvizRender } from "./ts/markdown/graphvizRender";
|
|
7
|
+
import { highlightRender } from "./ts/markdown/highlightRender";
|
|
8
|
+
import { lazyLoadImageRender } from "./ts/markdown/lazyLoadImageRender";
|
|
9
|
+
import { mathRender } from "./ts/markdown/mathRender";
|
|
10
|
+
import { mediaRender } from "./ts/markdown/mediaRender";
|
|
11
|
+
import { mermaidRender } from "./ts/markdown/mermaidRender";
|
|
12
|
+
import { SMILESRender } from "./ts/markdown/SMILESRender";
|
|
13
|
+
import { markmapRender } from "./ts/markdown/markmapRender";
|
|
14
|
+
import { mindmapRender } from "./ts/markdown/mindmapRender";
|
|
15
|
+
import { outlineRender } from "./ts/markdown/outlineRender";
|
|
16
|
+
import { plantumlRender } from "./ts/markdown/plantumlRender";
|
|
17
|
+
import { md2html, previewRender } from "./ts/markdown/previewRender";
|
|
18
|
+
import { speechRender } from "./ts/markdown/speechRender";
|
|
19
|
+
import { previewImage } from "./ts/preview/image";
|
|
20
|
+
import { setCodeTheme } from "./ts/ui/setCodeTheme";
|
|
21
|
+
import { setContentTheme } from "./ts/ui/setContentTheme";
|
|
22
|
+
import { getMarkdown } from "./ts/markdown/getMarkdown";
|
|
23
|
+
import {
|
|
24
|
+
attachLineNumbersToBlocks,
|
|
25
|
+
attachLineNumbersToBlocksThrottled,
|
|
26
|
+
} from "./ts/util/attachLineNumbers";
|
|
22
27
|
|
|
23
28
|
class Vditor {
|
|
24
|
-
|
|
25
29
|
/** 点击图片放大 */
|
|
26
30
|
public static adapterRender = adapterRender;
|
|
27
31
|
/** 点击图片放大 */
|
|
@@ -66,6 +70,23 @@ class Vditor {
|
|
|
66
70
|
public static setCodeTheme = setCodeTheme;
|
|
67
71
|
/** 设置内容主题 */
|
|
68
72
|
public static setContentTheme = setContentTheme;
|
|
73
|
+
|
|
74
|
+
/**
|
|
75
|
+
* 外部更新行号:传入实例并根据配置进行同步/节流更新
|
|
76
|
+
*/
|
|
77
|
+
public static updateLineNumbers(instance: any, immediate = false) {
|
|
78
|
+
try {
|
|
79
|
+
const v = instance?.vditor ?? instance;
|
|
80
|
+
if (!v?.options?.lineNumber) return;
|
|
81
|
+
const text = getMarkdown(v);
|
|
82
|
+
const root = v[v.currentMode].element as HTMLElement;
|
|
83
|
+
if (immediate) {
|
|
84
|
+
attachLineNumbersToBlocks(root, text);
|
|
85
|
+
} else {
|
|
86
|
+
attachLineNumbersToBlocksThrottled(root, text);
|
|
87
|
+
}
|
|
88
|
+
} catch {}
|
|
89
|
+
}
|
|
69
90
|
}
|
|
70
91
|
|
|
71
92
|
export default Vditor;
|
|
@@ -241,21 +241,32 @@ export const attachLineNumbersToBlocks = (
|
|
|
241
241
|
const container = el as HTMLElement;
|
|
242
242
|
const dataType = container.getAttribute("data-type") || "";
|
|
243
243
|
if (dataType === "math-block" || dataType === "code-block") {
|
|
244
|
-
// container.setAttribute("data-linenumber", "");
|
|
245
244
|
return;
|
|
246
245
|
}
|
|
246
|
+
|
|
247
|
+
// 仅 li 需要行号:跳过并清理 ul/ol 自身及其内部嵌套的 p/div 等块
|
|
248
|
+
const tagName = container.tagName;
|
|
249
|
+
if (tagName === "UL" || tagName === "OL") {
|
|
250
|
+
container.removeAttribute("data-linenumber");
|
|
251
|
+
return;
|
|
252
|
+
}
|
|
253
|
+
const liAncestor = container.closest("li");
|
|
254
|
+
if (liAncestor) {
|
|
255
|
+
container.removeAttribute("data-linenumber");
|
|
256
|
+
return;
|
|
257
|
+
}
|
|
258
|
+
|
|
247
259
|
const text = container.textContent || "";
|
|
248
260
|
const normText = normalize(text);
|
|
249
261
|
// 跳过纯空白块
|
|
250
262
|
if (!normText.trim()) {
|
|
251
|
-
|
|
263
|
+
container.removeAttribute("data-linenumber");
|
|
252
264
|
return;
|
|
253
265
|
}
|
|
254
266
|
|
|
255
267
|
let lineNumber = -1;
|
|
256
268
|
|
|
257
|
-
|
|
258
|
-
if (tag === "BLOCKQUOTE") {
|
|
269
|
+
if (tagName === "BLOCKQUOTE") {
|
|
259
270
|
const firstLine =
|
|
260
271
|
normText.split("\n").find((l) => l.trim().length > 0) ||
|
|
261
272
|
normText;
|