@jupyterlab/shortcuts-extension 4.1.0-rc.0 → 4.1.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.js +12 -6
- package/lib/index.js.map +1 -1
- package/package.json +7 -6
- package/src/index.ts +16 -7
package/lib/index.js
CHANGED
|
@@ -13,13 +13,13 @@ import { DisposableSet } from '@lumino/disposable';
|
|
|
13
13
|
import { Platform } from '@lumino/domutils';
|
|
14
14
|
import { Menu } from '@lumino/widgets';
|
|
15
15
|
import { renderShortCut } from './renderer';
|
|
16
|
+
const SHORTCUT_PLUGIN_ID = '@jupyterlab/shortcuts-extension:shortcuts';
|
|
16
17
|
function getExternalForJupyterLab(settingRegistry, app, translator) {
|
|
17
18
|
const { commands } = app;
|
|
18
|
-
const shortcutPluginLocation = '@jupyterlab/shortcuts-extension:shortcuts';
|
|
19
19
|
return {
|
|
20
20
|
translator,
|
|
21
|
-
getAllShortCutSettings: () => settingRegistry.load(
|
|
22
|
-
removeShortCut: (key) => settingRegistry.remove(
|
|
21
|
+
getAllShortCutSettings: () => settingRegistry.load(SHORTCUT_PLUGIN_ID, true),
|
|
22
|
+
removeShortCut: (key) => settingRegistry.remove(SHORTCUT_PLUGIN_ID, key),
|
|
23
23
|
createMenu: () => new Menu({ commands }),
|
|
24
24
|
hasCommand: (id) => commands.hasCommand(id),
|
|
25
25
|
addCommand: (id, options) => commands.addCommand(id, options),
|
|
@@ -56,7 +56,7 @@ function getExternalForJupyterLab(settingRegistry, app, translator) {
|
|
|
56
56
|
* required, using the `'body'` selector is more appropriate.
|
|
57
57
|
*/
|
|
58
58
|
const shortcuts = {
|
|
59
|
-
id:
|
|
59
|
+
id: SHORTCUT_PLUGIN_ID,
|
|
60
60
|
description: 'Adds the keyboard shortcuts editor.',
|
|
61
61
|
requires: [ISettingRegistry],
|
|
62
62
|
optional: [ITranslator, IFormRendererRegistry],
|
|
@@ -65,6 +65,9 @@ const shortcuts = {
|
|
|
65
65
|
const trans = translator_.load('jupyterlab');
|
|
66
66
|
const { commands } = app;
|
|
67
67
|
let canonical;
|
|
68
|
+
// Stores initial value of the shortcuts `default` value,
|
|
69
|
+
// which reflects the `overrides.json` contents.
|
|
70
|
+
let cannonicalOverrides;
|
|
68
71
|
let loaded = {};
|
|
69
72
|
if (editorRegistry) {
|
|
70
73
|
const component = {
|
|
@@ -82,6 +85,9 @@ const shortcuts = {
|
|
|
82
85
|
*/
|
|
83
86
|
function populate(schema) {
|
|
84
87
|
const commands = app.commands.listCommands().join('\n');
|
|
88
|
+
if (!cannonicalOverrides) {
|
|
89
|
+
cannonicalOverrides = JSONExt.deepCopy(schema.properties.shortcuts.default);
|
|
90
|
+
}
|
|
85
91
|
loaded = {};
|
|
86
92
|
schema.properties.shortcuts.default = Object.keys(registry.plugins)
|
|
87
93
|
.map(plugin => {
|
|
@@ -89,7 +95,7 @@ const shortcuts = {
|
|
|
89
95
|
loaded[plugin] = shortcuts;
|
|
90
96
|
return shortcuts;
|
|
91
97
|
})
|
|
92
|
-
.concat([
|
|
98
|
+
.concat([cannonicalOverrides])
|
|
93
99
|
.reduce((acc, val) => {
|
|
94
100
|
if (Platform.IS_MAC) {
|
|
95
101
|
return acc.concat(val);
|
|
@@ -131,7 +137,7 @@ List of keyboard shortcuts:`, commands);
|
|
|
131
137
|
// Empty the default values to avoid shortcut collisions.
|
|
132
138
|
canonical = null;
|
|
133
139
|
const schema = registry.plugins[shortcuts.id].schema;
|
|
134
|
-
schema.properties.shortcuts.default =
|
|
140
|
+
schema.properties.shortcuts.default = cannonicalOverrides;
|
|
135
141
|
// Reload the settings.
|
|
136
142
|
await registry.load(shortcuts.id, true);
|
|
137
143
|
}
|
package/lib/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,0CAA0C;AAC1C,2DAA2D;AAC3D;;;GAGG;AAMH,OAAO,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AAChF,OAAO,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AACtE,OAAO,EAEL,qBAAqB,EACtB,MAAM,2BAA2B,CAAC;AACnC,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AACnD,OAAO,EACL,OAAO,
|
|
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/shortcuts-extension",
|
|
3
|
-
"version": "4.1.0
|
|
3
|
+
"version": "4.1.0",
|
|
4
4
|
"description": "JupyterLab - Shortcuts Extension",
|
|
5
5
|
"homepage": "https://github.com/jupyterlab/jupyterlab",
|
|
6
6
|
"bugs": {
|
|
@@ -41,10 +41,10 @@
|
|
|
41
41
|
"watch": "tsc -b --watch"
|
|
42
42
|
},
|
|
43
43
|
"dependencies": {
|
|
44
|
-
"@jupyterlab/application": "^4.1.0
|
|
45
|
-
"@jupyterlab/settingregistry": "^4.1.0
|
|
46
|
-
"@jupyterlab/translation": "^4.1.0
|
|
47
|
-
"@jupyterlab/ui-components": "^4.1.0
|
|
44
|
+
"@jupyterlab/application": "^4.1.0",
|
|
45
|
+
"@jupyterlab/settingregistry": "^4.1.0",
|
|
46
|
+
"@jupyterlab/translation": "^4.1.0",
|
|
47
|
+
"@jupyterlab/ui-components": "^4.1.0",
|
|
48
48
|
"@lumino/algorithm": "^2.0.1",
|
|
49
49
|
"@lumino/commands": "^2.2.0",
|
|
50
50
|
"@lumino/coreutils": "^2.1.2",
|
|
@@ -55,8 +55,9 @@
|
|
|
55
55
|
"react": "^18.2.0"
|
|
56
56
|
},
|
|
57
57
|
"devDependencies": {
|
|
58
|
-
"@jupyterlab/testing": "^4.1.0
|
|
58
|
+
"@jupyterlab/testing": "^4.1.0",
|
|
59
59
|
"@types/jest": "^29.2.0",
|
|
60
|
+
"jest": "^29.2.0",
|
|
60
61
|
"rimraf": "~5.0.5",
|
|
61
62
|
"typedoc": "~0.24.7",
|
|
62
63
|
"typescript": "~5.1.6"
|
package/src/index.ts
CHANGED
|
@@ -18,6 +18,7 @@ import {
|
|
|
18
18
|
import { CommandRegistry } from '@lumino/commands';
|
|
19
19
|
import {
|
|
20
20
|
JSONExt,
|
|
21
|
+
PartialJSONValue,
|
|
21
22
|
ReadonlyPartialJSONObject,
|
|
22
23
|
ReadonlyPartialJSONValue
|
|
23
24
|
} from '@lumino/coreutils';
|
|
@@ -27,19 +28,20 @@ import { Menu } from '@lumino/widgets';
|
|
|
27
28
|
import { IShortcutUIexternal } from './components';
|
|
28
29
|
import { renderShortCut } from './renderer';
|
|
29
30
|
|
|
31
|
+
const SHORTCUT_PLUGIN_ID = '@jupyterlab/shortcuts-extension:shortcuts';
|
|
32
|
+
|
|
30
33
|
function getExternalForJupyterLab(
|
|
31
34
|
settingRegistry: ISettingRegistry,
|
|
32
35
|
app: JupyterFrontEnd,
|
|
33
36
|
translator: ITranslator
|
|
34
37
|
): IShortcutUIexternal {
|
|
35
38
|
const { commands } = app;
|
|
36
|
-
const shortcutPluginLocation = '@jupyterlab/shortcuts-extension:shortcuts';
|
|
37
39
|
return {
|
|
38
40
|
translator,
|
|
39
41
|
getAllShortCutSettings: () =>
|
|
40
|
-
settingRegistry.load(
|
|
42
|
+
settingRegistry.load(SHORTCUT_PLUGIN_ID, true),
|
|
41
43
|
removeShortCut: (key: string) =>
|
|
42
|
-
settingRegistry.remove(
|
|
44
|
+
settingRegistry.remove(SHORTCUT_PLUGIN_ID, key),
|
|
43
45
|
createMenu: () => new Menu({ commands }),
|
|
44
46
|
hasCommand: (id: string) => commands.hasCommand(id),
|
|
45
47
|
addCommand: (id: string, options: CommandRegistry.ICommandOptions) =>
|
|
@@ -78,7 +80,7 @@ function getExternalForJupyterLab(
|
|
|
78
80
|
* required, using the `'body'` selector is more appropriate.
|
|
79
81
|
*/
|
|
80
82
|
const shortcuts: JupyterFrontEndPlugin<void> = {
|
|
81
|
-
id:
|
|
83
|
+
id: SHORTCUT_PLUGIN_ID,
|
|
82
84
|
description: 'Adds the keyboard shortcuts editor.',
|
|
83
85
|
requires: [ISettingRegistry],
|
|
84
86
|
optional: [ITranslator, IFormRendererRegistry],
|
|
@@ -92,6 +94,9 @@ const shortcuts: JupyterFrontEndPlugin<void> = {
|
|
|
92
94
|
const trans = translator_.load('jupyterlab');
|
|
93
95
|
const { commands } = app;
|
|
94
96
|
let canonical: ISettingRegistry.ISchema | null;
|
|
97
|
+
// Stores initial value of the shortcuts `default` value,
|
|
98
|
+
// which reflects the `overrides.json` contents.
|
|
99
|
+
let cannonicalOverrides: PartialJSONValue | undefined;
|
|
95
100
|
let loaded: { [name: string]: ISettingRegistry.IShortcut[] } = {};
|
|
96
101
|
|
|
97
102
|
if (editorRegistry) {
|
|
@@ -111,7 +116,11 @@ const shortcuts: JupyterFrontEndPlugin<void> = {
|
|
|
111
116
|
*/
|
|
112
117
|
function populate(schema: ISettingRegistry.ISchema) {
|
|
113
118
|
const commands = app.commands.listCommands().join('\n');
|
|
114
|
-
|
|
119
|
+
if (!cannonicalOverrides) {
|
|
120
|
+
cannonicalOverrides = JSONExt.deepCopy(
|
|
121
|
+
schema.properties!.shortcuts.default!
|
|
122
|
+
);
|
|
123
|
+
}
|
|
115
124
|
loaded = {};
|
|
116
125
|
schema.properties!.shortcuts.default = Object.keys(registry.plugins)
|
|
117
126
|
.map(plugin => {
|
|
@@ -120,7 +129,7 @@ const shortcuts: JupyterFrontEndPlugin<void> = {
|
|
|
120
129
|
loaded[plugin] = shortcuts;
|
|
121
130
|
return shortcuts;
|
|
122
131
|
})
|
|
123
|
-
.concat([
|
|
132
|
+
.concat([cannonicalOverrides as any[]])
|
|
124
133
|
.reduce((acc, val) => {
|
|
125
134
|
if (Platform.IS_MAC) {
|
|
126
135
|
return acc.concat(val);
|
|
@@ -174,7 +183,7 @@ List of keyboard shortcuts:`,
|
|
|
174
183
|
// Empty the default values to avoid shortcut collisions.
|
|
175
184
|
canonical = null;
|
|
176
185
|
const schema = registry.plugins[shortcuts.id]!.schema;
|
|
177
|
-
schema.properties!.shortcuts.default =
|
|
186
|
+
schema.properties!.shortcuts.default = cannonicalOverrides;
|
|
178
187
|
|
|
179
188
|
// Reload the settings.
|
|
180
189
|
await registry.load(shortcuts.id, true);
|