<NME> index.tsx
<BEF> /**
 * Main entry point for the desktop notebook UI
 */

import * as MathJax from "@nteract/mathjax";

import "@blueprintjs/core/lib/css/blueprint.css";
import "@blueprintjs/select/lib/css/blueprint-select.css";

import "codemirror/addon/hint/show-hint.css";
import "codemirror/lib/codemirror.css";

import "@nteract/styles/app.css";
import "@nteract/styles/global-variables.css";

import "@nteract/styles/themes/base.css";
import "@nteract/styles/themes/default.css";

import "@nteract/styles/editor-overrides.css";

import DataExplorer from "@nteract/data-explorer";
import WidgetDisplay from "@nteract/jupyter-widgets";
import GeoJSONTransform from "@nteract/transform-geojson";
import ModelDebug from "@nteract/transform-model-debug";
import PlotlyTransform from "@nteract/transform-plotly";
import VDOMDisplay from "@nteract/transform-vdom";
import {
  Vega2,
  Vega3,
  Vega4,
  Vega5,
  VegaLite1,
  VegaLite2,
  VegaLite3,
  VegaLite4
} from "@nteract/transform-vega";

import { ipcRenderer as ipc, remote } from "electron";
import { mathJaxPath } from "mathjax-electron";
import React from "react";
import ReactDOM from "react-dom";
import NotificationSystem, {
  System as ReactNotificationSystem
} from "react-notification-system";
import { Provider } from "react-redux";

import {
  actions,
  ContentRecord,
  ContentRef,
  createContentRef,
  makeAppRecord,
  makeCommsRecord,
  makeContentsRecord,
  makeEntitiesRecord,
  makeLocalHostRecord,
  makeNotebookContentRecord,
  makeStateRecord,
  makeTransformsRecord
} from "@nteract/core";
import NotebookApp from "@nteract/notebook-app-component";
import { Media } from "@nteract/outputs";

import * as Immutable from "immutable";

import { initGlobalHandlers } from "./global-events";
import { initMenuHandlers } from "./menu";
import { initNativeHandlers } from "./native-window";
import VDOMDisplay from "@nteract/transform-vdom";
import {
  Vega2,
  Vega3,
  Vega4,
  Vega5,
  VegaLite1,
  VegaLite2,
  VegaLite3,
  VegaLite4,
} from "@nteract/transform-vega";

import "codemirror/addon/hint/show-hint.css";
import "codemirror/lib/codemirror.css";

import { ipcRenderer as ipc, remote } from "electron";

import * as Immutable from "immutable";
import { mathJaxPath } from "mathjax-electron";
import React from "react";
import ReactDOM from "react-dom";
import { Provider } from "react-redux";

import { initGlobalHandlers } from "./global-events";
import { initMenuHandlers } from "./menu";
import { initNativeHandlers } from "./native-window";
import { makeDesktopNotebookRecord } from "./state";
import configureStore, { DesktopStore } from "./store";

// Load the nteract fonts
import("./fonts");

import "@nteract/styles/cell-menu.css";
import "@nteract/styles/command-palette.css";

// Needs to be last
import "@nteract/styles/editor-overrides.css";
import "@nteract/styles/monaco/overrides.css";

const contentRef = createContentRef();

const initialRefs = Immutable.Map<ContentRef, ContentRecord>().set(
  contentRef,
  makeNotebookContentRecord()
);

const store = configureStore({
  app: makeAppRecord({
    host: makeLocalHostRecord(),
    version: remote.app.getVersion(),
  }),
  core: makeStateRecord({
    entities: makeEntitiesRecord({
      comms: makeCommsRecord(),
      contents: makeContentsRecord({
        byRef: initialRefs,
      }),
      transforms: makeTransformsRecord({
        displayOrder: Immutable.List([
          "application/vnd.jupyter.widget-view+json",
          "application/vnd.vega.v5+json",
          "application/vnd.vega.v4+json",
          "application/vnd.vega.v3+json",
          "application/vnd.vega.v2+json",
          "application/vnd.vegalite.v4+json",
          "application/vnd.vegalite.v3+json",
          "application/vnd.vegalite.v2+json",
          "application/vnd.vegalite.v1+json",
          "application/geo+json",
          "application/vnd.plotly.v1+json",
          "text/vnd.plotly.v1+html",
          "application/x-nteract-model-debug+json",
          "application/vnd.dataresource+json",
          "application/vdom.v1+json",
          "application/json",
          "application/javascript",
          "text/html",
          "text/markdown",
          "text/latex",
          "image/svg+xml",
          "image/gif",
          "image/png",
          "image/jpeg",
          "text/plain",
        ]),
        byId: Immutable.Map({
          "text/vnd.plotly.v1+html": PlotlyTransform,
          "application/vnd.plotly.v1+json": PlotlyTransform,
          "application/geo+json": GeoJSONTransform,
          "application/x-nteract-model-debug+json": ModelDebug,
          "application/vnd.dataresource+json": DataExplorer,
          "application/vnd.jupyter.widget-view+json": WidgetDisplay,
          "application/vnd.vegalite.v1+json": VegaLite1,
          "application/vnd.vegalite.v2+json": VegaLite2,
          "application/vnd.vegalite.v3+json": VegaLite3,
          "application/vnd.vegalite.v4+json": VegaLite4,
          "application/vnd.vega.v2+json": Vega2,
          "application/vnd.vega.v3+json": Vega3,
initGlobalHandlers(contentRef, store);

export default class App extends React.PureComponent {
  notificationSystem: any;

  constructor(props: {}) {
    super(props);
    this.notificationSystem = React.createRef();
  }

  componentDidMount(): void {
    store.dispatch(
      actions.setNotificationSystem(this.notificationSystem.current)
    );
    ipc.send("react-ready");
  }

  render() {
    return (
      <React.Fragment>
        <MathJax.Provider src={mathJaxPath} input="tex">

export default class App extends React.PureComponent {
  componentDidMount(): void {
    ipc.send("react-ready");
  }
            />
          </Provider>
        </MathJax.Provider>
        <NotificationSystem
          ref={(e: ReactNotificationSystem) => (this.notificationSystem = e)}
        />
      </React.Fragment>
    );
  }
            // browser window
            contentRef={contentRef}
          />
        </MathJax.Provider>
      </Provider>
    );
  }
}

ipc.send("transfer-config-options-to-main", allConfigOptionDefinitions());

const app = document.querySelector("#app");

if (app) {
  ReactDOM.render(<App />, app);
} else {
  console.error("Failed to bootstrap the notebook app");
}

<MSG> Change notification system in desktop to use blueprintjs

<DFF> @@ -2,67 +2,43 @@
  * Main entry point for the desktop notebook UI
  */
 
-import * as MathJax from "@nteract/mathjax";
+import { Intent, Toaster } from "@blueprintjs/core";
 
 import "@blueprintjs/core/lib/css/blueprint.css";
 import "@blueprintjs/select/lib/css/blueprint-select.css";
 
-import "codemirror/addon/hint/show-hint.css";
-import "codemirror/lib/codemirror.css";
+import { actions, ContentRecord, ContentRef, createContentRef, makeAppRecord, makeCommsRecord, makeContentsRecord, makeEntitiesRecord, makeLocalHostRecord, makeNotebookContentRecord, makeStateRecord, makeTransformsRecord } from "@nteract/core";
+
+import DataExplorer from "@nteract/data-explorer";
+import WidgetDisplay from "@nteract/jupyter-widgets";
+import * as MathJax from "@nteract/mathjax";
+import NotebookApp from "@nteract/notebook-app-component";
+import { Media } from "@nteract/outputs";
 
 import "@nteract/styles/app.css";
+
+import "@nteract/styles/editor-overrides.css";
 import "@nteract/styles/global-variables.css";
 
 import "@nteract/styles/themes/base.css";
 import "@nteract/styles/themes/default.css";
-
-import "@nteract/styles/editor-overrides.css";
-
-import DataExplorer from "@nteract/data-explorer";
-import WidgetDisplay from "@nteract/jupyter-widgets";
 import GeoJSONTransform from "@nteract/transform-geojson";
 import ModelDebug from "@nteract/transform-model-debug";
 import PlotlyTransform from "@nteract/transform-plotly";
 import VDOMDisplay from "@nteract/transform-vdom";
-import {
-  Vega2,
-  Vega3,
-  Vega4,
-  Vega5,
-  VegaLite1,
-  VegaLite2,
-  VegaLite3,
-  VegaLite4
-} from "@nteract/transform-vega";
+import { Vega2, Vega3, Vega4, Vega5, VegaLite1, VegaLite2, VegaLite3, VegaLite4 } from "@nteract/transform-vega";
+
+import "codemirror/addon/hint/show-hint.css";
+import "codemirror/lib/codemirror.css";
 
 import { ipcRenderer as ipc, remote } from "electron";
+
+import * as Immutable from "immutable";
 import { mathJaxPath } from "mathjax-electron";
-import React from "react";
+import React, { RefObject } from "react";
 import ReactDOM from "react-dom";
-import NotificationSystem, {
-  System as ReactNotificationSystem
-} from "react-notification-system";
 import { Provider } from "react-redux";
 
-import {
-  actions,
-  ContentRecord,
-  ContentRef,
-  createContentRef,
-  makeAppRecord,
-  makeCommsRecord,
-  makeContentsRecord,
-  makeEntitiesRecord,
-  makeLocalHostRecord,
-  makeNotebookContentRecord,
-  makeStateRecord,
-  makeTransformsRecord
-} from "@nteract/core";
-import NotebookApp from "@nteract/notebook-app-component";
-import { Media } from "@nteract/outputs";
-
-import * as Immutable from "immutable";
-
 import { initGlobalHandlers } from "./global-events";
 import { initMenuHandlers } from "./menu";
 import { initNativeHandlers } from "./native-window";
@@ -167,21 +143,33 @@ initMenuHandlers(contentRef, store);
 initGlobalHandlers(contentRef, store);
 
 export default class App extends React.PureComponent {
-  notificationSystem: any;
+  toaster: RefObject<Toaster>;
 
   constructor(props: {}) {
     super(props);
-    this.notificationSystem = React.createRef();
+    this.toaster = React.createRef();
   }
 
   componentDidMount(): void {
+    const thisToaster = this.toaster.current;
+
     store.dispatch(
-      actions.setNotificationSystem(this.notificationSystem.current)
+      actions.setNotificationSystem({
+        addNotification: (msg: any) => {
+          thisToaster?.show({
+            message: `${msg.title ?? ""} ${msg.message ?? ""}`,
+            intent: ({
+              warning: Intent.WARNING,
+              error: Intent.DANGER,
+            } as any)[msg.level] ?? Intent.PRIMARY,
+          });
+        }
+      })
     );
     ipc.send("react-ready");
   }
 
-  render() {
+  render(): JSX.Element {
     return (
       <React.Fragment>
         <MathJax.Provider src={mathJaxPath} input="tex">
@@ -193,9 +181,7 @@ export default class App extends React.PureComponent {
             />
           </Provider>
         </MathJax.Provider>
-        <NotificationSystem
-          ref={(e: ReactNotificationSystem) => (this.notificationSystem = e)}
-        />
+        <Toaster ref={this.toaster} />
       </React.Fragment>
     );
   }

{'commit': 'diff --git a/applications/desktop/package.json b/applications/desktop/package.json\nindex 21f6951d8..476f8b7c4 100644\n--- a/applications/desktop/package.json\n+++ b/applications/desktop/package.json\n@@ -113,6 +113,7 @@\n     ]\n   },\n   "dependencies": {\n+    "@blueprintjs/core": "^3.7.0",\n     "@nteract/data-explorer": "^8.0.0",\n     "@nteract/examples": "3.1.1",\n     "ijavascript": "^5.2.0",\ndiff --git a/applications/desktop/src/notebook/index.tsx b/applications/desktop/src/notebook/index.tsx\nindex 2b4f3bc6c..bda12ac05 100644\n--- a/applications/desktop/src/notebook/index.tsx\n+++ b/applications/desktop/src/notebook/index.tsx\n@@ -2,67 +2,43 @@\n  * Main entry point for the desktop notebook UI\n  */\n \n-import * as MathJax from "@nteract/mathjax";\n+import { Intent, Toaster } from "@blueprintjs/core";\n \n import "@blueprintjs/core/lib/css/blueprint.css";\n import "@blueprintjs/select/lib/css/blueprint-select.css";\n \n-import "codemirror/addon/hint/show-hint.css";\n-import "codemirror/lib/codemirror.css";\n+import { actions, ContentRecord, ContentRef, createContentRef, makeAppRecord, makeCommsRecord, makeContentsRecord, makeEntitiesRecord, makeLocalHostRecord, makeNotebookContentRecord, makeStateRecord, makeTransformsRecord } from "@nteract/core";\n+\n+import DataExplorer from "@nteract/data-explorer";\n+import WidgetDisplay from "@nteract/jupyter-widgets";\n+import * as MathJax from "@nteract/mathjax";\n+import NotebookApp from "@nteract/notebook-app-component";\n+import { Media } from "@nteract/outputs";\n \n import "@nteract/styles/app.css";\n+\n+import "@nteract/styles/editor-overrides.css";\n import "@nteract/styles/global-variables.css";\n \n import "@nteract/styles/themes/base.css";\n import "@nteract/styles/themes/default.css";\n-\n-import "@nteract/styles/editor-overrides.css";\n-\n-import DataExplorer from "@nteract/data-explorer";\n-import WidgetDisplay from "@nteract/jupyter-widgets";\n import GeoJSONTransform from "@nteract/transform-geojson";\n import ModelDebug from "@nteract/transform-model-debug";\n import PlotlyTransform from "@nteract/transform-plotly";\n import VDOMDisplay from "@nteract/transform-vdom";\n-import {\n-  Vega2,\n-  Vega3,\n-  Vega4,\n-  Vega5,\n-  VegaLite1,\n-  VegaLite2,\n-  VegaLite3,\n-  VegaLite4\n-} from "@nteract/transform-vega";\n+import { Vega2, Vega3, Vega4, Vega5, VegaLite1, VegaLite2, VegaLite3, VegaLite4 } from "@nteract/transform-vega";\n+\n+import "codemirror/addon/hint/show-hint.css";\n+import "codemirror/lib/codemirror.css";\n \n import { ipcRenderer as ipc, remote } from "electron";\n+\n+import * as Immutable from "immutable";\n import { mathJaxPath } from "mathjax-electron";\n-import React from "react";\n+import React, { RefObject } from "react";\n import ReactDOM from "react-dom";\n-import NotificationSystem, {\n-  System as ReactNotificationSystem\n-} from "react-notification-system";\n import { Provider } from "react-redux";\n \n-import {\n-  actions,\n-  ContentRecord,\n-  ContentRef,\n-  createContentRef,\n-  makeAppRecord,\n-  makeCommsRecord,\n-  makeContentsRecord,\n-  makeEntitiesRecord,\n-  makeLocalHostRecord,\n-  makeNotebookContentRecord,\n-  makeStateRecord,\n-  makeTransformsRecord\n-} from "@nteract/core";\n-import NotebookApp from "@nteract/notebook-app-component";\n-import { Media } from "@nteract/outputs";\n-\n-import * as Immutable from "immutable";\n-\n import { initGlobalHandlers } from "./global-events";\n import { initMenuHandlers } from "./menu";\n import { initNativeHandlers } from "./native-window";\n@@ -167,21 +143,33 @@ initMenuHandlers(contentRef, store);\n initGlobalHandlers(contentRef, store);\n \n export default class App extends React.PureComponent {\n-  notificationSystem: any;\n+  toaster: RefObject<Toaster>;\n \n   constructor(props: {}) {\n     super(props);\n-    this.notificationSystem = React.createRef();\n+    this.toaster = React.createRef();\n   }\n \n   componentDidMount(): void {\n+    const thisToaster = this.toaster.current;\n+\n     store.dispatch(\n-      actions.setNotificationSystem(this.notificationSystem.current)\n+      actions.setNotificationSystem({\n+        addNotification: (msg: any) => {\n+          thisToaster?.show({\n+            message: `${msg.title ?? ""} ${msg.message ?? ""}`,\n+            intent: ({\n+              warning: Intent.WARNING,\n+              error: Intent.DANGER,\n+            } as any)[msg.level] ?? Intent.PRIMARY,\n+          });\n+        }\n+      })\n     );\n     ipc.send("react-ready");\n   }\n \n-  render() {\n+  render(): JSX.Element {\n     return (\n       <React.Fragment>\n         <MathJax.Provider src={mathJaxPath} input="tex">\n@@ -193,9 +181,7 @@ export default class App extends React.PureComponent {\n             />\n           </Provider>\n         </MathJax.Provider>\n-        <NotificationSystem\n-          ref={(e: ReactNotificationSystem) => (this.notificationSystem = e)}\n-        />\n+        <Toaster ref={this.toaster} />\n       </React.Fragment>\n     );\n   }\n', 'commit_subject': 'Change notification system in desktop to use blueprintjs', 'repo_name': 'nteract/nteract', 'committer': {'name': 'CrystallineCat', 'email': '7c141e93def67ca39104ca93e6e0660599f6a6cf@gmx.net', 'time_sec': '1581422171', 'tz_offset': '60', 'date': {'seconds': '1581422171'}}, 'commit_tree': '84e028a41f72cce11f72e052190f96a7a8c97934', 'commit_message': 'Change notification system in desktop to use blueprintjs\n', 'language_name': 'HTML', 'license': 'bsd-3-clause', 'hunks': '@@ -2,67 +2,43 @@\n  * Main entry point for the desktop notebook UI\n  */\n \n-import * as MathJax from "@nteract/mathjax";\n+import { Intent, Toaster } from "@blueprintjs/core";\n \n import "@blueprintjs/core/lib/css/blueprint.css";\n import "@blueprintjs/select/lib/css/blueprint-select.css";\n \n-import "codemirror/addon/hint/show-hint.css";\n-import "codemirror/lib/codemirror.css";\n+import { actions, ContentRecord, ContentRef, createContentRef, makeAppRecord, makeCommsRecord, makeContentsRecord, makeEntitiesRecord, makeLocalHostRecord, makeNotebookContentRecord, makeStateRecord, makeTransformsRecord } from "@nteract/core";\n+\n+import DataExplorer from "@nteract/data-explorer";\n+import WidgetDisplay from "@nteract/jupyter-widgets";\n+import * as MathJax from "@nteract/mathjax";\n+import NotebookApp from "@nteract/notebook-app-component";\n+import { Media } from "@nteract/outputs";\n \n import "@nteract/styles/app.css";\n+\n+import "@nteract/styles/editor-overrides.css";\n import "@nteract/styles/global-variables.css";\n \n import "@nteract/styles/themes/base.css";\n import "@nteract/styles/themes/default.css";\n-\n-import "@nteract/styles/editor-overrides.css";\n-\n-import DataExplorer from "@nteract/data-explorer";\n-import WidgetDisplay from "@nteract/jupyter-widgets";\n import GeoJSONTransform from "@nteract/transform-geojson";\n import ModelDebug from "@nteract/transform-model-debug";\n import PlotlyTransform from "@nteract/transform-plotly";\n import VDOMDisplay from "@nteract/transform-vdom";\n-import {\n-  Vega2,\n-  Vega3,\n-  Vega4,\n-  Vega5,\n-  VegaLite1,\n-  VegaLite2,\n-  VegaLite3,\n-  VegaLite4\n-} from "@nteract/transform-vega";\n+import { Vega2, Vega3, Vega4, Vega5, VegaLite1, VegaLite2, VegaLite3, VegaLite4 } from "@nteract/transform-vega";\n+\n+import "codemirror/addon/hint/show-hint.css";\n+import "codemirror/lib/codemirror.css";\n \n import { ipcRenderer as ipc, remote } from "electron";\n+\n+import * as Immutable from "immutable";\n import { mathJaxPath } from "mathjax-electron";\n-import React from "react";\n+import React, { RefObject } from "react";\n import ReactDOM from "react-dom";\n-import NotificationSystem, {\n-  System as ReactNotificationSystem\n-} from "react-notification-system";\n import { Provider } from "react-redux";\n \n-import {\n-  actions,\n-  ContentRecord,\n-  ContentRef,\n-  createContentRef,\n-  makeAppRecord,\n-  makeCommsRecord,\n-  makeContentsRecord,\n-  makeEntitiesRecord,\n-  makeLocalHostRecord,\n-  makeNotebookContentRecord,\n-  makeStateRecord,\n-  makeTransformsRecord\n-} from "@nteract/core";\n-import NotebookApp from "@nteract/notebook-app-component";\n-import { Media } from "@nteract/outputs";\n-\n-import * as Immutable from "immutable";\n-\n import { initGlobalHandlers } from "./global-events";\n import { initMenuHandlers } from "./menu";\n import { initNativeHandlers } from "./native-window";\n@@ -167,21 +143,33 @@ initMenuHandlers(contentRef, store);\n initGlobalHandlers(contentRef, store);\n \n export default class App extends React.PureComponent {\n-  notificationSystem: any;\n+  toaster: RefObject<Toaster>;\n \n   constructor(props: {}) {\n     super(props);\n-    this.notificationSystem = React.createRef();\n+    this.toaster = React.createRef();\n   }\n \n   componentDidMount(): void {\n+    const thisToaster = this.toaster.current;\n+\n     store.dispatch(\n-      actions.setNotificationSystem(this.notificationSystem.current)\n+      actions.setNotificationSystem({\n+        addNotification: (msg: any) => {\n+          thisToaster?.show({\n+            message: `${msg.title ?? ""} ${msg.message ?? ""}`,\n+            intent: ({\n+              warning: Intent.WARNING,\n+              error: Intent.DANGER,\n+            } as any)[msg.level] ?? Intent.PRIMARY,\n+          });\n+        }\n+      })\n     );\n     ipc.send("react-ready");\n   }\n \n-  render() {\n+  render(): JSX.Element {\n     return (\n       <React.Fragment>\n         <MathJax.Provider src={mathJaxPath} input="tex">\n@@ -193,9 +181,7 @@ export default class App extends React.PureComponent {\n             />\n           </Provider>\n         </MathJax.Provider>\n-        <NotificationSystem\n-          ref={(e: ReactNotificationSystem) => (this.notificationSystem = e)}\n-        />\n+        <Toaster ref={this.toaster} />\n       </React.Fragment>\n     );\n   }\n', 'addition_count': 34, 'deletion_count': 48, 'src_file': 'a/applications/desktop/src/notebook/index.tsx', 'tgt_file': 'b/applications/desktop/src/notebook/index.tsx', 'file_extension': '.tsx', 'before_file': '/**\n * Main entry point for the desktop notebook UI\n */\n\nimport * as MathJax from "@nteract/mathjax";\n\nimport "@blueprintjs/core/lib/css/blueprint.css";\nimport "@blueprintjs/select/lib/css/blueprint-select.css";\n\nimport "codemirror/addon/hint/show-hint.css";\nimport "codemirror/lib/codemirror.css";\n\nimport "@nteract/styles/app.css";\nimport "@nteract/styles/global-variables.css";\n\nimport "@nteract/styles/themes/base.css";\nimport "@nteract/styles/themes/default.css";\n\nimport "@nteract/styles/editor-overrides.css";\n\nimport DataExplorer from "@nteract/data-explorer";\nimport WidgetDisplay from "@nteract/jupyter-widgets";\nimport GeoJSONTransform from "@nteract/transform-geojson";\nimport ModelDebug from "@nteract/transform-model-debug";\nimport PlotlyTransform from "@nteract/transform-plotly";\nimport VDOMDisplay from "@nteract/transform-vdom";\nimport {\n  Vega2,\n  Vega3,\n  Vega4,\n  Vega5,\n  VegaLite1,\n  VegaLite2,\n  VegaLite3,\n  VegaLite4\n} from "@nteract/transform-vega";\n\nimport { ipcRenderer as ipc, remote } from "electron";\nimport { mathJaxPath } from "mathjax-electron";\nimport React from "react";\nimport ReactDOM from "react-dom";\nimport NotificationSystem, {\n  System as ReactNotificationSystem\n} from "react-notification-system";\nimport { Provider } from "react-redux";\n\nimport {\n  actions,\n  ContentRecord,\n  ContentRef,\n  createContentRef,\n  makeAppRecord,\n  makeCommsRecord,\n  makeContentsRecord,\n  makeEntitiesRecord,\n  makeLocalHostRecord,\n  makeNotebookContentRecord,\n  makeStateRecord,\n  makeTransformsRecord\n} from "@nteract/core";\nimport NotebookApp from "@nteract/notebook-app-component";\nimport { Media } from "@nteract/outputs";\n\nimport * as Immutable from "immutable";\n\nimport { initGlobalHandlers } from "./global-events";\nimport { initMenuHandlers } from "./menu";\nimport { initNativeHandlers } from "./native-window";\nimport VDOMDisplay from "@nteract/transform-vdom";\nimport {\n  Vega2,\n  Vega3,\n  Vega4,\n  Vega5,\n  VegaLite1,\n  VegaLite2,\n  VegaLite3,\n  VegaLite4,\n} from "@nteract/transform-vega";\n\nimport "codemirror/addon/hint/show-hint.css";\nimport "codemirror/lib/codemirror.css";\n\nimport { ipcRenderer as ipc, remote } from "electron";\n\nimport * as Immutable from "immutable";\nimport { mathJaxPath } from "mathjax-electron";\nimport React from "react";\nimport ReactDOM from "react-dom";\nimport { Provider } from "react-redux";\n\nimport { initGlobalHandlers } from "./global-events";\nimport { initMenuHandlers } from "./menu";\nimport { initNativeHandlers } from "./native-window";\nimport { makeDesktopNotebookRecord } from "./state";\nimport configureStore, { DesktopStore } from "./store";\n\n// Load the nteract fonts\nimport("./fonts");\n\nimport "@nteract/styles/cell-menu.css";\nimport "@nteract/styles/command-palette.css";\n\n// Needs to be last\nimport "@nteract/styles/editor-overrides.css";\nimport "@nteract/styles/monaco/overrides.css";\n\nconst contentRef = createContentRef();\n\nconst initialRefs = Immutable.Map<ContentRef, ContentRecord>().set(\n  contentRef,\n  makeNotebookContentRecord()\n);\n\nconst store = configureStore({\n  app: makeAppRecord({\n    host: makeLocalHostRecord(),\n    version: remote.app.getVersion(),\n  }),\n  core: makeStateRecord({\n    entities: makeEntitiesRecord({\n      comms: makeCommsRecord(),\n      contents: makeContentsRecord({\n        byRef: initialRefs,\n      }),\n      transforms: makeTransformsRecord({\n        displayOrder: Immutable.List([\n          "application/vnd.jupyter.widget-view+json",\n          "application/vnd.vega.v5+json",\n          "application/vnd.vega.v4+json",\n          "application/vnd.vega.v3+json",\n          "application/vnd.vega.v2+json",\n          "application/vnd.vegalite.v4+json",\n          "application/vnd.vegalite.v3+json",\n          "application/vnd.vegalite.v2+json",\n          "application/vnd.vegalite.v1+json",\n          "application/geo+json",\n          "application/vnd.plotly.v1+json",\n          "text/vnd.plotly.v1+html",\n          "application/x-nteract-model-debug+json",\n          "application/vnd.dataresource+json",\n          "application/vdom.v1+json",\n          "application/json",\n          "application/javascript",\n          "text/html",\n          "text/markdown",\n          "text/latex",\n          "image/svg+xml",\n          "image/gif",\n          "image/png",\n          "image/jpeg",\n          "text/plain",\n        ]),\n        byId: Immutable.Map({\n          "text/vnd.plotly.v1+html": PlotlyTransform,\n          "application/vnd.plotly.v1+json": PlotlyTransform,\n          "application/geo+json": GeoJSONTransform,\n          "application/x-nteract-model-debug+json": ModelDebug,\n          "application/vnd.dataresource+json": DataExplorer,\n          "application/vnd.jupyter.widget-view+json": WidgetDisplay,\n          "application/vnd.vegalite.v1+json": VegaLite1,\n          "application/vnd.vegalite.v2+json": VegaLite2,\n          "application/vnd.vegalite.v3+json": VegaLite3,\n          "application/vnd.vegalite.v4+json": VegaLite4,\n          "application/vnd.vega.v2+json": Vega2,\n          "application/vnd.vega.v3+json": Vega3,\ninitGlobalHandlers(contentRef, store);\n\nexport default class App extends React.PureComponent {\n  notificationSystem: any;\n\n  constructor(props: {}) {\n    super(props);\n    this.notificationSystem = React.createRef();\n  }\n\n  componentDidMount(): void {\n    store.dispatch(\n      actions.setNotificationSystem(this.notificationSystem.current)\n    );\n    ipc.send("react-ready");\n  }\n\n  render() {\n    return (\n      <React.Fragment>\n        <MathJax.Provider src={mathJaxPath} input="tex">\n\nexport default class App extends React.PureComponent {\n  componentDidMount(): void {\n    ipc.send("react-ready");\n  }\n            />\n          </Provider>\n        </MathJax.Provider>\n        <NotificationSystem\n          ref={(e: ReactNotificationSystem) => (this.notificationSystem = e)}\n        />\n      </React.Fragment>\n    );\n  }\n            // browser window\n            contentRef={contentRef}\n          />\n        </MathJax.Provider>\n      </Provider>\n    );\n  }\n}\n\nipc.send("transfer-config-options-to-main", allConfigOptionDefinitions());\n\nconst app = document.querySelector("#app");\n\nif (app) {\n  ReactDOM.render(<App />, app);\n} else {\n  console.error("Failed to bootstrap the notebook app");\n}\n', 'message': 'Change notification system in desktop to use blueprintjs\n', 'author_name': 'CrystallineCat', 'lang': 'tsx'}