| 12 |
- const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/pdf-DtHaoVwF.js","assets/index-BoVbGTav.js","assets/chunk-aKtaBQYM.js","assets/QueryClientProvider-Clbyr4Jg.js","assets/client-BdOyoZJz.js","assets/useMutation-qh3Iyscy.js","assets/useQueries-C87lFrjE.js","assets/useQuery-CCy0EwsM.js","assets/createLucideIcon-Yo2YoYjm.js","assets/arrow-down-C4OBNDqJ.js","assets/arrow-up-Dam8cLfE.js","assets/calendar-DiVEdzUw.js","assets/check-D1Pn8T1J.js","assets/info-DcT0QU8O.js","assets/ToastContext-VFOrCCoA.js","assets/loader-circle-CB4leTZa.js","assets/x-Dctff5l9.js","assets/file-DDkFXH-b.js","assets/triangle-alert-gIik0G2C.js","assets/react-dom-xhkz5--P.js","assets/Button-pwVKPiYn.js","assets/Card-OUAj0Ayh.js","assets/filamentSwatchHelpers-D3oXQSGk.js","assets/date-G9KUauqz.js","assets/index-jO4mF6Tu.css"])))=>i.map(i=>d[i]);
- import{i as e}from"./chunk-aKtaBQYM.js";import{C as t,D as n,a as r,l as i,w as a}from"./client-BdOyoZJz.js";import{t as o}from"./loader-circle-CB4leTZa.js";import{n as s,t as c}from"./zoom-out-C85W_TC5.js";import{t as l}from"./file-DDkFXH-b.js";import{Kn as u,Mn as d,jn as ee,xn as te}from"./index-BoVbGTav.js";import{n as ne,r as f,t as p}from"./usePreviewFullscreen-DOsgAeT7.js";var m=e(n(),1),h=t(),g=.4,_=4,v=1.25,y=30,b=Math.log(v)/y,re=150,x=16*1024*1024,S=`/assets/pdfjs/`,C=e=>Math.min(_,Math.max(g,e));function w(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 ie(e){return e.deltaMode===1?e.deltaY*16:e.deltaMode===2?e.deltaY*100:e.deltaY}function T({libraryFileId:e,filename:t,fileSize:n,onClose:g,onSnapshot:_}){let{t:T}=a(),E=p(),{panelRef:D,isFullscreen:ae,toggleFullscreen:oe}=E,O=(0,m.useRef)(null),k=(0,m.useRef)(null),A=(0,m.useRef)(null),j=(0,m.useRef)(!1),M=(0,m.useRef)(_);(0,m.useEffect)(()=>{M.current=_});let[N,P]=(0,m.useState)(null),[F,I]=(0,m.useState)(1),[L,R]=(0,m.useState)(1),[z,B]=(0,m.useState)(1),[V,se]=(0,m.useState)(0),[H,U]=(0,m.useState)(null),[ce,W]=(0,m.useState)(!0),G=(0,m.useRef)(L),K=(0,m.useRef)(null),q=(0,m.useRef)(null),J=(0,m.useRef)(new Map),Y=(0,m.useRef)(null),X=(0,m.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=>C(t*e))},[]);(0,m.useEffect)(()=>{let e=e=>{e.ctrlKey||e.metaKey||e.altKey||(e.key===`+`||e.key===`=`?(e.preventDefault(),X(v)):e.key===`-`?(e.preventDefault(),X(1/v)):e.key===`0`&&(e.preventDefault(),q.current=null,R(1)))};return window.addEventListener(`keydown`,e),()=>window.removeEventListener(`keydown`,e)},[X]),(0,m.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(y,ie(t)));X(Math.exp(-n*b),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,m.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,m.useEffect)(()=>{if(L===z)return;let e=window.setTimeout(()=>B(L),re);return()=>window.clearTimeout(e)},[L,z]),(0,m.useEffect)(()=>{let e=D.current;if(!e)return;let t=new ResizeObserver(()=>se(e=>e+1));return t.observe(e),()=>t.disconnect()},[D]),(0,m.useEffect)(()=>{let t=!1,a=null;if(P(null),U(null),I(1),W(!0),n>52428800){U(T(`fileManager.preview.tooLarge`,{size:l(n)})),W(!1);return}let o={},s=i();return s&&(o.Authorization=`Bearer ${s}`),(async()=>{let n=await fetch(r.getLibraryFileDownloadUrl(e),{headers:o});if(!n.ok)throw Error(`HTTP ${n.status}`);let i=await n.arrayBuffer(),s=await u(()=>import(`./pdf-DtHaoVwF.js`),__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24]));if(s.GlobalWorkerOptions.workerSrc||(s.GlobalWorkerOptions.workerSrc=(await u(async()=>{let{default:e}=await import(`./pdf.worker.min-DpOxPwGP.js`);return{default:e}},[])).default),a=s.getDocument({data:new Uint8Array(i),cMapUrl:`${S}cmaps/`,iccUrl:`${S}iccs/`,standardFontDataUrl:`${S}standard_fonts/`,wasmUrl:`${S}wasm/`}),t){a.destroy();return}let c=await a.promise;t||P(c)})().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,a?.destroy()}},[e,n,T]),(0,m.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>x?s*Math.sqrt(x/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 w(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,$=f;return(0,h.jsx)(ne,{title:t,fullscreen:E,onClose:g,icon:(0,h.jsx)(te,{className:`w-5 h-5 text-bambu-green flex-shrink-0`}),actions:(0,h.jsxs)(h.Fragment,{children:[N&&Q>1&&(0,h.jsxs)(`div`,{className:`flex items-center gap-1 mr-2`,children:[(0,h.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,h.jsx)(ee,{className:`w-4 h-4`})}),(0,h.jsx)(`span`,{className:`text-sm text-bambu-gray whitespace-nowrap`,children:T(`fileManager.preview.page`,{current:F,total:Q})}),(0,h.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,h.jsx)(d,{className:`w-4 h-4`})})]}),N&&(0,h.jsxs)(h.Fragment,{children:[(0,h.jsx)(`button`,{onClick:()=>X(1/v),className:$,"aria-label":T(`fileManager.preview.zoomOut`),children:(0,h.jsx)(c,{className:`w-4 h-4`})}),(0,h.jsx)(`button`,{onClick:()=>X(v),className:$,"aria-label":T(`fileManager.preview.zoomIn`),children:(0,h.jsx)(s,{className:`w-4 h-4`})})]})]}),children:(0,h.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,h.jsx)(`div`,{className:`h-full flex items-center justify-center`,children:(0,h.jsx)(`p`,{className:`text-bambu-gray text-center`,children:H})}):(0,h.jsx)(`div`,{className:`flex justify-center min-w-fit`,children:(0,h.jsx)(`canvas`,{ref:k,className:`shadow-lg`})}),!H&&ce&&(0,h.jsx)(`div`,{className:`absolute inset-0 flex items-center justify-center pointer-events-none`,children:(0,h.jsx)(o,{className:`w-8 h-8 text-bambu-green animate-spin`})})]})})}export{T as PdfPreviewModal};
|