Hi Florian,

This certainly was one nice thing about classic notebook: the global 
`jupyter` variable. 

If you run JupyterLab in dev-mode, you get a global `window.lab` variable 
that gives you a handle on the application. This is a good starting point. 
To add a new cell, you can call 
`window.lab.commands.execute('notebook:insert-cell-below')`. You can call 
that in the browser console or in a cell:

```py
%%js
window.lab.commands.execute('notebook:insert-cell-below')
```

If you want to run a cell: 
`window.lab.commands.execute('notebook:run-cell-and-select-next')`

You can find these commands by searching the command palette and then 
searching the jupyterlab source code for the command title.

Another relevant project is jyve which gives you several custom Jupyter 
JS-based kernels that expose JupyterLab internals outside of 
dev-mode: https://github.com/deathbeds/jyve

We are weary to expose this outside of dev-mode by default because of the 
consequences that running arbitrary code could have on the user's lab 
environment and system. We could consider adding a setting to the 
javascript-extension allowing users to override this behavior so that it's 
not default but possible.

Feel free to open an issue on the jupyterlab repo.

Grant

On Friday, November 30, 2018 at 3:16:09 AM UTC-6, Florian Wetschoreck wrote:
>
> Hi,
>
> there are good reasons why currently it is not allowed to execute 
> arbitrary Javascript in JupyterLab.
> Also, there is a fix with the javascript extension package which exposes 
> the window, document and element objects.
> https://github.com/jupyterlab/jupyterlab/pull/4515
>
> However, we need access to more (internal) objects if we want to add cells 
> or execute cells etc
>
> Therefore, I want to extend the current Javascript extension package to 
> expose even more context for users who know what they are doing.
> The goal is to have another more powerful javascript extension which 
> exposes all relevant objects to fully manipulate JupyterLab without having 
> to go through the process of writing a custom extension.
>
> Do you have any advice on this endeavor? For example: *which objects to 
> expose?*
> How to install the extension without interfering with the existing 
> javascript MimeRenderer. Or maybe: how to overwrite the existing Javascript 
> MimeRenderer. Is it possible to have both side by side? eg to import 
> Javascript and/or JavascriptFullAccess from IPython.display
>
> Any help is highly appreciated.
>
> Florian
>
>

-- 
You received this message because you are subscribed to the Google Groups 
"Project Jupyter" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to jupyter+unsubscr...@googlegroups.com.
To post to this group, send email to jupyter@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/jupyter/e456cda7-901a-4d3d-a764-9078ff9fd68a%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to