Skip to content

Commit 74df4a7

Browse files
committed
Mind map coming in from the cold. A lazy loaded diagram in the same way as timeline.
1 parent 38a84a7 commit 74df4a7

34 files changed

Lines changed: 206 additions & 344 deletions

‎.vite/build.ts‎

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -36,9 +36,9 @@ const packageOptions = {
3636
packageName: 'mermaid',
3737
file: 'mermaid.ts',
3838
},
39-
'mermaid-mindmap': {
40-
name: 'mermaid-mindmap',
41-
packageName: 'mermaid-mindmap',
39+
'mermaid-example-diagram': {
40+
name: 'mermaid-example-diagram',
41+
packageName: 'mermaid-example-diagram',
4242
file: 'detector.ts',
4343
},
4444
};
@@ -114,7 +114,7 @@ export const getBuildConfig = ({ minify, core, watch, entryName }: BuildOptions)
114114

115115
if (watch && config.build) {
116116
config.build.watch = {
117-
include: ['packages/mermaid-mindmap/src/**', 'packages/mermaid/src/**'],
117+
include: ['packages/mermaid-example-diagram/src/**', 'packages/mermaid/src/**'],
118118
};
119119
}
120120

@@ -139,7 +139,7 @@ const main = async () => {
139139
if (watch) {
140140
build(getBuildConfig({ minify: false, watch, core: false, entryName: 'mermaid' }));
141141
if (!mermaidOnly) {
142-
build(getBuildConfig({ minify: false, watch, entryName: 'mermaid-mindmap' }));
142+
build(getBuildConfig({ minify: false, watch, entryName: 'mermaid-example-diagram' }));
143143
}
144144
} else if (visualize) {
145145
await build(getBuildConfig({ minify: false, core: true, entryName: 'mermaid' }));

‎.vite/server.ts‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ async function createServer() {
2222
app.use(cors);
2323
app.use(express.static('./packages/mermaid/dist'));
2424
// app.use(express.static('./packages/mermaid-example-diagram/dist'));
25-
app.use(express.static('./packages/mermaid-mindmap/dist'));
25+
app.use(express.static('./packages/mermaid-example-diagram/dist'));
2626
app.use(vite.middlewares);
2727
app.use(express.static('demos'));
2828
app.use(express.static('cypress/platform'));

‎cypress/integration/other/external-diagrams.spec.js‎

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,8 @@ import { urlSnapshotTest } from '../../helpers/util';
22

33
describe('mermaid', () => {
44
describe('registerDiagram', () => {
5-
it('should work on @mermaid-js/mermaid-mindmap and mermaid-example-diagram', () => {
6-
const url = 'http://localhost:9000/external-diagrams-mindmap.html';
5+
it('should work on @mermaid-js/mermaid-example-diagram', () => {
6+
const url = 'http://localhost:9000/external-diagrams-example-diagram.html';
77
urlSnapshotTest(url, {}, false, false);
88
});
99
});

cypress/platform/external-diagrams-mindmap.html renamed to cypress/platform/external-diagrams-example-diagram.html

Lines changed: 3 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -2,46 +2,20 @@
22
<body>
33
<h1>Should correctly load a third-party diagram using registerDiagram</h1>
44
<pre id="diagram" class="mermaid">
5-
mindmap
6-
root
7-
A
8-
B
9-
C
10-
D
11-
E
12-
A2
13-
B2
14-
C2
15-
D2
16-
E2
17-
child1((Circle))
18-
grandchild 1
19-
grandchild 2
20-
child2(Round rectangle)
21-
grandchild 3
22-
grandchild 4
23-
child3[Square]
24-
grandchild 5
25-
::icon(mdi mdi-fire)
26-
gc6((grand<br/>child 6))
27-
::icon(mdi mdi-fire)
28-
gc7((grand<br/>grand<br/>child 8))
5+
example-diagram
296
</pre>
30-
<!-- <pre id="diagram" class="mermaid2">
31-
example-diagram
32-
</pre> -->
337

348
<!-- <div id="cy"></div> -->
359
<!-- <script src="http://localhost:9000/packages/mermaid-mindmap/dist/mermaid-mindmap-detector.js"></script> -->
3610
<!-- <script src="./mermaid-example-diagram-detector.js"></script> -->
3711
<!-- <script src="//cdn.jsdelivr.net/npm/mermaid@9.1.7/dist/mermaid.min.js"></script> -->
3812
<!-- <script type="module" src="./external-diagrams-mindmap.mjs" /> -->
3913
<script type="module">
40-
import mindmap from '../../packages/mermaid-mindmap/src/detector';
14+
import exampleDiagram from '../../packages/mermaid-example-diagram/src/detector';
4115
// import example from '../../packages/mermaid-example-diagram/src/detector';
4216
import mermaid from '../../packages/mermaid/src/mermaid';
4317

44-
await mermaid.registerExternalDiagrams([mindmap]);
18+
await mermaid.registerExternalDiagrams([exampleDiagram]);
4519
await mermaid.initialize({ logLevel: 0 });
4620
await mermaid.initThrowsErrorsAsync();
4721
if (window.Cypress) {

‎cypress/platform/knsv2.html‎

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -246,6 +246,10 @@
246246
Pen and paper
247247
Mermaid
248248
</pre>
249+
<br />
250+
<pre id="diagram" class="mermaid">
251+
example-diagram
252+
</pre>
249253

250254
<!-- <div id="cy"></div> -->
251255
<!-- <script src="http://localhost:9000/packages/mermaid-mindmap/dist/mermaid-mindmap-detector.js"></script> -->
@@ -254,15 +258,15 @@
254258
<!-- <script src="./mermaid.js"></script> -->
255259

256260
<script type="module">
257-
import mindmap from '../../packages/mermaid-mindmap/src/detector';
258-
// import example from '../../packages/mermaid-example-diagram/src/detector';
261+
// import mindmap from '../../packages/mermaid-mindmap/src/detector';
262+
import example from '../../packages/mermaid-example-diagram/src/detector';
259263
import mermaid from '../../packages/mermaid/src/mermaid';
260-
await mermaid.registerExternalDiagrams([mindmap]);
264+
await mermaid.registerExternalDiagrams([example]);
261265
mermaid.parseError = function (err, hash) {
262266
// console.error('Mermaid error: ', err);
263267
};
264268
mermaid.initialize({
265-
theme: 'dark',
269+
theme: 'forest',
266270
startOnLoad: true,
267271
logLevel: 0,
268272
flowchart: {

‎cypress/platform/knsv3.html‎

Lines changed: 75 additions & 67 deletions
Original file line numberDiff line numberDiff line change
@@ -1,81 +1,93 @@
1-
<html>
1+
<!DOCTYPE html>
2+
<html lang="en">
23
<head>
3-
<link href="https://fonts.googleapis.com/css?family=Montserrat&display=swap" rel="stylesheet" />
4-
<link href="https://unpkg.com/tailwindcss@^1.0/dist/tailwind.min.css" rel="stylesheet" />
5-
<link
6-
rel="stylesheet"
7-
href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.min.css"
8-
/>
9-
<link
10-
href="https://cdn.jsdelivr.net/npm/@mdi/font@6.9.96/css/materialdesignicons.min.css"
11-
rel="stylesheet"
12-
/>
13-
<link
14-
href="https://fonts.googleapis.com/css?family=Noto+Sans+SC&display=swap"
15-
rel="stylesheet"
16-
/>
4+
<meta charset="utf-8" />
5+
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
6+
<title>Mindmap Mermaid Quick Test Page</title>
7+
<link rel="icon" type="image/png" href="data:image/png;base64,iVBORw0KGgo=" />
178
<style>
18-
body {
19-
/* background: rgb(221, 208, 208); */
20-
/* background:#333; */
21-
font-family: 'Arial';
22-
/* font-size: 18px !important; */
23-
}
24-
h1 {
25-
color: grey;
26-
}
27-
.mermaid2 {
28-
display: none;
29-
}
30-
.mermaid svg {
31-
/* font-size: 18px !important; */
32-
background-color: #eee;
33-
background-image: radial-gradient(#fff 1%, transparent 11%),
34-
radial-gradient(#fff 1%, transparent 11%);
35-
background-size: 20px 20px;
36-
background-position: 0 0, 10px 10px;
37-
background-repeat: repeat;
38-
}
39-
.malware {
40-
position: fixed;
41-
bottom: 0;
42-
left: 0;
43-
right: 0;
44-
height: 150px;
45-
background: red;
46-
color: black;
47-
display: flex;
48-
display: flex;
49-
justify-content: center;
50-
align-items: center;
51-
font-family: monospace;
52-
font-size: 72px;
9+
div.mermaid {
10+
/* font-family: 'trebuchet ms', verdana, arial; */
11+
font-family: 'Courier New', Courier, monospace !important;
5312
}
5413
</style>
5514
</head>
15+
5616
<body>
57-
<div>Security check</div>
58-
<pre id="diagram" class="mermaid">
59-
graph TD
60-
A["test"] --"<p><style> * { display : none}</style>test</p>"--> B
17+
<h1>Mindmap diagram demo</h1>
18+
<pre class="mermaid">
19+
mindmap
20+
root
21+
child1((Circle))
22+
grandchild 1
23+
grandchild 2
24+
child2(Round rectangle)
25+
grandchild 3
26+
grandchild 4
27+
child3[Square]
28+
grandchild 5
29+
::icon(mdi mdi-fire)
30+
gc6((grand<br/>child 6))
31+
::icon(mdi mdi-fire)
32+
gc7((grand<br/>grand<br/>child 8))
6133
</pre>
6234

63-
<!-- <div id="cy"></div> -->
64-
<!-- <script src="http://localhost:9000/packages/mermaid-mindmap/dist/mermaid-mindmap-detector.js"></script> -->
65-
<!-- <script src="./mermaid-example-diagram-detector.js"></script> -->
66-
<!-- <script src="//cdn.jsdelivr.net/npm/mermaid@9.1.7/dist/mermaid.min.js"></script> -->
67-
<!-- <script src="./mermaid.js"></script> -->
35+
<h2>Mindmap with root wrapping text and a shape</h2>
36+
<pre class="mermaid">
37+
mindmap
38+
root[A root with a long text that wraps to keep the node size in check]
39+
</pre>
6840

6941
<script type="module">
70-
import mindmap from '../../packages/mermaid-mindmap/src/detector';
71-
// import example from '../../packages/mermaid-example-diagram/src/detector';
42+
// import mermaid from './mermaid.esm.mjs';
7243
import mermaid from '../../packages/mermaid/src/mermaid';
73-
await mermaid.registerExternalDiagrams([mindmap]);
44+
// import mermaidMindmap from './mermaid-mindmap.esm.mjs';
45+
46+
// import mermaidMindmap from 'https://cdn.jsdelivr.net/npm/@mermaid-js/mermaid-mindmap@9.3.0/+esm';
47+
// await mermaid.registerExternalDiagrams([mermaidMindmap]);
48+
49+
const ALLOWED_TAGS = [
50+
'a',
51+
'b',
52+
'blockquote',
53+
'br',
54+
'dd',
55+
'div',
56+
'dl',
57+
'dt',
58+
'em',
59+
'foreignObject',
60+
'h1',
61+
'h2',
62+
'h3',
63+
'h4',
64+
'h5',
65+
'h6',
66+
'h7',
67+
'h8',
68+
'hr',
69+
'i',
70+
'li',
71+
'ul',
72+
'ol',
73+
'p',
74+
'pre',
75+
'span',
76+
'strike',
77+
'strong',
78+
'table',
79+
'tbody',
80+
'td',
81+
'tfoot',
82+
'th',
83+
'thead',
84+
'tr',
85+
];
7486
mermaid.parseError = function (err, hash) {
7587
// console.error('Mermaid error: ', err);
7688
};
7789
mermaid.initialize({
78-
theme: 'default',
90+
theme: 'base',
7991
startOnLoad: true,
8092
logLevel: 0,
8193
flowchart: {
@@ -94,10 +106,6 @@
94106
console.error('In parse error:');
95107
console.error(err);
96108
};
97-
// mermaid.test1('first_slow', 1200).then((r) => console.info(r));
98-
// mermaid.test1('second_fast', 200).then((r) => console.info(r));
99-
// mermaid.test1('third_fast', 200).then((r) => console.info(r));
100-
// mermaid.test1('forth_slow', 1200).then((r) => console.info(r));
101109
</script>
102110
</body>
103111
</html>

‎cypress/platform/viewer.js‎

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import mermaid2 from '../../packages/mermaid/src/mermaid';
2-
import mindmap from '../../packages/mermaid-mindmap/src/detector';
2+
import externalExample from '../../packages/mermaid-example-diagram/src/detector';
33

44
function b64ToUtf8(str) {
55
return decodeURIComponent(escape(window.atob(str)));
@@ -44,7 +44,7 @@ const contentLoaded = async function () {
4444
document.getElementsByTagName('body')[0].appendChild(div);
4545
}
4646

47-
await mermaid2.registerExternalDiagrams([mindmap]);
47+
await mermaid2.registerExternalDiagrams([externalExample]);
4848
mermaid2.initialize(graphObj.mermaid);
4949
await mermaid2.init();
5050
markRendered();

‎package.json‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@
1818
"build:vite": "ts-node-esm --transpileOnly .vite/build.ts",
1919
"build:mermaid": "pnpm build:vite --mermaid",
2020
"build:viz": "pnpm build:mermaid --visualize",
21-
"build:types": "tsc -p ./packages/mermaid/tsconfig.json --emitDeclarationOnly && tsc -p ./packages/mermaid-mindmap/tsconfig.json --emitDeclarationOnly",
21+
"build:types": "tsc -p ./packages/mermaid/tsconfig.json --emitDeclarationOnly && tsc -p ./packages/mermaid-example-diagran/tsconfig.json --emitDeclarationOnly",
2222
"build:watch": "pnpm build:vite --watch",
2323
"build": "pnpm run -r clean && concurrently \"pnpm build:vite\" \"pnpm build:types\"",
2424
"dev": "concurrently \"pnpm build:vite --watch\" \"ts-node-esm .vite/server.ts\"",

‎packages/mermaid-example-diagram/Readme.md‎

Lines changed: 0 additions & 3 deletions
This file was deleted.

‎packages/mermaid-example-diagram/package.json‎

Lines changed: 19 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -1,36 +1,25 @@
11
{
22
"name": "@mermaid-js/mermaid-example-diagram",
3-
"version": "9.2.0-rc2",
4-
"description": "Markdownish syntax for generating flowcharts, sequence diagrams, class diagrams, gantt charts and git graphs.",
5-
"main": "dist/mermaid-mindmap.core.mjs",
6-
"module": "dist/mermaid-mindmap.core.mjs",
3+
"version": "9.3.0",
4+
"description": "Example of external diagram module for MermaidJS.",
5+
"module": "dist/mermaid-example-diagram.core.mjs",
6+
"types": "dist/detector.d.ts",
77
"type": "module",
88
"exports": {
99
".": {
10-
"require": "./dist/mermaid-example-diagram.min.js",
11-
"import": "./dist/mermaid-example-diagram.core.mjs"
10+
"import": "./dist/mermaid-example-diagram.core.mjs",
11+
"types": "./dist/detector.d.ts"
1212
},
1313
"./*": "./*"
1414
},
1515
"keywords": [
1616
"diagram",
1717
"markdown",
18-
"mindmap",
18+
"example",
1919
"mermaid"
2020
],
2121
"scripts": {
22-
"clean": "rimraf dist",
23-
"build:types": "tsc -p ./tsconfig.json --emitDeclarationOnly",
24-
"build:watch": "yarn build:code --watch",
25-
"build:esbuild": "concurrently \"yarn build:code\" \"yarn build:types\"",
26-
"build": "yarn clean; yarn build:esbuild",
27-
"dev": "node .esbuild/serve.cjs",
28-
"release": "yarn build",
29-
"lint": "eslint --cache --ignore-path .gitignore . && yarn lint:jison && prettier --check .",
30-
"lint:fix": "eslint --fix --ignore-path .gitignore . && prettier --write .",
31-
"lint:jison": "ts-node-esm src/jison/lint.mts",
32-
"todo-prepare": "concurrently \"husky install ../../.husky\" \"yarn build\"",
33-
"todo-pre-commit": "lint-staged"
22+
"prepublishOnly": "pnpm -w run build"
3423
},
3524
"repository": {
3625
"type": "git",
@@ -48,9 +37,19 @@
4837
"page"
4938
]
5039
},
51-
"dependencies": {},
40+
"dependencies": {
41+
"@braintree/sanitize-url": "^6.0.0",
42+
"cytoscape": "^3.23.0",
43+
"cytoscape-cose-bilkent": "^4.1.0",
44+
"cytoscape-fcose": "^2.1.0",
45+
"d3": "^7.0.0",
46+
"khroma": "^2.0.0",
47+
"non-layered-tidy-tree-layout": "^2.0.2"
48+
},
5249
"devDependencies": {
50+
"@types/cytoscape": "^3.19.9",
5351
"concurrently": "^7.5.0",
52+
"mermaid": "workspace:*",
5453
"rimraf": "^3.0.2"
5554
},
5655
"resolutions": {

0 commit comments

Comments
 (0)