coatless / quarto-webr

Community developed Quarto Extension to Embed webR for HTML Documents, RevealJS, Websites, Blogs, and Books.
https://quarto-webr.thecoatlessprofessor.com/
395 stars 19 forks source link

Optimize and restructure the backend #118

Closed coatless closed 11 months ago

coatless commented 11 months ago

In this PR, we work towards achieving the second goal of #93

Specifically, we sunset the webr-init.html file in favor of two separate template files:

  1. qwebr-styling.css: The extension style data (minus the external dependencies on monaco and fontawesome)
  2. qwebr-init.js: The initialization routine for splicing in the webR status indicator and bringing webR online.

We are also no longer replicating out the function definition of executeCode() each time we have an interactive or output cell on the page. Instead, we now have multiple subfunctions defined once inside of the qwebr-compute-engine.js.

Similar improvements have been made regarding initializing the monaco editor. The initialization routine for each Monaco Editor is now contained within qwebr-monaco-editor-element.js.

HTML elements for the interactive and non-interactive areas have been shifted fully over to JS code. This allows us to move the cell selection out of the Lua filter and into JS.


TODO

  1. Establish a promise with respect to the webR initialization that the compute engine can be wrapped around.
  2. Work on providing a call order.