filens-preview 0.3.0 → 0.3.1

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.
Files changed (40) hide show
  1. package/README.md +13 -7
  2. package/dist/all-in-one/THIRD-PARTY-NOTICES.txt +870 -0
  3. package/dist/all-in-one/filens.js +5069 -114897
  4. package/dist/index.d.ts +2 -0
  5. package/dist/split/THIRD-PARTY-NOTICES.txt +870 -0
  6. package/dist/split/chunks/archive-DMapcEqq.js +1 -0
  7. package/dist/split/chunks/browser-video-session-CGI8FpX_.js +1 -0
  8. package/dist/split/chunks/cad-BvXJNqHR.js +7 -0
  9. package/dist/split/chunks/core-BLayEJn5.js +17 -0
  10. package/dist/split/chunks/diagram-DlpgioZ9.js +1 -0
  11. package/dist/split/chunks/docx-Sii3GNtE.js +1 -0
  12. package/dist/split/chunks/ebook-CLCQfska.js +5 -0
  13. package/dist/split/chunks/index-BPK_cNTp.js +1 -0
  14. package/dist/split/chunks/index-DI_GyFX1.js +1 -0
  15. package/dist/split/chunks/iwork-Datv3D5d.js +4 -0
  16. package/dist/split/chunks/media-runtime-tb-Q4Sah.js +1 -0
  17. package/dist/split/chunks/mindmap-B_GYpiFO.js +1 -0
  18. package/dist/split/chunks/model3d-BsIQNF2D.js +55 -0
  19. package/dist/split/chunks/mp4box.all-Bw_Tlr0T-D0URDfA1.js +1 -0
  20. package/dist/split/chunks/panorama-CIdiLIwD.js +973 -0
  21. package/dist/split/chunks/pdf-Dzzffz3p.js +12 -0
  22. package/dist/split/chunks/vendor-CBCxJuSg.js +4115 -0
  23. package/dist/split/chunks/xlsx-D2NFYc3n.js +3 -0
  24. package/dist/split/converter-image.wasm +0 -0
  25. package/dist/split/filens.js +2 -5012
  26. package/package.json +1 -1
  27. package/dist/split/chunks/archive-B4jVwD9o.js +0 -921
  28. package/dist/split/chunks/cad-DMg-lGJX.js +0 -2405
  29. package/dist/split/chunks/core--zVW212C.js +0 -14627
  30. package/dist/split/chunks/diagram-CDwCA6LZ.js +0 -654
  31. package/dist/split/chunks/docx-CuQfFJqr.js +0 -299
  32. package/dist/split/chunks/ebook-CLlJ8KX3.js +0 -623
  33. package/dist/split/chunks/iwork-dNVC0X8j.js +0 -772
  34. package/dist/split/chunks/media-runtime-gcsBQMuo.js +0 -48
  35. package/dist/split/chunks/mindmap-g0-VoK-K.js +0 -560
  36. package/dist/split/chunks/model3d-1G1CC52V.js +0 -5093
  37. package/dist/split/chunks/panorama-D7GVivtM.js +0 -5972
  38. package/dist/split/chunks/pdf-CecYOWld.js +0 -17898
  39. package/dist/split/chunks/vendor-DPFNKNkh.js +0 -59575
  40. package/dist/split/chunks/xlsx-Co26yo-R.js +0 -818
@@ -0,0 +1 @@
1
+ var _=Object.defineProperty;var R=(e,t,r)=>t in e?_(e,t,{enumerable:true,configurable:true,writable:true,value:r}):e[t]=r;var f=(e,t,r)=>R(e,typeof t!="symbol"?t+"":t,r);import{c as G,b as Y}from"./core-BLayEJn5.js";import{J as W,i as H,a as j,s as q}from"./vendor-CBCxJuSg.js";const J=[{extensions:["drawio","dio","vdx","vsdx"],family:"diagram",driverId:"diagram",targetFormat:"diagram",contentTypes:["application/vnd.jgraph.mxfile","application/vnd.visio"]}],F=new Set(["drawio","dio","vdx","vsdx"]),w=96,p="http://www.w3.org/2000/svg",S=36,Z=120,K=60,Q="#ffffff",tt="#9db3d1",V="#1f2937",et="#6b7f99",rt={amp:"&",lt:"<",gt:">",quot:'"',apos:"'"};class it{constructor(t,r={}){f(this,"listeners",{loading:new Set,rendered:new Set,error:new Set,statechange:new Set,warnings:new Set});f(this,"root");f(this,"scale");f(this,"fitMode");f(this,"canvasSize");f(this,"resizeObserver");f(this,"document",null);f(this,"loadGeneration",0);f(this,"loadController");f(this,"removeAbortListener");f(this,"pageIndex",0);f(this,"selectedElementId");f(this,"state");this.host=t,this.scale=r.initialScale??1,this.fitMode=r.fit??"contain",this.root=document.createElement("div"),this.root.className="diagramv-preview",this.host.replaceChildren(this.root),this.state={loading:false,error:null,family:"diagram",warnings:[],capabilities:{zoom:true,fit:true,pan:true,paged:true,search:true,fullscreen:true,metadata:true,download:true},scale:this.scale,pageIndex:0,pageCount:0},typeof ResizeObserver<"u"&&(this.resizeObserver=new ResizeObserver(()=>{if(this.fitMode==="none")return;const i=this.scale;this.applyScale(),this.scale!==i&&this.emit("statechange",this.state)}))}async load(t,r){var a,c,d;const i=++this.loadGeneration;(a=this.loadController)==null||a.abort(),(c=this.removeAbortListener)==null||c.call(this),this.releaseDocument();const n=new AbortController;this.loadController=n;const s=r.signal,o=()=>{n.abort(),i===this.loadGeneration&&(this.releaseDocument(),this.state.loading=false,this.emit("statechange",this.state))};s==null||s.addEventListener("abort",o,{once:true}),this.removeAbortListener=()=>s==null?void 0:s.removeEventListener("abort",o),this.state={...this.state,loading:true,error:null,title:r.descriptor.name,warnings:[],selectedElementId:void 0},this.emit("loading",this.state),this.emit("statechange",this.state);try{s!=null&&s.aborted&&n.abort(),m(n.signal);const l=O(((d=r.route)==null?void 0:d.sourceFormat)??r.descriptor.extension);if(!F.has(l))throw new Error(`Diagram preview currently supports diagrams.net drawio/dio and Visio VDX/VSDX files, got ${l||"unknown"}.`);const h={...r,signal:n.signal};let u;if(l==="vsdx"){const b=await Tt(t,h);m(n.signal),u=await st(b,h)}else{const b=await It(t,h);m(n.signal),u=l==="vdx"?ct(b):nt(b)}if(i!==this.loadGeneration)return;m(n.signal),this.document=u,this.pageIndex=0,this.selectedElementId=void 0,this.state={...this.state,loading:false,error:null,title:this.document.title??r.descriptor.name,pageIndex:0,pageCount:this.document.pages.length,selectedElementId:void 0,scale:this.scale},this.render(),Y(this.root,{getScale:()=>this.state.scale,setScale:b=>this.setScale(b),signal:n.signal}),this.emit("rendered",this.state),this.emit("statechange",this.state)}catch(l){if(i!==this.loadGeneration)return;this.releaseDocument(),this.state.loading=false,m(n.signal);const h=l instanceof Error?l:new Error(String(l));throw this.state.error=h.message,this.emit("error",h),this.emit("statechange",this.state),h}}destroy(){var t,r;this.loadGeneration++,(t=this.loadController)==null||t.abort(),(r=this.removeAbortListener)==null||r.call(this),this.releaseDocument(),this.state.loading=false,this.root.parentElement===this.host&&this.host.replaceChildren();for(const i of Object.values(this.listeners))i.clear()}getState(){var t;return{...this.state,warnings:[...this.state.warnings],pageIndex:this.pageIndex,pageCount:((t=this.document)==null?void 0:t.pages.length)??0,selectedElementId:this.selectedElementId}}on(t,r){return this.listeners[t].add(r),()=>{this.listeners[t].delete(r)}}setScale(t){Number.isFinite(t)&&(this.scale=Math.max(.25,Math.min(t,3)),this.fitMode="none",this.state.scale=this.scale,this.applyScale(),this.emit("statechange",this.state))}fit(t="contain"){this.fitMode=t,t==="none"&&(this.scale=1),this.applyScale(),this.state.scale=this.scale,this.root.scrollLeft=0,this.root.scrollTop=0,this.emit("statechange",this.state)}pan(t,r){this.root.scrollLeft+=t,this.root.scrollTop+=r}async fullscreen(){var t,r;await((r=(t=this.root).requestFullscreen)==null?void 0:r.call(t))}goToPage(t){if(!this.document||!Number.isInteger(t))return;const r=Math.max(0,Math.min(t,this.document.pages.length-1));r!==this.pageIndex&&(this.pageIndex=r,this.selectedElementId=void 0,this.state.pageIndex=this.pageIndex,this.state.selectedElementId=void 0,this.root.scrollTop=0,this.root.scrollLeft=0,this.render(),this.emit("statechange",this.state))}next(){this.goToPage(this.pageIndex+1)}prev(){this.goToPage(this.pageIndex-1)}render(){var o,a,c,d;const t=(o=this.document)==null?void 0:o.pages[this.pageIndex];if(!t){this.root.replaceChildren();return}const r=St(t);this.canvasSize=r;const i=document.createElement("div");i.className="diagramv-summary",i.textContent=`${t.name} - ${t.nodes.length} node${t.nodes.length===1?"":"s"} - ${t.edges.length} edge${t.edges.length===1?"":"s"}`;const n=document.createElement("div");n.className="diagramv-canvas-wrap",n.style.width=`${r.width}px`,n.style.height=`${r.height}px`;const s=document.createElementNS(p,"svg");s.classList.add("diagramv-canvas"),s.setAttribute("viewBox",`${r.minX} ${r.minY} ${r.width} ${r.height}`),s.setAttribute("role","img"),s.setAttribute("aria-label",t.name),s.appendChild(wt()),s.append(At(t,l=>this.selectElement(l)),yt(t,l=>this.selectElement(l))),n.appendChild(s),(a=this.resizeObserver)==null||a.disconnect(),this.root.replaceChildren(i,n),this.applyScale(),(c=this.resizeObserver)==null||c.observe(this.root),(d=this.resizeObserver)==null||d.observe(i),this.selectedElementId&&this.selectElement(this.selectedElementId,false)}selectElement(t,r=true){this.selectedElementId=t,this.state.selectedElementId=t,this.root.querySelectorAll(".diagramv-node, .diagramv-edge").forEach(i=>{i.classList.toggle("is-selected",i.getAttribute("data-element-id")===t)}),r&&this.emit("statechange",this.state)}applyScale(){const t=this.root.querySelector(".diagramv-canvas-wrap");if(!(!t||!this.canvasSize)){if(this.fitMode!=="none"){const r=this.root.clientWidth,i=this.root.clientHeight-this.root.firstElementChild.offsetHeight;if(r>0&&i>0){const n=r/this.canvasSize.width,s=i/this.canvasSize.height;this.scale=this.fitMode==="width"?n:this.fitMode==="height"?s:Math.min(n,s)}}this.state.scale=this.scale,t.style.width=`${this.canvasSize.width*this.scale}px`,t.style.height=`${this.canvasSize.height*this.scale}px`}}releaseDocument(){var t;(t=this.resizeObserver)==null||t.disconnect(),this.canvasSize=void 0,this.document=null,this.pageIndex=0,this.selectedElementId=void 0,this.state.pageIndex=0,this.state.pageCount=0,this.state.selectedElementId=void 0,this.root.replaceChildren()}emit(t,r){for(const i of this.listeners[t])i(r)}}function Bt(){return{id:"diagram",family:"diagram",supports:e=>F.has(O(e)),createSession:(e,t)=>new it(e,t)}}function $t(e=G()){return[...J,...e.filter(t=>!t.extensions.some(r=>F.has(r)))]}function nt(e){var s;const t=new DOMParser().parseFromString(e,"application/xml");if(t.getElementsByTagName("parsererror")[0])throw new Error("draw.io XML is invalid.");const r={},i=Array.from(t.getElementsByTagName("*")).filter(o=>g(o)==="diagram"),n=i.length?i.map((o,a)=>P(o,a,r)):[P(t.documentElement,0,r)];if(!n.some(o=>o.nodes.length||o.edges.length))throw new Error("draw.io file does not contain supported mxCell geometry.");return{title:t.documentElement.getAttribute("name")??((s=n[0])==null?void 0:s.name),pages:n}}async function st(e,t={}){var o;m(t.signal);const r=await W.loadAsync(e);m(t.signal);const i=await ot(r,t.signal);if(m(t.signal),!i.length)throw new Error("VSDX package is missing visio/pages/page*.xml files.");const n=[],s={};for(let a=0;a<i.length;a+=1){const c=i[a],d=await c.file.async("text");m(t.signal);const l=dt(d,a,s,c.metadata);(l.nodes.length||l.edges.length)&&n.push(l)}if(!n.length)throw new Error("VSDX file does not contain supported shape geometry.");return{title:(o=n[0])==null?void 0:o.name,pages:n}}async function ot(e,t){const r=e.file(/^visio\/pages\/page\d+\.xml$/i).sort((d,l)=>d.name.localeCompare(l.name,void 0,{numeric:true})),i=e.file("visio/pages/pages.xml");if(!i)return r.map(d=>({file:d}));const n=await i.async("text");m(t);const s=new DOMParser().parseFromString(n,"application/xml");if(s.getElementsByTagName("parsererror")[0])return r.map(d=>({file:d}));const o=await at(e,t);m(t);const c=Array.from(s.getElementsByTagName("*")).filter(d=>g(d)==="page").map((d,l)=>{var E;const h=(E=Array.from(d.children).find(I=>g(I)==="rel"))==null?void 0:E.getAttribute("r:id"),u=h?o.get(h):void 0,b=u?e.file(lt(u)):r[l];if(b)return{file:b,metadata:{id:d.getAttribute("ID")??void 0,name:d.getAttribute("NameU")||d.getAttribute("Name")||void 0}}}).filter(Mt);return c.length?c:r.map(d=>({file:d}))}async function at(e,t){const r=new Map,i=e.file("visio/pages/_rels/pages.xml.rels");if(!i)return r;const n=await i.async("text");m(t);const s=new DOMParser().parseFromString(n,"application/xml");if(s.getElementsByTagName("parsererror")[0])return r;for(const o of Array.from(s.getElementsByTagName("*")).filter(a=>g(a)==="relationship")){const a=o.getAttribute("Id"),c=o.getAttribute("Target");a&&c&&r.set(a,c)}return r}function lt(e){const t=e.replace(/\\/g,"/").replace(/^\//,"");return t.toLowerCase().startsWith("visio/pages/")?t:`visio/pages/${t.replace(/^pages\//i,"")}`}function ct(e){var s;const t=new DOMParser().parseFromString(e,"application/xml");if(t.getElementsByTagName("parsererror")[0])throw new Error("VDX XML is invalid.");const r={legacy:true},i=Array.from(t.getElementsByTagName("*")).filter(o=>g(o)==="page"),n=i.length?i.map((o,a)=>M(o,a,r)):[M(t.documentElement,0,r)];if(!n.some(o=>o.nodes.length||o.edges.length))throw new Error("VDX file does not contain supported shape geometry.");return{title:t.documentElement.getAttribute("Name")??((s=n[0])==null?void 0:s.name),pages:n}}function dt(e,t,r,i){const n=new DOMParser().parseFromString(e,"application/xml");if(n.getElementsByTagName("parsererror")[0])throw new Error("Visio page XML is invalid.");return M(n.documentElement,t,r,i)}function M(e,t,r,i){let n;const s=[],o=[];for(const h of Array.from(e.getElementsByTagName("*"))){const u=g(h);u==="pagesheet"&&!n?n=h:u==="shape"?s.push(h):u==="connect"&&o.push(h)}const a=(y(B(n,!!r.legacy),"PageHeight")??8.5)*w,c=gt(o),d=[],l=[];for(const h of s){const u=h.getAttribute("ID")??`shape-${d.length+l.length+1}`,b=h.getAttribute("Type")??"",E=B(h,!!r.legacy),I=y(E,"BeginX"),U=y(E,"EndX"),x=c.get(u),k=L(ut(h),r);if(b==="Shape"&&I==null&&U==null&&!(x!=null&&x.source)&&!(x!=null&&x.target)){const T=ht(E,u,k,a);T.width>0&&T.height>0&&d.push(T);continue}if(b==="Foreign"||b==="Group")continue;const v=mt(E,u,k,a,x);(v.points.length||v.source||v.target)&&l.push(v)}return{id:(i==null?void 0:i.id)??`visio-page-${t+1}`,name:(i==null?void 0:i.name)||e.getAttribute("NameU")||e.getAttribute("Name")||`Page ${t+1}`,nodes:d,edges:l}}function ht(e,t,r,i){const n=(y(e,"PinX")??0)*w,s=(y(e,"PinY")??0)*w,o=Math.max(1,(y(e,"Width")??1)*w),a=Math.max(1,(y(e,"Height")??.5)*w);return{id:t,label:r,x:n-o/2,y:i-s-a/2,width:o,height:a,style:ft(e)}}function mt(e,t,r,i,n={}){const s=y(e,"PinX")??0,o=y(e,"PinY")??0,a=(y(e,"BeginX")??s)*w,c=i-(y(e,"BeginY")??o)*w,d=(y(e,"EndX")??s)*w,l=i-(y(e,"EndY")??o)*w;return{id:t,label:r,source:n.source,target:n.target,points:n.source||n.target?[]:[[a,c],[d,l]],style:"endArrow=block;strokeColor=#6b7f99"}}function gt(e){const t=new Map;for(const r of e){const i=r.getAttribute("FromSheet"),n=r.getAttribute("ToSheet");if(!i||!n)continue;const s=r.getAttribute("FromCell")??"",o=t.get(i)??{};/begin/i.test(s)?o.source=n:/end/i.test(s)&&(o.target=n),t.set(i,o)}return t}function B(e,t){const r=new Map;if(!e)return r;for(const i of Array.from(e.getElementsByTagName("*"))){if(g(i)!=="cell")continue;const n=i.getAttribute("N");n!=null&&!r.has(n)&&r.set(n,i.getAttribute("V"))}if(t){for(const i of Array.from(e.children))if(["xform","xform1d","pageprops","fill","line"].includes(g(i)))for(const n of Array.from(i.children))r.has(n.localName)||r.set(n.localName,n.textContent)}return r}function y(e,t){const r=Number(e.get(t));return Number.isFinite(r)?r:void 0}function ut(e){const t=Array.from(e.children).find(r=>g(r)==="text");return(t==null?void 0:t.textContent)??""}function ft(e){const t=$(e.get("FillForegnd")??void 0),r=$(e.get("LineColor")??void 0);return[t?`fillColor=${t}`:"",r?`strokeColor=${r}`:"","rounded=1"].filter(Boolean).join(";")}function $(e){var i;if(!e||e==="THEMEGUARD(RGB(255,255,255))")return;const t=(i=/^#?[0-9a-f]{6}$/i.exec(e.trim()))==null?void 0:i[0];if(t)return t.startsWith("#")?t:`#${t}`;const r=/RGB\((\d+),\s*(\d+),\s*(\d+)\)/i.exec(e);if(r)return`#${[r[1],r[2],r[3]].map(n=>Number(n).toString(16).padStart(2,"0")).join("")}`}function P(e,t,r){const i=pt(e),n=g(i)==="mxgraphmodel"?i:Array.from(i.getElementsByTagName("*")).find(c=>g(c)==="mxgraphmodel"),s=n?Array.from(n.getElementsByTagName("*")).filter(c=>g(c)==="mxcell"):[],o=[],a=[];for(const c of s){const d=c.getAttribute("id")??`cell-${o.length+a.length+1}`,l=N(c,"mxgeometry")[0];if(c.getAttribute("vertex")==="1"&&l){o.push({id:d,label:L(c.getAttribute("value")??"",r),x:A(l,"x"),y:A(l,"y"),width:A(l,"width",Z),height:A(l,"height",K),style:c.getAttribute("style")??void 0});continue}c.getAttribute("edge")==="1"&&a.push({id:d,label:L(c.getAttribute("value")??"",r),source:c.getAttribute("source")??void 0,target:c.getAttribute("target")??void 0,points:l?vt(l):[],style:c.getAttribute("style")??void 0})}return{id:e.getAttribute("id")??`page-${t+1}`,name:e.getAttribute("name")||`Page ${t+1}`,nodes:o,edges:a}}function pt(e){var r;if(g(e)!=="diagram"||Array.from(e.getElementsByTagName("*")).some(i=>g(i)==="mxgraphmodel"))return e;const t=(r=e.textContent)==null?void 0:r.trim();if(!t)return e;try{const i=bt(t),n=new DOMParser().parseFromString(i,"application/xml");return n.getElementsByTagName("parsererror")[0]?e:n.documentElement}catch{return e}}function bt(e){const t=e.replace(/\s+/g,""),r=typeof atob=="function"?atob(t):Buffer.from(t,"base64").toString("binary"),i=Uint8Array.from(r,o=>o.charCodeAt(0));let n;try{n=H(i)}catch{n=j(i)}const s=q(n).replace(/\+/g,"%20");return decodeURIComponent(s)}function yt(e,t){const r=document.createElementNS(p,"g");r.classList.add("diagramv-nodes");for(const i of e.nodes){const n=document.createElementNS(p,"g");n.classList.add("diagramv-node"),n.setAttribute("data-element-id",i.id),n.setAttribute("tabindex","0"),n.setAttribute("role","button"),n.setAttribute("aria-label",i.label||i.id),n.addEventListener("click",()=>t(i.id)),n.addEventListener("keydown",a=>{(a.key==="Enter"||a.key===" ")&&(a.preventDefault(),t(i.id))});const s=X(i.style),o=Et(i,s);if(n.appendChild(o),i.label){const a=document.createElementNS(p,"text");a.setAttribute("x",String(i.x+i.width/2)),a.setAttribute("y",String(i.y+i.height/2+5)),a.setAttribute("fill",s.fontColor??V),a.setAttribute("font-size",s.fontSize??"13"),a.textContent=z(i.label),n.appendChild(a)}r.appendChild(n)}return r}function wt(){const e=document.createElementNS(p,"defs"),t=document.createElementNS(p,"marker");t.setAttribute("id","diagramv-arrow-end"),t.setAttribute("viewBox","0 0 10 10"),t.setAttribute("refX","9"),t.setAttribute("refY","5"),t.setAttribute("markerWidth","7"),t.setAttribute("markerHeight","7"),t.setAttribute("orient","auto-start-reverse");const r=document.createElementNS(p,"path");return r.setAttribute("d","M 0 0 L 10 5 L 0 10 z"),r.setAttribute("fill","context-stroke"),t.appendChild(r),e.appendChild(t),e}function At(e,t){const r=document.createElementNS(p,"g");r.classList.add("diagramv-edges");const i=new Map(e.nodes.map(n=>[n.id,n]));for(const n of e.edges){const s=document.createElementNS(p,"g");s.classList.add("diagramv-edge"),s.setAttribute("data-element-id",n.id),s.setAttribute("tabindex","0"),s.setAttribute("role","button"),s.setAttribute("aria-label",n.label||n.id),s.addEventListener("click",()=>t(n.id)),s.addEventListener("keydown",d=>{(d.key==="Enter"||d.key===" ")&&(d.preventDefault(),t(n.id))});const o=xt(n,i),a=X(n.style),c=document.createElementNS(p,"polyline");if(c.setAttribute("points",o.map(([d,l])=>`${d},${l}`).join(" ")),c.setAttribute("stroke",a.strokeColor??et),c.setAttribute("stroke-width",a.strokeWidth??"2"),a.dashed==="1"&&c.setAttribute("stroke-dasharray","8 5"),a.endArrow&&a.endArrow!=="none"&&c.setAttribute("marker-end","url(#diagramv-arrow-end)"),s.appendChild(c),n.label&&o.length){const d=o[Math.floor(o.length/2)],l=document.createElementNS(p,"text");l.setAttribute("x",String(d[0]+8)),l.setAttribute("y",String(d[1]-8)),l.setAttribute("fill",a.fontColor??V),l.setAttribute("font-size",a.fontSize??"13"),l.textContent=z(n.label),s.appendChild(l)}r.appendChild(s)}return r}function Et(e,t){const r=t.shape??"";if(r==="ellipse"||t.ellipse==="1"){const n=document.createElementNS(p,"ellipse");return n.setAttribute("cx",String(e.x+e.width/2)),n.setAttribute("cy",String(e.y+e.height/2)),n.setAttribute("rx",String(e.width/2)),n.setAttribute("ry",String(e.height/2)),C(n,t),n}if(r==="rhombus"||t.rhombus==="1"){const n=document.createElementNS(p,"polygon");return n.setAttribute("points",[[e.x+e.width/2,e.y],[e.x+e.width,e.y+e.height/2],[e.x+e.width/2,e.y+e.height],[e.x,e.y+e.height/2]].map(([s,o])=>`${s},${o}`).join(" ")),C(n,t),n}const i=document.createElementNS(p,"rect");return i.setAttribute("x",String(e.x)),i.setAttribute("y",String(e.y)),i.setAttribute("width",String(e.width)),i.setAttribute("height",String(e.height)),i.setAttribute("rx",t.rounded==="1"?"8":"3"),C(i,t),i}function C(e,t){e.setAttribute("fill",t.fillColor==="none"?"transparent":t.fillColor??Q),e.setAttribute("stroke",t.strokeColor==="none"?"transparent":t.strokeColor??tt),e.setAttribute("stroke-width",t.strokeWidth??"1.4"),t.dashed==="1"&&e.setAttribute("stroke-dasharray","8 5")}function xt(e,t){const r=[],i=e.source?t.get(e.source):void 0,n=e.target?t.get(e.target):void 0;return i&&r.push([i.x+i.width,i.y+i.height/2]),r.push(...e.points),n&&r.push([n.x,n.y+n.height/2]),r.length>=2?r:i&&n?[[i.x+i.width,i.y+i.height/2],[n.x,n.y+n.height/2]]:r}function vt(e){const t=[];for(const i of N(e,"mxpoint"))t.push([A(i,"x"),A(i,"y")]);const r=N(e,"array")[0];if(r)for(const i of N(r,"mxpoint"))t.push([A(i,"x"),A(i,"y")]);return t}function St(e){let t=Number.POSITIVE_INFINITY,r=Number.POSITIVE_INFINITY,i=Number.NEGATIVE_INFINITY,n=Number.NEGATIVE_INFINITY;for(const s of e.nodes)t=Math.min(t,s.x),r=Math.min(r,s.y),i=Math.max(i,s.x+s.width),n=Math.max(n,s.y+s.height);for(const s of e.edges)for(const[o,a]of s.points)t=Math.min(t,o),r=Math.min(r,a),i=Math.max(i,o),n=Math.max(n,a);return!Number.isFinite(t)||!Number.isFinite(r)||!Number.isFinite(i)||!Number.isFinite(n)?{minX:0,minY:0,width:360,height:260}:(t-=S,r-=S,i+=S,n+=S,{minX:t,minY:r,width:Math.max(360,i-t),height:Math.max(260,n-r)})}function N(e,t){return Array.from(e.children).filter(r=>g(r)===t)}function g(e){return e.localName.toLowerCase()}function A(e,t,r=0){const i=e.getAttribute(t),n=i===null?NaN:Number(i);return Number.isFinite(n)?n:r}function L(e,t){return Nt(e.replace(/<[^>]+>/g," "),t).replace(/\s+/g," ").trim()}function X(e){const t={};for(const r of String(e??"").split(";")){if(!r)continue;const[i,...n]=r.split("="),s=i==null?void 0:i.trim();s&&(t[s]=n.length?n.join("=").trim():"1")}return t}function Nt(e,t){if(!e.includes("&")&&!e.includes("\0"))return e;if(!e.includes("\0")&&!/&(?!amp;|lt;|gt;|quot;|apos;)/.test(e))return e.replace(/&(amp|lt|gt|quot|apos);/g,(i,n)=>rt[n]);const r=t.labelDecoder??(t.labelDecoder=document.createElement("textarea"));return r.innerHTML=e,r.value}function z(e){return e.length>34?`${e.slice(0,31)}...`:e}async function It(e,t){if(m(t.signal),typeof e=="string"){if(e.trimStart().toLowerCase().startsWith("data:"))return Ct(e);const r=await fetch(e,{signal:t.signal});if(m(t.signal),!r.ok)throw new Error(`Failed to load diagram source: ${r.status} ${r.statusText}`.trim());return r.text()}return e instanceof Blob?e.text():ArrayBuffer.isView(e)?new TextDecoder().decode(e):e instanceof ArrayBuffer?new TextDecoder().decode(e):String(e)}async function Tt(e,t){if(m(t.signal),typeof e=="string"){if(e.trimStart().toLowerCase().startsWith("data:"))return D(Dt(e));const r=await fetch(e,{signal:t.signal});if(m(t.signal),!r.ok)throw new Error(`Failed to load diagram source: ${r.status} ${r.statusText}`.trim());return r.arrayBuffer()}if(e instanceof Blob)return e.arrayBuffer();if(ArrayBuffer.isView(e)){const r=new Uint8Array(e.byteLength);return r.set(new Uint8Array(e.buffer,e.byteOffset,e.byteLength)),D(r)}return e instanceof ArrayBuffer?e:D(new TextEncoder().encode(String(e)))}function m(e){if(e!=null&&e.aborted)throw new DOMException("The operation was aborted.","AbortError")}function Ct(e){const t=e.indexOf(",");if(t<0)return e;const r=e.slice(0,t).toLowerCase(),i=e.slice(t+1);return r.endsWith(";base64")?new TextDecoder().decode(Uint8Array.from(atob(i),n=>n.charCodeAt(0))):decodeURIComponent(i)}function Dt(e){const t=e.indexOf(",");if(t<0)return new TextEncoder().encode(e);const r=e.slice(0,t).toLowerCase(),i=e.slice(t+1);return r.endsWith(";base64")?Uint8Array.from(atob(i),n=>n.charCodeAt(0)):new TextEncoder().encode(decodeURIComponent(i))}function D(e){const t=new Uint8Array(e.byteLength);return t.set(e),t.buffer}function Mt(e){return e!==void 0}function O(e){return String(e??"").trim().replace(/^\./,"").toLowerCase()}export{$t as a,Bt as c};
@@ -0,0 +1 @@
1
+ var A=Object.defineProperty;var j=(o,s,t)=>s in o?A(o,s,{enumerable:true,configurable:true,writable:true,value:t}):o[s]=t;var v=(o,s,t)=>j(o,typeof s!="symbol"?s+"":s,t);import{am as B,an as T}from"./vendor-CBCxJuSg.js";import{i as R,j as H,B as E,g as U,d as k,l as W,w as _,c as z,a as I}from"./core-BLayEJn5.js";const x=new WeakMap;async function X(o,s){var r,c;const t=new Map,n=o.fontTablePart;if(!(n!=null&&n.path)||!((r=n._package)!=null&&r.load))return t;try{const f=await n._package.load(n.path),h=(c=s.defaultView)==null?void 0:c.DOMParser;if(!f||!h)return t;const w=new h().parseFromString(f,"application/xml");if(w.getElementsByTagName("parsererror").length)return t;const d=(m,a)=>{var g;return(g=[...m.attributes].find(C=>C.localName===a))==null?void 0:g.value};for(const m of[...w.getElementsByTagNameNS("*","font")]){const a=d(m,"name");if(!a)continue;const g=C=>{const F=[...m.children].find(L=>L.localName===C);return F?d(F,"val"):void 0};t.set(a.toLowerCase(),{...R(g("family")),...H(g("panose1")),...R(void 0,g("pitch"))})}}catch{}return t}function O(o,s,t=new Map,n){var F,L,P,u;const r=new Map;for(const e of((F=o.fontTablePart)==null?void 0:F.fonts)??[])e.name&&r.set(e.name.toLowerCase(),{fontFamily:e.name,traits:{...R(e.family,e.pitch),...t.get(e.name.toLowerCase())},embedded:(L=e.embedFontRefs)!=null&&L.length?true:void 0});const c=[],f=new WeakSet,h=e=>{if(!e||typeof e!="object"||f.has(e))return;if(f.add(e),Array.isArray(e)){e.forEach(h);return}const i=e;if(typeof i["font-family"]=="string"){const l=x.get(i)??i["font-family"];x.set(i,l),c.push({values:i,stack:l});for(const p of E(l))r.has(p.toLowerCase())||r.set(p.toLowerCase(),{fontFamily:p})}for(const[l,p]of Object.entries(i))l!=="parent"&&!l.startsWith("_")&&h(p)};h((P=o.documentPart)==null?void 0:P.body),h((u=o.stylesPart)==null?void 0:u.styles);for(const e of o.parts??[])for(const i of["body","styles","domNumberings","notes","comments"])h(e[i]);const w=c.filter(({stack:e})=>!/[()]/.test(e)&&!E(e).some(i=>{var l;return(l=r.get(i.toLowerCase()))==null?void 0:l.embedded})),d=new Set(w.flatMap(({stack:e})=>E(e).map(i=>i.toLowerCase()))),m=new Map(n==null?void 0:n.references.map(e=>{var i;return[(i=e.fontFamily)==null?void 0:i.toLowerCase(),e]}));for(const[e,i]of r){const l=m.get(e);l&&d.has(e)&&r.set(e,{...i,...l})}const a=[...r.values()].filter(e=>d.has(e.fontFamily.toLowerCase())),g=[...(n?U({...n,references:a},s):k(a,s,{substitute:true})).fonts,...k([...r.values()].filter(e=>!d.has(e.fontFamily.toLowerCase())),s).fonts],C=new Map(g.map(e=>{var i;return[(i=e.fontFamily)==null?void 0:i.toLowerCase(),e.resolvedFontFamily]}));for(const{values:e,stack:i}of w){const p=E(i).map(b=>C.get(b.toLowerCase())).filter(b=>!!b);e["font-family"]=W(i,b=>{var D;return(D=r.get(b.toLowerCase()))==null?void 0:D.traits},p)}return{fonts:g,references:[...r.values()],loadingReferences:a,warnings:[...new Set([..._(g),...(n==null?void 0:n.warnings)??[]])]}}const V=[{extensions:["docx"],family:"flow",driverId:"docx",targetFormat:"docx"}];class ${constructor(s,t={}){v(this,"listeners",{loading:new Set,rendered:new Set,error:new Set,statechange:new Set,warnings:new Set});v(this,"root");v(this,"documentHost");v(this,"loadController",null);v(this,"state");v(this,"fontLoading");v(this,"fontReferences",[]);v(this,"refreshDocumentFonts");this.host=s,this.root=document.createElement("div"),this.root.className="docxv-preview",this.documentHost=document.createElement("div"),this.documentHost.className="docxv-document",this.root.replaceChildren(this.documentHost),this.host.replaceChildren(this.root),this.state={loading:false,error:null,family:"flow",warnings:[],capabilities:{search:true,print:true,download:true},scale:t.initialScale??1,scrollTop:0},this.fontLoading=I(this,s.ownerDocument,t)}async load(s,t){var d,m,a,g,C,F,L,P;this.stopLoad(),this.fontLoading.reset(t.signal,((d=t.route)==null?void 0:d.targetFormat)??t.descriptor.extension??"docx");const n=new AbortController;this.loadController=n;const r=n.signal,c=document.createElement("div");c.className="docxv-document",this.documentHost=c;let f=c;this.root.replaceChildren(c),this.root.scrollTop=0;const h=new Set,w=()=>n.abort();r.addEventListener("abort",()=>{var u;(u=t.signal)==null||u.removeEventListener("abort",w);for(const e of h)URL.revokeObjectURL(e);h.clear(),f.replaceChildren(),f.remove(),this.loadController===n&&(this.loadController=null,this.state.loading=false,this.state.fonts=[],this.state.warnings=[],this.emit("statechange",this.state))},{once:true}),(m=t.signal)==null||m.addEventListener("abort",w,{once:true}),this.state={...this.state,loading:true,error:null,title:t.descriptor.name,fonts:[],warnings:[]},this.emit("loading",this.state),this.emit("statechange",this.state);try{(a=t.signal)!=null&&a.aborted&&n.abort(),S(r);const u=await J(s,{...t,signal:r});if(r.aborted){(g=t.signal)!=null&&g.aborted&&S(r);return}const e={breakPages:true,ignoreLastRenderedPageBreak:false,className:"docx"},i=await B(u,e);if(r.aborted){(C=t.signal)!=null&&C.aborted&&S(r);return}G(i,r,h);const l=await X(i,this.host.ownerDocument);if(r.aborted){(F=t.signal)!=null&&F.aborted&&S(r);return}const p=O(i,this.host.ownerDocument,l);if(await T(i,c,void 0,e),r.aborted){(L=t.signal)!=null&&L.aborted&&S(r);return}this.state.loading=false,this.state.error=null,this.state.fonts=p.fonts,this.fontReferences=p.loadingReferences,this.state.warnings=p.warnings,this.refreshDocumentFonts=async b=>{if(r.aborted||this.loadController!==n)return;const D=O(i,this.host.ownerDocument,l,b);if(b.loaded.length||b.relayout){const y=this.host.ownerDocument.createElement("div");y.className="docxv-document",y.style.visibility="hidden",this.root.appendChild(y);try{if(await T(i,y,void 0,e),r.aborted||this.loadController!==n)return;const M=this.root.scrollTop,N=this.root.scrollLeft;y.style.visibility="",f=this.documentHost=y,this.root.replaceChildren(y),this.root.scrollTop=M,this.root.scrollLeft=N}finally{f!==y&&y.remove()}}r.aborted||this.loadController!==n||(this.fontReferences=D.loadingReferences,this.state.fonts=D.fonts,this.state.warnings=D.warnings,this.emit("warnings",this.state.warnings),this.emit("rendered",this.getState()),this.emit("statechange",this.getState()))},this.state.warnings.length&&this.emit("warnings",this.state.warnings),this.emit("rendered",this.state),this.emit("statechange",this.state)}catch(u){if(r.aborted){(P=t.signal)!=null&&P.aborted&&S(r);return}this.stopLoad();const e=u instanceof Error?u:new Error(String(u));throw this.state.loading=false,this.state.error=e.message,this.emit("error",e),this.emit("statechange",this.state),e}finally{r.aborted&&c.replaceChildren()}}destroy(){this.fontLoading.destroy(),this.stopLoad(),this.state.loading=false,this.state.fonts=[],this.state.warnings=[],this.documentHost.replaceChildren(),this.root.replaceChildren(),this.root.parentElement===this.host&&this.host.replaceChildren();for(const s of Object.values(this.listeners))s.clear()}stopLoad(){this.refreshDocumentFonts=void 0,this.fontReferences=[];const s=this.loadController;this.loadController=null,s==null||s.abort()}getState(){var s;return{...this.state,fonts:(s=this.state.fonts)==null?void 0:s.map(t=>({...t,classification:t.classification?{...t.classification}:void 0})),warnings:[...this.state.warnings],scrollTop:this.root.scrollTop}}getFontReferences(){return this.fontReferences}async refreshFonts(s){var t;await((t=this.refreshDocumentFonts)==null?void 0:t.call(this,s))}on(s,t){return this.listeners[s].add(t),()=>{this.listeners[s].delete(t)}}emit(s,t){for(const n of this.listeners[s])n(t)}}function Z(){return{id:"docx",family:"flow",supports:o=>q(o)==="docx",createSession:(o,s)=>new $(o,s)}}function tt(o=z()){return[...V,...o.filter(s=>!s.extensions.includes("docx"))]}async function J(o,s){if(o instanceof Blob)return o;if(typeof o=="string"){const t=await fetch(o,{signal:s.signal});if(!t.ok)throw new Error(`Failed to load DOCX source: ${t.status} ${t.statusText}`.trim());return t.arrayBuffer()}return ArrayBuffer.isView(o)?new Uint8Array(o.buffer,o.byteOffset,o.byteLength).slice().buffer:o.slice(0)}function q(o){return o.trim().replace(/^\./,"").toLowerCase()}function S(o){if(o.aborted)throw new DOMException("DOCX preview aborted.","AbortError")}function G(o,s,t){for(const n of["loadDocumentImage","loadNumberingImage","loadFont"]){const r=o[n];if(!r)continue;const c=new Map;o[n]=(...f)=>{if(s.aborted)return Promise.reject(new DOMException("DOCX preview aborted.","AbortError"));const h=n==="loadDocumentImage"?f[1]??o.documentPart:void 0,w=n==="loadFont"?JSON.stringify(f.slice(0,2)):String(f[0]);let d=c.get(h);d||c.set(h,d=new Map);let m=d.get(w);return m||(m=Promise.resolve(r.apply(o,f)).then(a=>{if(a!=null&&a.startsWith("blob:")){if(s.aborted)return URL.revokeObjectURL(a),null;t.add(a)}return a}),d.set(w,m)),m}}}export{tt as a,Z as c};
@@ -0,0 +1,5 @@
1
+ var W=Object.defineProperty;var Z=(t,e,r)=>e in t?W(t,e,{enumerable:true,configurable:true,writable:true,value:r}):t[e]=r;var T=(t,e,r)=>Z(t,typeof e!="symbol"?e+"":e,r);import{J as z}from"./vendor-CBCxJuSg.js";import{c as X}from"./core-BLayEJn5.js";async function _(t,e){const r=[];for(let i=0;i<t.length;){if(t.startsWith("/*",i)){i=R(t,i);continue}if(t[i]==='"'||t[i]==="'"){i=I(t,i);continue}let a=i,m=false;if(/^@import(?![\w-])/i.test(t.slice(i,i+9))&&(m=true,a=L(t,i+7),t[a]==='"'||t[a]==="'")){const c=I(t,a);t[c-1]===t[a]&&r.push({start:a,end:c,value:j(t.slice(a+1,c-1)),stylesheet:m}),i=c;continue}if((a===0||!/[\w\\-]/.test(t[a-1]))&&/^url\(/i.test(t.slice(a,a+4))){const c=L(t,a+4);let h=c,p;if(t[c]==='"'||t[c]==="'"){if(h=I(t,c),t[h-1]!==t[c]){i=h;continue}p=t.slice(c+1,h-1)}else{for(;h<t.length&&t[h]!==")";)t[h]==="\\"&&h++,h++;p=t.slice(c,h).trimEnd()}const f=L(t,h);if(t[f]===")"){r.push({start:c,end:h,value:j(p),stylesheet:m}),i=f+1;continue}}i++}const n=[];let o=0;for(const i of r){const a=await e(i.value,i.stylesheet);a!==void 0&&(n.push(t.slice(o,i.start),J(a)),o=i.end)}return o?(n.push(t.slice(o)),n.join("")):t}function R(t,e){const r=t.indexOf("*/",e+2);return r<0?t.length:r+2}function L(t,e){for(;e<t.length;)if(/\s/.test(t[e]))e++;else if(t.startsWith("/*",e))e=R(t,e);else break;return e}function I(t,e){const r=t[e++];for(;e<t.length;)if(t[e]==="\\")e+=2;else if(t[e++]===r)return e;return t.length}function j(t){return t.replace(/\\(?:([\da-f]{1,6})(?:\r\n|[\t\n\f\r ])?|(\r\n|[\n\r\f])|(.))/gi,(e,r,n,o)=>{if(r){const i=parseInt(r,16);return String.fromCodePoint(!i||i>1114111||i>=55296&&i<=57343?65533:i)}return n?"":o??""})}function J(t){return`"${t.replace(/\\/g,"\\\\").replace(/"/g,'\\"').replace(/[\n\r\f]/g,e=>`\\${e.charCodeAt(0).toString(16)} `)}"`}function F(){return typeof window<"u"&&window.origin==="null"}function S(t,e,r){if(F()){const o=typeof t=="string"?new TextEncoder().encode(t):t instanceof ArrayBuffer?new Uint8Array(t):t,i=[];for(let a=0;a<o.length;a+=32768)i.push(String.fromCharCode(...o.subarray(a,a+32768)));return`data:${e};base64,${btoa(i.join(""))}`}const n=t instanceof Uint8Array?new Uint8Array(t):t;return r(new Blob([n],{type:e}))}function U(t,e){const r=e.split(/[?#]/,1)[0];let n=r;try{n=decodeURIComponent(r)}catch{}const o=[];for(const i of`${n.startsWith("/")?"":t+"/"}${n}`.replace(/\\/g,"/").split("/"))i===".."?o.pop():i&&i!=="."&&o.push(i);return o.join("/")}async function V(t,e,r,n,o,i,a){const m=new Map,c=new Map,h=new Map,p=new Set,f=[];for(const l of e){const d=U(r,l.href);if(/^(?:application\/xhtml\+xml|text\/html)$/.test(l.mediaType)){p.add(d);continue}const w=t.file(d);w&&f.push({path:d,mediaType:l.mediaType,file:w})}for(let l=0;l<f.length;l+=8){B(o);const d=f.slice(l,l+8),w=await Promise.all(d.map(C=>C.file.async("arraybuffer")));B(o);for(const[C,u]of d.entries()){const s={path:u.path,mediaType:u.mediaType,bytes:w[C]};m.set(s.path,s),s.mediaType!=="text/css"&&(B(o),c.set(s.path,S(s.bytes,s.mediaType,n)))}}async function y(l,d,w){if(B(o),w.has(l)){const g=`Skipped circular EPUB stylesheet import: ${l}.`;return a.includes(g)||a.push(g),"data:text/css,"}if(c.has(l))return c.get(l);if(p.has(l)||/\.(?:xhtml|html?)$/i.test(l))return;const C=`${d?"stylesheet":"resource"}:${l}`;if(h.has(C))return h.get(C);let u=m.get(l);if(!u){const g=t.file(l);if(g){const x=await g.async("arraybuffer");B(o),u={path:l,bytes:x,mediaType:O(l)},m.set(l,u)}}let s=u==null?void 0:u.bytes,E=(u==null?void 0:u.mediaType)||O(l);if(!u&&i){const g=await i({family:"ebook",sourceFormat:"epub",source:l,relation:d?"stylesheet":"resource",name:l.split("/").pop()??l});B(o),g&&typeof g=="object"&&!(g instanceof Blob)&&!(g instanceof ArrayBuffer)&&!ArrayBuffer.isView(g)?s=g.source:s=g||void 0}let v;if(typeof s=="string")v=s;else if(s!==void 0)if(s instanceof Blob&&s.type&&(E=s.type),E.split(";",1)[0]==="text/css"||d){const g=s instanceof Blob?await s.arrayBuffer():s instanceof ArrayBuffer?s:new Uint8Array(s.buffer,s.byteOffset,s.byteLength);B(o);const x=new Set(w);x.add(l);const $=await k(Q(g,E),K(l),x);B(o),v=S($,"text/css;charset=utf-8",n)}else if(s instanceof Blob&&!F())v=n(s.type?s:new Blob([s],{type:E}));else if(u||s instanceof Blob){const g=s instanceof Blob?await s.arrayBuffer():s instanceof ArrayBuffer?s:new Uint8Array(s.buffer,s.byteOffset,s.byteLength);B(o),v=S(g,E,n)}else{const g=s instanceof ArrayBuffer?new Uint8Array(s):new Uint8Array(s.buffer,s.byteOffset,s.byteLength);let x="";for(const $ of g)x+=String.fromCharCode($);v=`data:${E};base64,${btoa(x)}`}return B(o),h.set(C,v),u&&v&&c.set(l,v),v}async function A(l,d,w=false,C=new Set){var g,x;B(o);const u=l.trim();if(!u||/^(?:[a-z][a-z0-9+.-]*:|#|\/\/)/i.test(u))return;const s=U(d,u),E=await y(s,w,C);if(!E)return;const v=((g=u.match(/[?#].*$/))==null?void 0:g[0])??"";return E+(/^(?:blob|data):/i.test(E)?((x=v.match(/#.*/))==null?void 0:x[0])??"":v)}async function k(l,d,w=new Set){return _(l,(C,u)=>A(C,d,u,w))}return B(o),{resolve:A,rewriteCss:k}}function K(t){return t.slice(0,Math.max(0,t.lastIndexOf("/")))}function B(t){if(t!=null&&t.aborted)throw new DOMException("Ebook preview aborted.","AbortError")}function Q(t,e){var m,c;const r=t instanceof Uint8Array?t:new Uint8Array(t),n=r[0]===255&&r[1]===254?"utf-16le":r[0]===254&&r[1]===255?"utf-16be":r[0]===239&&r[1]===187&&r[2]===191?"utf-8":void 0,o=(m=e.match(/;\s*charset\s*=\s*["']?([^;\s"']+)/i))==null?void 0:m[1],i=(c=new TextDecoder("ascii").decode(r.subarray(0,128)).match(/^@charset "([^"\r\n]+)";/))==null?void 0:c[1],a=n??o??i??"utf-8";try{return new TextDecoder(a).decode(r)}catch{return new TextDecoder().decode(r)}}function O(t){var r;return{css:"text/css",otf:"font/otf",ttf:"font/ttf",woff:"font/woff",woff2:"font/woff2",avif:"image/avif",bmp:"image/bmp",gif:"image/gif",jpg:"image/jpeg",jpeg:"image/jpeg",png:"image/png",svg:"image/svg+xml",webp:"image/webp"}[((r=t.split(".").pop())==null?void 0:r.toLowerCase())??""]??"application/octet-stream"}const Y=[{extensions:["epub"],family:"ebook",driverId:"ebook",targetFormat:"epub",contentTypes:["application/epub+zip"]},{extensions:["cbz"],family:"ebook",driverId:"ebook",targetFormat:"cbz",contentTypes:["application/vnd.comicbook+zip","application/x-cbz"]}];class tt{constructor(e,r={}){T(this,"listeners",{loading:new Set,rendered:new Set,error:new Set,statechange:new Set,warnings:new Set});T(this,"root");T(this,"tabs");T(this,"stage");T(this,"createdUrls",[]);T(this,"book",null);T(this,"frame",null);T(this,"loadGeneration",0);T(this,"loadController");T(this,"removeAbortListener");T(this,"state",{loading:false,error:null,family:"ebook",warnings:[],capabilities:{chapters:true,search:true,fullscreen:true,download:true},location:void 0,progress:0,chapterTitle:void 0,chapterIndex:0,chapterCount:0,chapters:[]});this.host=e,this.options=r,this.root=document.createElement("div"),this.root.className="ebookv-preview",this.tabs=document.createElement("div"),this.tabs.className="ebookv-chapters",this.stage=document.createElement("div"),this.stage.className="ebookv-stage",this.root.replaceChildren(this.tabs,this.stage),this.host.replaceChildren(this.root)}async load(e,r){var m,c,h;const n=++this.loadGeneration;(m=this.loadController)==null||m.abort(),(c=this.removeAbortListener)==null||c.call(this),this.releaseBook();const o=new AbortController;this.loadController=o;const i=r.signal,a=()=>{o.abort(),n===this.loadGeneration&&(this.releaseBook(),this.state.loading=false,this.emit("statechange",this.state))};i==null||i.addEventListener("abort",a,{once:true}),this.removeAbortListener=()=>i==null?void 0:i.removeEventListener("abort",a),this.state={...this.state,loading:true,error:null,title:r.descriptor.name,warnings:[],location:void 0,progress:0,chapterTitle:void 0,chapterIndex:0,chapterCount:0,chapters:[]},this.emit("loading",this.state),this.emit("statechange",this.state);try{i!=null&&i.aborted&&o.abort(),b(o.signal);const p=P(((h=r.route)==null?void 0:h.sourceFormat)??r.descriptor.extension);if(p!=="epub"&&p!=="cbz")throw new Error(`Ebook preview currently supports EPUB and CBZ files, got ${p||"unknown"}.`);const f={...r,signal:o.signal},y=k=>(b(o.signal),this.createObjectUrl(k)),A=p==="cbz"?await rt(e,f,y):await et(e,f,y,this.options.resourceResolver);if(n!==this.loadGeneration)return;b(o.signal),this.book=A,this.state={...this.state,loading:false,error:null,title:this.book.title??r.descriptor.name,warnings:this.book.warnings.slice(),chapterCount:this.book.chapters.length,chapters:this.book.chapters.map(k=>({id:k.id,title:k.title}))},this.render(),this.state.warnings.length&&this.emit("warnings",this.state.warnings),this.emit("rendered",this.state),this.emit("statechange",this.state)}catch(p){if(n!==this.loadGeneration)return;this.releaseBook(),this.state.loading=false,o.signal.aborted&&b(o.signal);const f=p instanceof Error?p:new Error(String(p));throw this.state.error=f.message,this.emit("error",f),this.emit("statechange",this.state),f}}destroy(){var e,r;this.loadGeneration++,(e=this.loadController)==null||e.abort(),(r=this.removeAbortListener)==null||r.call(this),this.releaseBook(),this.state.loading=false,this.root.replaceChildren(),this.root.parentElement===this.host&&this.host.replaceChildren();for(const n of Object.values(this.listeners))n.clear()}getState(){var e;return{...this.state,warnings:this.state.warnings.slice(),chapters:((e=this.state.chapters)==null?void 0:e.slice())??[]}}on(e,r){return this.listeners[e].add(r),()=>{this.listeners[e].delete(r)}}goToPage(e){this.goToChapter(e)}next(){this.goToChapter(Math.min(this.state.chapterIndex+1,Math.max(this.state.chapterCount-1,0)))}prev(){this.goToChapter(Math.max(this.state.chapterIndex-1,0))}goToChapter(e){var o;if(!Number.isInteger(e)||!((o=this.book)!=null&&o.chapters.length))return;const r=Math.max(0,Math.min(e,this.book.chapters.length-1));if(r===this.state.chapterIndex&&this.frame)return;const n=this.book.chapters[r];this.state.chapterIndex=r,this.state.location=n.href,this.state.chapterTitle=n.title,this.state.progress=this.book.chapters.length<=1?1:r/(this.book.chapters.length-1),this.renderTabs(),this.renderChapter(n),this.emit("statechange",this.state)}render(){this.renderTabs(),this.goToChapter(0)}renderTabs(){this.tabs.replaceChildren();for(const[e,r]of this.state.chapters.entries()){const n=document.createElement("button");n.type="button",n.className="ebookv-chapter-tab",n.classList.toggle("is-active",e===this.state.chapterIndex),n.textContent=r.title,n.addEventListener("click",()=>this.goToChapter(e)),this.tabs.appendChild(n)}}renderChapter(e){const r=document.createElement("iframe");r.className="ebookv-frame",r.title=e.title,r.setAttribute("sandbox","allow-same-origin allow-popups"),r.referrerPolicy="no-referrer",r.srcdoc=e.html,this.frame=r,this.stage.replaceChildren(r)}createObjectUrl(e){const r=URL.createObjectURL(e);return this.createdUrls.push(r),r}releaseBook(){this.revokeCreatedUrls(),this.book=null,this.frame=null,this.tabs.replaceChildren(),this.stage.replaceChildren(),this.state.chapterCount=0,this.state.chapterIndex=0,this.state.chapters=[],this.state.chapterTitle=void 0,this.state.location=void 0,this.state.progress=0}revokeCreatedUrls(){for(;this.createdUrls.length;){const e=this.createdUrls.pop();e&&URL.revokeObjectURL(e)}}emit(e,r){for(const n of this.listeners[e])n(r)}}function gt(){return{id:"ebook",family:"ebook",supports:t=>["epub","cbz"].includes(P(t)),createSession:(t,e)=>new tt(t,e)}}function bt(t=X()){return[...Y,...t.filter(e=>!e.extensions.some(r=>r==="epub"||r==="cbz"))]}async function et(t,e={descriptor:{source:t}},r=o=>URL.createObjectURL(o),n){const o=await D(t,e);b(e.signal);const i=await z.loadAsync(o);b(e.signal);const a=[],m=await M(i,"META-INF/container.xml",e.signal);if(!m)throw new Error("Invalid EPUB: missing META-INF/container.xml.");const c=nt(m),h=c?U("",c):null;if(!h)throw new Error("Invalid EPUB: missing rootfile path.");const p=await M(i,h,e.signal);if(!p)throw new Error(`Invalid EPUB: missing package document ${h}.`);const f=G(h),y=q(p,h),A=it(y),k=ot(y),l=at(y,"title"),d=await V(i,A.values(),f,r,e.signal,n,a),w=[];for(const C of k){b(e.signal);const u=A.get(C);if(!u){a.push(`Missing manifest item for spine id ${C}.`);continue}if(!ct(u.mediaType)){a.push(`Skipped non-HTML spine item ${u.href}.`);continue}const s=U(f,u.href),E=await M(i,s,e.signal);if(!E){a.push(`Missing chapter file ${s}.`);continue}const v=await st(E,u.href,f,d,e.signal);w.push({id:u.id,href:u.href,title:v.title??u.href,html:v.html})}if(!w.length)throw new Error("Invalid EPUB: no readable HTML chapters found.");return{title:l||void 0,chapters:w,warnings:a}}async function rt(t,e={descriptor:{source:t}},r=n=>URL.createObjectURL(n)){const n=await D(t,e);b(e.signal);const o=await z.loadAsync(n);b(e.signal);const i=new Intl.Collator(void 0,{numeric:true,sensitivity:"base"}),a=Object.values(o.files).filter(c=>!c.dir&&lt(c.name)).sort((c,h)=>i.compare(c.name,h.name));if(!a.length)throw new Error("Invalid CBZ: no readable image pages found.");const m=[];for(let c=0;c<a.length;c+=8){b(e.signal);const h=a.slice(c,c+8),p=await Promise.all(h.map(f=>f.async("arraybuffer")));b(e.signal);for(const[f,y]of h.entries()){b(e.signal);const A=c+f,k=ft(y.name),l=S(p[f],k,r),d=`Page ${A+1}`;m.push({id:`page-${A+1}`,title:d,href:y.name,html:ht(d,l)})}}return{title:e.descriptor.name,chapters:m,warnings:[]}}async function D(t,e){if(b(e.signal),typeof t=="string"){const r=await fetch(t,{signal:e.signal});if(!r.ok)throw new Error(`Failed to load EPUB source: ${r.status} ${r.statusText}`.trim());const n=await r.arrayBuffer();return b(e.signal),n}if(ArrayBuffer.isView(t)){const r=new Uint8Array(t.buffer,t.byteOffset,t.byteLength),n=new Uint8Array(r.byteLength);return n.set(r),n.buffer}if(t instanceof ArrayBuffer)return t;if(t instanceof Blob){const r=await t.arrayBuffer();return b(e.signal),r}return new TextEncoder().encode(String(t)).buffer}async function M(t,e,r){b(r);const n=t.file(e);if(!n)return null;const o=await n.async("text");return b(r),o}function nt(t){const e=q(t,"container.xml"),r=Array.from(e.getElementsByTagName("*")).find(n=>n.localName==="rootfile");return(r==null?void 0:r.getAttribute("full-path"))??null}function it(t){const e=new Map;for(const r of Array.from(t.getElementsByTagName("*"))){if(r.localName!=="item")continue;const n=r.getAttribute("id"),o=r.getAttribute("href"),i=r.getAttribute("media-type")??"";n&&o&&e.set(n,{id:n,href:o,mediaType:i})}return e}function ot(t){return Array.from(t.getElementsByTagName("*")).filter(e=>e.localName==="itemref").map(e=>e.getAttribute("idref")??"").filter(Boolean)}async function st(t,e,r,n,o){var m,c,h,p;b(o);const i=new DOMParser().parseFromString(t,"text/html"),a=G(U(r,e));if(/\b(?:src|href|poster|style)\b/i.test(t))for(const f of Array.from(i.querySelectorAll("[src], [*|href], [poster], [style], style"))){for(const A of["src","href","xlink:href","poster"]){const k=f.getAttribute(A);if(!k)continue;const l=f.localName.toLowerCase()==="link"&&/(?:^|\s)stylesheet(?:\s|$)/i.test(f.getAttribute("rel")??""),d=await n.resolve(k,a,l);d&&f.setAttribute(A,d)}f.localName.toLowerCase()==="style"&&(f.textContent=await n.rewriteCss(f.textContent??"",a));const y=f.getAttribute("style");y!==null&&f.setAttribute("style",await n.rewriteCss(y,a))}for(const f of i.querySelectorAll("a[href], area[href]")){const y=f.getAttribute("href").trim();y.startsWith("#")&&f.setAttribute("href",`about:srcdoc${y}`)}return b(o),{title:((c=(m=i.querySelector("title"))==null?void 0:m.textContent)==null?void 0:c.trim())||((p=(h=i.querySelector("h1,h2,h3"))==null?void 0:h.textContent)==null?void 0:p.trim())||void 0,html:`<!doctype html>${i.documentElement.outerHTML}`}}function b(t){if(t!=null&&t.aborted)throw new DOMException("Ebook preview aborted.","AbortError")}function q(t,e){const r=new DOMParser().parseFromString(t,"application/xml");if(r.getElementsByTagName("parsererror")[0])throw new Error(`Invalid XML in ${e}.`);return r}function at(t,e){var n;const r=Array.from(t.getElementsByTagName("*")).find(o=>o.localName===e);return((n=r==null?void 0:r.textContent)==null?void 0:n.trim())??""}function ct(t){return t==="application/xhtml+xml"||t==="text/html"}function lt(t){return/\.(?:avif|bmp|gif|jpe?g|png|svg|webp)$/i.test(t)}function ft(t){const e=P(t.split(".").pop());return{avif:"image/avif",bmp:"image/bmp",gif:"image/gif",jpg:"image/jpeg",jpeg:"image/jpeg",png:"image/png",svg:"image/svg+xml",webp:"image/webp"}[e]??"application/octet-stream"}function ht(t,e){return`<!doctype html><html><head><meta charset="utf-8"><title>${H(t)}</title><style>
2
+ html,body{margin:0;min-height:100%;background:#111827;color:#f8fafc;font-family:system-ui,sans-serif;}
3
+ body{display:flex;align-items:center;justify-content:center;}
4
+ img{display:block;max-width:100%;max-height:100vh;width:auto;height:auto;object-fit:contain;}
5
+ </style></head><body><img src="${N(e)}" alt="${N(t)}"></body></html>`}function H(t){return t.replace(/[&<>]/g,e=>({"&":"&amp;","<":"&lt;",">":"&gt;"})[e]??e)}function N(t){return H(t).replace(/"/g,"&quot;")}function G(t){const e=ut(t),r=e.lastIndexOf("/");return r>0?e.slice(0,r):""}function ut(t){const e=[];for(const r of t.replace(/\\/g,"/").split("/"))if(!(!r||r===".")){if(r===".."){e.pop();continue}e.push(r)}return e.join("/")}function P(t){return String(t??"").trim().replace(/^\./,"").toLowerCase()}export{bt as a,gt as c};
@@ -0,0 +1 @@
1
+ import{r as R,n as H,i as B}from"./mp4box.all-Bw_Tlr0T-D0URDfA1.js";import{l as c,h as j,g as N,o as V,y as W,e as v,r as I,b as P,f as q,m as G,v as J}from"./browser-video-session-CGI8FpX_.js";import{x as ie,_ as se,C as re,S as ae,w as oe,t as ne,i as de,T as ce,p as he,n as le,a as me}from"./browser-video-session-CGI8FpX_.js";var K=B({AvcFragmentMuxer:()=>F,Mp4SampleStream:()=>U,mp4Fragment:()=>z}),U=class{constructor(r,i){if(c(this,"source",void 0),c(this,"tracks",void 0),c(this,"samples",new Map),c(this,"accessPoints",new Map),c(this,"offsets",new Map),c(this,"mux",R()),c(this,"initializations",new Map),c(this,"cache",void 0),this.source=r,this.tracks=i.format.tracks,this.tracks.some(t=>t.encrypted))throw Error("Encrypted media is unsupported");if(this.tracks.filter(t=>t.kind==="video").length!==1||this.tracks.filter(t=>t.kind==="audio").length>1||this.tracks.some(t=>t.kind!=="video"&&t.kind!=="audio"))throw Error("Cannot preserve this media track layout");if(i.format.fragmented)throw Error("Fragmented input requires the existing native playback path");for(let t of this.tracks){let s=i.file.getTrackById(t.id),a=s.mdia.minf.stbl.stsd.entries[0],o=s.tkhd.matrix;if(t.kind==="video"&&(o[0]!==65536||o[1]!==0||o[3]!==0||o[4]!==65536))throw Error("Cannot preserve rotated or scaled track geometry");let e=i.movie.tracks.find(l=>l.id===t.id),h=0,n=0,f=0;for(let l of e.edits||[]){if(l.media_rate_integer!==void 0&&(l.media_rate_integer!==1||l.media_rate_fraction!==0))throw Error("Cannot preserve track edit rate");if(l.media_time<0&&!f)h+=l.segment_duration/i.movie.timescale;else{if(++f>1)throw Error("Cannot preserve multiple track edits");n=h-l.media_time/t.timescale}}this.offsets.set(t.id,n);let p=i.file.getTrackSamplesInfo(t.id);if(!p.length||p.length>v.indexSamples)throw Error("Media index budget exceeded");this.samples.set(t.id,p),this.accessPoints.set(t.id,p.map((l,g)=>g).filter(l=>t.kind==="audio"||p[l].is_sync).sort((l,g)=>p[l].cts-p[g].cts)),this.mux.addTrack({id:t.id,type:a.type,timescale:t.timescale,width:t.width,height:t.height,hdlr:t.kind==="audio"?"soun":"vide",channel_count:t.channels,samplerate:t.sampleRate,description_boxes:a.boxes.filter(l=>["avcC","hvcC","av1C","vpcC","esds","colr","pasp"].includes(l.type))}),this.mux.setSegmentOptions(t.id,null,{nbSamples:16})}this.mux.onSegment=()=>{};for(let t of this.mux.initializeSegmentation("per-track"))this.initializations.set(t.id,t.buffer)}count(r){var i;return((i=this.samples.get(r))==null?void 0:i.length)||0}offset(r){return this.offsets.get(r)||0}initialization(r){return this.initializations.get(r)}seekIndex(r,i){let t=this.tracks.find(n=>n.id===r),s=this.samples.get(r),a=(i-this.offset(r))*t.timescale,o=this.accessPoints.get(r),e=0,h=o.length;for(;e<h;){let n=Math.floor((e+h)/2);s[o[n]].cts<=a?e=n+1:h=n}return e?o[e-1]:0}retentionStart(r,i){var a;let t=(a=this.samples.get(r))==null?void 0:a[this.seekIndex(r,i)],s=this.tracks.find(o=>o.id===r);return t?t.cts/s.timescale+this.offset(r):0}async packet(r,i,t){var e;let s=(e=this.samples.get(r))==null?void 0:e[i],a=this.tracks.find(h=>h.id===r);if(!s||!Number.isSafeInteger(s.offset)||s.offset<0||s.size<=0||s.size>v.readBytes)throw Error("Media sample budget exceeded");let o=s.offset+s.size;if(!this.cache||s.offset<this.cache.start||o>this.cache.start+this.cache.bytes.byteLength){let h=Math.min(this.source.size??o,s.offset+v.readBytes);this.cache={start:s.offset,bytes:await I(this.source.read(s.offset,h,t),t)}}if(o>this.cache.start+this.cache.bytes.byteLength)throw Error("Truncated media sample");return{data:this.cache.bytes.subarray(s.offset-this.cache.start,o-this.cache.start),timestamp:Math.round((s.cts/a.timescale+this.offset(r))*1e6),duration:Math.round(s.duration/a.timescale*1e6),type:s.is_sync?"key":"delta"}}async fragment(r,i,t){let s=this.samples.get(r),a=this.tracks.find(n=>n.id===r),o=s[i],e=[],h=0;for(;i<s.length&&e.length<16;){let n=s[i];if(e.length&&(n.dts-o.dts>a.timescale*.25||h+n.size>v.encodedBytes))break;let f=await this.packet(r,i++,t);e.push({...n,data:f.data}),h+=n.size}return{data:z(this.mux,e),next:i,start:o.cts/a.timescale+this.offset(r),end:Math.max(...e.map(n=>(n.cts+n.duration)/a.timescale+this.offset(r)))}}close(){this.cache=void 0,this.samples.clear(),this.accessPoints.clear(),this.initializations.clear(),this.mux.stop()}};function z(r,i){let t=r.createMoof(i),s=new H;t.write(s),s.adjustUint32(t.trafs[0].truns[0].data_offset_position,t.size+8);let a=i.reduce((n,f)=>n+f.data.byteLength,0);if(a>v.encodedBytes)throw Error("Media fragment budget exceeded");s.writeUint32(a+8),s.writeString("mdat");let o=new Uint8Array(s.buffer),e=new Uint8Array(o.byteLength+a);e.set(o);let h=o.byteLength;for(let n of i)e.set(n.data,h),h+=n.data.byteLength;return e.buffer}var F=class{constructor(r){if(c(this,"file",R()),c(this,"id",void 0),c(this,"count",0),!r.codec.startsWith("avc1")||!r.description)throw Error("AVC decoder configuration required for MP4");let i=ArrayBuffer.isView(r.description)?new Uint8Array(r.description.buffer,r.description.byteOffset,r.description.byteLength):new Uint8Array(r.description);this.id=this.file.addTrack({type:"avc1",timescale:1e6,width:r.codedWidth,height:r.codedHeight,avcDecoderConfigRecord:i.slice().buffer}),this.file.setSegmentOptions(this.id,null,{nbSamples:1}),this.file.onSegment=()=>{}}initialization(){return this.file.initializeSegmentation("per-track")[0].buffer}fragment(r,i){let t=new Uint8Array(r.byteLength);r.copyTo(t);let s=Math.max(r.duration||0,Math.round(1e6/i));return z(this.file,[{track_id:this.id,number:this.count++,description_index:1,dts:r.timestamp,cts:r.timestamp,duration:s,is_sync:r.type==="key",data:t,size:t.byteLength}])}close(){this.file.stop()}},Q=B({Mp4StreamPlayback:()=>X});function _(r,i,t){return new Promise((s,a)=>{let o=()=>{clearTimeout(f),r.removeEventListener(i,e),r.removeEventListener("error",h),t.removeEventListener("abort",n)},e=()=>{o(),s()},h=()=>{o(),a(Error(`Media ${i} failed`))},n=()=>{o(),a(t.reason)},f=setTimeout(h,v.operationTimeoutMs);r.addEventListener(i,e,{once:true}),r.addEventListener("error",h,{once:true}),t.addEventListener("abort",n,{once:true}),t.aborted&&n()})}var X=class O{constructor(i,t,s,a,o){c(this,"source",void 0),c(this,"inspection",void 0),c(this,"video",void 0),c(this,"options",void 0),c(this,"env",void 0),c(this,"lifetime",new AbortController),c(this,"run",void 0),c(this,"pumping",Promise.resolve()),c(this,"switching",Promise.resolve()),c(this,"samples",void 0),c(this,"url",""),c(this,"media",void 0),c(this,"runStart",0),c(this,"restarting",false),c(this,"revision",0),c(this,"metrics",void 0),c(this,"onSeeking",()=>{if(!(this.restarting||this.lifetime.signal.aborted||Math.abs(this.video.currentTime-this.runStart)<.05)){for(let e=0;e<this.video.buffered.length;e++)if(this.video.currentTime>=this.video.buffered.start(e)&&this.video.currentTime<this.video.buffered.end(e))return;this.seek(this.video.currentTime).catch(e=>{var h,n;this.lifetime.signal.aborted||((n=(h=this.options).onError)==null||n.call(h,e))})}}),this.source=i,this.inspection=t,this.video=s,this.options=a,this.env=o,this.samples=new U(i,t)}static async open(i,t,s,a={},o=globalThis){var n,f;let e=new O(i,t,s,a,o),h=()=>{e.close()};(n=a.signal)==null||n.addEventListener("abort",h,{once:true}),e.lifetime.signal.addEventListener("abort",()=>{var p;return(p=a.signal)==null?void 0:p.removeEventListener("abort",h)},{once:true}),(f=a.signal)!=null&&f.aborted&&(await e.close(),a.signal.throwIfAborted()),s.addEventListener("seeking",e.onSeeking);try{return await e.seek(a.startTime||0,a.autoplay??(!s.paused||s.autoplay)),e}catch(p){throw await e.close(),p}}get done(){return this.pumping}seek(i,t=!this.video.paused){var e;if(!Number.isFinite(i)||i<0)return Promise.reject(Error("Invalid media seek"));let s={rate:this.video.playbackRate,volume:this.video.volume,muted:this.video.muted,loop:this.video.loop},a=++this.revision;(e=this.run)==null||e.abort();let o=this.switching.catch(()=>{}).then(()=>this.start(i,t,s,a));return this.switching=o,o}async start(i,t,s,a){if(this.lifetime.signal.throwIfAborted(),a!==this.revision||(await this.pumping.catch(()=>{}),this.lifetime.signal.throwIfAborted(),a!==this.revision))return;this.releaseMedia();let o=P(this.lifetime.signal),e=o.controller.signal;this.run=o.controller,this.runStart=i,this.restarting=true;let h=this.env.ManagedMediaSource||this.env.MediaSource;if(!h)throw o.dispose(),Error("MSE unavailable");let n=this.media=new h;this.url=this.env.URL.createObjectURL(n);let f=_(n,"sourceopen",e);this.video.disableRemotePlayback=true,this.video.src=this.url,this.video.load();try{await f}catch(d){throw o.dispose(),this.restarting=false,d}e.throwIfAborted(),this.video.playbackRate=s.rate,this.video.volume=s.volume,this.video.muted=s.muted,this.video.loop=s.loop,n.duration=Math.max(this.inspection.format.duration||0,...this.samples.tracks.map(d=>d.duration)),i>0&&(this.video.currentTime=Math.min(i,n.duration));let p,l,g=new Promise((d,m)=>{p=d,l=m}),x=()=>{e.aborted||(this.restarting=false,t&&this.video.play().catch(d=>{var m,u;d.name!=="NotAllowedError"&&d.name!=="AbortError"&&!e.aborted&&((u=(m=this.options).onError)==null||u.call(m,d))}))};this.video.addEventListener("loadeddata",x,{once:true});let C=()=>this.video.removeEventListener("loadeddata",x);e.addEventListener("abort",C,{once:true});let k=new Map;for(let d of this.samples.tracks){let m=d.kind==="video"&&this.options.encoderConfig?this.options.encoderConfig.codec:d.codec,u=n.addSourceBuffer(`${d.kind}/mp4; codecs="${m}"`);d.kind==="video"&&this.options.encoderConfig||(u.timestampOffset=this.samples.offset(d.id)),k.set(d.id,u)}let T=async d=>{let m=this.samples.tracks.find(w=>w.id===d),u=k.get(d);await this.append(u,this.samples.initialization(d),e);let b=this.samples.seekIndex(d,i);for(;b<this.samples.count(d);){let w=await this.samples.fragment(d,b,e);await this.backpressure(w.start,e),await this.trim(u,e,this.samples.retentionStart(d,this.video.currentTime-v.bufferBehindSeconds)),await this.append(u,w.data,e),b=w.next,m.kind==="video"&&p()}},M,E=[],D=async d=>{let m=k.get(d),u=false,b=this.samples,w=this.env,L=this.options.encoderConfig;this.metrics=await new J(w).run({signal:e,decoderConfig:this.options.decoderConfig,encoderConfig:L,startTimestamp:Math.round(i*1e6),onMetrics:this.options.onMetrics,chunks:async function*(S){for(let y=b.seekIndex(d,i);y<b.count(d);y++){let A=await b.packet(d,y,S);yield new w.EncodedVideoChunk(A)}},sink:async(S,y)=>{if(!u){if(M=new F(y.decoderConfig),y.decoderConfig.codec!==L.codec){if(!m.changeType)throw Error("Encoder codec change requires SourceBuffer.changeType");m.changeType(`video/mp4; codecs="${y.decoderConfig.codec}"`)}await this.append(m,M.initialization(),e),u=true}await this.backpressure(S.timestamp/1e6,e),S.type==="key"&&E.push(S.timestamp/1e6);let A=this.video.currentTime-v.bufferBehindSeconds;for(;E.length>1&&E[1]<=A;)E.shift();await this.trim(m,e,E[0]<=A?E[0]:0),await this.append(m,M.fragment(S,L.framerate||30),e),p()}})};this.pumping=(async()=>{let d=this.samples.tracks.map(m=>m.kind==="video"&&this.options.encoderConfig?D(m.id):T(m.id));try{await Promise.all(d),e.throwIfAborted(),n.readyState==="open"&&n.endOfStream(),p()}catch(m){throw l(m),o.controller.abort(m),await Promise.allSettled(d),m}finally{M==null||M.close(),o.dispose(),C(),e.removeEventListener("abort",C)}})(),this.pumping.catch(d=>{var m,u;e.aborted&&e.reason!==d||(d==null?void 0:d.name)==="AbortError"||this.lifetime.signal.aborted||((u=(m=this.options).onError)==null||u.call(m,d))});try{await I(g,e)}finally{this.restarting=false}}async backpressure(i,t){for(;i>this.video.currentTime+v.bufferAheadSeconds;)await I(new Promise(s=>setTimeout(s,50)),t)}async append(i,t,s){s.throwIfAborted();let a=P(s),o=_(i,"updateend",a.controller.signal);try{i.appendBuffer(t),await o}catch(e){throw a.controller.abort(),await o.catch(()=>{}),e}finally{a.dispose()}}async trim(i,t,s){if(s>0&&i.buffered.length&&i.buffered.start(0)<s){let a=P(t),o=_(i,"updateend",a.controller.signal);try{i.remove(0,s),await o}catch(e){throw a.controller.abort(),await o.catch(()=>{}),e}finally{a.dispose()}}}releaseMedia(){this.url&&(this.video.src===this.url&&(this.video.pause(),this.video.removeAttribute("src"),this.video.load()),this.env.URL.revokeObjectURL(this.url),this.url=""),this.media=void 0}async close(){var i;this.revision++,this.lifetime.abort(),(i=this.run)==null||i.abort(),this.video.removeEventListener("seeking",this.onSeeking),await this.pumping.catch(()=>{}),await this.switching.catch(()=>{}),this.releaseMedia(),this.samples.close(),this.source.close(),this.inspection=void 0}},$=class{constructor(r=globalThis){c(this,"env",void 0),c(this,"capabilities",void 0),c(this,"inspector",new q),c(this,"negotiator",new G),c(this,"policy",new j(this.negotiator)),c(this,"performance",new N),c(this,"hardware",void 0),this.env=r,this.capabilities=new V(r),this.hardware=new W(r)}async recover(r,i,t={}){var s;try{let a=await this.inspector.openMp4(r,t.signal),{Mp4SampleStream:o}=await Promise.resolve().then(()=>K);new o(r,a).close();let e=a.format.tracks.find(l=>l.kind==="video");if(a.format.tracks.filter(l=>l.kind==="audio").some(l=>this.capabilities.playback(`audio/mp4; codecs="${l.codec}"`,"mse")!=="supported"))throw Error("Client recovery cannot preserve this audio codec");let h=this.capabilities.playback(`video/mp4; codecs="${e.codec}"`,"mse")==="supported",n,f;if(!h){if(!t.allowTranscoding)throw Error("Client video transcoding is not enabled");let l=a.file.getTrackById(e.id).mdia.minf.stbl.stsd.entries[0];if([16,18].includes((s=l.colr)==null?void 0:s.transfer_characteristics))throw Error("Client HDR tone mapping is unavailable");let g=Math.min(1,1280/e.width,720/e.height);n={codec:e.codec,description:e.description,codedWidth:e.width,codedHeight:e.height,hardwareAcceleration:"prefer-hardware"},f={codec:"avc1.42001f",width:Math.max(2,Math.floor(e.width*g/2)*2),height:Math.max(2,Math.floor(e.height*g/2)*2),framerate:30,bitrate:25e5,hardwareAcceleration:"prefer-hardware",latencyMode:"realtime",avc:{format:"avc"}};let x=await this.capabilities.video(n,"decode",t.signal),C=await this.capabilities.video(f,"encode",t.signal),k=this.capabilities.playback(`video/mp4; codecs="${f.codec}"`,"mse"),T=this.policy.decide({direct:"unsupported",path:"mse",sourceDecode:x.support,candidates:[{codec:"avc",codecString:f.codec,decode:x.support,encode:C.support,playback:k,transport:k,preference:"prefer-hardware",execution:"unknown"}]});if(T.kind!=="client-transcode")throw Error(`Client recovery unavailable: ${T.reason}`)}let{Mp4StreamPlayback:p}=await Promise.resolve().then(()=>Q);return await p.open(r,a,i,{...t,decoderConfig:n,encoderConfig:f},this.env)}catch(a){throw r.close(),a}}};export{F as AvcFragmentMuxer,J as BoundedVideoTranscoder,G as CodecNegotiator,W as HardwareAccelerationProbe,ie as HttpRangeSource,v as MEDIA_LIMITS,V as MediaCapabilityDetector,se as MediaCodecFailure,$ as MediaEngine,q as MediaFormatInspector,U as Mp4SampleStream,X as Mp4StreamPlayback,re as PhotosHttpAdapter,ae as ReceiverMediaSource,N as RuntimePerformanceMonitor,j as TranscodingPolicy,oe as WebRTCAdapter,ne as abortError,I as cancellable,de as cancellableFrame,ce as createProcessedVideoTrack,P as linkAbort,he as measuredSoftware,z as mp4Fragment,le as validNumber,me as waitUntil};