@@ -3,39 +3,40 @@ import mermaid from 'mermaid';
33import * as d3 from 'd3' ;
44import './Mermaid.css' ;
55
6-
7-
86export type MermaidAPI = {
97 reset : ( ) => void ;
108 zoomIn : ( ) => void ;
119 zoomOut : ( ) => void ;
10+ getSvg : ( ) =>
11+ | d3 . Selection < d3 . BaseType , unknown , HTMLElement , any >
12+ | undefined ;
1213} ;
1314
1415export function Mermaid ( {
1516 chart,
1617 mermaidRef,
17- theme
18+ theme,
1819} : {
1920 chart : string ;
2021 mermaidRef ?: React . MutableRefObject < MermaidAPI | undefined > ;
21- theme : string
22+ theme : string ;
2223} ) {
2324 const zoomRef = useRef < d3 . ZoomBehavior < Element , unknown > > ( ) ;
24- const svgRef =
25- useRef < d3 . Selection < d3 . BaseType , unknown , HTMLElement , any > > ( ) ;
25+ const svgRef = useRef < d3 . Selection < d3 . BaseType , unknown , HTMLElement , any > > ( ) ;
2626
2727 useEffect ( ( ) => {
2828 mermaid . initialize ( {
2929 startOnLoad : true ,
3030 theme,
3131 } ) ;
3232 mermaid . contentLoaded ( ) ;
33-
34- var svg = d3 . select ( '.mermaid svg' ) ;
33+
34+ const svg = d3 . select ( '.mermaid svg' ) ;
35+ debugger ;
3536 svg . html ( '<g>' + svg . html ( ) + '</g>' ) ;
3637
37- var inner = svg . select ( 'g' ) ;
38- var zoom = d3 . zoom ( ) . on ( 'zoom' , function ( event ) {
38+ const inner = svg . select ( 'g' ) ;
39+ const zoom = d3 . zoom ( ) . on ( 'zoom' , function ( event ) {
3940 inner . attr ( 'transform' , event . transform ) ;
4041 } ) ;
4142 // @ts -ignore
@@ -47,20 +48,26 @@ export function Mermaid({
4748
4849 useImperativeHandle ( mermaidRef , ( ) => ( {
4950 reset ( ) {
50- svgRef . current ?. transition ( )
51+ svgRef . current
52+ ?. transition ( )
5153 // @ts -ignore
5254 . call ( zoomRef . current . scaleTo , 1 ) ;
5355 } ,
5456 zoomIn ( ) {
55- svgRef . current ?. transition ( )
57+ svgRef . current
58+ ?. transition ( )
5659 // @ts -ignore
5760 . call ( zoomRef . current . scaleBy , 2 ) ;
5861 } ,
5962 zoomOut ( ) {
60- svgRef . current ?. transition ( )
63+ svgRef . current
64+ ?. transition ( )
6165 // @ts -ignore
6266 . call ( zoomRef . current . scaleBy , 0.5 ) ;
6367 } ,
68+ getSvg ( ) {
69+ return svgRef . current ;
70+ } ,
6471 } ) ) ;
6572
6673 return (
0 commit comments