@jupyterlab/settingeditor-extension 4.0.0-alpha.2 → 4.0.0-alpha.20
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/index.d.ts +3 -6
- package/lib/index.js +148 -25
- package/lib/index.js.map +1 -1
- package/package.json +15 -14
- package/schema/form-ui.json +14 -0
- package/schema/plugin.json +2 -0
- package/src/index.ts +341 -0
package/lib/index.d.ts
CHANGED
|
@@ -3,9 +3,6 @@
|
|
|
3
3
|
* @module settingeditor-extension
|
|
4
4
|
*/
|
|
5
5
|
import { JupyterFrontEndPlugin } from '@jupyterlab/application';
|
|
6
|
-
import { ISettingEditorTracker } from '@jupyterlab/settingeditor';
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
*/
|
|
10
|
-
declare const plugin: JupyterFrontEndPlugin<ISettingEditorTracker>;
|
|
11
|
-
export default plugin;
|
|
6
|
+
import { IJSONSettingEditorTracker, ISettingEditorTracker } from '@jupyterlab/settingeditor/lib/tokens';
|
|
7
|
+
declare const _default: (JupyterFrontEndPlugin<ISettingEditorTracker> | JupyterFrontEndPlugin<IJSONSettingEditorTracker>)[];
|
|
8
|
+
export default _default;
|
package/lib/index.js
CHANGED
|
@@ -9,8 +9,9 @@
|
|
|
9
9
|
import { ILabStatus, ILayoutRestorer } from '@jupyterlab/application';
|
|
10
10
|
import { ICommandPalette, MainAreaWidget, WidgetTracker } from '@jupyterlab/apputils';
|
|
11
11
|
import { IEditorServices } from '@jupyterlab/codeeditor';
|
|
12
|
+
import { CommandToolbarButton, IFormRendererRegistry, launchIcon, Toolbar } from '@jupyterlab/ui-components';
|
|
12
13
|
import { IRenderMimeRegistry } from '@jupyterlab/rendermime';
|
|
13
|
-
import {
|
|
14
|
+
import { IJSONSettingEditorTracker, ISettingEditorTracker } from '@jupyterlab/settingeditor/lib/tokens';
|
|
14
15
|
import { ISettingRegistry } from '@jupyterlab/settingregistry';
|
|
15
16
|
import { IStateDB } from '@jupyterlab/statedb';
|
|
16
17
|
import { ITranslator } from '@jupyterlab/translation';
|
|
@@ -21,6 +22,7 @@ import { saveIcon, settingsIcon, undoIcon } from '@jupyterlab/ui-components';
|
|
|
21
22
|
var CommandIDs;
|
|
22
23
|
(function (CommandIDs) {
|
|
23
24
|
CommandIDs.open = 'settingeditor:open';
|
|
25
|
+
CommandIDs.openJSON = 'settingeditor:open-json';
|
|
24
26
|
CommandIDs.revert = 'settingeditor:revert';
|
|
25
27
|
CommandIDs.save = 'settingeditor:save';
|
|
26
28
|
})(CommandIDs || (CommandIDs = {}));
|
|
@@ -28,9 +30,120 @@ var CommandIDs;
|
|
|
28
30
|
* The default setting editor extension.
|
|
29
31
|
*/
|
|
30
32
|
const plugin = {
|
|
33
|
+
id: '@jupyterlab/settingeditor-extension:form-ui',
|
|
34
|
+
requires: [
|
|
35
|
+
ISettingRegistry,
|
|
36
|
+
IStateDB,
|
|
37
|
+
ITranslator,
|
|
38
|
+
IFormRendererRegistry,
|
|
39
|
+
ILabStatus
|
|
40
|
+
],
|
|
41
|
+
optional: [ILayoutRestorer, ICommandPalette, IJSONSettingEditorTracker],
|
|
42
|
+
autoStart: true,
|
|
43
|
+
provides: ISettingEditorTracker,
|
|
44
|
+
activate
|
|
45
|
+
};
|
|
46
|
+
/**
|
|
47
|
+
* Activate the setting editor extension.
|
|
48
|
+
*/
|
|
49
|
+
function activate(app, registry, state, translator, editorRegistry, status, restorer, palette, jsonEditor) {
|
|
50
|
+
const trans = translator.load('jupyterlab');
|
|
51
|
+
const { commands, shell } = app;
|
|
52
|
+
const namespace = 'setting-editor';
|
|
53
|
+
const tracker = new WidgetTracker({
|
|
54
|
+
namespace
|
|
55
|
+
});
|
|
56
|
+
// Handle state restoration.
|
|
57
|
+
if (restorer) {
|
|
58
|
+
void restorer.restore(tracker, {
|
|
59
|
+
command: CommandIDs.open,
|
|
60
|
+
args: widget => ({}),
|
|
61
|
+
name: widget => namespace
|
|
62
|
+
});
|
|
63
|
+
}
|
|
64
|
+
const openUi = async (args) => {
|
|
65
|
+
if (tracker.currentWidget && !tracker.currentWidget.isDisposed) {
|
|
66
|
+
if (!tracker.currentWidget.isAttached) {
|
|
67
|
+
shell.add(tracker.currentWidget, 'main', { type: 'Settings' });
|
|
68
|
+
}
|
|
69
|
+
shell.activateById(tracker.currentWidget.id);
|
|
70
|
+
return;
|
|
71
|
+
}
|
|
72
|
+
const key = plugin.id;
|
|
73
|
+
const { SettingsEditor } = await import('@jupyterlab/settingeditor');
|
|
74
|
+
const editor = new MainAreaWidget({
|
|
75
|
+
content: new SettingsEditor({
|
|
76
|
+
editorRegistry,
|
|
77
|
+
key,
|
|
78
|
+
registry,
|
|
79
|
+
state,
|
|
80
|
+
commands,
|
|
81
|
+
toSkip: [
|
|
82
|
+
'@jupyterlab/application-extension:context-menu',
|
|
83
|
+
'@jupyterlab/mainmenu-extension:plugin'
|
|
84
|
+
],
|
|
85
|
+
translator,
|
|
86
|
+
status,
|
|
87
|
+
query: args.query
|
|
88
|
+
})
|
|
89
|
+
});
|
|
90
|
+
if (jsonEditor) {
|
|
91
|
+
editor.toolbar.addItem('spacer', Toolbar.createSpacerItem());
|
|
92
|
+
editor.toolbar.addItem('open-json-editor', new CommandToolbarButton({
|
|
93
|
+
commands,
|
|
94
|
+
id: CommandIDs.openJSON,
|
|
95
|
+
icon: launchIcon,
|
|
96
|
+
label: trans.__('JSON Settings Editor')
|
|
97
|
+
}));
|
|
98
|
+
}
|
|
99
|
+
editor.id = namespace;
|
|
100
|
+
editor.title.icon = settingsIcon;
|
|
101
|
+
editor.title.label = trans.__('Settings');
|
|
102
|
+
editor.title.closable = true;
|
|
103
|
+
void tracker.add(editor);
|
|
104
|
+
shell.add(editor, 'main', { type: 'Settings' });
|
|
105
|
+
};
|
|
106
|
+
commands.addCommand(CommandIDs.open, {
|
|
107
|
+
execute: async (args) => {
|
|
108
|
+
var _a;
|
|
109
|
+
if (args.settingEditorType === 'ui') {
|
|
110
|
+
void commands.execute(CommandIDs.open, { query: (_a = args.query) !== null && _a !== void 0 ? _a : '' });
|
|
111
|
+
}
|
|
112
|
+
else if (args.settingEditorType === 'json') {
|
|
113
|
+
void commands.execute(CommandIDs.openJSON);
|
|
114
|
+
}
|
|
115
|
+
else {
|
|
116
|
+
void registry.load(plugin.id).then(settings => {
|
|
117
|
+
var _a;
|
|
118
|
+
settings.get('settingEditorType').composite ===
|
|
119
|
+
'json'
|
|
120
|
+
? void commands.execute(CommandIDs.openJSON)
|
|
121
|
+
: void openUi({ query: (_a = args.query) !== null && _a !== void 0 ? _a : '' });
|
|
122
|
+
});
|
|
123
|
+
}
|
|
124
|
+
},
|
|
125
|
+
label: args => {
|
|
126
|
+
if (args.label) {
|
|
127
|
+
return args.label;
|
|
128
|
+
}
|
|
129
|
+
return trans.__('Settings Editor');
|
|
130
|
+
}
|
|
131
|
+
});
|
|
132
|
+
if (palette) {
|
|
133
|
+
palette.addItem({
|
|
134
|
+
category: trans.__('Settings'),
|
|
135
|
+
command: CommandIDs.open,
|
|
136
|
+
args: { settingEditorType: 'ui' }
|
|
137
|
+
});
|
|
138
|
+
}
|
|
139
|
+
return tracker;
|
|
140
|
+
}
|
|
141
|
+
/**
|
|
142
|
+
* The default setting editor extension.
|
|
143
|
+
*/
|
|
144
|
+
const jsonPlugin = {
|
|
31
145
|
id: '@jupyterlab/settingeditor-extension:plugin',
|
|
32
146
|
requires: [
|
|
33
|
-
ILayoutRestorer,
|
|
34
147
|
ISettingRegistry,
|
|
35
148
|
IEditorServices,
|
|
36
149
|
IStateDB,
|
|
@@ -38,39 +151,46 @@ const plugin = {
|
|
|
38
151
|
ILabStatus,
|
|
39
152
|
ITranslator
|
|
40
153
|
],
|
|
41
|
-
optional: [ICommandPalette],
|
|
154
|
+
optional: [ILayoutRestorer, ICommandPalette],
|
|
42
155
|
autoStart: true,
|
|
43
|
-
provides:
|
|
44
|
-
activate
|
|
156
|
+
provides: IJSONSettingEditorTracker,
|
|
157
|
+
activate: activateJSON
|
|
45
158
|
};
|
|
46
159
|
/**
|
|
47
160
|
* Activate the setting editor extension.
|
|
48
161
|
*/
|
|
49
|
-
function
|
|
162
|
+
function activateJSON(app, registry, editorServices, state, rendermime, status, translator, restorer, palette) {
|
|
50
163
|
const trans = translator.load('jupyterlab');
|
|
51
164
|
const { commands, shell } = app;
|
|
52
|
-
const namespace = 'setting-editor';
|
|
165
|
+
const namespace = 'json-setting-editor';
|
|
53
166
|
const factoryService = editorServices.factoryService;
|
|
54
167
|
const editorFactory = factoryService.newInlineEditor;
|
|
55
168
|
const tracker = new WidgetTracker({
|
|
56
169
|
namespace
|
|
57
170
|
});
|
|
58
|
-
let editor;
|
|
59
171
|
// Handle state restoration.
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
172
|
+
if (restorer) {
|
|
173
|
+
void restorer.restore(tracker, {
|
|
174
|
+
command: CommandIDs.openJSON,
|
|
175
|
+
args: widget => ({}),
|
|
176
|
+
name: widget => namespace
|
|
177
|
+
});
|
|
178
|
+
}
|
|
179
|
+
commands.addCommand(CommandIDs.openJSON, {
|
|
180
|
+
execute: async () => {
|
|
181
|
+
if (tracker.currentWidget && !tracker.currentWidget.isDisposed) {
|
|
182
|
+
if (!tracker.currentWidget.isAttached) {
|
|
183
|
+
shell.add(tracker.currentWidget, 'main', {
|
|
184
|
+
type: 'Advanced Settings'
|
|
185
|
+
});
|
|
186
|
+
}
|
|
68
187
|
shell.activateById(tracker.currentWidget.id);
|
|
69
188
|
return;
|
|
70
189
|
}
|
|
71
190
|
const key = plugin.id;
|
|
72
191
|
const when = app.restored;
|
|
73
|
-
|
|
192
|
+
const { JsonSettingEditor } = await import('@jupyterlab/settingeditor');
|
|
193
|
+
const editor = new JsonSettingEditor({
|
|
74
194
|
commands: {
|
|
75
195
|
registry: commands,
|
|
76
196
|
revert: CommandIDs.revert,
|
|
@@ -107,19 +227,22 @@ function activate(app, restorer, registry, editorServices, state, rendermime, st
|
|
|
107
227
|
}
|
|
108
228
|
});
|
|
109
229
|
});
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
230
|
+
const container = new MainAreaWidget({
|
|
231
|
+
content: editor
|
|
232
|
+
});
|
|
233
|
+
container.id = namespace;
|
|
234
|
+
container.title.icon = settingsIcon;
|
|
235
|
+
container.title.label = trans.__('Advanced Settings Editor');
|
|
236
|
+
container.title.closable = true;
|
|
237
|
+
void tracker.add(container);
|
|
238
|
+
shell.add(container, 'main', { type: 'Advanced Settings' });
|
|
116
239
|
},
|
|
117
240
|
label: trans.__('Advanced Settings Editor')
|
|
118
241
|
});
|
|
119
242
|
if (palette) {
|
|
120
243
|
palette.addItem({
|
|
121
244
|
category: trans.__('Settings'),
|
|
122
|
-
command: CommandIDs.
|
|
245
|
+
command: CommandIDs.openJSON
|
|
123
246
|
});
|
|
124
247
|
}
|
|
125
248
|
commands.addCommand(CommandIDs.revert, {
|
|
@@ -139,5 +262,5 @@ function activate(app, restorer, registry, editorServices, state, rendermime, st
|
|
|
139
262
|
});
|
|
140
263
|
return tracker;
|
|
141
264
|
}
|
|
142
|
-
export default plugin;
|
|
265
|
+
export default [plugin, jsonPlugin];
|
|
143
266
|
//# sourceMappingURL=index.js.map
|
package/lib/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;+EAG+E;AAC/E;;;GAGG;AAEH,OAAO,EACL,UAAU,EACV,eAAe,EAGhB,MAAM,yBAAyB,CAAC;AACjC,OAAO,EACL,eAAe,EACf,cAAc,EACd,aAAa,EACd,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAC7D,OAAO,EACL,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@jupyterlab/settingeditor-extension",
|
|
3
|
-
"version": "4.0.0-alpha.
|
|
3
|
+
"version": "4.0.0-alpha.20",
|
|
4
4
|
"description": "JupyterLab - Setting Editor Extension",
|
|
5
5
|
"homepage": "https://github.com/jupyterlab/jupyterlab",
|
|
6
6
|
"bugs": {
|
|
@@ -28,7 +28,8 @@
|
|
|
28
28
|
"lib/*.js",
|
|
29
29
|
"schema/*.json",
|
|
30
30
|
"style/**/*.css",
|
|
31
|
-
"style/index.js"
|
|
31
|
+
"style/index.js",
|
|
32
|
+
"src/**/*.{ts,tsx}"
|
|
32
33
|
],
|
|
33
34
|
"scripts": {
|
|
34
35
|
"build": "tsc -b",
|
|
@@ -37,21 +38,21 @@
|
|
|
37
38
|
"watch": "tsc -b --watch"
|
|
38
39
|
},
|
|
39
40
|
"dependencies": {
|
|
40
|
-
"@jupyterlab/application": "^4.0.0-alpha.
|
|
41
|
-
"@jupyterlab/apputils": "^4.0.0-alpha.
|
|
42
|
-
"@jupyterlab/codeeditor": "^4.0.0-alpha.
|
|
43
|
-
"@jupyterlab/rendermime": "^4.0.0-alpha.
|
|
44
|
-
"@jupyterlab/settingeditor": "^4.0.0-alpha.
|
|
45
|
-
"@jupyterlab/settingregistry": "^4.0.0-alpha.
|
|
46
|
-
"@jupyterlab/statedb": "^4.0.0-alpha.
|
|
47
|
-
"@jupyterlab/translation": "^4.0.0-alpha.
|
|
48
|
-
"@jupyterlab/ui-components": "^4.0.0-alpha.
|
|
49
|
-
"@lumino/disposable": "^
|
|
41
|
+
"@jupyterlab/application": "^4.0.0-alpha.20",
|
|
42
|
+
"@jupyterlab/apputils": "^4.0.0-alpha.20",
|
|
43
|
+
"@jupyterlab/codeeditor": "^4.0.0-alpha.20",
|
|
44
|
+
"@jupyterlab/rendermime": "^4.0.0-alpha.20",
|
|
45
|
+
"@jupyterlab/settingeditor": "^4.0.0-alpha.20",
|
|
46
|
+
"@jupyterlab/settingregistry": "^4.0.0-alpha.20",
|
|
47
|
+
"@jupyterlab/statedb": "^4.0.0-alpha.20",
|
|
48
|
+
"@jupyterlab/translation": "^4.0.0-alpha.20",
|
|
49
|
+
"@jupyterlab/ui-components": "^4.0.0-alpha.35",
|
|
50
|
+
"@lumino/disposable": "^2.0.0-rc.0"
|
|
50
51
|
},
|
|
51
52
|
"devDependencies": {
|
|
52
53
|
"rimraf": "~3.0.0",
|
|
53
|
-
"typedoc": "~0.
|
|
54
|
-
"typescript": "~
|
|
54
|
+
"typedoc": "~0.23.25",
|
|
55
|
+
"typescript": "~5.0.0-beta"
|
|
55
56
|
},
|
|
56
57
|
"publishConfig": {
|
|
57
58
|
"access": "public"
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
{
|
|
2
|
+
"title": "Settings Editor Form UI",
|
|
3
|
+
"description": "Settings editor form ui settings.",
|
|
4
|
+
"properties": {
|
|
5
|
+
"settingEditorType": {
|
|
6
|
+
"title": "Type of editor for the setting.",
|
|
7
|
+
"description": "Set the type of editor to use while editing your settings.",
|
|
8
|
+
"enum": ["json", "ui"],
|
|
9
|
+
"default": "ui"
|
|
10
|
+
}
|
|
11
|
+
},
|
|
12
|
+
"additionalProperties": false,
|
|
13
|
+
"type": "object"
|
|
14
|
+
}
|
package/schema/plugin.json
CHANGED
|
@@ -4,11 +4,13 @@
|
|
|
4
4
|
"jupyter.lab.shortcuts": [
|
|
5
5
|
{
|
|
6
6
|
"command": "settingeditor:open",
|
|
7
|
+
"args": {},
|
|
7
8
|
"keys": ["Accel ,"],
|
|
8
9
|
"selector": "body"
|
|
9
10
|
},
|
|
10
11
|
{
|
|
11
12
|
"command": "settingeditor:save",
|
|
13
|
+
"args": {},
|
|
12
14
|
"keys": ["Accel S"],
|
|
13
15
|
"selector": ".jp-SettingEditor"
|
|
14
16
|
}
|
package/src/index.ts
ADDED
|
@@ -0,0 +1,341 @@
|
|
|
1
|
+
/* -----------------------------------------------------------------------------
|
|
2
|
+
| Copyright (c) Jupyter Development Team.
|
|
3
|
+
| Distributed under the terms of the Modified BSD License.
|
|
4
|
+
|----------------------------------------------------------------------------*/
|
|
5
|
+
/**
|
|
6
|
+
* @packageDocumentation
|
|
7
|
+
* @module settingeditor-extension
|
|
8
|
+
*/
|
|
9
|
+
|
|
10
|
+
import {
|
|
11
|
+
ILabStatus,
|
|
12
|
+
ILayoutRestorer,
|
|
13
|
+
JupyterFrontEnd,
|
|
14
|
+
JupyterFrontEndPlugin
|
|
15
|
+
} from '@jupyterlab/application';
|
|
16
|
+
import {
|
|
17
|
+
ICommandPalette,
|
|
18
|
+
MainAreaWidget,
|
|
19
|
+
WidgetTracker
|
|
20
|
+
} from '@jupyterlab/apputils';
|
|
21
|
+
import { IEditorServices } from '@jupyterlab/codeeditor';
|
|
22
|
+
import {
|
|
23
|
+
CommandToolbarButton,
|
|
24
|
+
IFormRendererRegistry,
|
|
25
|
+
launchIcon,
|
|
26
|
+
Toolbar
|
|
27
|
+
} from '@jupyterlab/ui-components';
|
|
28
|
+
import { IRenderMimeRegistry } from '@jupyterlab/rendermime';
|
|
29
|
+
import {
|
|
30
|
+
IJSONSettingEditorTracker,
|
|
31
|
+
ISettingEditorTracker
|
|
32
|
+
} from '@jupyterlab/settingeditor/lib/tokens';
|
|
33
|
+
import type {
|
|
34
|
+
JsonSettingEditor,
|
|
35
|
+
SettingsEditor
|
|
36
|
+
} from '@jupyterlab/settingeditor';
|
|
37
|
+
import { ISettingRegistry } from '@jupyterlab/settingregistry';
|
|
38
|
+
import { IStateDB } from '@jupyterlab/statedb';
|
|
39
|
+
import { ITranslator } from '@jupyterlab/translation';
|
|
40
|
+
import { saveIcon, settingsIcon, undoIcon } from '@jupyterlab/ui-components';
|
|
41
|
+
import { IDisposable } from '@lumino/disposable';
|
|
42
|
+
|
|
43
|
+
/**
|
|
44
|
+
* The command IDs used by the setting editor.
|
|
45
|
+
*/
|
|
46
|
+
namespace CommandIDs {
|
|
47
|
+
export const open = 'settingeditor:open';
|
|
48
|
+
|
|
49
|
+
export const openJSON = 'settingeditor:open-json';
|
|
50
|
+
|
|
51
|
+
export const revert = 'settingeditor:revert';
|
|
52
|
+
|
|
53
|
+
export const save = 'settingeditor:save';
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
type SettingEditorType = 'ui' | 'json';
|
|
57
|
+
|
|
58
|
+
/**
|
|
59
|
+
* The default setting editor extension.
|
|
60
|
+
*/
|
|
61
|
+
const plugin: JupyterFrontEndPlugin<ISettingEditorTracker> = {
|
|
62
|
+
id: '@jupyterlab/settingeditor-extension:form-ui',
|
|
63
|
+
requires: [
|
|
64
|
+
ISettingRegistry,
|
|
65
|
+
IStateDB,
|
|
66
|
+
ITranslator,
|
|
67
|
+
IFormRendererRegistry,
|
|
68
|
+
ILabStatus
|
|
69
|
+
],
|
|
70
|
+
optional: [ILayoutRestorer, ICommandPalette, IJSONSettingEditorTracker],
|
|
71
|
+
autoStart: true,
|
|
72
|
+
provides: ISettingEditorTracker,
|
|
73
|
+
activate
|
|
74
|
+
};
|
|
75
|
+
|
|
76
|
+
/**
|
|
77
|
+
* Activate the setting editor extension.
|
|
78
|
+
*/
|
|
79
|
+
function activate(
|
|
80
|
+
app: JupyterFrontEnd,
|
|
81
|
+
registry: ISettingRegistry,
|
|
82
|
+
state: IStateDB,
|
|
83
|
+
translator: ITranslator,
|
|
84
|
+
editorRegistry: IFormRendererRegistry,
|
|
85
|
+
status: ILabStatus,
|
|
86
|
+
restorer: ILayoutRestorer | null,
|
|
87
|
+
palette: ICommandPalette | null,
|
|
88
|
+
jsonEditor: IJSONSettingEditorTracker | null
|
|
89
|
+
): ISettingEditorTracker {
|
|
90
|
+
const trans = translator.load('jupyterlab');
|
|
91
|
+
const { commands, shell } = app;
|
|
92
|
+
const namespace = 'setting-editor';
|
|
93
|
+
const tracker = new WidgetTracker<MainAreaWidget<SettingsEditor>>({
|
|
94
|
+
namespace
|
|
95
|
+
});
|
|
96
|
+
|
|
97
|
+
// Handle state restoration.
|
|
98
|
+
if (restorer) {
|
|
99
|
+
void restorer.restore(tracker, {
|
|
100
|
+
command: CommandIDs.open,
|
|
101
|
+
args: widget => ({}),
|
|
102
|
+
name: widget => namespace
|
|
103
|
+
});
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
const openUi = async (args: { query: string }) => {
|
|
107
|
+
if (tracker.currentWidget && !tracker.currentWidget.isDisposed) {
|
|
108
|
+
if (!tracker.currentWidget.isAttached) {
|
|
109
|
+
shell.add(tracker.currentWidget, 'main', { type: 'Settings' });
|
|
110
|
+
}
|
|
111
|
+
shell.activateById(tracker.currentWidget.id);
|
|
112
|
+
return;
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
const key = plugin.id;
|
|
116
|
+
|
|
117
|
+
const { SettingsEditor } = await import('@jupyterlab/settingeditor');
|
|
118
|
+
|
|
119
|
+
const editor = new MainAreaWidget<SettingsEditor>({
|
|
120
|
+
content: new SettingsEditor({
|
|
121
|
+
editorRegistry,
|
|
122
|
+
key,
|
|
123
|
+
registry,
|
|
124
|
+
state,
|
|
125
|
+
commands,
|
|
126
|
+
toSkip: [
|
|
127
|
+
'@jupyterlab/application-extension:context-menu',
|
|
128
|
+
'@jupyterlab/mainmenu-extension:plugin'
|
|
129
|
+
],
|
|
130
|
+
translator,
|
|
131
|
+
status,
|
|
132
|
+
query: args.query as string
|
|
133
|
+
})
|
|
134
|
+
});
|
|
135
|
+
|
|
136
|
+
if (jsonEditor) {
|
|
137
|
+
editor.toolbar.addItem('spacer', Toolbar.createSpacerItem());
|
|
138
|
+
editor.toolbar.addItem(
|
|
139
|
+
'open-json-editor',
|
|
140
|
+
new CommandToolbarButton({
|
|
141
|
+
commands,
|
|
142
|
+
id: CommandIDs.openJSON,
|
|
143
|
+
icon: launchIcon,
|
|
144
|
+
label: trans.__('JSON Settings Editor')
|
|
145
|
+
})
|
|
146
|
+
);
|
|
147
|
+
}
|
|
148
|
+
|
|
149
|
+
editor.id = namespace;
|
|
150
|
+
editor.title.icon = settingsIcon;
|
|
151
|
+
editor.title.label = trans.__('Settings');
|
|
152
|
+
editor.title.closable = true;
|
|
153
|
+
|
|
154
|
+
void tracker.add(editor);
|
|
155
|
+
shell.add(editor, 'main', { type: 'Settings' });
|
|
156
|
+
};
|
|
157
|
+
|
|
158
|
+
commands.addCommand(CommandIDs.open, {
|
|
159
|
+
execute: async (args: {
|
|
160
|
+
query?: string;
|
|
161
|
+
settingEditorType?: SettingEditorType;
|
|
162
|
+
}) => {
|
|
163
|
+
if (args.settingEditorType === 'ui') {
|
|
164
|
+
void commands.execute(CommandIDs.open, { query: args.query ?? '' });
|
|
165
|
+
} else if (args.settingEditorType === 'json') {
|
|
166
|
+
void commands.execute(CommandIDs.openJSON);
|
|
167
|
+
} else {
|
|
168
|
+
void registry.load(plugin.id).then(settings => {
|
|
169
|
+
(settings.get('settingEditorType').composite as SettingEditorType) ===
|
|
170
|
+
'json'
|
|
171
|
+
? void commands.execute(CommandIDs.openJSON)
|
|
172
|
+
: void openUi({ query: args.query ?? '' });
|
|
173
|
+
});
|
|
174
|
+
}
|
|
175
|
+
},
|
|
176
|
+
label: args => {
|
|
177
|
+
if (args.label) {
|
|
178
|
+
return args.label as string;
|
|
179
|
+
}
|
|
180
|
+
return trans.__('Settings Editor');
|
|
181
|
+
}
|
|
182
|
+
});
|
|
183
|
+
|
|
184
|
+
if (palette) {
|
|
185
|
+
palette.addItem({
|
|
186
|
+
category: trans.__('Settings'),
|
|
187
|
+
command: CommandIDs.open,
|
|
188
|
+
args: { settingEditorType: 'ui' }
|
|
189
|
+
});
|
|
190
|
+
}
|
|
191
|
+
|
|
192
|
+
return tracker;
|
|
193
|
+
}
|
|
194
|
+
|
|
195
|
+
/**
|
|
196
|
+
* The default setting editor extension.
|
|
197
|
+
*/
|
|
198
|
+
const jsonPlugin: JupyterFrontEndPlugin<IJSONSettingEditorTracker> = {
|
|
199
|
+
id: '@jupyterlab/settingeditor-extension:plugin',
|
|
200
|
+
requires: [
|
|
201
|
+
ISettingRegistry,
|
|
202
|
+
IEditorServices,
|
|
203
|
+
IStateDB,
|
|
204
|
+
IRenderMimeRegistry,
|
|
205
|
+
ILabStatus,
|
|
206
|
+
ITranslator
|
|
207
|
+
],
|
|
208
|
+
optional: [ILayoutRestorer, ICommandPalette],
|
|
209
|
+
autoStart: true,
|
|
210
|
+
provides: IJSONSettingEditorTracker,
|
|
211
|
+
activate: activateJSON
|
|
212
|
+
};
|
|
213
|
+
|
|
214
|
+
/**
|
|
215
|
+
* Activate the setting editor extension.
|
|
216
|
+
*/
|
|
217
|
+
function activateJSON(
|
|
218
|
+
app: JupyterFrontEnd,
|
|
219
|
+
registry: ISettingRegistry,
|
|
220
|
+
editorServices: IEditorServices,
|
|
221
|
+
state: IStateDB,
|
|
222
|
+
rendermime: IRenderMimeRegistry,
|
|
223
|
+
status: ILabStatus,
|
|
224
|
+
translator: ITranslator,
|
|
225
|
+
restorer: ILayoutRestorer | null,
|
|
226
|
+
palette: ICommandPalette | null
|
|
227
|
+
): IJSONSettingEditorTracker {
|
|
228
|
+
const trans = translator.load('jupyterlab');
|
|
229
|
+
const { commands, shell } = app;
|
|
230
|
+
const namespace = 'json-setting-editor';
|
|
231
|
+
const factoryService = editorServices.factoryService;
|
|
232
|
+
const editorFactory = factoryService.newInlineEditor;
|
|
233
|
+
const tracker = new WidgetTracker<MainAreaWidget<JsonSettingEditor>>({
|
|
234
|
+
namespace
|
|
235
|
+
});
|
|
236
|
+
|
|
237
|
+
// Handle state restoration.
|
|
238
|
+
if (restorer) {
|
|
239
|
+
void restorer.restore(tracker, {
|
|
240
|
+
command: CommandIDs.openJSON,
|
|
241
|
+
args: widget => ({}),
|
|
242
|
+
name: widget => namespace
|
|
243
|
+
});
|
|
244
|
+
}
|
|
245
|
+
|
|
246
|
+
commands.addCommand(CommandIDs.openJSON, {
|
|
247
|
+
execute: async () => {
|
|
248
|
+
if (tracker.currentWidget && !tracker.currentWidget.isDisposed) {
|
|
249
|
+
if (!tracker.currentWidget.isAttached) {
|
|
250
|
+
shell.add(tracker.currentWidget, 'main', {
|
|
251
|
+
type: 'Advanced Settings'
|
|
252
|
+
});
|
|
253
|
+
}
|
|
254
|
+
shell.activateById(tracker.currentWidget.id);
|
|
255
|
+
return;
|
|
256
|
+
}
|
|
257
|
+
|
|
258
|
+
const key = plugin.id;
|
|
259
|
+
const when = app.restored;
|
|
260
|
+
|
|
261
|
+
const { JsonSettingEditor } = await import('@jupyterlab/settingeditor');
|
|
262
|
+
|
|
263
|
+
const editor = new JsonSettingEditor({
|
|
264
|
+
commands: {
|
|
265
|
+
registry: commands,
|
|
266
|
+
revert: CommandIDs.revert,
|
|
267
|
+
save: CommandIDs.save
|
|
268
|
+
},
|
|
269
|
+
editorFactory,
|
|
270
|
+
key,
|
|
271
|
+
registry,
|
|
272
|
+
rendermime,
|
|
273
|
+
state,
|
|
274
|
+
translator,
|
|
275
|
+
when
|
|
276
|
+
});
|
|
277
|
+
|
|
278
|
+
let disposable: IDisposable | null = null;
|
|
279
|
+
// Notify the command registry when the visibility status of the setting
|
|
280
|
+
// editor's commands change. The setting editor toolbar listens for this
|
|
281
|
+
// signal from the command registry.
|
|
282
|
+
editor.commandsChanged.connect((sender: any, args: string[]) => {
|
|
283
|
+
args.forEach(id => {
|
|
284
|
+
commands.notifyCommandChanged(id);
|
|
285
|
+
});
|
|
286
|
+
if (editor.canSaveRaw) {
|
|
287
|
+
if (!disposable) {
|
|
288
|
+
disposable = status.setDirty();
|
|
289
|
+
}
|
|
290
|
+
} else if (disposable) {
|
|
291
|
+
disposable.dispose();
|
|
292
|
+
disposable = null;
|
|
293
|
+
}
|
|
294
|
+
editor.disposed.connect(() => {
|
|
295
|
+
if (disposable) {
|
|
296
|
+
disposable.dispose();
|
|
297
|
+
}
|
|
298
|
+
});
|
|
299
|
+
});
|
|
300
|
+
|
|
301
|
+
const container = new MainAreaWidget<JsonSettingEditor>({
|
|
302
|
+
content: editor
|
|
303
|
+
});
|
|
304
|
+
|
|
305
|
+
container.id = namespace;
|
|
306
|
+
container.title.icon = settingsIcon;
|
|
307
|
+
container.title.label = trans.__('Advanced Settings Editor');
|
|
308
|
+
container.title.closable = true;
|
|
309
|
+
|
|
310
|
+
void tracker.add(container);
|
|
311
|
+
shell.add(container, 'main', { type: 'Advanced Settings' });
|
|
312
|
+
},
|
|
313
|
+
label: trans.__('Advanced Settings Editor')
|
|
314
|
+
});
|
|
315
|
+
if (palette) {
|
|
316
|
+
palette.addItem({
|
|
317
|
+
category: trans.__('Settings'),
|
|
318
|
+
command: CommandIDs.openJSON
|
|
319
|
+
});
|
|
320
|
+
}
|
|
321
|
+
|
|
322
|
+
commands.addCommand(CommandIDs.revert, {
|
|
323
|
+
execute: () => {
|
|
324
|
+
tracker.currentWidget?.content.revert();
|
|
325
|
+
},
|
|
326
|
+
icon: undoIcon,
|
|
327
|
+
label: trans.__('Revert User Settings'),
|
|
328
|
+
isEnabled: () => tracker.currentWidget?.content.canRevertRaw ?? false
|
|
329
|
+
});
|
|
330
|
+
|
|
331
|
+
commands.addCommand(CommandIDs.save, {
|
|
332
|
+
execute: () => tracker.currentWidget?.content.save(),
|
|
333
|
+
icon: saveIcon,
|
|
334
|
+
label: trans.__('Save User Settings'),
|
|
335
|
+
isEnabled: () => tracker.currentWidget?.content.canSaveRaw ?? false
|
|
336
|
+
});
|
|
337
|
+
|
|
338
|
+
return tracker;
|
|
339
|
+
}
|
|
340
|
+
|
|
341
|
+
export default [plugin, jsonPlugin];
|