@jupyterlab/settingeditor 4.3.0-alpha.1 → 4.3.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.
@@ -1,5 +1,5 @@
1
1
  import { ReactWidget } from '@jupyterlab/apputils';
2
- import { ISettingRegistry } from '@jupyterlab/settingregistry';
2
+ import { ISettingRegistry, Settings } from '@jupyterlab/settingregistry';
3
3
  import { ITranslator } from '@jupyterlab/translation';
4
4
  import { IScore } from '@jupyterlab/ui-components';
5
5
  import { Message } from '@lumino/messaging';
@@ -15,8 +15,10 @@ export declare class PluginList extends ReactWidget {
15
15
  constructor(options: PluginList.IOptions);
16
16
  /**
17
17
  * The setting registry.
18
+ * @deprecated - it was not intended as a public property
18
19
  */
19
20
  readonly registry: ISettingRegistry;
21
+ private _registry;
20
22
  /**
21
23
  * A signal emitted when a list user interaction happens.
22
24
  */
@@ -79,11 +81,10 @@ export declare class PluginList extends ReactWidget {
79
81
  private _changed;
80
82
  private _errors;
81
83
  private _filter;
84
+ private _model;
82
85
  private _query;
83
86
  private _handleSelectSignal;
84
87
  private _updateFilterSignal;
85
- private _allPlugins;
86
- private _settings;
87
88
  private _confirm?;
88
89
  private _scrollTop;
89
90
  private _selection;
@@ -105,12 +106,17 @@ export declare namespace PluginList {
105
106
  * made.
106
107
  */
107
108
  confirm?: (id: string) => Promise<void>;
109
+ /**
110
+ * Model for the plugin list.
111
+ */
112
+ model?: PluginList.Model;
108
113
  /**
109
114
  * The setting registry for the plugin list.
110
115
  */
111
116
  registry: ISettingRegistry;
112
117
  /**
113
- * List of plugins to skip
118
+ * List of plugins to skip.
119
+ * @deprecated - pass a `model` with `toSkip` option instead
114
120
  */
115
121
  toSkip?: string[];
116
122
  /**
@@ -124,6 +130,78 @@ export declare namespace PluginList {
124
130
  }
125
131
  /**
126
132
  * Sort a list of plugins by title and ID.
133
+ * @deprecated - prior to 4.3 this function was used to reimplement
134
+ * the same ordering between the plugin list and editor; it is no
135
+ * longer needed as the order is now tracked by the model.
127
136
  */
128
137
  function sortPlugins(registry: ISettingRegistry): ISettingRegistry.IPlugin[];
138
+ /**
139
+ * Model for plugin list
140
+ */
141
+ class Model {
142
+ /**
143
+ * Create a new plugin list model.
144
+ */
145
+ constructor(options: PluginList.Model.IOptions);
146
+ /**
147
+ * A list of loaded plugins.
148
+ */
149
+ get plugins(): ISettingRegistry.IPlugin[];
150
+ /**
151
+ * A promise which resolves when an initial loading of plugins completed.
152
+ *
153
+ * Note: this does not guarantee that all `plugins` nor `settings` are available
154
+ * as these can be also loaded later as plugins are added or transformed.
155
+ */
156
+ get ready(): Promise<void>;
157
+ /**
158
+ * Settings keyed by plugin name.
159
+ *
160
+ * Note: settings for plugins can be loaded later than the plugin
161
+ * itself, which is the case for plugins using a `transform` step.
162
+ */
163
+ get settings(): Record<string, Settings>;
164
+ /**
165
+ * Signal emitted when list of plugins change.
166
+ *
167
+ * This signal will be emitted when new plugins are added to the registry,
168
+ * when settings schema of an already present plugin changes, and when the
169
+ * settings state changes from default to modified or vice versa.
170
+ */
171
+ get changed(): ISignal<PluginList.Model, void>;
172
+ /**
173
+ * Loads, sorts and filters plugins from the registry.
174
+ */
175
+ private _loadPlugins;
176
+ /**
177
+ * Loads settings and stores them for easy access when displaying search results.
178
+ */
179
+ private _loadSettings;
180
+ private _sortPlugins;
181
+ private _plugins;
182
+ private _changed;
183
+ private _ready;
184
+ private _registry;
185
+ private _settings;
186
+ private _settingsModified;
187
+ private _toSkip;
188
+ }
189
+ /**
190
+ * A namespace for `PluginList.Model` statics.
191
+ */
192
+ namespace Model {
193
+ /**
194
+ * The instantiation options for a plugin list model.
195
+ */
196
+ interface IOptions {
197
+ /**
198
+ * The setting registry for the plugin list model.
199
+ */
200
+ registry: ISettingRegistry;
201
+ /**
202
+ * List of plugins to skip.
203
+ */
204
+ toSkip?: string[];
205
+ }
206
+ }
129
207
  }
package/lib/pluginlist.js CHANGED
@@ -7,6 +7,7 @@ import { ReactWidget } from '@jupyterlab/apputils';
7
7
  import { nullTranslator } from '@jupyterlab/translation';
8
8
  import { classes, FilterBox, LabIcon, settingsIcon, updateFilterFunction } from '@jupyterlab/ui-components';
9
9
  import { StringExt } from '@lumino/algorithm';
10
+ import { PromiseDelegate } from '@lumino/coreutils';
10
11
  import { Signal } from '@lumino/signaling';
11
12
  /**
12
13
  * The JupyterLab plugin schema key for the setting editor
@@ -31,53 +32,34 @@ export class PluginList extends ReactWidget {
31
32
  * Create a new plugin list.
32
33
  */
33
34
  constructor(options) {
34
- var _a;
35
+ var _a, _b;
35
36
  super();
36
37
  this._changed = new Signal(this);
37
38
  this._handleSelectSignal = new Signal(this);
38
39
  this._updateFilterSignal = new Signal(this);
39
- this._allPlugins = [];
40
- this._settings = {};
41
40
  this._scrollTop = 0;
42
41
  this._selection = '';
43
- this.registry = options.registry;
42
+ this._registry = this.registry = options.registry;
44
43
  this.translator = options.translator || nullTranslator;
45
44
  this.addClass('jp-PluginList');
46
45
  this._confirm = options.confirm;
47
- this.registry.pluginChanged.connect(() => {
46
+ this._model = (_a = options.model) !== null && _a !== void 0 ? _a : new PluginList.Model(options);
47
+ this._model.ready
48
+ .then(() => {
48
49
  this.update();
49
- }, this);
50
+ this._model.changed.connect(() => {
51
+ this.update();
52
+ });
53
+ })
54
+ .catch(reason => {
55
+ console.error(`Failed to load the plugin list model:\n${reason}`);
56
+ });
50
57
  this.mapPlugins = this.mapPlugins.bind(this);
51
58
  this.setFilter = this.setFilter.bind(this);
52
59
  this.setFilter(options.query ? updateFilterFunction(options.query, false, false) : null);
53
60
  this.setError = this.setError.bind(this);
54
61
  this._evtMousedown = this._evtMousedown.bind(this);
55
- this._query = (_a = options.query) !== null && _a !== void 0 ? _a : '';
56
- this._allPlugins = PluginList.sortPlugins(this.registry).filter(plugin => {
57
- var _a;
58
- const { schema } = plugin;
59
- const deprecated = schema['jupyter.lab.setting-deprecated'] === true;
60
- const editable = Object.keys(schema.properties || {}).length > 0;
61
- const extensible = schema.additionalProperties !== false;
62
- // Filters out a couple of plugins that take too long to load in the new settings editor.
63
- const correctEditor =
64
- // If this is the json settings editor, anything is fine
65
- this._confirm ||
66
- // If this is the new settings editor, remove context menu / main menu settings.
67
- (!this._confirm && !((_a = options.toSkip) !== null && _a !== void 0 ? _a : []).includes(plugin.id));
68
- return !deprecated && correctEditor && (editable || extensible);
69
- });
70
- /**
71
- * Loads all settings and stores them for easy access when displaying search results.
72
- */
73
- const loadSettings = async () => {
74
- for (const plugin of this._allPlugins) {
75
- const pluginSettings = (await this.registry.load(plugin.id));
76
- this._settings[plugin.id] = pluginSettings;
77
- }
78
- this.update();
79
- };
80
- void loadSettings();
62
+ this._query = (_b = options.query) !== null && _b !== void 0 ? _b : '';
81
63
  this._errors = {};
82
64
  }
83
65
  /**
@@ -299,9 +281,9 @@ export class PluginList extends ReactWidget {
299
281
  ? trans._p('schema', schema.description)
300
282
  : '';
301
283
  const itemTitle = `${description}\n${id}\n${version}`;
302
- const icon = this.getHint(ICON_KEY, this.registry, plugin);
303
- const iconClass = this.getHint(ICON_CLASS_KEY, this.registry, plugin);
304
- const iconTitle = this.getHint(ICON_LABEL_KEY, this.registry, plugin);
284
+ const icon = this.getHint(ICON_KEY, this._registry, plugin);
285
+ const iconClass = this.getHint(ICON_CLASS_KEY, this._registry, plugin);
286
+ const iconTitle = this.getHint(ICON_LABEL_KEY, this._registry, plugin);
305
287
  const filteredProperties = this._filter
306
288
  ? (_d = this._filter(plugin)) === null || _d === void 0 ? void 0 : _d.map(fieldValue => {
307
289
  var _a, _b, _c;
@@ -327,7 +309,7 @@ export class PluginList extends ReactWidget {
327
309
  render() {
328
310
  const trans = this.translator.load('jupyterlab');
329
311
  // Filter all plugins based on search value before displaying list.
330
- const allPlugins = this._allPlugins.filter(plugin => {
312
+ const allPlugins = this._model.plugins.filter(plugin => {
331
313
  if (!this._filter) {
332
314
  return false;
333
315
  }
@@ -336,7 +318,7 @@ export class PluginList extends ReactWidget {
336
318
  });
337
319
  const modifiedPlugins = allPlugins.filter(plugin => {
338
320
  var _a;
339
- return (_a = this._settings[plugin.id]) === null || _a === void 0 ? void 0 : _a.isModified;
321
+ return (_a = this._model.settings[plugin.id]) === null || _a === void 0 ? void 0 : _a.isModified;
340
322
  });
341
323
  const modifiedItems = modifiedPlugins.map(this.mapPlugins);
342
324
  const otherItems = allPlugins
@@ -361,6 +343,9 @@ export class PluginList extends ReactWidget {
361
343
  (function (PluginList) {
362
344
  /**
363
345
  * Sort a list of plugins by title and ID.
346
+ * @deprecated - prior to 4.3 this function was used to reimplement
347
+ * the same ordering between the plugin list and editor; it is no
348
+ * longer needed as the order is now tracked by the model.
364
349
  */
365
350
  function sortPlugins(registry) {
366
351
  return Object.keys(registry.plugins)
@@ -370,5 +355,119 @@ export class PluginList extends ReactWidget {
370
355
  });
371
356
  }
372
357
  PluginList.sortPlugins = sortPlugins;
358
+ /**
359
+ * Model for plugin list
360
+ */
361
+ class Model {
362
+ /**
363
+ * Create a new plugin list model.
364
+ */
365
+ constructor(options) {
366
+ var _a;
367
+ this._plugins = [];
368
+ this._changed = new Signal(this);
369
+ this._ready = new PromiseDelegate();
370
+ this._settings = {};
371
+ this._settingsModified = {};
372
+ this._toSkip = (_a = options.toSkip) !== null && _a !== void 0 ? _a : [];
373
+ this._registry = options.registry;
374
+ this._registry.pluginChanged.connect(async (_emitter, pluginId) => {
375
+ let changed = false;
376
+ // Either plugin can be missing (if plugin was not loaded at all yet)
377
+ // or just plugin's settings may be missing (if transform step has no completed).
378
+ if (!this._plugins.map(plugin => plugin.id).includes(pluginId)) {
379
+ this._plugins = this._loadPlugins();
380
+ changed = true;
381
+ }
382
+ if (!this._settings[pluginId]) {
383
+ const pluginsToLoad = this._plugins.filter(plugin => plugin.id === pluginId);
384
+ await this._loadSettings(pluginsToLoad);
385
+ changed = true;
386
+ }
387
+ if (changed) {
388
+ this._changed.emit();
389
+ }
390
+ }, this);
391
+ this._plugins = this._loadPlugins();
392
+ this._loadSettings(this._plugins)
393
+ .then(() => {
394
+ this._ready.resolve(undefined);
395
+ })
396
+ .catch(reason => {
397
+ console.error(`Failed to load the settings:\n${reason}`);
398
+ });
399
+ }
400
+ /**
401
+ * A list of loaded plugins.
402
+ */
403
+ get plugins() {
404
+ return this._plugins;
405
+ }
406
+ /**
407
+ * A promise which resolves when an initial loading of plugins completed.
408
+ *
409
+ * Note: this does not guarantee that all `plugins` nor `settings` are available
410
+ * as these can be also loaded later as plugins are added or transformed.
411
+ */
412
+ get ready() {
413
+ return this._ready.promise;
414
+ }
415
+ /**
416
+ * Settings keyed by plugin name.
417
+ *
418
+ * Note: settings for plugins can be loaded later than the plugin
419
+ * itself, which is the case for plugins using a `transform` step.
420
+ */
421
+ get settings() {
422
+ return this._settings;
423
+ }
424
+ /**
425
+ * Signal emitted when list of plugins change.
426
+ *
427
+ * This signal will be emitted when new plugins are added to the registry,
428
+ * when settings schema of an already present plugin changes, and when the
429
+ * settings state changes from default to modified or vice versa.
430
+ */
431
+ get changed() {
432
+ return this._changed;
433
+ }
434
+ /**
435
+ * Loads, sorts and filters plugins from the registry.
436
+ */
437
+ _loadPlugins() {
438
+ return this._sortPlugins(this._registry).filter(plugin => {
439
+ const { schema } = plugin;
440
+ const deprecated = schema['jupyter.lab.setting-deprecated'] === true;
441
+ const editable = Object.keys(schema.properties || {}).length > 0;
442
+ const extensible = schema.additionalProperties !== false;
443
+ const correctEditor = !this._toSkip.includes(plugin.id);
444
+ return !deprecated && correctEditor && (editable || extensible);
445
+ });
446
+ }
447
+ /**
448
+ * Loads settings and stores them for easy access when displaying search results.
449
+ */
450
+ async _loadSettings(plugins) {
451
+ for (const plugin of plugins) {
452
+ const pluginSettings = (await this._registry.load(plugin.id));
453
+ pluginSettings.changed.connect(() => {
454
+ if (pluginSettings.isModified !== this._settingsModified[plugin.id]) {
455
+ this._changed.emit();
456
+ this._settingsModified[plugin.id] = pluginSettings.isModified;
457
+ }
458
+ });
459
+ this._settings[plugin.id] = pluginSettings;
460
+ this._settingsModified[plugin.id] = pluginSettings.isModified;
461
+ }
462
+ }
463
+ _sortPlugins(registry) {
464
+ return Object.keys(registry.plugins)
465
+ .map(plugin => registry.plugins[plugin])
466
+ .sort((a, b) => {
467
+ return (a.schema.title || a.id).localeCompare(b.schema.title || b.id);
468
+ });
469
+ }
470
+ }
471
+ PluginList.Model = Model;
373
472
  })(PluginList || (PluginList = {}));
374
473
  //# sourceMappingURL=pluginlist.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"pluginlist.js","sourceRoot":"","sources":["../src/pluginlist.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"pluginlist.js","sourceRoot":"","sources":["../src/pluginlist.tsx"],"names":[],"mappings":"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"}
@@ -33,6 +33,7 @@ export declare class SettingsEditor extends SplitPanel {
33
33
  private _status;
34
34
  private _dirty;
35
35
  private _list;
36
+ private _listModel;
36
37
  private _saveStateChange;
37
38
  }
38
39
  export declare namespace SettingsEditor {
@@ -4,7 +4,7 @@
4
4
  */
5
5
  import { showDialog } from '@jupyterlab/apputils';
6
6
  import { nullTranslator } from '@jupyterlab/translation';
7
- import { ReactWidget } from '@jupyterlab/ui-components';
7
+ import { ReactWidget, UseSignal } from '@jupyterlab/ui-components';
8
8
  import { Signal } from '@lumino/signaling';
9
9
  import { SplitPanel } from '@lumino/widgets';
10
10
  import React from 'react';
@@ -25,32 +25,30 @@ export class SettingsEditor extends SplitPanel {
25
25
  this._saveStateChange = new Signal(this);
26
26
  this.translator = options.translator || nullTranslator;
27
27
  this._status = options.status;
28
- const list = (this._list = new PluginList({
28
+ this._listModel = new PluginList.Model({
29
+ registry: options.registry,
30
+ // Filters out a couple of plugins that take too long to load in the new settings editor.
31
+ toSkip: options.toSkip
32
+ });
33
+ this._list = new PluginList({
29
34
  registry: options.registry,
30
- toSkip: options.toSkip,
31
35
  translator: this.translator,
32
- query: options.query
33
- }));
34
- this.addWidget(list);
36
+ query: options.query,
37
+ model: this._listModel
38
+ });
39
+ this._listModel.changed.connect(() => {
40
+ this.update();
41
+ });
42
+ this.addWidget(this._list);
35
43
  this.setDirtyState = this.setDirtyState.bind(this);
36
- /**
37
- * Initializes the settings panel after loading the schema for all plugins.
38
- */
39
- void Promise.all(PluginList.sortPlugins(options.registry)
40
- .filter(plugin => {
41
- const { schema } = plugin;
42
- const deprecated = schema['jupyter.lab.setting-deprecated'] === true;
43
- const editable = Object.keys(schema.properties || {}).length > 0;
44
- const extensible = schema.additionalProperties !== false;
45
- return !deprecated && (editable || extensible);
46
- })
47
- .map(async (plugin) => await options.registry.load(plugin.id)))
48
- .then(settings => {
49
- const settingsPanel = ReactWidget.create(React.createElement(SettingsPanel, { settings: settings.filter(pluginSettings => { var _a; return !((_a = options.toSkip) !== null && _a !== void 0 ? _a : []).includes(pluginSettings.id); }), editorRegistry: options.editorRegistry, handleSelectSignal: this._list.handleSelectSignal, onSelect: (id) => (this._list.selection = id), hasError: this._list.setError, updateFilterSignal: this._list.updateFilterSignal, updateDirtyState: this.setDirtyState, translator: this.translator, initialFilter: this._list.filter }));
44
+ const settingsPanel = ReactWidget.create(React.createElement(UseSignal, { signal: this._listModel.changed }, () => (React.createElement(SettingsPanel, { settings: [...Object.values(this._listModel.settings)], editorRegistry: options.editorRegistry, handleSelectSignal: this._list.handleSelectSignal, onSelect: (id) => (this._list.selection = id), hasError: this._list.setError, updateFilterSignal: this._list.updateFilterSignal, updateDirtyState: this.setDirtyState, translator: this.translator, initialFilter: this._list.filter }))));
45
+ // Initializes the settings panel after loading the schema for all plugins.
46
+ this._listModel.ready
47
+ .then(() => {
50
48
  this.addWidget(settingsPanel);
51
49
  })
52
50
  .catch(reason => {
53
- console.error(`Fail to load the setting plugins:\n${reason}`);
51
+ console.error(`Failed to load the setting plugins:\n${reason}`);
54
52
  });
55
53
  }
56
54
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"settingseditor.js","sourceRoot":"","sources":["../src/settingseditor.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"settingseditor.js","sourceRoot":"","sources":["../src/settingseditor.tsx"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@jupyterlab/settingeditor",
3
- "version": "4.3.0-alpha.1",
3
+ "version": "4.3.0-alpha.2",
4
4
  "description": "The JupyterLab default setting editor interface",
5
5
  "homepage": "https://github.com/jupyterlab/jupyterlab",
6
6
  "bugs": {
@@ -41,15 +41,15 @@
41
41
  "watch": "tsc -b --watch"
42
42
  },
43
43
  "dependencies": {
44
- "@jupyterlab/application": "^4.3.0-alpha.1",
45
- "@jupyterlab/apputils": "^4.4.0-alpha.1",
46
- "@jupyterlab/codeeditor": "^4.3.0-alpha.1",
47
- "@jupyterlab/inspector": "^4.3.0-alpha.1",
48
- "@jupyterlab/rendermime": "^4.3.0-alpha.1",
49
- "@jupyterlab/settingregistry": "^4.3.0-alpha.1",
50
- "@jupyterlab/statedb": "^4.3.0-alpha.1",
51
- "@jupyterlab/translation": "^4.3.0-alpha.1",
52
- "@jupyterlab/ui-components": "^4.3.0-alpha.1",
44
+ "@jupyterlab/application": "^4.3.0-alpha.2",
45
+ "@jupyterlab/apputils": "^4.4.0-alpha.2",
46
+ "@jupyterlab/codeeditor": "^4.3.0-alpha.2",
47
+ "@jupyterlab/inspector": "^4.3.0-alpha.2",
48
+ "@jupyterlab/rendermime": "^4.3.0-alpha.2",
49
+ "@jupyterlab/settingregistry": "^4.3.0-alpha.2",
50
+ "@jupyterlab/statedb": "^4.3.0-alpha.2",
51
+ "@jupyterlab/translation": "^4.3.0-alpha.2",
52
+ "@jupyterlab/ui-components": "^4.3.0-alpha.2",
53
53
  "@lumino/algorithm": "^2.0.1",
54
54
  "@lumino/commands": "^2.3.0",
55
55
  "@lumino/coreutils": "^2.1.2",
@@ -65,7 +65,7 @@
65
65
  "react": "^18.2.0"
66
66
  },
67
67
  "devDependencies": {
68
- "@jupyterlab/testing": "^4.3.0-alpha.1",
68
+ "@jupyterlab/testing": "^4.3.0-alpha.2",
69
69
  "@types/jest": "^29.2.0",
70
70
  "@types/react": "^18.0.26",
71
71
  "@types/react-test-renderer": "^18.0.0",
@@ -17,7 +17,7 @@ import {
17
17
  updateFilterFunction
18
18
  } from '@jupyterlab/ui-components';
19
19
  import { StringExt } from '@lumino/algorithm';
20
- import { PartialJSONObject } from '@lumino/coreutils';
20
+ import { PartialJSONObject, PromiseDelegate } from '@lumino/coreutils';
21
21
  import { Message } from '@lumino/messaging';
22
22
  import { ISignal, Signal } from '@lumino/signaling';
23
23
 
@@ -50,13 +50,21 @@ export class PluginList extends ReactWidget {
50
50
  */
51
51
  constructor(options: PluginList.IOptions) {
52
52
  super();
53
- this.registry = options.registry;
53
+ this._registry = this.registry = options.registry;
54
54
  this.translator = options.translator || nullTranslator;
55
55
  this.addClass('jp-PluginList');
56
56
  this._confirm = options.confirm;
57
- this.registry.pluginChanged.connect(() => {
58
- this.update();
59
- }, this);
57
+ this._model = options.model ?? new PluginList.Model(options);
58
+ this._model.ready
59
+ .then(() => {
60
+ this.update();
61
+ this._model.changed.connect(() => {
62
+ this.update();
63
+ });
64
+ })
65
+ .catch(reason => {
66
+ console.error(`Failed to load the plugin list model:\n${reason}`);
67
+ });
60
68
  this.mapPlugins = this.mapPlugins.bind(this);
61
69
  this.setFilter = this.setFilter.bind(this);
62
70
  this.setFilter(
@@ -66,42 +74,15 @@ export class PluginList extends ReactWidget {
66
74
  this._evtMousedown = this._evtMousedown.bind(this);
67
75
  this._query = options.query ?? '';
68
76
 
69
- this._allPlugins = PluginList.sortPlugins(this.registry).filter(plugin => {
70
- const { schema } = plugin;
71
- const deprecated = schema['jupyter.lab.setting-deprecated'] === true;
72
- const editable = Object.keys(schema.properties || {}).length > 0;
73
- const extensible = schema.additionalProperties !== false;
74
- // Filters out a couple of plugins that take too long to load in the new settings editor.
75
- const correctEditor =
76
- // If this is the json settings editor, anything is fine
77
- this._confirm ||
78
- // If this is the new settings editor, remove context menu / main menu settings.
79
- (!this._confirm && !(options.toSkip ?? []).includes(plugin.id));
80
-
81
- return !deprecated && correctEditor && (editable || extensible);
82
- });
83
-
84
- /**
85
- * Loads all settings and stores them for easy access when displaying search results.
86
- */
87
- const loadSettings = async () => {
88
- for (const plugin of this._allPlugins) {
89
- const pluginSettings = (await this.registry.load(
90
- plugin.id
91
- )) as Settings;
92
- this._settings[plugin.id] = pluginSettings;
93
- }
94
- this.update();
95
- };
96
- void loadSettings();
97
-
98
77
  this._errors = {};
99
78
  }
100
79
 
101
80
  /**
102
81
  * The setting registry.
82
+ * @deprecated - it was not intended as a public property
103
83
  */
104
84
  readonly registry: ISettingRegistry;
85
+ private _registry: ISettingRegistry;
105
86
 
106
87
  /**
107
88
  * A signal emitted when a list user interaction happens.
@@ -375,9 +356,9 @@ export class PluginList extends ReactWidget {
375
356
  ? trans._p('schema', schema.description)
376
357
  : '';
377
358
  const itemTitle = `${description}\n${id}\n${version}`;
378
- const icon = this.getHint(ICON_KEY, this.registry, plugin);
379
- const iconClass = this.getHint(ICON_CLASS_KEY, this.registry, plugin);
380
- const iconTitle = this.getHint(ICON_LABEL_KEY, this.registry, plugin);
359
+ const icon = this.getHint(ICON_KEY, this._registry, plugin);
360
+ const iconClass = this.getHint(ICON_CLASS_KEY, this._registry, plugin);
361
+ const iconTitle = this.getHint(ICON_LABEL_KEY, this._registry, plugin);
381
362
  const filteredProperties = this._filter
382
363
  ? this._filter(plugin)?.map(fieldValue => {
383
364
  const highlightedIndices = StringExt.matchSumOfSquares(
@@ -428,7 +409,7 @@ export class PluginList extends ReactWidget {
428
409
  render(): JSX.Element {
429
410
  const trans = this.translator.load('jupyterlab');
430
411
  // Filter all plugins based on search value before displaying list.
431
- const allPlugins = this._allPlugins.filter(plugin => {
412
+ const allPlugins = this._model.plugins.filter(plugin => {
432
413
  if (!this._filter) {
433
414
  return false;
434
415
  }
@@ -437,7 +418,7 @@ export class PluginList extends ReactWidget {
437
418
  });
438
419
 
439
420
  const modifiedPlugins = allPlugins.filter(plugin => {
440
- return this._settings[plugin.id]?.isModified;
421
+ return this._model.settings[plugin.id]?.isModified;
441
422
  });
442
423
  const modifiedItems = modifiedPlugins.map(this.mapPlugins);
443
424
  const otherItems = allPlugins
@@ -481,14 +462,13 @@ export class PluginList extends ReactWidget {
481
462
  private _changed = new Signal<this, void>(this);
482
463
  private _errors: { [id: string]: boolean };
483
464
  private _filter: SettingsEditor.PluginSearchFilter;
465
+ private _model: PluginList.Model;
484
466
  private _query: string | undefined;
485
467
  private _handleSelectSignal = new Signal<this, string>(this);
486
468
  private _updateFilterSignal = new Signal<
487
469
  this,
488
470
  SettingsEditor.PluginSearchFilter
489
471
  >(this);
490
- private _allPlugins: ISettingRegistry.IPlugin[] = [];
491
- private _settings: { [id: string]: Settings } = {};
492
472
  private _confirm?: (id: string) => Promise<void>;
493
473
  private _scrollTop: number | undefined = 0;
494
474
  private _selection = '';
@@ -512,13 +492,19 @@ export namespace PluginList {
512
492
  */
513
493
  confirm?: (id: string) => Promise<void>;
514
494
 
495
+ /**
496
+ * Model for the plugin list.
497
+ */
498
+ model?: PluginList.Model;
499
+
515
500
  /**
516
501
  * The setting registry for the plugin list.
517
502
  */
518
503
  registry: ISettingRegistry;
519
504
 
520
505
  /**
521
- * List of plugins to skip
506
+ * List of plugins to skip.
507
+ * @deprecated - pass a `model` with `toSkip` option instead
522
508
  */
523
509
  toSkip?: string[];
524
510
 
@@ -535,6 +521,9 @@ export namespace PluginList {
535
521
 
536
522
  /**
537
523
  * Sort a list of plugins by title and ID.
524
+ * @deprecated - prior to 4.3 this function was used to reimplement
525
+ * the same ordering between the plugin list and editor; it is no
526
+ * longer needed as the order is now tracked by the model.
538
527
  */
539
528
  export function sortPlugins(
540
529
  registry: ISettingRegistry
@@ -545,4 +534,154 @@ export namespace PluginList {
545
534
  return (a.schema.title || a.id).localeCompare(b.schema.title || b.id);
546
535
  });
547
536
  }
537
+
538
+ /**
539
+ * Model for plugin list
540
+ */
541
+ export class Model {
542
+ /**
543
+ * Create a new plugin list model.
544
+ */
545
+ constructor(options: PluginList.Model.IOptions) {
546
+ this._toSkip = options.toSkip ?? [];
547
+ this._registry = options.registry;
548
+ this._registry.pluginChanged.connect(async (_emitter, pluginId) => {
549
+ let changed = false;
550
+ // Either plugin can be missing (if plugin was not loaded at all yet)
551
+ // or just plugin's settings may be missing (if transform step has no completed).
552
+ if (!this._plugins.map(plugin => plugin.id).includes(pluginId)) {
553
+ this._plugins = this._loadPlugins();
554
+ changed = true;
555
+ }
556
+ if (!this._settings[pluginId]) {
557
+ const pluginsToLoad = this._plugins.filter(
558
+ plugin => plugin.id === pluginId
559
+ );
560
+ await this._loadSettings(pluginsToLoad);
561
+ changed = true;
562
+ }
563
+ if (changed) {
564
+ this._changed.emit();
565
+ }
566
+ }, this);
567
+ this._plugins = this._loadPlugins();
568
+ this._loadSettings(this._plugins)
569
+ .then(() => {
570
+ this._ready.resolve(undefined);
571
+ })
572
+ .catch(reason => {
573
+ console.error(`Failed to load the settings:\n${reason}`);
574
+ });
575
+ }
576
+
577
+ /**
578
+ * A list of loaded plugins.
579
+ */
580
+ get plugins(): ISettingRegistry.IPlugin[] {
581
+ return this._plugins;
582
+ }
583
+
584
+ /**
585
+ * A promise which resolves when an initial loading of plugins completed.
586
+ *
587
+ * Note: this does not guarantee that all `plugins` nor `settings` are available
588
+ * as these can be also loaded later as plugins are added or transformed.
589
+ */
590
+ get ready(): Promise<void> {
591
+ return this._ready.promise;
592
+ }
593
+
594
+ /**
595
+ * Settings keyed by plugin name.
596
+ *
597
+ * Note: settings for plugins can be loaded later than the plugin
598
+ * itself, which is the case for plugins using a `transform` step.
599
+ */
600
+ get settings(): Record<string, Settings> {
601
+ return this._settings;
602
+ }
603
+
604
+ /**
605
+ * Signal emitted when list of plugins change.
606
+ *
607
+ * This signal will be emitted when new plugins are added to the registry,
608
+ * when settings schema of an already present plugin changes, and when the
609
+ * settings state changes from default to modified or vice versa.
610
+ */
611
+ get changed(): ISignal<PluginList.Model, void> {
612
+ return this._changed;
613
+ }
614
+
615
+ /**
616
+ * Loads, sorts and filters plugins from the registry.
617
+ */
618
+ private _loadPlugins(): ISettingRegistry.IPlugin[] {
619
+ return this._sortPlugins(this._registry).filter(plugin => {
620
+ const { schema } = plugin;
621
+ const deprecated = schema['jupyter.lab.setting-deprecated'] === true;
622
+ const editable = Object.keys(schema.properties || {}).length > 0;
623
+ const extensible = schema.additionalProperties !== false;
624
+ const correctEditor = !this._toSkip.includes(plugin.id);
625
+
626
+ return !deprecated && correctEditor && (editable || extensible);
627
+ });
628
+ }
629
+
630
+ /**
631
+ * Loads settings and stores them for easy access when displaying search results.
632
+ */
633
+ private async _loadSettings(plugins: ISettingRegistry.IPlugin[]) {
634
+ for (const plugin of plugins) {
635
+ const pluginSettings = (await this._registry.load(
636
+ plugin.id
637
+ )) as Settings;
638
+ pluginSettings.changed.connect(() => {
639
+ if (pluginSettings.isModified !== this._settingsModified[plugin.id]) {
640
+ this._changed.emit();
641
+ this._settingsModified[plugin.id] = pluginSettings.isModified;
642
+ }
643
+ });
644
+ this._settings[plugin.id] = pluginSettings;
645
+ this._settingsModified[plugin.id] = pluginSettings.isModified;
646
+ }
647
+ }
648
+
649
+ private _sortPlugins(
650
+ registry: ISettingRegistry
651
+ ): ISettingRegistry.IPlugin[] {
652
+ return Object.keys(registry.plugins)
653
+ .map(plugin => registry.plugins[plugin]!)
654
+ .sort((a, b) => {
655
+ return (a.schema.title || a.id).localeCompare(b.schema.title || b.id);
656
+ });
657
+ }
658
+
659
+ private _plugins: ISettingRegistry.IPlugin[] = [];
660
+ private _changed: Signal<PluginList.Model, void> = new Signal(this);
661
+ private _ready = new PromiseDelegate<void>();
662
+ private _registry: ISettingRegistry;
663
+ private _settings: Record<string, Settings> = {};
664
+ private _settingsModified: Record<string, boolean> = {};
665
+ private _toSkip: string[];
666
+ }
667
+
668
+ /**
669
+ * A namespace for `PluginList.Model` statics.
670
+ */
671
+ export namespace Model {
672
+ /**
673
+ * The instantiation options for a plugin list model.
674
+ */
675
+ export interface IOptions {
676
+ /**
677
+ * The setting registry for the plugin list model.
678
+ */
679
+ registry: ISettingRegistry;
680
+
681
+ /**
682
+ * List of plugins to skip.
683
+ */
684
+ toSkip?: string[];
685
+ }
686
+ }
548
687
  }
@@ -5,10 +5,14 @@
5
5
 
6
6
  import { ILabStatus } from '@jupyterlab/application';
7
7
  import { showDialog } from '@jupyterlab/apputils';
8
- import { ISettingRegistry, Settings } from '@jupyterlab/settingregistry';
8
+ import { ISettingRegistry } from '@jupyterlab/settingregistry';
9
9
  import { IStateDB } from '@jupyterlab/statedb';
10
10
  import { ITranslator, nullTranslator } from '@jupyterlab/translation';
11
- import { IFormRendererRegistry, ReactWidget } from '@jupyterlab/ui-components';
11
+ import {
12
+ IFormRendererRegistry,
13
+ ReactWidget,
14
+ UseSignal
15
+ } from '@jupyterlab/ui-components';
12
16
  import { CommandRegistry } from '@lumino/commands';
13
17
  import { IDisposable } from '@lumino/disposable';
14
18
  import { Message } from '@lumino/messaging';
@@ -30,39 +34,28 @@ export class SettingsEditor extends SplitPanel {
30
34
  });
31
35
  this.translator = options.translator || nullTranslator;
32
36
  this._status = options.status;
33
- const list = (this._list = new PluginList({
37
+ this._listModel = new PluginList.Model({
38
+ registry: options.registry,
39
+ // Filters out a couple of plugins that take too long to load in the new settings editor.
40
+ toSkip: options.toSkip
41
+ });
42
+ this._list = new PluginList({
34
43
  registry: options.registry,
35
- toSkip: options.toSkip,
36
44
  translator: this.translator,
37
- query: options.query
38
- }));
39
- this.addWidget(list);
45
+ query: options.query,
46
+ model: this._listModel
47
+ });
48
+ this._listModel.changed.connect(() => {
49
+ this.update();
50
+ });
51
+ this.addWidget(this._list);
40
52
  this.setDirtyState = this.setDirtyState.bind(this);
41
53
 
42
- /**
43
- * Initializes the settings panel after loading the schema for all plugins.
44
- */
45
- void Promise.all(
46
- PluginList.sortPlugins(options.registry)
47
- .filter(plugin => {
48
- const { schema } = plugin;
49
- const deprecated = schema['jupyter.lab.setting-deprecated'] === true;
50
- const editable = Object.keys(schema.properties || {}).length > 0;
51
- const extensible = schema.additionalProperties !== false;
52
-
53
- return !deprecated && (editable || extensible);
54
- })
55
- .map(async plugin => await options.registry.load(plugin.id))
56
- )
57
- .then(settings => {
58
- const settingsPanel = ReactWidget.create(
54
+ const settingsPanel = ReactWidget.create(
55
+ <UseSignal signal={this._listModel.changed}>
56
+ {() => (
59
57
  <SettingsPanel
60
- settings={
61
- settings.filter(
62
- pluginSettings =>
63
- !(options.toSkip ?? []).includes(pluginSettings.id)
64
- ) as Settings[]
65
- }
58
+ settings={[...Object.values(this._listModel.settings)]}
66
59
  editorRegistry={options.editorRegistry}
67
60
  handleSelectSignal={this._list.handleSelectSignal}
68
61
  onSelect={(id: string) => (this._list.selection = id)}
@@ -72,11 +65,16 @@ export class SettingsEditor extends SplitPanel {
72
65
  translator={this.translator}
73
66
  initialFilter={this._list.filter}
74
67
  />
75
- );
68
+ )}
69
+ </UseSignal>
70
+ );
71
+ // Initializes the settings panel after loading the schema for all plugins.
72
+ this._listModel.ready
73
+ .then(() => {
76
74
  this.addWidget(settingsPanel);
77
75
  })
78
76
  .catch(reason => {
79
- console.error(`Fail to load the setting plugins:\n${reason}`);
77
+ console.error(`Failed to load the setting plugins:\n${reason}`);
80
78
  });
81
79
  }
82
80
 
@@ -152,6 +150,7 @@ export class SettingsEditor extends SplitPanel {
152
150
  private _status: ILabStatus;
153
151
  private _dirty: boolean = false;
154
152
  private _list: PluginList;
153
+ private _listModel: PluginList.Model;
155
154
  private _saveStateChange = new Signal<this, SettingsEditor.SaveState>(this);
156
155
  }
157
156