/**
* Activate the widget extension.
*/
function activateWidgetExtension(app: JupyterFrontEnd, tracker: INotebookTracker, rendermime: IRenderMimeRegistry, settingRegistry: ISettingRegistry, menu: IMainMenu | null): base.IJupyterWidgetRegistry {
const {commands} = app;
settingRegistry.load(plugin.id).then((settings: ISettingRegistry.ISettings) => {
settings.changed.connect(updateSettings);
updateSettings(settings);
}).catch((reason: Error) => {
console.error(reason.message);
});
// Add a placeholder widget renderer.
rendermime.addFactory(
{
safe: false,
mimeTypes: [WIDGET_VIEW_MIMETYPE],
createRenderer: options => new WidgetRenderer(options)
},
0
);
tracker.forEach(panel => {
registerWidgetManager(
panel.context,
panel.content.rendermime,
chain(
widgetRenderers(panel.content),
outputViews(app, panel.context.path)
)
);
});
tracker.widgetAdded.connect((sender, panel) => {
registerWidgetManager(
panel.context,
panel.content.rendermime,
chain(
widgetRenderers(panel.content),
outputViews(app, panel.context.path)
)
);
});
// Add a command for creating a new Markdown file.
commands.addCommand('@jupyter-widgets/jupyterlab-manager:saveWidgetState', {
label: 'Save Widget State Automatically',
execute: args => {
return settingRegistry
.set(plugin.id, 'saveState', !SETTINGS.saveState)
.catch((reason: Error) => {
console.error(`Failed to set ${plugin.id}: ${reason.message}`);
});
},
isToggled: () => SETTINGS.saveState
});
if (menu) {
menu.settingsMenu.addGroup([
{command: '@jupyter-widgets/jupyterlab-manager:saveWidgetState'}
]);
}
WIDGET_REGISTRY.push({
name: '@jupyter-widgets/base',
version: base.JUPYTER_WIDGETS_VERSION,
exports: {
WidgetModel: base.WidgetModel,
WidgetView: base.WidgetView,
DOMWidgetView: base.DOMWidgetView,
DOMWidgetModel: base.DOMWidgetModel,
LayoutModel: base.LayoutModel,
LayoutView: base.LayoutView,
StyleModel: base.StyleModel,
StyleView: base.StyleView
}
});
WIDGET_REGISTRY.push({
name: '@jupyter-widgets/controls',
version: JUPYTER_CONTROLS_VERSION,
exports: () => {
return new Promise((resolve, reject) => {
(require as any).ensure(['@jupyter-widgets/controls'], (require: NodeRequire) => {
resolve(require('@jupyter-widgets/controls'));
},
(err: any) => {
reject(err);
},
'@jupyter-widgets/controls'
);
});
}
});
WIDGET_REGISTRY.push({
name: '@jupyter-widgets/output',
version: OUTPUT_WIDGET_VERSION,
//.........这里部分代码省略.........
请发表评论