| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297 |
- (function(H){Object.defineProperties(H,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});var $e=Object.defineProperty,W=(e,t)=>()=>(e&&(t=e(e=0)),t),or=(e,t)=>{let r={};for(var i in e)$e(r,i,{get:e[i],enumerable:!0});return t||$e(r,Symbol.toStringTag,{value:"Module"}),r},He=["zip","zipx","7z","rar","tar","gz","gzip","tgz","bz2","bzip2","tbz","tbz2","xz","txz","lzma","zst","tzst","cab","ar","cpio","iso","xar","lha","lzh","jar","war","ear","apk","cbz","cbr"],We=["glb","gltf","obj","stl","ply","fbx","dae","3ds","3mf","amf","usd","usda","usdc","usdz","kmz","step","stp","iges","igs","ifc","3dm","brep","pcd","wrl","vrml","xyz","vtk","vtp"],Ne=["txt","json","js","mjs","cjs","css","java","py","html","htm","jsx","ts","tsx","xml","log","vue","yaml","yml","ini","sh","bash","sql","go","rs","php","c","cpp","cc","h","hpp","cs","diff","patch","bundle","bdl","jsonc","json5","ipynb","toml","proto","hcl","tex","gv","http","react","rb","swift","kt"],Be=["gif","jpg","jpeg","bmp","tiff","tif","png","svg","webp","avif","ico","heic","heif","jxl"],N=[{id:"office-word-openxml",label:"Word OpenXML",category:"office",extensions:["docx","docm","dotx","dotm"],async:!0,capabilities:{download:!0,print:"adapter",exportHtml:"adapter",zoom:"provider",search:!0}},{id:"office-word-binary",label:"Word Binary",category:"office",extensions:["doc","dot"],async:!0,capabilities:{download:!0,print:"adapter",exportHtml:"adapter",zoom:"provider",search:!0}},{id:"office-presentation",label:"PowerPoint",category:"office",extensions:["pptx","pptm","potx","potm","ppsx","ppsm"],async:!0,capabilities:{download:!0,print:!0,exportHtml:!0,zoom:"provider",search:!0}},{id:"open-document",label:"Open Document",category:"office",extensions:["rtf","odt","odp"],async:!0,capabilities:{download:!0,print:!0,exportHtml:!0,zoom:"provider",search:!0}},{id:"spreadsheet-openxml",label:"Spreadsheet",category:"office",extensions:["xlsx","xltx","xlsm","xlsb","xls","xlt","xltm","csv","ods","fods","numbers"],async:!0,capabilities:{download:!0,print:!1,exportHtml:!1,zoom:"provider",search:!0}},{id:"pdf",label:"PDF",category:"document",extensions:["pdf"],async:!0,capabilities:{download:!0,print:"adapter",exportHtml:"adapter",zoom:"provider",search:"provider"}},{id:"ofd",label:"OFD",category:"document",extensions:["ofd"],async:!0,capabilities:{download:!0,print:!0,exportHtml:!0,zoom:"provider",search:!0}},{id:"typst",label:"Typst",category:"document",extensions:["typ","typst"],async:!0,capabilities:{download:!0,print:"adapter",exportHtml:"adapter",zoom:"provider",search:!0}},{id:"archive",label:"Archive",category:"archive",extensions:He,async:!0,capabilities:{download:!0,print:!1,exportHtml:!1,zoom:!1,search:!0}},{id:"email",label:"Email",category:"email",extensions:["eml","msg","mbox"],async:!0,capabilities:{download:!0,print:!1,exportHtml:!0,zoom:!1,search:!0}},{id:"eda",label:"EDA",category:"eda",extensions:["olb","dra","gds","oas","oasis"],async:!0,capabilities:{download:!0,print:!0,exportHtml:!0,zoom:!1,search:!0}},{id:"cad",label:"CAD",category:"cad",extensions:["dxf","dwg","dwf","dwfx","xps"],async:!0,capabilities:{download:!0,print:!0,exportHtml:!0,zoom:"provider",search:!1}},{id:"model",label:"3D Model",category:"model",extensions:We,async:!0,capabilities:{download:!0,print:!1,exportHtml:!1,zoom:"provider",search:!1}},{id:"geo",label:"Geospatial",category:"geo",extensions:["geojson","kml","gpx","shp"],async:!0,capabilities:{download:!0,print:!0,exportHtml:!0,zoom:"provider",search:!0}},{id:"drawing",label:"Drawing",category:"drawing",extensions:["excalidraw","drawio","dio","mermaid","mmd","plantuml","puml"],async:!0,capabilities:{download:!0,print:!0,exportHtml:!0,zoom:"provider",search:!0}},{id:"mindmap",label:"Mind Map",category:"mindmap",extensions:["xmind"],async:!0,capabilities:{download:!0,print:!0,exportHtml:!0,zoom:"provider",search:!0}},{id:"epub",label:"EPUB",category:"ebook",extensions:["epub"],async:!0,capabilities:{download:!0,print:!1,exportHtml:!0,zoom:!1,search:"provider"}},{id:"umd",label:"UMD",category:"ebook",extensions:["umd"],async:!0,capabilities:{download:!0,print:!0,exportHtml:!0,zoom:"provider",search:!0}},{id:"image",label:"Image",category:"image",extensions:Be,async:!0,capabilities:{download:!0,print:!0,exportHtml:!0,zoom:"provider",search:!1}},{id:"markdown",label:"Markdown",category:"markdown",extensions:["md","markdown"],async:!0,capabilities:{download:!0,print:!0,exportHtml:!0,zoom:!1,search:!0}},{id:"code",label:"Code and Text",category:"code",extensions:Ne,async:!0,capabilities:{download:!0,print:!0,exportHtml:!0,zoom:!1,search:!0}},{id:"video",label:"Video",category:"media",extensions:["mp4","webm","m3u8"],async:!0,capabilities:{download:!0,print:!1,exportHtml:!1,zoom:!1,search:!1}},{id:"audio",label:"Audio",category:"media",extensions:["mp3","mpeg","wav","ogg","oga","opus","m4a","aac","flac","weba","midi","mid"],async:!0,capabilities:{download:!0,print:!1,exportHtml:!1,zoom:!1,search:!1}},{id:"data-asset",label:"Data Asset",category:"asset",extensions:["ttf","otf","woff","woff2","psd","ai","eps","sqlite","wasm","parquet","avro","webarchive"],async:!0,capabilities:{download:!0,print:!1,exportHtml:!0,zoom:!1,search:!0}}],ao=Object.freeze(Array.from(new Set(N.flatMap(e=>e.extensions))).sort()),ar,nr,lr,ve,Ue,ae,je,Ze,ne=W((()=>{ar=1,nr=1200,lr=160,ve=(e={})=>{var t,r,i;const o=Number.isFinite(e.scale)&&e.scale?Number(e.scale):1;return{scale:o,label:e.label||`${Math.round(o*100)}%`,canZoomIn:(t=e.canZoomIn)!==null&&t!==void 0?t:!1,canZoomOut:(r=e.canZoomOut)!==null&&r!==void 0?r:!1,canReset:(i=e.canReset)!==null&&i!==void 0?i:!1,minScale:e.minScale,maxScale:e.maxScale}},Ue=e=>e===!1?{enabled:!1}:e===!0||e===void 0?{}:e,ae=(e="")=>({query:e,total:0,currentIndex:-1,current:null,matches:[]}),je=e=>e===!1?{enabled:!1,collectText:!1}:e===!0||e===void 0?{}:e,Ze=(e,t)=>{var r;const i=je(t);if(i.enabled===!1||i.collectText===!1)return[];const o=Math.max(200,i.chunkSize||1200),a=Math.max(0,Math.min(o-1,(r=i.chunkOverlap)!==null&&r!==void 0?r:160)),n=Math.max(0,i.maxTextLength||0),l=[];return e.forEach(s=>{const v=n?s.text.slice(0,n):s.text;if(!v)return;if(v.length<=o){l.push({id:`${s.id}-chunk-1`,text:v,anchor:s,startLine:s.line,endLine:s.line});return}let g=0,h=1;for(;g<v.length;){const u=v.slice(g,g+o);if(l.push({id:`${s.id}-chunk-${h}`,text:u,anchor:s,startLine:s.line,endLine:s.line}),g+o>=v.length)break;g+=o-a,h+=1}}),l}})),qe,Ge,he,ge,Xe,Ye,Je,Ke,Qe,fe,et,tt,rt,sr=W((()=>{qe=["[data-viewer-anchor-id]",".pdfViewer .page",".docx-wrapper section",".docx p",".docx li",".docx table",".markdown-body h1",".markdown-body h2",".markdown-body h3",".markdown-body h4",".markdown-body h5",".markdown-body h6",".markdown-body p",".markdown-body li",".markdown-body pre",".markdown-body table","article h1","article h2","article h3","article h4","article h5","article h6","article p","article li","article pre","article table","pre code","p","li","tr","h1","h2","h3","h4","h5","h6","pre","table"].join(","),Ge=[".viewer-actions",".viewer-watermark",".state-panel",".pdf-toolbar",".pdf-nav-pane",".flyfish-search-match"].join(","),he=e=>typeof CSS!="undefined"&&typeof CSS.escape=="function"?CSS.escape(e):e.replace(/["\\]/g,"\\$&"),ge=(e,t=160)=>{const r=e.replace(/\s+/g," ").trim();return r.length>t?`${r.slice(0,t-1)}…`:r},Xe=e=>{const t=e.getBoundingClientRect();return t.width>0||t.height>0},Ye=e=>!!e.closest(Ge),Je=e=>{const t=e.closest("[data-page-number], [data-page]"),r=(t==null?void 0:t.dataset.pageNumber)||(t==null?void 0:t.dataset.page),i=r?Number.parseInt(r,10):NaN;return Number.isFinite(i)?i:void 0},Ke=e=>e.matches(".pdfViewer .page, [data-page-number], [data-page]")?"page":e.matches("p, li, tr, pre, code")?"line":"block",Qe=(e,t)=>{let r=e.parentElement;for(;r;){if(t.has(r))return!0;r=r.parentElement}return!1},fe=e=>{if(!e)return[];const t=e.getBoundingClientRect(),r=new Set,i=[];return Array.from(e.querySelectorAll(qe)).forEach(o=>{if(Ye(o)||!Xe(o))return;const a=ge(o.textContent||"",1e3);if(!a||Qe(o,r)&&!o.matches("p, li, tr, pre, code"))return;r.add(o);const n=o.dataset.viewerAnchorId||`viewer-anchor-${i.length+1}`;o.dataset.viewerAnchorId=n,o.dataset.viewerLine=String(i.length+1);const l=o.getBoundingClientRect();i.push({id:n,index:i.length,line:i.length+1,type:Ke(o),label:ge(a,96),text:a,page:Je(o),top:l.top-t.top+e.scrollTop,left:l.left-t.left+e.scrollLeft,width:l.width,height:l.height})}),i},et=(e,t,r)=>{if(!e)return null;const i=e.closest("[data-viewer-anchor-id]");if(i!=null&&i.dataset.viewerAnchorId){const l=t.find(s=>s.id===i.dataset.viewerAnchorId);if(l)return l}if(!r)return null;const o=r.getBoundingClientRect(),a=e.getBoundingClientRect().top-o.top+r.scrollTop;let n=null;for(const l of t){if(l.top<=a+1){n=l;continue}break}return n},tt=(e,t)=>{if(!e||!t.length)return null;const r=e.scrollTop+e.clientHeight*.42;let i=t[0];for(const o of t){if(o.top<=r){i=o;continue}break}return i},rt=(e,t)=>{if(!e||t===null||t===void 0)return!1;const r=typeof t=="object"?`[data-viewer-anchor-id="${he(t.id)}"]`:typeof t=="number"?`[data-viewer-line="${t}"]`:`[data-viewer-anchor-id="${he(t)}"]`,i=e.querySelector(r);return i?(i.scrollIntoView({block:"center",inline:"nearest"}),!0):typeof t=="object"?(e.scrollTo({top:Math.max(0,t.top-e.clientHeight*.18),left:Math.max(0,Math.min(t.left,e.scrollWidth-e.clientWidth)),behavior:"smooth"}),!0):!1}})),we,X,it,ot,at,nt,dr=W((()=>{we=new WeakMap,X=new WeakMap,it=e=>{if(!e)return null;const t=we.get(e)||e.__flyfishViewerSearchProvider;if(t)return t;const r=e.querySelector("[data-viewer-search-provider]");return r&&(we.get(r)||r.__flyfishViewerSearchProvider)||null},ot=(e,t)=>{X.set(e,t),e.dataset.viewerZoomProvider=e.dataset.viewerZoomProvider||"custom",e.__flyfishViewerZoomProvider=t},at=e=>{e&&(X.delete(e),delete e.dataset.viewerZoomProvider,delete e.__flyfishViewerZoomProvider)},nt=e=>{if(!e)return null;const t=X.get(e)||e.__flyfishViewerZoomProvider;if(t)return t;const r=e.querySelector("[data-viewer-zoom-provider]");return r&&(X.get(r)||r.__flyfishViewerZoomProvider)||null}})),cr,ur,lt,le,se,st,pr=W((()=>{cr="[data-viewer-scroll-container], .pdf-wrapper",ur="div, section, article, pre",lt=["auto","scroll","overlay"],le=e=>Math.max(0,e.scrollHeight-e.clientHeight),se=(e,t={})=>{var r,i;const o=(r=t.minScrollRange)!==null&&r!==void 0?r:2;if(le(e)<=o)return!1;const a=(i=e.ownerDocument)===null||i===void 0?void 0:i.defaultView,n=a!=null&&a.getComputedStyle?a:typeof window!="undefined"?window:void 0;if(!(n!=null&&n.getComputedStyle))return!1;const l=n.getComputedStyle(e),s=l.overflowY||l.overflow;return(t.overflowValues||lt).includes(s)},st=(e,t={})=>{if(!e)return null;const r=t.preferredSelector||"[data-viewer-scroll-container], .pdf-wrapper",i=t.candidateSelector||"div, section, article, pre",o=e.querySelector(r);return o&&se(o,t)?o:se(e,t)?e:Array.from(e.querySelectorAll(i)).filter(a=>se(a,t)).sort((a,n)=>le(n)-le(a))[0]||o||e}})),Y=W((()=>{sr(),dr(),pr()}));Y(),ne();var no="flyfish-search-match",lo="flyfish-search-match--active",so=1e3,mr=["script","style","textarea","input","select","button",".viewer-actions",".viewer-watermark",".state-panel",".pdf-toolbar",".pdf-nav-pane",".flyfish-search-match",".textLayer",".annotationLayer",".xfaLayer","svg","canvas","iframe","video","audio"].join(","),dt=e=>({...e,anchor:e.anchor?{...e.anchor}:null}),ct=e=>({query:e.query,total:e.total,currentIndex:e.currentIndex,current:e.current?dt(e.current):null,matches:e.matches.map(dt)}),ut=(e,t)=>{const r=ct(t);return e.query=r.query,e.total=r.total,e.currentIndex=r.currentIndex,e.current=r.current,e.matches=r.matches,e},be=(e,t)=>(e.anchors.value=t.anchors,ut(e.state,t.state),e.state),vr=(e,t)=>(t.observe(),be(e,t)),J=async(e,t,r)=>(await r(),be(e,t)),hr=(e,t)=>(t.destroy(),be(e,t)),gr=(e,t)=>({observe(){return vr(e,t)},async refreshAnchors(){return await J(e,t,()=>t.refreshAnchors()),e.anchors.value},async search(r){return J(e,t,()=>t.search(r))},async next(){return J(e,t,()=>t.next())},async previous(){return J(e,t,()=>t.previous())},async clear(){return J(e,t,()=>t.clear())},destroy(){return hr(e,t)}}),pt=e=>e.replace(/[.*+?^${}()|[\]\\]/g,"\\$&"),fr=e=>e.replace(/\s+/g," ").trim(),wr=(e,t)=>{const r=t.wholeWord?`\\b${pt(e)}\\b`:pt(e);return new RegExp(r,t.caseSensitive?"g":"gi")},br=e=>e.map(({element:t,...r})=>r),yr=e=>{const t=e.parentNode;if(t){for(;e.firstChild;)t.insertBefore(e.firstChild,e);t.removeChild(e),t.normalize()}},mt=(e,t)=>{const r=e.parentElement;return!r||r.closest(mr)?!0:!t.contains(r)||!e.data.trim()},ye=(e,t)=>{const r=e.ownerDocument.defaultView,i=(r==null?void 0:r.NodeFilter)||(typeof NodeFilter!="undefined"?NodeFilter:void 0);return i?i[t]:t==="SHOW_TEXT"?4:t==="FILTER_REJECT"?2:1},xr=e=>{const t=[],r=e.ownerDocument.createTreeWalker(e,ye(e,"SHOW_TEXT"),{acceptNode(o){return mt(o,e)?ye(e,"FILTER_REJECT"):ye(e,"FILTER_ACCEPT")}});let i=r.nextNode();for(;i;)mt(i,e)||t.push(i),i=r.nextNode();return t},Er=e=>{var t,r;return((r=(t=e==null?void 0:e.ownerDocument)===null||t===void 0?void 0:t.defaultView)===null||r===void 0?void 0:r.MutationObserver)||(typeof MutationObserver!="undefined"?MutationObserver:void 0)},Sr=e=>{var t;return((t=e==null?void 0:e.ownerDocument)===null||t===void 0?void 0:t.defaultView)||(typeof window!="undefined"?window:void 0)},Fr=e=>{if(Math.max(0,e.scrollHeight-e.clientHeight)<=2)return!1;const t=e.ownerDocument.defaultView||(typeof window!="undefined"?window:void 0);if(!(t!=null&&t.getComputedStyle))return!0;const r=t.getComputedStyle(e),i=r.overflowY||r.overflow;return["auto","scroll","overlay","visible"].includes(i)},Ar=({root:e,options:t,waitForDomUpdate:r,preferredScrollContainer:i})=>{let o=[],a=[];const n=new Set,l=ae();let s=null,v=!1,g=null,h=!1;const u=()=>Ue(t==null?void 0:t()),b=()=>{const c=br(a);l.total=c.length,l.currentIndex=c.length?Math.max(0,Math.min(l.currentIndex,c.length-1)):-1,l.current=l.currentIndex>=0?c[l.currentIndex]:null,l.matches=c},E=c=>ut(l,c),d=()=>{Array.from(n).forEach(yr),n.clear(),a=[],l.total=0,l.currentIndex=-1,l.current=null,l.matches=[]},w=async(c,m=l.query)=>{var f;const y=it(e());return y?(d(),E(await c(y)||((f=y.getState)===null||f===void 0?void 0:f.call(y))||ae(m))):null},S=()=>{s==null||s.disconnect(),s=null},R=c=>{const m=e()||null,f=(i==null?void 0:i())||null;if(f&&(f===c||f.contains(c)))return f;let y=c.parentElement;for(;y;){if(Fr(y))return y;if(y===m)break;y=y.parentElement}return m},ie=c=>{const m=R(c);if(!m){c.scrollIntoView({block:"center",inline:"nearest"});return}const f=m.scrollLeft,y=m.getBoundingClientRect(),x=c.getBoundingClientRect(),_=x.top-y.top+m.scrollTop-m.clientHeight/2+x.height/2,D=Math.max(0,m.scrollHeight-m.clientHeight),P=Math.max(0,Math.min(_,D));typeof m.scrollTo=="function"?m.scrollTo({top:P,left:f,behavior:"auto"}):(m.scrollTop=P,m.scrollLeft=f),m.scrollLeft=f},Z=(c,m=!0)=>{const f=u();if(!a.length)return b(),l;const y=(c%a.length+a.length)%a.length;a.forEach(_=>{_.element.classList.remove(f.activeClassName||"flyfish-search-match--active")});const x=a[y];return x.element.classList.add(f.activeClassName||"flyfish-search-match--active"),l.currentIndex=y,b(),m&&ie(x.element),l},$=(c,m,f,y)=>{var x;const _=e();if(!_)return;const D=u(),P=c.data;let V=0,A;const M=c.ownerDocument.createDocumentFragment();let I=!1;for(m.lastIndex=0;(A=m.exec(P))&&y.length<f;){if(!A[0]){m.lastIndex+=1;continue}A.index>V&&M.appendChild(c.ownerDocument.createTextNode(P.slice(V,A.index)));const O=c.ownerDocument.createElement("mark");O.className=D.className||"flyfish-search-match",O.textContent=A[0],O.dataset.searchMatchId=`viewer-search-match-${y.length+1}`,n.add(O),M.appendChild(O),I=!0;const L=et(c.parentElement,o,_);y.push({id:O.dataset.searchMatchId,index:y.length,text:A[0],anchor:L,line:L==null?void 0:L.line,page:L==null?void 0:L.page,element:O}),V=A.index+A[0].length}I&&(V<P.length&&M.appendChild(c.ownerDocument.createTextNode(P.slice(V))),(x=c.parentNode)===null||x===void 0||x.replaceChild(M,c))},C=()=>{S();const c=e(),m=Er(c);!v||!c||!m||(s=new m(p),s.observe(c,{childList:!0,subtree:!0,characterData:!0}))},F=()=>{if(!v)return;const c=Sr(e());if(c!=null&&c.setTimeout){c.setTimeout(C,0);return}setTimeout(C,0)},oe=async(c,m=0)=>{const f=fr(c),y=u();l.query=f,S(),h=!0;try{d();const x=e();if(!f||y.enabled===!1||!x){const I=await w(O=>{var L;return(L=O.clear)===null||L===void 0?void 0:L.call(O)},f);return I||l}const _=await w(I=>I.search(f,y),f);if(_)return _;await(r==null?void 0:r());const D=e();if(!D)return l;o=fe(D);const P=wr(f,y),V=Math.max(1,y.maxMatches||1e3),A=[],M=xr(D);for(const I of M){if(A.length>=V)break;$(I,P,V,A)}a=A,b(),A.length&&Z(m,!0)}finally{h=!1,F()}return l},p=()=>{var c;const m=u();!l.query||h||m.enabled===!1||(g!==null&&clearTimeout(g),g=setTimeout(()=>{g=null,oe(l.query,Math.max(0,l.currentIndex))},(c=m.debounce)!==null&&c!==void 0?c:180))};return{get anchors(){return o},state:l,getInternalMatches:()=>a,observe(){v=!0,C()},async refreshAnchors(){return await(r==null?void 0:r()),o=fe(e()||null),o},search:c=>oe(c,0),next:async()=>await w(c=>{var m,f;return((m=c.next)===null||m===void 0?void 0:m.call(c))||((f=c.getState)===null||f===void 0?void 0:f.call(c))})||Z(l.currentIndex+1),previous:async()=>await w(c=>{var m,f;return((m=c.previous)===null||m===void 0?void 0:m.call(c))||((f=c.getState)===null||f===void 0?void 0:f.call(c))})||Z(l.currentIndex-1),clear:async()=>{l.query="",S(),h=!0;try{d();const c=await w(m=>{var f;return(f=m.clear)===null||f===void 0?void 0:f.call(m)},"");return c||l}finally{h=!1,F()}},destroy(){v=!1,S(),g!==null&&(clearTimeout(g),g=null),d()}}};ne(),Y();var vt=e=>ct(e),kr=({root:e,anchors:t})=>tt(e||null,t),_r=({root:e,searchTarget:t,searchOptions:r,waitForDomUpdate:i,preferredScrollContainer:o,getAiOptions:a,onSearchChange:n,onLocationChange:l})=>{let s=null;const v=gr(t,Ar({root:e,options:r,waitForDomUpdate:i,preferredScrollContainer:()=>{var g,h;return(h=(g=o==null?void 0:o())!==null&&g!==void 0?g:s==null?void 0:s.getScrollContainer())!==null&&h!==void 0?h:null}}));return s=Cr({root:e,searchController:{getAnchors:()=>t.anchors.value,getSearchState:()=>t.state,observe:v.observe,refreshAnchors:v.refreshAnchors,search:v.search,clear:v.clear,next:v.next,previous:v.previous},getAiOptions:a,onSearchChange:n,onLocationChange:l}),{...s,destroyDocumentFeatures:v.destroy}},Tr=({state:e,onChange:t})=>{const r=vt(e);return t==null||t(r),!0},Rr=({anchor:e,onChange:t})=>(t==null||t(e),!0),Cr=({root:e,searchController:t,getAiOptions:r,onSearchChange:i,onLocationChange:o})=>{const a=()=>e()||null,n=()=>t.getAnchors(),l=()=>vt(t.getSearchState()),s=()=>{const d=l();return Tr({state:d,onChange:i}),d},v=()=>kr({root:a(),anchors:n()}),g=()=>{const d=v();return Rr({anchor:d,onChange:o}),d},h=d=>(d==null?void 0:d.notify)===!1?v():g(),u=async d=>{t.observe();const w=await t.refreshAnchors();return h(d),w},b=async d=>(n().length||await u(d),n()),E=(d,w)=>{const S=rt(a(),d);return h(w),S};return{refreshDocumentIndex:u,async clearDocumentState(){return await t.clear(),l()},getScrollContainer(){return st(a())},async searchDocument(d){return await t.search(d),s()},async clearDocumentSearch(){return await t.clear(),s()},async nextSearchResult(){return await t.next(),g(),s()},async previousSearchResult(){return await t.previous(),g(),s()},getSearchState:l,async collectDocumentAnchors(d){return await u(d),n()},getCurrentDocumentAnchor:v,scrollToLoadedAnchor:E,async scrollToAnchor(d,w){return await b(w),E(d,w)},async scrollToLine(d,w){return await b(w),E(d,w)},getDocumentTextChunks(d){return Ze(n(),d!=null?d:r==null?void 0:r())}}},K,Q,ht,gt,ft,xe=W((()=>{ne(),Y(),K=e=>({scale:e.scale,label:e.label,canZoomIn:e.canZoomIn,canZoomOut:e.canZoomOut,canReset:e.canReset,minScale:e.minScale,maxScale:e.maxScale}),Q=(e,t)=>{const r=ve(t||{});return e.scale=r.scale,e.label=r.label,e.canZoomIn=r.canZoomIn,e.canZoomOut=r.canZoomOut,e.canReset=r.canReset,e.minScale=r.minScale,e.maxScale=r.maxScale,e},ht=()=>{const e=new Set;return{emit(){e.forEach(t=>t())},subscribe(t){return e.add(t),()=>{e.delete(t)}}}},gt=e=>{var t,r;return((r=(t=e==null?void 0:e.ownerDocument)===null||t===void 0?void 0:t.defaultView)===null||r===void 0?void 0:r.MutationObserver)||(typeof MutationObserver!="undefined"?MutationObserver:void 0)},ft=({root:e,enabled:t,beforeZoom:r})=>{let i=null,o=null,a=null;const n=ve(),l=()=>{o==null||o(),o=null,i=null,Q(n,null)},s=()=>{var h,u;if((t==null?void 0:t())===!1)return l(),null;const b=nt(e());return b!==i&&(o==null||o(),i=b,o=((h=b==null?void 0:b.subscribe)===null||h===void 0?void 0:h.call(b,()=>{Q(n,b.getState())}))||null),Q(n,((u=b==null?void 0:b.getState)===null||u===void 0?void 0:u.call(b))||null),b},v=()=>{a==null||a.disconnect(),a=null},g=async(h,u)=>{const b=s();return!b||r&&await r(h)===!1||Q(n,await u(b)||b.getState()),K(n)};return{get provider(){return i},state:n,hasProvider(){return!!s()},refreshProvider:s,observe(){v();const h=e(),u=gt(h);if(!h||!u){s();return}a=new u(()=>{s()}),a.observe(h,{childList:!0,subtree:!0}),s()},clearProvider:l,getState(){return K(n)},zoomIn:()=>g("zoom-in",h=>h.zoomIn()),zoomOut:()=>g("zoom-out",h=>h.zoomOut()),resetZoom:()=>g("zoom-reset",h=>h.resetZoom()),destroy(){v(),l()}}}}));xe();var wt=e=>e.replace(/&/g,"&").replace(/"/g,""").replace(/</g,"<").replace(/>/g,">"),Dr=`
- * { box-sizing: border-box; }
- html, body { margin: 0; min-height: 100%; background: #f2f4f7; color: #172033; font-family: Aptos, "Segoe UI", "PingFang SC", "Microsoft YaHei", sans-serif; print-color-adjust: exact; -webkit-print-color-adjust: exact; }
- body { padding: 24px; }
- .viewer-export-shell { position: relative; min-height: calc(100vh - 48px); overflow: visible; background: #f2f4f7; }
- .viewer-export-content { position: relative; z-index: 1; contain: none; width: 100%; min-height: 100%; overflow: visible; }
- .viewer-export-content .file-render,
- .viewer-export-content .file-viewer,
- .viewer-export-content .viewer-stage,
- .viewer-export-content .content,
- .viewer-export-content .pdf-shell,
- .viewer-export-content .pdf-content,
- .viewer-export-content .pdf-viewport,
- .viewer-export-content .pdf-wrapper,
- .viewer-export-content .docx-fit-viewer,
- .viewer-export-content .docx-wrapper,
- .viewer-export-content .msdoc-stage,
- .viewer-export-content .code-viewer,
- .viewer-export-content .markdown-viewer,
- .viewer-export-content .email-shell,
- .viewer-export-content .archive-shell,
- .viewer-export-content .eda-shell,
- .viewer-export-content .ebook-shell,
- .viewer-export-content .umd-shell,
- .viewer-export-content .drawing-shell,
- .viewer-export-content .audio-shell,
- .viewer-export-content .cad-shell,
- .viewer-export-content .cad-body,
- .viewer-export-content .cad-canvas-wrap,
- .viewer-export-content .dwg-preview-frame {
- position: relative !important;
- inset: auto !important;
- contain: none !important;
- width: 100% !important;
- height: auto !important;
- min-height: 0 !important;
- max-height: none !important;
- overflow: visible !important;
- }
- .viewer-export-content .docx-wrapper {
- display: block !important;
- padding: 0 !important;
- background: transparent !important;
- }
- .viewer-export-content .docx-print-document {
- display: block !important;
- width: fit-content !important;
- max-width: 100% !important;
- height: auto !important;
- overflow: visible !important;
- margin: 0 auto !important;
- }
- .viewer-export-content .docx-page-frame {
- position: relative !important;
- width: var(--viewer-print-page-width, fit-content) !important;
- height: var(--viewer-print-page-height, auto) !important;
- min-height: var(--viewer-print-page-height, 0) !important;
- max-width: 100% !important;
- margin: 0 auto 18px !important;
- overflow: hidden !important;
- break-inside: avoid;
- page-break-inside: avoid;
- break-after: page;
- page-break-after: always;
- }
- .viewer-export-content .msdoc-page {
- position: relative !important;
- width: var(--viewer-print-page-width, 794px) !important;
- min-height: var(--viewer-print-page-height, 1123px) !important;
- max-width: 100% !important;
- height: auto !important;
- margin: 0 auto 18px !important;
- overflow: visible !important;
- break-after: page;
- page-break-after: always;
- }
- .viewer-export-content .docx-page-frame:last-child,
- .viewer-export-content .msdoc-page:last-child {
- break-after: auto;
- page-break-after: auto;
- }
- .viewer-export-content .docx-page-frame > section.docx {
- position: relative !important;
- top: auto !important;
- left: auto !important;
- width: var(--viewer-print-page-width, auto) !important;
- min-height: var(--viewer-print-page-height, auto) !important;
- max-width: none !important;
- margin: 0 auto !important;
- overflow: visible !important;
- transform: none !important;
- box-shadow: none !important;
- break-inside: avoid;
- page-break-inside: avoid;
- }
- .viewer-export-content .msdoc-stage {
- display: block !important;
- padding: 0 !important;
- background: transparent !important;
- }
- .viewer-export-content .msdoc-page > .msdoc-root {
- margin: 0 auto !important;
- box-shadow: none !important;
- overflow: visible !important;
- }
- .viewer-export-content .pdf-toolbar,
- .viewer-export-content .pdf-nav-pane,
- .viewer-export-content .viewer-actions,
- .viewer-export-content .code-toolbar,
- .viewer-export-content .umd-toolbar,
- .viewer-export-content .drawing-toolbar,
- .viewer-export-content .cad-toolbar {
- display: none !important;
- }
- .viewer-export-content .pdf-content,
- .viewer-export-content .pdf-shell--nav-hidden .pdf-content,
- .viewer-export-content .cad-body.without-layers {
- display: block !important;
- grid-template-columns: none !important;
- }
- .viewer-export-content .pdfViewer { padding: 0 !important; }
- .viewer-export-content .pdfViewer .page {
- margin: 0 auto 16px !important;
- border: 0 !important;
- box-shadow: none !important;
- break-after: page;
- page-break-after: always;
- }
- .viewer-export-content .pdfViewer .page:last-child {
- break-after: auto;
- page-break-after: auto;
- }
- .viewer-export-content .pdf-export-document {
- display: grid;
- justify-items: center;
- gap: 18px;
- padding: 4px 0;
- }
- .viewer-export-content .pdf-export-page {
- width: var(--viewer-print-page-width, auto);
- height: var(--viewer-print-page-height, auto);
- max-width: 100%;
- overflow: hidden;
- background: #ffffff;
- box-shadow: 0 12px 32px rgba(15, 23, 42, 0.12);
- break-inside: avoid;
- page-break-inside: avoid;
- break-after: page;
- page-break-after: always;
- }
- .viewer-export-content .pdf-export-page:last-child {
- break-after: auto;
- page-break-after: auto;
- }
- .viewer-export-content .pdf-export-page img {
- display: block;
- width: 100%;
- height: 100%;
- object-fit: contain;
- }
- .viewer-export-content .pptx-wrapper {
- width: 100% !important;
- max-width: 100% !important;
- height: auto !important;
- overflow: visible !important;
- transform: none !important;
- }
- .viewer-export-content .pptx-wrapper .slide {
- margin: 0 auto 18px !important;
- break-inside: avoid;
- page-break-inside: avoid;
- break-after: page;
- page-break-after: always;
- box-shadow: none !important;
- }
- .viewer-export-content .pptx-wrapper .slide:last-child {
- break-after: auto;
- page-break-after: auto;
- }
- .viewer-export-content .ofd-stage {
- padding: 0 !important;
- overflow: visible !important;
- }
- .viewer-export-content .ofd-page,
- .viewer-export-content .drawing-svg,
- .viewer-export-content .cad-canvas-wrap,
- .viewer-export-content .dwg-preview-frame {
- break-inside: avoid;
- page-break-inside: avoid;
- break-after: page;
- page-break-after: always;
- box-shadow: none !important;
- }
- .viewer-export-content .ofd-page:last-child,
- .viewer-export-content .drawing-svg:last-child,
- .viewer-export-content .cad-canvas-wrap:last-child,
- .viewer-export-content .dwg-preview-frame:last-child {
- break-after: auto;
- page-break-after: auto;
- }
- .viewer-export-content .code-area {
- overflow: visible !important;
- white-space: pre-wrap !important;
- word-break: break-word !important;
- }
- .viewer-export-content .umd-body,
- .viewer-export-content .umd-stage-wrap,
- .viewer-export-content .umd-stage {
- display: block !important;
- height: auto !important;
- max-height: none !important;
- overflow: visible !important;
- }
- .viewer-export-content .umd-toc {
- display: none !important;
- }
- img, canvas, svg, video { max-width: 100%; }
- @media print {
- @page { margin: 12mm; }
- html, body { min-height: auto; background: #ffffff; }
- body { padding: 0; }
- .viewer-export-shell,
- .viewer-export-content {
- min-height: 0;
- overflow: visible;
- background: #ffffff;
- }
- .viewer-export-content .pdf-export-document {
- display: block;
- padding: 0;
- }
- .viewer-export-content .pdf-export-page {
- width: var(--viewer-print-page-width, auto) !important;
- height: var(--viewer-print-page-height, auto) !important;
- max-width: none !important;
- margin: 0;
- overflow: hidden;
- box-shadow: none;
- }
- .viewer-export-content .docx-page-frame {
- width: var(--viewer-print-page-width, auto) !important;
- height: var(--viewer-print-page-height, auto) !important;
- min-height: var(--viewer-print-page-height, 0) !important;
- max-width: none !important;
- margin: 0 !important;
- overflow: hidden !important;
- }
- .viewer-export-content .msdoc-page {
- width: var(--viewer-print-page-width, 794px) !important;
- min-height: var(--viewer-print-page-height, 1123px) !important;
- max-width: none !important;
- margin: 0 !important;
- overflow: visible !important;
- }
- .viewer-export-content .docx-page-frame > section.docx,
- .viewer-export-content .msdoc-page > .msdoc-root {
- width: var(--viewer-print-page-width, 100%) !important;
- max-width: none !important;
- border: 0 !important;
- }
- .viewer-export-content .pptx-wrapper .slide,
- .viewer-export-content .ofd-page,
- .viewer-export-content .drawing-svg,
- .viewer-export-content .cad-canvas-wrap,
- .viewer-export-content .dwg-preview-frame {
- box-shadow: none !important;
- }
- }
- `,Pr=()=>Array.from(document.querySelectorAll('style, link[rel="stylesheet"]')).map(e=>e instanceof HTMLStyleElement?`<style>${e.textContent||""}</style>`:e.href?`<link rel="stylesheet" href="${wt(e.href)}" />`:"").filter(Boolean).join(`
- `),bt=({contentHtml:e,includeDocumentStyles:t=!0,printStyle:r="",title:i,watermarkInlineStyle:o=""})=>{const a=o?`<div class="viewer-export-watermark" style="${o}"></div>`:"",n=t?Pr():"",l=r?`<style data-viewer-print-style>${r}</style>`:"";return`<!doctype html>
- <html lang="zh-CN">
- <head>
- <meta charset="utf-8" />
- <meta name="viewport" content="width=device-width,initial-scale=1" />
- <title>${wt(i)}</title>
- ${n}
- <style>${Dr}</style>
- </head>
- <body>
- <main class="viewer-export-shell">
- <div class="viewer-export-content">${e}</div>
- ${a}
- </main>
- ${l}
- </body>
- </html>`},Ee=(e,t)=>{const r=URL.createObjectURL(e),i=document.createElement("a");i.href=r,i.download=t,i.rel="noopener",document.body.appendChild(i),i.click(),i.remove(),window.setTimeout(()=>URL.revokeObjectURL(r),4e3)},zr=(e,t)=>{const r=document.createElement("a");r.href=e,r.download=t,r.rel="noopener",r.target="_blank",document.body.appendChild(r),r.click(),r.remove()},Ir=(e,t)=>{const r=Array.from(e.querySelectorAll("canvas"));Array.from(t.querySelectorAll("canvas")).forEach((i,o)=>{const a=r[o];if(a)try{const n=document.createElement("img");n.src=a.toDataURL("image/png"),n.alt="rendered canvas",n.style.maxWidth="100%",n.style.display="block",n.style.margin="0 auto",i.replaceWith(n)}catch{}})},Lr=e=>new Promise(t=>{const r=e||(typeof window!="undefined"?window:void 0);if(!r||typeof r.requestAnimationFrame!="function"){(r!=null&&r.setTimeout?r.setTimeout.bind(r):globalThis.setTimeout.bind(globalThis))(()=>t(),0);return}const i=r.requestAnimationFrame.bind(r);i(()=>{i(()=>t())})}),Or=async e=>{const t=Array.from(e.querySelectorAll("img"));await Promise.all(t.map(async r=>{if(!r.complete){if("decode"in r)try{await r.decode();return}catch{}await new Promise(i=>{r.addEventListener("load",()=>i(),{once:!0}),r.addEventListener("error",()=>i(),{once:!0})})}}))},Vr=async e=>{const{document:t}=e;t.readyState!=="complete"&&await new Promise(r=>{e.addEventListener("load",()=>r(),{once:!0}),e.setTimeout(()=>r(),1200)}),await Promise.all(Array.from(t.images).map(async r=>{if(!r.complete){if("decode"in r)try{await r.decode();return}catch{}await new Promise(i=>{r.addEventListener("load",()=>i(),{once:!0}),r.addEventListener("error",()=>i(),{once:!0}),e.setTimeout(()=>i(),1500)})}})),await new Promise(r=>{e.requestAnimationFrame(()=>{e.requestAnimationFrame(()=>r())})})},yt=async(e,t)=>t.mode!=="print"||!(e!=null&&e.printStyle)?"":typeof e.printStyle=="function"?await e.printStyle(t):e.printStyle,Mr=async(e,t)=>{var r;await((r=t==null?void 0:t.beforeSnapshot)===null||r===void 0?void 0:r.call(t)),await Lr(),await Or(e)},$r=async({source:e,mode:t="export",title:r,adapter:i=null,watermarkInlineStyle:o=""})=>{const a={mode:t,title:r},n=i==null?void 0:i.toHtml;if(n){const v=await n(a),g=await yt(i,a);return bt({contentHtml:v,includeDocumentStyles:i.includeDocumentStyles!==!1,printStyle:g,title:r,watermarkInlineStyle:o})}await Mr(e,i);const l=e.cloneNode(!0);Ir(e,l);const s=await yt(i,a);return bt({contentHtml:l.innerHTML,printStyle:s,title:r,watermarkInlineStyle:o})},q="preview.bin",k=e=>e.trim().replace(/^\./,"").toLowerCase(),Hr=e=>{try{return decodeURIComponent(e)}catch{return e}},ee=e=>{const t=e.split(/[?#]/)[0]||e,r=t.lastIndexOf(".");return r===-1?"":k(t.slice(r+1))},B=(e,t=q)=>{const r=(e||"").split(/[?#]/)[0].trim();if(!r)return t;const i=Math.max(r.lastIndexOf("/"),r.lastIndexOf("\\"));return Hr(i===-1?r:r.slice(i+1))},Wr=e=>e.file?"file":e.buffer?"buffer":e.url?"url":"empty",xt=e=>e&&"name"in e&&typeof e.name=="string"?e.name:void 0,Nr=({filename:e,file:t,url:r,fallback:i=""})=>{if(e)return B(e,i);const o=xt(t);return o?B(o,i):r?B(r,i):i},Et=e=>{const t=Wr(e),r=B(e.filename||xt(e.file)||e.url,e.type?`preview.${k(e.type)}`:q),i=k(e.type||ee(r)),o=typeof e.size=="number"?e.size:e.file?e.file.size:e.buffer?e.buffer.byteLength:void 0;return{kind:t,filename:r,extension:i,url:e.url,file:e.file,buffer:e.buffer,size:o}},St=(e,t=q)=>{if(typeof File!="undefined"&&e instanceof File)return e;const r=B(t||"preview.bin");if(typeof Blob!="undefined"&&e instanceof Blob)return new File([e],r,{type:e.type});if(e instanceof ArrayBuffer)return new File([e],r,{});throw new Error("Unsupported file source input.")},Ft=async e=>typeof e.arrayBuffer=="function"?e.arrayBuffer():new Promise((t,r)=>{const i=new FileReader;i.onload=o=>{var a;const n=(a=o.target)===null||a===void 0?void 0:a.result;if(n instanceof ArrayBuffer){t(n);return}r(new Error("Failed to read file as ArrayBuffer."))},i.onerror=o=>r(o),i.readAsArrayBuffer(e)}),co="zh-CN",Br={"toolbar.zoomGroup":"缩放控制","toolbar.zoomOut":"缩小预览","toolbar.zoomIn":"放大预览","toolbar.zoomReset":"还原比例","toolbar.download":"下载","toolbar.downloadTitle":"下载原始文件","toolbar.print":"打印","toolbar.printTitle":"打印完整渲染内容","toolbar.exportHtml":"HTML","toolbar.exportHtmlTitle":"导出当前渲染后的 HTML","state.ready.title":"预览完成","state.ready.message":"文件内容已完成渲染。","state.empty.title":"暂无文件","state.empty.message":"请选择文件或提供可访问的文件地址后开始预览。","state.unsupported.install.title":"需要装配预览能力","state.unsupported.install.message":"{extension} 格式已在支持矩阵中,但当前项目尚未装配 {rendererLabel} renderer。","state.unsupported.install.description":"推荐安装 {presetPackage},通过 options.preset / options.renderers 注入对应能力{rendererTip};Vite 项目也可以使用 @file-viewer/vite-plugin 自动发现已安装 preset。","state.unsupported.title":"暂不支持在线预览","state.unsupported.message":"不支持{extension}格式的在线预览,请下载后预览或转换为支持的格式。","state.unsupported.description":"支持 Office、PDF、OFD、Typst、压缩包、邮件、OLB/DRA、CAD、地理数据、3D 模型、Excalidraw、draw.io、EPUB、UMD、Markdown、代码/文本、图片、音视频、字体和数据资产的在线预览","state.error.title":"预览失败","preview.downloading":"正在下载文件资源...","preview.streamingPdf":"正在建立 PDF 流式预览...","preview.reading":"正在解析文件内容...","error.download":"下载失败","error.print":"打印失败","error.exportHtml":"导出 HTML 失败","error.noDownloadSource":"当前没有可下载的源文件","error.noExportContent":"当前没有可导出的预览内容","error.printUnavailable":"当前文件类型不支持完整打印,请下载原文件后在本地应用中打印","error.printWindowBlocked":"浏览器拦截了打印窗口","error.remoteDownload":"文件下载失败","error.localRead":"读取文件异常","error.load":"加载文件异常","error.stream":"加载 PDF 流式预览异常","error.beforeOperation":"操作前置校验失败","operation.download":"下载原始文件","operation.print":"打印完整渲染内容","operation.exportHtml":"导出渲染 HTML","operation.zoomIn":"放大预览","operation.zoomOut":"缩小预览","operation.zoomReset":"还原预览比例","pdf.toolbar.toggleNavigation":"切换导航窗格","pdf.toolbar.previousPage":"上一页","pdf.toolbar.nextPage":"下一页","pdf.toolbar.fitWidth":"适合宽度","pdf.toolbar.zoomOut":"缩小","pdf.toolbar.zoomIn":"放大","pdf.toolbar.rotateLeft":"向左旋转","pdf.toolbar.rotateRight":"向右旋转","pdf.nav.typeLabel":"PDF 导航类型","pdf.nav.pagesTab":"页面","pdf.nav.outlineTab":"目录","pdf.nav.pagesTitle":"页面导航","pdf.nav.outlineTitle":"目录导航","pdf.nav.pageCount":"{count} 页","pdf.nav.itemCount":"{count} 项","pdf.nav.pageLabel":"第 {page} 页","pdf.nav.outlineEmpty":"当前 PDF 没有可用目录","pdf.nav.outlineFallbackTitle":"目录 {index}","pdf.thumbnail.alt":"第 {page} 页缩略图","pdf.state.loading":"正在加载 PDF...","pdf.error.browserWindow":"PDF 预览需要浏览器窗口","pdf.error.missingSource":"PDF 缺少可读取的数据源","pdf.error.loadFailed":"PDF 加载失败","pdf.error.notLoaded":"PDF 尚未加载完成,请稍后再试","pdf.error.unloaded":"PDF 已卸载,无法继续打印","pdf.error.canvasUnavailable":"当前浏览器无法创建 PDF 打印画布","pdf.export.pageTitle":"{title} - 第 {page} 页","spreadsheet.loading.kicker":"Excel 表格","spreadsheet.loading.title":"正在解析 Excel 工作簿","spreadsheet.loading.hint":"正在准备工作表、样式和大数据视口,请稍候。","spreadsheet.loading.streaming":"正在平滑补充可视区数据","spreadsheet.tabs.ariaLabel":"工作表列表","spreadsheet.state.parsingWorkbook":"正在解析 Excel 工作簿,请耐心等待...","spreadsheet.state.preparingSheet":"正在准备工作表内容...","spreadsheet.state.preparingSheetNamed":"正在准备「{name}」...","spreadsheet.state.cachedRows":"已缓存 {cached} / {total} 行","spreadsheet.state.rows":"共 {rows} 行,按视口预取平滑加载","spreadsheet.state.rowsAndColumns":"共 {rows} 行,{cols} 列,按视口预取平滑加载","spreadsheet.error.parseFailed":"Excel 解析失败","spreadsheet.error.workerFailed":"Excel Worker 运行失败","archive.error.nestedUnsupported":"不支持 .{type} 格式的在线预览,请下载后预览或转换为支持的格式","archive.loading.readingDirectory":"正在读取压缩包目录...","archive.loading.readingDirectoryHint":"大文件会在 Worker 中解析,避免阻塞主线程。","archive.search.placeholder":"筛选压缩包内文件","archive.sidebar.hide":"隐藏压缩包文件列表","archive.sidebar.show":"显示压缩包文件列表","archive.preview.title":"压缩包内预览","archive.preview.chooseFile":"请选择一个文件","archive.preview.downloadFile":"下载文件","archive.error.title":"压缩包预览提示","archive.stats.summary":"{count} 个文件 · {size} · {previewable} 个可直接预览","archive.warning.encrypted":"检测到加密内容,输入正确密码后即可预览;密码仅在当前会话中传递给 libarchive Worker。","archive.password.title":"请输入压缩包密码","archive.password.description":"该压缩包包含加密内容,需要密码才能继续读取目录或预览内部文件。","archive.password.placeholder":"压缩包密码","archive.password.invalid":"密码不正确或无法解密,请重新输入。","archive.password.required":"请输入密码后继续。","archive.password.cancel":"取消","archive.password.confirm":"解锁预览","archive.error.passwordRequired":"已取消输入密码,无法预览加密压缩包。","archive.error.encryptedRequiresWorker":"该压缩包包含加密内容,需要发布 libarchive Worker/WASM 后才能在线解密预览。","archive.empty.title":"选择左侧文件即可预览","archive.empty.message":"压缩包只读取目录;文件内容会在点击后按需解压,并在体积允许时缓存到 IndexedDB。","archive.loading.initializingCandidate":"正在初始化 {label}...","archive.loading.initializingCandidateHint":"如果当前服务器没有正确发布 Worker/WASM,会自动切换兼容模式。","archive.error.candidateInitTimeout":"{label} 初始化超时","archive.error.encryptedCheckTimeout":"{label} 加密检测超时","archive.loading.directoryReadyHint":"目录读取完成后,点击内部文件才会按需解压。","archive.error.candidateReadTimeout":"{label} 读取目录超时","archive.loading.workerFallback":"Worker 不可用,正在切换 ZIP/TAR 兼容模式...","archive.loading.workerFallbackHint":"兼容模式无需额外静态 Worker,适合手机 WebView 或本地临时服务器。","archive.notice.workerFallback":"当前环境的 libarchive Worker 未能启动,已自动切换到 ZIP/TAR/GZIP 兼容模式。RAR、7z 等格式仍建议发布 vendor/libarchive/worker-bundle.js 与 libarchive.wasm。","archive.error.tooLarge":"压缩包体积 {size} 超过安全上限 {limit},请下载后在本地解压。","archive.loading.initializingWorker":"正在初始化压缩包解析 Worker...","archive.loading.initializingWorkerHint":"大文件会在 Worker 中解析,避免阻塞主线程。","archive.error.workerInitFailed":"压缩包 Worker 初始化失败","archive.error.entryTooLarge":"压缩包内文件 {name} 体积 {size} 超过预览上限 {limit}。","archive.loading.extracting":"正在按需解压 {name}...","archive.loading.rendering":"正在渲染 {name}...","archive.loading.exporting":"正在导出 {name}...","media.audio.title":"音频预览","media.audio.description":"使用浏览器原生播放器打开,兼容性取决于当前浏览器支持的音频编码。","media.audio.unsupported":"当前浏览器不支持音频播放。","media.video.title":"视频预览","media.video.unsupported":"当前浏览器不支持该视频格式。","media.video.hlsHint":"HLS 会优先使用原始 URL 加载分片;如果传入的是本地单文件清单,请确保分片地址可被浏览器访问。","media.midi.title":"MIDI 文件","media.midi.loading":"正在解析 MIDI 轨道...","media.midi.trackHeader":"轨道","media.midi.instrumentHeader":"乐器","media.midi.channelHeader":"通道","media.midi.noteCountHeader":"音符数","media.midi.durationHeader":"时长","media.midi.durationStat":"时长","media.midi.trackStat":"轨道","media.midi.noteStat":"音符","media.midi.parseFailed":"MIDI 解析失败","email.mbox.subject":"{filename} · 第 1 封","email.mbox.summary":"MBOX 共识别 {count} 封邮件,当前展示第 1 封。","email.error.title":"邮件预览提示","email.meta.from":"发件人","email.meta.to":"收件人","email.meta.cc":"抄送","email.meta.date":"时间","email.tabs.text":"正文","email.tabs.headers":"头信息","email.attachments.title":"附件","email.attachments.empty":"暂无附件","email.attachments.download":"下载附件","email.attachments.opening":"正在打开附件 {name}...","email.attachments.nestedUnavailable":"当前运行环境未提供附件嵌套预览入口,请下载 {name} 后查看。","email.loading.parsing":"正在解析邮件...","data.font.sample":"Flyfish Viewer 轻量预览 AaBbCc 1234567890","data.error.fontFaceUnsupported":"当前浏览器不支持 FontFace API","data.title.font":"字体文件预览","data.title.sqlite":"SQLite 数据库预览","data.title.parquet":"Parquet 列式数据预览","data.title.avro":"Avro 对象容器预览","data.title.wasm":"WebAssembly 模块预览","data.title.eps":"EPS 矢量文件摘要","data.title.ai":"Illustrator 文件摘要","data.title.webarchive":"WebArchive 摘要预览","data.title.summary":"数据资产摘要","data.label.format":"格式","data.label.size":"大小","data.label.rendering":"渲染方式","data.label.objects":"对象数","data.label.sampleTable":"示例表","data.label.rows":"行数","data.label.columns":"列数","data.label.sampleRows":"示例行","data.label.imports":"导入","data.label.exports":"导出","data.label.magic":"Magic","data.label.note":"说明","data.label.container":"容器","data.value.schemaRead":"已读取","data.value.schemaUnread":"未读取","data.note.aiSummary":"非 PDF-compatible AI 按摘要展示","data.note.postscriptSummary":"PostScript 摘要展示","data.note.webarchive":"安全提取可读片段,不执行网页脚本","data.image.alt":"资产预览","psd.title":"PSD 图层预览","psd.action.fit":"适合","psd.action.showAll":"全显","psd.action.hideAll":"全隐","psd.layers.title":"图层","psd.layers.redrawable":"{count} 可重绘","psd.layers.empty":"未发现可展示图层,使用合成图预览。","psd.layers.hidden":"隐藏","drawing.error.viewerLoadFailed":"diagrams.net viewer 加载失败","drawing.error.excalidrawEmpty":"Excalidraw 文件中没有可预览图元","drawing.error.excalidrawTimeout":"Excalidraw 官方导出超时,自动切换 rough.js 兼容渲染","drawing.error.drawioParseFailed":"Draw.io XML 解析失败:{message}","drawing.error.drawioNoModel":"当前 Draw.io 文件没有可直接渲染的 mxGraphModel。","drawing.error.drawioNoElements":"当前 Draw.io 文件没有可预览图元。","drawing.error.viewerInitFailed":"diagrams.net viewer 未正确初始化","drawing.error.drawioTimeout":"diagrams.net 官方 Viewer 加载超时,自动切换本地 SVG 预览","drawing.error.svgParseFailed":"SVG 解析失败","drawing.error.plantumlRenderFailed":"PlantUML SVG 渲染失败:{status}","drawing.title.excalidraw":"Excalidraw 官方 SVG 预览","drawing.title.mermaid":"Mermaid SVG 预览","drawing.title.plantuml":"PlantUML SVG 预览","drawing.title.drawio":"Draw.io 离线 SVG 预览","drawing.toolbar.zoomOut":"缩小","drawing.toolbar.zoomIn":"放大","drawing.toolbar.fit":"适合","drawing.toolbar.fitWidth":"适合宽度","drawing.state.loading":"正在加载绘图预览...","text.code.loadingHighlight":"正在加载高亮...","ebook.toc":"目录","ebook.reading":"阅读中","ebook.itemCount":"{count} 项","epub.title":"EPUB 电子书","epub.previousPage":"上一页","epub.nextPage":"下一页","epub.loading":"正在解析 EPUB...","epub.chapterFallback":"章节 {index}","epub.renderIncomplete":"EPUB 正文渲染未完成,请刷新后重试","umd.title":"UMD 电子书","umd.previousChapter":"上一章","umd.nextChapter":"下一章","umd.loading":"正在解析 UMD...","umd.emptyContent":"未解析到正文内容","umd.chapterFallback":"章节 {index}","umd.galleryFallback":"图集 {index}","umd.warningBodyTooShort":"UMD 正文长度小于声明长度,文件可能不完整","umd.error.unexpectedEnd":"UMD 文件结构不完整,读取时遇到意外结尾","umd.error.invalidFile":"不是有效的 UMD 电子书文件","typst.summaryRenderer":"Typst WASM 渲染器","typst.pageSummary.empty":"0 页","typst.pageSummary.ready":"{count} 页 / {width} x {height} pt","typst.status.compiling":"正在编译","typst.status.failed":"编译失败","typst.status.rendered":"已渲染","typst.loading.title":"正在解析 Typst","typst.loading.hint":"加载编译器并生成页面预览...","typst.error.title":"Typst 渲染失败","typst.error.timeout":"Typst WASM / 字体加载或编译超过 {seconds} 秒","typst.error.timeoutHint":"请检查 Typst compiler WASM、renderer WASM、字体目录的下载速度和缓存策略;弱网或跨境部署可通过 options.typst.renderTimeoutMs 调大浏览器端加载/编译超时。","typst.error.assetHint":"Typst 需要本地 compiler / renderer WASM 和字体目录。请运行 file-viewer-copy-assets,或配置 options.typst.compilerWasmUrl / options.typst.rendererWasmUrl / options.typst.fontAssetsUrl,并确认服务器以 application/wasm 返回 WASM。","typst.error.svgParseFailed":"Typst SVG 解析失败","typst.error.wasmLoadFailed":"Typst WASM 加载失败","xmind.toolbar.zoomOut":"缩小","xmind.toolbar.zoomIn":"放大","xmind.toolbar.fit":"适合","xmind.toolbar.fitTitle":"适配画布","xmind.state.loading":"正在解析 XMind 脑图...","xmind.stats.nodes":"节点","xmind.stats.depth":"层级","xmind.stats.theme":"主题","xmind.stats.template":"模板","xmind.badge.paused":"暂停","xmind.badge.collapsed":"折叠","xmind.badge.floating":"浮动","xmind.badge.summary":"概要","xmind.badge.callout":"标注","xmind.imageResource":"图片资源: {name}","xmind.error.unrecognized":"无法识别 XMind 文件: ZIP 中未找到 content.json 或 content.xml","xmind.error.noCanvas":"XMind 文件中没有可预览的画布","cad.toolbar.fit":"适配","cad.toolbar.zoomOut":"缩小","cad.toolbar.zoomIn":"放大","cad.layers.title":"图层","cad.layers.count":"{count} 项","cad.inspector.title":"结构","cad.inspector.entities":"实体","cad.inspector.blocks":"块","cad.inspector.pages":"页面","cad.inspector.drawn":"绘制","cad.state.loadingViewer":"正在加载 CAD 预览器...","cad.state.parsing":"正在解析 CAD...","cad.error.parseFailed":"CAD 文件解析失败","image.alt":"图片","image.lightbox.alt":"图片预览","image.lightbox.close":"关闭图片预览","gitBundle.error.invalid":"当前文件不是标准 Git bundle。","gitBundle.error.missingPack":"Git bundle header 后未找到 PACK 数据。","gitBundle.notice.delta":"当前 bundle 包含 delta 压缩对象。预览器已在浏览器端解析常规 OFS_DELTA / REF_DELTA;若仍有缺失文件,通常是包体过大、对象过多或依赖外部 prerequisite。","gitBundle.title.history":"历史记录","gitBundle.title.fileTree":"文件树","gitBundle.file.choose":"选择文件查看内容","gitBundle.file.noTree":"当前 bundle 的 tree/blob 可能被 delta 压缩,暂未解析到可展开文件。","gitBundle.file.none":"未解析到文件","gitBundle.history.empty":"当前 bundle 未解析到 commit 对象,仅展示 refs 和 pack 摘要。","gitBundle.toolbar.summary":"{commits} commits · {files} files","gitBundle.meta.bundle":"Bundle","gitBundle.meta.refs":"Refs","gitBundle.meta.commits":"Commits","gitBundle.meta.objects":"Objects","gitBundle.meta.deltas":"Deltas","gitBundle.meta.objectFormat":"Object format","gitBundle.meta.objectTypes":"Object types","geo.error.unrecognized":"无法识别的 GeoJSON 数据","geo.error.xmlParseFailed":"XML 解析失败","geo.error.unsupported":"不支持 .{type} 地理格式","geo.title":"地理数据预览","geo.featureCount":"要素数","geo.bounds":"范围","geo.geometryTypes":"几何类型","geo.aria":"地理数据 SVG 预览","geo.loading":"正在解析地理数据...","model.toolbar.fit":"适配","model.toolbar.rotate":"旋转","model.toolbar.wireframe":"线框","model.toolbar.grid":"网格","model.toolbar.axes":"坐标","model.state.loadingSummary":"正在加载模型","model.state.loading":"正在解析 3D 模型...","model.state.loaded":"模型已加载","model.state.parseFailed":"模型解析失败","model.summary.meshes":"{count} 个网格","model.summary.points":"{count} 个点云","model.error.daeEmpty":"DAE 模型未解析出有效场景","model.error.unsupported":"暂不支持 .{type} 模型格式","model.error.parseFailed":"{type} 模型解析失败","model.notice.signature":"检测到文件签名: {signature}。","loading.generic.label":"文件内容","loading.generic.hint":"正在整理内容结构并生成预览。","loading.word.label":"Word 文档","loading.word.hint":"正在准备分页、文本样式和文档结构。","loading.wordWorker.hint":"正在通过 Worker 准备文档结构、文本样式和分页结果。","loading.sheet.label":"Excel 表格","loading.sheet.hint":"正在准备工作表、样式和可视区数据。","loading.csv.label":"表格数据","loading.csv.hint":"正在准备行列数据和基础样式。","loading.presentation.label":"PPT 演示文稿","loading.presentation.hint":"正在构建幻灯片布局和媒体内容。","loading.pdf.label":"PDF 文档","loading.pdf.hint":"正在载入页面位图、文本层和缩放视图。","loading.ofd.label":"OFD 版式文件","loading.ofd.hint":"正在解析国产版式文档和页面对象。","loading.archive.label":"压缩包","loading.archive.hint":"正在启动 Worker 并读取压缩包目录。","loading.email.label":"邮件文件","loading.email.hint":"正在解析邮件头、正文和附件。","loading.msg.hint":"正在解析 Outlook 邮件和附件。","loading.eda.label":"EDA 文件","loading.eda.hint":"正在读取 EDA 容器结构和可读属性。","loading.cad.label":"CAD 图纸","loading.cad.hint":"正在准备 CAD 图层、几何对象和画布视图。","loading.dwg.hint":"正在通过 Worker 加载 DWG 几何和 LibreDWG WASM。","loading.dwf.hint":"正在加载 DWF native renderer 与 W2D/W3D 图形。","loading.dwfx.hint":"正在加载 DWFx/XPS native renderer 与页面图形。","loading.xps.hint":"正在加载 XPS native renderer 与嵌入字体。","loading.drawio.label":"draw.io 图纸","loading.drawio.hint":"正在解析图元、连线和 SVG 预览。","loading.excalidraw.label":"Excalidraw 图纸","loading.excalidraw.hint":"正在解析手绘图元并生成安全 SVG。","loading.epub.label":"EPUB 电子书","loading.epub.hint":"正在解析目录、章节资源和阅读分页。","loading.umd.label":"UMD 电子书","loading.umd.hint":"正在解析移动电子书结构、目录和压缩正文。","loading.image.label":"图片文件","loading.image.hint":"正在解码像素数据并生成预览。","loading.video.label":"视频文件","loading.video.hint":"正在准备媒体资源和播放组件。","loading.audio.label":"音频文件","loading.audio.hint":"正在准备音频资源和播放控件。"},Ur={"toolbar.zoomGroup":"Zoom controls","toolbar.zoomOut":"Zoom out","toolbar.zoomIn":"Zoom in","toolbar.zoomReset":"Reset zoom","toolbar.download":"Download","toolbar.downloadTitle":"Download the original file","toolbar.print":"Print","toolbar.printTitle":"Print the complete rendered document","toolbar.exportHtml":"HTML","toolbar.exportHtmlTitle":"Export the rendered HTML","state.ready.title":"Preview ready","state.ready.message":"The file has been rendered.","state.empty.title":"No file selected","state.empty.message":"Choose a file or provide an accessible URL to start previewing.","state.unsupported.install.title":"Preview capability required","state.unsupported.install.message":"{extension} is in the supported matrix, but {rendererLabel} renderer is not assembled in this project.","state.unsupported.install.description":"Install {presetPackage} and pass the capability through options.preset / options.renderers{rendererTip}. Vite projects can also use @file-viewer/vite-plugin to auto-discover installed presets.","state.unsupported.title":"Online preview is not supported yet","state.unsupported.message":"{extension} cannot be previewed online. Download it or convert it to a supported format.","state.unsupported.description":"Supports online preview for Office, PDF, OFD, Typst, archives, email, OLB/DRA, CAD, geospatial data, 3D models, Excalidraw, draw.io, EPUB, UMD, Markdown, code/text, images, audio/video, fonts, and structured data assets.","state.error.title":"Preview failed","preview.downloading":"Downloading file resources...","preview.streamingPdf":"Preparing streaming PDF preview...","preview.reading":"Parsing file content...","error.download":"Download failed","error.print":"Print failed","error.exportHtml":"HTML export failed","error.noDownloadSource":"There is no original file source to download.","error.noExportContent":"There is no rendered preview content to export.","error.printUnavailable":"This file type does not support full-document printing. Download the original file and print it locally.","error.printWindowBlocked":"The browser blocked the print window.","error.remoteDownload":"File download failed","error.localRead":"Failed to read local file","error.load":"Failed to load file","error.stream":"Failed to load streaming PDF preview","error.beforeOperation":"Before-operation check failed","operation.download":"Download original file","operation.print":"Print complete rendered content","operation.exportHtml":"Export rendered HTML","operation.zoomIn":"Zoom in","operation.zoomOut":"Zoom out","operation.zoomReset":"Reset preview zoom","pdf.toolbar.toggleNavigation":"Toggle navigation pane","pdf.toolbar.previousPage":"Previous page","pdf.toolbar.nextPage":"Next page","pdf.toolbar.fitWidth":"Fit to width","pdf.toolbar.zoomOut":"Zoom out","pdf.toolbar.zoomIn":"Zoom in","pdf.toolbar.rotateLeft":"Rotate left","pdf.toolbar.rotateRight":"Rotate right","pdf.nav.typeLabel":"PDF navigation type","pdf.nav.pagesTab":"Pages","pdf.nav.outlineTab":"Outline","pdf.nav.pagesTitle":"Page navigation","pdf.nav.outlineTitle":"Outline navigation","pdf.nav.pageCount":"{count} pages","pdf.nav.itemCount":"{count} items","pdf.nav.pageLabel":"Page {page}","pdf.nav.outlineEmpty":"This PDF has no available outline.","pdf.nav.outlineFallbackTitle":"Outline {index}","pdf.thumbnail.alt":"Page {page} thumbnail","pdf.state.loading":"Loading PDF...","pdf.error.browserWindow":"PDF preview requires a browser window","pdf.error.missingSource":"PDF has no readable data source","pdf.error.loadFailed":"Failed to load PDF","pdf.error.notLoaded":"The PDF is not loaded yet. Please try again later.","pdf.error.unloaded":"The PDF has been unloaded and cannot continue printing.","pdf.error.canvasUnavailable":"This browser cannot create a PDF print canvas.","pdf.export.pageTitle":"{title} - Page {page}","spreadsheet.loading.kicker":"Excel workbook","spreadsheet.loading.title":"Parsing Excel workbook","spreadsheet.loading.hint":"Preparing worksheets, styles, and virtualized viewport data.","spreadsheet.loading.streaming":"Loading visible worksheet data","spreadsheet.tabs.ariaLabel":"Worksheet list","spreadsheet.state.parsingWorkbook":"Parsing the Excel workbook. Please wait...","spreadsheet.state.preparingSheet":"Preparing worksheet content...","spreadsheet.state.preparingSheetNamed":"Preparing “{name}”...","spreadsheet.state.cachedRows":"Cached {cached} / {total} rows","spreadsheet.state.rows":"{rows} rows, loading smoothly by viewport","spreadsheet.state.rowsAndColumns":"{rows} rows, {cols} columns, loading smoothly by viewport","spreadsheet.error.parseFailed":"Failed to parse Excel","spreadsheet.error.workerFailed":"Excel Worker failed","archive.error.nestedUnsupported":".{type} cannot be previewed online. Download it or convert it to a supported format.","archive.loading.readingDirectory":"Reading archive directory...","archive.loading.readingDirectoryHint":"Large files are parsed in a Worker to keep the main thread responsive.","archive.search.placeholder":"Filter files inside the archive","archive.sidebar.hide":"Hide archive file list","archive.sidebar.show":"Show archive file list","archive.preview.title":"Archive entry preview","archive.preview.chooseFile":"Choose a file","archive.preview.downloadFile":"Download file","archive.error.title":"Archive preview notice","archive.stats.summary":"{count} files · {size} · {previewable} directly previewable","archive.warning.encrypted":"Encrypted content was detected. Enter the correct password to preview it; the password is passed only to the libarchive Worker for this session.","archive.password.title":"Enter archive password","archive.password.description":"This archive contains encrypted content. A password is required to read the directory or preview entries.","archive.password.placeholder":"Archive password","archive.password.invalid":"The password is incorrect or the entry could not be decrypted. Try again.","archive.password.required":"Enter a password to continue.","archive.password.cancel":"Cancel","archive.password.confirm":"Unlock preview","archive.error.passwordRequired":"Password entry was cancelled, so the encrypted archive cannot be previewed.","archive.error.encryptedRequiresWorker":"This archive contains encrypted content and requires the libarchive Worker/WASM assets for online decryption.","archive.empty.title":"Choose a file from the left to preview","archive.empty.message":"The archive directory is read first. File contents are extracted on demand and cached in IndexedDB when size allows.","archive.loading.initializingCandidate":"Initializing {label}...","archive.loading.initializingCandidateHint":"If the server does not publish Worker/WASM assets correctly, the viewer falls back automatically.","archive.error.candidateInitTimeout":"{label} initialization timed out","archive.error.encryptedCheckTimeout":"{label} encryption check timed out","archive.loading.directoryReadyHint":"After the directory is ready, click an entry to extract it on demand.","archive.error.candidateReadTimeout":"{label} directory read timed out","archive.loading.workerFallback":"Worker unavailable. Switching to ZIP/TAR compatibility mode...","archive.loading.workerFallbackHint":"Compatibility mode needs no static Worker and works well in mobile WebViews or temporary local servers.","archive.notice.workerFallback":"The libarchive Worker could not start in this environment, so ZIP/TAR/GZIP compatibility mode is active. RAR, 7z, and similar formats should still publish vendor/libarchive/worker-bundle.js and libarchive.wasm.","archive.error.tooLarge":"Archive size {size} exceeds the safety limit {limit}. Download and extract it locally.","archive.loading.initializingWorker":"Initializing archive parsing Worker...","archive.loading.initializingWorkerHint":"Large files are parsed in a Worker to keep the main thread responsive.","archive.error.workerInitFailed":"Archive Worker initialization failed","archive.error.entryTooLarge":"Entry {name} is {size}, exceeding the preview limit {limit}.","archive.loading.extracting":"Extracting {name} on demand...","archive.loading.rendering":"Rendering {name}...","archive.loading.exporting":"Exporting {name}...","media.audio.title":"Audio preview","media.audio.description":"Opened with the browser-native audio player. Codec support depends on the current browser.","media.audio.unsupported":"This browser does not support audio playback.","media.video.title":"Video preview","media.video.unsupported":"This browser does not support this video format.","media.video.hlsHint":"HLS prefers the original URL for segment loading. If the input is a local single-file playlist, make sure segment URLs are reachable by the browser.","media.midi.title":"MIDI file","media.midi.loading":"Parsing MIDI tracks...","media.midi.trackHeader":"Track","media.midi.instrumentHeader":"Instrument","media.midi.channelHeader":"Channel","media.midi.noteCountHeader":"Notes","media.midi.durationHeader":"Duration","media.midi.durationStat":"Duration","media.midi.trackStat":"Tracks","media.midi.noteStat":"Notes","media.midi.parseFailed":"Failed to parse MIDI","email.mbox.subject":"{filename} · message 1","email.mbox.summary":"Detected {count} messages in the MBOX archive. Showing message 1.","email.error.title":"Email preview notice","email.meta.from":"From","email.meta.to":"To","email.meta.cc":"Cc","email.meta.date":"Date","email.tabs.text":"Body","email.tabs.headers":"Headers","email.attachments.title":"Attachments","email.attachments.empty":"No attachments","email.attachments.download":"Download attachment","email.attachments.opening":"Opening attachment {name}...","email.attachments.nestedUnavailable":"Nested attachment preview is not available in this environment. Download {name} to inspect it.","email.loading.parsing":"Parsing email...","data.font.sample":"Flyfish Viewer preview AaBbCc 1234567890","data.error.fontFaceUnsupported":"This browser does not support the FontFace API","data.title.font":"Font file preview","data.title.sqlite":"SQLite database preview","data.title.parquet":"Parquet columnar data preview","data.title.avro":"Avro object container preview","data.title.wasm":"WebAssembly module preview","data.title.eps":"EPS vector file summary","data.title.ai":"Illustrator file summary","data.title.webarchive":"WebArchive summary preview","data.title.summary":"Data asset summary","data.label.format":"Format","data.label.size":"Size","data.label.rendering":"Renderer","data.label.objects":"Objects","data.label.sampleTable":"Sample table","data.label.rows":"Rows","data.label.columns":"Columns","data.label.sampleRows":"Sample rows","data.label.imports":"Imports","data.label.exports":"Exports","data.label.magic":"Magic","data.label.note":"Note","data.label.container":"Container","data.value.schemaRead":"Read","data.value.schemaUnread":"Not read","data.note.aiSummary":"Non PDF-compatible AI is shown as a safe summary.","data.note.postscriptSummary":"PostScript summary preview","data.note.webarchive":"Readable fragments are extracted safely. Web scripts are not executed.","data.image.alt":"Asset preview","psd.title":"PSD layer preview","psd.action.fit":"Fit","psd.action.showAll":"Show all","psd.action.hideAll":"Hide all","psd.layers.title":"Layers","psd.layers.redrawable":"{count} redrawable","psd.layers.empty":"No displayable layers were found. Showing the composite image.","psd.layers.hidden":"hidden","drawing.error.viewerLoadFailed":"Failed to load the diagrams.net viewer","drawing.error.excalidrawEmpty":"This Excalidraw file has no previewable elements","drawing.error.excalidrawTimeout":"Official Excalidraw export timed out. Falling back to the rough.js renderer.","drawing.error.drawioParseFailed":"Failed to parse Draw.io XML: {message}","drawing.error.drawioNoModel":"This Draw.io file has no directly renderable mxGraphModel.","drawing.error.drawioNoElements":"This Draw.io file has no previewable elements.","drawing.error.viewerInitFailed":"The diagrams.net viewer was not initialized correctly","drawing.error.drawioTimeout":"Official diagrams.net Viewer timed out. Falling back to the local SVG preview.","drawing.error.svgParseFailed":"Failed to parse SVG","drawing.error.plantumlRenderFailed":"Failed to render PlantUML SVG: {status}","drawing.title.excalidraw":"Official Excalidraw SVG preview","drawing.title.mermaid":"Mermaid SVG preview","drawing.title.plantuml":"PlantUML SVG preview","drawing.title.drawio":"Draw.io offline SVG preview","drawing.toolbar.zoomOut":"Zoom out","drawing.toolbar.zoomIn":"Zoom in","drawing.toolbar.fit":"Fit","drawing.toolbar.fitWidth":"Fit width","drawing.state.loading":"Loading drawing preview...","text.code.loadingHighlight":"Loading syntax highlighting...","ebook.toc":"Table of contents","ebook.reading":"Reading","ebook.itemCount":"{count} items","epub.title":"EPUB ebook","epub.previousPage":"Previous","epub.nextPage":"Next","epub.loading":"Parsing EPUB...","epub.chapterFallback":"Chapter {index}","epub.renderIncomplete":"EPUB content did not finish rendering. Refresh and try again.","umd.title":"UMD ebook","umd.previousChapter":"Previous chapter","umd.nextChapter":"Next chapter","umd.loading":"Parsing UMD...","umd.emptyContent":"No readable body content was parsed.","umd.chapterFallback":"Chapter {index}","umd.galleryFallback":"Gallery {index}","umd.warningBodyTooShort":"The UMD body is shorter than declared and may be incomplete.","umd.error.unexpectedEnd":"The UMD structure is incomplete and ended unexpectedly.","umd.error.invalidFile":"This is not a valid UMD ebook file.","typst.summaryRenderer":"Typst WASM renderer","typst.pageSummary.empty":"0 pages","typst.pageSummary.ready":"{count} pages / {width} x {height} pt","typst.status.compiling":"Compiling","typst.status.failed":"Compilation failed","typst.status.rendered":"Rendered","typst.loading.title":"Parsing Typst","typst.loading.hint":"Loading the compiler and generating page previews...","typst.error.title":"Typst render failed","typst.error.timeout":"Typst WASM / font loading or compilation exceeded {seconds} seconds","typst.error.timeoutHint":"Check the download speed and cache strategy for the Typst compiler WASM, renderer WASM, and font directory. On weak networks or cross-region deployments, increase options.typst.renderTimeoutMs.","typst.error.assetHint":"Typst requires local compiler / renderer WASM files and a font directory. Run file-viewer-copy-assets, or configure options.typst.compilerWasmUrl / options.typst.rendererWasmUrl / options.typst.fontAssetsUrl, and make sure the server returns WASM with application/wasm.","typst.error.svgParseFailed":"Failed to parse Typst SVG","typst.error.wasmLoadFailed":"Failed to load Typst WASM","xmind.toolbar.zoomOut":"Zoom out","xmind.toolbar.zoomIn":"Zoom in","xmind.toolbar.fit":"Fit","xmind.toolbar.fitTitle":"Fit canvas","xmind.state.loading":"Parsing XMind mind map...","xmind.stats.nodes":"Nodes","xmind.stats.depth":"Depth","xmind.stats.theme":"Theme","xmind.stats.template":"Template","xmind.badge.paused":"Paused","xmind.badge.collapsed":"Collapsed","xmind.badge.floating":"Floating","xmind.badge.summary":"Summary","xmind.badge.callout":"Callout","xmind.imageResource":"Image resource: {name}","xmind.error.unrecognized":"Unrecognized XMind file: content.json or content.xml was not found in the ZIP package.","xmind.error.noCanvas":"This XMind file has no previewable canvas.","cad.toolbar.fit":"Fit","cad.toolbar.zoomOut":"Zoom out","cad.toolbar.zoomIn":"Zoom in","cad.layers.title":"Layers","cad.layers.count":"{count} items","cad.inspector.title":"Structure","cad.inspector.entities":"Entities","cad.inspector.blocks":"Blocks","cad.inspector.pages":"Pages","cad.inspector.drawn":"Drawn","cad.state.loadingViewer":"Loading CAD viewer...","cad.state.parsing":"Parsing CAD...","cad.error.parseFailed":"Failed to parse CAD file","image.alt":"Image","image.lightbox.alt":"Image preview","image.lightbox.close":"Close image preview","gitBundle.error.invalid":"This file is not a valid Git bundle.","gitBundle.error.missingPack":"No PACK data was found after the Git bundle header.","gitBundle.notice.delta":"This bundle contains delta-compressed objects. The viewer resolves common OFS_DELTA / REF_DELTA objects in the browser. Missing files usually indicate a very large bundle, too many objects, or an external prerequisite.","gitBundle.title.history":"History","gitBundle.title.fileTree":"File tree","gitBundle.file.choose":"Select a file to inspect","gitBundle.file.noTree":"The tree/blob objects in this bundle may be delta-compressed, and no expandable files were parsed.","gitBundle.file.none":"No files parsed","gitBundle.history.empty":"No commit objects were parsed. Showing refs and pack summary only.","gitBundle.toolbar.summary":"{commits} commits · {files} files","gitBundle.meta.bundle":"Bundle","gitBundle.meta.refs":"Refs","gitBundle.meta.commits":"Commits","gitBundle.meta.objects":"Objects","gitBundle.meta.deltas":"Deltas","gitBundle.meta.objectFormat":"Object format","gitBundle.meta.objectTypes":"Object types","geo.error.unrecognized":"Unrecognized GeoJSON data","geo.error.xmlParseFailed":"Failed to parse XML","geo.error.unsupported":".{type} geospatial format is not supported","geo.title":"Geospatial preview","geo.featureCount":"Features","geo.bounds":"Bounds","geo.geometryTypes":"Geometry types","geo.aria":"Geospatial SVG preview","geo.loading":"Parsing geospatial data...","model.toolbar.fit":"Fit","model.toolbar.rotate":"Rotate","model.toolbar.wireframe":"Wireframe","model.toolbar.grid":"Grid","model.toolbar.axes":"Axes","model.state.loadingSummary":"Loading model","model.state.loading":"Parsing 3D model...","model.state.loaded":"Model loaded","model.state.parseFailed":"Failed to parse model","model.summary.meshes":"{count} meshes","model.summary.points":"{count} point clouds","model.error.daeEmpty":"The DAE model did not contain a valid scene.","model.error.unsupported":".{type} model format is not supported yet","model.error.parseFailed":"Failed to parse {type} model","model.notice.signature":"Detected file signature: {signature}.","loading.generic.label":"File content","loading.generic.hint":"Preparing content structure and preview.","loading.word.label":"Word document","loading.word.hint":"Preparing document structure, text styles, and layout.","loading.wordWorker.hint":"Preparing document structure, text styles, and layout in a Worker.","loading.sheet.label":"Excel workbook","loading.sheet.hint":"Preparing worksheets, styles, and viewport data.","loading.csv.label":"Tabular data","loading.csv.hint":"Preparing rows, columns, and basic styling.","loading.presentation.label":"PowerPoint deck","loading.presentation.hint":"Building slide layout and media content.","loading.pdf.label":"PDF document","loading.pdf.hint":"Loading page bitmaps, text layers, and zoom view.","loading.ofd.label":"OFD layout document","loading.ofd.hint":"Parsing OFD pages and layout objects.","loading.archive.label":"Archive","loading.archive.hint":"Starting Worker and reading archive entries.","loading.email.label":"Email file","loading.email.hint":"Parsing message headers, body, and attachments.","loading.msg.hint":"Parsing Outlook message and attachments.","loading.eda.label":"EDA file","loading.eda.hint":"Reading EDA container structure and properties.","loading.cad.label":"CAD drawing","loading.cad.hint":"Preparing CAD layers, geometry, and canvas view.","loading.dwg.hint":"Loading DWG geometry and LibreDWG WASM in a Worker.","loading.dwf.hint":"Loading native DWF renderer and W2D/W3D graphics.","loading.dwfx.hint":"Loading native DWFx/XPS renderer and page graphics.","loading.xps.hint":"Loading native XPS renderer and embedded fonts.","loading.drawio.label":"draw.io diagram","loading.drawio.hint":"Parsing shapes, connectors, and SVG preview.","loading.excalidraw.label":"Excalidraw scene","loading.excalidraw.hint":"Parsing hand-drawn elements and generating safe SVG.","loading.epub.label":"EPUB ebook","loading.epub.hint":"Parsing table of contents, chapter resources, and reading pages.","loading.umd.label":"UMD ebook","loading.umd.hint":"Parsing mobile ebook metadata, table of contents, and compressed chapters.","loading.image.label":"Image file","loading.image.hint":"Decoding pixels and generating preview.","loading.video.label":"Video file","loading.video.hint":"Preparing media resource and player.","loading.audio.label":"Audio file","loading.audio.hint":"Preparing audio resource and playback controls."},At=Object.freeze({"zh-CN":Br,"en-US":Ur}),jr=()=>{var e;if(typeof navigator!="undefined")return((e=navigator.languages)===null||e===void 0?void 0:e[0])||navigator.language},Zr=e=>{const t=!e||e==="auto"?jr():e;return String(t||"zh-CN").toLowerCase().startsWith("zh")?"zh-CN":"en-US"},qr=e=>{var t;return((t=e==null?void 0:e.i18n)===null||t===void 0?void 0:t.messages)||(e==null?void 0:e.messages)},kt=e=>{var t;return Zr(((t=e==null?void 0:e.i18n)===null||t===void 0?void 0:t.locale)||(e==null?void 0:e.locale))},Gr=(e,t={})=>e.replace(/\{([a-zA-Z0-9_.-]+)\}/g,(r,i)=>{const o=t[i];return o==null?"":String(o)}),z=(e,t,r={})=>{const i=kt(e),o=qr(e);return Gr((typeof o=="function"?o(t,r,i):o==null?void 0:o[t])||At[i][t]||At["zh-CN"][t],r)},_t="file-viewer-preview",Se="preview",Tt=q,Xr=e=>e&&"name"in e&&typeof e.name=="string"?e.name:"",Yr=e=>e&&typeof e.type=="string"?e.type:"",Jr=({buffer:e=null,file:t=null,url:r=null,filename:i=null,mimeType:o=null}={})=>({buffer:e,file:t,url:r,filename:i,mimeType:o||Yr(t)||null}),de=(e,t=Se)=>(e==null?void 0:e.filename)||t,Kr=(e,t=Se)=>{var r;return Jr({buffer:e==null?void 0:e.buffer,file:e==null?void 0:e.file,url:e==null?void 0:e.url,filename:de(e,t),mimeType:(r=e==null?void 0:e.file)===null||r===void 0?void 0:r.type})},Qr=(e,t="preview")=>e.filename||Xr(e.file)||t,U=({filename:e,source:t,fallback:r=_t})=>e||(t?Qr(t,""):"")||r,ei=e=>!!e.buffer||!!e.file||!!e.url,Fe=async(e,t)=>e?await e(t):!0,Rt=async(e,{source:t,title:r,filename:i,adapter:o=null,watermarkInlineStyle:a,i18n:n})=>{if(!t)throw new Error(z(n,"error.noExportContent"));return $r({source:t,mode:e,title:U({filename:r||i,fallback:_t}),adapter:o,watermarkInlineStyle:a})},ti=async({source:e,filename:t,beforeOperation:r,i18n:i,throwOnMissingSource:o=!0})=>{var a;if(!ei(e)){if(o)throw new Error(z(i,"error.noDownloadSource"));return!1}if(!await Fe(r,"download"))return!1;const n=U({filename:t,source:e,fallback:Tt});return e.buffer?(Ee(new Blob([e.buffer],{type:e.mimeType||((a=e.file)===null||a===void 0?void 0:a.type)||"application/octet-stream"}),n),!0):e.file?(Ee(e.file,n),!0):(zr(e.url,n),!0)},ri=async({download:e=!0,filename:t,beforeOperation:r,i18n:i,...o})=>{if(!await Fe(r,"export-html"))return"";const a=await Rt("export",{...o,filename:t,i18n:i});if(e!==!1){const n=U({filename:t||o.title,fallback:Se});Ee(new Blob([a],{type:"text/html;charset=utf-8"}),`${n}.rendered.html`)}return a},ii=async({autoPrint:e=!0,beforeOperation:t,i18n:r,openWindow:i,printAvailable:o=!0,printWindow:a,...n})=>{if(!o)throw new Error(z(r,"error.printUnavailable"));if(!await Fe(t,"print"))return!1;const l=await Rt("print",{...n,i18n:r}),s=a||(i==null?void 0:i())||(typeof window!="undefined"?window.open("","_blank"):null);if(!s)throw new Error(z(r,"error.printWindowBlocked"));return s.document.open(),s.document.write(l),s.document.close(),s.focus(),await Vr(s),e!==!1&&s.print(),!0},Ae="__flyfish_file_viewer_auto_renderer_presets__",ke=()=>{const e=globalThis;return e[Ae]||(e[Ae]={version:0,presets:new Map}),e[Ae]},oi=e=>({...e,extensions:e.extensions.map(k)}),ce=(e=N)=>{const t=new Map,r=new Map,i=o=>{const a=oi(o),n=t.get(a.id);n&&n.extensions.forEach(l=>{var s;((s=r.get(l))===null||s===void 0?void 0:s.id)===n.id&&r.delete(l)}),t.set(a.id,a),a.extensions.forEach(l=>{const s=r.get(l);if(s&&s.id!==a.id)throw new Error(`File extension "${l}" is already registered by renderer "${s.id}".`);r.set(l,a)})};return e.forEach(i),{register:i,unregister(o){const a=t.get(o);return a?(a.extensions.forEach(n=>{var l;((l=r.get(n))===null||l===void 0?void 0:l.id)===o&&r.delete(n)}),t.delete(o),!0):!1},getById(o){return t.get(o)},getByExtension(o){return r.get(k(o))},hasExtension(o){return r.has(k(o))},list(){return Array.from(t.values())},listExtensions(){return Array.from(r.keys()).sort()}}},ai=e=>!!e&&typeof e=="object"&&!Array.isArray(e)&&Array.isArray(e.renderers),_e=e=>e?Array.isArray(e)?e.flatMap(t=>_e(t)):ai(e)?_e(e.renderers):[e]:[],ni=()=>Array.from(ke().presets.values()).map(e=>e.input),li=e=>{var t;const r=ke(),i=r.presets.get(e);if(i)return i.input;const o=e.startsWith("@file-viewer/preset-")?e:`@file-viewer/preset-${e}`;return(t=Array.from(r.presets.values()).find(a=>a.packageName===o||a.id===o))===null||t===void 0?void 0:t.input},si=()=>ke().version,Te=e=>e?typeof e=="string"?!0:Array.isArray(e)?e.some(t=>Te(t)):!1:!1,Re=e=>{if(!e)return[];if(typeof e=="string"){const t=li(e);return t?[t]:[]}return Array.isArray(e)?e.flatMap(t=>Re(t)):[e]},di=async({registry:e,plugins:t,registerHandler:r})=>{var i,o,a;for(const n of t)(i=n.definitions)===null||i===void 0||i.forEach(l=>{e.register(l)}),(o=n.handlers)===null||o===void 0||o.forEach(l=>{r==null||r(l)}),await((a=n.install)===null||a===void 0?void 0:a.call(n,{registry:e,registerHandler:r}));return e},Ct=({registry:e=ce(N),handlers:t,fallbackHandler:r,fallbackKey:i="error"})=>{const o=Array.from(t).reduce((s,v)=>(s.set(v.rendererId,v.handler),s),new Map),a=new Map,n=[];e.list().forEach(s=>{const v=o.get(s.id);if(!v){n.push(s.id);return}s.extensions.forEach(g=>{a.set(k(g),v)})}),r&&i&&a.set(k(i),r);const l=s=>a.get(k(s));return{handlersByRendererId:o,handlersByExtension:a,missingRendererIds:n,get:l,resolve(s){return l(s)||(i?l(i):void 0)},has(s){return a.has(k(s))},listExtensions(){return Array.from(a.keys()).sort()}}},Dt=Object.freeze({download:!1,print:!1,exportHtml:!1,zoom:!1,zoomIn:!1,zoomOut:!1,zoomReset:!1}),G=e=>e===!0||e==="adapter"||e==="provider",ci=(e,t)=>{var r,i,o,a,n,l,s,v;return e?{download:((r=e.capabilities)===null||r===void 0?void 0:r.download)!==!1,print:G((i=e.capabilities)===null||i===void 0?void 0:i.print),exportHtml:G((o=e.capabilities)===null||o===void 0?void 0:o.exportHtml),zoom:G((a=e.capabilities)===null||a===void 0?void 0:a.zoom),zoomIn:G((n=e.capabilities)===null||n===void 0?void 0:n.zoom),zoomOut:G((l=e.capabilities)===null||l===void 0?void 0:l.zoom),zoomReset:G((s=e.capabilities)===null||s===void 0?void 0:s.zoom),...(v=t==null?void 0:t.getAvailability)===null||v===void 0?void 0:v.call(t)}:{...Dt}},ui=e=>({...Dt,download:k(e).length>0}),uo=["pptx","pptm","potx","potm","ppsx","ppsm","ofd","dxf","dwg","dwf","dwfx","xps","excalidraw","drawio","dio","mermaid","mmd","plantuml","puml","umd","md","markdown","olb","dra",...Ne,...Be],po=["xlsx","xltx","xlsm","xlsb","xls","xlt","xltm","csv","ods","fods","numbers",...He,"eml","msg","epub","mp4","mp3","mpeg","wav","ogg","oga","opus","m4a","aac","flac","weba",...We],pi={"load-start":"onLoadStart","load-complete":"onLoadComplete","unload-start":"onUnloadStart","unload-complete":"onUnloadComplete"},mi=({phase:e,version:t,source:r,filename:i,file:o,url:a,size:n,bufferSize:l,startedAt:s,duration:v,timestamp:g,reason:h})=>{var u;const b=B((o==null?void 0:o.name)||i||a||""),E=g!=null?g:Date.now();return{phase:e,type:ee(b),filename:b,source:r,url:a,file:o||void 0,size:(u=n!=null?n:o==null?void 0:o.size)!==null&&u!==void 0?u:l,version:t,timestamp:E,duration:v!=null?v:e==="load-complete"&&typeof s=="number"?E-s:void 0,reason:h}},Pt=({phase:e,source:t,version:r,startedAt:i,timestamp:o,reason:a})=>{const n=o!=null?o:Date.now();return mi({phase:e,filename:t.filename,source:t.kind,url:t.url,file:typeof File!="undefined"&&t.file instanceof File?t.file:void 0,size:t.size,version:r,timestamp:n,duration:e.endsWith("complete")&&typeof i=="number"?n-i:void 0,reason:a})},vi=(e,t,r=Date.now(),i)=>{const{phase:o,...a}=t;return{...a,operation:e,label:z(i,{download:"operation.download",print:"operation.print","export-html":"operation.exportHtml","zoom-in":"operation.zoomIn","zoom-out":"operation.zoomOut","zoom-reset":"operation.zoomReset"}[e]),timestamp:r}},hi=e=>pi[e],gi=async(e,t,r)=>{const i=t==null?void 0:t[hi(e.phase)];if(i)try{await i(e)}catch(o){r==null||r(o,e)}},fi=(e,t)=>{const r=e==null?void 0:e.toolbar;if(!r||typeof r!="object")return[e==null?void 0:e.beforeOperation];const i=t==="download"?r.beforeDownload:t==="print"?r.beforePrint:t==="export-html"?r.beforeExportHtml:void 0;return[e==null?void 0:e.beforeOperation,r.beforeOperation,i]},wi=(e,t)=>(e==null?void 0:e[t])!==!1,bi=(e,t)=>!e||typeof e!="object"?!0:wi(e.permissions,t),yi=async({context:e,options:t,onBefore:r,onCancel:i,onError:o})=>{r==null||r(e);try{if(!bi(t==null?void 0:t.toolbar,e.operation))return i==null||i(e),!1;for(const a of fi(t,e.operation))if(a&&await a(e)===!1)return i==null||i(e),!1}catch(a){return o==null||o(a,e),i==null||i(e),!1}return!0},mo=Object.freeze({downloading:"正在下载文件资源...",streamingPdf:"正在建立 PDF 流式预览...",reading:"正在解析文件内容..."}),zt=Object.freeze({accent:"#5f6f82",soft:"rgba(95, 111, 130, 0.12)",badge:"DOC",label:"文件内容",hint:"正在整理内容结构并生成预览。"}),xi=e=>{const t=k(e);return t?`.${t}`:"当前"},Ei={"office-word-openxml":"@file-viewer/renderer-word","office-word-binary":"@file-viewer/renderer-word","office-presentation":"@file-viewer/renderer-presentation","open-document":"@file-viewer/renderer-word","spreadsheet-openxml":"@file-viewer/renderer-spreadsheet",pdf:"@file-viewer/renderer-pdf",ofd:"@file-viewer/renderer-ofd",typst:"@file-viewer/renderer-typst",archive:"@file-viewer/renderer-archive",email:"@file-viewer/renderer-email",eda:"@file-viewer/renderer-eda",cad:"@file-viewer/renderer-cad",model:"@file-viewer/renderer-3d",geo:"@file-viewer/renderer-geo",drawing:"@file-viewer/renderer-drawing",mindmap:"@file-viewer/renderer-mindmap",epub:"@file-viewer/renderer-epub",umd:"@file-viewer/renderer-epub",image:"@file-viewer/renderer-image",markdown:"@file-viewer/renderer-text",code:"@file-viewer/renderer-text",video:"@file-viewer/renderer-media",audio:"@file-viewer/renderer-media","data-asset":"@file-viewer/renderer-data"},Si=new Set(["office-word-openxml","office-word-binary","office-presentation","open-document","spreadsheet-openxml","pdf","ofd"]),Fi=new Set(["image","markdown","code","video","audio"]),Ai=new Set(["typst","archive","eda","cad","model","geo","drawing","mindmap","data-asset"]),ki=e=>Si.has(e.id)?{packageName:"@file-viewer/preset-office",vitePreset:"office",label:"Office preset"}:Ai.has(e.id)?{packageName:"@file-viewer/preset-engineering",vitePreset:"engineering",label:"Engineering preset"}:Fi.has(e.id)?{packageName:"@file-viewer/preset-lite",vitePreset:"lite",label:"Lite preset"}:{packageName:"@file-viewer/preset-all",vitePreset:"all",label:"Full preset"},_i=(e="")=>{const t=k(e),r=N.find(o=>o.extensions.map(k).includes(t));if(!r)return null;const i=ki(r);return{extension:t,rendererId:r.id,rendererLabel:r.label,rendererCategory:r.category,rendererPackage:Ei[r.id],presetPackage:i.packageName,vitePreset:i.vitePreset,presetLabel:i.label}},It=({state:e,extension:t="",title:r,message:i,description:o,theme:a=zt,recoverable:n})=>({state:e,extension:k(t),title:r,message:i,description:o,theme:a,recoverable:n}),Lt=(e="",t=zt,r)=>{const i=xi(e),o=_i(e);if(o){const a=kt(r),n=o.rendererPackage?a==="zh-CN"?`;如果需要极致裁剪,也可以只安装 ${o.rendererPackage}`:`; for a strict custom cut, install only ${o.rendererPackage}`:"";return It({state:"unsupported",extension:e,title:z(r,"state.unsupported.install.title"),message:z(r,"state.unsupported.install.message",{extension:i,rendererLabel:o.rendererLabel}),description:z(r,"state.unsupported.install.description",{extension:i,rendererLabel:o.rendererLabel,presetPackage:o.presetPackage,vitePreset:o.vitePreset,rendererTip:n}),theme:t,recoverable:!0})}return It({state:"unsupported",extension:e,title:z(r,"state.unsupported.title"),message:z(r,"state.unsupported.message",{extension:i}),description:z(r,"state.unsupported.description"),theme:t,recoverable:!0})},Ti=()=>{let e=0,t=null;return{get version(){return e},createVersion(){return e+=1,t==null||t.abort(),t=null,e},isCurrent(r){return r===e},createAbortController(){return t=typeof AbortController=="function"?new AbortController:null,t},clearAbortController(r){t===r&&(t=null)},abort(){t==null||t.abort(),t=null}}},Ri=(e=Ti())=>({requestController:e,getCurrentVersion:()=>e.version,isCurrentRequest:t=>e.isCurrent(t)}),Ci=()=>({session:null,exportAdapter:null}),te=(e,t)=>{var r,i;return"session"in t&&(e.session=(r=t.session)!==null&&r!==void 0?r:null),"exportAdapter"in t&&(e.exportAdapter=(i=t.exportAdapter)!==null&&i!==void 0?i:null),e},Di=(e,t)=>({rendered:e,destroy:()=>t?t():Ot(e)}),Ot=e=>{if(!e||typeof e!="object")return;const t=e;if(typeof t.unmount=="function")return t.unmount();if(typeof t.$destroy=="function")return t.$destroy();if(typeof t.destroy=="function")return t.destroy()},Pi=({source:e,options:t,registerExportAdapter:r,renderContext:i})=>({filename:e.filename,url:e.url,streamUrl:e.url,options:t,registerExportAdapter:r,...i}),Vt=({handler:e,getTarget:t=o=>o.surface.container,createContext:r=Pi,destroy:i})=>async o=>{const{source:a}=o;if(!a.buffer)throw new Error("FileRenderHandler renderer requires an ArrayBuffer source.");const n=t(o),l=await e(a.buffer,n,a.extension,r(o));return Di(l,()=>i?i(l,o):Ot(l))},zi=({definitions:e=N,handlers:t,getTarget:r,createContext:i,destroy:o})=>{const a=ce(e),n=Ct({registry:a,handlers:t});return{registry:ce(a.list().map(l=>{const s=n.handlersByRendererId.get(l.id);return s?{...l,load:Vt({handler:s,getTarget:r,createContext:i,destroy:o})}:l})),dispatcher:n,missingRendererIds:n.missingRendererIds}},Ii=or({default:()=>Li});async function Li(e,t,r){const i=await Bt(e,r);let o=1,a=0;const n=ht(),l=document.createElement("div");l.className="image-viewer",l.dataset.viewerZoomProvider="image";const s=document.createElement("div");s.className="image-stage";const v=document.createElement("img");v.alt="图片",v.src=i,s.append(v),l.append(s);const g=jt(i),h=()=>g.open();v.addEventListener("click",h),document.body.append(g.element);const u=()=>{a=l.clientHeight||0,Ce(v,a,o),n.emit()},b=new ResizeObserver(u);b.observe(l);const E=()=>({scale:o,label:`${Math.round(o*100)}%`,canZoomIn:o<5,canZoomOut:o>.1,canReset:o!==1,minScale:.1,maxScale:5}),d=w=>(o=Ut(w),Ce(v,a,o),n.emit(),E());return ot(l,{zoomIn:()=>d(o+.15),zoomOut:()=>d(o-.15),resetZoom:()=>d(1),setZoom:d,getState:E,subscribe:n.subscribe}),t.replaceChildren(Ht(),l),u(),{$el:t,unmount(){at(l),b.disconnect(),v.removeEventListener("click",h),g.destroy(),t.replaceChildren()}}}var Mt,$t,Ht,Wt,Nt,Bt,Ut,Ce,jt,Oi=W((()=>{Y(),Mt={avif:"image/avif",bmp:"image/bmp",gif:"image/gif",heic:"image/heic",heif:"image/heif",ico:"image/x-icon",jxl:"image/jxl",jpg:"image/jpeg",jpeg:"image/jpeg",png:"image/png",svg:"image/svg+xml",tif:"image/tiff",tiff:"image/tiff",webp:"image/webp"},$t=`
- .image-viewer{position:relative;width:100%;height:100%;overflow:auto;background:#eef1f4;box-sizing:border-box}
- .image-stage{min-width:100%;min-height:100%;display:flex;align-items:center;justify-content:center;padding:24px;box-sizing:border-box}
- .image-stage img{display:block;width:auto;max-width:none;margin:0 auto;border:0;box-shadow:0 18px 48px rgba(15,23,42,.16);background:#fff;cursor:zoom-in}
- .image-lightbox{position:fixed;inset:0;z-index:2147483000;display:flex;align-items:center;justify-content:center;padding:40px;background:rgba(15,23,42,.88);box-sizing:border-box}
- .image-lightbox[hidden]{display:none}
- .image-lightbox img{display:block;max-width:100%;max-height:100%;object-fit:contain;background:#fff;box-shadow:0 30px 80px rgba(0,0,0,.4);cursor:zoom-out}
- .image-lightbox button{position:absolute;top:20px;right:20px;width:40px;height:40px;border:0;border-radius:999px;background:rgba(255,255,255,.92);color:#172033;font-size:24px;line-height:40px;cursor:pointer;box-shadow:0 12px 28px rgba(0,0,0,.18)}
- .file-viewer[data-viewer-theme='dark'] .image-viewer{background:#101820}
- @media (prefers-color-scheme:dark){.file-viewer[data-viewer-theme='system'] .image-viewer{background:#101820}}
- @media (max-width:767px){.image-stage{padding:12px}.image-lightbox{padding:16px}.image-lightbox button{top:12px;right:12px}}
- `,Ht=()=>{const e=document.createElement("style");return e.textContent=$t,e},Wt=e=>Mt[(e||"").trim().toLowerCase()]||"image/*",Nt=async e=>await new Promise((t,r)=>{const i=new FileReader;i.onload=o=>{var a;const n=(a=o.target)===null||a===void 0?void 0:a.result;if(typeof n=="string"){t(n);return}r(new Error("Unable to read image data URL."))},i.onerror=()=>r(i.error||new Error("Unable to read image data URL.")),i.readAsDataURL(e)}),Bt=async(e,t)=>{const r=(t||"").trim().toLowerCase();if(r==="heic"||r==="heif")throw new Error("HEIC/HEIF image conversion has moved out of @file-viewer/core. Install and pass @file-viewer/renderer-image, or use @file-viewer/preset-all.");return Nt(new Blob([e],{type:Wt(r)}))},Ut=e=>Math.min(5,Math.max(.1,Number(e.toFixed(2)))),Ce=(e,t,r)=>{if(t>0){e.style.height=`${Math.max(1,Math.round(t*r))}px`;return}e.style.height=`${r*100}%`},jt=e=>{const t=document.createElement("div");t.className="image-lightbox",t.hidden=!0,t.setAttribute("role","dialog"),t.setAttribute("aria-modal","true");const r=document.createElement("img");r.alt="Preview image",r.src=e;const i=document.createElement("button");i.type="button",i.setAttribute("aria-label","Close image preview"),i.textContent="x";const o=()=>{t.hidden=!0};return i.addEventListener("click",o),r.addEventListener("click",o),t.addEventListener("click",a=>{a.target===t&&o()}),t.append(r,i),{element:t,open(){t.hidden=!1},destroy(){i.removeEventListener("click",o),r.removeEventListener("click",o),t.remove()}}}})),Vi=e=>({$el:e,unmount(){}}),De=[{rendererId:"image",handler:async(e,t,r)=>{const{default:i}=await Promise.resolve().then(()=>(Oi(),Ii));return i(e,t,r)}}],Zt=["image"],Mi=De.filter(e=>Zt.includes(e.rendererId)),$i=N.filter(e=>Zt.includes(e.id)),Hi=e=>e==="none"?[]:e==="lite"?$i:N,Wi=e=>e==="none"?[]:e==="lite"?Mi:De,Ni=async(e,t,r)=>{const i=Lt(r),o=document.createElement("div");o.style.textAlign="center",o.style.marginTop="80px";const a=document.createElement("div");if(a.textContent=i.message,o.appendChild(a),i.description){const n=document.createElement("div");n.textContent=i.description,o.appendChild(n)}return t.replaceChildren(o),Vi(t)},qt=(e={})=>{const t=e.builtinRenderers||"all",r=zi({definitions:Hi(t),handlers:Wi(t)});return{...r,dispatcher:Ct({registry:r.registry,handlers:De,fallbackHandler:Ni})}},Pe=qt(),Gt=Pe.registry,vo=Pe.dispatcher,ho=Pe.missingRendererIds,ue=e=>e.replace(/&/g,"&").replace(/"/g,""").replace(/</g,"<").replace(/>/g,">"),Bi=e=>`url("data:image/svg+xml;charset=utf-8,${encodeURIComponent(e)}")`,j=(e,t,r,i)=>Math.min(i,Math.max(r,typeof e=="number"&&Number.isFinite(e)?e:t)),Ui=e=>e?e===!0?{enabled:!0,text:"Flyfish Viewer"}:e.enabled===!1||!e.text&&!e.image?null:{enabled:!0,...e}:null,ji=e=>{const t=j(e.gapX,260,96,800),r=j(e.gapY,180,80,800),i=j(e.width,e.image?160:220,32,t),o=j(e.height,(e.image,72),24,r),a=j(e.rotate,-24,-75,75),n=j(e.opacity,.18,.02,.8),l=(t-i)/2,s=(r-o)/2,v=t/2,g=r/2;if(e.image)return`<svg xmlns="http://www.w3.org/2000/svg" width="${t}" height="${r}" viewBox="0 0 ${t} ${r}"><g opacity="${n}" transform="rotate(${a} ${v} ${g})"><image href="${ue(e.image)}" x="${l}" y="${s}" width="${i}" height="${o}" preserveAspectRatio="xMidYMid meet"/></g></svg>`;const h=ue(e.text||"Flyfish Viewer"),u=j(e.fontSize,20,10,72);return`<svg xmlns="http://www.w3.org/2000/svg" width="${t}" height="${r}" viewBox="0 0 ${t} ${r}"><g opacity="${n}" transform="rotate(${a} ${v} ${g})"><text x="${v}" y="${g}" text-anchor="middle" dominant-baseline="middle" fill="${ue(e.color||"#355070")}" font-family="${ue(e.fontFamily||"Aptos, 'Segoe UI', sans-serif")}" font-size="${u}" font-weight="700">${h}</text></g></svg>`},Zi=e=>{const t=Ui(e);return t?Bi(ji(t)):""},qi=e=>{const t=Zi(e);return t?`position:absolute;inset:0;pointer-events:none;background-image:${t};background-repeat:repeat;z-index:20;`:""};ne(),xe();var re=async(e,t,r,i,o,a,n)=>{const l=Pt({phase:r,source:i,version:o,timestamp:Date.now(),startedAt:a,reason:n});await gi(l,e.hooks,s=>{throw s}),t==null||t({type:r,payload:l})},Xt=(e,t)=>t.rendererMode==="replace"?ce([]):e.registry?e.registry:qt({builtinRenderers:t.builtinRenderers}).registry,Yt=e=>{const t=e.autoRenderers;return typeof t=="boolean"?t:(t==null?void 0:t.enabled)!==void 0?t.enabled:(e.rendererMode||"extend")!=="replace"},Gi=(e,t,r)=>{const i=e.ownerDocument,o=Lt(t,void 0,r),a=i.createElement("div");a.className="file-viewer-missing-renderer",a.style.cssText=["display:flex","min-height:260px","height:100%","align-items:center","justify-content:center","padding:32px","box-sizing:border-box","text-align:center","color:#64748b",'font:14px/1.6 system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif'].join(";");const n=i.createElement("div"),l=i.createElement("strong");l.textContent=o.message,l.style.cssText="display:block;margin-bottom:8px;color:#172033;font-size:16px;";const s=i.createElement("p");s.textContent=o.description||o.title,s.style.cssText="max-width:520px;margin:0;",n.append(l,s),a.append(n),e.replaceChildren(a)},Xi=(e,t={})=>{let r=t.options||{},i=Xt(t,r),o,a,n,l=r.rendererMode||"extend",s=r.builtinRenderers||"all",v=Yt(r),g=-1,h=null;const u=Ci(),b=Ri(),E={anchors:{value:[]},state:ae()},d=async()=>{const p=r.rendererMode||"extend",c=r.renderers,m=r.preset,f=r.presets,y=r.builtinRenderers||"all",x=Yt(r),_=x||Te(m)||Te(f)?si():0;if(p===l&&c===o&&m===a&&f===n&&y===s&&x===v&&_===g)return;i=Xt(t,r),l=p,o=c,a=m,n=f,s=y,v=x,g=_;const D=[];x&&D.push(...ni()),D.push(...Re(m),...Re(f)),c&&D.push(c);const P=_e(D);if(!P.length)return;await di({registry:i,plugins:P,registerHandler:A=>{const M=i.getById(A.rendererId);M&&i.register({...M,load:Vt({handler:A.handler,getTarget:I=>I.surface.container})})}})},w=()=>Pt({phase:"load-complete",source:h||Et({}),version:b.getCurrentVersion(),timestamp:Date.now()}),S=async p=>yi({context:vi(p,w()),options:r,onBefore:c=>{var m;(m=t.onEvent)===null||m===void 0||m.call(t,{type:"operation-before",payload:c})},onCancel:c=>{var m;(m=t.onEvent)===null||m===void 0||m.call(t,{type:"operation-cancel",payload:c})},onError(c){throw c}}),R=p=>typeof p=="string"?p:qi(r.watermark),ie=p=>{const c=p||(h==null?void 0:h.extension)||"",m=i.getByExtension(c);return m?ci(m,u.session):ui(c)},Z=()=>{var p;(p=t.onEvent)===null||p===void 0||p.call(t,{type:"operation-availability-change",payload:ie()})},$=(p=C.getState())=>{var c;(c=t.onEvent)===null||c===void 0||c.call(t,{type:"zoom-change",payload:p})},C=ft({root:()=>e,beforeZoom:S}),F=_r({root:()=>e,searchTarget:E,searchOptions:()=>r.search,getAiOptions:()=>r.ai,onSearchChange:p=>{var c;(c=t.onEvent)===null||c===void 0||c.call(t,{type:"search-change",payload:p})},onLocationChange:p=>{var c;(c=t.onEvent)===null||c===void 0||c.call(t,{type:"location-change",payload:p})}});C.observe();const oe=async(p="replace")=>{var c,m;if(!h)return;const f=h,y=Date.now(),x=b.getCurrentVersion();await re(r,t.onEvent,"unload-start",f,x,y,p),await((m=(c=u.session)===null||c===void 0?void 0:c.destroy)===null||m===void 0?void 0:m.call(c)),h=null,te(u,{session:null,exportAdapter:null}),await F.clearDocumentState(),C.clearProvider(),Z(),$(),await re(r,t.onEvent,"unload-complete",f,x,y,p)};return{container:e,async load(p){await oe("replace"),await d();const c=Et(p);h=c;const m=b.requestController.createVersion(),f=i.getByExtension(c.extension),y=Date.now();if(await re(r,t.onEvent,"load-start",c,m,y),!(f!=null&&f.load))return Gi(e,c.extension,r),te(u,{session:null}),Z(),$(),await re(r,t.onEvent,"load-complete",c,m,y),null;const x=await f.load({source:c,surface:{container:e},options:r,signal:t.signal,registerExportAdapter:_=>{te(u,{exportAdapter:_})}});return te(u,{session:x}),C.refreshProvider(),await F.refreshDocumentIndex({notify:!1}),Z(),$(),await re(r,t.onEvent,"load-complete",c,m,y),x},async destroy(p="component-unmount"){await oe(p),F.destroyDocumentFeatures(),C.destroy()},updateOptions(p){r={...r,...p}},getCapabilities(p){return ie(p)},getRenderer(p){return i.getByExtension(p||(h==null?void 0:h.extension)||"")},getSource(){return h},registerExportAdapter(p){te(u,{exportAdapter:p})},getExportAdapter(){return u.exportAdapter},async download(p={}){const c=Kr(h);await ti({source:c,filename:p.filename||U({source:c,fallback:Tt}),beforeOperation:S})},async exportHtml(p={}){return ri({source:e,adapter:u.exportAdapter,download:p.download,filename:p.filename||U({filename:de(h),fallback:"preview"}),title:p.title||U({filename:de(h),fallback:"file-viewer-preview"}),watermarkInlineStyle:R(p.watermarkInlineStyle),beforeOperation:S})},async print(p={}){await ii({source:e,adapter:u.exportAdapter,autoPrint:p.autoPrint,openWindow:p.openWindow,printWindow:p.printWindow,title:p.title||U({filename:de(h),fallback:"file-viewer-preview"}),watermarkInlineStyle:R(p.watermarkInlineStyle),printAvailable:ie().print,beforeOperation:S})},async zoomIn(){const p=await C.zoomIn();return $(p),p},async zoomOut(){const p=await C.zoomOut();return $(p),p},async resetZoom(){const p=await C.resetZoom();return $(p),p},getZoomState(){return C.getState()},search(p){return F.searchDocument(p)},nextSearchResult(){return F.nextSearchResult()},previousSearchResult(){return F.previousSearchResult()},clearSearch(){return F.clearDocumentSearch()},getSearchState(){return F.getSearchState()},collectDocumentAnchors(){return F.collectDocumentAnchors({notify:!1})},getCurrentDocumentAnchor(){return F.getCurrentDocumentAnchor()},scrollToDocumentAnchor(p){return F.scrollToLoadedAnchor(p)},scrollToLine(p){return F.scrollToLine(p)},getDocumentTextChunks(p){return F.getDocumentTextChunks(p)}}};xe(),Y();var Yi=()=>typeof window!="undefined"&&typeof document!="undefined",ze=(e={})=>!!(e.url||e.file||e.buffer),Ie=(e={})=>({url:e.url,file:e.file,buffer:e.buffer,filename:e.filename||e.name,name:e.name,type:e.type,size:e.size}),Ji=()=>typeof fetch=="function",Ki=async({url:e,signal:t})=>{if(!Ji())throw new Error("fetch is not available in the current environment.");const r=await fetch(e,{signal:t});if(!r.ok)throw new Error(`Failed to fetch file: ${r.status} ${r.statusText}`);return r.blob()},Qi=e=>B(e.filename||e.name||Nr({file:e.file,url:e.url,fallback:"preview.bin"}),e.type?`preview.${e.type}`:q),eo=async(e,t={})=>{const r=Qi(e),i=e.type||ee(r);if(e.buffer){var o;return{buffer:e.buffer,filename:r,type:i,size:(o=e.size)!==null&&o!==void 0?o:e.buffer.byteLength,url:e.url}}if(e.file){var a;const l=St(e.file,r);return{file:l,buffer:await Ft(l),filename:l.name||r,type:i||ee(l.name),size:(a=e.size)!==null&&a!==void 0?a:l.size,url:e.url}}if(e.url){var n;const l=await(t.fetchFile||Ki)({url:e.url,signal:t.signal,source:e});if(!l)throw new Error("Downloaded file is empty.");const s=St(l,r);return{file:s,buffer:await Ft(s),filename:s.name||r,type:i||ee(s.name),size:(n=e.size)!==null&&n!==void 0?n:s.size,url:e.url}}return{filename:r,type:i}},Jt=(e,t)=>({load(r){var i,o;return(i=(o=e())===null||o===void 0?void 0:o.load(r))!==null&&i!==void 0?i:Promise.resolve()},update(r){var i,o;return(i=(o=e())===null||o===void 0?void 0:o.update(r))!==null&&i!==void 0?i:Promise.resolve()},reload(){var r,i;return(r=(i=e())===null||i===void 0?void 0:i.reload())!==null&&r!==void 0?r:Promise.resolve()},destroy(){t()},getController:e,getApi(){var r,i;return(r=(i=e())===null||i===void 0?void 0:i.getApi())!==null&&r!==void 0?r:null},downloadOriginalFile(){var r,i;return(r=(i=e())===null||i===void 0?void 0:i.downloadOriginalFile())!==null&&r!==void 0?r:Promise.resolve()},printRenderedHtml(){var r,i;return(r=(i=e())===null||i===void 0?void 0:i.printRenderedHtml())!==null&&r!==void 0?r:Promise.resolve()},exportRenderedHtml(){var r,i;return(r=(i=e())===null||i===void 0?void 0:i.exportRenderedHtml())!==null&&r!==void 0?r:Promise.resolve()},zoomIn(){var r,i;return(r=(i=e())===null||i===void 0?void 0:i.zoomIn())!==null&&r!==void 0?r:Promise.resolve(null)},zoomOut(){var r,i;return(r=(i=e())===null||i===void 0?void 0:i.zoomOut())!==null&&r!==void 0?r:Promise.resolve(null)},resetZoom(){var r,i;return(r=(i=e())===null||i===void 0?void 0:i.resetZoom())!==null&&r!==void 0?r:Promise.resolve(null)},searchDocument(r){var i,o;return(i=(o=e())===null||o===void 0?void 0:o.searchDocument(r))!==null&&i!==void 0?i:Promise.resolve(null)},clearDocumentSearch(){var r,i;return(r=(i=e())===null||i===void 0?void 0:i.clearDocumentSearch())!==null&&r!==void 0?r:Promise.resolve(null)},nextSearchResult(){var r,i;return(r=(i=e())===null||i===void 0?void 0:i.nextSearchResult())!==null&&r!==void 0?r:Promise.resolve(null)},previousSearchResult(){var r,i;return(r=(i=e())===null||i===void 0?void 0:i.previousSearchResult())!==null&&r!==void 0?r:Promise.resolve(null)},collectDocumentAnchors(){var r,i;return(r=(i=e())===null||i===void 0?void 0:i.collectDocumentAnchors())!==null&&r!==void 0?r:Promise.resolve([])},scrollToAnchor(r){var i,o;return(i=(o=e())===null||o===void 0?void 0:o.scrollToAnchor(r))!==null&&i!==void 0?i:Promise.resolve(!1)},scrollToLine(r){var i,o;return(i=(o=e())===null||o===void 0?void 0:o.scrollToLine(r))!==null&&i!==void 0?i:Promise.resolve(!1)},getDocumentTextChunks(){var r,i;return(r=(i=e())===null||i===void 0?void 0:i.getDocumentTextChunks())!==null&&r!==void 0?r:[]},getOperationAvailability(){var r,i;return(r=(i=e())===null||i===void 0?void 0:i.getOperationAvailability())!==null&&r!==void 0?r:null},getZoomState(){var r,i;return(r=(i=e())===null||i===void 0?void 0:i.getZoomState())!==null&&r!==void 0?r:null},getSearchState(){var r,i;return(r=(i=e())===null||i===void 0?void 0:i.getSearchState())!==null&&r!==void 0?r:null},getState(){var r,i;return(r=(i=e())===null||i===void 0?void 0:i.getState())!==null&&r!==void 0?r:null},subscribe(r){var i,o;return(i=(o=e())===null||o===void 0?void 0:o.subscribe(r))!==null&&i!==void 0?i:(()=>{})}}),T=async(e,t,r)=>e?t(e):r,to=e=>!!(e&&typeof e=="object"&&e.name==="AbortError"),Kt=(e,t={},r={})=>{if(!Yi())throw new Error("Flyfish File Viewer can only be mounted in a browser DOM environment.");let i=!1,o=t,a=ze(o)?Ie(o):null,n=null;const l=new Set,s={loading:!1,ready:!1,error:null,lastEvent:null,lifecycle:null,availability:null,search:null,zoom:null,location:null},v=()=>({...s,search:s.search?{...s.search,matches:[...s.search.matches]}:null}),g=d=>{var w;const S=v();(w=o.onStateChange)===null||w===void 0||w.call(o,S,d),l.forEach(R=>R(S,d))},h=d=>{var w;s.lastEvent=d,d.type==="load-start"?(s.loading=!0,s.ready=!1,s.error=null,s.lifecycle=d.payload):d.type==="load-complete"?(s.loading=!1,s.ready=!0,s.lifecycle=d.payload):d.type==="unload-start"?(s.loading=!0,s.ready=!1,s.lifecycle=d.payload):d.type==="unload-complete"?(s.loading=!1,s.ready=!1,s.lifecycle=d.payload):d.type==="operation-availability-change"?s.availability=d.payload:d.type==="search-change"?s.search=d.payload:d.type==="location-change"?s.location=d.payload:d.type==="zoom-change"&&(s.zoom=d.payload),(w=o.onEvent)===null||w===void 0||w.call(o,d),g(d)},u=Xi(e,{registry:r.registry,options:o.options,onEvent:h}),b=()=>{n==null||n.abort(),n=null},E=async d=>{b(),a=d,n=typeof AbortController!="undefined"?new AbortController:null;const w=n;try{s.loading=!0,s.error=null,g();const R=await eo(d,{fetchFile:r.fetchFile,signal:w==null?void 0:w.signal});return await u.load(R)}catch(R){var S;if(to(R)&&(w!=null&&w.signal.aborted))return null;throw s.loading=!1,s.ready=!1,s.error=R,g(),(S=r.onError)===null||S===void 0||S.call(r,R,d),R}finally{n===w&&(n=null)}};return a&&E(a),{container:e,async load(d){i||(o=d,u.updateOptions(o.options||{}),ze(o)&&await E(Ie(o)))},async update(d={}){var w;i||(o={...o,...d,options:(w=d.options)!==null&&w!==void 0?w:o.options},u.updateOptions(o.options||{}),ze(o)?await E(Ie(o)):(a=null,await u.load({filename:q})))},async reload(){i||a&&await E(a)},destroy(){i||(i=!0,b(),u.destroy("component-unmount"),e.innerHTML="")},getApi(){return u},downloadOriginalFile(){return T(u,d=>d.download(),void 0)},printRenderedHtml(){return T(u,d=>d.print(),void 0)},exportRenderedHtml(){return T(u,d=>d.exportHtml({download:!0}).then(()=>{}),void 0)},zoomIn(){return T(u,d=>d.zoomIn(),null)},zoomOut(){return T(u,d=>d.zoomOut(),null)},resetZoom(){return T(u,d=>d.resetZoom(),null)},searchDocument(d){return T(u,w=>w.search(d),null)},clearDocumentSearch(){return T(u,d=>d.clearSearch(),null)},nextSearchResult(){return T(u,d=>d.nextSearchResult(),null)},previousSearchResult(){return T(u,d=>d.previousSearchResult(),null)},collectDocumentAnchors(){return T(u,d=>d.collectDocumentAnchors(),[])},scrollToAnchor(d){return T(u,w=>w.scrollToDocumentAnchor(d),!1)},scrollToLine(d){return T(u,w=>w.scrollToLine(d),!1)},getDocumentTextChunks(){return u.getDocumentTextChunks()},getOperationAvailability(){return u.getCapabilities()},getZoomState(){return u.getZoomState()},getSearchState(){return u.getSearchState()},getState(){return v()},subscribe(d){return l.add(d),d(v()),()=>{l.delete(d)}}}},Le="flyfish-file-viewer",ro=typeof HTMLElement=="undefined"?class{}:HTMLElement,io=["src","url","filename","name","type","size","locale","theme","toolbar","toolbar-position","watermark","search","options"],Oe=e=>{if(e===null)return;const t=e.trim().toLowerCase();if(!t||["true","1","yes","on"].includes(t))return!0;if(["false","0","no","off"].includes(t))return!1},Qt=e=>{if(e===null||e.trim()==="")return;const t=Number(e);return Number.isFinite(t)?t:void 0},pe=e=>{if(!e)return;const t=e.trim();if(!(!t||t[0]!=="{"&&t[0]!=="["))try{return JSON.parse(t)}catch(r){console.warn("[file-viewer-web] Failed to parse JSON attribute.",r);return}},er=(...e)=>{const t=e.filter(Boolean);if(t.length)return Object.assign({},...t)},Ve=(e,t)=>({...e,...t,options:t.options===void 0?e.options:er(e.options,t.options)}),tr=(e,t)=>{for(const r of new Set(e.filter(Boolean)))r==null||r(t)},oo=e=>`viewer-${e.type}`,me=class extends ro{constructor(...e){super(...e),this.mountNode=null,this.controller=null,this.pendingUpdate=!1,this.mountOptions={},this.internalCoreOptions={}}static get observedAttributes(){return[...io]}get src(){return this.mountOptions.url||this.getAttribute("src")||this.getAttribute("url")||void 0}set src(e){this.setMountOptions({url:e||void 0})}get url(){return this.src}set url(e){this.setMountOptions({url:e||void 0})}get file(){return this.mountOptions.file}set file(e){this.setMountOptions({file:e})}get buffer(){return this.mountOptions.buffer}set buffer(e){this.setMountOptions({buffer:e})}get name(){return this.mountOptions.name||this.getAttribute("name")||void 0}set name(e){this.setMountOptions({name:e||void 0})}get filename(){return this.mountOptions.filename||this.getAttribute("filename")||this.name}set filename(e){this.setMountOptions({filename:e||void 0})}get type(){return this.mountOptions.type||this.getAttribute("type")||void 0}set type(e){this.setMountOptions({type:e||void 0})}get size(){var e;return(e=this.mountOptions.size)!==null&&e!==void 0?e:Qt(this.getAttribute("size"))}set size(e){this.setMountOptions({size:e})}get options(){return this.mountOptions.options}set options(e){this.setMountOptions({options:e})}get locale(){var e;return((e=this.mountOptions.options)===null||e===void 0?void 0:e.locale)||this.getAttribute("locale")||void 0}set locale(e){this.setMountOptions({options:{...this.mountOptions.options||{},locale:e}})}get source(){return{...this.mountOptions,coreOptions:this.internalCoreOptions}}set source(e){const{coreOptions:t,...r}=e||{};this.mountOptions=r,this.internalCoreOptions=t||{},this.remountOrUpdate()}get coreOptions(){return this.internalCoreOptions}set coreOptions(e){this.internalCoreOptions=e||{},this.remount()}connectedCallback(){this.mount()}disconnectedCallback(){this.destroy()}attributeChangedCallback(e,t,r){t!==r&&this.scheduleUpdate()}async load(e){var t;this.mountOptions=Ve(this.mountOptions,e),!this.controller&&this.isConnected&&this.mount(),await((t=this.controller)===null||t===void 0?void 0:t.load(this.createEffectiveMountOptions()))}async update(e={}){var t;if(this.mountOptions=Ve(this.mountOptions,e),!this.controller&&this.isConnected){this.mount();return}await((t=this.controller)===null||t===void 0?void 0:t.update(this.createEffectiveMountOptions()))}reload(){var e,t;return(e=(t=this.controller)===null||t===void 0?void 0:t.reload())!==null&&e!==void 0?e:Promise.resolve()}destroy(){var e;(e=this.controller)===null||e===void 0||e.destroy(),this.controller=null,this.mountNode&&(this.mountNode.innerHTML=""),this.pendingUpdate=!1}getController(){return this.controller}getApi(){var e,t;return(e=(t=this.controller)===null||t===void 0?void 0:t.getApi())!==null&&e!==void 0?e:null}downloadOriginalFile(){var e,t;return(e=(t=this.controller)===null||t===void 0?void 0:t.downloadOriginalFile())!==null&&e!==void 0?e:Promise.resolve()}printRenderedHtml(){var e,t;return(e=(t=this.controller)===null||t===void 0?void 0:t.printRenderedHtml())!==null&&e!==void 0?e:Promise.resolve()}exportRenderedHtml(){var e,t;return(e=(t=this.controller)===null||t===void 0?void 0:t.exportRenderedHtml())!==null&&e!==void 0?e:Promise.resolve()}zoomIn(){var e,t;return(e=(t=this.controller)===null||t===void 0?void 0:t.zoomIn())!==null&&e!==void 0?e:Promise.resolve(null)}zoomOut(){var e,t;return(e=(t=this.controller)===null||t===void 0?void 0:t.zoomOut())!==null&&e!==void 0?e:Promise.resolve(null)}resetZoom(){var e,t;return(e=(t=this.controller)===null||t===void 0?void 0:t.resetZoom())!==null&&e!==void 0?e:Promise.resolve(null)}searchDocument(e){var t,r;return(t=(r=this.controller)===null||r===void 0?void 0:r.searchDocument(e))!==null&&t!==void 0?t:Promise.resolve(null)}clearDocumentSearch(){var e,t;return(e=(t=this.controller)===null||t===void 0?void 0:t.clearDocumentSearch())!==null&&e!==void 0?e:Promise.resolve(null)}nextSearchResult(){var e,t;return(e=(t=this.controller)===null||t===void 0?void 0:t.nextSearchResult())!==null&&e!==void 0?e:Promise.resolve(null)}previousSearchResult(){var e,t;return(e=(t=this.controller)===null||t===void 0?void 0:t.previousSearchResult())!==null&&e!==void 0?e:Promise.resolve(null)}collectDocumentAnchors(){var e,t;return(e=(t=this.controller)===null||t===void 0?void 0:t.collectDocumentAnchors())!==null&&e!==void 0?e:Promise.resolve([])}scrollToAnchor(e){var t,r;return(t=(r=this.controller)===null||r===void 0?void 0:r.scrollToAnchor(e))!==null&&t!==void 0?t:Promise.resolve(!1)}scrollToLine(e){var t,r;return(t=(r=this.controller)===null||r===void 0?void 0:r.scrollToLine(e))!==null&&t!==void 0?t:Promise.resolve(!1)}getDocumentTextChunks(){var e,t;return(e=(t=this.controller)===null||t===void 0?void 0:t.getDocumentTextChunks())!==null&&e!==void 0?e:[]}getOperationAvailability(){var e,t;return(e=(t=this.controller)===null||t===void 0?void 0:t.getOperationAvailability())!==null&&e!==void 0?e:null}getZoomState(){var e,t;return(e=(t=this.controller)===null||t===void 0?void 0:t.getZoomState())!==null&&e!==void 0?e:null}getSearchState(){var e,t;return(e=(t=this.controller)===null||t===void 0?void 0:t.getSearchState())!==null&&e!==void 0?e:null}getState(){var e,t;return(e=(t=this.controller)===null||t===void 0?void 0:t.getState())!==null&&e!==void 0?e:null}subscribe(e){var t,r;return(t=(r=this.controller)===null||r===void 0?void 0:r.subscribe(e))!==null&&t!==void 0?t:(()=>{})}setMountOptions(e){this.mountOptions=Ve(this.mountOptions,e),this.scheduleUpdate()}mount(){if(this.controller||!this.isConnected)return;const e=this.ensureMountNode();try{this.controller=Kt(e,this.createEffectiveMountOptions(),{registry:Gt,...this.internalCoreOptions}),this.dispatchTypedEvent("viewer-ready",{controller:this.controller})}catch(t){throw this.dispatchError(t),t}}remount(){this.isConnected&&(this.destroy(),this.mount())}remountOrUpdate(){this.controller?this.update():this.isConnected&&this.mount()}ensureMountNode(){if(this.mountNode)return this.mountNode;const e=document.createElement("div");return e.className="file-viewer-web-host",e.style.width="100%",e.style.height="100%",e.style.minWidth="0",e.style.minHeight="0",this.mountNode=e,this.appendChild(e),this.style.display||(this.style.display="block"),e}createEffectiveMountOptions(){const e=this.readAttributeMountOptions(),t=this.mountOptions,r=[e.onEvent,t.onEvent],i=[e.onStateChange,t.onStateChange];return{...e,...t,options:er(e.options,t.options),onEvent:o=>{tr(r,o),this.dispatchViewerEvent(o)},onStateChange:(o,a)=>{tr(i.map(n=>n?l=>n(l,a):void 0),o),this.dispatchTypedEvent("viewer-state-change",{state:o,event:a})}}}readAttributeMountOptions(){const e=this.getAttribute("src")||this.getAttribute("url")||void 0,t=this.getAttribute("filename")||void 0,r=this.getAttribute("name")||void 0,i=this.getAttribute("type")||void 0,o=Qt(this.getAttribute("size")),a=this.readAttributeViewerOptions();return{...e?{url:e}:{},...t?{filename:t}:{},...r?{name:r}:{},...i?{type:i}:{},...o===void 0?{}:{size:o},...a?{options:a}:{}}}readAttributeViewerOptions(){const e=pe(this.getAttribute("options"))||{},t=this.getAttribute("locale");t&&(e.locale=t);const r=this.getAttribute("theme");r&&(e.theme=r);const i=this.getAttribute("toolbar"),o=pe(i),a=Oe(i);o!==void 0?e.toolbar=o:a!==void 0&&(e.toolbar=a);const n=this.getAttribute("toolbar-position");n&&(e.toolbar={...typeof e.toolbar=="object"&&e.toolbar?e.toolbar:{},position:n});const l=this.getAttribute("watermark"),s=pe(l),v=Oe(l);s!==void 0?e.watermark=s:v!==void 0?e.watermark=v:l&&(e.watermark={enabled:!0,text:l});const g=this.getAttribute("search"),h=pe(g),u=Oe(g);return h!==void 0?e.search=h:u!==void 0&&(e.search=u),Object.keys(e).length?e:void 0}scheduleUpdate(){!this.isConnected||!this.controller||this.pendingUpdate||(this.pendingUpdate=!0,queueMicrotask(()=>{this.pendingUpdate=!1,this.controller&&this.controller.update(this.createEffectiveMountOptions()).catch(e=>{this.dispatchError(e)})}))}dispatchViewerEvent(e){this.dispatchTypedEvent("viewer-event",e),this.dispatchTypedEvent(oo(e),e)}dispatchError(e){this.dispatchTypedEvent("viewer-error",{error:e})}dispatchTypedEvent(e,t){this.dispatchEvent(new CustomEvent(e,{bubbles:!0,composed:!0,detail:t}))}},Me=(e=Le)=>{if(typeof window=="undefined"||!window.customElements)return;const t=window.customElements.get(e);return t||(window.customElements.define(e,me),me)},rr=(e,t={},r={})=>Kt(e,t,{registry:Gt,...r}),ir={createViewerControllerHandle:Jt,defineFileViewerElement:Me,FileViewerElement:me,FILE_VIEWER_ELEMENT_TAG:Le,mountViewer:rr};typeof window!="undefined"&&(window.FlyfishFileViewerWeb=ir,Me()),H.FILE_VIEWER_ELEMENT_TAG=Le,H.FileViewerElement=me,H.createViewerControllerHandle=Jt,H.default=ir,H.defineFileViewerElement=Me,H.mountViewer=rr})(this.FlyfishFileViewerWeb=this.FlyfishFileViewerWeb||{});
|