Skip to content

Commit 2cffe58

Browse files
authored
Merge pull request #2528 from vidartf/lab-optionals
Make more of lab manager dependencies optional
2 parents 5343523 + c24e12c commit 2cffe58

File tree

1 file changed

+54
-48
lines changed

1 file changed

+54
-48
lines changed

packages/jupyterlab-manager/src/plugin.ts

+54-48
Original file line numberDiff line numberDiff line change
@@ -157,8 +157,8 @@ export function registerWidgetManager(
157157
*/
158158
const plugin: JupyterFrontEndPlugin<base.IJupyterWidgetRegistry> = {
159159
id: '@jupyter-widgets/jupyterlab-manager:plugin',
160-
requires: [INotebookTracker, IRenderMimeRegistry, ISettingRegistry],
161-
optional: [IMainMenu, ILoggerRegistry],
160+
requires: [IRenderMimeRegistry],
161+
optional: [INotebookTracker, ISettingRegistry, IMainMenu, ILoggerRegistry],
162162
provides: base.IJupyterWidgetRegistry,
163163
activate: activateWidgetExtension,
164164
autoStart: true
@@ -176,11 +176,12 @@ function updateSettings(settings: ISettingRegistry.ISettings): void {
176176
*/
177177
function activateWidgetExtension(
178178
app: JupyterFrontEnd,
179-
tracker: INotebookTracker,
180179
rendermime: IRenderMimeRegistry,
181-
settingRegistry: ISettingRegistry,
180+
tracker: INotebookTracker | null,
181+
settingRegistry: ISettingRegistry | null,
182182
menu: IMainMenu | null,
183-
loggerRegistry: ILoggerRegistry | null): base.IJupyterWidgetRegistry {
183+
loggerRegistry: ILoggerRegistry | null
184+
): base.IJupyterWidgetRegistry {
184185

185186
const {commands} = app;
186187

@@ -210,13 +211,14 @@ function activateWidgetExtension(
210211
});
211212
}
212213
};
213-
214-
settingRegistry.load(plugin.id).then((settings: ISettingRegistry.ISettings) => {
215-
settings.changed.connect(updateSettings);
216-
updateSettings(settings);
217-
}).catch((reason: Error) => {
218-
console.error(reason.message);
219-
});
214+
if (settingRegistry !== null) {
215+
settingRegistry.load(plugin.id).then((settings: ISettingRegistry.ISettings) => {
216+
settings.changed.connect(updateSettings);
217+
updateSettings(settings);
218+
}).catch((reason: Error) => {
219+
console.error(reason.message);
220+
});
221+
}
220222

221223
// Add a placeholder widget renderer.
222224
rendermime.addFactory(
@@ -228,43 +230,47 @@ function activateWidgetExtension(
228230
0
229231
);
230232

231-
tracker.forEach(panel => {
232-
registerWidgetManager(
233-
panel.context,
234-
panel.content.rendermime,
235-
chain(
236-
widgetRenderers(panel.content),
237-
outputViews(app, panel.context.path)
238-
)
239-
);
240-
241-
bindUnhandledIOPubMessageSignal(panel);
242-
});
243-
tracker.widgetAdded.connect((sender, panel) => {
244-
registerWidgetManager(
245-
panel.context,
246-
panel.content.rendermime,
247-
chain(
248-
widgetRenderers(panel.content),
249-
outputViews(app, panel.context.path)
250-
)
251-
);
252-
253-
bindUnhandledIOPubMessageSignal(panel);
254-
});
233+
if (tracker !== null) {
234+
tracker.forEach(panel => {
235+
registerWidgetManager(
236+
panel.context,
237+
panel.content.rendermime,
238+
chain(
239+
widgetRenderers(panel.content),
240+
outputViews(app, panel.context.path)
241+
)
242+
);
243+
244+
bindUnhandledIOPubMessageSignal(panel);
245+
});
246+
tracker.widgetAdded.connect((sender, panel) => {
247+
registerWidgetManager(
248+
panel.context,
249+
panel.content.rendermime,
250+
chain(
251+
widgetRenderers(panel.content),
252+
outputViews(app, panel.context.path)
253+
)
254+
);
255+
256+
bindUnhandledIOPubMessageSignal(panel);
257+
});
258+
}
255259

256-
// Add a command for creating a new Markdown file.
257-
commands.addCommand('@jupyter-widgets/jupyterlab-manager:saveWidgetState', {
258-
label: 'Save Widget State Automatically',
259-
execute: args => {
260-
return settingRegistry
261-
.set(plugin.id, 'saveState', !SETTINGS.saveState)
262-
.catch((reason: Error) => {
263-
console.error(`Failed to set ${plugin.id}: ${reason.message}`);
264-
});
265-
},
266-
isToggled: () => SETTINGS.saveState
267-
});
260+
if (settingRegistry !== null) {
261+
// Add a command for creating a new Markdown file.
262+
commands.addCommand('@jupyter-widgets/jupyterlab-manager:saveWidgetState', {
263+
label: 'Save Widget State Automatically',
264+
execute: args => {
265+
return settingRegistry
266+
.set(plugin.id, 'saveState', !SETTINGS.saveState)
267+
.catch((reason: Error) => {
268+
console.error(`Failed to set ${plugin.id}: ${reason.message}`);
269+
});
270+
},
271+
isToggled: () => SETTINGS.saveState
272+
});
273+
}
268274

269275
if (menu) {
270276
menu.settingsMenu.addGroup([

0 commit comments

Comments
 (0)