Skip to main content

🪐 Notebook Component

The below picture is an example of Notebook into a React.js component.

Jupyter UI Notebook

This is what it takes to create a Notebook. In this first example, the Jupyter Server will be fetched for the test.ipynb notebook "ipynb" file content.

<Jupyter terminals={true} collaborative={true}>
  <Notebook path="test.ipynb" />
</Jupyter>

Alternatively, you can get a notebook "ipynb" content from any JSON file compatible with the INotebookContent interface.

import { INotebookContent } from '@jupyterlab/nbformat';
import nbformat from "./NotebookExample.ipynb.json";

<Jupyter terminals={true} collaborative={true}>
  <Notebook nbformat={nbformat as INotebookContent} />
</Jupyter>

For IPyWidgets, use the following properties:

  • bundledIPyWidgets: List of module name, version and exports.
  • externalIPyWidgets: List of module name and version to be loaded from public CDNs.
  • ipywidgets: lab or classic (deprecated, will be soon removed). Please use lab

The available properties for the Notebook component are available on this TypeDoc page.

With a Jupyter server

<Jupyter
    jupyterServerUrl="https://oss.datalayer.run/api/jupyter-server"
    jupyterServerToken="60c1661cc408f978c309d04157af55c9588ff9557c9380e4fb50785750703da6"
>
    <Notebook />
</Jupyter>

You can set the following props to connect it to a running Jupyter Server:

  • jupyterServerUrl: The server URL
  • jupyterServerToken: The server authentication token

Your server will likely need to accept connection from external client.

With in-browser kernel

It supports in-browser kernel (using JupyterLite kernels).

To use the Pyodide Python kernel, you can simply set lite to true:

<Jupyter
    lite={true}
>
    <Notebook
      ipywidgets={'classic'}
      {/* Include a default content */}
      nbformat={{
        cells: [
          {
            cell_type: 'code',
            outputs: [],
            source:
              "import piplite\nawait piplite.install('ipywidgets')",
          },
          {
            cell_type: 'code',
            outputs: [],
            source: 'import ipywidgets as widgets\nw = widgets.IntSlider()\nw',
          }
        ],  
        metadata: {
          kernelspec: {
            display_name: 'Python 3 (ipykernel)',
            language: 'python',
            name: 'python3',
          },
        },
        nbformat: 4,
        nbformat_minor: 5,
      }}
    />
</Jupyter>