From 7e1a1413f0039478c875e591be5624068c073974 Mon Sep 17 00:00:00 2001 From: George Stagg Date: Wed, 24 Jul 2024 09:34:02 +0100 Subject: [PATCH] Temporary simple pager for help output --- _extensions/drop/drop-runtime.js | 3 +++ drop-runtime/src/App.tsx | 3 +++ 2 files changed, 6 insertions(+) diff --git a/_extensions/drop/drop-runtime.js b/_extensions/drop/drop-runtime.js index 0430573..5230c93 100644 --- a/_extensions/drop/drop-runtime.js +++ b/_extensions/drop/drop-runtime.js @@ -96,6 +96,9 @@ WARNING: This link could potentially be dangerous`)){let f=window.open();if(f){t height = getOption("webr.fig.height", 504) ) webr::shim_install() + options(pager = function(files, ...) { + writeLines(gsub(".[\b]", "", readLines(files))) + }) `),await Promise.all(t.map(a=>r.installPackages(a)));let s=crossOriginIsolated;for(await r.evalRVoid("options(webr.show_menu = show_menu)",{env:{show_menu:!!s}}),await r.evalRVoid("webr::global_prompt_install()",{withHandlers:!1}),Ut.write("\x1B[2K\r");;){let a=await r.read();switch(a.type){case"stdout":Ut.println(a.data);break;case"stderr":Ut.println(`\x1B[1;31m${a.data}\x1B[m`);break;case"prompt":Ut.read(a.data).then(o=>{r.writeConsole(o)},o=>{throw console.error(o),new Error("An error occurred reading from the R console terminal.")});break;case"canvas":RV(a);break;case"closed":throw new Error("The webR communication channel has been closed");default:console.error(`Unimplemented output type: ${a.type}`),console.error(a.data)}}})()}function Iw(e,t=[]){let r=Cl({indexURL:"https://cdn.jsdelivr.net/pyodide/v0.26.1/full/",stdout:a=>console.log(a),stderr:a=>console.error(a)}),i=Pw(r,Ut);function n(){return k1.default.createElement("div",{className:"app"},k1.default.createElement(v0,{direction:"horizontal"},k1.default.createElement(te,{defaultSize:50,minSize:10},k1.default.createElement(v0,{direction:"vertical"},k1.default.createElement(Pc,{pyConsolePromise:i,terminalInterface:Ut}),k1.default.createElement(m0,null),k1.default.createElement(Ia,{terminalInterface:Ut}))),k1.default.createElement(m0,null),k1.default.createElement(Rc,{plotInterface:Kn})))}yl.default.createRoot(e).render(k1.default.createElement(k1.StrictMode,null,k1.default.createElement(n,null))),(async()=>{let a=await i,o=a.pyodide;await o.loadPackage("micropip");let c=o.pyimport("micropip");for(await Promise.all(t.map(l=>()=>c.install(l))),await c.install("matplotlib"),await c.destroy(),document.pyodideMplTarget=document.getElementById("drop-plot"),await o.runPythonAsync(` import matplotlib matplotlib.use("module://matplotlib_pyodide.wasm_backend") diff --git a/drop-runtime/src/App.tsx b/drop-runtime/src/App.tsx index 6dc19bd..43e20a4 100644 --- a/drop-runtime/src/App.tsx +++ b/drop-runtime/src/App.tsx @@ -74,6 +74,9 @@ export function startWebRApp(elem: HTMLDivElement, packages: string[] = []) { height = getOption("webr.fig.height", 504) ) webr::shim_install() + options(pager = function(files, ...) { + writeLines(gsub(".[\b]", "", readLines(files))) + }) `); // Install packages