I want to create an interactive JupyterLab Notebook application, and I need to create a series of custom Widgets. So I started looking into this matter, and the more I look the more confused I become. To make things simple I will ask a bunch of simple questions:
- One of the most common ways to use widgets on Jupyter Notebooks is to use the ipywidgets library. Right?
- Unlike the classic Notebook, the Notebook of JupyterLab cannot render JavaScript directly. As a result, the tutorials about custom widget creation in the ipywidgets docs are impossible to run on JupyterLab. Right?
- If one wants to run JavaScript on the Notebook of JupyterLab she or he will have to do it through an extension. In case of ipywidgets, one will have to install @jupyter-widgets/jupyterlab-manager. Right?
- If you want to write a custom widget using the ipywidgets library, there are two GitHub projects that you could use as a starting point: widget-cookiecutter and widget-ts-cookiecutter. To my understanding, the former is based on JavaScript while the latter on TypeScript. Also, the first appears to be inactive for quite some type, while the second is more active. Is the JupyterWidgets team planning to focus on TypeScript? Which one should I follow?
- The cookiecutter projects do not really have a documentation. I am really confused and struggling to understand their code. Sure, I can copy-paste them and start messing around until I figure out how the whole thing works and what are the "hooks" or "entry points" in the code, but I would really appreciate if someone could give me some additional pointers.
- Is the JupyterWidgets an "official" project of the Jupyter project? Given the very small number of members in the project I wonder how safe is to base my work on ipywidgets. Keep in mind that the "DeclarativeWidgets" project has abandoned long time ago.
- Are there other libraries that implement more widgets than the ones found in ipywidgets and also run on JupyterLab?
- I want to create a Web application for server-side data processing. My initial goal was to create an app/service that does not expect from the user to do any coding, and performs everything through the use of html/JavaScript widgets. That could be implemented using an Angular/React front-end and a Python/Django/Flask back-end. However, later on, I realised that there are cases where the user may want to do some additional custom/arbitrary processing on the server. This is why I considered JupyterLab. I wonder if it would be best and if it is possible to just create, for example, a normal Angular/Python font/back-end, and somehow wrap this up in a JupyterLab extension that will provide a mechanism to access the data from this app/service and bring it to the notebook for further processing.
Thanks in advance