@jupyter-notebook/application 7.7.0-alpha.1 → 7.7.0-alpha.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/lib/app.d.ts CHANGED
@@ -1,6 +1,7 @@
1
1
  import { JupyterLab, JupyterFrontEnd, JupyterFrontEndPlugin } from '@jupyterlab/application';
2
2
  import { LabStatus } from '@jupyterlab/application/lib/status';
3
3
  import { IRenderMime } from '@jupyterlab/rendermime-interfaces';
4
+ import { ISignal } from '@lumino/signaling';
4
5
  import { INotebookShell } from './shell';
5
6
  /**
6
7
  * App is the main application class. It is instantiated once and shared.
@@ -35,7 +36,7 @@ export declare class NotebookApp extends JupyterFrontEnd<INotebookShell> {
35
36
  /**
36
37
  * The NotebookApp application information dictionary.
37
38
  */
38
- get info(): JupyterLab.IInfo;
39
+ get info(): NotebookApp.IAppInfo;
39
40
  /**
40
41
  * The JupyterLab application paths dictionary.
41
42
  */
@@ -58,7 +59,12 @@ export declare class NotebookApp extends JupyterFrontEnd<INotebookShell> {
58
59
  * @param mods - The plugin modules to register.
59
60
  */
60
61
  registerPluginModules(mods: NotebookApp.IPluginModule[]): void;
62
+ /**
63
+ * Add the announced plugins to the available plugins.
64
+ */
65
+ private _onAvailablePluginsAdded;
61
66
  private _info;
67
+ private _availablePluginsChanged;
62
68
  private _formatter;
63
69
  }
64
70
  /**
@@ -69,6 +75,11 @@ export declare namespace NotebookApp {
69
75
  * The instantiation options for an App application.
70
76
  */
71
77
  interface IOptions extends JupyterFrontEnd.IOptions<INotebookShell>, Partial<IInfo> {
78
+ /**
79
+ * A signal announcing plugins discovered after startup, such as those of
80
+ * the disabled federated extensions; they are appended to `info`.
81
+ */
82
+ availablePluginsAdded?: ISignal<unknown, JupyterLab.IPluginInfo[]>;
72
83
  }
73
84
  /**
74
85
  * The information about a Jupyter Notebook application.
@@ -82,6 +93,22 @@ export declare namespace NotebookApp {
82
93
  * The information about available plugins.
83
94
  */
84
95
  readonly availablePlugins: JupyterLab.IPluginInfo[];
96
+ /**
97
+ * The collection of disabled extension patterns and matched extensions.
98
+ */
99
+ readonly disabled: {
100
+ patterns: string[];
101
+ matches: string[];
102
+ };
103
+ }
104
+ /**
105
+ * The application information, with its change signal.
106
+ */
107
+ interface IAppInfo extends JupyterLab.IInfo {
108
+ /**
109
+ * A signal emitted when `availablePlugins` changes.
110
+ */
111
+ readonly availablePluginsChanged: ISignal<JupyterLab.IInfo, void>;
85
112
  }
86
113
  /**
87
114
  * The interface for a module that exports a plugin or plugins as
package/lib/app.js CHANGED
@@ -6,6 +6,7 @@ import { createRendermimePlugins } from '@jupyterlab/application/lib/mimerendere
6
6
  import { LabStatus } from '@jupyterlab/application/lib/status';
7
7
  import { PageConfig } from '@jupyterlab/coreutils';
8
8
  import { Throttler } from '@lumino/polling';
9
+ import { Signal } from '@lumino/signaling';
9
10
  import { NotebookShell } from './shell';
10
11
  /**
11
12
  * App is the main application class. It is instantiated once and shared.
@@ -17,7 +18,7 @@ export class NotebookApp extends JupyterFrontEnd {
17
18
  * @param options The instantiation options for an application.
18
19
  */
19
20
  constructor(options = { shell: new NotebookShell() }) {
20
- var _a, _b;
21
+ var _a, _b, _c;
21
22
  super({ ...options, shell: (_a = options.shell) !== null && _a !== void 0 ? _a : new NotebookShell() });
22
23
  /**
23
24
  * The name of the application.
@@ -35,7 +36,6 @@ export class NotebookApp extends JupyterFrontEnd {
35
36
  * The version of the application.
36
37
  */
37
38
  this.version = (_b = PageConfig.getOption('appVersion')) !== null && _b !== void 0 ? _b : 'unknown';
38
- this._info = JupyterLab.defaultInfo;
39
39
  this._formatter = new Throttler(() => {
40
40
  Private.setFormat(this);
41
41
  }, 250);
@@ -53,8 +53,19 @@ export class NotebookApp extends JupyterFrontEnd {
53
53
  }
54
54
  return acc;
55
55
  }, {});
56
- // Populate application info.
57
- this._info = { ...JupyterLab.defaultInfo, ...info };
56
+ // Populate application info with own lists, as the plugins announced after
57
+ // startup are appended in place.
58
+ const appInfo = {
59
+ ...JupyterLab.defaultInfo,
60
+ availablePlugins: [],
61
+ disabled: { patterns: [], matches: [] },
62
+ ...info,
63
+ };
64
+ this._availablePluginsChanged = new Signal(appInfo);
65
+ this._info = Object.assign(appInfo, {
66
+ availablePluginsChanged: this._availablePluginsChanged,
67
+ });
68
+ (_c = options.availablePluginsAdded) === null || _c === void 0 ? void 0 : _c.connect(this._onAvailablePluginsAdded, this);
58
69
  this.restored = this.shell.restored;
59
70
  this.restored.then(() => this._formatter.invoke());
60
71
  }
@@ -139,6 +150,23 @@ export class NotebookApp extends JupyterFrontEnd {
139
150
  this.registerPluginModule(mod);
140
151
  });
141
152
  }
153
+ /**
154
+ * Add the announced plugins to the available plugins.
155
+ */
156
+ _onAvailablePluginsAdded(sender, plugins) {
157
+ if (plugins.length === 0) {
158
+ return;
159
+ }
160
+ const disabled = new Set(this._info.disabled.matches);
161
+ for (const plugin of plugins) {
162
+ this._info.availablePlugins.push(plugin);
163
+ if (!plugin.enabled && !disabled.has(plugin.id)) {
164
+ this._info.disabled.matches.push(plugin.id);
165
+ disabled.add(plugin.id);
166
+ }
167
+ }
168
+ this._availablePluginsChanged.emit();
169
+ }
142
170
  }
143
171
  /**
144
172
  * A namespace for module-private functionality.
@@ -189,7 +189,7 @@ type SidePanelPaletteOption = {
189
189
  * ### Notes
190
190
  * That command required 3 args :
191
191
  * side: 'left' | 'right', the area to toggle
192
- * title: string, label of the command
192
+ * title: string, title of the widget
193
193
  * id: string, id of the widget to activate
194
194
  */
195
195
  command: string;
@@ -285,7 +285,7 @@ export class SidePanelPalette {
285
285
  category: 'View',
286
286
  args: {
287
287
  side: area,
288
- title: `Show ${widget.title.caption}`,
288
+ title: widget.title.caption,
289
289
  id: widget.id,
290
290
  },
291
291
  });
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@jupyter-notebook/application",
3
- "version": "7.7.0-alpha.1",
3
+ "version": "7.7.0-alpha.2",
4
4
  "description": "Jupyter Notebook - Application",
5
5
  "homepage": "https://github.com/jupyter/notebook",
6
6
  "bugs": {
@@ -42,11 +42,11 @@
42
42
  "watch": "tsc -b --watch"
43
43
  },
44
44
  "dependencies": {
45
- "@jupyterlab/application": "~4.7.0-alpha.1",
46
- "@jupyterlab/coreutils": "~6.7.0-alpha.1",
47
- "@jupyterlab/docregistry": "~4.7.0-alpha.1",
48
- "@jupyterlab/rendermime-interfaces": "~3.15.0-alpha.1",
49
- "@jupyterlab/ui-components": "~4.7.0-alpha.1",
45
+ "@jupyterlab/application": "~4.7.0-alpha.2",
46
+ "@jupyterlab/coreutils": "~6.7.0-alpha.2",
47
+ "@jupyterlab/docregistry": "~4.7.0-alpha.2",
48
+ "@jupyterlab/rendermime-interfaces": "~3.15.0-alpha.2",
49
+ "@jupyterlab/ui-components": "~4.7.0-alpha.2",
50
50
  "@lumino/algorithm": "^2.0.4",
51
51
  "@lumino/coreutils": "^2.2.2",
52
52
  "@lumino/messaging": "^2.0.4",
@@ -57,7 +57,7 @@
57
57
  "devDependencies": {
58
58
  "@babel/core": "^7.29.6",
59
59
  "@babel/preset-env": "^7.12.1",
60
- "@jupyterlab/testutils": "~4.7.0-alpha.1",
60
+ "@jupyterlab/testutils": "~4.7.0-alpha.2",
61
61
  "@types/jest": "^29.2.5",
62
62
  "jest": "^29.3.1",
63
63
  "rimraf": "^3.0.2",