Skip to content

Commit 5319906

Browse files
committed
Make graph update on editor
1 parent 38f26de commit 5319906

File tree

3 files changed

+28
-3
lines changed

3 files changed

+28
-3
lines changed

pnpm-lock.yaml

+12
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

web/package.json

+1
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717
"@codemirror/theme-one-dark": "github:codemirror/theme-one-dark",
1818
"@codemirror/view": "^6.36.2",
1919
"@mermaid-js/layout-elk": "^0.1.7",
20+
"@solid-primitives/scheduled": "^1.4.4",
2021
"codemirror": "^6.0.1",
2122
"mermaid": "^11.4.1",
2223
"panzoom": "^9.4.3",

web/src/modes/graph/Mermaid.tsx

+15-3
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,9 @@
1-
import { createResource, onMount, onCleanup } from "solid-js";
1+
import { createResource, onMount, onCleanup, createMemo } from "solid-js";
2+
import {
3+
createScheduled,
4+
debounce,
5+
throttle,
6+
} from "@solid-primitives/scheduled";
27
import mermaid from "mermaid";
38
import elkLayouts from "@mermaid-js/layout-elk";
49
import panzoom, { PanZoom } from "panzoom";
@@ -22,8 +27,15 @@ export interface MermaidProps {
2227
}
2328

2429
export function Mermaid(props: MermaidProps) {
25-
const [svg] = createResource(async () => {
26-
const { svg } = await mermaid.render("mermaid", props.content);
30+
const scheduled = createScheduled((fn) => debounce(fn, 1000));
31+
32+
const deferredContent = createMemo<string>((p) => {
33+
const value = props.content;
34+
return scheduled() ? value : p;
35+
}, props.content);
36+
37+
const [svg] = createResource(deferredContent, async (content) => {
38+
const { svg } = await mermaid.render("mermaid", content);
2739
return svg;
2840
});
2941

0 commit comments

Comments
 (0)