From 89b737c940ecdf364662108c00749ae002750b29 Mon Sep 17 00:00:00 2001 From: Vidar Tonaas Fauske Date: Fri, 9 Aug 2019 17:50:08 +0100 Subject: [PATCH 1/2] Make vdom-ext dependencies optional --- packages/vdom-extension/src/index.ts | 63 +++++++++++++++------------- 1 file changed, 34 insertions(+), 29 deletions(-) diff --git a/packages/vdom-extension/src/index.ts b/packages/vdom-extension/src/index.ts index 682cd834130a..62894e24d840 100644 --- a/packages/vdom-extension/src/index.ts +++ b/packages/vdom-extension/src/index.ts @@ -34,14 +34,15 @@ const FACTORY_NAME = 'VDOM'; const plugin: JupyterFrontEndPlugin = { id: '@jupyterlab/vdom-extension:factory', - requires: [IRenderMimeRegistry, INotebookTracker, ILayoutRestorer], + requires: [IRenderMimeRegistry], + optional: [INotebookTracker, ILayoutRestorer], provides: IVDOMTracker, autoStart: true, activate: ( app: JupyterFrontEnd, rendermime: IRenderMimeRegistry, - notebooks: INotebookTracker, - restorer: ILayoutRestorer + notebooks: INotebookTracker | null, + restorer: ILayoutRestorer | null ) => { const tracker = new WidgetTracker({ namespace: 'vdom-widget' @@ -57,23 +58,25 @@ const plugin: JupyterFrontEndPlugin = { 0 ); - notebooks.widgetAdded.connect((sender, panel) => { - // Get the notebook's context and rendermime; - const { - context, - content: { rendermime } - } = panel; - - // Add the renderer factory to the notebook's rendermime registry; - rendermime.addFactory( - { - safe: false, - mimeTypes: [MIME_TYPE], - createRenderer: options => new RenderedVDOM(options, context) - }, - 0 - ); - }); + if (notebooks) { + notebooks.widgetAdded.connect((sender, panel) => { + // Get the notebook's context and rendermime; + const { + context, + content: { rendermime } + } = panel; + + // Add the renderer factory to the notebook's rendermime registry; + rendermime.addFactory( + { + safe: false, + mimeTypes: [MIME_TYPE], + createRenderer: options => new RenderedVDOM(options, context) + }, + 0 + ); + }); + } app.docRegistry.addFileType({ name: 'vdom', @@ -102,15 +105,17 @@ const plugin: JupyterFrontEndPlugin = { // Add widget factory to document registry. app.docRegistry.addWidgetFactory(factory); - // Handle state restoration. - void restorer.restore(tracker, { - command: 'docmanager:open', - args: widget => ({ - path: widget.context.path, - factory: FACTORY_NAME - }), - name: widget => widget.context.path - }); + if (restorer) { + // Handle state restoration. + void restorer.restore(tracker, { + command: 'docmanager:open', + args: widget => ({ + path: widget.context.path, + factory: FACTORY_NAME + }), + name: widget => widget.context.path + }); + } return tracker; } From 86ada79dcbd1243e65bf1417308a46bb3e9f4713 Mon Sep 17 00:00:00 2001 From: Vidar Tonaas Fauske Date: Fri, 9 Aug 2019 17:53:34 +0100 Subject: [PATCH 2/2] strictNullCheck tweak --- packages/vdom-extension/src/index.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/vdom-extension/src/index.ts b/packages/vdom-extension/src/index.ts index 62894e24d840..8a781ee03d37 100644 --- a/packages/vdom-extension/src/index.ts +++ b/packages/vdom-extension/src/index.ts @@ -90,7 +90,7 @@ const plugin: JupyterFrontEndPlugin = { dataType: 'json', rendermime, name: FACTORY_NAME, - primaryFileType: app.docRegistry.getFileType('vdom'), + primaryFileType: app.docRegistry.getFileType('vdom')!, fileTypes: ['vdom', 'json'], defaultFor: ['vdom'] });