jassub 1.5.11 → 1.5.12
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/dist/jassub-worker.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
var p=p,Be=e=>console.log(e),xe=e=>console.error(e);function ze(){}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 Te=(e,r)=>{const t=new XMLHttpRequest;return t.open("GET",e,!1),t.responseType=r?"arraybuffer":"text",t.send(null),t.response},mr=(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)};p={wasm:WebAssembly&&!WebAssembly.instantiateStreaming&&Te("jassub-worker.wasm",!0)};ze=()=>postMessage({target:"ready"});Be=e=>{e==="JASSUB: No usable fontconfig configuration file found, using fallback."?console.debug(e):console.log(e)};xe=e=>{e==="Fontconfig error: Cannot load default config file: No such file: (null)"?console.debug(e):console.error(e)};let x=0;const br=1;let j=null,Re=!1,Pe=Date.now(),re=24,Ge=!1,Je="js",te={};const Le={};let wr=0,Xe;self.width=0;self.height=0;let E=!1;self.addFont=({font:e})=>$e(e);const we=e=>{e=e.trim().toLowerCase(),e.startsWith("@")&&(e=e.substring(1)),!Le[e]&&(Le[e]=!0,te[e]?$e(te[e]):Ge&&postMessage({target:"getLocalFont",font:e}))},$e=e=>{ArrayBuffer.isView(e)?Ie(e):mr(e,r=>{Ie(new Uint8Array(r))},console.error)},Ie=e=>{const r=ge(e.byteLength);m.set(e,r),self.jassubObj.addFont("font-"+wr++,r,e.byteLength),self.jassubObj.reloadFonts()},qe=e=>{if(!te)return;const r=Pr(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"&&we(r[i].body[s].value.Fontname);const t=/\\fn([^\\}]*?)[\\}]/g;let n;for(;(n=t.exec(e))!==null;)we(n[1])};self.setTrack=({content:e})=>{qe(e),self.jassubObj.createTrackMem(e)};self.freeTrack=()=>{self.jassubObj.removeTrack()};self.setTrackByUrl=({url:e})=>{self.setTrack({content:Te(e)})};const _r=(e,r)=>{self.width=e,self.height=r,self.jassubObj.resizeCanvas(e,r)},Cr=()=>{const e=(Date.now()-Pe)/1e3;return ne?x:(e>5&&(console.error("Didn't received currentTime > 5 seconds. Assuming video was paused."),Ye(!0)),x+e*br)},Tr=e=>{x=e,Pe=Date.now(),j||(Re?j=Fe(ie):(ie(),setTimeout(()=>{Re=!1},20)))};let ne=!0;const Ye=e=>{e!==ne&&(ne=e,e?j&&(clearTimeout(j),j=null):(Pe=Date.now(),j=Fe(ie)))},Ae=(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 o=performance.now();if(!n)return me({images:s,buffers:f,times:i,decodeStartTime:o});if(E){const a=[];for(let l=n,u=0;u<self.jassubObj.count;l=l.next,++u)s.push({w:l.w,h:l.h,x:l.x,y:l.y}),a.push(createImageBitmap(new ImageData(Se.subarray(l.image,l.image+l.w*l.h*4),l.w,l.h)));Promise.all(a).then(l=>{for(let u=0;u<s.length;u++)s[u].image=l[u];f=l,me({images:s,buffers:f,times:i,decodeStartTime:o})})}else{for(let a=n,l=0;l<self.jassubObj.count;a=a.next,++l){const u={w:a.w,h:a.h,x:a.x,y:a.y,image:a.image};if(!M){const c=X.slice(a.image,a.image+a.w*a.h*4);f.push(c),u.image=c}s.push(u)}me({images:s,buffers:f,times:i,decodeStartTime:o})}}else postMessage({target:"unbusy"})};self.demand=({time:e})=>{x=e,Ae(e)};const ie=e=>{j=0,Ae(Cr(),e),ne||(j=Fe(ie))},me=({times:e,images:r,decodeStartTime:t,buffers:n})=>{if(e.decodeTime=performance.now()-t,M){const i=performance.now();I.width=self.width,I.height!==self.height&&(I.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(Se.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(Xe){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)},Pr=e=>{let r,t,n,i,s,f,o,a,l,u;const c=[],d=e.split(/[\r\n]+/g);for(a=0;a<d.length;a++)if(r=d[a].match(/^\[(.*)\]$/),r)t=null,c.push({name:r[1],body:[]});else{if(/^\s*$/.test(d[a])||c.length===0)continue;if(u=c[c.length-1].body,d[a][0]===";")u.push({type:"comment",value:d[a].substring(1)});else{if(i=d[a].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(h=>h.trim()),t)){for(o={},l=0;l<f.length;l++)o[t[l]]=f[l];f=o}s==="Format"&&(t=f),u.push({key:s,value:f})}}return c},Fe=(()=>{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)}})(),le=(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,Xe=e.debug,re=e.targetFps||re,Ge=e.useLocalFonts;const r=e.fallbackFont.toLowerCase();self.jassubObj=new p.JASSUB(self.width,self.height,r||null),r&&we(r);let t=e.subContent;t||(t=Te(e.subUrl)),qe(t);for(const n of e.fonts||[])$e(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");_r(e,r),t&&Ae(x)};self.video=({currentTime:e,isPaused:r,rate:t})=>{e!=null&&Tr(e),r!=null&&Ye(r),t=t||t};let I,M;self.offscreenCanvas=({transferable:e})=>{I=e[0],M=I.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})=>{le(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:o,MarginR:a,MarginV:l,Name:u,Text:c,Effect:d}=self.jassubObj.getEvent(r);e.push({Start:t,Duration:n,ReadOrder:i,Layer:s,Style:f,MarginL:o,MarginR:a,MarginV:l,Name:u,Text:c,Effect:d})}postMessage({target:"getEvents",events:e})};self.setEvent=({event:e,index:r})=>{le(e,self.jassubObj.getEvent(r))};self.removeEvent=({index:e})=>{self.jassubObj.removeEvent(e)};self.createStyle=({style:e})=>{le(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:o,BackColour:a,Bold:l,Italic:u,Underline:c,StrikeOut:d,ScaleX:h,ScaleY:v,Spacing:y,Angle:b,BorderStyle:_,Outline:k,Shadow:T,Alignment:ye,MarginL:Y,MarginR:K,MarginV:Q,Encoding:pr,treat_fontname_as_pattern:hr,Blur:vr,Justify:yr}=self.jassubObj.getStyle(r);e.push({Name:t,FontName:n,FontSize:i,PrimaryColour:s,SecondaryColour:f,OutlineColour:o,BackColour:a,Bold:l,Italic:u,Underline:c,StrikeOut:d,ScaleX:h,ScaleY:v,Spacing:y,Angle:b,BorderStyle:_,Outline:k,Shadow:T,Alignment:ye,MarginL:Y,MarginR:K,MarginV:Q,Encoding:pr,treat_fontname_as_pattern:hr,Blur:vr,Justify:yr})}postMessage({target:"getStyles",time:Date.now(),styles:e})};self.setStyle=({style:e,index:r})=>{le(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 Se=null;ae=(e=>r=>{e(r),Se=new Uint8ClampedArray(X)})(ae);function Ke(e){throw e}var Qe=new TextDecoder("utf8");function $r(e,r,t){for(var n=r+t,i=r;e[i]&&!(i>=n);)++i;return Qe.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)&&m[n];)++n;return Qe.decode(m.subarray(e,n))}function Ar(e,r,t,n){if(!(n>0))return 0;for(var i=t,s=t+n-1,f=0;f<e.length;++f){var o=e.charCodeAt(f);if(o>=55296&&o<=57343){var a=e.charCodeAt(++f);o=65536+((o&1023)<<10)|a&1023}if(o<=127){if(t>=s)break;r[t++]=o}else if(o<=2047){if(t+1>=s)break;r[t++]=192|o>>6,r[t++]=128|o&63}else if(o<=65535){if(t+2>=s)break;r[t++]=224|o>>12,r[t++]=128|o>>6&63,r[t++]=128|o&63}else{if(t+3>=s)break;r[t++]=240|o>>18,r[t++]=128|o>>12&63,r[t++]=128|o>>6&63,r[t++]=128|o&63}}return r[t]=0,t-i}function Fr(e,r,t){return Ar(e,m,r,t)}function Sr(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 je,z,U,m,ue,C,Ze,Ne,se,X,er;function ae(e){X=e,je=new Int8Array(e),z=new Int16Array(e),U=new Int32Array(e),m=new Uint8Array(e),ue=new Uint16Array(e),C=new Uint32Array(e),Ze=new Float32Array(e),Ne=new Float64Array(e)}function jr(e,r,t,n){Ke("Assertion failed: "+ee(e)+", at: "+[r?ee(r):"unknown filename",t,n?ee(n):"unknown function"])}function Or(e,r,t){return 0}function kr(e,r,t){}function Er(e,r,t){return 0}function Ur(e,r,t,n){}function Dr(e,r,t,n,i){}function Oe(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 Mr(){for(var e=new Array(256),r=0;r<256;++r)e[r]=String.fromCharCode(r);rr=e}var rr=void 0;function w(e){for(var r="",t=e;m[t];)r+=rr[m[t++]];return r}var W={},R={},oe={},Wr=48,Rr=57;function ke(e){if(e===void 0)return"_unknown";e=e.replace(/[^a-zA-Z0-9_]/g,"$");var r=e.charCodeAt(0);return r>=Wr&&r<=Rr?"_"+e:e}function Ee(e,r){return e=ke(e),new Function("body","return function "+e+`() {
|
|
1
|
+
var p=p,Be=e=>console.log(e),xe=e=>console.error(e);function ze(){}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 Te=(e,r)=>{const t=new XMLHttpRequest;return t.open("GET",e,!1),t.responseType=r?"arraybuffer":"text",t.send(null),t.response},mr=(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)};p={wasm:WebAssembly&&!WebAssembly.instantiateStreaming&&Te("jassub-worker.wasm",!0)};ze=()=>postMessage({target:"ready"});Be=e=>{e==="JASSUB: No usable fontconfig configuration file found, using fallback."?console.debug(e):console.log(e)};xe=e=>{e==="Fontconfig error: Cannot load default config file: No such file: (null)"?console.debug(e):console.error(e)};let x=0;const br=1;let j=null,Re=!1,Pe=Date.now(),re=24,Ge=!1,Je="js",te={};const Le={};let wr=0,Xe;self.width=0;self.height=0;let E=!1;self.addFont=({font:e})=>$e(e);const we=e=>{e=e.trim().toLowerCase(),e.startsWith("@")&&(e=e.substring(1)),!Le[e]&&(Le[e]=!0,te[e]?$e(te[e]):Ge&&postMessage({target:"getLocalFont",font:e}))},$e=e=>{ArrayBuffer.isView(e)?Ie(e):mr(e,r=>{Ie(new Uint8Array(r))},console.error)},Ie=e=>{const r=ge(e.byteLength);m.set(e,r),self.jassubObj.addFont("font-"+wr++,r,e.byteLength),self.jassubObj.reloadFonts()},qe=e=>{if(!te)return;const r=Pr(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"&&we(r[i].body[s].value.Fontname);const t=/\\fn([^\\}]*?)[\\}]/g;let n;for(;(n=t.exec(e))!==null;)we(n[1])};self.setTrack=({content:e})=>{qe(e),self.jassubObj.createTrackMem(e)};self.freeTrack=()=>{self.jassubObj.removeTrack()};self.setTrackByUrl=({url:e})=>{self.setTrack({content:Te(e)})};const _r=(e,r)=>{self.width=e,self.height=r,self.jassubObj.resizeCanvas(e,r)},Cr=()=>{const e=(Date.now()-Pe)/1e3;return ne?x:(e>5&&(console.error("Didn't received currentTime > 5 seconds. Assuming video was paused."),Ye(!0)),x+e*br)},Tr=e=>{x=e,Pe=Date.now(),j||(Re?j=Fe(ie):(ie(),setTimeout(()=>{Re=!1},20)))};let ne=!0;const Ye=e=>{e!==ne&&(ne=e,e?j&&(clearTimeout(j),j=null):(Pe=Date.now(),j=Fe(ie)))},Ae=(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 o=performance.now();if(!n)return me({images:s,buffers:f,times:i,decodeStartTime:o});if(E){const a=[];for(let l=n,u=0;u<self.jassubObj.count;l=l.next,++u)s.push({w:l.w,h:l.h,x:l.x,y:l.y}),a.push(createImageBitmap(new ImageData(Se.slice(l.image,l.image+l.w*l.h*4),l.w,l.h)));Promise.all(a).then(l=>{for(let u=0;u<s.length;u++)s[u].image=l[u];f=l,me({images:s,buffers:f,times:i,decodeStartTime:o})})}else{for(let a=n,l=0;l<self.jassubObj.count;a=a.next,++l){const u={w:a.w,h:a.h,x:a.x,y:a.y,image:a.image};if(!M){const c=X.slice(a.image,a.image+a.w*a.h*4);f.push(c),u.image=c}s.push(u)}me({images:s,buffers:f,times:i,decodeStartTime:o})}}else postMessage({target:"unbusy"})};self.demand=({time:e})=>{x=e,Ae(e)};const ie=e=>{j=0,Ae(Cr(),e),ne||(j=Fe(ie))},me=({times:e,images:r,decodeStartTime:t,buffers:n})=>{if(e.decodeTime=performance.now()-t,M){const i=performance.now();I.width=self.width,I.height!==self.height&&(I.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(Se.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(Xe){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)},Pr=e=>{let r,t,n,i,s,f,o,a,l,u;const c=[],d=e.split(/[\r\n]+/g);for(a=0;a<d.length;a++)if(r=d[a].match(/^\[(.*)\]$/),r)t=null,c.push({name:r[1],body:[]});else{if(/^\s*$/.test(d[a])||c.length===0)continue;if(u=c[c.length-1].body,d[a][0]===";")u.push({type:"comment",value:d[a].substring(1)});else{if(i=d[a].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(h=>h.trim()),t)){for(o={},l=0;l<f.length;l++)o[t[l]]=f[l];f=o}s==="Format"&&(t=f),u.push({key:s,value:f})}}return c},Fe=(()=>{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)}})(),le=(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,Xe=e.debug,re=e.targetFps||re,Ge=e.useLocalFonts;const r=e.fallbackFont.toLowerCase();self.jassubObj=new p.JASSUB(self.width,self.height,r||null),r&&we(r);let t=e.subContent;t||(t=Te(e.subUrl)),qe(t);for(const n of e.fonts||[])$e(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");_r(e,r),t&&Ae(x)};self.video=({currentTime:e,isPaused:r,rate:t})=>{e!=null&&Tr(e),r!=null&&Ye(r),t=t||t};let I,M;self.offscreenCanvas=({transferable:e})=>{I=e[0],M=I.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})=>{le(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:o,MarginR:a,MarginV:l,Name:u,Text:c,Effect:d}=self.jassubObj.getEvent(r);e.push({Start:t,Duration:n,ReadOrder:i,Layer:s,Style:f,MarginL:o,MarginR:a,MarginV:l,Name:u,Text:c,Effect:d})}postMessage({target:"getEvents",events:e})};self.setEvent=({event:e,index:r})=>{le(e,self.jassubObj.getEvent(r))};self.removeEvent=({index:e})=>{self.jassubObj.removeEvent(e)};self.createStyle=({style:e})=>{le(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:o,BackColour:a,Bold:l,Italic:u,Underline:c,StrikeOut:d,ScaleX:h,ScaleY:v,Spacing:y,Angle:b,BorderStyle:_,Outline:k,Shadow:T,Alignment:ye,MarginL:Y,MarginR:K,MarginV:Q,Encoding:pr,treat_fontname_as_pattern:hr,Blur:vr,Justify:yr}=self.jassubObj.getStyle(r);e.push({Name:t,FontName:n,FontSize:i,PrimaryColour:s,SecondaryColour:f,OutlineColour:o,BackColour:a,Bold:l,Italic:u,Underline:c,StrikeOut:d,ScaleX:h,ScaleY:v,Spacing:y,Angle:b,BorderStyle:_,Outline:k,Shadow:T,Alignment:ye,MarginL:Y,MarginR:K,MarginV:Q,Encoding:pr,treat_fontname_as_pattern:hr,Blur:vr,Justify:yr})}postMessage({target:"getStyles",time:Date.now(),styles:e})};self.setStyle=({style:e,index:r})=>{le(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 Se=null;ae=(e=>r=>{e(r),Se=new Uint8ClampedArray(X)})(ae);function Ke(e){throw e}var Qe=new TextDecoder("utf8");function $r(e,r,t){for(var n=r+t,i=r;e[i]&&!(i>=n);)++i;return Qe.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)&&m[n];)++n;return Qe.decode(m.subarray(e,n))}function Ar(e,r,t,n){if(!(n>0))return 0;for(var i=t,s=t+n-1,f=0;f<e.length;++f){var o=e.charCodeAt(f);if(o>=55296&&o<=57343){var a=e.charCodeAt(++f);o=65536+((o&1023)<<10)|a&1023}if(o<=127){if(t>=s)break;r[t++]=o}else if(o<=2047){if(t+1>=s)break;r[t++]=192|o>>6,r[t++]=128|o&63}else if(o<=65535){if(t+2>=s)break;r[t++]=224|o>>12,r[t++]=128|o>>6&63,r[t++]=128|o&63}else{if(t+3>=s)break;r[t++]=240|o>>18,r[t++]=128|o>>12&63,r[t++]=128|o>>6&63,r[t++]=128|o&63}}return r[t]=0,t-i}function Fr(e,r,t){return Ar(e,m,r,t)}function Sr(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 je,z,U,m,ue,C,Ze,Ne,se,X,er;function ae(e){X=e,je=new Int8Array(e),z=new Int16Array(e),U=new Int32Array(e),m=new Uint8Array(e),ue=new Uint16Array(e),C=new Uint32Array(e),Ze=new Float32Array(e),Ne=new Float64Array(e)}function jr(e,r,t,n){Ke("Assertion failed: "+ee(e)+", at: "+[r?ee(r):"unknown filename",t,n?ee(n):"unknown function"])}function Or(e,r,t){return 0}function kr(e,r,t){}function Er(e,r,t){return 0}function Ur(e,r,t,n){}function Dr(e,r,t,n,i){}function Oe(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 Mr(){for(var e=new Array(256),r=0;r<256;++r)e[r]=String.fromCharCode(r);rr=e}var rr=void 0;function w(e){for(var r="",t=e;m[t];)r+=rr[m[t++]];return r}var W={},R={},oe={},Wr=48,Rr=57;function ke(e){if(e===void 0)return"_unknown";e=e.replace(/[^a-zA-Z0-9_]/g,"$");var r=e.charCodeAt(0);return r>=Wr&&r<=Rr?"_"+e:e}function Ee(e,r){return e=ke(e),new Function("body","return function "+e+`() {
|
|
2
2
|
"use strict"; return body.apply(this, arguments);
|
|
3
3
|
};
|
|
4
4
|
`)(r)}function Ue(e,r){var t=Ee(r,function(n){this.name=r,this.message=n;var i=new Error(n).stack;i!==void 0&&(this.stack=this.toString()+`
|