1 line
5.8 KiB
JavaScript
1 line
5.8 KiB
JavaScript
(()=>{"use strict";var e,t,n,a,r={5303:(e,t,n)=>{var a=n(4590),r=n(7738);class s extends r.f{constructor(e){super(e),self.window=self,this._initInnerCode='open Js_of_ocaml\nmodule Basthon = struct\n let download (path: string): unit = ignore((Js.Unsafe.eval_string "self.basthon.__kernel__")##download path)\n let sleep (duration: float): unit = ignore((Js.Unsafe.eval_string "self.basthon")##sleep duration)\n let create_canvas () = (Js.Unsafe.eval_string "self.basthon.__kernel__")##createcanvas()\n let display_canvas canvas: unit = ignore((Js.Unsafe.eval_string "self.basthon")##displayCanvas canvas)\n let save_canvas canvas (path: string): unit = ignore((Js.Unsafe.eval_string "self.basthon.__kernel__")##savecanvas canvas path)\n let download_canvas ?(format = "png") canvas: unit = ignore((Js.Unsafe.eval_string "self.basthon")##downloadCanvas canvas (Js.string format))\n let display_image (path: string): unit = ignore((Js.Unsafe.eval_string "self.basthon.__kernel__")##displayimage path)\n let version () : string = (Js.Unsafe.eval_string "self.basthon.__kernel__")##version()\n let help () : unit = print_endline {ext|Basthon module\n help: Show this help.\n download path: Download a file from the local filesystem.\n sleep duration: Sleep for a certain amount of seconds.\n display_image path: Display a PNG image from the local filesystem.\n create_canvas: Create a HTML5 canvas to be displayed with display_canvas.\n display_canvas canvas: Display a HTML5 canvas created with create_canvas.\n save_canvas canvas path: Save a canvas to a PNG/JPG file to the local filesystem.\n download_canvas ?(format = "png") canvas: Download a canvas to a PNG/JPG file.\n|ext}\nend'}async _init(e){console.info=(...e)=>console.log(...e),console.warn=(...e)=>console.error(...e),globalThis.addEventListener("error",(e=>console.error(e.toString())));const{__kernel__:t}=await Promise.all([n.e(950),n.e(974)]).then(n.t.bind(n,950,23));if(this.__kernel__=t,0!==this.__kernel__?.init())throw new Error("Can't start OCaml kernel!");self.jsoo_runtime.caml_gr_draw_image=(e,t,n)=>{const a=self.jsoo_runtime.caml_gr_state_get();return a.context.putImageData(e,t,a.height-e.height-n),0},this.__kernel__?.exec(this._initInnerCode)}async _eval(e,t){if(null==this.__kernel__)return;this.__eval_data__=e,this.__kernel__.io.stdout=(...t)=>{this.sendStdoutStream(e,t.join(" "))},this.__kernel__.io.stderr=(...t)=>{this.sendStderrStream(e,t.join(" "))};const n=this.__kernel__?.exec(t);return"string"==typeof n&&n.length>0?{"text/plain":n.replace(/\n$/,"")}:void 0}async more(e){return!1}putFile(e,t){null!=this.__kernel__&&this.__kernel__.createfile(e,t)}putModule(e,t){this.putFile(e,t),this.__kernel__?.loadmodule(e)}ocamlDownload(e,t){const n=self.jsoo_runtime.caml_convert_bytes_to_array(e);this.download(n,t)}displayCanvas(e){this.display(e)}async saveCanvas(e,t){if(null==this.__kernel__)return;const n=t.split(".").pop()?.toLowerCase();let a="image/png";"jpg"!==n&&"jpeg"!==n||(a="image/jpeg");const r=await e.convertToBlob({type:a}),s=await r.arrayBuffer();this.__kernel__.createfile(t,s)}downloadCanvas(e,t){null==t&&(t="png");const n={jpg:"image/jpeg",jpeg:"images/jpeg",png:"image/png"};(t=t.toString().toLowerCase())in n||(t="png");const a=n[t];(async()=>{const n=await e.convertToBlob({type:a});let r=await this.blobToDataURL(n);this.download(r,`canvas.${t}`)})()}displayImage(e){const t=this.clone(this.__eval_data__),n=self.jsoo_runtime.caml_convert_bytes_to_array(e),a=new Blob([n],{type:"image/png"});this.displayBlob(a,t)}}(0,a.p)(s)}},s={};function o(e){var t=s[e];if(void 0!==t)return t.exports;var n=s[e]={exports:{}};return r[e](n,n.exports,o),n.exports}o.m=r,o.x=()=>{var e=o.O(void 0,[738],(()=>o(5303)));return e=o.O(e)},e=[],o.O=(t,n,a,r)=>{if(!n){var s=1/0;for(c=0;c<e.length;c++){for(var[n,a,r]=e[c],i=!0,l=0;l<n.length;l++)(!1&r||s>=r)&&Object.keys(o.O).every((e=>o.O[e](n[l])))?n.splice(l--,1):(i=!1,r<s&&(s=r));if(i){e.splice(c--,1);var _=a();void 0!==_&&(t=_)}}return t}r=r||0;for(var c=e.length;c>0&&e[c-1][2]>r;c--)e[c]=e[c-1];e[c]=[n,a,r]},n=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__,o.t=function(e,a){if(1&a&&(e=this(e)),8&a)return e;if("object"==typeof e&&e){if(4&a&&e.__esModule)return e;if(16&a&&"function"==typeof e.then)return e}var r=Object.create(null);o.r(r);var s={};t=t||[null,n({}),n([]),n(n)];for(var i=2&a&&e;"object"==typeof i&&!~t.indexOf(i);i=n(i))Object.getOwnPropertyNames(i).forEach((t=>s[t]=()=>e[t]));return s.default=()=>e,o.d(r,s),r},o.d=(e,t)=>{for(var n in t)o.o(t,n)&&!o.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})},o.f={},o.e=e=>Promise.all(Object.keys(o.f).reduce(((t,n)=>(o.f[n](e,t),t)),[])),o.u=e=>e+".bundle.js",o.miniCssF=e=>{},o.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),o.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),o.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},(()=>{var e;o.g.importScripts&&(e=o.g.location+"");var t=o.g.document;if(!e&&t&&(t.currentScript&&"SCRIPT"===t.currentScript.tagName.toUpperCase()&&(e=t.currentScript.src),!e)){var n=t.getElementsByTagName("script");if(n.length)for(var a=n.length-1;a>-1&&(!e||!/^http(s?):/.test(e));)e=n[a--].src}if(!e)throw new Error("Automatic publicPath is not supported in this browser");e=e.replace(/#.*$/,"").replace(/\?.*$/,"").replace(/\/[^\/]+$/,"/"),o.p=e})(),(()=>{o.b=self.location+"";var e={303:1};o.f.i=(t,n)=>{e[t]||importScripts(o.p+o.u(t))};var t=self.webpackChunk_mixly_python_pyodide=self.webpackChunk_mixly_python_pyodide||[],n=t.push.bind(t);t.push=t=>{var[a,r,s]=t;for(var i in r)o.o(r,i)&&(o.m[i]=r[i]);for(s&&s(o);a.length;)e[a.pop()]=1;n(t)}})(),a=o.x,o.x=()=>o.e(738).then(a);o.x()})(); |