diff --git a/.bumpversion.cfg b/.bumpversion.cfg index 2bc1b7eb7c7d..d96f15036b38 100644 --- a/.bumpversion.cfg +++ b/.bumpversion.cfg @@ -1,5 +1,5 @@ [bumpversion] -current_version = 4, 1, 0, "final", 0 +current_version = 4, 1, 5, "final", 0 commit = False tag = False parse = (?P\d+)\,\ (?P\d+)\,\ (?P\d+)\,\ \"(?P\S+)\"\,\ (?P\d+) diff --git a/docker/Dockerfile.dockerignore b/.dockerignore similarity index 99% rename from docker/Dockerfile.dockerignore rename to .dockerignore index 2b2e51e32df4..1d24d037066d 100644 --- a/docker/Dockerfile.dockerignore +++ b/.dockerignore @@ -40,3 +40,4 @@ tests/**/coverage tests/**/.cache-loader **/node_modules +.yarn diff --git a/.github/pull_request_template.md b/.github/pull_request_template.md index 9f3671a8ce8d..98dca2f648b8 100644 --- a/.github/pull_request_template.md +++ b/.github/pull_request_template.md @@ -2,7 +2,7 @@ Thanks for contributing to JupyterLab! Please fill out the following items to submit a pull request. See the contributing guidelines for more information: -https://github.com/jupyterlab/jupyterlab/blob/main/CONTRIBUTING.md +https://github.com/jupyterlab/jupyterlab/blob/4.1.x/CONTRIBUTING.md --> ## References diff --git a/.github/workflows/check-release.yml b/.github/workflows/check-release.yml index 37ef8dfcd612..4528a6f2e086 100644 --- a/.github/workflows/check-release.yml +++ b/.github/workflows/check-release.yml @@ -2,9 +2,9 @@ name: Check Release on: push: - branches: [main] + branches: [4.1.x] pull_request: - branches: [main] + branches: [4.1.x] release: types: [published] diff --git a/.github/workflows/codeql-analysis.yml b/.github/workflows/codeql-analysis.yml index 2fc415830193..f1103c6669b0 100644 --- a/.github/workflows/codeql-analysis.yml +++ b/.github/workflows/codeql-analysis.yml @@ -7,10 +7,10 @@ name: "CodeQL" on: push: - branches: [main] + branches: [4.1.x] pull_request: # The branches below must be a subset of the branches above - branches: [main] + branches: [4.1.x] schedule: - cron: '0 8 * * 3' diff --git a/.github/workflows/docker-test.yml b/.github/workflows/docker-test.yml index 7a05dc79bec0..3b1728416929 100644 --- a/.github/workflows/docker-test.yml +++ b/.github/workflows/docker-test.yml @@ -3,10 +3,15 @@ name: Docker Tests on: schedule: - cron: '0 0 * * *' + push: + branches: [4.1.x] + pull_request: + branches: [4.1.x] jobs: docker: name: Docker Dev Container + if: ${{ github.event_name == 'schedule' }} || contains( github.event.pull_request.title, '[docker]') runs-on: ubuntu-22.04 steps: - name: Checkout diff --git a/.github/workflows/linuxjs-tests.yml b/.github/workflows/linuxjs-tests.yml index 351309a64d68..2f4d0d8f94a6 100644 --- a/.github/workflows/linuxjs-tests.yml +++ b/.github/workflows/linuxjs-tests.yml @@ -2,9 +2,9 @@ name: Linux JS Tests on: push: - branches: [main] + branches: [4.1.x] pull_request: - branches: [main] + branches: [4.1.x] release: types: [published] diff --git a/.github/workflows/linuxtests.yml b/.github/workflows/linuxtests.yml index 4b4b57946d38..d1bf5199621b 100644 --- a/.github/workflows/linuxtests.yml +++ b/.github/workflows/linuxtests.yml @@ -2,9 +2,9 @@ name: Linux Tests on: push: - branches: [main] + branches: [4.1.x] pull_request: - branches: [main] + branches: [4.1.x] release: types: [published] @@ -154,4 +154,4 @@ jobs: - uses: jupyterlab/maintainer-tools/.github/actions/check-links@v1 with: ignore_glob: "docs/api packages/ui-components/docs/source/ui_components.rst images" - ignore_links: ".*/images/[\\w-]+.png https://docs.github.com/en/.* https://jupyterlab.github.io https://mybinder.org/v2/gh/jupyterlab/.*" + ignore_links: ".*/images/[\\w-]+.png https://docs.github.com/en/.* https://jupyterlab.github.io https://mybinder.org/v2/gh/jupyterlab/.* https://github.com/[^/]+/?$" diff --git a/.github/workflows/macostests.yml b/.github/workflows/macostests.yml index a3c3bff3c8b9..40bf2514e132 100644 --- a/.github/workflows/macostests.yml +++ b/.github/workflows/macostests.yml @@ -2,9 +2,9 @@ name: macOS Tests on: push: - branches: [main] + branches: [4.1.x] pull_request: - branches: [main] + branches: [4.1.x] release: types: [published] diff --git a/.github/workflows/windowstests.yml b/.github/workflows/windowstests.yml index e9142e7fa527..49a1edfafcea 100644 --- a/.github/workflows/windowstests.yml +++ b/.github/workflows/windowstests.yml @@ -2,9 +2,9 @@ name: Windows Tests on: push: - branches: [main] + branches: [4.1.x] pull_request: - branches: [main] + branches: [4.1.x] release: types: [published] diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 7febae4f58a1..a7905f0f12ff 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -27,13 +27,13 @@ repos: exclude: (.bumpversion.cfg|yarn.js) - repo: https://github.com/python-jsonschema/check-jsonschema - rev: 0.27.3 + rev: 0.27.4 hooks: - id: check-github-workflows # Check ruff version is aligned with the one in pyproject.toml - repo: https://github.com/astral-sh/ruff-pre-commit - rev: v0.1.15 + rev: v0.2.0 hooks: - id: ruff args: ["--fix"] diff --git a/CHANGELOG.md b/CHANGELOG.md index e514ed4cfe75..8ec1c68189a7 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,16 +6,16 @@ ## v4.1 -JupyterLab 4.1 includes a number of new features (described below), bug fixes, and enhancements for extension developers. This release is compatible with extensions supporting JupyterLab 4.0. Extension authors are recommended to consult the [Extension Migration Guide](https://jupyterlab.readthedocs.io/en/latest/extension/extension_migration.html#jupyterlab-4-0-to-4-1) which lists deprecations and changes to the public API. +JupyterLab 4.1 includes a number of new features (described below), bug fixes, and enhancements for extension developers. This release is compatible with extensions supporting JupyterLab 4.0. Extension authors are recommended to consult the [Extension Migration Guide](https://jupyterlab.readthedocs.io/en/stable/extension/extension_migration.html#jupyterlab-4-0-to-4-1) which lists deprecations and changes to the public API. ### Custom CSS -Jupyterlab now supports automatic loading of custom CSS. +JupyterLab now supports automatic loading of custom CSS. Themes are the recommended way for customizing the JupyterLab look and feel, while custom CSS is intended for minor personal adjustments. To opt in, start JupyterLab with the `--custom-css` flag. -The location of the `custom.css` file is documented in the section on [customizing the user interface](https://jupyterlab.readthedocs.io/en/latest/user/interface_customization.html#custom-css). +The location of the `custom.css` file is documented in the section on [customizing the user interface](https://jupyterlab.readthedocs.io/en/stable/user/interface_customization.html#custom-css). ```{note} `custom.css` is also available in Jupyter Notebook; @@ -43,7 +43,7 @@ C -->|Two| E[Result 2] which renders as: - + ### Inline completer @@ -52,7 +52,7 @@ allowing generative AI models to provide multi-line completions. The suggestions are provided by plugins implementing the ``IInlineCompletionProvider`` API; by default a single provider which uses kernel history is available. - + The suggestions can be invoked as-you-type or manually using a configurable shortcut (by default Alt + \\). The default keyboard shortcuts are displayed in the small widget shown when hovering over the ghost suggestion: @@ -63,10 +63,10 @@ The default keyboard shortcuts are displayed in the small widget shown when hove To enable the inline suggestions based on the kernel history, go to Settings → Inline Completer → History provider → check the "enabled" checkbox. In addition to the built-in history suggestions, -the [`jupyter-ai`](https://github.com/jupyterlab/jupyter-ai) extension will provide +the [`jupyter-ai`](https://github.com/jupyterlab/jupyter-ai) extension can provide suggestions from supported models. -The `jupyter-ai` integration with inline completer can be tested starting with the -[v2.10.0beta1](https://github.com/jupyterlab/jupyter-ai/releases/tag/v2.10.0beta1) pre-release. +The `jupyter-ai` integration with inline completer is available starting with the +[v2.10.0](https://github.com/jupyterlab/jupyter-ai/releases/tag/v2.10.0) release. The Inline Completer API is still considered experimental and may be subject to changes, please share feedback! @@ -77,35 +77,35 @@ Numerous improvements to keyboard navigation with focus on accessibility and usa - the focus can now be moved beyond the active notebook - the toolbars can now be navigated using arrow keys -For more details, see [this post on Jupyter Blog](https://blog.jupyter.org/recent-keyboard-navigation-improvements-in-jupyter-4df32f97628d). +For more details, see [this post on the Jupyter Blog](https://blog.jupyter.org/recent-keyboard-navigation-improvements-in-jupyter-4df32f97628d). ### Execution history in notebook The code from previously executed cells can be used to populate empty cells, -allowing to iterate on code from previous cells or even sessions +allowing to iterate on code from previous cells or even previous sessions (depending on how a specific kernel stores history). -To cycle between history items press Alt + Arrow Up and Alt + Arrow Down. +To cycle between history items, press Alt + Arrow Up and Alt + Arrow Down. To enable execution history, go to Settings → Notebook → check the "Kernel history access" checkbox. This feature was already available in the console in previous releases; it only works with kernels supporting execution history requests. -To clear the execution history consult the documentation of the kernel you are using (e.g., IPython/ipykernel). +To clear the execution history, consult the documentation of the kernel you are using (e.g., IPython/ipykernel). ### Opening files from tracebacks -Paths to code files detected in the tracebacks returned by kernels on execution error are now turned into links. +Paths to code files detected in tracebacks returned by kernels on execution error are now turned into links. These links will open the corresponding file for editing, if it is in the Jupyter root directory, or they will open a read-only preview if the file is outside of the root directory and the active kernel supports the debugger. - + ### Error indicator in the table of contents When a cell fails during execution, an error indicator will be displayed by the corresponding heading, increasing awareness of the notebook state and enabling users to quickly navigate to the cell which requires attention. - + ### Plugin Manager @@ -113,18 +113,18 @@ Individual plugins can now be disabled or enabled from a new Plugin Manager user Each extension is composed of one or more plugins, and plugins form the basis of JupyterLab itself, thus the plugin manager enables more extensive customization of the JupyterLab experience. - + -This feature is intended for advanced users and documented in depth in the [documentation](https://jupyterlab.readthedocs.io/en/latest/user/extensions.html#managing-plugins-with-plugin-manager). +This feature is intended for advanced users and is documented in depth in the [documentation](https://jupyterlab.readthedocs.io/en/stable/user/extensions.html#managing-plugins-with-plugin-manager). -Administrators may want to [lock specific plugins](https://jupyterlab.readthedocs.io/en/latest/user/extensions.html#locking-and-unlocking-plugins) if they are required for any reason; this will prevent users from disabling the plugins via Plugin Manager and remote API calls. The Plugin Manager itself can be [disabled using the CLI](https://jupyterlab.readthedocs.io/en/latest/user/extensions.html#enabling-and-disabling-extensions). +Administrators may want to [lock specific plugins](https://jupyterlab.readthedocs.io/en/stable/user/extensions.html#locking-and-unlocking-plugins) if they are required for any reason; this will prevent users from disabling the plugins via Plugin Manager and remote API calls. The Plugin Manager itself can be [disabled using the CLI](https://jupyterlab.readthedocs.io/en/stable/user/extensions.html#enabling-and-disabling-extensions). ### Virtual scrollbar for notebook in windowed mode The windowed notebook received an optional scrollbar delineating the active cell and selected cells. Users can jump to a specific cell. - + To enable the virtual scrollbar, go to Settings → Notebook → Windowing mode, choose "full", and click on the hamburger icon (≡) which appears in the notebook's toolbar. @@ -186,7 +186,7 @@ Developers can now provide editor extensions, like themes and programming langua #### New extension manager Starting with JupyterLab 3, extensions can be installed via Python packages -(or other providers of [prebuilt extensions](https://jupyterlab.readthedocs.io/en/latest/extension/extension_dev.html#prebuilt-extensions)). +(or other providers of [prebuilt extensions](https://jupyterlab.readthedocs.io/en/stable/extension/extension_dev.html#prebuilt-extensions)). In JupyterLab 4, building on this feature, the Extension Manager now includes extensions from [pypi.org](https://pypi.org/search/?c=Framework+%3A%3A+Jupyter+%3A%3A+JupyterLab). This removes the build step from installation of extension when using Extension Manager. @@ -260,12 +260,149 @@ Here are the main tool updates that will benefit extension authors and developer We recommend using Node.js v18 or newer, because older versions will reach end of life in 2023 or earlier (see [Node release schedule](https://github.com/nodejs/release#release-schedule)). -To ease code migration to JupyterLab 4, developers should review the [migration guide](https://jupyterlab.readthedocs.io/en/latest/extension/extension_migration.html). A few existing extensions have already been migrated and can be used as examples: +To ease code migration to JupyterLab 4, developers should review the [migration guide](https://jupyterlab.readthedocs.io/en/stable/extension/extension_migration.html). A few existing extensions have already been migrated and can be used as examples: - the [JupyterLab Extensions by Examples](https://github.com/jupyterlab/extension-examples/pull/232) - the [Jupyter MIME type renderers](https://github.com/jupyterlab/jupyter-renderers/pull/296) +## 4.1.5 + +([Full Changelog](https://github.com/jupyterlab/jupyterlab/compare/v4.1.4...a5fa0aa9ba3b561f116d9b4d2e9bf775f95b67a1)) + +### Bugs fixed + +- Fix Theme color is not applied to Toolbar Button [#15957](https://github.com/jupyterlab/jupyterlab/pull/15957) ([@FoSuCloud](https://github.com/FoSuCloud)) +- Uses the browser window's selection as the default search query [#15834](https://github.com/jupyterlab/jupyterlab/pull/15834) ([@JasonWeill](https://github.com/JasonWeill)) +- Show outline on the full item in file browser, only when needed [#15860](https://github.com/jupyterlab/jupyterlab/pull/15860) ([@krassowski](https://github.com/krassowski)) +- Short-circuit `selectItemByName()` if already selected [#15970](https://github.com/jupyterlab/jupyterlab/pull/15970) ([@krassowski](https://github.com/krassowski)) +- Fix browser-test.js [#15892](https://github.com/jupyterlab/jupyterlab/pull/15892) ([@fcollonval](https://github.com/fcollonval)) +- Avoid concurrency when computing the items in notebook toolbar [#15954](https://github.com/jupyterlab/jupyterlab/pull/15954) ([@brichet](https://github.com/brichet)) +- Fixes filter for Chinese, other non-ASCII filenames [#15935](https://github.com/jupyterlab/jupyterlab/pull/15935) ([@JasonWeill](https://github.com/JasonWeill)) + +### Maintenance and upkeep improvements + +- Ignore links to GitHub user and organisation profiles [#15959](https://github.com/jupyterlab/jupyterlab/pull/15959) ([@krassowski](https://github.com/krassowski)) + +### Contributors to this release + +([GitHub contributors page for this release](https://github.com/jupyterlab/jupyterlab/graphs/contributors?from=2024-03-07&to=2024-03-14&type=c)) + +[@andrii-i](https://github.com/search?q=repo%3Ajupyterlab%2Fjupyterlab+involves%3Aandrii-i+updated%3A2024-03-07..2024-03-14&type=Issues) | [@brichet](https://github.com/search?q=repo%3Ajupyterlab%2Fjupyterlab+involves%3Abrichet+updated%3A2024-03-07..2024-03-14&type=Issues) | [@jtpio](https://github.com/search?q=repo%3Ajupyterlab%2Fjupyterlab+involves%3Ajtpio+updated%3A2024-03-07..2024-03-14&type=Issues) | [@jupyterlab-probot](https://github.com/search?q=repo%3Ajupyterlab%2Fjupyterlab+involves%3Ajupyterlab-probot+updated%3A2024-03-07..2024-03-14&type=Issues) | [@krassowski](https://github.com/search?q=repo%3Ajupyterlab%2Fjupyterlab+involves%3Akrassowski+updated%3A2024-03-07..2024-03-14&type=Issues) | [@linlol](https://github.com/search?q=repo%3Ajupyterlab%2Fjupyterlab+involves%3Alinlol+updated%3A2024-03-07..2024-03-14&type=Issues) | [@meeseeksmachine](https://github.com/search?q=repo%3Ajupyterlab%2Fjupyterlab+involves%3Ameeseeksmachine+updated%3A2024-03-07..2024-03-14&type=Issues) | [@welcome](https://github.com/search?q=repo%3Ajupyterlab%2Fjupyterlab+involves%3Awelcome+updated%3A2024-03-07..2024-03-14&type=Issues) + + + +## 4.1.4 + +([Full Changelog](https://github.com/jupyterlab/jupyterlab/compare/v4.1.3...3eab4adc3053485cacfefc02dd5e8bc6fb256442)) + +### Bugs fixed + +- Fix creating files in custom drives, fix `ContentsManagerMock` [#15291](https://github.com/jupyterlab/jupyterlab/pull/15291) ([@jtpio](https://github.com/jtpio)) +- Fix Theme color is not applied to SwitchKernel ToolbarButton [#15924](https://github.com/jupyterlab/jupyterlab/pull/15924) ([@FoSuCloud](https://github.com/FoSuCloud)) +- Revert "Prevent command shortcuts from preventing user input" [#15938](https://github.com/jupyterlab/jupyterlab/pull/15938) ([@krassowski](https://github.com/krassowski)) +- Fix spurious dedent when opening inspector tooltip [#15898](https://github.com/jupyterlab/jupyterlab/pull/15898) ([@krassowski](https://github.com/krassowski)) +- Add an explicit default for inline completer providers [#15899](https://github.com/jupyterlab/jupyterlab/pull/15899) ([@krassowski](https://github.com/krassowski)) + +### Contributors to this release + +([GitHub contributors page for this release](https://github.com/jupyterlab/jupyterlab/graphs/contributors?from=2024-03-04&to=2024-03-07&type=c)) + +[@ericsnekbytes](https://github.com/search?q=repo%3Ajupyterlab%2Fjupyterlab+involves%3Aericsnekbytes+updated%3A2024-03-04..2024-03-07&type=Issues) | [@github-actions](https://github.com/search?q=repo%3Ajupyterlab%2Fjupyterlab+involves%3Agithub-actions+updated%3A2024-03-04..2024-03-07&type=Issues) | [@jtpio](https://github.com/search?q=repo%3Ajupyterlab%2Fjupyterlab+involves%3Ajtpio+updated%3A2024-03-04..2024-03-07&type=Issues) | [@jupyterlab-probot](https://github.com/search?q=repo%3Ajupyterlab%2Fjupyterlab+involves%3Ajupyterlab-probot+updated%3A2024-03-04..2024-03-07&type=Issues) | [@krassowski](https://github.com/search?q=repo%3Ajupyterlab%2Fjupyterlab+involves%3Akrassowski+updated%3A2024-03-04..2024-03-07&type=Issues) | [@meeseeksmachine](https://github.com/search?q=repo%3Ajupyterlab%2Fjupyterlab+involves%3Ameeseeksmachine+updated%3A2024-03-04..2024-03-07&type=Issues) + +## 4.1.3 + +([Full Changelog](https://github.com/jupyterlab/jupyterlab/compare/v4.1.2...58a6905e3b29e95d1b7ff00b0fbc5472eaee769b)) + +### Bugs fixed + +- Fix Pressing enter in console with console run keystroke set to enter creates a newline and runs [#15869](https://github.com/jupyterlab/jupyterlab/pull/15869) ([@FoSuCloud](https://github.com/FoSuCloud)) +- Fix saving of item positions in reactive toolbar [#15843](https://github.com/jupyterlab/jupyterlab/pull/15843) ([@brichet](https://github.com/brichet)) +- Prevent command shortcuts from preventing user input [#15790](https://github.com/jupyterlab/jupyterlab/pull/15790) ([@krassowski](https://github.com/krassowski)) +- Fix missing signals in file editor adapter [#15873](https://github.com/jupyterlab/jupyterlab/pull/15873) ([@krassowski](https://github.com/krassowski)) +- Fix codemirror highlight for Python builtin [#15805](https://github.com/jupyterlab/jupyterlab/pull/15805) ([@AllanChain](https://github.com/AllanChain)) +- When attaching only typeset after rendering is completed [#15810](https://github.com/jupyterlab/jupyterlab/pull/15810) ([@krassowski](https://github.com/krassowski)) + +### Maintenance and upkeep improvements + +- Update docstrings to mention Jupyter Server API [#15880](https://github.com/jupyterlab/jupyterlab/pull/15880) ([@jtpio](https://github.com/jtpio)) +- Bump es5-ext from 0.10.62 to 0.10.63 [#15878](https://github.com/jupyterlab/jupyterlab/pull/15878) ([@dependabot\[bot\]](https://github.com/apps/dependabot)) +- Fix clean script [#15854](https://github.com/jupyterlab/jupyterlab/pull/15854) ([@krassowski](https://github.com/krassowski)) +- Update branch configuration for `4.1.x` [#15848](https://github.com/jupyterlab/jupyterlab/pull/15848) ([@krassowski](https://github.com/krassowski)) + +### Documentation improvements + +- Fix broken link [#15851](https://github.com/jupyterlab/jupyterlab/pull/15851) ([@fcollonval](https://github.com/fcollonval)) +- Update branch configuration for `4.1.x` [#15848](https://github.com/jupyterlab/jupyterlab/pull/15848) ([@krassowski](https://github.com/krassowski)) + +### Contributors to this release + +([GitHub contributors page for this release](https://github.com/jupyterlab/jupyterlab/graphs/contributors?from=2024-02-19&to=2024-03-04&type=c)) + +[@AllanChain](https://github.com/search?q=repo%3Ajupyterlab%2Fjupyterlab+involves%3AAllanChain+updated%3A2024-02-19..2024-03-04&type=Issues) | [@brichet](https://github.com/search?q=repo%3Ajupyterlab%2Fjupyterlab+involves%3Abrichet+updated%3A2024-02-19..2024-03-04&type=Issues) | [@ericsnekbytes](https://github.com/search?q=repo%3Ajupyterlab%2Fjupyterlab+involves%3Aericsnekbytes+updated%3A2024-02-19..2024-03-04&type=Issues) | [@fcollonval](https://github.com/search?q=repo%3Ajupyterlab%2Fjupyterlab+involves%3Afcollonval+updated%3A2024-02-19..2024-03-04&type=Issues) | [@FoSuCloud](https://github.com/search?q=repo%3Ajupyterlab%2Fjupyterlab+involves%3AFoSuCloud+updated%3A2024-02-19..2024-03-04&type=Issues) | [@github-actions](https://github.com/search?q=repo%3Ajupyterlab%2Fjupyterlab+involves%3Agithub-actions+updated%3A2024-02-19..2024-03-04&type=Issues) | [@JasonWeill](https://github.com/search?q=repo%3Ajupyterlab%2Fjupyterlab+involves%3AJasonWeill+updated%3A2024-02-19..2024-03-04&type=Issues) | [@jtpio](https://github.com/search?q=repo%3Ajupyterlab%2Fjupyterlab+involves%3Ajtpio+updated%3A2024-02-19..2024-03-04&type=Issues) | [@jupyterlab-probot](https://github.com/search?q=repo%3Ajupyterlab%2Fjupyterlab+involves%3Ajupyterlab-probot+updated%3A2024-02-19..2024-03-04&type=Issues) | [@krassowski](https://github.com/search?q=repo%3Ajupyterlab%2Fjupyterlab+involves%3Akrassowski+updated%3A2024-02-19..2024-03-04&type=Issues) | [@linlol](https://github.com/search?q=repo%3Ajupyterlab%2Fjupyterlab+involves%3Alinlol+updated%3A2024-02-19..2024-03-04&type=Issues) | [@lumberbot-app](https://github.com/search?q=repo%3Ajupyterlab%2Fjupyterlab+involves%3Alumberbot-app+updated%3A2024-02-19..2024-03-04&type=Issues) | [@meeseeksmachine](https://github.com/search?q=repo%3Ajupyterlab%2Fjupyterlab+involves%3Ameeseeksmachine+updated%3A2024-02-19..2024-03-04&type=Issues) | [@welcome](https://github.com/search?q=repo%3Ajupyterlab%2Fjupyterlab+involves%3Awelcome+updated%3A2024-02-19..2024-03-04&type=Issues) + +## 4.1.2 + +([Full Changelog](https://github.com/jupyterlab/jupyterlab/compare/v4.1.1...d835cf35dfd37bbe930c79c90a6d180a800bae69)) + +### Bugs fixed + +- Fix highlight sequencing when replacing text in code cells [#15803](https://github.com/jupyterlab/jupyterlab/pull/15803) ([@JasonWeill](https://github.com/JasonWeill)) +- Windows platforms, erratic pasting of text into Markdown field [#15794](https://github.com/jupyterlab/jupyterlab/pull/15794) ([@kiliansinger](https://github.com/kiliansinger)) +- Restore notebook scrolling on dragging a cell to the viewport edge [#15782](https://github.com/jupyterlab/jupyterlab/pull/15782) ([@krassowski](https://github.com/krassowski)) +- Fix typing in editable elements inside of open shadow DOM [#15774](https://github.com/jupyterlab/jupyterlab/pull/15774) ([@krassowski](https://github.com/krassowski)) + +### Maintenance and upkeep improvements + +- \[docker\] Allow non-unique GID [#15699](https://github.com/jupyterlab/jupyterlab/pull/15699) ([@trungleduc](https://github.com/trungleduc)) + +### Documentation improvements + +- Remove SO links, add more recent issue to FAQ [#15811](https://github.com/jupyterlab/jupyterlab/pull/15811) ([@krassowski](https://github.com/krassowski)) +- Fix outdated link to mybinder.org on index page of documentation [#15800](https://github.com/jupyterlab/jupyterlab/pull/15800) ([@nluetts](https://github.com/nluetts)) +- Fix typing in editable elements inside of open shadow DOM [#15774](https://github.com/jupyterlab/jupyterlab/pull/15774) ([@krassowski](https://github.com/krassowski)) + +### Contributors to this release + +([GitHub contributors page for this release](https://github.com/jupyterlab/jupyterlab/graphs/contributors?from=2024-02-13&to=2024-02-19&type=c)) + +[@FoSuCloud](https://github.com/search?q=repo%3Ajupyterlab%2Fjupyterlab+involves%3AFoSuCloud+updated%3A2024-02-13..2024-02-19&type=Issues) | [@github-actions](https://github.com/search?q=repo%3Ajupyterlab%2Fjupyterlab+involves%3Agithub-actions+updated%3A2024-02-13..2024-02-19&type=Issues) | [@JasonWeill](https://github.com/search?q=repo%3Ajupyterlab%2Fjupyterlab+involves%3AJasonWeill+updated%3A2024-02-13..2024-02-19&type=Issues) | [@jupyterlab-probot](https://github.com/search?q=repo%3Ajupyterlab%2Fjupyterlab+involves%3Ajupyterlab-probot+updated%3A2024-02-13..2024-02-19&type=Issues) | [@kiliansinger](https://github.com/search?q=repo%3Ajupyterlab%2Fjupyterlab+involves%3Akiliansinger+updated%3A2024-02-13..2024-02-19&type=Issues) | [@krassowski](https://github.com/search?q=repo%3Ajupyterlab%2Fjupyterlab+involves%3Akrassowski+updated%3A2024-02-13..2024-02-19&type=Issues) | [@lumberbot-app](https://github.com/search?q=repo%3Ajupyterlab%2Fjupyterlab+involves%3Alumberbot-app+updated%3A2024-02-13..2024-02-19&type=Issues) | [@nluetts](https://github.com/search?q=repo%3Ajupyterlab%2Fjupyterlab+involves%3Anluetts+updated%3A2024-02-13..2024-02-19&type=Issues) | [@trungleduc](https://github.com/search?q=repo%3Ajupyterlab%2Fjupyterlab+involves%3Atrungleduc+updated%3A2024-02-13..2024-02-19&type=Issues) | [@welcome](https://github.com/search?q=repo%3Ajupyterlab%2Fjupyterlab+involves%3Awelcome+updated%3A2024-02-13..2024-02-19&type=Issues) + +## 4.1.1 + +([Full Changelog](https://github.com/jupyterlab/jupyterlab/compare/v4.1.0...6abcf80374af290d7ba958a1f1f64f92c0394d0e)) + +### Bugs fixed + +- Correct Alt + number keyboard shortcuts command map [#15791](https://github.com/jupyterlab/jupyterlab/pull/15791) ([@g547315](https://github.com/g547315)) +- Catch errors attempting to access `document.cookie` [#15788](https://github.com/jupyterlab/jupyterlab/pull/15788) ([@minrk](https://github.com/minrk)) +- Fix undo/redo in console, fix undo/redo enabled state in file editor [#15783](https://github.com/jupyterlab/jupyterlab/pull/15783) ([@krassowski](https://github.com/krassowski)) +- Fix console cells not becoming read-only after execution [#15779](https://github.com/jupyterlab/jupyterlab/pull/15779) ([@krassowski](https://github.com/krassowski)) +- Fix migration of command selectors for shortcuts [#15762](https://github.com/jupyterlab/jupyterlab/pull/15762) ([@krassowski](https://github.com/krassowski)) +- Disable (shift + ) alt + number shortcuts on Mac [#15761](https://github.com/jupyterlab/jupyterlab/pull/15761) ([@krassowski](https://github.com/krassowski)) +- Catch `OSError` in addition to `PermissionError` when `sys_prefix` is read-only [#15756](https://github.com/jupyterlab/jupyterlab/pull/15756) ([@dhml](https://github.com/dhml)) +- Fix completer auto-invoking on non-source changes [#15753](https://github.com/jupyterlab/jupyterlab/pull/15753) ([@krassowski](https://github.com/krassowski)) +- Fix outputs preservation on splitting cells [#15751](https://github.com/jupyterlab/jupyterlab/pull/15751) ([@krassowski](https://github.com/krassowski)) + +### Maintenance and upkeep improvements + +- Update `jupyter-collaboration` for the Binder environment [#15767](https://github.com/jupyterlab/jupyterlab/pull/15767) ([@jtpio](https://github.com/jtpio)) +- Fix failing "Notebook Toolbar › Paste cell" test [#15720](https://github.com/jupyterlab/jupyterlab/pull/15720) ([@krassowski](https://github.com/krassowski)) + +### Documentation improvements + +- Add Edge, remove IE 11 from browser support docs [#15784](https://github.com/jupyterlab/jupyterlab/pull/15784) ([@JasonWeill](https://github.com/JasonWeill)) +- Update changelog to reflect jupyter-ai release status [#15775](https://github.com/jupyterlab/jupyterlab/pull/15775) ([@krassowski](https://github.com/krassowski)) +- Add a link to postmortem for 3.6.7 release [#15743](https://github.com/jupyterlab/jupyterlab/pull/15743) ([@krassowski](https://github.com/krassowski)) +- Update maintainers affiliation [#15724](https://github.com/jupyterlab/jupyterlab/pull/15724) ([@fcollonval](https://github.com/fcollonval)) +- Update lifecycle info for JupyterLab major versions [#15626](https://github.com/jupyterlab/jupyterlab/pull/15626) ([@JasonWeill](https://github.com/JasonWeill)) + +### Contributors to this release + +([GitHub contributors page for this release](https://github.com/jupyterlab/jupyterlab/graphs/contributors?from=2024-02-05&to=2024-02-13&type=c)) + +[@davidbrochart](https://github.com/search?q=repo%3Ajupyterlab%2Fjupyterlab+involves%3Adavidbrochart+updated%3A2024-02-05..2024-02-13&type=Issues) | [@dhml](https://github.com/search?q=repo%3Ajupyterlab%2Fjupyterlab+involves%3Adhml+updated%3A2024-02-05..2024-02-13&type=Issues) | [@fcollonval](https://github.com/search?q=repo%3Ajupyterlab%2Fjupyterlab+involves%3Afcollonval+updated%3A2024-02-05..2024-02-13&type=Issues) | [@g547315](https://github.com/search?q=repo%3Ajupyterlab%2Fjupyterlab+involves%3Ag547315+updated%3A2024-02-05..2024-02-13&type=Issues) | [@github-actions](https://github.com/search?q=repo%3Ajupyterlab%2Fjupyterlab+involves%3Agithub-actions+updated%3A2024-02-05..2024-02-13&type=Issues) | [@JasonWeill](https://github.com/search?q=repo%3Ajupyterlab%2Fjupyterlab+involves%3AJasonWeill+updated%3A2024-02-05..2024-02-13&type=Issues) | [@jtpio](https://github.com/search?q=repo%3Ajupyterlab%2Fjupyterlab+involves%3Ajtpio+updated%3A2024-02-05..2024-02-13&type=Issues) | [@jupyterlab-probot](https://github.com/search?q=repo%3Ajupyterlab%2Fjupyterlab+involves%3Ajupyterlab-probot+updated%3A2024-02-05..2024-02-13&type=Issues) | [@krassowski](https://github.com/search?q=repo%3Ajupyterlab%2Fjupyterlab+involves%3Akrassowski+updated%3A2024-02-05..2024-02-13&type=Issues) | [@lumberbot-app](https://github.com/search?q=repo%3Ajupyterlab%2Fjupyterlab+involves%3Alumberbot-app+updated%3A2024-02-05..2024-02-13&type=Issues) | [@minrk](https://github.com/search?q=repo%3Ajupyterlab%2Fjupyterlab+involves%3Aminrk+updated%3A2024-02-05..2024-02-13&type=Issues) | [@pre-commit-ci](https://github.com/search?q=repo%3Ajupyterlab%2Fjupyterlab+involves%3Apre-commit-ci+updated%3A2024-02-05..2024-02-13&type=Issues) | [@welcome](https://github.com/search?q=repo%3Ajupyterlab%2Fjupyterlab+involves%3Awelcome+updated%3A2024-02-05..2024-02-13&type=Issues) + ## 4.1.0 ([Full Changelog](https://github.com/jupyterlab/jupyterlab/compare/v4.0.2...b887949d52310234144dd48496fa7a6f1fbb4645)) @@ -369,7 +506,7 @@ To ease code migration to JupyterLab 4, developers should review the [migration - Remove unnecessary requirement from codemirror service plugin [#15362](https://github.com/jupyterlab/jupyterlab/pull/15362) ([@paulkim3151](https://github.com/paulkim3151)) - Update notebook window on resize if height changes [#15357](https://github.com/jupyterlab/jupyterlab/pull/15357) ([@krassowski](https://github.com/krassowski)) - Fix scrolling past long outputs in presence of un-rendered headings [#15356](https://github.com/jupyterlab/jupyterlab/pull/15356) ([@krassowski](https://github.com/krassowski)) -- Fix missing default property breaking codemirror `overrides.json` [#15346](https://github.com/jupyterlab/jupyterlab/pull/15346) ([@LJMP](https://github.com/LJMP)) +- Fix missing default property breaking codemirror `overrides.json` [#15346](https://github.com/jupyterlab/jupyterlab/pull/15346) ([@LJMP](https://github.com/e4e)) - Fix update button in extension manager [#15331](https://github.com/jupyterlab/jupyterlab/pull/15331) ([@nbowditch-einblick](https://github.com/nbowditch-einblick)) - Fix collapsed cells styling [#15322](https://github.com/jupyterlab/jupyterlab/pull/15322) ([@fcollonval](https://github.com/fcollonval)) - Fix scrolling when dragging files in the file browser [#15318](https://github.com/jupyterlab/jupyterlab/pull/15318) ([@krassowski](https://github.com/krassowski)) @@ -659,8 +796,6 @@ To ease code migration to JupyterLab 4, developers should review the [migration [@afshin](https://github.com/search?q=repo%3Ajupyterlab%2Fjupyterlab+involves%3Aafshin+updated%3A2023-06-08..2024-02-05&type=Issues) | [@akx](https://github.com/search?q=repo%3Ajupyterlab%2Fjupyterlab+involves%3Aakx+updated%3A2023-06-08..2024-02-05&type=Issues) | [@alden-ilao](https://github.com/search?q=repo%3Ajupyterlab%2Fjupyterlab+involves%3Aalden-ilao+updated%3A2023-06-08..2024-02-05&type=Issues) | [@AllanChain](https://github.com/search?q=repo%3Ajupyterlab%2Fjupyterlab+involves%3AAllanChain+updated%3A2023-06-08..2024-02-05&type=Issues) | [@andrewfulton9](https://github.com/search?q=repo%3Ajupyterlab%2Fjupyterlab+involves%3Aandrewfulton9+updated%3A2023-06-08..2024-02-05&type=Issues) | [@andrii-i](https://github.com/search?q=repo%3Ajupyterlab%2Fjupyterlab+involves%3Aandrii-i+updated%3A2023-06-08..2024-02-05&type=Issues) | [@ashna1jain](https://github.com/search?q=repo%3Ajupyterlab%2Fjupyterlab+involves%3Aashna1jain+updated%3A2023-06-08..2024-02-05&type=Issues) | [@bikash30851](https://github.com/search?q=repo%3Ajupyterlab%2Fjupyterlab+involves%3Abikash30851+updated%3A2023-06-08..2024-02-05&type=Issues) | [@blink1073](https://github.com/search?q=repo%3Ajupyterlab%2Fjupyterlab+involves%3Ablink1073+updated%3A2023-06-08..2024-02-05&type=Issues) | [@bollwyvl](https://github.com/search?q=repo%3Ajupyterlab%2Fjupyterlab+involves%3Abollwyvl+updated%3A2023-06-08..2024-02-05&type=Issues) | [@brichet](https://github.com/search?q=repo%3Ajupyterlab%2Fjupyterlab+involves%3Abrichet+updated%3A2023-06-08..2024-02-05&type=Issues) | [@brijsiyag](https://github.com/search?q=repo%3Ajupyterlab%2Fjupyterlab+involves%3Abrijsiyag+updated%3A2023-06-08..2024-02-05&type=Issues) | [@coriegulik](https://github.com/search?q=repo%3Ajupyterlab%2Fjupyterlab+involves%3Acoriegulik+updated%3A2023-06-08..2024-02-05&type=Issues) | [@davidbrochart](https://github.com/search?q=repo%3Ajupyterlab%2Fjupyterlab+involves%3Adavidbrochart+updated%3A2023-06-08..2024-02-05&type=Issues) | [@DcWire](https://github.com/search?q=repo%3Ajupyterlab%2Fjupyterlab+involves%3ADcWire+updated%3A2023-06-08..2024-02-05&type=Issues) | [@Deepali1211](https://github.com/search?q=repo%3Ajupyterlab%2Fjupyterlab+involves%3ADeepali1211+updated%3A2023-06-08..2024-02-05&type=Issues) | [@DenisaCG](https://github.com/search?q=repo%3Ajupyterlab%2Fjupyterlab+involves%3ADenisaCG+updated%3A2023-06-08..2024-02-05&type=Issues) | [@dependabot](https://github.com/search?q=repo%3Ajupyterlab%2Fjupyterlab+involves%3Adependabot+updated%3A2023-06-08..2024-02-05&type=Issues) | [@dharmaquark](https://github.com/search?q=repo%3Ajupyterlab%2Fjupyterlab+involves%3Adharmaquark+updated%3A2023-06-08..2024-02-05&type=Issues) | [@divyansshhh](https://github.com/search?q=repo%3Ajupyterlab%2Fjupyterlab+involves%3Adivyansshhh+updated%3A2023-06-08..2024-02-05&type=Issues) | [@dolevf](https://github.com/search?q=repo%3Ajupyterlab%2Fjupyterlab+involves%3Adolevf+updated%3A2023-06-08..2024-02-05&type=Issues) | [@DonJayamanne](https://github.com/search?q=repo%3Ajupyterlab%2Fjupyterlab+involves%3ADonJayamanne+updated%3A2023-06-08..2024-02-05&type=Issues) | [@echarles](https://github.com/search?q=repo%3Ajupyterlab%2Fjupyterlab+involves%3Aecharles+updated%3A2023-06-08..2024-02-05&type=Issues) | [@eliaslma](https://github.com/search?q=repo%3Ajupyterlab%2Fjupyterlab+involves%3Aeliaslma+updated%3A2023-06-08..2024-02-05&type=Issues) | [@emmanuel-ferdman](https://github.com/search?q=repo%3Ajupyterlab%2Fjupyterlab+involves%3Aemmanuel-ferdman+updated%3A2023-06-08..2024-02-05&type=Issues) | [@ericsnekbytes](https://github.com/search?q=repo%3Ajupyterlab%2Fjupyterlab+involves%3Aericsnekbytes+updated%3A2023-06-08..2024-02-05&type=Issues) | [@fcollonval](https://github.com/search?q=repo%3Ajupyterlab%2Fjupyterlab+involves%3Afcollonval+updated%3A2023-06-08..2024-02-05&type=Issues) | [@firai](https://github.com/search?q=repo%3Ajupyterlab%2Fjupyterlab+involves%3Afirai+updated%3A2023-06-08..2024-02-05&type=Issues) | [@FoSuCloud](https://github.com/search?q=repo%3Ajupyterlab%2Fjupyterlab+involves%3AFoSuCloud+updated%3A2023-06-08..2024-02-05&type=Issues) | [@g547315](https://github.com/search?q=repo%3Ajupyterlab%2Fjupyterlab+involves%3Ag547315+updated%3A2023-06-08..2024-02-05&type=Issues) | [@gabalafou](https://github.com/search?q=repo%3Ajupyterlab%2Fjupyterlab+involves%3Agabalafou+updated%3A2023-06-08..2024-02-05&type=Issues) | [@GabrielaVives](https://github.com/search?q=repo%3Ajupyterlab%2Fjupyterlab+involves%3AGabrielaVives+updated%3A2023-06-08..2024-02-05&type=Issues) | [@github-actions](https://github.com/search?q=repo%3Ajupyterlab%2Fjupyterlab+involves%3Agithub-actions+updated%3A2023-06-08..2024-02-05&type=Issues) | [@HaudinFlorence](https://github.com/search?q=repo%3Ajupyterlab%2Fjupyterlab+involves%3AHaudinFlorence+updated%3A2023-06-08..2024-02-05&type=Issues) | [@hbcarlos](https://github.com/search?q=repo%3Ajupyterlab%2Fjupyterlab+involves%3Ahbcarlos+updated%3A2023-06-08..2024-02-05&type=Issues) | [@holzman](https://github.com/search?q=repo%3Ajupyterlab%2Fjupyterlab+involves%3Aholzman+updated%3A2023-06-08..2024-02-05&type=Issues) | [@isabela-pf](https://github.com/search?q=repo%3Ajupyterlab%2Fjupyterlab+involves%3Aisabela-pf+updated%3A2023-06-08..2024-02-05&type=Issues) | [@j264415](https://github.com/search?q=repo%3Ajupyterlab%2Fjupyterlab+involves%3Aj264415+updated%3A2023-06-08..2024-02-05&type=Issues) | [@jans-code](https://github.com/search?q=repo%3Ajupyterlab%2Fjupyterlab+involves%3Ajans-code+updated%3A2023-06-08..2024-02-05&type=Issues) | [@JasonWeill](https://github.com/search?q=repo%3Ajupyterlab%2Fjupyterlab+involves%3AJasonWeill+updated%3A2023-06-08..2024-02-05&type=Issues) | [@jtpio](https://github.com/search?q=repo%3Ajupyterlab%2Fjupyterlab+involves%3Ajtpio+updated%3A2023-06-08..2024-02-05&type=Issues) | [@jupyterlab-bot](https://github.com/search?q=repo%3Ajupyterlab%2Fjupyterlab+involves%3Ajupyterlab-bot+updated%3A2023-06-08..2024-02-05&type=Issues) | [@jupyterlab-probot](https://github.com/search?q=repo%3Ajupyterlab%2Fjupyterlab+involves%3Ajupyterlab-probot+updated%3A2023-06-08..2024-02-05&type=Issues) | [@KiranmaiKalla](https://github.com/search?q=repo%3Ajupyterlab%2Fjupyterlab+involves%3AKiranmaiKalla+updated%3A2023-06-08..2024-02-05&type=Issues) | [@krassowski](https://github.com/search?q=repo%3Ajupyterlab%2Fjupyterlab+involves%3Akrassowski+updated%3A2023-06-08..2024-02-05&type=Issues) | [@LJMP](https://github.com/search?q=repo%3Ajupyterlab%2Fjupyterlab+involves%3ALJMP+updated%3A2023-06-08..2024-02-05&type=Issues) | [@lumberbot-app](https://github.com/search?q=repo%3Ajupyterlab%2Fjupyterlab+involves%3Alumberbot-app+updated%3A2023-06-08..2024-02-05&type=Issues) | [@m158261](https://github.com/search?q=repo%3Ajupyterlab%2Fjupyterlab+involves%3Am158261+updated%3A2023-06-08..2024-02-05&type=Issues) | [@mctoohey](https://github.com/search?q=repo%3Ajupyterlab%2Fjupyterlab+involves%3Amctoohey+updated%3A2023-06-08..2024-02-05&type=Issues) | [@mdengler](https://github.com/search?q=repo%3Ajupyterlab%2Fjupyterlab+involves%3Amdengler+updated%3A2023-06-08..2024-02-05&type=Issues) | [@MFA-X-AI](https://github.com/search?q=repo%3Ajupyterlab%2Fjupyterlab+involves%3AMFA-X-AI+updated%3A2023-06-08..2024-02-05&type=Issues) | [@misterfads](https://github.com/search?q=repo%3Ajupyterlab%2Fjupyterlab+involves%3Amisterfads+updated%3A2023-06-08..2024-02-05&type=Issues) | [@mlucool](https://github.com/search?q=repo%3Ajupyterlab%2Fjupyterlab+involves%3Amlucool+updated%3A2023-06-08..2024-02-05&type=Issues) | [@mmichilot](https://github.com/search?q=repo%3Ajupyterlab%2Fjupyterlab+involves%3Ammichilot+updated%3A2023-06-08..2024-02-05&type=Issues) | [@nbowditch-einblick](https://github.com/search?q=repo%3Ajupyterlab%2Fjupyterlab+involves%3Anbowditch-einblick+updated%3A2023-06-08..2024-02-05&type=Issues) | [@nishikantparmariam](https://github.com/search?q=repo%3Ajupyterlab%2Fjupyterlab+involves%3Anishikantparmariam+updated%3A2023-06-08..2024-02-05&type=Issues) | [@paolocarinci](https://github.com/search?q=repo%3Ajupyterlab%2Fjupyterlab+involves%3Apaolocarinci+updated%3A2023-06-08..2024-02-05&type=Issues) | [@parmentelat](https://github.com/search?q=repo%3Ajupyterlab%2Fjupyterlab+involves%3Aparmentelat+updated%3A2023-06-08..2024-02-05&type=Issues) | [@pauky](https://github.com/search?q=repo%3Ajupyterlab%2Fjupyterlab+involves%3Apauky+updated%3A2023-06-08..2024-02-05&type=Issues) | [@paulkim3151](https://github.com/search?q=repo%3Ajupyterlab%2Fjupyterlab+involves%3Apaulkim3151+updated%3A2023-06-08..2024-02-05&type=Issues) | [@phil-zxx](https://github.com/search?q=repo%3Ajupyterlab%2Fjupyterlab+involves%3Aphil-zxx+updated%3A2023-06-08..2024-02-05&type=Issues) | [@pre-commit-ci](https://github.com/search?q=repo%3Ajupyterlab%2Fjupyterlab+involves%3Apre-commit-ci+updated%3A2023-06-08..2024-02-05&type=Issues) | [@Rmarieta](https://github.com/search?q=repo%3Ajupyterlab%2Fjupyterlab+involves%3ARmarieta+updated%3A2023-06-08..2024-02-05&type=Issues) | [@RRosio](https://github.com/search?q=repo%3Ajupyterlab%2Fjupyterlab+involves%3ARRosio+updated%3A2023-06-08..2024-02-05&type=Issues) | [@Sarthug99](https://github.com/search?q=repo%3Ajupyterlab%2Fjupyterlab+involves%3ASarthug99+updated%3A2023-06-08..2024-02-05&type=Issues) | [@sinistersnare](https://github.com/search?q=repo%3Ajupyterlab%2Fjupyterlab+involves%3Asinistersnare+updated%3A2023-06-08..2024-02-05&type=Issues) | [@skyetim](https://github.com/search?q=repo%3Ajupyterlab%2Fjupyterlab+involves%3Askyetim+updated%3A2023-06-08..2024-02-05&type=Issues) | [@smacke](https://github.com/search?q=repo%3Ajupyterlab%2Fjupyterlab+involves%3Asmacke+updated%3A2023-06-08..2024-02-05&type=Issues) | [@SylvainCorlay](https://github.com/search?q=repo%3Ajupyterlab%2Fjupyterlab+involves%3ASylvainCorlay+updated%3A2023-06-08..2024-02-05&type=Issues) | [@t03857785](https://github.com/search?q=repo%3Ajupyterlab%2Fjupyterlab+involves%3At03857785+updated%3A2023-06-08..2024-02-05&type=Issues) | [@tibdex](https://github.com/search?q=repo%3Ajupyterlab%2Fjupyterlab+involves%3Atibdex+updated%3A2023-06-08..2024-02-05&type=Issues) | [@timkpaine](https://github.com/search?q=repo%3Ajupyterlab%2Fjupyterlab+involves%3Atimkpaine+updated%3A2023-06-08..2024-02-05&type=Issues) | [@tonyfast](https://github.com/search?q=repo%3Ajupyterlab%2Fjupyterlab+involves%3Atonyfast+updated%3A2023-06-08..2024-02-05&type=Issues) | [@trungleduc](https://github.com/search?q=repo%3Ajupyterlab%2Fjupyterlab+involves%3Atrungleduc+updated%3A2023-06-08..2024-02-05&type=Issues) | [@welcome](https://github.com/search?q=repo%3Ajupyterlab%2Fjupyterlab+involves%3Awelcome+updated%3A2023-06-08..2024-02-05&type=Issues) | [@Wh1isper](https://github.com/search?q=repo%3Ajupyterlab%2Fjupyterlab+involves%3AWh1isper+updated%3A2023-06-08..2024-02-05&type=Issues) | [@yuvipanda](https://github.com/search?q=repo%3Ajupyterlab%2Fjupyterlab+involves%3Ayuvipanda+updated%3A2023-06-08..2024-02-05&type=Issues) - - ## 4.1.0rc1 ([Full Changelog](https://github.com/jupyterlab/jupyterlab/compare/v4.1.0rc0...5ba76a876091ca80c612a3747fe2767219a19ca5)) @@ -932,7 +1067,7 @@ To ease code migration to JupyterLab 4, developers should review the [migration - Remove unnecessary requirement from codemirror service plugin [#15362](https://github.com/jupyterlab/jupyterlab/pull/15362) ([@paulkim3151](https://github.com/paulkim3151)) - Update notebook window on resize if height changes [#15357](https://github.com/jupyterlab/jupyterlab/pull/15357) ([@krassowski](https://github.com/krassowski)) - Fix scrolling past long outputs in presence of un-rendered headings [#15356](https://github.com/jupyterlab/jupyterlab/pull/15356) ([@krassowski](https://github.com/krassowski)) -- Fix missing default property breaking codemirror `overrides.json` [#15346](https://github.com/jupyterlab/jupyterlab/pull/15346) ([@LJMP](https://github.com/LJMP)) +- Fix missing default property breaking codemirror `overrides.json` [#15346](https://github.com/jupyterlab/jupyterlab/pull/15346) ([@LJMP](https://github.com/e4e)) - Fix update button in extension manager [#15331](https://github.com/jupyterlab/jupyterlab/pull/15331) ([@nbowditch-einblick](https://github.com/nbowditch-einblick)) - Fix collapsed cells styling [#15322](https://github.com/jupyterlab/jupyterlab/pull/15322) ([@fcollonval](https://github.com/fcollonval)) - Fix scrolling when dragging files in the file browser [#15318](https://github.com/jupyterlab/jupyterlab/pull/15318) ([@krassowski](https://github.com/krassowski)) @@ -1305,9 +1440,9 @@ To ease code migration to JupyterLab 4, developers should review the [migration JupyterLab 4 is released! :tada: -Check out the new features, improvements and bug fixes: https://jupyterlab.readthedocs.io/en/latest/getting_started/changelog.html#v4-0 +Check out the new features, improvements and bug fixes: https://jupyterlab.readthedocs.io/en/stable/getting_started/changelog.html#v4-0 -For extension authors, there is a migration guide available to help you migrate your extensions to JupyterLab 4: https://jupyterlab.readthedocs.io/en/latest/extension/extension_migration.html#jupyterlab-3-x-to-4-x +For extension authors, there is a migration guide available to help you migrate your extensions to JupyterLab 4: https://jupyterlab.readthedocs.io/en/stable/extension/extension_migration.html#jupyterlab-3-x-to-4-x ______________________________________________________________________ @@ -3210,7 +3345,7 @@ No merged PRs ### Enhancements made -- Add a menu entry to show/hide hidden files in the filebrowser [#11206](https://github.com/jupyterlab/jupyterlab/pull/11206) ([@loichuder](https://github.com/loichuder)) - activation instructions: [see documentation](https://jupyterlab.readthedocs.io/en/latest/user/files.html#displaying-hidden-files) +- Add a menu entry to show/hide hidden files in the filebrowser [#11206](https://github.com/jupyterlab/jupyterlab/pull/11206) ([@loichuder](https://github.com/loichuder)) - activation instructions: [see documentation](https://jupyterlab.readthedocs.io/en/stable/user/files.html#displaying-hidden-files) - Restore Copy shareable link use of `shareUrl` [#11188](https://github.com/jupyterlab/jupyterlab/pull/11188) ([@fcollonval](https://github.com/fcollonval)) - Add Galata in JupyterLab [#11179](https://github.com/jupyterlab/jupyterlab/pull/11179) ([@fcollonval](https://github.com/fcollonval)) - Responsive Toolbar [#11178](https://github.com/jupyterlab/jupyterlab/pull/11178) ([@3coins](https://github.com/3coins)) @@ -3656,9 +3791,9 @@ No merged PRs - From JupyterLab 3.1, file documents and notebooks have collaborative editing using the [Yjs shared editing framework](https://github.com/yjs/yjs). Editors are not collaborative by default; to activate it, start JupyterLab - with the `--collaborative` flag. See full documentation on [collaboration](https://jupyterlab.readthedocs.io/en/latest/user/rtc.html). + with the `--collaborative` flag. See full documentation on [collaboration](https://jupyterlab.readthedocs.io/en/stable/user/rtc.html). - The undo/redo history in the notebook is now document-wide (tracking changes across all cells); the future verisions will enable restoring the previous behaviour of per-cell undo/redo. -- Table of Contents recieved multiple new features and settings described in the [user documentation](https://jupyterlab.readthedocs.io/en/latest/user/toc.html). +- Table of Contents recieved multiple new features and settings described in the [user documentation](https://jupyterlab.readthedocs.io/en/stable/user/toc.html). - The debugger recived many improvements, including basic support for evaluating code at a breakpoint, and for variable inspection. - The closing bracket is no longer automatically added by default; the old behaviour can be re-enabled from the menu bar (`Settings` -> `Auto Close Brackets`) or from the Advanced Settings Editor. - A new visual indicator was introduced to highlight cells in which the code changed in the editor since last execution: @@ -4279,21 +4414,21 @@ extensions does not require rebuilding JupyterLab and does not require having NodeJS installed. The previous way of distributing extensions as npm packages requiring rebuilding JupyterLab is still available as well. See the -[documentation](https://jupyterlab.readthedocs.io/en/latest/user/extensions.html#extensions) +[documentation](https://jupyterlab.readthedocs.io/en/stable/user/extensions.html#extensions) for more details. #### The JupyterLab interface supports multiple languages JupyterLab now provides the ability to set the display language of the user interface. See the -[documentation](https://jupyterlab.readthedocs.io/en/latest/user/language.html) +[documentation](https://jupyterlab.readthedocs.io/en/stable/user/language.html) for more details. #### A new visual debugger JupyterLab now ships with a debugger front-end by default, available for kernels that support the new debugging protocol. See the -[documentation](https://jupyterlab.readthedocs.io/en/latest/user/debugger.html) +[documentation](https://jupyterlab.readthedocs.io/en/stable/user/debugger.html) for more details. #### Improvements to Simple Interface mode and Mobile diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 51ee26aabc0f..a389d39bd1ce 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -4,5 +4,5 @@ If you're reading this section, you're probably interested in contributing to JupyterLab. Welcome and thanks for your interest in contributing! Please take a look at Contributing to Jupyterlab on -[Read the Docs](https://jupyterlab.readthedocs.io/en/latest/developer/contributing.html) or +[Read the Docs](https://jupyterlab.readthedocs.io/en/stable/developer/contributing.html) or [Repo docs](docs/source/developer/contributing.rst) (for the latest). diff --git a/README.md b/README.md index 706cf560a7f7..dba46105ddc2 100644 --- a/README.md +++ b/README.md @@ -34,7 +34,7 @@ via [PyPI](https://pypi.org/search/?q=jupyterlab&o=-created&c=Framework+%3A%3A+J conda, and other package managers. The _source_ extensions can be installed directly from npm (search for [jupyterlab-extension](https://www.npmjs.com/search?q=keywords:jupyterlab-extension)) but require an additional build step. You can also find JupyterLab extensions exploring GitHub topic [jupyterlab-extension](https://github.com/topics/jupyterlab-extension). -To learn more about extensions, see the [user documentation](https://jupyterlab.readthedocs.io/en/latest/user/extensions.html). +To learn more about extensions, see the [user documentation](https://jupyterlab.readthedocs.io/en/stable/user/extensions.html). Read the current JupyterLab documentation on [ReadTheDocs](http://jupyterlab.readthedocs.io/en/stable/). @@ -60,7 +60,7 @@ If you use [conda](https://docs.conda.io/en/latest/), [mamba](https://mamba.read ``` If installing using `pip install --user`, you must add the user-level `bin` directory to your `PATH` environment variable in order to launch `jupyter lab`. If you are using a Unix derivative (e.g., FreeBSD, GNU/Linux, macOS), you can do this by running `export PATH="$HOME/.local/bin:$PATH"`. If you are using a macOS version that comes with Python 2, run `pip3` instead of `pip`. -For more detailed instructions, consult the [installation guide](http://jupyterlab.readthedocs.io/en/latest/getting_started/installation.html). Project installation instructions from the git sources are available in the [contributor documentation](CONTRIBUTING.md). +For more detailed instructions, consult the [installation guide](http://jupyterlab.readthedocs.io/en/stable/getting_started/installation.html). Project installation instructions from the git sources are available in the [contributor documentation](CONTRIBUTING.md). #### Installing with Previous Versions of Jupyter Notebook @@ -78,7 +78,7 @@ Start up JupyterLab using: jupyter lab ``` -JupyterLab will open automatically in the browser. See the [documentation](http://jupyterlab.readthedocs.io/en/latest/getting_started/starting.html) for additional details. +JupyterLab will open automatically in the browser. See the [documentation](http://jupyterlab.readthedocs.io/en/stable/getting_started/starting.html) for additional details. If you encounter an error like "Command 'jupyter' not found", please make sure `PATH` environment variable is set correctly. Alternatively, you can start up JupyterLab using `~/.local/bin/jupyter lab` without changing the `PATH` environment variable. @@ -90,7 +90,7 @@ The latest versions of the following browsers are currently _known to work_: - Chrome - Safari -See our [documentation](http://jupyterlab.readthedocs.io/en/latest/getting_started/installation.html) for additional details. +See our [documentation](http://jupyterlab.readthedocs.io/en/stable/getting_started/installation.html) for additional details. --- @@ -100,7 +100,7 @@ We encourage you to ask questions on the [Discourse forum](https://discourse.jup ### Bug report -To report a bug please read the [guidelines](https://jupyterlab.readthedocs.io/en/latest/getting_started/issue.html) and then open a [Github issue](https://github.com/jupyterlab/jupyterlab/issues/new?labels=bug%2C+status%3ANeeds+Triage&template=bug_report.md). To keep resolved issues self-contained, the [lock bot](https://github.com/apps/lock) will lock closed issues as resolved after a period of inactivity. If a related discussion is still needed after an issue is locked, please open a new issue and reference the old issue. +To report a bug please read the [guidelines](https://jupyterlab.readthedocs.io/en/stable/getting_started/issue.html) and then open a [Github issue](https://github.com/jupyterlab/jupyterlab/issues/new?labels=bug%2C+status%3ANeeds+Triage&template=bug_report.md). To keep resolved issues self-contained, the [lock bot](https://github.com/apps/lock) will lock closed issues as resolved after a period of inactivity. If a related discussion is still needed after an issue is locked, please open a new issue and reference the old issue. ### Feature request @@ -112,37 +112,37 @@ We also welcome suggestions for new features as they help make the project more ### Extending JupyterLab -To start developing an extension for JupyterLab, see the [developer documentation](https://jupyterlab.readthedocs.io/en/latest/extension/extension_dev.html) and the [API docs](https://jupyterlab.readthedocs.io/en/latest/api/). +To start developing an extension for JupyterLab, see the [developer documentation](https://jupyterlab.readthedocs.io/en/stable/extension/extension_dev.html) and the [API docs](https://jupyterlab.readthedocs.io/en/stable/api/). ### Contributing -To contribute code or documentation to JupyterLab itself, please read the [contributor documentation](https://jupyterlab.readthedocs.io/en/latest/developer/contributing.html). +To contribute code or documentation to JupyterLab itself, please read the [contributor documentation](https://jupyterlab.readthedocs.io/en/stable/developer/contributing.html). JupyterLab follows the Jupyter [Community Guides](https://jupyter.readthedocs.io/en/latest/community/content-community.html). ### License JupyterLab uses a shared copyright model that enables all contributors to maintain the -copyright on their contributions. All code is licensed under the terms of the revised [BSD license](https://github.com/jupyterlab/jupyterlab/blob/main/LICENSE). +copyright on their contributions. All code is licensed under the terms of the revised [BSD license](https://github.com/jupyterlab/jupyterlab/blob/4.1.x/LICENSE). ### Team -JupyterLab is part of [Project Jupyter](http://jupyter.org/) and is developed by an open community. The maintenance team is assisted by a much larger group of contributors to JupyterLab and Project Jupyter as a whole. +JupyterLab is part of [Project Jupyter](https://jupyter.org/) and is developed by an open community. The maintenance team is assisted by a much larger group of contributors to JupyterLab and Project Jupyter as a whole. JupyterLab's current maintainers are listed in alphabetical order, with affiliation, and main areas of contribution: - Mehmet Bektas, Netflix (general development, extensions). - Alex Bozarth, IBM (general development, extensions). - Eric Charles, Datalayer, (general development, extensions). -- Frédéric Collonval, QuantStack (general development, extensions). -- Martha Cryan, IBM (general development, extensions). +- Frédéric Collonval, WebScIT (general development, extensions). +- Martha Cryan, Mito (general development, extensions). - Afshin Darian, QuantStack (co-creator, application/high-level architecture, prolific contributions throughout the code base). - Vidar T. Fauske, JPMorgan Chase (general development, extensions). - Brian Granger, AWS (co-creator, strategy, vision, management, UI/UX design, architecture). - Jason Grout, Databricks (co-creator, vision, general development). -- Michał Krassowski, University of Oxford (general development, extensions). +- Michał Krassowski, Quansight (general development, extensions). - Max Klein, JPMorgan Chase (UI Package, build system, general development, extensions). - Gonzalo Peña-Castellanos, QuanSight (general development, i18n, extensions). - Fernando Perez, UC Berkeley (co-creator, vision). diff --git a/RELEASE.md b/RELEASE.md index 4bd657faf5a8..f81148dcd5f6 100644 --- a/RELEASE.md +++ b/RELEASE.md @@ -262,9 +262,9 @@ These lines: - [ ] https://github.com/jupyterlab/jupyter-renderers - [ ] Publish a release (with a **updated tag**) to the [extension template](https://github.com/jupyterlab/extension-template/releases) with the new JupyterLab version - [ ] Update the extension examples: - - [ ] [Notebook toolbar button](https://github.com/jupyterlab/jupyterlab/blob/main/docs/source/extension/notebook.rst#adding-a-button-to-the-toolbar) - - [ ] [Notebook widget](https://github.com/jupyterlab/jupyterlab/blob/main/docs/source/extension/notebook.rst#adding-a-widget-to-the-notebook-header) -- [ ] Update the [extension tutorial](https://github.com/jupyterlab/jupyterlab/blob/main/RELEASE.md#updating-the-extension-tutorial) + - [ ] [Notebook toolbar button](https://github.com/jupyterlab/jupyterlab/blob/4.1.x/docs/source/extension/notebook.rst#adding-a-button-to-the-toolbar) + - [ ] [Notebook widget](https://github.com/jupyterlab/jupyterlab/blob/4.1.x/docs/source/extension/notebook.rst#adding-a-widget-to-the-notebook-header) +- [ ] Update the [extension tutorial](https://github.com/jupyterlab/jupyterlab/blob/4.1.x/RELEASE.md#updating-the-extension-tutorial) - [ ] At this point, there may have been some more commits merged. Run `python scripts/milestone_check.py` to check the issues assigned to this milestone one more time. Update changelog if necessary. Now do the actual final release: @@ -276,7 +276,7 @@ Now do the actual final release: - [ ] Update the API [docs](#updating-api-docs) - [ ] Merge the PRs on the other repos and set the default branch of the xckd repo -- [ ] Publish to [conda-forge](https://github.com/jupyterlab/jupyterlab/blob/main/RELEASE.md#publishing-to-conda-forge). +- [ ] Publish to [conda-forge](https://github.com/jupyterlab/jupyterlab/blob/4.1.x/RELEASE.md#publishing-to-conda-forge). After a few days (to allow for possible patch releases), set up development for the next release: @@ -285,7 +285,7 @@ the next release: - [ ] Put the commit and tags to main - [ ] Run `npm run publish:all` to publish the packages - [ ] Release the other repos as appropriate -- [ ] Update version for [binder](https://github.com/jupyterlab/jupyterlab/blob/main/RELEASE.md#update-version-for-binder) +- [ ] Update version for [binder](https://github.com/jupyterlab/jupyterlab/blob/4.1.x/RELEASE.md#update-version-for-binder) ### Updating the extension tutorial @@ -425,7 +425,7 @@ frozen and non-frozen version of the files. - Create a new branch from the previous release branch - Use a ".x" in the branch name so we can continue to use it for patches -- Update branch and RTD config in `ensure_repo.ts` and run `jlpm integrity` to update links - source should be the previous release branch +- Update branch and RTD config in `buildutils/src/ensure-repo.ts` and run `jlpm integrity` to update links - source should be the previous release branch - Update readthedocs branch config as appropriate - Automated Release using "minor" - edit changelog for new section - Move through alpha and beta phases as appropriate @@ -452,7 +452,7 @@ frozen and non-frozen version of the files. ### Alpha and Beta Phase -- Update branch and RTD config in `ensure_repo.ts` and `jlpm integrity` to update links - source should be the previous branch +- Update branch and RTD config in `buildutils/src/ensure-repo.ts` and `jlpm integrity` to update links - source should be the previous branch - Update readthedocs branch config as appropriate - Automated Release using "major" - edit changelog for new section - Move through alpha and beta phases as appropriate @@ -478,3 +478,4 @@ new issues show up in the future: - HTTP Error 502: Bad Gateway (JupyterLab `4.0.0a23`): https://github.com/jupyterlab/jupyterlab/issues/12324 - Degraded performance of npm publish (JupyterLab `4.0.0b2`): https://github.com/jupyterlab/jupyterlab/issues/14431 - Wrong URLs break publishing to npm with provenance: https://github.com/jupyterlab/jupyterlab/pull/15462 +- Release team missing privileges on packages removed in 4.0: https://github.com/jupyterlab/jupyterlab/issues/15677 diff --git a/binder/environment.yml b/binder/environment.yml index cb2fece7bb44..db7b66dc8a4e 100644 --- a/binder/environment.yml +++ b/binder/environment.yml @@ -55,11 +55,5 @@ dependencies: - xeus-python # extra conda stuff - jsonschema-with-format-nongpl - # jupyter-collaboration 1.2.0 - - jupyter_ydoc >=1.0.1,<2.0.0 - - ypy-websocket >=0.12.1,<0.13.0 + - jupyter-collaboration >= 2.0.1 - jupyter_events >=0.7.0 - - jupyter_server_fileid >=0.7.0,<1 - - pip: - # can't be installed with `conda` in binder, due to `jupyterlab-link-share`` - - jupyter-collaboration ==1.2.0 diff --git a/builder/package.json b/builder/package.json index 5915cfe4908e..72d207261efd 100644 --- a/builder/package.json +++ b/builder/package.json @@ -1,6 +1,6 @@ { "name": "@jupyterlab/builder", - "version": "4.1.0", + "version": "4.1.5", "description": "JupyterLab - Extension Builder", "homepage": "https://github.com/jupyterlab/jupyterlab", "bugs": { diff --git a/buildutils/package.json b/buildutils/package.json index 06774819316c..be6ef0f49782 100644 --- a/buildutils/package.json +++ b/buildutils/package.json @@ -1,6 +1,6 @@ { "name": "@jupyterlab/buildutils", - "version": "4.1.0", + "version": "4.1.5", "description": "JupyterLab - Build Utilities", "homepage": "https://github.com/jupyterlab/jupyterlab", "bugs": { diff --git a/buildutils/src/clean-packages.ts b/buildutils/src/clean-packages.ts index 026f927c9389..d5927b0621e0 100644 --- a/buildutils/src/clean-packages.ts +++ b/buildutils/src/clean-packages.ts @@ -13,7 +13,7 @@ exitOnUncaughtException(); // Get all of the packages. const basePath = path.resolve('.'); const baseConfig = readJSONFile(path.join(basePath, 'package.json')); -const packageConfig = baseConfig.workspaces.packages; +const packageConfig = baseConfig.workspaces.packages ?? baseConfig.workspaces; const skipSource = process.argv.indexOf('packages') === -1; const skipExamples = process.argv.indexOf('examples') === -1; diff --git a/buildutils/src/ensure-repo.ts b/buildutils/src/ensure-repo.ts index 73238e2a704c..db74d48b1ea5 100644 --- a/buildutils/src/ensure-repo.ts +++ b/buildutils/src/ensure-repo.ts @@ -36,8 +36,8 @@ type CoreData = Map; // All other release branches should target a specific named version const URL_CONFIG = { source: 'main', - target: 'main', - rtdVersion: 'latest' + target: '4.1.x', + rtdVersion: 'stable' }; // Data to ignore. diff --git a/buildutils/template/package.json b/buildutils/template/package.json index 5c24e2410671..ad4993093698 100644 --- a/buildutils/template/package.json +++ b/buildutils/template/package.json @@ -1,6 +1,6 @@ { "name": "@jupyterlab/template", - "version": "4.1.0", + "version": "4.1.5", "description": "JupyterLab - Package Template", "homepage": "https://github.com/jupyterlab/jupyterlab", "bugs": { @@ -37,7 +37,7 @@ "watch": "tsc -b --watch" }, "devDependencies": { - "@jupyterlab/testing": "^4.1.0", + "@jupyterlab/testing": "^4.1.5", "@types/jest": "^29.2.0", "rimraf": "~5.0.5", "typescript": "~5.1.6" diff --git a/dev_mode/package.json b/dev_mode/package.json index 7f6a42a305ca..813a3deb6753 100644 --- a/dev_mode/package.json +++ b/dev_mode/package.json @@ -1,6 +1,6 @@ { "name": "@jupyterlab/application-top", - "version": "4.1.0", + "version": "4.1.5", "private": true, "license": "BSD-3-Clause", "scripts": { @@ -23,101 +23,101 @@ "@jupyter/react-components": "~0.13.3", "@jupyter/web-components": "~0.13.3", "@jupyter/ydoc": "~1.1.1", - "@jupyterlab/application": "~4.1.0", - "@jupyterlab/application-extension": "~4.1.0", - "@jupyterlab/apputils": "~4.2.0", - "@jupyterlab/apputils-extension": "~4.1.0", - "@jupyterlab/attachments": "~4.1.0", - "@jupyterlab/cell-toolbar": "~4.1.0", - "@jupyterlab/cell-toolbar-extension": "~4.1.0", - "@jupyterlab/cells": "~4.1.0", - "@jupyterlab/celltags-extension": "~4.1.0", - "@jupyterlab/codeeditor": "~4.1.0", - "@jupyterlab/codemirror": "~4.1.0", - "@jupyterlab/codemirror-extension": "~4.1.0", - "@jupyterlab/completer": "~4.1.0", - "@jupyterlab/completer-extension": "~4.1.0", - "@jupyterlab/console": "~4.1.0", - "@jupyterlab/console-extension": "~4.1.0", - "@jupyterlab/coreutils": "~6.1.0", - "@jupyterlab/csvviewer": "~4.1.0", - "@jupyterlab/csvviewer-extension": "~4.1.0", - "@jupyterlab/debugger": "~4.1.0", - "@jupyterlab/debugger-extension": "~4.1.0", - "@jupyterlab/docmanager": "~4.1.0", - "@jupyterlab/docmanager-extension": "~4.1.0", - "@jupyterlab/docregistry": "~4.1.0", - "@jupyterlab/documentsearch": "~4.1.0", - "@jupyterlab/documentsearch-extension": "~4.1.0", - "@jupyterlab/extensionmanager": "~4.1.0", - "@jupyterlab/extensionmanager-extension": "~4.1.0", - "@jupyterlab/filebrowser": "~4.1.0", - "@jupyterlab/filebrowser-extension": "~4.1.0", - "@jupyterlab/fileeditor": "~4.1.0", - "@jupyterlab/fileeditor-extension": "~4.1.0", - "@jupyterlab/help-extension": "~4.1.0", - "@jupyterlab/htmlviewer": "~4.1.0", - "@jupyterlab/htmlviewer-extension": "~4.1.0", - "@jupyterlab/hub-extension": "~4.1.0", - "@jupyterlab/imageviewer": "~4.1.0", - "@jupyterlab/imageviewer-extension": "~4.1.0", - "@jupyterlab/inspector": "~4.1.0", - "@jupyterlab/inspector-extension": "~4.1.0", - "@jupyterlab/javascript-extension": "~4.1.0", - "@jupyterlab/json-extension": "~4.1.0", - "@jupyterlab/launcher": "~4.1.0", - "@jupyterlab/launcher-extension": "~4.1.0", - "@jupyterlab/logconsole": "~4.1.0", - "@jupyterlab/logconsole-extension": "~4.1.0", - "@jupyterlab/lsp": "~4.1.0", - "@jupyterlab/lsp-extension": "~4.1.0", - "@jupyterlab/mainmenu": "~4.1.0", - "@jupyterlab/mainmenu-extension": "~4.1.0", - "@jupyterlab/markdownviewer": "~4.1.0", - "@jupyterlab/markdownviewer-extension": "~4.1.0", - "@jupyterlab/markedparser-extension": "~4.1.0", - "@jupyterlab/mathjax-extension": "~4.1.0", - "@jupyterlab/mermaid": "~4.1.0", - "@jupyterlab/mermaid-extension": "~4.1.0", - "@jupyterlab/metadataform": "~4.1.0", - "@jupyterlab/metadataform-extension": "~4.1.0", - "@jupyterlab/metapackage": "~4.1.0", - "@jupyterlab/nbconvert-css": "~4.1.0", - "@jupyterlab/nbformat": "~4.1.0", - "@jupyterlab/notebook": "~4.1.0", - "@jupyterlab/notebook-extension": "~4.1.0", - "@jupyterlab/observables": "~5.1.0", - "@jupyterlab/outputarea": "~4.1.0", - "@jupyterlab/pdf-extension": "~4.1.0", - "@jupyterlab/pluginmanager": "~4.1.0", - "@jupyterlab/pluginmanager-extension": "~4.1.0", - "@jupyterlab/property-inspector": "~4.1.0", - "@jupyterlab/rendermime": "~4.1.0", - "@jupyterlab/rendermime-extension": "~4.1.0", - "@jupyterlab/rendermime-interfaces": "~3.9.0", - "@jupyterlab/running": "~4.1.0", - "@jupyterlab/running-extension": "~4.1.0", + "@jupyterlab/application": "~4.1.5", + "@jupyterlab/application-extension": "~4.1.5", + "@jupyterlab/apputils": "~4.2.5", + "@jupyterlab/apputils-extension": "~4.1.5", + "@jupyterlab/attachments": "~4.1.5", + "@jupyterlab/cell-toolbar": "~4.1.5", + "@jupyterlab/cell-toolbar-extension": "~4.1.5", + "@jupyterlab/cells": "~4.1.5", + "@jupyterlab/celltags-extension": "~4.1.5", + "@jupyterlab/codeeditor": "~4.1.5", + "@jupyterlab/codemirror": "~4.1.5", + "@jupyterlab/codemirror-extension": "~4.1.5", + "@jupyterlab/completer": "~4.1.5", + "@jupyterlab/completer-extension": "~4.1.5", + "@jupyterlab/console": "~4.1.5", + "@jupyterlab/console-extension": "~4.1.5", + "@jupyterlab/coreutils": "~6.1.5", + "@jupyterlab/csvviewer": "~4.1.5", + "@jupyterlab/csvviewer-extension": "~4.1.5", + "@jupyterlab/debugger": "~4.1.5", + "@jupyterlab/debugger-extension": "~4.1.5", + "@jupyterlab/docmanager": "~4.1.5", + "@jupyterlab/docmanager-extension": "~4.1.5", + "@jupyterlab/docregistry": "~4.1.5", + "@jupyterlab/documentsearch": "~4.1.5", + "@jupyterlab/documentsearch-extension": "~4.1.5", + "@jupyterlab/extensionmanager": "~4.1.5", + "@jupyterlab/extensionmanager-extension": "~4.1.5", + "@jupyterlab/filebrowser": "~4.1.5", + "@jupyterlab/filebrowser-extension": "~4.1.5", + "@jupyterlab/fileeditor": "~4.1.5", + "@jupyterlab/fileeditor-extension": "~4.1.5", + "@jupyterlab/help-extension": "~4.1.5", + "@jupyterlab/htmlviewer": "~4.1.5", + "@jupyterlab/htmlviewer-extension": "~4.1.5", + "@jupyterlab/hub-extension": "~4.1.5", + "@jupyterlab/imageviewer": "~4.1.5", + "@jupyterlab/imageviewer-extension": "~4.1.5", + "@jupyterlab/inspector": "~4.1.5", + "@jupyterlab/inspector-extension": "~4.1.5", + "@jupyterlab/javascript-extension": "~4.1.5", + "@jupyterlab/json-extension": "~4.1.5", + "@jupyterlab/launcher": "~4.1.5", + "@jupyterlab/launcher-extension": "~4.1.5", + "@jupyterlab/logconsole": "~4.1.5", + "@jupyterlab/logconsole-extension": "~4.1.5", + "@jupyterlab/lsp": "~4.1.5", + "@jupyterlab/lsp-extension": "~4.1.5", + "@jupyterlab/mainmenu": "~4.1.5", + "@jupyterlab/mainmenu-extension": "~4.1.5", + "@jupyterlab/markdownviewer": "~4.1.5", + "@jupyterlab/markdownviewer-extension": "~4.1.5", + "@jupyterlab/markedparser-extension": "~4.1.5", + "@jupyterlab/mathjax-extension": "~4.1.5", + "@jupyterlab/mermaid": "~4.1.5", + "@jupyterlab/mermaid-extension": "~4.1.5", + "@jupyterlab/metadataform": "~4.1.5", + "@jupyterlab/metadataform-extension": "~4.1.5", + "@jupyterlab/metapackage": "~4.1.5", + "@jupyterlab/nbconvert-css": "~4.1.5", + "@jupyterlab/nbformat": "~4.1.5", + "@jupyterlab/notebook": "~4.1.5", + "@jupyterlab/notebook-extension": "~4.1.5", + "@jupyterlab/observables": "~5.1.5", + "@jupyterlab/outputarea": "~4.1.5", + "@jupyterlab/pdf-extension": "~4.1.5", + "@jupyterlab/pluginmanager": "~4.1.5", + "@jupyterlab/pluginmanager-extension": "~4.1.5", + "@jupyterlab/property-inspector": "~4.1.5", + "@jupyterlab/rendermime": "~4.1.5", + "@jupyterlab/rendermime-extension": "~4.1.5", + "@jupyterlab/rendermime-interfaces": "~3.9.5", + "@jupyterlab/running": "~4.1.5", + "@jupyterlab/running-extension": "~4.1.5", "@jupyterlab/services": "../packages/services", - "@jupyterlab/settingeditor": "~4.1.0", - "@jupyterlab/settingeditor-extension": "~4.1.0", - "@jupyterlab/settingregistry": "~4.1.0", - "@jupyterlab/shortcuts-extension": "~4.1.0", - "@jupyterlab/statedb": "~4.1.0", - "@jupyterlab/statusbar": "~4.1.0", - "@jupyterlab/statusbar-extension": "~4.1.0", - "@jupyterlab/terminal": "~4.1.0", - "@jupyterlab/terminal-extension": "~4.1.0", - "@jupyterlab/theme-dark-extension": "~4.1.0", - "@jupyterlab/theme-light-extension": "~4.1.0", - "@jupyterlab/toc": "~6.1.0", - "@jupyterlab/toc-extension": "~6.1.0", - "@jupyterlab/tooltip": "~4.1.0", - "@jupyterlab/tooltip-extension": "~4.1.0", - "@jupyterlab/translation": "~4.1.0", - "@jupyterlab/translation-extension": "~4.1.0", - "@jupyterlab/ui-components": "~4.1.0", - "@jupyterlab/ui-components-extension": "~4.1.0", - "@jupyterlab/vega5-extension": "~4.1.0", + "@jupyterlab/settingeditor": "~4.1.5", + "@jupyterlab/settingeditor-extension": "~4.1.5", + "@jupyterlab/settingregistry": "~4.1.5", + "@jupyterlab/shortcuts-extension": "~4.1.5", + "@jupyterlab/statedb": "~4.1.5", + "@jupyterlab/statusbar": "~4.1.5", + "@jupyterlab/statusbar-extension": "~4.1.5", + "@jupyterlab/terminal": "~4.1.5", + "@jupyterlab/terminal-extension": "~4.1.5", + "@jupyterlab/theme-dark-extension": "~4.1.5", + "@jupyterlab/theme-light-extension": "~4.1.5", + "@jupyterlab/toc": "~6.1.5", + "@jupyterlab/toc-extension": "~6.1.5", + "@jupyterlab/tooltip": "~4.1.5", + "@jupyterlab/tooltip-extension": "~4.1.5", + "@jupyterlab/translation": "~4.1.5", + "@jupyterlab/translation-extension": "~4.1.5", + "@jupyterlab/ui-components": "~4.1.5", + "@jupyterlab/ui-components-extension": "~4.1.5", + "@jupyterlab/vega5-extension": "~4.1.5", "@lezer/common": "^1.0.0", "@lezer/highlight": "^1.0.0", "@lumino/algorithm": "^2.0.0", @@ -142,58 +142,58 @@ "yjs": "^13.5.40" }, "dependencies": { - "@jupyterlab/application": "~4.1.0", - "@jupyterlab/application-extension": "~4.1.0", - "@jupyterlab/apputils-extension": "~4.1.0", - "@jupyterlab/cell-toolbar-extension": "~4.1.0", - "@jupyterlab/celltags-extension": "~4.1.0", - "@jupyterlab/codemirror-extension": "~4.1.0", - "@jupyterlab/completer-extension": "~4.1.0", - "@jupyterlab/console-extension": "~4.1.0", - "@jupyterlab/coreutils": "~6.1.0", - "@jupyterlab/csvviewer-extension": "~4.1.0", - "@jupyterlab/debugger-extension": "~4.1.0", - "@jupyterlab/docmanager-extension": "~4.1.0", - "@jupyterlab/documentsearch-extension": "~4.1.0", - "@jupyterlab/extensionmanager-extension": "~4.1.0", - "@jupyterlab/filebrowser-extension": "~4.1.0", - "@jupyterlab/fileeditor-extension": "~4.1.0", - "@jupyterlab/help-extension": "~4.1.0", - "@jupyterlab/htmlviewer-extension": "~4.1.0", - "@jupyterlab/hub-extension": "~4.1.0", - "@jupyterlab/imageviewer-extension": "~4.1.0", - "@jupyterlab/inspector-extension": "~4.1.0", - "@jupyterlab/javascript-extension": "~4.1.0", - "@jupyterlab/json-extension": "~4.1.0", - "@jupyterlab/launcher-extension": "~4.1.0", - "@jupyterlab/logconsole-extension": "~4.1.0", - "@jupyterlab/lsp-extension": "~4.1.0", - "@jupyterlab/mainmenu-extension": "~4.1.0", - "@jupyterlab/markdownviewer-extension": "~4.1.0", - "@jupyterlab/markedparser-extension": "~4.1.0", - "@jupyterlab/mathjax-extension": "~4.1.0", - "@jupyterlab/mermaid-extension": "~4.1.0", - "@jupyterlab/metadataform-extension": "~4.1.0", - "@jupyterlab/notebook-extension": "~4.1.0", - "@jupyterlab/pdf-extension": "~4.1.0", - "@jupyterlab/pluginmanager-extension": "~4.1.0", - "@jupyterlab/rendermime-extension": "~4.1.0", - "@jupyterlab/running-extension": "~4.1.0", - "@jupyterlab/settingeditor-extension": "~4.1.0", - "@jupyterlab/shortcuts-extension": "~4.1.0", - "@jupyterlab/statusbar-extension": "~4.1.0", - "@jupyterlab/terminal-extension": "~4.1.0", - "@jupyterlab/theme-dark-extension": "~4.1.0", - "@jupyterlab/theme-light-extension": "~4.1.0", - "@jupyterlab/toc-extension": "~6.1.0", - "@jupyterlab/tooltip-extension": "~4.1.0", - "@jupyterlab/translation-extension": "~4.1.0", - "@jupyterlab/ui-components-extension": "~4.1.0", - "@jupyterlab/vega5-extension": "~4.1.0" + "@jupyterlab/application": "~4.1.5", + "@jupyterlab/application-extension": "~4.1.5", + "@jupyterlab/apputils-extension": "~4.1.5", + "@jupyterlab/cell-toolbar-extension": "~4.1.5", + "@jupyterlab/celltags-extension": "~4.1.5", + "@jupyterlab/codemirror-extension": "~4.1.5", + "@jupyterlab/completer-extension": "~4.1.5", + "@jupyterlab/console-extension": "~4.1.5", + "@jupyterlab/coreutils": "~6.1.5", + "@jupyterlab/csvviewer-extension": "~4.1.5", + "@jupyterlab/debugger-extension": "~4.1.5", + "@jupyterlab/docmanager-extension": "~4.1.5", + "@jupyterlab/documentsearch-extension": "~4.1.5", + "@jupyterlab/extensionmanager-extension": "~4.1.5", + "@jupyterlab/filebrowser-extension": "~4.1.5", + "@jupyterlab/fileeditor-extension": "~4.1.5", + "@jupyterlab/help-extension": "~4.1.5", + "@jupyterlab/htmlviewer-extension": "~4.1.5", + "@jupyterlab/hub-extension": "~4.1.5", + "@jupyterlab/imageviewer-extension": "~4.1.5", + "@jupyterlab/inspector-extension": "~4.1.5", + "@jupyterlab/javascript-extension": "~4.1.5", + "@jupyterlab/json-extension": "~4.1.5", + "@jupyterlab/launcher-extension": "~4.1.5", + "@jupyterlab/logconsole-extension": "~4.1.5", + "@jupyterlab/lsp-extension": "~4.1.5", + "@jupyterlab/mainmenu-extension": "~4.1.5", + "@jupyterlab/markdownviewer-extension": "~4.1.5", + "@jupyterlab/markedparser-extension": "~4.1.5", + "@jupyterlab/mathjax-extension": "~4.1.5", + "@jupyterlab/mermaid-extension": "~4.1.5", + "@jupyterlab/metadataform-extension": "~4.1.5", + "@jupyterlab/notebook-extension": "~4.1.5", + "@jupyterlab/pdf-extension": "~4.1.5", + "@jupyterlab/pluginmanager-extension": "~4.1.5", + "@jupyterlab/rendermime-extension": "~4.1.5", + "@jupyterlab/running-extension": "~4.1.5", + "@jupyterlab/settingeditor-extension": "~4.1.5", + "@jupyterlab/shortcuts-extension": "~4.1.5", + "@jupyterlab/statusbar-extension": "~4.1.5", + "@jupyterlab/terminal-extension": "~4.1.5", + "@jupyterlab/theme-dark-extension": "~4.1.5", + "@jupyterlab/theme-light-extension": "~4.1.5", + "@jupyterlab/toc-extension": "~6.1.5", + "@jupyterlab/tooltip-extension": "~4.1.5", + "@jupyterlab/translation-extension": "~4.1.5", + "@jupyterlab/ui-components-extension": "~4.1.5", + "@jupyterlab/vega5-extension": "~4.1.5" }, "devDependencies": { - "@jupyterlab/builder": "^4.1.0", - "@jupyterlab/buildutils": "^4.1.0", + "@jupyterlab/builder": "^4.1.5", + "@jupyterlab/buildutils": "^4.1.5", "chokidar": "^3.4.0", "css-loader": "^6.7.1", "duplicate-package-checker-webpack-plugin": "^3.0.0", @@ -222,7 +222,7 @@ }, "jupyterlab": { "name": "JupyterLab", - "version": "4.1.0", + "version": "4.1.5", "extensions": { "@jupyterlab/application-extension": "", "@jupyterlab/apputils-extension": "", diff --git a/docker/Dockerfile b/docker/Dockerfile index 1cb5eef04b93..766c7d045e5d 100644 --- a/docker/Dockerfile +++ b/docker/Dockerfile @@ -1,41 +1,40 @@ # Copyright (c) Jupyter Development Team. # Distributed under the terms of the Modified BSD License. -FROM mambaorg/micromamba:latest +FROM --platform=linux/amd64 mambaorg/micromamba:1.5.5-jammy # Create new user ARG NEW_MAMBA_USER_ID=57440 ARG NEW_MAMBA_USER_GID=57440 -ARG NEW_MAMBA_USER=labdev + USER root RUN if grep -q '^ID=alpine$' /etc/os-release; then \ - # alpine does not have usermod/groupmod - apk add --no-cache --virtual temp-packages shadow=4.13-r0; \ - fi && \ - usermod "--login=${NEW_MAMBA_USER}" "--home=/home/${NEW_MAMBA_USER}" \ - --move-home "-u ${NEW_MAMBA_USER_ID}" "${MAMBA_USER}" && \ - groupmod "--new-name=${NEW_MAMBA_USER}" \ - "-g ${NEW_MAMBA_USER_GID}" "${MAMBA_USER}" && \ - if grep -q '^ID=alpine$' /etc/os-release; then \ - # remove the packages that were only needed for usermod/groupmod - apk del temp-packages; \ - fi && \ - # Update the expected value of MAMBA_USER for the - # _entrypoint.sh consistency check. - echo "${NEW_MAMBA_USER}" > "/etc/arg_mamba_user" && \ - : -ENV MAMBA_USER=$NEW_MAMBA_USER + # alpine does not have usermod/groupmod + apk add --no-cache --virtual temp-packages shadow=4.13-r0; \ + fi +RUN if [ "$(id ${MAMBA_USER} -u)" != "$NEW_MAMBA_USER_ID" ]; then \ + usermod "-u ${NEW_MAMBA_USER_ID}" "${MAMBA_USER}"; \ + fi +RUN if [ "$(id ${MAMBA_USER} -g)" != "$NEW_MAMBA_USER_GID" ]; then \ + groupmod -o -g ${NEW_MAMBA_USER_GID} ${MAMBA_USER} && \ + usermod -g ${NEW_MAMBA_USER_GID} ${MAMBA_USER}; \ + fi +RUN if grep -q '^ID=alpine$' /etc/os-release; then \ + # remove the packages that were only needed for usermod/groupmod + apk del temp-packages; \ + fi + USER $MAMBA_USER WORKDIR /home/$MAMBA_USER/jupyterlab_cache -COPY --chown=$MAMBA_USER:$MAMBA_USER ../binder/environment.yml ./binder/environment.yml +COPY --chown=$MAMBA_USER:$MAMBA_USER docker/environment.yml ./docker/environment.yml -RUN micromamba install -n base -c conda-forge git rsync -y && micromamba install -y -n base -f ./binder/environment.yml && micromamba clean --all --yes +RUN micromamba install -n base -c conda-forge git rsync -y && micromamba install -y -n base -f ./docker/environment.yml && micromamba clean --all --yes -COPY --chown=$MAMBA_USER:$MAMBA_USER .. . +COPY --chown=$MAMBA_USER:$MAMBA_USER . . RUN micromamba run jlpm install diff --git a/docker/environment.yml b/docker/environment.yml new file mode 100644 index 000000000000..543e566069d4 --- /dev/null +++ b/docker/environment.yml @@ -0,0 +1,17 @@ +name: base + +channels: + - conda-forge + - nodefaults + +dependencies: + # runtimes + - nodejs ==20.1 + - python =3.11 + # package managers + - pip + - yarn >=3,<4 + # build + - hatch-jupyter-builder >=0.3.2 + - hatchling >=1.5.0 + - jupyterlab >=4,<5 diff --git a/docker/start.sh b/docker/start.sh index edaeb49cce6d..ab571f93f22f 100644 --- a/docker/start.sh +++ b/docker/start.sh @@ -8,8 +8,9 @@ set -o pipefail SCRIPT_DIR=$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd ) ROOT_DIR=$(dirname $SCRIPT_DIR) -DEV_USER="labdev" +DEV_USER="mambauser" GID=$(id -g) +USER_ID=$(id -u) RSYNC_CMD="rsync -ar /home/$DEV_USER/jupyterlab_cache/node_modules/. /home/$DEV_USER/jupyterlab/node_modules" CMD=$1 # possible command: build, clean, dev, shell @@ -34,7 +35,7 @@ IMAGE_TAG="jupyterlab_dev:$ROOT_DIR_MD5" DEV_CONTAINER="jupyterlab_dev_container_$ROOT_DIR_MD5" build_image () { - docker build --build-arg NEW_MAMBA_USER_ID=$UID --build-arg NEW_MAMBA_USER_GID=$GID $ROOT_DIR -f $SCRIPT_DIR/Dockerfile -t $IMAGE_TAG + docker build --build-arg NEW_MAMBA_USER_ID=$USER_ID --build-arg NEW_MAMBA_USER_GID=$GID $ROOT_DIR -f $SCRIPT_DIR/Dockerfile -t $IMAGE_TAG } stop_contaniner () { @@ -68,5 +69,5 @@ if [[ $CMD == 'build' ]]; then if [[ $CMD == 'dev-detach' ]]; then RUN_MODE="-d" fi - docker run $RUN_MODE --name $DEV_CONTAINER --rm -p $PORT:$PORT -v $ROOT_DIR:/home/$DEV_USER/jupyterlab --entrypoint "/bin/bash" $IMAGE_TAG -i -c "$DOCKER_CMD" + docker run $RUN_MODE --user $USER_ID:$GID --name $DEV_CONTAINER --rm -p $PORT:$PORT -v $ROOT_DIR:/home/$DEV_USER/jupyterlab --entrypoint "/bin/bash" $IMAGE_TAG -i -c "$DOCKER_CMD" fi diff --git a/docs/source/conf.py b/docs/source/conf.py index 4cf9a2419df6..e9eb5f2dcbb9 100644 --- a/docs/source/conf.py +++ b/docs/source/conf.py @@ -308,7 +308,7 @@ def document_plugins_tokens_list(list_path: Path, output_path: Path) -> None: html_context = { "github_user": "jupyterlab", # Username "github_repo": "jupyterlab", # Repo name - "github_version": "main", # Version + "github_version": "4.1.x", # Version "doc_path": "docs/source/", # Path in the checkout to the docs root } diff --git a/docs/source/developer/accessibility.rst b/docs/source/developer/accessibility.rst index 4cd53dc3cd0b..24cd446a30e5 100644 --- a/docs/source/developer/accessibility.rst +++ b/docs/source/developer/accessibility.rst @@ -86,7 +86,7 @@ be tempting to pick a color and apply it to the part of the UI that you are working on. However, it quickly becomes unmanageable to have color values spread throughout the app across different CSS files. Therefore, the JupyterLab codebase defines a set of `color variables -`__ +`__ that can be used for borders, icons, and such. If you're adding any CSS that needs a color value, please use one of the variables defined. diff --git a/docs/source/developer/components.rst b/docs/source/developer/components.rst index 6e5bcb3b1143..c9c3653d81d6 100644 --- a/docs/source/developer/components.rst +++ b/docs/source/developer/components.rst @@ -11,7 +11,7 @@ IDE-like experience. However, developers are encouraged to use these to bring to life their own visions of what a computational environment should look like. -The JupyterLab repository has `many examples `_ +The JupyterLab repository has `many examples `_ to get you started. The ``examples`` directory contains: diff --git a/docs/source/developer/contributing.rst b/docs/source/developer/contributing.rst index 810267c1abf1..307e2e0c6312 100644 --- a/docs/source/developer/contributing.rst +++ b/docs/source/developer/contributing.rst @@ -86,9 +86,11 @@ breaking changes. Consider documenting your maintenance plans to users in these You may also wish to consider pinning the major version of JupyterLab when developing extensions (in your package metadata). -We maintain the **two most recently released major versions of JupyterLab**, -JupyterLab v3 and JupyterLab v4. JupyterLab v1 and v2 are no longer maintained. -All JupyterLab v2 users are strongly advised to upgrade as soon as possible. +We maintain a major version of JupyterLab for **one year after its successor's first release**. +See `version lifecycle <../getting_started/lifecycle.html>`__ for details. +JupyterLab v4 was released on May 15, 2023, so JupyterLab v3 will be maintained +until May 15, 2024. JupyterLab v1 and v2 are no longer maintained. +All JupyterLab v2 and v3 users are strongly advised to upgrade as soon as possible. Languages, Tools and Processes ------------------------------ @@ -309,7 +311,7 @@ Installing Node.js and jlpm Building JupyterLab from its GitHub source code requires Node.js. The development version requires Node.js version 18+, as defined in the ``engines`` specification in -`dev_mode/package.json `__. +`dev_mode/package.json `__. If you use `conda `__, you can get it with: @@ -635,7 +637,7 @@ Visual Regression and UI Tests ------------------------------ As part of JupyterLab CI workflows, UI tests are run with visual regression checks. -`Galata `__ is used for UI +`Galata `__ is used for UI testing. Galata provides `Playwright `__ helpers to control and inspect JupyterLab UI programmatically. @@ -677,7 +679,7 @@ Main reasons for UI test failures are: The bot will react with +1 emoji to indicate that the run started and then comment back once it concluded. -For more information on UI Testing, please read the `UI Testing developer documentation `__ +For more information on UI Testing, please read the `UI Testing developer documentation `__ and `Playwright documentation `__. Good Practices for Integration tests diff --git a/docs/source/developer/css.rst b/docs/source/developer/css.rst index 0f654c056f02..116cfd70c412 100644 --- a/docs/source/developer/css.rst +++ b/docs/source/developer/css.rst @@ -73,7 +73,7 @@ CSS variable usage ^^^^^^^^^^^^^^^^^^ JupyterLab includes a default set of CSS variables in the file -`packages/theme-light-extension/style/variables.css `_. +`packages/theme-light-extension/style/variables.css `_. To ensure consistent design in JupyterLab, all built-in and third party extensions should use these variables in their styles if at all diff --git a/docs/source/developer/repo.rst b/docs/source/developer/repo.rst index c4da9b19b2f2..fd18c22a2306 100644 --- a/docs/source/developer/repo.rst +++ b/docs/source/developer/repo.rst @@ -13,7 +13,7 @@ In particular, there are many TypeScript packages and a single Python package. The Python package contains server-side code, and also distributes the bundled-and-compiled TypeScript code. -See the `Contributing Guidelines `__ +See the `Contributing Guidelines `__ for detailed developer installation instructions. Directories diff --git a/docs/source/extension/extension_dev.rst b/docs/source/extension/extension_dev.rst index 3609d999a790..e9edb1bd9dad 100644 --- a/docs/source/extension/extension_dev.rst +++ b/docs/source/extension/extension_dev.rst @@ -184,7 +184,7 @@ A mime renderer plugin is an object with the fields listed in the `rendermime-interfaces IExtension <../api/interfaces/rendermime_interfaces.IRenderMime.IExtension.html>`__ object. -JupyterLab has a `pdf mime renderer extension `__, for example. In core JupyterLab, this is used to view pdf files and view pdf data mime data in a notebook. +JupyterLab has a `pdf mime renderer extension `__, for example. In core JupyterLab, this is used to view pdf files and view pdf data mime data in a notebook. We have a `MIME renderer example `__ walking through creating a mime renderer extension which adds mp4 video rendering to JupyterLab. The `extension template `_ supports MIME renderer extensions. @@ -203,7 +203,7 @@ A theme is a special application plugin that registers a theme with the ``ThemeM The extension package containing the theme plugin must include all static assets that are referenced by ``@import`` in its theme CSS files. Local URLs can be used to reference files relative to the location of the referring sibling CSS files. For example ``url('images/foo.png')`` or ``url('../foo/bar.css')`` can be used to refer local files in the theme. Absolute URLs (starting with a ``/``) or external URLs (e.g. ``https:``) can be used to refer to external assets. -See the `JupyterLab Light Theme `__ for an example. +See the `JupyterLab Light Theme `__ for an example. See the `TypeScript extension template `__ (choosing ``theme`` as ``kind`` ) for a quick start to developing a theme plugin. @@ -214,7 +214,7 @@ Source Extensions A source extension is a JavaScript (npm) package that exports one or more plugins. All JupyterLab extensions are developed as source extensions (for example, prebuilt extensions are built from source extensions). -A source extension has metadata in the ``jupyterlab`` field of its ``package.json`` file. The `JSON schema `__ for the metadata is distributed in the ``@jupyterlab/builder`` package. +A source extension has metadata in the ``jupyterlab`` field of its ``package.json`` file. The `JSON schema `__ for the metadata is distributed in the ``@jupyterlab/builder`` package. We will talk about each ``jupyterlab`` metadata field in ``package.json`` for source extensions below. @@ -279,10 +279,10 @@ For example, the JupyterLab ``filebrowser-extension`` package exports the ``@jup "schemaDir": "schema", } -The file browser setting schema file (which specifies some default keyboard shortcuts and other settings for the filebrowser) is located in ``schema/browser.json`` (see `here `__). +The file browser setting schema file (which specifies some default keyboard shortcuts and other settings for the filebrowser) is located in ``schema/browser.json`` (see `here `__). See the -`fileeditor-extension `__ +`fileeditor-extension `__ for another example of an extension that uses settings. Please ensure that the schema files are included in the ``files`` metadata in ``package.json``. @@ -527,7 +527,7 @@ Custom webpack configuration can be used to enable webpack features, configure a } }; -This custom config will be merged with the `prebuilt extension config `_ +This custom config will be merged with the `prebuilt extension config `_ when building the prebuilt extension. .. _prebuilt_dev_workflow: diff --git a/docs/source/extension/extension_migration.rst b/docs/source/extension/extension_migration.rst index 2fe116240807..279d301e31ce 100644 --- a/docs/source/extension/extension_migration.rst +++ b/docs/source/extension/extension_migration.rst @@ -89,10 +89,12 @@ between cells, especially impacting users with accessibility needs. In JupyterLab 4.1+ the focus stays on the active cell when switching to command mode; this requires all shortcut selectors to be adjusted as follows: -- ``.jp-Notebook:focus.jp-mod-commandMode`` should be replaced with ``.jp-Notebook.jp-mod-commandMode :focus:not(:read-write)`` -- ``.jp-Notebook:focus`` should be replaced with ``.jp-Notebook.jp-mod-commandMode :focus:not(:read-write)`` -- ``[data-jp-traversable]:focus`` should be replaced with ``.jp-Notebook.jp-mod-commandMode :focus:not(:read-write)`` -- ``[data-jp-kernel-user]:focus`` should be replaced with ``[data-jp-kernel-user] :focus:not(:read-write)`` +- ``.jp-Notebook:focus.jp-mod-commandMode``, ``.jp-Notebook:focus``, and ``[data-jp-traversable]:focus`` should be replaced with: + - ``.jp-Notebook.jp-mod-commandMode :focus:not(:read-write)`` for JupyterLab 4.1.0+ + - ``.jp-Notebook.jp-mod-commandMode:not(.jp-mod-readWrite) :focus`` for JupyterLab 4.1.1+ +- ``[data-jp-kernel-user]:focus`` should be replaced with: + - ``[data-jp-kernel-user] :focus:not(:read-write)`` for JupyterLab 4.1.0+ + - ``[data-jp-kernel-user]:not(.jp-mod-readWrite) :focus:not(:read-write)`` for JupyterLab 4.1.1+ Please note that ``:not(:read-write)`` fragment disables shortcuts when text fields (such as cell editor) are focused to avoid intercepting @@ -101,6 +103,17 @@ does not correspond to any key/typographic character (e.g. most shortcuts with :kbd:`Ctrl` modifier) you may prefer to drop this fragment if you want the shortcut to be active in text fields. +Further, JupyterLab 4.1.1 introduced indicator class ``.jp-mod-readWrite`` +that is applied to the notebook node when the active element accepts +keyboard input as defined by ``:read-write`` selector. This indicator +class is required to detect ``:read-write`` elements which are nested +within an *open* shadow DOM (such as Panel framework widgets). + +If your framework uses a *closed* shadow DOM, or expects keyboard +interactions on elements that are not recognised as editable by browser +heuristics of ``:read-write`` selector, you need to set a data attribute +`lm-suppress-shortcuts` on the outer host element to suppress shortcuts. + To prevent breaking the user experience these changes are made transparently in the background, but will emit a warning and extension developers should make the change at the source before the next major JupyterLab release. @@ -357,7 +370,7 @@ bumped their major version (following semver convention). We want to point out p ``token.findByFileName(widget.context.path)?.name ?? ''``. - ``@jupyterlab/docprovider`` from 3.x to 4.x This package is no longer present in JupyterLab. For documentation related to Real-Time Collaboration, please check out - `RTC's documentation `_ + `RTC's documentation `_ - ``@jupyterlab/docregistry`` from 3.x to 4.x * Removed the property ``docProviderFactory`` from the interface ``Context.IOptions``. * The constructor of the class ``DocumentModel`` receives a parameter ``DocumentModel.IOptions``. @@ -838,7 +851,7 @@ Upgrading library versions The ``@phosphor/*`` libraries that JupyterLab 1.x uses have been renamed to ``@lumino/*``. Updating your ``package.json`` is straightforward. The easiest way to do this is to look in the -`JupyterLab core packages code base `__ +`JupyterLab core packages code base `__ and to simply adopt the versions of the relevant libraries that are used there. @@ -959,7 +972,7 @@ Using ``Session`` and ``SessionContext`` to manage kernel sessions For full API documentation and examples of how to use ``@jupyterlab/services``, - `consult the repository `__. + `consult the repository `__. ``ConsolePanel`` and ``NotebookPanel`` now expose a ``sessionContext: ISessionContext`` attribute that allows for a uniform way to @@ -994,4 +1007,4 @@ Using the new icon system and ``LabIcon`` For full API documentation and examples of how to use the new icon support based on ``LabIcon`` from ``@jupyterlab/ui-components``, - `consult the repository `__. + `consult the repository `__. diff --git a/docs/source/extension/extension_tutorial.rst b/docs/source/extension/extension_tutorial.rst index 38722861f8a5..d80cca778431 100644 --- a/docs/source/extension/extension_tutorial.rst +++ b/docs/source/extension/extension_tutorial.rst @@ -227,7 +227,7 @@ After you reload the page with the console open, you should see a message that s ``JupyterLab extension jupyterlab_apod is activated!`` in the console. If you do, congratulations, you're ready to start modifying the extension! If not, go back make sure you didn't miss a step, and `reach -out `__ if you're stuck. +out `__ if you're stuck. .. note:: diff --git a/docs/source/extension/identity.rst b/docs/source/extension/identity.rst index 7752eb21cc99..7a96b0433fd2 100644 --- a/docs/source/extension/identity.rst +++ b/docs/source/extension/identity.rst @@ -27,7 +27,7 @@ to the signal ``userChanged``. id: 'jupyterlab-extension', autoStart: true, activate: (app: JupyterFrontEnd) => { - const user = app.services.user; + const user = app.serviceManager.user; user.ready.then(() => { console.debug("Identity:", user.identity); console.debug("Permissions:", user.permissions); diff --git a/docs/source/extension/internationalization.rst b/docs/source/extension/internationalization.rst index 6a66e226eb2b..cc77756b183e 100644 --- a/docs/source/extension/internationalization.rst +++ b/docs/source/extension/internationalization.rst @@ -34,7 +34,7 @@ To internationalize your extension, the following tasks are required: Domain are normalized by replacing ``-`` with ``_`` characters. -3. Wraps all translatable strings with one of the `gettext functions `_. +3. Wraps all translatable strings with one of the `gettext functions `_. Examples: diff --git a/docs/source/extension/notebook.rst b/docs/source/extension/notebook.rst index 67a3ad9d7738..7ae49ccccbc9 100644 --- a/docs/source/extension/notebook.rst +++ b/docs/source/extension/notebook.rst @@ -175,6 +175,43 @@ The ipywidgets widget manager is an example of an extension that adds a notebook-specific renderer, since rendering a widget depends on notebook-specific widget state. +Keyboard interaction model +"""""""""""""""""""""""""" + +Multiple elements can receive focus in the Notebook: +- the main toolbar, +- cells, +- cell components (editor, toolbar, outputs). + +When the focus is outside of the cell input editor, +the Notebook switches to so-called "command" mode. +In the command mode additional keyboard shortcuts are accessible to the user, +enabling quick access to cell- and notebook-specific actions. +These shortcuts are only active when the notebook is in command mode +and the active element is non-editable, +as signalled by absence of ``.jp-mod-readWrite`` class on the notebook node. +This class is set if the active element is editable as ascertained by matching +to the ``:read-write`` pseudo-selector, and accounts for any elements nested +in the open shadow DOM, but not for the closed shadow DOM nor non-editable +elements with custom key event handlers (such as +``
``). +If your output widget (for example created with ``IPython.display.HTML``, +or created by your MIME renderer on cell output in a notebook or console) +uses closed shadow DOM or non-editable elements with custom +key event handlers, you may wish to set ``lm-suppress-shortcuts`` data attribute +on the host element to prevent side-effects from the command-mode actions, e.g: + +.. code:: html + +
+ Click on me and press "A" with and without "lm-suppress-shortcuts" +
+ .. _extend-notebook-plugin: How to extend the Notebook plugin diff --git a/docs/source/extension/ui_components.rst b/docs/source/extension/ui_components.rst index 7261963d5bad..24ae7e736436 100644 --- a/docs/source/extension/ui_components.rst +++ b/docs/source/extension/ui_components.rst @@ -114,8 +114,7 @@ removed from the DOM, you’ll first need to clean it up: This cleanup step is not a special property of ``LabIcon``, but is instead needed for any React component that is rendered directly at the top level by ``ReactDOM``: failure to call ``unmountComponentAtNode`` -can result in a `memory -leak `__. +can result in a memory leak. How to create your own custom ``LabIcon`` ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ diff --git a/docs/source/getting_started/faq.rst b/docs/source/getting_started/faq.rst index 55929bf6c333..e48ff2019858 100644 --- a/docs/source/getting_started/faq.rst +++ b/docs/source/getting_started/faq.rst @@ -54,10 +54,10 @@ Development - `How can you - contribute? `__ + contribute? `__ - :ref:`How can you extend or customize JupyterLab? ` -- In the classic Notebook, `I could use custom Javascript outputted by a cell to programmatically - control the Notebook `__. Can I do the same thing in JupyterLab? +- In the classic Notebook, I could use custom Javascript outputted by a cell to programmatically + control the Notebook. Can I do the same thing in JupyterLab? JupyterLab was built to support a wide variety of extensibility, including dynamic behavior based on notebook outputs. To access this extensibility, you should write a custom JupyterLab extension. If you would @@ -65,4 +65,6 @@ Development mimetype (:ref:`rendermime`). We currently don't allow access to the JupyterLab API from the Javascript renderer, because this would tie the kernel and the notebook output to JupyterLab and make it hard for other frontends to support it. - If you have comments or suggestions on changes here, please comment on `this issue `__. + For more discussion and potential alternative solutions, please see issues + `#4623 `__ and + `#5789 `__. diff --git a/docs/source/getting_started/installation.rst b/docs/source/getting_started/installation.rst index 3cb9de0eae45..5189e6a09079 100644 --- a/docs/source/getting_started/installation.rst +++ b/docs/source/getting_started/installation.rst @@ -106,15 +106,10 @@ The latest versions of the following browsers are currently known to work: - Firefox - Chrome - Safari +- Edge Earlier browser versions may also work, but come with no guarantees. -JupyterLab uses CSS Variables for styling, which is one reason for the -minimum versions listed above. IE 11+ or Edge 14 do not support -CSS Variables, and are not directly supported at this time. -A tool like `postcss `__ can be used to convert the CSS files in the -``jupyterlab/build`` directory manually if desired. - Installation problems --------------------- diff --git a/docs/source/getting_started/lifecycle.rst b/docs/source/getting_started/lifecycle.rst new file mode 100644 index 000000000000..b0f845a1566e --- /dev/null +++ b/docs/source/getting_started/lifecycle.rst @@ -0,0 +1,34 @@ +.. Copyright (c) Jupyter Development Team. +.. Distributed under the terms of the Modified BSD License. + +Version lifecycle +================= + +Each major version of JupyterLab is maintained until +**one year after the following version's first generally available release**. +This does not count alpha, beta, or release candidate (RC) versions. + +After the end of maintenance date, no additional releases may be made, not +even to fix security issues. + +.. list-table:: Major version lifecycles + + * - Version + - Release Date + - End of Maintenance + * - 1.0.0 + - 28 Jun 2019 + - 28 Feb 2021 + * - 2.0.0 + - 28 Feb 2020 + - 23 Dec 2021 + * - 3.0.0 + - 23 Dec 2020 + - 15 May 2024 (see below) + * - 4.0.0 + - 15 May 2023 + - *active* + +To help with the transition to JupyterLab 4, JupyterLab maintainers may +make additional patch releases to JupyterLab 3 to fix critical issues +until 31 December 2024. diff --git a/docs/source/getting_started/overview.rst b/docs/source/getting_started/overview.rst index 1e6f15d42b5b..77efe735d8bd 100644 --- a/docs/source/getting_started/overview.rst +++ b/docs/source/getting_started/overview.rst @@ -6,7 +6,7 @@ Get Started =========== -`JupyterLab `_ is a next-generation web-based user interface for +`JupyterLab `_ is a next-generation web-based user interface for `Project Jupyter `_. .. image:: ../images/interface-jupyterlab.png @@ -82,3 +82,4 @@ Jupyter Notebook in the ecosystem, visit the faq changelog accessibility + lifecycle diff --git a/docs/source/index.rst b/docs/source/index.rst index 40590ac914ae..4f8cfa6d377c 100644 --- a/docs/source/index.rst +++ b/docs/source/index.rst @@ -30,7 +30,7 @@ the `Project Jupyter `_ umbrella, like offers a more advanced, feature rich, customizable experience compared to Jupyter Notebook. -`Try JupyterLab on Binder `__. JupyterLab follows the Jupyter `Community Guides `__. +`Try JupyterLab on Binder `__. JupyterLab follows the Jupyter `Community Guides `__. .. image:: ./images/jupyterlab.png :align: center diff --git a/docs/source/user/extensions.rst b/docs/source/user/extensions.rst index 82ce2ef2626d..236ed2558616 100644 --- a/docs/source/user/extensions.rst +++ b/docs/source/user/extensions.rst @@ -564,6 +564,6 @@ rebuild, you can run the command: If you are rebuilding JupyterLab on Windows, you may encounter a ``FileNotFoundError`` due to the default path length on Windows. Node modules are stored in a deeply nested directory structure, so paths can get - quite long. If you have administrative access and are on Windows 8 or 10, - you can update the registry setting using these instructions: - https://stackoverflow.com/a/37528731. + quite long. If you have administrative access and are on Windows 10 or newer + you can enable long paths by adding a dedicated + `registry key `__. diff --git a/docs/source/user/index.md b/docs/source/user/index.md index 509ffcb84d79..4762c7cceb69 100644 --- a/docs/source/user/index.md +++ b/docs/source/user/index.md @@ -1,6 +1,6 @@ # User Guide -Use this page to navigate to in-depth guides, tutorials, and how-tos for using [JupyterLab](https://jupyterlab.readthedocs.io/en/latest/). +Use this page to navigate to in-depth guides, tutorials, and how-tos for using [JupyterLab](https://jupyterlab.readthedocs.io/en/stable/). ```{toctree} :maxdepth: 2 diff --git a/examples/app/package.json b/examples/app/package.json index ab27be481368..2d7b871ab796 100644 --- a/examples/app/package.json +++ b/examples/app/package.json @@ -1,45 +1,45 @@ { "name": "@jupyterlab/example-app", - "version": "4.1.0", + "version": "4.1.5", "private": true, "scripts": { "build": "webpack", "clean": "rimraf build" }, "dependencies": { - "@jupyterlab/application": "^4.1.0", - "@jupyterlab/application-extension": "^4.1.0", - "@jupyterlab/apputils-extension": "^4.1.0", - "@jupyterlab/builder": "^4.1.0", - "@jupyterlab/celltags-extension": "^4.1.0", - "@jupyterlab/codemirror-extension": "^4.1.0", - "@jupyterlab/completer-extension": "^4.1.0", - "@jupyterlab/console-extension": "^4.1.0", - "@jupyterlab/csvviewer-extension": "^4.1.0", - "@jupyterlab/docmanager-extension": "^4.1.0", - "@jupyterlab/filebrowser-extension": "^4.1.0", - "@jupyterlab/fileeditor-extension": "^4.1.0", - "@jupyterlab/help-extension": "^4.1.0", - "@jupyterlab/imageviewer-extension": "^4.1.0", - "@jupyterlab/inspector-extension": "^4.1.0", - "@jupyterlab/launcher-extension": "^4.1.0", - "@jupyterlab/mainmenu-extension": "^4.1.0", - "@jupyterlab/markdownviewer-extension": "^4.1.0", - "@jupyterlab/mathjax-extension": "^4.1.0", - "@jupyterlab/metadataform-extension": "^4.1.0", - "@jupyterlab/notebook-extension": "^4.1.0", - "@jupyterlab/rendermime-extension": "^4.1.0", - "@jupyterlab/running-extension": "^4.1.0", - "@jupyterlab/settingeditor-extension": "^4.1.0", - "@jupyterlab/shortcuts-extension": "^4.1.0", - "@jupyterlab/statusbar-extension": "^4.1.0", - "@jupyterlab/theme-dark-extension": "^4.1.0", - "@jupyterlab/theme-light-extension": "^4.1.0", - "@jupyterlab/toc-extension": "^6.1.0", - "@jupyterlab/tooltip-extension": "^4.1.0", - "@jupyterlab/translation": "^4.1.0", - "@jupyterlab/translation-extension": "^4.1.0", - "@jupyterlab/ui-components-extension": "^4.1.0", + "@jupyterlab/application": "^4.1.5", + "@jupyterlab/application-extension": "^4.1.5", + "@jupyterlab/apputils-extension": "^4.1.5", + "@jupyterlab/builder": "^4.1.5", + "@jupyterlab/celltags-extension": "^4.1.5", + "@jupyterlab/codemirror-extension": "^4.1.5", + "@jupyterlab/completer-extension": "^4.1.5", + "@jupyterlab/console-extension": "^4.1.5", + "@jupyterlab/csvviewer-extension": "^4.1.5", + "@jupyterlab/docmanager-extension": "^4.1.5", + "@jupyterlab/filebrowser-extension": "^4.1.5", + "@jupyterlab/fileeditor-extension": "^4.1.5", + "@jupyterlab/help-extension": "^4.1.5", + "@jupyterlab/imageviewer-extension": "^4.1.5", + "@jupyterlab/inspector-extension": "^4.1.5", + "@jupyterlab/launcher-extension": "^4.1.5", + "@jupyterlab/mainmenu-extension": "^4.1.5", + "@jupyterlab/markdownviewer-extension": "^4.1.5", + "@jupyterlab/mathjax-extension": "^4.1.5", + "@jupyterlab/metadataform-extension": "^4.1.5", + "@jupyterlab/notebook-extension": "^4.1.5", + "@jupyterlab/rendermime-extension": "^4.1.5", + "@jupyterlab/running-extension": "^4.1.5", + "@jupyterlab/settingeditor-extension": "^4.1.5", + "@jupyterlab/shortcuts-extension": "^4.1.5", + "@jupyterlab/statusbar-extension": "^4.1.5", + "@jupyterlab/theme-dark-extension": "^4.1.5", + "@jupyterlab/theme-light-extension": "^4.1.5", + "@jupyterlab/toc-extension": "^6.1.5", + "@jupyterlab/tooltip-extension": "^4.1.5", + "@jupyterlab/translation": "^4.1.5", + "@jupyterlab/translation-extension": "^4.1.5", + "@jupyterlab/ui-components-extension": "^4.1.5", "react": "^18.2.0", "react-dom": "^18.2.0" }, diff --git a/examples/cell/package.json b/examples/cell/package.json index 319b13a00eb4..7e228188f4b5 100644 --- a/examples/cell/package.json +++ b/examples/cell/package.json @@ -1,6 +1,6 @@ { "name": "@jupyterlab/example-cell", - "version": "4.1.0", + "version": "4.1.5", "private": true, "scripts": { "build": "tsc -p src && webpack", @@ -9,16 +9,16 @@ "dependencies": { "@jupyter/web-components": "^0.15.2", "@jupyter/ydoc": "^1.1.1", - "@jupyterlab/application": "^4.1.0", - "@jupyterlab/apputils": "^4.2.0", - "@jupyterlab/cells": "^4.1.0", - "@jupyterlab/codemirror": "^4.1.0", - "@jupyterlab/completer": "^4.1.0", - "@jupyterlab/coreutils": "^6.1.0", - "@jupyterlab/rendermime": "^4.1.0", - "@jupyterlab/services": "^7.1.0", - "@jupyterlab/theme-light-extension": "^4.1.0", - "@jupyterlab/ui-components": "^4.1.0", + "@jupyterlab/application": "^4.1.5", + "@jupyterlab/apputils": "^4.2.5", + "@jupyterlab/cells": "^4.1.5", + "@jupyterlab/codemirror": "^4.1.5", + "@jupyterlab/completer": "^4.1.5", + "@jupyterlab/coreutils": "^6.1.5", + "@jupyterlab/rendermime": "^4.1.5", + "@jupyterlab/services": "^7.1.5", + "@jupyterlab/theme-light-extension": "^4.1.5", + "@jupyterlab/ui-components": "^4.1.5", "@lumino/commands": "^2.2.0", "@lumino/widgets": "^2.3.1" }, diff --git a/examples/console/package.json b/examples/console/package.json index 93cae7025451..9bb6b24d97e9 100644 --- a/examples/console/package.json +++ b/examples/console/package.json @@ -1,6 +1,6 @@ { "name": "@jupyterlab/example-console", - "version": "4.1.0", + "version": "4.1.5", "private": true, "scripts": { "build": "tsc -p src && webpack", @@ -9,14 +9,14 @@ "dependencies": { "@jupyter/web-components": "^0.15.2", "@jupyter/ydoc": "^1.1.1", - "@jupyterlab/application": "^4.1.0", - "@jupyterlab/codemirror": "^4.1.0", - "@jupyterlab/console": "^4.1.0", - "@jupyterlab/coreutils": "^6.1.0", - "@jupyterlab/rendermime": "^4.1.0", - "@jupyterlab/services": "^7.1.0", - "@jupyterlab/theme-light-extension": "^4.1.0", - "@jupyterlab/translation": "^4.1.0", + "@jupyterlab/application": "^4.1.5", + "@jupyterlab/codemirror": "^4.1.5", + "@jupyterlab/console": "^4.1.5", + "@jupyterlab/coreutils": "^6.1.5", + "@jupyterlab/rendermime": "^4.1.5", + "@jupyterlab/services": "^7.1.5", + "@jupyterlab/theme-light-extension": "^4.1.5", + "@jupyterlab/translation": "^4.1.5", "@lumino/commands": "^2.2.0", "@lumino/widgets": "^2.3.1" }, diff --git a/examples/federated/core_package/package.json b/examples/federated/core_package/package.json index 5400c2dd06a3..df98c985b351 100644 --- a/examples/federated/core_package/package.json +++ b/examples/federated/core_package/package.json @@ -1,6 +1,6 @@ { "name": "@jupyterlab/example-federated-core", - "version": "3.1.0", + "version": "3.1.5", "private": true, "scripts": { "build": "npm run clean && webpack", @@ -8,77 +8,77 @@ "watch": "npm run clean && webpack --watch" }, "resolutions": { - "@jupyterlab/application": "~4.1.0", - "@jupyterlab/application-extension": "~4.1.0", + "@jupyterlab/application": "~4.1.5", + "@jupyterlab/application-extension": "~4.1.5", "@jupyterlab/apputils": "~4.1.0-alpha.0", - "@jupyterlab/apputils-extension": "~4.1.0", + "@jupyterlab/apputils-extension": "~4.1.5", "@jupyterlab/attachments": "~4.1.0-alpha.0", "@jupyterlab/cells": "~4.1.0-alpha.0", - "@jupyterlab/celltags-extension": "~4.1.0", + "@jupyterlab/celltags-extension": "~4.1.5", "@jupyterlab/codeeditor": "~4.1.0-alpha.0", - "@jupyterlab/codemirror-extension": "~4.1.0", + "@jupyterlab/codemirror-extension": "~4.1.5", "@jupyterlab/completer": "~4.1.0-alpha.0", - "@jupyterlab/completer-extension": "~4.1.0", + "@jupyterlab/completer-extension": "~4.1.5", "@jupyterlab/console": "~4.1.0-alpha.0", - "@jupyterlab/console-extension": "~4.1.0", - "@jupyterlab/coreutils": "~6.1.0", - "@jupyterlab/csvviewer-extension": "~4.1.0", + "@jupyterlab/console-extension": "~4.1.5", + "@jupyterlab/coreutils": "~6.1.5", + "@jupyterlab/csvviewer-extension": "~4.1.5", "@jupyterlab/debugger": "~4.1.0-alpha.0", - "@jupyterlab/debugger-extension": "~4.1.0", + "@jupyterlab/debugger-extension": "~4.1.5", "@jupyterlab/docmanager": "~4.1.0-alpha.0", - "@jupyterlab/docmanager-extension": "~4.1.0", + "@jupyterlab/docmanager-extension": "~4.1.5", "@jupyterlab/documentsearch": "~4.1.0-alpha.0", - "@jupyterlab/documentsearch-extension": "~4.1.0", + "@jupyterlab/documentsearch-extension": "~4.1.5", "@jupyterlab/extensionmanager": "~4.1.0-alpha.0", - "@jupyterlab/extensionmanager-extension": "~4.1.0", + "@jupyterlab/extensionmanager-extension": "~4.1.5", "@jupyterlab/filebrowser": "~4.1.0-alpha.0", - "@jupyterlab/filebrowser-extension": "~4.1.0", + "@jupyterlab/filebrowser-extension": "~4.1.5", "@jupyterlab/fileeditor": "~4.1.0-alpha.0", - "@jupyterlab/fileeditor-extension": "~4.1.0", - "@jupyterlab/help-extension": "~4.1.0", - "@jupyterlab/htmlviewer-extension": "~4.1.0", - "@jupyterlab/hub-extension": "~4.1.0", + "@jupyterlab/fileeditor-extension": "~4.1.5", + "@jupyterlab/help-extension": "~4.1.5", + "@jupyterlab/htmlviewer-extension": "~4.1.5", + "@jupyterlab/hub-extension": "~4.1.5", "@jupyterlab/imageviewer": "~4.1.0-alpha.0", - "@jupyterlab/imageviewer-extension": "~4.1.0", + "@jupyterlab/imageviewer-extension": "~4.1.5", "@jupyterlab/inspector": "~4.1.0-alpha.0", - "@jupyterlab/inspector-extension": "~4.1.0", - "@jupyterlab/javascript-extension": "~4.1.0", - "@jupyterlab/json-extension": "~4.1.0", + "@jupyterlab/inspector-extension": "~4.1.5", + "@jupyterlab/javascript-extension": "~4.1.5", + "@jupyterlab/json-extension": "~4.1.5", "@jupyterlab/launcher": "~4.1.0-alpha.0", - "@jupyterlab/launcher-extension": "~4.1.0", + "@jupyterlab/launcher-extension": "~4.1.5", "@jupyterlab/logconsole": "~4.1.0-alpha.0", - "@jupyterlab/logconsole-extension": "~4.1.0", + "@jupyterlab/logconsole-extension": "~4.1.5", "@jupyterlab/lsp": "~4.1.0-alpha.0", - "@jupyterlab/lsp-extension": "~4.1.0", + "@jupyterlab/lsp-extension": "~4.1.5", "@jupyterlab/mainmenu": "~4.1.0-alpha.0", - "@jupyterlab/mainmenu-extension": "~4.1.0", + "@jupyterlab/mainmenu-extension": "~4.1.5", "@jupyterlab/markedparser-extension": "~4.1.0-alpha.0", - "@jupyterlab/mathjax-extension": "~4.1.0", + "@jupyterlab/mathjax-extension": "~4.1.5", "@jupyterlab/metadataform": "~4.1.0-alpha.0", - "@jupyterlab/metadataform-extension": "~4.1.0", + "@jupyterlab/metadataform-extension": "~4.1.5", "@jupyterlab/notebook": "~4.1.0-alpha.0", - "@jupyterlab/notebook-extension": "~4.1.0", - "@jupyterlab/pdf-extension": "~4.1.0", + "@jupyterlab/notebook-extension": "~4.1.5", + "@jupyterlab/pdf-extension": "~4.1.5", "@jupyterlab/rendermime": "~4.1.0-alpha.0", - "@jupyterlab/rendermime-extension": "~4.1.0", + "@jupyterlab/rendermime-extension": "~4.1.5", "@jupyterlab/rendermime-interfaces": "^3.9.0-alpha.1", "@jupyterlab/services": "~7.1.0-alpha.0", "@jupyterlab/settingeditor": "~4.1.0-alpha.0", - "@jupyterlab/settingeditor-extension": "~4.1.0", + "@jupyterlab/settingeditor-extension": "~4.1.5", "@jupyterlab/settingregistry": "~4.1.0-alpha.0", - "@jupyterlab/shortcuts-extension": "~4.1.0", + "@jupyterlab/shortcuts-extension": "~4.1.5", "@jupyterlab/statedb": "~4.1.0-alpha.0", "@jupyterlab/statusbar": "~4.1.0-alpha.0", - "@jupyterlab/statusbar-extension": "~4.1.0", - "@jupyterlab/theme-light-extension": "~4.1.0", - "@jupyterlab/toc-extension": "~6.1.0", + "@jupyterlab/statusbar-extension": "~4.1.5", + "@jupyterlab/theme-light-extension": "~4.1.5", + "@jupyterlab/toc-extension": "~6.1.5", "@jupyterlab/tooltip": "~4.1.0-alpha.0", - "@jupyterlab/tooltip-extension": "~4.1.0", - "@jupyterlab/translation": "~4.1.0", - "@jupyterlab/translation-extension": "~4.1.0", + "@jupyterlab/tooltip-extension": "~4.1.5", + "@jupyterlab/translation": "~4.1.5", + "@jupyterlab/translation-extension": "~4.1.5", "@jupyterlab/ui-components": "~4.1.0-alpha.0", - "@jupyterlab/ui-components-extension": "~4.1.0", - "@jupyterlab/vega5-extension": "~4.1.0", + "@jupyterlab/ui-components-extension": "~4.1.5", + "@jupyterlab/vega5-extension": "~4.1.5", "@lumino/algorithm": "^2.0.0", "@lumino/application": "^2.3.0-alpha.0", "@lumino/commands": "^2.0.1", @@ -96,50 +96,50 @@ "yjs": "^13.5.40" }, "dependencies": { - "@jupyterlab/application": "^4.1.0", - "@jupyterlab/application-extension": "^4.1.0", - "@jupyterlab/apputils-extension": "^4.1.0", - "@jupyterlab/celltags-extension": "^4.1.0", - "@jupyterlab/codemirror-extension": "^4.1.0", - "@jupyterlab/completer-extension": "^4.1.0", - "@jupyterlab/console-extension": "^4.1.0", - "@jupyterlab/coreutils": "^6.1.0", - "@jupyterlab/csvviewer-extension": "^4.1.0", - "@jupyterlab/debugger-extension": "^4.1.0", - "@jupyterlab/docmanager-extension": "^4.1.0", - "@jupyterlab/documentsearch-extension": "^4.1.0", - "@jupyterlab/extensionmanager-extension": "^4.1.0", - "@jupyterlab/filebrowser-extension": "^4.1.0", - "@jupyterlab/fileeditor-extension": "^4.1.0", - "@jupyterlab/help-extension": "^4.1.0", - "@jupyterlab/htmlviewer-extension": "^4.1.0", - "@jupyterlab/hub-extension": "^4.1.0", - "@jupyterlab/imageviewer-extension": "^4.1.0", - "@jupyterlab/inspector-extension": "^4.1.0", - "@jupyterlab/javascript-extension": "^4.1.0", - "@jupyterlab/json-extension": "^4.1.0", - "@jupyterlab/launcher-extension": "^4.1.0", - "@jupyterlab/logconsole-extension": "^4.1.0", - "@jupyterlab/lsp-extension": "^4.1.0", - "@jupyterlab/mainmenu-extension": "^4.1.0", - "@jupyterlab/mathjax-extension": "^4.1.0", - "@jupyterlab/metadataform-extension": "^4.1.0", - "@jupyterlab/notebook-extension": "^4.1.0", - "@jupyterlab/pdf-extension": "^4.1.0", - "@jupyterlab/rendermime-extension": "^4.1.0", - "@jupyterlab/settingeditor-extension": "^4.1.0", - "@jupyterlab/shortcuts-extension": "^4.1.0", - "@jupyterlab/statusbar-extension": "^4.1.0", - "@jupyterlab/theme-light-extension": "^4.1.0", - "@jupyterlab/toc-extension": "^6.1.0", - "@jupyterlab/tooltip-extension": "^4.1.0", - "@jupyterlab/translation": "^4.1.0", - "@jupyterlab/translation-extension": "^4.1.0", - "@jupyterlab/ui-components-extension": "^4.1.0", - "@jupyterlab/vega5-extension": "^4.1.0" + "@jupyterlab/application": "^4.1.5", + "@jupyterlab/application-extension": "^4.1.5", + "@jupyterlab/apputils-extension": "^4.1.5", + "@jupyterlab/celltags-extension": "^4.1.5", + "@jupyterlab/codemirror-extension": "^4.1.5", + "@jupyterlab/completer-extension": "^4.1.5", + "@jupyterlab/console-extension": "^4.1.5", + "@jupyterlab/coreutils": "^6.1.5", + "@jupyterlab/csvviewer-extension": "^4.1.5", + "@jupyterlab/debugger-extension": "^4.1.5", + "@jupyterlab/docmanager-extension": "^4.1.5", + "@jupyterlab/documentsearch-extension": "^4.1.5", + "@jupyterlab/extensionmanager-extension": "^4.1.5", + "@jupyterlab/filebrowser-extension": "^4.1.5", + "@jupyterlab/fileeditor-extension": "^4.1.5", + "@jupyterlab/help-extension": "^4.1.5", + "@jupyterlab/htmlviewer-extension": "^4.1.5", + "@jupyterlab/hub-extension": "^4.1.5", + "@jupyterlab/imageviewer-extension": "^4.1.5", + "@jupyterlab/inspector-extension": "^4.1.5", + "@jupyterlab/javascript-extension": "^4.1.5", + "@jupyterlab/json-extension": "^4.1.5", + "@jupyterlab/launcher-extension": "^4.1.5", + "@jupyterlab/logconsole-extension": "^4.1.5", + "@jupyterlab/lsp-extension": "^4.1.5", + "@jupyterlab/mainmenu-extension": "^4.1.5", + "@jupyterlab/mathjax-extension": "^4.1.5", + "@jupyterlab/metadataform-extension": "^4.1.5", + "@jupyterlab/notebook-extension": "^4.1.5", + "@jupyterlab/pdf-extension": "^4.1.5", + "@jupyterlab/rendermime-extension": "^4.1.5", + "@jupyterlab/settingeditor-extension": "^4.1.5", + "@jupyterlab/shortcuts-extension": "^4.1.5", + "@jupyterlab/statusbar-extension": "^4.1.5", + "@jupyterlab/theme-light-extension": "^4.1.5", + "@jupyterlab/toc-extension": "^6.1.5", + "@jupyterlab/tooltip-extension": "^4.1.5", + "@jupyterlab/translation": "^4.1.5", + "@jupyterlab/translation-extension": "^4.1.5", + "@jupyterlab/ui-components-extension": "^4.1.5", + "@jupyterlab/vega5-extension": "^4.1.5" }, "devDependencies": { - "@jupyterlab/builder": "^4.1.0", + "@jupyterlab/builder": "^4.1.5", "copy-webpack-plugin": "^11.0.0", "css-loader": "^6.7.1", "fs-extra": "^10.1.0", diff --git a/examples/federated/md_package/package.json b/examples/federated/md_package/package.json index 7871511fd388..30759dd990b0 100644 --- a/examples/federated/md_package/package.json +++ b/examples/federated/md_package/package.json @@ -1,6 +1,6 @@ { "name": "@jupyterlab/example-federated-md", - "version": "3.1.0", + "version": "3.1.5", "private": true, "main": "./index.js", "scripts": { @@ -8,13 +8,13 @@ "clean": "rimraf ../labextensions/@jupyterlab/example-federated-md" }, "dependencies": { - "@jupyterlab/application": "^4.1.0", - "@jupyterlab/example-federated-middle": "^3.0.3", - "@jupyterlab/markdownviewer-extension": "^4.1.0", + "@jupyterlab/application": "^4.1.5", + "@jupyterlab/example-federated-middle": "^3.0.8", + "@jupyterlab/markdownviewer-extension": "^4.1.5", "@lumino/widgets": "^2.3.1" }, "devDependencies": { - "@jupyterlab/builder": "^4.1.0", + "@jupyterlab/builder": "^4.1.5", "rimraf": "~5.0.5" }, "jupyterlab": { diff --git a/examples/federated/middle_package/package.json b/examples/federated/middle_package/package.json index cf98810f1f5a..bfa53ad73c51 100644 --- a/examples/federated/middle_package/package.json +++ b/examples/federated/middle_package/package.json @@ -1,6 +1,6 @@ { "name": "@jupyterlab/example-federated-middle", - "version": "3.0.3", + "version": "3.0.8", "private": true, "scripts": { "build": "npm run clean && build-labextension --core-path ../core_package .", @@ -10,7 +10,7 @@ "@lumino/coreutils": "^2.1.2" }, "devDependencies": { - "@jupyterlab/builder": "^4.1.0", + "@jupyterlab/builder": "^4.1.5", "rimraf": "~5.0.5" }, "publishConfig": { diff --git a/examples/federated/package.json b/examples/federated/package.json index fb9b4edd2a9e..54a3cc06ead6 100644 --- a/examples/federated/package.json +++ b/examples/federated/package.json @@ -1,6 +1,6 @@ { "name": "@jupyterlab/example-federated", - "version": "3.1.0", + "version": "3.1.5", "private": true, "scripts": { "build": "npm run build:core && npm run build:middle && npm run build:md", diff --git a/examples/filebrowser/package.json b/examples/filebrowser/package.json index 9b0eb6cb48ce..a1af8eb0d051 100644 --- a/examples/filebrowser/package.json +++ b/examples/filebrowser/package.json @@ -1,6 +1,6 @@ { "name": "@jupyterlab/example-filebrowser", - "version": "4.1.0", + "version": "4.1.5", "private": true, "scripts": { "build": "tsc -p src && webpack", @@ -8,18 +8,18 @@ }, "dependencies": { "@jupyter/web-components": "^0.15.2", - "@jupyterlab/application": "^4.1.0", - "@jupyterlab/apputils": "^4.2.0", - "@jupyterlab/codemirror": "^4.1.0", - "@jupyterlab/coreutils": "^6.1.0", - "@jupyterlab/docmanager": "^4.1.0", - "@jupyterlab/docregistry": "^4.1.0", - "@jupyterlab/filebrowser": "^4.1.0", - "@jupyterlab/fileeditor": "^4.1.0", - "@jupyterlab/services": "^7.1.0", - "@jupyterlab/theme-light-extension": "^4.1.0", - "@jupyterlab/translation": "^4.1.0", - "@jupyterlab/ui-components": "^4.1.0", + "@jupyterlab/application": "^4.1.5", + "@jupyterlab/apputils": "^4.2.5", + "@jupyterlab/codemirror": "^4.1.5", + "@jupyterlab/coreutils": "^6.1.5", + "@jupyterlab/docmanager": "^4.1.5", + "@jupyterlab/docregistry": "^4.1.5", + "@jupyterlab/filebrowser": "^4.1.5", + "@jupyterlab/fileeditor": "^4.1.5", + "@jupyterlab/services": "^7.1.5", + "@jupyterlab/theme-light-extension": "^4.1.5", + "@jupyterlab/translation": "^4.1.5", + "@jupyterlab/ui-components": "^4.1.5", "@lumino/commands": "^2.2.0", "@lumino/widgets": "^2.3.1" }, diff --git a/examples/notebook/example.spec.ts-snapshots/example-linux.png b/examples/notebook/example.spec.ts-snapshots/example-linux.png index 3bc852278410..8a09ec72d3b8 100644 Binary files a/examples/notebook/example.spec.ts-snapshots/example-linux.png and b/examples/notebook/example.spec.ts-snapshots/example-linux.png differ diff --git a/examples/notebook/package.json b/examples/notebook/package.json index 714af12ea6bc..6d4aee17331d 100644 --- a/examples/notebook/package.json +++ b/examples/notebook/package.json @@ -1,6 +1,6 @@ { "name": "@jupyterlab/example-notebook", - "version": "4.1.0", + "version": "4.1.5", "private": true, "scripts": { "build": "tsc -p src && webpack", @@ -9,22 +9,22 @@ "dependencies": { "@jupyter/web-components": "^0.15.2", "@jupyter/ydoc": "^1.1.1", - "@jupyterlab/application": "^4.1.0", - "@jupyterlab/apputils": "^4.2.0", - "@jupyterlab/codemirror": "^4.1.0", - "@jupyterlab/completer": "^4.1.0", - "@jupyterlab/coreutils": "^6.1.0", - "@jupyterlab/docmanager": "^4.1.0", - "@jupyterlab/docregistry": "^4.1.0", - "@jupyterlab/documentsearch": "^4.1.0", - "@jupyterlab/markedparser-extension": "^4.1.0", - "@jupyterlab/mathjax-extension": "^4.1.0", - "@jupyterlab/notebook": "^4.1.0", - "@jupyterlab/rendermime": "^4.1.0", - "@jupyterlab/services": "^7.1.0", - "@jupyterlab/theme-light-extension": "^4.1.0", - "@jupyterlab/translation": "^4.1.0", - "@jupyterlab/ui-components": "^4.1.0", + "@jupyterlab/application": "^4.1.5", + "@jupyterlab/apputils": "^4.2.5", + "@jupyterlab/codemirror": "^4.1.5", + "@jupyterlab/completer": "^4.1.5", + "@jupyterlab/coreutils": "^6.1.5", + "@jupyterlab/docmanager": "^4.1.5", + "@jupyterlab/docregistry": "^4.1.5", + "@jupyterlab/documentsearch": "^4.1.5", + "@jupyterlab/markedparser-extension": "^4.1.5", + "@jupyterlab/mathjax-extension": "^4.1.5", + "@jupyterlab/notebook": "^4.1.5", + "@jupyterlab/rendermime": "^4.1.5", + "@jupyterlab/services": "^7.1.5", + "@jupyterlab/theme-light-extension": "^4.1.5", + "@jupyterlab/translation": "^4.1.5", + "@jupyterlab/ui-components": "^4.1.5", "@lumino/commands": "^2.2.0", "@lumino/widgets": "^2.3.1" }, diff --git a/examples/notebook/src/commands.ts b/examples/notebook/src/commands.ts index f55a4ad6daf1..63c2223a86b6 100644 --- a/examples/notebook/src/commands.ts +++ b/examples/notebook/src/commands.ts @@ -396,17 +396,17 @@ export const setupCommands = ( command: COMMAND_IDS.findPrevious }, { - selector: '.jp-Notebook.jp-mod-commandMode :focus:not(:read-write)', + selector: '.jp-Notebook.jp-mod-commandMode:not(.jp-mod-readWrite) :focus', keys: ['I', 'I'], command: COMMAND_IDS.interrupt }, { - selector: '.jp-Notebook.jp-mod-commandMode :focus:not(:read-write)', + selector: '.jp-Notebook.jp-mod-commandMode:not(.jp-mod-readWrite) :focus', keys: ['0', '0'], command: COMMAND_IDS.restart }, { - selector: '.jp-Notebook.jp-mod-commandMode :focus:not(:read-write)', + selector: '.jp-Notebook.jp-mod-commandMode:not(.jp-mod-readWrite) :focus', keys: ['Enter'], command: COMMAND_IDS.editMode }, @@ -416,7 +416,7 @@ export const setupCommands = ( command: COMMAND_IDS.commandMode }, { - selector: 'jp-Notebook.jp-mod-commandMode :focus:not(:read-write)', + selector: '.jp-Notebook.jp-mod-commandMode:not(.jp-mod-readWrite) :focus', keys: ['Shift M'], command: COMMAND_IDS.merge }, @@ -426,42 +426,42 @@ export const setupCommands = ( command: COMMAND_IDS.split }, { - selector: 'jp-Notebook.jp-mod-commandMode :focus:not(:read-write)', + selector: '.jp-Notebook.jp-mod-commandMode:not(.jp-mod-readWrite) :focus', keys: ['J'], command: COMMAND_IDS.selectBelow }, { - selector: 'jp-Notebook.jp-mod-commandMode :focus:not(:read-write)', + selector: '.jp-Notebook.jp-mod-commandMode:not(.jp-mod-readWrite) :focus', keys: ['ArrowDown'], command: COMMAND_IDS.selectBelow }, { - selector: 'jp-Notebook.jp-mod-commandMode :focus:not(:read-write)', + selector: '.jp-Notebook.jp-mod-commandMode:not(.jp-mod-readWrite) :focus', keys: ['K'], command: COMMAND_IDS.selectAbove }, { - selector: 'jp-Notebook.jp-mod-commandMode :focus:not(:read-write)', + selector: '.jp-Notebook.jp-mod-commandMode:not(.jp-mod-readWrite) :focus', keys: ['ArrowUp'], command: COMMAND_IDS.selectAbove }, { - selector: 'jp-Notebook.jp-mod-commandMode :focus:not(:read-write)', + selector: '.jp-Notebook.jp-mod-commandMode:not(.jp-mod-readWrite) :focus', keys: ['Shift K'], command: COMMAND_IDS.extendAbove }, { - selector: 'jp-Notebook.jp-mod-commandMode :focus:not(:read-write)', + selector: '.jp-Notebook.jp-mod-commandMode:not(.jp-mod-readWrite) :focus', keys: ['Shift J'], command: COMMAND_IDS.extendBelow }, { - selector: 'jp-Notebook.jp-mod-commandMode :focus:not(:read-write)', + selector: '.jp-Notebook.jp-mod-commandMode:not(.jp-mod-readWrite) :focus', keys: ['Z'], command: COMMAND_IDS.undo }, { - selector: 'jp-Notebook.jp-mod-commandMode :focus:not(:read-write)', + selector: '.jp-Notebook.jp-mod-commandMode:not(.jp-mod-readWrite) :focus', keys: ['Y'], command: COMMAND_IDS.redo } diff --git a/examples/terminal/package.json b/examples/terminal/package.json index a8ed7127259e..2bcd9083655a 100644 --- a/examples/terminal/package.json +++ b/examples/terminal/package.json @@ -1,6 +1,6 @@ { "name": "@jupyterlab/example-terminal", - "version": "4.1.0", + "version": "4.1.5", "private": true, "scripts": { "build": "tsc -p src && webpack", @@ -8,11 +8,11 @@ }, "dependencies": { "@jupyter/web-components": "^0.15.2", - "@jupyterlab/application": "^4.1.0", - "@jupyterlab/coreutils": "^6.1.0", - "@jupyterlab/services": "^7.1.0", - "@jupyterlab/terminal": "^4.1.0", - "@jupyterlab/theme-light-extension": "^4.1.0", + "@jupyterlab/application": "^4.1.5", + "@jupyterlab/coreutils": "^6.1.5", + "@jupyterlab/services": "^7.1.5", + "@jupyterlab/terminal": "^4.1.5", + "@jupyterlab/theme-light-extension": "^4.1.5", "@lumino/widgets": "^2.3.1" }, "devDependencies": { diff --git a/galata/README.md b/galata/README.md index 25fb80f93460..08d0a9904fd4 100644 --- a/galata/README.md +++ b/galata/README.md @@ -76,7 +76,7 @@ Then start the server with: jupyter lab --config jupyter_server_test_config.py ``` -> If you need to customize the set up for galata, you can look at the [`configure_jupyter_server`](https://github.com/jupyterlab/jupyterlab/tree/main/jupyterlab/galata/__init__.py) definition. +> If you need to customize the set up for galata, you can look at the [`configure_jupyter_server`](https://github.com/jupyterlab/jupyterlab/tree/4.1.x/jupyterlab/galata/__init__.py) definition. ### Run test project diff --git a/galata/extension/package.json b/galata/extension/package.json index 6cc768f0126a..3a140b5bcf07 100644 --- a/galata/extension/package.json +++ b/galata/extension/package.json @@ -1,6 +1,6 @@ { "name": "@jupyterlab/galata-extension", - "version": "5.1.0", + "version": "5.1.5", "private": true, "description": "JupyterLab UI Testing Framework Extension.", "keywords": [ @@ -32,20 +32,20 @@ "clean:lib": "rimraf ../lib/extension tsconfig.tsbuildinfo" }, "dependencies": { - "@jupyterlab/application": "^4.1.0", - "@jupyterlab/apputils": "^4.2.0", - "@jupyterlab/cells": "^4.1.0", - "@jupyterlab/debugger": "^4.1.0", - "@jupyterlab/docmanager": "^4.1.0", - "@jupyterlab/nbformat": "^4.1.0", - "@jupyterlab/notebook": "^4.1.0", - "@jupyterlab/settingregistry": "^4.1.0", + "@jupyterlab/application": "^4.1.5", + "@jupyterlab/apputils": "^4.2.5", + "@jupyterlab/cells": "^4.1.5", + "@jupyterlab/debugger": "^4.1.5", + "@jupyterlab/docmanager": "^4.1.5", + "@jupyterlab/nbformat": "^4.1.5", + "@jupyterlab/notebook": "^4.1.5", + "@jupyterlab/settingregistry": "^4.1.5", "@lumino/algorithm": "^2.0.1", "@lumino/coreutils": "^2.1.2", "@lumino/signaling": "^2.1.2" }, "devDependencies": { - "@jupyterlab/builder": "^4.1.0", + "@jupyterlab/builder": "^4.1.5", "rimraf": "~5.0.5", "typescript": "~5.1.6" }, diff --git a/galata/package.json b/galata/package.json index 800d505cd6ef..76509028475b 100644 --- a/galata/package.json +++ b/galata/package.json @@ -1,6 +1,6 @@ { "name": "@jupyterlab/galata", - "version": "5.1.0", + "version": "5.1.5", "description": "JupyterLab UI Testing Framework", "homepage": "https://github.com/jupyterlab/jupyterlab", "bugs": { @@ -44,15 +44,15 @@ "test:update": "jlpm test:base:update && jlpm test:benchmark:update" }, "dependencies": { - "@jupyterlab/application": "^4.1.0", - "@jupyterlab/apputils": "^4.2.0", - "@jupyterlab/coreutils": "^6.1.0", - "@jupyterlab/debugger": "^4.1.0", - "@jupyterlab/docmanager": "^4.1.0", - "@jupyterlab/nbformat": "^4.1.0", - "@jupyterlab/notebook": "^4.1.0", - "@jupyterlab/services": "^7.1.0", - "@jupyterlab/settingregistry": "^4.1.0", + "@jupyterlab/application": "^4.1.5", + "@jupyterlab/apputils": "^4.2.5", + "@jupyterlab/coreutils": "^6.1.5", + "@jupyterlab/debugger": "^4.1.5", + "@jupyterlab/docmanager": "^4.1.5", + "@jupyterlab/nbformat": "^4.1.5", + "@jupyterlab/notebook": "^4.1.5", + "@jupyterlab/services": "^7.1.5", + "@jupyterlab/settingregistry": "^4.1.5", "@lumino/coreutils": "^2.1.2", "@playwright/test": "^1.32.2", "@stdlib/stats": "~0.0.13", diff --git a/galata/test/benchmark/notebook.spec.ts-snapshots/large-code-notebook-ipynb-benchmark-linux.png b/galata/test/benchmark/notebook.spec.ts-snapshots/large-code-notebook-ipynb-benchmark-linux.png index d92cf065c4d2..195ac18b7bed 100644 Binary files a/galata/test/benchmark/notebook.spec.ts-snapshots/large-code-notebook-ipynb-benchmark-linux.png and b/galata/test/benchmark/notebook.spec.ts-snapshots/large-code-notebook-ipynb-benchmark-linux.png differ diff --git a/galata/test/documentation/internationalization.test.ts-snapshots/language-chinese-documentation-linux.png b/galata/test/documentation/internationalization.test.ts-snapshots/language-chinese-documentation-linux.png index e184a4c00d77..03542ba99af0 100644 Binary files a/galata/test/documentation/internationalization.test.ts-snapshots/language-chinese-documentation-linux.png and b/galata/test/documentation/internationalization.test.ts-snapshots/language-chinese-documentation-linux.png differ diff --git a/galata/test/jupyterlab/console.test.ts b/galata/test/jupyterlab/console.test.ts new file mode 100644 index 000000000000..6a12e9663637 --- /dev/null +++ b/galata/test/jupyterlab/console.test.ts @@ -0,0 +1,44 @@ +// Copyright (c) Jupyter Development Team. +// Distributed under the terms of the Modified BSD License. + +import { expect, test } from '@jupyterlab/galata'; + +const CELL_EDITOR_SELECTOR = '.jp-InputArea-editor'; +const CODE_MIRROR_CURSOR = '.cm-cursor'; + +test.describe('Console', () => { + test.beforeEach(async ({ page }) => { + await page.menu.clickMenuItem('File>New>Console'); + + await page.click('button:has-text("Select")'); + + await page.locator('[aria-label="Code Cell Content"]').waitFor(); + await page.locator('text=| Idle').waitFor(); + }); + + test('Executed cells should become read-only', async ({ page }) => { + await page.keyboard.type('2 + 2'); + await page.keyboard.press('Shift+Enter'); + + const executedCell = page.locator( + '[aria-label="Code Cell Content with Output"]' + ); + await executedCell.waitFor(); + + const cellEditor = executedCell.locator(CELL_EDITOR_SELECTOR); + expect(await cellEditor.innerText()).toBe('2 + 2'); + + // Focus the editor + await cellEditor.click(); + + // Should not display the cursor + const cursor = cellEditor.locator(CODE_MIRROR_CURSOR); + await expect.soft(cursor).toBeHidden(); + + // Try to type something into the editor + await cellEditor.type('more text'); + + // Expect the editor content to not change + expect(await cellEditor.innerText()).toBe('2 + 2'); + }); +}); diff --git a/galata/test/jupyterlab/contextmenu.test.ts b/galata/test/jupyterlab/contextmenu.test.ts index c8d2ce8ba3c3..b535eb308c19 100644 --- a/galata/test/jupyterlab/contextmenu.test.ts +++ b/galata/test/jupyterlab/contextmenu.test.ts @@ -192,4 +192,30 @@ test.describe('Application Context Menu', () => { const menu = await page.menu.getOpenMenu(); expect(await menu.screenshot()).toMatchSnapshot(imageName); }); + + test('Open console context menu', async ({ page }) => { + await page.menu.clickMenuItem('File>New>Console'); + await page.click('button:has-text("Select")'); + + await page.locator('[aria-label="Code Cell Content"]').waitFor(); + await page.locator('text=| Idle').waitFor(); + + // Over prompt cell + await page.click('.jp-CodeConsole-promptCell', { + button: 'right' + }); + expect(await page.menu.isAnyOpen()).toBe(true); + let imageName = `console-prompt.png`; + let menu = await page.menu.getOpenMenu(); + expect.soft(await menu.screenshot()).toMatchSnapshot(imageName); + + // Over console content + await page.click('.jp-CodeConsole-content', { + button: 'right' + }); + imageName = `console-content.png`; + menu = await page.menu.getOpenMenu(); + expect(await page.menu.isAnyOpen()).toBe(true); + expect(await menu.screenshot()).toMatchSnapshot(imageName); + }); }); diff --git a/galata/test/jupyterlab/contextmenu.test.ts-snapshots/console-content-jupyterlab-linux.png b/galata/test/jupyterlab/contextmenu.test.ts-snapshots/console-content-jupyterlab-linux.png new file mode 100644 index 000000000000..4f2a545bbac0 Binary files /dev/null and b/galata/test/jupyterlab/contextmenu.test.ts-snapshots/console-content-jupyterlab-linux.png differ diff --git a/galata/test/jupyterlab/contextmenu.test.ts-snapshots/console-prompt-jupyterlab-linux.png b/galata/test/jupyterlab/contextmenu.test.ts-snapshots/console-prompt-jupyterlab-linux.png new file mode 100644 index 000000000000..fea0e819cb0e Binary files /dev/null and b/galata/test/jupyterlab/contextmenu.test.ts-snapshots/console-prompt-jupyterlab-linux.png differ diff --git a/galata/test/jupyterlab/contextmenu.test.ts-snapshots/fileeditor-jupyterlab-linux.png b/galata/test/jupyterlab/contextmenu.test.ts-snapshots/fileeditor-jupyterlab-linux.png index b7de06b2ec24..d91bd6bd43bb 100644 Binary files a/galata/test/jupyterlab/contextmenu.test.ts-snapshots/fileeditor-jupyterlab-linux.png and b/galata/test/jupyterlab/contextmenu.test.ts-snapshots/fileeditor-jupyterlab-linux.png differ diff --git a/galata/test/jupyterlab/debugger.test.ts-snapshots/start-debug-session-script-sources-jupyterlab-linux.png b/galata/test/jupyterlab/debugger.test.ts-snapshots/start-debug-session-script-sources-jupyterlab-linux.png index 71f4e3df4dad..8c0615310aa5 100644 Binary files a/galata/test/jupyterlab/debugger.test.ts-snapshots/start-debug-session-script-sources-jupyterlab-linux.png and b/galata/test/jupyterlab/debugger.test.ts-snapshots/start-debug-session-script-sources-jupyterlab-linux.png differ diff --git a/galata/test/jupyterlab/debugger.test.ts-snapshots/start-debug-session-sources-jupyterlab-linux.png b/galata/test/jupyterlab/debugger.test.ts-snapshots/start-debug-session-sources-jupyterlab-linux.png index 19d8db7e1078..a35d44d2c9c0 100644 Binary files a/galata/test/jupyterlab/debugger.test.ts-snapshots/start-debug-session-sources-jupyterlab-linux.png and b/galata/test/jupyterlab/debugger.test.ts-snapshots/start-debug-session-sources-jupyterlab-linux.png differ diff --git a/galata/test/jupyterlab/notebook-mobile.test.ts-snapshots/mobile-layout-jupyterlab-linux.png b/galata/test/jupyterlab/notebook-mobile.test.ts-snapshots/mobile-layout-jupyterlab-linux.png index e7fc0c88e0ec..9b99de6442b3 100644 Binary files a/galata/test/jupyterlab/notebook-mobile.test.ts-snapshots/mobile-layout-jupyterlab-linux.png and b/galata/test/jupyterlab/notebook-mobile.test.ts-snapshots/mobile-layout-jupyterlab-linux.png differ diff --git a/galata/test/jupyterlab/notebook-scroll-no-windowing.test.ts b/galata/test/jupyterlab/notebook-scroll-no-windowing.test.ts index d1c504f3c1e9..cb3a18fce136 100644 --- a/galata/test/jupyterlab/notebook-scroll-no-windowing.test.ts +++ b/galata/test/jupyterlab/notebook-scroll-no-windowing.test.ts @@ -5,6 +5,7 @@ import { expect, galata, test } from '@jupyterlab/galata'; import * as path from 'path'; import { + dragCellTo, notebookViewportRatio, positionCellPartiallyBelowViewport } from './utils'; @@ -62,6 +63,106 @@ test.describe('Notebook scroll on navigation (no windowing)', () => { } }); +test.describe('Notebook scroll on dragging cells (no windowing)', () => { + test.beforeEach(async ({ page, tmpPath }) => { + await page.contents.uploadFile( + path.resolve(__dirname, `./notebooks/${fileName}`), + `${tmpPath}/${fileName}` + ); + + await page.notebook.openByPath(`${tmpPath}/${fileName}`); + await page.notebook.activate(fileName); + }); + const NOTEBOOK_SCROLLER = '.jp-WindowedPanel-outer'; + const NOTEBOOK_CONTENT = '.jp-WindowedPanel-inner'; + const EDGE_MARGIN = 10; + + test.afterEach(async ({ page, tmpPath }) => { + await page.contents.deleteDirectory(tmpPath); + }); + + test('Scroll down on dragging cell to the bottom edge', async ({ page }) => { + const firstCellLocator = page.locator( + '.jp-Cell[data-windowed-list-index="0"]' + ); + const lastCellLocator = page.locator( + '.jp-Cell[data-windowed-list-index="19"]' + ); + const scroller = page.locator(NOTEBOOK_SCROLLER); + await firstCellLocator.scrollIntoViewIfNeeded(); + + const scrollerBBox = await scroller.boundingBox(); + const notebookContentHeight = ( + await page.locator(NOTEBOOK_CONTENT).boundingBox() + ).height; + + // Ensure the notebook is scrolled correctly and last cell is not visible + const before = await scroller.evaluate(node => node.scrollTop); + expect(before).toBe(0); + await expect(lastCellLocator).not.toBeInViewport(); + + // Emulate drag and drop + await dragCellTo(page, { + cell: firstCellLocator, + x: scrollerBBox.x + 0.5 * scrollerBBox.width, + y: scrollerBBox.y + scrollerBBox.height - EDGE_MARGIN, + stopCondition: async () => { + const scrollTop = await scroller.evaluate(node => node.scrollTop); + return scrollTop >= notebookContentHeight - 100; + } + }); + + // The notebook should have scrolled down and the last cell should be visible + const after = await scroller.evaluate(node => node.scrollTop); + expect(after).toBeGreaterThan(before); + await expect(lastCellLocator).toBeInViewport(); + }); + + test('Scroll up on dragging cell to the top edge', async ({ page }) => { + const firstCellLocator = page.locator( + '.jp-Cell[data-windowed-list-index="0"]' + ); + const lastCellLocator = page.locator( + '.jp-Cell[data-windowed-list-index="19"]' + ); + + const scroller = page.locator(NOTEBOOK_SCROLLER); + const scrollerBBox = await scroller.boundingBox(); + const notebookContentHeight = ( + await page.locator(NOTEBOOK_CONTENT).boundingBox() + ).height; + + // Scroll notebook to the bottom, leaving top 200px visible + await page.mouse.move( + scrollerBBox.x + 0.5 * scrollerBBox.width, + scrollerBBox.y + 0.5 * scrollerBBox.height + ); + await page.mouse.wheel(0, notebookContentHeight - 200); + await lastCellLocator.scrollIntoViewIfNeeded(); + + // Ensure the notebook is scrolled correctly and first cell is not visible + const before = await scroller.evaluate(node => node.scrollTop); + expect(before).toBeGreaterThan(notebookContentHeight * 0.75); + await expect(firstCellLocator).not.toBeInViewport(); + + // Emulate drag and drop + await dragCellTo(page, { + cell: lastCellLocator, + x: scrollerBBox.x + 0.5 * scrollerBBox.width, + y: scrollerBBox.y + EDGE_MARGIN, + stopCondition: async () => { + const scrollTop = await scroller.evaluate(node => node.scrollTop); + return scrollTop <= 50; + } + }); + + // The notebook should have scrolled up and the first cell should be visible + const after = await scroller.evaluate(node => node.scrollTop); + expect(after).toBeLessThan(before); + await expect(firstCellLocator).toBeInViewport(); + }); +}); + test.describe('Notebook scroll on execution (no windowing)', () => { test.beforeEach(async ({ page, tmpPath }) => { await page.contents.uploadFile( diff --git a/galata/test/jupyterlab/notebook-scroll.test.ts b/galata/test/jupyterlab/notebook-scroll.test.ts index 61fb55b815d2..d50d835e6970 100644 --- a/galata/test/jupyterlab/notebook-scroll.test.ts +++ b/galata/test/jupyterlab/notebook-scroll.test.ts @@ -5,6 +5,7 @@ import { expect, galata, test } from '@jupyterlab/galata'; import * as path from 'path'; import { + dragCellTo, notebookViewportRatio, positionCellPartiallyBelowViewport } from './utils'; @@ -62,6 +63,106 @@ test.describe('Notebook scroll on navigation (with windowing)', () => { } }); +test.describe('Notebook scroll on dragging cells (with windowing)', () => { + test.beforeEach(async ({ page, tmpPath }) => { + await page.contents.uploadFile( + path.resolve(__dirname, `./notebooks/${fileName}`), + `${tmpPath}/${fileName}` + ); + + await page.notebook.openByPath(`${tmpPath}/${fileName}`); + await page.notebook.activate(fileName); + }); + const NOTEBOOK_SCROLLER = '.jp-WindowedPanel-outer'; + const NOTEBOOK_CONTENT = '.jp-WindowedPanel-inner'; + const EDGE_MARGIN = 10; + + test.afterEach(async ({ page, tmpPath }) => { + await page.contents.deleteDirectory(tmpPath); + }); + + test('Scroll down on dragging cell to the bottom edge', async ({ page }) => { + const firstCellLocator = page.locator( + '.jp-Cell[data-windowed-list-index="0"]' + ); + const lastCellLocator = page.locator( + '.jp-Cell[data-windowed-list-index="19"]' + ); + const scroller = page.locator(NOTEBOOK_SCROLLER); + await firstCellLocator.scrollIntoViewIfNeeded(); + + const scrollerBBox = await scroller.boundingBox(); + const notebookContentHeight = ( + await page.locator(NOTEBOOK_CONTENT).boundingBox() + ).height; + + // Ensure the notebook is scrolled correctly and last cell is not visible + const before = await scroller.evaluate(node => node.scrollTop); + expect(before).toBe(0); + await expect(lastCellLocator).not.toBeInViewport(); + + // Emulate drag and drop + await dragCellTo(page, { + cell: firstCellLocator, + x: scrollerBBox.x + 0.5 * scrollerBBox.width, + y: scrollerBBox.y + scrollerBBox.height - EDGE_MARGIN, + stopCondition: async () => { + const scrollTop = await scroller.evaluate(node => node.scrollTop); + return scrollTop >= notebookContentHeight - 100; + } + }); + + // The notebook should have scrolled down and the last cell should be visible + const after = await scroller.evaluate(node => node.scrollTop); + expect(after).toBeGreaterThan(before); + await expect(lastCellLocator).toBeInViewport(); + }); + + test('Scroll up on dragging cell to the top edge', async ({ page }) => { + const firstCellLocator = page.locator( + '.jp-Cell[data-windowed-list-index="0"]' + ); + const lastCellLocator = page.locator( + '.jp-Cell[data-windowed-list-index="19"]' + ); + + const scroller = page.locator(NOTEBOOK_SCROLLER); + const scrollerBBox = await scroller.boundingBox(); + const notebookContentHeight = ( + await page.locator(NOTEBOOK_CONTENT).boundingBox() + ).height; + + // Scroll notebook to the bottom, leaving top 200px visible + await page.mouse.move( + scrollerBBox.x + 0.5 * scrollerBBox.width, + scrollerBBox.y + 0.5 * scrollerBBox.height + ); + await page.mouse.wheel(0, notebookContentHeight - 200); + await lastCellLocator.scrollIntoViewIfNeeded(); + + // Ensure the notebook is scrolled correctly and first cell is not visible + const before = await scroller.evaluate(node => node.scrollTop); + expect(before).toBeGreaterThan(notebookContentHeight * 0.75); + await expect(firstCellLocator).not.toBeInViewport(); + + // Emulate drag and drop + await dragCellTo(page, { + cell: lastCellLocator, + x: scrollerBBox.x + 0.5 * scrollerBBox.width, + y: scrollerBBox.y + EDGE_MARGIN, + stopCondition: async () => { + const scrollTop = await scroller.evaluate(node => node.scrollTop); + return scrollTop <= 50; + } + }); + + // The notebook should have scrolled up and the first cell should be visible + const after = await scroller.evaluate(node => node.scrollTop); + expect(after).toBeLessThan(before); + await expect(firstCellLocator).toBeInViewport(); + }); +}); + test.describe('Notebook scroll on execution (with windowing)', () => { test.beforeEach(async ({ page, tmpPath }) => { await page.contents.uploadFile( diff --git a/galata/test/jupyterlab/notebook-search.test.ts-snapshots/search-new-outputs-jupyterlab-linux.png b/galata/test/jupyterlab/notebook-search.test.ts-snapshots/search-new-outputs-jupyterlab-linux.png index 57819f74e41c..baba7c87fca7 100644 Binary files a/galata/test/jupyterlab/notebook-search.test.ts-snapshots/search-new-outputs-jupyterlab-linux.png and b/galata/test/jupyterlab/notebook-search.test.ts-snapshots/search-new-outputs-jupyterlab-linux.png differ diff --git a/galata/test/jupyterlab/notebook-search.test.ts-snapshots/search-on-new-cell-jupyterlab-linux.png b/galata/test/jupyterlab/notebook-search.test.ts-snapshots/search-on-new-cell-jupyterlab-linux.png index 33f07d6f7301..4c02210b2abd 100644 Binary files a/galata/test/jupyterlab/notebook-search.test.ts-snapshots/search-on-new-cell-jupyterlab-linux.png and b/galata/test/jupyterlab/notebook-search.test.ts-snapshots/search-on-new-cell-jupyterlab-linux.png differ diff --git a/galata/test/jupyterlab/notebook-search.test.ts-snapshots/search-within-outputs-jupyterlab-linux.png b/galata/test/jupyterlab/notebook-search.test.ts-snapshots/search-within-outputs-jupyterlab-linux.png index 686d8e42575a..41bc934410e0 100644 Binary files a/galata/test/jupyterlab/notebook-search.test.ts-snapshots/search-within-outputs-jupyterlab-linux.png and b/galata/test/jupyterlab/notebook-search.test.ts-snapshots/search-within-outputs-jupyterlab-linux.png differ diff --git a/galata/test/jupyterlab/notebook-toolbar.test.ts b/galata/test/jupyterlab/notebook-toolbar.test.ts index 977fc6c11ffc..d46d10c82d39 100644 --- a/galata/test/jupyterlab/notebook-toolbar.test.ts +++ b/galata/test/jupyterlab/notebook-toolbar.test.ts @@ -2,6 +2,7 @@ // Distributed under the terms of the Modified BSD License. import { expect, IJupyterLabPageFixture, test } from '@jupyterlab/galata'; +import { setSidebarWidth } from './utils'; const fileName = 'notebook.ipynb'; @@ -14,6 +15,60 @@ async function populateNotebook(page: IJupyterLabPageFixture) { await page.notebook.addCell('code', '2 ** 3'); } +/** + * Adds an item in notebook toolbar using the extension system. + */ +async function addWidgetsInNotebookToolbar( + page: IJupyterLabPageFixture, + notebook: string, + content: string, + afterElem: string +) { + await page.notebook.activate(notebook); + await page.evaluate( + options => { + const { content, afterElem } = options; + + // A minimal widget class, with required field for adding an item in toolbar. + class MinimalWidget { + constructor(node) { + this.node = node; + } + addClass() {} + node = null; + processMessage() {} + hasClass(name) { + return false; + } + _parent = null; + get parent() { + return this._parent; + } + set parent(p) { + this._parent?.layout.removeWidget(this); + this._parent = p; + } + } + + const plugin = { + id: 'my-test-plugin', + activate: app => { + const toolbar = app.shell.activeWidget.toolbar; + const node = document.createElement('div'); + node.classList.add('jp-CommandToolbarButton'); + node.classList.add('jp-Toolbar-item'); + node.textContent = content; + const widget = new MinimalWidget(node); + toolbar.insertAfter(afterElem, content, widget); + } + }; + jupyterapp.registerPlugin(plugin); + jupyterapp.activatePlugin('my-test-plugin'); + }, + { content, afterElem } + ); +} + test.describe('Notebook Toolbar', () => { test.beforeEach(async ({ page }) => { await page.notebook.createNew(fileName); @@ -53,7 +108,7 @@ test.describe('Notebook Toolbar', () => { test('Paste cell', async ({ page }) => { // Cut cell to populate clipboard - await page.notebook.selectCells(1); + await page.notebook.selectCells(0); await page.notebook.clickToolbarItem('cut'); const imageName = 'paste-cell.png'; @@ -61,9 +116,9 @@ test.describe('Notebook Toolbar', () => { await page.notebook.clickToolbarItem('paste'); const nbPanel = await page.notebook.getNotebookInPanel(); - await expect( - page.locator('.jp-Notebook-cell.jp-mod-active .jp-cell-toolbar') - ).toBeVisible(); + await expect + .soft(page.locator('.jp-Notebook-cell.jp-mod-active .jp-cell-toolbar')) + .toBeVisible(); expect(await nbPanel.screenshot()).toMatchSnapshot(imageName); }); @@ -141,3 +196,127 @@ test('Toolbar items act on owner widget', async ({ page }) => { expect(classlistEnd.split(' ')).toContain('jp-mod-current'); expect(await page.notebook.getCellCount()).toEqual(2); }); + +test.describe('Reactive toolbar', () => { + test.beforeEach(async ({ page }) => { + await page.notebook.createNew(fileName); + }); + + test('Reducing toolbar width should display opener item', async ({ + page + }) => { + const toolbar = page.locator('.jp-NotebookPanel-toolbar'); + await expect(toolbar.locator('.jp-Toolbar-item:visible')).toHaveCount(14); + await expect( + toolbar.locator('.jp-Toolbar-responsive-opener') + ).not.toBeVisible(); + + await setSidebarWidth(page, 520); + + await expect( + toolbar.locator('.jp-Toolbar-responsive-opener') + ).toBeVisible(); + + await expect(toolbar.locator('.jp-Toolbar-item:visible')).toHaveCount(12); + }); + + test('Items in popup toolbar should have the same order', async ({ + page + }) => { + const toolbar = page.locator('.jp-NotebookPanel-toolbar'); + + await setSidebarWidth(page, 520); + + await toolbar.locator('.jp-Toolbar-responsive-opener').click(); + + // A 'visible' selector is added because there is another response popup element + // when running in playwright (don't know where it come from, it is an empty + // toolbar). + const popupToolbar = page.locator( + 'body > .jp-Toolbar-responsive-popup:visible' + ); + const popupToolbarItems = popupToolbar.locator('.jp-Toolbar-item:visible'); + await expect(popupToolbarItems).toHaveCount(3); + + const itemChildClasses = [ + '.jp-DebuggerBugButton', + '.jp-Toolbar-kernelName', + '.jp-Notebook-ExecutionIndicator' + ]; + + for (let i = 0; i < (await popupToolbarItems.count()); i++) { + await expect( + popupToolbarItems.nth(i).locator(itemChildClasses[i]) + ).toHaveCount(1); + } + }); + + test('Item added from extension should be correctly placed', async ({ + page + }) => { + const toolbar = page.locator('.jp-NotebookPanel-toolbar'); + await addWidgetsInNotebookToolbar( + page, + 'notebook.ipynb', + 'new item 1', + 'cellType' + ); + + const toolbarItems = toolbar.locator('.jp-Toolbar-item:visible'); + await expect(toolbarItems.nth(10)).toHaveText('new item 1'); + }); + + test('Item should be correctly placed after resize', async ({ page }) => { + const toolbar = page.locator('.jp-NotebookPanel-toolbar'); + await addWidgetsInNotebookToolbar( + page, + 'notebook.ipynb', + 'new item 1', + 'cellType' + ); + + await setSidebarWidth(page, 600); + await toolbar.locator('.jp-Toolbar-responsive-opener').click(); + + // A 'visible' selector is added because there is another response popup element + // when running in playwright (don't know where it come from, it is an empty + // toolbar). + const popupToolbar = page.locator( + 'body > .jp-Toolbar-responsive-popup:visible' + ); + const popupToolbarItems = popupToolbar.locator('.jp-Toolbar-item:visible'); + + await expect(popupToolbarItems.nth(1)).toHaveText('new item 1'); + + await setSidebarWidth(page); + const toolbarItems = toolbar.locator('.jp-Toolbar-item:visible'); + await expect(toolbarItems.nth(10)).toHaveText('new item 1'); + }); + + test('Item added from extension should be correctly placed in popup toolbar', async ({ + page + }) => { + const toolbar = page.locator('.jp-NotebookPanel-toolbar'); + + await setSidebarWidth(page, 600); + + await addWidgetsInNotebookToolbar( + page, + 'notebook.ipynb', + 'new item 1', + 'cellType' + ); + + await toolbar.locator('.jp-Toolbar-responsive-opener').click(); + + // A 'visible' selector is added because there is another response popup element + // when running in playwright (don't know where it come from, it is an empty + // toolbar). + const popupToolbar = page.locator( + 'body > .jp-Toolbar-responsive-popup:visible' + ); + const popupToolbarItems = popupToolbar.locator('.jp-Toolbar-item:visible'); + + await expect(popupToolbarItems.nth(1)).toHaveText('new item 1'); + }); +}); diff --git a/galata/test/jupyterlab/notebook-toolbar.test.ts-snapshots/paste-cell-jupyterlab-linux.png b/galata/test/jupyterlab/notebook-toolbar.test.ts-snapshots/paste-cell-jupyterlab-linux.png index bd86b5bafb42..05843142d38c 100644 Binary files a/galata/test/jupyterlab/notebook-toolbar.test.ts-snapshots/paste-cell-jupyterlab-linux.png and b/galata/test/jupyterlab/notebook-toolbar.test.ts-snapshots/paste-cell-jupyterlab-linux.png differ diff --git a/galata/test/jupyterlab/output-scrolling.test.ts-snapshots/prompt-overlay-hover-normal-jupyterlab-linux.png b/galata/test/jupyterlab/output-scrolling.test.ts-snapshots/prompt-overlay-hover-normal-jupyterlab-linux.png index ad0f85ac2956..52627c4f9cbb 100644 Binary files a/galata/test/jupyterlab/output-scrolling.test.ts-snapshots/prompt-overlay-hover-normal-jupyterlab-linux.png and b/galata/test/jupyterlab/output-scrolling.test.ts-snapshots/prompt-overlay-hover-normal-jupyterlab-linux.png differ diff --git a/galata/test/jupyterlab/output-scrolling.test.ts-snapshots/prompt-overlay-hover-scroll-jupyterlab-linux.png b/galata/test/jupyterlab/output-scrolling.test.ts-snapshots/prompt-overlay-hover-scroll-jupyterlab-linux.png index fb215064a427..a547aa1928c0 100644 Binary files a/galata/test/jupyterlab/output-scrolling.test.ts-snapshots/prompt-overlay-hover-scroll-jupyterlab-linux.png and b/galata/test/jupyterlab/output-scrolling.test.ts-snapshots/prompt-overlay-hover-scroll-jupyterlab-linux.png differ diff --git a/galata/test/jupyterlab/outputarea-stdin.test.ts b/galata/test/jupyterlab/outputarea-stdin.test.ts index 9eb578c440b2..2fefbf3a8dcd 100644 --- a/galata/test/jupyterlab/outputarea-stdin.test.ts +++ b/galata/test/jupyterlab/outputarea-stdin.test.ts @@ -14,6 +14,12 @@ print('before sleep') sleep(0.1) print('after sleep')`; +const openShadowDOM = `\ +from IPython.display import HTML +HTML("""
""")`; + const ACTIVE_INPUT = '.jp-OutputArea-stdin-item:not(.jp-OutputArea-stdin-hiding) .jp-Stdin-input'; @@ -67,31 +73,39 @@ test.describe('Stdin for ipdb', () => { await expect(page.locator(ACTIVE_INPUT)).toHaveValue('foofoox'); }); - test('Typing in stdin box', async ({ page }) => { - // Test to ensure that notebook shortcuts do not capture text typed into inputs. - // This may not be sufficient to ensure no conflicts with other languages but - // should catch the most severe issues. - const alphabet = 'abcdefghijklmnopqrstuvwxyz'; - const digits = '0123456789'; - await page.notebook.setCell(0, 'code', 'input()'); - // Run the selected (only) cell without proceeding and without waiting - // for it to complete (as it should stay waiting for input). - await page.keyboard.press('Control+Enter'); - - await page.waitForSelector('.jp-Stdin-input'); - for (const letter of alphabet) { - await page.keyboard.press(`Key${letter.toUpperCase()}`); - } - for (const letter of alphabet) { - await page.keyboard.press(`Shift+Key${letter.toUpperCase()}`); - } - for (const digit of digits) { - await page.keyboard.press(`Digit${digit}`); - } - await expect(page.locator('.jp-Stdin-input')).toHaveValue( - alphabet + alphabet.toUpperCase() + digits - ); - }); + const typingScenarios = [ + { name: 'stdin box', code: 'input()', selector: '.jp-Stdin-input' }, + { name: 'shadow DOM input', code: openShadowDOM, selector: '#shadow-input' } + ]; + for (const testCase of typingScenarios) { + test(`Typing in ${testCase.name}`, async ({ page }) => { + // Test to ensure that notebook shortcuts do not capture text typed into inputs. + // This may not be sufficient to ensure no conflicts with other languages but + // should catch the most severe issues. + const alphabet = 'abcdefghijklmnopqrstuvwxyz'; + const digits = '0123456789'; + await page.notebook.setCell(0, 'code', testCase.code); + // Run the selected (only) cell without proceeding and without waiting + // for it to complete (as it should stay waiting for input). + await page.keyboard.press('Control+Enter'); + + await page.waitForSelector(testCase.selector); + await page.focus(testCase.selector); + + for (const letter of alphabet) { + await page.keyboard.press(`Key${letter.toUpperCase()}`); + } + for (const letter of alphabet) { + await page.keyboard.press(`Shift+Key${letter.toUpperCase()}`); + } + for (const digit of digits) { + await page.keyboard.press(`Digit${digit}`); + } + await expect(page.locator(testCase.selector)).toHaveValue( + alphabet + alphabet.toUpperCase() + digits + ); + }); + } test('Subsequent execution in short succession', async ({ page }) => { await page.notebook.setCell(0, 'code', loopedInput); diff --git a/galata/test/jupyterlab/toolbars.test.ts b/galata/test/jupyterlab/toolbars.test.ts index 3fe9be02cdd7..e18fb507017f 100644 --- a/galata/test/jupyterlab/toolbars.test.ts +++ b/galata/test/jupyterlab/toolbars.test.ts @@ -37,3 +37,47 @@ toolbars.forEach(([plugin, parameter]) => { expect(missingCommands).toEqual([]); }); }); +test.describe('Toolbar Button', () => { + test.beforeEach(async ({ page, tmpPath }) => { + await page.notebook.createNew(); + }); + + test('Render Switch Kernel ToolbarButton in default theme', async ({ + page + }) => { + const label = await page.$( + 'jp-button.jp-Toolbar-kernelName .jp-ToolbarButtonComponent-label' + ); + const labelColor = await page.evaluate( + el => getComputedStyle(el).color, + label + ); + + const color = await page.evaluate(() => + getComputedStyle(document.body) + .getPropertyValue('--jp-ui-font-color1') + .trim() + ); + + expect(labelColor).toEqual(color); + }); + + test('Render Switch Kernel ToolbarButton in dark theme', async ({ page }) => { + await page.theme.setDarkTheme(); + const label = await page.$( + 'jp-button.jp-Toolbar-kernelName .jp-ToolbarButtonComponent-label' + ); + const labelColor = await page.evaluate( + el => getComputedStyle(el).color, + label + ); + + const color = await page.evaluate(() => + getComputedStyle(document.body) + .getPropertyValue('--jp-ui-font-color1') + .trim() + ); + + expect(labelColor).toEqual(color); + }); +}); diff --git a/galata/test/jupyterlab/utils.ts b/galata/test/jupyterlab/utils.ts index 1fb2568a5816..0c67f53a8f49 100644 --- a/galata/test/jupyterlab/utils.ts +++ b/galata/test/jupyterlab/utils.ts @@ -1,9 +1,10 @@ // Copyright (c) Jupyter Development Team. // Distributed under the terms of the Modified BSD License. import { IJupyterLabPageFixture } from '@jupyterlab/galata'; -import { ElementHandle } from '@playwright/test'; +import { ElementHandle, Locator } from '@playwright/test'; const OUTER_SELECTOR = '.jp-WindowedPanel-outer'; +const DRAGGABLE_AREA = '.jp-InputArea-prompt'; /** * Measure how much of the **notebook** viewport does a cell take up. @@ -49,3 +50,63 @@ export async function positionCellPartiallyBelowViewport( cellBbox.y - notebookBbox.y - notebookBbox.height + cellBbox.height * ratio; await page.mouse.wheel(0, scrollOffset); } + +/** + * Drag a cell to a given position, and wait until specified condition is met. + */ +export async function dragCellTo( + page: IJupyterLabPageFixture, + options: { + cell: Locator; + x: number; + y: number; + stopCondition: () => Promise; + } +) { + const dragHandle = options.cell.locator(DRAGGABLE_AREA); + const handleBBox = await dragHandle.boundingBox(); + + // Emulate drag and drop + await dragHandle.click(); + await page.mouse.move( + handleBBox.x + 0.5 * handleBBox.width, + handleBBox.y + 0.5 * handleBBox.height + ); + await page.mouse.down(); + await page.mouse.move(options.x, options.y); + await page.waitForCondition(options.stopCondition); + await page.mouse.up(); +} + +/** + * Set the sidebar width + * + * @param page Page object + * @param width Sidebar width in pixels + * @param side Which sidebar to set: 'left' or 'right' + */ +export async function setSidebarWidth( + page: IJupyterLabPageFixture, + width = 251, + side: 'left' | 'right' = 'left' +): Promise { + const handles = page.locator( + '#jp-main-split-panel > .lm-SplitPanel-handle:not(.lm-mod-hidden)' + ); + const splitHandle = + side === 'left' + ? await handles.first().elementHandle() + : await handles.last().elementHandle(); + const handleBBox = await splitHandle.boundingBox(); + + await page.mouse.move( + handleBBox.x + 0.5 * handleBBox.width, + handleBBox.y + 0.5 * handleBBox.height + ); + await page.mouse.down(); + await page.mouse.move( + side === 'left' ? 33 + width : page.viewportSize().width - 33 - width, + handleBBox.y + 0.5 * handleBBox.height + ); + await page.mouse.up(); +} diff --git a/jupyterlab/_version.py b/jupyterlab/_version.py index 788601965751..c3ecb3c048a8 100644 --- a/jupyterlab/_version.py +++ b/jupyterlab/_version.py @@ -6,7 +6,7 @@ VersionInfo = namedtuple("VersionInfo", ["major", "minor", "micro", "releaselevel", "serial"]) # DO NOT EDIT THIS DIRECTLY! It is managed by bumpversion -version_info = VersionInfo(4, 1, 0, "final", 0) +version_info = VersionInfo(4, 1, 5, "final", 0) _specifier_ = {"alpha": "a", "beta": "b", "candidate": "rc", "final": ""} diff --git a/jupyterlab/browser-test.js b/jupyterlab/browser-test.js index f5905a2c4850..7a5b6c02647a 100644 --- a/jupyterlab/browser-test.js +++ b/jupyterlab/browser-test.js @@ -28,6 +28,7 @@ if (OUTPUT) { async function main() { /* eslint-disable no-console */ console.info(`Starting headless ${BROWSER}...`); + let testError = null; const pwBrowser = playwright[BROWSER]; const browser = await pwBrowser.launch({ @@ -65,11 +66,12 @@ async function main() { console.log('Waiting for page content..'); try { - await page.locator('#jupyter-config-data').waitFor(); + await page.locator('#jupyter-config-data').waitFor({ state: 'attached' }); } catch (reason) { - console.error('Error loading JupyterLab page:'); + console.error('Error loading JupyterLab page:', reason); // Limit to 1000 characters console.error((await page.content()).substring(0, 1000)); + testError = reason; } console.log('Waiting for #main selector...'); @@ -81,7 +83,6 @@ async function main() { state: 'attached' }); console.log('Waiting for application to start...'); - let testError = null; try { await page.waitForSelector('.completed', { state: 'attached' }); diff --git a/jupyterlab/commands.py b/jupyterlab/commands.py index 50ff500c12cf..61f74a3ccd8e 100644 --- a/jupyterlab/commands.py +++ b/jupyterlab/commands.py @@ -641,13 +641,13 @@ def __init__(self, options): # Migrate from 4.0 which did not have "locked" status try: self._maybe_mirror_disabled_in_locked(level="sys_prefix") - except PermissionError: + except (PermissionError, OSError): try: self.logger.info( "`sys_prefix` level settings are read-only, using `user` level for migration to `lockedExtensions`" ) self._maybe_mirror_disabled_in_locked(level="user") - except PermissionError: + except (PermissionError, OSError): self.logger.warning( "Both `sys_prefix` and `user` level settings are read-only, cannot auto-migrate `disabledExtensions` to `lockedExtensions`" ) diff --git a/jupyterlab/staging/package.json b/jupyterlab/staging/package.json index c662d0922b1b..286f66b2146f 100644 --- a/jupyterlab/staging/package.json +++ b/jupyterlab/staging/package.json @@ -1,6 +1,6 @@ { "name": "@jupyterlab/application-top", - "version": "4.1.0", + "version": "4.1.5", "private": true, "license": "BSD-3-Clause", "scripts": { @@ -23,101 +23,101 @@ "@jupyter/react-components": "~0.13.3", "@jupyter/web-components": "~0.13.3", "@jupyter/ydoc": "~1.1.1", - "@jupyterlab/application": "~4.1.0", - "@jupyterlab/application-extension": "~4.1.0", - "@jupyterlab/apputils": "~4.2.0", - "@jupyterlab/apputils-extension": "~4.1.0", - "@jupyterlab/attachments": "~4.1.0", - "@jupyterlab/cell-toolbar": "~4.1.0", - "@jupyterlab/cell-toolbar-extension": "~4.1.0", - "@jupyterlab/cells": "~4.1.0", - "@jupyterlab/celltags-extension": "~4.1.0", - "@jupyterlab/codeeditor": "~4.1.0", - "@jupyterlab/codemirror": "~4.1.0", - "@jupyterlab/codemirror-extension": "~4.1.0", - "@jupyterlab/completer": "~4.1.0", - "@jupyterlab/completer-extension": "~4.1.0", - "@jupyterlab/console": "~4.1.0", - "@jupyterlab/console-extension": "~4.1.0", - "@jupyterlab/coreutils": "~6.1.0", - "@jupyterlab/csvviewer": "~4.1.0", - "@jupyterlab/csvviewer-extension": "~4.1.0", - "@jupyterlab/debugger": "~4.1.0", - "@jupyterlab/debugger-extension": "~4.1.0", - "@jupyterlab/docmanager": "~4.1.0", - "@jupyterlab/docmanager-extension": "~4.1.0", - "@jupyterlab/docregistry": "~4.1.0", - "@jupyterlab/documentsearch": "~4.1.0", - "@jupyterlab/documentsearch-extension": "~4.1.0", - "@jupyterlab/extensionmanager": "~4.1.0", - "@jupyterlab/extensionmanager-extension": "~4.1.0", - "@jupyterlab/filebrowser": "~4.1.0", - "@jupyterlab/filebrowser-extension": "~4.1.0", - "@jupyterlab/fileeditor": "~4.1.0", - "@jupyterlab/fileeditor-extension": "~4.1.0", - "@jupyterlab/help-extension": "~4.1.0", - "@jupyterlab/htmlviewer": "~4.1.0", - "@jupyterlab/htmlviewer-extension": "~4.1.0", - "@jupyterlab/hub-extension": "~4.1.0", - "@jupyterlab/imageviewer": "~4.1.0", - "@jupyterlab/imageviewer-extension": "~4.1.0", - "@jupyterlab/inspector": "~4.1.0", - "@jupyterlab/inspector-extension": "~4.1.0", - "@jupyterlab/javascript-extension": "~4.1.0", - "@jupyterlab/json-extension": "~4.1.0", - "@jupyterlab/launcher": "~4.1.0", - "@jupyterlab/launcher-extension": "~4.1.0", - "@jupyterlab/logconsole": "~4.1.0", - "@jupyterlab/logconsole-extension": "~4.1.0", - "@jupyterlab/lsp": "~4.1.0", - "@jupyterlab/lsp-extension": "~4.1.0", - "@jupyterlab/mainmenu": "~4.1.0", - "@jupyterlab/mainmenu-extension": "~4.1.0", - "@jupyterlab/markdownviewer": "~4.1.0", - "@jupyterlab/markdownviewer-extension": "~4.1.0", - "@jupyterlab/markedparser-extension": "~4.1.0", - "@jupyterlab/mathjax-extension": "~4.1.0", - "@jupyterlab/mermaid": "~4.1.0", - "@jupyterlab/mermaid-extension": "~4.1.0", - "@jupyterlab/metadataform": "~4.1.0", - "@jupyterlab/metadataform-extension": "~4.1.0", - "@jupyterlab/metapackage": "~4.1.0", - "@jupyterlab/nbconvert-css": "~4.1.0", - "@jupyterlab/nbformat": "~4.1.0", - "@jupyterlab/notebook": "~4.1.0", - "@jupyterlab/notebook-extension": "~4.1.0", - "@jupyterlab/observables": "~5.1.0", - "@jupyterlab/outputarea": "~4.1.0", - "@jupyterlab/pdf-extension": "~4.1.0", - "@jupyterlab/pluginmanager": "~4.1.0", - "@jupyterlab/pluginmanager-extension": "~4.1.0", - "@jupyterlab/property-inspector": "~4.1.0", - "@jupyterlab/rendermime": "~4.1.0", - "@jupyterlab/rendermime-extension": "~4.1.0", - "@jupyterlab/rendermime-interfaces": "~3.9.0", - "@jupyterlab/running": "~4.1.0", - "@jupyterlab/running-extension": "~4.1.0", + "@jupyterlab/application": "~4.1.5", + "@jupyterlab/application-extension": "~4.1.5", + "@jupyterlab/apputils": "~4.2.5", + "@jupyterlab/apputils-extension": "~4.1.5", + "@jupyterlab/attachments": "~4.1.5", + "@jupyterlab/cell-toolbar": "~4.1.5", + "@jupyterlab/cell-toolbar-extension": "~4.1.5", + "@jupyterlab/cells": "~4.1.5", + "@jupyterlab/celltags-extension": "~4.1.5", + "@jupyterlab/codeeditor": "~4.1.5", + "@jupyterlab/codemirror": "~4.1.5", + "@jupyterlab/codemirror-extension": "~4.1.5", + "@jupyterlab/completer": "~4.1.5", + "@jupyterlab/completer-extension": "~4.1.5", + "@jupyterlab/console": "~4.1.5", + "@jupyterlab/console-extension": "~4.1.5", + "@jupyterlab/coreutils": "~6.1.5", + "@jupyterlab/csvviewer": "~4.1.5", + "@jupyterlab/csvviewer-extension": "~4.1.5", + "@jupyterlab/debugger": "~4.1.5", + "@jupyterlab/debugger-extension": "~4.1.5", + "@jupyterlab/docmanager": "~4.1.5", + "@jupyterlab/docmanager-extension": "~4.1.5", + "@jupyterlab/docregistry": "~4.1.5", + "@jupyterlab/documentsearch": "~4.1.5", + "@jupyterlab/documentsearch-extension": "~4.1.5", + "@jupyterlab/extensionmanager": "~4.1.5", + "@jupyterlab/extensionmanager-extension": "~4.1.5", + "@jupyterlab/filebrowser": "~4.1.5", + "@jupyterlab/filebrowser-extension": "~4.1.5", + "@jupyterlab/fileeditor": "~4.1.5", + "@jupyterlab/fileeditor-extension": "~4.1.5", + "@jupyterlab/help-extension": "~4.1.5", + "@jupyterlab/htmlviewer": "~4.1.5", + "@jupyterlab/htmlviewer-extension": "~4.1.5", + "@jupyterlab/hub-extension": "~4.1.5", + "@jupyterlab/imageviewer": "~4.1.5", + "@jupyterlab/imageviewer-extension": "~4.1.5", + "@jupyterlab/inspector": "~4.1.5", + "@jupyterlab/inspector-extension": "~4.1.5", + "@jupyterlab/javascript-extension": "~4.1.5", + "@jupyterlab/json-extension": "~4.1.5", + "@jupyterlab/launcher": "~4.1.5", + "@jupyterlab/launcher-extension": "~4.1.5", + "@jupyterlab/logconsole": "~4.1.5", + "@jupyterlab/logconsole-extension": "~4.1.5", + "@jupyterlab/lsp": "~4.1.5", + "@jupyterlab/lsp-extension": "~4.1.5", + "@jupyterlab/mainmenu": "~4.1.5", + "@jupyterlab/mainmenu-extension": "~4.1.5", + "@jupyterlab/markdownviewer": "~4.1.5", + "@jupyterlab/markdownviewer-extension": "~4.1.5", + "@jupyterlab/markedparser-extension": "~4.1.5", + "@jupyterlab/mathjax-extension": "~4.1.5", + "@jupyterlab/mermaid": "~4.1.5", + "@jupyterlab/mermaid-extension": "~4.1.5", + "@jupyterlab/metadataform": "~4.1.5", + "@jupyterlab/metadataform-extension": "~4.1.5", + "@jupyterlab/metapackage": "~4.1.5", + "@jupyterlab/nbconvert-css": "~4.1.5", + "@jupyterlab/nbformat": "~4.1.5", + "@jupyterlab/notebook": "~4.1.5", + "@jupyterlab/notebook-extension": "~4.1.5", + "@jupyterlab/observables": "~5.1.5", + "@jupyterlab/outputarea": "~4.1.5", + "@jupyterlab/pdf-extension": "~4.1.5", + "@jupyterlab/pluginmanager": "~4.1.5", + "@jupyterlab/pluginmanager-extension": "~4.1.5", + "@jupyterlab/property-inspector": "~4.1.5", + "@jupyterlab/rendermime": "~4.1.5", + "@jupyterlab/rendermime-extension": "~4.1.5", + "@jupyterlab/rendermime-interfaces": "~3.9.5", + "@jupyterlab/running": "~4.1.5", + "@jupyterlab/running-extension": "~4.1.5", "@jupyterlab/services": "../../packages/services", - "@jupyterlab/settingeditor": "~4.1.0", - "@jupyterlab/settingeditor-extension": "~4.1.0", - "@jupyterlab/settingregistry": "~4.1.0", - "@jupyterlab/shortcuts-extension": "~4.1.0", - "@jupyterlab/statedb": "~4.1.0", - "@jupyterlab/statusbar": "~4.1.0", - "@jupyterlab/statusbar-extension": "~4.1.0", - "@jupyterlab/terminal": "~4.1.0", - "@jupyterlab/terminal-extension": "~4.1.0", - "@jupyterlab/theme-dark-extension": "~4.1.0", - "@jupyterlab/theme-light-extension": "~4.1.0", - "@jupyterlab/toc": "~6.1.0", - "@jupyterlab/toc-extension": "~6.1.0", - "@jupyterlab/tooltip": "~4.1.0", - "@jupyterlab/tooltip-extension": "~4.1.0", - "@jupyterlab/translation": "~4.1.0", - "@jupyterlab/translation-extension": "~4.1.0", - "@jupyterlab/ui-components": "~4.1.0", - "@jupyterlab/ui-components-extension": "~4.1.0", - "@jupyterlab/vega5-extension": "~4.1.0", + "@jupyterlab/settingeditor": "~4.1.5", + "@jupyterlab/settingeditor-extension": "~4.1.5", + "@jupyterlab/settingregistry": "~4.1.5", + "@jupyterlab/shortcuts-extension": "~4.1.5", + "@jupyterlab/statedb": "~4.1.5", + "@jupyterlab/statusbar": "~4.1.5", + "@jupyterlab/statusbar-extension": "~4.1.5", + "@jupyterlab/terminal": "~4.1.5", + "@jupyterlab/terminal-extension": "~4.1.5", + "@jupyterlab/theme-dark-extension": "~4.1.5", + "@jupyterlab/theme-light-extension": "~4.1.5", + "@jupyterlab/toc": "~6.1.5", + "@jupyterlab/toc-extension": "~6.1.5", + "@jupyterlab/tooltip": "~4.1.5", + "@jupyterlab/tooltip-extension": "~4.1.5", + "@jupyterlab/translation": "~4.1.5", + "@jupyterlab/translation-extension": "~4.1.5", + "@jupyterlab/ui-components": "~4.1.5", + "@jupyterlab/ui-components-extension": "~4.1.5", + "@jupyterlab/vega5-extension": "~4.1.5", "@lezer/common": "^1.0.0", "@lezer/highlight": "^1.0.0", "@lumino/algorithm": "^2.0.0", @@ -142,58 +142,58 @@ "yjs": "^13.5.40" }, "dependencies": { - "@jupyterlab/application": "~4.1.0", - "@jupyterlab/application-extension": "~4.1.0", - "@jupyterlab/apputils-extension": "~4.1.0", - "@jupyterlab/cell-toolbar-extension": "~4.1.0", - "@jupyterlab/celltags-extension": "~4.1.0", - "@jupyterlab/codemirror-extension": "~4.1.0", - "@jupyterlab/completer-extension": "~4.1.0", - "@jupyterlab/console-extension": "~4.1.0", - "@jupyterlab/coreutils": "~6.1.0", - "@jupyterlab/csvviewer-extension": "~4.1.0", - "@jupyterlab/debugger-extension": "~4.1.0", - "@jupyterlab/docmanager-extension": "~4.1.0", - "@jupyterlab/documentsearch-extension": "~4.1.0", - "@jupyterlab/extensionmanager-extension": "~4.1.0", - "@jupyterlab/filebrowser-extension": "~4.1.0", - "@jupyterlab/fileeditor-extension": "~4.1.0", - "@jupyterlab/help-extension": "~4.1.0", - "@jupyterlab/htmlviewer-extension": "~4.1.0", - "@jupyterlab/hub-extension": "~4.1.0", - "@jupyterlab/imageviewer-extension": "~4.1.0", - "@jupyterlab/inspector-extension": "~4.1.0", - "@jupyterlab/javascript-extension": "~4.1.0", - "@jupyterlab/json-extension": "~4.1.0", - "@jupyterlab/launcher-extension": "~4.1.0", - "@jupyterlab/logconsole-extension": "~4.1.0", - "@jupyterlab/lsp-extension": "~4.1.0", - "@jupyterlab/mainmenu-extension": "~4.1.0", - "@jupyterlab/markdownviewer-extension": "~4.1.0", - "@jupyterlab/markedparser-extension": "~4.1.0", - "@jupyterlab/mathjax-extension": "~4.1.0", - "@jupyterlab/mermaid-extension": "~4.1.0", - "@jupyterlab/metadataform-extension": "~4.1.0", - "@jupyterlab/notebook-extension": "~4.1.0", - "@jupyterlab/pdf-extension": "~4.1.0", - "@jupyterlab/pluginmanager-extension": "~4.1.0", - "@jupyterlab/rendermime-extension": "~4.1.0", - "@jupyterlab/running-extension": "~4.1.0", - "@jupyterlab/settingeditor-extension": "~4.1.0", - "@jupyterlab/shortcuts-extension": "~4.1.0", - "@jupyterlab/statusbar-extension": "~4.1.0", - "@jupyterlab/terminal-extension": "~4.1.0", - "@jupyterlab/theme-dark-extension": "~4.1.0", - "@jupyterlab/theme-light-extension": "~4.1.0", - "@jupyterlab/toc-extension": "~6.1.0", - "@jupyterlab/tooltip-extension": "~4.1.0", - "@jupyterlab/translation-extension": "~4.1.0", - "@jupyterlab/ui-components-extension": "~4.1.0", - "@jupyterlab/vega5-extension": "~4.1.0" + "@jupyterlab/application": "~4.1.5", + "@jupyterlab/application-extension": "~4.1.5", + "@jupyterlab/apputils-extension": "~4.1.5", + "@jupyterlab/cell-toolbar-extension": "~4.1.5", + "@jupyterlab/celltags-extension": "~4.1.5", + "@jupyterlab/codemirror-extension": "~4.1.5", + "@jupyterlab/completer-extension": "~4.1.5", + "@jupyterlab/console-extension": "~4.1.5", + "@jupyterlab/coreutils": "~6.1.5", + "@jupyterlab/csvviewer-extension": "~4.1.5", + "@jupyterlab/debugger-extension": "~4.1.5", + "@jupyterlab/docmanager-extension": "~4.1.5", + "@jupyterlab/documentsearch-extension": "~4.1.5", + "@jupyterlab/extensionmanager-extension": "~4.1.5", + "@jupyterlab/filebrowser-extension": "~4.1.5", + "@jupyterlab/fileeditor-extension": "~4.1.5", + "@jupyterlab/help-extension": "~4.1.5", + "@jupyterlab/htmlviewer-extension": "~4.1.5", + "@jupyterlab/hub-extension": "~4.1.5", + "@jupyterlab/imageviewer-extension": "~4.1.5", + "@jupyterlab/inspector-extension": "~4.1.5", + "@jupyterlab/javascript-extension": "~4.1.5", + "@jupyterlab/json-extension": "~4.1.5", + "@jupyterlab/launcher-extension": "~4.1.5", + "@jupyterlab/logconsole-extension": "~4.1.5", + "@jupyterlab/lsp-extension": "~4.1.5", + "@jupyterlab/mainmenu-extension": "~4.1.5", + "@jupyterlab/markdownviewer-extension": "~4.1.5", + "@jupyterlab/markedparser-extension": "~4.1.5", + "@jupyterlab/mathjax-extension": "~4.1.5", + "@jupyterlab/mermaid-extension": "~4.1.5", + "@jupyterlab/metadataform-extension": "~4.1.5", + "@jupyterlab/notebook-extension": "~4.1.5", + "@jupyterlab/pdf-extension": "~4.1.5", + "@jupyterlab/pluginmanager-extension": "~4.1.5", + "@jupyterlab/rendermime-extension": "~4.1.5", + "@jupyterlab/running-extension": "~4.1.5", + "@jupyterlab/settingeditor-extension": "~4.1.5", + "@jupyterlab/shortcuts-extension": "~4.1.5", + "@jupyterlab/statusbar-extension": "~4.1.5", + "@jupyterlab/terminal-extension": "~4.1.5", + "@jupyterlab/theme-dark-extension": "~4.1.5", + "@jupyterlab/theme-light-extension": "~4.1.5", + "@jupyterlab/toc-extension": "~6.1.5", + "@jupyterlab/tooltip-extension": "~4.1.5", + "@jupyterlab/translation-extension": "~4.1.5", + "@jupyterlab/ui-components-extension": "~4.1.5", + "@jupyterlab/vega5-extension": "~4.1.5" }, "devDependencies": { - "@jupyterlab/builder": "^4.1.0", - "@jupyterlab/buildutils": "^4.1.0", + "@jupyterlab/builder": "^4.1.5", + "@jupyterlab/buildutils": "^4.1.5", "chokidar": "^3.4.0", "css-loader": "^6.7.1", "duplicate-package-checker-webpack-plugin": "^3.0.0", @@ -222,7 +222,7 @@ }, "jupyterlab": { "name": "JupyterLab", - "version": "4.1.0", + "version": "4.1.5", "extensions": { "@jupyterlab/application-extension": "", "@jupyterlab/apputils-extension": "", diff --git a/jupyterlab/staging/yarn.lock b/jupyterlab/staging/yarn.lock index 96bead1f31d4..18db4f029b4a 100644 --- a/jupyterlab/staging/yarn.lock +++ b/jupyterlab/staging/yarn.lock @@ -420,26 +420,26 @@ __metadata: languageName: node linkType: hard -"@jupyterlab/application-extension@npm:~4.1.0": - version: 4.1.0 - resolution: "@jupyterlab/application-extension@npm:4.1.0" - dependencies: - "@jupyterlab/application": ^4.1.0 - "@jupyterlab/apputils": ^4.2.0 - "@jupyterlab/coreutils": ^6.1.0 - "@jupyterlab/property-inspector": ^4.1.0 - "@jupyterlab/settingregistry": ^4.1.0 - "@jupyterlab/statedb": ^4.1.0 - "@jupyterlab/statusbar": ^4.1.0 - "@jupyterlab/translation": ^4.1.0 - "@jupyterlab/ui-components": ^4.1.0 +"@jupyterlab/application-extension@npm:~4.1.5": + version: 4.1.5 + resolution: "@jupyterlab/application-extension@npm:4.1.5" + dependencies: + "@jupyterlab/application": ^4.1.5 + "@jupyterlab/apputils": ^4.2.5 + "@jupyterlab/coreutils": ^6.1.5 + "@jupyterlab/property-inspector": ^4.1.5 + "@jupyterlab/settingregistry": ^4.1.5 + "@jupyterlab/statedb": ^4.1.5 + "@jupyterlab/statusbar": ^4.1.5 + "@jupyterlab/translation": ^4.1.5 + "@jupyterlab/ui-components": ^4.1.5 "@lumino/algorithm": ^2.0.1 "@lumino/commands": ^2.2.0 "@lumino/coreutils": ^2.1.2 "@lumino/disposable": ^2.1.2 "@lumino/widgets": ^2.3.1 react: ^18.2.0 - checksum: 9bed240f219027b9f5674f4f497c575e3df6bdcb8a8e499cdd6ebbdc7d94ea383357297cafd22070f1d3e097f22b3fbbeb1b9e951c7b13910d1d534b07542163 + checksum: 0e07b2a433ad90a2f8fc596f7ed19b78edfb64acd50c9f8bcf6d2f321c340627253e266d5b24f5c2ee276f90d5479795cdbc2490d7e1fdeec89ac7faf5e3d318 languageName: node linkType: hard @@ -447,56 +447,56 @@ __metadata: version: 0.0.0-use.local resolution: "@jupyterlab/application-top@workspace:." dependencies: - "@jupyterlab/application": ~4.1.0 - "@jupyterlab/application-extension": ~4.1.0 - "@jupyterlab/apputils-extension": ~4.1.0 - "@jupyterlab/builder": ^4.1.0 - "@jupyterlab/buildutils": ^4.1.0 - "@jupyterlab/cell-toolbar-extension": ~4.1.0 - "@jupyterlab/celltags-extension": ~4.1.0 - "@jupyterlab/codemirror-extension": ~4.1.0 - "@jupyterlab/completer-extension": ~4.1.0 - "@jupyterlab/console-extension": ~4.1.0 - "@jupyterlab/coreutils": ~6.1.0 - "@jupyterlab/csvviewer-extension": ~4.1.0 - "@jupyterlab/debugger-extension": ~4.1.0 - "@jupyterlab/docmanager-extension": ~4.1.0 - "@jupyterlab/documentsearch-extension": ~4.1.0 - "@jupyterlab/extensionmanager-extension": ~4.1.0 - "@jupyterlab/filebrowser-extension": ~4.1.0 - "@jupyterlab/fileeditor-extension": ~4.1.0 - "@jupyterlab/help-extension": ~4.1.0 - "@jupyterlab/htmlviewer-extension": ~4.1.0 - "@jupyterlab/hub-extension": ~4.1.0 - "@jupyterlab/imageviewer-extension": ~4.1.0 - "@jupyterlab/inspector-extension": ~4.1.0 - "@jupyterlab/javascript-extension": ~4.1.0 - "@jupyterlab/json-extension": ~4.1.0 - "@jupyterlab/launcher-extension": ~4.1.0 - "@jupyterlab/logconsole-extension": ~4.1.0 - "@jupyterlab/lsp-extension": ~4.1.0 - "@jupyterlab/mainmenu-extension": ~4.1.0 - "@jupyterlab/markdownviewer-extension": ~4.1.0 - "@jupyterlab/markedparser-extension": ~4.1.0 - "@jupyterlab/mathjax-extension": ~4.1.0 - "@jupyterlab/mermaid-extension": ~4.1.0 - "@jupyterlab/metadataform-extension": ~4.1.0 - "@jupyterlab/notebook-extension": ~4.1.0 - "@jupyterlab/pdf-extension": ~4.1.0 - "@jupyterlab/pluginmanager-extension": ~4.1.0 - "@jupyterlab/rendermime-extension": ~4.1.0 - "@jupyterlab/running-extension": ~4.1.0 - "@jupyterlab/settingeditor-extension": ~4.1.0 - "@jupyterlab/shortcuts-extension": ~4.1.0 - "@jupyterlab/statusbar-extension": ~4.1.0 - "@jupyterlab/terminal-extension": ~4.1.0 - "@jupyterlab/theme-dark-extension": ~4.1.0 - "@jupyterlab/theme-light-extension": ~4.1.0 - "@jupyterlab/toc-extension": ~6.1.0 - "@jupyterlab/tooltip-extension": ~4.1.0 - "@jupyterlab/translation-extension": ~4.1.0 - "@jupyterlab/ui-components-extension": ~4.1.0 - "@jupyterlab/vega5-extension": ~4.1.0 + "@jupyterlab/application": ~4.1.5 + "@jupyterlab/application-extension": ~4.1.5 + "@jupyterlab/apputils-extension": ~4.1.5 + "@jupyterlab/builder": ^4.1.5 + "@jupyterlab/buildutils": ^4.1.5 + "@jupyterlab/cell-toolbar-extension": ~4.1.5 + "@jupyterlab/celltags-extension": ~4.1.5 + "@jupyterlab/codemirror-extension": ~4.1.5 + "@jupyterlab/completer-extension": ~4.1.5 + "@jupyterlab/console-extension": ~4.1.5 + "@jupyterlab/coreutils": ~6.1.5 + "@jupyterlab/csvviewer-extension": ~4.1.5 + "@jupyterlab/debugger-extension": ~4.1.5 + "@jupyterlab/docmanager-extension": ~4.1.5 + "@jupyterlab/documentsearch-extension": ~4.1.5 + "@jupyterlab/extensionmanager-extension": ~4.1.5 + "@jupyterlab/filebrowser-extension": ~4.1.5 + "@jupyterlab/fileeditor-extension": ~4.1.5 + "@jupyterlab/help-extension": ~4.1.5 + "@jupyterlab/htmlviewer-extension": ~4.1.5 + "@jupyterlab/hub-extension": ~4.1.5 + "@jupyterlab/imageviewer-extension": ~4.1.5 + "@jupyterlab/inspector-extension": ~4.1.5 + "@jupyterlab/javascript-extension": ~4.1.5 + "@jupyterlab/json-extension": ~4.1.5 + "@jupyterlab/launcher-extension": ~4.1.5 + "@jupyterlab/logconsole-extension": ~4.1.5 + "@jupyterlab/lsp-extension": ~4.1.5 + "@jupyterlab/mainmenu-extension": ~4.1.5 + "@jupyterlab/markdownviewer-extension": ~4.1.5 + "@jupyterlab/markedparser-extension": ~4.1.5 + "@jupyterlab/mathjax-extension": ~4.1.5 + "@jupyterlab/mermaid-extension": ~4.1.5 + "@jupyterlab/metadataform-extension": ~4.1.5 + "@jupyterlab/notebook-extension": ~4.1.5 + "@jupyterlab/pdf-extension": ~4.1.5 + "@jupyterlab/pluginmanager-extension": ~4.1.5 + "@jupyterlab/rendermime-extension": ~4.1.5 + "@jupyterlab/running-extension": ~4.1.5 + "@jupyterlab/settingeditor-extension": ~4.1.5 + "@jupyterlab/shortcuts-extension": ~4.1.5 + "@jupyterlab/statusbar-extension": ~4.1.5 + "@jupyterlab/terminal-extension": ~4.1.5 + "@jupyterlab/theme-dark-extension": ~4.1.5 + "@jupyterlab/theme-light-extension": ~4.1.5 + "@jupyterlab/toc-extension": ~6.1.5 + "@jupyterlab/tooltip-extension": ~4.1.5 + "@jupyterlab/translation-extension": ~4.1.5 + "@jupyterlab/ui-components-extension": ~4.1.5 + "@jupyterlab/vega5-extension": ~4.1.5 chokidar: ^3.4.0 css-loader: ^6.7.1 duplicate-package-checker-webpack-plugin: ^3.0.0 @@ -522,20 +522,20 @@ __metadata: languageName: unknown linkType: soft -"@jupyterlab/application@npm:~4.1.0": - version: 4.1.0 - resolution: "@jupyterlab/application@npm:4.1.0" +"@jupyterlab/application@npm:~4.1.5": + version: 4.1.5 + resolution: "@jupyterlab/application@npm:4.1.5" dependencies: "@fortawesome/fontawesome-free": ^5.12.0 - "@jupyterlab/apputils": ^4.2.0 - "@jupyterlab/coreutils": ^6.1.0 - "@jupyterlab/docregistry": ^4.1.0 - "@jupyterlab/rendermime": ^4.1.0 - "@jupyterlab/rendermime-interfaces": ^3.9.0 - "@jupyterlab/services": ^7.1.0 - "@jupyterlab/statedb": ^4.1.0 - "@jupyterlab/translation": ^4.1.0 - "@jupyterlab/ui-components": ^4.1.0 + "@jupyterlab/apputils": ^4.2.5 + "@jupyterlab/coreutils": ^6.1.5 + "@jupyterlab/docregistry": ^4.1.5 + "@jupyterlab/rendermime": ^4.1.5 + "@jupyterlab/rendermime-interfaces": ^3.9.5 + "@jupyterlab/services": ^7.1.5 + "@jupyterlab/statedb": ^4.1.5 + "@jupyterlab/translation": ^4.1.5 + "@jupyterlab/ui-components": ^4.1.5 "@lumino/algorithm": ^2.0.1 "@lumino/application": ^2.3.0 "@lumino/commands": ^2.2.0 @@ -546,27 +546,27 @@ __metadata: "@lumino/properties": ^2.0.1 "@lumino/signaling": ^2.1.2 "@lumino/widgets": ^2.3.1 - checksum: 1ca13156bee6e07850c008b1c8c510073bfd74c1c5056014313bfda1503db0b19472e727d549bb8461f17fdb6cd10fb3db854aa9f4cefb5599a4fc73017d46e7 + checksum: 53feb2574cecc408aa4fec223dc9e2864f16593b3bdc6fb25904d350908883aef60e8a07ceb4da6224af6b9c810a8f311c6edc1b21ed7e2a9f83567e49f8a029 languageName: node linkType: hard -"@jupyterlab/apputils-extension@npm:~4.1.0": - version: 4.1.0 - resolution: "@jupyterlab/apputils-extension@npm:4.1.0" - dependencies: - "@jupyterlab/application": ^4.1.0 - "@jupyterlab/apputils": ^4.2.0 - "@jupyterlab/coreutils": ^6.1.0 - "@jupyterlab/docregistry": ^4.1.0 - "@jupyterlab/filebrowser": ^4.1.0 - "@jupyterlab/mainmenu": ^4.1.0 - "@jupyterlab/rendermime-interfaces": ^3.9.0 - "@jupyterlab/services": ^7.1.0 - "@jupyterlab/settingregistry": ^4.1.0 - "@jupyterlab/statedb": ^4.1.0 - "@jupyterlab/statusbar": ^4.1.0 - "@jupyterlab/translation": ^4.1.0 - "@jupyterlab/ui-components": ^4.1.0 +"@jupyterlab/apputils-extension@npm:~4.1.5": + version: 4.1.5 + resolution: "@jupyterlab/apputils-extension@npm:4.1.5" + dependencies: + "@jupyterlab/application": ^4.1.5 + "@jupyterlab/apputils": ^4.2.5 + "@jupyterlab/coreutils": ^6.1.5 + "@jupyterlab/docregistry": ^4.1.5 + "@jupyterlab/filebrowser": ^4.1.5 + "@jupyterlab/mainmenu": ^4.1.5 + "@jupyterlab/rendermime-interfaces": ^3.9.5 + "@jupyterlab/services": ^7.1.5 + "@jupyterlab/settingregistry": ^4.1.5 + "@jupyterlab/statedb": ^4.1.5 + "@jupyterlab/statusbar": ^4.1.5 + "@jupyterlab/translation": ^4.1.5 + "@jupyterlab/ui-components": ^4.1.5 "@lumino/algorithm": ^2.0.1 "@lumino/commands": ^2.2.0 "@lumino/coreutils": ^2.1.2 @@ -577,23 +577,23 @@ __metadata: react: ^18.2.0 react-dom: ^18.2.0 react-toastify: ^9.0.8 - checksum: ce6208a1f49d9738097cbc9de9ebc6763b31bbbc038236d020659353240ae55a1cf76ed7276db2ea53e0af441a6c14555e30348b4c8bab4e71023a29e9ddc4f7 + checksum: 21cbe8c4b1e1f5a3afb24a365d4f7c36d79ef3830dfd8e8eee8ba11ae1eb36ea588103266df6635362def813bbb98e9aa7c0e30ea33ce87e646289d1a7d1057b languageName: node linkType: hard -"@jupyterlab/apputils@npm:~4.2.0": - version: 4.2.0 - resolution: "@jupyterlab/apputils@npm:4.2.0" - dependencies: - "@jupyterlab/coreutils": ^6.1.0 - "@jupyterlab/observables": ^5.1.0 - "@jupyterlab/rendermime-interfaces": ^3.9.0 - "@jupyterlab/services": ^7.1.0 - "@jupyterlab/settingregistry": ^4.1.0 - "@jupyterlab/statedb": ^4.1.0 - "@jupyterlab/statusbar": ^4.1.0 - "@jupyterlab/translation": ^4.1.0 - "@jupyterlab/ui-components": ^4.1.0 +"@jupyterlab/apputils@npm:~4.2.5": + version: 4.2.5 + resolution: "@jupyterlab/apputils@npm:4.2.5" + dependencies: + "@jupyterlab/coreutils": ^6.1.5 + "@jupyterlab/observables": ^5.1.5 + "@jupyterlab/rendermime-interfaces": ^3.9.5 + "@jupyterlab/services": ^7.1.5 + "@jupyterlab/settingregistry": ^4.1.5 + "@jupyterlab/statedb": ^4.1.5 + "@jupyterlab/statusbar": ^4.1.5 + "@jupyterlab/translation": ^4.1.5 + "@jupyterlab/ui-components": ^4.1.5 "@lumino/algorithm": ^2.0.1 "@lumino/commands": ^2.2.0 "@lumino/coreutils": ^2.1.2 @@ -606,27 +606,27 @@ __metadata: "@types/react": ^18.0.26 react: ^18.2.0 sanitize-html: ~2.7.3 - checksum: aec06e0e1403850676e766061d847e7cefa7225cdf48bbd2f3ab3f8356cb306646bf57dc15bcda149aa700e87850425ab8b79299d3414751a1753747ef9f15ba + checksum: e5652a14d1d7972bcff84cec13fc2849a6520f6e7cb82275eff37869afdb7aa856af88dad5621dfb967ea99733539488164d3b5f54885248a87adf4c86c2ce65 languageName: node linkType: hard -"@jupyterlab/attachments@npm:~4.1.0": - version: 4.1.0 - resolution: "@jupyterlab/attachments@npm:4.1.0" +"@jupyterlab/attachments@npm:~4.1.5": + version: 4.1.5 + resolution: "@jupyterlab/attachments@npm:4.1.5" dependencies: - "@jupyterlab/nbformat": ^4.1.0 - "@jupyterlab/observables": ^5.1.0 - "@jupyterlab/rendermime": ^4.1.0 - "@jupyterlab/rendermime-interfaces": ^3.9.0 + "@jupyterlab/nbformat": ^4.1.5 + "@jupyterlab/observables": ^5.1.5 + "@jupyterlab/rendermime": ^4.1.5 + "@jupyterlab/rendermime-interfaces": ^3.9.5 "@lumino/disposable": ^2.1.2 "@lumino/signaling": ^2.1.2 - checksum: ddb1716f7e9d0a7272979dc82109c17069b2b618142e289e2127a1b59eecf3ddc02cf8665b1f1ae42a3c8fbbc90f2d6ba270455381cdeec3d5d1be7488ca8a5c + checksum: 82a7c475a0eb4b7622d2d1290e4eb3aef9f9f4d104625def1ae4404628bcdcd543355cbe70a2f7675bca6a08e2a02d7ceedec376dcd3d7115ccfcd3497562690 languageName: node linkType: hard -"@jupyterlab/builder@npm:^4.1.0": - version: 4.1.0 - resolution: "@jupyterlab/builder@npm:4.1.0" +"@jupyterlab/builder@npm:^4.1.5": + version: 4.1.5 + resolution: "@jupyterlab/builder@npm:4.1.5" dependencies: "@lumino/algorithm": ^2.0.1 "@lumino/application": ^2.3.0 @@ -661,13 +661,13 @@ __metadata: worker-loader: ^3.0.2 bin: build-labextension: lib/build-labextension.js - checksum: 1a8f684fbf31fef2bae93b84e79af12bd0e70cedc5546f7501a17147425616ffd7ec42586ba23e9d6eb6a79e40d651f6f87d9c1c496ed26f84a2990da8631958 + checksum: f7618f4ab388337248018680456f886d106e096a425c406f743559f11ef21380b9fc1d578bc008f7336e38b050ebe945e45d26bb18e7f6c28b27e2ff72e8be0e languageName: node linkType: hard -"@jupyterlab/buildutils@npm:^4.1.0": - version: 4.1.0 - resolution: "@jupyterlab/buildutils@npm:4.1.0" +"@jupyterlab/buildutils@npm:^4.1.5": + version: 4.1.5 + resolution: "@jupyterlab/buildutils@npm:4.1.5" dependencies: "@yarnpkg/core": ^3.0.0 "@yarnpkg/parsers": ^2.0.0 @@ -695,65 +695,65 @@ __metadata: update-dependency: lib/update-dependency.js update-dist-tag: lib/update-dist-tag.js update-staging-lock: lib/update-staging-lock.js - checksum: 6c4ba4100c01c0ca561b4fe39a90b7d09270c2cec0d10a0a2e94ad33b7d5ba0b1b6f4e6b8f1d6df28943f16ce3d1d54eb249c22ec7855c7195f7d0acb54c8cbe + checksum: 73c069190a555fd4aa52d6b26c2b15e43b321445adfa6558118675957c5565d743a92945077038b15f4550761bda765aa2a117c315419baf3d24a1c519063b1f languageName: node linkType: hard -"@jupyterlab/cell-toolbar-extension@npm:~4.1.0": - version: 4.1.0 - resolution: "@jupyterlab/cell-toolbar-extension@npm:4.1.0" +"@jupyterlab/cell-toolbar-extension@npm:~4.1.5": + version: 4.1.5 + resolution: "@jupyterlab/cell-toolbar-extension@npm:4.1.5" dependencies: - "@jupyterlab/application": ^4.1.0 - "@jupyterlab/apputils": ^4.2.0 - "@jupyterlab/cell-toolbar": ^4.1.0 - "@jupyterlab/settingregistry": ^4.1.0 - "@jupyterlab/translation": ^4.1.0 - checksum: 8ea491f244e112824e0de4308afb475233c9a9c2ed28799edcaee346ce5c95239885af00f07a53927e5d8f82932537b6bc30e4f1f3558adebae5ae497faafca4 + "@jupyterlab/application": ^4.1.5 + "@jupyterlab/apputils": ^4.2.5 + "@jupyterlab/cell-toolbar": ^4.1.5 + "@jupyterlab/settingregistry": ^4.1.5 + "@jupyterlab/translation": ^4.1.5 + checksum: 07e8b9c70bc8dce8febf134e26a9dede3a998d0a83831c6edf8febb51af823ab304e51122a1cbc68f5f9ac29b249671bf704c8ecb97d3640963f0af42688e28f languageName: node linkType: hard -"@jupyterlab/cell-toolbar@npm:~4.1.0": - version: 4.1.0 - resolution: "@jupyterlab/cell-toolbar@npm:4.1.0" +"@jupyterlab/cell-toolbar@npm:~4.1.5": + version: 4.1.5 + resolution: "@jupyterlab/cell-toolbar@npm:4.1.5" dependencies: "@jupyter/ydoc": ^1.1.1 - "@jupyterlab/apputils": ^4.2.0 - "@jupyterlab/cells": ^4.1.0 - "@jupyterlab/docregistry": ^4.1.0 - "@jupyterlab/notebook": ^4.1.0 - "@jupyterlab/observables": ^5.1.0 - "@jupyterlab/ui-components": ^4.1.0 + "@jupyterlab/apputils": ^4.2.5 + "@jupyterlab/cells": ^4.1.5 + "@jupyterlab/docregistry": ^4.1.5 + "@jupyterlab/notebook": ^4.1.5 + "@jupyterlab/observables": ^5.1.5 + "@jupyterlab/ui-components": ^4.1.5 "@lumino/algorithm": ^2.0.1 "@lumino/commands": ^2.2.0 "@lumino/disposable": ^2.1.2 "@lumino/signaling": ^2.1.2 "@lumino/widgets": ^2.3.1 - checksum: 0ea64f5103f6afb0d5f8b158789f0ad749d79098a2baf27847dac8aca2d4b9097e87378a821e41bbe7da0ffea43a52f9ae91a7656bae0e7ba265a5eecfcbaf47 + checksum: bffddd58bc536980e082ecd1521ad5b41730fa1bac2f55f869ed4f4214d19d86c6337c5b51b154324cb5c66d305fa57e30ca76ebae450a2933f2fa9e4d133405 languageName: node linkType: hard -"@jupyterlab/cells@npm:~4.1.0": - version: 4.1.0 - resolution: "@jupyterlab/cells@npm:4.1.0" +"@jupyterlab/cells@npm:~4.1.5": + version: 4.1.5 + resolution: "@jupyterlab/cells@npm:4.1.5" dependencies: "@codemirror/state": ^6.2.0 "@codemirror/view": ^6.9.6 "@jupyter/ydoc": ^1.1.1 - "@jupyterlab/apputils": ^4.2.0 - "@jupyterlab/attachments": ^4.1.0 - "@jupyterlab/codeeditor": ^4.1.0 - "@jupyterlab/codemirror": ^4.1.0 - "@jupyterlab/coreutils": ^6.1.0 - "@jupyterlab/documentsearch": ^4.1.0 - "@jupyterlab/filebrowser": ^4.1.0 - "@jupyterlab/nbformat": ^4.1.0 - "@jupyterlab/observables": ^5.1.0 - "@jupyterlab/outputarea": ^4.1.0 - "@jupyterlab/rendermime": ^4.1.0 - "@jupyterlab/services": ^7.1.0 - "@jupyterlab/toc": ^6.1.0 - "@jupyterlab/translation": ^4.1.0 - "@jupyterlab/ui-components": ^4.1.0 + "@jupyterlab/apputils": ^4.2.5 + "@jupyterlab/attachments": ^4.1.5 + "@jupyterlab/codeeditor": ^4.1.5 + "@jupyterlab/codemirror": ^4.1.5 + "@jupyterlab/coreutils": ^6.1.5 + "@jupyterlab/documentsearch": ^4.1.5 + "@jupyterlab/filebrowser": ^4.1.5 + "@jupyterlab/nbformat": ^4.1.5 + "@jupyterlab/observables": ^5.1.5 + "@jupyterlab/outputarea": ^4.1.5 + "@jupyterlab/rendermime": ^4.1.5 + "@jupyterlab/services": ^7.1.5 + "@jupyterlab/toc": ^6.1.5 + "@jupyterlab/translation": ^4.1.5 + "@jupyterlab/ui-components": ^4.1.5 "@lumino/algorithm": ^2.0.1 "@lumino/coreutils": ^2.1.2 "@lumino/domutils": ^2.0.1 @@ -764,38 +764,38 @@ __metadata: "@lumino/virtualdom": ^2.0.1 "@lumino/widgets": ^2.3.1 react: ^18.2.0 - checksum: 41fb5dddda54ff53d828eff9f142092966214dadff7d93d6d91777746a36fcd192bc5a4055e364185fb367f6d3ed462946d214a33ba0ed63037b83b683958c44 + checksum: 49a9eec0323f4fcc96016303185dae72571a9b846c3ec0fc188e99b66ce7be6cd82efdd8056d041f9a4e55a1156b22004143a4c175b339fe83621e592e11c923 languageName: node linkType: hard -"@jupyterlab/celltags-extension@npm:~4.1.0": - version: 4.1.0 - resolution: "@jupyterlab/celltags-extension@npm:4.1.0" +"@jupyterlab/celltags-extension@npm:~4.1.5": + version: 4.1.5 + resolution: "@jupyterlab/celltags-extension@npm:4.1.5" dependencies: - "@jupyterlab/application": ^4.1.0 - "@jupyterlab/notebook": ^4.1.0 - "@jupyterlab/translation": ^4.1.0 - "@jupyterlab/ui-components": ^4.1.0 + "@jupyterlab/application": ^4.1.5 + "@jupyterlab/notebook": ^4.1.5 + "@jupyterlab/translation": ^4.1.5 + "@jupyterlab/ui-components": ^4.1.5 "@lumino/algorithm": ^2.0.1 "@rjsf/utils": ^5.13.4 react: ^18.2.0 - checksum: b982d951f5757776472d0c0f47b8b58b9b526723958c3e9c662bc9eeb932cf5e466a84d8d81ce1bd934ba9a7dcd33683dfbf82f8e84cb1dc25513344b6bfa8be + checksum: 4061f787e363211cd86c7505ce43e21440944c5b40237437c37c62f7e11ed1a0b0c11dd144a51cf99b0645ceaca51aee167e0152b8d907c1b383bb09acee1b98 languageName: node linkType: hard -"@jupyterlab/codeeditor@npm:~4.1.0": - version: 4.1.0 - resolution: "@jupyterlab/codeeditor@npm:4.1.0" +"@jupyterlab/codeeditor@npm:~4.1.5": + version: 4.1.5 + resolution: "@jupyterlab/codeeditor@npm:4.1.5" dependencies: "@codemirror/state": ^6.2.0 "@jupyter/ydoc": ^1.1.1 - "@jupyterlab/apputils": ^4.2.0 - "@jupyterlab/coreutils": ^6.1.0 - "@jupyterlab/nbformat": ^4.1.0 - "@jupyterlab/observables": ^5.1.0 - "@jupyterlab/statusbar": ^4.1.0 - "@jupyterlab/translation": ^4.1.0 - "@jupyterlab/ui-components": ^4.1.0 + "@jupyterlab/apputils": ^4.2.5 + "@jupyterlab/coreutils": ^6.1.5 + "@jupyterlab/nbformat": ^4.1.5 + "@jupyterlab/observables": ^5.1.5 + "@jupyterlab/statusbar": ^4.1.5 + "@jupyterlab/translation": ^4.1.5 + "@jupyterlab/ui-components": ^4.1.5 "@lumino/coreutils": ^2.1.2 "@lumino/disposable": ^2.1.2 "@lumino/dragdrop": ^2.1.4 @@ -803,37 +803,37 @@ __metadata: "@lumino/signaling": ^2.1.2 "@lumino/widgets": ^2.3.1 react: ^18.2.0 - checksum: ae58f6cb446f98b781a956986fcb497b53f380ed86510d67b13e3086cee434423d5a03c26a130ea8d02c762cd6a6cbc62fd088c6f60f78d4bb558102e4c80ad8 + checksum: f9f52122fa90058f716023489a66e2c7c2830580484a4f5474570da302452c4fa8680e55c18988cfe7e19f204839628bfada358d46027d9971ba91f56b79be78 languageName: node linkType: hard -"@jupyterlab/codemirror-extension@npm:~4.1.0": - version: 4.1.0 - resolution: "@jupyterlab/codemirror-extension@npm:4.1.0" +"@jupyterlab/codemirror-extension@npm:~4.1.5": + version: 4.1.5 + resolution: "@jupyterlab/codemirror-extension@npm:4.1.5" dependencies: "@codemirror/lang-markdown": ^6.1.1 "@codemirror/language": ^6.6.0 "@codemirror/legacy-modes": ^6.3.2 "@jupyter/ydoc": ^1.1.1 - "@jupyterlab/application": ^4.1.0 - "@jupyterlab/codeeditor": ^4.1.0 - "@jupyterlab/codemirror": ^4.1.0 - "@jupyterlab/settingregistry": ^4.1.0 - "@jupyterlab/statusbar": ^4.1.0 - "@jupyterlab/translation": ^4.1.0 - "@jupyterlab/ui-components": ^4.1.0 + "@jupyterlab/application": ^4.1.5 + "@jupyterlab/codeeditor": ^4.1.5 + "@jupyterlab/codemirror": ^4.1.5 + "@jupyterlab/settingregistry": ^4.1.5 + "@jupyterlab/statusbar": ^4.1.5 + "@jupyterlab/translation": ^4.1.5 + "@jupyterlab/ui-components": ^4.1.5 "@lumino/coreutils": ^2.1.2 "@lumino/widgets": ^2.3.1 "@rjsf/utils": ^5.13.4 "@rjsf/validator-ajv8": ^5.13.4 react: ^18.2.0 - checksum: d78aee108b8fd9b4f1bc8572ffe03282c07bd3b5095daab208a7425d43a2cfdf30f2b0011132f313f9256caefc1e8f5b5df709be490e579cc88d43e810b56750 + checksum: 81a23ea40845d2c6c175730fa45bbd1fda74b6ebae43edf01a5a0e9784a02a329bc51fbfb2c46d74ead1dbcaf4a0f7753630088ef3d89af062d07544dd9e15df languageName: node linkType: hard -"@jupyterlab/codemirror@npm:~4.1.0": - version: 4.1.0 - resolution: "@jupyterlab/codemirror@npm:4.1.0" +"@jupyterlab/codemirror@npm:~4.1.5": + version: 4.1.5 + resolution: "@jupyterlab/codemirror@npm:4.1.5" dependencies: "@codemirror/autocomplete": ^6.5.1 "@codemirror/commands": ^6.2.3 @@ -856,11 +856,11 @@ __metadata: "@codemirror/state": ^6.2.0 "@codemirror/view": ^6.9.6 "@jupyter/ydoc": ^1.1.1 - "@jupyterlab/codeeditor": ^4.1.0 - "@jupyterlab/coreutils": ^6.1.0 - "@jupyterlab/documentsearch": ^4.1.0 - "@jupyterlab/nbformat": ^4.1.0 - "@jupyterlab/translation": ^4.1.0 + "@jupyterlab/codeeditor": ^4.1.5 + "@jupyterlab/coreutils": ^6.1.5 + "@jupyterlab/documentsearch": ^4.1.5 + "@jupyterlab/nbformat": ^4.1.5 + "@jupyterlab/translation": ^4.1.5 "@lezer/common": ^1.0.2 "@lezer/generator": ^1.2.2 "@lezer/highlight": ^1.1.4 @@ -869,44 +869,44 @@ __metadata: "@lumino/disposable": ^2.1.2 "@lumino/signaling": ^2.1.2 yjs: ^13.5.40 - checksum: 92fb4ebebe4b5926fbf5ba2a99f845e8879918b3a095adf99de5f8385b3168412db38ebe2f1ae1eff8f29304d2c8c1b31c3cc1ba66a9c2d16e7a69dced20a768 + checksum: 8f6f30fbaebb2a88d50c5af5732058e2e605077871c079524d6466949973660a862cf75a205100019bd02d9888a9d7d85460269bfe646257dd50e4c61c4d0af3 languageName: node linkType: hard -"@jupyterlab/completer-extension@npm:~4.1.0": - version: 4.1.0 - resolution: "@jupyterlab/completer-extension@npm:4.1.0" +"@jupyterlab/completer-extension@npm:~4.1.5": + version: 4.1.5 + resolution: "@jupyterlab/completer-extension@npm:4.1.5" dependencies: - "@jupyterlab/application": ^4.1.0 - "@jupyterlab/completer": ^4.1.0 - "@jupyterlab/settingregistry": ^4.1.0 - "@jupyterlab/translation": ^4.1.0 - "@jupyterlab/ui-components": ^4.1.0 + "@jupyterlab/application": ^4.1.5 + "@jupyterlab/completer": ^4.1.5 + "@jupyterlab/settingregistry": ^4.1.5 + "@jupyterlab/translation": ^4.1.5 + "@jupyterlab/ui-components": ^4.1.5 "@lumino/commands": ^2.2.0 "@lumino/coreutils": ^2.1.2 "@rjsf/utils": ^5.13.4 react: ^18.2.0 - checksum: 2435027fb71a263db6c88c7bdc25d60490ae6f549ec579d39d378db50ddb13666cf46574e91f20c12e8dfdea8615d1d21a70a61758b95ffea8c0cfacf6e9379c + checksum: ae198c739290e18230f0509ac8d0b5ed437e6c1ade25e853cdd25782576087aa29622cdfe93e44ebb78bbf4b45973e095a6ecea071ea03ae6661b942bc47a4e5 languageName: node linkType: hard -"@jupyterlab/completer@npm:~4.1.0": - version: 4.1.0 - resolution: "@jupyterlab/completer@npm:4.1.0" +"@jupyterlab/completer@npm:~4.1.5": + version: 4.1.5 + resolution: "@jupyterlab/completer@npm:4.1.5" dependencies: "@codemirror/state": ^6.2.0 "@codemirror/view": ^6.9.6 "@jupyter/ydoc": ^1.1.1 - "@jupyterlab/apputils": ^4.2.0 - "@jupyterlab/codeeditor": ^4.1.0 - "@jupyterlab/codemirror": ^4.1.0 - "@jupyterlab/coreutils": ^6.1.0 - "@jupyterlab/rendermime": ^4.1.0 - "@jupyterlab/services": ^7.1.0 - "@jupyterlab/settingregistry": ^4.1.0 - "@jupyterlab/statedb": ^4.1.0 - "@jupyterlab/translation": ^4.1.0 - "@jupyterlab/ui-components": ^4.1.0 + "@jupyterlab/apputils": ^4.2.5 + "@jupyterlab/codeeditor": ^4.1.5 + "@jupyterlab/codemirror": ^4.1.5 + "@jupyterlab/coreutils": ^6.1.5 + "@jupyterlab/rendermime": ^4.1.5 + "@jupyterlab/services": ^7.1.5 + "@jupyterlab/settingregistry": ^4.1.5 + "@jupyterlab/statedb": ^4.1.5 + "@jupyterlab/translation": ^4.1.5 + "@jupyterlab/ui-components": ^4.1.5 "@lumino/algorithm": ^2.0.1 "@lumino/coreutils": ^2.1.2 "@lumino/disposable": ^2.1.2 @@ -914,65 +914,65 @@ __metadata: "@lumino/messaging": ^2.0.1 "@lumino/signaling": ^2.1.2 "@lumino/widgets": ^2.3.1 - checksum: 11c21f95722c2cce8ce91886036e381b6c43bd9b602bf37e38de2aabeab315cb6cc68bed9d12abfa75dc0cad616b4fd9748a77f81016cd739aa1ef8128964cbc + checksum: 49e481b45d73f4cdec6bbf4a01665f946b436c38953f360abf8043fc8952c22192f05dabb3a582d40c5d91ef022b6d969ee797b6976a6e2b462887a524445f56 languageName: node linkType: hard -"@jupyterlab/console-extension@npm:~4.1.0": - version: 4.1.0 - resolution: "@jupyterlab/console-extension@npm:4.1.0" - dependencies: - "@jupyterlab/application": ^4.1.0 - "@jupyterlab/apputils": ^4.2.0 - "@jupyterlab/codeeditor": ^4.1.0 - "@jupyterlab/completer": ^4.1.0 - "@jupyterlab/console": ^4.1.0 - "@jupyterlab/filebrowser": ^4.1.0 - "@jupyterlab/launcher": ^4.1.0 - "@jupyterlab/mainmenu": ^4.1.0 - "@jupyterlab/rendermime": ^4.1.0 - "@jupyterlab/settingregistry": ^4.1.0 - "@jupyterlab/translation": ^4.1.0 - "@jupyterlab/ui-components": ^4.1.0 +"@jupyterlab/console-extension@npm:~4.1.5": + version: 4.1.5 + resolution: "@jupyterlab/console-extension@npm:4.1.5" + dependencies: + "@jupyterlab/application": ^4.1.5 + "@jupyterlab/apputils": ^4.2.5 + "@jupyterlab/codeeditor": ^4.1.5 + "@jupyterlab/completer": ^4.1.5 + "@jupyterlab/console": ^4.1.5 + "@jupyterlab/filebrowser": ^4.1.5 + "@jupyterlab/launcher": ^4.1.5 + "@jupyterlab/mainmenu": ^4.1.5 + "@jupyterlab/rendermime": ^4.1.5 + "@jupyterlab/settingregistry": ^4.1.5 + "@jupyterlab/translation": ^4.1.5 + "@jupyterlab/ui-components": ^4.1.5 "@lumino/algorithm": ^2.0.1 "@lumino/coreutils": ^2.1.2 "@lumino/disposable": ^2.1.2 "@lumino/properties": ^2.0.1 "@lumino/widgets": ^2.3.1 - checksum: 89b32641f8716a4396428f5b8c5e07a02ceada5242768efa21260ccb314a89cdc0c0fb3e8ef7d8e5d64f3adda59476fe835144166ed2c479dd22cfd4bda29b41 + checksum: e58d3d63ec6fde0e41e5ea51f915f99555e5cc468cde3d2d18b16161cd168c7244020a4652a5e24fdc8cc7ada4b88f003f0ff976fadd445dcb9d152b4303042b languageName: node linkType: hard -"@jupyterlab/console@npm:~4.1.0": - version: 4.1.0 - resolution: "@jupyterlab/console@npm:4.1.0" +"@jupyterlab/console@npm:~4.1.5": + version: 4.1.5 + resolution: "@jupyterlab/console@npm:4.1.5" dependencies: "@codemirror/state": ^6.2.0 "@codemirror/view": ^6.9.6 "@jupyter/ydoc": ^1.1.1 - "@jupyterlab/apputils": ^4.2.0 - "@jupyterlab/cells": ^4.1.0 - "@jupyterlab/codeeditor": ^4.1.0 - "@jupyterlab/coreutils": ^6.1.0 - "@jupyterlab/nbformat": ^4.1.0 - "@jupyterlab/observables": ^5.1.0 - "@jupyterlab/rendermime": ^4.1.0 - "@jupyterlab/services": ^7.1.0 - "@jupyterlab/translation": ^4.1.0 - "@jupyterlab/ui-components": ^4.1.0 + "@jupyterlab/apputils": ^4.2.5 + "@jupyterlab/cells": ^4.1.5 + "@jupyterlab/codeeditor": ^4.1.5 + "@jupyterlab/coreutils": ^6.1.5 + "@jupyterlab/nbformat": ^4.1.5 + "@jupyterlab/observables": ^5.1.5 + "@jupyterlab/rendermime": ^4.1.5 + "@jupyterlab/services": ^7.1.5 + "@jupyterlab/translation": ^4.1.5 + "@jupyterlab/ui-components": ^4.1.5 "@lumino/coreutils": ^2.1.2 "@lumino/disposable": ^2.1.2 "@lumino/dragdrop": ^2.1.4 "@lumino/messaging": ^2.0.1 "@lumino/signaling": ^2.1.2 "@lumino/widgets": ^2.3.1 - checksum: 01c7fd1cd3604b5bfd910a1719a068e06329f2ab7a450f00325b8befcc9f8da6ab2d91d6220d7ffc77ffeff5978e355dd6e560afe39c1de12d6ac70ab9d02e78 + checksum: 01e90b8527583c5ed0ad4b17db3d8062b96cac8517319d6a8a4fecec31e612264c06f5434adf3313b6a16eec190c456116c2095fcb9e4234f30d8d042ee7d734 languageName: node linkType: hard -"@jupyterlab/coreutils@npm:~6.1.0": - version: 6.1.0 - resolution: "@jupyterlab/coreutils@npm:6.1.0" +"@jupyterlab/coreutils@npm:~6.1.5": + version: 6.1.5 + resolution: "@jupyterlab/coreutils@npm:6.1.5" dependencies: "@lumino/coreutils": ^2.1.2 "@lumino/disposable": ^2.1.2 @@ -980,92 +980,92 @@ __metadata: minimist: ~1.2.0 path-browserify: ^1.0.0 url-parse: ~1.5.4 - checksum: d1fdeb3fa28af76cab52c04c82b51a1f02f9cd7779dc1eecbd1177bf246d0213c4e7234bf74eb1bd1d909123988e40addbec8fd7a027c4f5448f3c968b27642c + checksum: b91c5a374f3c97d62e2442bb5f12cb79c6e440b5f6aa4d4ed6e492e8ca38836f7068106bb7029834a4e5de1947a9c44c342d23bedf9a4611aafca33629aed049 languageName: node linkType: hard -"@jupyterlab/csvviewer-extension@npm:~4.1.0": - version: 4.1.0 - resolution: "@jupyterlab/csvviewer-extension@npm:4.1.0" - dependencies: - "@jupyterlab/application": ^4.1.0 - "@jupyterlab/apputils": ^4.2.0 - "@jupyterlab/csvviewer": ^4.1.0 - "@jupyterlab/docregistry": ^4.1.0 - "@jupyterlab/documentsearch": ^4.1.0 - "@jupyterlab/mainmenu": ^4.1.0 - "@jupyterlab/observables": ^5.1.0 - "@jupyterlab/settingregistry": ^4.1.0 - "@jupyterlab/translation": ^4.1.0 +"@jupyterlab/csvviewer-extension@npm:~4.1.5": + version: 4.1.5 + resolution: "@jupyterlab/csvviewer-extension@npm:4.1.5" + dependencies: + "@jupyterlab/application": ^4.1.5 + "@jupyterlab/apputils": ^4.2.5 + "@jupyterlab/csvviewer": ^4.1.5 + "@jupyterlab/docregistry": ^4.1.5 + "@jupyterlab/documentsearch": ^4.1.5 + "@jupyterlab/mainmenu": ^4.1.5 + "@jupyterlab/observables": ^5.1.5 + "@jupyterlab/settingregistry": ^4.1.5 + "@jupyterlab/translation": ^4.1.5 "@lumino/datagrid": ^2.3.0 "@lumino/widgets": ^2.3.1 - checksum: 1386d4fec90fe0099679a7b4edb6bb6e901cef410e1264aac9c5e3a350519cedd3fcfe3e0310d712a4459d9b5f0a14498dcbf1687c4ac70c7633660177e04175 + checksum: 29125c98a1c58511552860e260e3d7c2152679896a19942e32b2d990467aa40741ddeda3ad27e07df3326f6095a1ab0d7c50156f4921499c713e2ce6e331ac96 languageName: node linkType: hard -"@jupyterlab/csvviewer@npm:~4.1.0": - version: 4.1.0 - resolution: "@jupyterlab/csvviewer@npm:4.1.0" +"@jupyterlab/csvviewer@npm:~4.1.5": + version: 4.1.5 + resolution: "@jupyterlab/csvviewer@npm:4.1.5" dependencies: - "@jupyterlab/coreutils": ^6.1.0 - "@jupyterlab/docregistry": ^4.1.0 - "@jupyterlab/translation": ^4.1.0 - "@jupyterlab/ui-components": ^4.1.0 + "@jupyterlab/coreutils": ^6.1.5 + "@jupyterlab/docregistry": ^4.1.5 + "@jupyterlab/translation": ^4.1.5 + "@jupyterlab/ui-components": ^4.1.5 "@lumino/coreutils": ^2.1.2 "@lumino/datagrid": ^2.3.0 "@lumino/disposable": ^2.1.2 "@lumino/messaging": ^2.0.1 "@lumino/signaling": ^2.1.2 "@lumino/widgets": ^2.3.1 - checksum: 45aa7f636f434856652697adb11264b75d857e68f47771f150a6877c0ac8385a910c2a0261dce959c3e37daf77a10256b0ded248c061843b49bc3653557fabda + checksum: 1ceeea1d8dfc6da9bfd800b89ce2e7f0a146ba190b8cf366aa2a2b27ff9013a239fa7beb588b8ff12695feb92e521cd55cfea52631aaa8e634a50167e60210dd languageName: node linkType: hard -"@jupyterlab/debugger-extension@npm:~4.1.0": - version: 4.1.0 - resolution: "@jupyterlab/debugger-extension@npm:4.1.0" - dependencies: - "@jupyterlab/application": ^4.1.0 - "@jupyterlab/apputils": ^4.2.0 - "@jupyterlab/cells": ^4.1.0 - "@jupyterlab/codeeditor": ^4.1.0 - "@jupyterlab/console": ^4.1.0 - "@jupyterlab/coreutils": ^6.1.0 - "@jupyterlab/debugger": ^4.1.0 - "@jupyterlab/docregistry": ^4.1.0 - "@jupyterlab/fileeditor": ^4.1.0 - "@jupyterlab/logconsole": ^4.1.0 - "@jupyterlab/notebook": ^4.1.0 - "@jupyterlab/rendermime": ^4.1.0 - "@jupyterlab/services": ^7.1.0 - "@jupyterlab/settingregistry": ^4.1.0 - "@jupyterlab/translation": ^4.1.0 - checksum: 77a5e4d13d92b096b97cfa3977457a13647095d5abcb4437c1a0bed0b75363a771441bdb31647fa94b75bd00e26519f964ae91a1a2a7bf2ecc0391881775ca7c - languageName: node - linkType: hard - -"@jupyterlab/debugger@npm:~4.1.0": - version: 4.1.0 - resolution: "@jupyterlab/debugger@npm:4.1.0" +"@jupyterlab/debugger-extension@npm:~4.1.5": + version: 4.1.5 + resolution: "@jupyterlab/debugger-extension@npm:4.1.5" + dependencies: + "@jupyterlab/application": ^4.1.5 + "@jupyterlab/apputils": ^4.2.5 + "@jupyterlab/cells": ^4.1.5 + "@jupyterlab/codeeditor": ^4.1.5 + "@jupyterlab/console": ^4.1.5 + "@jupyterlab/coreutils": ^6.1.5 + "@jupyterlab/debugger": ^4.1.5 + "@jupyterlab/docregistry": ^4.1.5 + "@jupyterlab/fileeditor": ^4.1.5 + "@jupyterlab/logconsole": ^4.1.5 + "@jupyterlab/notebook": ^4.1.5 + "@jupyterlab/rendermime": ^4.1.5 + "@jupyterlab/services": ^7.1.5 + "@jupyterlab/settingregistry": ^4.1.5 + "@jupyterlab/translation": ^4.1.5 + checksum: b93e13531f309d89f00bf106e2d23d4f39f0072131f69635e43ef22a18b2c6c280efc62837d7056995f599c5625d5e843680e12934a737eab4ed8ab72f09d6d7 + languageName: node + linkType: hard + +"@jupyterlab/debugger@npm:~4.1.5": + version: 4.1.5 + resolution: "@jupyterlab/debugger@npm:4.1.5" dependencies: "@codemirror/state": ^6.2.0 "@codemirror/view": ^6.9.6 "@jupyter/ydoc": ^1.1.1 - "@jupyterlab/application": ^4.1.0 - "@jupyterlab/apputils": ^4.2.0 - "@jupyterlab/cells": ^4.1.0 - "@jupyterlab/codeeditor": ^4.1.0 - "@jupyterlab/codemirror": ^4.1.0 - "@jupyterlab/console": ^4.1.0 - "@jupyterlab/coreutils": ^6.1.0 - "@jupyterlab/docregistry": ^4.1.0 - "@jupyterlab/fileeditor": ^4.1.0 - "@jupyterlab/notebook": ^4.1.0 - "@jupyterlab/observables": ^5.1.0 - "@jupyterlab/rendermime": ^4.1.0 - "@jupyterlab/services": ^7.1.0 - "@jupyterlab/translation": ^4.1.0 - "@jupyterlab/ui-components": ^4.1.0 + "@jupyterlab/application": ^4.1.5 + "@jupyterlab/apputils": ^4.2.5 + "@jupyterlab/cells": ^4.1.5 + "@jupyterlab/codeeditor": ^4.1.5 + "@jupyterlab/codemirror": ^4.1.5 + "@jupyterlab/console": ^4.1.5 + "@jupyterlab/coreutils": ^6.1.5 + "@jupyterlab/docregistry": ^4.1.5 + "@jupyterlab/fileeditor": ^4.1.5 + "@jupyterlab/notebook": ^4.1.5 + "@jupyterlab/observables": ^5.1.5 + "@jupyterlab/rendermime": ^4.1.5 + "@jupyterlab/services": ^7.1.5 + "@jupyterlab/translation": ^4.1.5 + "@jupyterlab/ui-components": ^4.1.5 "@lumino/algorithm": ^2.0.1 "@lumino/commands": ^2.2.0 "@lumino/coreutils": ^2.1.2 @@ -1077,24 +1077,24 @@ __metadata: "@lumino/widgets": ^2.3.1 "@vscode/debugprotocol": ^1.51.0 react: ^18.2.0 - checksum: 083150201a6a0f8e5713aba643fc916a7f0fb3602c5a410b0c958f7a4d782ce142ccd4ca71a1c2b985f78d927d1f7a2898fb0c2adb4daf4396dff451a6fab561 + checksum: 729fafacac228d2034a42fd216b50502ef34db828f5324731206e3558d8eed91a33ba4422da45a86d239e970a878686a188c8ae443e22cf47ed136a827f4d083 languageName: node linkType: hard -"@jupyterlab/docmanager-extension@npm:~4.1.0": - version: 4.1.0 - resolution: "@jupyterlab/docmanager-extension@npm:4.1.0" - dependencies: - "@jupyterlab/application": ^4.1.0 - "@jupyterlab/apputils": ^4.2.0 - "@jupyterlab/coreutils": ^6.1.0 - "@jupyterlab/docmanager": ^4.1.0 - "@jupyterlab/docregistry": ^4.1.0 - "@jupyterlab/services": ^7.1.0 - "@jupyterlab/settingregistry": ^4.1.0 - "@jupyterlab/statusbar": ^4.1.0 - "@jupyterlab/translation": ^4.1.0 - "@jupyterlab/ui-components": ^4.1.0 +"@jupyterlab/docmanager-extension@npm:~4.1.5": + version: 4.1.5 + resolution: "@jupyterlab/docmanager-extension@npm:4.1.5" + dependencies: + "@jupyterlab/application": ^4.1.5 + "@jupyterlab/apputils": ^4.2.5 + "@jupyterlab/coreutils": ^6.1.5 + "@jupyterlab/docmanager": ^4.1.5 + "@jupyterlab/docregistry": ^4.1.5 + "@jupyterlab/services": ^7.1.5 + "@jupyterlab/settingregistry": ^4.1.5 + "@jupyterlab/statusbar": ^4.1.5 + "@jupyterlab/translation": ^4.1.5 + "@jupyterlab/ui-components": ^4.1.5 "@lumino/algorithm": ^2.0.1 "@lumino/commands": ^2.2.0 "@lumino/coreutils": ^2.1.2 @@ -1102,21 +1102,21 @@ __metadata: "@lumino/signaling": ^2.1.2 "@lumino/widgets": ^2.3.1 react: ^18.2.0 - checksum: a3b6b051901a4ffa01368302aa688ef9720b63695127ac4c876999933077a969c59852137b4eeb2ecd965a6c501a65af781799a8552769f7d7c5b7be75c1daa4 + checksum: a3794e9228d55d68beeabefae1b4acffc3a51f4e745b302408ed663aacd4db727613a18cb2d3ba7650f1104238f38082d45b111a99150511b97574cc95f77275 languageName: node linkType: hard -"@jupyterlab/docmanager@npm:~4.1.0": - version: 4.1.0 - resolution: "@jupyterlab/docmanager@npm:4.1.0" - dependencies: - "@jupyterlab/apputils": ^4.2.0 - "@jupyterlab/coreutils": ^6.1.0 - "@jupyterlab/docregistry": ^4.1.0 - "@jupyterlab/services": ^7.1.0 - "@jupyterlab/statusbar": ^4.1.0 - "@jupyterlab/translation": ^4.1.0 - "@jupyterlab/ui-components": ^4.1.0 +"@jupyterlab/docmanager@npm:~4.1.5": + version: 4.1.5 + resolution: "@jupyterlab/docmanager@npm:4.1.5" + dependencies: + "@jupyterlab/apputils": ^4.2.5 + "@jupyterlab/coreutils": ^6.1.5 + "@jupyterlab/docregistry": ^4.1.5 + "@jupyterlab/services": ^7.1.5 + "@jupyterlab/statusbar": ^4.1.5 + "@jupyterlab/translation": ^4.1.5 + "@jupyterlab/ui-components": ^4.1.5 "@lumino/algorithm": ^2.0.1 "@lumino/coreutils": ^2.1.2 "@lumino/disposable": ^2.1.2 @@ -1125,24 +1125,24 @@ __metadata: "@lumino/signaling": ^2.1.2 "@lumino/widgets": ^2.3.1 react: ^18.2.0 - checksum: 64f63512a862c2539f3eb1eb255ad6d1c3d5380519079b745503b38eebba255af4d12688b57d42c83a0220758b5cd8304012044cab18433f1c35ca6e49356719 + checksum: d56e8ab83f523c5c90593147cd5bf12a704348bcdec243f8ecaa375f91f6f4c7646a76e9c10920f4f7d1cd19f09f79adc5eb0fbc5d1ac817b6031d3ad6ce600b languageName: node linkType: hard -"@jupyterlab/docregistry@npm:~4.1.0": - version: 4.1.0 - resolution: "@jupyterlab/docregistry@npm:4.1.0" +"@jupyterlab/docregistry@npm:~4.1.5": + version: 4.1.5 + resolution: "@jupyterlab/docregistry@npm:4.1.5" dependencies: "@jupyter/ydoc": ^1.1.1 - "@jupyterlab/apputils": ^4.2.0 - "@jupyterlab/codeeditor": ^4.1.0 - "@jupyterlab/coreutils": ^6.1.0 - "@jupyterlab/observables": ^5.1.0 - "@jupyterlab/rendermime": ^4.1.0 - "@jupyterlab/rendermime-interfaces": ^3.9.0 - "@jupyterlab/services": ^7.1.0 - "@jupyterlab/translation": ^4.1.0 - "@jupyterlab/ui-components": ^4.1.0 + "@jupyterlab/apputils": ^4.2.5 + "@jupyterlab/codeeditor": ^4.1.5 + "@jupyterlab/coreutils": ^6.1.5 + "@jupyterlab/observables": ^5.1.5 + "@jupyterlab/rendermime": ^4.1.5 + "@jupyterlab/rendermime-interfaces": ^3.9.5 + "@jupyterlab/services": ^7.1.5 + "@jupyterlab/translation": ^4.1.5 + "@jupyterlab/ui-components": ^4.1.5 "@lumino/algorithm": ^2.0.1 "@lumino/coreutils": ^2.1.2 "@lumino/disposable": ^2.1.2 @@ -1151,32 +1151,32 @@ __metadata: "@lumino/signaling": ^2.1.2 "@lumino/widgets": ^2.3.1 react: ^18.2.0 - checksum: 8407ea92d2f7a094ea47313917b7d32ce6a9e7dd79ab595eeef4064d805f818720210cde3c949b517ba98bae52980ab373df42082ca654f0f483935e104f0335 + checksum: 9b017d775c31dfb4ac60908afd9d24210e9434bf6d090fb3d55fcdc0ec9c16b23b6a009fe54a376f89363882f7c25f5e5eadf3b096fa72ce1a148b14773675e4 languageName: node linkType: hard -"@jupyterlab/documentsearch-extension@npm:~4.1.0": - version: 4.1.0 - resolution: "@jupyterlab/documentsearch-extension@npm:4.1.0" +"@jupyterlab/documentsearch-extension@npm:~4.1.5": + version: 4.1.5 + resolution: "@jupyterlab/documentsearch-extension@npm:4.1.5" dependencies: - "@jupyterlab/application": ^4.1.0 - "@jupyterlab/apputils": ^4.2.0 - "@jupyterlab/documentsearch": ^4.1.0 - "@jupyterlab/settingregistry": ^4.1.0 - "@jupyterlab/translation": ^4.1.0 + "@jupyterlab/application": ^4.1.5 + "@jupyterlab/apputils": ^4.2.5 + "@jupyterlab/documentsearch": ^4.1.5 + "@jupyterlab/settingregistry": ^4.1.5 + "@jupyterlab/translation": ^4.1.5 "@lumino/commands": ^2.2.0 "@lumino/widgets": ^2.3.1 - checksum: 2aabf4801cf2e4a2d99da7e6199fb8e26112cba0a7bd97650588cfc369212dce8164d9cfcb97bd639b73158fee02abae950872fb3dd7987706d611adbc93cda3 + checksum: 5fb96a1e59a52b47f938b311a45f5c83bb03e5e767a8f15159c357400e0aad17ce3720dd86458e0a62e3253c1ffd03bea5b3482a5f875723aec11e793acb2bc3 languageName: node linkType: hard -"@jupyterlab/documentsearch@npm:~4.1.0": - version: 4.1.0 - resolution: "@jupyterlab/documentsearch@npm:4.1.0" +"@jupyterlab/documentsearch@npm:~4.1.5": + version: 4.1.5 + resolution: "@jupyterlab/documentsearch@npm:4.1.5" dependencies: - "@jupyterlab/apputils": ^4.2.0 - "@jupyterlab/translation": ^4.1.0 - "@jupyterlab/ui-components": ^4.1.0 + "@jupyterlab/apputils": ^4.2.5 + "@jupyterlab/translation": ^4.1.5 + "@jupyterlab/ui-components": ^4.1.5 "@lumino/commands": ^2.2.0 "@lumino/coreutils": ^2.1.2 "@lumino/disposable": ^2.1.2 @@ -1185,79 +1185,79 @@ __metadata: "@lumino/signaling": ^2.1.2 "@lumino/widgets": ^2.3.1 react: ^18.2.0 - checksum: 768b02f07c892622b126d8b8f59e4559003f3900f2cb588fba27aa87ebb1eb9a703fe99ebccc9bd8ccba2f8859ba157060b0bb5e5c5572fe9906fd7152caf536 + checksum: 496748a03177574a79305a42e29e996bf3633523cf9a6624ac117c97df2f5d4697cd45bf421033068539f94f568811307d0deccf2d1e24885d8f7d205b13a481 languageName: node linkType: hard -"@jupyterlab/extensionmanager-extension@npm:~4.1.0": - version: 4.1.0 - resolution: "@jupyterlab/extensionmanager-extension@npm:4.1.0" +"@jupyterlab/extensionmanager-extension@npm:~4.1.5": + version: 4.1.5 + resolution: "@jupyterlab/extensionmanager-extension@npm:4.1.5" dependencies: - "@jupyterlab/application": ^4.1.0 - "@jupyterlab/apputils": ^4.2.0 - "@jupyterlab/extensionmanager": ^4.1.0 - "@jupyterlab/settingregistry": ^4.1.0 - "@jupyterlab/translation": ^4.1.0 - "@jupyterlab/ui-components": ^4.1.0 - checksum: 16fc49cb0f7ee15443e5be30aaf43d9ae599e478516d511fb4ee645fcca2b3162657a8f2c617a658c4ac5bd8e90741cfc91a1c152c2b7b2f82674a979e285446 + "@jupyterlab/application": ^4.1.5 + "@jupyterlab/apputils": ^4.2.5 + "@jupyterlab/extensionmanager": ^4.1.5 + "@jupyterlab/settingregistry": ^4.1.5 + "@jupyterlab/translation": ^4.1.5 + "@jupyterlab/ui-components": ^4.1.5 + checksum: a301ba918e38bee5cd11f4eb817aa386a5a7e7ee15f79e148a19ca54f6b0234c477401acc0d4cbdb450931d83b3b0309f85d136755acc57e7f7587e418ceb8d5 languageName: node linkType: hard -"@jupyterlab/extensionmanager@npm:~4.1.0": - version: 4.1.0 - resolution: "@jupyterlab/extensionmanager@npm:4.1.0" +"@jupyterlab/extensionmanager@npm:~4.1.5": + version: 4.1.5 + resolution: "@jupyterlab/extensionmanager@npm:4.1.5" dependencies: - "@jupyterlab/apputils": ^4.2.0 - "@jupyterlab/coreutils": ^6.1.0 - "@jupyterlab/services": ^7.1.0 - "@jupyterlab/translation": ^4.1.0 - "@jupyterlab/ui-components": ^4.1.0 + "@jupyterlab/apputils": ^4.2.5 + "@jupyterlab/coreutils": ^6.1.5 + "@jupyterlab/services": ^7.1.5 + "@jupyterlab/translation": ^4.1.5 + "@jupyterlab/ui-components": ^4.1.5 "@lumino/messaging": ^2.0.1 "@lumino/polling": ^2.1.2 "@lumino/widgets": ^2.3.1 react: ^18.2.0 react-paginate: ^6.3.2 semver: ^7.3.2 - checksum: 54a7d4456cd519e694797cf24aa7990054c58b88c4307bab637fbe8b070d4668ad4cd63c6e4e514202e09b04b05897d64c3c3a41c1e20a534655e274cc982480 + checksum: 35a464bba21244dba9515344f57abd3c06b680842f8d8a6805385ab06fba508f6cd8157dfe5036793d7a53c236da9ce4f36529c069e12784e7c40300a6ab51ca languageName: node linkType: hard -"@jupyterlab/filebrowser-extension@npm:~4.1.0": - version: 4.1.0 - resolution: "@jupyterlab/filebrowser-extension@npm:4.1.0" - dependencies: - "@jupyterlab/application": ^4.1.0 - "@jupyterlab/apputils": ^4.2.0 - "@jupyterlab/coreutils": ^6.1.0 - "@jupyterlab/docmanager": ^4.1.0 - "@jupyterlab/docregistry": ^4.1.0 - "@jupyterlab/filebrowser": ^4.1.0 - "@jupyterlab/services": ^7.1.0 - "@jupyterlab/settingregistry": ^4.1.0 - "@jupyterlab/statedb": ^4.1.0 - "@jupyterlab/statusbar": ^4.1.0 - "@jupyterlab/translation": ^4.1.0 - "@jupyterlab/ui-components": ^4.1.0 +"@jupyterlab/filebrowser-extension@npm:~4.1.5": + version: 4.1.5 + resolution: "@jupyterlab/filebrowser-extension@npm:4.1.5" + dependencies: + "@jupyterlab/application": ^4.1.5 + "@jupyterlab/apputils": ^4.2.5 + "@jupyterlab/coreutils": ^6.1.5 + "@jupyterlab/docmanager": ^4.1.5 + "@jupyterlab/docregistry": ^4.1.5 + "@jupyterlab/filebrowser": ^4.1.5 + "@jupyterlab/services": ^7.1.5 + "@jupyterlab/settingregistry": ^4.1.5 + "@jupyterlab/statedb": ^4.1.5 + "@jupyterlab/statusbar": ^4.1.5 + "@jupyterlab/translation": ^4.1.5 + "@jupyterlab/ui-components": ^4.1.5 "@lumino/algorithm": ^2.0.1 "@lumino/commands": ^2.2.0 "@lumino/widgets": ^2.3.1 - checksum: 58a161c3a61f96482b01b1cd833936068c36866d06347e5f9e716bb724eca42ac775fc0cf679b0124d33734295ade5b020a5b1756d022a21e62321ac24764340 + checksum: cf2aa75f18863a4df723a35f0dc3796886ce6a855e90370c7f3b7847894edc85f303e27505bc5b677d7c1287e19b928a1db90a2f3a804621e863b32a7cab0992 languageName: node linkType: hard -"@jupyterlab/filebrowser@npm:~4.1.0": - version: 4.1.0 - resolution: "@jupyterlab/filebrowser@npm:4.1.0" - dependencies: - "@jupyterlab/apputils": ^4.2.0 - "@jupyterlab/coreutils": ^6.1.0 - "@jupyterlab/docmanager": ^4.1.0 - "@jupyterlab/docregistry": ^4.1.0 - "@jupyterlab/services": ^7.1.0 - "@jupyterlab/statedb": ^4.1.0 - "@jupyterlab/statusbar": ^4.1.0 - "@jupyterlab/translation": ^4.1.0 - "@jupyterlab/ui-components": ^4.1.0 +"@jupyterlab/filebrowser@npm:~4.1.5": + version: 4.1.5 + resolution: "@jupyterlab/filebrowser@npm:4.1.5" + dependencies: + "@jupyterlab/apputils": ^4.2.5 + "@jupyterlab/coreutils": ^6.1.5 + "@jupyterlab/docmanager": ^4.1.5 + "@jupyterlab/docregistry": ^4.1.5 + "@jupyterlab/services": ^7.1.5 + "@jupyterlab/statedb": ^4.1.5 + "@jupyterlab/statusbar": ^4.1.5 + "@jupyterlab/translation": ^4.1.5 + "@jupyterlab/ui-components": ^4.1.5 "@lumino/algorithm": ^2.0.1 "@lumino/coreutils": ^2.1.2 "@lumino/disposable": ^2.1.2 @@ -1269,221 +1269,221 @@ __metadata: "@lumino/virtualdom": ^2.0.1 "@lumino/widgets": ^2.3.1 react: ^18.2.0 - checksum: ee29ad3a5ca3d9477a760179ff8b520cb88b8fd08f62ecd872d0cc0c5e1cc397349b020ba8c24f9b543b9cd5513c3b9da813d41bc5a63464aa3321a31b613115 + checksum: 6ec08114012ab6ec8c3263fcff932c6949445c4d01f1f8aeefb9e6c496628025ca84683ae212aa03c5342b43e5df9082c812c6bf2b05fc0e2dc7aefeedf47cd2 languageName: node linkType: hard -"@jupyterlab/fileeditor-extension@npm:~4.1.0": - version: 4.1.0 - resolution: "@jupyterlab/fileeditor-extension@npm:4.1.0" +"@jupyterlab/fileeditor-extension@npm:~4.1.5": + version: 4.1.5 + resolution: "@jupyterlab/fileeditor-extension@npm:4.1.5" dependencies: "@codemirror/commands": ^6.2.3 "@codemirror/search": ^6.3.0 - "@jupyterlab/application": ^4.1.0 - "@jupyterlab/apputils": ^4.2.0 - "@jupyterlab/codeeditor": ^4.1.0 - "@jupyterlab/codemirror": ^4.1.0 - "@jupyterlab/completer": ^4.1.0 - "@jupyterlab/console": ^4.1.0 - "@jupyterlab/coreutils": ^6.1.0 - "@jupyterlab/docregistry": ^4.1.0 - "@jupyterlab/documentsearch": ^4.1.0 - "@jupyterlab/filebrowser": ^4.1.0 - "@jupyterlab/fileeditor": ^4.1.0 - "@jupyterlab/launcher": ^4.1.0 - "@jupyterlab/lsp": ^4.1.0 - "@jupyterlab/mainmenu": ^4.1.0 - "@jupyterlab/observables": ^5.1.0 - "@jupyterlab/rendermime-interfaces": ^3.9.0 - "@jupyterlab/services": ^7.1.0 - "@jupyterlab/settingregistry": ^4.1.0 - "@jupyterlab/statusbar": ^4.1.0 - "@jupyterlab/toc": ^6.1.0 - "@jupyterlab/translation": ^4.1.0 - "@jupyterlab/ui-components": ^4.1.0 + "@jupyterlab/application": ^4.1.5 + "@jupyterlab/apputils": ^4.2.5 + "@jupyterlab/codeeditor": ^4.1.5 + "@jupyterlab/codemirror": ^4.1.5 + "@jupyterlab/completer": ^4.1.5 + "@jupyterlab/console": ^4.1.5 + "@jupyterlab/coreutils": ^6.1.5 + "@jupyterlab/docregistry": ^4.1.5 + "@jupyterlab/documentsearch": ^4.1.5 + "@jupyterlab/filebrowser": ^4.1.5 + "@jupyterlab/fileeditor": ^4.1.5 + "@jupyterlab/launcher": ^4.1.5 + "@jupyterlab/lsp": ^4.1.5 + "@jupyterlab/mainmenu": ^4.1.5 + "@jupyterlab/observables": ^5.1.5 + "@jupyterlab/rendermime-interfaces": ^3.9.5 + "@jupyterlab/services": ^7.1.5 + "@jupyterlab/settingregistry": ^4.1.5 + "@jupyterlab/statusbar": ^4.1.5 + "@jupyterlab/toc": ^6.1.5 + "@jupyterlab/translation": ^4.1.5 + "@jupyterlab/ui-components": ^4.1.5 "@lumino/algorithm": ^2.0.1 "@lumino/commands": ^2.2.0 "@lumino/coreutils": ^2.1.2 "@lumino/widgets": ^2.3.1 - checksum: 617ad059021b6aa82df9d3f685131056606479249dea9dbdefab518d9b8e2502e791426b67926a860644b3140d04a8fc2c7e5cd7900a5494a85796643c24788d + checksum: 91e7d97b71d814cabb75b9f67462dd613f1f1eb5a96254e1598b4e7efb17b6422db58b10a0776f84d91998f221bc7bb08e4ae475e57bd7e99c138d65c6ef8c1d languageName: node linkType: hard -"@jupyterlab/fileeditor@npm:~4.1.0": - version: 4.1.0 - resolution: "@jupyterlab/fileeditor@npm:4.1.0" +"@jupyterlab/fileeditor@npm:~4.1.5": + version: 4.1.5 + resolution: "@jupyterlab/fileeditor@npm:4.1.5" dependencies: "@jupyter/ydoc": ^1.1.1 - "@jupyterlab/apputils": ^4.2.0 - "@jupyterlab/codeeditor": ^4.1.0 - "@jupyterlab/codemirror": ^4.1.0 - "@jupyterlab/coreutils": ^6.1.0 - "@jupyterlab/docregistry": ^4.1.0 - "@jupyterlab/documentsearch": ^4.1.0 - "@jupyterlab/lsp": ^4.1.0 - "@jupyterlab/statusbar": ^4.1.0 - "@jupyterlab/toc": ^6.1.0 - "@jupyterlab/translation": ^4.1.0 - "@jupyterlab/ui-components": ^4.1.0 + "@jupyterlab/apputils": ^4.2.5 + "@jupyterlab/codeeditor": ^4.1.5 + "@jupyterlab/codemirror": ^4.1.5 + "@jupyterlab/coreutils": ^6.1.5 + "@jupyterlab/docregistry": ^4.1.5 + "@jupyterlab/documentsearch": ^4.1.5 + "@jupyterlab/lsp": ^4.1.5 + "@jupyterlab/statusbar": ^4.1.5 + "@jupyterlab/toc": ^6.1.5 + "@jupyterlab/translation": ^4.1.5 + "@jupyterlab/ui-components": ^4.1.5 "@lumino/commands": ^2.2.0 "@lumino/coreutils": ^2.1.2 "@lumino/messaging": ^2.0.1 "@lumino/widgets": ^2.3.1 react: ^18.2.0 regexp-match-indices: ^1.0.2 - checksum: 982f37e01cd909e6481f9c0982a23bce26dae71ffe3730b354f93e7a6357a2a6f1dd9c2d82c09649cc14b66ca5ad131fd3bc3667cbb2924fa7535a5c9b4372fb + checksum: 88fe63f91ed7266afa0447f4d919b57cd8bae944d8661bc570562b570a8196cc23c5f92777058515cfeb0c12c5fb98b6906b5d8c91190dd8c961b921f268d1af languageName: node linkType: hard -"@jupyterlab/help-extension@npm:~4.1.0": - version: 4.1.0 - resolution: "@jupyterlab/help-extension@npm:4.1.0" - dependencies: - "@jupyterlab/application": ^4.1.0 - "@jupyterlab/apputils": ^4.2.0 - "@jupyterlab/coreutils": ^6.1.0 - "@jupyterlab/mainmenu": ^4.1.0 - "@jupyterlab/services": ^7.1.0 - "@jupyterlab/translation": ^4.1.0 - "@jupyterlab/ui-components": ^4.1.0 +"@jupyterlab/help-extension@npm:~4.1.5": + version: 4.1.5 + resolution: "@jupyterlab/help-extension@npm:4.1.5" + dependencies: + "@jupyterlab/application": ^4.1.5 + "@jupyterlab/apputils": ^4.2.5 + "@jupyterlab/coreutils": ^6.1.5 + "@jupyterlab/mainmenu": ^4.1.5 + "@jupyterlab/services": ^7.1.5 + "@jupyterlab/translation": ^4.1.5 + "@jupyterlab/ui-components": ^4.1.5 "@lumino/coreutils": ^2.1.2 "@lumino/signaling": ^2.1.2 "@lumino/virtualdom": ^2.0.1 "@lumino/widgets": ^2.3.1 react: ^18.2.0 - checksum: 4d0504331d5512d46bbca5389048c566be64798dce1dcd5e8cb12ea851dd40087f62c8c24791af8f946f15fcf7f57202e10e7929b24499dff11ce9a6576cfe1f + checksum: f6b5d13d0181a5cd49110a7ba11779f78933da52c2ebfd11839e2a080549be460121ac8a11d441c5a18aeccab4f6885554ad28caa91ea43d8bc91e93652de698 languageName: node linkType: hard -"@jupyterlab/htmlviewer-extension@npm:~4.1.0": - version: 4.1.0 - resolution: "@jupyterlab/htmlviewer-extension@npm:4.1.0" +"@jupyterlab/htmlviewer-extension@npm:~4.1.5": + version: 4.1.5 + resolution: "@jupyterlab/htmlviewer-extension@npm:4.1.5" dependencies: - "@jupyterlab/application": ^4.1.0 - "@jupyterlab/apputils": ^4.2.0 - "@jupyterlab/docregistry": ^4.1.0 - "@jupyterlab/htmlviewer": ^4.1.0 - "@jupyterlab/observables": ^5.1.0 - "@jupyterlab/settingregistry": ^4.1.0 - "@jupyterlab/translation": ^4.1.0 - "@jupyterlab/ui-components": ^4.1.0 - checksum: 6dd1f51b7f14565b3937b95310e513f234658d8826a16f7f6e65a8fd4a42c30783f1b528e5577842f892285541ad5a343f2802bbc3fa77a5a017a5368050a6cb + "@jupyterlab/application": ^4.1.5 + "@jupyterlab/apputils": ^4.2.5 + "@jupyterlab/docregistry": ^4.1.5 + "@jupyterlab/htmlviewer": ^4.1.5 + "@jupyterlab/observables": ^5.1.5 + "@jupyterlab/settingregistry": ^4.1.5 + "@jupyterlab/translation": ^4.1.5 + "@jupyterlab/ui-components": ^4.1.5 + checksum: e46ed0fc0df1f27eceab067e34f3b45fdb5703f2f98b03b0da352ccd95c8256859fd07b12fd1bf94ee9fa3fc3f20a8dfc9f1bd08de59238d2945d0b61d61495f languageName: node linkType: hard -"@jupyterlab/htmlviewer@npm:~4.1.0": - version: 4.1.0 - resolution: "@jupyterlab/htmlviewer@npm:4.1.0" +"@jupyterlab/htmlviewer@npm:~4.1.5": + version: 4.1.5 + resolution: "@jupyterlab/htmlviewer@npm:4.1.5" dependencies: - "@jupyterlab/apputils": ^4.2.0 - "@jupyterlab/coreutils": ^6.1.0 - "@jupyterlab/docregistry": ^4.1.0 - "@jupyterlab/translation": ^4.1.0 - "@jupyterlab/ui-components": ^4.1.0 + "@jupyterlab/apputils": ^4.2.5 + "@jupyterlab/coreutils": ^6.1.5 + "@jupyterlab/docregistry": ^4.1.5 + "@jupyterlab/translation": ^4.1.5 + "@jupyterlab/ui-components": ^4.1.5 "@lumino/coreutils": ^2.1.2 "@lumino/signaling": ^2.1.2 "@lumino/widgets": ^2.3.1 react: ^18.2.0 - checksum: 77062d33bd8bf01ae6ef74ca87b438c476e4fc9d2aa6cfaa77fefb11e412eb85a4b6a09a62c4f609368f8b748b8ddf28936a8d742f85b0a3870e84e580e129f6 + checksum: e1bb9fa7d385dca7781d42d665d30f6983fdaf29155f0d7c9f6f7f1f4c47973d8bf3d28a9b711c9abd988b2cc2de5f07f8841e736fb7c5a33cf9855ea03da990 languageName: node linkType: hard -"@jupyterlab/hub-extension@npm:~4.1.0": - version: 4.1.0 - resolution: "@jupyterlab/hub-extension@npm:4.1.0" +"@jupyterlab/hub-extension@npm:~4.1.5": + version: 4.1.5 + resolution: "@jupyterlab/hub-extension@npm:4.1.5" dependencies: - "@jupyterlab/application": ^4.1.0 - "@jupyterlab/apputils": ^4.2.0 - "@jupyterlab/coreutils": ^6.1.0 - "@jupyterlab/services": ^7.1.0 - "@jupyterlab/translation": ^4.1.0 - checksum: a193cf7d913884be60e807b30886353e4261a296712b1699f8a982a80519bb92f1288efffcf2fc7461125035757c5f3036279102b72b3e7f0b4961c4cea5d769 + "@jupyterlab/application": ^4.1.5 + "@jupyterlab/apputils": ^4.2.5 + "@jupyterlab/coreutils": ^6.1.5 + "@jupyterlab/services": ^7.1.5 + "@jupyterlab/translation": ^4.1.5 + checksum: 90a8287e76b7e5f84f73e6a0590c73a287f5f33db7a568e0a01234ef2056d36250ff1ffbfa99d606d46b714fba522409431efbb545a051a4464565540149a130 languageName: node linkType: hard -"@jupyterlab/imageviewer-extension@npm:~4.1.0": - version: 4.1.0 - resolution: "@jupyterlab/imageviewer-extension@npm:4.1.0" +"@jupyterlab/imageviewer-extension@npm:~4.1.5": + version: 4.1.5 + resolution: "@jupyterlab/imageviewer-extension@npm:4.1.5" dependencies: - "@jupyterlab/application": ^4.1.0 - "@jupyterlab/apputils": ^4.2.0 - "@jupyterlab/docregistry": ^4.1.0 - "@jupyterlab/imageviewer": ^4.1.0 - "@jupyterlab/translation": ^4.1.0 - checksum: e6a0e163031b1afff3a4bde36fee6eb8daa2de1d02d6e318b07255b090da92a337bedc6efeafa5f7dbdd2be75a429af908063cefba5269cf6ef9d7ee6c7af732 + "@jupyterlab/application": ^4.1.5 + "@jupyterlab/apputils": ^4.2.5 + "@jupyterlab/docregistry": ^4.1.5 + "@jupyterlab/imageviewer": ^4.1.5 + "@jupyterlab/translation": ^4.1.5 + checksum: 57b41a940e7728ea3bbbcd4a243b71fd9108711764e566f6de894ae23816b92046106cd27f46fa42b529565dcdda23e91629e602d5864061f191b4503530c9b9 languageName: node linkType: hard -"@jupyterlab/imageviewer@npm:~4.1.0": - version: 4.1.0 - resolution: "@jupyterlab/imageviewer@npm:4.1.0" +"@jupyterlab/imageviewer@npm:~4.1.5": + version: 4.1.5 + resolution: "@jupyterlab/imageviewer@npm:4.1.5" dependencies: - "@jupyterlab/apputils": ^4.2.0 - "@jupyterlab/coreutils": ^6.1.0 - "@jupyterlab/docregistry": ^4.1.0 + "@jupyterlab/apputils": ^4.2.5 + "@jupyterlab/coreutils": ^6.1.5 + "@jupyterlab/docregistry": ^4.1.5 "@lumino/coreutils": ^2.1.2 "@lumino/messaging": ^2.0.1 "@lumino/widgets": ^2.3.1 - checksum: 8f07c45f488ece2e76c377b16f1b39d82a7fecba5a1a56d3af28dcb6d41e3f3a3ce8e9950e590682a296fb8c0a50da1e874a53c441f6db6bd397a0c00fba1f2c + checksum: 963e9f58f55d63dba9cab7ebe06fd80d0a3f403b0366b91d7161a3d834bd044b32cca3a539923f3dd29003b2bf4b5cb5f581ba40b8fc459ea3e5e45f32e6fe39 languageName: node linkType: hard -"@jupyterlab/inspector-extension@npm:~4.1.0": - version: 4.1.0 - resolution: "@jupyterlab/inspector-extension@npm:4.1.0" - dependencies: - "@jupyterlab/application": ^4.1.0 - "@jupyterlab/apputils": ^4.2.0 - "@jupyterlab/console": ^4.1.0 - "@jupyterlab/inspector": ^4.1.0 - "@jupyterlab/launcher": ^4.1.0 - "@jupyterlab/notebook": ^4.1.0 - "@jupyterlab/translation": ^4.1.0 - "@jupyterlab/ui-components": ^4.1.0 +"@jupyterlab/inspector-extension@npm:~4.1.5": + version: 4.1.5 + resolution: "@jupyterlab/inspector-extension@npm:4.1.5" + dependencies: + "@jupyterlab/application": ^4.1.5 + "@jupyterlab/apputils": ^4.2.5 + "@jupyterlab/console": ^4.1.5 + "@jupyterlab/inspector": ^4.1.5 + "@jupyterlab/launcher": ^4.1.5 + "@jupyterlab/notebook": ^4.1.5 + "@jupyterlab/translation": ^4.1.5 + "@jupyterlab/ui-components": ^4.1.5 "@lumino/widgets": ^2.3.1 - checksum: a134f9decf71c9fe3d8d01a464183df31fc7ca9508156bb4f410073a8a3c9f5c855cbf26640db6584897555b295e9c449880a3e04a79cd6cb4aac4cee3b75418 + checksum: be7f5a2c1452f8722fdecb0b7856925a38286a3a2abe5b06dac167eb405df128e4e8e99c73469d2fbe3e683b236e2c64aaa6797035658ba40e5e6d1a72395461 languageName: node linkType: hard -"@jupyterlab/inspector@npm:~4.1.0": - version: 4.1.0 - resolution: "@jupyterlab/inspector@npm:4.1.0" - dependencies: - "@jupyterlab/apputils": ^4.2.0 - "@jupyterlab/codeeditor": ^4.1.0 - "@jupyterlab/coreutils": ^6.1.0 - "@jupyterlab/rendermime": ^4.1.0 - "@jupyterlab/services": ^7.1.0 - "@jupyterlab/statedb": ^4.1.0 - "@jupyterlab/translation": ^4.1.0 +"@jupyterlab/inspector@npm:~4.1.5": + version: 4.1.5 + resolution: "@jupyterlab/inspector@npm:4.1.5" + dependencies: + "@jupyterlab/apputils": ^4.2.5 + "@jupyterlab/codeeditor": ^4.1.5 + "@jupyterlab/coreutils": ^6.1.5 + "@jupyterlab/rendermime": ^4.1.5 + "@jupyterlab/services": ^7.1.5 + "@jupyterlab/statedb": ^4.1.5 + "@jupyterlab/translation": ^4.1.5 "@lumino/coreutils": ^2.1.2 "@lumino/disposable": ^2.1.2 "@lumino/polling": ^2.1.2 "@lumino/signaling": ^2.1.2 "@lumino/widgets": ^2.3.1 - checksum: c3ff6bf4f1b5c702098667ff27424a578a4699507d50954ea54f5feb4123b458d98b1284902bf010c716dbab389b3c9f88633d919a6fe1cf0aa95063d2c22923 + checksum: ab98848ad92a8a38c88a15df79b2d15772aa3bec2d46022ffffb8d80abe57f0ce865f13177ccfb2736921208cb539cd4aef353bb8ee8eade5e59825fcd13ee0f languageName: node linkType: hard -"@jupyterlab/javascript-extension@npm:~4.1.0": - version: 4.1.0 - resolution: "@jupyterlab/javascript-extension@npm:4.1.0" +"@jupyterlab/javascript-extension@npm:~4.1.5": + version: 4.1.5 + resolution: "@jupyterlab/javascript-extension@npm:4.1.5" dependencies: - "@jupyterlab/rendermime": ^4.1.0 - "@jupyterlab/rendermime-interfaces": ^3.9.0 - checksum: 054f22edecfbf5c01a1f80d6c84a6035a2bd64a1b747ee401923d03cbd14512e0c068d6bd2003182b9965b367c7750ab771e3499c97d65644fd7119af7c46d26 + "@jupyterlab/rendermime": ^4.1.5 + "@jupyterlab/rendermime-interfaces": ^3.9.5 + checksum: 111ade14cda8d41e636b95c06266c0b9b6b5048256395f2eeafffaadd71ffab9aaf3077f09220e31fb343aa73c109c7ca46244bd54325089a58f099f4c0bf77a languageName: node linkType: hard -"@jupyterlab/json-extension@npm:~4.1.0": - version: 4.1.0 - resolution: "@jupyterlab/json-extension@npm:4.1.0" +"@jupyterlab/json-extension@npm:~4.1.5": + version: 4.1.5 + resolution: "@jupyterlab/json-extension@npm:4.1.5" dependencies: - "@jupyterlab/apputils": ^4.2.0 - "@jupyterlab/codemirror": ^4.1.0 - "@jupyterlab/rendermime-interfaces": ^3.9.0 - "@jupyterlab/translation": ^4.1.0 - "@jupyterlab/ui-components": ^4.1.0 + "@jupyterlab/apputils": ^4.2.5 + "@jupyterlab/codemirror": ^4.1.5 + "@jupyterlab/rendermime-interfaces": ^3.9.5 + "@jupyterlab/translation": ^4.1.5 + "@jupyterlab/ui-components": ^4.1.5 "@lezer/highlight": ^1.1.4 "@lumino/coreutils": ^2.1.2 "@lumino/messaging": ^2.0.1 @@ -1493,34 +1493,34 @@ __metadata: react-highlight-words: ^0.20.0 react-json-tree: ^0.18.0 style-mod: ^4.0.0 - checksum: fcf75d8dfc874d83b6b483eb7eb068eb671c32219629e8642a76cf1420ea94e29629a1a4aa78e55d38a493cd15d2d0a1075af53b8ad0cd692ed9f1a57f945a4a + checksum: 0af66d40dc2c81add879a01472e73a34fa9c7cc2d2528c7cbab6f7f8076779cb8fcc378b555e5592236c60740279ef9dc0882cf56365ba6b66f702ac895936c4 languageName: node linkType: hard -"@jupyterlab/launcher-extension@npm:~4.1.0": - version: 4.1.0 - resolution: "@jupyterlab/launcher-extension@npm:4.1.0" - dependencies: - "@jupyterlab/application": ^4.1.0 - "@jupyterlab/apputils": ^4.2.0 - "@jupyterlab/filebrowser": ^4.1.0 - "@jupyterlab/launcher": ^4.1.0 - "@jupyterlab/translation": ^4.1.0 - "@jupyterlab/ui-components": ^4.1.0 +"@jupyterlab/launcher-extension@npm:~4.1.5": + version: 4.1.5 + resolution: "@jupyterlab/launcher-extension@npm:4.1.5" + dependencies: + "@jupyterlab/application": ^4.1.5 + "@jupyterlab/apputils": ^4.2.5 + "@jupyterlab/filebrowser": ^4.1.5 + "@jupyterlab/launcher": ^4.1.5 + "@jupyterlab/translation": ^4.1.5 + "@jupyterlab/ui-components": ^4.1.5 "@lumino/algorithm": ^2.0.1 "@lumino/coreutils": ^2.1.2 "@lumino/widgets": ^2.3.1 - checksum: 0c49da85771ddee8b8c8a29e5d42bf2dad8ccc28f8a982b878f9cd2581500fcc1faab1fe1a640c8ff9bbc49453fc309fced173b3e6f6c83db08dc543bc444799 + checksum: e774e8a0c8493777990536b072b72ff00d9f5e0e01fa9c1d020465d0acb409f79a7120745a03457083c7bca36513085e055dc9fb15f53b70630078dfedb6f5b6 languageName: node linkType: hard -"@jupyterlab/launcher@npm:~4.1.0": - version: 4.1.0 - resolution: "@jupyterlab/launcher@npm:4.1.0" +"@jupyterlab/launcher@npm:~4.1.5": + version: 4.1.5 + resolution: "@jupyterlab/launcher@npm:4.1.5" dependencies: - "@jupyterlab/apputils": ^4.2.0 - "@jupyterlab/translation": ^4.1.0 - "@jupyterlab/ui-components": ^4.1.0 + "@jupyterlab/apputils": ^4.2.5 + "@jupyterlab/translation": ^4.1.5 + "@jupyterlab/ui-components": ^4.1.5 "@lumino/algorithm": ^2.0.1 "@lumino/commands": ^2.2.0 "@lumino/coreutils": ^2.1.2 @@ -1528,81 +1528,81 @@ __metadata: "@lumino/properties": ^2.0.1 "@lumino/widgets": ^2.3.1 react: ^18.2.0 - checksum: 1ce05be5d53e80e445e1f9e328298b4cc3409ac155090b69aaf733ff6607c0bcd2135b59ebaa6298e356277ff6a201ff37d3432b1e9f025bca1c2809d009e012 + checksum: 78ffd573f18f21e954969e29e4d2002631b7ccee4f44dc32373e8fe64fdc0ba523aec6f535e636e0395953cc1013a22b1cc520ad75cfc3029c842335030785b1 languageName: node linkType: hard -"@jupyterlab/logconsole-extension@npm:~4.1.0": - version: 4.1.0 - resolution: "@jupyterlab/logconsole-extension@npm:4.1.0" - dependencies: - "@jupyterlab/application": ^4.1.0 - "@jupyterlab/apputils": ^4.2.0 - "@jupyterlab/coreutils": ^6.1.0 - "@jupyterlab/logconsole": ^4.1.0 - "@jupyterlab/rendermime": ^4.1.0 - "@jupyterlab/settingregistry": ^4.1.0 - "@jupyterlab/statusbar": ^4.1.0 - "@jupyterlab/translation": ^4.1.0 - "@jupyterlab/ui-components": ^4.1.0 +"@jupyterlab/logconsole-extension@npm:~4.1.5": + version: 4.1.5 + resolution: "@jupyterlab/logconsole-extension@npm:4.1.5" + dependencies: + "@jupyterlab/application": ^4.1.5 + "@jupyterlab/apputils": ^4.2.5 + "@jupyterlab/coreutils": ^6.1.5 + "@jupyterlab/logconsole": ^4.1.5 + "@jupyterlab/rendermime": ^4.1.5 + "@jupyterlab/settingregistry": ^4.1.5 + "@jupyterlab/statusbar": ^4.1.5 + "@jupyterlab/translation": ^4.1.5 + "@jupyterlab/ui-components": ^4.1.5 "@lumino/coreutils": ^2.1.2 "@lumino/signaling": ^2.1.2 "@lumino/widgets": ^2.3.1 react: ^18.2.0 - checksum: ce8f7add1ba0a52bca856bab6fd2876435560f613d97e3ce5c488c0e7ebb7c1a071f2a248a10be6a7d22f2c5ab0546eacf093d8dcce0ca594293c3651ad6bf9c + checksum: 91e98fdddcc3fe5babeb1168cfe018ecbe163542877dd9bb727b6650b10190b98bed923070f2f1de98996ad77b18d8fd465f9d12f1ca952b775dea3b0a880cc3 languageName: node linkType: hard -"@jupyterlab/logconsole@npm:~4.1.0": - version: 4.1.0 - resolution: "@jupyterlab/logconsole@npm:4.1.0" - dependencies: - "@jupyterlab/coreutils": ^6.1.0 - "@jupyterlab/nbformat": ^4.1.0 - "@jupyterlab/outputarea": ^4.1.0 - "@jupyterlab/rendermime": ^4.1.0 - "@jupyterlab/services": ^7.1.0 - "@jupyterlab/translation": ^4.1.0 +"@jupyterlab/logconsole@npm:~4.1.5": + version: 4.1.5 + resolution: "@jupyterlab/logconsole@npm:4.1.5" + dependencies: + "@jupyterlab/coreutils": ^6.1.5 + "@jupyterlab/nbformat": ^4.1.5 + "@jupyterlab/outputarea": ^4.1.5 + "@jupyterlab/rendermime": ^4.1.5 + "@jupyterlab/services": ^7.1.5 + "@jupyterlab/translation": ^4.1.5 "@lumino/coreutils": ^2.1.2 "@lumino/disposable": ^2.1.2 "@lumino/messaging": ^2.0.1 "@lumino/signaling": ^2.1.2 "@lumino/widgets": ^2.3.1 - checksum: 368f2fa0f4b00a6b98ab0298bfbf8f50c3c00b3aaad7ed21538ca71b3b8d896a818d72413064300f0de74f43751023298030ce4b22143ee5dff5ada97eb7b821 + checksum: 9a6ce7edc30d3511d59fc81476539c4508bb117d2a6d9bc276abc48983daa9819584bcc7c8bd61bd5c09b80aa010b70d61f17d128ff480b413cb2206b87e089f languageName: node linkType: hard -"@jupyterlab/lsp-extension@npm:~4.1.0": - version: 4.1.0 - resolution: "@jupyterlab/lsp-extension@npm:4.1.0" - dependencies: - "@jupyterlab/application": ^4.1.0 - "@jupyterlab/apputils": ^4.2.0 - "@jupyterlab/lsp": ^4.1.0 - "@jupyterlab/running": ^4.1.0 - "@jupyterlab/settingregistry": ^4.1.0 - "@jupyterlab/translation": ^4.1.0 - "@jupyterlab/ui-components": ^4.1.0 +"@jupyterlab/lsp-extension@npm:~4.1.5": + version: 4.1.5 + resolution: "@jupyterlab/lsp-extension@npm:4.1.5" + dependencies: + "@jupyterlab/application": ^4.1.5 + "@jupyterlab/apputils": ^4.2.5 + "@jupyterlab/lsp": ^4.1.5 + "@jupyterlab/running": ^4.1.5 + "@jupyterlab/settingregistry": ^4.1.5 + "@jupyterlab/translation": ^4.1.5 + "@jupyterlab/ui-components": ^4.1.5 "@lumino/coreutils": ^2.1.2 "@lumino/polling": ^2.1.2 "@lumino/signaling": ^2.1.2 "@rjsf/utils": ^5.13.4 react: ^18.2.0 - checksum: 862dd41b92e55116666310296cdbea66e7c410cee6d14229ba8a3eb73fea7256c6fb9d69de94f30bf66f0f928497c302de733b659217b0936c372e48babccc03 + checksum: c51ad772fdff756a53122ddd07e7207753e42342113d94631d3bf74a432b15b681445eda9f881e8b16124ef0d3a23ac2b31c6e7acf0bcde2a306f710b1457bf8 languageName: node linkType: hard -"@jupyterlab/lsp@npm:~4.1.0": - version: 4.1.0 - resolution: "@jupyterlab/lsp@npm:4.1.0" - dependencies: - "@jupyterlab/apputils": ^4.2.0 - "@jupyterlab/codeeditor": ^4.1.0 - "@jupyterlab/codemirror": ^4.1.0 - "@jupyterlab/coreutils": ^6.1.0 - "@jupyterlab/docregistry": ^4.1.0 - "@jupyterlab/services": ^7.1.0 - "@jupyterlab/translation": ^4.1.0 +"@jupyterlab/lsp@npm:~4.1.5": + version: 4.1.5 + resolution: "@jupyterlab/lsp@npm:4.1.5" + dependencies: + "@jupyterlab/apputils": ^4.2.5 + "@jupyterlab/codeeditor": ^4.1.5 + "@jupyterlab/codemirror": ^4.1.5 + "@jupyterlab/coreutils": ^6.1.5 + "@jupyterlab/docregistry": ^4.1.5 + "@jupyterlab/services": ^7.1.5 + "@jupyterlab/translation": ^4.1.5 "@lumino/coreutils": ^2.1.2 "@lumino/disposable": ^2.1.2 "@lumino/signaling": ^2.1.2 @@ -1611,160 +1611,160 @@ __metadata: vscode-jsonrpc: ^6.0.0 vscode-languageserver-protocol: ^3.17.0 vscode-ws-jsonrpc: ~1.0.2 - checksum: 487e4d2609ed4212be79c00f45f445ebb252d3a37a537adc421d1cc7824a45c782578cbf5876b75e1a184a2d4a0cc9ec232494e4440b082062a63278ede502d3 + checksum: 2f8a63214684c5dde76eed7c7b22dbf3a4b33babdf081d3f321b00caae83045b97d4df216a903ecc0ed22950e8c213b11885f7efc94d1ce0ac30a5ca5b9362f6 languageName: node linkType: hard -"@jupyterlab/mainmenu-extension@npm:~4.1.0": - version: 4.1.0 - resolution: "@jupyterlab/mainmenu-extension@npm:4.1.0" - dependencies: - "@jupyterlab/application": ^4.1.0 - "@jupyterlab/apputils": ^4.2.0 - "@jupyterlab/coreutils": ^6.1.0 - "@jupyterlab/mainmenu": ^4.1.0 - "@jupyterlab/services": ^7.1.0 - "@jupyterlab/settingregistry": ^4.1.0 - "@jupyterlab/translation": ^4.1.0 - "@jupyterlab/ui-components": ^4.1.0 +"@jupyterlab/mainmenu-extension@npm:~4.1.5": + version: 4.1.5 + resolution: "@jupyterlab/mainmenu-extension@npm:4.1.5" + dependencies: + "@jupyterlab/application": ^4.1.5 + "@jupyterlab/apputils": ^4.2.5 + "@jupyterlab/coreutils": ^6.1.5 + "@jupyterlab/mainmenu": ^4.1.5 + "@jupyterlab/services": ^7.1.5 + "@jupyterlab/settingregistry": ^4.1.5 + "@jupyterlab/translation": ^4.1.5 + "@jupyterlab/ui-components": ^4.1.5 "@lumino/algorithm": ^2.0.1 "@lumino/coreutils": ^2.1.2 "@lumino/disposable": ^2.1.2 "@lumino/widgets": ^2.3.1 - checksum: e4e0997461b0f327af035933fc08126f7cb7a172f444875afddd6329511a94e7df61f28da3541e1cf62be3a4b3fb7d700db3004166acd223e09ab3bab99f3735 + checksum: 6a7e5a2246806cbfb81bfd2acd8095d816381fc08afa7d08684e9e09cce220f7977f673df0fc09604dd64c6413cf8fe1cebc1696614ff635a90736d80ffc014d languageName: node linkType: hard -"@jupyterlab/mainmenu@npm:~4.1.0": - version: 4.1.0 - resolution: "@jupyterlab/mainmenu@npm:4.1.0" +"@jupyterlab/mainmenu@npm:~4.1.5": + version: 4.1.5 + resolution: "@jupyterlab/mainmenu@npm:4.1.5" dependencies: - "@jupyterlab/apputils": ^4.2.0 - "@jupyterlab/translation": ^4.1.0 - "@jupyterlab/ui-components": ^4.1.0 + "@jupyterlab/apputils": ^4.2.5 + "@jupyterlab/translation": ^4.1.5 + "@jupyterlab/ui-components": ^4.1.5 "@lumino/algorithm": ^2.0.1 "@lumino/commands": ^2.2.0 "@lumino/coreutils": ^2.1.2 "@lumino/widgets": ^2.3.1 - checksum: d8d0d62723d24f2a9a5741693040890d8deba51dffc9e960f517829ad32165c1b406682509c7d521c960ddc37099b6422c29fa8f0f008dab399e59792de6319e + checksum: 7e0e3fe6635dee022cdc5326306ed0abe4b1a04b4f110c2393c825479e5959b9e33a6fc030e61324d09f7dadfc39dd041a58ad299dc522ce55988e6aa06fdc0b languageName: node linkType: hard -"@jupyterlab/markdownviewer-extension@npm:~4.1.0": - version: 4.1.0 - resolution: "@jupyterlab/markdownviewer-extension@npm:4.1.0" +"@jupyterlab/markdownviewer-extension@npm:~4.1.5": + version: 4.1.5 + resolution: "@jupyterlab/markdownviewer-extension@npm:4.1.5" dependencies: - "@jupyterlab/application": ^4.1.0 - "@jupyterlab/apputils": ^4.2.0 - "@jupyterlab/coreutils": ^6.1.0 - "@jupyterlab/markdownviewer": ^4.1.0 - "@jupyterlab/rendermime": ^4.1.0 - "@jupyterlab/settingregistry": ^4.1.0 - "@jupyterlab/toc": ^6.1.0 - "@jupyterlab/translation": ^4.1.0 - checksum: 90161c79b5ed8fa955c7e397aa62f7106121f3dfae2d352bbb4758d144850e2af1101d579412313cbd09ada417badb44981d600449e998aa951249618f5e6381 + "@jupyterlab/application": ^4.1.5 + "@jupyterlab/apputils": ^4.2.5 + "@jupyterlab/coreutils": ^6.1.5 + "@jupyterlab/markdownviewer": ^4.1.5 + "@jupyterlab/rendermime": ^4.1.5 + "@jupyterlab/settingregistry": ^4.1.5 + "@jupyterlab/toc": ^6.1.5 + "@jupyterlab/translation": ^4.1.5 + checksum: f125de07cf1f6d62cea6cd0fb518eed285483524af8751c3ff622a86d06997ab1535ab24195f9cfe3acb6052811f74c08e0d62f28caaad22f350f7179261ae4b languageName: node linkType: hard -"@jupyterlab/markdownviewer@npm:~4.1.0": - version: 4.1.0 - resolution: "@jupyterlab/markdownviewer@npm:4.1.0" - dependencies: - "@jupyterlab/apputils": ^4.2.0 - "@jupyterlab/coreutils": ^6.1.0 - "@jupyterlab/docregistry": ^4.1.0 - "@jupyterlab/rendermime": ^4.1.0 - "@jupyterlab/toc": ^6.1.0 - "@jupyterlab/translation": ^4.1.0 +"@jupyterlab/markdownviewer@npm:~4.1.5": + version: 4.1.5 + resolution: "@jupyterlab/markdownviewer@npm:4.1.5" + dependencies: + "@jupyterlab/apputils": ^4.2.5 + "@jupyterlab/coreutils": ^6.1.5 + "@jupyterlab/docregistry": ^4.1.5 + "@jupyterlab/rendermime": ^4.1.5 + "@jupyterlab/toc": ^6.1.5 + "@jupyterlab/translation": ^4.1.5 "@lumino/coreutils": ^2.1.2 "@lumino/messaging": ^2.0.1 "@lumino/signaling": ^2.1.2 "@lumino/widgets": ^2.3.1 - checksum: 93131c4d999beacd95db940fd1df2b9f098675489274f4bd961406478c4e52114bb400365b8e6534a99126bf8ba91b85e0945a072c8554970fca46c192710a07 + checksum: 45f4397265fd44144a948588f6770498ba07a7b93a81697fc6f0423d4e9730149eff8213f9371954439d7ee5ba526f43c216696a752d213647c2068b10931686 languageName: node linkType: hard -"@jupyterlab/markedparser-extension@npm:~4.1.0": - version: 4.1.0 - resolution: "@jupyterlab/markedparser-extension@npm:4.1.0" +"@jupyterlab/markedparser-extension@npm:~4.1.5": + version: 4.1.5 + resolution: "@jupyterlab/markedparser-extension@npm:4.1.5" dependencies: - "@jupyterlab/application": ^4.1.0 - "@jupyterlab/codemirror": ^4.1.0 - "@jupyterlab/coreutils": ^6.1.0 - "@jupyterlab/mermaid": ^4.1.0 - "@jupyterlab/rendermime": ^4.1.0 + "@jupyterlab/application": ^4.1.5 + "@jupyterlab/codemirror": ^4.1.5 + "@jupyterlab/coreutils": ^6.1.5 + "@jupyterlab/mermaid": ^4.1.5 + "@jupyterlab/rendermime": ^4.1.5 "@lumino/coreutils": ^2.1.2 marked: ^9.1.2 marked-gfm-heading-id: ^3.1.0 marked-mangle: ^1.1.4 - checksum: eeff64b59ec04f7eee427ba06ce3d73605be673125a4c0b02bc868fc5852f3923bf151ae7f0ce1497da1e73692af7fa074e0eb11f30585f20dd6462dfd9577c0 + checksum: d8b651e3e3eb339d4a9f44bb49323dc3c55e27a7afe8c397c149c2b0adca3f36a3d46306e37341f376587af25c60d7e910afb4114e4112056ba677c145dd99b7 languageName: node linkType: hard -"@jupyterlab/mathjax-extension@npm:~4.1.0": - version: 4.1.0 - resolution: "@jupyterlab/mathjax-extension@npm:4.1.0" +"@jupyterlab/mathjax-extension@npm:~4.1.5": + version: 4.1.5 + resolution: "@jupyterlab/mathjax-extension@npm:4.1.5" dependencies: - "@jupyterlab/application": ^4.1.0 - "@jupyterlab/rendermime": ^4.1.0 + "@jupyterlab/application": ^4.1.5 + "@jupyterlab/rendermime": ^4.1.5 "@lumino/coreutils": ^2.1.2 mathjax-full: ^3.2.2 - checksum: 11bcc01fdc0f498342c1163168bec135313050625e376b5f5f2894a9fa304b22fb32d40172da998df3bb49ae539ff373449576d67d47f4ca6ecc278da8cf793f + checksum: 91714e7913c32fd054db9ae0040023eba2addccc1261e109feb4bf58f51f5bd08b447f7cfce3e7cbaf4a1ee3adb300fe4ddcd9bc45d008483dd1483cdb5638b7 languageName: node linkType: hard -"@jupyterlab/mermaid-extension@npm:~4.1.0": - version: 4.1.0 - resolution: "@jupyterlab/mermaid-extension@npm:4.1.0" +"@jupyterlab/mermaid-extension@npm:~4.1.5": + version: 4.1.5 + resolution: "@jupyterlab/mermaid-extension@npm:4.1.5" dependencies: - "@jupyterlab/application": ^4.1.0 - "@jupyterlab/apputils": ^4.2.0 - "@jupyterlab/mermaid": ^4.1.0 - "@jupyterlab/rendermime-interfaces": ^3.9.0 - "@jupyterlab/translation": ^4.1.0 - checksum: a0ffd97e64164a435c32ac811939979aae63a903e5985c9eb959319cb72eb1463c3edfe8ce71b0337c7945064f615bb2928a80fcbe3b1a26b283212360d2c64a + "@jupyterlab/application": ^4.1.5 + "@jupyterlab/apputils": ^4.2.5 + "@jupyterlab/mermaid": ^4.1.5 + "@jupyterlab/rendermime-interfaces": ^3.9.5 + "@jupyterlab/translation": ^4.1.5 + checksum: 60a98c69c382af0ed10cca4aa50f3e744635ba483256360213d648eb2bf2b7eb291c4f2a926b8e8663d5e0b65c95a48fe9b791bfc7cc612982caa508bf7f0342 languageName: node linkType: hard -"@jupyterlab/mermaid@npm:~4.1.0": - version: 4.1.0 - resolution: "@jupyterlab/mermaid@npm:4.1.0" +"@jupyterlab/mermaid@npm:~4.1.5": + version: 4.1.5 + resolution: "@jupyterlab/mermaid@npm:4.1.5" dependencies: - "@jupyterlab/apputils": ^4.2.0 - "@jupyterlab/coreutils": ^6.1.0 - "@jupyterlab/rendermime-interfaces": ^3.9.0 + "@jupyterlab/apputils": ^4.2.5 + "@jupyterlab/coreutils": ^6.1.5 + "@jupyterlab/rendermime-interfaces": ^3.9.5 "@lumino/coreutils": ^2.1.2 "@lumino/widgets": ^2.3.1 mermaid: ^10.7.0 - checksum: cf7dd70a1a899d4abdb47084af9fe78e48b1855db209f5584e2534de7b4d798e26fb21a6e600670227eca17b77cf5423d5d83550bbc84b02b07d5e4054b601db + checksum: 32d3d8ec5658a8549cd22b9a78948116d45dc36f741a2a66c3b0f26d87cbe8d7c796a71df4363c4760e9d8b76bd15a76a09893330d2eda89bf117e86988ddfbe languageName: node linkType: hard -"@jupyterlab/metadataform-extension@npm:~4.1.0": - version: 4.1.0 - resolution: "@jupyterlab/metadataform-extension@npm:4.1.0" - dependencies: - "@jupyterlab/application": ^4.1.0 - "@jupyterlab/metadataform": ^4.1.0 - "@jupyterlab/notebook": ^4.1.0 - "@jupyterlab/settingregistry": ^4.1.0 - "@jupyterlab/translation": ^4.1.0 - "@jupyterlab/ui-components": ^4.1.0 +"@jupyterlab/metadataform-extension@npm:~4.1.5": + version: 4.1.5 + resolution: "@jupyterlab/metadataform-extension@npm:4.1.5" + dependencies: + "@jupyterlab/application": ^4.1.5 + "@jupyterlab/metadataform": ^4.1.5 + "@jupyterlab/notebook": ^4.1.5 + "@jupyterlab/settingregistry": ^4.1.5 + "@jupyterlab/translation": ^4.1.5 + "@jupyterlab/ui-components": ^4.1.5 "@lumino/coreutils": ^2.1.2 - checksum: 17a07b2c380a02bb10344ff2491e4d9fd953b5e61a75c3062fc555d9df6ecbe6f21f6102d781a720fc315ac3ff21eb007c7de3ea465ae78f1455c13dfba8907e + checksum: 0b7a2b39b0a332e4f103c9a93244221c6fab39fc90da7ba961233baaaf58da683ac3f51a5665120f7c1c9fc23eed9def9059f6afe5a4d987069953da09e5eb0b languageName: node linkType: hard -"@jupyterlab/metadataform@npm:~4.1.0": - version: 4.1.0 - resolution: "@jupyterlab/metadataform@npm:4.1.0" - dependencies: - "@jupyterlab/apputils": ^4.2.0 - "@jupyterlab/nbformat": ^4.1.0 - "@jupyterlab/notebook": ^4.1.0 - "@jupyterlab/settingregistry": ^4.1.0 - "@jupyterlab/translation": ^4.1.0 - "@jupyterlab/ui-components": ^4.1.0 +"@jupyterlab/metadataform@npm:~4.1.5": + version: 4.1.5 + resolution: "@jupyterlab/metadataform@npm:4.1.5" + dependencies: + "@jupyterlab/apputils": ^4.2.5 + "@jupyterlab/nbformat": ^4.1.5 + "@jupyterlab/notebook": ^4.1.5 + "@jupyterlab/settingregistry": ^4.1.5 + "@jupyterlab/translation": ^4.1.5 + "@jupyterlab/ui-components": ^4.1.5 "@lumino/coreutils": ^2.1.2 "@lumino/messaging": ^2.0.1 "@lumino/widgets": ^2.3.1 @@ -1772,53 +1772,53 @@ __metadata: "@rjsf/validator-ajv8": ^5.13.4 json-schema: ^0.4.0 react: ^18.2.0 - checksum: f39a731851cbc11d899aad9a8ba3169e00188341f8885b145689c9c7ad88d3375cf0ff6c82ab613f08ce76a31c1b1286b0b99692b69dd54e6a355e76f8282a1f + checksum: dcb7feffc47a8a72cf7533c4327036fc09ee09cc635a47d45060fe954942424265971ec0223c9991b6466b526f5ba20e2da2ec355facd2c008676fa7a50f3639 languageName: node linkType: hard -"@jupyterlab/nbformat@npm:~4.1.0": - version: 4.1.0 - resolution: "@jupyterlab/nbformat@npm:4.1.0" +"@jupyterlab/nbformat@npm:~4.1.5": + version: 4.1.5 + resolution: "@jupyterlab/nbformat@npm:4.1.5" dependencies: "@lumino/coreutils": ^2.1.2 - checksum: 0f10f53d312e1ad386be0cd1db3ea8d76ac5e169a1c470465179b35c7d7bd0e55b9d450b64abe38f447dcbec71224bfe8d4115a1cdb433f986d3a91234ffd391 + checksum: d417d7eade40d389fea8593358b6455158cf3e67fa40c0c4c05c865852520acc466102109723c9cb16eecf95952617d79f7fe6be9da6ca3f601749bdecdfda97 languageName: node linkType: hard -"@jupyterlab/notebook-extension@npm:~4.1.0": - version: 4.1.0 - resolution: "@jupyterlab/notebook-extension@npm:4.1.0" +"@jupyterlab/notebook-extension@npm:~4.1.5": + version: 4.1.5 + resolution: "@jupyterlab/notebook-extension@npm:4.1.5" dependencies: "@jupyter/ydoc": ^1.1.1 - "@jupyterlab/application": ^4.1.0 - "@jupyterlab/apputils": ^4.2.0 - "@jupyterlab/cells": ^4.1.0 - "@jupyterlab/codeeditor": ^4.1.0 - "@jupyterlab/codemirror": ^4.1.0 - "@jupyterlab/completer": ^4.1.0 - "@jupyterlab/coreutils": ^6.1.0 - "@jupyterlab/docmanager": ^4.1.0 - "@jupyterlab/docmanager-extension": ^4.1.0 - "@jupyterlab/docregistry": ^4.1.0 - "@jupyterlab/documentsearch": ^4.1.0 - "@jupyterlab/filebrowser": ^4.1.0 - "@jupyterlab/launcher": ^4.1.0 - "@jupyterlab/logconsole": ^4.1.0 - "@jupyterlab/lsp": ^4.1.0 - "@jupyterlab/mainmenu": ^4.1.0 - "@jupyterlab/metadataform": ^4.1.0 - "@jupyterlab/nbformat": ^4.1.0 - "@jupyterlab/notebook": ^4.1.0 - "@jupyterlab/observables": ^5.1.0 - "@jupyterlab/property-inspector": ^4.1.0 - "@jupyterlab/rendermime": ^4.1.0 - "@jupyterlab/services": ^7.1.0 - "@jupyterlab/settingregistry": ^4.1.0 - "@jupyterlab/statedb": ^4.1.0 - "@jupyterlab/statusbar": ^4.1.0 - "@jupyterlab/toc": ^6.1.0 - "@jupyterlab/translation": ^4.1.0 - "@jupyterlab/ui-components": ^4.1.0 + "@jupyterlab/application": ^4.1.5 + "@jupyterlab/apputils": ^4.2.5 + "@jupyterlab/cells": ^4.1.5 + "@jupyterlab/codeeditor": ^4.1.5 + "@jupyterlab/codemirror": ^4.1.5 + "@jupyterlab/completer": ^4.1.5 + "@jupyterlab/coreutils": ^6.1.5 + "@jupyterlab/docmanager": ^4.1.5 + "@jupyterlab/docmanager-extension": ^4.1.5 + "@jupyterlab/docregistry": ^4.1.5 + "@jupyterlab/documentsearch": ^4.1.5 + "@jupyterlab/filebrowser": ^4.1.5 + "@jupyterlab/launcher": ^4.1.5 + "@jupyterlab/logconsole": ^4.1.5 + "@jupyterlab/lsp": ^4.1.5 + "@jupyterlab/mainmenu": ^4.1.5 + "@jupyterlab/metadataform": ^4.1.5 + "@jupyterlab/nbformat": ^4.1.5 + "@jupyterlab/notebook": ^4.1.5 + "@jupyterlab/observables": ^5.1.5 + "@jupyterlab/property-inspector": ^4.1.5 + "@jupyterlab/rendermime": ^4.1.5 + "@jupyterlab/services": ^7.1.5 + "@jupyterlab/settingregistry": ^4.1.5 + "@jupyterlab/statedb": ^4.1.5 + "@jupyterlab/statusbar": ^4.1.5 + "@jupyterlab/toc": ^6.1.5 + "@jupyterlab/translation": ^4.1.5 + "@jupyterlab/ui-components": ^4.1.5 "@lumino/algorithm": ^2.0.1 "@lumino/commands": ^2.2.0 "@lumino/coreutils": ^2.1.2 @@ -1828,32 +1828,32 @@ __metadata: "@lumino/widgets": ^2.3.1 "@rjsf/utils": ^5.13.4 react: ^18.2.0 - checksum: 6addb9f7b596cc094b4b97387c3b439786e0ec3993899e2416eaf63cfd71777a20c5861d5246d4fe8956c6ce065f1595a02e14fa97e86e2985c04f03811a10e8 + checksum: a129f0cf3784624768e75ed4f509b496a56bee8aebfb373a830ec37de4e010add8732330d14f35657b367230a6d6701915d5d9cc5bd474808a5c13f386530c26 languageName: node linkType: hard -"@jupyterlab/notebook@npm:~4.1.0": - version: 4.1.0 - resolution: "@jupyterlab/notebook@npm:4.1.0" +"@jupyterlab/notebook@npm:~4.1.5": + version: 4.1.5 + resolution: "@jupyterlab/notebook@npm:4.1.5" dependencies: "@jupyter/ydoc": ^1.1.1 - "@jupyterlab/apputils": ^4.2.0 - "@jupyterlab/cells": ^4.1.0 - "@jupyterlab/codeeditor": ^4.1.0 - "@jupyterlab/codemirror": ^4.1.0 - "@jupyterlab/coreutils": ^6.1.0 - "@jupyterlab/docregistry": ^4.1.0 - "@jupyterlab/documentsearch": ^4.1.0 - "@jupyterlab/lsp": ^4.1.0 - "@jupyterlab/nbformat": ^4.1.0 - "@jupyterlab/observables": ^5.1.0 - "@jupyterlab/rendermime": ^4.1.0 - "@jupyterlab/services": ^7.1.0 - "@jupyterlab/settingregistry": ^4.1.0 - "@jupyterlab/statusbar": ^4.1.0 - "@jupyterlab/toc": ^6.1.0 - "@jupyterlab/translation": ^4.1.0 - "@jupyterlab/ui-components": ^4.1.0 + "@jupyterlab/apputils": ^4.2.5 + "@jupyterlab/cells": ^4.1.5 + "@jupyterlab/codeeditor": ^4.1.5 + "@jupyterlab/codemirror": ^4.1.5 + "@jupyterlab/coreutils": ^6.1.5 + "@jupyterlab/docregistry": ^4.1.5 + "@jupyterlab/documentsearch": ^4.1.5 + "@jupyterlab/lsp": ^4.1.5 + "@jupyterlab/nbformat": ^4.1.5 + "@jupyterlab/observables": ^5.1.5 + "@jupyterlab/rendermime": ^4.1.5 + "@jupyterlab/services": ^7.1.5 + "@jupyterlab/settingregistry": ^4.1.5 + "@jupyterlab/statusbar": ^4.1.5 + "@jupyterlab/toc": ^6.1.5 + "@jupyterlab/translation": ^4.1.5 + "@jupyterlab/ui-components": ^4.1.5 "@lumino/algorithm": ^2.0.1 "@lumino/coreutils": ^2.1.2 "@lumino/disposable": ^2.1.2 @@ -1865,34 +1865,34 @@ __metadata: "@lumino/virtualdom": ^2.0.1 "@lumino/widgets": ^2.3.1 react: ^18.2.0 - checksum: 0083ef437c3db33d5fdbb72e176f4aa74e3f07a9bdd7868dc72deef65ee50de75156c92c9e9be4464d498225867488e7b177668579a3996869819d1e1e14bf53 + checksum: 63ae9f1ec558b48cd81f4155d52a5c0ae9cf4bc76fe21273762e45077a7e5768b071b20aeee616cfdfee767f26667b2b896304c90ced3db96605e6e655a00903 languageName: node linkType: hard -"@jupyterlab/observables@npm:~5.1.0": - version: 5.1.0 - resolution: "@jupyterlab/observables@npm:5.1.0" +"@jupyterlab/observables@npm:~5.1.5": + version: 5.1.5 + resolution: "@jupyterlab/observables@npm:5.1.5" dependencies: "@lumino/algorithm": ^2.0.1 "@lumino/coreutils": ^2.1.2 "@lumino/disposable": ^2.1.2 "@lumino/messaging": ^2.0.1 "@lumino/signaling": ^2.1.2 - checksum: 38ee528b244b06a2813874e11d2c3aa8b576f98ffdf9f77fc6c9ddf49de296b4067b4ad7f41f5eaab1de50d16fc79a31d26a34963e09c259e4332cf15c0c7bd5 + checksum: 6d45de8a137c79566818ff56460366419b2603a06ab5d9cef4f0b311df3fd69c755b357ab3bd9c26ed56dec5a2247ef0cfc15cfa6e2e180aa46af7f96c6ab10c languageName: node linkType: hard -"@jupyterlab/outputarea@npm:~4.1.0": - version: 4.1.0 - resolution: "@jupyterlab/outputarea@npm:4.1.0" - dependencies: - "@jupyterlab/apputils": ^4.2.0 - "@jupyterlab/nbformat": ^4.1.0 - "@jupyterlab/observables": ^5.1.0 - "@jupyterlab/rendermime": ^4.1.0 - "@jupyterlab/rendermime-interfaces": ^3.9.0 - "@jupyterlab/services": ^7.1.0 - "@jupyterlab/translation": ^4.1.0 +"@jupyterlab/outputarea@npm:~4.1.5": + version: 4.1.5 + resolution: "@jupyterlab/outputarea@npm:4.1.5" + dependencies: + "@jupyterlab/apputils": ^4.2.5 + "@jupyterlab/nbformat": ^4.1.5 + "@jupyterlab/observables": ^5.1.5 + "@jupyterlab/rendermime": ^4.1.5 + "@jupyterlab/rendermime-interfaces": ^3.9.5 + "@jupyterlab/services": ^7.1.5 + "@jupyterlab/translation": ^4.1.5 "@lumino/algorithm": ^2.0.1 "@lumino/coreutils": ^2.1.2 "@lumino/disposable": ^2.1.2 @@ -1900,201 +1900,201 @@ __metadata: "@lumino/properties": ^2.0.1 "@lumino/signaling": ^2.1.2 "@lumino/widgets": ^2.3.1 - checksum: 069d5d5fa1e75f5a09421e22fbaa15729f8bbc93c3915f9c0a8bee404a663b8def6c0c0d82a85d84cc6c4e3bdda87eb3d7820eb74e1cf1b99b834ee49ccf572f + checksum: 3cd51dd9ba4d613c42ec2917065c8b6f39b418e3a892b7662741f31aceaca816e55af80af97513e783a6b1e4d152497e03062b18ee80dc1bace0b4d2a7f4b439 languageName: node linkType: hard -"@jupyterlab/pdf-extension@npm:~4.1.0": - version: 4.1.0 - resolution: "@jupyterlab/pdf-extension@npm:4.1.0" +"@jupyterlab/pdf-extension@npm:~4.1.5": + version: 4.1.5 + resolution: "@jupyterlab/pdf-extension@npm:4.1.5" dependencies: - "@jupyterlab/rendermime-interfaces": ^3.9.0 + "@jupyterlab/rendermime-interfaces": ^3.9.5 "@lumino/coreutils": ^2.1.2 "@lumino/disposable": ^2.1.2 "@lumino/widgets": ^2.3.1 - checksum: 821e1fd08297e92cfbbc1fd911c40443894862f92a0b6dbfd5f8cbf124bae7a1985a6aa60dfdacf9eef686fbe1b5bf4a0fd03cfb25ea9423b7e6fc548f563815 + checksum: a8a567c1dc4d49d6561df272626a44cc8d40c2d859f1860b8d9200831bd0724bb529b93ec3ab614bf677d1ec3ed9abec553cc68a48d256ad835cf0dac98a7b3b languageName: node linkType: hard -"@jupyterlab/pluginmanager-extension@npm:~4.1.0": - version: 4.1.0 - resolution: "@jupyterlab/pluginmanager-extension@npm:4.1.0" +"@jupyterlab/pluginmanager-extension@npm:~4.1.5": + version: 4.1.5 + resolution: "@jupyterlab/pluginmanager-extension@npm:4.1.5" dependencies: - "@jupyterlab/application": ^4.1.0 - "@jupyterlab/apputils": ^4.2.0 - "@jupyterlab/pluginmanager": ^4.1.0 - "@jupyterlab/translation": ^4.1.0 - "@jupyterlab/ui-components": ^4.1.0 + "@jupyterlab/application": ^4.1.5 + "@jupyterlab/apputils": ^4.2.5 + "@jupyterlab/pluginmanager": ^4.1.5 + "@jupyterlab/translation": ^4.1.5 + "@jupyterlab/ui-components": ^4.1.5 "@lumino/coreutils": ^2.1.2 - checksum: 716d426688e972247ba9564e867b97d5fedcbb940e54794ea7e0dacb0648e8005cd9bddab74fb92cfc5c83648cfff43fca2ae8ce59b58d6a3dd8b47d90abcbb8 + checksum: 34a3799ddc2b1bc0ac29c8084565b37ccac83285500b9df70af7e38b01cdf0f065b38d49037d23c6852cbd74995159131329c9a892997ee82887441603fba289 languageName: node linkType: hard -"@jupyterlab/pluginmanager@npm:~4.1.0": - version: 4.1.0 - resolution: "@jupyterlab/pluginmanager@npm:4.1.0" - dependencies: - "@jupyterlab/application": ^4.1.0 - "@jupyterlab/apputils": ^4.2.0 - "@jupyterlab/coreutils": ^6.1.0 - "@jupyterlab/services": ^7.1.0 - "@jupyterlab/translation": ^4.1.0 - "@jupyterlab/ui-components": ^4.1.0 +"@jupyterlab/pluginmanager@npm:~4.1.5": + version: 4.1.5 + resolution: "@jupyterlab/pluginmanager@npm:4.1.5" + dependencies: + "@jupyterlab/application": ^4.1.5 + "@jupyterlab/apputils": ^4.2.5 + "@jupyterlab/coreutils": ^6.1.5 + "@jupyterlab/services": ^7.1.5 + "@jupyterlab/translation": ^4.1.5 + "@jupyterlab/ui-components": ^4.1.5 "@lumino/coreutils": ^2.1.2 "@lumino/signaling": ^2.1.2 "@lumino/widgets": ^2.3.1 react: ^18.2.0 - checksum: fa0b5169ed9903ed1912f15645f6b5dd03de14da0040e7a98e7b36fe4a283b463446682dc342829ca2b20557ef2b084cf7570ef89c86350209c8f78d6fd1b322 + checksum: 5b8dc56f2970c57059b2a4429decd61e7062654084008f85abe7ef8eb2580ad1d6776ceb4f4e1709b365812605edd30be61d5d20adcdaba99227ab9819fe7feb languageName: node linkType: hard -"@jupyterlab/property-inspector@npm:~4.1.0": - version: 4.1.0 - resolution: "@jupyterlab/property-inspector@npm:4.1.0" +"@jupyterlab/property-inspector@npm:~4.1.5": + version: 4.1.5 + resolution: "@jupyterlab/property-inspector@npm:4.1.5" dependencies: - "@jupyterlab/application": ^4.1.0 - "@jupyterlab/translation": ^4.1.0 - "@jupyterlab/ui-components": ^4.1.0 + "@jupyterlab/application": ^4.1.5 + "@jupyterlab/translation": ^4.1.5 + "@jupyterlab/ui-components": ^4.1.5 "@lumino/coreutils": ^2.1.2 "@lumino/disposable": ^2.1.2 "@lumino/signaling": ^2.1.2 "@lumino/widgets": ^2.3.1 react: ^18.2.0 - checksum: 1c570f296341c7b6167fb981ea68adfe9ca1250aacf4e78c170541b5f8421d641fcf50657234b683a21c4047d4bb48a522bac55dc723256d34768445da88cf71 + checksum: b24cfcb8f5aeb598d02b02aefa2b2dab2621fb5c2cf38f3ef6ea24bebdf26a765b87e89869d357eda5a423eb806f1b28f036f33ac3365dae25e3dd655e820b5b languageName: node linkType: hard -"@jupyterlab/rendermime-extension@npm:~4.1.0": - version: 4.1.0 - resolution: "@jupyterlab/rendermime-extension@npm:4.1.0" +"@jupyterlab/rendermime-extension@npm:~4.1.5": + version: 4.1.5 + resolution: "@jupyterlab/rendermime-extension@npm:4.1.5" dependencies: - "@jupyterlab/application": ^4.1.0 - "@jupyterlab/apputils": ^4.2.0 - "@jupyterlab/docmanager": ^4.1.0 - "@jupyterlab/rendermime": ^4.1.0 - "@jupyterlab/translation": ^4.1.0 - checksum: 31152fa26023f9d99267c6da9bfc66b35f005e057d5c0449a324ee867bf7deab0d834d3ec5ab678e4d3298420434d88a0c547da144d8c012148e61f8890ce1e5 + "@jupyterlab/application": ^4.1.5 + "@jupyterlab/apputils": ^4.2.5 + "@jupyterlab/docmanager": ^4.1.5 + "@jupyterlab/rendermime": ^4.1.5 + "@jupyterlab/translation": ^4.1.5 + checksum: d3bec65c77ec5205ade4063a040be632175848d484619b6dc90964e31b9375cdc0cc10e1cdd18d61f98c5680f624fd80680c3c5b85303ff33f984f11b20bffde languageName: node linkType: hard -"@jupyterlab/rendermime-interfaces@npm:~3.9.0": - version: 3.9.0 - resolution: "@jupyterlab/rendermime-interfaces@npm:3.9.0" +"@jupyterlab/rendermime-interfaces@npm:~3.9.5": + version: 3.9.5 + resolution: "@jupyterlab/rendermime-interfaces@npm:3.9.5" dependencies: "@lumino/coreutils": ^1.11.0 || ^2.1.2 "@lumino/widgets": ^1.37.2 || ^2.3.1 - checksum: 462f5d034cd636caf9322245a50045ddaac55e05e056e7c6579e2db55088e724c8054a51a959aa284c44b108a9e0f0053707b50d6d8a9caed5825eeaf715b245 + checksum: 790c8d4d58213c02470599b2c69e8ccff8d3496750fc88403aafe4e7bc26bb262d40c9ed3fdd27fdfd77268b94e7ea4e178f73897dd42d9ab18cbe5a359d925c languageName: node linkType: hard -"@jupyterlab/rendermime@npm:~4.1.0": - version: 4.1.0 - resolution: "@jupyterlab/rendermime@npm:4.1.0" - dependencies: - "@jupyterlab/apputils": ^4.2.0 - "@jupyterlab/coreutils": ^6.1.0 - "@jupyterlab/nbformat": ^4.1.0 - "@jupyterlab/observables": ^5.1.0 - "@jupyterlab/rendermime-interfaces": ^3.9.0 - "@jupyterlab/services": ^7.1.0 - "@jupyterlab/translation": ^4.1.0 +"@jupyterlab/rendermime@npm:~4.1.5": + version: 4.1.5 + resolution: "@jupyterlab/rendermime@npm:4.1.5" + dependencies: + "@jupyterlab/apputils": ^4.2.5 + "@jupyterlab/coreutils": ^6.1.5 + "@jupyterlab/nbformat": ^4.1.5 + "@jupyterlab/observables": ^5.1.5 + "@jupyterlab/rendermime-interfaces": ^3.9.5 + "@jupyterlab/services": ^7.1.5 + "@jupyterlab/translation": ^4.1.5 "@lumino/coreutils": ^2.1.2 "@lumino/messaging": ^2.0.1 "@lumino/signaling": ^2.1.2 "@lumino/widgets": ^2.3.1 lodash.escape: ^4.0.1 - checksum: 52323a1d907b29f5b60c237b6e1c3085c667f9fd59e76c6dcab29076a50eb4bd39efe5f6e3e49e3dbabb6dc1f5f7820f09af74f211a76e7e7db6c7c0be8d5715 + checksum: b96a56aa5e32cfcb99ac757ccb41cad29f2be9ded204c6f7bdc5b1bf55cdb4e2129aef596c0ee21ac96384e809c3aea59cd2885c7e2c8d39d45bdf373041259b languageName: node linkType: hard -"@jupyterlab/running-extension@npm:~4.1.0": - version: 4.1.0 - resolution: "@jupyterlab/running-extension@npm:4.1.0" - dependencies: - "@jupyterlab/application": ^4.1.0 - "@jupyterlab/coreutils": ^6.1.0 - "@jupyterlab/docregistry": ^4.1.0 - "@jupyterlab/rendermime-interfaces": ^3.9.0 - "@jupyterlab/running": ^4.1.0 - "@jupyterlab/services": ^7.1.0 - "@jupyterlab/translation": ^4.1.0 - "@jupyterlab/ui-components": ^4.1.0 +"@jupyterlab/running-extension@npm:~4.1.5": + version: 4.1.5 + resolution: "@jupyterlab/running-extension@npm:4.1.5" + dependencies: + "@jupyterlab/application": ^4.1.5 + "@jupyterlab/coreutils": ^6.1.5 + "@jupyterlab/docregistry": ^4.1.5 + "@jupyterlab/rendermime-interfaces": ^3.9.5 + "@jupyterlab/running": ^4.1.5 + "@jupyterlab/services": ^7.1.5 + "@jupyterlab/translation": ^4.1.5 + "@jupyterlab/ui-components": ^4.1.5 "@lumino/commands": ^2.2.0 "@lumino/polling": ^2.1.2 "@lumino/signaling": ^2.1.2 "@lumino/widgets": ^2.3.1 - checksum: 443b385bfed5a490dc25727b0cb61230aa506735b704d7fbdc7a3d97890561d58f7e772d716332088be133a940653603c3e2449958d5201f9c96ef737574a804 + checksum: 781997edc1a8f4db25412cf989e52eb4f22e4e7ffb74f3245f1dad696303572b8546180957f3c17acb4fa62c4d38f4d16acae40bc129af22efeafccd91c2cce8 languageName: node linkType: hard -"@jupyterlab/running@npm:~4.1.0": - version: 4.1.0 - resolution: "@jupyterlab/running@npm:4.1.0" +"@jupyterlab/running@npm:~4.1.5": + version: 4.1.5 + resolution: "@jupyterlab/running@npm:4.1.5" dependencies: - "@jupyterlab/apputils": ^4.2.0 - "@jupyterlab/translation": ^4.1.0 - "@jupyterlab/ui-components": ^4.1.0 + "@jupyterlab/apputils": ^4.2.5 + "@jupyterlab/translation": ^4.1.5 + "@jupyterlab/ui-components": ^4.1.5 "@lumino/coreutils": ^2.1.2 "@lumino/disposable": ^2.1.2 "@lumino/messaging": ^2.0.1 "@lumino/signaling": ^2.1.2 "@lumino/widgets": ^2.3.1 react: ^18.2.0 - checksum: 6cfe67d8f6fe8ba2aba4413ecf97ae182c10ab52c77eb5ddc9366bac68af4b0dd2aa276a2b63c7bb63d5706d2cc265c85df3580c78de63f4e30dc75330528efc + checksum: 650102b49e54ad725c99e49382921b05418f922ee7ae99f0404a146516e54387ec0ebb26c6e9255beadc94a1fd3111c2fae12148e196879ef7ec3ea4b1fde6f1 languageName: node linkType: hard -"@jupyterlab/services@npm:~7.1.0": - version: 7.1.0 - resolution: "@jupyterlab/services@npm:7.1.0" +"@jupyterlab/services@npm:~7.1.5": + version: 7.1.5 + resolution: "@jupyterlab/services@npm:7.1.5" dependencies: "@jupyter/ydoc": ^1.1.1 - "@jupyterlab/coreutils": ^6.1.0 - "@jupyterlab/nbformat": ^4.1.0 - "@jupyterlab/settingregistry": ^4.1.0 - "@jupyterlab/statedb": ^4.1.0 + "@jupyterlab/coreutils": ^6.1.5 + "@jupyterlab/nbformat": ^4.1.5 + "@jupyterlab/settingregistry": ^4.1.5 + "@jupyterlab/statedb": ^4.1.5 "@lumino/coreutils": ^2.1.2 "@lumino/disposable": ^2.1.2 "@lumino/polling": ^2.1.2 "@lumino/properties": ^2.0.1 "@lumino/signaling": ^2.1.2 ws: ^8.11.0 - checksum: 4a4797746c708551a7647c43ecc4dce20dc12ea043bb2bd43ec0c20966825a5e14742258d3bcee9ae832c91030132db895dc9a81bf1596d59c08066c4fecfba5 + checksum: f4b20ee62e5c3c7e0fa5942d3deb95329beb5a9ea6295403eefc0d5a723665379a09c58b21bc6a9fed7a69990570e5cfb66bc314e037a452b678fc4ec237dc55 languageName: node linkType: hard -"@jupyterlab/settingeditor-extension@npm:~4.1.0": - version: 4.1.0 - resolution: "@jupyterlab/settingeditor-extension@npm:4.1.0" - dependencies: - "@jupyterlab/application": ^4.1.0 - "@jupyterlab/apputils": ^4.2.0 - "@jupyterlab/codeeditor": ^4.1.0 - "@jupyterlab/pluginmanager": ^4.1.0 - "@jupyterlab/rendermime": ^4.1.0 - "@jupyterlab/settingeditor": ^4.1.0 - "@jupyterlab/settingregistry": ^4.1.0 - "@jupyterlab/statedb": ^4.1.0 - "@jupyterlab/translation": ^4.1.0 - "@jupyterlab/ui-components": ^4.1.0 +"@jupyterlab/settingeditor-extension@npm:~4.1.5": + version: 4.1.5 + resolution: "@jupyterlab/settingeditor-extension@npm:4.1.5" + dependencies: + "@jupyterlab/application": ^4.1.5 + "@jupyterlab/apputils": ^4.2.5 + "@jupyterlab/codeeditor": ^4.1.5 + "@jupyterlab/pluginmanager": ^4.1.5 + "@jupyterlab/rendermime": ^4.1.5 + "@jupyterlab/settingeditor": ^4.1.5 + "@jupyterlab/settingregistry": ^4.1.5 + "@jupyterlab/statedb": ^4.1.5 + "@jupyterlab/translation": ^4.1.5 + "@jupyterlab/ui-components": ^4.1.5 "@lumino/disposable": ^2.1.2 - checksum: 574f4ce594c17fffa06236895e324fcd36247a961eb4f3d077d949c1829b5cf4f6e02362155da0a1d5d2cbcf29797bfdeb7910490aceef4a915a253ff1de1460 + checksum: df1911e98001f3ff5fdde35a2aa101e0c9a21e7d3ee7e69ca8c852d54fb80f5951e0eb01e6a0aa7fe1b1e12da06ea90c445aa970d413ed9973eee5cff17665b0 languageName: node linkType: hard -"@jupyterlab/settingeditor@npm:~4.1.0": - version: 4.1.0 - resolution: "@jupyterlab/settingeditor@npm:4.1.0" - dependencies: - "@jupyterlab/application": ^4.1.0 - "@jupyterlab/apputils": ^4.2.0 - "@jupyterlab/codeeditor": ^4.1.0 - "@jupyterlab/inspector": ^4.1.0 - "@jupyterlab/rendermime": ^4.1.0 - "@jupyterlab/settingregistry": ^4.1.0 - "@jupyterlab/statedb": ^4.1.0 - "@jupyterlab/translation": ^4.1.0 - "@jupyterlab/ui-components": ^4.1.0 +"@jupyterlab/settingeditor@npm:~4.1.5": + version: 4.1.5 + resolution: "@jupyterlab/settingeditor@npm:4.1.5" + dependencies: + "@jupyterlab/application": ^4.1.5 + "@jupyterlab/apputils": ^4.2.5 + "@jupyterlab/codeeditor": ^4.1.5 + "@jupyterlab/inspector": ^4.1.5 + "@jupyterlab/rendermime": ^4.1.5 + "@jupyterlab/settingregistry": ^4.1.5 + "@jupyterlab/statedb": ^4.1.5 + "@jupyterlab/translation": ^4.1.5 + "@jupyterlab/ui-components": ^4.1.5 "@lumino/algorithm": ^2.0.1 "@lumino/commands": ^2.2.0 "@lumino/coreutils": ^2.1.2 @@ -2108,16 +2108,16 @@ __metadata: "@rjsf/validator-ajv8": ^5.13.4 json-schema: ^0.4.0 react: ^18.2.0 - checksum: fbbb5f8a6c7324c5c22494172c24a3b78a7c0e71ea2d8372af5c53ba72eba9a3147c4566dd0c0ffa607884c6cf3c4f6ab76a100e3b76a68935fc110cb67b67d8 + checksum: fff554b0a736a724ca8c5df9a8cce44ff540a58402aef348187d7740f0308e0e9ac724f950c18e27925d895e593190bc3e4e0bdfa472561278755609b37fb4c1 languageName: node linkType: hard -"@jupyterlab/settingregistry@npm:~4.1.0": - version: 4.1.0 - resolution: "@jupyterlab/settingregistry@npm:4.1.0" +"@jupyterlab/settingregistry@npm:~4.1.5": + version: 4.1.5 + resolution: "@jupyterlab/settingregistry@npm:4.1.5" dependencies: - "@jupyterlab/nbformat": ^4.1.0 - "@jupyterlab/statedb": ^4.1.0 + "@jupyterlab/nbformat": ^4.1.5 + "@jupyterlab/statedb": ^4.1.5 "@lumino/commands": ^2.2.0 "@lumino/coreutils": ^2.1.2 "@lumino/disposable": ^2.1.2 @@ -2127,18 +2127,18 @@ __metadata: json5: ^2.2.3 peerDependencies: react: ">=16" - checksum: 1a0c52016806ceda150168cdeae966b15afce454fe24acfd68939f3f380eaf2d4390c40e27c1475877c8e8da6b3f15a952999ebcc9d3838d5306bd24ad5b4b51 + checksum: 576d49cbbb4a18ba5f55230938b67c6dbc6819dfafb75ece2d9d030913e69768ddcb2616de4f7dbd3bcd8aa35e292aee90fe98b91e7dccdaae2610c64ec07f94 languageName: node linkType: hard -"@jupyterlab/shortcuts-extension@npm:~4.1.0": - version: 4.1.0 - resolution: "@jupyterlab/shortcuts-extension@npm:4.1.0" +"@jupyterlab/shortcuts-extension@npm:~4.1.5": + version: 4.1.5 + resolution: "@jupyterlab/shortcuts-extension@npm:4.1.5" dependencies: - "@jupyterlab/application": ^4.1.0 - "@jupyterlab/settingregistry": ^4.1.0 - "@jupyterlab/translation": ^4.1.0 - "@jupyterlab/ui-components": ^4.1.0 + "@jupyterlab/application": ^4.1.5 + "@jupyterlab/settingregistry": ^4.1.5 + "@jupyterlab/translation": ^4.1.5 + "@jupyterlab/ui-components": ^4.1.5 "@lumino/algorithm": ^2.0.1 "@lumino/commands": ^2.2.0 "@lumino/coreutils": ^2.1.2 @@ -2147,41 +2147,41 @@ __metadata: "@lumino/keyboard": ^2.0.1 "@lumino/widgets": ^2.3.1 react: ^18.2.0 - checksum: a03343ee8a8f4f0e334beed10bde4a833891cfced123701de54d63dec661d91ad9c20efb8bf81d2060d1e57c89ab9435e977104e458730e3fb0257a1f4ed69b6 + checksum: 07e26178994bb5c147f945d9ecafd5298b5b92b7ef8eb9f13a049375189aee273d133d938375f129838552940f966e840a8e3129ae00c93455cb6b5d76f6c378 languageName: node linkType: hard -"@jupyterlab/statedb@npm:~4.1.0": - version: 4.1.0 - resolution: "@jupyterlab/statedb@npm:4.1.0" +"@jupyterlab/statedb@npm:~4.1.5": + version: 4.1.5 + resolution: "@jupyterlab/statedb@npm:4.1.5" dependencies: "@lumino/commands": ^2.2.0 "@lumino/coreutils": ^2.1.2 "@lumino/disposable": ^2.1.2 "@lumino/properties": ^2.0.1 "@lumino/signaling": ^2.1.2 - checksum: 693d40ba6ce67b41aae2acbae027a5c637c2bfa51d7085b6faecdb1877a5e3bd43ca70f3670f88f038c49bef80e0e09899b05d330dd9010b1d578ca73b13ea17 + checksum: e7f3ea9a5ebb04a602d93d1ddc9175a5b24a0f3814e99410ec3dba2dd3a86572ea61917d8a65e1b4b8c4ed25c8eaa814646a817a3b5d39b8a74a7b6cbb0071c1 languageName: node linkType: hard -"@jupyterlab/statusbar-extension@npm:~4.1.0": - version: 4.1.0 - resolution: "@jupyterlab/statusbar-extension@npm:4.1.0" +"@jupyterlab/statusbar-extension@npm:~4.1.5": + version: 4.1.5 + resolution: "@jupyterlab/statusbar-extension@npm:4.1.5" dependencies: - "@jupyterlab/application": ^4.1.0 - "@jupyterlab/apputils": ^4.2.0 - "@jupyterlab/settingregistry": ^4.1.0 - "@jupyterlab/statusbar": ^4.1.0 - "@jupyterlab/translation": ^4.1.0 - checksum: 624f0b2b2ff89041b9534aaf8e39d8d6216341861329280da8fbff3b764430e3a191e7c7c0ac77540f18a77ec2198d210374b47b9ea99700d6baa59e8f448ef2 + "@jupyterlab/application": ^4.1.5 + "@jupyterlab/apputils": ^4.2.5 + "@jupyterlab/settingregistry": ^4.1.5 + "@jupyterlab/statusbar": ^4.1.5 + "@jupyterlab/translation": ^4.1.5 + checksum: 2a9046edd3e98797ab1b38ea89da24bcf2c8840226277d9e2bd252db74f7fec85e05f30a5082c4290ebef59b79bfad5b4e1c989b3e721a65ed6d16aeb5a55e31 languageName: node linkType: hard -"@jupyterlab/statusbar@npm:~4.1.0": - version: 4.1.0 - resolution: "@jupyterlab/statusbar@npm:4.1.0" +"@jupyterlab/statusbar@npm:~4.1.5": + version: 4.1.5 + resolution: "@jupyterlab/statusbar@npm:4.1.5" dependencies: - "@jupyterlab/ui-components": ^4.1.0 + "@jupyterlab/ui-components": ^4.1.5 "@lumino/algorithm": ^2.0.1 "@lumino/coreutils": ^2.1.2 "@lumino/disposable": ^2.1.2 @@ -2189,36 +2189,36 @@ __metadata: "@lumino/signaling": ^2.1.2 "@lumino/widgets": ^2.3.1 react: ^18.2.0 - checksum: 309d3cb98c924c23dfef2ad91862dfa56ea133d8ae08aa7bc743c4000f15584841b39712bc8829eb09d7382d5c9e0e7b3e85c3ae1165c01597ade96702bcc055 + checksum: 402f3b80495c155f6c08447ca6ef348dbaae030cc6c20d11a7f4f365445f389dd71fefe9649296d59e8c698aa31347fb563b9a962e51b8712ed3bbe2cfd0ca37 languageName: node linkType: hard -"@jupyterlab/terminal-extension@npm:~4.1.0": - version: 4.1.0 - resolution: "@jupyterlab/terminal-extension@npm:4.1.0" - dependencies: - "@jupyterlab/application": ^4.1.0 - "@jupyterlab/apputils": ^4.2.0 - "@jupyterlab/launcher": ^4.1.0 - "@jupyterlab/mainmenu": ^4.1.0 - "@jupyterlab/running": ^4.1.0 - "@jupyterlab/services": ^7.1.0 - "@jupyterlab/settingregistry": ^4.1.0 - "@jupyterlab/terminal": ^4.1.0 - "@jupyterlab/translation": ^4.1.0 - "@jupyterlab/ui-components": ^4.1.0 +"@jupyterlab/terminal-extension@npm:~4.1.5": + version: 4.1.5 + resolution: "@jupyterlab/terminal-extension@npm:4.1.5" + dependencies: + "@jupyterlab/application": ^4.1.5 + "@jupyterlab/apputils": ^4.2.5 + "@jupyterlab/launcher": ^4.1.5 + "@jupyterlab/mainmenu": ^4.1.5 + "@jupyterlab/running": ^4.1.5 + "@jupyterlab/services": ^7.1.5 + "@jupyterlab/settingregistry": ^4.1.5 + "@jupyterlab/terminal": ^4.1.5 + "@jupyterlab/translation": ^4.1.5 + "@jupyterlab/ui-components": ^4.1.5 "@lumino/widgets": ^2.3.1 - checksum: 6b8571407482d51e76c7ba28fd8f1b0c11b40827599b7321a49583c2c1ad853e64c221a59ada7447067be7298a30467abea6fd9425cb6cb18d8bf439f41f09fd + checksum: dc92ea109d4cd89e84a6dda5259623e8f7c0f315789bb3876d5a63089e889e5b33a9174b81f205533a7261b82b1ea021da9e2f047372889b6693e0e433a7cb8a languageName: node linkType: hard -"@jupyterlab/terminal@npm:~4.1.0": - version: 4.1.0 - resolution: "@jupyterlab/terminal@npm:4.1.0" +"@jupyterlab/terminal@npm:~4.1.5": + version: 4.1.5 + resolution: "@jupyterlab/terminal@npm:4.1.5" dependencies: - "@jupyterlab/apputils": ^4.2.0 - "@jupyterlab/services": ^7.1.0 - "@jupyterlab/translation": ^4.1.0 + "@jupyterlab/apputils": ^4.2.5 + "@jupyterlab/services": ^7.1.5 + "@jupyterlab/translation": ^4.1.5 "@lumino/coreutils": ^2.1.2 "@lumino/domutils": ^2.0.1 "@lumino/messaging": ^2.0.1 @@ -2228,149 +2228,149 @@ __metadata: xterm-addon-fit: ~0.7.0 xterm-addon-web-links: ~0.8.0 xterm-addon-webgl: ~0.14.0 - checksum: db7000d4c3e3bf0937639a74dd1313b5c0ca25cf305e6483cfe5abb38abd78182c285352f4260a970f99728de188cd9f6a7d540a27627ccec998a0d2f6d9d2ae + checksum: d30bb6e6892d884a9df0de726a2f6c91bc5acec7eaa31e7185ebc65656ee587c019d964ca656e74c7f72c49d5a3ff6a469056c54bd0f8d6fabfafa61024a0ed1 languageName: node linkType: hard -"@jupyterlab/theme-dark-extension@npm:~4.1.0": - version: 4.1.0 - resolution: "@jupyterlab/theme-dark-extension@npm:4.1.0" +"@jupyterlab/theme-dark-extension@npm:~4.1.5": + version: 4.1.5 + resolution: "@jupyterlab/theme-dark-extension@npm:4.1.5" dependencies: - "@jupyterlab/application": ^4.1.0 - "@jupyterlab/apputils": ^4.2.0 - "@jupyterlab/translation": ^4.1.0 - checksum: ef46029eb12457a32aa908597029169c1369639d248cbaf301b747b9888a343f221267e45d406da0a9c6c71f61d739ab280a6659fb6d1f4d1c6c3c18f97606cd + "@jupyterlab/application": ^4.1.5 + "@jupyterlab/apputils": ^4.2.5 + "@jupyterlab/translation": ^4.1.5 + checksum: 4e56da100c8679f809cf5f9aa5e85f1c4e4a41d89998bd49c1738e7cb25bdad45e7d807aad63855f25c5b66d5967081f03f3dd450f6e870c109d01aceea923e9 languageName: node linkType: hard -"@jupyterlab/theme-light-extension@npm:~4.1.0": - version: 4.1.0 - resolution: "@jupyterlab/theme-light-extension@npm:4.1.0" +"@jupyterlab/theme-light-extension@npm:~4.1.5": + version: 4.1.5 + resolution: "@jupyterlab/theme-light-extension@npm:4.1.5" dependencies: - "@jupyterlab/application": ^4.1.0 - "@jupyterlab/apputils": ^4.2.0 - "@jupyterlab/translation": ^4.1.0 - checksum: 409cb3f227eb8818556a3a41b68427a93241172d5d37257c7be049ba1f8a24ae17da79fbf17dc33e9d73b4a0cd0c42da050a32705b003df6eb048429c39ddad1 + "@jupyterlab/application": ^4.1.5 + "@jupyterlab/apputils": ^4.2.5 + "@jupyterlab/translation": ^4.1.5 + checksum: a70fc06adbe75ad6d34a74c7fa3b17e99619cd2af23d6955fc7644e08b9df2031f91c6532e5d5842c2c32fad1e0a69fa46933fb6eeb8a7d7e53d110ecbd0b573 languageName: node linkType: hard -"@jupyterlab/toc-extension@npm:~6.1.0": - version: 6.1.0 - resolution: "@jupyterlab/toc-extension@npm:6.1.0" +"@jupyterlab/toc-extension@npm:~6.1.5": + version: 6.1.5 + resolution: "@jupyterlab/toc-extension@npm:6.1.5" dependencies: - "@jupyterlab/application": ^4.1.0 - "@jupyterlab/settingregistry": ^4.1.0 - "@jupyterlab/toc": ^6.1.0 - "@jupyterlab/translation": ^4.1.0 - "@jupyterlab/ui-components": ^4.1.0 - checksum: 0395e56dea0faf3a05555f634d822dc43ce08d3605ed83ecb9255127badb44161d193e3ed068aa63ba45ad3176305956ae88e7e039b52ed5e83c72d9938481ca + "@jupyterlab/application": ^4.1.5 + "@jupyterlab/settingregistry": ^4.1.5 + "@jupyterlab/toc": ^6.1.5 + "@jupyterlab/translation": ^4.1.5 + "@jupyterlab/ui-components": ^4.1.5 + checksum: f4b16a6f0330b82bf7fe64098172402bfe84cd95f0be1bcac1fd808bc7a5d80a288fb7ca1c9e65d1ce60c5b245c0a943fe8230d198538daefa18456c6ee7fcfe languageName: node linkType: hard -"@jupyterlab/toc@npm:~6.1.0": - version: 6.1.0 - resolution: "@jupyterlab/toc@npm:6.1.0" - dependencies: - "@jupyterlab/apputils": ^4.2.0 - "@jupyterlab/coreutils": ^6.1.0 - "@jupyterlab/docregistry": ^4.1.0 - "@jupyterlab/observables": ^5.1.0 - "@jupyterlab/rendermime": ^4.1.0 - "@jupyterlab/rendermime-interfaces": ^3.9.0 - "@jupyterlab/translation": ^4.1.0 - "@jupyterlab/ui-components": ^4.1.0 +"@jupyterlab/toc@npm:~6.1.5": + version: 6.1.5 + resolution: "@jupyterlab/toc@npm:6.1.5" + dependencies: + "@jupyterlab/apputils": ^4.2.5 + "@jupyterlab/coreutils": ^6.1.5 + "@jupyterlab/docregistry": ^4.1.5 + "@jupyterlab/observables": ^5.1.5 + "@jupyterlab/rendermime": ^4.1.5 + "@jupyterlab/rendermime-interfaces": ^3.9.5 + "@jupyterlab/translation": ^4.1.5 + "@jupyterlab/ui-components": ^4.1.5 "@lumino/coreutils": ^2.1.2 "@lumino/disposable": ^2.1.2 "@lumino/messaging": ^2.0.1 "@lumino/signaling": ^2.1.2 "@lumino/widgets": ^2.3.1 react: ^18.2.0 - checksum: 051f960311e0f9dfba2668411c32480376d04cd05a023e69d25818ca6b7ca9fdc16f5c3ffc966a519cb2653a26e03cb14f2c267a2e40cffd4d06c31c7db138d8 + checksum: 8be983a63ecd0ee33da196e3b9f254704230b4bd3ee5a59064e1bc32599a4c798274d68b0155360b95f5cb2893a2558156039c49cef542ea9aef2354ee82aeab languageName: node linkType: hard -"@jupyterlab/tooltip-extension@npm:~4.1.0": - version: 4.1.0 - resolution: "@jupyterlab/tooltip-extension@npm:4.1.0" - dependencies: - "@jupyterlab/application": ^4.1.0 - "@jupyterlab/codeeditor": ^4.1.0 - "@jupyterlab/console": ^4.1.0 - "@jupyterlab/coreutils": ^6.1.0 - "@jupyterlab/fileeditor": ^4.1.0 - "@jupyterlab/notebook": ^4.1.0 - "@jupyterlab/rendermime": ^4.1.0 - "@jupyterlab/services": ^7.1.0 - "@jupyterlab/tooltip": ^4.1.0 - "@jupyterlab/translation": ^4.1.0 +"@jupyterlab/tooltip-extension@npm:~4.1.5": + version: 4.1.5 + resolution: "@jupyterlab/tooltip-extension@npm:4.1.5" + dependencies: + "@jupyterlab/application": ^4.1.5 + "@jupyterlab/codeeditor": ^4.1.5 + "@jupyterlab/console": ^4.1.5 + "@jupyterlab/coreutils": ^6.1.5 + "@jupyterlab/fileeditor": ^4.1.5 + "@jupyterlab/notebook": ^4.1.5 + "@jupyterlab/rendermime": ^4.1.5 + "@jupyterlab/services": ^7.1.5 + "@jupyterlab/tooltip": ^4.1.5 + "@jupyterlab/translation": ^4.1.5 "@lumino/algorithm": ^2.0.1 "@lumino/coreutils": ^2.1.2 "@lumino/widgets": ^2.3.1 - checksum: d468d0b5643cbc628798ac68f807fcf3d73806928164bdca068081e42e5f8d1a6f78055b40548db3c81731e2fdd3468be1b479a705dbeb3e46f69bc7badfa11c + checksum: da9a1a085600f27e631db6becfc079bd58b9576596e0268486645d442e14e2fa3b7aa9fe622e4da904f66a743b6d28f52735f046888aa0cfd81ebe07a58b0e39 languageName: node linkType: hard -"@jupyterlab/tooltip@npm:~4.1.0": - version: 4.1.0 - resolution: "@jupyterlab/tooltip@npm:4.1.0" +"@jupyterlab/tooltip@npm:~4.1.5": + version: 4.1.5 + resolution: "@jupyterlab/tooltip@npm:4.1.5" dependencies: - "@jupyterlab/codeeditor": ^4.1.0 - "@jupyterlab/rendermime": ^4.1.0 - "@jupyterlab/services": ^7.1.0 - "@jupyterlab/ui-components": ^4.1.0 + "@jupyterlab/codeeditor": ^4.1.5 + "@jupyterlab/rendermime": ^4.1.5 + "@jupyterlab/services": ^7.1.5 + "@jupyterlab/ui-components": ^4.1.5 "@lumino/coreutils": ^2.1.2 "@lumino/messaging": ^2.0.1 "@lumino/widgets": ^2.3.1 - checksum: 975cde8c014494b0acb1c5f5c161eb9f5ecad4a287b5da53b5eb4474e514e64ada156b607f7cb7eea73e038c24f05f0ccc0f22a8c2865d6216ce56981eb17d97 + checksum: 03eae761133fc79aca9e28261e5ab98f12b248536d1ee7f03b8d4e002c6645af8decd038b92787af5a9e6008a2e9ce4dd0be0c76ceca9c5594fcc0931086038d languageName: node linkType: hard -"@jupyterlab/translation-extension@npm:~4.1.0": - version: 4.1.0 - resolution: "@jupyterlab/translation-extension@npm:4.1.0" +"@jupyterlab/translation-extension@npm:~4.1.5": + version: 4.1.5 + resolution: "@jupyterlab/translation-extension@npm:4.1.5" dependencies: - "@jupyterlab/application": ^4.1.0 - "@jupyterlab/apputils": ^4.2.0 - "@jupyterlab/mainmenu": ^4.1.0 - "@jupyterlab/settingregistry": ^4.1.0 - "@jupyterlab/translation": ^4.1.0 - checksum: 21315d0e44b570b02da6596ba7453e7ec10373b9a7b957c120180557eaa516d272457be6f841e411326fa2d1c2f123a159436bdf8bae81b5f208843cf2cd75fb + "@jupyterlab/application": ^4.1.5 + "@jupyterlab/apputils": ^4.2.5 + "@jupyterlab/mainmenu": ^4.1.5 + "@jupyterlab/settingregistry": ^4.1.5 + "@jupyterlab/translation": ^4.1.5 + checksum: 6cf2b911e5bd43fbc7b80b624b579edb19778283f13a0c63172e54cb226c48063e0f3143675cc59089086ef7819693e9d2634f49399e7740212eedd764dd7cbf languageName: node linkType: hard -"@jupyterlab/translation@npm:~4.1.0": - version: 4.1.0 - resolution: "@jupyterlab/translation@npm:4.1.0" +"@jupyterlab/translation@npm:~4.1.5": + version: 4.1.5 + resolution: "@jupyterlab/translation@npm:4.1.5" dependencies: - "@jupyterlab/coreutils": ^6.1.0 - "@jupyterlab/rendermime-interfaces": ^3.9.0 - "@jupyterlab/services": ^7.1.0 - "@jupyterlab/statedb": ^4.1.0 + "@jupyterlab/coreutils": ^6.1.5 + "@jupyterlab/rendermime-interfaces": ^3.9.5 + "@jupyterlab/services": ^7.1.5 + "@jupyterlab/statedb": ^4.1.5 "@lumino/coreutils": ^2.1.2 - checksum: 88b7422697c1795dfcb85870cb8642cd10be6ae27a61dd1ca9f1304f06460f859202bfb6733cb744e2b4c448e8bfbf7a4793c6626cb4a18a59c80999cf1c5050 + checksum: f12e2f13048cd1628a9a03003401009972a3439a038314e2c7cdf19ab4c29fa02a0091475bdd1ddb7cb26e2175c401a86ab8664f54b99bb47962cbd595e6f643 languageName: node linkType: hard -"@jupyterlab/ui-components-extension@npm:~4.1.0": - version: 4.1.0 - resolution: "@jupyterlab/ui-components-extension@npm:4.1.0" +"@jupyterlab/ui-components-extension@npm:~4.1.5": + version: 4.1.5 + resolution: "@jupyterlab/ui-components-extension@npm:4.1.5" dependencies: - "@jupyterlab/application": ^4.1.0 - "@jupyterlab/ui-components": ^4.1.0 - checksum: f9419388d0dc4db0563b111bda63570cc46503a4364625656dc3fa9bfd8a78237eecf35974b5cebe232965283c6eb440a95b4e0db046bfbe1451ec6a0e243f74 + "@jupyterlab/application": ^4.1.5 + "@jupyterlab/ui-components": ^4.1.5 + checksum: 9250e0751857cf02cce82ee7433b94fe31fac600c40cda5ec1876445289d83620de3ac28732ad1d36971e8f2a2a7e531ed2ca1a0033ec72d59e1ba65bc775fe6 languageName: node linkType: hard -"@jupyterlab/ui-components@npm:~4.1.0": - version: 4.1.0 - resolution: "@jupyterlab/ui-components@npm:4.1.0" +"@jupyterlab/ui-components@npm:~4.1.5": + version: 4.1.5 + resolution: "@jupyterlab/ui-components@npm:4.1.5" dependencies: "@jupyter/react-components": ^0.15.2 "@jupyter/web-components": ^0.15.2 - "@jupyterlab/coreutils": ^6.1.0 - "@jupyterlab/observables": ^5.1.0 - "@jupyterlab/rendermime-interfaces": ^3.9.0 - "@jupyterlab/translation": ^4.1.0 + "@jupyterlab/coreutils": ^6.1.5 + "@jupyterlab/observables": ^5.1.5 + "@jupyterlab/rendermime-interfaces": ^3.9.5 + "@jupyterlab/translation": ^4.1.5 "@lumino/algorithm": ^2.0.1 "@lumino/commands": ^2.2.0 "@lumino/coreutils": ^2.1.2 @@ -2388,21 +2388,21 @@ __metadata: typestyle: ^2.0.4 peerDependencies: react: ^18.2.0 - checksum: 53f8eb432d7ff8890ec748c3b43fbcb67fe6cd218b771c4c334e1ddd80a13b570071f171eca4c15feebc4715427e422f833d7b8e2084bcd2605979a444e1536d + checksum: a50315549c03718b5e953bdb695757b1d39db293131dd5c2c26587612e0ed30ad208d1d65c86ddc153a241df2e01d3a9a162f0e4b5f86d2a20816260c9aefe67 languageName: node linkType: hard -"@jupyterlab/vega5-extension@npm:~4.1.0": - version: 4.1.0 - resolution: "@jupyterlab/vega5-extension@npm:4.1.0" +"@jupyterlab/vega5-extension@npm:~4.1.5": + version: 4.1.5 + resolution: "@jupyterlab/vega5-extension@npm:4.1.5" dependencies: - "@jupyterlab/rendermime-interfaces": ^3.9.0 + "@jupyterlab/rendermime-interfaces": ^3.9.5 "@lumino/coreutils": ^2.1.2 "@lumino/widgets": ^2.3.1 vega: ^5.20.0 vega-embed: ^6.2.1 vega-lite: ^5.6.1-next.1 - checksum: 3f1400c8e982a53bccbbc52ceb5616869e4167ee813ae81c44fff88c4a61ed3508ac42b22ede5bf973b8833fd1da0f68e9b22a31fcbac34511c34ce1f337653e + checksum: 49a128b356c77c39f56bf2e7d8bc42bb102774638fdca94a7f9b282255b1cc405209d069b25c716412ed8a86c7420317f64357c2775139d279b13668b7d34d4f languageName: node linkType: hard @@ -6774,9 +6774,9 @@ __metadata: linkType: hard "ip@npm:^2.0.0": - version: 2.0.0 - resolution: "ip@npm:2.0.0" - checksum: cfcfac6b873b701996d71ec82a7dd27ba92450afdb421e356f44044ed688df04567344c36cbacea7d01b1c39a4c732dc012570ebe9bebfb06f27314bca625349 + version: 2.0.1 + resolution: "ip@npm:2.0.1" + checksum: d765c9fd212b8a99023a4cde6a558a054c298d640fec1020567494d257afd78ca77e37126b1a3ef0e053646ced79a816bf50621d38d5e768cdde0431fa3b0d35 languageName: node linkType: hard diff --git a/jupyterlab/tests/mock_packages/extension/package.json b/jupyterlab/tests/mock_packages/extension/package.json index 7a9050171d8a..d6d406f26a89 100644 --- a/jupyterlab/tests/mock_packages/extension/package.json +++ b/jupyterlab/tests/mock_packages/extension/package.json @@ -1,12 +1,12 @@ { "name": "@jupyterlab/mock-extension", - "version": "4.1.0", + "version": "4.1.5", "private": true, "dependencies": { - "@jupyterlab/launcher": "^4.1.0" + "@jupyterlab/launcher": "^4.1.5" }, "devDependencies": { - "@jupyterlab/builder": "^4.1.0" + "@jupyterlab/builder": "^4.1.5" }, "jupyterlab": { "extension": true, diff --git a/jupyterlab/tests/mock_packages/interop/consumer/package.json b/jupyterlab/tests/mock_packages/interop/consumer/package.json index 28622f305485..e0e4ab2bde3a 100644 --- a/jupyterlab/tests/mock_packages/interop/consumer/package.json +++ b/jupyterlab/tests/mock_packages/interop/consumer/package.json @@ -1,12 +1,12 @@ { "name": "@jupyterlab/mock-consumer", - "version": "4.1.0", + "version": "4.1.5", "private": true, "dependencies": { - "@jupyterlab/mock-token": "^4.1.0" + "@jupyterlab/mock-token": "^4.1.5" }, "devDependencies": { - "@jupyterlab/builder": "^4.1.0" + "@jupyterlab/builder": "^4.1.5" }, "jupyterlab": { "extension": true, diff --git a/jupyterlab/tests/mock_packages/interop/provider/package.json b/jupyterlab/tests/mock_packages/interop/provider/package.json index 8ac6c88a64d1..147130955478 100644 --- a/jupyterlab/tests/mock_packages/interop/provider/package.json +++ b/jupyterlab/tests/mock_packages/interop/provider/package.json @@ -1,12 +1,12 @@ { "name": "@jupyterlab/mock-provider", - "version": "4.1.0", + "version": "4.1.5", "private": true, "dependencies": { - "@jupyterlab/mock-token": "^4.1.0" + "@jupyterlab/mock-token": "^4.1.5" }, "devDependencies": { - "@jupyterlab/builder": "^4.1.0" + "@jupyterlab/builder": "^4.1.5" }, "jupyterlab": { "extension": true diff --git a/jupyterlab/tests/mock_packages/interop/token/package.json b/jupyterlab/tests/mock_packages/interop/token/package.json index b41a67bb0f2f..27ca6be95e7e 100644 --- a/jupyterlab/tests/mock_packages/interop/token/package.json +++ b/jupyterlab/tests/mock_packages/interop/token/package.json @@ -1,6 +1,6 @@ { "name": "@jupyterlab/mock-token", - "version": "4.1.0", + "version": "4.1.5", "private": true, "dependencies": { "@lumino/coreutils": "^2.1.2" diff --git a/packages/application-extension/package.json b/packages/application-extension/package.json index eee01a1463e8..ca18876f5a67 100644 --- a/packages/application-extension/package.json +++ b/packages/application-extension/package.json @@ -1,6 +1,6 @@ { "name": "@jupyterlab/application-extension", - "version": "4.1.0", + "version": "4.1.5", "description": "JupyterLab - Application Extension", "homepage": "https://github.com/jupyterlab/jupyterlab", "bugs": { @@ -38,15 +38,15 @@ "watch": "tsc -b --watch" }, "dependencies": { - "@jupyterlab/application": "^4.1.0", - "@jupyterlab/apputils": "^4.2.0", - "@jupyterlab/coreutils": "^6.1.0", - "@jupyterlab/property-inspector": "^4.1.0", - "@jupyterlab/settingregistry": "^4.1.0", - "@jupyterlab/statedb": "^4.1.0", - "@jupyterlab/statusbar": "^4.1.0", - "@jupyterlab/translation": "^4.1.0", - "@jupyterlab/ui-components": "^4.1.0", + "@jupyterlab/application": "^4.1.5", + "@jupyterlab/apputils": "^4.2.5", + "@jupyterlab/coreutils": "^6.1.5", + "@jupyterlab/property-inspector": "^4.1.5", + "@jupyterlab/settingregistry": "^4.1.5", + "@jupyterlab/statedb": "^4.1.5", + "@jupyterlab/statusbar": "^4.1.5", + "@jupyterlab/translation": "^4.1.5", + "@jupyterlab/ui-components": "^4.1.5", "@lumino/algorithm": "^2.0.1", "@lumino/commands": "^2.2.0", "@lumino/coreutils": "^2.1.2", diff --git a/packages/application-extension/schema/commands.json b/packages/application-extension/schema/commands.json index 8b0368712e6a..1d95ef6daec1 100644 --- a/packages/application-extension/schema/commands.json +++ b/packages/application-extension/schema/commands.json @@ -48,8 +48,9 @@ "selector": "body" }, { - "command": "application:toggle-side-tabbar", + "command": "application:toggle-sidebar-widget", "keys": ["Alt 1"], + "macKeys": [""], "selector": "body", "args": { "side": "left", @@ -57,8 +58,9 @@ } }, { - "command": "application:toggle-side-tabbar", + "command": "application:toggle-sidebar-widget", "keys": ["Alt 2"], + "macKeys": [""], "selector": "body", "args": { "side": "left", @@ -66,8 +68,9 @@ } }, { - "command": "application:toggle-side-tabbar", + "command": "application:toggle-sidebar-widget", "keys": ["Alt 3"], + "macKeys": [""], "selector": "body", "args": { "side": "left", @@ -75,8 +78,9 @@ } }, { - "command": "application:toggle-side-tabbar", + "command": "application:toggle-sidebar-widget", "keys": ["Alt 4"], + "macKeys": [""], "selector": "body", "args": { "side": "left", @@ -84,8 +88,9 @@ } }, { - "command": "application:toggle-side-tabbar", + "command": "application:toggle-sidebar-widget", "keys": ["Alt 5"], + "macKeys": [""], "selector": "body", "args": { "side": "left", @@ -93,8 +98,9 @@ } }, { - "command": "application:toggle-side-tabbar", + "command": "application:toggle-sidebar-widget", "keys": ["Alt 6"], + "macKeys": [""], "selector": "body", "args": { "side": "left", @@ -102,8 +108,9 @@ } }, { - "command": "application:toggle-side-tabbar", + "command": "application:toggle-sidebar-widget", "keys": ["Alt 7"], + "macKeys": [""], "selector": "body", "args": { "side": "left", @@ -111,8 +118,9 @@ } }, { - "command": "application:toggle-side-tabbar", + "command": "application:toggle-sidebar-widget", "keys": ["Alt 8"], + "macKeys": [""], "selector": "body", "args": { "side": "left", @@ -120,8 +128,9 @@ } }, { - "command": "application:toggle-side-tabbar", + "command": "application:toggle-sidebar-widget", "keys": ["Alt 9"], + "macKeys": [""], "selector": "body", "args": { "side": "left", @@ -129,8 +138,9 @@ } }, { - "command": "application:toggle-side-tabbar", + "command": "application:toggle-sidebar-widget", "keys": ["Alt 0"], + "macKeys": [""], "selector": "body", "args": { "side": "left", @@ -138,8 +148,9 @@ } }, { - "command": "application:toggle-side-tabbar", + "command": "application:toggle-sidebar-widget", "keys": ["Alt Shift 1"], + "macKeys": [""], "selector": "body", "args": { "side": "right", @@ -147,8 +158,9 @@ } }, { - "command": "application:toggle-side-tabbar", + "command": "application:toggle-sidebar-widget", "keys": ["Alt Shift 2"], + "macKeys": [""], "selector": "body", "args": { "side": "right", @@ -156,8 +168,9 @@ } }, { - "command": "application:toggle-side-tabbar", + "command": "application:toggle-sidebar-widget", "keys": ["Alt Shift 3"], + "macKeys": [""], "selector": "body", "args": { "side": "right", @@ -165,8 +178,9 @@ } }, { - "command": "application:toggle-side-tabbar", + "command": "application:toggle-sidebar-widget", "keys": ["Alt Shift 4"], + "macKeys": [""], "selector": "body", "args": { "side": "right", @@ -174,8 +188,9 @@ } }, { - "command": "application:toggle-side-tabbar", + "command": "application:toggle-sidebar-widget", "keys": ["Alt Shift 5"], + "macKeys": [""], "selector": "body", "args": { "side": "right", @@ -183,8 +198,9 @@ } }, { - "command": "application:toggle-side-tabbar", + "command": "application:toggle-sidebar-widget", "keys": ["Alt Shift 6"], + "macKeys": [""], "selector": "body", "args": { "side": "right", @@ -192,8 +208,9 @@ } }, { - "command": "application:toggle-side-tabbar", + "command": "application:toggle-sidebar-widget", "keys": ["Alt Shift 7"], + "macKeys": [""], "selector": "body", "args": { "side": "right", @@ -201,8 +218,9 @@ } }, { - "command": "application:toggle-side-tabbar", + "command": "application:toggle-sidebar-widget", "keys": ["Alt Shift 8"], + "macKeys": [""], "selector": "body", "args": { "side": "right", @@ -210,8 +228,9 @@ } }, { - "command": "application:toggle-side-tabbar", + "command": "application:toggle-sidebar-widget", "keys": ["Alt Shift 9"], + "macKeys": [""], "selector": "body", "args": { "side": "right", @@ -219,8 +238,9 @@ } }, { - "command": "application:toggle-side-tabbar", + "command": "application:toggle-sidebar-widget", "keys": ["Alt Shift 0"], + "macKeys": [""], "selector": "body", "args": { "side": "right", diff --git a/packages/application/package.json b/packages/application/package.json index 7a067291204b..67bff2cf3d8d 100644 --- a/packages/application/package.json +++ b/packages/application/package.json @@ -1,6 +1,6 @@ { "name": "@jupyterlab/application", - "version": "4.1.0", + "version": "4.1.5", "description": "JupyterLab - Application", "homepage": "https://github.com/jupyterlab/jupyterlab", "bugs": { @@ -43,15 +43,15 @@ }, "dependencies": { "@fortawesome/fontawesome-free": "^5.12.0", - "@jupyterlab/apputils": "^4.2.0", - "@jupyterlab/coreutils": "^6.1.0", - "@jupyterlab/docregistry": "^4.1.0", - "@jupyterlab/rendermime": "^4.1.0", - "@jupyterlab/rendermime-interfaces": "^3.9.0", - "@jupyterlab/services": "^7.1.0", - "@jupyterlab/statedb": "^4.1.0", - "@jupyterlab/translation": "^4.1.0", - "@jupyterlab/ui-components": "^4.1.0", + "@jupyterlab/apputils": "^4.2.5", + "@jupyterlab/coreutils": "^6.1.5", + "@jupyterlab/docregistry": "^4.1.5", + "@jupyterlab/rendermime": "^4.1.5", + "@jupyterlab/rendermime-interfaces": "^3.9.5", + "@jupyterlab/services": "^7.1.5", + "@jupyterlab/statedb": "^4.1.5", + "@jupyterlab/translation": "^4.1.5", + "@jupyterlab/ui-components": "^4.1.5", "@lumino/algorithm": "^2.0.1", "@lumino/application": "^2.3.0", "@lumino/commands": "^2.2.0", @@ -64,7 +64,7 @@ "@lumino/widgets": "^2.3.1" }, "devDependencies": { - "@jupyterlab/testing": "^4.1.0", + "@jupyterlab/testing": "^4.1.5", "@types/jest": "^29.2.0", "jest": "^29.2.0", "rimraf": "~5.0.5", diff --git a/packages/apputils-extension/package.json b/packages/apputils-extension/package.json index 6a6e0b7cb677..d9a379f197a9 100644 --- a/packages/apputils-extension/package.json +++ b/packages/apputils-extension/package.json @@ -1,6 +1,6 @@ { "name": "@jupyterlab/apputils-extension", - "version": "4.1.0", + "version": "4.1.5", "description": "JupyterLab - Application Utilities Extension", "homepage": "https://github.com/jupyterlab/jupyterlab", "bugs": { @@ -38,19 +38,19 @@ "watch": "tsc -b --watch" }, "dependencies": { - "@jupyterlab/application": "^4.1.0", - "@jupyterlab/apputils": "^4.2.0", - "@jupyterlab/coreutils": "^6.1.0", - "@jupyterlab/docregistry": "^4.1.0", - "@jupyterlab/filebrowser": "^4.1.0", - "@jupyterlab/mainmenu": "^4.1.0", - "@jupyterlab/rendermime-interfaces": "^3.9.0", - "@jupyterlab/services": "^7.1.0", - "@jupyterlab/settingregistry": "^4.1.0", - "@jupyterlab/statedb": "^4.1.0", - "@jupyterlab/statusbar": "^4.1.0", - "@jupyterlab/translation": "^4.1.0", - "@jupyterlab/ui-components": "^4.1.0", + "@jupyterlab/application": "^4.1.5", + "@jupyterlab/apputils": "^4.2.5", + "@jupyterlab/coreutils": "^6.1.5", + "@jupyterlab/docregistry": "^4.1.5", + "@jupyterlab/filebrowser": "^4.1.5", + "@jupyterlab/mainmenu": "^4.1.5", + "@jupyterlab/rendermime-interfaces": "^3.9.5", + "@jupyterlab/services": "^7.1.5", + "@jupyterlab/settingregistry": "^4.1.5", + "@jupyterlab/statedb": "^4.1.5", + "@jupyterlab/statusbar": "^4.1.5", + "@jupyterlab/translation": "^4.1.5", + "@jupyterlab/ui-components": "^4.1.5", "@lumino/algorithm": "^2.0.1", "@lumino/commands": "^2.2.0", "@lumino/coreutils": "^2.1.2", diff --git a/packages/apputils-extension/src/announcements.ts b/packages/apputils-extension/src/announcements.ts index 8aa5c18488da..61acaed571d3 100644 --- a/packages/apputils-extension/src/announcements.ts +++ b/packages/apputils-extension/src/announcements.ts @@ -17,7 +17,7 @@ const COMMAND_HELP_OPEN = 'help:open'; const NEWS_API_URL = '/lab/api/news'; const UPDATE_API_URL = '/lab/api/update'; const PRIVACY_URL = - 'https://jupyterlab.readthedocs.io/en/latest/privacy_policies.html'; + 'https://jupyterlab.readthedocs.io/en/stable/privacy_policies.html'; /** * Call the announcement API diff --git a/packages/apputils-extension/src/workspacesplugin.ts b/packages/apputils-extension/src/workspacesplugin.ts index b6fac19e448a..06f42402515f 100644 --- a/packages/apputils-extension/src/workspacesplugin.ts +++ b/packages/apputils-extension/src/workspacesplugin.ts @@ -212,7 +212,7 @@ namespace Private { // Navigate to new workspace. const workspacesBase = URLExt.join(this._application, 'workspaces'); const url = URLExt.join(workspacesBase, id); - if (!workspacesBase.startsWith(url)) { + if (!url.startsWith(workspacesBase)) { throw new Error('Can only be used for workspaces'); } if (this._router) { diff --git a/packages/apputils/package.json b/packages/apputils/package.json index a66d34901a02..01dcd585b72a 100644 --- a/packages/apputils/package.json +++ b/packages/apputils/package.json @@ -1,6 +1,6 @@ { "name": "@jupyterlab/apputils", - "version": "4.2.0", + "version": "4.2.5", "description": "JupyterLab - Application Utilities", "keywords": [ "jupyter", @@ -45,15 +45,15 @@ "watch": "tsc -b --watch" }, "dependencies": { - "@jupyterlab/coreutils": "^6.1.0", - "@jupyterlab/observables": "^5.1.0", - "@jupyterlab/rendermime-interfaces": "^3.9.0", - "@jupyterlab/services": "^7.1.0", - "@jupyterlab/settingregistry": "^4.1.0", - "@jupyterlab/statedb": "^4.1.0", - "@jupyterlab/statusbar": "^4.1.0", - "@jupyterlab/translation": "^4.1.0", - "@jupyterlab/ui-components": "^4.1.0", + "@jupyterlab/coreutils": "^6.1.5", + "@jupyterlab/observables": "^5.1.5", + "@jupyterlab/rendermime-interfaces": "^3.9.5", + "@jupyterlab/services": "^7.1.5", + "@jupyterlab/settingregistry": "^4.1.5", + "@jupyterlab/statedb": "^4.1.5", + "@jupyterlab/statusbar": "^4.1.5", + "@jupyterlab/translation": "^4.1.5", + "@jupyterlab/ui-components": "^4.1.5", "@lumino/algorithm": "^2.0.1", "@lumino/commands": "^2.2.0", "@lumino/coreutils": "^2.1.2", @@ -68,7 +68,7 @@ "sanitize-html": "~2.7.3" }, "devDependencies": { - "@jupyterlab/testing": "^4.1.0", + "@jupyterlab/testing": "^4.1.5", "@types/jest": "^29.2.0", "@types/sanitize-html": "^2.3.1", "jest": "^29.2.0", diff --git a/packages/apputils/src/domutils.ts b/packages/apputils/src/domutils.ts index 39d03b810559..3501789c7b61 100644 --- a/packages/apputils/src/domutils.ts +++ b/packages/apputils/src/domutils.ts @@ -50,4 +50,22 @@ export namespace DOMUtils { export function createDomID(): string { return `id-${UUID.uuid4()}`; } + + /** + * Check whether the active element descendant from given parent is editable. + * When checking active elements it includes elements in the open shadow DOM. + */ + export function hasActiveEditableElement( + parent: Node | DocumentFragment, + root: ShadowRoot | Document = document + ): boolean { + const element = root.activeElement; + return !!( + element && + parent.contains(element) && + (element.matches(':read-write') || + (element.shadowRoot && + hasActiveEditableElement(element.shadowRoot, element.shadowRoot))) + ); + } } diff --git a/packages/apputils/test/domutils.spec.ts b/packages/apputils/test/domutils.spec.ts new file mode 100644 index 000000000000..6e5b4d65d421 --- /dev/null +++ b/packages/apputils/test/domutils.spec.ts @@ -0,0 +1,68 @@ +// Copyright (c) Jupyter Development Team. +// Distributed under the terms of the Modified BSD License. + +import { DOMUtils } from '@jupyterlab/apputils'; + +describe('@jupyterlab/apputils', () => { + describe('DOMUtils', () => { + describe('hasActiveEditableElement', () => { + const testCases = [ + // editable elements + ['.input', true], + ['.textarea', true], + ['.div-editable', true], + // non-editable elements + ['.input-readonly', false], + ['.textarea-readonly', false], + ['.div', false] + ]; + + const div = document.createElement('div'); + div.innerHTML = ` +
+ + + + +
+
+
+
+
+ `; + document.body.appendChild(div); + + const lightHost = div.querySelector('.light-host')!; + const shadowHost = div.querySelector('.shadow-host')!; + const shadowRoot = shadowHost.attachShadow({ mode: 'open' }); + // mirror test cases from light DOM in the shadow DOM + shadowRoot.innerHTML = lightHost.innerHTML; + + it.each(testCases)( + 'should work in light DOM: `%s` element should result in `%s`', + (selector, expected) => { + const element = lightHost.querySelector( + selector as string + ) as HTMLElement; + element.focus(); + + const result = DOMUtils.hasActiveEditableElement(div); + expect(result).toBe(expected); + } + ); + + it.each(testCases)( + 'should work in shadow DOM: `%s` element should result in `%s`', + (selector, expected) => { + const element = shadowRoot.querySelector( + selector as string + ) as HTMLElement; + element.focus(); + + const result = DOMUtils.hasActiveEditableElement(div); + expect(result).toBe(expected); + } + ); + }); + }); +}); diff --git a/packages/attachments/package.json b/packages/attachments/package.json index bb5496423b00..5e804ccab87b 100644 --- a/packages/attachments/package.json +++ b/packages/attachments/package.json @@ -1,6 +1,6 @@ { "name": "@jupyterlab/attachments", - "version": "4.1.0", + "version": "4.1.5", "description": "JupyterLab - Notebook Cell Attachments", "homepage": "https://github.com/jupyterlab/jupyterlab", "bugs": { @@ -37,10 +37,10 @@ "watch": "tsc -b --watch" }, "dependencies": { - "@jupyterlab/nbformat": "^4.1.0", - "@jupyterlab/observables": "^5.1.0", - "@jupyterlab/rendermime": "^4.1.0", - "@jupyterlab/rendermime-interfaces": "^3.9.0", + "@jupyterlab/nbformat": "^4.1.5", + "@jupyterlab/observables": "^5.1.5", + "@jupyterlab/rendermime": "^4.1.5", + "@jupyterlab/rendermime-interfaces": "^3.9.5", "@lumino/disposable": "^2.1.2", "@lumino/signaling": "^2.1.2" }, diff --git a/packages/cell-toolbar-extension/package.json b/packages/cell-toolbar-extension/package.json index 7e3c8a0b4a26..d27343bf0ce5 100644 --- a/packages/cell-toolbar-extension/package.json +++ b/packages/cell-toolbar-extension/package.json @@ -1,6 +1,6 @@ { "name": "@jupyterlab/cell-toolbar-extension", - "version": "4.1.0", + "version": "4.1.5", "description": "Extension for cell toolbar adapted from jlab-enhanced-cell-toolbar", "homepage": "https://github.com/jupyterlab/jupyterlab", "bugs": { @@ -34,11 +34,11 @@ "watch": "tsc -b --watch" }, "dependencies": { - "@jupyterlab/application": "^4.1.0", - "@jupyterlab/apputils": "^4.2.0", - "@jupyterlab/cell-toolbar": "^4.1.0", - "@jupyterlab/settingregistry": "^4.1.0", - "@jupyterlab/translation": "^4.1.0" + "@jupyterlab/application": "^4.1.5", + "@jupyterlab/apputils": "^4.2.5", + "@jupyterlab/cell-toolbar": "^4.1.5", + "@jupyterlab/settingregistry": "^4.1.5", + "@jupyterlab/translation": "^4.1.5" }, "devDependencies": { "rimraf": "~5.0.5", diff --git a/packages/cell-toolbar/package.json b/packages/cell-toolbar/package.json index 4ae916264844..82132fca28c9 100644 --- a/packages/cell-toolbar/package.json +++ b/packages/cell-toolbar/package.json @@ -1,6 +1,6 @@ { "name": "@jupyterlab/cell-toolbar", - "version": "4.1.0", + "version": "4.1.5", "description": "Contextual cell toolbar adapted from jlab-enhanced-cell-toolbar", "homepage": "https://github.com/jupyterlab/jupyterlab", "bugs": { @@ -41,12 +41,12 @@ }, "dependencies": { "@jupyter/ydoc": "^1.1.1", - "@jupyterlab/apputils": "^4.2.0", - "@jupyterlab/cells": "^4.1.0", - "@jupyterlab/docregistry": "^4.1.0", - "@jupyterlab/notebook": "^4.1.0", - "@jupyterlab/observables": "^5.1.0", - "@jupyterlab/ui-components": "^4.1.0", + "@jupyterlab/apputils": "^4.2.5", + "@jupyterlab/cells": "^4.1.5", + "@jupyterlab/docregistry": "^4.1.5", + "@jupyterlab/notebook": "^4.1.5", + "@jupyterlab/observables": "^5.1.5", + "@jupyterlab/ui-components": "^4.1.5", "@lumino/algorithm": "^2.0.1", "@lumino/commands": "^2.2.0", "@lumino/disposable": "^2.1.2", @@ -54,7 +54,7 @@ "@lumino/widgets": "^2.3.1" }, "devDependencies": { - "@jupyterlab/testing": "^4.1.0", + "@jupyterlab/testing": "^4.1.5", "@types/jest": "^29.2.0", "jest": "^29.2.0", "rimraf": "~5.0.5", diff --git a/packages/cells/package.json b/packages/cells/package.json index c705e3a1f307..db73b5c52967 100644 --- a/packages/cells/package.json +++ b/packages/cells/package.json @@ -1,6 +1,6 @@ { "name": "@jupyterlab/cells", - "version": "4.1.0", + "version": "4.1.5", "description": "JupyterLab - Notebook Cells", "homepage": "https://github.com/jupyterlab/jupyterlab", "bugs": { @@ -46,21 +46,21 @@ "@codemirror/state": "^6.2.0", "@codemirror/view": "^6.9.6", "@jupyter/ydoc": "^1.1.1", - "@jupyterlab/apputils": "^4.2.0", - "@jupyterlab/attachments": "^4.1.0", - "@jupyterlab/codeeditor": "^4.1.0", - "@jupyterlab/codemirror": "^4.1.0", - "@jupyterlab/coreutils": "^6.1.0", - "@jupyterlab/documentsearch": "^4.1.0", - "@jupyterlab/filebrowser": "^4.1.0", - "@jupyterlab/nbformat": "^4.1.0", - "@jupyterlab/observables": "^5.1.0", - "@jupyterlab/outputarea": "^4.1.0", - "@jupyterlab/rendermime": "^4.1.0", - "@jupyterlab/services": "^7.1.0", - "@jupyterlab/toc": "^6.1.0", - "@jupyterlab/translation": "^4.1.0", - "@jupyterlab/ui-components": "^4.1.0", + "@jupyterlab/apputils": "^4.2.5", + "@jupyterlab/attachments": "^4.1.5", + "@jupyterlab/codeeditor": "^4.1.5", + "@jupyterlab/codemirror": "^4.1.5", + "@jupyterlab/coreutils": "^6.1.5", + "@jupyterlab/documentsearch": "^4.1.5", + "@jupyterlab/filebrowser": "^4.1.5", + "@jupyterlab/nbformat": "^4.1.5", + "@jupyterlab/observables": "^5.1.5", + "@jupyterlab/outputarea": "^4.1.5", + "@jupyterlab/rendermime": "^4.1.5", + "@jupyterlab/services": "^7.1.5", + "@jupyterlab/toc": "^6.1.5", + "@jupyterlab/translation": "^4.1.5", + "@jupyterlab/ui-components": "^4.1.5", "@lumino/algorithm": "^2.0.1", "@lumino/coreutils": "^2.1.2", "@lumino/domutils": "^2.0.1", @@ -73,7 +73,7 @@ "react": "^18.2.0" }, "devDependencies": { - "@jupyterlab/testing": "^4.1.0", + "@jupyterlab/testing": "^4.1.5", "@types/jest": "^29.2.0", "@types/react": "^18.0.26", "jest": "^29.2.0", diff --git a/packages/cells/src/widget.ts b/packages/cells/src/widget.ts index 0ed6753f7047..d8a3479d2a93 100644 --- a/packages/cells/src/widget.ts +++ b/packages/cells/src/widget.ts @@ -204,6 +204,7 @@ export class Cell extends Widget { // For cells disable searching with CodeMirror search panel. this._editorConfig = { searchWithCM: false, ...options.editorConfig }; + this._editorExtensions = options.editorExtensions ?? []; this._placeholder = true; this._inViewport = false; this.placeholder = options.placeholder ?? true; @@ -615,7 +616,7 @@ export class Cell extends Widget { * @returns Editor options */ protected getEditorOptions(): InputArea.IOptions['editorOptions'] { - return { config: this.editorConfig }; + return { config: this.editorConfig, extensions: this._editorExtensions }; } /** @@ -694,6 +695,7 @@ export class Cell extends Widget { protected _displayChanged = new Signal(this); private _editorConfig: Record = {}; + private _editorExtensions: Extension[] = []; private _input: InputArea | null; private _inputHidden = false; private _inputWrapper: Widget | null; @@ -1776,7 +1778,9 @@ export abstract class AttachmentsCell< continue; } items[i].getAsString(text => { - this.editor!.replaceSelection?.(text); + this.editor!.replaceSelection?.( + text.replace(/\r\n/g, '\n').replace(/\r/g, '\n') + ); }); } this._attachFiles(event.clipboardData.items); diff --git a/packages/cells/test/widget.spec.ts b/packages/cells/test/widget.spec.ts index 3aab72411e9e..d00cbbe79fa4 100644 --- a/packages/cells/test/widget.spec.ts +++ b/packages/cells/test/widget.spec.ts @@ -1,7 +1,7 @@ // Copyright (c) Jupyter Development Team. // Distributed under the terms of the Modified BSD License. -import { createStandaloneCell, YCodeCell } from '@jupyter/ydoc'; +import { createStandaloneCell, YCodeCell, YMarkdownCell } from '@jupyter/ydoc'; import { ISessionContext, SessionContext } from '@jupyterlab/apputils'; import { createSessionContext } from '@jupyterlab/apputils/lib/testutils'; import { @@ -998,6 +998,33 @@ describe('cells/widget', () => { }); }); + describe('#getEditorOptions()', () => { + it('should normalise line endings on paste', () => { + const model = new MarkdownCellModel({ + sharedModel: createStandaloneCell({ + cell_type: 'markdown' + }) as YMarkdownCell + }); + const widget = new MarkdownCell({ + model, + rendermime, + contentFactory, + placeholder: false + }); + widget.initializeState(); + document.body.appendChild(widget.node); + // todo: replace with user-event + const dt = new DataTransfer(); + dt.setData('text/plain', '\r\nTest\r\nString\r\n.\r\n'); + const event = new ClipboardEvent('paste', { clipboardData: dt }); + widget.editor!.host.querySelector('.cm-content')!.dispatchEvent(event); + + expect(widget.model.sharedModel.getSource()).toEqual( + '\nTest\nString\n.\n' + ); + }); + }); + describe('#rendered', () => { it('should default to true', async () => { const widget = new MarkdownCell({ diff --git a/packages/celltags-extension/package.json b/packages/celltags-extension/package.json index 4c50e58482d4..654915d78383 100644 --- a/packages/celltags-extension/package.json +++ b/packages/celltags-extension/package.json @@ -1,6 +1,6 @@ { "name": "@jupyterlab/celltags-extension", - "version": "4.1.0", + "version": "4.1.5", "description": "An extension for manipulating tags in cell metadata", "keywords": [ "jupyter", @@ -40,10 +40,10 @@ "watch": "tsc -b --watch" }, "dependencies": { - "@jupyterlab/application": "^4.1.0", - "@jupyterlab/notebook": "^4.1.0", - "@jupyterlab/translation": "^4.1.0", - "@jupyterlab/ui-components": "^4.1.0", + "@jupyterlab/application": "^4.1.5", + "@jupyterlab/notebook": "^4.1.5", + "@jupyterlab/translation": "^4.1.5", + "@jupyterlab/ui-components": "^4.1.5", "@lumino/algorithm": "^2.0.1", "@rjsf/utils": "^5.13.4", "react": "^18.2.0" diff --git a/packages/codeeditor/package.json b/packages/codeeditor/package.json index a10b9e00dfb4..23da09e9b5dc 100644 --- a/packages/codeeditor/package.json +++ b/packages/codeeditor/package.json @@ -1,6 +1,6 @@ { "name": "@jupyterlab/codeeditor", - "version": "4.1.0", + "version": "4.1.5", "description": "JupyterLab - Abstract Code Editor", "homepage": "https://github.com/jupyterlab/jupyterlab", "bugs": { @@ -44,13 +44,13 @@ "dependencies": { "@codemirror/state": "^6.2.0", "@jupyter/ydoc": "^1.1.1", - "@jupyterlab/apputils": "^4.2.0", - "@jupyterlab/coreutils": "^6.1.0", - "@jupyterlab/nbformat": "^4.1.0", - "@jupyterlab/observables": "^5.1.0", - "@jupyterlab/statusbar": "^4.1.0", - "@jupyterlab/translation": "^4.1.0", - "@jupyterlab/ui-components": "^4.1.0", + "@jupyterlab/apputils": "^4.2.5", + "@jupyterlab/coreutils": "^6.1.5", + "@jupyterlab/nbformat": "^4.1.5", + "@jupyterlab/observables": "^5.1.5", + "@jupyterlab/statusbar": "^4.1.5", + "@jupyterlab/translation": "^4.1.5", + "@jupyterlab/ui-components": "^4.1.5", "@lumino/coreutils": "^2.1.2", "@lumino/disposable": "^2.1.2", "@lumino/dragdrop": "^2.1.4", @@ -60,7 +60,7 @@ "react": "^18.2.0" }, "devDependencies": { - "@jupyterlab/testing": "^4.1.0", + "@jupyterlab/testing": "^4.1.5", "@types/jest": "^29.2.0", "jest": "^29.2.0", "rimraf": "~5.0.5", diff --git a/packages/codemirror-extension/package.json b/packages/codemirror-extension/package.json index 346b78e30e52..467b9e600086 100644 --- a/packages/codemirror-extension/package.json +++ b/packages/codemirror-extension/package.json @@ -1,6 +1,6 @@ { "name": "@jupyterlab/codemirror-extension", - "version": "4.1.0", + "version": "4.1.5", "description": "JupyterLab - CodeMirror Provider Extension", "homepage": "https://github.com/jupyterlab/jupyterlab", "bugs": { @@ -42,13 +42,13 @@ "@codemirror/language": "^6.6.0", "@codemirror/legacy-modes": "^6.3.2", "@jupyter/ydoc": "^1.1.1", - "@jupyterlab/application": "^4.1.0", - "@jupyterlab/codeeditor": "^4.1.0", - "@jupyterlab/codemirror": "^4.1.0", - "@jupyterlab/settingregistry": "^4.1.0", - "@jupyterlab/statusbar": "^4.1.0", - "@jupyterlab/translation": "^4.1.0", - "@jupyterlab/ui-components": "^4.1.0", + "@jupyterlab/application": "^4.1.5", + "@jupyterlab/codeeditor": "^4.1.5", + "@jupyterlab/codemirror": "^4.1.5", + "@jupyterlab/settingregistry": "^4.1.5", + "@jupyterlab/statusbar": "^4.1.5", + "@jupyterlab/translation": "^4.1.5", + "@jupyterlab/ui-components": "^4.1.5", "@lumino/coreutils": "^2.1.2", "@lumino/widgets": "^2.3.1", "@rjsf/utils": "^5.13.4", diff --git a/packages/codemirror-extension/src/services.tsx b/packages/codemirror-extension/src/services.tsx index c9d5627b661d..5190f62e929d 100644 --- a/packages/codemirror-extension/src/services.tsx +++ b/packages/codemirror-extension/src/services.tsx @@ -3,7 +3,7 @@ * Distributed under the terms of the Modified BSD License. */ -import { StreamLanguage } from '@codemirror/language'; +import { LanguageSupport, StreamLanguage } from '@codemirror/language'; import { IYText } from '@jupyter/ydoc'; import { JupyterFrontEnd, @@ -20,6 +20,7 @@ import { IEditorLanguageRegistry, IEditorThemeRegistry, parseMathIPython, + pythonBuiltin, ybinding } from '@jupyterlab/codemirror'; import { ISettingRegistry } from '@jupyterlab/settingregistry'; @@ -62,17 +63,22 @@ export const languagePlugin: JupyterFrontEndPlugin = { name: 'ipythongfm', mime: 'text/x-ipythongfm', load: async () => { - const [m, tex] = await Promise.all([ + const [m, py, tex] = await Promise.all([ import('@codemirror/lang-markdown'), + import('@codemirror/lang-python'), import('@codemirror/legacy-modes/mode/stex') ]); - return m.markdown({ + const mdlang = m.markdown({ base: m.markdownLanguage, codeLanguages: (info: string) => languages.findBest(info) as any, extensions: [ parseMathIPython(StreamLanguage.define(tex.stexMath).parser) ] }); + return new LanguageSupport(mdlang.language, [ + mdlang.support, + pythonBuiltin(py.pythonLanguage) + ]); } }); return languages; diff --git a/packages/codemirror/package.json b/packages/codemirror/package.json index 561202fe0d26..c795773141eb 100644 --- a/packages/codemirror/package.json +++ b/packages/codemirror/package.json @@ -1,6 +1,6 @@ { "name": "@jupyterlab/codemirror", - "version": "4.1.0", + "version": "4.1.5", "description": "JupyterLab - CodeMirror Editor Provider", "homepage": "https://github.com/jupyterlab/jupyterlab", "bugs": { @@ -59,11 +59,11 @@ "@codemirror/state": "^6.2.0", "@codemirror/view": "^6.9.6", "@jupyter/ydoc": "^1.1.1", - "@jupyterlab/codeeditor": "^4.1.0", - "@jupyterlab/coreutils": "^6.1.0", - "@jupyterlab/documentsearch": "^4.1.0", - "@jupyterlab/nbformat": "^4.1.0", - "@jupyterlab/translation": "^4.1.0", + "@jupyterlab/codeeditor": "^4.1.5", + "@jupyterlab/coreutils": "^6.1.5", + "@jupyterlab/documentsearch": "^4.1.5", + "@jupyterlab/nbformat": "^4.1.5", + "@jupyterlab/translation": "^4.1.5", "@lezer/common": "^1.0.2", "@lezer/generator": "^1.2.2", "@lezer/highlight": "^1.1.4", @@ -74,7 +74,7 @@ "yjs": "^13.5.40" }, "devDependencies": { - "@jupyterlab/testing": "^4.1.0", + "@jupyterlab/testing": "^4.1.5", "@lezer/generator": "^1.2.2", "@lezer/lr": "^1.3.3", "@types/jest": "^29.2.0", diff --git a/packages/codemirror/src/commands.ts b/packages/codemirror/src/commands.ts index 9b30c4d556b8..56b5aaf99a7d 100644 --- a/packages/codemirror/src/commands.ts +++ b/packages/codemirror/src/commands.ts @@ -4,6 +4,7 @@ */ import { + indentLess, indentMore, insertNewlineAndIndent, insertTab @@ -19,6 +20,12 @@ import { */ const CODE_RUNNER_SELECTOR = '[data-jp-code-runner]'; +/** + * Selector for a widget that can open a tooltip. + */ +const TOOLTIP_OPENER_SELECTOR = + '.jp-CodeMirrorEditor:not(.jp-mod-has-primary-selection):not(.jp-mod-in-leading-whitespace):not(.jp-mod-completer-active)'; + /** * CodeMirror commands namespace */ @@ -76,4 +83,22 @@ export namespace StateCommands { } return false; } + + /** + * Prevent dedenting when launching inspection request (a.k.a tooltip). + * + * This function should be removed once a better way to prevent default + * CodeMirror commands is implemented, as tracked in + * https://github.com/jupyterlab/jupyterlab/issues/15897 + */ + export function dedentIfNotLaunchingTooltip(target: { + dom: HTMLElement; + state: EditorState; + dispatch: (transaction: Transaction) => void; + }): boolean { + if (target.dom.closest(TOOLTIP_OPENER_SELECTOR)) { + return true; + } + return indentLess(target); + } } diff --git a/packages/codemirror/src/extension.ts b/packages/codemirror/src/extension.ts index 3e0424368772..2c0b65078e67 100644 --- a/packages/codemirror/src/extension.ts +++ b/packages/codemirror/src/extension.ts @@ -2,7 +2,7 @@ // Distributed under the terms of the Modified BSD License. import { closeBrackets, closeBracketsKeymap } from '@codemirror/autocomplete'; -import { defaultKeymap, indentLess } from '@codemirror/commands'; +import { defaultKeymap } from '@codemirror/commands'; import { bracketMatching, foldGutter, @@ -715,7 +715,7 @@ export namespace EditorExtensionRegistry { { key: 'Tab', run: StateCommands.indentMoreOrInsertTab, - shift: indentLess + shift: StateCommands.dedentIfNotLaunchingTooltip } ], factory: () => diff --git a/packages/codemirror/src/index.ts b/packages/codemirror/src/index.ts index 33b1c4d60ed0..2d34ee896a7b 100644 --- a/packages/codemirror/src/index.ts +++ b/packages/codemirror/src/index.ts @@ -15,3 +15,4 @@ export * from './mimetype'; export * from './searchprovider'; export * from './theme'; export * from './token'; +export * from './pythonBuiltin'; diff --git a/packages/codemirror/src/language.ts b/packages/codemirror/src/language.ts index 3bafd287a416..55017e7a50ab 100644 --- a/packages/codemirror/src/language.ts +++ b/packages/codemirror/src/language.ts @@ -16,6 +16,7 @@ import { highlightTree } from '@lezer/highlight'; import { jupyterHighlightStyle } from './theme'; import { IEditorLanguage, IEditorLanguageRegistry } from './token'; +import { pythonBuiltin } from './pythonBuiltin'; /** * CodeMirror language registry @@ -473,7 +474,10 @@ export namespace EditorLanguageRegistry { filename: /^(BUCK|BUILD)$/, async load() { const m = await import('@codemirror/lang-python'); - return m.python(); + return new LanguageSupport( + m.pythonLanguage, + pythonBuiltin(m.pythonLanguage) + ); } }, { @@ -485,7 +489,10 @@ export namespace EditorLanguageRegistry { // to activate feature such as code folding. // return Promise.resolve(legacy(mkPython({ singleOperators: /\?/ }))); const m = await import('@codemirror/lang-python'); - return m.python(); + return new LanguageSupport( + m.pythonLanguage, + pythonBuiltin(m.pythonLanguage) + ); } }, { diff --git a/packages/codemirror/src/pythonBuiltin.ts b/packages/codemirror/src/pythonBuiltin.ts new file mode 100644 index 000000000000..332a35160dec --- /dev/null +++ b/packages/codemirror/src/pythonBuiltin.ts @@ -0,0 +1,159 @@ +/* + * Copyright (c) Jupyter Development Team. + * Distributed under the terms of the Modified BSD License. + */ + +import { Language, syntaxTree } from '@codemirror/language'; +import { RangeSetBuilder } from '@codemirror/state'; +import { + Decoration, + DecorationSet, + EditorView, + ViewPlugin, + ViewUpdate +} from '@codemirror/view'; +import { NodeProp, SyntaxNodeRef, Tree } from '@lezer/common'; + +export class PythonBuiltin { + decorations: DecorationSet; + decoratedTo: number; + langPython: Language; + tree: Tree; + mark: Decoration; + + constructor(view: EditorView, langPython: Language) { + this.langPython = langPython; + this.tree = syntaxTree(view.state); + this.mark = Decoration.mark({ class: 'cm-builtin' }); + this.decorations = this.buildDeco(view); + this.decoratedTo = view.viewport.to; + } + + update(update: ViewUpdate) { + let tree = syntaxTree(update.state); + let { viewport } = update.view, + decoratedToMapped = update.changes.mapPos(this.decoratedTo, 1); + if ( + tree.length < viewport.to && + tree.type == this.tree.type && + decoratedToMapped >= viewport.to + ) { + this.decorations = this.decorations.map(update.changes); + this.decoratedTo = decoratedToMapped; + } else if (tree != this.tree || update.viewportChanged) { + this.tree = tree; + this.decorations = this.buildDeco(update.view); + this.decoratedTo = viewport.to; + } + } + + buildDeco(view: EditorView) { + if (!this.tree.length) return Decoration.none; + + let builder = new RangeSetBuilder(); + const enter = (node: SyntaxNodeRef) => { + const cursor = node.node.cursor(); + // Handle nested language, e.g. Markdown + const mounted = cursor.tree && cursor.tree.prop(NodeProp.mounted); + if (mounted && mounted.overlay) { + node.node + .enter(mounted.overlay[0].from + node.from, 1) + ?.cursor() + .iterate(enter); + } + if ( + this.langPython.isActiveAt(view.state, node.from + 1) && + node.name === 'VariableName' + ) { + const variableName = view.state.sliceDoc(node.from, node.to); + if (builtins.includes(variableName)) { + builder.add(node.from, node.to, this.mark); + } + } + }; + for (let { from, to } of view.visibleRanges) { + this.tree.iterate({ enter, from, to }); + } + return builder.finish(); + } +} + +export function pythonBuiltin(langPython: Language) { + return ViewPlugin.define(view => new PythonBuiltin(view, langPython), { + decorations: v => v.decorations + }); +} + +const builtins = [ + 'abs', + 'aiter', + 'all', + 'any', + 'anext', + 'ascii', + 'bin', + 'bool', + 'breakpoint', + 'bytearray', + 'bytes', + 'callable', + 'chr', + 'classmethod', + 'compile', + 'complex', + 'delattr', + 'dict', + 'dir', + 'divmod', + 'enumerate', + 'eval', + 'exec', + 'filter', + 'float', + 'format', + 'frozenset', + 'getattr', + 'globals', + 'hasattr', + 'hash', + 'help', + 'hex', + 'id', + 'input', + 'int', + 'isinstance', + 'issubclass', + 'iter', + 'len', + 'list', + 'locals', + 'map', + 'max', + 'memoryview', + 'min', + 'next', + 'object', + 'oct', + 'open', + 'ord', + 'pow', + 'print', + 'property', + 'range', + 'repr', + 'reversed', + 'round', + 'set', + 'setattr', + 'slice', + 'sorted', + 'staticmethod', + 'str', + 'sum', + 'super', + 'tuple', + 'type', + 'vars', + 'zip', + '__import__' +]; diff --git a/packages/codemirror/src/searchprovider.ts b/packages/codemirror/src/searchprovider.ts index 557b64cf8183..6b9c67a5730d 100644 --- a/packages/codemirror/src/searchprovider.ts +++ b/packages/codemirror/src/searchprovider.ts @@ -319,9 +319,9 @@ export abstract class EditorSearchProvider< * * The caller of this method is expected to call `highlightNext` if after * calling `replaceCurrentMatch()` attribute `this.currentIndex` is null. - * It is necesary to let the caller handle highlighting because this + * It is necessary to let the caller handle highlighting because this * method is used in composition pattern (search engine of notebook cells) - * and highligthing on the composer (notebook) level needs to switch to next + * and highlighting on the composer (notebook) level needs to switch to next * engine (cell) with matches. * * @param newText The replacement text. @@ -343,15 +343,17 @@ export abstract class EditorSearchProvider< this.currentIndex < this.cmHandler.matches.length ) { const match = this.getCurrentMatch(); - // If cursor there is no match selected, highlight the next match if (!match) { this.currentIndex = null; } else { this.cmHandler.matches.splice(this.currentIndex, 1); + const cmMatchesRemaining = this.cmHandler.matches.length; + + // End at the end of the CodeMirror matches list; do not loop + // Let the caller call highlightNext if we've reached the end of the current code cell this.currentIndex = - this.currentIndex < this.cmHandler.matches.length - ? Math.max(this.currentIndex - 1, 0) - : null; + this.currentIndex < cmMatchesRemaining ? this.currentIndex : null; + const substitutedText = options?.regularExpression ? match!.text.replace(this.query!, newText) : newText; diff --git a/packages/codemirror/src/theme.ts b/packages/codemirror/src/theme.ts index eec13b0a5c60..54cd7649fe35 100644 --- a/packages/codemirror/src/theme.ts +++ b/packages/codemirror/src/theme.ts @@ -81,6 +81,10 @@ export const jupyterEditorTheme = EditorView.theme({ '.cm-tooltip': { backgroundColor: 'var(--jp-layout-color1)' + }, + + '.cm-builtin': { + color: 'var(--jp-mirror-editor-builtin-color)' } }); diff --git a/packages/codemirror/style/base.css b/packages/codemirror/style/base.css index d3cf35f6fb93..f81fae3f9499 100644 --- a/packages/codemirror/style/base.css +++ b/packages/codemirror/style/base.css @@ -43,10 +43,15 @@ } } -.cm-editor.jp-mod-readOnly .cm-cursor { +/* stylelint-disable selector-max-class */ + +/* We need all this classes for higher specificity to override CodeMirror's rule */ +.cm-editor.jp-mod-readOnly > .cm-scroller > .cm-cursorLayer .cm-cursor { display: none; } +/* stylelint-enable selector-max-class */ + .jp-CollaboratorCursor { border-left: 5px solid transparent; border-right: 5px solid transparent; diff --git a/packages/completer-extension/package.json b/packages/completer-extension/package.json index 2b51706edba9..9cda80d58200 100644 --- a/packages/completer-extension/package.json +++ b/packages/completer-extension/package.json @@ -1,6 +1,6 @@ { "name": "@jupyterlab/completer-extension", - "version": "4.1.0", + "version": "4.1.5", "description": "JupyterLab - Completer Extension", "homepage": "https://github.com/jupyterlab/jupyterlab", "bugs": { @@ -38,11 +38,11 @@ "watch": "tsc -b --watch" }, "dependencies": { - "@jupyterlab/application": "^4.1.0", - "@jupyterlab/completer": "^4.1.0", - "@jupyterlab/settingregistry": "^4.1.0", - "@jupyterlab/translation": "^4.1.0", - "@jupyterlab/ui-components": "^4.1.0", + "@jupyterlab/application": "^4.1.5", + "@jupyterlab/completer": "^4.1.5", + "@jupyterlab/settingregistry": "^4.1.5", + "@jupyterlab/translation": "^4.1.5", + "@jupyterlab/ui-components": "^4.1.5", "@lumino/commands": "^2.2.0", "@lumino/coreutils": "^2.1.2", "@rjsf/utils": "^5.13.4", diff --git a/packages/completer-extension/schema/inline-completer.json b/packages/completer-extension/schema/inline-completer.json index 0655ff8b3ccd..c9105fc7dee2 100644 --- a/packages/completer-extension/schema/inline-completer.json +++ b/packages/completer-extension/schema/inline-completer.json @@ -29,7 +29,8 @@ "properties": { "providers": { "title": "Inline completion providers", - "type": "object" + "type": "object", + "default": {} }, "showWidget": { "title": "Show widget", diff --git a/packages/completer/package.json b/packages/completer/package.json index eaa7caf3568e..ae99eff0b3a9 100644 --- a/packages/completer/package.json +++ b/packages/completer/package.json @@ -1,6 +1,6 @@ { "name": "@jupyterlab/completer", - "version": "4.1.0", + "version": "4.1.5", "description": "JupyterLab - Completer", "homepage": "https://github.com/jupyterlab/jupyterlab", "bugs": { @@ -49,16 +49,16 @@ "@codemirror/state": "^6.2.0", "@codemirror/view": "^6.9.6", "@jupyter/ydoc": "^1.1.1", - "@jupyterlab/apputils": "^4.2.0", - "@jupyterlab/codeeditor": "^4.1.0", - "@jupyterlab/codemirror": "^4.1.0", - "@jupyterlab/coreutils": "^6.1.0", - "@jupyterlab/rendermime": "^4.1.0", - "@jupyterlab/services": "^7.1.0", - "@jupyterlab/settingregistry": "^4.1.0", - "@jupyterlab/statedb": "^4.1.0", - "@jupyterlab/translation": "^4.1.0", - "@jupyterlab/ui-components": "^4.1.0", + "@jupyterlab/apputils": "^4.2.5", + "@jupyterlab/codeeditor": "^4.1.5", + "@jupyterlab/codemirror": "^4.1.5", + "@jupyterlab/coreutils": "^6.1.5", + "@jupyterlab/rendermime": "^4.1.5", + "@jupyterlab/services": "^7.1.5", + "@jupyterlab/settingregistry": "^4.1.5", + "@jupyterlab/statedb": "^4.1.5", + "@jupyterlab/translation": "^4.1.5", + "@jupyterlab/ui-components": "^4.1.5", "@lumino/algorithm": "^2.0.1", "@lumino/coreutils": "^2.1.2", "@lumino/disposable": "^2.1.2", @@ -68,7 +68,7 @@ "@lumino/widgets": "^2.3.1" }, "devDependencies": { - "@jupyterlab/testing": "^4.1.0", + "@jupyterlab/testing": "^4.1.5", "@types/jest": "^29.2.0", "jest": "^29.2.0", "rimraf": "~5.0.5", diff --git a/packages/completer/src/handler.ts b/packages/completer/src/handler.ts index 59abf1a383af..fb4bb14d103c 100644 --- a/packages/completer/src/handler.ts +++ b/packages/completer/src/handler.ts @@ -7,7 +7,14 @@ import { COMPLETER_ENABLED_CLASS } from '@jupyterlab/codeeditor'; import { Text } from '@jupyterlab/coreutils'; -import { ISharedText, SourceChange } from '@jupyter/ydoc'; +import { + CellChange, + FileChange, + ISharedBaseCell, + ISharedFile, + ISharedText, + SourceChange +} from '@jupyter/ydoc'; import { IDataConnector } from '@jupyterlab/statedb'; import { LabIcon } from '@jupyterlab/ui-components'; import { IDisposable } from '@lumino/disposable'; @@ -70,7 +77,7 @@ export class CompletionHandler implements IDisposable { editor.host.classList.remove(COMPLETER_ENABLED_CLASS); editor.host.classList.remove(COMPLETER_ACTIVE_CLASS); model.selections.changed.disconnect(this.onSelectionsChanged, this); - model.sharedModel.changed.disconnect(this.onTextChanged, this); + model.sharedModel.changed.disconnect(this._onSharedModelChanged, this); } // Reset completer state. @@ -84,7 +91,15 @@ export class CompletionHandler implements IDisposable { const model = editor.model; this._enabled = false; model.selections.changed.connect(this.onSelectionsChanged, this); - model.sharedModel.changed.connect(this.onTextChanged, this); + // We expect the model to be an editor, a file editor, or a cell. + const sharedModel = model.sharedModel as + | ISharedText + | ISharedFile + | ISharedBaseCell; + // For cells and files the `changed` signal is not limited to text, + // but also fires on changes to metadata, outputs, execution count, + // and state changes, hence we need to filter the change type. + sharedModel.changed.connect(this._onSharedModelChanged, this); // On initial load, manually check the cursor position. this.onSelectionsChanged(); if (this.inlineCompleter) { @@ -382,6 +397,18 @@ export class CompletionHandler implements IDisposable { } } + /** + * Handle a text shared model change signal from an editor. + */ + private async _onSharedModelChanged( + str: ISharedText, + changed: SourceChange | CellChange | FileChange + ): Promise { + if (changed.sourceChange) { + await this.onTextChanged(str, changed); + } + } + /** * Make a completion request. */ diff --git a/packages/console-extension/package.json b/packages/console-extension/package.json index e11fc3b6d3a3..479a277a12d0 100644 --- a/packages/console-extension/package.json +++ b/packages/console-extension/package.json @@ -1,6 +1,6 @@ { "name": "@jupyterlab/console-extension", - "version": "4.1.0", + "version": "4.1.5", "description": "JupyterLab - Code Console Extension", "homepage": "https://github.com/jupyterlab/jupyterlab", "bugs": { @@ -38,18 +38,18 @@ "watch": "tsc -b --watch" }, "dependencies": { - "@jupyterlab/application": "^4.1.0", - "@jupyterlab/apputils": "^4.2.0", - "@jupyterlab/codeeditor": "^4.1.0", - "@jupyterlab/completer": "^4.1.0", - "@jupyterlab/console": "^4.1.0", - "@jupyterlab/filebrowser": "^4.1.0", - "@jupyterlab/launcher": "^4.1.0", - "@jupyterlab/mainmenu": "^4.1.0", - "@jupyterlab/rendermime": "^4.1.0", - "@jupyterlab/settingregistry": "^4.1.0", - "@jupyterlab/translation": "^4.1.0", - "@jupyterlab/ui-components": "^4.1.0", + "@jupyterlab/application": "^4.1.5", + "@jupyterlab/apputils": "^4.2.5", + "@jupyterlab/codeeditor": "^4.1.5", + "@jupyterlab/completer": "^4.1.5", + "@jupyterlab/console": "^4.1.5", + "@jupyterlab/filebrowser": "^4.1.5", + "@jupyterlab/launcher": "^4.1.5", + "@jupyterlab/mainmenu": "^4.1.5", + "@jupyterlab/rendermime": "^4.1.5", + "@jupyterlab/settingregistry": "^4.1.5", + "@jupyterlab/translation": "^4.1.5", + "@jupyterlab/ui-components": "^4.1.5", "@lumino/algorithm": "^2.0.1", "@lumino/coreutils": "^2.1.2", "@lumino/disposable": "^2.1.2", diff --git a/packages/console-extension/schema/tracker.json b/packages/console-extension/schema/tracker.json index 0007b3654b9a..80461189d24a 100644 --- a/packages/console-extension/schema/tracker.json +++ b/packages/console-extension/schema/tracker.json @@ -59,6 +59,16 @@ } ], "context": [ + { + "command": "console:undo", + "selector": ".jp-CodeConsole-promptCell", + "rank": 1 + }, + { + "command": "console:redo", + "selector": ".jp-CodeConsole-promptCell", + "rank": 2 + }, { "command": "console:clear", "selector": ".jp-CodeConsole-content", diff --git a/packages/console-extension/src/index.ts b/packages/console-extension/src/index.ts index b8d06abbe8ff..e82b13ce0de7 100644 --- a/packages/console-extension/src/index.ts +++ b/packages/console-extension/src/index.ts @@ -36,7 +36,12 @@ import { IMainMenu } from '@jupyterlab/mainmenu'; import { IRenderMime, IRenderMimeRegistry } from '@jupyterlab/rendermime'; import { ISettingRegistry } from '@jupyterlab/settingregistry'; import { ITranslator, nullTranslator } from '@jupyterlab/translation'; -import { consoleIcon, IFormRendererRegistry } from '@jupyterlab/ui-components'; +import { + consoleIcon, + IFormRendererRegistry, + redoIcon, + undoIcon +} from '@jupyterlab/ui-components'; import { find } from '@lumino/algorithm'; import { JSONExt, @@ -85,10 +90,14 @@ namespace CommandIDs { export const interactionMode = 'console:interaction-mode'; + export const redo = 'console:redo'; + export const replaceSelection = 'console:replace-selection'; export const shutdown = 'console:shutdown'; + export const undo = 'console:undo'; + export const invokeCompleter = 'completer:invoke-console'; export const selectCompleter = 'completer:select-console'; @@ -550,6 +559,74 @@ async function activateConsole( return widget ?? null; } + /** + * Add undo command + */ + commands.addCommand(CommandIDs.undo, { + execute: args => { + const current = getCurrent(args); + + if (!current) { + return; + } + + const editor = current.console.promptCell?.editor; + if (!editor) { + return; + } + editor.undo(); + }, + isEnabled: args => { + if (!isEnabled()) { + return false; + } + + const editor = getCurrent(args)?.console?.promptCell?.editor; + + if (!editor) { + return false; + } + + return editor.model.sharedModel.canUndo(); + }, + icon: undoIcon.bindprops({ stylesheet: 'menuItem' }), + label: trans.__('Undo') + }); + + /** + * Add redo command + */ + commands.addCommand(CommandIDs.redo, { + execute: args => { + const current = getCurrent(args); + + if (!current) { + return; + } + + const editor = current.console.promptCell?.editor; + if (!editor) { + return; + } + editor.redo(); + }, + isEnabled: args => { + if (!isEnabled()) { + return false; + } + + const editor = getCurrent(args)?.console?.promptCell?.editor; + + if (!editor) { + return false; + } + + return editor.model.sharedModel.canRedo(); + }, + icon: redoIcon.bindprops({ stylesheet: 'menuItem' }), + label: trans.__('Redo') + }); + commands.addCommand(CommandIDs.clear, { label: trans.__('Clear Console Cells'), execute: args => { @@ -790,6 +867,16 @@ async function activateConsole( isEnabled }); + // Add undo/redo hooks to the edit menu. + mainMenu.editMenu.undoers.redo.add({ + id: CommandIDs.redo, + isEnabled + }); + mainMenu.editMenu.undoers.undo.add({ + id: CommandIDs.undo, + isEnabled + }); + // Add kernel information to the application help menu. mainMenu.helpMenu.getKernel.add({ id: CommandIDs.getKernel, diff --git a/packages/console/package.json b/packages/console/package.json index 510463889ab6..2a795e76a7c5 100644 --- a/packages/console/package.json +++ b/packages/console/package.json @@ -1,6 +1,6 @@ { "name": "@jupyterlab/console", - "version": "4.1.0", + "version": "4.1.5", "description": "JupyterLab - Code Console", "homepage": "https://github.com/jupyterlab/jupyterlab", "bugs": { @@ -46,16 +46,16 @@ "@codemirror/state": "^6.2.0", "@codemirror/view": "^6.9.6", "@jupyter/ydoc": "^1.1.1", - "@jupyterlab/apputils": "^4.2.0", - "@jupyterlab/cells": "^4.1.0", - "@jupyterlab/codeeditor": "^4.1.0", - "@jupyterlab/coreutils": "^6.1.0", - "@jupyterlab/nbformat": "^4.1.0", - "@jupyterlab/observables": "^5.1.0", - "@jupyterlab/rendermime": "^4.1.0", - "@jupyterlab/services": "^7.1.0", - "@jupyterlab/translation": "^4.1.0", - "@jupyterlab/ui-components": "^4.1.0", + "@jupyterlab/apputils": "^4.2.5", + "@jupyterlab/cells": "^4.1.5", + "@jupyterlab/codeeditor": "^4.1.5", + "@jupyterlab/coreutils": "^6.1.5", + "@jupyterlab/nbformat": "^4.1.5", + "@jupyterlab/observables": "^5.1.5", + "@jupyterlab/rendermime": "^4.1.5", + "@jupyterlab/services": "^7.1.5", + "@jupyterlab/translation": "^4.1.5", + "@jupyterlab/ui-components": "^4.1.5", "@lumino/coreutils": "^2.1.2", "@lumino/disposable": "^2.1.2", "@lumino/dragdrop": "^2.1.4", @@ -64,8 +64,8 @@ "@lumino/widgets": "^2.3.1" }, "devDependencies": { - "@jupyterlab/codemirror": "^4.1.0", - "@jupyterlab/testing": "^4.1.0", + "@jupyterlab/codemirror": "^4.1.5", + "@jupyterlab/testing": "^4.1.5", "@types/jest": "^29.2.0", "jest": "^29.2.0", "rimraf": "~5.0.5", diff --git a/packages/console/src/widget.ts b/packages/console/src/widget.ts index b3fdb0c8677d..79a8661f71d6 100644 --- a/packages/console/src/widget.ts +++ b/packages/console/src/widget.ts @@ -4,7 +4,7 @@ import { Prec } from '@codemirror/state'; import { EditorView } from '@codemirror/view'; import { createStandaloneCell, ISharedRawCell } from '@jupyter/ydoc'; -import { ISessionContext } from '@jupyterlab/apputils'; +import { DOMUtils, ISessionContext } from '@jupyterlab/apputils'; import { AttachmentsCellModel, Cell, @@ -70,6 +70,14 @@ const CONTENT_CLASS = 'jp-CodeConsole-content'; */ const INPUT_CLASS = 'jp-CodeConsole-input'; +/** + * The class name added to the console when an element within it is focused + * and takes keyboard input, such as and
+ * + * This class is also effective when the focused element is in shadow DOM. + */ +const READ_WRITE_CLASS = 'jp-mod-readWrite'; + /** * The timeout in ms for execution requests to the kernel. */ @@ -80,6 +88,16 @@ const EXECUTION_TIMEOUT = 250; */ const JUPYTER_CELL_MIME = 'application/vnd.jupyter.cells'; +/** + * The data attribute added to a widget that can undo. + */ +const UNDOER = 'jpUndoer'; +/** + * The data attribute Whether the console interaction mimics the notebook + * or terminal keyboard shortcuts. + */ +const INTERACTION_MODE = 'jpInteractionMode'; + /** * A widget containing a Jupyter console. * @@ -97,6 +115,7 @@ export class CodeConsole extends Widget { this.addClass(CONSOLE_CLASS); this.node.dataset[KERNEL_USER] = 'true'; this.node.dataset[CODE_RUNNER] = 'true'; + this.node.dataset[UNDOER] = 'true'; this.node.tabIndex = -1; // Allow the widget to take focus. // Create the panels that hold the content and input. @@ -551,6 +570,12 @@ export class CodeConsole extends Widget { case 'mouseup': this._evtMouseUp(event as MouseEvent); break; + case 'focusin': + this._evtFocusIn(event as MouseEvent); + break; + case 'focusout': + this._evtFocusOut(event as MouseEvent); + break; default: break; } @@ -564,6 +589,8 @@ export class CodeConsole extends Widget { node.addEventListener('keydown', this, true); node.addEventListener('click', this); node.addEventListener('mousedown', this); + node.addEventListener('focusin', this); + node.addEventListener('focusout', this); // Create a prompt if necessary. if (!this.promptCell) { this.newPromptCell(); @@ -580,6 +607,8 @@ export class CodeConsole extends Widget { const node = this.node; node.removeEventListener('keydown', this, true); node.removeEventListener('click', this); + node.removeEventListener('focusin', this); + node.removeEventListener('focusout', this); } /** @@ -604,7 +633,16 @@ export class CodeConsole extends Widget { if (promptCell) { promptCell.readOnly = true; promptCell.removeClass(PROMPT_CLASS); - Signal.clearData(promptCell.editor); + + // Schedule execution of signal clearance to happen later so that + // the `readOnly` configuration gets updated before editor signals + // get disconnected (see `Cell.onUpdateRequest`). + const oldCell = promptCell; + requestIdleCallback(() => { + // Clear the signals to avoid memory leaks + Signal.clearData(oldCell.editor); + }); + // Ensure to clear the cursor promptCell.editor?.blur(); const child = input.widgets[0]; @@ -664,6 +702,22 @@ export class CodeConsole extends Widget { } } + /** + * Handle `focus` events for the widget. + */ + private _evtFocusIn(event: FocusEvent): void { + // Update read-write class state. + this._updateReadWrite(); + } + + /** + * Handle `focusout` events for the widget. + */ + private _evtFocusOut(event: FocusEvent): void { + // Update read-write class state. + this._updateReadWrite(); + } + /** * Execute the code in the current prompt cell. */ @@ -740,6 +794,7 @@ export class CodeConsole extends Widget { * Create the options used to initialize a code cell widget. */ private _createCodeCellOptions(): CodeCell.IOptions { + const { node } = this; const contentFactory = this.contentFactory; const modelFactory = this.modelFactory; const model = modelFactory.createCodeCell({}); @@ -749,7 +804,10 @@ export class CodeConsole extends Widget { // Suppress the default "Enter" key handling. const onKeyDown = EditorView.domEventHandlers({ keydown: (event: KeyboardEvent, view: EditorView) => { - if (event.keyCode === 13) { + if ( + event.keyCode === 13 && + node.dataset[INTERACTION_MODE] === 'terminal' + ) { event.preventDefault(); return true; } @@ -846,6 +904,15 @@ export class CodeConsole extends Widget { } } + /** + * Update the console node with class indicating read-write state. + */ + private _updateReadWrite(): void { + // TODO: de-duplicate with code in notebook/src/widget.ts + const inReadWrite = DOMUtils.hasActiveEditableElement(this.node); + this.node.classList.toggle(READ_WRITE_CLASS, inReadWrite); + } + private _banner: RawCell | null = null; private _cells: IObservableList; private _content: Panel; diff --git a/packages/console/test/widget.spec.ts b/packages/console/test/widget.spec.ts index 9d84b82d4e41..000d634ba615 100644 --- a/packages/console/test/widget.spec.ts +++ b/packages/console/test/widget.spec.ts @@ -280,6 +280,19 @@ describe('console/widget', () => { expect.arrayContaining(['newPromptCell']) ); }); + + it('should make previous cell read-only after execution', async () => { + Widget.attach(widget, document.body); + + const old = widget.promptCell; + const force = true; + expect(old).toBeInstanceOf(CodeCell); + + await (widget.sessionContext as SessionContext).initialize(); + await widget.execute(force); + + expect(old!.editor!.getOption('readOnly')).toBe(true); + }); }); describe('#onActivateRequest()', () => { diff --git a/packages/coreutils/package.json b/packages/coreutils/package.json index 3c2fde82ebef..e1c7d28bb5d0 100644 --- a/packages/coreutils/package.json +++ b/packages/coreutils/package.json @@ -1,6 +1,6 @@ { "name": "@jupyterlab/coreutils", - "version": "6.1.0", + "version": "6.1.5", "description": "JupyterLab - Core Utilities", "homepage": "https://github.com/jupyterlab/jupyterlab", "bugs": { diff --git a/packages/csvviewer-extension/package.json b/packages/csvviewer-extension/package.json index ee6c4944d901..f29a9fd6161e 100644 --- a/packages/csvviewer-extension/package.json +++ b/packages/csvviewer-extension/package.json @@ -1,6 +1,6 @@ { "name": "@jupyterlab/csvviewer-extension", - "version": "4.1.0", + "version": "4.1.5", "description": "JupyterLab - CSV Widget Extension", "homepage": "https://github.com/jupyterlab/jupyterlab", "bugs": { @@ -38,15 +38,15 @@ "watch": "tsc -b --watch" }, "dependencies": { - "@jupyterlab/application": "^4.1.0", - "@jupyterlab/apputils": "^4.2.0", - "@jupyterlab/csvviewer": "^4.1.0", - "@jupyterlab/docregistry": "^4.1.0", - "@jupyterlab/documentsearch": "^4.1.0", - "@jupyterlab/mainmenu": "^4.1.0", - "@jupyterlab/observables": "^5.1.0", - "@jupyterlab/settingregistry": "^4.1.0", - "@jupyterlab/translation": "^4.1.0", + "@jupyterlab/application": "^4.1.5", + "@jupyterlab/apputils": "^4.2.5", + "@jupyterlab/csvviewer": "^4.1.5", + "@jupyterlab/docregistry": "^4.1.5", + "@jupyterlab/documentsearch": "^4.1.5", + "@jupyterlab/mainmenu": "^4.1.5", + "@jupyterlab/observables": "^5.1.5", + "@jupyterlab/settingregistry": "^4.1.5", + "@jupyterlab/translation": "^4.1.5", "@lumino/datagrid": "^2.3.0", "@lumino/widgets": "^2.3.1" }, diff --git a/packages/csvviewer/package.json b/packages/csvviewer/package.json index 075286473d74..04857c6f4f07 100644 --- a/packages/csvviewer/package.json +++ b/packages/csvviewer/package.json @@ -1,6 +1,6 @@ { "name": "@jupyterlab/csvviewer", - "version": "4.1.0", + "version": "4.1.5", "description": "JupyterLab - CSV Widget", "homepage": "https://github.com/jupyterlab/jupyterlab", "bugs": { @@ -42,10 +42,10 @@ "watch": "tsc -b --watch" }, "dependencies": { - "@jupyterlab/coreutils": "^6.1.0", - "@jupyterlab/docregistry": "^4.1.0", - "@jupyterlab/translation": "^4.1.0", - "@jupyterlab/ui-components": "^4.1.0", + "@jupyterlab/coreutils": "^6.1.5", + "@jupyterlab/docregistry": "^4.1.5", + "@jupyterlab/translation": "^4.1.5", + "@jupyterlab/ui-components": "^4.1.5", "@lumino/coreutils": "^2.1.2", "@lumino/datagrid": "^2.3.0", "@lumino/disposable": "^2.1.2", @@ -54,7 +54,7 @@ "@lumino/widgets": "^2.3.1" }, "devDependencies": { - "@jupyterlab/testing": "^4.1.0", + "@jupyterlab/testing": "^4.1.5", "@types/jest": "^29.2.0", "canvas": "^2.11.2", "csv-spectrum": "^1.0.0", diff --git a/packages/debugger-extension/package.json b/packages/debugger-extension/package.json index 426618221eca..0b88ecd8d3af 100644 --- a/packages/debugger-extension/package.json +++ b/packages/debugger-extension/package.json @@ -1,6 +1,6 @@ { "name": "@jupyterlab/debugger-extension", - "version": "4.1.0", + "version": "4.1.5", "description": "JupyterLab - Debugger Extension", "keywords": [ "jupyter", @@ -44,24 +44,24 @@ "watch": "tsc -b --watch" }, "dependencies": { - "@jupyterlab/application": "^4.1.0", - "@jupyterlab/apputils": "^4.2.0", - "@jupyterlab/cells": "^4.1.0", - "@jupyterlab/codeeditor": "^4.1.0", - "@jupyterlab/console": "^4.1.0", - "@jupyterlab/coreutils": "^6.1.0", - "@jupyterlab/debugger": "^4.1.0", - "@jupyterlab/docregistry": "^4.1.0", - "@jupyterlab/fileeditor": "^4.1.0", - "@jupyterlab/logconsole": "^4.1.0", - "@jupyterlab/notebook": "^4.1.0", - "@jupyterlab/rendermime": "^4.1.0", - "@jupyterlab/services": "^7.1.0", - "@jupyterlab/settingregistry": "^4.1.0", - "@jupyterlab/translation": "^4.1.0" + "@jupyterlab/application": "^4.1.5", + "@jupyterlab/apputils": "^4.2.5", + "@jupyterlab/cells": "^4.1.5", + "@jupyterlab/codeeditor": "^4.1.5", + "@jupyterlab/console": "^4.1.5", + "@jupyterlab/coreutils": "^6.1.5", + "@jupyterlab/debugger": "^4.1.5", + "@jupyterlab/docregistry": "^4.1.5", + "@jupyterlab/fileeditor": "^4.1.5", + "@jupyterlab/logconsole": "^4.1.5", + "@jupyterlab/notebook": "^4.1.5", + "@jupyterlab/rendermime": "^4.1.5", + "@jupyterlab/services": "^7.1.5", + "@jupyterlab/settingregistry": "^4.1.5", + "@jupyterlab/translation": "^4.1.5" }, "devDependencies": { - "@jupyterlab/testing": "^4.1.0", + "@jupyterlab/testing": "^4.1.5", "@types/jest": "^29.2.0", "@types/react-dom": "^18.0.9", "rimraf": "~5.0.5", diff --git a/packages/debugger/package.json b/packages/debugger/package.json index 89e1fa0901c8..ccc18f10d36e 100644 --- a/packages/debugger/package.json +++ b/packages/debugger/package.json @@ -1,6 +1,6 @@ { "name": "@jupyterlab/debugger", - "version": "4.1.0", + "version": "4.1.5", "description": "JupyterLab - Debugger Extension", "keywords": [ "jupyter", @@ -52,21 +52,21 @@ "@codemirror/state": "^6.2.0", "@codemirror/view": "^6.9.6", "@jupyter/ydoc": "^1.1.1", - "@jupyterlab/application": "^4.1.0", - "@jupyterlab/apputils": "^4.2.0", - "@jupyterlab/cells": "^4.1.0", - "@jupyterlab/codeeditor": "^4.1.0", - "@jupyterlab/codemirror": "^4.1.0", - "@jupyterlab/console": "^4.1.0", - "@jupyterlab/coreutils": "^6.1.0", - "@jupyterlab/docregistry": "^4.1.0", - "@jupyterlab/fileeditor": "^4.1.0", - "@jupyterlab/notebook": "^4.1.0", - "@jupyterlab/observables": "^5.1.0", - "@jupyterlab/rendermime": "^4.1.0", - "@jupyterlab/services": "^7.1.0", - "@jupyterlab/translation": "^4.1.0", - "@jupyterlab/ui-components": "^4.1.0", + "@jupyterlab/application": "^4.1.5", + "@jupyterlab/apputils": "^4.2.5", + "@jupyterlab/cells": "^4.1.5", + "@jupyterlab/codeeditor": "^4.1.5", + "@jupyterlab/codemirror": "^4.1.5", + "@jupyterlab/console": "^4.1.5", + "@jupyterlab/coreutils": "^6.1.5", + "@jupyterlab/docregistry": "^4.1.5", + "@jupyterlab/fileeditor": "^4.1.5", + "@jupyterlab/notebook": "^4.1.5", + "@jupyterlab/observables": "^5.1.5", + "@jupyterlab/rendermime": "^4.1.5", + "@jupyterlab/services": "^7.1.5", + "@jupyterlab/translation": "^4.1.5", + "@jupyterlab/ui-components": "^4.1.5", "@lumino/algorithm": "^2.0.1", "@lumino/commands": "^2.2.0", "@lumino/coreutils": "^2.1.2", @@ -80,7 +80,7 @@ "react": "^18.2.0" }, "devDependencies": { - "@jupyterlab/testing": "^4.1.0", + "@jupyterlab/testing": "^4.1.5", "@types/jest": "^29.2.0", "canvas": "^2.11.2", "jest": "^29.2.0", diff --git a/packages/docmanager-extension/package.json b/packages/docmanager-extension/package.json index 96e114fb3346..438b5688b0e5 100644 --- a/packages/docmanager-extension/package.json +++ b/packages/docmanager-extension/package.json @@ -1,6 +1,6 @@ { "name": "@jupyterlab/docmanager-extension", - "version": "4.1.0", + "version": "4.1.5", "description": "JupyterLab - Document Manager Extension", "homepage": "https://github.com/jupyterlab/jupyterlab", "bugs": { @@ -38,16 +38,16 @@ "watch": "tsc -b --watch" }, "dependencies": { - "@jupyterlab/application": "^4.1.0", - "@jupyterlab/apputils": "^4.2.0", - "@jupyterlab/coreutils": "^6.1.0", - "@jupyterlab/docmanager": "^4.1.0", - "@jupyterlab/docregistry": "^4.1.0", - "@jupyterlab/services": "^7.1.0", - "@jupyterlab/settingregistry": "^4.1.0", - "@jupyterlab/statusbar": "^4.1.0", - "@jupyterlab/translation": "^4.1.0", - "@jupyterlab/ui-components": "^4.1.0", + "@jupyterlab/application": "^4.1.5", + "@jupyterlab/apputils": "^4.2.5", + "@jupyterlab/coreutils": "^6.1.5", + "@jupyterlab/docmanager": "^4.1.5", + "@jupyterlab/docregistry": "^4.1.5", + "@jupyterlab/services": "^7.1.5", + "@jupyterlab/settingregistry": "^4.1.5", + "@jupyterlab/statusbar": "^4.1.5", + "@jupyterlab/translation": "^4.1.5", + "@jupyterlab/ui-components": "^4.1.5", "@lumino/algorithm": "^2.0.1", "@lumino/commands": "^2.2.0", "@lumino/coreutils": "^2.1.2", diff --git a/packages/docmanager/package.json b/packages/docmanager/package.json index a8a7db320663..5866f4c79c59 100644 --- a/packages/docmanager/package.json +++ b/packages/docmanager/package.json @@ -1,6 +1,6 @@ { "name": "@jupyterlab/docmanager", - "version": "4.1.0", + "version": "4.1.5", "description": "JupyterLab - Document Manager", "homepage": "https://github.com/jupyterlab/jupyterlab", "bugs": { @@ -42,13 +42,13 @@ "watch": "npm run test -- --watch" }, "dependencies": { - "@jupyterlab/apputils": "^4.2.0", - "@jupyterlab/coreutils": "^6.1.0", - "@jupyterlab/docregistry": "^4.1.0", - "@jupyterlab/services": "^7.1.0", - "@jupyterlab/statusbar": "^4.1.0", - "@jupyterlab/translation": "^4.1.0", - "@jupyterlab/ui-components": "^4.1.0", + "@jupyterlab/apputils": "^4.2.5", + "@jupyterlab/coreutils": "^6.1.5", + "@jupyterlab/docregistry": "^4.1.5", + "@jupyterlab/services": "^7.1.5", + "@jupyterlab/statusbar": "^4.1.5", + "@jupyterlab/translation": "^4.1.5", + "@jupyterlab/ui-components": "^4.1.5", "@lumino/algorithm": "^2.0.1", "@lumino/coreutils": "^2.1.2", "@lumino/disposable": "^2.1.2", @@ -59,7 +59,7 @@ "react": "^18.2.0" }, "devDependencies": { - "@jupyterlab/testing": "^4.1.0", + "@jupyterlab/testing": "^4.1.5", "@types/jest": "^29.2.0", "jest": "^29.2.0", "rimraf": "~5.0.5", diff --git a/packages/docregistry/package.json b/packages/docregistry/package.json index f483b8fc4955..cb62055648dd 100644 --- a/packages/docregistry/package.json +++ b/packages/docregistry/package.json @@ -1,6 +1,6 @@ { "name": "@jupyterlab/docregistry", - "version": "4.1.0", + "version": "4.1.5", "description": "JupyterLab - Document Registry", "homepage": "https://github.com/jupyterlab/jupyterlab", "bugs": { @@ -43,15 +43,15 @@ }, "dependencies": { "@jupyter/ydoc": "^1.1.1", - "@jupyterlab/apputils": "^4.2.0", - "@jupyterlab/codeeditor": "^4.1.0", - "@jupyterlab/coreutils": "^6.1.0", - "@jupyterlab/observables": "^5.1.0", - "@jupyterlab/rendermime": "^4.1.0", - "@jupyterlab/rendermime-interfaces": "^3.9.0", - "@jupyterlab/services": "^7.1.0", - "@jupyterlab/translation": "^4.1.0", - "@jupyterlab/ui-components": "^4.1.0", + "@jupyterlab/apputils": "^4.2.5", + "@jupyterlab/codeeditor": "^4.1.5", + "@jupyterlab/coreutils": "^6.1.5", + "@jupyterlab/observables": "^5.1.5", + "@jupyterlab/rendermime": "^4.1.5", + "@jupyterlab/rendermime-interfaces": "^3.9.5", + "@jupyterlab/services": "^7.1.5", + "@jupyterlab/translation": "^4.1.5", + "@jupyterlab/ui-components": "^4.1.5", "@lumino/algorithm": "^2.0.1", "@lumino/coreutils": "^2.1.2", "@lumino/disposable": "^2.1.2", @@ -62,7 +62,7 @@ "react": "^18.2.0" }, "devDependencies": { - "@jupyterlab/testing": "^4.1.0", + "@jupyterlab/testing": "^4.1.5", "@types/jest": "^29.2.0", "jest": "^29.2.0", "rimraf": "~5.0.5", diff --git a/packages/documentsearch-extension/package.json b/packages/documentsearch-extension/package.json index c11021ec530e..7a7132ff796c 100644 --- a/packages/documentsearch-extension/package.json +++ b/packages/documentsearch-extension/package.json @@ -1,6 +1,6 @@ { "name": "@jupyterlab/documentsearch-extension", - "version": "4.1.0", + "version": "4.1.5", "description": "JupyterLab - Document Search Extension", "homepage": "https://github.com/jupyterlab/jupyterlab", "bugs": { @@ -34,11 +34,11 @@ "watch": "tsc -w --listEmittedFiles" }, "dependencies": { - "@jupyterlab/application": "^4.1.0", - "@jupyterlab/apputils": "^4.2.0", - "@jupyterlab/documentsearch": "^4.1.0", - "@jupyterlab/settingregistry": "^4.1.0", - "@jupyterlab/translation": "^4.1.0", + "@jupyterlab/application": "^4.1.5", + "@jupyterlab/apputils": "^4.2.5", + "@jupyterlab/documentsearch": "^4.1.5", + "@jupyterlab/settingregistry": "^4.1.5", + "@jupyterlab/translation": "^4.1.5", "@lumino/commands": "^2.2.0", "@lumino/widgets": "^2.3.1" }, diff --git a/packages/documentsearch/package.json b/packages/documentsearch/package.json index 133f66bfcf47..fd689720fe1a 100644 --- a/packages/documentsearch/package.json +++ b/packages/documentsearch/package.json @@ -1,6 +1,6 @@ { "name": "@jupyterlab/documentsearch", - "version": "4.1.0", + "version": "4.1.5", "description": "JupyterLab - Document Search", "homepage": "https://github.com/jupyterlab/jupyterlab", "bugs": { @@ -38,9 +38,9 @@ "watch": "tsc -w --listEmittedFiles" }, "dependencies": { - "@jupyterlab/apputils": "^4.2.0", - "@jupyterlab/translation": "^4.1.0", - "@jupyterlab/ui-components": "^4.1.0", + "@jupyterlab/apputils": "^4.2.5", + "@jupyterlab/translation": "^4.1.5", + "@jupyterlab/ui-components": "^4.1.5", "@lumino/commands": "^2.2.0", "@lumino/coreutils": "^2.1.2", "@lumino/disposable": "^2.1.2", @@ -51,7 +51,7 @@ "react": "^18.2.0" }, "devDependencies": { - "@jupyterlab/testing": "^4.1.0", + "@jupyterlab/testing": "^4.1.5", "@types/jest": "^29.2.0", "jest": "^29.2.0", "rimraf": "~5.0.5", diff --git a/packages/extensionmanager-extension/package.json b/packages/extensionmanager-extension/package.json index e4487fa936b4..5cf62dd4b455 100644 --- a/packages/extensionmanager-extension/package.json +++ b/packages/extensionmanager-extension/package.json @@ -1,6 +1,6 @@ { "name": "@jupyterlab/extensionmanager-extension", - "version": "4.1.0", + "version": "4.1.5", "description": "JupyterLab - Extension Manager Extension", "homepage": "https://github.com/jupyterlab/jupyterlab", "bugs": { @@ -39,12 +39,12 @@ "watch": "tsc -b --watch" }, "dependencies": { - "@jupyterlab/application": "^4.1.0", - "@jupyterlab/apputils": "^4.2.0", - "@jupyterlab/extensionmanager": "^4.1.0", - "@jupyterlab/settingregistry": "^4.1.0", - "@jupyterlab/translation": "^4.1.0", - "@jupyterlab/ui-components": "^4.1.0" + "@jupyterlab/application": "^4.1.5", + "@jupyterlab/apputils": "^4.2.5", + "@jupyterlab/extensionmanager": "^4.1.5", + "@jupyterlab/settingregistry": "^4.1.5", + "@jupyterlab/translation": "^4.1.5", + "@jupyterlab/ui-components": "^4.1.5" }, "devDependencies": { "rimraf": "~5.0.5", diff --git a/packages/extensionmanager/package.json b/packages/extensionmanager/package.json index b7aa49deff85..611d464c9750 100644 --- a/packages/extensionmanager/package.json +++ b/packages/extensionmanager/package.json @@ -1,6 +1,6 @@ { "name": "@jupyterlab/extensionmanager", - "version": "4.1.0", + "version": "4.1.5", "description": "JupyterLab - Extension Manager", "homepage": "https://github.com/jupyterlab/jupyterlab", "bugs": { @@ -37,11 +37,11 @@ "watch": "tsc -b --watch" }, "dependencies": { - "@jupyterlab/apputils": "^4.2.0", - "@jupyterlab/coreutils": "^6.1.0", - "@jupyterlab/services": "^7.1.0", - "@jupyterlab/translation": "^4.1.0", - "@jupyterlab/ui-components": "^4.1.0", + "@jupyterlab/apputils": "^4.2.5", + "@jupyterlab/coreutils": "^6.1.5", + "@jupyterlab/services": "^7.1.5", + "@jupyterlab/translation": "^4.1.5", + "@jupyterlab/ui-components": "^4.1.5", "@lumino/messaging": "^2.0.1", "@lumino/polling": "^2.1.2", "@lumino/widgets": "^2.3.1", diff --git a/packages/extensionmanager/src/widget.tsx b/packages/extensionmanager/src/widget.tsx index 78335c44ef2e..ba2d33678ce9 100644 --- a/packages/extensionmanager/src/widget.tsx +++ b/packages/extensionmanager/src/widget.tsx @@ -100,7 +100,7 @@ function ListEntry(props: ListEntry.IProperties): React.ReactElement { )} onClick={() => window.open( - 'https://jupyterlab.readthedocs.io/en/latest/user/extensions.html' + 'https://jupyterlab.readthedocs.io/en/stable/user/extensions.html' ) } /> @@ -415,7 +415,7 @@ to work, this panel needs to fetch data from web services. Do you agree to activate this feature?`)}
diff --git a/packages/filebrowser-extension/package.json b/packages/filebrowser-extension/package.json index f9ee98bac741..a324108a176c 100644 --- a/packages/filebrowser-extension/package.json +++ b/packages/filebrowser-extension/package.json @@ -1,6 +1,6 @@ { "name": "@jupyterlab/filebrowser-extension", - "version": "4.1.0", + "version": "4.1.5", "description": "JupyterLab - Filebrowser Widget Extension", "homepage": "https://github.com/jupyterlab/jupyterlab", "bugs": { @@ -38,18 +38,18 @@ "watch": "tsc -b --watch" }, "dependencies": { - "@jupyterlab/application": "^4.1.0", - "@jupyterlab/apputils": "^4.2.0", - "@jupyterlab/coreutils": "^6.1.0", - "@jupyterlab/docmanager": "^4.1.0", - "@jupyterlab/docregistry": "^4.1.0", - "@jupyterlab/filebrowser": "^4.1.0", - "@jupyterlab/services": "^7.1.0", - "@jupyterlab/settingregistry": "^4.1.0", - "@jupyterlab/statedb": "^4.1.0", - "@jupyterlab/statusbar": "^4.1.0", - "@jupyterlab/translation": "^4.1.0", - "@jupyterlab/ui-components": "^4.1.0", + "@jupyterlab/application": "^4.1.5", + "@jupyterlab/apputils": "^4.2.5", + "@jupyterlab/coreutils": "^6.1.5", + "@jupyterlab/docmanager": "^4.1.5", + "@jupyterlab/docregistry": "^4.1.5", + "@jupyterlab/filebrowser": "^4.1.5", + "@jupyterlab/services": "^7.1.5", + "@jupyterlab/settingregistry": "^4.1.5", + "@jupyterlab/statedb": "^4.1.5", + "@jupyterlab/statusbar": "^4.1.5", + "@jupyterlab/translation": "^4.1.5", + "@jupyterlab/ui-components": "^4.1.5", "@lumino/algorithm": "^2.0.1", "@lumino/commands": "^2.2.0", "@lumino/widgets": "^2.3.1" diff --git a/packages/filebrowser/package.json b/packages/filebrowser/package.json index fe7353535e41..7702a0281903 100644 --- a/packages/filebrowser/package.json +++ b/packages/filebrowser/package.json @@ -1,6 +1,6 @@ { "name": "@jupyterlab/filebrowser", - "version": "4.1.0", + "version": "4.1.5", "description": "JupyterLab - FileBrowser Widget", "homepage": "https://github.com/jupyterlab/jupyterlab", "bugs": { @@ -42,15 +42,15 @@ "watch": "tsc -b --watch" }, "dependencies": { - "@jupyterlab/apputils": "^4.2.0", - "@jupyterlab/coreutils": "^6.1.0", - "@jupyterlab/docmanager": "^4.1.0", - "@jupyterlab/docregistry": "^4.1.0", - "@jupyterlab/services": "^7.1.0", - "@jupyterlab/statedb": "^4.1.0", - "@jupyterlab/statusbar": "^4.1.0", - "@jupyterlab/translation": "^4.1.0", - "@jupyterlab/ui-components": "^4.1.0", + "@jupyterlab/apputils": "^4.2.5", + "@jupyterlab/coreutils": "^6.1.5", + "@jupyterlab/docmanager": "^4.1.5", + "@jupyterlab/docregistry": "^4.1.5", + "@jupyterlab/services": "^7.1.5", + "@jupyterlab/statedb": "^4.1.5", + "@jupyterlab/statusbar": "^4.1.5", + "@jupyterlab/translation": "^4.1.5", + "@jupyterlab/ui-components": "^4.1.5", "@lumino/algorithm": "^2.0.1", "@lumino/coreutils": "^2.1.2", "@lumino/disposable": "^2.1.2", @@ -64,7 +64,7 @@ "react": "^18.2.0" }, "devDependencies": { - "@jupyterlab/testing": "^4.1.0", + "@jupyterlab/testing": "^4.1.5", "@types/jest": "^29.2.0", "jest": "^29.2.0", "rimraf": "~5.0.5", diff --git a/packages/filebrowser/src/browser.ts b/packages/filebrowser/src/browser.ts index cc280bd3133b..cc14df63cf94 100644 --- a/packages/filebrowser/src/browser.ts +++ b/packages/filebrowser/src/browser.ts @@ -2,6 +2,7 @@ // Distributed under the terms of the Modified BSD License. import { showErrorMessage } from '@jupyterlab/apputils'; +import { PathExt } from '@jupyterlab/coreutils'; import { IDocumentManager } from '@jupyterlab/docmanager'; import { Contents, ServerConnection } from '@jupyterlab/services'; import { ITranslator, nullTranslator } from '@jupyterlab/translation'; @@ -252,6 +253,11 @@ export class FileBrowser extends SidePanel { private async _createNew( options: Contents.ICreateOptions ): Promise { + // normalize the path if the file is created from a custom drive + if (options.path) { + const localPath = this._manager.services.contents.localPath(options.path); + options.path = this._toDrivePath(this.model.driveName, localPath); + } try { const model = await this._manager.newUntitled(options); await this.listing.selectItemByName(model.name, true); @@ -403,6 +409,23 @@ export class FileBrowser extends SidePanel { } } + /** + * Given a drive name and a local path, return the full + * drive path which includes the drive name and the local path. + * + * @param driveName: the name of the drive + * @param localPath: the local path on the drive. + * + * @returns the full drive path + */ + private _toDrivePath(driveName: string, localPath: string): string { + if (driveName === '') { + return localPath; + } else { + return `${driveName}:${PathExt.removeSlash(localPath)}`; + } + } + protected listing: DirListing; protected crumbs: BreadCrumbs; protected mainPanel: Panel; diff --git a/packages/filebrowser/src/listing.ts b/packages/filebrowser/src/listing.ts index c5a60b830970..050a4094e02a 100644 --- a/packages/filebrowser/src/listing.ts +++ b/packages/filebrowser/src/listing.ts @@ -647,6 +647,28 @@ export class DirListing extends Widget { * @returns A promise that resolves when the name is selected. */ async selectItemByName(name: string, focus: boolean = false): Promise { + return this._selectItemByName(name, focus); + } + + /** + * Select an item by name. + * + * @param name - The name of the item to select. + * @param focus - Whether to move focus to the selected item. + * @param force - Whether to proceed with selection even if the file was already selected. + * + * @returns A promise that resolves when the name is selected. + */ + private async _selectItemByName( + name: string, + focus: boolean = false, + force: boolean = false + ): Promise { + if (!force && this.isSelected(name)) { + // Avoid API polling and DOM updates if already selected + return; + } + // Make sure the file is available. await this.model.refresh(); @@ -662,7 +684,6 @@ export class DirListing extends Widget { MessageLoop.sendMessage(this, Widget.Msg.UpdateRequest); ElementExt.scrollIntoViewIfNeeded(this.contentNode, this._items[index]); } - /** * Handle the DOM events for the directory listing. * @@ -1935,7 +1956,7 @@ export class DirListing extends Widget { this.selection[item.path] ) { try { - await this.selectItemByName(finalFilename, true); + await this._selectItemByName(finalFilename, true, true); } catch { // do nothing console.warn('After rename, failed to select file', finalFilename); diff --git a/packages/filebrowser/style/base.css b/packages/filebrowser/style/base.css index 8a69e1f9c1b2..9247008308ae 100644 --- a/packages/filebrowser/style/base.css +++ b/packages/filebrowser/style/base.css @@ -276,17 +276,23 @@ user-select: none; } -.jp-DirListing-itemText:focus { +.jp-DirListing-item:has(.jp-DirListing-itemText:focus-visible) { + /* Targeting `.jp-DirListing-itemText` specifically to avoid an extra outline + when it gets replaced with `jp-DirListing-editor` when editing the file name */ outline-width: 2px; outline-color: var(--jp-inverse-layout-color1); outline-style: solid; - outline-offset: 1px; + outline-offset: -4px; } -.jp-DirListing-item.jp-mod-selected .jp-DirListing-itemText:focus { +.jp-DirListing-item.jp-mod-selected:focus-within { outline-color: var(--jp-layout-color1); } +.jp-DirListing-item > .jp-DirListing-itemText:focus { + outline: 0; +} + .jp-DirListing-itemModified { flex: 0 0 125px; text-align: right; diff --git a/packages/filebrowser/test/browser.spec.ts b/packages/filebrowser/test/browser.spec.ts index eeb89e5bfa15..9e1244661aee 100644 --- a/packages/filebrowser/test/browser.spec.ts +++ b/packages/filebrowser/test/browser.spec.ts @@ -10,6 +10,7 @@ import { DocumentManager, IDocumentManager } from '@jupyterlab/docmanager'; import { DocumentRegistry, TextModelFactory } from '@jupyterlab/docregistry'; import { ServiceManager } from '@jupyterlab/services'; import { signalToPromise } from '@jupyterlab/testing'; +import { Drive } from '@jupyterlab/services'; import { ServiceManagerMock } from '@jupyterlab/services/lib/testutils'; import { DocumentWidgetOpenerMock } from '@jupyterlab/docregistry/lib/testutils'; import { simulate } from 'simulate-event'; @@ -130,3 +131,67 @@ describe('filebrowser/browser', () => { }); }); }); + +describe('FileBrowser with Drives', () => { + const DRIVE_NAME = 'TestDrive'; + let fileBrowser: TestFileBrowser; + let manager: IDocumentManager; + let serviceManager: ServiceManager.IManager; + let registry: DocumentRegistry; + let model: FilterFileBrowserModel; + + beforeAll(async () => { + const opener = new DocumentWidgetOpenerMock(); + + registry = new DocumentRegistry({ + textModelFactory: new TextModelFactory() + }); + serviceManager = new ServiceManagerMock(); + manager = new DocumentManager({ + registry, + opener, + manager: serviceManager + }); + + const drive = new Drive({ + name: DRIVE_NAME, + serverSettings: serviceManager.serverSettings + }); + serviceManager.contents.addDrive(drive); + model = new FilterFileBrowserModel({ manager, driveName: drive.name }); + }); + + beforeEach(() => { + const options: FileBrowser.IOptions = { + model, + id: '' + }; + fileBrowser = new TestFileBrowser(options); + Widget.attach(fileBrowser, document.body); + }); + + describe('#createNewFile', () => { + it('should create the file in the drive', async () => { + const created = fileBrowser.createNewFile({ ext: '.txt' }); + await signalToPromise(fileBrowser.renameCalled); + const editNode = document.querySelector(`.${EDITOR_CLASS}`); + if (!editNode) { + throw new Error('Edit node not found'); + } + const itemNode = Array.from( + document.querySelectorAll(`.${ITEM_CLASS}`) + ).find(el => { + return el.contains(editNode); + }); + if (!itemNode) { + throw new Error('Item node not found'); + } + simulate(editNode, 'keydown', { + keyCode: 13, + key: 'Enter' + }); + const fileModel = await created; + expect(fileModel.path).toContain(DRIVE_NAME); + }); + }); +}); diff --git a/packages/filebrowser/test/listing.spec.ts b/packages/filebrowser/test/listing.spec.ts index 71f89ac70a40..9a2f88650d91 100644 --- a/packages/filebrowser/test/listing.spec.ts +++ b/packages/filebrowser/test/listing.spec.ts @@ -7,7 +7,7 @@ import { DocumentManager } from '@jupyterlab/docmanager'; import { DocumentRegistry } from '@jupyterlab/docregistry'; import { DocumentWidgetOpenerMock } from '@jupyterlab/docregistry/lib/testutils'; import { ServiceManagerMock } from '@jupyterlab/services/lib/testutils'; -import { signalToPromise } from '@jupyterlab/testing'; +import { framePromise, signalToPromise } from '@jupyterlab/testing'; import { Signal } from '@lumino/signaling'; import { Widget } from '@lumino/widgets'; import expect from 'expect'; @@ -101,6 +101,42 @@ describe('filebrowser/listing', () => { }); }); + describe('#selectItemByName()', () => { + it('should select item in the current directory by name', async () => { + const name = [...dirListing.sortedItems()][2].name; + expect(dirListing.isSelected(name)).toBe(false); + await dirListing.selectItemByName(name); + expect(dirListing.isSelected(name)).toBe(true); + }); + + it('should trigger update when selecting an item', async () => { + const name = [...dirListing.sortedItems()][2].name; + let updateEmitted = false; + const listener = () => { + updateEmitted = true; + }; + dirListing.updated.connect(listener); + await dirListing.selectItemByName(name); + await framePromise(); + dirListing.updated.disconnect(listener); + expect(updateEmitted).toBe(true); + }); + + it('should be a no-op if the item is already selected', async () => { + const name = [...dirListing.sortedItems()][2].name; + await dirListing.selectItemByName(name); + let updateEmitted = false; + const listener = () => { + updateEmitted = true; + }; + dirListing.updated.connect(listener); + await dirListing.selectItemByName(name); + await framePromise(); + dirListing.updated.disconnect(listener); + expect(updateEmitted).toBe(false); + }); + }); + describe('#rename', () => { it('backspace during rename does not trigger goUp method', async () => { dirListing.selectNext(); diff --git a/packages/fileeditor-extension/package.json b/packages/fileeditor-extension/package.json index 39d6f4d9cc69..a97f0041c9dd 100644 --- a/packages/fileeditor-extension/package.json +++ b/packages/fileeditor-extension/package.json @@ -1,6 +1,6 @@ { "name": "@jupyterlab/fileeditor-extension", - "version": "4.1.0", + "version": "4.1.5", "description": "JupyterLab - Editor Widget Extension", "homepage": "https://github.com/jupyterlab/jupyterlab", "bugs": { @@ -40,28 +40,28 @@ "dependencies": { "@codemirror/commands": "^6.2.3", "@codemirror/search": "^6.3.0", - "@jupyterlab/application": "^4.1.0", - "@jupyterlab/apputils": "^4.2.0", - "@jupyterlab/codeeditor": "^4.1.0", - "@jupyterlab/codemirror": "^4.1.0", - "@jupyterlab/completer": "^4.1.0", - "@jupyterlab/console": "^4.1.0", - "@jupyterlab/coreutils": "^6.1.0", - "@jupyterlab/docregistry": "^4.1.0", - "@jupyterlab/documentsearch": "^4.1.0", - "@jupyterlab/filebrowser": "^4.1.0", - "@jupyterlab/fileeditor": "^4.1.0", - "@jupyterlab/launcher": "^4.1.0", - "@jupyterlab/lsp": "^4.1.0", - "@jupyterlab/mainmenu": "^4.1.0", - "@jupyterlab/observables": "^5.1.0", - "@jupyterlab/rendermime-interfaces": "^3.9.0", - "@jupyterlab/services": "^7.1.0", - "@jupyterlab/settingregistry": "^4.1.0", - "@jupyterlab/statusbar": "^4.1.0", - "@jupyterlab/toc": "^6.1.0", - "@jupyterlab/translation": "^4.1.0", - "@jupyterlab/ui-components": "^4.1.0", + "@jupyterlab/application": "^4.1.5", + "@jupyterlab/apputils": "^4.2.5", + "@jupyterlab/codeeditor": "^4.1.5", + "@jupyterlab/codemirror": "^4.1.5", + "@jupyterlab/completer": "^4.1.5", + "@jupyterlab/console": "^4.1.5", + "@jupyterlab/coreutils": "^6.1.5", + "@jupyterlab/docregistry": "^4.1.5", + "@jupyterlab/documentsearch": "^4.1.5", + "@jupyterlab/filebrowser": "^4.1.5", + "@jupyterlab/fileeditor": "^4.1.5", + "@jupyterlab/launcher": "^4.1.5", + "@jupyterlab/lsp": "^4.1.5", + "@jupyterlab/mainmenu": "^4.1.5", + "@jupyterlab/observables": "^5.1.5", + "@jupyterlab/rendermime-interfaces": "^3.9.5", + "@jupyterlab/services": "^7.1.5", + "@jupyterlab/settingregistry": "^4.1.5", + "@jupyterlab/statusbar": "^4.1.5", + "@jupyterlab/toc": "^6.1.5", + "@jupyterlab/translation": "^4.1.5", + "@jupyterlab/ui-components": "^4.1.5", "@lumino/algorithm": "^2.0.1", "@lumino/commands": "^2.2.0", "@lumino/coreutils": "^2.1.2", diff --git a/packages/fileeditor-extension/src/commands.ts b/packages/fileeditor-extension/src/commands.ts index 404f3676d7f1..9913c4d6ab73 100644 --- a/packages/fileeditor-extension/src/commands.ts +++ b/packages/fileeditor-extension/src/commands.ts @@ -846,9 +846,8 @@ export namespace Commands { if (!widget) { return false; } - // Ideally enable it when there are undo events stored - // Reference issue #8590: Code mirror editor could expose the history of undo/redo events - return true; + + return widget.editor.model.sharedModel.canUndo(); }, icon: undoIcon.bindprops({ stylesheet: 'menuItem' }), label: trans.__('Undo') @@ -877,9 +876,8 @@ export namespace Commands { if (!widget) { return false; } - // Ideally enable it when there are redo events stored - // Reference issue #8590: Code mirror editor could expose the history of undo/redo events - return true; + + return widget.editor.model.sharedModel.canRedo(); }, icon: redoIcon.bindprops({ stylesheet: 'menuItem' }), label: trans.__('Redo') diff --git a/packages/fileeditor/package.json b/packages/fileeditor/package.json index 87a6db41504a..1e184f6a27e9 100644 --- a/packages/fileeditor/package.json +++ b/packages/fileeditor/package.json @@ -1,6 +1,6 @@ { "name": "@jupyterlab/fileeditor", - "version": "4.1.0", + "version": "4.1.5", "description": "JupyterLab - Editor Widget", "homepage": "https://github.com/jupyterlab/jupyterlab", "bugs": { @@ -41,17 +41,17 @@ }, "dependencies": { "@jupyter/ydoc": "^1.1.1", - "@jupyterlab/apputils": "^4.2.0", - "@jupyterlab/codeeditor": "^4.1.0", - "@jupyterlab/codemirror": "^4.1.0", - "@jupyterlab/coreutils": "^6.1.0", - "@jupyterlab/docregistry": "^4.1.0", - "@jupyterlab/documentsearch": "^4.1.0", - "@jupyterlab/lsp": "^4.1.0", - "@jupyterlab/statusbar": "^4.1.0", - "@jupyterlab/toc": "^6.1.0", - "@jupyterlab/translation": "^4.1.0", - "@jupyterlab/ui-components": "^4.1.0", + "@jupyterlab/apputils": "^4.2.5", + "@jupyterlab/codeeditor": "^4.1.5", + "@jupyterlab/codemirror": "^4.1.5", + "@jupyterlab/coreutils": "^6.1.5", + "@jupyterlab/docregistry": "^4.1.5", + "@jupyterlab/documentsearch": "^4.1.5", + "@jupyterlab/lsp": "^4.1.5", + "@jupyterlab/statusbar": "^4.1.5", + "@jupyterlab/toc": "^6.1.5", + "@jupyterlab/translation": "^4.1.5", + "@jupyterlab/ui-components": "^4.1.5", "@lumino/commands": "^2.2.0", "@lumino/coreutils": "^2.1.2", "@lumino/messaging": "^2.0.1", @@ -60,7 +60,7 @@ "regexp-match-indices": "^1.0.2" }, "devDependencies": { - "@jupyterlab/testing": "^4.1.0", + "@jupyterlab/testing": "^4.1.5", "@types/jest": "^29.2.0", "jest": "^29.2.0", "rimraf": "~5.0.5", diff --git a/packages/fileeditor/src/fileeditorlspadapter.ts b/packages/fileeditor/src/fileeditorlspadapter.ts index c8bccd505e94..7b0245aafc0e 100644 --- a/packages/fileeditor/src/fileeditorlspadapter.ts +++ b/packages/fileeditor/src/fileeditorlspadapter.ts @@ -45,6 +45,9 @@ export class FileEditorAdapter extends WidgetLSPAdapter< .then(async () => { await this.initOnceReady(); this._readyDelegate.resolve(); + this._editorAdded.emit({ + editor: this._virtualEditor + }); }) .catch(console.error); } @@ -151,6 +154,9 @@ export class FileEditorAdapter extends WidgetLSPAdapter< if (this.isDisposed) { return; } + this._editorRemoved.emit({ + editor: this._virtualEditor + }); this.editor.model.mimeTypeChanged.disconnect(this.reloadConnection); super.dispose(); } diff --git a/packages/help-extension/package.json b/packages/help-extension/package.json index f7af7d7de44f..ae2d5b6b02cf 100644 --- a/packages/help-extension/package.json +++ b/packages/help-extension/package.json @@ -1,6 +1,6 @@ { "name": "@jupyterlab/help-extension", - "version": "4.1.0", + "version": "4.1.5", "description": "JupyterLab - Help Extension", "homepage": "https://github.com/jupyterlab/jupyterlab", "bugs": { @@ -38,13 +38,13 @@ "watch": "tsc -b --watch" }, "dependencies": { - "@jupyterlab/application": "^4.1.0", - "@jupyterlab/apputils": "^4.2.0", - "@jupyterlab/coreutils": "^6.1.0", - "@jupyterlab/mainmenu": "^4.1.0", - "@jupyterlab/services": "^7.1.0", - "@jupyterlab/translation": "^4.1.0", - "@jupyterlab/ui-components": "^4.1.0", + "@jupyterlab/application": "^4.1.5", + "@jupyterlab/apputils": "^4.2.5", + "@jupyterlab/coreutils": "^6.1.5", + "@jupyterlab/mainmenu": "^4.1.5", + "@jupyterlab/services": "^7.1.5", + "@jupyterlab/translation": "^4.1.5", + "@jupyterlab/ui-components": "^4.1.5", "@lumino/coreutils": "^2.1.2", "@lumino/signaling": "^2.1.2", "@lumino/virtualdom": "^2.0.1", diff --git a/packages/help-extension/src/index.tsx b/packages/help-extension/src/index.tsx index 37a740139d25..8d001e1b8c9f 100644 --- a/packages/help-extension/src/index.tsx +++ b/packages/help-extension/src/index.tsx @@ -298,11 +298,11 @@ const resources: JupyterFrontEndPlugin = { const resources = [ { text: trans.__('JupyterLab Reference'), - url: 'https://jupyterlab.readthedocs.io/en/latest/' + url: 'https://jupyterlab.readthedocs.io/en/stable/' }, { text: trans.__('JupyterLab FAQ'), - url: 'https://jupyterlab.readthedocs.io/en/latest/getting_started/faq.html' + url: 'https://jupyterlab.readthedocs.io/en/stable/getting_started/faq.html' }, { text: trans.__('Jupyter Reference'), diff --git a/packages/htmlviewer-extension/package.json b/packages/htmlviewer-extension/package.json index 55e1b6890d06..4fa86ad3bc8d 100644 --- a/packages/htmlviewer-extension/package.json +++ b/packages/htmlviewer-extension/package.json @@ -1,6 +1,6 @@ { "name": "@jupyterlab/htmlviewer-extension", - "version": "4.1.0", + "version": "4.1.5", "description": "JupyterLab extension to render HTML files", "keywords": [ "jupyter", @@ -35,14 +35,14 @@ "watch": "tsc -w" }, "dependencies": { - "@jupyterlab/application": "^4.1.0", - "@jupyterlab/apputils": "^4.2.0", - "@jupyterlab/docregistry": "^4.1.0", - "@jupyterlab/htmlviewer": "^4.1.0", - "@jupyterlab/observables": "^5.1.0", - "@jupyterlab/settingregistry": "^4.1.0", - "@jupyterlab/translation": "^4.1.0", - "@jupyterlab/ui-components": "^4.1.0" + "@jupyterlab/application": "^4.1.5", + "@jupyterlab/apputils": "^4.2.5", + "@jupyterlab/docregistry": "^4.1.5", + "@jupyterlab/htmlviewer": "^4.1.5", + "@jupyterlab/observables": "^5.1.5", + "@jupyterlab/settingregistry": "^4.1.5", + "@jupyterlab/translation": "^4.1.5", + "@jupyterlab/ui-components": "^4.1.5" }, "devDependencies": { "rimraf": "~5.0.5", diff --git a/packages/htmlviewer/package.json b/packages/htmlviewer/package.json index 0d2c22d1a570..fb5975f9f304 100644 --- a/packages/htmlviewer/package.json +++ b/packages/htmlviewer/package.json @@ -1,6 +1,6 @@ { "name": "@jupyterlab/htmlviewer", - "version": "4.1.0", + "version": "4.1.5", "description": "A viewer for HTML documents.", "homepage": "https://github.com/jupyterlab/jupyterlab", "bugs": { @@ -33,11 +33,11 @@ "watch": "tsc -w --listEmittedFiles" }, "dependencies": { - "@jupyterlab/apputils": "^4.2.0", - "@jupyterlab/coreutils": "^6.1.0", - "@jupyterlab/docregistry": "^4.1.0", - "@jupyterlab/translation": "^4.1.0", - "@jupyterlab/ui-components": "^4.1.0", + "@jupyterlab/apputils": "^4.2.5", + "@jupyterlab/coreutils": "^6.1.5", + "@jupyterlab/docregistry": "^4.1.5", + "@jupyterlab/translation": "^4.1.5", + "@jupyterlab/ui-components": "^4.1.5", "@lumino/coreutils": "^2.1.2", "@lumino/signaling": "^2.1.2", "@lumino/widgets": "^2.3.1", diff --git a/packages/hub-extension/package.json b/packages/hub-extension/package.json index 001b6133b6b6..257159b41043 100644 --- a/packages/hub-extension/package.json +++ b/packages/hub-extension/package.json @@ -1,6 +1,6 @@ { "name": "@jupyterlab/hub-extension", - "version": "4.1.0", + "version": "4.1.5", "description": "JupyterLab integration for JupyterHub", "homepage": "https://github.com/jupyterlab/jupyterlab", "bugs": { @@ -34,11 +34,11 @@ "watch": "tsc -w --listEmittedFiles" }, "dependencies": { - "@jupyterlab/application": "^4.1.0", - "@jupyterlab/apputils": "^4.2.0", - "@jupyterlab/coreutils": "^6.1.0", - "@jupyterlab/services": "^7.1.0", - "@jupyterlab/translation": "^4.1.0" + "@jupyterlab/application": "^4.1.5", + "@jupyterlab/apputils": "^4.2.5", + "@jupyterlab/coreutils": "^6.1.5", + "@jupyterlab/services": "^7.1.5", + "@jupyterlab/translation": "^4.1.5" }, "devDependencies": { "rimraf": "~5.0.5", diff --git a/packages/imageviewer-extension/package.json b/packages/imageviewer-extension/package.json index 63467ab8d1c2..783bd21c5581 100644 --- a/packages/imageviewer-extension/package.json +++ b/packages/imageviewer-extension/package.json @@ -1,6 +1,6 @@ { "name": "@jupyterlab/imageviewer-extension", - "version": "4.1.0", + "version": "4.1.5", "description": "JupyterLab - Image Widget Extension", "homepage": "https://github.com/jupyterlab/jupyterlab", "bugs": { @@ -38,11 +38,11 @@ "watch": "tsc -b --watch" }, "dependencies": { - "@jupyterlab/application": "^4.1.0", - "@jupyterlab/apputils": "^4.2.0", - "@jupyterlab/docregistry": "^4.1.0", - "@jupyterlab/imageviewer": "^4.1.0", - "@jupyterlab/translation": "^4.1.0" + "@jupyterlab/application": "^4.1.5", + "@jupyterlab/apputils": "^4.2.5", + "@jupyterlab/docregistry": "^4.1.5", + "@jupyterlab/imageviewer": "^4.1.5", + "@jupyterlab/translation": "^4.1.5" }, "devDependencies": { "rimraf": "~5.0.5", diff --git a/packages/imageviewer/package.json b/packages/imageviewer/package.json index 0041f9d67699..88809dc02425 100644 --- a/packages/imageviewer/package.json +++ b/packages/imageviewer/package.json @@ -1,6 +1,6 @@ { "name": "@jupyterlab/imageviewer", - "version": "4.1.0", + "version": "4.1.5", "description": "JupyterLab - Image Widget", "homepage": "https://github.com/jupyterlab/jupyterlab", "bugs": { @@ -42,15 +42,15 @@ "watch": "tsc -b --watch" }, "dependencies": { - "@jupyterlab/apputils": "^4.2.0", - "@jupyterlab/coreutils": "^6.1.0", - "@jupyterlab/docregistry": "^4.1.0", + "@jupyterlab/apputils": "^4.2.5", + "@jupyterlab/coreutils": "^6.1.5", + "@jupyterlab/docregistry": "^4.1.5", "@lumino/coreutils": "^2.1.2", "@lumino/messaging": "^2.0.1", "@lumino/widgets": "^2.3.1" }, "devDependencies": { - "@jupyterlab/testing": "^4.1.0", + "@jupyterlab/testing": "^4.1.5", "@types/jest": "^29.2.0", "jest": "^29.2.0", "rimraf": "~5.0.5", diff --git a/packages/inspector-extension/package.json b/packages/inspector-extension/package.json index dbe4c1f76c26..dd9773684278 100644 --- a/packages/inspector-extension/package.json +++ b/packages/inspector-extension/package.json @@ -1,6 +1,6 @@ { "name": "@jupyterlab/inspector-extension", - "version": "4.1.0", + "version": "4.1.5", "description": "JupyterLab - Code Inspector Extension", "homepage": "https://github.com/jupyterlab/jupyterlab", "bugs": { @@ -38,14 +38,14 @@ "watch": "tsc -b --watch" }, "dependencies": { - "@jupyterlab/application": "^4.1.0", - "@jupyterlab/apputils": "^4.2.0", - "@jupyterlab/console": "^4.1.0", - "@jupyterlab/inspector": "^4.1.0", - "@jupyterlab/launcher": "^4.1.0", - "@jupyterlab/notebook": "^4.1.0", - "@jupyterlab/translation": "^4.1.0", - "@jupyterlab/ui-components": "^4.1.0", + "@jupyterlab/application": "^4.1.5", + "@jupyterlab/apputils": "^4.2.5", + "@jupyterlab/console": "^4.1.5", + "@jupyterlab/inspector": "^4.1.5", + "@jupyterlab/launcher": "^4.1.5", + "@jupyterlab/notebook": "^4.1.5", + "@jupyterlab/translation": "^4.1.5", + "@jupyterlab/ui-components": "^4.1.5", "@lumino/widgets": "^2.3.1" }, "devDependencies": { diff --git a/packages/inspector/package.json b/packages/inspector/package.json index d213f818b48a..2e55fb05f85e 100644 --- a/packages/inspector/package.json +++ b/packages/inspector/package.json @@ -1,6 +1,6 @@ { "name": "@jupyterlab/inspector", - "version": "4.1.0", + "version": "4.1.5", "description": "JupyterLab - Code Inspector", "homepage": "https://github.com/jupyterlab/jupyterlab", "bugs": { @@ -42,13 +42,13 @@ "watch": "tsc -b --watch" }, "dependencies": { - "@jupyterlab/apputils": "^4.2.0", - "@jupyterlab/codeeditor": "^4.1.0", - "@jupyterlab/coreutils": "^6.1.0", - "@jupyterlab/rendermime": "^4.1.0", - "@jupyterlab/services": "^7.1.0", - "@jupyterlab/statedb": "^4.1.0", - "@jupyterlab/translation": "^4.1.0", + "@jupyterlab/apputils": "^4.2.5", + "@jupyterlab/codeeditor": "^4.1.5", + "@jupyterlab/coreutils": "^6.1.5", + "@jupyterlab/rendermime": "^4.1.5", + "@jupyterlab/services": "^7.1.5", + "@jupyterlab/statedb": "^4.1.5", + "@jupyterlab/translation": "^4.1.5", "@lumino/coreutils": "^2.1.2", "@lumino/disposable": "^2.1.2", "@lumino/polling": "^2.1.2", @@ -56,7 +56,7 @@ "@lumino/widgets": "^2.3.1" }, "devDependencies": { - "@jupyterlab/testing": "^4.1.0", + "@jupyterlab/testing": "^4.1.5", "@types/jest": "^29.2.0", "jest": "^29.2.0", "rimraf": "~5.0.5", diff --git a/packages/javascript-extension/README.md b/packages/javascript-extension/README.md index 0fb96b16f472..bfbb001c3c16 100644 --- a/packages/javascript-extension/README.md +++ b/packages/javascript-extension/README.md @@ -14,4 +14,4 @@ Javascript('alert("hello world");') ## Development -See the [JupyterLab Contributor Documentation](https://github.com/jupyterlab/jupyterlab/blob/main/CONTRIBUTING.md). +See the [JupyterLab Contributor Documentation](https://github.com/jupyterlab/jupyterlab/blob/4.1.x/CONTRIBUTING.md). diff --git a/packages/javascript-extension/package.json b/packages/javascript-extension/package.json index 0783cfb854f7..9ab52ba14ad1 100644 --- a/packages/javascript-extension/package.json +++ b/packages/javascript-extension/package.json @@ -1,6 +1,6 @@ { "name": "@jupyterlab/javascript-extension", - "version": "4.1.0", + "version": "4.1.5", "description": "JupyterLab - Javascript Renderer", "homepage": "https://github.com/jupyterlab/jupyterlab", "bugs": { @@ -33,8 +33,8 @@ "watch": "tsc -b --watch" }, "dependencies": { - "@jupyterlab/rendermime": "^4.1.0", - "@jupyterlab/rendermime-interfaces": "^3.9.0" + "@jupyterlab/rendermime": "^4.1.5", + "@jupyterlab/rendermime-interfaces": "^3.9.5" }, "devDependencies": { "rimraf": "~5.0.5", diff --git a/packages/json-extension/README.md b/packages/json-extension/README.md index 81c247901c76..6c7280a2af86 100644 --- a/packages/json-extension/README.md +++ b/packages/json-extension/README.md @@ -40,4 +40,4 @@ To render a `.json` file, simply open it: ## Development -See the [JupyterLab Contributor Documentation](https://github.com/jupyterlab/jupyterlab/blob/main/CONTRIBUTING.md). +See the [JupyterLab Contributor Documentation](https://github.com/jupyterlab/jupyterlab/blob/4.1.x/CONTRIBUTING.md). diff --git a/packages/json-extension/package.json b/packages/json-extension/package.json index 81285403a9ef..f7c58bc8c180 100644 --- a/packages/json-extension/package.json +++ b/packages/json-extension/package.json @@ -1,6 +1,6 @@ { "name": "@jupyterlab/json-extension", - "version": "4.1.0", + "version": "4.1.5", "description": "JupyterLab - JSON Renderer", "homepage": "https://github.com/jupyterlab/jupyterlab", "bugs": { @@ -33,11 +33,11 @@ "watch": "tsc -b --watch" }, "dependencies": { - "@jupyterlab/apputils": "^4.2.0", - "@jupyterlab/codemirror": "^4.1.0", - "@jupyterlab/rendermime-interfaces": "^3.9.0", - "@jupyterlab/translation": "^4.1.0", - "@jupyterlab/ui-components": "^4.1.0", + "@jupyterlab/apputils": "^4.2.5", + "@jupyterlab/codemirror": "^4.1.5", + "@jupyterlab/rendermime-interfaces": "^3.9.5", + "@jupyterlab/translation": "^4.1.5", + "@jupyterlab/ui-components": "^4.1.5", "@lezer/highlight": "^1.1.4", "@lumino/coreutils": "^2.1.2", "@lumino/messaging": "^2.0.1", diff --git a/packages/launcher-extension/package.json b/packages/launcher-extension/package.json index c2783f389d6c..c1a0086446c7 100644 --- a/packages/launcher-extension/package.json +++ b/packages/launcher-extension/package.json @@ -1,6 +1,6 @@ { "name": "@jupyterlab/launcher-extension", - "version": "4.1.0", + "version": "4.1.5", "description": "JupyterLab - Launcher Page Extension", "homepage": "https://github.com/jupyterlab/jupyterlab", "bugs": { @@ -38,12 +38,12 @@ "watch": "tsc -b --watch" }, "dependencies": { - "@jupyterlab/application": "^4.1.0", - "@jupyterlab/apputils": "^4.2.0", - "@jupyterlab/filebrowser": "^4.1.0", - "@jupyterlab/launcher": "^4.1.0", - "@jupyterlab/translation": "^4.1.0", - "@jupyterlab/ui-components": "^4.1.0", + "@jupyterlab/application": "^4.1.5", + "@jupyterlab/apputils": "^4.2.5", + "@jupyterlab/filebrowser": "^4.1.5", + "@jupyterlab/launcher": "^4.1.5", + "@jupyterlab/translation": "^4.1.5", + "@jupyterlab/ui-components": "^4.1.5", "@lumino/algorithm": "^2.0.1", "@lumino/coreutils": "^2.1.2", "@lumino/widgets": "^2.3.1" diff --git a/packages/launcher/package.json b/packages/launcher/package.json index 360638eaf731..064f5d20ebe9 100644 --- a/packages/launcher/package.json +++ b/packages/launcher/package.json @@ -1,6 +1,6 @@ { "name": "@jupyterlab/launcher", - "version": "4.1.0", + "version": "4.1.5", "description": "JupyterLab - Launcher Panel", "homepage": "https://github.com/jupyterlab/jupyterlab", "bugs": { @@ -37,9 +37,9 @@ "watch": "tsc -b --watch" }, "dependencies": { - "@jupyterlab/apputils": "^4.2.0", - "@jupyterlab/translation": "^4.1.0", - "@jupyterlab/ui-components": "^4.1.0", + "@jupyterlab/apputils": "^4.2.5", + "@jupyterlab/translation": "^4.1.5", + "@jupyterlab/ui-components": "^4.1.5", "@lumino/algorithm": "^2.0.1", "@lumino/commands": "^2.2.0", "@lumino/coreutils": "^2.1.2", diff --git a/packages/logconsole-extension/package.json b/packages/logconsole-extension/package.json index 2e77db4afb48..bf4a05eccfda 100644 --- a/packages/logconsole-extension/package.json +++ b/packages/logconsole-extension/package.json @@ -1,6 +1,6 @@ { "name": "@jupyterlab/logconsole-extension", - "version": "4.1.0", + "version": "4.1.5", "description": "JupyterLab - Log Console Extension", "homepage": "https://github.com/jupyterlab/jupyterlab", "bugs": { @@ -34,15 +34,15 @@ "watch": "tsc -w --listEmittedFiles" }, "dependencies": { - "@jupyterlab/application": "^4.1.0", - "@jupyterlab/apputils": "^4.2.0", - "@jupyterlab/coreutils": "^6.1.0", - "@jupyterlab/logconsole": "^4.1.0", - "@jupyterlab/rendermime": "^4.1.0", - "@jupyterlab/settingregistry": "^4.1.0", - "@jupyterlab/statusbar": "^4.1.0", - "@jupyterlab/translation": "^4.1.0", - "@jupyterlab/ui-components": "^4.1.0", + "@jupyterlab/application": "^4.1.5", + "@jupyterlab/apputils": "^4.2.5", + "@jupyterlab/coreutils": "^6.1.5", + "@jupyterlab/logconsole": "^4.1.5", + "@jupyterlab/rendermime": "^4.1.5", + "@jupyterlab/settingregistry": "^4.1.5", + "@jupyterlab/statusbar": "^4.1.5", + "@jupyterlab/translation": "^4.1.5", + "@jupyterlab/ui-components": "^4.1.5", "@lumino/coreutils": "^2.1.2", "@lumino/signaling": "^2.1.2", "@lumino/widgets": "^2.3.1", diff --git a/packages/logconsole/package.json b/packages/logconsole/package.json index 3ec8f3bd0b38..ee106d997671 100644 --- a/packages/logconsole/package.json +++ b/packages/logconsole/package.json @@ -1,6 +1,6 @@ { "name": "@jupyterlab/logconsole", - "version": "4.1.0", + "version": "4.1.5", "description": "JupyterLab - Log Console", "homepage": "https://github.com/jupyterlab/jupyterlab", "bugs": { @@ -38,12 +38,12 @@ "watch": "tsc -b --watch" }, "dependencies": { - "@jupyterlab/coreutils": "^6.1.0", - "@jupyterlab/nbformat": "^4.1.0", - "@jupyterlab/outputarea": "^4.1.0", - "@jupyterlab/rendermime": "^4.1.0", - "@jupyterlab/services": "^7.1.0", - "@jupyterlab/translation": "^4.1.0", + "@jupyterlab/coreutils": "^6.1.5", + "@jupyterlab/nbformat": "^4.1.5", + "@jupyterlab/outputarea": "^4.1.5", + "@jupyterlab/rendermime": "^4.1.5", + "@jupyterlab/services": "^7.1.5", + "@jupyterlab/translation": "^4.1.5", "@lumino/coreutils": "^2.1.2", "@lumino/disposable": "^2.1.2", "@lumino/messaging": "^2.0.1", @@ -51,7 +51,7 @@ "@lumino/widgets": "^2.3.1" }, "devDependencies": { - "@jupyterlab/testing": "^4.1.0", + "@jupyterlab/testing": "^4.1.5", "@types/jest": "^29.2.0", "jest": "^29.2.0", "rimraf": "~5.0.5", diff --git a/packages/lsp-extension/package.json b/packages/lsp-extension/package.json index b901edd7690d..b0c4a8cab65f 100644 --- a/packages/lsp-extension/package.json +++ b/packages/lsp-extension/package.json @@ -1,6 +1,6 @@ { "name": "@jupyterlab/lsp-extension", - "version": "4.1.0", + "version": "4.1.5", "description": "", "homepage": "https://github.com/jupyterlab/jupyterlab", "bugs": { @@ -36,13 +36,13 @@ "watch": "tsc -b --watch" }, "dependencies": { - "@jupyterlab/application": "^4.1.0", - "@jupyterlab/apputils": "^4.2.0", - "@jupyterlab/lsp": "^4.1.0", - "@jupyterlab/running": "^4.1.0", - "@jupyterlab/settingregistry": "^4.1.0", - "@jupyterlab/translation": "^4.1.0", - "@jupyterlab/ui-components": "^4.1.0", + "@jupyterlab/application": "^4.1.5", + "@jupyterlab/apputils": "^4.2.5", + "@jupyterlab/lsp": "^4.1.5", + "@jupyterlab/running": "^4.1.5", + "@jupyterlab/settingregistry": "^4.1.5", + "@jupyterlab/translation": "^4.1.5", + "@jupyterlab/ui-components": "^4.1.5", "@lumino/coreutils": "^2.1.2", "@lumino/polling": "^2.1.2", "@lumino/signaling": "^2.1.2", diff --git a/packages/lsp/package.json b/packages/lsp/package.json index 234cc4f6e527..901d7c06f49f 100644 --- a/packages/lsp/package.json +++ b/packages/lsp/package.json @@ -1,6 +1,6 @@ { "name": "@jupyterlab/lsp", - "version": "4.1.0", + "version": "4.1.5", "description": "", "homepage": "https://github.com/jupyterlab/jupyterlab", "bugs": { @@ -41,13 +41,13 @@ "watch": "tsc -b --watch" }, "dependencies": { - "@jupyterlab/apputils": "^4.2.0", - "@jupyterlab/codeeditor": "^4.1.0", - "@jupyterlab/codemirror": "^4.1.0", - "@jupyterlab/coreutils": "^6.1.0", - "@jupyterlab/docregistry": "^4.1.0", - "@jupyterlab/services": "^7.1.0", - "@jupyterlab/translation": "^4.1.0", + "@jupyterlab/apputils": "^4.2.5", + "@jupyterlab/codeeditor": "^4.1.5", + "@jupyterlab/codemirror": "^4.1.5", + "@jupyterlab/coreutils": "^6.1.5", + "@jupyterlab/docregistry": "^4.1.5", + "@jupyterlab/services": "^7.1.5", + "@jupyterlab/translation": "^4.1.5", "@lumino/coreutils": "^2.1.2", "@lumino/disposable": "^2.1.2", "@lumino/signaling": "^2.1.2", @@ -58,7 +58,7 @@ "vscode-ws-jsonrpc": "~1.0.2" }, "devDependencies": { - "@jupyterlab/testing": "^4.1.0", + "@jupyterlab/testing": "^4.1.5", "@types/jest": "^29.2.0", "@types/lodash.mergewith": "^4.6.1", "jest": "^29.2.0", diff --git a/packages/mainmenu-extension/package.json b/packages/mainmenu-extension/package.json index 333b07b52920..df3db7c667e9 100644 --- a/packages/mainmenu-extension/package.json +++ b/packages/mainmenu-extension/package.json @@ -1,6 +1,6 @@ { "name": "@jupyterlab/mainmenu-extension", - "version": "4.1.0", + "version": "4.1.5", "description": "JupyterLab - Main Menu Extension", "homepage": "https://github.com/jupyterlab/jupyterlab", "bugs": { @@ -38,14 +38,14 @@ "watch": "tsc -b --watch" }, "dependencies": { - "@jupyterlab/application": "^4.1.0", - "@jupyterlab/apputils": "^4.2.0", - "@jupyterlab/coreutils": "^6.1.0", - "@jupyterlab/mainmenu": "^4.1.0", - "@jupyterlab/services": "^7.1.0", - "@jupyterlab/settingregistry": "^4.1.0", - "@jupyterlab/translation": "^4.1.0", - "@jupyterlab/ui-components": "^4.1.0", + "@jupyterlab/application": "^4.1.5", + "@jupyterlab/apputils": "^4.2.5", + "@jupyterlab/coreutils": "^6.1.5", + "@jupyterlab/mainmenu": "^4.1.5", + "@jupyterlab/services": "^7.1.5", + "@jupyterlab/settingregistry": "^4.1.5", + "@jupyterlab/translation": "^4.1.5", + "@jupyterlab/ui-components": "^4.1.5", "@lumino/algorithm": "^2.0.1", "@lumino/coreutils": "^2.1.2", "@lumino/disposable": "^2.1.2", diff --git a/packages/mainmenu-extension/schema/plugin.json b/packages/mainmenu-extension/schema/plugin.json index 54fee0640a26..c09fa2b5285c 100644 --- a/packages/mainmenu-extension/schema/plugin.json +++ b/packages/mainmenu-extension/schema/plugin.json @@ -270,22 +270,22 @@ { "command": "kernelmenu:interrupt", "keys": ["I", "I"], - "selector": "[data-jp-kernel-user] :focus:not(:read-write)" + "selector": "[data-jp-kernel-user]:not(.jp-mod-readWrite) :focus:not(:read-write)" }, { "command": "kernelmenu:restart", "keys": ["0", "0"], - "selector": "[data-jp-kernel-user] :focus:not(:read-write)" + "selector": "[data-jp-kernel-user]:not(.jp-mod-readWrite) :focus:not(:read-write)" }, { "command": "kernelmenu:restart-and-clear", "keys": [""], - "selector": "[data-jp-kernel-user] :focus:not(:read-write)" + "selector": "[data-jp-kernel-user]:not(.jp-mod-readWrite) :focus:not(:read-write)" }, { "command": "kernelmenu:shutdown", "keys": [""], - "selector": "[data-jp-kernel-user] :focus:not(:read-write)" + "selector": "[data-jp-kernel-user]:not(.jp-mod-readWrite) :focus:not(:read-write)" }, { "command": "runmenu:restart-and-run-all", diff --git a/packages/mainmenu/package.json b/packages/mainmenu/package.json index 5edcfa797d03..6b99ac33d14d 100644 --- a/packages/mainmenu/package.json +++ b/packages/mainmenu/package.json @@ -1,6 +1,6 @@ { "name": "@jupyterlab/mainmenu", - "version": "4.1.0", + "version": "4.1.5", "description": "JupyterLab - Main Menu", "homepage": "https://github.com/jupyterlab/jupyterlab", "bugs": { @@ -42,16 +42,16 @@ "watch": "tsc -b --watch" }, "dependencies": { - "@jupyterlab/apputils": "^4.2.0", - "@jupyterlab/translation": "^4.1.0", - "@jupyterlab/ui-components": "^4.1.0", + "@jupyterlab/apputils": "^4.2.5", + "@jupyterlab/translation": "^4.1.5", + "@jupyterlab/ui-components": "^4.1.5", "@lumino/algorithm": "^2.0.1", "@lumino/commands": "^2.2.0", "@lumino/coreutils": "^2.1.2", "@lumino/widgets": "^2.3.1" }, "devDependencies": { - "@jupyterlab/testing": "^4.1.0", + "@jupyterlab/testing": "^4.1.5", "@types/jest": "^29.2.0", "jest": "^29.2.0", "rimraf": "~5.0.5", diff --git a/packages/markdownviewer-extension/package.json b/packages/markdownviewer-extension/package.json index 6f35e080d2cb..e4a9f964923f 100644 --- a/packages/markdownviewer-extension/package.json +++ b/packages/markdownviewer-extension/package.json @@ -1,6 +1,6 @@ { "name": "@jupyterlab/markdownviewer-extension", - "version": "4.1.0", + "version": "4.1.5", "description": "JupyterLab - Markdown Renderer Extension", "homepage": "https://github.com/jupyterlab/jupyterlab", "bugs": { @@ -38,14 +38,14 @@ "watch": "tsc -b --watch" }, "dependencies": { - "@jupyterlab/application": "^4.1.0", - "@jupyterlab/apputils": "^4.2.0", - "@jupyterlab/coreutils": "^6.1.0", - "@jupyterlab/markdownviewer": "^4.1.0", - "@jupyterlab/rendermime": "^4.1.0", - "@jupyterlab/settingregistry": "^4.1.0", - "@jupyterlab/toc": "^6.1.0", - "@jupyterlab/translation": "^4.1.0" + "@jupyterlab/application": "^4.1.5", + "@jupyterlab/apputils": "^4.2.5", + "@jupyterlab/coreutils": "^6.1.5", + "@jupyterlab/markdownviewer": "^4.1.5", + "@jupyterlab/rendermime": "^4.1.5", + "@jupyterlab/settingregistry": "^4.1.5", + "@jupyterlab/toc": "^6.1.5", + "@jupyterlab/translation": "^4.1.5" }, "devDependencies": { "rimraf": "~5.0.5", diff --git a/packages/markdownviewer/package.json b/packages/markdownviewer/package.json index d8c6ae02d1a9..2c3ca5971f41 100644 --- a/packages/markdownviewer/package.json +++ b/packages/markdownviewer/package.json @@ -1,6 +1,6 @@ { "name": "@jupyterlab/markdownviewer", - "version": "4.1.0", + "version": "4.1.5", "description": "JupyterLab - Markdown viewer Widget", "homepage": "https://github.com/jupyterlab/jupyterlab", "bugs": { @@ -37,12 +37,12 @@ "watch": "tsc -b --watch" }, "dependencies": { - "@jupyterlab/apputils": "^4.2.0", - "@jupyterlab/coreutils": "^6.1.0", - "@jupyterlab/docregistry": "^4.1.0", - "@jupyterlab/rendermime": "^4.1.0", - "@jupyterlab/toc": "^6.1.0", - "@jupyterlab/translation": "^4.1.0", + "@jupyterlab/apputils": "^4.2.5", + "@jupyterlab/coreutils": "^6.1.5", + "@jupyterlab/docregistry": "^4.1.5", + "@jupyterlab/rendermime": "^4.1.5", + "@jupyterlab/toc": "^6.1.5", + "@jupyterlab/translation": "^4.1.5", "@lumino/coreutils": "^2.1.2", "@lumino/messaging": "^2.0.1", "@lumino/signaling": "^2.1.2", diff --git a/packages/markedparser-extension/package.json b/packages/markedparser-extension/package.json index 65544d48551a..eb2cdfe54c1b 100644 --- a/packages/markedparser-extension/package.json +++ b/packages/markedparser-extension/package.json @@ -1,6 +1,6 @@ { "name": "@jupyterlab/markedparser-extension", - "version": "4.1.0", + "version": "4.1.5", "description": "JupyterLab - Markdown parser provider", "homepage": "https://github.com/jupyterlab/jupyterlab", "bugs": { @@ -36,11 +36,11 @@ "watch": "tsc -b --watch" }, "dependencies": { - "@jupyterlab/application": "^4.1.0", - "@jupyterlab/codemirror": "^4.1.0", - "@jupyterlab/coreutils": "^6.1.0", - "@jupyterlab/mermaid": "^4.1.0", - "@jupyterlab/rendermime": "^4.1.0", + "@jupyterlab/application": "^4.1.5", + "@jupyterlab/codemirror": "^4.1.5", + "@jupyterlab/coreutils": "^6.1.5", + "@jupyterlab/mermaid": "^4.1.5", + "@jupyterlab/rendermime": "^4.1.5", "@lumino/coreutils": "^2.1.2", "marked": "^9.1.2", "marked-gfm-heading-id": "^3.1.0", diff --git a/packages/mathjax-extension/package.json b/packages/mathjax-extension/package.json index 0ea9d2c3d98e..db73e1108a25 100644 --- a/packages/mathjax-extension/package.json +++ b/packages/mathjax-extension/package.json @@ -1,6 +1,6 @@ { "name": "@jupyterlab/mathjax-extension", - "version": "4.1.0", + "version": "4.1.5", "description": "A JupyterLab extension providing MathJax Typesetting", "keywords": [ "jupyter", @@ -43,8 +43,8 @@ "watch": "tsc -b --watch" }, "dependencies": { - "@jupyterlab/application": "^4.1.0", - "@jupyterlab/rendermime": "^4.1.0", + "@jupyterlab/application": "^4.1.5", + "@jupyterlab/rendermime": "^4.1.5", "@lumino/coreutils": "^2.1.2", "mathjax-full": "^3.2.2" }, diff --git a/packages/mermaid-extension/package.json b/packages/mermaid-extension/package.json index 16c0e10d4ec9..a0cdf2c60aac 100644 --- a/packages/mermaid-extension/package.json +++ b/packages/mermaid-extension/package.json @@ -1,6 +1,6 @@ { "name": "@jupyterlab/mermaid-extension", - "version": "4.1.0", + "version": "4.1.5", "description": "JupyterLab - Mermaid Viewer", "homepage": "https://github.com/jupyterlab/jupyterlab", "bugs": { @@ -37,11 +37,11 @@ "watch": "tsc -b --watch" }, "dependencies": { - "@jupyterlab/application": "^4.1.0", - "@jupyterlab/apputils": "^4.2.0", - "@jupyterlab/mermaid": "^4.1.0", - "@jupyterlab/rendermime-interfaces": "^3.9.0", - "@jupyterlab/translation": "^4.1.0" + "@jupyterlab/application": "^4.1.5", + "@jupyterlab/apputils": "^4.2.5", + "@jupyterlab/mermaid": "^4.1.5", + "@jupyterlab/rendermime-interfaces": "^3.9.5", + "@jupyterlab/translation": "^4.1.5" }, "devDependencies": { "rimraf": "~5.0.5", diff --git a/packages/mermaid/package.json b/packages/mermaid/package.json index 3786f7ab606f..95f0e0e37ac2 100644 --- a/packages/mermaid/package.json +++ b/packages/mermaid/package.json @@ -1,6 +1,6 @@ { "name": "@jupyterlab/mermaid", - "version": "4.1.0", + "version": "4.1.5", "description": "JupyterLab - Mermaid Renderer", "homepage": "https://github.com/jupyterlab/jupyterlab", "bugs": { @@ -42,9 +42,9 @@ "watch": "tsc -b --watch" }, "dependencies": { - "@jupyterlab/apputils": "^4.2.0", - "@jupyterlab/coreutils": "^6.1.0", - "@jupyterlab/rendermime-interfaces": "^3.9.0", + "@jupyterlab/apputils": "^4.2.5", + "@jupyterlab/coreutils": "^6.1.5", + "@jupyterlab/rendermime-interfaces": "^3.9.5", "@lumino/coreutils": "^2.1.2", "@lumino/widgets": "^2.3.1", "mermaid": "^10.7.0" diff --git a/packages/metadataform-extension/package.json b/packages/metadataform-extension/package.json index 2dbebfc4d669..8420a3d09fab 100644 --- a/packages/metadataform-extension/package.json +++ b/packages/metadataform-extension/package.json @@ -1,6 +1,6 @@ { "name": "@jupyterlab/metadataform-extension", - "version": "4.1.0", + "version": "4.1.5", "description": "A helper to build form for metadata", "keywords": [ "jupyter", @@ -39,12 +39,12 @@ "watch": "tsc -w --listEmittedFiles" }, "dependencies": { - "@jupyterlab/application": "^4.1.0", - "@jupyterlab/metadataform": "^4.1.0", - "@jupyterlab/notebook": "^4.1.0", - "@jupyterlab/settingregistry": "^4.1.0", - "@jupyterlab/translation": "^4.1.0", - "@jupyterlab/ui-components": "^4.1.0", + "@jupyterlab/application": "^4.1.5", + "@jupyterlab/metadataform": "^4.1.5", + "@jupyterlab/notebook": "^4.1.5", + "@jupyterlab/settingregistry": "^4.1.5", + "@jupyterlab/translation": "^4.1.5", + "@jupyterlab/ui-components": "^4.1.5", "@lumino/coreutils": "^2.1.2" }, "devDependencies": { diff --git a/packages/metadataform/package.json b/packages/metadataform/package.json index f7324ce756c6..789a95cbae87 100644 --- a/packages/metadataform/package.json +++ b/packages/metadataform/package.json @@ -1,6 +1,6 @@ { "name": "@jupyterlab/metadataform", - "version": "4.1.0", + "version": "4.1.5", "description": "A helper to build form for metadata", "keywords": [ "jupyter", @@ -45,12 +45,12 @@ "watch": "tsc -w --listEmittedFiles" }, "dependencies": { - "@jupyterlab/apputils": "^4.2.0", - "@jupyterlab/nbformat": "^4.1.0", - "@jupyterlab/notebook": "^4.1.0", - "@jupyterlab/settingregistry": "^4.1.0", - "@jupyterlab/translation": "^4.1.0", - "@jupyterlab/ui-components": "^4.1.0", + "@jupyterlab/apputils": "^4.2.5", + "@jupyterlab/nbformat": "^4.1.5", + "@jupyterlab/notebook": "^4.1.5", + "@jupyterlab/settingregistry": "^4.1.5", + "@jupyterlab/translation": "^4.1.5", + "@jupyterlab/ui-components": "^4.1.5", "@lumino/coreutils": "^2.1.2", "@lumino/messaging": "^2.0.1", "@lumino/widgets": "^2.3.1", @@ -60,7 +60,7 @@ "react": "^18.2.0" }, "devDependencies": { - "@jupyterlab/testing": "^4.1.0", + "@jupyterlab/testing": "^4.1.5", "@types/jest": "^29.2.0", "@types/react": "^18.0.26", "jest": "^29.2.0", diff --git a/packages/metapackage/package.json b/packages/metapackage/package.json index 2748f9ee93e9..a39d3f8e743c 100644 --- a/packages/metapackage/package.json +++ b/packages/metapackage/package.json @@ -1,6 +1,6 @@ { "name": "@jupyterlab/metapackage", - "version": "4.1.0", + "version": "4.1.5", "description": "JupyterLab - Meta Package. All of the packages used by the core JupyterLab application", "homepage": "https://github.com/jupyterlab/jupyterlab", "bugs": { @@ -37,103 +37,103 @@ "watch": "tsc -b --watch" }, "dependencies": { - "@jupyterlab/application": "^4.1.0", - "@jupyterlab/application-extension": "^4.1.0", - "@jupyterlab/apputils": "^4.2.0", - "@jupyterlab/apputils-extension": "^4.1.0", - "@jupyterlab/attachments": "^4.1.0", - "@jupyterlab/cell-toolbar": "^4.1.0", - "@jupyterlab/cell-toolbar-extension": "^4.1.0", - "@jupyterlab/cells": "^4.1.0", - "@jupyterlab/celltags-extension": "^4.1.0", - "@jupyterlab/codeeditor": "^4.1.0", - "@jupyterlab/codemirror": "^4.1.0", - "@jupyterlab/codemirror-extension": "^4.1.0", - "@jupyterlab/completer": "^4.1.0", - "@jupyterlab/completer-extension": "^4.1.0", - "@jupyterlab/console": "^4.1.0", - "@jupyterlab/console-extension": "^4.1.0", - "@jupyterlab/coreutils": "^6.1.0", - "@jupyterlab/csvviewer": "^4.1.0", - "@jupyterlab/csvviewer-extension": "^4.1.0", - "@jupyterlab/debugger": "^4.1.0", - "@jupyterlab/debugger-extension": "^4.1.0", - "@jupyterlab/docmanager": "^4.1.0", - "@jupyterlab/docmanager-extension": "^4.1.0", - "@jupyterlab/docregistry": "^4.1.0", - "@jupyterlab/documentsearch": "^4.1.0", - "@jupyterlab/documentsearch-extension": "^4.1.0", - "@jupyterlab/extensionmanager": "^4.1.0", - "@jupyterlab/extensionmanager-extension": "^4.1.0", - "@jupyterlab/filebrowser": "^4.1.0", - "@jupyterlab/filebrowser-extension": "^4.1.0", - "@jupyterlab/fileeditor": "^4.1.0", - "@jupyterlab/fileeditor-extension": "^4.1.0", - "@jupyterlab/help-extension": "^4.1.0", - "@jupyterlab/htmlviewer": "^4.1.0", - "@jupyterlab/htmlviewer-extension": "^4.1.0", - "@jupyterlab/hub-extension": "^4.1.0", - "@jupyterlab/imageviewer": "^4.1.0", - "@jupyterlab/imageviewer-extension": "^4.1.0", - "@jupyterlab/inspector": "^4.1.0", - "@jupyterlab/inspector-extension": "^4.1.0", - "@jupyterlab/javascript-extension": "^4.1.0", - "@jupyterlab/json-extension": "^4.1.0", - "@jupyterlab/launcher": "^4.1.0", - "@jupyterlab/launcher-extension": "^4.1.0", - "@jupyterlab/logconsole": "^4.1.0", - "@jupyterlab/logconsole-extension": "^4.1.0", - "@jupyterlab/lsp": "^4.1.0", - "@jupyterlab/lsp-extension": "^4.1.0", - "@jupyterlab/mainmenu": "^4.1.0", - "@jupyterlab/mainmenu-extension": "^4.1.0", - "@jupyterlab/markdownviewer": "^4.1.0", - "@jupyterlab/markdownviewer-extension": "^4.1.0", - "@jupyterlab/markedparser-extension": "^4.1.0", - "@jupyterlab/mathjax-extension": "^4.1.0", - "@jupyterlab/mermaid": "^4.1.0", - "@jupyterlab/mermaid-extension": "^4.1.0", - "@jupyterlab/metadataform": "^4.1.0", - "@jupyterlab/metadataform-extension": "^4.1.0", - "@jupyterlab/nbconvert-css": "^4.1.0", - "@jupyterlab/nbformat": "^4.1.0", - "@jupyterlab/notebook": "^4.1.0", - "@jupyterlab/notebook-extension": "^4.1.0", - "@jupyterlab/observables": "^5.1.0", - "@jupyterlab/outputarea": "^4.1.0", - "@jupyterlab/pdf-extension": "^4.1.0", - "@jupyterlab/pluginmanager": "^4.1.0", - "@jupyterlab/pluginmanager-extension": "^4.1.0", - "@jupyterlab/property-inspector": "^4.1.0", - "@jupyterlab/rendermime": "^4.1.0", - "@jupyterlab/rendermime-extension": "^4.1.0", - "@jupyterlab/rendermime-interfaces": "^3.9.0", - "@jupyterlab/running": "^4.1.0", - "@jupyterlab/running-extension": "^4.1.0", - "@jupyterlab/services": "^7.1.0", - "@jupyterlab/settingeditor": "^4.1.0", - "@jupyterlab/settingeditor-extension": "^4.1.0", - "@jupyterlab/settingregistry": "^4.1.0", - "@jupyterlab/shortcuts-extension": "^4.1.0", - "@jupyterlab/statedb": "^4.1.0", - "@jupyterlab/statusbar": "^4.1.0", - "@jupyterlab/statusbar-extension": "^4.1.0", - "@jupyterlab/terminal": "^4.1.0", - "@jupyterlab/terminal-extension": "^4.1.0", - "@jupyterlab/theme-dark-extension": "^4.1.0", - "@jupyterlab/theme-light-extension": "^4.1.0", - "@jupyterlab/toc": "^6.1.0", - "@jupyterlab/toc-extension": "^6.1.0", - "@jupyterlab/tooltip": "^4.1.0", - "@jupyterlab/tooltip-extension": "^4.1.0", - "@jupyterlab/translation": "^4.1.0", - "@jupyterlab/translation-extension": "^4.1.0", - "@jupyterlab/ui-components": "^4.1.0", - "@jupyterlab/ui-components-extension": "^4.1.0", - "@jupyterlab/vega5-extension": "^4.1.0" + "@jupyterlab/application": "^4.1.5", + "@jupyterlab/application-extension": "^4.1.5", + "@jupyterlab/apputils": "^4.2.5", + "@jupyterlab/apputils-extension": "^4.1.5", + "@jupyterlab/attachments": "^4.1.5", + "@jupyterlab/cell-toolbar": "^4.1.5", + "@jupyterlab/cell-toolbar-extension": "^4.1.5", + "@jupyterlab/cells": "^4.1.5", + "@jupyterlab/celltags-extension": "^4.1.5", + "@jupyterlab/codeeditor": "^4.1.5", + "@jupyterlab/codemirror": "^4.1.5", + "@jupyterlab/codemirror-extension": "^4.1.5", + "@jupyterlab/completer": "^4.1.5", + "@jupyterlab/completer-extension": "^4.1.5", + "@jupyterlab/console": "^4.1.5", + "@jupyterlab/console-extension": "^4.1.5", + "@jupyterlab/coreutils": "^6.1.5", + "@jupyterlab/csvviewer": "^4.1.5", + "@jupyterlab/csvviewer-extension": "^4.1.5", + "@jupyterlab/debugger": "^4.1.5", + "@jupyterlab/debugger-extension": "^4.1.5", + "@jupyterlab/docmanager": "^4.1.5", + "@jupyterlab/docmanager-extension": "^4.1.5", + "@jupyterlab/docregistry": "^4.1.5", + "@jupyterlab/documentsearch": "^4.1.5", + "@jupyterlab/documentsearch-extension": "^4.1.5", + "@jupyterlab/extensionmanager": "^4.1.5", + "@jupyterlab/extensionmanager-extension": "^4.1.5", + "@jupyterlab/filebrowser": "^4.1.5", + "@jupyterlab/filebrowser-extension": "^4.1.5", + "@jupyterlab/fileeditor": "^4.1.5", + "@jupyterlab/fileeditor-extension": "^4.1.5", + "@jupyterlab/help-extension": "^4.1.5", + "@jupyterlab/htmlviewer": "^4.1.5", + "@jupyterlab/htmlviewer-extension": "^4.1.5", + "@jupyterlab/hub-extension": "^4.1.5", + "@jupyterlab/imageviewer": "^4.1.5", + "@jupyterlab/imageviewer-extension": "^4.1.5", + "@jupyterlab/inspector": "^4.1.5", + "@jupyterlab/inspector-extension": "^4.1.5", + "@jupyterlab/javascript-extension": "^4.1.5", + "@jupyterlab/json-extension": "^4.1.5", + "@jupyterlab/launcher": "^4.1.5", + "@jupyterlab/launcher-extension": "^4.1.5", + "@jupyterlab/logconsole": "^4.1.5", + "@jupyterlab/logconsole-extension": "^4.1.5", + "@jupyterlab/lsp": "^4.1.5", + "@jupyterlab/lsp-extension": "^4.1.5", + "@jupyterlab/mainmenu": "^4.1.5", + "@jupyterlab/mainmenu-extension": "^4.1.5", + "@jupyterlab/markdownviewer": "^4.1.5", + "@jupyterlab/markdownviewer-extension": "^4.1.5", + "@jupyterlab/markedparser-extension": "^4.1.5", + "@jupyterlab/mathjax-extension": "^4.1.5", + "@jupyterlab/mermaid": "^4.1.5", + "@jupyterlab/mermaid-extension": "^4.1.5", + "@jupyterlab/metadataform": "^4.1.5", + "@jupyterlab/metadataform-extension": "^4.1.5", + "@jupyterlab/nbconvert-css": "^4.1.5", + "@jupyterlab/nbformat": "^4.1.5", + "@jupyterlab/notebook": "^4.1.5", + "@jupyterlab/notebook-extension": "^4.1.5", + "@jupyterlab/observables": "^5.1.5", + "@jupyterlab/outputarea": "^4.1.5", + "@jupyterlab/pdf-extension": "^4.1.5", + "@jupyterlab/pluginmanager": "^4.1.5", + "@jupyterlab/pluginmanager-extension": "^4.1.5", + "@jupyterlab/property-inspector": "^4.1.5", + "@jupyterlab/rendermime": "^4.1.5", + "@jupyterlab/rendermime-extension": "^4.1.5", + "@jupyterlab/rendermime-interfaces": "^3.9.5", + "@jupyterlab/running": "^4.1.5", + "@jupyterlab/running-extension": "^4.1.5", + "@jupyterlab/services": "^7.1.5", + "@jupyterlab/settingeditor": "^4.1.5", + "@jupyterlab/settingeditor-extension": "^4.1.5", + "@jupyterlab/settingregistry": "^4.1.5", + "@jupyterlab/shortcuts-extension": "^4.1.5", + "@jupyterlab/statedb": "^4.1.5", + "@jupyterlab/statusbar": "^4.1.5", + "@jupyterlab/statusbar-extension": "^4.1.5", + "@jupyterlab/terminal": "^4.1.5", + "@jupyterlab/terminal-extension": "^4.1.5", + "@jupyterlab/theme-dark-extension": "^4.1.5", + "@jupyterlab/theme-light-extension": "^4.1.5", + "@jupyterlab/toc": "^6.1.5", + "@jupyterlab/toc-extension": "^6.1.5", + "@jupyterlab/tooltip": "^4.1.5", + "@jupyterlab/tooltip-extension": "^4.1.5", + "@jupyterlab/translation": "^4.1.5", + "@jupyterlab/translation-extension": "^4.1.5", + "@jupyterlab/ui-components": "^4.1.5", + "@jupyterlab/ui-components-extension": "^4.1.5", + "@jupyterlab/vega5-extension": "^4.1.5" }, "devDependencies": { - "@jupyterlab/testing": "^4.1.0", + "@jupyterlab/testing": "^4.1.5", "@types/jest": "^29.2.0", "fs-extra": "^10.1.0", "jest": "^29.2.0", diff --git a/packages/metapackage/test/completer/handler.spec.ts b/packages/metapackage/test/completer/handler.spec.ts index 191f94a3bede..5a297e422716 100644 --- a/packages/metapackage/test/completer/handler.spec.ts +++ b/packages/metapackage/test/completer/handler.spec.ts @@ -3,6 +3,7 @@ import { ISessionContext, SessionContext } from '@jupyterlab/apputils'; import { CodeEditorWrapper } from '@jupyterlab/codeeditor'; +import { Signal } from '@lumino/signaling'; import { Completer, CompleterModel, @@ -14,7 +15,7 @@ import { } from '@jupyterlab/completer'; import { createEditorWidget } from '@jupyterlab/completer/lib/testutils'; import { Widget } from '@lumino/widgets'; -import { ISharedText, SourceChange } from '@jupyter/ydoc'; +import { ISharedFile, ISharedText, SourceChange } from '@jupyter/ydoc'; import { createSessionContext } from '@jupyterlab/apputils/lib/testutils'; class TestCompleterModel extends CompleterModel { @@ -217,10 +218,9 @@ describe('@jupyterlab/completer', () => { ); editor.model.sharedModel.setSource('bar'); editor.setCursorPosition({ line: 0, column: 2 }); - // This signal is emitted (again) because the cursor position that - // a natural user would create need to be recreated here. - // (editor.model.value.changed as any).emit({ type: 'set', value: 'bar' }); @todo remove? - (editor.model.sharedModel.changed as any).emit([]); + ( + editor.model.sharedModel.changed as Signal + ).emit({ sourceChange: {} as any }); expect(model.methods).toEqual( expect.arrayContaining(['handleTextChange']) ); @@ -398,6 +398,18 @@ describe('@jupyterlab/completer', () => { ); }); + it('should not trigger on non-source changes to the model', async () => { + provider.triggers.length = 0; + + (handler.editor!.model.sharedModel as ISharedFile).setState( + 'state-variable', + 'new-value' + ); + await new Promise(process.nextTick); + + expect(provider.triggers.length).toEqual(0); + }); + it('should pass context to `shouldShowContinuousHint()`', async () => { handler.editor!.model.sharedModel.setSource('foo.'); await new Promise(process.nextTick); diff --git a/packages/nbconvert-css/package.json b/packages/nbconvert-css/package.json index 0be73cba43ae..052e17c5c3b6 100644 --- a/packages/nbconvert-css/package.json +++ b/packages/nbconvert-css/package.json @@ -1,6 +1,6 @@ { "name": "@jupyterlab/nbconvert-css", - "version": "4.1.0", + "version": "4.1.5", "description": "CSS bundle for the JupyterLab nbconvert template", "homepage": "https://github.com/jupyterlab/jupyterlab", "bugs": { @@ -31,13 +31,13 @@ "watch": "webpack --watch" }, "dependencies": { - "@jupyterlab/application": "^4.1.0", - "@jupyterlab/apputils": "^4.2.0", - "@jupyterlab/cells": "^4.1.0", - "@jupyterlab/codemirror": "^4.1.0", - "@jupyterlab/notebook": "^4.1.0", - "@jupyterlab/outputarea": "^4.1.0", - "@jupyterlab/rendermime": "^4.1.0" + "@jupyterlab/application": "^4.1.5", + "@jupyterlab/apputils": "^4.2.5", + "@jupyterlab/cells": "^4.1.5", + "@jupyterlab/codemirror": "^4.1.5", + "@jupyterlab/notebook": "^4.1.5", + "@jupyterlab/outputarea": "^4.1.5", + "@jupyterlab/rendermime": "^4.1.5" }, "devDependencies": { "css-loader": "^6.7.1", diff --git a/packages/nbformat/package.json b/packages/nbformat/package.json index d2c48ad8f63e..6b251e3e4655 100644 --- a/packages/nbformat/package.json +++ b/packages/nbformat/package.json @@ -1,6 +1,6 @@ { "name": "@jupyterlab/nbformat", - "version": "4.1.0", + "version": "4.1.5", "description": "Notebook format interfaces", "homepage": "https://github.com/jupyterlab/jupyterlab", "bugs": { @@ -41,7 +41,7 @@ "@lumino/coreutils": "^2.1.2" }, "devDependencies": { - "@jupyterlab/testing": "^4.1.0", + "@jupyterlab/testing": "^4.1.5", "@types/jest": "^29.2.0", "jest": "^29.2.0", "rimraf": "~5.0.5", diff --git a/packages/notebook-extension/package.json b/packages/notebook-extension/package.json index b98b2e32170f..529286beca37 100644 --- a/packages/notebook-extension/package.json +++ b/packages/notebook-extension/package.json @@ -1,6 +1,6 @@ { "name": "@jupyterlab/notebook-extension", - "version": "4.1.0", + "version": "4.1.5", "description": "JupyterLab - Notebook Extension", "homepage": "https://github.com/jupyterlab/jupyterlab", "bugs": { @@ -38,35 +38,35 @@ }, "dependencies": { "@jupyter/ydoc": "^1.1.1", - "@jupyterlab/application": "^4.1.0", - "@jupyterlab/apputils": "^4.2.0", - "@jupyterlab/cells": "^4.1.0", - "@jupyterlab/codeeditor": "^4.1.0", - "@jupyterlab/codemirror": "^4.1.0", - "@jupyterlab/completer": "^4.1.0", - "@jupyterlab/coreutils": "^6.1.0", - "@jupyterlab/docmanager": "^4.1.0", - "@jupyterlab/docmanager-extension": "^4.1.0", - "@jupyterlab/docregistry": "^4.1.0", - "@jupyterlab/documentsearch": "^4.1.0", - "@jupyterlab/filebrowser": "^4.1.0", - "@jupyterlab/launcher": "^4.1.0", - "@jupyterlab/logconsole": "^4.1.0", - "@jupyterlab/lsp": "^4.1.0", - "@jupyterlab/mainmenu": "^4.1.0", - "@jupyterlab/metadataform": "^4.1.0", - "@jupyterlab/nbformat": "^4.1.0", - "@jupyterlab/notebook": "^4.1.0", - "@jupyterlab/observables": "^5.1.0", - "@jupyterlab/property-inspector": "^4.1.0", - "@jupyterlab/rendermime": "^4.1.0", - "@jupyterlab/services": "^7.1.0", - "@jupyterlab/settingregistry": "^4.1.0", - "@jupyterlab/statedb": "^4.1.0", - "@jupyterlab/statusbar": "^4.1.0", - "@jupyterlab/toc": "^6.1.0", - "@jupyterlab/translation": "^4.1.0", - "@jupyterlab/ui-components": "^4.1.0", + "@jupyterlab/application": "^4.1.5", + "@jupyterlab/apputils": "^4.2.5", + "@jupyterlab/cells": "^4.1.5", + "@jupyterlab/codeeditor": "^4.1.5", + "@jupyterlab/codemirror": "^4.1.5", + "@jupyterlab/completer": "^4.1.5", + "@jupyterlab/coreutils": "^6.1.5", + "@jupyterlab/docmanager": "^4.1.5", + "@jupyterlab/docmanager-extension": "^4.1.5", + "@jupyterlab/docregistry": "^4.1.5", + "@jupyterlab/documentsearch": "^4.1.5", + "@jupyterlab/filebrowser": "^4.1.5", + "@jupyterlab/launcher": "^4.1.5", + "@jupyterlab/logconsole": "^4.1.5", + "@jupyterlab/lsp": "^4.1.5", + "@jupyterlab/mainmenu": "^4.1.5", + "@jupyterlab/metadataform": "^4.1.5", + "@jupyterlab/nbformat": "^4.1.5", + "@jupyterlab/notebook": "^4.1.5", + "@jupyterlab/observables": "^5.1.5", + "@jupyterlab/property-inspector": "^4.1.5", + "@jupyterlab/rendermime": "^4.1.5", + "@jupyterlab/services": "^7.1.5", + "@jupyterlab/settingregistry": "^4.1.5", + "@jupyterlab/statedb": "^4.1.5", + "@jupyterlab/statusbar": "^4.1.5", + "@jupyterlab/toc": "^6.1.5", + "@jupyterlab/translation": "^4.1.5", + "@jupyterlab/ui-components": "^4.1.5", "@lumino/algorithm": "^2.0.1", "@lumino/commands": "^2.2.0", "@lumino/coreutils": "^2.1.2", diff --git a/packages/notebook-extension/schema/tracker.json b/packages/notebook-extension/schema/tracker.json index 728c606f6ee9..151c08e029c0 100644 --- a/packages/notebook-extension/schema/tracker.json +++ b/packages/notebook-extension/schema/tracker.json @@ -369,62 +369,62 @@ { "command": "notebook:change-cell-to-code", "keys": ["Y"], - "selector": ".jp-Notebook.jp-mod-commandMode :focus:not(:read-write)" + "selector": ".jp-Notebook.jp-mod-commandMode:not(.jp-mod-readWrite) :focus" }, { "command": "notebook:change-cell-to-heading-1", "keys": ["1"], - "selector": ".jp-Notebook.jp-mod-commandMode :focus:not(:read-write)" + "selector": ".jp-Notebook.jp-mod-commandMode:not(.jp-mod-readWrite) :focus" }, { "command": "notebook:change-cell-to-heading-2", "keys": ["2"], - "selector": ".jp-Notebook.jp-mod-commandMode :focus:not(:read-write)" + "selector": ".jp-Notebook.jp-mod-commandMode:not(.jp-mod-readWrite) :focus" }, { "command": "notebook:change-cell-to-heading-3", "keys": ["3"], - "selector": ".jp-Notebook.jp-mod-commandMode :focus:not(:read-write)" + "selector": ".jp-Notebook.jp-mod-commandMode:not(.jp-mod-readWrite) :focus" }, { "command": "notebook:change-cell-to-heading-4", "keys": ["4"], - "selector": ".jp-Notebook.jp-mod-commandMode :focus:not(:read-write)" + "selector": ".jp-Notebook.jp-mod-commandMode:not(.jp-mod-readWrite) :focus" }, { "command": "notebook:change-cell-to-heading-5", "keys": ["5"], - "selector": ".jp-Notebook.jp-mod-commandMode :focus:not(:read-write)" + "selector": ".jp-Notebook.jp-mod-commandMode:not(.jp-mod-readWrite) :focus" }, { "command": "notebook:change-cell-to-heading-6", "keys": ["6"], - "selector": ".jp-Notebook.jp-mod-commandMode :focus:not(:read-write)" + "selector": ".jp-Notebook.jp-mod-commandMode:not(.jp-mod-readWrite) :focus" }, { "command": "notebook:change-cell-to-markdown", "keys": ["M"], - "selector": ".jp-Notebook.jp-mod-commandMode :focus:not(:read-write)" + "selector": ".jp-Notebook.jp-mod-commandMode:not(.jp-mod-readWrite) :focus" }, { "command": "notebook:change-cell-to-raw", "keys": ["R"], - "selector": ".jp-Notebook.jp-mod-commandMode :focus:not(:read-write)" + "selector": ".jp-Notebook.jp-mod-commandMode:not(.jp-mod-readWrite) :focus" }, { "command": "notebook:copy-cell", "keys": ["C"], - "selector": ".jp-Notebook.jp-mod-commandMode :focus:not(:read-write)" + "selector": ".jp-Notebook.jp-mod-commandMode:not(.jp-mod-readWrite) :focus" }, { "command": "notebook:cut-cell", "keys": ["X"], - "selector": ".jp-Notebook.jp-mod-commandMode :focus:not(:read-write)" + "selector": ".jp-Notebook.jp-mod-commandMode:not(.jp-mod-readWrite) :focus" }, { "command": "notebook:delete-cell", "keys": ["D", "D"], - "selector": ".jp-Notebook.jp-mod-commandMode :focus:not(:read-write)" + "selector": ".jp-Notebook.jp-mod-commandMode:not(.jp-mod-readWrite) :focus" }, { "command": "notebook:enter-command-mode", @@ -454,123 +454,123 @@ { "command": "notebook:extend-marked-cells-above", "keys": ["Shift ArrowUp"], - "selector": ".jp-Notebook.jp-mod-commandMode :focus:not(:read-write)" + "selector": ".jp-Notebook.jp-mod-commandMode:not(.jp-mod-readWrite) :focus" }, { "command": "notebook:extend-marked-cells-above", "keys": ["Shift K"], - "selector": ".jp-Notebook.jp-mod-commandMode :focus:not(:read-write)" + "selector": ".jp-Notebook.jp-mod-commandMode:not(.jp-mod-readWrite) :focus" }, { "command": "notebook:extend-marked-cells-top", "keys": ["Shift Home"], - "selector": ".jp-Notebook.jp-mod-commandMode :focus:not(:read-write)" + "selector": ".jp-Notebook.jp-mod-commandMode:not(.jp-mod-readWrite) :focus" }, { "command": "notebook:extend-marked-cells-below", "keys": ["Shift ArrowDown"], - "selector": ".jp-Notebook.jp-mod-commandMode :focus:not(:read-write)" + "selector": ".jp-Notebook.jp-mod-commandMode:not(.jp-mod-readWrite) :focus" }, { "command": "notebook:extend-marked-cells-bottom", "keys": ["Shift End"], - "selector": ".jp-Notebook.jp-mod-commandMode :focus:not(:read-write)" + "selector": ".jp-Notebook.jp-mod-commandMode:not(.jp-mod-readWrite) :focus" }, { "command": "notebook:extend-marked-cells-below", "keys": ["Shift J"], - "selector": ".jp-Notebook.jp-mod-commandMode :focus:not(:read-write)" + "selector": ".jp-Notebook.jp-mod-commandMode:not(.jp-mod-readWrite) :focus" }, { "command": "notebook:insert-cell-above", "keys": ["A"], - "selector": ".jp-Notebook.jp-mod-commandMode :focus:not(:read-write)" + "selector": ".jp-Notebook.jp-mod-commandMode:not(.jp-mod-readWrite) :focus" }, { "command": "notebook:insert-cell-below", "keys": ["B"], - "selector": ".jp-Notebook.jp-mod-commandMode :focus:not(:read-write)" + "selector": ".jp-Notebook.jp-mod-commandMode:not(.jp-mod-readWrite) :focus" }, { "command": "notebook:merge-cells", "keys": ["Shift M"], - "selector": ".jp-Notebook.jp-mod-commandMode :focus:not(:read-write)" + "selector": ".jp-Notebook.jp-mod-commandMode:not(.jp-mod-readWrite) :focus" }, { "command": "notebook:merge-cell-above", "keys": ["Ctrl Backspace"], - "selector": ".jp-Notebook.jp-mod-commandMode :focus:not(:read-write)" + "selector": ".jp-Notebook.jp-mod-commandMode:not(.jp-mod-readWrite) :focus" }, { "command": "notebook:merge-cell-below", "keys": ["Ctrl Shift M"], - "selector": ".jp-Notebook.jp-mod-commandMode :focus:not(:read-write)" + "selector": ".jp-Notebook.jp-mod-commandMode:not(.jp-mod-readWrite) :focus" }, { "command": "notebook:move-cursor-down", "keys": ["ArrowDown"], - "selector": ".jp-Notebook.jp-mod-commandMode :focus:not(:read-write)" + "selector": ".jp-Notebook.jp-mod-commandMode:not(.jp-mod-readWrite) :focus" }, { "command": "notebook:move-cursor-down", "keys": ["J"], - "selector": ".jp-Notebook.jp-mod-commandMode :focus:not(:read-write)" + "selector": ".jp-Notebook.jp-mod-commandMode:not(.jp-mod-readWrite) :focus" }, { "command": "notebook:move-cursor-up", "keys": ["ArrowUp"], - "selector": ".jp-Notebook.jp-mod-commandMode :focus:not(:read-write)" + "selector": ".jp-Notebook.jp-mod-commandMode:not(.jp-mod-readWrite) :focus" }, { "command": "notebook:move-cursor-up", "keys": ["K"], - "selector": ".jp-Notebook.jp-mod-commandMode :focus:not(:read-write)" + "selector": ".jp-Notebook.jp-mod-commandMode:not(.jp-mod-readWrite) :focus" }, { "command": "notebook:move-cursor-heading-above-or-collapse", "keys": ["ArrowLeft"], - "selector": ".jp-Notebook.jp-mod-commandMode :focus:not(:read-write)" + "selector": ".jp-Notebook.jp-mod-commandMode:not(.jp-mod-readWrite) :focus" }, { "command": "notebook:move-cursor-heading-below-or-expand", "keys": ["ArrowRight"], - "selector": ".jp-Notebook.jp-mod-commandMode :focus:not(:read-write)" + "selector": ".jp-Notebook.jp-mod-commandMode:not(.jp-mod-readWrite) :focus" }, { "command": "notebook:insert-heading-above", "keys": ["Shift A"], - "selector": ".jp-Notebook.jp-mod-commandMode :focus:not(:read-write)" + "selector": ".jp-Notebook.jp-mod-commandMode:not(.jp-mod-readWrite) :focus" }, { "command": "notebook:insert-heading-below", "keys": ["Shift B"], - "selector": ".jp-Notebook.jp-mod-commandMode :focus:not(:read-write)" + "selector": ".jp-Notebook.jp-mod-commandMode:not(.jp-mod-readWrite) :focus" }, { "command": "notebook:collapse-all-headings", "keys": ["Ctrl Shift ArrowLeft"], - "selector": ".jp-Notebook.jp-mod-commandMode :focus:not(:read-write)" + "selector": ".jp-Notebook.jp-mod-commandMode:not(.jp-mod-readWrite) :focus" }, { "command": "notebook:expand-all-headings", "keys": ["Ctrl Shift ArrowRight"], - "selector": ".jp-Notebook.jp-mod-commandMode :focus:not(:read-write)" + "selector": ".jp-Notebook.jp-mod-commandMode:not(.jp-mod-readWrite) :focus" }, { "command": "notebook:paste-cell-below", "keys": ["V"], - "selector": ".jp-Notebook.jp-mod-commandMode :focus:not(:read-write)" + "selector": ".jp-Notebook.jp-mod-commandMode:not(.jp-mod-readWrite) :focus" }, { "command": "notebook:redo-cell-action", "keys": ["Shift Z"], - "selector": ".jp-Notebook.jp-mod-commandMode :focus:not(:read-write)" + "selector": ".jp-Notebook.jp-mod-commandMode:not(.jp-mod-readWrite) :focus" }, { "command": "notebook:run-cell", "macKeys": ["Ctrl Enter"], "keys": [], - "selector": ".jp-Notebook.jp-mod-commandMode :focus:not(:read-write)" + "selector": ".jp-Notebook.jp-mod-commandMode:not(.jp-mod-readWrite) :focus" }, { "command": "notebook:run-cell", @@ -581,7 +581,7 @@ { "command": "notebook:run-cell", "keys": ["Accel Enter"], - "selector": ".jp-Notebook.jp-mod-commandMode :focus:not(:read-write)" + "selector": ".jp-Notebook.jp-mod-commandMode:not(.jp-mod-readWrite) :focus" }, { "command": "notebook:run-cell", @@ -591,7 +591,7 @@ { "command": "notebook:run-cell-and-insert-below", "keys": ["Alt Enter"], - "selector": ".jp-Notebook.jp-mod-commandMode :focus:not(:read-write)" + "selector": ".jp-Notebook.jp-mod-commandMode:not(.jp-mod-readWrite) :focus" }, { "command": "notebook:run-cell-and-insert-below", @@ -611,7 +611,7 @@ { "command": "viewmenu:line-numbering", "keys": ["Shift L"], - "selector": ".jp-Notebook.jp-mod-commandMode :focus:not(:read-write)" + "selector": ".jp-Notebook.jp-mod-commandMode:not(.jp-mod-readWrite) :focus" }, { "command": "viewmenu:match-brackets", @@ -621,7 +621,7 @@ { "command": "notebook:select-all", "keys": ["Accel A"], - "selector": ".jp-Notebook.jp-mod-commandMode :focus:not(:read-write)" + "selector": ".jp-Notebook.jp-mod-commandMode:not(.jp-mod-readWrite) :focus" }, { "command": "notebook:split-cell-at-cursor", @@ -631,22 +631,22 @@ { "command": "notebook:undo-cell-action", "keys": ["Z"], - "selector": ".jp-Notebook.jp-mod-commandMode :focus:not(:read-write)" + "selector": ".jp-Notebook.jp-mod-commandMode:not(.jp-mod-readWrite) :focus" }, { "command": "notebook:toggle-render-side-by-side-current", "keys": ["Shift R"], - "selector": ".jp-Notebook.jp-mod-commandMode :focus:not(:read-write)" + "selector": ".jp-Notebook.jp-mod-commandMode:not(.jp-mod-readWrite) :focus" }, { "command": "notebook:move-cell-up", "keys": ["Ctrl Shift ArrowUp"], - "selector": ".jp-Notebook.jp-mod-commandMode :focus:not(:read-write)" + "selector": ".jp-Notebook.jp-mod-commandMode:not(.jp-mod-readWrite) :focus" }, { "command": "notebook:move-cell-down", "keys": ["Ctrl Shift ArrowDown"], - "selector": ".jp-Notebook.jp-mod-commandMode :focus:not(:read-write)" + "selector": ".jp-Notebook.jp-mod-commandMode:not(.jp-mod-readWrite) :focus" } ], "title": "Notebook", diff --git a/packages/notebook-extension/src/index.ts b/packages/notebook-extension/src/index.ts index bf752f608bc9..8de9debe0c17 100644 --- a/packages/notebook-extension/src/index.ts +++ b/packages/notebook-extension/src/index.ts @@ -48,7 +48,10 @@ import { IDocumentManager } from '@jupyterlab/docmanager'; import { ToolbarItems as DocToolbarItems } from '@jupyterlab/docmanager-extension'; import { DocumentRegistry, IDocumentWidget } from '@jupyterlab/docregistry'; import { ISearchProviderRegistry } from '@jupyterlab/documentsearch'; -import { IDefaultFileBrowser } from '@jupyterlab/filebrowser'; +import { + IDefaultFileBrowser, + IFileBrowserFactory +} from '@jupyterlab/filebrowser'; import { ILauncher } from '@jupyterlab/launcher'; import { ILSPCodeExtractorsManager, @@ -363,7 +366,8 @@ const trackerPlugin: JupyterFrontEndPlugin = { ISettingRegistry, ISessionContextDialogs, ITranslator, - IFormRendererRegistry + IFormRendererRegistry, + IFileBrowserFactory ], activate: activateNotebookHandler, autoStart: true @@ -1594,7 +1598,8 @@ function activateNotebookHandler( settingRegistry: ISettingRegistry | null, sessionDialogs_: ISessionContextDialogs | null, translator_: ITranslator | null, - formRegistry: IFormRendererRegistry | null + formRegistry: IFormRendererRegistry | null, + filebrowserFactory: IFileBrowserFactory | null ): INotebookTracker { const translator = translator_ ?? nullTranslator; const sessionDialogs = @@ -1957,7 +1962,9 @@ function activateNotebookHandler( caption: trans.__('Create a new notebook'), icon: args => (args['isPalette'] ? undefined : notebookIcon), execute: args => { - const cwd = (args['cwd'] as string) || (defaultBrowser?.model.path ?? ''); + const currentBrowser = + filebrowserFactory?.tracker.currentWidget ?? defaultBrowser; + const cwd = (args['cwd'] as string) || (currentBrowser?.model.path ?? ''); const kernelId = (args['kernelId'] as string) || ''; const kernelName = (args['kernelName'] as string) || ''; return createNew(cwd, kernelId, kernelName); diff --git a/packages/notebook/package.json b/packages/notebook/package.json index e9dfd7b8e15c..9d2e84d35327 100644 --- a/packages/notebook/package.json +++ b/packages/notebook/package.json @@ -1,6 +1,6 @@ { "name": "@jupyterlab/notebook", - "version": "4.1.0", + "version": "4.1.5", "description": "JupyterLab - Notebook", "homepage": "https://github.com/jupyterlab/jupyterlab", "bugs": { @@ -42,23 +42,23 @@ }, "dependencies": { "@jupyter/ydoc": "^1.1.1", - "@jupyterlab/apputils": "^4.2.0", - "@jupyterlab/cells": "^4.1.0", - "@jupyterlab/codeeditor": "^4.1.0", - "@jupyterlab/codemirror": "^4.1.0", - "@jupyterlab/coreutils": "^6.1.0", - "@jupyterlab/docregistry": "^4.1.0", - "@jupyterlab/documentsearch": "^4.1.0", - "@jupyterlab/lsp": "^4.1.0", - "@jupyterlab/nbformat": "^4.1.0", - "@jupyterlab/observables": "^5.1.0", - "@jupyterlab/rendermime": "^4.1.0", - "@jupyterlab/services": "^7.1.0", - "@jupyterlab/settingregistry": "^4.1.0", - "@jupyterlab/statusbar": "^4.1.0", - "@jupyterlab/toc": "^6.1.0", - "@jupyterlab/translation": "^4.1.0", - "@jupyterlab/ui-components": "^4.1.0", + "@jupyterlab/apputils": "^4.2.5", + "@jupyterlab/cells": "^4.1.5", + "@jupyterlab/codeeditor": "^4.1.5", + "@jupyterlab/codemirror": "^4.1.5", + "@jupyterlab/coreutils": "^6.1.5", + "@jupyterlab/docregistry": "^4.1.5", + "@jupyterlab/documentsearch": "^4.1.5", + "@jupyterlab/lsp": "^4.1.5", + "@jupyterlab/nbformat": "^4.1.5", + "@jupyterlab/observables": "^5.1.5", + "@jupyterlab/rendermime": "^4.1.5", + "@jupyterlab/services": "^7.1.5", + "@jupyterlab/settingregistry": "^4.1.5", + "@jupyterlab/statusbar": "^4.1.5", + "@jupyterlab/toc": "^6.1.5", + "@jupyterlab/translation": "^4.1.5", + "@jupyterlab/ui-components": "^4.1.5", "@lumino/algorithm": "^2.0.1", "@lumino/coreutils": "^2.1.2", "@lumino/disposable": "^2.1.2", @@ -72,7 +72,7 @@ "react": "^18.2.0" }, "devDependencies": { - "@jupyterlab/testing": "^4.1.0", + "@jupyterlab/testing": "^4.1.5", "@types/jest": "^29.2.0", "jest": "^29.2.0", "rimraf": "~5.0.5", diff --git a/packages/notebook/src/actions.tsx b/packages/notebook/src/actions.tsx index d76f74bdc679..c80ba41b8c39 100644 --- a/packages/notebook/src/actions.tsx +++ b/packages/notebook/src/actions.tsx @@ -200,8 +200,9 @@ export namespace NotebookActions { offsets.push(orig.length); + const cellCountAfterSplit = offsets.length - 1; const clones = offsets.slice(0, -1).map((offset, offsetIdx) => { - const { cell_type, metadata } = child.model.sharedModel.toJSON(); + const { cell_type, metadata, outputs } = child.model.sharedModel.toJSON(); return { cell_type, @@ -209,7 +210,11 @@ export namespace NotebookActions { source: orig .slice(offset, offsets[offsetIdx + 1]) .replace(/^\n+/, '') - .replace(/\n+$/, '') + .replace(/\n+$/, ''), + outputs: + offsetIdx === cellCountAfterSplit - 1 && cell_type === 'code' + ? outputs + : undefined }; }); diff --git a/packages/notebook/src/searchprovider.ts b/packages/notebook/src/searchprovider.ts index c1166118bb2d..9a79d00c174a 100644 --- a/packages/notebook/src/searchprovider.ts +++ b/packages/notebook/src/searchprovider.ts @@ -9,10 +9,7 @@ import { ICellModel, MarkdownCell } from '@jupyterlab/cells'; -import { - CodeMirrorEditor, - IHighlightAdjacentMatchOptions -} from '@jupyterlab/codemirror'; +import { IHighlightAdjacentMatchOptions } from '@jupyterlab/codemirror'; import { CodeEditor } from '@jupyterlab/codeeditor'; import { IChangedArgs } from '@jupyterlab/coreutils'; import { @@ -286,16 +283,8 @@ export class NotebookSearchProvider extends SearchProvider { * @returns Initial value used to populate the search box. */ getInitialQuery(): string { - const activeCell = this.widget.content.activeCell; - const editor = activeCell?.editor as CodeMirrorEditor | undefined; - if (!editor) { - return ''; - } - const selection = editor.state.sliceDoc( - editor.state.selection.main.from, - editor.state.selection.main.to - ); - return selection; + // Get whatever is selected in the browser window. + return window.getSelection()?.toString() || ''; } /** diff --git a/packages/notebook/src/widget.ts b/packages/notebook/src/widget.ts index 01280e7ae282..e125fa64176b 100644 --- a/packages/notebook/src/widget.ts +++ b/packages/notebook/src/widget.ts @@ -1,6 +1,7 @@ // Copyright (c) Jupyter Development Team. // Distributed under the terms of the Modified BSD License. +import { DOMUtils } from '@jupyterlab/apputils'; import { Cell, CodeCell, @@ -92,6 +93,14 @@ const OTHER_SELECTED_CLASS = 'jp-mod-multiSelected'; */ const UNCONFINED_CLASS = 'jp-mod-unconfined'; +/** + * The class name added to the notebook when an element within it is focused + * and takes keyboard input, such as focused or
. + * + * This class is also effective when the focused element is in shadow DOM. + */ +const READ_WRITE_CLASS = 'jp-mod-readWrite'; + /** * The class name added to drag images. */ @@ -1334,7 +1343,7 @@ export class Notebook extends StaticNotebook { ...options }); // Allow the node to scroll while dragging items. - this.node.setAttribute('data-lm-dragscroll', 'true'); + this.outerNode.setAttribute('data-lm-dragscroll', 'true'); this.activeCellChanged.connect(this._updateSelectedCells, this); this.jumped.connect((_, index: number) => (this.activeCellIndex = index)); this.selectionChanged.connect(this._updateSelectedCells, this); @@ -2771,10 +2780,21 @@ export class Notebook extends StaticNotebook { }); } + /** + * Update the notebook node with class indicating read-write state. + */ + private _updateReadWrite(): void { + const inReadWrite = DOMUtils.hasActiveEditableElement(this.node); + this.node.classList.toggle(READ_WRITE_CLASS, inReadWrite); + } + /** * Handle `focus` events for the widget. */ private _evtFocusIn(event: FocusEvent): void { + // Update read-write class state. + this._updateReadWrite(); + const target = event.target as HTMLElement; const index = this._findCell(target); if (index !== -1) { @@ -2829,7 +2849,10 @@ export class Notebook extends StaticNotebook { /** * Handle `focusout` events for the notebook. */ - private _evtFocusOut(event: MouseEvent): void { + private _evtFocusOut(event: FocusEvent): void { + // Update read-write class state. + this._updateReadWrite(); + const relatedTarget = event.relatedTarget as HTMLElement; // Bail if the window is losing focus, to preserve edit mode. This test diff --git a/packages/notebook/test/actions.spec.ts b/packages/notebook/test/actions.spec.ts index d4f230c89e6d..8f2b66529bad 100644 --- a/packages/notebook/test/actions.spec.ts +++ b/packages/notebook/test/actions.spec.ts @@ -3,7 +3,12 @@ import { ISessionContext, SessionContext } from '@jupyterlab/apputils'; import { createSessionContext } from '@jupyterlab/apputils/lib/testutils'; -import { CodeCell, MarkdownCell, RawCell } from '@jupyterlab/cells'; +import { + CodeCell, + ICodeCellModel, + MarkdownCell, + RawCell +} from '@jupyterlab/cells'; import { CodeEditor } from '@jupyterlab/codeeditor'; import { CellType, IMimeBundle } from '@jupyterlab/nbformat'; import { @@ -190,6 +195,32 @@ describe('@jupyterlab/notebook', () => { ); }); + it('should preserve all outputs in the second cell', async () => { + const cell = widget.activeCell as CodeCell; + // Produce two outputs (note, first will be `text/plain`, + // while second will be `application/vnd.jupyter.stdout`, + // which guarantees these will not be merged). + const index = widget.activeCellIndex; + const source = 'print(1)\ndisplay(2)'; + cell.model.sharedModel.setSource(source); + + // Should populate outputs + await NotebookActions.run(widget, ipySessionContext); + expect(cell.model.outputs).toHaveLength(2); + + // Split cell + const editor = cell.editor as CodeEditor.IEditor; + editor.setCursorPosition(editor.getPositionAt(9)!); + NotebookActions.splitCell(widget); + + // The output should now be only in the second cell + const cells = widget.model!.cells; + const first = cells.get(index) as ICodeCellModel; + const second = cells.get(index + 1) as ICodeCellModel; + expect(first.outputs).toHaveLength(0); + expect(second.outputs).toHaveLength(2); + }); + it('should clear the existing selection', () => { for (const child of widget.widgets) { widget.select(child); diff --git a/packages/notebook/test/searchprovider.spec.ts b/packages/notebook/test/searchprovider.spec.ts index 80893b2366d5..f6ff54451603 100644 --- a/packages/notebook/test/searchprovider.spec.ts +++ b/packages/notebook/test/searchprovider.spec.ts @@ -214,6 +214,31 @@ describe('@jupyterlab/notebook', () => { expect(provider.currentMatchIndex).toBe(0); }); + it('should start in the middle of a code cell, replace, and highlight next', async () => { + panel.model!.sharedModel.deleteCellRange(0, 2); + panel.model!.sharedModel.insertCells(0, [ + { cell_type: 'code', source: 'test1 test2 test3' } + ]); + panel.content.activeCellIndex = 0; + await provider.cellChangeHandled; + panel.content.mode = 'edit'; + + // Pick the spot before the second element. + await panel.content.activeCell!.editor!.setCursorPosition({ + line: 0, + column: 'test1 '.length + }); + + await provider.startQuery(/test\d/, { selection: true }); + + expect(provider.currentMatchIndex).toBe(1); + let replaced = await provider.replaceCurrentMatch('bar'); + expect(replaced).toBe(true); + const source = panel.model!.cells.get(0).sharedModel.getSource(); + expect(source).toBe('test1 bar test3'); + expect(provider.currentMatchIndex).toBe(1); + }); + it('should substitute groups in regular expressions', async () => { await provider.startQuery(/test(\d)/, undefined); expect(provider.currentMatchIndex).toBe(0); diff --git a/packages/observables/package.json b/packages/observables/package.json index 7c407b9ef254..99a1b1c9cd4c 100644 --- a/packages/observables/package.json +++ b/packages/observables/package.json @@ -1,6 +1,6 @@ { "name": "@jupyterlab/observables", - "version": "5.1.0", + "version": "5.1.5", "description": "Data structures which may be observed for changes.", "homepage": "https://github.com/jupyterlab/jupyterlab", "bugs": { @@ -44,7 +44,7 @@ "@lumino/signaling": "^2.1.2" }, "devDependencies": { - "@jupyterlab/testing": "^4.1.0", + "@jupyterlab/testing": "^4.1.5", "@types/jest": "^29.2.0", "jest": "^29.2.0", "rimraf": "~5.0.5", diff --git a/packages/outputarea/package.json b/packages/outputarea/package.json index 58cbb10d9ab8..da11f98d1640 100644 --- a/packages/outputarea/package.json +++ b/packages/outputarea/package.json @@ -1,6 +1,6 @@ { "name": "@jupyterlab/outputarea", - "version": "4.1.0", + "version": "4.1.5", "description": "JupyterLab - Notebook Output Area", "homepage": "https://github.com/jupyterlab/jupyterlab", "bugs": { @@ -42,13 +42,13 @@ "watch": "tsc -b --watch" }, "dependencies": { - "@jupyterlab/apputils": "^4.2.0", - "@jupyterlab/nbformat": "^4.1.0", - "@jupyterlab/observables": "^5.1.0", - "@jupyterlab/rendermime": "^4.1.0", - "@jupyterlab/rendermime-interfaces": "^3.9.0", - "@jupyterlab/services": "^7.1.0", - "@jupyterlab/translation": "^4.1.0", + "@jupyterlab/apputils": "^4.2.5", + "@jupyterlab/nbformat": "^4.1.5", + "@jupyterlab/observables": "^5.1.5", + "@jupyterlab/rendermime": "^4.1.5", + "@jupyterlab/rendermime-interfaces": "^3.9.5", + "@jupyterlab/services": "^7.1.5", + "@jupyterlab/translation": "^4.1.5", "@lumino/algorithm": "^2.0.1", "@lumino/coreutils": "^2.1.2", "@lumino/disposable": "^2.1.2", @@ -58,7 +58,7 @@ "@lumino/widgets": "^2.3.1" }, "devDependencies": { - "@jupyterlab/testing": "^4.1.0", + "@jupyterlab/testing": "^4.1.5", "@types/jest": "^29.2.0", "jest": "^29.2.0", "rimraf": "~5.0.5", diff --git a/packages/pdf-extension/package.json b/packages/pdf-extension/package.json index d3ddbd60cc69..51f4e24c5431 100644 --- a/packages/pdf-extension/package.json +++ b/packages/pdf-extension/package.json @@ -1,6 +1,6 @@ { "name": "@jupyterlab/pdf-extension", - "version": "4.1.0", + "version": "4.1.5", "description": "JupyterLab - PDF Viewer", "homepage": "https://github.com/jupyterlab/jupyterlab", "bugs": { @@ -37,7 +37,7 @@ "watch": "tsc -b --watch" }, "dependencies": { - "@jupyterlab/rendermime-interfaces": "^3.9.0", + "@jupyterlab/rendermime-interfaces": "^3.9.5", "@lumino/coreutils": "^2.1.2", "@lumino/disposable": "^2.1.2", "@lumino/widgets": "^2.3.1" diff --git a/packages/pluginmanager-extension/package.json b/packages/pluginmanager-extension/package.json index 6454d40870c8..293e9adc97d8 100644 --- a/packages/pluginmanager-extension/package.json +++ b/packages/pluginmanager-extension/package.json @@ -1,6 +1,6 @@ { "name": "@jupyterlab/pluginmanager-extension", - "version": "4.1.0", + "version": "4.1.5", "description": "Enable/disable plugins from user interface", "homepage": "https://github.com/jupyterlab/jupyterlab", "bugs": { @@ -35,11 +35,11 @@ "watch": "tsc -b --watch" }, "dependencies": { - "@jupyterlab/application": "^4.1.0", - "@jupyterlab/apputils": "^4.2.0", - "@jupyterlab/pluginmanager": "^4.1.0", - "@jupyterlab/translation": "^4.1.0", - "@jupyterlab/ui-components": "^4.1.0", + "@jupyterlab/application": "^4.1.5", + "@jupyterlab/apputils": "^4.2.5", + "@jupyterlab/pluginmanager": "^4.1.5", + "@jupyterlab/translation": "^4.1.5", + "@jupyterlab/ui-components": "^4.1.5", "@lumino/coreutils": "^2.1.2" }, "devDependencies": { diff --git a/packages/pluginmanager/package.json b/packages/pluginmanager/package.json index e887bb874c07..50e37765c8be 100644 --- a/packages/pluginmanager/package.json +++ b/packages/pluginmanager/package.json @@ -1,6 +1,6 @@ { "name": "@jupyterlab/pluginmanager", - "version": "4.1.0", + "version": "4.1.5", "description": "List, enable or disable individual plugins.", "homepage": "https://github.com/jupyterlab/jupyterlab", "bugs": { @@ -39,19 +39,19 @@ "watch": "tsc -b --watch" }, "dependencies": { - "@jupyterlab/application": "^4.1.0", - "@jupyterlab/apputils": "^4.2.0", - "@jupyterlab/coreutils": "^6.1.0", - "@jupyterlab/services": "^7.1.0", - "@jupyterlab/translation": "^4.1.0", - "@jupyterlab/ui-components": "^4.1.0", + "@jupyterlab/application": "^4.1.5", + "@jupyterlab/apputils": "^4.2.5", + "@jupyterlab/coreutils": "^6.1.5", + "@jupyterlab/services": "^7.1.5", + "@jupyterlab/translation": "^4.1.5", + "@jupyterlab/ui-components": "^4.1.5", "@lumino/coreutils": "^2.1.2", "@lumino/signaling": "^2.1.2", "@lumino/widgets": "^2.3.1", "react": "^18.2.0" }, "devDependencies": { - "@jupyterlab/testing": "^4.1.0", + "@jupyterlab/testing": "^4.1.5", "@types/jest": "^29.2.0", "jest": "^29.2.0", "rimraf": "~5.0.5", diff --git a/packages/property-inspector/package.json b/packages/property-inspector/package.json index b0cf6d43eedf..bf7b96cfe5b2 100644 --- a/packages/property-inspector/package.json +++ b/packages/property-inspector/package.json @@ -1,6 +1,6 @@ { "name": "@jupyterlab/property-inspector", - "version": "4.1.0", + "version": "4.1.5", "description": "A property inspector display for widgets", "homepage": "https://github.com/jupyterlab/jupyterlab", "bugs": { @@ -34,9 +34,9 @@ "watch": "tsc -w --listEmittedFiles" }, "dependencies": { - "@jupyterlab/application": "^4.1.0", - "@jupyterlab/translation": "^4.1.0", - "@jupyterlab/ui-components": "^4.1.0", + "@jupyterlab/application": "^4.1.5", + "@jupyterlab/translation": "^4.1.5", + "@jupyterlab/ui-components": "^4.1.5", "@lumino/coreutils": "^2.1.2", "@lumino/disposable": "^2.1.2", "@lumino/signaling": "^2.1.2", diff --git a/packages/rendermime-extension/package.json b/packages/rendermime-extension/package.json index a53a6e734ad6..6f06ce348dd3 100644 --- a/packages/rendermime-extension/package.json +++ b/packages/rendermime-extension/package.json @@ -1,6 +1,6 @@ { "name": "@jupyterlab/rendermime-extension", - "version": "4.1.0", + "version": "4.1.5", "description": "A rendermime extension for JupyterLab", "homepage": "https://github.com/jupyterlab/jupyterlab", "bugs": { @@ -34,11 +34,11 @@ "watch": "tsc -b --watch" }, "dependencies": { - "@jupyterlab/application": "^4.1.0", - "@jupyterlab/apputils": "^4.2.0", - "@jupyterlab/docmanager": "^4.1.0", - "@jupyterlab/rendermime": "^4.1.0", - "@jupyterlab/translation": "^4.1.0" + "@jupyterlab/application": "^4.1.5", + "@jupyterlab/apputils": "^4.2.5", + "@jupyterlab/docmanager": "^4.1.5", + "@jupyterlab/rendermime": "^4.1.5", + "@jupyterlab/translation": "^4.1.5" }, "devDependencies": { "rimraf": "~5.0.5", diff --git a/packages/rendermime-interfaces/package.json b/packages/rendermime-interfaces/package.json index 76ce6d8e4f67..597b8ddd5a85 100644 --- a/packages/rendermime-interfaces/package.json +++ b/packages/rendermime-interfaces/package.json @@ -1,6 +1,6 @@ { "name": "@jupyterlab/rendermime-interfaces", - "version": "3.9.0", + "version": "3.9.5", "description": "JupyterLab - Interfaces for Mime Renderers", "homepage": "https://github.com/jupyterlab/jupyterlab", "bugs": { diff --git a/packages/rendermime/package.json b/packages/rendermime/package.json index 8612638e520d..4c75e0affe5f 100644 --- a/packages/rendermime/package.json +++ b/packages/rendermime/package.json @@ -1,6 +1,6 @@ { "name": "@jupyterlab/rendermime", - "version": "4.1.0", + "version": "4.1.5", "description": "JupyterLab - RenderMime", "homepage": "https://github.com/jupyterlab/jupyterlab", "bugs": { @@ -42,13 +42,13 @@ "watch": "tsc -b --watch" }, "dependencies": { - "@jupyterlab/apputils": "^4.2.0", - "@jupyterlab/coreutils": "^6.1.0", - "@jupyterlab/nbformat": "^4.1.0", - "@jupyterlab/observables": "^5.1.0", - "@jupyterlab/rendermime-interfaces": "^3.9.0", - "@jupyterlab/services": "^7.1.0", - "@jupyterlab/translation": "^4.1.0", + "@jupyterlab/apputils": "^4.2.5", + "@jupyterlab/coreutils": "^6.1.5", + "@jupyterlab/nbformat": "^4.1.5", + "@jupyterlab/observables": "^5.1.5", + "@jupyterlab/rendermime-interfaces": "^3.9.5", + "@jupyterlab/services": "^7.1.5", + "@jupyterlab/translation": "^4.1.5", "@lumino/coreutils": "^2.1.2", "@lumino/messaging": "^2.0.1", "@lumino/signaling": "^2.1.2", @@ -56,7 +56,7 @@ "lodash.escape": "^4.0.1" }, "devDependencies": { - "@jupyterlab/testing": "^4.1.0", + "@jupyterlab/testing": "^4.1.5", "@types/jest": "^29.2.0", "@types/lodash.escape": "^4.0.6", "fs-extra": "^10.1.0", diff --git a/packages/rendermime/src/widgets.ts b/packages/rendermime/src/widgets.ts index 879dcd94af46..78eb93aa55cf 100644 --- a/packages/rendermime/src/widgets.ts +++ b/packages/rendermime/src/widgets.ts @@ -184,7 +184,7 @@ export class RenderedHTML extends RenderedHTMLCommon { * @returns A promise which resolves when rendering is complete. */ render(model: IRenderMime.IMimeModel): Promise { - return renderers.renderHTML({ + return (this._rendered = renderers.renderHTML({ host: this.node, source: String(model.data[this.mimeType]), trusted: model.trusted, @@ -194,17 +194,24 @@ export class RenderedHTML extends RenderedHTMLCommon { shouldTypeset: this.isAttached, latexTypesetter: this.latexTypesetter, translator: this.translator - }); + })); } /** * A message handler invoked on an `'after-attach'` message. */ onAfterAttach(msg: Message): void { - if (this.latexTypesetter) { - this.latexTypesetter.typeset(this.node); - } + this._rendered + .then(() => { + if (this.latexTypesetter) { + this.latexTypesetter.typeset(this.node); + } + }) + .catch(console.warn); } + + // A promise which resolves when most recent rendering is complete. + private _rendered: Promise = Promise.resolve(); } /** @@ -229,22 +236,29 @@ export class RenderedLatex extends RenderedCommon { * @returns A promise which resolves when rendering is complete. */ render(model: IRenderMime.IMimeModel): Promise { - return renderers.renderLatex({ + return (this._rendered = renderers.renderLatex({ host: this.node, source: String(model.data[this.mimeType]), shouldTypeset: this.isAttached, latexTypesetter: this.latexTypesetter - }); + })); } /** * A message handler invoked on an `'after-attach'` message. */ onAfterAttach(msg: Message): void { - if (this.latexTypesetter) { - this.latexTypesetter.typeset(this.node); - } + this._rendered + .then(() => { + if (this.latexTypesetter) { + this.latexTypesetter.typeset(this.node); + } + }) + .catch(console.warn); } + + // A promise which resolves when most recent rendering is complete. + private _rendered: Promise = Promise.resolve(); } /** @@ -306,7 +320,7 @@ export class RenderedMarkdown extends RenderedHTMLCommon { * @returns A promise which resolves when rendering is complete. */ render(model: IRenderMime.IMimeModel): Promise { - return renderers.renderMarkdown({ + return (this._rendered = renderers.renderMarkdown({ host: this.node, source: String(model.data[this.mimeType]), trusted: model.trusted, @@ -317,7 +331,7 @@ export class RenderedMarkdown extends RenderedHTMLCommon { latexTypesetter: this.latexTypesetter, markdownParser: this.markdownParser, translator: this.translator - }); + })); } /** @@ -335,10 +349,17 @@ export class RenderedMarkdown extends RenderedHTMLCommon { * A message handler invoked on an `'after-attach'` message. */ onAfterAttach(msg: Message): void { - if (this.latexTypesetter) { - this.latexTypesetter.typeset(this.node); - } + this._rendered + .then(() => { + if (this.latexTypesetter) { + this.latexTypesetter.typeset(this.node); + } + }) + .catch(console.warn); } + + // A promise which resolves when most recent rendering is complete. + private _rendered: Promise = Promise.resolve(); } /** @@ -366,23 +387,30 @@ export class RenderedSVG extends RenderedCommon { const metadata = model.metadata[this.mimeType] as | ReadonlyJSONObject | undefined; - return renderers.renderSVG({ + return (this._rendered = renderers.renderSVG({ host: this.node, source: String(model.data[this.mimeType]), trusted: model.trusted, unconfined: metadata && (metadata.unconfined as boolean | undefined), translator: this.translator - }); + })); } /** * A message handler invoked on an `'after-attach'` message. */ onAfterAttach(msg: Message): void { - if (this.latexTypesetter) { - this.latexTypesetter.typeset(this.node); - } + this._rendered + .then(() => { + if (this.latexTypesetter) { + this.latexTypesetter.typeset(this.node); + } + }) + .catch(console.warn); } + + // A promise which resolves when most recent rendering is complete. + private _rendered: Promise = Promise.resolve(); } /** diff --git a/packages/running-extension/package.json b/packages/running-extension/package.json index a5baa31ab78d..7a8c7963bfd7 100644 --- a/packages/running-extension/package.json +++ b/packages/running-extension/package.json @@ -1,6 +1,6 @@ { "name": "@jupyterlab/running-extension", - "version": "4.1.0", + "version": "4.1.5", "description": "JupyterLab - Running Sessions Extension", "homepage": "https://github.com/jupyterlab/jupyterlab", "bugs": { @@ -38,14 +38,14 @@ "watch": "tsc -b --watch" }, "dependencies": { - "@jupyterlab/application": "^4.1.0", - "@jupyterlab/coreutils": "^6.1.0", - "@jupyterlab/docregistry": "^4.1.0", - "@jupyterlab/rendermime-interfaces": "^3.9.0", - "@jupyterlab/running": "^4.1.0", - "@jupyterlab/services": "^7.1.0", - "@jupyterlab/translation": "^4.1.0", - "@jupyterlab/ui-components": "^4.1.0", + "@jupyterlab/application": "^4.1.5", + "@jupyterlab/coreutils": "^6.1.5", + "@jupyterlab/docregistry": "^4.1.5", + "@jupyterlab/rendermime-interfaces": "^3.9.5", + "@jupyterlab/running": "^4.1.5", + "@jupyterlab/services": "^7.1.5", + "@jupyterlab/translation": "^4.1.5", + "@jupyterlab/ui-components": "^4.1.5", "@lumino/commands": "^2.2.0", "@lumino/polling": "^2.1.2", "@lumino/signaling": "^2.1.2", diff --git a/packages/running/package.json b/packages/running/package.json index c960f3390c58..339f2d7714a0 100644 --- a/packages/running/package.json +++ b/packages/running/package.json @@ -1,6 +1,6 @@ { "name": "@jupyterlab/running", - "version": "4.1.0", + "version": "4.1.5", "description": "JupyterLab - Running Sessions Panel", "homepage": "https://github.com/jupyterlab/jupyterlab", "bugs": { @@ -37,9 +37,9 @@ "watch": "tsc -b --watch" }, "dependencies": { - "@jupyterlab/apputils": "^4.2.0", - "@jupyterlab/translation": "^4.1.0", - "@jupyterlab/ui-components": "^4.1.0", + "@jupyterlab/apputils": "^4.2.5", + "@jupyterlab/translation": "^4.1.5", + "@jupyterlab/ui-components": "^4.1.5", "@lumino/coreutils": "^2.1.2", "@lumino/disposable": "^2.1.2", "@lumino/messaging": "^2.0.1", diff --git a/packages/services/README.md b/packages/services/README.md index fb1ecb90a920..0a2834cef8a8 100644 --- a/packages/services/README.md +++ b/packages/services/README.md @@ -2,7 +2,7 @@ Javascript client for the Jupyter services REST APIs -[API Docs](https://jupyterlab.readthedocs.io/en/latest/api/) +[API Docs](https://jupyterlab.readthedocs.io/en/stable/api/) [REST API Docs](https://petstore.swagger.io/?url=https://raw.githubusercontent.com/jupyter-server/jupyter_server/main/jupyter_server/services/api/api.yaml) diff --git a/packages/services/examples/browser/package.json b/packages/services/examples/browser/package.json index d80b8861c5d8..49e5429883b6 100644 --- a/packages/services/examples/browser/package.json +++ b/packages/services/examples/browser/package.json @@ -1,6 +1,6 @@ { "name": "@jupyterlab/example-services-browser", - "version": "4.1.0", + "version": "4.1.5", "private": true, "files": [ "lib/*.{d.ts,js,js.map}" @@ -10,8 +10,8 @@ "clean": "rimraf lib && rimraf tsconfig.tsbuildinfo" }, "dependencies": { - "@jupyterlab/coreutils": "^6.1.0", - "@jupyterlab/services": "^7.1.0", + "@jupyterlab/coreutils": "^6.1.5", + "@jupyterlab/services": "^7.1.5", "@lumino/coreutils": "^2.1.2" }, "devDependencies": { diff --git a/packages/services/examples/node/package.json b/packages/services/examples/node/package.json index 67050d5e8ddf..4874ae1ac014 100644 --- a/packages/services/examples/node/package.json +++ b/packages/services/examples/node/package.json @@ -1,13 +1,13 @@ { "name": "node-example", - "version": "4.1.0", + "version": "4.1.5", "private": true, "scripts": { "clean": "rimraf node_modules", "update": "rimraf node_modules/@jupyterlab/services && npm install" }, "dependencies": { - "@jupyterlab/services": "^7.1.0", + "@jupyterlab/services": "^7.1.5", "ws": "^8.11.0" }, "devDependencies": { diff --git a/packages/services/examples/typescript-browser-with-output/package.json b/packages/services/examples/typescript-browser-with-output/package.json index 5d02154f260e..515473b7783d 100644 --- a/packages/services/examples/typescript-browser-with-output/package.json +++ b/packages/services/examples/typescript-browser-with-output/package.json @@ -1,6 +1,6 @@ { "name": "@jupyterlab/example-services-outputarea", - "version": "4.1.0", + "version": "4.1.5", "private": true, "sideEffects": [ "style/*" @@ -16,10 +16,10 @@ "clean": "rimraf lib && rimraf tsconfig.tsbuildinfo" }, "dependencies": { - "@jupyterlab/coreutils": "^6.1.0", - "@jupyterlab/outputarea": "^4.1.0", - "@jupyterlab/rendermime": "^4.1.0", - "@jupyterlab/services": "^7.1.0" + "@jupyterlab/coreutils": "^6.1.5", + "@jupyterlab/outputarea": "^4.1.5", + "@jupyterlab/rendermime": "^4.1.5", + "@jupyterlab/services": "^7.1.5" }, "devDependencies": { "css-loader": "^6.7.1", diff --git a/packages/services/package.json b/packages/services/package.json index 1957cc0d5e0a..fdee0c92e382 100644 --- a/packages/services/package.json +++ b/packages/services/package.json @@ -1,6 +1,6 @@ { "name": "@jupyterlab/services", - "version": "7.1.0", + "version": "7.1.5", "description": "Client APIs for the Jupyter services REST APIs", "keywords": [ "jupyter", @@ -47,10 +47,10 @@ }, "dependencies": { "@jupyter/ydoc": "^1.1.1", - "@jupyterlab/coreutils": "^6.1.0", - "@jupyterlab/nbformat": "^4.1.0", - "@jupyterlab/settingregistry": "^4.1.0", - "@jupyterlab/statedb": "^4.1.0", + "@jupyterlab/coreutils": "^6.1.5", + "@jupyterlab/nbformat": "^4.1.5", + "@jupyterlab/settingregistry": "^4.1.5", + "@jupyterlab/statedb": "^4.1.5", "@lumino/coreutils": "^2.1.2", "@lumino/disposable": "^2.1.2", "@lumino/polling": "^2.1.2", @@ -59,7 +59,7 @@ "ws": "^8.11.0" }, "devDependencies": { - "@jupyterlab/testing": "^4.1.0", + "@jupyterlab/testing": "^4.1.5", "@types/jest": "^29.2.0", "@types/ws": "^8.5.3", "jest": "^29.2.0", diff --git a/packages/services/src/config/index.ts b/packages/services/src/config/index.ts index 176f4d601bfa..a9ea28916683 100644 --- a/packages/services/src/config/index.ts +++ b/packages/services/src/config/index.ts @@ -104,7 +104,7 @@ class DefaultConfigSection implements IConfigSection { * Load the initial data for this section. * * #### Notes - * Uses the [Jupyter Notebook API](https://petstore.swagger.io/?url=https://raw.githubusercontent.com/jupyter-server/jupyter_server/main/jupyter_server/services/api/api.yaml#!/config). + * Uses the [Jupyter Server API](https://petstore.swagger.io/?url=https://raw.githubusercontent.com/jupyter-server/jupyter_server/main/jupyter_server/services/api/api.yaml#!/config). * * The promise is fulfilled on a valid response and rejected otherwise. */ @@ -125,7 +125,7 @@ class DefaultConfigSection implements IConfigSection { * Modify the stored config values. * * #### Notes - * Uses the [Jupyter Notebook API](https://petstore.swagger.io/?url=https://raw.githubusercontent.com/jupyter-server/jupyter_server/main/jupyter_server/services/api/api.yaml#!/config). + * Uses the [Jupyter Server API](https://petstore.swagger.io/?url=https://raw.githubusercontent.com/jupyter-server/jupyter_server/main/jupyter_server/services/api/api.yaml#!/config). * * The promise is fulfilled on a valid response and rejected otherwise. * @@ -181,7 +181,7 @@ export class ConfigWithDefaults { * Set a config value. * * #### Notes - * Uses the [Jupyter Notebook API](https://petstore.swagger.io/?url=https://raw.githubusercontent.com/jupyter-server/jupyter_server/main/jupyter_server/services/api/api.yaml#!/config). + * Uses the [Jupyter Server API](https://petstore.swagger.io/?url=https://raw.githubusercontent.com/jupyter-server/jupyter_server/main/jupyter_server/services/api/api.yaml#!/config). * * The promise is fulfilled on a valid response and rejected otherwise. * diff --git a/packages/services/src/contents/index.ts b/packages/services/src/contents/index.ts index 1ef17cd1056d..98fdab702afc 100644 --- a/packages/services/src/contents/index.ts +++ b/packages/services/src/contents/index.ts @@ -1127,7 +1127,7 @@ export class Drive implements Contents.IDrive { * * @returns A promise which resolves with the file content. * - * Uses the [Jupyter Notebook API](https://petstore.swagger.io/?url=https://raw.githubusercontent.com/jupyter-server/jupyter_server/main/jupyter_server/services/api/api.yaml#!/contents) and validates the response model. + * Uses the [Jupyter Server API](https://petstore.swagger.io/?url=https://raw.githubusercontent.com/jupyter-server/jupyter_server/main/jupyter_server/services/api/api.yaml#!/contents) and validates the response model. */ async get( localPath: string, @@ -1169,7 +1169,13 @@ export class Drive implements Contents.IDrive { getDownloadUrl(localPath: string): Promise { const baseUrl = this.serverSettings.baseUrl; let url = URLExt.join(baseUrl, FILES_URL, URLExt.encodeParts(localPath)); - const xsrfTokenMatch = document.cookie.match('\\b_xsrf=([^;]*)\\b'); + let cookie = ''; + try { + cookie = document.cookie; + } catch (e) { + // e.g. SecurityError in case of CSP Sandbox + } + const xsrfTokenMatch = cookie.match('\\b_xsrf=([^;]*)\\b'); if (xsrfTokenMatch) { const fullUrl = new URL(url); fullUrl.searchParams.append('_xsrf', xsrfTokenMatch[1]); @@ -1187,7 +1193,7 @@ export class Drive implements Contents.IDrive { * file is created. * * #### Notes - * Uses the [Jupyter Notebook API](https://petstore.swagger.io/?url=https://raw.githubusercontent.com/jupyter-server/jupyter_server/main/jupyter_server/services/api/api.yaml#!/contents) and validates the response model. + * Uses the [Jupyter Server API](https://petstore.swagger.io/?url=https://raw.githubusercontent.com/jupyter-server/jupyter_server/main/jupyter_server/services/api/api.yaml#!/contents) and validates the response model. */ async newUntitled( options: Contents.ICreateOptions = {} @@ -1229,7 +1235,7 @@ export class Drive implements Contents.IDrive { * @returns A promise which resolves when the file is deleted. * * #### Notes - * Uses the [Jupyter Notebook API](https://petstore.swagger.io/?url=https://raw.githubusercontent.com/jupyter-server/jupyter_server/main/jupyter_server/services/api/api.yaml#!/contents). + * Uses the [Jupyter Server API](https://petstore.swagger.io/?url=https://raw.githubusercontent.com/jupyter-server/jupyter_server/main/jupyter_server/services/api/api.yaml#!/contents). */ async delete(localPath: string): Promise { const url = this._getUrl(localPath); @@ -1260,7 +1266,7 @@ export class Drive implements Contents.IDrive { * the file is renamed. * * #### Notes - * Uses the [Jupyter Notebook API](https://petstore.swagger.io/?url=https://raw.githubusercontent.com/jupyter-server/jupyter_server/main/jupyter_server/services/api/api.yaml#!/contents) and validates the response model. + * Uses the [Jupyter Server API](https://petstore.swagger.io/?url=https://raw.githubusercontent.com/jupyter-server/jupyter_server/main/jupyter_server/services/api/api.yaml#!/contents) and validates the response model. */ async rename( oldLocalPath: string, @@ -1300,7 +1306,7 @@ export class Drive implements Contents.IDrive { * #### Notes * Ensure that `model.content` is populated for the file. * - * Uses the [Jupyter Notebook API](https://petstore.swagger.io/?url=https://raw.githubusercontent.com/jupyter-server/jupyter_server/main/jupyter_server/services/api/api.yaml#!/contents) and validates the response model. + * Uses the [Jupyter Server API](https://petstore.swagger.io/?url=https://raw.githubusercontent.com/jupyter-server/jupyter_server/main/jupyter_server/services/api/api.yaml#!/contents) and validates the response model. */ async save( localPath: string, @@ -1341,7 +1347,7 @@ export class Drive implements Contents.IDrive { * #### Notes * The server will select the name of the copied file. * - * Uses the [Jupyter Notebook API](https://petstore.swagger.io/?url=https://raw.githubusercontent.com/jupyter-server/jupyter_server/main/jupyter_server/services/api/api.yaml#!/contents) and validates the response model. + * Uses the [Jupyter Server API](https://petstore.swagger.io/?url=https://raw.githubusercontent.com/jupyter-server/jupyter_server/main/jupyter_server/services/api/api.yaml#!/contents) and validates the response model. */ async copy(fromFile: string, toDir: string): Promise { const settings = this.serverSettings; @@ -1374,7 +1380,7 @@ export class Drive implements Contents.IDrive { * checkpoint is created. * * #### Notes - * Uses the [Jupyter Notebook API](https://petstore.swagger.io/?url=https://raw.githubusercontent.com/jupyter-server/jupyter_server/main/jupyter_server/services/api/api.yaml#!/contents) and validates the response model. + * Uses the [Jupyter Server API](https://petstore.swagger.io/?url=https://raw.githubusercontent.com/jupyter-server/jupyter_server/main/jupyter_server/services/api/api.yaml#!/contents) and validates the response model. */ async createCheckpoint( localPath: string @@ -1404,7 +1410,7 @@ export class Drive implements Contents.IDrive { * the file. * * #### Notes - * Uses the [Jupyter Notebook API](https://petstore.swagger.io/?url=https://raw.githubusercontent.com/jupyter-server/jupyter_server/main/jupyter_server/services/api/api.yaml#!/contents) and validates the response model. + * Uses the [Jupyter Server API](https://petstore.swagger.io/?url=https://raw.githubusercontent.com/jupyter-server/jupyter_server/main/jupyter_server/services/api/api.yaml#!/contents) and validates the response model. */ async listCheckpoints( localPath: string @@ -1439,7 +1445,7 @@ export class Drive implements Contents.IDrive { * @returns A promise which resolves when the checkpoint is restored. * * #### Notes - * Uses the [Jupyter Notebook API](https://petstore.swagger.io/?url=https://raw.githubusercontent.com/jupyter-server/jupyter_server/main/jupyter_server/services/api/api.yaml#!/contents). + * Uses the [Jupyter Server API](https://petstore.swagger.io/?url=https://raw.githubusercontent.com/jupyter-server/jupyter_server/main/jupyter_server/services/api/api.yaml#!/contents). */ async restoreCheckpoint( localPath: string, @@ -1468,7 +1474,7 @@ export class Drive implements Contents.IDrive { * @returns A promise which resolves when the checkpoint is deleted. * * #### Notes - * Uses the [Jupyter Notebook API](https://petstore.swagger.io/?url=https://raw.githubusercontent.com/jupyter-server/jupyter_server/main/jupyter_server/services/api/api.yaml#!/contents). + * Uses the [Jupyter Server API](https://petstore.swagger.io/?url=https://raw.githubusercontent.com/jupyter-server/jupyter_server/main/jupyter_server/services/api/api.yaml#!/contents). */ async deleteCheckpoint( localPath: string, @@ -1543,7 +1549,7 @@ export namespace Drive { /** * A REST endpoint for drive requests. * If not given, defaults to the Jupyter - * REST API given by [Jupyter Notebook API](https://petstore.swagger.io/?url=https://raw.githubusercontent.com/jupyter-server/jupyter_server/main/jupyter_server/services/api/api.yaml#!/contents). + * REST API given by [Jupyter Server API](https://petstore.swagger.io/?url=https://raw.githubusercontent.com/jupyter-server/jupyter_server/main/jupyter_server/services/api/api.yaml#!/contents). */ apiEndpoint?: string; } diff --git a/packages/services/src/kernel/default.ts b/packages/services/src/kernel/default.ts index 4b5877f4d52e..125b69a89190 100644 --- a/packages/services/src/kernel/default.ts +++ b/packages/services/src/kernel/default.ts @@ -439,7 +439,7 @@ export class KernelConnection implements Kernel.IKernelConnection { * Interrupt a kernel. * * #### Notes - * Uses the [Jupyter Notebook API](https://petstore.swagger.io/?url=https://raw.githubusercontent.com/jupyter-server/jupyter_server/main/jupyter_server/services/api/api.yaml#!/kernels). + * Uses the [Jupyter Server API](https://petstore.swagger.io/?url=https://raw.githubusercontent.com/jupyter-server/jupyter_server/main/jupyter_server/services/api/api.yaml#!/kernels). * * The promise is fulfilled on a valid response and rejected otherwise. * @@ -460,7 +460,7 @@ export class KernelConnection implements Kernel.IKernelConnection { * Request a kernel restart. * * #### Notes - * Uses the [Jupyter Notebook API](https://petstore.swagger.io/?url=https://raw.githubusercontent.com/jupyter-server/jupyter_server/main/jupyter_server/services/api/api.yaml#!/kernels) + * Uses the [Jupyter Server API](https://petstore.swagger.io/?url=https://raw.githubusercontent.com/jupyter-server/jupyter_server/main/jupyter_server/services/api/api.yaml#!/kernels) * and validates the response model. * * Any existing Future or Comm objects are cleared once the kernel has @@ -528,7 +528,7 @@ export class KernelConnection implements Kernel.IKernelConnection { * Shutdown a kernel. * * #### Notes - * Uses the [Jupyter Notebook API](https://petstore.swagger.io/?url=https://raw.githubusercontent.com/jupyter-server/jupyter_server/main/jupyter_server/services/api/api.yaml#!/kernels). + * Uses the [Jupyter Server API](https://petstore.swagger.io/?url=https://raw.githubusercontent.com/jupyter-server/jupyter_server/main/jupyter_server/services/api/api.yaml#!/kernels). * * The promise is fulfilled on a valid response and rejected otherwise. * diff --git a/packages/services/src/kernel/kernel.ts b/packages/services/src/kernel/kernel.ts index 2e4655f3f8de..abe443fa250a 100644 --- a/packages/services/src/kernel/kernel.ts +++ b/packages/services/src/kernel/kernel.ts @@ -175,7 +175,7 @@ export interface IKernelConnection extends IObservableDisposable { * @returns A promise that resolves when the kernel has interrupted. * * #### Notes - * Uses the [Jupyter Notebook API](https://petstore.swagger.io/?url=https://raw.githubusercontent.com/jupyter-server/jupyter_server/main/jupyter_server/services/api/api.yaml#!/kernels). + * Uses the [Jupyter Server API](https://petstore.swagger.io/?url=https://raw.githubusercontent.com/jupyter-server/jupyter_server/main/jupyter_server/services/api/api.yaml#!/kernels). * * The promise is fulfilled on a valid response and rejected otherwise. * @@ -192,7 +192,7 @@ export interface IKernelConnection extends IObservableDisposable { * @returns A promise that resolves when the kernel has restarted. * * #### Notes - * Uses the [Jupyter Notebook API](https://petstore.swagger.io/?url=https://raw.githubusercontent.com/jupyter-server/jupyter_server/main/jupyter_server/services/api/api.yaml#!/kernels) and validates the response model. + * Uses the [Jupyter Server API](https://petstore.swagger.io/?url=https://raw.githubusercontent.com/jupyter-server/jupyter_server/main/jupyter_server/services/api/api.yaml#!/kernels) and validates the response model. * * Any existing Future or Comm objects are cleared. * diff --git a/packages/services/src/kernel/restapi.ts b/packages/services/src/kernel/restapi.ts index 01920fe94aa0..f2399cc1f3d8 100644 --- a/packages/services/src/kernel/restapi.ts +++ b/packages/services/src/kernel/restapi.ts @@ -9,7 +9,7 @@ import { validateModel, validateModels } from './validate'; * The kernel model provided by the server. * * #### Notes - * See the [Jupyter Notebook API](https://petstore.swagger.io/?url=https://raw.githubusercontent.com/jupyter-server/jupyter_server/main/jupyter_server/services/api/api.yaml#!/kernels). + * See the [Jupyter Server API](https://petstore.swagger.io/?url=https://raw.githubusercontent.com/jupyter-server/jupyter_server/main/jupyter_server/services/api/api.yaml#!/kernels). */ export interface IModel { /** @@ -62,7 +62,7 @@ export const KERNEL_SERVICE_URL = 'api/kernels'; * @returns A promise that resolves with the list of running kernels. * * #### Notes - * Uses the [Jupyter Notebook API](https://petstore.swagger.io/?url=https://raw.githubusercontent.com/jupyter-server/jupyter_server/main/jupyter_server/services/api/api.yaml#!/kernels) and validates the response model. + * Uses the [Jupyter Server API](https://petstore.swagger.io/?url=https://raw.githubusercontent.com/jupyter-server/jupyter_server/main/jupyter_server/services/api/api.yaml#!/kernels) and validates the response model. * * The promise is fulfilled on a valid response and rejected otherwise. */ @@ -88,7 +88,7 @@ export async function listRunning( * @returns A promise that resolves with a kernel connection object. * * #### Notes - * Uses the [Jupyter Notebook API](https://petstore.swagger.io/?url=https://raw.githubusercontent.com/jupyter-server/jupyter_server/main/jupyter_server/services/api/api.yaml#!/kernels) and validates the response model. + * Uses the [Jupyter Server API](https://petstore.swagger.io/?url=https://raw.githubusercontent.com/jupyter-server/jupyter_server/main/jupyter_server/services/api/api.yaml#!/kernels) and validates the response model. * * The promise is fulfilled on a valid response and rejected otherwise. */ @@ -120,7 +120,7 @@ export type IKernelOptions = Partial>; * Restart a kernel. * * #### Notes - * Uses the [Jupyter Notebook API](https://petstore.swagger.io/?url=https://raw.githubusercontent.com/jupyter-server/jupyter_server/main/jupyter_server/services/api/api.yaml#!/kernels) and validates the response model. + * Uses the [Jupyter Server API](https://petstore.swagger.io/?url=https://raw.githubusercontent.com/jupyter-server/jupyter_server/main/jupyter_server/services/api/api.yaml#!/kernels) and validates the response model. * * The promise is fulfilled on a valid response (and thus after a restart) and rejected otherwise. */ @@ -149,7 +149,7 @@ export async function restartKernel( * Interrupt a kernel. * * #### Notes - * Uses the [Jupyter Notebook API](https://petstore.swagger.io/?url=https://raw.githubusercontent.com/jupyter-server/jupyter_server/main/jupyter_server/services/api/api.yaml#!/kernels) and validates the response model. + * Uses the [Jupyter Server API](https://petstore.swagger.io/?url=https://raw.githubusercontent.com/jupyter-server/jupyter_server/main/jupyter_server/services/api/api.yaml#!/kernels) and validates the response model. * * The promise is fulfilled on a valid response and rejected otherwise. */ @@ -182,7 +182,7 @@ export async function interruptKernel( * * * #### Notes - * Uses the [Jupyter Notebook API](https://petstore.swagger.io/?url=https://raw.githubusercontent.com/jupyter-server/jupyter_server/main/jupyter_server/services/api/api.yaml#!/kernels) and validates the response model. + * Uses the [Jupyter Server API](https://petstore.swagger.io/?url=https://raw.githubusercontent.com/jupyter-server/jupyter_server/main/jupyter_server/services/api/api.yaml#!/kernels) and validates the response model. * * The promise is fulfilled on a valid response and rejected otherwise. */ @@ -210,7 +210,7 @@ export async function shutdownKernel( * Get a full kernel model from the server by kernel id string. * * #### Notes - * Uses the [Jupyter Notebook API](https://petstore.swagger.io/?url=https://raw.githubusercontent.com/jupyter-server/jupyter_server/main/jupyter_server/services/api/api.yaml#!/kernels) and validates the response model. + * Uses the [Jupyter Server API](https://petstore.swagger.io/?url=https://raw.githubusercontent.com/jupyter-server/jupyter_server/main/jupyter_server/services/api/api.yaml#!/kernels) and validates the response model. * * The promise is fulfilled on a valid response and rejected otherwise. */ diff --git a/packages/services/src/kernelspec/restapi.ts b/packages/services/src/kernelspec/restapi.ts index 169190f6e5ed..2e06a20f3c00 100644 --- a/packages/services/src/kernelspec/restapi.ts +++ b/packages/services/src/kernelspec/restapi.ts @@ -21,7 +21,7 @@ const KERNELSPEC_SERVICE_URL = 'api/kernelspecs'; * @returns A promise that resolves with the kernel specs. * * #### Notes - * Uses the [Jupyter Notebook API](https://petstore.swagger.io/?url=https://raw.githubusercontent.com/jupyter-server/jupyter_server/main/jupyter_server/services/api/api.yaml#!/kernelspecs). + * Uses the [Jupyter Server API](https://petstore.swagger.io/?url=https://raw.githubusercontent.com/jupyter-server/jupyter_server/main/jupyter_server/services/api/api.yaml#!/kernelspecs). */ export async function getSpecs( settings: ServerConnection.ISettings = ServerConnection.makeSettings() @@ -83,7 +83,7 @@ export interface ISpecModel extends PartialJSONObject { * The available kernelSpec models. * * #### Notes - * See the [Jupyter Notebook API](https://petstore.swagger.io/?url=https://raw.githubusercontent.com/jupyter-server/jupyter_server/main/jupyter_server/services/api/api.yaml#!/kernelspecs). + * See the [Jupyter Server API](https://petstore.swagger.io/?url=https://raw.githubusercontent.com/jupyter-server/jupyter_server/main/jupyter_server/services/api/api.yaml#!/kernelspecs). */ export interface ISpecModels extends PartialJSONObject { /** diff --git a/packages/services/src/serverconnection.ts b/packages/services/src/serverconnection.ts index 01d799112586..b162c81ba1c9 100644 --- a/packages/services/src/serverconnection.ts +++ b/packages/services/src/serverconnection.ts @@ -306,7 +306,7 @@ namespace Private { authenticated = true; request.headers.append('Authorization', `token ${settings.token}`); } - if (typeof document !== 'undefined' && document?.cookie) { + if (typeof document !== 'undefined') { const xsrfToken = getCookie('_xsrf'); if (xsrfToken !== undefined) { authenticated = true; @@ -334,7 +334,14 @@ namespace Private { */ function getCookie(name: string): string | undefined { // From http://www.tornadoweb.org/en/stable/guide/security.html - const matches = document.cookie.match('\\b' + name + '=([^;]*)\\b'); + let cookie = ''; + try { + cookie = document.cookie; + } catch (e) { + // e.g. SecurityError in case of CSP Sandbox + return; + } + const matches = cookie.match('\\b' + name + '=([^;]*)\\b'); return matches?.[1]; } } diff --git a/packages/services/src/session/default.ts b/packages/services/src/session/default.ts index 448ed71b42b1..05ffeb314043 100644 --- a/packages/services/src/session/default.ts +++ b/packages/services/src/session/default.ts @@ -290,7 +290,7 @@ export class SessionConnection implements Session.ISessionConnection { * @returns - The promise fulfilled on a valid response from the server. * * #### Notes - * Uses the [Jupyter Notebook API](https://petstore.swagger.io/?url=https://raw.githubusercontent.com/jupyter-server/jupyter_server/main/jupyter_server/services/api/api.yaml#!/sessions), and validates the response. + * Uses the [Jupyter Server API](https://petstore.swagger.io/?url=https://raw.githubusercontent.com/jupyter-server/jupyter_server/main/jupyter_server/services/api/api.yaml#!/sessions), and validates the response. * Disposes of the session and emits a [sessionDied] signal on success. */ async shutdown(): Promise { diff --git a/packages/services/src/session/session.ts b/packages/services/src/session/session.ts index 517894efbb2c..7a28f4b5498b 100644 --- a/packages/services/src/session/session.ts +++ b/packages/services/src/session/session.ts @@ -367,7 +367,7 @@ export interface IManager extends IDisposable { * The session model returned by the server. * * #### Notes - * See the [Jupyter Notebook API](https://petstore.swagger.io/?url=https://raw.githubusercontent.com/jupyter-server/jupyter_server/main/jupyter_server/services/api/api.yaml#!/sessions). + * See the [Jupyter Server API](https://petstore.swagger.io/?url=https://raw.githubusercontent.com/jupyter-server/jupyter_server/main/jupyter_server/services/api/api.yaml#!/sessions). */ export interface IModel { /** @@ -388,7 +388,7 @@ export interface IModel { * parameter is not technically required, but is often assumed to be nonempty, * so we require it too. * - * See the [Jupyter Notebook API](https://petstore.swagger.io/?url=https://raw.githubusercontent.com/jupyter-server/jupyter_server/main/jupyter_server/services/api/api.yaml#!/sessions). + * See the [Jupyter Server API](https://petstore.swagger.io/?url=https://raw.githubusercontent.com/jupyter-server/jupyter_server/main/jupyter_server/services/api/api.yaml#!/sessions). */ export type ISessionOptions = Pick & { kernel?: Partial>; diff --git a/packages/services/src/testutils.ts b/packages/services/src/testutils.ts index eaa7d9aafcf5..229297fe9e07 100644 --- a/packages/services/src/testutils.ts +++ b/packages/services/src/testutils.ts @@ -307,31 +307,48 @@ export const SessionConnectionMock = jest.fn< * A mock contents manager. */ export const ContentsManagerMock = jest.fn(() => { - const files = new Map(); + const files = new Map>(); const dummy = new ContentsManager(); const checkpoints = new Map(); const checkPointContent = new Map(); const baseModel = Private.createFile({ type: 'directory' }); - files.set('', { ...baseModel, path: '', name: '' }); + // create the default drive + files.set( + '', + new Map([ + ['', { ...baseModel, path: '', name: '' }] + ]) + ); const thisObject: Contents.IManager = { ...jest.requireActual('@jupyterlab/services'), newUntitled: jest.fn(options => { - const model = Private.createFile(options || {}); - files.set(model.path, model); + const driveName = dummy.driveName(options?.path || ''); + const localPath = dummy.localPath(options?.path || ''); + // create the test file without the drive name + const createOptions = { ...options, path: localPath }; + const model = Private.createFile(createOptions || {}); + // re-add the drive name to the model + const drivePath = driveName ? `${driveName}:${model.path}` : model.path; + const driveModel = { + ...model, + path: drivePath + }; + files.get(driveName)!.set(model.path, driveModel); fileChangedSignal.emit({ type: 'new', oldValue: null, - newValue: model + newValue: driveModel }); - return Promise.resolve(model); + return Promise.resolve(driveModel); }), createCheckpoint: jest.fn(path => { const lastModified = new Date().toISOString(); const data = { id: UUID.uuid4(), last_modified: lastModified }; checkpoints.set(path, data); - checkPointContent.set(path, files.get(path)?.content); + // TODO: handle drives + checkPointContent.set(path, files.get('')!.get(path)?.content); return Promise.resolve(data); }), listCheckpoints: jest.fn(path => { @@ -352,7 +369,8 @@ export const ContentsManagerMock = jest.fn(() => { if (!checkpoints.has(path)) { return Private.makeResponseError(404); } - (files.get(path) as any).content = checkPointContent.get(path); + // TODO: handle drives + (files.get('')!.get(path) as any).content = checkPointContent.get(path); return Promise.resolve(); }), getSharedModelFactory: jest.fn(() => { @@ -368,11 +386,14 @@ export const ContentsManagerMock = jest.fn(() => { return dummy.resolvePath(root, path); }), get: jest.fn((path, options) => { - path = Private.fixSlash(path); - if (!files.has(path)) { + const driveName = dummy.driveName(path); + const localPath = dummy.localPath(path); + const drive = files.get(driveName)!; + path = Private.fixSlash(localPath); + if (!drive.has(path)) { return Private.makeResponseError(404); } - const model = files.get(path)!; + const model = drive.get(path)!; const overrides: { hash?: string; last_modified?: string } = {}; if (path == 'random-hash.txt') { overrides.hash = Math.random().toString(); @@ -385,10 +406,11 @@ export const ContentsManagerMock = jest.fn(() => { if (model.type === 'directory') { if (options?.content !== false) { const content: Contents.IModel[] = []; - files.forEach(fileModel => { + drive.forEach(fileModel => { + const localPath = dummy.localPath(fileModel.path); if ( // If file path is under this directory, add it to contents array. - PathExt.dirname(fileModel.path) == model.path && + PathExt.dirname(localPath) == model.path && // But the directory should exclude itself from the contents array. fileModel !== model ) { @@ -408,16 +430,20 @@ export const ContentsManagerMock = jest.fn(() => { return dummy.driveName(path); }), rename: jest.fn((oldPath, newPath) => { - oldPath = Private.fixSlash(oldPath); - newPath = Private.fixSlash(newPath); - if (!files.has(oldPath)) { + const driveName = dummy.driveName(oldPath); + const drive = files.get(driveName)!; + let oldLocalPath = dummy.localPath(oldPath); + let newLocalPath = dummy.localPath(newPath); + oldLocalPath = Private.fixSlash(oldLocalPath); + newLocalPath = Private.fixSlash(newLocalPath); + if (!drive.has(oldLocalPath)) { return Private.makeResponseError(404); } - const oldValue = files.get(oldPath)!; - files.delete(oldPath); - const name = PathExt.basename(newPath); - const newValue = { ...oldValue, name, path: newPath }; - files.set(newPath, newValue); + const oldValue = drive.get(oldPath)!; + drive.delete(oldPath); + const name = PathExt.basename(newLocalPath); + const newValue = { ...oldValue, name, path: newLocalPath }; + drive.set(newPath, newValue); fileChangedSignal.emit({ type: 'rename', oldValue, @@ -426,12 +452,15 @@ export const ContentsManagerMock = jest.fn(() => { return Promise.resolve(newValue); }), delete: jest.fn(path => { - path = Private.fixSlash(path); - if (!files.has(path)) { + const driveName = dummy.driveName(path); + const localPath = dummy.localPath(path); + const drive = files.get(driveName)!; + path = Private.fixSlash(localPath); + if (!drive.has(path)) { return Private.makeResponseError(404); } - const oldValue = files.get(path)!; - files.delete(path); + const oldValue = drive.get(path)!; + drive.delete(path); fileChangedSignal.emit({ type: 'delete', oldValue, @@ -445,7 +474,8 @@ export const ContentsManagerMock = jest.fn(() => { } path = Private.fixSlash(path); const timeStamp = new Date().toISOString(); - if (files.has(path)) { + const drive = files.get(dummy.driveName(path))!; + if (drive.has(path)) { const updates = path == 'frozen-time-and-hash.txt' ? {} @@ -453,13 +483,13 @@ export const ContentsManagerMock = jest.fn(() => { last_modified: timeStamp, hash: timeStamp }; - files.set(path, { - ...files.get(path)!, + drive.set(path, { + ...drive.get(path)!, ...options, ...updates }); } else { - files.set(path, { + drive.set(path, { path, name: PathExt.basename(path), content: '', @@ -477,15 +507,21 @@ export const ContentsManagerMock = jest.fn(() => { fileChangedSignal.emit({ type: 'save', oldValue: null, - newValue: files.get(path)! + newValue: drive.get(path)! }); - return Promise.resolve(files.get(path)!); + return Promise.resolve(drive.get(path)!); }), getDownloadUrl: jest.fn(path => { return dummy.getDownloadUrl(path); }), addDrive: jest.fn(drive => { dummy.addDrive(drive); + files.set( + drive.name, + new Map([ + ['', { ...baseModel, path: '', name: '' }] + ]) + ); }), dispose: jest.fn() }; diff --git a/packages/settingeditor-extension/package.json b/packages/settingeditor-extension/package.json index df2ef3014c24..7de507c9ff10 100644 --- a/packages/settingeditor-extension/package.json +++ b/packages/settingeditor-extension/package.json @@ -1,6 +1,6 @@ { "name": "@jupyterlab/settingeditor-extension", - "version": "4.1.0", + "version": "4.1.5", "description": "JupyterLab - Setting Editor Extension", "homepage": "https://github.com/jupyterlab/jupyterlab", "bugs": { @@ -38,16 +38,16 @@ "watch": "tsc -b --watch" }, "dependencies": { - "@jupyterlab/application": "^4.1.0", - "@jupyterlab/apputils": "^4.2.0", - "@jupyterlab/codeeditor": "^4.1.0", - "@jupyterlab/pluginmanager": "^4.1.0", - "@jupyterlab/rendermime": "^4.1.0", - "@jupyterlab/settingeditor": "^4.1.0", - "@jupyterlab/settingregistry": "^4.1.0", - "@jupyterlab/statedb": "^4.1.0", - "@jupyterlab/translation": "^4.1.0", - "@jupyterlab/ui-components": "^4.1.0", + "@jupyterlab/application": "^4.1.5", + "@jupyterlab/apputils": "^4.2.5", + "@jupyterlab/codeeditor": "^4.1.5", + "@jupyterlab/pluginmanager": "^4.1.5", + "@jupyterlab/rendermime": "^4.1.5", + "@jupyterlab/settingeditor": "^4.1.5", + "@jupyterlab/settingregistry": "^4.1.5", + "@jupyterlab/statedb": "^4.1.5", + "@jupyterlab/translation": "^4.1.5", + "@jupyterlab/ui-components": "^4.1.5", "@lumino/disposable": "^2.1.2" }, "devDependencies": { diff --git a/packages/settingeditor/package.json b/packages/settingeditor/package.json index 6140a25f66da..36f985964530 100644 --- a/packages/settingeditor/package.json +++ b/packages/settingeditor/package.json @@ -1,6 +1,6 @@ { "name": "@jupyterlab/settingeditor", - "version": "4.1.0", + "version": "4.1.5", "description": "The JupyterLab default setting editor interface", "homepage": "https://github.com/jupyterlab/jupyterlab", "bugs": { @@ -42,15 +42,15 @@ "watch": "tsc -b --watch" }, "dependencies": { - "@jupyterlab/application": "^4.1.0", - "@jupyterlab/apputils": "^4.2.0", - "@jupyterlab/codeeditor": "^4.1.0", - "@jupyterlab/inspector": "^4.1.0", - "@jupyterlab/rendermime": "^4.1.0", - "@jupyterlab/settingregistry": "^4.1.0", - "@jupyterlab/statedb": "^4.1.0", - "@jupyterlab/translation": "^4.1.0", - "@jupyterlab/ui-components": "^4.1.0", + "@jupyterlab/application": "^4.1.5", + "@jupyterlab/apputils": "^4.2.5", + "@jupyterlab/codeeditor": "^4.1.5", + "@jupyterlab/inspector": "^4.1.5", + "@jupyterlab/rendermime": "^4.1.5", + "@jupyterlab/settingregistry": "^4.1.5", + "@jupyterlab/statedb": "^4.1.5", + "@jupyterlab/translation": "^4.1.5", + "@jupyterlab/ui-components": "^4.1.5", "@lumino/algorithm": "^2.0.1", "@lumino/commands": "^2.2.0", "@lumino/coreutils": "^2.1.2", @@ -66,7 +66,7 @@ "react": "^18.2.0" }, "devDependencies": { - "@jupyterlab/testing": "^4.1.0", + "@jupyterlab/testing": "^4.1.5", "@types/jest": "^29.2.0", "@types/react": "^18.0.26", "@types/react-test-renderer": "^18.0.0", diff --git a/packages/settingregistry/package.json b/packages/settingregistry/package.json index 3fb23c4037e0..123279b34032 100644 --- a/packages/settingregistry/package.json +++ b/packages/settingregistry/package.json @@ -1,6 +1,6 @@ { "name": "@jupyterlab/settingregistry", - "version": "4.1.0", + "version": "4.1.5", "description": "Settings registry for Jupyterlab", "homepage": "https://github.com/jupyterlab/jupyterlab", "bugs": { @@ -37,8 +37,8 @@ "watch": "tsc -b --watch" }, "dependencies": { - "@jupyterlab/nbformat": "^4.1.0", - "@jupyterlab/statedb": "^4.1.0", + "@jupyterlab/nbformat": "^4.1.5", + "@jupyterlab/statedb": "^4.1.5", "@lumino/commands": "^2.2.0", "@lumino/coreutils": "^2.1.2", "@lumino/disposable": "^2.1.2", @@ -48,7 +48,7 @@ "json5": "^2.2.3" }, "devDependencies": { - "@jupyterlab/testing": "^4.1.0", + "@jupyterlab/testing": "^4.1.5", "@types/jest": "^29.2.0", "jest": "^29.2.0", "rimraf": "~5.0.5", diff --git a/packages/settingregistry/src/settingregistry.ts b/packages/settingregistry/src/settingregistry.ts index d69d13dfc183..803ce7567931 100644 --- a/packages/settingregistry/src/settingregistry.ts +++ b/packages/settingregistry/src/settingregistry.ts @@ -1538,38 +1538,47 @@ namespace Private { const changes = [ { old: '.jp-Notebook:focus.jp-mod-commandMode', - new: '.jp-Notebook.jp-mod-commandMode :focus:not(:read-write)', + new: '.jp-Notebook.jp-mod-commandMode:not(.jp-mod-readWrite) :focus', versionDeprecated: 'JupyterLab 4.1' }, + { + old: '.jp-Notebook.jp-mod-commandMode :focus:not(:read-write)', + new: '.jp-Notebook.jp-mod-commandMode:not(.jp-mod-readWrite) :focus', + versionDeprecated: 'JupyterLab 4.1.1' + }, { old: '.jp-Notebook:focus', - new: '.jp-Notebook.jp-mod-commandMode :focus:not(:read-write)', + new: '.jp-Notebook.jp-mod-commandMode:not(.jp-mod-readWrite) :focus', versionDeprecated: 'JupyterLab 4.1' }, { old: '[data-jp-traversable]:focus', - new: '.jp-Notebook.jp-mod-commandMode :focus:not(:read-write)', + new: '.jp-Notebook.jp-mod-commandMode:not(.jp-mod-readWrite) :focus', versionDeprecated: 'JupyterLab 4.1' }, { old: '[data-jp-kernel-user]:focus', - new: '[data-jp-kernel-user] :focus:not(:read-write)', + new: '[data-jp-kernel-user]:not(.jp-mod-readWrite) :focus:not(:read-write)', versionDeprecated: 'JupyterLab 4.1' + }, + { + old: '[data-jp-kernel-user] :focus:not(:read-write)', + new: '[data-jp-kernel-user]:not(.jp-mod-readWrite) :focus:not(:read-write)', + versionDeprecated: 'JupyterLab 4.1.1' } ]; const upgraded = shortcuts.map(shortcut => { const oldSelector = shortcut.selector; let newSelector = oldSelector; for (const change of changes) { - if ( - oldSelector.includes(change.old) && - !selectorsAlreadyWarnedAbout.has(oldSelector) - ) { + if (oldSelector.includes(change.old)) { newSelector = oldSelector.replace(change.old, change.new); - selectorDeprecationWarnings.add( - `"${change.old}" was replaced with "${change.new}" in ${change.versionDeprecated} (present in "${oldSelector}")` - ); - selectorsAlreadyWarnedAbout.add(oldSelector); + if (!selectorsAlreadyWarnedAbout.has(oldSelector)) { + selectorDeprecationWarnings.add( + `"${change.old}" was replaced with "${change.new}" in ${change.versionDeprecated} (present in "${oldSelector}")` + ); + selectorsAlreadyWarnedAbout.add(oldSelector); + } } } shortcut.selector = newSelector; diff --git a/packages/shortcuts-extension/package.json b/packages/shortcuts-extension/package.json index ee71c021a111..a9af526aa791 100644 --- a/packages/shortcuts-extension/package.json +++ b/packages/shortcuts-extension/package.json @@ -1,6 +1,6 @@ { "name": "@jupyterlab/shortcuts-extension", - "version": "4.1.0", + "version": "4.1.5", "description": "JupyterLab - Shortcuts Extension", "homepage": "https://github.com/jupyterlab/jupyterlab", "bugs": { @@ -41,10 +41,10 @@ "watch": "tsc -b --watch" }, "dependencies": { - "@jupyterlab/application": "^4.1.0", - "@jupyterlab/settingregistry": "^4.1.0", - "@jupyterlab/translation": "^4.1.0", - "@jupyterlab/ui-components": "^4.1.0", + "@jupyterlab/application": "^4.1.5", + "@jupyterlab/settingregistry": "^4.1.5", + "@jupyterlab/translation": "^4.1.5", + "@jupyterlab/ui-components": "^4.1.5", "@lumino/algorithm": "^2.0.1", "@lumino/commands": "^2.2.0", "@lumino/coreutils": "^2.1.2", @@ -55,7 +55,7 @@ "react": "^18.2.0" }, "devDependencies": { - "@jupyterlab/testing": "^4.1.0", + "@jupyterlab/testing": "^4.1.5", "@types/jest": "^29.2.0", "jest": "^29.2.0", "rimraf": "~5.0.5", diff --git a/packages/statedb/package.json b/packages/statedb/package.json index d0cef1020fc0..28a19e0531e8 100644 --- a/packages/statedb/package.json +++ b/packages/statedb/package.json @@ -1,6 +1,6 @@ { "name": "@jupyterlab/statedb", - "version": "4.1.0", + "version": "4.1.5", "description": "Package for managing state in Jupyterlab", "homepage": "https://github.com/jupyterlab/jupyterlab", "bugs": { @@ -43,7 +43,7 @@ "@lumino/signaling": "^2.1.2" }, "devDependencies": { - "@jupyterlab/testing": "^4.1.0", + "@jupyterlab/testing": "^4.1.5", "@types/jest": "^29.2.0", "jest": "^29.2.0", "rimraf": "~5.0.5", diff --git a/packages/statusbar-extension/package.json b/packages/statusbar-extension/package.json index a95ef49801ae..2f41f32c8e28 100644 --- a/packages/statusbar-extension/package.json +++ b/packages/statusbar-extension/package.json @@ -1,6 +1,6 @@ { "name": "@jupyterlab/statusbar-extension", - "version": "4.1.0", + "version": "4.1.5", "description": "JupyterLab - Statusbar Extension", "homepage": "https://github.com/jupyterlab/jupyterlab", "bugs": { @@ -37,11 +37,11 @@ "watch": "tsc -b --watch" }, "dependencies": { - "@jupyterlab/application": "^4.1.0", - "@jupyterlab/apputils": "^4.2.0", - "@jupyterlab/settingregistry": "^4.1.0", - "@jupyterlab/statusbar": "^4.1.0", - "@jupyterlab/translation": "^4.1.0" + "@jupyterlab/application": "^4.1.5", + "@jupyterlab/apputils": "^4.2.5", + "@jupyterlab/settingregistry": "^4.1.5", + "@jupyterlab/statusbar": "^4.1.5", + "@jupyterlab/translation": "^4.1.5" }, "devDependencies": { "@types/react": "^18.0.26", diff --git a/packages/statusbar/package.json b/packages/statusbar/package.json index e9252c1bd69a..c82e1e9c7a4a 100644 --- a/packages/statusbar/package.json +++ b/packages/statusbar/package.json @@ -1,6 +1,6 @@ { "name": "@jupyterlab/statusbar", - "version": "4.1.0", + "version": "4.1.5", "description": "JupyterLab statusbar package.", "homepage": "https://github.com/jupyterlab/jupyterlab", "bugs": { @@ -37,7 +37,7 @@ "watch": "tsc -b --watch" }, "dependencies": { - "@jupyterlab/ui-components": "^4.1.0", + "@jupyterlab/ui-components": "^4.1.5", "@lumino/algorithm": "^2.0.1", "@lumino/coreutils": "^2.1.2", "@lumino/disposable": "^2.1.2", @@ -47,7 +47,7 @@ "react": "^18.2.0" }, "devDependencies": { - "@jupyterlab/testing": "^4.1.0", + "@jupyterlab/testing": "^4.1.5", "@types/jest": "^29.2.0", "jest": "^29.2.0", "rimraf": "~5.0.5", diff --git a/packages/terminal-extension/package.json b/packages/terminal-extension/package.json index 095584799024..152bf01eb65a 100644 --- a/packages/terminal-extension/package.json +++ b/packages/terminal-extension/package.json @@ -1,6 +1,6 @@ { "name": "@jupyterlab/terminal-extension", - "version": "4.1.0", + "version": "4.1.5", "description": "JupyterLab - Terminal Emulator Extension", "homepage": "https://github.com/jupyterlab/jupyterlab", "bugs": { @@ -38,16 +38,16 @@ "watch": "tsc -b --watch" }, "dependencies": { - "@jupyterlab/application": "^4.1.0", - "@jupyterlab/apputils": "^4.2.0", - "@jupyterlab/launcher": "^4.1.0", - "@jupyterlab/mainmenu": "^4.1.0", - "@jupyterlab/running": "^4.1.0", - "@jupyterlab/services": "^7.1.0", - "@jupyterlab/settingregistry": "^4.1.0", - "@jupyterlab/terminal": "^4.1.0", - "@jupyterlab/translation": "^4.1.0", - "@jupyterlab/ui-components": "^4.1.0", + "@jupyterlab/application": "^4.1.5", + "@jupyterlab/apputils": "^4.2.5", + "@jupyterlab/launcher": "^4.1.5", + "@jupyterlab/mainmenu": "^4.1.5", + "@jupyterlab/running": "^4.1.5", + "@jupyterlab/services": "^7.1.5", + "@jupyterlab/settingregistry": "^4.1.5", + "@jupyterlab/terminal": "^4.1.5", + "@jupyterlab/translation": "^4.1.5", + "@jupyterlab/ui-components": "^4.1.5", "@lumino/widgets": "^2.3.1" }, "devDependencies": { diff --git a/packages/terminal/package.json b/packages/terminal/package.json index 7894e8d6738d..26bfc0fd659a 100644 --- a/packages/terminal/package.json +++ b/packages/terminal/package.json @@ -1,6 +1,6 @@ { "name": "@jupyterlab/terminal", - "version": "4.1.0", + "version": "4.1.5", "description": "JupyterLab - Terminal Emulator Widget", "homepage": "https://github.com/jupyterlab/jupyterlab", "bugs": { @@ -42,9 +42,9 @@ "watch": "tsc -b --watch" }, "dependencies": { - "@jupyterlab/apputils": "^4.2.0", - "@jupyterlab/services": "^7.1.0", - "@jupyterlab/translation": "^4.1.0", + "@jupyterlab/apputils": "^4.2.5", + "@jupyterlab/services": "^7.1.5", + "@jupyterlab/translation": "^4.1.5", "@lumino/coreutils": "^2.1.2", "@lumino/domutils": "^2.0.1", "@lumino/messaging": "^2.0.1", @@ -56,7 +56,7 @@ "xterm-addon-webgl": "~0.14.0" }, "devDependencies": { - "@jupyterlab/testing": "^4.1.0", + "@jupyterlab/testing": "^4.1.5", "@types/jest": "^29.2.0", "canvas": "^2.11.2", "jest": "^29.2.0", diff --git a/packages/testing/package.json b/packages/testing/package.json index fc52c24db9d8..beb8f62cfd21 100644 --- a/packages/testing/package.json +++ b/packages/testing/package.json @@ -1,6 +1,6 @@ { "name": "@jupyterlab/testing", - "version": "4.1.0", + "version": "4.1.5", "description": "JupyterLab basic testing utilities.", "homepage": "https://github.com/jupyterlab/jupyterlab", "bugs": { @@ -35,7 +35,7 @@ "dependencies": { "@babel/core": "^7.10.2", "@babel/preset-env": "^7.10.2", - "@jupyterlab/coreutils": "^6.1.0", + "@jupyterlab/coreutils": "^6.1.5", "@lumino/coreutils": "^2.1.2", "@lumino/signaling": "^2.1.2", "child_process": "~1.0.2", diff --git a/packages/testing/src/jest-shim.ts b/packages/testing/src/jest-shim.ts index fbcacc5c6bcd..e11cb703d626 100644 --- a/packages/testing/src/jest-shim.ts +++ b/packages/testing/src/jest-shim.ts @@ -85,6 +85,75 @@ class ResizeObserverMock { window.ResizeObserver = ResizeObserverMock; +// https://github.com/jsdom/jsdom/issues/2913 +class DataTransferItemMock implements DataTransferItem { + constructor( + protected format: string, + protected value: string + ) { + // no-op + } + get kind() { + return 'string'; + } + get type() { + return this.format; + } + getAsString(callback: (v: string) => undefined): undefined { + callback(this.value); + } + getAsFile() { + return null as any; + } + webkitGetAsEntry() { + return null as any; + } +} + +// https://github.com/jsdom/jsdom/issues/2913 +class DataTransferMock implements DataTransfer { + dropEffect: DataTransfer['dropEffect'] = 'none'; + effectAllowed: DataTransfer['dropEffect'] = 'none'; + files: DataTransfer['files']; + get items(): DataTransfer['items'] { + return [ + ...Object.entries(this._data).map( + ([k, v]) => new DataTransferItemMock(k, v) + ) + ] as unknown as DataTransferItemList; + } + readonly types: DataTransfer['types'] = []; + getData(format: string) { + return this._data[format]; + } + setData(format: string, data: string) { + this._data[format] = data; + } + clearData() { + this._data = {}; + } + setDragImage(imgElement: Element, xOffset: number, yOffset: number) { + // no-op + } + private _data: Record = {}; +} + +window.DataTransfer = DataTransferMock; + +// https://github.com/jsdom/jsdom/issues/1568 +class ClipboardEventMock extends Event implements ClipboardEvent { + constructor( + type: 'copy' | 'cut' | 'paste', + options: { clipboardData: DataTransfer } + ) { + super(type); + this.clipboardData = options.clipboardData; + } + clipboardData: DataTransfer; +} + +window.ClipboardEvent = ClipboardEventMock; + (window as any).document.elementFromPoint = (left: number, top: number) => document.body; diff --git a/packages/theme-dark-extension/package.json b/packages/theme-dark-extension/package.json index c60f10b9ff1e..bc537984aa99 100644 --- a/packages/theme-dark-extension/package.json +++ b/packages/theme-dark-extension/package.json @@ -1,6 +1,6 @@ { "name": "@jupyterlab/theme-dark-extension", - "version": "4.1.0", + "version": "4.1.5", "description": "JupyterLab - Default Dark Theme", "homepage": "https://github.com/jupyterlab/jupyterlab", "bugs": { @@ -32,9 +32,9 @@ "watch": "tsc -b --watch" }, "dependencies": { - "@jupyterlab/application": "^4.1.0", - "@jupyterlab/apputils": "^4.2.0", - "@jupyterlab/translation": "^4.1.0" + "@jupyterlab/application": "^4.1.5", + "@jupyterlab/apputils": "^4.2.5", + "@jupyterlab/translation": "^4.1.5" }, "devDependencies": { "rimraf": "~5.0.5", diff --git a/packages/theme-light-extension/package.json b/packages/theme-light-extension/package.json index 9dda913b77c9..66cf62783fe4 100644 --- a/packages/theme-light-extension/package.json +++ b/packages/theme-light-extension/package.json @@ -1,6 +1,6 @@ { "name": "@jupyterlab/theme-light-extension", - "version": "4.1.0", + "version": "4.1.5", "description": "JupyterLab - Default Light Theme", "homepage": "https://github.com/jupyterlab/jupyterlab", "bugs": { @@ -32,9 +32,9 @@ "watch": "tsc -b --watch" }, "dependencies": { - "@jupyterlab/application": "^4.1.0", - "@jupyterlab/apputils": "^4.2.0", - "@jupyterlab/translation": "^4.1.0" + "@jupyterlab/application": "^4.1.5", + "@jupyterlab/apputils": "^4.2.5", + "@jupyterlab/translation": "^4.1.5" }, "devDependencies": { "rimraf": "~5.0.5", diff --git a/packages/toc-extension/package.json b/packages/toc-extension/package.json index e0a297a6acf5..953424269c17 100644 --- a/packages/toc-extension/package.json +++ b/packages/toc-extension/package.json @@ -1,6 +1,6 @@ { "name": "@jupyterlab/toc-extension", - "version": "6.1.0", + "version": "6.1.5", "description": "JupyterLab - Table of Contents widget extension", "keywords": [ "jupyter", @@ -41,11 +41,11 @@ "watch": "tsc -b --watch" }, "dependencies": { - "@jupyterlab/application": "^4.1.0", - "@jupyterlab/settingregistry": "^4.1.0", - "@jupyterlab/toc": "^6.1.0", - "@jupyterlab/translation": "^4.1.0", - "@jupyterlab/ui-components": "^4.1.0" + "@jupyterlab/application": "^4.1.5", + "@jupyterlab/settingregistry": "^4.1.5", + "@jupyterlab/toc": "^6.1.5", + "@jupyterlab/translation": "^4.1.5", + "@jupyterlab/ui-components": "^4.1.5" }, "devDependencies": { "rimraf": "~5.0.5", diff --git a/packages/toc/package.json b/packages/toc/package.json index ab1090f47291..b65af9bea111 100644 --- a/packages/toc/package.json +++ b/packages/toc/package.json @@ -1,6 +1,6 @@ { "name": "@jupyterlab/toc", - "version": "6.1.0", + "version": "6.1.5", "description": "JupyterLab - Table of Contents widget", "keywords": [ "jupyterlab" @@ -41,14 +41,14 @@ "watch": "tsc -b --watch" }, "dependencies": { - "@jupyterlab/apputils": "^4.2.0", - "@jupyterlab/coreutils": "^6.1.0", - "@jupyterlab/docregistry": "^4.1.0", - "@jupyterlab/observables": "^5.1.0", - "@jupyterlab/rendermime": "^4.1.0", - "@jupyterlab/rendermime-interfaces": "^3.9.0", - "@jupyterlab/translation": "^4.1.0", - "@jupyterlab/ui-components": "^4.1.0", + "@jupyterlab/apputils": "^4.2.5", + "@jupyterlab/coreutils": "^6.1.5", + "@jupyterlab/docregistry": "^4.1.5", + "@jupyterlab/observables": "^5.1.5", + "@jupyterlab/rendermime": "^4.1.5", + "@jupyterlab/rendermime-interfaces": "^3.9.5", + "@jupyterlab/translation": "^4.1.5", + "@jupyterlab/ui-components": "^4.1.5", "@lumino/coreutils": "^2.1.2", "@lumino/disposable": "^2.1.2", "@lumino/messaging": "^2.0.1", @@ -57,7 +57,7 @@ "react": "^18.2.0" }, "devDependencies": { - "@jupyterlab/testing": "^4.1.0", + "@jupyterlab/testing": "^4.1.5", "@types/jest": "^29.2.0", "@types/react": "^18.0.26", "jest": "^29.2.0", diff --git a/packages/tooltip-extension/package.json b/packages/tooltip-extension/package.json index 48f4a053da8a..721285ba877a 100644 --- a/packages/tooltip-extension/package.json +++ b/packages/tooltip-extension/package.json @@ -1,6 +1,6 @@ { "name": "@jupyterlab/tooltip-extension", - "version": "4.1.0", + "version": "4.1.5", "description": "JupyterLab - Tooltip Extension", "homepage": "https://github.com/jupyterlab/jupyterlab", "bugs": { @@ -38,16 +38,16 @@ "watch": "tsc -b --watch" }, "dependencies": { - "@jupyterlab/application": "^4.1.0", - "@jupyterlab/codeeditor": "^4.1.0", - "@jupyterlab/console": "^4.1.0", - "@jupyterlab/coreutils": "^6.1.0", - "@jupyterlab/fileeditor": "^4.1.0", - "@jupyterlab/notebook": "^4.1.0", - "@jupyterlab/rendermime": "^4.1.0", - "@jupyterlab/services": "^7.1.0", - "@jupyterlab/tooltip": "^4.1.0", - "@jupyterlab/translation": "^4.1.0", + "@jupyterlab/application": "^4.1.5", + "@jupyterlab/codeeditor": "^4.1.5", + "@jupyterlab/console": "^4.1.5", + "@jupyterlab/coreutils": "^6.1.5", + "@jupyterlab/fileeditor": "^4.1.5", + "@jupyterlab/notebook": "^4.1.5", + "@jupyterlab/rendermime": "^4.1.5", + "@jupyterlab/services": "^7.1.5", + "@jupyterlab/tooltip": "^4.1.5", + "@jupyterlab/translation": "^4.1.5", "@lumino/algorithm": "^2.0.1", "@lumino/coreutils": "^2.1.2", "@lumino/widgets": "^2.3.1" diff --git a/packages/tooltip/package.json b/packages/tooltip/package.json index 9e9153cc2274..c3be1e41cccb 100644 --- a/packages/tooltip/package.json +++ b/packages/tooltip/package.json @@ -1,6 +1,6 @@ { "name": "@jupyterlab/tooltip", - "version": "4.1.0", + "version": "4.1.5", "description": "JupyterLab - Tooltip Widget", "homepage": "https://github.com/jupyterlab/jupyterlab", "bugs": { @@ -37,10 +37,10 @@ "watch": "tsc -b --watch" }, "dependencies": { - "@jupyterlab/codeeditor": "^4.1.0", - "@jupyterlab/rendermime": "^4.1.0", - "@jupyterlab/services": "^7.1.0", - "@jupyterlab/ui-components": "^4.1.0", + "@jupyterlab/codeeditor": "^4.1.5", + "@jupyterlab/rendermime": "^4.1.5", + "@jupyterlab/services": "^7.1.5", + "@jupyterlab/ui-components": "^4.1.5", "@lumino/coreutils": "^2.1.2", "@lumino/messaging": "^2.0.1", "@lumino/widgets": "^2.3.1" diff --git a/packages/translation-extension/package.json b/packages/translation-extension/package.json index 7ae71306c1a9..04827918e906 100644 --- a/packages/translation-extension/package.json +++ b/packages/translation-extension/package.json @@ -1,6 +1,6 @@ { "name": "@jupyterlab/translation-extension", - "version": "4.1.0", + "version": "4.1.5", "description": "JupyterLab - Translation services", "keywords": [ "jupyter", @@ -37,11 +37,11 @@ "watch": "tsc -w" }, "dependencies": { - "@jupyterlab/application": "^4.1.0", - "@jupyterlab/apputils": "^4.2.0", - "@jupyterlab/mainmenu": "^4.1.0", - "@jupyterlab/settingregistry": "^4.1.0", - "@jupyterlab/translation": "^4.1.0" + "@jupyterlab/application": "^4.1.5", + "@jupyterlab/apputils": "^4.2.5", + "@jupyterlab/mainmenu": "^4.1.5", + "@jupyterlab/settingregistry": "^4.1.5", + "@jupyterlab/translation": "^4.1.5" }, "devDependencies": { "rimraf": "~5.0.5", diff --git a/packages/translation/package.json b/packages/translation/package.json index 757bdc87f959..6caffecad6b4 100644 --- a/packages/translation/package.json +++ b/packages/translation/package.json @@ -1,6 +1,6 @@ { "name": "@jupyterlab/translation", - "version": "4.1.0", + "version": "4.1.5", "description": "JupyterLab - Translation services", "keywords": [ "jupyter", @@ -38,14 +38,14 @@ "watch": "tsc -w" }, "dependencies": { - "@jupyterlab/coreutils": "^6.1.0", - "@jupyterlab/rendermime-interfaces": "^3.9.0", - "@jupyterlab/services": "^7.1.0", - "@jupyterlab/statedb": "^4.1.0", + "@jupyterlab/coreutils": "^6.1.5", + "@jupyterlab/rendermime-interfaces": "^3.9.5", + "@jupyterlab/services": "^7.1.5", + "@jupyterlab/statedb": "^4.1.5", "@lumino/coreutils": "^2.1.2" }, "devDependencies": { - "@jupyterlab/testing": "^4.1.0", + "@jupyterlab/testing": "^4.1.5", "@types/jest": "^29.2.0", "jest": "^29.2.0", "rimraf": "~5.0.5", diff --git a/packages/ui-components-extension/package.json b/packages/ui-components-extension/package.json index 3b4ef6375333..bda168ded8a6 100644 --- a/packages/ui-components-extension/package.json +++ b/packages/ui-components-extension/package.json @@ -1,6 +1,6 @@ { "name": "@jupyterlab/ui-components-extension", - "version": "4.1.0", + "version": "4.1.5", "description": "JupyterLab - UI component plugins", "homepage": "https://github.com/jupyterlab/jupyterlab", "bugs": { @@ -33,8 +33,8 @@ "watch": "tsc -b --watch" }, "dependencies": { - "@jupyterlab/application": "^4.1.0", - "@jupyterlab/ui-components": "^4.1.0" + "@jupyterlab/application": "^4.1.5", + "@jupyterlab/ui-components": "^4.1.5" }, "devDependencies": { "rimraf": "~5.0.5", diff --git a/packages/ui-components/docs/source/intro.rst b/packages/ui-components/docs/source/intro.rst index 389d5bc76969..5ec5aee30e10 100644 --- a/packages/ui-components/docs/source/intro.rst +++ b/packages/ui-components/docs/source/intro.rst @@ -1,7 +1,7 @@ .. Copyright (c) Jupyter Development Team. .. Distributed under the terms of the Modified BSD License. -The `@jupyterlab/ui-components `__ +The `@jupyterlab/ui-components `__ package provides UI elements that are widely used in JupyterLab core, and that can be reused in your own extensions. diff --git a/packages/ui-components/docs/source/labicon.rst b/packages/ui-components/docs/source/labicon.rst index 480c83e61b08..6124d68d674c 100644 --- a/packages/ui-components/docs/source/labicon.rst +++ b/packages/ui-components/docs/source/labicon.rst @@ -150,7 +150,7 @@ Available icon classes .. raw:: html - Icon-related CSS classes are defined in ui-components/style/icons.css + Icon-related CSS classes are defined in ui-components/style/icons.css | | All colors shown are for the standard light/dark theme, mouse over for hex values. diff --git a/packages/ui-components/examples/simple-windowed-list/package.json b/packages/ui-components/examples/simple-windowed-list/package.json index f7813959f8d7..ace66b819a79 100644 --- a/packages/ui-components/examples/simple-windowed-list/package.json +++ b/packages/ui-components/examples/simple-windowed-list/package.json @@ -1,6 +1,6 @@ { "name": "@jupyterlab/example-simple-list", - "version": "4.1.0", + "version": "4.1.5", "private": true, "style": "style/index.css", "scripts": { @@ -9,11 +9,11 @@ "watch": "webpack --watch" }, "dependencies": { - "@jupyterlab/application": "^4.1.0", - "@jupyterlab/coreutils": "^6.1.0", - "@jupyterlab/observables": "^5.1.0", - "@jupyterlab/theme-light-extension": "^4.1.0", - "@jupyterlab/ui-components": "^4.1.0", + "@jupyterlab/application": "^4.1.5", + "@jupyterlab/coreutils": "^6.1.5", + "@jupyterlab/observables": "^5.1.5", + "@jupyterlab/theme-light-extension": "^4.1.5", + "@jupyterlab/ui-components": "^4.1.5", "@lumino/messaging": "^2.0.1", "@lumino/widgets": "^2.3.1" }, diff --git a/packages/ui-components/package.json b/packages/ui-components/package.json index 10f93410e149..89980a480a2a 100644 --- a/packages/ui-components/package.json +++ b/packages/ui-components/package.json @@ -1,6 +1,6 @@ { "name": "@jupyterlab/ui-components", - "version": "4.1.0", + "version": "4.1.5", "description": "JupyterLab - UI components written in React", "homepage": "https://github.com/jupyterlab/jupyterlab", "bugs": { @@ -43,10 +43,10 @@ "dependencies": { "@jupyter/react-components": "^0.15.2", "@jupyter/web-components": "^0.15.2", - "@jupyterlab/coreutils": "^6.1.0", - "@jupyterlab/observables": "^5.1.0", - "@jupyterlab/rendermime-interfaces": "^3.9.0", - "@jupyterlab/translation": "^4.1.0", + "@jupyterlab/coreutils": "^6.1.5", + "@jupyterlab/observables": "^5.1.5", + "@jupyterlab/rendermime-interfaces": "^3.9.5", + "@jupyterlab/translation": "^4.1.5", "@lumino/algorithm": "^2.0.1", "@lumino/commands": "^2.2.0", "@lumino/coreutils": "^2.1.2", @@ -64,7 +64,7 @@ "typestyle": "^2.0.4" }, "devDependencies": { - "@jupyterlab/testing": "^4.1.0", + "@jupyterlab/testing": "^4.1.5", "@types/jest": "^29.2.0", "@types/react": "^18.0.26", "jest": "^29.2.0", diff --git a/packages/ui-components/src/components/search.tsx b/packages/ui-components/src/components/search.tsx index f41c3bfb2922..1262e2761917 100644 --- a/packages/ui-components/src/components/search.tsx +++ b/packages/ui-components/src/components/search.tsx @@ -77,9 +77,8 @@ export function fuzzySearch(source: string, query: string): IScore | null { let score = Infinity; let indices: number[] | null = null; - // The regex for search word boundaries - const rgx = /\b\w/g; - + // Look for letters (including in Asian scripts), numbers, and diacritical marks. + const rgx = /[\p{L}\p{N}\p{M}]+/gu; let continueSearch = true; // Search the source by word boundary. diff --git a/packages/ui-components/src/components/toolbar.tsx b/packages/ui-components/src/components/toolbar.tsx index 1089770e0c62..ff118e2dc29f 100644 --- a/packages/ui-components/src/components/toolbar.tsx +++ b/packages/ui-components/src/components/toolbar.tsx @@ -376,7 +376,7 @@ export class ReactiveToolbar extends Toolbar { this.popupOpener.hide(); this._resizer = new Throttler(async (callTwice = false) => { await this._onResize(callTwice); - }, 300); + }, 500); } /** @@ -429,11 +429,6 @@ export class ReactiveToolbar extends Toolbar { ): boolean { const targetPosition = this._widgetPositions.get(at); const position = (targetPosition ?? 0) + offset; - this._widgetPositions.forEach((value, key) => { - if (key !== TOOLBAR_OPENER_NAME && value >= position) { - this._widgetPositions.set(key, value + 1); - } - }); return this.insertItem(position, name, widget); } @@ -465,12 +460,34 @@ export class ReactiveToolbar extends Toolbar { status = super.insertItem(j, name, widget); } - // Save the widgets position when a new widget is inserted. + // Save the widgets position when a widget is inserted or moved. if ( name !== TOOLBAR_OPENER_NAME && - this._widgetPositions.get(name) === undefined + this._widgetPositions.get(name) !== index ) { + // If the widget is inserted, set its current position as last. + const currentPosition = + this._widgetPositions.get(name) ?? this._widgetPositions.size; + + // Change the position of moved widgets. + this._widgetPositions.forEach((value, key) => { + if (key !== TOOLBAR_OPENER_NAME) { + if (value >= index && value < currentPosition) { + this._widgetPositions.set(key, value + 1); + } else if (value <= index && value > currentPosition) { + this._widgetPositions.set(key, value - 1); + } + } + }); + + // Save the new position of the widget. this._widgetPositions.set(name, index); + + // Invokes resizing to ensure correct display of items after an addition, only + // if the toolbar is rendered. + if (this.isVisible) { + void this._resizer.invoke(); + } } return status; } @@ -526,7 +543,7 @@ export class ReactiveToolbar extends Toolbar { } const toolbarWidth = this.node.clientWidth; const opener = this.popupOpener; - const openerWidth = 30; + const openerWidth = 32; // left and right padding. const toolbarPadding = 2 + 5; let width = opener.isHidden ? toolbarPadding : toolbarPadding + openerWidth; @@ -535,13 +552,27 @@ export class ReactiveToolbar extends Toolbar { .then(values => { let { width, widgetsToRemove } = values; while (widgetsToRemove.length > 0) { - // Insert the widget in the right position in the opener popup. + // Insert the widget at the right position in the opener popup, relatively + // to the saved position of the first item of the popup toolbar. + + // Get the saved position of the widget to insert. const widget = widgetsToRemove.pop() as Widget; const name = Private.nameProperty.get(widget); - width -= this._widgetWidths![name]; + width -= this._widgetWidths.get(name) || 0; const position = this._widgetPositions.get(name) ?? 0; - const index = - opener.widgetCount() + position - this._widgetPositions.size; + + // Get the saved position of the first item in the popup toolbar. + // If there is no widget, set the value at last item. + let openerFirstIndex = this._widgetPositions.size; + const openerFirst = opener.widgetAt(0); + if (openerFirst) { + const openerFirstName = Private.nameProperty.get(openerFirst); + openerFirstIndex = + this._widgetPositions.get(openerFirstName) ?? openerFirstIndex; + } + + // Insert the widget in the popup toolbar. + const index = position - openerFirstIndex; opener.insertWidget(index, widget); } if (opener.widgetCount() > 0) { @@ -606,17 +637,19 @@ export class ReactiveToolbar extends Toolbar { let index = 0; while (index < toIndex) { const widget = layout.widgets[index]; + const name = Private.nameProperty.get(widget); // Compute the widget size only if // - the zoom has changed. // - the widget size has not been computed yet. let widgetWidth: number; if (this._zoomChanged) { - widgetWidth = await this._saveWidgetWidth(widget); + widgetWidth = await this._saveWidgetWidth(name, widget); } else { // The widget widths can be 0px if it has been added to the toolbar but // not rendered, this is why we must use '||' instead of '??'. widgetWidth = - this._getWidgetWidth(widget) || (await this._saveWidgetWidth(widget)); + this._getWidgetWidth(widget) || + (await this._saveWidgetWidth(name, widget)); } width += widgetWidth; if ( @@ -626,12 +659,18 @@ export class ReactiveToolbar extends Toolbar { ) { width += openerWidth; } - if (width > toolbarWidth) { + // Remove the widget if it is out of the toolbar or incorrectly positioned. + // Incorrect positioning can occur when the widget is added after the toolbar + // has been rendered and should be in the popup. E.g. debugger icon with a + // narrow notebook toolbar. + if ( + width > toolbarWidth || + (this._widgetPositions.get(name) ?? 0) > index + ) { widgetsToRemove.push(widget); } index++; } - this._zoomChanged = false; return { width: width, @@ -639,27 +678,28 @@ export class ReactiveToolbar extends Toolbar { }; } - private async _saveWidgetWidth(widget: Widget): Promise { + private async _saveWidgetWidth( + name: string, + widget: Widget + ): Promise { if (widget instanceof ReactWidget) { await widget.renderPromise; } - const widgetName = Private.nameProperty.get(widget); - const widgetWidth = widget.hasClass(TOOLBAR_SPACER_CLASS) ? 2 : widget.node.clientWidth; - this._widgetWidths![widgetName] = widgetWidth; + this._widgetWidths.set(name, widgetWidth); return widgetWidth; } private _getWidgetWidth(widget: Widget): number { const widgetName = Private.nameProperty.get(widget); - return this._widgetWidths![widgetName]; + return this._widgetWidths.get(widgetName) || 0; } protected readonly popupOpener: ToolbarPopupOpener = new ToolbarPopupOpener(); - private readonly _widgetWidths: { [key: string]: number } = {}; private readonly _resizer: Throttler; + private readonly _widgetWidths = new Map(); private _widgetPositions = new Map(); // The zoom property is not the real browser zoom, but a value proportional to // the zoom, which is modified when the zoom changes. diff --git a/packages/ui-components/style/toolbar.css b/packages/ui-components/style/toolbar.css index 27b512f90d66..230974e1cc7f 100644 --- a/packages/ui-components/style/toolbar.css +++ b/packages/ui-components/style/toolbar.css @@ -74,6 +74,10 @@ button.jp-ToolbarButtonComponent .jp-ToolbarButtonComponent-label { font-family: var(--jp-ui-font-family); } +.jp-Toolbar .jp-ToolbarButtonComponent { + color: var(--jp-ui-font-color1); +} + .jp-ToolbarButtonComponent::part(content) { display: flex; align-items: center; diff --git a/packages/ui-components/test/search.spec.tsx b/packages/ui-components/test/search.spec.tsx new file mode 100644 index 000000000000..572465bacf1a --- /dev/null +++ b/packages/ui-components/test/search.spec.tsx @@ -0,0 +1,46 @@ +// Copyright (c) Jupyter Development Team. +// Distributed under the terms of the Modified BSD License. + +import { fuzzySearch } from '@jupyterlab/ui-components'; + +describe('@jupyterlab/ui-components', () => { + describe('fuzzySearch()', () => { + // The search logic is in StringExt.matchSumOfDeltas, which is already + // tested in the lumino package. + it('should find an ASCII match in text', () => { + const result = fuzzySearch('food', 'foo'); + expect(result).not.toBeNull(); + }); + + it('should find an ASCII match in text with a space', () => { + const result = fuzzySearch('fast food', 'foo'); + expect(result).not.toBeNull(); + }); + + it('should fail to find an ASCII match in text', () => { + const result = fuzzySearch('fast food', 'bar'); + expect(result).toBeNull(); + }); + + it('should find a French match in text', () => { + const result = fuzzySearch('Liberté, égalité, fraternité', 'erté'); + expect(result).not.toBeNull(); + }); + + it('should fail to find a French match in text', () => { + const result = fuzzySearch('Liberté, égalité, fraternité', 'ègal'); + expect(result).toBeNull(); + }); + + // CJK = Chinese, Japanese, and Korean characters + it('should find a CJK match in ASCII+CJK text', () => { + const result = fuzzySearch('2测试', '测'); + expect(result).not.toBeNull(); + }); + + it('should find a ASCII match in ASCII+CJK text', () => { + const result = fuzzySearch('测试1.ipynb', '1'); + expect(result).not.toBeNull(); + }); + }); +}); diff --git a/packages/vega5-extension/README.md b/packages/vega5-extension/README.md index 3be91d7db821..958ee25e2610 100644 --- a/packages/vega5-extension/README.md +++ b/packages/vega5-extension/README.md @@ -102,4 +102,4 @@ To render a `.vl`, `.vg`, `vl.json` or `.vg.json` file, simply open it: ## Development -See the [JupyterLab Contributor Documentation](https://github.com/jupyterlab/jupyterlab/blob/main/CONTRIBUTING.md). +See the [JupyterLab Contributor Documentation](https://github.com/jupyterlab/jupyterlab/blob/4.1.x/CONTRIBUTING.md). diff --git a/packages/vega5-extension/package.json b/packages/vega5-extension/package.json index 959bd892f612..942b12bb5df2 100644 --- a/packages/vega5-extension/package.json +++ b/packages/vega5-extension/package.json @@ -1,6 +1,6 @@ { "name": "@jupyterlab/vega5-extension", - "version": "4.1.0", + "version": "4.1.5", "description": "JupyterLab - Vega 5 and Vega-Lite 5 Mime Renderer Extension", "homepage": "https://github.com/jupyterlab/jupyterlab", "bugs": { @@ -38,7 +38,7 @@ "watch": "tsc -b --watch" }, "dependencies": { - "@jupyterlab/rendermime-interfaces": "^3.9.0", + "@jupyterlab/rendermime-interfaces": "^3.9.5", "@lumino/coreutils": "^2.1.2", "@lumino/widgets": "^2.3.1", "vega": "^5.20.0", @@ -46,7 +46,7 @@ "vega-lite": "^5.6.1-next.1" }, "devDependencies": { - "@jupyterlab/testutils": "^4.1.0", + "@jupyterlab/testutils": "^4.1.5", "@types/jest": "^29.2.0", "@types/webpack-env": "^1.18.0", "jest": "^29.2.0", diff --git a/pyproject.toml b/pyproject.toml index cd88592bd310..0d1563513243 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -120,7 +120,7 @@ dev = [ "coverage", "hatch", "bump2version", - "ruff==0.1.15", + "ruff==0.2.0", ] [tool.check-wheel-contents] diff --git a/testutils/package.json b/testutils/package.json index 4178f4d130cf..c0a0f5aac65f 100644 --- a/testutils/package.json +++ b/testutils/package.json @@ -1,6 +1,6 @@ { "name": "@jupyterlab/testutils", - "version": "4.1.0", + "version": "4.1.5", "description": "JupyterLab - Test Utilities", "homepage": "https://github.com/jupyterlab/jupyterlab", "bugs": { @@ -31,11 +31,11 @@ "watch": "tsc -b --watch" }, "dependencies": { - "@jupyterlab/application": "^4.1.0", - "@jupyterlab/apputils": "^4.2.0", - "@jupyterlab/notebook": "^4.1.0", - "@jupyterlab/rendermime": "^4.1.0", - "@jupyterlab/testing": "^4.1.0" + "@jupyterlab/application": "^4.1.5", + "@jupyterlab/apputils": "^4.2.5", + "@jupyterlab/notebook": "^4.1.5", + "@jupyterlab/rendermime": "^4.1.5", + "@jupyterlab/testing": "^4.1.5" }, "devDependencies": { "rimraf": "~5.0.5", diff --git a/yarn.lock b/yarn.lock index 55262cb90259..a8e0063b2a86 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2096,19 +2096,19 @@ __metadata: languageName: node linkType: hard -"@jupyterlab/application-extension@^4.1.0, @jupyterlab/application-extension@workspace:packages/application-extension, @jupyterlab/application-extension@~4.1.0": +"@jupyterlab/application-extension@^4.1.5, @jupyterlab/application-extension@workspace:packages/application-extension, @jupyterlab/application-extension@~4.1.5": version: 0.0.0-use.local resolution: "@jupyterlab/application-extension@workspace:packages/application-extension" dependencies: - "@jupyterlab/application": ^4.1.0 - "@jupyterlab/apputils": ^4.2.0 - "@jupyterlab/coreutils": ^6.1.0 - "@jupyterlab/property-inspector": ^4.1.0 - "@jupyterlab/settingregistry": ^4.1.0 - "@jupyterlab/statedb": ^4.1.0 - "@jupyterlab/statusbar": ^4.1.0 - "@jupyterlab/translation": ^4.1.0 - "@jupyterlab/ui-components": ^4.1.0 + "@jupyterlab/application": ^4.1.5 + "@jupyterlab/apputils": ^4.2.5 + "@jupyterlab/coreutils": ^6.1.5 + "@jupyterlab/property-inspector": ^4.1.5 + "@jupyterlab/settingregistry": ^4.1.5 + "@jupyterlab/statedb": ^4.1.5 + "@jupyterlab/statusbar": ^4.1.5 + "@jupyterlab/translation": ^4.1.5 + "@jupyterlab/ui-components": ^4.1.5 "@lumino/algorithm": ^2.0.1 "@lumino/commands": ^2.2.0 "@lumino/coreutils": ^2.1.2 @@ -2125,56 +2125,56 @@ __metadata: version: 0.0.0-use.local resolution: "@jupyterlab/application-top@workspace:dev_mode" dependencies: - "@jupyterlab/application": ~4.1.0 - "@jupyterlab/application-extension": ~4.1.0 - "@jupyterlab/apputils-extension": ~4.1.0 - "@jupyterlab/builder": ^4.1.0 - "@jupyterlab/buildutils": ^4.1.0 - "@jupyterlab/cell-toolbar-extension": ~4.1.0 - "@jupyterlab/celltags-extension": ~4.1.0 - "@jupyterlab/codemirror-extension": ~4.1.0 - "@jupyterlab/completer-extension": ~4.1.0 - "@jupyterlab/console-extension": ~4.1.0 - "@jupyterlab/coreutils": ~6.1.0 - "@jupyterlab/csvviewer-extension": ~4.1.0 - "@jupyterlab/debugger-extension": ~4.1.0 - "@jupyterlab/docmanager-extension": ~4.1.0 - "@jupyterlab/documentsearch-extension": ~4.1.0 - "@jupyterlab/extensionmanager-extension": ~4.1.0 - "@jupyterlab/filebrowser-extension": ~4.1.0 - "@jupyterlab/fileeditor-extension": ~4.1.0 - "@jupyterlab/help-extension": ~4.1.0 - "@jupyterlab/htmlviewer-extension": ~4.1.0 - "@jupyterlab/hub-extension": ~4.1.0 - "@jupyterlab/imageviewer-extension": ~4.1.0 - "@jupyterlab/inspector-extension": ~4.1.0 - "@jupyterlab/javascript-extension": ~4.1.0 - "@jupyterlab/json-extension": ~4.1.0 - "@jupyterlab/launcher-extension": ~4.1.0 - "@jupyterlab/logconsole-extension": ~4.1.0 - "@jupyterlab/lsp-extension": ~4.1.0 - "@jupyterlab/mainmenu-extension": ~4.1.0 - "@jupyterlab/markdownviewer-extension": ~4.1.0 - "@jupyterlab/markedparser-extension": ~4.1.0 - "@jupyterlab/mathjax-extension": ~4.1.0 - "@jupyterlab/mermaid-extension": ~4.1.0 - "@jupyterlab/metadataform-extension": ~4.1.0 - "@jupyterlab/notebook-extension": ~4.1.0 - "@jupyterlab/pdf-extension": ~4.1.0 - "@jupyterlab/pluginmanager-extension": ~4.1.0 - "@jupyterlab/rendermime-extension": ~4.1.0 - "@jupyterlab/running-extension": ~4.1.0 - "@jupyterlab/settingeditor-extension": ~4.1.0 - "@jupyterlab/shortcuts-extension": ~4.1.0 - "@jupyterlab/statusbar-extension": ~4.1.0 - "@jupyterlab/terminal-extension": ~4.1.0 - "@jupyterlab/theme-dark-extension": ~4.1.0 - "@jupyterlab/theme-light-extension": ~4.1.0 - "@jupyterlab/toc-extension": ~6.1.0 - "@jupyterlab/tooltip-extension": ~4.1.0 - "@jupyterlab/translation-extension": ~4.1.0 - "@jupyterlab/ui-components-extension": ~4.1.0 - "@jupyterlab/vega5-extension": ~4.1.0 + "@jupyterlab/application": ~4.1.5 + "@jupyterlab/application-extension": ~4.1.5 + "@jupyterlab/apputils-extension": ~4.1.5 + "@jupyterlab/builder": ^4.1.5 + "@jupyterlab/buildutils": ^4.1.5 + "@jupyterlab/cell-toolbar-extension": ~4.1.5 + "@jupyterlab/celltags-extension": ~4.1.5 + "@jupyterlab/codemirror-extension": ~4.1.5 + "@jupyterlab/completer-extension": ~4.1.5 + "@jupyterlab/console-extension": ~4.1.5 + "@jupyterlab/coreutils": ~6.1.5 + "@jupyterlab/csvviewer-extension": ~4.1.5 + "@jupyterlab/debugger-extension": ~4.1.5 + "@jupyterlab/docmanager-extension": ~4.1.5 + "@jupyterlab/documentsearch-extension": ~4.1.5 + "@jupyterlab/extensionmanager-extension": ~4.1.5 + "@jupyterlab/filebrowser-extension": ~4.1.5 + "@jupyterlab/fileeditor-extension": ~4.1.5 + "@jupyterlab/help-extension": ~4.1.5 + "@jupyterlab/htmlviewer-extension": ~4.1.5 + "@jupyterlab/hub-extension": ~4.1.5 + "@jupyterlab/imageviewer-extension": ~4.1.5 + "@jupyterlab/inspector-extension": ~4.1.5 + "@jupyterlab/javascript-extension": ~4.1.5 + "@jupyterlab/json-extension": ~4.1.5 + "@jupyterlab/launcher-extension": ~4.1.5 + "@jupyterlab/logconsole-extension": ~4.1.5 + "@jupyterlab/lsp-extension": ~4.1.5 + "@jupyterlab/mainmenu-extension": ~4.1.5 + "@jupyterlab/markdownviewer-extension": ~4.1.5 + "@jupyterlab/markedparser-extension": ~4.1.5 + "@jupyterlab/mathjax-extension": ~4.1.5 + "@jupyterlab/mermaid-extension": ~4.1.5 + "@jupyterlab/metadataform-extension": ~4.1.5 + "@jupyterlab/notebook-extension": ~4.1.5 + "@jupyterlab/pdf-extension": ~4.1.5 + "@jupyterlab/pluginmanager-extension": ~4.1.5 + "@jupyterlab/rendermime-extension": ~4.1.5 + "@jupyterlab/running-extension": ~4.1.5 + "@jupyterlab/settingeditor-extension": ~4.1.5 + "@jupyterlab/shortcuts-extension": ~4.1.5 + "@jupyterlab/statusbar-extension": ~4.1.5 + "@jupyterlab/terminal-extension": ~4.1.5 + "@jupyterlab/theme-dark-extension": ~4.1.5 + "@jupyterlab/theme-light-extension": ~4.1.5 + "@jupyterlab/toc-extension": ~6.1.5 + "@jupyterlab/tooltip-extension": ~4.1.5 + "@jupyterlab/translation-extension": ~4.1.5 + "@jupyterlab/ui-components-extension": ~4.1.5 + "@jupyterlab/vega5-extension": ~4.1.5 chokidar: ^3.4.0 css-loader: ^6.7.1 duplicate-package-checker-webpack-plugin: ^3.0.0 @@ -2200,21 +2200,21 @@ __metadata: languageName: unknown linkType: soft -"@jupyterlab/application@^4.1.0, @jupyterlab/application@workspace:packages/application, @jupyterlab/application@~4.1.0": +"@jupyterlab/application@^4.1.5, @jupyterlab/application@workspace:packages/application, @jupyterlab/application@~4.1.5": version: 0.0.0-use.local resolution: "@jupyterlab/application@workspace:packages/application" dependencies: "@fortawesome/fontawesome-free": ^5.12.0 - "@jupyterlab/apputils": ^4.2.0 - "@jupyterlab/coreutils": ^6.1.0 - "@jupyterlab/docregistry": ^4.1.0 - "@jupyterlab/rendermime": ^4.1.0 - "@jupyterlab/rendermime-interfaces": ^3.9.0 - "@jupyterlab/services": ^7.1.0 - "@jupyterlab/statedb": ^4.1.0 - "@jupyterlab/testing": ^4.1.0 - "@jupyterlab/translation": ^4.1.0 - "@jupyterlab/ui-components": ^4.1.0 + "@jupyterlab/apputils": ^4.2.5 + "@jupyterlab/coreutils": ^6.1.5 + "@jupyterlab/docregistry": ^4.1.5 + "@jupyterlab/rendermime": ^4.1.5 + "@jupyterlab/rendermime-interfaces": ^3.9.5 + "@jupyterlab/services": ^7.1.5 + "@jupyterlab/statedb": ^4.1.5 + "@jupyterlab/testing": ^4.1.5 + "@jupyterlab/translation": ^4.1.5 + "@jupyterlab/ui-components": ^4.1.5 "@lumino/algorithm": ^2.0.1 "@lumino/application": ^2.3.0 "@lumino/commands": ^2.2.0 @@ -2233,23 +2233,23 @@ __metadata: languageName: unknown linkType: soft -"@jupyterlab/apputils-extension@^4.1.0, @jupyterlab/apputils-extension@workspace:packages/apputils-extension, @jupyterlab/apputils-extension@~4.1.0": +"@jupyterlab/apputils-extension@^4.1.5, @jupyterlab/apputils-extension@workspace:packages/apputils-extension, @jupyterlab/apputils-extension@~4.1.5": version: 0.0.0-use.local resolution: "@jupyterlab/apputils-extension@workspace:packages/apputils-extension" dependencies: - "@jupyterlab/application": ^4.1.0 - "@jupyterlab/apputils": ^4.2.0 - "@jupyterlab/coreutils": ^6.1.0 - "@jupyterlab/docregistry": ^4.1.0 - "@jupyterlab/filebrowser": ^4.1.0 - "@jupyterlab/mainmenu": ^4.1.0 - "@jupyterlab/rendermime-interfaces": ^3.9.0 - "@jupyterlab/services": ^7.1.0 - "@jupyterlab/settingregistry": ^4.1.0 - "@jupyterlab/statedb": ^4.1.0 - "@jupyterlab/statusbar": ^4.1.0 - "@jupyterlab/translation": ^4.1.0 - "@jupyterlab/ui-components": ^4.1.0 + "@jupyterlab/application": ^4.1.5 + "@jupyterlab/apputils": ^4.2.5 + "@jupyterlab/coreutils": ^6.1.5 + "@jupyterlab/docregistry": ^4.1.5 + "@jupyterlab/filebrowser": ^4.1.5 + "@jupyterlab/mainmenu": ^4.1.5 + "@jupyterlab/rendermime-interfaces": ^3.9.5 + "@jupyterlab/services": ^7.1.5 + "@jupyterlab/settingregistry": ^4.1.5 + "@jupyterlab/statedb": ^4.1.5 + "@jupyterlab/statusbar": ^4.1.5 + "@jupyterlab/translation": ^4.1.5 + "@jupyterlab/ui-components": ^4.1.5 "@lumino/algorithm": ^2.0.1 "@lumino/commands": ^2.2.0 "@lumino/coreutils": ^2.1.2 @@ -2266,20 +2266,20 @@ __metadata: languageName: unknown linkType: soft -"@jupyterlab/apputils@^4.2.0, @jupyterlab/apputils@workspace:packages/apputils": +"@jupyterlab/apputils@^4.2.5, @jupyterlab/apputils@workspace:packages/apputils": version: 0.0.0-use.local resolution: "@jupyterlab/apputils@workspace:packages/apputils" dependencies: - "@jupyterlab/coreutils": ^6.1.0 - "@jupyterlab/observables": ^5.1.0 - "@jupyterlab/rendermime-interfaces": ^3.9.0 - "@jupyterlab/services": ^7.1.0 - "@jupyterlab/settingregistry": ^4.1.0 - "@jupyterlab/statedb": ^4.1.0 - "@jupyterlab/statusbar": ^4.1.0 - "@jupyterlab/testing": ^4.1.0 - "@jupyterlab/translation": ^4.1.0 - "@jupyterlab/ui-components": ^4.1.0 + "@jupyterlab/coreutils": ^6.1.5 + "@jupyterlab/observables": ^5.1.5 + "@jupyterlab/rendermime-interfaces": ^3.9.5 + "@jupyterlab/services": ^7.1.5 + "@jupyterlab/settingregistry": ^4.1.5 + "@jupyterlab/statedb": ^4.1.5 + "@jupyterlab/statusbar": ^4.1.5 + "@jupyterlab/testing": ^4.1.5 + "@jupyterlab/translation": ^4.1.5 + "@jupyterlab/ui-components": ^4.1.5 "@lumino/algorithm": ^2.0.1 "@lumino/commands": ^2.2.0 "@lumino/coreutils": ^2.1.2 @@ -2301,14 +2301,14 @@ __metadata: languageName: unknown linkType: soft -"@jupyterlab/attachments@^4.1.0, @jupyterlab/attachments@workspace:packages/attachments": +"@jupyterlab/attachments@^4.1.5, @jupyterlab/attachments@workspace:packages/attachments": version: 0.0.0-use.local resolution: "@jupyterlab/attachments@workspace:packages/attachments" dependencies: - "@jupyterlab/nbformat": ^4.1.0 - "@jupyterlab/observables": ^5.1.0 - "@jupyterlab/rendermime": ^4.1.0 - "@jupyterlab/rendermime-interfaces": ^3.9.0 + "@jupyterlab/nbformat": ^4.1.5 + "@jupyterlab/observables": ^5.1.5 + "@jupyterlab/rendermime": ^4.1.5 + "@jupyterlab/rendermime-interfaces": ^3.9.5 "@lumino/disposable": ^2.1.2 "@lumino/signaling": ^2.1.2 rimraf: ~5.0.5 @@ -2317,7 +2317,7 @@ __metadata: languageName: unknown linkType: soft -"@jupyterlab/builder@^4.1.0, @jupyterlab/builder@workspace:builder": +"@jupyterlab/builder@^4.1.5, @jupyterlab/builder@workspace:builder": version: 0.0.0-use.local resolution: "@jupyterlab/builder@workspace:builder" dependencies: @@ -2363,7 +2363,7 @@ __metadata: languageName: unknown linkType: soft -"@jupyterlab/buildutils@^4.1.0, @jupyterlab/buildutils@workspace:buildutils": +"@jupyterlab/buildutils@^4.1.5, @jupyterlab/buildutils@workspace:buildutils": version: 0.0.0-use.local resolution: "@jupyterlab/buildutils@workspace:buildutils" dependencies: @@ -2403,32 +2403,32 @@ __metadata: languageName: unknown linkType: soft -"@jupyterlab/cell-toolbar-extension@^4.1.0, @jupyterlab/cell-toolbar-extension@workspace:packages/cell-toolbar-extension, @jupyterlab/cell-toolbar-extension@~4.1.0": +"@jupyterlab/cell-toolbar-extension@^4.1.5, @jupyterlab/cell-toolbar-extension@workspace:packages/cell-toolbar-extension, @jupyterlab/cell-toolbar-extension@~4.1.5": version: 0.0.0-use.local resolution: "@jupyterlab/cell-toolbar-extension@workspace:packages/cell-toolbar-extension" dependencies: - "@jupyterlab/application": ^4.1.0 - "@jupyterlab/apputils": ^4.2.0 - "@jupyterlab/cell-toolbar": ^4.1.0 - "@jupyterlab/settingregistry": ^4.1.0 - "@jupyterlab/translation": ^4.1.0 + "@jupyterlab/application": ^4.1.5 + "@jupyterlab/apputils": ^4.2.5 + "@jupyterlab/cell-toolbar": ^4.1.5 + "@jupyterlab/settingregistry": ^4.1.5 + "@jupyterlab/translation": ^4.1.5 rimraf: ~5.0.5 typescript: ~5.1.6 languageName: unknown linkType: soft -"@jupyterlab/cell-toolbar@^4.1.0, @jupyterlab/cell-toolbar@workspace:packages/cell-toolbar": +"@jupyterlab/cell-toolbar@^4.1.5, @jupyterlab/cell-toolbar@workspace:packages/cell-toolbar": version: 0.0.0-use.local resolution: "@jupyterlab/cell-toolbar@workspace:packages/cell-toolbar" dependencies: "@jupyter/ydoc": ^1.1.1 - "@jupyterlab/apputils": ^4.2.0 - "@jupyterlab/cells": ^4.1.0 - "@jupyterlab/docregistry": ^4.1.0 - "@jupyterlab/notebook": ^4.1.0 - "@jupyterlab/observables": ^5.1.0 - "@jupyterlab/testing": ^4.1.0 - "@jupyterlab/ui-components": ^4.1.0 + "@jupyterlab/apputils": ^4.2.5 + "@jupyterlab/cells": ^4.1.5 + "@jupyterlab/docregistry": ^4.1.5 + "@jupyterlab/notebook": ^4.1.5 + "@jupyterlab/observables": ^5.1.5 + "@jupyterlab/testing": ^4.1.5 + "@jupyterlab/ui-components": ^4.1.5 "@lumino/algorithm": ^2.0.1 "@lumino/commands": ^2.2.0 "@lumino/disposable": ^2.1.2 @@ -2441,29 +2441,29 @@ __metadata: languageName: unknown linkType: soft -"@jupyterlab/cells@^4.1.0, @jupyterlab/cells@workspace:packages/cells": +"@jupyterlab/cells@^4.1.5, @jupyterlab/cells@workspace:packages/cells": version: 0.0.0-use.local resolution: "@jupyterlab/cells@workspace:packages/cells" dependencies: "@codemirror/state": ^6.2.0 "@codemirror/view": ^6.9.6 "@jupyter/ydoc": ^1.1.1 - "@jupyterlab/apputils": ^4.2.0 - "@jupyterlab/attachments": ^4.1.0 - "@jupyterlab/codeeditor": ^4.1.0 - "@jupyterlab/codemirror": ^4.1.0 - "@jupyterlab/coreutils": ^6.1.0 - "@jupyterlab/documentsearch": ^4.1.0 - "@jupyterlab/filebrowser": ^4.1.0 - "@jupyterlab/nbformat": ^4.1.0 - "@jupyterlab/observables": ^5.1.0 - "@jupyterlab/outputarea": ^4.1.0 - "@jupyterlab/rendermime": ^4.1.0 - "@jupyterlab/services": ^7.1.0 - "@jupyterlab/testing": ^4.1.0 - "@jupyterlab/toc": ^6.1.0 - "@jupyterlab/translation": ^4.1.0 - "@jupyterlab/ui-components": ^4.1.0 + "@jupyterlab/apputils": ^4.2.5 + "@jupyterlab/attachments": ^4.1.5 + "@jupyterlab/codeeditor": ^4.1.5 + "@jupyterlab/codemirror": ^4.1.5 + "@jupyterlab/coreutils": ^6.1.5 + "@jupyterlab/documentsearch": ^4.1.5 + "@jupyterlab/filebrowser": ^4.1.5 + "@jupyterlab/nbformat": ^4.1.5 + "@jupyterlab/observables": ^5.1.5 + "@jupyterlab/outputarea": ^4.1.5 + "@jupyterlab/rendermime": ^4.1.5 + "@jupyterlab/services": ^7.1.5 + "@jupyterlab/testing": ^4.1.5 + "@jupyterlab/toc": ^6.1.5 + "@jupyterlab/translation": ^4.1.5 + "@jupyterlab/ui-components": ^4.1.5 "@lumino/algorithm": ^2.0.1 "@lumino/coreutils": ^2.1.2 "@lumino/domutils": ^2.0.1 @@ -2483,14 +2483,14 @@ __metadata: languageName: unknown linkType: soft -"@jupyterlab/celltags-extension@^4.1.0, @jupyterlab/celltags-extension@workspace:packages/celltags-extension, @jupyterlab/celltags-extension@~4.1.0": +"@jupyterlab/celltags-extension@^4.1.5, @jupyterlab/celltags-extension@workspace:packages/celltags-extension, @jupyterlab/celltags-extension@~4.1.5": version: 0.0.0-use.local resolution: "@jupyterlab/celltags-extension@workspace:packages/celltags-extension" dependencies: - "@jupyterlab/application": ^4.1.0 - "@jupyterlab/notebook": ^4.1.0 - "@jupyterlab/translation": ^4.1.0 - "@jupyterlab/ui-components": ^4.1.0 + "@jupyterlab/application": ^4.1.5 + "@jupyterlab/notebook": ^4.1.5 + "@jupyterlab/translation": ^4.1.5 + "@jupyterlab/ui-components": ^4.1.5 "@lumino/algorithm": ^2.0.1 "@rjsf/utils": ^5.13.4 react: ^18.2.0 @@ -2499,20 +2499,20 @@ __metadata: languageName: unknown linkType: soft -"@jupyterlab/codeeditor@^4.1.0, @jupyterlab/codeeditor@workspace:packages/codeeditor": +"@jupyterlab/codeeditor@^4.1.5, @jupyterlab/codeeditor@workspace:packages/codeeditor": version: 0.0.0-use.local resolution: "@jupyterlab/codeeditor@workspace:packages/codeeditor" dependencies: "@codemirror/state": ^6.2.0 "@jupyter/ydoc": ^1.1.1 - "@jupyterlab/apputils": ^4.2.0 - "@jupyterlab/coreutils": ^6.1.0 - "@jupyterlab/nbformat": ^4.1.0 - "@jupyterlab/observables": ^5.1.0 - "@jupyterlab/statusbar": ^4.1.0 - "@jupyterlab/testing": ^4.1.0 - "@jupyterlab/translation": ^4.1.0 - "@jupyterlab/ui-components": ^4.1.0 + "@jupyterlab/apputils": ^4.2.5 + "@jupyterlab/coreutils": ^6.1.5 + "@jupyterlab/nbformat": ^4.1.5 + "@jupyterlab/observables": ^5.1.5 + "@jupyterlab/statusbar": ^4.1.5 + "@jupyterlab/testing": ^4.1.5 + "@jupyterlab/translation": ^4.1.5 + "@jupyterlab/ui-components": ^4.1.5 "@lumino/coreutils": ^2.1.2 "@lumino/disposable": ^2.1.2 "@lumino/dragdrop": ^2.1.4 @@ -2528,7 +2528,7 @@ __metadata: languageName: unknown linkType: soft -"@jupyterlab/codemirror-extension@^4.1.0, @jupyterlab/codemirror-extension@workspace:packages/codemirror-extension, @jupyterlab/codemirror-extension@~4.1.0": +"@jupyterlab/codemirror-extension@^4.1.5, @jupyterlab/codemirror-extension@workspace:packages/codemirror-extension, @jupyterlab/codemirror-extension@~4.1.5": version: 0.0.0-use.local resolution: "@jupyterlab/codemirror-extension@workspace:packages/codemirror-extension" dependencies: @@ -2536,13 +2536,13 @@ __metadata: "@codemirror/language": ^6.6.0 "@codemirror/legacy-modes": ^6.3.2 "@jupyter/ydoc": ^1.1.1 - "@jupyterlab/application": ^4.1.0 - "@jupyterlab/codeeditor": ^4.1.0 - "@jupyterlab/codemirror": ^4.1.0 - "@jupyterlab/settingregistry": ^4.1.0 - "@jupyterlab/statusbar": ^4.1.0 - "@jupyterlab/translation": ^4.1.0 - "@jupyterlab/ui-components": ^4.1.0 + "@jupyterlab/application": ^4.1.5 + "@jupyterlab/codeeditor": ^4.1.5 + "@jupyterlab/codemirror": ^4.1.5 + "@jupyterlab/settingregistry": ^4.1.5 + "@jupyterlab/statusbar": ^4.1.5 + "@jupyterlab/translation": ^4.1.5 + "@jupyterlab/ui-components": ^4.1.5 "@lumino/coreutils": ^2.1.2 "@lumino/widgets": ^2.3.1 "@rjsf/utils": ^5.13.4 @@ -2555,7 +2555,7 @@ __metadata: languageName: unknown linkType: soft -"@jupyterlab/codemirror@^4.1.0, @jupyterlab/codemirror@workspace:packages/codemirror": +"@jupyterlab/codemirror@^4.1.5, @jupyterlab/codemirror@workspace:packages/codemirror": version: 0.0.0-use.local resolution: "@jupyterlab/codemirror@workspace:packages/codemirror" dependencies: @@ -2580,12 +2580,12 @@ __metadata: "@codemirror/state": ^6.2.0 "@codemirror/view": ^6.9.6 "@jupyter/ydoc": ^1.1.1 - "@jupyterlab/codeeditor": ^4.1.0 - "@jupyterlab/coreutils": ^6.1.0 - "@jupyterlab/documentsearch": ^4.1.0 - "@jupyterlab/nbformat": ^4.1.0 - "@jupyterlab/testing": ^4.1.0 - "@jupyterlab/translation": ^4.1.0 + "@jupyterlab/codeeditor": ^4.1.5 + "@jupyterlab/coreutils": ^6.1.5 + "@jupyterlab/documentsearch": ^4.1.5 + "@jupyterlab/nbformat": ^4.1.5 + "@jupyterlab/testing": ^4.1.5 + "@jupyterlab/translation": ^4.1.5 "@lezer/common": ^1.0.2 "@lezer/generator": ^1.2.2 "@lezer/highlight": ^1.1.4 @@ -2603,15 +2603,15 @@ __metadata: languageName: unknown linkType: soft -"@jupyterlab/completer-extension@^4.1.0, @jupyterlab/completer-extension@workspace:packages/completer-extension, @jupyterlab/completer-extension@~4.1.0": +"@jupyterlab/completer-extension@^4.1.5, @jupyterlab/completer-extension@workspace:packages/completer-extension, @jupyterlab/completer-extension@~4.1.5": version: 0.0.0-use.local resolution: "@jupyterlab/completer-extension@workspace:packages/completer-extension" dependencies: - "@jupyterlab/application": ^4.1.0 - "@jupyterlab/completer": ^4.1.0 - "@jupyterlab/settingregistry": ^4.1.0 - "@jupyterlab/translation": ^4.1.0 - "@jupyterlab/ui-components": ^4.1.0 + "@jupyterlab/application": ^4.1.5 + "@jupyterlab/completer": ^4.1.5 + "@jupyterlab/settingregistry": ^4.1.5 + "@jupyterlab/translation": ^4.1.5 + "@jupyterlab/ui-components": ^4.1.5 "@lumino/commands": ^2.2.0 "@lumino/coreutils": ^2.1.2 "@rjsf/utils": ^5.13.4 @@ -2622,24 +2622,24 @@ __metadata: languageName: unknown linkType: soft -"@jupyterlab/completer@^4.1.0, @jupyterlab/completer@workspace:packages/completer": +"@jupyterlab/completer@^4.1.5, @jupyterlab/completer@workspace:packages/completer": version: 0.0.0-use.local resolution: "@jupyterlab/completer@workspace:packages/completer" dependencies: "@codemirror/state": ^6.2.0 "@codemirror/view": ^6.9.6 "@jupyter/ydoc": ^1.1.1 - "@jupyterlab/apputils": ^4.2.0 - "@jupyterlab/codeeditor": ^4.1.0 - "@jupyterlab/codemirror": ^4.1.0 - "@jupyterlab/coreutils": ^6.1.0 - "@jupyterlab/rendermime": ^4.1.0 - "@jupyterlab/services": ^7.1.0 - "@jupyterlab/settingregistry": ^4.1.0 - "@jupyterlab/statedb": ^4.1.0 - "@jupyterlab/testing": ^4.1.0 - "@jupyterlab/translation": ^4.1.0 - "@jupyterlab/ui-components": ^4.1.0 + "@jupyterlab/apputils": ^4.2.5 + "@jupyterlab/codeeditor": ^4.1.5 + "@jupyterlab/codemirror": ^4.1.5 + "@jupyterlab/coreutils": ^6.1.5 + "@jupyterlab/rendermime": ^4.1.5 + "@jupyterlab/services": ^7.1.5 + "@jupyterlab/settingregistry": ^4.1.5 + "@jupyterlab/statedb": ^4.1.5 + "@jupyterlab/testing": ^4.1.5 + "@jupyterlab/translation": ^4.1.5 + "@jupyterlab/ui-components": ^4.1.5 "@lumino/algorithm": ^2.0.1 "@lumino/coreutils": ^2.1.2 "@lumino/disposable": ^2.1.2 @@ -2655,22 +2655,22 @@ __metadata: languageName: unknown linkType: soft -"@jupyterlab/console-extension@^4.1.0, @jupyterlab/console-extension@workspace:packages/console-extension, @jupyterlab/console-extension@~4.1.0": +"@jupyterlab/console-extension@^4.1.5, @jupyterlab/console-extension@workspace:packages/console-extension, @jupyterlab/console-extension@~4.1.5": version: 0.0.0-use.local resolution: "@jupyterlab/console-extension@workspace:packages/console-extension" dependencies: - "@jupyterlab/application": ^4.1.0 - "@jupyterlab/apputils": ^4.2.0 - "@jupyterlab/codeeditor": ^4.1.0 - "@jupyterlab/completer": ^4.1.0 - "@jupyterlab/console": ^4.1.0 - "@jupyterlab/filebrowser": ^4.1.0 - "@jupyterlab/launcher": ^4.1.0 - "@jupyterlab/mainmenu": ^4.1.0 - "@jupyterlab/rendermime": ^4.1.0 - "@jupyterlab/settingregistry": ^4.1.0 - "@jupyterlab/translation": ^4.1.0 - "@jupyterlab/ui-components": ^4.1.0 + "@jupyterlab/application": ^4.1.5 + "@jupyterlab/apputils": ^4.2.5 + "@jupyterlab/codeeditor": ^4.1.5 + "@jupyterlab/completer": ^4.1.5 + "@jupyterlab/console": ^4.1.5 + "@jupyterlab/filebrowser": ^4.1.5 + "@jupyterlab/launcher": ^4.1.5 + "@jupyterlab/mainmenu": ^4.1.5 + "@jupyterlab/rendermime": ^4.1.5 + "@jupyterlab/settingregistry": ^4.1.5 + "@jupyterlab/translation": ^4.1.5 + "@jupyterlab/ui-components": ^4.1.5 "@lumino/algorithm": ^2.0.1 "@lumino/coreutils": ^2.1.2 "@lumino/disposable": ^2.1.2 @@ -2682,25 +2682,25 @@ __metadata: languageName: unknown linkType: soft -"@jupyterlab/console@^4.1.0, @jupyterlab/console@workspace:packages/console": +"@jupyterlab/console@^4.1.5, @jupyterlab/console@workspace:packages/console": version: 0.0.0-use.local resolution: "@jupyterlab/console@workspace:packages/console" dependencies: "@codemirror/state": ^6.2.0 "@codemirror/view": ^6.9.6 "@jupyter/ydoc": ^1.1.1 - "@jupyterlab/apputils": ^4.2.0 - "@jupyterlab/cells": ^4.1.0 - "@jupyterlab/codeeditor": ^4.1.0 - "@jupyterlab/codemirror": ^4.1.0 - "@jupyterlab/coreutils": ^6.1.0 - "@jupyterlab/nbformat": ^4.1.0 - "@jupyterlab/observables": ^5.1.0 - "@jupyterlab/rendermime": ^4.1.0 - "@jupyterlab/services": ^7.1.0 - "@jupyterlab/testing": ^4.1.0 - "@jupyterlab/translation": ^4.1.0 - "@jupyterlab/ui-components": ^4.1.0 + "@jupyterlab/apputils": ^4.2.5 + "@jupyterlab/cells": ^4.1.5 + "@jupyterlab/codeeditor": ^4.1.5 + "@jupyterlab/codemirror": ^4.1.5 + "@jupyterlab/coreutils": ^6.1.5 + "@jupyterlab/nbformat": ^4.1.5 + "@jupyterlab/observables": ^5.1.5 + "@jupyterlab/rendermime": ^4.1.5 + "@jupyterlab/services": ^7.1.5 + "@jupyterlab/testing": ^4.1.5 + "@jupyterlab/translation": ^4.1.5 + "@jupyterlab/ui-components": ^4.1.5 "@lumino/coreutils": ^2.1.2 "@lumino/disposable": ^2.1.2 "@lumino/dragdrop": ^2.1.4 @@ -2715,7 +2715,7 @@ __metadata: languageName: unknown linkType: soft -"@jupyterlab/coreutils@^6.1.0, @jupyterlab/coreutils@workspace:packages/coreutils, @jupyterlab/coreutils@~6.1.0": +"@jupyterlab/coreutils@^6.1.5, @jupyterlab/coreutils@workspace:packages/coreutils, @jupyterlab/coreutils@~6.1.5": version: 0.0.0-use.local resolution: "@jupyterlab/coreutils@workspace:packages/coreutils" dependencies: @@ -2740,19 +2740,19 @@ __metadata: languageName: unknown linkType: soft -"@jupyterlab/csvviewer-extension@^4.1.0, @jupyterlab/csvviewer-extension@workspace:packages/csvviewer-extension, @jupyterlab/csvviewer-extension@~4.1.0": +"@jupyterlab/csvviewer-extension@^4.1.5, @jupyterlab/csvviewer-extension@workspace:packages/csvviewer-extension, @jupyterlab/csvviewer-extension@~4.1.5": version: 0.0.0-use.local resolution: "@jupyterlab/csvviewer-extension@workspace:packages/csvviewer-extension" dependencies: - "@jupyterlab/application": ^4.1.0 - "@jupyterlab/apputils": ^4.2.0 - "@jupyterlab/csvviewer": ^4.1.0 - "@jupyterlab/docregistry": ^4.1.0 - "@jupyterlab/documentsearch": ^4.1.0 - "@jupyterlab/mainmenu": ^4.1.0 - "@jupyterlab/observables": ^5.1.0 - "@jupyterlab/settingregistry": ^4.1.0 - "@jupyterlab/translation": ^4.1.0 + "@jupyterlab/application": ^4.1.5 + "@jupyterlab/apputils": ^4.2.5 + "@jupyterlab/csvviewer": ^4.1.5 + "@jupyterlab/docregistry": ^4.1.5 + "@jupyterlab/documentsearch": ^4.1.5 + "@jupyterlab/mainmenu": ^4.1.5 + "@jupyterlab/observables": ^5.1.5 + "@jupyterlab/settingregistry": ^4.1.5 + "@jupyterlab/translation": ^4.1.5 "@lumino/datagrid": ^2.3.0 "@lumino/widgets": ^2.3.1 rimraf: ~5.0.5 @@ -2761,15 +2761,15 @@ __metadata: languageName: unknown linkType: soft -"@jupyterlab/csvviewer@^4.1.0, @jupyterlab/csvviewer@workspace:packages/csvviewer": +"@jupyterlab/csvviewer@^4.1.5, @jupyterlab/csvviewer@workspace:packages/csvviewer": version: 0.0.0-use.local resolution: "@jupyterlab/csvviewer@workspace:packages/csvviewer" dependencies: - "@jupyterlab/coreutils": ^6.1.0 - "@jupyterlab/docregistry": ^4.1.0 - "@jupyterlab/testing": ^4.1.0 - "@jupyterlab/translation": ^4.1.0 - "@jupyterlab/ui-components": ^4.1.0 + "@jupyterlab/coreutils": ^6.1.5 + "@jupyterlab/docregistry": ^4.1.5 + "@jupyterlab/testing": ^4.1.5 + "@jupyterlab/translation": ^4.1.5 + "@jupyterlab/ui-components": ^4.1.5 "@lumino/coreutils": ^2.1.2 "@lumino/datagrid": ^2.3.0 "@lumino/disposable": ^2.1.2 @@ -2786,26 +2786,26 @@ __metadata: languageName: unknown linkType: soft -"@jupyterlab/debugger-extension@^4.1.0, @jupyterlab/debugger-extension@workspace:packages/debugger-extension, @jupyterlab/debugger-extension@~4.1.0": +"@jupyterlab/debugger-extension@^4.1.5, @jupyterlab/debugger-extension@workspace:packages/debugger-extension, @jupyterlab/debugger-extension@~4.1.5": version: 0.0.0-use.local resolution: "@jupyterlab/debugger-extension@workspace:packages/debugger-extension" dependencies: - "@jupyterlab/application": ^4.1.0 - "@jupyterlab/apputils": ^4.2.0 - "@jupyterlab/cells": ^4.1.0 - "@jupyterlab/codeeditor": ^4.1.0 - "@jupyterlab/console": ^4.1.0 - "@jupyterlab/coreutils": ^6.1.0 - "@jupyterlab/debugger": ^4.1.0 - "@jupyterlab/docregistry": ^4.1.0 - "@jupyterlab/fileeditor": ^4.1.0 - "@jupyterlab/logconsole": ^4.1.0 - "@jupyterlab/notebook": ^4.1.0 - "@jupyterlab/rendermime": ^4.1.0 - "@jupyterlab/services": ^7.1.0 - "@jupyterlab/settingregistry": ^4.1.0 - "@jupyterlab/testing": ^4.1.0 - "@jupyterlab/translation": ^4.1.0 + "@jupyterlab/application": ^4.1.5 + "@jupyterlab/apputils": ^4.2.5 + "@jupyterlab/cells": ^4.1.5 + "@jupyterlab/codeeditor": ^4.1.5 + "@jupyterlab/console": ^4.1.5 + "@jupyterlab/coreutils": ^6.1.5 + "@jupyterlab/debugger": ^4.1.5 + "@jupyterlab/docregistry": ^4.1.5 + "@jupyterlab/fileeditor": ^4.1.5 + "@jupyterlab/logconsole": ^4.1.5 + "@jupyterlab/notebook": ^4.1.5 + "@jupyterlab/rendermime": ^4.1.5 + "@jupyterlab/services": ^7.1.5 + "@jupyterlab/settingregistry": ^4.1.5 + "@jupyterlab/testing": ^4.1.5 + "@jupyterlab/translation": ^4.1.5 "@types/jest": ^29.2.0 "@types/react-dom": ^18.0.9 rimraf: ~5.0.5 @@ -2814,29 +2814,29 @@ __metadata: languageName: unknown linkType: soft -"@jupyterlab/debugger@^4.1.0, @jupyterlab/debugger@workspace:packages/debugger": +"@jupyterlab/debugger@^4.1.5, @jupyterlab/debugger@workspace:packages/debugger": version: 0.0.0-use.local resolution: "@jupyterlab/debugger@workspace:packages/debugger" dependencies: "@codemirror/state": ^6.2.0 "@codemirror/view": ^6.9.6 "@jupyter/ydoc": ^1.1.1 - "@jupyterlab/application": ^4.1.0 - "@jupyterlab/apputils": ^4.2.0 - "@jupyterlab/cells": ^4.1.0 - "@jupyterlab/codeeditor": ^4.1.0 - "@jupyterlab/codemirror": ^4.1.0 - "@jupyterlab/console": ^4.1.0 - "@jupyterlab/coreutils": ^6.1.0 - "@jupyterlab/docregistry": ^4.1.0 - "@jupyterlab/fileeditor": ^4.1.0 - "@jupyterlab/notebook": ^4.1.0 - "@jupyterlab/observables": ^5.1.0 - "@jupyterlab/rendermime": ^4.1.0 - "@jupyterlab/services": ^7.1.0 - "@jupyterlab/testing": ^4.1.0 - "@jupyterlab/translation": ^4.1.0 - "@jupyterlab/ui-components": ^4.1.0 + "@jupyterlab/application": ^4.1.5 + "@jupyterlab/apputils": ^4.2.5 + "@jupyterlab/cells": ^4.1.5 + "@jupyterlab/codeeditor": ^4.1.5 + "@jupyterlab/codemirror": ^4.1.5 + "@jupyterlab/console": ^4.1.5 + "@jupyterlab/coreutils": ^6.1.5 + "@jupyterlab/docregistry": ^4.1.5 + "@jupyterlab/fileeditor": ^4.1.5 + "@jupyterlab/notebook": ^4.1.5 + "@jupyterlab/observables": ^5.1.5 + "@jupyterlab/rendermime": ^4.1.5 + "@jupyterlab/services": ^7.1.5 + "@jupyterlab/testing": ^4.1.5 + "@jupyterlab/translation": ^4.1.5 + "@jupyterlab/ui-components": ^4.1.5 "@lumino/algorithm": ^2.0.1 "@lumino/commands": ^2.2.0 "@lumino/coreutils": ^2.1.2 @@ -2857,20 +2857,20 @@ __metadata: languageName: unknown linkType: soft -"@jupyterlab/docmanager-extension@^4.1.0, @jupyterlab/docmanager-extension@workspace:packages/docmanager-extension, @jupyterlab/docmanager-extension@~4.1.0": +"@jupyterlab/docmanager-extension@^4.1.5, @jupyterlab/docmanager-extension@workspace:packages/docmanager-extension, @jupyterlab/docmanager-extension@~4.1.5": version: 0.0.0-use.local resolution: "@jupyterlab/docmanager-extension@workspace:packages/docmanager-extension" dependencies: - "@jupyterlab/application": ^4.1.0 - "@jupyterlab/apputils": ^4.2.0 - "@jupyterlab/coreutils": ^6.1.0 - "@jupyterlab/docmanager": ^4.1.0 - "@jupyterlab/docregistry": ^4.1.0 - "@jupyterlab/services": ^7.1.0 - "@jupyterlab/settingregistry": ^4.1.0 - "@jupyterlab/statusbar": ^4.1.0 - "@jupyterlab/translation": ^4.1.0 - "@jupyterlab/ui-components": ^4.1.0 + "@jupyterlab/application": ^4.1.5 + "@jupyterlab/apputils": ^4.2.5 + "@jupyterlab/coreutils": ^6.1.5 + "@jupyterlab/docmanager": ^4.1.5 + "@jupyterlab/docregistry": ^4.1.5 + "@jupyterlab/services": ^7.1.5 + "@jupyterlab/settingregistry": ^4.1.5 + "@jupyterlab/statusbar": ^4.1.5 + "@jupyterlab/translation": ^4.1.5 + "@jupyterlab/ui-components": ^4.1.5 "@lumino/algorithm": ^2.0.1 "@lumino/commands": ^2.2.0 "@lumino/coreutils": ^2.1.2 @@ -2884,18 +2884,18 @@ __metadata: languageName: unknown linkType: soft -"@jupyterlab/docmanager@^4.1.0, @jupyterlab/docmanager@workspace:packages/docmanager": +"@jupyterlab/docmanager@^4.1.5, @jupyterlab/docmanager@workspace:packages/docmanager": version: 0.0.0-use.local resolution: "@jupyterlab/docmanager@workspace:packages/docmanager" dependencies: - "@jupyterlab/apputils": ^4.2.0 - "@jupyterlab/coreutils": ^6.1.0 - "@jupyterlab/docregistry": ^4.1.0 - "@jupyterlab/services": ^7.1.0 - "@jupyterlab/statusbar": ^4.1.0 - "@jupyterlab/testing": ^4.1.0 - "@jupyterlab/translation": ^4.1.0 - "@jupyterlab/ui-components": ^4.1.0 + "@jupyterlab/apputils": ^4.2.5 + "@jupyterlab/coreutils": ^6.1.5 + "@jupyterlab/docregistry": ^4.1.5 + "@jupyterlab/services": ^7.1.5 + "@jupyterlab/statusbar": ^4.1.5 + "@jupyterlab/testing": ^4.1.5 + "@jupyterlab/translation": ^4.1.5 + "@jupyterlab/ui-components": ^4.1.5 "@lumino/algorithm": ^2.0.1 "@lumino/coreutils": ^2.1.2 "@lumino/disposable": ^2.1.2 @@ -2912,21 +2912,21 @@ __metadata: languageName: unknown linkType: soft -"@jupyterlab/docregistry@^4.1.0, @jupyterlab/docregistry@workspace:packages/docregistry": +"@jupyterlab/docregistry@^4.1.5, @jupyterlab/docregistry@workspace:packages/docregistry": version: 0.0.0-use.local resolution: "@jupyterlab/docregistry@workspace:packages/docregistry" dependencies: "@jupyter/ydoc": ^1.1.1 - "@jupyterlab/apputils": ^4.2.0 - "@jupyterlab/codeeditor": ^4.1.0 - "@jupyterlab/coreutils": ^6.1.0 - "@jupyterlab/observables": ^5.1.0 - "@jupyterlab/rendermime": ^4.1.0 - "@jupyterlab/rendermime-interfaces": ^3.9.0 - "@jupyterlab/services": ^7.1.0 - "@jupyterlab/testing": ^4.1.0 - "@jupyterlab/translation": ^4.1.0 - "@jupyterlab/ui-components": ^4.1.0 + "@jupyterlab/apputils": ^4.2.5 + "@jupyterlab/codeeditor": ^4.1.5 + "@jupyterlab/coreutils": ^6.1.5 + "@jupyterlab/observables": ^5.1.5 + "@jupyterlab/rendermime": ^4.1.5 + "@jupyterlab/rendermime-interfaces": ^3.9.5 + "@jupyterlab/services": ^7.1.5 + "@jupyterlab/testing": ^4.1.5 + "@jupyterlab/translation": ^4.1.5 + "@jupyterlab/ui-components": ^4.1.5 "@lumino/algorithm": ^2.0.1 "@lumino/coreutils": ^2.1.2 "@lumino/disposable": ^2.1.2 @@ -2943,15 +2943,15 @@ __metadata: languageName: unknown linkType: soft -"@jupyterlab/documentsearch-extension@^4.1.0, @jupyterlab/documentsearch-extension@workspace:packages/documentsearch-extension, @jupyterlab/documentsearch-extension@~4.1.0": +"@jupyterlab/documentsearch-extension@^4.1.5, @jupyterlab/documentsearch-extension@workspace:packages/documentsearch-extension, @jupyterlab/documentsearch-extension@~4.1.5": version: 0.0.0-use.local resolution: "@jupyterlab/documentsearch-extension@workspace:packages/documentsearch-extension" dependencies: - "@jupyterlab/application": ^4.1.0 - "@jupyterlab/apputils": ^4.2.0 - "@jupyterlab/documentsearch": ^4.1.0 - "@jupyterlab/settingregistry": ^4.1.0 - "@jupyterlab/translation": ^4.1.0 + "@jupyterlab/application": ^4.1.5 + "@jupyterlab/apputils": ^4.2.5 + "@jupyterlab/documentsearch": ^4.1.5 + "@jupyterlab/settingregistry": ^4.1.5 + "@jupyterlab/translation": ^4.1.5 "@lumino/commands": ^2.2.0 "@lumino/widgets": ^2.3.1 rimraf: ~5.0.5 @@ -2959,14 +2959,14 @@ __metadata: languageName: unknown linkType: soft -"@jupyterlab/documentsearch@^4.1.0, @jupyterlab/documentsearch@workspace:packages/documentsearch": +"@jupyterlab/documentsearch@^4.1.5, @jupyterlab/documentsearch@workspace:packages/documentsearch": version: 0.0.0-use.local resolution: "@jupyterlab/documentsearch@workspace:packages/documentsearch" dependencies: - "@jupyterlab/apputils": ^4.2.0 - "@jupyterlab/testing": ^4.1.0 - "@jupyterlab/translation": ^4.1.0 - "@jupyterlab/ui-components": ^4.1.0 + "@jupyterlab/apputils": ^4.2.5 + "@jupyterlab/testing": ^4.1.5 + "@jupyterlab/translation": ^4.1.5 + "@jupyterlab/ui-components": ^4.1.5 "@lumino/commands": ^2.2.0 "@lumino/coreutils": ^2.1.2 "@lumino/disposable": ^2.1.2 @@ -2986,39 +2986,39 @@ __metadata: version: 0.0.0-use.local resolution: "@jupyterlab/example-app@workspace:examples/app" dependencies: - "@jupyterlab/application": ^4.1.0 - "@jupyterlab/application-extension": ^4.1.0 - "@jupyterlab/apputils-extension": ^4.1.0 - "@jupyterlab/builder": ^4.1.0 - "@jupyterlab/celltags-extension": ^4.1.0 - "@jupyterlab/codemirror-extension": ^4.1.0 - "@jupyterlab/completer-extension": ^4.1.0 - "@jupyterlab/console-extension": ^4.1.0 - "@jupyterlab/csvviewer-extension": ^4.1.0 - "@jupyterlab/docmanager-extension": ^4.1.0 - "@jupyterlab/filebrowser-extension": ^4.1.0 - "@jupyterlab/fileeditor-extension": ^4.1.0 - "@jupyterlab/help-extension": ^4.1.0 - "@jupyterlab/imageviewer-extension": ^4.1.0 - "@jupyterlab/inspector-extension": ^4.1.0 - "@jupyterlab/launcher-extension": ^4.1.0 - "@jupyterlab/mainmenu-extension": ^4.1.0 - "@jupyterlab/markdownviewer-extension": ^4.1.0 - "@jupyterlab/mathjax-extension": ^4.1.0 - "@jupyterlab/metadataform-extension": ^4.1.0 - "@jupyterlab/notebook-extension": ^4.1.0 - "@jupyterlab/rendermime-extension": ^4.1.0 - "@jupyterlab/running-extension": ^4.1.0 - "@jupyterlab/settingeditor-extension": ^4.1.0 - "@jupyterlab/shortcuts-extension": ^4.1.0 - "@jupyterlab/statusbar-extension": ^4.1.0 - "@jupyterlab/theme-dark-extension": ^4.1.0 - "@jupyterlab/theme-light-extension": ^4.1.0 - "@jupyterlab/toc-extension": ^6.1.0 - "@jupyterlab/tooltip-extension": ^4.1.0 - "@jupyterlab/translation": ^4.1.0 - "@jupyterlab/translation-extension": ^4.1.0 - "@jupyterlab/ui-components-extension": ^4.1.0 + "@jupyterlab/application": ^4.1.5 + "@jupyterlab/application-extension": ^4.1.5 + "@jupyterlab/apputils-extension": ^4.1.5 + "@jupyterlab/builder": ^4.1.5 + "@jupyterlab/celltags-extension": ^4.1.5 + "@jupyterlab/codemirror-extension": ^4.1.5 + "@jupyterlab/completer-extension": ^4.1.5 + "@jupyterlab/console-extension": ^4.1.5 + "@jupyterlab/csvviewer-extension": ^4.1.5 + "@jupyterlab/docmanager-extension": ^4.1.5 + "@jupyterlab/filebrowser-extension": ^4.1.5 + "@jupyterlab/fileeditor-extension": ^4.1.5 + "@jupyterlab/help-extension": ^4.1.5 + "@jupyterlab/imageviewer-extension": ^4.1.5 + "@jupyterlab/inspector-extension": ^4.1.5 + "@jupyterlab/launcher-extension": ^4.1.5 + "@jupyterlab/mainmenu-extension": ^4.1.5 + "@jupyterlab/markdownviewer-extension": ^4.1.5 + "@jupyterlab/mathjax-extension": ^4.1.5 + "@jupyterlab/metadataform-extension": ^4.1.5 + "@jupyterlab/notebook-extension": ^4.1.5 + "@jupyterlab/rendermime-extension": ^4.1.5 + "@jupyterlab/running-extension": ^4.1.5 + "@jupyterlab/settingeditor-extension": ^4.1.5 + "@jupyterlab/shortcuts-extension": ^4.1.5 + "@jupyterlab/statusbar-extension": ^4.1.5 + "@jupyterlab/theme-dark-extension": ^4.1.5 + "@jupyterlab/theme-light-extension": ^4.1.5 + "@jupyterlab/toc-extension": ^6.1.5 + "@jupyterlab/tooltip-extension": ^4.1.5 + "@jupyterlab/translation": ^4.1.5 + "@jupyterlab/translation-extension": ^4.1.5 + "@jupyterlab/ui-components-extension": ^4.1.5 css-loader: ^6.7.1 fs-extra: ^10.1.0 glob: ~7.1.6 @@ -3040,16 +3040,16 @@ __metadata: dependencies: "@jupyter/web-components": ^0.15.2 "@jupyter/ydoc": ^1.1.1 - "@jupyterlab/application": ^4.1.0 - "@jupyterlab/apputils": ^4.2.0 - "@jupyterlab/cells": ^4.1.0 - "@jupyterlab/codemirror": ^4.1.0 - "@jupyterlab/completer": ^4.1.0 - "@jupyterlab/coreutils": ^6.1.0 - "@jupyterlab/rendermime": ^4.1.0 - "@jupyterlab/services": ^7.1.0 - "@jupyterlab/theme-light-extension": ^4.1.0 - "@jupyterlab/ui-components": ^4.1.0 + "@jupyterlab/application": ^4.1.5 + "@jupyterlab/apputils": ^4.2.5 + "@jupyterlab/cells": ^4.1.5 + "@jupyterlab/codemirror": ^4.1.5 + "@jupyterlab/completer": ^4.1.5 + "@jupyterlab/coreutils": ^6.1.5 + "@jupyterlab/rendermime": ^4.1.5 + "@jupyterlab/services": ^7.1.5 + "@jupyterlab/theme-light-extension": ^4.1.5 + "@jupyterlab/ui-components": ^4.1.5 "@lumino/commands": ^2.2.0 "@lumino/widgets": ^2.3.1 css-loader: ^6.7.1 @@ -3070,14 +3070,14 @@ __metadata: dependencies: "@jupyter/web-components": ^0.15.2 "@jupyter/ydoc": ^1.1.1 - "@jupyterlab/application": ^4.1.0 - "@jupyterlab/codemirror": ^4.1.0 - "@jupyterlab/console": ^4.1.0 - "@jupyterlab/coreutils": ^6.1.0 - "@jupyterlab/rendermime": ^4.1.0 - "@jupyterlab/services": ^7.1.0 - "@jupyterlab/theme-light-extension": ^4.1.0 - "@jupyterlab/translation": ^4.1.0 + "@jupyterlab/application": ^4.1.5 + "@jupyterlab/codemirror": ^4.1.5 + "@jupyterlab/console": ^4.1.5 + "@jupyterlab/coreutils": ^6.1.5 + "@jupyterlab/rendermime": ^4.1.5 + "@jupyterlab/services": ^7.1.5 + "@jupyterlab/theme-light-extension": ^4.1.5 + "@jupyterlab/translation": ^4.1.5 "@lumino/commands": ^2.2.0 "@lumino/widgets": ^2.3.1 css-loader: ^6.7.1 @@ -3095,48 +3095,48 @@ __metadata: version: 0.0.0-use.local resolution: "@jupyterlab/example-federated-core@workspace:examples/federated/core_package" dependencies: - "@jupyterlab/application": ^4.1.0 - "@jupyterlab/application-extension": ^4.1.0 - "@jupyterlab/apputils-extension": ^4.1.0 - "@jupyterlab/builder": ^4.1.0 - "@jupyterlab/celltags-extension": ^4.1.0 - "@jupyterlab/codemirror-extension": ^4.1.0 - "@jupyterlab/completer-extension": ^4.1.0 - "@jupyterlab/console-extension": ^4.1.0 - "@jupyterlab/coreutils": ^6.1.0 - "@jupyterlab/csvviewer-extension": ^4.1.0 - "@jupyterlab/debugger-extension": ^4.1.0 - "@jupyterlab/docmanager-extension": ^4.1.0 - "@jupyterlab/documentsearch-extension": ^4.1.0 - "@jupyterlab/extensionmanager-extension": ^4.1.0 - "@jupyterlab/filebrowser-extension": ^4.1.0 - "@jupyterlab/fileeditor-extension": ^4.1.0 - "@jupyterlab/help-extension": ^4.1.0 - "@jupyterlab/htmlviewer-extension": ^4.1.0 - "@jupyterlab/hub-extension": ^4.1.0 - "@jupyterlab/imageviewer-extension": ^4.1.0 - "@jupyterlab/inspector-extension": ^4.1.0 - "@jupyterlab/javascript-extension": ^4.1.0 - "@jupyterlab/json-extension": ^4.1.0 - "@jupyterlab/launcher-extension": ^4.1.0 - "@jupyterlab/logconsole-extension": ^4.1.0 - "@jupyterlab/lsp-extension": ^4.1.0 - "@jupyterlab/mainmenu-extension": ^4.1.0 - "@jupyterlab/mathjax-extension": ^4.1.0 - "@jupyterlab/metadataform-extension": ^4.1.0 - "@jupyterlab/notebook-extension": ^4.1.0 - "@jupyterlab/pdf-extension": ^4.1.0 - "@jupyterlab/rendermime-extension": ^4.1.0 - "@jupyterlab/settingeditor-extension": ^4.1.0 - "@jupyterlab/shortcuts-extension": ^4.1.0 - "@jupyterlab/statusbar-extension": ^4.1.0 - "@jupyterlab/theme-light-extension": ^4.1.0 - "@jupyterlab/toc-extension": ^6.1.0 - "@jupyterlab/tooltip-extension": ^4.1.0 - "@jupyterlab/translation": ^4.1.0 - "@jupyterlab/translation-extension": ^4.1.0 - "@jupyterlab/ui-components-extension": ^4.1.0 - "@jupyterlab/vega5-extension": ^4.1.0 + "@jupyterlab/application": ^4.1.5 + "@jupyterlab/application-extension": ^4.1.5 + "@jupyterlab/apputils-extension": ^4.1.5 + "@jupyterlab/builder": ^4.1.5 + "@jupyterlab/celltags-extension": ^4.1.5 + "@jupyterlab/codemirror-extension": ^4.1.5 + "@jupyterlab/completer-extension": ^4.1.5 + "@jupyterlab/console-extension": ^4.1.5 + "@jupyterlab/coreutils": ^6.1.5 + "@jupyterlab/csvviewer-extension": ^4.1.5 + "@jupyterlab/debugger-extension": ^4.1.5 + "@jupyterlab/docmanager-extension": ^4.1.5 + "@jupyterlab/documentsearch-extension": ^4.1.5 + "@jupyterlab/extensionmanager-extension": ^4.1.5 + "@jupyterlab/filebrowser-extension": ^4.1.5 + "@jupyterlab/fileeditor-extension": ^4.1.5 + "@jupyterlab/help-extension": ^4.1.5 + "@jupyterlab/htmlviewer-extension": ^4.1.5 + "@jupyterlab/hub-extension": ^4.1.5 + "@jupyterlab/imageviewer-extension": ^4.1.5 + "@jupyterlab/inspector-extension": ^4.1.5 + "@jupyterlab/javascript-extension": ^4.1.5 + "@jupyterlab/json-extension": ^4.1.5 + "@jupyterlab/launcher-extension": ^4.1.5 + "@jupyterlab/logconsole-extension": ^4.1.5 + "@jupyterlab/lsp-extension": ^4.1.5 + "@jupyterlab/mainmenu-extension": ^4.1.5 + "@jupyterlab/mathjax-extension": ^4.1.5 + "@jupyterlab/metadataform-extension": ^4.1.5 + "@jupyterlab/notebook-extension": ^4.1.5 + "@jupyterlab/pdf-extension": ^4.1.5 + "@jupyterlab/rendermime-extension": ^4.1.5 + "@jupyterlab/settingeditor-extension": ^4.1.5 + "@jupyterlab/shortcuts-extension": ^4.1.5 + "@jupyterlab/statusbar-extension": ^4.1.5 + "@jupyterlab/theme-light-extension": ^4.1.5 + "@jupyterlab/toc-extension": ^6.1.5 + "@jupyterlab/tooltip-extension": ^4.1.5 + "@jupyterlab/translation": ^4.1.5 + "@jupyterlab/translation-extension": ^4.1.5 + "@jupyterlab/ui-components-extension": ^4.1.5 + "@jupyterlab/vega5-extension": ^4.1.5 copy-webpack-plugin: ^11.0.0 css-loader: ^6.7.1 fs-extra: ^10.1.0 @@ -3157,20 +3157,20 @@ __metadata: version: 0.0.0-use.local resolution: "@jupyterlab/example-federated-md@workspace:examples/federated/md_package" dependencies: - "@jupyterlab/application": ^4.1.0 - "@jupyterlab/builder": ^4.1.0 - "@jupyterlab/example-federated-middle": ^3.0.3 - "@jupyterlab/markdownviewer-extension": ^4.1.0 + "@jupyterlab/application": ^4.1.5 + "@jupyterlab/builder": ^4.1.5 + "@jupyterlab/example-federated-middle": ^3.0.8 + "@jupyterlab/markdownviewer-extension": ^4.1.5 "@lumino/widgets": ^2.3.1 rimraf: ~5.0.5 languageName: unknown linkType: soft -"@jupyterlab/example-federated-middle@^3.0.3, @jupyterlab/example-federated-middle@workspace:examples/federated/middle_package": +"@jupyterlab/example-federated-middle@^3.0.8, @jupyterlab/example-federated-middle@workspace:examples/federated/middle_package": version: 0.0.0-use.local resolution: "@jupyterlab/example-federated-middle@workspace:examples/federated/middle_package" dependencies: - "@jupyterlab/builder": ^4.1.0 + "@jupyterlab/builder": ^4.1.5 "@lumino/coreutils": ^2.1.2 rimraf: ~5.0.5 languageName: unknown @@ -3187,18 +3187,18 @@ __metadata: resolution: "@jupyterlab/example-filebrowser@workspace:examples/filebrowser" dependencies: "@jupyter/web-components": ^0.15.2 - "@jupyterlab/application": ^4.1.0 - "@jupyterlab/apputils": ^4.2.0 - "@jupyterlab/codemirror": ^4.1.0 - "@jupyterlab/coreutils": ^6.1.0 - "@jupyterlab/docmanager": ^4.1.0 - "@jupyterlab/docregistry": ^4.1.0 - "@jupyterlab/filebrowser": ^4.1.0 - "@jupyterlab/fileeditor": ^4.1.0 - "@jupyterlab/services": ^7.1.0 - "@jupyterlab/theme-light-extension": ^4.1.0 - "@jupyterlab/translation": ^4.1.0 - "@jupyterlab/ui-components": ^4.1.0 + "@jupyterlab/application": ^4.1.5 + "@jupyterlab/apputils": ^4.2.5 + "@jupyterlab/codemirror": ^4.1.5 + "@jupyterlab/coreutils": ^6.1.5 + "@jupyterlab/docmanager": ^4.1.5 + "@jupyterlab/docregistry": ^4.1.5 + "@jupyterlab/filebrowser": ^4.1.5 + "@jupyterlab/fileeditor": ^4.1.5 + "@jupyterlab/services": ^7.1.5 + "@jupyterlab/theme-light-extension": ^4.1.5 + "@jupyterlab/translation": ^4.1.5 + "@jupyterlab/ui-components": ^4.1.5 "@lumino/commands": ^2.2.0 "@lumino/widgets": ^2.3.1 css-loader: ^6.7.1 @@ -3219,22 +3219,22 @@ __metadata: dependencies: "@jupyter/web-components": ^0.15.2 "@jupyter/ydoc": ^1.1.1 - "@jupyterlab/application": ^4.1.0 - "@jupyterlab/apputils": ^4.2.0 - "@jupyterlab/codemirror": ^4.1.0 - "@jupyterlab/completer": ^4.1.0 - "@jupyterlab/coreutils": ^6.1.0 - "@jupyterlab/docmanager": ^4.1.0 - "@jupyterlab/docregistry": ^4.1.0 - "@jupyterlab/documentsearch": ^4.1.0 - "@jupyterlab/markedparser-extension": ^4.1.0 - "@jupyterlab/mathjax-extension": ^4.1.0 - "@jupyterlab/notebook": ^4.1.0 - "@jupyterlab/rendermime": ^4.1.0 - "@jupyterlab/services": ^7.1.0 - "@jupyterlab/theme-light-extension": ^4.1.0 - "@jupyterlab/translation": ^4.1.0 - "@jupyterlab/ui-components": ^4.1.0 + "@jupyterlab/application": ^4.1.5 + "@jupyterlab/apputils": ^4.2.5 + "@jupyterlab/codemirror": ^4.1.5 + "@jupyterlab/completer": ^4.1.5 + "@jupyterlab/coreutils": ^6.1.5 + "@jupyterlab/docmanager": ^4.1.5 + "@jupyterlab/docregistry": ^4.1.5 + "@jupyterlab/documentsearch": ^4.1.5 + "@jupyterlab/markedparser-extension": ^4.1.5 + "@jupyterlab/mathjax-extension": ^4.1.5 + "@jupyterlab/notebook": ^4.1.5 + "@jupyterlab/rendermime": ^4.1.5 + "@jupyterlab/services": ^7.1.5 + "@jupyterlab/theme-light-extension": ^4.1.5 + "@jupyterlab/translation": ^4.1.5 + "@jupyterlab/ui-components": ^4.1.5 "@lumino/commands": ^2.2.0 "@lumino/widgets": ^2.3.1 css-loader: ^6.7.1 @@ -3253,8 +3253,8 @@ __metadata: version: 0.0.0-use.local resolution: "@jupyterlab/example-services-browser@workspace:packages/services/examples/browser" dependencies: - "@jupyterlab/coreutils": ^6.1.0 - "@jupyterlab/services": ^7.1.0 + "@jupyterlab/coreutils": ^6.1.5 + "@jupyterlab/services": ^7.1.5 "@lumino/coreutils": ^2.1.2 rimraf: ~5.0.5 typescript: ~5.1.6 @@ -3267,10 +3267,10 @@ __metadata: version: 0.0.0-use.local resolution: "@jupyterlab/example-services-outputarea@workspace:packages/services/examples/typescript-browser-with-output" dependencies: - "@jupyterlab/coreutils": ^6.1.0 - "@jupyterlab/outputarea": ^4.1.0 - "@jupyterlab/rendermime": ^4.1.0 - "@jupyterlab/services": ^7.1.0 + "@jupyterlab/coreutils": ^6.1.5 + "@jupyterlab/outputarea": ^4.1.5 + "@jupyterlab/rendermime": ^4.1.5 + "@jupyterlab/services": ^7.1.5 css-loader: ^6.7.1 rimraf: ~5.0.5 style-loader: ~3.3.1 @@ -3284,11 +3284,11 @@ __metadata: version: 0.0.0-use.local resolution: "@jupyterlab/example-simple-list@workspace:packages/ui-components/examples/simple-windowed-list" dependencies: - "@jupyterlab/application": ^4.1.0 - "@jupyterlab/coreutils": ^6.1.0 - "@jupyterlab/observables": ^5.1.0 - "@jupyterlab/theme-light-extension": ^4.1.0 - "@jupyterlab/ui-components": ^4.1.0 + "@jupyterlab/application": ^4.1.5 + "@jupyterlab/coreutils": ^6.1.5 + "@jupyterlab/observables": ^5.1.5 + "@jupyterlab/theme-light-extension": ^4.1.5 + "@jupyterlab/ui-components": ^4.1.5 "@lumino/messaging": ^2.0.1 "@lumino/widgets": ^2.3.1 css-loader: ^6.7.1 @@ -3307,11 +3307,11 @@ __metadata: resolution: "@jupyterlab/example-terminal@workspace:examples/terminal" dependencies: "@jupyter/web-components": ^0.15.2 - "@jupyterlab/application": ^4.1.0 - "@jupyterlab/coreutils": ^6.1.0 - "@jupyterlab/services": ^7.1.0 - "@jupyterlab/terminal": ^4.1.0 - "@jupyterlab/theme-light-extension": ^4.1.0 + "@jupyterlab/application": ^4.1.5 + "@jupyterlab/coreutils": ^6.1.5 + "@jupyterlab/services": ^7.1.5 + "@jupyterlab/terminal": ^4.1.5 + "@jupyterlab/theme-light-extension": ^4.1.5 "@lumino/widgets": ^2.3.1 css-loader: ^6.7.1 mini-css-extract-plugin: ^2.7.0 @@ -3325,31 +3325,31 @@ __metadata: languageName: unknown linkType: soft -"@jupyterlab/extensionmanager-extension@^4.1.0, @jupyterlab/extensionmanager-extension@workspace:packages/extensionmanager-extension, @jupyterlab/extensionmanager-extension@~4.1.0": +"@jupyterlab/extensionmanager-extension@^4.1.5, @jupyterlab/extensionmanager-extension@workspace:packages/extensionmanager-extension, @jupyterlab/extensionmanager-extension@~4.1.5": version: 0.0.0-use.local resolution: "@jupyterlab/extensionmanager-extension@workspace:packages/extensionmanager-extension" dependencies: - "@jupyterlab/application": ^4.1.0 - "@jupyterlab/apputils": ^4.2.0 - "@jupyterlab/extensionmanager": ^4.1.0 - "@jupyterlab/settingregistry": ^4.1.0 - "@jupyterlab/translation": ^4.1.0 - "@jupyterlab/ui-components": ^4.1.0 + "@jupyterlab/application": ^4.1.5 + "@jupyterlab/apputils": ^4.2.5 + "@jupyterlab/extensionmanager": ^4.1.5 + "@jupyterlab/settingregistry": ^4.1.5 + "@jupyterlab/translation": ^4.1.5 + "@jupyterlab/ui-components": ^4.1.5 rimraf: ~5.0.5 typedoc: ~0.24.7 typescript: ~5.1.6 languageName: unknown linkType: soft -"@jupyterlab/extensionmanager@^4.1.0, @jupyterlab/extensionmanager@workspace:packages/extensionmanager": +"@jupyterlab/extensionmanager@^4.1.5, @jupyterlab/extensionmanager@workspace:packages/extensionmanager": version: 0.0.0-use.local resolution: "@jupyterlab/extensionmanager@workspace:packages/extensionmanager" dependencies: - "@jupyterlab/apputils": ^4.2.0 - "@jupyterlab/coreutils": ^6.1.0 - "@jupyterlab/services": ^7.1.0 - "@jupyterlab/translation": ^4.1.0 - "@jupyterlab/ui-components": ^4.1.0 + "@jupyterlab/apputils": ^4.2.5 + "@jupyterlab/coreutils": ^6.1.5 + "@jupyterlab/services": ^7.1.5 + "@jupyterlab/translation": ^4.1.5 + "@jupyterlab/ui-components": ^4.1.5 "@lumino/messaging": ^2.0.1 "@lumino/polling": ^2.1.2 "@lumino/widgets": ^2.3.1 @@ -3366,22 +3366,22 @@ __metadata: languageName: unknown linkType: soft -"@jupyterlab/filebrowser-extension@^4.1.0, @jupyterlab/filebrowser-extension@workspace:packages/filebrowser-extension, @jupyterlab/filebrowser-extension@~4.1.0": +"@jupyterlab/filebrowser-extension@^4.1.5, @jupyterlab/filebrowser-extension@workspace:packages/filebrowser-extension, @jupyterlab/filebrowser-extension@~4.1.5": version: 0.0.0-use.local resolution: "@jupyterlab/filebrowser-extension@workspace:packages/filebrowser-extension" dependencies: - "@jupyterlab/application": ^4.1.0 - "@jupyterlab/apputils": ^4.2.0 - "@jupyterlab/coreutils": ^6.1.0 - "@jupyterlab/docmanager": ^4.1.0 - "@jupyterlab/docregistry": ^4.1.0 - "@jupyterlab/filebrowser": ^4.1.0 - "@jupyterlab/services": ^7.1.0 - "@jupyterlab/settingregistry": ^4.1.0 - "@jupyterlab/statedb": ^4.1.0 - "@jupyterlab/statusbar": ^4.1.0 - "@jupyterlab/translation": ^4.1.0 - "@jupyterlab/ui-components": ^4.1.0 + "@jupyterlab/application": ^4.1.5 + "@jupyterlab/apputils": ^4.2.5 + "@jupyterlab/coreutils": ^6.1.5 + "@jupyterlab/docmanager": ^4.1.5 + "@jupyterlab/docregistry": ^4.1.5 + "@jupyterlab/filebrowser": ^4.1.5 + "@jupyterlab/services": ^7.1.5 + "@jupyterlab/settingregistry": ^4.1.5 + "@jupyterlab/statedb": ^4.1.5 + "@jupyterlab/statusbar": ^4.1.5 + "@jupyterlab/translation": ^4.1.5 + "@jupyterlab/ui-components": ^4.1.5 "@lumino/algorithm": ^2.0.1 "@lumino/commands": ^2.2.0 "@lumino/widgets": ^2.3.1 @@ -3391,20 +3391,20 @@ __metadata: languageName: unknown linkType: soft -"@jupyterlab/filebrowser@^4.1.0, @jupyterlab/filebrowser@workspace:packages/filebrowser": +"@jupyterlab/filebrowser@^4.1.5, @jupyterlab/filebrowser@workspace:packages/filebrowser": version: 0.0.0-use.local resolution: "@jupyterlab/filebrowser@workspace:packages/filebrowser" dependencies: - "@jupyterlab/apputils": ^4.2.0 - "@jupyterlab/coreutils": ^6.1.0 - "@jupyterlab/docmanager": ^4.1.0 - "@jupyterlab/docregistry": ^4.1.0 - "@jupyterlab/services": ^7.1.0 - "@jupyterlab/statedb": ^4.1.0 - "@jupyterlab/statusbar": ^4.1.0 - "@jupyterlab/testing": ^4.1.0 - "@jupyterlab/translation": ^4.1.0 - "@jupyterlab/ui-components": ^4.1.0 + "@jupyterlab/apputils": ^4.2.5 + "@jupyterlab/coreutils": ^6.1.5 + "@jupyterlab/docmanager": ^4.1.5 + "@jupyterlab/docregistry": ^4.1.5 + "@jupyterlab/services": ^7.1.5 + "@jupyterlab/statedb": ^4.1.5 + "@jupyterlab/statusbar": ^4.1.5 + "@jupyterlab/testing": ^4.1.5 + "@jupyterlab/translation": ^4.1.5 + "@jupyterlab/ui-components": ^4.1.5 "@lumino/algorithm": ^2.0.1 "@lumino/coreutils": ^2.1.2 "@lumino/disposable": ^2.1.2 @@ -3424,34 +3424,34 @@ __metadata: languageName: unknown linkType: soft -"@jupyterlab/fileeditor-extension@^4.1.0, @jupyterlab/fileeditor-extension@workspace:packages/fileeditor-extension, @jupyterlab/fileeditor-extension@~4.1.0": +"@jupyterlab/fileeditor-extension@^4.1.5, @jupyterlab/fileeditor-extension@workspace:packages/fileeditor-extension, @jupyterlab/fileeditor-extension@~4.1.5": version: 0.0.0-use.local resolution: "@jupyterlab/fileeditor-extension@workspace:packages/fileeditor-extension" dependencies: "@codemirror/commands": ^6.2.3 "@codemirror/search": ^6.3.0 - "@jupyterlab/application": ^4.1.0 - "@jupyterlab/apputils": ^4.2.0 - "@jupyterlab/codeeditor": ^4.1.0 - "@jupyterlab/codemirror": ^4.1.0 - "@jupyterlab/completer": ^4.1.0 - "@jupyterlab/console": ^4.1.0 - "@jupyterlab/coreutils": ^6.1.0 - "@jupyterlab/docregistry": ^4.1.0 - "@jupyterlab/documentsearch": ^4.1.0 - "@jupyterlab/filebrowser": ^4.1.0 - "@jupyterlab/fileeditor": ^4.1.0 - "@jupyterlab/launcher": ^4.1.0 - "@jupyterlab/lsp": ^4.1.0 - "@jupyterlab/mainmenu": ^4.1.0 - "@jupyterlab/observables": ^5.1.0 - "@jupyterlab/rendermime-interfaces": ^3.9.0 - "@jupyterlab/services": ^7.1.0 - "@jupyterlab/settingregistry": ^4.1.0 - "@jupyterlab/statusbar": ^4.1.0 - "@jupyterlab/toc": ^6.1.0 - "@jupyterlab/translation": ^4.1.0 - "@jupyterlab/ui-components": ^4.1.0 + "@jupyterlab/application": ^4.1.5 + "@jupyterlab/apputils": ^4.2.5 + "@jupyterlab/codeeditor": ^4.1.5 + "@jupyterlab/codemirror": ^4.1.5 + "@jupyterlab/completer": ^4.1.5 + "@jupyterlab/console": ^4.1.5 + "@jupyterlab/coreutils": ^6.1.5 + "@jupyterlab/docregistry": ^4.1.5 + "@jupyterlab/documentsearch": ^4.1.5 + "@jupyterlab/filebrowser": ^4.1.5 + "@jupyterlab/fileeditor": ^4.1.5 + "@jupyterlab/launcher": ^4.1.5 + "@jupyterlab/lsp": ^4.1.5 + "@jupyterlab/mainmenu": ^4.1.5 + "@jupyterlab/observables": ^5.1.5 + "@jupyterlab/rendermime-interfaces": ^3.9.5 + "@jupyterlab/services": ^7.1.5 + "@jupyterlab/settingregistry": ^4.1.5 + "@jupyterlab/statusbar": ^4.1.5 + "@jupyterlab/toc": ^6.1.5 + "@jupyterlab/translation": ^4.1.5 + "@jupyterlab/ui-components": ^4.1.5 "@lumino/algorithm": ^2.0.1 "@lumino/commands": ^2.2.0 "@lumino/coreutils": ^2.1.2 @@ -3462,23 +3462,23 @@ __metadata: languageName: unknown linkType: soft -"@jupyterlab/fileeditor@^4.1.0, @jupyterlab/fileeditor@workspace:packages/fileeditor": +"@jupyterlab/fileeditor@^4.1.5, @jupyterlab/fileeditor@workspace:packages/fileeditor": version: 0.0.0-use.local resolution: "@jupyterlab/fileeditor@workspace:packages/fileeditor" dependencies: "@jupyter/ydoc": ^1.1.1 - "@jupyterlab/apputils": ^4.2.0 - "@jupyterlab/codeeditor": ^4.1.0 - "@jupyterlab/codemirror": ^4.1.0 - "@jupyterlab/coreutils": ^6.1.0 - "@jupyterlab/docregistry": ^4.1.0 - "@jupyterlab/documentsearch": ^4.1.0 - "@jupyterlab/lsp": ^4.1.0 - "@jupyterlab/statusbar": ^4.1.0 - "@jupyterlab/testing": ^4.1.0 - "@jupyterlab/toc": ^6.1.0 - "@jupyterlab/translation": ^4.1.0 - "@jupyterlab/ui-components": ^4.1.0 + "@jupyterlab/apputils": ^4.2.5 + "@jupyterlab/codeeditor": ^4.1.5 + "@jupyterlab/codemirror": ^4.1.5 + "@jupyterlab/coreutils": ^6.1.5 + "@jupyterlab/docregistry": ^4.1.5 + "@jupyterlab/documentsearch": ^4.1.5 + "@jupyterlab/lsp": ^4.1.5 + "@jupyterlab/statusbar": ^4.1.5 + "@jupyterlab/testing": ^4.1.5 + "@jupyterlab/toc": ^6.1.5 + "@jupyterlab/translation": ^4.1.5 + "@jupyterlab/ui-components": ^4.1.5 "@lumino/commands": ^2.2.0 "@lumino/coreutils": ^2.1.2 "@lumino/messaging": ^2.0.1 @@ -3497,15 +3497,15 @@ __metadata: version: 0.0.0-use.local resolution: "@jupyterlab/galata-extension@workspace:galata/extension" dependencies: - "@jupyterlab/application": ^4.1.0 - "@jupyterlab/apputils": ^4.2.0 - "@jupyterlab/builder": ^4.1.0 - "@jupyterlab/cells": ^4.1.0 - "@jupyterlab/debugger": ^4.1.0 - "@jupyterlab/docmanager": ^4.1.0 - "@jupyterlab/nbformat": ^4.1.0 - "@jupyterlab/notebook": ^4.1.0 - "@jupyterlab/settingregistry": ^4.1.0 + "@jupyterlab/application": ^4.1.5 + "@jupyterlab/apputils": ^4.2.5 + "@jupyterlab/builder": ^4.1.5 + "@jupyterlab/cells": ^4.1.5 + "@jupyterlab/debugger": ^4.1.5 + "@jupyterlab/docmanager": ^4.1.5 + "@jupyterlab/nbformat": ^4.1.5 + "@jupyterlab/notebook": ^4.1.5 + "@jupyterlab/settingregistry": ^4.1.5 "@lumino/algorithm": ^2.0.1 "@lumino/coreutils": ^2.1.2 "@lumino/signaling": ^2.1.2 @@ -3518,15 +3518,15 @@ __metadata: version: 0.0.0-use.local resolution: "@jupyterlab/galata@workspace:galata" dependencies: - "@jupyterlab/application": ^4.1.0 - "@jupyterlab/apputils": ^4.2.0 - "@jupyterlab/coreutils": ^6.1.0 - "@jupyterlab/debugger": ^4.1.0 - "@jupyterlab/docmanager": ^4.1.0 - "@jupyterlab/nbformat": ^4.1.0 - "@jupyterlab/notebook": ^4.1.0 - "@jupyterlab/services": ^7.1.0 - "@jupyterlab/settingregistry": ^4.1.0 + "@jupyterlab/application": ^4.1.5 + "@jupyterlab/apputils": ^4.2.5 + "@jupyterlab/coreutils": ^6.1.5 + "@jupyterlab/debugger": ^4.1.5 + "@jupyterlab/docmanager": ^4.1.5 + "@jupyterlab/nbformat": ^4.1.5 + "@jupyterlab/notebook": ^4.1.5 + "@jupyterlab/services": ^7.1.5 + "@jupyterlab/settingregistry": ^4.1.5 "@lumino/coreutils": ^2.1.2 "@playwright/test": ^1.32.2 "@stdlib/stats": ~0.0.13 @@ -3542,17 +3542,17 @@ __metadata: languageName: unknown linkType: soft -"@jupyterlab/help-extension@^4.1.0, @jupyterlab/help-extension@workspace:packages/help-extension, @jupyterlab/help-extension@~4.1.0": +"@jupyterlab/help-extension@^4.1.5, @jupyterlab/help-extension@workspace:packages/help-extension, @jupyterlab/help-extension@~4.1.5": version: 0.0.0-use.local resolution: "@jupyterlab/help-extension@workspace:packages/help-extension" dependencies: - "@jupyterlab/application": ^4.1.0 - "@jupyterlab/apputils": ^4.2.0 - "@jupyterlab/coreutils": ^6.1.0 - "@jupyterlab/mainmenu": ^4.1.0 - "@jupyterlab/services": ^7.1.0 - "@jupyterlab/translation": ^4.1.0 - "@jupyterlab/ui-components": ^4.1.0 + "@jupyterlab/application": ^4.1.5 + "@jupyterlab/apputils": ^4.2.5 + "@jupyterlab/coreutils": ^6.1.5 + "@jupyterlab/mainmenu": ^4.1.5 + "@jupyterlab/services": ^7.1.5 + "@jupyterlab/translation": ^4.1.5 + "@jupyterlab/ui-components": ^4.1.5 "@lumino/coreutils": ^2.1.2 "@lumino/signaling": ^2.1.2 "@lumino/virtualdom": ^2.0.1 @@ -3564,32 +3564,32 @@ __metadata: languageName: unknown linkType: soft -"@jupyterlab/htmlviewer-extension@^4.1.0, @jupyterlab/htmlviewer-extension@workspace:packages/htmlviewer-extension, @jupyterlab/htmlviewer-extension@~4.1.0": +"@jupyterlab/htmlviewer-extension@^4.1.5, @jupyterlab/htmlviewer-extension@workspace:packages/htmlviewer-extension, @jupyterlab/htmlviewer-extension@~4.1.5": version: 0.0.0-use.local resolution: "@jupyterlab/htmlviewer-extension@workspace:packages/htmlviewer-extension" dependencies: - "@jupyterlab/application": ^4.1.0 - "@jupyterlab/apputils": ^4.2.0 - "@jupyterlab/docregistry": ^4.1.0 - "@jupyterlab/htmlviewer": ^4.1.0 - "@jupyterlab/observables": ^5.1.0 - "@jupyterlab/settingregistry": ^4.1.0 - "@jupyterlab/translation": ^4.1.0 - "@jupyterlab/ui-components": ^4.1.0 + "@jupyterlab/application": ^4.1.5 + "@jupyterlab/apputils": ^4.2.5 + "@jupyterlab/docregistry": ^4.1.5 + "@jupyterlab/htmlviewer": ^4.1.5 + "@jupyterlab/observables": ^5.1.5 + "@jupyterlab/settingregistry": ^4.1.5 + "@jupyterlab/translation": ^4.1.5 + "@jupyterlab/ui-components": ^4.1.5 rimraf: ~5.0.5 typescript: ~5.1.6 languageName: unknown linkType: soft -"@jupyterlab/htmlviewer@^4.1.0, @jupyterlab/htmlviewer@workspace:packages/htmlviewer": +"@jupyterlab/htmlviewer@^4.1.5, @jupyterlab/htmlviewer@workspace:packages/htmlviewer": version: 0.0.0-use.local resolution: "@jupyterlab/htmlviewer@workspace:packages/htmlviewer" dependencies: - "@jupyterlab/apputils": ^4.2.0 - "@jupyterlab/coreutils": ^6.1.0 - "@jupyterlab/docregistry": ^4.1.0 - "@jupyterlab/translation": ^4.1.0 - "@jupyterlab/ui-components": ^4.1.0 + "@jupyterlab/apputils": ^4.2.5 + "@jupyterlab/coreutils": ^6.1.5 + "@jupyterlab/docregistry": ^4.1.5 + "@jupyterlab/translation": ^4.1.5 + "@jupyterlab/ui-components": ^4.1.5 "@lumino/coreutils": ^2.1.2 "@lumino/signaling": ^2.1.2 "@lumino/widgets": ^2.3.1 @@ -3599,43 +3599,43 @@ __metadata: languageName: unknown linkType: soft -"@jupyterlab/hub-extension@^4.1.0, @jupyterlab/hub-extension@workspace:packages/hub-extension, @jupyterlab/hub-extension@~4.1.0": +"@jupyterlab/hub-extension@^4.1.5, @jupyterlab/hub-extension@workspace:packages/hub-extension, @jupyterlab/hub-extension@~4.1.5": version: 0.0.0-use.local resolution: "@jupyterlab/hub-extension@workspace:packages/hub-extension" dependencies: - "@jupyterlab/application": ^4.1.0 - "@jupyterlab/apputils": ^4.2.0 - "@jupyterlab/coreutils": ^6.1.0 - "@jupyterlab/services": ^7.1.0 - "@jupyterlab/translation": ^4.1.0 + "@jupyterlab/application": ^4.1.5 + "@jupyterlab/apputils": ^4.2.5 + "@jupyterlab/coreutils": ^6.1.5 + "@jupyterlab/services": ^7.1.5 + "@jupyterlab/translation": ^4.1.5 rimraf: ~5.0.5 typescript: ~5.1.6 languageName: unknown linkType: soft -"@jupyterlab/imageviewer-extension@^4.1.0, @jupyterlab/imageviewer-extension@workspace:packages/imageviewer-extension, @jupyterlab/imageviewer-extension@~4.1.0": +"@jupyterlab/imageviewer-extension@^4.1.5, @jupyterlab/imageviewer-extension@workspace:packages/imageviewer-extension, @jupyterlab/imageviewer-extension@~4.1.5": version: 0.0.0-use.local resolution: "@jupyterlab/imageviewer-extension@workspace:packages/imageviewer-extension" dependencies: - "@jupyterlab/application": ^4.1.0 - "@jupyterlab/apputils": ^4.2.0 - "@jupyterlab/docregistry": ^4.1.0 - "@jupyterlab/imageviewer": ^4.1.0 - "@jupyterlab/translation": ^4.1.0 + "@jupyterlab/application": ^4.1.5 + "@jupyterlab/apputils": ^4.2.5 + "@jupyterlab/docregistry": ^4.1.5 + "@jupyterlab/imageviewer": ^4.1.5 + "@jupyterlab/translation": ^4.1.5 rimraf: ~5.0.5 typedoc: ~0.24.7 typescript: ~5.1.6 languageName: unknown linkType: soft -"@jupyterlab/imageviewer@^4.1.0, @jupyterlab/imageviewer@workspace:packages/imageviewer": +"@jupyterlab/imageviewer@^4.1.5, @jupyterlab/imageviewer@workspace:packages/imageviewer": version: 0.0.0-use.local resolution: "@jupyterlab/imageviewer@workspace:packages/imageviewer" dependencies: - "@jupyterlab/apputils": ^4.2.0 - "@jupyterlab/coreutils": ^6.1.0 - "@jupyterlab/docregistry": ^4.1.0 - "@jupyterlab/testing": ^4.1.0 + "@jupyterlab/apputils": ^4.2.5 + "@jupyterlab/coreutils": ^6.1.5 + "@jupyterlab/docregistry": ^4.1.5 + "@jupyterlab/testing": ^4.1.5 "@lumino/coreutils": ^2.1.2 "@lumino/messaging": ^2.0.1 "@lumino/widgets": ^2.3.1 @@ -3647,18 +3647,18 @@ __metadata: languageName: unknown linkType: soft -"@jupyterlab/inspector-extension@^4.1.0, @jupyterlab/inspector-extension@workspace:packages/inspector-extension, @jupyterlab/inspector-extension@~4.1.0": +"@jupyterlab/inspector-extension@^4.1.5, @jupyterlab/inspector-extension@workspace:packages/inspector-extension, @jupyterlab/inspector-extension@~4.1.5": version: 0.0.0-use.local resolution: "@jupyterlab/inspector-extension@workspace:packages/inspector-extension" dependencies: - "@jupyterlab/application": ^4.1.0 - "@jupyterlab/apputils": ^4.2.0 - "@jupyterlab/console": ^4.1.0 - "@jupyterlab/inspector": ^4.1.0 - "@jupyterlab/launcher": ^4.1.0 - "@jupyterlab/notebook": ^4.1.0 - "@jupyterlab/translation": ^4.1.0 - "@jupyterlab/ui-components": ^4.1.0 + "@jupyterlab/application": ^4.1.5 + "@jupyterlab/apputils": ^4.2.5 + "@jupyterlab/console": ^4.1.5 + "@jupyterlab/inspector": ^4.1.5 + "@jupyterlab/launcher": ^4.1.5 + "@jupyterlab/notebook": ^4.1.5 + "@jupyterlab/translation": ^4.1.5 + "@jupyterlab/ui-components": ^4.1.5 "@lumino/widgets": ^2.3.1 rimraf: ~5.0.5 typedoc: ~0.24.7 @@ -3666,18 +3666,18 @@ __metadata: languageName: unknown linkType: soft -"@jupyterlab/inspector@^4.1.0, @jupyterlab/inspector@workspace:packages/inspector": +"@jupyterlab/inspector@^4.1.5, @jupyterlab/inspector@workspace:packages/inspector": version: 0.0.0-use.local resolution: "@jupyterlab/inspector@workspace:packages/inspector" dependencies: - "@jupyterlab/apputils": ^4.2.0 - "@jupyterlab/codeeditor": ^4.1.0 - "@jupyterlab/coreutils": ^6.1.0 - "@jupyterlab/rendermime": ^4.1.0 - "@jupyterlab/services": ^7.1.0 - "@jupyterlab/statedb": ^4.1.0 - "@jupyterlab/testing": ^4.1.0 - "@jupyterlab/translation": ^4.1.0 + "@jupyterlab/apputils": ^4.2.5 + "@jupyterlab/codeeditor": ^4.1.5 + "@jupyterlab/coreutils": ^6.1.5 + "@jupyterlab/rendermime": ^4.1.5 + "@jupyterlab/services": ^7.1.5 + "@jupyterlab/statedb": ^4.1.5 + "@jupyterlab/testing": ^4.1.5 + "@jupyterlab/translation": ^4.1.5 "@lumino/coreutils": ^2.1.2 "@lumino/disposable": ^2.1.2 "@lumino/polling": ^2.1.2 @@ -3691,27 +3691,27 @@ __metadata: languageName: unknown linkType: soft -"@jupyterlab/javascript-extension@^4.1.0, @jupyterlab/javascript-extension@workspace:packages/javascript-extension, @jupyterlab/javascript-extension@~4.1.0": +"@jupyterlab/javascript-extension@^4.1.5, @jupyterlab/javascript-extension@workspace:packages/javascript-extension, @jupyterlab/javascript-extension@~4.1.5": version: 0.0.0-use.local resolution: "@jupyterlab/javascript-extension@workspace:packages/javascript-extension" dependencies: - "@jupyterlab/rendermime": ^4.1.0 - "@jupyterlab/rendermime-interfaces": ^3.9.0 + "@jupyterlab/rendermime": ^4.1.5 + "@jupyterlab/rendermime-interfaces": ^3.9.5 rimraf: ~5.0.5 typedoc: ~0.24.7 typescript: ~5.1.6 languageName: unknown linkType: soft -"@jupyterlab/json-extension@^4.1.0, @jupyterlab/json-extension@workspace:packages/json-extension, @jupyterlab/json-extension@~4.1.0": +"@jupyterlab/json-extension@^4.1.5, @jupyterlab/json-extension@workspace:packages/json-extension, @jupyterlab/json-extension@~4.1.5": version: 0.0.0-use.local resolution: "@jupyterlab/json-extension@workspace:packages/json-extension" dependencies: - "@jupyterlab/apputils": ^4.2.0 - "@jupyterlab/codemirror": ^4.1.0 - "@jupyterlab/rendermime-interfaces": ^3.9.0 - "@jupyterlab/translation": ^4.1.0 - "@jupyterlab/ui-components": ^4.1.0 + "@jupyterlab/apputils": ^4.2.5 + "@jupyterlab/codemirror": ^4.1.5 + "@jupyterlab/rendermime-interfaces": ^3.9.5 + "@jupyterlab/translation": ^4.1.5 + "@jupyterlab/ui-components": ^4.1.5 "@lezer/highlight": ^1.1.4 "@lumino/coreutils": ^2.1.2 "@lumino/messaging": ^2.0.1 @@ -3730,16 +3730,16 @@ __metadata: languageName: unknown linkType: soft -"@jupyterlab/launcher-extension@^4.1.0, @jupyterlab/launcher-extension@workspace:packages/launcher-extension, @jupyterlab/launcher-extension@~4.1.0": +"@jupyterlab/launcher-extension@^4.1.5, @jupyterlab/launcher-extension@workspace:packages/launcher-extension, @jupyterlab/launcher-extension@~4.1.5": version: 0.0.0-use.local resolution: "@jupyterlab/launcher-extension@workspace:packages/launcher-extension" dependencies: - "@jupyterlab/application": ^4.1.0 - "@jupyterlab/apputils": ^4.2.0 - "@jupyterlab/filebrowser": ^4.1.0 - "@jupyterlab/launcher": ^4.1.0 - "@jupyterlab/translation": ^4.1.0 - "@jupyterlab/ui-components": ^4.1.0 + "@jupyterlab/application": ^4.1.5 + "@jupyterlab/apputils": ^4.2.5 + "@jupyterlab/filebrowser": ^4.1.5 + "@jupyterlab/launcher": ^4.1.5 + "@jupyterlab/translation": ^4.1.5 + "@jupyterlab/ui-components": ^4.1.5 "@lumino/algorithm": ^2.0.1 "@lumino/coreutils": ^2.1.2 "@lumino/widgets": ^2.3.1 @@ -3749,13 +3749,13 @@ __metadata: languageName: unknown linkType: soft -"@jupyterlab/launcher@^4.1.0, @jupyterlab/launcher@workspace:packages/launcher": +"@jupyterlab/launcher@^4.1.5, @jupyterlab/launcher@workspace:packages/launcher": version: 0.0.0-use.local resolution: "@jupyterlab/launcher@workspace:packages/launcher" dependencies: - "@jupyterlab/apputils": ^4.2.0 - "@jupyterlab/translation": ^4.1.0 - "@jupyterlab/ui-components": ^4.1.0 + "@jupyterlab/apputils": ^4.2.5 + "@jupyterlab/translation": ^4.1.5 + "@jupyterlab/ui-components": ^4.1.5 "@lumino/algorithm": ^2.0.1 "@lumino/commands": ^2.2.0 "@lumino/coreutils": ^2.1.2 @@ -3770,19 +3770,19 @@ __metadata: languageName: unknown linkType: soft -"@jupyterlab/logconsole-extension@^4.1.0, @jupyterlab/logconsole-extension@workspace:packages/logconsole-extension, @jupyterlab/logconsole-extension@~4.1.0": +"@jupyterlab/logconsole-extension@^4.1.5, @jupyterlab/logconsole-extension@workspace:packages/logconsole-extension, @jupyterlab/logconsole-extension@~4.1.5": version: 0.0.0-use.local resolution: "@jupyterlab/logconsole-extension@workspace:packages/logconsole-extension" dependencies: - "@jupyterlab/application": ^4.1.0 - "@jupyterlab/apputils": ^4.2.0 - "@jupyterlab/coreutils": ^6.1.0 - "@jupyterlab/logconsole": ^4.1.0 - "@jupyterlab/rendermime": ^4.1.0 - "@jupyterlab/settingregistry": ^4.1.0 - "@jupyterlab/statusbar": ^4.1.0 - "@jupyterlab/translation": ^4.1.0 - "@jupyterlab/ui-components": ^4.1.0 + "@jupyterlab/application": ^4.1.5 + "@jupyterlab/apputils": ^4.2.5 + "@jupyterlab/coreutils": ^6.1.5 + "@jupyterlab/logconsole": ^4.1.5 + "@jupyterlab/rendermime": ^4.1.5 + "@jupyterlab/settingregistry": ^4.1.5 + "@jupyterlab/statusbar": ^4.1.5 + "@jupyterlab/translation": ^4.1.5 + "@jupyterlab/ui-components": ^4.1.5 "@lumino/coreutils": ^2.1.2 "@lumino/signaling": ^2.1.2 "@lumino/widgets": ^2.3.1 @@ -3792,17 +3792,17 @@ __metadata: languageName: unknown linkType: soft -"@jupyterlab/logconsole@^4.1.0, @jupyterlab/logconsole@workspace:packages/logconsole": +"@jupyterlab/logconsole@^4.1.5, @jupyterlab/logconsole@workspace:packages/logconsole": version: 0.0.0-use.local resolution: "@jupyterlab/logconsole@workspace:packages/logconsole" dependencies: - "@jupyterlab/coreutils": ^6.1.0 - "@jupyterlab/nbformat": ^4.1.0 - "@jupyterlab/outputarea": ^4.1.0 - "@jupyterlab/rendermime": ^4.1.0 - "@jupyterlab/services": ^7.1.0 - "@jupyterlab/testing": ^4.1.0 - "@jupyterlab/translation": ^4.1.0 + "@jupyterlab/coreutils": ^6.1.5 + "@jupyterlab/nbformat": ^4.1.5 + "@jupyterlab/outputarea": ^4.1.5 + "@jupyterlab/rendermime": ^4.1.5 + "@jupyterlab/services": ^7.1.5 + "@jupyterlab/testing": ^4.1.5 + "@jupyterlab/translation": ^4.1.5 "@lumino/coreutils": ^2.1.2 "@lumino/disposable": ^2.1.2 "@lumino/messaging": ^2.0.1 @@ -3815,17 +3815,17 @@ __metadata: languageName: unknown linkType: soft -"@jupyterlab/lsp-extension@^4.1.0, @jupyterlab/lsp-extension@workspace:packages/lsp-extension, @jupyterlab/lsp-extension@~4.1.0": +"@jupyterlab/lsp-extension@^4.1.5, @jupyterlab/lsp-extension@workspace:packages/lsp-extension, @jupyterlab/lsp-extension@~4.1.5": version: 0.0.0-use.local resolution: "@jupyterlab/lsp-extension@workspace:packages/lsp-extension" dependencies: - "@jupyterlab/application": ^4.1.0 - "@jupyterlab/apputils": ^4.2.0 - "@jupyterlab/lsp": ^4.1.0 - "@jupyterlab/running": ^4.1.0 - "@jupyterlab/settingregistry": ^4.1.0 - "@jupyterlab/translation": ^4.1.0 - "@jupyterlab/ui-components": ^4.1.0 + "@jupyterlab/application": ^4.1.5 + "@jupyterlab/apputils": ^4.2.5 + "@jupyterlab/lsp": ^4.1.5 + "@jupyterlab/running": ^4.1.5 + "@jupyterlab/settingregistry": ^4.1.5 + "@jupyterlab/translation": ^4.1.5 + "@jupyterlab/ui-components": ^4.1.5 "@lumino/coreutils": ^2.1.2 "@lumino/polling": ^2.1.2 "@lumino/signaling": ^2.1.2 @@ -3836,18 +3836,18 @@ __metadata: languageName: unknown linkType: soft -"@jupyterlab/lsp@^4.1.0, @jupyterlab/lsp@workspace:packages/lsp": +"@jupyterlab/lsp@^4.1.5, @jupyterlab/lsp@workspace:packages/lsp": version: 0.0.0-use.local resolution: "@jupyterlab/lsp@workspace:packages/lsp" dependencies: - "@jupyterlab/apputils": ^4.2.0 - "@jupyterlab/codeeditor": ^4.1.0 - "@jupyterlab/codemirror": ^4.1.0 - "@jupyterlab/coreutils": ^6.1.0 - "@jupyterlab/docregistry": ^4.1.0 - "@jupyterlab/services": ^7.1.0 - "@jupyterlab/testing": ^4.1.0 - "@jupyterlab/translation": ^4.1.0 + "@jupyterlab/apputils": ^4.2.5 + "@jupyterlab/codeeditor": ^4.1.5 + "@jupyterlab/codemirror": ^4.1.5 + "@jupyterlab/coreutils": ^6.1.5 + "@jupyterlab/docregistry": ^4.1.5 + "@jupyterlab/services": ^7.1.5 + "@jupyterlab/testing": ^4.1.5 + "@jupyterlab/translation": ^4.1.5 "@lumino/coreutils": ^2.1.2 "@lumino/disposable": ^2.1.2 "@lumino/signaling": ^2.1.2 @@ -3865,18 +3865,18 @@ __metadata: languageName: unknown linkType: soft -"@jupyterlab/mainmenu-extension@^4.1.0, @jupyterlab/mainmenu-extension@workspace:packages/mainmenu-extension, @jupyterlab/mainmenu-extension@~4.1.0": +"@jupyterlab/mainmenu-extension@^4.1.5, @jupyterlab/mainmenu-extension@workspace:packages/mainmenu-extension, @jupyterlab/mainmenu-extension@~4.1.5": version: 0.0.0-use.local resolution: "@jupyterlab/mainmenu-extension@workspace:packages/mainmenu-extension" dependencies: - "@jupyterlab/application": ^4.1.0 - "@jupyterlab/apputils": ^4.2.0 - "@jupyterlab/coreutils": ^6.1.0 - "@jupyterlab/mainmenu": ^4.1.0 - "@jupyterlab/services": ^7.1.0 - "@jupyterlab/settingregistry": ^4.1.0 - "@jupyterlab/translation": ^4.1.0 - "@jupyterlab/ui-components": ^4.1.0 + "@jupyterlab/application": ^4.1.5 + "@jupyterlab/apputils": ^4.2.5 + "@jupyterlab/coreutils": ^6.1.5 + "@jupyterlab/mainmenu": ^4.1.5 + "@jupyterlab/services": ^7.1.5 + "@jupyterlab/settingregistry": ^4.1.5 + "@jupyterlab/translation": ^4.1.5 + "@jupyterlab/ui-components": ^4.1.5 "@lumino/algorithm": ^2.0.1 "@lumino/coreutils": ^2.1.2 "@lumino/disposable": ^2.1.2 @@ -3887,14 +3887,14 @@ __metadata: languageName: unknown linkType: soft -"@jupyterlab/mainmenu@^4.1.0, @jupyterlab/mainmenu@workspace:packages/mainmenu": +"@jupyterlab/mainmenu@^4.1.5, @jupyterlab/mainmenu@workspace:packages/mainmenu": version: 0.0.0-use.local resolution: "@jupyterlab/mainmenu@workspace:packages/mainmenu" dependencies: - "@jupyterlab/apputils": ^4.2.0 - "@jupyterlab/testing": ^4.1.0 - "@jupyterlab/translation": ^4.1.0 - "@jupyterlab/ui-components": ^4.1.0 + "@jupyterlab/apputils": ^4.2.5 + "@jupyterlab/testing": ^4.1.5 + "@jupyterlab/translation": ^4.1.5 + "@jupyterlab/ui-components": ^4.1.5 "@lumino/algorithm": ^2.0.1 "@lumino/commands": ^2.2.0 "@lumino/coreutils": ^2.1.2 @@ -3907,34 +3907,34 @@ __metadata: languageName: unknown linkType: soft -"@jupyterlab/markdownviewer-extension@^4.1.0, @jupyterlab/markdownviewer-extension@workspace:packages/markdownviewer-extension, @jupyterlab/markdownviewer-extension@~4.1.0": +"@jupyterlab/markdownviewer-extension@^4.1.5, @jupyterlab/markdownviewer-extension@workspace:packages/markdownviewer-extension, @jupyterlab/markdownviewer-extension@~4.1.5": version: 0.0.0-use.local resolution: "@jupyterlab/markdownviewer-extension@workspace:packages/markdownviewer-extension" dependencies: - "@jupyterlab/application": ^4.1.0 - "@jupyterlab/apputils": ^4.2.0 - "@jupyterlab/coreutils": ^6.1.0 - "@jupyterlab/markdownviewer": ^4.1.0 - "@jupyterlab/rendermime": ^4.1.0 - "@jupyterlab/settingregistry": ^4.1.0 - "@jupyterlab/toc": ^6.1.0 - "@jupyterlab/translation": ^4.1.0 + "@jupyterlab/application": ^4.1.5 + "@jupyterlab/apputils": ^4.2.5 + "@jupyterlab/coreutils": ^6.1.5 + "@jupyterlab/markdownviewer": ^4.1.5 + "@jupyterlab/rendermime": ^4.1.5 + "@jupyterlab/settingregistry": ^4.1.5 + "@jupyterlab/toc": ^6.1.5 + "@jupyterlab/translation": ^4.1.5 rimraf: ~5.0.5 typedoc: ~0.24.7 typescript: ~5.1.6 languageName: unknown linkType: soft -"@jupyterlab/markdownviewer@^4.1.0, @jupyterlab/markdownviewer@workspace:packages/markdownviewer": +"@jupyterlab/markdownviewer@^4.1.5, @jupyterlab/markdownviewer@workspace:packages/markdownviewer": version: 0.0.0-use.local resolution: "@jupyterlab/markdownviewer@workspace:packages/markdownviewer" dependencies: - "@jupyterlab/apputils": ^4.2.0 - "@jupyterlab/coreutils": ^6.1.0 - "@jupyterlab/docregistry": ^4.1.0 - "@jupyterlab/rendermime": ^4.1.0 - "@jupyterlab/toc": ^6.1.0 - "@jupyterlab/translation": ^4.1.0 + "@jupyterlab/apputils": ^4.2.5 + "@jupyterlab/coreutils": ^6.1.5 + "@jupyterlab/docregistry": ^4.1.5 + "@jupyterlab/rendermime": ^4.1.5 + "@jupyterlab/toc": ^6.1.5 + "@jupyterlab/translation": ^4.1.5 "@lumino/coreutils": ^2.1.2 "@lumino/messaging": ^2.0.1 "@lumino/signaling": ^2.1.2 @@ -3945,15 +3945,15 @@ __metadata: languageName: unknown linkType: soft -"@jupyterlab/markedparser-extension@^4.1.0, @jupyterlab/markedparser-extension@workspace:packages/markedparser-extension, @jupyterlab/markedparser-extension@~4.1.0": +"@jupyterlab/markedparser-extension@^4.1.5, @jupyterlab/markedparser-extension@workspace:packages/markedparser-extension, @jupyterlab/markedparser-extension@~4.1.5": version: 0.0.0-use.local resolution: "@jupyterlab/markedparser-extension@workspace:packages/markedparser-extension" dependencies: - "@jupyterlab/application": ^4.1.0 - "@jupyterlab/codemirror": ^4.1.0 - "@jupyterlab/coreutils": ^6.1.0 - "@jupyterlab/mermaid": ^4.1.0 - "@jupyterlab/rendermime": ^4.1.0 + "@jupyterlab/application": ^4.1.5 + "@jupyterlab/codemirror": ^4.1.5 + "@jupyterlab/coreutils": ^6.1.5 + "@jupyterlab/mermaid": ^4.1.5 + "@jupyterlab/rendermime": ^4.1.5 "@lumino/coreutils": ^2.1.2 "@types/d3": ^7.4.0 "@types/dompurify": ^2.4.0 @@ -3966,12 +3966,12 @@ __metadata: languageName: unknown linkType: soft -"@jupyterlab/mathjax-extension@^4.1.0, @jupyterlab/mathjax-extension@workspace:packages/mathjax-extension, @jupyterlab/mathjax-extension@~4.1.0": +"@jupyterlab/mathjax-extension@^4.1.5, @jupyterlab/mathjax-extension@workspace:packages/mathjax-extension, @jupyterlab/mathjax-extension@~4.1.5": version: 0.0.0-use.local resolution: "@jupyterlab/mathjax-extension@workspace:packages/mathjax-extension" dependencies: - "@jupyterlab/application": ^4.1.0 - "@jupyterlab/rendermime": ^4.1.0 + "@jupyterlab/application": ^4.1.5 + "@jupyterlab/rendermime": ^4.1.5 "@lumino/coreutils": ^2.1.2 mathjax-full: ^3.2.2 rimraf: ~5.0.5 @@ -3980,28 +3980,28 @@ __metadata: languageName: unknown linkType: soft -"@jupyterlab/mermaid-extension@^4.1.0, @jupyterlab/mermaid-extension@workspace:packages/mermaid-extension, @jupyterlab/mermaid-extension@~4.1.0": +"@jupyterlab/mermaid-extension@^4.1.5, @jupyterlab/mermaid-extension@workspace:packages/mermaid-extension, @jupyterlab/mermaid-extension@~4.1.5": version: 0.0.0-use.local resolution: "@jupyterlab/mermaid-extension@workspace:packages/mermaid-extension" dependencies: - "@jupyterlab/application": ^4.1.0 - "@jupyterlab/apputils": ^4.2.0 - "@jupyterlab/mermaid": ^4.1.0 - "@jupyterlab/rendermime-interfaces": ^3.9.0 - "@jupyterlab/translation": ^4.1.0 + "@jupyterlab/application": ^4.1.5 + "@jupyterlab/apputils": ^4.2.5 + "@jupyterlab/mermaid": ^4.1.5 + "@jupyterlab/rendermime-interfaces": ^3.9.5 + "@jupyterlab/translation": ^4.1.5 rimraf: ~5.0.5 typedoc: ~0.24.7 typescript: ~5.1.6 languageName: unknown linkType: soft -"@jupyterlab/mermaid@^4.1.0, @jupyterlab/mermaid@workspace:packages/mermaid": +"@jupyterlab/mermaid@^4.1.5, @jupyterlab/mermaid@workspace:packages/mermaid": version: 0.0.0-use.local resolution: "@jupyterlab/mermaid@workspace:packages/mermaid" dependencies: - "@jupyterlab/apputils": ^4.2.0 - "@jupyterlab/coreutils": ^6.1.0 - "@jupyterlab/rendermime-interfaces": ^3.9.0 + "@jupyterlab/apputils": ^4.2.5 + "@jupyterlab/coreutils": ^6.1.5 + "@jupyterlab/rendermime-interfaces": ^3.9.5 "@lumino/coreutils": ^2.1.2 "@lumino/widgets": ^2.3.1 "@types/jest": ^29.2.0 @@ -4013,33 +4013,33 @@ __metadata: languageName: unknown linkType: soft -"@jupyterlab/metadataform-extension@^4.1.0, @jupyterlab/metadataform-extension@workspace:packages/metadataform-extension, @jupyterlab/metadataform-extension@~4.1.0": +"@jupyterlab/metadataform-extension@^4.1.5, @jupyterlab/metadataform-extension@workspace:packages/metadataform-extension, @jupyterlab/metadataform-extension@~4.1.5": version: 0.0.0-use.local resolution: "@jupyterlab/metadataform-extension@workspace:packages/metadataform-extension" dependencies: - "@jupyterlab/application": ^4.1.0 - "@jupyterlab/metadataform": ^4.1.0 - "@jupyterlab/notebook": ^4.1.0 - "@jupyterlab/settingregistry": ^4.1.0 - "@jupyterlab/translation": ^4.1.0 - "@jupyterlab/ui-components": ^4.1.0 + "@jupyterlab/application": ^4.1.5 + "@jupyterlab/metadataform": ^4.1.5 + "@jupyterlab/notebook": ^4.1.5 + "@jupyterlab/settingregistry": ^4.1.5 + "@jupyterlab/translation": ^4.1.5 + "@jupyterlab/ui-components": ^4.1.5 "@lumino/coreutils": ^2.1.2 rimraf: ~5.0.5 typescript: ~5.1.6 languageName: unknown linkType: soft -"@jupyterlab/metadataform@^4.1.0, @jupyterlab/metadataform@workspace:packages/metadataform": +"@jupyterlab/metadataform@^4.1.5, @jupyterlab/metadataform@workspace:packages/metadataform": version: 0.0.0-use.local resolution: "@jupyterlab/metadataform@workspace:packages/metadataform" dependencies: - "@jupyterlab/apputils": ^4.2.0 - "@jupyterlab/nbformat": ^4.1.0 - "@jupyterlab/notebook": ^4.1.0 - "@jupyterlab/settingregistry": ^4.1.0 - "@jupyterlab/testing": ^4.1.0 - "@jupyterlab/translation": ^4.1.0 - "@jupyterlab/ui-components": ^4.1.0 + "@jupyterlab/apputils": ^4.2.5 + "@jupyterlab/nbformat": ^4.1.5 + "@jupyterlab/notebook": ^4.1.5 + "@jupyterlab/settingregistry": ^4.1.5 + "@jupyterlab/testing": ^4.1.5 + "@jupyterlab/translation": ^4.1.5 + "@jupyterlab/ui-components": ^4.1.5 "@lumino/coreutils": ^2.1.2 "@lumino/messaging": ^2.0.1 "@lumino/widgets": ^2.3.1 @@ -4060,101 +4060,101 @@ __metadata: version: 0.0.0-use.local resolution: "@jupyterlab/metapackage@workspace:packages/metapackage" dependencies: - "@jupyterlab/application": ^4.1.0 - "@jupyterlab/application-extension": ^4.1.0 - "@jupyterlab/apputils": ^4.2.0 - "@jupyterlab/apputils-extension": ^4.1.0 - "@jupyterlab/attachments": ^4.1.0 - "@jupyterlab/cell-toolbar": ^4.1.0 - "@jupyterlab/cell-toolbar-extension": ^4.1.0 - "@jupyterlab/cells": ^4.1.0 - "@jupyterlab/celltags-extension": ^4.1.0 - "@jupyterlab/codeeditor": ^4.1.0 - "@jupyterlab/codemirror": ^4.1.0 - "@jupyterlab/codemirror-extension": ^4.1.0 - "@jupyterlab/completer": ^4.1.0 - "@jupyterlab/completer-extension": ^4.1.0 - "@jupyterlab/console": ^4.1.0 - "@jupyterlab/console-extension": ^4.1.0 - "@jupyterlab/coreutils": ^6.1.0 - "@jupyterlab/csvviewer": ^4.1.0 - "@jupyterlab/csvviewer-extension": ^4.1.0 - "@jupyterlab/debugger": ^4.1.0 - "@jupyterlab/debugger-extension": ^4.1.0 - "@jupyterlab/docmanager": ^4.1.0 - "@jupyterlab/docmanager-extension": ^4.1.0 - "@jupyterlab/docregistry": ^4.1.0 - "@jupyterlab/documentsearch": ^4.1.0 - "@jupyterlab/documentsearch-extension": ^4.1.0 - "@jupyterlab/extensionmanager": ^4.1.0 - "@jupyterlab/extensionmanager-extension": ^4.1.0 - "@jupyterlab/filebrowser": ^4.1.0 - "@jupyterlab/filebrowser-extension": ^4.1.0 - "@jupyterlab/fileeditor": ^4.1.0 - "@jupyterlab/fileeditor-extension": ^4.1.0 - "@jupyterlab/help-extension": ^4.1.0 - "@jupyterlab/htmlviewer": ^4.1.0 - "@jupyterlab/htmlviewer-extension": ^4.1.0 - "@jupyterlab/hub-extension": ^4.1.0 - "@jupyterlab/imageviewer": ^4.1.0 - "@jupyterlab/imageviewer-extension": ^4.1.0 - "@jupyterlab/inspector": ^4.1.0 - "@jupyterlab/inspector-extension": ^4.1.0 - "@jupyterlab/javascript-extension": ^4.1.0 - "@jupyterlab/json-extension": ^4.1.0 - "@jupyterlab/launcher": ^4.1.0 - "@jupyterlab/launcher-extension": ^4.1.0 - "@jupyterlab/logconsole": ^4.1.0 - "@jupyterlab/logconsole-extension": ^4.1.0 - "@jupyterlab/lsp": ^4.1.0 - "@jupyterlab/lsp-extension": ^4.1.0 - "@jupyterlab/mainmenu": ^4.1.0 - "@jupyterlab/mainmenu-extension": ^4.1.0 - "@jupyterlab/markdownviewer": ^4.1.0 - "@jupyterlab/markdownviewer-extension": ^4.1.0 - "@jupyterlab/markedparser-extension": ^4.1.0 - "@jupyterlab/mathjax-extension": ^4.1.0 - "@jupyterlab/mermaid": ^4.1.0 - "@jupyterlab/mermaid-extension": ^4.1.0 - "@jupyterlab/metadataform": ^4.1.0 - "@jupyterlab/metadataform-extension": ^4.1.0 - "@jupyterlab/nbconvert-css": ^4.1.0 - "@jupyterlab/nbformat": ^4.1.0 - "@jupyterlab/notebook": ^4.1.0 - "@jupyterlab/notebook-extension": ^4.1.0 - "@jupyterlab/observables": ^5.1.0 - "@jupyterlab/outputarea": ^4.1.0 - "@jupyterlab/pdf-extension": ^4.1.0 - "@jupyterlab/pluginmanager": ^4.1.0 - "@jupyterlab/pluginmanager-extension": ^4.1.0 - "@jupyterlab/property-inspector": ^4.1.0 - "@jupyterlab/rendermime": ^4.1.0 - "@jupyterlab/rendermime-extension": ^4.1.0 - "@jupyterlab/rendermime-interfaces": ^3.9.0 - "@jupyterlab/running": ^4.1.0 - "@jupyterlab/running-extension": ^4.1.0 - "@jupyterlab/services": ^7.1.0 - "@jupyterlab/settingeditor": ^4.1.0 - "@jupyterlab/settingeditor-extension": ^4.1.0 - "@jupyterlab/settingregistry": ^4.1.0 - "@jupyterlab/shortcuts-extension": ^4.1.0 - "@jupyterlab/statedb": ^4.1.0 - "@jupyterlab/statusbar": ^4.1.0 - "@jupyterlab/statusbar-extension": ^4.1.0 - "@jupyterlab/terminal": ^4.1.0 - "@jupyterlab/terminal-extension": ^4.1.0 - "@jupyterlab/testing": ^4.1.0 - "@jupyterlab/theme-dark-extension": ^4.1.0 - "@jupyterlab/theme-light-extension": ^4.1.0 - "@jupyterlab/toc": ^6.1.0 - "@jupyterlab/toc-extension": ^6.1.0 - "@jupyterlab/tooltip": ^4.1.0 - "@jupyterlab/tooltip-extension": ^4.1.0 - "@jupyterlab/translation": ^4.1.0 - "@jupyterlab/translation-extension": ^4.1.0 - "@jupyterlab/ui-components": ^4.1.0 - "@jupyterlab/ui-components-extension": ^4.1.0 - "@jupyterlab/vega5-extension": ^4.1.0 + "@jupyterlab/application": ^4.1.5 + "@jupyterlab/application-extension": ^4.1.5 + "@jupyterlab/apputils": ^4.2.5 + "@jupyterlab/apputils-extension": ^4.1.5 + "@jupyterlab/attachments": ^4.1.5 + "@jupyterlab/cell-toolbar": ^4.1.5 + "@jupyterlab/cell-toolbar-extension": ^4.1.5 + "@jupyterlab/cells": ^4.1.5 + "@jupyterlab/celltags-extension": ^4.1.5 + "@jupyterlab/codeeditor": ^4.1.5 + "@jupyterlab/codemirror": ^4.1.5 + "@jupyterlab/codemirror-extension": ^4.1.5 + "@jupyterlab/completer": ^4.1.5 + "@jupyterlab/completer-extension": ^4.1.5 + "@jupyterlab/console": ^4.1.5 + "@jupyterlab/console-extension": ^4.1.5 + "@jupyterlab/coreutils": ^6.1.5 + "@jupyterlab/csvviewer": ^4.1.5 + "@jupyterlab/csvviewer-extension": ^4.1.5 + "@jupyterlab/debugger": ^4.1.5 + "@jupyterlab/debugger-extension": ^4.1.5 + "@jupyterlab/docmanager": ^4.1.5 + "@jupyterlab/docmanager-extension": ^4.1.5 + "@jupyterlab/docregistry": ^4.1.5 + "@jupyterlab/documentsearch": ^4.1.5 + "@jupyterlab/documentsearch-extension": ^4.1.5 + "@jupyterlab/extensionmanager": ^4.1.5 + "@jupyterlab/extensionmanager-extension": ^4.1.5 + "@jupyterlab/filebrowser": ^4.1.5 + "@jupyterlab/filebrowser-extension": ^4.1.5 + "@jupyterlab/fileeditor": ^4.1.5 + "@jupyterlab/fileeditor-extension": ^4.1.5 + "@jupyterlab/help-extension": ^4.1.5 + "@jupyterlab/htmlviewer": ^4.1.5 + "@jupyterlab/htmlviewer-extension": ^4.1.5 + "@jupyterlab/hub-extension": ^4.1.5 + "@jupyterlab/imageviewer": ^4.1.5 + "@jupyterlab/imageviewer-extension": ^4.1.5 + "@jupyterlab/inspector": ^4.1.5 + "@jupyterlab/inspector-extension": ^4.1.5 + "@jupyterlab/javascript-extension": ^4.1.5 + "@jupyterlab/json-extension": ^4.1.5 + "@jupyterlab/launcher": ^4.1.5 + "@jupyterlab/launcher-extension": ^4.1.5 + "@jupyterlab/logconsole": ^4.1.5 + "@jupyterlab/logconsole-extension": ^4.1.5 + "@jupyterlab/lsp": ^4.1.5 + "@jupyterlab/lsp-extension": ^4.1.5 + "@jupyterlab/mainmenu": ^4.1.5 + "@jupyterlab/mainmenu-extension": ^4.1.5 + "@jupyterlab/markdownviewer": ^4.1.5 + "@jupyterlab/markdownviewer-extension": ^4.1.5 + "@jupyterlab/markedparser-extension": ^4.1.5 + "@jupyterlab/mathjax-extension": ^4.1.5 + "@jupyterlab/mermaid": ^4.1.5 + "@jupyterlab/mermaid-extension": ^4.1.5 + "@jupyterlab/metadataform": ^4.1.5 + "@jupyterlab/metadataform-extension": ^4.1.5 + "@jupyterlab/nbconvert-css": ^4.1.5 + "@jupyterlab/nbformat": ^4.1.5 + "@jupyterlab/notebook": ^4.1.5 + "@jupyterlab/notebook-extension": ^4.1.5 + "@jupyterlab/observables": ^5.1.5 + "@jupyterlab/outputarea": ^4.1.5 + "@jupyterlab/pdf-extension": ^4.1.5 + "@jupyterlab/pluginmanager": ^4.1.5 + "@jupyterlab/pluginmanager-extension": ^4.1.5 + "@jupyterlab/property-inspector": ^4.1.5 + "@jupyterlab/rendermime": ^4.1.5 + "@jupyterlab/rendermime-extension": ^4.1.5 + "@jupyterlab/rendermime-interfaces": ^3.9.5 + "@jupyterlab/running": ^4.1.5 + "@jupyterlab/running-extension": ^4.1.5 + "@jupyterlab/services": ^7.1.5 + "@jupyterlab/settingeditor": ^4.1.5 + "@jupyterlab/settingeditor-extension": ^4.1.5 + "@jupyterlab/settingregistry": ^4.1.5 + "@jupyterlab/shortcuts-extension": ^4.1.5 + "@jupyterlab/statedb": ^4.1.5 + "@jupyterlab/statusbar": ^4.1.5 + "@jupyterlab/statusbar-extension": ^4.1.5 + "@jupyterlab/terminal": ^4.1.5 + "@jupyterlab/terminal-extension": ^4.1.5 + "@jupyterlab/testing": ^4.1.5 + "@jupyterlab/theme-dark-extension": ^4.1.5 + "@jupyterlab/theme-light-extension": ^4.1.5 + "@jupyterlab/toc": ^6.1.5 + "@jupyterlab/toc-extension": ^6.1.5 + "@jupyterlab/tooltip": ^4.1.5 + "@jupyterlab/tooltip-extension": ^4.1.5 + "@jupyterlab/translation": ^4.1.5 + "@jupyterlab/translation-extension": ^4.1.5 + "@jupyterlab/ui-components": ^4.1.5 + "@jupyterlab/ui-components-extension": ^4.1.5 + "@jupyterlab/vega5-extension": ^4.1.5 "@types/jest": ^29.2.0 fs-extra: ^10.1.0 jest: ^29.2.0 @@ -4169,8 +4169,8 @@ __metadata: version: 0.0.0-use.local resolution: "@jupyterlab/mock-consumer@workspace:jupyterlab/tests/mock_packages/interop/consumer" dependencies: - "@jupyterlab/builder": ^4.1.0 - "@jupyterlab/mock-token": ^4.1.0 + "@jupyterlab/builder": ^4.1.5 + "@jupyterlab/mock-token": ^4.1.5 languageName: unknown linkType: soft @@ -4178,8 +4178,8 @@ __metadata: version: 0.0.0-use.local resolution: "@jupyterlab/mock-extension@workspace:jupyterlab/tests/mock_packages/extension" dependencies: - "@jupyterlab/builder": ^4.1.0 - "@jupyterlab/launcher": ^4.1.0 + "@jupyterlab/builder": ^4.1.5 + "@jupyterlab/launcher": ^4.1.5 languageName: unknown linkType: soft @@ -4187,12 +4187,12 @@ __metadata: version: 0.0.0-use.local resolution: "@jupyterlab/mock-provider@workspace:jupyterlab/tests/mock_packages/interop/provider" dependencies: - "@jupyterlab/builder": ^4.1.0 - "@jupyterlab/mock-token": ^4.1.0 + "@jupyterlab/builder": ^4.1.5 + "@jupyterlab/mock-token": ^4.1.5 languageName: unknown linkType: soft -"@jupyterlab/mock-token@^4.1.0, @jupyterlab/mock-token@workspace:jupyterlab/tests/mock_packages/interop/token": +"@jupyterlab/mock-token@^4.1.5, @jupyterlab/mock-token@workspace:jupyterlab/tests/mock_packages/interop/token": version: 0.0.0-use.local resolution: "@jupyterlab/mock-token@workspace:jupyterlab/tests/mock_packages/interop/token" dependencies: @@ -4200,17 +4200,17 @@ __metadata: languageName: unknown linkType: soft -"@jupyterlab/nbconvert-css@^4.1.0, @jupyterlab/nbconvert-css@workspace:packages/nbconvert-css": +"@jupyterlab/nbconvert-css@^4.1.5, @jupyterlab/nbconvert-css@workspace:packages/nbconvert-css": version: 0.0.0-use.local resolution: "@jupyterlab/nbconvert-css@workspace:packages/nbconvert-css" dependencies: - "@jupyterlab/application": ^4.1.0 - "@jupyterlab/apputils": ^4.2.0 - "@jupyterlab/cells": ^4.1.0 - "@jupyterlab/codemirror": ^4.1.0 - "@jupyterlab/notebook": ^4.1.0 - "@jupyterlab/outputarea": ^4.1.0 - "@jupyterlab/rendermime": ^4.1.0 + "@jupyterlab/application": ^4.1.5 + "@jupyterlab/apputils": ^4.2.5 + "@jupyterlab/cells": ^4.1.5 + "@jupyterlab/codemirror": ^4.1.5 + "@jupyterlab/notebook": ^4.1.5 + "@jupyterlab/outputarea": ^4.1.5 + "@jupyterlab/rendermime": ^4.1.5 css-loader: ^6.7.1 mini-css-extract-plugin: ^2.7.0 null-loader: ^4.0.0 @@ -4220,11 +4220,11 @@ __metadata: languageName: unknown linkType: soft -"@jupyterlab/nbformat@^3.0.0 || ^4.0.0-alpha.21 || ^4.0.0, @jupyterlab/nbformat@^4.1.0, @jupyterlab/nbformat@workspace:packages/nbformat": +"@jupyterlab/nbformat@^3.0.0 || ^4.0.0-alpha.21 || ^4.0.0, @jupyterlab/nbformat@^4.1.5, @jupyterlab/nbformat@workspace:packages/nbformat": version: 0.0.0-use.local resolution: "@jupyterlab/nbformat@workspace:packages/nbformat" dependencies: - "@jupyterlab/testing": ^4.1.0 + "@jupyterlab/testing": ^4.1.5 "@lumino/coreutils": ^2.1.2 "@types/jest": ^29.2.0 jest: ^29.2.0 @@ -4233,40 +4233,40 @@ __metadata: languageName: unknown linkType: soft -"@jupyterlab/notebook-extension@^4.1.0, @jupyterlab/notebook-extension@workspace:packages/notebook-extension, @jupyterlab/notebook-extension@~4.1.0": +"@jupyterlab/notebook-extension@^4.1.5, @jupyterlab/notebook-extension@workspace:packages/notebook-extension, @jupyterlab/notebook-extension@~4.1.5": version: 0.0.0-use.local resolution: "@jupyterlab/notebook-extension@workspace:packages/notebook-extension" dependencies: "@jupyter/ydoc": ^1.1.1 - "@jupyterlab/application": ^4.1.0 - "@jupyterlab/apputils": ^4.2.0 - "@jupyterlab/cells": ^4.1.0 - "@jupyterlab/codeeditor": ^4.1.0 - "@jupyterlab/codemirror": ^4.1.0 - "@jupyterlab/completer": ^4.1.0 - "@jupyterlab/coreutils": ^6.1.0 - "@jupyterlab/docmanager": ^4.1.0 - "@jupyterlab/docmanager-extension": ^4.1.0 - "@jupyterlab/docregistry": ^4.1.0 - "@jupyterlab/documentsearch": ^4.1.0 - "@jupyterlab/filebrowser": ^4.1.0 - "@jupyterlab/launcher": ^4.1.0 - "@jupyterlab/logconsole": ^4.1.0 - "@jupyterlab/lsp": ^4.1.0 - "@jupyterlab/mainmenu": ^4.1.0 - "@jupyterlab/metadataform": ^4.1.0 - "@jupyterlab/nbformat": ^4.1.0 - "@jupyterlab/notebook": ^4.1.0 - "@jupyterlab/observables": ^5.1.0 - "@jupyterlab/property-inspector": ^4.1.0 - "@jupyterlab/rendermime": ^4.1.0 - "@jupyterlab/services": ^7.1.0 - "@jupyterlab/settingregistry": ^4.1.0 - "@jupyterlab/statedb": ^4.1.0 - "@jupyterlab/statusbar": ^4.1.0 - "@jupyterlab/toc": ^6.1.0 - "@jupyterlab/translation": ^4.1.0 - "@jupyterlab/ui-components": ^4.1.0 + "@jupyterlab/application": ^4.1.5 + "@jupyterlab/apputils": ^4.2.5 + "@jupyterlab/cells": ^4.1.5 + "@jupyterlab/codeeditor": ^4.1.5 + "@jupyterlab/codemirror": ^4.1.5 + "@jupyterlab/completer": ^4.1.5 + "@jupyterlab/coreutils": ^6.1.5 + "@jupyterlab/docmanager": ^4.1.5 + "@jupyterlab/docmanager-extension": ^4.1.5 + "@jupyterlab/docregistry": ^4.1.5 + "@jupyterlab/documentsearch": ^4.1.5 + "@jupyterlab/filebrowser": ^4.1.5 + "@jupyterlab/launcher": ^4.1.5 + "@jupyterlab/logconsole": ^4.1.5 + "@jupyterlab/lsp": ^4.1.5 + "@jupyterlab/mainmenu": ^4.1.5 + "@jupyterlab/metadataform": ^4.1.5 + "@jupyterlab/nbformat": ^4.1.5 + "@jupyterlab/notebook": ^4.1.5 + "@jupyterlab/observables": ^5.1.5 + "@jupyterlab/property-inspector": ^4.1.5 + "@jupyterlab/rendermime": ^4.1.5 + "@jupyterlab/services": ^7.1.5 + "@jupyterlab/settingregistry": ^4.1.5 + "@jupyterlab/statedb": ^4.1.5 + "@jupyterlab/statusbar": ^4.1.5 + "@jupyterlab/toc": ^6.1.5 + "@jupyterlab/translation": ^4.1.5 + "@jupyterlab/ui-components": ^4.1.5 "@lumino/algorithm": ^2.0.1 "@lumino/commands": ^2.2.0 "@lumino/coreutils": ^2.1.2 @@ -4282,29 +4282,29 @@ __metadata: languageName: unknown linkType: soft -"@jupyterlab/notebook@^4.1.0, @jupyterlab/notebook@workspace:packages/notebook": +"@jupyterlab/notebook@^4.1.5, @jupyterlab/notebook@workspace:packages/notebook": version: 0.0.0-use.local resolution: "@jupyterlab/notebook@workspace:packages/notebook" dependencies: "@jupyter/ydoc": ^1.1.1 - "@jupyterlab/apputils": ^4.2.0 - "@jupyterlab/cells": ^4.1.0 - "@jupyterlab/codeeditor": ^4.1.0 - "@jupyterlab/codemirror": ^4.1.0 - "@jupyterlab/coreutils": ^6.1.0 - "@jupyterlab/docregistry": ^4.1.0 - "@jupyterlab/documentsearch": ^4.1.0 - "@jupyterlab/lsp": ^4.1.0 - "@jupyterlab/nbformat": ^4.1.0 - "@jupyterlab/observables": ^5.1.0 - "@jupyterlab/rendermime": ^4.1.0 - "@jupyterlab/services": ^7.1.0 - "@jupyterlab/settingregistry": ^4.1.0 - "@jupyterlab/statusbar": ^4.1.0 - "@jupyterlab/testing": ^4.1.0 - "@jupyterlab/toc": ^6.1.0 - "@jupyterlab/translation": ^4.1.0 - "@jupyterlab/ui-components": ^4.1.0 + "@jupyterlab/apputils": ^4.2.5 + "@jupyterlab/cells": ^4.1.5 + "@jupyterlab/codeeditor": ^4.1.5 + "@jupyterlab/codemirror": ^4.1.5 + "@jupyterlab/coreutils": ^6.1.5 + "@jupyterlab/docregistry": ^4.1.5 + "@jupyterlab/documentsearch": ^4.1.5 + "@jupyterlab/lsp": ^4.1.5 + "@jupyterlab/nbformat": ^4.1.5 + "@jupyterlab/observables": ^5.1.5 + "@jupyterlab/rendermime": ^4.1.5 + "@jupyterlab/services": ^7.1.5 + "@jupyterlab/settingregistry": ^4.1.5 + "@jupyterlab/statusbar": ^4.1.5 + "@jupyterlab/testing": ^4.1.5 + "@jupyterlab/toc": ^6.1.5 + "@jupyterlab/translation": ^4.1.5 + "@jupyterlab/ui-components": ^4.1.5 "@lumino/algorithm": ^2.0.1 "@lumino/coreutils": ^2.1.2 "@lumino/disposable": ^2.1.2 @@ -4324,11 +4324,11 @@ __metadata: languageName: unknown linkType: soft -"@jupyterlab/observables@^5.1.0, @jupyterlab/observables@workspace:packages/observables": +"@jupyterlab/observables@^5.1.5, @jupyterlab/observables@workspace:packages/observables": version: 0.0.0-use.local resolution: "@jupyterlab/observables@workspace:packages/observables" dependencies: - "@jupyterlab/testing": ^4.1.0 + "@jupyterlab/testing": ^4.1.5 "@lumino/algorithm": ^2.0.1 "@lumino/coreutils": ^2.1.2 "@lumino/disposable": ^2.1.2 @@ -4342,18 +4342,18 @@ __metadata: languageName: unknown linkType: soft -"@jupyterlab/outputarea@^4.1.0, @jupyterlab/outputarea@workspace:packages/outputarea": +"@jupyterlab/outputarea@^4.1.5, @jupyterlab/outputarea@workspace:packages/outputarea": version: 0.0.0-use.local resolution: "@jupyterlab/outputarea@workspace:packages/outputarea" dependencies: - "@jupyterlab/apputils": ^4.2.0 - "@jupyterlab/nbformat": ^4.1.0 - "@jupyterlab/observables": ^5.1.0 - "@jupyterlab/rendermime": ^4.1.0 - "@jupyterlab/rendermime-interfaces": ^3.9.0 - "@jupyterlab/services": ^7.1.0 - "@jupyterlab/testing": ^4.1.0 - "@jupyterlab/translation": ^4.1.0 + "@jupyterlab/apputils": ^4.2.5 + "@jupyterlab/nbformat": ^4.1.5 + "@jupyterlab/observables": ^5.1.5 + "@jupyterlab/rendermime": ^4.1.5 + "@jupyterlab/rendermime-interfaces": ^3.9.5 + "@jupyterlab/services": ^7.1.5 + "@jupyterlab/testing": ^4.1.5 + "@jupyterlab/translation": ^4.1.5 "@lumino/algorithm": ^2.0.1 "@lumino/coreutils": ^2.1.2 "@lumino/disposable": ^2.1.2 @@ -4369,11 +4369,11 @@ __metadata: languageName: unknown linkType: soft -"@jupyterlab/pdf-extension@^4.1.0, @jupyterlab/pdf-extension@workspace:packages/pdf-extension, @jupyterlab/pdf-extension@~4.1.0": +"@jupyterlab/pdf-extension@^4.1.5, @jupyterlab/pdf-extension@workspace:packages/pdf-extension, @jupyterlab/pdf-extension@~4.1.5": version: 0.0.0-use.local resolution: "@jupyterlab/pdf-extension@workspace:packages/pdf-extension" dependencies: - "@jupyterlab/rendermime-interfaces": ^3.9.0 + "@jupyterlab/rendermime-interfaces": ^3.9.5 "@lumino/coreutils": ^2.1.2 "@lumino/disposable": ^2.1.2 "@lumino/widgets": ^2.3.1 @@ -4383,32 +4383,32 @@ __metadata: languageName: unknown linkType: soft -"@jupyterlab/pluginmanager-extension@^4.1.0, @jupyterlab/pluginmanager-extension@workspace:packages/pluginmanager-extension, @jupyterlab/pluginmanager-extension@~4.1.0": +"@jupyterlab/pluginmanager-extension@^4.1.5, @jupyterlab/pluginmanager-extension@workspace:packages/pluginmanager-extension, @jupyterlab/pluginmanager-extension@~4.1.5": version: 0.0.0-use.local resolution: "@jupyterlab/pluginmanager-extension@workspace:packages/pluginmanager-extension" dependencies: - "@jupyterlab/application": ^4.1.0 - "@jupyterlab/apputils": ^4.2.0 - "@jupyterlab/pluginmanager": ^4.1.0 - "@jupyterlab/translation": ^4.1.0 - "@jupyterlab/ui-components": ^4.1.0 + "@jupyterlab/application": ^4.1.5 + "@jupyterlab/apputils": ^4.2.5 + "@jupyterlab/pluginmanager": ^4.1.5 + "@jupyterlab/translation": ^4.1.5 + "@jupyterlab/ui-components": ^4.1.5 "@lumino/coreutils": ^2.1.2 rimraf: ~5.0.5 typescript: ~5.1.6 languageName: unknown linkType: soft -"@jupyterlab/pluginmanager@^4.1.0, @jupyterlab/pluginmanager@workspace:packages/pluginmanager": +"@jupyterlab/pluginmanager@^4.1.5, @jupyterlab/pluginmanager@workspace:packages/pluginmanager": version: 0.0.0-use.local resolution: "@jupyterlab/pluginmanager@workspace:packages/pluginmanager" dependencies: - "@jupyterlab/application": ^4.1.0 - "@jupyterlab/apputils": ^4.2.0 - "@jupyterlab/coreutils": ^6.1.0 - "@jupyterlab/services": ^7.1.0 - "@jupyterlab/testing": ^4.1.0 - "@jupyterlab/translation": ^4.1.0 - "@jupyterlab/ui-components": ^4.1.0 + "@jupyterlab/application": ^4.1.5 + "@jupyterlab/apputils": ^4.2.5 + "@jupyterlab/coreutils": ^6.1.5 + "@jupyterlab/services": ^7.1.5 + "@jupyterlab/testing": ^4.1.5 + "@jupyterlab/translation": ^4.1.5 + "@jupyterlab/ui-components": ^4.1.5 "@lumino/coreutils": ^2.1.2 "@lumino/signaling": ^2.1.2 "@lumino/widgets": ^2.3.1 @@ -4420,13 +4420,13 @@ __metadata: languageName: unknown linkType: soft -"@jupyterlab/property-inspector@^4.1.0, @jupyterlab/property-inspector@workspace:packages/property-inspector": +"@jupyterlab/property-inspector@^4.1.5, @jupyterlab/property-inspector@workspace:packages/property-inspector": version: 0.0.0-use.local resolution: "@jupyterlab/property-inspector@workspace:packages/property-inspector" dependencies: - "@jupyterlab/application": ^4.1.0 - "@jupyterlab/translation": ^4.1.0 - "@jupyterlab/ui-components": ^4.1.0 + "@jupyterlab/application": ^4.1.5 + "@jupyterlab/translation": ^4.1.5 + "@jupyterlab/ui-components": ^4.1.5 "@lumino/coreutils": ^2.1.2 "@lumino/disposable": ^2.1.2 "@lumino/signaling": ^2.1.2 @@ -4438,22 +4438,22 @@ __metadata: languageName: unknown linkType: soft -"@jupyterlab/rendermime-extension@^4.1.0, @jupyterlab/rendermime-extension@workspace:packages/rendermime-extension, @jupyterlab/rendermime-extension@~4.1.0": +"@jupyterlab/rendermime-extension@^4.1.5, @jupyterlab/rendermime-extension@workspace:packages/rendermime-extension, @jupyterlab/rendermime-extension@~4.1.5": version: 0.0.0-use.local resolution: "@jupyterlab/rendermime-extension@workspace:packages/rendermime-extension" dependencies: - "@jupyterlab/application": ^4.1.0 - "@jupyterlab/apputils": ^4.2.0 - "@jupyterlab/docmanager": ^4.1.0 - "@jupyterlab/rendermime": ^4.1.0 - "@jupyterlab/translation": ^4.1.0 + "@jupyterlab/application": ^4.1.5 + "@jupyterlab/apputils": ^4.2.5 + "@jupyterlab/docmanager": ^4.1.5 + "@jupyterlab/rendermime": ^4.1.5 + "@jupyterlab/translation": ^4.1.5 rimraf: ~5.0.5 typedoc: ~0.24.7 typescript: ~5.1.6 languageName: unknown linkType: soft -"@jupyterlab/rendermime-interfaces@^3.9.0, @jupyterlab/rendermime-interfaces@workspace:packages/rendermime-interfaces": +"@jupyterlab/rendermime-interfaces@^3.9.5, @jupyterlab/rendermime-interfaces@workspace:packages/rendermime-interfaces": version: 0.0.0-use.local resolution: "@jupyterlab/rendermime-interfaces@workspace:packages/rendermime-interfaces" dependencies: @@ -4465,18 +4465,18 @@ __metadata: languageName: unknown linkType: soft -"@jupyterlab/rendermime@^4.1.0, @jupyterlab/rendermime@workspace:packages/rendermime": +"@jupyterlab/rendermime@^4.1.5, @jupyterlab/rendermime@workspace:packages/rendermime": version: 0.0.0-use.local resolution: "@jupyterlab/rendermime@workspace:packages/rendermime" dependencies: - "@jupyterlab/apputils": ^4.2.0 - "@jupyterlab/coreutils": ^6.1.0 - "@jupyterlab/nbformat": ^4.1.0 - "@jupyterlab/observables": ^5.1.0 - "@jupyterlab/rendermime-interfaces": ^3.9.0 - "@jupyterlab/services": ^7.1.0 - "@jupyterlab/testing": ^4.1.0 - "@jupyterlab/translation": ^4.1.0 + "@jupyterlab/apputils": ^4.2.5 + "@jupyterlab/coreutils": ^6.1.5 + "@jupyterlab/nbformat": ^4.1.5 + "@jupyterlab/observables": ^5.1.5 + "@jupyterlab/rendermime-interfaces": ^3.9.5 + "@jupyterlab/services": ^7.1.5 + "@jupyterlab/testing": ^4.1.5 + "@jupyterlab/translation": ^4.1.5 "@lumino/coreutils": ^2.1.2 "@lumino/messaging": ^2.0.1 "@lumino/signaling": ^2.1.2 @@ -4516,18 +4516,18 @@ __metadata: languageName: unknown linkType: soft -"@jupyterlab/running-extension@^4.1.0, @jupyterlab/running-extension@workspace:packages/running-extension, @jupyterlab/running-extension@~4.1.0": +"@jupyterlab/running-extension@^4.1.5, @jupyterlab/running-extension@workspace:packages/running-extension, @jupyterlab/running-extension@~4.1.5": version: 0.0.0-use.local resolution: "@jupyterlab/running-extension@workspace:packages/running-extension" dependencies: - "@jupyterlab/application": ^4.1.0 - "@jupyterlab/coreutils": ^6.1.0 - "@jupyterlab/docregistry": ^4.1.0 - "@jupyterlab/rendermime-interfaces": ^3.9.0 - "@jupyterlab/running": ^4.1.0 - "@jupyterlab/services": ^7.1.0 - "@jupyterlab/translation": ^4.1.0 - "@jupyterlab/ui-components": ^4.1.0 + "@jupyterlab/application": ^4.1.5 + "@jupyterlab/coreutils": ^6.1.5 + "@jupyterlab/docregistry": ^4.1.5 + "@jupyterlab/rendermime-interfaces": ^3.9.5 + "@jupyterlab/running": ^4.1.5 + "@jupyterlab/services": ^7.1.5 + "@jupyterlab/translation": ^4.1.5 + "@jupyterlab/ui-components": ^4.1.5 "@lumino/commands": ^2.2.0 "@lumino/polling": ^2.1.2 "@lumino/signaling": ^2.1.2 @@ -4538,13 +4538,13 @@ __metadata: languageName: unknown linkType: soft -"@jupyterlab/running@^4.1.0, @jupyterlab/running@workspace:packages/running": +"@jupyterlab/running@^4.1.5, @jupyterlab/running@workspace:packages/running": version: 0.0.0-use.local resolution: "@jupyterlab/running@workspace:packages/running" dependencies: - "@jupyterlab/apputils": ^4.2.0 - "@jupyterlab/translation": ^4.1.0 - "@jupyterlab/ui-components": ^4.1.0 + "@jupyterlab/apputils": ^4.2.5 + "@jupyterlab/translation": ^4.1.5 + "@jupyterlab/ui-components": ^4.1.5 "@lumino/coreutils": ^2.1.2 "@lumino/disposable": ^2.1.2 "@lumino/messaging": ^2.0.1 @@ -4557,16 +4557,16 @@ __metadata: languageName: unknown linkType: soft -"@jupyterlab/services@^7.1.0, @jupyterlab/services@workspace:packages/services": +"@jupyterlab/services@^7.1.5, @jupyterlab/services@workspace:packages/services": version: 0.0.0-use.local resolution: "@jupyterlab/services@workspace:packages/services" dependencies: "@jupyter/ydoc": ^1.1.1 - "@jupyterlab/coreutils": ^6.1.0 - "@jupyterlab/nbformat": ^4.1.0 - "@jupyterlab/settingregistry": ^4.1.0 - "@jupyterlab/statedb": ^4.1.0 - "@jupyterlab/testing": ^4.1.0 + "@jupyterlab/coreutils": ^6.1.5 + "@jupyterlab/nbformat": ^4.1.5 + "@jupyterlab/settingregistry": ^4.1.5 + "@jupyterlab/statedb": ^4.1.5 + "@jupyterlab/testing": ^4.1.5 "@lumino/coreutils": ^2.1.2 "@lumino/disposable": ^2.1.2 "@lumino/polling": ^2.1.2 @@ -4584,20 +4584,20 @@ __metadata: languageName: unknown linkType: soft -"@jupyterlab/settingeditor-extension@^4.1.0, @jupyterlab/settingeditor-extension@workspace:packages/settingeditor-extension, @jupyterlab/settingeditor-extension@~4.1.0": +"@jupyterlab/settingeditor-extension@^4.1.5, @jupyterlab/settingeditor-extension@workspace:packages/settingeditor-extension, @jupyterlab/settingeditor-extension@~4.1.5": version: 0.0.0-use.local resolution: "@jupyterlab/settingeditor-extension@workspace:packages/settingeditor-extension" dependencies: - "@jupyterlab/application": ^4.1.0 - "@jupyterlab/apputils": ^4.2.0 - "@jupyterlab/codeeditor": ^4.1.0 - "@jupyterlab/pluginmanager": ^4.1.0 - "@jupyterlab/rendermime": ^4.1.0 - "@jupyterlab/settingeditor": ^4.1.0 - "@jupyterlab/settingregistry": ^4.1.0 - "@jupyterlab/statedb": ^4.1.0 - "@jupyterlab/translation": ^4.1.0 - "@jupyterlab/ui-components": ^4.1.0 + "@jupyterlab/application": ^4.1.5 + "@jupyterlab/apputils": ^4.2.5 + "@jupyterlab/codeeditor": ^4.1.5 + "@jupyterlab/pluginmanager": ^4.1.5 + "@jupyterlab/rendermime": ^4.1.5 + "@jupyterlab/settingeditor": ^4.1.5 + "@jupyterlab/settingregistry": ^4.1.5 + "@jupyterlab/statedb": ^4.1.5 + "@jupyterlab/translation": ^4.1.5 + "@jupyterlab/ui-components": ^4.1.5 "@lumino/disposable": ^2.1.2 rimraf: ~5.0.5 typedoc: ~0.24.7 @@ -4605,20 +4605,20 @@ __metadata: languageName: unknown linkType: soft -"@jupyterlab/settingeditor@^4.1.0, @jupyterlab/settingeditor@workspace:packages/settingeditor": +"@jupyterlab/settingeditor@^4.1.5, @jupyterlab/settingeditor@workspace:packages/settingeditor": version: 0.0.0-use.local resolution: "@jupyterlab/settingeditor@workspace:packages/settingeditor" dependencies: - "@jupyterlab/application": ^4.1.0 - "@jupyterlab/apputils": ^4.2.0 - "@jupyterlab/codeeditor": ^4.1.0 - "@jupyterlab/inspector": ^4.1.0 - "@jupyterlab/rendermime": ^4.1.0 - "@jupyterlab/settingregistry": ^4.1.0 - "@jupyterlab/statedb": ^4.1.0 - "@jupyterlab/testing": ^4.1.0 - "@jupyterlab/translation": ^4.1.0 - "@jupyterlab/ui-components": ^4.1.0 + "@jupyterlab/application": ^4.1.5 + "@jupyterlab/apputils": ^4.2.5 + "@jupyterlab/codeeditor": ^4.1.5 + "@jupyterlab/inspector": ^4.1.5 + "@jupyterlab/rendermime": ^4.1.5 + "@jupyterlab/settingregistry": ^4.1.5 + "@jupyterlab/statedb": ^4.1.5 + "@jupyterlab/testing": ^4.1.5 + "@jupyterlab/translation": ^4.1.5 + "@jupyterlab/ui-components": ^4.1.5 "@lumino/algorithm": ^2.0.1 "@lumino/commands": ^2.2.0 "@lumino/coreutils": ^2.1.2 @@ -4644,13 +4644,13 @@ __metadata: languageName: unknown linkType: soft -"@jupyterlab/settingregistry@^4.1.0, @jupyterlab/settingregistry@workspace:packages/settingregistry": +"@jupyterlab/settingregistry@^4.1.5, @jupyterlab/settingregistry@workspace:packages/settingregistry": version: 0.0.0-use.local resolution: "@jupyterlab/settingregistry@workspace:packages/settingregistry" dependencies: - "@jupyterlab/nbformat": ^4.1.0 - "@jupyterlab/statedb": ^4.1.0 - "@jupyterlab/testing": ^4.1.0 + "@jupyterlab/nbformat": ^4.1.5 + "@jupyterlab/statedb": ^4.1.5 + "@jupyterlab/testing": ^4.1.5 "@lumino/commands": ^2.2.0 "@lumino/coreutils": ^2.1.2 "@lumino/disposable": ^2.1.2 @@ -4667,15 +4667,15 @@ __metadata: languageName: unknown linkType: soft -"@jupyterlab/shortcuts-extension@^4.1.0, @jupyterlab/shortcuts-extension@workspace:packages/shortcuts-extension, @jupyterlab/shortcuts-extension@~4.1.0": +"@jupyterlab/shortcuts-extension@^4.1.5, @jupyterlab/shortcuts-extension@workspace:packages/shortcuts-extension, @jupyterlab/shortcuts-extension@~4.1.5": version: 0.0.0-use.local resolution: "@jupyterlab/shortcuts-extension@workspace:packages/shortcuts-extension" dependencies: - "@jupyterlab/application": ^4.1.0 - "@jupyterlab/settingregistry": ^4.1.0 - "@jupyterlab/testing": ^4.1.0 - "@jupyterlab/translation": ^4.1.0 - "@jupyterlab/ui-components": ^4.1.0 + "@jupyterlab/application": ^4.1.5 + "@jupyterlab/settingregistry": ^4.1.5 + "@jupyterlab/testing": ^4.1.5 + "@jupyterlab/translation": ^4.1.5 + "@jupyterlab/ui-components": ^4.1.5 "@lumino/algorithm": ^2.0.1 "@lumino/commands": ^2.2.0 "@lumino/coreutils": ^2.1.2 @@ -4692,11 +4692,11 @@ __metadata: languageName: unknown linkType: soft -"@jupyterlab/statedb@^4.1.0, @jupyterlab/statedb@workspace:packages/statedb": +"@jupyterlab/statedb@^4.1.5, @jupyterlab/statedb@workspace:packages/statedb": version: 0.0.0-use.local resolution: "@jupyterlab/statedb@workspace:packages/statedb" dependencies: - "@jupyterlab/testing": ^4.1.0 + "@jupyterlab/testing": ^4.1.5 "@lumino/commands": ^2.2.0 "@lumino/coreutils": ^2.1.2 "@lumino/disposable": ^2.1.2 @@ -4710,15 +4710,15 @@ __metadata: languageName: unknown linkType: soft -"@jupyterlab/statusbar-extension@^4.1.0, @jupyterlab/statusbar-extension@workspace:packages/statusbar-extension, @jupyterlab/statusbar-extension@~4.1.0": +"@jupyterlab/statusbar-extension@^4.1.5, @jupyterlab/statusbar-extension@workspace:packages/statusbar-extension, @jupyterlab/statusbar-extension@~4.1.5": version: 0.0.0-use.local resolution: "@jupyterlab/statusbar-extension@workspace:packages/statusbar-extension" dependencies: - "@jupyterlab/application": ^4.1.0 - "@jupyterlab/apputils": ^4.2.0 - "@jupyterlab/settingregistry": ^4.1.0 - "@jupyterlab/statusbar": ^4.1.0 - "@jupyterlab/translation": ^4.1.0 + "@jupyterlab/application": ^4.1.5 + "@jupyterlab/apputils": ^4.2.5 + "@jupyterlab/settingregistry": ^4.1.5 + "@jupyterlab/statusbar": ^4.1.5 + "@jupyterlab/translation": ^4.1.5 "@types/react": ^18.0.26 "@types/react-dom": ^18.0.9 rimraf: ~5.0.5 @@ -4727,12 +4727,12 @@ __metadata: languageName: unknown linkType: soft -"@jupyterlab/statusbar@^4.1.0, @jupyterlab/statusbar@workspace:packages/statusbar": +"@jupyterlab/statusbar@^4.1.5, @jupyterlab/statusbar@workspace:packages/statusbar": version: 0.0.0-use.local resolution: "@jupyterlab/statusbar@workspace:packages/statusbar" dependencies: - "@jupyterlab/testing": ^4.1.0 - "@jupyterlab/ui-components": ^4.1.0 + "@jupyterlab/testing": ^4.1.5 + "@jupyterlab/ui-components": ^4.1.5 "@lumino/algorithm": ^2.0.1 "@lumino/coreutils": ^2.1.2 "@lumino/disposable": ^2.1.2 @@ -4751,27 +4751,27 @@ __metadata: version: 0.0.0-use.local resolution: "@jupyterlab/template@workspace:buildutils/template" dependencies: - "@jupyterlab/testing": ^4.1.0 + "@jupyterlab/testing": ^4.1.5 "@types/jest": ^29.2.0 rimraf: ~5.0.5 typescript: ~5.1.6 languageName: unknown linkType: soft -"@jupyterlab/terminal-extension@^4.1.0, @jupyterlab/terminal-extension@workspace:packages/terminal-extension, @jupyterlab/terminal-extension@~4.1.0": +"@jupyterlab/terminal-extension@^4.1.5, @jupyterlab/terminal-extension@workspace:packages/terminal-extension, @jupyterlab/terminal-extension@~4.1.5": version: 0.0.0-use.local resolution: "@jupyterlab/terminal-extension@workspace:packages/terminal-extension" dependencies: - "@jupyterlab/application": ^4.1.0 - "@jupyterlab/apputils": ^4.2.0 - "@jupyterlab/launcher": ^4.1.0 - "@jupyterlab/mainmenu": ^4.1.0 - "@jupyterlab/running": ^4.1.0 - "@jupyterlab/services": ^7.1.0 - "@jupyterlab/settingregistry": ^4.1.0 - "@jupyterlab/terminal": ^4.1.0 - "@jupyterlab/translation": ^4.1.0 - "@jupyterlab/ui-components": ^4.1.0 + "@jupyterlab/application": ^4.1.5 + "@jupyterlab/apputils": ^4.2.5 + "@jupyterlab/launcher": ^4.1.5 + "@jupyterlab/mainmenu": ^4.1.5 + "@jupyterlab/running": ^4.1.5 + "@jupyterlab/services": ^7.1.5 + "@jupyterlab/settingregistry": ^4.1.5 + "@jupyterlab/terminal": ^4.1.5 + "@jupyterlab/translation": ^4.1.5 + "@jupyterlab/ui-components": ^4.1.5 "@lumino/widgets": ^2.3.1 "@types/webpack-env": ^1.18.0 rimraf: ~5.0.5 @@ -4780,14 +4780,14 @@ __metadata: languageName: unknown linkType: soft -"@jupyterlab/terminal@^4.1.0, @jupyterlab/terminal@workspace:packages/terminal": +"@jupyterlab/terminal@^4.1.5, @jupyterlab/terminal@workspace:packages/terminal": version: 0.0.0-use.local resolution: "@jupyterlab/terminal@workspace:packages/terminal" dependencies: - "@jupyterlab/apputils": ^4.2.0 - "@jupyterlab/services": ^7.1.0 - "@jupyterlab/testing": ^4.1.0 - "@jupyterlab/translation": ^4.1.0 + "@jupyterlab/apputils": ^4.2.5 + "@jupyterlab/services": ^7.1.5 + "@jupyterlab/testing": ^4.1.5 + "@jupyterlab/translation": ^4.1.5 "@lumino/coreutils": ^2.1.2 "@lumino/domutils": ^2.0.1 "@lumino/messaging": ^2.0.1 @@ -4806,13 +4806,13 @@ __metadata: languageName: unknown linkType: soft -"@jupyterlab/testing@^4.1.0, @jupyterlab/testing@workspace:packages/testing": +"@jupyterlab/testing@^4.1.5, @jupyterlab/testing@workspace:packages/testing": version: 0.0.0-use.local resolution: "@jupyterlab/testing@workspace:packages/testing" dependencies: "@babel/core": ^7.10.2 "@babel/preset-env": ^7.10.2 - "@jupyterlab/coreutils": ^6.1.0 + "@jupyterlab/coreutils": ^6.1.5 "@lumino/coreutils": ^2.1.2 "@lumino/signaling": ^2.1.2 "@types/jest": ^29.2.0 @@ -4835,74 +4835,74 @@ __metadata: languageName: unknown linkType: soft -"@jupyterlab/testutils@^4.1.0, @jupyterlab/testutils@workspace:testutils": +"@jupyterlab/testutils@^4.1.5, @jupyterlab/testutils@workspace:testutils": version: 0.0.0-use.local resolution: "@jupyterlab/testutils@workspace:testutils" dependencies: - "@jupyterlab/application": ^4.1.0 - "@jupyterlab/apputils": ^4.2.0 - "@jupyterlab/notebook": ^4.1.0 - "@jupyterlab/rendermime": ^4.1.0 - "@jupyterlab/testing": ^4.1.0 + "@jupyterlab/application": ^4.1.5 + "@jupyterlab/apputils": ^4.2.5 + "@jupyterlab/notebook": ^4.1.5 + "@jupyterlab/rendermime": ^4.1.5 + "@jupyterlab/testing": ^4.1.5 rimraf: ~5.0.5 typescript: ~5.1.6 languageName: unknown linkType: soft -"@jupyterlab/theme-dark-extension@^4.1.0, @jupyterlab/theme-dark-extension@workspace:packages/theme-dark-extension, @jupyterlab/theme-dark-extension@~4.1.0": +"@jupyterlab/theme-dark-extension@^4.1.5, @jupyterlab/theme-dark-extension@workspace:packages/theme-dark-extension, @jupyterlab/theme-dark-extension@~4.1.5": version: 0.0.0-use.local resolution: "@jupyterlab/theme-dark-extension@workspace:packages/theme-dark-extension" dependencies: - "@jupyterlab/application": ^4.1.0 - "@jupyterlab/apputils": ^4.2.0 - "@jupyterlab/translation": ^4.1.0 + "@jupyterlab/application": ^4.1.5 + "@jupyterlab/apputils": ^4.2.5 + "@jupyterlab/translation": ^4.1.5 rimraf: ~5.0.5 typedoc: ~0.24.7 typescript: ~5.1.6 languageName: unknown linkType: soft -"@jupyterlab/theme-light-extension@^4.1.0, @jupyterlab/theme-light-extension@workspace:packages/theme-light-extension, @jupyterlab/theme-light-extension@~4.1.0": +"@jupyterlab/theme-light-extension@^4.1.5, @jupyterlab/theme-light-extension@workspace:packages/theme-light-extension, @jupyterlab/theme-light-extension@~4.1.5": version: 0.0.0-use.local resolution: "@jupyterlab/theme-light-extension@workspace:packages/theme-light-extension" dependencies: - "@jupyterlab/application": ^4.1.0 - "@jupyterlab/apputils": ^4.2.0 - "@jupyterlab/translation": ^4.1.0 + "@jupyterlab/application": ^4.1.5 + "@jupyterlab/apputils": ^4.2.5 + "@jupyterlab/translation": ^4.1.5 rimraf: ~5.0.5 typedoc: ~0.24.7 typescript: ~5.1.6 languageName: unknown linkType: soft -"@jupyterlab/toc-extension@^6.1.0, @jupyterlab/toc-extension@workspace:packages/toc-extension, @jupyterlab/toc-extension@~6.1.0": +"@jupyterlab/toc-extension@^6.1.5, @jupyterlab/toc-extension@workspace:packages/toc-extension, @jupyterlab/toc-extension@~6.1.5": version: 0.0.0-use.local resolution: "@jupyterlab/toc-extension@workspace:packages/toc-extension" dependencies: - "@jupyterlab/application": ^4.1.0 - "@jupyterlab/settingregistry": ^4.1.0 - "@jupyterlab/toc": ^6.1.0 - "@jupyterlab/translation": ^4.1.0 - "@jupyterlab/ui-components": ^4.1.0 + "@jupyterlab/application": ^4.1.5 + "@jupyterlab/settingregistry": ^4.1.5 + "@jupyterlab/toc": ^6.1.5 + "@jupyterlab/translation": ^4.1.5 + "@jupyterlab/ui-components": ^4.1.5 rimraf: ~5.0.5 typedoc: ~0.24.7 typescript: ~5.1.6 languageName: unknown linkType: soft -"@jupyterlab/toc@^6.1.0, @jupyterlab/toc@workspace:packages/toc": +"@jupyterlab/toc@^6.1.5, @jupyterlab/toc@workspace:packages/toc": version: 0.0.0-use.local resolution: "@jupyterlab/toc@workspace:packages/toc" dependencies: - "@jupyterlab/apputils": ^4.2.0 - "@jupyterlab/coreutils": ^6.1.0 - "@jupyterlab/docregistry": ^4.1.0 - "@jupyterlab/observables": ^5.1.0 - "@jupyterlab/rendermime": ^4.1.0 - "@jupyterlab/rendermime-interfaces": ^3.9.0 - "@jupyterlab/testing": ^4.1.0 - "@jupyterlab/translation": ^4.1.0 - "@jupyterlab/ui-components": ^4.1.0 + "@jupyterlab/apputils": ^4.2.5 + "@jupyterlab/coreutils": ^6.1.5 + "@jupyterlab/docregistry": ^4.1.5 + "@jupyterlab/observables": ^5.1.5 + "@jupyterlab/rendermime": ^4.1.5 + "@jupyterlab/rendermime-interfaces": ^3.9.5 + "@jupyterlab/testing": ^4.1.5 + "@jupyterlab/translation": ^4.1.5 + "@jupyterlab/ui-components": ^4.1.5 "@lumino/coreutils": ^2.1.2 "@lumino/disposable": ^2.1.2 "@lumino/messaging": ^2.0.1 @@ -4918,20 +4918,20 @@ __metadata: languageName: unknown linkType: soft -"@jupyterlab/tooltip-extension@^4.1.0, @jupyterlab/tooltip-extension@workspace:packages/tooltip-extension, @jupyterlab/tooltip-extension@~4.1.0": +"@jupyterlab/tooltip-extension@^4.1.5, @jupyterlab/tooltip-extension@workspace:packages/tooltip-extension, @jupyterlab/tooltip-extension@~4.1.5": version: 0.0.0-use.local resolution: "@jupyterlab/tooltip-extension@workspace:packages/tooltip-extension" dependencies: - "@jupyterlab/application": ^4.1.0 - "@jupyterlab/codeeditor": ^4.1.0 - "@jupyterlab/console": ^4.1.0 - "@jupyterlab/coreutils": ^6.1.0 - "@jupyterlab/fileeditor": ^4.1.0 - "@jupyterlab/notebook": ^4.1.0 - "@jupyterlab/rendermime": ^4.1.0 - "@jupyterlab/services": ^7.1.0 - "@jupyterlab/tooltip": ^4.1.0 - "@jupyterlab/translation": ^4.1.0 + "@jupyterlab/application": ^4.1.5 + "@jupyterlab/codeeditor": ^4.1.5 + "@jupyterlab/console": ^4.1.5 + "@jupyterlab/coreutils": ^6.1.5 + "@jupyterlab/fileeditor": ^4.1.5 + "@jupyterlab/notebook": ^4.1.5 + "@jupyterlab/rendermime": ^4.1.5 + "@jupyterlab/services": ^7.1.5 + "@jupyterlab/tooltip": ^4.1.5 + "@jupyterlab/translation": ^4.1.5 "@lumino/algorithm": ^2.0.1 "@lumino/coreutils": ^2.1.2 "@lumino/widgets": ^2.3.1 @@ -4941,14 +4941,14 @@ __metadata: languageName: unknown linkType: soft -"@jupyterlab/tooltip@^4.1.0, @jupyterlab/tooltip@workspace:packages/tooltip": +"@jupyterlab/tooltip@^4.1.5, @jupyterlab/tooltip@workspace:packages/tooltip": version: 0.0.0-use.local resolution: "@jupyterlab/tooltip@workspace:packages/tooltip" dependencies: - "@jupyterlab/codeeditor": ^4.1.0 - "@jupyterlab/rendermime": ^4.1.0 - "@jupyterlab/services": ^7.1.0 - "@jupyterlab/ui-components": ^4.1.0 + "@jupyterlab/codeeditor": ^4.1.5 + "@jupyterlab/rendermime": ^4.1.5 + "@jupyterlab/services": ^7.1.5 + "@jupyterlab/ui-components": ^4.1.5 "@lumino/coreutils": ^2.1.2 "@lumino/messaging": ^2.0.1 "@lumino/widgets": ^2.3.1 @@ -4958,29 +4958,29 @@ __metadata: languageName: unknown linkType: soft -"@jupyterlab/translation-extension@^4.1.0, @jupyterlab/translation-extension@workspace:packages/translation-extension, @jupyterlab/translation-extension@~4.1.0": +"@jupyterlab/translation-extension@^4.1.5, @jupyterlab/translation-extension@workspace:packages/translation-extension, @jupyterlab/translation-extension@~4.1.5": version: 0.0.0-use.local resolution: "@jupyterlab/translation-extension@workspace:packages/translation-extension" dependencies: - "@jupyterlab/application": ^4.1.0 - "@jupyterlab/apputils": ^4.2.0 - "@jupyterlab/mainmenu": ^4.1.0 - "@jupyterlab/settingregistry": ^4.1.0 - "@jupyterlab/translation": ^4.1.0 + "@jupyterlab/application": ^4.1.5 + "@jupyterlab/apputils": ^4.2.5 + "@jupyterlab/mainmenu": ^4.1.5 + "@jupyterlab/settingregistry": ^4.1.5 + "@jupyterlab/translation": ^4.1.5 rimraf: ~5.0.5 typescript: ~5.1.6 languageName: unknown linkType: soft -"@jupyterlab/translation@^4.1.0, @jupyterlab/translation@workspace:packages/translation": +"@jupyterlab/translation@^4.1.5, @jupyterlab/translation@workspace:packages/translation": version: 0.0.0-use.local resolution: "@jupyterlab/translation@workspace:packages/translation" dependencies: - "@jupyterlab/coreutils": ^6.1.0 - "@jupyterlab/rendermime-interfaces": ^3.9.0 - "@jupyterlab/services": ^7.1.0 - "@jupyterlab/statedb": ^4.1.0 - "@jupyterlab/testing": ^4.1.0 + "@jupyterlab/coreutils": ^6.1.5 + "@jupyterlab/rendermime-interfaces": ^3.9.5 + "@jupyterlab/services": ^7.1.5 + "@jupyterlab/statedb": ^4.1.5 + "@jupyterlab/testing": ^4.1.5 "@lumino/coreutils": ^2.1.2 "@types/jest": ^29.2.0 jest: ^29.2.0 @@ -4989,29 +4989,29 @@ __metadata: languageName: unknown linkType: soft -"@jupyterlab/ui-components-extension@^4.1.0, @jupyterlab/ui-components-extension@workspace:packages/ui-components-extension, @jupyterlab/ui-components-extension@~4.1.0": +"@jupyterlab/ui-components-extension@^4.1.5, @jupyterlab/ui-components-extension@workspace:packages/ui-components-extension, @jupyterlab/ui-components-extension@~4.1.5": version: 0.0.0-use.local resolution: "@jupyterlab/ui-components-extension@workspace:packages/ui-components-extension" dependencies: - "@jupyterlab/application": ^4.1.0 - "@jupyterlab/ui-components": ^4.1.0 + "@jupyterlab/application": ^4.1.5 + "@jupyterlab/ui-components": ^4.1.5 rimraf: ~5.0.5 typedoc: ~0.24.7 typescript: ~5.1.6 languageName: unknown linkType: soft -"@jupyterlab/ui-components@^4.1.0, @jupyterlab/ui-components@workspace:packages/ui-components": +"@jupyterlab/ui-components@^4.1.5, @jupyterlab/ui-components@workspace:packages/ui-components": version: 0.0.0-use.local resolution: "@jupyterlab/ui-components@workspace:packages/ui-components" dependencies: "@jupyter/react-components": ^0.15.2 "@jupyter/web-components": ^0.15.2 - "@jupyterlab/coreutils": ^6.1.0 - "@jupyterlab/observables": ^5.1.0 - "@jupyterlab/rendermime-interfaces": ^3.9.0 - "@jupyterlab/testing": ^4.1.0 - "@jupyterlab/translation": ^4.1.0 + "@jupyterlab/coreutils": ^6.1.5 + "@jupyterlab/observables": ^5.1.5 + "@jupyterlab/rendermime-interfaces": ^3.9.5 + "@jupyterlab/testing": ^4.1.5 + "@jupyterlab/translation": ^4.1.5 "@lumino/algorithm": ^2.0.1 "@lumino/commands": ^2.2.0 "@lumino/coreutils": ^2.1.2 @@ -5039,12 +5039,12 @@ __metadata: languageName: unknown linkType: soft -"@jupyterlab/vega5-extension@^4.1.0, @jupyterlab/vega5-extension@workspace:packages/vega5-extension, @jupyterlab/vega5-extension@~4.1.0": +"@jupyterlab/vega5-extension@^4.1.5, @jupyterlab/vega5-extension@workspace:packages/vega5-extension, @jupyterlab/vega5-extension@~4.1.5": version: 0.0.0-use.local resolution: "@jupyterlab/vega5-extension@workspace:packages/vega5-extension" dependencies: - "@jupyterlab/rendermime-interfaces": ^3.9.0 - "@jupyterlab/testutils": ^4.1.0 + "@jupyterlab/rendermime-interfaces": ^3.9.5 + "@jupyterlab/testutils": ^4.1.5 "@lumino/coreutils": ^2.1.2 "@lumino/widgets": ^2.3.1 "@types/jest": ^29.2.0 @@ -11267,14 +11267,15 @@ __metadata: languageName: node linkType: hard -"es5-ext@npm:^0.10.35, es5-ext@npm:^0.10.46, es5-ext@npm:^0.10.50, es5-ext@npm:^0.10.53, es5-ext@npm:~0.10.14, es5-ext@npm:~0.10.2, es5-ext@npm:~0.10.46": - version: 0.10.62 - resolution: "es5-ext@npm:0.10.62" +"es5-ext@npm:^0.10.35, es5-ext@npm:^0.10.46, es5-ext@npm:^0.10.50, es5-ext@npm:^0.10.53, es5-ext@npm:^0.10.62, es5-ext@npm:~0.10.14, es5-ext@npm:~0.10.2, es5-ext@npm:~0.10.46": + version: 0.10.63 + resolution: "es5-ext@npm:0.10.63" dependencies: es6-iterator: ^2.0.3 es6-symbol: ^3.1.3 + esniff: ^2.0.1 next-tick: ^1.1.0 - checksum: 25f42f6068cfc6e393cf670bc5bba249132c5f5ec2dd0ed6e200e6274aca2fed8e9aec8a31c76031744c78ca283c57f0b41c7e737804c6328c7b8d3fbcba7983 + checksum: 3bf04d9bac12a14e716a0a00b1706f538a3211da82703babd3e907deaeadaa30eab71202785027058d44d2a7c0e92e34631fb03fa63ef1097191e88de5223fda languageName: node linkType: hard @@ -11528,6 +11529,18 @@ __metadata: languageName: node linkType: hard +"esniff@npm:^2.0.1": + version: 2.0.1 + resolution: "esniff@npm:2.0.1" + dependencies: + d: ^1.0.1 + es5-ext: ^0.10.62 + event-emitter: ^0.3.5 + type: ^2.7.2 + checksum: d814c0e5c39bce9925b2e65b6d8767af72c9b54f35a65f9f3d6e8c606dce9aebe35a9599d30f15b0807743f88689f445163cfb577a425de4fb8c3c5bc16710cc + languageName: node + linkType: hard + "espree@npm:^9.6.0, espree@npm:^9.6.1": version: 9.6.1 resolution: "espree@npm:9.6.1" @@ -13292,9 +13305,9 @@ __metadata: linkType: hard "ip@npm:^2.0.0": - version: 2.0.0 - resolution: "ip@npm:2.0.0" - checksum: cfcfac6b873b701996d71ec82a7dd27ba92450afdb421e356f44044ed688df04567344c36cbacea7d01b1c39a4c732dc012570ebe9bebfb06f27314bca625349 + version: 2.0.1 + resolution: "ip@npm:2.0.1" + checksum: d765c9fd212b8a99023a4cde6a558a054c298d640fec1020567494d257afd78ca77e37126b1a3ef0e053646ced79a816bf50621d38d5e768cdde0431fa3b0d35 languageName: node linkType: hard @@ -16272,7 +16285,7 @@ __metadata: version: 0.0.0-use.local resolution: "node-example@workspace:packages/services/examples/node" dependencies: - "@jupyterlab/services": ^7.1.0 + "@jupyterlab/services": ^7.1.5 rimraf: ~5.0.5 ws: ^8.11.0 languageName: unknown