@@ -281,10 +281,7 @@ async function createCFG(params: Params): Promise<CFG> {
281
281
}
282
282
}
283
283
284
- let functionAndCFGMetadata: FunctionAndCFGMetadata = {
285
- functionData: { name: " " , lineCount: 0 , language: undefined },
286
- cfgGraphData: { nodeCount: 0 , edgeCount: 0 , cyclomaticComplexity: 0 },
287
- };
284
+ let functionAndCFGMetadata: FunctionAndCFGMetadata | undefined ;
288
285
289
286
function updateMetadata(func : SyntaxNode , language : Language , CFG : CFG ) {
290
287
// Update function metadata
@@ -391,7 +388,7 @@ onMount(() => {
391
388
>Open Code</button >
392
389
<button onclick ={saveSVG }>Download SVG</button >
393
390
</div >
394
- {#if rawSVG }
391
+ {#if functionAndCFGMetadata }
395
392
<!-- Metadata display -->
396
393
{#if Object .values (showMetadata ).some (value => value )}
397
394
<div class ="metadata" class:panel-open ={isPanelOpen }>
@@ -432,120 +429,114 @@ onMount(() => {
432
429
.controlsContainer {
433
430
position : fixed ;
434
431
display : flex ;
435
- justify-content : right ;
432
+ justify-content : flex-end ;
436
433
width : 100% ;
437
- z-index : 1000 ;
434
+ top : 0 ;
435
+ right : 0 ;
436
+ z-index : 1002 ;
438
437
}
439
438
440
439
.controls {
441
440
margin : 1em ;
442
441
}
443
-
442
+
444
443
.metadata {
445
- margin : 0 ;
446
- padding : 1em ;
447
444
position : fixed ;
448
- top : 5% ;
449
- right : 300px ;
445
+ top : 4em ;
446
+ right : 18.5em ;
447
+ padding : 1em ;
448
+ background-color : var (--metadata-bg );
450
449
transition : right 0.2s ease ;
451
- text-align : left ;
452
- background-color : var (--metadata-bg , rgba (30 , 30 , 30 , 0.7 ));
453
- max-width : 500px ;
454
450
}
455
-
451
+
456
452
.metadata :not (.panel-open ) {
457
- right : 25 px ;
453
+ right : 2.5 em ;
458
454
}
459
-
455
+
460
456
.metadata span {
461
457
display : block ;
462
- margin-top : 0.5em ;
463
- margin-bottom : 0.5em ;
458
+ margin : 0.5em ;
464
459
white-space : nowrap ;
465
460
overflow : hidden ;
466
- text-overflow : ellipsis ;
467
- color : var (--text-color , gray );
468
- font-size : 16 px ;
461
+ text-overflow : ellipsis ;
462
+ color : var (--text-color );
463
+ font-size : 1 em ;
469
464
}
470
-
465
+
471
466
.panel-toggle {
472
467
position : fixed ;
473
- top : 5% ;
474
- right : 0 ;
475
- z-index : 1 ; /* IMPORTANT */
476
- width : 25px ;
477
- height : 60px ;
468
+ top : 4em ;
469
+ z-index : 1001 ;
470
+ width : 2em ;
471
+ height : 4em ;
478
472
background-color : var (--toggle-bg );
479
- color : var (--toggle-color , white );
473
+ color : var (--toggle-color );
480
474
border : none ;
481
- cursor : pointer ;
482
- font-size : 16px ;
475
+ font-size : 1em ;
483
476
}
484
-
477
+
478
+ .panel-toggle :hover {
479
+ cursor : pointer ;
480
+ }
481
+
485
482
.control-panel {
486
483
position : fixed ;
487
- font-size : 1em ;
488
- top : 5% ;
489
- right : -20em ;
490
- width : 18em ;
491
- height : 36% ;
492
- background-color : var (--panel-bg , rgba (30 , 30 , 30 , 0.7 ));
493
- color : var (--panel-text , white );
494
- transition : right 0.2s ease ;
495
- padding : 1.25em ;
484
+ top : 4em ;
485
+ right : -20em ;
486
+ width : 18em ;
487
+ padding : 1.25em ;
488
+ background-color : var (--panel-bg );
489
+ color : var (--panel-text );
496
490
box-sizing : border-box ;
497
- box-shadow : -2px 0 10px rgba (0 , 0 , 0 , 0.3 );
491
+ font-size : 1em ;
492
+ transition : right 0.2s ease ;
498
493
}
499
-
494
+
500
495
.control-panel.open {
501
496
right : 0 ;
502
497
}
503
498
504
499
.control-panel h3 {
505
- margin-top : 0px ;
506
- margin-bottom : 20px ;
500
+ margin : 0 0 1.25em ;
507
501
font-size : 1.5em ;
508
- color : var (--panel-heading , #fff );
502
+ color : var (--panel-heading );
509
503
}
510
-
504
+
511
505
.control-panel label {
512
- display : block ;
513
- margin-bottom : 15px ;
506
+ display : flex ;
507
+ align-items : center ;
508
+ gap : 0.5em ;
509
+ margin-bottom : 1em ;
514
510
cursor : pointer ;
515
- user-select : none ;
516
- }
517
-
518
- .control-panel input [type = " checkbox" ] {
519
- margin-right : 10px ;
520
511
}
521
-
512
+
522
513
.svgContainer {
523
514
display : flex ;
524
515
flex-direction : column ;
525
516
align-items : center ;
526
517
justify-content : center ;
527
- width : 100 dvw;
528
- height : 100 dvh;
518
+ width : 100% ;
519
+ height : 100vh ;
520
+ overflow : hidden ;
529
521
}
530
-
522
+
531
523
:global(body ), :global(body [data-theme = " dark" ]) {
532
524
--text-color : white ;
533
525
--panel-bg : rgba (30 , 30 , 30 , 0.7 );
534
- --panel-text : #fff ;
535
- --panel-heading : #fff ;
526
+ --panel-text : white ;
527
+ --panel-heading : white ;
536
528
--toggle-bg : #555 ;
537
- --toggle-color : #fff ;
538
- --metadata-bg : rgba (30 , 30 , 30 , 0.7 );
529
+ --toggle-color : white ;
530
+ --metadata-bg : rgba (30 , 30 , 30 , 0.7 );
539
531
}
540
-
532
+
541
533
:global(body [data-theme = " light" ]) {
542
- --text-color : #000000 ;
534
+ --text-color : black ;
543
535
--panel-bg : rgba (240 , 240 , 240 , 0.9 );
544
- --panel-text : #000000 ;
545
- --panel-heading : #000000 ;
546
- --toggle-bg : rgb ( 170 , 169 , 169 ) ;
547
- --toggle-color : #000000 ;
536
+ --panel-text : black ;
537
+ --panel-heading : black ;
538
+ --toggle-bg : #aaa ;
539
+ --toggle-color : black ;
548
540
--metadata-bg : rgba (240 , 240 , 240 , 0.9 );
549
541
}
550
- </style >
551
-
542
+ </style >
0 commit comments