| 375 | const [[explainPlanTitle, explainPlanDetails], setExplainPlanDetails] = React.useState([null, null]); |
| 376 | |
| 377 | const onCmdClick = (cmd)=>{ |
| 378 | if(cmd == 'in') { |
| 379 | setZoomFactor((prev)=>{ |
| 380 | if(prev >= MAX_ZOOM_FACTOR) return prev; |
| 381 | return prev+ZOOM_RATIO; |
| 382 | }); |
| 383 | } else if(cmd == 'out') { |
| 384 | setZoomFactor((prev)=>{ |
| 385 | if(prev <= MIN_ZOOM_FACTOR) return prev; |
| 386 | return prev-ZOOM_RATIO; |
| 387 | }); |
| 388 | } else { |
| 389 | setZoomFactor(INIT_ZOOM_FACTOR); |
| 390 | } |
| 391 | }; |
| 392 | |
| 393 | const fitZoomFactor = React.useCallback((svgWidth)=>{ |
| 394 | /* |