@jupyterlab/settingeditor 4.3.0-alpha.0 → 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.
- package/lib/pluginlist.d.ts +82 -4
- package/lib/pluginlist.js +136 -37
- package/lib/pluginlist.js.map +1 -1
- package/lib/settingseditor.d.ts +1 -0
- package/lib/settingseditor.js +19 -21
- package/lib/settingseditor.js.map +1 -1
- package/package.json +11 -11
- package/src/pluginlist.tsx +181 -42
- package/src/settingseditor.tsx +31 -32
package/lib/pluginlist.d.ts
CHANGED
|
@@ -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.
|
|
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
|
-
|
|
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 = (
|
|
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.
|
|
303
|
-
const iconClass = this.getHint(ICON_CLASS_KEY, this.
|
|
304
|
-
const iconTitle = this.getHint(ICON_LABEL_KEY, this.
|
|
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.
|
|
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.
|
|
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
|
package/lib/pluginlist.js.map
CHANGED
|
@@ -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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"}
|
package/lib/settingseditor.d.ts
CHANGED
package/lib/settingseditor.js
CHANGED
|
@@ -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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
38
|
-
|
|
39
|
-
|
|
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(`
|
|
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":"AAAA;;;GAGG;AAGH,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAGlD,OAAO,EAAe,cAAc,EAAE,MAAM,yBAAyB,CAAC;AACtE,OAAO,
|
|
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.
|
|
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.
|
|
45
|
-
"@jupyterlab/apputils": "^4.4.0-alpha.
|
|
46
|
-
"@jupyterlab/codeeditor": "^4.3.0-alpha.
|
|
47
|
-
"@jupyterlab/inspector": "^4.3.0-alpha.
|
|
48
|
-
"@jupyterlab/rendermime": "^4.3.0-alpha.
|
|
49
|
-
"@jupyterlab/settingregistry": "^4.3.0-alpha.
|
|
50
|
-
"@jupyterlab/statedb": "^4.3.0-alpha.
|
|
51
|
-
"@jupyterlab/translation": "^4.3.0-alpha.
|
|
52
|
-
"@jupyterlab/ui-components": "^4.3.0-alpha.
|
|
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.
|
|
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",
|
package/src/pluginlist.tsx
CHANGED
|
@@ -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.
|
|
58
|
-
|
|
59
|
-
|
|
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.
|
|
379
|
-
const iconClass = this.getHint(ICON_CLASS_KEY, this.
|
|
380
|
-
const iconTitle = this.getHint(ICON_LABEL_KEY, this.
|
|
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.
|
|
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.
|
|
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
|
}
|
package/src/settingseditor.tsx
CHANGED
|
@@ -5,10 +5,14 @@
|
|
|
5
5
|
|
|
6
6
|
import { ILabStatus } from '@jupyterlab/application';
|
|
7
7
|
import { showDialog } from '@jupyterlab/apputils';
|
|
8
|
-
import { ISettingRegistry
|
|
8
|
+
import { ISettingRegistry } from '@jupyterlab/settingregistry';
|
|
9
9
|
import { IStateDB } from '@jupyterlab/statedb';
|
|
10
10
|
import { ITranslator, nullTranslator } from '@jupyterlab/translation';
|
|
11
|
-
import {
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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(`
|
|
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
|
|