@riebeckite/plugin-mermaid 0.0.31 → 0.0.32
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/client.js +9 -4
- package/dist/index.js +20 -45
- package/dist/src/hast.d.ts +8 -7
- package/dist/src/init.d.ts +7 -1
- package/package.json +3 -2
package/dist/client.js
CHANGED
|
@@ -1,27 +1,32 @@
|
|
|
1
1
|
// src/init.ts
|
|
2
2
|
var DEFAULT_THEME = { light: "default", dark: "dark" };
|
|
3
3
|
var DEFAULT_SCRIPT_URL = "https://cdn.jsdelivr.net/npm/mermaid@11/dist/mermaid.min.js";
|
|
4
|
-
async function initMermaidDiagrams(
|
|
4
|
+
async function initMermaidDiagrams(context = {}) {
|
|
5
|
+
const options = context.config ?? {};
|
|
6
|
+
const root = context.root ?? document;
|
|
5
7
|
const mermaid = options.mermaid ?? await loadMermaid(options.scriptUrl);
|
|
6
8
|
if (!mermaid) return;
|
|
9
|
+
if (context.signal?.aborted) return;
|
|
7
10
|
mermaid.initialize({
|
|
8
11
|
startOnLoad: false,
|
|
9
12
|
securityLevel: "strict",
|
|
10
13
|
theme: selectTheme(options.theme ?? DEFAULT_THEME)
|
|
11
14
|
});
|
|
12
|
-
const diagrams =
|
|
15
|
+
const diagrams = root.querySelectorAll(
|
|
13
16
|
'.rr-mermaid[data-mermaid="pending"]'
|
|
14
17
|
);
|
|
15
18
|
for (const [index, diagram] of Array.from(diagrams).entries()) {
|
|
16
|
-
|
|
19
|
+
if (context.signal?.aborted || !diagram.isConnected) return;
|
|
20
|
+
await renderDiagram(mermaid, diagram, index, context.signal);
|
|
17
21
|
}
|
|
18
22
|
}
|
|
19
|
-
async function renderDiagram(mermaid, diagram, index) {
|
|
23
|
+
async function renderDiagram(mermaid, diagram, index, signal) {
|
|
20
24
|
const source = diagram.dataset.mermaidSource;
|
|
21
25
|
const canvas = diagram.querySelector(".rr-mermaid__canvas");
|
|
22
26
|
if (!source || !canvas) return;
|
|
23
27
|
try {
|
|
24
28
|
const { svg } = await mermaid.render(`rr-mermaid-client-${index}`, source);
|
|
29
|
+
if (signal?.aborted || !diagram.isConnected) return;
|
|
25
30
|
canvas.innerHTML = svg;
|
|
26
31
|
diagram.removeAttribute("data-mermaid");
|
|
27
32
|
} catch {
|
package/dist/index.js
CHANGED
|
@@ -14,52 +14,24 @@ var __export = (target, all) => {
|
|
|
14
14
|
};
|
|
15
15
|
|
|
16
16
|
// src/hast.ts
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
}
|
|
28
|
-
function element(tagName, properties = {}, children = []) {
|
|
29
|
-
return { type: "element", tagName, properties, children };
|
|
30
|
-
}
|
|
31
|
-
function text(value) {
|
|
32
|
-
return { type: "text", value };
|
|
33
|
-
}
|
|
34
|
-
function getTextContent(node) {
|
|
35
|
-
if (node.type === "text" && "value" in node && typeof node.value === "string") {
|
|
36
|
-
return node.value;
|
|
37
|
-
}
|
|
38
|
-
return getChildren(node).map(getTextContent).join("");
|
|
39
|
-
}
|
|
40
|
-
function getStringProperty(node, key) {
|
|
41
|
-
const value = node.properties?.[key];
|
|
42
|
-
if (typeof value === "string") return value;
|
|
43
|
-
if (Array.isArray(value)) return value.join(" ");
|
|
44
|
-
return null;
|
|
45
|
-
}
|
|
46
|
-
function hasClass(node, className) {
|
|
47
|
-
const value = node.properties?.className;
|
|
48
|
-
const classes = Array.isArray(value) ? value.map(String) : typeof value === "string" ? value.split(/\s+/) : [];
|
|
49
|
-
return classes.includes(className);
|
|
50
|
-
}
|
|
51
|
-
function isElementNode(node) {
|
|
52
|
-
return node.type === "element";
|
|
53
|
-
}
|
|
54
|
-
function hasChildren(node) {
|
|
55
|
-
return Array.isArray(node.children);
|
|
56
|
-
}
|
|
57
|
-
function getChildren(node) {
|
|
58
|
-
const children = node.children;
|
|
59
|
-
return Array.isArray(children) ? children : [];
|
|
60
|
-
}
|
|
17
|
+
import {
|
|
18
|
+
element as sharedElement,
|
|
19
|
+
getStringProperty as sharedGetStringProperty,
|
|
20
|
+
getTextContent as sharedGetTextContent,
|
|
21
|
+
hasClass as sharedHasClass,
|
|
22
|
+
mergeClassName as sharedMergeClassName,
|
|
23
|
+
text as sharedText,
|
|
24
|
+
visitElements as sharedVisitElements
|
|
25
|
+
} from "@riebeckite/diagram";
|
|
26
|
+
var element, text, getTextContent, getStringProperty, hasClass, visitElements;
|
|
61
27
|
var init_hast = __esm({
|
|
62
28
|
"src/hast.ts"() {
|
|
29
|
+
element = sharedElement;
|
|
30
|
+
text = sharedText;
|
|
31
|
+
getTextContent = sharedGetTextContent;
|
|
32
|
+
getStringProperty = sharedGetStringProperty;
|
|
33
|
+
hasClass = sharedHasClass;
|
|
34
|
+
visitElements = sharedVisitElements;
|
|
63
35
|
}
|
|
64
36
|
});
|
|
65
37
|
|
|
@@ -538,7 +510,10 @@ function mermaid(options = {}) {
|
|
|
538
510
|
createClientEntry(
|
|
539
511
|
"mermaid",
|
|
540
512
|
"@riebeckite/plugin-mermaid/client",
|
|
541
|
-
"initMermaidDiagrams"
|
|
513
|
+
"initMermaidDiagrams",
|
|
514
|
+
void 0,
|
|
515
|
+
void 0,
|
|
516
|
+
"context"
|
|
542
517
|
)
|
|
543
518
|
]
|
|
544
519
|
});
|
package/dist/src/hast.d.ts
CHANGED
|
@@ -1,8 +1,9 @@
|
|
|
1
|
+
import { mergeClassName as sharedMergeClassName } from "@riebeckite/diagram";
|
|
1
2
|
import type { ElementNode, HastNode, ParentNode, TextNode } from "./types.js";
|
|
2
|
-
export declare
|
|
3
|
-
export declare
|
|
4
|
-
export declare
|
|
5
|
-
export declare
|
|
6
|
-
export declare
|
|
7
|
-
export declare
|
|
8
|
-
export declare
|
|
3
|
+
export declare const element: (tagName: string, properties?: Record<string, unknown>, children?: HastNode[]) => ElementNode;
|
|
4
|
+
export declare const text: (value: string) => TextNode;
|
|
5
|
+
export declare const getTextContent: (node: HastNode) => string;
|
|
6
|
+
export declare const getStringProperty: (node: ElementNode, key: string) => string | null;
|
|
7
|
+
export declare const hasClass: (node: ElementNode, className: string) => boolean;
|
|
8
|
+
export declare const visitElements: (node: HastNode, visitor: (node: ElementNode, parent?: ParentNode, index?: number) => void, parent?: ParentNode, index?: number) => void;
|
|
9
|
+
export declare const mergeClassName: typeof sharedMergeClassName;
|
package/dist/src/init.d.ts
CHANGED
|
@@ -1,2 +1,8 @@
|
|
|
1
1
|
import type { MermaidClientOptions } from "./types.js";
|
|
2
|
-
|
|
2
|
+
type ClientContext = {
|
|
3
|
+
root?: ParentNode;
|
|
4
|
+
signal?: AbortSignal;
|
|
5
|
+
config?: MermaidClientOptions;
|
|
6
|
+
};
|
|
7
|
+
export declare function initMermaidDiagrams(context?: ClientContext): Promise<void>;
|
|
8
|
+
export {};
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@riebeckite/plugin-mermaid",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.32",
|
|
4
4
|
"license": "Apache-2.0",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./dist/index.js",
|
|
@@ -23,7 +23,8 @@
|
|
|
23
23
|
"dependencies": {
|
|
24
24
|
"mermaid": "^11.12.2",
|
|
25
25
|
"puppeteer": "^25.11.0",
|
|
26
|
-
"@riebeckite/core": "0.0.
|
|
26
|
+
"@riebeckite/core": "0.0.32",
|
|
27
|
+
"@riebeckite/diagram": "0.0.32"
|
|
27
28
|
},
|
|
28
29
|
"publishConfig": {
|
|
29
30
|
"access": "public"
|