diff --git a/jupyterlab_widgets/package.json b/jupyterlab_widgets/package.json index bd387f95807..dd3ae708560 100644 --- a/jupyterlab_widgets/package.json +++ b/jupyterlab_widgets/package.json @@ -53,6 +53,7 @@ "@jupyter-widgets/controls": "^4.0.0-alpha.2", "@jupyter-widgets/output": "^5.0.0-alpha.2", "@jupyterlab/application": "^3.0.0", + "@jupyterlab/console": "^3.0.0", "@jupyterlab/docregistry": "^3.0.0", "@jupyterlab/logconsole": "^3.0.0", "@jupyterlab/mainmenu": "^3.0.0", diff --git a/jupyterlab_widgets/src/plugin.ts b/jupyterlab_widgets/src/plugin.ts index 773c99e6c77..a7ac23a63dd 100644 --- a/jupyterlab_widgets/src/plugin.ts +++ b/jupyterlab_widgets/src/plugin.ts @@ -2,8 +2,11 @@ // Distributed under the terms of the Modified BSD License. import { ISettingRegistry } from '@jupyterlab/settingregistry'; + import * as nbformat from '@jupyterlab/nbformat'; +import { IConsoleTracker, CodeConsole } from '@jupyterlab/console'; + import { DocumentRegistry } from '@jupyterlab/docregistry'; import { @@ -34,7 +37,11 @@ import { AttachedProperty } from '@lumino/properties'; import { WidgetRenderer } from './renderer'; -import { WidgetManager, WIDGET_VIEW_MIMETYPE } from './manager'; +import { + WidgetManager, + WIDGET_VIEW_MIMETYPE, + KernelWidgetManager +} from './manager'; import { OutputModel, OutputView, OUTPUT_WIDGET_VERSION } from './output'; @@ -58,7 +65,7 @@ const SETTINGS: WidgetManager.Settings = { saveState: false }; /** * Iterate through all widget renderers in a notebook. */ -function* widgetRenderers( +function* notebookWidgetRenderers( nb: Notebook ): Generator { for (const cell of nb.widgets) { @@ -74,6 +81,25 @@ function* widgetRenderers( } } +/** + * Iterate through all widget renderers in a console. + */ +function* consoleWidgetRenderers( + console: CodeConsole +): Generator { + for (const cell of toArray(console.cells)) { + if (cell.model.type === 'code') { + for (const codecell of (cell as CodeCell).outputArea.widgets) { + for (const output of toArray(codecell.children())) { + if (output instanceof WidgetRenderer) { + yield output; + } + } + } + } + } +} + /** * Iterate through all matching linked output views */ @@ -140,13 +166,58 @@ export function registerWidgetManager( }); } +export function registerConsoleWidgetManager( + console: CodeConsole, + rendermime: IRenderMimeRegistry, + renderers: IterableIterator +): DisposableDelegate { + let wManager = Private.widgetManagerProperty.get(console); + if (!wManager) { + wManager = new KernelWidgetManager( + console.sessionContext.session?.kernel!, + rendermime + ); + WIDGET_REGISTRY.forEach(data => wManager!.register(data)); + Private.widgetManagerProperty.set(console, wManager); + } + + for (const r of renderers) { + r.manager = wManager; + } + + // Replace the placeholder widget renderer with one bound to this widget + // manager. + rendermime.removeMimeType(WIDGET_VIEW_MIMETYPE); + rendermime.addFactory( + { + safe: false, + mimeTypes: [WIDGET_VIEW_MIMETYPE], + createRenderer: options => new WidgetRenderer(options, wManager) + }, + 0 + ); + + return new DisposableDelegate(() => { + if (rendermime) { + rendermime.removeMimeType(WIDGET_VIEW_MIMETYPE); + } + wManager!.dispose(); + }); +} + /** * The widget manager provider. */ const plugin: JupyterFrontEndPlugin = { id: '@jupyter-widgets/jupyterlab-manager:plugin', requires: [IRenderMimeRegistry], - optional: [INotebookTracker, ISettingRegistry, IMainMenu, ILoggerRegistry], + optional: [ + INotebookTracker, + IConsoleTracker, + ISettingRegistry, + IMainMenu, + ILoggerRegistry + ], provides: base.IJupyterWidgetRegistry, activate: activateWidgetExtension, autoStart: true @@ -165,6 +236,7 @@ function activateWidgetExtension( app: JupyterFrontEnd, rendermime: IRenderMimeRegistry, tracker: INotebookTracker | null, + consoleTracker: IConsoleTracker | null, settingRegistry: ISettingRegistry | null, menu: IMainMenu | null, loggerRegistry: ILoggerRegistry | null @@ -179,7 +251,10 @@ function activateWidgetExtension( const wManager = Private.widgetManagerProperty.get(nb.context); if (wManager) { wManager.onUnhandledIOPubMessage.connect( - (sender: WidgetManager, msg: KernelMessage.IIOPubMessage) => { + ( + sender: WidgetManager | KernelWidgetManager, + msg: KernelMessage.IIOPubMessage + ) => { const logger = loggerRegistry.getLogger(nb.context.path); let level: LogLevel = 'warning'; if ( @@ -226,7 +301,7 @@ function activateWidgetExtension( panel.context, panel.content.rendermime, chain( - widgetRenderers(panel.content), + notebookWidgetRenderers(panel.content), outputViews(app, panel.context.path) ) ); @@ -238,7 +313,7 @@ function activateWidgetExtension( panel.context, panel.content.rendermime, chain( - widgetRenderers(panel.content), + notebookWidgetRenderers(panel.content), outputViews(app, panel.context.path) ) ); @@ -247,6 +322,24 @@ function activateWidgetExtension( }); } + if (consoleTracker !== null) { + consoleTracker.forEach(async panel => { + await panel.sessionContext.ready; + registerConsoleWidgetManager( + panel.console, + panel.console.rendermime, + chain(consoleWidgetRenderers(panel.console)) + ); + }); + consoleTracker.widgetAdded.connect(async (sender, panel) => { + await panel.sessionContext.ready; + registerConsoleWidgetManager( + panel.console, + panel.console.rendermime, + chain(consoleWidgetRenderers(panel.console)) + ); + }); + } if (settingRegistry !== null) { // Add a command for automatically saving (jupyter-)widget state. commands.addCommand('@jupyter-widgets/jupyterlab-manager:saveWidgetState', { @@ -321,10 +414,11 @@ namespace Private { * A private attached property for a widget manager. */ export const widgetManagerProperty = new AttachedProperty< - DocumentRegistry.Context, - WidgetManager | undefined + DocumentRegistry.Context | CodeConsole, + WidgetManager | KernelWidgetManager | undefined >({ name: 'widgetManager', - create: (owner: DocumentRegistry.Context): undefined => undefined + create: (owner: DocumentRegistry.Context | CodeConsole): undefined => + undefined }); } diff --git a/jupyterlab_widgets/src/renderer.ts b/jupyterlab_widgets/src/renderer.ts index 3cedef9104c..4b3515e14b6 100644 --- a/jupyterlab_widgets/src/renderer.ts +++ b/jupyterlab_widgets/src/renderer.ts @@ -9,7 +9,7 @@ import { Panel, Widget as LuminoWidget } from '@lumino/widgets'; import { IRenderMime } from '@jupyterlab/rendermime-interfaces'; -import { WidgetManager } from './manager'; +import { LabWidgetManager } from './manager'; import { DOMWidgetModel } from '@jupyter-widgets/base'; /** @@ -17,7 +17,10 @@ import { DOMWidgetModel } from '@jupyter-widgets/base'; */ export class WidgetRenderer extends Panel implements IRenderMime.IRenderer, IDisposable { - constructor(options: IRenderMime.IRendererOptions, manager?: WidgetManager) { + constructor( + options: IRenderMime.IRendererOptions, + manager?: LabWidgetManager + ) { super(); this.mimeType = options.mimeType; if (manager) { @@ -28,7 +31,7 @@ export class WidgetRenderer extends Panel /** * The widget manager. */ - set manager(value: WidgetManager) { + set manager(value: LabWidgetManager) { value.restored.connect(this._rerender, this); this._manager.resolve(value); } @@ -125,6 +128,6 @@ export class WidgetRenderer extends Panel * The mimetype being rendered. */ readonly mimeType: string; - private _manager = new PromiseDelegate(); + private _manager = new PromiseDelegate(); private _rerenderMimeModel: IRenderMime.IMimeModel | null = null; } diff --git a/yarn.lock b/yarn.lock index a0055bcc297..78f79994d63 100644 --- a/yarn.lock +++ b/yarn.lock @@ -218,6 +218,34 @@ sanitize-html "~1.27.4" url "^0.11.0" +"@jupyterlab/apputils@^3.0.4": + version "3.0.4" + resolved "https://registry.npmjs.org/@jupyterlab/apputils/-/apputils-3.0.4.tgz#4aaec678aa61df798fd2c0f88b41f492f6dba415" + integrity sha512-k0t5wUdyfg1+lrv+crM1E4syCf5dDlrclQGbtNk0UcAjjjE0iPxaNnnbHxix8zrqCmFH0/ouKGntHDIL38b0uw== + dependencies: + "@jupyterlab/coreutils" "^5.0.2" + "@jupyterlab/services" "^6.0.4" + "@jupyterlab/settingregistry" "^3.0.2" + "@jupyterlab/statedb" "^3.0.2" + "@jupyterlab/translation" "^3.0.4" + "@jupyterlab/ui-components" "^3.0.3" + "@lumino/algorithm" "^1.3.3" + "@lumino/commands" "^1.12.0" + "@lumino/coreutils" "^1.5.3" + "@lumino/disposable" "^1.4.3" + "@lumino/domutils" "^1.2.3" + "@lumino/messaging" "^1.4.3" + "@lumino/properties" "^1.2.3" + "@lumino/signaling" "^1.4.3" + "@lumino/virtualdom" "^1.8.0" + "@lumino/widgets" "^1.16.1" + "@types/react" "^17.0.0" + buffer "^5.6.0" + react "^17.0.1" + react-dom "^17.0.1" + sanitize-html "~1.27.4" + url "^0.11.0" + "@jupyterlab/attachments@^3.0.4": version "3.0.4" resolved "https://registry.npmjs.org/@jupyterlab/attachments/-/attachments-3.0.4.tgz#4e39be8d4cacb105269c23e75ea4bfa62c1271de" @@ -230,6 +258,18 @@ "@lumino/disposable" "^1.4.3" "@lumino/signaling" "^1.4.3" +"@jupyterlab/attachments@^3.0.5": + version "3.0.5" + resolved "https://registry.npmjs.org/@jupyterlab/attachments/-/attachments-3.0.5.tgz#a43b43580d2a35a28908f90362de95d15033fb43" + integrity sha512-K9q2OHWQqyWMY3zMNWXdUtTebFUkpUNkZrZF3B4Iwv3Dw/rlFwoQaGulFa0WMNrry60635e7DLdQ8gswdkrk9w== + dependencies: + "@jupyterlab/nbformat" "^3.0.2" + "@jupyterlab/observables" "^4.0.2" + "@jupyterlab/rendermime" "^3.0.5" + "@jupyterlab/rendermime-interfaces" "^3.0.4" + "@lumino/disposable" "^1.4.3" + "@lumino/signaling" "^1.4.3" + "@jupyterlab/builder@^3.0.0": version "3.0.2" resolved "https://registry.npmjs.org/@jupyterlab/builder/-/builder-3.0.2.tgz#d33764a7162e85a623ef0baa3e0773c42838fcf8" @@ -315,6 +355,32 @@ "@lumino/widgets" "^1.16.1" react "^17.0.1" +"@jupyterlab/cells@^3.0.5": + version "3.0.5" + resolved "https://registry.npmjs.org/@jupyterlab/cells/-/cells-3.0.5.tgz#a3514c7754e3ac7c6eba06364ffdd9f3d64dbbb3" + integrity sha512-wEYlPY3NeySVpwsAxRL4wUbGYlD8VTeYMlQDSxe3hgm2WS+uXHX4/FhfJAqYpBmbESLyicM+7z95kq0NVVe0Zw== + dependencies: + "@jupyterlab/apputils" "^3.0.4" + "@jupyterlab/attachments" "^3.0.5" + "@jupyterlab/codeeditor" "^3.0.4" + "@jupyterlab/codemirror" "^3.0.4" + "@jupyterlab/coreutils" "^5.0.2" + "@jupyterlab/filebrowser" "^3.0.5" + "@jupyterlab/nbformat" "^3.0.2" + "@jupyterlab/observables" "^4.0.2" + "@jupyterlab/outputarea" "^3.0.5" + "@jupyterlab/rendermime" "^3.0.5" + "@jupyterlab/services" "^6.0.4" + "@jupyterlab/ui-components" "^3.0.3" + "@lumino/algorithm" "^1.3.3" + "@lumino/coreutils" "^1.5.3" + "@lumino/dragdrop" "^1.7.1" + "@lumino/messaging" "^1.4.3" + "@lumino/signaling" "^1.4.3" + "@lumino/virtualdom" "^1.8.0" + "@lumino/widgets" "^1.16.1" + react "^17.0.1" + "@jupyterlab/codeeditor@^3.0.3": version "3.0.3" resolved "https://registry.npmjs.org/@jupyterlab/codeeditor/-/codeeditor-3.0.3.tgz#a9498019da08f2dc6df555b31bf87d5846c8ffc6" @@ -332,6 +398,23 @@ "@lumino/signaling" "^1.4.3" "@lumino/widgets" "^1.16.1" +"@jupyterlab/codeeditor@^3.0.4": + version "3.0.4" + resolved "https://registry.npmjs.org/@jupyterlab/codeeditor/-/codeeditor-3.0.4.tgz#6502748c825d39735473102571e021fa4cc8181b" + integrity sha512-KLLr4Ht2zEWG+OGk2x4xlSbq9seSmIsxlCjO/uj61N8Cvs9ZZ492kZaSvcsVbouVZq5dnwaGaI14Y4HNg3QFlA== + dependencies: + "@jupyterlab/coreutils" "^5.0.2" + "@jupyterlab/nbformat" "^3.0.2" + "@jupyterlab/observables" "^4.0.2" + "@jupyterlab/translation" "^3.0.4" + "@jupyterlab/ui-components" "^3.0.3" + "@lumino/coreutils" "^1.5.3" + "@lumino/disposable" "^1.4.3" + "@lumino/dragdrop" "^1.7.1" + "@lumino/messaging" "^1.4.3" + "@lumino/signaling" "^1.4.3" + "@lumino/widgets" "^1.16.1" + "@jupyterlab/codemirror@^3.0.3": version "3.0.3" resolved "https://registry.npmjs.org/@jupyterlab/codemirror/-/codemirror-3.0.3.tgz#a623cb14fc638e7dcbb12e89f226983a6c7013da" @@ -354,6 +437,51 @@ codemirror "~5.57.0" react "^17.0.1" +"@jupyterlab/codemirror@^3.0.4": + version "3.0.4" + resolved "https://registry.npmjs.org/@jupyterlab/codemirror/-/codemirror-3.0.4.tgz#0ee0a141a1286d2732b677131aa498614698459a" + integrity sha512-5Jh4w4xVbz99uS246IzjB7wc8wXc253Mvaq8f7vtmU/Xp+g/HkuF2CGBx9hoZFY28xugyWn2tW52KyozuBT0Tg== + dependencies: + "@jupyterlab/apputils" "^3.0.4" + "@jupyterlab/codeeditor" "^3.0.4" + "@jupyterlab/coreutils" "^5.0.2" + "@jupyterlab/nbformat" "^3.0.2" + "@jupyterlab/observables" "^4.0.2" + "@jupyterlab/statusbar" "^3.0.4" + "@jupyterlab/translation" "^3.0.4" + "@lumino/algorithm" "^1.3.3" + "@lumino/commands" "^1.12.0" + "@lumino/coreutils" "^1.5.3" + "@lumino/disposable" "^1.4.3" + "@lumino/polling" "^1.3.3" + "@lumino/signaling" "^1.4.3" + "@lumino/widgets" "^1.16.1" + codemirror "~5.57.0" + react "^17.0.1" + +"@jupyterlab/console@^3.0.0": + version "3.0.5" + resolved "https://registry.npmjs.org/@jupyterlab/console/-/console-3.0.5.tgz#70058b4a5232b9d5d7d68aba6d91cef20bcbab5d" + integrity sha512-OTpE6ftu85XBttugWhufP5gEMWmZnnoFTrx57Ag4blRdjFEugEnlpZrYBwgNwqG2PYWKUsztwNzzw8vJJ946qw== + dependencies: + "@jupyterlab/apputils" "^3.0.4" + "@jupyterlab/cells" "^3.0.5" + "@jupyterlab/codeeditor" "^3.0.4" + "@jupyterlab/coreutils" "^5.0.2" + "@jupyterlab/nbformat" "^3.0.2" + "@jupyterlab/observables" "^4.0.2" + "@jupyterlab/rendermime" "^3.0.5" + "@jupyterlab/services" "^6.0.4" + "@jupyterlab/translation" "^3.0.4" + "@jupyterlab/ui-components" "^3.0.3" + "@lumino/algorithm" "^1.3.3" + "@lumino/coreutils" "^1.5.3" + "@lumino/disposable" "^1.4.3" + "@lumino/dragdrop" "^1.7.1" + "@lumino/messaging" "^1.4.3" + "@lumino/signaling" "^1.4.3" + "@lumino/widgets" "^1.16.1" + "@jupyterlab/coreutils@^5.0.2": version "5.0.2" resolved "https://registry.npmjs.org/@jupyterlab/coreutils/-/coreutils-5.0.2.tgz#e1845cb05d228179babccf1a3cbfde8abe456113" @@ -387,6 +515,26 @@ "@lumino/widgets" "^1.16.1" react "^17.0.1" +"@jupyterlab/docmanager@^3.0.5": + version "3.0.5" + resolved "https://registry.npmjs.org/@jupyterlab/docmanager/-/docmanager-3.0.5.tgz#bb308cce8537dc6c086564a216f086956e25b599" + integrity sha512-3Iq073SGW2t2pk0j1IFNsiHxOsy38bVogE/GSO3ioeKVWA7QMCYifAuWRPe3599hAv5DnLKuFdX1faNMOY+x4g== + dependencies: + "@jupyterlab/apputils" "^3.0.4" + "@jupyterlab/coreutils" "^5.0.2" + "@jupyterlab/docregistry" "^3.0.5" + "@jupyterlab/services" "^6.0.4" + "@jupyterlab/statusbar" "^3.0.4" + "@jupyterlab/translation" "^3.0.4" + "@lumino/algorithm" "^1.3.3" + "@lumino/coreutils" "^1.5.3" + "@lumino/disposable" "^1.4.3" + "@lumino/messaging" "^1.4.3" + "@lumino/properties" "^1.2.3" + "@lumino/signaling" "^1.4.3" + "@lumino/widgets" "^1.16.1" + react "^17.0.1" + "@jupyterlab/docregistry@^3.0.0", "@jupyterlab/docregistry@^3.0.4": version "3.0.4" resolved "https://registry.npmjs.org/@jupyterlab/docregistry/-/docregistry-3.0.4.tgz#feb134f390eb74653699ec54140d07964a7421e0" @@ -409,6 +557,28 @@ "@lumino/signaling" "^1.4.3" "@lumino/widgets" "^1.16.1" +"@jupyterlab/docregistry@^3.0.5": + version "3.0.5" + resolved "https://registry.npmjs.org/@jupyterlab/docregistry/-/docregistry-3.0.5.tgz#cb230fbc13585fd8f7beb780bf6fbffa563fe9f6" + integrity sha512-Y62u7mOQFScnu0DF7DkCYejXfORVSfNN5xRTLtTaRd76CVzrc6MPSRLnkhnATreES6dJ2IbfU50Azrr9eEfn4Q== + dependencies: + "@jupyterlab/apputils" "^3.0.4" + "@jupyterlab/codeeditor" "^3.0.4" + "@jupyterlab/codemirror" "^3.0.4" + "@jupyterlab/coreutils" "^5.0.2" + "@jupyterlab/observables" "^4.0.2" + "@jupyterlab/rendermime" "^3.0.5" + "@jupyterlab/rendermime-interfaces" "^3.0.4" + "@jupyterlab/services" "^6.0.4" + "@jupyterlab/translation" "^3.0.4" + "@jupyterlab/ui-components" "^3.0.3" + "@lumino/algorithm" "^1.3.3" + "@lumino/coreutils" "^1.5.3" + "@lumino/disposable" "^1.4.3" + "@lumino/messaging" "^1.4.3" + "@lumino/signaling" "^1.4.3" + "@lumino/widgets" "^1.16.1" + "@jupyterlab/filebrowser@^3.0.4": version "3.0.4" resolved "https://registry.npmjs.org/@jupyterlab/filebrowser/-/filebrowser-3.0.4.tgz#afa98a1cca4ce3c0916883797bdf059fbd1249a7" @@ -435,6 +605,32 @@ "@lumino/widgets" "^1.16.1" react "^17.0.1" +"@jupyterlab/filebrowser@^3.0.5": + version "3.0.5" + resolved "https://registry.npmjs.org/@jupyterlab/filebrowser/-/filebrowser-3.0.5.tgz#253b4148a27fdf1d0b9b6360e6e20d67e42750e9" + integrity sha512-a+hSbY2U5Xy0wS/wwc5QIVigX6/9fdQmygWC7e0hD67UnUlG2tI135SS9wkWXkOPzzHDcyDua2AOXPN3InC51w== + dependencies: + "@jupyterlab/apputils" "^3.0.4" + "@jupyterlab/coreutils" "^5.0.2" + "@jupyterlab/docmanager" "^3.0.5" + "@jupyterlab/docregistry" "^3.0.5" + "@jupyterlab/services" "^6.0.4" + "@jupyterlab/statedb" "^3.0.2" + "@jupyterlab/statusbar" "^3.0.4" + "@jupyterlab/translation" "^3.0.4" + "@jupyterlab/ui-components" "^3.0.3" + "@lumino/algorithm" "^1.3.3" + "@lumino/coreutils" "^1.5.3" + "@lumino/disposable" "^1.4.3" + "@lumino/domutils" "^1.2.3" + "@lumino/dragdrop" "^1.7.1" + "@lumino/messaging" "^1.4.3" + "@lumino/polling" "^1.3.3" + "@lumino/signaling" "^1.4.3" + "@lumino/virtualdom" "^1.8.0" + "@lumino/widgets" "^1.16.1" + react "^17.0.1" + "@jupyterlab/logconsole@^3.0.0": version "3.0.4" resolved "https://registry.npmjs.org/@jupyterlab/logconsole/-/logconsole-3.0.4.tgz#1b410e1b4f09a95d0b6fd2032f31d3e9f345d99d" @@ -532,6 +728,26 @@ "@lumino/widgets" "^1.16.1" resize-observer-polyfill "^1.5.1" +"@jupyterlab/outputarea@^3.0.5": + version "3.0.5" + resolved "https://registry.npmjs.org/@jupyterlab/outputarea/-/outputarea-3.0.5.tgz#de79fface2aaf74612be005d8539cd1fc2a82471" + integrity sha512-i7jGvpJacuWC6+kPB/uj6HYfd1Fyt5xH4CHwSpJLTZttrufVQWPAhk89FeFzNk7uHV1KzXqiN1Pe2+XTfwAdnw== + dependencies: + "@jupyterlab/apputils" "^3.0.4" + "@jupyterlab/nbformat" "^3.0.2" + "@jupyterlab/observables" "^4.0.2" + "@jupyterlab/rendermime" "^3.0.5" + "@jupyterlab/rendermime-interfaces" "^3.0.4" + "@jupyterlab/services" "^6.0.4" + "@lumino/algorithm" "^1.3.3" + "@lumino/coreutils" "^1.5.3" + "@lumino/disposable" "^1.4.3" + "@lumino/messaging" "^1.4.3" + "@lumino/properties" "^1.2.3" + "@lumino/signaling" "^1.4.3" + "@lumino/widgets" "^1.16.1" + resize-observer-polyfill "^1.5.1" + "@jupyterlab/rendermime-interfaces@^3.0.0", "@jupyterlab/rendermime-interfaces@^3.0.3": version "3.0.3" resolved "https://registry.npmjs.org/@jupyterlab/rendermime-interfaces/-/rendermime-interfaces-3.0.3.tgz#ab2f5adc71b66a461d86904b3bf6d54d2cb28d95" @@ -541,6 +757,15 @@ "@lumino/coreutils" "^1.5.3" "@lumino/widgets" "^1.16.1" +"@jupyterlab/rendermime-interfaces@^3.0.4": + version "3.0.4" + resolved "https://registry.npmjs.org/@jupyterlab/rendermime-interfaces/-/rendermime-interfaces-3.0.4.tgz#965d1f137aca2d95599896516fcbe4de95eb4e4f" + integrity sha512-S18WCgj3ZZ9MYvcaxTWvowpyYVt8WUYPCjofMo9+B/W+faGG6hFxP7XtQZlZGwmlZNFghC+38z8zca9hWR/AaA== + dependencies: + "@jupyterlab/translation" "^3.0.4" + "@lumino/coreutils" "^1.5.3" + "@lumino/widgets" "^1.16.1" + "@jupyterlab/rendermime@^3.0.0", "@jupyterlab/rendermime@^3.0.4": version "3.0.4" resolved "https://registry.npmjs.org/@jupyterlab/rendermime/-/rendermime-3.0.4.tgz#6839fea99ddc97ca8b2af3eed54f0ad632b2556f" @@ -562,6 +787,27 @@ lodash.escape "^4.0.1" marked "^1.1.1" +"@jupyterlab/rendermime@^3.0.5": + version "3.0.5" + resolved "https://registry.npmjs.org/@jupyterlab/rendermime/-/rendermime-3.0.5.tgz#c00c867fd3888629b2dd122357d385c7bc7d6b7f" + integrity sha512-UdYXxrUyFhb5riuJ48LxDOJXz+9ZmEtXa9FXc+UNuUi0BOelorv1Z4u/4uy38v+l0oRfK7TgGC5rDGqhz2NSFw== + dependencies: + "@jupyterlab/apputils" "^3.0.4" + "@jupyterlab/codemirror" "^3.0.4" + "@jupyterlab/coreutils" "^5.0.2" + "@jupyterlab/nbformat" "^3.0.2" + "@jupyterlab/observables" "^4.0.2" + "@jupyterlab/rendermime-interfaces" "^3.0.4" + "@jupyterlab/services" "^6.0.4" + "@jupyterlab/translation" "^3.0.4" + "@lumino/algorithm" "^1.3.3" + "@lumino/coreutils" "^1.5.3" + "@lumino/messaging" "^1.4.3" + "@lumino/signaling" "^1.4.3" + "@lumino/widgets" "^1.16.1" + lodash.escape "^4.0.1" + marked "^2.0.0" + "@jupyterlab/services@^6.0.0", "@jupyterlab/services@^6.0.3": version "6.0.3" resolved "https://registry.npmjs.org/@jupyterlab/services/-/services-6.0.3.tgz#60b65555fc1ab69065b9bee1892329b02a9ad607" @@ -580,6 +826,24 @@ node-fetch "^2.6.0" ws "^7.2.0" +"@jupyterlab/services@^6.0.4": + version "6.0.4" + resolved "https://registry.npmjs.org/@jupyterlab/services/-/services-6.0.4.tgz#7d5701bc3f176004596340007d32e0ac245ee190" + integrity sha512-4VCf3SIDZVkaKifI+fhWhaJ4Pp+QttyPv9bJ8DJPblQGteObPFyNN86fskWm3dzQmoGXOqfqrk7Fyv47JCtmvw== + dependencies: + "@jupyterlab/coreutils" "^5.0.2" + "@jupyterlab/nbformat" "^3.0.2" + "@jupyterlab/observables" "^4.0.2" + "@jupyterlab/settingregistry" "^3.0.2" + "@jupyterlab/statedb" "^3.0.2" + "@lumino/algorithm" "^1.3.3" + "@lumino/coreutils" "^1.5.3" + "@lumino/disposable" "^1.4.3" + "@lumino/polling" "^1.3.3" + "@lumino/signaling" "^1.4.3" + node-fetch "^2.6.0" + ws "^7.2.0" + "@jupyterlab/settingregistry@^3.0.0", "@jupyterlab/settingregistry@^3.0.2": version "3.0.2" resolved "https://registry.npmjs.org/@jupyterlab/settingregistry/-/settingregistry-3.0.2.tgz#c64343b42de96b016df766cecdb3b97c6fca62c2" @@ -625,6 +889,27 @@ react "^17.0.1" typestyle "^2.0.4" +"@jupyterlab/statusbar@^3.0.4": + version "3.0.4" + resolved "https://registry.npmjs.org/@jupyterlab/statusbar/-/statusbar-3.0.4.tgz#888a5a327ef864c053ec56d5e51ae0c6f4da433b" + integrity sha512-M8O2hqJU6Z90QD4/dZAOEe9s1IYD6mFMjyaxmCQqDQ7xMpc+nWsVziEJG2ihQ/wBHP2Jwx0cz3witcE6rZ9hWA== + dependencies: + "@jupyterlab/apputils" "^3.0.4" + "@jupyterlab/codeeditor" "^3.0.4" + "@jupyterlab/coreutils" "^5.0.2" + "@jupyterlab/services" "^6.0.4" + "@jupyterlab/translation" "^3.0.4" + "@jupyterlab/ui-components" "^3.0.3" + "@lumino/algorithm" "^1.3.3" + "@lumino/coreutils" "^1.5.3" + "@lumino/disposable" "^1.4.3" + "@lumino/messaging" "^1.4.3" + "@lumino/signaling" "^1.4.3" + "@lumino/widgets" "^1.16.1" + csstype "~3.0.3" + react "^17.0.1" + typestyle "^2.0.4" + "@jupyterlab/translation@^3.0.3": version "3.0.3" resolved "https://registry.npmjs.org/@jupyterlab/translation/-/translation-3.0.3.tgz#44484f49be025a0a4cb0ed1e3a3cc191a8333d3b" @@ -635,6 +920,16 @@ "@jupyterlab/statedb" "^3.0.2" "@lumino/coreutils" "^1.5.3" +"@jupyterlab/translation@^3.0.4": + version "3.0.4" + resolved "https://registry.npmjs.org/@jupyterlab/translation/-/translation-3.0.4.tgz#0047fddfad5f0bdf20245c1603654623364b05ec" + integrity sha512-VOIjWkQ0FcJ/vZXyex7+P1+lgHff6NvNDF2A5UOCMiWeiDlqD8ZmCIIOTAmnSUNn/wwBbrxkrEYGfGeRMndgEg== + dependencies: + "@jupyterlab/coreutils" "^5.0.2" + "@jupyterlab/services" "^6.0.4" + "@jupyterlab/statedb" "^3.0.2" + "@lumino/coreutils" "^1.5.3" + "@jupyterlab/ui-components@^3.0.3": version "3.0.3" resolved "https://registry.npmjs.org/@jupyterlab/ui-components/-/ui-components-3.0.3.tgz#a9639ea66e606e32d790fe8a12377c02f0900808" @@ -7354,6 +7649,11 @@ marked@^1.1.1: resolved "https://registry.npmjs.org/marked/-/marked-1.2.9.tgz#53786f8b05d4c01a2a5a76b7d1ec9943d29d72dc" integrity sha512-H8lIX2SvyitGX+TRdtS06m1jHMijKN/XjfH6Ooii9fvxMlh8QdqBfBDkGUpMWH2kQNrtixjzYUa3SH8ROTgRRw== +marked@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/marked/-/marked-2.0.0.tgz#9662bbcb77ebbded0662a7be66ff929a8611cee5" + integrity sha512-NqRSh2+LlN2NInpqTQnS614Y/3NkVMFFU6sJlRFEpxJ/LHuK/qJECH7/fXZjk4VZstPW/Pevjil/VtSONsLc7Q== + math-expression-evaluator@^1.2.14: version "1.3.7" resolved "https://registry.npmjs.org/math-expression-evaluator/-/math-expression-evaluator-1.3.7.tgz#1b62225db86af06f7ea1fd9576a34af605a5b253"