diff --git a/.prettierignore b/.prettierignore index 9e125ab..b9afefb 100644 --- a/.prettierignore +++ b/.prettierignore @@ -4,3 +4,4 @@ node_modules **/package.json !/package.json jupyterlab_cell_diff +.venv diff --git a/README.md b/README.md index a523864..e8d5449 100644 --- a/README.md +++ b/README.md @@ -1,25 +1,66 @@ -# JupyterLab Plugin: Show a Cell Diff +# jupyterlab-cell-diff [![Github Actions Status](https://github.com/jupyter-ai-contrib/jupyterlab-cell-diff/workflows/Build/badge.svg)](https://github.com/jupyter-ai-contrib/jupyterlab-cell-diff/actions/workflows/build.yml) -A JupyterLab Extension for showing cell (git) diffs. - -This extension is composed of a Python package named `jupyterlab_cell_diff` -for the server extension and a NPM package named `jupyterlab-cell-diff` -for the frontend extension. +A JupyterLab extension for showing cell diffs with multiple diffing strategies. ## Requirements - JupyterLab >= 4.0.0 -## Install +## Installation -To install the extension, execute: +### PyPI Installation ```bash pip install jupyterlab_cell_diff ``` +### Development Installation + +```bash +# Clone the repository +git clone https://github.com/jupyter-ai-contrib/jupyterlab-cell-diff.git +cd jupyterlab-cell-diff + +# Install the extension in development mode +pip install -e . +jupyter labextension develop . --overwrite +``` + +## Usage + +### Commands + +The extension provides several commands: + +- `jupyterlab-cell-diff:show-codemirror` - Show diff using `@codemirror/merge` +- `jupyterlab-cell-diff:show-nbdime` - Show diff using NBDime + +### Use with `@codemirror/merge` + +https://github.com/user-attachments/assets/0dacd7f0-5963-4ebe-81da-2958f0117071 + +### Use with NBDime + +https://github.com/user-attachments/assets/87e93eab-ad67-468c-b228-f5a0e93f8bea + +### Programmatic Usage + +```typescript +app.commands.execute('jupyterlab-cell-diff:show-codemirror', { + cellId: 'cell-id', + originalSource: 'print("Hello")', + newSource: 'print("Hello, World!")' +}); + +app.commands.execute('jupyterlab-cell-diff:show-nbdime', { + cellId: 'cell-id', + originalSource: 'print("Hello")', + newSource: 'print("Hello, World!")' +}); +``` + ## Uninstall To remove the extension, execute: diff --git a/package.json b/package.json index 4d42244..6b8eacc 100644 --- a/package.json +++ b/package.json @@ -19,7 +19,8 @@ "files": [ "lib/**/*.{d.ts,eot,gif,html,jpg,js,js.map,json,png,svg,woff2,ttf}", "style/**/*.{css,js,eot,gif,html,jpg,json,png,svg,woff2,ttf}", - "src/**/*.{ts,tsx}" + "src/**/*.{ts,tsx}", + "schema/*.json" ], "main": "lib/index.js", "types": "lib/index.d.ts", @@ -55,14 +56,19 @@ "watch:labextension": "jupyter labextension watch ." }, "dependencies": { + "@codemirror/lang-python": "^6.2.1", + "@codemirror/merge": "^6.10.2", + "@codemirror/view": "^6.38.2", "@jupyterlab/application": "^4.0.0", "@jupyterlab/cells": "^4.0.0", "@jupyterlab/codeeditor": "^4.0.0", + "@jupyterlab/codemirror": "^4.4.7", "@jupyterlab/coreutils": "^6.0.0", "@jupyterlab/notebook": "^4.0.0", "@jupyterlab/services": "^7.0.0", "@jupyterlab/ui-components": "^4.0.0", "@lumino/widgets": "^2.0.0", + "codemirror": "^6.0.2", "jupyterlab-cell-input-footer": "^0.3.0", "nbdime": "^7.0.1" }, diff --git a/pyproject.toml b/pyproject.toml index a241873..e5d5149 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -25,8 +25,8 @@ classifiers = [ dependencies = [ "nbdime", "jupyter_server>=2.4.0,<3", - "jupyterlab-eventlistener>=0.4.0", - "jupyterlab-cell-input-footer>=0.2.0" + "jupyterlab-eventlistener>=0.4.0,<0.5", + "jupyterlab-cell-input-footer>=0.3.1,<0.4" ] dynamic = ["version", "description", "authors", "urls", "keywords"] diff --git a/src/command.ts b/src/command.ts deleted file mode 100644 index 7793fb8..0000000 --- a/src/command.ts +++ /dev/null @@ -1,97 +0,0 @@ -import { ICellFooterTracker } from 'jupyterlab-cell-input-footer'; -import { IDiffEntry } from 'nbdime/lib/diff/diffentries'; -import { createPatchStringDiffModel } from 'nbdime/lib/diff/model'; -import { MergeView } from 'nbdime/lib/common/mergeview'; -import { ToolbarButton } from '@jupyterlab/ui-components'; -import { requestAPI } from './handler'; - -export namespace ShowDiff { - export interface ICommandArgs { - cell_id?: string; - original_source: string; - diff: IDiffEntry[]; - } - - export interface IFetchDiff { - original_source: string; - new_source: string; - } -} - -/** - * Adds a Diff UX underneath a JupyterLab cell. - * - * @param data - * @param cellFooterTracker - */ -export function showCellDiff( - data: ShowDiff.ICommandArgs, - cellFooterTracker: ICellFooterTracker -) { - const diff = createPatchStringDiffModel( - data['original_source'], - data['diff'] - ); - - const mergeView = new MergeView({ remote: diff }); - // - mergeView.addClass('jp-cell-diff'); - // Add the classes below to pick up the styling from nbdime. - mergeView.addClass('nbdime-root'); - mergeView.addClass('jp-Notebook-diff'); - mergeView.hide(); - - const footer = cellFooterTracker.getFooter(data.cell_id); - - // Try removing any old widget, if it exists. - try { - footer?.removeWidget('jp-cell-diff'); - footer?.removeToolbarItem('compare'); - } finally { - // Do Nothing - } - - footer?.addWidget(mergeView); - - if (footer?.isHidden) { - footer.show(); - footer.update(); - } - footer?.addToolbarItemOnLeft( - 'compare', - new ToolbarButton({ - // icon: wandIcon, - label: 'Compare changes', - enabled: true, - onClick: () => { - if (mergeView.isHidden) { - mergeView.show(); - return; - } - mergeView.hide(); - } - }) - ); -} - -export async function fetchDiff( - data: ShowDiff.IFetchDiff -): Promise { - return await requestAPI('api/celldiff'); -} - -/** - * Adds a diff to the Cell Footer - * - */ -export function showCellDiffCommand(cellFooterTracker: ICellFooterTracker) { - return (args: any) => { - const data: ShowDiff.ICommandArgs = args as any; - const cellId = data['cell_id']; - if (cellId) { - if (data && data['original_source'] && data['diff']) { - showCellDiff(data, cellFooterTracker); - } - } - }; -} diff --git a/src/diff/codemirror.ts b/src/diff/codemirror.ts new file mode 100644 index 0000000..d78e567 --- /dev/null +++ b/src/diff/codemirror.ts @@ -0,0 +1,111 @@ +import { python } from '@codemirror/lang-python'; +import { MergeView } from '@codemirror/merge'; +import { EditorView } from '@codemirror/view'; +import { jupyterTheme } from '@jupyterlab/codemirror'; +import { Message } from '@lumino/messaging'; +import { Widget } from '@lumino/widgets'; +import { basicSetup } from 'codemirror'; +import { IDiffWidgetOptions, BaseDiffWidget } from '../widget'; + +/** + * A Lumino widget that contains a CodeMirror diff view + */ +class CodeMirrorDiffWidget extends BaseDiffWidget { + /** + * Construct a new CodeMirrorDiffWidget. + */ + constructor(options: IDiffWidgetOptions) { + super(options); + this._originalCode = options.originalSource; + this._modifiedCode = options.newSource; + this.addClass('jp-DiffView'); + } + + /** + * Handle after-attach messages for the widget. + */ + protected onAfterAttach(msg: Message): void { + super.onAfterAttach(msg); + this._createMergeView(); + } + + /** + * Handle before-detach messages for the widget. + */ + protected onBeforeDetach(msg: Message): void { + this._destroyMergeView(); + super.onBeforeDetach(msg); + } + + /** + * Create the merge view with CodeMirror diff functionality. + */ + private _createMergeView(): void { + if (this._mergeView) { + return; + } + + this._mergeView = new MergeView({ + a: { + doc: this._originalCode, + extensions: [ + basicSetup, + python(), + EditorView.editable.of(false), + jupyterTheme + ] + }, + b: { + doc: this._modifiedCode, + extensions: [ + basicSetup, + python(), + EditorView.editable.of(false), + jupyterTheme + ] + }, + parent: this.node + }); + } + + /** + * Destroy the merge view and clean up resources. + */ + private _destroyMergeView(): void { + if (this._mergeView) { + this._mergeView.destroy(); + this._mergeView = null; + } + } + + private _originalCode: string; + private _modifiedCode: string; + private _mergeView: MergeView | null = null; +} + +export async function createCodeMirrorDiffWidget( + options: IDiffWidgetOptions +): Promise { + const { + cell, + cellFooterTracker, + originalSource, + newSource, + showActionButtons = true, + openDiff = true + } = options; + + const diffWidget = new CodeMirrorDiffWidget({ + originalSource, + newSource, + cell, + cellFooterTracker, + showActionButtons, + openDiff + }); + + diffWidget.addClass('jupyterlab-cell-diff'); + diffWidget.addToFooter(); + + return diffWidget; +} diff --git a/src/diff/nbdime.ts b/src/diff/nbdime.ts new file mode 100644 index 0000000..c068d55 --- /dev/null +++ b/src/diff/nbdime.ts @@ -0,0 +1,78 @@ +import { IDiffWidgetOptions } from '../widget'; +import { IDiffEntry } from 'nbdime/lib/diff/diffentries'; +import { createPatchStringDiffModel } from 'nbdime/lib/diff/model'; +import { MergeView } from 'nbdime/lib/common/mergeview'; +import { Widget } from '@lumino/widgets'; +import { BaseDiffWidget } from '../widget'; + +/** + * Options for creating an NBDime diff widget + */ +interface INBDimeDiffWidgetOptions extends IDiffWidgetOptions { + remote: any; +} + +/** + * Extended NBDime MergeView widget with action buttons support + */ +class NBDimeDiffWidget extends BaseDiffWidget { + /** + * Construct a new NBDimeDiffWidget. + */ + constructor(options: INBDimeDiffWidgetOptions) { + super(options); + + // Create the NBDime merge view as a child widget + this._mergeView = new MergeView({ remote: options.remote }); + this._mergeView.addClass('nbdime-diff-widget'); + this._mergeView.addClass('jp-cell-diff'); + this._mergeView.addClass('nbdime-root'); + this._mergeView.addClass('jp-Notebook-diff'); + + // Add the merge view to this widget's node + this.node.appendChild(this._mergeView.node); + this.addClass('jp-DiffView'); + } + private _mergeView: MergeView; +} + +/** + * Create a diff widget using NBDime + */ +export async function createNBDimeDiffWidget( + options: IDiffWidgetOptions +): Promise { + const { + cell, + cellFooterTracker, + originalSource, + newSource, + diffData, + showActionButtons = true, + openDiff = true + } = options; + + if (!diffData || !diffData.diff) { + throw new Error('NBDime strategy requires diff data'); + } + + const diff = createPatchStringDiffModel( + originalSource, + diffData.diff as IDiffEntry[] + ); + + const diffWidget = new NBDimeDiffWidget({ + remote: diff, + cell, + cellFooterTracker, + originalSource, + newSource, + showActionButtons, + openDiff + }); + + diffWidget.addClass('jupyterlab-cell-diff'); + diffWidget.addToFooter(); + + return diffWidget; +} diff --git a/src/index.ts b/src/index.ts index 05c4d94..d0883fe 100644 --- a/src/index.ts +++ b/src/index.ts @@ -1,30 +1,3 @@ -import { - JupyterFrontEnd, - JupyterFrontEndPlugin -} from '@jupyterlab/application'; +import plugin from './plugin'; -import { showCellDiffCommand } from './command'; - -import { ICellFooterTracker } from 'jupyterlab-cell-input-footer'; - -/** - * A JupyterLab plugin providing a command for displaying a diff below a cell. - */ -const showDiff: JupyterFrontEndPlugin = { - id: 'jupyterlab-cell-diff', - requires: [ICellFooterTracker], - autoStart: true, - activate: async ( - app: JupyterFrontEnd, - cellFooterTracker: ICellFooterTracker - ) => { - console.log('Jupyterlab extension - show cell diff.'); - await app.serviceManager.ready; - - app.commands.addCommand('show-diff', { - execute: showCellDiffCommand(cellFooterTracker) - }); - } -}; - -export default [showDiff]; +export default plugin; diff --git a/src/plugin.ts b/src/plugin.ts new file mode 100644 index 0000000..a4f2dd8 --- /dev/null +++ b/src/plugin.ts @@ -0,0 +1,261 @@ +import { + JupyterFrontEnd, + JupyterFrontEndPlugin +} from '@jupyterlab/application'; +import { ICellModel } from '@jupyterlab/cells'; +import { INotebookTracker, NotebookPanel } from '@jupyterlab/notebook'; +import { ICellFooterTracker } from 'jupyterlab-cell-input-footer'; + +import { requestAPI } from './handler'; +import { IDiffWidgetOptions } from './widget'; +import { createNBDimeDiffWidget } from './diff/nbdime'; +import { createCodeMirrorDiffWidget } from './diff/codemirror'; + +/** + * Find a notebook by path using the notebook tracker + */ +export function findNotebook( + notebookTracker: INotebookTracker, + notebookPath?: string +): NotebookPanel | null { + const notebook = notebookTracker.find( + widget => widget.context.path === notebookPath + ); + + return notebook ?? notebookTracker.currentWidget; +} + +/** + * Find a cell in a notebook by ID or return the active cell + */ +export function findCell( + notebook: NotebookPanel, + cellId?: string +): ICellModel | null { + const notebookWidget = notebook.content; + const model = notebookWidget.model; + + let cell = notebookWidget.activeCell?.model; + if (cellId && model) { + for (let i = 0; i < model.cells.length; i++) { + const c = model.cells.get(i); + if (c.id === cellId) { + cell = c; + break; + } + } + } + + return cell ?? null; +} + +/** + * CodeMirror diff plugin + */ +const codeMirrorPlugin: JupyterFrontEndPlugin = { + id: 'jupyterlab-cell-diff:codemirror-plugin', + description: 'Expose a command to show cell diffs using CodeMirror', + requires: [ICellFooterTracker, INotebookTracker], + autoStart: true, + activate: async ( + app: JupyterFrontEnd, + cellFooterTracker: ICellFooterTracker, + notebookTracker: INotebookTracker + ) => { + const { commands } = app; + + commands.addCommand('jupyterlab-cell-diff:show-codemirror', { + label: 'Show Cell Diff (CodeMirror)', + describedBy: { + args: { + type: 'object', + properties: { + cellId: { + type: 'string', + description: 'ID of the cell to show diff for' + }, + originalSource: { + type: 'string', + description: 'Original source code to compare against' + }, + newSource: { + type: 'string', + description: 'New source code to compare with' + }, + showActionButtons: { + type: 'boolean', + description: 'Whether to show action buttons in the diff widget' + }, + notebookPath: { + type: 'string', + description: 'Path to the notebook containing the cell' + }, + openDiff: { + type: 'boolean', + description: 'Whether to open the diff widget automatically' + } + } + } + }, + execute: async (args: any = {}) => { + const { + cellId, + originalSource, + newSource, + showActionButtons = true, + notebookPath, + openDiff = true + } = args; + + const currentNotebook = findNotebook(notebookTracker, notebookPath); + if (!currentNotebook) { + return; + } + + const cell = findCell(currentNotebook, cellId); + if (!cell) { + console.error( + 'Missing required arguments: cellId (or no active cell found)' + ); + return; + } + + const footer = cellFooterTracker.getFooter(cell.id); + if (!footer) { + console.error(`Footer not found for cell ${cell.id}`); + return; + } + + try { + const options: IDiffWidgetOptions = { + cell, + cellFooterTracker, + originalSource, + newSource, + showActionButtons, + openDiff + }; + + await createCodeMirrorDiffWidget(options); + } catch (error) { + console.error('Failed to create diff widget:', error); + } + } + }); + } +}; + +/** + * NBDime diff plugin + */ +const nbdimePlugin: JupyterFrontEndPlugin = { + id: 'jupyterlab-cell-diff:nbdime-plugin', + description: 'Expose a command to show cell diffs using NBDime', + requires: [ICellFooterTracker, INotebookTracker], + autoStart: true, + activate: async ( + app: JupyterFrontEnd, + cellFooterTracker: ICellFooterTracker, + notebookTracker: INotebookTracker + ) => { + const { commands } = app; + + commands.addCommand('jupyterlab-cell-diff:show-nbdime', { + label: 'Show Cell Diff (NBDime)', + describedBy: { + args: { + type: 'object', + properties: { + cellId: { + type: 'string', + description: 'ID of the cell to show diff for' + }, + originalSource: { + type: 'string', + description: 'Original source code to compare against' + }, + newSource: { + type: 'string', + description: 'New source code to compare with' + }, + showActionButtons: { + type: 'boolean', + description: 'Whether to show action buttons in the diff widget' + }, + notebookPath: { + type: 'string', + description: 'Path to the notebook containing the cell' + }, + openDiff: { + type: 'boolean', + description: 'Whether to open the diff widget automatically' + } + } + } + }, + execute: async (args: any = {}) => { + const { + cellId, + originalSource, + newSource, + showActionButtons = true, + notebookPath, + openDiff = true + } = args; + + const currentNotebook = findNotebook(notebookTracker, notebookPath); + if (!currentNotebook) { + return; + } + + const cell = findCell(currentNotebook, cellId); + if (!cell) { + console.error( + 'Missing required arguments: cellId (or no active cell found)' + ); + return; + } + + // For NBDime, fetch diff data from server + let diffData; + try { + const response = await requestAPI('api/celldiff', { + method: 'POST', + body: JSON.stringify({ + original_source: originalSource, + new_source: newSource + }) + }); + diffData = (response as any).diff; + } catch (error) { + console.warn('Failed to fetch diff data from server:', error); + } + + const footer = cellFooterTracker.getFooter(cell.id); + if (!footer) { + console.error(`Footer not found for cell ${cell.id}`); + return; + } + + try { + const options: IDiffWidgetOptions = { + cell, + cellFooterTracker, + originalSource, + newSource, + diffData: diffData ? { diff: diffData } : undefined, + cellId: cell.id, + showActionButtons, + openDiff + }; + + await createNBDimeDiffWidget(options); + } catch (error) { + console.error('Failed to create diff widget:', error); + } + } + }); + } +}; + +export default [codeMirrorPlugin, nbdimePlugin]; diff --git a/src/widget.ts b/src/widget.ts new file mode 100644 index 0000000..710d12c --- /dev/null +++ b/src/widget.ts @@ -0,0 +1,194 @@ +import { ICellModel } from '@jupyterlab/cells'; +import { checkIcon, ToolbarButton, undoIcon } from '@jupyterlab/ui-components'; +import { Widget } from '@lumino/widgets'; +import { ICellFooterTracker } from 'jupyterlab-cell-input-footer'; + +/** + * Options for creating a diff widget + */ +export interface IDiffWidgetOptions { + /** + * The cell to show the diff for + */ + cell: ICellModel; + + /** + * The cell footer tracker + */ + cellFooterTracker: ICellFooterTracker; + + /** + * The original source code + */ + originalSource: string; + + /** + * The new/modified source code + */ + newSource: string; + + /** + * Additional diff data (for nbdime strategy) + */ + diffData?: any; + + /** + * Cell ID for identification + */ + cellId?: string; + + /** + * Whether to show accept/reject buttons + */ + showActionButtons?: boolean; + + /** + * Whether to open the diff automatically (defaults to true) + */ + openDiff?: boolean; +} + +/** + * Base class for diff widgets with shared action button functionality + */ +export abstract class BaseDiffWidget extends Widget { + /** + * Construct a new BaseDiffWidget. + */ + constructor(options: IDiffWidgetOptions) { + super(); + this._cell = options.cell; + this._cellFooterTracker = options.cellFooterTracker; + this._originalSource = options.originalSource; + this._newSource = options.newSource || options.cell.sharedModel.getSource(); + this._showActionButtons = options.showActionButtons ?? true; + this._openDiff = options.openDiff ?? true; + } + + /** + * Create and add the diff widget to the cell footer with buttons. + */ + public addToFooter(): void { + if (!this._cellFooterTracker || !this._cell) { + return; + } + + const cellId = this._cell.id; + const footer = this._cellFooterTracker.getFooter(cellId); + if (!footer) { + return; + } + + footer.removeWidget('jupyterlab-cell-diff'); + footer.removeToolbarItem('accept-diff'); + footer.removeToolbarItem('reject-diff'); + footer.removeToolbarItem('toggle-diff'); + footer.removeToolbarItem('compare'); + + footer.addWidget(this); + + this._createButtons(footer); + + this._cellFooterTracker.showFooter(cellId); + } + + /** + * Handle accept button click event. + */ + public onAcceptClick(): void { + if (this._cell) { + this._cell.sharedModel.setSource(this._newSource); + this._closeDiffView(); + } + } + + /** + * Handle reject button click event. + */ + public onRejectClick(): void { + if (this._cell) { + this._cell.sharedModel.setSource(this._originalSource); + this._closeDiffView(); + } + } + + /** + * Handle toggle diff visibility + */ + public onToggleClick(): void { + if (this.isHidden) { + this.show(); + } else { + this.hide(); + } + } + + /** + * Create accept, reject, and toggle buttons for the footer toolbar. + */ + private _createButtons(footer: any): void { + this._toggleButton = new ToolbarButton({ + label: 'Compare changes', + enabled: true, + className: 'jp-DiffView-toggle', + onClick: () => { + this.onToggleClick(); + } + }); + + footer.addToolbarItemOnLeft('toggle-diff', this._toggleButton); + + if (this._showActionButtons) { + const rejectButton = new ToolbarButton({ + icon: undoIcon, + tooltip: 'Reject Changes', + enabled: true, + className: 'jp-DiffView-reject', + onClick: () => this.onRejectClick() + }); + + const acceptButton = new ToolbarButton({ + icon: checkIcon, + tooltip: 'Accept Changes', + enabled: true, + className: 'jp-DiffView-accept', + onClick: () => this.onAcceptClick() + }); + + footer.addToolbarItemOnRight('reject-diff', rejectButton); + footer.addToolbarItemOnRight('accept-diff', acceptButton); + } + + if (this._openDiff) { + this.show(); + } else { + this.hide(); + } + } + + /** + * Close the diff view and clean up the footer. + */ + private _closeDiffView(): void { + if (this._cellFooterTracker && this._cell) { + const cellId = this._cell.id; + const footer = this._cellFooterTracker.getFooter(cellId); + if (footer) { + footer.removeWidget('jupyterlab-cell-diff'); + footer.removeToolbarItem('accept-diff'); + footer.removeToolbarItem('reject-diff'); + footer.removeToolbarItem('toggle-diff'); + footer.removeToolbarItem('compare'); + } + this._cellFooterTracker.hideFooter(cellId); + } + } + + protected _cell: ICellModel; + protected _cellFooterTracker: ICellFooterTracker; + protected _originalSource: string; + protected _newSource: string; + protected _showActionButtons: boolean; + protected _openDiff: boolean; + protected _toggleButton: ToolbarButton | null = null; +} diff --git a/style/base.css b/style/base.css index 78b6db9..a3e9802 100644 --- a/style/base.css +++ b/style/base.css @@ -4,6 +4,7 @@ https://jupyterlab.readthedocs.io/en/stable/developer/css.html */ +/* CodeMirror merge view styling */ .jp-cellfooter .cm-merge-2pane { display: grid; padding: 0; @@ -12,3 +13,20 @@ grid-template-columns: 49% 2% 49%; grid-auto-rows: minmax(18px, auto); } + +/* Diff widget styling */ +.jp-DiffView { + background-color: var(--jp-layout-color0); +} + +.jp-DiffView .cm-merge-2pane { + min-height: 100px; + max-height: 400px; + overflow: auto; +} + +/* NBDime diff widget styling */ +.nbdime-diff-widget { + max-height: 400px; + overflow: auto; +} diff --git a/tsconfig.json b/tsconfig.json index 25ac47e..bb62e1c 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -20,5 +20,5 @@ "strictNullChecks": true, "target": "ES2018" }, - "include": ["src/*"] + "include": ["src/**/*"] } diff --git a/yarn.lock b/yarn.lock index a267457..412a3b2 100644 --- a/yarn.lock +++ b/yarn.lock @@ -23,32 +23,27 @@ __metadata: languageName: node linkType: hard -"@codemirror/autocomplete@npm:^6.0.0, @codemirror/autocomplete@npm:^6.16.0, @codemirror/autocomplete@npm:^6.3.2, @codemirror/autocomplete@npm:^6.7.1": - version: 6.18.3 - resolution: "@codemirror/autocomplete@npm:6.18.3" +"@codemirror/autocomplete@npm:^6.0.0, @codemirror/autocomplete@npm:^6.18.6, @codemirror/autocomplete@npm:^6.3.2, @codemirror/autocomplete@npm:^6.7.1": + version: 6.18.7 + resolution: "@codemirror/autocomplete@npm:6.18.7" dependencies: "@codemirror/language": ^6.0.0 "@codemirror/state": ^6.0.0 "@codemirror/view": ^6.17.0 "@lezer/common": ^1.0.0 - peerDependencies: - "@codemirror/language": ^6.0.0 - "@codemirror/state": ^6.0.0 - "@codemirror/view": ^6.0.0 - "@lezer/common": ^1.0.0 - checksum: 48f3a09e05a2ab236641c3df0dbd577ef4c04da8ea8c26c47bc90f5652342a62d6e736e6b89428a85ff50efe039c01f0f0864134914a40a1513a4d57024cbb76 + checksum: 27c4112b5c589e769b9278e9ef291e76ea990c06e5d254da53297182ffff764c7ea3397ecb6b16aca86c4900a3da2359dcc964f56e0b094e4afdd83a31bcbb08 languageName: node linkType: hard -"@codemirror/commands@npm:^6.5.0": - version: 6.7.1 - resolution: "@codemirror/commands@npm:6.7.1" +"@codemirror/commands@npm:^6.0.0, @codemirror/commands@npm:^6.8.1": + version: 6.8.1 + resolution: "@codemirror/commands@npm:6.8.1" dependencies: "@codemirror/language": ^6.0.0 "@codemirror/state": ^6.4.0 "@codemirror/view": ^6.27.0 "@lezer/common": ^1.1.0 - checksum: 507ae0cc7f3a7bd869bca0de7e942ecb2bc0bd95a42484e5b06835ebf8caf7626c39d2bea26cefab99d07ab83ba5934afd2d07ce00dac4190aca014523f3c97e + checksum: 838365af4f12e985c35f4bc59e38eb809e951fd3e35d5ad43548e61c26deda050276346dd031b9c6ed7fe13a777d59c37b9b1e46609d1d79e622d908340a468e languageName: node linkType: hard @@ -62,7 +57,7 @@ __metadata: languageName: node linkType: hard -"@codemirror/lang-css@npm:^6.0.0, @codemirror/lang-css@npm:^6.2.1": +"@codemirror/lang-css@npm:^6.0.0, @codemirror/lang-css@npm:^6.3.1": version: 6.3.1 resolution: "@codemirror/lang-css@npm:6.3.1" dependencies: @@ -102,9 +97,9 @@ __metadata: languageName: node linkType: hard -"@codemirror/lang-javascript@npm:^6.0.0, @codemirror/lang-javascript@npm:^6.2.2": - version: 6.2.2 - resolution: "@codemirror/lang-javascript@npm:6.2.2" +"@codemirror/lang-javascript@npm:^6.0.0, @codemirror/lang-javascript@npm:^6.2.3": + version: 6.2.4 + resolution: "@codemirror/lang-javascript@npm:6.2.4" dependencies: "@codemirror/autocomplete": ^6.0.0 "@codemirror/language": ^6.6.0 @@ -113,7 +108,7 @@ __metadata: "@codemirror/view": ^6.17.0 "@lezer/common": ^1.0.0 "@lezer/javascript": ^1.0.0 - checksum: 66379942a8347dff2bd76d10ed7cf313bca83872f8336fdd3e14accfef23e7b690cd913c9d11a3854fba2b32299da07fc3275995327642c9ee43c2a8e538c19d + checksum: 0350e9ac2df155c4ecf75d556f40b677c284c1d320620dc7228e2aa458e258dd1145c86e5ebf3451347ed6ef528f72c2eb60f5d3f6bd10af8aabb2819109e21a languageName: node linkType: hard @@ -127,9 +122,9 @@ __metadata: languageName: node linkType: hard -"@codemirror/lang-markdown@npm:^6.1.1, @codemirror/lang-markdown@npm:^6.2.5": - version: 6.3.1 - resolution: "@codemirror/lang-markdown@npm:6.3.1" +"@codemirror/lang-markdown@npm:^6.1.1, @codemirror/lang-markdown@npm:^6.3.2": + version: 6.3.4 + resolution: "@codemirror/lang-markdown@npm:6.3.4" dependencies: "@codemirror/autocomplete": ^6.7.1 "@codemirror/lang-html": ^6.0.0 @@ -138,7 +133,7 @@ __metadata: "@codemirror/view": ^6.0.0 "@lezer/common": ^1.2.1 "@lezer/markdown": ^1.0.0 - checksum: cd0281c6b7130b2f12903c82a2f36b53b428002577a9fdab09de810a95ef0db5049ef951e2a065b0f38b42af854bee176492238e5ab116099e4799950638cadc + checksum: d707a67b6b0e884da5a1863f1c03324d660b7b2955e16a0dafa1b4301e1fc1823e35b8f25106ef5328d49084f8b9ada716d142590f91f64070804fb65b36e75f languageName: node linkType: hard @@ -155,16 +150,16 @@ __metadata: languageName: node linkType: hard -"@codemirror/lang-python@npm:^6.1.6": - version: 6.1.6 - resolution: "@codemirror/lang-python@npm:6.1.6" +"@codemirror/lang-python@npm:^6.2.0, @codemirror/lang-python@npm:^6.2.1": + version: 6.2.1 + resolution: "@codemirror/lang-python@npm:6.2.1" dependencies: "@codemirror/autocomplete": ^6.3.2 "@codemirror/language": ^6.8.0 "@codemirror/state": ^6.0.0 "@lezer/common": ^1.2.1 "@lezer/python": ^1.1.4 - checksum: eb1faabd332bb95d0f3e227eb19ac5a31140cf238905bbe73e061040999f5680a012f9145fb3688bc2fcbb1908c957511edc8eeb8a9aa88d27d4fa55ad451e95 + checksum: 977ce444ab7c68261107c40e8a46d3480a239ac5a093f39fad7da0644fc08cb4b90552c8b7fad396f936e34b5bbac510533ea7b4229d3b8271774a1af1e717aa languageName: node linkType: hard @@ -178,9 +173,9 @@ __metadata: languageName: node linkType: hard -"@codemirror/lang-sql@npm:^6.6.4": - version: 6.8.0 - resolution: "@codemirror/lang-sql@npm:6.8.0" +"@codemirror/lang-sql@npm:^6.8.0": + version: 6.9.1 + resolution: "@codemirror/lang-sql@npm:6.9.1" dependencies: "@codemirror/autocomplete": ^6.0.0 "@codemirror/language": ^6.0.0 @@ -188,7 +183,7 @@ __metadata: "@lezer/common": ^1.2.0 "@lezer/highlight": ^1.0.0 "@lezer/lr": ^1.0.0 - checksum: 1b5a3c8129b09f24039d8c0906fc4cb8d0f706a424a1d56721057bd1e647797c2b1240bb53eed9bf2bac5806a4e0363e555a3963f04c478efa05829890c537f7 + checksum: a6b8851c789b05b5fdd6b047c61f526278b6b97e3fd2329a5fb04847ce0329f4c52198e6fd405a5bb3b6b40bc4432ad9edf06eb37d728a0c31cc45bf008ff41e languageName: node linkType: hard @@ -218,9 +213,9 @@ __metadata: languageName: node linkType: hard -"@codemirror/language@npm:^6.0.0, @codemirror/language@npm:^6.10.1, @codemirror/language@npm:^6.3.0, @codemirror/language@npm:^6.4.0, @codemirror/language@npm:^6.6.0, @codemirror/language@npm:^6.8.0": - version: 6.10.6 - resolution: "@codemirror/language@npm:6.10.6" +"@codemirror/language@npm:^6.0.0, @codemirror/language@npm:^6.11.0, @codemirror/language@npm:^6.3.0, @codemirror/language@npm:^6.4.0, @codemirror/language@npm:^6.6.0, @codemirror/language@npm:^6.8.0": + version: 6.11.3 + resolution: "@codemirror/language@npm:6.11.3" dependencies: "@codemirror/state": ^6.0.0 "@codemirror/view": ^6.23.0 @@ -228,16 +223,16 @@ __metadata: "@lezer/highlight": ^1.0.0 "@lezer/lr": ^1.0.0 style-mod: ^4.0.0 - checksum: 0bd5e4da0c714b4d2aad2e2ad19bb803d9992e5f0d56da3fb2534e63b03b8a562bd8b9ac4439509c687b589e3eaa5a33339eda13d91e54a5d5a99e032d1be981 + checksum: 9ad560fb90ccb8e5660ee162b7ca36323b0cc0fe2c2885a93f052763c177e10118930aae5cdea410e90cf2a6a2b86438a7503fcc6d1f550c8d75a6757e31f3bf languageName: node linkType: hard -"@codemirror/legacy-modes@npm:^6.3.2, @codemirror/legacy-modes@npm:^6.4.0": - version: 6.4.2 - resolution: "@codemirror/legacy-modes@npm:6.4.2" +"@codemirror/legacy-modes@npm:^6.3.2, @codemirror/legacy-modes@npm:^6.5.1": + version: 6.5.1 + resolution: "@codemirror/legacy-modes@npm:6.5.1" dependencies: "@codemirror/language": ^6.0.0 - checksum: fe55df97efe980a573ff5572f480eae323d7652a4a61435c654a90142def7102218023590112de7cd826c495ecaadae68a89fb5e5d4323d207af267bcce1d0c1 + checksum: ad92399fdd5f7342d2b8d1ef450ac01cee96f2266938ca09de5047998bf6ac7a085dfe9941feb9ef6a924fda80aa7a1dc0ddc5dd6ce9c3ceaa36bcc14c5b2264 languageName: node linkType: hard @@ -252,34 +247,48 @@ __metadata: languageName: node linkType: hard -"@codemirror/search@npm:^6.5.6": - version: 6.5.8 - resolution: "@codemirror/search@npm:6.5.8" +"@codemirror/merge@npm:^6.10.2": + version: 6.10.2 + resolution: "@codemirror/merge@npm:6.10.2" + dependencies: + "@codemirror/language": ^6.0.0 + "@codemirror/state": ^6.0.0 + "@codemirror/view": ^6.17.0 + "@lezer/highlight": ^1.0.0 + style-mod: ^4.1.0 + checksum: 7083a3d1c61e57c038dc77ec645cd4d189bf4c636abeb351b93df7b9fcce26462f93b28f89d52cdcd3bc39d5e6610113896c67ae97e2d06615f35ff1aaf0eae9 + languageName: node + linkType: hard + +"@codemirror/search@npm:^6.0.0, @codemirror/search@npm:^6.5.10": + version: 6.5.11 + resolution: "@codemirror/search@npm:6.5.11" dependencies: "@codemirror/state": ^6.0.0 "@codemirror/view": ^6.0.0 crelt: ^1.0.5 - checksum: 0f9633037492a7b647b606c30255ea42c4327319e643be7ea3aa2913ed8e4aa662589f457e376636521c7d4d1215fae0e8939f127db9c0790b19ae3b654c3bc4 + checksum: 4d418f176bd93705bc51c82a2f1c0e41fecc0368dc43c415635c4dfdd763aa05ebdf7f000bc9ca0083c1887e6d305b89482ec1f4db8b8765c6f38de324187476 languageName: node linkType: hard -"@codemirror/state@npm:^6.0.0, @codemirror/state@npm:^6.2.0, @codemirror/state@npm:^6.4.0, @codemirror/state@npm:^6.4.1, @codemirror/state@npm:^6.5.0": - version: 6.5.0 - resolution: "@codemirror/state@npm:6.5.0" +"@codemirror/state@npm:^6.0.0, @codemirror/state@npm:^6.2.0, @codemirror/state@npm:^6.4.0, @codemirror/state@npm:^6.4.1, @codemirror/state@npm:^6.5.0, @codemirror/state@npm:^6.5.2": + version: 6.5.2 + resolution: "@codemirror/state@npm:6.5.2" dependencies: "@marijn/find-cluster-break": ^1.0.0 - checksum: f7fbed072cc67bf250f7d231668a00b988748cacaaa2ce3ea74ff13c7c392db76000e7d517933521cc6ad9dc3651c7b6d33accab3e3d4b9816cd3c5714661a84 + checksum: 4473a79475070d73f2e72f2eaaee5b69d2833b5020faa9714609d95dd03f0e5ad02cad8031a541dcd748436842a300332a2925317b39ffa09e3b4831145d98bc languageName: node linkType: hard -"@codemirror/view@npm:^6.0.0, @codemirror/view@npm:^6.14.0, @codemirror/view@npm:^6.17.0, @codemirror/view@npm:^6.23.0, @codemirror/view@npm:^6.26.3, @codemirror/view@npm:^6.27.0, @codemirror/view@npm:^6.35.0": - version: 6.35.3 - resolution: "@codemirror/view@npm:6.35.3" +"@codemirror/view@npm:^6.0.0, @codemirror/view@npm:^6.14.0, @codemirror/view@npm:^6.17.0, @codemirror/view@npm:^6.23.0, @codemirror/view@npm:^6.26.3, @codemirror/view@npm:^6.27.0, @codemirror/view@npm:^6.35.0, @codemirror/view@npm:^6.38.1, @codemirror/view@npm:^6.38.2": + version: 6.38.2 + resolution: "@codemirror/view@npm:6.38.2" dependencies: "@codemirror/state": ^6.5.0 + crelt: ^1.0.6 style-mod: ^4.1.0 w3c-keyname: ^2.2.4 - checksum: 09c2685c9345b23ea69d28f323f29d6e73a269e9ffa29ffbf6443c139b2c97fd1a87eced1c59553a3416a08aed3246e30dd5eb70d516159ac352ae422ff4394d + checksum: a17d64fcb4cb702f6ee0fda041221a52b4d0ede8e6eae9a3450966cce31be0809687370c80a27524a181895abd594512cd2486b3b207b6f66e6006be163e4800 languageName: node linkType: hard @@ -487,9 +496,9 @@ __metadata: languageName: node linkType: hard -"@jupyter/ydoc@npm:^3.0.0": - version: 3.0.2 - resolution: "@jupyter/ydoc@npm:3.0.2" +"@jupyter/ydoc@npm:^3.0.0, @jupyter/ydoc@npm:^3.1.0": + version: 3.1.0 + resolution: "@jupyter/ydoc@npm:3.1.0" dependencies: "@jupyterlab/nbformat": ^3.0.0 || ^4.0.0-alpha.21 || ^4.0.0 "@lumino/coreutils": ^1.11.0 || ^2.0.0 @@ -497,7 +506,7 @@ __metadata: "@lumino/signaling": ^1.10.0 || ^2.0.0 y-protocols: ^1.0.5 yjs: ^13.5.40 - checksum: 770f73459635c74bd0e5cacdca1ea1f77ee8efd6e7cd58f0ccbb167ae8374e73118620f4f3628646281160a7bc7389f374bd2106f1e799bdc8f78cad0ce05b28 + checksum: 7f2423752395ec590ed46754c10c87db4f5b804aa9608ef2869f52872e9a29cb5f9e32908325efb221d9ce4fad642a1f7e0dbb8f2ee40c352b8380e46ccba93d languageName: node linkType: hard @@ -529,32 +538,32 @@ __metadata: languageName: node linkType: hard -"@jupyterlab/apputils@npm:^4.4.3": - version: 4.4.3 - resolution: "@jupyterlab/apputils@npm:4.4.3" - dependencies: - "@jupyterlab/coreutils": ^6.3.3 - "@jupyterlab/observables": ^5.3.3 - "@jupyterlab/rendermime-interfaces": ^3.11.3 - "@jupyterlab/services": ^7.3.3 - "@jupyterlab/settingregistry": ^4.3.3 - "@jupyterlab/statedb": ^4.3.3 - "@jupyterlab/statusbar": ^4.3.3 - "@jupyterlab/translation": ^4.3.3 - "@jupyterlab/ui-components": ^4.3.3 - "@lumino/algorithm": ^2.0.2 - "@lumino/commands": ^2.3.1 - "@lumino/coreutils": ^2.2.0 - "@lumino/disposable": ^2.1.3 - "@lumino/domutils": ^2.0.2 - "@lumino/messaging": ^2.0.2 - "@lumino/signaling": ^2.1.3 - "@lumino/virtualdom": ^2.0.2 - "@lumino/widgets": ^2.5.0 +"@jupyterlab/apputils@npm:^4.4.3, @jupyterlab/apputils@npm:^4.5.7": + version: 4.5.7 + resolution: "@jupyterlab/apputils@npm:4.5.7" + dependencies: + "@jupyterlab/coreutils": ^6.4.7 + "@jupyterlab/observables": ^5.4.7 + "@jupyterlab/rendermime-interfaces": ^3.12.7 + "@jupyterlab/services": ^7.4.7 + "@jupyterlab/settingregistry": ^4.4.7 + "@jupyterlab/statedb": ^4.4.7 + "@jupyterlab/statusbar": ^4.4.7 + "@jupyterlab/translation": ^4.4.7 + "@jupyterlab/ui-components": ^4.4.7 + "@lumino/algorithm": ^2.0.3 + "@lumino/commands": ^2.3.2 + "@lumino/coreutils": ^2.2.1 + "@lumino/disposable": ^2.1.4 + "@lumino/domutils": ^2.0.3 + "@lumino/messaging": ^2.0.3 + "@lumino/signaling": ^2.1.4 + "@lumino/virtualdom": ^2.0.3 + "@lumino/widgets": ^2.7.1 "@types/react": ^18.0.26 react: ^18.2.0 sanitize-html: ~2.12.1 - checksum: a45d7ccaa6311fd940218f3a8e7e795589718aca98f2b11401b4b282103bc126d12161e77dc078954d5dc5def381487558b356039b6b1bc99fbd195ea2740968 + checksum: d74320e64f195062f83183a9361e01b4b6dbb545824fe8efe0b31c56943373cdaf7e932ce9a54a6a2bd70cb0e0f3ef754c402b330f86219c067d85be67cc5004 languageName: node linkType: hard @@ -649,83 +658,83 @@ __metadata: languageName: node linkType: hard -"@jupyterlab/codeeditor@npm:^4.0.0, @jupyterlab/codeeditor@npm:^4.3.3": - version: 4.3.3 - resolution: "@jupyterlab/codeeditor@npm:4.3.3" - dependencies: - "@codemirror/state": ^6.4.1 - "@jupyter/ydoc": ^3.0.0 - "@jupyterlab/apputils": ^4.4.3 - "@jupyterlab/coreutils": ^6.3.3 - "@jupyterlab/nbformat": ^4.3.3 - "@jupyterlab/observables": ^5.3.3 - "@jupyterlab/statusbar": ^4.3.3 - "@jupyterlab/translation": ^4.3.3 - "@jupyterlab/ui-components": ^4.3.3 - "@lumino/coreutils": ^2.2.0 - "@lumino/disposable": ^2.1.3 - "@lumino/dragdrop": ^2.1.5 - "@lumino/messaging": ^2.0.2 - "@lumino/signaling": ^2.1.3 - "@lumino/widgets": ^2.5.0 +"@jupyterlab/codeeditor@npm:^4.0.0, @jupyterlab/codeeditor@npm:^4.3.3, @jupyterlab/codeeditor@npm:^4.4.7": + version: 4.4.7 + resolution: "@jupyterlab/codeeditor@npm:4.4.7" + dependencies: + "@codemirror/state": ^6.5.2 + "@jupyter/ydoc": ^3.1.0 + "@jupyterlab/apputils": ^4.5.7 + "@jupyterlab/coreutils": ^6.4.7 + "@jupyterlab/nbformat": ^4.4.7 + "@jupyterlab/observables": ^5.4.7 + "@jupyterlab/statusbar": ^4.4.7 + "@jupyterlab/translation": ^4.4.7 + "@jupyterlab/ui-components": ^4.4.7 + "@lumino/coreutils": ^2.2.1 + "@lumino/disposable": ^2.1.4 + "@lumino/dragdrop": ^2.1.6 + "@lumino/messaging": ^2.0.3 + "@lumino/signaling": ^2.1.4 + "@lumino/widgets": ^2.7.1 react: ^18.2.0 - checksum: 7611f5973900a85b6488f96ae9b50da76418f0f3b64890c63c499a1276ef577d0d34c2cf3b507577ddb626ae5acee6a136650453be6345a8613ddedfe40843bd + checksum: 19b8dda6990afed5fe49e9bb79bf99ff2170019bba97870ae6c58fd82f1add7f851dde6b47f37b8e9f79285f1586c0cffd0e45c262be19d5e652e42012c10604 languageName: node linkType: hard -"@jupyterlab/codemirror@npm:^4.0.0, @jupyterlab/codemirror@npm:^4.3.3": - version: 4.3.3 - resolution: "@jupyterlab/codemirror@npm:4.3.3" +"@jupyterlab/codemirror@npm:^4.0.0, @jupyterlab/codemirror@npm:^4.3.3, @jupyterlab/codemirror@npm:^4.4.7": + version: 4.4.7 + resolution: "@jupyterlab/codemirror@npm:4.4.7" dependencies: - "@codemirror/autocomplete": ^6.16.0 - "@codemirror/commands": ^6.5.0 + "@codemirror/autocomplete": ^6.18.6 + "@codemirror/commands": ^6.8.1 "@codemirror/lang-cpp": ^6.0.2 - "@codemirror/lang-css": ^6.2.1 + "@codemirror/lang-css": ^6.3.1 "@codemirror/lang-html": ^6.4.9 "@codemirror/lang-java": ^6.0.1 - "@codemirror/lang-javascript": ^6.2.2 + "@codemirror/lang-javascript": ^6.2.3 "@codemirror/lang-json": ^6.0.1 - "@codemirror/lang-markdown": ^6.2.5 + "@codemirror/lang-markdown": ^6.3.2 "@codemirror/lang-php": ^6.0.1 - "@codemirror/lang-python": ^6.1.6 + "@codemirror/lang-python": ^6.2.0 "@codemirror/lang-rust": ^6.0.1 - "@codemirror/lang-sql": ^6.6.4 + "@codemirror/lang-sql": ^6.8.0 "@codemirror/lang-wast": ^6.0.2 "@codemirror/lang-xml": ^6.1.0 - "@codemirror/language": ^6.10.1 - "@codemirror/legacy-modes": ^6.4.0 - "@codemirror/search": ^6.5.6 - "@codemirror/state": ^6.4.1 - "@codemirror/view": ^6.26.3 - "@jupyter/ydoc": ^3.0.0 - "@jupyterlab/codeeditor": ^4.3.3 - "@jupyterlab/coreutils": ^6.3.3 - "@jupyterlab/documentsearch": ^4.3.3 - "@jupyterlab/nbformat": ^4.3.3 - "@jupyterlab/translation": ^4.3.3 + "@codemirror/language": ^6.11.0 + "@codemirror/legacy-modes": ^6.5.1 + "@codemirror/search": ^6.5.10 + "@codemirror/state": ^6.5.2 + "@codemirror/view": ^6.38.1 + "@jupyter/ydoc": ^3.1.0 + "@jupyterlab/codeeditor": ^4.4.7 + "@jupyterlab/coreutils": ^6.4.7 + "@jupyterlab/documentsearch": ^4.4.7 + "@jupyterlab/nbformat": ^4.4.7 + "@jupyterlab/translation": ^4.4.7 "@lezer/common": ^1.2.1 "@lezer/generator": ^1.7.0 "@lezer/highlight": ^1.2.0 "@lezer/markdown": ^1.3.0 - "@lumino/coreutils": ^2.2.0 - "@lumino/disposable": ^2.1.3 - "@lumino/signaling": ^2.1.3 + "@lumino/coreutils": ^2.2.1 + "@lumino/disposable": ^2.1.4 + "@lumino/signaling": ^2.1.4 yjs: ^13.5.40 - checksum: 18cb1485e08699ad444145dc96147c9385fcb2aa5bfc0438ff62b96bb99c6ddf47ed241948e1bd6e24d7a23ebe8093100c38e2260e71261d527ed7646ff18295 + checksum: b70a3cfe247d0f39e280e1ebebe73f6038ba37dfcca42bd0963ec613a6682fe402d7b6d2f837cf97de14f499b8bbe91dc609a3c3c7a4947b0b451f99541cb478 languageName: node linkType: hard -"@jupyterlab/coreutils@npm:^6.0.0, @jupyterlab/coreutils@npm:^6.3.3": - version: 6.3.3 - resolution: "@jupyterlab/coreutils@npm:6.3.3" +"@jupyterlab/coreutils@npm:^6.0.0, @jupyterlab/coreutils@npm:^6.3.3, @jupyterlab/coreutils@npm:^6.4.7": + version: 6.4.7 + resolution: "@jupyterlab/coreutils@npm:6.4.7" dependencies: - "@lumino/coreutils": ^2.2.0 - "@lumino/disposable": ^2.1.3 - "@lumino/signaling": ^2.1.3 + "@lumino/coreutils": ^2.2.1 + "@lumino/disposable": ^2.1.4 + "@lumino/signaling": ^2.1.4 minimist: ~1.2.0 path-browserify: ^1.0.0 url-parse: ~1.5.4 - checksum: c41f06000c17d5ab1c2805b9f3e8a733e7f6a7d127fbc8ddd7c6d7eca1cff069cc487aa1b46296a697ab2be0362afed914df8a78b5e4bce4890e2a1f7f932f81 + checksum: b346c479f139c641f947634c6dce697af0b30008c725e93fc3841120ebfb6873594fc753d8a9ee8b1723c4a8a3a0844583e7c7e7e9f2058f9113872ce17a8fa7 languageName: node linkType: hard @@ -780,22 +789,22 @@ __metadata: languageName: node linkType: hard -"@jupyterlab/documentsearch@npm:^4.3.3": - version: 4.3.3 - resolution: "@jupyterlab/documentsearch@npm:4.3.3" +"@jupyterlab/documentsearch@npm:^4.3.3, @jupyterlab/documentsearch@npm:^4.4.7": + version: 4.4.7 + resolution: "@jupyterlab/documentsearch@npm:4.4.7" dependencies: - "@jupyterlab/apputils": ^4.4.3 - "@jupyterlab/translation": ^4.3.3 - "@jupyterlab/ui-components": ^4.3.3 - "@lumino/commands": ^2.3.1 - "@lumino/coreutils": ^2.2.0 - "@lumino/disposable": ^2.1.3 - "@lumino/messaging": ^2.0.2 - "@lumino/polling": ^2.1.3 - "@lumino/signaling": ^2.1.3 - "@lumino/widgets": ^2.5.0 + "@jupyterlab/apputils": ^4.5.7 + "@jupyterlab/translation": ^4.4.7 + "@jupyterlab/ui-components": ^4.4.7 + "@lumino/commands": ^2.3.2 + "@lumino/coreutils": ^2.2.1 + "@lumino/disposable": ^2.1.4 + "@lumino/messaging": ^2.0.3 + "@lumino/polling": ^2.1.4 + "@lumino/signaling": ^2.1.4 + "@lumino/widgets": ^2.7.1 react: ^18.2.0 - checksum: 69eb59154c7cbf8d4c4ab5abe16d0c91d3cde60eb642c84494079a3ce5f2559d62275fffacd144fe39e4fd740345619b4c84ded926cc1544e03c7901b05f490e + checksum: 665940f320edf537ff146848a7677017d338ba258b039cbc340961be5791ad3cc516a38ad48420cade7fde10fa406148d78006620fc5ab32bacc30fa1ee206e5 languageName: node linkType: hard @@ -850,12 +859,12 @@ __metadata: languageName: node linkType: hard -"@jupyterlab/nbformat@npm:^3.0.0 || ^4.0.0-alpha.21 || ^4.0.0, @jupyterlab/nbformat@npm:^4.0.0, @jupyterlab/nbformat@npm:^4.3.3": - version: 4.3.3 - resolution: "@jupyterlab/nbformat@npm:4.3.3" +"@jupyterlab/nbformat@npm:^3.0.0 || ^4.0.0-alpha.21 || ^4.0.0, @jupyterlab/nbformat@npm:^4.0.0, @jupyterlab/nbformat@npm:^4.3.3, @jupyterlab/nbformat@npm:^4.4.7": + version: 4.4.7 + resolution: "@jupyterlab/nbformat@npm:4.4.7" dependencies: - "@lumino/coreutils": ^2.2.0 - checksum: 2e96f688e356209284961a6421391312f58ddb6443ba42ed19838384d33fab0e5b877a956cc5620da9d7417c2cd852e9e225353b6ac45e246e2d546dfd6302c8 + "@lumino/coreutils": ^2.2.1 + checksum: 4ce6173b937a5873b3a634a7da6a8472f400f25c28be93b04d4570070178e4804f598d1d3b4c0e2901935e18b86639d5f780304f2acd70ec761d97e2236a5ac1 languageName: node linkType: hard @@ -897,16 +906,16 @@ __metadata: languageName: node linkType: hard -"@jupyterlab/observables@npm:^5.3.3": - version: 5.3.3 - resolution: "@jupyterlab/observables@npm:5.3.3" +"@jupyterlab/observables@npm:^5.3.3, @jupyterlab/observables@npm:^5.4.7": + version: 5.4.7 + resolution: "@jupyterlab/observables@npm:5.4.7" dependencies: - "@lumino/algorithm": ^2.0.2 - "@lumino/coreutils": ^2.2.0 - "@lumino/disposable": ^2.1.3 - "@lumino/messaging": ^2.0.2 - "@lumino/signaling": ^2.1.3 - checksum: 951234b84556523d83c67ba7f5d5109a5ff4da9adc2329137e218974e2e7b0e4392b69a642005e5805108d9080d0c4c0233b1d35429d2acd7dc3d7191dddb8bc + "@lumino/algorithm": ^2.0.3 + "@lumino/coreutils": ^2.2.1 + "@lumino/disposable": ^2.1.4 + "@lumino/messaging": ^2.0.3 + "@lumino/signaling": ^2.1.4 + checksum: 03ecc2c3e9aa0943d670d41174fad9ac571f2140aee9697e9657f2c69a78083b814a33facc821a57b93f02acc48a7501f745cb3ae516ae9a4c3a4fb513c67a62 languageName: node linkType: hard @@ -932,13 +941,13 @@ __metadata: languageName: node linkType: hard -"@jupyterlab/rendermime-interfaces@npm:^3.11.3": - version: 3.11.3 - resolution: "@jupyterlab/rendermime-interfaces@npm:3.11.3" +"@jupyterlab/rendermime-interfaces@npm:^3.11.3, @jupyterlab/rendermime-interfaces@npm:^3.12.7": + version: 3.12.7 + resolution: "@jupyterlab/rendermime-interfaces@npm:3.12.7" dependencies: - "@lumino/coreutils": ^1.11.0 || ^2.2.0 - "@lumino/widgets": ^1.37.2 || ^2.5.0 - checksum: a4a4d73d08a4c9fcef39c345dc463f07a9736d241fc6bb4d1eecfc7780f784a39dce77f9e8c9552f51dde9602d4ce20430558aad5f53eb83245197fed2307f10 + "@lumino/coreutils": ^1.11.0 || ^2.2.1 + "@lumino/widgets": ^1.37.2 || ^2.7.1 + checksum: 474946fecab328eaa62961a768a026b7f24fbaa7a1cd803ad995b2738904f561bcb5eef0c487e4558d2182fe5e0f10892d002ec72e10e3564de6f59d9d77a67a languageName: node linkType: hard @@ -962,70 +971,70 @@ __metadata: languageName: node linkType: hard -"@jupyterlab/services@npm:^7.0.0, @jupyterlab/services@npm:^7.3.3": - version: 7.3.3 - resolution: "@jupyterlab/services@npm:7.3.3" +"@jupyterlab/services@npm:^7.0.0, @jupyterlab/services@npm:^7.3.3, @jupyterlab/services@npm:^7.4.7": + version: 7.4.7 + resolution: "@jupyterlab/services@npm:7.4.7" dependencies: - "@jupyter/ydoc": ^3.0.0 - "@jupyterlab/coreutils": ^6.3.3 - "@jupyterlab/nbformat": ^4.3.3 - "@jupyterlab/settingregistry": ^4.3.3 - "@jupyterlab/statedb": ^4.3.3 - "@lumino/coreutils": ^2.2.0 - "@lumino/disposable": ^2.1.3 - "@lumino/polling": ^2.1.3 - "@lumino/properties": ^2.0.2 - "@lumino/signaling": ^2.1.3 + "@jupyter/ydoc": ^3.1.0 + "@jupyterlab/coreutils": ^6.4.7 + "@jupyterlab/nbformat": ^4.4.7 + "@jupyterlab/settingregistry": ^4.4.7 + "@jupyterlab/statedb": ^4.4.7 + "@lumino/coreutils": ^2.2.1 + "@lumino/disposable": ^2.1.4 + "@lumino/polling": ^2.1.4 + "@lumino/properties": ^2.0.3 + "@lumino/signaling": ^2.1.4 ws: ^8.11.0 - checksum: db7177c6db930a674543a2a2b1095c5f76edac0120dfa24243e231d89a07b2243a62d4691b9ecde834958dca9c3b671a6548b121af50d702e21722df3c5b547f + checksum: 27693f5df1f12f7c54667aed65222b7a85682d34ba8a95727430c1516eb9c1940e32d4c47ca0e125daa3569814ff234eb861fff2eb65323476188e41ba3e42f6 languageName: node linkType: hard -"@jupyterlab/settingregistry@npm:^4.3.3": - version: 4.3.3 - resolution: "@jupyterlab/settingregistry@npm:4.3.3" +"@jupyterlab/settingregistry@npm:^4.3.3, @jupyterlab/settingregistry@npm:^4.4.7": + version: 4.4.7 + resolution: "@jupyterlab/settingregistry@npm:4.4.7" dependencies: - "@jupyterlab/nbformat": ^4.3.3 - "@jupyterlab/statedb": ^4.3.3 - "@lumino/commands": ^2.3.1 - "@lumino/coreutils": ^2.2.0 - "@lumino/disposable": ^2.1.3 - "@lumino/signaling": ^2.1.3 + "@jupyterlab/nbformat": ^4.4.7 + "@jupyterlab/statedb": ^4.4.7 + "@lumino/commands": ^2.3.2 + "@lumino/coreutils": ^2.2.1 + "@lumino/disposable": ^2.1.4 + "@lumino/signaling": ^2.1.4 "@rjsf/utils": ^5.13.4 ajv: ^8.12.0 json5: ^2.2.3 peerDependencies: react: ">=16" - checksum: 98d6f6ac6d41114e687c1a887c28171651e7c5ecceb5a989e5e8c55afb20685beaee6ad652c0104092f4516f3fe9e5711208fb6e11a66fbf389fb08ac811f877 + checksum: 8040c2e14581fe95c56c0f7d64c2a4a0010d65bb66a72e9b907d939ece18402f3d4f4c8019f43685d3fd7d926e1a24e59c5eaf3cc689b284695d8e9c7ec094cc languageName: node linkType: hard -"@jupyterlab/statedb@npm:^4.3.3": - version: 4.3.3 - resolution: "@jupyterlab/statedb@npm:4.3.3" +"@jupyterlab/statedb@npm:^4.3.3, @jupyterlab/statedb@npm:^4.4.7": + version: 4.4.7 + resolution: "@jupyterlab/statedb@npm:4.4.7" dependencies: - "@lumino/commands": ^2.3.1 - "@lumino/coreutils": ^2.2.0 - "@lumino/disposable": ^2.1.3 - "@lumino/properties": ^2.0.2 - "@lumino/signaling": ^2.1.3 - checksum: 611ae29772fc704877737ad1031ebcf5fd1d1af976e07103de26fed90fcb120329b1a28d02c8c79fa35be161db415daf62116c3b358174fdc2e24f23bb553870 + "@lumino/commands": ^2.3.2 + "@lumino/coreutils": ^2.2.1 + "@lumino/disposable": ^2.1.4 + "@lumino/properties": ^2.0.3 + "@lumino/signaling": ^2.1.4 + checksum: 036a323f439c28f95d391994517623b746938baa9b64abe3c14a6b2a162e45b1541751e23872abfd5146973eec32c40576db2eb03827be91dfd725a2e7114557 languageName: node linkType: hard -"@jupyterlab/statusbar@npm:^4.3.3": - version: 4.3.3 - resolution: "@jupyterlab/statusbar@npm:4.3.3" +"@jupyterlab/statusbar@npm:^4.3.3, @jupyterlab/statusbar@npm:^4.4.7": + version: 4.4.7 + resolution: "@jupyterlab/statusbar@npm:4.4.7" dependencies: - "@jupyterlab/ui-components": ^4.3.3 - "@lumino/algorithm": ^2.0.2 - "@lumino/coreutils": ^2.2.0 - "@lumino/disposable": ^2.1.3 - "@lumino/messaging": ^2.0.2 - "@lumino/signaling": ^2.1.3 - "@lumino/widgets": ^2.5.0 + "@jupyterlab/ui-components": ^4.4.7 + "@lumino/algorithm": ^2.0.3 + "@lumino/coreutils": ^2.2.1 + "@lumino/disposable": ^2.1.4 + "@lumino/messaging": ^2.0.3 + "@lumino/signaling": ^2.1.4 + "@lumino/widgets": ^2.7.1 react: ^18.2.0 - checksum: a0bf2697dc1764c556864c9688324fbb2ca19bb4bd8f7579f3aa35ed87cf19ac0966b969d6922ced266b3253fa6d2545a1421f187e0c48fafa48991f984258cf + checksum: 8482565f18afe98a64d95a3737449c98a243cf55bc1f55007c446c38f694189dbca960e0d51614a147c37ca5f9906676b1409820f91eaaa535d44c66e8ba2fad languageName: node linkType: hard @@ -1052,39 +1061,39 @@ __metadata: languageName: node linkType: hard -"@jupyterlab/translation@npm:^4.0.0, @jupyterlab/translation@npm:^4.3.3": - version: 4.3.3 - resolution: "@jupyterlab/translation@npm:4.3.3" +"@jupyterlab/translation@npm:^4.0.0, @jupyterlab/translation@npm:^4.3.3, @jupyterlab/translation@npm:^4.4.7": + version: 4.4.7 + resolution: "@jupyterlab/translation@npm:4.4.7" dependencies: - "@jupyterlab/coreutils": ^6.3.3 - "@jupyterlab/rendermime-interfaces": ^3.11.3 - "@jupyterlab/services": ^7.3.3 - "@jupyterlab/statedb": ^4.3.3 - "@lumino/coreutils": ^2.2.0 - checksum: 26b82d7b40715e93b718b671d91dbf0820db84f3743048ff37745fc7036495ed3697593f851b20650ed0ae0a099eea14196231a9c3775062def723a1a8b2c772 + "@jupyterlab/coreutils": ^6.4.7 + "@jupyterlab/rendermime-interfaces": ^3.12.7 + "@jupyterlab/services": ^7.4.7 + "@jupyterlab/statedb": ^4.4.7 + "@lumino/coreutils": ^2.2.1 + checksum: 775e542e83d9fef59c01acbcd629a62bfceceaf7a6c8729f07ce8b85fe69bc0a54788a08addf76259d698ffdb1c82d5603e05b17a46ddbf51c60640a49df2570 languageName: node linkType: hard -"@jupyterlab/ui-components@npm:^4.0.0, @jupyterlab/ui-components@npm:^4.3.3": - version: 4.3.3 - resolution: "@jupyterlab/ui-components@npm:4.3.3" +"@jupyterlab/ui-components@npm:^4.0.0, @jupyterlab/ui-components@npm:^4.3.3, @jupyterlab/ui-components@npm:^4.4.7": + version: 4.4.7 + resolution: "@jupyterlab/ui-components@npm:4.4.7" dependencies: "@jupyter/react-components": ^0.16.6 "@jupyter/web-components": ^0.16.6 - "@jupyterlab/coreutils": ^6.3.3 - "@jupyterlab/observables": ^5.3.3 - "@jupyterlab/rendermime-interfaces": ^3.11.3 - "@jupyterlab/translation": ^4.3.3 - "@lumino/algorithm": ^2.0.2 - "@lumino/commands": ^2.3.1 - "@lumino/coreutils": ^2.2.0 - "@lumino/disposable": ^2.1.3 - "@lumino/messaging": ^2.0.2 - "@lumino/polling": ^2.1.3 - "@lumino/properties": ^2.0.2 - "@lumino/signaling": ^2.1.3 - "@lumino/virtualdom": ^2.0.2 - "@lumino/widgets": ^2.5.0 + "@jupyterlab/coreutils": ^6.4.7 + "@jupyterlab/observables": ^5.4.7 + "@jupyterlab/rendermime-interfaces": ^3.12.7 + "@jupyterlab/translation": ^4.4.7 + "@lumino/algorithm": ^2.0.3 + "@lumino/commands": ^2.3.2 + "@lumino/coreutils": ^2.2.1 + "@lumino/disposable": ^2.1.4 + "@lumino/messaging": ^2.0.3 + "@lumino/polling": ^2.1.4 + "@lumino/properties": ^2.0.3 + "@lumino/signaling": ^2.1.4 + "@lumino/virtualdom": ^2.0.3 + "@lumino/widgets": ^2.7.1 "@rjsf/core": ^5.13.4 "@rjsf/utils": ^5.13.4 react: ^18.2.0 @@ -1092,7 +1101,7 @@ __metadata: typestyle: ^2.0.4 peerDependencies: react: ^18.2.0 - checksum: 5c967c09b3c6b7ab1c996b0e91c199f59819610b386e0170afdde95f518991049b8c6a073e0966babb6074d44d298dda1a79ef7dfd0226ea0bf4a70efa5d17b9 + checksum: f8fe3b6479e958f3952af107c26506cdb968fcc298e7e2e3c062e2f411dabe0de9691f814479ec621b25553878e4611464c2b6096a11f135afb9f9b7e737de46 languageName: node linkType: hard @@ -1253,10 +1262,10 @@ __metadata: languageName: node linkType: hard -"@lumino/algorithm@npm:^2.0.1, @lumino/algorithm@npm:^2.0.2": - version: 2.0.2 - resolution: "@lumino/algorithm@npm:2.0.2" - checksum: 34b25684b845f1bdbf78ca45ebd99a97b67b2992440c9643aafe5fc5a99fae1ddafa9e5890b246b233dc3a12d9f66aa84afe4a2aac44cf31071348ed217740db +"@lumino/algorithm@npm:^2.0.1, @lumino/algorithm@npm:^2.0.2, @lumino/algorithm@npm:^2.0.3": + version: 2.0.3 + resolution: "@lumino/algorithm@npm:2.0.3" + checksum: 03932cdc39d612a00579ee40bafb0b1d8bf5f8a12449f777a1ae7201843ddefb557bc3f9260aa6b9441d87bfc43e53cced854e71c4737de59e32cd00d4ac1394 languageName: node linkType: hard @@ -1271,135 +1280,135 @@ __metadata: languageName: node linkType: hard -"@lumino/collections@npm:^2.0.2": - version: 2.0.2 - resolution: "@lumino/collections@npm:2.0.2" +"@lumino/collections@npm:^2.0.3": + version: 2.0.3 + resolution: "@lumino/collections@npm:2.0.3" dependencies: - "@lumino/algorithm": ^2.0.2 - checksum: e8bb2068a3741940e0dd396fa729c3c9d12458b41b7c2a9d171c5c034e69fb5834116a824094a8aa4182397e13abace06025ed5032a755ea85b976eae74ee9a9 + "@lumino/algorithm": ^2.0.3 + checksum: 1c7aca239731e6c7379ce593318fd3f646b38c1903e81e884e36ed01f61017498f6699ba58848c43191f4825a9968b7f9c94e9355f1614c9baee84ce9ea6221f languageName: node linkType: hard -"@lumino/commands@npm:^2.3.1": - version: 2.3.1 - resolution: "@lumino/commands@npm:2.3.1" +"@lumino/commands@npm:^2.3.1, @lumino/commands@npm:^2.3.2": + version: 2.3.2 + resolution: "@lumino/commands@npm:2.3.2" dependencies: - "@lumino/algorithm": ^2.0.2 - "@lumino/coreutils": ^2.2.0 - "@lumino/disposable": ^2.1.3 - "@lumino/domutils": ^2.0.2 - "@lumino/keyboard": ^2.0.2 - "@lumino/signaling": ^2.1.3 - "@lumino/virtualdom": ^2.0.2 - checksum: 83bc6d66de37e58582b00f70ce66e797c9fcf84e36041c6881631ed0d281305e2a49927f5b2fe6c5c965733f3cd6fb4a233c7b7967fc050497024a941659bd65 + "@lumino/algorithm": ^2.0.3 + "@lumino/coreutils": ^2.2.1 + "@lumino/disposable": ^2.1.4 + "@lumino/domutils": ^2.0.3 + "@lumino/keyboard": ^2.0.3 + "@lumino/signaling": ^2.1.4 + "@lumino/virtualdom": ^2.0.3 + checksum: 090454bcc07aeb71f0791d6ca86ca4857b16bb6286a47ab6e59c3046e7f99cd3ef27c36d2dd35de7cf2bdeeaf5fc00ae8f29246a39e276eac2d186ae3cd7023e languageName: node linkType: hard -"@lumino/coreutils@npm:^1.11.0 || ^2.0.0, @lumino/coreutils@npm:^1.11.0 || ^2.2.0, @lumino/coreutils@npm:^2.1.2, @lumino/coreutils@npm:^2.2.0": - version: 2.2.0 - resolution: "@lumino/coreutils@npm:2.2.0" +"@lumino/coreutils@npm:^1.11.0 || ^2.0.0, @lumino/coreutils@npm:^1.11.0 || ^2.2.1, @lumino/coreutils@npm:^2.1.2, @lumino/coreutils@npm:^2.2.0, @lumino/coreutils@npm:^2.2.1": + version: 2.2.1 + resolution: "@lumino/coreutils@npm:2.2.1" dependencies: - "@lumino/algorithm": ^2.0.2 - checksum: 345fcd5d7493d745831dd944edfbd8eda06cc59a117e71023fc97ce53badd697be2bd51671f071f5ff0064f75f104575d9695f116a07517bafbedd38e5c7a785 + "@lumino/algorithm": ^2.0.3 + checksum: d08570d1ebcf6bca973ba3af0836fb19a5a7a5b24979e90aab0fb4acb245e9619a0db356a78d67f618ae565435bb2aaf7c158c5bc0ae1ef9e9f1638ebfa05484 languageName: node linkType: hard -"@lumino/disposable@npm:^1.10.0 || ^2.0.0, @lumino/disposable@npm:^2.1.3": - version: 2.1.3 - resolution: "@lumino/disposable@npm:2.1.3" +"@lumino/disposable@npm:^1.10.0 || ^2.0.0, @lumino/disposable@npm:^2.1.3, @lumino/disposable@npm:^2.1.4": + version: 2.1.4 + resolution: "@lumino/disposable@npm:2.1.4" dependencies: - "@lumino/signaling": ^2.1.3 - checksum: b9a346fa2752b3cd1b053cb637ee173501d33082a73423429070e8acc508b034ea0babdae0549b923cbdd287ee1fc7f6159f0539c9fff7574393a214eef07c57 + "@lumino/signaling": ^2.1.4 + checksum: 0274c1cd81683f0d37c79795ed683fe49929452e6f075b9027b62dee376b5c6aa5f27b279236c4e1621bcbdcb844d5be0bbde3a065ab39159deb995244d1d2a7 languageName: node linkType: hard -"@lumino/domutils@npm:^2.0.2": - version: 2.0.2 - resolution: "@lumino/domutils@npm:2.0.2" - checksum: 037b8d0b62af43887fd7edd506fa551e2af104a4b46d62e6fef256e16754dba40d351513beb5083834d468b2c7806aae0fe205fd6aac8ef24759451ee998bbd9 +"@lumino/domutils@npm:^2.0.2, @lumino/domutils@npm:^2.0.3": + version: 2.0.3 + resolution: "@lumino/domutils@npm:2.0.3" + checksum: 46cbcbd38f6abb53eab1b6de0a2ea8a9fa5e28b0f5aa4b058c35f2380cb8ec881fe7616c7468ba200b785f95357ac8cbac6b64512f9945f5973d1d425864b163 languageName: node linkType: hard -"@lumino/dragdrop@npm:^2.1.3, @lumino/dragdrop@npm:^2.1.5": - version: 2.1.5 - resolution: "@lumino/dragdrop@npm:2.1.5" +"@lumino/dragdrop@npm:^2.1.3, @lumino/dragdrop@npm:^2.1.5, @lumino/dragdrop@npm:^2.1.6": + version: 2.1.6 + resolution: "@lumino/dragdrop@npm:2.1.6" dependencies: - "@lumino/coreutils": ^2.2.0 - "@lumino/disposable": ^2.1.3 - checksum: 48e34bea73186dcde4565fa68cd25067b7f5fe910813d28da9ab3c5392bfaa0b26aab1290635dc953d85bbb139da7ac1ffc040a5d5777d58fd087975dd4b5ef7 + "@lumino/coreutils": ^2.2.1 + "@lumino/disposable": ^2.1.4 + checksum: 5a746ee0644e2fa02cba47d6ef45f3fb09ebc3391ac0f478f6f3073864a9637e13fcee666038c751ab8f17bc69c55299c85a88f526ea645cc3240a367490c8ca languageName: node linkType: hard -"@lumino/keyboard@npm:^2.0.2": - version: 2.0.2 - resolution: "@lumino/keyboard@npm:2.0.2" - checksum: 198e8c17825c9a831fa0770f58a71574b936acb0f0bbbe7f8feb73d89686dda7ff41fcb02d12b401f5d462b45fe0bba24f7f38befb7cefe0826576559f0bee6d +"@lumino/keyboard@npm:^2.0.3": + version: 2.0.3 + resolution: "@lumino/keyboard@npm:2.0.3" + checksum: ca648cf978ddcf15fe3af2b8c8beb8aff153dfe616099df5a8bc7f43124420f77c358dbd33a988911b82f68debe07268d630c1777618b182ef7b520962d653e7 languageName: node linkType: hard -"@lumino/messaging@npm:^2.0.2": - version: 2.0.2 - resolution: "@lumino/messaging@npm:2.0.2" +"@lumino/messaging@npm:^2.0.2, @lumino/messaging@npm:^2.0.3": + version: 2.0.3 + resolution: "@lumino/messaging@npm:2.0.3" dependencies: - "@lumino/algorithm": ^2.0.2 - "@lumino/collections": ^2.0.2 - checksum: 66abd8c473026123589dc22f2ce8f85da10e0b1a05c05ed9b2011035721da5f751cc7ef63b628877f446a78a4287e26ad1450efbeaf0c2e03b1d08be9abaca4d + "@lumino/algorithm": ^2.0.3 + "@lumino/collections": ^2.0.3 + checksum: 9c2bea2a31d3922a29276df751b651e6bd41d1ed3a5f61ba94d3e90d454c53f07fc4dac7d435867fb8480415222a3d45d74188dd73e9c89c43110ebbee0ff301 languageName: node linkType: hard -"@lumino/polling@npm:^2.1.3": - version: 2.1.3 - resolution: "@lumino/polling@npm:2.1.3" +"@lumino/polling@npm:^2.1.3, @lumino/polling@npm:^2.1.4": + version: 2.1.4 + resolution: "@lumino/polling@npm:2.1.4" dependencies: - "@lumino/coreutils": ^2.2.0 - "@lumino/disposable": ^2.1.3 - "@lumino/signaling": ^2.1.3 - checksum: 2c94dbc2339dd06b3b89a3a690d23576ce095f92bf1f614557dcaeb1c1a8a707b2a18d78c03e5fd7376a43e3f393cc4fec42a65580ae4b67c6630ea86cecbac6 + "@lumino/coreutils": ^2.2.1 + "@lumino/disposable": ^2.1.4 + "@lumino/signaling": ^2.1.4 + checksum: e08d07d11eb030fed83bea232dba91af4ea40ef8f6ec7b8fe61722ebbd29faba10c67d269596c19c515c920f607c73bb64cdc9319af9ecef4619cddfd92ea764 languageName: node linkType: hard -"@lumino/properties@npm:^2.0.2": - version: 2.0.2 - resolution: "@lumino/properties@npm:2.0.2" - checksum: cbe802bd49ced7e13e50b1d89b82e0f03fb44a590c704e6b9343226498b21d8abfe119b024209e79876b4fc0938dbf85e964c6c4cd5bbdd4d7ba41ce0fb69f3f +"@lumino/properties@npm:^2.0.2, @lumino/properties@npm:^2.0.3": + version: 2.0.3 + resolution: "@lumino/properties@npm:2.0.3" + checksum: a575d821f994090907abb567d3af21a828f528ae5f329ada92719eba9818bbb2b0955e675b91bd392043a5d835c345d7b500994a77157c5ea317f36442ce570e languageName: node linkType: hard -"@lumino/signaling@npm:^1.10.0 || ^2.0.0, @lumino/signaling@npm:^2.1.2, @lumino/signaling@npm:^2.1.3": - version: 2.1.3 - resolution: "@lumino/signaling@npm:2.1.3" +"@lumino/signaling@npm:^1.10.0 || ^2.0.0, @lumino/signaling@npm:^2.1.2, @lumino/signaling@npm:^2.1.3, @lumino/signaling@npm:^2.1.4": + version: 2.1.4 + resolution: "@lumino/signaling@npm:2.1.4" dependencies: - "@lumino/algorithm": ^2.0.2 - "@lumino/coreutils": ^2.2.0 - checksum: ce59383bd75fe30df5800e0442dbc4193cc6778e2530b9be0f484d159f1d8668be5c6ee92cee9df36d5a0c3dbd9126d0479a82581dee1df889d5c9f922d3328d + "@lumino/algorithm": ^2.0.3 + "@lumino/coreutils": ^2.2.1 + checksum: 554a5135c8742ed3f61a4923b1f26cb29b55447ca5939df70033449cfb654a37048d7a3e2fd0932497099cd24501a3819b85cd1fdf4e76023ba0af747c171d53 languageName: node linkType: hard -"@lumino/virtualdom@npm:^2.0.2": - version: 2.0.2 - resolution: "@lumino/virtualdom@npm:2.0.2" +"@lumino/virtualdom@npm:^2.0.2, @lumino/virtualdom@npm:^2.0.3": + version: 2.0.3 + resolution: "@lumino/virtualdom@npm:2.0.3" dependencies: - "@lumino/algorithm": ^2.0.2 - checksum: 0e1220d5b3b2441e7668f3542a6341e015bdbea0c8bd6d4be962009386c034336540732596d5dedcd54ca57fbde61c2942549129a3e1b0fccb1aa143685fcd15 + "@lumino/algorithm": ^2.0.3 + checksum: 66c18494fdfc1b87e76286140cd256b3616aede262641912646a18395226e200048ddeaa6d1644dff3f597b1cde8e583968cb973d64a9e9d4f45e2b24c1e2c7c languageName: node linkType: hard -"@lumino/widgets@npm:^1.37.2 || ^2.5.0, @lumino/widgets@npm:^2.0.0, @lumino/widgets@npm:^2.3.0, @lumino/widgets@npm:^2.5.0": - version: 2.5.0 - resolution: "@lumino/widgets@npm:2.5.0" +"@lumino/widgets@npm:^1.37.2 || ^2.7.1, @lumino/widgets@npm:^2.0.0, @lumino/widgets@npm:^2.3.0, @lumino/widgets@npm:^2.5.0, @lumino/widgets@npm:^2.7.1": + version: 2.7.1 + resolution: "@lumino/widgets@npm:2.7.1" dependencies: - "@lumino/algorithm": ^2.0.2 - "@lumino/commands": ^2.3.1 - "@lumino/coreutils": ^2.2.0 - "@lumino/disposable": ^2.1.3 - "@lumino/domutils": ^2.0.2 - "@lumino/dragdrop": ^2.1.5 - "@lumino/keyboard": ^2.0.2 - "@lumino/messaging": ^2.0.2 - "@lumino/properties": ^2.0.2 - "@lumino/signaling": ^2.1.3 - "@lumino/virtualdom": ^2.0.2 - checksum: c5055e42b0b7d5d9a0c29d14c7053478cbdef057525e262ccd59c987971364d5462ed1a59d5008b889cf5ecc6810e90c681364239500b9c8ee0ae4624d60df84 + "@lumino/algorithm": ^2.0.3 + "@lumino/commands": ^2.3.2 + "@lumino/coreutils": ^2.2.1 + "@lumino/disposable": ^2.1.4 + "@lumino/domutils": ^2.0.3 + "@lumino/dragdrop": ^2.1.6 + "@lumino/keyboard": ^2.0.3 + "@lumino/messaging": ^2.0.3 + "@lumino/properties": ^2.0.3 + "@lumino/signaling": ^2.1.4 + "@lumino/virtualdom": ^2.0.3 + checksum: c57f7e6cfbaddbd830e14db55242dcbdf531524cdf8641214ce737f43a6684004219eb58a572838f99f78af433bb8f9f19fd2ac6f0ffab4a635bd20164b75cec languageName: node linkType: hard @@ -1600,16 +1609,7 @@ __metadata: languageName: node linkType: hard -"@types/react@npm:*": - version: 19.0.1 - resolution: "@types/react@npm:19.0.1" - dependencies: - csstype: ^3.0.2 - checksum: e5e05cdf5fc53804e94548ca4e139102fffaab95d4c19be821d30d81dbab75ca3e30b72f2e2e750b90fcb535058cb694c4403402f14eb8a19a1282629c8222d8 - languageName: node - linkType: hard - -"@types/react@npm:^18.0.26": +"@types/react@npm:*, @types/react@npm:^18.0.26": version: 18.3.16 resolution: "@types/react@npm:18.3.16" dependencies: @@ -1972,7 +1972,7 @@ __metadata: languageName: node linkType: hard -"abab@npm:^2.0.3, abab@npm:^2.0.5": +"abab@npm:^2.0.3": version: 2.0.6 resolution: "abab@npm:2.0.6" checksum: 6ffc1af4ff315066c62600123990d87551ceb0aafa01e6539da77b0f5987ac7019466780bf480f1787576d4385e3690c81ccc37cfda12819bf510b8ab47e5a3e @@ -2286,6 +2286,21 @@ __metadata: languageName: node linkType: hard +"codemirror@npm:^6.0.2": + version: 6.0.2 + resolution: "codemirror@npm:6.0.2" + dependencies: + "@codemirror/autocomplete": ^6.0.0 + "@codemirror/commands": ^6.0.0 + "@codemirror/language": ^6.0.0 + "@codemirror/lint": ^6.0.0 + "@codemirror/search": ^6.0.0 + "@codemirror/state": ^6.0.0 + "@codemirror/view": ^6.0.0 + checksum: 3f3111ac586b499798f4f2e2e474cd06ff47dfaa8109077bad33e062fc4845ca362f7009ae73497930ef8d4e6110562da3e16d018553b0f99d4833dc4baf401c + languageName: node + linkType: hard + "color-convert@npm:^1.9.0": version: 1.9.3 resolution: "color-convert@npm:1.9.3" @@ -2400,7 +2415,7 @@ __metadata: languageName: node linkType: hard -"crelt@npm:^1.0.5": +"crelt@npm:^1.0.5, crelt@npm:^1.0.6": version: 1.0.6 resolution: "crelt@npm:1.0.6" checksum: dad842093371ad702afbc0531bfca2b0a8dd920b23a42f26e66dabbed9aad9acd5b9030496359545ef3937c3aced0fd4ac39f7a2d280a23ddf9eb7fdcb94a69f @@ -2468,20 +2483,13 @@ __metadata: languageName: node linkType: hard -"csstype@npm:3.0.10": +"csstype@npm:3.0.10, csstype@npm:^3.0.2": version: 3.0.10 resolution: "csstype@npm:3.0.10" checksum: 20a8fa324f2b33ddf94aa7507d1b6ab3daa6f3cc308888dc50126585d7952f2471de69b2dbe0635d1fdc31223fef8e070842691877e725caf456e2378685a631 languageName: node linkType: hard -"csstype@npm:^3.0.2": - version: 3.1.3 - resolution: "csstype@npm:3.1.3" - checksum: 8db785cc92d259102725b3c694ec0c823f5619a84741b5c7991b8ad135dfaa66093038a1cc63e03361a6cd28d122be48f2106ae72334e067dd619a51f49eddf7 - languageName: node - linkType: hard - "data-urls@npm:^2.0.0": version: 2.0.0 resolution: "data-urls@npm:2.0.0" @@ -3170,21 +3178,7 @@ __metadata: languageName: node linkType: hard -"glob@npm:^7.1.3": - version: 7.2.3 - resolution: "glob@npm:7.2.3" - dependencies: - fs.realpath: ^1.0.0 - inflight: ^1.0.4 - inherits: 2 - minimatch: ^3.1.1 - once: ^1.3.0 - path-is-absolute: ^1.0.0 - checksum: 29452e97b38fa704dabb1d1045350fb2467cf0277e155aa9ff7077e90ad81d1ea9d53d3ee63bd37c05b09a065e90f16aec4a65f5b8de401d1dac40bc5605d133 - languageName: node - linkType: hard - -"glob@npm:~7.1.6": +"glob@npm:^7.1.3, glob@npm:~7.1.6": version: 7.1.7 resolution: "glob@npm:7.1.7" dependencies: @@ -3709,10 +3703,14 @@ __metadata: version: 0.0.0-use.local resolution: "jupyterlab-cell-diff@workspace:." dependencies: + "@codemirror/lang-python": ^6.2.1 + "@codemirror/merge": ^6.10.2 + "@codemirror/view": ^6.38.2 "@jupyterlab/application": ^4.0.0 "@jupyterlab/builder": ^4.0.0 "@jupyterlab/cells": ^4.0.0 "@jupyterlab/codeeditor": ^4.0.0 + "@jupyterlab/codemirror": ^4.4.7 "@jupyterlab/coreutils": ^6.0.0 "@jupyterlab/notebook": ^4.0.0 "@jupyterlab/services": ^7.0.0 @@ -3723,6 +3721,7 @@ __metadata: "@types/react-addons-linked-state-mixin": ^0.14.22 "@typescript-eslint/eslint-plugin": ^6.1.0 "@typescript-eslint/parser": ^6.1.0 + codemirror: ^6.0.2 css-loader: ^6.7.1 eslint: ^8.36.0 eslint-config-prettier: ^8.8.0 @@ -4074,7 +4073,7 @@ __metadata: languageName: node linkType: hard -"minimatch@npm:^3.0.4, minimatch@npm:^3.0.5, minimatch@npm:^3.1.1, minimatch@npm:^3.1.2": +"minimatch@npm:^3.0.4, minimatch@npm:^3.0.5, minimatch@npm:^3.1.2": version: 3.1.2 resolution: "minimatch@npm:3.1.2" dependencies: @@ -4985,23 +4984,7 @@ __metadata: languageName: node linkType: hard -"source-map-loader@npm:^1.0.2": - version: 1.1.3 - resolution: "source-map-loader@npm:1.1.3" - dependencies: - abab: ^2.0.5 - iconv-lite: ^0.6.2 - loader-utils: ^2.0.0 - schema-utils: ^3.0.0 - source-map: ^0.6.1 - whatwg-mimetype: ^2.3.0 - peerDependencies: - webpack: ^4.0.0 || ^5.0.0 - checksum: 0ca16a1458f206e12925f242ce52913b5f35de657d2ec17fd60ab3de7fa85b72b6707951b7a18899bdf05679d679a8b9edeb660c557aafa66453886d6907e3ec - languageName: node - linkType: hard - -"source-map-loader@npm:~1.0.2": +"source-map-loader@npm:^1.0.2, source-map-loader@npm:~1.0.2": version: 1.0.2 resolution: "source-map-loader@npm:1.0.2" dependencies: @@ -5575,7 +5558,7 @@ __metadata: languageName: node linkType: hard -"vscode-jsonrpc@npm:8.2.0": +"vscode-jsonrpc@npm:8.2.0, vscode-jsonrpc@npm:^8.0.2": version: 8.2.0 resolution: "vscode-jsonrpc@npm:8.2.0" checksum: f302a01e59272adc1ae6494581fa31c15499f9278df76366e3b97b2236c7c53ebfc71efbace9041cfd2caa7f91675b9e56f2407871a1b3c7f760a2e2ee61484a @@ -5589,13 +5572,6 @@ __metadata: languageName: node linkType: hard -"vscode-jsonrpc@npm:^8.0.2": - version: 8.2.1 - resolution: "vscode-jsonrpc@npm:8.2.1" - checksum: 2af2c333d73f6587896a7077978b8d4b430e55c674d5dbb90597a84a6647057c1655a3bff398a9b08f1f8ba57dbd2deabf05164315829c297b0debba3b8bc19e - languageName: node - linkType: hard - "vscode-languageserver-protocol@npm:^3.17.0": version: 3.17.5 resolution: "vscode-languageserver-protocol@npm:3.17.5"