JupyterLab can be extended in two ways via:
A JupyterLab application is comprised of several parts:
A full example of an application is contained here.
Looking at the index.js
file, you can see the extensions and service providers
used in the tutorial example.
A service provider adds a core functionality to the application:
The default services providers in the JupyterLab application include:
jupyter-js-services
.display_data
renderers.Extensions use the Application object and optionally other services to provide functionality to the application.
The default extensions in the application include:
The command palette, as a part of the application object, is intended to be the primary way to display and execute commands in the application. Many of the default extensions add new commands to the command palette to provide actions such as executing a notebook cell or launching a new terminal instance.
The Phosphor library is used as the underlying architecture of JupyterLab and provides many of the low level primitives and widget structure used in the application. Phosphor provides a rich set of widgets for developing desktop-like applications in the browser, as well as patterns and objects for writing clean, well-abstracted code. The widgets in the application are primarily Phosphor widgets, and Phosphor concepts, like message passing and signals, are used throughout. Phosphor messages are a many-to-one interaction that allows information like resize events to flow through the widget hierarchy in the application. Phosphor signals are a one-to-many interaction that allow listeners to react to changes in an observed object.