Browse Source

Move notebook-related status items to the notebook-extension package.

Ian Rose 6 years ago
parent
commit
ce5940fa14

+ 6 - 1
packages/notebook-extension/package.json

@@ -42,9 +42,14 @@
     "@jupyterlab/notebook": "^0.19.2",
     "@jupyterlab/rendermime": "^0.19.1",
     "@jupyterlab/services": "^3.2.1",
+    "@jupyterlab/statusbar": "^0.7.1",
+    "@phosphor/algorithm": "^1.1.2",
     "@phosphor/coreutils": "^1.3.0",
+    "@phosphor/disposable": "^1.1.2",
     "@phosphor/messaging": "^1.2.2",
-    "@phosphor/widgets": "^1.6.0"
+    "@phosphor/signaling": "^1.2.2",
+    "@phosphor/widgets": "^1.6.0",
+    "react": "~16.4.2"
   },
   "devDependencies": {
     "rimraf": "~2.6.2",

+ 11 - 1
packages/notebook-extension/src/index.ts

@@ -63,6 +63,10 @@ import { Message, MessageLoop } from '@phosphor/messaging';
 
 import { Menu } from '@phosphor/widgets';
 
+import { commandEditItem } from './modestatus';
+
+import { notebookTrustItem } from './truststatus';
+
 /**
  * The command IDs used by the notebook plugin.
  */
@@ -284,7 +288,13 @@ const tools: JupyterLabPlugin<ICellTools> = {
 /**
  * Export the plugins as default.
  */
-const plugins: JupyterLabPlugin<any>[] = [factory, trackerPlugin, tools];
+const plugins: JupyterLabPlugin<any>[] = [
+  factory,
+  trackerPlugin,
+  tools,
+  commandEditItem,
+  notebookTrustItem
+];
 export default plugins;
 
 /**

+ 11 - 19
packages/statusbar-extension/src/defaults/commandEdit.tsx → packages/notebook-extension/src/modestatus.tsx

@@ -1,13 +1,9 @@
-/**
- * Default item to display which notebook mode user is in.
- */
-/**
- * Part of Jupyterlab status bar defaults.
- */
 import * as React from 'react';
 
 import { JupyterLabPlugin, JupyterLab } from '@jupyterlab/application';
 
+import { VDomRenderer, VDomModel } from '@jupyterlab/apputils';
+
 import {
   INotebookTracker,
   Notebook,
@@ -17,11 +13,9 @@ import {
 
 import { IStatusBar, TextItem, TextExt } from '@jupyterlab/statusbar';
 
-import { VDomRenderer, VDomModel } from '@jupyterlab/apputils';
 import { ISignal } from '@phosphor/signaling';
+
 import { IDisposable } from '@phosphor/disposable';
-import { Token } from '@phosphor/coreutils';
-import { IStatusContext } from '../contexts';
 
 // tslint:disable-next-line:variable-name
 const CommandEditComponent = (
@@ -36,6 +30,9 @@ namespace CommandEditComponent {
   }
 }
 
+/**
+ * StatusBar item to display which notebook mode user is in.
+ */
 class CommandEdit extends VDomRenderer<CommandEdit.Model>
   implements ICommandEdit {
   constructor(opts: CommandEdit.IOptions) {
@@ -158,15 +155,9 @@ export namespace ICommandEdit {
   }
 }
 
-// tslint:disable-next-line:variable-name
-export const ICommandEdit = new Token<ICommandEdit>(
-  '@jupyterlab/statusbar:ICommandEdit'
-);
-
-export const commandEditItem: JupyterLabPlugin<ICommandEdit> = {
+export const commandEditItem: JupyterLabPlugin<void> = {
   id: '@jupyterlab/statusbar:command-edit-item',
   autoStart: true,
-  provides: ICommandEdit,
   requires: [IStatusBar, INotebookTracker],
   activate: (
     app: JupyterLab,
@@ -180,9 +171,10 @@ export const commandEditItem: JupyterLabPlugin<ICommandEdit> = {
     statusBar.registerStatusItem('command-edit-item', item, {
       align: 'right',
       rank: 4,
-      isActive: IStatusContext.delegateActive(app.shell, [{ tracker }])
+      isActive: () =>
+        app.shell.currentWidget &&
+        tracker.currentWidget &&
+        app.shell.currentWidget === tracker.currentWidget
     });
-
-    return item;
   }
 };

+ 15 - 15
packages/statusbar-extension/src/defaults/notebookTrust.tsx → packages/notebook-extension/src/truststatus.tsx

@@ -7,20 +7,25 @@
 import React from 'react';
 
 import { JupyterLabPlugin, JupyterLab } from '@jupyterlab/application';
+
+import { VDomRenderer, VDomModel } from '@jupyterlab/apputils';
+
 import {
   INotebookTracker,
   NotebookPanel,
   INotebookModel,
   Notebook
 } from '@jupyterlab/notebook';
-import { toArray } from '@phosphor/algorithm';
+
 import { Cell } from '@jupyterlab/cells';
-import { VDomRenderer, VDomModel } from '@jupyterlab/apputils';
+
+import { IconItem, IStatusBar } from '@jupyterlab/statusbar';
+
+import { toArray } from '@phosphor/algorithm';
+
 import { IDisposable } from '@phosphor/disposable';
+
 import { ISignal } from '@phosphor/signaling';
-import { Token } from '@phosphor/coreutils';
-import { IconItem, IStatusBar } from '@jupyterlab/statusbar';
-import { IStatusContext } from '../contexts';
 
 export const cellStatus = (
   prop: NotebookTrustComponent.IProps | NotebookTrust.Model
@@ -266,15 +271,9 @@ export namespace INotebookTrust {
   }
 }
 
-// tslint:disable-next-line:variable-name
-export const INotebookTrust = new Token<INotebookTrust>(
-  '@jupyterlab/statusbar:INotebookTrust'
-);
-
-export const notebookTrustItem: JupyterLabPlugin<INotebookTrust> = {
+export const notebookTrustItem: JupyterLabPlugin<void> = {
   id: '@jupyterlab/statusbar:trusted-notebook-item',
   autoStart: true,
-  provides: INotebookTrust,
   requires: [IStatusBar, INotebookTracker],
   activate: (
     app: JupyterLab,
@@ -286,9 +285,10 @@ export const notebookTrustItem: JupyterLabPlugin<INotebookTrust> = {
     statusBar.registerStatusItem('notebook-trust-item', item, {
       align: 'right',
       rank: 3,
-      isActive: IStatusContext.delegateActive(app.shell, [{ tracker }])
+      isActive: () =>
+        app.shell.currentWidget &&
+        tracker.currentWidget &&
+        app.shell.currentWidget === tracker.currentWidget
     });
-
-    return item;
   }
 };

+ 3 - 0
packages/notebook-extension/tsconfig.json

@@ -38,6 +38,9 @@
     },
     {
       "path": "../services"
+    },
+    {
+      "path": "../statusbar"
     }
   ]
 }

+ 0 - 2
packages/statusbar-extension/src/defaults/index.ts

@@ -1,8 +1,6 @@
-export * from './notebookTrust';
 export * from './lineCol';
 export * from './fileUpload';
 export * from './kernelStatus';
-export * from './commandEdit';
 export * from './runningSessions';
 export * from './filePath';
 export * from './tabSpace';

+ 0 - 4
packages/statusbar-extension/src/index.ts

@@ -8,11 +8,9 @@ import { IStatusBar, StatusBar } from '@jupyterlab/statusbar';
 // Export default status bar items
 
 import {
-  notebookTrustItem,
   lineColItem,
   fileUploadItem,
   kernelStatusItem,
-  commandEditItem,
   runningSessionsItem,
   filePathItem,
   tabSpaceItem,
@@ -38,10 +36,8 @@ const statusBar: JupyterLabPlugin<IStatusBar> = {
 const plugins: JupyterLabPlugin<any>[] = [
   statusBar,
   lineColItem,
-  notebookTrustItem,
   fileUploadItem,
   kernelStatusItem,
-  commandEditItem,
   runningSessionsItem,
   filePathItem,
   tabSpaceItem,