jupyterlab / jupyterlab/plugin-playground

Question regarding JupyterLab Widgets

Open
#2 4 comments 0 reactions 0 assignees View on GitHub
Dominant language
TypeScript
Stars
60
Forks
21
PR merge metrics
No merged PRs in 30d

Description

Thank you so much for this work! We've been looking for a quick way to develop/debug JLab extensions for quite some time now, and this seems to be of great help!

I have a question regarding JupyterLab widgets, particularly those that subclass `@lumino/widgets`. Simply put, if we use the

As a barebone example, I was trying to see if it'd be possible to dynamically load the tutorial widget/extension (https://github.com/jupyterlab/jupyterlab_apod).

So in this case, the index.js of the APOD Widget/Extension compiles into something like
```
define(["require", "exports", "@jupyterlab/application", "@jupyterlab/apputils", "@lumino/widgets"], function (require, exports, application_1, apputils_1, widgets_1) {
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
;
class APODWidget extends widgets_1.Widget {
...
}

function active(app, palette, restorer) {
}

/**
* Initialization data for the jupyterlab_apod extension.
*/
const extension = {
id: 'my-apod-extension',
autoStart: true,
requires: [apputils_1.ICommandPalette, application_1.ILayoutRestorer],
activate: activate
};
exports.default = extension;
```

And I tried to create a JS file which looks like
```
return function()
{
return {
id: 'dynext-test-extension',
autoStart: true,
requires: ["jupyter.extensions.jupyterWidgetRegistry"],
activate: function(app, widgets) {
require.config({
// take the widget from `unpkg.com`
baseUrl: "/Users/tingkailiu/Projects/FFBO/JLab2/dynext-test-extension/lib"
});

let widget = "index";
// note that we are using require js here to load the AMD module
// requirejs is automatically loaded with jupyterlab-dynext.
// * (star) selects the latest version from unpkg, and then loads the `/dist/index.js` file
// the final URL will be something like https://unpkg.com/bqplot@^0.5.2/dist/index.js
require([widget], function(plugin) {
widgets.registerWidget({
name: widget,
version: plugin.version,
exports: plugin
});
});
}
};
}
```

But it seems like `jupyter.extensions.jupyterWidgetRegistry` is not found and it's because I'm not using `jupyterlab-manager` since I'm trying to load a lab widget instead of a ipywidget.

Could you suggest a way for dynamically loading and developing jupyterlab widget/extension?

Contributor guide

No contributing guide indexed for this repository

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.