pdf-tsx 0.3.0 → 0.5.0

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.
Files changed (111) hide show
  1. package/LICENSE +21 -21
  2. package/README.md +350 -296
  3. package/dist/cjs/components/PDFSidebar.cjs +1 -1
  4. package/dist/cjs/components/PDFSidebar.module.cjs +1 -1
  5. package/dist/cjs/components/PDFViewer.cjs +1 -1
  6. package/dist/cjs/components/PDFViewer.module.cjs +1 -1
  7. package/dist/cjs/components/features/PDFAnnotations.cjs +1 -1
  8. package/dist/cjs/components/features/PDFAnnotations.module.cjs +1 -1
  9. package/dist/cjs/components/features/PDFChangeFile.cjs +1 -1
  10. package/dist/cjs/components/features/PDFDownloadButton.cjs +1 -1
  11. package/dist/cjs/components/features/PDFNavigation.cjs +1 -1
  12. package/dist/cjs/components/features/PDFNavigation.module.cjs +1 -1
  13. package/dist/cjs/components/features/PDFOutline.cjs +1 -1
  14. package/dist/cjs/components/features/PDFOutline.module.cjs +1 -1
  15. package/dist/cjs/components/features/PDFPageFit.cjs +1 -1
  16. package/dist/cjs/components/features/PDFPrintButton.cjs +1 -1
  17. package/dist/cjs/components/features/PDFRotationControl.cjs +1 -1
  18. package/dist/cjs/components/features/PDFSearch.cjs +1 -1
  19. package/dist/cjs/components/features/PDFSearch.module.cjs +1 -1
  20. package/dist/cjs/components/features/PDFSidebarToggle.cjs +1 -0
  21. package/dist/cjs/components/features/PDFSignatures.cjs +1 -1
  22. package/dist/cjs/components/features/PDFSignatures.module.cjs +1 -1
  23. package/dist/cjs/components/features/PDFThemeToggle.cjs +1 -1
  24. package/dist/cjs/components/features/PDFThumbnails.cjs +1 -1
  25. package/dist/cjs/components/features/PDFThumbnails.module.cjs +1 -1
  26. package/dist/cjs/components/features/PDFZoomControls.cjs +1 -1
  27. package/dist/cjs/components/features/PDFZoomControls.module.cjs +1 -1
  28. package/dist/cjs/components/ui/ToolbarButton.module.cjs +1 -1
  29. package/dist/cjs/components/ui/icons.cjs +1 -1
  30. package/dist/cjs/context/ThemeContext.cjs +1 -1
  31. package/dist/cjs/context/themeContextValue.cjs +1 -0
  32. package/dist/cjs/hooks/useAnnotationLayer.cjs +1 -1
  33. package/dist/cjs/hooks/useAnnotations.cjs +1 -1
  34. package/dist/cjs/hooks/useKeyboardShortcuts.cjs +1 -1
  35. package/dist/cjs/hooks/useOutline.cjs +1 -1
  36. package/dist/cjs/hooks/useOverlayRects.cjs +1 -0
  37. package/dist/cjs/hooks/usePDFLoader.cjs +1 -0
  38. package/dist/cjs/hooks/usePDFRenderer.cjs +1 -0
  39. package/dist/cjs/hooks/useScrollTracking.cjs +1 -1
  40. package/dist/cjs/hooks/useTextLayer.cjs +1 -1
  41. package/dist/cjs/hooks/useTextSearch.cjs +1 -1
  42. package/dist/cjs/hooks/useTheme.cjs +1 -0
  43. package/dist/cjs/hooks/useThumbnails.cjs +1 -1
  44. package/dist/cjs/index.cjs +1 -1
  45. package/dist/cjs/pdf-tsx.css +1 -1
  46. package/dist/components/PDFSidebar.d.ts +1 -1
  47. package/dist/components/PDFViewer.d.ts +2 -0
  48. package/dist/components/features/PDFSidebarToggle.d.ts +7 -0
  49. package/dist/components/ui/icons.d.ts +0 -14
  50. package/dist/context/PDFViewerContext.d.ts +2 -0
  51. package/dist/context/ThemeContext.d.ts +0 -6
  52. package/dist/context/themeContextValue.d.ts +7 -0
  53. package/dist/es/components/PDFSidebar.js +39 -36
  54. package/dist/es/components/PDFSidebar.module.js +9 -7
  55. package/dist/es/components/PDFViewer.js +240 -266
  56. package/dist/es/components/PDFViewer.module.js +15 -15
  57. package/dist/es/components/features/PDFAnnotations.js +57 -64
  58. package/dist/es/components/features/PDFAnnotations.module.js +12 -12
  59. package/dist/es/components/features/PDFChangeFile.js +3 -3
  60. package/dist/es/components/features/PDFDownloadButton.js +2 -2
  61. package/dist/es/components/features/PDFNavigation.js +3 -3
  62. package/dist/es/components/features/PDFNavigation.module.js +3 -3
  63. package/dist/es/components/features/PDFOutline.js +7 -7
  64. package/dist/es/components/features/PDFOutline.module.js +5 -5
  65. package/dist/es/components/features/PDFPageFit.js +1 -1
  66. package/dist/es/components/features/PDFPrintButton.js +5 -4
  67. package/dist/es/components/features/PDFRotationControl.js +1 -1
  68. package/dist/es/components/features/PDFSearch.js +19 -14
  69. package/dist/es/components/features/PDFSearch.module.js +5 -4
  70. package/dist/es/components/features/PDFSidebarToggle.js +21 -0
  71. package/dist/es/components/features/PDFSignatures.js +158 -116
  72. package/dist/es/components/features/PDFSignatures.module.js +16 -16
  73. package/dist/es/components/features/PDFThemeToggle.js +5 -5
  74. package/dist/es/components/features/PDFThumbnails.js +54 -30
  75. package/dist/es/components/features/PDFThumbnails.module.js +9 -7
  76. package/dist/es/components/features/PDFZoomControls.js +1 -1
  77. package/dist/es/components/features/PDFZoomControls.module.js +1 -1
  78. package/dist/es/components/ui/ToolbarButton.module.js +2 -2
  79. package/dist/es/components/ui/icons.js +1 -1
  80. package/dist/es/context/ThemeContext.js +20 -25
  81. package/dist/es/context/themeContextValue.js +5 -0
  82. package/dist/es/hooks/useAnnotationLayer.js +11 -11
  83. package/dist/es/hooks/useAnnotations.js +0 -1
  84. package/dist/es/hooks/useKeyboardShortcuts.js +12 -15
  85. package/dist/es/hooks/useOutline.js +31 -12
  86. package/dist/es/hooks/useOverlayRects.js +72 -0
  87. package/dist/es/hooks/usePDFLoader.js +26 -0
  88. package/dist/es/hooks/usePDFRenderer.js +83 -0
  89. package/dist/es/hooks/useScrollTracking.js +21 -20
  90. package/dist/es/hooks/useTextLayer.js +13 -12
  91. package/dist/es/hooks/useTextSearch.js +30 -18
  92. package/dist/es/hooks/useTheme.js +10 -0
  93. package/dist/es/hooks/useThumbnails.js +86 -24
  94. package/dist/es/index.js +2 -1
  95. package/dist/es/pdf-tsx.css +1 -1
  96. package/dist/hooks/useAnnotationLayer.d.ts +2 -2
  97. package/dist/hooks/useAnnotations.d.ts +0 -5
  98. package/dist/hooks/useKeyboardShortcuts.d.ts +1 -2
  99. package/dist/hooks/useOverlayRects.d.ts +21 -0
  100. package/dist/hooks/usePDFLoader.d.ts +4 -0
  101. package/dist/hooks/usePDFRenderer.d.ts +16 -0
  102. package/dist/hooks/useScrollTracking.d.ts +2 -1
  103. package/dist/hooks/useTextLayer.d.ts +2 -2
  104. package/dist/hooks/useTheme.d.ts +2 -0
  105. package/dist/hooks/useThumbnails.d.ts +3 -2
  106. package/dist/index.d.ts +1 -0
  107. package/dist/pdf-tsx.cjs.js +5 -0
  108. package/dist/pdf-tsx.css +2 -0
  109. package/dist/pdf-tsx.es.js +2637 -0
  110. package/dist/vite.svg +1 -0
  111. package/package.json +61 -61
@@ -1,2 +1,2 @@
1
- ._wrapper_184n8_1{border-right:1px solid var(--pdf-border);height:100%;display:flex}._buttonBar_184n8_13{background-color:var(--pdf-bg);flex-direction:column;flex-shrink:0;gap:2px;width:48px;padding-top:4px;display:flex}._panelButton_184n8_33{cursor:pointer;width:44px;height:44px;color:var(--pdf-text-muted);background-color:#0000;border:none;border-radius:6px;justify-content:center;align-items:center;margin:0 2px;transition:background-color .15s,color .15s;display:flex}._panelButton_184n8_33:hover{background-color:var(--pdf-surface);color:var(--pdf-text-secondary)}._panelButtonActive_184n8_73{background-color:var(--pdf-surface);color:var(--pdf-accent-light)}._panelButtonActive_184n8_73:hover{color:var(--pdf-accent-light)}._contentPanel_184n8_91{background-color:var(--pdf-panel-bg);border-right:1px solid var(--pdf-panel-border);flex-direction:column;width:260px;display:flex}._panelHeader_184n8_107{color:var(--pdf-text-muted);text-transform:uppercase;letter-spacing:.6px;border-bottom:1px solid var(--pdf-panel-border);background-color:var(--pdf-panel-header-bg);flex-shrink:0;padding:10px 14px;font-size:11px;font-weight:600}._panelBody_184n8_131{flex:1;overflow-y:auto}._appLayout_nel8e_1{width:100%;height:100%;display:flex;overflow:hidden}._mainContent_nel8e_15{flex-direction:column;flex:1;min-width:0;display:flex}._toolbar_nel8e_29{border-bottom:1px solid var(--pdf-border);background-color:var(--pdf-bg);z-index:10;flex-shrink:0;align-items:center;gap:2px;height:44px;padding:0 12px;display:flex}._scrollContainer_nel8e_53{background-color:var(--pdf-scroll-area);flex-direction:column;flex:1;align-items:center;padding:10px 20px;display:flex;overflow-y:auto}._pageWrapper_nel8e_73{margin-bottom:25px;position:relative}._pageCanvas_nel8e_83{box-shadow:0 5px 20px var(--pdf-shadow-page);pointer-events:none;background-color:#fff;display:block}._textLayer_nel8e_97{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light only;text-align:initial;opacity:1;-webkit-text-size-adjust:none;-moz-text-size-adjust:none;text-size-adjust:none;forced-color-adjust:none;transform-origin:0 0;caret-color:canvastext;z-index:0;--min-font-size:1;--text-scale-factor:calc(var(--total-scale-factor) * var(--min-font-size));--min-font-size-inv:calc(1 / var(--min-font-size));line-height:1;position:absolute;inset:0;overflow:clip}._textLayer_nel8e_97 :is(span,br){color:#0000;white-space:pre;cursor:text;transform-origin:0 0;position:absolute}._textLayer_nel8e_97>:not(._markedContent_nel8e_149),._textLayer_nel8e_97 ._markedContent_nel8e_149 span:not(._markedContent_nel8e_149){z-index:1;--font-height:0;font-size:calc(var(--text-scale-factor) * var(--font-height));--scale-x:1;--rotate:0deg;transform:rotate(var(--rotate)) scaleX(var(--scale-x)) scale(var(--min-font-size-inv))}._textLayer_nel8e_97 ._markedContent_nel8e_149{display:contents}._textLayer_nel8e_97 ._endOfContent_nel8e_177{z-index:0;cursor:default;-webkit-user-select:none;user-select:none;display:block;position:absolute;inset:100% 0 0}._textLayer_nel8e_97._selecting_nel8e_195 ._endOfContent_nel8e_177{top:0}._textLayer_nel8e_97 ::selection{background:#0000ff40}._textLayer_nel8e_97 br::selection{background:0 0}._pageSkeleton_nel8e_235{background:linear-gradient(90deg,#3f3f46 25%,#52525b 50%,#3f3f46 75%) 0 0/200% 100%;border-radius:1px;animation:1.4s infinite _shimmer_nel8e_1}@keyframes _shimmer_nel8e_1{0%{background-position:200% 0}to{background-position:-200% 0}}._highlightOverlay_nel8e_267{pointer-events:none;background-color:#ffdc0059;border:2px solid #ffa000e6;border-radius:2px;position:absolute}._linkOverlay_nel8e_283{pointer-events:all;cursor:pointer;position:absolute}._searchMatchOverlay_nel8e_295{pointer-events:none;background-color:#fde0474d;border-bottom:2px solid #eab308cc;position:absolute}._list_10scn_1{flex-direction:column;display:flex}._emptyState_10scn_11{color:var(--pdf-text-secondary);padding:20px 14px;font-size:12px}._pageHeader_10scn_23{color:var(--pdf-text-secondary);text-transform:uppercase;letter-spacing:.5px;background-color:var(--pdf-panel-header-bg);border-bottom:1px solid var(--pdf-panel-border);padding:5px 12px;font-size:10px;font-weight:600}._card_10scn_45{border:1px solid var(--pdf-panel-border);background-color:var(--pdf-panel-bg);border-radius:6px;margin:8px;padding:10px 12px;font-size:12px;transition:box-shadow .12s}._cardClickable_10scn_65{cursor:pointer}._cardClickable_10scn_65:hover{box-shadow:0 1px 6px var(--pdf-shadow-page)}._cardHeader_10scn_81{justify-content:space-between;align-items:center;margin-bottom:4px;display:flex}._cardLabel_10scn_95{color:var(--pdf-text-secondary);font-size:11px;font-weight:600}._cardPage_10scn_107{color:var(--pdf-text-secondary);font-size:10px}._cardAuthor_10scn_117{color:var(--pdf-text-muted);margin-bottom:3px;font-size:11px}._cardContent_10scn_129{color:var(--pdf-text-primary);font-size:12px;line-height:1.5}._iconWrapper_10scn_141{justify-content:center;align-items:center;display:flex;position:relative}._badge_10scn_155{background-color:var(--pdf-accent);color:#fff;text-align:center;pointer-events:none;box-sizing:border-box;border-radius:7px;min-width:14px;height:14px;padding:0 3px;font-size:9px;font-weight:700;line-height:14px;position:absolute;top:-5px;right:-7px}._btn_12ml0_1{color:var(--pdf-text-secondary);cursor:pointer;white-space:nowrap;background:0 0;border:none;border-radius:4px;justify-content:center;align-items:center;gap:5px;padding:6px 8px;font-family:inherit;font-size:13px;line-height:1;transition:background .12s,color .12s;display:flex}._btn_12ml0_1:hover:not(:disabled){background:var(--pdf-surface);color:var(--pdf-text-primary)}._btn_12ml0_1:disabled{color:var(--pdf-border);cursor:default}._primary_12ml0_57{background:var(--pdf-accent);color:#fff;padding:6px 14px}._primary_12ml0_57:hover:not(:disabled){background:var(--pdf-accent-hover);color:#fff}._navWrapper_6ysgx_1{align-items:center;gap:2px;margin-left:auto;display:flex}._pageInput_6ysgx_15{background:var(--pdf-surface);width:32px;color:var(--pdf-text-primary);font-variant-numeric:tabular-nums;text-align:center;border:1px solid #0000;border-radius:4px;outline:none;padding:3px 4px;font-family:inherit;font-size:12px}._pageInput_6ysgx_15:focus{border-color:var(--pdf-accent);background:var(--pdf-bg)}._pageInput_6ysgx_15::-webkit-outer-spin-button{-webkit-appearance:none}._pageInput_6ysgx_15::-webkit-inner-spin-button{-webkit-appearance:none}._pageInput_6ysgx_15{-moz-appearance:textfield}._pageTotal_6ysgx_71{color:var(--pdf-text-placeholder);font-variant-numeric:tabular-nums;font-size:12px}._emptyState_1w4ic_1{color:var(--pdf-text-secondary);padding:20px 14px;font-size:12px}._tree_1w4ic_13{flex-direction:column;padding:4px 0;display:flex}._row_1w4ic_25{color:var(--pdf-text-secondary);cursor:pointer;border-radius:4px;align-items:center;gap:4px;margin:0 4px;padding:5px 12px;font-size:12px;line-height:1.4;display:flex}._row_1w4ic_25:hover{background-color:var(--pdf-surface-hover);color:var(--pdf-text-primary)}._chevronBtn_1w4ic_61{cursor:pointer;color:var(--pdf-text-secondary);background:0 0;border:none;flex-shrink:0;align-items:center;padding:0;display:flex}._chevronBtn_1w4ic_61:hover{color:var(--pdf-text-muted)}._title_1w4ic_91{text-overflow:ellipsis;white-space:nowrap;flex:1;overflow:hidden}._wrapper_yinyt_1{align-items:center;gap:4px;display:flex}._searchInput_yinyt_13{background:var(--pdf-surface);border:1px solid var(--pdf-border);color:var(--pdf-text-primary);border-radius:4px;outline:none;width:180px;padding:4px 8px;font-family:inherit;font-size:13px}._searchInput_yinyt_13:focus{border-color:var(--pdf-accent)}._searchInput_yinyt_13::placeholder{color:var(--pdf-text-placeholder)}._navButton_yinyt_53{color:var(--pdf-text-secondary);cursor:pointer;background:0 0;border:none;border-radius:4px;align-items:center;padding:4px 5px;display:flex}._navButton_yinyt_53:hover:not(:disabled){background:var(--pdf-surface);color:var(--pdf-text-primary)}._navButton_yinyt_53:disabled{color:var(--pdf-border);cursor:default}._counter_yinyt_95{color:var(--pdf-text-muted);text-align:center;min-width:36px;font-size:11px}._list_11831_1{flex-direction:column;display:flex}._emptyState_11831_11{color:var(--pdf-text-secondary);padding:20px 14px;font-size:12px}._card_11831_23{border:1px solid var(--pdf-border);background-color:var(--pdf-panel-bg);cursor:default;border-radius:6px;margin:8px;padding:12px;font-size:12px;transition:box-shadow .12s}._cardClickable_11831_45{cursor:pointer}._cardClickable_11831_45:hover{box-shadow:0 1px 6px var(--pdf-shadow-page)}._cardSigned_11831_61{background-color:#f0fdf4;border-color:#bbf7d0}._cardHeader_11831_71{align-items:center;gap:7px;margin-bottom:8px;display:flex}._statusDot_11831_85{background-color:var(--pdf-border-light);color:#fff;border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;width:20px;height:20px;font-size:11px;line-height:1;display:flex}._statusDotSigned_11831_113{background-color:#22c55e}._statusLabel_11831_121{color:var(--pdf-text-secondary);text-transform:uppercase;letter-spacing:.4px;font-size:11px;font-weight:600}._statusLabelSigned_11831_137{color:#16a34a}._fieldList_11831_145{flex-direction:column;gap:3px;display:flex}._fieldRow_11831_157{color:var(--pdf-text-secondary);font-size:12px}._fieldLabel_11831_167{color:var(--pdf-text-secondary)}._disclaimer_11831_175{color:#a16207;background-color:#fefce8;border:1px solid #fef08a;border-radius:4px;margin:0 8px 12px;padding:8px 10px;font-size:10px;line-height:1.5}._iconWrapper_11831_197{justify-content:center;align-items:center;display:flex;position:relative}._badge_11831_211{background-color:var(--pdf-accent);color:#fff;text-align:center;pointer-events:none;box-sizing:border-box;border-radius:7px;min-width:14px;height:14px;padding:0 3px;font-size:9px;font-weight:700;line-height:14px;position:absolute;top:-5px;right:-7px}._thumbnailList_116om_1{background-color:var(--pdf-panel-bg);padding-bottom:8px}._thumbnailItem_116om_11{cursor:pointer;text-align:center;background-color:#0000;border-left:2px solid #0000;padding:12px 16px;transition:background-color .15s}._thumbnailItem_116om_11:hover{background-color:var(--pdf-surface-hover)}._thumbnailItemActive_116om_37{background-color:var(--pdf-accent-subtle);border-left-color:var(--pdf-accent)}._thumbnailItemActive_116om_37:hover{background-color:var(--pdf-accent-subtle)}._thumbnailImg_116om_55{width:120px;box-shadow:0 1px 4px var(--pdf-shadow-page);border-radius:2px}._thumbnailImgActive_116om_67{box-shadow:0 0 0 2px var(--pdf-accent), 0 2px 8px var(--pdf-shadow-page)}._thumbnailLabel_116om_75{color:var(--pdf-text-muted);margin-top:6px;font-size:11px;font-weight:400}._thumbnailLabelActive_116om_89{color:var(--pdf-accent-hover);font-weight:600}._zoomLabel_1r6if_1{text-align:center;min-width:42px;color:var(--pdf-text-muted);font-variant-numeric:tabular-nums;font-size:12px}
1
+ ._wrapper_a1iar_1{border-right:1px solid var(--pdf-border);height:100%;display:flex}._wrapperCollapsed_a1iar_7{border-right:1px solid var(--pdf-border);background-color:var(--pdf-bg);flex-direction:column;height:100%;padding-top:4px;display:flex}._buttonBar_a1iar_16{background-color:var(--pdf-bg);flex-direction:column;flex-shrink:0;gap:2px;width:48px;padding-top:4px;display:flex}._toggleButton_a1iar_26{border-bottom:1px solid var(--pdf-border);border-radius:0;width:48px;margin:0;padding-bottom:6px}._panelButton_a1iar_35{cursor:pointer;width:44px;height:44px;color:var(--pdf-text-muted);background-color:#0000;border:none;border-radius:6px;justify-content:center;align-items:center;margin:0 2px;transition:background-color .15s,color .15s;display:flex}._panelButton_a1iar_35:hover{background-color:var(--pdf-surface);color:var(--pdf-text-secondary)}._panelButtonActive_a1iar_55{background-color:var(--pdf-surface);color:var(--pdf-accent-light)}._panelButtonActive_a1iar_55:hover{color:var(--pdf-accent-light)}._contentPanel_a1iar_64{background-color:var(--pdf-panel-bg);border-right:1px solid var(--pdf-panel-border);flex-direction:column;width:260px;display:flex}._panelHeader_a1iar_72{color:var(--pdf-text-muted);text-transform:uppercase;letter-spacing:.6px;border-bottom:1px solid var(--pdf-panel-border);background-color:var(--pdf-panel-header-bg);flex-shrink:0;padding:10px 14px;font-size:11px;font-weight:600}._panelBody_a1iar_84{flex:1;overflow-y:auto}._appLayout_1ug7w_1{flex-direction:column;width:100%;height:100%;display:flex;overflow:hidden}._body_1ug7w_9{flex-direction:row;flex:1;min-height:0;display:flex;overflow:hidden}._toolbar_1ug7w_17{border-bottom:1px solid var(--pdf-border);background-color:var(--pdf-bg);z-index:10;flex-shrink:0;align-items:center;gap:2px;height:44px;padding:0 12px;display:flex}._scrollContainer_1ug7w_29{background-color:var(--pdf-scroll-area);flex-direction:column;flex:1;align-items:center;padding:10px 20px;display:flex;overflow-y:auto}._pageWrapper_1ug7w_39{margin-bottom:25px;position:relative}._pageCanvas_1ug7w_44{z-index:1;box-shadow:0 5px 20px var(--pdf-shadow-page);pointer-events:none;background-color:#fff;display:block;position:relative}._textLayer_1ug7w_53{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light only;text-align:initial;opacity:1;-webkit-text-size-adjust:none;-moz-text-size-adjust:none;text-size-adjust:none;forced-color-adjust:none;transform-origin:0 0;caret-color:canvastext;z-index:2;--min-font-size:1;--text-scale-factor:calc(var(--total-scale-factor) * var(--min-font-size));--min-font-size-inv:calc(1 / var(--min-font-size));line-height:1;position:absolute;inset:0;overflow:clip}._textLayer_1ug7w_53 :is(span,br){color:#0000;white-space:pre;cursor:text;transform-origin:0 0;position:absolute}._textLayer_1ug7w_53>:not(._markedContent_1ug7w_79),._textLayer_1ug7w_53 ._markedContent_1ug7w_79 span:not(._markedContent_1ug7w_79){z-index:1;--font-height:0;font-size:calc(var(--text-scale-factor) * var(--font-height));--scale-x:1;--rotate:0deg;transform:rotate(var(--rotate)) scaleX(var(--scale-x)) scale(var(--min-font-size-inv))}._textLayer_1ug7w_53 ._markedContent_1ug7w_79{display:contents}._textLayer_1ug7w_53 ._endOfContent_1ug7w_94{z-index:0;cursor:default;-webkit-user-select:none;user-select:none;display:block;position:absolute;inset:100% 0 0}._textLayer_1ug7w_53._selecting_1ug7w_103 ._endOfContent_1ug7w_94{top:0}._textLayer_1ug7w_53 ::selection{background:#0000ff40}._textLayer_1ug7w_53 br::selection{background:0 0}._pageSkeleton_1ug7w_123{z-index:0;pointer-events:none;background:linear-gradient(90deg,#3f3f46 25%,#52525b 50%,#3f3f46 75%) 0 0/200% 100%;border-radius:1px;animation:1.4s infinite _shimmer_1ug7w_1;position:absolute;top:0;left:0}@keyframes _shimmer_1ug7w_1{0%{background-position:200% 0}to{background-position:-200% 0}}._highlightOverlay_1ug7w_144{z-index:4;pointer-events:none;background-color:#ffdc0059;border:2px solid #ffa000e6;border-radius:2px;position:absolute}._linkOverlay_1ug7w_153{z-index:3;pointer-events:all;cursor:pointer;position:absolute}._searchMatchOverlay_1ug7w_160{z-index:3;pointer-events:none;background-color:#fde0474d;border-bottom:2px solid #eab308cc;position:absolute}._list_r71a6_1{flex-direction:column;display:flex}._emptyState_r71a6_6{color:var(--pdf-text-secondary);padding:20px 14px;font-size:12px}._pageHeader_r71a6_12{color:var(--pdf-text-secondary);text-transform:uppercase;letter-spacing:.5px;background-color:var(--pdf-panel-header-bg);border-bottom:1px solid var(--pdf-panel-border);padding:5px 12px;font-size:10px;font-weight:600}._card_r71a6_23{border:1px solid var(--pdf-panel-border);background-color:var(--pdf-panel-bg);border-radius:6px;margin:8px;padding:10px 12px;font-size:12px;transition:box-shadow .12s}._cardClickable_r71a6_33{cursor:pointer}._cardClickable_r71a6_33:hover{box-shadow:0 1px 6px var(--pdf-shadow-page)}._cardHeader_r71a6_41{justify-content:space-between;align-items:center;margin-bottom:4px;display:flex}._cardLabel_r71a6_48{color:var(--pdf-text-secondary);font-size:11px;font-weight:600}._cardPage_r71a6_54{color:var(--pdf-text-secondary);font-size:10px}._cardAuthor_r71a6_59{color:var(--pdf-text-muted);margin-bottom:3px;font-size:11px}._cardContent_r71a6_65{color:var(--pdf-text-primary);font-size:12px;line-height:1.5}._iconWrapper_r71a6_71{justify-content:center;align-items:center;display:flex;position:relative}._badge_r71a6_78{background-color:var(--pdf-accent);color:#fff;text-align:center;pointer-events:none;box-sizing:border-box;border-radius:7px;min-width:14px;height:14px;padding:0 3px;font-size:9px;font-weight:700;line-height:14px;position:absolute;top:-5px;right:-7px}._btn_1x6vc_1{color:var(--pdf-text-secondary);cursor:pointer;white-space:nowrap;background:0 0;border:none;border-radius:4px;justify-content:center;align-items:center;gap:5px;padding:6px 8px;font-family:inherit;font-size:13px;line-height:1;transition:background .12s,color .12s;display:flex}._btn_1x6vc_1:hover:not(:disabled){background:var(--pdf-surface);color:var(--pdf-text-primary)}._btn_1x6vc_1:disabled{color:var(--pdf-border);cursor:default}._primary_1x6vc_29{background:var(--pdf-accent);color:#fff;padding:6px 14px}._primary_1x6vc_29:hover:not(:disabled){background:var(--pdf-accent-hover);color:#fff}._navWrapper_hrnrb_1{align-items:center;gap:2px;display:flex}._pageInput_hrnrb_7{background:var(--pdf-surface);width:32px;color:var(--pdf-text-primary);font-variant-numeric:tabular-nums;text-align:center;border:1px solid #0000;border-radius:4px;outline:none;padding:3px 4px;font-family:inherit;font-size:12px}._pageInput_hrnrb_7:focus{border-color:var(--pdf-accent);background:var(--pdf-bg)}._pageInput_hrnrb_7::-webkit-outer-spin-button{-webkit-appearance:none}._pageInput_hrnrb_7::-webkit-inner-spin-button{-webkit-appearance:none}._pageInput_hrnrb_7{-moz-appearance:textfield}._pageTotal_hrnrb_35{color:var(--pdf-text-placeholder);font-variant-numeric:tabular-nums;font-size:12px}._emptyState_hqvdn_1{color:var(--pdf-text-secondary);padding:20px 14px;font-size:12px}._tree_hqvdn_7{flex-direction:column;padding:4px 0;display:flex}._row_hqvdn_13{color:var(--pdf-text-secondary);cursor:pointer;border-radius:4px;align-items:center;gap:4px;margin:0 4px;padding:5px 12px;font-size:12px;line-height:1.4;display:flex}._row_hqvdn_13:hover{background-color:var(--pdf-surface-hover);color:var(--pdf-text-primary)}._chevronBtn_hqvdn_31{cursor:pointer;color:var(--pdf-text-secondary);background:0 0;border:none;flex-shrink:0;align-items:center;padding:0;display:flex}._chevronBtn_hqvdn_31:hover{color:var(--pdf-text-muted)}._title_hqvdn_46{text-overflow:ellipsis;white-space:nowrap;flex:1;overflow:hidden}._wrapper_18kvs_1{align-items:center;gap:4px;display:flex}._searchIconWrapper_18kvs_7{color:var(--pdf-text-secondary);align-items:center;display:flex}._searchInput_18kvs_13{background:var(--pdf-surface);border:1px solid var(--pdf-border);color:var(--pdf-text-primary);border-radius:4px;outline:none;width:180px;padding:4px 8px;font-family:inherit;font-size:13px}._searchInput_18kvs_13:focus{border-color:var(--pdf-accent)}._searchInput_18kvs_13::placeholder{color:var(--pdf-text-placeholder)}._navButton_18kvs_33{color:var(--pdf-text-secondary);cursor:pointer;background:0 0;border:none;border-radius:4px;align-items:center;padding:4px 5px;display:flex}._navButton_18kvs_33:hover:not(:disabled){background:var(--pdf-surface);color:var(--pdf-text-primary)}._navButton_18kvs_33:disabled{color:var(--pdf-border);cursor:default}._counter_18kvs_54{color:var(--pdf-text-muted);text-align:center;min-width:36px;font-size:11px}._list_1ii4b_1{flex-direction:column;gap:6px;padding:8px;display:flex}._emptyState_1ii4b_8{color:var(--pdf-text-muted);text-align:center;padding:24px 14px;font-size:12px}._card_1ii4b_15{border:1px solid var(--pdf-border);background:var(--pdf-panel-bg);text-align:left;cursor:default;box-sizing:border-box;border-radius:8px;width:100%;font-family:inherit;font-size:12px;transition:box-shadow .15s,border-color .15s;position:relative;overflow:hidden}._cardSigned_1ii4b_32{background:#22c55e0a;border-color:#22c55e47}._cardClickable_1ii4b_37{cursor:pointer}._cardClickable_1ii4b_37:hover{box-shadow:0 2px 10px var(--pdf-shadow-page);border-color:var(--pdf-border-light)}._cardSigned_1ii4b_32._cardClickable_1ii4b_37:hover{border-color:#22c55e73}._cardBody_1ii4b_50{padding:10px 12px 10px 16px}._cardHeader_1ii4b_54{justify-content:space-between;align-items:center;gap:8px;margin-bottom:8px;display:flex}._fieldName_1ii4b_62{color:var(--pdf-text-primary);text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0;font-size:12px;font-weight:600;overflow:hidden}._statusChip_1ii4b_73{text-transform:uppercase;letter-spacing:.5px;background:var(--pdf-surface-hover);color:var(--pdf-text-muted);border:1px solid var(--pdf-border);border-radius:20px;flex-shrink:0;align-items:center;gap:4px;padding:2px 7px;font-size:10px;font-weight:700;display:inline-flex}._statusChipSigned_1ii4b_89{color:#15803d;background:#22c55e1f;border-color:#22c55e4d}._fieldList_1ii4b_95{flex-direction:column;gap:4px;display:flex}._fieldRow_1ii4b_101{grid-template-columns:72px 1fr;gap:4px;font-size:11px;line-height:1.5;display:grid}._fieldLabel_1ii4b_109{color:var(--pdf-text-muted);font-weight:500}._fieldValue_1ii4b_114{color:var(--pdf-text-secondary);word-break:break-word}._iconWrapper_1ii4b_119{justify-content:center;align-items:center;display:flex;position:relative}._badge_1ii4b_126{background-color:var(--pdf-accent);color:#fff;text-align:center;pointer-events:none;box-sizing:border-box;border-radius:7px;min-width:14px;height:14px;padding:0 3px;font-size:9px;font-weight:700;line-height:14px;position:absolute;top:-5px;right:-7px}._thumbnailList_qpgpt_1{background-color:var(--pdf-panel-bg);padding-bottom:8px}._thumbnailItem_qpgpt_6{cursor:pointer;text-align:center;background-color:#0000;border-left:2px solid #0000;padding:12px 16px;transition:background-color .15s}._thumbnailItem_qpgpt_6:hover{background-color:var(--pdf-surface-hover)}._thumbnailItemActive_qpgpt_19{background-color:var(--pdf-accent-subtle);border-left-color:var(--pdf-accent)}._thumbnailItemActive_qpgpt_19:hover{background-color:var(--pdf-accent-subtle)}._thumbnailImg_qpgpt_28{width:120px;box-shadow:0 1px 4px var(--pdf-shadow-page);border-radius:2px}._thumbnailImgActive_qpgpt_34{box-shadow:0 0 0 2px var(--pdf-accent), 0 2px 8px var(--pdf-shadow-page)}._thumbnailSkeleton_qpgpt_38{background:linear-gradient(90deg, var(--pdf-surface) 25%, var(--pdf-surface-hover) 50%, var(--pdf-surface) 75%);background-size:200% 100%;border-radius:2px;width:120px;height:160px;animation:1.4s infinite _shimmer_qpgpt_1}@keyframes _shimmer_qpgpt_1{0%{background-position:200% 0}to{background-position:-200% 0}}._thumbnailLabel_qpgpt_52{color:var(--pdf-text-muted);margin-top:6px;font-size:11px;font-weight:400}._thumbnailLabelActive_qpgpt_59{color:var(--pdf-accent-hover);font-weight:600}._zoomLabel_m8iv9_1{text-align:center;min-width:42px;color:var(--pdf-text-muted);font-variant-numeric:tabular-nums;font-size:12px}
2
2
  /*$vite$:1*/
@@ -13,8 +13,8 @@ interface UseAnnotationLayerOptions {
13
13
  pdf: pdfjsLib.PDFDocumentProxy | null;
14
14
  zoom: number;
15
15
  rotation: number;
16
- numPages: number;
16
+ mountedPages: number[];
17
17
  goToPage: (page: number) => void;
18
18
  }
19
- export declare function useAnnotationLayer({ pdf, zoom, rotation, numPages, goToPage, }: UseAnnotationLayerOptions): LinkOverlay[];
19
+ export declare function useAnnotationLayer({ pdf, zoom, rotation, mountedPages, goToPage, }: UseAnnotationLayerOptions): LinkOverlay[];
20
20
  export {};
@@ -5,11 +5,6 @@ export interface PDFAnnotation {
5
5
  subtype: string;
6
6
  contents?: string;
7
7
  title?: string;
8
- color?: {
9
- r: number;
10
- g: number;
11
- b: number;
12
- };
13
8
  rect?: [number, number, number, number];
14
9
  }
15
10
  export declare function useAnnotations({ pdf }: {
@@ -2,10 +2,9 @@ import * as pdfjsLib from "pdfjs-dist";
2
2
  interface UseKeyboardShortcutsOptions {
3
3
  pdf: pdfjsLib.PDFDocumentProxy | null;
4
4
  currentPage: number;
5
- numPages: number;
6
5
  goToPage: (page: number) => void;
7
6
  setZoom: React.Dispatch<React.SetStateAction<number>>;
8
7
  setRotation: React.Dispatch<React.SetStateAction<number>>;
9
8
  }
10
- export declare function useKeyboardShortcuts({ pdf, currentPage, numPages, goToPage, setZoom, setRotation, }: UseKeyboardShortcutsOptions): void;
9
+ export declare function useKeyboardShortcuts({ pdf, currentPage, goToPage, setZoom, setRotation, }: UseKeyboardShortcutsOptions): void;
11
10
  export {};
@@ -0,0 +1,21 @@
1
+ import { HighlightRect } from '../context/PDFViewerContext';
2
+ import * as pdfjsLib from "pdfjs-dist";
3
+ export interface OverlayRect {
4
+ page: number;
5
+ x: number;
6
+ y: number;
7
+ width: number;
8
+ height: number;
9
+ }
10
+ interface Params {
11
+ pdf: pdfjsLib.PDFDocumentProxy | null;
12
+ highlight: HighlightRect | null;
13
+ searchMatches: HighlightRect[];
14
+ zoom: number;
15
+ rotation: number;
16
+ }
17
+ export declare function useOverlayRects({ pdf, highlight, searchMatches, zoom, rotation }: Params): {
18
+ overlayRect: OverlayRect | null;
19
+ searchOverlays: OverlayRect[];
20
+ };
21
+ export {};
@@ -0,0 +1,4 @@
1
+ export declare function usePDFLoader(file: File): {
2
+ pdf: import('pdfjs-dist/types/src/display/api').PDFDocumentProxy | null;
3
+ numPages: number;
4
+ };
@@ -0,0 +1,16 @@
1
+ import * as pdfjsLib from "pdfjs-dist";
2
+ interface Params {
3
+ pdf: pdfjsLib.PDFDocumentProxy | null;
4
+ zoom: number;
5
+ rotation: number;
6
+ visiblePages: number[];
7
+ canvasRefs: React.RefObject<(HTMLCanvasElement | null)[]>;
8
+ }
9
+ export declare function usePDFRenderer({ pdf, zoom, rotation, visiblePages, canvasRefs }: Params): {
10
+ pageSizes: {
11
+ width: number;
12
+ height: number;
13
+ }[];
14
+ renderedPages: Set<number>;
15
+ };
16
+ export {};
@@ -5,9 +5,10 @@ interface UseScrollTrackingOptions {
5
5
  zoom: number;
6
6
  rotation: number;
7
7
  containerRef: React.RefObject<HTMLDivElement | null>;
8
+ pageRefs: React.RefObject<(HTMLDivElement | null)[]>;
8
9
  canvasRefs: React.RefObject<(HTMLCanvasElement | null)[]>;
9
10
  }
10
- export declare function useScrollTracking({ pdf, numPages, zoom, rotation, containerRef, canvasRefs, }: UseScrollTrackingOptions): {
11
+ export declare function useScrollTracking({ pdf, numPages, zoom, rotation, containerRef, pageRefs, canvasRefs, }: UseScrollTrackingOptions): {
11
12
  currentPage: number;
12
13
  goToPage: (pageNum: number) => void;
13
14
  };
@@ -3,8 +3,8 @@ interface UseTextLayerOptions {
3
3
  pdf: pdfjsLib.PDFDocumentProxy | null;
4
4
  zoom: number;
5
5
  rotation: number;
6
- numPages: number;
6
+ mountedPages: number[];
7
7
  canvasRefs: React.RefObject<(HTMLCanvasElement | null)[]>;
8
8
  }
9
- export declare function useTextLayer({ pdf, zoom, rotation, numPages, canvasRefs, }: UseTextLayerOptions): React.RefObject<(HTMLDivElement | null)[]>;
9
+ export declare function useTextLayer({ pdf, zoom, rotation, mountedPages, canvasRefs, }: UseTextLayerOptions): React.RefObject<(HTMLDivElement | null)[]>;
10
10
  export {};
@@ -0,0 +1,2 @@
1
+ import { ThemeContextValue } from '../context/themeContextValue';
2
+ export declare function useTheme(): ThemeContextValue;
@@ -2,8 +2,9 @@ import * as pdfjsLib from "pdfjs-dist";
2
2
  interface UseThumbnailsOptions {
3
3
  pdf: pdfjsLib.PDFDocumentProxy | null;
4
4
  rotation: number;
5
+ visiblePages: number[];
5
6
  }
6
- export declare function useThumbnails({ pdf, rotation }: UseThumbnailsOptions): {
7
- thumbnails: string[];
7
+ export declare function useThumbnails({ pdf, rotation, visiblePages }: UseThumbnailsOptions): {
8
+ thumbnails: (string | null)[];
8
9
  };
9
10
  export {};
package/dist/index.d.ts CHANGED
@@ -15,3 +15,4 @@ export { PDFThumbnails } from './components/features/PDFThumbnails';
15
15
  export { PDFZoomControls } from './components/features/PDFZoomControls';
16
16
  export { PDFThemeToggle } from './components/features/PDFThemeToggle';
17
17
  export { PDFPrintButton } from './components/features/PDFPrintButton';
18
+ export { PDFSidebarToggle } from './components/features/PDFSidebarToggle';