mermaidのグラフの矢印を直角直線にしたい

issueはある

描画の依存関係

おそらくd3

packages配下にあるとか教えてほしいよな…

パーサーとランタイムは別っぽい

フローチャートはこの辺?

エントリーポイントはどこなんだろ?どこかでparser呼んでrenderer読んでるイメージ。

何かrendererが2つある
- packages/mermaid/src/diagrams/flowchart/flowRenderer.js
- packages/mermaid/src/diagrams/flowchart/flowRenderer-v2.js
たぶんv2が使われてる

もとに戻ってエントリーポイントを探すか。
このrender付近っぽい。
どうやらmermaidAPIというのがファサードっぽい。
parseもあった

エントリーポイント探しという意味ではinitialize()っぽいな。
<body>
<script type="module">
import mermaid from 'https://cdn.jsdelivr.net/npm/mermaid@10/dist/mermaid.esm.min.mjs';
mermaid.initialize({ startOnLoad: true });
</script>
</body>

addDiagramsでそれぞれの図を追加している。
あとはやっぱりfreezeされてるmermaidAPIのparseとrenderを見れば良いのだろう。

やっぱり描画はrenderの中で行われていてrendererのdrawが呼ばれてるんだな。
flowchartだとこの辺か。

ワークアラウンド
flowchartだけは対応できるみたい。

It looks using
d3
module to draw graph. So I tried wheter otherd3
curves may work, and found otherd3
curve names are available without any Mermaid.js lib modification.Curves
step
,stepBefore
andstepAfter
are close, but no cigar. It would need more work :(

パーサー
- packages配下
- 各種diagrams配下
にある。たぶんパッケージ配下のものがコアライブラリ。

elkって何?
eclipse layout kernelっぽい

directivesで色々いじる
そういう時にはレンダラーをdagreベースのものからelkベースのもの(elkjs)に変更してやると解決することがあります(ただしVersion9.4以上)。
%%{
init:
"flowchart": {
"defaultRenderer": "elk",
"curve": "basis"
}
}%%
利用できそうなconfigは

試してみる string | "dagre-d3" | "dagre-wrapper" | "elk"
%%{init: { 'logLevel': 'debug', 'theme': 'dark', 'flowchart': {'curve': 'liner'} } }%%
flowchart LR
x --> y
x --> z
%%{init: { 'logLevel': 'debug', 'theme': 'dark', 'flowchart': {'defaultRenderer': 'elk', 'curve': 'liner' }} }%%
flowchart LR
x --> y
x --> z

elk関連のissue

たくさんの設定が存在しそう

冒頭のissueのflowchartをelkなどで描画してみる。
graph LR
A[Christmas] -->|Get money| B(Go shopping)
B --> C(Let me think)
C -->|One| D[Laptop]
C -->|Two| E[iPhone]
C -->|Three| F[Car]
default
curve=liner
elk
elk with curve=liner