@@ -8,27 +8,42 @@ type MermaidDiagramProps = {
8
8
chart : string
9
9
}
10
10
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
+
11
23
const useStyles = makeStyles (
12
- ( ) => ( {
24
+ ( theme ) => ( {
13
25
container : {
14
26
position : 'relative' ,
15
27
width : '100%' ,
16
28
overflow : 'hidden'
17
29
} ,
18
30
mermaid : {
19
- minHeight : 300 ,
31
+ [ theme . breakpoints . up ( 'sm' ) ] : {
32
+ display : 'flex' ,
33
+ justifyContent : 'center' ,
34
+ }
20
35
} ,
21
36
} ) )
22
37
23
- mermaid . initialize ( { startOnLoad : true , er : { diagramPadding : 20 , useMaxWidth : false } } ) ;
38
+ mermaid . initialize ( { startOnLoad : true , er : { useMaxWidth : false } } ) ;
24
39
25
40
export const MermaidDiagram = React . memo ( ( props : MermaidDiagramProps ) => {
26
41
const { chart } = props ;
27
42
28
43
const classes = useStyles ( ) ;
29
44
30
45
// Consolidated state management
31
- const [ diagramState , setDiagramState ] = useState ( {
46
+ const [ diagramState , setDiagramState ] = useState < DiagramState > ( {
32
47
scale : 1 ,
33
48
position : { x : 0 , y : 0 } ,
34
49
dragging : false ,
@@ -134,7 +149,7 @@ export const MermaidDiagram = React.memo((props: MermaidDiagramProps) => {
134
149
ref = { diagramRef }
135
150
style = { {
136
151
transform : `scale(${ diagramState . scale } ) translate(${ diagramState . position . x } px, ${ diagramState . position . y } px)` ,
137
- transformOrigin : '0 0 ' ,
152
+ transformOrigin : '50% 50% ' ,
138
153
cursor : diagramState . dragging ? 'grabbing' : 'grab' ,
139
154
} }
140
155
onMouseDown = { handleMouseDown }
0 commit comments