pdf-tsx 0.2.0 → 0.3.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 (30) hide show
  1. package/README.md +50 -17
  2. package/dist/cjs/components/PDFViewer.cjs +1 -1
  3. package/dist/cjs/components/features/PDFAnnotations.cjs +1 -1
  4. package/dist/cjs/components/features/PDFAnnotations.module.cjs +1 -1
  5. package/dist/cjs/components/features/PDFPageFit.cjs +1 -1
  6. package/dist/cjs/components/features/PDFPrintButton.cjs +1 -1
  7. package/dist/cjs/components/features/PDFSignatures.cjs +1 -1
  8. package/dist/cjs/components/features/PDFSignatures.module.cjs +1 -1
  9. package/dist/cjs/context/ThemeContext.cjs +1 -1
  10. package/dist/cjs/index.cjs +1 -1
  11. package/dist/cjs/pdf-tsx.css +1 -1
  12. package/dist/cjs/utils/pdfFit.cjs +1 -0
  13. package/dist/components/PDFViewer.d.ts +2 -0
  14. package/dist/components/features/PDFAnnotations.d.ts +4 -0
  15. package/dist/components/features/PDFSignatures.d.ts +4 -0
  16. package/dist/context/ThemeContext.d.ts +2 -1
  17. package/dist/es/components/PDFViewer.js +147 -137
  18. package/dist/es/components/features/PDFAnnotations.js +16 -2
  19. package/dist/es/components/features/PDFAnnotations.module.js +12 -10
  20. package/dist/es/components/features/PDFPageFit.js +24 -34
  21. package/dist/es/components/features/PDFPrintButton.js +2 -2
  22. package/dist/es/components/features/PDFSignatures.js +20 -12
  23. package/dist/es/components/features/PDFSignatures.module.js +16 -14
  24. package/dist/es/context/ThemeContext.js +24 -24
  25. package/dist/es/index.js +14 -14
  26. package/dist/es/pdf-tsx.css +1 -1
  27. package/dist/es/utils/pdfFit.js +13 -0
  28. package/dist/index.d.ts +2 -2
  29. package/dist/utils/pdfFit.d.ts +2 -0
  30. package/package.json +1 -1
package/README.md CHANGED
@@ -83,13 +83,15 @@ The main component. Must wrap all feature components.
83
83
  | `sidebar` | `ReactNode` | no | Content rendered on the left side |
84
84
  | `toolbar` | `ReactNode` | no | Content rendered in the top toolbar |
85
85
  | `onChangeFile` | `(file: File) => void` | no | Called when the user opens a different file |
86
+ | `defaultTheme` | `"light" \| "dark"` | no | Initial theme mode (default: `"light"`) |
86
87
  | `themeOverrides` | `{ light?: Partial<Theme>; dark?: Partial<Theme> }` | no | Override individual theme tokens (see Theming) |
88
+ | `defaultFit` | `"width" \| "page"` | no | Initial zoom mode when a PDF is loaded |
87
89
 
88
90
  ---
89
91
 
90
92
  ## Theming
91
93
 
92
- `PDFViewer` ships with built-in dark and light themes. Use `themeOverrides` to override individual tokens without replacing the whole theme.
94
+ `PDFViewer` ships with built-in light and dark themes. The default is `"light"`. Use `defaultTheme` to set the initial mode and `themeOverrides` to override individual tokens without replacing the whole theme.
93
95
 
94
96
  ```tsx
95
97
  import { PDFViewer, darkTheme } from 'pdf-tsx'
@@ -169,21 +171,47 @@ import { FiImage, FiList } from 'react-icons/fi'
169
171
 
170
172
  All feature components must be rendered inside `<PDFViewer>`. They read and write state via `usePDFViewer()` internally.
171
173
 
172
- | Component | Icon props | Description |
173
- |----------------------|-----------------------------------------------------|------------------------------------------------------|
174
- | `PDFThumbnails` | — | Page thumbnail strip for quick navigation |
175
- | `PDFOutline` | — | Document outline / bookmarks tree |
176
- | `PDFAnnotations` | — | Display PDF annotations |
177
- | `PDFSignatures` | | Display PDF digital signatures |
178
- | `PDFSearch` | `searchIcon` `prevIcon` `nextIcon` `clearIcon` | Full-text search with match highlighting |
179
- | `PDFZoomControls` | `zoomInIcon` `zoomOutIcon` | Zoom in / zoom out buttons with percentage display |
180
- | `PDFPageFit` | `fitWidthIcon` `fitPageIcon` | Fit-to-width and fit-to-page buttons |
181
- | `PDFRotationControl` | `icon` | Rotate page clockwise |
182
- | `PDFNavigation` | `prevIcon` `nextIcon` | Previous / next page buttons with current page input |
183
- | `PDFDownloadButton` | `icon` | Download the current PDF file |
184
- | `PDFChangeFile` | `icon` | Button to open a new PDF file |
185
- | `PDFThemeToggle` | `lightIcon` `darkIcon` | Toggle between dark and light mode |
186
- | `PDFPrintButton` | `icon` | Print the PDF using the browser's native print dialog|
174
+ | Component | Icon props | Description |
175
+ |------------------------|-----------------------------------------------------|------------------------------------------------------|
176
+ | `PDFThumbnails` | — | Page thumbnail strip for quick navigation |
177
+ | `PDFOutline` | — | Document outline / bookmarks tree |
178
+ | `PDFAnnotations` | — | Display PDF annotations |
179
+ | `PDFAnnotationsIcon` | `icon` | Sidebar icon with annotation count badge |
180
+ | `PDFSignatures` | | Display PDF digital signatures |
181
+ | `PDFSignaturesIcon` | `icon` | Sidebar icon with signature count badge |
182
+ | `PDFSearch` | `searchIcon` `prevIcon` `nextIcon` `clearIcon` | Full-text search with match highlighting |
183
+ | `PDFZoomControls` | `zoomInIcon` `zoomOutIcon` | Zoom in / zoom out buttons with percentage display |
184
+ | `PDFPageFit` | `fitWidthIcon` `fitPageIcon` | Fit-to-width and fit-to-page buttons |
185
+ | `PDFRotationControl` | `icon` | Rotate page clockwise |
186
+ | `PDFNavigation` | `prevIcon` `nextIcon` | Previous / next page buttons with current page input |
187
+ | `PDFDownloadButton` | `icon` | Download the current PDF file |
188
+ | `PDFChangeFile` | `icon` | Button to open a new PDF file |
189
+ | `PDFThemeToggle` | `lightIcon` `darkIcon` | Toggle between dark and light mode |
190
+ | `PDFPrintButton` | `icon` | Print the PDF using the browser's native print dialog|
191
+
192
+ ### Count badges
193
+
194
+ `PDFSignaturesIcon` and `PDFAnnotationsIcon` are icon wrapper components intended for use as the `icon` prop in `PDFSidebar` panels. They render the provided icon with a small count badge in the top-right corner, automatically populated from the loaded PDF.
195
+
196
+ ```tsx
197
+ import { PDFSidebar, PDFSignatures, PDFSignaturesIcon, PDFAnnotations, PDFAnnotationsIcon } from 'pdf-tsx'
198
+ import { FiPenTool, FiMessageSquare } from 'react-icons/fi'
199
+
200
+ <PDFSidebar panels={[
201
+ {
202
+ icon: <PDFSignaturesIcon icon={<FiPenTool size={17} />} />,
203
+ label: 'Signatures',
204
+ content: <PDFSignatures />,
205
+ },
206
+ {
207
+ icon: <PDFAnnotationsIcon icon={<FiMessageSquare size={17} />} />,
208
+ label: 'Annotations',
209
+ content: <PDFAnnotations />,
210
+ },
211
+ ]} />
212
+ ```
213
+
214
+ The badge uses `var(--pdf-accent)` and respects `themeOverrides`.
187
215
 
188
216
  ---
189
217
 
@@ -196,9 +224,12 @@ import {
196
224
  PDFZoomControls, PDFPageFit, PDFRotationControl,
197
225
  PDFNavigation, PDFDownloadButton, PDFChangeFile,
198
226
  PDFThemeToggle, PDFPrintButton,
227
+ PDFSignatures, PDFSignaturesIcon,
228
+ PDFAnnotations, PDFAnnotationsIcon,
199
229
  } from 'pdf-tsx'
200
230
  import {
201
- FiImage, FiList, FiSearch, FiChevronUp, FiChevronDown, FiX,
231
+ FiImage, FiList, FiPenTool, FiMessageSquare,
232
+ FiSearch, FiChevronUp, FiChevronDown, FiX,
202
233
  FiZoomIn, FiZoomOut, FiAlignJustify, FiMaximize2, FiRotateCw,
203
234
  FiChevronLeft, FiChevronRight, FiDownload, FiFolderPlus,
204
235
  FiPrinter, FiSun, FiMoon,
@@ -230,6 +261,8 @@ function App() {
230
261
  <PDFSidebar panels={[
231
262
  { icon: <FiImage size={18} />, label: 'Thumbnails', content: <PDFThumbnails /> },
232
263
  { icon: <FiList size={18} />, label: 'Outline', content: <PDFOutline /> },
264
+ { icon: <PDFSignaturesIcon icon={<FiPenTool size={17} />} />, label: 'Signatures', content: <PDFSignatures /> },
265
+ { icon: <PDFAnnotationsIcon icon={<FiMessageSquare size={17} />} />, label: 'Annotations', content: <PDFAnnotations /> },
233
266
  ]} />
234
267
  }
235
268
  toolbar={
@@ -1 +1 @@
1
- const e=require(`../_virtual/_rolldown/runtime.cjs`),t=require(`../context/PDFViewerContext.cjs`),n=require(`../hooks/useScrollTracking.cjs`),r=require(`../hooks/useKeyboardShortcuts.cjs`),i=require(`../hooks/useTextLayer.cjs`),a=require(`../utils/url.cjs`),o=require(`../hooks/useAnnotationLayer.cjs`),s=require(`../context/ThemeContext.cjs`),c=require(`./PDFViewer.module.cjs`);let l=require(`react`);l=e.__toESM(l,1);let u=require(`pdfjs-dist`);u=e.__toESM(u,1);let d=require(`react/jsx-runtime`);var f=({file:e,workerSrc:f,sidebar:p,toolbar:m,onChangeFile:h,themeOverrides:g})=>{(0,l.useEffect)(()=>{u.GlobalWorkerOptions.workerSrc=f},[f]);let[_,v]=(0,l.useState)(null),[y,b]=(0,l.useState)(0),[x,S]=(0,l.useState)(1),[C,w]=(0,l.useState)(0),[T,E]=(0,l.useState)(null),[D,O]=(0,l.useState)(null),[k,A]=(0,l.useState)([]),[j,M]=(0,l.useState)(new Set),[N,P]=(0,l.useState)([]),F=(0,l.useRef)(null),I=(0,l.useRef)([]),L=(0,l.useRef)([]),{currentPage:R,goToPage:z}=n.useScrollTracking({pdf:_,numPages:y,zoom:x,rotation:C,containerRef:F,canvasRefs:I});r.useKeyboardShortcuts({pdf:_,currentPage:R,numPages:y,goToPage:z,setZoom:S,setRotation:w});let B=i.useTextLayer({pdf:_,zoom:x,rotation:C,numPages:y,canvasRefs:I}),V=o.useAnnotationLayer({pdf:_,zoom:x,rotation:C,numPages:y,goToPage:z});(0,l.useEffect)(()=>{(async()=>{let t=new FileReader;t.onload=async e=>{let t=new Uint8Array(e.target?.result);try{let e=await u.getDocument(t).promise;v(e),b(e.numPages),E(null),O(null),M(new Set),P([]),I.current=Array(e.numPages).fill(null),L.current=Array(e.numPages).fill(null)}catch(e){console.error(`Errore caricamento:`,e)}},t.readAsArrayBuffer(e)})()},[e]),(0,l.useEffect)(()=>{if(!_)return;M(new Set);let e=!1;return(async()=>{let t=L.current.map(e=>e?(e.cancel(),e.promise.catch(()=>{})):Promise.resolve());if(await Promise.all(t),L.current=Array(_.numPages).fill(null),e)return;let n=[];for(let e=1;e<=_.numPages;e++){let t=(await _.getPage(e)).getViewport({scale:x,rotation:C});n.push({width:t.width,height:t.height})}if(!e){P(n);for(let t=1;t<=_.numPages;t++){if(e)return;let n=await _.getPage(t),r=n.getViewport({scale:x,rotation:C}),i=I.current[t-1];if(i){let a=i.getContext(`2d`);if(a){i.height=r.height,i.width=r.width;let o=n.render({canvasContext:a,viewport:r,canvas:i});L.current[t-1]=o;try{await o.promise,e||M(e=>new Set(e).add(t))}catch(e){e&&typeof e==`object`&&`name`in e&&e.name!==`RenderingCancelledException`&&console.error(`Render error:`,e)}}}}}})(),()=>{e=!0,L.current.forEach(e=>e?.cancel())}},[_,x,C]);let[H,U]=(0,l.useState)([]);return(0,l.useEffect)(()=>{if(!_||k.length===0){U([]);return}let e=!1;return(async()=>{let t=[];for(let n of k){if(e)break;let[r,i,a,o]=(await _.getPage(n.page)).getViewport({scale:x,rotation:C}).convertToViewportRectangle(n.pdfRect);t.push({page:n.page,x:Math.min(r,a),y:Math.min(i,o),width:Math.abs(a-r),height:Math.abs(o-i)})}e||U(t)})(),()=>{e=!0}},[k,x,C,_]),(0,l.useEffect)(()=>{if(!T||!_)return;let e=!1;return(async()=>{let[t,n,r,i]=(await _.getPage(T.page)).getViewport({scale:x,rotation:C}).convertToViewportRectangle(T.pdfRect);e||O({page:T.page,x:Math.min(t,r),y:Math.min(n,i),width:Math.abs(r-t),height:Math.abs(i-n)})})(),()=>{e=!0}},[T,x,C,_]),(0,d.jsx)(s.ThemeProvider,{themeOverrides:g,children:(0,d.jsx)(t.PDFViewerContext.Provider,{value:{pdf:_,numPages:y,zoom:x,setZoom:S,rotation:C,setRotation:w,currentPage:R,goToPage:z,containerRef:F,canvasRefs:I,file:e,highlight:T,setHighlight:E,searchMatches:k,setSearchMatches:A,onChangeFile:h},children:(0,d.jsxs)(`div`,{className:c.default.appLayout,children:[p,(0,d.jsxs)(`div`,{className:c.default.mainContent,children:[m&&(0,d.jsx)(`div`,{className:c.default.toolbar,children:m}),(0,d.jsx)(`div`,{className:c.default.scrollContainer,ref:F,children:Array.from({length:y},(e,t)=>{let n=j.has(t+1),r=N[t];return(0,d.jsxs)(`div`,{className:c.default.pageWrapper,children:[!n&&r&&(0,d.jsx)(`div`,{className:c.default.pageSkeleton,style:{width:r.width,height:r.height}}),(0,d.jsx)(`canvas`,{className:c.default.pageCanvas,ref:e=>{I.current[t]=e},style:{display:n?`block`:`none`}}),(0,d.jsx)(`div`,{className:`textLayer ${c.default.textLayer}`,ref:e=>{B.current[t]=e}}),V.filter(e=>e.page===t+1).map((e,t)=>(0,d.jsx)(`a`,{className:c.default.linkOverlay,href:e.url&&a.isSafeUrl(e.url)?e.url:`#`,target:`_blank`,rel:`noopener noreferrer`,style:{left:e.x,top:e.y,width:e.width,height:e.height},onClick:t=>{(!e.url||!a.isSafeUrl(e.url))&&(t.preventDefault(),e.url||e._handleClick())}},t)),H.filter(e=>e.page===t+1).map((e,t)=>(0,d.jsx)(`div`,{className:c.default.searchMatchOverlay,style:{left:e.x,top:e.y,width:e.width,height:e.height}},t)),T&&D?.page===t+1&&(0,d.jsx)(`div`,{className:c.default.highlightOverlay,style:{left:D.x,top:D.y,width:D.width,height:D.height}})]},`${t}-${C}`)})})]})]})})})};exports.default=f;
1
+ const e=require(`../_virtual/_rolldown/runtime.cjs`),t=require(`../context/PDFViewerContext.cjs`),n=require(`../hooks/useScrollTracking.cjs`),r=require(`../hooks/useKeyboardShortcuts.cjs`),i=require(`../hooks/useTextLayer.cjs`),a=require(`../utils/url.cjs`),o=require(`../hooks/useAnnotationLayer.cjs`),s=require(`../utils/pdfFit.cjs`),c=require(`../context/ThemeContext.cjs`),l=require(`./PDFViewer.module.cjs`);let u=require(`react`);u=e.__toESM(u,1);let d=require(`pdfjs-dist`);d=e.__toESM(d,1);let f=require(`react/jsx-runtime`);var p=({file:e,workerSrc:p,sidebar:m,toolbar:h,onChangeFile:g,themeOverrides:_,defaultTheme:v,defaultFit:y})=>{(0,u.useEffect)(()=>{d.GlobalWorkerOptions.workerSrc=p},[p]);let[b,x]=(0,u.useState)(null),[S,C]=(0,u.useState)(0),[w,T]=(0,u.useState)(1),[E,D]=(0,u.useState)(0),[O,k]=(0,u.useState)(null),[A,j]=(0,u.useState)(null),[M,N]=(0,u.useState)([]),[P,F]=(0,u.useState)(new Set),[I,L]=(0,u.useState)([]),R=(0,u.useRef)(null),z=(0,u.useRef)([]),B=(0,u.useRef)([]),V=(0,u.useRef)(E);(0,u.useEffect)(()=>{V.current=E},[E]),(0,u.useEffect)(()=>{if(!b||!y||!R.current)return;let e=R.current;s.computeFit(y,b,e,V.current).then(T)},[b,y]);let{currentPage:H,goToPage:U}=n.useScrollTracking({pdf:b,numPages:S,zoom:w,rotation:E,containerRef:R,canvasRefs:z});r.useKeyboardShortcuts({pdf:b,currentPage:H,numPages:S,goToPage:U,setZoom:T,setRotation:D});let W=i.useTextLayer({pdf:b,zoom:w,rotation:E,numPages:S,canvasRefs:z}),G=o.useAnnotationLayer({pdf:b,zoom:w,rotation:E,numPages:S,goToPage:U});(0,u.useEffect)(()=>{(async()=>{let t=new FileReader;t.onload=async e=>{let t=new Uint8Array(e.target?.result);try{let e=await d.getDocument(t).promise;x(e),C(e.numPages),k(null),j(null),F(new Set),L([]),z.current=Array(e.numPages).fill(null),B.current=Array(e.numPages).fill(null)}catch(e){console.error(`Errore caricamento:`,e)}},t.readAsArrayBuffer(e)})()},[e]),(0,u.useEffect)(()=>{if(!b)return;F(new Set);let e=!1;return(async()=>{let t=B.current.map(e=>e?(e.cancel(),e.promise.catch(()=>{})):Promise.resolve());if(await Promise.all(t),B.current=Array(b.numPages).fill(null),e)return;let n=[];for(let e=1;e<=b.numPages;e++){let t=(await b.getPage(e)).getViewport({scale:w,rotation:E});n.push({width:t.width,height:t.height})}if(!e){L(n);for(let t=1;t<=b.numPages;t++){if(e)return;let n=await b.getPage(t),r=n.getViewport({scale:w,rotation:E}),i=z.current[t-1];if(i){let a=i.getContext(`2d`);if(a){i.height=r.height,i.width=r.width;let o=n.render({canvasContext:a,viewport:r,canvas:i});B.current[t-1]=o;try{await o.promise,e||F(e=>new Set(e).add(t))}catch(e){e&&typeof e==`object`&&`name`in e&&e.name!==`RenderingCancelledException`&&console.error(`Render error:`,e)}}}}}})(),()=>{e=!0,B.current.forEach(e=>e?.cancel())}},[b,w,E]);let[K,q]=(0,u.useState)([]);return(0,u.useEffect)(()=>{if(!b||M.length===0){q([]);return}let e=!1;return(async()=>{let t=[];for(let n of M){if(e)break;let[r,i,a,o]=(await b.getPage(n.page)).getViewport({scale:w,rotation:E}).convertToViewportRectangle(n.pdfRect);t.push({page:n.page,x:Math.min(r,a),y:Math.min(i,o),width:Math.abs(a-r),height:Math.abs(o-i)})}e||q(t)})(),()=>{e=!0}},[M,w,E,b]),(0,u.useEffect)(()=>{if(!O||!b)return;let e=!1;return(async()=>{let[t,n,r,i]=(await b.getPage(O.page)).getViewport({scale:w,rotation:E}).convertToViewportRectangle(O.pdfRect);e||j({page:O.page,x:Math.min(t,r),y:Math.min(n,i),width:Math.abs(r-t),height:Math.abs(i-n)})})(),()=>{e=!0}},[O,w,E,b]),(0,f.jsx)(c.ThemeProvider,{themeOverrides:_,defaultTheme:v,children:(0,f.jsx)(t.PDFViewerContext.Provider,{value:{pdf:b,numPages:S,zoom:w,setZoom:T,rotation:E,setRotation:D,currentPage:H,goToPage:U,containerRef:R,canvasRefs:z,file:e,highlight:O,setHighlight:k,searchMatches:M,setSearchMatches:N,onChangeFile:g},children:(0,f.jsxs)(`div`,{className:l.default.appLayout,children:[m,(0,f.jsxs)(`div`,{className:l.default.mainContent,children:[h&&(0,f.jsx)(`div`,{className:l.default.toolbar,children:h}),(0,f.jsx)(`div`,{className:l.default.scrollContainer,ref:R,children:Array.from({length:S},(e,t)=>{let n=P.has(t+1),r=I[t];return(0,f.jsxs)(`div`,{className:l.default.pageWrapper,children:[!n&&r&&(0,f.jsx)(`div`,{className:l.default.pageSkeleton,style:{width:r.width,height:r.height}}),(0,f.jsx)(`canvas`,{className:l.default.pageCanvas,ref:e=>{z.current[t]=e},style:{display:n?`block`:`none`}}),(0,f.jsx)(`div`,{className:`textLayer ${l.default.textLayer}`,ref:e=>{W.current[t]=e}}),G.filter(e=>e.page===t+1).map((e,t)=>(0,f.jsx)(`a`,{className:l.default.linkOverlay,href:e.url&&a.isSafeUrl(e.url)?e.url:`#`,target:`_blank`,rel:`noopener noreferrer`,style:{left:e.x,top:e.y,width:e.width,height:e.height},onClick:t=>{(!e.url||!a.isSafeUrl(e.url))&&(t.preventDefault(),e.url||e._handleClick())}},t)),K.filter(e=>e.page===t+1).map((e,t)=>(0,f.jsx)(`div`,{className:l.default.searchMatchOverlay,style:{left:e.x,top:e.y,width:e.width,height:e.height}},t)),O&&A?.page===t+1&&(0,f.jsx)(`div`,{className:l.default.highlightOverlay,style:{left:A.x,top:A.y,width:A.width,height:A.height}})]},`${t}-${E}`)})})]})]})})})};exports.default=p;
@@ -1 +1 @@
1
- require(`../../_virtual/_rolldown/runtime.cjs`);const e=require(`../../context/PDFViewerContext.cjs`),t=require(`../../hooks/useAnnotations.cjs`),n=require(`./PDFAnnotations.module.cjs`);let r=require(`react/compiler-runtime`),i=require(`react/jsx-runtime`);var a={Text:`Nota`,Highlight:`Evidenziazione`,Underline:`Sottolineatura`,StrikeOut:`Barrato`,FreeText:`Testo libero`,Ink:`Disegno`,Square:`Rettangolo`,Circle:`Cerchio`,Line:`Linea`,Stamp:`Timbro`,FileAttachment:`Allegato`};function o(e){return e?`rgb(${e.r}, ${e.g}, ${e.b})`:`#d4d4d8`}function s(e){let t=(0,r.c)(22),{ann:s,onClick:c}=e,l=a[s.subtype]??s.subtype,u=`${n.default.card} ${s.rect?n.default.cardClickable:``}`,d;t[0]===s.color?d=t[1]:(d=o(s.color),t[0]=s.color,t[1]=d);let f=`3px solid ${d}`,p;t[2]===f?p=t[3]:(p={borderLeft:f},t[2]=f,t[3]=p);let m;t[4]===l?m=t[5]:(m=(0,i.jsx)(`span`,{className:n.default.cardLabel,children:l}),t[4]=l,t[5]=m);let h;t[6]===s.page?h=t[7]:(h=(0,i.jsxs)(`span`,{className:n.default.cardPage,children:[`p.`,s.page]}),t[6]=s.page,t[7]=h);let g;t[8]!==m||t[9]!==h?(g=(0,i.jsxs)(`div`,{className:n.default.cardHeader,children:[m,h]}),t[8]=m,t[9]=h,t[10]=g):g=t[10];let _;t[11]===s.title?_=t[12]:(_=s.title&&(0,i.jsx)(`div`,{className:n.default.cardAuthor,children:s.title}),t[11]=s.title,t[12]=_);let v;t[13]===s.contents?v=t[14]:(v=s.contents&&(0,i.jsx)(`div`,{className:n.default.cardContent,children:s.contents}),t[13]=s.contents,t[14]=v);let y;return t[15]!==c||t[16]!==u||t[17]!==p||t[18]!==g||t[19]!==_||t[20]!==v?(y=(0,i.jsxs)(`div`,{className:u,style:p,onClick:c,children:[g,_,v]}),t[15]=c,t[16]=u,t[17]=p,t[18]=g,t[19]=_,t[20]=v,t[21]=y):y=t[21],y}function c(){let{pdf:r,goToPage:a,setHighlight:o}=e.usePDFViewer(),{annotations:c,loading:l}=t.useAnnotations({pdf:r}),u=e=>{a(e.page),e.rect&&o({page:e.page,pdfRect:e.rect})},d=c.reduce((e,t)=>((e[t.page]??=[]).push(t),e),{});return(0,i.jsxs)(`div`,{className:n.default.list,children:[l&&(0,i.jsx)(`div`,{className:n.default.emptyState,children:`Caricamento...`}),!l&&c.length===0&&(0,i.jsx)(`div`,{className:n.default.emptyState,children:`Nessuna annotazione rilevata.`}),!l&&Object.entries(d).map(([e,t])=>(0,i.jsxs)(`div`,{children:[(0,i.jsxs)(`div`,{className:n.default.pageHeader,children:[`Pagina `,e]}),t.map(e=>(0,i.jsx)(s,{ann:e,onClick:()=>u(e)},e.id))]},e))]})}exports.PDFAnnotations=c;
1
+ require(`../../_virtual/_rolldown/runtime.cjs`);const e=require(`../../context/PDFViewerContext.cjs`),t=require(`../../hooks/useAnnotations.cjs`),n=require(`./PDFAnnotations.module.cjs`);let r=require(`react/compiler-runtime`),i=require(`react/jsx-runtime`);var a={Text:`Nota`,Highlight:`Evidenziazione`,Underline:`Sottolineatura`,StrikeOut:`Barrato`,FreeText:`Testo libero`,Ink:`Disegno`,Square:`Rettangolo`,Circle:`Cerchio`,Line:`Linea`,Stamp:`Timbro`,FileAttachment:`Allegato`};function o(e){return e?`rgb(${e.r}, ${e.g}, ${e.b})`:`#d4d4d8`}function s(e){let t=(0,r.c)(22),{ann:s,onClick:c}=e,l=a[s.subtype]??s.subtype,u=`${n.default.card} ${s.rect?n.default.cardClickable:``}`,d;t[0]===s.color?d=t[1]:(d=o(s.color),t[0]=s.color,t[1]=d);let f=`3px solid ${d}`,p;t[2]===f?p=t[3]:(p={borderLeft:f},t[2]=f,t[3]=p);let m;t[4]===l?m=t[5]:(m=(0,i.jsx)(`span`,{className:n.default.cardLabel,children:l}),t[4]=l,t[5]=m);let h;t[6]===s.page?h=t[7]:(h=(0,i.jsxs)(`span`,{className:n.default.cardPage,children:[`p.`,s.page]}),t[6]=s.page,t[7]=h);let g;t[8]!==m||t[9]!==h?(g=(0,i.jsxs)(`div`,{className:n.default.cardHeader,children:[m,h]}),t[8]=m,t[9]=h,t[10]=g):g=t[10];let _;t[11]===s.title?_=t[12]:(_=s.title&&(0,i.jsx)(`div`,{className:n.default.cardAuthor,children:s.title}),t[11]=s.title,t[12]=_);let v;t[13]===s.contents?v=t[14]:(v=s.contents&&(0,i.jsx)(`div`,{className:n.default.cardContent,children:s.contents}),t[13]=s.contents,t[14]=v);let y;return t[15]!==c||t[16]!==u||t[17]!==p||t[18]!==g||t[19]!==_||t[20]!==v?(y=(0,i.jsxs)(`div`,{className:u,style:p,onClick:c,children:[g,_,v]}),t[15]=c,t[16]=u,t[17]=p,t[18]=g,t[19]=_,t[20]=v,t[21]=y):y=t[21],y}function c(a){let o=(0,r.c)(8),{icon:s}=a,{pdf:c}=e.usePDFViewer(),l;o[0]===c?l=o[1]:(l={pdf:c},o[0]=c,o[1]=l);let{annotations:u,loading:d}=t.useAnnotations(l),f=u.length,p;o[2]!==f||o[3]!==d?(p=!d&&f>0&&(0,i.jsx)(`span`,{className:n.default.badge,children:f>99?`99+`:f}),o[2]=f,o[3]=d,o[4]=p):p=o[4];let m;return o[5]!==s||o[6]!==p?(m=(0,i.jsxs)(`span`,{className:n.default.iconWrapper,children:[s,p]}),o[5]=s,o[6]=p,o[7]=m):m=o[7],m}function l(){let{pdf:r,goToPage:a,setHighlight:o}=e.usePDFViewer(),{annotations:c,loading:l}=t.useAnnotations({pdf:r}),u=e=>{a(e.page),e.rect&&o({page:e.page,pdfRect:e.rect})},d=c.reduce((e,t)=>((e[t.page]??=[]).push(t),e),{});return(0,i.jsxs)(`div`,{className:n.default.list,children:[l&&(0,i.jsx)(`div`,{className:n.default.emptyState,children:`Caricamento...`}),!l&&c.length===0&&(0,i.jsx)(`div`,{className:n.default.emptyState,children:`Nessuna annotazione rilevata.`}),!l&&Object.entries(d).map(([e,t])=>(0,i.jsxs)(`div`,{children:[(0,i.jsxs)(`div`,{className:n.default.pageHeader,children:[`Pagina `,e]}),t.map(e=>(0,i.jsx)(s,{ann:e,onClick:()=>u(e)},e.id))]},e))]})}exports.PDFAnnotations=l,exports.PDFAnnotationsIcon=c;
@@ -1 +1 @@
1
- var e={list:`_list_173qc_1`,emptyState:`_emptyState_173qc_11`,pageHeader:`_pageHeader_173qc_23`,card:`_card_173qc_45`,cardClickable:`_cardClickable_173qc_65`,cardHeader:`_cardHeader_173qc_81`,cardLabel:`_cardLabel_173qc_95`,cardPage:`_cardPage_173qc_107`,cardAuthor:`_cardAuthor_173qc_117`,cardContent:`_cardContent_173qc_129`};exports.default=e;
1
+ var e={list:`_list_10scn_1`,emptyState:`_emptyState_10scn_11`,pageHeader:`_pageHeader_10scn_23`,card:`_card_10scn_45`,cardClickable:`_cardClickable_10scn_65`,cardHeader:`_cardHeader_10scn_81`,cardLabel:`_cardLabel_10scn_95`,cardPage:`_cardPage_10scn_107`,cardAuthor:`_cardAuthor_10scn_117`,cardContent:`_cardContent_10scn_129`,iconWrapper:`_iconWrapper_10scn_141`,badge:`_badge_10scn_155`};exports.default=e;
@@ -1 +1 @@
1
- const e=require(`../../_virtual/_rolldown/runtime.cjs`),t=require(`../../context/PDFViewerContext.cjs`),n=require(`../ui/ToolbarButton.cjs`);let r=require(`react`);r=e.__toESM(r,1);let i=require(`react/compiler-runtime`),a=require(`react/jsx-runtime`);var o=60,s=10;function c(e){let r=(0,i.c)(19),{fitWidthIcon:c,fitPageIcon:l}=e,{pdf:u,rotation:d,setZoom:f,containerRef:p}=t.usePDFViewer(),m;r[0]!==p||r[1]!==u||r[2]!==d||r[3]!==f?(m=async()=>{if(!u||!p.current)return;let e=(await u.getPage(1)).getViewport({scale:1,rotation:d});f((p.current.clientWidth-o)/e.width)},r[0]=p,r[1]=u,r[2]=d,r[3]=f,r[4]=m):m=r[4];let h=m,g;r[5]!==p||r[6]!==u||r[7]!==d||r[8]!==f?(g=async()=>{if(!u||!p.current)return;let e=(await u.getPage(1)).getViewport({scale:1,rotation:d}),t=p.current.clientWidth-o,n=p.current.clientHeight-s*2;f(Math.min(t/e.width,n/e.height))},r[5]=p,r[6]=u,r[7]=d,r[8]=f,r[9]=g):g=r[9];let _=g,v;r[10]!==c||r[11]!==h?(v=(0,a.jsx)(n.ToolbarButton,{onClick:h,title:`Adatta alla larghezza`,children:c}),r[10]=c,r[11]=h,r[12]=v):v=r[12];let y;r[13]!==l||r[14]!==_?(y=(0,a.jsx)(n.ToolbarButton,{onClick:_,title:`Adatta pagina intera`,children:l}),r[13]=l,r[14]=_,r[15]=y):y=r[15];let b;return r[16]!==v||r[17]!==y?(b=(0,a.jsxs)(a.Fragment,{children:[v,y]}),r[16]=v,r[17]=y,r[18]=b):b=r[18],b}exports.PDFPageFit=c;
1
+ const e=require(`../../_virtual/_rolldown/runtime.cjs`),t=require(`../../context/PDFViewerContext.cjs`),n=require(`../../utils/pdfFit.cjs`),r=require(`../ui/ToolbarButton.cjs`);let i=require(`react`);i=e.__toESM(i,1);let a=require(`react/compiler-runtime`),o=require(`react/jsx-runtime`);function s(e){let i=(0,a.c)(18),{fitWidthIcon:s,fitPageIcon:c}=e,{pdf:l,rotation:u,setZoom:d,containerRef:f}=t.usePDFViewer(),p;i[0]!==f||i[1]!==l||i[2]!==u||i[3]!==d?(p=async e=>{!l||!f.current||d(await n.computeFit(e,l,f.current,u))},i[0]=f,i[1]=l,i[2]=u,i[3]=d,i[4]=p):p=i[4];let m=p,h;i[5]===m?h=i[6]:(h=()=>m(`width`),i[5]=m,i[6]=h);let g;i[7]!==s||i[8]!==h?(g=(0,o.jsx)(r.ToolbarButton,{onClick:h,title:`Adatta alla larghezza`,children:s}),i[7]=s,i[8]=h,i[9]=g):g=i[9];let _;i[10]===m?_=i[11]:(_=()=>m(`page`),i[10]=m,i[11]=_);let v;i[12]!==c||i[13]!==_?(v=(0,o.jsx)(r.ToolbarButton,{onClick:_,title:`Adatta pagina intera`,children:c}),i[12]=c,i[13]=_,i[14]=v):v=i[14];let y;return i[15]!==g||i[16]!==v?(y=(0,o.jsxs)(o.Fragment,{children:[g,v]}),i[15]=g,i[16]=v,i[17]=y):y=i[17],y}exports.PDFPageFit=s;
@@ -1 +1 @@
1
- const e=require(`../../_virtual/_rolldown/runtime.cjs`),t=require(`../../context/PDFViewerContext.cjs`),n=require(`../ui/ToolbarButton.cjs`);let r=require(`react`);r=e.__toESM(r,1);let i=require(`react/compiler-runtime`),a=require(`react/jsx-runtime`);function o(e){let r=(0,i.c)(5),{icon:o}=e,{file:s}=t.usePDFViewer(),c;r[0]===s?c=r[1]:(c=()=>{let e=URL.createObjectURL(s),t=document.createElement(`iframe`);t.style.display=`none`,t.src=e,document.body.appendChild(t),t.onload=()=>{t.contentWindow?.print(),setTimeout(()=>{document.body.removeChild(t),URL.revokeObjectURL(e)},1e3)}},r[0]=s,r[1]=c);let l=c,u;return r[2]!==l||r[3]!==o?(u=(0,a.jsx)(n.ToolbarButton,{onClick:l,title:`Stampa PDF`,children:o}),r[2]=l,r[3]=o,r[4]=u):u=r[4],u}exports.PDFPrintButton=o;
1
+ const e=require(`../../_virtual/_rolldown/runtime.cjs`),t=require(`../../context/PDFViewerContext.cjs`),n=require(`../ui/ToolbarButton.cjs`);let r=require(`react`);r=e.__toESM(r,1);let i=require(`react/compiler-runtime`),a=require(`react/jsx-runtime`);function o(e){let r=(0,i.c)(5),{icon:o}=e,{file:s}=t.usePDFViewer(),c;r[0]===s?c=r[1]:(c=()=>{let e=URL.createObjectURL(s),t=document.createElement(`iframe`);t.style.display=`none`,t.src=e,document.body.appendChild(t),t.onload=()=>{t.contentWindow?.addEventListener(`afterprint`,()=>{document.body.removeChild(t),URL.revokeObjectURL(e)},{once:!0}),t.contentWindow?.print()}},r[0]=s,r[1]=c);let l=c,u;return r[2]!==l||r[3]!==o?(u=(0,a.jsx)(n.ToolbarButton,{onClick:l,title:`Stampa PDF`,children:o}),r[2]=l,r[3]=o,r[4]=u):u=r[4],u}exports.PDFPrintButton=o;
@@ -1 +1 @@
1
- require(`../../_virtual/_rolldown/runtime.cjs`);const e=require(`../../context/PDFViewerContext.cjs`),t=require(`../../hooks/useSignatures.cjs`),n=require(`./PDFSignatures.module.cjs`);let r=require(`react/compiler-runtime`),i=require(`react/jsx-runtime`);function a(e){if(!e)return;let t=e.match(/D:(\d{4})(\d{2})(\d{2})(\d{2})?(\d{2})?(\d{2})?/);if(!t)return e;let[,n,r,i,a=`00`,o=`00`]=t;return`${i}/${r}/${n} ${a}:${o}`}function o(e){let t=(0,r.c)(31),{sig:o,onClick:s}=e,c=`${n.default.card} ${o.signed?n.default.cardSigned:``} ${o.rect?n.default.cardClickable:``}`,l=`${n.default.statusDot} ${o.signed?n.default.statusDotSigned:``}`,u=o.signed?`✓`:`○`,d;t[0]!==l||t[1]!==u?(d=(0,i.jsx)(`div`,{className:l,children:u}),t[0]=l,t[1]=u,t[2]=d):d=t[2];let f=`${n.default.statusLabel} ${o.signed?n.default.statusLabelSigned:``}`,p=o.signed?`Firmato`:`Non firmato`,m;t[3]!==f||t[4]!==p?(m=(0,i.jsx)(`span`,{className:f,children:p}),t[3]=f,t[4]=p,t[5]=m):m=t[5];let h;t[6]!==d||t[7]!==m?(h=(0,i.jsxs)(`div`,{className:n.default.cardHeader,children:[d,m]}),t[6]=d,t[7]=m,t[8]=h):h=t[8];let g;t[9]===Symbol.for(`react.memo_cache_sentinel`)?(g=(0,i.jsx)(`span`,{className:n.default.fieldLabel,children:`Campo: `}),t[9]=g):g=t[9];let _;t[10]===o.fieldName?_=t[11]:(_=(0,i.jsxs)(`div`,{className:n.default.fieldRow,children:[g,o.fieldName]}),t[10]=o.fieldName,t[11]=_);let v;t[12]===o.signerName?v=t[13]:(v=o.signerName&&(0,i.jsxs)(`div`,{className:n.default.fieldRow,children:[(0,i.jsx)(`span`,{className:n.default.fieldLabel,children:`Firmatario: `}),o.signerName]}),t[12]=o.signerName,t[13]=v);let y;t[14]===o.signDate?y=t[15]:(y=o.signDate&&(0,i.jsxs)(`div`,{className:n.default.fieldRow,children:[(0,i.jsx)(`span`,{className:n.default.fieldLabel,children:`Data: `}),a(o.signDate)]}),t[14]=o.signDate,t[15]=y);let b;t[16]===o.reason?b=t[17]:(b=o.reason&&(0,i.jsxs)(`div`,{className:n.default.fieldRow,children:[(0,i.jsx)(`span`,{className:n.default.fieldLabel,children:`Motivo: `}),o.reason]}),t[16]=o.reason,t[17]=b);let x;t[18]===o.location?x=t[19]:(x=o.location&&(0,i.jsxs)(`div`,{className:n.default.fieldRow,children:[(0,i.jsx)(`span`,{className:n.default.fieldLabel,children:`Luogo: `}),o.location]}),t[18]=o.location,t[19]=x);let S;t[20]!==_||t[21]!==v||t[22]!==y||t[23]!==b||t[24]!==x?(S=(0,i.jsxs)(`div`,{className:n.default.fieldList,children:[_,v,y,b,x]}),t[20]=_,t[21]=v,t[22]=y,t[23]=b,t[24]=x,t[25]=S):S=t[25];let C;return t[26]!==s||t[27]!==c||t[28]!==S||t[29]!==h?(C=(0,i.jsxs)(`div`,{className:c,onClick:s,children:[h,S]}),t[26]=s,t[27]=c,t[28]=S,t[29]=h,t[30]=C):C=t[30],C}function s(){let a=(0,r.c)(22),{pdf:s,goToPage:c,setHighlight:l}=e.usePDFViewer(),u;a[0]===s?u=a[1]:(u={pdf:s},a[0]=s,a[1]=u);let{signatures:d,loading:f}=t.useSignatures(u),p;a[2]!==c||a[3]!==l?(p=e=>{c(e.page),e.rect&&l({page:e.page,pdfRect:e.rect})},a[2]=c,a[3]=l,a[4]=p):p=a[4];let m=p,h;a[5]===f?h=a[6]:(h=f&&(0,i.jsx)(`div`,{className:n.default.emptyState,children:`Caricamento...`}),a[5]=f,a[6]=h);let g;a[7]!==f||a[8]!==d?(g=!f&&d.length===0&&(0,i.jsx)(`div`,{className:n.default.emptyState,children:`Nessuna firma rilevata.`}),a[7]=f,a[8]=d,a[9]=g):g=a[9];let _;a[10]!==m||a[11]!==f||a[12]!==d?(_=!f&&d.map((e,t)=>(0,i.jsx)(o,{sig:e,onClick:()=>m(e)},t)),a[10]=m,a[11]=f,a[12]=d,a[13]=_):_=a[13];let v;a[14]!==f||a[15]!==d?(v=!f&&d.length>0&&(0,i.jsx)(`div`,{className:n.default.disclaimer,children:`La presenza del campo firma non garantisce la validità crittografica.`}),a[14]=f,a[15]=d,a[16]=v):v=a[16];let y;return a[17]!==h||a[18]!==g||a[19]!==_||a[20]!==v?(y=(0,i.jsxs)(`div`,{className:n.default.list,children:[h,g,_,v]}),a[17]=h,a[18]=g,a[19]=_,a[20]=v,a[21]=y):y=a[21],y}exports.PDFSignatures=s;
1
+ require(`../../_virtual/_rolldown/runtime.cjs`);const e=require(`../../context/PDFViewerContext.cjs`),t=require(`../../hooks/useSignatures.cjs`),n=require(`./PDFSignatures.module.cjs`);let r=require(`react/compiler-runtime`),i=require(`react/jsx-runtime`);function a(e){if(!e)return;let t=e.match(/D:(\d{4})(\d{2})(\d{2})(\d{2})?(\d{2})?(\d{2})?/);if(!t)return e;let[,n,r,i,a=`00`,o=`00`]=t;return`${i}/${r}/${n} ${a}:${o}`}function o(e){let t=(0,r.c)(31),{sig:o,onClick:s}=e,c=`${n.default.card} ${o.signed?n.default.cardSigned:``} ${o.rect?n.default.cardClickable:``}`,l=`${n.default.statusDot} ${o.signed?n.default.statusDotSigned:``}`,u=o.signed?`✓`:`○`,d;t[0]!==l||t[1]!==u?(d=(0,i.jsx)(`div`,{className:l,children:u}),t[0]=l,t[1]=u,t[2]=d):d=t[2];let f=`${n.default.statusLabel} ${o.signed?n.default.statusLabelSigned:``}`,p=o.signed?`Firmato`:`Non firmato`,m;t[3]!==f||t[4]!==p?(m=(0,i.jsx)(`span`,{className:f,children:p}),t[3]=f,t[4]=p,t[5]=m):m=t[5];let h;t[6]!==d||t[7]!==m?(h=(0,i.jsxs)(`div`,{className:n.default.cardHeader,children:[d,m]}),t[6]=d,t[7]=m,t[8]=h):h=t[8];let g;t[9]===Symbol.for(`react.memo_cache_sentinel`)?(g=(0,i.jsx)(`span`,{className:n.default.fieldLabel,children:`Campo: `}),t[9]=g):g=t[9];let _;t[10]===o.fieldName?_=t[11]:(_=(0,i.jsxs)(`div`,{className:n.default.fieldRow,children:[g,o.fieldName]}),t[10]=o.fieldName,t[11]=_);let v;t[12]===o.signerName?v=t[13]:(v=o.signerName&&(0,i.jsxs)(`div`,{className:n.default.fieldRow,children:[(0,i.jsx)(`span`,{className:n.default.fieldLabel,children:`Firmatario: `}),o.signerName]}),t[12]=o.signerName,t[13]=v);let y;t[14]===o.signDate?y=t[15]:(y=o.signDate&&(0,i.jsxs)(`div`,{className:n.default.fieldRow,children:[(0,i.jsx)(`span`,{className:n.default.fieldLabel,children:`Data: `}),a(o.signDate)]}),t[14]=o.signDate,t[15]=y);let b;t[16]===o.reason?b=t[17]:(b=o.reason&&(0,i.jsxs)(`div`,{className:n.default.fieldRow,children:[(0,i.jsx)(`span`,{className:n.default.fieldLabel,children:`Motivo: `}),o.reason]}),t[16]=o.reason,t[17]=b);let x;t[18]===o.location?x=t[19]:(x=o.location&&(0,i.jsxs)(`div`,{className:n.default.fieldRow,children:[(0,i.jsx)(`span`,{className:n.default.fieldLabel,children:`Luogo: `}),o.location]}),t[18]=o.location,t[19]=x);let S;t[20]!==_||t[21]!==v||t[22]!==y||t[23]!==b||t[24]!==x?(S=(0,i.jsxs)(`div`,{className:n.default.fieldList,children:[_,v,y,b,x]}),t[20]=_,t[21]=v,t[22]=y,t[23]=b,t[24]=x,t[25]=S):S=t[25];let C;return t[26]!==s||t[27]!==c||t[28]!==S||t[29]!==h?(C=(0,i.jsxs)(`div`,{className:c,onClick:s,children:[h,S]}),t[26]=s,t[27]=c,t[28]=S,t[29]=h,t[30]=C):C=t[30],C}function s(a){let o=(0,r.c)(8),{icon:s}=a,{pdf:c}=e.usePDFViewer(),l;o[0]===c?l=o[1]:(l={pdf:c},o[0]=c,o[1]=l);let{signatures:u,loading:d}=t.useSignatures(l),f=u.length,p;o[2]!==f||o[3]!==d?(p=!d&&f>0&&(0,i.jsx)(`span`,{className:n.default.badge,children:f>99?`99+`:f}),o[2]=f,o[3]=d,o[4]=p):p=o[4];let m;return o[5]!==s||o[6]!==p?(m=(0,i.jsxs)(`span`,{className:n.default.iconWrapper,children:[s,p]}),o[5]=s,o[6]=p,o[7]=m):m=o[7],m}function c(){let a=(0,r.c)(18),{pdf:s,goToPage:c,setHighlight:l}=e.usePDFViewer(),u;a[0]===s?u=a[1]:(u={pdf:s},a[0]=s,a[1]=u);let{signatures:d,loading:f}=t.useSignatures(u),p;a[2]!==c||a[3]!==l?(p=e=>{c(e.page),e.rect&&l({page:e.page,pdfRect:e.rect})},a[2]=c,a[3]=l,a[4]=p):p=a[4];let m=p,h;a[5]===f?h=a[6]:(h=f&&(0,i.jsx)(`div`,{className:n.default.emptyState,children:`Caricamento...`}),a[5]=f,a[6]=h);let g;a[7]!==f||a[8]!==d?(g=!f&&d.length===0&&(0,i.jsx)(`div`,{className:n.default.emptyState,children:`Nessuna firma rilevata.`}),a[7]=f,a[8]=d,a[9]=g):g=a[9];let _;a[10]!==m||a[11]!==f||a[12]!==d?(_=!f&&d.map((e,t)=>(0,i.jsx)(o,{sig:e,onClick:()=>m(e)},t)),a[10]=m,a[11]=f,a[12]=d,a[13]=_):_=a[13];let v;return a[14]!==h||a[15]!==g||a[16]!==_?(v=(0,i.jsxs)(`div`,{className:n.default.list,children:[h,g,_]}),a[14]=h,a[15]=g,a[16]=_,a[17]=v):v=a[17],v}exports.PDFSignatures=c,exports.PDFSignaturesIcon=s;
@@ -1 +1 @@
1
- var e={list:`_list_1xon0_1`,emptyState:`_emptyState_1xon0_11`,card:`_card_1xon0_23`,cardClickable:`_cardClickable_1xon0_45`,cardSigned:`_cardSigned_1xon0_61`,cardHeader:`_cardHeader_1xon0_71`,statusDot:`_statusDot_1xon0_85`,statusDotSigned:`_statusDotSigned_1xon0_113`,statusLabel:`_statusLabel_1xon0_121`,statusLabelSigned:`_statusLabelSigned_1xon0_137`,fieldList:`_fieldList_1xon0_145`,fieldRow:`_fieldRow_1xon0_157`,fieldLabel:`_fieldLabel_1xon0_167`,disclaimer:`_disclaimer_1xon0_175`};exports.default=e;
1
+ var e={list:`_list_11831_1`,emptyState:`_emptyState_11831_11`,card:`_card_11831_23`,cardClickable:`_cardClickable_11831_45`,cardSigned:`_cardSigned_11831_61`,cardHeader:`_cardHeader_11831_71`,statusDot:`_statusDot_11831_85`,statusDotSigned:`_statusDotSigned_11831_113`,statusLabel:`_statusLabel_11831_121`,statusLabelSigned:`_statusLabelSigned_11831_137`,fieldList:`_fieldList_11831_145`,fieldRow:`_fieldRow_11831_157`,fieldLabel:`_fieldLabel_11831_167`,disclaimer:`_disclaimer_11831_175`,iconWrapper:`_iconWrapper_11831_197`,badge:`_badge_11831_211`};exports.default=e;
@@ -1 +1 @@
1
- require(`../_virtual/_rolldown/runtime.cjs`);const e=require(`../theme.cjs`);let t=require(`react`),n=require(`react/compiler-runtime`),r=require(`react/jsx-runtime`);var i=(0,t.createContext)(null);function a(a){let s=(0,n.c)(17),{children:c,themeOverrides:l}=a,[u,d]=(0,t.useState)(!0),f,p;s[0]!==u||s[1]!==l?.dark||s[2]!==l?.light?(p=u?{...e.darkTheme,...l?.dark}:{...e.lightTheme,...l?.light},f=e.themeToCssVars(p),s[0]=u,s[1]=l?.dark,s[2]=l?.light,s[3]=f,s[4]=p):(f=s[3],p=s[4]);let m=f,h;s[5]===Symbol.for(`react.memo_cache_sentinel`)?(h=()=>d(o),s[5]=h):h=s[5];let g;s[6]!==u||s[7]!==p?(g={isDark:u,toggleTheme:h,theme:p},s[6]=u,s[7]=p,s[8]=g):g=s[8];let _=m,v;s[9]===_?v=s[10]:(v={..._,height:`100%`,width:`100%`},s[9]=_,s[10]=v);let y;s[11]!==c||s[12]!==v?(y=(0,r.jsx)(`div`,{style:v,children:c}),s[11]=c,s[12]=v,s[13]=y):y=s[13];let b;return s[14]!==g||s[15]!==y?(b=(0,r.jsx)(i.Provider,{value:g,children:y}),s[14]=g,s[15]=y,s[16]=b):b=s[16],b}function o(e){return!e}function s(){let e=(0,t.useContext)(i);if(!e)throw Error(`useTheme must be used inside <ThemeProvider>`);return e}exports.ThemeProvider=a,exports.useTheme=s;
1
+ require(`../_virtual/_rolldown/runtime.cjs`);const e=require(`../theme.cjs`);let t=require(`react`),n=require(`react/compiler-runtime`),r=require(`react/jsx-runtime`);var i=(0,t.createContext)(null);function a(a){let s=(0,n.c)(17),{children:c,themeOverrides:l,defaultTheme:u}=a,[d,f]=(0,t.useState)((u===void 0?`light`:u)===`dark`),p,m;s[0]!==d||s[1]!==l?.dark||s[2]!==l?.light?(m=d?{...e.darkTheme,...l?.dark}:{...e.lightTheme,...l?.light},p=e.themeToCssVars(m),s[0]=d,s[1]=l?.dark,s[2]=l?.light,s[3]=p,s[4]=m):(p=s[3],m=s[4]);let h=p,g;s[5]===Symbol.for(`react.memo_cache_sentinel`)?(g=()=>f(o),s[5]=g):g=s[5];let _;s[6]!==d||s[7]!==m?(_={isDark:d,toggleTheme:g,theme:m},s[6]=d,s[7]=m,s[8]=_):_=s[8];let v=h,y;s[9]===v?y=s[10]:(y={...v,height:`100%`,width:`100%`},s[9]=v,s[10]=y);let b;s[11]!==c||s[12]!==y?(b=(0,r.jsx)(`div`,{style:y,children:c}),s[11]=c,s[12]=y,s[13]=b):b=s[13];let x;return s[14]!==_||s[15]!==b?(x=(0,r.jsx)(i.Provider,{value:_,children:b}),s[14]=_,s[15]=b,s[16]=x):x=s[16],x}function o(e){return!e}function s(){let e=(0,t.useContext)(i);if(!e)throw Error(`useTheme must be used inside <ThemeProvider>`);return e}exports.ThemeProvider=a,exports.useTheme=s;
@@ -1 +1 @@
1
- Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require(`./theme.cjs`),t=require(`./components/PDFViewer.cjs`),n=require(`./components/PDFSidebar.cjs`),r=require(`./components/features/PDFAnnotations.cjs`),i=require(`./components/features/PDFChangeFile.cjs`),a=require(`./components/features/PDFDownloadButton.cjs`),o=require(`./components/features/PDFNavigation.cjs`),s=require(`./components/features/PDFOutline.cjs`),c=require(`./components/features/PDFPageFit.cjs`),l=require(`./components/features/PDFRotationControl.cjs`),u=require(`./components/features/PDFSearch.cjs`),d=require(`./components/features/PDFSignatures.cjs`),f=require(`./components/features/PDFThumbnails.cjs`),p=require(`./components/features/PDFZoomControls.cjs`),m=require(`./components/features/PDFThemeToggle.cjs`),h=require(`./components/features/PDFPrintButton.cjs`);exports.PDFAnnotations=r.PDFAnnotations,exports.PDFChangeFile=i.PDFChangeFile,exports.PDFDownloadButton=a.PDFDownloadButton,exports.PDFNavigation=o.PDFNavigation,exports.PDFOutline=s.PDFOutline,exports.PDFPageFit=c.PDFPageFit,exports.PDFPrintButton=h.PDFPrintButton,exports.PDFRotationControl=l.PDFRotationControl,exports.PDFSearch=u.PDFSearch,exports.PDFSidebar=n.PDFSidebar,exports.PDFSignatures=d.PDFSignatures,exports.PDFThemeToggle=m.PDFThemeToggle,exports.PDFThumbnails=f.PDFThumbnails,exports.PDFViewer=t,exports.PDFZoomControls=p.PDFZoomControls,exports.darkTheme=e.darkTheme,exports.lightTheme=e.lightTheme;
1
+ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require(`./theme.cjs`),t=require(`./components/PDFViewer.cjs`),n=require(`./components/PDFSidebar.cjs`),r=require(`./components/features/PDFAnnotations.cjs`),i=require(`./components/features/PDFChangeFile.cjs`),a=require(`./components/features/PDFDownloadButton.cjs`),o=require(`./components/features/PDFNavigation.cjs`),s=require(`./components/features/PDFOutline.cjs`),c=require(`./components/features/PDFPageFit.cjs`),l=require(`./components/features/PDFRotationControl.cjs`),u=require(`./components/features/PDFSearch.cjs`),d=require(`./components/features/PDFSignatures.cjs`),f=require(`./components/features/PDFThumbnails.cjs`),p=require(`./components/features/PDFZoomControls.cjs`),m=require(`./components/features/PDFThemeToggle.cjs`),h=require(`./components/features/PDFPrintButton.cjs`);exports.PDFAnnotations=r.PDFAnnotations,exports.PDFAnnotationsIcon=r.PDFAnnotationsIcon,exports.PDFChangeFile=i.PDFChangeFile,exports.PDFDownloadButton=a.PDFDownloadButton,exports.PDFNavigation=o.PDFNavigation,exports.PDFOutline=s.PDFOutline,exports.PDFPageFit=c.PDFPageFit,exports.PDFPrintButton=h.PDFPrintButton,exports.PDFRotationControl=l.PDFRotationControl,exports.PDFSearch=u.PDFSearch,exports.PDFSidebar=n.PDFSidebar,exports.PDFSignatures=d.PDFSignatures,exports.PDFSignaturesIcon=d.PDFSignaturesIcon,exports.PDFThemeToggle=m.PDFThemeToggle,exports.PDFThumbnails=f.PDFThumbnails,exports.PDFViewer=t,exports.PDFZoomControls=p.PDFZoomControls,exports.darkTheme=e.darkTheme,exports.lightTheme=e.lightTheme;
@@ -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_173qc_1{flex-direction:column;display:flex}._emptyState_173qc_11{color:var(--pdf-text-secondary);padding:20px 14px;font-size:12px}._pageHeader_173qc_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_173qc_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_173qc_65{cursor:pointer}._cardClickable_173qc_65:hover{box-shadow:0 1px 6px var(--pdf-shadow-page)}._cardHeader_173qc_81{justify-content:space-between;align-items:center;margin-bottom:4px;display:flex}._cardLabel_173qc_95{color:var(--pdf-text-secondary);font-size:11px;font-weight:600}._cardPage_173qc_107{color:var(--pdf-text-secondary);font-size:10px}._cardAuthor_173qc_117{color:var(--pdf-text-muted);margin-bottom:3px;font-size:11px}._cardContent_173qc_129{color:var(--pdf-text-primary);font-size:12px;line-height:1.5}._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_1xon0_1{flex-direction:column;display:flex}._emptyState_1xon0_11{color:var(--pdf-text-secondary);padding:20px 14px;font-size:12px}._card_1xon0_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_1xon0_45{cursor:pointer}._cardClickable_1xon0_45:hover{box-shadow:0 1px 6px var(--pdf-shadow-page)}._cardSigned_1xon0_61{background-color:#f0fdf4;border-color:#bbf7d0}._cardHeader_1xon0_71{align-items:center;gap:7px;margin-bottom:8px;display:flex}._statusDot_1xon0_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_1xon0_113{background-color:#22c55e}._statusLabel_1xon0_121{color:var(--pdf-text-secondary);text-transform:uppercase;letter-spacing:.4px;font-size:11px;font-weight:600}._statusLabelSigned_1xon0_137{color:#16a34a}._fieldList_1xon0_145{flex-direction:column;gap:3px;display:flex}._fieldRow_1xon0_157{color:var(--pdf-text-secondary);font-size:12px}._fieldLabel_1xon0_167{color:var(--pdf-text-secondary)}._disclaimer_1xon0_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}._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_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}
2
2
  /*$vite$:1*/
@@ -0,0 +1 @@
1
+ var e=60,t=10;async function n(n,r,i,a){let o=(await r.getPage(1)).getViewport({scale:1,rotation:a}),s=i.clientWidth-e;if(n===`width`)return s/o.width;let c=i.clientHeight-t*2;return Math.min(s/o.width,c/o.height)}exports.computeFit=n;
@@ -10,6 +10,8 @@ interface PDFViewerProps {
10
10
  light?: Partial<Theme>;
11
11
  dark?: Partial<Theme>;
12
12
  };
13
+ defaultTheme?: "light" | "dark";
14
+ defaultFit?: "width" | "page";
13
15
  }
14
16
  declare const PDFViewer: React.FC<PDFViewerProps>;
15
17
  export default PDFViewer;
@@ -1 +1,5 @@
1
+ import { ReactNode } from 'react';
2
+ export declare function PDFAnnotationsIcon({ icon }: {
3
+ icon: ReactNode;
4
+ }): import("react/jsx-runtime").JSX.Element;
1
5
  export declare function PDFAnnotations(): import("react/jsx-runtime").JSX.Element;
@@ -1 +1,5 @@
1
+ import { ReactNode } from 'react';
2
+ export declare function PDFSignaturesIcon({ icon }: {
3
+ icon: ReactNode;
4
+ }): import("react/jsx-runtime").JSX.Element;
1
5
  export declare function PDFSignatures(): import("react/jsx-runtime").JSX.Element;
@@ -11,7 +11,8 @@ interface ThemeProviderProps {
11
11
  light?: Partial<Theme>;
12
12
  dark?: Partial<Theme>;
13
13
  };
14
+ defaultTheme?: "light" | "dark";
14
15
  }
15
- export declare function ThemeProvider({ children, themeOverrides }: ThemeProviderProps): import("react/jsx-runtime").JSX.Element;
16
+ export declare function ThemeProvider({ children, themeOverrides, defaultTheme }: ThemeProviderProps): import("react/jsx-runtime").JSX.Element;
16
17
  export declare function useTheme(): ThemeContextValue;
17
18
  export {};
@@ -4,70 +4,79 @@ import { useKeyboardShortcuts as n } from "../hooks/useKeyboardShortcuts.js";
4
4
  import { useTextLayer as r } from "../hooks/useTextLayer.js";
5
5
  import { isSafeUrl as i } from "../utils/url.js";
6
6
  import { useAnnotationLayer as a } from "../hooks/useAnnotationLayer.js";
7
- import { ThemeProvider as o } from "../context/ThemeContext.js";
8
- import s from "./PDFViewer.module.js";
9
- import { useEffect as c, useRef as l, useState as u } from "react";
10
- import * as d from "pdfjs-dist";
11
- import { jsx as f, jsxs as p } from "react/jsx-runtime";
7
+ import { computeFit as o } from "../utils/pdfFit.js";
8
+ import { ThemeProvider as s } from "../context/ThemeContext.js";
9
+ import c from "./PDFViewer.module.js";
10
+ import { useEffect as l, useRef as u, useState as d } from "react";
11
+ import * as f from "pdfjs-dist";
12
+ import { jsx as p, jsxs as m } from "react/jsx-runtime";
12
13
  //#region src/components/PDFViewer.tsx
13
- var m = ({ file: m, workerSrc: h, sidebar: g, toolbar: _, onChangeFile: v, themeOverrides: y }) => {
14
- c(() => {
15
- d.GlobalWorkerOptions.workerSrc = h;
16
- }, [h]);
17
- let [b, x] = u(null), [S, C] = u(0), [w, T] = u(1), [E, D] = u(0), [O, k] = u(null), [A, j] = u(null), [M, N] = u([]), [P, F] = u(/* @__PURE__ */ new Set()), [I, L] = u([]), R = l(null), z = l([]), B = l([]), { currentPage: V, goToPage: H } = t({
18
- pdf: b,
19
- numPages: S,
20
- zoom: w,
21
- rotation: E,
22
- containerRef: R,
23
- canvasRefs: z
14
+ var h = ({ file: h, workerSrc: g, sidebar: _, toolbar: v, onChangeFile: y, themeOverrides: b, defaultTheme: x, defaultFit: S }) => {
15
+ l(() => {
16
+ f.GlobalWorkerOptions.workerSrc = g;
17
+ }, [g]);
18
+ let [C, w] = d(null), [T, E] = d(0), [D, O] = d(1), [k, A] = d(0), [j, M] = d(null), [N, P] = d(null), [F, I] = d([]), [L, R] = d(/* @__PURE__ */ new Set()), [z, B] = d([]), V = u(null), H = u([]), U = u([]), W = u(k);
19
+ l(() => {
20
+ W.current = k;
21
+ }, [k]), l(() => {
22
+ if (!C || !S || !V.current) return;
23
+ let e = V.current;
24
+ o(S, C, e, W.current).then(O);
25
+ }, [C, S]);
26
+ let { currentPage: G, goToPage: K } = t({
27
+ pdf: C,
28
+ numPages: T,
29
+ zoom: D,
30
+ rotation: k,
31
+ containerRef: V,
32
+ canvasRefs: H
24
33
  });
25
34
  n({
26
- pdf: b,
27
- currentPage: V,
28
- numPages: S,
29
- goToPage: H,
30
- setZoom: T,
31
- setRotation: D
35
+ pdf: C,
36
+ currentPage: G,
37
+ numPages: T,
38
+ goToPage: K,
39
+ setZoom: O,
40
+ setRotation: A
32
41
  });
33
- let U = r({
34
- pdf: b,
35
- zoom: w,
36
- rotation: E,
37
- numPages: S,
38
- canvasRefs: z
39
- }), W = a({
40
- pdf: b,
41
- zoom: w,
42
- rotation: E,
43
- numPages: S,
44
- goToPage: H
42
+ let q = r({
43
+ pdf: C,
44
+ zoom: D,
45
+ rotation: k,
46
+ numPages: T,
47
+ canvasRefs: H
48
+ }), J = a({
49
+ pdf: C,
50
+ zoom: D,
51
+ rotation: k,
52
+ numPages: T,
53
+ goToPage: K
45
54
  });
46
- c(() => {
55
+ l(() => {
47
56
  (async () => {
48
57
  let e = new FileReader();
49
58
  e.onload = async (e) => {
50
59
  let t = new Uint8Array(e.target?.result);
51
60
  try {
52
- let e = await d.getDocument(t).promise;
53
- x(e), C(e.numPages), k(null), j(null), F(/* @__PURE__ */ new Set()), L([]), z.current = Array(e.numPages).fill(null), B.current = Array(e.numPages).fill(null);
61
+ let e = await f.getDocument(t).promise;
62
+ w(e), E(e.numPages), M(null), P(null), R(/* @__PURE__ */ new Set()), B([]), H.current = Array(e.numPages).fill(null), U.current = Array(e.numPages).fill(null);
54
63
  } catch (e) {
55
64
  console.error("Errore caricamento:", e);
56
65
  }
57
- }, e.readAsArrayBuffer(m);
66
+ }, e.readAsArrayBuffer(h);
58
67
  })();
59
- }, [m]), c(() => {
60
- if (!b) return;
61
- F(/* @__PURE__ */ new Set());
68
+ }, [h]), l(() => {
69
+ if (!C) return;
70
+ R(/* @__PURE__ */ new Set());
62
71
  let e = !1;
63
72
  return (async () => {
64
- let t = B.current.map((e) => e ? (e.cancel(), e.promise.catch(() => {})) : Promise.resolve());
65
- if (await Promise.all(t), B.current = Array(b.numPages).fill(null), e) return;
73
+ let t = U.current.map((e) => e ? (e.cancel(), e.promise.catch(() => {})) : Promise.resolve());
74
+ if (await Promise.all(t), U.current = Array(C.numPages).fill(null), e) return;
66
75
  let n = [];
67
- for (let e = 1; e <= b.numPages; e++) {
68
- let t = (await b.getPage(e)).getViewport({
69
- scale: w,
70
- rotation: E
76
+ for (let e = 1; e <= C.numPages; e++) {
77
+ let t = (await C.getPage(e)).getViewport({
78
+ scale: D,
79
+ rotation: k
71
80
  });
72
81
  n.push({
73
82
  width: t.width,
@@ -75,13 +84,13 @@ var m = ({ file: m, workerSrc: h, sidebar: g, toolbar: _, onChangeFile: v, theme
75
84
  });
76
85
  }
77
86
  if (!e) {
78
- L(n);
79
- for (let t = 1; t <= b.numPages; t++) {
87
+ B(n);
88
+ for (let t = 1; t <= C.numPages; t++) {
80
89
  if (e) return;
81
- let n = await b.getPage(t), r = n.getViewport({
82
- scale: w,
83
- rotation: E
84
- }), i = z.current[t - 1];
90
+ let n = await C.getPage(t), r = n.getViewport({
91
+ scale: D,
92
+ rotation: k
93
+ }), i = H.current[t - 1];
85
94
  if (i) {
86
95
  let a = i.getContext("2d");
87
96
  if (a) {
@@ -91,9 +100,9 @@ var m = ({ file: m, workerSrc: h, sidebar: g, toolbar: _, onChangeFile: v, theme
91
100
  viewport: r,
92
101
  canvas: i
93
102
  });
94
- B.current[t - 1] = o;
103
+ U.current[t - 1] = o;
95
104
  try {
96
- await o.promise, e || F((e) => new Set(e).add(t));
105
+ await o.promise, e || R((e) => new Set(e).add(t));
97
106
  } catch (e) {
98
107
  e && typeof e == "object" && "name" in e && e.name !== "RenderingCancelledException" && console.error("Render error:", e);
99
108
  }
@@ -102,27 +111,27 @@ var m = ({ file: m, workerSrc: h, sidebar: g, toolbar: _, onChangeFile: v, theme
102
111
  }
103
112
  }
104
113
  })(), () => {
105
- e = !0, B.current.forEach((e) => e?.cancel());
114
+ e = !0, U.current.forEach((e) => e?.cancel());
106
115
  };
107
116
  }, [
108
- b,
109
- w,
110
- E
117
+ C,
118
+ D,
119
+ k
111
120
  ]);
112
- let [G, K] = u([]);
113
- return c(() => {
114
- if (!b || M.length === 0) {
115
- K([]);
121
+ let [Y, X] = d([]);
122
+ return l(() => {
123
+ if (!C || F.length === 0) {
124
+ X([]);
116
125
  return;
117
126
  }
118
127
  let e = !1;
119
128
  return (async () => {
120
129
  let t = [];
121
- for (let n of M) {
130
+ for (let n of F) {
122
131
  if (e) break;
123
- let [r, i, a, o] = (await b.getPage(n.page)).getViewport({
124
- scale: w,
125
- rotation: E
132
+ let [r, i, a, o] = (await C.getPage(n.page)).getViewport({
133
+ scale: D,
134
+ rotation: k
126
135
  }).convertToViewportRectangle(n.pdfRect);
127
136
  t.push({
128
137
  page: n.page,
@@ -132,25 +141,25 @@ var m = ({ file: m, workerSrc: h, sidebar: g, toolbar: _, onChangeFile: v, theme
132
141
  height: Math.abs(o - i)
133
142
  });
134
143
  }
135
- e || K(t);
144
+ e || X(t);
136
145
  })(), () => {
137
146
  e = !0;
138
147
  };
139
148
  }, [
140
- M,
141
- w,
142
- E,
143
- b
144
- ]), c(() => {
145
- if (!O || !b) return;
149
+ F,
150
+ D,
151
+ k,
152
+ C
153
+ ]), l(() => {
154
+ if (!j || !C) return;
146
155
  let e = !1;
147
156
  return (async () => {
148
- let [t, n, r, i] = (await b.getPage(O.page)).getViewport({
149
- scale: w,
150
- rotation: E
151
- }).convertToViewportRectangle(O.pdfRect);
152
- e || j({
153
- page: O.page,
157
+ let [t, n, r, i] = (await C.getPage(j.page)).getViewport({
158
+ scale: D,
159
+ rotation: k
160
+ }).convertToViewportRectangle(j.pdfRect);
161
+ e || P({
162
+ page: j.page,
154
163
  x: Math.min(t, r),
155
164
  y: Math.min(n, i),
156
165
  width: Math.abs(r - t),
@@ -160,68 +169,69 @@ var m = ({ file: m, workerSrc: h, sidebar: g, toolbar: _, onChangeFile: v, theme
160
169
  e = !0;
161
170
  };
162
171
  }, [
163
- O,
164
- w,
165
- E,
166
- b
167
- ]), /* @__PURE__ */ f(o, {
168
- themeOverrides: y,
169
- children: /* @__PURE__ */ f(e.Provider, {
172
+ j,
173
+ D,
174
+ k,
175
+ C
176
+ ]), /* @__PURE__ */ p(s, {
177
+ themeOverrides: b,
178
+ defaultTheme: x,
179
+ children: /* @__PURE__ */ p(e.Provider, {
170
180
  value: {
171
- pdf: b,
172
- numPages: S,
173
- zoom: w,
174
- setZoom: T,
175
- rotation: E,
176
- setRotation: D,
177
- currentPage: V,
178
- goToPage: H,
179
- containerRef: R,
180
- canvasRefs: z,
181
- file: m,
182
- highlight: O,
183
- setHighlight: k,
184
- searchMatches: M,
185
- setSearchMatches: N,
186
- onChangeFile: v
181
+ pdf: C,
182
+ numPages: T,
183
+ zoom: D,
184
+ setZoom: O,
185
+ rotation: k,
186
+ setRotation: A,
187
+ currentPage: G,
188
+ goToPage: K,
189
+ containerRef: V,
190
+ canvasRefs: H,
191
+ file: h,
192
+ highlight: j,
193
+ setHighlight: M,
194
+ searchMatches: F,
195
+ setSearchMatches: I,
196
+ onChangeFile: y
187
197
  },
188
- children: /* @__PURE__ */ p("div", {
189
- className: s.appLayout,
190
- children: [g, /* @__PURE__ */ p("div", {
191
- className: s.mainContent,
192
- children: [_ && /* @__PURE__ */ f("div", {
193
- className: s.toolbar,
194
- children: _
195
- }), /* @__PURE__ */ f("div", {
196
- className: s.scrollContainer,
197
- ref: R,
198
- children: Array.from({ length: S }, (e, t) => {
199
- let n = P.has(t + 1), r = I[t];
200
- return /* @__PURE__ */ p("div", {
201
- className: s.pageWrapper,
198
+ children: /* @__PURE__ */ m("div", {
199
+ className: c.appLayout,
200
+ children: [_, /* @__PURE__ */ m("div", {
201
+ className: c.mainContent,
202
+ children: [v && /* @__PURE__ */ p("div", {
203
+ className: c.toolbar,
204
+ children: v
205
+ }), /* @__PURE__ */ p("div", {
206
+ className: c.scrollContainer,
207
+ ref: V,
208
+ children: Array.from({ length: T }, (e, t) => {
209
+ let n = L.has(t + 1), r = z[t];
210
+ return /* @__PURE__ */ m("div", {
211
+ className: c.pageWrapper,
202
212
  children: [
203
- !n && r && /* @__PURE__ */ f("div", {
204
- className: s.pageSkeleton,
213
+ !n && r && /* @__PURE__ */ p("div", {
214
+ className: c.pageSkeleton,
205
215
  style: {
206
216
  width: r.width,
207
217
  height: r.height
208
218
  }
209
219
  }),
210
- /* @__PURE__ */ f("canvas", {
211
- className: s.pageCanvas,
220
+ /* @__PURE__ */ p("canvas", {
221
+ className: c.pageCanvas,
212
222
  ref: (e) => {
213
- z.current[t] = e;
223
+ H.current[t] = e;
214
224
  },
215
225
  style: { display: n ? "block" : "none" }
216
226
  }),
217
- /* @__PURE__ */ f("div", {
218
- className: `textLayer ${s.textLayer}`,
227
+ /* @__PURE__ */ p("div", {
228
+ className: `textLayer ${c.textLayer}`,
219
229
  ref: (e) => {
220
- U.current[t] = e;
230
+ q.current[t] = e;
221
231
  }
222
232
  }),
223
- W.filter((e) => e.page === t + 1).map((e, t) => /* @__PURE__ */ f("a", {
224
- className: s.linkOverlay,
233
+ J.filter((e) => e.page === t + 1).map((e, t) => /* @__PURE__ */ p("a", {
234
+ className: c.linkOverlay,
225
235
  href: e.url && i(e.url) ? e.url : "#",
226
236
  target: "_blank",
227
237
  rel: "noopener noreferrer",
@@ -235,8 +245,8 @@ var m = ({ file: m, workerSrc: h, sidebar: g, toolbar: _, onChangeFile: v, theme
235
245
  (!e.url || !i(e.url)) && (t.preventDefault(), e.url || e._handleClick());
236
246
  }
237
247
  }, t)),
238
- G.filter((e) => e.page === t + 1).map((e, t) => /* @__PURE__ */ f("div", {
239
- className: s.searchMatchOverlay,
248
+ Y.filter((e) => e.page === t + 1).map((e, t) => /* @__PURE__ */ p("div", {
249
+ className: c.searchMatchOverlay,
240
250
  style: {
241
251
  left: e.x,
242
252
  top: e.y,
@@ -244,17 +254,17 @@ var m = ({ file: m, workerSrc: h, sidebar: g, toolbar: _, onChangeFile: v, theme
244
254
  height: e.height
245
255
  }
246
256
  }, t)),
247
- O && A?.page === t + 1 && /* @__PURE__ */ f("div", {
248
- className: s.highlightOverlay,
257
+ j && N?.page === t + 1 && /* @__PURE__ */ p("div", {
258
+ className: c.highlightOverlay,
249
259
  style: {
250
- left: A.x,
251
- top: A.y,
252
- width: A.width,
253
- height: A.height
260
+ left: N.x,
261
+ top: N.y,
262
+ width: N.width,
263
+ height: N.height
254
264
  }
255
265
  })
256
266
  ]
257
- }, `${t}-${E}`);
267
+ }, `${t}-${k}`);
258
268
  })
259
269
  })]
260
270
  })]
@@ -263,4 +273,4 @@ var m = ({ file: m, workerSrc: h, sidebar: g, toolbar: _, onChangeFile: v, theme
263
273
  });
264
274
  };
265
275
  //#endregion
266
- export { m as default };
276
+ export { h as default };
@@ -62,7 +62,21 @@ function c(e) {
62
62
  ]
63
63
  }), t[15] = l, t[16] = d, t[17] = m, t[18] = _, t[19] = v, t[20] = y, t[21] = b) : b = t[21], b;
64
64
  }
65
- function l() {
65
+ function l(o) {
66
+ let s = r(8), { icon: c } = o, { pdf: l } = e(), u;
67
+ s[0] === l ? u = s[1] : (u = { pdf: l }, s[0] = l, s[1] = u);
68
+ let { annotations: d, loading: f } = t(u), p = d.length, m;
69
+ s[2] !== p || s[3] !== f ? (m = !f && p > 0 && /* @__PURE__ */ i("span", {
70
+ className: n.badge,
71
+ children: p > 99 ? "99+" : p
72
+ }), s[2] = p, s[3] = f, s[4] = m) : m = s[4];
73
+ let h;
74
+ return s[5] !== c || s[6] !== m ? (h = /* @__PURE__ */ a("span", {
75
+ className: n.iconWrapper,
76
+ children: [c, m]
77
+ }), s[5] = c, s[6] = m, s[7] = h) : h = s[7], h;
78
+ }
79
+ function u() {
66
80
  let { pdf: r, goToPage: o, setHighlight: s } = e(), { annotations: l, loading: u } = t({ pdf: r }), d = (e) => {
67
81
  o(e.page), e.rect && s({
68
82
  page: e.page,
@@ -91,4 +105,4 @@ function l() {
91
105
  });
92
106
  }
93
107
  //#endregion
94
- export { l as PDFAnnotations };
108
+ export { u as PDFAnnotations, l as PDFAnnotationsIcon };
@@ -1,14 +1,16 @@
1
1
  var e = {
2
- list: "_list_173qc_1",
3
- emptyState: "_emptyState_173qc_11",
4
- pageHeader: "_pageHeader_173qc_23",
5
- card: "_card_173qc_45",
6
- cardClickable: "_cardClickable_173qc_65",
7
- cardHeader: "_cardHeader_173qc_81",
8
- cardLabel: "_cardLabel_173qc_95",
9
- cardPage: "_cardPage_173qc_107",
10
- cardAuthor: "_cardAuthor_173qc_117",
11
- cardContent: "_cardContent_173qc_129"
2
+ list: "_list_10scn_1",
3
+ emptyState: "_emptyState_10scn_11",
4
+ pageHeader: "_pageHeader_10scn_23",
5
+ card: "_card_10scn_45",
6
+ cardClickable: "_cardClickable_10scn_65",
7
+ cardHeader: "_cardHeader_10scn_81",
8
+ cardLabel: "_cardLabel_10scn_95",
9
+ cardPage: "_cardPage_10scn_107",
10
+ cardAuthor: "_cardAuthor_10scn_117",
11
+ cardContent: "_cardContent_10scn_129",
12
+ iconWrapper: "_iconWrapper_10scn_141",
13
+ badge: "_badge_10scn_155"
12
14
  };
13
15
  //#endregion
14
16
  export { e as default };
@@ -1,43 +1,33 @@
1
1
  import { usePDFViewer as e } from "../../context/PDFViewerContext.js";
2
- import { ToolbarButton as t } from "../ui/ToolbarButton.js";
2
+ import { computeFit as t } from "../../utils/pdfFit.js";
3
+ import { ToolbarButton as n } from "../ui/ToolbarButton.js";
3
4
  import "react";
4
- import { c as n } from "react/compiler-runtime";
5
- import { Fragment as r, jsx as i, jsxs as a } from "react/jsx-runtime";
5
+ import { c as r } from "react/compiler-runtime";
6
+ import { Fragment as i, jsx as a, jsxs as o } from "react/jsx-runtime";
6
7
  //#region src/components/features/PDFPageFit.tsx
7
- var o = 60, s = 10;
8
- function c(c) {
9
- let l = n(19), { fitWidthIcon: u, fitPageIcon: d } = c, { pdf: f, rotation: p, setZoom: m, containerRef: h } = e(), g;
10
- l[0] !== h || l[1] !== f || l[2] !== p || l[3] !== m ? (g = async () => {
11
- if (!f || !h.current) return;
12
- let e = (await f.getPage(1)).getViewport({
13
- scale: 1,
14
- rotation: p
15
- });
16
- m((h.current.clientWidth - o) / e.width);
17
- }, l[0] = h, l[1] = f, l[2] = p, l[3] = m, l[4] = g) : g = l[4];
18
- let _ = g, v;
19
- l[5] !== h || l[6] !== f || l[7] !== p || l[8] !== m ? (v = async () => {
20
- if (!f || !h.current) return;
21
- let e = (await f.getPage(1)).getViewport({
22
- scale: 1,
23
- rotation: p
24
- }), t = h.current.clientWidth - o, n = h.current.clientHeight - s * 2;
25
- m(Math.min(t / e.width, n / e.height));
26
- }, l[5] = h, l[6] = f, l[7] = p, l[8] = m, l[9] = v) : v = l[9];
27
- let y = v, b;
28
- l[10] !== u || l[11] !== _ ? (b = /* @__PURE__ */ i(t, {
8
+ function s(s) {
9
+ let c = r(18), { fitWidthIcon: l, fitPageIcon: u } = s, { pdf: d, rotation: f, setZoom: p, containerRef: m } = e(), h;
10
+ c[0] !== m || c[1] !== d || c[2] !== f || c[3] !== p ? (h = async (e) => {
11
+ !d || !m.current || p(await t(e, d, m.current, f));
12
+ }, c[0] = m, c[1] = d, c[2] = f, c[3] = p, c[4] = h) : h = c[4];
13
+ let g = h, _;
14
+ c[5] === g ? _ = c[6] : (_ = () => g("width"), c[5] = g, c[6] = _);
15
+ let v;
16
+ c[7] !== l || c[8] !== _ ? (v = /* @__PURE__ */ a(n, {
29
17
  onClick: _,
30
18
  title: "Adatta alla larghezza",
31
- children: u
32
- }), l[10] = u, l[11] = _, l[12] = b) : b = l[12];
33
- let x;
34
- l[13] !== d || l[14] !== y ? (x = /* @__PURE__ */ i(t, {
19
+ children: l
20
+ }), c[7] = l, c[8] = _, c[9] = v) : v = c[9];
21
+ let y;
22
+ c[10] === g ? y = c[11] : (y = () => g("page"), c[10] = g, c[11] = y);
23
+ let b;
24
+ c[12] !== u || c[13] !== y ? (b = /* @__PURE__ */ a(n, {
35
25
  onClick: y,
36
26
  title: "Adatta pagina intera",
37
- children: d
38
- }), l[13] = d, l[14] = y, l[15] = x) : x = l[15];
39
- let S;
40
- return l[16] !== b || l[17] !== x ? (S = /* @__PURE__ */ a(r, { children: [b, x] }), l[16] = b, l[17] = x, l[18] = S) : S = l[18], S;
27
+ children: u
28
+ }), c[12] = u, c[13] = y, c[14] = b) : b = c[14];
29
+ let x;
30
+ return c[15] !== v || c[16] !== b ? (x = /* @__PURE__ */ o(i, { children: [v, b] }), c[15] = v, c[16] = b, c[17] = x) : x = c[17], x;
41
31
  }
42
32
  //#endregion
43
- export { c as PDFPageFit };
33
+ export { s as PDFPageFit };
@@ -9,9 +9,9 @@ function i(i) {
9
9
  a[0] === s ? c = a[1] : (c = () => {
10
10
  let e = URL.createObjectURL(s), t = document.createElement("iframe");
11
11
  t.style.display = "none", t.src = e, document.body.appendChild(t), t.onload = () => {
12
- t.contentWindow?.print(), setTimeout(() => {
12
+ t.contentWindow?.addEventListener("afterprint", () => {
13
13
  document.body.removeChild(t), URL.revokeObjectURL(e);
14
- }, 1e3);
14
+ }, { once: !0 }), t.contentWindow?.print();
15
15
  };
16
16
  }, a[0] = s, a[1] = c);
17
17
  let l = c, u;
@@ -87,8 +87,22 @@ function s(e) {
87
87
  children: [g, C]
88
88
  }), t[26] = c, t[27] = l, t[28] = C, t[29] = g, t[30] = w) : w = t[30], w;
89
89
  }
90
- function c() {
91
- let o = r(22), { pdf: c, goToPage: l, setHighlight: u } = e(), d;
90
+ function c(o) {
91
+ let s = r(8), { icon: c } = o, { pdf: l } = e(), u;
92
+ s[0] === l ? u = s[1] : (u = { pdf: l }, s[0] = l, s[1] = u);
93
+ let { signatures: d, loading: f } = t(u), p = d.length, m;
94
+ s[2] !== p || s[3] !== f ? (m = !f && p > 0 && /* @__PURE__ */ i("span", {
95
+ className: n.badge,
96
+ children: p > 99 ? "99+" : p
97
+ }), s[2] = p, s[3] = f, s[4] = m) : m = s[4];
98
+ let h;
99
+ return s[5] !== c || s[6] !== m ? (h = /* @__PURE__ */ a("span", {
100
+ className: n.iconWrapper,
101
+ children: [c, m]
102
+ }), s[5] = c, s[6] = m, s[7] = h) : h = s[7], h;
103
+ }
104
+ function l() {
105
+ let o = r(18), { pdf: c, goToPage: l, setHighlight: u } = e(), d;
92
106
  o[0] === c ? d = o[1] : (d = { pdf: c }, o[0] = c, o[1] = d);
93
107
  let { signatures: f, loading: p } = t(d), m;
94
108
  o[2] !== l || o[3] !== u ? (m = (e) => {
@@ -113,20 +127,14 @@ function c() {
113
127
  onClick: () => h(e)
114
128
  }, t)), o[10] = h, o[11] = p, o[12] = f, o[13] = v) : v = o[13];
115
129
  let y;
116
- o[14] !== p || o[15] !== f ? (y = !p && f.length > 0 && /* @__PURE__ */ i("div", {
117
- className: n.disclaimer,
118
- children: "La presenza del campo firma non garantisce la validità crittografica."
119
- }), o[14] = p, o[15] = f, o[16] = y) : y = o[16];
120
- let b;
121
- return o[17] !== g || o[18] !== _ || o[19] !== v || o[20] !== y ? (b = /* @__PURE__ */ a("div", {
130
+ return o[14] !== g || o[15] !== _ || o[16] !== v ? (y = /* @__PURE__ */ a("div", {
122
131
  className: n.list,
123
132
  children: [
124
133
  g,
125
134
  _,
126
- v,
127
- y
135
+ v
128
136
  ]
129
- }), o[17] = g, o[18] = _, o[19] = v, o[20] = y, o[21] = b) : b = o[21], b;
137
+ }), o[14] = g, o[15] = _, o[16] = v, o[17] = y) : y = o[17], y;
130
138
  }
131
139
  //#endregion
132
- export { c as PDFSignatures };
140
+ export { l as PDFSignatures, c as PDFSignaturesIcon };
@@ -1,18 +1,20 @@
1
1
  var e = {
2
- list: "_list_1xon0_1",
3
- emptyState: "_emptyState_1xon0_11",
4
- card: "_card_1xon0_23",
5
- cardClickable: "_cardClickable_1xon0_45",
6
- cardSigned: "_cardSigned_1xon0_61",
7
- cardHeader: "_cardHeader_1xon0_71",
8
- statusDot: "_statusDot_1xon0_85",
9
- statusDotSigned: "_statusDotSigned_1xon0_113",
10
- statusLabel: "_statusLabel_1xon0_121",
11
- statusLabelSigned: "_statusLabelSigned_1xon0_137",
12
- fieldList: "_fieldList_1xon0_145",
13
- fieldRow: "_fieldRow_1xon0_157",
14
- fieldLabel: "_fieldLabel_1xon0_167",
15
- disclaimer: "_disclaimer_1xon0_175"
2
+ list: "_list_11831_1",
3
+ emptyState: "_emptyState_11831_11",
4
+ card: "_card_11831_23",
5
+ cardClickable: "_cardClickable_11831_45",
6
+ cardSigned: "_cardSigned_11831_61",
7
+ cardHeader: "_cardHeader_11831_71",
8
+ statusDot: "_statusDot_11831_85",
9
+ statusDotSigned: "_statusDotSigned_11831_113",
10
+ statusLabel: "_statusLabel_11831_121",
11
+ statusLabelSigned: "_statusLabelSigned_11831_137",
12
+ fieldList: "_fieldList_11831_145",
13
+ fieldRow: "_fieldRow_11831_157",
14
+ fieldLabel: "_fieldLabel_11831_167",
15
+ disclaimer: "_disclaimer_11831_175",
16
+ iconWrapper: "_iconWrapper_11831_197",
17
+ badge: "_badge_11831_211"
16
18
  };
17
19
  //#endregion
18
20
  export { e as default };
@@ -5,38 +5,38 @@ import { jsx as s } from "react/jsx-runtime";
5
5
  //#region src/context/ThemeContext.tsx
6
6
  var c = r(null);
7
7
  function l(r) {
8
- let i = o(17), { children: l, themeOverrides: d } = r, [f, p] = a(!0), m, h;
9
- i[0] !== f || i[1] !== d?.dark || i[2] !== d?.light ? (h = f ? {
8
+ let i = o(17), { children: l, themeOverrides: d, defaultTheme: f } = r, [p, m] = a((f === void 0 ? "light" : f) === "dark"), h, g;
9
+ i[0] !== p || i[1] !== d?.dark || i[2] !== d?.light ? (g = p ? {
10
10
  ...e,
11
11
  ...d?.dark
12
12
  } : {
13
13
  ...t,
14
14
  ...d?.light
15
- }, m = n(h), i[0] = f, i[1] = d?.dark, i[2] = d?.light, i[3] = m, i[4] = h) : (m = i[3], h = i[4]);
16
- let g = m, _;
17
- i[5] === Symbol.for("react.memo_cache_sentinel") ? (_ = () => p(u), i[5] = _) : _ = i[5];
18
- let v;
19
- i[6] !== f || i[7] !== h ? (v = {
20
- isDark: f,
21
- toggleTheme: _,
22
- theme: h
23
- }, i[6] = f, i[7] = h, i[8] = v) : v = i[8];
24
- let y = g, b;
25
- i[9] === y ? b = i[10] : (b = {
26
- ...y,
15
+ }, h = n(g), i[0] = p, i[1] = d?.dark, i[2] = d?.light, i[3] = h, i[4] = g) : (h = i[3], g = i[4]);
16
+ let _ = h, v;
17
+ i[5] === Symbol.for("react.memo_cache_sentinel") ? (v = () => m(u), i[5] = v) : v = i[5];
18
+ let y;
19
+ i[6] !== p || i[7] !== g ? (y = {
20
+ isDark: p,
21
+ toggleTheme: v,
22
+ theme: g
23
+ }, i[6] = p, i[7] = g, i[8] = y) : y = i[8];
24
+ let b = _, x;
25
+ i[9] === b ? x = i[10] : (x = {
26
+ ...b,
27
27
  height: "100%",
28
28
  width: "100%"
29
- }, i[9] = y, i[10] = b);
30
- let x;
31
- i[11] !== l || i[12] !== b ? (x = /* @__PURE__ */ s("div", {
32
- style: b,
33
- children: l
34
- }), i[11] = l, i[12] = b, i[13] = x) : x = i[13];
29
+ }, i[9] = b, i[10] = x);
35
30
  let S;
36
- return i[14] !== v || i[15] !== x ? (S = /* @__PURE__ */ s(c.Provider, {
37
- value: v,
38
- children: x
39
- }), i[14] = v, i[15] = x, i[16] = S) : S = i[16], S;
31
+ i[11] !== l || i[12] !== x ? (S = /* @__PURE__ */ s("div", {
32
+ style: x,
33
+ children: l
34
+ }), i[11] = l, i[12] = x, i[13] = S) : S = i[13];
35
+ let C;
36
+ return i[14] !== y || i[15] !== S ? (C = /* @__PURE__ */ s(c.Provider, {
37
+ value: y,
38
+ children: S
39
+ }), i[14] = y, i[15] = S, i[16] = C) : C = i[16], C;
40
40
  }
41
41
  function u(e) {
42
42
  return !e;
package/dist/es/index.js CHANGED
@@ -1,17 +1,17 @@
1
1
  import { darkTheme as e, lightTheme as t } from "./theme.js";
2
2
  import n from "./components/PDFViewer.js";
3
3
  import { PDFSidebar as r } from "./components/PDFSidebar.js";
4
- import { PDFAnnotations as i } from "./components/features/PDFAnnotations.js";
5
- import { PDFChangeFile as a } from "./components/features/PDFChangeFile.js";
6
- import { PDFDownloadButton as o } from "./components/features/PDFDownloadButton.js";
7
- import { PDFNavigation as s } from "./components/features/PDFNavigation.js";
8
- import { PDFOutline as c } from "./components/features/PDFOutline.js";
9
- import { PDFPageFit as l } from "./components/features/PDFPageFit.js";
10
- import { PDFRotationControl as u } from "./components/features/PDFRotationControl.js";
11
- import { PDFSearch as d } from "./components/features/PDFSearch.js";
12
- import { PDFSignatures as f } from "./components/features/PDFSignatures.js";
13
- import { PDFThumbnails as p } from "./components/features/PDFThumbnails.js";
14
- import { PDFZoomControls as m } from "./components/features/PDFZoomControls.js";
15
- import { PDFThemeToggle as h } from "./components/features/PDFThemeToggle.js";
16
- import { PDFPrintButton as g } from "./components/features/PDFPrintButton.js";
17
- export { i as PDFAnnotations, a as PDFChangeFile, o as PDFDownloadButton, s as PDFNavigation, c as PDFOutline, l as PDFPageFit, g as PDFPrintButton, u as PDFRotationControl, d as PDFSearch, r as PDFSidebar, f as PDFSignatures, h as PDFThemeToggle, p as PDFThumbnails, n as PDFViewer, m as PDFZoomControls, e as darkTheme, t as lightTheme };
4
+ import { PDFAnnotations as i, PDFAnnotationsIcon as a } from "./components/features/PDFAnnotations.js";
5
+ import { PDFChangeFile as o } from "./components/features/PDFChangeFile.js";
6
+ import { PDFDownloadButton as s } from "./components/features/PDFDownloadButton.js";
7
+ import { PDFNavigation as c } from "./components/features/PDFNavigation.js";
8
+ import { PDFOutline as l } from "./components/features/PDFOutline.js";
9
+ import { PDFPageFit as u } from "./components/features/PDFPageFit.js";
10
+ import { PDFRotationControl as d } from "./components/features/PDFRotationControl.js";
11
+ import { PDFSearch as f } from "./components/features/PDFSearch.js";
12
+ import { PDFSignatures as p, PDFSignaturesIcon as m } from "./components/features/PDFSignatures.js";
13
+ import { PDFThumbnails as h } from "./components/features/PDFThumbnails.js";
14
+ import { PDFZoomControls as g } from "./components/features/PDFZoomControls.js";
15
+ import { PDFThemeToggle as _ } from "./components/features/PDFThemeToggle.js";
16
+ import { PDFPrintButton as v } from "./components/features/PDFPrintButton.js";
17
+ export { i as PDFAnnotations, a as PDFAnnotationsIcon, o as PDFChangeFile, s as PDFDownloadButton, c as PDFNavigation, l as PDFOutline, u as PDFPageFit, v as PDFPrintButton, d as PDFRotationControl, f as PDFSearch, r as PDFSidebar, p as PDFSignatures, m as PDFSignaturesIcon, _ as PDFThemeToggle, h as PDFThumbnails, n as PDFViewer, g as PDFZoomControls, e as darkTheme, t as lightTheme };
@@ -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_173qc_1{flex-direction:column;display:flex}._emptyState_173qc_11{color:var(--pdf-text-secondary);padding:20px 14px;font-size:12px}._pageHeader_173qc_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_173qc_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_173qc_65{cursor:pointer}._cardClickable_173qc_65:hover{box-shadow:0 1px 6px var(--pdf-shadow-page)}._cardHeader_173qc_81{justify-content:space-between;align-items:center;margin-bottom:4px;display:flex}._cardLabel_173qc_95{color:var(--pdf-text-secondary);font-size:11px;font-weight:600}._cardPage_173qc_107{color:var(--pdf-text-secondary);font-size:10px}._cardAuthor_173qc_117{color:var(--pdf-text-muted);margin-bottom:3px;font-size:11px}._cardContent_173qc_129{color:var(--pdf-text-primary);font-size:12px;line-height:1.5}._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_1xon0_1{flex-direction:column;display:flex}._emptyState_1xon0_11{color:var(--pdf-text-secondary);padding:20px 14px;font-size:12px}._card_1xon0_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_1xon0_45{cursor:pointer}._cardClickable_1xon0_45:hover{box-shadow:0 1px 6px var(--pdf-shadow-page)}._cardSigned_1xon0_61{background-color:#f0fdf4;border-color:#bbf7d0}._cardHeader_1xon0_71{align-items:center;gap:7px;margin-bottom:8px;display:flex}._statusDot_1xon0_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_1xon0_113{background-color:#22c55e}._statusLabel_1xon0_121{color:var(--pdf-text-secondary);text-transform:uppercase;letter-spacing:.4px;font-size:11px;font-weight:600}._statusLabelSigned_1xon0_137{color:#16a34a}._fieldList_1xon0_145{flex-direction:column;gap:3px;display:flex}._fieldRow_1xon0_157{color:var(--pdf-text-secondary);font-size:12px}._fieldLabel_1xon0_167{color:var(--pdf-text-secondary)}._disclaimer_1xon0_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}._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_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}
2
2
  /*$vite$:1*/
@@ -0,0 +1,13 @@
1
+ //#region src/utils/pdfFit.ts
2
+ var e = 60, t = 10;
3
+ async function n(n, r, i, a) {
4
+ let o = (await r.getPage(1)).getViewport({
5
+ scale: 1,
6
+ rotation: a
7
+ }), s = i.clientWidth - e;
8
+ if (n === "width") return s / o.width;
9
+ let c = i.clientHeight - t * 2;
10
+ return Math.min(s / o.width, c / o.height);
11
+ }
12
+ //#endregion
13
+ export { n as computeFit };
package/dist/index.d.ts CHANGED
@@ -2,7 +2,7 @@ export { default as PDFViewer } from './components/PDFViewer';
2
2
  export type { Theme } from './theme';
3
3
  export { darkTheme, lightTheme } from './theme';
4
4
  export { PDFSidebar } from './components/PDFSidebar';
5
- export { PDFAnnotations } from './components/features/PDFAnnotations';
5
+ export { PDFAnnotations, PDFAnnotationsIcon } from './components/features/PDFAnnotations';
6
6
  export { PDFChangeFile } from './components/features/PDFChangeFile';
7
7
  export { PDFDownloadButton } from './components/features/PDFDownloadButton';
8
8
  export { PDFNavigation } from './components/features/PDFNavigation';
@@ -10,7 +10,7 @@ export { PDFOutline } from './components/features/PDFOutline';
10
10
  export { PDFPageFit } from './components/features/PDFPageFit';
11
11
  export { PDFRotationControl } from './components/features/PDFRotationControl';
12
12
  export { PDFSearch } from './components/features/PDFSearch';
13
- export { PDFSignatures } from './components/features/PDFSignatures';
13
+ export { PDFSignatures, PDFSignaturesIcon } from './components/features/PDFSignatures';
14
14
  export { PDFThumbnails } from './components/features/PDFThumbnails';
15
15
  export { PDFZoomControls } from './components/features/PDFZoomControls';
16
16
  export { PDFThemeToggle } from './components/features/PDFThemeToggle';
@@ -0,0 +1,2 @@
1
+ import type * as pdfjsLib from "pdfjs-dist";
2
+ export declare function computeFit(mode: "width" | "page", pdf: pdfjsLib.PDFDocumentProxy, container: HTMLDivElement, rotation: number): Promise<number>;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "pdf-tsx",
3
- "version": "0.2.0",
3
+ "version": "0.3.0",
4
4
  "description": "A fully-featured, composable PDF viewer component for React",
5
5
  "type": "module",
6
6
  "main": "./dist/cjs/index.cjs",