pdf-tsx 0.13.0 → 0.15.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.
package/README.md CHANGED
@@ -466,6 +466,18 @@ function App() {
466
466
 
467
467
  ---
468
468
 
469
+ ## Keyboard shortcuts
470
+
471
+ When focus is not on an input or textarea, the following keys are active:
472
+
473
+ | Key | Action |
474
+ |-----------------------------|------------------|
475
+ | `ArrowLeft` / `ArrowUp` | Previous page |
476
+ | `ArrowRight` / `ArrowDown` | Next page |
477
+ | `r` / `R` | Rotate +90° |
478
+
479
+ ---
480
+
469
481
  ## Performance
470
482
 
471
483
  `pdf-tsx` uses **virtual rendering**: only the pages near the current view are rendered at any one time. The default window is the current page ±2. Pages with an active highlight or search match are always included regardless of position.
@@ -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`),ee=require(`../hooks/useAnnotationLayer.cjs`),te=require(`../hooks/usePDFLoader.cjs`),ne=require(`../hooks/usePDFRenderer.cjs`),re=require(`../hooks/useOverlayRects.cjs`),o=require(`../utils/pdfFit.cjs`),ie=require(`../context/ThemeContext.cjs`),ae=require(`../context/LabelsContext.cjs`),s=require(`../hooks/useLabels.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=2;function oe({hasRead:e}){let t=s.useLabels();return(0,d.jsxs)(`div`,{className:`${c.default.requireReadBanner} ${e?c.default.requireReadDone:``}`,children:[e?(0,d.jsx)(`svg`,{width:`16`,height:`16`,viewBox:`0 0 16 16`,fill:`none`,"aria-hidden":`true`,children:(0,d.jsx)(`path`,{d:`M3 8l3.5 3.5L13 4.5`,stroke:`currentColor`,strokeWidth:`2`,strokeLinecap:`round`,strokeLinejoin:`round`})}):(0,d.jsx)(`svg`,{width:`16`,height:`16`,viewBox:`0 0 16 16`,fill:`none`,"aria-hidden":`true`,children:(0,d.jsx)(`path`,{d:`M8 3v10M4 9l4 4 4-4`,stroke:`currentColor`,strokeWidth:`2`,strokeLinecap:`round`,strokeLinejoin:`round`})}),(0,d.jsx)(`span`,{children:e?t.requireReadDone:t.requireReadPending})]})}var p=({file:e,workerSrc:s,sidebar:p,toolbar:m,onChangeFile:h,themeOverrides:se,defaultTheme:ce,defaultFit:g,language:le,className:_,style:ue,requireRead:v,onDocumentRead:y})=>{(0,l.useEffect)(()=>{u.GlobalWorkerOptions.workerSrc=s},[s]);let[b,x]=(0,l.useState)(1),[S,C]=(0,l.useState)(0),[w,T]=(0,l.useState)(null),[E,de]=(0,l.useState)([]),[D,fe]=(0,l.useState)(!1),[O,k]=(0,l.useState)(g??null),[A,j]=(0,l.useState)(null),[M,N]=(0,l.useState)(!1),P=(0,l.useRef)(!1),F=(0,l.useRef)(null),I=(0,l.useRef)([]),L=(0,l.useRef)([]),R=(0,l.useRef)(S);(0,l.useEffect)(()=>{R.current=S},[S]);let[pe,z]=(0,l.useState)(null);pe!==e&&(z(e),T(null),N(!1),P.current=!1);let{pdf:B,numPages:V,loading:me}=te.usePDFLoader(e);(0,l.useEffect)(()=>{N(!1),P.current=!1},[v]),(0,l.useEffect)(()=>{B&&(I.current=Array(B.numPages).fill(null),L.current=Array(B.numPages).fill(null))},[B]),(0,l.useEffect)(()=>{!B||!g||!F.current||o.computeFit(g,B,F.current,R.current).then(x)},[B,g]);let H=(0,l.useRef)(O);(0,l.useEffect)(()=>{H.current=O},[O]),(0,l.useEffect)(()=>{if(!B||!F.current)return;let e=F.current,t=new ResizeObserver(()=>{H.current&&o.computeFit(H.current,B,e,R.current).then(x)});return t.observe(e),()=>t.disconnect()},[B]);let{currentPage:U,goToPage:W}=n.useScrollTracking({numPages:V,containerRef:F,pageRefs:I});(0,l.useEffect)(()=>{!v||M||V===0||U>=V&&(N(!0),P.current||(P.current=!0,y?.()))},[U,V,v,M,y]);let G=(0,l.useMemo)(()=>{if(V===0)return[];let e=new Set,t=Math.max(U-f,1),n=Math.min(U+f,V);for(let r=t;r<=n;r++)e.add(r);w&&e.add(w.page);for(let t of E)e.add(t.page);return Array.from(e).sort((e,t)=>e-t)},[U,V,w,E]),{pageSizes:he,renderedPages:K}=ne.usePDFRenderer({pdf:B,zoom:b,rotation:S,visiblePages:G,canvasRefs:L}),q=(0,l.useMemo)(()=>{let e=new Set(G);for(let t of K)e.add(t);return Array.from(e).sort((e,t)=>e-t)},[G,K]);r.useKeyboardShortcuts({pdf:B,currentPage:U,goToPage:W,setZoom:x,setRotation:C,setFitMode:k});let ge=i.useTextLayer({pdf:B,zoom:b,rotation:S,mountedPages:q,canvasRefs:L}),{linkOverlays:_e,noteOverlays:J}=ee.useAnnotationLayer({pdf:B,zoom:b,rotation:S,mountedPages:q,goToPage:W});(0,l.useEffect)(()=>{if(!A)return;let e=()=>j(null),t=e=>{e.key===`Escape`&&j(null)};return document.addEventListener(`click`,e),document.addEventListener(`keydown`,t),()=>{document.removeEventListener(`click`,e),document.removeEventListener(`keydown`,t)}},[A]);let{overlayRect:Y,searchOverlays:ve}=re.useOverlayRects({pdf:B,highlight:w,searchMatches:E,zoom:b,rotation:S}),ye=(0,l.useCallback)((e,t)=>{(!e.url||!a.isSafeUrl(e.url))&&(t.preventDefault(),e.url||e._handleClick())},[]),X=(0,l.useRef)(null),Z=(0,l.useCallback)((e,t)=>{X.current&&clearTimeout(X.current);let n=t.clientY>window.innerHeight*.6;j({x:Math.min(t.clientX,window.innerWidth-304),y:n?window.innerHeight-t.clientY+8:t.clientY+12,above:n,contents:e.contents,title:e.title})},[]),Q=(0,l.useCallback)(()=>{X.current=setTimeout(()=>j(null),200)},[]),$=(0,l.useCallback)(e=>{T({page:e.page,pdfRect:e.pdfRect}),W(e.page)},[T,W]),be=(0,l.useMemo)(()=>({pdf:B,numPages:V,zoom:b,setZoom:x,rotation:S,setRotation:C,currentPage:U,goToPage:W,containerRef:F,canvasRefs:L,file:e,highlight:w,setHighlight:T,searchMatches:E,setSearchMatches:de,onChangeFile:h,sidebarCollapsed:D,setSidebarCollapsed:fe,fitMode:O,setFitMode:k,navigationLocked:!!v&&!M}),[B,V,b,S,U,W,e,w,E,h,D,O,v,M]);return(0,d.jsx)(ie.ThemeProvider,{themeOverrides:se,defaultTheme:ce,children:(0,d.jsx)(ae.LabelsProvider,{language:le,children:(0,d.jsxs)(t.PDFViewerContext.Provider,{value:be,children:[(0,d.jsxs)(`div`,{className:`${c.default.appLayout}${_?` ${_}`:``}`,style:ue,children:[m&&(0,d.jsx)(`div`,{className:c.default.toolbar,children:m}),(0,d.jsxs)(`div`,{className:c.default.body,children:[p,(0,d.jsxs)(`div`,{className:c.default.scrollContainer,ref:F,children:[me&&(0,d.jsx)(`div`,{className:c.default.documentLoading}),Array.from({length:V},(e,t)=>{let n=K.has(t+1),r=he[t],i=q.includes(t+1);return(0,d.jsxs)(`div`,{className:c.default.pageWrapper,ref:e=>{I.current[t]=e},style:r?{width:r.width,height:r.height}:void 0,children:[r&&!n&&(0,d.jsx)(`div`,{className:c.default.pageSkeleton,style:{width:r.width,height:r.height}}),i&&(0,d.jsxs)(d.Fragment,{children:[(0,d.jsx)(`canvas`,{className:c.default.pageCanvas,ref:e=>{L.current[t]=e},style:{display:n?`block`:`none`}}),(0,d.jsx)(`div`,{className:`textLayer ${c.default.textLayer}`,ref:e=>{ge.current[t]=e}})]}),_e.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=>ye(e,t)},t)),J.filter(e=>e.page===t+1).map((e,t)=>e.subtype===`Text`?(0,d.jsx)(`div`,{className:c.default.noteIconOverlay,style:{left:e.x,top:e.y,width:Math.max(e.width,26),height:Math.max(e.height,26)},onMouseEnter:t=>Z(e,t),onMouseLeave:Q,onClick:()=>$(e),children:(0,d.jsxs)(`svg`,{width:`22`,height:`22`,viewBox:`0 0 12 12`,fill:`none`,"aria-hidden":`true`,children:[(0,d.jsx)(`rect`,{x:`0.5`,y:`0.5`,width:`9`,height:`8`,rx:`1`,fill:`rgba(255,210,0,0.9)`,stroke:`rgba(160,120,0,0.7)`,strokeWidth:`1`}),(0,d.jsx)(`path`,{d:`M9.5 5.5v3l2.5-3z`,fill:`rgba(255,210,0,0.9)`,stroke:`rgba(160,120,0,0.7)`,strokeWidth:`1`}),(0,d.jsx)(`line`,{x1:`2`,y1:`3`,x2:`8`,y2:`3`,stroke:`rgba(90,60,0,0.8)`,strokeWidth:`1`,strokeLinecap:`round`}),(0,d.jsx)(`line`,{x1:`2`,y1:`5.5`,x2:`7`,y2:`5.5`,stroke:`rgba(90,60,0,0.8)`,strokeWidth:`1`,strokeLinecap:`round`})]})},t):(0,d.jsx)(`div`,{className:c.default.noteOverlay,style:{left:e.x,top:e.y,width:e.width,height:e.height},onMouseEnter:t=>Z(e,t),onMouseLeave:Q,onClick:()=>$(e)},t)),ve.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)),w&&Y?.page===t+1&&(0,d.jsx)(`div`,{className:c.default.highlightOverlay,style:{left:Y.x,top:Y.y,width:Y.width,height:Y.height}})]},`${t}-${S}`)}),v&&(0,d.jsx)(oe,{hasRead:M})]})]})]}),A&&(0,d.jsxs)(`div`,{className:c.default.notePopover,style:A.above?{left:A.x,bottom:A.y}:{left:A.x,top:A.y},onMouseEnter:()=>{X.current&&clearTimeout(X.current)},onMouseLeave:Q,onClick:e=>e.stopPropagation(),children:[A.title&&(0,d.jsx)(`div`,{className:c.default.notePopoverTitle,children:A.title}),(0,d.jsx)(`p`,{className:c.default.notePopoverContent,children:A.contents})]})]})})})};exports.default=p;
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`),ee=require(`../hooks/useAnnotationLayer.cjs`),te=require(`../hooks/usePDFLoader.cjs`),ne=require(`../hooks/usePDFRenderer.cjs`),re=require(`../hooks/useOverlayRects.cjs`),o=require(`../utils/pdfFit.cjs`),ie=require(`../context/ThemeContext.cjs`),ae=require(`../context/LabelsContext.cjs`),s=require(`../hooks/useLabels.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=2;function oe({hasRead:e}){let t=s.useLabels();return(0,d.jsxs)(`div`,{className:`${c.default.requireReadBanner} ${e?c.default.requireReadDone:``}`,children:[e?(0,d.jsx)(`svg`,{width:`16`,height:`16`,viewBox:`0 0 16 16`,fill:`none`,"aria-hidden":`true`,children:(0,d.jsx)(`path`,{d:`M3 8l3.5 3.5L13 4.5`,stroke:`currentColor`,strokeWidth:`2`,strokeLinecap:`round`,strokeLinejoin:`round`})}):(0,d.jsx)(`svg`,{width:`16`,height:`16`,viewBox:`0 0 16 16`,fill:`none`,"aria-hidden":`true`,children:(0,d.jsx)(`path`,{d:`M8 3v10M4 9l4 4 4-4`,stroke:`currentColor`,strokeWidth:`2`,strokeLinecap:`round`,strokeLinejoin:`round`})}),(0,d.jsx)(`span`,{children:e?t.requireReadDone:t.requireReadPending})]})}var p=({file:e,workerSrc:s,sidebar:p,toolbar:m,onChangeFile:h,themeOverrides:se,defaultTheme:ce,defaultFit:g,language:le,className:_,style:ue,requireRead:v,onDocumentRead:y})=>{(0,l.useEffect)(()=>{u.GlobalWorkerOptions.workerSrc=s},[s]);let[b,x]=(0,l.useState)(1),[S,C]=(0,l.useState)(0),[w,T]=(0,l.useState)(null),[E,de]=(0,l.useState)([]),[D,fe]=(0,l.useState)(!1),[O,pe]=(0,l.useState)(g??null),[k,A]=(0,l.useState)(null),[j,M]=(0,l.useState)(!1),N=(0,l.useRef)(!1),P=(0,l.useRef)(null),F=(0,l.useRef)([]),I=(0,l.useRef)([]),L=(0,l.useRef)(S);(0,l.useEffect)(()=>{L.current=S},[S]);let[R,z]=(0,l.useState)(null);R!==e&&(z(e),T(null),M(!1)),(0,l.useEffect)(()=>{N.current=!1},[e]);let{pdf:B,numPages:V,loading:me}=te.usePDFLoader(e);(0,l.useEffect)(()=>{B&&(F.current=Array(B.numPages).fill(null),I.current=Array(B.numPages).fill(null))},[B]),(0,l.useEffect)(()=>{!B||!g||!P.current||o.computeFit(g,B,P.current,L.current).then(x)},[B,g]);let H=(0,l.useRef)(O);(0,l.useEffect)(()=>{H.current=O},[O]),(0,l.useEffect)(()=>{if(!B||!P.current)return;let e=P.current,t=new ResizeObserver(()=>{H.current&&o.computeFit(H.current,B,e,L.current).then(x)});return t.observe(e),()=>t.disconnect()},[B]);let{currentPage:U,goToPage:W}=n.useScrollTracking({numPages:V,containerRef:P,pageRefs:F});(0,l.useEffect)(()=>{V===0||U<V||(v&&!j&&M(!0),N.current||(N.current=!0,y?.()))},[U,V,v,j,y]);let G=(0,l.useMemo)(()=>{if(V===0)return[];let e=new Set,t=Math.max(U-f,1),n=Math.min(U+f,V);for(let r=t;r<=n;r++)e.add(r);w&&e.add(w.page);for(let t of E)e.add(t.page);return Array.from(e).sort((e,t)=>e-t)},[U,V,w,E]),{pageSizes:he,renderedPages:K}=ne.usePDFRenderer({pdf:B,zoom:b,rotation:S,visiblePages:G,canvasRefs:I}),q=(0,l.useMemo)(()=>{let e=new Set(G);for(let t of K)e.add(t);return Array.from(e).sort((e,t)=>e-t)},[G,K]);r.useKeyboardShortcuts({pdf:B,currentPage:U,goToPage:W,setRotation:C});let ge=i.useTextLayer({pdf:B,zoom:b,rotation:S,mountedPages:q,canvasRefs:I}),{linkOverlays:_e,noteOverlays:J}=ee.useAnnotationLayer({pdf:B,zoom:b,rotation:S,mountedPages:q,goToPage:W});(0,l.useEffect)(()=>{if(!k)return;let e=()=>A(null),t=e=>{e.key===`Escape`&&A(null)};return document.addEventListener(`click`,e),document.addEventListener(`keydown`,t),()=>{document.removeEventListener(`click`,e),document.removeEventListener(`keydown`,t)}},[k]);let{overlayRect:Y,searchOverlays:ve}=re.useOverlayRects({pdf:B,highlight:w,searchMatches:E,zoom:b,rotation:S}),ye=(0,l.useCallback)((e,t)=>{(!e.url||!a.isSafeUrl(e.url))&&(t.preventDefault(),e.url||e._handleClick())},[]),X=(0,l.useRef)(null),Z=(0,l.useCallback)((e,t)=>{X.current&&clearTimeout(X.current);let n=t.clientY>window.innerHeight*.6;A({x:Math.min(t.clientX,window.innerWidth-304),y:n?window.innerHeight-t.clientY+8:t.clientY+12,above:n,contents:e.contents,title:e.title})},[]),Q=(0,l.useCallback)(()=>{X.current=setTimeout(()=>A(null),200)},[]),$=(0,l.useCallback)(e=>{T({page:e.page,pdfRect:e.pdfRect}),W(e.page)},[T,W]),be=(0,l.useMemo)(()=>({pdf:B,numPages:V,zoom:b,setZoom:x,rotation:S,setRotation:C,currentPage:U,goToPage:W,containerRef:P,canvasRefs:I,file:e,highlight:w,setHighlight:T,searchMatches:E,setSearchMatches:de,onChangeFile:h,sidebarCollapsed:D,setSidebarCollapsed:fe,fitMode:O,setFitMode:pe,navigationLocked:!!v&&!j}),[B,V,b,S,U,W,e,w,E,h,D,O,v,j]);return(0,d.jsx)(ie.ThemeProvider,{themeOverrides:se,defaultTheme:ce,children:(0,d.jsx)(ae.LabelsProvider,{language:le,children:(0,d.jsxs)(t.PDFViewerContext.Provider,{value:be,children:[(0,d.jsxs)(`div`,{className:`${c.default.appLayout}${_?` ${_}`:``}`,style:ue,children:[m&&(0,d.jsx)(`div`,{className:c.default.toolbar,children:m}),(0,d.jsxs)(`div`,{className:c.default.body,children:[p,(0,d.jsxs)(`div`,{className:c.default.scrollContainer,ref:P,children:[me&&(0,d.jsx)(`div`,{className:c.default.documentLoading}),Array.from({length:V},(e,t)=>{let n=K.has(t+1),r=he[t],i=q.includes(t+1);return(0,d.jsxs)(`div`,{className:c.default.pageWrapper,ref:e=>{F.current[t]=e},style:r?{width:r.width,height:r.height}:void 0,children:[r&&!n&&(0,d.jsx)(`div`,{className:c.default.pageSkeleton,style:{width:r.width,height:r.height}}),i&&(0,d.jsxs)(d.Fragment,{children:[(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=>{ge.current[t]=e}})]}),_e.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=>ye(e,t)},t)),J.filter(e=>e.page===t+1).map((e,t)=>e.subtype===`Text`?(0,d.jsx)(`div`,{className:c.default.noteIconOverlay,style:{left:e.x,top:e.y,width:Math.max(e.width,26),height:Math.max(e.height,26)},onMouseEnter:t=>Z(e,t),onMouseLeave:Q,onClick:()=>$(e),children:(0,d.jsxs)(`svg`,{width:`22`,height:`22`,viewBox:`0 0 12 12`,fill:`none`,"aria-hidden":`true`,children:[(0,d.jsx)(`rect`,{x:`0.5`,y:`0.5`,width:`9`,height:`8`,rx:`1`,fill:`rgba(255,210,0,0.9)`,stroke:`rgba(160,120,0,0.7)`,strokeWidth:`1`}),(0,d.jsx)(`path`,{d:`M9.5 5.5v3l2.5-3z`,fill:`rgba(255,210,0,0.9)`,stroke:`rgba(160,120,0,0.7)`,strokeWidth:`1`}),(0,d.jsx)(`line`,{x1:`2`,y1:`3`,x2:`8`,y2:`3`,stroke:`rgba(90,60,0,0.8)`,strokeWidth:`1`,strokeLinecap:`round`}),(0,d.jsx)(`line`,{x1:`2`,y1:`5.5`,x2:`7`,y2:`5.5`,stroke:`rgba(90,60,0,0.8)`,strokeWidth:`1`,strokeLinecap:`round`})]})},t):(0,d.jsx)(`div`,{className:c.default.noteOverlay,style:{left:e.x,top:e.y,width:e.width,height:e.height},onMouseEnter:t=>Z(e,t),onMouseLeave:Q,onClick:()=>$(e)},t)),ve.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)),w&&Y?.page===t+1&&(0,d.jsx)(`div`,{className:c.default.highlightOverlay,style:{left:Y.x,top:Y.y,width:Y.width,height:Y.height}})]},`${t}-${S}`)}),v&&(0,d.jsx)(oe,{hasRead:j})]})]})]}),k&&(0,d.jsxs)(`div`,{className:c.default.notePopover,style:k.above?{left:k.x,bottom:k.y}:{left:k.x,top:k.y},onMouseEnter:()=>{X.current&&clearTimeout(X.current)},onMouseLeave:Q,onClick:e=>e.stopPropagation(),children:[k.title&&(0,d.jsx)(`div`,{className:c.default.notePopoverTitle,children:k.title}),(0,d.jsx)(`p`,{className:c.default.notePopoverContent,children:k.contents})]})]})})})};exports.default=p;
@@ -1 +1 @@
1
- const e=require(`../../_virtual/_rolldown/runtime.cjs`),t=require(`../../hooks/useLabels.cjs`),n=require(`./ToolbarButton.cjs`),r=require(`./PDFToolbar.module.cjs`),i=require(`./PDFToolbarDropdownContext.cjs`);let a=require(`react`);a=e.__toESM(a,1);let o=require(`react/jsx-runtime`);var s=40;function c({children:e,overflowIcon:c=`···`}){let l=t.useLabels(),u=(0,a.useRef)(null),d=(0,a.useRef)([]),f=(0,a.useRef)([]),[p,m]=(0,a.useState)(null),[h,g]=(0,a.useState)(!1),_=(0,a.useRef)(null),v=a.default.Children.toArray(e),y=(0,a.useCallback)(()=>{let e=u.current,t=f.current;if(!e||t.length===0)return;let n=e.offsetWidth;if(t.reduce((e,t)=>e+t,0)<=n){m(null);return}let r=0,i=0;for(let e=0;e<t.length&&r+t[e]+s<=n;e++)r+=t[e],i++;m(i)},[]);(0,a.useLayoutEffect)(()=>{f.current=d.current.slice(0,v.length).map(e=>e?.offsetWidth??0),y()},[]),(0,a.useEffect)(()=>{let e=u.current;if(!e)return;let t=new ResizeObserver(()=>y());return t.observe(e),()=>t.disconnect()},[y]),(0,a.useEffect)(()=>{if(!h)return;let e=e=>{_.current?.contains(e.target)||g(!1)};return document.addEventListener(`mousedown`,e),()=>document.removeEventListener(`mousedown`,e)},[h]);let b=p!==null&&p<v.length,x=b?v.slice(p):[];return(0,o.jsxs)(`div`,{ref:u,className:r.default.toolbar,children:[v.map((e,t)=>(0,o.jsx)(`div`,{ref:e=>{d.current[t]=e},className:r.default.item,style:p!==null&&t>=p?{display:`none`}:void 0,children:e},t)),b&&(0,o.jsxs)(`div`,{ref:_,className:r.default.overflowWrapper,children:[(0,o.jsx)(n.ToolbarButton,{onClick:()=>g(e=>!e),"aria-label":l.toolbarMoreOptions,"aria-expanded":h,"aria-haspopup":`true`,title:l.toolbarMoreOptions,className:h?r.default.overflowBtnActive:void 0,children:c}),h&&(0,o.jsx)(`div`,{className:r.default.dropdown,role:`menu`,children:x.map((e,t)=>{let n=a.default.isValidElement(e)?e.type.toolbarLabelKey:void 0,s=n?l[n]:void 0;return(0,o.jsx)(`div`,{className:r.default.dropdownItem,role:`menuitem`,children:s?(0,o.jsxs)(`div`,{className:r.default.labeledItem,children:[(0,o.jsx)(`span`,{className:r.default.itemLabel,children:s}),(0,o.jsx)(`div`,{className:r.default.itemContent,children:e})]}):(0,o.jsx)(i.PDFToolbarDropdownContext.Provider,{value:!0,children:e})},t)})})]})]})}exports.PDFToolbar=c;
1
+ const e=require(`../../_virtual/_rolldown/runtime.cjs`),t=require(`../../hooks/useLabels.cjs`),n=require(`./ToolbarButton.cjs`),r=require(`./PDFToolbar.module.cjs`),i=require(`./PDFToolbarDropdownContext.cjs`);let a=require(`react`);a=e.__toESM(a,1);let o=require(`react/jsx-runtime`);var s=40;function c({children:e,overflowIcon:c=`···`}){let l=t.useLabels(),u=(0,a.useRef)(null),d=(0,a.useRef)([]),f=(0,a.useRef)([]),[p,m]=(0,a.useState)(null),[h,g]=(0,a.useState)(!1),_=(0,a.useRef)(null),v=a.default.Children.toArray(e),y=(0,a.useCallback)(()=>{let e=u.current;if(!e)return;d.current.forEach((e,t)=>{if(e){let n=e.offsetWidth;n>0&&(f.current[t]=n)}});let t=f.current;if(t.length===0)return;let n=e.offsetWidth;if(t.reduce((e,t)=>e+t,0)<=n){m(null);return}let r=0,i=0;for(let e=0;e<t.length&&r+t[e]+s<=n;e++)r+=t[e],i++;m(i)},[]);(0,a.useLayoutEffect)(()=>{y()},[y]),(0,a.useEffect)(()=>{let e=u.current;if(!e)return;let t=new ResizeObserver(()=>y());return t.observe(e),()=>t.disconnect()},[y]),(0,a.useEffect)(()=>{if(!h)return;let e=e=>{_.current?.contains(e.target)||g(!1)};return document.addEventListener(`mousedown`,e),()=>document.removeEventListener(`mousedown`,e)},[h]);let b=p!==null&&p<v.length,x=b?v.slice(p):[];return(0,o.jsxs)(`div`,{ref:u,className:r.default.toolbar,children:[v.map((e,t)=>(0,o.jsx)(`div`,{ref:e=>{d.current[t]=e},className:r.default.item,style:p!==null&&t>=p?{display:`none`}:void 0,children:e},t)),b&&(0,o.jsxs)(`div`,{ref:_,className:r.default.overflowWrapper,children:[(0,o.jsx)(n.ToolbarButton,{onClick:()=>g(e=>!e),"aria-label":l.toolbarMoreOptions,"aria-expanded":h,"aria-haspopup":`true`,title:l.toolbarMoreOptions,className:h?r.default.overflowBtnActive:void 0,children:c}),h&&(0,o.jsx)(`div`,{className:r.default.dropdown,role:`menu`,children:x.map((e,t)=>{if(a.default.isValidElement(e)&&e.type.isSeparator)return(0,o.jsx)(i.PDFToolbarDropdownContext.Provider,{value:!0,children:e},t);let n=a.default.isValidElement(e)?e.type.toolbarLabelKey:void 0,s=n?l[n]:void 0;return(0,o.jsx)(`div`,{className:r.default.dropdownItem,role:`menuitem`,children:s?(0,o.jsxs)(`div`,{className:r.default.labeledItem,children:[(0,o.jsx)(`span`,{className:r.default.itemLabel,children:s}),(0,o.jsx)(`div`,{className:r.default.itemContent,children:e})]}):(0,o.jsx)(i.PDFToolbarDropdownContext.Provider,{value:!0,children:e})},t)})})]})]})}exports.PDFToolbar=c;
@@ -1 +1 @@
1
- require(`../../_virtual/_rolldown/runtime.cjs`);const e=require(`./PDFToolbarDropdownContext.cjs`),t=require(`./PDFToolbarSeparator.module.cjs`);let n=require(`react`),r=require(`react/jsx-runtime`);function i(){return(0,n.useContext)(e.PDFToolbarDropdownContext)?null:(0,r.jsx)(`div`,{className:t.default.separator,"aria-hidden":`true`})}exports.PDFToolbarSeparator=i;
1
+ require(`../../_virtual/_rolldown/runtime.cjs`);const e=require(`./PDFToolbarDropdownContext.cjs`),t=require(`./PDFToolbarSeparator.module.cjs`);let n=require(`react`),r=require(`react/jsx-runtime`);function i(){return(0,n.useContext)(e.PDFToolbarDropdownContext)?(0,r.jsx)(`div`,{className:t.default.separatorH,"aria-hidden":`true`}):(0,r.jsx)(`div`,{className:t.default.separator,"aria-hidden":`true`})}i.isSeparator=!0,exports.PDFToolbarSeparator=i;
@@ -1 +1 @@
1
- var e={separator:`_separator_uif34_1`};exports.default=e;
1
+ var e={separator:`_separator_b9iob_1`,separatorH:`_separatorH_b9iob_9`};exports.default=e;
@@ -1 +1 @@
1
- const e=require(`../_virtual/_rolldown/runtime.cjs`);let t=require(`react`),n=require(`pdfjs-dist`);n=e.__toESM(n,1);function r({pdf:e,currentPage:n,goToPage:r,setZoom:i,setRotation:a,setFitMode:o}){(0,t.useEffect)(()=>{if(!e)return;let t=e=>{let t=e.target.tagName;if(!(t===`INPUT`||t===`TEXTAREA`))switch(e.key){case`ArrowLeft`:case`ArrowUp`:e.preventDefault(),r(n-1);break;case`ArrowRight`:case`ArrowDown`:e.preventDefault(),r(n+1);break;case`+`:case`=`:e.preventDefault(),o(null),i(e=>Math.min(e+.2,3));break;case`-`:e.preventDefault(),o(null),i(e=>Math.max(e-.2,.2));break;case`r`:case`R`:e.preventDefault(),a(e=>(e+90)%360);break}};return window.addEventListener(`keydown`,t),()=>window.removeEventListener(`keydown`,t)},[e,n,r,i,a,o])}exports.useKeyboardShortcuts=r;
1
+ const e=require(`../_virtual/_rolldown/runtime.cjs`);let t=require(`react`),n=require(`pdfjs-dist`);n=e.__toESM(n,1);function r({pdf:e,currentPage:n,goToPage:r,setRotation:i}){(0,t.useEffect)(()=>{if(!e)return;let t=e=>{let t=e.target.tagName;if(!(t===`INPUT`||t===`TEXTAREA`))switch(e.key){case`ArrowLeft`:case`ArrowUp`:e.preventDefault(),r(n-1);break;case`ArrowRight`:case`ArrowDown`:e.preventDefault(),r(n+1);break;case`r`:case`R`:e.preventDefault(),i(e=>(e+90)%360);break}};return window.addEventListener(`keydown`,t),()=>window.removeEventListener(`keydown`,t)},[e,n,r,i])}exports.useKeyboardShortcuts=r;
@@ -1 +1 @@
1
- require(`../_virtual/_rolldown/runtime.cjs`);let e=require(`react`);var t=10;function n({numPages:n,containerRef:r,pageRefs:i}){let[a,o]=(0,e.useState)(1);return(0,e.useEffect)(()=>{let e=r.current;if(!e)return;let t=()=>{let t=e.getBoundingClientRect().top,n=i.current;for(let e=0;e<n.length;e++){let r=n[e];r&&r.getBoundingClientRect().top-t<=150&&o(e+1)}};return e.addEventListener(`scroll`,t),()=>e.removeEventListener(`scroll`,t)},[r,i]),{currentPage:a,goToPage:(0,e.useCallback)((e,a)=>{let s=Math.min(Math.max(e,1),n),c=i.current[s-1],l=r.current;if(c&&l){let e=c.getBoundingClientRect().top,n=l.getBoundingClientRect().top,r=l.scrollTop+(e-n)-t,i=a===void 0?r:r+a;l.scrollTo({top:i,behavior:`smooth`}),o(s)}},[n,r,i])}}exports.useScrollTracking=n;
1
+ require(`../_virtual/_rolldown/runtime.cjs`);let e=require(`react`);var t=10;function n({numPages:n,containerRef:r,pageRefs:i}){let[a,o]=(0,e.useState)(1),s=(0,e.useRef)(null),c=(0,e.useRef)(null);return(0,e.useEffect)(()=>{let e=r.current;if(!e)return;let t=()=>{let t=e.getBoundingClientRect().top,n=i.current,r=-1;for(let e=0;e<n.length;e++){let i=n[e];i&&i.getBoundingClientRect().top-t<=150&&(r=e+1)}if(r!==-1){if(s.current!==null)if(r===s.current)s.current=null,c.current&&=(clearTimeout(c.current),null);else return;o(r)}};return e.addEventListener(`scroll`,t),()=>e.removeEventListener(`scroll`,t)},[r,i]),{currentPage:a,goToPage:(0,e.useCallback)((e,a)=>{let l=Math.min(Math.max(e,1),n),u=i.current[l-1],d=r.current;if(u&&d){let e=u.getBoundingClientRect().top,n=d.getBoundingClientRect().top,r=d.scrollTop+(e-n)-t,i=a===void 0?r:r+a,f=()=>{s.current=null,c.current&&=(clearTimeout(c.current),null),d.removeEventListener(`wheel`,f),d.removeEventListener(`pointerdown`,f)};s.current=l,c.current&&clearTimeout(c.current),c.current=setTimeout(f,1e3),d.addEventListener(`wheel`,f,{once:!0}),d.addEventListener(`pointerdown`,f,{once:!0}),o(l),d.scrollTo({top:i,behavior:`smooth`})}},[n,r,i])}}exports.useScrollTracking=n;
@@ -1 +1 @@
1
- const e=require(`../_virtual/_rolldown/runtime.cjs`);let t=require(`react`),n=require(`pdfjs-dist`);n=e.__toESM(n,1);function r(e,t){if(t.type===`reset`)return{thumbnails:Array(t.numPages).fill(null),version:e.version+1};if(t.type===`set`){let n=[...e.thumbnails];return n[t.pageNum-1]=t.dataUrl,{thumbnails:n,version:e.version}}return e}function i({pdf:e,rotation:n,visiblePages:i}){let[{thumbnails:a,version:o},s]=(0,t.useReducer)(r,{thumbnails:[],version:0}),c=(0,t.useRef)(new Set),l=(0,t.useRef)({pdf:null,rotation:0});return(0,t.useEffect)(()=>{if(!e){s({type:`reset`,numPages:0}),c.current.clear(),l.current={pdf:null,rotation:0};return}if(l.current.pdf!==e||l.current.rotation!==n){l.current={pdf:e,rotation:n},c.current.clear(),s({type:`reset`,numPages:e.numPages});return}let t=i.filter(e=>!c.current.has(e));if(t.length===0)return;let r=!1;return(async()=>{for(let i of t){if(r)break;let t=await e.getPage(i),a=t.getViewport({scale:.2,rotation:n}),o=document.createElement(`canvas`),l=o.getContext(`2d`);if(l){if(o.height=a.height,o.width=a.width,await t.render({canvasContext:l,viewport:a,canvas:o}).promise,r)break;c.current.add(i),s({type:`set`,pageNum:i,dataUrl:o.toDataURL()})}}})(),()=>{r=!0}},[e,n,i,o]),{thumbnails:a}}exports.useThumbnails=i;
1
+ const e=require(`../_virtual/_rolldown/runtime.cjs`);let t=require(`react`),n=require(`pdfjs-dist`);n=e.__toESM(n,1);function r({pdf:e,rotation:n,visiblePages:r}){let[i,a]=(0,t.useState)([]),[o,s]=(0,t.useState)(0),c=(0,t.useRef)(new Set),l=(0,t.useRef)({pdf:null,rotation:0});return(0,t.useEffect)(()=>{if(!e){a([]),s(0),c.current.clear(),l.current={pdf:null,rotation:0};return}if(l.current.pdf!==e||l.current.rotation!==n){l.current={pdf:e,rotation:n},c.current.clear(),a(Array(e.numPages).fill(null)),s(e=>e+1);return}let t=r.filter(e=>!c.current.has(e));if(t.length===0)return;let i=!1;return(async()=>{for(let r of t){if(i)break;let t=await e.getPage(r),o=t.getViewport({scale:.2,rotation:n}),s=document.createElement(`canvas`),l=s.getContext(`2d`);if(l){if(s.height=o.height,s.width=o.width,await t.render({canvasContext:l,viewport:o,canvas:s}).promise,i)break;c.current.add(r),a(e=>{let t=[...e];return t[r-1]=s.toDataURL(),t})}}})(),()=>{i=!0}},[e,n,r,o]),{thumbnails:i}}exports.useThumbnails=r;
@@ -1,2 +1,2 @@
1
- ._wrapper_1kvg0_1{border-right:1px solid var(--pdf-border);height:100%;display:flex}._wrapperCollapsed_1kvg0_7{border-right:1px solid var(--pdf-border);background-color:var(--pdf-bg);flex-direction:column;height:100%;padding-top:4px;display:flex}._buttonBar_1kvg0_16{background-color:var(--pdf-bg);flex-direction:column;flex-shrink:0;gap:2px;width:48px;padding-top:4px;display:flex}._toggleButton_1kvg0_26{border-bottom:1px solid var(--pdf-border);border-radius:0;width:48px;margin:0;padding-bottom:6px}._panelButton_1kvg0_35{cursor:pointer;width:44px;height:44px;color:var(--pdf-text-muted);background-color:#0000;border:none;border-radius:6px;justify-content:center;align-items:center;margin:0 2px;transition:background-color .15s,color .15s;display:flex}._panelButton_1kvg0_35:hover{background-color:var(--pdf-surface);color:var(--pdf-text-secondary)}._panelButtonActive_1kvg0_57{background-color:var(--pdf-surface);color:var(--pdf-accent-light)}._panelButtonActive_1kvg0_57:hover{color:var(--pdf-accent-light)}._contentPanel_1kvg0_66{background-color:var(--pdf-panel-bg);border-right:1px solid var(--pdf-panel-border);flex-direction:column;width:260px;display:flex}._panelHeader_1kvg0_74{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_1kvg0_86{flex:1;overflow-y:auto}._appLayout_1xasy_1{flex-direction:column;width:100%;height:100%;display:flex;overflow:hidden}._body_1xasy_9{flex-direction:row;flex:1;min-height:0;display:flex;overflow:hidden}._toolbar_1xasy_17{border-bottom:1px solid var(--pdf-border);background-color:var(--pdf-bg);z-index:10;flex-shrink:0;align-items:center;gap:2px;height:44px;padding:0 12px;display:flex}._scrollContainer_1xasy_29{background-color:var(--pdf-scroll-area);flex-direction:column;flex:1;align-items:center;padding:10px 20px;display:flex;position:relative;overflow-y:auto}._pageWrapper_1xasy_40{margin-bottom:25px;position:relative}._pageCanvas_1xasy_45{z-index:1;box-shadow:0 5px 20px var(--pdf-shadow-page);pointer-events:none;background-color:#fff;display:block;position:relative}._textLayer_1xasy_54{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light only;text-align:initial;opacity:1;-webkit-text-size-adjust:none;-moz-text-size-adjust:none;text-size-adjust:none;forced-color-adjust:none;transform-origin:0 0;caret-color:canvastext;z-index:2;--min-font-size:1;--text-scale-factor:calc(var(--total-scale-factor) * var(--min-font-size));--min-font-size-inv:calc(1 / var(--min-font-size));line-height:1;position:absolute;inset:0;overflow:clip}._textLayer_1xasy_54 :is(span,br){color:#0000;white-space:pre;cursor:text;transform-origin:0 0;position:absolute}._textLayer_1xasy_54>:not(._markedContent_1xasy_80),._textLayer_1xasy_54 ._markedContent_1xasy_80 span:not(._markedContent_1xasy_80){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_1xasy_54 ._markedContent_1xasy_80{display:contents}._textLayer_1xasy_54 ._endOfContent_1xasy_95{z-index:0;cursor:default;-webkit-user-select:none;user-select:none;display:block;position:absolute;inset:100% 0 0}._textLayer_1xasy_54._selecting_1xasy_104 ._endOfContent_1xasy_95{top:0}._textLayer_1xasy_54 ::selection{background:#0000ff40}._textLayer_1xasy_54 br::selection{background:0 0}._documentLoading_1xasy_124{pointer-events:none;z-index:10;justify-content:center;align-items:center;display:flex;position:absolute;inset:0}._documentLoading_1xasy_124:after{content:"";border:3px solid #0000001a;border-top-color:var(--pdf-accent);border-radius:50%;width:40px;height:40px;animation:.8s linear infinite _spin_1xasy_1}._pageSkeleton_1xasy_144{z-index:0;pointer-events:none;background:#fff;border-radius:1px;justify-content:center;align-items:center;display:flex;position:absolute;top:0;left:0}._pageSkeleton_1xasy_144:after{content:"";border:3px solid #0000001a;border-top-color:var(--pdf-accent);border-radius:50%;width:32px;height:32px;animation:.8s linear infinite _spin_1xasy_1}@keyframes _spin_1xasy_1{to{transform:rotate(360deg)}}._highlightOverlay_1xasy_173{z-index:4;pointer-events:none;background-color:#ffdc0059;border:2px solid #ffa000e6;border-radius:2px;position:absolute}._linkOverlay_1xasy_182{z-index:3;pointer-events:all;cursor:pointer;position:absolute}._searchMatchOverlay_1xasy_189{z-index:3;pointer-events:none;background-color:#fde0474d;border-bottom:2px solid #eab308cc;position:absolute}._noteOverlay_1xasy_197{z-index:3;pointer-events:all;cursor:pointer;position:absolute}._noteIconOverlay_1xasy_204{z-index:3;pointer-events:all;cursor:pointer;border-radius:3px;justify-content:center;align-items:center;transition:background-color .1s;display:flex;position:absolute}._noteIconOverlay_1xasy_204:hover{background-color:#ffd20033;outline:1px solid #a0780066}._requireReadBanner_1xasy_221{font-size:13px;font-weight:500;font-family:var(--pdf-font-family);color:#fff;background-color:color-mix(in srgb, var(--pdf-accent) 82%, transparent);-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);z-index:10;pointer-events:none;-webkit-user-select:none;user-select:none;border-radius:5px;align-self:flex-end;align-items:center;gap:8px;margin-top:auto;margin-right:25px;padding:9px 16px;transition:background-color .4s;display:flex;position:sticky;bottom:12px;box-shadow:0 2px 12px #0000002e}._requireReadDone_1xasy_245{background-color:#16a34abf}._notePopover_1xasy_249{z-index:9999;background-color:var(--pdf-surface);border:1px solid var(--pdf-border);min-width:160px;max-width:280px;font-family:var(--pdf-font-family);border-radius:6px;padding:10px 12px;position:fixed;box-shadow:0 4px 16px #00000026}._notePopoverTitle_1xasy_262{color:var(--pdf-text-secondary);margin-bottom:6px;font-size:12px;font-weight:600}._notePopoverContent_1xasy_269{color:var(--pdf-text-primary);white-space:pre-wrap;margin:0;font-size:13px;line-height:1.5}._list_gygvf_1{flex-direction:column;display:flex}._emptyState_gygvf_6{color:var(--pdf-text-secondary);padding:20px 14px;font-size:12px}._pageHeader_gygvf_12{color:var(--pdf-text-secondary);text-transform:uppercase;letter-spacing:.5px;background-color:var(--pdf-panel-header-bg);border-bottom:1px solid var(--pdf-panel-border);padding:5px 12px;font-size:10px;font-weight:600}._card_gygvf_23{border:1px solid var(--pdf-panel-border);background-color:var(--pdf-panel-bg);border-radius:6px;margin:8px;padding:10px 12px;font-size:12px;transition:box-shadow .12s}._cardClickable_gygvf_33{cursor:pointer}._cardClickable_gygvf_33:hover{box-shadow:0 1px 6px var(--pdf-shadow-page)}._cardHeader_gygvf_41{justify-content:space-between;align-items:center;margin-bottom:4px;display:flex}._cardLabel_gygvf_48{color:var(--pdf-text-secondary);align-items:center;gap:5px;font-size:11px;font-weight:600;display:flex}._cardPage_gygvf_57{color:var(--pdf-text-secondary);font-size:10px}._cardAuthor_gygvf_62{color:var(--pdf-text-muted);margin-bottom:3px;font-size:11px}._cardContent_gygvf_68{color:var(--pdf-text-primary);font-size:12px;line-height:1.5}._iconWrapper_gygvf_74{justify-content:center;align-items:center;display:flex;position:relative}._badge_gygvf_81{background-color:var(--pdf-badge-bg);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}._list_12ybz_1{flex-direction:column;gap:6px;padding:8px;display:flex}._emptyState_12ybz_8{color:var(--pdf-text-muted);text-align:center;padding:24px 14px;font-size:12px}._card_12ybz_15{border:1px solid var(--pdf-border);background:var(--pdf-panel-bg);text-align:left;box-sizing:border-box;border-radius:8px;align-items:center;gap:10px;padding:10px 12px;font-family:inherit;font-size:12px;transition:box-shadow .15s,border-color .15s;display:flex;overflow:hidden}._fileIcon_12ybz_33{color:var(--pdf-text-muted);flex-shrink:0;align-items:center;display:flex}._filename_12ybz_40{min-width:0;color:var(--pdf-text-primary);text-overflow:ellipsis;white-space:nowrap;flex:1;font-size:12px;font-weight:500;overflow:hidden}._downloadBtn_12ybz_51{border:1px solid var(--pdf-border);background:var(--pdf-surface);width:28px;height:28px;color:var(--pdf-text-secondary);cursor:pointer;border-radius:6px;flex-shrink:0;justify-content:center;align-items:center;padding:0;font-family:inherit;transition:background .15s,border-color .15s,color .15s;display:flex}._downloadBtn_12ybz_51:hover{background:var(--pdf-accent);border-color:var(--pdf-accent);color:#fff}._iconWrapper_12ybz_77{justify-content:center;align-items:center;display:flex;position:relative}._badge_12ybz_84{background-color:var(--pdf-badge-bg);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_1dub8_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_1dub8_1:hover:not(:disabled){background:var(--pdf-surface);color:var(--pdf-text-primary)}._btn_1dub8_1:disabled{color:var(--pdf-border);cursor:default}._primary_1dub8_31{background:var(--pdf-accent);color:#fff;padding:6px 14px}._primary_1dub8_31:hover:not(:disabled){background:var(--pdf-accent-hover);color:#fff}._navWrapper_14eo9_1{align-items:center;gap:2px;display:flex}._pageInput_14eo9_7{background:var(--pdf-surface);width:32px;color:var(--pdf-text-primary);font-variant-numeric:tabular-nums;text-align:center;border:1px solid #0000;border-radius:4px;outline:none;padding:3px 4px;font-family:inherit;font-size:12px}._pageInput_14eo9_7:focus{border-color:var(--pdf-accent)}._pageInput_14eo9_7::-webkit-outer-spin-button{-webkit-appearance:none}._pageInput_14eo9_7::-webkit-inner-spin-button{-webkit-appearance:none}._pageInput_14eo9_7{-moz-appearance:textfield}._pageTotal_14eo9_34{color:var(--pdf-text-placeholder);font-variant-numeric:tabular-nums;font-size:12px}._emptyState_hqvdn_1{color:var(--pdf-text-secondary);padding:20px 14px;font-size:12px}._tree_hqvdn_7{flex-direction:column;padding:4px 0;display:flex}._row_hqvdn_13{color:var(--pdf-text-secondary);cursor:pointer;border-radius:4px;align-items:center;gap:4px;margin:0 4px;padding:5px 12px;font-size:12px;line-height:1.4;display:flex}._row_hqvdn_13:hover{background-color:var(--pdf-surface-hover);color:var(--pdf-text-primary)}._chevronBtn_hqvdn_31{cursor:pointer;color:var(--pdf-text-secondary);background:0 0;border:none;flex-shrink:0;align-items:center;padding:0;display:flex}._chevronBtn_hqvdn_31:hover{color:var(--pdf-text-muted)}._title_hqvdn_46{text-overflow:ellipsis;white-space:nowrap;flex:1;overflow:hidden}._wrapper_18kvs_1{align-items:center;gap:4px;display:flex}._searchIconWrapper_18kvs_7{color:var(--pdf-text-secondary);align-items:center;display:flex}._searchInput_18kvs_13{background:var(--pdf-surface);border:1px solid var(--pdf-border);color:var(--pdf-text-primary);border-radius:4px;outline:none;width:180px;padding:4px 8px;font-family:inherit;font-size:13px}._searchInput_18kvs_13:focus{border-color:var(--pdf-accent)}._searchInput_18kvs_13::placeholder{color:var(--pdf-text-placeholder)}._navButton_18kvs_33{color:var(--pdf-text-secondary);cursor:pointer;background:0 0;border:none;border-radius:4px;align-items:center;padding:4px 5px;display:flex}._navButton_18kvs_33:hover:not(:disabled){background:var(--pdf-surface);color:var(--pdf-text-primary)}._navButton_18kvs_33:disabled{color:var(--pdf-border);cursor:default}._counter_18kvs_54{color:var(--pdf-text-muted);text-align:center;min-width:36px;font-size:11px}._list_b0wj1_1{flex-direction:column;gap:6px;padding:8px;display:flex}._emptyState_b0wj1_8{color:var(--pdf-text-muted);text-align:center;padding:24px 14px;font-size:12px}._card_b0wj1_15{border:1px solid var(--pdf-border);background:var(--pdf-panel-bg);text-align:left;cursor:default;box-sizing:border-box;border-radius:8px;width:100%;font-family:inherit;font-size:12px;transition:box-shadow .15s,border-color .15s;position:relative;overflow:hidden}._cardSigned_b0wj1_32{background:#22c55e0a;border-color:#22c55e47}._cardClickable_b0wj1_37{cursor:pointer}._cardClickable_b0wj1_37:hover{box-shadow:0 2px 10px var(--pdf-shadow-page);border-color:var(--pdf-border-light)}._cardSigned_b0wj1_32._cardClickable_b0wj1_37:hover{border-color:#22c55e73}._cardBody_b0wj1_50{padding:10px 12px 10px 16px}._cardHeader_b0wj1_54{justify-content:space-between;align-items:center;gap:8px;margin-bottom:8px;display:flex}._fieldName_b0wj1_62{color:var(--pdf-text-primary);text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0;font-size:12px;font-weight:600;overflow:hidden}._statusChip_b0wj1_73{text-transform:uppercase;letter-spacing:.5px;background:var(--pdf-surface-hover);color:var(--pdf-text-muted);border:1px solid var(--pdf-border);border-radius:20px;flex-shrink:0;align-items:center;gap:4px;padding:2px 7px;font-size:10px;font-weight:700;display:inline-flex}._statusChipSigned_b0wj1_89{color:#15803d;background:#22c55e1f;border-color:#22c55e4d}._fieldList_b0wj1_95{flex-direction:column;gap:4px;display:flex}._fieldRow_b0wj1_101{grid-template-columns:72px 1fr;gap:4px;font-size:11px;line-height:1.5;display:grid}._fieldLabel_b0wj1_109{color:var(--pdf-text-muted);font-weight:500}._fieldValue_b0wj1_114{color:var(--pdf-text-secondary);word-break:break-word}._iconWrapper_b0wj1_119{justify-content:center;align-items:center;display:flex;position:relative}._badge_b0wj1_126{background-color:var(--pdf-badge-bg);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_t3mg8_1{background-color:var(--pdf-panel-bg);padding-bottom:8px}._thumbnailItem_t3mg8_6{cursor:pointer;text-align:center;background-color:#0000;border-left:2px solid #0000;padding:12px 16px;transition:background-color .15s}._thumbnailItem_t3mg8_6:hover{background-color:var(--pdf-surface-hover)}._thumbnailItemActive_t3mg8_19{background-color:var(--pdf-accent-subtle);border-left-color:var(--pdf-accent)}._thumbnailItemActive_t3mg8_19:hover{background-color:var(--pdf-accent-subtle)}._thumbnailImg_t3mg8_28{width:120px;box-shadow:0 1px 4px var(--pdf-shadow-page);border-radius:2px}._thumbnailImgActive_t3mg8_34{box-shadow:0 0 0 2px var(--pdf-accent), 0 2px 8px var(--pdf-shadow-page)}._thumbnailSkeleton_t3mg8_40{background:linear-gradient(90deg, var(--pdf-surface) 25%, var(--pdf-surface-hover) 50%, var(--pdf-surface) 75%);background-size:200% 100%;border-radius:2px;width:120px;height:160px;animation:1.4s infinite _shimmer_t3mg8_1}@keyframes _shimmer_t3mg8_1{0%{background-position:200% 0}to{background-position:-200% 0}}._thumbnailLabel_t3mg8_63{color:var(--pdf-text-muted);margin-top:6px;font-size:11px;font-weight:400}._thumbnailLabelActive_t3mg8_70{color:var(--pdf-accent-hover);font-weight:600}._zoomLabel_m8iv9_1{text-align:center;min-width:42px;color:var(--pdf-text-muted);font-variant-numeric:tabular-nums;font-size:12px}._toolbar_xoqxq_1{flex:1;align-items:center;gap:2px;min-width:0;display:flex}._item_xoqxq_9{flex-shrink:0;align-items:center;display:flex}._overflowWrapper_xoqxq_15{flex-shrink:0;margin-left:auto;position:relative}._overflowBtnActive_xoqxq_21{background:var(--pdf-surface);color:var(--pdf-text-primary)}._dropdown_xoqxq_26{background:var(--pdf-bg);border:1px solid var(--pdf-border);z-index:100;border-radius:6px;flex-direction:column;gap:1px;padding:4px;display:flex;position:absolute;top:calc(100% + 6px);right:0;box-shadow:0 4px 16px #0000002e}._dropdownItem_xoqxq_41{border-radius:4px;justify-content:flex-end;align-items:center;padding:1px 2px;display:flex}._dropdownItem_xoqxq_41>*{flex-shrink:0}._labeledItem_xoqxq_53{align-items:center;gap:8px;width:100%;display:flex}._itemContent_xoqxq_60{flex-shrink:0;align-items:center;display:flex}._itemLabel_xoqxq_66{color:var(--pdf-text-secondary);white-space:nowrap;-webkit-user-select:none;user-select:none;flex:1;font-size:12px}._dropdownItem_xoqxq_41:hover{background:var(--pdf-surface-hover)}._separator_uif34_1{background:var(--pdf-toolbar-separator);flex-shrink:0;width:1px;height:20px;margin:0 4px}
1
+ ._wrapper_1kvg0_1{border-right:1px solid var(--pdf-border);height:100%;display:flex}._wrapperCollapsed_1kvg0_7{border-right:1px solid var(--pdf-border);background-color:var(--pdf-bg);flex-direction:column;height:100%;padding-top:4px;display:flex}._buttonBar_1kvg0_16{background-color:var(--pdf-bg);flex-direction:column;flex-shrink:0;gap:2px;width:48px;padding-top:4px;display:flex}._toggleButton_1kvg0_26{border-bottom:1px solid var(--pdf-border);border-radius:0;width:48px;margin:0;padding-bottom:6px}._panelButton_1kvg0_35{cursor:pointer;width:44px;height:44px;color:var(--pdf-text-muted);background-color:#0000;border:none;border-radius:6px;justify-content:center;align-items:center;margin:0 2px;transition:background-color .15s,color .15s;display:flex}._panelButton_1kvg0_35:hover{background-color:var(--pdf-surface);color:var(--pdf-text-secondary)}._panelButtonActive_1kvg0_57{background-color:var(--pdf-surface);color:var(--pdf-accent-light)}._panelButtonActive_1kvg0_57:hover{color:var(--pdf-accent-light)}._contentPanel_1kvg0_66{background-color:var(--pdf-panel-bg);border-right:1px solid var(--pdf-panel-border);flex-direction:column;width:260px;display:flex}._panelHeader_1kvg0_74{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_1kvg0_86{flex:1;overflow-y:auto}._appLayout_1xasy_1{flex-direction:column;width:100%;height:100%;display:flex;overflow:hidden}._body_1xasy_9{flex-direction:row;flex:1;min-height:0;display:flex;overflow:hidden}._toolbar_1xasy_17{border-bottom:1px solid var(--pdf-border);background-color:var(--pdf-bg);z-index:10;flex-shrink:0;align-items:center;gap:2px;height:44px;padding:0 12px;display:flex}._scrollContainer_1xasy_29{background-color:var(--pdf-scroll-area);flex-direction:column;flex:1;align-items:center;padding:10px 20px;display:flex;position:relative;overflow-y:auto}._pageWrapper_1xasy_40{margin-bottom:25px;position:relative}._pageCanvas_1xasy_45{z-index:1;box-shadow:0 5px 20px var(--pdf-shadow-page);pointer-events:none;background-color:#fff;display:block;position:relative}._textLayer_1xasy_54{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light only;text-align:initial;opacity:1;-webkit-text-size-adjust:none;-moz-text-size-adjust:none;text-size-adjust:none;forced-color-adjust:none;transform-origin:0 0;caret-color:canvastext;z-index:2;--min-font-size:1;--text-scale-factor:calc(var(--total-scale-factor) * var(--min-font-size));--min-font-size-inv:calc(1 / var(--min-font-size));line-height:1;position:absolute;inset:0;overflow:clip}._textLayer_1xasy_54 :is(span,br){color:#0000;white-space:pre;cursor:text;transform-origin:0 0;position:absolute}._textLayer_1xasy_54>:not(._markedContent_1xasy_80),._textLayer_1xasy_54 ._markedContent_1xasy_80 span:not(._markedContent_1xasy_80){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_1xasy_54 ._markedContent_1xasy_80{display:contents}._textLayer_1xasy_54 ._endOfContent_1xasy_95{z-index:0;cursor:default;-webkit-user-select:none;user-select:none;display:block;position:absolute;inset:100% 0 0}._textLayer_1xasy_54._selecting_1xasy_104 ._endOfContent_1xasy_95{top:0}._textLayer_1xasy_54 ::selection{background:#0000ff40}._textLayer_1xasy_54 br::selection{background:0 0}._documentLoading_1xasy_124{pointer-events:none;z-index:10;justify-content:center;align-items:center;display:flex;position:absolute;inset:0}._documentLoading_1xasy_124:after{content:"";border:3px solid #0000001a;border-top-color:var(--pdf-accent);border-radius:50%;width:40px;height:40px;animation:.8s linear infinite _spin_1xasy_1}._pageSkeleton_1xasy_144{z-index:0;pointer-events:none;background:#fff;border-radius:1px;justify-content:center;align-items:center;display:flex;position:absolute;top:0;left:0}._pageSkeleton_1xasy_144:after{content:"";border:3px solid #0000001a;border-top-color:var(--pdf-accent);border-radius:50%;width:32px;height:32px;animation:.8s linear infinite _spin_1xasy_1}@keyframes _spin_1xasy_1{to{transform:rotate(360deg)}}._highlightOverlay_1xasy_173{z-index:4;pointer-events:none;background-color:#ffdc0059;border:2px solid #ffa000e6;border-radius:2px;position:absolute}._linkOverlay_1xasy_182{z-index:3;pointer-events:all;cursor:pointer;position:absolute}._searchMatchOverlay_1xasy_189{z-index:3;pointer-events:none;background-color:#fde0474d;border-bottom:2px solid #eab308cc;position:absolute}._noteOverlay_1xasy_197{z-index:3;pointer-events:all;cursor:pointer;position:absolute}._noteIconOverlay_1xasy_204{z-index:3;pointer-events:all;cursor:pointer;border-radius:3px;justify-content:center;align-items:center;transition:background-color .1s;display:flex;position:absolute}._noteIconOverlay_1xasy_204:hover{background-color:#ffd20033;outline:1px solid #a0780066}._requireReadBanner_1xasy_221{font-size:13px;font-weight:500;font-family:var(--pdf-font-family);color:#fff;background-color:color-mix(in srgb, var(--pdf-accent) 82%, transparent);-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);z-index:10;pointer-events:none;-webkit-user-select:none;user-select:none;border-radius:5px;align-self:flex-end;align-items:center;gap:8px;margin-top:auto;margin-right:25px;padding:9px 16px;transition:background-color .4s;display:flex;position:sticky;bottom:12px;box-shadow:0 2px 12px #0000002e}._requireReadDone_1xasy_245{background-color:#16a34abf}._notePopover_1xasy_249{z-index:9999;background-color:var(--pdf-surface);border:1px solid var(--pdf-border);min-width:160px;max-width:280px;font-family:var(--pdf-font-family);border-radius:6px;padding:10px 12px;position:fixed;box-shadow:0 4px 16px #00000026}._notePopoverTitle_1xasy_262{color:var(--pdf-text-secondary);margin-bottom:6px;font-size:12px;font-weight:600}._notePopoverContent_1xasy_269{color:var(--pdf-text-primary);white-space:pre-wrap;margin:0;font-size:13px;line-height:1.5}._list_gygvf_1{flex-direction:column;display:flex}._emptyState_gygvf_6{color:var(--pdf-text-secondary);padding:20px 14px;font-size:12px}._pageHeader_gygvf_12{color:var(--pdf-text-secondary);text-transform:uppercase;letter-spacing:.5px;background-color:var(--pdf-panel-header-bg);border-bottom:1px solid var(--pdf-panel-border);padding:5px 12px;font-size:10px;font-weight:600}._card_gygvf_23{border:1px solid var(--pdf-panel-border);background-color:var(--pdf-panel-bg);border-radius:6px;margin:8px;padding:10px 12px;font-size:12px;transition:box-shadow .12s}._cardClickable_gygvf_33{cursor:pointer}._cardClickable_gygvf_33:hover{box-shadow:0 1px 6px var(--pdf-shadow-page)}._cardHeader_gygvf_41{justify-content:space-between;align-items:center;margin-bottom:4px;display:flex}._cardLabel_gygvf_48{color:var(--pdf-text-secondary);align-items:center;gap:5px;font-size:11px;font-weight:600;display:flex}._cardPage_gygvf_57{color:var(--pdf-text-secondary);font-size:10px}._cardAuthor_gygvf_62{color:var(--pdf-text-muted);margin-bottom:3px;font-size:11px}._cardContent_gygvf_68{color:var(--pdf-text-primary);font-size:12px;line-height:1.5}._iconWrapper_gygvf_74{justify-content:center;align-items:center;display:flex;position:relative}._badge_gygvf_81{background-color:var(--pdf-badge-bg);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}._list_12ybz_1{flex-direction:column;gap:6px;padding:8px;display:flex}._emptyState_12ybz_8{color:var(--pdf-text-muted);text-align:center;padding:24px 14px;font-size:12px}._card_12ybz_15{border:1px solid var(--pdf-border);background:var(--pdf-panel-bg);text-align:left;box-sizing:border-box;border-radius:8px;align-items:center;gap:10px;padding:10px 12px;font-family:inherit;font-size:12px;transition:box-shadow .15s,border-color .15s;display:flex;overflow:hidden}._fileIcon_12ybz_33{color:var(--pdf-text-muted);flex-shrink:0;align-items:center;display:flex}._filename_12ybz_40{min-width:0;color:var(--pdf-text-primary);text-overflow:ellipsis;white-space:nowrap;flex:1;font-size:12px;font-weight:500;overflow:hidden}._downloadBtn_12ybz_51{border:1px solid var(--pdf-border);background:var(--pdf-surface);width:28px;height:28px;color:var(--pdf-text-secondary);cursor:pointer;border-radius:6px;flex-shrink:0;justify-content:center;align-items:center;padding:0;font-family:inherit;transition:background .15s,border-color .15s,color .15s;display:flex}._downloadBtn_12ybz_51:hover{background:var(--pdf-accent);border-color:var(--pdf-accent);color:#fff}._iconWrapper_12ybz_77{justify-content:center;align-items:center;display:flex;position:relative}._badge_12ybz_84{background-color:var(--pdf-badge-bg);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_1dub8_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_1dub8_1:hover:not(:disabled){background:var(--pdf-surface);color:var(--pdf-text-primary)}._btn_1dub8_1:disabled{color:var(--pdf-border);cursor:default}._primary_1dub8_31{background:var(--pdf-accent);color:#fff;padding:6px 14px}._primary_1dub8_31:hover:not(:disabled){background:var(--pdf-accent-hover);color:#fff}._navWrapper_14eo9_1{align-items:center;gap:2px;display:flex}._pageInput_14eo9_7{background:var(--pdf-surface);width:32px;color:var(--pdf-text-primary);font-variant-numeric:tabular-nums;text-align:center;border:1px solid #0000;border-radius:4px;outline:none;padding:3px 4px;font-family:inherit;font-size:12px}._pageInput_14eo9_7:focus{border-color:var(--pdf-accent)}._pageInput_14eo9_7::-webkit-outer-spin-button{-webkit-appearance:none}._pageInput_14eo9_7::-webkit-inner-spin-button{-webkit-appearance:none}._pageInput_14eo9_7{-moz-appearance:textfield}._pageTotal_14eo9_34{color:var(--pdf-text-placeholder);font-variant-numeric:tabular-nums;font-size:12px}._emptyState_hqvdn_1{color:var(--pdf-text-secondary);padding:20px 14px;font-size:12px}._tree_hqvdn_7{flex-direction:column;padding:4px 0;display:flex}._row_hqvdn_13{color:var(--pdf-text-secondary);cursor:pointer;border-radius:4px;align-items:center;gap:4px;margin:0 4px;padding:5px 12px;font-size:12px;line-height:1.4;display:flex}._row_hqvdn_13:hover{background-color:var(--pdf-surface-hover);color:var(--pdf-text-primary)}._chevronBtn_hqvdn_31{cursor:pointer;color:var(--pdf-text-secondary);background:0 0;border:none;flex-shrink:0;align-items:center;padding:0;display:flex}._chevronBtn_hqvdn_31:hover{color:var(--pdf-text-muted)}._title_hqvdn_46{text-overflow:ellipsis;white-space:nowrap;flex:1;overflow:hidden}._wrapper_18kvs_1{align-items:center;gap:4px;display:flex}._searchIconWrapper_18kvs_7{color:var(--pdf-text-secondary);align-items:center;display:flex}._searchInput_18kvs_13{background:var(--pdf-surface);border:1px solid var(--pdf-border);color:var(--pdf-text-primary);border-radius:4px;outline:none;width:180px;padding:4px 8px;font-family:inherit;font-size:13px}._searchInput_18kvs_13:focus{border-color:var(--pdf-accent)}._searchInput_18kvs_13::placeholder{color:var(--pdf-text-placeholder)}._navButton_18kvs_33{color:var(--pdf-text-secondary);cursor:pointer;background:0 0;border:none;border-radius:4px;align-items:center;padding:4px 5px;display:flex}._navButton_18kvs_33:hover:not(:disabled){background:var(--pdf-surface);color:var(--pdf-text-primary)}._navButton_18kvs_33:disabled{color:var(--pdf-border);cursor:default}._counter_18kvs_54{color:var(--pdf-text-muted);text-align:center;min-width:36px;font-size:11px}._list_b0wj1_1{flex-direction:column;gap:6px;padding:8px;display:flex}._emptyState_b0wj1_8{color:var(--pdf-text-muted);text-align:center;padding:24px 14px;font-size:12px}._card_b0wj1_15{border:1px solid var(--pdf-border);background:var(--pdf-panel-bg);text-align:left;cursor:default;box-sizing:border-box;border-radius:8px;width:100%;font-family:inherit;font-size:12px;transition:box-shadow .15s,border-color .15s;position:relative;overflow:hidden}._cardSigned_b0wj1_32{background:#22c55e0a;border-color:#22c55e47}._cardClickable_b0wj1_37{cursor:pointer}._cardClickable_b0wj1_37:hover{box-shadow:0 2px 10px var(--pdf-shadow-page);border-color:var(--pdf-border-light)}._cardSigned_b0wj1_32._cardClickable_b0wj1_37:hover{border-color:#22c55e73}._cardBody_b0wj1_50{padding:10px 12px 10px 16px}._cardHeader_b0wj1_54{justify-content:space-between;align-items:center;gap:8px;margin-bottom:8px;display:flex}._fieldName_b0wj1_62{color:var(--pdf-text-primary);text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0;font-size:12px;font-weight:600;overflow:hidden}._statusChip_b0wj1_73{text-transform:uppercase;letter-spacing:.5px;background:var(--pdf-surface-hover);color:var(--pdf-text-muted);border:1px solid var(--pdf-border);border-radius:20px;flex-shrink:0;align-items:center;gap:4px;padding:2px 7px;font-size:10px;font-weight:700;display:inline-flex}._statusChipSigned_b0wj1_89{color:#15803d;background:#22c55e1f;border-color:#22c55e4d}._fieldList_b0wj1_95{flex-direction:column;gap:4px;display:flex}._fieldRow_b0wj1_101{grid-template-columns:72px 1fr;gap:4px;font-size:11px;line-height:1.5;display:grid}._fieldLabel_b0wj1_109{color:var(--pdf-text-muted);font-weight:500}._fieldValue_b0wj1_114{color:var(--pdf-text-secondary);word-break:break-word}._iconWrapper_b0wj1_119{justify-content:center;align-items:center;display:flex;position:relative}._badge_b0wj1_126{background-color:var(--pdf-badge-bg);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_t3mg8_1{background-color:var(--pdf-panel-bg);padding-bottom:8px}._thumbnailItem_t3mg8_6{cursor:pointer;text-align:center;background-color:#0000;border-left:2px solid #0000;padding:12px 16px;transition:background-color .15s}._thumbnailItem_t3mg8_6:hover{background-color:var(--pdf-surface-hover)}._thumbnailItemActive_t3mg8_19{background-color:var(--pdf-accent-subtle);border-left-color:var(--pdf-accent)}._thumbnailItemActive_t3mg8_19:hover{background-color:var(--pdf-accent-subtle)}._thumbnailImg_t3mg8_28{width:120px;box-shadow:0 1px 4px var(--pdf-shadow-page);border-radius:2px}._thumbnailImgActive_t3mg8_34{box-shadow:0 0 0 2px var(--pdf-accent), 0 2px 8px var(--pdf-shadow-page)}._thumbnailSkeleton_t3mg8_40{background:linear-gradient(90deg, var(--pdf-surface) 25%, var(--pdf-surface-hover) 50%, var(--pdf-surface) 75%);background-size:200% 100%;border-radius:2px;width:120px;height:160px;animation:1.4s infinite _shimmer_t3mg8_1}@keyframes _shimmer_t3mg8_1{0%{background-position:200% 0}to{background-position:-200% 0}}._thumbnailLabel_t3mg8_63{color:var(--pdf-text-muted);margin-top:6px;font-size:11px;font-weight:400}._thumbnailLabelActive_t3mg8_70{color:var(--pdf-accent-hover);font-weight:600}._zoomLabel_m8iv9_1{text-align:center;min-width:42px;color:var(--pdf-text-muted);font-variant-numeric:tabular-nums;font-size:12px}._toolbar_xoqxq_1{flex:1;align-items:center;gap:2px;min-width:0;display:flex}._item_xoqxq_9{flex-shrink:0;align-items:center;display:flex}._overflowWrapper_xoqxq_15{flex-shrink:0;margin-left:auto;position:relative}._overflowBtnActive_xoqxq_21{background:var(--pdf-surface);color:var(--pdf-text-primary)}._dropdown_xoqxq_26{background:var(--pdf-bg);border:1px solid var(--pdf-border);z-index:100;border-radius:6px;flex-direction:column;gap:1px;padding:4px;display:flex;position:absolute;top:calc(100% + 6px);right:0;box-shadow:0 4px 16px #0000002e}._dropdownItem_xoqxq_41{border-radius:4px;justify-content:flex-end;align-items:center;padding:1px 2px;display:flex}._dropdownItem_xoqxq_41>*{flex-shrink:0}._labeledItem_xoqxq_53{align-items:center;gap:8px;width:100%;display:flex}._itemContent_xoqxq_60{flex-shrink:0;align-items:center;display:flex}._itemLabel_xoqxq_66{color:var(--pdf-text-secondary);white-space:nowrap;-webkit-user-select:none;user-select:none;flex:1;font-size:12px}._dropdownItem_xoqxq_41:hover{background:var(--pdf-surface-hover)}._separator_b9iob_1{background:var(--pdf-toolbar-separator);flex-shrink:0;width:1px;height:20px;margin:0 4px}._separatorH_b9iob_9{background:var(--pdf-toolbar-separator);height:1px;margin:2px 4px}
2
2
  /*$vite$:1*/
@@ -1 +1,4 @@
1
- export declare function PDFToolbarSeparator(): import("react/jsx-runtime").JSX.Element | null;
1
+ export declare function PDFToolbarSeparator(): import("react/jsx-runtime").JSX.Element;
2
+ export declare namespace PDFToolbarSeparator {
3
+ var isSeparator: true;
4
+ }
@@ -3,264 +3,262 @@ import { useScrollTracking as t } from "../hooks/useScrollTracking.js";
3
3
  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
- import { useAnnotationLayer as a } from "../hooks/useAnnotationLayer.js";
7
- import { usePDFLoader as ee } from "../hooks/usePDFLoader.js";
8
- import { usePDFRenderer as te } from "../hooks/usePDFRenderer.js";
9
- import { useOverlayRects as ne } from "../hooks/useOverlayRects.js";
10
- import { computeFit as o } from "../utils/pdfFit.js";
11
- import { ThemeProvider as re } from "../context/ThemeContext.js";
12
- import { LabelsProvider as ie } from "../context/LabelsContext.js";
13
- import { useLabels as s } from "../hooks/useLabels.js";
14
- import c from "./PDFViewer.module.js";
15
- import { useCallback as l, useEffect as u, useMemo as d, useRef as f, useState as p } from "react";
16
- import * as ae from "pdfjs-dist";
17
- import { Fragment as oe, jsx as m, jsxs as h } from "react/jsx-runtime";
6
+ import { useAnnotationLayer as ee } from "../hooks/useAnnotationLayer.js";
7
+ import { usePDFLoader as te } from "../hooks/usePDFLoader.js";
8
+ import { usePDFRenderer as ne } from "../hooks/usePDFRenderer.js";
9
+ import { useOverlayRects as re } from "../hooks/useOverlayRects.js";
10
+ import { computeFit as a } from "../utils/pdfFit.js";
11
+ import { ThemeProvider as ie } from "../context/ThemeContext.js";
12
+ import { LabelsProvider as ae } from "../context/LabelsContext.js";
13
+ import { useLabels as o } from "../hooks/useLabels.js";
14
+ import s from "./PDFViewer.module.js";
15
+ import { useCallback as c, useEffect as l, useMemo as u, useRef as d, useState as f } from "react";
16
+ import * as oe from "pdfjs-dist";
17
+ import { Fragment as se, jsx as p, jsxs as m } from "react/jsx-runtime";
18
18
  //#region src/components/PDFViewer.tsx
19
- var g = 2;
20
- function se({ hasRead: e }) {
21
- let t = s();
22
- return /* @__PURE__ */ h("div", {
23
- className: `${c.requireReadBanner} ${e ? c.requireReadDone : ""}`,
24
- children: [e ? /* @__PURE__ */ m("svg", {
19
+ var h = 2;
20
+ function ce({ hasRead: e }) {
21
+ let t = o();
22
+ return /* @__PURE__ */ m("div", {
23
+ className: `${s.requireReadBanner} ${e ? s.requireReadDone : ""}`,
24
+ children: [e ? /* @__PURE__ */ p("svg", {
25
25
  width: "16",
26
26
  height: "16",
27
27
  viewBox: "0 0 16 16",
28
28
  fill: "none",
29
29
  "aria-hidden": "true",
30
- children: /* @__PURE__ */ m("path", {
30
+ children: /* @__PURE__ */ p("path", {
31
31
  d: "M3 8l3.5 3.5L13 4.5",
32
32
  stroke: "currentColor",
33
33
  strokeWidth: "2",
34
34
  strokeLinecap: "round",
35
35
  strokeLinejoin: "round"
36
36
  })
37
- }) : /* @__PURE__ */ m("svg", {
37
+ }) : /* @__PURE__ */ p("svg", {
38
38
  width: "16",
39
39
  height: "16",
40
40
  viewBox: "0 0 16 16",
41
41
  fill: "none",
42
42
  "aria-hidden": "true",
43
- children: /* @__PURE__ */ m("path", {
43
+ children: /* @__PURE__ */ p("path", {
44
44
  d: "M8 3v10M4 9l4 4 4-4",
45
45
  stroke: "currentColor",
46
46
  strokeWidth: "2",
47
47
  strokeLinecap: "round",
48
48
  strokeLinejoin: "round"
49
49
  })
50
- }), /* @__PURE__ */ m("span", { children: e ? t.requireReadDone : t.requireReadPending })]
50
+ }), /* @__PURE__ */ p("span", { children: e ? t.requireReadDone : t.requireReadPending })]
51
51
  });
52
52
  }
53
- var _ = ({ file: s, workerSrc: _, sidebar: ce, toolbar: v, onChangeFile: y, themeOverrides: le, defaultTheme: ue, defaultFit: b, language: de, className: x, style: fe, requireRead: S, onDocumentRead: C }) => {
54
- u(() => {
55
- ae.GlobalWorkerOptions.workerSrc = _;
56
- }, [_]);
57
- let [w, T] = p(1), [E, D] = p(0), [O, k] = p(null), [A, pe] = p([]), [j, me] = p(!1), [M, N] = p(b ?? null), [P, F] = p(null), [I, L] = p(!1), R = f(!1), z = f(null), B = f([]), V = f([]), H = f(E);
58
- u(() => {
59
- H.current = E;
60
- }, [E]);
61
- let [he, ge] = p(null);
62
- he !== s && (ge(s), k(null), L(!1), R.current = !1);
63
- let { pdf: U, numPages: W, loading: _e } = ee(s);
64
- u(() => {
65
- L(!1), R.current = !1;
66
- }, [S]), u(() => {
67
- U && (B.current = Array(U.numPages).fill(null), V.current = Array(U.numPages).fill(null));
68
- }, [U]), u(() => {
69
- !U || !b || !z.current || o(b, U, z.current, H.current).then(T);
70
- }, [U, b]);
71
- let G = f(M);
72
- u(() => {
73
- G.current = M;
74
- }, [M]), u(() => {
75
- if (!U || !z.current) return;
76
- let e = z.current, t = new ResizeObserver(() => {
77
- G.current && o(G.current, U, e, H.current).then(T);
53
+ var g = ({ file: o, workerSrc: g, sidebar: le, toolbar: _, onChangeFile: v, themeOverrides: ue, defaultTheme: de, defaultFit: y, language: fe, className: b, style: pe, requireRead: x, onDocumentRead: S }) => {
54
+ l(() => {
55
+ oe.GlobalWorkerOptions.workerSrc = g;
56
+ }, [g]);
57
+ let [C, w] = f(1), [T, E] = f(0), [D, O] = f(null), [k, me] = f([]), [A, he] = f(!1), [j, ge] = f(y ?? null), [M, N] = f(null), [P, F] = f(!1), I = d(!1), L = d(null), R = d([]), z = d([]), B = d(T);
58
+ l(() => {
59
+ B.current = T;
60
+ }, [T]);
61
+ let [_e, ve] = f(null);
62
+ _e !== o && (ve(o), O(null), F(!1)), l(() => {
63
+ I.current = !1;
64
+ }, [o]);
65
+ let { pdf: V, numPages: H, loading: ye } = te(o);
66
+ l(() => {
67
+ V && (R.current = Array(V.numPages).fill(null), z.current = Array(V.numPages).fill(null));
68
+ }, [V]), l(() => {
69
+ !V || !y || !L.current || a(y, V, L.current, B.current).then(w);
70
+ }, [V, y]);
71
+ let U = d(j);
72
+ l(() => {
73
+ U.current = j;
74
+ }, [j]), l(() => {
75
+ if (!V || !L.current) return;
76
+ let e = L.current, t = new ResizeObserver(() => {
77
+ U.current && a(U.current, V, e, B.current).then(w);
78
78
  });
79
79
  return t.observe(e), () => t.disconnect();
80
- }, [U]);
81
- let { currentPage: K, goToPage: q } = t({
82
- numPages: W,
83
- containerRef: z,
84
- pageRefs: B
80
+ }, [V]);
81
+ let { currentPage: W, goToPage: G } = t({
82
+ numPages: H,
83
+ containerRef: L,
84
+ pageRefs: R
85
85
  });
86
- u(() => {
87
- !S || I || W === 0 || K >= W && (L(!0), R.current || (R.current = !0, C?.()));
86
+ l(() => {
87
+ H === 0 || W < H || (x && !P && F(!0), I.current || (I.current = !0, S?.()));
88
88
  }, [
89
- K,
90
89
  W,
91
- S,
92
- I,
93
- C
90
+ H,
91
+ x,
92
+ P,
93
+ S
94
94
  ]);
95
- let J = d(() => {
96
- if (W === 0) return [];
97
- let e = /* @__PURE__ */ new Set(), t = Math.max(K - g, 1), n = Math.min(K + g, W);
95
+ let K = u(() => {
96
+ if (H === 0) return [];
97
+ let e = /* @__PURE__ */ new Set(), t = Math.max(W - h, 1), n = Math.min(W + h, H);
98
98
  for (let r = t; r <= n; r++) e.add(r);
99
- O && e.add(O.page);
100
- for (let t of A) e.add(t.page);
99
+ D && e.add(D.page);
100
+ for (let t of k) e.add(t.page);
101
101
  return Array.from(e).sort((e, t) => e - t);
102
102
  }, [
103
- K,
104
103
  W,
105
- O,
106
- A
107
- ]), { pageSizes: ve, renderedPages: Y } = te({
108
- pdf: U,
109
- zoom: w,
110
- rotation: E,
111
- visiblePages: J,
112
- canvasRefs: V
113
- }), X = d(() => {
114
- let e = new Set(J);
115
- for (let t of Y) e.add(t);
104
+ H,
105
+ D,
106
+ k
107
+ ]), { pageSizes: be, renderedPages: q } = ne({
108
+ pdf: V,
109
+ zoom: C,
110
+ rotation: T,
111
+ visiblePages: K,
112
+ canvasRefs: z
113
+ }), J = u(() => {
114
+ let e = new Set(K);
115
+ for (let t of q) e.add(t);
116
116
  return Array.from(e).sort((e, t) => e - t);
117
- }, [J, Y]);
117
+ }, [K, q]);
118
118
  n({
119
- pdf: U,
120
- currentPage: K,
121
- goToPage: q,
122
- setZoom: T,
123
- setRotation: D,
124
- setFitMode: N
119
+ pdf: V,
120
+ currentPage: W,
121
+ goToPage: G,
122
+ setRotation: E
125
123
  });
126
- let ye = r({
127
- pdf: U,
128
- zoom: w,
129
- rotation: E,
130
- mountedPages: X,
131
- canvasRefs: V
132
- }), { linkOverlays: be, noteOverlays: xe } = a({
133
- pdf: U,
134
- zoom: w,
135
- rotation: E,
136
- mountedPages: X,
137
- goToPage: q
124
+ let xe = r({
125
+ pdf: V,
126
+ zoom: C,
127
+ rotation: T,
128
+ mountedPages: J,
129
+ canvasRefs: z
130
+ }), { linkOverlays: Se, noteOverlays: Ce } = ee({
131
+ pdf: V,
132
+ zoom: C,
133
+ rotation: T,
134
+ mountedPages: J,
135
+ goToPage: G
138
136
  });
139
- u(() => {
140
- if (!P) return;
141
- let e = () => F(null), t = (e) => {
142
- e.key === "Escape" && F(null);
137
+ l(() => {
138
+ if (!M) return;
139
+ let e = () => N(null), t = (e) => {
140
+ e.key === "Escape" && N(null);
143
141
  };
144
142
  return document.addEventListener("click", e), document.addEventListener("keydown", t), () => {
145
143
  document.removeEventListener("click", e), document.removeEventListener("keydown", t);
146
144
  };
147
- }, [P]);
148
- let { overlayRect: Z, searchOverlays: Se } = ne({
149
- pdf: U,
150
- highlight: O,
151
- searchMatches: A,
152
- zoom: w,
153
- rotation: E
154
- }), Ce = l((e, t) => {
145
+ }, [M]);
146
+ let { overlayRect: Y, searchOverlays: we } = re({
147
+ pdf: V,
148
+ highlight: D,
149
+ searchMatches: k,
150
+ zoom: C,
151
+ rotation: T
152
+ }), Te = c((e, t) => {
155
153
  (!e.url || !i(e.url)) && (t.preventDefault(), e.url || e._handleClick());
156
- }, []), Q = f(null), we = l((e, t) => {
157
- Q.current && clearTimeout(Q.current);
154
+ }, []), X = d(null), Z = c((e, t) => {
155
+ X.current && clearTimeout(X.current);
158
156
  let n = t.clientY > window.innerHeight * .6;
159
- F({
157
+ N({
160
158
  x: Math.min(t.clientX, window.innerWidth - 304),
161
159
  y: n ? window.innerHeight - t.clientY + 8 : t.clientY + 12,
162
160
  above: n,
163
161
  contents: e.contents,
164
162
  title: e.title
165
163
  });
166
- }, []), $ = l(() => {
167
- Q.current = setTimeout(() => F(null), 200);
168
- }, []), Te = l((e) => {
169
- k({
164
+ }, []), Q = c(() => {
165
+ X.current = setTimeout(() => N(null), 200);
166
+ }, []), $ = c((e) => {
167
+ O({
170
168
  page: e.page,
171
169
  pdfRect: e.pdfRect
172
- }), q(e.page);
173
- }, [k, q]), Ee = d(() => ({
174
- pdf: U,
175
- numPages: W,
176
- zoom: w,
177
- setZoom: T,
178
- rotation: E,
179
- setRotation: D,
180
- currentPage: K,
181
- goToPage: q,
182
- containerRef: z,
183
- canvasRefs: V,
184
- file: s,
185
- highlight: O,
186
- setHighlight: k,
187
- searchMatches: A,
188
- setSearchMatches: pe,
189
- onChangeFile: y,
190
- sidebarCollapsed: j,
191
- setSidebarCollapsed: me,
192
- fitMode: M,
193
- setFitMode: N,
194
- navigationLocked: !!S && !I
170
+ }), G(e.page);
171
+ }, [O, G]), Ee = u(() => ({
172
+ pdf: V,
173
+ numPages: H,
174
+ zoom: C,
175
+ setZoom: w,
176
+ rotation: T,
177
+ setRotation: E,
178
+ currentPage: W,
179
+ goToPage: G,
180
+ containerRef: L,
181
+ canvasRefs: z,
182
+ file: o,
183
+ highlight: D,
184
+ setHighlight: O,
185
+ searchMatches: k,
186
+ setSearchMatches: me,
187
+ onChangeFile: v,
188
+ sidebarCollapsed: A,
189
+ setSidebarCollapsed: he,
190
+ fitMode: j,
191
+ setFitMode: ge,
192
+ navigationLocked: !!x && !P
195
193
  }), [
196
- U,
194
+ V,
195
+ H,
196
+ C,
197
+ T,
197
198
  W,
198
- w,
199
- E,
200
- K,
201
- q,
202
- s,
203
- O,
199
+ G,
200
+ o,
201
+ D,
202
+ k,
203
+ v,
204
204
  A,
205
- y,
206
205
  j,
207
- M,
208
- S,
209
- I
206
+ x,
207
+ P
210
208
  ]);
211
- return /* @__PURE__ */ m(re, {
212
- themeOverrides: le,
213
- defaultTheme: ue,
214
- children: /* @__PURE__ */ m(ie, {
215
- language: de,
216
- children: /* @__PURE__ */ h(e.Provider, {
209
+ return /* @__PURE__ */ p(ie, {
210
+ themeOverrides: ue,
211
+ defaultTheme: de,
212
+ children: /* @__PURE__ */ p(ae, {
213
+ language: fe,
214
+ children: /* @__PURE__ */ m(e.Provider, {
217
215
  value: Ee,
218
- children: [/* @__PURE__ */ h("div", {
219
- className: `${c.appLayout}${x ? ` ${x}` : ""}`,
220
- style: fe,
221
- children: [v && /* @__PURE__ */ m("div", {
222
- className: c.toolbar,
223
- children: v
224
- }), /* @__PURE__ */ h("div", {
225
- className: c.body,
226
- children: [ce, /* @__PURE__ */ h("div", {
227
- className: c.scrollContainer,
228
- ref: z,
216
+ children: [/* @__PURE__ */ m("div", {
217
+ className: `${s.appLayout}${b ? ` ${b}` : ""}`,
218
+ style: pe,
219
+ children: [_ && /* @__PURE__ */ p("div", {
220
+ className: s.toolbar,
221
+ children: _
222
+ }), /* @__PURE__ */ m("div", {
223
+ className: s.body,
224
+ children: [le, /* @__PURE__ */ m("div", {
225
+ className: s.scrollContainer,
226
+ ref: L,
229
227
  children: [
230
- _e && /* @__PURE__ */ m("div", { className: c.documentLoading }),
231
- Array.from({ length: W }, (e, t) => {
232
- let n = Y.has(t + 1), r = ve[t], a = X.includes(t + 1);
233
- return /* @__PURE__ */ h("div", {
234
- className: c.pageWrapper,
228
+ ye && /* @__PURE__ */ p("div", { className: s.documentLoading }),
229
+ Array.from({ length: H }, (e, t) => {
230
+ let n = q.has(t + 1), r = be[t], ee = J.includes(t + 1);
231
+ return /* @__PURE__ */ m("div", {
232
+ className: s.pageWrapper,
235
233
  ref: (e) => {
236
- B.current[t] = e;
234
+ R.current[t] = e;
237
235
  },
238
236
  style: r ? {
239
237
  width: r.width,
240
238
  height: r.height
241
239
  } : void 0,
242
240
  children: [
243
- r && !n && /* @__PURE__ */ m("div", {
244
- className: c.pageSkeleton,
241
+ r && !n && /* @__PURE__ */ p("div", {
242
+ className: s.pageSkeleton,
245
243
  style: {
246
244
  width: r.width,
247
245
  height: r.height
248
246
  }
249
247
  }),
250
- a && /* @__PURE__ */ h(oe, { children: [/* @__PURE__ */ m("canvas", {
251
- className: c.pageCanvas,
248
+ ee && /* @__PURE__ */ m(se, { children: [/* @__PURE__ */ p("canvas", {
249
+ className: s.pageCanvas,
252
250
  ref: (e) => {
253
- V.current[t] = e;
251
+ z.current[t] = e;
254
252
  },
255
253
  style: { display: n ? "block" : "none" }
256
- }), /* @__PURE__ */ m("div", {
257
- className: `textLayer ${c.textLayer}`,
254
+ }), /* @__PURE__ */ p("div", {
255
+ className: `textLayer ${s.textLayer}`,
258
256
  ref: (e) => {
259
- ye.current[t] = e;
257
+ xe.current[t] = e;
260
258
  }
261
259
  })] }),
262
- be.filter((e) => e.page === t + 1).map((e, t) => /* @__PURE__ */ m("a", {
263
- className: c.linkOverlay,
260
+ Se.filter((e) => e.page === t + 1).map((e, t) => /* @__PURE__ */ p("a", {
261
+ className: s.linkOverlay,
264
262
  href: e.url && i(e.url) ? e.url : "#",
265
263
  target: "_blank",
266
264
  rel: "noopener noreferrer",
@@ -270,27 +268,27 @@ var _ = ({ file: s, workerSrc: _, sidebar: ce, toolbar: v, onChangeFile: y, them
270
268
  width: e.width,
271
269
  height: e.height
272
270
  },
273
- onClick: (t) => Ce(e, t)
271
+ onClick: (t) => Te(e, t)
274
272
  }, t)),
275
- xe.filter((e) => e.page === t + 1).map((e, t) => e.subtype === "Text" ? /* @__PURE__ */ m("div", {
276
- className: c.noteIconOverlay,
273
+ Ce.filter((e) => e.page === t + 1).map((e, t) => e.subtype === "Text" ? /* @__PURE__ */ p("div", {
274
+ className: s.noteIconOverlay,
277
275
  style: {
278
276
  left: e.x,
279
277
  top: e.y,
280
278
  width: Math.max(e.width, 26),
281
279
  height: Math.max(e.height, 26)
282
280
  },
283
- onMouseEnter: (t) => we(e, t),
284
- onMouseLeave: $,
285
- onClick: () => Te(e),
286
- children: /* @__PURE__ */ h("svg", {
281
+ onMouseEnter: (t) => Z(e, t),
282
+ onMouseLeave: Q,
283
+ onClick: () => $(e),
284
+ children: /* @__PURE__ */ m("svg", {
287
285
  width: "22",
288
286
  height: "22",
289
287
  viewBox: "0 0 12 12",
290
288
  fill: "none",
291
289
  "aria-hidden": "true",
292
290
  children: [
293
- /* @__PURE__ */ m("rect", {
291
+ /* @__PURE__ */ p("rect", {
294
292
  x: "0.5",
295
293
  y: "0.5",
296
294
  width: "9",
@@ -300,13 +298,13 @@ var _ = ({ file: s, workerSrc: _, sidebar: ce, toolbar: v, onChangeFile: y, them
300
298
  stroke: "rgba(160,120,0,0.7)",
301
299
  strokeWidth: "1"
302
300
  }),
303
- /* @__PURE__ */ m("path", {
301
+ /* @__PURE__ */ p("path", {
304
302
  d: "M9.5 5.5v3l2.5-3z",
305
303
  fill: "rgba(255,210,0,0.9)",
306
304
  stroke: "rgba(160,120,0,0.7)",
307
305
  strokeWidth: "1"
308
306
  }),
309
- /* @__PURE__ */ m("line", {
307
+ /* @__PURE__ */ p("line", {
310
308
  x1: "2",
311
309
  y1: "3",
312
310
  x2: "8",
@@ -315,7 +313,7 @@ var _ = ({ file: s, workerSrc: _, sidebar: ce, toolbar: v, onChangeFile: y, them
315
313
  strokeWidth: "1",
316
314
  strokeLinecap: "round"
317
315
  }),
318
- /* @__PURE__ */ m("line", {
316
+ /* @__PURE__ */ p("line", {
319
317
  x1: "2",
320
318
  y1: "5.5",
321
319
  x2: "7",
@@ -326,20 +324,20 @@ var _ = ({ file: s, workerSrc: _, sidebar: ce, toolbar: v, onChangeFile: y, them
326
324
  })
327
325
  ]
328
326
  })
329
- }, t) : /* @__PURE__ */ m("div", {
330
- className: c.noteOverlay,
327
+ }, t) : /* @__PURE__ */ p("div", {
328
+ className: s.noteOverlay,
331
329
  style: {
332
330
  left: e.x,
333
331
  top: e.y,
334
332
  width: e.width,
335
333
  height: e.height
336
334
  },
337
- onMouseEnter: (t) => we(e, t),
338
- onMouseLeave: $,
339
- onClick: () => Te(e)
335
+ onMouseEnter: (t) => Z(e, t),
336
+ onMouseLeave: Q,
337
+ onClick: () => $(e)
340
338
  }, t)),
341
- Se.filter((e) => e.page === t + 1).map((e, t) => /* @__PURE__ */ m("div", {
342
- className: c.searchMatchOverlay,
339
+ we.filter((e) => e.page === t + 1).map((e, t) => /* @__PURE__ */ p("div", {
340
+ className: s.searchMatchOverlay,
343
341
  style: {
344
342
  left: e.x,
345
343
  top: e.y,
@@ -347,42 +345,42 @@ var _ = ({ file: s, workerSrc: _, sidebar: ce, toolbar: v, onChangeFile: y, them
347
345
  height: e.height
348
346
  }
349
347
  }, t)),
350
- O && Z?.page === t + 1 && /* @__PURE__ */ m("div", {
351
- className: c.highlightOverlay,
348
+ D && Y?.page === t + 1 && /* @__PURE__ */ p("div", {
349
+ className: s.highlightOverlay,
352
350
  style: {
353
- left: Z.x,
354
- top: Z.y,
355
- width: Z.width,
356
- height: Z.height
351
+ left: Y.x,
352
+ top: Y.y,
353
+ width: Y.width,
354
+ height: Y.height
357
355
  }
358
356
  })
359
357
  ]
360
- }, `${t}-${E}`);
358
+ }, `${t}-${T}`);
361
359
  }),
362
- S && /* @__PURE__ */ m(se, { hasRead: I })
360
+ x && /* @__PURE__ */ p(ce, { hasRead: P })
363
361
  ]
364
362
  })]
365
363
  })]
366
- }), P && /* @__PURE__ */ h("div", {
367
- className: c.notePopover,
368
- style: P.above ? {
369
- left: P.x,
370
- bottom: P.y
364
+ }), M && /* @__PURE__ */ m("div", {
365
+ className: s.notePopover,
366
+ style: M.above ? {
367
+ left: M.x,
368
+ bottom: M.y
371
369
  } : {
372
- left: P.x,
373
- top: P.y
370
+ left: M.x,
371
+ top: M.y
374
372
  },
375
373
  onMouseEnter: () => {
376
- Q.current && clearTimeout(Q.current);
374
+ X.current && clearTimeout(X.current);
377
375
  },
378
- onMouseLeave: $,
376
+ onMouseLeave: Q,
379
377
  onClick: (e) => e.stopPropagation(),
380
- children: [P.title && /* @__PURE__ */ m("div", {
381
- className: c.notePopoverTitle,
382
- children: P.title
383
- }), /* @__PURE__ */ m("p", {
384
- className: c.notePopoverContent,
385
- children: P.contents
378
+ children: [M.title && /* @__PURE__ */ p("div", {
379
+ className: s.notePopoverTitle,
380
+ children: M.title
381
+ }), /* @__PURE__ */ p("p", {
382
+ className: s.notePopoverContent,
383
+ children: M.contents
386
384
  })]
387
385
  })]
388
386
  })
@@ -390,4 +388,4 @@ var _ = ({ file: s, workerSrc: _, sidebar: ce, toolbar: v, onChangeFile: y, them
390
388
  });
391
389
  };
392
390
  //#endregion
393
- export { _ as default };
391
+ export { g as default };
@@ -8,8 +8,16 @@ import { jsx as u, jsxs as d } from "react/jsx-runtime";
8
8
  var f = 40;
9
9
  function p({ children: p, overflowIcon: m = "···" }) {
10
10
  let h = e(), g = c(null), _ = c([]), v = c([]), [y, b] = l(null), [x, S] = l(!1), C = c(null), w = i.Children.toArray(p), T = a(() => {
11
- let e = g.current, t = v.current;
12
- if (!e || t.length === 0) return;
11
+ let e = g.current;
12
+ if (!e) return;
13
+ _.current.forEach((e, t) => {
14
+ if (e) {
15
+ let n = e.offsetWidth;
16
+ n > 0 && (v.current[t] = n);
17
+ }
18
+ });
19
+ let t = v.current;
20
+ if (t.length === 0) return;
13
21
  let n = e.offsetWidth;
14
22
  if (t.reduce((e, t) => e + t, 0) <= n) {
15
23
  b(null);
@@ -20,8 +28,8 @@ function p({ children: p, overflowIcon: m = "···" }) {
20
28
  b(i);
21
29
  }, []);
22
30
  s(() => {
23
- v.current = _.current.slice(0, w.length).map((e) => e?.offsetWidth ?? 0), T();
24
- }, []), o(() => {
31
+ T();
32
+ }, [T]), o(() => {
25
33
  let e = g.current;
26
34
  if (!e) return;
27
35
  let t = new ResizeObserver(() => T());
@@ -59,6 +67,10 @@ function p({ children: p, overflowIcon: m = "···" }) {
59
67
  className: n.dropdown,
60
68
  role: "menu",
61
69
  children: D.map((e, t) => {
70
+ if (i.isValidElement(e) && e.type.isSeparator) return /* @__PURE__ */ u(r.Provider, {
71
+ value: !0,
72
+ children: e
73
+ }, t);
62
74
  let a = i.isValidElement(e) ? e.type.toolbarLabelKey : void 0, o = a ? h[a] : void 0;
63
75
  return /* @__PURE__ */ u("div", {
64
76
  className: n.dropdownItem,
@@ -4,10 +4,14 @@ import { useContext as n } from "react";
4
4
  import { jsx as r } from "react/jsx-runtime";
5
5
  //#region src/components/ui/PDFToolbarSeparator.tsx
6
6
  function i() {
7
- return n(e) ? null : /* @__PURE__ */ r("div", {
7
+ return n(e) ? /* @__PURE__ */ r("div", {
8
+ className: t.separatorH,
9
+ "aria-hidden": "true"
10
+ }) : /* @__PURE__ */ r("div", {
8
11
  className: t.separator,
9
12
  "aria-hidden": "true"
10
13
  });
11
14
  }
15
+ i.isSeparator = !0;
12
16
  //#endregion
13
17
  export { i as PDFToolbarSeparator };
@@ -1,3 +1,6 @@
1
- var e = { separator: "_separator_uif34_1" };
1
+ var e = {
2
+ separator: "_separator_b9iob_1",
3
+ separatorH: "_separatorH_b9iob_9"
4
+ };
2
5
  //#endregion
3
6
  export { e as default };
@@ -1,7 +1,7 @@
1
1
  import { useEffect as e } from "react";
2
2
  import "pdfjs-dist";
3
3
  //#region src/hooks/useKeyboardShortcuts.ts
4
- function t({ pdf: t, currentPage: n, goToPage: r, setZoom: i, setRotation: a, setFitMode: o }) {
4
+ function t({ pdf: t, currentPage: n, goToPage: r, setRotation: i }) {
5
5
  e(() => {
6
6
  if (!t) return;
7
7
  let e = (e) => {
@@ -15,16 +15,9 @@ function t({ pdf: t, currentPage: n, goToPage: r, setZoom: i, setRotation: a, se
15
15
  case "ArrowDown":
16
16
  e.preventDefault(), r(n + 1);
17
17
  break;
18
- case "+":
19
- case "=":
20
- e.preventDefault(), o(null), i((e) => Math.min(e + .2, 3));
21
- break;
22
- case "-":
23
- e.preventDefault(), o(null), i((e) => Math.max(e - .2, .2));
24
- break;
25
18
  case "r":
26
19
  case "R":
27
- e.preventDefault(), a((e) => (e + 90) % 360);
20
+ e.preventDefault(), i((e) => (e + 90) % 360);
28
21
  break;
29
22
  }
30
23
  };
@@ -33,9 +26,7 @@ function t({ pdf: t, currentPage: n, goToPage: r, setZoom: i, setRotation: a, se
33
26
  t,
34
27
  n,
35
28
  r,
36
- i,
37
- a,
38
- o
29
+ i
39
30
  ]);
40
31
  }
41
32
  //#endregion
@@ -1,36 +1,43 @@
1
- import { useCallback as e, useEffect as t, useState as n } from "react";
1
+ import { useCallback as e, useEffect as t, useRef as n, useState as r } from "react";
2
2
  //#region src/hooks/useScrollTracking.ts
3
- var r = 10;
4
- function i({ numPages: i, containerRef: a, pageRefs: o }) {
5
- let [s, c] = n(1);
3
+ var i = 10;
4
+ function a({ numPages: a, containerRef: o, pageRefs: s }) {
5
+ let [c, l] = r(1), u = n(null), d = n(null);
6
6
  return t(() => {
7
- let e = a.current;
7
+ let e = o.current;
8
8
  if (!e) return;
9
9
  let t = () => {
10
- let t = e.getBoundingClientRect().top, n = o.current;
10
+ let t = e.getBoundingClientRect().top, n = s.current, r = -1;
11
11
  for (let e = 0; e < n.length; e++) {
12
- let r = n[e];
13
- r && r.getBoundingClientRect().top - t <= 150 && c(e + 1);
12
+ let i = n[e];
13
+ i && i.getBoundingClientRect().top - t <= 150 && (r = e + 1);
14
+ }
15
+ if (r !== -1) {
16
+ if (u.current !== null) if (r === u.current) u.current = null, d.current &&= (clearTimeout(d.current), null);
17
+ else return;
18
+ l(r);
14
19
  }
15
20
  };
16
21
  return e.addEventListener("scroll", t), () => e.removeEventListener("scroll", t);
17
- }, [a, o]), {
18
- currentPage: s,
22
+ }, [o, s]), {
23
+ currentPage: c,
19
24
  goToPage: e((e, t) => {
20
- let n = Math.min(Math.max(e, 1), i), s = o.current[n - 1], l = a.current;
21
- if (s && l) {
22
- let e = s.getBoundingClientRect().top, i = l.getBoundingClientRect().top, a = l.scrollTop + (e - i) - r, o = t === void 0 ? a : a + t;
23
- l.scrollTo({
24
- top: o,
25
+ let n = Math.min(Math.max(e, 1), a), r = s.current[n - 1], c = o.current;
26
+ if (r && c) {
27
+ let e = r.getBoundingClientRect().top, a = c.getBoundingClientRect().top, o = c.scrollTop + (e - a) - i, s = t === void 0 ? o : o + t, f = () => {
28
+ u.current = null, d.current &&= (clearTimeout(d.current), null), c.removeEventListener("wheel", f), c.removeEventListener("pointerdown", f);
29
+ };
30
+ u.current = n, d.current && clearTimeout(d.current), d.current = setTimeout(f, 1e3), c.addEventListener("wheel", f, { once: !0 }), c.addEventListener("pointerdown", f, { once: !0 }), l(n), c.scrollTo({
31
+ top: s,
25
32
  behavior: "smooth"
26
- }), c(n);
33
+ });
27
34
  }
28
35
  }, [
29
- i,
30
36
  a,
31
- o
37
+ o,
38
+ s
32
39
  ])
33
40
  };
34
41
  }
35
42
  //#endregion
36
- export { i as useScrollTracking };
43
+ export { a as useScrollTracking };
@@ -1,69 +1,45 @@
1
- import { useEffect as e, useReducer as t, useRef as n } from "react";
1
+ import { useEffect as e, useRef as t, useState as n } from "react";
2
2
  import "pdfjs-dist";
3
3
  //#region src/hooks/useThumbnails.ts
4
- function r(e, t) {
5
- if (t.type === "reset") return {
6
- thumbnails: Array(t.numPages).fill(null),
7
- version: e.version + 1
8
- };
9
- if (t.type === "set") {
10
- let n = [...e.thumbnails];
11
- return n[t.pageNum - 1] = t.dataUrl, {
12
- thumbnails: n,
13
- version: e.version
14
- };
15
- }
16
- return e;
17
- }
18
- function i({ pdf: i, rotation: a, visiblePages: o }) {
19
- let [{ thumbnails: s, version: c }, l] = t(r, {
20
- thumbnails: [],
21
- version: 0
22
- }), u = n(/* @__PURE__ */ new Set()), d = n({
4
+ function r({ pdf: r, rotation: i, visiblePages: a }) {
5
+ let [o, s] = n([]), [c, l] = n(0), u = t(/* @__PURE__ */ new Set()), d = t({
23
6
  pdf: null,
24
7
  rotation: 0
25
8
  });
26
9
  return e(() => {
27
- if (!i) {
28
- l({
29
- type: "reset",
30
- numPages: 0
31
- }), u.current.clear(), d.current = {
10
+ if (!r) {
11
+ s([]), l(0), u.current.clear(), d.current = {
32
12
  pdf: null,
33
13
  rotation: 0
34
14
  };
35
15
  return;
36
16
  }
37
- if (d.current.pdf !== i || d.current.rotation !== a) {
17
+ if (d.current.pdf !== r || d.current.rotation !== i) {
38
18
  d.current = {
39
- pdf: i,
40
- rotation: a
41
- }, u.current.clear(), l({
42
- type: "reset",
43
- numPages: i.numPages
44
- });
19
+ pdf: r,
20
+ rotation: i
21
+ }, u.current.clear(), s(Array(r.numPages).fill(null)), l((e) => e + 1);
45
22
  return;
46
23
  }
47
- let e = o.filter((e) => !u.current.has(e));
24
+ let e = a.filter((e) => !u.current.has(e));
48
25
  if (e.length === 0) return;
49
26
  let t = !1;
50
27
  return (async () => {
51
28
  for (let n of e) {
52
29
  if (t) break;
53
- let e = await i.getPage(n), r = e.getViewport({
30
+ let e = await r.getPage(n), a = e.getViewport({
54
31
  scale: .2,
55
- rotation: a
56
- }), o = document.createElement("canvas"), s = o.getContext("2d");
57
- if (s) {
58
- if (o.height = r.height, o.width = r.width, await e.render({
59
- canvasContext: s,
60
- viewport: r,
32
+ rotation: i
33
+ }), o = document.createElement("canvas"), c = o.getContext("2d");
34
+ if (c) {
35
+ if (o.height = a.height, o.width = a.width, await e.render({
36
+ canvasContext: c,
37
+ viewport: a,
61
38
  canvas: o
62
39
  }).promise, t) break;
63
- u.current.add(n), l({
64
- type: "set",
65
- pageNum: n,
66
- dataUrl: o.toDataURL()
40
+ u.current.add(n), s((e) => {
41
+ let t = [...e];
42
+ return t[n - 1] = o.toDataURL(), t;
67
43
  });
68
44
  }
69
45
  }
@@ -71,11 +47,11 @@ function i({ pdf: i, rotation: a, visiblePages: o }) {
71
47
  t = !0;
72
48
  };
73
49
  }, [
50
+ r,
74
51
  i,
75
52
  a,
76
- o,
77
53
  c
78
- ]), { thumbnails: s };
54
+ ]), { thumbnails: o };
79
55
  }
80
56
  //#endregion
81
- export { i as useThumbnails };
57
+ export { r as useThumbnails };
@@ -1,2 +1,2 @@
1
- ._wrapper_1kvg0_1{border-right:1px solid var(--pdf-border);height:100%;display:flex}._wrapperCollapsed_1kvg0_7{border-right:1px solid var(--pdf-border);background-color:var(--pdf-bg);flex-direction:column;height:100%;padding-top:4px;display:flex}._buttonBar_1kvg0_16{background-color:var(--pdf-bg);flex-direction:column;flex-shrink:0;gap:2px;width:48px;padding-top:4px;display:flex}._toggleButton_1kvg0_26{border-bottom:1px solid var(--pdf-border);border-radius:0;width:48px;margin:0;padding-bottom:6px}._panelButton_1kvg0_35{cursor:pointer;width:44px;height:44px;color:var(--pdf-text-muted);background-color:#0000;border:none;border-radius:6px;justify-content:center;align-items:center;margin:0 2px;transition:background-color .15s,color .15s;display:flex}._panelButton_1kvg0_35:hover{background-color:var(--pdf-surface);color:var(--pdf-text-secondary)}._panelButtonActive_1kvg0_57{background-color:var(--pdf-surface);color:var(--pdf-accent-light)}._panelButtonActive_1kvg0_57:hover{color:var(--pdf-accent-light)}._contentPanel_1kvg0_66{background-color:var(--pdf-panel-bg);border-right:1px solid var(--pdf-panel-border);flex-direction:column;width:260px;display:flex}._panelHeader_1kvg0_74{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_1kvg0_86{flex:1;overflow-y:auto}._appLayout_1xasy_1{flex-direction:column;width:100%;height:100%;display:flex;overflow:hidden}._body_1xasy_9{flex-direction:row;flex:1;min-height:0;display:flex;overflow:hidden}._toolbar_1xasy_17{border-bottom:1px solid var(--pdf-border);background-color:var(--pdf-bg);z-index:10;flex-shrink:0;align-items:center;gap:2px;height:44px;padding:0 12px;display:flex}._scrollContainer_1xasy_29{background-color:var(--pdf-scroll-area);flex-direction:column;flex:1;align-items:center;padding:10px 20px;display:flex;position:relative;overflow-y:auto}._pageWrapper_1xasy_40{margin-bottom:25px;position:relative}._pageCanvas_1xasy_45{z-index:1;box-shadow:0 5px 20px var(--pdf-shadow-page);pointer-events:none;background-color:#fff;display:block;position:relative}._textLayer_1xasy_54{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light only;text-align:initial;opacity:1;-webkit-text-size-adjust:none;-moz-text-size-adjust:none;text-size-adjust:none;forced-color-adjust:none;transform-origin:0 0;caret-color:canvastext;z-index:2;--min-font-size:1;--text-scale-factor:calc(var(--total-scale-factor) * var(--min-font-size));--min-font-size-inv:calc(1 / var(--min-font-size));line-height:1;position:absolute;inset:0;overflow:clip}._textLayer_1xasy_54 :is(span,br){color:#0000;white-space:pre;cursor:text;transform-origin:0 0;position:absolute}._textLayer_1xasy_54>:not(._markedContent_1xasy_80),._textLayer_1xasy_54 ._markedContent_1xasy_80 span:not(._markedContent_1xasy_80){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_1xasy_54 ._markedContent_1xasy_80{display:contents}._textLayer_1xasy_54 ._endOfContent_1xasy_95{z-index:0;cursor:default;-webkit-user-select:none;user-select:none;display:block;position:absolute;inset:100% 0 0}._textLayer_1xasy_54._selecting_1xasy_104 ._endOfContent_1xasy_95{top:0}._textLayer_1xasy_54 ::selection{background:#0000ff40}._textLayer_1xasy_54 br::selection{background:0 0}._documentLoading_1xasy_124{pointer-events:none;z-index:10;justify-content:center;align-items:center;display:flex;position:absolute;inset:0}._documentLoading_1xasy_124:after{content:"";border:3px solid #0000001a;border-top-color:var(--pdf-accent);border-radius:50%;width:40px;height:40px;animation:.8s linear infinite _spin_1xasy_1}._pageSkeleton_1xasy_144{z-index:0;pointer-events:none;background:#fff;border-radius:1px;justify-content:center;align-items:center;display:flex;position:absolute;top:0;left:0}._pageSkeleton_1xasy_144:after{content:"";border:3px solid #0000001a;border-top-color:var(--pdf-accent);border-radius:50%;width:32px;height:32px;animation:.8s linear infinite _spin_1xasy_1}@keyframes _spin_1xasy_1{to{transform:rotate(360deg)}}._highlightOverlay_1xasy_173{z-index:4;pointer-events:none;background-color:#ffdc0059;border:2px solid #ffa000e6;border-radius:2px;position:absolute}._linkOverlay_1xasy_182{z-index:3;pointer-events:all;cursor:pointer;position:absolute}._searchMatchOverlay_1xasy_189{z-index:3;pointer-events:none;background-color:#fde0474d;border-bottom:2px solid #eab308cc;position:absolute}._noteOverlay_1xasy_197{z-index:3;pointer-events:all;cursor:pointer;position:absolute}._noteIconOverlay_1xasy_204{z-index:3;pointer-events:all;cursor:pointer;border-radius:3px;justify-content:center;align-items:center;transition:background-color .1s;display:flex;position:absolute}._noteIconOverlay_1xasy_204:hover{background-color:#ffd20033;outline:1px solid #a0780066}._requireReadBanner_1xasy_221{font-size:13px;font-weight:500;font-family:var(--pdf-font-family);color:#fff;background-color:color-mix(in srgb, var(--pdf-accent) 82%, transparent);-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);z-index:10;pointer-events:none;-webkit-user-select:none;user-select:none;border-radius:5px;align-self:flex-end;align-items:center;gap:8px;margin-top:auto;margin-right:25px;padding:9px 16px;transition:background-color .4s;display:flex;position:sticky;bottom:12px;box-shadow:0 2px 12px #0000002e}._requireReadDone_1xasy_245{background-color:#16a34abf}._notePopover_1xasy_249{z-index:9999;background-color:var(--pdf-surface);border:1px solid var(--pdf-border);min-width:160px;max-width:280px;font-family:var(--pdf-font-family);border-radius:6px;padding:10px 12px;position:fixed;box-shadow:0 4px 16px #00000026}._notePopoverTitle_1xasy_262{color:var(--pdf-text-secondary);margin-bottom:6px;font-size:12px;font-weight:600}._notePopoverContent_1xasy_269{color:var(--pdf-text-primary);white-space:pre-wrap;margin:0;font-size:13px;line-height:1.5}._list_gygvf_1{flex-direction:column;display:flex}._emptyState_gygvf_6{color:var(--pdf-text-secondary);padding:20px 14px;font-size:12px}._pageHeader_gygvf_12{color:var(--pdf-text-secondary);text-transform:uppercase;letter-spacing:.5px;background-color:var(--pdf-panel-header-bg);border-bottom:1px solid var(--pdf-panel-border);padding:5px 12px;font-size:10px;font-weight:600}._card_gygvf_23{border:1px solid var(--pdf-panel-border);background-color:var(--pdf-panel-bg);border-radius:6px;margin:8px;padding:10px 12px;font-size:12px;transition:box-shadow .12s}._cardClickable_gygvf_33{cursor:pointer}._cardClickable_gygvf_33:hover{box-shadow:0 1px 6px var(--pdf-shadow-page)}._cardHeader_gygvf_41{justify-content:space-between;align-items:center;margin-bottom:4px;display:flex}._cardLabel_gygvf_48{color:var(--pdf-text-secondary);align-items:center;gap:5px;font-size:11px;font-weight:600;display:flex}._cardPage_gygvf_57{color:var(--pdf-text-secondary);font-size:10px}._cardAuthor_gygvf_62{color:var(--pdf-text-muted);margin-bottom:3px;font-size:11px}._cardContent_gygvf_68{color:var(--pdf-text-primary);font-size:12px;line-height:1.5}._iconWrapper_gygvf_74{justify-content:center;align-items:center;display:flex;position:relative}._badge_gygvf_81{background-color:var(--pdf-badge-bg);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}._list_12ybz_1{flex-direction:column;gap:6px;padding:8px;display:flex}._emptyState_12ybz_8{color:var(--pdf-text-muted);text-align:center;padding:24px 14px;font-size:12px}._card_12ybz_15{border:1px solid var(--pdf-border);background:var(--pdf-panel-bg);text-align:left;box-sizing:border-box;border-radius:8px;align-items:center;gap:10px;padding:10px 12px;font-family:inherit;font-size:12px;transition:box-shadow .15s,border-color .15s;display:flex;overflow:hidden}._fileIcon_12ybz_33{color:var(--pdf-text-muted);flex-shrink:0;align-items:center;display:flex}._filename_12ybz_40{min-width:0;color:var(--pdf-text-primary);text-overflow:ellipsis;white-space:nowrap;flex:1;font-size:12px;font-weight:500;overflow:hidden}._downloadBtn_12ybz_51{border:1px solid var(--pdf-border);background:var(--pdf-surface);width:28px;height:28px;color:var(--pdf-text-secondary);cursor:pointer;border-radius:6px;flex-shrink:0;justify-content:center;align-items:center;padding:0;font-family:inherit;transition:background .15s,border-color .15s,color .15s;display:flex}._downloadBtn_12ybz_51:hover{background:var(--pdf-accent);border-color:var(--pdf-accent);color:#fff}._iconWrapper_12ybz_77{justify-content:center;align-items:center;display:flex;position:relative}._badge_12ybz_84{background-color:var(--pdf-badge-bg);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_1dub8_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_1dub8_1:hover:not(:disabled){background:var(--pdf-surface);color:var(--pdf-text-primary)}._btn_1dub8_1:disabled{color:var(--pdf-border);cursor:default}._primary_1dub8_31{background:var(--pdf-accent);color:#fff;padding:6px 14px}._primary_1dub8_31:hover:not(:disabled){background:var(--pdf-accent-hover);color:#fff}._navWrapper_14eo9_1{align-items:center;gap:2px;display:flex}._pageInput_14eo9_7{background:var(--pdf-surface);width:32px;color:var(--pdf-text-primary);font-variant-numeric:tabular-nums;text-align:center;border:1px solid #0000;border-radius:4px;outline:none;padding:3px 4px;font-family:inherit;font-size:12px}._pageInput_14eo9_7:focus{border-color:var(--pdf-accent)}._pageInput_14eo9_7::-webkit-outer-spin-button{-webkit-appearance:none}._pageInput_14eo9_7::-webkit-inner-spin-button{-webkit-appearance:none}._pageInput_14eo9_7{-moz-appearance:textfield}._pageTotal_14eo9_34{color:var(--pdf-text-placeholder);font-variant-numeric:tabular-nums;font-size:12px}._emptyState_hqvdn_1{color:var(--pdf-text-secondary);padding:20px 14px;font-size:12px}._tree_hqvdn_7{flex-direction:column;padding:4px 0;display:flex}._row_hqvdn_13{color:var(--pdf-text-secondary);cursor:pointer;border-radius:4px;align-items:center;gap:4px;margin:0 4px;padding:5px 12px;font-size:12px;line-height:1.4;display:flex}._row_hqvdn_13:hover{background-color:var(--pdf-surface-hover);color:var(--pdf-text-primary)}._chevronBtn_hqvdn_31{cursor:pointer;color:var(--pdf-text-secondary);background:0 0;border:none;flex-shrink:0;align-items:center;padding:0;display:flex}._chevronBtn_hqvdn_31:hover{color:var(--pdf-text-muted)}._title_hqvdn_46{text-overflow:ellipsis;white-space:nowrap;flex:1;overflow:hidden}._wrapper_18kvs_1{align-items:center;gap:4px;display:flex}._searchIconWrapper_18kvs_7{color:var(--pdf-text-secondary);align-items:center;display:flex}._searchInput_18kvs_13{background:var(--pdf-surface);border:1px solid var(--pdf-border);color:var(--pdf-text-primary);border-radius:4px;outline:none;width:180px;padding:4px 8px;font-family:inherit;font-size:13px}._searchInput_18kvs_13:focus{border-color:var(--pdf-accent)}._searchInput_18kvs_13::placeholder{color:var(--pdf-text-placeholder)}._navButton_18kvs_33{color:var(--pdf-text-secondary);cursor:pointer;background:0 0;border:none;border-radius:4px;align-items:center;padding:4px 5px;display:flex}._navButton_18kvs_33:hover:not(:disabled){background:var(--pdf-surface);color:var(--pdf-text-primary)}._navButton_18kvs_33:disabled{color:var(--pdf-border);cursor:default}._counter_18kvs_54{color:var(--pdf-text-muted);text-align:center;min-width:36px;font-size:11px}._list_b0wj1_1{flex-direction:column;gap:6px;padding:8px;display:flex}._emptyState_b0wj1_8{color:var(--pdf-text-muted);text-align:center;padding:24px 14px;font-size:12px}._card_b0wj1_15{border:1px solid var(--pdf-border);background:var(--pdf-panel-bg);text-align:left;cursor:default;box-sizing:border-box;border-radius:8px;width:100%;font-family:inherit;font-size:12px;transition:box-shadow .15s,border-color .15s;position:relative;overflow:hidden}._cardSigned_b0wj1_32{background:#22c55e0a;border-color:#22c55e47}._cardClickable_b0wj1_37{cursor:pointer}._cardClickable_b0wj1_37:hover{box-shadow:0 2px 10px var(--pdf-shadow-page);border-color:var(--pdf-border-light)}._cardSigned_b0wj1_32._cardClickable_b0wj1_37:hover{border-color:#22c55e73}._cardBody_b0wj1_50{padding:10px 12px 10px 16px}._cardHeader_b0wj1_54{justify-content:space-between;align-items:center;gap:8px;margin-bottom:8px;display:flex}._fieldName_b0wj1_62{color:var(--pdf-text-primary);text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0;font-size:12px;font-weight:600;overflow:hidden}._statusChip_b0wj1_73{text-transform:uppercase;letter-spacing:.5px;background:var(--pdf-surface-hover);color:var(--pdf-text-muted);border:1px solid var(--pdf-border);border-radius:20px;flex-shrink:0;align-items:center;gap:4px;padding:2px 7px;font-size:10px;font-weight:700;display:inline-flex}._statusChipSigned_b0wj1_89{color:#15803d;background:#22c55e1f;border-color:#22c55e4d}._fieldList_b0wj1_95{flex-direction:column;gap:4px;display:flex}._fieldRow_b0wj1_101{grid-template-columns:72px 1fr;gap:4px;font-size:11px;line-height:1.5;display:grid}._fieldLabel_b0wj1_109{color:var(--pdf-text-muted);font-weight:500}._fieldValue_b0wj1_114{color:var(--pdf-text-secondary);word-break:break-word}._iconWrapper_b0wj1_119{justify-content:center;align-items:center;display:flex;position:relative}._badge_b0wj1_126{background-color:var(--pdf-badge-bg);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_t3mg8_1{background-color:var(--pdf-panel-bg);padding-bottom:8px}._thumbnailItem_t3mg8_6{cursor:pointer;text-align:center;background-color:#0000;border-left:2px solid #0000;padding:12px 16px;transition:background-color .15s}._thumbnailItem_t3mg8_6:hover{background-color:var(--pdf-surface-hover)}._thumbnailItemActive_t3mg8_19{background-color:var(--pdf-accent-subtle);border-left-color:var(--pdf-accent)}._thumbnailItemActive_t3mg8_19:hover{background-color:var(--pdf-accent-subtle)}._thumbnailImg_t3mg8_28{width:120px;box-shadow:0 1px 4px var(--pdf-shadow-page);border-radius:2px}._thumbnailImgActive_t3mg8_34{box-shadow:0 0 0 2px var(--pdf-accent), 0 2px 8px var(--pdf-shadow-page)}._thumbnailSkeleton_t3mg8_40{background:linear-gradient(90deg, var(--pdf-surface) 25%, var(--pdf-surface-hover) 50%, var(--pdf-surface) 75%);background-size:200% 100%;border-radius:2px;width:120px;height:160px;animation:1.4s infinite _shimmer_t3mg8_1}@keyframes _shimmer_t3mg8_1{0%{background-position:200% 0}to{background-position:-200% 0}}._thumbnailLabel_t3mg8_63{color:var(--pdf-text-muted);margin-top:6px;font-size:11px;font-weight:400}._thumbnailLabelActive_t3mg8_70{color:var(--pdf-accent-hover);font-weight:600}._zoomLabel_m8iv9_1{text-align:center;min-width:42px;color:var(--pdf-text-muted);font-variant-numeric:tabular-nums;font-size:12px}._toolbar_xoqxq_1{flex:1;align-items:center;gap:2px;min-width:0;display:flex}._item_xoqxq_9{flex-shrink:0;align-items:center;display:flex}._overflowWrapper_xoqxq_15{flex-shrink:0;margin-left:auto;position:relative}._overflowBtnActive_xoqxq_21{background:var(--pdf-surface);color:var(--pdf-text-primary)}._dropdown_xoqxq_26{background:var(--pdf-bg);border:1px solid var(--pdf-border);z-index:100;border-radius:6px;flex-direction:column;gap:1px;padding:4px;display:flex;position:absolute;top:calc(100% + 6px);right:0;box-shadow:0 4px 16px #0000002e}._dropdownItem_xoqxq_41{border-radius:4px;justify-content:flex-end;align-items:center;padding:1px 2px;display:flex}._dropdownItem_xoqxq_41>*{flex-shrink:0}._labeledItem_xoqxq_53{align-items:center;gap:8px;width:100%;display:flex}._itemContent_xoqxq_60{flex-shrink:0;align-items:center;display:flex}._itemLabel_xoqxq_66{color:var(--pdf-text-secondary);white-space:nowrap;-webkit-user-select:none;user-select:none;flex:1;font-size:12px}._dropdownItem_xoqxq_41:hover{background:var(--pdf-surface-hover)}._separator_uif34_1{background:var(--pdf-toolbar-separator);flex-shrink:0;width:1px;height:20px;margin:0 4px}
1
+ ._wrapper_1kvg0_1{border-right:1px solid var(--pdf-border);height:100%;display:flex}._wrapperCollapsed_1kvg0_7{border-right:1px solid var(--pdf-border);background-color:var(--pdf-bg);flex-direction:column;height:100%;padding-top:4px;display:flex}._buttonBar_1kvg0_16{background-color:var(--pdf-bg);flex-direction:column;flex-shrink:0;gap:2px;width:48px;padding-top:4px;display:flex}._toggleButton_1kvg0_26{border-bottom:1px solid var(--pdf-border);border-radius:0;width:48px;margin:0;padding-bottom:6px}._panelButton_1kvg0_35{cursor:pointer;width:44px;height:44px;color:var(--pdf-text-muted);background-color:#0000;border:none;border-radius:6px;justify-content:center;align-items:center;margin:0 2px;transition:background-color .15s,color .15s;display:flex}._panelButton_1kvg0_35:hover{background-color:var(--pdf-surface);color:var(--pdf-text-secondary)}._panelButtonActive_1kvg0_57{background-color:var(--pdf-surface);color:var(--pdf-accent-light)}._panelButtonActive_1kvg0_57:hover{color:var(--pdf-accent-light)}._contentPanel_1kvg0_66{background-color:var(--pdf-panel-bg);border-right:1px solid var(--pdf-panel-border);flex-direction:column;width:260px;display:flex}._panelHeader_1kvg0_74{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_1kvg0_86{flex:1;overflow-y:auto}._appLayout_1xasy_1{flex-direction:column;width:100%;height:100%;display:flex;overflow:hidden}._body_1xasy_9{flex-direction:row;flex:1;min-height:0;display:flex;overflow:hidden}._toolbar_1xasy_17{border-bottom:1px solid var(--pdf-border);background-color:var(--pdf-bg);z-index:10;flex-shrink:0;align-items:center;gap:2px;height:44px;padding:0 12px;display:flex}._scrollContainer_1xasy_29{background-color:var(--pdf-scroll-area);flex-direction:column;flex:1;align-items:center;padding:10px 20px;display:flex;position:relative;overflow-y:auto}._pageWrapper_1xasy_40{margin-bottom:25px;position:relative}._pageCanvas_1xasy_45{z-index:1;box-shadow:0 5px 20px var(--pdf-shadow-page);pointer-events:none;background-color:#fff;display:block;position:relative}._textLayer_1xasy_54{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light only;text-align:initial;opacity:1;-webkit-text-size-adjust:none;-moz-text-size-adjust:none;text-size-adjust:none;forced-color-adjust:none;transform-origin:0 0;caret-color:canvastext;z-index:2;--min-font-size:1;--text-scale-factor:calc(var(--total-scale-factor) * var(--min-font-size));--min-font-size-inv:calc(1 / var(--min-font-size));line-height:1;position:absolute;inset:0;overflow:clip}._textLayer_1xasy_54 :is(span,br){color:#0000;white-space:pre;cursor:text;transform-origin:0 0;position:absolute}._textLayer_1xasy_54>:not(._markedContent_1xasy_80),._textLayer_1xasy_54 ._markedContent_1xasy_80 span:not(._markedContent_1xasy_80){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_1xasy_54 ._markedContent_1xasy_80{display:contents}._textLayer_1xasy_54 ._endOfContent_1xasy_95{z-index:0;cursor:default;-webkit-user-select:none;user-select:none;display:block;position:absolute;inset:100% 0 0}._textLayer_1xasy_54._selecting_1xasy_104 ._endOfContent_1xasy_95{top:0}._textLayer_1xasy_54 ::selection{background:#0000ff40}._textLayer_1xasy_54 br::selection{background:0 0}._documentLoading_1xasy_124{pointer-events:none;z-index:10;justify-content:center;align-items:center;display:flex;position:absolute;inset:0}._documentLoading_1xasy_124:after{content:"";border:3px solid #0000001a;border-top-color:var(--pdf-accent);border-radius:50%;width:40px;height:40px;animation:.8s linear infinite _spin_1xasy_1}._pageSkeleton_1xasy_144{z-index:0;pointer-events:none;background:#fff;border-radius:1px;justify-content:center;align-items:center;display:flex;position:absolute;top:0;left:0}._pageSkeleton_1xasy_144:after{content:"";border:3px solid #0000001a;border-top-color:var(--pdf-accent);border-radius:50%;width:32px;height:32px;animation:.8s linear infinite _spin_1xasy_1}@keyframes _spin_1xasy_1{to{transform:rotate(360deg)}}._highlightOverlay_1xasy_173{z-index:4;pointer-events:none;background-color:#ffdc0059;border:2px solid #ffa000e6;border-radius:2px;position:absolute}._linkOverlay_1xasy_182{z-index:3;pointer-events:all;cursor:pointer;position:absolute}._searchMatchOverlay_1xasy_189{z-index:3;pointer-events:none;background-color:#fde0474d;border-bottom:2px solid #eab308cc;position:absolute}._noteOverlay_1xasy_197{z-index:3;pointer-events:all;cursor:pointer;position:absolute}._noteIconOverlay_1xasy_204{z-index:3;pointer-events:all;cursor:pointer;border-radius:3px;justify-content:center;align-items:center;transition:background-color .1s;display:flex;position:absolute}._noteIconOverlay_1xasy_204:hover{background-color:#ffd20033;outline:1px solid #a0780066}._requireReadBanner_1xasy_221{font-size:13px;font-weight:500;font-family:var(--pdf-font-family);color:#fff;background-color:color-mix(in srgb, var(--pdf-accent) 82%, transparent);-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);z-index:10;pointer-events:none;-webkit-user-select:none;user-select:none;border-radius:5px;align-self:flex-end;align-items:center;gap:8px;margin-top:auto;margin-right:25px;padding:9px 16px;transition:background-color .4s;display:flex;position:sticky;bottom:12px;box-shadow:0 2px 12px #0000002e}._requireReadDone_1xasy_245{background-color:#16a34abf}._notePopover_1xasy_249{z-index:9999;background-color:var(--pdf-surface);border:1px solid var(--pdf-border);min-width:160px;max-width:280px;font-family:var(--pdf-font-family);border-radius:6px;padding:10px 12px;position:fixed;box-shadow:0 4px 16px #00000026}._notePopoverTitle_1xasy_262{color:var(--pdf-text-secondary);margin-bottom:6px;font-size:12px;font-weight:600}._notePopoverContent_1xasy_269{color:var(--pdf-text-primary);white-space:pre-wrap;margin:0;font-size:13px;line-height:1.5}._list_gygvf_1{flex-direction:column;display:flex}._emptyState_gygvf_6{color:var(--pdf-text-secondary);padding:20px 14px;font-size:12px}._pageHeader_gygvf_12{color:var(--pdf-text-secondary);text-transform:uppercase;letter-spacing:.5px;background-color:var(--pdf-panel-header-bg);border-bottom:1px solid var(--pdf-panel-border);padding:5px 12px;font-size:10px;font-weight:600}._card_gygvf_23{border:1px solid var(--pdf-panel-border);background-color:var(--pdf-panel-bg);border-radius:6px;margin:8px;padding:10px 12px;font-size:12px;transition:box-shadow .12s}._cardClickable_gygvf_33{cursor:pointer}._cardClickable_gygvf_33:hover{box-shadow:0 1px 6px var(--pdf-shadow-page)}._cardHeader_gygvf_41{justify-content:space-between;align-items:center;margin-bottom:4px;display:flex}._cardLabel_gygvf_48{color:var(--pdf-text-secondary);align-items:center;gap:5px;font-size:11px;font-weight:600;display:flex}._cardPage_gygvf_57{color:var(--pdf-text-secondary);font-size:10px}._cardAuthor_gygvf_62{color:var(--pdf-text-muted);margin-bottom:3px;font-size:11px}._cardContent_gygvf_68{color:var(--pdf-text-primary);font-size:12px;line-height:1.5}._iconWrapper_gygvf_74{justify-content:center;align-items:center;display:flex;position:relative}._badge_gygvf_81{background-color:var(--pdf-badge-bg);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}._list_12ybz_1{flex-direction:column;gap:6px;padding:8px;display:flex}._emptyState_12ybz_8{color:var(--pdf-text-muted);text-align:center;padding:24px 14px;font-size:12px}._card_12ybz_15{border:1px solid var(--pdf-border);background:var(--pdf-panel-bg);text-align:left;box-sizing:border-box;border-radius:8px;align-items:center;gap:10px;padding:10px 12px;font-family:inherit;font-size:12px;transition:box-shadow .15s,border-color .15s;display:flex;overflow:hidden}._fileIcon_12ybz_33{color:var(--pdf-text-muted);flex-shrink:0;align-items:center;display:flex}._filename_12ybz_40{min-width:0;color:var(--pdf-text-primary);text-overflow:ellipsis;white-space:nowrap;flex:1;font-size:12px;font-weight:500;overflow:hidden}._downloadBtn_12ybz_51{border:1px solid var(--pdf-border);background:var(--pdf-surface);width:28px;height:28px;color:var(--pdf-text-secondary);cursor:pointer;border-radius:6px;flex-shrink:0;justify-content:center;align-items:center;padding:0;font-family:inherit;transition:background .15s,border-color .15s,color .15s;display:flex}._downloadBtn_12ybz_51:hover{background:var(--pdf-accent);border-color:var(--pdf-accent);color:#fff}._iconWrapper_12ybz_77{justify-content:center;align-items:center;display:flex;position:relative}._badge_12ybz_84{background-color:var(--pdf-badge-bg);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_1dub8_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_1dub8_1:hover:not(:disabled){background:var(--pdf-surface);color:var(--pdf-text-primary)}._btn_1dub8_1:disabled{color:var(--pdf-border);cursor:default}._primary_1dub8_31{background:var(--pdf-accent);color:#fff;padding:6px 14px}._primary_1dub8_31:hover:not(:disabled){background:var(--pdf-accent-hover);color:#fff}._navWrapper_14eo9_1{align-items:center;gap:2px;display:flex}._pageInput_14eo9_7{background:var(--pdf-surface);width:32px;color:var(--pdf-text-primary);font-variant-numeric:tabular-nums;text-align:center;border:1px solid #0000;border-radius:4px;outline:none;padding:3px 4px;font-family:inherit;font-size:12px}._pageInput_14eo9_7:focus{border-color:var(--pdf-accent)}._pageInput_14eo9_7::-webkit-outer-spin-button{-webkit-appearance:none}._pageInput_14eo9_7::-webkit-inner-spin-button{-webkit-appearance:none}._pageInput_14eo9_7{-moz-appearance:textfield}._pageTotal_14eo9_34{color:var(--pdf-text-placeholder);font-variant-numeric:tabular-nums;font-size:12px}._emptyState_hqvdn_1{color:var(--pdf-text-secondary);padding:20px 14px;font-size:12px}._tree_hqvdn_7{flex-direction:column;padding:4px 0;display:flex}._row_hqvdn_13{color:var(--pdf-text-secondary);cursor:pointer;border-radius:4px;align-items:center;gap:4px;margin:0 4px;padding:5px 12px;font-size:12px;line-height:1.4;display:flex}._row_hqvdn_13:hover{background-color:var(--pdf-surface-hover);color:var(--pdf-text-primary)}._chevronBtn_hqvdn_31{cursor:pointer;color:var(--pdf-text-secondary);background:0 0;border:none;flex-shrink:0;align-items:center;padding:0;display:flex}._chevronBtn_hqvdn_31:hover{color:var(--pdf-text-muted)}._title_hqvdn_46{text-overflow:ellipsis;white-space:nowrap;flex:1;overflow:hidden}._wrapper_18kvs_1{align-items:center;gap:4px;display:flex}._searchIconWrapper_18kvs_7{color:var(--pdf-text-secondary);align-items:center;display:flex}._searchInput_18kvs_13{background:var(--pdf-surface);border:1px solid var(--pdf-border);color:var(--pdf-text-primary);border-radius:4px;outline:none;width:180px;padding:4px 8px;font-family:inherit;font-size:13px}._searchInput_18kvs_13:focus{border-color:var(--pdf-accent)}._searchInput_18kvs_13::placeholder{color:var(--pdf-text-placeholder)}._navButton_18kvs_33{color:var(--pdf-text-secondary);cursor:pointer;background:0 0;border:none;border-radius:4px;align-items:center;padding:4px 5px;display:flex}._navButton_18kvs_33:hover:not(:disabled){background:var(--pdf-surface);color:var(--pdf-text-primary)}._navButton_18kvs_33:disabled{color:var(--pdf-border);cursor:default}._counter_18kvs_54{color:var(--pdf-text-muted);text-align:center;min-width:36px;font-size:11px}._list_b0wj1_1{flex-direction:column;gap:6px;padding:8px;display:flex}._emptyState_b0wj1_8{color:var(--pdf-text-muted);text-align:center;padding:24px 14px;font-size:12px}._card_b0wj1_15{border:1px solid var(--pdf-border);background:var(--pdf-panel-bg);text-align:left;cursor:default;box-sizing:border-box;border-radius:8px;width:100%;font-family:inherit;font-size:12px;transition:box-shadow .15s,border-color .15s;position:relative;overflow:hidden}._cardSigned_b0wj1_32{background:#22c55e0a;border-color:#22c55e47}._cardClickable_b0wj1_37{cursor:pointer}._cardClickable_b0wj1_37:hover{box-shadow:0 2px 10px var(--pdf-shadow-page);border-color:var(--pdf-border-light)}._cardSigned_b0wj1_32._cardClickable_b0wj1_37:hover{border-color:#22c55e73}._cardBody_b0wj1_50{padding:10px 12px 10px 16px}._cardHeader_b0wj1_54{justify-content:space-between;align-items:center;gap:8px;margin-bottom:8px;display:flex}._fieldName_b0wj1_62{color:var(--pdf-text-primary);text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0;font-size:12px;font-weight:600;overflow:hidden}._statusChip_b0wj1_73{text-transform:uppercase;letter-spacing:.5px;background:var(--pdf-surface-hover);color:var(--pdf-text-muted);border:1px solid var(--pdf-border);border-radius:20px;flex-shrink:0;align-items:center;gap:4px;padding:2px 7px;font-size:10px;font-weight:700;display:inline-flex}._statusChipSigned_b0wj1_89{color:#15803d;background:#22c55e1f;border-color:#22c55e4d}._fieldList_b0wj1_95{flex-direction:column;gap:4px;display:flex}._fieldRow_b0wj1_101{grid-template-columns:72px 1fr;gap:4px;font-size:11px;line-height:1.5;display:grid}._fieldLabel_b0wj1_109{color:var(--pdf-text-muted);font-weight:500}._fieldValue_b0wj1_114{color:var(--pdf-text-secondary);word-break:break-word}._iconWrapper_b0wj1_119{justify-content:center;align-items:center;display:flex;position:relative}._badge_b0wj1_126{background-color:var(--pdf-badge-bg);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_t3mg8_1{background-color:var(--pdf-panel-bg);padding-bottom:8px}._thumbnailItem_t3mg8_6{cursor:pointer;text-align:center;background-color:#0000;border-left:2px solid #0000;padding:12px 16px;transition:background-color .15s}._thumbnailItem_t3mg8_6:hover{background-color:var(--pdf-surface-hover)}._thumbnailItemActive_t3mg8_19{background-color:var(--pdf-accent-subtle);border-left-color:var(--pdf-accent)}._thumbnailItemActive_t3mg8_19:hover{background-color:var(--pdf-accent-subtle)}._thumbnailImg_t3mg8_28{width:120px;box-shadow:0 1px 4px var(--pdf-shadow-page);border-radius:2px}._thumbnailImgActive_t3mg8_34{box-shadow:0 0 0 2px var(--pdf-accent), 0 2px 8px var(--pdf-shadow-page)}._thumbnailSkeleton_t3mg8_40{background:linear-gradient(90deg, var(--pdf-surface) 25%, var(--pdf-surface-hover) 50%, var(--pdf-surface) 75%);background-size:200% 100%;border-radius:2px;width:120px;height:160px;animation:1.4s infinite _shimmer_t3mg8_1}@keyframes _shimmer_t3mg8_1{0%{background-position:200% 0}to{background-position:-200% 0}}._thumbnailLabel_t3mg8_63{color:var(--pdf-text-muted);margin-top:6px;font-size:11px;font-weight:400}._thumbnailLabelActive_t3mg8_70{color:var(--pdf-accent-hover);font-weight:600}._zoomLabel_m8iv9_1{text-align:center;min-width:42px;color:var(--pdf-text-muted);font-variant-numeric:tabular-nums;font-size:12px}._toolbar_xoqxq_1{flex:1;align-items:center;gap:2px;min-width:0;display:flex}._item_xoqxq_9{flex-shrink:0;align-items:center;display:flex}._overflowWrapper_xoqxq_15{flex-shrink:0;margin-left:auto;position:relative}._overflowBtnActive_xoqxq_21{background:var(--pdf-surface);color:var(--pdf-text-primary)}._dropdown_xoqxq_26{background:var(--pdf-bg);border:1px solid var(--pdf-border);z-index:100;border-radius:6px;flex-direction:column;gap:1px;padding:4px;display:flex;position:absolute;top:calc(100% + 6px);right:0;box-shadow:0 4px 16px #0000002e}._dropdownItem_xoqxq_41{border-radius:4px;justify-content:flex-end;align-items:center;padding:1px 2px;display:flex}._dropdownItem_xoqxq_41>*{flex-shrink:0}._labeledItem_xoqxq_53{align-items:center;gap:8px;width:100%;display:flex}._itemContent_xoqxq_60{flex-shrink:0;align-items:center;display:flex}._itemLabel_xoqxq_66{color:var(--pdf-text-secondary);white-space:nowrap;-webkit-user-select:none;user-select:none;flex:1;font-size:12px}._dropdownItem_xoqxq_41:hover{background:var(--pdf-surface-hover)}._separator_b9iob_1{background:var(--pdf-toolbar-separator);flex-shrink:0;width:1px;height:20px;margin:0 4px}._separatorH_b9iob_9{background:var(--pdf-toolbar-separator);height:1px;margin:2px 4px}
2
2
  /*$vite$:1*/
@@ -3,9 +3,7 @@ interface UseKeyboardShortcutsOptions {
3
3
  pdf: pdfjsLib.PDFDocumentProxy | null;
4
4
  currentPage: number;
5
5
  goToPage: (page: number) => void;
6
- setZoom: React.Dispatch<React.SetStateAction<number>>;
7
6
  setRotation: React.Dispatch<React.SetStateAction<number>>;
8
- setFitMode: React.Dispatch<React.SetStateAction<"width" | "page" | null>>;
9
7
  }
10
- export declare function useKeyboardShortcuts({ pdf, currentPage, goToPage, setZoom, setRotation, setFitMode, }: UseKeyboardShortcutsOptions): void;
8
+ export declare function useKeyboardShortcuts({ pdf, currentPage, goToPage, setRotation, }: UseKeyboardShortcutsOptions): void;
11
9
  export {};
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "pdf-tsx",
3
- "version": "0.13.0",
3
+ "version": "0.15.0",
4
4
  "description": "A fully-featured, composable PDF viewer component for React",
5
5
  "type": "module",
6
6
  "main": "./dist/cjs/index.cjs",