@open-file-viewer/core 0.1.6 → 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);
@@ -862,43 +1234,65 @@
862
1234
  .ofv-table-scroll table {
863
1235
  border-collapse: collapse;
864
1236
  min-width: 100%;
1237
+ table-layout: fixed;
865
1238
  }
866
1239
 
867
1240
  .ofv-table-scroll td,
868
1241
  .ofv-table-scroll th {
869
- max-width: min(420px, 80vw);
1242
+ position: relative;
870
1243
  border: 1px solid var(--ofv-border);
871
- padding: 6px 8px;
872
- white-space: nowrap;
1244
+ padding: 5px 24px 5px 8px;
1245
+ white-space: normal;
873
1246
  overflow: hidden;
874
- text-overflow: ellipsis;
875
- font-size: 13px;
1247
+ overflow-wrap: anywhere;
1248
+ word-break: break-word;
1249
+ text-overflow: clip;
1250
+ font-size: inherit;
1251
+ line-height: 1.45;
1252
+ vertical-align: middle;
876
1253
  }
877
1254
 
878
- .ofv-table-scroll tr:first-child > th,
879
- .ofv-table-scroll tr:first-child > td {
880
- position: sticky;
881
- z-index: 2;
882
- top: 0;
883
- background: var(--ofv-surface-muted);
1255
+ .ofv-cell-formula {
1256
+ background-image: linear-gradient(135deg, #f59e0b 0 8px, transparent 8px);
1257
+ background-repeat: no-repeat;
884
1258
  }
885
1259
 
886
- .ofv-table-scroll tr > th:first-child,
887
- .ofv-table-scroll tr > td:first-child {
888
- position: sticky;
889
- z-index: 1;
890
- left: 0;
891
- background: var(--ofv-surface-muted);
1260
+ .ofv-cell-merged {
1261
+ white-space: normal;
892
1262
  }
893
1263
 
894
- .ofv-table-scroll tr:first-child > th:first-child,
895
- .ofv-table-scroll tr:first-child > td:first-child {
896
- z-index: 3;
1264
+ .ofv-cell-multiline {
1265
+ white-space: pre-wrap;
1266
+ word-break: break-word;
1267
+ overflow: visible;
1268
+ text-overflow: clip;
897
1269
  }
898
1270
 
899
- .ofv-cell-formula {
900
- background-image: linear-gradient(135deg, #f59e0b 0 8px, transparent 8px);
901
- background-repeat: no-repeat;
1271
+ .ofv-column-resize-handle {
1272
+ position: absolute;
1273
+ top: 0;
1274
+ right: 0;
1275
+ z-index: 2;
1276
+ width: 7px;
1277
+ height: 100%;
1278
+ cursor: col-resize;
1279
+ touch-action: none;
1280
+ }
1281
+
1282
+ .ofv-column-resize-handle::after {
1283
+ position: absolute;
1284
+ top: 4px;
1285
+ bottom: 4px;
1286
+ left: 3px;
1287
+ width: 1px;
1288
+ border-radius: 999px;
1289
+ background: transparent;
1290
+ content: "";
1291
+ }
1292
+
1293
+ .ofv-column-resize-handle:hover::after,
1294
+ .ofv-column-resize-handle:active::after {
1295
+ background: #2563eb;
902
1296
  }
903
1297
 
904
1298
  .ofv-formula-list ul {
@@ -1011,7 +1405,9 @@
1011
1405
  }
1012
1406
 
1013
1407
  .ofv-epub-content {
1014
- 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;
1015
1411
  }
1016
1412
 
1017
1413
  .ofv-epub-content p {
@@ -1075,6 +1471,19 @@
1075
1471
  font: 12px/1.4 ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace;
1076
1472
  }
1077
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
+
1078
1487
  .ofv-xps-text p {
1079
1488
  margin: 0 0 8px;
1080
1489
  line-height: 1.7;
@@ -1087,6 +1496,7 @@
1087
1496
  border: 1px solid var(--ofv-border);
1088
1497
  border-radius: 8px;
1089
1498
  background: var(--ofv-surface);
1499
+ font-size: calc(14px * var(--ofv-office-zoom, 1));
1090
1500
  overflow-wrap: anywhere;
1091
1501
  }
1092
1502
 
@@ -1203,7 +1613,9 @@
1203
1613
  color: #e5e7eb;
1204
1614
  white-space: pre-wrap;
1205
1615
  word-break: break-word;
1206
- 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;
1207
1619
  }
1208
1620
 
1209
1621
  .ofv-font-preview {
@@ -1322,18 +1734,40 @@
1322
1734
 
1323
1735
  .ofv-psd-preview {
1324
1736
  display: grid;
1325
- gap: 12px;
1326
- margin: 14px 0;
1737
+ min-width: 0;
1327
1738
  }
1328
1739
 
1329
- .ofv-psd-summary {
1740
+ .ofv-psd-error {
1741
+ color: #b91c1c;
1742
+ }
1743
+
1744
+ .ofv-psd-composite {
1330
1745
  display: grid;
1331
- grid-template-columns: repeat(auto-fit, minmax(150px, 1fr));
1332
- gap: 8px 16px;
1746
+ min-width: 0;
1333
1747
  }
1334
1748
 
1335
- .ofv-psd-error {
1336
- color: #b91c1c;
1749
+ .ofv-psd-canvas {
1750
+ display: block;
1751
+ width: auto;
1752
+ max-width: 100%;
1753
+ height: auto;
1754
+ max-height: min(72vh, 920px);
1755
+ margin: 0 auto;
1756
+ border: 1px solid var(--ofv-border);
1757
+ border-radius: 10px;
1758
+ background:
1759
+ linear-gradient(45deg, #e5e7eb 25%, transparent 25%),
1760
+ linear-gradient(-45deg, #e5e7eb 25%, transparent 25%),
1761
+ linear-gradient(45deg, transparent 75%, #e5e7eb 75%),
1762
+ linear-gradient(-45deg, transparent 75%, #e5e7eb 75%);
1763
+ background-color: #f8fafc;
1764
+ background-position:
1765
+ 0 0,
1766
+ 0 8px,
1767
+ 8px -8px,
1768
+ -8px 0;
1769
+ background-size: 16px 16px;
1770
+ object-fit: contain;
1337
1771
  }
1338
1772
 
1339
1773
  .ofv-sqlite-preview {
@@ -1348,17 +1782,20 @@
1348
1782
  gap: 8px 16px;
1349
1783
  }
1350
1784
 
1351
- .ofv-sqlite-schema {
1785
+ .ofv-sqlite-schema,
1786
+ .ofv-sqlite-data {
1352
1787
  max-width: 100%;
1353
1788
  overflow: auto;
1354
1789
  }
1355
1790
 
1356
- .ofv-sqlite-schema strong {
1791
+ .ofv-sqlite-schema strong,
1792
+ .ofv-sqlite-data > strong {
1357
1793
  display: block;
1358
1794
  margin: 0 0 8px;
1359
1795
  }
1360
1796
 
1361
- .ofv-sqlite-schema table {
1797
+ .ofv-sqlite-schema table,
1798
+ .ofv-sqlite-data-table table {
1362
1799
  width: 100%;
1363
1800
  min-width: 720px;
1364
1801
  border-collapse: collapse;
@@ -1366,14 +1803,17 @@
1366
1803
  }
1367
1804
 
1368
1805
  .ofv-sqlite-schema th,
1369
- .ofv-sqlite-schema td {
1806
+ .ofv-sqlite-schema td,
1807
+ .ofv-sqlite-data-table th,
1808
+ .ofv-sqlite-data-table td {
1370
1809
  padding: 8px;
1371
1810
  border-bottom: 1px solid var(--ofv-border);
1372
1811
  text-align: left;
1373
1812
  vertical-align: top;
1374
1813
  }
1375
1814
 
1376
- .ofv-sqlite-schema th {
1815
+ .ofv-sqlite-schema th,
1816
+ .ofv-sqlite-data-table th {
1377
1817
  color: var(--ofv-text-muted);
1378
1818
  font-weight: 600;
1379
1819
  }
@@ -1384,6 +1824,21 @@
1384
1824
  font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace;
1385
1825
  }
1386
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
+
1387
1842
  .ofv-sqlite-error,
1388
1843
  .ofv-sqlite-empty {
1389
1844
  color: var(--ofv-text-muted);
@@ -1406,19 +1861,60 @@
1406
1861
  color: var(--ofv-text-muted);
1407
1862
  }
1408
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
+
1409
1886
  .ofv-data-kv,
1410
- .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 {
1411
1901
  max-width: 100%;
1412
1902
  overflow: auto;
1413
1903
  }
1414
1904
 
1415
1905
  .ofv-data-kv strong,
1416
- .ofv-avro-schema > strong {
1906
+ .ofv-avro-schema > strong,
1907
+ .ofv-avro-records > strong,
1908
+ .ofv-parquet-schema > strong,
1909
+ .ofv-parquet-records > strong {
1417
1910
  display: block;
1418
1911
  margin: 0 0 8px;
1419
1912
  }
1420
1913
 
1421
- .ofv-data-kv table {
1914
+ .ofv-data-kv table,
1915
+ .ofv-avro-records table,
1916
+ .ofv-parquet-schema table,
1917
+ .ofv-parquet-records table {
1422
1918
  width: 100%;
1423
1919
  min-width: 640px;
1424
1920
  border-collapse: collapse;
@@ -1426,20 +1922,30 @@
1426
1922
  }
1427
1923
 
1428
1924
  .ofv-data-kv th,
1429
- .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 {
1430
1932
  padding: 8px;
1431
1933
  border-bottom: 1px solid var(--ofv-border);
1432
1934
  text-align: left;
1433
1935
  vertical-align: top;
1434
1936
  }
1435
1937
 
1436
- .ofv-data-kv th {
1938
+ .ofv-data-kv th,
1939
+ .ofv-avro-records th {
1437
1940
  width: 180px;
1438
1941
  color: var(--ofv-text-muted);
1439
1942
  font-weight: 600;
1440
1943
  }
1441
1944
 
1442
- .ofv-data-kv td {
1945
+ .ofv-data-kv td,
1946
+ .ofv-avro-records td,
1947
+ .ofv-parquet-schema td,
1948
+ .ofv-parquet-records td {
1443
1949
  overflow-wrap: anywhere;
1444
1950
  font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace;
1445
1951
  }
@@ -1552,21 +2058,37 @@
1552
2058
  }
1553
2059
 
1554
2060
  .ofv-cad-conversion {
2061
+ display: grid;
2062
+ gap: 8px;
1555
2063
  margin: 12px 0;
1556
- padding: 10px 10px 10px 30px;
2064
+ padding: 12px;
1557
2065
  border: 1px solid var(--ofv-border);
1558
2066
  border-radius: 8px;
1559
- background: var(--ofv-surface-muted);
2067
+ background:
2068
+ linear-gradient(135deg, rgba(37, 99, 235, 0.1), rgba(20, 184, 166, 0.08)),
2069
+ var(--ofv-surface-muted);
1560
2070
  color: var(--ofv-text);
1561
2071
  font-size: 13px;
1562
2072
  line-height: 1.6;
1563
2073
  }
1564
2074
 
2075
+ .ofv-cad-conversion h4 {
2076
+ margin: 0;
2077
+ font-size: 14px;
2078
+ line-height: 1.35;
2079
+ }
2080
+
2081
+ .ofv-cad-conversion ol {
2082
+ margin: 0;
2083
+ padding-left: 20px;
2084
+ }
2085
+
1565
2086
  .ofv-cad-conversion li + li {
1566
2087
  margin-top: 6px;
1567
2088
  }
1568
2089
 
1569
- .ofv-cad-binary-probe {
2090
+ .ofv-cad-binary-probe,
2091
+ .ofv-cad-raw-preview {
1570
2092
  margin-top: 12px;
1571
2093
  }
1572
2094
 
@@ -1583,6 +2105,131 @@
1583
2105
  margin-top: 12px;
1584
2106
  }
1585
2107
 
2108
+ .ofv-dwg-preview {
2109
+ display: grid;
2110
+ grid-template-rows: auto minmax(0, 1fr);
2111
+ gap: 12px;
2112
+ min-height: 520px;
2113
+ padding: 14px;
2114
+ border: 1px solid var(--ofv-border);
2115
+ border-radius: 12px;
2116
+ background:
2117
+ linear-gradient(90deg, rgba(148, 163, 184, 0.09) 1px, transparent 1px),
2118
+ linear-gradient(0deg, rgba(148, 163, 184, 0.09) 1px, transparent 1px),
2119
+ #020617;
2120
+ background-size: 24px 24px;
2121
+ overflow: auto;
2122
+ }
2123
+
2124
+ .ofv-dwg-preview-status {
2125
+ position: sticky;
2126
+ top: 0;
2127
+ z-index: 1;
2128
+ width: max-content;
2129
+ max-width: 100%;
2130
+ padding: 8px 10px;
2131
+ border: 1px solid rgba(148, 163, 184, 0.24);
2132
+ border-radius: 8px;
2133
+ background: rgba(15, 23, 42, 0.9);
2134
+ color: #e5e7eb;
2135
+ font-size: 13px;
2136
+ box-shadow: 0 10px 24px rgba(2, 6, 23, 0.32);
2137
+ }
2138
+
2139
+ .ofv-dwg-preview-status span {
2140
+ display: grid;
2141
+ gap: 4px;
2142
+ }
2143
+
2144
+ .ofv-dwg-preview-status small {
2145
+ color: #94a3b8;
2146
+ font-size: 12px;
2147
+ font-weight: 500;
2148
+ line-height: 1.45;
2149
+ }
2150
+
2151
+ .ofv-dwg-thumbnail {
2152
+ display: grid;
2153
+ grid-template-columns: minmax(180px, 320px) minmax(0, 1fr);
2154
+ align-items: center;
2155
+ gap: 14px;
2156
+ width: min(100%, 640px);
2157
+ margin: 0;
2158
+ padding: 10px;
2159
+ border: 1px solid rgba(148, 163, 184, 0.22);
2160
+ border-radius: 10px;
2161
+ background: rgba(15, 23, 42, 0.78);
2162
+ }
2163
+
2164
+ .ofv-dwg-thumbnail img,
2165
+ .ofv-dwg-thumbnail-preview img {
2166
+ display: block;
2167
+ height: auto;
2168
+ border: 1px solid rgba(148, 163, 184, 0.24);
2169
+ border-radius: 6px;
2170
+ background: #020617;
2171
+ image-rendering: auto;
2172
+ }
2173
+
2174
+ .ofv-dwg-thumbnail img {
2175
+ width: 100%;
2176
+ }
2177
+
2178
+ .ofv-dwg-thumbnail figcaption {
2179
+ color: #cbd5e1;
2180
+ font-size: 13px;
2181
+ line-height: 1.5;
2182
+ }
2183
+
2184
+ .ofv-dwg-thumbnail-preview {
2185
+ display: grid;
2186
+ gap: 10px;
2187
+ align-content: start;
2188
+ min-height: 420px;
2189
+ margin: 0;
2190
+ padding: 12px;
2191
+ border: 1px solid rgba(148, 163, 184, 0.22);
2192
+ border-radius: 10px;
2193
+ background: #020617;
2194
+ overflow: auto;
2195
+ }
2196
+
2197
+ .ofv-dwg-thumbnail-preview img {
2198
+ width: min(100%, 1120px);
2199
+ margin: 0 auto;
2200
+ }
2201
+
2202
+ .ofv-dwg-thumbnail-preview figcaption {
2203
+ max-width: 920px;
2204
+ margin: 0 auto;
2205
+ color: #94a3b8;
2206
+ font-size: 12px;
2207
+ line-height: 1.55;
2208
+ text-align: center;
2209
+ }
2210
+
2211
+ .ofv-dwg-preview-svg {
2212
+ display: block;
2213
+ max-width: none;
2214
+ height: auto;
2215
+ }
2216
+
2217
+ .ofv-dwg-preview-frame {
2218
+ min-height: 420px;
2219
+ overflow: auto;
2220
+ background: #020617;
2221
+ }
2222
+
2223
+ .ofv-dwg-preview-frame .ofv-dwg-preview-svg {
2224
+ min-height: 420px;
2225
+ }
2226
+
2227
+ @container (max-width: 720px) {
2228
+ .ofv-dwg-thumbnail {
2229
+ grid-template-columns: 1fr;
2230
+ }
2231
+ }
2232
+
1586
2233
  .ofv-ofd {
1587
2234
  --ofv-ofd-zoom: 1;
1588
2235
  --ofv-ofd-rotation: 0deg;
@@ -2460,6 +3107,7 @@
2460
3107
 
2461
3108
  /* Code container styling */
2462
3109
  .ofv-code-container {
3110
+ --ofv-text-zoom: 1;
2463
3111
  display: flex;
2464
3112
  flex-direction: column;
2465
3113
  width: 100%;
@@ -2627,7 +3275,7 @@
2627
3275
  box-shadow: 8px 0 14px -14px rgba(15, 23, 42, 0.65);
2628
3276
  color: var(--ofv-text-muted);
2629
3277
  font-family: var(--ofv-font-mono, ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace);
2630
- font-size: 13px;
3278
+ font-size: calc(13px * var(--ofv-text-zoom, 1));
2631
3279
  line-height: 1.6;
2632
3280
  text-align: right;
2633
3281
  user-select: none;
@@ -2642,7 +3290,7 @@
2642
3290
  min-width: max-content;
2643
3291
  background: transparent !important;
2644
3292
  font-family: var(--ofv-font-mono, ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace);
2645
- font-size: 13px;
3293
+ font-size: calc(13px * var(--ofv-text-zoom, 1));
2646
3294
  line-height: 1.6;
2647
3295
  }
2648
3296
 
@@ -2689,6 +3337,7 @@
2689
3337
 
2690
3338
  /* Markdown container styling */
2691
3339
  .ofv-markdown-body {
3340
+ --ofv-markdown-zoom: 1;
2692
3341
  width: 100%;
2693
3342
  max-width: 100%;
2694
3343
  height: 100%;
@@ -2699,7 +3348,7 @@
2699
3348
  background: var(--ofv-surface);
2700
3349
  color: var(--ofv-text);
2701
3350
  font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji";
2702
- font-size: 15px;
3351
+ font-size: calc(15px * var(--ofv-markdown-zoom, 1));
2703
3352
  line-height: 1.65;
2704
3353
  word-wrap: break-word;
2705
3354
  }
@@ -2856,6 +3505,7 @@
2856
3505
  display: flex;
2857
3506
  align-items: center;
2858
3507
  justify-content: center;
3508
+ overflow: hidden;
2859
3509
  box-sizing: border-box;
2860
3510
  }
2861
3511
 
@@ -2886,6 +3536,36 @@
2886
3536
  color: #ef4444;
2887
3537
  font-weight: 500;
2888
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;
2889
3569
  }
2890
3570
 
2891
3571
  /* PDF Text Layer styling */