-
-
Notifications
You must be signed in to change notification settings - Fork 4.5k
Description
I have been working on am improved %%javascript cell magic and I wanted to run the idea by others to gauge interest. The existing %%javascript magic uses eval on a string of JavaScript code. While this works, it is relatively difficult to load external JavaScript packages and it is awkward to work with the DOM. I have developed a prototype with the following features:
- Uses the sucrase library to allow a use to write modern JS, JSX or even TypeScript.
- Run the code by appending a script tag to the page with
type=module. This allows users to directly import modules from CDNs that support modules, such as Skypack. - Includes a JS implementation of a
displayfunction that takes a React element, native DOM element or list of thereof and renders it into the output of that cell.
The result of all this is that a user can write code that looks like the following:
%%typescript
display(<h1>Hello World</h1>);And it will "just work". I would propose that this improved magic replaces the existing javascript magic. We might also want to have multiple variants that handle plain javascript, typescript, etc. At this point, I mostly want to get feedback on this directly to see if there is interest in this being in IPython. Here are a couple of example of this in action:
