@@ -8,27 +8,42 @@ type MermaidDiagramProps = {
88 chart : string
99}
1010
11+ type DiagramPosition = {
12+ x : number ,
13+ y : number
14+ }
15+
16+ type DiagramState = {
17+ scale : number ,
18+ position : DiagramPosition ,
19+ startPosition : DiagramPosition ,
20+ dragging : boolean
21+ }
22+
1123const useStyles = makeStyles (
12- ( ) => ( {
24+ ( theme ) => ( {
1325 container : {
1426 position : 'relative' ,
1527 width : '100%' ,
1628 overflow : 'hidden'
1729 } ,
1830 mermaid : {
19- minHeight : 300 ,
31+ [ theme . breakpoints . up ( 'sm' ) ] : {
32+ display : 'flex' ,
33+ justifyContent : 'center' ,
34+ }
2035 } ,
2136 } ) )
2237
23- mermaid . initialize ( { startOnLoad : true , er : { diagramPadding : 20 , useMaxWidth : false } } ) ;
38+ mermaid . initialize ( { startOnLoad : true , er : { useMaxWidth : false } } ) ;
2439
2540export const MermaidDiagram = React . memo ( ( props : MermaidDiagramProps ) => {
2641 const { chart } = props ;
2742
2843 const classes = useStyles ( ) ;
2944
3045 // Consolidated state management
31- const [ diagramState , setDiagramState ] = useState ( {
46+ const [ diagramState , setDiagramState ] = useState < DiagramState > ( {
3247 scale : 1 ,
3348 position : { x : 0 , y : 0 } ,
3449 dragging : false ,
@@ -134,7 +149,7 @@ export const MermaidDiagram = React.memo((props: MermaidDiagramProps) => {
134149 ref = { diagramRef }
135150 style = { {
136151 transform : `scale(${ diagramState . scale } ) translate(${ diagramState . position . x } px, ${ diagramState . position . y } px)` ,
137- transformOrigin : '0 0 ' ,
152+ transformOrigin : '50% 50% ' ,
138153 cursor : diagramState . dragging ? 'grabbing' : 'grab' ,
139154 } }
140155 onMouseDown = { handleMouseDown }
0 commit comments