pdf-tsx 0.2.0 → 0.4.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 (47) hide show
  1. package/README.md +107 -33
  2. package/dist/cjs/components/PDFSidebar.cjs +1 -1
  3. package/dist/cjs/components/PDFSidebar.module.cjs +1 -1
  4. package/dist/cjs/components/PDFViewer.cjs +1 -1
  5. package/dist/cjs/components/PDFViewer.module.cjs +1 -1
  6. package/dist/cjs/components/features/PDFAnnotations.cjs +1 -1
  7. package/dist/cjs/components/features/PDFAnnotations.module.cjs +1 -1
  8. package/dist/cjs/components/features/PDFNavigation.module.cjs +1 -1
  9. package/dist/cjs/components/features/PDFPageFit.cjs +1 -1
  10. package/dist/cjs/components/features/PDFPrintButton.cjs +1 -1
  11. package/dist/cjs/components/features/PDFSearch.cjs +1 -1
  12. package/dist/cjs/components/features/PDFSearch.module.cjs +1 -1
  13. package/dist/cjs/components/features/PDFSidebarToggle.cjs +1 -0
  14. package/dist/cjs/components/features/PDFSignatures.cjs +1 -1
  15. package/dist/cjs/components/features/PDFSignatures.module.cjs +1 -1
  16. package/dist/cjs/context/ThemeContext.cjs +1 -1
  17. package/dist/cjs/index.cjs +1 -1
  18. package/dist/cjs/pdf-tsx.css +1 -1
  19. package/dist/cjs/utils/pdfFit.cjs +1 -0
  20. package/dist/components/PDFSidebar.d.ts +2 -1
  21. package/dist/components/PDFViewer.d.ts +4 -0
  22. package/dist/components/features/PDFAnnotations.d.ts +4 -0
  23. package/dist/components/features/PDFSidebarToggle.d.ts +7 -0
  24. package/dist/components/features/PDFSignatures.d.ts +4 -0
  25. package/dist/context/PDFViewerContext.d.ts +2 -0
  26. package/dist/context/ThemeContext.d.ts +2 -1
  27. package/dist/es/components/PDFSidebar.js +48 -38
  28. package/dist/es/components/PDFSidebar.module.js +9 -7
  29. package/dist/es/components/PDFViewer.js +150 -137
  30. package/dist/es/components/PDFViewer.module.js +15 -15
  31. package/dist/es/components/features/PDFAnnotations.js +16 -2
  32. package/dist/es/components/features/PDFAnnotations.module.js +12 -10
  33. package/dist/es/components/features/PDFNavigation.module.js +3 -3
  34. package/dist/es/components/features/PDFPageFit.js +24 -34
  35. package/dist/es/components/features/PDFPrintButton.js +2 -2
  36. package/dist/es/components/features/PDFSearch.js +16 -11
  37. package/dist/es/components/features/PDFSearch.module.js +5 -4
  38. package/dist/es/components/features/PDFSidebarToggle.js +20 -0
  39. package/dist/es/components/features/PDFSignatures.js +20 -12
  40. package/dist/es/components/features/PDFSignatures.module.js +16 -14
  41. package/dist/es/context/ThemeContext.js +24 -24
  42. package/dist/es/index.js +15 -14
  43. package/dist/es/pdf-tsx.css +1 -1
  44. package/dist/es/utils/pdfFit.js +13 -0
  45. package/dist/index.d.ts +3 -2
  46. package/dist/utils/pdfFit.d.ts +2 -0
  47. package/package.json +1 -1
package/README.md CHANGED
@@ -83,13 +83,17 @@ 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 |
89
+ | `className` | `string` | no | CSS class applied to the root layout element |
90
+ | `style` | `React.CSSProperties` | no | Inline style applied to the root layout element |
87
91
 
88
92
  ---
89
93
 
90
94
  ## Theming
91
95
 
92
- `PDFViewer` ships with built-in dark and light themes. Use `themeOverrides` to override individual tokens without replacing the whole theme.
96
+ `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
97
 
94
98
  ```tsx
95
99
  import { PDFViewer, darkTheme } from 'pdf-tsx'
@@ -139,21 +143,25 @@ themeOverrides={{ dark: { ...darkTheme, bg: '#0f0f0f' } }}
139
143
 
140
144
  ## PDFSidebar
141
145
 
142
- A collapsible icon sidebar. Each panel has an icon button — clicking it toggles the panel open/closed.
146
+ A collapsible icon sidebar. Each panel has an icon button — clicking it toggles the panel open/closed. When collapsed via `PDFSidebarToggle`, the entire sidebar is hidden (`null`).
143
147
 
144
148
  ```tsx
145
149
  import { PDFSidebar } from 'pdf-tsx'
146
- import { FiImage, FiList } from 'react-icons/fi'
147
-
148
- <PDFSidebar panels={[
149
- { icon: <FiImage size={18} />, label: 'Thumbnails', content: <PDFThumbnails /> },
150
- { icon: <FiList size={18} />, label: 'Outline', content: <PDFOutline /> },
151
- ]} />
150
+ import { FiImage, FiList, FiChevronsLeft } from 'react-icons/fi'
151
+
152
+ <PDFSidebar
153
+ collapseIcon={<FiChevronsLeft size={16} />}
154
+ panels={[
155
+ { icon: <FiImage size={18} />, label: 'Thumbnails', content: <PDFThumbnails /> },
156
+ { icon: <FiList size={18} />, label: 'Outline', content: <PDFOutline /> },
157
+ ]}
158
+ />
152
159
  ```
153
160
 
154
- | Prop | Type | Description |
155
- |----------|------------------|------------------------------------|
156
- | `panels` | `SidebarPanel[]` | Array of panels to display |
161
+ | Prop | Type | Description |
162
+ |----------------|------------------|------------------------------------------------------------------|
163
+ | `panels` | `SidebarPanel[]` | Array of panels to display |
164
+ | `collapseIcon` | `ReactNode` | If provided, renders a toggle button at the top of the icon bar to hide the sidebar |
157
165
 
158
166
  **SidebarPanel**
159
167
 
@@ -163,27 +171,81 @@ import { FiImage, FiList } from 'react-icons/fi'
163
171
  | `label` | `string` | Panel title shown in the header |
164
172
  | `content` | `ReactNode` | Content rendered inside the open panel |
165
173
 
174
+ ### Sidebar hide/show pattern
175
+
176
+ Use `PDFSidebarToggle` in the toolbar alongside `PDFSidebar`. When the sidebar is open, the collapse button lives inside the sidebar. When collapsed, the expand button appears in the toolbar.
177
+
178
+ ```tsx
179
+ import { PDFSidebar, PDFSidebarToggle } from 'pdf-tsx'
180
+ import { FiChevronsLeft, FiChevronsRight } from 'react-icons/fi'
181
+
182
+ <PDFViewer
183
+ sidebar={
184
+ <PDFSidebar
185
+ collapseIcon={<FiChevronsLeft size={16} />}
186
+ panels={[...]}
187
+ />
188
+ }
189
+ toolbar={
190
+ <>
191
+ <PDFSidebarToggle
192
+ collapseIcon={<FiChevronsLeft size={16} />}
193
+ expandIcon={<FiChevronsRight size={16} />}
194
+ />
195
+ {/* other toolbar items */}
196
+ </>
197
+ }
198
+ />
199
+ ```
200
+
166
201
  ---
167
202
 
168
203
  ## Feature components
169
204
 
170
205
  All feature components must be rendered inside `<PDFViewer>`. They read and write state via `usePDFViewer()` internally.
171
206
 
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|
207
+ | Component | Icon props | Description |
208
+ |------------------------|-----------------------------------------------------|------------------------------------------------------|
209
+ | `PDFThumbnails` | — | Page thumbnail strip for quick navigation |
210
+ | `PDFOutline` | — | Document outline / bookmarks tree |
211
+ | `PDFAnnotations` | — | Display PDF annotations |
212
+ | `PDFAnnotationsIcon` | `icon` | Sidebar icon with annotation count badge |
213
+ | `PDFSignatures` | | Display PDF digital signatures |
214
+ | `PDFSignaturesIcon` | `icon` | Sidebar icon with signature count badge |
215
+ | `PDFSearch` | `searchIcon` `prevIcon` `nextIcon` `clearIcon` | Full-text search with match highlighting |
216
+ | `PDFZoomControls` | `zoomInIcon` `zoomOutIcon` | Zoom in / zoom out buttons with percentage display |
217
+ | `PDFPageFit` | `fitWidthIcon` `fitPageIcon` | Fit-to-width and fit-to-page buttons |
218
+ | `PDFRotationControl` | `icon` | Rotate page clockwise |
219
+ | `PDFNavigation` | `prevIcon` `nextIcon` | Previous / next page buttons with current page input |
220
+ | `PDFDownloadButton` | `icon` | Download the current PDF file |
221
+ | `PDFChangeFile` | `icon` | Button to open a new PDF file |
222
+ | `PDFThemeToggle` | `lightIcon` `darkIcon` | Toggle between dark and light mode |
223
+ | `PDFPrintButton` | `icon` | Print the PDF using the browser's native print dialog|
224
+ | `PDFSidebarToggle` | `collapseIcon` `expandIcon` | Toolbar button to expand the sidebar — visible only when sidebar is hidden (see Sidebar hide/show pattern) |
225
+
226
+ ### Count badges
227
+
228
+ `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.
229
+
230
+ ```tsx
231
+ import { PDFSidebar, PDFSignatures, PDFSignaturesIcon, PDFAnnotations, PDFAnnotationsIcon } from 'pdf-tsx'
232
+ import { FiPenTool, FiMessageSquare } from 'react-icons/fi'
233
+
234
+ <PDFSidebar panels={[
235
+ {
236
+ icon: <PDFSignaturesIcon icon={<FiPenTool size={17} />} />,
237
+ label: 'Signatures',
238
+ content: <PDFSignatures />,
239
+ },
240
+ {
241
+ icon: <PDFAnnotationsIcon icon={<FiMessageSquare size={17} />} />,
242
+ label: 'Annotations',
243
+ content: <PDFAnnotations />,
244
+ },
245
+ ]} />
246
+ ```
247
+
248
+ The badge uses `var(--pdf-accent)` and respects `themeOverrides`.
187
249
 
188
250
  ---
189
251
 
@@ -192,16 +254,19 @@ All feature components must be rendered inside `<PDFViewer>`. They read and writ
192
254
  ```tsx
193
255
  import { useState, Suspense, lazy } from 'react'
194
256
  import {
195
- PDFSidebar, PDFThumbnails, PDFOutline, PDFSearch,
257
+ PDFSidebar, PDFSidebarToggle, PDFThumbnails, PDFOutline, PDFSearch,
196
258
  PDFZoomControls, PDFPageFit, PDFRotationControl,
197
259
  PDFNavigation, PDFDownloadButton, PDFChangeFile,
198
260
  PDFThemeToggle, PDFPrintButton,
261
+ PDFSignatures, PDFSignaturesIcon,
262
+ PDFAnnotations, PDFAnnotationsIcon,
199
263
  } from 'pdf-tsx'
200
264
  import {
201
- FiImage, FiList, FiSearch, FiChevronUp, FiChevronDown, FiX,
265
+ FiImage, FiList, FiPenTool, FiMessageSquare,
266
+ FiSearch, FiChevronUp, FiChevronDown, FiX,
202
267
  FiZoomIn, FiZoomOut, FiAlignJustify, FiMaximize2, FiRotateCw,
203
268
  FiChevronLeft, FiChevronRight, FiDownload, FiFolderPlus,
204
- FiPrinter, FiSun, FiMoon,
269
+ FiPrinter, FiSun, FiMoon, FiChevronsLeft, FiChevronsRight,
205
270
  } from 'react-icons/fi'
206
271
  import workerUrl from 'pdfjs-dist/build/pdf.worker.min.mjs?url'
207
272
 
@@ -227,13 +292,22 @@ function App() {
227
292
  workerSrc={workerUrl}
228
293
  onChangeFile={setFile}
229
294
  sidebar={
230
- <PDFSidebar panels={[
231
- { icon: <FiImage size={18} />, label: 'Thumbnails', content: <PDFThumbnails /> },
232
- { icon: <FiList size={18} />, label: 'Outline', content: <PDFOutline /> },
233
- ]} />
295
+ <PDFSidebar
296
+ collapseIcon={<FiChevronsLeft size={16} />}
297
+ panels={[
298
+ { icon: <FiImage size={18} />, label: 'Thumbnails', content: <PDFThumbnails /> },
299
+ { icon: <FiList size={18} />, label: 'Outline', content: <PDFOutline /> },
300
+ { icon: <PDFSignaturesIcon icon={<FiPenTool size={17} />} />, label: 'Signatures', content: <PDFSignatures /> },
301
+ { icon: <PDFAnnotationsIcon icon={<FiMessageSquare size={17} />} />, label: 'Annotations', content: <PDFAnnotations /> },
302
+ ]}
303
+ />
234
304
  }
235
305
  toolbar={
236
306
  <>
307
+ <PDFSidebarToggle
308
+ collapseIcon={<FiChevronsLeft size={16} />}
309
+ expandIcon={<FiChevronsRight size={16} />}
310
+ />
237
311
  <PDFSearch
238
312
  searchIcon={<FiSearch size={14} />}
239
313
  prevIcon={<FiChevronUp size={14} />}
@@ -1 +1 @@
1
- require(`../_virtual/_rolldown/runtime.cjs`);const e=require(`./PDFSidebar.module.cjs`);let t=require(`react`),n=require(`react/compiler-runtime`),r=require(`react/jsx-runtime`);function i(i){let a=(0,n.c)(14),{panels:o}=i,[s,c]=(0,t.useState)(null),l;a[0]===Symbol.for(`react.memo_cache_sentinel`)?(l=e=>c(t=>t===e?null:e),a[0]=l):l=a[0];let u=l,d;if(a[1]!==s||a[2]!==o){let t;a[4]===s?t=a[5]:(t=(t,n)=>(0,r.jsx)(`button`,{className:`${e.default.panelButton} ${s===n?e.default.panelButtonActive:``}`,onClick:()=>u(n),title:t.label,children:t.icon},n),a[4]=s,a[5]=t),d=o.map(t),a[1]=s,a[2]=o,a[3]=d}else d=a[3];let f;a[6]===d?f=a[7]:(f=(0,r.jsx)(`div`,{className:e.default.buttonBar,children:d}),a[6]=d,a[7]=f);let p;a[8]!==s||a[9]!==o?(p=s!==null&&(0,r.jsxs)(`div`,{className:e.default.contentPanel,children:[(0,r.jsx)(`div`,{className:e.default.panelHeader,children:o[s].label}),(0,r.jsx)(`div`,{className:e.default.panelBody,children:o[s].content})]}),a[8]=s,a[9]=o,a[10]=p):p=a[10];let m;return a[11]!==f||a[12]!==p?(m=(0,r.jsxs)(`div`,{className:e.default.wrapper,children:[f,p]}),a[11]=f,a[12]=p,a[13]=m):m=a[13],m}exports.PDFSidebar=i;
1
+ require(`../_virtual/_rolldown/runtime.cjs`);const e=require(`../context/PDFViewerContext.cjs`),t=require(`./PDFSidebar.module.cjs`);let n=require(`react`),r=require(`react/compiler-runtime`),i=require(`react/jsx-runtime`);function a(a){let o=(0,r.c)(18),{panels:s,collapseIcon:c}=a,{sidebarCollapsed:l,setSidebarCollapsed:u}=e.usePDFViewer(),[d,f]=(0,n.useState)(null),p;o[0]===Symbol.for(`react.memo_cache_sentinel`)?(p=e=>f(t=>t===e?null:e),o[0]=p):p=o[0];let m=p;if(l)return null;let h;o[1]!==c||o[2]!==u?(h=c!=null&&(0,i.jsx)(`button`,{className:`${t.default.panelButton} ${t.default.toggleButton}`,onClick:()=>u(!0),title:`Comprimi sidebar`,children:c}),o[1]=c,o[2]=u,o[3]=h):h=o[3];let g;if(o[4]!==d||o[5]!==s){let e;o[7]===d?e=o[8]:(e=(e,n)=>(0,i.jsx)(`button`,{className:`${t.default.panelButton} ${d===n?t.default.panelButtonActive:``}`,onClick:()=>m(n),title:e.label,children:e.icon},n),o[7]=d,o[8]=e),g=s.map(e),o[4]=d,o[5]=s,o[6]=g}else g=o[6];let _;o[9]!==h||o[10]!==g?(_=(0,i.jsxs)(`div`,{className:t.default.buttonBar,children:[h,g]}),o[9]=h,o[10]=g,o[11]=_):_=o[11];let v;o[12]!==d||o[13]!==s?(v=d!==null&&(0,i.jsxs)(`div`,{className:t.default.contentPanel,children:[(0,i.jsx)(`div`,{className:t.default.panelHeader,children:s[d].label}),(0,i.jsx)(`div`,{className:t.default.panelBody,children:s[d].content})]}),o[12]=d,o[13]=s,o[14]=v):v=o[14];let y;return o[15]!==_||o[16]!==v?(y=(0,i.jsxs)(`div`,{className:t.default.wrapper,children:[_,v]}),o[15]=_,o[16]=v,o[17]=y):y=o[17],y}exports.PDFSidebar=a;
@@ -1 +1 @@
1
- var e={wrapper:`_wrapper_184n8_1`,buttonBar:`_buttonBar_184n8_13`,panelButton:`_panelButton_184n8_33`,panelButtonActive:`_panelButtonActive_184n8_73`,contentPanel:`_contentPanel_184n8_91`,panelHeader:`_panelHeader_184n8_107`,panelBody:`_panelBody_184n8_131`};exports.default=e;
1
+ var e={wrapper:`_wrapper_1xud4_1`,wrapperCollapsed:`_wrapperCollapsed_1xud4_13`,buttonBar:`_buttonBar_1xud4_31`,toggleButton:`_toggleButton_1xud4_51`,panelButton:`_panelButton_1xud4_69`,panelButtonActive:`_panelButtonActive_1xud4_109`,contentPanel:`_contentPanel_1xud4_127`,panelHeader:`_panelHeader_1xud4_143`,panelBody:`_panelBody_1xud4_167`};exports.default=e;
@@ -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,className:b,style:x})=>{(0,u.useEffect)(()=>{d.GlobalWorkerOptions.workerSrc=p},[p]);let[S,C]=(0,u.useState)(null),[w,T]=(0,u.useState)(0),[E,D]=(0,u.useState)(1),[O,k]=(0,u.useState)(0),[A,j]=(0,u.useState)(null),[M,N]=(0,u.useState)(null),[P,F]=(0,u.useState)([]),[I,L]=(0,u.useState)(!1),[R,z]=(0,u.useState)(new Set),[B,V]=(0,u.useState)([]),H=(0,u.useRef)(null),U=(0,u.useRef)([]),W=(0,u.useRef)([]),G=(0,u.useRef)(O);(0,u.useEffect)(()=>{G.current=O},[O]),(0,u.useEffect)(()=>{if(!S||!y||!H.current)return;let e=H.current;s.computeFit(y,S,e,G.current).then(D)},[S,y]);let{currentPage:K,goToPage:q}=n.useScrollTracking({pdf:S,numPages:w,zoom:E,rotation:O,containerRef:H,canvasRefs:U});r.useKeyboardShortcuts({pdf:S,currentPage:K,numPages:w,goToPage:q,setZoom:D,setRotation:k});let J=i.useTextLayer({pdf:S,zoom:E,rotation:O,numPages:w,canvasRefs:U}),Y=o.useAnnotationLayer({pdf:S,zoom:E,rotation:O,numPages:w,goToPage:q});(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;C(e),T(e.numPages),j(null),N(null),z(new Set),V([]),U.current=Array(e.numPages).fill(null),W.current=Array(e.numPages).fill(null)}catch(e){console.error(`Errore caricamento:`,e)}},t.readAsArrayBuffer(e)})()},[e]),(0,u.useEffect)(()=>{if(!S)return;z(new Set);let e=!1;return(async()=>{let t=W.current.map(e=>e?(e.cancel(),e.promise.catch(()=>{})):Promise.resolve());if(await Promise.all(t),W.current=Array(S.numPages).fill(null),e)return;let n=[];for(let e=1;e<=S.numPages;e++){let t=(await S.getPage(e)).getViewport({scale:E,rotation:O});n.push({width:t.width,height:t.height})}if(!e){V(n);for(let t=1;t<=S.numPages;t++){if(e)return;let n=await S.getPage(t),r=n.getViewport({scale:E,rotation:O}),i=U.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});W.current[t-1]=o;try{await o.promise,e||z(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,W.current.forEach(e=>e?.cancel())}},[S,E,O]);let[X,Z]=(0,u.useState)([]);return(0,u.useEffect)(()=>{if(!S||P.length===0){Z([]);return}let e=!1;return(async()=>{let t=[];for(let n of P){if(e)break;let[r,i,a,o]=(await S.getPage(n.page)).getViewport({scale:E,rotation:O}).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||Z(t)})(),()=>{e=!0}},[P,E,O,S]),(0,u.useEffect)(()=>{if(!A||!S)return;let e=!1;return(async()=>{let[t,n,r,i]=(await S.getPage(A.page)).getViewport({scale:E,rotation:O}).convertToViewportRectangle(A.pdfRect);e||N({page:A.page,x:Math.min(t,r),y:Math.min(n,i),width:Math.abs(r-t),height:Math.abs(i-n)})})(),()=>{e=!0}},[A,E,O,S]),(0,f.jsx)(c.ThemeProvider,{themeOverrides:_,defaultTheme:v,children:(0,f.jsx)(t.PDFViewerContext.Provider,{value:{pdf:S,numPages:w,zoom:E,setZoom:D,rotation:O,setRotation:k,currentPage:K,goToPage:q,containerRef:H,canvasRefs:U,file:e,highlight:A,setHighlight:j,searchMatches:P,setSearchMatches:F,onChangeFile:g,sidebarCollapsed:I,setSidebarCollapsed:L},children:(0,f.jsxs)(`div`,{className:`${l.default.appLayout}${b?` ${b}`:``}`,style:x,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:H,children:Array.from({length:w},(e,t)=>{let n=R.has(t+1),r=B[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=>{U.current[t]=e},style:{display:n?`block`:`none`}}),(0,f.jsx)(`div`,{className:`textLayer ${l.default.textLayer}`,ref:e=>{J.current[t]=e}}),Y.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)),X.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)),A&&M?.page===t+1&&(0,f.jsx)(`div`,{className:l.default.highlightOverlay,style:{left:M.x,top:M.y,width:M.width,height:M.height}})]},`${t}-${O}`)})})]})]})})})};exports.default=p;
@@ -1 +1 @@
1
- var e={appLayout:`_appLayout_nel8e_1`,mainContent:`_mainContent_nel8e_15`,toolbar:`_toolbar_nel8e_29`,scrollContainer:`_scrollContainer_nel8e_53`,pageWrapper:`_pageWrapper_nel8e_73`,pageCanvas:`_pageCanvas_nel8e_83`,textLayer:`_textLayer_nel8e_97`,markedContent:`_markedContent_nel8e_149`,endOfContent:`_endOfContent_nel8e_177`,selecting:`_selecting_nel8e_195`,pageSkeleton:`_pageSkeleton_nel8e_235`,shimmer:`_shimmer_nel8e_1`,highlightOverlay:`_highlightOverlay_nel8e_267`,linkOverlay:`_linkOverlay_nel8e_283`,searchMatchOverlay:`_searchMatchOverlay_nel8e_295`};exports.default=e;
1
+ var e={appLayout:`_appLayout_8il7s_1`,mainContent:`_mainContent_8il7s_15`,toolbar:`_toolbar_8il7s_29`,scrollContainer:`_scrollContainer_8il7s_53`,pageWrapper:`_pageWrapper_8il7s_73`,pageCanvas:`_pageCanvas_8il7s_83`,textLayer:`_textLayer_8il7s_97`,markedContent:`_markedContent_8il7s_149`,endOfContent:`_endOfContent_8il7s_179`,selecting:`_selecting_8il7s_197`,pageSkeleton:`_pageSkeleton_8il7s_237`,shimmer:`_shimmer_8il7s_1`,highlightOverlay:`_highlightOverlay_8il7s_269`,linkOverlay:`_linkOverlay_8il7s_285`,searchMatchOverlay:`_searchMatchOverlay_8il7s_297`};exports.default=e;
@@ -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
- var e={navWrapper:`_navWrapper_6ysgx_1`,pageInput:`_pageInput_6ysgx_15`,pageTotal:`_pageTotal_6ysgx_71`};exports.default=e;
1
+ var e={navWrapper:`_navWrapper_1s04k_1`,pageInput:`_pageInput_1s04k_13`,pageTotal:`_pageTotal_1s04k_69`};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
- const e=require(`../../_virtual/_rolldown/runtime.cjs`),t=require(`../../context/PDFViewerContext.cjs`),n=require(`../../hooks/useTextSearch.cjs`),r=require(`./PDFSearch.module.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 s=(0,a.c)(33),{searchIcon:c,prevIcon:l,nextIcon:u,clearIcon:d}=e,{pdf:f,goToPage:p,setHighlight:m,setSearchMatches:h}=t.usePDFViewer(),[g,_]=(0,i.useState)(``),[v,y]=(0,i.useState)(0),b;s[0]!==f||s[1]!==g?(b={pdf:f,query:g},s[0]=f,s[1]=g,s[2]=b):b=s[2];let{matches:x,searching:S}=n.useTextSearch(b),C=x.length,w,T;s[3]!==x||s[4]!==h?(w=()=>(h(x),()=>h([])),T=[x,h],s[3]=x,s[4]=h,s[5]=w,s[6]=T):(w=s[5],T=s[6]),(0,i.useEffect)(w,T);let E;s[7]!==p||s[8]!==x||s[9]!==m||s[10]!==C?(E=e=>{let t=(e+C)%C;y(t);let n=x[t];p(n.page),m({page:n.page,pdfRect:n.pdfRect})},s[7]=p,s[8]=x,s[9]=m,s[10]=C,s[11]=E):E=s[11];let D=E,O;s[12]===m?O=s[13]:(O=e=>{_(e.target.value),y(0),m(null)},s[12]=m,s[13]=O);let k=O,A;s[14]===m?A=s[15]:(A=()=>{_(``),y(0),m(null)},s[14]=m,s[15]=A);let j=A,M;s[16]!==k||s[17]!==g?(M=(0,o.jsx)(`input`,{className:r.default.searchInput,value:g,onChange:k,placeholder:`Cerca nel documento...`}),s[16]=k,s[17]=g,s[18]=M):M=s[18];let N;s[19]!==d||s[20]!==j||s[21]!==v||s[22]!==D||s[23]!==u||s[24]!==l||s[25]!==g||s[26]!==S||s[27]!==C?(N=g&&(0,o.jsxs)(o.Fragment,{children:[(0,o.jsx)(`span`,{className:r.default.counter,children:S?`…`:C===0?`0`:`${v+1}/${C}`}),(0,o.jsx)(`button`,{className:r.default.navButton,onClick:()=>D(v-1),disabled:C===0,children:l}),(0,o.jsx)(`button`,{className:r.default.navButton,onClick:()=>D(v+1),disabled:C===0,children:u}),(0,o.jsx)(`button`,{className:r.default.navButton,onClick:j,children:d})]}),s[19]=d,s[20]=j,s[21]=v,s[22]=D,s[23]=u,s[24]=l,s[25]=g,s[26]=S,s[27]=C,s[28]=N):N=s[28];let P;return s[29]!==c||s[30]!==M||s[31]!==N?(P=(0,o.jsxs)(`div`,{className:r.default.wrapper,children:[c,M,N]}),s[29]=c,s[30]=M,s[31]=N,s[32]=P):P=s[32],P}exports.PDFSearch=s;
1
+ const e=require(`../../_virtual/_rolldown/runtime.cjs`),t=require(`../../context/PDFViewerContext.cjs`),n=require(`../../hooks/useTextSearch.cjs`),r=require(`./PDFSearch.module.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 s=(0,a.c)(35),{searchIcon:c,prevIcon:l,nextIcon:u,clearIcon:d}=e,{pdf:f,goToPage:p,setHighlight:m,setSearchMatches:h}=t.usePDFViewer(),[g,_]=(0,i.useState)(``),[v,y]=(0,i.useState)(0),b;s[0]!==f||s[1]!==g?(b={pdf:f,query:g},s[0]=f,s[1]=g,s[2]=b):b=s[2];let{matches:x,searching:S}=n.useTextSearch(b),C=x.length,w,T;s[3]!==x||s[4]!==h?(w=()=>(h(x),()=>h([])),T=[x,h],s[3]=x,s[4]=h,s[5]=w,s[6]=T):(w=s[5],T=s[6]),(0,i.useEffect)(w,T);let E;s[7]!==p||s[8]!==x||s[9]!==m||s[10]!==C?(E=e=>{let t=(e+C)%C;y(t);let n=x[t];p(n.page),m({page:n.page,pdfRect:n.pdfRect})},s[7]=p,s[8]=x,s[9]=m,s[10]=C,s[11]=E):E=s[11];let D=E,O;s[12]===m?O=s[13]:(O=e=>{_(e.target.value),y(0),m(null)},s[12]=m,s[13]=O);let k=O,A;s[14]===m?A=s[15]:(A=()=>{_(``),y(0),m(null)},s[14]=m,s[15]=A);let j=A,M;s[16]===c?M=s[17]:(M=(0,o.jsx)(`span`,{className:r.default.searchIconWrapper,children:c}),s[16]=c,s[17]=M);let N;s[18]!==k||s[19]!==g?(N=(0,o.jsx)(`input`,{className:r.default.searchInput,value:g,onChange:k,placeholder:`Cerca nel documento...`}),s[18]=k,s[19]=g,s[20]=N):N=s[20];let P;s[21]!==d||s[22]!==j||s[23]!==v||s[24]!==D||s[25]!==u||s[26]!==l||s[27]!==g||s[28]!==S||s[29]!==C?(P=g&&(0,o.jsxs)(o.Fragment,{children:[(0,o.jsx)(`span`,{className:r.default.counter,children:S?`…`:C===0?`0`:`${v+1}/${C}`}),(0,o.jsx)(`button`,{className:r.default.navButton,onClick:()=>D(v-1),disabled:C===0,children:l}),(0,o.jsx)(`button`,{className:r.default.navButton,onClick:()=>D(v+1),disabled:C===0,children:u}),(0,o.jsx)(`button`,{className:r.default.navButton,onClick:j,children:d})]}),s[21]=d,s[22]=j,s[23]=v,s[24]=D,s[25]=u,s[26]=l,s[27]=g,s[28]=S,s[29]=C,s[30]=P):P=s[30];let F;return s[31]!==M||s[32]!==N||s[33]!==P?(F=(0,o.jsxs)(`div`,{className:r.default.wrapper,children:[M,N,P]}),s[31]=M,s[32]=N,s[33]=P,s[34]=F):F=s[34],F}exports.PDFSearch=s;
@@ -1 +1 @@
1
- var e={wrapper:`_wrapper_yinyt_1`,searchInput:`_searchInput_yinyt_13`,navButton:`_navButton_yinyt_53`,counter:`_counter_yinyt_95`};exports.default=e;
1
+ var e={wrapper:`_wrapper_4qrs1_1`,searchIconWrapper:`_searchIconWrapper_4qrs1_13`,searchInput:`_searchInput_4qrs1_25`,navButton:`_navButton_4qrs1_65`,counter:`_counter_4qrs1_107`};exports.default=e;
@@ -0,0 +1 @@
1
+ require(`../../_virtual/_rolldown/runtime.cjs`);const e=require(`../../context/PDFViewerContext.cjs`),t=require(`../ui/ToolbarButton.module.cjs`);let n=require(`react/compiler-runtime`),r=require(`react/jsx-runtime`);function i(i){let a=(0,n.c)(5),{collapseIcon:o,expandIcon:s}=i,{sidebarCollapsed:c,setSidebarCollapsed:l}=e.usePDFViewer();if(!c)return null;let u;a[0]===l?u=a[1]:(u=()=>l(!1),a[0]=l,a[1]=u);let d=s??o,f;return a[2]!==u||a[3]!==d?(f=(0,r.jsx)(`button`,{className:t.default.btn,onClick:u,title:`Espandi sidebar`,children:d}),a[2]=u,a[3]=d,a[4]=f):f=a[4],f}exports.PDFSidebarToggle=i;
@@ -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`),g=require(`./components/features/PDFSidebarToggle.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.PDFSidebarToggle=g.PDFSidebarToggle,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_1xud4_1{border-right:1px solid var(--pdf-border);height:100%;display:flex}._wrapperCollapsed_1xud4_13{border-right:1px solid var(--pdf-border);background-color:var(--pdf-bg);flex-direction:column;height:100%;padding-top:4px;display:flex}._buttonBar_1xud4_31{background-color:var(--pdf-bg);flex-direction:column;flex-shrink:0;gap:2px;width:48px;padding-top:4px;display:flex}._toggleButton_1xud4_51{border-bottom:1px solid var(--pdf-border);border-radius:0;width:48px;margin:0;padding-bottom:6px}._panelButton_1xud4_69{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_1xud4_69:hover{background-color:var(--pdf-surface);color:var(--pdf-text-secondary)}._panelButtonActive_1xud4_109{background-color:var(--pdf-surface);color:var(--pdf-accent-light)}._panelButtonActive_1xud4_109:hover{color:var(--pdf-accent-light)}._contentPanel_1xud4_127{background-color:var(--pdf-panel-bg);border-right:1px solid var(--pdf-panel-border);flex-direction:column;width:260px;display:flex}._panelHeader_1xud4_143{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_1xud4_167{flex:1;overflow-y:auto}._appLayout_8il7s_1{width:100%;height:100%;display:flex;overflow:hidden}._mainContent_8il7s_15{flex-direction:column;flex:1;min-width:0;display:flex}._toolbar_8il7s_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_8il7s_53{background-color:var(--pdf-scroll-area);flex-direction:column;flex:1;align-items:center;padding:10px 20px;display:flex;overflow-y:auto}._pageWrapper_8il7s_73{margin-bottom:25px;position:relative}._pageCanvas_8il7s_83{box-shadow:0 5px 20px var(--pdf-shadow-page);pointer-events:none;background-color:#fff;display:block}._textLayer_8il7s_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_8il7s_97 :is(span,br){color:#0000;white-space:pre;cursor:text;transform-origin:0 0;position:absolute}._textLayer_8il7s_97>:not(._markedContent_8il7s_149),._textLayer_8il7s_97 ._markedContent_8il7s_149 span:not(._markedContent_8il7s_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_8il7s_97 ._markedContent_8il7s_149{display:contents}._textLayer_8il7s_97 ._endOfContent_8il7s_179{z-index:0;cursor:default;-webkit-user-select:none;user-select:none;display:block;position:absolute;inset:100% 0 0}._textLayer_8il7s_97._selecting_8il7s_197 ._endOfContent_8il7s_179{top:0}._textLayer_8il7s_97 ::selection{background:#0000ff40}._textLayer_8il7s_97 br::selection{background:0 0}._pageSkeleton_8il7s_237{background:linear-gradient(90deg,#3f3f46 25%,#52525b 50%,#3f3f46 75%) 0 0/200% 100%;border-radius:1px;animation:1.4s infinite _shimmer_8il7s_1}@keyframes _shimmer_8il7s_1{0%{background-position:200% 0}to{background-position:-200% 0}}._highlightOverlay_8il7s_269{pointer-events:none;background-color:#ffdc0059;border:2px solid #ffa000e6;border-radius:2px;position:absolute}._linkOverlay_8il7s_285{pointer-events:all;cursor:pointer;position:absolute}._searchMatchOverlay_8il7s_297{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_1s04k_1{align-items:center;gap:2px;display:flex}._pageInput_1s04k_13{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_1s04k_13:focus{border-color:var(--pdf-accent);background:var(--pdf-bg)}._pageInput_1s04k_13::-webkit-outer-spin-button{-webkit-appearance:none}._pageInput_1s04k_13::-webkit-inner-spin-button{-webkit-appearance:none}._pageInput_1s04k_13{-moz-appearance:textfield}._pageTotal_1s04k_69{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_4qrs1_1{align-items:center;gap:4px;display:flex}._searchIconWrapper_4qrs1_13{color:var(--pdf-text-secondary);align-items:center;display:flex}._searchInput_4qrs1_25{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_4qrs1_25:focus{border-color:var(--pdf-accent)}._searchInput_4qrs1_25::placeholder{color:var(--pdf-text-placeholder)}._navButton_4qrs1_65{color:var(--pdf-text-secondary);cursor:pointer;background:0 0;border:none;border-radius:4px;align-items:center;padding:4px 5px;display:flex}._navButton_4qrs1_65:hover:not(:disabled){background:var(--pdf-surface);color:var(--pdf-text-primary)}._navButton_4qrs1_65:disabled{color:var(--pdf-border);cursor:default}._counter_4qrs1_107{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;
@@ -6,6 +6,7 @@ export interface SidebarPanel {
6
6
  }
7
7
  interface PDFSidebarProps {
8
8
  panels: SidebarPanel[];
9
+ collapseIcon?: ReactNode;
9
10
  }
10
- export declare function PDFSidebar({ panels }: PDFSidebarProps): import("react/jsx-runtime").JSX.Element;
11
+ export declare function PDFSidebar({ panels, collapseIcon }: PDFSidebarProps): import("react/jsx-runtime").JSX.Element | null;
11
12
  export {};
@@ -10,6 +10,10 @@ interface PDFViewerProps {
10
10
  light?: Partial<Theme>;
11
11
  dark?: Partial<Theme>;
12
12
  };
13
+ defaultTheme?: "light" | "dark";
14
+ defaultFit?: "width" | "page";
15
+ className?: string;
16
+ style?: React.CSSProperties;
13
17
  }
14
18
  declare const PDFViewer: React.FC<PDFViewerProps>;
15
19
  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;
@@ -0,0 +1,7 @@
1
+ import { ReactNode } from 'react';
2
+ interface PDFSidebarToggleProps {
3
+ collapseIcon: ReactNode;
4
+ expandIcon: ReactNode;
5
+ }
6
+ export declare function PDFSidebarToggle({ collapseIcon, expandIcon }: PDFSidebarToggleProps): import("react/jsx-runtime").JSX.Element | null;
7
+ export {};
@@ -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;
@@ -20,6 +20,8 @@ export interface PDFViewerContextValue {
20
20
  searchMatches: HighlightRect[];
21
21
  setSearchMatches: (matches: HighlightRect[]) => void;
22
22
  onChangeFile?: (file: File) => void;
23
+ sidebarCollapsed: boolean;
24
+ setSidebarCollapsed: React.Dispatch<React.SetStateAction<boolean>>;
23
25
  }
24
26
  export declare const PDFViewerContext: import('react').Context<PDFViewerContextValue | null>;
25
27
  export declare function usePDFViewer(): PDFViewerContextValue;
@@ -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 {};