@open-file-viewer/core 0.1.7 → 0.1.8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/style.css CHANGED
@@ -38,7 +38,32 @@
38
38
  box-sizing: border-box;
39
39
  }
40
40
 
41
- .ofv-root [hidden] {
41
+ .ofv-root [hidden],
42
+ .ofv-root .ofv-pdf-summary[aria-hidden="true"],
43
+ .ofv-root .ofv-sheet-summary[aria-hidden="true"],
44
+ .ofv-root .ofv-presentation-summary[aria-hidden="true"],
45
+ .ofv-root .ofv-media-info[aria-hidden="true"],
46
+ .ofv-root .ofv-image-info[aria-hidden="true"],
47
+ .ofv-root .ofv-drawing-summary[aria-hidden="true"],
48
+ .ofv-root .ofv-cad-summary[aria-hidden="true"],
49
+ .ofv-root .ofv-asset-summary[aria-hidden="true"],
50
+ .ofv-root .ofv-asset-download[aria-hidden="true"],
51
+ .ofv-root .ofv-gis-summary[aria-hidden="true"],
52
+ .ofv-root .ofv-archive-summary[aria-hidden="true"],
53
+ .ofv-root .ofv-archive-info[aria-hidden="true"],
54
+ .ofv-root .ofv-archive-probe-meta[aria-hidden="true"],
55
+ .ofv-root .ofv-epub-meta[aria-hidden="true"],
56
+ .ofv-root .ofv-xps-summary[aria-hidden="true"],
57
+ .ofv-root .ofv-sqlite-summary[aria-hidden="true"],
58
+ .ofv-root .ofv-wasm-summary[aria-hidden="true"],
59
+ .ofv-root .ofv-data-summary[aria-hidden="true"],
60
+ .ofv-root .ofv-data-note[aria-hidden="true"],
61
+ .ofv-root .ofv-font-status[aria-hidden="true"],
62
+ .ofv-root .ofv-font-info[aria-hidden="true"],
63
+ .ofv-root .ofv-model-measure[aria-hidden="true"],
64
+ .ofv-root .ofv-model-materials[aria-hidden="true"],
65
+ .ofv-root .ofv-details[aria-hidden="true"],
66
+ .ofv-root .ofv-table-scroll[aria-hidden="true"] {
42
67
  display: none !important;
43
68
  }
44
69
 
@@ -279,7 +304,7 @@
279
304
  flex: 1 1 auto;
280
305
  align-items: center;
281
306
  justify-content: center;
282
- min-height: 0;
307
+ min-height: min(320px, 55vh);
283
308
  min-width: 0;
284
309
  overflow: hidden;
285
310
  cursor: grab;
@@ -291,6 +316,10 @@
291
316
  }
292
317
 
293
318
  .ofv-image-content {
319
+ width: auto;
320
+ height: auto;
321
+ max-width: 100%;
322
+ max-height: 100%;
294
323
  transform-origin: center;
295
324
  transition: transform 120ms ease;
296
325
  will-change: transform;
@@ -461,6 +490,9 @@
461
490
  justify-content: center;
462
491
  min-width: 0;
463
492
  min-height: 0;
493
+ max-width: 100%;
494
+ max-height: 100%;
495
+ overflow: hidden;
464
496
  position: relative;
465
497
  }
466
498
 
@@ -568,8 +600,15 @@
568
600
  overflow-wrap: anywhere;
569
601
  }
570
602
 
603
+ .ofv-office {
604
+ --ofv-office-zoom: 1;
605
+ min-width: 0;
606
+ max-width: 100%;
607
+ }
608
+
571
609
  .ofv-document {
572
610
  overflow-wrap: anywhere;
611
+ font-size: calc(14px * var(--ofv-office-zoom, 1));
573
612
  line-height: 1.7;
574
613
  }
575
614
 
@@ -660,14 +699,14 @@
660
699
  min-width: 0;
661
700
  padding: 24px;
662
701
  overflow: hidden;
663
- background: #e5e7eb;
702
+ background: transparent;
664
703
  --ofv-docx-scale: 1;
665
704
  --ofv-docx-page-width: 794px;
666
705
  }
667
706
 
668
707
  .ofv-docx-page-frame {
669
708
  flex: 0 0 auto;
670
- width: min(100%, calc(var(--ofv-docx-page-width) * var(--ofv-docx-scale)));
709
+ width: min(100%, calc(var(--ofv-docx-page-width) * var(--ofv-docx-scale) * var(--ofv-office-zoom, 1)));
671
710
  max-width: 100%;
672
711
  min-width: 0;
673
712
  position: relative;
@@ -679,13 +718,20 @@
679
718
  flex: 0 0 auto;
680
719
  max-width: none;
681
720
  min-width: auto;
721
+ background: #fff;
682
722
  color: #111827;
683
723
  overflow: visible;
684
724
  overflow-wrap: normal;
685
- transform: scale(var(--ofv-docx-scale));
725
+ transform: scale(calc(var(--ofv-docx-scale) * var(--ofv-office-zoom, 1)));
686
726
  transform-origin: top left;
687
727
  }
688
728
 
729
+ .ofv-docx-document section.ofv-docx > section,
730
+ .ofv-docx-document section.ofv-docx .docx,
731
+ .ofv-docx-document section.ofv-docx .docx-wrapper {
732
+ background: #fff;
733
+ }
734
+
689
735
  .ofv-docx-document section.ofv-docx img,
690
736
  .ofv-docx-document section.ofv-docx svg,
691
737
  .ofv-docx-document section.ofv-docx canvas,
@@ -709,6 +755,328 @@
709
755
  font-size: 13px;
710
756
  }
711
757
 
758
+ .ofv-docx-textbox-layout {
759
+ display: grid;
760
+ grid-template-columns: minmax(180px, 0.34fr) minmax(0, 1fr);
761
+ gap: 22px;
762
+ width: min(100%, 920px);
763
+ margin: 0 auto;
764
+ padding: 38px;
765
+ border: 1px solid var(--ofv-border);
766
+ background: #fff;
767
+ color: #111827;
768
+ box-shadow: 0 10px 32px rgb(15 23 42 / 10%);
769
+ }
770
+
771
+ .ofv-docx-textbox-page {
772
+ position: relative;
773
+ width: min(100%, var(--ofv-docx-textbox-page-width, 595pt));
774
+ margin: 0 auto;
775
+ overflow: hidden;
776
+ border: 1px solid var(--ofv-border);
777
+ background: #fff;
778
+ color: #111827;
779
+ box-shadow: 0 10px 32px rgb(15 23 42 / 10%);
780
+ }
781
+
782
+ .ofv-docx-textbox-page-has-sidebar::before {
783
+ position: absolute;
784
+ z-index: 0;
785
+ top: 0;
786
+ bottom: 0;
787
+ left: 0;
788
+ width: var(--ofv-docx-textbox-sidebar-width, 180pt);
789
+ background: var(--ofv-docx-textbox-sidebar-bg, #1f1c34);
790
+ content: "";
791
+ }
792
+
793
+ .ofv-docx-textbox-page-flow-layout {
794
+ display: grid;
795
+ grid-template-columns: var(--ofv-docx-textbox-sidebar-width, 180pt) minmax(0, 1fr);
796
+ min-height: 842pt;
797
+ overflow: hidden;
798
+ }
799
+
800
+ .ofv-docx-textbox-page-flow-layout::before {
801
+ position: absolute;
802
+ z-index: 0;
803
+ top: 0;
804
+ bottom: 0;
805
+ left: 0;
806
+ width: var(--ofv-docx-textbox-sidebar-width, 180pt);
807
+ background: var(--ofv-docx-textbox-sidebar-bg, #1f1c34);
808
+ content: "";
809
+ }
810
+
811
+ .ofv-docx-textbox-page-flow-sidebar,
812
+ .ofv-docx-textbox-page-flow-main {
813
+ position: relative;
814
+ z-index: 1;
815
+ box-sizing: border-box;
816
+ min-width: 0;
817
+ }
818
+
819
+ .ofv-docx-textbox-page-flow-sidebar {
820
+ display: flex;
821
+ flex-direction: column;
822
+ justify-content: space-between;
823
+ gap: 16pt;
824
+ padding: 36pt 22pt 32pt;
825
+ color: #fff;
826
+ }
827
+
828
+ .ofv-docx-textbox-page-flow-main {
829
+ display: flex;
830
+ flex-direction: column;
831
+ justify-content: space-between;
832
+ gap: 18pt;
833
+ padding: 36pt 36pt 38pt 26pt;
834
+ background: #fff;
835
+ color: #111827;
836
+ }
837
+
838
+ .ofv-docx-textbox-page-flow-layout .ofv-docx-textbox-block-filled {
839
+ background: transparent;
840
+ color: inherit;
841
+ }
842
+
843
+ .ofv-docx-textbox-page-flow-layout .ofv-docx-textbox-block h3 {
844
+ margin-bottom: 8pt;
845
+ }
846
+
847
+ .ofv-docx-textbox-page-flow-sidebar .ofv-docx-textbox-block h3 {
848
+ color: #fff;
849
+ font-size: 16.5px;
850
+ line-height: 1.3;
851
+ }
852
+
853
+ .ofv-docx-textbox-page-flow-sidebar .ofv-docx-textbox-block p {
854
+ color: #fff;
855
+ font-size: 12.5px;
856
+ line-height: 1.58;
857
+ }
858
+
859
+ .ofv-docx-textbox-page-flow-sidebar .ofv-docx-textbox-block + .ofv-docx-textbox-block {
860
+ padding-top: 18pt;
861
+ border-top: 1px solid rgb(255 255 255 / 65%);
862
+ }
863
+
864
+ .ofv-docx-textbox-page-flow-main .ofv-docx-textbox-block h3 {
865
+ display: inline-flex;
866
+ align-items: center;
867
+ gap: 8px;
868
+ color: #111827;
869
+ font-size: 18px;
870
+ line-height: 1.3;
871
+ }
872
+
873
+ .ofv-docx-textbox-page-flow-main .ofv-docx-textbox-block h3::before {
874
+ display: inline-block;
875
+ width: 8px;
876
+ height: 18px;
877
+ border-radius: 1px;
878
+ background: #303241;
879
+ content: "";
880
+ }
881
+
882
+ .ofv-docx-textbox-page-flow-main .ofv-docx-textbox-block p {
883
+ color: #111827;
884
+ font-size: 12.5px;
885
+ line-height: 1.72;
886
+ }
887
+
888
+ .ofv-docx-textbox-page-flow-main .ofv-docx-textbox-block p + p {
889
+ margin-top: 3px;
890
+ }
891
+
892
+ .ofv-docx-textbox-page-flow-main .ofv-docx-textbox-block + .ofv-docx-textbox-block {
893
+ padding-top: 14pt;
894
+ border-top: 1px solid #c9c9cf;
895
+ }
896
+
897
+ .ofv-docx-textbox-continuation-flow-layout .ofv-docx-textbox-page-flow-sidebar {
898
+ justify-content: flex-start;
899
+ gap: 18pt;
900
+ padding: 52pt 24pt 32pt;
901
+ }
902
+
903
+ .ofv-docx-textbox-continuation-flow-layout .ofv-docx-textbox-page-flow-main {
904
+ justify-content: space-between;
905
+ gap: 20pt;
906
+ padding-top: 52pt;
907
+ }
908
+
909
+ .ofv-docx-textbox-continuation-flow-layout .ofv-docx-textbox-page-flow-sidebar .ofv-docx-textbox-block {
910
+ max-width: 100%;
911
+ overflow-wrap: anywhere;
912
+ }
913
+
914
+ .ofv-docx-textbox-continuation-flow-layout .ofv-docx-textbox-page-flow-sidebar .ofv-docx-textbox-block h3 {
915
+ margin-bottom: 10pt;
916
+ font-size: 17px;
917
+ line-height: 1.3;
918
+ }
919
+
920
+ .ofv-docx-textbox-continuation-flow-layout .ofv-docx-textbox-page-flow-sidebar .ofv-docx-textbox-block p {
921
+ font-size: 14px;
922
+ font-weight: 700;
923
+ line-height: 1.78;
924
+ }
925
+
926
+ .ofv-docx-textbox-continuation-flow-layout .ofv-docx-textbox-page-flow-main .ofv-docx-textbox-section-heading h3,
927
+ .ofv-docx-textbox-continuation-flow-layout .ofv-docx-textbox-page-flow-main .ofv-docx-textbox-block h3 {
928
+ width: 100%;
929
+ padding-bottom: 4pt;
930
+ border-bottom: 2px solid #303241;
931
+ }
932
+
933
+ .ofv-docx-textbox-continuation-flow-layout .ofv-docx-textbox-page-flow-main .ofv-docx-textbox-block h3::before {
934
+ display: none;
935
+ }
936
+
937
+ .ofv-docx-textbox-continuation-flow-layout .ofv-docx-textbox-page-flow-main .ofv-docx-textbox-section-heading {
938
+ margin-bottom: 2pt;
939
+ }
940
+
941
+ .ofv-docx-textbox-continuation-flow-layout .ofv-docx-textbox-page-flow-main .ofv-docx-textbox-section-heading h3 {
942
+ font-size: 18px;
943
+ }
944
+
945
+ .ofv-docx-textbox-continuation-flow-layout .ofv-docx-textbox-page-flow-main .ofv-docx-textbox-block p {
946
+ font-size: 13px;
947
+ line-height: 2.05;
948
+ }
949
+
950
+ .ofv-docx-textbox-continuation-flow-layout .ofv-docx-textbox-page-flow-main .ofv-docx-textbox-block p + p {
951
+ margin-top: 5px;
952
+ }
953
+
954
+ .ofv-docx-textbox-continuation-flow-layout .ofv-docx-textbox-page-flow-main .ofv-docx-textbox-block:only-child {
955
+ min-height: 70%;
956
+ }
957
+
958
+ .ofv-docx-textbox-page-block,
959
+ .ofv-docx-textbox-page-flow {
960
+ position: absolute;
961
+ z-index: 1;
962
+ box-sizing: border-box;
963
+ }
964
+
965
+ .ofv-docx-textbox-page-block {
966
+ overflow: hidden;
967
+ }
968
+
969
+ .ofv-docx-textbox-page-title-block h3 {
970
+ margin-bottom: 8px;
971
+ font-size: 24px;
972
+ line-height: 1.15;
973
+ }
974
+
975
+ .ofv-docx-textbox-page-title-block p {
976
+ font-size: 13px;
977
+ line-height: 1.45;
978
+ }
979
+
980
+ .ofv-docx-textbox-page-filled-block {
981
+ display: flex;
982
+ flex-direction: column;
983
+ justify-content: center;
984
+ padding: 8pt 12pt;
985
+ background: var(--ofv-docx-textbox-fill, #303241);
986
+ color: #fff;
987
+ }
988
+
989
+ .ofv-docx-textbox-page-filled-block h3,
990
+ .ofv-docx-textbox-page-filled-block p {
991
+ color: inherit;
992
+ }
993
+
994
+ .ofv-docx-textbox-page-has-sidebar .ofv-docx-textbox-page-sidebar-block:not(.ofv-docx-textbox-page-filled-block),
995
+ .ofv-docx-textbox-page-has-sidebar .ofv-docx-textbox-page-sidebar-flow .ofv-docx-textbox-flow-block,
996
+ .ofv-docx-textbox-page-has-sidebar .ofv-docx-textbox-page-sidebar-flow .ofv-docx-textbox-flow-block h3,
997
+ .ofv-docx-textbox-page-has-sidebar .ofv-docx-textbox-page-sidebar-flow .ofv-docx-textbox-flow-block p {
998
+ color: #fff;
999
+ }
1000
+
1001
+ .ofv-docx-textbox-page-has-sidebar .ofv-docx-textbox-page-sidebar-flow .ofv-docx-textbox-flow-block h3 {
1002
+ border-bottom-color: rgb(255 255 255 / 65%);
1003
+ }
1004
+
1005
+ .ofv-docx-textbox-page-main-flow .ofv-docx-textbox-flow-block {
1006
+ margin-bottom: 14px;
1007
+ }
1008
+
1009
+ .ofv-docx-textbox-page-main-flow .ofv-docx-textbox-flow-block h3 {
1010
+ padding-bottom: 5px;
1011
+ border-bottom: 3px solid #303241;
1012
+ }
1013
+
1014
+ .ofv-docx-textbox-page-sidebar-flow .ofv-docx-textbox-flow-block {
1015
+ margin-bottom: 14px;
1016
+ }
1017
+
1018
+ .ofv-docx-textbox-sidebar,
1019
+ .ofv-docx-textbox-main {
1020
+ display: flex;
1021
+ min-width: 0;
1022
+ flex-direction: column;
1023
+ gap: 16px;
1024
+ }
1025
+
1026
+ .ofv-docx-textbox-block {
1027
+ min-width: 0;
1028
+ break-inside: avoid;
1029
+ }
1030
+
1031
+ .ofv-docx-textbox-sidebar-block.ofv-docx-textbox-block-filled {
1032
+ padding: 16px;
1033
+ background: var(--ofv-docx-textbox-fill, #303241);
1034
+ color: #fff;
1035
+ }
1036
+
1037
+ .ofv-docx-textbox-block h3 {
1038
+ margin: 0 0 10px;
1039
+ color: inherit;
1040
+ font-size: 18px;
1041
+ line-height: 1.35;
1042
+ font-weight: 700;
1043
+ }
1044
+
1045
+ .ofv-docx-textbox-main .ofv-docx-textbox-block h3 {
1046
+ padding-bottom: 6px;
1047
+ border-bottom: 3px solid #303241;
1048
+ }
1049
+
1050
+ .ofv-docx-textbox-main-block.ofv-docx-textbox-block-filled {
1051
+ padding: 0;
1052
+ background: transparent;
1053
+ color: #111827;
1054
+ }
1055
+
1056
+ .ofv-docx-textbox-main-block.ofv-docx-textbox-block-filled h3 {
1057
+ margin-bottom: 10px;
1058
+ padding: 10px 14px;
1059
+ border-bottom: 0;
1060
+ background: var(--ofv-docx-textbox-fill, #303241);
1061
+ color: #fff;
1062
+ }
1063
+
1064
+ .ofv-docx-textbox-main-block.ofv-docx-textbox-block-filled p {
1065
+ padding: 0 14px;
1066
+ }
1067
+
1068
+ .ofv-docx-textbox-block p {
1069
+ margin: 0 0 7px;
1070
+ color: inherit;
1071
+ font-size: 13px;
1072
+ line-height: 1.65;
1073
+ overflow-wrap: anywhere;
1074
+ }
1075
+
1076
+ .ofv-docx-textbox-block p:last-child {
1077
+ margin-bottom: 0;
1078
+ }
1079
+
712
1080
  .ofv-root.ofv-theme-dark .ofv-docx-document {
713
1081
  color-scheme: light;
714
1082
  }
@@ -757,6 +1125,10 @@
757
1125
  overflow-wrap: anywhere;
758
1126
  }
759
1127
 
1128
+ .ofv-sheet {
1129
+ font-size: calc(13px * var(--ofv-office-zoom, 1));
1130
+ }
1131
+
760
1132
  .ofv-sheet-summary {
761
1133
  margin: 0 0 10px;
762
1134
  color: var(--ofv-text-muted);
@@ -871,11 +1243,11 @@
871
1243
  border: 1px solid var(--ofv-border);
872
1244
  padding: 5px 24px 5px 8px;
873
1245
  white-space: normal;
874
- overflow: visible;
1246
+ overflow: hidden;
875
1247
  overflow-wrap: anywhere;
876
1248
  word-break: break-word;
877
1249
  text-overflow: clip;
878
- font-size: 13px;
1250
+ font-size: inherit;
879
1251
  line-height: 1.45;
880
1252
  vertical-align: middle;
881
1253
  }
@@ -899,7 +1271,7 @@
899
1271
  .ofv-column-resize-handle {
900
1272
  position: absolute;
901
1273
  top: 0;
902
- right: -3px;
1274
+ right: 0;
903
1275
  z-index: 2;
904
1276
  width: 7px;
905
1277
  height: 100%;
@@ -1033,7 +1405,9 @@
1033
1405
  }
1034
1406
 
1035
1407
  .ofv-epub-content {
1036
- font: 16px/1.75 Georgia, "Times New Roman", serif;
1408
+ font-family: Georgia, "Times New Roman", serif;
1409
+ font-size: calc(16px * var(--ofv-epub-zoom, 1));
1410
+ line-height: 1.75;
1037
1411
  }
1038
1412
 
1039
1413
  .ofv-epub-content p {
@@ -1097,6 +1471,19 @@
1097
1471
  font: 12px/1.4 ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace;
1098
1472
  }
1099
1473
 
1474
+ .ofv-xps-canvas {
1475
+ display: block;
1476
+ width: 100%;
1477
+ max-width: 100%;
1478
+ height: auto;
1479
+ max-height: 68vh;
1480
+ margin: 12px 0 16px;
1481
+ border: 1px solid var(--ofv-border);
1482
+ border-radius: 4px;
1483
+ background: #fff;
1484
+ color-scheme: light;
1485
+ }
1486
+
1100
1487
  .ofv-xps-text p {
1101
1488
  margin: 0 0 8px;
1102
1489
  line-height: 1.7;
@@ -1109,6 +1496,7 @@
1109
1496
  border: 1px solid var(--ofv-border);
1110
1497
  border-radius: 8px;
1111
1498
  background: var(--ofv-surface);
1499
+ font-size: calc(14px * var(--ofv-office-zoom, 1));
1112
1500
  overflow-wrap: anywhere;
1113
1501
  }
1114
1502
 
@@ -1225,7 +1613,9 @@
1225
1613
  color: #e5e7eb;
1226
1614
  white-space: pre-wrap;
1227
1615
  word-break: break-word;
1228
- font: 13px/1.6 ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace;
1616
+ font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace;
1617
+ font-size: calc(13px * var(--ofv-email-zoom, var(--ofv-office-zoom, 1)));
1618
+ line-height: 1.6;
1229
1619
  }
1230
1620
 
1231
1621
  .ofv-font-preview {
@@ -1392,17 +1782,20 @@
1392
1782
  gap: 8px 16px;
1393
1783
  }
1394
1784
 
1395
- .ofv-sqlite-schema {
1785
+ .ofv-sqlite-schema,
1786
+ .ofv-sqlite-data {
1396
1787
  max-width: 100%;
1397
1788
  overflow: auto;
1398
1789
  }
1399
1790
 
1400
- .ofv-sqlite-schema strong {
1791
+ .ofv-sqlite-schema strong,
1792
+ .ofv-sqlite-data > strong {
1401
1793
  display: block;
1402
1794
  margin: 0 0 8px;
1403
1795
  }
1404
1796
 
1405
- .ofv-sqlite-schema table {
1797
+ .ofv-sqlite-schema table,
1798
+ .ofv-sqlite-data-table table {
1406
1799
  width: 100%;
1407
1800
  min-width: 720px;
1408
1801
  border-collapse: collapse;
@@ -1410,14 +1803,17 @@
1410
1803
  }
1411
1804
 
1412
1805
  .ofv-sqlite-schema th,
1413
- .ofv-sqlite-schema td {
1806
+ .ofv-sqlite-schema td,
1807
+ .ofv-sqlite-data-table th,
1808
+ .ofv-sqlite-data-table td {
1414
1809
  padding: 8px;
1415
1810
  border-bottom: 1px solid var(--ofv-border);
1416
1811
  text-align: left;
1417
1812
  vertical-align: top;
1418
1813
  }
1419
1814
 
1420
- .ofv-sqlite-schema th {
1815
+ .ofv-sqlite-schema th,
1816
+ .ofv-sqlite-data-table th {
1421
1817
  color: var(--ofv-text-muted);
1422
1818
  font-weight: 600;
1423
1819
  }
@@ -1428,6 +1824,21 @@
1428
1824
  font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace;
1429
1825
  }
1430
1826
 
1827
+ .ofv-sqlite-table-sample {
1828
+ min-width: 0;
1829
+ margin-top: 10px;
1830
+ }
1831
+
1832
+ .ofv-sqlite-data-table {
1833
+ max-width: 100%;
1834
+ overflow: auto;
1835
+ }
1836
+
1837
+ .ofv-sqlite-data-table td {
1838
+ max-width: 280px;
1839
+ overflow-wrap: anywhere;
1840
+ }
1841
+
1431
1842
  .ofv-sqlite-error,
1432
1843
  .ofv-sqlite-empty {
1433
1844
  color: var(--ofv-text-muted);
@@ -1450,19 +1861,60 @@
1450
1861
  color: var(--ofv-text-muted);
1451
1862
  }
1452
1863
 
1864
+ .ofv-ai-pdf-preview {
1865
+ display: grid;
1866
+ gap: 8px;
1867
+ min-width: 0;
1868
+ }
1869
+
1870
+ .ofv-asset:has(.ofv-ai-pdf-preview .ofv-pdf-page-wrapper) > .ofv-section > h3,
1871
+ .ofv-asset:has(.ofv-ai-pdf-preview .ofv-pdf-page-wrapper) .ofv-asset-summary,
1872
+ .ofv-asset:has(.ofv-ai-pdf-preview .ofv-pdf-page-wrapper) .ofv-asset-download,
1873
+ .ofv-asset:has(.ofv-ai-pdf-preview .ofv-pdf-page-wrapper) .ofv-asset-hex,
1874
+ .ofv-asset:has(.ofv-ai-pdf-preview .ofv-pdf-page-wrapper) .ofv-data-preview {
1875
+ display: none !important;
1876
+ }
1877
+
1878
+ .ofv-ai-pdf-preview .ofv-pdf-viewer {
1879
+ min-height: min(720px, 68vh);
1880
+ border: 1px solid var(--ofv-border);
1881
+ border-radius: 6px;
1882
+ background: var(--ofv-surface-muted);
1883
+ overflow: hidden;
1884
+ }
1885
+
1453
1886
  .ofv-data-kv,
1454
- .ofv-avro-schema {
1887
+ .ofv-avro-schema,
1888
+ .ofv-avro-records,
1889
+ .ofv-parquet-schema {
1890
+ max-width: 100%;
1891
+ overflow: auto;
1892
+ }
1893
+
1894
+ .ofv-parquet-records {
1895
+ max-width: 100%;
1896
+ overflow: auto;
1897
+ }
1898
+
1899
+ .ofv-parquet-schema,
1900
+ .ofv-parquet-records {
1455
1901
  max-width: 100%;
1456
1902
  overflow: auto;
1457
1903
  }
1458
1904
 
1459
1905
  .ofv-data-kv strong,
1460
- .ofv-avro-schema > strong {
1906
+ .ofv-avro-schema > strong,
1907
+ .ofv-avro-records > strong,
1908
+ .ofv-parquet-schema > strong,
1909
+ .ofv-parquet-records > strong {
1461
1910
  display: block;
1462
1911
  margin: 0 0 8px;
1463
1912
  }
1464
1913
 
1465
- .ofv-data-kv table {
1914
+ .ofv-data-kv table,
1915
+ .ofv-avro-records table,
1916
+ .ofv-parquet-schema table,
1917
+ .ofv-parquet-records table {
1466
1918
  width: 100%;
1467
1919
  min-width: 640px;
1468
1920
  border-collapse: collapse;
@@ -1470,20 +1922,30 @@
1470
1922
  }
1471
1923
 
1472
1924
  .ofv-data-kv th,
1473
- .ofv-data-kv td {
1925
+ .ofv-data-kv td,
1926
+ .ofv-avro-records th,
1927
+ .ofv-avro-records td,
1928
+ .ofv-parquet-schema th,
1929
+ .ofv-parquet-schema td,
1930
+ .ofv-parquet-records th,
1931
+ .ofv-parquet-records td {
1474
1932
  padding: 8px;
1475
1933
  border-bottom: 1px solid var(--ofv-border);
1476
1934
  text-align: left;
1477
1935
  vertical-align: top;
1478
1936
  }
1479
1937
 
1480
- .ofv-data-kv th {
1938
+ .ofv-data-kv th,
1939
+ .ofv-avro-records th {
1481
1940
  width: 180px;
1482
1941
  color: var(--ofv-text-muted);
1483
1942
  font-weight: 600;
1484
1943
  }
1485
1944
 
1486
- .ofv-data-kv td {
1945
+ .ofv-data-kv td,
1946
+ .ofv-avro-records td,
1947
+ .ofv-parquet-schema td,
1948
+ .ofv-parquet-records td {
1487
1949
  overflow-wrap: anywhere;
1488
1950
  font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace;
1489
1951
  }
@@ -2645,6 +3107,7 @@
2645
3107
 
2646
3108
  /* Code container styling */
2647
3109
  .ofv-code-container {
3110
+ --ofv-text-zoom: 1;
2648
3111
  display: flex;
2649
3112
  flex-direction: column;
2650
3113
  width: 100%;
@@ -2812,7 +3275,7 @@
2812
3275
  box-shadow: 8px 0 14px -14px rgba(15, 23, 42, 0.65);
2813
3276
  color: var(--ofv-text-muted);
2814
3277
  font-family: var(--ofv-font-mono, ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace);
2815
- font-size: 13px;
3278
+ font-size: calc(13px * var(--ofv-text-zoom, 1));
2816
3279
  line-height: 1.6;
2817
3280
  text-align: right;
2818
3281
  user-select: none;
@@ -2827,7 +3290,7 @@
2827
3290
  min-width: max-content;
2828
3291
  background: transparent !important;
2829
3292
  font-family: var(--ofv-font-mono, ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace);
2830
- font-size: 13px;
3293
+ font-size: calc(13px * var(--ofv-text-zoom, 1));
2831
3294
  line-height: 1.6;
2832
3295
  }
2833
3296
 
@@ -2874,6 +3337,7 @@
2874
3337
 
2875
3338
  /* Markdown container styling */
2876
3339
  .ofv-markdown-body {
3340
+ --ofv-markdown-zoom: 1;
2877
3341
  width: 100%;
2878
3342
  max-width: 100%;
2879
3343
  height: 100%;
@@ -2884,7 +3348,7 @@
2884
3348
  background: var(--ofv-surface);
2885
3349
  color: var(--ofv-text);
2886
3350
  font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji";
2887
- font-size: 15px;
3351
+ font-size: calc(15px * var(--ofv-markdown-zoom, 1));
2888
3352
  line-height: 1.65;
2889
3353
  word-wrap: break-word;
2890
3354
  }
@@ -3041,6 +3505,7 @@
3041
3505
  display: flex;
3042
3506
  align-items: center;
3043
3507
  justify-content: center;
3508
+ overflow: hidden;
3044
3509
  box-sizing: border-box;
3045
3510
  }
3046
3511
 
@@ -3071,6 +3536,36 @@
3071
3536
  color: #ef4444;
3072
3537
  font-weight: 500;
3073
3538
  font-size: 14px;
3539
+ width: 100%;
3540
+ height: 100%;
3541
+ min-height: 160px;
3542
+ display: flex;
3543
+ align-items: center;
3544
+ justify-content: center;
3545
+ padding: 24px;
3546
+ text-align: center;
3547
+ line-height: 1.6;
3548
+ background: color-mix(in srgb, #ef4444 8%, var(--ofv-surface));
3549
+ box-sizing: border-box;
3550
+ }
3551
+
3552
+ .ofv-pdf-empty {
3553
+ position: absolute;
3554
+ inset: 16px;
3555
+ z-index: 2;
3556
+ display: flex;
3557
+ align-items: center;
3558
+ justify-content: center;
3559
+ padding: 18px;
3560
+ border: 1px solid color-mix(in srgb, #f59e0b 34%, var(--ofv-border));
3561
+ border-radius: 8px;
3562
+ background: color-mix(in srgb, #fef3c7 86%, transparent);
3563
+ color: #92400e;
3564
+ font-size: 13px;
3565
+ font-weight: 600;
3566
+ line-height: 1.6;
3567
+ text-align: center;
3568
+ box-sizing: border-box;
3074
3569
  }
3075
3570
 
3076
3571
  /* PDF Text Layer styling */