diff --git a/codecs/basis/dec/basis_dec.d.ts b/codecs/basis/dec/basis_dec.d.ts new file mode 100644 index 00000000..55c47c90 --- /dev/null +++ b/codecs/basis/dec/basis_dec.d.ts @@ -0,0 +1,7 @@ +export interface BasisModule extends EmscriptenWasm.Module { + decode(data: BufferSource): ImageData | null; +} + +declare var moduleFactory: EmscriptenWasm.ModuleFactory; + +export default moduleFactory; diff --git a/codecs/basis/dec/basis_dec.wasm b/codecs/basis/dec/basis_dec.wasm index 93e2a2ec..4adaee3f 100755 Binary files a/codecs/basis/dec/basis_dec.wasm and b/codecs/basis/dec/basis_dec.wasm differ diff --git a/codecs/basis/enc/basis_enc.cpp b/codecs/basis/enc/basis_enc.cpp index 8abd6c6f..6b9956c5 100644 --- a/codecs/basis/enc/basis_enc.cpp +++ b/codecs/basis/enc/basis_enc.cpp @@ -7,9 +7,11 @@ using namespace emscripten; using namespace basisu; +struct BasisOptions {}; + thread_local const val Uint8Array = val::global("Uint8Array"); -val encode(std::string image_in, int image_width, int image_height /*, MozJpegOptions opts*/) { +val encode(std::string image_in, int image_width, int image_height, BasisOptions opts) { basisu_encoder_init(); basis_compressor_params params; @@ -42,23 +44,8 @@ val encode(std::string image_in, int image_width, int image_height /*, MozJpegOp } EMSCRIPTEN_BINDINGS(my_module) { - // value_object("MozJpegOptions") - // .field("quality", &MozJpegOptions::quality) - // .field("baseline", &MozJpegOptions::baseline) - // .field("arithmetic", &MozJpegOptions::arithmetic) - // .field("progressive", &MozJpegOptions::progressive) - // .field("optimize_coding", &MozJpegOptions::optimize_coding) - // .field("smoothing", &MozJpegOptions::smoothing) - // .field("color_space", &MozJpegOptions::color_space) - // .field("quant_table", &MozJpegOptions::quant_table) - // .field("trellis_multipass", &MozJpegOptions::trellis_multipass) - // .field("trellis_opt_zero", &MozJpegOptions::trellis_opt_zero) - // .field("trellis_opt_table", &MozJpegOptions::trellis_opt_table) - // .field("trellis_loops", &MozJpegOptions::trellis_loops) - // .field("chroma_subsample", &MozJpegOptions::chroma_subsample) - // .field("auto_subsample", &MozJpegOptions::auto_subsample) - // .field("separate_chroma_quality", &MozJpegOptions::separate_chroma_quality) - // .field("chroma_quality", &MozJpegOptions::chroma_quality); + value_object("BasisOptions"); + // .field("quality", &MozJpegOptions::quality); function("encode", &encode); } diff --git a/codecs/basis/enc/basis_enc.d.ts b/codecs/basis/enc/basis_enc.d.ts new file mode 100644 index 00000000..cdcc8f3b --- /dev/null +++ b/codecs/basis/enc/basis_enc.d.ts @@ -0,0 +1,15 @@ +export interface EncodeOptions { +} + +export interface BasisModule extends EmscriptenWasm.Module { + encode( + data: BufferSource, + width: number, + height: number, + options: EncodeOptions, + ): Uint8Array | null; +} + +declare var moduleFactory: EmscriptenWasm.ModuleFactory; + +export default moduleFactory; diff --git a/codecs/basis/enc/basis_enc.js b/codecs/basis/enc/basis_enc.js index 8dad893d..e95036c0 100644 --- a/codecs/basis/enc/basis_enc.js +++ b/codecs/basis/enc/basis_enc.js @@ -7,81 +7,55 @@ function(Module) { Module = Module || {}; -var g;g||(g=typeof Module !== 'undefined' ? Module : {});var aa,ba;g.ready=new Promise(function(a,b){aa=a;ba=b});var l={},p;for(p in g)g.hasOwnProperty(p)&&(l[p]=g[p]);var u="",ca;u=self.location.href;_scriptDir&&(u=_scriptDir);0!==u.indexOf("blob:")?u=u.substr(0,u.lastIndexOf("/")+1):u="";ca=function(a){var b=new XMLHttpRequest;b.open("GET",a,!1);b.responseType="arraybuffer";b.send(null);return new Uint8Array(b.response)};var da=g.print||console.log.bind(console),x=g.printErr||console.warn.bind(console); -for(p in l)l.hasOwnProperty(p)&&(g[p]=l[p]);l=null;var ea=0,fa;g.wasmBinary&&(fa=g.wasmBinary);var noExitRuntime=g.noExitRuntime||!0;"object"!==typeof WebAssembly&&y("no native wasm support detected");var ha,ia=!1,ja=new TextDecoder("utf8");function ka(a){for(var b=0;a[b]&&!(NaN<=b);)++b;return ja.decode(a.subarray?a.subarray(0,b):new Uint8Array(a.slice(0,b)))}function la(a,b){if(!a)return"";b=a+b;for(var c=a;!(c>=b)&&z[c];)++c;return ja.decode(z.subarray(a,c))} -function ma(a,b,c,d){if(!(0=h){var k=a.charCodeAt(++f);h=65536+((h&1023)<<10)|k&1023}if(127>=h){if(c>=d)break;b[c++]=h}else{if(2047>=h){if(c+1>=d)break;b[c++]=192|h>>6}else{if(65535>=h){if(c+2>=d)break;b[c++]=224|h>>12}else{if(c+3>=d)break;b[c++]=240|h>>18;b[c++]=128|h>>12&63}b[c++]=128|h>>6&63}b[c++]=128|h&63}}b[c]=0;return c-e} -function na(a){for(var b=0,c=0;c=d&&(d=65536+((d&1023)<<10)|a.charCodeAt(++c)&1023);127>=d?++b:b=2047>=d?b+2:65535>=d?b+3:b+4}return b}var oa=new TextDecoder("utf-16le");function pa(a,b){var c=a>>1;for(b=c+b/2;!(c>=b)&&qa[c];)++c;return oa.decode(z.subarray(a,c<<1))}function ra(a,b,c){void 0===c&&(c=2147483647);if(2>c)return 0;c-=2;var d=b;c=c<2*a.length?c/2:a.length;for(var e=0;e>1]=a.charCodeAt(e),b+=2;A[b>>1]=0;return b-d} -function sa(a){return 2*a.length}function ta(a,b){for(var c=0,d="";!(c>=b/4);){var e=B[a+4*c>>2];if(0==e)break;++c;65536<=e?(e-=65536,d+=String.fromCharCode(55296|e>>10,56320|e&1023)):d+=String.fromCharCode(e)}return d}function ua(a,b,c){void 0===c&&(c=2147483647);if(4>c)return 0;var d=b;c=d+c-4;for(var e=0;e=f){var h=a.charCodeAt(++e);f=65536+((f&1023)<<10)|h&1023}B[b>>2]=f;b+=4;if(b+4>c)break}B[b>>2]=0;return b-d} -function va(a){for(var b=0,c=0;c=d&&++c;b+=4}return b}var wa,E,z,A,qa,B,F,xa,ya;function za(){var a=ha.buffer;wa=a;g.HEAP8=E=new Int8Array(a);g.HEAP16=A=new Int16Array(a);g.HEAP32=B=new Int32Array(a);g.HEAPU8=z=new Uint8Array(a);g.HEAPU16=qa=new Uint16Array(a);g.HEAPU32=F=new Uint32Array(a);g.HEAPF32=xa=new Float32Array(a);g.HEAPF64=ya=new Float64Array(a)}var G,Aa=[],Ba=[],Ca=[],Da=[];function Ea(){var a=g.preRun.shift();Aa.unshift(a)} -var H=0,Fa=null,Ga=null;g.preloadedImages={};g.preloadedAudios={};function y(a){if(g.onAbort)g.onAbort(a);x(a);ia=!0;a=new WebAssembly.RuntimeError("abort("+a+"). Build with -s ASSERTIONS=1 for more info.");ba(a);throw a;}function Ha(){var a=I;return String.prototype.startsWith?a.startsWith("data:application/octet-stream;base64,"):0===a.indexOf("data:application/octet-stream;base64,")}var I="basis_enc.wasm";if(!Ha()){var Ia=I;I=g.locateFile?g.locateFile(Ia,u):u+Ia} -function Ja(){var a=I;try{if(a==I&&fa)return new Uint8Array(fa);if(ca)return ca(a);throw"both async and sync fetching of the wasm failed";}catch(b){y(b)}}function Ka(){return fa||"function"!==typeof fetch?Promise.resolve().then(function(){return Ja()}):fetch(I,{credentials:"same-origin"}).then(function(a){if(!a.ok)throw"failed to load wasm binary file at '"+I+"'";return a.arrayBuffer()}).catch(function(){return Ja()})}var J,La; -function Ma(a){for(;0>2]=b};this.Wa=function(b){B[this.na+0>>2]=b};this.Xa=function(){B[this.na+4>>2]=0};this.Va=function(){E[this.na+12>>0]=0};this.Ya=function(){E[this.na+13>>0]=0};this.Pa=function(b,c){this.Za(b);this.Wa(c);this.Xa();this.Va();this.Ya()}}var Oa=0; -function Pa(a,b){for(var c=0,d=a.length-1;0<=d;d--){var e=a[d];"."===e?a.splice(d,1):".."===e?(a.splice(d,1),c++):c&&(a.splice(d,1),c--)}if(b)for(;c;c--)a.unshift("..");return a}function Qa(a){var b="/"===a.charAt(0),c="/"===a.substr(-1);(a=Pa(a.split("/").filter(function(d){return!!d}),!b).join("/"))||b||(a=".");a&&c&&(a+="/");return(b?"/":"")+a} -function Ra(a){var b=/^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/.exec(a).slice(1);a=b[0];b=b[1];if(!a&&!b)return".";b&&(b=b.substr(0,b.length-1));return a+b}function Sa(a){if("/"===a)return"/";a=Qa(a);a=a.replace(/\/$/,"");var b=a.lastIndexOf("/");return-1===b?a:a.substr(b+1)} -function Ta(){if("object"===typeof crypto&&"function"===typeof crypto.getRandomValues){var a=new Uint8Array(1);return function(){crypto.getRandomValues(a);return a[0]}}return function(){y("randomDevice")}} -function Ua(){for(var a="",b=!1,c=arguments.length-1;-1<=c&&!b;c--){b=0<=c?arguments[c]:"/";if("string"!==typeof b)throw new TypeError("Arguments to path.resolve must be strings");if(!b)return"";a=b+"/"+a;b="/"===b.charAt(0)}a=Pa(a.split("/").filter(function(d){return!!d}),!b).join("/");return(b?"/":"")+a||"."}var Va=[];function Wa(a,b){Va[a]={input:[],ca:[],ma:b};Xa(a,Ya)} -var Ya={open:function(a){var b=Va[a.node.sa];if(!b)throw new K(43);a.ba=b;a.seekable=!1},close:function(a){a.ba.ma.flush(a.ba)},flush:function(a){a.ba.ma.flush(a.ba)},read:function(a,b,c,d){if(!a.ba||!a.ba.ma.Ea)throw new K(60);for(var e=0,f=0;f=b||(b=Math.max(b,c*(1048576>c?2:1.125)>>>0),0!=c&&(b=Math.max(b,256)),c=a.Y,a.Y=new Uint8Array(b),0=a.node.aa)return 0;a=Math.min(a.node.aa-e,d);if(8b)throw new K(28);return b},za:function(a,b,c){L.Ba(a.node,b+c);a.node.aa=Math.max(a.node.aa,b+c)},Fa:function(a,b,c,d,e,f){if(0!==b)throw new K(28);if(32768!== -(a.node.mode&61440))throw new K(43);a=a.node.Y;if(f&2||a.buffer!==wa){if(0>>0)%jb.length}function db(a,b){var c;if(c=(c=pb(a,"x"))?c:a.Z.oa?0:2)throw new K(c,a);for(c=jb[ob(a.id,b)];c;c=c.Sa){var d=c.name;if(c.parent.id===a.id&&d===b)return c}return a.Z.oa(a,b)}function bb(a,b,c,d){a=new qb(a,b,c,d);b=ob(a.parent.id,a.name);a.Sa=jb[b];return jb[b]=a} -var rb={r:0,"r+":2,w:577,"w+":578,a:1089,"a+":1090};function sb(a){var b=["r","w","rw"][a&3];a&512&&(b+="w");return b}function pb(a,b){if(kb)return 0;if(-1===b.indexOf("r")||a.mode&292){if(-1!==b.indexOf("w")&&!(a.mode&146)||-1!==b.indexOf("x")&&!(a.mode&73))return 2}else return 2;return 0}function tb(a,b){try{return db(a,b),20}catch(c){}return pb(a,"wx")}function ub(a){var b=4096;for(a=a||0;a<=b;a++)if(!hb[a])return a;throw new K(33);} -function vb(a,b){wb||(wb=function(){},wb.prototype={});var c=new wb,d;for(d in a)c[d]=a[d];a=c;b=ub(b);a.ia=b;return hb[b]=a}var ab={open:function(a){a.$=gb[a.node.sa].$;a.$.open&&a.$.open(a)},la:function(){throw new K(70);}};function Xa(a,b){gb[a]={$:b}} -function xb(a,b){var c="/"===b,d=!b;if(c&&fb)throw new K(10);if(!c&&!d){var e=M(b,{Da:!1});b=e.path;e=e.node;if(e.ra)throw new K(10);if(16384!==(e.mode&61440))throw new K(54);}b={type:a,ob:{},Ga:b,Ra:[]};a=a.ga(b);a.ga=b;b.root=a;c?fb=a:e&&(e.ra=b,e.ga&&e.ga.Ra.push(b))}function yb(a,b,c){var d=M(a,{parent:!0}).node;a=Sa(a);if(!a||"."===a||".."===a)throw new K(28);var e=tb(d,a);if(e)throw new K(e);if(!d.Z.qa)throw new K(63);return d.Z.qa(d,a,b,c)}function N(a){return yb(a,16895,0)} -function zb(a,b,c){"undefined"===typeof c&&(c=b,b=438);yb(a,b|8192,c)}function Ab(a,b){if(!Ua(a))throw new K(44);var c=M(b,{parent:!0}).node;if(!c)throw new K(44);b=Sa(b);var d=tb(c,b);if(d)throw new K(d);if(!c.Z.ta)throw new K(63);c.Z.ta(c,b,a)}function mb(a){a=M(a).node;if(!a)throw new K(44);if(!a.Z.pa)throw new K(28);return Ua(nb(a.parent),a.Z.pa(a))} -function Bb(a,b,c,d){if(""===a)throw new K(44);if("string"===typeof b){var e=rb[b];if("undefined"===typeof e)throw Error("Unknown file open mode: "+b);b=e}c=b&64?("undefined"===typeof c?438:c)&4095|32768:0;if("object"===typeof a)var f=a;else{a=Qa(a);try{f=M(a,{Ca:!(b&131072)}).node}catch(k){}}e=!1;if(b&64)if(f){if(b&128)throw new K(20);}else f=yb(a,c,0),e=!0;if(!f)throw new K(44);8192===(f.mode&61440)&&(b&=-513);if(b&65536&&16384!==(f.mode&61440))throw new K(54);if(!e&&(c=f?40960===(f.mode&61440)? -32:16384===(f.mode&61440)&&("r"!==sb(b)||b&512)?31:pb(f,sb(b)):44))throw new K(c);if(b&512){c=f;var h;"string"===typeof c?h=M(c,{Ca:!0}).node:h=c;if(!h.Z.fa)throw new K(63);if(16384===(h.mode&61440))throw new K(31);if(32768!==(h.mode&61440))throw new K(28);if(c=pb(h,"w"))throw new K(c);h.Z.fa(h,{size:0,timestamp:Date.now()})}b&=-131713;d=vb({node:f,path:nb(f),flags:b,seekable:!0,position:0,$:f.$,$a:[],error:!1},d);d.$.open&&d.$.open(d);!g.logReadFiles||b&1||(Cb||(Cb={}),a in Cb||(Cb[a]=1,x("FS.trackingDelegate error on read file: "+ -a)));try{lb.onOpenFile&&(f=0,1!==(b&2097155)&&(f|=1),0!==(b&2097155)&&(f|=2),lb.onOpenFile(a,f))}catch(k){x("FS.trackingDelegate['onOpenFile']('"+a+"', flags) threw an exception: "+k.message)}return d}function Db(a,b,c){if(null===a.ia)throw new K(8);if(!a.seekable||!a.$.la)throw new K(70);if(0!=c&&1!=c&&2!=c)throw new K(28);a.position=a.$.la(a,b,c);a.$a=[]} -function Eb(){K||(K=function(a,b){this.node=b;this.Ua=function(c){this.ka=c};this.Ua(a);this.message="FS error"},K.prototype=Error(),K.prototype.constructor=K,[44].forEach(function(a){cb[a]=new K(a);cb[a].stack=""}))}var Fb;function Gb(a,b){var c=0;a&&(c|=365);b&&(c|=146);return c} -function Hb(a,b,c){a=Qa("/dev/"+a);var d=Gb(!!b,!!c);Ib||(Ib=64);var e=Ib++<<8|0;Xa(e,{open:function(f){f.seekable=!1},close:function(){c&&c.buffer&&c.buffer.length&&c(10)},read:function(f,h,k,m){for(var q=0,r=0;r>2]}function Q(a){a=hb[a];if(!a)throw new K(8);return a}function Kb(a){switch(a){case 1:return 0;case 2:return 1;case 4:return 2;case 8:return 3;default:throw new TypeError("Unknown type size: "+a);}}var Lb=void 0;function R(a){for(var b="";z[a];)b+=Lb[z[a++]];return b}var S={},T={},Nb={};function Ob(a){if(void 0===a)return"_unknown";a=a.replace(/[^a-zA-Z0-9_]/g,"$");var b=a.charCodeAt(0);return 48<=b&&57>=b?"_"+a:a} -function Pb(a,b){a=Ob(a);return(new Function("body","return function "+a+'() {\n "use strict"; return body.apply(this, arguments);\n};\n'))(b)}function Qb(a){var b=Error,c=Pb(a,function(d){this.name=a;this.message=d;d=Error(d).stack;void 0!==d&&(this.stack=this.toString()+"\n"+d.replace(/^Error(:[^\n]*)?\n/,""))});c.prototype=Object.create(b.prototype);c.prototype.constructor=c;c.prototype.toString=function(){return void 0===this.message?this.name:this.name+": "+this.message};return c} -var Rb=void 0;function U(a){throw new Rb(a);}var Sb=void 0;function Tb(a,b){function c(k){k=b(k);if(k.length!==d.length)throw new Sb("Mismatched type converter count");for(var m=0;m>2])}function Yb(a){if(null===a)return"null";var b=typeof a;return"object"===b||"array"===b||"function"===b?a.toString():""+a} -function Zb(a,b){switch(b){case 2:return function(c){return this.fromWireType(xa[c>>2])};case 3:return function(c){return this.fromWireType(ya[c>>3])};default:throw new TypeError("Unknown float type: "+a);}}function $b(a){var b=Function;if(!(b instanceof Function))throw new TypeError("new_ called with constructor type "+typeof b+" which is not a function");var c=Pb(b.name||"unknownFunctionName",function(){});c.prototype=b.prototype;c=new c;a=b.apply(c,a);return a instanceof Object?a:c} -function ac(a){for(;a.length;){var b=a.pop();a.pop()(b)}}function bc(a,b){var c=g;if(void 0===c[a].ea){var d=c[a];c[a]=function(){c[a].ea.hasOwnProperty(arguments.length)||U("Function '"+b+"' called with an invalid number of arguments ("+arguments.length+") - expects one of ("+c[a].ea+")!");return c[a].ea[arguments.length].apply(this,arguments)};c[a].ea=[];c[a].ea[d.Ma]=d}} -function cc(a,b,c){g.hasOwnProperty(a)?((void 0===c||void 0!==g[a].ea&&void 0!==g[a].ea[c])&&U("Cannot register public name '"+a+"' twice"),bc(a,a),g.hasOwnProperty(c)&&U("Cannot register multiple overloads of a function with the same number of arguments ("+c+")!"),g[a].ea[c]=b):(g[a]=b,void 0!==c&&(g[a].nb=c))}function dc(a,b){for(var c=[],d=0;d>2)+d]);return c} -function ec(a,b){var c=[];return function(){c.length=arguments.length;for(var d=0;d>1]}:function(d){return qa[d>>1]};case 2:return c?function(d){return B[d>>2]}:function(d){return F[d>>2]};default:throw new TypeError("Unknown integer type: "+a);}}var lc={}; -function mc(){return"object"===typeof globalThis?globalThis:Function("return this")()}function nc(a,b){var c=T[a];void 0===c&&U(b+" has unknown type "+hc(a));return c}var oc={};function qb(a,b,c,d){a||(a=this);this.parent=a;this.ga=a.ga;this.ra=null;this.id=ib++;this.name=b;this.mode=c;this.Z={};this.$={};this.sa=d} -Object.defineProperties(qb.prototype,{read:{get:function(){return 365===(this.mode&365)},set:function(a){a?this.mode|=365:this.mode&=-366}},write:{get:function(){return 146===(this.mode&146)},set:function(a){a?this.mode|=146:this.mode&=-147}}});Eb();jb=Array(4096);xb(L,"/");N("/tmp");N("/home");N("/home/web_user"); -(function(){N("/dev");Xa(259,{read:function(){return 0},write:function(b,c,d,e){return e}});zb("/dev/null",259);Wa(1280,Za);Wa(1536,$a);zb("/dev/tty",1280);zb("/dev/tty1",1536);var a=Ta();Hb("random",a);Hb("urandom",a);N("/dev/shm");N("/dev/shm/tmp")})(); -(function(){N("/proc");var a=N("/proc/self");N("/proc/self/fd");xb({ga:function(){var b=bb(a,"fd",16895,73);b.Z={oa:function(c,d){var e=hb[+d];if(!e)throw new K(8);c={parent:null,ga:{Ga:"fake"},Z:{pa:function(){return e.path}}};return c.parent=c}};return b}},"/proc/self/fd")})();for(var pc=Array(256),qc=0;256>qc;++qc)pc[qc]=String.fromCharCode(qc);Lb=pc;Rb=g.BindingError=Qb("BindingError");Sb=g.InternalError=Qb("InternalError"); -g.count_emval_handles=function(){for(var a=0,b=5;be?-28:Bb(d.path,d.flags,0,e).ia;case 1:case 2:return 0;case 3:return d.flags;case 4:return e=P(),d.flags|=e,0;case 12:return e=P(),A[e+0>>1]=2,0;case 13:case 14:return 0;case 16:case 8:return-28;case 9:return B[rc()>> -2]=28,-1;default:return-28}}catch(f){return"undefined"!==typeof O&&f instanceof K||y(f),-f.ka}},y:function(a,b,c){Jb=c;try{var d=Q(a);switch(b){case 21509:case 21505:return d.ba?0:-59;case 21510:case 21511:case 21512:case 21506:case 21507:case 21508:return d.ba?0:-59;case 21519:if(!d.ba)return-59;var e=P();return B[e>>2]=0;case 21520:return d.ba?-28:-59;case 21531:a=e=P();if(!d.$.Qa)throw new K(59);return d.$.Qa(d,b,a);case 21523:return d.ba?0:-59;case 21524:return d.ba?0:-59;default:y("bad ioctl syscall "+ -b)}}catch(f){return"undefined"!==typeof O&&f instanceof K||y(f),-f.ka}},A:function(a,b,c){Jb=c;try{var d=la(a),e=c?P():0;return Bb(d,b,e).ia}catch(f){return"undefined"!==typeof O&&f instanceof K||y(f),-f.ka}},C:function(a,b,c,d,e){var f=Kb(c);b=R(b);V(a,{name:b,fromWireType:function(h){return!!h},toWireType:function(h,k){return k?d:e},argPackAdvance:8,readValueFromPointer:function(h){if(1===c)var k=E;else if(2===c)k=A;else if(4===c)k=B;else throw new TypeError("Unknown boolean type size: "+b);return this.fromWireType(k[h>> -f])},ha:null})},B:function(a,b){b=R(b);V(a,{name:b,fromWireType:function(c){var d=W[c].value;Vb(c);return d},toWireType:function(c,d){return Wb(d)},argPackAdvance:8,readValueFromPointer:Xb,ha:null})},p:function(a,b,c){c=Kb(c);b=R(b);V(a,{name:b,fromWireType:function(d){return d},toWireType:function(d,e){if("number"!==typeof e&&"boolean"!==typeof e)throw new TypeError('Cannot convert "'+Yb(e)+'" to '+this.name);return e},argPackAdvance:8,readValueFromPointer:Zb(b,c),ha:null})},G:function(a,b,c,d,e, -f){var h=dc(b,c);a=R(a);e=fc(d,e);cc(a,function(){jc("Cannot call "+a+" due to unbound types",h)},b-1);Tb(h,function(k){var m=a,q=a;k=[k[0],null].concat(k.slice(1));var r=e,t=k.length;2>t&&U("argTypes array size mismatch! Must at least get return value and 'this' types!");for(var v=null!==k[1]&&!1,w=!1,n=1;n>>k}}var m=-1!=b.indexOf("unsigned");V(a,{name:b,fromWireType:f,toWireType:function(q,r){if("number"!==typeof r&&"boolean"!==typeof r)throw new TypeError('Cannot convert "'+Yb(r)+'" to '+this.name);if(re)throw new TypeError('Passing a number "'+Yb(r)+'" from JS side to C/C++ side to an argument of type "'+ -b+'", which is outside the valid range ['+d+", "+e+"]!");return m?r>>>0:r|0},argPackAdvance:8,readValueFromPointer:kc(b,h,0!==d),ha:null})},e:function(a,b,c){function d(f){f>>=2;var h=F;return new e(wa,h[f+1],h[f])}var e=[Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array][b];c=R(c);V(a,{name:c,fromWireType:d,argPackAdvance:8,readValueFromPointer:d},{Oa:!0})},q:function(a,b){b=R(b);var c="std::string"===b;V(a,{name:b,fromWireType:function(d){var e=F[d>>2]; -if(c)for(var f=d+4,h=0;h<=e;++h){var k=d+4+h;if(h==e||0==z[k]){f=la(f,k-f);if(void 0===m)var m=f;else m+=String.fromCharCode(0),m+=f;f=k+1}}else{m=Array(e);for(h=0;h>2]=h;if(c&&f)ma(e,z,k+4,h+1);else if(f)for(f=0;f>2],r=h(),t,v=m+4,w=0;w<=q;++w){var n=m+4+w*b;if(w==q||0==r[n>>k])v=d(v,n-v),void 0===t?t=v:(t+=String.fromCharCode(0),t+=v),v=n+b}Y(m);return t},toWireType:function(m,q){"string"!==typeof q&&U("Cannot pass non-string to C++ string type "+c);var r=f(q),t=eb(4+r+b);F[t>>2]=r>>k;e(q,t+4,r+b);null!==m&&m.push(Y,t);return t},argPackAdvance:8,readValueFromPointer:Xb,ha:function(m){Y(m)}})},E:function(a,b){b=R(b);V(a,{kb:!0,name:b,argPackAdvance:0,fromWireType:function(){},toWireType:function(){}})}, -k:Vb,J:function(a){if(0===a)return Wb(mc());var b=lc[a];a=void 0===b?R(a):b;return Wb(mc()[a])},F:function(a){4>> 2) + "+f+'], "parameter '+f+'");\nvar arg'+f+" = argType"+ -f+".readValueFromPointer(args);\nargs += argType"+f+"['argPackAdvance'];\n";e=(new Function("requireRegisteredType","Module","__emval_register",h+("var obj = new constructor("+e+");\nreturn __emval_register(obj);\n}\n")))(nc,g,Wb);oc[b]=e}return e(a,c,d)},r:function(a,b){a=nc(a,"_emval_take_value");a=a.readValueFromPointer(b);return Wb(a)},d:function(){y()},w:function(){return 2147483648},h:function(a,b){Z(a,b||1);throw"longjmp";},u:function(a,b,c){z.copyWithin(a,b,b+c)},v:function(a){var b=z.length; -if(2147483648=c;c*=2){var d=b*(1+.2/c);d=Math.min(d,a+100663296);d=Math.max(a,d);0>>16);za();var e=1;break a}catch(f){}e=void 0}if(e)return!0}return!1},o:function(a){try{var b=Q(a);if(null===b.ia)throw new K(8);b.va&&(b.va=null);try{b.$.close&&b.$.close(b)}catch(c){throw c;}finally{hb[b.ia]=null}b.ia=null;return 0}catch(c){return"undefined"!==typeof O&&c instanceof K||y(c),c.ka}},x:function(a, -b,c,d){try{a:{for(var e=Q(a),f=a=0;f>2],k=e,m=B[b+8*f>>2],q=h,r=void 0,t=E;if(0>q||0>r)throw new K(28);if(null===k.ia)throw new K(8);if(1===(k.flags&2097155))throw new K(8);if(16384===(k.node.mode&61440))throw new K(31);if(!k.$.read)throw new K(28);var v="undefined"!==typeof r;if(!v)r=k.position;else if(!k.seekable)throw new K(70);var w=k.$.read(k,t,m,q,r);v||(k.position+=w);var n=w;if(0>n){var C=-1;break a}a+=n;if(n>2]=C;return 0}catch(D){return"undefined"!== -typeof O&&D instanceof K||y(D),D.ka}},t:function(a,b,c,d,e){try{var f=Q(a);a=4294967296*c+(b>>>0);if(-9007199254740992>=a||9007199254740992<=a)return-61;Db(f,a,d);La=[f.position>>>0,(J=f.position,1<=+Math.abs(J)?0>>0:~~+Math.ceil((J-+(~~J>>>0))/4294967296)>>>0:0)];B[e>>2]=La[0];B[e+4>>2]=La[1];f.va&&0===a&&0===d&&(f.va=null);return 0}catch(h){return"undefined"!==typeof O&&h instanceof K||y(h),h.ka}},n:function(a,b,c,d){try{a:{for(var e=Q(a),f= -a=0;f>2],m=B[b+(8*f+4)>>2],q=void 0,r=E;if(0>m||0>q)throw new K(28);if(null===h.ia)throw new K(8);if(0===(h.flags&2097155))throw new K(8);if(16384===(h.node.mode&61440))throw new K(31);if(!h.$.write)throw new K(28);h.seekable&&h.flags&1024&&Db(h,0,2);var t="undefined"!==typeof q;if(!t)q=h.position;else if(!h.seekable)throw new K(70);var v=h.$.write(h,r,k,m,q,void 0);t||(h.position+=v);try{if(h.path&&lb.onWriteToFile)lb.onWriteToFile(h.path)}catch(C){x("FS.trackingDelegate['onWriteToFile']('"+ -h.path+"') threw an exception: "+C.message)}var w=v;if(0>w){var n=-1;break a}a+=w}n=a}B[d>>2]=n;return 0}catch(C){return"undefined"!==typeof O&&C instanceof K||y(C),C.ka}},c:function(){return ea|0},l:function(a){var b=Date.now();B[a>>2]=b/1E3|0;B[a+4>>2]=b%1E3*1E3|0;return 0},s:sc,i:tc,g:uc,K:vc,b:function(a){ea=a|0}}; -(function(){function a(e){g.asm=e.exports;ha=g.asm.L;za();G=g.asm.P;Ba.unshift(g.asm.M);H--;g.monitorRunDependencies&&g.monitorRunDependencies(H);0==H&&(null!==Fa&&(clearInterval(Fa),Fa=null),Ga&&(e=Ga,Ga=null,e()))}function b(e){a(e.instance)}function c(e){return Ka().then(function(f){return WebAssembly.instantiate(f,d)}).then(e,function(f){x("failed to asynchronously prepare wasm: "+f);y(f)})}var d={a:wc};H++;g.monitorRunDependencies&&g.monitorRunDependencies(H);if(g.instantiateWasm)try{return g.instantiateWasm(d, -a)}catch(e){return x("Module.instantiateWasm callback failed with error: "+e),!1}(function(){return fa||"function"!==typeof WebAssembly.instantiateStreaming||Ha()||"function"!==typeof fetch?c(b):fetch(I,{credentials:"same-origin"}).then(function(e){return WebAssembly.instantiateStreaming(e,d).then(b,function(f){x("wasm streaming compile failed: "+f);x("falling back to ArrayBuffer instantiation");return c(b)})})})().catch(ba);return{}})(); -g.___wasm_call_ctors=function(){return(g.___wasm_call_ctors=g.asm.M).apply(null,arguments)};var Y=g._free=function(){return(Y=g._free=g.asm.N).apply(null,arguments)},eb=g._malloc=function(){return(eb=g._malloc=g.asm.O).apply(null,arguments)},ic=g.___getTypeName=function(){return(ic=g.___getTypeName=g.asm.Q).apply(null,arguments)};g.___embind_register_native_and_builtin_types=function(){return(g.___embind_register_native_and_builtin_types=g.asm.R).apply(null,arguments)}; -var rc=g.___errno_location=function(){return(rc=g.___errno_location=g.asm.S).apply(null,arguments)},xc=g.stackSave=function(){return(xc=g.stackSave=g.asm.T).apply(null,arguments)},yc=g.stackRestore=function(){return(yc=g.stackRestore=g.asm.U).apply(null,arguments)},Z=g._setThrew=function(){return(Z=g._setThrew=g.asm.V).apply(null,arguments)};g.dynCall_jiiii=function(){return(g.dynCall_jiiii=g.asm.W).apply(null,arguments)};g.dynCall_jiji=function(){return(g.dynCall_jiji=g.asm.X).apply(null,arguments)}; -function uc(a,b){var c=xc();try{G.get(a)(b)}catch(d){yc(c);if(d!==d+0&&"longjmp"!==d)throw d;Z(1,0)}}function tc(a,b,c){var d=xc();try{return G.get(a)(b,c)}catch(e){yc(d);if(e!==e+0&&"longjmp"!==e)throw e;Z(1,0)}}function sc(a,b){var c=xc();try{return G.get(a)(b)}catch(d){yc(c);if(d!==d+0&&"longjmp"!==d)throw d;Z(1,0)}}function vc(a,b,c){var d=xc();try{G.get(a)(b,c)}catch(e){yc(d);if(e!==e+0&&"longjmp"!==e)throw e;Z(1,0)}}var zc;Ga=function Ac(){zc||Bc();zc||(Ga=Ac)}; -function Bc(){function a(){if(!zc&&(zc=!0,g.calledRun=!0,!ia)){g.noFSInit||Fb||(Fb=!0,Eb(),g.stdin=g.stdin,g.stdout=g.stdout,g.stderr=g.stderr,g.stdin?Hb("stdin",g.stdin):Ab("/dev/tty","/dev/stdin"),g.stdout?Hb("stdout",null,g.stdout):Ab("/dev/tty","/dev/stdout"),g.stderr?Hb("stderr",null,g.stderr):Ab("/dev/tty1","/dev/stderr"),Bb("/dev/stdin",0),Bb("/dev/stdout",1),Bb("/dev/stderr",1));Ma(Ba);kb=!1;Ma(Ca);aa(g);if(g.onRuntimeInitialized)g.onRuntimeInitialized();if(g.postRun)for("function"==typeof g.postRun&& -(g.postRun=[g.postRun]);g.postRun.length;){var b=g.postRun.shift();Da.unshift(b)}Ma(Da)}}if(!(0=b)&&D[c];)++c;return ha.decode(D.subarray(a,c))} +function ja(a,b,c){var d=D;if(0=g){var k=a.charCodeAt(++e);g=65536+((g&1023)<<10)|k&1023}if(127>=g){if(b>=c)break;d[b++]=g}else{if(2047>=g){if(b+1>=c)break;d[b++]=192|g>>6}else{if(65535>=g){if(b+2>=c)break;d[b++]=224|g>>12}else{if(b+3>=c)break;d[b++]=240|g>>18;d[b++]=128|g>>12&63}d[b++]=128|g>>6&63}d[b++]=128|g&63}}d[b]=0}}var ka=new TextDecoder("utf-16le"); +function la(a,b){var c=a>>1;for(b=c+b/2;!(c>=b)&&ma[c];)++c;return ka.decode(D.subarray(a,c<<1))}function na(a,b,c){void 0===c&&(c=2147483647);if(2>c)return 0;c-=2;var d=b;c=c<2*a.length?c/2:a.length;for(var e=0;e>1]=a.charCodeAt(e),b+=2;E[b>>1]=0;return b-d}function oa(a){return 2*a.length}function pa(a,b){for(var c=0,d="";!(c>=b/4);){var e=F[a+4*c>>2];if(0==e)break;++c;65536<=e?(e-=65536,d+=String.fromCharCode(55296|e>>10,56320|e&1023)):d+=String.fromCharCode(e)}return d} +function qa(a,b,c){void 0===c&&(c=2147483647);if(4>c)return 0;var d=b;c=d+c-4;for(var e=0;e=g){var k=a.charCodeAt(++e);g=65536+((g&1023)<<10)|k&1023}F[b>>2]=g;b+=4;if(b+4>c)break}F[b>>2]=0;return b-d}function ra(a){for(var b=0,c=0;c=d&&++c;b+=4}return b}var G,I,D,E,ma,F,J,sa,ta; +function ua(a){G=a;f.HEAP8=I=new Int8Array(a);f.HEAP16=E=new Int16Array(a);f.HEAP32=F=new Int32Array(a);f.HEAPU8=D=new Uint8Array(a);f.HEAPU16=ma=new Uint16Array(a);f.HEAPU32=J=new Uint32Array(a);f.HEAPF32=sa=new Float32Array(a);f.HEAPF64=ta=new Float64Array(a)}var va=f.INITIAL_MEMORY||16777216;f.wasmMemory?B=f.wasmMemory:B=new WebAssembly.Memory({initial:va/65536,maximum:32768});B&&(G=B.buffer);va=G.byteLength;ua(G);var K,wa=[],xa=[],ya=[],za=[]; +function Aa(){var a=f.preRun.shift();wa.unshift(a)}var L=0,Ba=null,M=null;f.preloadedImages={};f.preloadedAudios={};function x(a){if(f.onAbort)f.onAbort(a);v(a);fa=!0;a=new WebAssembly.RuntimeError("abort("+a+"). Build with -s ASSERTIONS=1 for more info.");ba(a);throw a;}function Ca(){var a=N;return String.prototype.startsWith?a.startsWith("data:application/octet-stream;base64,"):0===a.indexOf("data:application/octet-stream;base64,")}var N="basis_enc.wasm"; +if(!Ca()){var Da=N;N=f.locateFile?f.locateFile(Da,u):u+Da}function Ea(){try{if(w)return new Uint8Array(w);if(ca)return ca(N);throw"both async and sync fetching of the wasm failed";}catch(a){x(a)}}function Fa(){return w||"function"!==typeof fetch?Promise.resolve().then(Ea):fetch(N,{credentials:"same-origin"}).then(function(a){if(!a.ok)throw"failed to load wasm binary file at '"+N+"'";return a.arrayBuffer()}).catch(function(){return Ea()})} +function Ga(a){for(;0>2]=b};this.pa=function(b){F[this.da+0>>2]=b};this.qa=function(){F[this.da+4>>2]=0};this.oa=function(){I[this.da+12>>0]=0};this.ra=function(){I[this.da+13>>0]=0};this.la=function(b,c){this.sa(b);this.pa(c);this.qa();this.oa();this.ra()}} +function Ia(){return 0>2])}var O={},P={},Oa={};function Pa(a){if(void 0===a)return"_unknown";a=a.replace(/[^a-zA-Z0-9_]/g,"$");var b=a.charCodeAt(0);return 48<=b&&57>=b?"_"+a:a}function Qa(a,b){a=Pa(a);return(new Function("body","return function "+a+'() {\n "use strict"; return body.apply(this, arguments);\n};\n'))(b)} +function Ra(a){var b=Error,c=Qa(a,function(d){this.name=a;this.message=d;d=Error(d).stack;void 0!==d&&(this.stack=this.toString()+"\n"+d.replace(/^Error(:[^\n]*)?\n/,""))});c.prototype=Object.create(b.prototype);c.prototype.constructor=c;c.prototype.toString=function(){return void 0===this.message?this.name:this.name+": "+this.message};return c}var Sa=void 0; +function Ta(a,b,c){function d(h){h=c(h);if(h.length!==a.length)throw new Sa("Mismatched type converter count");for(var l=0;l>2])};case 3:return function(c){return this.fromWireType(ta[c>>3])};default:throw new TypeError("Unknown float type: "+a);}}function ab(a){var b=Function;if(!(b instanceof Function))throw new TypeError("new_ called with constructor type "+typeof b+" which is not a function");var c=Qa(b.name||"unknownFunctionName",function(){});c.prototype=b.prototype;c=new c;a=b.apply(c,a);return a instanceof Object?a:c} +function bb(a,b){var c=f;if(void 0===c[a].ba){var d=c[a];c[a]=function(){c[a].ba.hasOwnProperty(arguments.length)||S("Function '"+b+"' called with an invalid number of arguments ("+arguments.length+") - expects one of ("+c[a].ba+")!");return c[a].ba[arguments.length].apply(this,arguments)};c[a].ba=[];c[a].ba[d.ha]=d}} +function cb(a,b,c){f.hasOwnProperty(a)?((void 0===c||void 0!==f[a].ba&&void 0!==f[a].ba[c])&&S("Cannot register public name '"+a+"' twice"),bb(a,a),f.hasOwnProperty(c)&&S("Cannot register multiple overloads of a function with the same number of arguments ("+c+")!"),f[a].ba[c]=b):(f[a]=b,void 0!==c&&(f[a].Aa=c))}function db(a,b){for(var c=[],d=0;d>2)+d]);return c} +function eb(a,b){0<=a.indexOf("j")||x("Assertion failed: getDynCaller should only be called with i64 sigs");var c=[];return function(){c.length=arguments.length;for(var d=0;d>1]}:function(d){return ma[d>>1]};case 2:return c?function(d){return F[d>>2]}:function(d){return J[d>>2]};default:throw new TypeError("Unknown integer type: "+a);}}var lb={};function mb(){return"object"===typeof globalThis?globalThis:Function("return this")()}function nb(a,b){var c=P[a];void 0===c&&S(b+" has unknown type "+hb(a));return c}var ob={}; +Sa=f.InternalError=Ra("InternalError");for(var pb=Array(256),qb=0;256>qb;++qb)pb[qb]=String.fromCharCode(qb);Va=pb;Wa=f.BindingError=Ra("BindingError");f.count_emval_handles=function(){for(var a=0,b=5;b>g])},ca:null})},K:function(a,b){b=R(b);Q(a,{name:b,fromWireType:function(c){var d=T[c].value;Ya(c);return d},toWireType:function(c,d){return U(d)},argPackAdvance:8,readValueFromPointer:Na, +ca:null})},v:function(a,b,c){c=Ua(c);b=R(b);Q(a,{name:b,fromWireType:function(d){return d},toWireType:function(d,e){if("number"!==typeof e&&"boolean"!==typeof e)throw new TypeError('Cannot convert "'+Za(e)+'" to '+this.name);return e},argPackAdvance:8,readValueFromPointer:$a(b,c),ca:null})},O:function(a,b,c,d,e,g){var k=db(b,c);a=R(a);e=fb(d,e);cb(a,function(){jb("Cannot call "+a+" due to unbound types",k)},b-1);Ta([],k,function(h){var l=a,m=a;h=[h[0],null].concat(h.slice(1));var n=e,q=h.length;2> +q&&S("argTypes array size mismatch! Must at least get return value and 'this' types!");for(var y=null!==h[1]&&!1,z=!1,p=1;p>>h}}var l=-1!=b.indexOf("unsigned");Q(a,{name:b,fromWireType:g,toWireType:function(m,n){if("number"!==typeof n&&"boolean"!==typeof n)throw new TypeError('Cannot convert "'+Za(n)+'" to '+this.name);if(ne)throw new TypeError('Passing a number "'+Za(n)+'" from JS side to C/C++ side to an argument of type "'+b+'", which is outside the valid range ['+d+", "+e+"]!");return l?n>>>0:n|0},argPackAdvance:8,readValueFromPointer:kb(b,k,0!==d),ca:null})},j:function(a,b, +c){function d(g){g>>=2;var k=J;return new e(G,k[g+1],k[g])}var e=[Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array][b];c=R(c);Q(a,{name:c,fromWireType:d,argPackAdvance:8,readValueFromPointer:d},{ka:!0})},w:function(a,b){b=R(b);var c="std::string"===b;Q(a,{name:b,fromWireType:function(d){var e=J[d>>2];if(c)for(var g=d+4,k=0;k<=e;++k){var h=d+4+k;if(k==e||0==D[h]){g=C(g,h-g);if(void 0===l)var l=g;else l+=String.fromCharCode(0),l+=g;g=h+1}}else{l=Array(e); +for(k=0;k=q&&(q=65536+((q&1023)<<10)|e.charCodeAt(++n)&1023);127>=q?++m:m=2047>=q?m+2:65535>=q?m+3:m+4}return m}: +function(){return e.length})(),h=sb(4+k+1);J[h>>2]=k;if(c&&g)ja(e,h+4,k+1);else if(g)for(g=0;g>2],n=k(),q,y=l+4,z=0;z<=m;++z){var p=l+4+z*b;if(z==m||0==n[p>>h])y=d(y,p-y),void 0===q?q=y:(q+=String.fromCharCode(0),q+=y),y=p+b}V(l);return q},toWireType:function(l,m){"string"!==typeof m&&S("Cannot pass non-string to C++ string type "+c);var n=g(m),q=sb(4+n+b);J[q>>2]=n>>h;e(m,q+4,n+b);null!==l&&l.push(V,q);return q},argPackAdvance:8,readValueFromPointer:Na,ca:function(l){V(l)}})},Q:function(a,b,c,d,e,g){La[a]={name:R(b),ma:fb(c,d),na:fb(e,g),ia:[]}},M:function(a, +b){b=R(b);Q(a,{za:!0,name:b,argPackAdvance:0,fromWireType:function(){},toWireType:function(){}})},n:Ya,z:function(a){if(0===a)return U(mb());var b=lb[a];a=void 0===b?R(a):b;return U(mb()[a])},N:function(a){4>> 2) + "+ +g+'], "parameter '+g+'");\nvar arg'+g+" = argType"+g+".readValueFromPointer(args);\nargs += argType"+g+"['argPackAdvance'];\n";e=(new Function("requireRegisteredType","Module","__emval_register",k+("var obj = new constructor("+e+");\nreturn __emval_register(obj);\n}\n")))(nb,f,U);ob[b]=e}return e(a,c,d)},y:function(a,b){a=nb(a,"_emval_take_value");a=a.readValueFromPointer(b);return U(a)},f:function(){x()},h:function(a,b){W(a,b||1);throw"longjmp";},D:function(a,b,c){D.copyWithin(a,b,b+c)},l:function(a){a>>>= +0;var b=D.length;if(2147483648=c;c*=2){var d=b*(1+.2/c);d=Math.min(d,a+100663296);d=Math.max(16777216,a,d);0>>16);ua(B.buffer);var e=1;break a}catch(g){}e=void 0}if(e)return!0}return!1},u:function(){return 0},G:function(a,b,c,d){a=Ka.va(a);b=Ka.ta(a,b,c);F[d>>2]=b;return 0},B:function(){},t:function(a,b,c,d){for(var e=0,g=0;g>2],h=F[b+(8*g+4)>>2],l=0;l>2]=e;return 0},d:function(){return ea|0},i:function(a){var b=Date.now();F[a>>2]=b/1E3|0;F[a+4>>2]=b%1E3*1E3|0;return 0},m:tb,g:ub,r:vb,q:wb,o:xb,e:yb,C:zb,a:B,c:function(a){ea=a|0},F:function(a){switch(a){case 30:return 16384;case 85:return 131072;case 132:case 133:case 12:case 137:case 138:case 15:case 235:case 16:case 17:case 18:case 19:case 20:case 149:case 13:case 10:case 236:case 153:case 9:case 21:case 22:case 159:case 154:case 14:case 77:case 78:case 139:case 80:case 81:case 82:case 68:case 67:case 164:case 11:case 29:case 47:case 48:case 95:case 52:case 51:case 46:case 79:return 200809; +case 27:case 246:case 127:case 128:case 23:case 24:case 160:case 161:case 181:case 182:case 242:case 183:case 184:case 243:case 244:case 245:case 165:case 178:case 179:case 49:case 50:case 168:case 169:case 175:case 170:case 171:case 172:case 97:case 76:case 32:case 173:case 35:return-1;case 176:case 177:case 7:case 155:case 8:case 157:case 125:case 126:case 92:case 93:case 129:case 130:case 131:case 94:case 91:return 1;case 74:case 60:case 69:case 70:case 4:return 1024;case 31:case 42:case 72:return 32; +case 87:case 26:case 33:return 2147483647;case 34:case 1:return 47839;case 38:case 36:return 99;case 43:case 37:return 2048;case 0:return 2097152;case 3:return 65536;case 28:return 32768;case 44:return 32767;case 75:return 16384;case 39:return 1E3;case 89:return 700;case 71:return 256;case 40:return 255;case 2:return 100;case 180:return 64;case 25:return 20;case 5:return 16;case 6:return 6;case 73:return 4;case 84:return"object"===typeof navigator?navigator.hardwareConcurrency||1:1}F[Ab()>>2]=28; +return-1}}; +(function(){function a(e){f.asm=e.exports;K=f.asm.R;L--;f.monitorRunDependencies&&f.monitorRunDependencies(L);0==L&&(null!==Ba&&(clearInterval(Ba),Ba=null),M&&(e=M,M=null,e()))}function b(e){a(e.instance)}function c(e){return Fa().then(function(g){return WebAssembly.instantiate(g,d)}).then(e,function(g){v("failed to asynchronously prepare wasm: "+g);x(g)})}var d={a:Bb};L++;f.monitorRunDependencies&&f.monitorRunDependencies(L);if(f.instantiateWasm)try{return f.instantiateWasm(d,a)}catch(e){return v("Module.instantiateWasm callback failed with error: "+e), +!1}(function(){return w||"function"!==typeof WebAssembly.instantiateStreaming||Ca()||"function"!==typeof fetch?c(b):fetch(N,{credentials:"same-origin"}).then(function(e){return WebAssembly.instantiateStreaming(e,d).then(b,function(g){v("wasm streaming compile failed: "+g);v("falling back to ArrayBuffer instantiation");return c(b)})})})().catch(ba);return{}})(); +var rb=f.___wasm_call_ctors=function(){return(rb=f.___wasm_call_ctors=f.asm.S).apply(null,arguments)},V=f._free=function(){return(V=f._free=f.asm.T).apply(null,arguments)},sb=f._malloc=function(){return(sb=f._malloc=f.asm.U).apply(null,arguments)},ib=f.___getTypeName=function(){return(ib=f.___getTypeName=f.asm.V).apply(null,arguments)};f.___embind_register_native_and_builtin_types=function(){return(f.___embind_register_native_and_builtin_types=f.asm.W).apply(null,arguments)}; +var Ab=f.___errno_location=function(){return(Ab=f.___errno_location=f.asm.X).apply(null,arguments)},X=f.stackSave=function(){return(X=f.stackSave=f.asm.Y).apply(null,arguments)},Z=f.stackRestore=function(){return(Z=f.stackRestore=f.asm.Z).apply(null,arguments)},W=f._setThrew=function(){return(W=f._setThrew=f.asm._).apply(null,arguments)};f.dynCall_jiiii=function(){return(f.dynCall_jiiii=f.asm.$).apply(null,arguments)};f.dynCall_jiji=function(){return(f.dynCall_jiji=f.asm.aa).apply(null,arguments)}; +function yb(a,b,c){var d=X();try{K.get(a)(b,c)}catch(e){Z(d);if(e!==e+0&&"longjmp"!==e)throw e;W(1,0)}}function xb(a,b){var c=X();try{K.get(a)(b)}catch(d){Z(c);if(d!==d+0&&"longjmp"!==d)throw d;W(1,0)}}function vb(a,b,c,d){var e=X();try{return K.get(a)(b,c,d)}catch(g){Z(e);if(g!==g+0&&"longjmp"!==g)throw g;W(1,0)}}function ub(a,b,c){var d=X();try{return K.get(a)(b,c)}catch(e){Z(d);if(e!==e+0&&"longjmp"!==e)throw e;W(1,0)}} +function tb(a,b){var c=X();try{return K.get(a)(b)}catch(d){Z(c);if(d!==d+0&&"longjmp"!==d)throw d;W(1,0)}}function wb(a,b,c,d,e,g){var k=X();try{return K.get(a)(b,c,d,e,g)}catch(h){Z(k);if(h!==h+0&&"longjmp"!==h)throw h;W(1,0)}}function zb(a,b,c,d,e){var g=X();try{K.get(a)(b,c,d,e)}catch(k){Z(g);if(k!==k+0&&"longjmp"!==k)throw k;W(1,0)}}var Cb;M=function Db(){Cb||Eb();Cb||(M=Db)}; +function Eb(){function a(){if(!Cb&&(Cb=!0,f.calledRun=!0,!fa)){Ga(xa);Ga(ya);aa(f);if(f.onRuntimeInitialized)f.onRuntimeInitialized();if(f.postRun)for("function"==typeof f.postRun&&(f.postRun=[f.postRun]);f.postRun.length;){var b=f.postRun.shift();za.unshift(b)}Ga(za)}}if(!(0 workerBridge.basisEncode(signal, imageData, options); + +interface Props { + options: EncodeOptions; + onChange(newOptions: EncodeOptions): void; +} + +interface State { + options: EncodeOptions; + showAdvanced: boolean; +} + +export class Options extends Component { + static getDerivedStateFromProps( + props: Props, + state: State, + ): Partial | null { + if (state.options && shallowEqual(state.options, props.options)) { + return null; + } + + const { options } = props; + + return { + options, + }; + } + + // The rest of the defaults are set in getDerivedStateFromProps + state: State = { + showAdvanced: false, + } as State; + + private _inputChangeCallbacks = new Map void>(); + + private _inputChange = ( + prop: keyof State, + type: 'number' | 'boolean' | 'string', + ) => { + // Cache the callback for performance + if (!this._inputChangeCallbacks.has(prop)) { + this._inputChangeCallbacks.set(prop, (event: Event) => { + const formEl = event.target as HTMLInputElement | HTMLSelectElement; + const newVal = + type === 'boolean' + ? 'checked' in formEl + ? formEl.checked + : !!formEl.value + : type === 'number' + ? Number(formEl.value) + : formEl.value; + + const newState: Partial = { + [prop]: newVal, + }; + + const optionState = { + ...this.state, + ...newState, + }; + + const newOptions: EncodeOptions = {}; + + // Updating options, so we don't recalculate in getDerivedStateFromProps. + newState.options = newOptions; + + this.setState( + // It isn't clear to me why I have to cast this :) + newState as State, + ); + + this.props.onChange(newOptions); + }); + } + + return this._inputChangeCallbacks.get(prop)!; + }; + + render(_: Props, {}: State) { + return ( +
+
+ + Quality: + +
+
+ ); + } +} diff --git a/src/features/encoders/basis/shared/meta.ts b/src/features/encoders/basis/shared/meta.ts new file mode 100644 index 00000000..7f640f15 --- /dev/null +++ b/src/features/encoders/basis/shared/meta.ts @@ -0,0 +1,20 @@ +/** + * Copyright 2020 Google Inc. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * http://www.apache.org/licenses/LICENSE-2.0 + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import { EncodeOptions } from 'codecs/basis/enc/basis_enc'; + +export { EncodeOptions }; + +export const label = 'Basis'; +export const mimeType = 'image/basisu'; +export const extension = 'basis'; +export const defaultOptions: EncodeOptions = {}; diff --git a/src/features/encoders/basis/shared/missing-types.d.ts b/src/features/encoders/basis/shared/missing-types.d.ts new file mode 100644 index 00000000..c729fd74 --- /dev/null +++ b/src/features/encoders/basis/shared/missing-types.d.ts @@ -0,0 +1,13 @@ +/** + * Copyright 2020 Google Inc. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * http://www.apache.org/licenses/LICENSE-2.0 + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +/// diff --git a/src/features/encoders/basis/worker/basisEncode.ts b/src/features/encoders/basis/worker/basisEncode.ts new file mode 100644 index 00000000..e872a670 --- /dev/null +++ b/src/features/encoders/basis/worker/basisEncode.ts @@ -0,0 +1,37 @@ +/** + * Copyright 2020 Google Inc. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * http://www.apache.org/licenses/LICENSE-2.0 + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import type { BasisModule } from 'codecs/basis/enc/basis_enc'; +import type { EncodeOptions } from '../shared/meta'; +import wasmUrl from 'url:codecs/basis/enc/basis_enc.wasm'; +import { initEmscriptenModule } from 'features/worker-utils'; + +let emscriptenModule: Promise; + +async function init() { + const basisEncoder = await import('codecs/basis/enc/basis_enc.js'); + return initEmscriptenModule(basisEncoder.default, wasmUrl); +} + +export default async function encode( + data: ImageData, + options: EncodeOptions, +): Promise { + if (!emscriptenModule) emscriptenModule = init(); + + const module = await emscriptenModule; + const result = module.encode(data.data, data.width, data.height, options); + + if (!result) throw new Error('Encoding error'); + + return result.buffer; +} diff --git a/src/features/encoders/basis/worker/missing-types.d.ts b/src/features/encoders/basis/worker/missing-types.d.ts new file mode 100644 index 00000000..c729fd74 --- /dev/null +++ b/src/features/encoders/basis/worker/missing-types.d.ts @@ -0,0 +1,13 @@ +/** + * Copyright 2020 Google Inc. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * http://www.apache.org/licenses/LICENSE-2.0 + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +///