@flyfish-group/file-viewer-web 2.1.2 → 2.1.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,4 +1,4 @@
1
- (function(H){Object.defineProperties(H,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});var Ce=Object.defineProperty,$=(e,t)=>()=>(e&&(t=e(e=0)),t),Qt=(e,t)=>{let r={};for(var n in e)Ce(r,n,{get:e[n],enumerable:!0});return t||Ce(r,Symbol.toStringTag,{value:"Module"}),r},De=["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"],Me=["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"],Pe=["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"],Ne=["gif","jpg","jpeg","bmp","tiff","tif","png","svg","webp","avif","ico","heic","heif","jxl"],B=[{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:De,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:Me,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:Ne,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:Pe,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}}],Jn=Object.freeze(Array.from(new Set(B.flatMap(e=>e.extensions))).sort()),er,tr,rr,pe,He,ie,$e,Be,oe=$((()=>{er=1,tr=1200,rr=160,pe=(e={})=>{var t,r,n;const i=Number.isFinite(e.scale)&&e.scale?Number(e.scale):1;return{scale:i,label:e.label||`${Math.round(i*100)}%`,canZoomIn:(t=e.canZoomIn)!==null&&t!==void 0?t:!1,canZoomOut:(r=e.canZoomOut)!==null&&r!==void 0?r:!1,canReset:(n=e.canReset)!==null&&n!==void 0?n:!1,minScale:e.minScale,maxScale:e.maxScale}},He=e=>e===!1?{enabled:!1}:e===!0||e===void 0?{}:e,ie=(e="")=>({query:e,total:0,currentIndex:-1,current:null,matches:[]}),$e=e=>e===!1?{enabled:!1,collectText:!1}:e===!0||e===void 0?{}:e,Be=(e,t)=>{var r;const n=$e(t);if(n.enabled===!1||n.collectText===!1)return[];const i=Math.max(200,n.chunkSize||1200),o=Math.max(0,Math.min(i-1,(r=n.chunkOverlap)!==null&&r!==void 0?r:160)),l=Math.max(0,n.maxTextLength||0),a=[];return e.forEach(s=>{const c=l?s.text.slice(0,l):s.text;if(!c)return;if(c.length<=i){a.push({id:`${s.id}-chunk-1`,text:c,anchor:s,startLine:s.line,endLine:s.line});return}let p=0,h=1;for(;p<c.length;){const m=c.slice(p,p+i);if(a.push({id:`${s.id}-chunk-${h}`,text:m,anchor:s,startLine:s.line,endLine:s.line}),p+i>=c.length)break;p+=i-o,h+=1}}),a}})),Ue,Ze,me,fe,We,je,qe,Xe,Ye,he,Je,Ge,Ke,nr=$((()=>{Ue=["[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(","),Ze=[".viewer-actions",".viewer-watermark",".state-panel",".pdf-toolbar",".pdf-nav-pane",".flyfish-search-match"].join(","),me=e=>typeof CSS!="undefined"&&typeof CSS.escape=="function"?CSS.escape(e):e.replace(/["\\]/g,"\\$&"),fe=(e,t=160)=>{const r=e.replace(/\s+/g," ").trim();return r.length>t?`${r.slice(0,t-1)}…`:r},We=e=>{const t=e.getBoundingClientRect();return t.width>0||t.height>0},je=e=>!!e.closest(Ze),qe=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),n=r?Number.parseInt(r,10):NaN;return Number.isFinite(n)?n:void 0},Xe=e=>e.matches(".pdfViewer .page, [data-page-number], [data-page]")?"page":e.matches("p, li, tr, pre, code")?"line":"block",Ye=(e,t)=>{let r=e.parentElement;for(;r;){if(t.has(r))return!0;r=r.parentElement}return!1},he=e=>{if(!e)return[];const t=e.getBoundingClientRect(),r=new Set,n=[];return Array.from(e.querySelectorAll(Ue)).forEach(i=>{if(je(i)||!We(i))return;const o=fe(i.textContent||"",1e3);if(!o||Ye(i,r)&&!i.matches("p, li, tr, pre, code"))return;r.add(i);const l=i.dataset.viewerAnchorId||`viewer-anchor-${n.length+1}`;i.dataset.viewerAnchorId=l,i.dataset.viewerLine=String(n.length+1);const a=i.getBoundingClientRect();n.push({id:l,index:n.length,line:n.length+1,type:Xe(i),label:fe(o,96),text:o,page:qe(i),top:a.top-t.top+e.scrollTop,left:a.left-t.left+e.scrollLeft,width:a.width,height:a.height})}),n},Je=(e,t,r)=>{if(!e)return null;const n=e.closest("[data-viewer-anchor-id]");if(n!=null&&n.dataset.viewerAnchorId){const a=t.find(s=>s.id===n.dataset.viewerAnchorId);if(a)return a}if(!r)return null;const i=r.getBoundingClientRect(),o=e.getBoundingClientRect().top-i.top+r.scrollTop;let l=null;for(const a of t){if(a.top<=o+1){l=a;continue}break}return l},Ge=(e,t)=>{if(!e||!t.length)return null;const r=e.scrollTop+e.clientHeight*.42;let n=t[0];for(const i of t){if(i.top<=r){n=i;continue}break}return n},Ke=(e,t)=>{if(!e||t===null||t===void 0)return!1;const r=typeof t=="object"?`[data-viewer-anchor-id="${me(t.id)}"]`:typeof t=="number"?`[data-viewer-line="${t}"]`:`[data-viewer-anchor-id="${me(t)}"]`,n=e.querySelector(r);return n?(n.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,J,Qe,et,tt,rt,ir=$((()=>{we=new WeakMap,J=new WeakMap,Qe=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},et=(e,t)=>{J.set(e,t),e.dataset.viewerZoomProvider=e.dataset.viewerZoomProvider||"custom",e.__flyfishViewerZoomProvider=t},tt=e=>{e&&(J.delete(e),delete e.dataset.viewerZoomProvider,delete e.__flyfishViewerZoomProvider)},rt=e=>{if(!e)return null;const t=J.get(e)||e.__flyfishViewerZoomProvider;if(t)return t;const r=e.querySelector("[data-viewer-zoom-provider]");return r&&(J.get(r)||r.__flyfishViewerZoomProvider)||null}})),or,ar,nt,ae,le,it,lr=$((()=>{or="[data-viewer-scroll-container], .pdf-wrapper",ar="div, section, article, pre",nt=["auto","scroll","overlay"],ae=e=>Math.max(0,e.scrollHeight-e.clientHeight),le=(e,t={})=>{var r,n;const i=(r=t.minScrollRange)!==null&&r!==void 0?r:2;if(ae(e)<=i)return!1;const o=(n=e.ownerDocument)===null||n===void 0?void 0:n.defaultView,l=o!=null&&o.getComputedStyle?o:typeof window!="undefined"?window:void 0;if(!(l!=null&&l.getComputedStyle))return!1;const a=l.getComputedStyle(e),s=a.overflowY||a.overflow;return(t.overflowValues||nt).includes(s)},it=(e,t={})=>{if(!e)return null;const r=t.preferredSelector||"[data-viewer-scroll-container], .pdf-wrapper",n=t.candidateSelector||"div, section, article, pre",i=e.querySelector(r);return i&&le(i,t)?i:le(e,t)?e:Array.from(e.querySelectorAll(n)).filter(o=>le(o,t)).sort((o,l)=>ae(l)-ae(o))[0]||i||e}})),G=$((()=>{nr(),ir(),lr()}));G(),oe();var Gn="flyfish-search-match",Kn="flyfish-search-match--active",Qn=1e3,sr=["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(","),ot=e=>({...e,anchor:e.anchor?{...e.anchor}:null}),at=e=>({query:e.query,total:e.total,currentIndex:e.currentIndex,current:e.current?ot(e.current):null,matches:e.matches.map(ot)}),lt=(e,t)=>{const r=at(t);return e.query=r.query,e.total=r.total,e.currentIndex=r.currentIndex,e.current=r.current,e.matches=r.matches,e},ge=(e,t)=>(e.anchors.value=t.anchors,lt(e.state,t.state),e.state),dr=(e,t)=>(t.observe(),ge(e,t)),K=async(e,t,r)=>(await r(),ge(e,t)),cr=(e,t)=>(t.destroy(),ge(e,t)),ur=(e,t)=>({observe(){return dr(e,t)},async refreshAnchors(){return await K(e,t,()=>t.refreshAnchors()),e.anchors.value},async search(r){return K(e,t,()=>t.search(r))},async next(){return K(e,t,()=>t.next())},async previous(){return K(e,t,()=>t.previous())},async clear(){return K(e,t,()=>t.clear())},destroy(){return cr(e,t)}}),st=e=>e.replace(/[.*+?^${}()|[\]\\]/g,"\\$&"),vr=e=>e.replace(/\s+/g," ").trim(),pr=(e,t)=>{const r=t.wholeWord?`\\b${st(e)}\\b`:st(e);return new RegExp(r,t.caseSensitive?"g":"gi")},mr=e=>e.map(({element:t,...r})=>r),fr=e=>{const t=e.parentNode;if(t){for(;e.firstChild;)t.insertBefore(e.firstChild,e);t.removeChild(e),t.normalize()}},dt=(e,t)=>{const r=e.parentElement;return!r||r.closest(sr)?!0:!t.contains(r)||!e.data.trim()},be=(e,t)=>{const r=e.ownerDocument.defaultView,n=(r==null?void 0:r.NodeFilter)||(typeof NodeFilter!="undefined"?NodeFilter:void 0);return n?n[t]:t==="SHOW_TEXT"?4:t==="FILTER_REJECT"?2:1},hr=e=>{const t=[],r=e.ownerDocument.createTreeWalker(e,be(e,"SHOW_TEXT"),{acceptNode(i){return dt(i,e)?be(e,"FILTER_REJECT"):be(e,"FILTER_ACCEPT")}});let n=r.nextNode();for(;n;)dt(n,e)||t.push(n),n=r.nextNode();return t},wr=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)},gr=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)},br=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),n=r.overflowY||r.overflow;return["auto","scroll","overlay","visible"].includes(n)},yr=({root:e,options:t,waitForDomUpdate:r,preferredScrollContainer:n})=>{let i=[],o=[];const l=new Set,a=ie();let s=null,c=!1,p=null,h=!1;const m=()=>He(t==null?void 0:t()),y=()=>{const u=mr(o);a.total=u.length,a.currentIndex=u.length?Math.max(0,Math.min(a.currentIndex,u.length-1)):-1,a.current=a.currentIndex>=0?u[a.currentIndex]:null,a.matches=u},S=u=>lt(a,u),d=()=>{Array.from(l).forEach(fr),l.clear(),o=[],a.total=0,a.currentIndex=-1,a.current=null,a.matches=[]},b=async(u,f=a.query)=>{var w;const x=Qe(e());return x?(d(),S(await u(x)||((w=x.getState)===null||w===void 0?void 0:w.call(x))||ie(f))):null},_=()=>{s==null||s.disconnect(),s=null},R=u=>{const f=e()||null,w=(n==null?void 0:n())||null;if(w&&(w===u||w.contains(u)))return w;let x=u.parentElement;for(;x;){if(br(x))return x;if(x===f)break;x=x.parentElement}return f},P=u=>{const f=R(u);if(!f){u.scrollIntoView({block:"center",inline:"nearest"});return}const w=f.scrollLeft,x=f.getBoundingClientRect(),V=u.getBoundingClientRect(),L=V.top-x.top+f.scrollTop-f.clientHeight/2+V.height/2,C=Math.max(0,f.scrollHeight-f.clientHeight),z=Math.max(0,Math.min(L,C));typeof f.scrollTo=="function"?f.scrollTo({top:z,left:w,behavior:"auto"}):(f.scrollTop=z,f.scrollLeft=w),f.scrollLeft=w},k=(u,f=!0)=>{const w=m();if(!o.length)return y(),a;const x=(u%o.length+o.length)%o.length;o.forEach(L=>{L.element.classList.remove(w.activeClassName||"flyfish-search-match--active")});const V=o[x];return V.element.classList.add(w.activeClassName||"flyfish-search-match--active"),a.currentIndex=x,y(),f&&P(V.element),a},F=(u,f,w,x)=>{var V;const L=e();if(!L)return;const C=m(),z=u.data;let N=0,T;const Y=u.ownerDocument.createDocumentFragment();let M=!1;for(f.lastIndex=0;(T=f.exec(z))&&x.length<w;){if(!T[0]){f.lastIndex+=1;continue}T.index>N&&Y.appendChild(u.ownerDocument.createTextNode(z.slice(N,T.index)));const D=u.ownerDocument.createElement("mark");D.className=C.className||"flyfish-search-match",D.textContent=T[0],D.dataset.searchMatchId=`viewer-search-match-${x.length+1}`,l.add(D),Y.appendChild(D),M=!0;const O=Je(u.parentElement,i,L);x.push({id:D.dataset.searchMatchId,index:x.length,text:T[0],anchor:O,line:O==null?void 0:O.line,page:O==null?void 0:O.page,element:D}),N=T.index+T[0].length}M&&(N<z.length&&Y.appendChild(u.ownerDocument.createTextNode(z.slice(N))),(V=u.parentNode)===null||V===void 0||V.replaceChild(Y,u))},X=()=>{_();const u=e(),f=wr(u);!c||!u||!f||(s=new f(E),s.observe(u,{childList:!0,subtree:!0,characterData:!0}))},v=()=>{if(!c)return;const u=gr(e());if(u!=null&&u.setTimeout){u.setTimeout(X,0);return}setTimeout(X,0)},g=async(u,f=0)=>{const w=vr(u),x=m();a.query=w,_(),h=!0;try{d();const V=e();if(!w||x.enabled===!1||!V){const M=await b(D=>{var O;return(O=D.clear)===null||O===void 0?void 0:O.call(D)},w);return M||a}const L=await b(M=>M.search(w,x),w);if(L)return L;await(r==null?void 0:r());const C=e();if(!C)return a;i=he(C);const z=pr(w,x),N=Math.max(1,x.maxMatches||1e3),T=[],Y=hr(C);for(const M of Y){if(T.length>=N)break;F(M,z,N,T)}o=T,y(),T.length&&k(f,!0)}finally{h=!1,v()}return a},E=()=>{var u;const f=m();!a.query||h||f.enabled===!1||(p!==null&&clearTimeout(p),p=setTimeout(()=>{p=null,g(a.query,Math.max(0,a.currentIndex))},(u=f.debounce)!==null&&u!==void 0?u:180))};return{get anchors(){return i},state:a,getInternalMatches:()=>o,observe(){c=!0,X()},async refreshAnchors(){return await(r==null?void 0:r()),i=he(e()||null),i},search:u=>g(u,0),next:async()=>await b(u=>{var f,w;return((f=u.next)===null||f===void 0?void 0:f.call(u))||((w=u.getState)===null||w===void 0?void 0:w.call(u))})||k(a.currentIndex+1),previous:async()=>await b(u=>{var f,w;return((f=u.previous)===null||f===void 0?void 0:f.call(u))||((w=u.getState)===null||w===void 0?void 0:w.call(u))})||k(a.currentIndex-1),clear:async()=>{a.query="",_(),h=!0;try{d();const u=await b(f=>{var w;return(w=f.clear)===null||w===void 0?void 0:w.call(f)},"");return u||a}finally{h=!1,v()}},destroy(){c=!1,_(),p!==null&&(clearTimeout(p),p=null),d()}}};oe(),G();var ct=e=>at(e),xr=({root:e,anchors:t})=>Ge(e||null,t),Er=({root:e,searchTarget:t,searchOptions:r,waitForDomUpdate:n,preferredScrollContainer:i,getAiOptions:o,onSearchChange:l,onLocationChange:a})=>{let s=null;const c=ur(t,yr({root:e,options:r,waitForDomUpdate:n,preferredScrollContainer:()=>{var p,h;return(h=(p=i==null?void 0:i())!==null&&p!==void 0?p:s==null?void 0:s.getScrollContainer())!==null&&h!==void 0?h:null}}));return s=Ar({root:e,searchController:{getAnchors:()=>t.anchors.value,getSearchState:()=>t.state,observe:c.observe,refreshAnchors:c.refreshAnchors,search:c.search,clear:c.clear,next:c.next,previous:c.previous},getAiOptions:o,onSearchChange:l,onLocationChange:a}),{...s,destroyDocumentFeatures:c.destroy}},_r=({state:e,onChange:t})=>{const r=ct(e);return t==null||t(r),!0},Sr=({anchor:e,onChange:t})=>(t==null||t(e),!0),Ar=({root:e,searchController:t,getAiOptions:r,onSearchChange:n,onLocationChange:i})=>{const o=()=>e()||null,l=()=>t.getAnchors(),a=()=>ct(t.getSearchState()),s=()=>{const d=a();return _r({state:d,onChange:n}),d},c=()=>xr({root:o(),anchors:l()}),p=()=>{const d=c();return Sr({anchor:d,onChange:i}),d},h=d=>(d==null?void 0:d.notify)===!1?c():p(),m=async d=>{t.observe();const b=await t.refreshAnchors();return h(d),b},y=async d=>(l().length||await m(d),l()),S=(d,b)=>{const _=Ke(o(),d);return h(b),_};return{refreshDocumentIndex:m,async clearDocumentState(){return await t.clear(),a()},getScrollContainer(){return it(o())},async searchDocument(d){return await t.search(d),s()},async clearDocumentSearch(){return await t.clear(),s()},async nextSearchResult(){return await t.next(),p(),s()},async previousSearchResult(){return await t.previous(),p(),s()},getSearchState:a,async collectDocumentAnchors(d){return await m(d),l()},getCurrentDocumentAnchor:c,scrollToLoadedAnchor:S,async scrollToAnchor(d,b){return await y(b),S(d,b)},async scrollToLine(d,b){return await y(b),S(d,b)},getDocumentTextChunks(d){return Be(l(),d!=null?d:r==null?void 0:r())}}},Q,ee,ut,vt,pt,ye=$((()=>{oe(),G(),Q=e=>({scale:e.scale,label:e.label,canZoomIn:e.canZoomIn,canZoomOut:e.canZoomOut,canReset:e.canReset,minScale:e.minScale,maxScale:e.maxScale}),ee=(e,t)=>{const r=pe(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},ut=()=>{const e=new Set;return{emit(){e.forEach(t=>t())},subscribe(t){return e.add(t),()=>{e.delete(t)}}}},vt=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)},pt=({root:e,enabled:t,beforeZoom:r})=>{let n=null,i=null,o=null;const l=pe(),a=()=>{i==null||i(),i=null,n=null,ee(l,null)},s=()=>{var h,m;if((t==null?void 0:t())===!1)return a(),null;const y=rt(e());return y!==n&&(i==null||i(),n=y,i=((h=y==null?void 0:y.subscribe)===null||h===void 0?void 0:h.call(y,()=>{ee(l,y.getState())}))||null),ee(l,((m=y==null?void 0:y.getState)===null||m===void 0?void 0:m.call(y))||null),y},c=()=>{o==null||o.disconnect(),o=null},p=async(h,m)=>{const y=s();return!y||r&&await r(h)===!1||ee(l,await m(y)||y.getState()),Q(l)};return{get provider(){return n},state:l,hasProvider(){return!!s()},refreshProvider:s,observe(){c();const h=e(),m=vt(h);if(!h||!m){s();return}o=new m(()=>{s()}),o.observe(h,{childList:!0,subtree:!0}),s()},clearProvider:a,getState(){return Q(l)},zoomIn:()=>p("zoom-in",h=>h.zoomIn()),zoomOut:()=>p("zoom-out",h=>h.zoomOut()),resetZoom:()=>p("zoom-reset",h=>h.resetZoom()),destroy(){c(),a()}}}}));ye();var mt=e=>e.replace(/&/g,"&amp;").replace(/"/g,"&quot;").replace(/</g,"&lt;").replace(/>/g,"&gt;"),Fr=`
1
+ (function(N){Object.defineProperties(N,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});var He=Object.defineProperty,W=(e,t)=>()=>(e&&(t=e(e=0)),t),ar=(e,t)=>{let r={};for(var i in e)He(r,i,{get:e[i],enumerable:!0});return t||He(r,Symbol.toStringTag,{value:"Module"}),r},Ne=["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"],Be=["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"],Ue=["gif","jpg","jpeg","bmp","tiff","tif","png","svg","webp","avif","ico","heic","heif","jxl"],B=[{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:Ne,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:Ue,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:Be,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}}],oa=Object.freeze(Array.from(new Set(B.flatMap(e=>e.extensions))).sort()),or,nr,lr,ve,je,oe,Ze,$e,ne=W((()=>{or=1,nr=1200,lr=160,ve=(e={})=>{var t,r,i;const a=Number.isFinite(e.scale)&&e.scale?Number(e.scale):1;return{scale:a,label:e.label||`${Math.round(a*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}},je=e=>e===!1?{enabled:!1}:e===!0||e===void 0?{}:e,oe=(e="")=>({query:e,total:0,currentIndex:-1,current:null,matches:[]}),Ze=e=>e===!1?{enabled:!1,collectText:!1}:e===!0||e===void 0?{}:e,$e=(e,t)=>{var r;const i=Ze(t);if(i.enabled===!1||i.collectText===!1)return[];const a=Math.max(200,i.chunkSize||1200),o=Math.max(0,Math.min(a-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<=a){l.push({id:`${s.id}-chunk-1`,text:v,anchor:s,startLine:s.line,endLine:s.line});return}let h=0,g=1;for(;h<v.length;){const u=v.slice(h,h+a);if(l.push({id:`${s.id}-chunk-${g}`,text:u,anchor:s,startLine:s.line,endLine:s.line}),h+a>=v.length)break;h+=a-o,g+=1}}),l}})),Ge,qe,ge,he,Xe,Ye,Je,Ke,Qe,fe,et,tt,rt,sr=W((()=>{Ge=["[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(","),qe=[".viewer-actions",".viewer-watermark",".state-panel",".pdf-toolbar",".pdf-nav-pane",".flyfish-search-match"].join(","),ge=e=>typeof CSS!="undefined"&&typeof CSS.escape=="function"?CSS.escape(e):e.replace(/["\\]/g,"\\$&"),he=(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(qe),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(Ge)).forEach(a=>{if(Ye(a)||!Xe(a))return;const o=he(a.textContent||"",1e3);if(!o||Qe(a,r)&&!a.matches("p, li, tr, pre, code"))return;r.add(a);const n=a.dataset.viewerAnchorId||`viewer-anchor-${i.length+1}`;a.dataset.viewerAnchorId=n,a.dataset.viewerLine=String(i.length+1);const l=a.getBoundingClientRect();i.push({id:n,index:i.length,line:i.length+1,type:Ke(a),label:he(o,96),text:o,page:Je(a),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 a=r.getBoundingClientRect(),o=e.getBoundingClientRect().top-a.top+r.scrollTop;let n=null;for(const l of t){if(l.top<=o+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 a of t){if(a.top<=r){i=a;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="${ge(t.id)}"]`:typeof t=="number"?`[data-viewer-line="${t}"]`:`[data-viewer-anchor-id="${ge(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,at,ot,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},at=(e,t)=>{X.set(e,t),e.dataset.viewerZoomProvider=e.dataset.viewerZoomProvider||"custom",e.__flyfishViewerZoomProvider=t},ot=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 a=(r=t.minScrollRange)!==null&&r!==void 0?r:2;if(le(e)<=a)return!1;const o=(i=e.ownerDocument)===null||i===void 0?void 0:i.defaultView,n=o!=null&&o.getComputedStyle?o: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",a=e.querySelector(r);return a&&se(a,t)?a:se(e,t)?e:Array.from(e.querySelectorAll(i)).filter(o=>se(o,t)).sort((o,n)=>le(n)-le(o))[0]||a||e}})),Y=W((()=>{sr(),dr(),pr()}));Y(),ne();var na="flyfish-search-match",la="flyfish-search-match--active",sa=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)),gr=(e,t)=>(t.destroy(),be(e,t)),hr=(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 gr(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(a){return mt(a,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 a=[],o=[];const n=new Set,l=oe();let s=null,v=!1,h=null,g=!1;const u=()=>je(t==null?void 0:t()),b=()=>{const c=br(o);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},S=c=>ut(l,c),d=()=>{Array.from(n).forEach(yr),n.clear(),o=[],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(),S(await c(y)||((f=y.getState)===null||f===void 0?void 0:f.call(y))||oe(m))):null},x=()=>{s==null||s.disconnect(),s=null},D=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=D(c);if(!m){c.scrollIntoView({block:"center",inline:"nearest"});return}const f=m.scrollLeft,y=m.getBoundingClientRect(),E=c.getBoundingClientRect(),k=E.top-y.top+m.scrollTop-m.clientHeight/2+E.height/2,P=Math.max(0,m.scrollHeight-m.clientHeight),z=Math.max(0,Math.min(k,P));typeof m.scrollTo=="function"?m.scrollTo({top:z,left:f,behavior:"auto"}):(m.scrollTop=z,m.scrollLeft=f),m.scrollLeft=f},$=(c,m=!0)=>{const f=u();if(!o.length)return b(),l;const y=(c%o.length+o.length)%o.length;o.forEach(k=>{k.element.classList.remove(f.activeClassName||"flyfish-search-match--active")});const E=o[y];return E.element.classList.add(f.activeClassName||"flyfish-search-match--active"),l.currentIndex=y,b(),m&&ie(E.element),l},H=(c,m,f,y)=>{var E;const k=e();if(!k)return;const P=u(),z=c.data;let V=0,A;const M=c.ownerDocument.createDocumentFragment();let L=!1;for(m.lastIndex=0;(A=m.exec(z))&&y.length<f;){if(!A[0]){m.lastIndex+=1;continue}A.index>V&&M.appendChild(c.ownerDocument.createTextNode(z.slice(V,A.index)));const O=c.ownerDocument.createElement("mark");O.className=P.className||"flyfish-search-match",O.textContent=A[0],O.dataset.searchMatchId=`viewer-search-match-${y.length+1}`,n.add(O),M.appendChild(O),L=!0;const C=et(c.parentElement,a,k);y.push({id:O.dataset.searchMatchId,index:y.length,text:A[0],anchor:C,line:C==null?void 0:C.line,page:C==null?void 0:C.page,element:O}),V=A.index+A[0].length}L&&(V<z.length&&M.appendChild(c.ownerDocument.createTextNode(z.slice(V))),(E=c.parentNode)===null||E===void 0||E.replaceChild(M,c))},R=()=>{x();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(R,0);return}setTimeout(R,0)},ae=async(c,m=0)=>{const f=fr(c),y=u();l.query=f,x(),g=!0;try{d();const E=e();if(!f||y.enabled===!1||!E){const L=await w(O=>{var C;return(C=O.clear)===null||C===void 0?void 0:C.call(O)},f);return L||l}const k=await w(L=>L.search(f,y),f);if(k)return k;await(r==null?void 0:r());const P=e();if(!P)return l;a=fe(P);const z=wr(f,y),V=Math.max(1,y.maxMatches||1e3),A=[],M=xr(P);for(const L of M){if(A.length>=V)break;H(L,z,V,A)}o=A,b(),A.length&&$(m,!0)}finally{g=!1,F()}return l},p=()=>{var c;const m=u();!l.query||g||m.enabled===!1||(h!==null&&clearTimeout(h),h=setTimeout(()=>{h=null,ae(l.query,Math.max(0,l.currentIndex))},(c=m.debounce)!==null&&c!==void 0?c:180))};return{get anchors(){return a},state:l,getInternalMatches:()=>o,observe(){v=!0,R()},async refreshAnchors(){return await(r==null?void 0:r()),a=fe(e()||null),a},search:c=>ae(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))})||$(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))})||$(l.currentIndex-1),clear:async()=>{l.query="",x(),g=!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{g=!1,F()}},destroy(){v=!1,x(),h!==null&&(clearTimeout(h),h=null),d()}}};ne(),Y();var vt=e=>ct(e),_r=({root:e,anchors:t})=>tt(e||null,t),kr=({root:e,searchTarget:t,searchOptions:r,waitForDomUpdate:i,preferredScrollContainer:a,getAiOptions:o,onSearchChange:n,onLocationChange:l})=>{let s=null;const v=hr(t,Ar({root:e,options:r,waitForDomUpdate:i,preferredScrollContainer:()=>{var h,g;return(g=(h=a==null?void 0:a())!==null&&h!==void 0?h:s==null?void 0:s.getScrollContainer())!==null&&g!==void 0?g:null}}));return s=Rr({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:o,onSearchChange:n,onLocationChange:l}),{...s,destroyDocumentFeatures:v.destroy}},Tr=({state:e,onChange:t})=>{const r=vt(e);return t==null||t(r),!0},Dr=({anchor:e,onChange:t})=>(t==null||t(e),!0),Rr=({root:e,searchController:t,getAiOptions:r,onSearchChange:i,onLocationChange:a})=>{const o=()=>e()||null,n=()=>t.getAnchors(),l=()=>vt(t.getSearchState()),s=()=>{const d=l();return Tr({state:d,onChange:i}),d},v=()=>_r({root:o(),anchors:n()}),h=()=>{const d=v();return Dr({anchor:d,onChange:a}),d},g=d=>(d==null?void 0:d.notify)===!1?v():h(),u=async d=>{t.observe();const w=await t.refreshAnchors();return g(d),w},b=async d=>(n().length||await u(d),n()),S=(d,w)=>{const x=rt(o(),d);return g(w),x};return{refreshDocumentIndex:u,async clearDocumentState(){return await t.clear(),l()},getScrollContainer(){return st(o())},async searchDocument(d){return await t.search(d),s()},async clearDocumentSearch(){return await t.clear(),s()},async nextSearchResult(){return await t.next(),h(),s()},async previousSearchResult(){return await t.previous(),h(),s()},getSearchState:l,async collectDocumentAnchors(d){return await u(d),n()},getCurrentDocumentAnchor:v,scrollToLoadedAnchor:S,async scrollToAnchor(d,w){return await b(w),S(d,w)},async scrollToLine(d,w){return await b(w),S(d,w)},getDocumentTextChunks(d){return $e(n(),d!=null?d:r==null?void 0:r())}}},K,Q,gt,ht,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},gt=()=>{const e=new Set;return{emit(){e.forEach(t=>t())},subscribe(t){return e.add(t),()=>{e.delete(t)}}}},ht=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,a=null,o=null;const n=ve(),l=()=>{a==null||a(),a=null,i=null,Q(n,null)},s=()=>{var g,u;if((t==null?void 0:t())===!1)return l(),null;const b=nt(e());return b!==i&&(a==null||a(),i=b,a=((g=b==null?void 0:b.subscribe)===null||g===void 0?void 0:g.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=()=>{o==null||o.disconnect(),o=null},h=async(g,u)=>{const b=s();return!b||r&&await r(g)===!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 g=e(),u=ht(g);if(!g||!u){s();return}o=new u(()=>{s()}),o.observe(g,{childList:!0,subtree:!0}),s()},clearProvider:l,getState(){return K(n)},zoomIn:()=>h("zoom-in",g=>g.zoomIn()),zoomOut:()=>h("zoom-out",g=>g.zoomOut()),resetZoom:()=>h("zoom-reset",g=>g.resetZoom()),destroy(){v(),l()}}}}));xe();var wt=e=>e.replace(/&/g,"&amp;").replace(/"/g,"&quot;").replace(/</g,"&lt;").replace(/>/g,"&gt;"),Pr=`
2
2
  * { box-sizing: border-box; }
3
3
  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; }
4
4
  body { padding: 24px; }
@@ -266,24 +266,24 @@
266
266
  box-shadow: none !important;
267
267
  }
268
268
  }
269
- `,Rr=()=>Array.from(document.querySelectorAll('style, link[rel="stylesheet"]')).map(e=>e instanceof HTMLStyleElement?`<style>${e.textContent||""}</style>`:e.href?`<link rel="stylesheet" href="${mt(e.href)}" />`:"").filter(Boolean).join(`
270
- `),ft=({contentHtml:e,includeDocumentStyles:t=!0,printStyle:r="",title:n,watermarkInlineStyle:i=""})=>{const o=i?`<div class="viewer-export-watermark" style="${i}"></div>`:"",l=t?Rr():"",a=r?`<style data-viewer-print-style>${r}</style>`:"";return`<!doctype html>
269
+ `,zr=()=>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(`
270
+ `),bt=({contentHtml:e,includeDocumentStyles:t=!0,printStyle:r="",title:i,watermarkInlineStyle:a=""})=>{const o=a?`<div class="viewer-export-watermark" style="${a}"></div>`:"",n=t?zr():"",l=r?`<style data-viewer-print-style>${r}</style>`:"";return`<!doctype html>
271
271
  <html lang="zh-CN">
272
272
  <head>
273
273
  <meta charset="utf-8" />
274
274
  <meta name="viewport" content="width=device-width,initial-scale=1" />
275
- <title>${mt(n)}</title>
276
- ${l}
277
- <style>${Fr}</style>
275
+ <title>${wt(i)}</title>
276
+ ${n}
277
+ <style>${Pr}</style>
278
278
  </head>
279
279
  <body>
280
280
  <main class="viewer-export-shell">
281
281
  <div class="viewer-export-content">${e}</div>
282
282
  ${o}
283
283
  </main>
284
- ${a}
284
+ ${l}
285
285
  </body>
286
- </html>`},xe=(e,t)=>{const r=URL.createObjectURL(e),n=document.createElement("a");n.href=r,n.download=t,n.rel="noopener",document.body.appendChild(n),n.click(),n.remove(),window.setTimeout(()=>URL.revokeObjectURL(r),4e3)},Ir=(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()},kr=(e,t)=>{const r=Array.from(e.querySelectorAll("canvas"));Array.from(t.querySelectorAll("canvas")).forEach((n,i)=>{const o=r[i];if(o)try{const l=document.createElement("img");l.src=o.toDataURL("image/png"),l.alt="rendered canvas",l.style.maxWidth="100%",l.style.display="block",l.style.margin="0 auto",n.replaceWith(l)}catch{}})},Tr=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 n=r.requestAnimationFrame.bind(r);n(()=>{n(()=>t())})}),Vr=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(n=>{r.addEventListener("load",()=>n(),{once:!0}),r.addEventListener("error",()=>n(),{once:!0})})}}))},Lr=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(n=>{r.addEventListener("load",()=>n(),{once:!0}),r.addEventListener("error",()=>n(),{once:!0}),e.setTimeout(()=>n(),1500)})}})),await new Promise(r=>{e.requestAnimationFrame(()=>{e.requestAnimationFrame(()=>r())})})},ht=async(e,t)=>t.mode!=="print"||!(e!=null&&e.printStyle)?"":typeof e.printStyle=="function"?await e.printStyle(t):e.printStyle,zr=async(e,t)=>{var r;await((r=t==null?void 0:t.beforeSnapshot)===null||r===void 0?void 0:r.call(t)),await Tr(),await Vr(e)},Or=async({source:e,mode:t="export",title:r,adapter:n=null,watermarkInlineStyle:i=""})=>{const o={mode:t,title:r},l=n==null?void 0:n.toHtml;if(l){const c=await l(o),p=await ht(n,o);return ft({contentHtml:c,includeDocumentStyles:n.includeDocumentStyles!==!1,printStyle:p,title:r,watermarkInlineStyle:i})}await zr(e,n);const a=e.cloneNode(!0);kr(e,a);const s=await ht(n,o);return ft({contentHtml:a.innerHTML,printStyle:s,title:r,watermarkInlineStyle:i})},j="preview.bin",A=e=>e.trim().replace(/^\./,"").toLowerCase(),Cr=e=>{try{return decodeURIComponent(e)}catch{return e}},te=e=>{const t=e.split(/[?#]/)[0]||e,r=t.lastIndexOf(".");return r===-1?"":A(t.slice(r+1))},U=(e,t=j)=>{const r=(e||"").split(/[?#]/)[0].trim();if(!r)return t;const n=Math.max(r.lastIndexOf("/"),r.lastIndexOf("\\"));return Cr(n===-1?r:r.slice(n+1))},Dr=e=>e.file?"file":e.buffer?"buffer":e.url?"url":"empty",wt=e=>e&&"name"in e&&typeof e.name=="string"?e.name:void 0,Mr=({filename:e,file:t,url:r,fallback:n=""})=>{if(e)return U(e,n);const i=wt(t);return i?U(i,n):r?U(r,n):n},gt=e=>{const t=Dr(e),r=U(e.filename||wt(e.file)||e.url,e.type?`preview.${A(e.type)}`:j),n=A(e.type||te(r)),i=typeof e.size=="number"?e.size:e.file?e.file.size:e.buffer?e.buffer.byteLength:void 0;return{kind:t,filename:r,extension:n,url:e.url,file:e.file,buffer:e.buffer,size:i}},bt=(e,t=j)=>{if(typeof File!="undefined"&&e instanceof File)return e;const r=U(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.")},yt=async e=>typeof e.arrayBuffer=="function"?e.arrayBuffer():new Promise((t,r)=>{const n=new FileReader;n.onload=i=>{var o;const l=(o=i.target)===null||o===void 0?void 0:o.result;if(l instanceof ArrayBuffer){t(l);return}r(new Error("Failed to read file as ArrayBuffer."))},n.onerror=i=>r(i),n.readAsArrayBuffer(e)}),xt="file-viewer-preview",Ee="preview",Et=j,Pr=e=>e&&"name"in e&&typeof e.name=="string"?e.name:"",Nr=e=>e&&typeof e.type=="string"?e.type:"",Hr=({buffer:e=null,file:t=null,url:r=null,filename:n=null,mimeType:i=null}={})=>({buffer:e,file:t,url:r,filename:n,mimeType:i||Nr(t)||null}),se=(e,t=Ee)=>(e==null?void 0:e.filename)||t,$r=(e,t=Ee)=>{var r;return Hr({buffer:e==null?void 0:e.buffer,file:e==null?void 0:e.file,url:e==null?void 0:e.url,filename:se(e,t),mimeType:(r=e==null?void 0:e.file)===null||r===void 0?void 0:r.type})},Br=(e,t="preview")=>e.filename||Pr(e.file)||t,Z=({filename:e,source:t,fallback:r=xt})=>e||(t?Br(t,""):"")||r,Ur=e=>!!e.buffer||!!e.file||!!e.url,_e=async(e,t)=>e?await e(t):!0,_t=async(e,{source:t,title:r,filename:n,adapter:i=null,watermarkInlineStyle:o})=>{if(!t)throw new Error("当前没有可导出的预览内容");return Or({source:t,mode:e,title:Z({filename:r||n,fallback:xt}),adapter:i,watermarkInlineStyle:o})},Zr=async({source:e,filename:t,beforeOperation:r,throwOnMissingSource:n=!0})=>{var i;if(!Ur(e)){if(n)throw new Error("当前没有可下载的源文件");return!1}if(!await _e(r,"download"))return!1;const o=Z({filename:t,source:e,fallback:Et});return e.buffer?(xe(new Blob([e.buffer],{type:e.mimeType||((i=e.file)===null||i===void 0?void 0:i.type)||"application/octet-stream"}),o),!0):e.file?(xe(e.file,o),!0):(Ir(e.url,o),!0)},Wr=async({download:e=!0,filename:t,beforeOperation:r,...n})=>{if(!await _e(r,"export-html"))return"";const i=await _t("export",{...n,filename:t});if(e!==!1){const o=Z({filename:t||n.title,fallback:Ee});xe(new Blob([i],{type:"text/html;charset=utf-8"}),`${o}.rendered.html`)}return i},jr=async({autoPrint:e=!0,beforeOperation:t,openWindow:r,printAvailable:n=!0,printWindow:i,...o})=>{if(!n)throw new Error("当前文件类型不支持完整打印,请下载原文件后在本地应用中打印");if(!await _e(t,"print"))return!1;const l=await _t("print",o),a=i||(r==null?void 0:r())||(typeof window!="undefined"?window.open("","_blank"):null);if(!a)throw new Error("浏览器拦截了打印窗口");return a.document.open(),a.document.write(l),a.document.close(),a.focus(),await Lr(a),e!==!1&&a.print(),!0},Se="__flyfish_file_viewer_auto_renderer_presets__",St=()=>{const e=globalThis;return e[Se]||(e[Se]={version:0,presets:new Map}),e[Se]},qr=e=>({...e,extensions:e.extensions.map(A)}),de=(e=B)=>{const t=new Map,r=new Map,n=i=>{const o=qr(i),l=t.get(o.id);l&&l.extensions.forEach(a=>{var s;((s=r.get(a))===null||s===void 0?void 0:s.id)===l.id&&r.delete(a)}),t.set(o.id,o),o.extensions.forEach(a=>{const s=r.get(a);if(s&&s.id!==o.id)throw new Error(`File extension "${a}" is already registered by renderer "${s.id}".`);r.set(a,o)})};return e.forEach(n),{register:n,unregister(i){const o=t.get(i);return o?(o.extensions.forEach(l=>{var a;((a=r.get(l))===null||a===void 0?void 0:a.id)===i&&r.delete(l)}),t.delete(i),!0):!1},getById(i){return t.get(i)},getByExtension(i){return r.get(A(i))},hasExtension(i){return r.has(A(i))},list(){return Array.from(t.values())},listExtensions(){return Array.from(r.keys()).sort()}}},Xr=e=>!!e&&typeof e=="object"&&!Array.isArray(e)&&Array.isArray(e.renderers),Ae=e=>e?Array.isArray(e)?e.flatMap(t=>Ae(t)):Xr(e)?Ae(e.renderers):[e]:[],Yr=()=>Array.from(St().presets.values()).map(e=>e.input),Jr=()=>St().version,Gr=async({registry:e,plugins:t,registerHandler:r})=>{var n,i,o;for(const l of t)(n=l.definitions)===null||n===void 0||n.forEach(a=>{e.register(a)}),(i=l.handlers)===null||i===void 0||i.forEach(a=>{r==null||r(a)}),await((o=l.install)===null||o===void 0?void 0:o.call(l,{registry:e,registerHandler:r}));return e},At=({registry:e=de(B),handlers:t,fallbackHandler:r,fallbackKey:n="error"})=>{const i=Array.from(t).reduce((s,c)=>(s.set(c.rendererId,c.handler),s),new Map),o=new Map,l=[];e.list().forEach(s=>{const c=i.get(s.id);if(!c){l.push(s.id);return}s.extensions.forEach(p=>{o.set(A(p),c)})}),r&&n&&o.set(A(n),r);const a=s=>o.get(A(s));return{handlersByRendererId:i,handlersByExtension:o,missingRendererIds:l,get:a,resolve(s){return a(s)||(n?a(n):void 0)},has(s){return o.has(A(s))},listExtensions(){return Array.from(o.keys()).sort()}}},Ft=Object.freeze({download:!1,print:!1,exportHtml:!1,zoom:!1,zoomIn:!1,zoomOut:!1,zoomReset:!1}),q=e=>e===!0||e==="adapter"||e==="provider",Kr=(e,t)=>{var r,n,i,o,l,a,s,c;return e?{download:((r=e.capabilities)===null||r===void 0?void 0:r.download)!==!1,print:q((n=e.capabilities)===null||n===void 0?void 0:n.print),exportHtml:q((i=e.capabilities)===null||i===void 0?void 0:i.exportHtml),zoom:q((o=e.capabilities)===null||o===void 0?void 0:o.zoom),zoomIn:q((l=e.capabilities)===null||l===void 0?void 0:l.zoom),zoomOut:q((a=e.capabilities)===null||a===void 0?void 0:a.zoom),zoomReset:q((s=e.capabilities)===null||s===void 0?void 0:s.zoom),...(c=t==null?void 0:t.getAvailability)===null||c===void 0?void 0:c.call(t)}:{...Ft}},Qr=e=>({...Ft,download:A(e).length>0}),ei=["pptx","pptm","potx","potm","ppsx","ppsm","ofd","dxf","dwg","dwf","dwfx","xps","excalidraw","drawio","dio","mermaid","mmd","plantuml","puml","umd","md","markdown","olb","dra",...Pe,...Ne],ti=["xlsx","xltx","xlsm","xlsb","xls","xlt","xltm","csv","ods","fods","numbers",...De,"eml","msg","epub","mp4","mp3","mpeg","wav","ogg","oga","opus","m4a","aac","flac","weba",...Me],en={"load-start":"onLoadStart","load-complete":"onLoadComplete","unload-start":"onUnloadStart","unload-complete":"onUnloadComplete"},tn={download:"下载原始文件",print:"打印完整渲染内容","export-html":"导出渲染 HTML","zoom-in":"放大预览","zoom-out":"缩小预览","zoom-reset":"还原预览比例"},rn=({phase:e,version:t,source:r,filename:n,file:i,url:o,size:l,bufferSize:a,startedAt:s,duration:c,timestamp:p,reason:h})=>{var m;const y=U((i==null?void 0:i.name)||n||o||""),S=p!=null?p:Date.now();return{phase:e,type:te(y),filename:y,source:r,url:o,file:i||void 0,size:(m=l!=null?l:i==null?void 0:i.size)!==null&&m!==void 0?m:a,version:t,timestamp:S,duration:c!=null?c:e==="load-complete"&&typeof s=="number"?S-s:void 0,reason:h}},Rt=({phase:e,source:t,version:r,startedAt:n,timestamp:i,reason:o})=>{const l=i!=null?i:Date.now();return rn({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:l,duration:e.endsWith("complete")&&typeof n=="number"?l-n:void 0,reason:o})},nn=(e,t,r=Date.now())=>{const{phase:n,...i}=t;return{...i,operation:e,label:tn[e],timestamp:r}},on=e=>en[e],an=async(e,t,r)=>{const n=t==null?void 0:t[on(e.phase)];if(n)try{await n(e)}catch(i){r==null||r(i,e)}},ln=(e,t)=>{const r=e==null?void 0:e.toolbar;if(!r||typeof r!="object")return[e==null?void 0:e.beforeOperation];const n=t==="download"?r.beforeDownload:t==="print"?r.beforePrint:t==="export-html"?r.beforeExportHtml:void 0;return[e==null?void 0:e.beforeOperation,r.beforeOperation,n]},sn=(e,t)=>(e==null?void 0:e[t])!==!1,dn=(e,t)=>!e||typeof e!="object"?!0:sn(e.permissions,t),cn=async({context:e,options:t,onBefore:r,onCancel:n,onError:i})=>{r==null||r(e);try{if(!dn(t==null?void 0:t.toolbar,e.operation))return n==null||n(e),!1;for(const o of ln(t,e.operation))if(o&&await o(e)===!1)return n==null||n(e),!1}catch(o){return i==null||i(o,e),n==null||n(e),!1}return!0},ri=Object.freeze({downloading:"正在下载文件资源...",streamingPdf:"正在建立 PDF 流式预览...",reading:"正在解析文件内容..."}),It=Object.freeze({accent:"#5f6f82",soft:"rgba(95, 111, 130, 0.12)",badge:"DOC",label:"文件内容",hint:"正在整理内容结构并生成预览。"}),un="支持 Office、PDF、OFD、Typst、压缩包、邮件、OLB/DRA、CAD、地理数据、3D 模型、Excalidraw、draw.io、EPUB、UMD、Markdown、代码/文本、图片、音视频、字体和数据资产的在线预览",vn=e=>{const t=A(e);return t?`.${t}`:"当前"},pn={"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"},mn=new Set(["office-word-openxml","office-word-binary","office-presentation","open-document","spreadsheet-openxml","pdf","ofd"]),fn=new Set(["image","markdown","code","video","audio"]),hn=new Set(["typst","archive","eda","cad","model","geo","drawing","mindmap","data-asset"]),wn=e=>mn.has(e.id)?{packageName:"@file-viewer/preset-office",vitePreset:"office",label:"Office preset"}:hn.has(e.id)?{packageName:"@file-viewer/preset-engineering",vitePreset:"engineering",label:"Engineering preset"}:fn.has(e.id)?{packageName:"@file-viewer/preset-lite",vitePreset:"lite",label:"Lite preset"}:{packageName:"@file-viewer/preset-all",vitePreset:"all",label:"Full preset"},gn=(e="")=>{const t=A(e),r=B.find(i=>i.extensions.map(A).includes(t));if(!r)return null;const n=wn(r);return{extension:t,rendererId:r.id,rendererLabel:r.label,rendererCategory:r.category,rendererPackage:pn[r.id],presetPackage:n.packageName,vitePreset:n.vitePreset,presetLabel:n.label}},kt=({state:e,extension:t="",title:r,message:n,description:i,theme:o=It,recoverable:l})=>({state:e,extension:A(t),title:r,message:n,description:i,theme:o,recoverable:l}),Tt=(e="",t=It)=>{const r=vn(e),n=gn(e);if(n){const i=n.rendererPackage?`;如果需要极致裁剪,也可以只安装 ${n.rendererPackage}`:"";return kt({state:"unsupported",extension:e,title:"需要装配预览能力",message:`${r} 格式已在支持矩阵中,但当前项目尚未装配 ${n.rendererLabel} renderer。`,description:`推荐安装 ${n.presetPackage} 并启用 @file-viewer/vite-plugin(preset: '${n.vitePreset}' 或 preset: 'auto')${i},也可以通过 options.renderers 手动传入对应 renderer。`,theme:t,recoverable:!0})}return kt({state:"unsupported",extension:e,title:"暂不支持在线预览",message:`不支持${r}格式的在线预览,请下载后预览或转换为支持的格式。`,description:un,theme:t,recoverable:!0})},bn=()=>{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}}},yn=(e=bn())=>({requestController:e,getCurrentVersion:()=>e.version,isCurrentRequest:t=>e.isCurrent(t)}),xn=()=>({session:null,exportAdapter:null}),re=(e,t)=>{var r,n;return"session"in t&&(e.session=(r=t.session)!==null&&r!==void 0?r:null),"exportAdapter"in t&&(e.exportAdapter=(n=t.exportAdapter)!==null&&n!==void 0?n:null),e},En=(e,t)=>({rendered:e,destroy:()=>t?t():Vt(e)}),Vt=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()},_n=({source:e,options:t,registerExportAdapter:r,renderContext:n})=>({filename:e.filename,url:e.url,streamUrl:e.url,options:t,registerExportAdapter:r,...n}),Lt=({handler:e,getTarget:t=i=>i.surface.container,createContext:r=_n,destroy:n})=>async i=>{const{source:o}=i;if(!o.buffer)throw new Error("FileRenderHandler renderer requires an ArrayBuffer source.");const l=t(i),a=await e(o.buffer,l,o.extension,r(i));return En(a,()=>n?n(a,i):Vt(a))},Sn=({definitions:e=B,handlers:t,getTarget:r,createContext:n,destroy:i})=>{const o=de(e),l=At({registry:o,handlers:t});return{registry:de(o.list().map(a=>{const s=l.handlersByRendererId.get(a.id);return s?{...a,load:Lt({handler:s,getTarget:r,createContext:n,destroy:i})}:a})),dispatcher:l,missingRendererIds:l.missingRendererIds}},An=Qt({default:()=>Fn});async function Fn(e,t,r){const n=await Pt(e,r);let i=1,o=0;const l=ut(),a=document.createElement("div");a.className="image-viewer",a.dataset.viewerZoomProvider="image";const s=document.createElement("div");s.className="image-stage";const c=document.createElement("img");c.alt="图片",c.src=n,s.append(c),a.append(s);const p=Ht(n),h=()=>p.open();c.addEventListener("click",h),document.body.append(p.element);const m=()=>{o=a.clientHeight||0,Fe(c,o,i),l.emit()},y=new ResizeObserver(m);y.observe(a);const S=()=>({scale:i,label:`${Math.round(i*100)}%`,canZoomIn:i<5,canZoomOut:i>.1,canReset:i!==1,minScale:.1,maxScale:5}),d=b=>(i=Nt(b),Fe(c,o,i),l.emit(),S());return et(a,{zoomIn:()=>d(i+.15),zoomOut:()=>d(i-.15),resetZoom:()=>d(1),setZoom:d,getState:S,subscribe:l.subscribe}),t.replaceChildren(Ct(),a),m(),{$el:t,unmount(){tt(a),y.disconnect(),c.removeEventListener("click",h),p.destroy(),t.replaceChildren()}}}var zt,Ot,Ct,Dt,Mt,Pt,Nt,Fe,Ht,Rn=$((()=>{G(),zt={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"},Ot=`
286
+ </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)},Ir=(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()},Lr=(e,t)=>{const r=Array.from(e.querySelectorAll("canvas"));Array.from(t.querySelectorAll("canvas")).forEach((i,a)=>{const o=r[a];if(o)try{const n=document.createElement("img");n.src=o.toDataURL("image/png"),n.alt="rendered canvas",n.style.maxWidth="100%",n.style.display="block",n.style.margin="0 auto",i.replaceWith(n)}catch{}})},Cr=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 Cr(),await Or(e)},Hr=async({source:e,mode:t="export",title:r,adapter:i=null,watermarkInlineStyle:a=""})=>{const o={mode:t,title:r},n=i==null?void 0:i.toHtml;if(n){const v=await n(o),h=await yt(i,o);return bt({contentHtml:v,includeDocumentStyles:i.includeDocumentStyles!==!1,printStyle:h,title:r,watermarkInlineStyle:a})}await Mr(e,i);const l=e.cloneNode(!0);Lr(e,l);const s=await yt(i,o);return bt({contentHtml:l.innerHTML,printStyle:s,title:r,watermarkInlineStyle:a})},G="preview.bin",_=e=>e.trim().replace(/^\./,"").toLowerCase(),Nr=e=>{try{return decodeURIComponent(e)}catch{return e}},ee=e=>{const t=e.split(/[?#]/)[0]||e,r=t.lastIndexOf(".");return r===-1?"":_(t.slice(r+1))},U=(e,t=G)=>{const r=(e||"").split(/[?#]/)[0].trim();if(!r)return t;const i=Math.max(r.lastIndexOf("/"),r.lastIndexOf("\\"));return Nr(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,Br=({filename:e,file:t,url:r,fallback:i=""})=>{if(e)return U(e,i);const a=xt(t);return a?U(a,i):r?U(r,i):i},Et=e=>{const t=Wr(e),r=U(e.filename||xt(e.file)||e.url,e.type?`preview.${_(e.type)}`:G),i=_(e.type||ee(r)),a=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:a}},St=(e,t=G)=>{if(typeof File!="undefined"&&e instanceof File)return e;const r=U(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=a=>{var o;const n=(o=a.target)===null||o===void 0?void 0:o.result;if(n instanceof ArrayBuffer){t(n);return}r(new Error("Failed to read file as ArrayBuffer."))},i.onerror=a=>r(a),i.readAsArrayBuffer(e)}),da="zh-CN",Ur={"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.preview.title":"压缩包内预览","archive.preview.chooseFile":"请选择一个文件","archive.preview.downloadFile":"下载文件","archive.error.title":"压缩包预览提示","archive.stats.summary":"{count} 个文件 · {size} · {previewable} 个可直接预览","archive.warning.encrypted":"检测到加密内容,当前在线预览不接收密码,建议下载后本地解压。","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":"正在准备音频资源和播放控件。"},jr={"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.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. Online preview does not accept passwords; download and extract it locally.","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":Ur,"en-US":jr}),Zr=()=>{var e;if(typeof navigator!="undefined")return((e=navigator.languages)===null||e===void 0?void 0:e[0])||navigator.language},$r=e=>{const t=!e||e==="auto"?Zr():e;return String(t||"zh-CN").toLowerCase().startsWith("zh")?"zh-CN":"en-US"},Gr=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)},_t=e=>{var t;return $r(((t=e==null?void 0:e.i18n)===null||t===void 0?void 0:t.locale)||(e==null?void 0:e.locale))},qr=(e,t={})=>e.replace(/\{([a-zA-Z0-9_.-]+)\}/g,(r,i)=>{const a=t[i];return a==null?"":String(a)}),I=(e,t,r={})=>{const i=_t(e),a=Gr(e);return qr((typeof a=="function"?a(t,r,i):a==null?void 0:a[t])||At[i][t]||At["zh-CN"][t],r)},kt="file-viewer-preview",Se="preview",Tt=G,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:a=null}={})=>({buffer:e,file:t,url:r,filename:i,mimeType:a||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,j=({filename:e,source:t,fallback:r=kt})=>e||(t?Qr(t,""):"")||r,ei=e=>!!e.buffer||!!e.file||!!e.url,Fe=async(e,t)=>e?await e(t):!0,Dt=async(e,{source:t,title:r,filename:i,adapter:a=null,watermarkInlineStyle:o,i18n:n})=>{if(!t)throw new Error(I(n,"error.noExportContent"));return Hr({source:t,mode:e,title:j({filename:r||i,fallback:kt}),adapter:a,watermarkInlineStyle:o})},ti=async({source:e,filename:t,beforeOperation:r,i18n:i,throwOnMissingSource:a=!0})=>{var o;if(!ei(e)){if(a)throw new Error(I(i,"error.noDownloadSource"));return!1}if(!await Fe(r,"download"))return!1;const n=j({filename:t,source:e,fallback:Tt});return e.buffer?(Ee(new Blob([e.buffer],{type:e.mimeType||((o=e.file)===null||o===void 0?void 0:o.type)||"application/octet-stream"}),n),!0):e.file?(Ee(e.file,n),!0):(Ir(e.url,n),!0)},ri=async({download:e=!0,filename:t,beforeOperation:r,i18n:i,...a})=>{if(!await Fe(r,"export-html"))return"";const o=await Dt("export",{...a,filename:t,i18n:i});if(e!==!1){const n=j({filename:t||a.title,fallback:Se});Ee(new Blob([o],{type:"text/html;charset=utf-8"}),`${n}.rendered.html`)}return o},ii=async({autoPrint:e=!0,beforeOperation:t,i18n:r,openWindow:i,printAvailable:a=!0,printWindow:o,...n})=>{if(!a)throw new Error(I(r,"error.printUnavailable"));if(!await Fe(t,"print"))return!1;const l=await Dt("print",{...n,i18n:r}),s=o||(i==null?void 0:i())||(typeof window!="undefined"?window.open("","_blank"):null);if(!s)throw new Error(I(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__",_e=()=>{const e=globalThis;return e[Ae]||(e[Ae]={version:0,presets:new Map}),e[Ae]},ai=e=>({...e,extensions:e.extensions.map(_)}),ce=(e=B)=>{const t=new Map,r=new Map,i=a=>{const o=ai(a),n=t.get(o.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(o.id,o),o.extensions.forEach(l=>{const s=r.get(l);if(s&&s.id!==o.id)throw new Error(`File extension "${l}" is already registered by renderer "${s.id}".`);r.set(l,o)})};return e.forEach(i),{register:i,unregister(a){const o=t.get(a);return o?(o.extensions.forEach(n=>{var l;((l=r.get(n))===null||l===void 0?void 0:l.id)===a&&r.delete(n)}),t.delete(a),!0):!1},getById(a){return t.get(a)},getByExtension(a){return r.get(_(a))},hasExtension(a){return r.has(_(a))},list(){return Array.from(t.values())},listExtensions(){return Array.from(r.keys()).sort()}}},oi=e=>!!e&&typeof e=="object"&&!Array.isArray(e)&&Array.isArray(e.renderers),ke=e=>e?Array.isArray(e)?e.flatMap(t=>ke(t)):oi(e)?ke(e.renderers):[e]:[],ni=()=>Array.from(_e().presets.values()).map(e=>e.input),li=e=>{var t;const r=_e(),i=r.presets.get(e);if(i)return i.input;const a=e.startsWith("@file-viewer/preset-")?e:`@file-viewer/preset-${e}`;return(t=Array.from(r.presets.values()).find(o=>o.packageName===a||o.id===a))===null||t===void 0?void 0:t.input},si=()=>_e().version,Te=e=>e?typeof e=="string"?!0:Array.isArray(e)?e.some(t=>Te(t)):!1:!1,De=e=>{if(!e)return[];if(typeof e=="string"){const t=li(e);return t?[t]:[]}return Array.isArray(e)?e.flatMap(t=>De(t)):[e]},di=async({registry:e,plugins:t,registerHandler:r})=>{var i,a,o;for(const n of t)(i=n.definitions)===null||i===void 0||i.forEach(l=>{e.register(l)}),(a=n.handlers)===null||a===void 0||a.forEach(l=>{r==null||r(l)}),await((o=n.install)===null||o===void 0?void 0:o.call(n,{registry:e,registerHandler:r}));return e},Rt=({registry:e=ce(B),handlers:t,fallbackHandler:r,fallbackKey:i="error"})=>{const a=Array.from(t).reduce((s,v)=>(s.set(v.rendererId,v.handler),s),new Map),o=new Map,n=[];e.list().forEach(s=>{const v=a.get(s.id);if(!v){n.push(s.id);return}s.extensions.forEach(h=>{o.set(_(h),v)})}),r&&i&&o.set(_(i),r);const l=s=>o.get(_(s));return{handlersByRendererId:a,handlersByExtension:o,missingRendererIds:n,get:l,resolve(s){return l(s)||(i?l(i):void 0)},has(s){return o.has(_(s))},listExtensions(){return Array.from(o.keys()).sort()}}},Pt=Object.freeze({download:!1,print:!1,exportHtml:!1,zoom:!1,zoomIn:!1,zoomOut:!1,zoomReset:!1}),q=e=>e===!0||e==="adapter"||e==="provider",ci=(e,t)=>{var r,i,a,o,n,l,s,v;return e?{download:((r=e.capabilities)===null||r===void 0?void 0:r.download)!==!1,print:q((i=e.capabilities)===null||i===void 0?void 0:i.print),exportHtml:q((a=e.capabilities)===null||a===void 0?void 0:a.exportHtml),zoom:q((o=e.capabilities)===null||o===void 0?void 0:o.zoom),zoomIn:q((n=e.capabilities)===null||n===void 0?void 0:n.zoom),zoomOut:q((l=e.capabilities)===null||l===void 0?void 0:l.zoom),zoomReset:q((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)}:{...Pt}},ui=e=>({...Pt,download:_(e).length>0}),ca=["pptx","pptm","potx","potm","ppsx","ppsm","ofd","dxf","dwg","dwf","dwfx","xps","excalidraw","drawio","dio","mermaid","mmd","plantuml","puml","umd","md","markdown","olb","dra",...Be,...Ue],ua=["xlsx","xltx","xlsm","xlsb","xls","xlt","xltm","csv","ods","fods","numbers",...Ne,"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:a,url:o,size:n,bufferSize:l,startedAt:s,duration:v,timestamp:h,reason:g})=>{var u;const b=U((a==null?void 0:a.name)||i||o||""),S=h!=null?h:Date.now();return{phase:e,type:ee(b),filename:b,source:r,url:o,file:a||void 0,size:(u=n!=null?n:a==null?void 0:a.size)!==null&&u!==void 0?u:l,version:t,timestamp:S,duration:v!=null?v:e==="load-complete"&&typeof s=="number"?S-s:void 0,reason:g}},zt=({phase:e,source:t,version:r,startedAt:i,timestamp:a,reason:o})=>{const n=a!=null?a: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:o})},vi=(e,t,r=Date.now(),i)=>{const{phase:a,...o}=t;return{...o,operation:e,label:I(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}},gi=e=>pi[e],hi=async(e,t,r)=>{const i=t==null?void 0:t[gi(e.phase)];if(i)try{await i(e)}catch(a){r==null||r(a,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:a})=>{r==null||r(e);try{if(!bi(t==null?void 0:t.toolbar,e.operation))return i==null||i(e),!1;for(const o of fi(t,e.operation))if(o&&await o(e)===!1)return i==null||i(e),!1}catch(o){return a==null||a(o,e),i==null||i(e),!1}return!0},pa=Object.freeze({downloading:"正在下载文件资源...",streamingPdf:"正在建立 PDF 流式预览...",reading:"正在解析文件内容..."}),It=Object.freeze({accent:"#5f6f82",soft:"rgba(95, 111, 130, 0.12)",badge:"DOC",label:"文件内容",hint:"正在整理内容结构并生成预览。"}),xi=e=>{const t=_(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"]),_i=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"},ki=(e="")=>{const t=_(e),r=B.find(a=>a.extensions.map(_).includes(t));if(!r)return null;const i=_i(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}},Lt=({state:e,extension:t="",title:r,message:i,description:a,theme:o=It,recoverable:n})=>({state:e,extension:_(t),title:r,message:i,description:a,theme:o,recoverable:n}),Ct=(e="",t=It,r)=>{const i=xi(e),a=ki(e);if(a){const o=_t(r),n=a.rendererPackage?o==="zh-CN"?`;如果需要极致裁剪,也可以只安装 ${a.rendererPackage}`:`; for a strict custom cut, install only ${a.rendererPackage}`:"";return Lt({state:"unsupported",extension:e,title:I(r,"state.unsupported.install.title"),message:I(r,"state.unsupported.install.message",{extension:i,rendererLabel:a.rendererLabel}),description:I(r,"state.unsupported.install.description",{extension:i,rendererLabel:a.rendererLabel,presetPackage:a.presetPackage,vitePreset:a.vitePreset,rendererTip:n}),theme:t,recoverable:!0})}return Lt({state:"unsupported",extension:e,title:I(r,"state.unsupported.title"),message:I(r,"state.unsupported.message",{extension:i}),description:I(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}}},Di=(e=Ti())=>({requestController:e,getCurrentVersion:()=>e.version,isCurrentRequest:t=>e.isCurrent(t)}),Ri=()=>({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},Pi=(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()},zi=({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=a=>a.surface.container,createContext:r=zi,destroy:i})=>async a=>{const{source:o}=a;if(!o.buffer)throw new Error("FileRenderHandler renderer requires an ArrayBuffer source.");const n=t(a),l=await e(o.buffer,n,o.extension,r(a));return Pi(l,()=>i?i(l,a):Ot(l))},Ii=({definitions:e=B,handlers:t,getTarget:r,createContext:i,destroy:a})=>{const o=ce(e),n=Rt({registry:o,handlers:t});return{registry:ce(o.list().map(l=>{const s=n.handlersByRendererId.get(l.id);return s?{...l,load:Vt({handler:s,getTarget:r,createContext:i,destroy:a})}:l})),dispatcher:n,missingRendererIds:n.missingRendererIds}},Li=ar({default:()=>Ci});async function Ci(e,t,r){const i=await Ut(e,r);let a=1,o=0;const n=gt(),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 h=Zt(i),g=()=>h.open();v.addEventListener("click",g),document.body.append(h.element);const u=()=>{o=l.clientHeight||0,Re(v,o,a),n.emit()},b=new ResizeObserver(u);b.observe(l);const S=()=>({scale:a,label:`${Math.round(a*100)}%`,canZoomIn:a<5,canZoomOut:a>.1,canReset:a!==1,minScale:.1,maxScale:5}),d=w=>(a=jt(w),Re(v,o,a),n.emit(),S());return at(l,{zoomIn:()=>d(a+.15),zoomOut:()=>d(a-.15),resetZoom:()=>d(1),setZoom:d,getState:S,subscribe:n.subscribe}),t.replaceChildren(Nt(),l),u(),{$el:t,unmount(){ot(l),b.disconnect(),v.removeEventListener("click",g),h.destroy(),t.replaceChildren()}}}var Mt,Ht,Nt,Wt,Bt,Ut,jt,Re,Zt,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"},Ht=`
287
287
  .image-viewer{position:relative;width:100%;height:100%;overflow:auto;background:#eef1f4;box-sizing:border-box}
288
288
  .image-stage{min-width:100%;min-height:100%;display:flex;align-items:center;justify-content:center;padding:24px;box-sizing:border-box}
289
289
  .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}
@@ -294,4 +294,4 @@
294
294
  .file-viewer[data-viewer-theme='dark'] .image-viewer{background:#101820}
295
295
  @media (prefers-color-scheme:dark){.file-viewer[data-viewer-theme='system'] .image-viewer{background:#101820}}
296
296
  @media (max-width:767px){.image-stage{padding:12px}.image-lightbox{padding:16px}.image-lightbox button{top:12px;right:12px}}
297
- `,Ct=()=>{const e=document.createElement("style");return e.textContent=Ot,e},Dt=e=>zt[(e||"").trim().toLowerCase()]||"image/*",Mt=async e=>await new Promise((t,r)=>{const n=new FileReader;n.onload=i=>{var o;const l=(o=i.target)===null||o===void 0?void 0:o.result;if(typeof l=="string"){t(l);return}r(new Error("Unable to read image data URL."))},n.onerror=()=>r(n.error||new Error("Unable to read image data URL.")),n.readAsDataURL(e)}),Pt=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 Mt(new Blob([e],{type:Dt(r)}))},Nt=e=>Math.min(5,Math.max(.1,Number(e.toFixed(2)))),Fe=(e,t,r)=>{if(t>0){e.style.height=`${Math.max(1,Math.round(t*r))}px`;return}e.style.height=`${r*100}%`},Ht=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 n=document.createElement("button");n.type="button",n.setAttribute("aria-label","Close image preview"),n.textContent="x";const i=()=>{t.hidden=!0};return n.addEventListener("click",i),r.addEventListener("click",i),t.addEventListener("click",o=>{o.target===t&&i()}),t.append(r,n),{element:t,open(){t.hidden=!1},destroy(){n.removeEventListener("click",i),r.removeEventListener("click",i),t.remove()}}}})),In=e=>({$el:e,unmount(){}}),Re=[{rendererId:"image",handler:async(e,t,r)=>{const{default:n}=await Promise.resolve().then(()=>(Rn(),An));return n(e,t,r)}}],$t=["image"],kn=Re.filter(e=>$t.includes(e.rendererId)),Tn=B.filter(e=>$t.includes(e.id)),Vn=e=>e==="none"?[]:e==="lite"?Tn:B,Ln=e=>e==="none"?[]:e==="lite"?kn:Re,zn=async(e,t,r)=>{const n=Tt(r),i=document.createElement("div");i.style.textAlign="center",i.style.marginTop="80px";const o=document.createElement("div");if(o.textContent=n.message,i.appendChild(o),n.description){const l=document.createElement("div");l.textContent=n.description,i.appendChild(l)}return t.replaceChildren(i),In(t)},Bt=(e={})=>{const t=e.builtinRenderers||"all",r=Sn({definitions:Vn(t),handlers:Ln(t)});return{...r,dispatcher:At({registry:r.registry,handlers:Re,fallbackHandler:zn})}},Ie=Bt(),Ut=Ie.registry,ni=Ie.dispatcher,ii=Ie.missingRendererIds,ce=e=>e.replace(/&/g,"&amp;").replace(/"/g,"&quot;").replace(/</g,"&lt;").replace(/>/g,"&gt;"),On=e=>`url("data:image/svg+xml;charset=utf-8,${encodeURIComponent(e)}")`,W=(e,t,r,n)=>Math.min(n,Math.max(r,typeof e=="number"&&Number.isFinite(e)?e:t)),Cn=e=>e?e===!0?{enabled:!0,text:"Flyfish Viewer"}:e.enabled===!1||!e.text&&!e.image?null:{enabled:!0,...e}:null,Dn=e=>{const t=W(e.gapX,260,96,800),r=W(e.gapY,180,80,800),n=W(e.width,e.image?160:220,32,t),i=W(e.height,(e.image,72),24,r),o=W(e.rotate,-24,-75,75),l=W(e.opacity,.18,.02,.8),a=(t-n)/2,s=(r-i)/2,c=t/2,p=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="${l}" transform="rotate(${o} ${c} ${p})"><image href="${ce(e.image)}" x="${a}" y="${s}" width="${n}" height="${i}" preserveAspectRatio="xMidYMid meet"/></g></svg>`;const h=ce(e.text||"Flyfish Viewer"),m=W(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="${l}" transform="rotate(${o} ${c} ${p})"><text x="${c}" y="${p}" text-anchor="middle" dominant-baseline="middle" fill="${ce(e.color||"#355070")}" font-family="${ce(e.fontFamily||"Aptos, 'Segoe UI', sans-serif")}" font-size="${m}" font-weight="700">${h}</text></g></svg>`},Mn=e=>{const t=Cn(e);return t?On(Dn(t)):""},Pn=e=>{const t=Mn(e);return t?`position:absolute;inset:0;pointer-events:none;background-image:${t};background-repeat:repeat;z-index:20;`:""};oe(),ye();var ne=async(e,t,r,n,i,o,l)=>{const a=Rt({phase:r,source:n,version:i,timestamp:Date.now(),startedAt:o,reason:l});await an(a,e.hooks,s=>{throw s}),t==null||t({type:r,payload:a})},Zt=(e,t)=>t.rendererMode==="replace"?de([]):e.registry?e.registry:Bt({builtinRenderers:t.builtinRenderers}).registry,Wt=e=>{const t=e.autoRenderers;return typeof t=="boolean"?t:(t==null?void 0:t.enabled)!==void 0?t.enabled:(e.rendererMode||"extend")!=="replace"},Nn=(e,t)=>{const r=e.ownerDocument,n=Tt(t),i=r.createElement("div");i.className="file-viewer-missing-renderer",i.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 o=r.createElement("div"),l=r.createElement("strong");l.textContent=n.message,l.style.cssText="display:block;margin-bottom:8px;color:#172033;font-size:16px;";const a=r.createElement("p");a.textContent=n.description||"当前内置 renderer 配置没有加载该格式。请安装并传入对应 @file-viewer/renderer-* 包,或使用 @file-viewer/preset-all。",a.style.cssText="max-width:520px;margin:0;",o.append(l,a),i.append(o),e.replaceChildren(i)},Hn=(e,t={})=>{let r=t.options||{},n=Zt(t,r),i,o=r.rendererMode||"extend",l=r.builtinRenderers||"all",a=Wt(r),s=-1,c=null;const p=xn(),h=yn(),m={anchors:{value:[]},state:ie()},y=async()=>{const v=r.rendererMode||"extend",g=r.renderers,E=r.builtinRenderers||"all",u=Wt(r),f=u?Jr():0;if(v===o&&g===i&&E===l&&u===a&&f===s)return;n=Zt(t,r),o=v,i=g,l=E,a=u,s=f;const w=[];u&&w.push(...Yr()),g&&w.push(g);const x=Ae(w);if(!x.length)return;await Gr({registry:n,plugins:x,registerHandler:L=>{const C=n.getById(L.rendererId);C&&n.register({...C,load:Lt({handler:L.handler,getTarget:z=>z.surface.container})})}})},S=()=>Rt({phase:"load-complete",source:c||gt({}),version:h.getCurrentVersion(),timestamp:Date.now()}),d=async v=>cn({context:nn(v,S()),options:r,onBefore:g=>{var E;(E=t.onEvent)===null||E===void 0||E.call(t,{type:"operation-before",payload:g})},onCancel:g=>{var E;(E=t.onEvent)===null||E===void 0||E.call(t,{type:"operation-cancel",payload:g})},onError(g){throw g}}),b=v=>typeof v=="string"?v:Pn(r.watermark),_=v=>{const g=v||(c==null?void 0:c.extension)||"",E=n.getByExtension(g);return E?Kr(E,p.session):Qr(g)},R=()=>{var v;(v=t.onEvent)===null||v===void 0||v.call(t,{type:"operation-availability-change",payload:_()})},P=(v=k.getState())=>{var g;(g=t.onEvent)===null||g===void 0||g.call(t,{type:"zoom-change",payload:v})},k=pt({root:()=>e,beforeZoom:d}),F=Er({root:()=>e,searchTarget:m,searchOptions:()=>r.search,getAiOptions:()=>r.ai,onSearchChange:v=>{var g;(g=t.onEvent)===null||g===void 0||g.call(t,{type:"search-change",payload:v})},onLocationChange:v=>{var g;(g=t.onEvent)===null||g===void 0||g.call(t,{type:"location-change",payload:v})}});k.observe();const X=async(v="replace")=>{var g,E;if(!c)return;const u=c,f=Date.now(),w=h.getCurrentVersion();await ne(r,t.onEvent,"unload-start",u,w,f,v),await((E=(g=p.session)===null||g===void 0?void 0:g.destroy)===null||E===void 0?void 0:E.call(g)),c=null,re(p,{session:null,exportAdapter:null}),await F.clearDocumentState(),k.clearProvider(),R(),P(),await ne(r,t.onEvent,"unload-complete",u,w,f,v)};return{container:e,async load(v){await X("replace"),await y();const g=gt(v);c=g;const E=h.requestController.createVersion(),u=n.getByExtension(g.extension),f=Date.now();if(await ne(r,t.onEvent,"load-start",g,E,f),!(u!=null&&u.load))return Nn(e,g.extension),re(p,{session:null}),R(),P(),await ne(r,t.onEvent,"load-complete",g,E,f),null;const w=await u.load({source:g,surface:{container:e},options:r,signal:t.signal,registerExportAdapter:x=>{re(p,{exportAdapter:x})}});return re(p,{session:w}),k.refreshProvider(),await F.refreshDocumentIndex({notify:!1}),R(),P(),await ne(r,t.onEvent,"load-complete",g,E,f),w},async destroy(v="component-unmount"){await X(v),F.destroyDocumentFeatures(),k.destroy()},updateOptions(v){r={...r,...v}},getCapabilities(v){return _(v)},getRenderer(v){return n.getByExtension(v||(c==null?void 0:c.extension)||"")},getSource(){return c},registerExportAdapter(v){re(p,{exportAdapter:v})},getExportAdapter(){return p.exportAdapter},async download(v={}){const g=$r(c);await Zr({source:g,filename:v.filename||Z({source:g,fallback:Et}),beforeOperation:d})},async exportHtml(v={}){return Wr({source:e,adapter:p.exportAdapter,download:v.download,filename:v.filename||Z({filename:se(c),fallback:"preview"}),title:v.title||Z({filename:se(c),fallback:"file-viewer-preview"}),watermarkInlineStyle:b(v.watermarkInlineStyle),beforeOperation:d})},async print(v={}){await jr({source:e,adapter:p.exportAdapter,autoPrint:v.autoPrint,openWindow:v.openWindow,printWindow:v.printWindow,title:v.title||Z({filename:se(c),fallback:"file-viewer-preview"}),watermarkInlineStyle:b(v.watermarkInlineStyle),printAvailable:_().print,beforeOperation:d})},async zoomIn(){const v=await k.zoomIn();return P(v),v},async zoomOut(){const v=await k.zoomOut();return P(v),v},async resetZoom(){const v=await k.resetZoom();return P(v),v},getZoomState(){return k.getState()},search(v){return F.searchDocument(v)},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(v){return F.scrollToLoadedAnchor(v)},scrollToLine(v){return F.scrollToLine(v)},getDocumentTextChunks(v){return F.getDocumentTextChunks(v)}}};ye(),G();var $n=()=>typeof window!="undefined"&&typeof document!="undefined",ke=(e={})=>!!(e.url||e.file||e.buffer),Te=(e={})=>({url:e.url,file:e.file,buffer:e.buffer,filename:e.filename||e.name,name:e.name,type:e.type,size:e.size}),Bn=()=>typeof fetch=="function",Un=async({url:e,signal:t})=>{if(!Bn())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()},Zn=e=>U(e.filename||e.name||Mr({file:e.file,url:e.url,fallback:"preview.bin"}),e.type?`preview.${e.type}`:j),Wn=async(e,t={})=>{var r,n,i;const o=Zn(e),l=e.type||te(o);if(e.buffer)return{buffer:e.buffer,filename:o,type:l,size:(r=e.size)!==null&&r!==void 0?r:e.buffer.byteLength,url:e.url};if(e.file){const a=bt(e.file,o);return{file:a,buffer:await yt(a),filename:a.name||o,type:l||te(a.name),size:(n=e.size)!==null&&n!==void 0?n:a.size,url:e.url}}if(e.url){const a=await(t.fetchFile||Un)({url:e.url,signal:t.signal,source:e});if(!a)throw new Error("Downloaded file is empty.");const s=bt(a,o);return{file:s,buffer:await yt(s),filename:s.name||o,type:l||te(s.name),size:(i=e.size)!==null&&i!==void 0?i:s.size,url:e.url}}return{filename:o,type:l}},jt=(e,t)=>({load(r){var n,i;return(i=(n=e())===null||n===void 0?void 0:n.load(r))!==null&&i!==void 0?i:Promise.resolve()},update(r){var n,i;return(i=(n=e())===null||n===void 0?void 0:n.update(r))!==null&&i!==void 0?i:Promise.resolve()},reload(){var r,n;return(n=(r=e())===null||r===void 0?void 0:r.reload())!==null&&n!==void 0?n:Promise.resolve()},destroy(){t()},getController:e,getApi(){var r,n;return(n=(r=e())===null||r===void 0?void 0:r.getApi())!==null&&n!==void 0?n:null},downloadOriginalFile(){var r,n;return(n=(r=e())===null||r===void 0?void 0:r.downloadOriginalFile())!==null&&n!==void 0?n:Promise.resolve()},printRenderedHtml(){var r,n;return(n=(r=e())===null||r===void 0?void 0:r.printRenderedHtml())!==null&&n!==void 0?n:Promise.resolve()},exportRenderedHtml(){var r,n;return(n=(r=e())===null||r===void 0?void 0:r.exportRenderedHtml())!==null&&n!==void 0?n:Promise.resolve()},zoomIn(){var r,n;return(n=(r=e())===null||r===void 0?void 0:r.zoomIn())!==null&&n!==void 0?n:Promise.resolve(null)},zoomOut(){var r,n;return(n=(r=e())===null||r===void 0?void 0:r.zoomOut())!==null&&n!==void 0?n:Promise.resolve(null)},resetZoom(){var r,n;return(n=(r=e())===null||r===void 0?void 0:r.resetZoom())!==null&&n!==void 0?n:Promise.resolve(null)},searchDocument(r){var n,i;return(i=(n=e())===null||n===void 0?void 0:n.searchDocument(r))!==null&&i!==void 0?i:Promise.resolve(null)},clearDocumentSearch(){var r,n;return(n=(r=e())===null||r===void 0?void 0:r.clearDocumentSearch())!==null&&n!==void 0?n:Promise.resolve(null)},nextSearchResult(){var r,n;return(n=(r=e())===null||r===void 0?void 0:r.nextSearchResult())!==null&&n!==void 0?n:Promise.resolve(null)},previousSearchResult(){var r,n;return(n=(r=e())===null||r===void 0?void 0:r.previousSearchResult())!==null&&n!==void 0?n:Promise.resolve(null)},collectDocumentAnchors(){var r,n;return(n=(r=e())===null||r===void 0?void 0:r.collectDocumentAnchors())!==null&&n!==void 0?n:Promise.resolve([])},scrollToAnchor(r){var n,i;return(i=(n=e())===null||n===void 0?void 0:n.scrollToAnchor(r))!==null&&i!==void 0?i:Promise.resolve(!1)},scrollToLine(r){var n,i;return(i=(n=e())===null||n===void 0?void 0:n.scrollToLine(r))!==null&&i!==void 0?i:Promise.resolve(!1)},getDocumentTextChunks(){var r,n;return(n=(r=e())===null||r===void 0?void 0:r.getDocumentTextChunks())!==null&&n!==void 0?n:[]},getOperationAvailability(){var r,n;return(n=(r=e())===null||r===void 0?void 0:r.getOperationAvailability())!==null&&n!==void 0?n:null},getZoomState(){var r,n;return(n=(r=e())===null||r===void 0?void 0:r.getZoomState())!==null&&n!==void 0?n:null},getSearchState(){var r,n;return(n=(r=e())===null||r===void 0?void 0:r.getSearchState())!==null&&n!==void 0?n:null},getState(){var r,n;return(n=(r=e())===null||r===void 0?void 0:r.getState())!==null&&n!==void 0?n:null},subscribe(r){var n,i;return(i=(n=e())===null||n===void 0?void 0:n.subscribe(r))!==null&&i!==void 0?i:(()=>{})}}),I=async(e,t,r)=>e?t(e):r,jn=e=>!!(e&&typeof e=="object"&&e.name==="AbortError"),qt=(e,t={},r={})=>{if(!$n())throw new Error("Flyfish File Viewer can only be mounted in a browser DOM environment.");let n=!1,i=t,o=ke(i)?Te(i):null,l=null;const a=new Set,s={loading:!1,ready:!1,error:null,lastEvent:null,lifecycle:null,availability:null,search:null,zoom:null,location:null},c=()=>({...s,search:s.search?{...s.search,matches:[...s.search.matches]}:null}),p=d=>{var b;const _=c();(b=i.onStateChange)===null||b===void 0||b.call(i,_,d),a.forEach(R=>R(_,d))},h=d=>{var b;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),(b=i.onEvent)===null||b===void 0||b.call(i,d),p(d)},m=Hn(e,{registry:r.registry,options:i.options,onEvent:h}),y=()=>{l==null||l.abort(),l=null},S=async d=>{var b;y(),o=d,l=typeof AbortController!="undefined"?new AbortController:null;const _=l;try{s.loading=!0,s.error=null,p();const R=await Wn(d,{fetchFile:r.fetchFile,signal:_==null?void 0:_.signal});return await m.load(R)}catch(R){if(jn(R)&&(_!=null&&_.signal.aborted))return null;throw s.loading=!1,s.ready=!1,s.error=R,p(),(b=r.onError)===null||b===void 0||b.call(r,R,d),R}finally{l===_&&(l=null)}};return o&&S(o),{container:e,async load(d){n||(i=d,m.updateOptions(i.options||{}),ke(i)&&await S(Te(i)))},async update(d={}){var b;n||(i={...i,...d,options:(b=d.options)!==null&&b!==void 0?b:i.options},m.updateOptions(i.options||{}),ke(i)?await S(Te(i)):(o=null,await m.load({filename:j})))},async reload(){n||o&&await S(o)},destroy(){n||(n=!0,y(),m.destroy("component-unmount"),e.innerHTML="")},getApi(){return m},downloadOriginalFile(){return I(m,d=>d.download(),void 0)},printRenderedHtml(){return I(m,d=>d.print(),void 0)},exportRenderedHtml(){return I(m,d=>d.exportHtml({download:!0}).then(()=>{}),void 0)},zoomIn(){return I(m,d=>d.zoomIn(),null)},zoomOut(){return I(m,d=>d.zoomOut(),null)},resetZoom(){return I(m,d=>d.resetZoom(),null)},searchDocument(d){return I(m,b=>b.search(d),null)},clearDocumentSearch(){return I(m,d=>d.clearSearch(),null)},nextSearchResult(){return I(m,d=>d.nextSearchResult(),null)},previousSearchResult(){return I(m,d=>d.previousSearchResult(),null)},collectDocumentAnchors(){return I(m,d=>d.collectDocumentAnchors(),[])},scrollToAnchor(d){return I(m,b=>b.scrollToDocumentAnchor(d),!1)},scrollToLine(d){return I(m,b=>b.scrollToLine(d),!1)},getDocumentTextChunks(){return m.getDocumentTextChunks()},getOperationAvailability(){return m.getCapabilities()},getZoomState(){return m.getZoomState()},getSearchState(){return m.getSearchState()},getState(){return c()},subscribe(d){return a.add(d),d(c()),()=>{a.delete(d)}}}},Ve="flyfish-file-viewer",qn=typeof HTMLElement=="undefined"?class{}:HTMLElement,Xn=["src","url","filename","name","type","size","theme","toolbar","toolbar-position","watermark","search","options"],Le=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},Xt=e=>{if(e===null||e.trim()==="")return;const t=Number(e);return Number.isFinite(t)?t:void 0},ue=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}},Yt=(...e)=>{const t=e.filter(Boolean);if(t.length)return Object.assign({},...t)},ze=(e,t)=>({...e,...t,options:t.options===void 0?e.options:Yt(e.options,t.options)}),Jt=(e,t)=>{for(const r of new Set(e.filter(Boolean)))r==null||r(t)},Yn=e=>`viewer-${e.type}`,ve=class extends qn{constructor(){super(...arguments),this.mountNode=null,this.controller=null,this.pendingUpdate=!1,this.mountOptions={},this.internalCoreOptions={}}static get observedAttributes(){return[...Xn]}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:Xt(this.getAttribute("size"))}set size(e){this.setMountOptions({size:e})}get options(){return this.mountOptions.options}set options(e){this.setMountOptions({options: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=ze(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=ze(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(t=(e=this.controller)===null||e===void 0?void 0:e.reload())!==null&&t!==void 0?t: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(t=(e=this.controller)===null||e===void 0?void 0:e.getApi())!==null&&t!==void 0?t:null}downloadOriginalFile(){var e,t;return(t=(e=this.controller)===null||e===void 0?void 0:e.downloadOriginalFile())!==null&&t!==void 0?t:Promise.resolve()}printRenderedHtml(){var e,t;return(t=(e=this.controller)===null||e===void 0?void 0:e.printRenderedHtml())!==null&&t!==void 0?t:Promise.resolve()}exportRenderedHtml(){var e,t;return(t=(e=this.controller)===null||e===void 0?void 0:e.exportRenderedHtml())!==null&&t!==void 0?t:Promise.resolve()}zoomIn(){var e,t;return(t=(e=this.controller)===null||e===void 0?void 0:e.zoomIn())!==null&&t!==void 0?t:Promise.resolve(null)}zoomOut(){var e,t;return(t=(e=this.controller)===null||e===void 0?void 0:e.zoomOut())!==null&&t!==void 0?t:Promise.resolve(null)}resetZoom(){var e,t;return(t=(e=this.controller)===null||e===void 0?void 0:e.resetZoom())!==null&&t!==void 0?t:Promise.resolve(null)}searchDocument(e){var t,r;return(r=(t=this.controller)===null||t===void 0?void 0:t.searchDocument(e))!==null&&r!==void 0?r:Promise.resolve(null)}clearDocumentSearch(){var e,t;return(t=(e=this.controller)===null||e===void 0?void 0:e.clearDocumentSearch())!==null&&t!==void 0?t:Promise.resolve(null)}nextSearchResult(){var e,t;return(t=(e=this.controller)===null||e===void 0?void 0:e.nextSearchResult())!==null&&t!==void 0?t:Promise.resolve(null)}previousSearchResult(){var e,t;return(t=(e=this.controller)===null||e===void 0?void 0:e.previousSearchResult())!==null&&t!==void 0?t:Promise.resolve(null)}collectDocumentAnchors(){var e,t;return(t=(e=this.controller)===null||e===void 0?void 0:e.collectDocumentAnchors())!==null&&t!==void 0?t:Promise.resolve([])}scrollToAnchor(e){var t,r;return(r=(t=this.controller)===null||t===void 0?void 0:t.scrollToAnchor(e))!==null&&r!==void 0?r:Promise.resolve(!1)}scrollToLine(e){var t,r;return(r=(t=this.controller)===null||t===void 0?void 0:t.scrollToLine(e))!==null&&r!==void 0?r:Promise.resolve(!1)}getDocumentTextChunks(){var e,t;return(t=(e=this.controller)===null||e===void 0?void 0:e.getDocumentTextChunks())!==null&&t!==void 0?t:[]}getOperationAvailability(){var e,t;return(t=(e=this.controller)===null||e===void 0?void 0:e.getOperationAvailability())!==null&&t!==void 0?t:null}getZoomState(){var e,t;return(t=(e=this.controller)===null||e===void 0?void 0:e.getZoomState())!==null&&t!==void 0?t:null}getSearchState(){var e,t;return(t=(e=this.controller)===null||e===void 0?void 0:e.getSearchState())!==null&&t!==void 0?t:null}getState(){var e,t;return(t=(e=this.controller)===null||e===void 0?void 0:e.getState())!==null&&t!==void 0?t:null}subscribe(e){var t,r;return(r=(t=this.controller)===null||t===void 0?void 0:t.subscribe(e))!==null&&r!==void 0?r:(()=>{})}setMountOptions(e){this.mountOptions=ze(this.mountOptions,e),this.scheduleUpdate()}mount(){if(this.controller||!this.isConnected)return;const e=this.ensureMountNode();try{this.controller=qt(e,this.createEffectiveMountOptions(),{registry:Ut,...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],n=[e.onStateChange,t.onStateChange];return{...e,...t,options:Yt(e.options,t.options),onEvent:i=>{Jt(r,i),this.dispatchViewerEvent(i)},onStateChange:(i,o)=>{Jt(n.map(l=>l?a=>l(a,o):void 0),i),this.dispatchTypedEvent("viewer-state-change",{state:i,event:o})}}}readAttributeMountOptions(){const e=this.getAttribute("src")||this.getAttribute("url")||void 0,t=this.getAttribute("filename")||void 0,r=this.getAttribute("name")||void 0,n=this.getAttribute("type")||void 0,i=Xt(this.getAttribute("size")),o=this.readAttributeViewerOptions();return{...e?{url:e}:{},...t?{filename:t}:{},...r?{name:r}:{},...n?{type:n}:{},...i===void 0?{}:{size:i},...o?{options:o}:{}}}readAttributeViewerOptions(){const e=ue(this.getAttribute("options"))||{},t=this.getAttribute("theme");t&&(e.theme=t);const r=this.getAttribute("toolbar"),n=ue(r),i=Le(r);n!==void 0?e.toolbar=n:i!==void 0&&(e.toolbar=i);const o=this.getAttribute("toolbar-position");o&&(e.toolbar={...typeof e.toolbar=="object"&&e.toolbar?e.toolbar:{},position:o});const l=this.getAttribute("watermark"),a=ue(l),s=Le(l);a!==void 0?e.watermark=a:s!==void 0?e.watermark=s:l&&(e.watermark={enabled:!0,text:l});const c=this.getAttribute("search"),p=ue(c),h=Le(c);return p!==void 0?e.search=p:h!==void 0&&(e.search=h),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(Yn(e),e)}dispatchError(e){this.dispatchTypedEvent("viewer-error",{error:e})}dispatchTypedEvent(e,t){this.dispatchEvent(new CustomEvent(e,{bubbles:!0,composed:!0,detail:t}))}},Oe=(e=Ve)=>{if(typeof window=="undefined"||!window.customElements)return;const t=window.customElements.get(e);return t||(window.customElements.define(e,ve),ve)},Gt=(e,t={},r={})=>qt(e,t,{registry:Ut,...r}),Kt={createViewerControllerHandle:jt,defineFileViewerElement:Oe,FileViewerElement:ve,FILE_VIEWER_ELEMENT_TAG:Ve,mountViewer:Gt};typeof window!="undefined"&&(window.FlyfishFileViewerWeb=Kt,Oe()),H.FILE_VIEWER_ELEMENT_TAG=Ve,H.FileViewerElement=ve,H.createViewerControllerHandle=jt,H.default=Kt,H.defineFileViewerElement=Oe,H.mountViewer=Gt})(this.FlyfishFileViewerWeb=this.FlyfishFileViewerWeb||{});
297
+ `,Nt=()=>{const e=document.createElement("style");return e.textContent=Ht,e},Wt=e=>Mt[(e||"").trim().toLowerCase()]||"image/*",Bt=async e=>await new Promise((t,r)=>{const i=new FileReader;i.onload=a=>{var o;const n=(o=a.target)===null||o===void 0?void 0:o.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)}),Ut=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 Bt(new Blob([e],{type:Wt(r)}))},jt=e=>Math.min(5,Math.max(.1,Number(e.toFixed(2)))),Re=(e,t,r)=>{if(t>0){e.style.height=`${Math.max(1,Math.round(t*r))}px`;return}e.style.height=`${r*100}%`},Zt=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 a=()=>{t.hidden=!0};return i.addEventListener("click",a),r.addEventListener("click",a),t.addEventListener("click",o=>{o.target===t&&a()}),t.append(r,i),{element:t,open(){t.hidden=!1},destroy(){i.removeEventListener("click",a),r.removeEventListener("click",a),t.remove()}}}})),Vi=e=>({$el:e,unmount(){}}),Pe=[{rendererId:"image",handler:async(e,t,r)=>{const{default:i}=await Promise.resolve().then(()=>(Oi(),Li));return i(e,t,r)}}],$t=["image"],Mi=Pe.filter(e=>$t.includes(e.rendererId)),Hi=B.filter(e=>$t.includes(e.id)),Ni=e=>e==="none"?[]:e==="lite"?Hi:B,Wi=e=>e==="none"?[]:e==="lite"?Mi:Pe,Bi=async(e,t,r)=>{const i=Ct(r),a=document.createElement("div");a.style.textAlign="center",a.style.marginTop="80px";const o=document.createElement("div");if(o.textContent=i.message,a.appendChild(o),i.description){const n=document.createElement("div");n.textContent=i.description,a.appendChild(n)}return t.replaceChildren(a),Vi(t)},Gt=(e={})=>{const t=e.builtinRenderers||"all",r=Ii({definitions:Ni(t),handlers:Wi(t)});return{...r,dispatcher:Rt({registry:r.registry,handlers:Pe,fallbackHandler:Bi})}},ze=Gt(),qt=ze.registry,ma=ze.dispatcher,va=ze.missingRendererIds,ue=e=>e.replace(/&/g,"&amp;").replace(/"/g,"&quot;").replace(/</g,"&lt;").replace(/>/g,"&gt;"),Ui=e=>`url("data:image/svg+xml;charset=utf-8,${encodeURIComponent(e)}")`,Z=(e,t,r,i)=>Math.min(i,Math.max(r,typeof e=="number"&&Number.isFinite(e)?e:t)),ji=e=>e?e===!0?{enabled:!0,text:"Flyfish Viewer"}:e.enabled===!1||!e.text&&!e.image?null:{enabled:!0,...e}:null,Zi=e=>{const t=Z(e.gapX,260,96,800),r=Z(e.gapY,180,80,800),i=Z(e.width,e.image?160:220,32,t),a=Z(e.height,(e.image,72),24,r),o=Z(e.rotate,-24,-75,75),n=Z(e.opacity,.18,.02,.8),l=(t-i)/2,s=(r-a)/2,v=t/2,h=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(${o} ${v} ${h})"><image href="${ue(e.image)}" x="${l}" y="${s}" width="${i}" height="${a}" preserveAspectRatio="xMidYMid meet"/></g></svg>`;const g=ue(e.text||"Flyfish Viewer"),u=Z(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(${o} ${v} ${h})"><text x="${v}" y="${h}" 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">${g}</text></g></svg>`},$i=e=>{const t=ji(e);return t?Ui(Zi(t)):""},Gi=e=>{const t=$i(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,a,o,n)=>{const l=zt({phase:r,source:i,version:a,timestamp:Date.now(),startedAt:o,reason:n});await hi(l,e.hooks,s=>{throw s}),t==null||t({type:r,payload:l})},Xt=(e,t)=>t.rendererMode==="replace"?ce([]):e.registry?e.registry:Gt({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"},qi=(e,t,r)=>{const i=e.ownerDocument,a=Ct(t,void 0,r),o=i.createElement("div");o.className="file-viewer-missing-renderer",o.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=a.message,l.style.cssText="display:block;margin-bottom:8px;color:#172033;font-size:16px;";const s=i.createElement("p");s.textContent=a.description||a.title,s.style.cssText="max-width:520px;margin:0;",n.append(l,s),o.append(n),e.replaceChildren(o)},Xi=(e,t={})=>{let r=t.options||{},i=Xt(t,r),a,o,n,l=r.rendererMode||"extend",s=r.builtinRenderers||"all",v=Yt(r),h=-1,g=null;const u=Ri(),b=Di(),S={anchors:{value:[]},state:oe()},d=async()=>{const p=r.rendererMode||"extend",c=r.renderers,m=r.preset,f=r.presets,y=r.builtinRenderers||"all",E=Yt(r),k=E||Te(m)||Te(f)?si():0;if(p===l&&c===a&&m===o&&f===n&&y===s&&E===v&&k===h)return;i=Xt(t,r),l=p,a=c,o=m,n=f,s=y,v=E,h=k;const P=[];E&&P.push(...ni()),P.push(...De(m),...De(f)),c&&P.push(c);const z=ke(P);if(!z.length)return;await di({registry:i,plugins:z,registerHandler:A=>{const M=i.getById(A.rendererId);M&&i.register({...M,load:Vt({handler:A.handler,getTarget:L=>L.surface.container})})}})},w=()=>zt({phase:"load-complete",source:g||Et({}),version:b.getCurrentVersion(),timestamp:Date.now()}),x=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}}),D=p=>typeof p=="string"?p:Gi(r.watermark),ie=p=>{const c=p||(g==null?void 0:g.extension)||"",m=i.getByExtension(c);return m?ci(m,u.session):ui(c)},$=()=>{var p;(p=t.onEvent)===null||p===void 0||p.call(t,{type:"operation-availability-change",payload:ie()})},H=(p=R.getState())=>{var c;(c=t.onEvent)===null||c===void 0||c.call(t,{type:"zoom-change",payload:p})},R=ft({root:()=>e,beforeZoom:x}),F=kr({root:()=>e,searchTarget:S,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})}});R.observe();const ae=async(p="replace")=>{var c,m;if(!g)return;const f=g,y=Date.now(),E=b.getCurrentVersion();await re(r,t.onEvent,"unload-start",f,E,y,p),await((m=(c=u.session)===null||c===void 0?void 0:c.destroy)===null||m===void 0?void 0:m.call(c)),g=null,te(u,{session:null,exportAdapter:null}),await F.clearDocumentState(),R.clearProvider(),$(),H(),await re(r,t.onEvent,"unload-complete",f,E,y,p)};return{container:e,async load(p){await ae("replace"),await d();const c=Et(p);g=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 qi(e,c.extension,r),te(u,{session:null}),$(),H(),await re(r,t.onEvent,"load-complete",c,m,y),null;const E=await f.load({source:c,surface:{container:e},options:r,signal:t.signal,registerExportAdapter:k=>{te(u,{exportAdapter:k})}});return te(u,{session:E}),R.refreshProvider(),await F.refreshDocumentIndex({notify:!1}),$(),H(),await re(r,t.onEvent,"load-complete",c,m,y),E},async destroy(p="component-unmount"){await ae(p),F.destroyDocumentFeatures(),R.destroy()},updateOptions(p){r={...r,...p}},getCapabilities(p){return ie(p)},getRenderer(p){return i.getByExtension(p||(g==null?void 0:g.extension)||"")},getSource(){return g},registerExportAdapter(p){te(u,{exportAdapter:p})},getExportAdapter(){return u.exportAdapter},async download(p={}){const c=Kr(g);await ti({source:c,filename:p.filename||j({source:c,fallback:Tt}),beforeOperation:x})},async exportHtml(p={}){return ri({source:e,adapter:u.exportAdapter,download:p.download,filename:p.filename||j({filename:de(g),fallback:"preview"}),title:p.title||j({filename:de(g),fallback:"file-viewer-preview"}),watermarkInlineStyle:D(p.watermarkInlineStyle),beforeOperation:x})},async print(p={}){await ii({source:e,adapter:u.exportAdapter,autoPrint:p.autoPrint,openWindow:p.openWindow,printWindow:p.printWindow,title:p.title||j({filename:de(g),fallback:"file-viewer-preview"}),watermarkInlineStyle:D(p.watermarkInlineStyle),printAvailable:ie().print,beforeOperation:x})},async zoomIn(){const p=await R.zoomIn();return H(p),p},async zoomOut(){const p=await R.zoomOut();return H(p),p},async resetZoom(){const p=await R.resetZoom();return H(p),p},getZoomState(){return R.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",Ie=(e={})=>!!(e.url||e.file||e.buffer),Le=(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=>U(e.filename||e.name||Br({file:e.file,url:e.url,fallback:"preview.bin"}),e.type?`preview.${e.type}`:G),ea=async(e,t={})=>{var r,i,a;const o=Qi(e),n=e.type||ee(o);if(e.buffer)return{buffer:e.buffer,filename:o,type:n,size:(r=e.size)!==null&&r!==void 0?r:e.buffer.byteLength,url:e.url};if(e.file){const l=St(e.file,o);return{file:l,buffer:await Ft(l),filename:l.name||o,type:n||ee(l.name),size:(i=e.size)!==null&&i!==void 0?i:l.size,url:e.url}}if(e.url){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,o);return{file:s,buffer:await Ft(s),filename:s.name||o,type:n||ee(s.name),size:(a=e.size)!==null&&a!==void 0?a:s.size,url:e.url}}return{filename:o,type:n}},Jt=(e,t)=>({load(r){var i,a;return(a=(i=e())===null||i===void 0?void 0:i.load(r))!==null&&a!==void 0?a:Promise.resolve()},update(r){var i,a;return(a=(i=e())===null||i===void 0?void 0:i.update(r))!==null&&a!==void 0?a:Promise.resolve()},reload(){var r,i;return(i=(r=e())===null||r===void 0?void 0:r.reload())!==null&&i!==void 0?i:Promise.resolve()},destroy(){t()},getController:e,getApi(){var r,i;return(i=(r=e())===null||r===void 0?void 0:r.getApi())!==null&&i!==void 0?i:null},downloadOriginalFile(){var r,i;return(i=(r=e())===null||r===void 0?void 0:r.downloadOriginalFile())!==null&&i!==void 0?i:Promise.resolve()},printRenderedHtml(){var r,i;return(i=(r=e())===null||r===void 0?void 0:r.printRenderedHtml())!==null&&i!==void 0?i:Promise.resolve()},exportRenderedHtml(){var r,i;return(i=(r=e())===null||r===void 0?void 0:r.exportRenderedHtml())!==null&&i!==void 0?i:Promise.resolve()},zoomIn(){var r,i;return(i=(r=e())===null||r===void 0?void 0:r.zoomIn())!==null&&i!==void 0?i:Promise.resolve(null)},zoomOut(){var r,i;return(i=(r=e())===null||r===void 0?void 0:r.zoomOut())!==null&&i!==void 0?i:Promise.resolve(null)},resetZoom(){var r,i;return(i=(r=e())===null||r===void 0?void 0:r.resetZoom())!==null&&i!==void 0?i:Promise.resolve(null)},searchDocument(r){var i,a;return(a=(i=e())===null||i===void 0?void 0:i.searchDocument(r))!==null&&a!==void 0?a:Promise.resolve(null)},clearDocumentSearch(){var r,i;return(i=(r=e())===null||r===void 0?void 0:r.clearDocumentSearch())!==null&&i!==void 0?i:Promise.resolve(null)},nextSearchResult(){var r,i;return(i=(r=e())===null||r===void 0?void 0:r.nextSearchResult())!==null&&i!==void 0?i:Promise.resolve(null)},previousSearchResult(){var r,i;return(i=(r=e())===null||r===void 0?void 0:r.previousSearchResult())!==null&&i!==void 0?i:Promise.resolve(null)},collectDocumentAnchors(){var r,i;return(i=(r=e())===null||r===void 0?void 0:r.collectDocumentAnchors())!==null&&i!==void 0?i:Promise.resolve([])},scrollToAnchor(r){var i,a;return(a=(i=e())===null||i===void 0?void 0:i.scrollToAnchor(r))!==null&&a!==void 0?a:Promise.resolve(!1)},scrollToLine(r){var i,a;return(a=(i=e())===null||i===void 0?void 0:i.scrollToLine(r))!==null&&a!==void 0?a:Promise.resolve(!1)},getDocumentTextChunks(){var r,i;return(i=(r=e())===null||r===void 0?void 0:r.getDocumentTextChunks())!==null&&i!==void 0?i:[]},getOperationAvailability(){var r,i;return(i=(r=e())===null||r===void 0?void 0:r.getOperationAvailability())!==null&&i!==void 0?i:null},getZoomState(){var r,i;return(i=(r=e())===null||r===void 0?void 0:r.getZoomState())!==null&&i!==void 0?i:null},getSearchState(){var r,i;return(i=(r=e())===null||r===void 0?void 0:r.getSearchState())!==null&&i!==void 0?i:null},getState(){var r,i;return(i=(r=e())===null||r===void 0?void 0:r.getState())!==null&&i!==void 0?i:null},subscribe(r){var i,a;return(a=(i=e())===null||i===void 0?void 0:i.subscribe(r))!==null&&a!==void 0?a:(()=>{})}}),T=async(e,t,r)=>e?t(e):r,ta=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,a=t,o=Ie(a)?Le(a):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}),h=d=>{var w;const x=v();(w=a.onStateChange)===null||w===void 0||w.call(a,x,d),l.forEach(D=>D(x,d))},g=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=a.onEvent)===null||w===void 0||w.call(a,d),h(d)},u=Xi(e,{registry:r.registry,options:a.options,onEvent:g}),b=()=>{n==null||n.abort(),n=null},S=async d=>{var w;b(),o=d,n=typeof AbortController!="undefined"?new AbortController:null;const x=n;try{s.loading=!0,s.error=null,h();const D=await ea(d,{fetchFile:r.fetchFile,signal:x==null?void 0:x.signal});return await u.load(D)}catch(D){if(ta(D)&&(x!=null&&x.signal.aborted))return null;throw s.loading=!1,s.ready=!1,s.error=D,h(),(w=r.onError)===null||w===void 0||w.call(r,D,d),D}finally{n===x&&(n=null)}};return o&&S(o),{container:e,async load(d){i||(a=d,u.updateOptions(a.options||{}),Ie(a)&&await S(Le(a)))},async update(d={}){var w;i||(a={...a,...d,options:(w=d.options)!==null&&w!==void 0?w:a.options},u.updateOptions(a.options||{}),Ie(a)?await S(Le(a)):(o=null,await u.load({filename:G})))},async reload(){i||o&&await S(o)},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)}}}},Ce="flyfish-file-viewer",ra=typeof HTMLElement=="undefined"?class{}:HTMLElement,ia=["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)},aa=e=>`viewer-${e.type}`,me=class extends ra{constructor(){super(...arguments),this.mountNode=null,this.controller=null,this.pendingUpdate=!1,this.mountOptions={},this.internalCoreOptions={}}static get observedAttributes(){return[...ia]}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(t=(e=this.controller)===null||e===void 0?void 0:e.reload())!==null&&t!==void 0?t: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(t=(e=this.controller)===null||e===void 0?void 0:e.getApi())!==null&&t!==void 0?t:null}downloadOriginalFile(){var e,t;return(t=(e=this.controller)===null||e===void 0?void 0:e.downloadOriginalFile())!==null&&t!==void 0?t:Promise.resolve()}printRenderedHtml(){var e,t;return(t=(e=this.controller)===null||e===void 0?void 0:e.printRenderedHtml())!==null&&t!==void 0?t:Promise.resolve()}exportRenderedHtml(){var e,t;return(t=(e=this.controller)===null||e===void 0?void 0:e.exportRenderedHtml())!==null&&t!==void 0?t:Promise.resolve()}zoomIn(){var e,t;return(t=(e=this.controller)===null||e===void 0?void 0:e.zoomIn())!==null&&t!==void 0?t:Promise.resolve(null)}zoomOut(){var e,t;return(t=(e=this.controller)===null||e===void 0?void 0:e.zoomOut())!==null&&t!==void 0?t:Promise.resolve(null)}resetZoom(){var e,t;return(t=(e=this.controller)===null||e===void 0?void 0:e.resetZoom())!==null&&t!==void 0?t:Promise.resolve(null)}searchDocument(e){var t,r;return(r=(t=this.controller)===null||t===void 0?void 0:t.searchDocument(e))!==null&&r!==void 0?r:Promise.resolve(null)}clearDocumentSearch(){var e,t;return(t=(e=this.controller)===null||e===void 0?void 0:e.clearDocumentSearch())!==null&&t!==void 0?t:Promise.resolve(null)}nextSearchResult(){var e,t;return(t=(e=this.controller)===null||e===void 0?void 0:e.nextSearchResult())!==null&&t!==void 0?t:Promise.resolve(null)}previousSearchResult(){var e,t;return(t=(e=this.controller)===null||e===void 0?void 0:e.previousSearchResult())!==null&&t!==void 0?t:Promise.resolve(null)}collectDocumentAnchors(){var e,t;return(t=(e=this.controller)===null||e===void 0?void 0:e.collectDocumentAnchors())!==null&&t!==void 0?t:Promise.resolve([])}scrollToAnchor(e){var t,r;return(r=(t=this.controller)===null||t===void 0?void 0:t.scrollToAnchor(e))!==null&&r!==void 0?r:Promise.resolve(!1)}scrollToLine(e){var t,r;return(r=(t=this.controller)===null||t===void 0?void 0:t.scrollToLine(e))!==null&&r!==void 0?r:Promise.resolve(!1)}getDocumentTextChunks(){var e,t;return(t=(e=this.controller)===null||e===void 0?void 0:e.getDocumentTextChunks())!==null&&t!==void 0?t:[]}getOperationAvailability(){var e,t;return(t=(e=this.controller)===null||e===void 0?void 0:e.getOperationAvailability())!==null&&t!==void 0?t:null}getZoomState(){var e,t;return(t=(e=this.controller)===null||e===void 0?void 0:e.getZoomState())!==null&&t!==void 0?t:null}getSearchState(){var e,t;return(t=(e=this.controller)===null||e===void 0?void 0:e.getSearchState())!==null&&t!==void 0?t:null}getState(){var e,t;return(t=(e=this.controller)===null||e===void 0?void 0:e.getState())!==null&&t!==void 0?t:null}subscribe(e){var t,r;return(r=(t=this.controller)===null||t===void 0?void 0:t.subscribe(e))!==null&&r!==void 0?r:(()=>{})}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:qt,...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:a=>{tr(r,a),this.dispatchViewerEvent(a)},onStateChange:(a,o)=>{tr(i.map(n=>n?l=>n(l,o):void 0),a),this.dispatchTypedEvent("viewer-state-change",{state:a,event:o})}}}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,a=Qt(this.getAttribute("size")),o=this.readAttributeViewerOptions();return{...e?{url:e}:{},...t?{filename:t}:{},...r?{name:r}:{},...i?{type:i}:{},...a===void 0?{}:{size:a},...o?{options:o}:{}}}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"),a=pe(i),o=Oe(i);a!==void 0?e.toolbar=a:o!==void 0&&(e.toolbar=o);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 h=this.getAttribute("search"),g=pe(h),u=Oe(h);return g!==void 0?e.search=g: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(aa(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=Ce)=>{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:qt,...r}),ir={createViewerControllerHandle:Jt,defineFileViewerElement:Me,FileViewerElement:me,FILE_VIEWER_ELEMENT_TAG:Ce,mountViewer:rr};typeof window!="undefined"&&(window.FlyfishFileViewerWeb=ir,Me()),N.FILE_VIEWER_ELEMENT_TAG=Ce,N.FileViewerElement=me,N.createViewerControllerHandle=Jt,N.default=ir,N.defineFileViewerElement=Me,N.mountViewer=rr})(this.FlyfishFileViewerWeb=this.FlyfishFileViewerWeb||{});
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@flyfish-group/file-viewer-web",
3
- "version": "2.1.2",
3
+ "version": "2.1.3",
4
4
  "private": false,
5
5
  "type": "module",
6
6
  "description": "Private-deploy pure web component for Flyfish Viewer",
@@ -67,7 +67,7 @@
67
67
  "README.en.md"
68
68
  ],
69
69
  "dependencies": {
70
- "@file-viewer/web": "^2.1.2"
70
+ "@file-viewer/web": "^2.1.3"
71
71
  },
72
72
  "devDependencies": {
73
73
  "@types/node": "^25.8.0",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@file-viewer/web",
3
- "version": "2.1.2",
3
+ "version": "2.1.3",
4
4
  "kind": "viewer-assets",
5
5
  "assets": "flyfish-viewer-assets.json"
6
6
  }