filens-preview 0.3.2 → 0.3.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.
- package/README.md +4 -4
- package/dist/all-in-one/THIRD-PARTY-NOTICES.txt +583 -0
- package/dist/all-in-one/filens.js +305 -305
- package/dist/index.d.ts +1 -1
- package/dist/split/THIRD-PARTY-NOTICES.txt +583 -0
- package/dist/split/chunks/{archive-haip2eOP.js → archive-BT6evXzB.js} +1 -1
- package/dist/split/chunks/{browser-video-session-C_14e_mG.js → browser-video-session-BX-bBV8b.js} +1 -1
- package/dist/split/chunks/{cad-5oTkbaDV.js → cad-D4xpsKTK.js} +1 -1
- package/dist/split/chunks/{core-EjELrtsP.js → core-DMIUha7u.js} +10 -10
- package/dist/split/chunks/{diagram-BRcdlitF.js → diagram-DEaht2P0.js} +1 -1
- package/dist/split/chunks/{docx-I39iDYpR.js → docx-CDkeTBtm.js} +1 -1
- package/dist/split/chunks/{ebook-BRfadCGl.js → ebook-Hm8yI-Uy.js} +1 -1
- package/dist/split/chunks/index-JSBoG8MK.js +1 -0
- package/dist/split/chunks/{index-DkF8PBGR.js → index-cyA_1amh.js} +1 -1
- package/dist/split/chunks/{iwork-DXq9Adf7.js → iwork-Drn02EYr.js} +1 -1
- package/dist/split/chunks/{media-runtime-B6322raw.js → media-runtime-C31OgCrW.js} +1 -1
- package/dist/split/chunks/{mindmap-CyR3TRfx.js → mindmap-CZvf6m9O.js} +1 -1
- package/dist/split/chunks/{model3d-BEt6INTt.js → model3d-DXfxzjT8.js} +1 -1
- package/dist/split/chunks/{panorama-ChsqnvWC.js → panorama-COXaZ8XC.js} +10 -10
- package/dist/split/chunks/vendor-C8SyXchM.js +4115 -0
- package/dist/split/chunks/{xlsx-CITQo0Od.js → xlsx-bMXHZBbO.js} +1 -1
- package/dist/split/converter-core.wasm +0 -0
- package/dist/split/converter-office.wasm +0 -0
- package/dist/split/converter-postscript.wasm +0 -0
- package/dist/split/filens.js +2 -2
- package/package.json +1 -1
- package/dist/split/chunks/index-C4jdVbDq.js +0 -1
- package/dist/split/chunks/vendor-C1aIdQ-w.js +0 -4115
|
@@ -1 +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-C_14e_mG.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-C_14e_mG.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};
|
|
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-BX-bBV8b.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-BX-bBV8b.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};
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
var ge=Object.defineProperty;var we=(e,t,n)=>t in e?ge(e,t,{enumerable:true,configurable:true,writable:true,value:n}):e[t]=n;var S=(e,t,n)=>we(e,typeof t!="symbol"?t+"":t,n);import{M as oe,r as pe,b as be,c as ve,a as ke,d as Z,e as Se,f as Q,g as X,h as ye}from"./core-EjELrtsP.js";import{R as q,c as Ee,a as Me}from"./xlsx-CITQo0Od.js";async function xe(e,t={}){if(U(t.signal),typeof e=="string"){const n=await fetch(e,{signal:t.signal});if(!n.ok)throw new Error(`Failed to fetch iWork source: ${n.status} ${n.statusText}`);const s=new Uint8Array(await n.arrayBuffer());return U(t.signal),s}if(ArrayBuffer.isView(e))return new Uint8Array(e.buffer,e.byteOffset,e.byteLength).slice();if(Le(e))return new Uint8Array(e).slice();if(Te(e)){U(t.signal);const n=new Uint8Array(await e.arrayBuffer());return U(t.signal),n}throw new Error("Unsupported iWork source type.")}function U(e){if(e!=null&&e.aborted)throw Ce()}function Ce(){try{return new DOMException("The operation was aborted.","AbortError")}catch{const e=new Error("The operation was aborted.");return e.name="AbortError",e}}function Le(e){return e instanceof ArrayBuffer||Object.prototype.toString.call(e)==="[object ArrayBuffer]"||Object.prototype.toString.call(e)==="[object SharedArrayBuffer]"}function Te(e){return typeof e=="object"&&e!==null&&typeof e.arrayBuffer=="function"&&typeof e.size=="number"}class Pe{constructor(){S(this,"worker",null);S(this,"destroyed",false);S(this,"requestId",0);S(this,"pending",new Map);S(this,"handleMessage",t=>{const n=this.pending.get(t.data.id);if(!n)return;if(this.pending.delete(t.data.id),t.data.error){n.reject(new Error(t.data.error));return}const s=t.data.document??t.data.sheet;if(!s){n.reject(new Error("iWork parser worker returned an empty result."));return}n.resolve(s)});S(this,"handleError",t=>{const n=new Error(t.message||"iWork parser worker failed.");this.stopWorker(n)});if(typeof Worker>"u")throw new Error("Web Worker is required for iWork preview parsing.");this.getWorker()}getWorker(){if(this.destroyed)throw new Error("iWork parser worker has been destroyed.");return this.worker?this.worker:(this.worker=new Worker(new URL(""+new URL("../assets/iwork-worker-B9KPoDW3.js",import.meta.url).href,import.meta.url),{type:"module"}),this.worker.addEventListener("message",this.handleMessage),this.worker.addEventListener("error",this.handleError),this.worker)}parse(t,n,s){this.pending.size&&this.cancel();const i=++this.requestId,a=t.buffer instanceof ArrayBuffer&&t.byteOffset===0&&t.byteLength===t.buffer.byteLength?t.buffer:t.slice().buffer;return new Promise((u,m)=>{this.pending.set(i,{resolve:u,reject:m}),this.postRequest(i,{kind:"document",id:i,bytes:a,hint:n,sourceName:s},[a])})}parseSheet(t){const n=++this.requestId;return new Promise((s,i)=>{this.pending.set(n,{resolve:s,reject:i}),this.postRequest(n,{kind:"sheet",id:n,index:t})})}cancel(){if(this.pending.size)this.stopWorker(new DOMException("iWork parsing cancelled.","AbortError"));else if(this.worker)try{this.worker.postMessage({kind:"clear"})}catch{this.stopWorker(new DOMException("iWork parsing cancelled.","AbortError"))}}destroy(){this.destroyed=true,this.stopWorker(new DOMException("iWork parser worker terminated.","AbortError"))}postRequest(t,n,s=[]){try{this.getWorker().postMessage(n,s)}catch(i){const a=this.pending.get(t);this.pending.delete(t),a==null||a.reject(i instanceof Error?i:new Error(String(i)))}}stopWorker(t){const n=this.worker;this.worker=null,n==null||n.removeEventListener("message",this.handleMessage),n==null||n.removeEventListener("error",this.handleError),n==null||n.terminate();for(const s of this.pending.values())s.reject(t);this.pending.clear()}}const ae={colors:{},fonts:{}};function Fe(e){return new oe(Ie(e))}function V(e){return e.kind==="key"?e.slides:e.kind==="pages"?e.pages.map(t=>t.canvas):e.sheets.map(t=>t.canvas)}function ee(e,t,n,s){const i=Ae(t,n.slide),a=s??new oe(i),u=e.createElement("div");u.className=t.kind==="numbers"?"iworkv-page-shell iworkv-sheet-shell":"iworkv-page-shell";const m=pe(n.slide,i,{mediaRegistry:a});return u.appendChild(m),u}function Ae(e,t){return e.kind==="key"?{...e.presentation,slides:[t]}:{size:{width:t.width,height:t.height},theme:ae,slides:[t],media:e.media,warnings:e.warnings.slice()}}function Ie(e){return e.kind==="key"?e.presentation:{size:{width:1,height:1},theme:ae,slides:V(e).map(t=>t.slide),media:e.media,warnings:e.warnings.slice()}}function Re(e,t={}){var K;const n=new Map,s=new Pe,i=t.fit===void 0;let a=null,u=null,m=null,R=0,b=false;const r={loading:false,error:null,kind:null,currentPage:0,pageCount:0,currentSheet:0,sheetCount:0,scale:t.initialScale??1,fit:t.fit??"contain",warnings:[],document:null};e.classList.add("iworkv-root"),e.innerHTML='<div class="iworkv-stage"></div>';const k=e.querySelector(".iworkv-stage");let C=null,P=[];const B=new Map,L=new Set,D=new Map;let N,F=0,O=()=>{};const y=(o,h)=>{var l;(l=n.get(o))==null||l.forEach(c=>c(h))},A=()=>{e.classList.toggle("is-loading",r.loading),e.classList.toggle("is-error",!!r.error),e.dataset.status=r.error??(r.loading?"Loading document...":"")},E=()=>({...r,warnings:r.warnings.slice()}),j=()=>{O(),O=()=>{};const o=u;u=null,o==null||o.abort(),s.cancel(),m==null||m.abort(),m=null,C==null||C.disconnect(),C=null,F&&typeof cancelAnimationFrame<"u"&&cancelAnimationFrame(F),F=0,k.replaceChildren(),k.classList.remove("iworkv-numbers-stage"),P=[],B.clear(),L.clear(),D.clear(),a==null||a.destroy(),a=null,Object.assign(r,{document:null,kind:null,loading:false,error:null,warnings:[],currentPage:0,pageCount:0,currentSheet:0,sheetCount:0}),e.scrollTop=0,e.scrollLeft=0},I=()=>{var h;if(m==null||m.abort(),m=new AbortController,k.innerHTML="",k.classList.toggle("iworkv-numbers-stage",((h=r.document)==null?void 0:h.kind)==="numbers"),P=[],B.clear(),L.clear(),!r.document)return;const o=V(r.document);if(o.length){if(r.document.kind==="numbers"){le();return}if(r.document.kind==="key"||r.document.kind==="pages"){const l=document.createElement("div");l.className="iworkv-pages";const c=k.getBoundingClientRect();o.forEach((d,g)=>{const w=document.createElement("div");w.className="iworkv-page-shell",z(w,d.width,d.height,G(d.width,d.height,c)),w.dataset.pageIndex=String(g),l.appendChild(w),P.push(w)}),k.appendChild(l),L.add(r.currentPage),$();return}}},le=()=>{var p;if(((p=r.document)==null?void 0:p.kind)!=="numbers")return;const o=document.createElement("div");o.className="xlsxv-preview";const h=document.createElement("div");h.className="xlsxv-sheet-tabs",r.document.sheets.forEach((f,M)=>{const v=document.createElement("button");v.type="button",v.className="xlsxv-sheet-tab",v.classList.toggle("is-active",M===r.currentSheet),v.textContent=f.name,v.addEventListener("click",()=>J(M),{signal:m.signal}),h.appendChild(v)});const l=document.createElement("div");l.className="xlsxv-grid";const c=document.createElement("div");c.className="iworkv-numbers-tables";const d=r.document.sheets[r.currentSheet],g=((d==null?void 0:d.tables)??[]).map(({item:f},M)=>{const v=Be(f,M),x=document.createElement("section");if(x.className="iworkv-numbers-table",x.style.containIntrinsicBlockSize=`auto ${(Math.min(Math.max(v.rowCount,1),q)+1)*26}px`,((d==null?void 0:d.tables.length)??0)>1){const H=document.createElement("h3");H.className="iworkv-numbers-table-title",H.textContent=`Table ${M+1}`,x.appendChild(H)}const T=Ee(v,Math.min(Math.max(v.rowCount,1),(N==null?void 0:N[M])??q));return ne(T,f,a),x.appendChild(T),c.appendChild(x),{sheet:v,item:f,table:T,body:T.tBodies[0]}}),w=(d==null?void 0:d.canvas.slide.items.filter(f=>f.kind!=="table"))??[];if(d&&w.length){const f=document.createElement("section"),M=document.createElement("h3");M.className="iworkv-numbers-table-title",M.textContent="Sheet objects";const v={...d.canvas,slide:{...d.canvas.slide,items:w}},x=ee(document,r.document,v,a??void 0),T=Math.max(k.getBoundingClientRect().width-32,1);z(x,v.width,v.height,T/Math.max(v.width,1)),f.className="iworkv-numbers-objects",f.append(M,x),c.appendChild(f)}l.appendChild(c),l.addEventListener("scroll",()=>{if(!(l.scrollHeight-l.scrollTop-l.clientHeight>l.clientHeight*2))for(const{sheet:f,item:M,table:v,body:x}of g){const T=x.rows.length;T<f.rowCount&&(Me(x,f,T+1,Math.min(T+q,f.rowCount)),ne(v,M,a))}},{passive:true,signal:m.signal}),o.replaceChildren(h,l),k.appendChild(o)},$=()=>{if(!r.document||r.document.kind==="numbers")return;const o=V(r.document),l=t.virtual??r.document.kind==="pages"?L:new Set(P.map((c,d)=>d));for(const[c,d]of B)l.has(c)||(d.remove(),B.delete(c));for(const c of l){if(B.has(c))continue;const d=P[c],g=o[c];if(!d||!g)continue;const w=ee(document,r.document,g,a??void 0).firstElementChild;w&&(d.appendChild(w),z(d,g.width,g.height,r.scale),B.set(c,w))}},_=()=>{if(F=0,!r.document||r.document.kind==="numbers"||!P.length)return;const o=Ne(e),h=(o.top+o.bottom)/2,l=Math.max(o.height,1);let c=r.currentPage,d=Number.POSITIVE_INFINITY;L.clear(),P.forEach((g,w)=>{const p=g.getBoundingClientRect();p.bottom>=o.top-l&&p.top<=o.bottom+l&&L.add(w);const f=Math.abs((p.top+p.bottom)/2-h);f<d&&(d=f,c=w)}),L.size||L.add(c),$(),c!==r.currentPage&&(r.currentPage=c,y("pagechange",E()))},W=()=>{if(F||typeof requestAnimationFrame>"u"){F||_();return}F=requestAnimationFrame(_)};e.addEventListener("scroll",W,{passive:true}),e.ownerDocument.addEventListener("scroll",W,{capture:true,passive:true}),(K=e.ownerDocument.defaultView)==null||K.addEventListener("scroll",W,{passive:true});const ce=o=>{if(!r.document||r.document.kind==="numbers")return;const h=k.querySelector(`.iworkv-page-shell[data-page-index="${o}"]`);h&&h.scrollIntoView({block:"nearest",inline:"nearest"})},G=(o,h,l)=>{if(r.fit==="none")return r.scale;const c=l??k.getBoundingClientRect(),d=Math.max(c.width-32,1),g=Math.max(c.height-32,1);return r.fit==="width"?(r.scale=d/Math.max(o,1),r.scale):r.fit==="height"?(r.scale=g/Math.max(h,1),r.scale):(r.scale=Math.min(d/Math.max(o,1),g/Math.max(h,1)),r.scale)},de=()=>{C==null||C.disconnect(),C=null,!(typeof ResizeObserver>"u")&&(C=new ResizeObserver(()=>{var h;if(!r.document||r.fit==="none")return;if(r.document.kind==="numbers"){const l=(h=r.document.sheets[r.currentSheet])==null?void 0:h.canvas,c=k.querySelector(".iworkv-numbers-objects .iworkv-page-shell");if(l&&c){const d=Math.max(k.getBoundingClientRect().width-32,1);z(c,l.width,l.height,d/Math.max(l.width,1))}return}const o=k.getBoundingClientRect();V(r.document).forEach((l,c)=>{const d=P[c];d&&z(d,l.width,l.height,G(l.width,l.height,o))}),y("scalechange",E())}),C.observe(k))},ue=o=>{var c,d;const h=((c=r.document)==null?void 0:c.kind)==="numbers"?r.document:null;if(!h||((d=h.sheets[o])==null?void 0:d.loaded)!==false||(r.currentSheet===o&&(e.classList.add("is-loading"),e.dataset.status="Loading sheet..."),D.has(o)))return;const l=s.parseSheet(o).then(g=>{r.document===h&&(h.sheets[o]=g,r.currentSheet===o&&(I(),A()),y("sheetchange",E()))}).catch(g=>{if(r.document!==h)return;const w=g instanceof Error?g:new Error(String(g));r.currentSheet===o&&(r.error=w.message,A(),y("error",w))}).finally(()=>{D.get(o)===l&&D.delete(o)});D.set(o,l)},he=async(o,h={})=>{var g,w;if(b)throw new Error("iWork viewer has been destroyed.");const l=++R;j();const c=new AbortController;u=c;const d=()=>{u===c&&(j(),A(),y("loadingchange",E()))};if((g=h.signal)==null||g.addEventListener("abort",d,{once:true}),c.signal.addEventListener("abort",()=>{var p;return(p=h.signal)==null?void 0:p.removeEventListener("abort",d)},{once:true}),(w=h.signal)!=null&&w.aborted)throw d(),new DOMException("The operation was aborted.","AbortError");r.loading=true,r.error=null,A(),y("loadingchange",E());try{const p=await te(xe(o,{signal:c.signal}),c.signal);if(c.signal.aborted)throw new DOMException("The operation was aborted.","AbortError");const f=await te(s.parse(p,t.type,De(o)),c.signal);if(c.signal.aborted)throw new DOMException("The operation was aborted.","AbortError");if(r.document=f,r.kind=f.kind,r.warnings=f.warnings.slice(),i&&(f.kind==="key"||f.kind==="pages")&&r.fit==="contain"&&(r.fit="width"),r.currentPage=0,r.currentSheet=0,D.clear(),r.pageCount=f.kind==="numbers"?0:f.kind==="key"?f.slides.length:f.pages.length,r.sheetCount=f.kind==="numbers"?f.sheets.length:0,a==null||a.destroy(),a=Fe(f),r.loading=false,I(),r.kind!=="numbers"&&(O=be(e,{getScale:()=>r.scale,setScale:Y,enabled:()=>!b&&!r.loading,minScale:t.minScale,maxScale:t.maxScale,signal:c.signal})),de(),A(),y("loadingchange",E()),u!==c)return;y("warnings",r.warnings),u===c&&y("rendered",E())}catch(p){if(b||R!==l)return;if(c.signal.aborted)throw new DOMException("The operation was aborted.","AbortError");const f=p instanceof Error?p:new Error(String(p));j(),r.error=f.message,A(),y("loadingchange",E()),!b&&R===l&&y("error",f)}},Y=o=>{b||r.kind==="numbers"||(r.fit="none",r.scale=Math.max(t.minScale??.25,Math.min(o,t.maxScale??4)),I(),y("scalechange",E()))},fe=(o="contain")=>{b||r.kind==="numbers"||(r.fit=o,I(),y("scalechange",E()))},me=(o,h)=>{if(b)return()=>{};const l=n.get(o)??new Set;return l.add(h),n.set(o,l),()=>{l.delete(h)}},J=o=>{b||r.kind!=="numbers"||(r.currentSheet=Math.max(0,Math.min(o,Math.max(r.sheetCount-1,0))),r.error=null,I(),A(),ue(r.currentSheet),y("sheetchange",E()))};return{preview:he,refreshFonts(){if(b||r.loading||!r.document)return;const o=e.scrollTop,h=e.scrollLeft,l=k.querySelector(".xlsxv-grid"),c=(l==null?void 0:l.scrollTop)??0,d=(l==null?void 0:l.scrollLeft)??0;N=[...k.querySelectorAll("table")].map(w=>{var p;return((p=w.tBodies[0])==null?void 0:p.rows.length)??q});try{I()}finally{N=void 0}e.scrollTop=o,e.scrollLeft=h;const g=k.querySelector(".xlsxv-grid");g&&(g.scrollTop=c,g.scrollLeft=d),y("rendered",E())},destroy(){var o;b||(b=true,O(),++R,n.clear(),j(),e.removeEventListener("scroll",W),e.ownerDocument.removeEventListener("scroll",W,true),(o=e.ownerDocument.defaultView)==null||o.removeEventListener("scroll",W),s.destroy(),e.classList.remove("iworkv-root","is-loading","is-error"),e.removeAttribute("data-status"),e.innerHTML="")},setScale:Y,fit:fe,goToPage(o){b||(r.currentPage=Math.max(0,Math.min(o,Math.max(r.pageCount-1,0))),r.document&&r.document.kind!=="numbers"?(L.clear(),L.add(r.currentPage),$(),ce(r.currentPage)):I(),y("pagechange",E()))},goToSheet:J,next(){r.kind==="numbers"?this.goToSheet(Math.min(r.currentSheet+1,Math.max(r.sheetCount-1,0))):this.goToPage(Math.min(r.currentPage+1,Math.max(r.pageCount-1,0)))},prev(){r.kind==="numbers"?this.goToSheet(Math.max(0,r.currentSheet-1)):this.goToPage(Math.max(0,r.currentPage-1))},getState:E,on:me}}function te(e,t){return new Promise((n,s)=>{const i=()=>s(new DOMException("The operation was aborted.","AbortError"));t.addEventListener("abort",i,{once:true}),e.then(n,s).finally(()=>t.removeEventListener("abort",i)),t.aborted&&i()})}function Be(e,t){const n=new Map;for(const s of e.cells){if(s.isMergedContinuation)continue;const i=s.row+1,a=n.get(i)??{index:i,cells:[]};a.cells.push({ref:`${i}:${s.column+1}`,row:i,column:s.column+1,value:s.textFrame.paragraphs.map(u=>u.runs.map(m=>m.text).join("")).join(`
|
|
1
|
+
var ge=Object.defineProperty;var we=(e,t,n)=>t in e?ge(e,t,{enumerable:true,configurable:true,writable:true,value:n}):e[t]=n;var S=(e,t,n)=>we(e,typeof t!="symbol"?t+"":t,n);import{M as oe,r as pe,b as be,c as ve,a as ke,d as Z,e as Se,f as Q,g as X,h as ye}from"./core-DMIUha7u.js";import{R as q,c as Ee,a as Me}from"./xlsx-bMXHZBbO.js";async function xe(e,t={}){if(U(t.signal),typeof e=="string"){const n=await fetch(e,{signal:t.signal});if(!n.ok)throw new Error(`Failed to fetch iWork source: ${n.status} ${n.statusText}`);const s=new Uint8Array(await n.arrayBuffer());return U(t.signal),s}if(ArrayBuffer.isView(e))return new Uint8Array(e.buffer,e.byteOffset,e.byteLength).slice();if(Le(e))return new Uint8Array(e).slice();if(Te(e)){U(t.signal);const n=new Uint8Array(await e.arrayBuffer());return U(t.signal),n}throw new Error("Unsupported iWork source type.")}function U(e){if(e!=null&&e.aborted)throw Ce()}function Ce(){try{return new DOMException("The operation was aborted.","AbortError")}catch{const e=new Error("The operation was aborted.");return e.name="AbortError",e}}function Le(e){return e instanceof ArrayBuffer||Object.prototype.toString.call(e)==="[object ArrayBuffer]"||Object.prototype.toString.call(e)==="[object SharedArrayBuffer]"}function Te(e){return typeof e=="object"&&e!==null&&typeof e.arrayBuffer=="function"&&typeof e.size=="number"}class Pe{constructor(){S(this,"worker",null);S(this,"destroyed",false);S(this,"requestId",0);S(this,"pending",new Map);S(this,"handleMessage",t=>{const n=this.pending.get(t.data.id);if(!n)return;if(this.pending.delete(t.data.id),t.data.error){n.reject(new Error(t.data.error));return}const s=t.data.document??t.data.sheet;if(!s){n.reject(new Error("iWork parser worker returned an empty result."));return}n.resolve(s)});S(this,"handleError",t=>{const n=new Error(t.message||"iWork parser worker failed.");this.stopWorker(n)});if(typeof Worker>"u")throw new Error("Web Worker is required for iWork preview parsing.");this.getWorker()}getWorker(){if(this.destroyed)throw new Error("iWork parser worker has been destroyed.");return this.worker?this.worker:(this.worker=new Worker(new URL(""+new URL("../assets/iwork-worker-B9KPoDW3.js",import.meta.url).href,import.meta.url),{type:"module"}),this.worker.addEventListener("message",this.handleMessage),this.worker.addEventListener("error",this.handleError),this.worker)}parse(t,n,s){this.pending.size&&this.cancel();const i=++this.requestId,a=t.buffer instanceof ArrayBuffer&&t.byteOffset===0&&t.byteLength===t.buffer.byteLength?t.buffer:t.slice().buffer;return new Promise((u,m)=>{this.pending.set(i,{resolve:u,reject:m}),this.postRequest(i,{kind:"document",id:i,bytes:a,hint:n,sourceName:s},[a])})}parseSheet(t){const n=++this.requestId;return new Promise((s,i)=>{this.pending.set(n,{resolve:s,reject:i}),this.postRequest(n,{kind:"sheet",id:n,index:t})})}cancel(){if(this.pending.size)this.stopWorker(new DOMException("iWork parsing cancelled.","AbortError"));else if(this.worker)try{this.worker.postMessage({kind:"clear"})}catch{this.stopWorker(new DOMException("iWork parsing cancelled.","AbortError"))}}destroy(){this.destroyed=true,this.stopWorker(new DOMException("iWork parser worker terminated.","AbortError"))}postRequest(t,n,s=[]){try{this.getWorker().postMessage(n,s)}catch(i){const a=this.pending.get(t);this.pending.delete(t),a==null||a.reject(i instanceof Error?i:new Error(String(i)))}}stopWorker(t){const n=this.worker;this.worker=null,n==null||n.removeEventListener("message",this.handleMessage),n==null||n.removeEventListener("error",this.handleError),n==null||n.terminate();for(const s of this.pending.values())s.reject(t);this.pending.clear()}}const ae={colors:{},fonts:{}};function Fe(e){return new oe(Ie(e))}function V(e){return e.kind==="key"?e.slides:e.kind==="pages"?e.pages.map(t=>t.canvas):e.sheets.map(t=>t.canvas)}function ee(e,t,n,s){const i=Ae(t,n.slide),a=s??new oe(i),u=e.createElement("div");u.className=t.kind==="numbers"?"iworkv-page-shell iworkv-sheet-shell":"iworkv-page-shell";const m=pe(n.slide,i,{mediaRegistry:a});return u.appendChild(m),u}function Ae(e,t){return e.kind==="key"?{...e.presentation,slides:[t]}:{size:{width:t.width,height:t.height},theme:ae,slides:[t],media:e.media,warnings:e.warnings.slice()}}function Ie(e){return e.kind==="key"?e.presentation:{size:{width:1,height:1},theme:ae,slides:V(e).map(t=>t.slide),media:e.media,warnings:e.warnings.slice()}}function Re(e,t={}){var K;const n=new Map,s=new Pe,i=t.fit===void 0;let a=null,u=null,m=null,R=0,b=false;const r={loading:false,error:null,kind:null,currentPage:0,pageCount:0,currentSheet:0,sheetCount:0,scale:t.initialScale??1,fit:t.fit??"contain",warnings:[],document:null};e.classList.add("iworkv-root"),e.innerHTML='<div class="iworkv-stage"></div>';const k=e.querySelector(".iworkv-stage");let C=null,P=[];const B=new Map,L=new Set,D=new Map;let N,F=0,O=()=>{};const y=(o,h)=>{var l;(l=n.get(o))==null||l.forEach(c=>c(h))},A=()=>{e.classList.toggle("is-loading",r.loading),e.classList.toggle("is-error",!!r.error),e.dataset.status=r.error??(r.loading?"Loading document...":"")},E=()=>({...r,warnings:r.warnings.slice()}),j=()=>{O(),O=()=>{};const o=u;u=null,o==null||o.abort(),s.cancel(),m==null||m.abort(),m=null,C==null||C.disconnect(),C=null,F&&typeof cancelAnimationFrame<"u"&&cancelAnimationFrame(F),F=0,k.replaceChildren(),k.classList.remove("iworkv-numbers-stage"),P=[],B.clear(),L.clear(),D.clear(),a==null||a.destroy(),a=null,Object.assign(r,{document:null,kind:null,loading:false,error:null,warnings:[],currentPage:0,pageCount:0,currentSheet:0,sheetCount:0}),e.scrollTop=0,e.scrollLeft=0},I=()=>{var h;if(m==null||m.abort(),m=new AbortController,k.innerHTML="",k.classList.toggle("iworkv-numbers-stage",((h=r.document)==null?void 0:h.kind)==="numbers"),P=[],B.clear(),L.clear(),!r.document)return;const o=V(r.document);if(o.length){if(r.document.kind==="numbers"){le();return}if(r.document.kind==="key"||r.document.kind==="pages"){const l=document.createElement("div");l.className="iworkv-pages";const c=k.getBoundingClientRect();o.forEach((d,g)=>{const w=document.createElement("div");w.className="iworkv-page-shell",z(w,d.width,d.height,G(d.width,d.height,c)),w.dataset.pageIndex=String(g),l.appendChild(w),P.push(w)}),k.appendChild(l),L.add(r.currentPage),$();return}}},le=()=>{var p;if(((p=r.document)==null?void 0:p.kind)!=="numbers")return;const o=document.createElement("div");o.className="xlsxv-preview";const h=document.createElement("div");h.className="xlsxv-sheet-tabs",r.document.sheets.forEach((f,M)=>{const v=document.createElement("button");v.type="button",v.className="xlsxv-sheet-tab",v.classList.toggle("is-active",M===r.currentSheet),v.textContent=f.name,v.addEventListener("click",()=>J(M),{signal:m.signal}),h.appendChild(v)});const l=document.createElement("div");l.className="xlsxv-grid";const c=document.createElement("div");c.className="iworkv-numbers-tables";const d=r.document.sheets[r.currentSheet],g=((d==null?void 0:d.tables)??[]).map(({item:f},M)=>{const v=Be(f,M),x=document.createElement("section");if(x.className="iworkv-numbers-table",x.style.containIntrinsicBlockSize=`auto ${(Math.min(Math.max(v.rowCount,1),q)+1)*26}px`,((d==null?void 0:d.tables.length)??0)>1){const H=document.createElement("h3");H.className="iworkv-numbers-table-title",H.textContent=`Table ${M+1}`,x.appendChild(H)}const T=Ee(v,Math.min(Math.max(v.rowCount,1),(N==null?void 0:N[M])??q));return ne(T,f,a),x.appendChild(T),c.appendChild(x),{sheet:v,item:f,table:T,body:T.tBodies[0]}}),w=(d==null?void 0:d.canvas.slide.items.filter(f=>f.kind!=="table"))??[];if(d&&w.length){const f=document.createElement("section"),M=document.createElement("h3");M.className="iworkv-numbers-table-title",M.textContent="Sheet objects";const v={...d.canvas,slide:{...d.canvas.slide,items:w}},x=ee(document,r.document,v,a??void 0),T=Math.max(k.getBoundingClientRect().width-32,1);z(x,v.width,v.height,T/Math.max(v.width,1)),f.className="iworkv-numbers-objects",f.append(M,x),c.appendChild(f)}l.appendChild(c),l.addEventListener("scroll",()=>{if(!(l.scrollHeight-l.scrollTop-l.clientHeight>l.clientHeight*2))for(const{sheet:f,item:M,table:v,body:x}of g){const T=x.rows.length;T<f.rowCount&&(Me(x,f,T+1,Math.min(T+q,f.rowCount)),ne(v,M,a))}},{passive:true,signal:m.signal}),o.replaceChildren(h,l),k.appendChild(o)},$=()=>{if(!r.document||r.document.kind==="numbers")return;const o=V(r.document),l=t.virtual??r.document.kind==="pages"?L:new Set(P.map((c,d)=>d));for(const[c,d]of B)l.has(c)||(d.remove(),B.delete(c));for(const c of l){if(B.has(c))continue;const d=P[c],g=o[c];if(!d||!g)continue;const w=ee(document,r.document,g,a??void 0).firstElementChild;w&&(d.appendChild(w),z(d,g.width,g.height,r.scale),B.set(c,w))}},_=()=>{if(F=0,!r.document||r.document.kind==="numbers"||!P.length)return;const o=Ne(e),h=(o.top+o.bottom)/2,l=Math.max(o.height,1);let c=r.currentPage,d=Number.POSITIVE_INFINITY;L.clear(),P.forEach((g,w)=>{const p=g.getBoundingClientRect();p.bottom>=o.top-l&&p.top<=o.bottom+l&&L.add(w);const f=Math.abs((p.top+p.bottom)/2-h);f<d&&(d=f,c=w)}),L.size||L.add(c),$(),c!==r.currentPage&&(r.currentPage=c,y("pagechange",E()))},W=()=>{if(F||typeof requestAnimationFrame>"u"){F||_();return}F=requestAnimationFrame(_)};e.addEventListener("scroll",W,{passive:true}),e.ownerDocument.addEventListener("scroll",W,{capture:true,passive:true}),(K=e.ownerDocument.defaultView)==null||K.addEventListener("scroll",W,{passive:true});const ce=o=>{if(!r.document||r.document.kind==="numbers")return;const h=k.querySelector(`.iworkv-page-shell[data-page-index="${o}"]`);h&&h.scrollIntoView({block:"nearest",inline:"nearest"})},G=(o,h,l)=>{if(r.fit==="none")return r.scale;const c=l??k.getBoundingClientRect(),d=Math.max(c.width-32,1),g=Math.max(c.height-32,1);return r.fit==="width"?(r.scale=d/Math.max(o,1),r.scale):r.fit==="height"?(r.scale=g/Math.max(h,1),r.scale):(r.scale=Math.min(d/Math.max(o,1),g/Math.max(h,1)),r.scale)},de=()=>{C==null||C.disconnect(),C=null,!(typeof ResizeObserver>"u")&&(C=new ResizeObserver(()=>{var h;if(!r.document||r.fit==="none")return;if(r.document.kind==="numbers"){const l=(h=r.document.sheets[r.currentSheet])==null?void 0:h.canvas,c=k.querySelector(".iworkv-numbers-objects .iworkv-page-shell");if(l&&c){const d=Math.max(k.getBoundingClientRect().width-32,1);z(c,l.width,l.height,d/Math.max(l.width,1))}return}const o=k.getBoundingClientRect();V(r.document).forEach((l,c)=>{const d=P[c];d&&z(d,l.width,l.height,G(l.width,l.height,o))}),y("scalechange",E())}),C.observe(k))},ue=o=>{var c,d;const h=((c=r.document)==null?void 0:c.kind)==="numbers"?r.document:null;if(!h||((d=h.sheets[o])==null?void 0:d.loaded)!==false||(r.currentSheet===o&&(e.classList.add("is-loading"),e.dataset.status="Loading sheet..."),D.has(o)))return;const l=s.parseSheet(o).then(g=>{r.document===h&&(h.sheets[o]=g,r.currentSheet===o&&(I(),A()),y("sheetchange",E()))}).catch(g=>{if(r.document!==h)return;const w=g instanceof Error?g:new Error(String(g));r.currentSheet===o&&(r.error=w.message,A(),y("error",w))}).finally(()=>{D.get(o)===l&&D.delete(o)});D.set(o,l)},he=async(o,h={})=>{var g,w;if(b)throw new Error("iWork viewer has been destroyed.");const l=++R;j();const c=new AbortController;u=c;const d=()=>{u===c&&(j(),A(),y("loadingchange",E()))};if((g=h.signal)==null||g.addEventListener("abort",d,{once:true}),c.signal.addEventListener("abort",()=>{var p;return(p=h.signal)==null?void 0:p.removeEventListener("abort",d)},{once:true}),(w=h.signal)!=null&&w.aborted)throw d(),new DOMException("The operation was aborted.","AbortError");r.loading=true,r.error=null,A(),y("loadingchange",E());try{const p=await te(xe(o,{signal:c.signal}),c.signal);if(c.signal.aborted)throw new DOMException("The operation was aborted.","AbortError");const f=await te(s.parse(p,t.type,De(o)),c.signal);if(c.signal.aborted)throw new DOMException("The operation was aborted.","AbortError");if(r.document=f,r.kind=f.kind,r.warnings=f.warnings.slice(),i&&(f.kind==="key"||f.kind==="pages")&&r.fit==="contain"&&(r.fit="width"),r.currentPage=0,r.currentSheet=0,D.clear(),r.pageCount=f.kind==="numbers"?0:f.kind==="key"?f.slides.length:f.pages.length,r.sheetCount=f.kind==="numbers"?f.sheets.length:0,a==null||a.destroy(),a=Fe(f),r.loading=false,I(),r.kind!=="numbers"&&(O=be(e,{getScale:()=>r.scale,setScale:Y,enabled:()=>!b&&!r.loading,minScale:t.minScale,maxScale:t.maxScale,signal:c.signal})),de(),A(),y("loadingchange",E()),u!==c)return;y("warnings",r.warnings),u===c&&y("rendered",E())}catch(p){if(b||R!==l)return;if(c.signal.aborted)throw new DOMException("The operation was aborted.","AbortError");const f=p instanceof Error?p:new Error(String(p));j(),r.error=f.message,A(),y("loadingchange",E()),!b&&R===l&&y("error",f)}},Y=o=>{b||r.kind==="numbers"||(r.fit="none",r.scale=Math.max(t.minScale??.25,Math.min(o,t.maxScale??4)),I(),y("scalechange",E()))},fe=(o="contain")=>{b||r.kind==="numbers"||(r.fit=o,I(),y("scalechange",E()))},me=(o,h)=>{if(b)return()=>{};const l=n.get(o)??new Set;return l.add(h),n.set(o,l),()=>{l.delete(h)}},J=o=>{b||r.kind!=="numbers"||(r.currentSheet=Math.max(0,Math.min(o,Math.max(r.sheetCount-1,0))),r.error=null,I(),A(),ue(r.currentSheet),y("sheetchange",E()))};return{preview:he,refreshFonts(){if(b||r.loading||!r.document)return;const o=e.scrollTop,h=e.scrollLeft,l=k.querySelector(".xlsxv-grid"),c=(l==null?void 0:l.scrollTop)??0,d=(l==null?void 0:l.scrollLeft)??0;N=[...k.querySelectorAll("table")].map(w=>{var p;return((p=w.tBodies[0])==null?void 0:p.rows.length)??q});try{I()}finally{N=void 0}e.scrollTop=o,e.scrollLeft=h;const g=k.querySelector(".xlsxv-grid");g&&(g.scrollTop=c,g.scrollLeft=d),y("rendered",E())},destroy(){var o;b||(b=true,O(),++R,n.clear(),j(),e.removeEventListener("scroll",W),e.ownerDocument.removeEventListener("scroll",W,true),(o=e.ownerDocument.defaultView)==null||o.removeEventListener("scroll",W),s.destroy(),e.classList.remove("iworkv-root","is-loading","is-error"),e.removeAttribute("data-status"),e.innerHTML="")},setScale:Y,fit:fe,goToPage(o){b||(r.currentPage=Math.max(0,Math.min(o,Math.max(r.pageCount-1,0))),r.document&&r.document.kind!=="numbers"?(L.clear(),L.add(r.currentPage),$(),ce(r.currentPage)):I(),y("pagechange",E()))},goToSheet:J,next(){r.kind==="numbers"?this.goToSheet(Math.min(r.currentSheet+1,Math.max(r.sheetCount-1,0))):this.goToPage(Math.min(r.currentPage+1,Math.max(r.pageCount-1,0)))},prev(){r.kind==="numbers"?this.goToSheet(Math.max(0,r.currentSheet-1)):this.goToPage(Math.max(0,r.currentPage-1))},getState:E,on:me}}function te(e,t){return new Promise((n,s)=>{const i=()=>s(new DOMException("The operation was aborted.","AbortError"));t.addEventListener("abort",i,{once:true}),e.then(n,s).finally(()=>t.removeEventListener("abort",i)),t.aborted&&i()})}function Be(e,t){const n=new Map;for(const s of e.cells){if(s.isMergedContinuation)continue;const i=s.row+1,a=n.get(i)??{index:i,cells:[]};a.cells.push({ref:`${i}:${s.column+1}`,row:i,column:s.column+1,value:s.textFrame.paragraphs.map(u=>u.runs.map(m=>m.text).join("")).join(`
|
|
2
2
|
`)}),n.set(i,a)}return{id:e.id,name:`Table ${t+1}`,rows:[...n.values()].sort((s,i)=>s.index-i.index),columnCount:Math.max(e.columns.length,1),rowCount:Math.max(e.rows.length,1)}}function ne(e,t,n){var s,i;if(n)for(const a of t.cells){if(a.isMergedContinuation||a.fill.type!=="picture"||!a.fill.mediaId)continue;const u=(i=(s=e.tBodies[0])==null?void 0:s.rows[a.row])==null?void 0:i.cells[a.column+1];if(!u||u.querySelector(".iworkv-cell-image"))continue;const m=document.createElement("img");m.className="iworkv-cell-image",m.src=n.getUrl(a.fill.mediaId),m.alt="",m.loading="lazy",u.prepend(m)}}function De(e){if(typeof e=="string")return We(e);if(typeof File<"u"&&e instanceof File)return e.name}function We(e){var i;const s=(((i=e.split("?")[0])==null?void 0:i.split("#")[0])??"").split(/[\\/]/).filter(Boolean).at(-1);if(s)try{return decodeURIComponent(s)}catch{return s}}function Ne(e){const t=e.ownerDocument.defaultView,n=e.getBoundingClientRect();let s=t?0:n.top,i=t?t.innerHeight:n.bottom;for(let a=e;a;a=a.parentElement){const u=(t==null?void 0:t.getComputedStyle(a).overflowY)??"visible";if(!/^(auto|scroll|hidden|clip)$/.test(u))continue;const m=a.getBoundingClientRect();s=Math.max(s,m.top),i=Math.min(i,m.bottom)}if(i<=s){const a=t?0:n.top,u=t?t.innerHeight:n.bottom;return{top:a,bottom:u,height:Math.max(u-a,1)}}return{top:s,bottom:i,height:i-s}}function z(e,t,n,s){e.style.width=`${t*s}px`,e.style.height=`${n*s}px`,e.style.position="relative";const i=e.firstElementChild;i&&(i.style.transform=`scale(${s})`,i.style.transformOrigin="top left")}const re=[{extensions:["key"],family:"paged",driverId:"iwork",targetFormat:"key"},{extensions:["pages"],family:"paged",driverId:"iwork",targetFormat:"pages"},{extensions:["numbers"],family:"workbook",driverId:"iwork",targetFormat:"numbers"}];class ze{constructor(t,n={}){S(this,"viewer");S(this,"listeners",{loading:new Set,rendered:new Set,error:new Set,statechange:new Set,warnings:new Set});S(this,"unsubscribes");S(this,"lastState");S(this,"destroyed",false);S(this,"fontDocument",null);S(this,"fontScenes",[]);S(this,"fontAnalysis",Z([]));S(this,"fontUpdate",null);S(this,"fontLoading");this.host=t,this.viewer=Re(t,{fit:ie(n.fit),initialScale:n.initialScale,minScale:n.minScale,maxScale:n.maxScale,virtual:n.virtual}),this.lastState=se(this.viewer.getState()),this.unsubscribes=[this.viewer.on("loadingchange",s=>{this.updateState(s),s.loading&&this.emit("loading",this.lastState),this.emit("statechange",this.lastState)}),this.viewer.on("rendered",s=>{this.updateState(s),this.emit("rendered",this.lastState),this.emit("statechange",this.lastState)}),this.viewer.on("error",s=>{this.updateState(this.viewer.getState()),this.emit("error",s),this.emit("statechange",this.lastState)}),this.viewer.on("warnings",()=>{this.updateState(this.viewer.getState()),this.emit("warnings",this.lastState.warnings)}),this.viewer.on("pagechange",s=>{this.updateState(s),this.emit("statechange",this.lastState)}),this.viewer.on("sheetchange",s=>{const i=this.lastState.warnings;this.updateState(s),i.join(`
|
|
3
3
|
`)!==this.lastState.warnings.join(`
|
|
4
4
|
`)&&this.emit("warnings",this.lastState.warnings),this.emit("statechange",this.lastState)}),this.viewer.on("scalechange",s=>{this.updateState(s),this.emit("statechange",this.lastState)})],this.fontLoading=ke(this,t.ownerDocument,n)}async load(t,n){var s;this.fontLoading.reset(n.signal,((s=n.route)==null?void 0:s.targetFormat)??n.descriptor.extension??"key"),this.fontUpdate=null,await this.viewer.preview(t,{signal:n.signal})}destroy(){if(!this.destroyed){this.destroyed=true,this.fontLoading.destroy();for(const t of this.unsubscribes)t();this.viewer.destroy(),this.updateState(this.viewer.getState());for(const t of Object.values(this.listeners))t.clear()}}getState(){var t;return{...this.lastState,fonts:(t=this.lastState.fonts)==null?void 0:t.map(n=>({...n,classification:n.classification?{...n.classification}:void 0})),warnings:[...this.lastState.warnings]}}fontSlides(){const t=this.fontScenes.filter(s=>"items"in s),n=this.fontScenes.filter(s=>!("items"in s));return[...t,{items:n}]}getFontReferences(){return Se(this.fontSlides())}refreshFonts(t){var s,i;if(this.destroyed||!this.fontDocument)return;const n=new Map(t.references.map(a=>{var u;return[JSON.stringify([a.fontFamily,(u=a.traits)==null?void 0:u.weight,a.fontStyle]),a]}));t={...t,references:this.getFontReferences().map(a=>{var u;return n.get(JSON.stringify([a.fontFamily,(u=a.traits)==null?void 0:u.weight,a.fontStyle]))??a})},this.fontUpdate=t,Q(this.fontSlides(),t.references),this.fontAnalysis=X(t,this.host.ownerDocument),this.updateState(this.viewer.getState()),(t.loaded.length||t.relayout)&&((i=(s=this.viewer).refreshFonts)==null||i.call(s)),this.emit("warnings",this.lastState.warnings),this.emit("statechange",this.lastState)}on(t,n){return this.destroyed?()=>{}:(this.listeners[t].add(n),()=>{this.listeners[t].delete(n)})}setScale(t){this.viewer.setScale(t)}fit(t){this.viewer.fit(ie(t))}goToPage(t){if(this.viewer.getState().kind==="numbers"){this.viewer.goToSheet(t);return}this.viewer.goToPage(t)}next(){this.viewer.next()}prev(){this.viewer.prev()}async fullscreen(){const t=document.fullscreenElement;if(t===this.host&&document.exitFullscreen){await document.exitFullscreen();return}!t&&this.host.requestFullscreen&&await this.host.requestFullscreen()}updateState(t){const n=t.document,s=n?n.kind==="key"?n.presentation.slides:n.kind==="pages"?n.pages.map(u=>u.canvas.slide):n.sheets.map(u=>u.canvas.slide):[],i=(n==null?void 0:n.kind)==="numbers"?n.sheets.flatMap(u=>u.tables.map(m=>m.item)):[],a=[...s,...i];if(n!==this.fontDocument||a.length!==this.fontScenes.length||a.some((u,m)=>u!==this.fontScenes[m])){this.fontDocument=n,this.fontScenes=a;const u=i.length?[{items:i}]:[],m=ye([...s,...u]);if(this.fontUpdate){const R=new Map(this.fontUpdate.references.map(b=>[b.fontFamily,b]));this.fontAnalysis=X({...this.fontUpdate,references:m.map(b=>R.get(b.fontFamily)??b)},this.host.ownerDocument),Q([...s,...u],this.fontUpdate.references)}else this.fontAnalysis=Z(m,this.host.ownerDocument)}this.lastState={...se(t),fonts:this.fontAnalysis.fonts.map(u=>({...u,classification:u.classification?{...u.classification}:void 0})),warnings:[...new Set([...t.warnings,...this.fontAnalysis.warnings])]}}emit(t,n){for(const s of this.listeners[t])s(n)}}function He(){return{id:"iwork",family:"paged",supports:e=>qe(e)!=null,createSession:(e,t)=>new ze(e,t)}}function _e(e=ve()){const t=new Set(re.flatMap(n=>n.extensions));return[...re,...e.filter(n=>!n.extensions.some(s=>t.has(s)))]}function se(e){var t,n,s;return e.kind==="numbers"?{loading:e.loading,error:e.error,title:((t=e.document)==null?void 0:t.kind)==="numbers"?(n=e.document.sheets[e.currentSheet])==null?void 0:n.name:void 0,family:"workbook",warnings:e.warnings,capabilities:{workbook:true,sheets:true,fullscreen:true,download:true},activeSheetIndex:e.currentSheet,sheets:((s=e.document)==null?void 0:s.kind)==="numbers"?e.document.sheets.map(i=>({id:i.id,name:i.name})):[],scale:e.scale}:{loading:e.loading,error:e.error,title:Oe(e),family:"paged",warnings:e.warnings,capabilities:{paged:true,thumbnails:true,zoom:true,fit:true,fullscreen:true,download:true},pageIndex:e.currentPage,pageCount:e.pageCount,scale:e.scale,fit:je(e.fit)}}function Oe(e){var n,s,i;const t=e.document;if(t)return t.kind==="key"?(n=t.slides[e.currentPage])==null?void 0:n.title:t.kind==="pages"?((s=t.pages[e.currentPage])==null?void 0:s.canvas.title)??t.title:(i=t.sheets[e.currentSheet])==null?void 0:i.name}function ie(e){return e==="contain"||e==="width"||e==="none"?e:e==="height"?"height":"contain"}function je(e){return e==="contain"||e==="width"||e==="height"||e==="none"?e:"contain"}function qe(e){const t=String(e??"").trim().replace(/^\./,"").toLowerCase();return t==="key"||t==="pages"||t==="numbers"?t:null}export{_e as a,He as c};
|