@jupyterlab/application 4.2.0-alpha.1 → 4.2.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/frontend.d.ts CHANGED
@@ -5,7 +5,7 @@ import { ContextMenuSvg } from '@jupyterlab/ui-components';
5
5
  import { Application, IPlugin } from '@lumino/application';
6
6
  import { Token } from '@lumino/coreutils';
7
7
  import { ISignal } from '@lumino/signaling';
8
- import { Widget } from '@lumino/widgets';
8
+ import { FocusTracker, Widget } from '@lumino/widgets';
9
9
  /**
10
10
  * The type for all JupyterFrontEnd application plugins.
11
11
  *
@@ -148,6 +148,19 @@ export declare namespace JupyterFrontEnd {
148
148
  * or "focused" mean, depending on their user interface characteristics.
149
149
  */
150
150
  readonly currentWidget: Widget | null;
151
+ /**
152
+ * A signal emitted when the focused widget in the application shell changes.
153
+ *
154
+ * ### Notes
155
+ * Shells may not always have a {@link currentWidget} or it may not change.
156
+ * Therefore implementing this signal is only expected for shells with the ability
157
+ * to switch between active widgets.
158
+ *
159
+ * Although the signal argument type references a focus tracker, the shell
160
+ * current widget may not be the one focused as its definition is an implementation
161
+ * detail.
162
+ */
163
+ readonly currentChanged?: ISignal<IShell, FocusTracker.IChangedArgs<Widget>>;
151
164
  /**
152
165
  * Returns an iterator for the widgets inside the application shell.
153
166
  *
@@ -1 +1 @@
1
- {"version":3,"file":"frontend.js","sourceRoot":"","sources":["../src/frontend.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"frontend.js","sourceRoot":"","sources":["../src/frontend.ts"],"names":[],"mappings":"AAAA,0CAA0C;AAC1C,2DAA2D;AAE3D,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAC3D,OAAO,EAAE,WAAW,EAAW,MAAM,qBAAqB,CAAC;AAC3D,OAAO,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAC1C,OAAO,EAAW,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAkBpD;;;;;;;;;;GAUG;AACH,MAAM,OAAgB,eAGpB,SAAQ,WAAc;IACtB;;OAEG;IACH,YAAY,OAAoC;QAC9C,KAAK,CAAC,OAAO,CAAC,CAAC;QAiKT,mBAAc,GAAG,IAAI,MAAM,CAAU,IAAI,CAAC,CAAC;QA/JjD,2DAA2D;QAC3D,IAAI,CAAC,WAAW,GAAG,IAAI,cAAc,CAAC;YACpC,QAAQ,EAAE,IAAI,CAAC,QAAQ;YACvB,QAAQ,EAAE,OAAO,CAAC,mBAAmB;YACrC,aAAa,EAAE,KAAK;YACpB,cAAc,EAAE,KAAK;SACtB,CAAC,CAAC;QAEH,qEAAqE;QACrE,MAAM,QAAQ,GAAG,IAAI,OAAO,CAAO,OAAO,CAAC,EAAE;YAC3C,qBAAqB,CAAC,GAAG,EAAE;gBACzB,OAAO,EAAE,CAAC;YACZ,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,aAAa;YAChB,OAAO,CAAC,aAAa,IAAI,IAAI,aAAa,CAAC,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;QAC1E,IAAI,CAAC,WAAW,GAAG,OAAO,CAAC,WAAW,IAAI,IAAI,gBAAgB,EAAE,CAAC;QACjE,IAAI,CAAC,QAAQ;YACX,OAAO,CAAC,QAAQ;gBAChB,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,CAAC;QAC1D,IAAI,CAAC,cAAc,GAAG,OAAO,CAAC,cAAc,IAAI,IAAI,cAAc,EAAE,CAAC;IACvE,CAAC;IA0CD;;OAEG;IACH,IAAI,MAAM;QACR,OAAO,IAAI,CAAC,OAAO,CAAC;IACtB,CAAC;IACD,IAAI,MAAM,CAAC,MAAS;QAClB,IAAI,IAAI,CAAC,OAAO,KAAK,MAAM,EAAE;YAC3B,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC;YACtB,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,GAAG,MAAM,CAAC;YACzC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;SAClC;IACH,CAAC;IAED;;OAEG;IACH,IAAI,aAAa;QACf,OAAO,IAAI,CAAC,cAAc,CAAC;IAC7B,CAAC;IAED;;;;;;;;;OASG;IACH,kBAAkB,CAChB,EAAkC;QAElC,IACE,CAAC,IAAI,CAAC,iBAAiB;YACvB,CAAC,CAAC,IAAI,CAAC,iBAAiB,CAAC,MAAM,YAAY,IAAI,CAAC,EAChD;YACA,OAAO,SAAS,CAAC;SAClB;QACD,IAAI,IAAI,GAAgB,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC;QACtD,GAAG;YACD,IAAI,IAAI,YAAY,WAAW,IAAI,EAAE,CAAC,IAAI,CAAC,EAAE;gBAC3C,OAAO,IAAI,CAAC;aACb;YACD,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC;SACxB,QAAQ,IAAI,IAAI,IAAI,CAAC,UAAU,IAAI,IAAI,KAAK,IAAI,CAAC,UAAU,EAAE;QAC9D,OAAO,SAAS,CAAC;QAEjB,2EAA2E;QAC3E,sEAAsE;QACtE,qCAAqC;QACrC;;;;;;;;UAQE;IACJ,CAAC;IAED;;OAEG;IACO,cAAc,CAAC,KAAiB;QACxC,IAAI,CAAC,iBAAiB,GAAG,KAAK,CAAC;QAC/B,IACE,KAAK,CAAC,QAAQ;YACd,OAAO,CAAC,mBAAmB,CAAC,KAAK,CAAC,MAAqB,CAAC,EACxD;YACA,OAAO;SACR;QACD,MAAM,MAAM,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC5C,IAAI,MAAM,EAAE;YACV,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC;YAC1C,sDAAsD;YACtD,oDAAoD;YACpD,gCAAgC;YAChC,IACE,KAAK,CAAC,MAAM,KAAK,CAAC;gBAClB,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,KAAK,0BAA0B,CAAC,WAAW,EAC3D;gBACA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;gBAC9B,OAAO;aACR;YACD,mEAAmE;YACnE,KAAK,CAAC,cAAc,EAAE,CAAC;YACvB,KAAK,CAAC,eAAe,EAAE,CAAC;SACzB;IACH,CAAC;CAKF;AAED;;GAEG;AACH,WAAiB,eAAe;IA0F9B;;;;;OAKG;IACH,SAAgB,SAAS,CAAC,IAAY,EAAE,KAAa;QACnD,MAAM,UAAU,GAAG,IAAI,MAAM,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;QACpD,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;QACrC,IAAI,KAAK,EAAE;YACT,OAAO,IAAI,CAAC;SACb;aAAM;YACL,OAAO,KAAK,CAAC;SACd;IACH,CAAC;IARe,yBAAS,YAQxB,CAAA;IAED;;OAEG;IACU,sBAAM,GAAG,IAAI,KAAK,CAC7B,gCAAgC,EAChC;;gDAE4C,CAC7C,CAAC;IAoDF;;;;;;;OAOG;IACU,6BAAa,GAAG,IAAI,KAAK,CACpC,uCAAuC,EACvC,qCAAqC,CACtC,CAAC;AAsBJ,CAAC,EAvMgB,eAAe,KAAf,eAAe,QAuM/B;AAED;;GAEG;AACH,IAAU,OAAO,CAOhB;AAPD,WAAU,OAAO;IACf;;OAEG;IACH,SAAgB,mBAAmB,CAAC,OAAoB;QACtD,OAAO,OAAO,CAAC,OAAO,CAAC,iCAAiC,CAAC,KAAK,IAAI,CAAC;IACrE,CAAC;IAFe,2BAAmB,sBAElC,CAAA;AACH,CAAC,EAPS,OAAO,KAAP,OAAO,QAOhB;AAED;;GAEG;AACH,MAAM,KAAW,0BAA0B,CAK1C;AALD,WAAiB,0BAA0B;IACzC;;OAEG;IACU,sCAAW,GAAG,8BAA8B,CAAC;AAC5D,CAAC,EALgB,0BAA0B,KAA1B,0BAA0B,QAK1C"}
package/lib/utils.d.ts CHANGED
@@ -4,7 +4,7 @@ import { CommandRegistry } from '@lumino/commands';
4
4
  import { JupyterFrontEnd } from './frontend';
5
5
  export interface ISemanticCommandDefault {
6
6
  /**
7
- * Default command to execute if no command is enabled
7
+ * Default command id to execute if no command is enabled
8
8
  */
9
9
  execute?: string;
10
10
  /**
@@ -28,6 +28,51 @@ export interface ISemanticCommandDefault {
28
28
  */
29
29
  isVisible?: boolean;
30
30
  }
31
+ /**
32
+ * Semantic command(s) options
33
+ */
34
+ export interface ISemanticCommandOptions {
35
+ /**
36
+ * Semantic command ID
37
+ */
38
+ id: string;
39
+ /**
40
+ * Application command registry
41
+ */
42
+ commands: CommandRegistry;
43
+ /**
44
+ * Application shell
45
+ */
46
+ shell: JupyterFrontEnd.IShell;
47
+ /**
48
+ * Semantic commands
49
+ */
50
+ semanticCommands: SemanticCommand | SemanticCommand[];
51
+ /**
52
+ * Default commands options
53
+ *
54
+ * It will be used if the enabled command is not defining one
55
+ * or if no command is enabled.
56
+ */
57
+ default?: ISemanticCommandDefault;
58
+ /**
59
+ * Override commands options
60
+ *
61
+ * It will override the enabled command attribute.
62
+ */
63
+ overrides?: Omit<CommandRegistry.ICommandOptions, 'execute'>;
64
+ /**
65
+ * Domain specific translation object.
66
+ */
67
+ trans?: TranslationBundle;
68
+ }
69
+ /**
70
+ * Add a semantic commands to the application and take care
71
+ * of setting up the command changed signal.
72
+ *
73
+ * @param options Semantic command options
74
+ */
75
+ export declare function addSemanticCommand(options: ISemanticCommandOptions): void;
31
76
  /**
32
77
  * Create the command options from the given semantic commands list
33
78
  * and the given default values.
@@ -37,5 +82,11 @@ export interface ISemanticCommandDefault {
37
82
  * @param defaultValues Default values
38
83
  * @param trans Translation bundle
39
84
  * @returns Command options
85
+ *
86
+ * @deprecated Please use {@link addSemanticCommand}. This function will
87
+ * be removed of the public API in JupyterLab 5.
40
88
  */
41
- export declare function createSemanticCommand(app: JupyterFrontEnd, semanticCommands: SemanticCommand | SemanticCommand[], defaultValues: ISemanticCommandDefault, trans: TranslationBundle): CommandRegistry.ICommandOptions;
89
+ export declare function createSemanticCommand(app: JupyterFrontEnd | {
90
+ commands: CommandRegistry;
91
+ shell: JupyterFrontEnd.IShell;
92
+ }, semanticCommands: SemanticCommand | SemanticCommand[], defaultValues: ISemanticCommandDefault, trans: TranslationBundle): CommandRegistry.ICommandOptions;
package/lib/utils.js CHANGED
@@ -2,6 +2,47 @@
2
2
  * Copyright (c) Jupyter Development Team.
3
3
  * Distributed under the terms of the Modified BSD License.
4
4
  */
5
+ import { nullTranslator } from '@jupyterlab/translation';
6
+ /**
7
+ * Add a semantic commands to the application and take care
8
+ * of setting up the command changed signal.
9
+ *
10
+ * @param options Semantic command options
11
+ */
12
+ export function addSemanticCommand(options) {
13
+ const { id, commands, shell, semanticCommands, default: defaultValues, overrides, trans } = options;
14
+ commands.addCommand(id, {
15
+ ...createSemanticCommand({ commands, shell }, semanticCommands, defaultValues !== null && defaultValues !== void 0 ? defaultValues : {}, trans !== null && trans !== void 0 ? trans : nullTranslator.load('jupyterlab')),
16
+ ...overrides
17
+ });
18
+ const commandList = Array.isArray(semanticCommands)
19
+ ? semanticCommands
20
+ : [semanticCommands];
21
+ const onCommandChanged = (commands, args) => {
22
+ if (args.id) {
23
+ if (args.id === id && args.type === 'removed') {
24
+ commands.commandChanged.disconnect(onCommandChanged);
25
+ }
26
+ else {
27
+ const commandIds = commandList.reduce((agg, cmd) => agg.concat(cmd.ids), []);
28
+ if (commandIds.includes(args.id)) {
29
+ switch (args.type) {
30
+ case 'changed':
31
+ case 'many-changed':
32
+ commands.notifyCommandChanged(id);
33
+ break;
34
+ case 'removed':
35
+ for (const cmd of commandList) {
36
+ cmd.remove(args.id);
37
+ }
38
+ break;
39
+ }
40
+ }
41
+ }
42
+ }
43
+ };
44
+ commands.commandChanged.connect(onCommandChanged);
45
+ }
5
46
  /**
6
47
  * Create the command options from the given semantic commands list
7
48
  * and the given default values.
@@ -11,6 +52,9 @@
11
52
  * @param defaultValues Default values
12
53
  * @param trans Translation bundle
13
54
  * @returns Command options
55
+ *
56
+ * @deprecated Please use {@link addSemanticCommand}. This function will
57
+ * be removed of the public API in JupyterLab 5.
14
58
  */
15
59
  export function createSemanticCommand(app, semanticCommands, defaultValues, trans) {
16
60
  const { commands, shell } = app;
package/lib/utils.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"utils.js","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,EAAE,cAAc,EAAqB,MAAM,yBAAyB,CAAC;AAsE5E;;;;;GAKG;AACH,MAAM,UAAU,kBAAkB,CAAC,OAAgC;IACjE,MAAM,EACJ,EAAE,EACF,QAAQ,EACR,KAAK,EACL,gBAAgB,EAChB,OAAO,EAAE,aAAa,EACtB,SAAS,EACT,KAAK,EACN,GAAG,OAAO,CAAC;IACZ,QAAQ,CAAC,UAAU,CAAC,EAAE,EAAE;QACtB,GAAG,qBAAqB,CACtB,EAAE,QAAQ,EAAE,KAAK,EAAE,EACnB,gBAAgB,EAChB,aAAa,aAAb,aAAa,cAAb,aAAa,GAAI,EAAE,EACnB,KAAK,aAAL,KAAK,cAAL,KAAK,GAAI,cAAc,CAAC,IAAI,CAAC,YAAY,CAAC,CAC3C;QACD,GAAG,SAAS;KACb,CAAC,CAAC;IACH,MAAM,WAAW,GAAG,KAAK,CAAC,OAAO,CAAC,gBAAgB,CAAC;QACjD,CAAC,CAAC,gBAAgB;QAClB,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC;IAEvB,MAAM,gBAAgB,GAAG,CACvB,QAAyB,EACzB,IAAyC,EACzC,EAAE;QACF,IAAI,IAAI,CAAC,EAAE,EAAE;YACX,IAAI,IAAI,CAAC,EAAE,KAAK,EAAE,IAAI,IAAI,CAAC,IAAI,KAAK,SAAS,EAAE;gBAC7C,QAAQ,CAAC,cAAc,CAAC,UAAU,CAAC,gBAAgB,CAAC,CAAC;aACtD;iBAAM;gBACL,MAAM,UAAU,GAAG,WAAW,CAAC,MAAM,CACnC,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,EACjC,EAAE,CACH,CAAC;gBACF,IAAI,UAAU,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE;oBAChC,QAAQ,IAAI,CAAC,IAAI,EAAE;wBACjB,KAAK,SAAS,CAAC;wBACf,KAAK,cAAc;4BACjB,QAAQ,CAAC,oBAAoB,CAAC,EAAE,CAAC,CAAC;4BAClC,MAAM;wBACR,KAAK,SAAS;4BACZ,KAAK,MAAM,GAAG,IAAI,WAAW,EAAE;gCAC7B,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;6BACrB;4BACD,MAAM;qBACT;iBACF;aACF;SACF;IACH,CAAC,CAAC;IAEF,QAAQ,CAAC,cAAc,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC;AACpD,CAAC;AAED;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,qBAAqB,CACnC,GAEgE,EAChE,gBAAqD,EACrD,aAAsC,EACtC,KAAwB;IAExB,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,GAAG,GAAG,CAAC;IAChC,MAAM,WAAW,GAAG,KAAK,CAAC,OAAO,CAAC,gBAAgB,CAAC;QACjD,CAAC,CAAC,gBAAgB;QAClB,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC;IAEvB,OAAO;QACL,KAAK,EAAE,gBAAgB,CAAC,OAAO,CAAC;QAChC,OAAO,EAAE,gBAAgB,CAAC,SAAS,CAAC;QACpC,SAAS,EAAE,GAAG,EAAE;;YACd,MAAM,SAAS,GAAG,eAAe,CAAC,WAAW,CAAC,CAAC;YAC/C,OAAO,CACL,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC;gBACnB,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,OAAO,KAAK,KAAK,CAAC,CAAC;gBAChD,CAAC,MAAA,aAAa,CAAC,SAAS,mCAAI,KAAK,CAAC,CACnC,CAAC;QACJ,CAAC;QACD,SAAS,EAAE,GAAG,EAAE;;YACd,MAAM,SAAS,GAAG,eAAe,CAAC,WAAW,CAAC,CAAC;YAC/C,OAAO,CACL,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,OAAO,KAAK,IAAI,CAAC;gBAC3C,CAAC,MAAA,aAAa,CAAC,SAAS,mCAAI,KAAK,CAAC,CACnC,CAAC;QACJ,CAAC;QACD,SAAS,EAAE,GAAG,EAAE;;YACd,MAAM,SAAS,GAAG,eAAe,CAAC,WAAW,CAAC,CAAC;YAC/C,OAAO,CACL,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC;gBACnB,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,OAAO,KAAK,KAAK,CAAC,CAAC;gBAChD,CAAC,MAAA,aAAa,CAAC,SAAS,mCAAI,IAAI,CAAC,CAClC,CAAC;QACJ,CAAC;QACD,OAAO,EAAE,KAAK,IAAI,EAAE;YAClB,MAAM,MAAM,GAAG,KAAK,CAAC,aAAa,CAAC;YACnC,MAAM,UAAU,GAAG,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CACvC,MAAM,KAAK,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,kBAAkB,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CACxD,CAAC;YACF,MAAM,SAAS,GAAG,UAAU,CAAC,MAAM,CACjC,SAAS,CAAC,EAAE,CAAC,SAAS,KAAK,IAAI,IAAI,QAAQ,CAAC,SAAS,CAAC,SAAS,CAAC,CACjE,CAAC;YAEF,IAAI,MAAM,GAAQ,IAAI,CAAC;YACvB,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE;gBACxB,KAAK,MAAM,SAAS,IAAI,SAAS,EAAE;oBACjC,MAAM,GAAG,MAAM,QAAQ,CAAC,OAAO,CAAC,SAAU,CAAC,CAAC;oBAC5C,IAAI,OAAO,MAAM,KAAK,SAAS,IAAI,MAAM,KAAK,KAAK,EAAE;wBACnD,4EAA4E;wBAC5E,2BAA2B;wBAC3B,MAAM;qBACP;iBACF;aACF;iBAAM,IAAI,aAAa,CAAC,OAAO,EAAE;gBAChC,MAAM,GAAG,MAAM,QAAQ,CAAC,OAAO,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;aACxD;YACD,OAAO,MAAM,CAAC;QAChB,CAAC;KACF,CAAC;IAEF,SAAS,eAAe,CACtB,SAAgD;QAEhD,MAAM,MAAM,GAAG,KAAK,CAAC,aAAa,CAAC;QACnC,MAAM,UAAU,GAAG,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CACvC,MAAM,KAAK,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,kBAAkB,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CACxD,CAAC;QACF,MAAM,UAAU,GAAG,UAAU;aAC1B,MAAM,CAAC,SAAS,CAAC,EAAE,CAAC,SAAS,KAAK,IAAI,CAAC;aACvC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,SAAU,CAAC,CAAC,CAAC;QACrD,OAAO,UAAU,CAAC;IACpB,CAAC;IAED,SAAS,gBAAgB,CACvB,SAA8B;QAE9B,OAAO,GAAG,EAAE;;YACV,MAAM,KAAK,GAAI,eAAe,CAAC,SAAS,CAAc,CAAC,GAAG,CACxD,CAAC,IAAI,EAAE,SAAS,EAAE,EAAE,CAClB,SAAS,IAAI,SAAS,IAAI,SAAS,GAAG,CAAC;gBACrC,CAAC,CAAC,IAAI,CAAC,iBAAiB,EAAE;gBAC1B,CAAC,CAAC,IAAI,CACX,CAAC;YAEF,QAAQ,KAAK,CAAC,MAAM,EAAE;gBACpB,KAAK,CAAC;oBACJ,OAAO,MAAA,aAAa,CAAC,SAAS,CAAC,mCAAI,EAAE,CAAC;gBACxC,KAAK,CAAC;oBACJ,OAAO,KAAK,CAAC,CAAC,CAAC,CAAC;gBAClB,OAAO,CAAC,CAAC;oBACP,MAAM,WAAW,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;oBAClD,MAAM,IAAI,GAAG,KAAK;yBACf,KAAK,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC;yBACpB,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;yBAC7B,IAAI,CAAC,IAAI,CAAC,CAAC;oBACd,MAAM,GAAG,GACP,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;oBAClE,OAAO,KAAK,CAAC,EAAE,CAAC,WAAW,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC;iBACzC;aACF;QACH,CAAC,CAAC;IACJ,CAAC;AACH,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@jupyterlab/application",
3
- "version": "4.2.0-alpha.1",
3
+ "version": "4.2.0-beta.0",
4
4
  "description": "JupyterLab - Application",
5
5
  "homepage": "https://github.com/jupyterlab/jupyterlab",
6
6
  "bugs": {
@@ -43,15 +43,15 @@
43
43
  },
44
44
  "dependencies": {
45
45
  "@fortawesome/fontawesome-free": "^5.12.0",
46
- "@jupyterlab/apputils": "^4.3.0-alpha.1",
47
- "@jupyterlab/coreutils": "^6.2.0-alpha.1",
48
- "@jupyterlab/docregistry": "^4.2.0-alpha.1",
49
- "@jupyterlab/rendermime": "^4.2.0-alpha.1",
50
- "@jupyterlab/rendermime-interfaces": "^3.10.0-alpha.1",
51
- "@jupyterlab/services": "^7.2.0-alpha.1",
52
- "@jupyterlab/statedb": "^4.2.0-alpha.1",
53
- "@jupyterlab/translation": "^4.2.0-alpha.1",
54
- "@jupyterlab/ui-components": "^4.2.0-alpha.1",
46
+ "@jupyterlab/apputils": "^4.3.0-beta.0",
47
+ "@jupyterlab/coreutils": "^6.2.0-beta.0",
48
+ "@jupyterlab/docregistry": "^4.2.0-beta.0",
49
+ "@jupyterlab/rendermime": "^4.2.0-beta.0",
50
+ "@jupyterlab/rendermime-interfaces": "^3.10.0-beta.0",
51
+ "@jupyterlab/services": "^7.2.0-beta.0",
52
+ "@jupyterlab/statedb": "^4.2.0-beta.0",
53
+ "@jupyterlab/translation": "^4.2.0-beta.0",
54
+ "@jupyterlab/ui-components": "^4.2.0-beta.0",
55
55
  "@lumino/algorithm": "^2.0.1",
56
56
  "@lumino/application": "^2.3.0",
57
57
  "@lumino/commands": "^2.2.0",
@@ -64,7 +64,7 @@
64
64
  "@lumino/widgets": "^2.3.1"
65
65
  },
66
66
  "devDependencies": {
67
- "@jupyterlab/testing": "^4.2.0-alpha.1",
67
+ "@jupyterlab/testing": "^4.2.0-beta.0",
68
68
  "@types/jest": "^29.2.0",
69
69
  "jest": "^29.2.0",
70
70
  "rimraf": "~5.0.5",
package/src/frontend.ts CHANGED
@@ -8,7 +8,7 @@ import { ContextMenuSvg } from '@jupyterlab/ui-components';
8
8
  import { Application, IPlugin } from '@lumino/application';
9
9
  import { Token } from '@lumino/coreutils';
10
10
  import { ISignal, Signal } from '@lumino/signaling';
11
- import { Widget } from '@lumino/widgets';
11
+ import { FocusTracker, Widget } from '@lumino/widgets';
12
12
 
13
13
  /**
14
14
  * The type for all JupyterFrontEnd application plugins.
@@ -276,6 +276,23 @@ export namespace JupyterFrontEnd {
276
276
  */
277
277
  readonly currentWidget: Widget | null;
278
278
 
279
+ /**
280
+ * A signal emitted when the focused widget in the application shell changes.
281
+ *
282
+ * ### Notes
283
+ * Shells may not always have a {@link currentWidget} or it may not change.
284
+ * Therefore implementing this signal is only expected for shells with the ability
285
+ * to switch between active widgets.
286
+ *
287
+ * Although the signal argument type references a focus tracker, the shell
288
+ * current widget may not be the one focused as its definition is an implementation
289
+ * detail.
290
+ */
291
+ readonly currentChanged?: ISignal<
292
+ IShell,
293
+ FocusTracker.IChangedArgs<Widget>
294
+ >;
295
+
279
296
  /**
280
297
  * Returns an iterator for the widgets inside the application shell.
281
298
  *
package/src/utils.ts CHANGED
@@ -4,13 +4,13 @@
4
4
  */
5
5
 
6
6
  import { SemanticCommand } from '@jupyterlab/apputils';
7
- import { TranslationBundle } from '@jupyterlab/translation';
7
+ import { nullTranslator, TranslationBundle } from '@jupyterlab/translation';
8
8
  import { CommandRegistry } from '@lumino/commands';
9
9
  import { JupyterFrontEnd } from './frontend';
10
10
 
11
11
  export interface ISemanticCommandDefault {
12
12
  /**
13
- * Default command to execute if no command is enabled
13
+ * Default command id to execute if no command is enabled
14
14
  */
15
15
  execute?: string;
16
16
  /**
@@ -35,6 +35,106 @@ export interface ISemanticCommandDefault {
35
35
  isVisible?: boolean;
36
36
  }
37
37
 
38
+ /**
39
+ * Semantic command(s) options
40
+ */
41
+ export interface ISemanticCommandOptions {
42
+ /**
43
+ * Semantic command ID
44
+ */
45
+ id: string;
46
+ /**
47
+ * Application command registry
48
+ */
49
+ commands: CommandRegistry;
50
+ /**
51
+ * Application shell
52
+ */
53
+ shell: JupyterFrontEnd.IShell;
54
+ /**
55
+ * Semantic commands
56
+ */
57
+ semanticCommands: SemanticCommand | SemanticCommand[];
58
+ /**
59
+ * Default commands options
60
+ *
61
+ * It will be used if the enabled command is not defining one
62
+ * or if no command is enabled.
63
+ */
64
+ default?: ISemanticCommandDefault;
65
+ /**
66
+ * Override commands options
67
+ *
68
+ * It will override the enabled command attribute.
69
+ */
70
+ overrides?: Omit<CommandRegistry.ICommandOptions, 'execute'>;
71
+ /**
72
+ * Domain specific translation object.
73
+ */
74
+ trans?: TranslationBundle;
75
+ }
76
+
77
+ /**
78
+ * Add a semantic commands to the application and take care
79
+ * of setting up the command changed signal.
80
+ *
81
+ * @param options Semantic command options
82
+ */
83
+ export function addSemanticCommand(options: ISemanticCommandOptions): void {
84
+ const {
85
+ id,
86
+ commands,
87
+ shell,
88
+ semanticCommands,
89
+ default: defaultValues,
90
+ overrides,
91
+ trans
92
+ } = options;
93
+ commands.addCommand(id, {
94
+ ...createSemanticCommand(
95
+ { commands, shell },
96
+ semanticCommands,
97
+ defaultValues ?? {},
98
+ trans ?? nullTranslator.load('jupyterlab')
99
+ ),
100
+ ...overrides
101
+ });
102
+ const commandList = Array.isArray(semanticCommands)
103
+ ? semanticCommands
104
+ : [semanticCommands];
105
+
106
+ const onCommandChanged = (
107
+ commands: CommandRegistry,
108
+ args: CommandRegistry.ICommandChangedArgs
109
+ ) => {
110
+ if (args.id) {
111
+ if (args.id === id && args.type === 'removed') {
112
+ commands.commandChanged.disconnect(onCommandChanged);
113
+ } else {
114
+ const commandIds = commandList.reduce<string[]>(
115
+ (agg, cmd) => agg.concat(cmd.ids),
116
+ []
117
+ );
118
+ if (commandIds.includes(args.id)) {
119
+ switch (args.type) {
120
+ case 'changed':
121
+ case 'many-changed':
122
+ commands.notifyCommandChanged(id);
123
+ break;
124
+ case 'removed':
125
+ for (const cmd of commandList) {
126
+ cmd.remove(args.id);
127
+ }
128
+ break;
129
+ }
130
+ }
131
+ }
132
+ }
133
+ };
134
+
135
+ commands.commandChanged.connect(onCommandChanged);
136
+ }
137
+
38
138
  /**
39
139
  * Create the command options from the given semantic commands list
40
140
  * and the given default values.
@@ -44,9 +144,14 @@ export interface ISemanticCommandDefault {
44
144
  * @param defaultValues Default values
45
145
  * @param trans Translation bundle
46
146
  * @returns Command options
147
+ *
148
+ * @deprecated Please use {@link addSemanticCommand}. This function will
149
+ * be removed of the public API in JupyterLab 5.
47
150
  */
48
151
  export function createSemanticCommand(
49
- app: JupyterFrontEnd,
152
+ app:
153
+ | JupyterFrontEnd
154
+ | { commands: CommandRegistry; shell: JupyterFrontEnd.IShell },
50
155
  semanticCommands: SemanticCommand | SemanticCommand[],
51
156
  defaultValues: ISemanticCommandDefault,
52
157
  trans: TranslationBundle
package/style/buttons.css CHANGED
@@ -27,17 +27,17 @@ button:focus-visible {
27
27
  }
28
28
 
29
29
  button.jp-mod-styled.jp-mod-accept {
30
- background: var(--jp-accept-color-normal, var(--md-blue-500));
30
+ background: var(--jp-accept-color-normal, var(--md-blue-500, #2196f3));
31
31
  border: 0;
32
32
  color: white;
33
33
  }
34
34
 
35
35
  button.jp-mod-styled.jp-mod-accept:hover {
36
- background: var(--jp-accept-color-hover, var(--md-blue-600));
36
+ background: var(--jp-accept-color-hover, var(--md-blue-600, #1e88e5));
37
37
  }
38
38
 
39
39
  button.jp-mod-styled.jp-mod-accept:active {
40
- background: var(--jp-accept-color-active, var(--md-blue-700));
40
+ background: var(--jp-accept-color-active, var(--md-blue-700, #1976d2));
41
41
  }
42
42
 
43
43
  button.jp-mod-styled.jp-mod-accept:focus-visible {
@@ -45,21 +45,21 @@ button.jp-mod-styled.jp-mod-accept:focus-visible {
45
45
  }
46
46
 
47
47
  button.jp-mod-styled.jp-mod-reject {
48
- background: var(--jp-reject-color-normal, var(--md-grey-500));
48
+ background: var(--jp-reject-color-normal, var(--md-grey-500, #9e9e9e));
49
49
  border: 0;
50
50
  color: white;
51
51
  }
52
52
 
53
53
  button.jp-mod-styled.jp-mod-reject:hover {
54
- background: var(--jp-reject-color-hover, var(--md-grey-600));
54
+ background: var(--jp-reject-color-hover, var(--md-grey-600, #757575));
55
55
  }
56
56
 
57
57
  button.jp-mod-styled.jp-mod-reject:active {
58
- background: var(--jp-reject-color-active, var(--md-grey-700));
58
+ background: var(--jp-reject-color-active, var(--md-grey-700, #616161));
59
59
  }
60
60
 
61
61
  button.jp-mod-styled.jp-mod-reject:focus-visible {
62
- outline: 1px solid var(--jp-reject-color-active, var(--md-grey-700));
62
+ outline: 1px solid var(--jp-reject-color-active, var(--md-grey-700, #616161));
63
63
  }
64
64
 
65
65
  button.jp-mod-styled.jp-mod-warn {
@@ -69,15 +69,15 @@ button.jp-mod-styled.jp-mod-warn {
69
69
  }
70
70
 
71
71
  button.jp-mod-styled.jp-mod-warn:hover {
72
- background: var(--jp-warn-color-hover, var(--md-red-600));
72
+ background: var(--jp-warn-color-hover, var(--md-red-600, #e53935));
73
73
  }
74
74
 
75
75
  button.jp-mod-styled.jp-mod-warn:active {
76
- background: var(--jp-warn-color-active, var(--md-red-700));
76
+ background: var(--jp-warn-color-active, var(--md-red-700, #d32f2f));
77
77
  }
78
78
 
79
79
  button.jp-mod-styled.jp-mod-warn:focus-visible {
80
- outline: 1px solid var(--jp-warn-color-active, var(--md-red-700));
80
+ outline: 1px solid var(--jp-warn-color-active, var(--md-red-700, #d32f2f));
81
81
  }
82
82
 
83
83
  .jp-Button-flat {