jassub 1.5.9 → 1.5.10

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,4 +1,4 @@
1
- var h=h,Ve=e=>console.log(e),Be=e=>console.error(e);function xe(){}self.assert||(self.assert=(e,r)=>{if(!e)throw r});String.prototype.startsWith||(String.prototype.startsWith=function(e,r){return r===void 0&&(r=0),this.substring(r,e.length)===e});String.prototype.includes||(String.prototype.includes=function(e,r){return this.indexOf(e,r)!==-1});if(!ArrayBuffer.isView){const e=[Int8Array,Uint8Array,Uint8ClampedArray,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array];ArrayBuffer.isView=r=>r&&r.constructor&&e.indexOf(r.constructor)!==-1}Uint8Array.prototype.slice||(Uint8Array.prototype.slice=function(e,r){return new Uint8Array(this.subarray(e,r))});Date.now||(Date.now=()=>new Date().getTime());"performance"in self||(self.performance={now:()=>Date.now()});if(typeof console>"u"){const e=(r,t)=>{postMessage({target:"console",command:r,content:JSON.stringify(Array.prototype.slice.call(t))})};console={log:function(){e("log",arguments)},debug:function(){e("debug",arguments)},info:function(){e("info",arguments)},warn:function(){e("warn",arguments)},error:function(){e("error",arguments)}},console.log("overridden console")}const Ce=(e,r)=>{const t=new XMLHttpRequest;return t.open("GET",e,!1),t.responseType=r?"arraybuffer":"text",t.send(null),t.response},yr=(e,r,t)=>{const n=new XMLHttpRequest;n.open("GET",e,!0),n.responseType="arraybuffer",n.onload=()=>{if((n.status===200||n.status===0)&&n.response)return r(n.response);t()},n.onerror=t,n.send(null)};h={wasm:WebAssembly&&!WebAssembly.instantiateStreaming&&Ce("jassub-worker.wasm",!0)};xe=()=>postMessage({target:"ready"});Ve=e=>{e==="JASSUB: No usable fontconfig configuration file found, using fallback."?console.debug(e):console.log(e)};Be=e=>{e==="Fontconfig error: Cannot load default config file: No such file: (null)"?console.debug(e):console.error(e)};let z=0;const mr=1;let O=null,We=!1,Te=Date.now(),re=24,ze=!1,Je="js",te={};const Re={};let br=0,Ge;self.width=0;self.height=0;let E=!1;self.addFont=({font:e})=>Pe(e);const be=e=>{if(e=e.trim().toLowerCase(),e.startsWith("@")&&(e=e.substring(1)),!Re[e]){if(Re[e]=!0,!te[e]&&ze)return postMessage({target:"getLocalFont",font:e});Pe(te[e])}},Pe=e=>{ArrayBuffer.isView(e)?Ie(e):yr(e,r=>{Ie(new Uint8Array(r))},console.error)},Ie=e=>{const r=de(e.byteLength);b.set(e,r),self.jassubObj.addFont("font-"+br++,r,e.byteLength),self.jassubObj.reloadFonts()},Xe=e=>{if(!te)return;const r=Tr(e);for(let i=0;i<r.length;i++)for(let s=0;s<r[i].body.length;s++)r[i].body[s].key==="Style"&&be(r[i].body[s].value.Fontname);const t=/\\fn([^\\}]*?)[\\}]/g;let n;for(;(n=t.exec(e))!==null;)be(n[1])};self.setTrack=({content:e})=>{Xe(e),self.jassubObj.createTrackMem(e)};self.freeTrack=()=>{self.jassubObj.removeTrack()};self.setTrackByUrl=({url:e})=>{self.setTrack({content:Ce(e)})};const wr=(e,r)=>{self.width=e,self.height=r,self.jassubObj.resizeCanvas(e,r)},_r=()=>{const e=(Date.now()-Te)/1e3;return ne?z:(e>5&&(console.error("Didn't received currentTime > 5 seconds. Assuming video was paused."),qe(!0)),z+e*mr)},Cr=e=>{z=e,Te=Date.now(),O||(We?O=Ae(ie):(ie(),setTimeout(()=>{We=!1},20)))};let ne=!0;const qe=e=>{e!==ne&&(ne=e,e?O&&(clearTimeout(O),O=null):(Te=Date.now(),O=Ae(ie)))},$e=(e,r)=>{const t=performance.now(),n=Je==="wasm"?self.jassubObj.renderBlend(e,r||0):self.jassubObj.renderImage(e,r||0),i={renderTime:performance.now()-t-self.jassubObj.time,decodeTime:self.jassubObj.time};if(self.jassubObj.changed!==0||r){const s=[];let f=[];const a=performance.now();if(!n)return ye({images:s,buffers:f,times:i,decodeStartTime:a});if(E){const l=[];for(let o=n,u=0;u<self.jassubObj.count;o=o.next,++u)s.push({w:o.w,h:o.h,x:o.x,y:o.y}),l.push(createImageBitmap(new ImageData(Fe.subarray(o.image,o.image+o.w*o.h*4),o.w,o.h)));Promise.all(l).then(o=>{for(let u=0;u<s.length;u++)s[u].image=o[u];f=o,ye({images:s,buffers:f,times:i,decodeStartTime:a})})}else{for(let l=n,o=0;o<self.jassubObj.count;l=l.next,++o){const u={w:l.w,h:l.h,x:l.x,y:l.y,image:l.image};if(!M){const c=L.buffer.slice(l.image,l.image+l.w*l.h*4);f.push(c),u.image=c}s.push(u)}ye({images:s,buffers:f,times:i,decodeStartTime:a})}}else postMessage({target:"unbusy"})};self.demand=({time:e})=>{z=e,$e(e)};const ie=e=>{O=0,$e(_r(),e),ne||(O=Ae(ie))},ye=({times:e,images:r,decodeStartTime:t,buffers:n})=>{if(e.decodeTime=performance.now()-t,M){const i=performance.now();H.width=self.width,H.height!==self.height&&(H.height=self.height),M.clearRect(0,0,self.width,self.height);for(const s of r)s.image&&(E?(M.drawImage(s.image,s.x,s.y),s.image.close()):(self.bufferCanvas.width=s.w,self.bufferCanvas.height=s.h,self.bufferCtx.putImageData(new ImageData(Fe.subarray(s.image,s.image+s.w*s.h*4),s.w,s.h),0,0),M.drawImage(self.bufferCanvas,s.x,s.y)));if(Ge){e.drawTime=performance.now()-i;let s=0;for(const f in e)s+=e[f];console.log("Bitmaps: "+r.length+" Total: "+Math.round(s)+"ms",e)}postMessage({target:"unbusy"})}else postMessage({target:"render",async:E,images:r,times:e,width:self.width,height:self.height},n)},Tr=e=>{let r,t,n,i,s,f,a,l,o,u;const c=[],d=e.split(/[\r\n]+/g);for(l=0;l<d.length;l++)if(r=d[l].match(/^\[(.*)\]$/),r)t=null,c.push({name:r[1],body:[]});else{if(/^\s*$/.test(d[l])||c.length===0)continue;if(u=c[c.length-1].body,d[l][0]===";")u.push({type:"comment",value:d[l].substring(1)});else{if(i=d[l].split(":"),s=i[0],f=i.slice(1).join(":").trim(),(t||s==="Format")&&(f=f.split(","),t&&f.length>t.length&&(n=f.slice(t.length-1).join(","),f=f.slice(0,t.length-1),f.push(n)),f=f.map(p=>p.trim()),t)){for(a={},o=0;o<f.length;o++)a[t[o]]=f[o];f=a}s==="Format"&&(t=f),u.push({key:s,value:f})}}return c},Ae=(()=>{let e=0;return r=>{const t=Date.now();if(e===0)e=t+1e3/re;else for(;t+2>=e;)e+=1e3/re;const n=Math.max(e-t,0);return setTimeout(r,n)}})(),fe=(e,r)=>{for(const t of Object.keys(e))r[t]=e[t]};self.init=e=>{self.width=e.width,self.height=e.height,Je=e.blendMode,E=e.asyncRender,E&&typeof createImageBitmap>"u"&&(E=!1,console.error("'createImageBitmap' needed for 'asyncRender' unsupported!")),te=e.availableFonts,Ge=e.debug,re=e.targetFps||re,ze=e.useLocalFonts;const r=e.fallbackFont.toLowerCase();self.jassubObj=new h.JASSUB(self.width,self.height,r||null),r&&be(r);let t=e.subContent;t||(t=Ce(e.subUrl)),Xe(t);for(const n of e.fonts||[])Pe(n);self.jassubObj.createTrackMem(t),self.jassubObj.setDropAnimations(e.dropAllAnimations||0),(e.libassMemoryLimit>0||e.libassGlyphLimit>0)&&self.jassubObj.setMemoryLimits(e.libassGlyphLimit||0,e.libassMemoryLimit||0)};self.canvas=({width:e,height:r,force:t})=>{if(e==null)throw new Error("Invalid canvas size specified");wr(e,r),t&&$e(z)};self.video=({currentTime:e,isPaused:r,rate:t})=>{e!=null&&Cr(e),r!=null&&qe(r),t=t||t};let H,M;self.offscreenCanvas=({transferable:e})=>{H=e[0],M=H.getContext("2d",{desynchronized:!0}),E||(self.bufferCanvas=new OffscreenCanvas(self.height,self.width),self.bufferCtx=self.bufferCanvas.getContext("2d",{desynchronized:!0}))};self.destroy=()=>{self.jassubObj.quitLibrary()};self.createEvent=({event:e})=>{fe(e,self.jassubObj.getEvent(self.jassubObj.allocEvent()))};self.getEvents=()=>{const e=[];for(let r=0;r<self.jassubObj.getEventCount();r++){const{Start:t,Duration:n,ReadOrder:i,Layer:s,Style:f,MarginL:a,MarginR:l,MarginV:o,Name:u,Text:c,Effect:d}=self.jassubObj.getEvent(r);e.push({Start:t,Duration:n,ReadOrder:i,Layer:s,Style:f,MarginL:a,MarginR:l,MarginV:o,Name:u,Text:c,Effect:d})}postMessage({target:"getEvents",events:e})};self.setEvent=({event:e,index:r})=>{fe(e,self.jassubObj.getEvent(r))};self.removeEvent=({index:e})=>{self.jassubObj.removeEvent(e)};self.createStyle=({style:e})=>{fe(e,self.jassubObj.getStyle(self.jassubObj.allocStyle()))};self.getStyles=()=>{const e=[];for(let r=0;r<self.jassubObj.getStyleCount();r++){const{Name:t,FontName:n,FontSize:i,PrimaryColour:s,SecondaryColour:f,OutlineColour:a,BackColour:l,Bold:o,Italic:u,Underline:c,StrikeOut:d,ScaleX:p,ScaleY:v,Spacing:m,Angle:y,BorderStyle:w,Outline:$,Shadow:T,Alignment:ve,MarginL:Y,MarginR:K,MarginV:Q,Encoding:gr,treat_fontname_as_pattern:pr,Blur:hr,Justify:vr}=self.jassubObj.getStyle(r);e.push({Name:t,FontName:n,FontSize:i,PrimaryColour:s,SecondaryColour:f,OutlineColour:a,BackColour:l,Bold:o,Italic:u,Underline:c,StrikeOut:d,ScaleX:p,ScaleY:v,Spacing:m,Angle:y,BorderStyle:w,Outline:$,Shadow:T,Alignment:ve,MarginL:Y,MarginR:K,MarginV:Q,Encoding:gr,treat_fontname_as_pattern:pr,Blur:hr,Justify:vr})}postMessage({target:"getStyles",time:Date.now(),styles:e})};self.setStyle=({style:e,index:r})=>{fe(e,self.jassubObj.getStyle(r))};self.removeStyle=({index:e})=>{self.jassubObj.removeStyle(e)};onmessage=({data:e})=>{if(self[e.target])self[e.target](e);else throw new Error("Unknown event target "+e.target)};let Fe=null;se=(e=>()=>{e(),Fe=new Uint8ClampedArray(L.buffer)})(se);function Ye(e){throw e}var Ke=new TextDecoder("utf8");function Pr(e,r,t){for(var n=r+t,i=r;e[i]&&!(i>=n);)++i;return Ke.decode(e.buffer?e.subarray(r,i):new Uint8Array(e.slice(r,i)))}function ee(e,r){if(!e)return"";for(var t=e+r,n=e;!(n>=t)&&b[n];)++n;return Ke.decode(b.subarray(e,n))}function $r(e,r,t,n){if(!(n>0))return 0;for(var i=t,s=t+n-1,f=0;f<e.length;++f){var a=e.charCodeAt(f);if(a>=55296&&a<=57343){var l=e.charCodeAt(++f);a=65536+((a&1023)<<10)|l&1023}if(a<=127){if(t>=s)break;r[t++]=a}else if(a<=2047){if(t+1>=s)break;r[t++]=192|a>>6,r[t++]=128|a&63}else if(a<=65535){if(t+2>=s)break;r[t++]=224|a>>12,r[t++]=128|a>>6&63,r[t++]=128|a&63}else{if(t+3>=s)break;r[t++]=240|a>>18,r[t++]=128|a>>12&63,r[t++]=128|a>>6&63,r[t++]=128|a&63}}return r[t]=0,t-i}function Ar(e,r,t){return $r(e,b,r,t)}function Fr(e){for(var r=0,t=0;t<e.length;++t){var n=e.charCodeAt(t);n<=127?r++:n<=2047?r+=2:n>=55296&&n<=57343?(r+=4,++t):r+=3}return r}var Se,J,U,b,le,C,Qe,Ze,L,Ne;function se(){var e=L.buffer;Se=new Int8Array(e),J=new Int16Array(e),U=new Int32Array(e),b=new Uint8Array(e),le=new Uint16Array(e),C=new Uint32Array(e),Qe=new Float32Array(e),Ze=new Float64Array(e)}function Sr(e,r,t,n){Ye("Assertion failed: "+ee(e)+", at: "+[r?ee(r):"unknown filename",t,n?ee(n):"unknown function"])}function jr(e,r,t){return 0}function Or(e,r,t){}function kr(e,r,t){return 0}function Er(e,r,t,n){}function Ur(e,r,t,n,i){}function je(e){switch(e){case 1:return 0;case 2:return 1;case 4:return 2;case 8:return 3;default:throw new TypeError("Unknown type size: "+e)}}function Dr(){for(var e=new Array(256),r=0;r<256;++r)e[r]=String.fromCharCode(r);er=e}var er=void 0;function _(e){for(var r="",t=e;b[t];)r+=er[b[t++]];return r}var W={},R={},ae={},Mr=48,Wr=57;function Oe(e){if(e===void 0)return"_unknown";e=e.replace(/[^a-zA-Z0-9_]/g,"$");var r=e.charCodeAt(0);return r>=Mr&&r<=Wr?"_"+e:e}function ke(e,r){return e=Oe(e),{[e]:function(){return r.apply(this,arguments)}}[e]}function Ee(e,r){var t=ke(r,function(n){this.name=r,this.message=n;var i=new Error(n).stack;i!==void 0&&(this.stack=this.toString()+`
1
+ var h=h,Ve=e=>console.log(e),Be=e=>console.error(e);function xe(){}self.assert||(self.assert=(e,r)=>{if(!e)throw r});String.prototype.startsWith||(String.prototype.startsWith=function(e,r){return r===void 0&&(r=0),this.substring(r,e.length)===e});String.prototype.includes||(String.prototype.includes=function(e,r){return this.indexOf(e,r)!==-1});if(!ArrayBuffer.isView){const e=[Int8Array,Uint8Array,Uint8ClampedArray,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array];ArrayBuffer.isView=r=>r&&r.constructor&&e.indexOf(r.constructor)!==-1}Uint8Array.prototype.slice||(Uint8Array.prototype.slice=function(e,r){return new Uint8Array(this.subarray(e,r))});Date.now||(Date.now=()=>new Date().getTime());"performance"in self||(self.performance={now:()=>Date.now()});if(typeof console>"u"){const e=(r,t)=>{postMessage({target:"console",command:r,content:JSON.stringify(Array.prototype.slice.call(t))})};console={log:function(){e("log",arguments)},debug:function(){e("debug",arguments)},info:function(){e("info",arguments)},warn:function(){e("warn",arguments)},error:function(){e("error",arguments)}},console.log("Detected lack of console, overridden console")}const Ce=(e,r)=>{const t=new XMLHttpRequest;return t.open("GET",e,!1),t.responseType=r?"arraybuffer":"text",t.send(null),t.response},yr=(e,r,t)=>{const n=new XMLHttpRequest;n.open("GET",e,!0),n.responseType="arraybuffer",n.onload=()=>{if((n.status===200||n.status===0)&&n.response)return r(n.response);t()},n.onerror=t,n.send(null)};h={wasm:WebAssembly&&!WebAssembly.instantiateStreaming&&Ce("jassub-worker.wasm",!0)};xe=()=>postMessage({target:"ready"});Ve=e=>{e==="JASSUB: No usable fontconfig configuration file found, using fallback."?console.debug(e):console.log(e)};Be=e=>{e==="Fontconfig error: Cannot load default config file: No such file: (null)"?console.debug(e):console.error(e)};let z=0;const mr=1;let O=null,We=!1,Te=Date.now(),re=24,ze=!1,Je="js",te={};const Re={};let br=0,Ge;self.width=0;self.height=0;let E=!1;self.addFont=({font:e})=>Pe(e);const be=e=>{e=e.trim().toLowerCase(),e.startsWith("@")&&(e=e.substring(1)),!Re[e]&&(Re[e]=!0,te[e]?Pe(te[e]):ze&&postMessage({target:"getLocalFont",font:e}))},Pe=e=>{ArrayBuffer.isView(e)?Ie(e):yr(e,r=>{Ie(new Uint8Array(r))},console.error)},Ie=e=>{const r=de(e.byteLength);b.set(e,r),self.jassubObj.addFont("font-"+br++,r,e.byteLength),self.jassubObj.reloadFonts()},Xe=e=>{if(!te)return;const r=Tr(e);for(let i=0;i<r.length;i++)for(let s=0;s<r[i].body.length;s++)r[i].body[s].key==="Style"&&be(r[i].body[s].value.Fontname);const t=/\\fn([^\\}]*?)[\\}]/g;let n;for(;(n=t.exec(e))!==null;)be(n[1])};self.setTrack=({content:e})=>{Xe(e),self.jassubObj.createTrackMem(e)};self.freeTrack=()=>{self.jassubObj.removeTrack()};self.setTrackByUrl=({url:e})=>{self.setTrack({content:Ce(e)})};const wr=(e,r)=>{self.width=e,self.height=r,self.jassubObj.resizeCanvas(e,r)},_r=()=>{const e=(Date.now()-Te)/1e3;return ne?z:(e>5&&(console.error("Didn't received currentTime > 5 seconds. Assuming video was paused."),qe(!0)),z+e*mr)},Cr=e=>{z=e,Te=Date.now(),O||(We?O=Ae(ie):(ie(),setTimeout(()=>{We=!1},20)))};let ne=!0;const qe=e=>{e!==ne&&(ne=e,e?O&&(clearTimeout(O),O=null):(Te=Date.now(),O=Ae(ie)))},$e=(e,r)=>{const t=performance.now(),n=Je==="wasm"?self.jassubObj.renderBlend(e,r||0):self.jassubObj.renderImage(e,r||0),i={renderTime:performance.now()-t-self.jassubObj.time,decodeTime:self.jassubObj.time};if(self.jassubObj.changed!==0||r){const s=[];let f=[];const a=performance.now();if(!n)return ye({images:s,buffers:f,times:i,decodeStartTime:a});if(E){const l=[];for(let o=n,u=0;u<self.jassubObj.count;o=o.next,++u)s.push({w:o.w,h:o.h,x:o.x,y:o.y}),l.push(createImageBitmap(new ImageData(Fe.subarray(o.image,o.image+o.w*o.h*4),o.w,o.h)));Promise.all(l).then(o=>{for(let u=0;u<s.length;u++)s[u].image=o[u];f=o,ye({images:s,buffers:f,times:i,decodeStartTime:a})})}else{for(let l=n,o=0;o<self.jassubObj.count;l=l.next,++o){const u={w:l.w,h:l.h,x:l.x,y:l.y,image:l.image};if(!M){const c=L.buffer.slice(l.image,l.image+l.w*l.h*4);f.push(c),u.image=c}s.push(u)}ye({images:s,buffers:f,times:i,decodeStartTime:a})}}else postMessage({target:"unbusy"})};self.demand=({time:e})=>{z=e,$e(e)};const ie=e=>{O=0,$e(_r(),e),ne||(O=Ae(ie))},ye=({times:e,images:r,decodeStartTime:t,buffers:n})=>{if(e.decodeTime=performance.now()-t,M){const i=performance.now();H.width=self.width,H.height!==self.height&&(H.height=self.height),M.clearRect(0,0,self.width,self.height);for(const s of r)s.image&&(E?(M.drawImage(s.image,s.x,s.y),s.image.close()):(self.bufferCanvas.width=s.w,self.bufferCanvas.height=s.h,self.bufferCtx.putImageData(new ImageData(Fe.subarray(s.image,s.image+s.w*s.h*4),s.w,s.h),0,0),M.drawImage(self.bufferCanvas,s.x,s.y)));if(Ge){e.drawTime=performance.now()-i;let s=0;for(const f in e)s+=e[f];console.log("Bitmaps: "+r.length+" Total: "+Math.round(s)+"ms",e)}postMessage({target:"unbusy"})}else postMessage({target:"render",async:E,images:r,times:e,width:self.width,height:self.height},n)},Tr=e=>{let r,t,n,i,s,f,a,l,o,u;const c=[],d=e.split(/[\r\n]+/g);for(l=0;l<d.length;l++)if(r=d[l].match(/^\[(.*)\]$/),r)t=null,c.push({name:r[1],body:[]});else{if(/^\s*$/.test(d[l])||c.length===0)continue;if(u=c[c.length-1].body,d[l][0]===";")u.push({type:"comment",value:d[l].substring(1)});else{if(i=d[l].split(":"),s=i[0],f=i.slice(1).join(":").trim(),(t||s==="Format")&&(f=f.split(","),t&&f.length>t.length&&(n=f.slice(t.length-1).join(","),f=f.slice(0,t.length-1),f.push(n)),f=f.map(p=>p.trim()),t)){for(a={},o=0;o<f.length;o++)a[t[o]]=f[o];f=a}s==="Format"&&(t=f),u.push({key:s,value:f})}}return c},Ae=(()=>{let e=0;return r=>{const t=Date.now();if(e===0)e=t+1e3/re;else for(;t+2>=e;)e+=1e3/re;const n=Math.max(e-t,0);return setTimeout(r,n)}})(),fe=(e,r)=>{for(const t of Object.keys(e))r[t]=e[t]};self.init=e=>{self.width=e.width,self.height=e.height,Je=e.blendMode,E=e.asyncRender,E&&typeof createImageBitmap>"u"&&(E=!1,console.error("'createImageBitmap' needed for 'asyncRender' unsupported!")),te=e.availableFonts,Ge=e.debug,re=e.targetFps||re,ze=e.useLocalFonts;const r=e.fallbackFont.toLowerCase();self.jassubObj=new h.JASSUB(self.width,self.height,r||null),r&&be(r);let t=e.subContent;t||(t=Ce(e.subUrl)),Xe(t);for(const n of e.fonts||[])Pe(n);self.jassubObj.createTrackMem(t),self.jassubObj.setDropAnimations(e.dropAllAnimations||0),(e.libassMemoryLimit>0||e.libassGlyphLimit>0)&&self.jassubObj.setMemoryLimits(e.libassGlyphLimit||0,e.libassMemoryLimit||0)};self.canvas=({width:e,height:r,force:t})=>{if(e==null)throw new Error("Invalid canvas size specified");wr(e,r),t&&$e(z)};self.video=({currentTime:e,isPaused:r,rate:t})=>{e!=null&&Cr(e),r!=null&&qe(r),t=t||t};let H,M;self.offscreenCanvas=({transferable:e})=>{H=e[0],M=H.getContext("2d",{desynchronized:!0}),E||(self.bufferCanvas=new OffscreenCanvas(self.height,self.width),self.bufferCtx=self.bufferCanvas.getContext("2d",{desynchronized:!0}))};self.destroy=()=>{self.jassubObj.quitLibrary()};self.createEvent=({event:e})=>{fe(e,self.jassubObj.getEvent(self.jassubObj.allocEvent()))};self.getEvents=()=>{const e=[];for(let r=0;r<self.jassubObj.getEventCount();r++){const{Start:t,Duration:n,ReadOrder:i,Layer:s,Style:f,MarginL:a,MarginR:l,MarginV:o,Name:u,Text:c,Effect:d}=self.jassubObj.getEvent(r);e.push({Start:t,Duration:n,ReadOrder:i,Layer:s,Style:f,MarginL:a,MarginR:l,MarginV:o,Name:u,Text:c,Effect:d})}postMessage({target:"getEvents",events:e})};self.setEvent=({event:e,index:r})=>{fe(e,self.jassubObj.getEvent(r))};self.removeEvent=({index:e})=>{self.jassubObj.removeEvent(e)};self.createStyle=({style:e})=>{fe(e,self.jassubObj.getStyle(self.jassubObj.allocStyle()))};self.getStyles=()=>{const e=[];for(let r=0;r<self.jassubObj.getStyleCount();r++){const{Name:t,FontName:n,FontSize:i,PrimaryColour:s,SecondaryColour:f,OutlineColour:a,BackColour:l,Bold:o,Italic:u,Underline:c,StrikeOut:d,ScaleX:p,ScaleY:v,Spacing:m,Angle:y,BorderStyle:w,Outline:$,Shadow:T,Alignment:ve,MarginL:Y,MarginR:K,MarginV:Q,Encoding:gr,treat_fontname_as_pattern:pr,Blur:hr,Justify:vr}=self.jassubObj.getStyle(r);e.push({Name:t,FontName:n,FontSize:i,PrimaryColour:s,SecondaryColour:f,OutlineColour:a,BackColour:l,Bold:o,Italic:u,Underline:c,StrikeOut:d,ScaleX:p,ScaleY:v,Spacing:m,Angle:y,BorderStyle:w,Outline:$,Shadow:T,Alignment:ve,MarginL:Y,MarginR:K,MarginV:Q,Encoding:gr,treat_fontname_as_pattern:pr,Blur:hr,Justify:vr})}postMessage({target:"getStyles",time:Date.now(),styles:e})};self.setStyle=({style:e,index:r})=>{fe(e,self.jassubObj.getStyle(r))};self.removeStyle=({index:e})=>{self.jassubObj.removeStyle(e)};onmessage=({data:e})=>{if(self[e.target])self[e.target](e);else throw new Error("Unknown event target "+e.target)};let Fe=null;se=(e=>()=>{e(),Fe=new Uint8ClampedArray(L.buffer)})(se);function Ye(e){throw e}var Ke=new TextDecoder("utf8");function Pr(e,r,t){for(var n=r+t,i=r;e[i]&&!(i>=n);)++i;return Ke.decode(e.buffer?e.subarray(r,i):new Uint8Array(e.slice(r,i)))}function ee(e,r){if(!e)return"";for(var t=e+r,n=e;!(n>=t)&&b[n];)++n;return Ke.decode(b.subarray(e,n))}function $r(e,r,t,n){if(!(n>0))return 0;for(var i=t,s=t+n-1,f=0;f<e.length;++f){var a=e.charCodeAt(f);if(a>=55296&&a<=57343){var l=e.charCodeAt(++f);a=65536+((a&1023)<<10)|l&1023}if(a<=127){if(t>=s)break;r[t++]=a}else if(a<=2047){if(t+1>=s)break;r[t++]=192|a>>6,r[t++]=128|a&63}else if(a<=65535){if(t+2>=s)break;r[t++]=224|a>>12,r[t++]=128|a>>6&63,r[t++]=128|a&63}else{if(t+3>=s)break;r[t++]=240|a>>18,r[t++]=128|a>>12&63,r[t++]=128|a>>6&63,r[t++]=128|a&63}}return r[t]=0,t-i}function Ar(e,r,t){return $r(e,b,r,t)}function Fr(e){for(var r=0,t=0;t<e.length;++t){var n=e.charCodeAt(t);n<=127?r++:n<=2047?r+=2:n>=55296&&n<=57343?(r+=4,++t):r+=3}return r}var Se,J,U,b,le,C,Qe,Ze,L,Ne;function se(){var e=L.buffer;Se=new Int8Array(e),J=new Int16Array(e),U=new Int32Array(e),b=new Uint8Array(e),le=new Uint16Array(e),C=new Uint32Array(e),Qe=new Float32Array(e),Ze=new Float64Array(e)}function Sr(e,r,t,n){Ye("Assertion failed: "+ee(e)+", at: "+[r?ee(r):"unknown filename",t,n?ee(n):"unknown function"])}function jr(e,r,t){return 0}function Or(e,r,t){}function kr(e,r,t){return 0}function Er(e,r,t,n){}function Ur(e,r,t,n,i){}function je(e){switch(e){case 1:return 0;case 2:return 1;case 4:return 2;case 8:return 3;default:throw new TypeError("Unknown type size: "+e)}}function Dr(){for(var e=new Array(256),r=0;r<256;++r)e[r]=String.fromCharCode(r);er=e}var er=void 0;function _(e){for(var r="",t=e;b[t];)r+=er[b[t++]];return r}var W={},R={},ae={},Mr=48,Wr=57;function Oe(e){if(e===void 0)return"_unknown";e=e.replace(/[^a-zA-Z0-9_]/g,"$");var r=e.charCodeAt(0);return r>=Mr&&r<=Wr?"_"+e:e}function ke(e,r){return e=Oe(e),{[e]:function(){return r.apply(this,arguments)}}[e]}function Ee(e,r){var t=ke(r,function(n){this.name=r,this.message=n;var i=new Error(n).stack;i!==void 0&&(this.stack=this.toString()+`
2
2
  `+i.replace(/^Error(:[^\n]*)?\n/,""))});return t.prototype=Object.create(e.prototype),t.prototype.constructor=t,t.prototype.toString=function(){return this.message===void 0?this.name:this.name+": "+this.message},t}var I=void 0;function g(e){throw new I(e)}var rr=void 0;function oe(e){throw new rr(e)}function D(e,r,t){e.forEach(function(a){ae[a]=r});function n(a){var l=t(a);l.length!==e.length&&oe("Mismatched type converter count");for(var o=0;o<e.length;++o)S(e[o],l[o])}var i=new Array(r.length),s=[],f=0;r.forEach((a,l)=>{R.hasOwnProperty(a)?i[l]=R[a]:(s.push(a),W.hasOwnProperty(a)||(W[a]=[]),W[a].push(()=>{i[l]=R[a],++f,f===s.length&&n(i)}))}),s.length===0&&n(i)}function S(e,r,t={}){if(!("argPackAdvance"in r))throw new TypeError("registerType registeredInstance requires argPackAdvance");var n=r.name;if(e||g('type "'+n+'" must have a positive integer typeid pointer'),R.hasOwnProperty(e)){if(t.ignoreDuplicateRegistrations)return;g("Cannot register type '"+n+"' twice")}if(R[e]=r,delete ae[e],W.hasOwnProperty(e)){var i=W[e];delete W[e],i.forEach(s=>s())}}function Rr(e,r,t,n,i){var s=je(t);r=_(r),S(e,{name:r,fromWireType:function(f){return!!f},toWireType:function(f,a){return a?n:i},argPackAdvance:8,readValueFromPointer:function(f){var a;if(t===1)a=Se;else if(t===2)a=J;else if(t===4)a=U;else throw new TypeError("Unknown boolean type size: "+r);return this.fromWireType(a[f>>s])},destructorFunction:null})}function Ir(e){if(!(this instanceof j)||!(e instanceof j))return!1;for(var r=this.$$.ptrType.registeredClass,t=this.$$.ptr,n=e.$$.ptrType.registeredClass,i=e.$$.ptr;r.baseClass;)t=r.upcast(t),r=r.baseClass;for(;n.baseClass;)i=n.upcast(i),n=n.baseClass;return r===n&&t===i}function Lr(e){return{count:e.count,deleteScheduled:e.deleteScheduled,preservePointerOnDelete:e.preservePointerOnDelete,ptr:e.ptr,ptrType:e.ptrType,smartPtr:e.smartPtr,smartPtrType:e.smartPtrType}}function Ue(e){function r(t){return t.$$.ptrType.registeredClass.name}g(r(e)+" instance already deleted")}var me=!1;function tr(e){}function Hr(e){e.smartPtr?e.smartPtrType.rawDestructor(e.smartPtr):e.ptrType.registeredClass.rawDestructor(e.ptr)}function nr(e){e.count.value-=1;var r=e.count.value===0;r&&Hr(e)}function ir(e,r,t){if(r===t)return e;if(t.baseClass===void 0)return null;var n=ir(e,r,t.baseClass);return n===null?null:t.downcast(n)}var sr={};function Vr(){return Object.keys(B).length}function Br(){var e=[];for(var r in B)B.hasOwnProperty(r)&&e.push(B[r]);return e}var G=[];function De(){for(;G.length;){var e=G.pop();e.$$.deleteScheduled=!1,e.delete()}}var V=void 0;function xr(e){V=e,G.length&&V&&V(De)}function zr(){h.getInheritedInstanceCount=Vr,h.getLiveInheritedInstances=Br,h.flushPendingDeletes=De,h.setDelayFunction=xr}var B={};function Jr(e,r){for(r===void 0&&g("ptr should not be undefined");e.baseClass;)r=e.upcast(r),e=e.baseClass;return r}function Gr(e,r){return r=Jr(e,r),B[r]}function Z(e,r){(!r.ptrType||!r.ptr)&&oe("makeClassHandle requires ptr and ptrType");var t=!!r.smartPtrType,n=!!r.smartPtr;return t!==n&&oe("Both smartPtrType and smartPtr must be specified"),r.count={value:1},x(Object.create(e,{$$:{value:r}}))}function Xr(e){var r=this.getPointee(e);if(!r)return this.destructor(e),null;var t=Gr(this.registeredClass,r);if(t!==void 0){if(t.$$.count.value===0)return t.$$.ptr=r,t.$$.smartPtr=e,t.clone();var n=t.clone();return this.destructor(e),n}function i(){return this.isSmartPointer?Z(this.registeredClass.instancePrototype,{ptrType:this.pointeeType,ptr:r,smartPtrType:this,smartPtr:e}):Z(this.registeredClass.instancePrototype,{ptrType:this,ptr:e})}var s=this.registeredClass.getActualType(r),f=sr[s];if(!f)return i.call(this);var a;this.isConst?a=f.constPointerType:a=f.pointerType;var l=ir(r,this.registeredClass,a.registeredClass);return l===null?i.call(this):this.isSmartPointer?Z(a.registeredClass.instancePrototype,{ptrType:a,ptr:l,smartPtrType:this,smartPtr:e}):Z(a.registeredClass.instancePrototype,{ptrType:a,ptr:l})}function x(e){return typeof FinalizationRegistry>"u"?(x=r=>r,e):(me=new FinalizationRegistry(r=>{nr(r.$$)}),x=r=>{var t=r.$$,n=!!t.smartPtr;if(n){var i={$$:t};me.register(r,i,r)}return r},tr=r=>me.unregister(r),x(e))}function qr(){if(this.$$.ptr||Ue(this),this.$$.preservePointerOnDelete)return this.$$.count.value+=1,this;var e=x(Object.create(Object.getPrototypeOf(this),{$$:{value:Lr(this.$$)}}));return e.$$.count.value+=1,e.$$.deleteScheduled=!1,e}function Yr(){this.$$.ptr||Ue(this),this.$$.deleteScheduled&&!this.$$.preservePointerOnDelete&&g("Object already scheduled for deletion"),tr(this),nr(this.$$),this.$$.preservePointerOnDelete||(this.$$.smartPtr=void 0,this.$$.ptr=void 0)}function Kr(){return!this.$$.ptr}function Qr(){return this.$$.ptr||Ue(this),this.$$.deleteScheduled&&!this.$$.preservePointerOnDelete&&g("Object already scheduled for deletion"),G.push(this),G.length===1&&V&&V(De),this.$$.deleteScheduled=!0,this}function Zr(){j.prototype.isAliasOf=Ir,j.prototype.clone=qr,j.prototype.delete=Yr,j.prototype.isDeleted=Kr,j.prototype.deleteLater=Qr}function j(){}function ar(e,r,t){if(e[r].overloadTable===void 0){var n=e[r];e[r]=function(){return e[r].overloadTable.hasOwnProperty(arguments.length)||g("Function '"+t+"' called with an invalid number of arguments ("+arguments.length+") - expects one of ("+e[r].overloadTable+")!"),e[r].overloadTable[arguments.length].apply(this,arguments)},e[r].overloadTable=[],e[r].overloadTable[n.argCount]=n}}function Nr(e,r,t){h.hasOwnProperty(e)?((t===void 0||h[e].overloadTable!==void 0&&h[e].overloadTable[t]!==void 0)&&g("Cannot register public name '"+e+"' twice"),ar(h,e,e),h.hasOwnProperty(t)&&g("Cannot register multiple overloads of a function with the same number of arguments ("+t+")!"),h[e].overloadTable[t]=r):(h[e]=r,t!==void 0&&(h[e].numArguments=t))}function et(e,r,t,n,i,s,f,a){this.name=e,this.constructor=r,this.instancePrototype=t,this.rawDestructor=n,this.baseClass=i,this.getActualType=s,this.upcast=f,this.downcast=a,this.pureVirtualFunctions=[]}function ue(e,r,t){for(;r!==t;)r.upcast||g("Expected null or instance of "+t.name+", got an instance of "+r.name),e=r.upcast(e),r=r.baseClass;return e}function rt(e,r){if(r===null)return this.isReference&&g("null is not a valid "+this.name),0;r.$$||g('Cannot pass "'+Me(r)+'" as a '+this.name),r.$$.ptr||g("Cannot pass deleted object as a pointer of type "+this.name);var t=r.$$.ptrType.registeredClass,n=ue(r.$$.ptr,t,this.registeredClass);return n}function tt(e,r){var t;if(r===null)return this.isReference&&g("null is not a valid "+this.name),this.isSmartPointer?(t=this.rawConstructor(),e!==null&&e.push(this.rawDestructor,t),t):0;r.$$||g('Cannot pass "'+Me(r)+'" as a '+this.name),r.$$.ptr||g("Cannot pass deleted object as a pointer of type "+this.name),!this.isConst&&r.$$.ptrType.isConst&&g("Cannot convert argument of type "+(r.$$.smartPtrType?r.$$.smartPtrType.name:r.$$.ptrType.name)+" to parameter type "+this.name);var n=r.$$.ptrType.registeredClass;if(t=ue(r.$$.ptr,n,this.registeredClass),this.isSmartPointer)switch(r.$$.smartPtr===void 0&&g("Passing raw pointer to smart pointer is illegal"),this.sharingPolicy){case 0:r.$$.smartPtrType===this?t=r.$$.smartPtr:g("Cannot convert argument of type "+(r.$$.smartPtrType?r.$$.smartPtrType.name:r.$$.ptrType.name)+" to parameter type "+this.name);break;case 1:t=r.$$.smartPtr;break;case 2:if(r.$$.smartPtrType===this)t=r.$$.smartPtr;else{var i=r.clone();t=this.rawShare(t,_e.toHandle(function(){i.delete()})),e!==null&&e.push(this.rawDestructor,t)}break;default:g("Unsupporting sharing policy")}return t}function nt(e,r){if(r===null)return this.isReference&&g("null is not a valid "+this.name),0;r.$$||g('Cannot pass "'+Me(r)+'" as a '+this.name),r.$$.ptr||g("Cannot pass deleted object as a pointer of type "+this.name),r.$$.ptrType.isConst&&g("Cannot convert argument of type "+r.$$.ptrType.name+" to parameter type "+this.name);var t=r.$$.ptrType.registeredClass,n=ue(r.$$.ptr,t,this.registeredClass);return n}function ce(e){return this.fromWireType(U[e>>2])}function it(e){return this.rawGetPointee&&(e=this.rawGetPointee(e)),e}function st(e){this.rawDestructor&&this.rawDestructor(e)}function at(e){e!==null&&e.delete()}function ot(){A.prototype.getPointee=it,A.prototype.destructor=st,A.prototype.argPackAdvance=8,A.prototype.readValueFromPointer=ce,A.prototype.deleteObject=at,A.prototype.fromWireType=Xr}function A(e,r,t,n,i,s,f,a,l,o,u){this.name=e,this.registeredClass=r,this.isReference=t,this.isConst=n,this.isSmartPointer=i,this.pointeeType=s,this.sharingPolicy=f,this.rawGetPointee=a,this.rawConstructor=l,this.rawShare=o,this.rawDestructor=u,!i&&r.baseClass===void 0?n?(this.toWireType=rt,this.destructorFunction=null):(this.toWireType=nt,this.destructorFunction=null):this.toWireType=tt}function ft(e,r,t){h.hasOwnProperty(e)||oe("Replacing nonexistant public symbol"),h[e].overloadTable!==void 0&&t!==void 0?h[e].overloadTable[t]=r:(h[e]=r,h[e].argCount=t)}function lt(e,r,t){var n=dynCalls[e];return t&&t.length?n.apply(null,[r].concat(t)):n.call(null,r)}var N=[];function q(e){var r=N[e];return r||(e>=N.length&&(N.length=e+1),N[e]=r=Ne.get(e)),r}function ut(e,r,t){if(e.includes("j"))return lt(e,r,t);var n=q(r).apply(null,t);return n}function ct(e,r){var t=[];return function(){return t.length=0,Object.assign(t,arguments),ut(e,r,t)}}function k(e,r){e=_(e);function t(){return e.includes("j")?ct(e,r):q(r)}var n=t();return typeof n!="function"&&g("unknown function pointer with signature "+e+": "+r),n}var or=void 0;function dt(e){var r=dr(e),t=_(r);return F(r),t}function X(e,r){var t=[],n={};function i(s){if(!n[s]&&!R[s]){if(ae[s]){ae[s].forEach(i);return}t.push(s),n[s]=!0}}throw r.forEach(i),new or(e+": "+t.map(dt).join([", "]))}function gt(e,r,t,n,i,s,f,a,l,o,u,c,d){u=_(u),s=k(i,s),a&&(a=k(f,a)),o&&(o=k(l,o)),d=k(c,d);var p=Oe(u);Nr(p,function(){X("Cannot construct "+u+" due to unbound types",[n])}),D([e,r,t],n?[n]:[],function(v){v=v[0];var m,y;n?(m=v.registeredClass,y=m.instancePrototype):y=j.prototype;var w=ke(p,function(){if(Object.getPrototypeOf(this)!==$)throw new I("Use 'new' to construct "+u);if(T.constructor_body===void 0)throw new I(u+" has no accessible constructor");var Q=T.constructor_body[arguments.length];if(Q===void 0)throw new I("Tried to invoke ctor of "+u+" with invalid number of parameters ("+arguments.length+") - expected ("+Object.keys(T.constructor_body).toString()+") parameters instead!");return Q.apply(this,arguments)}),$=Object.create(y,{constructor:{value:w}});w.prototype=$;var T=new et(u,w,$,d,m,s,a,o),ve=new A(u,T,!0,!1,!1),Y=new A(u+"*",T,!1,!1,!1),K=new A(u+" const*",T,!1,!0,!1);return sr[e]={pointerType:Y,constPointerType:K},ft(p,w),[ve,Y,K]})}function fr(e,r){for(var t=[],n=0;n<e;n++)t.push(C[r+n*4>>2]);return t}function lr(e){for(;e.length;){var r=e.pop(),t=e.pop();t(r)}}function pt(e,r){if(!(e instanceof Function))throw new TypeError("new_ called with constructor type "+typeof e+" which is not a function");var t=ke(e.name||"unknownFunctionName",function(){});t.prototype=e.prototype;var n=new t,i=e.apply(n,r);return i instanceof Object?i:n}function ur(e,r,t,n,i,s){var f=r.length;f<2&&g("argTypes array size mismatch! Must at least get return value and 'this' types!");for(var a=r[1]!==null&&t!==null,l=!1,o=1;o<r.length;++o)if(r[o]!==null&&r[o].destructorFunction===void 0){l=!0;break}for(var u=r[0].name!=="void",c="",d="",o=0;o<f-2;++o)c+=(o!==0?", ":"")+"arg"+o,d+=(o!==0?", ":"")+"arg"+o+"Wired";var p="return function "+Oe(e)+"("+c+`) {
3
3
  if (arguments.length !== `+(f-2)+`) {
4
4
  throwBindingError('function `+e+" called with ' + arguments.length + ' arguments, expected "+(f-2)+` args!');
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "jassub",
3
- "version": "1.5.9",
3
+ "version": "1.5.10",
4
4
  "description": "libass Subtitle Renderer and Parser library for browsers",
5
5
  "main": "src/jassub.js",
6
6
  "files": [