Browse Source

去除多余插件

herj 2 years ago
parent
commit
9bf06f4113

+ 9 - 37
packages/application/style/buttons.css

@@ -13,52 +13,32 @@
 |----------------------------------------------------------------------------*/
 
 button {
-  border-radius: var(--jp-border-radius);
-}
-
-button:focus-visible {
-  border: 1px solid var(--md-blue-900);
+  border-radius: 2px;
 }
 
 button.jp-mod-styled.jp-mod-accept {
-  background: var(--md-blue-700);
-  border: 0;
+  background: #4883fb;
+  border: 1px solid #4883fb;
   color: white;
 }
 
 button.jp-mod-styled.jp-mod-accept:hover {
-  background: var(--md-blue-800);
-}
-
-button.jp-mod-styled.jp-mod-accept:active {
-  background: var(--md-blue-900);
-}
-
-button.jp-mod-styled.jp-mod-accept:focus-visible {
-  border: 1px solid var(--md-blue-900);
+  background: #276fff;
 }
 
 button.jp-mod-styled.jp-mod-reject {
-  background: var(--md-grey-600);
-  border: 0;
-  color: white;
+  background-color: white;
+  border: 1px solid #dddddd;
+  color: #7d7d7d;
 }
 
 button.jp-mod-styled.jp-mod-reject:hover {
-  background: var(--md-grey-700);
-}
-
-button.jp-mod-styled.jp-mod-reject:active {
-  background: var(--md-grey-800);
-}
-
-button.jp-mod-styled.jp-mod-reject:focus-visible {
-  border: 1px solid var(--md-grey-800);
+  background: #eeeeee;
 }
 
 button.jp-mod-styled.jp-mod-warn {
   background: var(--md-red-700);
-  border: 0;
+  border: 1px solid var(--md-red-700);
   color: white;
 }
 
@@ -66,14 +46,6 @@ button.jp-mod-styled.jp-mod-warn:hover {
   background: var(--md-red-800);
 }
 
-button.jp-mod-styled.jp-mod-warn:active {
-  background: var(--md-red-900);
-}
-
-button.jp-mod-styled.jp-mod-warn:focus-visible {
-  border: 1px solid var(--md-red-900);
-}
-
 .jp-Button-flat {
   text-decoration: none;
   padding: var(--jp-flat-button-padding);

+ 24 - 24
packages/apputils-extension/src/index.ts

@@ -22,7 +22,7 @@ import {
   ISplashScreen,
   IWindowResolver,
   MainAreaWidget,
-  Printing,
+  // Printing,
   sessionContextDialogs,
   WindowResolver
 } from '@jupyterlab/apputils';
@@ -268,28 +268,28 @@ Would you like to clear the workspace or keep waiting?`),
   }
 };
 
-const print: JupyterFrontEndPlugin<void> = {
-  id: '@jupyterlab/apputils-extension:print',
-  autoStart: true,
-  requires: [ITranslator],
-  activate: (app: JupyterFrontEnd, translator: ITranslator) => {
-    const trans = translator.load('jupyterlab');
-    app.commands.addCommand(CommandIDs.print, {
-      label: trans.__('Print…'),
-      isEnabled: () => {
-        const widget = app.shell.currentWidget;
-        return Printing.getPrintFunction(widget) !== null;
-      },
-      execute: async () => {
-        const widget = app.shell.currentWidget;
-        const printFunction = Printing.getPrintFunction(widget);
-        if (printFunction) {
-          await printFunction();
-        }
-      }
-    });
-  }
-};
+// const print: JupyterFrontEndPlugin<void> = {
+//   id: '@jupyterlab/apputils-extension:print',
+//   autoStart: true,
+//   requires: [ITranslator],
+//   activate: (app: JupyterFrontEnd, translator: ITranslator) => {
+//     const trans = translator.load('jupyterlab');
+//     app.commands.addCommand(CommandIDs.print, {
+//       label: trans.__('Print…'),
+//       isEnabled: () => {
+//         const widget = app.shell.currentWidget;
+//         return Printing.getPrintFunction(widget) !== null;
+//       },
+//       execute: async () => {
+//         const widget = app.shell.currentWidget;
+//         const printFunction = Printing.getPrintFunction(widget);
+//         if (printFunction) {
+//           await printFunction();
+//         }
+//       }
+//     });
+//   }
+// };
 
 export const toggleHeader: JupyterFrontEndPlugin<void> = {
   id: '@jupyterlab/apputils-extension:toggle-header',
@@ -620,7 +620,7 @@ const sanitizer: JupyterFrontEndPlugin<ISanitizer> = {
 const plugins: JupyterFrontEndPlugin<any>[] = [
   palette,
   paletteRestorer,
-  print,
+  // print,
   resolver,
   sanitizer,
   settingsPlugin,

+ 36 - 36
packages/apputils-extension/src/workspacesplugin.ts

@@ -24,11 +24,11 @@ import { IStateDB } from '@jupyterlab/statedb';
 import { ITranslator, nullTranslator } from '@jupyterlab/translation';
 import { Widget } from '@lumino/widgets';
 
-namespace CommandIDs {
-  export const saveWorkspace = 'workspace-ui:save';
+// namespace CommandIDs {
+//   export const saveWorkspace = 'workspace-ui:save';
 
-  export const saveWorkspaceAs = 'workspace-ui:save-as';
-}
+//   export const saveWorkspaceAs = 'workspace-ui:save-as';
+// }
 
 const WORKSPACE_NAME = 'jupyterlab-workspace';
 const WORKSPACE_EXT = '.' + WORKSPACE_NAME;
@@ -78,39 +78,39 @@ export const workspacesPlugin: JupyterFrontEndPlugin<void> = {
       iconClass: ICON_NAME
     });
     app.docRegistry.addWidgetFactory(factory);
-    app.commands.addCommand(CommandIDs.saveWorkspaceAs, {
-      label: trans.__('Save Current Workspace As…'),
-      execute: async () => {
-        const data = app.serviceManager.workspaces.fetch(resolver.name);
-        await Private.saveAs(
-          fbf.defaultBrowser,
-          app.serviceManager.contents,
-          data,
-          state,
-          translator
-        );
-      }
-    });
+    // app.commands.addCommand(CommandIDs.saveWorkspaceAs, {
+    //   label: trans.__('Save Current Workspace As…'),
+    //   execute: async () => {
+    //     const data = app.serviceManager.workspaces.fetch(resolver.name);
+    //     await Private.saveAs(
+    //       fbf.defaultBrowser,
+    //       app.serviceManager.contents,
+    //       data,
+    //       state,
+    //       translator
+    //     );
+    //   }
+    // });
 
-    app.commands.addCommand(CommandIDs.saveWorkspace, {
-      label: trans.__('Save Current Workspace'),
-      execute: async () => {
-        const { contents } = app.serviceManager;
-        const data = app.serviceManager.workspaces.fetch(resolver.name);
-        const lastSave = (await state.fetch(LAST_SAVE_ID)) as string;
-        if (lastSave === undefined) {
-          await Private.saveAs(
-            fbf.defaultBrowser,
-            contents,
-            data,
-            state,
-            translator
-          );
-        } else {
-          await Private.save(lastSave, contents, data, state);
-        }
-      }
-    });
+    // app.commands.addCommand(CommandIDs.saveWorkspace, {
+    //   label: trans.__('Save Current Workspace'),
+    //   execute: async () => {
+    //     const { contents } = app.serviceManager;
+    //     const data = app.serviceManager.workspaces.fetch(resolver.name);
+    //     const lastSave = (await state.fetch(LAST_SAVE_ID)) as string;
+    //     if (lastSave === undefined) {
+    //       await Private.saveAs(
+    //         fbf.defaultBrowser,
+    //         contents,
+    //         data,
+    //         state,
+    //         translator
+    //       );
+    //     } else {
+    //       await Private.save(lastSave, contents, data, state);
+    //     }
+    //   }
+    // });
   }
 };
 

+ 4 - 4
packages/apputils/src/dialog.tsx

@@ -7,7 +7,7 @@ import { PromiseDelegate } from '@lumino/coreutils';
 import { Message, MessageLoop } from '@lumino/messaging';
 import { Panel, PanelLayout, Widget } from '@lumino/widgets';
 import * as React from 'react';
-// import { Styling } from './styling';
+import { Styling } from './styling';
 import { ReactWidget } from './vdom';
 import { WidgetTracker } from './widgettracker';
 
@@ -751,7 +751,7 @@ export namespace Dialog {
         header = ReactWidget.create(title);
       }
       header.addClass('jp-Dialog-header');
-      // Styling.styleNode(header.node);
+      Styling.styleNode(header.node);
       return header;
     }
 
@@ -776,7 +776,7 @@ export namespace Dialog {
         MessageLoop.sendMessage(body, Widget.Msg.UpdateRequest);
       }
       body.addClass('jp-Dialog-body');
-      // Styling.styleNode(body.node);
+      Styling.styleNode(body.node);
       return body;
     }
 
@@ -793,7 +793,7 @@ export namespace Dialog {
       each(buttons, button => {
         footer.node.appendChild(button);
       });
-      // Styling.styleNode(footer.node);
+      Styling.styleNode(footer.node);
       return footer;
     }
 

+ 3 - 22
packages/apputils/style/dialog.css

@@ -52,25 +52,6 @@ button.jp-Dialog-button:focus::-moz-focus-inner {
   border: 0;
 }
 
-button.jp-Dialog-button.jp-mod-styled.jp-mod-accept:focus,
-button.jp-Dialog-button.jp-mod-styled.jp-mod-warn:focus,
-button.jp-Dialog-button.jp-mod-styled.jp-mod-reject:focus {
-  outline-offset: 4px;
-  -moz-outline-radius: 0px;
-}
-
-button.jp-Dialog-button.jp-mod-styled.jp-mod-accept:focus {
-  outline: 1px solid var(--md-blue-700);
-}
-
-button.jp-Dialog-button.jp-mod-styled.jp-mod-warn:focus {
-  outline: 1px solid var(--md-red-600);
-}
-
-button.jp-Dialog-button.jp-mod-styled.jp-mod-reject:focus {
-  outline: 1px solid var(--md-grey-700);
-}
-
 button.jp-Dialog-close-button {
   padding: 0;
   height: auto;
@@ -128,10 +109,10 @@ button.jp-Dialog-close-button svg {
 }
 
 .jp-Dialog-body > label {
-  line-height: 1.4;
-  color: var(--jp-ui-font-color0);
+  color: #4a4a4a;
+  margin-bottom: 5px;
 }
 
 .jp-Dialog-button.jp-mod-styled:not(:last-child) {
-  margin-right: 12px;
+  margin-right: 50px;
 }

+ 9 - 10
packages/apputils/style/styling.css

@@ -10,9 +10,8 @@ button.jp-mod-styled {
   border: none;
   box-sizing: border-box;
   text-align: center;
-  line-height: 32px;
   height: 32px;
-  padding: 0px 12px;
+  width: 80px;
   letter-spacing: 0.8px;
   outline: none;
   appearance: none;
@@ -21,18 +20,19 @@ button.jp-mod-styled {
 }
 
 input.jp-mod-styled {
-  background: var(--jp-input-background);
-  height: 28px;
+  height: 32px;
   box-sizing: border-box;
-  border: var(--jp-border-width) solid var(--jp-border-color1);
-  padding-left: 7px;
-  padding-right: 7px;
-  font-size: var(--jp-ui-font-size2);
+  border: 1px solid #c8d3e9;
+  border-radius: 2px;
+  padding: 0 15px;
+  font-size: 12px;
   color: var(--jp-ui-font-color0);
   outline: none;
   appearance: none;
   -webkit-appearance: none;
   -moz-appearance: none;
+  transition: all 100ms;
+  outline: 1px solid transparent;
 }
 
 input[type='checkbox'].jp-mod-styled {
@@ -43,8 +43,7 @@ input[type='checkbox'].jp-mod-styled {
 }
 
 input.jp-mod-styled:focus {
-  border: var(--jp-border-width) solid var(--md-blue-500);
-  box-shadow: inset 0 0 4px var(--md-blue-300);
+  outline-color: #147bd1;
 }
 
 .jp-FileDialog-Checkbox {

+ 44 - 44
packages/docmanager-extension/src/index.tsx

@@ -342,49 +342,49 @@ export const pathStatusPlugin: JupyterFrontEndPlugin<void> = {
 /**
  * A plugin providing download commands in the file menu and command palette.
  */
-export const downloadPlugin: JupyterFrontEndPlugin<void> = {
-  id: '@jupyterlab/docmanager-extension:download',
-  autoStart: true,
-  requires: [ITranslator, IDocumentManager],
-  optional: [ICommandPalette],
-  activate: (
-    app: JupyterFrontEnd,
-    translator: ITranslator,
-    docManager: IDocumentManager,
-    palette: ICommandPalette | null
-  ) => {
-    const trans = translator.load('jupyterlab');
-    const { commands, shell } = app;
-    const isEnabled = () => {
-      const { currentWidget } = shell;
-      return !!(currentWidget && docManager.contextForWidget(currentWidget));
-    };
-    commands.addCommand(CommandIDs.download, {
-      label: trans.__('Download'),
-      caption: trans.__('Download the file to your computer'),
-      isEnabled,
-      execute: () => {
-        // Checks that shell.currentWidget is valid:
-        if (isEnabled()) {
-          const context = docManager.contextForWidget(shell.currentWidget!);
-          if (!context) {
-            return showDialog({
-              title: trans.__('Cannot Download'),
-              body: trans.__('No context found for current widget!'),
-              buttons: [Dialog.okButton({ label: trans.__('OK') })]
-            });
-          }
-          return context.download();
-        }
-      }
-    });
-
-    const category = trans.__('File Operations');
-    if (palette) {
-      palette.addItem({ command: CommandIDs.download, category });
-    }
-  }
-};
+// export const downloadPlugin: JupyterFrontEndPlugin<void> = {
+//   id: '@jupyterlab/docmanager-extension:download',
+//   autoStart: true,
+//   requires: [ITranslator, IDocumentManager],
+//   optional: [ICommandPalette],
+//   activate: (
+//     app: JupyterFrontEnd,
+//     translator: ITranslator,
+//     docManager: IDocumentManager,
+//     palette: ICommandPalette | null
+//   ) => {
+//     const trans = translator.load('jupyterlab');
+//     const { commands, shell } = app;
+//     const isEnabled = () => {
+//       const { currentWidget } = shell;
+//       return !!(currentWidget && docManager.contextForWidget(currentWidget));
+//     };
+//     commands.addCommand(CommandIDs.download, {
+//       label: trans.__('Download'),
+//       caption: trans.__('Download the file to your computer'),
+//       isEnabled,
+//       execute: () => {
+//         // Checks that shell.currentWidget is valid:
+//         if (isEnabled()) {
+//           const context = docManager.contextForWidget(shell.currentWidget!);
+//           if (!context) {
+//             return showDialog({
+//               title: trans.__('Cannot Download'),
+//               body: trans.__('No context found for current widget!'),
+//               buttons: [Dialog.okButton({ label: trans.__('OK') })]
+//             });
+//           }
+//           return context.download();
+//         }
+//       }
+//     });
+
+//     const category = trans.__('File Operations');
+//     if (palette) {
+//       palette.addItem({ command: CommandIDs.download, category });
+//     }
+//   }
+// };
 
 /**
  * A plugin providing open-browser-tab commands.
@@ -438,7 +438,7 @@ const plugins: JupyterFrontEndPlugin<any>[] = [
   docManagerPlugin,
   pathStatusPlugin,
   savingStatusPlugin,
-  downloadPlugin,
+  // downloadPlugin,
   openBrowserTabPlugin
 ];
 export default plugins;

+ 3 - 1
packages/docregistry/src/context.ts

@@ -1047,6 +1047,8 @@ namespace Private {
   function createSaveNode(path: string): HTMLElement {
     const input = document.createElement('input');
     input.value = path;
-    return input;
+    const container = document.createElement('div');
+    container.appendChild(input);
+    return container;
   }
 }

+ 2 - 2
packages/jldbq-extenison/src/DatasourceForm.tsx

@@ -25,7 +25,7 @@ const DatasourceForm: React.FunctionComponent<IProps> = ({
   return (
     <form className="jldbq-form">
       <label className={error === 'type' ? 'jldbq-form-error' : ''}>
-        <span className="jldbq-form-label">选择数据库类型:</span>
+        <span className="jldbq-form-label">数据源类型:</span>
         <div className="jldbq-form-switcher">
           <button
             type="button"
@@ -76,7 +76,7 @@ const DatasourceForm: React.FunctionComponent<IProps> = ({
         />
       </label>
       <label className={error === 'databasename' ? 'jldbq-form-error' : ''}>
-        <span className="jldbq-form-label">数据库:</span>
+        <span className="jldbq-form-label">数据库名称:</span>
         <input
           className="jldbq-form-input"
           placeholder="请输入数据库名称"

+ 1 - 0
packages/jldbq-extenison/src/DatasourceView.tsx

@@ -67,6 +67,7 @@ const DatasourceView: React.FunctionComponent<IProps> = ({
         tableItems = table.map(t => {
           return (
             <TreeItem
+              title={t}
               key={`${ds.sourcename}-${t}`}
               nodeId={`${ds.sourcename}-${t}`}
               label={t}

+ 1 - 1
packages/jldbq-extenison/src/index.ts

@@ -32,7 +32,7 @@ const plugin: JupyterFrontEndPlugin<void> = {
     });
     await updateConfig(registry);
 
-    const manager = 'testlocal'; // TODO:
+    const manager = 'test1'; // TODO:
 
     const dataViewWidget = new DataViewWidget(manager);
     dataViewWidget.id = 'jldbq-data';

+ 109 - 108
packages/notebook-extension/src/index.ts

@@ -93,7 +93,8 @@ import {
 } from '@lumino/coreutils';
 import { DisposableSet, IDisposable } from '@lumino/disposable';
 import { Message, MessageLoop } from '@lumino/messaging';
-import { Menu, Panel } from '@lumino/widgets';
+// import { Menu, Panel } from '@lumino/widgets';
+import { Panel } from '@lumino/widgets';
 import { logNotebookOutput } from './nboutput';
 
 /**
@@ -269,7 +270,7 @@ const FACTORY = 'Notebook';
  * The excluded Export To ...
  * (returned from nbconvert's export list)
  */
-const FORMAT_EXCLUDE = ['notebook', 'python', 'custom'];
+// const FORMAT_EXCLUDE = ['notebook', 'python', 'custom'];
 
 /**
  * Setting Id storing the customized toolbar definition.
@@ -476,111 +477,111 @@ export const executionIndicator: JupyterFrontEndPlugin<void> = {
 /**
  * A plugin providing export commands in the main menu and command palette
  */
-export const exportPlugin: JupyterFrontEndPlugin<void> = {
-  id: '@jupyterlab/notebook-extension:export',
-  autoStart: true,
-  requires: [ITranslator, INotebookTracker],
-  optional: [IMainMenu, ICommandPalette],
-  activate: (
-    app: JupyterFrontEnd,
-    translator: ITranslator,
-    tracker: INotebookTracker,
-    mainMenu: IMainMenu | null,
-    palette: ICommandPalette | null
-  ) => {
-    const trans = translator.load('jupyterlab');
-    const { commands, shell } = app;
-    const services = app.serviceManager;
-
-    const isEnabled = (): boolean => {
-      return Private.isEnabled(shell, tracker);
-    };
-
-    commands.addCommand(CommandIDs.exportToFormat, {
-      label: args => {
-        const formatLabel = args['label'] as string;
-        return args['isPalette']
-          ? trans.__('Save and Export Notebook: %1', formatLabel)
-          : formatLabel;
-      },
-      execute: args => {
-        const current = getCurrent(tracker, shell, args);
-
-        if (!current) {
-          return;
-        }
-
-        const url = PageConfig.getNBConvertURL({
-          format: args['format'] as string,
-          download: true,
-          path: current.context.path
-        });
-        const { context } = current;
-
-        if (context.model.dirty && !context.model.readOnly) {
-          return context.save().then(() => {
-            window.open(url, '_blank', 'noopener');
-          });
-        }
-
-        return new Promise<void>(resolve => {
-          window.open(url, '_blank', 'noopener');
-          resolve(undefined);
-        });
-      },
-      isEnabled
-    });
-
-    // Add a notebook group to the File menu.
-    let exportTo: Menu | null | undefined;
-    if (mainMenu) {
-      exportTo = mainMenu.fileMenu.items.find(
-        item =>
-          item.type === 'submenu' &&
-          item.submenu?.id === 'jp-mainmenu-file-notebookexport'
-      )?.submenu;
-    }
-
-    void services.nbconvert.getExportFormats().then(response => {
-      if (response) {
-        const formatLabels: any = Private.getFormatLabels(translator);
-
-        // Convert export list to palette and menu items.
-        const formatList = Object.keys(response);
-        formatList.forEach(function (key) {
-          const capCaseKey = trans.__(key[0].toUpperCase() + key.substr(1));
-          const labelStr = formatLabels[key] ? formatLabels[key] : capCaseKey;
-          let args = {
-            format: key,
-            label: labelStr,
-            isPalette: false
-          };
-          if (FORMAT_EXCLUDE.indexOf(key) === -1) {
-            if (exportTo) {
-              exportTo.addItem({
-                command: CommandIDs.exportToFormat,
-                args: args
-              });
-            }
-            if (palette) {
-              args = {
-                format: key,
-                label: labelStr,
-                isPalette: true
-              };
-              const category = trans.__('Notebook Operations');
-              palette.addItem({
-                command: CommandIDs.exportToFormat,
-                category,
-                args
-              });
-            }
-          }
-        });
-      }
-    });
-  }
-};
+// export const exportPlugin: JupyterFrontEndPlugin<void> = {
+//   id: '@jupyterlab/notebook-extension:export',
+//   autoStart: true,
+//   requires: [ITranslator, INotebookTracker],
+//   optional: [IMainMenu, ICommandPalette],
+//   activate: (
+//     app: JupyterFrontEnd,
+//     translator: ITranslator,
+//     tracker: INotebookTracker,
+//     mainMenu: IMainMenu | null,
+//     palette: ICommandPalette | null
+//   ) => {
+//     const trans = translator.load('jupyterlab');
+//     const { commands, shell } = app;
+//     const services = app.serviceManager;
+
+//     const isEnabled = (): boolean => {
+//       return Private.isEnabled(shell, tracker);
+//     };
+
+//     commands.addCommand(CommandIDs.exportToFormat, {
+//       label: args => {
+//         const formatLabel = args['label'] as string;
+//         return args['isPalette']
+//           ? trans.__('Save and Export Notebook: %1', formatLabel)
+//           : formatLabel;
+//       },
+//       execute: args => {
+//         const current = getCurrent(tracker, shell, args);
+
+//         if (!current) {
+//           return;
+//         }
+
+//         const url = PageConfig.getNBConvertURL({
+//           format: args['format'] as string,
+//           download: true,
+//           path: current.context.path
+//         });
+//         const { context } = current;
+
+//         if (context.model.dirty && !context.model.readOnly) {
+//           return context.save().then(() => {
+//             window.open(url, '_blank', 'noopener');
+//           });
+//         }
+
+//         return new Promise<void>(resolve => {
+//           window.open(url, '_blank', 'noopener');
+//           resolve(undefined);
+//         });
+//       },
+//       isEnabled
+//     });
+
+//     // Add a notebook group to the File menu.
+//     let exportTo: Menu | null | undefined;
+//     if (mainMenu) {
+//       exportTo = mainMenu.fileMenu.items.find(
+//         item =>
+//           item.type === 'submenu' &&
+//           item.submenu?.id === 'jp-mainmenu-file-notebookexport'
+//       )?.submenu;
+//     }
+
+//     void services.nbconvert.getExportFormats().then(response => {
+//       if (response) {
+//         const formatLabels: any = Private.getFormatLabels(translator);
+
+//         // Convert export list to palette and menu items.
+//         const formatList = Object.keys(response);
+//         formatList.forEach(function (key) {
+//           const capCaseKey = trans.__(key[0].toUpperCase() + key.substr(1));
+//           const labelStr = formatLabels[key] ? formatLabels[key] : capCaseKey;
+//           let args = {
+//             format: key,
+//             label: labelStr,
+//             isPalette: false
+//           };
+//           if (FORMAT_EXCLUDE.indexOf(key) === -1) {
+//             if (exportTo) {
+//               exportTo.addItem({
+//                 command: CommandIDs.exportToFormat,
+//                 args: args
+//               });
+//             }
+//             if (palette) {
+//               args = {
+//                 format: key,
+//                 label: labelStr,
+//                 isPalette: true
+//               };
+//               const category = trans.__('Notebook Operations');
+//               palette.addItem({
+//                 command: CommandIDs.exportToFormat,
+//                 category,
+//                 args
+//               });
+//             }
+//           }
+//         });
+//       }
+//     });
+//   }
+// };
 
 /**
  * A plugin that adds a notebook trust status item to the status bar.
@@ -681,7 +682,7 @@ const plugins: JupyterFrontEndPlugin<any>[] = [
   factory,
   trackerPlugin,
   executionIndicator,
-  exportPlugin,
+  // exportPlugin,
   tools,
   commandEditItem,
   notebookTrustItem,

+ 0 - 3
packages/theme-dark-extension/README.md

@@ -1,3 +0,0 @@
-# @jupyterlab/theme-dark-extension
-
-A JupyterLab theme extension which provides the default dark-colored theme.

+ 0 - 50
packages/theme-dark-extension/package.json

@@ -1,50 +0,0 @@
-{
-  "name": "@jupyterlab/theme-dark-extension",
-  "version": "3.4.3",
-  "description": "JupyterLab - Default Dark Theme",
-  "homepage": "https://github.com/jupyterlab/jupyterlab",
-  "bugs": {
-    "url": "https://github.com/jupyterlab/jupyterlab/issues"
-  },
-  "repository": {
-    "type": "git",
-    "url": "https://github.com/jupyterlab/jupyterlab.git"
-  },
-  "license": "BSD-3-Clause",
-  "author": "Project Jupyter",
-  "sideEffects": true,
-  "main": "lib/index.js",
-  "types": "lib/index.d.ts",
-  "directories": {
-    "lib": "lib/"
-  },
-  "files": [
-    "lib/*.d.ts",
-    "lib/*.js.map",
-    "lib/*.js",
-    "style/**/*.{css,eot,gif,html,jpg,json,png,svg,woff2,ttf}",
-    "style/index.js"
-  ],
-  "scripts": {
-    "build": "tsc -b",
-    "clean": "rimraf lib && rimraf tsconfig.tsbuildinfo",
-    "watch": "tsc -b --watch"
-  },
-  "dependencies": {
-    "@jupyterlab/application": "^3.4.3",
-    "@jupyterlab/apputils": "^3.4.3",
-    "@jupyterlab/translation": "^3.4.3"
-  },
-  "devDependencies": {
-    "rimraf": "~3.0.0",
-    "typedoc": "~0.21.2",
-    "typescript": "~4.1.3"
-  },
-  "publishConfig": {
-    "access": "public"
-  },
-  "jupyterlab": {
-    "extension": true,
-    "themePath": "style/theme.css"
-  }
-}

+ 0 - 40
packages/theme-dark-extension/src/index.ts

@@ -1,40 +0,0 @@
-// Copyright (c) Jupyter Development Team.
-// Distributed under the terms of the Modified BSD License.
-/**
- * @packageDocumentation
- * @module theme-dark-extension
- */
-
-import {
-  JupyterFrontEnd,
-  JupyterFrontEndPlugin
-} from '@jupyterlab/application';
-import { IThemeManager } from '@jupyterlab/apputils';
-import { ITranslator } from '@jupyterlab/translation';
-
-/**
- * A plugin for the Jupyter Dark Theme.
- */
-const plugin: JupyterFrontEndPlugin<void> = {
-  id: '@jupyterlab/theme-dark-extension:plugin',
-  requires: [IThemeManager, ITranslator],
-  activate: (
-    app: JupyterFrontEnd,
-    manager: IThemeManager,
-    translator: ITranslator
-  ) => {
-    const trans = translator.load('jupyterlab');
-    const style = '@jupyterlab/theme-dark-extension/index.css';
-    manager.register({
-      name: 'JupyterLab Dark',
-      displayName: trans.__('JupyterLab Dark'),
-      isLight: false,
-      themeScrollbars: true,
-      load: () => manager.loadCSS(style),
-      unload: () => Promise.resolve(undefined)
-    });
-  },
-  autoStart: true
-};
-
-export default plugin;

+ 0 - 17
packages/theme-dark-extension/style/theme.css

@@ -1,17 +0,0 @@
-/*-----------------------------------------------------------------------------
-| Copyright (c) Jupyter Development Team.
-| Distributed under the terms of the Modified BSD License.
-|----------------------------------------------------------------------------*/
-
-@import './variables.css';
-
-/* Set the default typography for monospace elements */
-tt,
-code,
-kbd,
-samp,
-pre {
-  font-family: var(--jp-code-font-family);
-  font-size: var(--jp-code-font-size);
-  line-height: var(--jp-code-line-height);
-}

+ 0 - 410
packages/theme-dark-extension/style/variables.css

@@ -1,410 +0,0 @@
-/*-----------------------------------------------------------------------------
-| Copyright (c) Jupyter Development Team.
-| Distributed under the terms of the Modified BSD License.
-|----------------------------------------------------------------------------*/
-
-/*
-The following CSS variables define the main, public API for styling JupyterLab.
-These variables should be used by all plugins wherever possible. In other
-words, plugins should not define custom colors, sizes, etc unless absolutely
-necessary. This enables users to change the visual theme of JupyterLab
-by changing these variables.
-
-Many variables appear in an ordered sequence (0,1,2,3). These sequences
-are designed to work well together, so for example, `--jp-border-color1` should
-be used with `--jp-layout-color1`. The numbers have the following meanings:
-
-* 0: super-primary, reserved for special emphasis
-* 1: primary, most important under normal situations
-* 2: secondary, next most important under normal situations
-* 3: tertiary, next most important under normal situations
-
-Throughout JupyterLab, we are mostly following principles from Google's
-Material Design when selecting colors. We are not, however, following
-all of MD as it is not optimized for dense, information rich UIs.
-*/
-
-:root {
-  /* Elevation
-   *
-   * We style box-shadows using Material Design's idea of elevation. These particular numbers are taken from here:
-   *
-   * https://github.com/material-components/material-components-web
-   * https://material-components-web.appspot.com/elevation.html
-   */
-
-  /* The dark theme shadows need a bit of work, but this will probably also require work on the core layout
-   * colors used in the theme as well. */
-  --jp-shadow-base-lightness: 32;
-  --jp-shadow-umbra-color: rgba(
-    var(--jp-shadow-base-lightness),
-    var(--jp-shadow-base-lightness),
-    var(--jp-shadow-base-lightness),
-    0.2
-  );
-  --jp-shadow-penumbra-color: rgba(
-    var(--jp-shadow-base-lightness),
-    var(--jp-shadow-base-lightness),
-    var(--jp-shadow-base-lightness),
-    0.14
-  );
-  --jp-shadow-ambient-color: rgba(
-    var(--jp-shadow-base-lightness),
-    var(--jp-shadow-base-lightness),
-    var(--jp-shadow-base-lightness),
-    0.12
-  );
-  --jp-elevation-z0: none;
-  --jp-elevation-z1: 0px 2px 1px -1px var(--jp-shadow-umbra-color),
-    0px 1px 1px 0px var(--jp-shadow-penumbra-color),
-    0px 1px 3px 0px var(--jp-shadow-ambient-color);
-  --jp-elevation-z2: 0px 3px 1px -2px var(--jp-shadow-umbra-color),
-    0px 2px 2px 0px var(--jp-shadow-penumbra-color),
-    0px 1px 5px 0px var(--jp-shadow-ambient-color);
-  --jp-elevation-z4: 0px 2px 4px -1px var(--jp-shadow-umbra-color),
-    0px 4px 5px 0px var(--jp-shadow-penumbra-color),
-    0px 1px 10px 0px var(--jp-shadow-ambient-color);
-  --jp-elevation-z6: 0px 3px 5px -1px var(--jp-shadow-umbra-color),
-    0px 6px 10px 0px var(--jp-shadow-penumbra-color),
-    0px 1px 18px 0px var(--jp-shadow-ambient-color);
-  --jp-elevation-z8: 0px 5px 5px -3px var(--jp-shadow-umbra-color),
-    0px 8px 10px 1px var(--jp-shadow-penumbra-color),
-    0px 3px 14px 2px var(--jp-shadow-ambient-color);
-  --jp-elevation-z12: 0px 7px 8px -4px var(--jp-shadow-umbra-color),
-    0px 12px 17px 2px var(--jp-shadow-penumbra-color),
-    0px 5px 22px 4px var(--jp-shadow-ambient-color);
-  --jp-elevation-z16: 0px 8px 10px -5px var(--jp-shadow-umbra-color),
-    0px 16px 24px 2px var(--jp-shadow-penumbra-color),
-    0px 6px 30px 5px var(--jp-shadow-ambient-color);
-  --jp-elevation-z20: 0px 10px 13px -6px var(--jp-shadow-umbra-color),
-    0px 20px 31px 3px var(--jp-shadow-penumbra-color),
-    0px 8px 38px 7px var(--jp-shadow-ambient-color);
-  --jp-elevation-z24: 0px 11px 15px -7px var(--jp-shadow-umbra-color),
-    0px 24px 38px 3px var(--jp-shadow-penumbra-color),
-    0px 9px 46px 8px var(--jp-shadow-ambient-color);
-
-  /* Borders
-   *
-   * The following variables, specify the visual styling of borders in JupyterLab.
-   */
-
-  --jp-border-width: 1px;
-  --jp-border-color0: var(--md-grey-700);
-  --jp-border-color1: var(--md-grey-700);
-  --jp-border-color2: var(--md-grey-800);
-  --jp-border-color3: var(--md-grey-900);
-  --jp-inverse-border-color: var(--md-grey-600);
-  --jp-border-radius: 2px;
-
-  /* UI Fonts
-   *
-   * The UI font CSS variables are used for the typography all of the JupyterLab
-   * user interface elements that are not directly user generated content.
-   *
-   * The font sizing here is done assuming that the body font size of --jp-ui-font-size1
-   * is applied to a parent element. When children elements, such as headings, are sized
-   * in em all things will be computed relative to that body size.
-   */
-
-  --jp-ui-font-scale-factor: 1.2;
-  --jp-ui-font-size0: 0.83333em;
-  --jp-ui-font-size1: 13px; /* Base font size */
-  --jp-ui-font-size2: 1.2em;
-  --jp-ui-font-size3: 1.44em;
-
-  --jp-ui-font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Helvetica,
-    Arial, sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol';
-
-  /*
-   * Use these font colors against the corresponding main layout colors.
-   * In a light theme, these go from dark to light.
-   */
-
-  /* Defaults use Material Design specification */
-  --jp-ui-font-color0: rgba(255, 255, 255, 1);
-  --jp-ui-font-color1: rgba(255, 255, 255, 0.87);
-  --jp-ui-font-color2: rgba(255, 255, 255, 0.54);
-  --jp-ui-font-color3: rgba(255, 255, 255, 0.38);
-
-  /*
-   * Use these against the brand/accent/warn/error colors.
-   * These will typically go from light to darker, in both a dark and light theme.
-   */
-
-  --jp-ui-inverse-font-color0: rgba(0, 0, 0, 1);
-  --jp-ui-inverse-font-color1: rgba(0, 0, 0, 0.8);
-  --jp-ui-inverse-font-color2: rgba(0, 0, 0, 0.5);
-  --jp-ui-inverse-font-color3: rgba(0, 0, 0, 0.3);
-
-  /* Content Fonts
-   *
-   * Content font variables are used for typography of user generated content.
-   *
-   * The font sizing here is done assuming that the body font size of --jp-content-font-size1
-   * is applied to a parent element. When children elements, such as headings, are sized
-   * in em all things will be computed relative to that body size.
-   */
-
-  --jp-content-line-height: 1.6;
-  --jp-content-font-scale-factor: 1.2;
-  --jp-content-font-size0: 0.83333em;
-  --jp-content-font-size1: 14px; /* Base font size */
-  --jp-content-font-size2: 1.2em;
-  --jp-content-font-size3: 1.44em;
-  --jp-content-font-size4: 1.728em;
-  --jp-content-font-size5: 2.0736em;
-
-  /* This gives a magnification of about 125% in presentation mode over normal. */
-  --jp-content-presentation-font-size1: 17px;
-
-  --jp-content-heading-line-height: 1;
-  --jp-content-heading-margin-top: 1.2em;
-  --jp-content-heading-margin-bottom: 0.8em;
-  --jp-content-heading-font-weight: 500;
-
-  /* Defaults use Material Design specification */
-  --jp-content-font-color0: rgba(255, 255, 255, 1);
-  --jp-content-font-color1: rgba(255, 255, 255, 1);
-  --jp-content-font-color2: rgba(255, 255, 255, 0.7);
-  --jp-content-font-color3: rgba(255, 255, 255, 0.5);
-
-  --jp-content-link-color: var(--md-blue-300);
-
-  --jp-content-font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI',
-    Helvetica, Arial, sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji',
-    'Segoe UI Symbol';
-
-  /*
-   * Code Fonts
-   *
-   * Code font variables are used for typography of code and other monospaces content.
-   */
-
-  --jp-code-font-size: 13px;
-  --jp-code-line-height: 1.3077; /* 17px for 13px base */
-  --jp-code-padding: 5px; /* 5px for 13px base, codemirror highlighting needs integer px value */
-  --jp-code-font-family-default: Menlo, Consolas, 'DejaVu Sans Mono', monospace;
-  --jp-code-font-family: var(--jp-code-font-family-default);
-
-  /* This gives a magnification of about 125% in presentation mode over normal. */
-  --jp-code-presentation-font-size: 16px;
-
-  /* may need to tweak cursor width if you change font size */
-  --jp-code-cursor-width0: 1.4px;
-  --jp-code-cursor-width1: 2px;
-  --jp-code-cursor-width2: 4px;
-
-  /* Layout
-   *
-   * The following are the main layout colors use in JupyterLab. In a light
-   * theme these would go from light to dark.
-   */
-
-  --jp-layout-color0: #111111;
-  --jp-layout-color1: var(--md-grey-900);
-  --jp-layout-color2: var(--md-grey-800);
-  --jp-layout-color3: var(--md-grey-700);
-  --jp-layout-color4: var(--md-grey-600);
-
-  /* Inverse Layout
-   *
-   * The following are the inverse layout colors use in JupyterLab. In a light
-   * theme these would go from dark to light.
-   */
-
-  --jp-inverse-layout-color0: white;
-  --jp-inverse-layout-color1: white;
-  --jp-inverse-layout-color2: var(--md-grey-200);
-  --jp-inverse-layout-color3: var(--md-grey-400);
-  --jp-inverse-layout-color4: var(--md-grey-600);
-
-  /* Brand/accent */
-
-  --jp-brand-color0: var(--md-blue-700);
-  --jp-brand-color1: var(--md-blue-500);
-  --jp-brand-color2: var(--md-blue-300);
-  --jp-brand-color3: var(--md-blue-100);
-  --jp-brand-color4: var(--md-blue-50);
-
-  --jp-accent-color0: var(--md-green-700);
-  --jp-accent-color1: var(--md-green-500);
-  --jp-accent-color2: var(--md-green-300);
-  --jp-accent-color3: var(--md-green-100);
-
-  /* State colors (warn, error, success, info) */
-
-  --jp-warn-color0: var(--md-orange-700);
-  --jp-warn-color1: var(--md-orange-500);
-  --jp-warn-color2: var(--md-orange-300);
-  --jp-warn-color3: var(--md-orange-100);
-
-  --jp-error-color0: var(--md-red-700);
-  --jp-error-color1: var(--md-red-500);
-  --jp-error-color2: var(--md-red-300);
-  --jp-error-color3: var(--md-red-100);
-
-  --jp-success-color0: var(--md-green-700);
-  --jp-success-color1: var(--md-green-500);
-  --jp-success-color2: var(--md-green-300);
-  --jp-success-color3: var(--md-green-100);
-
-  --jp-info-color0: var(--md-cyan-700);
-  --jp-info-color1: var(--md-cyan-500);
-  --jp-info-color2: var(--md-cyan-300);
-  --jp-info-color3: var(--md-cyan-100);
-
-  /* Cell specific styles */
-
-  --jp-cell-padding: 5px;
-
-  --jp-cell-collapser-width: 8px;
-  --jp-cell-collapser-min-height: 20px;
-  --jp-cell-collapser-not-active-hover-opacity: 0.6;
-
-  --jp-cell-editor-background: var(--jp-layout-color1);
-  --jp-cell-editor-border-color: var(--md-grey-700);
-  --jp-cell-editor-box-shadow: inset 0 0 2px var(--md-blue-300);
-  --jp-cell-editor-active-background: var(--jp-layout-color0);
-  --jp-cell-editor-active-border-color: var(--jp-brand-color1);
-
-  --jp-cell-prompt-width: 64px;
-  --jp-cell-prompt-font-family: var(--jp-code-font-family-default);
-  --jp-cell-prompt-letter-spacing: 0px;
-  --jp-cell-prompt-opacity: 1;
-  --jp-cell-prompt-not-active-opacity: 1;
-  --jp-cell-prompt-not-active-font-color: var(--md-grey-300);
-
-  /* A custom blend of MD grey and blue 600
-   * See https://meyerweb.com/eric/tools/color-blend/#546E7A:1E88E5:5:hex */
-  --jp-cell-inprompt-font-color: #307fc1;
-  /* A custom blend of MD grey and orange 600
-   * https://meyerweb.com/eric/tools/color-blend/#546E7A:F4511E:5:hex */
-  --jp-cell-outprompt-font-color: #bf5b3d;
-
-  /* Notebook specific styles */
-
-  --jp-notebook-padding: 10px;
-  --jp-notebook-select-background: var(--jp-layout-color1);
-  --jp-notebook-multiselected-color: rgba(33, 150, 243, 0.24);
-
-  /* The scroll padding is calculated to fill enough space at the bottom of the
-  notebook to show one single-line cell (with appropriate padding) at the top
-  when the notebook is scrolled all the way to the bottom. We also subtract one
-  pixel so that no scrollbar appears if we have just one single-line cell in the
-  notebook. This padding is to enable a 'scroll past end' feature in a notebook.
-  */
-  --jp-notebook-scroll-padding: calc(
-    100% - var(--jp-code-font-size) * var(--jp-code-line-height) -
-      var(--jp-code-padding) - var(--jp-cell-padding) - 1px
-  );
-
-  /* Rendermime styles */
-
-  --jp-rendermime-error-background: rgba(244, 67, 54, 0.28);
-  --jp-rendermime-table-row-background: var(--md-grey-900);
-  --jp-rendermime-table-row-hover-background: rgba(3, 169, 244, 0.2);
-
-  /* Dialog specific styles */
-
-  --jp-dialog-background: rgba(0, 0, 0, 0.6);
-
-  /* Console specific styles */
-
-  --jp-console-padding: 10px;
-
-  /* Toolbar specific styles */
-
-  --jp-toolbar-border-color: var(--jp-border-color2);
-  --jp-toolbar-micro-height: 8px;
-  --jp-toolbar-background: var(--jp-layout-color1);
-  --jp-toolbar-box-shadow: 0px 0px 2px 0px rgba(0, 0, 0, 0.8);
-  --jp-toolbar-header-margin: 4px 4px 0px 4px;
-  --jp-toolbar-active-background: var(--jp-layout-color0);
-
-  /* Statusbar specific styles */
-
-  --jp-statusbar-height: 24px;
-
-  /* Input field styles */
-
-  --jp-input-box-shadow: inset 0 0 2px var(--md-blue-300);
-  --jp-input-active-background: var(--jp-layout-color0);
-  --jp-input-hover-background: var(--jp-layout-color2);
-  --jp-input-background: var(--md-grey-800);
-  --jp-input-border-color: var(--jp-inverse-border-color);
-  --jp-input-active-border-color: var(--jp-brand-color1);
-  --jp-input-active-box-shadow-color: rgba(19, 124, 189, 0.3);
-
-  /* General editor styles */
-
-  --jp-editor-selected-background: var(--jp-layout-color2);
-  --jp-editor-selected-focused-background: rgba(33, 150, 243, 0.24);
-  --jp-editor-cursor-color: var(--jp-ui-font-color0);
-
-  /* Code mirror specific styles */
-
-  --jp-mirror-editor-keyword-color: var(--md-green-500);
-  --jp-mirror-editor-atom-color: var(--md-blue-300);
-  --jp-mirror-editor-number-color: var(--md-green-400);
-  --jp-mirror-editor-def-color: var(--md-blue-600);
-  --jp-mirror-editor-variable-color: var(--md-grey-300);
-  --jp-mirror-editor-variable-2-color: var(--md-blue-400);
-  --jp-mirror-editor-variable-3-color: var(--md-green-600);
-  --jp-mirror-editor-punctuation-color: var(--md-blue-400);
-  --jp-mirror-editor-property-color: var(--md-blue-400);
-  --jp-mirror-editor-operator-color: #aa22ff;
-  --jp-mirror-editor-comment-color: #408080;
-  --jp-mirror-editor-string-color: #ff7070;
-  --jp-mirror-editor-string-2-color: var(--md-purple-300);
-  --jp-mirror-editor-meta-color: #aa22ff;
-  --jp-mirror-editor-qualifier-color: #555;
-  --jp-mirror-editor-builtin-color: var(--md-green-600);
-  --jp-mirror-editor-bracket-color: #997;
-  --jp-mirror-editor-tag-color: var(--md-green-700);
-  --jp-mirror-editor-attribute-color: var(--md-blue-700);
-  --jp-mirror-editor-header-color: var(--md-blue-500);
-  --jp-mirror-editor-quote-color: var(--md-green-300);
-  --jp-mirror-editor-link-color: var(--md-blue-700);
-  --jp-mirror-editor-error-color: #f00;
-  --jp-mirror-editor-hr-color: #999;
-
-  /* Vega extension styles */
-
-  --jp-vega-background: var(--md-grey-400);
-
-  /* Sidebar-related styles */
-
-  --jp-sidebar-min-width: 250px;
-
-  /* Search-related styles */
-
-  --jp-search-toggle-off-opacity: 0.6;
-  --jp-search-toggle-hover-opacity: 0.8;
-  --jp-search-toggle-on-opacity: 1;
-  --jp-search-selected-match-background-color: rgb(255, 225, 0);
-  --jp-search-selected-match-color: black;
-  --jp-search-unselected-match-background-color: var(
-    --jp-inverse-layout-color0
-  );
-  --jp-search-unselected-match-color: var(--jp-ui-inverse-font-color0);
-
-  /* scrollbar related styles. Supports every browser except Edge. */
-
-  /* colors based on JetBrain's Darcula theme */
-
-  --jp-scrollbar-background-color: #3f4244;
-  --jp-scrollbar-thumb-color: 88, 96, 97; /* need to specify thumb color as an RGB triplet */
-
-  --jp-scrollbar-endpad: 3px; /* the minimum gap between the thumb and the ends of a scrollbar */
-
-  /* hacks for setting the thumb shape. These do nothing in Firefox */
-
-  --jp-scrollbar-thumb-margin: 3.5px; /* the space in between the sides of the thumb and the track */
-  --jp-scrollbar-thumb-radius: 9px; /* set to a large-ish value for rounded endcaps on the thumb */
-
-  /* Icon colors that work well with light or dark backgrounds */
-  --jp-icon-contrast-color0: var(--md-purple-600);
-  --jp-icon-contrast-color1: var(--md-green-600);
-  --jp-icon-contrast-color2: var(--md-pink-600);
-  --jp-icon-contrast-color3: var(--md-blue-600);
-}

+ 0 - 19
packages/theme-dark-extension/tsconfig.json

@@ -1,19 +0,0 @@
-{
-  "extends": "../../tsconfigbase",
-  "compilerOptions": {
-    "outDir": "lib",
-    "rootDir": "src"
-  },
-  "include": ["src/*"],
-  "references": [
-    {
-      "path": "../application"
-    },
-    {
-      "path": "../apputils"
-    },
-    {
-      "path": "../translation"
-    }
-  ]
-}

+ 0 - 4
packages/theme-dark-extension/typedoc.json

@@ -1,4 +0,0 @@
-{
-  "out": "../../docs/api/theme-dark-extension",
-  "theme": "../../typedoc-theme"
-}

+ 1 - 0
packages/ui-components/package.json

@@ -50,6 +50,7 @@
     "@lumino/commands": "^1.19.0",
     "@lumino/coreutils": "^1.11.0",
     "@lumino/disposable": "^1.10.0",
+    "@lumino/messaging": "^1.10.0",
     "@lumino/signaling": "^1.10.0",
     "@lumino/virtualdom": "^1.14.0",
     "@lumino/widgets": "^1.30.0",