@jupyterlab/mainmenu-extension 0.7.4 → 0.7.5

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
@@ -14,6 +14,7 @@ export declare namespace CommandIDs {
14
14
  const closeAndCleanup = "filemenu:close-and-cleanup";
15
15
  const persistAndSave = "filemenu:persist-and-save";
16
16
  const createConsole = "filemenu:create-console";
17
+ const quit = "filemenu:quit";
17
18
  const interruptKernel = "kernelmenu:interrupt";
18
19
  const restartKernel = "kernelmenu:restart";
19
20
  const restartKernelAndClear = "kernelmenu:restart-and-clear";
package/lib/index.js CHANGED
@@ -5,7 +5,9 @@ Object.defineProperty(exports, "__esModule", { value: true });
5
5
  const algorithm_1 = require("@phosphor/algorithm");
6
6
  const widgets_1 = require("@phosphor/widgets");
7
7
  const apputils_1 = require("@jupyterlab/apputils");
8
+ const coreutils_1 = require("@jupyterlab/coreutils");
8
9
  const mainmenu_1 = require("@jupyterlab/mainmenu");
10
+ const services_1 = require("@jupyterlab/services");
9
11
  /**
10
12
  * A namespace for command IDs of semantic extension points.
11
13
  */
@@ -21,6 +23,7 @@ var CommandIDs;
21
23
  CommandIDs.closeAndCleanup = 'filemenu:close-and-cleanup';
22
24
  CommandIDs.persistAndSave = 'filemenu:persist-and-save';
23
25
  CommandIDs.createConsole = 'filemenu:create-console';
26
+ CommandIDs.quit = 'filemenu:quit';
24
27
  CommandIDs.interruptKernel = 'kernelmenu:interrupt';
25
28
  CommandIDs.restartKernel = 'kernelmenu:restart';
26
29
  CommandIDs.restartKernelAndClear = 'kernelmenu:restart-and-clear';
@@ -50,6 +53,8 @@ const menuPlugin = {
50
53
  logo.addClass('jp-MainAreaPortraitIcon');
51
54
  logo.addClass('jp-JupyterIcon');
52
55
  logo.id = 'jp-MainLogo';
56
+ let quitButton = coreutils_1.PageConfig.getOption('quit_button');
57
+ menu.fileMenu.quitEntry = quitButton === 'True';
53
58
  // Create the application menus.
54
59
  createEditMenu(app, menu.editMenu);
55
60
  createFileMenu(app, menu.fileMenu);
@@ -58,6 +63,12 @@ const menuPlugin = {
58
63
  createSettingsMenu(app, menu.settingsMenu);
59
64
  createViewMenu(app, menu.viewMenu);
60
65
  createTabsMenu(app, menu.tabsMenu);
66
+ if (menu.fileMenu.quitEntry) {
67
+ palette.addItem({
68
+ command: CommandIDs.quit,
69
+ category: 'Main Area'
70
+ });
71
+ }
61
72
  palette.addItem({
62
73
  command: CommandIDs.shutdownAllKernels,
63
74
  category: 'Kernel Operations'
@@ -157,6 +168,43 @@ function createFileMenu(app, menu) {
157
168
  isEnabled: Private.delegateEnabled(app, menu.consoleCreators, 'createConsole'),
158
169
  execute: Private.delegateExecute(app, menu.consoleCreators, 'createConsole')
159
170
  });
171
+ commands.addCommand(CommandIDs.quit, {
172
+ label: 'Quit',
173
+ caption: 'Quit JupyterLab',
174
+ execute: () => {
175
+ apputils_1.showDialog({
176
+ title: 'Quit confirmation',
177
+ body: 'Please confirm you want to quit JupyterLab.',
178
+ buttons: [apputils_1.Dialog.cancelButton(), apputils_1.Dialog.warnButton({ label: 'Quit' })]
179
+ }).then(result => {
180
+ if (result.button.accept) {
181
+ let setting = services_1.ServerConnection.makeSettings();
182
+ let apiURL = coreutils_1.URLExt.join(setting.baseUrl, 'api/shutdown');
183
+ services_1.ServerConnection.makeRequest(apiURL, { method: 'POST' }, setting)
184
+ .then(result => {
185
+ if (result.ok) {
186
+ // Close this window if the shutdown request has been successful
187
+ let body = document.createElement('div');
188
+ body.innerHTML = `<p>You have shut down the Jupyter server. You can now close this tab.</p>
189
+ <p>To use JupyterLab again, you will need to relaunch it.</p>`;
190
+ apputils_1.showDialog({
191
+ title: 'Server stopped',
192
+ body: new widgets_1.Widget({ node: body }),
193
+ buttons: []
194
+ });
195
+ window.close();
196
+ }
197
+ else {
198
+ throw new services_1.ServerConnection.ResponseError(result);
199
+ }
200
+ })
201
+ .catch(data => {
202
+ throw new services_1.ServerConnection.NetworkError(data);
203
+ });
204
+ }
205
+ });
206
+ }
207
+ });
160
208
  // Add the new group
161
209
  const newGroup = [
162
210
  { type: 'submenu', submenu: menu.newMenu.menu },
@@ -192,11 +240,16 @@ function createFileMenu(app, menu) {
192
240
  ].map(command => {
193
241
  return { command };
194
242
  });
243
+ // Add the quit group.
244
+ const quitGroup = [{ command: 'filemenu:quit' }];
195
245
  menu.addGroup(newGroup, 0);
196
246
  menu.addGroup(newViewGroup, 1);
197
247
  menu.addGroup(closeGroup, 2);
198
248
  menu.addGroup(saveGroup, 3);
199
249
  menu.addGroup(reGroup, 4);
250
+ if (menu.quitEntry) {
251
+ menu.addGroup(quitGroup, 99);
252
+ }
200
253
  }
201
254
  exports.createFileMenu = createFileMenu;
202
255
  /**
package/lib/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../mainmenu-extension/src/index.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Jupyter Development Team.\n// Distributed under the terms of the Modified BSD License.\n\nimport { each } from '@phosphor/algorithm';\n\nimport { IDisposable } from '@phosphor/disposable';\n\nimport { Menu, Widget } from '@phosphor/widgets';\n\nimport { JupyterLab, JupyterLabPlugin } from '@jupyterlab/application';\n\nimport { ICommandPalette, showDialog, Dialog } from '@jupyterlab/apputils';\n\nimport {\n IMainMenu,\n IMenuExtender,\n EditMenu,\n FileMenu,\n KernelMenu,\n MainMenu,\n RunMenu,\n SettingsMenu,\n ViewMenu,\n TabsMenu\n} from '@jupyterlab/mainmenu';\n\n/**\n * A namespace for command IDs of semantic extension points.\n */\nexport namespace CommandIDs {\n export const activatePreviouslyUsedTab =\n 'tabmenu:activate-previously-used-tab';\n\n export const undo = 'editmenu:undo';\n\n export const redo = 'editmenu:redo';\n\n export const clearCurrent = 'editmenu:clear-current';\n\n export const clearAll = 'editmenu:clear-all';\n\n export const find = 'editmenu:find';\n\n export const findAndReplace = 'editmenu:find-and-replace';\n\n export const closeAndCleanup = 'filemenu:close-and-cleanup';\n\n export const persistAndSave = 'filemenu:persist-and-save';\n\n export const createConsole = 'filemenu:create-console';\n\n export const interruptKernel = 'kernelmenu:interrupt';\n\n export const restartKernel = 'kernelmenu:restart';\n\n export const restartKernelAndClear = 'kernelmenu:restart-and-clear';\n\n export const changeKernel = 'kernelmenu:change';\n\n export const shutdownKernel = 'kernelmenu:shutdown';\n\n export const shutdownAllKernels = 'kernelmenu:shutdownAll';\n\n export const wordWrap = 'viewmenu:word-wrap';\n\n export const lineNumbering = 'viewmenu:line-numbering';\n\n export const matchBrackets = 'viewmenu:match-brackets';\n\n export const run = 'runmenu:run';\n\n export const runAll = 'runmenu:run-all';\n\n export const restartAndRunAll = 'runmenu:restart-and-run-all';\n\n export const runAbove = 'runmenu:run-above';\n\n export const runBelow = 'runmenu:run-below';\n}\n\n/**\n * A service providing an interface to the main menu.\n */\nconst menuPlugin: JupyterLabPlugin<IMainMenu> = {\n id: '@jupyterlab/mainmenu-extension:plugin',\n requires: [ICommandPalette],\n provides: IMainMenu,\n activate: (app: JupyterLab, palette: ICommandPalette): IMainMenu => {\n let menu = new MainMenu(app.commands);\n menu.id = 'jp-MainMenu';\n\n let logo = new Widget();\n logo.addClass('jp-MainAreaPortraitIcon');\n logo.addClass('jp-JupyterIcon');\n logo.id = 'jp-MainLogo';\n\n // Create the application menus.\n createEditMenu(app, menu.editMenu);\n createFileMenu(app, menu.fileMenu);\n createKernelMenu(app, menu.kernelMenu);\n createRunMenu(app, menu.runMenu);\n createSettingsMenu(app, menu.settingsMenu);\n createViewMenu(app, menu.viewMenu);\n createTabsMenu(app, menu.tabsMenu);\n\n palette.addItem({\n command: CommandIDs.shutdownAllKernels,\n category: 'Kernel Operations'\n });\n\n palette.addItem({\n command: CommandIDs.activatePreviouslyUsedTab,\n category: 'Main Area'\n });\n\n app.shell.addToTopArea(logo);\n app.shell.addToTopArea(menu);\n\n return menu;\n }\n};\n\n/**\n * Create the basic `Edit` menu.\n */\nexport function createEditMenu(app: JupyterLab, menu: EditMenu): void {\n const commands = menu.menu.commands;\n\n // Add the undo/redo commands the the Edit menu.\n commands.addCommand(CommandIDs.undo, {\n label: 'Undo',\n isEnabled: Private.delegateEnabled(app, menu.undoers, 'undo'),\n execute: Private.delegateExecute(app, menu.undoers, 'undo')\n });\n commands.addCommand(CommandIDs.redo, {\n label: 'Redo',\n isEnabled: Private.delegateEnabled(app, menu.undoers, 'redo'),\n execute: Private.delegateExecute(app, menu.undoers, 'redo')\n });\n menu.addGroup(\n [{ command: CommandIDs.undo }, { command: CommandIDs.redo }],\n 0\n );\n\n // Add the clear commands to the Edit menu.\n commands.addCommand(CommandIDs.clearCurrent, {\n label: () => {\n const noun = Private.delegateLabel(app, menu.clearers, 'noun');\n const enabled = Private.delegateEnabled(\n app,\n menu.clearers,\n 'clearCurrent'\n )();\n return `Clear${enabled ? ` ${noun}` : ''}`;\n },\n isEnabled: Private.delegateEnabled(app, menu.clearers, 'clearCurrent'),\n execute: Private.delegateExecute(app, menu.clearers, 'clearCurrent')\n });\n commands.addCommand(CommandIDs.clearAll, {\n label: () => {\n const noun = Private.delegateLabel(app, menu.clearers, 'pluralNoun');\n const enabled = Private.delegateEnabled(app, menu.clearers, 'clearAll')();\n return `Clear All${enabled ? ` ${noun}` : ''}`;\n },\n isEnabled: Private.delegateEnabled(app, menu.clearers, 'clearAll'),\n execute: Private.delegateExecute(app, menu.clearers, 'clearAll')\n });\n menu.addGroup(\n [{ command: CommandIDs.clearCurrent }, { command: CommandIDs.clearAll }],\n 10\n );\n\n // Add the find/replace commands the the Edit menu.\n commands.addCommand(CommandIDs.find, {\n label: 'Find…',\n isEnabled: Private.delegateEnabled(app, menu.findReplacers, 'find'),\n execute: Private.delegateExecute(app, menu.findReplacers, 'find')\n });\n commands.addCommand(CommandIDs.findAndReplace, {\n label: 'Find and Replace…',\n isEnabled: Private.delegateEnabled(\n app,\n menu.findReplacers,\n 'findAndReplace'\n ),\n execute: Private.delegateExecute(app, menu.findReplacers, 'findAndReplace')\n });\n menu.addGroup(\n [{ command: CommandIDs.find }, { command: CommandIDs.findAndReplace }],\n 200\n );\n}\n\n/**\n * Create the basic `File` menu.\n */\nexport function createFileMenu(app: JupyterLab, menu: FileMenu): void {\n const commands = menu.menu.commands;\n\n // Add a delegator command for closing and cleaning up an activity.\n commands.addCommand(CommandIDs.closeAndCleanup, {\n label: () => {\n const action = Private.delegateLabel(\n app,\n menu.closeAndCleaners,\n 'action'\n );\n const name = Private.delegateLabel(app, menu.closeAndCleaners, 'name');\n return `Close and ${action ? ` ${action} ${name}` : 'Shutdown'}`;\n },\n isEnabled: Private.delegateEnabled(\n app,\n menu.closeAndCleaners,\n 'closeAndCleanup'\n ),\n execute: Private.delegateExecute(\n app,\n menu.closeAndCleaners,\n 'closeAndCleanup'\n )\n });\n\n // Add a delegator command for persisting data then saving.\n commands.addCommand(CommandIDs.persistAndSave, {\n label: () => {\n const action = Private.delegateLabel(\n app,\n menu.persistAndSavers,\n 'action'\n );\n const name = Private.delegateLabel(app, menu.persistAndSavers, 'name');\n return `Save ${name} ${action || 'with Extras'}`;\n },\n isEnabled: Private.delegateEnabled(\n app,\n menu.persistAndSavers,\n 'persistAndSave'\n ),\n execute: Private.delegateExecute(\n app,\n menu.persistAndSavers,\n 'persistAndSave'\n )\n });\n\n // Add a delegator command for creating a console for an activity.\n commands.addCommand(CommandIDs.createConsole, {\n label: () => {\n const name = Private.delegateLabel(app, menu.consoleCreators, 'name');\n const label = `New Console for ${name ? name : 'Activity'}`;\n return label;\n },\n isEnabled: Private.delegateEnabled(\n app,\n menu.consoleCreators,\n 'createConsole'\n ),\n execute: Private.delegateExecute(app, menu.consoleCreators, 'createConsole')\n });\n\n // Add the new group\n const newGroup = [\n { type: 'submenu' as Menu.ItemType, submenu: menu.newMenu.menu },\n { command: 'filebrowser:create-main-launcher' }\n ];\n\n const newViewGroup = [\n { command: 'docmanager:clone' },\n { command: CommandIDs.createConsole },\n { command: 'docmanager:open-direct' }\n ];\n\n // Add the close group\n const closeGroup = [\n 'docmanager:close',\n 'filemenu:close-and-cleanup',\n 'docmanager:close-all-files'\n ].map(command => {\n return { command };\n });\n\n // Add save group.\n const saveGroup = [\n 'docmanager:save',\n 'filemenu:persist-and-save',\n 'docmanager:save-as',\n 'docmanager:save-all'\n ].map(command => {\n return { command };\n });\n\n // Add the re group.\n const reGroup = [\n 'docmanager:reload',\n 'docmanager:restore-checkpoint',\n 'docmanager:rename'\n ].map(command => {\n return { command };\n });\n\n menu.addGroup(newGroup, 0);\n menu.addGroup(newViewGroup, 1);\n menu.addGroup(closeGroup, 2);\n menu.addGroup(saveGroup, 3);\n menu.addGroup(reGroup, 4);\n}\n\n/**\n * Create the basic `Kernel` menu.\n */\nexport function createKernelMenu(app: JupyterLab, menu: KernelMenu): void {\n const commands = menu.menu.commands;\n\n commands.addCommand(CommandIDs.interruptKernel, {\n label: 'Interrupt Kernel',\n isEnabled: Private.delegateEnabled(\n app,\n menu.kernelUsers,\n 'interruptKernel'\n ),\n execute: Private.delegateExecute(app, menu.kernelUsers, 'interruptKernel')\n });\n\n commands.addCommand(CommandIDs.restartKernel, {\n label: 'Restart Kernel…',\n isEnabled: Private.delegateEnabled(app, menu.kernelUsers, 'restartKernel'),\n execute: Private.delegateExecute(app, menu.kernelUsers, 'restartKernel')\n });\n\n commands.addCommand(CommandIDs.restartKernelAndClear, {\n label: () => {\n const noun = Private.delegateLabel(app, menu.kernelUsers, 'noun');\n const enabled = Private.delegateEnabled(\n app,\n menu.kernelUsers,\n 'restartKernelAndClear'\n )();\n return `Restart Kernel and Clear${enabled ? ` ${noun}` : ''}…`;\n },\n isEnabled: Private.delegateEnabled(\n app,\n menu.kernelUsers,\n 'restartKernelAndClear'\n ),\n execute: Private.delegateExecute(\n app,\n menu.kernelUsers,\n 'restartKernelAndClear'\n )\n });\n\n commands.addCommand(CommandIDs.changeKernel, {\n label: 'Change Kernel…',\n isEnabled: Private.delegateEnabled(app, menu.kernelUsers, 'changeKernel'),\n execute: Private.delegateExecute(app, menu.kernelUsers, 'changeKernel')\n });\n\n commands.addCommand(CommandIDs.shutdownKernel, {\n label: 'Shutdown Kernel',\n isEnabled: Private.delegateEnabled(app, menu.kernelUsers, 'shutdownKernel'),\n execute: Private.delegateExecute(app, menu.kernelUsers, 'shutdownKernel')\n });\n\n commands.addCommand(CommandIDs.shutdownAllKernels, {\n label: 'Shutdown All Kernels…',\n isEnabled: () => {\n return app.serviceManager.sessions.running().next() !== undefined;\n },\n execute: () => {\n showDialog({\n title: 'Shutdown All?',\n body: 'Shut down all kernels?',\n buttons: [\n Dialog.cancelButton(),\n Dialog.warnButton({ label: 'SHUTDOWN' })\n ]\n }).then(result => {\n if (result.button.accept) {\n return app.serviceManager.sessions.shutdownAll();\n }\n });\n }\n });\n\n const restartGroup = [\n CommandIDs.restartKernel,\n CommandIDs.restartKernelAndClear,\n CommandIDs.restartAndRunAll\n ].map(command => {\n return { command };\n });\n\n menu.addGroup([{ command: CommandIDs.interruptKernel }], 0);\n menu.addGroup(restartGroup, 1);\n menu.addGroup(\n [\n { command: CommandIDs.shutdownKernel },\n { command: CommandIDs.shutdownAllKernels }\n ],\n 2\n );\n menu.addGroup([{ command: CommandIDs.changeKernel }], 3);\n}\n\n/**\n * Create the basic `View` menu.\n */\nexport function createViewMenu(app: JupyterLab, menu: ViewMenu): void {\n const commands = menu.menu.commands;\n\n commands.addCommand(CommandIDs.lineNumbering, {\n label: 'Show Line Numbers',\n isEnabled: Private.delegateEnabled(\n app,\n menu.editorViewers,\n 'toggleLineNumbers'\n ),\n isToggled: Private.delegateToggled(\n app,\n menu.editorViewers,\n 'lineNumbersToggled'\n ),\n execute: Private.delegateExecute(\n app,\n menu.editorViewers,\n 'toggleLineNumbers'\n )\n });\n\n commands.addCommand(CommandIDs.matchBrackets, {\n label: 'Match Brackets',\n isEnabled: Private.delegateEnabled(\n app,\n menu.editorViewers,\n 'toggleMatchBrackets'\n ),\n isToggled: Private.delegateToggled(\n app,\n menu.editorViewers,\n 'matchBracketsToggled'\n ),\n execute: Private.delegateExecute(\n app,\n menu.editorViewers,\n 'toggleMatchBrackets'\n )\n });\n\n commands.addCommand(CommandIDs.wordWrap, {\n label: 'Wrap Words',\n isEnabled: Private.delegateEnabled(\n app,\n menu.editorViewers,\n 'toggleWordWrap'\n ),\n isToggled: Private.delegateToggled(\n app,\n menu.editorViewers,\n 'wordWrapToggled'\n ),\n execute: Private.delegateExecute(app, menu.editorViewers, 'toggleWordWrap')\n });\n\n menu.addGroup(\n [\n { command: 'application:toggle-left-area' },\n { command: 'application:toggle-right-area' }\n ],\n 0\n );\n\n const editorViewerGroup = [\n CommandIDs.lineNumbering,\n CommandIDs.matchBrackets,\n CommandIDs.wordWrap\n ].map(command => {\n return { command };\n });\n menu.addGroup(editorViewerGroup, 10);\n\n // Add the command for toggling single-document mode.\n menu.addGroup(\n [\n { command: 'application:toggle-presentation-mode' },\n { command: 'application:toggle-mode' }\n ],\n 1000\n );\n}\n\nexport function createRunMenu(app: JupyterLab, menu: RunMenu): void {\n const commands = menu.menu.commands;\n\n commands.addCommand(CommandIDs.run, {\n label: () => {\n const noun = Private.delegateLabel(app, menu.codeRunners, 'noun');\n const enabled = Private.delegateEnabled(app, menu.codeRunners, 'run')();\n return `Run Selected${enabled ? ` ${noun}` : ''}`;\n },\n isEnabled: Private.delegateEnabled(app, menu.codeRunners, 'run'),\n execute: Private.delegateExecute(app, menu.codeRunners, 'run')\n });\n\n commands.addCommand(CommandIDs.runAll, {\n label: () => {\n const noun = Private.delegateLabel(app, menu.codeRunners, 'noun');\n const enabled = Private.delegateEnabled(\n app,\n menu.codeRunners,\n 'runAll'\n )();\n return `Run All${enabled ? ` ${noun}` : ''}`;\n },\n isEnabled: Private.delegateEnabled(app, menu.codeRunners, 'runAll'),\n execute: Private.delegateExecute(app, menu.codeRunners, 'runAll')\n });\n\n commands.addCommand(CommandIDs.restartAndRunAll, {\n label: () => {\n const noun = Private.delegateLabel(app, menu.codeRunners, 'noun');\n const enabled = Private.delegateEnabled(\n app,\n menu.codeRunners,\n 'restartAndRunAll'\n )();\n return `Restart Kernel and Run All${enabled ? ` ${noun}` : ''}…`;\n },\n isEnabled: Private.delegateEnabled(\n app,\n menu.codeRunners,\n 'restartAndRunAll'\n ),\n execute: Private.delegateExecute(app, menu.codeRunners, 'restartAndRunAll')\n });\n\n const runAllGroup = [CommandIDs.runAll, CommandIDs.restartAndRunAll].map(\n command => {\n return { command };\n }\n );\n\n menu.addGroup([{ command: CommandIDs.run }], 0);\n menu.addGroup(runAllGroup, 999);\n}\n\nexport function createSettingsMenu(app: JupyterLab, menu: SettingsMenu): void {\n menu.addGroup([{ command: 'settingeditor:open' }], 1000);\n}\n\nexport function createTabsMenu(app: JupyterLab, menu: TabsMenu): void {\n const commands = app.commands;\n\n // Add commands for cycling the active tabs.\n menu.addGroup(\n [\n { command: 'application:activate-next-tab' },\n { command: 'application:activate-previous-tab' },\n { command: CommandIDs.activatePreviouslyUsedTab }\n ],\n 0\n );\n\n // A list of the active tabs in the main area.\n const tabGroup: Menu.IItemOptions[] = [];\n // A disposable for getting rid of the out-of-date tabs list.\n let disposable: IDisposable;\n\n // Utility function to create a command to activate\n // a given tab, or get it if it already exists.\n const createMenuItem = (widget: Widget): Menu.IItemOptions => {\n const commandID = `tabmenu:activate-${widget.id}`;\n if (!commands.hasCommand(commandID)) {\n commands.addCommand(commandID, {\n label: () => widget.title.label,\n isVisible: () => !widget.isDisposed,\n isEnabled: () => !widget.isDisposed,\n isToggled: () => app.shell.currentWidget === widget,\n execute: () => app.shell.activateById(widget.id)\n });\n }\n return { command: commandID };\n };\n\n let previousId = '';\n\n // Command to toggle between the current\n // tab and the last modified tab.\n commands.addCommand(CommandIDs.activatePreviouslyUsedTab, {\n label: 'Activate Previously Used Tab',\n isEnabled: () => !!previousId,\n execute: () =>\n previousId && app.commands.execute(`tabmenu:activate-${previousId}`)\n });\n\n app.restored.then(() => {\n // Iterate over the current widgets in the\n // main area, and add them to the tab group\n // of the menu.\n const populateTabs = () => {\n // remove the previous tab list\n if (disposable && !disposable.isDisposed) {\n disposable.dispose();\n }\n tabGroup.length = 0;\n\n let isPreviouslyUsedTabAttached = false;\n each(app.shell.widgets('main'), widget => {\n if (widget.id === previousId) {\n isPreviouslyUsedTabAttached = true;\n }\n tabGroup.push(createMenuItem(widget));\n });\n disposable = menu.addGroup(tabGroup, 1);\n previousId = isPreviouslyUsedTabAttached ? previousId : '';\n };\n populateTabs();\n app.shell.layoutModified.connect(() => {\n populateTabs();\n });\n // Update the id of the previous active tab if\n // a new tab is selected.\n app.shell.currentChanged.connect((sender, args) => {\n let widget = args.oldValue;\n if (!widget) {\n return;\n }\n previousId = widget.id;\n });\n });\n}\n\nexport default menuPlugin;\n\n/**\n * A namespace for Private data.\n */\nnamespace Private {\n /**\n * Return the first value of the iterable that satisfies the predicate\n * function.\n */\n function find<T>(\n it: Iterable<T>,\n predicate: (value: T) => boolean\n ): T | undefined {\n for (let value of it) {\n if (predicate(value)) {\n return value;\n }\n }\n return undefined;\n }\n\n /**\n * A utility function that delegates a portion of a label to an IMenuExtender.\n */\n export function delegateLabel<E extends IMenuExtender<Widget>>(\n app: JupyterLab,\n s: Set<E>,\n label: keyof E\n ): string {\n let widget = app.shell.currentWidget;\n const extender = find(s, value => value.tracker.has(widget));\n if (!extender) {\n return '';\n }\n // Coerce the result to be a string. When Typedoc is updated to use\n // Typescript 2.8, we can possibly use conditional types to get Typescript\n // to recognize this is a string.\n return (extender[label] as any) as string;\n }\n\n /**\n * A utility function that delegates command execution\n * to an IMenuExtender.\n */\n export function delegateExecute<E extends IMenuExtender<Widget>>(\n app: JupyterLab,\n s: Set<E>,\n executor: keyof E\n ): () => Promise<any> {\n return () => {\n let widget = app.shell.currentWidget;\n const extender = find(s, value => value.tracker.has(widget));\n if (!extender) {\n return Promise.resolve(void 0);\n }\n // Coerce the result to be a function. When Typedoc is updated to use\n // Typescript 2.8, we can possibly use conditional types to get Typescript\n // to recognize this is a function.\n let f = (extender[executor] as any) as (w: Widget) => Promise<any>;\n return f(widget);\n };\n }\n\n /**\n * A utility function that delegates whether a command is enabled\n * to an IMenuExtender.\n */\n export function delegateEnabled<E extends IMenuExtender<Widget>>(\n app: JupyterLab,\n s: Set<E>,\n executor: keyof E\n ): () => boolean {\n return () => {\n let widget = app.shell.currentWidget;\n const extender = find(s, value => value.tracker.has(widget));\n return (\n !!extender &&\n !!extender[executor] &&\n (extender.isEnabled ? extender.isEnabled(widget) : true)\n );\n };\n }\n\n /**\n * A utility function that delegates whether a command is toggled\n * for an IMenuExtender.\n */\n export function delegateToggled<E extends IMenuExtender<Widget>>(\n app: JupyterLab,\n s: Set<E>,\n toggled: keyof E\n ): () => boolean {\n return () => {\n let widget = app.shell.currentWidget;\n const extender = find(s, value => value.tracker.has(widget));\n // Coerce extender[toggled] to be a function. When Typedoc is updated to use\n // Typescript 2.8, we can possibly use conditional types to get Typescript\n // to recognize this is a function.\n return (\n !!extender &&\n !!extender[toggled] &&\n !!((extender[toggled] as any) as (w: Widget) => (() => boolean))(widget)\n );\n };\n }\n}\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../mainmenu-extension/src/index.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Jupyter Development Team.\n// Distributed under the terms of the Modified BSD License.\n\nimport { each } from '@phosphor/algorithm';\n\nimport { IDisposable } from '@phosphor/disposable';\n\nimport { Menu, Widget } from '@phosphor/widgets';\n\nimport { JupyterLab, JupyterLabPlugin } from '@jupyterlab/application';\n\nimport { ICommandPalette, showDialog, Dialog } from '@jupyterlab/apputils';\n\nimport { PageConfig, URLExt } from '@jupyterlab/coreutils';\n\nimport {\n IMainMenu,\n IMenuExtender,\n EditMenu,\n FileMenu,\n KernelMenu,\n MainMenu,\n RunMenu,\n SettingsMenu,\n ViewMenu,\n TabsMenu\n} from '@jupyterlab/mainmenu';\n\nimport { ServerConnection } from '@jupyterlab/services';\n\n/**\n * A namespace for command IDs of semantic extension points.\n */\nexport namespace CommandIDs {\n export const activatePreviouslyUsedTab =\n 'tabmenu:activate-previously-used-tab';\n\n export const undo = 'editmenu:undo';\n\n export const redo = 'editmenu:redo';\n\n export const clearCurrent = 'editmenu:clear-current';\n\n export const clearAll = 'editmenu:clear-all';\n\n export const find = 'editmenu:find';\n\n export const findAndReplace = 'editmenu:find-and-replace';\n\n export const closeAndCleanup = 'filemenu:close-and-cleanup';\n\n export const persistAndSave = 'filemenu:persist-and-save';\n\n export const createConsole = 'filemenu:create-console';\n\n export const quit = 'filemenu:quit';\n\n export const interruptKernel = 'kernelmenu:interrupt';\n\n export const restartKernel = 'kernelmenu:restart';\n\n export const restartKernelAndClear = 'kernelmenu:restart-and-clear';\n\n export const changeKernel = 'kernelmenu:change';\n\n export const shutdownKernel = 'kernelmenu:shutdown';\n\n export const shutdownAllKernels = 'kernelmenu:shutdownAll';\n\n export const wordWrap = 'viewmenu:word-wrap';\n\n export const lineNumbering = 'viewmenu:line-numbering';\n\n export const matchBrackets = 'viewmenu:match-brackets';\n\n export const run = 'runmenu:run';\n\n export const runAll = 'runmenu:run-all';\n\n export const restartAndRunAll = 'runmenu:restart-and-run-all';\n\n export const runAbove = 'runmenu:run-above';\n\n export const runBelow = 'runmenu:run-below';\n}\n\n/**\n * A service providing an interface to the main menu.\n */\nconst menuPlugin: JupyterLabPlugin<IMainMenu> = {\n id: '@jupyterlab/mainmenu-extension:plugin',\n requires: [ICommandPalette],\n provides: IMainMenu,\n activate: (app: JupyterLab, palette: ICommandPalette): IMainMenu => {\n let menu = new MainMenu(app.commands);\n menu.id = 'jp-MainMenu';\n\n let logo = new Widget();\n logo.addClass('jp-MainAreaPortraitIcon');\n logo.addClass('jp-JupyterIcon');\n logo.id = 'jp-MainLogo';\n\n let quitButton = PageConfig.getOption('quit_button');\n menu.fileMenu.quitEntry = quitButton === 'True';\n\n // Create the application menus.\n createEditMenu(app, menu.editMenu);\n createFileMenu(app, menu.fileMenu);\n createKernelMenu(app, menu.kernelMenu);\n createRunMenu(app, menu.runMenu);\n createSettingsMenu(app, menu.settingsMenu);\n createViewMenu(app, menu.viewMenu);\n createTabsMenu(app, menu.tabsMenu);\n\n if (menu.fileMenu.quitEntry) {\n palette.addItem({\n command: CommandIDs.quit,\n category: 'Main Area'\n });\n }\n\n palette.addItem({\n command: CommandIDs.shutdownAllKernels,\n category: 'Kernel Operations'\n });\n\n palette.addItem({\n command: CommandIDs.activatePreviouslyUsedTab,\n category: 'Main Area'\n });\n\n app.shell.addToTopArea(logo);\n app.shell.addToTopArea(menu);\n\n return menu;\n }\n};\n\n/**\n * Create the basic `Edit` menu.\n */\nexport function createEditMenu(app: JupyterLab, menu: EditMenu): void {\n const commands = menu.menu.commands;\n\n // Add the undo/redo commands the the Edit menu.\n commands.addCommand(CommandIDs.undo, {\n label: 'Undo',\n isEnabled: Private.delegateEnabled(app, menu.undoers, 'undo'),\n execute: Private.delegateExecute(app, menu.undoers, 'undo')\n });\n commands.addCommand(CommandIDs.redo, {\n label: 'Redo',\n isEnabled: Private.delegateEnabled(app, menu.undoers, 'redo'),\n execute: Private.delegateExecute(app, menu.undoers, 'redo')\n });\n menu.addGroup(\n [{ command: CommandIDs.undo }, { command: CommandIDs.redo }],\n 0\n );\n\n // Add the clear commands to the Edit menu.\n commands.addCommand(CommandIDs.clearCurrent, {\n label: () => {\n const noun = Private.delegateLabel(app, menu.clearers, 'noun');\n const enabled = Private.delegateEnabled(\n app,\n menu.clearers,\n 'clearCurrent'\n )();\n return `Clear${enabled ? ` ${noun}` : ''}`;\n },\n isEnabled: Private.delegateEnabled(app, menu.clearers, 'clearCurrent'),\n execute: Private.delegateExecute(app, menu.clearers, 'clearCurrent')\n });\n commands.addCommand(CommandIDs.clearAll, {\n label: () => {\n const noun = Private.delegateLabel(app, menu.clearers, 'pluralNoun');\n const enabled = Private.delegateEnabled(app, menu.clearers, 'clearAll')();\n return `Clear All${enabled ? ` ${noun}` : ''}`;\n },\n isEnabled: Private.delegateEnabled(app, menu.clearers, 'clearAll'),\n execute: Private.delegateExecute(app, menu.clearers, 'clearAll')\n });\n menu.addGroup(\n [{ command: CommandIDs.clearCurrent }, { command: CommandIDs.clearAll }],\n 10\n );\n\n // Add the find/replace commands the the Edit menu.\n commands.addCommand(CommandIDs.find, {\n label: 'Find…',\n isEnabled: Private.delegateEnabled(app, menu.findReplacers, 'find'),\n execute: Private.delegateExecute(app, menu.findReplacers, 'find')\n });\n commands.addCommand(CommandIDs.findAndReplace, {\n label: 'Find and Replace…',\n isEnabled: Private.delegateEnabled(\n app,\n menu.findReplacers,\n 'findAndReplace'\n ),\n execute: Private.delegateExecute(app, menu.findReplacers, 'findAndReplace')\n });\n menu.addGroup(\n [{ command: CommandIDs.find }, { command: CommandIDs.findAndReplace }],\n 200\n );\n}\n\n/**\n * Create the basic `File` menu.\n */\nexport function createFileMenu(app: JupyterLab, menu: FileMenu): void {\n const commands = menu.menu.commands;\n\n // Add a delegator command for closing and cleaning up an activity.\n commands.addCommand(CommandIDs.closeAndCleanup, {\n label: () => {\n const action = Private.delegateLabel(\n app,\n menu.closeAndCleaners,\n 'action'\n );\n const name = Private.delegateLabel(app, menu.closeAndCleaners, 'name');\n return `Close and ${action ? ` ${action} ${name}` : 'Shutdown'}`;\n },\n isEnabled: Private.delegateEnabled(\n app,\n menu.closeAndCleaners,\n 'closeAndCleanup'\n ),\n execute: Private.delegateExecute(\n app,\n menu.closeAndCleaners,\n 'closeAndCleanup'\n )\n });\n\n // Add a delegator command for persisting data then saving.\n commands.addCommand(CommandIDs.persistAndSave, {\n label: () => {\n const action = Private.delegateLabel(\n app,\n menu.persistAndSavers,\n 'action'\n );\n const name = Private.delegateLabel(app, menu.persistAndSavers, 'name');\n return `Save ${name} ${action || 'with Extras'}`;\n },\n isEnabled: Private.delegateEnabled(\n app,\n menu.persistAndSavers,\n 'persistAndSave'\n ),\n execute: Private.delegateExecute(\n app,\n menu.persistAndSavers,\n 'persistAndSave'\n )\n });\n\n // Add a delegator command for creating a console for an activity.\n commands.addCommand(CommandIDs.createConsole, {\n label: () => {\n const name = Private.delegateLabel(app, menu.consoleCreators, 'name');\n const label = `New Console for ${name ? name : 'Activity'}`;\n return label;\n },\n isEnabled: Private.delegateEnabled(\n app,\n menu.consoleCreators,\n 'createConsole'\n ),\n execute: Private.delegateExecute(app, menu.consoleCreators, 'createConsole')\n });\n\n commands.addCommand(CommandIDs.quit, {\n label: 'Quit',\n caption: 'Quit JupyterLab',\n execute: () => {\n showDialog({\n title: 'Quit confirmation',\n body: 'Please confirm you want to quit JupyterLab.',\n buttons: [Dialog.cancelButton(), Dialog.warnButton({ label: 'Quit' })]\n }).then(result => {\n if (result.button.accept) {\n let setting = ServerConnection.makeSettings();\n let apiURL = URLExt.join(setting.baseUrl, 'api/shutdown');\n ServerConnection.makeRequest(apiURL, { method: 'POST' }, setting)\n .then(result => {\n if (result.ok) {\n // Close this window if the shutdown request has been successful\n let body = document.createElement('div');\n body.innerHTML = `<p>You have shut down the Jupyter server. You can now close this tab.</p>\n <p>To use JupyterLab again, you will need to relaunch it.</p>`;\n showDialog({\n title: 'Server stopped',\n body: new Widget({ node: body }),\n buttons: []\n });\n window.close();\n } else {\n throw new ServerConnection.ResponseError(result);\n }\n })\n .catch(data => {\n throw new ServerConnection.NetworkError(data);\n });\n }\n });\n }\n });\n\n // Add the new group\n const newGroup = [\n { type: 'submenu' as Menu.ItemType, submenu: menu.newMenu.menu },\n { command: 'filebrowser:create-main-launcher' }\n ];\n\n const newViewGroup = [\n { command: 'docmanager:clone' },\n { command: CommandIDs.createConsole },\n { command: 'docmanager:open-direct' }\n ];\n\n // Add the close group\n const closeGroup = [\n 'docmanager:close',\n 'filemenu:close-and-cleanup',\n 'docmanager:close-all-files'\n ].map(command => {\n return { command };\n });\n\n // Add save group.\n const saveGroup = [\n 'docmanager:save',\n 'filemenu:persist-and-save',\n 'docmanager:save-as',\n 'docmanager:save-all'\n ].map(command => {\n return { command };\n });\n\n // Add the re group.\n const reGroup = [\n 'docmanager:reload',\n 'docmanager:restore-checkpoint',\n 'docmanager:rename'\n ].map(command => {\n return { command };\n });\n\n // Add the quit group.\n const quitGroup = [{ command: 'filemenu:quit' }];\n\n menu.addGroup(newGroup, 0);\n menu.addGroup(newViewGroup, 1);\n menu.addGroup(closeGroup, 2);\n menu.addGroup(saveGroup, 3);\n menu.addGroup(reGroup, 4);\n if (menu.quitEntry) {\n menu.addGroup(quitGroup, 99);\n }\n}\n\n/**\n * Create the basic `Kernel` menu.\n */\nexport function createKernelMenu(app: JupyterLab, menu: KernelMenu): void {\n const commands = menu.menu.commands;\n\n commands.addCommand(CommandIDs.interruptKernel, {\n label: 'Interrupt Kernel',\n isEnabled: Private.delegateEnabled(\n app,\n menu.kernelUsers,\n 'interruptKernel'\n ),\n execute: Private.delegateExecute(app, menu.kernelUsers, 'interruptKernel')\n });\n\n commands.addCommand(CommandIDs.restartKernel, {\n label: 'Restart Kernel…',\n isEnabled: Private.delegateEnabled(app, menu.kernelUsers, 'restartKernel'),\n execute: Private.delegateExecute(app, menu.kernelUsers, 'restartKernel')\n });\n\n commands.addCommand(CommandIDs.restartKernelAndClear, {\n label: () => {\n const noun = Private.delegateLabel(app, menu.kernelUsers, 'noun');\n const enabled = Private.delegateEnabled(\n app,\n menu.kernelUsers,\n 'restartKernelAndClear'\n )();\n return `Restart Kernel and Clear${enabled ? ` ${noun}` : ''}…`;\n },\n isEnabled: Private.delegateEnabled(\n app,\n menu.kernelUsers,\n 'restartKernelAndClear'\n ),\n execute: Private.delegateExecute(\n app,\n menu.kernelUsers,\n 'restartKernelAndClear'\n )\n });\n\n commands.addCommand(CommandIDs.changeKernel, {\n label: 'Change Kernel…',\n isEnabled: Private.delegateEnabled(app, menu.kernelUsers, 'changeKernel'),\n execute: Private.delegateExecute(app, menu.kernelUsers, 'changeKernel')\n });\n\n commands.addCommand(CommandIDs.shutdownKernel, {\n label: 'Shutdown Kernel',\n isEnabled: Private.delegateEnabled(app, menu.kernelUsers, 'shutdownKernel'),\n execute: Private.delegateExecute(app, menu.kernelUsers, 'shutdownKernel')\n });\n\n commands.addCommand(CommandIDs.shutdownAllKernels, {\n label: 'Shutdown All Kernels…',\n isEnabled: () => {\n return app.serviceManager.sessions.running().next() !== undefined;\n },\n execute: () => {\n showDialog({\n title: 'Shutdown All?',\n body: 'Shut down all kernels?',\n buttons: [\n Dialog.cancelButton(),\n Dialog.warnButton({ label: 'SHUTDOWN' })\n ]\n }).then(result => {\n if (result.button.accept) {\n return app.serviceManager.sessions.shutdownAll();\n }\n });\n }\n });\n\n const restartGroup = [\n CommandIDs.restartKernel,\n CommandIDs.restartKernelAndClear,\n CommandIDs.restartAndRunAll\n ].map(command => {\n return { command };\n });\n\n menu.addGroup([{ command: CommandIDs.interruptKernel }], 0);\n menu.addGroup(restartGroup, 1);\n menu.addGroup(\n [\n { command: CommandIDs.shutdownKernel },\n { command: CommandIDs.shutdownAllKernels }\n ],\n 2\n );\n menu.addGroup([{ command: CommandIDs.changeKernel }], 3);\n}\n\n/**\n * Create the basic `View` menu.\n */\nexport function createViewMenu(app: JupyterLab, menu: ViewMenu): void {\n const commands = menu.menu.commands;\n\n commands.addCommand(CommandIDs.lineNumbering, {\n label: 'Show Line Numbers',\n isEnabled: Private.delegateEnabled(\n app,\n menu.editorViewers,\n 'toggleLineNumbers'\n ),\n isToggled: Private.delegateToggled(\n app,\n menu.editorViewers,\n 'lineNumbersToggled'\n ),\n execute: Private.delegateExecute(\n app,\n menu.editorViewers,\n 'toggleLineNumbers'\n )\n });\n\n commands.addCommand(CommandIDs.matchBrackets, {\n label: 'Match Brackets',\n isEnabled: Private.delegateEnabled(\n app,\n menu.editorViewers,\n 'toggleMatchBrackets'\n ),\n isToggled: Private.delegateToggled(\n app,\n menu.editorViewers,\n 'matchBracketsToggled'\n ),\n execute: Private.delegateExecute(\n app,\n menu.editorViewers,\n 'toggleMatchBrackets'\n )\n });\n\n commands.addCommand(CommandIDs.wordWrap, {\n label: 'Wrap Words',\n isEnabled: Private.delegateEnabled(\n app,\n menu.editorViewers,\n 'toggleWordWrap'\n ),\n isToggled: Private.delegateToggled(\n app,\n menu.editorViewers,\n 'wordWrapToggled'\n ),\n execute: Private.delegateExecute(app, menu.editorViewers, 'toggleWordWrap')\n });\n\n menu.addGroup(\n [\n { command: 'application:toggle-left-area' },\n { command: 'application:toggle-right-area' }\n ],\n 0\n );\n\n const editorViewerGroup = [\n CommandIDs.lineNumbering,\n CommandIDs.matchBrackets,\n CommandIDs.wordWrap\n ].map(command => {\n return { command };\n });\n menu.addGroup(editorViewerGroup, 10);\n\n // Add the command for toggling single-document mode.\n menu.addGroup(\n [\n { command: 'application:toggle-presentation-mode' },\n { command: 'application:toggle-mode' }\n ],\n 1000\n );\n}\n\nexport function createRunMenu(app: JupyterLab, menu: RunMenu): void {\n const commands = menu.menu.commands;\n\n commands.addCommand(CommandIDs.run, {\n label: () => {\n const noun = Private.delegateLabel(app, menu.codeRunners, 'noun');\n const enabled = Private.delegateEnabled(app, menu.codeRunners, 'run')();\n return `Run Selected${enabled ? ` ${noun}` : ''}`;\n },\n isEnabled: Private.delegateEnabled(app, menu.codeRunners, 'run'),\n execute: Private.delegateExecute(app, menu.codeRunners, 'run')\n });\n\n commands.addCommand(CommandIDs.runAll, {\n label: () => {\n const noun = Private.delegateLabel(app, menu.codeRunners, 'noun');\n const enabled = Private.delegateEnabled(\n app,\n menu.codeRunners,\n 'runAll'\n )();\n return `Run All${enabled ? ` ${noun}` : ''}`;\n },\n isEnabled: Private.delegateEnabled(app, menu.codeRunners, 'runAll'),\n execute: Private.delegateExecute(app, menu.codeRunners, 'runAll')\n });\n\n commands.addCommand(CommandIDs.restartAndRunAll, {\n label: () => {\n const noun = Private.delegateLabel(app, menu.codeRunners, 'noun');\n const enabled = Private.delegateEnabled(\n app,\n menu.codeRunners,\n 'restartAndRunAll'\n )();\n return `Restart Kernel and Run All${enabled ? ` ${noun}` : ''}…`;\n },\n isEnabled: Private.delegateEnabled(\n app,\n menu.codeRunners,\n 'restartAndRunAll'\n ),\n execute: Private.delegateExecute(app, menu.codeRunners, 'restartAndRunAll')\n });\n\n const runAllGroup = [CommandIDs.runAll, CommandIDs.restartAndRunAll].map(\n command => {\n return { command };\n }\n );\n\n menu.addGroup([{ command: CommandIDs.run }], 0);\n menu.addGroup(runAllGroup, 999);\n}\n\nexport function createSettingsMenu(app: JupyterLab, menu: SettingsMenu): void {\n menu.addGroup([{ command: 'settingeditor:open' }], 1000);\n}\n\nexport function createTabsMenu(app: JupyterLab, menu: TabsMenu): void {\n const commands = app.commands;\n\n // Add commands for cycling the active tabs.\n menu.addGroup(\n [\n { command: 'application:activate-next-tab' },\n { command: 'application:activate-previous-tab' },\n { command: CommandIDs.activatePreviouslyUsedTab }\n ],\n 0\n );\n\n // A list of the active tabs in the main area.\n const tabGroup: Menu.IItemOptions[] = [];\n // A disposable for getting rid of the out-of-date tabs list.\n let disposable: IDisposable;\n\n // Utility function to create a command to activate\n // a given tab, or get it if it already exists.\n const createMenuItem = (widget: Widget): Menu.IItemOptions => {\n const commandID = `tabmenu:activate-${widget.id}`;\n if (!commands.hasCommand(commandID)) {\n commands.addCommand(commandID, {\n label: () => widget.title.label,\n isVisible: () => !widget.isDisposed,\n isEnabled: () => !widget.isDisposed,\n isToggled: () => app.shell.currentWidget === widget,\n execute: () => app.shell.activateById(widget.id)\n });\n }\n return { command: commandID };\n };\n\n let previousId = '';\n\n // Command to toggle between the current\n // tab and the last modified tab.\n commands.addCommand(CommandIDs.activatePreviouslyUsedTab, {\n label: 'Activate Previously Used Tab',\n isEnabled: () => !!previousId,\n execute: () =>\n previousId && app.commands.execute(`tabmenu:activate-${previousId}`)\n });\n\n app.restored.then(() => {\n // Iterate over the current widgets in the\n // main area, and add them to the tab group\n // of the menu.\n const populateTabs = () => {\n // remove the previous tab list\n if (disposable && !disposable.isDisposed) {\n disposable.dispose();\n }\n tabGroup.length = 0;\n\n let isPreviouslyUsedTabAttached = false;\n each(app.shell.widgets('main'), widget => {\n if (widget.id === previousId) {\n isPreviouslyUsedTabAttached = true;\n }\n tabGroup.push(createMenuItem(widget));\n });\n disposable = menu.addGroup(tabGroup, 1);\n previousId = isPreviouslyUsedTabAttached ? previousId : '';\n };\n populateTabs();\n app.shell.layoutModified.connect(() => {\n populateTabs();\n });\n // Update the id of the previous active tab if\n // a new tab is selected.\n app.shell.currentChanged.connect((sender, args) => {\n let widget = args.oldValue;\n if (!widget) {\n return;\n }\n previousId = widget.id;\n });\n });\n}\n\nexport default menuPlugin;\n\n/**\n * A namespace for Private data.\n */\nnamespace Private {\n /**\n * Return the first value of the iterable that satisfies the predicate\n * function.\n */\n function find<T>(\n it: Iterable<T>,\n predicate: (value: T) => boolean\n ): T | undefined {\n for (let value of it) {\n if (predicate(value)) {\n return value;\n }\n }\n return undefined;\n }\n\n /**\n * A utility function that delegates a portion of a label to an IMenuExtender.\n */\n export function delegateLabel<E extends IMenuExtender<Widget>>(\n app: JupyterLab,\n s: Set<E>,\n label: keyof E\n ): string {\n let widget = app.shell.currentWidget;\n const extender = find(s, value => value.tracker.has(widget));\n if (!extender) {\n return '';\n }\n // Coerce the result to be a string. When Typedoc is updated to use\n // Typescript 2.8, we can possibly use conditional types to get Typescript\n // to recognize this is a string.\n return (extender[label] as any) as string;\n }\n\n /**\n * A utility function that delegates command execution\n * to an IMenuExtender.\n */\n export function delegateExecute<E extends IMenuExtender<Widget>>(\n app: JupyterLab,\n s: Set<E>,\n executor: keyof E\n ): () => Promise<any> {\n return () => {\n let widget = app.shell.currentWidget;\n const extender = find(s, value => value.tracker.has(widget));\n if (!extender) {\n return Promise.resolve(void 0);\n }\n // Coerce the result to be a function. When Typedoc is updated to use\n // Typescript 2.8, we can possibly use conditional types to get Typescript\n // to recognize this is a function.\n let f = (extender[executor] as any) as (w: Widget) => Promise<any>;\n return f(widget);\n };\n }\n\n /**\n * A utility function that delegates whether a command is enabled\n * to an IMenuExtender.\n */\n export function delegateEnabled<E extends IMenuExtender<Widget>>(\n app: JupyterLab,\n s: Set<E>,\n executor: keyof E\n ): () => boolean {\n return () => {\n let widget = app.shell.currentWidget;\n const extender = find(s, value => value.tracker.has(widget));\n return (\n !!extender &&\n !!extender[executor] &&\n (extender.isEnabled ? extender.isEnabled(widget) : true)\n );\n };\n }\n\n /**\n * A utility function that delegates whether a command is toggled\n * for an IMenuExtender.\n */\n export function delegateToggled<E extends IMenuExtender<Widget>>(\n app: JupyterLab,\n s: Set<E>,\n toggled: keyof E\n ): () => boolean {\n return () => {\n let widget = app.shell.currentWidget;\n const extender = find(s, value => value.tracker.has(widget));\n // Coerce extender[toggled] to be a function. When Typedoc is updated to use\n // Typescript 2.8, we can possibly use conditional types to get Typescript\n // to recognize this is a function.\n return (\n !!extender &&\n !!extender[toggled] &&\n !!((extender[toggled] as any) as (w: Widget) => (() => boolean))(widget)\n );\n };\n }\n}\n"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@jupyterlab/mainmenu-extension",
3
- "version": "0.7.4",
3
+ "version": "0.7.5",
4
4
  "description": "JupyterLab - Main Menu Extension",
5
5
  "homepage": "https://github.com/jupyterlab/jupyterlab",
6
6
  "bugs": {
@@ -30,7 +30,9 @@
30
30
  "dependencies": {
31
31
  "@jupyterlab/application": "^0.18.4",
32
32
  "@jupyterlab/apputils": "^0.18.4",
33
+ "@jupyterlab/coreutils": "^2.1.4",
33
34
  "@jupyterlab/mainmenu": "^0.7.4",
35
+ "@jupyterlab/services": "^3.1.4",
34
36
  "@phosphor/algorithm": "^1.1.2",
35
37
  "@phosphor/disposable": "^1.1.2",
36
38
  "@phosphor/widgets": "^1.6.0"