@jupyterlab/settingeditor-extension 4.0.0-alpha.8 → 4.0.0-beta.0

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 CHANGED
@@ -2,7 +2,7 @@
2
2
  * @packageDocumentation
3
3
  * @module settingeditor-extension
4
4
  */
5
- import { JupyterFrontEnd, JupyterFrontEndPlugin } from '@jupyterlab/application';
6
- import { IJSONSettingEditorTracker, ISettingEditorTracker } from '@jupyterlab/settingeditor';
7
- declare const _default: (JupyterFrontEndPlugin<ISettingEditorTracker, JupyterFrontEnd.IShell, "desktop" | "mobile"> | JupyterFrontEndPlugin<IJSONSettingEditorTracker, JupyterFrontEnd.IShell, "desktop" | "mobile">)[];
5
+ import { JupyterFrontEndPlugin } from '@jupyterlab/application';
6
+ import { IJSONSettingEditorTracker, ISettingEditorTracker } from '@jupyterlab/settingeditor/lib/tokens';
7
+ declare const _default: (JupyterFrontEndPlugin<ISettingEditorTracker> | JupyterFrontEndPlugin<IJSONSettingEditorTracker>)[];
8
8
  export default _default;
package/lib/index.js CHANGED
@@ -9,9 +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, IFormComponentRegistry, launchIcon, Toolbar } from '@jupyterlab/ui-components';
12
+ import { CommandToolbarButton, IFormRendererRegistry, launchIcon, Toolbar } from '@jupyterlab/ui-components';
13
13
  import { IRenderMimeRegistry } from '@jupyterlab/rendermime';
14
- import { IJSONSettingEditorTracker, ISettingEditorTracker, JsonSettingEditor, SettingsEditor } from '@jupyterlab/settingeditor';
14
+ import { IJSONSettingEditorTracker, ISettingEditorTracker } from '@jupyterlab/settingeditor/lib/tokens';
15
15
  import { ISettingRegistry } from '@jupyterlab/settingregistry';
16
16
  import { IStateDB } from '@jupyterlab/statedb';
17
17
  import { ITranslator } from '@jupyterlab/translation';
@@ -35,7 +35,7 @@ const plugin = {
35
35
  ISettingRegistry,
36
36
  IStateDB,
37
37
  ITranslator,
38
- IFormComponentRegistry,
38
+ IFormRendererRegistry,
39
39
  ILabStatus
40
40
  ],
41
41
  optional: [ILayoutRestorer, ICommandPalette, IJSONSettingEditorTracker],
@@ -61,52 +61,81 @@ function activate(app, registry, state, translator, editorRegistry, status, rest
61
61
  name: widget => namespace
62
62
  });
63
63
  }
64
- if (palette) {
65
- palette.addItem({
66
- category: trans.__('Settings'),
67
- command: CommandIDs.open
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
+ })
68
89
  });
69
- }
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
+ };
70
106
  commands.addCommand(CommandIDs.open, {
71
- execute: () => {
72
- if (tracker.currentWidget) {
73
- shell.activateById(tracker.currentWidget.id);
74
- return;
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 : '' });
75
111
  }
76
- const key = plugin.id;
77
- const editor = new MainAreaWidget({
78
- content: new SettingsEditor({
79
- editorRegistry,
80
- key,
81
- registry,
82
- state,
83
- commands,
84
- toSkip: [
85
- '@jupyterlab/application-extension:context-menu',
86
- '@jupyterlab/mainmenu-extension:plugin'
87
- ],
88
- translator,
89
- status
90
- })
91
- });
92
- if (jsonEditor) {
93
- editor.toolbar.addItem('spacer', Toolbar.createSpacerItem());
94
- editor.toolbar.addItem('open-json-editor', new CommandToolbarButton({
95
- commands,
96
- id: CommandIDs.openJSON,
97
- icon: launchIcon,
98
- label: trans.__('JSON Settings Editor')
99
- }));
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
+ });
100
123
  }
101
- editor.id = namespace;
102
- editor.title.icon = settingsIcon;
103
- editor.title.label = trans.__('Settings');
104
- editor.title.closable = true;
105
- void tracker.add(editor);
106
- shell.add(editor);
107
124
  },
108
- label: trans.__('Settings Editor')
125
+ label: args => {
126
+ if (args.label) {
127
+ return args.label;
128
+ }
129
+ return trans.__('Settings Editor');
130
+ }
109
131
  });
132
+ if (palette) {
133
+ palette.addItem({
134
+ category: trans.__('Settings'),
135
+ command: CommandIDs.open,
136
+ args: { settingEditorType: 'ui' }
137
+ });
138
+ }
110
139
  return tracker;
111
140
  }
112
141
  /**
@@ -148,13 +177,19 @@ function activateJSON(app, registry, editorServices, state, rendermime, status,
148
177
  });
149
178
  }
150
179
  commands.addCommand(CommandIDs.openJSON, {
151
- execute: () => {
152
- if (tracker.currentWidget) {
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
+ }
153
187
  shell.activateById(tracker.currentWidget.id);
154
188
  return;
155
189
  }
156
190
  const key = plugin.id;
157
191
  const when = app.restored;
192
+ const { JsonSettingEditor } = await import('@jupyterlab/settingeditor');
158
193
  const editor = new JsonSettingEditor({
159
194
  commands: {
160
195
  registry: commands,
@@ -200,7 +235,7 @@ function activateJSON(app, registry, editorServices, state, rendermime, status,
200
235
  container.title.label = trans.__('Advanced Settings Editor');
201
236
  container.title.closable = true;
202
237
  void tracker.add(container);
203
- shell.add(container);
238
+ shell.add(container, 'main', { type: 'Advanced Settings' });
204
239
  },
205
240
  label: trans.__('Advanced Settings Editor')
206
241
  });
package/lib/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
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.8",
3
+ "version": "4.0.0-beta.0",
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.8",
41
- "@jupyterlab/apputils": "^4.0.0-alpha.8",
42
- "@jupyterlab/codeeditor": "^4.0.0-alpha.8",
43
- "@jupyterlab/rendermime": "^4.0.0-alpha.8",
44
- "@jupyterlab/settingeditor": "^4.0.0-alpha.8",
45
- "@jupyterlab/settingregistry": "^4.0.0-alpha.8",
46
- "@jupyterlab/statedb": "^4.0.0-alpha.8",
47
- "@jupyterlab/translation": "^4.0.0-alpha.8",
48
- "@jupyterlab/ui-components": "^4.0.0-alpha.23",
49
- "@lumino/disposable": "^1.10.1"
41
+ "@jupyterlab/application": "^4.0.0-beta.0",
42
+ "@jupyterlab/apputils": "^4.0.0-beta.0",
43
+ "@jupyterlab/codeeditor": "^4.0.0-beta.0",
44
+ "@jupyterlab/rendermime": "^4.0.0-beta.0",
45
+ "@jupyterlab/settingeditor": "^4.0.0-beta.0",
46
+ "@jupyterlab/settingregistry": "^4.0.0-beta.0",
47
+ "@jupyterlab/statedb": "^4.0.0-beta.0",
48
+ "@jupyterlab/translation": "^4.0.0-beta.0",
49
+ "@jupyterlab/ui-components": "^4.0.0-beta.0",
50
+ "@lumino/disposable": "^2.0.0"
50
51
  },
51
52
  "devDependencies": {
52
53
  "rimraf": "~3.0.0",
53
- "typedoc": "~0.22.10",
54
- "typescript": "~4.5.2"
54
+ "typedoc": "~0.23.25",
55
+ "typescript": "~5.0.2"
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/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];