Refactor the code to provide a very clean split between the js components, the proxy widget hooks, and the python wrapper. Also separate out the neural network components that are not directly related to nbev3devsim into a separate package or plugin/extension package.
Ideally, at the end, we should have:
[ ] a standalone Javascript package that can run the simulator purely as a Javascript app; hooking a simple text editor back in as per the original ev3devsim simulator [backup] would be sensible as an optionally enabled element;
[ ] a clean install of the Javascript package within the proxied widget;
[ ] a clean Python API wrapper that communicates with the proxy widget;
[ ] separated neural network packages;
[ ] cleanly separated IPython magics.
Once this is done, we can look at creating a native ipywidget and remove the jp-proxy_widget wrapper. A handy crib for this might be something like the jupyter-widgets/ipyleaflet package which wraps the leaflet Javascript interactive map package.
All the way along, we should try to ensure that a simple generic Python wheel can be constructed that will work in JupyterLite (one of the aims of tidying things up is to create a JupyterLab extension that can run nbev3devsim in JupyterLite.
At some point, I guess we could also try to figure out how to swap out skulpt for pyodide?!
Refactor the code to provide a very clean split between the js components, the proxy widget hooks, and the python wrapper. Also separate out the neural network components that are not directly related to
nbev3devsim
into a separate package or plugin/extension package.Ideally, at the end, we should have:
Once this is done, we can look at creating a native ipywidget and remove the
jp-proxy_widget
wrapper. A handy crib for this might be something like thejupyter-widgets/ipyleaflet
package which wraps theleaflet
Javascript interactive map package.All the way along, we should try to ensure that a simple generic Python wheel can be constructed that will work in JupyterLite (one of the aims of tidying things up is to create a JupyterLab extension that can run
nbev3devsim
in JupyterLite.At some point, I guess we could also try to figure out how to swap out skulpt for pyodide?!