| 12 |
- const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/pdf-BFcWVzk5.js","assets/preload-helper-Czpn1I53.js"])))=>i.map(i=>d[i]);
- import{i as e}from"./rolldown-runtime-aKtaBQYM.js";import{T as t,a as n,k as r,l as i,w as a}from"./client-DWQBE01c.js";import{t as o}from"./preload-helper-Czpn1I53.js";import{t as s}from"./chevron-right-CposVUhM.js";import{t as c}from"./chevron-left-bnx2dB0Q.js";import{t as l}from"./file-text-_KTk4dmw.js";import{t as u}from"./loader-circle-QIogdiwG.js";import{n as d,t as ee}from"./zoom-out-AH2-rXiJ.js";import{t as te}from"./file-DDkFXH-b.js";import{n as ne,r as re,t as f}from"./usePreviewFullscreen-B8ESRfys.js";var p=e(r(),1),m=a(),h=.4,g=4,_=1.25,v=30,y=Math.log(_)/v,ie=150,b=16*1024*1024,x=`/assets/pdfjs/`,S=e=>Math.min(g,Math.max(h,e));function C(e){let t=document.createElement(`canvas`);t.width=256,t.height=256;let n=t.getContext(`2d`);if(!n)return Promise.resolve(null);n.fillStyle=`#ffffff`,n.fillRect(0,0,256,256);let r=256/Math.max(e.width,e.height),i=e.width*r,a=e.height*r;return n.drawImage(e,(256-i)/2,(256-a)/2,i,a),new Promise(e=>t.toBlob(e,`image/png`))}function w(e){return e.deltaMode===1?e.deltaY*16:e.deltaMode===2?e.deltaY*100:e.deltaY}function T({libraryFileId:e,filename:r,fileSize:a,onClose:h,onSnapshot:g}){let{t:T}=t(),E=f(),{panelRef:D,isFullscreen:ae,toggleFullscreen:oe}=E,O=(0,p.useRef)(null),k=(0,p.useRef)(null),A=(0,p.useRef)(null),j=(0,p.useRef)(!1),M=(0,p.useRef)(g);(0,p.useEffect)(()=>{M.current=g});let[N,P]=(0,p.useState)(null),[F,I]=(0,p.useState)(1),[L,R]=(0,p.useState)(1),[z,B]=(0,p.useState)(1),[V,se]=(0,p.useState)(0),[H,U]=(0,p.useState)(null),[ce,W]=(0,p.useState)(!0),G=(0,p.useRef)(L),K=(0,p.useRef)(null),q=(0,p.useRef)(null),J=(0,p.useRef)(new Map),Y=(0,p.useRef)(null),X=(0,p.useCallback)((e,t,n)=>{let r=O.current,i=k.current;if(r&&i){let e=r.getBoundingClientRect(),a=i.getBoundingClientRect(),o=t==null?e.width/2:t-e.left,s=n==null?e.height/2:n-e.top;q.current=a.width>0&&a.height>0?{fx:(o+e.left-a.left)/a.width,fy:(s+e.top-a.top)/a.height,px:o,py:s}:null}R(t=>S(t*e))},[]);(0,p.useEffect)(()=>{let e=e=>{e.ctrlKey||e.metaKey||e.altKey||(e.key===`+`||e.key===`=`?(e.preventDefault(),X(_)):e.key===`-`?(e.preventDefault(),X(1/_)):e.key===`0`&&(e.preventDefault(),q.current=null,R(1)))};return window.addEventListener(`keydown`,e),()=>window.removeEventListener(`keydown`,e)},[X]),(0,p.useEffect)(()=>{let e=O.current;if(!e)return;let t=t=>{if(!k.current||!K.current||!(t.ctrlKey||t.metaKey)&&!(e.scrollHeight<=e.clientHeight&&e.scrollWidth<=e.clientWidth))return;t.preventDefault();let n=Math.max(-30,Math.min(v,w(t)));X(Math.exp(-n*y),t.clientX,t.clientY)};return e.addEventListener(`wheel`,t,{passive:!1}),()=>e.removeEventListener(`wheel`,t)},[X]);let le=e=>{e.pointerType===`touch`&&(J.current.set(e.pointerId,{x:e.clientX,y:e.clientY}),Y.current=null)},ue=e=>{if(e.pointerType!==`touch`)return;let t=J.current,n=t.get(e.pointerId);if(!n)return;if(t.set(e.pointerId,{x:e.clientX,y:e.clientY}),t.size===1){let t=O.current;t&&(t.scrollLeft-=e.clientX-n.x,t.scrollTop-=e.clientY-n.y);return}if(t.size!==2)return;let[r,i]=Array.from(t.values()),a=Math.hypot(r.x-i.x,r.y-i.y),o=Y.current;Y.current=a,o!=null&&o>0&&a>0&&X(a/o,(r.x+i.x)/2,(r.y+i.y)/2)},Z=e=>{e.pointerType===`touch`&&(J.current.delete(e.pointerId),Y.current=null)};(0,p.useLayoutEffect)(()=>{G.current=L;let e=k.current,t=O.current,n=K.current;if(!e||!t||!n)return;e.style.width=`${n.width*L}px`,e.style.height=`${n.height*L}px`;let r=q.current;q.current=null,r&&(t.scrollLeft=e.offsetLeft+r.fx*e.offsetWidth-r.px,t.scrollTop=e.offsetTop+r.fy*e.offsetHeight-r.py)},[L]),(0,p.useEffect)(()=>{if(L===z)return;let e=window.setTimeout(()=>B(L),ie);return()=>window.clearTimeout(e)},[L,z]),(0,p.useEffect)(()=>{let e=D.current;if(!e)return;let t=new ResizeObserver(()=>se(e=>e+1));return t.observe(e),()=>t.disconnect()},[D]),(0,p.useEffect)(()=>{let t=!1,r=null;if(P(null),U(null),I(1),W(!0),a>52428800){U(T(`fileManager.preview.tooLarge`,{size:te(a)})),W(!1);return}let s={},c=i();return c&&(s.Authorization=`Bearer ${c}`),(async()=>{let i=await fetch(n.getLibraryFileDownloadUrl(e),{headers:s});if(!i.ok)throw Error(`HTTP ${i.status}`);let a=await i.arrayBuffer(),c=await o(()=>import(`./pdf-BFcWVzk5.js`),__vite__mapDeps([0,1]));if(c.GlobalWorkerOptions.workerSrc||(c.GlobalWorkerOptions.workerSrc=(await o(async()=>{let{default:e}=await import(`./pdf.worker.min-DO7fOT11.js`);return{default:e}},[])).default),r=c.getDocument({data:new Uint8Array(a),cMapUrl:`${x}cmaps/`,iccUrl:`${x}iccs/`,standardFontDataUrl:`${x}standard_fonts/`,wasmUrl:`${x}wasm/`}),t){r.destroy();return}let l=await r.promise;t||P(l)})().catch(e=>{console.error(`[pdf-preview] load failed`,e),t||(U(T(`fileManager.preview.error`)),W(!1))}),()=>{t=!0,A.current?.cancel(),A.current=null,r?.destroy()}},[e,a,T]),(0,p.useEffect)(()=>{if(!N)return;let e=!1;return W(!0),(async()=>{let t=await N.getPage(F),n=k.current,r=O.current;if(!n||!r||e)return;let i=t.getViewport({scale:1}),a=Math.max((r.clientWidth-32)/i.width,.1),o=Math.min(window.devicePixelRatio||1,2),s=a*z*o,c=i.width*s*(i.height*s),l=c>b?s*Math.sqrt(b/c):s,u=t.getViewport({scale:l});n.width=u.width,n.height=u.height,K.current={width:i.width*a,height:i.height*a},n.style.width=`${K.current.width*G.current}px`,n.style.height=`${K.current.height*G.current}px`,A.current?.cancel();let d=t.render({canvas:n,viewport:u});if(A.current=d,await d.promise,!e&&(W(!1),F===1&&M.current&&!j.current)){j.current=!0;let t=await C(n);t&&!e&&M.current?.(t)}})().catch(t=>{!e&&t?.name!==`RenderingCancelledException`&&(console.error(`[pdf-preview] render failed`,t),U(T(`fileManager.preview.error`)),W(!1))}),()=>{e=!0}},[N,F,z,V,T]);let Q=N?.numPages??0,$=re;return(0,m.jsx)(ne,{title:r,fullscreen:E,onClose:h,icon:(0,m.jsx)(l,{className:`w-5 h-5 text-bambu-green flex-shrink-0`}),actions:(0,m.jsxs)(m.Fragment,{children:[N&&Q>1&&(0,m.jsxs)(`div`,{className:`flex items-center gap-1 mr-2`,children:[(0,m.jsx)(`button`,{onClick:()=>I(e=>Math.max(1,e-1)),disabled:F<=1,className:`${$} disabled:opacity-40 disabled:cursor-not-allowed`,"aria-label":T(`fileManager.preview.prevPage`),children:(0,m.jsx)(c,{className:`w-4 h-4`})}),(0,m.jsx)(`span`,{className:`text-sm text-bambu-gray whitespace-nowrap`,children:T(`fileManager.preview.page`,{current:F,total:Q})}),(0,m.jsx)(`button`,{onClick:()=>I(e=>Math.min(Q,e+1)),disabled:F>=Q,className:`${$} disabled:opacity-40 disabled:cursor-not-allowed`,"aria-label":T(`fileManager.preview.nextPage`),children:(0,m.jsx)(s,{className:`w-4 h-4`})})]}),N&&(0,m.jsxs)(m.Fragment,{children:[(0,m.jsx)(`button`,{onClick:()=>X(1/_),className:$,"aria-label":T(`fileManager.preview.zoomOut`),children:(0,m.jsx)(ee,{className:`w-4 h-4`})}),(0,m.jsx)(`button`,{onClick:()=>X(_),className:$,"aria-label":T(`fileManager.preview.zoomIn`),children:(0,m.jsx)(d,{className:`w-4 h-4`})})]})]}),children:(0,m.jsxs)(`div`,{ref:O,"data-testid":`pdf-preview-page`,className:`relative flex-1 min-h-0 overflow-auto bg-bambu-dark p-4 touch-none ${ae?``:`rounded-b-lg`}`,onDoubleClick:oe,onPointerDown:le,onPointerMove:ue,onPointerUp:Z,onPointerCancel:Z,onPointerLeave:Z,children:[H?(0,m.jsx)(`div`,{className:`h-full flex items-center justify-center`,children:(0,m.jsx)(`p`,{className:`text-bambu-gray text-center`,children:H})}):(0,m.jsx)(`div`,{className:`flex justify-center min-w-fit`,children:(0,m.jsx)(`canvas`,{ref:k,className:`shadow-lg`})}),!H&&ce&&(0,m.jsx)(`div`,{className:`absolute inset-0 flex items-center justify-center pointer-events-none`,children:(0,m.jsx)(u,{className:`w-8 h-8 text-bambu-green animate-spin`})})]})})}export{T as PdfPreviewModal};
|