pax_global_header00006660000000000000000000000064145002672200014510gustar00rootroot0000000000000052 comment=9cf8348dc8ebb94f41ee75260a6fe85f217bafaa ipywidgets-8.1.1/000077500000000000000000000000001450026722000137075ustar00rootroot00000000000000ipywidgets-8.1.1/.binder/000077500000000000000000000000001450026722000152305ustar00rootroot00000000000000ipywidgets-8.1.1/.binder/README000066400000000000000000000006721450026722000161150ustar00rootroot00000000000000This directory holds configuration files for https://mybinder.org/. The interactive notebooks can be accessed with this link: https://mybinder.org/v2/gh/jupyter-widgets/ipywidgets/main?filepath=docs/source/examples To check out a different version, just replace `main` with the desired branch/tag name or commit hash. To use JupyterLab, use: https://mybinder.org/v2/gh/jupyter-widgets/ipywidgets/main?urlpath=lab/tree/docs/source/examples ipywidgets-8.1.1/.binder/postBuild000077500000000000000000000001211450026722000171150ustar00rootroot00000000000000#!/bin/sh set -e npm install -g yarn yarn set version stable ./dev-install.sh ipywidgets-8.1.1/.binder/requirements.txt000066400000000000000000000001651450026722000205160ustar00rootroot00000000000000bqplot ipyleaflet jupyterlab-myst jupyterlab==4.0.2 matplotlib networkx numpy pandas scikit-image scikit-learn sympy ipywidgets-8.1.1/.eslintrc.json000066400000000000000000000016251450026722000165070ustar00rootroot00000000000000{ "root": true, "extends": [ "eslint:recommended", "plugin:@typescript-eslint/eslint-recommended", "plugin:@typescript-eslint/recommended", "prettier" ], "rules": { "@typescript-eslint/naming-convention": [ "error", { "selector": "interface", "format": ["PascalCase"], "custom": { "regex": "^I[A-Z]", "match": true } } ], "@typescript-eslint/no-unused-vars": ["warn", { "args": "none" }], "@typescript-eslint/no-use-before-define": "off", "@typescript-eslint/no-explicit-any": "off", "@typescript-eslint/no-non-null-assertion": "off", "@typescript-eslint/no-namespace": "off", "@typescript-eslint/no-var-requires": "off", "@typescript-eslint/ban-types": "off", "@typescript-eslint/camelcase": "off" }, "parser": "@typescript-eslint/parser", "plugins": ["@typescript-eslint"] } ipywidgets-8.1.1/.github/000077500000000000000000000000001450026722000152475ustar00rootroot00000000000000ipywidgets-8.1.1/.github/ISSUE_TEMPLATE/000077500000000000000000000000001450026722000174325ustar00rootroot00000000000000ipywidgets-8.1.1/.github/ISSUE_TEMPLATE/bug_report.md000066400000000000000000000034411450026722000221260ustar00rootroot00000000000000--- name: Bug report about: Create a report to help us improve --- ## Description ## Reproduce 1. Go to '...' 2. Click on '...' 3. Scroll down to '...' 4. See error '...' ## Expected behavior ## Context - ipywidgets version - Operating System and version: - Browser and version:
Troubleshoot Output
Paste the output from running `jupyter troubleshoot` from the command line here.
You may want to sanitize the paths in the output.
Command Line Output
Paste the output from your command line running `jupyter lab` (or `jupyter notebook` if you use notebook) here, use `--debug` if possible.
Browser Output
Paste the output from your browser Javascript console here.
### If using JupyterLab - JupyterLab version:
Installed Labextensions
Paste the output from your command line running `jupyter labextension list`.
ipywidgets-8.1.1/.github/ISSUE_TEMPLATE/config.yml000066400000000000000000000007201450026722000214210ustar00rootroot00000000000000# Ref: https://help.github.com/en/github/building-a-strong-community/configuring-issue-templates-for-your-repository#configuring-the-template-chooser blank_issues_enabled: true # default contact_links: - name: Question/Support/Other url: https://discourse.jupyter.org/c/widgets/46 about: If you have a usage question - name: Chat with devs url: https://gitter.im/jupyter-widgets/Lobby about: Ask short questions about using or creating widgets ipywidgets-8.1.1/.github/ISSUE_TEMPLATE/custom_widget_issue.md000066400000000000000000000012541450026722000240430ustar00rootroot00000000000000--- name: Custom Widget about: Issues or questions related to developing a custom widget labels: 'Custom Widget' --- ipywidgets-8.1.1/.github/ISSUE_TEMPLATE/documentation.md000066400000000000000000000014161450026722000226270ustar00rootroot00000000000000--- name: Documentation improvement about: Create a report to help us improve the documentation labels: docs --- ### Problem ### Suggested Improvement ipywidgets-8.1.1/.github/ISSUE_TEMPLATE/feature_request.md000066400000000000000000000020751450026722000231630ustar00rootroot00000000000000--- name: Feature Request about: Suggest a way to improve ipywidgets labels: type:Enhancement --- ### Problem ### Proposed Solution ### Additional context ipywidgets-8.1.1/.github/dependabot.yml000066400000000000000000000012751450026722000201040ustar00rootroot00000000000000# To get started with Dependabot version updates, you'll need to specify which # package ecosystems to update and where the package manifests are located. # Please see the documentation for all configuration options: # https://help.github.com/github/administering-a-repository/configuration-options-for-dependency-updates version: 2 # PR limit is set to zero to get only security updates # Ref https://github.com/dependabot/dependabot-core/issues/2521#issuecomment-863261500 updates: - package-ecosystem: npm directory: '/' schedule: interval: 'daily' open-pull-requests-limit: 0 # in case you don't want to enable version updates allow: - dependency-type: 'production' ipywidgets-8.1.1/.github/workflows/000077500000000000000000000000001450026722000173045ustar00rootroot00000000000000ipywidgets-8.1.1/.github/workflows/answered.yml000066400000000000000000000014271450026722000216430ustar00rootroot00000000000000# This action automatically schedules issues to be closed that have been # labeled as answered if there is no activity on them for 30 days. This takes # care of the common usecase of an issue being answered to the best of our # ability and no other follow-up from the submitter. name: 'Close answered issues' on: schedule: - cron: '30 1 * * *' permissions: issues: write jobs: stale: runs-on: ubuntu-latest steps: - uses: actions/stale@v3 with: days-before-pr-stale: -1 days-before-pr-close: -1 skip-stale-issue-message: true days-before-issue-stale: 30 days-before-issue-close: 7 stale-issue-label: 'closing as answered' stale-issue-message: '.' only-issue-labels: 'answered' ipywidgets-8.1.1/.github/workflows/binder-on-pr.yml000066400000000000000000000021621450026722000223240ustar00rootroot00000000000000# Reference https://mybinder.readthedocs.io/en/latest/howto/gh-actions-badges.html name: Binder Badge on: pull_request_target: types: [opened] permissions: pull-requests: write jobs: binder: runs-on: ubuntu-latest steps: - name: comment on PR with Binder link uses: actions/github-script@v6 with: github-token: ${{secrets.GITHUB_TOKEN}} script: | var PR_HEAD_USERREPO = process.env.PR_HEAD_USERREPO; var PR_HEAD_REF = process.env.PR_HEAD_REF; github.rest.issues.createComment({ issue_number: context.issue.number, owner: context.repo.owner, repo: context.repo.repo, body: `[![Binder](https://mybinder.org/badge_logo.svg)](https://mybinder.org/v2/gh/${PR_HEAD_USERREPO}/${PR_HEAD_REF}?urlpath=lab/tree/docs/source/examples/) :point_left: Launch a binder notebook on branch _${PR_HEAD_USERREPO}/${PR_HEAD_REF}_` }) env: PR_HEAD_REF: ${{ github.event.pull_request.head.ref }} PR_HEAD_USERREPO: ${{ github.event.pull_request.head.repo.full_name }} ipywidgets-8.1.1/.github/workflows/build.yml000066400000000000000000000032171450026722000211310ustar00rootroot00000000000000name: Build jupyterlab_widgets on: push: branches: main pull_request: branches: '*' jobs: build: runs-on: ubuntu-latest steps: - name: Checkout uses: actions/checkout@v3 - name: Install Python uses: actions/setup-python@v4 with: python-version: '3.8' architecture: 'x64' - name: Cache pip on Linux uses: actions/cache@v3 if: startsWith(runner.os, 'Linux') with: path: ~/.cache/pip key: ${{ runner.os }}-pip-${{ matrix.python }}-${{ hashFiles('**/requirements.txt') }} restore-keys: | ${{ runner.os }}-pip-${{ matrix.python }} - name: Install build dependencies run: | python -m pip install jupyterlab jupyter_packaging~=0.10 - name: Install node dependencies run: | jlpm - name: Build node packages run: | jlpm build - name: Install jupyterlab_widgets run: | cd python/jupyterlab_widgets pip install -vv -e . --no-deps - name: Install widgetsnbextension run: | cd python/widgetsnbextension pip install -vv -e . --no-deps - name: Install ipywidgets run: | cd python/ipywidgets pip install -vv . --no-deps - name: Install development extension run: | cd python/jupyterlab_widgets jupyter labextension develop . --overwrite - name: List labextensions run: | jupyter labextension list - name: Run JupyterLab browser check run: | python -m jupyterlab.browser_check ipywidgets-8.1.1/.github/workflows/devinstall.yml000066400000000000000000000020021450026722000221660ustar00rootroot00000000000000name: Run the dev-install script on: push: branches: main pull_request: branches: '*' jobs: devinstall: runs-on: ubuntu-latest steps: - name: Checkout uses: actions/checkout@v3 - name: Install Python uses: actions/setup-python@v4 with: python-version: '3.8' architecture: 'x64' - name: Cache pip on Linux uses: actions/cache@v3 if: startsWith(runner.os, 'Linux') with: path: ~/.cache/pip key: ${{ runner.os }}-pip-${{ matrix.python }}-${{ hashFiles('**/requirements.txt') }} restore-keys: | ${{ runner.os }}-pip-${{ matrix.python }} - name: Install dependencies run: | python -m pip install notebook jupyterlab notebook~=6.0 jupyter_packaging~=0.10 - name: Run the dev-install script run: | ./dev-install.sh jupyter nbextension list jupyter labextension list python -m jupyterlab.browser_check ipywidgets-8.1.1/.github/workflows/lint.yml000066400000000000000000000010041450026722000207700ustar00rootroot00000000000000name: Lint on: [push, pull_request] jobs: lint: name: Lint runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 - name: Install Python uses: actions/setup-python@v4 with: python-version: '3.8' architecture: 'x64' - name: Install dependencies run: | python -m pip install jupyterlab - name: yarn install, integrity, lint run: | jlpm --immutable jlpm integrity jlpm lint:check ipywidgets-8.1.1/.github/workflows/lock.yml000066400000000000000000000006041450026722000207570ustar00rootroot00000000000000name: 'Lock Closed Threads' on: schedule: - cron: '0 0 * * *' jobs: lock: runs-on: ubuntu-latest steps: - uses: dessant/lock-threads@v2 with: github-token: ${{ github.token }} issue-lock-inactive-days: '90' issue-lock-labels: 'resolved-locked' pr-lock-inactive-days: '90' pr-lock-labels: 'resolved-locked' ipywidgets-8.1.1/.github/workflows/packaging.yml000066400000000000000000000075131450026722000217610ustar00rootroot00000000000000name: Packaging on: push: branches: - main pull_request: branches: '*' env: PIP_DISABLE_PIP_VERSION_CHECK: 1 defaults: run: shell: bash -l {0} jobs: build: runs-on: ubuntu-latest steps: - name: Checkout uses: actions/checkout@v3 - name: Install Python uses: actions/setup-python@v4 with: python-version: '3.11' architecture: 'x64' - uses: actions/cache@v3 with: path: ~/.cache/pip key: ${{ runner.os }}-pip-${{ hashFiles('**/setup.py') }} restore-keys: | ${{ runner.os }}-pip- - name: Install dependencies run: | python -m pip install --upgrade pip wheel build jupyterlab - name: Build PyPI distributions for ipywidgets run: | mkdir -p dist/ cd python/ipywidgets pyproject-build . cp ./dist/* ../../dist - name: Install node dependencies run: | jlpm - name: Build JS run: | jlpm build - name: Build PyPI distributions for jupyterlab_widgets run: | cd python/jupyterlab_widgets pyproject-build . cp ./dist/* ../../dist - name: Build PyPI distributions for widgetsnbextension run: | cd python/widgetsnbextension pyproject-build . cp ./dist/* ../../dist - name: Build checksum file run: | cd dist sha256sum * | tee SHA256SUMS - name: Upload distributions uses: actions/upload-artifact@v3 with: name: dist ${{ github.run_number }} path: ./dist install: runs-on: ${{ matrix.os }}-latest needs: [build] strategy: fail-fast: false matrix: os: [ubuntu, windows] python: ['3.7', '3.10'] dist: ['ipywidgets*.tar.gz'] include: - python: '3.10' dist: 'jupyterlab_widgets*.tar.gz' os: 'ubuntu' - python: '3.10' dist: 'widgetsnbextension*.tar.gz' os: 'ubuntu' - python: '3.10' dist: 'ipywidgets*.whl' os: 'ubuntu' steps: - name: Install Python uses: actions/setup-python@v4 with: python-version: ${{ matrix.python }} architecture: 'x64' - name: Checkout # For the cache keys uses: actions/checkout@v3 - name: Get pip cache dir id: pip-cache run: | echo "::set-output name=dir::$(pip cache dir)" - name: pip cache uses: actions/cache@v3 with: path: ${{ steps.pip-cache.outputs.dir }} key: ${{ runner.os }}-pip-${{ hashFiles('**/setup.py') }} restore-keys: | ${{ runner.os }}-pip- - name: Install the prerequisites run: | python -m pip install pip - uses: actions/download-artifact@v3 with: name: dist ${{ github.run_number }} path: ./dist - name: Install the package run: | cd dist python -m pip install -vv ${{ matrix.dist }} - name: Validate environment run: | python -m pip freeze python -m pip check - name: Check the JupyterLab extension is installed if: matrix.dist != 'widgetsnbextension*.tar.gz' run: | python -m pip install jupyterlab~=3.0 jupyter labextension list jupyter labextension list 2>&1 | grep -ie "@jupyter-widgets/jupyterlab-manager.*enabled.*ok" - - name: Check the Classic Notebook extension is installed if: matrix.dist != 'jupyterlab_widgets*.tar.gz' run: | python -m pip install notebook~=6.0 jupyter nbextension list jupyter nbextension list 2>&1 | grep -ie "jupyter-js-widgets/extension.*enabled" - ipywidgets-8.1.1/.github/workflows/tests.yml000066400000000000000000000126531450026722000212000ustar00rootroot00000000000000name: Test on: [push, pull_request] jobs: docs: name: Documentation runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 - name: Set up Python uses: actions/setup-python@v4 with: python-version: 3.8 cache: 'pip' cache-dependency-path: | **/setup.cfg **/requirements*.txt - name: Install dependencies run: | sudo apt-get install -y pandoc python -m pip install --upgrade pip python -m pip install file://$PWD/python/ipywidgets#egg=ipywidgets python -m pip install -r ./docs/requirements.txt - name: Build docs run: | cd docs/source python -m sphinx -T -E -b html -d ../build/doctrees -D language=en . ../build/html js: name: JavaScript runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 - name: Set up Python uses: actions/setup-python@v4 with: python-version: 3.8 cache: 'pip' cache-dependency-path: | **/setup.cfg **/requirements*.txt - name: Install dependencies run: | python -m pip install --upgrade pip python -m pip install jupyterlab==4.0.0 - name: yarn install, build, test run: | jlpm --immutable jlpm build jlpm build:examples pushd packages/base jlpm test:unit:firefox:headless popd pushd packages/base-manager jlpm test:unit:firefox:headless popd pushd packages/controls jlpm test:unit:firefox:headless popd pushd packages/html-manager jlpm test:unit:firefox:headless popd pushd examples/web1 jlpm test:firefox:headless popd env: CI: true python: name: Python runs-on: ubuntu-latest strategy: max-parallel: 4 matrix: python-version: ['3.8', '3.9', '3.10', '3.11'] steps: - uses: actions/checkout@v3 - name: Set up Python ${{ matrix.python-version }} uses: actions/setup-python@v4 with: python-version: ${{ matrix.python-version }} cache: 'pip' cache-dependency-path: | **/setup.cfg **/requirements*.txt - name: Install dependencies run: | python -m pip install --upgrade pip pip install file://$PWD/python/ipywidgets#egg=ipywidgets[test] - name: Test with pytest run: | pip install pytest cd python/ipywidgets pytest --cov=ipywidgets ipywidgets spec: name: Message Specification runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 - name: Set up Python uses: actions/setup-python@v4 with: python-version: 3.8 cache: 'pip' cache-dependency-path: | **/setup.cfg **/requirements*.txt - name: Install Python dependencies run: | python -m pip install --upgrade pip pip install jupyterlab file://$PWD/python/ipywidgets#egg=ipywidgets[test] - name: Install JS dependencies run: | jlpm - name: Compare spec with latest version run: | python ./packages/schema/generate-spec.py -f markdown spec.md jlpm prettier diff -u ./packages/schema/jupyterwidgetmodels.latest.md ./spec.md ui-test: name: Visual Regression runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 - name: Set up Python uses: actions/setup-python@v4 with: python-version: '3.11' cache: 'pip' cache-dependency-path: | **/setup.cfg **/requirements*.txt - name: Install dependencies run: | python -m pip install --upgrade pip python -m pip install -U jupyterlab==4.0.0 jupyter-packaging~=0.10 - name: Build and Install ipywidgets run: | jlpm --immutable jlpm build - name: Build the extension run: | cd python/ipywidgets pip install . cd ../.. jlpm jlpm build cd python/jupyterlab_widgets pwd pip install -e . jupyter labextension develop . --overwrite jupyter labextension list - name: Install Test Dependencies run: | jlpm --immutable npx playwright install chromium working-directory: ui-tests - name: Execute integration tests shell: bash -l {0} working-directory: ui-tests run: | npx playwright test - name: Upload Playwright Test assets if: always() uses: actions/upload-artifact@v3 with: name: ipywidgets-test-assets path: | ui-tests/test-results - name: Upload Playwright Test report if: always() uses: actions/upload-artifact@v3 with: name: ipywidgets-test-report path: | ui-tests/playwright-report - name: Update snapshots if: failure() working-directory: ui-tests run: | jlpm test:update - name: Upload updated snapshots if: failure() uses: actions/upload-artifact@v3 with: name: ipywidgets-updated-snapshots path: ui-tests/tests ipywidgets-8.1.1/.gitignore000066400000000000000000000012051450026722000156750ustar00rootroot00000000000000MANIFEST build dist _build docs/man/*.gz docs/source/api/generated docs/source/.cache *.doit.db _contents node_modules *.py[co] __pycache__ *.egg-info *~ *.bak .ipynb_checkpoints .tox .DS_Store \#*# .#* .coverage .xunit.xml .tern-project npm-debug.log .pytest_cache .vscode/* !.vscode/extensions.json # Generated files python/widgetsnbextension/widgetsnbextension/static python/jupyterlab_widgets/labextension/ packages/controls/css/nouislider.css index.built.js index.built.js.map **/es5/ **/built **/lib/ temp/* *.tsbuildinfo ui-tests/test-results ui-tests/playwright-report **/lite/_output/ **/lite/.cache **/*.doit.* **/docs/typedoc/ ipywidgets-8.1.1/.lintstagedrc000066400000000000000000000001301450026722000163650ustar00rootroot00000000000000{ "**/*{.ts,.tsx,.js,.jsx,.css,.json}": [ "prettier --write", "git add" ] } ipywidgets-8.1.1/.mailmap000066400000000000000000000270111450026722000153310ustar00rootroot00000000000000A. J. Holyoake ajholyoake Aaron Culich Aaron Culich Aron Ahmadia ahmadia Benjamin Ragan-Kelley Benjamin Ragan-Kelley Min RK Benjamin Ragan-Kelley MinRK Barry Wark Barry Wark Ben Edwards Ben Edwards Bradley M. Froehle Bradley M. Froehle Bradley M. Froehle Bradley Froehle Brandon Parsons Brandon Parsons Brian E. Granger Brian Granger Brian E. Granger Brian Granger <> Brian E. Granger bgranger <> Brian E. Granger bgranger Charnpreet Singh charnpreetsingh Christoph Gohlke cgohlke Cyrille Rossant rossant Damián Avila damianavila Damián Avila damianavila Damon Allen damontallen Darren Dale darren.dale <> Darren Dale Darren Dale <> Dav Clark Dav Clark <> Dav Clark Dav Clark David Hirschfeld dhirschfeld David P. Sanders David P. Sanders David Warde-Farley David Warde-Farley <> Di Wang Di Doug Blank Doug Blank Doug Redden DougRzz Eugene Van den Bulke Eugene Van den Bulke Evan Patterson Evan Patterson Evan Patterson Evan Patterson Evan Patterson epatters Evan Patterson epatters Ernie French Ernie French Ernie French ernie french Ernie French ernop Fernando Perez Fernando Perez Fernando Perez Fernando Perez fperez <> Fernando Perez fptest <> Fernando Perez fptest1 <> Fernando Perez Fernando Perez Fernando Perez Fernando Perez <> Fernando Perez Fernando Perez Frank Murphy Frank Murphy Gabriel Becker gmbecker Gael Varoquaux gael.varoquaux <> Gael Varoquaux gvaroquaux Gael Varoquaux Gael Varoquaux <> Henry Hinnefeld hinnefe2 Ingolf Becker watercrossing Jake Vanderplas Jake Vanderplas Jakob Gager jakobgager Jakob Gager jakobgager Jakob Gager jakobgager Jason Grout Jason Grout Jason Gors jason gors Jason Gors jgors Jens Hedegaard Nielsen Jens Hedegaard Nielsen Jens Hedegaard Nielsen Jens H Nielsen Jens Hedegaard Nielsen Jens H. Nielsen Jez Ng Jez Ng Jonathan Frederic Jonathan Frederic Jonathan Frederic Jonathan Frederic Jonathan Frederic Jonathan Frederic Jonathan Frederic jon Jonathan Frederic U-Jon-PC\Jon Jonathan March Jonathan March Jonathan March jdmarch Jörgen Stenarson Jörgen Stenarson Jörgen Stenarson Jorgen Stenarson Jörgen Stenarson Jorgen Stenarson <> Jörgen Stenarson jstenar Jörgen Stenarson jstenar <> Jörgen Stenarson Jörgen Stenarson Juergen Hasch juhasch Juergen Hasch juhasch Julia Evans Julia Evans Kester Tong KesterTong Kiko Correoso kikocorreoso Kyle Kelley Kyle Kelley Kyle Kelley rgbkrk Laurent Dufréchou Laurent Dufréchou Laurent Dufréchou laurent dufrechou <> Laurent Dufréchou laurent.dufrechou <> Laurent Dufréchou Laurent Dufrechou <> Laurent Dufréchou laurent.dufrechou@gmail.com <> Laurent Dufréchou ldufrechou Lorena Pantano Lorena Luis Pedro Coelho Luis Pedro Coelho Luke Zoltan Kelley Luke Maarten Breddels maartenbreddels Madhumitha Natarajan Madhu94 Madhumitha Natarajan nmadhum Maksim Noy Max Noy Marc Molla marcmolla Martín Gaitán Martín Gaitán Matthias Bussonnier Matthias BUSSONNIER Matthias Bussonnier Bussonnier Matthias Matthias Bussonnier Matthias BUSSONNIER Matthias Bussonnier Matthias Bussonnier Michael Droettboom Michael Droettboom Nicholas Bollweg Nicholas Bollweg (Nick) Nick Fernandez Nicolas Fernandez Nicolas Rougier Nikolay Koldunov Nikolay Koldunov Omar Andrés Zapata Mesa Omar Andres Zapata Mesa Omar Andrés Zapata Mesa Omar Andres Zapata Mesa Pankaj Pandey Pankaj Pandey Pascal Schetelat pascal-schetelat Paul Ivanov Paul Ivanov Pauli Virtanen Pauli Virtanen <> Pauli Virtanen Pauli Virtanen Pierre Gerold Pierre Gerold Pietro Berkes Pietro Berkes Piti Ongmongkolkul piti118 Prabhu Ramachandran Prabhu Ramachandran <> Puneeth Chaganti Puneeth Chaganti Rick Teachey Ricyteach Robert Kern rkern <> Robert Kern Robert Kern Robert Kern Robert Kern Robert Kern Robert Kern <> Robert Marchman Robert Marchman Satrajit Ghosh Satrajit Ghosh Satrajit Ghosh Satrajit Ghosh Scott Sanderson Scott Sanderson smithj1 smithj1 smithj1 smithj1 Steven Johnson stevenJohnson Steven Silvester blink1073 S. Weber s8weber Stefan van der Walt Stefan van der Walt Silvia Vinyes Silvia Silvia Vinyes silviav12 Srinivas Sunkara ssunkara1 Sylvain Corlay Sylvain Corlay sylvain.corlay Ted Drain TD22057 Théophile Studer Théophile Studer Thomas Kluyver Thomas Thomas Spura Thomas Spura Timo Paulssen timo vds vds2212 vds vds Ville M. Vainio Ville M. Vainio ville Ville M. Vainio ville Ville M. Vainio vivainio <> Ville M. Vainio Ville M. Vainio Ville M. Vainio Ville M. Vainio Walter Doerwald walter.doerwald <> Walter Doerwald Walter Doerwald <> W. Trevor King W. Trevor King Yoval P. y-p ipywidgets-8.1.1/.npmrc000066400000000000000000000000251450026722000150240ustar00rootroot00000000000000engine-strict = true ipywidgets-8.1.1/.prettierrc000066400000000000000000000000311450026722000160650ustar00rootroot00000000000000{ "singleQuote": true }ipywidgets-8.1.1/.readthedocs.yaml000066400000000000000000000002771450026722000171440ustar00rootroot00000000000000version: 2 build: os: 'ubuntu-22.04' tools: python: 'mambaforge-4.10' python: install: - method: pip path: ./python/ipywidgets conda: environment: docs/environment.yml ipywidgets-8.1.1/.vscode/000077500000000000000000000000001450026722000152505ustar00rootroot00000000000000ipywidgets-8.1.1/.vscode/extensions.json000066400000000000000000000001161450026722000203400ustar00rootroot00000000000000{ "recommendations": ["dbaeumer.vscode-eslint", "esbenp.prettier-vscode"] } ipywidgets-8.1.1/.yarnrc.yml000066400000000000000000000003641450026722000160110ustar00rootroot00000000000000nodeLinker: node-modules # prettier-ignore packageExtensions: "@nrwl/devkit@^15": dependencies: nx: ^15 postcss-cssnext@^3.1.0: dependencies: caniuse-lite: ^1 source-map-loader@^4: dependencies: webpack: ^5 ipywidgets-8.1.1/CODE_OF_CONDUCT.md000066400000000000000000000002031450026722000165010ustar00rootroot00000000000000Please refer to [Project Jupyter's Code of Conduct](https://github.com/jupyter/governance/blob/master/conduct/code_of_conduct.md). ipywidgets-8.1.1/CONTRIBUTING.md000066400000000000000000000022231450026722000161370ustar00rootroot00000000000000# Contributing We appreciate contributions from the community. Click here to see the full [Guidelines](docs/source/contributing.md): - issues are managed by the `@meeseeksdev` bot - When opening an issue, make sure that it hasn't been solved - Search on Google or Github. - Include your system information ``` python -c "import IPython; print(IPython.sys_info())" ``` - **All work is submitted through pull requests (PRs)** - PRs are submitted as soon as there is code to be discussed --- # Check these resources: Now that we went through the basics, Here are more detailed documentation on areas of contribution: ## Installing [Developer install information](docs/source/dev_install.md) for installation steps. ## Releasing [Release procedures](docs/source/dev_release.md) ## Testing [Testing Contributions](docs/source/dev_testing.md) ## Documenting [Documentation Contributions](docs/source/dev_docs.md) --- # Good First Issues This is a link for issues that don't require deep knowledge of the project: Click here: [Good First Issues](https://github.com/jupyter-widgets/ipywidgets/issues?q=is%3Aopen+is%3Aissue+label%3A%22good+first+issue%22) ipywidgets-8.1.1/LICENSE000066400000000000000000000027511450026722000147210ustar00rootroot00000000000000Copyright (c) 2015 Project Jupyter Contributors All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. 3. Neither the name of the copyright holder nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ipywidgets-8.1.1/README.md000066400000000000000000000234401450026722000151710ustar00rootroot00000000000000# ipywidgets: Interactive HTML Widgets | Purpose | Badges | | ------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | **Latest (`main`: future 8.0)** | [![Test Status](https://github.com/jupyter-widgets/ipywidgets/actions/workflows/tests.yml/badge.svg?query=branch%3Amain)](https://github.com/jupyter-widgets/ipywidgets/actions?query=branch%3Amain) [![Documentation Status: latest](https://img.shields.io/readthedocs/ipywidgets?logo=read-the-docs)](https://ipywidgets.readthedocs.io/en/latest/?badge=latest) [![Binder:main](https://mybinder.org/badge_logo.svg)](https://mybinder.org/v2/gh/jupyter-widgets/ipywidgets/main?urlpath=lab/tree/docs%2Fsource%2Fexamples) | | **Stable** | [![Version](https://img.shields.io/pypi/v/ipywidgets.svg?logo=pypi)](https://pypi.python.org/pypi/ipywidgets) [![Conda Version](https://img.shields.io/conda/vn/conda-forge/ipywidgets.svg?logo=conda-forge)](https://anaconda.org/conda-forge/ipywidgets) [![Documentation Status](https://img.shields.io/readthedocs/ipywidgets?logo=read-the-docs)](https://ipywidgets.readthedocs.io/en/stable/?badge=stable) [![Binder:7.x](https://mybinder.org/badge_logo.svg)](https://mybinder.org/v2/gh/jupyter-widgets/ipywidgets/7.x?urlpath=lab/tree/docs%2Fsource%2Fexamples) | | **Communication** | [![Join the chat at https://gitter.im/ipython/ipywidgets](https://badges.gitter.im/Join%20Chat.svg)](https://gitter.im/jupyter-widgets/Lobby) [![Discourse](https://img.shields.io/badge/help_forum-discourse-blue?logo=discourse)](https://discourse.jupyter.org/c/widgets/46) | | | | **ipywidgets**, also known as jupyter-widgets or simply widgets, are [interactive HTML widgets](https://github.com/jupyter-widgets/ipywidgets/blob/main/docs/source/examples/Index.ipynb) for Jupyter notebooks and the IPython kernel. Notebooks come alive when interactive widgets are used. Users gain control of their data and can visualize changes in the data. Learning becomes an immersive, fun experience. Researchers can easily see how changing inputs to a model impact the results. We hope you will add ipywidgets to your notebooks, and we're here to help you get started. The ipywidgets package is under the [Jupyter-Widgets](https://github.com/jupyter-widgets) [software subproject](https://jupyter.org/governance/software_subprojects.html). ## Core Interactive Widgets The fundamental widgets provided by this library are called core interactive widgets. A [demonstration notebook](https://github.com/jupyter-widgets/ipywidgets/blob/main/docs/source/examples/Index.ipynb) provides an overview of the core interactive widgets, including: - sliders - progress bars - text boxes - toggle buttons and checkboxes - display areas - and more ## Jupyter Interactive Widgets as a Framework Besides the widgets already provided with the library, the framework can be extended with the development of **custom widget libraries**. For detailed information, please refer to the [ipywidgets documentation](https://ipywidgets.readthedocs.io/en/latest/). ### Cookiecutter template for custom widget development A template project for building custom widgets is available as a [**cookiecutter**](https://github.com/jupyter-widgets/widget-ts-cookiecutter). This cookiecutter project helps custom widget authors get started with the packaging and the distribution of their custom Jupyter interactive widgets. The cookiecutter produces a project for a Jupyter interactive widget library following the current best practices for using interactive widgets. An implementation for a placeholder "Hello World" widget is provided as an example. Popular widget libraries such as [bqplot](https://github.com/bqplot/bqplot), [pythreejs](https://github.com/jupyter-widgets/pythreejs) and [ipyleaflet](https://github.com/jupyter-widgets/ipyleaflet) follow exactly the same template and directory structure. They serve as more advanced examples of usage of the Jupyter widget infrastructure. ### Popular custom widget examples Examples of custom widget libraries built upon ipywidgets are - [bqplot](https://github.com/bqplot/bqplot) a 2d data visualization library enabling custom user interactions. - [pythreejs](https://github.com/jupyter-widgets/pythreejs) a Jupyter - Three.js wrapper, bringing Three.js to the notebook. - [ipyleaflet](https://github.com/jupyter-widgets/ipyleaflet) a leaflet widget for Jupyter. ## Install The stable version of ipywidgets can be installed with pip or conda. With pip: ```sh pip install ipywidgets ``` With conda: ```sh conda install -c conda-forge ipywidgets ``` ### Developer install from source Installing from source is more complicated and requires a developer install, see the detailed [developer install](docs/source/dev_install.md) instructions. If you want to install ipywidgets from source, **you will need the [yarn](https://yarnpkg.com/) package manager version 3 or later**. To install the latest `main` version from the root directory of the source code, run `dev-install.sh`. To only build the Python package enter `pip install -e .`. ## Usage See the [examples](docs/source/examples.md) section of the documentation. The widgets are being used in a variety of ways; some uses can be seen in these notebooks: [Demo notebook of interactive widgets](https://github.com/jupyter-widgets/ipywidgets/blob/main/docs/source/examples/Index.ipynb) ## Change log [Change log](docs/source/changelog.md) ### Version Compatibility with Front-End Clients Refer to change log for more detail. | ipywidgets | JupyterLab | [Classic Notebook](https://github.com/jupyter/notebook) | [nbclassic](https://github.com/jupyterlab/nbclassic) | | ---------- | :--------: | :-----------------------------------------------------: | :--------------------------------------------------: | | `main` | | - | TBD | | `7.6.3` | | | 0.2.6 | | **Legacy** | | | | | `6.x` | | | - | | `5.x` | | 4.2 | - | | `4.1.x` | | 4.1 | - | | `4.0.x` | | 4.0 | - | ## Contributing to ipywidgets [Developer information](CONTRIBUTING.md) ## License We use a shared copyright model that enables all contributors to maintain the copyright on their contributions. See the [LICENSE](LICENSE) file in this repository for details. ## Project Jupyter resources - [Project Jupyter website](https://jupyter.org) - [Online Demo at try.jupyter.org](https://try.jupyter.org) - [Documentation for Project Jupyter](https://jupyter.readthedocs.io/en/latest/index.html) [[PDF](https://media.readthedocs.org/pdf/jupyter/latest/jupyter.pdf)] - [![Discourse](https://img.shields.io/badge/help_forum-discourse-blue?logo=discourse)](https://discourse.jupyter.org/) [![Google Group](https://img.shields.io/badge/-Google%20Group-lightgrey.svg)](https://groups.google.com/forum/#!forum/jupyter) ## [Weekly Team Meetings](https://github.com/jupyter-widgets/team-compass/issues/1) Developer Meetings take place on [zoom](https://zoom.us/my/jovyan?pwd=c0JZTHlNdS9Sek9vdzR3aTJ4SzFTQT09), on Tuesdays at 9:30AM Pacific Time ([your time](https://www.thetimezoneconverter.com/?t=9%3A30%20am&tz=San%20Francisco)). Minutes are taken at [Hackmd.io](https://hackmd.io/5XWHyOoLTRqyXzEHsVmxXg). ipywidgets-8.1.1/dev-install.sh000077500000000000000000000026671450026722000165030ustar00rootroot00000000000000#!/usr/bin/env bash # For a clean conda environment please read docs/source/dev_install.md echo -n "Checking pip... " pip --version if [ $? -ne 0 ]; then echo "'pip --version' failed, therefore pip is not installed. In order to perform a developer install of ipywidgets you must have pip installed on your machine! See https://packaging.python.org/installing/ for installation instructions." exit 1 fi echo -n "Checking JupyterLab (assuming JupyterLab >=4)... " jupyter lab --version 2>/dev/null if [ $? -ne 0 ]; then echo "no, skipping installation of widgets for jupyterlab" skip_jupyter_lab=yes fi # All following commands must run successfully set -e nbExtFlags="--sys-prefix $1" echo -n "Installing and building all yarn packages" jlpm jlpm build echo -n "widgetsnbextension" pip install -v -e ./python/widgetsnbextension if [[ "$OSTYPE" == "msys" ]]; then jupyter nbextension install --overwrite --py $nbExtFlags widgetsnbextension || true else jupyter nbextension install --overwrite --py --symlink $nbExtFlags widgetsnbextension || true fi jupyter nbextension enable --py $nbExtFlags widgetsnbextension || true echo -n "ipywidgets" pip install -v -e "./python/ipywidgets[test]" if test "$skip_jupyter_lab" != yes; then echo -n "jupyterlab_ipywidgets" pip install jupyter_packaging pip install -ve ./python/jupyterlab_widgets jupyter labextension develop ./python/jupyterlab_widgets --overwrite fi ipywidgets-8.1.1/docs/000077500000000000000000000000001450026722000146375ustar00rootroot00000000000000ipywidgets-8.1.1/docs/Readme.md000066400000000000000000000012611450026722000163560ustar00rootroot00000000000000# Building ipywidgets documentation To build the ipywidgets documentation: 1. Install the development version of ipywidgets with the `dev-install.sh` script in the repo root directory. 2. Install the Python packages for building documentation with either mamba or conda: ```sh conda env update --file docs/environment.yml ``` or with `pip`: ```sh python -m pip install -r docs/requirements.txt # Also install pandoc separately ``` 3. Build the HTML docs with sphinx: ```sh cd docs/source python -m sphinx -T -E -b html -d ../build/doctrees -D language=en . ../build/html ``` 4. Open the documentation from the build directory: `docs/build/html` ipywidgets-8.1.1/docs/environment.yml000066400000000000000000000011631450026722000177270ustar00rootroot00000000000000name: ipywidgets_docs channels: - conda-forge - nodefaults dependencies: - python >=3.11,<3.12 # build - python-build - pip - packaging - jupyter-packaging - jupyterlab >=4,<5 - nodejs >=18,<19 # dependencies - jupyter_client # docs - docutils >=0.19 - jupyterlab-myst - myst-nb >=0.17,<0.18 - pandoc - pydata-sphinx-theme - sphinx >=5,<6 - sphinx-autobuild - sphinx-autodoc-typehints - sphinx-copybutton - sphinxext-rediraffe # demo - bqplot - ipykernel - ipyleaflet - jupyterlite >=0.1.1,<0.2.0 - matplotlib-base - numpy - scikit-image - scikit-learn - sympy ipywidgets-8.1.1/docs/lite/000077500000000000000000000000001450026722000155745ustar00rootroot00000000000000ipywidgets-8.1.1/docs/lite/jupyter-lite.json000066400000000000000000000002161450026722000211230ustar00rootroot00000000000000{ "jupyter-lite-schema-version": 0, "jupyter-config-data": { "disabledExtensions": ["@jupyterlite/javascript-kernel-extension"] } } ipywidgets-8.1.1/docs/lite/jupyter_lite_config.json000066400000000000000000000006071450026722000225360ustar00rootroot00000000000000{ "LiteBuildConfig": { "extra_ignore_contents": [ "Layout Example\\.ipynb", "Layout Templates\\.ipynb", "Variable Inspector\\.ipynb" ], "contents": ["../source/examples"] }, "PipliteAddon": { "piplite_urls": [ "../../python/ipywidgets/dist", "../../python/widgetsnbextension/dist", "../../python/jupyterlab_widgets/dist" ] } } ipywidgets-8.1.1/docs/requirements.txt000066400000000000000000000005241450026722000201240ustar00rootroot00000000000000bqplot build docutils >=0.19 ipykernel ipyleaflet jupyter-client jupyter-packaging jupyterlab >=4 jupyterlite >=0.1.1<0.2.0 matplotlib myst-nb >=0.17,<0.18 numpy packaging pkginfo pydata-sphinx-theme recommonmark scikit-image scikit-learn sphinx >=1.4.6 sphinx-autobuild sphinx-autodoc-typehints sphinx-copybutton sphinxext-rediraffe sympy ipywidgets-8.1.1/docs/source/000077500000000000000000000000001450026722000161375ustar00rootroot00000000000000ipywidgets-8.1.1/docs/source/_static/000077500000000000000000000000001450026722000175655ustar00rootroot00000000000000ipywidgets-8.1.1/docs/source/_static/theme.css000066400000000000000000000007601450026722000214040ustar00rootroot00000000000000/* index */ table.indextable tr.cap { background-color: var(--pst-color-on-background) !important; } /* demo */ #demo-sidebar { margin: 0; } #demo-sidebar .demo-app { display: inline; display: flex; flex-direction: row; align-items: baseline; flex-wrap: wrap; margin: 0.75rem 0.25rem 0 0.25rem; } .demo-app > * { flex: 1 auto; white-space: nowrap; } #demo-sidebar .admonition-title::after { display: none; } #demo-sidebar .admonition-title { padding-left: 0.75rem; } ipywidgets-8.1.1/docs/source/_templates/000077500000000000000000000000001450026722000202745ustar00rootroot00000000000000ipywidgets-8.1.1/docs/source/_templates/demo.html000066400000000000000000000024041450026722000221060ustar00rootroot00000000000000

Try Jupyter Widgets

Try Now
ipywidgets-8.1.1/docs/source/_templates/sidebar-nav-bs-index.html000066400000000000000000000010621450026722000250630ustar00rootroot00000000000000 ipywidgets-8.1.1/docs/source/changelog.md000066400000000000000000001627411450026722000204230ustar00rootroot00000000000000# ipywidgets Changelog This is a summary of changes in ipywidgets releases. For more detailed information, see the issues and pull requests for the appropriate milestone on [GitHub](https://github.com/jupyter-widgets/ipywidgets). ## 8.0.6 Highlights include: - Fix: revert removing ipykernel dependency [#3749](https://github.com/jupyter-widgets/ipywidgets/pull/3749) - Fix: structuredClone broke default serializer that depended on JSON/toJSON [#3738](https://github.com/jupyter-widgets/ipywidgets/pull/3738) - Fix: comm/ipykernel/manager runtime issues: [#3740](https://github.com/jupyter-widgets/ipywidgets/pull/3740), [#3737](https://github.com/jupyter-widgets/ipywidgets/pull/3737) ## 8.0.5 Highlights include: - Fix: propertly typed Comm interface [#3722](https://github.com/jupyter-widgets/ipywidgets/pull/3722) - Fix: support the comm package [#3533](https://github.com/jupyter-widgets/ipywidgets/pull/3533) - Fix: use of structuredClone allows for binary traits out of the box [#3689](https://github.com/jupyter-widgets/ipywidgets/pull/3689) - Fix: combobox update issue [#3681](https://github.com/jupyter-widgets/ipywidgets/issues/3681) - Fix: add grey as valid color [#3671](https://github.com/jupyter-widgets/ipywidgets/pull/3671) - Fix: deprecation warning when using interact [#3669](https://github.com/jupyter-widgets/ipywidgets/issues/3669) ## 8.0.4 Highlights include: - Fix: slider change event issue with tapping: [#3597](https://github.com/jupyter-widgets/ipywidgets/pull/3597), [#3617](https://github.com/jupyter-widgets/ipywidgets/pull/3617) - Fix: unintentional deprecation warnings: [#3648](https://github.com/jupyter-widgets/ipywidgets/pull/3648), [#3650](https://github.com/jupyter-widgets/ipywidgets/pull/3650) - Fix: registry state lookup failed, making is impossible to create widgets from the frontend: [#3653](https://github.com/jupyter-widgets/ipywidgets/pull/3653) ## 8.0.3 --- Highlights include: - Fix: be backwards compatibel with 7.x, where we re-instroduced `.widget` and `.widget_types` [#3567](https://github.com/jupyter-widgets/ipywidgets/pull/3567) - Fix: be backwards compatibel with 7.x, revert hold_sync during set_state [#3642](https://github.com/jupyter-widgets/ipywidgets/pull/3642) ## [8.0](https://github.com/jupyter-widgets/ipywidgets/releases/tag/8.0.0) To see the full list of pull requests and issues, see the [8.0 milestone](https://github.com/jupyter-widgets/ipywidgets/milestone/30?closed=1) on GitHub, or the [full list of changes since 7.x](https://github.com/jupyter-widgets/ipywidgets/compare/7.x...8.0.0). See the [user migration guide](./user_migration_guides.md) for suggestions about migrating your code that uses ipywidgets to 8.0. If you author a custom widget, please see the [custom widget migration guide](./migration_guides.md) for suggestions about migrating your widget to support ipywidgets 8. ### Users Here are some highlights of user-visible changes in ipywidgets 8.0. #### Date and time pickers In addition to the existing DatePicker widget, we now have new DatetimePicker and TimePicker widgets. ([#2715](https://github.com/jupyter-widgets/ipywidgets/pull/2715)) ```python from ipywidgets import VBox, TimePicker, DatetimePicker VBox([ TimePicker(description='Time'), DatetimePicker(description='Date/Time') ]) ``` #### Tags input widget The new TagsInput widget provides an easy way to collect and manage tags in a widget. You can drag and drop tags to reorder them, limit them to a set of allowed values, or even prevent making duplicate tags. ([#2591](https://github.com/jupyter-widgets/ipywidgets/pull/2591), [#3272](https://github.com/jupyter-widgets/ipywidgets/pull/3272)) ```python from ipywidgets import TagsInput TagsInput( value=['pizza', 'fries'], allowed_tags=['pizza', 'fries', 'tomatoes', 'steak'], allow_duplicates=False ) ``` Similarly, the new ColorsInput widget provides a way to select colors as tags ```python from ipywidgets import ColorsInput ColorsInput( value=['red', '#2f6d30'], # allowed_tags=['red', 'blue', 'green'], # allow_duplicates=False ) ``` #### Stack widget The new Stack container widget shows only the selected child widget, while other child widgets remain hidden. This can be useful if you want to have a area that displays different widgets depending on some other interaction. ```python from ipywidgets import Stack, Button, IntSlider, Dropdown, VBox, link s = Stack([Button(description='Click here'), IntSlider()], selected_index=0) d = Dropdown(options=['button', 'slider']) link((d, 'index'), (s, 'selected_index')) VBox([d, s]) ``` #### File upload widget The file upload widget has been overhauled to handle multiple files in a more useful format: - The `.value` attribute is now a list of dictionaries, rather than a dictionary mapping the uploaded name to the content. - The contents of each uploaded file is a [memory view](https://docs.python.org/3/library/stdtypes.html#memory-views) in the `.content` key, e.g., `uploader.value[0].content`. - The `.data` attribute has been removed. - The `.metadata` attribute has been removed. See the [user migration guide](./user_migration_guides.md#FileUpload) for details on how to migrate your code. ([#2767](https://github.com/jupyter-widgets/ipywidgets/pull/2767), [#2724](https://github.com/jupyter-widgets/ipywidgets/pull/2724), [#2666](https://github.com/jupyter-widgets/ipywidgets/pull/2666), [#2480](https://github.com/jupyter-widgets/ipywidgets/issues/2480)) #### More styling options Many style and layout options have been added to core widgets: - Tooltips are now supported for many core widgets, rather than just a few description tooltips ([#2680](https://github.com/jupyter-widgets/ipywidgets/pull/2680)) ```python from ipywidgets import Button Button(description="Click me", tooltip='An action') ``` - Borders can be styled independently with the layout's `border_top`, `border_right`, `border_bottom`, `border_left` attributes ([#2757](https://github.com/jupyter-widgets/ipywidgets/pull/2757), [#3269](https://github.com/jupyter-widgets/ipywidgets/pull/3269)) ```python from ipywidgets import Button Button(description="Click me", layout={'border_bottom': '3px solid blue'}) ``` - Descriptions are now plain text by default for security, but you can set them to allow HTML with the `description_allow_html` attribute (HTML content is still sanitized for security). ([#2785](https://github.com/jupyter-widgets/ipywidgets/pull/2785)) ```python from ipywidgets import Text Text(description="Name", description_allow_html=True) ``` - Many other styling attributes can be set on core widgets, such as font family, size, style, weight, text color, and text decoration. See the table in the documentation for a reference. ([#2728](https://github.com/jupyter-widgets/ipywidgets/pull/2728)) - The SelectionSlider now has a `handle_color` style attribute ([#3142](https://github.com/jupyter-widgets/ipywidgets/pull/3142)) - To control keyboard navigation, widgets can be set to be tabbable or not (i.e., that the tab key will traverse to the widget) ([#2640](https://github.com/jupyter-widgets/ipywidgets/pull/2640)) ### Selection container titles The Accordion, Tab, and Stack widgets now have a `.titles` attribute that you can use to get and set titles from the constructor or as an attribute. ([#2746](https://github.com/jupyter-widgets/ipywidgets/pull/2746), [#3296](https://github.com/jupyter-widgets/ipywidgets/pull/3296), [#3477](https://github.com/jupyter-widgets/ipywidgets/pull/3477)) ```python from ipywidgets import Tab, IntSlider, Text Tab([IntSlider(), Text()], titles=('Slider', 'Text')) ``` #### Slider implementation The slider implementation in the core widgets now uses [nouislider](https://refreshless.com/nouislider/). This enables us to fix long-standing bugs and introduce new features, like dragging the range in a RangeSlider. ([#2712](https://github.com/jupyter-widgets/ipywidgets/pull/2712), [#630](https://github.com/jupyter-widgets/ipywidgets/issues/630), [#3216](https://github.com/jupyter-widgets/ipywidgets/pull/3216), [#2834](https://github.com/jupyter-widgets/ipywidgets/pull/2834)) #### Collaboration By default, ipywidgets 8 enables a collaboration mode, where widget updates from one frontend are reflected back to other frontends, enabling a consistent state between multiple users and fixing synchronization between the kernel and frontend. You may want to disable these update echo messages if they are using too much bandwidth or causing slower interactivity. To disable echo update messages across ipywidgets, set the environment variable `JUPYTER_WIDGETS_ECHO` to `0`. For widget authors, to opt a specific attribute of custom widget out of echo updates (for example, if the attribute contains a lot of data that does not need to be synchronized), tag the attribute with `echo_update=False` metadata (we do this in core for the FileUpload widget's `data` attribute). ([#3195](https://github.com/jupyter-widgets/ipywidgets/pull/3195), [#3343](https://github.com/jupyter-widgets/ipywidgets/pull/3343), [#3394](https://github.com/jupyter-widgets/ipywidgets/pull/3394), [#3407](https://github.com/jupyter-widgets/ipywidgets/pull/3407)) #### CDN for html manager We have made it easier to load widgets from content delivery networks. - The default CDN is changed from unpkg to jsDelivr ([#3121](https://github.com/jupyter-widgets/ipywidgets/pull/3121), [#1627](https://github.com/jupyter-widgets/ipywidgets/issues/1627)) - You can use the `data-jupyter-widgets-cdn-only` attribute to load modules only from CDN ([#2792](https://github.com/jupyter-widgets/ipywidgets/pull/2792), [#2786](https://github.com/jupyter-widgets/ipywidgets/issues/2786)) - We have updated the webpack public path settings so the HTMLManager and the Jupyter Notebook extensions pull assets from wherever they are loaded, rather than only from CDN. If you author a custom widget, we highly encourage you to apply similar changes to your widget by adapting the changes at https://github.com/jupyter-widgets/widget-cookiecutter/pull/103/files. [#3464](https://github.com/jupyter-widgets/ipywidgets/pull/3464), [#3508](https://github.com/jupyter-widgets/ipywidgets/pull/3508) #### Other changes Here is a short list of some of the other changes in ipywidgets 8.0. - Add a cookiecutter-based tutorial to build a custom widget ([#2919](https://github.com/jupyter-widgets/ipywidgets/pull/2919)) - Change media widgets to use memory views. ([#2723](https://github.com/jupyter-widgets/ipywidgets/pull/2723)) - Upgrade to FontAwesome 5 in html-manager ([#2713](https://github.com/jupyter-widgets/ipywidgets/pull/2713)) - Play widget now toggles between play and pause button as needed ([#2703](https://github.com/jupyter-widgets/ipywidgets/pull/2703), [#2671](https://github.com/jupyter-widgets/ipywidgets/issues/2671)) - Drop support for mapping types as selection options ([#2679](https://github.com/jupyter-widgets/ipywidgets/pull/2679), [#1958](https://github.com/jupyter-widgets/ipywidgets/issues/1958)) - Focus or blur a widget. ([#2664](https://github.com/jupyter-widgets/ipywidgets/pull/2664), [#2692](https://github.com/jupyter-widgets/ipywidgets/pull/2692), [#2691](https://github.com/jupyter-widgets/ipywidgets/pull/2691), [#2690](https://github.com/jupyter-widgets/ipywidgets/pull/2690)) - Drop notebook dependency from widgetsnbextension ([#2590](https://github.com/jupyter-widgets/ipywidgets/pull/2590)) - Cast 'value' in range sliders to a tuple ([#2441](https://github.com/jupyter-widgets/ipywidgets/pull/2441)) - Play widget: expose playing and repeat ([#2283](https://github.com/jupyter-widgets/ipywidgets/pull/2283), [#1897](https://github.com/jupyter-widgets/ipywidgets/issues/1897)) - Fix debouncing and throttling code ([#3060](https://github.com/jupyter-widgets/ipywidgets/pull/3060)) - Fix regression on spinning icons ([#2685](https://github.com/jupyter-widgets/ipywidgets/pull/2685), [#2477](https://github.com/jupyter-widgets/ipywidgets/issues/2477)) - Fix selection container default index ([#1823](https://github.com/jupyter-widgets/ipywidgets/pull/1823)) - Remove deprecated overflow properties ([#2688](https://github.com/jupyter-widgets/ipywidgets/pull/2688)) - Select: Do not force a selection if there is currently no selection and the options list changes ([#3284](https://github.com/jupyter-widgets/ipywidgets/pull/3284)) - Add support for localization to the lab extension ([#3286](https://github.com/jupyter-widgets/ipywidgets/pull/3286)) - Drop support for Python 2.7, 3.4, and 3.5 ([#2558](https://github.com/jupyter-widgets/ipywidgets/pull/2558), [#2655](https://github.com/jupyter-widgets/ipywidgets/pull/2655), [#3131](https://github.com/jupyter-widgets/ipywidgets/pull/3131), [#3120](https://github.com/jupyter-widgets/ipywidgets/pull/3120)) - Fix character escapes in combobox options ([#2972](https://github.com/jupyter-widgets/ipywidgets/pull/2972)) - Modify outputs to use a comm if IPython is not available ([#2954](https://github.com/jupyter-widgets/ipywidgets/pull/2954)) - Bugfix/parameters in the from_file method to be passed along in the media class ([#3074](https://github.com/jupyter-widgets/ipywidgets/pull/3074)) - Widgetsnbextension: throw error on failure to render ([#3280](https://github.com/jupyter-widgets/ipywidgets/pull/3280)) - Fix memory leak from Image widget not releasing object urls ([#3171](https://github.com/jupyter-widgets/ipywidgets/pull/3171), [#3170](https://github.com/jupyter-widgets/ipywidgets/pull/3170)) - ErrorWidget as fallback when widgets models or views fail - Following up ([#3304](https://github.com/jupyter-widgets/ipywidgets/pull/3304)) - Fix matplotlib plots in interact ([#3277](https://github.com/jupyter-widgets/ipywidgets/pull/3277)) - Fix selection equality checking ([#2897](https://github.com/jupyter-widgets/ipywidgets/pull/2897)) - Remove the `on_displayed` Python callback mechanism ([#2021](https://github.com/jupyter-widgets/ipywidgets/pull/2021)) ### Developers To see an overview of the changes to the core widget model specification, see [#3455](https://github.com/jupyter-widgets/ipywidgets/issues/3455). #### Python - `Widget.widgets` and `Widget.widget_types` are now private variables ([#3122](https://github.com/jupyter-widgets/ipywidgets/pull/3122), [#3173](https://github.com/jupyter-widgets/ipywidgets/pull/3173)) - Generate the widget data spec as JSON ([#2193](https://github.com/jupyter-widgets/ipywidgets/pull/2193)) - Use `_repr_mimebundle_` and require ipython 6.1 or later. ([#2021](https://github.com/jupyter-widgets/ipywidgets/pull/2021), [#1811](https://github.com/jupyter-widgets/ipywidgets/issues/1811)) - Hold sync during `set_state` + fix selection widgets flakiness ([#3271](https://github.com/jupyter-widgets/ipywidgets/pull/3271)) - Remove deprecated `handle_kernel` alias ([#2694](https://github.com/jupyter-widgets/ipywidgets/pull/2694)) - Removed deprecated signature of the `register` decorator ([#2695](https://github.com/jupyter-widgets/ipywidgets/pull/2695)) #### Javascript - Fix CSS variable names to match JupyterLab names ([#2801](https://github.com/jupyter-widgets/ipywidgets/pull/2801), [#2062](https://github.com/jupyter-widgets/ipywidgets/issues/2062)) - Delete `display_model` and `display_view` ([#2752](https://github.com/jupyter-widgets/ipywidgets/pull/2752), [#2751](https://github.com/jupyter-widgets/ipywidgets/issues/2751)) - Drop underscore usage ([#2742](https://github.com/jupyter-widgets/ipywidgets/pull/2742)) - Upgrade to es2017 javascript ([#2725](https://github.com/jupyter-widgets/ipywidgets/pull/2725)) - Split base manager into separate packages ([#2710](https://github.com/jupyter-widgets/ipywidgets/pull/2710), [#2561](https://github.com/jupyter-widgets/ipywidgets/issues/2561)) - Change Phosphor to Lumino ([#2681](https://github.com/jupyter-widgets/ipywidgets/pull/2681), [#3267](https://github.com/jupyter-widgets/ipywidgets/pull/3267)) - Widgetmanagerbase: improve create_view return type ([#2662](https://github.com/jupyter-widgets/ipywidgets/pull/2662)) - Refactor the JupyterLab widget manager so it can be reused ([#2532](https://github.com/jupyter-widgets/ipywidgets/pull/2532)) - Make more of lab manager dependencies optional ([#2528](https://github.com/jupyter-widgets/ipywidgets/pull/2528)) - Remove class `jupyter-widgets` from `jp-outputarea-output` node ([#2500](https://github.com/jupyter-widgets/ipywidgets/pull/2500)) - Rename `pWidget` to `luminoWidget` and deprecate `pWidget` ([#3118](https://github.com/jupyter-widgets/ipywidgets/pull/3118), [#3141](https://github.com/jupyter-widgets/ipywidgets/pull/3141), [#3358](https://github.com/jupyter-widgets/ipywidgets/pull/3358),) - Add `layout`, `style`, and `shown` events ([#3300](https://github.com/jupyter-widgets/ipywidgets/pull/3300)) - Implement `jupyter.widget.control` comm channel ([#3313](https://github.com/jupyter-widgets/ipywidgets/pull/3313)) - Update to TypeScript 4.3 ([#3162](https://github.com/jupyter-widgets/ipywidgets/pull/3162)) - Add event listener for resize events ([#3124](https://github.com/jupyter-widgets/ipywidgets/pull/3124)) - Remove `process.cwd` polyfill ([#3315](https://github.com/jupyter-widgets/ipywidgets/pull/3315)) - Make sure buffer is a DataView ([#3127](https://github.com/jupyter-widgets/ipywidgets/pull/3127)) - Deprecate the overly broad CSS class `widget` and introduce a similar `jupyter-widget` CSS class ([#3146](https://github.com/jupyter-widgets/ipywidgets/pull/3146)) - Fetch the full widget state via a control Comm ([#3021](https://github.com/jupyter-widgets/ipywidgets/pull/3021)) - Export LabWidgetManager and KernelWidgetManager ([#3166](https://github.com/jupyter-widgets/ipywidgets/pull/3166)) - More helpful semver range message ([#3185](https://github.com/jupyter-widgets/ipywidgets/pull/3185)) - Make the base widget manager `.get_model()` method always return a Promise, which is rejected if the requested model is not registered. To test if a model is registered, use the new `.has_model()` method ([#3389](https://github.com/jupyter-widgets/ipywidgets/pull/3389)) ### Documentation improvements - Documentation overhaul ([#3104](https://github.com/jupyter-widgets/ipywidgets/pull/3104), [#3096](https://github.com/jupyter-widgets/ipywidgets/issues/3096), [#3099](https://github.com/jupyter-widgets/ipywidgets/pull/3099), [#3076](https://github.com/jupyter-widgets/ipywidgets/issues/3076), [#2824](https://github.com/jupyter-widgets/ipywidgets/pull/2824), [#3246](https://github.com/jupyter-widgets/ipywidgets/pull/3246), [#3243](https://github.com/jupyter-widgets/ipywidgets/pull/3243), [#3103](https://github.com/jupyter-widgets/ipywidgets/pull/3103), [#3165](https://github.com/jupyter-widgets/ipywidgets/pull/3165), [#3283](https://github.com/jupyter-widgets/ipywidgets/pull/3283), [#2927](https://github.com/jupyter-widgets/ipywidgets/pull/2927), [#3062](https://github.com/jupyter-widgets/ipywidgets/pull/3062), [#3129](https://github.com/jupyter-widgets/ipywidgets/pull/3129), [#3130](https://github.com/jupyter-widgets/ipywidgets/pull/3130), [#3155](https://github.com/jupyter-widgets/ipywidgets/pull/3155), ) - Remove step parameter from widget list notebook ([#3106](https://github.com/jupyter-widgets/ipywidgets/pull/3106)) - Remove extra requirements from doc to fix RTD build ([#3098](https://github.com/jupyter-widgets/ipywidgets/pull/3098)) - Align doc requirements for 7.x branch with master ([#3094](https://github.com/jupyter-widgets/ipywidgets/pull/3094)) - Remove defunct deep-links from install in README ([#3225](https://github.com/jupyter-widgets/ipywidgets/pull/3225)) - Fix documentation about embedding widget in HTML ([#3224](https://github.com/jupyter-widgets/ipywidgets/pull/3224)) - Fix example web3 missing process during runtime ([#3223](https://github.com/jupyter-widgets/ipywidgets/pull/3223)) - Complete docstring for `interactive`. ([#3169](https://github.com/jupyter-widgets/ipywidgets/pull/3169)) - Unpin ipykernel<6 for the docs ([#3168](https://github.com/jupyter-widgets/ipywidgets/pull/3168)) - Checking milestone and generating changelog ([#3125](https://github.com/jupyter-widgets/ipywidgets/pull/3125)) - Change graph example to receive a tuple instead of a dict ([#3117](https://github.com/jupyter-widgets/ipywidgets/pull/3117)) - Fix debouncing and throttling code ([#3060](https://github.com/jupyter-widgets/ipywidgets/pull/3060)) - Variable Inspector example used a wrong callback argument signature ([#3302](https://github.com/jupyter-widgets/ipywidgets/pull/3302)) ### Repo maintenance - Visual regression testing using Galata ([#3172](https://github.com/jupyter-widgets/ipywidgets/pull/3172), [#3279](https://github.com/jupyter-widgets/ipywidgets/pull/3279)) - Reorganize packages in the monorepo, moving the python packages to the `python` folder ([#3301](https://github.com/jupyter-widgets/ipywidgets/pull/3301), [#3316](https://github.com/jupyter-widgets/ipywidgets/pull/3316)) - Use new custom widget label on issue template ([#3176](https://github.com/jupyter-widgets/ipywidgets/pull/3176)) - Create and upload reference screenshots on CI failure ([#3227](https://github.com/jupyter-widgets/ipywidgets/pull/3227)) - Allow generate-spec to take optional output file ([#3174](https://github.com/jupyter-widgets/ipywidgets/pull/3174)) - Update to Jupyter Packaging 0.10 ([#3194](https://github.com/jupyter-widgets/ipywidgets/pull/3194)) - Update bug report test environment ([#3156](https://github.com/jupyter-widgets/ipywidgets/pull/3156)) - Create links out to gitter and discourse from the new issue options ([#3153](https://github.com/jupyter-widgets/ipywidgets/pull/3153)) - Adapt the milestone_check script from JupyterLab for ipywidgets. ([#3091](https://github.com/jupyter-widgets/ipywidgets/pull/3091)) - Fix spec generation for traitlets 5 ([#3234](https://github.com/jupyter-widgets/ipywidgets/pull/3234)) - Add documentation issue template ([#3095](https://github.com/jupyter-widgets/ipywidgets/pull/3095)) - Add Binder links and badges ([#3164](https://github.com/jupyter-widgets/ipywidgets/pull/3164), [#3212](https://github.com/jupyter-widgets/ipywidgets/pull/3212), [#3151](https://github.com/jupyter-widgets/ipywidgets/pull/3151), [#3148](https://github.com/jupyter-widgets/ipywidgets/pull/3148), [#2701](https://github.com/jupyter-widgets/ipywidgets/pull/2701)) ### Contributors to this release ([GitHub contributors page for this release](https://github.com/jupyter-widgets/ipywidgets/graphs/contributors?from=2019-06-11&to=2022-08-05&type=c)) [@afonit](https://github.com/search?q=repo%3Ajupyter-widgets%2Fipywidgets+involves%3Aafonit+updated%3A2019-06-11..2022-08-05&type=Issues) | [@alex-rind](https://github.com/search?q=repo%3Ajupyter-widgets%2Fipywidgets+involves%3Aalex-rind+updated%3A2019-06-11..2022-08-05&type=Issues) | [@Alexboiboi](https://github.com/search?q=repo%3Ajupyter-widgets%2Fipywidgets+involves%3AAlexboiboi+updated%3A2019-06-11..2022-08-05&type=Issues) | [@azjps](https://github.com/search?q=repo%3Ajupyter-widgets%2Fipywidgets+involves%3Aazjps+updated%3A2019-06-11..2022-08-05&type=Issues) | [@blois](https://github.com/search?q=repo%3Ajupyter-widgets%2Fipywidgets+involves%3Ablois+updated%3A2019-06-11..2022-08-05&type=Issues) | [@bollwyvl](https://github.com/search?q=repo%3Ajupyter-widgets%2Fipywidgets+involves%3Abollwyvl+updated%3A2019-06-11..2022-08-05&type=Issues) | [@bsyouness](https://github.com/search?q=repo%3Ajupyter-widgets%2Fipywidgets+involves%3Absyouness+updated%3A2019-06-11..2022-08-05&type=Issues) | [@casperdcl](https://github.com/search?q=repo%3Ajupyter-widgets%2Fipywidgets+involves%3Acasperdcl+updated%3A2019-06-11..2022-08-05&type=Issues) | [@crahan](https://github.com/search?q=repo%3Ajupyter-widgets%2Fipywidgets+involves%3Acrahan+updated%3A2019-06-11..2022-08-05&type=Issues) | [@davidbrochart](https://github.com/search?q=repo%3Ajupyter-widgets%2Fipywidgets+involves%3Adavidbrochart+updated%3A2019-06-11..2022-08-05&type=Issues) | [@deisi](https://github.com/search?q=repo%3Ajupyter-widgets%2Fipywidgets+involves%3Adeisi+updated%3A2019-06-11..2022-08-05&type=Issues) | [@dependabot](https://github.com/search?q=repo%3Ajupyter-widgets%2Fipywidgets+involves%3Adependabot+updated%3A2019-06-11..2022-08-05&type=Issues) | [@elliothershberg](https://github.com/search?q=repo%3Ajupyter-widgets%2Fipywidgets+involves%3Aelliothershberg+updated%3A2019-06-11..2022-08-05&type=Issues) | [@fperez](https://github.com/search?q=repo%3Ajupyter-widgets%2Fipywidgets+involves%3Afperez+updated%3A2019-06-11..2022-08-05&type=Issues) | [@giswqs](https://github.com/search?q=repo%3Ajupyter-widgets%2Fipywidgets+involves%3Agiswqs+updated%3A2019-06-11..2022-08-05&type=Issues) | [@github-actions](https://github.com/search?q=repo%3Ajupyter-widgets%2Fipywidgets+involves%3Agithub-actions+updated%3A2019-06-11..2022-08-05&type=Issues) | [@hai-schrodinger](https://github.com/search?q=repo%3Ajupyter-widgets%2Fipywidgets+involves%3Ahai-schrodinger+updated%3A2019-06-11..2022-08-05&type=Issues) | [@ianhi](https://github.com/search?q=repo%3Ajupyter-widgets%2Fipywidgets+involves%3Aianhi+updated%3A2019-06-11..2022-08-05&type=Issues) | [@ibdafna](https://github.com/search?q=repo%3Ajupyter-widgets%2Fipywidgets+involves%3Aibdafna+updated%3A2019-06-11..2022-08-05&type=Issues) | [@jasongrout](https://github.com/search?q=repo%3Ajupyter-widgets%2Fipywidgets+involves%3Ajasongrout+updated%3A2019-06-11..2022-08-05&type=Issues) | [@jbpauly](https://github.com/search?q=repo%3Ajupyter-widgets%2Fipywidgets+involves%3Ajbpauly+updated%3A2019-06-11..2022-08-05&type=Issues) | [@joequant](https://github.com/search?q=repo%3Ajupyter-widgets%2Fipywidgets+involves%3Ajoequant+updated%3A2019-06-11..2022-08-05&type=Issues) | [@joseph2rs](https://github.com/search?q=repo%3Ajupyter-widgets%2Fipywidgets+involves%3Ajoseph2rs+updated%3A2019-06-11..2022-08-05&type=Issues) | [@jpn--](https://github.com/search?q=repo%3Ajupyter-widgets%2Fipywidgets+involves%3Ajpn--+updated%3A2019-06-11..2022-08-05&type=Issues) | [@jtpio](https://github.com/search?q=repo%3Ajupyter-widgets%2Fipywidgets+involves%3Ajtpio+updated%3A2019-06-11..2022-08-05&type=Issues) | [@keatonb](https://github.com/search?q=repo%3Ajupyter-widgets%2Fipywidgets+involves%3Akeatonb+updated%3A2019-06-11..2022-08-05&type=Issues) | [@kedarisetti](https://github.com/search?q=repo%3Ajupyter-widgets%2Fipywidgets+involves%3Akedarisetti+updated%3A2019-06-11..2022-08-05&type=Issues) | [@kefirbandi](https://github.com/search?q=repo%3Ajupyter-widgets%2Fipywidgets+involves%3Akefirbandi+updated%3A2019-06-11..2022-08-05&type=Issues) | [@maartenbreddels](https://github.com/search?q=repo%3Ajupyter-widgets%2Fipywidgets+involves%3Amaartenbreddels+updated%3A2019-06-11..2022-08-05&type=Issues) | [@manuvazquez](https://github.com/search?q=repo%3Ajupyter-widgets%2Fipywidgets+involves%3Amanuvazquez+updated%3A2019-06-11..2022-08-05&type=Issues) | [@marimeireles](https://github.com/search?q=repo%3Ajupyter-widgets%2Fipywidgets+involves%3Amarimeireles+updated%3A2019-06-11..2022-08-05&type=Issues) | [@MartinKolarik](https://github.com/search?q=repo%3Ajupyter-widgets%2Fipywidgets+involves%3AMartinKolarik+updated%3A2019-06-11..2022-08-05&type=Issues) | [@martinRenou](https://github.com/search?q=repo%3Ajupyter-widgets%2Fipywidgets+involves%3AmartinRenou+updated%3A2019-06-11..2022-08-05&type=Issues) | [@mbektas](https://github.com/search?q=repo%3Ajupyter-widgets%2Fipywidgets+involves%3Ambektas+updated%3A2019-06-11..2022-08-05&type=Issues) | [@meeseeksdev](https://github.com/search?q=repo%3Ajupyter-widgets%2Fipywidgets+involves%3Ameeseeksdev+updated%3A2019-06-11..2022-08-05&type=Issues) | [@meeseeksmachine](https://github.com/search?q=repo%3Ajupyter-widgets%2Fipywidgets+involves%3Ameeseeksmachine+updated%3A2019-06-11..2022-08-05&type=Issues) | [@mgeier](https://github.com/search?q=repo%3Ajupyter-widgets%2Fipywidgets+involves%3Amgeier+updated%3A2019-06-11..2022-08-05&type=Issues) | [@MicaelJarniac](https://github.com/search?q=repo%3Ajupyter-widgets%2Fipywidgets+involves%3AMicaelJarniac+updated%3A2019-06-11..2022-08-05&type=Issues) | [@minrk](https://github.com/search?q=repo%3Ajupyter-widgets%2Fipywidgets+involves%3Aminrk+updated%3A2019-06-11..2022-08-05&type=Issues) | [@MSeal](https://github.com/search?q=repo%3Ajupyter-widgets%2Fipywidgets+involves%3AMSeal+updated%3A2019-06-11..2022-08-05&type=Issues) | [@mwcraig](https://github.com/search?q=repo%3Ajupyter-widgets%2Fipywidgets+involves%3Amwcraig+updated%3A2019-06-11..2022-08-05&type=Issues) | [@NichtJens](https://github.com/search?q=repo%3Ajupyter-widgets%2Fipywidgets+involves%3ANichtJens+updated%3A2019-06-11..2022-08-05&type=Issues) | [@nmstoker](https://github.com/search?q=repo%3Ajupyter-widgets%2Fipywidgets+involves%3Anmstoker+updated%3A2019-06-11..2022-08-05&type=Issues) | [@partev](https://github.com/search?q=repo%3Ajupyter-widgets%2Fipywidgets+involves%3Apartev+updated%3A2019-06-11..2022-08-05&type=Issues) | [@pbugnion](https://github.com/search?q=repo%3Ajupyter-widgets%2Fipywidgets+involves%3Apbugnion+updated%3A2019-06-11..2022-08-05&type=Issues) | [@raziqraif](https://github.com/search?q=repo%3Ajupyter-widgets%2Fipywidgets+involves%3Araziqraif+updated%3A2019-06-11..2022-08-05&type=Issues) | [@rsheftel](https://github.com/search?q=repo%3Ajupyter-widgets%2Fipywidgets+involves%3Arsheftel+updated%3A2019-06-11..2022-08-05&type=Issues) | [@shaperilio](https://github.com/search?q=repo%3Ajupyter-widgets%2Fipywidgets+involves%3Ashaperilio+updated%3A2019-06-11..2022-08-05&type=Issues) | [@smeng9](https://github.com/search?q=repo%3Ajupyter-widgets%2Fipywidgets+involves%3Asmeng9+updated%3A2019-06-11..2022-08-05&type=Issues) | [@snickell](https://github.com/search?q=repo%3Ajupyter-widgets%2Fipywidgets+involves%3Asnickell+updated%3A2019-06-11..2022-08-05&type=Issues) | [@StefanBrand](https://github.com/search?q=repo%3Ajupyter-widgets%2Fipywidgets+involves%3AStefanBrand+updated%3A2019-06-11..2022-08-05&type=Issues) | [@stonebig](https://github.com/search?q=repo%3Ajupyter-widgets%2Fipywidgets+involves%3Astonebig+updated%3A2019-06-11..2022-08-05&type=Issues) | [@SylvainCorlay](https://github.com/search?q=repo%3Ajupyter-widgets%2Fipywidgets+involves%3ASylvainCorlay+updated%3A2019-06-11..2022-08-05&type=Issues) | [@thomasaarholt](https://github.com/search?q=repo%3Ajupyter-widgets%2Fipywidgets+involves%3Athomasaarholt+updated%3A2019-06-11..2022-08-05&type=Issues) | [@trungleduc](https://github.com/search?q=repo%3Ajupyter-widgets%2Fipywidgets+involves%3Atrungleduc+updated%3A2019-06-11..2022-08-05&type=Issues) | [@vidartf](https://github.com/search?q=repo%3Ajupyter-widgets%2Fipywidgets+involves%3Avidartf+updated%3A2019-06-11..2022-08-05&type=Issues) | [@willingc](https://github.com/search?q=repo%3Ajupyter-widgets%2Fipywidgets+involves%3Awillingc+updated%3A2019-06-11..2022-08-05&type=Issues) | [@zerline](https://github.com/search?q=repo%3Ajupyter-widgets%2Fipywidgets+involves%3Azerline+updated%3A2019-06-11..2022-08-05&type=Issues) ## 7.7.1 To see the full list of pull requests, see the [7.7.1 milestone](https://github.com/jupyter-widgets/ipywidgets/milestone/36?closed=1) on GitHub. Highlights include: - Fix broken link icon for FontAwesome 4 and 5 [#3495](https://github.com/jupyter-widgets/ipywidgets/pull/3495) - Fix message throttling bug [#3494](https://github.com/jupyter-widgets/ipywidgets/pull/3494) - Fix state message parsing to be more permissive [#3486](https://github.com/jupyter-widgets/ipywidgets/pull/3486) - Fix tests on Python 3.11 [#3480](https://github.com/jupyter-widgets/ipywidgets/pull/3480) - Add better front-page docs [#3496](https://github.com/jupyter-widgets/ipywidgets/pull/3496) 7.7 --- To see the full list of pull requests and issues, see the [7.7 milestone](https://github.com/jupyter-widgets/ipywidgets/milestone/35?closed=1) on GitHub. Highlights include: - Fix installation on Python 3.10. [#3368](https://github.com/jupyter-widgets/ipywidgets/pull/3368) - Throw an error if we cannot render a widget, enabling the rendering system to fall back to rendering a different data type if available. [#3290](https://github.com/jupyter-widgets/ipywidgets/pull/3290) - Create a new widget control comm channel, enabling more efficient fetching of kernel widget state. [#3201](https://github.com/jupyter-widgets/ipywidgets/pull/3021) - Refactor logic for fetching kernel widget state to the manager base class. This logic first tries to use the new widget control comm channel, falling back to the existing method of requesting each widget's state individually. [#3337](https://github.com/jupyter-widgets/ipywidgets/pull/3337) - Enable HTMLManager output widgets to render state updates. [#3372](https://github.com/jupyter-widgets/ipywidgets/pull/3372) - Do not reset JupyterLab CSS variables if they are already defined. [#3344](https://github.com/jupyter-widgets/ipywidgets/pull/3344) - Fix variable inspector example. [#3302](https://github.com/jupyter-widgets/ipywidgets/pull/3302) - Introduce new widget manager `has_model` method for synchronously checking if a widget model is registered. [#3377](https://github.com/jupyter-widgets/ipywidgets/pull/3377) - Work around bug in Chrome rendering Combobox arrows. [#3375](https://github.com/jupyter-widgets/ipywidgets/pull/3375) - Optionally echo update messages from frontends to other frontends. This enables widget views in different frontends to maintain consistent state simultaneously, and also makes sure that simultaneous updates from the kernel and frontend resolve to a consistent state. This is off by default in ipywidgets 7.7, and it is anticipated this will be on by default in ipywidgets 8.0. To enable echo update messages across ipywidgets, set the environment variable `JUPYTER_WIDGETS_ECHO` to 1. To opt a specific attribute out of echo updates, tag the attribute with `echo_update=False` metadata (we do this in core for the FileUpload widget's `data` attribute). [#3400](https://github.com/jupyter-widgets/ipywidgets/pull/3400), [#3394](https://github.com/jupyter-widgets/ipywidgets/pull/3394) ## 7.6 To see the full list of pull requests and issues, see the [7.6.0 milestone](https://github.com/jupyter-widgets/ipywidgets/milestone/31?closed=1) on GitHub. The main change in this release is that installing `ipywidgets` 7.6.0 will now automatically enable ipywidgets support in JupyterLab 3.0—a user has no extra JupyterLab installation step and no rebuild of JupyterLab, nor do they need Node.js installed. Simply install the python ipywidgets package with pip (`pip install ipywidgets==7.6.0`) or conda/mamba (`conda install -c conda-forge ipywidgets=7.6.0`) and ipywidgets will automatically work in classic Jupyter Notebook and in JupyterLab 3.0. This is accomplished with the new python package `jupyterlab_widgets` version 1.0, on which `ipywidgets` 7.6.0 now depends (similar to how `ipywidgets` already depends on the `widgetsnbextension` package to configure ipywidgets for the classic Jupyter Notebook). The `jupyterlab_widgets` Python package is a JupyterLab 3.0 prebuilt extension, meaning that it can be installed into JupyterLab 3.0 without rebuilding JupyterLab and without needing Node.js installed. ### Updates for Widget Maintainers Custom widget maintainers will need to make two changes to update for JupyterLab 3: 1. Update the `@jupyter-widgets/base` dependency version to include `^4` to work in JupyterLab 3.0. For example, if you had a dependency on `@jupyter-widgets/base` version `^2 || ^3`, update to `^2 || ^3 || ^4` for your widget to work in classic Jupyter Notebook, JupyterLab 1, JupyterLab 2, and JupyterLab 3. See [#2472](https://github.com/jupyter-widgets/ipywidgets/pull/2472) for background. 2. In the `package.json`, add the following `sharedPackages` configuration inside the `jupyterlab` key. See the [JupyterLab extension documentation](https://jupyterlab.readthedocs.io/en/stable/extension/extension_dev.html#requiring-a-service) for more information. ```json "jupyterlab": { "sharedPackages": { "@jupyter-widgets/base": { "bundled": false, "singleton": true } } } ``` Separate from these two steps to update for JupyterLab 3, we also recommend that you make your widget's JupyterLab extension a prebuilt extension for JupyterLab 3.0. Users will be able to install your JupyterLab 3.0 prebuilt extension without rebuilding JupyterLab or needing Node.js. See the [JupyterLab 3 extension developer documentation](https://jupyterlab.readthedocs.io/en/stable/extension/extension_dev.html) or the new [widget extension cookiecutter](https://github.com/jupyter-widgets/widget-ts-cookiecutter/tree/jlab3) for more details. ## 7.5 To see the full list of pull requests and issues, see the [7.5 milestone](https://github.com/jupyter-widgets/ipywidgets/milestone/268?closed=1) on GitHub. Changes include: - New `AppLayout` and `GridLayout` templates for positioning interactive widgets. [#2333](https://github.com/jupyter-widgets/ipywidgets/pull/2333) - New `FileUpload` widget allowing users to upload files from the browser. [#2258](https://github.com/jupyter-widgets/ipywidgets/pull/2258) - New `ComboBox` widget. [#2390](https://github.com/jupyter-widgets/ipywidgets/pull/2390) - JupyterLab CSS variables are now exposed by default even in the case of the classic notebook. [#2418](https://github.com/jupyter-widgets/ipywidgets/pull/2418) ### Updates for Widget Maintainers Custom widget maintainers will need to update their `@jupyter-widgets/base` dependency version to work in JupyterLab 1.0. For example, if you had a dependency on `@jupyter-widgets/base` version `^1.1`, update to `^1.1 || ^2` for your widget to work in classic notebook, JupyterLab 0.35, and JupyterLab 1.0. See [#2472](https://github.com/jupyter-widgets/ipywidgets/pull/2472) for background. ## 7.4 To see the full list of pull requests and issues, see the [7.4 milestone](https://github.com/jupyter-widgets/ipywidgets/milestone/26?closed=1) on GitHub. Changes include: - New `Video` and `Audio` widgets have been introduced. [#2162](https://github.com/jupyter-widgets/ipywidgets/pull/2162) We updated the `@jupyter-widgets/controls` widget specification version to `1.4.0`, leading to the version bump to 7.4. - The use of mappings for the `options` attribute of selection widgets is deprecated. [#2130](https://github.com/jupyter-widgets/ipywidgets/pull/2130) ## 7.3 To see the full list of pull requests and issues, see the [7.3 milestone](https://github.com/jupyter-widgets/ipywidgets/milestone/26?closed=1) on GitHub. Changes include: - A new `GridBox` widget is introduced and associated CSS grid properties are added to the layout. This enables using the CSS Grid spec for laying out widgets. See the [Widget Styling](http://ipywidgets.readthedocs.io/en/stable/examples/Widget%20Styling.html) documentation for some examples. Because of this and other model specification changes, the view and module versions of widgets was incremented in both the base and controls packages. ([#2107](https://github.com/jupyter-widgets/ipywidgets/pull/2107), [#2064](https://github.com/jupyter-widgets/ipywidgets/pull/2064), [#1942](https://github.com/jupyter-widgets/ipywidgets/issues/1942)) - Widgets with a `description` attribute now also have a `description_tooltip` attribute to set a tooltip on the description. The tooltip defaults to the description text. Setting `description_tooltip` to `''` removes it, and setting it to `None` makes the tooltip default to the description text. ([#2070](https://github.com/jupyter-widgets/ipywidgets/pull/2070)) - `'transparent'` is now a valid color for color attributes. ([#2128](https://github.com/jupyter-widgets/ipywidgets/pull/2128)) - Dropdowns now have extra padding to make room for the dropdown arrow. ([#2052](https://github.com/jupyter-widgets/ipywidgets/issues/2052), [#2101](https://github.com/jupyter-widgets/ipywidgets/pull/2101)) - Image widget `repr` now truncates the image value to prevent huge amounts of output in notebooks. ([#2111](https://github.com/jupyter-widgets/ipywidgets/pull/2111)) - Python 3.3 support is dropped. Python 3.3 support was dropped in the Python community in [September 2017](https://www.python.org/dev/peps/pep-0398/#x-end-of-life). ([#2129](https://github.com/jupyter-widgets/ipywidgets/pull/2129)) - The license information has been consolidated into the LICENSE file, and the COPYING.md file is removed. If you are repackaging ipywidgets or widgetsnbextension, please make sure to include LICENSE instead of COPYING.md. ([#2133](https://github.com/jupyter-widgets/ipywidgets/pull/2133), [#2048](https://github.com/jupyter-widgets/ipywidgets/pull/2048), [#1701](https://github.com/jupyter-widgets/ipywidgets/issues/1701), [#1706](https://github.com/jupyter-widgets/ipywidgets/pull/1706)) ## 7.2 To see the full list of pull requests and issues, see the [7.2 milestone](https://github.com/jupyter-widgets/ipywidgets/milestone/25?closed=1) on GitHub. User-visible changes include: - A new `FloatLogSlider` widget is a slider with a log scale, suitable for exploring a wide range of magnitudes. ([#1928](https://github.com/jupyter-widgets/ipywidgets/pull/1928), [#2014](https://github.com/jupyter-widgets/ipywidgets/pull/2014)) ```python from ipywidgets import FloatLogSlider FloatLogSlider() ``` - `link` and `dlink` are now exported from ipywidgets for convenience, so that you can import them directly from ipywidgets instead of needing to import them from traitlets. ([#1923](https://github.com/jupyter-widgets/ipywidgets/pull/1923)) - A new option `manual_name` has been added to `interact_manual()` to change the name of the update button, for example `interact_manual(manual_name='Update')`. ([#1924](https://github.com/jupyter-widgets/ipywidgets/pull/1923)) - The Output widget now has a `.capture()` method, which returns a decorator to capture the output of a function. ```python from ipywidgets import Output out = Output() @out.capture() def f(): print('This output is captured') ``` The `.capture()` method has a `clear_output` boolean argument to automatically clear the output every time the function is run, as well as a `wait` argument corresponding to the `clear_output` wait argument. ([#1934](https://github.com/jupyter-widgets/ipywidgets/pull/1934)) - The Output widget has much more comprehensive documentation in its own section. ([#2020](https://github.com/jupyter-widgets/ipywidgets/pull/2020)) - Installing `widgetsnbextension` now automatically enables the nbextension in Jupyter Notebook 5.3 or later. ([#1911](https://github.com/jupyter-widgets/ipywidgets/pull/1911)) - The default rendering of a widget if widgets are not installed is now a short description of the widget in text instead of a much longer HTML message. ([#2007](https://github.com/jupyter-widgets/ipywidgets/pull/2007)) Changes for developers include: - The JavaScript base widget manager class now has a `resolveUrl` method to resolve a URL relative to the current notebook location. ([#1993](https://github.com/jupyter-widgets/ipywidgets/pull/1993)) - The html manager now exposes a way to specify which JavaScript file is fetched for a package and the loader used to fetch the library. ([#1995](https://github.com/jupyter-widgets/ipywidgets/pull/1995), [#1998](https://github.com/jupyter-widgets/ipywidgets/pull/1998)) - The `@jupyter-widgets/controls` widget specification version was bumped to `1.2.0`. Changes include the FloatLogSlider widget and more specific documentation about array element types. ([#2017](https://github.com/jupyter-widgets/ipywidgets/pull/2017)) ## 7.1 To see the full list of pull requests and issues, see the [7.1 milestone](https://github.com/jupyter-widgets/ipywidgets/milestone/23?closed=1) on GitHub. We updated the `@jupyter-widgets/controls` widget specification version to `1.1.0`, leading to the version bump to 7.1. The new widget model specification now includes new `description_width` and `font_weight` attributes for the `ToggleButtonsStyle` widget. There are also other bugfixes in this release. ## 7.0.x patch releases See the GitHub milestones for the [7.0.1](https://github.com/jupyter-widgets/ipywidgets/milestone/16?closed=1), [7.0.2](https://github.com/jupyter-widgets/ipywidgets/milestone/17?closed=1), [7.0.3](https://github.com/jupyter-widgets/ipywidgets/milestone/18?closed=1), [7.0.4](https://github.com/jupyter-widgets/ipywidgets/milestone/20?closed=1), and [7.0.5](https://github.com/jupyter-widgets/ipywidgets/milestone/21?closed=1) releases for bugfixes in these releases. ## 7.0 To see the full list of pull requests and issues, see the [7.0 milestone](https://github.com/jupyter-widgets/ipywidgets/milestone/12?closed=1) on GitHub. Major user-visible changes in ipywidgets 7.0 include: - Widgets are now displayed in the output area in the classic notebook and are treated as any other output. This allows the widgets to work more naturally with other cell output. To delete a widget, clear the output from the cell. Output from functions triggered by a widget view is appended to the output area that contains the widget view. This means that printed text will be appended to the output, and calling `clear_output()` will delete the entire output, including the widget view. ([#1274](https://github.com/jupyter-widgets/ipywidgets/pull/1274), [#1353](https://github.com/jupyter-widgets/ipywidgets/pull/1353)) - Removed the version validation check since it was causing too many false warnings about the widget javascript not being installed or the wrong version number. It is now up to the user to ensure that the ipywidgets and widgetsnbextension packages are compatible. ([#1219](https://github.com/jupyter-widgets/ipywidgets/pull/1219)) - The documentation theme is changed to the new standard Jupyter theme. ([#1363](https://github.com/jupyter-widgets/ipywidgets/pull/1363)) - The `layout` and `style` traits can be set with a dictionary for convenience, which will automatically converted to a Layout or Style object, like `IntSlider(layout={'width': '100%'}, style={'handle_color': 'lightgreen'})`. ([#1253](https://github.com/jupyter-widgets/ipywidgets/pull/1253)) - The Select widget now is a listbox instead of a dropdown, reverting back to the pre-6.0 behavior. ([#1238](https://github.com/jupyter-widgets/ipywidgets/pull/1238)) - The Select and SelectMultiple widgets now have a `rows` attribute for the number of rows to display, consistent with the Textarea widget. The `layout.height` attribute overrides this to control the height of the widget. ([#1250](https://github.com/jupyter-widgets/ipywidgets/pull/1250)) - Selection widgets (`Select`, `Dropdown`, `ToggleButtons`, etc.) have new `.value`, `.label`, and `.index` traits to make it easier to access or change the selected option. ([#1262](https://github.com/jupyter-widgets/ipywidgets/pull/1262), [#1513](https://github.com/jupyter-widgets/ipywidgets/pull/1513)) - Selection container widgets (`Accordion`, `Tabs`) can have their `.selected_index` set to `None` to deselect all items. ([#1495](https://github.com/jupyter-widgets/ipywidgets/pull/1495)) - The `Play` widget range is now inclusive (max value is max, instead of max-1), to be consistent with Sliders - The `Play` widget now has an optional repeat toggle button (visible by default). ([#1190](https://github.com/jupyter-widgets/ipywidgets/pull/1190)) - A refactoring of the text, slider, slider range, and progress widgets in resulted in the progress widgets losing their `step` attribute (which was previously ignored), and a number of these widgets changing their `_model_name` and/or `_view_name` attributes ([#1290](https://github.com/jupyter-widgets/ipywidgets/pull/1290)) - The `Checkbox` description is now on the right of the checkbox and is clickable. The `Checkbox` widget has a new `indent` attribute (defaults to `True`) to line up nicely with controls that have descriptions. To make the checkbox align to the left, set `indent` to `False`. ([#1346](https://github.com/jupyter-widgets/ipywidgets/pull/1346)) - A new Password widget, which behaves exactly like the Text widget, but hides the typed text: `Password()`. ([#1310](https://github.com/jupyter-widgets/ipywidgets/pull/1310)) - A new SelectionRangeSlider widget for selecting ranges from ordered lists of objects. For example, this enables having a slider to select a date range. ([#1356](https://github.com/jupyter-widgets/ipywidgets/pull/1356)) - The `Label` widget now has no width restriction. ([#1269](https://github.com/jupyter-widgets/ipywidgets/pull/1269)) - The description width is now configurable with the `.style.description_width` attribute ([#1376](https://github.com/jupyter-widgets/ipywidgets/pull/1376)) - ToggleButtons have a new `.style.button_width` attribute to set the CSS width of the buttons. Set this to `'initial'` to have buttons that individually size to the content width. ([#1257](https://github.com/jupyter-widgets/ipywidgets/pull/1257)) - The `readout_format` attribute of number sliders now validates its argument. ([#1550](https://github.com/jupyter-widgets/ipywidgets/pull/1550)) - The `IntRangeSlider` widget now has a `.readout_format` trait to control the formatting of the readout. ([#1446](https://github.com/jupyter-widgets/ipywidgets/pull/1446)) - The `Text`, `Textarea`, `IntText`, `BoundedIntText`, `FloatText`, and `BoundedFloatText` widgets all gained a `continuous_update` attribute (defaults to `True` for `Text` and `TextArea`, and `False` for the others). ([#1545](https://github.com/jupyter-widgets/ipywidgets/pull/1545)) - The `IntText`, `BoundedIntText`, `FloatText`, and `BoundedFloatText` widgets are now rendered as HTML number inputs, and have a `step` attribute that controls the resolution. ([#1545](https://github.com/jupyter-widgets/ipywidgets/pull/1545)) - The `Text.on_submit` callback is deprecated; instead, set `continuous_update` to `False` and observe the `value` attribute: `mywidget.observe(callback, 'value')`. The `Textarea.scroll_to_bottom` method was removed. ([#1545](https://github.com/jupyter-widgets/ipywidgets/pull/1545)) - The `msg_throttle` attribute on widgets is now gone, and the code has a hardcoded message throttle equivalent to `msg_throttle=1`. ([#1557](https://github.com/jupyter-widgets/ipywidgets/pull/1557)) - Using function annotations to specify interact controls for a function is now deprecated and will be removed in a future version of ipywidgets. ([#1292](https://github.com/jupyter-widgets/ipywidgets/pull/1292)) - There are now two simple ways to embed widgets in an HTML page: with a simple script tag that does not use require.js and does not support anything but the basic widgets, and a require module that does support custom widgets. See the migration guide for more details. ([#1615](https://github.com/jupyter-widgets/ipywidgets/pull/1615), [#1629](https://github.com/jupyter-widgets/ipywidgets/pull/1629), [#1630](https://github.com/jupyter-widgets/ipywidgets/pull/1630)) If you are developing a custom widget or widget manager, here are some major changes that may affect you. The [migration guide](./migration_guides.md) also walks through how to upgrade a custom widget. - On the Python/kernel side: - The Python `@register` decorator for widget classes no longer takes a string argument, but registers a widget class using the `_model_*` and `_view_*` traits in the class. Using the decorator as `@register('name')` is deprecated and should be changed to just `@register`. [#1228](https://github.com/jupyter-widgets/ipywidgets/pull/1228), [#1276](https://github.com/jupyter-widgets/ipywidgets/pull/1276) - Widgets will now need correct `_model_module` and `_view_module` Unicode traits defined. - Selection widgets now sync the index of the selected item, rather than the label. ([#1262](https://github.com/jupyter-widgets/ipywidgets/pull/1262)) - The Python `ipywidget.domwidget.LabeledWidget` is now `ipywidget.widget_description.DescriptionWidget`, and there is a new `ipywidget.widget_description.DescriptionStyle` that lets the user set the CSS width of the description. - Custom serializers can now return a structure that contains binary objects (`memoryview`, `bytearray`, or Python 3 `bytes` object). In this case, the sync message will be a binary message, which is much more efficient for binary data than base64-encoding. The Image widget now uses this binary synchronization. ([#1194](https://github.com/jupyter-widgets/ipywidgets/pull/1194), [#1595](https://github.com/jupyter-widgets/ipywidgets/pull/1595), [#1643](https://github.com/jupyter-widgets/ipywidgets/pull/1643)) - On the Javascript side: - The `jupyter-js-widgets` Javascript package has been split into `@jupyter-widgets/base` package (containing base widget classes, the DOM widget, and the associated layout and style classes), and the `@jupyter-widgets/controls` package (containing the rest of the Jupyter widgets controls). Authors of custom widgets will need to update to depend on `@jupyter-widgets/base` instead of `jupyter-js-widgets` (if you use a class from the controls package, you will also need to depend on `@jupyter-widgets/controls`). See the [cookie cutter](https://github.com/jupyter-widgets/widget-cookiecutter) to generate a simple example custom widget using the new packages. - Custom serializers in Javascript are now synchronous, and should return a snapshot of the widget state. The default serializer makes a copy of JSONable objects. ([#1270](https://github.com/jupyter-widgets/ipywidgets/pull/1270)) - Custom serializers can now return a structure that contains binary objects (`ArrayBuffer`, `DataView`, or a typed array such as `Int8Array`, `Float64Array`, etc.). In this case, the sync message will be a binary message, which is much more efficient for binary data than base64-encoding. The Image widget now uses this binary synchronization. ([#1194](https://github.com/jupyter-widgets/ipywidgets/pull/1194), [#1643](https://github.com/jupyter-widgets/ipywidgets/pull/1643)) - A custom serializer is given the widget instance as its second argument, and a custom deserializer is given the widget manager as its second argument. - The Javascript model `.id` attribute has been renamed to `.model_id` to avoid conflicting with the Backbone `.id` attribute. ([#1410](https://github.com/jupyter-widgets/ipywidgets/pull/1410)) - Regarding widget managers and the syncing message protocol: - The widget protocol was significantly overhauled. The new widget messaging protocol (version 2) is specified in the [version 2 protocol documentation](https://github.com/jupyter-widgets/ipywidgets/blob/main/jupyter-widgets-schema/messages.md). - Widgets are now displayed with a `display_data` message instead of with a custom comm message. See the [ipywidgets](https://github.com/jupyter-widgets/ipywidgets/blob/20cd0f050090b1b19bb9657b8c3fa42ae384cfca/ipywidgets/widgets/widget.py#L656) implementation for an example. ([#1274](https://github.com/jupyter-widgets/ipywidgets/pull/1274)) - Custom widget managers are now responsible completely for loading widget model and view classes. Widget managers should provide an output model and view class appropriate for their environment so that the `Output` widget works. ([#1313](https://github.com/jupyter-widgets/ipywidgets/pull/1313)) - The widget manager `clear_state` method no longer has a `commlessOnly` argument. All models in the widget manager will be closed and cleared when `clear_state` is called. ([#1354](https://github.com/jupyter-widgets/ipywidgets/pull/1354)) ## 6.0 Major user-visible changes in ipywidgets 6.0 include: - Rendering of Jupyter interactive widgets in various web contexts sphinx documentation: http://ipywidgets.readthedocs.io/en/latest/examples/Widget%20List.html nbviewer: http://nbviewer.jupyter.org/github/jupyter-widgets/ipywidgets/blob/main/docs/source/examples/Widget%20List.ipynb Static web pages: http://jupyter.org/widgets - Addition of a DatePicker widget in the core widget collection. - Changes to the automatic control generation syntax in @interact, inspired by the Sage interact syntax. - Removal of APIs which had been deprecated in 5.0, including top-level styling in attributes of DOMWidgets and some corner cases in the behavior of `@interact`. - A new API for custom styling of widgets is provided, through a top-level `style` attribute. For example, the color of a slider handler can be set by `slider.style.handle_color`. - Removal of the Proxy and PlaceProxy widgets. - Removal of the deprecated `FlexBox` widget. Use the `Box`, `HBox`, or `VBox` widgets instead. Various flex properties can be set using the `layout` attribute. - Removal of the deprecated `Latex` widget. Use the new `HTMLMath` widget with Latex math inside `$` or `$$` delimiters instead. - Removal of the deprecated layout properties on a widget such as `.width`, `.height`, etc. Use the `layout` attribute with a `Layout` widget to manage various layout properties instead. - The `Label` widget now has styling to make it consistent with labels on various widgets. To have freeform text with mathematics, use the new `HTMLMath` widget. - Removal of the `button_style` attribute of the Dropdown widget - Addition of an OutputWidget for capturing output and rich display objects. @interact has changed to use an OutputWidget for function output instead of overwriting the output area of a cell. - The jupyter-js-widgets Javascript implementation now relies on the PhosphorJS framework for the management of rich layout and a better integration of JupyterLab. - Numerous bug fixes. _Note for custom widget authors:_ ipywidgets 6.0 breaks backward compatibility with respect to the handling of default values of the JavaScript side. Now, the default values for core widget models are specified with a `default()` method returning a dictionary instead of a `default` dictionary attribute. If you want your library to be backwards compatible with ipywidgets 5.x, you could use [\_.result](http://underscorejs.org/#result) like this: ```javascript ... defaults: function() { return _.extend(_.result(this, 'widgets.DOMWidgetModel.prototype.defaults'), { .... }) }, ... ``` This should not have an impact when using your custom widgets in the classic notebook, but will be really important when deploying your interactive widgets in web contexts. ## 5.x ## 4.1.x ### 4.1.1 ### 4.1.0 ## 4.0.x ### 4.0.3 Bump version with miscellaneous bug fixes. ### 4.0.2 Add README.rst documentation. ### 4.0.1 Remove ipynb checkpoints. ### 4.0.0 First release of **ipywidgets** as a standalone package. ipywidgets-8.1.1/docs/source/conf.py000066400000000000000000000125121450026722000174370ustar00rootroot00000000000000#!/usr/bin/env python3 # import os import sys from pathlib import Path from packaging.version import Version HERE = Path(__file__).parent LITE = HERE.parent / "lite" ROOT = HERE.parent.parent JLW = ROOT / "python/jupyterlab_widgets" IPYW = ROOT / "python/ipywidgets" WIDG = ROOT / "python/widgetsnbextension" TYPD = HERE.parent / "typedoc" NODM = ROOT / "node_modules" TSBI = [ p.parent / "tsconfig.tsbuildinfo" for p in ROOT.glob("packages/*/tsconfig.json") ] # work around unpickleable functions sys.path.append(str(HERE)) from ipywidgets_docs_utils import jupyterlab_markdown_heading, run_if_needed # silence debug messages os.environ["PYDEVD_DISABLE_FILE_VALIDATION"] = "1" def on_config_inited(*args): """rebuild""" run_if_needed(["jlpm"], ROOT, [NODM]) run_if_needed(["jlpm", "build"], ROOT, TSBI) run_if_needed(["jlpm", "docs"], ROOT, [TYPD / "typedoc/index.html"]) for pkg_root in [IPYW, WIDG, JLW]: run_if_needed(["pyproject-build"], pkg_root, [pkg_root / "dist"]) run_if_needed(["jupyter", "lite", "build"], LITE) def setup(app): app.connect("config-inited", on_config_inited) # -- Sphinx extensions and configuration ------------------------ extensions = [ 'myst_nb', 'sphinx.ext.autodoc', 'sphinx.ext.autosummary', 'sphinx.ext.intersphinx', 'sphinx.ext.mathjax', 'sphinx_autodoc_typehints', 'sphinx_copybutton', 'sphinx.ext.viewcode', 'sphinxext.rediraffe', 'IPython.sphinxext.ipython_console_highlighting', ] intersphinx_mapping = { 'python': ('https://docs.python.org/3', None), 'ipython': ('https://ipython.readthedocs.io/en/stable/', None), 'nbconvert': ('https://nbconvert.readthedocs.io/en/stable', None), 'nbformat': ('https://nbformat.readthedocs.io/en/stable', None), 'traitlets': ('https://traitlets.readthedocs.io/en/stable', None), } # -- General information ------- _release = {} exec(compile(open('../../python/ipywidgets/ipywidgets/_version.py').read(), '../../python/ipywidgets/ipywidgets/_version.py', 'exec'), _release) v = Version(_release['__version__']) version = f'{v.major}.{v.minor}' release = _release['__version__'] # Add any paths that contain templates here, relative to this directory. # templates_path = ['_templates'] master_doc = 'index' project = 'Jupyter Widgets' copyright = '2017-2023 Project Jupyter' author = 'Jupyter Team' language = "en" exclude_patterns = [ '**.ipynb_checkpoints', 'examples.md', 'examples/Beat Frequencies.ipynb', 'examples/Controller.ipynb', 'examples/Exploring Graphs.ipynb', 'examples/Export As (nbconvert).ipynb', 'examples/Factoring.ipynb', 'examples/Imag*', 'examples/Index.ipynb', 'examples/Lorenz Differential Equations.ipynb', 'examples/Media widgets.ipynb', 'examples/Variable Inspector.ipynb', 'examples/Widget Alignment.ipynb', '_contents' ] pygments_style = 'sphinx' todo_include_todos = False myst_enable_extensions = [ "amsmath", "colon_fence", "deflist", "dollarmath", "html_image", ] myst_heading_anchors = 4 myst_heading_slug_func = jupyterlab_markdown_heading nb_execution_mode = "cache" nb_ipywidgets_js = { "require.js": {}, "embed-amd.js": {} } autosummary_generate = True autoclass_content = "both" autodoc_typehints = "none" autodoc_default_options = { "members": True, "show-inheritance": True, } rediraffe_redirects = { "typedoc/index": "_static/typedoc/index", "try/lab/index": "_static/lab/index", "try/retro/index": "_static/retro/tree/index", } # -- html -------------------------- html_theme = 'pydata_sphinx_theme' html_static_path = [ '_static', "../../packages/html-manager/dist", '../lite/_output', '../typedoc', '../../node_modules/requirejs/require.js', ] html_css_files = [ 'theme.css', ] templates_path = ["_templates"] htmlhelp_basename = 'ipywidgetsdoc' html_theme_options = { "icon_links": [ { "name": "PyPI", "url": "https://pypi.org/project/ipywidgets", "icon": "fa-solid fa-box", } ], "use_edit_page_button": True, "github_url": "https://github.com/jupyter-widgets/ipywidgets", "navbar_end": [ # disabled until widget dark variables are available # "theme-switcher", "navbar-icon-links", ] } html_context = { # disabled until widget dark variables are available "default_mode": "light", "doc_path": "docs", "github_repo": "ipywidgets", "github_user": "jupyter-widgets", "github_version": "main", } html_sidebars = { "index": [ "demo.html", "search-field.html", "sidebar-nav-bs-index.html", "sidebar-ethical-ads.html", ], "**": [ "search-field.html", "sidebar-nav-bs.html", "demo.html", "sidebar-ethical-ads.html", ] } # -- latex ------------------------- latex_elements = {} latex_documents = [ (master_doc, 'ipywidgets.tex', 'ipywidgets Documentation', 'https://jupyter.org', 'manual'), ] # -- tex --------------------------- texinfo_documents = [ (master_doc, 'ipywidgets', 'ipywidgets Documentation', author, 'ipywidgets', 'Interactive Widgets for Jupyter.', 'Miscellaneous'), ] # -- epub -------------------------- # Bibliographic Dublin Core info. epub_title = project epub_author = author epub_publisher = author epub_copyright = copyright ipywidgets-8.1.1/docs/source/contributing.md000066400000000000000000000007101450026722000211660ustar00rootroot00000000000000# Contributing The ipywidgets package is under the [Jupyter-Widgets](https://github.com/jupyter-widgets) [software subproject](https://jupyter.org/governance/software_subprojects.html). We appreciate contributions from the community. We follow the [IPython Contributing Guide](https://github.com/ipython/ipython/blob/main/CONTRIBUTING.md) and [Jupyter Contributing Guides](https://jupyter.readthedocs.io/en/latest/contributor/content-contributor.html). ipywidgets-8.1.1/docs/source/dev_docs.md000066400000000000000000000047751450026722000202640ustar00rootroot00000000000000# Develop and Build Documentation To build the documentation you'll need [Sphinx](https://www.sphinx-doc.org) and a few other packages. ## Setup documentation environment ### Use `mamba` or `conda` (recommended) First create a [conda environment](https://conda.pydata.org/docs/using/envs.html#use-environment-from-file) named `ipywidgets_docs` to install all the necessary packages: ```bash # create the environment mamba env update --file docs/environment.yml ``` Then, activate the environment. ```bash # activate the environment conda activate ipywidgets_docs # Linux and OS X activate ipywidgets_docs # Windows ``` ### Use `pip` Alternatively, it is also possible to create a virtual environment and activate it with the following commands: ```bash # create the environment python -m venv . # activate the environment source bin/activate ``` In the environment, install the packages: ```bash python -m pip install -r docs/requirements.txt ``` ```{hint} Building the documentation site requires a working `nodejs` installation, which can be installed with your package manager of choice, or directly from the [NodeJS website](https://nodejs.org). ``` ## Build the documentation Once you have installed the required packages, you can build the docs with: ```bash cd docs/source sphinx-build -T -E -b html -d ../build/doctrees -D language=en . ../build/html ``` After that, the generated HTML files will be available at `build/html/index.html`. You may view the docs in your browser by entering the following in the terminal: `open build/html/index.html`. Alternatively, you can start the built-in Python web server: ```bash cd docs/build/html python3 -m http.server -b 127.0,0.1 ``` ... and navigate to `http://localhost:8000/`. You should also have a look at the [Project Jupyter Documentation Guide](https://jupyter.readthedocs.io/en/latest/contrib_docs). ## Watch the documentation It is also possible to launch a web server which watches the sources and automatically rebuilds: ```bash cd docs/source sphinx-autobuild -T -E -b html -d ../build/doctrees -D language=en . ../build/html ``` ... and navigate to `http://localhost:8000/`. ## Cleaning notebook output for docs When using notebook source files to generate documentation, it's good practice to strip notebook output and metadata with [nbstripout](https://github.com/kynan/nbstripout) before committing the notebook. For example, the following command will strip all output from a notebook: ```bash nbstripout "docs/source/examples/Widget List.ipynb" ``` ipywidgets-8.1.1/docs/source/dev_install.md000066400000000000000000000067401450026722000207740ustar00rootroot00000000000000# Developer Install The core Jupyter Widgets packages are developed in the [https://github.com/jupyter-widgets/ipywidgets](https://github.com/jupyter-widgets/ipywidgets) git repository. ## Prerequisites To install ipywidgets from git, you will need: - [yarn](https://yarnpkg.com/) package manager ** version 1.2.1 or later ** - the latest [Jupyter Notebook development release](https://github.com/jupyter/notebook/releases) - Everything in the ipywidgets repository is developed using Jupyter notebook's `main` branch. - If you want to have a copy of ipywidgets that works against a stable version of the notebook, checkout the appropriate tag. - See the [Compatibility table](https://github.com/jupyter-widgets/ipywidgets#compatibility) - the latest [JupyterLab release](https://github.com/jupyterlab/jupyterlab/releases) ### Installing With Conda ```bash conda create -c conda-forge -n ipywidgets yarn notebook jupyterlab conda activate ipywidgets ipython kernel install --name ipywidgets --display-name "ipywidgets" --sys-prefix git clone https://github.com/jupyter-widgets/ipywidgets.git cd ipywidgets ./dev-install.sh ``` ### Installing with pip To do an editable install of the python ipywidgets package into the user site directory with pip, please navigate into the sub-folder `python/ipywidgets` with ```bash cd python/ipywidgets ``` and run ```bash pip install --prefix=$(python -m site --user-base) -e . ``` Using `pip install --user -e .` will not work due to a bug in pip. See https://github.com/pypa/pip/issues/7953 for more details. ## Rebuilding after making changes To build and test changes, run the following commands in the ipywidgets repository root directory, empty your browser's cache, and refresh the page. yarn clean yarn build If your changes are confined to one package (for example, just in the widgetsnbextension package), then it may be sufficient to just run `yarn build` in that specific directory. ## Tips and troubleshooting - If you have any problems with the above install procedure, make sure that permissions on npm and pip related install directories are correct. - Sometimes, it helps to clear cached files too by running `git clean -dfx` from the root of the cloned repository. - When you make changes to the Javascript and you're not seeing the changes, it could be your browser is caching aggressively. Try clearing the browser's cache. Try also using "incognito" or "private" browsing tabs to avoid caching. - If troubleshooting an upgrade and its build, you may need to do the following process: - Deep clean of the cloned repository: ``` git clean -dfx . ``` - Remove anything with `widgetsnbextension` in the name of files within the `conda` directory - Try reinstalling ipywidgets ## Updating widget model specification To update the widget model specification with changes, do something like this in the repo root: ``` python ./packages/schema/generate-spec.py -f json-pretty packages/schema/jupyterwidgetmodels.latest.json python ./packages/schema/generate-spec.py -f markdown packages/schema/jupyterwidgetmodels.latest.md ``` ## Releasing new versions See [dev_release.md](dev_release.md) for a details on how to release new versions of ipywidgets to PyPI and jupyter-widgets-controls on npm. ## Testing See [dev_testing.md](dev_testing.md) for a details on how to run Python and Javascript tests. ## Building documentation See [dev_docs.md](dev_docs.md) for a details on how to build the docs. ipywidgets-8.1.1/docs/source/dev_release.md000066400000000000000000000152401450026722000207410ustar00rootroot00000000000000# Developer Release Procedure To release a new version of the widgets on PyPI and npm, first checkout the `main` branch and `cd` into the repo root. ``` cd release conda deactivate conda remove --all -y -n releasewidgets rm -rf ipywidgets conda create -c conda-forge --override-channels -y -n releasewidgets notebook nodejs yarn=3 twine jupyterlab=4 jupyter-packaging python-build jq "python==3.9.*" conda activate releasewidgets git clone git@github.com:jupyter-widgets/ipywidgets.git cd ipywidgets ``` ## Fix the widget spec If there were changes in the widget model specification (i.e., any change made to any widget attributes), we need to update the model specification version and record the documented attributes. First, update the relevant model specification versions. For example, the commit https://github.com/jupyter-widgets/ipywidgets/commit/fca6f355605dc9e04062ce0eec4a7acbb5632ae2 updated the controls model version. We follow the semver spec for model version numbers, so model changes that are backwards-incompatible should be major version bumps, while backwards-compatible additions should be minor version bumps. Next, regenerate the model spec with the new version numbers by doing something like this in the repository root directory: ``` (cd python/ipywidgets; pip install -e .) python ./packages/schema/generate-spec.py -f json-pretty packages/schema/jupyterwidgetmodels.latest.json python ./packages/schema/generate-spec.py -f markdown packages/schema/jupyterwidgetmodels.latest.md ``` Copy `packages/schema/jupyterwidgetmodels.latest.md` to an appropriately-named markdown file (see the existing model spec files in that directory for the naming convention). This documents the widget model specification for a specific ipywidget release. Commit the changes (don't forget to `git add` the new model spec file). ## Publish the npm modules ``` # clean out all dirty files git checkout main git pull origin main git reset --hard origin/main git clean -fdx yarn install yarn run bump # Check the latest commit to make sure it is correct yarn publish ``` Lerna will prompt you for version numbers for each of the changed npm packages in the version step. Lerna will then change the versions appropriately (including the interdependency versions), commit, and tag. The `yarn publish` step then publishes the public packages that were versioned to npm. ## `jupyterlab_widgets` Go into the `python/jupyterlab_widgets` directory. Change `jupyterlab_widgets/_version.py` to reflect the new version number. ``` (cd python/jupyterlab_widgets && pyproject-build . && twine upload dist/*) ``` Verify that the package is uploaded. ``` curl -s https://pypi.org/pypi/jupyterlab-widgets/json | jq -r '[.releases[][] | [.upload_time, .digests.sha256, .filename] | join(" ")] | sort ' ``` ## `widgetsnbextension` Go into the `python/widgetsnbextension` directory. Change `widgetsnbextension/_version.py` to reflect the new version number. ``` (cd python/widgetsnbextension && pyproject-build . && twine upload dist/*) ``` Verify that the package is uploaded. ``` curl -s https://pypi.org/pypi/widgetsnbextension/json | jq -r '[.releases[][] | [.upload_time, .digests.sha256, .filename] | join(" ")] | sort ' ``` ## `ipywidgets` Go into the `python/ipywidgets` directory. Change `ipywidgets/_version.py` to reflect the new version number, and if necessary, a new `__html_manager_version__`. Change the `install_requires` parameter in `setup.cfg` reference the new widgetsnbextension and jupyterlab_widgets version. ``` (cd python/ipywidgets && pyproject-build . && twine upload dist/*) ``` Verify that the package is uploaded: ``` curl -s https://pypi.org/pypi/ipywidgets/json | jq -r '[.releases[][] | [.upload_time, .digests.sha256, .filename] | join(" ")] | sort ' ``` ## Push changes back Calculate the hashes of the uploaded files. You could use a small shell script, for example, like this on macOS (put in `scripts/hashes`): ```sh #!/bin/sh for f in $@ do echo "$f" echo md5: `md5 -q "$f"` echo sha1: `shasum -a 1 "$f" | awk '{print $1}'` echo sha256: `shasum -a 256 "$f" | awk '{print $1}'` echo done ``` Using the above script, you can do: ``` ./scripts/hashes python/ipywidgets/dist/* ./scripts/hashes python/widgetsnbextension/dist/* ./scripts/hashes python/jupyterlab_widgets/dist/* ``` Commit the changes you've made above, and include the uploaded files hashes in the commit message. Tag the release if ipywidgets was released. Push to origin `main` (and include the tag in the push), e.g: ``` git add -p git commit -m "Release: ipywidgets 8.1.2, widgetsnbextension 4.0.10, jupyterlab_widgets 3.0.10" git commit --amend git tag 8.1.2 git push origin main 8.1.2 ``` Update conda-forge packages (if the requirements changed to ipywidgets, make sure to update widgetsnbextension first). # Release Notes ## Changelog - Modify `scripts/milestone_check.py` to include the release and commit range for the release, and run `python scripts/milestone_check.py` to check the issues assigned to this milestone - Write release highlights. You can use the list generated below as a starting point: ```bash loghub jupyter-widgets/ipywidgets -m XXX -t $GITHUB_TOKEN --template scripts/release_template.txt ``` ## Example Here is an example of the release statistics for ipywidgets 7.0. It has been 157 days since the last release. In this release, we closed [127 issues](https://github.com/jupyter-widgets/ipywidgets/issues?q=is%3Aissue+is%3Aclosed+milestone%3A7.0) and [216 pull requests](https://github.com/jupyter-widgets/ipywidgets/pulls?q=is%3Apr+milestone%3A7.0+is%3Aclosed) with [1069](https://github.com/jupyter-widgets/ipywidgets/compare/6.0.0...7.0.0) commits, of which 851 are not merges. Here are some commands used to generate some of the statistics above. ``` # merges since in 6.0.0, but not 7.0.0, which is a rough list of merged PRs git log --merges 6.0.0...main --pretty=oneline # To really make sure we get all PRs, we could write a program that # pulled all of the PRs, examined a commit in each one, and did # `git tag --contains ` to see if that PR commit is included # in a previous release. # issues closed with no milestone in the time period # is:issue is:closed closed:"2016-07-14 .. 2017-02-28" # date of 6.0.0 tag git show -s --format=%cd --date=short 6.0.0^{commit} # Non-merge commits in 7.0.0 not in any 6.x release git log --pretty=oneline --no-merges ^6.0.0 main | wc -l # Authors of non-merge commits git shortlog -s 6.0.0..main --no-merges | cut -c8- | sort -f # New committers: authors unique in the 6.0.0..7.0.0 logs, but not in the 6.0.0 log comm -23 <(git shortlog -s -n 6.0.0..main --no-merges | cut -c8- | sort) <(git shortlog -s -n 6.0.0 --no-merges | cut -c8- | sort) | sort -f ``` ipywidgets-8.1.1/docs/source/dev_testing.md000066400000000000000000000067041450026722000210030ustar00rootroot00000000000000# Unit Tests To run the Python tests: ```sh pytest --cov=ipywidgets ./python/ipywidgets ``` To run the Javascript tests in each package directory: ```sh yarn test ``` This will run the test suite using `karma` with 'debug' level logging. # Visual Regression Tests `ipywidgets` uses the [Galata](https://github.com/jupyterlab/jupyterlab/tree/master/galata) framework for visual regression testing. Galata provides a high level API to programmatically interact with the JupyterLab UI, and tools for taking screenshots and generating test reports. UI tests are written in TypeScript and run with the Playwright test runner. The test suites are located in the [ui-tests/tests](https://github.com/jupyter-widgets/ipywidgets/tree/main/ui-tests/tests) directory. The [main test suite](https://github.com/jupyter-widgets/ipywidgets/tree/main/ui-tests/tests/widgets.test.ts) uploads a [notebook](https://github.com/jupyter-widgets/ipywidgets/tree/main/ui-tests/tests/notebooks/widgets.ipynb) to JupyterLab, runs it cell by cell and captures a screenshot of the cell outputs. The cell outputs correspond to widgets of different types. The cell outputs captures are then compared to the [reference snapshots](https://github.com/jupyter-widgets/ipywidgets/tree/main/ui-tests/tests/widgets.test.ts-snapshots/) to detect any visual regression. The test report (diffs, result, videos) is uploaded to GitHub as an artifact and accessible from the GitHub Actions page in `Artifacts` section. ## Running Tests Locally First install the dependencies: ```sh cd ui-tests yarn install ``` Galata needs to connect to a running instance of JupyterLab 3 to run UI tests. First launch JupyterLab and keep it running in a terminal window. ```sh # in ui-tests directory yarn start ``` Then run the `test` script: ```sh # in the ui-tests directory yarn test ``` You can pass additional arguments to `playwright` by appending parameters to the command. For example to run the test in headed mode, `yarn test --headed`. Checkout the [Playwright Command Line Reference](https://playwright.dev/docs/test-cli/) for more information about the available command line options. ## Adding new UI tests New test suites can be added to the [ui-tests/tests](https://github.com/jupyter-widgets/ipywidgets/tree/main/ui-tests/tests) directory. Their names need to end with `.test.ts`. You can see some additional example test suites in the [JupyterLab repo](https://github.com/jupyterlab/jupyterlab/blob/master/galata/test). If the tests in new suites are doing visual regression tests or HTML source regression tests then you also need to add their reference images to the `-snapshots` directories. ## Reference Image Captures When doing visual regression tests, it is important to use reference images that were generated in the same environment. Otherwise, even though the same browser is used for testing, there might be minor differences that could cause visual regression tests to fail. When adding a new visual regression test, first make sure your tests pass locally on your development environment, with a reference snapshots generated in your dev environment. You can generate new reference snapshots by running `yarn test:update`. To update the snapshots: - push the new changes to the branch - wait for the CI check to complete - go to the artifacts section and download the `ipywidgets-updated-snapshots` archive - extract the archive - copy the `-snapshots` directories to replace the existing ones - commmit and push the changes ipywidgets-8.1.1/docs/source/embedding.md000066400000000000000000000331261450026722000204040ustar00rootroot00000000000000# Embedding Jupyter Widgets in Other Contexts than the Notebook Jupyter interactive widgets can be serialized and embedded into - static web pages - sphinx documentation - html-converted notebooks on nbviewer Here, we discuss embedding widgets using the custom widget manager in the `@jupyter-widgets/html-manager` npm package. Two embedders are provided: 1. A basic embedder that only embeds standard controls, but can be used on any web page 2. An embedder that uses RequireJS, and can embed standard and custom widgets ## Embedding Widgets in HTML Web Pages The classic notebook interface provides a `Widgets` menu for generating an HTML snippet that can be embedded into any static web page: The menu provides three sets of actions - Save Notebook Widget State and Clear Notebook Widget State - Download Widget State - Embed Widgets ### Save Notebook Widget State A notebook file may be saved with the current widget state as metadata. This allows the notebook file to be rendered with rendered widgets (see the section about Sphinx below, for example). To save a notebook with the current widget state, use the `Save Notebook Widget State` menu item. In order to delete old saved state and save new state to the notebook, do the following in order: 1. Use the `Clear Notebook Widget State` menu and save the notebook. This clears the metadata from the notebook file. 2. Restart the kernel and refresh the page. This clears the old widget state from the widget manager on the page. 3. Create whatever widgets you'd like, and use `Save Notebook Widget State` and save the notebook. This saves the new widget state to the notebook file. ### Embeddable HTML Snippet The `Embed widgets` menu item provides a dialog containing an HTML page which embeds the current widgets. In order to support custom widgets, it uses the RequireJS embedder. This HTML snippet is composed of multiple `

Widget export

""" manager_state = json.dumps(data['manager_state']) widget_views = [json.dumps(view) for view in data['view_specs']] rendered_template = html_template.format(manager_state=manager_state, widget_views=widget_views) with open('export.html', 'w') as fp: fp.write(rendered_template) ``` The web page needs to load RequireJS and the Jupyter widgets HTML manager. You then need to include the manager state in a ` ``` If you want to use a specific version of the embedder, you replace the `@*` with a semver range, such as `@^0.9.0` #### Embedding custom widgets with RequireJS In order to embed third-party widgets, you can use the RequireJS-based embedding. First, make sure that RequireJS is loaded on the page, for example: ```html ``` Then include the following script, which defines the embedding libraries and runs the function to render widgets: ```html ``` If you want to use a specific version of the embedder, you replace the `@*` with a semver range, such as `@^0.9.0` If you need to embed custom widgets without using RequireJS, you'll need to compile your own embedding javascript that includes the third-party libraries. ipywidgets-8.1.1/docs/source/reference/000077500000000000000000000000001450026722000200755ustar00rootroot00000000000000ipywidgets-8.1.1/docs/source/reference/index.md000066400000000000000000000003411450026722000215240ustar00rootroot00000000000000# Reference ```{toctree} :caption: History :maxdepth: 1 ../changelog ``` ```{toctree} :caption: Python API :maxdepth: 1 ipywidgets ../genindex ../modindex ``` ```{toctree} :caption: JS API :maxdepth: 1 jupyter-widgets ``` ipywidgets-8.1.1/docs/source/reference/ipywidgets.md000066400000000000000000000105231450026722000226100ustar00rootroot00000000000000# `ipywidgets` ## Traits > Extra `traitlets` for custom effects ```{eval-rst} .. currentmodule:: ipywidgets .. automodule:: ipywidgets.widgets.trait_types :members: :special-members: ``` ## Widget Base Classes > Key base classes for Widgets ```{eval-rst} .. currentmodule:: ipywidgets .. automodule:: ipywidgets.widgets.widget :members: :special-members: ``` ```{eval-rst} .. currentmodule:: ipywidgets .. automodule:: ipywidgets.widgets.valuewidget :members: :special-members: ``` ```{eval-rst} .. currentmodule:: ipywidgets .. automodule:: ipywidgets.widgets.domwidget :members: :special-members: ``` ## Interactive > Opinions for auto-generating Widget user experiences ```{eval-rst} .. currentmodule:: ipywidgets .. automodule:: ipywidgets.widgets.interaction :members: :special-members: ``` ## Core Widgets > The core Widgets ```{eval-rst} .. currentmodule:: ipywidgets .. automodule:: ipywidgets.widgets.widget_bool :members: :special-members: ``` ```{eval-rst} .. currentmodule:: ipywidgets .. automodule:: ipywidgets.widgets.widget_box :members: :special-members: ``` ```{eval-rst} .. currentmodule:: ipywidgets .. automodule:: ipywidgets.widgets.widget_button :members: :special-members: ``` ```{eval-rst} .. currentmodule:: ipywidgets .. automodule:: ipywidgets.widgets.widget_color :members: :special-members: ``` ```{eval-rst} .. currentmodule:: ipywidgets .. automodule:: ipywidgets.widgets.widget_controller :members: :special-members: ``` ```{eval-rst} .. currentmodule:: ipywidgets .. automodule:: ipywidgets.widgets.widget_core :members: :special-members: ``` ```{eval-rst} .. currentmodule:: ipywidgets .. automodule:: ipywidgets.widgets.widget_date :members: :special-members: ``` ```{eval-rst} .. currentmodule:: ipywidgets .. automodule:: ipywidgets.widgets.widget_datetime :members: :special-members: ``` ```{eval-rst} .. currentmodule:: ipywidgets .. automodule:: ipywidgets.widgets.widget_description :members: :special-members: ``` ```{eval-rst} .. currentmodule:: ipywidgets .. automodule:: ipywidgets.widgets.widget_float :members: :special-members: ``` ```{eval-rst} .. currentmodule:: ipywidgets .. automodule:: ipywidgets.widgets.widget_int :members: :special-members: ``` ```{eval-rst} .. currentmodule:: ipywidgets .. automodule:: ipywidgets.widgets.widget_layout :members: :special-members: ``` ```{eval-rst} .. currentmodule:: ipywidgets .. automodule:: ipywidgets.widgets.widget_link :members: :special-members: ``` ```{eval-rst} .. currentmodule:: ipywidgets .. automodule:: ipywidgets.widgets.widget_media :members: :special-members: ``` ```{eval-rst} .. currentmodule:: ipywidgets .. automodule:: ipywidgets.widgets.widget_output :members: :special-members: ``` ```{eval-rst} .. currentmodule:: ipywidgets .. automodule:: ipywidgets.widgets.widget_selection :members: :special-members: ``` ```{eval-rst} .. currentmodule:: ipywidgets .. automodule:: ipywidgets.widgets.widget_selectioncontainer :members: :special-members: ``` ```{eval-rst} .. currentmodule:: ipywidgets .. automodule:: ipywidgets.widgets.widget_string :members: :special-members: ``` ```{eval-rst} .. currentmodule:: ipywidgets .. automodule:: ipywidgets.widgets.widget_style :members: :special-members: ``` ```{eval-rst} .. currentmodule:: ipywidgets .. automodule:: ipywidgets.widgets.widget_tagsinput :members: :special-members: ``` ```{eval-rst} .. currentmodule:: ipywidgets .. automodule:: ipywidgets.widgets.widget_templates :members: :special-members: ``` ```{eval-rst} .. currentmodule:: ipywidgets .. automodule:: ipywidgets.widgets.widget_time :members: :special-members: ``` ```{eval-rst} .. currentmodule:: ipywidgets .. automodule:: ipywidgets.widgets.widget_upload :members: :special-members: ``` ## Utilities ```{eval-rst} .. currentmodule:: ipywidgets .. automodule:: ipywidgets.widgets.docutils :members: :special-members: ``` ```{eval-rst} .. currentmodule:: ipywidgets .. automodule:: ipywidgets.widgets.utils :members: :special-members: ``` ## Top-level exports > These are seldom needed by users or widget authors ```{eval-rst} .. currentmodule:: ipywidgets .. automodule:: ipywidgets :members: :special-members: ``` ipywidgets-8.1.1/docs/source/reference/jupyter-widgets.md000066400000000000000000000013411450026722000235640ustar00rootroot00000000000000# `@jupyter-widgets` ## Packages - @jupyter-widgets/base - @jupyter-widgets/base-manager - @jupyter-widgets/controls - @jupyter-widgets/html-manager - @jupyter-widgets/jupyterlab-manager - @jupyter-widgets/output ipywidgets-8.1.1/docs/source/tutorials/000077500000000000000000000000001450026722000201655ustar00rootroot00000000000000ipywidgets-8.1.1/docs/source/tutorials/index.md000066400000000000000000000003521450026722000216160ustar00rootroot00000000000000# Tutorials ```{toctree} :caption: For Custom Widget Authors :maxdepth: 1 ../examples/Widget Custom ``` ```{hint} For a more in-depth tutorial, see the [dedicated GitHub repository](https://github.com/jupyter-widgets/tutorial). ``` ipywidgets-8.1.1/docs/source/user_install.md000066400000000000000000000121621450026722000211670ustar00rootroot00000000000000# Installation Users can install the current version of **ipywidgets** with [pip](https://pip.pypa.io/en/stable/) or [conda](https://conda.readthedocs.io/en/latest/). In most cases, installing the Python `ipywidgets` package will also automatically configure classic Jupyter Notebook and JupyterLab 3.x to display ipywidgets. With pip, do: ```bash pip install ipywidgets ``` or with conda, do: ```bash conda install -c conda-forge ipywidgets ``` ## Installing in JupyterLab 3.x Most of the time, installing `ipywidgets` automatically configures JupyterLab 3.x to use widgets. The `ipywidgets` package does this by depending on the `jupyterlab_widgets` package, which configures JupyterLab 3 to display and use widgets. If JupyterLab and the IPython kernel are installed in different environments (for example, separate environments are providing different Python kernels), then the installation requires two steps: 1. Install the `jupyterlab_widgets` package in the environment containing JupyterLab. 2. Install `ipywidgets` in each kernel's environment that will use ipywidgets. For example, if using conda environments, with JupyterLab installed on the `base` environment and the kernel installed in an environment called `pyenv`, the commands are: ```bash conda install -n base -c conda-forge jupyterlab_widgets conda install -n pyenv -c conda-forge ipywidgets ``` ## Installing in classic Jupyter Notebook Most of the time, installing `ipywidgets` automatically configures Jupyter Notebook to use widgets. The `ipywidgets` package does this by depending on the `widgetsnbextension` package, which configures the classic Jupyter Notebook to display and use widgets. If your Jupyter Notebook and the IPython kernel are installed in different environments (for example, separate environments are providing different Python kernels), then the installation requires two steps: 1. Install the `widgetsnbextension` package in the environment containing the Jupyter Notebook server. 2. Install `ipywidgets` in each kernel's environment that will use ipywidgets. For example, if using conda environments, with Jupyter Notebook installed on the `base` environment and the kernel installed in an environment called `pyenv`, the commands are: ```bash conda install -n base -c conda-forge widgetsnbextension conda install -n pyenv -c conda-forge ipywidgets ``` ## Installing into JupyterLab 1 or 2 To install the JupyterLab extension into JupyterLab 1 or 2, you also need to run the command below in a terminal which requires that you have [nodejs](https://nodejs.org/en/) installed. For example, if using conda environments, you can install nodejs with: ```bash conda install -c conda-forge nodejs ``` Then you can install the labextension: ```bash jupyter labextension install @jupyter-widgets/jupyterlab-manager ``` This command defaults to installing the latest version of the **ipywidgets** JupyterLab extension. Depending on the version of JupyterLab you have installed, you may need to install [an older version](https://github.com/jupyter-widgets/ipywidgets/tree/main/packages/jupyterlab-manager#version-compatibility). If you install this extension while JupyterLab is running, you will need to refresh the page or restart JupyterLab before the changes take effect. **Note:** A clean reinstall of the JupyterLab extension can be done by first running the `jupyter lab clean` command which will remove the staging and static directories from the lab directory. The location of the lab directory can be queried by executing the command `jupyter lab path` in your terminal. ## Installing into classic Jupyter Notebook 5.2 or earlier If you have an old version of Jupyter Notebook installed (version 5.2 or earlier), you may need to manually enable the ipywidgets notebook extension with: ```bash jupyter nbextension enable --py widgetsnbextension ``` When using [virtualenv](https://virtualenv.pypa.io/en/stable/) and working in an activated virtual environment, the `--sys-prefix` option may be required to enable the extension and keep the environment isolated (i.e. `jupyter nbextension enable --py widgetsnbextension --sys-prefix`). ## Frequently Asked Questions The issues in the [Reference milestone](https://github.com/jupyter-widgets/ipywidgets/issues?q=is%3Aopen+is%3Aissue+milestone%3AReference) on GitHub include many questions, discussions, and answers about ipywidgets. **Question**: When I display a widget or interact, I just see some text, such as `IntSlider(value=0)` or `interactive(children=(IntSlider(value=0, description='x', max=1), Output()), _dom_classes=('widget-interact',))`. What is wrong? **Answer**: A text representation of the widget is printed if the widget control is not available. It may mean the widget JavaScript is still loading. If the message persists in the Jupyter Notebook or JupyterLab, it likely means that the widgets JavaScript library is either not installed or not enabled. See the installation instructions above for setup instructions. If you see this message in another frontend (for example, a static rendering on GitHub or NBViewer), it may mean that your frontend doesn't currently support widgets. ipywidgets-8.1.1/docs/source/user_migration_guides.md000066400000000000000000000073031450026722000230530ustar00rootroot00000000000000# Migrating user code These are migration guides specifically for ipywidgets users. ## Migrating from 7.x to 8.0 For more details about the changes done for the 8.0 major version, please consult the [changelog](./changelog). ### Code #### FileUpload The `data` and `metadata` traits have been removed, and the `value` trait revamped to be a list of dicts containing the file information. The keys of these dicts are: - `content`: The buffer of file data - `name`: The name of the file - `type`: The MIME type of the file content - `size`: The size of the buffer in bytes - `last_modified`: A UTC datetime representing the "last modified" value reported for the file Suggested migration: Rewrite all usage of `FileUpload` to use the new structure. If you need to support both 7.x and 8.x, you can e.g. write functions `get_file_buffer` and similar to wrap reads from the widget: - For the `.value` attribute, to retrieve it in the original form, use `{f["name"]: f.content.tobytes() for f in uploader.value}`. - For the `.data` attribute, use `[f.content.tobytes() for f in uploader.value]`. - For the `.metadata` attribute, use `[{k: v for k, v in f.items() if k != "content"} for f in w.value]`. #### Tooltips As part of an effort to make it possible to [set tooltips for all widgets](https://github.com/jupyter-widgets/ipywidgets/pull/2680), the old `description_tooltip` attribute for certain widgets was deprecated. Now all widgets that inherit `DOMWidget` have the attribute `tooltip` instead. Suggested migration: Search and replace `description_tooltip` to `tooltip` when you no longer need to support ipywidgets 7. #### Description Sanitization The value of the `description` field of any widget that inherits `DescriptionWidget` (most widgets in ipywidgets) will now have its value sanitized for certain HTML content on the client side. If you are relying on HTML in this value, you might need to explicitly set the `description_allow_html` trait to `True`, depending on what kind of tags/attributes are used. Suggested migration: Only set `description_allow_html` if you are in full control of the value that is set. #### Layout.border While this change is strictly speaking backwards compatible, a word of caution is useful to those that want to use the new functionality: Four attributes have been added: `border_left`, `border_right`, `border_top` and `border_bottom`. These can be used to set the corresponding CSS border strings individually. Setting the `border` property overrides all of those four attributes to the new value of `border`. If the individual values are set to different values, _the `border` property will return `None` when you read its value_. #### Layout.overflow_x / overflow_y The previously deprecated traits `overflow_x` and `overflow_y` [have been removed](https://github.com/jupyter-widgets/ipywidgets/pull/2688). Please use the `overflow` trait instead. #### `Widget.widgets` and `Widget.widget_types` attributes The `Widget` class attributes `.widgets` and `.widget_types` are now deprecated and relocated to internal module-level private variables, opening up these attribute names on the `Widget` class for future uses. ### Deployments #### Embedded CDN Please note that the default CDN of ipywidgets has changed from unpkg to jsDelivr. If you rely on the CDN being unpkg, this can be overridden by specifying the data attribute `data-jupyter-widgets-cdn` on the HTML manager script tag. See [embedding](./embedding) for details. #### widgetsnbextension The `notebook` package is no longer a dependency of the `widgetsnbextension` package (therefore `notebook` is no longer a dependency of `ipywidgets`). If you need to install `notebook` with `ipywidgets`, you will need to install `notebook` explicitly. ipywidgets-8.1.1/examples/000077500000000000000000000000001450026722000155255ustar00rootroot00000000000000ipywidgets-8.1.1/examples/embed-amd/000077500000000000000000000000001450026722000173405ustar00rootroot00000000000000ipywidgets-8.1.1/examples/embed-amd/README.md000066400000000000000000000015251450026722000206220ustar00rootroot00000000000000# Using the HTML widget manager as a RequireJS AMD module ## Description This is an example project showing how to embed widgets in an HTML document using a RequireJS AMD module. In order to test the current development repo, make a symbolic link from the `packages/html-manager` directory to this directory and uncomment the `html-manager` paths config in `index.html`. The widget data in this example was generated from the following code: ```python from ipywidgets import VBox, jsdlink, IntSlider, Button s1, s2 = IntSlider(max=200, value=100), IntSlider(value=40) b = Button(icon='legal') jsdlink((s1, 'value'), (s2, 'max')) VBox([s1, s2, b]) ``` ## Try it 1. Start with a repository checkout, and run `yarn install` in the root directory. 2. Run `yarn build:examples` in the root directory. 3. Open the `index.html` file in this directory. ipywidgets-8.1.1/examples/embed-amd/index.html000066400000000000000000000166041450026722000213440ustar00rootroot00000000000000 ipywidgets-8.1.1/examples/web1/000077500000000000000000000000001450026722000163635ustar00rootroot00000000000000ipywidgets-8.1.1/examples/web1/README.md000066400000000000000000000010201450026722000176330ustar00rootroot00000000000000# Ad hoc widget manager for using Jupyter widgets in a plain web page ## Description This directory is an example project that shows how to use the Jupyter widgets library in a pure JavaScript context. This example implements a simple widget manager by extending the base widget manager from the `@jupyter-widgets/base` library. ## Try it 1. Start with a repository checkout, and run `yarn install` in the root directory. 2. Run `yarn build:examples` in the root directory. 3. Open the `index.html` file in this directory. ipywidgets-8.1.1/examples/web1/index.html000066400000000000000000000005631450026722000203640ustar00rootroot00000000000000

Widget Example 1

In this widget example, you will see a text box widget and a rendered HTML widget which are linked together. Type into the text box to see the HTML widget automatically updated. ipywidgets-8.1.1/examples/web1/index.js000066400000000000000000000040531450026722000200320ustar00rootroot00000000000000// Create a widget manager instance. var WidgetManager = require('./manager').WidgetManager; require('@jupyter-widgets/controls/css/widgets.css'); document.addEventListener('DOMContentLoaded', function (event) { var manager = new WidgetManager(document.body); /** * Helper function for creating and displaying widgets. * @return {Promise} */ function createWidget(widgetType, value, description) { // Create the widget model. return manager .new_model({ model_module: '@jupyter-widgets/controls', model_name: widgetType + 'Model', model_id: 'widget-1', // Create a view for the model. }) .then(function (model) { console.log(widgetType + ' model created'); model.set({ description: description || '', value: value, }); return manager.create_view(model); }, console.error.bind(console)) .then(function (view) { console.log(widgetType + ' view created'); manager.display_view(view); return view; }, console.error.bind(console)); } var defaultHTML = 'test text'; var textArea = createWidget('Textarea', defaultHTML, 'HTML:'); var html = createWidget('HTML', defaultHTML); // Create a link model. manager .new_model({ model_module: '@jupyter-widgets/controls', model_name: 'LinkModel', model_id: 'widget-2', state: { source: null, target: null, }, // Set the link model state. }) .then(function (link) { console.log('link created'); return Promise.all([textArea, html]).then(function (models) { console.log('setting link'); var textArea = models[0]; var html = models[1]; link.set({ source: [textArea.model, 'value'], target: [html.model, 'value'], }); link.save_changes(); console.log('link set'); }); }) .then(function () { var event = new Event('widgetsRendered'); document.dispatchEvent(event); }); }); ipywidgets-8.1.1/examples/web1/karma.config.js000066400000000000000000000033231450026722000212610ustar00rootroot00000000000000// Karma configuration // Generated on Mon Dec 07 2015 08:28:33 GMT-0800 (PST) module.exports = function (config) { var cfg = { // base path that will be used to resolve all patterns (eg. files, exclude) basePath: '', // frameworks to use // available frameworks: https://npmjs.org/browse/keyword/karma-adapter frameworks: ['mocha', 'chai'], // list of files / patterns to load in the browser files: ['built/index.built.js', 'test/**/*.js'], // list of files to exclude exclude: [], // test results reporter to use // possible values: 'dots', 'progress' // available reporters: https://npmjs.org/browse/keyword/karma-reporter reporters: ['mocha'], // web server port port: 9876, // enable / disable colors in the output (reporters and logs) colors: true, // level of logging // possible values: config.LOG_DISABLE || config.LOG_ERROR || config.LOG_WARN || config.LOG_INFO || config.LOG_DEBUG logLevel: config.LOG_INFO, browserNoActivityTimeout: 30000, // enable / disable watching file and executing tests whenever any file changes autoWatch: false, // start these browsers // available browser launchers: https://npmjs.org/browse/keyword/karma-launcher browsers: ['Chrome'], customLaunchers: { Chrome_travis_ci: { base: 'Chrome', flags: ['--no-sandbox'], }, }, // Continuous Integration mode // if true, Karma captures browsers, runs the tests and exits singleRun: true, // Concurrency level // how many browser should be started simultanous concurrency: Infinity, }; if (process.env.TRAVIS) { cfg.browsers = ['Chrome_travis_ci']; } config.set(cfg); }; ipywidgets-8.1.1/examples/web1/manager.js000066400000000000000000000034341450026722000203370ustar00rootroot00000000000000var base = require('@jupyter-widgets/base'); var ManagerBase = require('@jupyter-widgets/base-manager').ManagerBase; var controls = require('@jupyter-widgets/controls'); var LuminoWidget = require('@lumino/widgets').Widget; class WidgetManager extends ManagerBase { constructor(el) { super(); this.el = el; } loadClass(className, moduleName, moduleVersion) { return new Promise(function (resolve, reject) { if (moduleName === '@jupyter-widgets/controls') { resolve(controls); } else if (moduleName === '@jupyter-widgets/base') { resolve(base); } else { var fallback = function (err) { let failedId = err.requireModules && err.requireModules[0]; if (failedId) { console.log( `Falling back to jsDelivr for ${moduleName}@${moduleVersion}` ); window.require( [ `https://cdn.jsdelivr.net/npm/${moduleName}@${moduleVersion}/dist/index.js`, ], resolve, reject ); } else { throw err; } }; window.require([`${moduleName}.js`], resolve, fallback); } }).then(function (module) { if (module[className]) { return module[className]; } else { return Promise.reject( `Class ${className} not found in module ${moduleName}@${moduleVersion}` ); } }); } display_view(view) { var that = this; return Promise.resolve(view).then((view) => { LuminoWidget.attach(view.luminoWidget, that.el); return view; }); } _get_comm_info() { return Promise.resolve({}); } _create_comm() { return Promise.reject('no comms available'); } } exports.WidgetManager = WidgetManager; ipywidgets-8.1.1/examples/web1/package.json000066400000000000000000000022171450026722000206530ustar00rootroot00000000000000{ "name": "@jupyter-widgets/example-web1", "version": "8.0.8", "private": true, "description": "Project that tests the ability to npm install jupyter-js-widgets within an npm project.", "license": "BSD-3-Clause", "author": "IPython", "main": "index.js", "scripts": { "build": "webpack", "clean": "rimraf built", "test": "npm run test:firefox && npm run test:chrome", "test:chrome": "npm run test:default", "test:default": "karma start karma.config.js --log-level debug", "test:firefox": "npm run test:default -- --browsers Firefox", "test:firefox:headless": "npm run test:default -- --browsers=FirefoxHeadless" }, "dependencies": { "@jupyter-widgets/base": "^6.0.6", "@jupyter-widgets/base-manager": "^1.0.7", "@jupyter-widgets/controls": "^5.0.7" }, "devDependencies": { "chai": "^4.0.0", "css-loader": "^6.5.1", "karma": "^6.3.3", "karma-chai": "^0.1.0", "karma-chrome-launcher": "^3.1.0", "karma-firefox-launcher": "^2.1.1", "karma-mocha": "^2.0.1", "karma-mocha-reporter": "^2.2.5", "mocha": "^9.0.0", "style-loader": "^3.3.1", "webpack": "^5.65.0" } } ipywidgets-8.1.1/examples/web1/test/000077500000000000000000000000001450026722000173425ustar00rootroot00000000000000ipywidgets-8.1.1/examples/web1/test/index.js000066400000000000000000000020001450026722000207770ustar00rootroot00000000000000const widgetsRendered = new Promise((resolve, reject) => { setTimeout( () => reject(Error('timeout waiting for widgets to render')), 5000 ); // 5s timeout const listener = () => { resolve(); document.removeEventListener('widgetsRendered', listener); }; document.addEventListener('widgetsRendered', listener); }); describe('index.html', function () { this.timeout(10000); beforeEach(() => { return widgetsRendered; }); describe('textArea', () => { it('exists', () => { expect(document.querySelector('textarea')).to.be.ok; }); it('correct value', () => { expect(document.querySelector('textarea').value).to.equal( 'test text' ); }); }); describe('html', () => { it('exists', () => { expect(document.querySelector('div.widget-html')).to.be.ok; }); it('correct value', () => { expect( document.querySelector('div.widget-html-content').innerHTML ).to.equal('test text'); }); }); }); ipywidgets-8.1.1/examples/web1/webpack.config.js000066400000000000000000000005211450026722000215770ustar00rootroot00000000000000var path = require('path'); var webpack = require('webpack'); module.exports = { mode: 'development', devtool: 'source-map', entry: './index.js', output: { filename: 'index.built.js', path: path.resolve(__dirname, 'built'), }, module: { rules: [{ test: /\.css$/i, use: ['style-loader', 'css-loader'] }], }, }; ipywidgets-8.1.1/examples/web2/000077500000000000000000000000001450026722000163645ustar00rootroot00000000000000ipywidgets-8.1.1/examples/web2/README.md000066400000000000000000000022411450026722000176420ustar00rootroot00000000000000# Ad hoc widget manager reading a file with the `application/vnd.jupyter.widget-state+json` mime type. ## Description This directory is an example project that shows how to use the Jupyter widgets library in a pure JavaScript context. This example implements a simple widget manager by extending the base widget manager from the `@jupyter-widgets/base` library. This custom widget manager reads the state of the widget manager in the `widget_state.json` file, which respects the standardized JSON schema for the `application/vnd.jupyter.widget-state+json` mime type. Such a `widget_state.json` file can be generated from rendered widgets in the classic Jupyter Notebook with the _Download widget state_ action. This example also displays a read-only text area containing the code provided in the `widget_code.json`, which we used to generate the widget state. This example does not implement the communication with a Python backend. For such an example, check out the `web3` example. ## Try it 1. Start with a repository checkout, and run `yarn install` in the root directory. 2. Run `yarn build:examples` in the root directory. 3. Open the `index.html` file in this directory. ipywidgets-8.1.1/examples/web2/index.html000066400000000000000000000020541450026722000203620ustar00rootroot00000000000000

ipywidgets-8.1.1/examples/web2/index.js000066400000000000000000000020321450026722000200260ustar00rootroot00000000000000var CodeMirror = require('codemirror'); require('codemirror/lib/codemirror.css'); require('codemirror/mode/python/python'); var WidgetManager = require('./manager').WidgetManager; require('@jupyter-widgets/controls/css/widgets.css'); require('font-awesome/css/font-awesome.css'); document.addEventListener('DOMContentLoaded', function (event) { var code = require('./widget_code.py'); var inputarea = document.getElementsByClassName('inputarea')[0]; new CodeMirror(inputarea, { value: code, mode: 'python', tabSize: 4, showCursorWhenSelecting: true, viewportMargin: Infinity, readOnly: true, }); var state = require('./widget_state.json'); var widgetarea = document.getElementsByClassName('widgetarea')[0]; var manager = new WidgetManager(widgetarea); manager .set_state(state) .then((models) => manager.create_view( models.find( (element) => element.model_id == '8621699ecc804983a612f09b7dfe806b' ) ) ) .then((view) => manager.display_view(view)); }); ipywidgets-8.1.1/examples/web2/manager.js000066400000000000000000000034421450026722000203370ustar00rootroot00000000000000var base = require('@jupyter-widgets/base'); var ManagerBase = require('@jupyter-widgets/base-manager').ManagerBase; var controls = require('@jupyter-widgets/controls'); var LuminoWidget = require('@lumino/widgets').Widget; class WidgetManager extends ManagerBase { constructor(el) { super(); this.el = el; } loadClass(className, moduleName, moduleVersion) { return new Promise(function (resolve, reject) { if (moduleName === '@jupyter-widgets/controls') { resolve(controls); } else if (moduleName === '@jupyter-widgets/base') { resolve(base); } else { var fallback = function (err) { let failedId = err.requireModules && err.requireModules[0]; if (failedId) { console.log( `Falling back to jsDelivr for ${moduleName}@${moduleVersion}` ); window.require( [ `https://cdn.jsdelivr.net/npm/${moduleName}@${moduleVersion}/dist/index.js`, ], resolve, reject ); } else { throw err; } }; window.require([`${moduleName}.js`], resolve, fallback); } }).then(function (module) { if (module[className]) { return module[className]; } else { return Promise.reject( `Class ${className} not found in module ${moduleName}@${moduleVersion}` ); } }); } display_view(view) { var that = this; return Promise.resolve(view).then(function (view) { LuminoWidget.attach(view.luminoWidget, that.el); return view; }); } _get_comm_info() { return Promise.resolve({}); } _create_comm() { return Promise.reject('no comms available'); } } exports.WidgetManager = WidgetManager; ipywidgets-8.1.1/examples/web2/package.json000066400000000000000000000013561450026722000206570ustar00rootroot00000000000000{ "name": "@jupyter-widgets/example-web2", "version": "8.0.8", "private": true, "description": "Project that tests the ability to npm install jupyter-js-widgets within an npm project.", "license": "BSD-3-Clause", "author": "IPython", "main": "index.js", "scripts": { "build": "webpack", "clean": "rimraf built", "test": "npm run test:default", "test:default": "echo \"No test specified\"" }, "dependencies": { "@jupyter-widgets/base": "^6.0.6", "@jupyter-widgets/base-manager": "^1.0.7", "@jupyter-widgets/controls": "^5.0.7", "codemirror": "^5.48.0", "font-awesome": "^4.7.0" }, "devDependencies": { "css-loader": "^6.5.1", "style-loader": "^3.3.1", "webpack": "^5.65.0" } } ipywidgets-8.1.1/examples/web2/webpack.config.js000066400000000000000000000010471450026722000216040ustar00rootroot00000000000000var path = require('path'); var webpack = require('webpack'); module.exports = { mode: 'development', devtool: 'source-map', entry: './index.js', output: { filename: 'index.built.js', path: path.resolve(__dirname, 'built'), }, module: { rules: [ { test: /\.css$/i, use: ['style-loader', 'css-loader'] }, { test: /\.py$/i, type: 'asset/source' }, // required to load font-awesome { test: /\.(woff|woff2|eot|ttf|otf)$/i, type: 'asset/resource' }, { test: /\.svg$/i, type: 'asset' }, ], }, }; ipywidgets-8.1.1/examples/web2/widget_code.py000066400000000000000000000003041450026722000212100ustar00rootroot00000000000000from ipywidgets import VBox, jsdlink, IntSlider, Button s1, s2 = IntSlider(max=200, value=100), IntSlider(value=40) b = Button(icon='legal') jsdlink((s1, 'value'), (s2, 'max')) VBox([s1, s2, b]) ipywidgets-8.1.1/examples/web2/widget_state.json000066400000000000000000000110411450026722000217370ustar00rootroot00000000000000{ "version_major": 2, "version_minor": 0, "state": { "961d612211fe4c64a70f48942d885c14": { "model_name": "LayoutModel", "model_module": "@jupyter-widgets/base", "model_module_version": "1.0.0", "state": { "_model_module_version": "1.0.0", "_view_module_version": "1.0.0", "_view_count": 1 } }, "564e75ddea4c4ea0a32c4bd39ed0ed6d": { "model_name": "SliderStyleModel", "model_module": "@jupyter-widgets/controls", "model_module_version": "1.0.0", "state": { "_model_module_version": "1.0.0", "_view_module_version": "1.0.0", "_view_count": 1 } }, "a8b1ae50aada4d929397b907115bfc2c": { "model_name": "IntSliderModel", "model_module": "@jupyter-widgets/controls", "model_module_version": "1.0.0", "state": { "style": "IPY_MODEL_564e75ddea4c4ea0a32c4bd39ed0ed6d", "_view_module_version": "1.0.0", "max": 200, "value": 100, "_model_module_version": "1.0.0", "layout": "IPY_MODEL_961d612211fe4c64a70f48942d885c14", "_view_count": 1 } }, "b63481ca8b7943aa85d097a114a931f5": { "model_name": "LayoutModel", "model_module": "@jupyter-widgets/base", "model_module_version": "1.0.0", "state": { "_model_module_version": "1.0.0", "_view_module_version": "1.0.0", "_view_count": 1 } }, "d86e0cb348eb48bf97f14906a9406731": { "model_name": "SliderStyleModel", "model_module": "@jupyter-widgets/controls", "model_module_version": "1.0.0", "state": { "_model_module_version": "1.0.0", "_view_module_version": "1.0.0", "_view_count": 1 } }, "289e54d14b7c4c6d8ac18b4c86ab514c": { "model_name": "IntSliderModel", "model_module": "@jupyter-widgets/controls", "model_module_version": "1.0.0", "state": { "style": "IPY_MODEL_d86e0cb348eb48bf97f14906a9406731", "_view_module_version": "1.0.0", "value": 40, "_model_module_version": "1.0.0", "layout": "IPY_MODEL_b63481ca8b7943aa85d097a114a931f5", "_view_count": 1 } }, "bb589d8dc365404b94e73a153407128f": { "model_name": "LayoutModel", "model_module": "@jupyter-widgets/base", "model_module_version": "1.0.0", "state": { "_model_module_version": "1.0.0", "_view_module_version": "1.0.0", "_view_count": 1 } }, "19a24d8ea5a248be8db79790290ae2a1": { "model_name": "ButtonStyleModel", "model_module": "@jupyter-widgets/controls", "model_module_version": "1.0.0", "state": { "_model_module_version": "1.0.0", "_view_module_version": "1.0.0", "_view_count": 1 } }, "965bbfeaddd74b9baa488c7f6ac13027": { "model_name": "ButtonModel", "model_module": "@jupyter-widgets/controls", "model_module_version": "1.0.0", "state": { "style": "IPY_MODEL_19a24d8ea5a248be8db79790290ae2a1", "_view_module_version": "1.0.0", "icon": "legal", "_model_module_version": "1.0.0", "layout": "IPY_MODEL_bb589d8dc365404b94e73a153407128f", "_view_count": 1 } }, "6edd9d3360cc47c8aceff0ba11edeca9": { "model_name": "DirectionalLinkModel", "model_module": "@jupyter-widgets/controls", "model_module_version": "1.0.0", "state": { "_model_module_version": "1.0.0", "target": ["IPY_MODEL_289e54d14b7c4c6d8ac18b4c86ab514c", "max"], "source": ["IPY_MODEL_a8b1ae50aada4d929397b907115bfc2c", "value"], "_view_module_version": "1.0.0", "_view_name": "" } }, "d7d14e74f61f4b3bb5f53a713bcadced": { "model_name": "LayoutModel", "model_module": "@jupyter-widgets/base", "model_module_version": "1.0.0", "state": { "_model_module_version": "1.0.0", "_view_module_version": "1.0.0", "_view_count": 1 } }, "8621699ecc804983a612f09b7dfe806b": { "model_name": "VBoxModel", "model_module": "@jupyter-widgets/controls", "model_module_version": "1.0.0", "state": { "_view_module_version": "1.0.0", "children": [ "IPY_MODEL_a8b1ae50aada4d929397b907115bfc2c", "IPY_MODEL_289e54d14b7c4c6d8ac18b4c86ab514c", "IPY_MODEL_965bbfeaddd74b9baa488c7f6ac13027" ], "_model_module_version": "1.0.0", "layout": "IPY_MODEL_d7d14e74f61f4b3bb5f53a713bcadced", "_view_count": 1 } } } } ipywidgets-8.1.1/examples/web3/000077500000000000000000000000001450026722000163655ustar00rootroot00000000000000ipywidgets-8.1.1/examples/web3/.gitignore000066400000000000000000000000321450026722000203500ustar00rootroot00000000000000lib/ built/ node_modules/ ipywidgets-8.1.1/examples/web3/.jshintrc000066400000000000000000000000271450026722000202110ustar00rootroot00000000000000{ "esnext": true } ipywidgets-8.1.1/examples/web3/README.md000066400000000000000000000020161450026722000176430ustar00rootroot00000000000000# Using jupyter-js-widgets in non-notebook, web context ## Description This directory is an example project that shows how to use Jupyter widgets in a web context other than the notebook. This example requires a Jupyter notebook server to be running. The user is prompted with a dialog to provide the URL with a running notebook server. This example also displays read-only text area containing the code provided in the `widget_code.json`, which we used to generate the widget state. ## Try it 1. Start with a repository checkout, and run `yarn install` in the root directory. 2. Run `yarn build:examples` in the root directory. 3. Change to this directory 4. Run `yarn host` 5. In a new terminal run `python -m notebook --no-browser --NotebookApp.allow_origin="*" --NotebookApp.disable_check_xsrf=True --NotebookApp.token=''`. **WARNING: This starts an insecure Jupyter notebook server. Do not do this in production.** 6. In a web browser, navigate to `http://localhost:8080/` (or the address specified by the `yarn host` command) ipywidgets-8.1.1/examples/web3/index.html000066400000000000000000000020511450026722000203600ustar00rootroot00000000000000
ipywidgets-8.1.1/examples/web3/jupyter-logo.svg000066400000000000000000000253721450026722000215570ustar00rootroot00000000000000 Group.svg Created using Figma 0.90 ipywidgets-8.1.1/examples/web3/package.json000066400000000000000000000021161450026722000206530ustar00rootroot00000000000000{ "name": "@jupyter-widgets/example-web3", "version": "8.0.9", "private": true, "description": "Project that tests the ability to npm install jupyter-js-widgets within an npm project.", "license": "BSD-3-Clause", "author": "IPython", "main": "lib/index.js", "scripts": { "build": "npm run clean && tsc && node scripts/copyfiles.js && webpack", "clean": "rimraf lib && rimraf tsconfig.tsbuildinfo && rimraf built", "host": "http-server", "test": "npm run test:default", "test:default": "echo \"No test specified\"" }, "dependencies": { "@jupyter-widgets/base": "^6.0.6", "@jupyter-widgets/controls": "^5.0.7", "@jupyter-widgets/html-manager": "^1.0.9", "@jupyterlab/services": "^6.0.0 || ^7.0.0", "codemirror": "^5.48.0", "font-awesome": "^4.7.0", "http-server": "^14.0.0" }, "devDependencies": { "@types/codemirror": "^5.60.0", "@types/node": "^17.0.2", "css-loader": "^6.5.1", "fs-extra": "^10.0.0", "rimraf": "^3.0.2", "style-loader": "^3.3.1", "typescript": "~4.9.4", "webpack": "^5.65.0" } } ipywidgets-8.1.1/examples/web3/scripts/000077500000000000000000000000001450026722000200545ustar00rootroot00000000000000ipywidgets-8.1.1/examples/web3/scripts/copyfiles.js000066400000000000000000000002711450026722000224070ustar00rootroot00000000000000// Copyright (c) Jupyter Development Team. // Distributed under the terms of the Modified BSD License. var fs = require('fs-extra'); fs.copySync('src/widgets.css', 'lib/widgets.css'); ipywidgets-8.1.1/examples/web3/src/000077500000000000000000000000001450026722000171545ustar00rootroot00000000000000ipywidgets-8.1.1/examples/web3/src/index.ts000066400000000000000000000042601450026722000206350ustar00rootroot00000000000000import CodeMirror from 'codemirror'; import 'codemirror/lib/codemirror.css'; import 'codemirror/mode/python/python'; import 'font-awesome/css/font-awesome.css'; import { WidgetManager } from './manager'; import { KernelManager, ServerConnection, KernelMessage, } from '@jupyterlab/services'; const BASEURL = prompt('Notebook BASEURL', 'http://localhost:8888'); if (BASEURL === null) { alert('A base URL is needed to run the example!'); throw new Error('A base URL is needed to run the example!'); } const WSURL = 'ws:' + BASEURL.split(':').slice(1).join(':'); document.addEventListener('DOMContentLoaded', async function (event) { // Connect to the notebook webserver. const connectionInfo = ServerConnection.makeSettings({ baseUrl: BASEURL!, wsUrl: WSURL, }); const kernelManager = new KernelManager({ serverSettings: connectionInfo }); const kernel = await kernelManager.startNew(); // Create a codemirror instance const code = require('../widget_code.json').join('\n'); const inputarea = document.getElementsByClassName( 'inputarea' )[0] as HTMLElement; CodeMirror(inputarea, { value: code, mode: 'python', tabSize: 4, showCursorWhenSelecting: true, viewportMargin: Infinity, readOnly: true, }); // Create the widget area and widget manager const widgetarea = document.getElementsByClassName( 'widgetarea' )[0] as HTMLElement; const manager = new WidgetManager(kernel); // Run backend code to create the widgets. You could also create the // widgets in the frontend, like the other widget examples demonstrate. const execution = kernel.requestExecute({ code: code }); execution.onIOPub = async (msg): Promise => { // If we have a display message, display the widget. if (KernelMessage.isDisplayDataMsg(msg)) { const widgetData: any = msg.content.data['application/vnd.jupyter.widget-view+json']; if (widgetData !== undefined && widgetData.version_major === 2) { if (manager.has_model(widgetData.model_id)) { const model = await manager.get_model(widgetData.model_id)!; manager.display_view(manager.create_view(model), widgetarea); } } } }; }); ipywidgets-8.1.1/examples/web3/src/manager.ts000066400000000000000000000022151450026722000211360ustar00rootroot00000000000000import * as base from '@jupyter-widgets/base'; import { Kernel } from '@jupyterlab/services'; import { HTMLManager } from '@jupyter-widgets/html-manager'; import './widgets.css'; export class WidgetManager extends HTMLManager { constructor(kernel: Kernel.IKernelConnection) { super(); this.kernel = kernel; kernel.registerCommTarget(this.comm_target_name, async (comm, msg) => { const oldComm = new base.shims.services.Comm(comm); await this.handle_comm_open(oldComm, msg); }); } /** * Create a comm. */ async _create_comm( target_name: string, model_id: string, data?: any, metadata?: any ): Promise { const comm = this.kernel.createComm(target_name, model_id); if (data || metadata) { comm.open(data, metadata); } return Promise.resolve(new base.shims.services.Comm(comm)); } /** * Get the currently-registered comms. */ _get_comm_info(): Promise { return this.kernel .requestCommInfo({ target_name: this.comm_target_name }) .then((reply) => (reply.content as any).comms); } kernel: Kernel.IKernelConnection; } ipywidgets-8.1.1/examples/web3/src/widgets.css000066400000000000000000000005211450026722000213320ustar00rootroot00000000000000/* Copyright (c) Jupyter Development Team. * Distributed under the terms of the Modified BSD License. */ /* * This example shows how to customize the theming and still compile the CSS * down to something that all browsers support. */ @import '@jupyter-widgets/controls/css/widgets.css'; :root { --jp-widgets-border-width: 2px; } ipywidgets-8.1.1/examples/web3/tsconfig.json000066400000000000000000000002041450026722000210700ustar00rootroot00000000000000{ "extends": "../../tsconfigbase", "compilerOptions": { "outDir": "lib", "rootDir": "src" }, "include": ["src/*"] } ipywidgets-8.1.1/examples/web3/webpack.config.js000066400000000000000000000012351450026722000216040ustar00rootroot00000000000000const postcss = require('postcss'); var path = require('path'); const webpack = require('webpack'); module.exports = { mode: 'development', devtool: 'source-map', entry: './lib/index.js', output: { filename: 'index.built.js', path: path.resolve(__dirname, 'built'), }, module: { rules: [ { test: /\.css$/i, use: ['style-loader', 'css-loader'] }, // required to load font-awesome { test: /\.(woff|woff2|eot|ttf|otf)$/i, type: 'asset/resource' }, { test: /\.svg$/i, type: 'asset' }, ], }, plugins: [ new webpack.DefinePlugin({ process: { cwd: () => '/', env: {}, }, }), ], }; ipywidgets-8.1.1/examples/web3/widget_code.json000066400000000000000000000010471450026722000215370ustar00rootroot00000000000000[ "from ipywidgets import IntSlider, Output, Text, VBox", "from IPython.display import Image, display", "", "s = IntSlider(min=1, max=500, value=200, description='Width')", "t = Text(description='Area', disabled=True)", "o = Output()", "display(VBox([s, t, o]))", "", "def update(change=None):", " width = s.value", " t.value = str(width ** 2)", " o.outputs = ()", " img = Image(url='jupyter-logo.svg', width=width)", " o.append_display_data(img)", "", "s.observe(update, names='value')", "update()" ] ipywidgets-8.1.1/examples/web4/000077500000000000000000000000001450026722000163665ustar00rootroot00000000000000ipywidgets-8.1.1/examples/web4/README.md000066400000000000000000000023551450026722000176520ustar00rootroot00000000000000# Using the HTML widget manager ## Description This is an example project showing how to embed widgets in an HTML document. We use the local `index.built.js` that we build to make sure this example reflects the current state of the source repository. To use the latest release of the HTML wiget manager in your own project, copy the `index.html` file and replace `` with `` If you need a specific version of the HTML widget manager, you can include a semver range. For example: `` The widget data in this example was generated from the following code: ```python from ipywidgets import VBox, jsdlink, IntSlider, Button s1, s2 = IntSlider(max=200, value=100), IntSlider(value=40) b = Button(icon='legal') jsdlink((s1, 'value'), (s2, 'max')) VBox([s1, s2, b]) ``` ## Try it 1. Start with a repository checkout, and run `yarn install` in the root directory. 2. Run `yarn build:examples` in the root directory. 3. Open the `index.html` file in this directory. ipywidgets-8.1.1/examples/web4/index.html000066400000000000000000000150021450026722000203610ustar00rootroot00000000000000 ipywidgets-8.1.1/examples/web4/index.js000066400000000000000000000000641450026722000200330ustar00rootroot00000000000000require('@jupyter-widgets/html-manager/lib/embed'); ipywidgets-8.1.1/examples/web4/package.json000066400000000000000000000011771450026722000206620ustar00rootroot00000000000000{ "name": "@jupyter-widgets/example-web4", "version": "8.0.9", "private": true, "description": "Project that tests the ability to npm install jupyter-js-widgets within an npm project.", "license": "BSD-3-Clause", "author": "IPython", "main": "index.js", "scripts": { "build": "webpack", "clean": "rimraf built", "test": "npm run test:default", "test:default": "echo \"No test specified\"" }, "dependencies": { "@jupyter-widgets/html-manager": "^1.0.9", "font-awesome": "^4.7.0" }, "devDependencies": { "css-loader": "^6.5.1", "style-loader": "^3.3.1", "webpack": "^5.65.0" } } ipywidgets-8.1.1/examples/web4/webpack.config.js000066400000000000000000000007661450026722000216150ustar00rootroot00000000000000var path = require('path'); var webpack = require('webpack'); module.exports = { mode: 'development', devtool: 'source-map', entry: './index.js', output: { filename: 'index.built.js', path: path.resolve(__dirname, 'built'), }, module: { rules: [ { test: /\.css$/, use: ['style-loader', 'css-loader'] }, // required to load font-awesome { test: /\.(woff|woff2|eot|ttf|otf)$/i, type: 'asset/resource' }, { test: /\.svg$/i, type: 'asset' }, ], }, }; ipywidgets-8.1.1/lerna.json000066400000000000000000000001171450026722000157020ustar00rootroot00000000000000{ "npmClient": "yarn", "useWorkspaces": true, "version": "independent" } ipywidgets-8.1.1/package.json000066400000000000000000000046741450026722000162100ustar00rootroot00000000000000{ "private": true, "workspaces": [ "packages/*", "python/widgetsnbextension", "examples/*", "python/jupyterlab_widgets" ], "scripts": { "build": "lerna run build --stream --ignore \"@jupyter-widgets/example-*\"", "build:examples": "lerna run build --stream --scope \"@jupyter-widgets/example-*\" --include-filtered-dependencies", "build:labextension": "lerna run --stream build:labextension", "build:lib": "lerna run build --stream --scope \"@jupyter-widgets/meta\"", "build:nbextension": "lerna run --stream build:nbextension", "build:test": "lerna run build:test --stream --ignore \"@jupyter-widgets/example-*\"", "clean": "lerna run --stream clean", "docs": "typedoc", "eslint": "eslint . --fix --ignore-path .gitignore --ext .ts,.tsx", "eslint:check": "eslint . --ignore-path .gitignore --ext .ts,.tsx", "integrity": "node scripts/package-integrity.js", "integrity2": "node buildutils/lib/integrity.js", "lint": "yarn && yarn prettier && yarn eslint", "lint:check": "yarn prettier:check && yarn eslint:check", "prettier": "yarn prettier:base --list-different --write", "prettier:base": "prettier --ignore-path .gitignore \"**/*{.ts,.tsx,.js,.jsx,.css,.json,.yml,.yaml,.md}\"", "prettier:check": "yarn prettier:base --check", "publish": "yarn clean && yarn build && lerna publish --pre-dist-tag next from-git", "sort-package-json": "lerna exec --stream --parallel sort-package-json && sort-package-json", "update-dependency": "update-dependency --lerna", "updated": "lerna updated", "bump": "yarn clean && yarn build && lerna version --no-push -m \"Bump version\" ", "watch": "lerna run --stream watch" }, "husky": { "hooks": { "pre-commit": "lint-staged", "pre-push": "yarn integrity" } }, "resolutions": { "typescript": "~4.9.4" }, "devDependencies": { "@jupyterlab/buildutils": "^3.5.2 || ^4.0.0", "@typescript-eslint/eslint-plugin": "^5.48.2", "@typescript-eslint/parser": "^5.48.2", "eslint": "^8.32.0", "eslint-config-prettier": "^8.6.0", "eslint-plugin-prettier": "^4.2.1", "glob": "^10.2.4", "husky": "^7.0.4", "lerna": "^5.4.3", "lint-staged": "^12.1.3", "prettier": "^2.8.3", "rimraf": "^5.0.1", "sort-package-json": "^2.1.0", "typedoc": "~0.23.24", "typescript": "~4.9.4" }, "engines": { "node": ">=14", "npm": "please-use-yarn", "yarn": ">=3" } } ipywidgets-8.1.1/packages/000077500000000000000000000000001450026722000154655ustar00rootroot00000000000000ipywidgets-8.1.1/packages/base-manager/000077500000000000000000000000001450026722000200075ustar00rootroot00000000000000ipywidgets-8.1.1/packages/base-manager/.gitignore000066400000000000000000000000241450026722000217730ustar00rootroot00000000000000lib/ test/coverage/ ipywidgets-8.1.1/packages/base-manager/.jshintrc000066400000000000000000000000731450026722000216340ustar00rootroot00000000000000{ "esnext": true, "expr": true, "node": true } ipywidgets-8.1.1/packages/base-manager/.npmignore000066400000000000000000000001151450026722000220030ustar00rootroot00000000000000.DS_Store node_modules/ test/ .jshintrc karma.conf.js build_css.js examples/ ipywidgets-8.1.1/packages/base-manager/package.json000066400000000000000000000047241450026722000223040ustar00rootroot00000000000000{ "name": "@jupyter-widgets/base-manager", "version": "1.0.7", "description": "Jupyter interactive widgets - base manager", "repository": { "type": "git", "url": "https://github.com/jupyter-widgets/ipywidgets.git" }, "license": "BSD-3-Clause", "author": "Project Jupyter", "main": "lib/index.js", "typings": "lib/index.d.ts", "files": [ "lib/**/*.d.ts", "lib/**/*.js", "css/*.css" ], "scripts": { "build": "npm run build:src", "build:src": "tsc --build", "build:test": "tsc --build test && webpack --config test/webpack.conf.js", "clean": "npm run clean:src", "clean:src": "rimraf lib && rimraf tsconfig.tsbuildinfo", "prepublish": "npm run clean && npm run build", "test": "npm run test:unit", "test:coverage": "npm run build:test && webpack --config test/webpack-cov.conf.js && karma start test/karma-cov.conf.js", "test:unit": "npm run test:unit:firefox && npm run test:unit:chrome", "test:unit:chrome": "npm run test:unit:default -- --browsers=Chrome", "test:unit:default": "npm run build:test && karma start test/karma.conf.js --log-level debug", "test:unit:firefox": "npm run test:unit:default -- --browsers=Firefox", "test:unit:firefox:headless": "npm run test:unit:default -- --browsers=FirefoxHeadless", "test:unit:ie": "npm run test:unit:default -- --browsers=IE" }, "dependencies": { "@jupyter-widgets/base": "^6.0.6", "@jupyterlab/services": "^6.0.0 || ^7.0.0", "@lumino/coreutils": "^1.11.1 || ^2", "base64-js": "^1.2.1", "sanitize-html": "^2.3" }, "devDependencies": { "@types/base64-js": "^1.2.5", "@types/chai": "^4.1.7", "@types/chai-as-promised": "^7.1.0", "@types/expect.js": "^0.3.29", "@types/mocha": "^9.0.0", "@types/sanitize-html": "^2.6.0", "@types/sinon": "^10.0.2", "@types/sinon-chai": "^3.2.2", "chai": "^4.0.0", "chai-as-promised": "^7.0.0", "expect.js": "^0.3.1", "istanbul-instrumenter-loader": "^3.0.1", "karma": "^6.3.3", "karma-chrome-launcher": "^3.1.0", "karma-coverage": "^2.0.3", "karma-firefox-launcher": "^2.1.1", "karma-ie-launcher": "^1.0.0", "karma-mocha": "^2.0.1", "karma-mocha-reporter": "^2.2.5", "karma-webpack": "^5.0.0", "mocha": "^9.0.0", "npm-run-all": "^4.1.5", "rimraf": "^3.0.2", "sinon": "^12.0.1", "sinon-chai": "^3.3.0", "typescript": "~4.9.4", "webpack": "^5.65.0" }, "publishConfig": { "access": "public" } } ipywidgets-8.1.1/packages/base-manager/src/000077500000000000000000000000001450026722000205765ustar00rootroot00000000000000ipywidgets-8.1.1/packages/base-manager/src/index.ts000066400000000000000000000002411450026722000222520ustar00rootroot00000000000000// Copyright (c) Jupyter Development Team. // Distributed under the terms of the Modified BSD License. export * from './manager-base'; export * from './utils'; ipywidgets-8.1.1/packages/base-manager/src/latex.ts000066400000000000000000000144561450026722000222750ustar00rootroot00000000000000/*----------------------------------------------------------------------------- | Copyright (c) Jupyter Development Team. | Distributed under the terms of the Modified BSD License. |----------------------------------------------------------------------------*/ // Some magic for deferring mathematical expressions to MathJax // by hiding them from the Markdown parser. // Some of the code here is adapted with permission from Davide Cervone // under the terms of the Apache2 license governing the MathJax project. // Other minor modifications are also due to StackExchange and are used with // permission. const inline = '$'; // the inline math delimiter // MATHSPLIT contains the pattern for math delimiters and special symbols // needed for searching for math in the text input. const MATHSPLIT = /(\$\$?|\\(?:begin|end)\{[a-z]*\*?\}|\\[{}$]|[{}]|(?:\n\s*)+|@@\d+@@|\\\\(?:\(|\)|\[|\]))/i; /** * Break up the text into its component parts and search * through them for math delimiters, braces, linebreaks, etc. * Math delimiters must match and braces must balance. * Don't allow math to pass through a double linebreak * (which will be a paragraph). */ export function removeMath(text: string): { text: string; math: string[] } { const math: string[] = []; // stores math strings for later let start: number | null = null; let end: string | null = null; let last: number | null = null; let braces = 0; let deTilde: (text: string) => string; // Except for extreme edge cases, this should catch precisely those pieces of the markdown // source that will later be turned into code spans. While MathJax will not TeXify code spans, // we still have to consider them at this point; the following issue has happened several times: // // `$foo` and `$bar` are variables. --> $foo ` and `$bar are variables. const hasCodeSpans = /`/.test(text); if (hasCodeSpans) { text = text .replace(/~/g, '~T') .replace(/(^|[^\\])(`+)([^\n]*?[^`\n])\2(?!`)/gm, (wholematch) => wholematch.replace(/\$/g, '~D') ); deTilde = (text: string) => { return text.replace(/~([TD])/g, (wholematch, character) => character === 'T' ? '~' : inline ); }; } else { deTilde = (text: string) => { return text; }; } let blocks = text.replace(/\r\n?/g, '\n').split(MATHSPLIT); for (let i = 1, m = blocks.length; i < m; i += 2) { const block = blocks[i]; if (block.charAt(0) === '@') { // // Things that look like our math markers will get // stored and then retrieved along with the math. // blocks[i] = '@@' + math.length + '@@'; math.push(block); } else if (start !== null) { // // If we are in math, look for the end delimiter, // but don't go past double line breaks, and // and balance braces within the math. // if (block === end) { if (braces) { last = i; } else { blocks = processMath(start, i, deTilde, math, blocks); start = null; end = null; last = null; } } else if (block.match(/\n.*\n/)) { if (last !== null) { i = last; blocks = processMath(start, i, deTilde, math, blocks); } start = null; end = null; last = null; braces = 0; } else if (block === '{') { braces++; } else if (block === '}' && braces) { braces--; } } else { // // Look for math start delimiters and when // found, set up the end delimiter. // if (block === inline || block === '$$') { start = i; end = block; braces = 0; } else if (block === '\\\\(' || block === '\\\\[') { start = i; end = block.slice(-1) === '(' ? '\\\\)' : '\\\\]'; braces = 0; } else if (block.substr(1, 5) === 'begin') { start = i; end = '\\end' + block.substr(6); braces = 0; } } } if (start !== null && last !== null) { blocks = processMath(start, last, deTilde, math, blocks); start = null; end = null; last = null; } return { text: deTilde(blocks.join('')), math }; } /** * Put back the math strings that were saved, * and clear the math array (no need to keep it around). */ export function replaceMath(text: string, math: string[]): string { /** * Replace a math placeholder with its corresponding group. * The math delimiters "\\(", "\\[", "\\)" and "\\]" are replaced * removing one backslash in order to be interpreted correctly by MathJax. */ const process = (match: string, n: number): string => { let group = math[n]; if ( group.substr(0, 3) === '\\\\(' && group.substr(group.length - 3) === '\\\\)' ) { group = '\\(' + group.substring(3, group.length - 3) + '\\)'; } else if ( group.substr(0, 3) === '\\\\[' && group.substr(group.length - 3) === '\\\\]' ) { group = '\\[' + group.substring(3, group.length - 3) + '\\]'; } return group; }; // Replace all the math group placeholders in the text // with the saved strings. return text.replace(/@@(\d+)@@/g, process); } /** * Process math blocks. * * The math is in blocks i through j, so * collect it into one block and clear the others. * Replace &, <, and > by named entities. * For IE, put
at the ends of comments since IE removes \n. * Clear the current math positions and store the index of the * math, then push the math string onto the storage array. * The preProcess function is called on all blocks if it has been passed in */ function processMath( i: number, j: number, preProcess: (input: string) => string, math: string[], blocks: string[] ): string[] { let block = blocks .slice(i, j + 1) .join('') .replace(/&/g, '&') // use HTML entity for & .replace(//g, '>'); // use HTML entity for > if (navigator && navigator.appName === 'Microsoft Internet Explorer') { block = block.replace(/(%[^\n]*)\n/g, '$1
\n'); } while (j > i) { blocks[j] = ''; j--; } blocks[i] = '@@' + math.length + '@@'; // replace the current block text with a unique tag to find later if (preProcess) { block = preProcess(block); } math.push(block); return blocks; } ipywidgets-8.1.1/packages/base-manager/src/manager-base.ts000066400000000000000000000701501450026722000234730ustar00rootroot00000000000000// Copyright (c) Jupyter Development Team. // Distributed under the terms of the Modified BSD License. import * as services from '@jupyterlab/services'; import * as widgets from '@jupyter-widgets/base'; import { JSONObject, PartialJSONObject, PromiseDelegate, } from '@lumino/coreutils'; import { DOMWidgetView, WidgetModel, WidgetView, DOMWidgetModel, IClassicComm, ICallbacks, put_buffers, remove_buffers, resolvePromisesDict, ISerializedState, reject, uuid, PROTOCOL_VERSION, IWidgetManager, IModelOptions, IWidgetOptions, IBackboneModelOptions, } from '@jupyter-widgets/base'; import { base64ToBuffer, bufferToBase64, hexToBuffer } from './utils'; import { removeMath, replaceMath } from './latex'; import sanitize from 'sanitize-html'; const PROTOCOL_MAJOR_VERSION = PROTOCOL_VERSION.split('.', 1)[0]; /** * The control comm target name. */ export const CONTROL_COMM_TARGET = 'jupyter.widget.control'; /** * The supported version for the control comm channel. */ export const CONTROL_COMM_PROTOCOL_VERSION = '1.0.0'; /** * Time (in ms) after which we consider the control comm target not responding. */ export const CONTROL_COMM_TIMEOUT = 4000; /** * Sanitize HTML-formatted descriptions. */ function default_inline_sanitize(s: string): string { const allowedTags = [ 'a', 'abbr', 'b', 'code', 'em', 'i', 'img', 'li', 'ol', 'span', 'strong', 'ul', ]; const allowedAttributes = { '*': ['aria-*', 'class', 'style', 'title'], a: ['href'], img: ['src'], style: ['media', 'type'], }; return sanitize(s, { allowedTags: allowedTags, allowedAttributes: allowedAttributes, }); } export interface IState extends PartialJSONObject { buffers?: IBase64Buffers[]; model_name: string; model_module: string; model_module_version: string; state: JSONObject; } export interface IManagerStateMap extends PartialJSONObject { [key: string]: IState; } /** * Widget manager state. * * The JSON schema for this is in @jupyter-widgets/schema/v2/state.schema.json. */ export interface IManagerState extends PartialJSONObject { version_major: number; version_minor: number; state: IManagerStateMap; } export interface IBase64Buffers extends PartialJSONObject { data: string; path: (string | number)[]; encoding: 'base64'; } /** * Make all properties in K (of T) required */ export type RequiredSome = Omit & Required>; /** * Manager abstract base class */ export abstract class ManagerBase implements IWidgetManager { /** * Modifies view options. Generally overloaded in custom widget manager * implementations. */ setViewOptions(options: any = {}): any { return options; } /** * Creates a promise for a view of a given model * * #### Notes * The implementation must trigger the Lumino 'after-attach' and 'after-show' events when appropriate, which in turn will trigger the view's 'displayed' events. * * Make sure the view creation is not out of order with * any state updates. * */ create_view( model: DOMWidgetModel, options?: any ): Promise; create_view( model: WidgetModel, options?: any ): Promise; create_view( model: WidgetModel, options = {} ): Promise { const id = uuid(); const viewPromise = (model.state_change = model.state_change.then( async () => { const _view_name = model.get('_view_name'); const _view_module = model.get('_view_module'); try { const ViewType = (await this.loadViewClass( _view_name, _view_module, model.get('_view_module_version') )) as typeof WidgetView; const view = new ViewType({ model: model, options: this.setViewOptions(options), }); view.listenTo(model, 'destroy', view.remove); await view.render(); // This presumes the view is added to the list of model views below view.once('remove', () => { if (model.views) { delete model.views[id]; } }); return view; } catch (e) { console.error( `Could not create a view for model id ${model.model_id}` ); const msg = `Failed to create view for '${_view_name}' from module '${_view_module}' with model '${model.name}' from module '${model.module}'`; const ModelCls = widgets.createErrorWidgetModel(e, msg); const errorModel = new ModelCls(); const view = new widgets.ErrorWidgetView({ model: errorModel, options: this.setViewOptions(options), }); await view.render(); return view; } } )); if (model.views) { model.views[id] = viewPromise; } return viewPromise; } /** * callback handlers specific to a view */ callbacks(view?: WidgetView): ICallbacks { return {}; } /** * Get a promise for a model by model id. * * #### Notes * If the model is not found, the returned Promise object is rejected. * * If you would like to synchronously test if a model exists, use .has_model(). */ async get_model(model_id: string): Promise { const modelPromise = this._models[model_id]; if (modelPromise === undefined) { throw new Error('widget model not found'); } return modelPromise; } /** * Returns true if the given model is registered, otherwise false. * * #### Notes * This is a synchronous way to check if a model is registered. */ has_model(model_id: string): boolean { return this._models[model_id] !== undefined; } /** * Handle when a comm is opened. */ handle_comm_open( comm: IClassicComm, msg: services.KernelMessage.ICommOpenMsg ): Promise { const protocolVersion = ((msg.metadata || {})['version'] as string) || ''; if (protocolVersion.split('.', 1)[0] !== PROTOCOL_MAJOR_VERSION) { const error = `Wrong widget protocol version: received protocol version '${protocolVersion}', but was expecting major version '${PROTOCOL_MAJOR_VERSION}'`; console.error(error); return Promise.reject(error); } const data = msg.content.data as unknown as ISerializedState; const buffer_paths = data.buffer_paths || []; const buffers = msg.buffers || []; put_buffers(data.state, buffer_paths, buffers); return this.new_model( { model_name: data.state['_model_name'] as string, model_module: data.state['_model_module'] as string, model_module_version: data.state['_model_module_version'] as string, comm: comm, }, data.state ).catch(reject('Could not create a model.', true)); } /** * Create a comm and new widget model. * @param options - same options as new_model but comm is not * required and additional options are available. * @param serialized_state - serialized model attributes. */ new_widget( options: IWidgetOptions, serialized_state: JSONObject = {} ): Promise { let commPromise; // we check to make sure the view information is provided, to help catch // backwards incompatibility errors. if ( options.view_name === undefined || options.view_module === undefined || options.view_module_version === undefined ) { return Promise.reject( 'new_widget(...) must be given view information in the options.' ); } // If no comm is provided, a new comm is opened for the jupyter.widget // target. if (options.comm) { commPromise = Promise.resolve(options.comm); } else { commPromise = this._create_comm( this.comm_target_name, options.model_id, { state: { _model_module: options.model_module, _model_module_version: options.model_module_version, _model_name: options.model_name, _view_module: options.view_module, _view_module_version: options.view_module_version, _view_name: options.view_name, }, }, { version: PROTOCOL_VERSION } ); } // The options dictionary is copied since data will be added to it. const options_clone = { ...options }; // Create the model. In the case where the comm promise is rejected a // comm-less model is still created with the required model id. return commPromise.then( (comm) => { // Comm Promise Resolved. options_clone.comm = comm; const widget_model = this.new_model(options_clone, serialized_state); return widget_model.then((model) => { model.sync('create', model); return model; }); }, () => { // Comm Promise Rejected. if (!options_clone.model_id) { options_clone.model_id = uuid(); } return this.new_model(options_clone, serialized_state); } ); } register_model(model_id: string, modelPromise: Promise): void { this._models[model_id] = modelPromise; modelPromise.then((model) => { model.once('comm:close', () => { delete this._models[model_id]; }); }); } /** * Create and return a promise for a new widget model * * @param options - the options for creating the model. * @param serialized_state - attribute values for the model. * * @example * widget_manager.new_model({ * model_name: 'IntSlider', * model_module: '@jupyter-widgets/controls', * model_module_version: '1.0.0', * model_id: 'u-u-i-d' * }).then((model) => { console.log('Create success!', model); }, * (err) => {console.error(err)}); * */ async new_model( options: IModelOptions, serialized_state: any = {} ): Promise { const model_id = options.model_id ?? options.comm?.comm_id; if (!model_id) { throw new Error( 'Neither comm nor model_id provided in options object. At least one must exist.' ); } options.model_id = model_id; const modelPromise = this._make_model( options as RequiredSome, serialized_state ); // this call needs to happen before the first `await`, see note in `set_state`: this.register_model(model_id, modelPromise); return await modelPromise; } /** * Fetch all widgets states from the kernel using the control comm channel * If this fails (control comm handler not implemented kernel side), * it will fall back to `_loadFromKernelModels`. * * This is a utility function that can be used in subclasses. */ protected async _loadFromKernel(): Promise { // Try fetching all widget states through the control comm let data: any; let buffers: any; try { const initComm = await this._create_comm( CONTROL_COMM_TARGET, uuid(), {}, { version: CONTROL_COMM_PROTOCOL_VERSION } ); await new Promise((resolve, reject) => { initComm.on_msg((msg: any) => { data = msg['content']['data']; if (data.method !== 'update_states') { console.warn(` Unknown ${data.method} message on the Control channel `); return; } buffers = (msg.buffers || []).map((b: any) => { if (b instanceof DataView) { return b; } else { return new DataView(b instanceof ArrayBuffer ? b : b.buffer); } }); resolve(null); }); initComm.on_close(() => reject('Control comm was closed too early')); // Send a states request msg initComm.send({ method: 'request_states' }, {}); // Reject if we didn't get a response in time setTimeout( () => reject('Control comm did not respond in time'), CONTROL_COMM_TIMEOUT ); }); initComm.close(); } catch (error) { console.warn( 'Failed to fetch ipywidgets through the "jupyter.widget.control" comm channel, fallback to fetching individual model state. Reason:', error ); // Fall back to the old implementation for old ipywidgets backend versions (ipywidgets<=7.6) return this._loadFromKernelModels(); } const states: any = data.states; const bufferPaths: any = {}; const bufferGroups: any = {}; // Group buffers and buffer paths by widget id for (let i = 0; i < data.buffer_paths.length; i++) { const [widget_id, ...path] = data.buffer_paths[i]; const b = buffers[i]; if (!bufferPaths[widget_id]) { bufferPaths[widget_id] = []; bufferGroups[widget_id] = []; } bufferPaths[widget_id].push(path); bufferGroups[widget_id].push(b); } // Create comms for all new widgets. const widget_comms = await Promise.all( Object.keys(states).map(async (widget_id) => { const comm = this.has_model(widget_id) ? undefined : await this._create_comm('jupyter.widget', widget_id); return { widget_id, comm }; }) ); await Promise.all( widget_comms.map(async ({ widget_id, comm }) => { const state = states[widget_id]; // Put binary buffers if (widget_id in bufferPaths) { put_buffers(state, bufferPaths[widget_id], bufferGroups[widget_id]); } try { if (comm) { // This must be the first await in the code path that // reaches here so that registering the model promise in // new_model can register the widget promise before it may // be required by other widgets. await this.new_model( { model_name: state.model_name, model_module: state.model_module, model_module_version: state.model_module_version, model_id: widget_id, comm: comm, }, state.state ); } else { // model already exists here const model = await this.get_model(widget_id); const deserializedState = await ( model.constructor as typeof WidgetModel )._deserialize_state(state.state, this); model!.set_state(deserializedState); } } catch (error) { // Failed to create a widget model, we continue creating other models so that // other widgets can render console.error(error); } }) ); } /** * Old implementation of fetching widget models one by one using * the request_state message on each comm. * * This is a utility function that can be used in subclasses. */ protected async _loadFromKernelModels(): Promise { const comm_ids = await this._get_comm_info(); // For each comm id that we do not know about, create the comm, and request the state. const widgets_info = await Promise.all( Object.keys(comm_ids).map(async (comm_id) => { if (this.has_model(comm_id)) { return; } const comm = await this._create_comm(this.comm_target_name, comm_id); let msg_id = ''; const info = new PromiseDelegate(); comm.on_msg((msg: services.KernelMessage.ICommMsgMsg) => { if ( (msg.parent_header as any).msg_id === msg_id && msg.header.msg_type === 'comm_msg' && msg.content.data.method === 'update' ) { const data = msg.content.data as any; const buffer_paths = data.buffer_paths || []; const buffers = msg.buffers || []; put_buffers(data.state, buffer_paths, buffers); info.resolve({ comm, msg }); } }); msg_id = comm.send( { method: 'request_state', }, this.callbacks(undefined) ); return info.promise; }) ); // We put in a synchronization barrier here so that we don't have to // topologically sort the restored widgets. `new_model` synchronously // registers the widget ids before reconstructing their state // asynchronously, so promises to every widget reference should be available // by the time they are used. await Promise.all( widgets_info.map(async (widget_info) => { if (!widget_info) { return; } const content = widget_info.msg.content as any; await this.new_model( { model_name: content.data.state._model_name, model_module: content.data.state._model_module, model_module_version: content.data.state._model_module_version, comm: widget_info.comm, }, content.data.state ); }) ); } async _make_model( options: RequiredSome, serialized_state: any = {} ): Promise { const model_id = options.model_id; const model_promise = this.loadModelClass( options.model_name, options.model_module, options.model_module_version ); let ModelType: typeof WidgetModel; const makeErrorModel = (error: any, msg: string) => { const Cls = widgets.createErrorWidgetModel(error, msg); const widget_model = new Cls(); return widget_model; }; try { ModelType = await model_promise; } catch (error) { const msg = 'Could not instantiate widget'; console.error(msg); return makeErrorModel(error, msg); } if (!ModelType) { const msg = 'Could not instantiate widget'; console.error(msg); const error = new Error( `Cannot find model module ${options.model_module}@${options.model_module_version}, ${options.model_name}` ); return makeErrorModel(error, msg); } let widget_model: WidgetModel; try { const attributes = await ModelType._deserialize_state( serialized_state, this ); const modelOptions: IBackboneModelOptions = { widget_manager: this, model_id: model_id, comm: options.comm, }; widget_model = new ModelType(attributes, modelOptions); } catch (error) { console.error(error); const msg = `Model class '${options.model_name}' from module '${options.model_module}' is loaded but can not be instantiated`; widget_model = makeErrorModel(error, msg); } widget_model.name = options.model_name; widget_model.module = options.model_module; return widget_model; } /** * Close all widgets and empty the widget state. * @return Promise that resolves when the widget state is cleared. */ clear_state(): Promise { return resolvePromisesDict(this._models).then((models) => { Object.keys(models).forEach((id) => models[id].close()); this._models = Object.create(null); }); } /** * Asynchronously get the state of the widget manager. * * This includes all of the widget models, and follows the format given in * the @jupyter-widgets/schema package. * * @param options - The options for what state to return. * @returns Promise for a state dictionary */ get_state(options: IStateOptions = {}): Promise { const modelPromises = Object.keys(this._models).map( (id) => this._models[id] ); return Promise.all(modelPromises).then((models) => { return serialize_state(models, options); }); } /** * Set the widget manager state. * * @param state - a Javascript object conforming to the application/vnd.jupyter.widget-state+json spec. * * Reconstructs all of the widget models in the state, merges that with the * current manager state, and then attempts to redisplay the widgets in the * state. */ set_state(state: IManagerState): Promise { // Check to make sure that it's the same version we are parsing. if (!(state.version_major && state.version_major <= 2)) { throw 'Unsupported widget state format'; } const models = state.state as any; // Recreate all the widget models for the given widget manager state. const all_models = this._get_comm_info().then((live_comms) => { /* Note: It is currently safe to just loop over the models in any order, given that the following holds (does at the time of writing): 1: any call to `new_model` with state registers the model promise (e.g. with `register_model`) synchronously (before it's first `await` statement). 2: any calls to a model constructor or the `set_state` method on a model, happens asynchronously (in a `then` clause, or after an `await` statement). Without these assumptions, one risks trying to set model state with a reference to another model that doesn't exist yet! */ return Promise.all( Object.keys(models).map((model_id) => { // First put back the binary buffers const decode: { [s: string]: (s: string) => ArrayBuffer } = { base64: base64ToBuffer, hex: hexToBuffer, }; const model = models[model_id]; const modelState = model.state; if (model.buffers) { const bufferPaths = model.buffers.map((b: any) => b.path); // put_buffers expects buffers to be DataViews const buffers = model.buffers.map( (b: any) => new DataView(decode[b.encoding](b.data)) ); put_buffers(model.state, bufferPaths, buffers); } // If the model has already been created, set its state and then // return it. if (this.has_model(model_id)) { return this.get_model(model_id)!.then((model) => { // deserialize state return (model.constructor as typeof WidgetModel) ._deserialize_state(modelState || {}, this) .then((attributes) => { model.set_state(attributes); // case 2 return model; }); }); } const modelCreate: IModelOptions = { model_id: model_id, model_name: model.model_name, model_module: model.model_module, model_module_version: model.model_module_version, }; if (Object.prototype.hasOwnProperty.call(live_comms, 'model_id')) { // live comm // This connects to an existing comm if it exists, and // should *not* send a comm open message. return this._create_comm(this.comm_target_name, model_id).then( (comm) => { modelCreate.comm = comm; return this.new_model(modelCreate); // No state, so safe wrt. case 1 } ); } else { return this.new_model(modelCreate, modelState); // case 1 } }) ); }); return all_models; } /** * Disconnect the widget manager from the kernel, setting each model's comm * as dead. */ disconnect(): void { Object.keys(this._models).forEach((i) => { this._models[i].then((model) => { model.comm_live = false; }); }); } /** * Resolve a URL relative to the current notebook location. * * The default implementation just returns the original url. */ resolveUrl(url: string): Promise { return Promise.resolve(url); } inline_sanitize(source: string): string { const parts = removeMath(source); // Sanitize tags for inline output. const sanitized = default_inline_sanitize(parts['text']); return replaceMath(sanitized, parts['math']); } /** * The comm target name to register */ readonly comm_target_name = 'jupyter.widget'; /** * Load a class and return a promise to the loaded object. */ protected abstract loadClass( className: string, moduleName: string, moduleVersion: string ): Promise; protected async loadModelClass( className: string, moduleName: string, moduleVersion: string ): Promise { try { const promise: Promise = this.loadClass( className, moduleName, moduleVersion ) as Promise; await promise; return promise; } catch (error) { console.error(error); const msg = `Failed to load model class '${className}' from module '${moduleName}'`; return widgets.createErrorWidgetModel(error, msg); } } protected async loadViewClass( className: string, moduleName: string, moduleVersion: string ): Promise { try { const promise: Promise = this.loadClass( className, moduleName, moduleVersion ) as Promise; await promise; return promise; } catch (error) { console.error(error); const msg = `Failed to load view class '${className}' from module '${moduleName}'`; return widgets.createErrorWidgetView(error, msg); } } /** * Create a comm which can be used for communication for a widget. * * If the data/metadata is passed in, open the comm before returning (i.e., * send the comm_open message). If the data and metadata is undefined, we * want to reconstruct a comm that already exists in the kernel, so do not * open the comm by sending the comm_open message. * * @param comm_target_name Comm target name * @param model_id The comm id * @param data The initial data for the comm * @param metadata The metadata in the open message */ protected abstract _create_comm( comm_target_name: string, model_id?: string, data?: JSONObject, metadata?: JSONObject, buffers?: ArrayBuffer[] | ArrayBufferView[] ): Promise; protected abstract _get_comm_info(): Promise<{}>; /** * Filter serialized widget state to remove any ID's already present in manager. * * @param {*} state Serialized state to filter * * @returns {*} A copy of the state, with its 'state' attribute filtered */ protected filterExistingModelState(serialized_state: any): any { let models = serialized_state.state; models = Object.keys(models) .filter((model_id) => !this.has_model(model_id)) .reduce((res, model_id) => { res[model_id] = models[model_id]; return res; }, {}); return { ...serialized_state, state: models }; } /** * Dictionary of model ids and model instance promises */ private _models: { [key: string]: Promise } = Object.create(null); } export interface IStateOptions { /** * Drop model attributes that are equal to their default value. * * @default false */ drop_defaults?: boolean; } /** * Serialize an array of widget models * * #### Notes * The return value follows the format given in the * @jupyter-widgets/schema package. */ export function serialize_state( models: WidgetModel[], options: IStateOptions = {} ): IManagerState { const state: IManagerStateMap = {}; models.forEach((model) => { const model_id = model.model_id; const split = remove_buffers( model.serialize(model.get_state(options.drop_defaults)) ); const buffers: IBase64Buffers[] = split.buffers.map((buffer, index) => { return { data: bufferToBase64(buffer), path: split.buffer_paths[index], encoding: 'base64', }; }); state[model_id] = { model_name: model.name, model_module: model.module, model_module_version: model.get('_model_module_version'), state: split.state, }; // To save space, only include the buffers key if we have buffers if (buffers.length > 0) { state[model_id].buffers = buffers; } }); return { version_major: 2, version_minor: 0, state: state }; } namespace Private { /** * Data promised when a comm info request resolves. */ export interface ICommUpdateData { comm: IClassicComm; msg: services.KernelMessage.ICommMsgMsg; } } ipywidgets-8.1.1/packages/base-manager/src/utils.ts000066400000000000000000000060121450026722000223050ustar00rootroot00000000000000// Copyright (c) Jupyter Development Team. // Distributed under the terms of the Modified BSD License. import { toByteArray, fromByteArray } from 'base64-js'; const hexTable = [ '00', '01', '02', '03', '04', '05', '06', '07', '08', '09', '0A', '0B', '0C', '0D', '0E', '0F', '10', '11', '12', '13', '14', '15', '16', '17', '18', '19', '1A', '1B', '1C', '1D', '1E', '1F', '20', '21', '22', '23', '24', '25', '26', '27', '28', '29', '2A', '2B', '2C', '2D', '2E', '2F', '30', '31', '32', '33', '34', '35', '36', '37', '38', '39', '3A', '3B', '3C', '3D', '3E', '3F', '40', '41', '42', '43', '44', '45', '46', '47', '48', '49', '4A', '4B', '4C', '4D', '4E', '4F', '50', '51', '52', '53', '54', '55', '56', '57', '58', '59', '5A', '5B', '5C', '5D', '5E', '5F', '60', '61', '62', '63', '64', '65', '66', '67', '68', '69', '6A', '6B', '6C', '6D', '6E', '6F', '70', '71', '72', '73', '74', '75', '76', '77', '78', '79', '7A', '7B', '7C', '7D', '7E', '7F', '80', '81', '82', '83', '84', '85', '86', '87', '88', '89', '8A', '8B', '8C', '8D', '8E', '8F', '90', '91', '92', '93', '94', '95', '96', '97', '98', '99', '9A', '9B', '9C', '9D', '9E', '9F', 'A0', 'A1', 'A2', 'A3', 'A4', 'A5', 'A6', 'A7', 'A8', 'A9', 'AA', 'AB', 'AC', 'AD', 'AE', 'AF', 'B0', 'B1', 'B2', 'B3', 'B4', 'B5', 'B6', 'B7', 'B8', 'B9', 'BA', 'BB', 'BC', 'BD', 'BE', 'BF', 'C0', 'C1', 'C2', 'C3', 'C4', 'C5', 'C6', 'C7', 'C8', 'C9', 'CA', 'CB', 'CC', 'CD', 'CE', 'CF', 'D0', 'D1', 'D2', 'D3', 'D4', 'D5', 'D6', 'D7', 'D8', 'D9', 'DA', 'DB', 'DC', 'DD', 'DE', 'DF', 'E0', 'E1', 'E2', 'E3', 'E4', 'E5', 'E6', 'E7', 'E8', 'E9', 'EA', 'EB', 'EC', 'ED', 'EE', 'EF', 'F0', 'F1', 'F2', 'F3', 'F4', 'F5', 'F6', 'F7', 'F8', 'F9', 'FA', 'FB', 'FC', 'FD', 'FE', 'FF', ]; /** * Convert an ArrayBuffer to a hex string. */ export function bufferToHex(buffer: ArrayBuffer): string { const x = new Uint8Array(buffer); const s = []; for (let i = 0; i < x.length; i++) { s.push(hexTable[x[i]]); } return s.join(''); } /** * Convert a hex string to an ArrayBuffer. */ export function hexToBuffer(hex: string): ArrayBuffer { const x = new Uint8Array(hex.length / 2); for (let i = 0; i < hex.length; i += 2) { x[i / 2] = parseInt(hex.slice(i, i + 2), 16); } return x.buffer; } /** * Convert an ArrayBuffer to a base64 string. */ export function bufferToBase64(buffer: ArrayBuffer): string { return fromByteArray(new Uint8Array(buffer)); } /** * Convert a base64 string to an ArrayBuffer. */ export function base64ToBuffer(base64: string): ArrayBuffer { return toByteArray(base64).buffer; } ipywidgets-8.1.1/packages/base-manager/test/000077500000000000000000000000001450026722000207665ustar00rootroot00000000000000ipywidgets-8.1.1/packages/base-manager/test/karma-cov.conf.js000066400000000000000000000007741450026722000241400ustar00rootroot00000000000000var path = require('path'); module.exports = function (config) { config.set({ basePath: '..', browsers: ['Firefox'], frameworks: ['mocha'], reporters: ['mocha', 'coverage'], files: ['test/build/coverage.js'], coverageReporter: { reporters: [ { type: 'text' }, { type: 'lcov', dir: 'test/coverage' }, { type: 'html', dir: 'test/coverage' }, ], }, port: 9876, colors: true, singleRun: true, logLevel: config.LOG_INFO, }); }; ipywidgets-8.1.1/packages/base-manager/test/karma.conf.js000066400000000000000000000004461450026722000233470ustar00rootroot00000000000000module.exports = function (config) { config.set({ basePath: '..', frameworks: ['mocha'], reporters: ['mocha'], files: ['test/build/bundle.js'], port: 9876, colors: true, singleRun: true, logLevel: config.LOG_INFO, browserNoActivityTimeout: 30000, }); }; ipywidgets-8.1.1/packages/base-manager/test/src/000077500000000000000000000000001450026722000215555ustar00rootroot00000000000000ipywidgets-8.1.1/packages/base-manager/test/src/dummy-manager.ts000066400000000000000000000121341450026722000246710ustar00rootroot00000000000000// Copyright (c) Jupyter Development Team. // Distributed under the terms of the Modified BSD License. import * as widgets from '@jupyter-widgets/base'; import * as Backbone from 'backbone'; import { ManagerBase } from '../../lib'; import * as sinon from 'sinon'; void sinon; let numComms = 0; export class MockComm implements widgets.IClassicComm { constructor() { this.comm_id = `mock-comm-id-${numComms}`; numComms += 1; } on_open(fn: Function): void { this._on_open = fn; } on_close(fn: Function): void { this._on_close = fn; } on_msg(fn: Function): void { this._on_msg = fn; } _process_msg(msg: any): any { if (this._on_msg) { return this._on_msg(msg); } else { return Promise.resolve(); } } open(): string { if (this._on_open) { this._on_open(); } return ''; } close(): string { if (this._on_close) { this._on_close(); } return ''; } send(): string { return ''; } comm_id: string; target_name: string; _on_msg: Function | null = null; _on_open: Function | null = null; _on_close: Function | null = null; } const typesToArray: { [key: string]: any } = { int8: Int8Array, int16: Int16Array, int32: Int32Array, uint8: Uint8Array, uint16: Uint16Array, uint32: Uint32Array, float32: Float32Array, float64: Float64Array, }; const JSONToArray = function (obj: any): any { return new typesToArray[obj.dtype](obj.buffer.buffer); }; const arrayToJSON = function (obj: any): any { const dtype = Object.keys(typesToArray).filter( (i) => typesToArray[i] === obj.constructor )[0]; return { dtype, buffer: obj }; }; const array_serialization = { deserialize: JSONToArray, serialize: arrayToJSON, }; class TestWidget extends widgets.WidgetModel { defaults(): Backbone.ObjectHash { return { ...super.defaults(), _model_module: 'test-widgets', _model_name: 'TestWidget', _model_module_version: '1.0.0', _view_module: 'test-widgets', _view_name: 'TestWidgetView', _view_module_version: '1.0.0', _view_count: null as any, }; } } class ModelErrorWidget extends widgets.WidgetModel { defaults(): Backbone.ObjectHash { return { ...super.defaults(), _model_module: 'test-widgets', _model_name: 'ModelErrorWidget', _model_module_version: '1.0.0', }; } initialize(attributes: Backbone.ObjectHash, options: any) { throw new Error('Model error'); } } class ModelWithMissingView extends widgets.WidgetModel { defaults(): Backbone.ObjectHash { return { ...super.defaults(), _model_module: 'test-widgets', _model_name: 'ModelWithViewError', _model_module_version: '1.0.0', _view_module: 'test-widgets', _view_name: 'MissingView', _view_module_version: '1.0.0', }; } } class ModelWithViewError extends widgets.WidgetModel { defaults(): Backbone.ObjectHash { return { ...super.defaults(), _model_module: 'test-widgets', _model_name: 'ModelWithViewError', _model_module_version: '1.0.0', _view_module: 'test-widgets', _view_name: 'ViewErrorWidget', _view_module_version: '1.0.0', }; } } class ViewErrorWidget extends widgets.WidgetView { render(): void { throw new Error('Render error'); } } class TestWidgetView extends widgets.WidgetView { render(): void { this._rendered += 1; super.render(); } remove(): void { this._removed += 1; super.remove(); } _removed = 0; _rendered = 0; } class BinaryWidget extends TestWidget { static serializers = { ...widgets.WidgetModel.serializers, array: array_serialization, }; defaults(): Backbone.ObjectHash { return { ...super.defaults(), _model_name: 'BinaryWidget', _view_name: 'BinaryWidgetView', array: new Int8Array(0), }; } } class BinaryWidgetView extends TestWidgetView { render(): void { this._rendered += 1; } _rendered = 0; } const testWidgets = { TestWidget, TestWidgetView, BinaryWidget, BinaryWidgetView, ModelErrorWidget, ModelWithViewError, ViewErrorWidget, ModelWithMissingView, }; export class DummyManager extends ManagerBase { constructor() { super(); this.el = window.document.createElement('div'); } protected loadClass( className: string, moduleName: string, moduleVersion: string ): Promise { if (moduleName === '@jupyter-widgets/base') { if ((widgets as any)[className]) { return Promise.resolve((widgets as any)[className]); } else { return Promise.reject(`Cannot find class ${className}`); } } else if (moduleName === 'test-widgets') { if ((testWidgets as any)[className]) { return Promise.resolve((testWidgets as any)[className]); } else { return Promise.reject(`Cannot find class ${className}`); } } else { return Promise.reject(`Cannot find module ${moduleName}`); } } _get_comm_info(): Promise<{}> { return Promise.resolve({}); } _create_comm(): Promise { return Promise.resolve(new MockComm()); } el: HTMLElement; } ipywidgets-8.1.1/packages/base-manager/test/src/index.ts000066400000000000000000000002011450026722000232250ustar00rootroot00000000000000// Copyright (c) Jupyter Development Team. // Distributed under the terms of the Modified BSD License. import './manager_test'; ipywidgets-8.1.1/packages/base-manager/test/src/manager_test.ts000066400000000000000000000473511450026722000246100ustar00rootroot00000000000000import { DummyManager, MockComm } from './dummy-manager'; import * as widgets from '@jupyter-widgets/base'; import { expect } from 'chai'; import * as chai from 'chai'; import chaiAsPromised from 'chai-as-promised'; chai.use(chaiAsPromised); import * as sinon from 'sinon'; import sinonChai from 'sinon-chai'; chai.use(sinonChai); // test ManagerBase by creating a simple derived class // and testing it. describe('ManagerBase', function () { beforeEach(function () { this.managerBase = new DummyManager(); this.modelOptions = { model_name: 'TestWidget', model_module: 'test-widgets', model_module_version: '1.0.0', model_id: 'u-u-i-d', }; }); describe('comm_target_name', function () { it('is "jupyter.widget"', function () { expect(this.managerBase.comm_target_name).to.equal('jupyter.widget'); }); }); describe('setViewOptions', function () { it('returns an object', function () { expect(this.managerBase.setViewOptions()).to.deep.equal({}); }); it('returns the passed options', function () { const options = { a: 1 }; expect(this.managerBase.setViewOptions(options)).to.deep.equal(options); }); }); describe('create_view', function () { it('returns a Promise to a view', async function () { const manager = this.managerBase; const model = await manager.new_model(this.modelOptions); const view = await manager.create_view(model); expect(view).to.be.instanceof(widgets.WidgetView); expect(view.model).to.equal(model); }); it('renders the view', async function () { const manager = this.managerBase; const model = await manager.new_model({ model_name: 'BinaryWidget', model_module: 'test-widgets', model_module_version: '1.0.0', model_id: 'u-u-i-d', }); const view = await manager.create_view(model); expect(view._rendered).to.equal(1); }); it('return ErrorWidget if view class can not be loaded', async function () { const spec = { model_name: 'ModelWithMissingView', model_module: 'test-widgets', model_module_version: '1.0.0', model_id: 'id', }; const manager = this.managerBase; const model = await manager.new_model(spec); const view = await manager.create_view(model); expect(view.generateErrorMessage()['msg']).to.be.equal( "Failed to load view class 'MissingView' from module 'test-widgets'" ); }); it('return ErrorWidget if view class can not be created', async function () { const spec = { model_name: 'ModelWithViewError', model_module: 'test-widgets', model_module_version: '1.0.0', model_id: 'id', }; const manager = this.managerBase; const model = await manager.new_model(spec); const view = await manager.create_view(model); expect(view.generateErrorMessage()['msg']).to.be.equal( "Failed to create view for 'ViewErrorWidget' from module 'test-widgets' with model 'ModelWithViewError' from module 'test-widgets'" ); }); it('removes the view on model destroy', async function () { const manager = this.managerBase; const model = await manager.new_model(this.modelOptions); const view = await manager.create_view(model); // TODO: when we upgrade sinon-chai to handle chai 4.0, // uncomment the following and the test statement // sinon.spy(view, 'remove'); await model.close(); // expect(view.removed.calledOnce).to.be.true; expect(view._removed).to.equal(1); }); it('accepts optional view options, which it sends through setViewOptions', async function () { const manager = this.managerBase; sinon.spy(manager, 'setViewOptions'); const model = await manager.new_model(this.modelOptions); const options = { a: 1 }; const view = await manager.create_view(model, options); expect(manager.setViewOptions.calledWith(options)).to.be.true; expect(view.options).to.deep.equal(options); }); it('registers itself with the model.views, deleted when removed', async function () { const manager = this.managerBase; const model = await manager.new_model(this.modelOptions); const view = await manager.create_view(model); // model.views contains some promise which resolves to the view const modelViews = await Promise.all( Object.keys(model.views).map((i) => model.views[i]) ); expect(modelViews).to.contain(view); view.remove(); const modelViews2 = await Promise.all( Object.keys(model.views).map((i) => model.views[i]) ); expect(modelViews2).to.not.contain(view); }); }); describe('callbacks', function () { it('returns an object', function () { const c = this.managerBase.callbacks(); expect(c).to.be.an('object'); }); }); describe('get_model', function () { it('returns a promise to the model', async function () { const manager = this.managerBase; const model = await manager.new_model(this.modelOptions); expect(await manager.get_model(model.model_id)).to.be.equal(model); }); it('returns rejected promise when model is not registered', function () { expect(this.managerBase.get_model('not-defined')).to.be.rejected; }); }); describe('has_model', function () { it('returns true when the model is registered', async function () { const manager = this.managerBase; const model = await manager.new_model(this.modelOptions); expect(manager.has_model(model.model_id)).to.be.true; }); it('returns false when the model is not registered', function () { expect(this.managerBase.has_model('not-defined')).to.be.false; }); }); describe('handle_comm_open', function () { it('returns a promise to a model', async function () { const manager = this.managerBase; const comm = new MockComm(); const model = await manager.handle_comm_open(comm, { content: { data: { state: { _model_name: 'TestWidget', _model_module: 'test-widgets', _model_module_version: '1.0.0', value: 50, }, }, }, metadata: { version: '2.1.0', }, }); expect(model.comm).to.equal(comm); expect(model.get('value')).to.equal(50); }); it('throws if widget protocol version is not specified', async function () { const manager = this.managerBase; const comm = new MockComm(); const model = manager.handle_comm_open(comm, { content: { data: { state: { _model_name: 'TestWidget', _model_module: 'test-widgets', _model_module_version: '1.0.0', value: 50, }, }, }, }); expect(model).to.be.rejected; }); it('throws if widget protocol version is not compatible', async function () { const manager = this.managerBase; const comm = new MockComm(); const model = manager.handle_comm_open(comm, { content: { data: { state: { _model_name: 'TestWidget', _model_module: 'test-widgets', _model_module_version: '1.0.0', value: 50, }, }, }, metadata: { version: '1.0', }, }); expect(model).to.be.rejected; }); it('allows setting initial state, including binary state', async function () { const manager = this.managerBase; const comm = new MockComm(); const model = await manager.handle_comm_open(comm, { content: { data: { state: { _model_name: 'BinaryWidget', _model_module: 'test-widgets', _model_module_version: '1.0.0', array: { dtype: 'uint8' }, }, buffer_paths: [['array', 'buffer']], }, }, buffers: [new DataView(new Uint8Array([1, 2, 3]).buffer)], metadata: { version: '2.1.0', }, }); expect(model.comm).to.equal(comm); expect(model.get('array')).to.deep.equal(new Uint8Array([1, 2, 3])); }); }); describe('new_widget', function () { it('syncs once on creation', async function () { const comm = new MockComm(); sinon.spy(comm, 'send'); const spec = { model_name: 'TestWidget', model_module: 'test-widgets', model_module_version: '1.0.0', view_name: 'TestView', view_module: 'test-widgets', view_module_version: '1.0.0', comm: comm, }; const manager = this.managerBase; await manager.new_widget(spec); expect((comm.send as any).calledOnce).to.be.true; }); it('rejects if view information is not passed in', async function () { const comm = new MockComm(); sinon.spy(comm, 'send'); const spec = { model_name: 'TestWidget', model_module: 'test-widgets', model_module_version: '1.0.0', comm: comm, }; const manager = this.managerBase; expect(manager.new_widget(spec)).to.be.rejectedWith( 'new_widget(...) must be given view information in the options.' ); }); it('creates a comm if one is not passed in', async function () { const spec = { model_name: 'TestWidget', model_module: 'test-widgets', model_module_version: '1.0.0', view_name: 'TestView', view_module: 'test-widgets', view_module_version: '1.0.0', }; const manager = this.managerBase; const model = await manager.new_widget(spec); expect(model.comm).to.not.be.undefined; }); it('creates a model even if the comm creation has errors', async function () { const spec = { model_name: 'TestWidget', model_module: 'test-widgets', model_module_version: '1.0.0', view_name: 'TestView', view_module: 'test-widgets', view_module_version: '1.0.0', }; class NewWidgetManager extends DummyManager { _create_comm(): Promise { return Promise.reject('failed creation'); } } const manager = new NewWidgetManager(); const model = await manager.new_widget(spec); expect(model.comm).to.be.undefined; expect(model.model_id).to.not.be.undefined; }); }); describe('new_model', function () { it('returns a promise to a model', async function () { const manager = this.managerBase; const model = await manager.new_model(this.modelOptions); // we check that the model has a .get() method expect(model).to.have.property('get'); expect(model).to.have.property('set'); expect(model.name).to.be.equal(this.modelOptions.model_name); expect(model.module).to.be.equal(this.modelOptions.model_module); }); it('model id defaults to comm id if not specified', async function () { const comm = new MockComm(); const spec = { model_name: 'TestWidget', model_module: 'test-widgets', model_module_version: '1.0.0', comm: comm, }; const manager = this.managerBase; const model = await manager.new_model(spec); expect(model.model_id).to.be.equal(comm.comm_id); }); it('rejects if model_id or comm not given', async function () { const spec = { model_name: 'TestWidget', model_module: 'test-widgets', model_module_version: '1.0.0', }; const manager = this.managerBase; expect(manager.new_model(spec)).to.be.rejectedWith( 'Neither comm nor model_id provided in options object. At least one must exist.' ); }); it('return ErrorWidget if model class can not be loaded', async function () { const spec = { model_name: 'Foo', model_module: 'bar', model_module_version: '1.0.0', model_id: 'id', }; const manager = this.managerBase; const model = await manager.new_model(spec); expect(model.get('msg')).to.be.equal( "Failed to load model class 'Foo' from module 'bar'" ); }); it('return ErrorWidget if model can not be created', async function () { const spec = { model_name: 'ModelErrorWidget', model_module: 'test-widgets', model_module_version: '1.0.0', model_id: 'id', }; const manager = this.managerBase; const model = await manager.new_model(spec); expect(model.get('msg')).to.be.equal( "Model class 'ModelErrorWidget' from module 'test-widgets' is loaded but can not be instantiated" ); }); it('does not sync on creation', async function () { const comm = new MockComm(); sinon.spy(comm, 'send'); const spec = { model_name: 'TestWidget', model_module: 'test-widgets', model_module_version: '1.0.0', comm: comm, }; const manager = this.managerBase; await manager.new_model(spec); expect((comm.send as any).notCalled).to.be.true; }); it('calls loadClass to retrieve model class', async function () { const manager = this.managerBase; sinon.spy(manager, 'loadClass'); await manager.new_model(this.modelOptions); expect(manager.loadClass.calledOnce).to.be.true; }); it('deserializes attributes using custom serializers and handles binary state', async function () { const manager = this.managerBase; const model = await manager.new_model( { model_name: 'BinaryWidget', model_module: 'test-widgets', model_module_version: '1.0.0', model_id: 'u-u-i-d', }, { array: { dtype: 'uint8', buffer: new DataView(new Uint8Array([1, 2, 3]).buffer), }, } ); expect(model.get('array')).to.deep.equal(new Uint8Array([1, 2, 3])); }); it('sets up a comm close handler to delete the model', async function () { const comm = new MockComm(); const spec = { model_name: 'TestWidget', model_module: 'test-widgets', model_module_version: '1.0.0', comm: comm, }; const manager = this.managerBase; const model = await manager.new_model(spec); comm.close(); expect(manager.get_model(model.model_id)).to.be.rejected; }); }); describe('clear_state', function () { it('clears the model dictionary and closes widgets', async function () { const spec = { model_name: 'TestWidget', model_module: 'test-widgets', model_module_version: '1.0.0', }; const comm1 = new MockComm(); const comm2 = new MockComm(); sinon.spy(comm1, 'close'); sinon.spy(comm2, 'close'); const mSpec1 = { ...spec, comm: comm1 }; const mSpec2 = { ...spec, comm: comm2 }; const manager = this.managerBase; const model1 = await manager.new_model(mSpec1); const model2 = await manager.new_model(mSpec2); expect(await manager.get_model(model1.model_id)).to.be.equal(model1); expect(await manager.get_model(model2.model_id)).to.be.equal(model2); await manager.clear_state(); expect(manager.get_model(model1.model_id)).to.be.rejected; expect(manager.get_model(model2.model_id)).to.be.rejected; expect((comm1.close as any).calledOnce).to.be.true; expect((comm2.close as any).calledOnce).to.be.true; expect(model1.comm).to.be.undefined; expect(model2.comm).to.be.undefined; }); }); describe('get_state', function () { it('returns a valid schema', async function () { const manager = this.managerBase; await manager.new_model(this.modelOptions); const state = await manager.get_state(); const expectedState = { version_major: 2, version_minor: 0, state: { 'u-u-i-d': { model_name: 'TestWidget', model_module: 'test-widgets', model_module_version: '1.0.0', state: { _model_module: 'test-widgets', _model_name: 'TestWidget', _model_module_version: '1.0.0', _view_module: 'test-widgets', _view_name: 'TestWidgetView', _view_module_version: '1.0.0', _view_count: null as any, }, }, }, }; expect(state).to.deep.equal(expectedState); }); it('handles the drop_defaults option', async function () { const manager = this.managerBase; await manager.new_model(this.modelOptions, { value: 50 }); const state = await manager.get_state({ drop_defaults: true }); const expectedState = { version_major: 2, version_minor: 0, state: { 'u-u-i-d': { model_name: 'TestWidget', model_module: 'test-widgets', model_module_version: '1.0.0', state: { value: 50, }, }, }, }; expect(state).to.deep.equal(expectedState); }); it('encodes binary buffers to base64 using custom serializers', async function () { const manager = this.managerBase; await manager.new_model( { model_name: 'BinaryWidget', model_module: 'test-widgets', model_module_version: '1.0.0', model_id: 'u-u-i-d', }, { array: { dtype: 'uint8', buffer: new DataView(new Uint8Array([1, 2, 3]).buffer), }, } ); const state = await manager.get_state({ drop_defaults: true }); const expectedState = { version_major: 2, version_minor: 0, state: { 'u-u-i-d': { model_name: 'BinaryWidget', model_module: 'test-widgets', model_module_version: '1.0.0', state: { array: { dtype: 'uint8' }, }, buffers: [ { data: 'AQID', path: ['array', 'buffer'], encoding: 'base64', }, ], }, }, }; expect(state).to.deep.equal(expectedState); }); }); describe('set_state', function () { it('handles binary base64 buffers', async function () { const state = { version_major: 2, version_minor: 0, state: { 'u-u-i-d': { model_name: 'BinaryWidget', model_module: 'test-widgets', model_module_version: '1.0.0', state: { array: { dtype: 'uint8' }, }, buffers: [ { data: 'AQID', path: ['array', 'buffer'], encoding: 'base64', }, ], }, }, }; const manager = this.managerBase; await manager.set_state(state); const model = await manager.get_model('u-u-i-d'); expect(model.get('array')).to.deep.equal(new Uint8Array([1, 2, 3])); }); it('handles binary hex buffers', async function () { const state = { version_major: 2, version_minor: 0, state: { 'u-u-i-d': { model_name: 'BinaryWidget', model_module: 'test-widgets', model_module_version: '1.0.0', state: { array: { dtype: 'uint8' }, }, buffers: [ { data: '010203', path: ['array', 'buffer'], encoding: 'hex', }, ], }, }, }; const manager = this.managerBase; await manager.set_state(state); const model = await manager.get_model('u-u-i-d'); expect(model.get('array')).to.deep.equal(new Uint8Array([1, 2, 3])); }); }); }); ipywidgets-8.1.1/packages/base-manager/test/tsconfig.json000066400000000000000000000003271450026722000234770ustar00rootroot00000000000000{ "extends": "../../../tsconfigbase", "compilerOptions": { "types": ["mocha"], "outDir": "build", "rootDir": "src" }, "include": ["src/*"], "references": [ { "path": ".." } ] } ipywidgets-8.1.1/packages/base-manager/test/webpack-cov.conf.js000066400000000000000000000012631450026722000244530ustar00rootroot00000000000000var path = require('path'); module.exports = { entry: './test/build/index.js', output: { path: __dirname + '/build', filename: 'coverage.js', }, bail: true, module: { loaders: [ { test: /\.css$/, use: ['style-loader', 'css-loader'] }, { test: /\.md$/, type: 'asset/source' }, { test: /\.html$/, type: 'asset/resource', generator: { filename: '[name].[ext]' }, }, { test: /\.ipynb$/, type: 'json' }, ], preLoaders: [ // instrument only testing sources with Istanbul { test: /\.js$/, include: path.resolve('lib/'), loader: 'istanbul-instrumenter', }, ], }, }; ipywidgets-8.1.1/packages/base-manager/test/webpack.conf.js000066400000000000000000000010501450026722000236600ustar00rootroot00000000000000var path = require('path'); module.exports = { entry: './test/build/index.js', output: { path: __dirname + '/build', filename: 'bundle.js', }, bail: true, module: { rules: [ { test: /\.css$/, use: ['style-loader', 'css-loader'] }, { test: /\.md$/, type: 'asset/source' }, { test: /\.html$/, type: 'asset/resource', generator: { filename: '[name].[ext]' }, }, { test: /\.ipynb$/, type: 'json' }, ], }, mode: 'development', resolve: { fallback: { util: false } }, }; ipywidgets-8.1.1/packages/base-manager/tsconfig.json000066400000000000000000000002771450026722000225240ustar00rootroot00000000000000{ "extends": "../../tsconfigbase", "compilerOptions": { "outDir": "lib", "rootDir": "src" }, "include": ["src/*"], "references": [ { "path": "../base" } ] } ipywidgets-8.1.1/packages/base/000077500000000000000000000000001450026722000163775ustar00rootroot00000000000000ipywidgets-8.1.1/packages/base/.gitignore000066400000000000000000000000241450026722000203630ustar00rootroot00000000000000lib/ test/coverage/ ipywidgets-8.1.1/packages/base/.jshintrc000066400000000000000000000000731450026722000202240ustar00rootroot00000000000000{ "esnext": true, "expr": true, "node": true } ipywidgets-8.1.1/packages/base/.npmignore000066400000000000000000000001151450026722000203730ustar00rootroot00000000000000.DS_Store node_modules/ test/ .jshintrc karma.conf.js build_css.js examples/ ipywidgets-8.1.1/packages/base/css/000077500000000000000000000000001450026722000171675ustar00rootroot00000000000000ipywidgets-8.1.1/packages/base/css/index.css000066400000000000000000000017561450026722000210210ustar00rootroot00000000000000/* Copyright (c) Jupyter Development Team. * Distributed under the terms of the Modified BSD License. */ .jupyter-widgets-disconnected::before { content: '\f127'; /* chain-broken */ display: inline-block; font: normal normal 900 14px/1 'Font Awesome 5 Free', 'FontAwesome'; text-rendering: auto; -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; color: #d9534f; padding: 3px; align-self: flex-start; } .jupyter-widgets-error-widget { display: flex; flex-direction: column; justify-content: center; height: 100%; border: solid 1px red; margin: 0 auto; } .jupyter-widgets-error-widget.icon-error { min-width: var(--jp-widgets-inline-width-short); } .jupyter-widgets-error-widget.text-error { min-width: calc(2 * var(--jp-widgets-inline-width)); min-height: calc(3 * var(--jp-widgets-inline-height)); } .jupyter-widgets-error-widget p { text-align: center; } .jupyter-widgets-error-widget.text-error pre::first-line { font-weight: bold; } ipywidgets-8.1.1/packages/base/package.json000066400000000000000000000051571450026722000206750ustar00rootroot00000000000000{ "name": "@jupyter-widgets/base", "version": "6.0.6", "description": "Jupyter interactive widgets", "repository": { "type": "git", "url": "https://github.com/jupyter-widgets/ipywidgets.git" }, "license": "BSD-3-Clause", "author": "Project Jupyter", "main": "lib/index.js", "typings": "lib/index.d.ts", "files": [ "lib/**/*.d.ts", "lib/**/*.js", "css/*.css" ], "scripts": { "build": "npm run build:src", "build:src": "tsc --build", "build:test": "tsc --build test && webpack --config test/webpack.conf.js", "clean": "npm run clean:src", "clean:src": "rimraf lib && rimraf tsconfig.tsbuildinfo", "prepublish": "npm run clean && npm run build", "test": "npm run test:unit", "test:coverage": "npm run build:test && webpack --config test/webpack-cov.conf.js && karma start test/karma-cov.conf.js", "test:unit": "npm run test:unit:firefox && npm run test:unit:chrome", "test:unit:chrome": "npm run test:unit:default -- --browsers=Chrome", "test:unit:chrome:debug": "npm run test:unit:default -- --browsers=Chrome --single-run=false", "test:unit:default": "npm run build:test && karma start test/karma.conf.js --log-level debug", "test:unit:firefox": "npm run test:unit:default -- --browsers=Firefox", "test:unit:firefox:headless": "npm run test:unit:default -- --browsers=FirefoxHeadless", "test:unit:ie": "npm run test:unit:default -- --browsers=IE" }, "dependencies": { "@jupyterlab/services": "^6.0.0 || ^7.0.0", "@lumino/coreutils": "^1.11.1 || ^2.1", "@lumino/messaging": "^1.10.1 || ^2.1", "@lumino/widgets": "^1.30.0 || ^2.1", "@types/backbone": "1.4.14", "@types/lodash": "^4.14.134", "backbone": "1.4.0", "jquery": "^3.1.1", "lodash": "^4.17.4" }, "devDependencies": { "@types/base64-js": "^1.2.5", "@types/chai": "^4.1.7", "@types/chai-as-promised": "^7.1.0", "@types/expect.js": "^0.3.29", "@types/jquery": "^3.5.16", "@types/mocha": "^9.0.0", "@types/sinon": "^10.0.2", "@types/sinon-chai": "^3.2.2", "chai": "^4.0.0", "chai-as-promised": "^7.0.0", "expect.js": "^0.3.1", "istanbul-instrumenter-loader": "^3.0.1", "karma": "^6.3.3", "karma-chrome-launcher": "^3.1.0", "karma-coverage": "^2.0.3", "karma-firefox-launcher": "^2.1.1", "karma-ie-launcher": "^1.0.0", "karma-mocha": "^2.0.1", "karma-mocha-reporter": "^2.2.5", "karma-webpack": "^5.0.0", "mocha": "^9.0.0", "npm-run-all": "^4.1.5", "rimraf": "^3.0.2", "sinon": "^12.0.1", "sinon-chai": "^3.3.0", "typescript": "~4.9.4", "webpack": "^5.65.0" } } ipywidgets-8.1.1/packages/base/src/000077500000000000000000000000001450026722000171665ustar00rootroot00000000000000ipywidgets-8.1.1/packages/base/src/backbone-patch.ts000066400000000000000000000105541450026722000224040ustar00rootroot00000000000000// This file contains a modified version of the set function from the Backbone // (see // https://github.com/jashkenas/backbone/blob/05fde9e201f7e2137796663081105cd6dad12a98/backbone.js#L460, // with changes below marked with an EDIT comment). This file in Backbone has the following license. // (c) 2010-2015 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors // Backbone may be freely distributed under the MIT license. // For all details and documentation: // http://backbonejs.org // Backbone's full license is below (from https://github.com/jashkenas/backbone/blob/05fde9e201f7e2137796663081105cd6dad12a98/LICENSE) /* Copyright (c) 2010-2015 Jeremy Ashkenas, DocumentCloud Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ import * as utils from './utils'; import { ModelSetOptions, ObjectHash } from 'backbone'; import { JSONExt } from '@lumino/coreutils'; // Set a hash of model attributes on the object, firing `"change"`. This is // the core primitive operation of a model, updating the data and notifying // anyone who needs to know about the change in state. The heart of the beast. // This *MUST* be called with the model as the `this` context. export function set( key: string | {}, val: any, options: ModelSetOptions & { unset?: boolean } ): any { if (key == null) { return this; } // Handle both `"key", value` and `{key: value}` -style arguments. let attrs: ObjectHash; if (JSONExt.isObject(key)) { attrs = key; options = val; } else { (attrs = {} as ObjectHash)[key] = val; } options || (options = {}); // Run validation. if (!this._validate(attrs, options)) { return false; } // Extract attributes and options. const unset = options.unset; const silent = options.silent; const changes = []; const changing = this._changing; this._changing = true; try { if (!changing) { // EDIT: changed to use object spread instead of _.clone this._previousAttributes = { ...this.attributes }; this.changed = {}; } const current = this.attributes; const changed = this.changed; const prev = this._previousAttributes; // For each `set` attribute, update or delete the current value. for (const attr in attrs) { val = attrs[attr]; // EDIT: the following two lines use our isEqual instead of _.isEqual if (!utils.isEqual(current[attr], val)) { changes.push(attr); } if (!utils.isEqual(prev[attr], val)) { changed[attr] = val; } else { delete changed[attr]; } unset ? delete current[attr] : (current[attr] = val); } // Update the `id`. this.id = this.get(this.idAttribute); // Trigger all relevant attribute changes. if (!silent) { if (changes.length) { this._pending = options; } for (let i = 0; i < changes.length; i++) { this.trigger( 'change:' + changes[i], this, current[changes[i]], options ); } } // You might be wondering why there's a `while` loop here. Changes can // be recursively nested within `"change"` events. if (changing) { return this; } if (!silent) { while (this._pending) { options = this._pending; this._pending = false; this.trigger('change', this, options); } } } finally { this._pending = false; this._changing = false; } return this; } ipywidgets-8.1.1/packages/base/src/errorwidget.ts000066400000000000000000000052771450026722000221060ustar00rootroot00000000000000import { WidgetModel, DOMWidgetModel, DOMWidgetView, WidgetView, } from './widget'; import { JUPYTER_WIDGETS_VERSION } from './version'; import { BROKEN_FILE_SVG_ICON } from './utils'; // create a Widget Model that captures an error object export function createErrorWidgetModel( error: unknown, msg?: string ): typeof WidgetModel { class ErrorWidget extends DOMWidgetModel { constructor(attributes: any, options: any) { attributes = { ...attributes, _view_name: 'ErrorWidgetView', _view_module: '@jupyter-widgets/base', _model_module_version: JUPYTER_WIDGETS_VERSION, _view_module_version: JUPYTER_WIDGETS_VERSION, msg: msg, error: error, }; super(attributes, options); this.comm_live = true; } } return ErrorWidget; } export class ErrorWidgetView extends DOMWidgetView { generateErrorMessage(): { msg?: string; stack: string } { return { msg: this.model.get('msg'), stack: String(this.model.get('error').stack), }; } render(): void { const { msg, stack } = this.generateErrorMessage(); this.el.classList.add('jupyter-widgets'); const content = document.createElement('div'); content.classList.add('jupyter-widgets-error-widget', 'icon-error'); content.innerHTML = BROKEN_FILE_SVG_ICON; const text = document.createElement('pre'); text.style.textAlign = 'center'; text.innerText = 'Click to show javascript error.'; content.append(text); this.el.appendChild(content); let width: number; let height: number; this.el.onclick = () => { if (content.classList.contains('icon-error')) { height = height || content.clientHeight; width = width || content.clientWidth; content.classList.remove('icon-error'); content.innerHTML = `
[Open Browser Console for more detailed log - Double click to close this message]\n${msg}\n${stack}
`; content.style.height = `${height}px`; content.style.width = `${width}px`; content.classList.add('text-error'); } }; this.el.ondblclick = () => { if (content.classList.contains('text-error')) { content.classList.remove('text-error'); content.innerHTML = BROKEN_FILE_SVG_ICON; content.append(text); content.classList.add('icon-error'); } }; } } export function createErrorWidgetView( error?: unknown, msg?: string ): typeof WidgetView { return class InnerErrorWidgetView extends ErrorWidgetView { generateErrorMessage(): { msg?: string; stack: string } { return { msg, stack: String(error instanceof Error ? error.stack : error), }; } }; } ipywidgets-8.1.1/packages/base/src/index.ts000066400000000000000000000006121450026722000206440ustar00rootroot00000000000000// Copyright (c) Jupyter Development Team. // Distributed under the terms of the Modified BSD License. export * from './widget'; export * from './manager'; export * from './widget_layout'; export * from './widget_style'; export * from './services-shim'; export * from './viewlist'; export * from './version'; export * from './utils'; export * from './registry'; export * from './errorwidget'; ipywidgets-8.1.1/packages/base/src/manager.ts000066400000000000000000000113111450026722000211450ustar00rootroot00000000000000// Copyright (c) Jupyter Development Team. // Distributed under the terms of the Modified BSD License. import { JSONObject } from '@lumino/coreutils'; import { IClassicComm, ICallbacks } from './services-shim'; import { DOMWidgetModel, DOMWidgetView, WidgetModel, WidgetView, } from './widget'; /** * The options for a model. * * #### Notes * Either a comm or a model_id must be provided. */ export interface IModelOptions { /** * Target name of the widget model to create. */ model_name: string; /** * Module name of the widget model to create. */ model_module: string; /** * Semver version requirement for the model module. */ model_module_version: string; /** * Target name of the widget view to create. */ view_name?: string | null; /** * Module name of the widget view to create. */ view_module?: string | null; /** * Semver version requirement for the view module. */ view_module_version?: string; /** * Comm object associated with the widget. */ comm?: any; /** * The model id to use. If not provided, the comm id of the comm is used. */ model_id?: string; } /** * The options for a connected model. * * This gives all of the information needed to instantiate a comm to a new * widget on the kernel side (so view information is mandatory). * * #### Notes * Either a comm or a model_id must be provided. */ export interface IWidgetOptions extends IModelOptions { /** * Target name of the widget model to create. */ model_name: string; /** * Module name of the widget model to create. */ model_module: string; /** * Semver version requirement for the model module. */ model_module_version: string; /** * Target name of the widget view to create. */ view_name: string | null; /** * Module name of the widget view to create. */ view_module: string | null; /** * Semver version requirement for the view module. */ view_module_version: string; /** * Comm object associated with the widget. */ comm?: IClassicComm; /** * The model id to use. If not provided, the comm id of the comm is used. */ model_id?: string; } /** * The widget manager interface exposed on the Widget instances */ export interface IWidgetManager { /** * Get a promise for a model by model id. * * #### Notes * If a model is not found, undefined is returned (NOT a promise). However, * the calling code should also deal with the case where a rejected promise * is returned, and should treat that also as a model not found. */ get_model(model_id: string): Promise; /** * Returns true if the given model is registered, otherwise false. * * #### Notes * This is a synchronous way to check if a model is registered. */ has_model(model_id: string): boolean; /** * Register a model instance promise with the manager. * * By registering the model, it can later be retrieved with `get_model`. */ register_model(model_id: string, modelPromise: Promise): void; /** * Create a comm and new widget model. * @param options - same options as new_model but comm is not * required and additional options are available. * @param serialized_state - serialized model attributes. */ new_widget( options: IWidgetOptions, serialized_state?: JSONObject ): Promise; /** * Create and return a promise for a new widget model * * @param options - the options for creating the model. * @param serialized_state - attribute values for the model. * * @example * widget_manager.new_model({ * model_name: 'IntSlider', * model_module: '@jupyter-widgets/controls', * model_module_version: '1.0.0', * model_id: 'u-u-i-d' * }).then((model) => { console.log('Create success!', model); }, * (err) => {console.error(err)}); * */ new_model( options: IModelOptions, serialized_state?: JSONObject ): Promise; /** * Creates a promise for a view of a given model * * Make sure the view creation is not out of order with * any state updates. */ create_view( model: DOMWidgetModel, options?: unknown ): Promise; create_view( model: WidgetModel, options?: unknown ): Promise; /** * callback handlers specific to a view */ callbacks(view?: WidgetView): ICallbacks; /** * Resolve a URL relative to the current notebook location. * * The default implementation just returns the original url. */ resolveUrl(url: string): Promise; inline_sanitize(s: string): string; } ipywidgets-8.1.1/packages/base/src/nativeview.ts000066400000000000000000000147431450026722000217300ustar00rootroot00000000000000// Copyright (c) Jupyter Development Team. // Distributed under the terms of the Modified BSD License. /* This file contains substantial portions of https://github.com/akre54/Backbone.NativeView/blob/521188d9554b53d95d70ed34f878d8ac9fc10df2/backbone.nativeview.js, which has the following license: (c) 2015 Adam Krebs, Jimmy Yuen Ho Wong Backbone.NativeView may be freely distributed under the MIT license. Copyright (c) 2014 Adam Krebs Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ import * as Backbone from 'backbone'; // Caches a local reference to `Element.prototype` for faster access. const ElementProto: any = typeof Element !== 'undefined' ? Element.prototype : undefined; // Find the right `Element#matches` for IE>=9 and modern browsers. function matchesFallback(selector: string): boolean { const matches = (this.document || this.ownerDocument).querySelectorAll( selector ); let i = matches.length; while (--i >= 0 && matches.item(i) !== this) { continue; } return i > -1; } const matchesSelector = ElementProto ? ElementProto.matches || ElementProto['webkitMatchesSelector'] || ElementProto['mozMatchesSelector'] || ElementProto['msMatchesSelector'] || ElementProto['oMatchesSelector'] || matchesFallback : matchesFallback; interface IDOMEvent { eventName: string; handler: any; listener: any; selector: string; } export class NativeView extends Backbone.View { _removeElement(): void { this.undelegateEvents(); if (this.el.parentNode) { this.el.parentNode.removeChild(this.el); } } // Apply the `element` to the view. _setElement(element: HTMLElement): void { this.el = element; } // Set a hash of attributes to the view's `el`. We use the "prop" version // if available, falling back to `setAttribute` for the catch-all. _setAttributes(attrs: Backbone.ObjectHash): void { for (const attr in attrs) { attr in this.el ? ((this.el as any)[attr] = attrs[attr]) : this.el.setAttribute(attr, attrs[attr]); } } /** * Make an event delegation handler for the given `eventName` and `selector` * and attach it to `this.el`. * If selector is empty, the listener will be bound to `this.el`. If not, a * new handler that will recursively traverse up the event target's DOM * hierarchy looking for a node that matches the selector. If one is found, * the event's `delegateTarget` property is set to it and the return the * result of calling bound `listener` with the parameters given to the * handler. * * This does not properly handle selectors for things like focus and blur (see * https://github.com/jquery/jquery/blob/7d21f02b9ec9f655583e898350badf89165ed4d5/src/event.js#L442 * for some similar exceptional cases). */ delegate(eventName: string, listener: Function): this; delegate(eventName: string, selector: string, listener: Function): this; delegate( eventName: string, selector: string | Function, listener?: any ): this { if (typeof selector !== 'string') { listener = selector; selector = null!; } // We have to initialize this here, instead of in the constructor, because the // super constructor eventually calls this method before we get a chance to initialize // this._domEvents to an empty list. if (this._domEvents === void 0) { this._domEvents = []; } const root = this.el; const handler = selector ? function (e: Event): any { let node = (e.target as HTMLElement) || (e.srcElement as HTMLElement); for (; node && node !== root; node = node.parentNode as HTMLElement) { if (matchesSelector.call(node, selector)) { (e as any).delegateTarget = node; if (listener.handleEvent) { return listener.handleEvent(e); } else { return listener(e); } } } } : listener; this.el.addEventListener(eventName, handler, false); this._domEvents.push({ eventName, handler, listener, selector }); return handler; } // Remove a single delegated event. Either `eventName` or `selector` must // be included, `selector` and `listener` are optional. undelegate(eventName: string, selector?: string, listener?: Function): this; undelegate(selector: string, listener?: Function): this; undelegate( eventName: string, selector?: string | Function, listener?: Function ): NativeView { if (typeof selector === 'function') { listener = selector; selector = null!; } if (this.el && this._domEvents) { const handlers = this._domEvents.slice(); let i = handlers.length; while (i--) { const item = handlers[i]; const match = item.eventName === eventName && (listener ? item.listener === listener : true) && (selector ? item.selector === selector : true); if (!match) { continue; } this.el.removeEventListener(item.eventName, item.handler, false); this._domEvents.splice(i, 1); } } return this; } // Remove all events created with `delegate` from `el` undelegateEvents(): this { if (this.el && this._domEvents) { const len = this._domEvents.length; for (let i = 0; i < len; i++) { const item = this._domEvents[i]; this.el.removeEventListener(item.eventName, item.handler, false); } this._domEvents.length = 0; } return this; } private _domEvents: IDOMEvent[]; } ipywidgets-8.1.1/packages/base/src/registry.ts000066400000000000000000000022271450026722000214110ustar00rootroot00000000000000// Copyright (c) Jupyter Development Team. // Distributed under the terms of the Modified BSD License. import { Token } from '@lumino/coreutils'; import { WidgetModel, WidgetView } from './widget'; /** * A runtime interface token for a widget registry. */ export const IJupyterWidgetRegistry = new Token( 'jupyter.extensions.jupyterWidgetRegistry' ); /** * A registry of Jupyter Widgets. * * This is used by widget managers that support an external registry. */ export interface IJupyterWidgetRegistry { /** * Register a widget module. */ registerWidget(data: IWidgetRegistryData): void; } export type ExportMap = { [key: string]: typeof WidgetModel | typeof WidgetView; }; export type ExportData = | ExportMap | Promise | (() => ExportMap) | (() => Promise); export interface IWidgetRegistryData { /** * The widget module name. */ name: string; /** * The widget module version. */ version: string; /** * A map of object names to widget classes provided by the module, or a * promise to such a map, or a function returning the same. */ exports: ExportData; } ipywidgets-8.1.1/packages/base/src/services-shim.ts000066400000000000000000000221111450026722000223140ustar00rootroot00000000000000// Copyright (c) Jupyter Development Team. // Distributed under the terms of the Modified BSD License. /** * This module defines shims for @jupyterlab/services that allows you to use the * old comm API. Use this, @jupyterlab/services, and the widget base manager to * embed live widgets in a context outside of the notebook. */ import { Kernel, KernelMessage } from '@jupyterlab/services'; import type { JSONValue, JSONObject } from '@lumino/coreutils'; /** * Callbacks for services shim comms. */ export interface ICallbacks { shell?: { [key: string]: (msg: KernelMessage.IShellMessage) => void }; iopub?: { [key: string]: (msg: KernelMessage.IIOPubMessage) => void }; input?: (msg: KernelMessage.IStdinMessage) => void; } export interface IClassicComm { /** * Comm id * @return {string} */ comm_id: string; /** * Target name * @return {string} */ target_name: string; /** * Opens a sibling comm in the backend * @param data * @param callbacks * @param metadata * @param buffers * @return msg id */ open( data: JSONValue, callbacks?: ICallbacks, metadata?: JSONObject, buffers?: ArrayBuffer[] | ArrayBufferView[] ): string; /** * Sends a message to the sibling comm in the backend * @param data * @param callbacks * @param metadata * @param buffers * @return message id */ send( data: JSONValue, callbacks?: ICallbacks, metadata?: JSONObject, buffers?: ArrayBuffer[] | ArrayBufferView[] ): string; /** * Closes the sibling comm in the backend * @param data * @param callbacks * @param metadata * @param buffers * @return msg id */ close( data?: JSONValue, callbacks?: ICallbacks, metadata?: JSONObject, buffers?: ArrayBuffer[] | ArrayBufferView[] ): string; /** * Register a message handler * @param callback, which is given a message */ on_msg(callback: (x: any) => void): void; /** * Register a handler for when the comm is closed by the backend * @param callback, which is given a message */ on_close(callback: (x: any) => void): void; } export namespace shims { export namespace services { /** * Public constructor * @param jsServicesKernel - @jupyterlab/services Kernel.IKernel instance */ export class CommManager { constructor(jsServicesKernel: Kernel.IKernelConnection) { this.init_kernel(jsServicesKernel); } /** * Hookup kernel events. * @param {Kernel.IKernel} jsServicesKernel - @jupyterlab/services Kernel.IKernel instance */ init_kernel(jsServicesKernel: Kernel.IKernelConnection): void { this.kernel = jsServicesKernel; // These aren't really the same. this.jsServicesKernel = jsServicesKernel; } /** * Creates a new connected comm */ async new_comm( target_name: string, data: any, callbacks: any, metadata: any, comm_id: string, buffers?: ArrayBuffer[] | ArrayBufferView[] ): Promise { const c = this.jsServicesKernel.createComm(target_name, comm_id); const comm = new Comm(c); this.register_comm(comm); comm.open(data, callbacks, metadata, buffers); return comm; } /** * Register a comm target * @param {string} target_name * @param {(Comm, object) => void} f - callback that is called when the * comm is made. Signature of f(comm, msg). */ register_target( target_name: string, f: (comm: Comm, object: KernelMessage.IMessage) => void ): void { const handle = this.jsServicesKernel.registerCommTarget( target_name, (jsServicesComm, msg) => { // Create the comm. const comm = new Comm(jsServicesComm); this.register_comm(comm); // Call the callback for the comm. try { return f(comm, msg); } catch (e) { comm.close(); console.error(e); console.error(new Error('Exception opening new comm')); } } ); this.targets[target_name] = handle; } /** * Unregisters a comm target * @param {string} target_name */ unregister_target( target_name: string, f: (comm: Comm, object: KernelMessage.IMessage) => void ): void { const handle = this.targets[target_name]; handle.dispose(); delete this.targets[target_name]; } /** * Register a comm in the mapping */ register_comm(comm: Comm): string { this.comms[comm.comm_id] = Promise.resolve(comm); comm.kernel = this.kernel; return comm.comm_id; } targets = Object.create(null); comms = Object.create(null); kernel: Kernel.IKernelConnection; jsServicesKernel: Kernel.IKernelConnection; } /** * Public constructor * @param {IComm} jsServicesComm - @jupyterlab/services IComm instance */ export class Comm implements IClassicComm { constructor(jsServicesComm: Kernel.IComm) { this.jsServicesComm = jsServicesComm; } /** * Comm id * @return {string} */ get comm_id(): string { return this.jsServicesComm.commId; } /** * Target name * @return {string} */ get target_name(): string { return this.jsServicesComm.targetName; } /** * Opens a sibling comm in the backend * @param data * @param callbacks * @param metadata * @return msg id */ open( data: JSONValue, callbacks?: ICallbacks, metadata?: JSONObject, buffers?: ArrayBuffer[] | ArrayBufferView[] ): string { const future = this.jsServicesComm.open(data, metadata, buffers); this._hookupCallbacks(future, callbacks); return future.msg.header.msg_id; } /** * Sends a message to the sibling comm in the backend * @param data * @param callbacks * @param metadata * @param buffers * @return message id */ send( data: JSONValue, callbacks?: ICallbacks, metadata?: JSONObject, buffers?: ArrayBuffer[] | ArrayBufferView[] ): string { const future = this.jsServicesComm.send(data, metadata, buffers); this._hookupCallbacks(future, callbacks); return future.msg.header.msg_id; } /** * Closes the sibling comm in the backend * @param data * @param callbacks * @param metadata * @return msg id */ close( data?: JSONValue, callbacks?: ICallbacks, metadata?: JSONObject, buffers?: ArrayBuffer[] | ArrayBufferView[] ): string { const future = this.jsServicesComm.close(data, metadata, buffers); this._hookupCallbacks(future, callbacks); return future.msg.header.msg_id; } /** * Register a message handler * @param callback, which is given a message */ on_msg(callback: (x: any) => void): void { this.jsServicesComm.onMsg = callback.bind(this); } /** * Register a handler for when the comm is closed by the backend * @param callback, which is given a message */ on_close(callback: (x: any) => void): void { this.jsServicesComm.onClose = callback.bind(this); } /** * Hooks callback object up with @jupyterlab/services IKernelFuture * @param @jupyterlab/services IKernelFuture instance * @param callbacks */ _hookupCallbacks( future: Kernel.IShellFuture, callbacks?: ICallbacks ): void { if (callbacks) { future.onReply = function (msg): void { if (callbacks.shell && callbacks.shell.reply) { callbacks.shell.reply(msg); } }; future.onStdin = function (msg): void { if (callbacks.input) { callbacks.input(msg); } }; future.onIOPub = function (msg): void { if (callbacks.iopub) { if (callbacks.iopub.status && msg.header.msg_type === 'status') { callbacks.iopub.status(msg); } else if ( callbacks.iopub.clear_output && msg.header.msg_type === 'clear_output' ) { callbacks.iopub.clear_output(msg); } else if (callbacks.iopub.output) { switch (msg.header.msg_type) { case 'display_data': case 'execute_result': case 'stream': case 'error': callbacks.iopub.output(msg); break; default: break; } } } }; } } jsServicesComm: Kernel.IComm; kernel: Kernel.IKernelConnection; } } } ipywidgets-8.1.1/packages/base/src/utils.ts000066400000000000000000000207571450026722000207110ustar00rootroot00000000000000// Copyright (c) Jupyter Development Team. // Distributed under the terms of the Modified BSD License. import { JSONObject, JSONValue, UUID, JSONExt } from '@lumino/coreutils'; import _isEqual from 'lodash/isEqual'; /** * Find all strings in the first argument that are not in the second. */ export function difference(a: string[], b: string[]): string[] { return a.filter((v) => b.indexOf(v) === -1); } /** * Compare two objects deeply to see if they are equal. */ export function isEqual(a: unknown, b: unknown): boolean { return _isEqual(a, b); } /** * A polyfill for Object.assign * * This is from code that Typescript 2.4 generates for a polyfill. */ export const assign = (Object as any).assign || function (t: any, ...args: any[]): any { for (let i = 1; i < args.length; i++) { const s = args[i]; for (const p in s) { if (Object.prototype.hasOwnProperty.call(s, p)) { t[p] = s[p]; } } } return t; }; /** * Generate a UUID * * http://www.ietf.org/rfc/rfc4122.txt */ export function uuid(): string { return UUID.uuid4(); } /** * A simple dictionary type. */ export type Dict = { [keys: string]: T }; /** * Resolve a promiseful dictionary. * Returns a single Promise. */ export function resolvePromisesDict( d: Dict | V> ): Promise> { const keys = Object.keys(d); const values: (PromiseLike | V)[] = []; keys.forEach(function (key) { values.push(d[key]); }); return Promise.all(values).then((v) => { const d: Dict = {}; for (let i = 0; i < keys.length; i++) { d[keys[i]] = v[i]; } return d; }); } /** * Creates a wrappable Promise rejection function. * * Creates a function that logs an error message before rethrowing * the original error that caused the promise to reject. */ export function reject(message: string, log: boolean) { return function promiseRejection(error: Error): never { if (log) { console.error(new Error(message)); } throw error; }; } /** * Takes an object 'state' and fills in buffer[i] at 'path' buffer_paths[i] * where buffer_paths[i] is a list indicating where in the object buffer[i] should * be placed * Example: state = {a: 1, b: {}, c: [0, null]} * buffers = [array1, array2] * buffer_paths = [['b', 'data'], ['c', 1]] * Will lead to {a: 1, b: {data: array1}, c: [0, array2]} */ export function put_buffers( state: Dict, buffer_paths: (string | number)[][], buffers: ( | DataView | ArrayBuffer | ArrayBufferView | { buffer: ArrayBuffer } )[] ): void { for (let i = 0; i < buffer_paths.length; i++) { const buffer_path = buffer_paths[i]; // make sure the buffers are DataViews let buffer = buffers[i]; if (!(buffer instanceof DataView)) { buffer = new DataView( buffer instanceof ArrayBuffer ? buffer : buffer.buffer ); } // say we want to set state[x][y][z] = buffer let obj = state as any; // we first get obj = state[x][y] for (let j = 0; j < buffer_path.length - 1; j++) { obj = obj[buffer_path[j]]; } // and then set: obj[z] = buffer obj[buffer_path[buffer_path.length - 1]] = buffer; } } export interface ISerializedState { state: JSONObject; buffers: ArrayBuffer[]; buffer_paths: (string | number)[][]; } export interface ISerializeable { toJSON(options?: {}): JSONObject; } export type BufferJSON = | { [property: string]: BufferJSON } | BufferJSON[] | string | number | boolean | null | ArrayBuffer | DataView; export function isSerializable(object: unknown): object is ISerializeable { return (typeof object === 'object' && object && 'toJSON' in object) ?? false; } export function isObject(data: BufferJSON): data is Dict { return JSONExt.isObject(data as JSONValue); } /** * The inverse of put_buffers, return an objects with the new state where all buffers(ArrayBuffer) * are removed. If a buffer is a member of an object, that object is cloned, and the key removed. If a buffer * is an element of an array, that array is cloned, and the element is set to null. * See put_buffers for the meaning of buffer_paths * Returns an object with the new state (.state) an array with paths to the buffers (.buffer_paths), * and the buffers associated to those paths (.buffers). */ export function remove_buffers( state: BufferJSON | ISerializeable ): ISerializedState { const buffers: ArrayBuffer[] = []; const buffer_paths: (string | number)[][] = []; // if we need to remove an object from a list, we need to clone that list, otherwise we may modify // the internal state of the widget model // however, we do not want to clone everything, for performance function remove( obj: BufferJSON | ISerializeable, path: (string | number)[] ): BufferJSON { if (isSerializable(obj)) { // We need to get the JSON form of the object before recursing. // See https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/JSON/stringify#toJSON()_behavior obj = obj.toJSON(); } if (Array.isArray(obj)) { let is_cloned = false; for (let i = 0; i < obj.length; i++) { const value = obj[i]; if (value) { if (value instanceof ArrayBuffer || ArrayBuffer.isView(value)) { if (!is_cloned) { obj = obj.slice(); is_cloned = true; } buffers.push(ArrayBuffer.isView(value) ? value.buffer : value); buffer_paths.push(path.concat([i])); // easier to just keep the array, but clear the entry, otherwise we have to think // about array length, much easier this way obj[i] = null; } else { const new_value = remove(value, path.concat([i])); // only assigned when the value changes, we may serialize objects that don't support assignment if (new_value !== value) { if (!is_cloned) { obj = obj.slice(); is_cloned = true; } obj[i] = new_value; } } } } } else if (isObject(obj)) { for (const key in obj) { let is_cloned = false; if (Object.prototype.hasOwnProperty.call(obj, key)) { const value = obj[key]; if (value) { if (value instanceof ArrayBuffer || ArrayBuffer.isView(value)) { if (!is_cloned) { obj = { ...obj }; is_cloned = true; } buffers.push(ArrayBuffer.isView(value) ? value.buffer : value); buffer_paths.push(path.concat([key])); delete obj[key]; // for objects/dicts we just delete them } else { const new_value = remove(value, path.concat([key])); // only assigned when the value changes, we may serialize objects that don't support assignment if (new_value !== value) { if (!is_cloned) { obj = { ...obj }; is_cloned = true; } obj[key] = new_value; } } } } } } return obj; } const new_state = remove(state, []) as JSONObject; return { state: new_state, buffers: buffers, buffer_paths: buffer_paths }; } export const BROKEN_FILE_SVG_ICON = ` `; ipywidgets-8.1.1/packages/base/src/version.ts000066400000000000000000000003021450026722000212160ustar00rootroot00000000000000// Copyright (c) Jupyter Development Team. // Distributed under the terms of the Modified BSD License. export const JUPYTER_WIDGETS_VERSION = '2.0.0'; export const PROTOCOL_VERSION = '2.1.0'; ipywidgets-8.1.1/packages/base/src/viewlist.ts000066400000000000000000000100361450026722000214040ustar00rootroot00000000000000// Copyright (c) Jupyter Development Team. // Distributed under the terms of the Modified BSD License. /** * - create_view and remove_view are default functions called when adding or removing views * - create_view takes a model and an index and returns a view or a promise for a view for that model * - remove_view takes a view and destroys it (including calling `view.remove()`) * - each time the update() function is called with a new list, the create and remove * callbacks will be called in an order so that if you append the views created in the * create callback and remove the views in the remove callback, you will duplicate * the order of the list. * - the remove callback defaults to just removing the view (e.g., pass in null for the second parameter) * - the context defaults to the created ViewList. If you pass another context, the create and remove * will be called in that context. */ export class ViewList { constructor( create_view: (model: any, index: any) => T | Promise, remove_view: ((view: T) => void) | null, context: any ) { this.initialize(create_view, remove_view, context); } initialize( create_view: (model: any, index: any) => T | Promise, remove_view: ((view: T) => void) | null, context: any ): void { this._handler_context = context || this; this._models = []; this.views = []; // list of promises for views this._create_view = create_view; this._remove_view = remove_view || function (view): void { (view as any).remove(); }; } /** * the create_view, remove_view, and context arguments override the defaults * specified when the list is created. * after this function, the .views attribute is a list of promises for views * if you want to perform some action on the list of views, do something like * `Promise.all(myviewlist.views).then(function(views) {...});` */ update( new_models: any[], create_view?: (model: any, index: any) => T | Promise, remove_view?: (view: T) => void, context?: any ): Promise { const remove = remove_view || this._remove_view; const create = create_view || this._create_view; context = context || this._handler_context; let i = 0; // first, skip past the beginning of the lists if they are identical for (; i < new_models.length; i++) { if (i >= this._models.length || new_models[i] !== this._models[i]) { break; } } const first_removed = i; // Remove the non-matching items from the old list. const removed = this.views.splice( first_removed, this.views.length - first_removed ); for (let j = 0; j < removed.length; j++) { removed[j].then(function (view) { remove.call(context, view); }); } // Add the rest of the new list items. for (; i < new_models.length; i++) { this.views.push(Promise.resolve(create.call(context, new_models[i], i))); } // make a copy of the input array this._models = new_models.slice(); // return a promise that resolves to all of the resolved views return Promise.all(this.views); } /** * removes every view in the list; convenience function for `.update([])` * that should be faster * returns a promise that resolves after this removal is done */ remove(): Promise { return Promise.all(this.views).then((views) => { views.forEach((value) => this._remove_view.call(this._handler_context, value) ); this.views = []; this._models = []; }); } /** * Dispose this viewlist. * * A synchronous function which just deletes references to child views. This * function does not call .remove() on child views because that is * asynchronous. Use this in cases where child views will be removed in * another way. */ dispose(): void { this.views = null!; this._models = null!; } _handler_context: any; _models: any[]; views: Promise[]; _create_view: (model: any, index: any) => T | Promise; _remove_view: (view: T) => void; } ipywidgets-8.1.1/packages/base/src/widget.ts000066400000000000000000001111561450026722000210260ustar00rootroot00000000000000// Copyright (c) Jupyter Development Team. // Distributed under the terms of the Modified BSD License. import * as utils from './utils'; import * as backbonePatch from './backbone-patch'; import * as Backbone from 'backbone'; import $ from 'jquery'; import { NativeView } from './nativeview'; import { JSONObject, JSONValue, JSONExt } from '@lumino/coreutils'; import { Message, MessageLoop } from '@lumino/messaging'; import { Widget, Panel } from '@lumino/widgets'; import { LayoutModel } from './widget_layout'; import { StyleModel } from './widget_style'; import { IWidgetManager } from './manager'; import { IClassicComm, ICallbacks } from './services-shim'; import { JUPYTER_WIDGETS_VERSION } from './version'; import { BufferJSON, Dict } from './utils'; import { KernelMessage } from '@jupyterlab/services'; /** * The magic key used in the widget graph serialization. */ const IPY_MODEL_ = 'IPY_MODEL_'; /** * Replace model ids with models recursively. */ export function unpack_models( value: any | Dict | string | (Dict | string)[], manager?: IWidgetManager // actually required, but typed to be compatible with ISerializers ): Promise | WidgetModel[] | any> { if (Array.isArray(value)) { const unpacked: any[] = []; for (const sub_value of value) { unpacked.push(unpack_models(sub_value, manager)); } return Promise.all(unpacked); } else if (value instanceof Object && typeof value !== 'string') { const unpacked: { [key: string]: any } = {}; for (const [key, sub_value] of Object.entries(value)) { unpacked[key] = unpack_models(sub_value, manager); } return utils.resolvePromisesDict(unpacked); } else if (typeof value === 'string' && value.slice(0, 10) === IPY_MODEL_) { // get_model returns a promise already return manager!.get_model(value.slice(10, value.length)); } else { return Promise.resolve(value); } } /** Replace models with ids recursively. * * If the commonly-used `unpack_models` is given as the `deseralize` method, * pack_models would be the appropriate `serialize`. * However, the default serialize method will have the same effect, when * `unpack_models` is used as the deserialize method. * This is to ensure backwards compatibility, see: * https://github.com/jupyter-widgets/ipywidgets/pull/3738/commits/f9e27328bb631eb5247a7a6563595d3e655492c7#diff-efb19099381ae8911dd7f69b015a0138d08da7164512c1ee112aa75100bc9be2 */ export function pack_models( value: WidgetModel | Dict | WidgetModel[] | any, widget?: WidgetModel ): any | Dict | string | (Dict | string)[] { if (Array.isArray(value)) { const model_ids: string[] = []; for (const model of value) { model_ids.push(pack_models(model, widget)); } return model_ids; } else if (value instanceof WidgetModel) { return `${IPY_MODEL_}${value.model_id}`; } else if (value instanceof Object && typeof value !== 'string') { const packed: { [key: string]: string } = {}; for (const [key, sub_value] of Object.entries(value)) { packed[key] = pack_models(sub_value, widget); } } else { return value; } } /** * Type declaration for general widget serializers. */ export interface ISerializers { [key: string]: { deserialize?: (value?: any, manager?: IWidgetManager) => any; serialize?: (value?: any, widget?: WidgetModel) => any; }; } export interface IBackboneModelOptions extends Backbone.ModelSetOptions { model_id: string; comm?: any; widget_manager: any; } export class WidgetModel extends Backbone.Model { /** * The default attributes. */ defaults(): Backbone.ObjectHash { return { _model_module: '@jupyter-widgets/base', _model_name: 'WidgetModel', _model_module_version: JUPYTER_WIDGETS_VERSION, _view_module: '@jupyter-widgets/base', _view_name: null as string | null, _view_module_version: JUPYTER_WIDGETS_VERSION, _view_count: null as number | null, }; } /** * Test to see if the model has been synced with the server. * * #### Notes * As of backbone 1.1, backbone ignores `patch` if it thinks the * model has never been pushed. */ isNew(): boolean { return false; } /** * Constructor * * Initializes a WidgetModel instance. Called by the Backbone constructor. * * Parameters * ---------- * widget_manager : WidgetManager instance * model_id : string * An ID unique to this model. * comm : Comm instance (optional) */ initialize( attributes: Backbone.ObjectHash, options: IBackboneModelOptions ): void { this._expectedEchoMsgIds = new Map(); this._attrsToUpdate = new Set(); super.initialize(attributes, options); // Attributes should be initialized here, since user initialization may depend on it this.widget_manager = options.widget_manager; this.model_id = options.model_id; const comm = options.comm; this.views = Object.create(null); this.state_change = Promise.resolve(); this._closed = false; this._state_lock = null; this._msg_buffer = null; this._msg_buffer_callbacks = null; this._pending_msgs = 0; // _buffered_state_diff must be created *after* the super.initialize // call above. See the note in the set() method below. this._buffered_state_diff = {}; if (comm) { // Remember comm associated with the model. this.comm = comm; // Hook comm messages up to model. comm.on_close(this._handle_comm_closed.bind(this)); comm.on_msg(this._handle_comm_msg.bind(this)); this.comm_live = true; } else { this.comm_live = false; } } get comm_live(): boolean { return this._comm_live; } set comm_live(x) { this._comm_live = x; this.trigger('comm_live_update'); } /** * Send a custom msg over the comm. */ send( content: JSONValue, callbacks?: ICallbacks, buffers?: ArrayBuffer[] | ArrayBufferView[] ): void { if (this.comm !== undefined) { const data = { method: 'custom', content: content }; this.comm.send(data, callbacks, {}, buffers); } } /** * Close model * * @param comm_closed - true if the comm is already being closed. If false, the comm will be closed. * * @returns - a promise that is fulfilled when all the associated views have been removed. */ close(comm_closed = false): Promise { // can only be closed once. if (this._closed) { return Promise.resolve(); } this._closed = true; if (this.comm && !comm_closed) { this.comm.close(); } this.stopListening(); this.trigger('destroy', this); if (this.comm) { delete this.comm; } // Delete all views of this model if (this.views) { const views = Object.keys(this.views).map((id: string) => { return this.views![id].then((view) => view.remove()); }); delete this.views; return Promise.all(views).then(() => { return; }); } return Promise.resolve(); } /** * Handle when a widget comm is closed. */ _handle_comm_closed(msg: KernelMessage.ICommCloseMsg): void { this.trigger('comm:close'); this.close(true); } /** * Handle incoming comm msg. */ _handle_comm_msg(msg: KernelMessage.ICommMsgMsg): Promise { const data = msg.content.data as any; const method = data.method; switch (method) { case 'update': case 'echo_update': this.state_change = this.state_change .then(() => { const state: Dict = data.state; const buffer_paths = data.buffer_paths ?? []; const buffers = msg.buffers?.slice(0, buffer_paths.length) ?? []; utils.put_buffers(state, buffer_paths, buffers); if (msg.parent_header && method === 'echo_update') { const msgId = (msg.parent_header as any).msg_id; // we may have echos coming from other clients, we only care about // dropping echos for which we expected a reply const expectedEcho = Object.keys(state).filter((attrName) => this._expectedEchoMsgIds.has(attrName) ); expectedEcho.forEach((attrName: string) => { // Skip echo messages until we get the reply we are expecting. const isOldMessage = this._expectedEchoMsgIds.get(attrName) !== msgId; if (isOldMessage) { // Ignore an echo update that comes before our echo. delete state[attrName]; } else { // we got our echo confirmation, so stop looking for it this._expectedEchoMsgIds.delete(attrName); // Start accepting echo updates unless we plan to send out a new state soon if ( this._msg_buffer !== null && Object.prototype.hasOwnProperty.call( this._msg_buffer, attrName ) ) { delete state[attrName]; } } }); } return (this.constructor as typeof WidgetModel)._deserialize_state( // Combine the state updates, with preference for kernel updates state, this.widget_manager ); }) .then((state) => { this.set_state(state); }) .catch( utils.reject( `Could not process update msg for model id: ${this.model_id}`, true ) ); return this.state_change; case 'custom': this.trigger('msg:custom', data.content, msg.buffers); return Promise.resolve(); } return Promise.resolve(); } /** * Handle when a widget is updated from the backend. * * This function is meant for internal use only. Values set here will not be propagated on a sync. */ set_state(state: Dict): void { this._state_lock = state; try { this.set(state); } catch (e) { console.error( `Error setting state: ${e instanceof Error ? e.message : e}` ); } finally { this._state_lock = null; } } /** * Get the serializable state of the model. * * If drop_default is truthy, attributes that are equal to their default * values are dropped. */ get_state(drop_defaults?: boolean): JSONObject { const fullState = this.attributes; if (drop_defaults) { // if defaults is a function, call it const d = this.defaults; const defaults = typeof d === 'function' ? d.call(this) : d; const state: JSONObject = {}; Object.keys(fullState).forEach((key) => { if (!utils.isEqual(fullState[key], defaults[key])) { state[key] = fullState[key]; } }); return state; } else { return { ...fullState }; } } /** * Handle status msgs. * * execution_state : ('busy', 'idle', 'starting') */ _handle_status(msg: KernelMessage.IStatusMsg): void { if (this.comm !== void 0) { if (msg.content.execution_state === 'idle') { this._pending_msgs--; // Sanity check for logic errors that may push this below zero. if (this._pending_msgs < 0) { console.error( `Jupyter Widgets message throttle: Pending messages < 0 (=${this._pending_msgs}), which is unexpected. Resetting to 0 to continue.` ); this._pending_msgs = 0; // do not break message throttling in case of unexpected errors } // Send buffer if one is waiting and we are below the throttle. if (this._msg_buffer !== null && this._pending_msgs < 1) { const msgId = this.send_sync_message( this._msg_buffer, this._msg_buffer_callbacks ); this.rememberLastUpdateFor(msgId); this._msg_buffer = null; this._msg_buffer_callbacks = null; } } } } /** * Create msg callbacks for a comm msg. */ callbacks(view?: WidgetView): ICallbacks { return this.widget_manager.callbacks(view); } /** * Set one or more values. * * We just call the super method, in which val and options are optional. * Handles both "key", value and {key: value} -style arguments. */ set(key: any, val?: any, options?: any): any { // Call our patched backbone set. See #1642 and #1643. const return_value = backbonePatch.set.call(this, key, val, options); // Backbone only remembers the diff of the most recent set() // operation. Calling set multiple times in a row results in a // loss of change information. Here we keep our own running diff. // // We don't buffer the state set in the constructor (including // defaults), so we first check to see if we've initialized _buffered_state_diff. // which happens after the constructor sets attributes at creation. if (this._buffered_state_diff !== void 0) { const attrs = this.changedAttributes() || {}; // The state_lock lists attributes that are currently being changed // right now from a kernel message. We don't want to send these // non-changes back to the kernel, so we delete them out of attrs if // they haven't changed from their state_lock value. // The state lock could be null or undefined (if set is being called from // the initializer). if (this._state_lock) { for (const key of Object.keys(this._state_lock)) { if (attrs[key] === this._state_lock[key]) { delete attrs[key]; } } } // _buffered_state_diff_synced lists things that have already been sent to the kernel during a top-level call to .set(), so we don't need to buffer these things either. if (this._buffered_state_diff_synced) { for (const key of Object.keys(this._buffered_state_diff_synced)) { if (attrs[key] === this._buffered_state_diff_synced[key]) { delete attrs[key]; } } } this._buffered_state_diff = utils.assign( this._buffered_state_diff, attrs ); } // If this ended a top-level call to .set, then reset _buffered_state_diff_synced if ((this as any)._changing === false) { this._buffered_state_diff_synced = {}; } return return_value; } /** * Handle sync to the back-end. Called when a model.save() is called. * * Make sure a comm exists. * * Parameters * ---------- * method : create, update, patch, delete, read * create/update always send the full attribute set * patch - only send attributes listed in options.attrs, and if we * are queuing up messages, combine with previous messages that have * not been sent yet * model : the model we are syncing * will normally be the same as `this` * options : dict * the `attrs` key, if it exists, gives an {attr: value} dict that * should be synced, otherwise, sync all attributes. * */ sync(method: string, model: WidgetModel, options: any = {}): any { // the typing is to return `any` since the super.sync method returns a JqXHR, but we just return false if there is an error. if (this.comm === undefined) { throw 'Syncing error: no comm channel defined'; } const attrs = method === 'patch' ? options.attrs : model.get_state(options.drop_defaults); // The state_lock lists attributes that are currently being changed // right now from a kernel message. We don't want to send these // non-changes back to the kernel, so we delete them out of attrs if // they haven't changed from their state_lock value. // The state lock could be null or undefined (if this is triggered // from the initializer). if (this._state_lock) { for (const key of Object.keys(this._state_lock)) { if (attrs[key] === this._state_lock[key]) { delete attrs[key]; } } } Object.keys(attrs).forEach((attrName: string) => { this._attrsToUpdate.add(attrName); }); const msgState = this.serialize(attrs); if (Object.keys(msgState).length > 0) { // If this message was sent via backbone itself, it will not // have any callbacks. It's important that we create callbacks // so we can listen for status messages, etc... const callbacks = options.callbacks || this.callbacks(); // Check throttle. if (this._pending_msgs >= 1) { // The throttle has been exceeded, buffer the current msg so // it can be sent once the kernel has finished processing // some of the existing messages. // Combine updates if it is a 'patch' sync, otherwise replace updates switch (method) { case 'patch': this._msg_buffer = utils.assign(this._msg_buffer || {}, msgState); break; case 'update': case 'create': this._msg_buffer = msgState; break; default: throw 'unrecognized syncing method'; } this._msg_buffer_callbacks = callbacks; } else { // We haven't exceeded the throttle, send the message like // normal. const msgId = this.send_sync_message(attrs, callbacks); this.rememberLastUpdateFor(msgId); // Since the comm is a one-way communication, assume the message // arrived and was processed successfully. // Don't call options.success since we don't have a model back from // the server. Note that this means we don't have the Backbone // 'sync' event. } } } rememberLastUpdateFor(msgId: string) { this._attrsToUpdate.forEach((attrName) => { this._expectedEchoMsgIds.set(attrName, msgId); }); this._attrsToUpdate = new Set(); } /** * Serialize widget state. * * A serializer is a function which takes in a state attribute and a widget, * and synchronously returns a JSONable object. The returned object will * have toJSON called if possible, and the final result should be a * primitive object that is a snapshot of the widget state that may have * binary array buffers. */ serialize(state: Dict): JSONObject { const serializers = (this.constructor as typeof WidgetModel).serializers || JSONExt.emptyObject; for (const k of Object.keys(state)) { try { if (serializers[k] && serializers[k].serialize) { state[k] = serializers[k].serialize!(state[k], this); } else { // the default serializer just deep-copies the object state[k] = JSON.parse(JSON.stringify(state[k])); } if (state[k] && state[k].toJSON) { state[k] = state[k].toJSON(); } } catch (e) { console.error('Error serializing widget state attribute: ', k); throw e; } } return state; } /** * Send a sync message to the kernel. * * If a message is sent successfully, this returns the message ID of that * message. Otherwise it returns an empty string */ send_sync_message(state: JSONObject, callbacks: any = {}): string { if (!this.comm) { return ''; } try { // Make a 2-deep copy so we don't modify the caller's callbacks object. callbacks = { shell: { ...callbacks.shell }, iopub: { ...callbacks.iopub }, input: callbacks.input, }; // Save the caller's status callback so we can call it after we handle the message. const statuscb = callbacks.iopub.status; callbacks.iopub.status = (msg: KernelMessage.IStatusMsg): void => { this._handle_status(msg); if (statuscb) { statuscb(msg); } }; // split out the binary buffers const split = utils.remove_buffers(state); const msgId = this.comm.send( { method: 'update', state: split.state, buffer_paths: split.buffer_paths, }, callbacks, {}, split.buffers ); this._pending_msgs++; return msgId; } catch (e) { console.error('Could not send widget sync message', e); } return ''; } /** * Push this model's state to the back-end * * This invokes a Backbone.Sync. */ save_changes(callbacks?: {}): void { if (this.comm_live) { const options: any = { patch: true }; if (callbacks) { options.callbacks = callbacks; } this.save(this._buffered_state_diff, options); // If we are currently in a .set() call, save what state we have synced // to the kernel so we don't buffer it again as we come out of the .set call. if ((this as any)._changing) { utils.assign( this._buffered_state_diff_synced, this._buffered_state_diff ); } this._buffered_state_diff = {}; } } /** * on_some_change(['key1', 'key2'], foo, context) differs from * on('change:key1 change:key2', foo, context). * If the widget attributes key1 and key2 are both modified, * the second form will result in foo being called twice * while the first will call foo only once. */ on_some_change( keys: string[], callback: (...args: any[]) => void, context: any ): void { this.on( 'change', (...args) => { if (keys.some(this.hasChanged, this)) { callback.apply(context, args); } }, this ); } /** * Serialize the model. See the deserialization function at the top of this file * and the kernel-side serializer/deserializer. */ toJSON(options?: {}): string { return `IPY_MODEL_${this.model_id}`; } /** * Returns a promise for the deserialized state. The second argument * is an instance of widget manager, which is required for the * deserialization of widget models. */ static _deserialize_state( state: Dict, manager: IWidgetManager ): Promise> { const serializers = this.serializers; let deserialized: Dict; if (serializers) { deserialized = {}; for (const k in state) { if (serializers[k] && serializers[k].deserialize) { deserialized[k] = serializers[k].deserialize!(state[k], manager); } else { deserialized[k] = state[k]; } } } else { deserialized = state; } return utils.resolvePromisesDict(deserialized); } static serializers: ISerializers; // Backbone calls the overridden initialization function from the // constructor. We initialize the default values above in the initialization // function so that they are ready for the user code, and to not override // values subclasses may set in their initialization functions. widget_manager: IWidgetManager; model_id: string; views?: { [key: string]: Promise }; state_change: Promise; comm?: IClassicComm; name: string; module: string; private _comm_live: boolean; private _closed: boolean; private _state_lock: any; private _buffered_state_diff: any; private _buffered_state_diff_synced: any; private _msg_buffer: any; private _msg_buffer_callbacks: any; private _pending_msgs: number; // keep track of the msg id for each attr for updates we send out so // that we can ignore old messages that we send in order to avoid // 'drunken' sliders going back and forward private _expectedEchoMsgIds: Map; // because we don't know the attrs in _handle_status, we keep track of what we will send private _attrsToUpdate: Set; } export class DOMWidgetModel extends WidgetModel { static serializers: ISerializers = { ...WidgetModel.serializers, layout: { deserialize: unpack_models }, style: { deserialize: unpack_models }, }; defaults(): Backbone.ObjectHash { return utils.assign(super.defaults(), { _dom_classes: [], tabbable: null, tooltip: null, // We do not declare defaults for the layout and style attributes. // Those defaults are constructed on the kernel side and synced here // as needed, and our code here copes with those attributes being // undefined. See // https://github.com/jupyter-widgets/ipywidgets/issues/1620 and // https://github.com/jupyter-widgets/ipywidgets/pull/1621 }); } } export class WidgetView extends NativeView { /** * Public constructor. */ constructor(options?: Backbone.ViewOptions & { options?: any }) { super(options); } /** * Initializer, called at the end of the constructor. */ initialize(parameters: WidgetView.IInitializeParameters): void { this.listenTo(this.model, 'change', (model, options) => { const changed = Object.keys(this.model.changedAttributes() || {}); if (changed[0] === '_view_count' && changed.length === 1) { // Just the view count was updated return; } this.update(options); }); this.options = parameters.options; this.once('remove', () => { if (typeof this.model.get('_view_count') === 'number') { this.model.set('_view_count', this.model.get('_view_count') - 1); this.model.save_changes(); } }); this.once('displayed', () => { if (typeof this.model.get('_view_count') === 'number') { this.model.set('_view_count', this.model.get('_view_count') + 1); this.model.save_changes(); } }); this.displayed = new Promise((resolve, reject) => { this.once('displayed', resolve); this.model.on('msg:custom', this.handle_message.bind(this)); }); } /** * Handle message sent to the front end. * * Used to focus or blur the widget. */ handle_message(content: any): void { if (content.do === 'focus') { this.el.focus(); } else if (content.do === 'blur') { this.el.blur(); } } /** * Triggered on model change. * * Update view to be consistent with this.model */ update(options?: any): void { return; } /** * Render a view * * @returns the view or a promise to the view. */ render(): any { return; } /** * Create and promise that resolves to a child view of a given model */ create_child_view( child_model: DOMWidgetModel, options?: any ): Promise; create_child_view( child_model: WidgetModel, options?: any ): Promise; create_child_view( child_model: WidgetModel, options = {} ): Promise { options = { parent: this, ...options }; return this.model.widget_manager .create_view(child_model, options) .catch(utils.reject('Could not create child view', true)); } /** * Create msg callbacks for a comm msg. */ callbacks(): ICallbacks { return this.model.callbacks(this); } /** * Send a custom msg associated with this view. */ send(content: {}, buffers?: ArrayBuffer[] | ArrayBufferView[]): void { this.model.send(content, this.callbacks(), buffers); } touch(): void { this.model.save_changes(this.callbacks()); } remove(): any { // Raise a remove event when the view is removed. super.remove(); this.trigger('remove'); return this; } options: any; /** * A promise that resolves to the parent view when a child view is displayed. */ displayed: Promise; } export namespace WidgetView { export interface IInitializeParameters extends Backbone.ViewOptions { options: any; } } export namespace JupyterLuminoWidget { export interface IOptions { view: DOMWidgetView; } } export class JupyterLuminoWidget extends Widget { constructor(options: Widget.IOptions & JupyterLuminoWidget.IOptions) { const view = options.view; // Cast as any since we cannot delete a mandatory value delete (options as any).view; super(options); this._view = view; } /** * Dispose the widget. * * This causes the view to be destroyed as well with 'remove' */ dispose(): void { if (this.isDisposed) { return; } super.dispose(); this._view.remove(); this._view = null!; } /** * Process the Lumino message. * * Any custom Lumino widget used inside a Jupyter widget should override * the processMessage function like this. */ processMessage(msg: Message): void { super.processMessage(msg); this._view.processLuminoMessage(msg); } private _view: DOMWidgetView; } /** * @deprecated Use {@link JupyterLuminoWidget} instead (Since 8.0). */ export const JupyterPhosphorWidget = JupyterLuminoWidget; export class JupyterLuminoPanelWidget extends Panel { constructor(options: JupyterLuminoWidget.IOptions & Panel.IOptions) { const view = options.view; delete (options as any).view; super(options); this._view = view; } /** * Process the Lumino message. * * Any custom Lumino widget used inside a Jupyter widget should override * the processMessage function like this. */ processMessage(msg: Message): void { super.processMessage(msg); this._view.processLuminoMessage(msg); } /** * Dispose the widget. * * This causes the view to be destroyed as well with 'remove' */ dispose(): void { if (this.isDisposed) { return; } super.dispose(); this._view?.remove(); this._view = null!; } private _view: DOMWidgetView; } export class DOMWidgetView extends WidgetView { /** * Public constructor */ initialize(parameters: WidgetView.IInitializeParameters): void { super.initialize(parameters); this.listenTo( this.model, 'change:_dom_classes', (model: WidgetModel, new_classes: string[]) => { const old_classes = model.previous('_dom_classes'); this.update_classes(old_classes, new_classes); } ); this.layoutPromise = Promise.resolve(); this.listenTo( this.model, 'change:layout', (model: WidgetModel, value: WidgetModel) => { this.setLayout(value, model.previous('layout')); } ); this.stylePromise = Promise.resolve(); this.listenTo( this.model, 'change:style', (model: WidgetModel, value: WidgetModel) => { this.setStyle(value, model.previous('style')); } ); this.displayed.then(() => { this.update_classes([], this.model.get('_dom_classes')); this.setLayout(this.model.get('layout')); this.setStyle(this.model.get('style')); }); this._comm_live_update(); this.listenTo(this.model, 'comm_live_update', () => { this._comm_live_update(); }); this.listenTo(this.model, 'change:tooltip', this.updateTooltip); this.updateTooltip(); } setLayout(layout: LayoutModel, oldLayout?: LayoutModel): void { if (layout) { this.layoutPromise = this.layoutPromise.then((oldLayoutView) => { if (oldLayoutView) { oldLayoutView.unlayout(); this.stopListening(oldLayoutView.model); oldLayoutView.remove(); } return this.create_child_view(layout) .then((view) => { // Trigger the displayed event of the child view. return this.displayed.then(() => { view.trigger('displayed'); this.listenTo(view.model, 'change', () => { // Post (asynchronous) so layout changes can take // effect first. MessageLoop.postMessage( this.luminoWidget, Widget.ResizeMessage.UnknownSize ); }); MessageLoop.postMessage( this.luminoWidget, Widget.ResizeMessage.UnknownSize ); this.trigger('layout-changed'); return view; }); }) .catch( utils.reject('Could not add LayoutView to DOMWidgetView', true) ); }); } } setStyle(style: StyleModel, oldStyle?: StyleModel): void { if (style) { this.stylePromise = this.stylePromise.then((oldStyleView) => { if (oldStyleView) { oldStyleView.unstyle(); this.stopListening(oldStyleView.model); oldStyleView.remove(); } return this.create_child_view(style) .then((view) => { // Trigger the displayed event of the child view. return this.displayed.then(() => { view.trigger('displayed'); this.trigger('style-changed'); // Unlike for the layout attribute, style changes don't // trigger Lumino resize messages. return view; }); }) .catch( utils.reject('Could not add styleView to DOMWidgetView', true) ); }); } } updateTooltip(): void { const title = this.model.get('tooltip'); if (!title) { this.el.removeAttribute('title'); } else if (this.model.get('description').length === 0) { this.el.setAttribute('title', title); } } /** * Update the DOM classes applied to an element, default to this.el. */ update_classes( old_classes: string[], new_classes: string[], el?: HTMLElement ): void { if (el === undefined) { el = this.el; } utils.difference(old_classes, new_classes).map(function (c) { if (el!.classList) { // classList is not supported by IE for svg elements el!.classList.remove(c); } else { el!.setAttribute('class', el!.getAttribute('class')!.replace(c, '')); } }); utils.difference(new_classes, old_classes).map(function (c) { if (el!.classList) { // classList is not supported by IE for svg elements el!.classList.add(c); } else { el!.setAttribute('class', el!.getAttribute('class')!.concat(' ', c)); } }); } /** * Update the DOM classes applied to the widget based on a single * trait's value. * * Given a trait value classes map, this function automatically * handles applying the appropriate classes to the widget element * and removing classes that are no longer valid. * * Parameters * ---------- * class_map: dictionary * Dictionary of trait values to class lists. * Example: * { * success: ['alert', 'alert-success'], * info: ['alert', 'alert-info'], * warning: ['alert', 'alert-warning'], * danger: ['alert', 'alert-danger'] * }; * trait_name: string * Name of the trait to check the value of. * el: optional DOM element handle, defaults to this.el * Element that the classes are applied to. */ update_mapped_classes( class_map: Dict, trait_name: string, el?: HTMLElement ): void { let key = this.model.previous(trait_name) as string; const old_classes = class_map[key] ? class_map[key] : []; key = this.model.get(trait_name); const new_classes = class_map[key] ? class_map[key] : []; this.update_classes(old_classes, new_classes, el || this.el); } set_mapped_classes( class_map: Dict, trait_name: string, el?: HTMLElement ): void { const key = this.model.get(trait_name); const new_classes = class_map[key] ? class_map[key] : []; this.update_classes([], new_classes, el || this.el); } _setElement(el: HTMLElement): void { if (this.luminoWidget) { this.luminoWidget.dispose(); } this.$el = el instanceof $ ? el : $(el); this.el = this.$el[0]; this.luminoWidget = new JupyterLuminoWidget({ node: el, view: this, }); } remove(): any { if (this.luminoWidget) { this.luminoWidget.dispose(); } return super.remove(); } processLuminoMessage(msg: Message): void { switch (msg.type) { case 'after-attach': this.trigger('displayed'); break; case 'show': this.trigger('shown'); break; } } private _comm_live_update(): void { if (this.model.comm_live) { this.luminoWidget.removeClass('jupyter-widgets-disconnected'); } else { this.luminoWidget.addClass('jupyter-widgets-disconnected'); } } updateTabindex(): void { const tabbable = this.model.get('tabbable'); if (tabbable === true) { this.el.setAttribute('tabIndex', '0'); } else if (tabbable === false) { this.el.setAttribute('tabIndex', '-1'); } else if (tabbable === null) { this.el.removeAttribute('tabIndex'); } } /** * @deprecated Use {@link luminoWidget} instead (Since 8.0). */ get pWidget(): Widget { return this.luminoWidget; } el: HTMLElement; // Override typing '$el': any; luminoWidget: Widget; layoutPromise: Promise; stylePromise: Promise; } ipywidgets-8.1.1/packages/base/src/widget_layout.ts000066400000000000000000000065241450026722000224250ustar00rootroot00000000000000// Copyright (c) Jupyter Development Team. // Distributed under the terms of the Modified BSD License. import { assign, Dict } from './utils'; import { WidgetModel, WidgetView, DOMWidgetView } from './widget'; /** * css properties exposed by the layout widget with their default values. */ const css_properties: Dict = { align_content: null, align_items: null, align_self: null, border_top: null, border_right: null, border_bottom: null, border_left: null, bottom: null, display: null, flex: null, flex_flow: null, height: null, justify_content: null, justify_items: null, left: null, margin: null, max_height: null, max_width: null, min_height: null, min_width: null, overflow: null, order: null, padding: null, right: null, top: null, visibility: null, width: null, // image-specific object_fit: null, object_position: null, // container grid_auto_columns: null, grid_auto_flow: null, grid_auto_rows: null, grid_gap: null, grid_template_rows: null, grid_template_columns: null, grid_template_areas: null, // items grid_row: null, grid_column: null, grid_area: null, }; export class LayoutModel extends WidgetModel { defaults(): Backbone.ObjectHash { return assign( super.defaults(), { _model_name: 'LayoutModel', _view_name: 'LayoutView', }, css_properties ); } } export class LayoutView extends WidgetView { /** * Public constructor */ initialize(parameters: WidgetView.IInitializeParameters): void { this._traitNames = []; super.initialize(parameters); // Register the traits that live on the Python side for (const key of Object.keys(css_properties)) { this.registerTrait(key); } } /** * Register a CSS trait that is known by the model * @param trait */ registerTrait(trait: string): void { this._traitNames.push(trait); // Listen to changes, and set the value on change. this.listenTo( this.model, 'change:' + trait, (model: LayoutModel, value: any) => { this.handleChange(trait, value); } ); // Set the initial value on display. this.handleChange(trait, this.model.get(trait)); } /** * Get the the name of the css property from the trait name * @param model attribute name * @return css property name */ css_name(trait: string): string { return trait.replace(/_/g, '-'); } /** * Handles when a trait value changes */ handleChange(trait: string, value: any): void { // should be synchronous so that we can measure later. const parent = this.options.parent as DOMWidgetView; if (parent) { if (value === null) { parent.el.style.removeProperty(this.css_name(trait)); } else { parent.el.style.setProperty(this.css_name(trait), value); } } else { console.warn('Style not applied because a parent view does not exist'); } } /** * Remove the styling from the parent view. */ unlayout(): void { const parent = this.options.parent as DOMWidgetView; this._traitNames.forEach((trait) => { if (parent) { parent.el.style.removeProperty(this.css_name(trait)); } else { console.warn('Style not removed because a parent view does not exist'); } }, this); } private _traitNames: string[]; } ipywidgets-8.1.1/packages/base/src/widget_style.ts000066400000000000000000000073101450026722000222420ustar00rootroot00000000000000// Copyright (c) Jupyter Development Team. // Distributed under the terms of the Modified BSD License. import { assign } from './utils'; import { WidgetModel, WidgetView, DOMWidgetView } from './widget'; /** * Three functions to deal with some CSS attributes * to make them easier to use. */ export class StyleModel extends WidgetModel { defaults(): Backbone.ObjectHash { const Derived = this.constructor as typeof StyleModel; return assign( super.defaults(), { _model_name: 'StyleModel', _view_name: 'StyleView', }, Object.keys(Derived.styleProperties).reduce((obj: any, key: string) => { obj[key] = Derived.styleProperties[key].default; return obj; }, {}) ); } public static styleProperties: { [s: string]: IStyleProperty } = {}; } interface IStyleProperty { attribute: string; selector: string; default: string; } export class StyleView extends WidgetView { /** * Public constructor */ initialize(parameters: WidgetView.IInitializeParameters): void { this._traitNames = []; super.initialize(parameters); // Register the traits that live on the Python side const ModelType = this.model.constructor as typeof StyleModel; for (const key of Object.keys(ModelType.styleProperties)) { this.registerTrait(key); } // Set the initial styles this.style(); } /** * Register a CSS trait that is known by the model * @param trait */ registerTrait(trait: string): void { this._traitNames.push(trait); // Listen to changes, and set the value on change. this.listenTo( this.model, 'change:' + trait, (model: StyleModel, value: string) => { this.handleChange(trait, value); } ); } /** * Handles when a trait value changes */ handleChange(trait: string, value: any): void { // should be synchronous so that we can measure later. const parent = this.options.parent as DOMWidgetView; if (parent) { const ModelType = this.model.constructor as typeof StyleModel; const styleProperties = ModelType.styleProperties; const attribute = styleProperties[trait].attribute; const selector = styleProperties[trait].selector; const elements = selector ? parent.el.querySelectorAll(selector) : [parent.el]; if (value === null) { for (let i = 0; i !== elements.length; ++i) { elements[i].style.removeProperty(attribute); } } else { for (let i = 0; i !== elements.length; ++i) { elements[i].style.setProperty(attribute, value); } } } else { console.warn('Style not applied because a parent view does not exist'); } } /** * Apply styles for all registered traits */ style(): void { for (const trait of this._traitNames) { this.handleChange(trait, this.model.get(trait)); } } /** * Remove the styling from the parent view. */ unstyle(): void { const parent = this.options.parent as DOMWidgetView; const ModelType = this.model.constructor as typeof StyleModel; const styleProperties = ModelType.styleProperties; this._traitNames.forEach((trait) => { if (parent) { const attribute = styleProperties[trait].attribute; const selector = styleProperties[trait].selector; const elements = selector ? parent.el.querySelectorAll(selector) : [parent.el]; for (let i = 0; i !== elements.length; ++i) { elements[i].style.removeProperty(attribute); } } else { console.warn('Style not removed because a parent view does not exist'); } }, this); } private _traitNames: string[]; } ipywidgets-8.1.1/packages/base/test/000077500000000000000000000000001450026722000173565ustar00rootroot00000000000000ipywidgets-8.1.1/packages/base/test/karma-cov.conf.js000066400000000000000000000010561450026722000225220ustar00rootroot00000000000000var path = require('path'); module.exports = function (config) { config.set({ basePath: '..', browsers: ['Firefox'], frameworks: ['mocha'], reporters: ['mocha', 'coverage'], files: ['test/build/coverage.js'], coverageReporter: { reporters: [ { type: 'text' }, { type: 'lcov', dir: 'test/coverage' }, { type: 'html', dir: 'test/coverage' }, ], }, mochaReporter: { showDiff: true, }, port: 9876, colors: true, singleRun: true, logLevel: config.LOG_INFO, }); }; ipywidgets-8.1.1/packages/base/test/karma.conf.js000066400000000000000000000005301450026722000217310ustar00rootroot00000000000000module.exports = function (config) { config.set({ basePath: '..', frameworks: ['mocha'], reporters: ['mocha'], mochaReporter: { showDiff: true, }, files: ['test/build/bundle.js'], port: 9876, colors: true, singleRun: true, logLevel: config.LOG_INFO, browserNoActivityTimeout: 30000, }); }; ipywidgets-8.1.1/packages/base/test/src/000077500000000000000000000000001450026722000201455ustar00rootroot00000000000000ipywidgets-8.1.1/packages/base/test/src/dummy-manager.ts000066400000000000000000000214551450026722000232670ustar00rootroot00000000000000// Copyright (c) Jupyter Development Team. // Distributed under the terms of the Modified BSD License. import * as widgets from '../../lib'; import * as Backbone from 'backbone'; import * as sinon from 'sinon'; void sinon; import { JSONObject } from '@lumino/coreutils'; let numComms = 0; export class MockComm implements widgets.IClassicComm { constructor() { this.comm_id = `mock-comm-id-${numComms}`; numComms += 1; } on_open(fn: Function): void { this._on_open = fn; } on_close(fn: Function): void { this._on_close = fn; } on_msg(fn: Function): void { this._on_msg = fn; } _process_msg(msg: any): any { if (this._on_msg) { return this._on_msg(msg); } else { return Promise.resolve(); } } open(): string { if (this._on_open) { this._on_open(); } return ''; } close(): string { if (this._on_close) { this._on_close(); } return ''; } send(): string { this._msgid += 1; return this._msgid.toString(); } comm_id: string; target_name: string; _on_msg: Function | null = null; _on_open: Function | null = null; _on_close: Function | null = null; _msgid = 0; } const typesToArray: { [key: string]: any } = { int8: Int8Array, int16: Int16Array, int32: Int32Array, uint8: Uint8Array, uint16: Uint16Array, uint32: Uint32Array, float32: Float32Array, float64: Float64Array, }; const JSONToArray = function (obj: any): any { return new typesToArray[obj.dtype](obj.buffer.buffer); }; const arrayToJSON = function (obj: any): any { const dtype = Object.keys(typesToArray).filter( (i) => typesToArray[i] === obj.constructor )[0]; return { dtype, buffer: obj }; }; const array_serialization = { deserialize: JSONToArray, serialize: arrayToJSON, }; class TestWidget extends widgets.WidgetModel { defaults(): Backbone.ObjectHash { return { ...super.defaults(), _model_module: 'test-widgets', _model_name: 'TestWidget', _model_module_version: '1.0.0', _view_module: 'test-widgets', _view_name: 'TestWidgetView', _view_module_version: '1.0.0', _view_count: null as any, }; } } class TestWidgetView extends widgets.WidgetView { render(): void { this._rendered += 1; super.render(); } remove(): void { this._removed += 1; super.remove(); } _removed = 0; _rendered = 0; } class BinaryWidget extends TestWidget { static serializers = { ...widgets.WidgetModel.serializers, array: array_serialization, }; defaults(): Backbone.ObjectHash { return { ...super.defaults(), _model_name: 'BinaryWidget', _view_name: 'BinaryWidgetView', array: new Int8Array(0), }; } } class BinaryWidgetView extends TestWidgetView { render(): void { this._rendered += 1; } _rendered = 0; } class ContainerWidget extends TestWidget { static serializers = { ...widgets.WidgetModel.serializers, children: { deserialize: widgets.unpack_models }, }; defaults(): Backbone.ObjectHash { return { ...super.defaults(), _model_name: 'ContainerWidget', _view_name: 'ContainerWidgetView', children: [], }; } } class ContainerWidgetView extends TestWidgetView { render(): void { this._rendered += 1; } _rendered = 0; } const testWidgets = { TestWidget, TestWidgetView, BinaryWidget, BinaryWidgetView, ContainerWidget, ContainerWidgetView, }; export class DummyManager implements widgets.IWidgetManager { constructor() { this.el = window.document.createElement('div'); } protected loadClass( className: string, moduleName: string, moduleVersion: string ): Promise { if (moduleName === '@jupyter-widgets/base') { if ((widgets as any)[className]) { return Promise.resolve((widgets as any)[className]); } else { return Promise.reject(`Cannot find class ${className}`); } } else if (moduleName === 'test-widgets') { if ((testWidgets as any)[className]) { return Promise.resolve((testWidgets as any)[className]); } else { return Promise.reject(`Cannot find class ${className}`); } } else { return Promise.reject(`Cannot find module ${moduleName}`); } } el: HTMLElement; /** * Creates a promise for a view of a given model * * Make sure the view creation is not out of order with * any state updates. */ create_view( model: widgets.DOMWidgetModel, options?: any ): Promise; create_view( model: widgets.WidgetModel, options?: any ): Promise { throw new Error('Not implemented in dummy manager'); } /** * callback handlers specific to a view */ callbacks(view?: widgets.WidgetView): widgets.ICallbacks { return {}; } /** * Get a promise for a model by model id. * * #### Notes * If the model is not found, the returned Promise object is rejected. * * If you would like to synchronously test if a model exists, use .has_model(). */ async get_model(model_id: string): Promise { const modelPromise = this._models[model_id]; if (modelPromise === undefined) { throw new Error('widget model not found'); } return modelPromise; } /** * Returns true if the given model is registered, otherwise false. * * #### Notes * This is a synchronous way to check if a model is registered. */ has_model(model_id: string): boolean { return this._models[model_id] !== undefined; } /** * Create a comm and new widget model. * @param options - same options as new_model but comm is not * required and additional options are available. * @param serialized_state - serialized model attributes. */ new_widget( options: widgets.IWidgetOptions, serialized_state: JSONObject = {} ): Promise { return this.new_model(options, serialized_state); } register_model( model_id: string, modelPromise: Promise ): void { this._models[model_id] = modelPromise; modelPromise.then((model) => { model.once('comm:close', () => { delete this._models[model_id]; }); }); } /** * Create and return a promise for a new widget model * * @param options - the options for creating the model. * @param serialized_state - attribute values for the model. * * @example * widget_manager.new_model({ * model_name: 'IntSlider', * model_module: '@jupyter-widgets/controls', * model_module_version: '1.0.0', * model_id: 'u-u-i-d' * }).then((model) => { console.log('Create success!', model); }, * (err) => {console.error(err)}); * */ async new_model( options: widgets.IModelOptions, serialized_state: any = {} ): Promise { let model_id; if (options.model_id) { model_id = options.model_id; } else if (options.comm) { model_id = options.model_id = options.comm.comm_id; } else { throw new Error( 'Neither comm nor model_id provided in options object. At least one must exist.' ); } const modelPromise = this._make_model(options, serialized_state); // this call needs to happen before the first `await`, see note in `set_state`: this.register_model(model_id, modelPromise); return await modelPromise; } async _make_model( options: any, serialized_state: any = {} ): Promise { const model_id = options.model_id; const model_promise = this.loadClass( options.model_name, options.model_module, options.model_module_version ); let ModelType; try { ModelType = await model_promise; } catch (error) { console.error('Could not instantiate widget'); throw error; } if (!ModelType) { throw new Error( `Cannot find model module ${options.model_module}@${options.model_module_version}, ${options.model_name}` ); } const attributes = await ModelType._deserialize_state( serialized_state, this ); const modelOptions = { widget_manager: this, model_id: model_id, comm: options.comm, }; const widget_model = new ModelType(attributes, modelOptions); widget_model.name = options.model_name; widget_model.module = options.model_module; return widget_model; } /** * Resolve a URL relative to the current notebook location. * * The default implementation just returns the original url. */ resolveUrl(url: string): Promise { return Promise.resolve(url); } inline_sanitize(s: string): string { return s; } /** * Dictionary of model ids and model instance promises */ private _models: { [key: string]: Promise; } = Object.create(null); } ipywidgets-8.1.1/packages/base/test/src/index.ts000066400000000000000000000002271450026722000216250ustar00rootroot00000000000000// Copyright (c) Jupyter Development Team. // Distributed under the terms of the Modified BSD License. import './widget_test'; import './utils_test'; ipywidgets-8.1.1/packages/base/test/src/utils_test.ts000066400000000000000000000076051450026722000227240ustar00rootroot00000000000000import { expect } from 'chai'; import * as utils from '../../lib/utils'; import * as chai from 'chai'; import sinon from 'sinon'; void sinon; import sinonChai from 'sinon-chai'; chai.use(sinonChai); describe('remove_buffers', function () { const floatArray = new Float32Array([1.2, 3.14, 2.78, 5, 77.0001]); const uintArray = new Uint8Array([1, 2, 3, 4, 5]); it('extracts a Float32Array', function () { const rawState = { buffer: floatArray, }; const { state, buffers, buffer_paths } = utils.remove_buffers(rawState); expect(state).to.eql({}); expect(buffers).to.deep.equal([floatArray.buffer]); expect(buffer_paths).to.deep.equal([['buffer']]); }); it('extracts a Uint8Array', function () { const rawState = { buffer: uintArray, }; const { state, buffers, buffer_paths } = utils.remove_buffers(rawState); expect(state).to.eql({}); expect(buffers).to.deep.equal([uintArray.buffer]); expect(buffer_paths).to.deep.equal([['buffer']]); }); it('extracts a DataView', function () { const rawState = { buffer: new DataView(floatArray.buffer), }; const { state, buffers, buffer_paths } = utils.remove_buffers(rawState); expect(state).to.eql({}); expect(buffers).to.deep.equal([floatArray.buffer]); expect(buffer_paths).to.deep.equal([['buffer']]); }); it('extracts an ArrayBuffer', function () { const rawState = { buffer: floatArray.buffer, }; const { state, buffers, buffer_paths } = utils.remove_buffers(rawState); expect(state).to.eql({}); expect(buffers).to.deep.equal([floatArray.buffer]); expect(buffer_paths).to.deep.equal([['buffer']]); }); it('extracts buffers from an array', function () { const rawState = [uintArray, floatArray.buffer]; const { state, buffers, buffer_paths } = utils.remove_buffers(rawState); expect(state).to.deep.equal([null, null]); expect(buffers).to.deep.equal([uintArray.buffer, floatArray.buffer]); expect(buffer_paths).to.deep.equal([[0], [1]]); }); describe('nested structures', function () { it('array in object', function () { const rawState = { buffers: [uintArray, floatArray.buffer], }; const { state, buffers, buffer_paths } = utils.remove_buffers(rawState); expect(state).to.deep.equal({ buffers: [null, null] }); expect(buffers).to.deep.equal([uintArray.buffer, floatArray.buffer]); expect(buffer_paths).to.deep.equal([ ['buffers', 0], ['buffers', 1], ]); }); it('object in array', function () { const rawState = [{ buffer: uintArray }, { buffer: floatArray.buffer }]; const { state, buffers, buffer_paths } = utils.remove_buffers(rawState); expect(state).to.deep.equal([{}, {}]); expect(buffers).to.deep.equal([uintArray.buffer, floatArray.buffer]); expect(buffer_paths).to.deep.equal([ [0, 'buffer'], [1, 'buffer'], ]); }); it('array in array', function () { const rawState = ['string', 45, [uintArray, floatArray.buffer]]; const { state, buffers, buffer_paths } = utils.remove_buffers(rawState); expect(state).to.deep.equal(['string', 45, [null, null]]); expect(buffers).to.deep.equal([uintArray.buffer, floatArray.buffer]); expect(buffer_paths).to.deep.equal([ [2, 0], [2, 1], ]); }); it('object in object', function () { const rawState = { a: 'string', b: 45, buffers: { bufferA: uintArray, bufferB: floatArray.buffer, }, }; const { state, buffers, buffer_paths } = utils.remove_buffers(rawState); expect(state).to.deep.equal({ a: 'string', b: 45, buffers: {} }); expect(buffers).to.deep.equal([uintArray.buffer, floatArray.buffer]); expect(buffer_paths).to.deep.equal([ ['buffers', 'bufferA'], ['buffers', 'bufferB'], ]); }); }); }); ipywidgets-8.1.1/packages/base/test/src/widget_test.ts000066400000000000000000000656051450026722000230530ustar00rootroot00000000000000import { DummyManager, MockComm } from './dummy-manager'; import { expect } from 'chai'; import { IBackboneModelOptions } from '../../lib/'; import * as widgets from '../../lib/'; const WidgetModel = widgets.WidgetModel; import * as chai from 'chai'; import * as sinon from 'sinon'; import sinonChai from 'sinon-chai'; chai.use(sinonChai); describe('unpack_models', function () { beforeEach(async function () { this.manager = new DummyManager(); this.widgetA = await this.manager.new_widget({ model_name: 'WidgetModel', model_module: '@jupyter-widgets/base', model_module_version: '1.2.0', view_name: 'WidgetView', view_module: '@jupyter-widgets/base', view_module_version: '1.2.0', model_id: 'widgetA', }); this.widgetB = await this.manager.new_widget({ model_name: 'WidgetModel', model_module: '@jupyter-widgets/base', model_module_version: '1.2.0', view_name: 'WidgetView', view_module: '@jupyter-widgets/base', view_module_version: '1.2.0', model_id: 'widgetB', }); }); it('unpacks strings', async function () { const serialized = 'IPY_MODEL_widgetA'; const deserialized = this.widgetA; const value = await widgets.unpack_models(serialized, this.manager); expect(value).to.deep.equal(deserialized); }); it('recurses in arrays', async function () { const serialized = [ 'IPY_MODEL_widgetA', 'IPY_MODEL_widgetB', 'IPY_MODEL_widgetA', ]; const deserialized = [this.widgetA, this.widgetB, this.widgetA]; const value = await widgets.unpack_models(serialized, this.manager); expect(value).to.deep.equal(deserialized); }); it('recurses in objects', async function () { const serialized = { a: 'IPY_MODEL_widgetA', b: 'IPY_MODEL_widgetB' }; const deserialized = { a: this.widgetA, b: this.widgetB }; const value = await widgets.unpack_models(serialized, this.manager); expect(value).to.deep.equal(deserialized); }); it('recurses in nested objects', async function () { const serialized = { a: 'IPY_MODEL_widgetA', b: ['IPY_MODEL_widgetA', 'IPY_MODEL_widgetB', 'IPY_MODEL_widgetA'], c: { d: ['IPY_MODEL_widgetA'], e: 'IPY_MODEL_widgetB' }, }; const deserialized = { a: this.widgetA, b: [this.widgetA, this.widgetB, this.widgetA], c: { d: [this.widgetA], e: this.widgetB }, }; const value = await widgets.unpack_models(serialized, this.manager); expect(value).to.deep.equal(deserialized); }); }); describe('serialize/deserialize', function () { before(async function () { this.manager = new DummyManager(); this.widgetChild = await this.manager.new_widget({ model_name: 'WidgetModel', model_module: '@jupyter-widgets/base', model_module_version: '1.2.0', view_name: 'WidgetView', view_module: '@jupyter-widgets/base', view_module_version: '1.2.0', model_id: 'widgetChild', }); this.widgetChild2 = await this.manager.new_widget({ model_name: 'WidgetModel', model_module: '@jupyter-widgets/base', model_module_version: '1.2.0', view_name: 'WidgetView', view_module: '@jupyter-widgets/base', view_module_version: '1.2.0', model_id: 'widgetChild2', }); this.widgetContainer = await this.manager.new_widget( { model_name: 'ContainerWidget', model_module: 'test-widgets', model_module_version: '1.2.0', view_name: 'ContainerWidgetView', view_module: 'test-widgets', view_module_version: '1.2.0', model_id: 'widgetContainer', }, { children: [`IPY_MODEL_${this.widgetChild.model_id}`] } ); }); it('serializes', function () { const state = this.widgetContainer.get_state(false); const serializedState = this.widgetContainer.serialize(state); expect(serializedState).to.deep.equal({ _model_module: 'test-widgets', _model_module_version: '1.0.0', _model_name: 'ContainerWidget', _view_count: null, _view_module: 'test-widgets', _view_module_version: '1.0.0', _view_name: 'ContainerWidgetView', children: ['IPY_MODEL_widgetChild'], }); }); it('deserializes', async function () { const serializedState = { children: ['IPY_MODEL_widgetChild2'] }; const state = await ( this.widgetContainer.constructor as typeof WidgetModel )._deserialize_state(serializedState, this.manager); await this.widgetContainer.set_state(state); expect(this.widgetContainer.get('children')).to.deep.equal([ this.widgetChild2, ]); }); }); describe('WidgetModel', function () { before(async function () { this.setup = async function (): Promise { this.manager = new DummyManager(); this.comm = new MockComm(); sinon.spy(this.comm, 'send'); this.widget = new WidgetModel({}, { model_id: 'widget', widget_manager: this.manager, comm: this.comm, } as IBackboneModelOptions); // Create some dummy deserializers. One returns synchronously, and the // other asynchronously using a promise. this.serializeToJSON = sinon.spy(() => { return 'serialized'; }); this.widget.constructor.serializers = { times3: { deserialize: (value: number, manager: any): number => { return value * 3.0; }, }, halve: { deserialize: (value: number, manager: any): Promise => { return Promise.resolve(value / 2.0); }, }, spy: { deserialize: sinon.spy((value: any, manager: any) => { return 'deserialized'; }), serialize: sinon.spy((value: any, widget: any) => { return { toJSON: this.serializeToJSON, }; }), }, }; sinon.reset(); }; await this.setup(); sinon.spy(this.widget.constructor, '_deserialize_state'); }); describe('constructor', function () { beforeEach(async function () { await this.setup(); }); it('can take initial state', function () { const widget = new WidgetModel({ a: 1, b: 'b state' }, { model_id: 'widget', widget_manager: this.manager, } as IBackboneModelOptions); expect(widget.attributes).to.deep.equal({ ...widget.defaults(), a: 1, b: 'b state', }); }); it('sets the widget_manager, id, comm, and comm_live properties', function () { const widgetDead = new WidgetModel({}, { model_id: 'widgetDead', widget_manager: this.manager, } as IBackboneModelOptions); expect(widgetDead.model_id).to.equal('widgetDead'); expect(widgetDead.widget_manager).to.equal(this.manager); expect(widgetDead.comm).to.be.undefined; expect(widgetDead.comm_live).to.be.false; const comm = new MockComm(); const widgetLive = new WidgetModel({}, { model_id: 'widgetLive', widget_manager: this.manager, comm: comm, } as IBackboneModelOptions); expect(widgetLive.model_id).to.equal('widgetLive'); expect(widgetLive.widget_manager).to.equal(this.manager); expect(widgetLive.comm).to.equal(comm); expect(widgetLive.comm_live).to.be.true; }); it('initializes state_change and views attributes', async function () { const widget = new WidgetModel({ a: 1, b: 'b state' }, { model_id: 'widget', widget_manager: this.manager, } as IBackboneModelOptions); const x = await widget.state_change; expect(x).to.be.undefined; expect(widget.views).to.deep.equal({}); }); }); describe('send', function () { beforeEach(async function () { await this.setup(); }); it('sends custom messages with the right format', function () { const comm = new MockComm(); const send = sinon.spy(comm, 'send'); const widget = new WidgetModel({}, { model_id: 'widget', widget_manager: this.manager, comm: comm, } as IBackboneModelOptions); const data1 = { a: 1, b: 'state' }; const data2 = { a: 2, b: 'state' }; const callbacks = { iopub: {} }; const buffers = [new Int8Array([1, 2, 3])]; // send two messages to make sure the throttle does not affect sending. widget.send(data1, callbacks, buffers); widget.send(data2, callbacks, buffers); expect(send).to.be.calledTwice; expect(send.getCall(0)).to.be.calledWithExactly( { method: 'custom', content: data1 }, callbacks, {}, buffers ); expect(send.getCall(1)).to.be.calledWithExactly( { method: 'custom', content: data2 }, callbacks, {}, buffers ); }); }); describe('close', function () { beforeEach(async function () { await this.setup(); }); it('calls destroy', function () { const destroyed = sinon.spy(); this.widget.on('destroy', destroyed); this.widget.close(); expect(destroyed).to.be.calledOnce; }); it('deletes the reference to the comm', function () { this.widget.close(); expect(this.widget.comm).to.be.undefined; }); it('removes views', function () { this.widget.close(); expect(this.widget.views).to.be.undefined; }); it('closes and deletes the comm', function () { const close = sinon.spy(this.comm, 'close'); this.widget.close(); expect(close).to.be.calledOnce; expect(this.widget.comm).to.be.undefined; }); it('triggers a destroy event', function () { const destroyEventCallback = sinon.spy(); this.widget.on('destroy', destroyEventCallback); this.widget.close(); expect(destroyEventCallback).to.be.calledOnce; }); it('can be called twice', function () { this.widget.close(); this.widget.close(); }); }); describe('_handle_comm_closed', function () { beforeEach(async function () { await this.setup(); }); it('closes model', function () { const closeSpy = sinon.spy(this.widget, 'close'); this.widget._handle_comm_closed({}); expect(closeSpy).to.be.calledOnce; }); it('listens to the widget close event', function () { const closeSpy = sinon.spy(this.widget, 'close'); this.widget.comm.close(); expect(closeSpy).to.be.calledOnce; }); it('triggers a comm:close model event', function () { const closeEventCallback = sinon.spy(); this.widget.on('comm:close', closeEventCallback); this.widget._handle_comm_closed({}); expect(closeEventCallback).to.be.calledOnce; }); }); describe('_handle_comm_msg', function () { beforeEach(async function () { await this.setup(); }); it('listens to widget messages', async function () { await this.widget.comm._process_msg({ content: { data: { method: 'update', state: { a: 5 }, }, }, }); console.log(this.widget.get('a')); expect(this.widget.get('a')).to.equal(5); }); it('handles update messages', async function () { const deserialize = this.widget.constructor._deserialize_state; const setState = sinon.spy(this.widget, 'set_state'); const state_change = this.widget._handle_comm_msg({ content: { data: { method: 'update', state: { a: 5 }, }, }, }); expect(this.widget.state_change).to.equal(state_change); await state_change; expect(deserialize).to.be.calledOnce; expect(setState).to.be.calledOnce; expect(deserialize).to.be.calledBefore(setState); expect(this.widget.get('a')).to.equal(5); }); it('updates handle various types of binary buffers', async function () { const buffer1 = new Uint8Array([1, 2, 3]); const buffer2 = new Float64Array([2.3, 6.4]); const buffer3 = new Int16Array([10, 20, 30]); await this.widget._handle_comm_msg({ content: { data: { method: 'update', state: { a: 5, c: ['start', null, {}] }, buffer_paths: [['b'], ['c', 1], ['c', 2, 'd']], }, }, buffers: [buffer1, buffer2.buffer, new DataView(buffer3.buffer)], }); expect(this.widget.get('a')).to.equal(5); expect(this.widget.get('b')).to.deep.equal(new DataView(buffer1.buffer)); expect(this.widget.get('c')).to.deep.equal([ 'start', new DataView(buffer2.buffer), { d: new DataView(buffer3.buffer) }, ]); }); it('handles custom deserialization', async function () { await this.widget._handle_comm_msg({ content: { data: { method: 'update', state: { halve: 10, times3: 4 }, }, }, }); expect(this.widget.get('halve')).to.equal(5); expect(this.widget.get('times3')).to.equal(12); }); it('handles custom messages', function () { const customEventCallback = sinon.spy(); this.widget.on('msg:custom', customEventCallback); this.widget._handle_comm_msg({ content: { data: { method: 'custom' }, }, }); expect(customEventCallback).to.be.calledOnce; }); it('ignores echo_update messages when there is an expected echo_update', async function () { const send = sinon.spy(this.widget, 'send_sync_message'); // Set a value, generating an update message, get the message id from the comm? this.widget.set('a', 'original value'); this.widget.save_changes(); // Get the msg id const msgId = send.returnValues[0]; // Inject a echo_update message from another client await this.widget._handle_comm_msg({ parent_header: { msg_id: 'other-client', }, content: { data: { method: 'echo_update', state: { a: 'other client update 1' }, }, }, }); expect(this.widget.get('a')).to.equal('original value'); // Process a kernel update message, which should set the value await this.widget._handle_comm_msg({ parent_header: { msg_id: 'from-kernel', }, content: { data: { method: 'update', state: { a: 'kernel update' }, }, }, }); expect(this.widget.get('a')).to.equal('kernel update'); // Inject an echo_update message from us, resetting our value await this.widget._handle_comm_msg({ parent_header: { msg_id: msgId, }, content: { data: { method: 'echo_update', state: { a: 'original value' }, }, }, }); expect(this.widget.get('a')).to.equal('original value'); // Inject another echo_update message from another client, which also updates us await this.widget._handle_comm_msg({ parent_header: { msg_id: 'other-client-2', }, content: { data: { method: 'echo_update', state: { a: 'other client update 2' }, }, }, }); expect(this.widget.get('a')).to.equal('other client update 2'); }); }); describe('_deserialize_state', function () { beforeEach(async function () { await this.setup(); }); it('deserializes simple JSON state', async function () { const state = await this.widget.constructor._deserialize_state( { a: 10, b: [{ c: 'test1', d: ['test2'] }, 20] }, this.manager ); expect(state.a).to.equal(10); expect(state.b).to.deep.equal([{ c: 'test1', d: ['test2'] }, 20]); }); it('respects custom serializers', async function () { const state = await this.widget.constructor._deserialize_state( { times3: 2.0, halve: 2.0, c: 2.0 }, this.manager ); expect(state.times3).to.equal(6.0); expect(state.halve).to.equal(1.0); expect(state.c).to.equal(2.0); }); it('calls the deserializer with appropriate arguments', async function () { await this.widget.constructor._deserialize_state( { spy: 'value' }, this.manager ); const spy = this.widget.constructor.serializers.spy.deserialize; expect(spy).to.be.calledOnce; expect(spy).to.be.calledWithExactly('value', this.manager); }); }); describe('serialize', function () { beforeEach(async function () { await this.setup(); }); it('does simple serialization by copying values', function () { const b = { c: 'start' }; const state = { a: 5, b: b, }; const serialized_state = this.widget.serialize(state); // b state was copied expect(serialized_state.b).to.not.equal(b); expect(serialized_state).to.deep.equal({ a: 5, b: b }); }); it('serializes null values', function () { const state_with_null = { a: 5, b: null as any, }; const serialized_state = this.widget.serialize(state_with_null); expect(serialized_state.b).to.equal(null); }); it('calls custom serializers with appropriate arguments', function () { this.widget.serialize({ spy: 'value' }); const spy = this.widget.constructor.serializers.spy.serialize; expect(spy).to.be.calledWithExactly('value', this.widget); }); it('calls toJSON method if possible', function () { const serialized_state = this.widget.serialize({ spy: 'value' }); const spy = this.serializeToJSON; expect(spy).to.be.calledOnce; expect(serialized_state).to.deep.equal({ spy: 'serialized' }); }); }); describe('set_state', function () { beforeEach(async function () { await this.setup(); }); it('sets the state of the widget', function () { expect(this.widget.get('a')).to.be.undefined; expect(this.widget.get('b')).to.be.undefined; this.widget.set_state({ a: 2, b: 3 }); expect(this.widget.get('a')).to.equal(2); expect(this.widget.get('b')).to.equal(3); }); }); describe('set', function () { beforeEach(async function () { await this.setup(); }); it('triggers change events', async function () { const changeA = sinon.spy(function changeA() { return; }); const change = sinon.spy(function change() { return; }); this.widget.on('change:a', changeA); this.widget.on('change', change); this.widget.set('a', 100); expect(changeA).to.be.calledOnce; expect(changeA).to.be.calledWith(this.widget, 100); expect(changeA).to.be.calledBefore(change); expect(change).to.be.calledWith(this.widget); }); it('triggers change events after exception', async function () { const changeA = sinon.spy(function changeA() { return; }); const changeB = sinon.spy(function changeB() { throw 'error'; }); const change = sinon.spy(function change() { return; }); this.widget.on('change:a', changeA); this.widget.on('change:b', changeB); this.widget.on('change', change); // first we trigger a set that causes an exception try { this.widget.set('b', 42); } catch { // empty } expect(change).to.not.be.called; // from now on this test is similar to 'triggers change events' this.widget.set('a', 100); expect(changeA).to.be.calledOnce; expect(changeA).to.be.calledWith(this.widget, 100); expect(changeA).to.be.calledBefore(change); expect(change).to.be.calledWith(this.widget); }); it('handles multiple values to set', function () { expect(this.widget.get('a')).to.be.undefined; expect(this.widget.get('b')).to.be.undefined; this.widget.set({ a: 2, b: 3 }); expect(this.widget.get('a')).to.equal(2); expect(this.widget.get('b')).to.equal(3); }); }); describe('save_changes', function () { beforeEach(async function () { await this.setup(); }); it('remembers changes across multiple set calls', function () { sinon.spy(this.widget, 'save'); expect(this.widget.get('a')).to.be.undefined; expect(this.widget.get('b')).to.be.undefined; this.widget.set('a', 2); this.widget.set('b', 5); this.widget.save_changes(); expect(this.widget.save).to.be.calledWith({ a: 2, b: 5 }); }); it('will not sync changes done by set_state', function () { sinon.spy(this.widget, 'save'); expect(this.widget.get('a')).to.be.undefined; expect(this.widget.get('b')).to.be.undefined; this.widget.on('change:a', () => { this.widget.set('b', 15); }); this.widget.set_state({ a: 10 }); expect(this.widget.get('a')).to.equal(10); expect(this.widget.get('b')).to.equal(15); this.widget.save_changes(); expect(this.widget.save).to.be.calledWith({ b: 15 }); }); }); describe('get_state', function () { beforeEach(async function () { await this.setup(); }); it('gets all of the state', function () { this.widget.set('a', 'get_state test'); expect(this.widget.get_state()).to.deep.equal({ _model_module: '@jupyter-widgets/base', _model_name: 'WidgetModel', _model_module_version: '2.0.0', _view_module: '@jupyter-widgets/base', _view_name: null, _view_module_version: '2.0.0', _view_count: null, a: 'get_state test', }); }); it('drop_defaults is respected', function () { this.widget.set('a', 'get_state test'); expect(this.widget.get_state(true)).to.deep.equal({ a: 'get_state test', }); }); }); describe('callbacks', function () { beforeEach(async function () { await this.setup(); }); it('returns a blank object', function () { expect(this.widget.callbacks()).to.deep.equal({}); }); }); describe('sync', function () { beforeEach(async function () { await this.setup(); }); it('respects the message throttle', function () { // reuse the callback, similar to .touch in views, which will // expose an bug of calling onstatus multiple times const callbacks = this.widget.callbacks(); this.widget.set('a', 'sync test'); expect(this.widget._pending_msgs).to.equal(0); this.widget.save_changes(callbacks); expect(this.widget._pending_msgs).to.equal(1); this.widget.set('a', 'another sync test'); this.widget.set('b', 'change b'); this.widget.save_changes(callbacks); this.widget.set('b', 'change b again'); this.widget.save_changes(callbacks); expect(this.widget._pending_msgs).to.equal(1); // check that one sync message went through expect(this.comm.send).to.be.calledOnce; expect(this.comm.send).to.be.calledWith({ method: 'update', state: { a: 'sync test' }, buffer_paths: [], }); expect(this.widget._msg_buffer).to.deep.equal({ a: 'another sync test', b: 'change b again', }); expect(this.widget._msg_buffer_callbacks).to.not.equals(null); // have the comm send a status idle message this.comm.send.lastCall.args[1].iopub.status({ content: { execution_state: 'idle', }, }); // we directly get a new pending message expect(this.widget._pending_msgs).to.equal(1); expect(this.widget._msg_buffer).to.equal(null); expect(this.widget._msg_buffer_callbacks).to.equals(null); // check that the other sync message went through with the updated values expect(this.comm.send.secondCall).to.be.calledWith({ method: 'update', state: { a: 'another sync test', b: 'change b again', }, buffer_paths: [], }); this.comm.send.lastCall.args[1].iopub.status({ content: { execution_state: 'idle', }, }); expect(this.widget._pending_msgs).to.equal(0); // repeat again this.comm.send.resetHistory(); this.widget.set('a', 'sync test - 2'); this.widget.save_changes(callbacks); expect(this.widget._pending_msgs).to.equal(1); this.widget.set('a', 'another sync test - 2'); this.widget.set('b', 'change b - 2'); this.widget.save_changes(callbacks); this.widget.set('b', 'change b again - 2'); this.widget.save_changes(callbacks); expect(this.widget._pending_msgs).to.equal(1); expect(this.comm.send).to.be.calledOnce; expect(this.comm.send).to.be.calledWith({ method: 'update', state: { a: 'sync test - 2' }, buffer_paths: [], }); this.comm.send.lastCall.args[1].iopub.status({ content: { execution_state: 'idle', }, }); // again, directly a new message expect(this.widget._pending_msgs).to.equal(1); expect(this.comm.send.secondCall).to.be.calledWith({ method: 'update', state: { a: 'another sync test - 2', b: 'change b again - 2', }, buffer_paths: [], }); this.comm.send.lastCall.args[1].iopub.status({ content: { execution_state: 'idle', }, }); expect(this.widget._pending_msgs).to.equal(0); }); it('Initial values are *not* sent on creation', function () { expect(this.comm.send.callCount).to.equal(0); }); }); describe('send_sync_message', function () { beforeEach(async function () { await this.setup(); }); it('sends a message', function () { this.widget.send_sync_message( { a: 'send sync message', b: 'b value', }, {} ); expect(this.comm.send).to.be.calledWith({ method: 'update', state: { a: 'send sync message', b: 'b value', }, buffer_paths: [], }); }); it('handles buffers in messages', function () { const buffer = new Uint8Array([1, 2, 3]); this.widget.send_sync_message({ a: buffer, }); expect(this.comm.send.args[0][0]).to.deep.equal({ method: 'update', state: {}, buffer_paths: [['a']], }); expect(this.comm.send.args[0][3]).to.deep.equal([buffer.buffer]); }); }); describe('on_some_change', function () { beforeEach(async function () { await this.setup(); }); it('is called once for multiple change notifications', async function () { const changeCallback = sinon.spy(); const someChangeCallback = sinon.spy(); this.widget.on('change:a change:b', changeCallback); this.widget.on_some_change(['a', 'b'], someChangeCallback); this.widget.set_state({ a: true, b: true }); expect(changeCallback.callCount).to.equal(2); expect(someChangeCallback).to.be.calledOnce; }); }); describe('toJSON', function () { beforeEach(async function () { await this.setup(); }); it('encodes the widget', function () { expect(this.widget.toJSON()).to.equal( `IPY_MODEL_${this.widget.model_id}` ); }); }); }); ipywidgets-8.1.1/packages/base/test/tsconfig.json000066400000000000000000000003271450026722000220670ustar00rootroot00000000000000{ "extends": "../../../tsconfigbase", "compilerOptions": { "types": ["mocha"], "outDir": "build", "rootDir": "src" }, "include": ["src/*"], "references": [ { "path": ".." } ] } ipywidgets-8.1.1/packages/base/test/webpack-cov.conf.js000066400000000000000000000012631450026722000230430ustar00rootroot00000000000000var path = require('path'); module.exports = { entry: './test/build/index.js', output: { path: __dirname + '/build', filename: 'coverage.js', }, bail: true, module: { loaders: [ { test: /\.css$/, use: ['style-loader', 'css-loader'] }, { test: /\.md$/, type: 'asset/source' }, { test: /\.html$/, type: 'asset/resource', generator: { filename: '[name].[ext]' }, }, { test: /\.ipynb$/, type: 'json' }, ], preLoaders: [ // instrument only testing sources with Istanbul { test: /\.js$/, include: path.resolve('lib/'), loader: 'istanbul-instrumenter', }, ], }, }; ipywidgets-8.1.1/packages/base/test/webpack.conf.js000066400000000000000000000010501450026722000222500ustar00rootroot00000000000000var path = require('path'); module.exports = { entry: './test/build/index.js', output: { path: __dirname + '/build', filename: 'bundle.js', }, bail: true, module: { rules: [ { test: /\.css$/, use: ['style-loader', 'css-loader'] }, { test: /\.md$/, type: 'asset/source' }, { test: /\.html$/, type: 'asset/resource', generator: { filename: '[name].[ext]' }, }, { test: /\.ipynb$/, type: 'json' }, ], }, mode: 'development', resolve: { fallback: { util: false } }, }; ipywidgets-8.1.1/packages/base/tsconfig.json000066400000000000000000000002041450026722000211020ustar00rootroot00000000000000{ "extends": "../../tsconfigbase", "compilerOptions": { "outDir": "lib", "rootDir": "src" }, "include": ["src/*"] } ipywidgets-8.1.1/packages/controls/000077500000000000000000000000001450026722000173305ustar00rootroot00000000000000ipywidgets-8.1.1/packages/controls/.gitignore000066400000000000000000000001021450026722000213110ustar00rootroot00000000000000css/widgets.built.css lib-embed/ docs-embed/ dist/ test/coverage/ ipywidgets-8.1.1/packages/controls/.jshintrc000066400000000000000000000000731450026722000211550ustar00rootroot00000000000000{ "esnext": true, "expr": true, "node": true } ipywidgets-8.1.1/packages/controls/.npmignore000066400000000000000000000001151450026722000213240ustar00rootroot00000000000000.DS_Store node_modules/ test/ .jshintrc karma.conf.js build_css.js examples/ ipywidgets-8.1.1/packages/controls/README.md000066400000000000000000000007321450026722000206110ustar00rootroot00000000000000# Jupyter JS Widgets Interactive widgets for the Jupyter notebook. This packages contains the implementation of the core Jupyter interactive widgets. The reference Python backend, `ipywidgets` is available [here](https://github.com/jupyter-widgets/ipywidgets), with more examples. ## Package Install **Prerequisites** - [node](http://nodejs.org/) Run the following command **at the root of this repository**. ```bash npm install --save @jupyter-widgets/controls ``` ipywidgets-8.1.1/packages/controls/css/000077500000000000000000000000001450026722000201205ustar00rootroot00000000000000ipywidgets-8.1.1/packages/controls/css/labvariables.css000066400000000000000000000155771450026722000233000ustar00rootroot00000000000000/*----------------------------------------------------------------------------- | Copyright (c) Jupyter Development Team. | Distributed under the terms of the Modified BSD License. |----------------------------------------------------------------------------*/ /* This file is copied from the JupyterLab project to define default styling for when the widget styling is compiled down to eliminate CSS variables. We make one change - we comment out the font import below. */ @import './materialcolors.css'; /* The following CSS variables define the main, public API for styling JupyterLab. These variables should be used by all plugins wherever possible. In other words, plugins should not define custom colors, sizes, etc unless absolutely necessary. This enables users to change the visual theme of JupyterLab by changing these variables. Many variables appear in an ordered sequence (0,1,2,3). These sequences are designed to work well together, so for example, `--jp-border-color1` should be used with `--jp-layout-color1`. The numbers have the following meanings: * 0: super-primary, reserved for special emphasis * 1: primary, most important under normal situations * 2: secondary, next most important under normal situations * 3: tertiary, next most important under normal situations Throughout JupyterLab, we are mostly following principles from Google's Material Design when selecting colors. We are not, however, following all of MD as it is not optimized for dense, information rich UIs. */ /* * Optional monospace font for input/output prompt. */ /* Commented out in ipywidgets since we don't need it. */ /* @import url('https://fonts.googleapis.com/css?family=Roboto+Mono'); */ /* * Added for compatibility with output area */ :root { --jp-icon-search: none; --jp-ui-select-caret: none; } :root { /* Borders The following variables, specify the visual styling of borders in JupyterLab. */ --jp-border-width: 1px; --jp-border-color0: var(--md-grey-700); --jp-border-color1: var(--md-grey-500); --jp-border-color2: var(--md-grey-300); --jp-border-color3: var(--md-grey-100); /* UI Fonts The UI font CSS variables are used for the typography all of the JupyterLab user interface elements that are not directly user generated content. */ --jp-ui-font-scale-factor: 1.2; --jp-ui-font-size0: calc( var(--jp-ui-font-size1) / var(--jp-ui-font-scale-factor) ); --jp-ui-font-size1: 13px; /* Base font size */ --jp-ui-font-size2: calc( var(--jp-ui-font-size1) * var(--jp-ui-font-scale-factor) ); --jp-ui-font-size3: calc( var(--jp-ui-font-size2) * var(--jp-ui-font-scale-factor) ); --jp-ui-icon-font-size: 14px; /* Ensures px perfect FontAwesome icons */ --jp-ui-font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; /* Use these font colors against the corresponding main layout colors. In a light theme, these go from dark to light. */ --jp-ui-font-color0: rgba(0, 0, 0, 1); --jp-ui-font-color1: rgba(0, 0, 0, 0.8); --jp-ui-font-color2: rgba(0, 0, 0, 0.5); --jp-ui-font-color3: rgba(0, 0, 0, 0.3); /* Use these against the brand/accent/warn/error colors. These will typically go from light to darker, in both a dark and light theme */ --jp-ui-inverse-font-color0: rgba(255, 255, 255, 1); --jp-ui-inverse-font-color1: rgba(255, 255, 255, 1); --jp-ui-inverse-font-color2: rgba(255, 255, 255, 0.7); --jp-ui-inverse-font-color3: rgba(255, 255, 255, 0.5); /* Content Fonts Content font variables are used for typography of user generated content. */ --jp-content-font-size: 13px; --jp-content-line-height: 1.5; --jp-content-font-color0: black; --jp-content-font-color1: black; --jp-content-font-color2: var(--md-grey-700); --jp-content-font-color3: var(--md-grey-500); --jp-ui-font-scale-factor: 1.2; --jp-ui-font-size0: calc( var(--jp-ui-font-size1) / var(--jp-ui-font-scale-factor) ); --jp-ui-font-size1: 13px; /* Base font size */ --jp-ui-font-size2: calc( var(--jp-ui-font-size1) * var(--jp-ui-font-scale-factor) ); --jp-ui-font-size3: calc( var(--jp-ui-font-size2) * var(--jp-ui-font-scale-factor) ); --jp-code-font-size: 13px; --jp-code-line-height: 1.307; --jp-code-padding: 5px; --jp-code-font-family: monospace; /* Layout The following are the main layout colors use in JupyterLab. In a light theme these would go from light to dark. */ --jp-layout-color0: white; --jp-layout-color1: white; --jp-layout-color2: var(--md-grey-200); --jp-layout-color3: var(--md-grey-400); /* Brand/accent */ --jp-brand-color0: var(--md-blue-700); --jp-brand-color1: var(--md-blue-500); --jp-brand-color2: var(--md-blue-300); --jp-brand-color3: var(--md-blue-100); --jp-accent-color0: var(--md-green-700); --jp-accent-color1: var(--md-green-500); --jp-accent-color2: var(--md-green-300); --jp-accent-color3: var(--md-green-100); /* State colors (warn, error, success, info) */ --jp-warn-color0: var(--md-orange-700); --jp-warn-color1: var(--md-orange-500); --jp-warn-color2: var(--md-orange-300); --jp-warn-color3: var(--md-orange-100); --jp-error-color0: var(--md-red-700); --jp-error-color1: var(--md-red-500); --jp-error-color2: var(--md-red-300); --jp-error-color3: var(--md-red-100); --jp-success-color0: var(--md-green-700); --jp-success-color1: var(--md-green-500); --jp-success-color2: var(--md-green-300); --jp-success-color3: var(--md-green-100); --jp-info-color0: var(--md-cyan-700); --jp-info-color1: var(--md-cyan-500); --jp-info-color2: var(--md-cyan-300); --jp-info-color3: var(--md-cyan-100); /* Cell specific styles */ --jp-cell-padding: 5px; --jp-cell-editor-background: #f7f7f7; --jp-cell-editor-border-color: #cfcfcf; --jp-cell-editor-background-edit: var(--jp-ui-layout-color1); --jp-cell-editor-border-color-edit: var(--jp-brand-color1); --jp-cell-prompt-width: 100px; --jp-cell-prompt-font-family: 'Roboto Mono', monospace; --jp-cell-prompt-letter-spacing: 0px; --jp-cell-prompt-opacity: 1; --jp-cell-prompt-opacity-not-active: 0.4; --jp-cell-prompt-font-color-not-active: var(--md-grey-700); /* A custom blend of MD grey and blue 600 * See https://meyerweb.com/eric/tools/color-blend/#546E7A:1E88E5:5:hex */ --jp-cell-inprompt-font-color: #307fc1; /* A custom blend of MD grey and orange 600 * https://meyerweb.com/eric/tools/color-blend/#546E7A:F4511E:5:hex */ --jp-cell-outprompt-font-color: #bf5b3d; /* Notebook specific styles */ --jp-notebook-padding: 10px; --jp-notebook-scroll-padding: 100px; /* Console specific styles */ --jp-console-background: var(--md-grey-100); /* Toolbar specific styles */ --jp-toolbar-border-color: var(--md-grey-400); --jp-toolbar-micro-height: 8px; --jp-toolbar-background: var(--jp-layout-color0); --jp-toolbar-box-shadow: 0px 0px 2px 0px rgba(0, 0, 0, 0.24); --jp-toolbar-header-margin: 4px 4px 0px 4px; --jp-toolbar-active-background: var(--md-grey-300); } ipywidgets-8.1.1/packages/controls/css/lumino.css000066400000000000000000000211541450026722000221400ustar00rootroot00000000000000/* This file has code derived from Lumino CSS files, as noted below. The license for this Lumino code is: Copyright (c) 2019 Project Jupyter Contributors All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. 3. Neither the name of the copyright holder nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. Copyright (c) 2014-2017, PhosphorJS Contributors All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of the copyright holder nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* * The following section is derived from https://github.com/jupyterlab/lumino/blob/23b9d075ebc5b73ab148b6ebfc20af97f85714c4/packages/widgets/style/tabbar.css * We've scoped the rules so that they are consistent with exactly our code. */ /* */ .jupyter-widgets.widget-tab > .p-TabBar, /* */ /* */.jupyter-widgets.jupyter-widget-tab > .p-TabBar, /* */ .jupyter-widgets.jupyter-widget-tab > .lm-TabBar { display: flex; -webkit-user-select: none; -moz-user-select: none; -ms-user-select: none; user-select: none; } /* */ .jupyter-widgets.widget-tab > .p-TabBar[data-orientation='horizontal'], /* */ /* */.jupyter-widgets.jupyter-widget-tab > .p-TabBar[data-orientation='horizontal'], /* */ .jupyter-widgets.jupyter-widget-tab > .lm-TabBar[data-orientation='horizontal'] { flex-direction: row; } /* */ .jupyter-widgets.widget-tab > .p-TabBar[data-orientation='vertical'], /* */ /* */.jupyter-widgets.jupyter-widget-tab > .p-TabBar[data-orientation='vertical'], /* */ .jupyter-widgets.jupyter-widget-tab > .lm-TabBar[data-orientation='vertical'] { flex-direction: column; } /* */ .jupyter-widgets.widget-tab > .p-TabBar > .p-TabBar-content, /* */ /* */.jupyter-widgets.jupyter-widget-tab > .p-TabBar > .p-TabBar-content, /* */ .jupyter-widgets.jupyter-widget-tab > .lm-TabBar > .lm-TabBar-content { margin: 0; padding: 0; display: flex; flex: 1 1 auto; list-style-type: none; } /* */ .jupyter-widgets.widget-tab > .p-TabBar[data-orientation='horizontal'] > .p-TabBar-content, /* */ /* */ .jupyter-widgets.jupyter-widget-tab > .p-TabBar[data-orientation='horizontal'] > .p-TabBar-content, /* */ .jupyter-widgets.jupyter-widget-tab > .lm-TabBar[data-orientation='horizontal'] > .lm-TabBar-content { flex-direction: row; } /* */ .jupyter-widgets.widget-tab > .p-TabBar[data-orientation='vertical'] > .p-TabBar-content, /* */ /* */ .jupyter-widgets.jupyter-widget-tab > .p-TabBar[data-orientation='vertical'] > .p-TabBar-content, /* */ .jupyter-widgets.jupyter-widget-tab > .lm-TabBar[data-orientation='vertical'] > .lm-TabBar-content { flex-direction: column; } /* */ .jupyter-widgets.widget-tab > .p-TabBar .p-TabBar-tab, /* */ /* */.jupyter-widgets.jupyter-widget-tab > .p-TabBar .p-TabBar-tab, /* */ .jupyter-widgets.jupyter-widget-tab > .lm-TabBar .lm-TabBar-tab { display: flex; flex-direction: row; box-sizing: border-box; overflow: hidden; } /* */ .jupyter-widgets.widget-tab > .p-TabBar .p-TabBar-tabIcon, /* */ /* */ .jupyter-widgets.widget-tab > .p-TabBar .p-TabBar-tabCloseIcon, /* */ /* */.jupyter-widgets.jupyter-widget-tab > .p-TabBar .p-TabBar-tabIcon, /* */ /* */ .jupyter-widgets.jupyter-widget-tab > .p-TabBar .p-TabBar-tabCloseIcon, /* */ .jupyter-widgets.jupyter-widget-tab > .lm-TabBar .lm-TabBar-tabIcon, .jupyter-widgets.jupyter-widget-tab > .lm-TabBar .lm-TabBar-tabCloseIcon { flex: 0 0 auto; } /* */ .jupyter-widgets.widget-tab > .p-TabBar .p-TabBar-tabLabel, /* */ /* */.jupyter-widgets.jupyter-widget-tab > .p-TabBar .p-TabBar-tabLabel, /* */ .jupyter-widgets.jupyter-widget-tab > .lm-TabBar .lm-TabBar-tabLabel { flex: 1 1 auto; overflow: hidden; white-space: nowrap; } /* */ .jupyter-widgets.widget-tab > .p-TabBar .p-TabBar-tab.p-mod-hidden, /* */ /* */.jupyter-widgets.jupyter-widget-tab > .p-TabBar .p-TabBar-tab.p-mod-hidden, /* */ .jupyter-widgets.jupyter-widget-tab > .lm-TabBar .lm-TabBar-tab.lm-mod-hidden { display: none !important; } /* */ .jupyter-widgets.widget-tab > .p-TabBar.p-mod-dragging .p-TabBar-tab, /* */ /* */.jupyter-widgets.jupyter-widget-tab > .p-TabBar.p-mod-dragging .p-TabBar-tab, /* */ .jupyter-widgets.jupyter-widget-tab > .lm-TabBar.lm-mod-dragging .lm-TabBar-tab { position: relative; } /* */ .jupyter-widgets.widget-tab > .p-TabBar.p-mod-dragging[data-orientation='horizontal'] .p-TabBar-tab, /* */ /* */ .jupyter-widgets.jupyter-widget-tab > .p-TabBar.p-mod-dragging[data-orientation='horizontal'] .p-TabBar-tab, /* */ .jupyter-widgets.jupyter-widget-tab > .lm-TabBar.lm-mod-dragging[data-orientation='horizontal'] .lm-TabBar-tab { left: 0; transition: left 150ms ease; } /* */ .jupyter-widgets.widget-tab > .p-TabBar.p-mod-dragging[data-orientation='vertical'] .p-TabBar-tab, /* */ /* */ .jupyter-widgets.jupyter-widget-tab > .p-TabBar.p-mod-dragging[data-orientation='vertical'] .p-TabBar-tab, /* */ .jupyter-widgets.jupyter-widget-tab > .lm-TabBar.lm-mod-dragging[data-orientation='vertical'] .lm-TabBar-tab { top: 0; transition: top 150ms ease; } /* */ .jupyter-widgets.widget-tab > .p-TabBar.p-mod-dragging .p-TabBar-tab.p-mod-dragging, /* */ /* */ .jupyter-widgets.jupyter-widget-tab > .p-TabBar.p-mod-dragging .p-TabBar-tab.p-mod-dragging, /* */ .jupyter-widgets.jupyter-widget-tab > .lm-TabBar.lm-mod-dragging .lm-TabBar-tab.lm-mod-dragging { transition: none; } /* End tabbar.css */ ipywidgets-8.1.1/packages/controls/css/materialcolors.css000066400000000000000000000211721450026722000236550ustar00rootroot00000000000000/** * The material design colors are adapted from google-material-color v1.2.6 * https://github.com/danlevan/google-material-color * https://github.com/danlevan/google-material-color/blob/f67ca5f4028b2f1b34862f64b0ca67323f91b088/dist/palette.var.css * * The license for the material design color CSS variables is as follows (see * https://github.com/danlevan/google-material-color/blob/f67ca5f4028b2f1b34862f64b0ca67323f91b088/LICENSE) * * The MIT License (MIT) * * Copyright (c) 2014 Dan Le Van * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal * in the Software without restriction, including without limitation the rights * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell * copies of the Software, and to permit persons to whom the Software is * furnished to do so, subject to the following conditions: * * The above copyright notice and this permission notice shall be included in * all copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE * SOFTWARE. */ :root { --md-red-50: #ffebee; --md-red-100: #ffcdd2; --md-red-200: #ef9a9a; --md-red-300: #e57373; --md-red-400: #ef5350; --md-red-500: #f44336; --md-red-600: #e53935; --md-red-700: #d32f2f; --md-red-800: #c62828; --md-red-900: #b71c1c; --md-red-A100: #ff8a80; --md-red-A200: #ff5252; --md-red-A400: #ff1744; --md-red-A700: #d50000; --md-pink-50: #fce4ec; --md-pink-100: #f8bbd0; --md-pink-200: #f48fb1; --md-pink-300: #f06292; --md-pink-400: #ec407a; --md-pink-500: #e91e63; --md-pink-600: #d81b60; --md-pink-700: #c2185b; --md-pink-800: #ad1457; --md-pink-900: #880e4f; --md-pink-A100: #ff80ab; --md-pink-A200: #ff4081; --md-pink-A400: #f50057; --md-pink-A700: #c51162; --md-purple-50: #f3e5f5; --md-purple-100: #e1bee7; --md-purple-200: #ce93d8; --md-purple-300: #ba68c8; --md-purple-400: #ab47bc; --md-purple-500: #9c27b0; --md-purple-600: #8e24aa; --md-purple-700: #7b1fa2; --md-purple-800: #6a1b9a; --md-purple-900: #4a148c; --md-purple-A100: #ea80fc; --md-purple-A200: #e040fb; --md-purple-A400: #d500f9; --md-purple-A700: #aa00ff; --md-deep-purple-50: #ede7f6; --md-deep-purple-100: #d1c4e9; --md-deep-purple-200: #b39ddb; --md-deep-purple-300: #9575cd; --md-deep-purple-400: #7e57c2; --md-deep-purple-500: #673ab7; --md-deep-purple-600: #5e35b1; --md-deep-purple-700: #512da8; --md-deep-purple-800: #4527a0; --md-deep-purple-900: #311b92; --md-deep-purple-A100: #b388ff; --md-deep-purple-A200: #7c4dff; --md-deep-purple-A400: #651fff; --md-deep-purple-A700: #6200ea; --md-indigo-50: #e8eaf6; --md-indigo-100: #c5cae9; --md-indigo-200: #9fa8da; --md-indigo-300: #7986cb; --md-indigo-400: #5c6bc0; --md-indigo-500: #3f51b5; --md-indigo-600: #3949ab; --md-indigo-700: #303f9f; --md-indigo-800: #283593; --md-indigo-900: #1a237e; --md-indigo-A100: #8c9eff; --md-indigo-A200: #536dfe; --md-indigo-A400: #3d5afe; --md-indigo-A700: #304ffe; --md-blue-50: #e3f2fd; --md-blue-100: #bbdefb; --md-blue-200: #90caf9; --md-blue-300: #64b5f6; --md-blue-400: #42a5f5; --md-blue-500: #2196f3; --md-blue-600: #1e88e5; --md-blue-700: #1976d2; --md-blue-800: #1565c0; --md-blue-900: #0d47a1; --md-blue-A100: #82b1ff; --md-blue-A200: #448aff; --md-blue-A400: #2979ff; --md-blue-A700: #2962ff; --md-light-blue-50: #e1f5fe; --md-light-blue-100: #b3e5fc; --md-light-blue-200: #81d4fa; --md-light-blue-300: #4fc3f7; --md-light-blue-400: #29b6f6; --md-light-blue-500: #03a9f4; --md-light-blue-600: #039be5; --md-light-blue-700: #0288d1; --md-light-blue-800: #0277bd; --md-light-blue-900: #01579b; --md-light-blue-A100: #80d8ff; --md-light-blue-A200: #40c4ff; --md-light-blue-A400: #00b0ff; --md-light-blue-A700: #0091ea; --md-cyan-50: #e0f7fa; --md-cyan-100: #b2ebf2; --md-cyan-200: #80deea; --md-cyan-300: #4dd0e1; --md-cyan-400: #26c6da; --md-cyan-500: #00bcd4; --md-cyan-600: #00acc1; --md-cyan-700: #0097a7; --md-cyan-800: #00838f; --md-cyan-900: #006064; --md-cyan-A100: #84ffff; --md-cyan-A200: #18ffff; --md-cyan-A400: #00e5ff; --md-cyan-A700: #00b8d4; --md-teal-50: #e0f2f1; --md-teal-100: #b2dfdb; --md-teal-200: #80cbc4; --md-teal-300: #4db6ac; --md-teal-400: #26a69a; --md-teal-500: #009688; --md-teal-600: #00897b; --md-teal-700: #00796b; --md-teal-800: #00695c; --md-teal-900: #004d40; --md-teal-A100: #a7ffeb; --md-teal-A200: #64ffda; --md-teal-A400: #1de9b6; --md-teal-A700: #00bfa5; --md-green-50: #e8f5e9; --md-green-100: #c8e6c9; --md-green-200: #a5d6a7; --md-green-300: #81c784; --md-green-400: #66bb6a; --md-green-500: #4caf50; --md-green-600: #43a047; --md-green-700: #388e3c; --md-green-800: #2e7d32; --md-green-900: #1b5e20; --md-green-A100: #b9f6ca; --md-green-A200: #69f0ae; --md-green-A400: #00e676; --md-green-A700: #00c853; --md-light-green-50: #f1f8e9; --md-light-green-100: #dcedc8; --md-light-green-200: #c5e1a5; --md-light-green-300: #aed581; --md-light-green-400: #9ccc65; --md-light-green-500: #8bc34a; --md-light-green-600: #7cb342; --md-light-green-700: #689f38; --md-light-green-800: #558b2f; --md-light-green-900: #33691e; --md-light-green-A100: #ccff90; --md-light-green-A200: #b2ff59; --md-light-green-A400: #76ff03; --md-light-green-A700: #64dd17; --md-lime-50: #f9fbe7; --md-lime-100: #f0f4c3; --md-lime-200: #e6ee9c; --md-lime-300: #dce775; --md-lime-400: #d4e157; --md-lime-500: #cddc39; --md-lime-600: #c0ca33; --md-lime-700: #afb42b; --md-lime-800: #9e9d24; --md-lime-900: #827717; --md-lime-A100: #f4ff81; --md-lime-A200: #eeff41; --md-lime-A400: #c6ff00; --md-lime-A700: #aeea00; --md-yellow-50: #fffde7; --md-yellow-100: #fff9c4; --md-yellow-200: #fff59d; --md-yellow-300: #fff176; --md-yellow-400: #ffee58; --md-yellow-500: #ffeb3b; --md-yellow-600: #fdd835; --md-yellow-700: #fbc02d; --md-yellow-800: #f9a825; --md-yellow-900: #f57f17; --md-yellow-A100: #ffff8d; --md-yellow-A200: #ffff00; --md-yellow-A400: #ffea00; --md-yellow-A700: #ffd600; --md-amber-50: #fff8e1; --md-amber-100: #ffecb3; --md-amber-200: #ffe082; --md-amber-300: #ffd54f; --md-amber-400: #ffca28; --md-amber-500: #ffc107; --md-amber-600: #ffb300; --md-amber-700: #ffa000; --md-amber-800: #ff8f00; --md-amber-900: #ff6f00; --md-amber-A100: #ffe57f; --md-amber-A200: #ffd740; --md-amber-A400: #ffc400; --md-amber-A700: #ffab00; --md-orange-50: #fff3e0; --md-orange-100: #ffe0b2; --md-orange-200: #ffcc80; --md-orange-300: #ffb74d; --md-orange-400: #ffa726; --md-orange-500: #ff9800; --md-orange-600: #fb8c00; --md-orange-700: #f57c00; --md-orange-800: #ef6c00; --md-orange-900: #e65100; --md-orange-A100: #ffd180; --md-orange-A200: #ffab40; --md-orange-A400: #ff9100; --md-orange-A700: #ff6d00; --md-deep-orange-50: #fbe9e7; --md-deep-orange-100: #ffccbc; --md-deep-orange-200: #ffab91; --md-deep-orange-300: #ff8a65; --md-deep-orange-400: #ff7043; --md-deep-orange-500: #ff5722; --md-deep-orange-600: #f4511e; --md-deep-orange-700: #e64a19; --md-deep-orange-800: #d84315; --md-deep-orange-900: #bf360c; --md-deep-orange-A100: #ff9e80; --md-deep-orange-A200: #ff6e40; --md-deep-orange-A400: #ff3d00; --md-deep-orange-A700: #dd2c00; --md-brown-50: #efebe9; --md-brown-100: #d7ccc8; --md-brown-200: #bcaaa4; --md-brown-300: #a1887f; --md-brown-400: #8d6e63; --md-brown-500: #795548; --md-brown-600: #6d4c41; --md-brown-700: #5d4037; --md-brown-800: #4e342e; --md-brown-900: #3e2723; --md-grey-50: #fafafa; --md-grey-100: #f5f5f5; --md-grey-200: #eeeeee; --md-grey-300: #e0e0e0; --md-grey-400: #bdbdbd; --md-grey-500: #9e9e9e; --md-grey-600: #757575; --md-grey-700: #616161; --md-grey-800: #424242; --md-grey-900: #212121; --md-blue-grey-50: #eceff1; --md-blue-grey-100: #cfd8dc; --md-blue-grey-200: #b0bec5; --md-blue-grey-300: #90a4ae; --md-blue-grey-400: #78909c; --md-blue-grey-500: #607d8b; --md-blue-grey-600: #546e7a; --md-blue-grey-700: #455a64; --md-blue-grey-800: #37474f; --md-blue-grey-900: #263238; } ipywidgets-8.1.1/packages/controls/css/nouislider-custom.css000066400000000000000000000042631450026722000243240ustar00rootroot00000000000000/* Copyright (c) Jupyter Development Team. * Distributed under the terms of the Modified BSD License. */ /* Custom CSS for nouislider */ .noUi-connect { background: rgb(33, 150, 243); } .noUi-horizontal { height: var(--jp-widgets-slider-track-thickness); } .noUi-vertical { width: var(--jp-widgets-slider-track-thickness); height: 100%; } .noUi-horizontal .noUi-handle { width: var(--jp-widgets-slider-handle-size); height: var(--jp-widgets-slider-handle-size); border-radius: 50%; top: calc( ( var(--jp-widgets-slider-track-thickness) - var(--jp-widgets-slider-handle-size) ) / 2 ); right: calc(var(--jp-widgets-slider-handle-size) / -2); } .noUi-vertical .noUi-handle { height: var(--jp-widgets-slider-handle-size); width: var(--jp-widgets-slider-handle-size); border-radius: 50%; right: calc( ( var(--jp-widgets-slider-handle-size) - var(--jp-widgets-slider-track-thickness) ) / -2 ); top: calc(var(--jp-widgets-slider-handle-size) / -2); } .noUi-handle:after { content: none; } .noUi-handle:before { content: none; } .noUi-target { background: #fafafa; border-radius: 4px; border: 1px; /* box-shadow: inset 0 1px 1px #F0F0F0, 0 3px 6px -5px #BBB; */ } .ui-slider { border: var(--jp-widgets-slider-border-width) solid var(--jp-layout-color3); background: var(--jp-layout-color3); box-sizing: border-box; position: relative; border-radius: 0px; } .noUi-handle { width: var(--jp-widgets-slider-handle-size); border: 1px solid #d9d9d9; border-radius: 3px; background: #fff; cursor: default; box-shadow: none; outline: none; } .noUi-target:not([disabled]) .noUi-handle:hover, .noUi-target:not([disabled]) .noUi-handle:focus { background-color: var(--jp-widgets-slider-active-handle-color); border: var(--jp-widgets-slider-border-width) solid var(--jp-widgets-slider-active-handle-color); } [disabled].noUi-target { opacity: 0.35; } .noUi-connects { overflow: visible; z-index: 0; background: var(--jp-layout-color3); } .noUi-vertical .noUi-connect { width: calc(100% + 2px); right: -1px; } .noUi-horizontal .noUi-connect { height: calc(100% + 2px); top: -1px; } ipywidgets-8.1.1/packages/controls/css/nouislider.less000066400000000000000000000025551450026722000231740ustar00rootroot00000000000000/* The nouislider.css file is autogenerated from nouislider.less, which imports and wraps the nouislider/src/nouislider.less styles. MIT License Copyright (c) 2019 Léon Gersen Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /* The .widget-slider class is deprecated */ .widget-slider, .jupyter-widget-slider { @import "nouislider/src/nouislider.less"; @import (less) "./nouislider-custom.css"; }; ipywidgets-8.1.1/packages/controls/css/widgets-base.css000066400000000000000000001207171450026722000232200ustar00rootroot00000000000000/* Copyright (c) Jupyter Development Team. * Distributed under the terms of the Modified BSD License. */ /* * We assume that the CSS variables in * https://github.com/jupyterlab/jupyterlab/blob/master/src/default-theme/variables.css * have been defined. */ @import './lumino.css'; @import './nouislider.css'; :root { --jp-widgets-color: var(--jp-content-font-color1); --jp-widgets-label-color: var(--jp-widgets-color); --jp-widgets-readout-color: var(--jp-widgets-color); --jp-widgets-font-size: var(--jp-ui-font-size1); --jp-widgets-margin: 2px; --jp-widgets-inline-height: 28px; --jp-widgets-inline-width: 300px; --jp-widgets-inline-width-short: calc( var(--jp-widgets-inline-width) / 2 - var(--jp-widgets-margin) ); --jp-widgets-inline-width-tiny: calc( var(--jp-widgets-inline-width-short) / 2 - var(--jp-widgets-margin) ); --jp-widgets-inline-margin: 4px; /* margin between inline elements */ --jp-widgets-inline-label-width: 80px; --jp-widgets-border-width: var(--jp-border-width); --jp-widgets-vertical-height: 200px; --jp-widgets-horizontal-tab-height: 24px; --jp-widgets-horizontal-tab-width: 144px; --jp-widgets-horizontal-tab-top-border: 2px; --jp-widgets-progress-thickness: 20px; --jp-widgets-container-padding: 15px; --jp-widgets-input-padding: 4px; --jp-widgets-radio-item-height-adjustment: 8px; --jp-widgets-radio-item-height: calc( var(--jp-widgets-inline-height) - var(--jp-widgets-radio-item-height-adjustment) ); --jp-widgets-slider-track-thickness: 4px; --jp-widgets-slider-border-width: var(--jp-widgets-border-width); --jp-widgets-slider-handle-size: 16px; --jp-widgets-slider-handle-border-color: var(--jp-border-color1); --jp-widgets-slider-handle-background-color: var(--jp-layout-color1); --jp-widgets-slider-active-handle-color: var(--jp-brand-color1); --jp-widgets-menu-item-height: 24px; --jp-widgets-dropdown-arrow: url('data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KPCEtLSBHZW5lcmF0b3I6IEFkb2JlIElsbHVzdHJhdG9yIDE5LjIuMSwgU1ZHIEV4cG9ydCBQbHVnLUluIC4gU1ZHIFZlcnNpb246IDYuMDAgQnVpbGQgMCkgIC0tPgo8c3ZnIHZlcnNpb249IjEuMSIgaWQ9IkxheWVyXzEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIgeT0iMHB4IgoJIHZpZXdCb3g9IjAgMCAxOCAxOCIgc3R5bGU9ImVuYWJsZS1iYWNrZ3JvdW5kOm5ldyAwIDAgMTggMTg7IiB4bWw6c3BhY2U9InByZXNlcnZlIj4KPHN0eWxlIHR5cGU9InRleHQvY3NzIj4KCS5zdDB7ZmlsbDpub25lO30KPC9zdHlsZT4KPHBhdGggZD0iTTUuMiw1LjlMOSw5LjdsMy44LTMuOGwxLjIsMS4ybC00LjksNWwtNC45LTVMNS4yLDUuOXoiLz4KPHBhdGggY2xhc3M9InN0MCIgZD0iTTAtMC42aDE4djE4SDBWLTAuNnoiLz4KPC9zdmc+Cg'); --jp-widgets-input-color: var(--jp-ui-font-color1); --jp-widgets-input-background-color: var(--jp-layout-color1); --jp-widgets-input-border-color: var(--jp-border-color1); --jp-widgets-input-focus-border-color: var(--jp-brand-color2); --jp-widgets-input-border-width: var(--jp-widgets-border-width); --jp-widgets-disabled-opacity: 0.6; /* From Material Design Lite */ --md-shadow-key-umbra-opacity: 0.2; --md-shadow-key-penumbra-opacity: 0.14; --md-shadow-ambient-shadow-opacity: 0.12; } .jupyter-widgets { margin: var(--jp-widgets-margin); box-sizing: border-box; color: var(--jp-widgets-color); overflow: visible; } .jp-Output-result > .jupyter-widgets { margin-left: 0; margin-right: 0; } /* vbox and hbox */ /* */ .widget-inline-hbox, /* */ .jupyter-widget-inline-hbox { /* Horizontal widgets */ box-sizing: border-box; display: flex; flex-direction: row; align-items: baseline; } /* */ .widget-inline-vbox, /* */ .jupyter-widget-inline-vbox { /* Vertical Widgets */ box-sizing: border-box; display: flex; flex-direction: column; align-items: center; } /* */ .widget-box, /* */ .jupyter-widget-box { box-sizing: border-box; display: flex; margin: 0; overflow: auto; } /* */ .widget-gridbox, /* */ .jupyter-widget-gridbox { box-sizing: border-box; display: grid; margin: 0; overflow: auto; } /* */ .widget-hbox, /* */ .jupyter-widget-hbox { flex-direction: row; } /* */ .widget-vbox, /* */ .jupyter-widget-vbox { flex-direction: column; } /* General Tags Styling */ .jupyter-widget-tagsinput { display: flex; flex-direction: row; flex-wrap: wrap; align-items: center; overflow: auto; cursor: text; } .jupyter-widget-tag { padding-left: 10px; padding-right: 10px; padding-top: 0px; padding-bottom: 0px; display: inline-block; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; text-align: center; font-size: var(--jp-widgets-font-size); height: calc(var(--jp-widgets-inline-height) - 2px); border: 0px solid; line-height: calc(var(--jp-widgets-inline-height) - 2px); box-shadow: none; color: var(--jp-ui-font-color1); background-color: var(--jp-layout-color2); border-color: var(--jp-border-color2); border: none; user-select: none; cursor: grab; transition: margin-left 200ms; margin: 1px 1px 1px 1px; } .jupyter-widget-tag.mod-active { /* MD Lite 4dp shadow */ box-shadow: 0 4px 5px 0 rgba(0, 0, 0, var(--md-shadow-key-penumbra-opacity)), 0 1px 10px 0 rgba(0, 0, 0, var(--md-shadow-ambient-shadow-opacity)), 0 2px 4px -1px rgba(0, 0, 0, var(--md-shadow-key-umbra-opacity)); color: var(--jp-ui-font-color1); background-color: var(--jp-layout-color3); } .jupyter-widget-colortag { color: var(--jp-inverse-ui-font-color1); } .jupyter-widget-colortag.mod-active { color: var(--jp-inverse-ui-font-color0); } .jupyter-widget-taginput { color: var(--jp-ui-font-color0); background-color: var(--jp-layout-color0); cursor: text; text-align: left; } .jupyter-widget-taginput:focus { outline: none; } .jupyter-widget-tag-close { margin-left: var(--jp-widgets-inline-margin); padding: 2px 0px 2px 2px; } .jupyter-widget-tag-close:hover { cursor: pointer; } /* Tag "Primary" Styling */ .jupyter-widget-tag.mod-primary { color: var(--jp-inverse-ui-font-color1); background-color: var(--jp-brand-color1); } .jupyter-widget-tag.mod-primary.mod-active { color: var(--jp-inverse-ui-font-color0); background-color: var(--jp-brand-color0); } /* Tag "Success" Styling */ .jupyter-widget-tag.mod-success { color: var(--jp-inverse-ui-font-color1); background-color: var(--jp-success-color1); } .jupyter-widget-tag.mod-success.mod-active { color: var(--jp-inverse-ui-font-color0); background-color: var(--jp-success-color0); } /* Tag "Info" Styling */ .jupyter-widget-tag.mod-info { color: var(--jp-inverse-ui-font-color1); background-color: var(--jp-info-color1); } .jupyter-widget-tag.mod-info.mod-active { color: var(--jp-inverse-ui-font-color0); background-color: var(--jp-info-color0); } /* Tag "Warning" Styling */ .jupyter-widget-tag.mod-warning { color: var(--jp-inverse-ui-font-color1); background-color: var(--jp-warn-color1); } .jupyter-widget-tag.mod-warning.mod-active { color: var(--jp-inverse-ui-font-color0); background-color: var(--jp-warn-color0); } /* Tag "Danger" Styling */ .jupyter-widget-tag.mod-danger { color: var(--jp-inverse-ui-font-color1); background-color: var(--jp-error-color1); } .jupyter-widget-tag.mod-danger.mod-active { color: var(--jp-inverse-ui-font-color0); background-color: var(--jp-error-color0); } /* General Button Styling */ .jupyter-button { padding-left: 10px; padding-right: 10px; padding-top: 0px; padding-bottom: 0px; display: inline-block; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; text-align: center; font-size: var(--jp-widgets-font-size); cursor: pointer; height: var(--jp-widgets-inline-height); border: 0px solid; line-height: var(--jp-widgets-inline-height); box-shadow: none; color: var(--jp-ui-font-color1); background-color: var(--jp-layout-color2); border-color: var(--jp-border-color2); border: none; user-select: none; } .jupyter-button i.fa { margin-right: var(--jp-widgets-inline-margin); pointer-events: none; } .jupyter-button:empty:before { content: '\200b'; /* zero-width space */ } .jupyter-widgets.jupyter-button:disabled { opacity: var(--jp-widgets-disabled-opacity); } .jupyter-button i.fa.center { margin-right: 0; } .jupyter-button:hover:enabled, .jupyter-button:focus:enabled { /* MD Lite 2dp shadow */ box-shadow: 0 2px 2px 0 rgba(0, 0, 0, var(--md-shadow-key-penumbra-opacity)), 0 3px 1px -2px rgba(0, 0, 0, var(--md-shadow-key-umbra-opacity)), 0 1px 5px 0 rgba(0, 0, 0, var(--md-shadow-ambient-shadow-opacity)); } .jupyter-button:active, .jupyter-button.mod-active { /* MD Lite 4dp shadow */ box-shadow: 0 4px 5px 0 rgba(0, 0, 0, var(--md-shadow-key-penumbra-opacity)), 0 1px 10px 0 rgba(0, 0, 0, var(--md-shadow-ambient-shadow-opacity)), 0 2px 4px -1px rgba(0, 0, 0, var(--md-shadow-key-umbra-opacity)); color: var(--jp-ui-font-color1); background-color: var(--jp-layout-color3); } .jupyter-button:focus:enabled { outline: 1px solid var(--jp-widgets-input-focus-border-color); } /* Button "Primary" Styling */ .jupyter-button.mod-primary { color: var(--jp-ui-inverse-font-color1); background-color: var(--jp-brand-color1); } .jupyter-button.mod-primary.mod-active { color: var(--jp-ui-inverse-font-color0); background-color: var(--jp-brand-color0); } .jupyter-button.mod-primary:active { color: var(--jp-ui-inverse-font-color0); background-color: var(--jp-brand-color0); } /* Button "Success" Styling */ .jupyter-button.mod-success { color: var(--jp-ui-inverse-font-color1); background-color: var(--jp-success-color1); } .jupyter-button.mod-success.mod-active { color: var(--jp-ui-inverse-font-color0); background-color: var(--jp-success-color0); } .jupyter-button.mod-success:active { color: var(--jp-ui-inverse-font-color0); background-color: var(--jp-success-color0); } /* Button "Info" Styling */ .jupyter-button.mod-info { color: var(--jp-ui-inverse-font-color1); background-color: var(--jp-info-color1); } .jupyter-button.mod-info.mod-active { color: var(--jp-ui-inverse-font-color0); background-color: var(--jp-info-color0); } .jupyter-button.mod-info:active { color: var(--jp-ui-inverse-font-color0); background-color: var(--jp-info-color0); } /* Button "Warning" Styling */ .jupyter-button.mod-warning { color: var(--jp-ui-inverse-font-color1); background-color: var(--jp-warn-color1); } .jupyter-button.mod-warning.mod-active { color: var(--jp-ui-inverse-font-color0); background-color: var(--jp-warn-color0); } .jupyter-button.mod-warning:active { color: var(--jp-ui-inverse-font-color0); background-color: var(--jp-warn-color0); } /* Button "Danger" Styling */ .jupyter-button.mod-danger { color: var(--jp-ui-inverse-font-color1); background-color: var(--jp-error-color1); } .jupyter-button.mod-danger.mod-active { color: var(--jp-ui-inverse-font-color0); background-color: var(--jp-error-color0); } .jupyter-button.mod-danger:active { color: var(--jp-ui-inverse-font-color0); background-color: var(--jp-error-color0); } /* Widget Button, Widget Toggle Button, Widget Upload */ /* */ .widget-button, /* */ /* */ .widget-toggle-button, /* */ /* */ .widget-upload, /* */ .jupyter-widget-button, .jupyter-widget-toggle-button, .jupyter-widget-upload { width: var(--jp-widgets-inline-width-short); } /* Widget Label Styling */ /* Override Bootstrap label css */ .jupyter-widgets label { margin-bottom: initial; } /* */ .widget-label-basic, /* */ .jupyter-widget-label-basic { /* Basic Label */ color: var(--jp-widgets-label-color); font-size: var(--jp-widgets-font-size); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; line-height: var(--jp-widgets-inline-height); } /* */ .widget-label, /* */ .jupyter-widget-label { /* Label */ color: var(--jp-widgets-label-color); font-size: var(--jp-widgets-font-size); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; line-height: var(--jp-widgets-inline-height); } /* */ .widget-inline-hbox .widget-label, /* */ .jupyter-widget-inline-hbox .jupyter-widget-label { /* Horizontal Widget Label */ color: var(--jp-widgets-label-color); text-align: right; margin-right: calc(var(--jp-widgets-inline-margin) * 2); width: var(--jp-widgets-inline-label-width); flex-shrink: 0; } /* */ .widget-inline-vbox .widget-label, /* */ .jupyter-widget-inline-vbox .jupyter-widget-label { /* Vertical Widget Label */ color: var(--jp-widgets-label-color); text-align: center; line-height: var(--jp-widgets-inline-height); } /* Widget Readout Styling */ /* */ .widget-readout, /* */ .jupyter-widget-readout { color: var(--jp-widgets-readout-color); font-size: var(--jp-widgets-font-size); height: var(--jp-widgets-inline-height); line-height: var(--jp-widgets-inline-height); overflow: hidden; white-space: nowrap; text-align: center; } /* */ .widget-readout.overflow, /* */ .jupyter-widget-readout.overflow { /* Overflowing Readout */ /* From Material Design Lite shadow-key-umbra-opacity: 0.2; shadow-key-penumbra-opacity: 0.14; shadow-ambient-shadow-opacity: 0.12; */ -webkit-box-shadow: 0 2px 2px 0 rgba(0, 0, 0, 0.2), 0 3px 1px -2px rgba(0, 0, 0, 0.14), 0 1px 5px 0 rgba(0, 0, 0, 0.12); -moz-box-shadow: 0 2px 2px 0 rgba(0, 0, 0, 0.2), 0 3px 1px -2px rgba(0, 0, 0, 0.14), 0 1px 5px 0 rgba(0, 0, 0, 0.12); box-shadow: 0 2px 2px 0 rgba(0, 0, 0, 0.2), 0 3px 1px -2px rgba(0, 0, 0, 0.14), 0 1px 5px 0 rgba(0, 0, 0, 0.12); } /* */ .widget-inline-hbox .widget-readout, /* */ .jupyter-widget-inline-hbox .jupyter-widget-readout { /* Horizontal Readout */ text-align: center; max-width: var(--jp-widgets-inline-width-short); min-width: var(--jp-widgets-inline-width-tiny); margin-left: var(--jp-widgets-inline-margin); } /* */ .widget-inline-vbox .widget-readout, /* */ .jupyter-widget-inline-vbox .jupyter-widget-readout { /* Vertical Readout */ margin-top: var(--jp-widgets-inline-margin); /* as wide as the widget */ width: inherit; } /* Widget Checkbox Styling */ /* */ .widget-checkbox, /* */ .jupyter-widget-checkbox { width: var(--jp-widgets-inline-width); height: var(--jp-widgets-inline-height); line-height: var(--jp-widgets-inline-height); } /* */ .widget-checkbox input[type='checkbox'], /* */ .jupyter-widget-checkbox input[type='checkbox'] { margin: 0px calc(var(--jp-widgets-inline-margin) * 2) 0px 0px; line-height: var(--jp-widgets-inline-height); font-size: large; flex-grow: 1; flex-shrink: 0; align-self: center; } /* Widget Valid Styling */ /* */ .widget-valid, /* */ .jupyter-widget-valid { height: var(--jp-widgets-inline-height); line-height: var(--jp-widgets-inline-height); width: var(--jp-widgets-inline-width-short); font-size: var(--jp-widgets-font-size); } /* */ .widget-valid i, /* */ .jupyter-widget-valid i { line-height: var(--jp-widgets-inline-height); margin-right: var(--jp-widgets-inline-margin); margin-left: var(--jp-widgets-inline-margin); } /* */ .widget-valid.mod-valid i, /* */ .jupyter-widget-valid.mod-valid i { color: green; } /* */ .widget-valid.mod-invalid i, /* */ .jupyter-widget-valid.mod-invalid i { color: red; } /* */ .widget-valid.mod-valid .widget-valid-readout, /* */ .jupyter-widget-valid.mod-valid .jupyter-widget-valid-readout { display: none; } /* Widget Text and TextArea Styling */ /* */ .widget-textarea, /* */ /* */ .widget-text, /* */ .jupyter-widget-textarea, .jupyter-widget-text { width: var(--jp-widgets-inline-width); } /* */ .widget-text input[type='text'], /* */ /* */ .widget-text input[type='number'], /* */ /* */ .widget-text input[type='password'], /* */ .jupyter-widget-text input[type='text'], .jupyter-widget-text input[type='number'], .jupyter-widget-text input[type='password'] { height: var(--jp-widgets-inline-height); } /* */ .widget-text input[type='text']:disabled, /* */ /* */ .widget-text input[type='number']:disabled, /* */ /* */ .widget-text input[type='password']:disabled, /* */ /* */ .widget-textarea textarea:disabled, /* */ .jupyter-widget-text input[type='text']:disabled, .jupyter-widget-text input[type='number']:disabled, .jupyter-widget-text input[type='password']:disabled, .jupyter-widget-textarea textarea:disabled { opacity: var(--jp-widgets-disabled-opacity); } /* */ .widget-text input[type='text'], /* */ /* */ .widget-text input[type='number'], /* */ /* */ .widget-text input[type='password'], /* */ /* */ .widget-textarea textarea, /* */ .jupyter-widget-text input[type='text'], .jupyter-widget-text input[type='number'], .jupyter-widget-text input[type='password'], .jupyter-widget-textarea textarea { box-sizing: border-box; border: var(--jp-widgets-input-border-width) solid var(--jp-widgets-input-border-color); background-color: var(--jp-widgets-input-background-color); color: var(--jp-widgets-input-color); font-size: var(--jp-widgets-font-size); flex-grow: 1; min-width: 0; /* This makes it possible for the flexbox to shrink this input */ flex-shrink: 1; outline: none !important; } /* */ .widget-text input[type='text'], /* */ /* */ .widget-text input[type='password'], /* */ /* */ .widget-textarea textarea, /* */ .jupyter-widget-text input[type='text'], .jupyter-widget-text input[type='password'], .jupyter-widget-textarea textarea { padding: var(--jp-widgets-input-padding) calc(var(--jp-widgets-input-padding) * 2); } /* */ .widget-text input[type='number'], /* */ .jupyter-widget-text input[type='number'] { padding: var(--jp-widgets-input-padding) 0 var(--jp-widgets-input-padding) calc(var(--jp-widgets-input-padding) * 2); } /* */ .widget-textarea textarea, /* */ .jupyter-widget-textarea textarea { height: inherit; width: inherit; } /* */ .widget-text input:focus, /* */ /* */ .widget-textarea textarea:focus, /* */ .jupyter-widget-text input:focus, .jupyter-widget-textarea textarea:focus { border-color: var(--jp-widgets-input-focus-border-color); } /* Horizontal Slider */ /* */ .widget-hslider, /* */ .jupyter-widget-hslider { width: var(--jp-widgets-inline-width); height: var(--jp-widgets-inline-height); line-height: var(--jp-widgets-inline-height); /* Override the align-items baseline. This way, the description and readout still seem to align their baseline properly, and we don't have to have align-self: stretch in the .slider-container. */ align-items: center; } /* */ .widgets-slider .slider-container, /* */ .jupyter-widgets-slider .slider-container { overflow: visible; } /* */ .widget-hslider .slider-container, /* */ .jupyter-widget-hslider .slider-container { margin-left: calc( var(--jp-widgets-slider-handle-size) / 2 - 2 * var(--jp-widgets-slider-border-width) ); margin-right: calc( var(--jp-widgets-slider-handle-size) / 2 - 2 * var(--jp-widgets-slider-border-width) ); flex: 1 1 var(--jp-widgets-inline-width-short); } /* Vertical Slider */ /* */ .widget-vbox .widget-label, /* */ .jupyter-widget-vbox .jupyter-widget-label { height: var(--jp-widgets-inline-height); line-height: var(--jp-widgets-inline-height); } /* */ .widget-vslider, /* */ .jupyter-widget-vslider { /* Vertical Slider */ height: var(--jp-widgets-vertical-height); width: var(--jp-widgets-inline-width-tiny); } /* */ .widget-vslider .slider-container, /* */ .jupyter-widget-vslider .slider-container { flex: 1 1 var(--jp-widgets-inline-width-short); margin-left: auto; margin-right: auto; margin-bottom: calc( var(--jp-widgets-slider-handle-size) / 2 - 2 * var(--jp-widgets-slider-border-width) ); margin-top: calc( var(--jp-widgets-slider-handle-size) / 2 - 2 * var(--jp-widgets-slider-border-width) ); display: flex; flex-direction: column; } /* Widget Progress Styling */ .progress-bar { -webkit-transition: none; -moz-transition: none; -ms-transition: none; -o-transition: none; transition: none; } .progress-bar { height: var(--jp-widgets-inline-height); } .progress-bar { background-color: var(--jp-brand-color1); } .progress-bar-success { background-color: var(--jp-success-color1); } .progress-bar-info { background-color: var(--jp-info-color1); } .progress-bar-warning { background-color: var(--jp-warn-color1); } .progress-bar-danger { background-color: var(--jp-error-color1); } .progress { background-color: var(--jp-layout-color2); border: none; box-shadow: none; } /* Horisontal Progress */ /* */ .widget-hprogress, /* */ .jupyter-widget-hprogress { /* Progress Bar */ height: var(--jp-widgets-inline-height); line-height: var(--jp-widgets-inline-height); width: var(--jp-widgets-inline-width); align-items: center; } /* */ .widget-hprogress .progress, /* */ .jupyter-widget-hprogress .progress { flex-grow: 1; margin-top: var(--jp-widgets-input-padding); margin-bottom: var(--jp-widgets-input-padding); align-self: stretch; /* Override bootstrap style */ height: initial; } /* Vertical Progress */ /* */ .widget-vprogress, /* */ .jupyter-widget-vprogress { height: var(--jp-widgets-vertical-height); width: var(--jp-widgets-inline-width-tiny); } /* */ .widget-vprogress .progress, /* */ .jupyter-widget-vprogress .progress { flex-grow: 1; width: var(--jp-widgets-progress-thickness); margin-left: auto; margin-right: auto; margin-bottom: 0; } /* Select Widget Styling */ /* */ .widget-dropdown, /* */ .jupyter-widget-dropdown { height: var(--jp-widgets-inline-height); width: var(--jp-widgets-inline-width); line-height: var(--jp-widgets-inline-height); } /* */ .widget-dropdown > select, /* */ .jupyter-widget-dropdown > select { padding-right: 20px; border: var(--jp-widgets-input-border-width) solid var(--jp-widgets-input-border-color); border-radius: 0; height: inherit; flex: 1 1 var(--jp-widgets-inline-width-short); min-width: 0; /* This makes it possible for the flexbox to shrink this input */ box-sizing: border-box; outline: none !important; box-shadow: none; background-color: var(--jp-widgets-input-background-color); color: var(--jp-widgets-input-color); font-size: var(--jp-widgets-font-size); vertical-align: top; padding-left: calc(var(--jp-widgets-input-padding) * 2); appearance: none; -webkit-appearance: none; -moz-appearance: none; background-repeat: no-repeat; background-size: 20px; background-position: right center; background-image: var(--jp-widgets-dropdown-arrow); } /* */ .widget-dropdown > select:focus, /* */ .jupyter-widget-dropdown > select:focus { border-color: var(--jp-widgets-input-focus-border-color); } /* */ .widget-dropdown > select:disabled, /* */ .jupyter-widget-dropdown > select:disabled { opacity: var(--jp-widgets-disabled-opacity); } /* To disable the dotted border in Firefox around select controls. See http://stackoverflow.com/a/18853002 */ /* */ .widget-dropdown > select:-moz-focusring, /* */ .jupyter-widget-dropdown > select:-moz-focusring { color: transparent; text-shadow: 0 0 0 #000; } /* Select and SelectMultiple */ /* */ .widget-select, /* */ .jupyter-widget-select { width: var(--jp-widgets-inline-width); line-height: var(--jp-widgets-inline-height); /* Because Firefox defines the baseline of a select as the bottom of the control, we align the entire control to the top and add padding to the select to get an approximate first line baseline alignment. */ align-items: flex-start; } /* */ .widget-select > select, /* */ .jupyter-widget-select > select { border: var(--jp-widgets-input-border-width) solid var(--jp-widgets-input-border-color); background-color: var(--jp-widgets-input-background-color); color: var(--jp-widgets-input-color); font-size: var(--jp-widgets-font-size); flex: 1 1 var(--jp-widgets-inline-width-short); outline: none !important; overflow: auto; height: inherit; /* Because Firefox defines the baseline of a select as the bottom of the control, we align the entire control to the top and add padding to the select to get an approximate first line baseline alignment. */ padding-top: 5px; } /* */ .widget-select > select:focus, /* */ .jupyter-widget-select > select:focus { border-color: var(--jp-widgets-input-focus-border-color); } .wiget-select > select > option, .jupyter-wiget-select > select > option { padding-left: var(--jp-widgets-input-padding); line-height: var(--jp-widgets-inline-height); /* line-height doesn't work on some browsers for select options */ padding-top: calc( var(--jp-widgets-inline-height) - var(--jp-widgets-font-size) / 2 ); padding-bottom: calc( var(--jp-widgets-inline-height) - var(--jp-widgets-font-size) / 2 ); } /* Toggle Buttons Styling */ /* */ .widget-toggle-buttons, /* */ .jupyter-widget-toggle-buttons { line-height: var(--jp-widgets-inline-height); } /* */ .widget-toggle-buttons .widget-toggle-button, /* */ .jupyter-widget-toggle-buttons .jupyter-widget-toggle-button { margin-left: var(--jp-widgets-margin); margin-right: var(--jp-widgets-margin); } /* */ .widget-toggle-buttons .jupyter-button:disabled, /* */ .jupyter-widget-toggle-buttons .jupyter-button:disabled { opacity: var(--jp-widgets-disabled-opacity); } /* Radio Buttons Styling */ /* */ .widget-radio, /* */ .jupyter-widget-radio { width: var(--jp-widgets-inline-width); line-height: var(--jp-widgets-inline-height); } /* */ .widget-radio-box, /* */ .jupyter-widget-radio-box { display: flex; flex-direction: column; align-items: stretch; box-sizing: border-box; flex-grow: 1; margin-bottom: var(--jp-widgets-radio-item-height-adjustment); } /* */ .widget-radio-box label, /* */ .jupyter-widget-radio-box label { height: var(--jp-widgets-radio-item-height); line-height: var(--jp-widgets-radio-item-height); font-size: var(--jp-widgets-font-size); } /* */ .widget-radio-box input, /* */ .jupyter-widget-radio-box input { height: var(--jp-widgets-radio-item-height); line-height: var(--jp-widgets-radio-item-height); margin: 0 calc(var(--jp-widgets-input-padding) * 2) 0 1px; float: left; } /* Color Picker Styling */ /* */ .widget-colorpicker, /* */ .jupyter-widget-colorpicker { width: var(--jp-widgets-inline-width); height: var(--jp-widgets-inline-height); line-height: var(--jp-widgets-inline-height); } /* */ .widget-colorpicker > .widget-colorpicker-input, /* */ .jupyter-widget-colorpicker > .jupyter-widget-colorpicker-input { flex-grow: 1; flex-shrink: 1; min-width: var(--jp-widgets-inline-width-tiny); } /* */ .widget-colorpicker input[type='color'], /* */ .jupyter-widget-colorpicker input[type='color'] { width: var(--jp-widgets-inline-height); height: var(--jp-widgets-inline-height); padding: 0 2px; /* make the color square actually square on Chrome on OS X */ background: var(--jp-widgets-input-background-color); color: var(--jp-widgets-input-color); border: var(--jp-widgets-input-border-width) solid var(--jp-widgets-input-border-color); border-left: none; flex-grow: 0; flex-shrink: 0; box-sizing: border-box; align-self: stretch; outline: none !important; } /* */ .widget-colorpicker.concise input[type='color'], /* */ .jupyter-widget-colorpicker.concise input[type='color'] { border-left: var(--jp-widgets-input-border-width) solid var(--jp-widgets-input-border-color); } /* */ .widget-colorpicker input[type='color']:focus, /* */ /* */ .widget-colorpicker input[type='text']:focus, /* */ .jupyter-widget-colorpicker input[type='color']:focus, .jupyter-widget-colorpicker input[type='text']:focus { border-color: var(--jp-widgets-input-focus-border-color); } /* */ .widget-colorpicker input[type='text'], /* */ .jupyter-widget-colorpicker input[type='text'] { flex-grow: 1; outline: none !important; height: var(--jp-widgets-inline-height); line-height: var(--jp-widgets-inline-height); background: var(--jp-widgets-input-background-color); color: var(--jp-widgets-input-color); border: var(--jp-widgets-input-border-width) solid var(--jp-widgets-input-border-color); font-size: var(--jp-widgets-font-size); padding: var(--jp-widgets-input-padding) calc(var(--jp-widgets-input-padding) * 2); min-width: 0; /* This makes it possible for the flexbox to shrink this input */ flex-shrink: 1; box-sizing: border-box; } /* */ .widget-colorpicker input[type='text']:disabled, /* */ .jupyter-widget-colorpicker input[type='text']:disabled { opacity: var(--jp-widgets-disabled-opacity); } /* Date Picker Styling */ /* */ .widget-datepicker, /* */ .jupyter-widget-datepicker { width: var(--jp-widgets-inline-width); height: var(--jp-widgets-inline-height); line-height: var(--jp-widgets-inline-height); } /* */ .widget-datepicker input[type='date'], /* */ .jupyter-widget-datepicker input[type='date'] { flex-grow: 1; flex-shrink: 1; min-width: 0; /* This makes it possible for the flexbox to shrink this input */ outline: none !important; height: var(--jp-widgets-inline-height); border: var(--jp-widgets-input-border-width) solid var(--jp-widgets-input-border-color); background-color: var(--jp-widgets-input-background-color); color: var(--jp-widgets-input-color); font-size: var(--jp-widgets-font-size); padding: var(--jp-widgets-input-padding) calc(var(--jp-widgets-input-padding) * 2); box-sizing: border-box; } /* */ .widget-datepicker input[type='date']:focus, /* */ .jupyter-widget-datepicker input[type='date']:focus { border-color: var(--jp-widgets-input-focus-border-color); } /* */ .widget-datepicker input[type='date']:invalid, /* */ .jupyter-widget-datepicker input[type='date']:invalid { border-color: var(--jp-warn-color1); } /* */ .widget-datepicker input[type='date']:disabled, /* */ .jupyter-widget-datepicker input[type='date']:disabled { opacity: var(--jp-widgets-disabled-opacity); } /* Play Widget */ /* */ .widget-play, /* */ .jupyter-widget-play { width: var(--jp-widgets-inline-width-short); display: flex; align-items: stretch; } /* */ .widget-play .jupyter-button, /* */ .jupyter-widget-play .jupyter-button { flex-grow: 1; height: auto; } /* */ .widget-play .jupyter-button:disabled, /* */ .jupyter-widget-play .jupyter-button:disabled { opacity: var(--jp-widgets-disabled-opacity); } /* Tab Widget */ /* */ .jupyter-widgets.widget-tab, /* */ .jupyter-widgets.jupyter-widget-tab { display: flex; flex-direction: column; } /* */ .jupyter-widgets.widget-tab > .p-TabBar, /* */ /* */.jupyter-widgets.jupyter-widget-tab > .p-TabBar, /* */ .jupyter-widgets.jupyter-widget-tab > .lm-TabBar { /* Necessary so that a tab can be shifted down to overlay the border of the box below. */ overflow-x: visible; overflow-y: visible; } /* */ .jupyter-widgets.widget-tab > .p-TabBar > .p-TabBar-content, /* */ /* */.jupyter-widgets.jupyter-widget-tab > .p-TabBar > .p-TabBar-content, /* */ .jupyter-widgets.jupyter-widget-tab > .lm-TabBar > .lm-TabBar-content { /* Make sure that the tab grows from bottom up */ align-items: flex-end; min-width: 0; min-height: 0; } /* */ .jupyter-widgets.widget-tab > .widget-tab-contents, /* */ .jupyter-widgets.jupyter-widget-tab > .widget-tab-contents { width: 100%; box-sizing: border-box; margin: 0; background: var(--jp-layout-color1); color: var(--jp-ui-font-color1); border: var(--jp-border-width) solid var(--jp-border-color1); padding: var(--jp-widgets-container-padding); flex-grow: 1; overflow: auto; } /* */ .jupyter-widgets.widget-tab > .p-TabBar, /* */ /* */.jupyter-widgets.jupyter-widget-tab > .p-TabBar, /* */ .jupyter-widgets.jupyter-widget-tab > .lm-TabBar { font: var(--jp-widgets-font-size) Helvetica, Arial, sans-serif; min-height: calc( var(--jp-widgets-horizontal-tab-height) + var(--jp-border-width) ); } /* */ .jupyter-widgets.widget-tab > .p-TabBar .p-TabBar-tab, /* */ /* */.jupyter-widgets.jupyter-widget-tab > .p-TabBar .p-TabBar-tab, /* */ .jupyter-widgets.jupyter-widget-tab > .lm-TabBar .lm-TabBar-tab { flex: 0 1 var(--jp-widgets-horizontal-tab-width); min-width: 35px; min-height: calc( var(--jp-widgets-horizontal-tab-height) + var(--jp-border-width) ); line-height: var(--jp-widgets-horizontal-tab-height); margin-left: calc(-1 * var(--jp-border-width)); padding: 0px 10px; background: var(--jp-layout-color2); color: var(--jp-ui-font-color2); border: var(--jp-border-width) solid var(--jp-border-color1); border-bottom: none; position: relative; } /* */ .jupyter-widgets.widget-tab > .p-TabBar .p-TabBar-tab.p-mod-current, /* */ /* */.jupyter-widgets.jupyter-widget-tab > .p-TabBar .p-TabBar-tab.p-mod-current, /* */ .jupyter-widgets.jupyter-widget-tab > .lm-TabBar .lm-TabBar-tab.lm-mod-current { color: var(--jp-ui-font-color0); /* We want the background to match the tab content background */ background: var(--jp-layout-color1); min-height: calc( var(--jp-widgets-horizontal-tab-height) + 2 * var(--jp-border-width) ); transform: translateY(var(--jp-border-width)); overflow: visible; } /* */ .jupyter-widgets.widget-tab > .p-TabBar .p-TabBar-tab.p-mod-current:before, /* */ /* */.jupyter-widgets.jupyter-widget-tab > .p-TabBar .p-TabBar-tab.p-mod-current:before, /* */ .jupyter-widgets.jupyter-widget-tab > .lm-TabBar .lm-TabBar-tab.lm-mod-current:before { position: absolute; top: calc(-1 * var(--jp-border-width)); left: calc(-1 * var(--jp-border-width)); content: ''; height: var(--jp-widgets-horizontal-tab-top-border); width: calc(100% + 2 * var(--jp-border-width)); background: var(--jp-brand-color1); } /* */ .jupyter-widgets.widget-tab > .p-TabBar .p-TabBar-tab:first-child, /* */ /* */.jupyter-widgets.jupyter-widget-tab > .p-TabBar .p-TabBar-tab:first-child, /* */ .jupyter-widgets.jupyter-widget-tab > .lm-TabBar .lm-TabBar-tab:first-child { margin-left: 0; } /* */ .jupyter-widgets.widget-tab > .p-TabBar .p-TabBar-tab:hover:not(.p-mod-current), /* */ /* */ .jupyter-widgets.jupyter-widget-tab > .p-TabBar .p-TabBar-tab:hover:not(.p-mod-current), /* */ .jupyter-widgets.jupyter-widget-tab > .lm-TabBar .lm-TabBar-tab:hover:not(.lm-mod-current) { background: var(--jp-layout-color1); color: var(--jp-ui-font-color1); } /* */ .jupyter-widgets.widget-tab > .p-TabBar .p-mod-closable > .p-TabBar-tabCloseIcon, /* */ /* */ .jupyter-widgets.jupyter-widget-tab > .p-TabBar .p-mod-closable > .p-TabBar-tabCloseIcon, /* */ .jupyter-widgets.jupyter-widget-tab > .lm-TabBar .lm-mod-closable > .lm-TabBar-tabCloseIcon { margin-left: 4px; } /* This font-awesome strategy may not work across FA4 and FA5, but we don't actually support closable tabs, so it really doesn't matter */ /* */ .jupyter-widgets.widget-tab > .p-TabBar .p-mod-closable > .p-TabBar-tabCloseIcon:before, /* */ /* */ .jupyter-widgets.jupyter-widget-widget-tab > .p-TabBar .p-mod-closable > .p-TabBar-tabCloseIcon:before, /* */ .jupyter-widgets.jupyter-widget-tab > .lm-TabBar .lm-mod-closable > .lm-TabBar-tabCloseIcon:before { font-family: FontAwesome; content: '\f00d'; /* close */ } /* */ .jupyter-widgets.widget-tab > .p-TabBar .p-TabBar-tabIcon, /* */ /* */ .jupyter-widgets.widget-tab > .p-TabBar .p-TabBar-tabLabel, /* */ /* */ .jupyter-widgets.widget-tab > .p-TabBar .p-TabBar-tabCloseIcon, /* */ /* */ .jupyter-widgets.jupyter-widget-tab > .p-TabBar .p-TabBar-tabIcon, /* */ /* */ .jupyter-widgets.jupyter-widget-tab > .p-TabBar .p-TabBar-tabLabel, /* */ /* */ .jupyter-widgets.jupyter-widget-tab > .p-TabBar .p-TabBar-tabCloseIcon, /* */ .jupyter-widgets.jupyter-widget-tab > .lm-TabBar .lm-TabBar-tabIcon, .jupyter-widgets.jupyter-widget-tab > .lm-TabBar .lm-TabBar-tabLabel, .jupyter-widgets.jupyter-widget-tab > .lm-TabBar .lm-TabBar-tabCloseIcon { line-height: var(--jp-widgets-horizontal-tab-height); } /* Accordion Widget */ .jupyter-widget-Collapse { display: flex; flex-direction: column; align-items: stretch; } .jupyter-widget-Collapse-header { padding: var(--jp-widgets-input-padding); cursor: pointer; color: var(--jp-ui-font-color2); background-color: var(--jp-layout-color2); border: var(--jp-widgets-border-width) solid var(--jp-border-color1); padding: calc(var(--jp-widgets-container-padding) * 2 / 3) var(--jp-widgets-container-padding); font-weight: bold; } .jupyter-widget-Collapse-header:hover { background-color: var(--jp-layout-color1); color: var(--jp-ui-font-color1); } .jupyter-widget-Collapse-open > .jupyter-widget-Collapse-header { background-color: var(--jp-layout-color1); color: var(--jp-ui-font-color0); cursor: default; border-bottom: none; } .jupyter-widget-Collapse-contents { padding: var(--jp-widgets-container-padding); background-color: var(--jp-layout-color1); color: var(--jp-ui-font-color1); border-left: var(--jp-widgets-border-width) solid var(--jp-border-color1); border-right: var(--jp-widgets-border-width) solid var(--jp-border-color1); border-bottom: var(--jp-widgets-border-width) solid var(--jp-border-color1); overflow: auto; } .jupyter-widget-Accordion { display: flex; flex-direction: column; align-items: stretch; } .jupyter-widget-Accordion .jupyter-widget-Collapse { margin-bottom: 0; } .jupyter-widget-Accordion .jupyter-widget-Collapse + .jupyter-widget-Collapse { margin-top: 4px; } /* HTML widget */ /* */ .widget-html, /* */ /* */ .widget-htmlmath, /* */ .jupyter-widget-html, .jupyter-widget-htmlmath { font-size: var(--jp-widgets-font-size); } /* */ .widget-html > .widget-html-content, /* */ /* */.widget-htmlmath > .widget-html-content, /* */ .jupyter-widget-html > .jupyter-widget-html-content, .jupyter-widget-htmlmath > .jupyter-widget-html-content { /* Fill out the area in the HTML widget */ align-self: stretch; flex-grow: 1; flex-shrink: 1; /* Makes sure the baseline is still aligned with other elements */ line-height: var(--jp-widgets-inline-height); /* Make it possible to have absolutely-positioned elements in the html */ position: relative; } /* Image widget */ /* */ .widget-image, /* */ .jupyter-widget-image { max-width: 100%; height: auto; } ipywidgets-8.1.1/packages/controls/css/widgets.css000066400000000000000000000002501450026722000222750ustar00rootroot00000000000000/* Copyright (c) Jupyter Development Team. * Distributed under the terms of the Modified BSD License. */ @import './labvariables.css'; @import './widgets-base.css'; ipywidgets-8.1.1/packages/controls/karma.conf.js000066400000000000000000000052761450026722000217170ustar00rootroot00000000000000// Karma configuration // Generated on Mon Dec 07 2015 08:28:33 GMT-0800 (PST) module.exports = function (config) { var cfg = { // base path that will be used to resolve all patterns (eg. files, exclude) basePath: '', // frameworks to use // available frameworks: https://npmjs.org/browse/keyword/karma-adapter frameworks: ['mocha', 'chai', 'sinon-chai'], // list of files / patterns to load in the browser files: ['test/**/*_test.js'], // list of files to exclude exclude: [], // preprocess matching files before serving them to the browser // available preprocessors: https://npmjs.org/browse/keyword/karma-preprocessor preprocessors: { 'test/**/*.js': ['webpack'], }, webpack: { module: { loaders: [ { test: /\.jsx?$/, exclude: /node_modules/, loader: 'babel?presets[]=es2015', }, { test: /\.css$/, use: ['style-loader', 'css-loader'] }, // required to load font-awesome { test: /\.(woff|woff2|eot|ttf|otf)$/i, type: 'asset/resource' }, { test: /\.svg$/i, type: 'asset' }, ], }, externals: { 'base/js/namespace': 'base/js/namespace', 'notebook/js/outputarea': 'notebook/js/outputarea', 'services/kernels/comm': 'services/kernels/comm', }, }, // test results reporter to use // possible values: 'dots', 'progress' // available reporters: https://npmjs.org/browse/keyword/karma-reporter reporters: ['mocha'], // web server port port: 9876, // enable / disable colors in the output (reporters and logs) colors: true, // level of logging // possible values: config.LOG_DISABLE || config.LOG_ERROR || config.LOG_WARN || config.LOG_INFO || config.LOG_DEBUG logLevel: config.LOG_DEBUG, // enable / disable watching file and executing tests whenever any file changes autoWatch: false, // start these browsers // available browser launchers: https://npmjs.org/browse/keyword/karma-launcher browsers: ['Chrome'], customLaunchers: { Chrome_travis_ci: { base: 'Chrome', flags: ['--no-sandbox'], }, }, // Continuous Integration mode // if true, Karma captures browsers, runs the tests and exits singleRun: true, // Capture console output client: { captureConsole: true, }, browserConsoleLogOptions: { level: '', format: '%b %T: %m', terminal: true, }, // Concurrency level // how many browser should be started simultanous concurrency: Infinity, }; if (process.env.TRAVIS) { cfg.browsers = ['Chrome_travis_ci']; } config.set(cfg); }; ipywidgets-8.1.1/packages/controls/package.json000066400000000000000000000057101450026722000216210ustar00rootroot00000000000000{ "name": "@jupyter-widgets/controls", "version": "5.0.7", "description": "Jupyter interactive widgets", "repository": { "type": "git", "url": "https://github.com/jupyter-widgets/ipywidgets.git" }, "license": "BSD-3-Clause", "author": "Project Jupyter", "main": "lib/index.js", "typings": "lib/index.d.ts", "files": [ "lib/**/*.d.ts", "lib/**/*.js", "css/*.css", "dist/" ], "scripts": { "build": "npm run build:src && npm run build:css", "build:css": "lessc css/nouislider.less css/nouislider.css && postcss --use postcss-import --use postcss-cssnext -o css/widgets.built.css css/widgets.css", "build:src": "tsc --build", "build:test": "tsc --build test && webpack --config test/webpack.conf.js", "clean": "npm run clean:src", "clean:src": "rimraf lib && rimraf tsconfig.tsbuildinfo", "prepublish": "npm run clean && npm run build", "test": "npm run test:unit", "test:coverage": "npm run build:test && webpack --config test/webpack-cov.conf.js && karma start test/karma-cov.conf.js", "test:unit": "npm run test:unit:firefox && npm run test:unit:chrome", "test:unit:chrome": "npm run test:unit:default -- --browsers=Chrome", "test:unit:default": "npm run build:test && karma start test/karma.conf.js --log-level debug", "test:unit:firefox": "npm run test:unit:default -- --browsers=Firefox", "test:unit:firefox:headless": "npm run test:unit:default -- --browsers=FirefoxHeadless", "test:unit:ie": "npm run test:unit:default -- --browsers=IE" }, "dependencies": { "@jupyter-widgets/base": "^6.0.6", "@lumino/algorithm": "^1.9.1 || ^2.1", "@lumino/domutils": "^1.8.1 || ^2.1", "@lumino/messaging": "^1.10.1 || ^2.1", "@lumino/signaling": "^1.10.1 || ^2.1", "@lumino/widgets": "^1.30.0 || ^2.1", "d3-color": "^3.0.1", "d3-format": "^3.0.1", "jquery": "^3.1.1", "nouislider": "15.4.0" }, "devDependencies": { "@jupyterlab/services": "^6.0.0 || ^7.0.0", "@types/d3-color": "^3.0.2", "@types/d3-format": "^3.0.1", "@types/expect.js": "^0.3.29", "@types/jquery": "^3.5.16", "@types/mathjax": "^0.0.37", "@types/mocha": "^9.0.0", "@types/node": "^17.0.2", "chai": "^4.0.0", "css-loader": "^6.5.1", "expect.js": "^0.3.1", "istanbul-instrumenter-loader": "^3.0.1", "karma": "^6.3.3", "karma-chrome-launcher": "^3.1.0", "karma-coverage": "^2.0.3", "karma-firefox-launcher": "^2.1.1", "karma-ie-launcher": "^1.0.0", "karma-mocha": "^2.0.1", "karma-mocha-reporter": "^2.2.5", "karma-webpack": "^5.0.0", "less": "^4.1.2", "mocha": "^9.0.0", "npm-run-all": "^4.1.5", "postcss": "^8.3.2", "postcss-cli": "^9.1.0", "postcss-cssnext": "^3.1.0", "postcss-import": "^14.0.2", "postcss-loader": "^6.1.0", "rimraf": "^3.0.2", "sinon": "^12.0.1", "sinon-chai": "^3.3.0", "style-loader": "^3.3.1", "typescript": "~4.9.4", "webpack": "^5.65.0" } } ipywidgets-8.1.1/packages/controls/src/000077500000000000000000000000001450026722000201175ustar00rootroot00000000000000ipywidgets-8.1.1/packages/controls/src/index.ts000066400000000000000000000015771450026722000216100ustar00rootroot00000000000000// Copyright (c) Jupyter Development Team. // Distributed under the terms of the Modified BSD License. export * from './utils'; export * from './version'; export * from './widget_link'; export * from './widget_bool'; export * from './widget_button'; export * from './widget_box'; export * from './widget_image'; export * from './widget_video'; export * from './widget_audio'; export * from './widget_color'; export * from './widget_date'; export * from './widget_datetime'; export * from './widget_time'; export * from './widget_int'; export * from './widget_float'; export * from './widget_controller'; export * from './widget_selection'; export * from './widget_selectioncontainer'; export * from './widget_tagsinput'; export * from './widget_string'; export * from './widget_description'; export * from './widget_upload'; export const version = (require('../package.json') as any).version; ipywidgets-8.1.1/packages/controls/src/lumino/000077500000000000000000000000001450026722000214225ustar00rootroot00000000000000ipywidgets-8.1.1/packages/controls/src/lumino/accordion.ts000066400000000000000000000205341450026722000237370ustar00rootroot00000000000000// Copyright (c) Jupyter Development Team. // Distributed under the terms of the Modified BSD License. import { ArrayExt } from '@lumino/algorithm'; import { ISignal, Signal } from '@lumino/signaling'; import { Panel, PanelLayout, Widget, Title } from '@lumino/widgets'; import { Selection } from './currentselection'; /** * The class name added to Collapse instances. */ const COLLAPSE_CLASS = 'jupyter-widget-Collapse'; /** * The class name added to a Collapse's header. */ const COLLAPSE_HEADER_CLASS = 'jupyter-widget-Collapse-header'; /** * The class name added to a Collapse's contents. */ const COLLAPSE_CONTENTS_CLASS = 'jupyter-widget-Collapse-contents'; /** * The class name added to a Collapse when it is opened */ const COLLAPSE_CLASS_OPEN = 'jupyter-widget-Collapse-open'; /** * A panel that supports a collapsible header, made from the widget's title. * Clicking on the title expands or contracts the widget. */ export class Collapse extends Widget { constructor(options: Collapse.IOptions) { super(options); this.addClass(COLLAPSE_CLASS); this._header = new Widget(); this._header.addClass(COLLAPSE_HEADER_CLASS); this._header.node.addEventListener('click', this); // Fontawesome icon for caret const icon = document.createElement('i'); icon.classList.add('fa', 'fa-fw', 'fa-caret-right'); this._header.node.appendChild(icon); // Label content this._header.node.appendChild(document.createElement('span')); this._content = new Panel(); this._content.addClass(COLLAPSE_CONTENTS_CLASS); const layout = new PanelLayout(); this.layout = layout; layout.addWidget(this._header); layout.addWidget(this._content); if (options.widget) { this.widget = options.widget; } this.collapsed = false; } dispose(): void { if (this.isDisposed) { return; } super.dispose(); this._header = null!; this._widget = null!; this._content = null!; } get widget(): Widget { return this._widget; } set widget(widget: Widget) { const oldWidget = this._widget; if (oldWidget) { oldWidget.disposed.disconnect(this._onChildDisposed, this); oldWidget.title.changed.disconnect(this._onTitleChanged, this); oldWidget.parent = null; } this._widget = widget; widget.disposed.connect(this._onChildDisposed, this); widget.title.changed.connect(this._onTitleChanged, this); this._onTitleChanged(widget.title); this._content.addWidget(widget); } get collapsed(): boolean { return this._collapsed; } set collapsed(value: boolean) { // TODO: should we have this check here? if (value === this._collapsed) { return; } if (value) { this._collapse(); } else { this._uncollapse(); } } toggle(): void { this.collapsed = !this.collapsed; } get collapseChanged(): ISignal { return this._collapseChanged; } private _collapse(): void { this._collapsed = true; if (this._content) { this._content.hide(); } this.removeClass(COLLAPSE_CLASS_OPEN); this._header.node.children[0].classList.add('fa-caret-right'); this._header.node.children[0].classList.remove('fa-caret-down'); this._collapseChanged.emit(void 0); } private _uncollapse(): void { this._collapsed = false; if (this._content) { this._content.show(); } this.addClass(COLLAPSE_CLASS_OPEN); this._header.node.children[0].classList.add('fa-caret-down'); this._header.node.children[0].classList.remove('fa-caret-right'); this._collapseChanged.emit(void 0); } /** * Handle the DOM events for the Collapse widget. * * @param event - The DOM event sent to the panel. * * #### Notes * This method implements the DOM `EventListener` interface and is * called in response to events on the panel's DOM node. It should * not be called directly by user code. */ handleEvent(event: Event): void { switch (event.type) { case 'click': this._evtClick(event as MouseEvent); break; default: break; } } private _evtClick(event: MouseEvent): void { this.toggle(); } /** * Handle the `changed` signal of a title object. */ private _onTitleChanged(sender: Title): void { this._header.node.children[1].textContent = this._widget.title.label; } private _onChildDisposed(sender: Widget): void { this.dispose(); } private _collapseChanged = new Signal(this); _collapsed: boolean; _content: Panel; _widget: Widget; _header: Widget; } export namespace Collapse { export interface IOptions extends Widget.IOptions { widget: Widget; } } /** * The class name added to Accordion instances. */ const ACCORDION_CLASS = 'jupyter-widget-Accordion'; /** * The class name added to an Accordion child. */ const ACCORDION_CHILD_CLASS = 'jupyter-widget-Accordion-child'; const ACCORDION_CHILD_ACTIVE_CLASS = 'jupyter-widget-Accordion-child-active'; /** * A panel that supports a collapsible header, made from the widget's title. * Clicking on the title expands or contracts the widget. */ export class Accordion extends Panel { constructor(options?: Accordion.IOptions) { super(options); this._selection = new Selection(this.widgets as ReadonlyArray); this._selection.selectionChanged.connect(this._onSelectionChanged, this); this.addClass(ACCORDION_CLASS); } /** * A read-only sequence of the widgets in the panel. * * #### Notes * This is a read-only property. */ /* get widgets(): ISequence { return new ArraySequence(toArray(map((this.layout as PanelLayout).widgets, (w: Collapse) => w.widget))); } */ get collapseWidgets(): ReadonlyArray { return (this.layout as PanelLayout).widgets as ReadonlyArray; } get selection(): Selection { return this._selection; } indexOf(widget: Widget): number { return ArrayExt.findFirstIndex( this.collapseWidgets, (w: Collapse) => w.widget === widget ); } /** * Add a widget to the end of the accordion. * * @param widget - The widget to add to the accordion. * * @returns The Collapse widget wrapping the added widget. * * #### Notes * The widget will be wrapped in a CollapsedWidget. */ addWidget(widget: Widget): Widget { const collapse = this._wrapWidget(widget); collapse.collapsed = true; super.addWidget(collapse); this._selection.adjustSelectionForInsert(this.widgets.length - 1, collapse); return collapse; } /** * Insert a widget at the specified index. * * @param index - The index at which to insert the widget. * * @param widget - The widget to insert into to the accordion. * * #### Notes * If the widget is already contained in the panel, it will be moved. */ insertWidget(index: number, widget: Widget): void { const collapse = this._wrapWidget(widget); collapse.collapsed = true; super.insertWidget(index, collapse); this._selection.adjustSelectionForInsert(index, collapse); } removeWidget(widget: Widget): void { const index = this.indexOf(widget); if (index >= 0) { const collapse = this.collapseWidgets[index] as Collapse; widget.parent = null; collapse.dispose(); this._selection.adjustSelectionForRemove(index, null); } } private _wrapWidget(widget: Widget): Collapse { const collapse = new Collapse({ widget }); collapse.addClass(ACCORDION_CHILD_CLASS); collapse.collapseChanged.connect(this._onCollapseChange, this); return collapse; } private _onCollapseChange(sender: Collapse): void { if (!sender.collapsed) { this._selection.value = sender; } else if (this._selection.value === sender && sender.collapsed) { this._selection.value = null; } } private _onSelectionChanged( sender: Selection, change: Selection.ISelectionChangedArgs ): void { // Collapse previous widget, open current widget const pv = change.previousValue; const cv = change.currentValue; if (pv) { pv.collapsed = true; pv.removeClass(ACCORDION_CHILD_ACTIVE_CLASS); } if (cv) { cv.collapsed = false; cv.addClass(ACCORDION_CHILD_ACTIVE_CLASS); } } private _selection: Selection; } export namespace Accordion { export type IOptions = Panel.IOptions; } ipywidgets-8.1.1/packages/controls/src/lumino/currentselection.ts000066400000000000000000000265001450026722000253650ustar00rootroot00000000000000// Copyright (c) Jupyter Development Team. // Distributed under the terms of the Modified BSD License. /** * A variety of convenience methods for maintaining a current selection */ import { ArrayExt } from '@lumino/algorithm'; import { ISignal, Signal } from '@lumino/signaling'; export class Selection { constructor(sequence: ReadonlyArray, options: Selection.IOptions = {}) { this._array = sequence; this._insertBehavior = options.insertBehavior || 'select-item-if-needed'; this._removeBehavior = options.removeBehavior || 'select-item-after'; } /** * A signal emitted when the current item is changed. * * #### Notes * This signal is emitted when the currently selected item is changed either * through user or programmatic interaction. * * Notably, this signal is not emitted when the index of the current item * changes due to other items being inserted, removed, or moved, but the * current item remains the same. It is only emitted when the actual current * item is changed. */ get selectionChanged(): ISignal< Selection, Selection.ISelectionChangedArgs > { return this._selectionChanged; } /** * Adjust for setting an item. * * This should be called *after* the set. * * @param index - The index set. * @param oldValue - The old value at the index. */ adjustSelectionForSet(index: number): void { // We just need to send a signal if the currentValue changed. // Get the current index and value. const pi = this.index; const pv = this.value; // Exit early if this doesn't affect the selection if (index !== pi) { return; } this._updateSelectedValue(); const cv = this.value; // The previous item is now null, since it is no longer in the array. this._previousValue = null; // Send signal if there was a change if (pv !== cv) { // Emit the current changed signal. this._selectionChanged.emit({ previousIndex: pi, previousValue: pv, currentIndex: pi, currentValue: cv, }); } } /** * Get the currently selected item. * * #### Notes * This will be `null` if no item is selected. */ get value(): T | null { return this._value; } /** * Set the currently selected item. * * #### Notes * If the item does not exist in the vector, the currentValue will be set to * `null`. This selects the first entry equal to the desired item. */ set value(value: T | null) { if (value === null || this._array === null) { this.index = null; } else { this.index = ArrayExt.firstIndexOf(this._array, value); } } /** * Get the index of the currently selected item. * * #### Notes * This will be `null` if no item is selected. */ get index(): number | null { return this._index; } /** * Set the index of the currently selected tab. * * @param index - The index to select. * * #### Notes * If the value is out of range, the index will be set to `null`, which * indicates no item is selected. */ set index(index: number | null) { // Coerce the value to an index. let i; if (index !== null && this._array !== null) { i = Math.floor(index); if (i < 0 || i >= this._array.length) { i = null; } } else { i = null; } // Bail early if the index will not change. if (this._index === i) { return; } // Look up the previous index and item. const pi = this._index; const pv = this._value; // Update the state this._index = i; this._updateSelectedValue(); this._previousValue = pv; // Emit the current changed signal. this._selectionChanged.emit({ previousIndex: pi, previousValue: pv, currentIndex: i, currentValue: this._value, }); } /** * Get the selection behavior when inserting a tab. */ get insertBehavior(): Selection.InsertBehavior { return this._insertBehavior; } /** * Set the selection behavior when inserting a tab. */ set insertBehavior(value: Selection.InsertBehavior) { this._insertBehavior = value; } /** * Get the selection behavior when removing a tab. */ get removeBehavior(): Selection.RemoveBehavior { return this._removeBehavior; } /** * Set the selection behavior when removing a tab. */ set removeBehavior(value: Selection.RemoveBehavior) { this._removeBehavior = value; } /** * Adjust the current index for a tab insert operation. * * @param i - The new index of the inserted item. * @param j - The inserted item. * * #### Notes * This method accounts for the tab bar's insertion behavior when adjusting * the current index and emitting the changed signal. This should be called * after the insertion. */ adjustSelectionForInsert(i: number, item: T): void { // Lookup commonly used variables. const cv = this._value; const ci = this._index; const bh = this._insertBehavior; // Handle the behavior where the new item is always selected, // or the behavior where the new item is selected if needed. if ( bh === 'select-item' || (bh === 'select-item-if-needed' && ci === null) ) { this._index = i; this._value = item; this._previousValue = cv; this._selectionChanged.emit({ previousIndex: ci, previousValue: cv, currentIndex: i, currentValue: item, }); return; } // Otherwise, silently adjust the current index if needed. if (ci !== null && ci >= i) { this._index!++; } } /** * Clear the selection and history. */ clearSelection(): void { // Get the current index and item. const pi = this._index; const pv = this._value; // Reset the current index and previous item. this._index = null; this._value = null; this._previousValue = null; // If no item was selected, there's nothing else to do. if (pi === null) { return; } // Emit the current changed signal. this._selectionChanged.emit({ previousIndex: pi, previousValue: pv, currentIndex: this._index, currentValue: this._value, }); } /** * Adjust the current index for an item remove operation. * * @param i - The former index of the removed item. * @param item - The removed item. * * #### Notes * This method accounts for the remove behavior when adjusting the current * index and emitting the changed signal. It should be called after the item * is removed. */ adjustSelectionForRemove(i: number, item: T | null): void { // If we have no selection, there is nothing to do if (this._index === null) { return; } // Lookup commonly used variables. const ci = this._index; const bh = this._removeBehavior; // Silently adjust the index if the current item is not removed. if (ci !== i) { if (ci > i) { this._index!--; } return; } // No item gets selected if the vector is empty. if (!this._array || this._array.length === 0) { // Reset the current index and previous item. this._index = null; this._value = null; this._previousValue = null; this._selectionChanged.emit({ previousIndex: i, previousValue: item, currentIndex: this._index, currentValue: this._value, }); return; } // Handle behavior where the next sibling item is selected. if (bh === 'select-item-after') { this._index = Math.min(i, this._array.length - 1); this._updateSelectedValue(); this._previousValue = null; this._selectionChanged.emit({ previousIndex: i, previousValue: item, currentIndex: this._index, currentValue: this._value, }); return; } // Handle behavior where the previous sibling item is selected. if (bh === 'select-item-before') { this._index = Math.max(0, i - 1); this._updateSelectedValue(); this._previousValue = null; this._selectionChanged.emit({ previousIndex: i, previousValue: item, currentIndex: this._index, currentValue: this._value, }); return; } // Handle behavior where the previous history item is selected. if (bh === 'select-previous-item') { if (this._previousValue) { this.value = this._previousValue; } else { this._index = Math.min(i, this._array.length - 1); this._updateSelectedValue(); } this._previousValue = null; this._selectionChanged.emit({ previousIndex: i, previousValue: item, currentIndex: this._index, currentValue: this.value, }); return; } // Otherwise, no item gets selected. this._index = null; this._value = null; this._previousValue = null; this._selectionChanged.emit({ previousIndex: i, previousValue: item, currentIndex: this._index, currentValue: this._value, }); } /** * Set the current value based on the current index. */ private _updateSelectedValue(): void { const i = this._index; this._value = i !== null && this._array ? this._array[i] : null; } private _array: ReadonlyArray | null = null; private _index: number | null; private _value: T | null = null; private _previousValue: T | null = null; private _insertBehavior: Selection.InsertBehavior; private _removeBehavior: Selection.RemoveBehavior; private _selectionChanged = new Signal< Selection, Selection.ISelectionChangedArgs >(this); } export namespace Selection { /** * An options object for creating a tab bar. */ export interface IOptions { /** * The selection behavior when inserting a tab. * * The default is `'select-tab-if-needed'`. */ insertBehavior?: Selection.InsertBehavior; /** * The selection behavior when removing a tab. * * The default is `'select-tab-after'`. */ removeBehavior?: Selection.RemoveBehavior; } /** * The arguments object for the `currentChanged` signal. */ export interface ISelectionChangedArgs { /** * The previously selected index. */ previousIndex: number | null; /** * The previous selected item. */ previousValue: T | null; /** * The currently selected index. */ currentIndex: number | null; /** * The currently selected item. */ currentValue: T | null; } /** * A type alias for the selection behavior on item insert. */ export type InsertBehavior = /** * The selected item will not be changed. */ | 'none' /** * The inserted item will be selected. */ | 'select-item' /** * The inserted item will be selected if the current item is null. */ | 'select-item-if-needed'; /** * A type alias for the selection behavior on item remove. */ export type RemoveBehavior = /** * No item will be selected. */ | 'none' /** * The item after the removed item will be selected if possible. */ | 'select-item-after' /** * The item before the removed item will be selected if possible. */ | 'select-item-before' /** * The previously selected item will be selected if possible. */ | 'select-previous-item'; } ipywidgets-8.1.1/packages/controls/src/lumino/tabpanel.ts000066400000000000000000000275151450026722000235720ustar00rootroot00000000000000/* This file has code derived from Lumino. The license for this Lumino code is: Copyright (c) 2019 Project Jupyter Contributors All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. 3. Neither the name of the copyright holder nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. Copyright (c) 2014-2017, PhosphorJS Contributors All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of the copyright holder nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ import { MessageLoop } from '@lumino/messaging'; import { ISignal, Signal } from '@lumino/signaling'; import { Platform } from '@lumino/domutils'; import { Panel, PanelLayout, TabBar, Widget } from '@lumino/widgets'; /** * A panel where visible widgets are stacked atop one another. * * #### Notes * This class provides a convenience wrapper around a [[PanelLayout]]. */ export class EventedPanel extends Panel { /** * A signal emitted when a widget is removed from the panel. */ get widgetRemoved(): ISignal { return this._widgetRemoved; } /** * A message handler invoked on a `'child-removed'` message. */ protected onChildRemoved(msg: Widget.ChildMessage): void { this._widgetRemoved.emit(msg.child); } private _widgetRemoved = new Signal(this); } /** * A widget which combines a `TabBar` and a `EventedPanel`. * * #### Notes * This is a simple panel which handles the common case of a tab bar * placed next to a content area. The selected tab controls the widget * which is shown in the content area. * * For use cases which require more control than is provided by this * panel, the `TabBar` widget may be used independently. * * TODO: Support setting the direction?? */ export class TabPanel extends Widget { /** * Construct a new tab panel. * * @param options - The options for initializing the tab panel. */ constructor(options: TabPanel.IOptions = {}) { super(); this.addClass('jupyter-widget-TabPanel'); // Create the tab bar and contents panel. this.tabBar = new TabBar(options); this.tabBar.addClass('jupyter-widget-TabPanel-tabBar'); this.tabContents = new EventedPanel(); this.tabContents.addClass('jupyter-widget-TabPanel-tabContents'); // Connect the tab bar signal handlers. this.tabBar.tabMoved.connect(this._onTabMoved, this); this.tabBar.currentChanged.connect(this._onCurrentChanged, this); this.tabBar.tabCloseRequested.connect(this._onTabCloseRequested, this); this.tabBar.tabActivateRequested.connect( this._onTabActivateRequested, this ); // Connect the evented panel signal handlers. this.tabContents.widgetRemoved.connect(this._onWidgetRemoved, this); // Create the layout. const layout = new PanelLayout(); // Add the child widgets to the layout. layout.addWidget(this.tabBar); layout.addWidget(this.tabContents); // Install the layout on the tab panel. this.layout = layout; } /** * A signal emitted when the current tab is changed. * * #### Notes * This signal is emitted when the currently selected tab is changed * either through user or programmatic interaction. * * Notably, this signal is not emitted when the index of the current * tab changes due to tabs being inserted, removed, or moved. It is * only emitted when the actual current tab node is changed. */ get currentChanged(): ISignal { return this._currentChanged; } /** * Get the index of the currently selected tab. * * #### Notes * This will be `null` if no tab is selected. */ get currentIndex(): number | null { const currentIndex = this.tabBar.currentIndex; // Lumino tab bars have an index of -1 if no tab is selected return currentIndex === -1 ? null : currentIndex; } /** * Set the index of the currently selected tab. * * #### Notes * If the index is out of range, it will be set to `null`. */ set currentIndex(value: number | null) { this.tabBar.currentIndex = value === null ? -1 : value; } /** * Get the currently selected widget. * * #### Notes * This will be `null` if there is no selected tab. */ get currentWidget(): Widget | null { const title = this.tabBar.currentTitle; return title ? title.owner : null; } /** * Set the currently selected widget. * * #### Notes * If the widget is not in the panel, it will be set to `null`. */ set currentWidget(value: Widget | null) { this.tabBar.currentTitle = value ? value.title : null; } /** * Get the whether the tabs are movable by the user. * * #### Notes * Tabs can always be moved programmatically. */ get tabsMovable(): boolean { return this.tabBar.tabsMovable; } /** * Set the whether the tabs are movable by the user. * * #### Notes * Tabs can always be moved programmatically. */ set tabsMovable(value: boolean) { this.tabBar.tabsMovable = value; } /** * The tab bar used by the tab panel. * * #### Notes * Modifying the tab bar directly can lead to undefined behavior. */ readonly tabBar: TabBar; /** * The panel used by the tab panel. * * #### Notes * Modifying the panel directly can lead to undefined behavior. */ readonly tabContents: EventedPanel; /** * A read-only array of the widgets in the panel. */ get widgets(): ReadonlyArray { return this.tabContents.widgets; } /** * Add a widget to the end of the tab panel. * * @param widget - The widget to add to the tab panel. * * #### Notes * If the widget is already contained in the panel, it will be moved. * * The widget's `title` is used to populate the tab. */ addWidget(widget: Widget): void { this.insertWidget(this.widgets.length, widget); } /** * Insert a widget into the tab panel at a specified index. * * @param index - The index at which to insert the widget. * * @param widget - The widget to insert into to the tab panel. * * #### Notes * If the widget is already contained in the panel, it will be moved. * * The widget's `title` is used to populate the tab. */ insertWidget(index: number, widget: Widget): void { if (widget !== this.currentWidget) { widget.hide(); } this.tabContents.insertWidget(index, widget); this.tabBar.insertTab(index, widget.title); } /** * Handle the `currentChanged` signal from the tab bar. */ private _onCurrentChanged( sender: TabBar, args: TabBar.ICurrentChangedArgs ): void { // Extract the previous and current title from the args. const { previousIndex, previousTitle, currentIndex, currentTitle } = args; // Extract the widgets from the titles. const previousWidget = previousTitle ? previousTitle.owner : null; const currentWidget = currentTitle ? currentTitle.owner : null; // Hide the previous widget. if (previousWidget) { previousWidget.hide(); } // Show the current widget. if (currentWidget) { currentWidget.show(); } // Emit the `currentChanged` signal for the tab panel. this._currentChanged.emit({ previousIndex, previousWidget, currentIndex, currentWidget, }); // Flush the message loop on IE and Edge to prevent flicker. if (Platform.IS_EDGE || Platform.IS_IE) { MessageLoop.flush(); } } /** * Handle the `tabActivateRequested` signal from the tab bar. */ private _onTabActivateRequested( sender: TabBar, args: TabBar.ITabActivateRequestedArgs ): void { args.title.owner.activate(); } /** * Handle the `tabCloseRequested` signal from the tab bar. */ private _onTabCloseRequested( sender: TabBar, args: TabBar.ITabCloseRequestedArgs ): void { args.title.owner.close(); } /** * Handle the `tabMoved` signal from the tab bar. */ private _onTabMoved( sender: TabBar, args: TabBar.ITabMovedArgs ): void { this.tabContents.insertWidget(args.toIndex, args.title.owner); } /** * Handle the `widgetRemoved` signal from the stacked panel. */ private _onWidgetRemoved(sender: EventedPanel, widget: Widget): void { this.tabBar.removeTab(widget.title); } private _currentChanged = new Signal( this ); } /** * The namespace for the `TabPanel` class statics. */ export namespace TabPanel { /** * An options object for initializing a tab panel. */ export interface IOptions { /** * Whether the tabs are movable by the user. * * The default is `false`. */ tabsMovable?: boolean; /** * The renderer for the panel's tab bar. * * The default is a shared renderer instance. */ renderer?: TabBar.IRenderer; } /** * The arguments object for the `currentChanged` signal. */ export interface ICurrentChangedArgs { /** * The previously selected index. */ previousIndex: number; /** * The previously selected widget. */ previousWidget: Widget | null; /** * The currently selected index. */ currentIndex: number; /** * The currently selected widget. */ currentWidget: Widget | null; } } ipywidgets-8.1.1/packages/controls/src/utils.ts000066400000000000000000000020411450026722000216240ustar00rootroot00000000000000// Copyright (c) Jupyter Development Team. // Distributed under the terms of the Modified BSD License. export { uuid, resolvePromisesDict } from '@jupyter-widgets/base'; /** * Apply MathJax rendering to an element, and optionally set its text. * * If MathJax is not available, make no changes. * * Parameters * ---------- * element: Node * text: optional string */ export function typeset(element: HTMLElement, text?: string): void { if (text !== void 0) { element.textContent = text; } if ((window as any).MathJax !== void 0) { MathJax!.Hub!.Queue(['Typeset', MathJax.Hub, element]); } } /** * escape text to HTML */ export function escape_html(text: string): string { const esc = document.createElement('div'); esc.textContent = text; return esc.innerHTML; } /** * Creates a wrappable Promise rejection function. */ export function reject(message: string, log: boolean) { return function promiseRejection(error: Error): never { if (log) { console.error(new Error(message)); } throw error; }; } ipywidgets-8.1.1/packages/controls/src/version.ts000066400000000000000000000003771450026722000221630ustar00rootroot00000000000000// Copyright (c) Jupyter Development Team. // Distributed under the terms of the Modified BSD License. /** * The version of the Jupyter controls widget attribute spec that this package * implements. */ export const JUPYTER_CONTROLS_VERSION = '2.0.0'; ipywidgets-8.1.1/packages/controls/src/widget_audio.ts000066400000000000000000000041551450026722000231400ustar00rootroot00000000000000// Copyright (c) Jupyter Development Team. // Distributed under the terms of the Modified BSD License. import { DOMWidgetView } from '@jupyter-widgets/base'; import { CoreDOMWidgetModel } from './widget_core'; export class AudioModel extends CoreDOMWidgetModel { defaults(): Backbone.ObjectHash { return { ...super.defaults(), _model_name: 'AudioModel', _view_name: 'AudioView', format: 'mp3', autoplay: true, loop: true, controls: true, value: new DataView(new ArrayBuffer(0)), }; } static serializers = { ...CoreDOMWidgetModel.serializers, value: { serialize: (value: any): DataView => { return new DataView(value.buffer.slice(0)); }, }, }; } export class AudioView extends DOMWidgetView { render(): void { /** * Called when view is rendered. */ super.render(); this.luminoWidget.addClass('jupyter-widgets'); this.update(); // Set defaults. } update(): void { /** * Update the contents of this view * * Called when the model is changed. The model may have been * changed by another view or by a state update from the back-end. */ let url; const format = this.model.get('format'); const value = this.model.get('value'); if (format !== 'url') { const blob = new Blob([value], { type: `audio/${this.model.get('format')}`, }); url = URL.createObjectURL(blob); } else { url = new TextDecoder('utf-8').decode(value.buffer); } // Clean up the old objectURL const oldurl = this.el.src; this.el.src = url; if (oldurl) { URL.revokeObjectURL(oldurl); } // Audio attributes this.el.loop = this.model.get('loop'); this.el.autoplay = this.model.get('autoplay'); this.el.controls = this.model.get('controls'); return super.update(); } remove(): void { if (this.el.src) { URL.revokeObjectURL(this.el.src); } super.remove(); } preinitialize() { // Must set this before the initialize method creates the element this.tagName = 'audio'; } el: HTMLAudioElement; } ipywidgets-8.1.1/packages/controls/src/widget_bool.ts000066400000000000000000000254021450026722000227700ustar00rootroot00000000000000// Copyright (c) Jupyter Development Team. // Distributed under the terms of the Modified BSD License. import { DOMWidgetView } from '@jupyter-widgets/base'; import { CoreDescriptionModel } from './widget_core'; import { DescriptionStyleModel, DescriptionView } from './widget_description'; export class CheckboxStyleModel extends DescriptionStyleModel { defaults(): Backbone.ObjectHash { return { ...super.defaults(), _model_name: 'CheckboxStyleModel', }; } public static styleProperties = { ...DescriptionStyleModel.styleProperties, background: { selector: '', attribute: 'background', default: null as any, }, }; } export class ToggleButtonStyleModel extends DescriptionStyleModel { defaults(): Backbone.ObjectHash { return { ...super.defaults(), _model_name: 'ToggleButtonStyleModel', }; } public static styleProperties = { ...DescriptionStyleModel.styleProperties, font_family: { selector: '', attribute: 'font-family', default: '', }, font_size: { selector: '', attribute: 'font-size', default: '', }, font_style: { selector: '', attribute: 'font-style', default: '', }, font_variant: { selector: '', attribute: 'font-variant', default: '', }, font_weight: { selector: '', attribute: 'font-weight', default: '', }, text_color: { selector: '', attribute: 'color', default: '', }, text_decoration: { selector: '', attribute: 'text-decoration', default: '', }, }; } export class BoolModel extends CoreDescriptionModel { defaults(): Backbone.ObjectHash { return { ...super.defaults(), value: false, disabled: false, _model_name: 'BoolModel', }; } } export class CheckboxModel extends CoreDescriptionModel { defaults(): Backbone.ObjectHash { return { ...super.defaults(), indent: true, style: null, _view_name: 'CheckboxView', _model_name: 'CheckboxModel', }; } } export class CheckboxView extends DescriptionView { /** * Called when view is rendered. */ render(): void { super.render(); this.el.classList.add('jupyter-widgets'); this.el.classList.add('widget-inline-hbox'); this.el.classList.add('widget-checkbox'); // adding a zero-width space to the label to help // the browser set the baseline correctly this.label.innerHTML = '​'; // label containing the checkbox and description span this.checkboxLabel = document.createElement('label'); this.checkboxLabel.classList.add('widget-label-basic'); this.el.appendChild(this.checkboxLabel); // checkbox this.checkbox = document.createElement('input'); this.checkbox.setAttribute('type', 'checkbox'); this.checkboxLabel.appendChild(this.checkbox); // span to the right of the checkbox that will render the description this.descriptionSpan = document.createElement('span'); this.checkboxLabel.appendChild(this.descriptionSpan); this.listenTo(this.model, 'change:indent', this.updateIndent); this.listenTo(this.model, 'change:tabbable', this.updateTabindex); this.update(); // Set defaults. this.updateDescription(); this.updateIndent(); this.updateTabindex(); this.updateTooltip(); } /** * Overridden from super class * * Update the description span (rather than the label) since * we want the description to the right of the checkbox. */ updateDescription(): void { // can be called before the view is fully initialized if (this.checkboxLabel == null) { return; } const description = this.model.get('description'); if (this.model.get('description_allow_html')) { this.descriptionSpan.innerHTML = this.model.widget_manager.inline_sanitize(description); } else { this.descriptionSpan.textContent = description; } this.typeset(this.descriptionSpan); this.descriptionSpan.title = description; this.checkbox.title = description; } /** * Update the visibility of the label in the super class * to provide the optional indent. */ updateIndent(): void { const indent = this.model.get('indent'); this.label.style.display = indent ? '' : 'none'; } updateTabindex(): void { if (!this.checkbox) { return; // we might be constructing the parent } const tabbable = this.model.get('tabbable'); if (tabbable === true) { this.checkbox.setAttribute('tabIndex', '0'); } else if (tabbable === false) { this.checkbox.setAttribute('tabIndex', '-1'); } else if (tabbable === null) { this.checkbox.removeAttribute('tabIndex'); } } updateTooltip(): void { if (!this.checkbox) return; // we might be constructing the parent const title = this.model.get('tooltip'); if (!title) { this.checkbox.removeAttribute('title'); } else if (this.model.get('description').length === 0) { this.checkbox.setAttribute('title', title); } } events(): { [e: string]: string } { return { 'click input[type="checkbox"]': '_handle_click', }; } /** * Handles when the checkbox is clicked. * * Calling model.set will trigger all of the other views of the * model to update. */ _handle_click(): void { const value = this.model.get('value'); this.model.set('value', !value, { updated_view: this }); this.touch(); } /** * Update the contents of this view * * Called when the model is changed. The model may have been * changed by another view or by a state update from the back-end. */ update(options?: any): void { this.checkbox.checked = this.model.get('value'); if (options === undefined || options.updated_view != this) { this.checkbox.disabled = this.model.get('disabled'); } return super.update(); } /** * Handle message sent to the front end. * * Used to focus or blur the widget. */ handle_message(content: any): void { if (content.do == 'focus') { this.checkbox.focus(); } else if (content.do == 'blur') { this.checkbox.blur(); } } checkbox: HTMLInputElement; checkboxLabel: HTMLLabelElement; descriptionSpan: HTMLSpanElement; } export class ToggleButtonModel extends BoolModel { defaults(): Backbone.ObjectHash { return { ...super.defaults(), _view_name: 'ToggleButtonView', _model_name: 'ToggleButtonModel', tooltip: '', icon: '', button_style: '', style: null, }; } } export class ToggleButtonView extends DOMWidgetView { /** * Called when view is rendered. */ render(): void { super.render(); this.el.classList.add('jupyter-widgets'); this.el.classList.add('jupyter-button'); this.el.classList.add('widget-toggle-button'); this.listenTo(this.model, 'change:button_style', this.update_button_style); this.listenTo(this.model, 'change:tabbable', this.updateTabindex); this.set_button_style(); this.update(); // Set defaults. } update_button_style(): void { this.update_mapped_classes(ToggleButtonView.class_map, 'button_style'); } set_button_style(): void { this.set_mapped_classes(ToggleButtonView.class_map, 'button_style'); } /** * Update the contents of this view * * Called when the model is changed. The model may have been * changed by another view or by a state update from the back-end. */ update(options?: any): void { if (this.model.get('value')) { this.el.classList.add('mod-active'); } else { this.el.classList.remove('mod-active'); } if (options === undefined || options.updated_view !== this) { this.el.disabled = this.model.get('disabled'); this.el.setAttribute('tabbable', this.model.get('tabbable')); this.el.setAttribute('title', this.model.get('tooltip')); const description = this.model.get('description'); const icon = this.model.get('icon'); if (description.trim().length === 0 && icon.trim().length === 0) { this.el.innerHTML = ' '; // Preserve button height } else { this.el.textContent = ''; if (icon.trim().length) { const i = document.createElement('i'); this.el.appendChild(i); i.classList.add('fa'); i.classList.add('fa-' + icon); } this.el.appendChild(document.createTextNode(description)); } } this.updateTabindex(); return super.update(); } events(): { [e: string]: string } { return { // Dictionary of events and their handlers. click: '_handle_click', }; } /** * Handles and validates user input. * * Calling model.set will trigger all of the other views of the * model to update. */ _handle_click(event: MouseEvent): void { event.preventDefault(); const value = this.model.get('value'); this.model.set('value', !value, { updated_view: this }); this.touch(); } preinitialize() { // Must set this before the initialize method creates the element this.tagName = 'button'; } el: HTMLButtonElement; static class_map = { primary: ['mod-primary'], success: ['mod-success'], info: ['mod-info'], warning: ['mod-warning'], danger: ['mod-danger'], }; } export class ValidModel extends BoolModel { defaults(): Backbone.ObjectHash { return { ...super.defaults(), readout: 'Invalid', _view_name: 'ValidView', _model_name: 'ValidModel', }; } } export class ValidView extends DescriptionView { /** * Called when view is rendered. */ render(): void { super.render(); this.el.classList.add('jupyter-widgets'); this.el.classList.add('widget-valid'); this.el.classList.add('widget-inline-hbox'); this.icon = document.createElement('i'); this.icon.classList.add('fa', 'fa-fw'); this.el.appendChild(this.icon); this.readout = document.createElement('span'); this.readout.classList.add('widget-valid-readout'); this.readout.classList.add('widget-readout'); this.el.appendChild(this.readout); this.update(); } /** * Update the contents of this view * * Called when the model is changed. The model may have been * changed by another view or by a state update from the back-end. */ update(): void { this.el.classList.remove('mod-valid'); this.el.classList.remove('mod-invalid'); this.icon.classList.remove('fa-check'); this.icon.classList.remove('fa-times'); this.readout.textContent = this.model.get('readout'); if (this.model.get('value')) { this.el.classList.add('mod-valid'); this.icon.classList.add('fa-check'); } else { this.el.classList.add('mod-invalid'); this.icon.classList.add('fa-times'); } } readout: HTMLSpanElement; icon: HTMLElement; } ipywidgets-8.1.1/packages/controls/src/widget_box.ts000066400000000000000000000114241450026722000226240ustar00rootroot00000000000000// Copyright (c) Jupyter Development Team. // Distributed under the terms of the Modified BSD License. import { DOMWidgetView, unpack_models, ViewList, JupyterLuminoPanelWidget, reject, WidgetModel, WidgetView, } from '@jupyter-widgets/base'; import { CoreDOMWidgetModel } from './widget_core'; import { ArrayExt } from '@lumino/algorithm'; import { MessageLoop } from '@lumino/messaging'; import { Widget } from '@lumino/widgets'; import $ from 'jquery'; export class BoxModel extends CoreDOMWidgetModel { defaults(): Backbone.ObjectHash { return { ...super.defaults(), _view_name: 'BoxView', _model_name: 'BoxModel', children: [], box_style: '', }; } static serializers = { ...CoreDOMWidgetModel.serializers, children: { deserialize: unpack_models }, }; } export class HBoxModel extends BoxModel { defaults(): Backbone.ObjectHash { return { ...super.defaults(), _view_name: 'HBoxView', _model_name: 'HBoxModel', }; } } export class VBoxModel extends BoxModel { defaults(): Backbone.ObjectHash { return { ...super.defaults(), _view_name: 'VBoxView', _model_name: 'VBoxModel', }; } } export class BoxView extends DOMWidgetView { _createElement(tagName: string): HTMLElement { this.luminoWidget = new JupyterLuminoPanelWidget({ view: this }); return this.luminoWidget.node; } _setElement(el: HTMLElement): void { if (this.el || el !== this.luminoWidget.node) { // Boxes don't allow setting the element beyond the initial creation. throw new Error('Cannot reset the DOM element.'); } this.el = this.luminoWidget.node; this.$el = $(this.luminoWidget.node); } initialize(parameters: WidgetView.IInitializeParameters): void { super.initialize(parameters); this.children_views = new ViewList(this.add_child_model, null, this); this.listenTo(this.model, 'change:children', this.update_children); this.listenTo(this.model, 'change:box_style', this.update_box_style); this.luminoWidget.addClass('jupyter-widgets'); this.luminoWidget.addClass('widget-container'); this.luminoWidget.addClass('widget-box'); } render(): void { super.render(); this.update_children(); this.set_box_style(); } update_children(): void { this.children_views ?.update(this.model.get('children')) .then((views: DOMWidgetView[]) => { // Notify all children that their sizes may have changed. views.forEach((view) => { MessageLoop.postMessage( view.luminoWidget, Widget.ResizeMessage.UnknownSize ); }); }); } update_box_style(): void { this.update_mapped_classes(BoxView.class_map, 'box_style'); } set_box_style(): void { this.set_mapped_classes(BoxView.class_map, 'box_style'); } add_child_model(model: WidgetModel): Promise { // we insert a dummy element so the order is preserved when we add // the rendered content later. const dummy = new Widget(); this.luminoWidget.addWidget(dummy); return this.create_child_view(model) .then((view: DOMWidgetView) => { // replace the dummy widget with the new one. const i = ArrayExt.firstIndexOf(this.luminoWidget.widgets, dummy); this.luminoWidget.insertWidget(i, view.luminoWidget); dummy.dispose(); return view; }) .catch(reject('Could not add child view to box', true)); } remove(): void { this.children_views = null; super.remove(); } children_views: ViewList | null; luminoWidget: JupyterLuminoPanelWidget; static class_map = { success: ['alert', 'alert-success'], info: ['alert', 'alert-info'], warning: ['alert', 'alert-warning'], danger: ['alert', 'alert-danger'], }; } export class HBoxView extends BoxView { /** * Public constructor */ initialize(parameters: WidgetView.IInitializeParameters): void { super.initialize(parameters); this.luminoWidget.addClass('widget-hbox'); } } export class VBoxView extends BoxView { /** * Public constructor */ initialize(parameters: WidgetView.IInitializeParameters): void { super.initialize(parameters); this.luminoWidget.addClass('widget-vbox'); } } export class GridBoxView extends BoxView { /** * Public constructor */ initialize(parameters: WidgetView.IInitializeParameters): void { super.initialize(parameters); this.luminoWidget.addClass('widget-gridbox'); // display needn't be set to flex and grid this.luminoWidget.removeClass('widget-box'); } } export class GridBoxModel extends BoxModel { defaults(): Backbone.ObjectHash { return { ...super.defaults(), _view_name: 'GridBoxView', _model_name: 'GridBoxModel', }; } } ipywidgets-8.1.1/packages/controls/src/widget_button.ts000066400000000000000000000104051450026722000233450ustar00rootroot00000000000000// Copyright (c) Jupyter Development Team. // Distributed under the terms of the Modified BSD License. import { DOMWidgetView, StyleModel } from '@jupyter-widgets/base'; import { CoreDOMWidgetModel } from './widget_core'; import { JUPYTER_CONTROLS_VERSION } from './version'; export class ButtonStyleModel extends StyleModel { defaults(): Backbone.ObjectHash { return { ...super.defaults(), _model_name: 'ButtonStyleModel', _model_module: '@jupyter-widgets/controls', _model_module_version: JUPYTER_CONTROLS_VERSION, }; } public static styleProperties = { button_color: { selector: '', attribute: 'background-color', default: null as any, }, font_family: { selector: '', attribute: 'font-family', default: '', }, font_size: { selector: '', attribute: 'font-size', default: '', }, font_style: { selector: '', attribute: 'font-style', default: '', }, font_variant: { selector: '', attribute: 'font-variant', default: '', }, font_weight: { selector: '', attribute: 'font-weight', default: '', }, text_color: { selector: '', attribute: 'color', default: '', }, text_decoration: { selector: '', attribute: 'text-decoration', default: '', }, }; } export class ButtonModel extends CoreDOMWidgetModel { defaults(): Backbone.ObjectHash { return { ...super.defaults(), description: '', tooltip: '', disabled: false, icon: '', button_style: '', _view_name: 'ButtonView', _model_name: 'ButtonModel', style: null, }; } } export class ButtonView extends DOMWidgetView { /** * Called when view is rendered. */ render(): void { super.render(); this.el.classList.add('jupyter-widgets'); this.el.classList.add('jupyter-button'); this.el.classList.add('widget-button'); this.listenTo(this.model, 'change:button_style', this.update_button_style); this.listenTo(this.model, 'change:tabbable', this.updateTabindex); this.set_button_style(); this.update(); // Set defaults. } /** * Update the contents of this view * * Called when the model is changed. The model may have been * changed by another view or by a state update from the back-end. */ update(): void { this.el.disabled = this.model.get('disabled'); this.updateTabindex(); const tooltip = this.model.get('tooltip'); const description = this.model.get('description'); const icon = this.model.get('icon'); this.el.setAttribute('title', tooltip ?? description); if (description.length || icon.length) { this.el.textContent = ''; if (icon.length) { const i = document.createElement('i'); i.classList.add('fa'); i.classList.add( ...icon .split(/[\s]+/) .filter(Boolean) .map((v: string) => `fa-${v}`) ); if (description.length === 0) { i.classList.add('center'); } this.el.appendChild(i); } this.el.appendChild(document.createTextNode(description)); } return super.update(); } update_button_style(): void { this.update_mapped_classes(ButtonView.class_map, 'button_style'); } set_button_style(): void { this.set_mapped_classes(ButtonView.class_map, 'button_style'); } /** * Dictionary of events and handlers */ events(): { [e: string]: string } { // TODO: return typing not needed in Typescript later than 1.8.x // See http://stackoverflow.com/questions/22077023/why-cant-i-indirectly-return-an-object-literal-to-satisfy-an-index-signature-re and https://github.com/Microsoft/TypeScript/pull/7029 return { click: '_handle_click' }; } /** * Handles when the button is clicked. */ _handle_click(event: MouseEvent): void { event.preventDefault(); this.send({ event: 'click' }); } preinitialize() { // Must set this before the initialize method creates the element this.tagName = 'button'; } el: HTMLButtonElement; static class_map = { primary: ['mod-primary'], success: ['mod-success'], info: ['mod-info'], warning: ['mod-warning'], danger: ['mod-danger'], }; } ipywidgets-8.1.1/packages/controls/src/widget_color.ts000066400000000000000000000166531450026722000231630ustar00rootroot00000000000000// Copyright (c) Jupyter Development Team. // Distributed under the terms of the Modified BSD License. import { CoreDescriptionModel } from './widget_core'; import { DescriptionView } from './widget_description'; import { uuid } from './utils'; const named_colors: { [key: string]: string } = { aliceblue: '#f0f8ff', antiquewhite: '#faebd7', aqua: '#00ffff', aquamarine: '#7fffd4', azure: '#f0ffff', beige: '#f5f5dc', bisque: '#ffe4c4', black: '#000000', blanchedalmond: '#ffebcd', blue: '#0000ff', blueviolet: '#8a2be2', brown: '#a52a2a', burlywood: '#deb887', cadetblue: '#5f9ea0', chartreuse: '#7fff00', chocolate: '#d2691e', coral: '#ff7f50', cornflowerblue: '#6495ed', cornsilk: '#fff8dc', crimson: '#dc143c', cyan: '#00ffff', darkblue: '#00008b', darkcyan: '#008b8b', darkgoldenrod: '#b8860b', darkgray: '#a9a9a9', darkgrey: '#a9a9a9', darkgreen: '#006400', darkkhaki: '#bdb76b', darkmagenta: '#8b008b', darkolivegreen: '#556b2f', darkorange: '#ff8c00', darkorchid: '#9932cc', darkred: '#8b0000', darksalmon: '#e9967a', darkseagreen: '#8fbc8f', darkslateblue: '#483d8b', darkslategray: '#2f4f4f', darkslategrey: '#2f4f4f', darkturquoise: '#00ced1', darkviolet: '#9400d3', deeppink: '#ff1493', deepskyblue: '#00bfff', dimgray: '#696969', dimgrey: '#696969', dodgerblue: '#1e90ff', firebrick: '#b22222', floralwhite: '#fffaf0', forestgreen: '#228b22', fuchsia: '#ff00ff', gainsboro: '#dcdcdc', ghostwhite: '#f8f8ff', gold: '#ffd700', goldenrod: '#daa520', gray: '#808080', grey: '#808080', green: '#008000', greenyellow: '#adff2f', honeydew: '#f0fff0', hotpink: '#ff69b4', indianred: '#cd5c5c', indigo: '#4b0082', ivory: '#fffff0', khaki: '#f0e68c', lavender: '#e6e6fa', lavenderblush: '#fff0f5', lawngreen: '#7cfc00', lemonchiffon: '#fffacd', lightblue: '#add8e6', lightcoral: '#f08080', lightcyan: '#e0ffff', lightgoldenrodyellow: '#fafad2', lightgreen: '#90ee90', lightgray: '#d3d3d3', lightgrey: '#d3d3d3', lightpink: '#ffb6c1', lightsalmon: '#ffa07a', lightseagreen: '#20b2aa', lightskyblue: '#87cefa', lightslategray: '#778899', lightslategrey: '#778899', lightsteelblue: '#b0c4de', lightyellow: '#ffffe0', lime: '#00ff00', limegreen: '#32cd32', linen: '#faf0e6', magenta: '#ff00ff', maroon: '#800000', mediumaquamarine: '#66cdaa', mediumblue: '#0000cd', mediumorchid: '#ba55d3', mediumpurple: '#9370db', mediumseagreen: '#3cb371', mediumslateblue: '#7b68ee', mediumspringgreen: '#00fa9a', mediumturquoise: '#48d1cc', mediumvioletred: '#c71585', midnightblue: '#191970', mintcream: '#f5fffa', mistyrose: '#ffe4e1', moccasin: '#ffe4b5', navajowhite: '#ffdead', navy: '#000080', oldlace: '#fdf5e6', olive: '#808000', olivedrab: '#6b8e23', orange: '#ffa500', orangered: '#ff4500', orchid: '#da70d6', palegoldenrod: '#eee8aa', palegreen: '#98fb98', paleturquoise: '#afeeee', palevioletred: '#db7093', papayawhip: '#ffefd5', peachpuff: '#ffdab9', peru: '#cd853f', pink: '#ffc0cb', plum: '#dda0dd', powderblue: '#b0e0e6', purple: '#800080', red: '#ff0000', rosybrown: '#bc8f8f', royalblue: '#4169e1', saddlebrown: '#8b4513', salmon: '#fa8072', sandybrown: '#f4a460', seagreen: '#2e8b57', seashell: '#fff5ee', sienna: '#a0522d', silver: '#c0c0c0', skyblue: '#87ceeb', slateblue: '#6a5acd', slategray: '#708090', slategrey: '#708090', snow: '#fffafa', springgreen: '#00ff7f', steelblue: '#4682b4', tan: '#d2b48c', teal: '#008080', thistle: '#d8bfd8', tomato: '#ff6347', turquoise: '#40e0d0', violet: '#ee82ee', wheat: '#f5deb3', white: '#ffffff', whitesmoke: '#f5f5f5', yellow: '#ffff00', yellowgreen: '#9acd32', }; export class ColorPickerModel extends CoreDescriptionModel { defaults(): Backbone.ObjectHash { return { ...super.defaults(), value: 'black', concise: false, _model_name: 'ColorPickerModel', _view_name: 'ColorPickerView', }; } } export class ColorPickerView extends DescriptionView { render(): void { super.render(); this.el.classList.add('jupyter-widgets'); this.el.classList.add('widget-inline-hbox'); this.el.classList.add('widget-colorpicker'); this._color_container = document.createElement('div'); this._color_container.className = 'widget-inline-hbox widget-colorpicker-input'; this.el.appendChild(this._color_container); this._textbox = document.createElement('input'); this._textbox.setAttribute('type', 'text'); this._textbox.id = this.label.htmlFor = uuid(); this._color_container.appendChild(this._textbox); this._textbox.value = this.model.get('value'); this._colorpicker = document.createElement('input'); this._colorpicker.setAttribute('type', 'color'); this._color_container.appendChild(this._colorpicker); this.listenTo(this.model, 'change:value', this._update_value); this.listenTo(this.model, 'change:concise', this._update_concise); this._update_concise(); this._update_value(); this.update(); } /** * Update the contents of this view * * Called when the model is changed. The model may have been * changed by another view or by a state update from the back-end. */ update(options?: any): void { if (options === undefined || options.updated_view != this) { const disabled = this.model.get('disabled'); this._textbox.disabled = disabled; this._colorpicker.disabled = disabled; } return super.update(); } events(): { [e: string]: string } { // Typescript doesn't understand that these functions are called, so we // specifically use them here so it knows they are being used. void this._picker_change; void this._text_change; return { 'change [type="color"]': '_picker_change', 'change [type="text"]': '_text_change', }; } private _update_value(): void { const value = this.model.get('value'); this._colorpicker.value = color2hex(value); this._textbox.value = value; } private _update_concise(): void { const concise = this.model.get('concise'); if (concise) { this.el.classList.add('concise'); this._textbox.style.display = 'none'; } else { this.el.classList.remove('concise'); this._textbox.style.display = ''; } } private _picker_change(): void { this.model.set('value', this._colorpicker.value); this.touch(); } private _text_change(): void { const value = this._validate_color( this._textbox.value, this.model.get('value') ); this.model.set('value', value); this.touch(); } private _validate_color(color: string, fallback: any): any { return color.match(/#[a-fA-F0-9]{3}(?:[a-fA-F0-9]{3})?$/) || named_colors[color.toLowerCase()] ? color : fallback; } private _color_container: HTMLDivElement; private _textbox: HTMLInputElement; private _colorpicker: HTMLInputElement; } /* * From a valid html color (named color, 6-digits or 3-digits hex format) * return a 6-digits hexadecimal color #rrggbb. */ function color2hex(color: string): string { return named_colors[color.toLowerCase()] || rgb3_to_rgb6(color); } function rgb3_to_rgb6(rgb: string): string { if (rgb.length === 7) { return rgb; } else { return ( '#' + rgb.charAt(1) + rgb.charAt(1) + rgb.charAt(2) + rgb.charAt(2) + rgb.charAt(3) + rgb.charAt(3) ); } } ipywidgets-8.1.1/packages/controls/src/widget_controller.ts000066400000000000000000000305401450026722000242170ustar00rootroot00000000000000// Copyright (c) Jupyter Development Team. // Distributed under the terms of the Modified BSD License. import { CoreDOMWidgetModel } from './widget_core'; import { DOMWidgetView, unpack_models, ViewList, JupyterLuminoPanelWidget, reject, WidgetView, Dict, } from '@jupyter-widgets/base'; import { Widget, Panel } from '@lumino/widgets'; import { ArrayExt } from '@lumino/algorithm'; import * as utils from './utils'; import $ from 'jquery'; export class ControllerButtonModel extends CoreDOMWidgetModel { defaults(): Backbone.ObjectHash { return { ...super.defaults(), _model_name: 'ControllerButtonModel', _view_name: 'ControllerButtonView', value: 0.0, pressed: false, }; } } /** * Very simple view for a gamepad button. */ export class ControllerButtonView extends DOMWidgetView { render(): void { this.el.classList.add('jupyter-widgets'); this.el.classList.add('widget-controller-button'); this.el.style.width = 'fit-content'; this.support = document.createElement('div'); this.support.style.position = 'relative'; this.support.style.margin = '1px'; this.support.style.width = '16px'; this.support.style.height = '16px'; this.support.style.border = '1px solid black'; this.support.style.background = 'lightgray'; this.el.appendChild(this.support); this.bar = document.createElement('div'); this.bar.style.position = 'absolute'; this.bar.style.width = '100%'; this.bar.style.bottom = '0px'; this.bar.style.background = 'gray'; this.support.appendChild(this.bar); this.update(); this.label = document.createElement('div'); this.label.textContent = this.model.get('description'); this.label.style.textAlign = 'center'; this.el.appendChild(this.label); } update(): void { this.bar.style.height = 100 * this.model.get('value') + '%'; } support: HTMLDivElement; bar: HTMLDivElement; label: HTMLDivElement; } export class ControllerAxisModel extends CoreDOMWidgetModel { defaults(): Backbone.ObjectHash { return { ...super.defaults(), _model_name: 'ControllerAxisModel', _view_name: 'ControllerAxisView', value: 0.0, }; } } /** * Very simple view for a gamepad axis. */ export class ControllerAxisView extends DOMWidgetView { render(): void { this.el.classList.add('jupyter-widgets'); this.el.classList.add('widget-controller-axis'); this.el.style.width = '16px'; this.el.style.padding = '4px'; this.support = document.createElement('div'); this.support.style.position = 'relative'; this.support.style.margin = '1px'; this.support.style.width = '4px'; this.support.style.height = '64px'; this.support.style.border = '1px solid black'; this.support.style.background = 'lightgray'; this.bullet = document.createElement('div'); this.bullet.style.position = 'absolute'; this.bullet.style.margin = '-3px'; this.bullet.style.boxSizing = 'unset'; this.bullet.style.width = '10px'; this.bullet.style.height = '10px'; this.bullet.style.background = 'gray'; this.label = document.createElement('div'); this.label.textContent = this.model.get('description'); this.label.style.textAlign = 'center'; this.support.appendChild(this.bullet); this.el.appendChild(this.support); this.el.appendChild(this.label); this.update(); } update(): void { this.bullet.style.top = 50 * (this.model.get('value') + 1) + '%'; } support: HTMLDivElement; bullet: HTMLDivElement; label: HTMLDivElement; } export class ControllerModel extends CoreDOMWidgetModel { static serializers = { ...CoreDOMWidgetModel.serializers, buttons: { deserialize: unpack_models }, axes: { deserialize: unpack_models }, }; defaults(): Backbone.ObjectHash { return { ...super.defaults(), _model_name: 'ControllerModel', _view_name: 'ControllerView', index: 0, name: '', mapping: '', connected: false, timestamp: 0, buttons: [], axes: [], }; } initialize(attributes: Backbone.ObjectHash, options: any): void { super.initialize(attributes, options); if (navigator.getGamepads === void 0) { // Checks if the browser supports the gamepad API this.readout = 'This browser does not support gamepads.'; console.error(this.readout); } else { // Start the wait loop, and listen to updates of the only // user-provided attribute, the gamepad index. this.readout = 'Connect gamepad and press any button.'; if (this.get('connected')) { // No need to re-create Button and Axis widgets, re-use // the models provided by the backend which may already // be wired to other things. this.update_loop(); } else { // Wait for a gamepad to be connected. this.wait_loop(); } } } /** * Waits for a gamepad to be connected at the provided index. * Once one is connected, it will start the update loop, which * populates the update of axes and button values. */ wait_loop(): void { const index = this.get('index'); const pad = navigator.getGamepads()[index]; if (pad) { this.setup(pad).then((controls) => { this.set(controls); this.save_changes(); window.requestAnimationFrame(this.update_loop.bind(this)); }); } else { window.requestAnimationFrame(this.wait_loop.bind(this)); } } /** * Given a native gamepad object, returns a promise for a dictionary of * controls, of the form * { * buttons: list of Button models, * axes: list of Axis models, * } */ setup(pad: Gamepad): Promise> { // Set up the main gamepad attributes this.set({ name: pad.id, mapping: pad.mapping, connected: pad.connected, timestamp: pad.timestamp, }); // Create buttons and axes. When done, start the update loop return utils.resolvePromisesDict({ buttons: Promise.all( pad.buttons.map((btn, index) => { return this._create_button_model(index); }) ), axes: Promise.all( pad.axes.map((axis, index) => { return this._create_axis_model(index); }) ), }); } /** * Update axes and buttons values, until the gamepad is disconnected. * When the gamepad is disconnected, this.reset_gamepad is called. */ update_loop(): void { const index = this.get('index'); const id = this.get('name'); const pad = navigator.getGamepads()[index]; if (pad && index === pad.index && id === pad.id) { this.set({ timestamp: pad.timestamp, connected: pad.connected, }); this.save_changes(); this.get('buttons').forEach(function ( model: ControllerButtonModel, index: number ) { model.set({ value: pad!.buttons[index].value, pressed: pad!.buttons[index].pressed, }); model.save_changes(); }); this.get('axes').forEach(function ( model: ControllerAxisModel, index: number ) { model.set('value', pad!.axes[index]); model.save_changes(); }); window.requestAnimationFrame(this.update_loop.bind(this)); } else { this.reset_gamepad(); } } /** * Resets the gamepad attributes, and start the wait_loop. */ reset_gamepad(): void { this.get('buttons').forEach(function (button: ControllerButtonModel) { button.close(); }); this.get('axes').forEach(function (axis: ControllerAxisModel) { axis.close(); }); this.set({ name: '', mapping: '', connected: false, timestamp: 0.0, buttons: [], axes: [], }); this.save_changes(); window.requestAnimationFrame(this.wait_loop.bind(this)); } /** * Creates a gamepad button widget. */ _create_button_model(index: number): Promise { return this.widget_manager .new_widget({ model_name: 'ControllerButtonModel', model_module: '@jupyter-widgets/controls', model_module_version: this.get('_model_module_version'), view_name: 'ControllerButtonView', view_module: '@jupyter-widgets/controls', view_module_version: this.get('_view_module_version'), }) .then(function (model) { model.set('description', index); return model; }); } /** * Creates a gamepad axis widget. */ _create_axis_model(index: number): Promise { return this.widget_manager .new_widget({ model_name: 'ControllerAxisModel', model_module: '@jupyter-widgets/controls', model_module_version: this.get('_model_module_version'), view_name: 'ControllerAxisView', view_module: '@jupyter-widgets/controls', view_module_version: this.get('_view_module_version'), }) .then(function (model) { model.set('description', index); return model; }); } readout: string; } /** * A simple view for a gamepad. */ export class ControllerView extends DOMWidgetView { _createElement(tagName: string): HTMLElement { this.luminoWidget = new JupyterLuminoPanelWidget({ view: this }); return this.luminoWidget.node; } _setElement(el: HTMLElement): void { if (this.el || el !== this.luminoWidget.node) { // Boxes don't allow setting the element beyond the initial creation. throw new Error('Cannot reset the DOM element.'); } this.el = this.luminoWidget.node; this.$el = $(this.luminoWidget.node); } initialize(parameters: WidgetView.IInitializeParameters): void { super.initialize(parameters); this.button_views = new ViewList(this.add_button, null, this); this.listenTo(this.model, 'change:buttons', (model, value) => { this.button_views.update(value); }); this.axis_views = new ViewList(this.add_axis, null, this); this.listenTo(this.model, 'change:axes', (model, value) => { this.axis_views.update(value); }); this.listenTo(this.model, 'change:name', this.update_label); } render(): void { this.el.classList.add('jupyter-widgets'); this.el.classList.add('widget-controller'); this.label = document.createElement('div'); this.el.appendChild(this.label); this.axis_box = new Panel(); this.axis_box.node.style.display = 'flex'; this.luminoWidget.addWidget(this.axis_box); this.button_box = new Panel(); this.button_box.node.style.display = 'flex'; this.luminoWidget.addWidget(this.button_box); this.button_views.update(this.model.get('buttons')); this.axis_views.update(this.model.get('axes')); this.update_label(); } update_label(): void { this.label.textContent = this.model.get('name') || this.model.readout; } add_button(model: ControllerButtonModel): Promise { // we insert a dummy element so the order is preserved when we add // the rendered content later. const dummy = new Widget(); this.button_box.addWidget(dummy); return this.create_child_view(model) .then((view) => { // replace the dummy widget with the new one. const i = ArrayExt.firstIndexOf(this.button_box.widgets, dummy); this.button_box.insertWidget(i, view.luminoWidget); dummy.dispose(); return view; }) .catch(reject('Could not add child button view to controller', true)); } add_axis(model: ControllerAxisModel): Promise { // we insert a dummy element so the order is preserved when we add // the rendered content later. const dummy = new Widget(); this.axis_box.addWidget(dummy); return this.create_child_view(model) .then((view) => { // replace the dummy widget with the new one. const i = ArrayExt.firstIndexOf(this.axis_box.widgets, dummy); this.axis_box.insertWidget(i, view.luminoWidget); dummy.dispose(); return view; }) .catch(reject('Could not add child axis view to controller', true)); } remove(): void { super.remove(); this.button_views.remove(); this.axis_views.remove(); } button_views: ViewList; axis_views: ViewList; label: HTMLDivElement; axis_box: Panel; button_box: Panel; model: ControllerModel; luminoWidget: JupyterLuminoPanelWidget; } ipywidgets-8.1.1/packages/controls/src/widget_core.ts000066400000000000000000000031211450026722000227570ustar00rootroot00000000000000// Copyright (c) Jupyter Development Team. // Distributed under the terms of the Modified BSD License. // widget_core implements some common patterns for the core widget collection // that are not to be used directly by third-party widget authors. import { DOMWidgetModel, WidgetModel } from '@jupyter-widgets/base'; import { DescriptionModel } from './widget_description'; import { JUPYTER_CONTROLS_VERSION } from './version'; export class CoreWidgetModel extends WidgetModel { defaults(): Backbone.ObjectHash { return { ...super.defaults(), _model_name: 'CoreWidgetModel', _view_module: '@jupyter-widgets/controls', _model_module: '@jupyter-widgets/controls', _view_module_version: JUPYTER_CONTROLS_VERSION, _model_module_version: JUPYTER_CONTROLS_VERSION, }; } } export class CoreDOMWidgetModel extends DOMWidgetModel { defaults(): Backbone.ObjectHash { return { ...super.defaults(), _model_name: 'CoreDOMWidgetModel', _view_module: '@jupyter-widgets/controls', _model_module: '@jupyter-widgets/controls', _view_module_version: JUPYTER_CONTROLS_VERSION, _model_module_version: JUPYTER_CONTROLS_VERSION, }; } } export class CoreDescriptionModel extends DescriptionModel { defaults(): Backbone.ObjectHash { return { ...super.defaults(), _model_name: 'CoreDescriptionModel', _view_module: '@jupyter-widgets/controls', _model_module: '@jupyter-widgets/controls', _view_module_version: JUPYTER_CONTROLS_VERSION, _model_module_version: JUPYTER_CONTROLS_VERSION, }; } } ipywidgets-8.1.1/packages/controls/src/widget_date.ts000066400000000000000000000062171450026722000227550ustar00rootroot00000000000000// Copyright (c) Jupyter Development Team. // Distributed under the terms of the Modified BSD License. import { DescriptionView } from './widget_description'; import { CoreDescriptionModel } from './widget_core'; import { uuid } from './utils'; export interface ISerializedDate { /** * Full year */ year: number; /** * Zero-based month (0 means January, 11 means December) */ month: number; /** * Day of month */ date: number; } export function serialize_date(value: Date | null): ISerializedDate | null { if (value === null) { return null; } else { return { year: value.getUTCFullYear(), month: value.getUTCMonth(), date: value.getUTCDate(), }; } } export function deserialize_date(value: ISerializedDate | null): Date | null { if (value === null) { return null; } else { const date = new Date(); date.setUTCFullYear(value.year, value.month, value.date); date.setUTCHours(0, 0, 0, 0); return date; } } export class DatePickerModel extends CoreDescriptionModel { static serializers = { ...CoreDescriptionModel.serializers, value: { serialize: serialize_date, deserialize: deserialize_date, }, }; defaults(): Backbone.ObjectHash { return { ...super.defaults(), value: null, _model_name: 'DatePickerModel', _view_name: 'DatePickerView', }; } } export class DatePickerView extends DescriptionView { render(): void { super.render(); this.el.classList.add('jupyter-widgets'); this.el.classList.add('widget-inline-hbox'); this.el.classList.add('widget-datepicker'); this._datepicker = document.createElement('input'); this._datepicker.setAttribute('type', 'date'); this._datepicker.id = this.label.htmlFor = uuid(); this.el.appendChild(this._datepicker); this.listenTo(this.model, 'change:value', this._update_value); this._update_value(); this.update(); } /** * Update the contents of this view * * Called when the model is changed. The model may have been * changed by another view or by a state update from the back-end. */ update(options?: any): void { if (options === undefined || options.updated_view !== this) { this._datepicker.disabled = this.model.get('disabled'); } return super.update(); } events(): { [e: string]: string } { // Typescript doesn't understand that these functions are called, so we // specifically use them here so it knows they are being used. void this._picker_change; void this._picker_focusout; return { 'change [type="date"]': '_picker_change', 'focusout [type="date"]': '_picker_focusout', }; } private _update_value(): void { const value = this.model.get('value'); this._datepicker.valueAsDate = value; } private _picker_change(): void { if (!this._datepicker.validity.badInput) { this.model.set('value', this._datepicker.valueAsDate); this.touch(); } } private _picker_focusout(): void { if (this._datepicker.validity.badInput) { this.model.set('value', null); this.touch(); } } private _datepicker: HTMLInputElement; } ipywidgets-8.1.1/packages/controls/src/widget_datetime.ts000066400000000000000000000232031450026722000236260ustar00rootroot00000000000000// Copyright (c) Vidar Tonaas Fauske // Distributed under the terms of the Modified BSD License. import { ISerializers } from '@jupyter-widgets/base'; import { uuid } from './utils'; import { DescriptionView } from './widget_description'; import { CoreDescriptionModel } from './widget_core'; import { serialize_time } from './widget_time'; export interface ISerializedDatetime { /** * UTC full year */ year: number; /** * UTC zero-based month (0 means January, 11 means December) */ month: number; /** * UTC day of month */ date: number; /** * UTC hour (24H format) */ hours: number; /** * UTC minutes */ minutes: number; /** * UTC seconds */ seconds: number; /** * UTC millisconds */ milliseconds: number; } export function serialize_datetime(value: Date): ISerializedDatetime | null { if (value === null) { return null; } else { return { year: value.getUTCFullYear(), month: value.getUTCMonth(), date: value.getUTCDate(), hours: value.getUTCHours(), minutes: value.getUTCMinutes(), seconds: value.getUTCSeconds(), milliseconds: value.getUTCMilliseconds(), }; } } export function deserialize_datetime(value: ISerializedDatetime): Date | null { if (value === null) { return null; } else { const date = new Date(); date.setUTCFullYear(value.year, value.month, value.date); date.setUTCHours( value.hours, value.minutes, value.seconds, value.milliseconds ); return date; } } export const datetime_serializers = { serialize: serialize_datetime, deserialize: deserialize_datetime, }; export class DatetimeModel extends CoreDescriptionModel { defaults(): Backbone.ObjectHash { return { ...super.defaults(), _model_name: 'DatetimeModel', _view_name: 'DatetimeView', value: null, disabled: false, min: null, max: null, }; } static serializers: ISerializers = { ...CoreDescriptionModel.serializers, value: datetime_serializers, min: datetime_serializers, max: datetime_serializers, }; } export class DatetimeView extends DescriptionView { render(): void { super.render(); this.el.classList.add('jupyter-widgets'); this.el.classList.add('widget-inline-hbox'); this.el.classList.add('widget-datetimepicker'); const test = document.createElement('input'); test.type = 'datetime-local'; if (test.type === 'text') { // No native support, split into date and time input: this._datepicker = document.createElement('input'); this._datepicker.setAttribute('type', 'date'); this._datepicker.id = this.label.htmlFor = uuid(); this._timepicker = document.createElement('input'); this._timepicker.setAttribute('type', 'time'); this._timepicker.id = uuid(); this.el.appendChild(this._datepicker); this.el.appendChild(this._timepicker); } else { this._datetimepicker = test; this._datetimepicker.id = this.label.htmlFor = uuid(); this.el.appendChild(this._datetimepicker); } this.listenTo(this.model, 'change:value', this._update_value); this.listenTo(this.model, 'change', this.update2); this._update_value(); this.update2(); } /** * Update the contents of this view * * Called when the model is changed. The model may have been * changed by another view or by a state update from the back-end. */ update2(model?: Backbone.Model, options?: any): void { if (options === undefined || options.updated_view !== this) { const min = this.model.get('min') as Date | null; const max = this.model.get('max') as Date | null; if (this._datetimepicker) { this._datetimepicker.disabled = this.model.get('disabled'); this._datetimepicker!.min = Private.dt_as_dt_string(min); this._datetimepicker!.max = Private.dt_as_dt_string(max); } else { this._datepicker!.disabled = this.model.get('disabled'); this._datepicker!.min = Private.dt_as_date_string(min); this._datepicker!.max = Private.dt_as_date_string(max); this._timepicker!.disabled = this.model.get('disabled'); // Don't support min/max time here. // It could be added by enabling min time if value is min date, // and enabling max time if value is max date, but leave as // TODO for now. } } } events(): { [e: string]: string } { // Typescript doesn't understand that these functions are called, so we // specifically use them here so it knows they are being used. void this._picker_change; void this._picker_focusout; return { 'change [type="date"]': '_picker_change', 'change [type="time"]': '_picker_change', 'change [type="datetime-local"]': '_picker_change', 'focusout [type="date"]': '_picker_focusout', 'focusout [type="datetime-local"]': '_picker_focusout', 'focusout [type="time"]': '_picker_focusout', }; } private _update_value( model?: Backbone.Model, newValue?: any, options?: any ): void { if (options === undefined || options.updated_view !== this) { const value = this.model.get('value') as Date | null; if (this._datetimepicker) { this._datetimepicker.value = Private.dt_as_dt_string(value); } else { this._datepicker!.valueAsDate = value; this._timepicker!.value = Private.dt_as_time_string(value); } } } private _picker_change(): void { if (this._datetimepicker) { if (!this._datetimepicker.validity.badInput) { const v = this._datetimepicker.value; let date = v ? new Date(v) : null; if (date && isNaN(date.valueOf())) { date = null; } this.model.set('value', date, { updated_view: this }); this.touch(); } } else { if ( !this._datepicker!.validity.badInput && !this._timepicker!.validity.badInput ) { const date = this._datepicker!.valueAsDate; const time = serialize_time(this._timepicker!.value); if (date !== null && time !== null) { // * Use local time * date.setHours( time.hours, time.minutes, time.seconds, time.milliseconds ); } this.model.set('value', time !== null && date, { updated_view: this }); this.touch(); } } } private _picker_focusout(): void { const pickers = [this._datetimepicker, this._datepicker, this._timepicker]; if (pickers.some((p) => p && p.validity.badInput)) { this.model.set('value', null); this.touch(); } } private _datetimepicker: HTMLInputElement | undefined; private _timepicker: HTMLInputElement | undefined; private _datepicker: HTMLInputElement | undefined; } namespace Private { // eslint-disable-next-line no-inner-declarations export function dt_as_dt_string(value: Date | null): string { if (value === null) { return ''; } // Replicate `toISOString()` but in local time zone: const parts = []; parts.push(`${value.getFullYear().toString().padStart(4, '0')}`); parts.push(`-${(value.getMonth() + 1).toString().padStart(2, '0')}`); parts.push(`-${value.getDate().toString().padStart(2, '0')}`); parts.push(`T${value.getHours().toString().padStart(2, '0')}`); parts.push(`:${value.getMinutes().toString().padStart(2, '0')}`); if (value.getSeconds() > 0 || value.getMilliseconds() > 0) { parts.push(`:${value.getSeconds().toString().padStart(2, '0')}`); if (value.getMilliseconds() > 0) { parts.push(`.${value.getMilliseconds().toString().padStart(3, '0')}`); } } return parts.join(''); } // eslint-disable-next-line no-inner-declarations export function dt_as_date_string(value: Date | null): string { return value ? dt_as_dt_string(value).split('T', 2)[0] : ''; } // eslint-disable-next-line no-inner-declarations export function dt_as_time_string(value: Date | null): string { return value ? dt_as_dt_string(value).split('T', 2)[1] : ''; } } export interface ISerializedNaiveDatetime { /** * full year */ year: number; /** * zero-based month (0 means January, 11 means December) */ month: number; /** * day of month */ date: number; /** * hour (24H format) */ hours: number; /** * minutes */ minutes: number; /** * seconds */ seconds: number; /** * millisconds */ milliseconds: number; } export function serialize_naive( value: Date | null ): ISerializedNaiveDatetime | null { if (value === null) { return null; } else { return { year: value.getFullYear(), month: value.getMonth(), date: value.getDate(), hours: value.getHours(), minutes: value.getMinutes(), seconds: value.getSeconds(), milliseconds: value.getMilliseconds(), }; } } export function deserialize_naive( value: ISerializedNaiveDatetime ): Date | null { if (value === null) { return null; } else { const date = new Date(); date.setFullYear(value.year, value.month, value.date); date.setHours( value.hours, value.minutes, value.seconds, value.milliseconds ); return date; } } export const naive_serializers = { serialize: serialize_naive, deserialize: deserialize_naive, }; export class NaiveDatetimeModel extends DatetimeModel { defaults(): Backbone.ObjectHash { return { ...super.defaults(), _model_name: 'NaiveDatetimeModel' }; } static serializers: ISerializers = { ...CoreDescriptionModel.serializers, value: naive_serializers, min: naive_serializers, max: naive_serializers, }; } ipywidgets-8.1.1/packages/controls/src/widget_description.ts000066400000000000000000000055031450026722000243600ustar00rootroot00000000000000// Copyright (c) Jupyter Development Team. // Distributed under the terms of the Modified BSD License. import { DOMWidgetModel, DOMWidgetView, StyleModel, } from '@jupyter-widgets/base'; import { typeset } from './utils'; import { JUPYTER_CONTROLS_VERSION } from './version'; export class DescriptionStyleModel extends StyleModel { defaults(): Backbone.ObjectHash { return { ...super.defaults(), _model_name: 'DescriptionStyleModel', _model_module: '@jupyter-widgets/controls', _model_module_version: JUPYTER_CONTROLS_VERSION, }; } public static styleProperties = { description_width: { selector: '.widget-label', attribute: 'width', default: null as any, }, }; } export class DescriptionModel extends DOMWidgetModel { defaults(): Backbone.ObjectHash { return { ...super.defaults(), _model_name: 'DescriptionModel', _view_name: 'DescriptionView', _view_module: '@jupyter-widgets/controls', _model_module: '@jupyter-widgets/controls', _view_module_version: JUPYTER_CONTROLS_VERSION, _model_module_version: JUPYTER_CONTROLS_VERSION, description: '', description_allow_html: false, }; } } export class DescriptionView extends DOMWidgetView { render(): void { this.label = document.createElement('label'); this.el.appendChild(this.label); this.label.className = 'widget-label'; this.label.style.display = 'none'; this.listenTo(this.model, 'change:description', this.updateDescription); this.listenTo( this.model, 'change:description_allow_html', this.updateDescription ); this.listenTo(this.model, 'change:tabbable', this.updateTabindex); this.updateDescription(); this.updateTabindex(); this.updateTooltip(); } typeset(element: HTMLElement, text?: string): void { this.displayed.then(() => typeset(element, text)); } updateDescription(): void { const description = this.model.get('description'); if (description.length === 0) { this.label.style.display = 'none'; } else { if (this.model.get('description_allow_html')) { this.label.innerHTML = this.model.widget_manager.inline_sanitize(description); } else { this.label.textContent = description; } this.typeset(this.label); this.label.style.display = ''; } } updateTooltip(): void { if (!this.label) return; this.label.title = this.model.get('tooltip'); } label: HTMLLabelElement; } /** * For backwards compatibility with jupyter-js-widgets 2.x. * * Use DescriptionModel instead. */ export class LabeledDOMWidgetModel extends DescriptionModel {} /** * For backwards compatibility with jupyter-js-widgets 2.x. * * Use DescriptionView instead. */ export class LabeledDOMWidgetView extends DescriptionView {} ipywidgets-8.1.1/packages/controls/src/widget_float.ts000066400000000000000000000232471450026722000231470ustar00rootroot00000000000000// Copyright (c) Jupyter Development Team. // Distributed under the terms of the Modified BSD License. import { CoreDescriptionModel } from './widget_core'; import { BaseIntSliderView, IntRangeSliderView, IntSliderView, IntTextView, } from './widget_int'; import { format } from 'd3-format'; import noUiSlider from 'nouislider'; export class FloatModel extends CoreDescriptionModel { defaults(): Backbone.ObjectHash { return { ...super.defaults(), _model_name: 'FloatModel', value: 0, }; } } export class BoundedFloatModel extends FloatModel { defaults(): Backbone.ObjectHash { return { ...super.defaults(), _model_name: 'BoundedFloatModel', max: 100.0, min: 0.0, }; } } export class FloatSliderModel extends BoundedFloatModel { defaults(): Backbone.ObjectHash { return { ...super.defaults(), _model_name: 'FloatSliderModel', _view_name: 'FloatSliderView', step: 1.0, orientation: 'horizontal', _range: false, readout: true, readout_format: '.2f', slider_color: null, continuous_update: true, disabled: false, }; } initialize( attributes: any, options: { model_id: string; comm?: any; widget_manager: any } ): void { super.initialize(attributes, options); this.on('change:readout_format', this.update_readout_format, this); this.update_readout_format(); } update_readout_format(): void { this.readout_formatter = format(this.get('readout_format')); } readout_formatter: any; } export class FloatLogSliderModel extends BoundedFloatModel { defaults(): Backbone.ObjectHash { return { ...super.defaults(), _model_name: 'FloatLogSliderModel', _view_name: 'FloatLogSliderView', step: 0.1, orientation: 'horizontal', _range: false, readout: true, readout_format: '.3g', slider_color: null, continuous_update: true, disabled: false, base: 10, value: 1.0, min: 0, max: 4, }; } initialize( attributes: any, options: { model_id: string; comm: any; widget_manager: any } ): void { super.initialize(attributes, options); this.on('change:readout_format', this.update_readout_format, this); this.update_readout_format(); } update_readout_format(): void { this.readout_formatter = format(this.get('readout_format')); } readout_formatter: any; } export class FloatRangeSliderModel extends FloatSliderModel {} export class FloatSliderView extends IntSliderView { /** * Validate the value of the slider before sending it to the back-end * and applying it to the other views on the page. */ _validate_slide_value(x: any): any { return x; } _parse_value = parseFloat; } export class FloatLogSliderView extends BaseIntSliderView { update(options?: any): void { super.update(options); const value = this.model.get('value'); this.readout.textContent = this.valueToString(value); } /** * Convert from value to exponent * * @param value the widget value * @returns the log-value between the min/max exponents */ logCalc(value: number): number { const min = this.model.get('min'); const max = this.model.get('max'); const base = this.model.get('base'); let log_value = Math.log(value) / Math.log(base); if (log_value > max) { log_value = max; } else if (log_value < min) { log_value = min; } return log_value; } createSlider(): void { const orientation = this.model.get('orientation'); const behavior = this.model.get('behavior'); noUiSlider.create(this.$slider, { start: this.logCalc(this.model.get('value')), behaviour: behavior, range: { min: this.model.get('min'), max: this.model.get('max'), }, step: this.model.get('step') ?? undefined, animate: false, orientation: orientation, direction: orientation === 'horizontal' ? 'ltr' : 'rtl', format: { from: (value: string): number => Number(value), to: (value: number): number => value, }, }); // Using noUiSlider's 'update' and 'change' events. // See reference: https://refreshless.com/nouislider/events-callbacks/ this.$slider.noUiSlider.on('update', (values: any, handle: any) => { this.handleSliderUpdateEvent(values, handle); }); this.$slider.noUiSlider.on('change', (values: any, handle: any) => { this.handleSliderChangeEvent(values, handle); }); } /** * Write value to a string */ valueToString(value: number): string { const format = this.model.readout_formatter; return format(value); } /** * Parse value from a string */ stringToValue(text: string | null): number { return text === null ? NaN : this._parse_value(text); } /** * this handles the entry of text into the contentEditable label first, the * value is checked if it contains a parseable value then it is clamped * within the min-max range of the slider finally, the model is updated if * the value is to be changed * * if any of these conditions are not met, the text is reset */ handleTextChange(): void { let value = this.stringToValue(this.readout.textContent); const vmin = this.model.get('min'); const vmax = this.model.get('max'); const base = this.model.get('base'); if (isNaN(value)) { this.readout.textContent = this.valueToString(this.model.get('value')); } else { value = Math.max( Math.min(value, Math.pow(base, vmax)), Math.pow(base, vmin) ); if (value !== this.model.get('value')) { this.readout.textContent = this.valueToString(value); this.model.set('value', value); this.touch(); } else { this.readout.textContent = this.valueToString(this.model.get('value')); } } } /** * Called whilst the slider is dragged, tapped or moved by the arrow keys. */ handleSliderUpdateEvent(values: number[], handle: number): void { const base = this.model.get('base'); const actual_value = Math.pow(base, this._validate_slide_value(values[0])); this.readout.textContent = this.valueToString(actual_value); // Only persist the value while sliding if the continuous_update // trait is set to true. if (this.model.get('continuous_update')) { this.handleSliderChanged(values, handle); } } /** * Called when the slider handle is released after dragging, * or by tapping or moving by the arrow keys. */ handleSliderChangeEvent(values: number[], handle: number): void { const base = this.model.get('base'); const actual_value = Math.pow(base, this._validate_slide_value(values[0])); this.readout.textContent = this.valueToString(actual_value); this.handleSliderChanged(values, handle); } /** * Called when the slider value has changed. * * Calling model.set will trigger all of the other views of the * model to update. */ handleSliderChanged(values: number[], handle: number): void { if (this._updating_slider) { return; } const base = this.model.get('base'); const actual_value = Math.pow(base, this._validate_slide_value(values[0])); this.model.set('value', actual_value, { updated_view: this }); this.touch(); } updateSliderValue(model: any, value: any, options: any): void { if (options.updated_view === this) { return; } const log_value = this.logCalc(this.model.get('value')); this.$slider.noUiSlider.set(log_value); } updateSliderOptions(e: any): void { this.$slider.noUiSlider.updateOptions({ start: this.logCalc(this.model.get('value')), range: { min: this.model.get('min'), max: this.model.get('max'), }, step: this.model.get('step'), }); } _validate_slide_value(x: any): any { return x; } _parse_value = parseFloat; private _updating_slider: boolean; } export class FloatRangeSliderView extends IntRangeSliderView { /** * Validate the value of the slider before sending it to the back-end * and applying it to the other views on the page. */ _validate_slide_value(x: any): any { return x; } _parse_value = parseFloat; // matches: whitespace?, float, whitespace?, (hyphen, colon, or en-dash), whitespace?, float _range_regex = /^\s*([+-]?(?:\d*\.?\d+|\d+\.)(?:[eE][-:]?\d+)?)\s*[-:–]\s*([+-]?(?:\d*\.?\d+|\d+\.)(?:[eE][+-]?\d+)?)/; } export class FloatTextModel extends FloatModel { defaults(): Backbone.ObjectHash { return { ...super.defaults(), _model_name: 'FloatTextModel', _view_name: 'FloatTextView', disabled: false, continuous_update: false, }; } } export class BoundedFloatTextModel extends BoundedFloatModel { defaults(): Backbone.ObjectHash { return { ...super.defaults(), _model_name: 'BoundedFloatTextModel', _view_name: 'FloatTextView', disabled: false, continuous_update: false, step: 0.1, }; } } export class FloatTextView extends IntTextView { _parse_value = parseFloat; _default_step = 'any'; /** * Handle key press */ handleKeypress(e: KeyboardEvent): void { // Overwrite IntTextView's handleKeypress // which prevents decimal points. e.stopPropagation(); } /** * Handle key up */ handleKeyUp(e: KeyboardEvent): void { // Overwrite IntTextView's handleKeyUp // which prevents decimal points. } } export class FloatProgressModel extends BoundedFloatModel { defaults(): Backbone.ObjectHash { return { ...super.defaults(), _model_name: 'FloatProgressModel', _view_name: 'ProgressView', orientation: 'horizontal', bar_style: '', style: null, }; } } ipywidgets-8.1.1/packages/controls/src/widget_image.ts000066400000000000000000000045501450026722000231200ustar00rootroot00000000000000// Copyright (c) Jupyter Development Team. // Distributed under the terms of the Modified BSD License. import { DOMWidgetView } from '@jupyter-widgets/base'; import { CoreDOMWidgetModel } from './widget_core'; export class ImageModel extends CoreDOMWidgetModel { defaults(): Backbone.ObjectHash { return { ...super.defaults(), _model_name: 'ImageModel', _view_name: 'ImageView', format: 'png', width: '', height: '', value: new DataView(new ArrayBuffer(0)), }; } static serializers = { ...CoreDOMWidgetModel.serializers, value: { serialize: (value: any): DataView => { return new DataView(value.buffer.slice(0)); }, }, }; } export class ImageView extends DOMWidgetView { render(): void { /** * Called when view is rendered. */ super.render(); this.luminoWidget.addClass('jupyter-widgets'); this.luminoWidget.addClass('widget-image'); this.update(); // Set defaults. } update(): void { /** * Update the contents of this view * * Called when the model is changed. The model may have been * changed by another view or by a state update from the back-end. */ let url; const format = this.model.get('format'); const value = this.model.get('value'); if (format !== 'url') { const blob = new Blob([value], { type: `image/${this.model.get('format')}`, }); url = URL.createObjectURL(blob); } else { url = new TextDecoder('utf-8').decode(value.buffer); } // Clean up the old objectURL const oldurl = this.el.src; this.el.src = url; if (oldurl) { URL.revokeObjectURL(oldurl); } const width = this.model.get('width'); if (width !== undefined && width.length > 0) { this.el.setAttribute('width', width); } else { this.el.removeAttribute('width'); } const height = this.model.get('height'); if (height !== undefined && height.length > 0) { this.el.setAttribute('height', height); } else { this.el.removeAttribute('height'); } return super.update(); } remove(): void { if (this.el.src) { URL.revokeObjectURL(this.el.src); } super.remove(); } preinitialize() { // Must set this before the initialize method creates the element this.tagName = 'img'; } el: HTMLImageElement; } ipywidgets-8.1.1/packages/controls/src/widget_int.ts000066400000000000000000000676731450026722000226470ustar00rootroot00000000000000// Copyright (c) Jupyter Development Team. // Distributed under the terms of the Modified BSD License. import { CoreDescriptionModel } from './widget_core'; import { DescriptionStyleModel, DescriptionView } from './widget_description'; import { DOMWidgetView, WidgetView } from '@jupyter-widgets/base'; import { uuid } from './utils'; import { format } from 'd3-format'; import noUiSlider from 'nouislider'; export class IntModel extends CoreDescriptionModel { defaults(): Backbone.ObjectHash { return { ...super.defaults(), _model_name: 'IntModel', value: 0, }; } } export class BoundedIntModel extends IntModel { defaults(): Backbone.ObjectHash { return { ...super.defaults(), _model_name: 'BoundedIntModel', max: 100, min: 0, }; } } export class SliderStyleModel extends DescriptionStyleModel { defaults(): Backbone.ObjectHash { return { ...super.defaults(), _model_name: 'SliderStyleModel' }; } public static styleProperties = { ...DescriptionStyleModel.styleProperties, handle_color: { selector: '.noUi-handle', attribute: 'background-color', default: null as any, }, }; } export class IntSliderModel extends BoundedIntModel { defaults(): Backbone.ObjectHash { return { ...super.defaults(), _model_name: 'IntSliderModel', _view_name: 'IntSliderView', step: 1, orientation: 'horizontal', readout: true, readout_format: 'd', continuous_update: true, style: null, disabled: false, }; } initialize( attributes: Backbone.ObjectHash, options: { model_id: string; comm: any; widget_manager: any } ): void { super.initialize(attributes, options); this.on('change:readout_format', this.update_readout_format, this); this.update_readout_format(); } update_readout_format(): void { this.readout_formatter = format(this.get('readout_format')); } readout_formatter: any; } export class IntRangeSliderModel extends IntSliderModel {} export abstract class BaseIntSliderView extends DescriptionView { render(): void { super.render(); this.el.classList.add('jupyter-widgets'); this.el.classList.add('widget-inline-hbox'); this.el.classList.add('widget-slider'); this.el.classList.add('widget-hslider'); // Creating noUiSlider instance and scaffolding this.$slider = document.createElement('div'); this.$slider.classList.add('slider'); // Put the slider in a container this.slider_container = document.createElement('div'); this.slider_container.classList.add('slider-container'); this.slider_container.appendChild(this.$slider); this.el.appendChild(this.slider_container); this.readout = document.createElement('div'); this.el.appendChild(this.readout); this.readout.classList.add('widget-readout'); this.readout.contentEditable = 'true'; this.readout.style.display = 'none'; // noUiSlider constructor and event handlers this.createSlider(); // Event handlers this.model.on('change:orientation', this.regenSlider, this); this.model.on('change:max', this.updateSliderOptions, this); this.model.on('change:min', this.updateSliderOptions, this); this.model.on('change:step', this.updateSliderOptions, this); this.model.on('change:value', this.updateSliderValue, this); // Set defaults. this.update(); } /** * Update the contents of this view * * Called when the model is changed. The model may have been * changed by another view or by a state update from the back-end. */ update(options?: any): void { if (options === undefined || options.updated_view !== this) { if (this.model.get('disabled')) { this.readout.contentEditable = 'false'; this.$slider.setAttribute('disabled', true); } else { this.readout.contentEditable = 'true'; this.$slider.removeAttribute('disabled'); } // Use the right CSS classes for vertical & horizontal sliders const orientation = this.model.get('orientation'); if (orientation === 'vertical') { this.el.classList.remove('widget-hslider'); this.el.classList.add('widget-vslider'); this.el.classList.remove('widget-inline-hbox'); this.el.classList.add('widget-inline-vbox'); } else { this.el.classList.remove('widget-vslider'); this.el.classList.add('widget-hslider'); this.el.classList.remove('widget-inline-vbox'); this.el.classList.add('widget-inline-hbox'); } const readout = this.model.get('readout'); if (readout) { this.readout.style.display = ''; this.displayed.then(() => { if (this.readout_overflow()) { this.readout.classList.add('overflow'); } else { this.readout.classList.remove('overflow'); } }); } else { this.readout.style.display = 'none'; } } return super.update(); } /** * Returns true if the readout box content overflows. */ readout_overflow(): boolean { return this.readout.scrollWidth > this.readout.clientWidth; } /** * Write value to a string */ abstract valueToString(value: number | number[]): string; /** * Parse value from a string */ abstract stringToValue(text: string): number | number[] | null; events(): { [e: string]: string } { return { // Dictionary of events and their handlers. 'blur [contentEditable=true]': 'handleTextChange', 'keydown [contentEditable=true]': 'handleKeyDown', }; } handleKeyDown(e: KeyboardEvent): void { if (e.keyCode === 13) { /* keyboard keycodes `enter` */ e.preventDefault(); this.handleTextChange(); } } /** * Create a new noUiSlider object */ createSlider(): void { const orientation = this.model.get('orientation'); const behavior = this.model.get('behavior'); noUiSlider.create(this.$slider, { start: this.model.get('value'), connect: true, behaviour: behavior, range: { min: this.model.get('min'), max: this.model.get('max'), }, step: this.model.get('step'), animate: false, orientation: orientation, direction: orientation === 'horizontal' ? 'ltr' : 'rtl', format: { from: (value: string): number => Number(value), to: (value: number): number => this._validate_slide_value(value), }, }); // Using noUiSlider's 'update' and 'change' events. // See reference: https://refreshless.com/nouislider/events-callbacks/ this.$slider.noUiSlider.on('update', (values: any, handle: any) => { this.handleSliderUpdateEvent(values, handle); }); this.$slider.noUiSlider.on('change', (values: any, handle: any) => { this.handleSliderChangeEvent(values, handle); }); } /** * Recreate/Regenerate a slider object * noUiSlider does not support in-place mutation of the orientation * state. We therefore need to destroy the current instance * and create a new one with the new properties. This is * handled in a separate function and has a dedicated event * handler. */ regenSlider(e: any): void { this.$slider.noUiSlider.destroy(); this.createSlider(); } /** * Update noUiSlider object in-place with new options */ abstract updateSliderOptions(e: any): void; /** * Update noUiSlider's state so that it is * synced with the Backbone.jas model */ abstract updateSliderValue(model: any, value: any, options: any): void; /** * this handles the entry of text into the contentEditable label first, the * value is checked if it contains a parseable value then it is clamped * within the min-max range of the slider finally, the model is updated if * the value is to be changed * * if any of these conditions are not met, the text is reset */ abstract handleTextChange(): void; /** * Called when the slider handle is released after dragging, * or by tapping or moving by the arrow keys. */ abstract handleSliderChangeEvent(value: any, handle: any): void; /** * Called whilst the slider is dragged, tapped or moved by the arrow keys. */ abstract handleSliderUpdateEvent(value: any, handle: any): void; /** * Called when the slider value has changed. * * Calling model.set will trigger all of the other views of the * model to update. */ abstract handleSliderChanged(values: number[], handle: number): void; /** * Validate the value of the slider before sending it to the back-end * and applying it to the other views on the page. */ _validate_slide_value(x: number): number { return Math.round(x); } $slider: any; slider_container: HTMLElement; readout: HTMLDivElement; model: IntSliderModel; _parse_value = parseInt; } export class IntRangeSliderView extends BaseIntSliderView { update(options?: any): void { super.update(options); const value = this.model.get('value'); this.readout.textContent = this.valueToString(value); if (this.model.get('value') !== value) { this.model.set('value', value, { updated_view: this }); this.touch(); } } /** * Write value to a string */ valueToString(value: number[]): string { const format = this.model.readout_formatter; return value .map(function (v) { return format(v); }) .join(' – '); } /** * Parse value from a string */ stringToValue(text: string | null): number[] | null { if (text === null) { return null; } // ranges can be expressed either 'val-val' or 'val:val' (+spaces) const match = this._range_regex.exec(text); if (match) { return [this._parse_value(match[1]), this._parse_value(match[2])]; } else { return null; } } handleTextChange(): void { let value = this.stringToValue(this.readout.textContent); const vmin = this.model.get('min'); const vmax = this.model.get('max'); // reject input where NaN or lower > upper if ( value === null || isNaN(value[0]) || isNaN(value[1]) || value[0] > value[1] ) { this.readout.textContent = this.valueToString(this.model.get('value')); } else { // clamp to range value = [ Math.max(Math.min(value[0], vmax), vmin), Math.max(Math.min(value[1], vmax), vmin), ]; if ( value[0] !== this.model.get('value')[0] || value[1] !== this.model.get('value')[1] ) { this.readout.textContent = this.valueToString(value); this.model.set('value', value); this.touch(); } else { this.readout.textContent = this.valueToString(this.model.get('value')); } } } /** * Called when the slider handle is released after dragging, * or by tapping or moving by the arrow keys. */ handleSliderChangeEvent(values: any, handle: any): void { const actual_value = values.map(this._validate_slide_value); this.readout.textContent = this.valueToString(actual_value); this.handleSliderChanged(values, handle); } /** * Called whilst the slider is dragged, tapped or moved by the arrow keys. */ handleSliderUpdateEvent(values: any, handle: any): void { const actual_value = values.map(this._validate_slide_value); this.readout.textContent = this.valueToString(actual_value); // Only persist the value while sliding if the continuous_update // trait is set to true. if (this.model.get('continuous_update')) { this.handleSliderChanged(values, handle); } } handleSliderChanged(values: number[], handle: number): void { const actual_value = values.map(this._validate_slide_value); this.model.set('value', actual_value, { updated_view: this }); this.touch(); } updateSliderOptions(e: any): void { this.$slider.noUiSlider.updateOptions({ start: this.model.get('value'), range: { min: this.model.get('min'), max: this.model.get('max'), }, step: this.model.get('step'), }); } updateSliderValue(model: any, _: any, options: any): void { if (options.updated_view === this) { return; } const prev_value = this.$slider.noUiSlider.get(); const value = this.model.get('value'); if (prev_value[0] !== value[0] || prev_value[1] !== value[1]) { this.$slider.noUiSlider.set(value); } } // range numbers can be separated by a hyphen, colon, or an en-dash _range_regex = /^\s*([+-]?\d+)\s*[-:–]\s*([+-]?\d+)/; } export class IntSliderView extends BaseIntSliderView { update(options?: any): void { super.update(options); const min = this.model.get('min'); const max = this.model.get('max'); let value = this.model.get('value'); if (value > max) { value = max; } else if (value < min) { value = min; } this.readout.textContent = this.valueToString(value); if (this.model.get('value') !== value) { this.model.set('value', value, { updated_view: this }); this.touch(); } } valueToString(value: number | number[]): string { const format = this.model.readout_formatter; return format(value); } stringToValue(text: string): number | number[] { return this._parse_value(text); } handleTextChange(): void { let value = this.stringToValue(this.readout.textContent ?? ''); const vmin = this.model.get('min'); const vmax = this.model.get('max'); if (isNaN(value as number)) { this.readout.textContent = this.valueToString(this.model.get('value')); } else { value = Math.max(Math.min(value as number, vmax), vmin); if (value !== this.model.get('value')) { this.readout.textContent = this.valueToString(value); this.model.set('value', value); this.touch(); } else { this.readout.textContent = this.valueToString(this.model.get('value')); } } } handleSliderChangeEvent(values: any, handle: any): void { const actual_value = values.map(this._validate_slide_value); this.readout.textContent = this.valueToString(actual_value); this.handleSliderChanged(values, handle); } handleSliderUpdateEvent(values: any, handle: any): void { const actual_value = values.map(this._validate_slide_value); this.readout.textContent = this.valueToString(actual_value); // Only persist the value while sliding if the continuous_update // trait is set to true. if (this.model.get('continuous_update')) { this.handleSliderChanged(values, handle); } } handleSliderChanged(values: any, handle: any): void { const actual_value = this._validate_slide_value(values[handle]); const model_value = this.model.get('value'); if (parseFloat(model_value) !== actual_value) { this.model.set('value', actual_value, { updated_view: this }); this.touch(); } } updateSliderOptions(e: any): void { this.$slider.noUiSlider.updateOptions({ start: this.model.get('value'), range: { min: this.model.get('min'), max: this.model.get('max'), }, step: this.model.get('step'), }); } updateSliderValue(model: any, _: any, options: any): void { if (options.updated_view === this) { return; } const prev_value = this.$slider.noUiSlider.get(); const value = this.model.get('value'); if (prev_value !== value) { this.$slider.noUiSlider.set(value); } } } export class IntTextModel extends IntModel { defaults(): Backbone.ObjectHash { return { ...super.defaults(), _model_name: 'IntTextModel', _view_name: 'IntTextView', disabled: false, continuous_update: false, }; } } export class BoundedIntTextModel extends BoundedIntModel { defaults(): Backbone.ObjectHash { return { ...super.defaults(), _model_name: 'BoundedIntTextModel', _view_name: 'IntTextView', disabled: false, continuous_update: false, step: 1, }; } } export class IntTextView extends DescriptionView { render(): void { super.render(); this.el.classList.add('jupyter-widgets'); this.el.classList.add('widget-inline-hbox'); this.el.classList.add('widget-text'); this.textbox = document.createElement('input'); this.textbox.type = 'number'; this.textbox.required = true; this.textbox.id = this.label.htmlFor = uuid(); this.el.appendChild(this.textbox); this.update(); // Set defaults. } /** * Update the contents of this view * * Called when the model is changed. The model may have been * changed by another view or by a state update from the back-end. */ update(options?: any): void { if (options === undefined || options.updated_view !== this) { const value: number = this.model.get('value'); if (this._parse_value(this.textbox.value) !== value) { this.textbox.value = value.toString(); } if (this.model.get('min') !== undefined) { this.textbox.min = this.model.get('min'); } if (this.model.get('max') !== undefined) { this.textbox.max = this.model.get('max'); } if ( this.model.get('step') !== undefined && this.model.get('step') !== null ) { this.textbox.step = this.model.get('step'); } else { this.textbox.step = this._default_step; } this.textbox.disabled = this.model.get('disabled'); } return super.update(); } events(): { [e: string]: string } { return { 'keydown input': 'handleKeyDown', 'keypress input': 'handleKeypress', 'keyup input': 'handleKeyUp', 'input input': 'handleChanging', 'change input': 'handleChanged', }; } /** * Handle key down * * Stop propagation so the event isn't sent to the application. */ handleKeyDown(e: KeyboardEvent): void { e.stopPropagation(); } /** * Handles key press */ handleKeypress(e: KeyboardEvent): void { if (/[e,. ]/.test(String.fromCharCode(e.keyCode))) { e.preventDefault(); } } /** * Handle key up */ handleKeyUp(e: KeyboardEvent): void { if (e.altKey || e.ctrlKey) { return; } const target = e.target as HTMLInputElement; /* remove invalid characters */ let value = target.value; value = value.replace(/[e,.\s]/g, ''); if (value.length >= 1) { const subvalue = value.substr(1); value = value[0] + subvalue.replace(/[+-]/g, ''); } if (target.value !== value) { e.preventDefault(); target.value = value; } } /** * Call the submit handler if continuous update is true and we are not * obviously incomplete. */ handleChanging(e: Event): void { const target = e.target as HTMLInputElement; const trimmed = target.value.trim(); if (trimmed === '' || ['-', '-.', '.', '+.', '+'].indexOf(trimmed) >= 0) { // incomplete number return; } if (this.model.get('continuous_update')) { this.handleChanged(e); } } /** * Applies validated input. */ handleChanged(e: Event): void { const target = e.target as HTMLInputElement; let numericalValue = this._parse_value(target.value); // If parse failed, reset value to value stored in model. if (isNaN(numericalValue)) { target.value = this.model.get('value'); } else { // Handle both the unbounded and bounded case by // checking to see if the max/min properties are defined let boundedValue = numericalValue; if (this.model.get('max') !== undefined) { boundedValue = Math.min(this.model.get('max'), boundedValue); } if (this.model.get('min') !== undefined) { boundedValue = Math.max(this.model.get('min'), boundedValue); } if (boundedValue !== numericalValue) { target.value = boundedValue as any; numericalValue = boundedValue; } // Apply the value if it has changed. if (numericalValue !== this.model.get('value')) { this.model.set('value', numericalValue, { updated_view: this }); this.touch(); } } } _parse_value = parseInt; _default_step = '1'; textbox: HTMLInputElement; } export class ProgressStyleModel extends DescriptionStyleModel { defaults(): Backbone.ObjectHash { return { ...super.defaults(), _model_name: 'ProgressStyleModel' }; } public static styleProperties = { ...DescriptionStyleModel.styleProperties, bar_color: { selector: '.progress-bar', attribute: 'background-color', default: null as any, }, }; } export class IntProgressModel extends BoundedIntModel { defaults(): Backbone.ObjectHash { return { ...super.defaults(), _model_name: 'IntProgressModel', _view_name: 'ProgressView', orientation: 'horizontal', bar_style: '', style: null, }; } } export class ProgressView extends DescriptionView { initialize(parameters: WidgetView.IInitializeParameters): void { super.initialize(parameters); this.listenTo(this.model, 'change:bar_style', this.update_bar_style); this.luminoWidget.addClass('jupyter-widgets'); } render(): void { super.render(); const orientation = this.model.get('orientation'); const className = orientation === 'horizontal' ? 'widget-hprogress' : 'widget-vprogress'; this.el.classList.add(className); this.progress = document.createElement('div'); this.progress.classList.add('progress'); this.progress.style.position = 'relative'; this.el.appendChild(this.progress); this.bar = document.createElement('div'); this.bar.classList.add('progress-bar'); this.bar.style.position = 'absolute'; this.bar.style.bottom = '0px'; this.bar.style.left = '0px'; this.progress.appendChild(this.bar); // Set defaults. this.update(); this.set_bar_style(); } /** * Update the contents of this view * * Called when the model is changed. The model may have been * changed by another view or by a state update from the back-end. */ update(): void { const value = this.model.get('value'); const max = this.model.get('max'); const min = this.model.get('min'); const orientation = this.model.get('orientation'); const percent = (100.0 * (value - min)) / (max - min); if (orientation === 'horizontal') { this.el.classList.remove('widget-inline-vbox'); this.el.classList.remove('widget-vprogress'); this.el.classList.add('widget-inline-hbox'); this.el.classList.add('widget-hprogress'); this.bar.style.width = percent + '%'; this.bar.style.height = '100%'; } else { this.el.classList.remove('widget-inline-hbox'); this.el.classList.remove('widget-hprogress'); this.el.classList.add('widget-inline-vbox'); this.el.classList.add('widget-vprogress'); this.bar.style.width = '100%'; this.bar.style.height = percent + '%'; } return super.update(); } update_bar_style(): void { this.update_mapped_classes(ProgressView.class_map, 'bar_style', this.bar); } set_bar_style(): void { this.set_mapped_classes(ProgressView.class_map, 'bar_style', this.bar); } progress: HTMLDivElement; bar: HTMLDivElement; static class_map = { success: ['progress-bar-success'], info: ['progress-bar-info'], warning: ['progress-bar-warning'], danger: ['progress-bar-danger'], }; } export class PlayModel extends BoundedIntModel { defaults(): Backbone.ObjectHash { return { ...super.defaults(), _model_name: 'PlayModel', _view_name: 'PlayView', repeat: false, playing: false, show_repeat: true, interval: 100, step: 1, disabled: false, }; } initialize( attributes: any, options: { model_id: string; comm: any; widget_manager: any } ): void { super.initialize(attributes, options); } loop(): void { if (!this.get('playing')) { return; } const next_value = this.get('value') + this.get('step'); if (next_value <= this.get('max')) { this.set('value', next_value); this.schedule_next(); } else { if (this.get('repeat')) { this.set('value', this.get('min')); this.schedule_next(); } else { this.pause(); } } this.save_changes(); } schedule_next(): void { this._timerId = window.setTimeout( this.loop.bind(this), this.get('interval') ); } stop(): void { this.pause(); this.set('value', this.get('min')); this.save_changes(); } pause(): void { window.clearTimeout(this._timerId); this._timerId = undefined; this.set('playing', false); this.save_changes(); } animate(): void { if (this._timerId !== undefined) { return; } if (this.get('value') === this.get('max')) { // if the value is at the end, reset it first, and then schedule the next this.set('value', this.get('min')); this.schedule_next(); this.save_changes(); } else { // otherwise directly start with the next value // loop will call save_changes in this case this.loop(); } this.save_changes(); } play(): void { this.set('playing', !this.get('playing')); this.save_changes(); } repeat(): void { this.set('repeat', !this.get('repeat')); this.save_changes(); } private _timerId: number | undefined; } export class PlayView extends DOMWidgetView { render(): void { super.render(); this.el.classList.add('jupyter-widgets'); this.el.classList.add('widget-inline-hbox'); this.el.classList.add('widget-play'); this.playPauseButton = document.createElement('button'); this.stopButton = document.createElement('button'); this.repeatButton = document.createElement('button'); this.playPauseButton.className = 'jupyter-button'; this.stopButton.className = 'jupyter-button'; this.repeatButton.className = 'jupyter-button'; this.el.appendChild(this.playPauseButton); // Toggle button with playing this.el.appendChild(this.stopButton); // Disable if not playing this.el.appendChild(this.repeatButton); // Always enabled, but may be hidden const playIcon = document.createElement('i'); playIcon.className = 'fa fa-play'; this.playPauseButton.appendChild(playIcon); const stopIcon = document.createElement('i'); stopIcon.className = 'fa fa-stop'; this.stopButton.appendChild(stopIcon); const repeatIcon = document.createElement('i'); repeatIcon.className = 'fa fa-retweet'; this.repeatButton.appendChild(repeatIcon); this.playPauseButton.onclick = this.model.play.bind(this.model); this.stopButton.onclick = this.model.stop.bind(this.model); this.repeatButton.onclick = this.model.repeat.bind(this.model); this.listenTo(this.model, 'change:playing', this.onPlayingChanged); this.listenTo(this.model, 'change:repeat', this.updateRepeat); this.listenTo(this.model, 'change:show_repeat', this.updateRepeat); this.updatePlaying(); this.updateRepeat(); this.update(); } update(): void { const disabled = this.model.get('disabled'); this.playPauseButton.disabled = disabled; this.stopButton.disabled = disabled; this.repeatButton.disabled = disabled; this.updatePlaying(); } onPlayingChanged(): void { this.updatePlaying(); const previous = this.model.previous('playing'); const current = this.model.get('playing'); if (!previous && current) { this.model.animate(); } else { this.model.pause(); } } updatePlaying(): void { const playing = this.model.get('playing'); const icon = this.playPauseButton.getElementsByTagName('i')[0]; if (playing) { icon.className = 'fa fa-pause'; } else { icon.className = 'fa fa-play'; } } updateRepeat(): void { const repeat = this.model.get('repeat'); this.repeatButton.style.display = this.model.get('show_repeat') ? this.playPauseButton.style.display : 'none'; if (repeat) { this.repeatButton.classList.add('mod-active'); } else { this.repeatButton.classList.remove('mod-active'); } } playPauseButton: HTMLButtonElement; stopButton: HTMLButtonElement; repeatButton: HTMLButtonElement; model: PlayModel; } ipywidgets-8.1.1/packages/controls/src/widget_link.ts000066400000000000000000000063561450026722000230010ustar00rootroot00000000000000// Copyright (c) Jupyter Development Team. // Distributed under the terms of the Modified BSD License. import { WidgetModel, unpack_models } from '@jupyter-widgets/base'; import { CoreWidgetModel } from './widget_core'; export class DirectionalLinkModel extends CoreWidgetModel { static serializers = { ...CoreWidgetModel.serializers, target: { deserialize: unpack_models }, source: { deserialize: unpack_models }, }; defaults(): Backbone.ObjectHash { return { ...super.defaults(), target: undefined, source: undefined, _model_name: 'DirectionalLinkModel', }; } initialize( attributes: Backbone.ObjectHash, options: { model_id: string; comm: any; widget_manager: any } ): void { super.initialize(attributes, options); this.on('change', this.updateBindings, this); this.updateBindings(); } updateValue( sourceModel: WidgetModel, sourceAttr: string, targetModel: WidgetModel, targetAttr: string ): void { if (this._updating) { return; } this._updating = true; try { if (targetModel) { targetModel.set(targetAttr, sourceModel.get(sourceAttr)); targetModel.save_changes(); } } finally { this._updating = false; } } updateBindings(): void { this.cleanup(); [this.sourceModel, this.sourceAttr] = this.get('source') || [null, null]; [this.targetModel, this.targetAttr] = this.get('target') || [null, null]; if (this.sourceModel) { this.listenTo(this.sourceModel, 'change:' + this.sourceAttr, () => { this.updateValue( this.sourceModel, this.sourceAttr, this.targetModel, this.targetAttr ); }); this.updateValue( this.sourceModel, this.sourceAttr, this.targetModel, this.targetAttr ); this.listenToOnce(this.sourceModel, 'destroy', this.cleanup); } if (this.targetModel) { this.listenToOnce(this.targetModel, 'destroy', this.cleanup); } } cleanup(): void { // Stop listening to 'change' and 'destroy' events of the source and target if (this.sourceModel) { this.stopListening( this.sourceModel, 'change:' + this.sourceAttr, undefined ); this.stopListening(this.sourceModel, 'destroy', undefined); } if (this.targetModel) { this.stopListening(this.targetModel, 'destroy', undefined); } } sourceModel: WidgetModel; sourceAttr: string; targetModel: WidgetModel; targetAttr: string; private _updating: boolean; } export class LinkModel extends DirectionalLinkModel { defaults(): Backbone.ObjectHash { return { ...super.defaults(), _model_name: 'LinkModel', }; } updateBindings(): void { super.updateBindings(); if (this.targetModel) { this.listenTo(this.targetModel, 'change:' + this.targetAttr, () => { this.updateValue( this.targetModel, this.targetAttr, this.sourceModel, this.sourceAttr ); }); } } cleanup(): void { super.cleanup(); if (this.targetModel) { this.stopListening( this.targetModel, 'change:' + this.targetAttr, undefined ); } } } ipywidgets-8.1.1/packages/controls/src/widget_selection.ts000066400000000000000000000673241450026722000240330ustar00rootroot00000000000000// Copyright (c) Jupyter Development Team. // Distributed under the terms of the Modified BSD License. import { WidgetView } from '@jupyter-widgets/base'; import { CoreDescriptionModel } from './widget_core'; import { DescriptionStyleModel, DescriptionView } from './widget_description'; import { uuid } from './utils'; import noUiSlider from 'nouislider'; import * as utils from './utils'; export class SelectionModel extends CoreDescriptionModel { defaults(): Backbone.ObjectHash { return { ...super.defaults(), _model_name: 'SelectionModel', index: '', _options_labels: [], disabled: false, }; } } export class SelectionView extends DescriptionView { /** * Called when view is rendered. */ render(): void { super.render(); // Incl. setting some defaults. this.el.classList.add('jupyter-widgets'); this.el.classList.add('widget-inline-hbox'); } /** * Update the contents of this view * * Called when the model is changed. The model may have been * changed by another view or by a state update from the back-end. */ update(): void { super.update(); // Disable listbox if needed if (this.listbox) { this.listbox.disabled = this.model.get('disabled'); } // Set tabindex this.updateTabindex(); this.updateTooltip(); } updateTabindex(): void { if (!this.listbox) { return; // we might be constructing the parent } const tabbable = this.model.get('tabbable'); if (tabbable === true) { this.listbox.setAttribute('tabIndex', '0'); } else if (tabbable === false) { this.listbox.setAttribute('tabIndex', '-1'); } else if (tabbable === null) { this.listbox.removeAttribute('tabIndex'); } } updateTooltip(): void { if (!this.listbox) return; // we might be constructing the parent const title = this.model.get('tooltip'); if (!title) { this.listbox.removeAttribute('title'); } else if (this.model.get('description').length === 0) { this.listbox.setAttribute('title', title); } } listbox: HTMLSelectElement; } export class DropdownModel extends SelectionModel { defaults(): Backbone.ObjectHash { return { ...super.defaults(), _model_name: 'DropdownModel', _view_name: 'DropdownView', button_style: '', }; } } // TODO: Make a Lumino dropdown control, wrapped in DropdownView. Also, fix // bugs in keyboard handling. See // https://github.com/jupyter-widgets/ipywidgets/issues/1055 and // https://github.com/jupyter-widgets/ipywidgets/issues/1049 // For now, we subclass SelectView to provide DropdownView // For the old code, see commit f68bfbc566f3a78a8f3350b438db8ed523ce3642 export class DropdownView extends SelectionView { /** * Called when view is rendered. */ render(): void { super.render(); this.el.classList.add('widget-dropdown'); this.listbox = document.createElement('select'); this.listbox.id = this.label.htmlFor = uuid(); this.el.appendChild(this.listbox); this._updateOptions(); this.update(); } /** * Update the contents of this view */ update(options?: { updated_view?: DropdownView }): void { // Debounce set calls from ourselves: if (options?.updated_view !== this) { const optsChanged = this.model.hasChanged('_options_labels'); if (optsChanged) { // Need to update options: this._updateOptions(); } } // Select the correct element const index = this.model.get('index'); this.listbox.selectedIndex = index === null ? -1 : index; return super.update(); } _updateOptions(): void { this.listbox.textContent = ''; const items = this.model.get('_options_labels'); for (let i = 0; i < items.length; i++) { const item = items[i]; const option = document.createElement('option'); option.textContent = item.replace(/ /g, '\xa0'); // space ->   option.setAttribute('data-value', encodeURIComponent(item)); option.value = item; this.listbox.appendChild(option); } } events(): { [e: string]: string } { return { 'change select': '_handle_change', }; } /** * Handle when a new value is selected. */ _handle_change(): void { this.model.set( 'index', this.listbox.selectedIndex === -1 ? null : this.listbox.selectedIndex, { updated_view: this } ); this.touch(); } /** * Handle message sent to the front end. */ handle_message(content: any): void { if (content.do === 'focus') { this.listbox.focus(); } else if (content.do === 'blur') { this.listbox.blur(); } } } export class SelectModel extends SelectionModel { defaults(): Backbone.ObjectHash { return { ...super.defaults(), _model_name: 'SelectModel', _view_name: 'SelectView', rows: 5, }; } } export class SelectView extends SelectionView { /** * Public constructor. */ initialize(parameters: WidgetView.IInitializeParameters): void { super.initialize(parameters); // Create listbox here so that subclasses can modify it before it is populated in render() this.listbox = document.createElement('select'); } /** * Called when view is rendered. */ render(): void { super.render(); this.el.classList.add('widget-select'); this.listbox.id = this.label.htmlFor = uuid(); this.el.appendChild(this.listbox); this._updateOptions(); this.update(); this.updateSelection(); } /** * Update the contents of this view */ update(options?: { updated_view?: WidgetView }): void { // Don't update options/index on set calls from ourselves: if (options?.updated_view !== this) { const optsChange = this.model.hasChanged('_options_labels'); const idxChange = this.model.hasChanged('index'); if (optsChange || idxChange) { // Stash the index to guard against change events const idx = this.model.get('index'); if (optsChange) { this._updateOptions(); } this.updateSelection(idx); } } super.update(); let rows = this.model.get('rows'); if (rows === null) { rows = ''; } this.listbox.setAttribute('size', rows); } updateSelection(index?: null | number): void { index = index || (this.model.get('index') as null | number); this.listbox.selectedIndex = index === null ? -1 : index; } _updateOptions(): void { this.listbox.textContent = ''; const items = this.model.get('_options_labels'); for (let i = 0; i < items.length; i++) { const item = items[i]; const option = document.createElement('option'); option.textContent = item.replace(/ /g, '\xa0'); // space ->   option.setAttribute('data-value', encodeURIComponent(item)); option.value = item; this.listbox.appendChild(option); } } events(): { [e: string]: string } { return { 'change select': '_handle_change', }; } /** * Handle when a new value is selected. */ _handle_change(): void { this.model.set('index', this.listbox.selectedIndex, { updated_view: this }); this.touch(); } /** * Handle message sent to the front end. */ handle_message(content: any): void { if (content.do == 'focus') { this.listbox.focus(); } else if (content.do == 'blur') { this.listbox.blur(); } } } export class RadioButtonsModel extends SelectionModel { defaults(): Backbone.ObjectHash { return { ...super.defaults(), _model_name: 'RadioButtonsModel', _view_name: 'RadioButtonsView', tooltips: [], icons: [], button_style: '', }; } } export class RadioButtonsView extends DescriptionView { /** * Called when view is rendered. */ render(): void { super.render(); this.el.classList.add('widget-radio'); this.container = document.createElement('div'); this.el.appendChild(this.container); this.container.classList.add('widget-radio-box'); this.update(); } /** * Update the contents of this view * * Called when the model is changed. The model may have been * changed by another view or by a state update from the back-end. */ update(options?: any): void { const items: string[] = this.model.get('_options_labels'); const radios = Array.from( this.container.querySelectorAll('input[type="radio"]') ).map((x) => x.value); let stale = items.length !== radios.length; if (!stale) { for (let i = 0, len = items.length; i < len; ++i) { if (radios[i] !== items[i]) { stale = true; break; } } } if (stale && (options === undefined || options.updated_view !== this)) { // Add items to the DOM. this.container.textContent = ''; items.forEach((item: any, index: number) => { const label = document.createElement('label'); label.textContent = item; this.container.appendChild(label); const radio = document.createElement('input'); radio.setAttribute('type', 'radio'); radio.value = index.toString(); radio.setAttribute('data-value', encodeURIComponent(item)); label.appendChild(radio); }); } items.forEach((item: any, index: number) => { const item_query = 'input[data-value="' + encodeURIComponent(item) + '"]'; const radio = this.container.querySelectorAll(item_query); if (radio.length > 0) { const radio_el = radio[0]; radio_el.checked = this.model.get('index') === index; radio_el.disabled = this.model.get('disabled'); } }); // Schedule adjustPadding asynchronously to // allow dom elements to be created properly setTimeout(this.adjustPadding, 0, this); return super.update(options); } /** * Adjust Padding to Multiple of Line Height * * Adjust margins so that the overall height * is a multiple of a single line height. * * This widget needs it because radio options * are spaced tighter than individual widgets * yet we would like the full widget line up properly * when displayed side-by-side with other widgets. */ adjustPadding(e: this): void { // Vertical margins on a widget const elStyles = window.getComputedStyle(e.el); const margins = parseInt(elStyles.marginTop, 10) + parseInt(elStyles.marginBottom, 10); // Total spaces taken by a single-line widget const lineHeight = e.label.offsetHeight + margins; // Current adjustment value on this widget const cStyles = window.getComputedStyle(e.container); const containerMargin = parseInt(cStyles.marginBottom, 10); // How far we are off from a multiple of single windget lines const diff = (e.el.offsetHeight + margins - containerMargin) % lineHeight; // Apply the new adjustment const extraMargin = diff === 0 ? 0 : lineHeight - diff; e.container.style.marginBottom = extraMargin + 'px'; } events(): { [e: string]: string } { return { 'click input[type="radio"]': '_handle_click', }; } /** * Handle when a value is clicked. * * Calling model.set will trigger all of the other views of the * model to update. */ _handle_click(event: Event): void { const target = event.target as HTMLInputElement; this.model.set('index', parseInt(target.value, 10), { updated_view: this }); this.touch(); } /** * Handle message sent to the front end. */ handle_message(content: any): void { if (content.do == 'focus') { const firstItem = this.container.firstElementChild as HTMLElement; firstItem.focus(); } else if (content.do == 'blur') { for (let i = 0; i < this.container.children.length; i++) { const item = this.container.children[i] as HTMLElement; item.blur(); } } } container: HTMLDivElement; } export class ToggleButtonsStyleModel extends DescriptionStyleModel { defaults(): Backbone.ObjectHash { return { ...super.defaults(), _model_name: 'ToggleButtonsStyleModel', }; } public static styleProperties = { ...DescriptionStyleModel.styleProperties, button_width: { selector: '.widget-toggle-button', attribute: 'width', default: null as any, }, font_weight: { selector: '.widget-toggle-button', attribute: 'font-weight', default: '', }, }; } export class ToggleButtonsModel extends SelectionModel { defaults(): Backbone.ObjectHash { return { ...super.defaults(), _model_name: 'ToggleButtonsModel', _view_name: 'ToggleButtonsView', }; } } export class ToggleButtonsView extends DescriptionView { initialize(options: WidgetView.IInitializeParameters): void { this._css_state = {}; super.initialize(options); this.listenTo(this.model, 'change:button_style', this.update_button_style); } /** * Called when view is rendered. */ render(): void { super.render(); this.el.classList.add('widget-toggle-buttons'); this.buttongroup = document.createElement('div'); this.el.appendChild(this.buttongroup); this.update(); this.set_button_style(); } /** * Update the contents of this view * * Called when the model is changed. The model may have been * changed by another view or by a state update from the back-end. */ update(options?: any): void { const items: string[] = this.model.get('_options_labels'); const icons = this.model.get('icons') || []; const previous_icons = this.model.previous('icons') || []; const previous_bstyle = (ToggleButtonsView.classMap as any)[ this.model.previous('button_style') ] || ''; const tooltips = this.model.get('tooltips') || []; const disabled = this.model.get('disabled'); const buttons = this.buttongroup.querySelectorAll('button'); const values = Array.from(buttons).map((x) => x.value); let stale = false; for (let i = 0, len = items.length; i < len; ++i) { if (values[i] !== items[i] || icons[i] !== previous_icons[i]) { stale = true; break; } } if (stale && (options === undefined || options.updated_view !== this)) { // Add items to the DOM. this.buttongroup.textContent = ''; items.forEach((item: any, index: number) => { let item_html; const empty = item.trim().length === 0 && (!icons[index] || icons[index].trim().length === 0); if (empty) { item_html = ' '; } else { item_html = utils.escape_html(item); } const icon = document.createElement('i'); const button = document.createElement('button'); if (icons[index]) { icon.className = 'fa fa-' + icons[index]; } button.setAttribute('type', 'button'); button.className = 'widget-toggle-button jupyter-button'; if (previous_bstyle) { button.classList.add(previous_bstyle); } button.innerHTML = item_html; button.setAttribute('data-value', encodeURIComponent(item)); button.setAttribute('value', index.toString()); button.appendChild(icon); button.disabled = disabled; if (tooltips[index]) { button.setAttribute('title', tooltips[index]); } this.update_style_traits(button); this.buttongroup.appendChild(button); }); } // Select active button. items.forEach((item: any, index: number) => { const item_query = '[data-value="' + encodeURIComponent(item) + '"]'; const button = this.buttongroup.querySelector(item_query)!; if (this.model.get('index') === index) { button.classList.add('mod-active'); } else { button.classList.remove('mod-active'); } }); this.stylePromise.then(function (style) { if (style) { style.style(); } }); return super.update(options); } update_style_traits(button?: HTMLButtonElement): void { for (const name in this._css_state as string[]) { if (Object.prototype.hasOwnProperty.call(this._css_state, 'name')) { if (name === 'margin') { this.buttongroup.style[name] = this._css_state[name]; } else if (name !== 'width') { if (button) { button.style[name] = this._css_state[name]; } else { const buttons = this.buttongroup.querySelectorAll('button'); if (buttons.length) { buttons[0].style[name] = this._css_state[name]; } } } } } } update_button_style(): void { const buttons = this.buttongroup.querySelectorAll('button'); for (let i = 0; i < buttons.length; i++) { this.update_mapped_classes( ToggleButtonsView.classMap, 'button_style', buttons[i] ); } } set_button_style(): void { const buttons = this.buttongroup.querySelectorAll('button'); for (let i = 0; i < buttons.length; i++) { this.set_mapped_classes( ToggleButtonsView.classMap, 'button_style', buttons[i] ); } } events(): { [e: string]: string } { return { 'click button': '_handle_click', }; } /** * Handle when a value is clicked. * * Calling model.set will trigger all of the other views of the * model to update. */ _handle_click(event: Event): void { const target = event.target as HTMLButtonElement; this.model.set('index', parseInt(target.value, 10), { updated_view: this }); this.touch(); // We also send a clicked event, since the value is only set if it changed. // See https://github.com/jupyter-widgets/ipywidgets/issues/763 this.send({ event: 'click' }); } private _css_state: any; buttongroup: HTMLDivElement; } export namespace ToggleButtonsView { export const classMap = { primary: ['mod-primary'], success: ['mod-success'], info: ['mod-info'], warning: ['mod-warning'], danger: ['mod-danger'], }; } export class SelectionSliderModel extends SelectionModel { defaults(): Backbone.ObjectHash { return { ...super.defaults(), _model_name: 'SelectionSliderModel', _view_name: 'SelectionSliderView', orientation: 'horizontal', readout: true, continuous_update: true, }; } } export class SelectionSliderView extends DescriptionView { /** * Called when view is rendered. */ render(): void { super.render(); this.el.classList.add('widget-hslider'); this.el.classList.add('widget-slider'); // Creating noUiSlider instance and scaffolding this.$slider = document.createElement('div'); this.$slider.classList.add('slider'); // Put the slider in a container this.slider_container = document.createElement('div'); this.slider_container.classList.add('slider-container'); this.slider_container.appendChild(this.$slider); this.el.appendChild(this.slider_container); this.readout = document.createElement('div'); this.el.appendChild(this.readout); this.readout.classList.add('widget-readout'); this.readout.style.display = 'none'; // noUiSlider constructor and event handlers this.createSlider(); // Event handlers this.model.on('change:orientation', this.regenSlider, this); this.model.on('change:index', this.updateSliderValue, this); // Set defaults. this.update(); } /** * Update the contents of this view * * Called when the model is changed. The model may have been * changed by another view or by a state update from the back-end. */ update(options?: { updated_view?: WidgetView }): void { if (options?.updated_view !== this) { this.updateSliderOptions(this.model); const orientation = this.model.get('orientation'); const disabled = this.model.get('disabled'); if (disabled) { this.readout.contentEditable = 'false'; this.$slider.setAttribute('disabled', true); } else { this.readout.contentEditable = 'true'; this.$slider.removeAttribute('disabled'); } // Use the right CSS classes for vertical & horizontal sliders if (orientation === 'vertical') { this.el.classList.remove('widget-hslider'); this.el.classList.remove('widget-inline-hbox'); this.el.classList.add('widget-vslider'); this.el.classList.add('widget-inline-vbox'); } else { this.el.classList.remove('widget-vslider'); this.el.classList.remove('widget-inline-vbox'); this.el.classList.add('widget-hslider'); this.el.classList.add('widget-inline-hbox'); } const readout = this.model.get('readout'); if (readout) { // this.$readout.show(); this.readout.style.display = ''; } else { // this.$readout.hide(); this.readout.style.display = 'none'; } this.updateSelection(); } return super.update(options); } regenSlider(e: any): void { this.$slider.noUiSlider.destroy(); this.createSlider(); } createSlider(): void { const labels = this.model.get('_options_labels'); const min = 0; const max = labels.length - 1; const orientation = this.model.get('orientation'); const behavior = this.model.get('behavior'); noUiSlider.create(this.$slider, { start: this.model.get('index'), connect: true, behaviour: behavior, range: { min: min, max: max, }, step: 1, animate: false, orientation: orientation, direction: orientation === 'horizontal' ? 'ltr' : 'rtl', format: { from: (value: string): number => Number(value), to: (value: number): number => Math.round(value), }, }); // Using noUiSlider's 'update' and 'change' events. // See reference: https://refreshless.com/nouislider/events-callbacks/ this.$slider.noUiSlider.on('update', (values: number[], handle: number) => { this.handleSliderUpdateEvent(values, handle); }); this.$slider.noUiSlider.on('change', (values: number[], handle: number) => { this.handleSliderChangeEvent(values, handle); }); } events(): { [e: string]: string } { return { slide: 'handleSliderChange', slidestop: 'handleSliderChanged', }; } updateSelection(): void { const index = this.model.get('index'); this.updateReadout(index); } updateReadout(index: any): void { const value = this.model.get('_options_labels')[index]; this.readout.textContent = value; } /** * Called whilst the slider is dragged, tapped or moved by the arrow keys. */ handleSliderUpdateEvent(values: number[], handle: number): void { const index = values[0]; this.updateReadout(index); // Only persist the value while sliding if the continuous_update // trait is set to true. if (this.model.get('continuous_update')) { this.handleSliderChanged(values, handle); } } /** * Called when the slider handle is released after dragging, * or by tapping or moving by the arrow keys. */ handleSliderChangeEvent(values: number[], handle: number): void { const index = values[0]; this.updateReadout(index); this.handleSliderChanged(values, handle); } /** * Called when the slider value has changed. * * Calling model.set will trigger all of the other views of the * model to update. */ handleSliderChanged(values: number[], handle: number): void { const index = values[0]; this.updateReadout(index); this.model.set('index', index, { updated_view: this }); this.touch(); } updateSliderOptions(e: any): void { const labels = this.model.get('_options_labels'); const min = 0; const max = labels.length - 1; this.$slider.noUiSlider.updateOptions({ start: this.model.get('index'), range: { min: min, max: max, }, step: 1, }); } updateSliderValue(model: any, _: any, options: any): void { if (options.updated_view === this) { return; } const prev_index = this.$slider.noUiSlider.get(); const index = this.model.get('index'); if (prev_index !== index) { this.$slider.noUiSlider.set(index); } } $slider: any; slider_container: HTMLDivElement; readout: HTMLDivElement; } export class MultipleSelectionModel extends SelectionModel { defaults(): Backbone.ObjectHash { return { ...super.defaults(), _model_name: 'MultipleSelectionModel' }; } } export class SelectMultipleModel extends MultipleSelectionModel { defaults(): Backbone.ObjectHash { return { ...super.defaults(), _model_name: 'SelectMultipleModel', _view_name: 'SelectMultipleView', rows: null, }; } } export class SelectMultipleView extends SelectView { /** * Public constructor. */ initialize(parameters: WidgetView.IInitializeParameters): void { super.initialize(parameters); this.listbox.multiple = true; } /** * Called when view is rendered. */ render(): void { super.render(); this.el.classList.add('widget-select-multiple'); } updateSelection(): void { const selected = this.model.get('index') || []; const listboxOptions = this.listbox.options; // Clear the selection this.listbox.selectedIndex = -1; // Select the appropriate options selected.forEach((i: number) => { listboxOptions[i].selected = true; }); } /** * Handle when a new value is selected. */ _handle_change(): void { const index = Array.prototype.map.call( this.listbox.selectedOptions || [], function (option: HTMLOptionElement) { return option.index; } ); this.model.set('index', index, { updated_view: this }); this.touch(); } } export class SelectionRangeSliderModel extends MultipleSelectionModel { defaults(): Backbone.ObjectHash { return { ...super.defaults(), _model_name: 'SelectionSliderModel', _view_name: 'SelectionSliderView', orientation: 'horizontal', readout: true, continuous_update: true, }; } } export class SelectionRangeSliderView extends SelectionSliderView { /** * Called when view is rendered. */ render(): void { super.render(); } updateSelection(index?: number[]): void { index = index || (this.model.get('index') as number[]); this.updateReadout(index); } updateReadout(index: number[]): void { const labels = this.model.get('_options_labels'); const minValue = labels[index[0]]; const maxValue = labels[index[1]]; this.readout.textContent = `${minValue}-${maxValue}`; } /** * Called when the slider value is changing. */ handleSliderUpdateEvent(values: number[], handle: any): void { const intValues = values.map(Math.trunc); this.updateReadout(intValues); // Only persist the value while sliding if the continuous_update // trait is set to true. if (this.model.get('continuous_update')) { this.handleSliderChanged(values, handle); } } /** * Called when the slider value has changed. * * Calling model.set will trigger all of the other views of the * model to update. */ handleSliderChanged(values: number[], handle: number): void { const intValues = values.map(Math.round); this.updateReadout(intValues); // set index to a snapshot of the values passed by the slider this.model.set('index', intValues.slice(), { updated_view: this }); this.touch(); } updateSliderValue(model: any, _: any, options: any): void { if (options.updated_view === this) { return; } // Rounding values to avoid floating point precision error for the if statement below const prev_index = this.$slider.noUiSlider.get().map(Math.round); const index = this.model.get('index').map(Math.round); if (prev_index[0] !== index[0] || prev_index[1] !== index[1]) { this.$slider.noUiSlider.set(index); } } $slider: any; slider_container: HTMLDivElement; readout: HTMLDivElement; } ipywidgets-8.1.1/packages/controls/src/widget_selectioncontainer.ts000066400000000000000000000314541450026722000257310ustar00rootroot00000000000000// Copyright (c) Jupyter Development Team. // Distributed under the terms of the Modified BSD License. import { DOMWidgetView, ViewList, JupyterLuminoWidget, WidgetModel, reject, WidgetView, } from '@jupyter-widgets/base'; import { BoxModel, BoxView } from './widget_box'; import { TabBar } from '@lumino/widgets'; import { TabPanel } from './lumino/tabpanel'; import { Accordion } from './lumino/accordion'; import { Widget } from '@lumino/widgets'; import { each, ArrayExt } from '@lumino/algorithm'; import { Message, MessageLoop } from '@lumino/messaging'; import $ from 'jquery'; export class SelectionContainerModel extends BoxModel { defaults(): Backbone.ObjectHash { return { ...super.defaults(), _model_name: 'SelectionContainerModel', selected_index: null, titles: [], }; } } export class AccordionModel extends SelectionContainerModel { defaults(): Backbone.ObjectHash { return { ...super.defaults(), _model_name: 'AccordionModel', _view_name: 'AccordionView', }; } } // We implement our own tab widget since Phoshpor's TabPanel uses an absolute // positioning BoxLayout, but we want a more an html/css-based Panel layout. export class JupyterLuminoAccordionWidget extends Accordion { constructor(options: JupyterLuminoWidget.IOptions & Accordion.IOptions) { const view = options.view; delete (options as any).view; super(options); this._view = view; } /** * Process the Lumino message. * * Any custom Lumino widget used inside a Jupyter widget should override * the processMessage function like this. */ processMessage(msg: Message): void { super.processMessage(msg); this._view?.processLuminoMessage(msg); } /** * Dispose the widget. * * This causes the view to be destroyed as well with 'remove' */ dispose(): void { if (this.isDisposed) { return; } super.dispose(); this._view.remove(); this._view = null!; } private _view: DOMWidgetView; } export class AccordionView extends DOMWidgetView { _createElement(tagName: string): HTMLElement { this.luminoWidget = new JupyterLuminoAccordionWidget({ view: this }); return this.luminoWidget.node; } _setElement(el: HTMLElement): void { if (this.el || el !== this.luminoWidget.node) { // Accordions don't allow setting the element beyond the initial creation. throw new Error('Cannot reset the DOM element.'); } this.el = this.luminoWidget.node; this.$el = $(this.luminoWidget.node); } initialize(parameters: WidgetView.IInitializeParameters): void { super.initialize(parameters); this.children_views = new ViewList( this.add_child_view, this.remove_child_view, this ); this.listenTo(this.model, 'change:children', () => this.updateChildren()); this.listenTo(this.model, 'change:selected_index', () => this.update_selected_index() ); this.listenTo(this.model, 'change:titles', () => this.update_titles()); } /** * Called when view is rendered. */ render(): void { super.render(); const accordion = this.luminoWidget; accordion.addClass('jupyter-widgets'); accordion.addClass('widget-accordion'); accordion.addClass('widget-container'); accordion.selection.selectionChanged.connect((sender) => { if (!this.updatingChildren) { this.model.set('selected_index', accordion.selection.index); this.touch(); } }); this.children_views?.update(this.model.get('children')); this.update_titles(); this.update_selected_index(); } /** * Update children */ updateChildren(): void { // While we are updating, the index may not be valid, so deselect the // tabs before updating so we don't get spurious changes in the index, // which would then set off another sync cycle. this.updatingChildren = true; this.luminoWidget.selection.index = null; this.children_views?.update(this.model.get('children')); this.update_selected_index(); this.updatingChildren = false; } /** * Set header titles */ update_titles(): void { const collapsed = this.luminoWidget.collapseWidgets; const titles = this.model.get('titles'); for (let i = 0; i < collapsed.length; i++) { if (titles[i] !== void 0) { collapsed[i].widget.title.label = titles[i]; } } } /** * Make the rendering and selected index consistent. */ update_selected_index(): void { this.luminoWidget.selection.index = this.model.get('selected_index'); } /** * Called when a child is removed from children list. */ remove_child_view(view: DOMWidgetView): void { this.luminoWidget.removeWidget(view.luminoWidget); view.remove(); } /** * Called when a child is added to children list. */ add_child_view(model: WidgetModel, index: number): Promise { // Placeholder widget to keep our position in the tab panel while we create the view. const accordion = this.luminoWidget; const placeholder = new Widget(); placeholder.title.label = this.model.get('titles')[index] || ''; accordion.addWidget(placeholder); return this.create_child_view(model) .then((view: DOMWidgetView) => { const widget = view.luminoWidget; widget.title.label = placeholder.title.label; const collapse = accordion.collapseWidgets[accordion.indexOf(placeholder)]; collapse.widget = widget; placeholder.dispose(); return view; }) .catch(reject('Could not add child view to box', true)); } remove(): void { this.children_views = null; super.remove(); } children_views: ViewList | null; luminoWidget: Accordion; updatingChildren: boolean; } export class TabModel extends SelectionContainerModel { defaults(): Backbone.ObjectHash { return { ...super.defaults(), _model_name: 'TabModel', _view_name: 'TabView', }; } } // We implement our own tab widget since Phoshpor's TabPanel uses an absolute // positioning BoxLayout, but we want a more an html/css-based Panel layout. export class JupyterLuminoTabPanelWidget extends TabPanel { constructor(options: JupyterLuminoWidget.IOptions & TabPanel.IOptions) { const view = options.view; delete (options as any).view; super(options); this._view = view; // We want the view's messages to be the messages the tabContents panel // gets. MessageLoop.installMessageHook(this.tabContents, (handler, msg) => { // There may be times when we want the view's handler to be called // *after* the message has been processed by the widget, in which // case we'll need to revisit using a message hook. this._view.processLuminoMessage(msg); return true; }); } /** * Dispose the widget. * * This causes the view to be destroyed as well with 'remove' */ dispose(): void { if (this.isDisposed) { return; } super.dispose(); this._view.remove(); this._view = null!; } private _view: DOMWidgetView; } export class TabView extends DOMWidgetView { _createElement(tagName: string): HTMLElement { this.luminoWidget = new JupyterLuminoTabPanelWidget({ view: this, }); return this.luminoWidget.node; } _setElement(el: HTMLElement): void { if (this.el || el !== this.luminoWidget.node) { // TabViews don't allow setting the element beyond the initial creation. throw new Error('Cannot reset the DOM element.'); } this.el = this.luminoWidget.node; this.$el = $(this.luminoWidget.node); } /** * Public constructor. */ initialize(parameters: WidgetView.IInitializeParameters): void { super.initialize(parameters); this.childrenViews = new ViewList( this.addChildView, (view) => { view.remove(); }, this ); this.listenTo(this.model, 'change:children', () => this.updateTabs()); this.listenTo(this.model, 'change:titles', () => this.updateTitles()); } /** * Called when view is rendered. */ render(): void { super.render(); const tabs = this.luminoWidget; tabs.addClass('jupyter-widgets'); tabs.addClass('widget-container'); tabs.addClass('jupyter-widget-tab'); tabs.addClass('widget-tab'); tabs.tabsMovable = true; tabs.tabBar.insertBehavior = 'none'; // needed for insert behavior, see below. tabs.tabBar.currentChanged.connect(this._onTabChanged, this); tabs.tabBar.tabMoved.connect(this._onTabMoved, this); tabs.tabBar.addClass('widget-tab-bar'); tabs.tabContents.addClass('widget-tab-contents'); // TODO: expose this option in python tabs.tabBar.tabsMovable = false; this.updateTabs(); this.update(); } /** * Render tab views based on the current model's children. */ updateTabs(): void { // While we are updating, the index may not be valid, so deselect the // tabs before updating so we don't get spurious changes in the index, // which would then set off another sync cycle. this.updatingTabs = true; this.luminoWidget.currentIndex = null; this.childrenViews?.update(this.model.get('children')); this.luminoWidget.currentIndex = this.model.get('selected_index'); this.updatingTabs = false; } /** * Called when a child is added to children list. */ addChildView(model: WidgetModel, index: number): Promise { // Placeholder widget to keep our position in the tab panel while we create the view. const label = this.model.get('titles')[index] || ''; const tabs = this.luminoWidget; const placeholder = new Widget(); placeholder.title.label = label; tabs.addWidget(placeholder); return this.create_child_view(model) .then((view: DOMWidgetView) => { const widget = view.luminoWidget; widget.title.label = placeholder.title.label; widget.title.closable = false; const i = ArrayExt.firstIndexOf(tabs.widgets, placeholder); // insert after placeholder so that if placeholder is selected, the // real widget will be selected now (this depends on the tab bar // insert behavior) tabs.insertWidget(i + 1, widget); placeholder.dispose(); return view; }) .catch(reject('Could not add child view to box', true)); } /** * Update the contents of this view * * Called when the model is changed. The model may have been * changed by another view or by a state update from the back-end. */ update(): void { // Update the selected index in the overall update method because it // should be run after the tabs have been updated. Otherwise the // selected index may not be a valid tab in the tab bar. this.updateSelectedIndex(); return super.update(); } /** * Updates the tab page titles. */ updateTitles(): void { const titles = this.model.get('titles') || []; each(this.luminoWidget.widgets, (widget, i) => { widget.title.label = titles[i] || ''; }); } /** * Updates the selected index. */ updateSelectedIndex(): void { this.luminoWidget.currentIndex = this.model.get('selected_index'); } remove(): void { this.childrenViews = null; super.remove(); } _onTabChanged( sender: TabBar, args: TabBar.ICurrentChangedArgs ): void { if (!this.updatingTabs) { const i = args.currentIndex; this.model.set('selected_index', i === -1 ? null : i); this.touch(); } } /** * Handle the `tabMoved` signal from the tab bar. */ _onTabMoved( sender: TabBar, args: TabBar.ITabMovedArgs ): void { const children = this.model.get('children').slice(); ArrayExt.move(children, args.fromIndex, args.toIndex); this.model.set('children', children); this.touch(); } updatingTabs = false; childrenViews: ViewList | null; luminoWidget: JupyterLuminoTabPanelWidget; } export class StackModel extends SelectionContainerModel { defaults(): Backbone.ObjectHash { return { ...super.defaults(), _model_name: 'StackModel', _view_name: 'StackView', }; } } export class StackView extends BoxView { initialize(parameters: WidgetView.IInitializeParameters): void { super.initialize(parameters); this.listenTo(this.model, 'change:selected_index', this.update_children); } update_children(): void { let child: any[]; if (this.model.get('selected_index') === null) { child = []; } else { child = [this.model.get('children')[this.model.get('selected_index')]]; } this.children_views?.update(child).then((views: DOMWidgetView[]) => { // Notify all children that their sizes may have changed. views.forEach((view) => { MessageLoop.postMessage( view.luminoWidget, Widget.ResizeMessage.UnknownSize ); }); }); } } ipywidgets-8.1.1/packages/controls/src/widget_string.ts000066400000000000000000000421511450026722000233430ustar00rootroot00000000000000// Copyright (c) Jupyter Development Team. // Distributed under the terms of the Modified BSD License. import { CoreDescriptionModel } from './widget_core'; import { DescriptionStyleModel, DescriptionView } from './widget_description'; import { uuid } from './utils'; import { JUPYTER_CONTROLS_VERSION } from './version'; /** * Class name for a combobox with an invalid value. */ const INVALID_VALUE_CLASS = 'jpwidgets-invalidComboValue'; class StringStyleModel extends DescriptionStyleModel { defaults(): Backbone.ObjectHash { return { ...super.defaults(), _model_name: 'StringStyleModel', _model_module: '@jupyter-widgets/controls', _model_module_version: JUPYTER_CONTROLS_VERSION, }; } public static styleProperties = { ...DescriptionStyleModel.styleProperties, background: { selector: '', attribute: 'background', default: null as any, }, font_size: { selector: '', attribute: 'font-size', default: '', }, text_color: { selector: '', attribute: 'color', default: '', }, }; } export class HTMLStyleModel extends StringStyleModel { defaults(): Backbone.ObjectHash { return { ...super.defaults(), _model_name: 'HTMLStyleModel', _model_module: '@jupyter-widgets/controls', _model_module_version: JUPYTER_CONTROLS_VERSION, }; } public static styleProperties = { ...StringStyleModel.styleProperties, }; } export class HTMLMathStyleModel extends StringStyleModel { defaults(): Backbone.ObjectHash { return { ...super.defaults(), _model_name: 'HTMLMathStyleModel', _model_module: '@jupyter-widgets/controls', _model_module_version: JUPYTER_CONTROLS_VERSION, }; } public static styleProperties = { ...StringStyleModel.styleProperties, }; } export class LabelStyleModel extends StringStyleModel { defaults(): Backbone.ObjectHash { return { ...super.defaults(), _model_name: 'LabelStyleModel', _model_module: '@jupyter-widgets/controls', _model_module_version: JUPYTER_CONTROLS_VERSION, }; } public static styleProperties = { ...StringStyleModel.styleProperties, font_family: { selector: '', attribute: 'font-family', default: '', }, font_style: { selector: '', attribute: 'font-style', default: '', }, font_variant: { selector: '', attribute: 'font-variant', default: '', }, font_weight: { selector: '', attribute: 'font-weight', default: '', }, text_decoration: { selector: '', attribute: 'text-decoration', default: '', }, }; } export class TextStyleModel extends DescriptionStyleModel { defaults(): Backbone.ObjectHash { return { ...super.defaults(), _model_name: 'TextStyleModel', _model_module: '@jupyter-widgets/controls', _model_module_version: JUPYTER_CONTROLS_VERSION, }; } public static styleProperties = { ...DescriptionStyleModel.styleProperties, background: { selector: '.widget-input', attribute: 'background', default: null as any, }, font_size: { selector: '.widget-input', attribute: 'font-size', default: '', }, text_color: { selector: '.widget-input', attribute: 'color', default: '', }, }; } export class StringModel extends CoreDescriptionModel { defaults(): Backbone.ObjectHash { return { ...super.defaults(), value: '', disabled: false, placeholder: '\u200b', _model_name: 'StringModel', }; } } export class StringView extends DescriptionView { /** * Called when view is rendered. */ render(): void { super.render(); // Incl. setting some defaults. this.el.classList.add('jupyter-widgets'); this.el.classList.add('widget-inline-hbox'); } /** * Update the contents of this view * * Called when the model is changed. The model may have been * changed by another view or by a state update from the back-end. */ content: HTMLDivElement; } export class HTMLModel extends StringModel { defaults(): Backbone.ObjectHash { return { ...super.defaults(), _view_name: 'HTMLView', _model_name: 'HTMLModel', }; } } export class HTMLView extends StringView { /** * Called when view is rendered. */ render(): void { super.render(); this.el.classList.add('widget-html'); this.content = document.createElement('div'); this.content.classList.add('widget-html-content'); this.el.appendChild(this.content); this.update(); // Set defaults. } /** * Update the contents of this view * * Called when the model is changed. The model may have been * changed by another view or by a state update from the back-end. */ update(): void { this.content.innerHTML = this.model.get('value'); return super.update(); } /** * Handle message sent to the front end. */ handle_message(content: any): void { if (content.do === 'focus') { this.content.focus(); } else if (content.do === 'blur') { this.content.blur(); } } content: HTMLDivElement; } export class HTMLMathModel extends StringModel { defaults(): Backbone.ObjectHash { return { ...super.defaults(), _view_name: 'HTMLMathView', _model_name: 'HTMLMathModel', }; } } export class HTMLMathView extends StringView { /** * Called when view is rendered. */ render(): void { super.render(); this.el.classList.add('widget-htmlmath'); this.content = document.createElement('div'); this.content.classList.add('widget-htmlmath-content'); this.el.appendChild(this.content); this.update(); // Set defaults. } /** * Update the contents of this view */ update(): void { this.content.innerHTML = this.model.get('value'); this.typeset(this.content); return super.update(); } /** * Handle message sent to the front end. */ handle_message(content: any): void { if (content.do === 'focus') { this.content.focus(); } else if (content.do === 'blur') { this.content.blur(); } } content: HTMLDivElement; } export class LabelModel extends StringModel { defaults(): Backbone.ObjectHash { return { ...super.defaults(), _view_name: 'LabelView', _model_name: 'LabelModel', }; } } export class LabelView extends StringView { /** * Called when view is rendered. */ render(): void { super.render(); this.el.classList.add('widget-label'); this.update(); // Set defaults. } /** * Update the contents of this view * * Called when the model is changed. The model may have been * changed by another view or by a state update from the back-end. */ update(): void { this.typeset(this.el, this.model.get('value')); return super.update(); } } export class TextareaModel extends StringModel { defaults(): Backbone.ObjectHash { return { ...super.defaults(), _view_name: 'TextareaView', _model_name: 'TextareaModel', rows: null, continuous_update: true, }; } } export class TextareaView extends StringView { /** * Called when view is rendered. */ render(): void { super.render(); this.el.classList.add('widget-textarea'); this.textbox = document.createElement('textarea'); this.textbox.setAttribute('rows', '5'); this.textbox.id = this.label.htmlFor = uuid(); this.textbox.classList.add('widget-input'); this.el.appendChild(this.textbox); this.update(); // Set defaults. this.listenTo(this.model, 'change:placeholder', (model, value, options) => { this.update_placeholder(value); }); this.update_placeholder(); this.updateTooltip(); } update_placeholder(value?: string): void { const v = value || this.model.get('placeholder'); this.textbox.setAttribute('placeholder', v.toString()); } /** * Update the contents of this view * * Called when the model is changed. The model may have been * changed by another view or by a state update from the back-end. */ update(options?: any): void { if (options === undefined || options.updated_view !== this) { this.textbox.value = this.model.get('value'); let rows = this.model.get('rows'); if (rows === null) { rows = ''; } this.textbox.setAttribute('rows', rows); this.textbox.disabled = this.model.get('disabled'); } this.updateTabindex(); this.updateTooltip(); return super.update(); } updateTabindex(): void { if (!this.textbox) { return; // we might be constructing the parent } const tabbable = this.model.get('tabbable'); if (tabbable === true) { this.textbox.setAttribute('tabIndex', '0'); } else if (tabbable === false) { this.textbox.setAttribute('tabIndex', '-1'); } else if (tabbable === null) { this.textbox.removeAttribute('tabIndex'); } } updateTooltip(): void { if (!this.textbox) return; // we might be constructing the parent const title = this.model.get('tooltip'); if (!title) { this.textbox.removeAttribute('title'); } else if (this.model.get('description').length === 0) { this.textbox.setAttribute('title', title); } } events(): { [e: string]: string } { return { 'keydown input': 'handleKeyDown', 'keypress input': 'handleKeypress', 'input textarea': 'handleChanging', 'change textarea': 'handleChanged', }; } /** * Handle key down * * Stop propagation so the event isn't sent to the application. */ handleKeyDown(e: Event): void { e.stopPropagation(); } /** * Handles key press * * Stop propagation so the keypress isn't sent to the application. */ handleKeypress(e: Event): void { e.stopPropagation(); } /** * Triggered on input change */ handleChanging(e: Event): void { if (this.model.get('continuous_update')) { this.handleChanged(e); } } /** * Sync the value with the kernel. * * @param e Event */ handleChanged(e: Event): void { const target = e.target as HTMLTextAreaElement; this.model.set('value', target.value, { updated_view: this }); this.touch(); } /** * Handle message sent to the front end. */ handle_message(content: any): void { if (content.do === 'focus') { this.textbox.focus(); } else if (content.do === 'blur') { this.textbox.blur(); } } textbox: HTMLTextAreaElement; } export class TextModel extends StringModel { defaults(): Backbone.ObjectHash { return { ...super.defaults(), _view_name: 'TextView', _model_name: 'TextModel', continuous_update: true, }; } } export class TextView extends StringView { /** * Called when view is rendered. */ render(): void { super.render(); this.el.classList.add('widget-text'); this.textbox = document.createElement('input'); this.textbox.setAttribute('type', this.inputType); this.textbox.id = this.label.htmlFor = uuid(); this.textbox.classList.add('widget-input'); this.el.appendChild(this.textbox); this.update(); // Set defaults. this.listenTo(this.model, 'change:placeholder', (model, value, options) => { this.update_placeholder(value); }); this.update_placeholder(); this.updateTabindex(); this.updateTooltip(); } update_placeholder(value?: string): void { this.textbox.setAttribute( 'placeholder', value || this.model.get('placeholder') ); } updateTabindex(): void { if (!this.textbox) { return; // we might be constructing the parent } const tabbable = this.model.get('tabbable'); if (tabbable === true) { this.textbox.setAttribute('tabIndex', '0'); } else if (tabbable === false) { this.textbox.setAttribute('tabIndex', '-1'); } else if (tabbable === null) { this.textbox.removeAttribute('tabIndex'); } } updateTooltip(): void { if (!this.textbox) return; // we might be constructing the parent const title = this.model.get('tooltip'); if (!title) { this.textbox.removeAttribute('title'); } else if (this.model.get('description').length === 0) { this.textbox.setAttribute('title', title); } } update(options?: any): void { /** * Update the contents of this view * * Called when the model is changed. The model may have been * changed by another view or by a state update from the back-end. */ if (options === undefined || options.updated_view !== this) { if (this.textbox.value !== this.model.get('value')) { this.textbox.value = this.model.get('value'); } this.textbox.disabled = this.model.get('disabled'); } return super.update(); } events(): { [e: string]: string } { return { 'keydown input': 'handleKeyDown', 'keypress input': 'handleKeypress', 'input input': 'handleChanging', 'change input': 'handleChanged', }; } /** * Handle key down * * Stop propagation so the keypress isn't sent to the application. */ handleKeyDown(e: Event): void { e.stopPropagation(); } /** * Handles text submission */ handleKeypress(e: KeyboardEvent): void { e.stopPropagation(); // The submit message is deprecated in widgets 7 if (e.keyCode === 13) { // Return key this.send({ event: 'submit' }); } } /** * Handles user input. * * Calling model.set will trigger all of the other views of the * model to update. */ handleChanging(e: Event): void { if (this.model.get('continuous_update')) { this.handleChanged(e); } } /** * Handles user input. * * Calling model.set will trigger all of the other views of the * model to update. */ handleChanged(e: Event): void { const target = e.target as HTMLInputElement; this.model.set('value', target.value, { updated_view: this }); this.touch(); } /** * Handle message sent to the front end. */ handle_message(content: any): void { if (content.do === 'focus') { this.textbox.focus(); } else if (content.do === 'blur') { this.textbox.blur(); } } protected readonly inputType: string = 'text'; textbox: HTMLInputElement; } export class PasswordModel extends TextModel { defaults(): Backbone.ObjectHash { return { ...super.defaults(), _view_name: 'PasswordView', _model_name: 'PasswordModel', }; } } export class PasswordView extends TextView { protected readonly inputType: string = 'password'; } /** * Combobox widget model class. */ export class ComboboxModel extends TextModel { defaults(): Backbone.ObjectHash { return { ...super.defaults(), _model_name: 'ComboboxModel', _view_name: 'ComboboxView', options: [], ensure_options: false, }; } } /** * Combobox widget view class. */ export class ComboboxView extends TextView { render(): void { this.datalist = document.createElement('datalist'); this.datalist.id = uuid(); super.render(); this.textbox.setAttribute('list', this.datalist.id); this.el.appendChild(this.datalist); this.updateTooltip(); } update(options?: any): void { super.update(options); if (!this.datalist) { return; } const valid = this.isValid(this.model.get('value')); this.highlightValidState(valid); // Check if we need to update options if ( (options !== undefined && options.updated_view) || (!this.model.hasChanged('options') && !this.isInitialRender) ) { // Value update only, keep current options return; } this.isInitialRender = false; const opts = this.model.get('options') as string[]; const optionFragment = document.createDocumentFragment(); for (const v of opts) { const o = document.createElement('option'); o.value = v; optionFragment.appendChild(o); } this.datalist.replaceChildren(...optionFragment.children); } isValid(value: string): boolean { if (true === this.model.get('ensure_option')) { const options = this.model.get('options') as string[]; if (options.indexOf(value) === -1) { return false; } } return true; } handleChanging(e: KeyboardEvent): void { // Override to validate value const target = e.target as HTMLInputElement; const valid = this.isValid(target.value); this.highlightValidState(valid); if (valid) { super.handleChanging(e); } } handleChanged(e: KeyboardEvent): void { // Override to validate value const target = e.target as HTMLInputElement; const valid = this.isValid(target.value); this.highlightValidState(valid); if (valid) { super.handleChanged(e); } } /** * Handle message sent to the front end. */ handle_message(content: any): void { if (content.do === 'focus') { this.textbox.focus(); } else if (content.do === 'blur') { this.textbox.blur(); } } highlightValidState(valid: boolean): void { this.textbox.classList.toggle(INVALID_VALUE_CLASS, !valid); } datalist: HTMLDataListElement | undefined; isInitialRender = true; } ipywidgets-8.1.1/packages/controls/src/widget_tagsinput.ts000066400000000000000000000526461450026722000240650ustar00rootroot00000000000000// Copyright (c) Jupyter Development Team. // Distributed under the terms of the Modified BSD License. import * as d3Color from 'd3-color'; import * as d3Format from 'd3-format'; import { CoreDOMWidgetModel } from './widget_core'; import { DOMWidgetView, Dict, uuid } from '@jupyter-widgets/base'; /** * Returns a new string after removing any leading and trailing whitespaces. * The original string is left unchanged. */ function trim(value: string): string { return value.replace(/^\s+|\s+$/g, ''); } /** * Clamp a number between min and max and return the result. */ function clamp(value: number, min: number, max: number): number { return Math.min(Math.max(value, min), max); } /** * Remove children from an HTMLElement */ function removeChildren(el: HTMLElement): void { while (el.firstChild) { el.removeChild(el.firstChild); } } /** * Selection class which keeps track on selected indices. */ class Selection { constructor(start: number, dx: number, max: number) { this.start = start; this.dx = dx; this.max = max; } /** * Check if a given index is currently selected. */ isSelected(index: number): boolean { let min: number; let max: number; if (this.dx >= 0) { min = this.start; max = this.start + this.dx; } else { min = this.start + this.dx; max = this.start; } return min <= index && index < max; } /** * Update selection */ updateSelection(dx: number): void { this.dx += dx; if (this.start + this.dx > this.max) { this.dx = this.max - this.start; } if (this.start + this.dx < 0) { this.dx = -this.start; } } private start: number; private dx: number; private max: number; } class TagsInputBaseModel extends CoreDOMWidgetModel { defaults(): Backbone.ObjectHash { return { ...super.defaults(), value: [], placeholder: '\u200b', allowed_tags: null, allow_duplicates: true, }; } } abstract class TagsInputBaseView extends DOMWidgetView { /** * Called when view is rendered. */ render(): void { super.render(); this.el.classList.add('jupyter-widgets'); this.el.classList.add('jupyter-widget-tagsinput'); this.taginputWrapper = document.createElement('div'); // The taginput is hidden until the user focuses on the widget // Unless there is no value if (this.model.get('value').length) { this.taginputWrapper.style.display = 'none'; } else { this.taginputWrapper.style.display = 'inline-block'; } this.datalistID = uuid(); this.taginput = document.createElement('input'); this.taginput.classList.add('jupyter-widget-tag'); this.taginput.classList.add('jupyter-widget-taginput'); this.taginput.setAttribute('list', this.datalistID); this.taginput.setAttribute('type', 'text'); this.autocompleteList = document.createElement('datalist'); this.autocompleteList.id = this.datalistID; this.updateAutocomplete(); this.model.on('change:allowed_tags', this.updateAutocomplete.bind(this)); this.updatePlaceholder(); this.model.on('change:placeholder', this.updatePlaceholder.bind(this)); this.taginputWrapper.classList.add('widget-text'); this.taginputWrapper.appendChild(this.taginput); this.taginputWrapper.appendChild(this.autocompleteList); this.el.onclick = this.focus.bind(this); this.el.ondrop = (event: DragEvent): void => { // Put the tag at the end of the list if there is no currently hovered tag const index = this.hoveredTagIndex == null ? this.tags.length : this.hoveredTagIndex; return this.ondrop(event, index); }; this.el.ondragover = this.ondragover.bind(this); this.taginput.onchange = this.handleValueAdded.bind(this); this.taginput.oninput = this.resizeInput.bind(this); this.taginput.onkeydown = this.handleKeyEvent.bind(this); this.taginput.onblur = this.loseFocus.bind(this); this.resizeInput(); this.inputIndex = this.model.get('value').length; this.selection = null; this.preventLoosingFocus = false; this.update(); } /** * Update the contents of this view * * Called when the model is changed. The model may have been * changed by another view or by a state update from the back-end. */ update(): void { // Prevent hiding the input element and clearing the selection when updating everything this.preventLoosingFocus = true; removeChildren(this.el); this.tags = []; const value: Array = this.model.get('value'); for (const idx in value) { const index = parseInt(idx); const tag = this.createTag( value[index], index, this.selection != null && this.selection.isSelected(index) ); // Drag and drop tag.draggable = true; tag.ondragstart = ((index: number, value: any) => { return (event: DragEvent): void => { this.ondragstart(event, index, value, this.model.model_id); }; })(index, value[index]); tag.ondrop = ((index: number) => { return (event: DragEvent): void => { this.ondrop(event, index); }; })(index); tag.ondragover = this.ondragover.bind(this); tag.ondragenter = ((index: number) => { return (event: DragEvent): void => { this.ondragenter(event, index); }; })(index); tag.ondragend = this.ondragend.bind(this); this.tags.push(tag); this.el.appendChild(tag); } this.el.insertBefore( this.taginputWrapper, this.el.children[this.inputIndex] ); // The taginput is hidden until the user focuses on the widget // Unless there is no value if (this.model.get('value').length) { this.taginputWrapper.style.display = 'none'; } else { this.taginputWrapper.style.display = 'inline-block'; } this.preventLoosingFocus = false; return super.update(); } /** * Update the auto-completion list */ updateAutocomplete(): void { removeChildren(this.autocompleteList); const allowedTags = this.model.get('allowed_tags'); for (const tag of allowedTags) { const option = document.createElement('option'); option.value = tag; this.autocompleteList.appendChild(option); } } /** * Update the auto-completion list */ updatePlaceholder(): void { this.taginput.placeholder = this.model.get('placeholder'); this.resizeInput(); } /** * Update the tags, called when the selection has changed and we need to update the tags CSS */ updateTags(): void { const value: Array = this.model.get('value'); for (const idx in this.tags) { const index = parseInt(idx); this.updateTag( this.tags[index], value[index], index, this.selection != null && this.selection.isSelected(index) ); } } /** * Handle a new value is added from the input element */ handleValueAdded(event: Event): void { const newTagValue = trim(this.taginput.value); const tagIndex = this.inputIndex; if (newTagValue == '') { return; } this.inputIndex++; const tagAdded = this.addTag(tagIndex, newTagValue); if (tagAdded) { // Clear the input and keep focus on it allowing the user to add more tags this.taginput.value = ''; this.resizeInput(); this.focus(); } } /** * Add a new tag with a value of `tagValue` at the `index` position * Return true if the tag was correctly added, false otherwise */ addTag(index: number, tagValue: string): boolean { const value: Array = this.model.get('value'); let newTagValue: any; try { newTagValue = this.validateValue(tagValue); } catch (error) { return false; } const allowedTagValues = this.model.get('allowed_tags'); if (allowedTagValues.length && !allowedTagValues.includes(newTagValue)) { // Do nothing for now, maybe show a proper error message? return false; } if (!this.model.get('allow_duplicates') && value.includes(newTagValue)) { // Do nothing for now, maybe add an animation to highlight the tag? return false; } // Clearing the current selection before setting the new value this.selection = null; // Making a copy so that backbone sees the change, and insert the new tag const newValue = [...value]; newValue.splice(index, 0, newTagValue); this.model.set('value', newValue); this.model.save_changes(); return true; } /** * Resize the input element */ resizeInput(): void { let content: string; if (this.taginput.value.length != 0) { content = this.taginput.value; } else { content = this.model.get('placeholder'); } const size = content.length + 1; this.taginput.setAttribute('size', String(size)); } /** * Handle key events on the input element */ handleKeyEvent(event: KeyboardEvent): void { const valueLength = this.model.get('value').length; // Do nothing if the user is typing something if (this.taginput.value.length) { return; } const currentElement: number = this.inputIndex; switch (event.key) { case 'ArrowLeft': if (event.ctrlKey && event.shiftKey) { this.select(currentElement, -currentElement); } if (!event.ctrlKey && event.shiftKey) { this.select(currentElement, -1); } if (event.ctrlKey) { this.inputIndex = 0; } else { this.inputIndex--; } break; case 'ArrowRight': if (event.ctrlKey && event.shiftKey) { this.select(currentElement, valueLength - currentElement); } if (!event.ctrlKey && event.shiftKey) { this.select(currentElement, 1); } if (event.ctrlKey) { this.inputIndex = valueLength; } else { this.inputIndex++; } break; case 'Backspace': if (this.selection) { this.removeSelectedTags(); } else { this.removeTag(this.inputIndex - 1); } break; case 'Delete': if (this.selection) { this.removeSelectedTags(); } else { this.removeTag(this.inputIndex); } break; default: // Do nothing by default return; break; } // Reset selection is shift key is not pressed if (!event.shiftKey) { this.selection = null; } this.inputIndex = clamp(this.inputIndex, 0, valueLength); this.update(); this.focus(); } /** * Function that gets called when a tag with a given `value` is being dragged. */ ondragstart( event: DragEvent, index: number, tagValue: any, origin: string ): void { if (event.dataTransfer == null) { return; } event.dataTransfer.setData('index', String(index)); event.dataTransfer.setData('tagValue', String(tagValue)); event.dataTransfer.setData('origin', origin); } /** * Function that gets called when a tag has been dragged on the tag at the `index` position. */ ondrop(event: DragEvent, index: number): void { if (event.dataTransfer == null) { return; } event.preventDefault(); event.stopPropagation(); const draggedTagValue: string = event.dataTransfer.getData('tagValue'); const draggedTagindex: number = parseInt( event.dataTransfer.getData('index') ); const sameOrigin = event.dataTransfer.getData('origin') == this.model.model_id; // If something else than a tag was dropped, draggedTagindex should be NaN if (isNaN(draggedTagindex)) { return; } // If it's the same origin, the drag and drop results in a reordering if (sameOrigin) { const value: Array = this.model.get('value'); const newValue = [...value]; // If the old position is on the left of the new position, we need to re-index the new position // after removing the tag at the old position if (draggedTagindex < index) { index--; } newValue.splice(draggedTagindex, 1); // Removing at the old position newValue.splice(index, 0, draggedTagValue); // Adding at the new one this.model.set('value', newValue); this.model.save_changes(); return; } // Else we add a new tag with the given draggedTagValue this.addTag(index, draggedTagValue); } ondragover(event: DragEvent): void { // This is needed for the drag and drop to work event.preventDefault(); } ondragenter(event: DragEvent, index: number): void { if (this.hoveredTag != null && this.hoveredTag != this.tags[index]) { this.hoveredTag.style.marginLeft = '1px'; } this.hoveredTag = this.tags[index]; this.hoveredTagIndex = index; this.hoveredTag.style.marginLeft = '30px'; } ondragend(): void { if (this.hoveredTag != null) { this.hoveredTag.style.marginLeft = '1px'; } this.hoveredTag = null; this.hoveredTagIndex = null; } /** * Select tags from `start` to `start + dx` not included. */ select(start: number, dx: number): void { const valueLength = this.model.get('value').length; if (!this.selection) { this.selection = new Selection(start, dx, valueLength); } else { this.selection.updateSelection(dx); } } /** * Remove all the selected tags. */ removeSelectedTags(): void { const value: Array = [...this.model.get('value')]; const valueLength = value.length; // It is simpler to remove from right to left for (let idx = valueLength - 1; idx >= 0; idx--) { if (this.selection != null && this.selection.isSelected(idx)) { value.splice(idx, 1); // Move the input to the left if we remove a tag that is before the input if (idx < this.inputIndex) { this.inputIndex--; } } } this.model.set('value', value); this.model.save_changes(); } /** * Remove a tag given its index in the list */ removeTag(tagIndex: number): void { const value: Array = [...this.model.get('value')]; value.splice(tagIndex, 1); // Move the input to the left if we remove a tag that is before the input if (tagIndex < this.inputIndex) { this.inputIndex--; } this.model.set('value', value); this.model.save_changes(); } /** * Focus on the input element */ focus(): void { this.taginputWrapper.style.display = 'inline-block'; this.taginput.focus(); } /** * Lose focus on the input element */ loseFocus(): void { if (this.preventLoosingFocus) { return; } // Only hide the input if we have tags displayed if (this.model.get('value').length) { this.taginputWrapper.style.display = 'none'; } this.selection = null; this.updateTags(); } preinitialize() { // Must set this before the initialize method creates the element this.tagName = 'div'; } /** * Validate an input tag typed by the user, returning the correct tag type. This should be overridden in subclasses. */ validateValue(value: string): any { return value; } abstract createTag(value: any, index: number, selected: boolean): HTMLElement; abstract updateTag( tag: HTMLElement, value: any, index: number, selected: boolean ): void; el: HTMLDivElement; taginputWrapper: HTMLDivElement; taginput: HTMLInputElement; autocompleteList: HTMLDataListElement; tags: HTMLElement[]; hoveredTag: HTMLElement | null = null; hoveredTagIndex: number | null = null; datalistID: string; inputIndex: number; selection: null | Selection; preventLoosingFocus: boolean; model: TagsInputBaseModel; } export class TagsInputModel extends TagsInputBaseModel { defaults(): Backbone.ObjectHash { return { ...super.defaults(), value: [], tag_style: '', _view_name: 'TagsInputView', _model_name: 'TagsInputModel', }; } } export class TagsInputView extends TagsInputBaseView { /** * Create the string tag */ createTag(value: string, index: number, selected: boolean): HTMLDivElement { const tag = document.createElement('div'); const style: string = this.model.get('tag_style'); tag.classList.add('jupyter-widget-tag'); tag.classList.add(TagsInputView.class_map[style]); if (selected) { tag.classList.add('mod-active'); } tag.appendChild(document.createTextNode(this.getTagText(value))); const i = document.createElement('i'); i.classList.add('fa'); i.classList.add('fa-times'); i.classList.add('jupyter-widget-tag-close'); tag.appendChild(i); i.onmousedown = ((index: number) => { return (): void => { this.removeTag(index); this.loseFocus(); }; })(index); return tag; } /** * Returns the text that should be displayed in the tag element */ getTagText(value: string): string { return value; } /** * Update a given tag */ updateTag( tag: HTMLDivElement, value: any, index: number, selected: boolean ): void { if (selected) { tag.classList.add('mod-active'); } else { tag.classList.remove('mod-active'); } } model: TagsInputModel; static class_map: Dict = { primary: 'mod-primary', success: 'mod-success', info: 'mod-info', warning: 'mod-warning', danger: 'mod-danger', }; } export class ColorsInputModel extends TagsInputBaseModel { defaults(): Backbone.ObjectHash { return { ...super.defaults(), value: [], _view_name: 'ColorsInputView', _model_name: 'ColorsInputModel', }; } } export class ColorsInputView extends TagsInputBaseView { /** * Create the Color tag */ createTag(value: string, index: number, selected: boolean): HTMLDivElement { const tag = document.createElement('div'); const color = value; const darkerColor: string = d3Color.color(value)!.darker().toString(); tag.classList.add('jupyter-widget-tag'); tag.classList.add('jupyter-widget-colortag'); if (!selected) { tag.style.backgroundColor = color; } else { tag.classList.add('mod-active'); tag.style.backgroundColor = darkerColor; } const i = document.createElement('i'); i.classList.add('fa'); i.classList.add('fa-times'); i.classList.add('jupyter-widget-tag-close'); tag.appendChild(i); i.onmousedown = ((index: number) => { return (): void => { this.removeTag(index); this.loseFocus(); }; })(index); return tag; } /** * Update a given tag */ updateTag( tag: HTMLDivElement, value: any, index: number, selected: boolean ): void { const color = value; const darkerColor: string = d3Color.color(value)!.darker().toString(); if (!selected) { tag.classList.remove('mod-active'); tag.style.backgroundColor = color; } else { tag.classList.add('mod-active'); tag.style.backgroundColor = darkerColor; } } /** * Validate an input tag typed by the user, returning the correct tag type. This should be overridden in subclasses. */ validateValue(value: string): any { if (d3Color.color(value) == null) { throw value + ' is not a valid Color'; } return value; } model: ColorsInputModel; } abstract class NumbersInputModel extends TagsInputModel { defaults(): Backbone.ObjectHash { return { ...super.defaults(), min: null, max: null, }; } } abstract class NumbersInputView extends TagsInputView { render(): void { // Initialize text formatter this.model.on('change:format', () => { this.formatter = d3Format.format(this.model.get('format')); this.update(); }); this.formatter = d3Format.format(this.model.get('format')); super.render(); } /** * Returns the text that should be displayed in the tag element */ getTagText(value: string): string { return this.formatter(this.parseNumber(value)); } /** * Validate an input tag typed by the user, returning the correct tag type. This should be overridden in subclasses. */ validateValue(value: string): any { const parsed = this.parseNumber(value); const min: number | null = this.model.get('min'); const max: number | null = this.model.get('max'); if ( isNaN(parsed) || (min != null && parsed < min) || (max != null && parsed > max) ) { throw ( value + ' is not a valid number, it should be in the range [' + min + ', ' + max + ']' ); } return parsed; } abstract parseNumber(value: string): number; formatter: (value: number) => string; } export class FloatsInputModel extends NumbersInputModel { defaults(): Backbone.ObjectHash { return { ...super.defaults(), _view_name: 'FloatsInputView', _model_name: 'FloatsInputModel', format: '.1f', }; } } export class FloatsInputView extends NumbersInputView { parseNumber(value: string): number { return parseFloat(value); } model: FloatsInputModel; } export class IntsInputModel extends NumbersInputModel { defaults(): Backbone.ObjectHash { return { ...super.defaults(), _view_name: 'IntsInputView', _model_name: 'IntsInputModel', format: 'd', }; } } export class IntsInputView extends NumbersInputView { parseNumber(value: string): number { const int = parseInt(value); if (int != parseFloat(value)) { throw value + ' should be an integer'; } return int; } model: IntsInputModel; } ipywidgets-8.1.1/packages/controls/src/widget_time.ts000066400000000000000000000106051450026722000227720ustar00rootroot00000000000000// Copyright (c) Vidar Tonaas Fauske // Distributed under the terms of the Modified BSD License. import { ISerializers } from '@jupyter-widgets/base'; import { uuid } from './utils'; import { DescriptionView } from './widget_description'; import { CoreDescriptionModel } from './widget_core'; const PARSER = /(\d\d):(\d\d)(:(\d\d)(.(\d{1,3})\d*)?)?/; export interface ISerializedTime { /** * Integer hour (24H format) */ hours: number; /** * Integer minutes */ minutes: number; /** * Integer seconds */ seconds: number; /** * Millisconds */ milliseconds: number; } export function serialize_time(value: string): ISerializedTime | null { if (value === null) { return null; } else { const res = PARSER.exec(value); if (res === null) { return null; } return { hours: Math.min(23, parseInt(res[1], 10)), minutes: Math.min(59, parseInt(res[2], 10)), seconds: res[4] ? Math.min(59, parseInt(res[4], 10)) : 0, milliseconds: res[6] ? parseInt(res[6], 10) : 0, }; } } export function deserialize_time(value: ISerializedTime): string | null { if (value === null) { return null; } else { const parts = [ `${value.hours.toString().padStart(2, '0')}:${value.minutes .toString() .padStart(2, '0')}`, ]; if (value.seconds > 0 || value.milliseconds > 0) { parts.push(`:${value.seconds.toString().padStart(2, '0')}`); if (value.milliseconds > 0) { parts.push(`.${value.milliseconds.toString().padStart(3, '0')}`); } } return parts.join(''); } } export const time_serializers = { serialize: serialize_time, deserialize: deserialize_time, }; export class TimeModel extends CoreDescriptionModel { defaults(): Backbone.ObjectHash { return { ...super.defaults(), _model_name: TimeModel.model_name, _view_name: TimeModel.view_name, value: null, disabled: false, min: null, max: null, step: 60, }; } static serializers: ISerializers = { ...CoreDescriptionModel.serializers, value: time_serializers, min: time_serializers, max: time_serializers, }; static model_name = 'TimeModel'; static view_name = 'TimeView'; } export class TimeView extends DescriptionView { render(): void { super.render(); this.el.classList.add('jupyter-widgets'); this.el.classList.add('widget-inline-hbox'); this.el.classList.add('widget-timepicker'); this._timepicker = document.createElement('input'); this._timepicker.setAttribute('type', 'time'); this._timepicker.id = this.label.htmlFor = uuid(); this.el.appendChild(this._timepicker); this.listenTo(this.model, 'change:value', this._update_value); this.listenTo(this.model, 'change', this.update2); this._update_value(); this.update2(); } /** * Update the contents of this view * * Called when the model is changed. The model may have been * changed by another view or by a state update from the back-end. */ update2(model?: Backbone.Model, options?: any): void { if (options === undefined || options.updated_view !== this) { this._timepicker!.disabled = this.model.get('disabled'); this._timepicker!.min = this.model.get('min'); this._timepicker!.max = this.model.get('max'); this._timepicker!.step = this.model.get('step'); } return super.update(); } events(): { [e: string]: string } { // Typescript doesn't understand that these functions are called, so we // specifically use them here so it knows they are being used. void this._picker_change; void this._picker_focusout; return { 'change [type="time"]': '_picker_change', 'focusout [type="time"]': '_picker_focusout', }; } private _update_value( model?: Backbone.Model, newValue?: any, options?: any ): void { if (options === undefined || options.updated_view !== this) { this._timepicker!.value = this.model.get('value'); } } private _picker_change(): void { if (!this._timepicker!.validity.badInput) { this.model.set('value', this._timepicker!.value, { updated_view: this }); this.touch(); } } private _picker_focusout(): void { if (this._timepicker!.validity.badInput) { this.model.set('value', null, { updated_view: this }); this.touch(); } } private _timepicker: HTMLInputElement | undefined; } ipywidgets-8.1.1/packages/controls/src/widget_upload.ts000066400000000000000000000107141450026722000233210ustar00rootroot00000000000000// Copyright (c) Jupyter Development Team. // Distributed under the terms of the Modified BSD License. import { CoreDOMWidgetModel } from './widget_core'; import { DOMWidgetView } from '@jupyter-widgets/base'; interface IFileUploaded { content: ArrayBuffer; name: string; size: number; type: string; last_modified: number; } export class FileUploadModel extends CoreDOMWidgetModel { defaults(): Backbone.ObjectHash { return { ...super.defaults(), _model_name: 'FileUploadModel', _view_name: 'FileUploadView', accept: '', description: 'Upload', disabled: false, icon: 'upload', button_style: '', multiple: false, value: [], // has type Array error: '', style: null, }; } static serializers = { ...CoreDOMWidgetModel.serializers, // use a dummy serializer for value to circumvent the default serializer. value: { serialize: (x: T): T => x }, }; } export class FileUploadView extends DOMWidgetView { el: HTMLButtonElement; fileInput: HTMLInputElement; preinitialize() { // Must set this before the initialize method creates the element this.tagName = 'button'; } render(): void { super.render(); this.el.classList.add('jupyter-widgets'); this.el.classList.add('widget-upload'); this.el.classList.add('jupyter-button'); this.fileInput = document.createElement('input'); this.fileInput.type = 'file'; this.fileInput.style.display = 'none'; this.el.addEventListener('click', () => { this.fileInput.click(); }); this.fileInput.addEventListener('click', () => { this.fileInput.value = ''; }); this.fileInput.addEventListener('change', () => { const promisesFile: Array> = []; Array.from(this.fileInput.files ?? []).forEach((file: File) => { promisesFile.push( new Promise((resolve, reject) => { const fileReader = new FileReader(); fileReader.onload = (): void => { // We know we can read the result as an array buffer since // we use the `.readAsArrayBuffer` method const content: ArrayBuffer = fileReader.result as ArrayBuffer; resolve({ content, name: file.name, type: file.type, size: file.size, last_modified: file.lastModified, }); }; fileReader.onerror = (): void => { reject(); }; fileReader.onabort = fileReader.onerror; fileReader.readAsArrayBuffer(file); }) ); }); Promise.all(promisesFile) .then((files: Array) => { this.model.set({ value: files, error: '', }); this.touch(); }) .catch((err) => { console.error('error in file upload: %o', err); this.model.set({ error: err, }); this.touch(); }); }); this.listenTo(this.model, 'change:button_style', this.update_button_style); this.set_button_style(); this.update(); // Set defaults. } update(): void { this.el.disabled = this.model.get('disabled'); this.el.setAttribute('title', this.model.get('tooltip')); const value: [] = this.model.get('value'); const description = `${this.model.get('description')} (${value.length})`; const icon = this.model.get('icon'); if (description.length || icon.length) { this.el.textContent = ''; if (icon.length) { const i = document.createElement('i'); i.classList.add('fa'); i.classList.add('fa-' + icon); if (description.length === 0) { i.classList.add('center'); } this.el.appendChild(i); } this.el.appendChild(document.createTextNode(description)); } this.fileInput.accept = this.model.get('accept'); this.fileInput.multiple = this.model.get('multiple'); return super.update(); } update_button_style(): void { this.update_mapped_classes( FileUploadView.class_map, 'button_style', this.el ); } set_button_style(): void { this.set_mapped_classes(FileUploadView.class_map, 'button_style', this.el); } static class_map = { primary: ['mod-primary'], success: ['mod-success'], info: ['mod-info'], warning: ['mod-warning'], danger: ['mod-danger'], }; } ipywidgets-8.1.1/packages/controls/src/widget_video.ts000066400000000000000000000051531450026722000231440ustar00rootroot00000000000000// Copyright (c) Jupyter Development Team. // Distributed under the terms of the Modified BSD License. import { DOMWidgetView } from '@jupyter-widgets/base'; import { CoreDOMWidgetModel } from './widget_core'; export class VideoModel extends CoreDOMWidgetModel { defaults(): Backbone.ObjectHash { return { ...super.defaults(), _model_name: 'VideoModel', _view_name: 'VideoView', format: 'mp4', width: '', height: '', autoplay: true, loop: true, controls: true, value: new DataView(new ArrayBuffer(0)), }; } static serializers = { ...CoreDOMWidgetModel.serializers, value: { serialize: (value: any): DataView => { return new DataView(value.buffer.slice(0)); }, }, }; } export class VideoView extends DOMWidgetView { render(): void { /** * Called when view is rendered. */ super.render(); this.luminoWidget.addClass('jupyter-widgets'); this.luminoWidget.addClass('widget-image'); this.update(); // Set defaults. } update(): void { /** * Update the contents of this view * * Called when the model is changed. The model may have been * changed by another view or by a state update from the back-end. */ let url; const format = this.model.get('format'); const value = this.model.get('value'); if (format !== 'url') { const blob = new Blob([value], { type: `video/${this.model.get('format')}`, }); url = URL.createObjectURL(blob); } else { url = new TextDecoder('utf-8').decode(value.buffer); } // Clean up the old objectURL const oldurl = this.el.src; this.el.src = url; if (oldurl) { URL.revokeObjectURL(oldurl); } // Height and width const width = this.model.get('width'); if (width !== undefined && width.length > 0) { this.el.setAttribute('width', width); } else { this.el.removeAttribute('width'); } const height = this.model.get('height'); if (height !== undefined && height.length > 0) { this.el.setAttribute('height', height); } else { this.el.removeAttribute('height'); } // Video attributes this.el.loop = this.model.get('loop'); this.el.autoplay = this.model.get('autoplay'); this.el.controls = this.model.get('controls'); return super.update(); } remove(): void { if (this.el.src) { URL.revokeObjectURL(this.el.src); } super.remove(); } preinitialize() { // Must set this before the initialize method creates the element this.tagName = 'video'; } el: HTMLVideoElement; } ipywidgets-8.1.1/packages/controls/test/000077500000000000000000000000001450026722000203075ustar00rootroot00000000000000ipywidgets-8.1.1/packages/controls/test/karma-cov.conf.js000066400000000000000000000007741450026722000234610ustar00rootroot00000000000000var path = require('path'); module.exports = function (config) { config.set({ basePath: '..', browsers: ['Firefox'], frameworks: ['mocha'], reporters: ['mocha', 'coverage'], files: ['test/build/coverage.js'], coverageReporter: { reporters: [ { type: 'text' }, { type: 'lcov', dir: 'test/coverage' }, { type: 'html', dir: 'test/coverage' }, ], }, port: 9876, colors: true, singleRun: true, logLevel: config.LOG_INFO, }); }; ipywidgets-8.1.1/packages/controls/test/karma.conf.js000066400000000000000000000004461450026722000226700ustar00rootroot00000000000000module.exports = function (config) { config.set({ basePath: '..', frameworks: ['mocha'], reporters: ['mocha'], files: ['test/build/bundle.js'], port: 9876, colors: true, singleRun: true, logLevel: config.LOG_INFO, browserNoActivityTimeout: 30000, }); }; ipywidgets-8.1.1/packages/controls/test/src/000077500000000000000000000000001450026722000210765ustar00rootroot00000000000000ipywidgets-8.1.1/packages/controls/test/src/dummy-manager.ts000066400000000000000000000055721450026722000242220ustar00rootroot00000000000000// Copyright (c) Jupyter Development Team. // Distributed under the terms of the Modified BSD License. import * as widgets from '../../lib'; import * as Backbone from 'backbone'; import * as base from '@jupyter-widgets/base'; import { WidgetModel, WidgetView } from '@jupyter-widgets/base'; import { ManagerBase } from '@jupyter-widgets/base-manager'; let numComms = 0; export class MockComm { constructor() { this.comm_id = `mock-comm-id-${numComms}`; numComms += 1; } on_open(fn: Function): void { this._on_open = fn; } on_close(fn: Function): void { this._on_close = fn; } on_msg(fn: Function): void { this._on_msg = fn; } _process_msg(msg: any): any { if (this._on_msg) { return this._on_msg(msg); } else { return Promise.resolve(); } } open(): string { if (this._on_open) { this._on_open(); } return ''; } close(): string { if (this._on_close) { this._on_close(); } return ''; } send(): string { return ''; } comm_id: string; target_name: string; _on_msg: Function | null = null; _on_open: Function | null = null; _on_close: Function | null = null; } class TestWidget extends base.WidgetModel { defaults(): Backbone.ObjectHash { return { ...super.defaults(), _model_module: 'test-widgets', _model_name: 'TestWidget', _model_module_version: '1.0.0', _view_module: 'test-widgets', _view_name: 'TestWidgetView', _view_module_version: '1.0.0', _view_count: null as any, }; } } class TestWidgetView extends base.WidgetView { render(): void { this._rendered += 1; super.render(); } remove(): void { this._removed += 1; super.remove(); } _removed = 0; _rendered = 0; } const testWidgets = { TestWidget, TestWidgetView }; export class DummyManager extends ManagerBase { constructor() { super(); this.el = window.document.createElement('div'); } protected loadClass( className: string, moduleName: string, moduleVersion: string ): Promise { if (moduleName === '@jupyter-widgets/controls') { if ((widgets as any)[className]) { return Promise.resolve((widgets as any)[className]); } else { return Promise.reject(`Cannot find class ${className}`); } } else if (moduleName === 'test-widgets') { if ((testWidgets as any)[className]) { return Promise.resolve((testWidgets as any)[className]); } else { return Promise.reject(`Cannot find class ${className}`); } } else { return Promise.reject(`Cannot find module ${moduleName}`); } } _get_comm_info(): Promise<{}> { return Promise.resolve({}); } _create_comm(): Promise { return Promise.resolve(new MockComm()); } el: HTMLElement; testClasses: { [key: string]: any } = testWidgets; } ipywidgets-8.1.1/packages/controls/test/src/index.ts000066400000000000000000000005141450026722000225550ustar00rootroot00000000000000// Copyright (c) Jupyter Development Team. // Distributed under the terms of the Modified BSD License. import './widget_date_test'; import './widget_datetime_test'; import './widget_time_test'; import './widget_selection_test'; import './widget_string_test'; import './widget_upload_test'; import './lumino/currentselection_test'; ipywidgets-8.1.1/packages/controls/test/src/lumino/000077500000000000000000000000001450026722000224015ustar00rootroot00000000000000ipywidgets-8.1.1/packages/controls/test/src/lumino/currentselection_test.ts000066400000000000000000000114171450026722000274040ustar00rootroot00000000000000// Copyright (c) Jupyter Development Team. // Distributed under the terms of the Modified BSD License. import { expect } from 'chai'; import { spy } from 'sinon'; import { ArrayExt } from '@lumino/algorithm'; import { Selection } from '../../../lib/lumino/currentselection'; function getLastMessage(subscriber: { getCall: (arg0: number) => { args: [any, any] }; }): any { const [, message] = subscriber.getCall(0).args; return message; } describe('Selection with items', function () { let selection: Selection; let subscriber: any; // subscribe to signals from selection let sequence: string[]; beforeEach(function () { sequence = ['value-0', 'value-1']; selection = new Selection(sequence) as Selection; selection.index = null; subscriber = spy(); selection.selectionChanged.connect(subscriber); }); it('be unselected', function () { expect(selection.index).to.be.null; expect(selection.value).to.be.null; }); it('set an item', function () { selection.index = 1; expect(selection.index).to.equal(1); expect(selection.value).to.equal('value-1'); }); it('dispatch a signal when setting an item', function () { selection.index = 1; expect(subscriber.calledOnce).to.be.true; const message = getLastMessage(subscriber); expect(message).to.deep.equal({ previousIndex: null, previousValue: null, currentIndex: 1, currentValue: 'value-1', }); }); it('set a value', function () { selection.value = 'value-0'; expect(selection.value).to.equal('value-0'); expect(selection.index).to.equal(0); }); it('dispatch a signal when setting a value', function () { selection.value = 'value-0'; expect(subscriber.calledOnce).to.be.true; const [, message] = subscriber.getCall(0).args; expect(message).to.deep.equal({ previousIndex: null, previousValue: null, currentIndex: 0, currentValue: 'value-0', }); }); it('set to null if the index is out of bounds', function () { selection.index = 22; expect(selection.index).to.be.null; expect(selection.value).to.be.null; }); it('set to null if the value is not present', function () { selection.value = 'not-a-value'; expect(selection.index).to.be.null; expect(selection.value).to.be.null; }); it('adjust after inserting an item', function () { const insertedValue = 'value-before-1'; ArrayExt.insert(sequence, 1, insertedValue); // sequence is now [value-0, value-before-1, value-1] selection.adjustSelectionForInsert(1, insertedValue); expect(selection.index).to.equal(1); expect(selection.value).to.equal(insertedValue); }); it('adjust after removing an item', function () { ArrayExt.removeAt(sequence, 0); selection.adjustSelectionForRemove(0, 'value-0'); expect(selection.index).to.be.null; expect(selection.value).to.be.null; }); it('clear the selection', function () { selection.clearSelection(); expect(selection.index).to.be.null; expect(selection.value).to.be.null; }); }); describe('Selection with items with an item selected', function () { let selection: Selection; let subscriber: any; // subscribe to signals from selection let sequence: string[]; beforeEach(function () { sequence = ['value-0', 'value-1']; selection = new Selection(sequence); selection.index = 1; subscriber = spy(); selection.selectionChanged.connect(subscriber); }); it('set another item', function () { selection.index = 0; expect(selection.index).to.equal(0); expect(selection.value).to.equal('value-0'); const message = getLastMessage(subscriber); expect(message).to.deep.equal({ previousIndex: 1, previousValue: 'value-1', currentIndex: 0, currentValue: 'value-0', }); }); it('adjust after inserting an item', function () { const insertedValue = 'value-before-1'; ArrayExt.insert(sequence, 1, insertedValue); selection.adjustSelectionForInsert(1, insertedValue); expect(selection.index).to.equal(2); expect(selection.value).to.equal('value-1'); }); it('adjust after removing an item', function () { ArrayExt.removeAt(sequence, 0); selection.adjustSelectionForRemove(0, 'value-0'); expect(selection.index).to.equal(0); expect(selection.value).to.equal('value-1'); }); it('adjust after removing the selected item', function () { ArrayExt.removeAt(sequence, 1); selection.adjustSelectionForRemove(1, 'value-1'); expect(selection.index).to.equal(0); expect(selection.value).to.equal('value-0'); const message = getLastMessage(subscriber); expect(message).to.deep.equal({ previousIndex: 1, previousValue: 'value-1', currentIndex: 0, currentValue: 'value-0', }); }); }); ipywidgets-8.1.1/packages/controls/test/src/utils.ts000066400000000000000000000053621450026722000226140ustar00rootroot00000000000000// Copyright (c) Jupyter Development Team. // Distributed under the terms of the Modified BSD License. import * as widgets from '@jupyter-widgets/base'; import * as services from '@jupyterlab/services'; import { DummyManager } from './dummy-manager'; import type { JSONValue, JSONObject } from '@lumino/coreutils'; let numComms = 0; export class MockComm implements widgets.IClassicComm { constructor() { this.comm_id = `mock-comm-id-${numComms}`; numComms += 1; } on_close(fn: Function | null): void { this._on_close = fn; } on_msg(fn: Function | null): void { this._on_msg = fn; } _process_msg(msg: services.KernelMessage.ICommMsgMsg): void | Promise { if (this._on_msg) { return this._on_msg(msg); } else { return Promise.resolve(); } } open( data: JSONValue, callbacks?: widgets.ICallbacks, metadata?: JSONObject, buffers?: ArrayBuffer[] | ArrayBufferView[] ): string { if (this._on_open) { this._on_open(); } return ''; } close( data?: JSONValue, callbacks?: widgets.ICallbacks, metadata?: JSONObject, buffers?: ArrayBuffer[] | ArrayBufferView[] ): string { if (this._on_close) { this._on_close(); } return ''; } send( data: JSONValue, callbacks?: widgets.ICallbacks, metadata?: JSONObject, buffers?: ArrayBuffer[] | ArrayBufferView[] ): string { return ''; } comm_id: string; target_name: string; _on_msg: Function | null = null; _on_close: Function | null = null; _on_open: Function | null = null; } export interface IConstructor { new (attributes?: any, options?: any): T; } export function createTestModel( constructor: IConstructor, attributes?: any, widget_manager?: widgets.WidgetModel['widget_manager'] ): T { const id = widgets.uuid(); const modelOptions = { widget_manager: widget_manager || new DummyManager(), model_id: id, }; return new constructor(attributes, modelOptions); } export async function createTestModelFromSerialized< T extends widgets.WidgetModel >( constructor: IConstructor, state?: any, widget_manager?: widgets.WidgetModel['widget_manager'] ): Promise { widget_manager = widget_manager || new DummyManager(); const attributes = await (constructor as any)._deserialize_state( state, widget_manager ); return createTestModel(constructor, attributes, widget_manager); } export function createTestView( model: widgets.WidgetModel, viewCtor: IConstructor ): Promise { const mgr = model.widget_manager as DummyManager; mgr.testClasses[model.get('_view_name')] = viewCtor; return model.widget_manager.create_view(model, undefined) as any; } ipywidgets-8.1.1/packages/controls/test/src/widget_date_test.ts000066400000000000000000000074121450026722000247710ustar00rootroot00000000000000import { DummyManager } from './dummy-manager'; import { expect } from 'chai'; import * as widgets from '../../lib'; function getDatepicker(parent: Element): HTMLInputElement { const elem = parent.querySelector('input[type="date"]'); return elem as HTMLInputElement; } describe('DatePickerView', function () { beforeEach(async function () { this.manager = new DummyManager(); const modelId = 'u-u-i-d'; this.model = await this.manager.new_model( { model_name: 'DatePickerModel', model_module: '@jupyter-widgets/controls', model_module_version: '1.0.0', model_id: modelId, }, { description: 'test-date-model' } ); }); it('construction', function () { const options = { model: this.model }; const view = new widgets.DatePickerView(options); expect(view).to.not.be.undefined; }); it('initial date value', function () { const testDate = new Date('2017-02-25'); this.model.set('value', testDate); const options = { model: this.model }; const view = new widgets.DatePickerView(options); view.render(); expect(getDatepicker(view.el).valueAsDate!.getTime()).to.equal( testDate.getTime() ); }); it('no initial value', function () { this.model.set('value', null); const options = { model: this.model }; const view = new widgets.DatePickerView(options); view.render(); expect(getDatepicker(view.el).valueAsDate).to.be.a('null'); }); it('set the model date', function () { this.model.set('value', null); const options = { model: this.model }; const view = new widgets.DatePickerView(options); view.render(); // Simulate setting the date in the datepicker const testDate = new Date('2015-02-22'); const datepicker = getDatepicker(view.el); datepicker.valueAsDate = testDate; datepicker.dispatchEvent(new Event('change', { bubbles: true })); expect(this.model.get('value').getTime()).to.equal(testDate.getTime()); }); it('update when the model changes', function () { this.model.set('value', null); const options = { model: this.model }; const view = new widgets.DatePickerView(options); view.render(); const testDate = new Date('2015-02-22'); this.model.set('value', testDate); const datepicker = getDatepicker(view.el); expect(datepicker.valueAsDate!.getTime()).to.equal(testDate.getTime()); }); }); describe('serialize_date', function () { it('null date', function () { expect(widgets.serialize_date(null)).to.be.a('null'); }); it('UTC date', function () { const date = new Date('Sat May 13 2017 00:00:00 UTC'); const expectedSerialization = { year: 2017, month: 4, date: 13, }; expect(widgets.serialize_date(date)).to.deep.equal(expectedSerialization); }); it('date in other locale as UTC', function () { const date = new Date('Sat May 13 2017 00:00:00 GMT+0100 (BST)'); const expectedSerialization = { year: 2017, month: 4, date: 12, // still on 12th May in UTC }; expect(widgets.serialize_date(date)).to.deep.equal(expectedSerialization); }); it('date before 100AD', function () { const date = new Date('0005-04-28'); const expectedSerialization = { year: 5, month: 3, date: 28, }; expect(widgets.serialize_date(date)).to.deep.equal(expectedSerialization); }); }); describe('deserialize_date', function () { it('null date', function () { expect(widgets.deserialize_date(null)).to.be.a('null'); }); it('valid date', function () { const serialized = { year: 2017, month: 4, date: 12, }; const expectedDate = new Date('2017-05-12'); expect(widgets.deserialize_date(serialized)!.getTime()).to.equal( expectedDate.getTime() ); }); }); ipywidgets-8.1.1/packages/controls/test/src/widget_datetime_test.ts000066400000000000000000000125561450026722000256550ustar00rootroot00000000000000// Copyright (c) Jupyter Development Team. // Distributed under the terms of the Modified BSD License. import { expect } from 'chai'; import { DummyManager } from './dummy-manager'; import { createTestModel, createTestView, createTestModelFromSerialized, } from './utils'; import { DatetimeModel, DatetimeView, NaiveDatetimeModel } from '../../lib'; describe('Datetime', () => { const date = new Date(); describe('DatetimeModel', () => { it('should be createable', () => { const model = createTestModel(DatetimeModel); expect(model).to.be.an.instanceof(DatetimeModel); expect(model.get('value')).to.be.a('null'); }); it('should be creatable with a value', () => { const state = { value: date }; const model = createTestModel(DatetimeModel, state); expect(model).to.be.instanceof(DatetimeModel); expect(model.get('value')).to.equal(date); }); it('should serialize as expected', async () => { const state_in = { value: { year: 2002, month: 2, date: 20, hours: 20, minutes: 2, seconds: 20, milliseconds: 2, }, }; const model = await createTestModelFromSerialized( DatetimeModel, state_in ); model.widget_manager.register_model( model.model_id, Promise.resolve(model) ); const state_out = await ( model.widget_manager as DummyManager ).get_state(); const models = Object.keys(state_out.state).map( (k) => state_out.state[k].state ); expect(models.length).to.equal(1); expect(models[0]._model_name).to.equal('DatetimeModel'); expect(models[0].value).to.eql(state_in.value); }); it('should deserialize to Date object', async () => { const state_in = { value: { year: 2002, month: 2, date: 20, hours: 20, minutes: 2, seconds: 20, milliseconds: 2, }, }; const model = await createTestModelFromSerialized( DatetimeModel, state_in ); expect(model.get('value')).to.eql( new Date(Date.UTC(2002, 2, 20, 20, 2, 20, 2)) ); }); it('should deserialize null', async () => { const state_in = { value: null }; const model = await createTestModelFromSerialized( DatetimeModel, state_in ); expect(model.get('value')).to.be.a('null'); }); it('should deserialize undefined', async () => { const state_in = {}; const model = await createTestModelFromSerialized( DatetimeModel, state_in ); expect(model.get('value')).to.be.a('null'); }); }); describe('DatetimeView', () => { it('should be createable', async () => { const state = {}; const model = createTestModel(DatetimeModel, state); const view = await createTestView(model, DatetimeView); expect(view).to.be.an.instanceof(DatetimeView); expect(view.model).to.equal(model); }); }); describe('NaiveDatetimeModel', () => { it('should be createable', () => { const model = createTestModel(NaiveDatetimeModel); expect(model).to.be.an.instanceof(NaiveDatetimeModel); expect(model.get('value')).to.be.a('null'); }); it('should be creatable with a value', () => { const state = { value: date }; const model = createTestModel(NaiveDatetimeModel, state); expect(model).to.be.an.instanceof(NaiveDatetimeModel); expect(model.get('value')).to.eql(date); }); it('should serialize as expected', async () => { const state_in = { value: { year: 2002, month: 2, date: 20, hours: 20, minutes: 2, seconds: 20, milliseconds: 2, }, }; const model = await createTestModelFromSerialized( NaiveDatetimeModel, state_in ); model.widget_manager.register_model( model.model_id, Promise.resolve(model) ); const state_out = await ( model.widget_manager as DummyManager ).get_state(); const models = Object.keys(state_out.state).map( (k) => state_out.state[k].state ); expect(models.length).to.eql(1); expect(models[0]._model_name).to.eql('NaiveDatetimeModel'); expect(models[0].value).to.eql(state_in.value); }); it('should deserialize to Date object', async () => { const state_in = { value: { year: 2002, month: 2, date: 20, hours: 20, minutes: 2, seconds: 20, milliseconds: 2, }, }; const model = await createTestModelFromSerialized( NaiveDatetimeModel, state_in ); expect(model.get('value')).to.eql(new Date(2002, 2, 20, 20, 2, 20, 2)); }); it('should deserialize null', async () => { const state_in = { value: null }; const model = await createTestModelFromSerialized( NaiveDatetimeModel, state_in ); expect(model.get('value')).to.be.a('null'); }); it('should deserialize undefined', async () => { const state_in = {}; const model = await createTestModelFromSerialized( NaiveDatetimeModel, state_in ); expect(model.get('value')).to.be.a('null'); }); }); }); ipywidgets-8.1.1/packages/controls/test/src/widget_selection_test.ts000066400000000000000000000125041450026722000260370ustar00rootroot00000000000000// Copyright (c) Jupyter Development Team. // Distributed under the terms of the Modified BSD License. import { expect } from 'chai'; import { createTestModel, createTestView } from './utils'; import { DropdownModel, DropdownView, SelectModel, SelectView, SelectMultipleModel, SelectMultipleView, } from '../../lib'; describe('Dropdown', () => { describe('DropdownModel', () => { it('should be createable', () => { const model = createTestModel(DropdownModel); expect(model).to.be.an.instanceof(DropdownModel); expect(model.get('index')).to.equal(''); expect(model.get('_options_labels')).to.eql([]); }); it('should be creatable with a state', () => { const state = { _options_labels: ['A', 'B', 'C'], index: 1 }; const model = createTestModel(DropdownModel, state); expect(model).to.be.an.instanceof(DropdownModel); expect(model.get('index')).to.equal(1); expect(model.get('_options_labels')).to.eql(['A', 'B', 'C']); }); }); describe('DropdownView', () => { it('should be createable', async () => { const model = createTestModel(DropdownModel); const view = await createTestView(model, DropdownView); expect(view).to.be.an.instanceof(DropdownView); expect(view.model).to.equal(model); }); it('should handle a set independent of order', async () => { const model = createTestModel(DropdownModel); const view = await createTestView(model, DropdownView); expect(view).to.be.an.instanceof(DropdownView); model.set_state({ _options_labels: ['A', 'B', 'C'], index: 1 }); expect(view.listbox.selectedIndex).to.equal(1, 'order 1 failed'); model.set_state({ _options_labels: [], index: null }); expect(view.listbox.selectedIndex).to.equal(-1); model.set_state({ index: 1, _options_labels: ['A', 'B', 'C'] }); expect(view.listbox.selectedIndex).to.equal(1, 'order 2 failed'); }); }); }); describe('Select', () => { describe('SelectModel', () => { it('should be createable', () => { const model = createTestModel(SelectModel); expect(model).to.be.an.instanceof(SelectModel); expect(model.get('index')).to.equal(''); expect(model.get('_options_labels')).to.eql([]); }); it('should be creatable with a state', () => { const state = { _options_labels: ['A', 'B', 'C'], index: 1 }; const model = createTestModel(SelectModel, state); expect(model).to.be.an.instanceof(SelectModel); expect(model.get('index')).to.equal(1); expect(model.get('_options_labels')).to.eql(['A', 'B', 'C']); }); }); describe('SelectView', () => { it('should be createable', async () => { const model = createTestModel(SelectModel); const view = await createTestView(model, SelectView); expect(view).to.be.an.instanceof(SelectView); expect(view.model).to.equal(model); }); it('should handle a set independent of order', async () => { const model = createTestModel(SelectModel); const view = await createTestView(model, SelectView); expect(view).to.be.an.instanceof(SelectView); model.set_state({ _options_labels: ['A', 'B', 'C'], index: 1 }); expect(view.listbox.selectedIndex).to.equal(1, 'order 1 failed'); model.set_state({ _options_labels: [], index: null }); expect(view.listbox.selectedIndex).to.equal(-1); model.set_state({ index: 1, _options_labels: ['A', 'B', 'C'] }); expect(view.listbox.selectedIndex).to.equal(1, 'order 2 failed'); }); }); }); describe('SelectMultiple', () => { describe('SelectMultipleModel', () => { it('should be createable', () => { const model = createTestModel(SelectMultipleModel); expect(model).to.be.an.instanceof(SelectMultipleModel); expect(model.get('index')).to.equal(''); expect(model.get('_options_labels')).to.eql([]); }); it('should be creatable with a state', () => { const state = { _options_labels: ['A', 'B', 'C'], index: 1 }; const model = createTestModel(SelectMultipleModel, state); expect(model).to.be.an.instanceof(SelectMultipleModel); expect(model.get('index')).to.equal(1); expect(model.get('_options_labels')).to.eql(['A', 'B', 'C']); }); }); describe('SelectMultipleView', () => { it('should be createable', async () => { const model = createTestModel(SelectMultipleModel); const view = await createTestView(model, SelectMultipleView); expect(view).to.be.an.instanceof(SelectMultipleView); expect(view.model).to.equal(model); }); it('should handle a set independent of order', async () => { const model = createTestModel(SelectMultipleModel); const view = await createTestView(model, SelectMultipleView); expect(view).to.be.an.instanceof(SelectMultipleView); model.set_state({ _options_labels: ['A', 'B', 'C'], index: [1, 2] }); expect([...view.listbox.selectedOptions].map((o) => o.index)).to.eql( [1, 2], 'order 1 failed' ); model.set_state({ _options_labels: [], index: null }); expect([...view.listbox.selectedOptions].map((o) => o.index)).to.eql([]); model.set_state({ index: [1, 2], _options_labels: ['A', 'B', 'C'] }); expect([...view.listbox.selectedOptions].map((o) => o.index)).to.eql( [1, 2], 'order 2 failed' ); }); }); }); ipywidgets-8.1.1/packages/controls/test/src/widget_string_test.ts000066400000000000000000000072321450026722000253620ustar00rootroot00000000000000import { DummyManager } from './dummy-manager'; import { expect } from 'chai'; import * as widgets from '../../lib'; describe('ComboboxView', function () { beforeEach(async function () { this.manager = new DummyManager(); const modelId = 'u-u-i-d'; this.model = await this.manager.new_model( { model_name: 'ComboboxModel', model_module: '@jupyter-widgets/controls', model_module_version: '1.0.0', model_id: modelId, }, { description: 'test-combo-model' } ); }); it('construction', function () { const options = { model: this.model }; const view = new widgets.ComboboxView(options); expect(view).to.not.be.undefined; }); it('no invalid flag when not checking', function () { this.model.set({ value: 'ABC', options: ['ABCDEF', '123', 'foobar'], ensure_option: false, }); const options = { model: this.model }; const view = new widgets.ComboboxView(options); view.render(); expect( view.textbox.classList.contains('jpwidgets-invalidComboValue') ).to.equal(false); }); it('no invalid flag with valid value', function () { this.model.set({ value: 'ABCDEF', options: ['ABCDEF', '123', 'foobar'], ensure_option: true, }); const options = { model: this.model }; const view = new widgets.ComboboxView(options); view.render(); expect( view.textbox.classList.contains('jpwidgets-invalidComboValue') ).to.equal(false); }); it('sets invalid flag when it should', function () { this.model.set({ value: 'ABC', options: ['ABCDEF', '123', 'foobar'], ensure_option: true, }); const options = { model: this.model }; const view = new widgets.ComboboxView(options); view.render(); expect( view.textbox.classList.contains('jpwidgets-invalidComboValue') ).to.equal(true); }); it('escapes characters in options', function () { const input = [ 'foo"', '"> { const timeString = new Date().toISOString().split('T', 2)[1].slice(0, -1); describe('TimeModel', () => { it('should be createable', () => { const model = createTestModel(TimeModel); expect(model).to.be.an.instanceof(TimeModel); expect(model.get('value')).to.be.a('null'); }); it('should be creatable with a value', () => { const state = { value: timeString }; const model = createTestModel(TimeModel, state); expect(model).to.be.an.instanceof(TimeModel); expect(model.get('value')).to.equal(timeString); }); it('should serialize as expected', async () => { const state_in = { value: { hours: 13, minutes: 37, seconds: 42, milliseconds: 333, }, }; const model = await createTestModelFromSerialized(TimeModel, state_in); model.widget_manager.register_model( model.model_id, Promise.resolve(model) ); const state_out = await ( model.widget_manager as DummyManager ).get_state(); const models = Object.keys(state_out.state).map( (k) => state_out.state[k].state ); expect(models.length).to.equal(1); expect(models[0]._model_name).to.equal('TimeModel'); expect(models[0].value).to.eql(state_in.value); }); it('should deserialize to short form', async () => { const state_in = { value: { hours: 13, minutes: 37, seconds: 0, milliseconds: 0, }, }; const model = await createTestModelFromSerialized(TimeModel, state_in); expect(model.get('value')).to.equal('13:37'); }); it('should deserialize to medium form', async () => { const state_in = { value: { hours: 13, minutes: 37, seconds: 42, milliseconds: 0, }, }; const model = await createTestModelFromSerialized(TimeModel, state_in); expect(model.get('value')).to.equal('13:37:42'); }); it('should not be thrown off by irrelevant zeroes', async () => { const state_in = { value: { hours: 0, minutes: 0, seconds: 0, milliseconds: 7, }, }; const model = await createTestModelFromSerialized(TimeModel, state_in); expect(model.get('value')).to.equal('00:00:00.007'); }); it('should deserialize null', async () => { const state_in = { value: null }; const model = await createTestModelFromSerialized(TimeModel, state_in); expect(model.get('value')).to.be.a('null'); }); it('should deserialize undefined', async () => { const state_in = {}; const model = await createTestModelFromSerialized(TimeModel, state_in); expect(model.get('value')).to.be.a('null'); }); }); describe('TimeView', () => { it('should be createable', async () => { const state = {}; const model = createTestModel(TimeModel, state); const view = await createTestView(model, TimeView); expect(view).to.be.an.instanceof(TimeView); expect(view.model).to.equal(model); }); it('should be updated when the value changes', async () => { const state = {}; const model = createTestModel(TimeModel, state); const view = await createTestView(model, TimeView); model.set('value', timeString); const picker = view.el.querySelector( 'input[type="time"]' ) as HTMLInputElement; expect(picker.value).to.equal(timeString); }); }); }); ipywidgets-8.1.1/packages/controls/test/src/widget_upload_test.ts000066400000000000000000000107431450026722000253410ustar00rootroot00000000000000import { DummyManager } from './dummy-manager'; import { expect } from 'chai'; import * as widgets from '../../lib'; function getFileInput(view: widgets.FileUploadView): HTMLInputElement { const elem = view.fileInput; return elem as HTMLInputElement; } function getProxyButton(view: widgets.FileUploadView): HTMLButtonElement { const elem = view.el; return elem as HTMLButtonElement; } function fileInputForModel(model: widgets.FileUploadModel): HTMLInputElement { // For a given model, create and render a view and return the // view's input. const options = { model }; const view = new widgets.FileUploadView(options); view.render(); return getFileInput(view); } function proxyButtonForModel( model: widgets.FileUploadModel ): HTMLButtonElement { const options = { model }; const view = new widgets.FileUploadView(options); view.render(); return getProxyButton(view); } function simulateUpload(fileInput: HTMLInputElement, files: Array): void { // The 'files' property on an input element is normally not writeable // programmatically, so we explicitly overwrite it. // The type of fileInput.files is FileList, an Array with an // extra `.item` method. const fileList: any = files; fileList.item = (index: number): File => files[index]; Object.defineProperty(fileInput, 'files', { value: fileList, writable: false, }); fileInput.dispatchEvent(new Event('change', { bubbles: true })); } describe('FileUploadView', function () { beforeEach(async function () { this.manager = new DummyManager(); const modelId = 'u-u-i-d'; this.model = await this.manager.new_model( { model_name: 'FileUploadModel', model_module: '@jupyter-widgets/controls', model_module_version: '1.0.0', model_id: modelId, }, {} ); }); it('construction', function () { const options = { model: this.model }; const view = new widgets.FileUploadView(options); expect(view).to.not.be.undefined; }); it('default options', function () { const options = { model: this.model }; const view = new widgets.FileUploadView(options); view.render(); const fileInput = getFileInput(view); const proxyButton = getProxyButton(view); expect(fileInput.disabled).to.be.false; expect(fileInput.multiple).to.be.false; expect(proxyButton.innerText).to.equal('Upload (0)'); expect(proxyButton.querySelector('i')).to.not.be.null; expect(proxyButton.querySelector('i')!.className).to.equal('fa fa-upload'); }); it('multiple', function () { this.model.set('multiple', true); const fileInput = fileInputForModel(this.model); expect(fileInput.multiple).to.be.true; }); it('accept', function () { this.model.set('accept', 'text/csv'); const fileInput = fileInputForModel(this.model); expect(fileInput.accept).to.equal('text/csv'); }); it('disabled', function () { this.model.set('disabled', true); const proxyButton = proxyButtonForModel(this.model); expect(proxyButton.disabled).to.be.true; }); it('no icon', function () { this.model.set('icon', ''); const proxyButton = proxyButtonForModel(this.model); expect(proxyButton.querySelector('i')).to.be.null; }); it('other icon', function () { this.model.set('icon', 'check'); const proxyButton = proxyButtonForModel(this.model); expect(proxyButton.querySelector('i')).to.not.be.null; expect(proxyButton.querySelector('i')!.className).to.equal('fa fa-check'); }); it('description', function () { this.model.set('description', 'some text'); const proxyButton = proxyButtonForModel(this.model); expect(proxyButton.innerText).to.equal('some text (0)'); }); it('set model value on upload', function (done) { const fileInput = fileInputForModel(this.model); const lastModified = Date.UTC(2019, 0, 0); const uploadedFile = new File(['some file content'], 'some-name', { type: 'text/plain', lastModified, }); simulateUpload(fileInput, [uploadedFile]); setTimeout(() => { expect(this.model.get('value')).to.have.length(1); const [fileInModel] = this.model.get('value'); expect(fileInModel.name).to.equal('some-name'); expect(fileInModel.type).to.equal('text/plain'); expect(fileInModel.last_modified).to.equal(lastModified); const contentInModel = new TextDecoder('utf-8').decode( fileInModel.content ); expect(contentInModel).to.equal('some file content'); done(); }, 100); }); }); ipywidgets-8.1.1/packages/controls/test/tsconfig.json000066400000000000000000000003321450026722000230140ustar00rootroot00000000000000{ "extends": "../../../tsconfigbase", "compilerOptions": { "types": ["mocha"], "outDir": "build", "rootDir": "src" }, "include": ["src/**/*"], "references": [ { "path": ".." } ] } ipywidgets-8.1.1/packages/controls/test/webpack-cov.conf.js000066400000000000000000000012631450026722000237740ustar00rootroot00000000000000var path = require('path'); module.exports = { entry: './test/build/index.js', output: { path: __dirname + '/build', filename: 'coverage.js', }, bail: true, module: { loaders: [ { test: /\.css$/, use: ['style-loader', 'css-loader'] }, { test: /\.md$/, type: 'asset/source' }, { test: /\.html$/, type: 'asset/resource', generator: { filename: '[name].[ext]' }, }, { test: /\.ipynb$/, type: 'json' }, ], preLoaders: [ // instrument only testing sources with Istanbul { test: /\.js$/, include: path.resolve('lib/'), loader: 'istanbul-instrumenter', }, ], }, }; ipywidgets-8.1.1/packages/controls/test/webpack.conf.js000066400000000000000000000010501450026722000232010ustar00rootroot00000000000000var path = require('path'); module.exports = { entry: './test/build/index.js', output: { path: __dirname + '/build', filename: 'bundle.js', }, bail: true, module: { rules: [ { test: /\.css$/, use: ['style-loader', 'css-loader'] }, { test: /\.md$/, type: 'asset/source' }, { test: /\.html$/, type: 'asset/resource', generator: { filename: '[name].[ext]' }, }, { test: /\.ipynb$/, type: 'json' }, ], }, mode: 'development', resolve: { fallback: { util: false } }, }; ipywidgets-8.1.1/packages/controls/tsconfig.json000066400000000000000000000003441450026722000220400ustar00rootroot00000000000000{ "extends": "../../tsconfigbase", "compilerOptions": { "outDir": "lib", "rootDir": "src", "types": ["mathjax", "node"] }, "include": ["src/**/*"], "references": [ { "path": "../base" } ] } ipywidgets-8.1.1/packages/html-manager/000077500000000000000000000000001450026722000200415ustar00rootroot00000000000000ipywidgets-8.1.1/packages/html-manager/.gitignore000066400000000000000000000000131450026722000220230ustar00rootroot00000000000000lib/ dist/ ipywidgets-8.1.1/packages/html-manager/amd-public-path.js000066400000000000000000000012071450026722000233460ustar00rootroot00000000000000// In an AMD module, we set the public path using the magic requirejs 'module' dependency // See https://github.com/requirejs/requirejs/wiki/Differences-between-the-simplified-CommonJS-wrapper-and-standard-AMD-define#module // Since 'module' is a requirejs magic module, we must include 'module' in the webpack externals configuration. var module = require('module'); var url = new URL(module.uri, document.location); // Using lastIndexOf('/')+1 gives us the empty string if there is no '/', so pathname becomes '/' url.pathname = url.pathname.slice(0, url.pathname.lastIndexOf('/') + 1); __webpack_public_path__ = `${url.origin}${url.pathname}`; ipywidgets-8.1.1/packages/html-manager/css/000077500000000000000000000000001450026722000206315ustar00rootroot00000000000000ipywidgets-8.1.1/packages/html-manager/css/output.css000066400000000000000000000006641450026722000227110ustar00rootroot00000000000000/*----------------------------------------------------------------------------- | Copyright (c) Jupyter Development Team. | Distributed under the terms of the Modified BSD License. |----------------------------------------------------------------------------*/ /* */ .jupyter-widgets.widget-output .jp-OutputArea-prompt, /* */ .jupyter-widgets.jupyter-widget-output .jp-OutputArea-prompt { display: none; } ipywidgets-8.1.1/packages/html-manager/package.json000066400000000000000000000053071450026722000223340ustar00rootroot00000000000000{ "name": "@jupyter-widgets/html-manager", "version": "1.0.9", "description": "Standalone package for rendering Jupyter widgets outside notebooks", "homepage": "https://github.com/jupyter-widgets/ipywidgets#readme", "bugs": { "url": "https://github.com/jupyter-widgets/ipywidgets/issues" }, "repository": { "type": "git", "url": "https://github.com/jupyter-widgets/ipywidgets.git" }, "license": "BSD-3-Clause", "author": "Jupyter Project", "main": "lib/index.js", "typings": "lib/index.d.ts", "files": [ "lib/**/*.d.ts", "lib/**/*.js", "dist/", "css/*.css" ], "scripts": { "build": "npm run build:src && webpack && npm run build:embed-amd", "build:embed-amd": "node scripts/concat-amd-build.js && rimraf dist/amd", "build:src": "tsc --build", "build:test": "tsc --build test && webpack --config test/webpack.conf.js", "clean": "rimraf lib && rimraf tsconfig.tsbuildinfo && rimraf dist", "prepublish": "npm run clean && npm run build", "test": "npm run test:unit", "test:unit": "npm run test:unit:firefox && npm run test:unit:chrome", "test:unit:chrome": "npm run test:unit:default -- --browsers=Chrome", "test:unit:default": "npm run build:test && karma start test/karma.conf.js --log-level debug --browsers=Firefox", "test:unit:firefox": "npm run test:unit:default -- --browsers=Firefox", "test:unit:firefox:headless": "npm run test:unit:default -- --browsers=FirefoxHeadless" }, "dependencies": { "@fortawesome/fontawesome-free": "^5.12.0", "@jupyter-widgets/base": "^6.0.6", "@jupyter-widgets/base-manager": "^1.0.7", "@jupyter-widgets/controls": "^5.0.7", "@jupyter-widgets/output": "^6.0.6", "@jupyter-widgets/schema": "^0.5.3", "@jupyterlab/outputarea": "^3.0.0 || ^4.0.0", "@jupyterlab/rendermime": "^3.0.0 || ^4.0.0", "@jupyterlab/rendermime-interfaces": "^3.0.0 || ^4.0.0", "@lumino/messaging": "^1.10.1 || ^2.1", "@lumino/widgets": "^1.30.0 || ^2.1", "ajv": "^8.6.0", "jquery": "^3.1.1" }, "devDependencies": { "@types/jquery": "^3.5.16", "@types/mocha": "^9.0.0", "@types/node": "^17.0.2", "@types/sanitize-html": "^2.6.0", "chai": "^4.0.0", "css-loader": "^6.5.1", "karma": "^6.3.3", "karma-chrome-launcher": "^3.1.0", "karma-firefox-launcher": "^2.1.1", "karma-ie-launcher": "^1.0.0", "karma-mocha": "^2.0.1", "karma-mocha-reporter": "^2.2.5", "mocha": "^9.0.0", "postcss": "^8.3.2", "postcss-cssnext": "^3.1.0", "postcss-import": "^14.0.2", "postcss-loader": "^6.1.0", "rimraf": "^3.0.2", "style-loader": "^3.3.1", "typescript": "~4.9.4", "webpack": "^5.65.0", "webpack-cli": "^4.7.2" } } ipywidgets-8.1.1/packages/html-manager/scripts/000077500000000000000000000000001450026722000215305ustar00rootroot00000000000000ipywidgets-8.1.1/packages/html-manager/scripts/concat-amd-build.js000077500000000000000000000015131450026722000251740ustar00rootroot00000000000000// Copyright (c) Jupyter Development Team. // Distributed under the terms of the Modified BSD License. var fs = require('fs'); // Make a script file that defines all of the relevant AMD modules var files = ['base.js', 'controls.js', 'index.js', 'libembed-amd.js']; var output = files .map((f) => { return fs.readFileSync('./dist/amd/' + f).toString(); }) .join(';\n\n'); fs.writeFileSync('./dist/libembed-amd.js', output); // Make a script that has all of the above AMD modules and runs a function which // renders all of the widgets on page load automatically. files = [ 'base.js', 'controls.js', 'index.js', 'libembed-amd.js', 'embed-amd-render.js', ]; var output = files .map((f) => { return fs.readFileSync('./dist/amd/' + f).toString(); }) .join(';\n\n'); fs.writeFileSync('./dist/embed-amd.js', output); ipywidgets-8.1.1/packages/html-manager/src/000077500000000000000000000000001450026722000206305ustar00rootroot00000000000000ipywidgets-8.1.1/packages/html-manager/src/embed-amd-render.ts000066400000000000000000000006721450026722000242750ustar00rootroot00000000000000// Copyright (c) Jupyter Development Team. // Distributed under the terms of the Modified BSD License. (window as any).require( ['@jupyter-widgets/html-manager/dist/libembed-amd'], function (embed: { renderWidgets: { (): void; (): void } }) { if (document.readyState === 'complete') { embed.renderWidgets(); } else { window.addEventListener('load', function () { embed.renderWidgets(); }); } } ); ipywidgets-8.1.1/packages/html-manager/src/embed.ts000066400000000000000000000006411450026722000222550ustar00rootroot00000000000000// Copyright (c) Jupyter Development Team. // Distributed under the terms of the Modified BSD License. import { HTMLManager } from './index'; import { renderWidgets } from './libembed'; // Render the widgets that we can if (!(window as any)._jupyter_widget_embedder) { (window as any)._jupyter_widget_embedder = true; window.addEventListener('load', () => { renderWidgets(() => new HTMLManager()); }); } ipywidgets-8.1.1/packages/html-manager/src/htmlmanager.ts000066400000000000000000000101021450026722000234710ustar00rootroot00000000000000// Copyright (c) Jupyter Development Team. // Distributed under the terms of the Modified BSD License. import * as widgets from '@jupyter-widgets/controls'; import * as base from '@jupyter-widgets/base'; import * as outputWidgets from './output'; import { ManagerBase } from '@jupyter-widgets/base-manager'; import { MessageLoop } from '@lumino/messaging'; import * as LuminoWidget from '@lumino/widgets'; import { RenderMimeRegistry, standardRendererFactories, } from '@jupyterlab/rendermime'; import { WidgetRenderer, WIDGET_MIMETYPE } from './output_renderers'; import { WidgetModel, WidgetView, DOMWidgetView } from '@jupyter-widgets/base'; export class HTMLManager extends ManagerBase { constructor(options?: { loader?: (moduleName: string, moduleVersion: string) => Promise; }) { super(); this.loader = options?.loader; this.renderMime = new RenderMimeRegistry({ initialFactories: standardRendererFactories, }); this.renderMime.addFactory( { safe: false, mimeTypes: [WIDGET_MIMETYPE], createRenderer: (options) => new WidgetRenderer(options, this), }, 0 ); this._viewList = new Set(); window.addEventListener('resize', () => { this._viewList.forEach((view) => { MessageLoop.postMessage( view.luminoWidget, LuminoWidget.Widget.ResizeMessage.UnknownSize ); }); }); } /** * Display the specified view. Element where the view is displayed * is specified in the `options.el` argument. */ async display_view( view: Promise | DOMWidgetView, el: HTMLElement ): Promise { let v: DOMWidgetView; try { v = await view; } catch (error) { const msg = `Could not create a view for ${view}`; console.error(msg); const ModelCls = base.createErrorWidgetModel(error, msg); const errorModel = new ModelCls(); v = new base.ErrorWidgetView({ model: errorModel, }); v.render(); } LuminoWidget.Widget.attach(v.luminoWidget, el); this._viewList.add(v); v.once('remove', () => { this._viewList.delete(v); }); } /** * Placeholder implementation for _get_comm_info. */ _get_comm_info(): Promise<{}> { return Promise.resolve({}); } /** * Placeholder implementation for _create_comm. */ _create_comm( comm_target_name: string, model_id: string, data?: any, metadata?: any, buffers?: ArrayBuffer[] | ArrayBufferView[] ): Promise { return Promise.resolve({ on_close: () => { return; }, on_msg: () => { return; }, close: () => { return; }, }); } /** * Load a class and return a promise to the loaded object. */ protected loadClass( className: string, moduleName: string, moduleVersion: string ): Promise { return new Promise((resolve, reject) => { if (moduleName === '@jupyter-widgets/base') { resolve(base); } else if (moduleName === '@jupyter-widgets/controls') { resolve(widgets); } else if (moduleName === '@jupyter-widgets/output') { resolve(outputWidgets); } else if (this.loader !== undefined) { resolve(this.loader(moduleName, moduleVersion)); } else { reject(`Could not load module ${moduleName}@${moduleVersion}`); } }).then((module) => { if ((module as any)[className]) { return (module as any)[className]; } else { return Promise.reject( `Class ${className} not found in module ${moduleName}@${moduleVersion}` ); } }); } /** * Renderers for contents of the output widgets * * Defines how outputs in the output widget should be rendered. */ renderMime: RenderMimeRegistry; /** * A loader for a given module name and module version, and returns a promise to a module */ loader: | ((moduleName: string, moduleVersion: string) => Promise) | undefined; private _viewList: Set; } ipywidgets-8.1.1/packages/html-manager/src/index.ts000066400000000000000000000007711450026722000223140ustar00rootroot00000000000000// Copyright (c) Jupyter Development Team. // Distributed under the terms of the Modified BSD License. export * from './htmlmanager'; export { requireLoader } from './libembed-amd'; export const version = require('../package.json').version; export function generateEmbedScript( widgetState: any, imageDataUrl: string ): string { return ` `; } ipywidgets-8.1.1/packages/html-manager/src/libembed-amd.ts000066400000000000000000000075521450026722000235130ustar00rootroot00000000000000// Copyright (c) Jupyter Development Team. // Distributed under the terms of the Modified BSD License. import * as libembed from './libembed'; let cdn = 'https://cdn.jsdelivr.net/npm/'; let onlyCDN = false; // find the data-cdn for any script tag, assuming it is only used for embed-amd.js const scripts = document.getElementsByTagName('script'); Array.prototype.forEach.call(scripts, (script: HTMLScriptElement) => { cdn = script.getAttribute('data-jupyter-widgets-cdn') || cdn; onlyCDN = onlyCDN || script.hasAttribute('data-jupyter-widgets-cdn-only'); }); /** * Load a package using requirejs and return a promise * * @param pkg Package name or names to load */ const requirePromise = function (pkg: string | string[]): Promise { return new Promise((resolve, reject) => { const require = (window as any).requirejs; if (require === undefined) { reject('Requirejs is needed, please ensure it is loaded on the page.'); } else { require(pkg, resolve, reject); } }); }; function moduleNameToCDNUrl(moduleName: string, moduleVersion: string): string { let packageName = moduleName; let fileName = 'index'; // default filename // if a '/' is present, like 'foo/bar', packageName is changed to 'foo', and path to 'bar' // We first find the first '/' let index = moduleName.indexOf('/'); if (index != -1 && moduleName[0] == '@') { // if we have a namespace, it's a different story // @foo/bar/baz should translate to @foo/bar and baz // so we find the 2nd '/' index = moduleName.indexOf('/', index + 1); } if (index != -1) { fileName = moduleName.substr(index + 1); packageName = moduleName.substr(0, index); } return `${cdn}${packageName}@${moduleVersion}/dist/${fileName}`; } /** * Load an amd module locally and fall back to specified CDN if unavailable. * * @param moduleName The name of the module to load.. * @param version The semver range for the module, if loaded from a CDN. * * By default, the CDN service used is jsDelivr. However, this default can be * overridden by specifying another URL via the HTML attribute * "data-jupyter-widgets-cdn" on a script tag of the page. * * The semver range is only used with the CDN. */ export function requireLoader( moduleName: string, moduleVersion: string ): Promise { const require = (window as any).requirejs; if (require === undefined) { throw new Error( 'Requirejs is needed, please ensure it is loaded on the page.' ); } function loadFromCDN(): Promise { const conf: { paths: { [key: string]: string } } = { paths: {} }; conf.paths[moduleName] = moduleNameToCDNUrl(moduleName, moduleVersion); require.config(conf); return requirePromise([`${moduleName}`]); } if (onlyCDN) { console.log(`Loading from ${cdn} for ${moduleName}@${moduleVersion}`); return loadFromCDN(); } return requirePromise([`${moduleName}`]).catch((err) => { const failedId = err.requireModules && err.requireModules[0]; if (failedId) { require.undef(failedId); console.log(`Falling back to ${cdn} for ${moduleName}@${moduleVersion}`); return loadFromCDN(); } }); } /** * Render widgets in a given element. * * @param element (default document.documentElement) The element containing widget state and views. * @param loader (default requireLoader) The function used to look up the modules containing * the widgets' models and views classes. (The default loader looks them up on jsDelivr) */ export function renderWidgets( element = document.documentElement, loader: ( moduleName: string, moduleVersion: string ) => Promise = requireLoader ): void { requirePromise(['@jupyter-widgets/html-manager']).then((htmlmanager) => { const managerFactory = (): any => { return new htmlmanager.HTMLManager({ loader: loader }); }; libembed.renderWidgets(managerFactory, element); }); } ipywidgets-8.1.1/packages/html-manager/src/libembed.ts000066400000000000000000000102441450026722000227440ustar00rootroot00000000000000// Copyright (c) Jupyter Development Team. // Distributed under the terms of the Modified BSD License. declare let __webpack_public_path__: string; /* eslint-disable prefer-const, @typescript-eslint/no-unused-vars */ __webpack_public_path__ = (window as any).__jupyter_widgets_assets_path__ || __webpack_public_path__; /* eslint-enable prefer-const, @typescript-eslint/no-unused-vars */ import '@fortawesome/fontawesome-free/css/all.min.css'; import '@fortawesome/fontawesome-free/css/v4-shims.min.css'; import '@lumino/widgets/style/index.css'; import '@jupyter-widgets/controls/css/widgets-base.css'; // If lab variables are not found, we set them (we don't want to reset the variables if they are already defined) if ( getComputedStyle(document.documentElement).getPropertyValue( '--jp-layout-color0' ) === '' ) { require('@jupyter-widgets/controls/css/labvariables.css'); } // Used just for the typing. We must not import the javascript because we don't // want to include it in the require embedding. import { HTMLManager } from './index'; // Load json schema validator import Ajv from 'ajv'; import { IManagerState } from '@jupyter-widgets/base-manager'; const widget_state_schema = require('@jupyter-widgets/schema').v2.state; const widget_view_schema = require('@jupyter-widgets/schema').v2.view; interface IViewState { version_major: number; version_minor: number; model_id: string; } const ajv = new Ajv(); const model_validate = ajv.compile(widget_state_schema); const view_validate = ajv.compile(widget_view_schema); /** * Render the inline widgets inside a DOM element. * * @param managerFactory A function that returns a new HTMLManager * @param element (default document.documentElement) The document element in which to process for widget state. */ export async function renderWidgets( managerFactory: () => HTMLManager, element: HTMLElement = document.documentElement ): Promise { const tags = element.querySelectorAll( 'script[type="application/vnd.jupyter.widget-state+json"]' ); await Promise.all( Array.from(tags).map(async (t) => renderManager(element, JSON.parse(t.innerHTML), managerFactory) ) ); } /** * Create a widget manager for a given widget state. * * @param element The DOM element to search for widget view state script tags * @param widgetState The widget manager state * * #### Notes * * Widget view state should be in script tags with type * "application/vnd.jupyter.widget-view+json". Any such script tag containing a * model id the manager knows about is replaced with a rendered view. * Additionally, if the script tag has a prior img sibling with class * 'jupyter-widget', then that img tag is deleted. */ async function renderManager( element: HTMLElement, widgetState: unknown, managerFactory: () => HTMLManager ): Promise { const valid = model_validate(widgetState); if (!valid) { throw new Error(`Model state has errors: ${model_validate.errors}`); } const manager = managerFactory(); const models = await manager.set_state(widgetState as IManagerState); const tags = element.querySelectorAll( 'script[type="application/vnd.jupyter.widget-view+json"]' ); await Promise.all( Array.from(tags).map(async (viewtag) => { const widgetViewObject = JSON.parse(viewtag.innerHTML); const valid = view_validate(widgetViewObject); if (!valid) { throw new Error(`View state has errors: ${view_validate.errors}`); } const model_id: string = widgetViewObject.model_id; const model = models.find((item) => item.model_id == model_id); if (model !== undefined && viewtag.parentElement !== null) { const prev = viewtag.previousElementSibling; if ( prev && prev.tagName === 'img' && prev.classList.contains('jupyter-widget') ) { viewtag.parentElement.removeChild(prev); } const widgetTag = document.createElement('div'); widgetTag.className = 'widget-subarea'; viewtag.parentElement.insertBefore(widgetTag, viewtag); const view = await manager.create_view(model); manager.display_view(view, widgetTag); } }) ); } ipywidgets-8.1.1/packages/html-manager/src/output.ts000066400000000000000000000046171450026722000225500ustar00rootroot00000000000000// Copyright (c) Jupyter Development Team. // Distributed under the terms of the Modified BSD License. import * as outputBase from '@jupyter-widgets/output'; import { JupyterLuminoPanelWidget } from '@jupyter-widgets/base'; import { OutputAreaModel, OutputArea } from '@jupyterlab/outputarea'; import { HTMLManager } from './htmlmanager'; import $ from 'jquery'; import '../css/output.css'; export class OutputModel extends outputBase.OutputModel { defaults(): Backbone.ObjectHash { return { ...super.defaults(), msg_id: '', outputs: [], }; } initialize(attributes: any, options: any): void { super.initialize(attributes, options); this._outputs = new OutputAreaModel({ trusted: true }); this.listenTo(this, 'change:outputs', this.setOutputs); this.setOutputs(); } get outputs(): OutputAreaModel { return this._outputs; } clear_output(wait = false): void { this._outputs.clear(wait); } setOutputs(model?: any, value?: any, options?: any): void { if (!(options && options.newMessage)) { // fromJSON does not clear the existing output this.clear_output(); // fromJSON does not copy the message, so we make a deep copy this._outputs.fromJSON(JSON.parse(JSON.stringify(this.get('outputs')))); } } private _outputs: OutputAreaModel; widget_manager: HTMLManager; } export class OutputView extends outputBase.OutputView { _createElement(tagName: string): HTMLElement { this.luminoWidget = new JupyterLuminoPanelWidget({ view: this }); return this.luminoWidget.node; } _setElement(el: HTMLElement): void { if (this.el || el !== this.luminoWidget.node) { // Boxes don't allow setting the element beyond the initial creation. throw new Error('Cannot reset the DOM element.'); } this.el = this.luminoWidget.node; this.$el = $(this.luminoWidget.node); } render(): void { super.render(); this._outputView = new OutputArea({ rendermime: this.model.widget_manager.renderMime, model: this.model.outputs, }); this.luminoWidget.insertWidget(0, this._outputView); this.luminoWidget.addClass('jupyter-widgets'); this.luminoWidget.addClass('widget-output'); this.update(); } remove(): any { this._outputView.dispose(); return super.remove(); } model: OutputModel; private _outputView: OutputArea; luminoWidget: JupyterLuminoPanelWidget; } ipywidgets-8.1.1/packages/html-manager/src/output_renderers.ts000066400000000000000000000026451450026722000246200ustar00rootroot00000000000000// Copyright (c) Jupyter Development Team. // Distributed under the terms of the Modified BSD License. import { Widget } from '@lumino/widgets'; import { IRenderMime } from '@jupyterlab/rendermime-interfaces'; import { HTMLManager } from './htmlmanager'; export const WIDGET_MIMETYPE = 'application/vnd.jupyter.widget-view+json'; // Renderer to allow the output widget to render sub-widgets export class WidgetRenderer extends Widget implements IRenderMime.IRenderer { constructor(options: IRenderMime.IRendererOptions, manager: HTMLManager) { super(); this.mimeType = options.mimeType; this._manager = manager; } async renderModel(model: IRenderMime.IMimeModel): Promise { const source: any = model.data[this.mimeType]; if (!this._manager.has_model(source.model_id)) { this.node.textContent = 'Error creating widget: could not find model'; this.addClass('jupyter-widgets'); return; } try { const wModel = await this._manager.get_model(source.model_id); const wView = await this._manager.create_view(wModel); Widget.attach(wView.luminoWidget, this.node); } catch (err) { console.log('Error displaying widget'); console.log(err); this.node.textContent = 'Error displaying widget'; this.addClass('jupyter-widgets'); } } /** * The mimetype being rendered. */ readonly mimeType: string; private _manager: HTMLManager; } ipywidgets-8.1.1/packages/html-manager/test/000077500000000000000000000000001450026722000210205ustar00rootroot00000000000000ipywidgets-8.1.1/packages/html-manager/test/karma.conf.js000066400000000000000000000004461450026722000234010ustar00rootroot00000000000000module.exports = function (config) { config.set({ basePath: '..', frameworks: ['mocha'], reporters: ['mocha'], files: ['test/build/bundle.js'], port: 9876, colors: true, singleRun: true, logLevel: config.LOG_INFO, browserNoActivityTimeout: 30000, }); }; ipywidgets-8.1.1/packages/html-manager/test/src/000077500000000000000000000000001450026722000216075ustar00rootroot00000000000000ipywidgets-8.1.1/packages/html-manager/test/src/index.ts000066400000000000000000000002001450026722000232560ustar00rootroot00000000000000// Copyright (c) Jupyter Development Team. // Distributed under the terms of the Modified BSD License. import './output_test'; ipywidgets-8.1.1/packages/html-manager/test/src/output_test.ts000066400000000000000000000163421450026722000245640ustar00rootroot00000000000000import { expect } from 'chai'; import { RenderedText } from '@jupyterlab/rendermime'; import { IRenderMime } from '@jupyterlab/rendermime-interfaces'; import { HTMLManager } from '../../lib/'; import * as base from '@jupyter-widgets/base'; const newWidget = async (modelState: any): Promise => { const widgetTag = document.createElement('div'); widgetTag.className = 'widget-subarea'; document.body.appendChild(widgetTag); const manager = new HTMLManager(); const modelId = 'u-u-i-d'; const modelCreate: base.IModelOptions = { model_name: 'OutputModel', model_id: modelId, model_module: '@jupyter-widgets/output', model_module_version: '*', }; const model = await manager.new_model(modelCreate, modelState); await manager.display_view(manager.create_view(model), widgetTag); return widgetTag; }; describe('Output widget', function () { it('renders text output', async () => { const textValue = 'this-is-a-test\n'; const modelState = { _view_module: '@jupyter-widgets/output', outputs: [ { output_type: 'stream', name: 'stdout', text: textValue, }, ], }; const elt = await newWidget(modelState); expect(elt.textContent).to.equal(textValue); }); it('renders data output', async function () { // Pandas dataframe const modelState = { _view_module: '@jupyter-widgets/output', outputs: [ { output_type: 'display_data', data: { 'text/plain': ' a b\n0 1 4\n1 2 5\n2 3 6', 'text/html': '
\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
ab
014
125
236
\n
', }, metadata: {}, }, ], }; const elt = await newWidget(modelState); expect(elt.querySelectorAll('table').length).to.equal(1); }); it('renders widgets', async function () { const modelState = { _view_module: '@jupyter-widgets/output', outputs: [ { output_type: 'display_data', data: { 'application/vnd.jupyter.widget-view+json': { model_id: 'adffc4580a0944f6929c381463b0059b', version_minor: 0, version_major: 2, }, 'text/plain': 'A Jupyter Widget', }, metadata: {}, }, ], }; const elt = document.createElement('div'); elt.className = 'widget-subarea'; document.body.appendChild(elt); const manager = new HTMLManager(); // We need to seed the manager with the state of the widgets const managerState = { adffc4580a0944f6929c381463b0059b: { model_name: 'IntSliderModel', model_module: '@jupyter-widgets/controls', model_module_version: '1.0.0', state: { style: 'IPY_MODEL_3b8780f457254737a83be48bc32b0613', _view_module: '@jupyter-widgets/controls', layout: 'IPY_MODEL_33cb011834fd4c9d9af512e5e98c9904', value: 45, _model_module: '@jupyter-widgets/controls', }, }, '3b8780f457254737a83be48bc32b0613': { model_name: 'SliderStyleModel', model_module: '@jupyter-widgets/controls', model_module_version: '1.0.0', state: { description_width: '', _model_module: '@jupyter-widgets/controls', }, }, '33cb011834fd4c9d9af512e5e98c9904': { model_name: 'LayoutModel', model_module: '@jupyter-widgets/base', model_module_version: '1.0.0', state: {}, }, }; await manager.set_state({ state: managerState, version_major: 2, version_minor: 0, }); const modelId = 'u-u-i-d'; const modelCreate: base.IModelOptions = { model_name: 'OutputModel', model_id: modelId, model_module: '@jupyter-widgets/output', model_module_version: '*', }; const model = await manager.new_model(modelCreate, modelState); await manager.display_view(manager.create_view(model), elt); // Give the widget time to render await new Promise((resolve) => { setTimeout(resolve, 20); }); expect(elt.querySelectorAll('.slider').length).to.equal(1); }); it('renders custom mimetypes', async function () { const t = 'hello'; // Text renderer that always renders 'something different' class MockTextRenderer extends RenderedText { /** * Render a mime model. * * @param model - The mime model to render. * * @returns A promise which resolves when rendering is complete. */ render(model: IRenderMime.IMimeModel): Promise { expect(model.data['text/plain']).to.equal(t); this.node.textContent = 'something different'; return Promise.resolve(); } } const widgetTag = document.createElement('div'); widgetTag.className = 'widget-subarea'; document.body.appendChild(widgetTag); const manager = new HTMLManager(); manager.renderMime.addFactory( { safe: true, mimeTypes: ['text/plain'], createRenderer: (options) => new MockTextRenderer(options), }, 0 ); const modelId = 'u-u-i-d'; const modelCreate: base.IModelOptions = { model_name: 'OutputModel', model_id: modelId, model_module: '@jupyter-widgets/output', model_module_version: '*', }; const modelState = { _view_module: '@jupyter-widgets/output', outputs: [ { output_type: 'display_data', data: { 'text/plain': t, }, metadata: {}, }, ], }; const model = await manager.new_model(modelCreate, modelState); await manager.display_view(manager.create_view(model), widgetTag); expect(widgetTag.innerText).to.equal('something different'); }); it('renders text output', async () => { const manager = new HTMLManager(); const modelId = 'u-u-i-d'; const modelCreate: base.IModelOptions = { model_name: 'OutputModel', model_id: modelId, model_module: '@jupyter-widgets/output', model_module_version: '*', }; const startingText = 'starting text'; const endingText = 'ending text'; const modelState = { _view_module: '@jupyter-widgets/output', outputs: [ { output_type: 'stream', name: 'stdout', text: startingText, }, ], }; const widgetTag = document.createElement('div'); widgetTag.className = 'widget-subarea'; document.body.appendChild(widgetTag); const model = await manager.new_model(modelCreate, modelState); await manager.display_view(manager.create_view(model), widgetTag); expect(widgetTag.innerText).to.equal(startingText); model.set('outputs', [ { output_type: 'stream', name: 'stdout', text: endingText, }, ]); expect(widgetTag.innerText).to.equal(endingText); }); }); ipywidgets-8.1.1/packages/html-manager/test/tsconfig.json000066400000000000000000000003271450026722000235310ustar00rootroot00000000000000{ "extends": "../../../tsconfigbase", "compilerOptions": { "types": ["mocha"], "outDir": "build", "rootDir": "src" }, "include": ["src/*"], "references": [ { "path": ".." } ] } ipywidgets-8.1.1/packages/html-manager/test/webpack.conf.js000066400000000000000000000027111450026722000237170ustar00rootroot00000000000000var path = require('path'); var postcss = require('postcss'); const webpack = require('webpack'); module.exports = { mode: 'development', entry: './test/build/index.js', output: { path: path.resolve(__dirname, 'build'), filename: 'bundle.js', }, bail: true, module: { rules: [ { test: /\.css$/, use: [ 'style-loader', 'css-loader', { loader: 'postcss-loader', options: { postcssOptions: { plugins: [ postcss.plugin('delete-tilde', function () { return function (css) { css.walkAtRules('import', function (rule) { rule.params = rule.params.replace('~', ''); }); }; }), postcss.plugin('prepend', function () { return function (css) { css.prepend( "@import '@jupyter-widgets/controls/css/labvariables.css';" ); }; }), require('postcss-import')(), require('postcss-cssnext')(), ], }, }, }, ], }, // required to load font-awesome { test: /\.(woff|woff2|eot|ttf|otf)$/i, type: 'asset/resource' }, { test: /\.svg$/i, type: 'asset' }, ], }, }; ipywidgets-8.1.1/packages/html-manager/tsconfig.json000066400000000000000000000004741450026722000225550ustar00rootroot00000000000000{ "extends": "../../tsconfigbase", "compilerOptions": { "outDir": "lib", "rootDir": "src" }, "include": ["src/*"], "references": [ { "path": "../base" }, { "path": "../base-manager" }, { "path": "../controls" }, { "path": "../output" } ] } ipywidgets-8.1.1/packages/html-manager/webpack.config.js000066400000000000000000000057471450026722000232740ustar00rootroot00000000000000// Copyright (c) Jupyter Development Team. // Distributed under the terms of the Modified BSD License. // Here we generate the /dist files that allow widget embedding var path = require('path'); var options = { devtool: 'source-map', mode: 'production', module: { rules: [ { test: /\.css$/, use: ['style-loader', 'css-loader'] }, // required to load font-awesome { test: /\.(woff|woff2|eot|ttf|otf)$/i, type: 'asset/resource' }, { test: /\.svg$/i, type: 'asset' }, ], }, }; module.exports = [ { // script that renders widgets using the standard embedding and can only render standard controls entry: './lib/embed.js', output: { filename: 'embed.js', path: path.resolve(__dirname, 'dist'), }, ...options, }, { // script that renders widgets using the amd embedding and can render third-party custom widgets entry: './lib/embed-amd-render.js', output: { filename: 'embed-amd-render.js', path: path.resolve(__dirname, 'dist', 'amd'), }, ...options, }, { // embed library that depends on requirejs, and can load third-party widgets dynamically entry: ['./amd-public-path.js', './lib/libembed-amd.js'], output: { library: '@jupyter-widgets/html-manager/dist/libembed-amd', filename: 'libembed-amd.js', path: path.resolve(__dirname, 'dist', 'amd'), libraryTarget: 'amd', publicPath: '', // Set in amd-public-path.js }, // 'module' is the magic requirejs dependency used to set the publicPath externals: ['module'], ...options, }, { // @jupyter-widgets/html-manager entry: ['./amd-public-path.js', './lib/index.js'], output: { library: '@jupyter-widgets/html-manager', filename: 'index.js', path: path.resolve(__dirname, 'dist', 'amd'), libraryTarget: 'amd', publicPath: '', // Set in amd-public-path.js }, // 'module' is the magic requirejs dependency used to set the publicPath externals: ['@jupyter-widgets/base', '@jupyter-widgets/controls', 'module'], ...options, }, { // @jupyter-widgets/base entry: ['./amd-public-path.js', '@jupyter-widgets/base/lib/index'], output: { library: '@jupyter-widgets/base', filename: 'base.js', path: path.resolve(__dirname, 'dist', 'amd'), libraryTarget: 'amd', publicPath: '', // Set in amd-public-path.js }, // 'module' is the magic requirejs dependency used to set the publicPath externals: ['module'], ...options, }, { // @jupyter-widgets/controls entry: ['./amd-public-path.js', '@jupyter-widgets/controls/lib/index'], output: { library: '@jupyter-widgets/controls', filename: 'controls.js', path: path.resolve(__dirname, 'dist', 'amd'), libraryTarget: 'amd', publicPath: '', // Set in amd-public-path.js }, // 'module' is the magic requirejs dependency used to set the publicPath externals: ['@jupyter-widgets/base', 'module'], ...options, }, ]; ipywidgets-8.1.1/packages/output/000077500000000000000000000000001450026722000170255ustar00rootroot00000000000000ipywidgets-8.1.1/packages/output/.gitignore000066400000000000000000000000041450026722000210070ustar00rootroot00000000000000lib/ipywidgets-8.1.1/packages/output/package.json000066400000000000000000000015541450026722000213200ustar00rootroot00000000000000{ "name": "@jupyter-widgets/output", "version": "6.0.6", "description": "Jupyter widget wrapping cell output", "bugs": { "url": "https://github.com/jupyter-widgets/ipywidgets/issues" }, "repository": { "type": "git", "url": "https://github.com/jupyter-widgets/ipywidgets.git" }, "license": "BSD-3-Clause", "author": "Project Jupyter", "main": "lib/index.js", "typings": "lib/index.d.ts", "files": [ "lib/**/*.d.ts", "lib/**/*.js" ], "scripts": { "build": "npm run build:src", "build:src": "tsc --build", "clean": "rimraf lib && rimraf tsconfig.tsbuildinfo", "prepublish": "npm run clean && npm run build", "test": "echo \"Error: no test specified\" && exit 1" }, "dependencies": { "@jupyter-widgets/base": "^6.0.6" }, "devDependencies": { "rimraf": "^3.0.2", "typescript": "~4.9.4" } } ipywidgets-8.1.1/packages/output/src/000077500000000000000000000000001450026722000176145ustar00rootroot00000000000000ipywidgets-8.1.1/packages/output/src/index.ts000066400000000000000000000000321450026722000212660ustar00rootroot00000000000000export * from './output'; ipywidgets-8.1.1/packages/output/src/output.ts000066400000000000000000000010741450026722000215260ustar00rootroot00000000000000import { DOMWidgetModel, DOMWidgetView } from '@jupyter-widgets/base'; export const OUTPUT_WIDGET_VERSION = '1.0.0'; export class OutputModel extends DOMWidgetModel { defaults(): Backbone.ObjectHash { return { ...super.defaults(), _model_name: 'OutputModel', _view_name: 'OutputView', _model_module: '@jupyter-widgets/output', _view_module: '@jupyter-widgets/output', _model_module_version: OUTPUT_WIDGET_VERSION, _view_module_version: OUTPUT_WIDGET_VERSION, }; } } export class OutputView extends DOMWidgetView {} ipywidgets-8.1.1/packages/output/tsconfig.json000066400000000000000000000003021450026722000215270ustar00rootroot00000000000000{ "extends": "../../tsconfigbase", "compilerOptions": { "outDir": "lib", "rootDir": "src" }, "include": ["src/**/*"], "references": [ { "path": "../base" } ] } ipywidgets-8.1.1/packages/schema/000077500000000000000000000000001450026722000167255ustar00rootroot00000000000000ipywidgets-8.1.1/packages/schema/README.md000066400000000000000000000002461450026722000202060ustar00rootroot00000000000000# Jupyter Widgets Schema JSON schema for the json serialization of Jupyter Interactive Widgets. ## Package Install **Prerequisites** - [node](http://nodejs.org/) ipywidgets-8.1.1/packages/schema/generate-spec.py000066400000000000000000000210571450026722000220260ustar00rootroot00000000000000# Copyright (c) Jupyter Development Team. # Distributed under the terms of the Modified BSD License. import argparse import json from operator import itemgetter import pathlib import sys from traitlets import ( CaselessStrEnum, Unicode, Tuple, List, Bool, CFloat, Float, CInt, Int, Instance, Dict, Bytes, Any, Union, ) import ipywidgets as widgets from ipywidgets import Color from ipywidgets.widgets.trait_types import TypedTuple, ByteMemoryView from ipywidgets.widgets.widget_link import Link HEADER = '''# Model State This is a description of the model state for each widget in the core Jupyter widgets library. The model ID of a widget is the id of the comm object the widget is using. A reference to a widget is serialized to JSON as a string of the form `"IPY_MODEL_"`, where `` is the model ID of a previously created widget of the specified type. This model specification is for ipywidgets 8. ## Model attributes Each widget in the Jupyter core widgets is represented below. The heading represents the model name, module, and version, view name, module, and version that the widget is registered with. ''' NUMBER_MAP = { 'int': 'number (integer)', 'float': 'number (float)', 'bool': 'boolean', 'bytes': 'Bytes' } def trait_type(trait, widget_list): attributes = {} if isinstance(trait, CaselessStrEnum): w_type = 'string' attributes['enum'] = trait.values elif isinstance(trait, Unicode): w_type = 'string' elif isinstance(trait, (Tuple, List)): w_type = 'array' elif isinstance(trait, TypedTuple): w_type = 'array' attributes['items'] = trait_type(trait._trait, widget_list) elif isinstance(trait, Bool): w_type = 'bool' elif isinstance(trait, (CFloat, Float)): w_type = 'float' elif isinstance(trait, (CInt, Int)): w_type = 'int' elif isinstance(trait, Color): w_type = 'color' elif isinstance(trait, Dict): w_type = 'object' elif isinstance(trait, Union): union_attributes = [] union_types = [] for ut in trait.trait_types: ua = trait_type(ut, widget_list) union_attributes.append(ua) union_types.append(ua['type']) w_type = union_types attributes['union_attributes'] = union_attributes elif isinstance(trait, (Bytes, ByteMemoryView)): w_type = 'bytes' elif isinstance(trait, Instance) and issubclass(trait.klass, widgets.Widget): w_type = 'reference' attributes['widget'] = trait.klass.__name__ # ADD the widget to this documenting list if (trait.klass not in [i[1] for i in widget_list] and trait.klass is not widgets.Widget): widget_list.append((trait.klass.__name__, trait.klass)) elif isinstance(trait, Any): # In our case, these all happen to be values that are converted to # strings w_type = 'label' else: w_type = trait.__class__.__name__ attributes['type'] = w_type if trait.allow_none: attributes['allow_none'] = True return attributes def jsdefault(trait): if isinstance(trait, Instance): default = trait.make_dynamic_default() if issubclass(trait.klass, widgets.Widget): return 'reference to new instance' else: try: # traitlets 5 default = trait.default() except AttributeError: # traitlets 4 - can be deleted when we depend only on traitlets 5 if isinstance(trait, Union): default = trait.make_dynamic_default() else: default = trait.default_value if isinstance(default, bytes) or isinstance(default, memoryview): default = trait.default_value_repr() return default def mddefault(attribute): default = attribute['default'] is_ref = isinstance(default, str) and default.startswith('reference') if default is None: default = 'null' elif isinstance(default, bool): default = str(default).lower() elif not is_ref and attribute['type'] != 'bytes': default = "{!r}".format(default) if not is_ref: default = '`{}`'.format(default) return default def mdtype(attribute): md_type = attribute['type'] if 'union_attributes' in attribute and isinstance(md_type, (list, tuple)): md_type = ' or '.join( mdtype(ua) for ua in attribute['union_attributes'] ) if md_type in NUMBER_MAP: md_type = NUMBER_MAP[md_type] if attribute.get('allow_none'): md_type = '`null` or {}'.format(md_type) if 'enum' in attribute: md_type = '{} (one of {})'.format( md_type, ', '.join('`{!r}`'.format(n) for n in attribute['enum']) ) if 'items' in attribute: md_type = '{} of {}'.format(md_type, mdtype(attribute['items'])) if 'widget' in attribute: md_type = '{} to {} widget'.format(md_type, attribute['widget']) return md_type def format_widget(widget): out = [] fmt = '%(name)s (%(module)s, %(version)s)' out.append('### %s; %s' % (fmt % widget['model'], fmt % widget['view'])) out.append('') out.append('{name: <16} | {typing: <16} | {default: <16} | {help}'.format( name='Attribute', typing='Type', default='Default', help='Help') ) out.append('{0:-<16}-|-{0:-<16}-|-{0:-<16}-|----'.format('-')) for attribute in sorted(widget['attributes'], key=itemgetter('name')): s = '{name: <16} | {type: <16} | {default: <16} | {help}'.format( name='`{}`'.format(attribute['name']), default=mddefault(attribute), type=mdtype(attribute), help=attribute['help'] ) out.append(s) out.append('') return '\n'.join(out) def jsonify(identifier, widget, widget_list): model = dict(zip(['module', 'version', 'name'], identifier[:3])) view = dict(zip(['module', 'version', 'name'], identifier[3:])) attributes = [] for name, trait in widget.traits(sync=True).items(): if name == '_view_count': # don't document this since it is totally experimental at this point continue attribute = dict( name=name, help=trait.help or '', default=jsdefault(trait) ) attribute.update(trait_type(trait, widget_list)) attributes.append(attribute) return dict(model=model, view=view, attributes=attributes) def create_spec(widget_list): widget_data = [] for widget_name, widget_cls in widget_list: if issubclass(widget_cls, Link): widget = widget_cls((widgets.IntSlider(), 'value'), (widgets.IntSlider(), 'value')) elif issubclass(widget_cls, (widgets.SelectionRangeSlider, widgets.SelectionSlider)): widget = widget_cls(options=[1]) else: widget = widget_cls() widget_data.append(jsonify(widget_name, widget, widget_list)) return widget_data def create_markdown(spec): output = [HEADER] for widget in spec: output.append(format_widget(widget)) return '\n'.join(output) if __name__ == '__main__': parser = argparse.ArgumentParser(description='Description of your program') parser.add_argument('-f', '--format', choices=['json', 'json-pretty', 'markdown'], help='Format to generate', default='json') parser.add_argument('output', nargs='?', type=pathlib.Path) args = parser.parse_args() format = args.format widgets_to_document = sorted(widgets.Widget._widget_types.items()) spec = create_spec(widgets_to_document) if args.output: args.output.parent.mkdir(exist_ok=True) output = open(args.output, mode='w', encoding='utf8') else: output = sys.stdout try: if format == 'json': try: json.dump(spec, output, sort_keys=True) except TypeError: print('Encountered error when converting spec to JSON. Here is the spec:') print(spec) raise elif format == 'json-pretty': json.dump(spec, output, sort_keys=True, indent=2, separators=(',', ': ')) elif format == 'markdown': # We go through the json engine to convert tuples to lists, etc. output.write(create_markdown(json.loads(json.dumps(spec)))) output.write('\n') finally: if args.output: output.close() ipywidgets-8.1.1/packages/schema/index.js000066400000000000000000000003441450026722000203730ustar00rootroot00000000000000module.exports = { v1: { state: require('./v1/state.schema.json'), view: require('./v1/view.schema.json'), }, v2: { state: require('./v2/state.schema.json'), view: require('./v2/view.schema.json'), }, }; ipywidgets-8.1.1/packages/schema/jupyterwidgetmodels.latest.json000066400000000000000000005675771450026722000252600ustar00rootroot00000000000000[ { "attributes": [ { "default": "@jupyter-widgets/base", "help": "The namespace for the model.", "name": "_model_module", "type": "string" }, { "default": "2.0.0", "help": "A semver requirement for namespace version containing the model.", "name": "_model_module_version", "type": "string" }, { "default": "LayoutModel", "help": "", "name": "_model_name", "type": "string" }, { "default": "@jupyter-widgets/base", "help": "", "name": "_view_module", "type": "string" }, { "default": "2.0.0", "help": "", "name": "_view_module_version", "type": "string" }, { "default": "LayoutView", "help": "", "name": "_view_name", "type": "string" }, { "allow_none": true, "default": null, "enum": [ "flex-start", "flex-end", "center", "space-between", "space-around", "space-evenly", "stretch", "inherit", "initial", "unset" ], "help": "The align-content CSS attribute.", "name": "align_content", "type": "string" }, { "allow_none": true, "default": null, "enum": [ "flex-start", "flex-end", "center", "baseline", "stretch", "inherit", "initial", "unset" ], "help": "The align-items CSS attribute.", "name": "align_items", "type": "string" }, { "allow_none": true, "default": null, "enum": [ "auto", "flex-start", "flex-end", "center", "baseline", "stretch", "inherit", "initial", "unset" ], "help": "The align-self CSS attribute.", "name": "align_self", "type": "string" }, { "allow_none": true, "default": null, "help": "The border bottom CSS attribute.", "name": "border_bottom", "type": "string" }, { "allow_none": true, "default": null, "help": "The border left CSS attribute.", "name": "border_left", "type": "string" }, { "allow_none": true, "default": null, "help": "The border right CSS attribute.", "name": "border_right", "type": "string" }, { "allow_none": true, "default": null, "help": "The border top CSS attribute.", "name": "border_top", "type": "string" }, { "allow_none": true, "default": null, "help": "The bottom CSS attribute.", "name": "bottom", "type": "string" }, { "allow_none": true, "default": null, "help": "The display CSS attribute.", "name": "display", "type": "string" }, { "allow_none": true, "default": null, "help": "The flex CSS attribute.", "name": "flex", "type": "string" }, { "allow_none": true, "default": null, "help": "The flex-flow CSS attribute.", "name": "flex_flow", "type": "string" }, { "allow_none": true, "default": null, "help": "The grid-area CSS attribute.", "name": "grid_area", "type": "string" }, { "allow_none": true, "default": null, "help": "The grid-auto-columns CSS attribute.", "name": "grid_auto_columns", "type": "string" }, { "allow_none": true, "default": null, "enum": [ "column", "row", "row dense", "column dense", "inherit", "initial", "unset" ], "help": "The grid-auto-flow CSS attribute.", "name": "grid_auto_flow", "type": "string" }, { "allow_none": true, "default": null, "help": "The grid-auto-rows CSS attribute.", "name": "grid_auto_rows", "type": "string" }, { "allow_none": true, "default": null, "help": "The grid-column CSS attribute.", "name": "grid_column", "type": "string" }, { "allow_none": true, "default": null, "help": "The grid-gap CSS attribute.", "name": "grid_gap", "type": "string" }, { "allow_none": true, "default": null, "help": "The grid-row CSS attribute.", "name": "grid_row", "type": "string" }, { "allow_none": true, "default": null, "help": "The grid-template-areas CSS attribute.", "name": "grid_template_areas", "type": "string" }, { "allow_none": true, "default": null, "help": "The grid-template-columns CSS attribute.", "name": "grid_template_columns", "type": "string" }, { "allow_none": true, "default": null, "help": "The grid-template-rows CSS attribute.", "name": "grid_template_rows", "type": "string" }, { "allow_none": true, "default": null, "help": "The height CSS attribute.", "name": "height", "type": "string" }, { "allow_none": true, "default": null, "enum": [ "flex-start", "flex-end", "center", "space-between", "space-around", "inherit", "initial", "unset" ], "help": "The justify-content CSS attribute.", "name": "justify_content", "type": "string" }, { "allow_none": true, "default": null, "enum": [ "flex-start", "flex-end", "center", "inherit", "initial", "unset" ], "help": "The justify-items CSS attribute.", "name": "justify_items", "type": "string" }, { "allow_none": true, "default": null, "help": "The left CSS attribute.", "name": "left", "type": "string" }, { "allow_none": true, "default": null, "help": "The margin CSS attribute.", "name": "margin", "type": "string" }, { "allow_none": true, "default": null, "help": "The max-height CSS attribute.", "name": "max_height", "type": "string" }, { "allow_none": true, "default": null, "help": "The max-width CSS attribute.", "name": "max_width", "type": "string" }, { "allow_none": true, "default": null, "help": "The min-height CSS attribute.", "name": "min_height", "type": "string" }, { "allow_none": true, "default": null, "help": "The min-width CSS attribute.", "name": "min_width", "type": "string" }, { "allow_none": true, "default": null, "enum": ["contain", "cover", "fill", "scale-down", "none"], "help": "The object-fit CSS attribute.", "name": "object_fit", "type": "string" }, { "allow_none": true, "default": null, "help": "The object-position CSS attribute.", "name": "object_position", "type": "string" }, { "allow_none": true, "default": null, "help": "The order CSS attribute.", "name": "order", "type": "string" }, { "allow_none": true, "default": null, "help": "The overflow CSS attribute.", "name": "overflow", "type": "string" }, { "allow_none": true, "default": null, "help": "The padding CSS attribute.", "name": "padding", "type": "string" }, { "allow_none": true, "default": null, "help": "The right CSS attribute.", "name": "right", "type": "string" }, { "allow_none": true, "default": null, "help": "The top CSS attribute.", "name": "top", "type": "string" }, { "allow_none": true, "default": null, "enum": ["visible", "hidden", "inherit", "initial", "unset"], "help": "The visibility CSS attribute.", "name": "visibility", "type": "string" }, { "allow_none": true, "default": null, "help": "The width CSS attribute.", "name": "width", "type": "string" } ], "model": { "module": "@jupyter-widgets/base", "name": "LayoutModel", "version": "2.0.0" }, "view": { "module": "@jupyter-widgets/base", "name": "LayoutView", "version": "2.0.0" } }, { "attributes": [ { "default": [], "help": "CSS classes applied to widget DOM element", "items": { "type": "string" }, "name": "_dom_classes", "type": "array" }, { "default": "@jupyter-widgets/controls", "help": "", "name": "_model_module", "type": "string" }, { "default": "2.0.0", "help": "", "name": "_model_module_version", "type": "string" }, { "default": "AccordionModel", "help": "", "name": "_model_name", "type": "string" }, { "default": "@jupyter-widgets/controls", "help": "", "name": "_view_module", "type": "string" }, { "default": "2.0.0", "help": "", "name": "_view_module_version", "type": "string" }, { "default": "AccordionView", "help": "", "name": "_view_name", "type": "string" }, { "default": "", "enum": ["success", "info", "warning", "danger", ""], "help": "Use a predefined styling for the box.", "name": "box_style", "type": "string" }, { "default": [], "help": "List of widget children", "items": { "type": "reference", "widget": "Widget" }, "name": "children", "type": "array" }, { "default": "reference to new instance", "help": "", "name": "layout", "type": "reference", "widget": "Layout" }, { "allow_none": true, "default": null, "help": "The index of the selected page. This is either an integer selecting a particular sub-widget, or None to have no widgets selected.", "name": "selected_index", "type": "int" }, { "allow_none": true, "default": null, "help": "Is widget tabbable?", "name": "tabbable", "type": "bool" }, { "default": [], "help": "Titles of the pages", "items": { "type": "string" }, "name": "titles", "type": "array" }, { "allow_none": true, "default": null, "help": "A tooltip caption.", "name": "tooltip", "type": "string" } ], "model": { "module": "@jupyter-widgets/controls", "name": "AccordionModel", "version": "2.0.0" }, "view": { "module": "@jupyter-widgets/controls", "name": "AccordionView", "version": "2.0.0" } }, { "attributes": [ { "default": [], "help": "CSS classes applied to widget DOM element", "items": { "type": "string" }, "name": "_dom_classes", "type": "array" }, { "default": "@jupyter-widgets/controls", "help": "", "name": "_model_module", "type": "string" }, { "default": "2.0.0", "help": "", "name": "_model_module_version", "type": "string" }, { "default": "AudioModel", "help": "", "name": "_model_name", "type": "string" }, { "default": "@jupyter-widgets/controls", "help": "", "name": "_view_module", "type": "string" }, { "default": "2.0.0", "help": "", "name": "_view_module_version", "type": "string" }, { "default": "AudioView", "help": "", "name": "_view_name", "type": "string" }, { "default": true, "help": "When true, the audio starts when it's displayed", "name": "autoplay", "type": "bool" }, { "default": true, "help": "Specifies that audio controls should be displayed (such as a play/pause button etc)", "name": "controls", "type": "bool" }, { "default": "mp3", "help": "The format of the audio.", "name": "format", "type": "string" }, { "default": "reference to new instance", "help": "", "name": "layout", "type": "reference", "widget": "Layout" }, { "default": true, "help": "When true, the audio will start from the beginning after finishing", "name": "loop", "type": "bool" }, { "allow_none": true, "default": null, "help": "Is widget tabbable?", "name": "tabbable", "type": "bool" }, { "allow_none": true, "default": null, "help": "A tooltip caption.", "name": "tooltip", "type": "string" }, { "default": "b''", "help": "The media data as a memory view of bytes.", "name": "value", "type": "bytes" } ], "model": { "module": "@jupyter-widgets/controls", "name": "AudioModel", "version": "2.0.0" }, "view": { "module": "@jupyter-widgets/controls", "name": "AudioView", "version": "2.0.0" } }, { "attributes": [ { "default": [], "help": "CSS classes applied to widget DOM element", "items": { "type": "string" }, "name": "_dom_classes", "type": "array" }, { "default": "@jupyter-widgets/controls", "help": "", "name": "_model_module", "type": "string" }, { "default": "2.0.0", "help": "", "name": "_model_module_version", "type": "string" }, { "default": "BoundedFloatTextModel", "help": "", "name": "_model_name", "type": "string" }, { "default": "@jupyter-widgets/controls", "help": "", "name": "_view_module", "type": "string" }, { "default": "2.0.0", "help": "", "name": "_view_module_version", "type": "string" }, { "default": "FloatTextView", "help": "", "name": "_view_name", "type": "string" }, { "default": false, "help": "Update the value as the user types. If False, update on submission, e.g., pressing Enter or navigating away.", "name": "continuous_update", "type": "bool" }, { "default": "", "help": "Description of the control.", "name": "description", "type": "string" }, { "default": false, "help": "Accept HTML in the description.", "name": "description_allow_html", "type": "bool" }, { "default": false, "help": "Enable or disable user changes", "name": "disabled", "type": "bool" }, { "default": "reference to new instance", "help": "", "name": "layout", "type": "reference", "widget": "Layout" }, { "default": 100.0, "help": "Max value", "name": "max", "type": "float" }, { "default": 0.0, "help": "Min value", "name": "min", "type": "float" }, { "allow_none": true, "default": null, "help": "Minimum step to increment the value", "name": "step", "type": "float" }, { "default": "reference to new instance", "help": "Styling customizations", "name": "style", "type": "reference", "widget": "DescriptionStyle" }, { "allow_none": true, "default": null, "help": "Is widget tabbable?", "name": "tabbable", "type": "bool" }, { "allow_none": true, "default": null, "help": "A tooltip caption.", "name": "tooltip", "type": "string" }, { "default": 0.0, "help": "Float value", "name": "value", "type": "float" } ], "model": { "module": "@jupyter-widgets/controls", "name": "BoundedFloatTextModel", "version": "2.0.0" }, "view": { "module": "@jupyter-widgets/controls", "name": "FloatTextView", "version": "2.0.0" } }, { "attributes": [ { "default": [], "help": "CSS classes applied to widget DOM element", "items": { "type": "string" }, "name": "_dom_classes", "type": "array" }, { "default": "@jupyter-widgets/controls", "help": "", "name": "_model_module", "type": "string" }, { "default": "2.0.0", "help": "", "name": "_model_module_version", "type": "string" }, { "default": "BoundedIntTextModel", "help": "", "name": "_model_name", "type": "string" }, { "default": "@jupyter-widgets/controls", "help": "", "name": "_view_module", "type": "string" }, { "default": "2.0.0", "help": "", "name": "_view_module_version", "type": "string" }, { "default": "IntTextView", "help": "", "name": "_view_name", "type": "string" }, { "default": false, "help": "Update the value as the user types. If False, update on submission, e.g., pressing Enter or navigating away.", "name": "continuous_update", "type": "bool" }, { "default": "", "help": "Description of the control.", "name": "description", "type": "string" }, { "default": false, "help": "Accept HTML in the description.", "name": "description_allow_html", "type": "bool" }, { "default": false, "help": "Enable or disable user changes", "name": "disabled", "type": "bool" }, { "default": "reference to new instance", "help": "", "name": "layout", "type": "reference", "widget": "Layout" }, { "default": 100, "help": "Max value", "name": "max", "type": "int" }, { "default": 0, "help": "Min value", "name": "min", "type": "int" }, { "default": 1, "help": "Minimum step to increment the value", "name": "step", "type": "int" }, { "default": "reference to new instance", "help": "Styling customizations", "name": "style", "type": "reference", "widget": "DescriptionStyle" }, { "allow_none": true, "default": null, "help": "Is widget tabbable?", "name": "tabbable", "type": "bool" }, { "allow_none": true, "default": null, "help": "A tooltip caption.", "name": "tooltip", "type": "string" }, { "default": 0, "help": "Int value", "name": "value", "type": "int" } ], "model": { "module": "@jupyter-widgets/controls", "name": "BoundedIntTextModel", "version": "2.0.0" }, "view": { "module": "@jupyter-widgets/controls", "name": "IntTextView", "version": "2.0.0" } }, { "attributes": [ { "default": [], "help": "CSS classes applied to widget DOM element", "items": { "type": "string" }, "name": "_dom_classes", "type": "array" }, { "default": "@jupyter-widgets/controls", "help": "", "name": "_model_module", "type": "string" }, { "default": "2.0.0", "help": "", "name": "_model_module_version", "type": "string" }, { "default": "BoxModel", "help": "", "name": "_model_name", "type": "string" }, { "default": "@jupyter-widgets/controls", "help": "", "name": "_view_module", "type": "string" }, { "default": "2.0.0", "help": "", "name": "_view_module_version", "type": "string" }, { "default": "BoxView", "help": "", "name": "_view_name", "type": "string" }, { "default": "", "enum": ["success", "info", "warning", "danger", ""], "help": "Use a predefined styling for the box.", "name": "box_style", "type": "string" }, { "default": [], "help": "List of widget children", "items": { "type": "reference", "widget": "Widget" }, "name": "children", "type": "array" }, { "default": "reference to new instance", "help": "", "name": "layout", "type": "reference", "widget": "Layout" }, { "allow_none": true, "default": null, "help": "Is widget tabbable?", "name": "tabbable", "type": "bool" }, { "allow_none": true, "default": null, "help": "A tooltip caption.", "name": "tooltip", "type": "string" } ], "model": { "module": "@jupyter-widgets/controls", "name": "BoxModel", "version": "2.0.0" }, "view": { "module": "@jupyter-widgets/controls", "name": "BoxView", "version": "2.0.0" } }, { "attributes": [ { "default": [], "help": "CSS classes applied to widget DOM element", "items": { "type": "string" }, "name": "_dom_classes", "type": "array" }, { "default": "@jupyter-widgets/controls", "help": "", "name": "_model_module", "type": "string" }, { "default": "2.0.0", "help": "", "name": "_model_module_version", "type": "string" }, { "default": "ButtonModel", "help": "", "name": "_model_name", "type": "string" }, { "default": "@jupyter-widgets/controls", "help": "", "name": "_view_module", "type": "string" }, { "default": "2.0.0", "help": "", "name": "_view_module_version", "type": "string" }, { "default": "ButtonView", "help": "", "name": "_view_name", "type": "string" }, { "default": "", "enum": ["primary", "success", "info", "warning", "danger", ""], "help": "Use a predefined styling for the button.", "name": "button_style", "type": "string" }, { "default": "", "help": "Button label.", "name": "description", "type": "string" }, { "default": false, "help": "Enable or disable user changes.", "name": "disabled", "type": "bool" }, { "default": "", "help": "Font-awesome icon names, without the 'fa-' prefix.", "name": "icon", "type": "string" }, { "default": "reference to new instance", "help": "", "name": "layout", "type": "reference", "widget": "Layout" }, { "default": "reference to new instance", "help": "", "name": "style", "type": "reference", "widget": "ButtonStyle" }, { "allow_none": true, "default": null, "help": "Is widget tabbable?", "name": "tabbable", "type": "bool" }, { "allow_none": true, "default": null, "help": "A tooltip caption.", "name": "tooltip", "type": "string" } ], "model": { "module": "@jupyter-widgets/controls", "name": "ButtonModel", "version": "2.0.0" }, "view": { "module": "@jupyter-widgets/controls", "name": "ButtonView", "version": "2.0.0" } }, { "attributes": [ { "default": "@jupyter-widgets/controls", "help": "", "name": "_model_module", "type": "string" }, { "default": "2.0.0", "help": "", "name": "_model_module_version", "type": "string" }, { "default": "ButtonStyleModel", "help": "", "name": "_model_name", "type": "string" }, { "default": "@jupyter-widgets/base", "help": "", "name": "_view_module", "type": "string" }, { "default": "2.0.0", "help": "", "name": "_view_module_version", "type": "string" }, { "default": "StyleView", "help": "", "name": "_view_name", "type": "string" }, { "allow_none": true, "default": null, "help": "Color of the button", "name": "button_color", "type": "string" }, { "allow_none": true, "default": null, "help": "Button text font family.", "name": "font_family", "type": "string" }, { "allow_none": true, "default": null, "help": "Button text font size.", "name": "font_size", "type": "string" }, { "allow_none": true, "default": null, "help": "Button text font style.", "name": "font_style", "type": "string" }, { "allow_none": true, "default": null, "help": "Button text font variant.", "name": "font_variant", "type": "string" }, { "allow_none": true, "default": null, "help": "Button text font weight.", "name": "font_weight", "type": "string" }, { "allow_none": true, "default": null, "help": "Button text color.", "name": "text_color", "type": "string" }, { "allow_none": true, "default": null, "help": "Button text decoration.", "name": "text_decoration", "type": "string" } ], "model": { "module": "@jupyter-widgets/controls", "name": "ButtonStyleModel", "version": "2.0.0" }, "view": { "module": "@jupyter-widgets/base", "name": "StyleView", "version": "2.0.0" } }, { "attributes": [ { "default": [], "help": "CSS classes applied to widget DOM element", "items": { "type": "string" }, "name": "_dom_classes", "type": "array" }, { "default": "@jupyter-widgets/controls", "help": "", "name": "_model_module", "type": "string" }, { "default": "2.0.0", "help": "", "name": "_model_module_version", "type": "string" }, { "default": "CheckboxModel", "help": "", "name": "_model_name", "type": "string" }, { "default": "@jupyter-widgets/controls", "help": "", "name": "_view_module", "type": "string" }, { "default": "2.0.0", "help": "", "name": "_view_module_version", "type": "string" }, { "default": "CheckboxView", "help": "", "name": "_view_name", "type": "string" }, { "default": "", "help": "Description of the control.", "name": "description", "type": "string" }, { "default": false, "help": "Accept HTML in the description.", "name": "description_allow_html", "type": "bool" }, { "default": false, "help": "Enable or disable user changes.", "name": "disabled", "type": "bool" }, { "default": true, "help": "Indent the control to align with other controls with a description.", "name": "indent", "type": "bool" }, { "default": "reference to new instance", "help": "", "name": "layout", "type": "reference", "widget": "Layout" }, { "default": "reference to new instance", "help": "Styling customizations", "name": "style", "type": "reference", "widget": "CheckboxStyle" }, { "allow_none": true, "default": null, "help": "Is widget tabbable?", "name": "tabbable", "type": "bool" }, { "allow_none": true, "default": null, "help": "A tooltip caption.", "name": "tooltip", "type": "string" }, { "default": false, "help": "Bool value", "name": "value", "type": "bool" } ], "model": { "module": "@jupyter-widgets/controls", "name": "CheckboxModel", "version": "2.0.0" }, "view": { "module": "@jupyter-widgets/controls", "name": "CheckboxView", "version": "2.0.0" } }, { "attributes": [ { "default": "@jupyter-widgets/controls", "help": "", "name": "_model_module", "type": "string" }, { "default": "2.0.0", "help": "", "name": "_model_module_version", "type": "string" }, { "default": "CheckboxStyleModel", "help": "", "name": "_model_name", "type": "string" }, { "default": "@jupyter-widgets/base", "help": "", "name": "_view_module", "type": "string" }, { "default": "2.0.0", "help": "", "name": "_view_module_version", "type": "string" }, { "default": "StyleView", "help": "", "name": "_view_name", "type": "string" }, { "allow_none": true, "default": null, "help": "Background specifications.", "name": "background", "type": "string" }, { "default": "", "help": "Width of the description to the side of the control.", "name": "description_width", "type": "string" } ], "model": { "module": "@jupyter-widgets/controls", "name": "CheckboxStyleModel", "version": "2.0.0" }, "view": { "module": "@jupyter-widgets/base", "name": "StyleView", "version": "2.0.0" } }, { "attributes": [ { "default": [], "help": "CSS classes applied to widget DOM element", "items": { "type": "string" }, "name": "_dom_classes", "type": "array" }, { "default": "@jupyter-widgets/controls", "help": "", "name": "_model_module", "type": "string" }, { "default": "2.0.0", "help": "", "name": "_model_module_version", "type": "string" }, { "default": "ColorPickerModel", "help": "", "name": "_model_name", "type": "string" }, { "default": "@jupyter-widgets/controls", "help": "", "name": "_view_module", "type": "string" }, { "default": "2.0.0", "help": "", "name": "_view_module_version", "type": "string" }, { "default": "ColorPickerView", "help": "", "name": "_view_name", "type": "string" }, { "default": false, "help": "Display short version with just a color selector.", "name": "concise", "type": "bool" }, { "default": "", "help": "Description of the control.", "name": "description", "type": "string" }, { "default": false, "help": "Accept HTML in the description.", "name": "description_allow_html", "type": "bool" }, { "default": false, "help": "Enable or disable user changes.", "name": "disabled", "type": "bool" }, { "default": "reference to new instance", "help": "", "name": "layout", "type": "reference", "widget": "Layout" }, { "default": "reference to new instance", "help": "Styling customizations", "name": "style", "type": "reference", "widget": "DescriptionStyle" }, { "allow_none": true, "default": null, "help": "Is widget tabbable?", "name": "tabbable", "type": "bool" }, { "allow_none": true, "default": null, "help": "A tooltip caption.", "name": "tooltip", "type": "string" }, { "default": "black", "help": "The color value.", "name": "value", "type": "string" } ], "model": { "module": "@jupyter-widgets/controls", "name": "ColorPickerModel", "version": "2.0.0" }, "view": { "module": "@jupyter-widgets/controls", "name": "ColorPickerView", "version": "2.0.0" } }, { "attributes": [ { "default": [], "help": "CSS classes applied to widget DOM element", "items": { "type": "string" }, "name": "_dom_classes", "type": "array" }, { "default": "@jupyter-widgets/controls", "help": "", "name": "_model_module", "type": "string" }, { "default": "2.0.0", "help": "", "name": "_model_module_version", "type": "string" }, { "default": "ColorsInputModel", "help": "", "name": "_model_name", "type": "string" }, { "default": "@jupyter-widgets/controls", "help": "", "name": "_view_module", "type": "string" }, { "default": "2.0.0", "help": "", "name": "_view_module_version", "type": "string" }, { "default": "ColorsInputView", "help": "", "name": "_view_name", "type": "string" }, { "default": true, "help": "", "name": "allow_duplicates", "type": "bool" }, { "default": [], "help": "", "name": "allowed_tags", "type": "array" }, { "default": "", "help": "Description of the control.", "name": "description", "type": "string" }, { "default": false, "help": "Accept HTML in the description.", "name": "description_allow_html", "type": "bool" }, { "default": "reference to new instance", "help": "", "name": "layout", "type": "reference", "widget": "Layout" }, { "default": "\u200b", "help": "", "name": "placeholder", "type": "string" }, { "default": "reference to new instance", "help": "Styling customizations", "name": "style", "type": "reference", "widget": "DescriptionStyle" }, { "allow_none": true, "default": null, "help": "Is widget tabbable?", "name": "tabbable", "type": "bool" }, { "allow_none": true, "default": null, "help": "A tooltip caption.", "name": "tooltip", "type": "string" }, { "default": [], "help": "List of string tags", "name": "value", "type": "array" } ], "model": { "module": "@jupyter-widgets/controls", "name": "ColorsInputModel", "version": "2.0.0" }, "view": { "module": "@jupyter-widgets/controls", "name": "ColorsInputView", "version": "2.0.0" } }, { "attributes": [ { "default": [], "help": "CSS classes applied to widget DOM element", "items": { "type": "string" }, "name": "_dom_classes", "type": "array" }, { "default": "@jupyter-widgets/controls", "help": "", "name": "_model_module", "type": "string" }, { "default": "2.0.0", "help": "", "name": "_model_module_version", "type": "string" }, { "default": "ComboboxModel", "help": "", "name": "_model_name", "type": "string" }, { "default": "@jupyter-widgets/controls", "help": "", "name": "_view_module", "type": "string" }, { "default": "2.0.0", "help": "", "name": "_view_module_version", "type": "string" }, { "default": "ComboboxView", "help": "", "name": "_view_name", "type": "string" }, { "default": true, "help": "Update the value as the user types. If False, update on submission, e.g., pressing Enter or navigating away.", "name": "continuous_update", "type": "bool" }, { "default": "", "help": "Description of the control.", "name": "description", "type": "string" }, { "default": false, "help": "Accept HTML in the description.", "name": "description_allow_html", "type": "bool" }, { "default": false, "help": "Enable or disable user changes", "name": "disabled", "type": "bool" }, { "default": false, "help": "If set, ensure value is in options. Implies continuous_update=False.", "name": "ensure_option", "type": "bool" }, { "default": "reference to new instance", "help": "", "name": "layout", "type": "reference", "widget": "Layout" }, { "default": [], "help": "Dropdown options for the combobox", "items": { "type": "string" }, "name": "options", "type": "array" }, { "default": "\u200b", "help": "Placeholder text to display when nothing has been typed", "name": "placeholder", "type": "string" }, { "default": "reference to new instance", "help": "", "name": "style", "type": "reference", "widget": "TextStyle" }, { "allow_none": true, "default": null, "help": "Is widget tabbable?", "name": "tabbable", "type": "bool" }, { "allow_none": true, "default": null, "help": "A tooltip caption.", "name": "tooltip", "type": "string" }, { "default": "", "help": "String value", "name": "value", "type": "string" } ], "model": { "module": "@jupyter-widgets/controls", "name": "ComboboxModel", "version": "2.0.0" }, "view": { "module": "@jupyter-widgets/controls", "name": "ComboboxView", "version": "2.0.0" } }, { "attributes": [ { "default": [], "help": "CSS classes applied to widget DOM element", "items": { "type": "string" }, "name": "_dom_classes", "type": "array" }, { "default": "@jupyter-widgets/controls", "help": "", "name": "_model_module", "type": "string" }, { "default": "2.0.0", "help": "", "name": "_model_module_version", "type": "string" }, { "default": "ControllerAxisModel", "help": "", "name": "_model_name", "type": "string" }, { "default": "@jupyter-widgets/controls", "help": "", "name": "_view_module", "type": "string" }, { "default": "2.0.0", "help": "", "name": "_view_module_version", "type": "string" }, { "default": "ControllerAxisView", "help": "", "name": "_view_name", "type": "string" }, { "default": "reference to new instance", "help": "", "name": "layout", "type": "reference", "widget": "Layout" }, { "allow_none": true, "default": null, "help": "Is widget tabbable?", "name": "tabbable", "type": "bool" }, { "allow_none": true, "default": null, "help": "A tooltip caption.", "name": "tooltip", "type": "string" }, { "default": 0.0, "help": "The value of the axis.", "name": "value", "type": "float" } ], "model": { "module": "@jupyter-widgets/controls", "name": "ControllerAxisModel", "version": "2.0.0" }, "view": { "module": "@jupyter-widgets/controls", "name": "ControllerAxisView", "version": "2.0.0" } }, { "attributes": [ { "default": [], "help": "CSS classes applied to widget DOM element", "items": { "type": "string" }, "name": "_dom_classes", "type": "array" }, { "default": "@jupyter-widgets/controls", "help": "", "name": "_model_module", "type": "string" }, { "default": "2.0.0", "help": "", "name": "_model_module_version", "type": "string" }, { "default": "ControllerButtonModel", "help": "", "name": "_model_name", "type": "string" }, { "default": "@jupyter-widgets/controls", "help": "", "name": "_view_module", "type": "string" }, { "default": "2.0.0", "help": "", "name": "_view_module_version", "type": "string" }, { "default": "ControllerButtonView", "help": "", "name": "_view_name", "type": "string" }, { "default": "reference to new instance", "help": "", "name": "layout", "type": "reference", "widget": "Layout" }, { "default": false, "help": "Whether the button is pressed.", "name": "pressed", "type": "bool" }, { "allow_none": true, "default": null, "help": "Is widget tabbable?", "name": "tabbable", "type": "bool" }, { "allow_none": true, "default": null, "help": "A tooltip caption.", "name": "tooltip", "type": "string" }, { "default": 0.0, "help": "The value of the button.", "name": "value", "type": "float" } ], "model": { "module": "@jupyter-widgets/controls", "name": "ControllerButtonModel", "version": "2.0.0" }, "view": { "module": "@jupyter-widgets/controls", "name": "ControllerButtonView", "version": "2.0.0" } }, { "attributes": [ { "default": [], "help": "CSS classes applied to widget DOM element", "items": { "type": "string" }, "name": "_dom_classes", "type": "array" }, { "default": "@jupyter-widgets/controls", "help": "", "name": "_model_module", "type": "string" }, { "default": "2.0.0", "help": "", "name": "_model_module_version", "type": "string" }, { "default": "ControllerModel", "help": "", "name": "_model_name", "type": "string" }, { "default": "@jupyter-widgets/controls", "help": "", "name": "_view_module", "type": "string" }, { "default": "2.0.0", "help": "", "name": "_view_module_version", "type": "string" }, { "default": "ControllerView", "help": "", "name": "_view_name", "type": "string" }, { "default": [], "help": "The axes on the gamepad.", "items": { "type": "reference", "widget": "Axis" }, "name": "axes", "type": "array" }, { "default": [], "help": "The buttons on the gamepad.", "items": { "type": "reference", "widget": "Button" }, "name": "buttons", "type": "array" }, { "default": false, "help": "Whether the gamepad is connected.", "name": "connected", "type": "bool" }, { "default": 0, "help": "The id number of the controller.", "name": "index", "type": "int" }, { "default": "reference to new instance", "help": "", "name": "layout", "type": "reference", "widget": "Layout" }, { "default": "", "help": "The name of the control mapping.", "name": "mapping", "type": "string" }, { "default": "", "help": "The name of the controller.", "name": "name", "type": "string" }, { "allow_none": true, "default": null, "help": "Is widget tabbable?", "name": "tabbable", "type": "bool" }, { "default": 0.0, "help": "The last time the data from this gamepad was updated.", "name": "timestamp", "type": "float" }, { "allow_none": true, "default": null, "help": "A tooltip caption.", "name": "tooltip", "type": "string" } ], "model": { "module": "@jupyter-widgets/controls", "name": "ControllerModel", "version": "2.0.0" }, "view": { "module": "@jupyter-widgets/controls", "name": "ControllerView", "version": "2.0.0" } }, { "attributes": [ { "default": [], "help": "CSS classes applied to widget DOM element", "items": { "type": "string" }, "name": "_dom_classes", "type": "array" }, { "default": "@jupyter-widgets/controls", "help": "", "name": "_model_module", "type": "string" }, { "default": "2.0.0", "help": "", "name": "_model_module_version", "type": "string" }, { "default": "DOMWidgetModel", "help": "", "name": "_model_name", "type": "string" }, { "default": "@jupyter-widgets/controls", "help": "", "name": "_view_module", "type": "string" }, { "default": "2.0.0", "help": "", "name": "_view_module_version", "type": "string" }, { "allow_none": true, "default": null, "help": "Name of the view.", "name": "_view_name", "type": "string" }, { "default": "reference to new instance", "help": "", "name": "layout", "type": "reference", "widget": "Layout" }, { "allow_none": true, "default": null, "help": "Is widget tabbable?", "name": "tabbable", "type": "bool" }, { "allow_none": true, "default": null, "help": "A tooltip caption.", "name": "tooltip", "type": "string" }, { "default": "b''", "help": "The media data as a memory view of bytes.", "name": "value", "type": "bytes" } ], "model": { "module": "@jupyter-widgets/controls", "name": "DOMWidgetModel", "version": "2.0.0" }, "view": { "module": "@jupyter-widgets/controls", "name": null, "version": "2.0.0" } }, { "attributes": [ { "default": [], "help": "CSS classes applied to widget DOM element", "items": { "type": "string" }, "name": "_dom_classes", "type": "array" }, { "default": "@jupyter-widgets/controls", "help": "", "name": "_model_module", "type": "string" }, { "default": "2.0.0", "help": "", "name": "_model_module_version", "type": "string" }, { "default": "DatePickerModel", "help": "", "name": "_model_name", "type": "string" }, { "default": "@jupyter-widgets/controls", "help": "", "name": "_view_module", "type": "string" }, { "default": "2.0.0", "help": "", "name": "_view_module_version", "type": "string" }, { "default": "DatePickerView", "help": "", "name": "_view_name", "type": "string" }, { "default": "", "help": "Description of the control.", "name": "description", "type": "string" }, { "default": false, "help": "Accept HTML in the description.", "name": "description_allow_html", "type": "bool" }, { "default": false, "help": "Enable or disable user changes.", "name": "disabled", "type": "bool" }, { "default": "reference to new instance", "help": "", "name": "layout", "type": "reference", "widget": "Layout" }, { "allow_none": true, "default": null, "help": "", "name": "max", "type": "Date" }, { "allow_none": true, "default": null, "help": "", "name": "min", "type": "Date" }, { "default": 1, "help": "The date step to use for the picker, in days, or \"any\".", "name": "step", "type": ["int", "string"], "union_attributes": [ { "type": "int" }, { "enum": ["any"], "type": "string" } ] }, { "default": "reference to new instance", "help": "Styling customizations", "name": "style", "type": "reference", "widget": "DescriptionStyle" }, { "allow_none": true, "default": null, "help": "Is widget tabbable?", "name": "tabbable", "type": "bool" }, { "allow_none": true, "default": null, "help": "A tooltip caption.", "name": "tooltip", "type": "string" }, { "allow_none": true, "default": null, "help": "", "name": "value", "type": "Date" } ], "model": { "module": "@jupyter-widgets/controls", "name": "DatePickerModel", "version": "2.0.0" }, "view": { "module": "@jupyter-widgets/controls", "name": "DatePickerView", "version": "2.0.0" } }, { "attributes": [ { "default": [], "help": "CSS classes applied to widget DOM element", "items": { "type": "string" }, "name": "_dom_classes", "type": "array" }, { "default": "@jupyter-widgets/controls", "help": "", "name": "_model_module", "type": "string" }, { "default": "2.0.0", "help": "", "name": "_model_module_version", "type": "string" }, { "default": "DatetimeModel", "help": "", "name": "_model_name", "type": "string" }, { "default": "@jupyter-widgets/controls", "help": "", "name": "_view_module", "type": "string" }, { "default": "2.0.0", "help": "", "name": "_view_module_version", "type": "string" }, { "default": "DatetimeView", "help": "", "name": "_view_name", "type": "string" }, { "default": "", "help": "Description of the control.", "name": "description", "type": "string" }, { "default": false, "help": "Accept HTML in the description.", "name": "description_allow_html", "type": "bool" }, { "default": false, "help": "Enable or disable user changes.", "name": "disabled", "type": "bool" }, { "default": "reference to new instance", "help": "", "name": "layout", "type": "reference", "widget": "Layout" }, { "allow_none": true, "default": null, "help": "", "name": "max", "type": "Datetime" }, { "allow_none": true, "default": null, "help": "", "name": "min", "type": "Datetime" }, { "default": "reference to new instance", "help": "Styling customizations", "name": "style", "type": "reference", "widget": "DescriptionStyle" }, { "allow_none": true, "default": null, "help": "Is widget tabbable?", "name": "tabbable", "type": "bool" }, { "allow_none": true, "default": null, "help": "A tooltip caption.", "name": "tooltip", "type": "string" }, { "allow_none": true, "default": null, "help": "", "name": "value", "type": "Datetime" } ], "model": { "module": "@jupyter-widgets/controls", "name": "DatetimeModel", "version": "2.0.0" }, "view": { "module": "@jupyter-widgets/controls", "name": "DatetimeView", "version": "2.0.0" } }, { "attributes": [ { "default": "@jupyter-widgets/controls", "help": "", "name": "_model_module", "type": "string" }, { "default": "2.0.0", "help": "", "name": "_model_module_version", "type": "string" }, { "default": "DescriptionStyleModel", "help": "", "name": "_model_name", "type": "string" }, { "default": "@jupyter-widgets/base", "help": "", "name": "_view_module", "type": "string" }, { "default": "2.0.0", "help": "", "name": "_view_module_version", "type": "string" }, { "default": "StyleView", "help": "", "name": "_view_name", "type": "string" }, { "default": "", "help": "Width of the description to the side of the control.", "name": "description_width", "type": "string" } ], "model": { "module": "@jupyter-widgets/controls", "name": "DescriptionStyleModel", "version": "2.0.0" }, "view": { "module": "@jupyter-widgets/base", "name": "StyleView", "version": "2.0.0" } }, { "attributes": [ { "default": "@jupyter-widgets/controls", "help": "", "name": "_model_module", "type": "string" }, { "default": "2.0.0", "help": "", "name": "_model_module_version", "type": "string" }, { "default": "DirectionalLinkModel", "help": "", "name": "_model_name", "type": "string" }, { "default": "@jupyter-widgets/controls", "help": "", "name": "_view_module", "type": "string" }, { "default": "2.0.0", "help": "", "name": "_view_module_version", "type": "string" }, { "allow_none": true, "default": null, "help": "Name of the view.", "name": "_view_name", "type": "string" }, { "default": [], "help": "The source (widget, 'trait_name') pair", "name": "source", "type": "array" }, { "default": [], "help": "The target (widget, 'trait_name') pair", "name": "target", "type": "array" } ], "model": { "module": "@jupyter-widgets/controls", "name": "DirectionalLinkModel", "version": "2.0.0" }, "view": { "module": "@jupyter-widgets/controls", "name": null, "version": "2.0.0" } }, { "attributes": [ { "default": [], "help": "CSS classes applied to widget DOM element", "items": { "type": "string" }, "name": "_dom_classes", "type": "array" }, { "default": "@jupyter-widgets/controls", "help": "", "name": "_model_module", "type": "string" }, { "default": "2.0.0", "help": "", "name": "_model_module_version", "type": "string" }, { "default": "DropdownModel", "help": "", "name": "_model_name", "type": "string" }, { "default": [], "help": "The labels for the options.", "items": { "type": "string" }, "name": "_options_labels", "type": "array" }, { "default": "@jupyter-widgets/controls", "help": "", "name": "_view_module", "type": "string" }, { "default": "2.0.0", "help": "", "name": "_view_module_version", "type": "string" }, { "default": "DropdownView", "help": "", "name": "_view_name", "type": "string" }, { "default": "", "help": "Description of the control.", "name": "description", "type": "string" }, { "default": false, "help": "Accept HTML in the description.", "name": "description_allow_html", "type": "bool" }, { "default": false, "help": "Enable or disable user changes", "name": "disabled", "type": "bool" }, { "allow_none": true, "default": null, "help": "Selected index", "name": "index", "type": "int" }, { "default": "reference to new instance", "help": "", "name": "layout", "type": "reference", "widget": "Layout" }, { "default": "reference to new instance", "help": "Styling customizations", "name": "style", "type": "reference", "widget": "DescriptionStyle" }, { "allow_none": true, "default": null, "help": "Is widget tabbable?", "name": "tabbable", "type": "bool" }, { "allow_none": true, "default": null, "help": "A tooltip caption.", "name": "tooltip", "type": "string" } ], "model": { "module": "@jupyter-widgets/controls", "name": "DropdownModel", "version": "2.0.0" }, "view": { "module": "@jupyter-widgets/controls", "name": "DropdownView", "version": "2.0.0" } }, { "attributes": [ { "default": [], "help": "CSS classes applied to widget DOM element", "items": { "type": "string" }, "name": "_dom_classes", "type": "array" }, { "default": "@jupyter-widgets/controls", "help": "", "name": "_model_module", "type": "string" }, { "default": "2.0.0", "help": "", "name": "_model_module_version", "type": "string" }, { "default": "FileUploadModel", "help": "", "name": "_model_name", "type": "string" }, { "default": "@jupyter-widgets/controls", "help": "", "name": "_view_module", "type": "string" }, { "default": "2.0.0", "help": "", "name": "_view_module_version", "type": "string" }, { "default": "FileUploadView", "help": "", "name": "_view_name", "type": "string" }, { "default": "", "help": "File types to accept, empty string for all", "name": "accept", "type": "string" }, { "default": "", "enum": ["primary", "success", "info", "warning", "danger", ""], "help": "Use a predefined styling for the button.", "name": "button_style", "type": "string" }, { "default": "", "help": "Description of the control.", "name": "description", "type": "string" }, { "default": false, "help": "Accept HTML in the description.", "name": "description_allow_html", "type": "bool" }, { "default": false, "help": "Enable or disable button", "name": "disabled", "type": "bool" }, { "default": "", "help": "Error message", "name": "error", "type": "string" }, { "default": "upload", "help": "Font-awesome icon name, without the 'fa-' prefix.", "name": "icon", "type": "string" }, { "default": "reference to new instance", "help": "", "name": "layout", "type": "reference", "widget": "Layout" }, { "default": false, "help": "If True, allow for multiple files upload", "name": "multiple", "type": "bool" }, { "default": "reference to new instance", "help": "", "name": "style", "type": "reference", "widget": "ButtonStyle" }, { "allow_none": true, "default": null, "help": "Is widget tabbable?", "name": "tabbable", "type": "bool" }, { "allow_none": true, "default": null, "help": "A tooltip caption.", "name": "tooltip", "type": "string" }, { "default": [], "help": "The file upload value", "items": { "type": "object" }, "name": "value", "type": "array" } ], "model": { "module": "@jupyter-widgets/controls", "name": "FileUploadModel", "version": "2.0.0" }, "view": { "module": "@jupyter-widgets/controls", "name": "FileUploadView", "version": "2.0.0" } }, { "attributes": [ { "default": [], "help": "CSS classes applied to widget DOM element", "items": { "type": "string" }, "name": "_dom_classes", "type": "array" }, { "default": "@jupyter-widgets/controls", "help": "", "name": "_model_module", "type": "string" }, { "default": "2.0.0", "help": "", "name": "_model_module_version", "type": "string" }, { "default": "FloatLogSliderModel", "help": "", "name": "_model_name", "type": "string" }, { "default": "@jupyter-widgets/controls", "help": "", "name": "_view_module", "type": "string" }, { "default": "2.0.0", "help": "", "name": "_view_module_version", "type": "string" }, { "default": "FloatLogSliderView", "help": "", "name": "_view_name", "type": "string" }, { "default": 10.0, "help": "Base for the logarithm", "name": "base", "type": "float" }, { "default": "drag-tap", "enum": ["drag-tap", "drag-snap", "tap", "drag", "snap"], "help": "Slider dragging behavior.", "name": "behavior", "type": "string" }, { "default": true, "help": "Update the value of the widget as the user is holding the slider.", "name": "continuous_update", "type": "bool" }, { "default": "", "help": "Description of the control.", "name": "description", "type": "string" }, { "default": false, "help": "Accept HTML in the description.", "name": "description_allow_html", "type": "bool" }, { "default": false, "help": "Enable or disable user changes", "name": "disabled", "type": "bool" }, { "default": "reference to new instance", "help": "", "name": "layout", "type": "reference", "widget": "Layout" }, { "default": 4.0, "help": "Max value for the exponent", "name": "max", "type": "float" }, { "default": 0.0, "help": "Min value for the exponent", "name": "min", "type": "float" }, { "default": "horizontal", "enum": ["horizontal", "vertical"], "help": "Vertical or horizontal.", "name": "orientation", "type": "string" }, { "default": true, "help": "Display the current value of the slider next to it.", "name": "readout", "type": "bool" }, { "default": ".3g", "help": "Format for the readout", "name": "readout_format", "type": "string" }, { "allow_none": true, "default": 0.1, "help": "Minimum step in the exponent to increment the value", "name": "step", "type": "float" }, { "default": "reference to new instance", "help": "", "name": "style", "type": "reference", "widget": "SliderStyle" }, { "allow_none": true, "default": null, "help": "Is widget tabbable?", "name": "tabbable", "type": "bool" }, { "allow_none": true, "default": null, "help": "A tooltip caption.", "name": "tooltip", "type": "string" }, { "default": 1.0, "help": "Float value", "name": "value", "type": "float" } ], "model": { "module": "@jupyter-widgets/controls", "name": "FloatLogSliderModel", "version": "2.0.0" }, "view": { "module": "@jupyter-widgets/controls", "name": "FloatLogSliderView", "version": "2.0.0" } }, { "attributes": [ { "default": [], "help": "CSS classes applied to widget DOM element", "items": { "type": "string" }, "name": "_dom_classes", "type": "array" }, { "default": "@jupyter-widgets/controls", "help": "", "name": "_model_module", "type": "string" }, { "default": "2.0.0", "help": "", "name": "_model_module_version", "type": "string" }, { "default": "FloatProgressModel", "help": "", "name": "_model_name", "type": "string" }, { "default": "@jupyter-widgets/controls", "help": "", "name": "_view_module", "type": "string" }, { "default": "2.0.0", "help": "", "name": "_view_module_version", "type": "string" }, { "default": "ProgressView", "help": "", "name": "_view_name", "type": "string" }, { "allow_none": true, "default": "", "enum": ["success", "info", "warning", "danger", ""], "help": "Use a predefined styling for the progress bar.", "name": "bar_style", "type": "string" }, { "default": "", "help": "Description of the control.", "name": "description", "type": "string" }, { "default": false, "help": "Accept HTML in the description.", "name": "description_allow_html", "type": "bool" }, { "default": "reference to new instance", "help": "", "name": "layout", "type": "reference", "widget": "Layout" }, { "default": 100.0, "help": "Max value", "name": "max", "type": "float" }, { "default": 0.0, "help": "Min value", "name": "min", "type": "float" }, { "default": "horizontal", "enum": ["horizontal", "vertical"], "help": "Vertical or horizontal.", "name": "orientation", "type": "string" }, { "default": "reference to new instance", "help": "", "name": "style", "type": "reference", "widget": "ProgressStyle" }, { "allow_none": true, "default": null, "help": "Is widget tabbable?", "name": "tabbable", "type": "bool" }, { "allow_none": true, "default": null, "help": "A tooltip caption.", "name": "tooltip", "type": "string" }, { "default": 0.0, "help": "Float value", "name": "value", "type": "float" } ], "model": { "module": "@jupyter-widgets/controls", "name": "FloatProgressModel", "version": "2.0.0" }, "view": { "module": "@jupyter-widgets/controls", "name": "ProgressView", "version": "2.0.0" } }, { "attributes": [ { "default": [], "help": "CSS classes applied to widget DOM element", "items": { "type": "string" }, "name": "_dom_classes", "type": "array" }, { "default": "@jupyter-widgets/controls", "help": "", "name": "_model_module", "type": "string" }, { "default": "2.0.0", "help": "", "name": "_model_module_version", "type": "string" }, { "default": "FloatRangeSliderModel", "help": "", "name": "_model_name", "type": "string" }, { "default": "@jupyter-widgets/controls", "help": "", "name": "_view_module", "type": "string" }, { "default": "2.0.0", "help": "", "name": "_view_module_version", "type": "string" }, { "default": "FloatRangeSliderView", "help": "", "name": "_view_name", "type": "string" }, { "default": "drag-tap", "enum": ["drag-tap", "drag-snap", "tap", "drag", "snap"], "help": "Slider dragging behavior.", "name": "behavior", "type": "string" }, { "default": true, "help": "Update the value of the widget as the user is sliding the slider.", "name": "continuous_update", "type": "bool" }, { "default": "", "help": "Description of the control.", "name": "description", "type": "string" }, { "default": false, "help": "Accept HTML in the description.", "name": "description_allow_html", "type": "bool" }, { "default": false, "help": "Enable or disable user changes", "name": "disabled", "type": "bool" }, { "default": "reference to new instance", "help": "", "name": "layout", "type": "reference", "widget": "Layout" }, { "default": 100.0, "help": "Max value", "name": "max", "type": "float" }, { "default": 0.0, "help": "Min value", "name": "min", "type": "float" }, { "default": "horizontal", "enum": ["horizontal", "vertical"], "help": "Vertical or horizontal.", "name": "orientation", "type": "string" }, { "default": true, "help": "Display the current value of the slider next to it.", "name": "readout", "type": "bool" }, { "default": ".2f", "help": "Format for the readout", "name": "readout_format", "type": "string" }, { "allow_none": true, "default": 0.1, "help": "Minimum step to increment the value", "name": "step", "type": "float" }, { "default": "reference to new instance", "help": "", "name": "style", "type": "reference", "widget": "SliderStyle" }, { "allow_none": true, "default": null, "help": "Is widget tabbable?", "name": "tabbable", "type": "bool" }, { "allow_none": true, "default": null, "help": "A tooltip caption.", "name": "tooltip", "type": "string" }, { "default": [0.0, 1.0], "help": "Tuple of (lower, upper) bounds", "name": "value", "type": "array" } ], "model": { "module": "@jupyter-widgets/controls", "name": "FloatRangeSliderModel", "version": "2.0.0" }, "view": { "module": "@jupyter-widgets/controls", "name": "FloatRangeSliderView", "version": "2.0.0" } }, { "attributes": [ { "default": [], "help": "CSS classes applied to widget DOM element", "items": { "type": "string" }, "name": "_dom_classes", "type": "array" }, { "default": "@jupyter-widgets/controls", "help": "", "name": "_model_module", "type": "string" }, { "default": "2.0.0", "help": "", "name": "_model_module_version", "type": "string" }, { "default": "FloatSliderModel", "help": "", "name": "_model_name", "type": "string" }, { "default": "@jupyter-widgets/controls", "help": "", "name": "_view_module", "type": "string" }, { "default": "2.0.0", "help": "", "name": "_view_module_version", "type": "string" }, { "default": "FloatSliderView", "help": "", "name": "_view_name", "type": "string" }, { "default": "drag-tap", "enum": ["drag-tap", "drag-snap", "tap", "drag", "snap"], "help": "Slider dragging behavior.", "name": "behavior", "type": "string" }, { "default": true, "help": "Update the value of the widget as the user is holding the slider.", "name": "continuous_update", "type": "bool" }, { "default": "", "help": "Description of the control.", "name": "description", "type": "string" }, { "default": false, "help": "Accept HTML in the description.", "name": "description_allow_html", "type": "bool" }, { "default": false, "help": "Enable or disable user changes", "name": "disabled", "type": "bool" }, { "default": "reference to new instance", "help": "", "name": "layout", "type": "reference", "widget": "Layout" }, { "default": 100.0, "help": "Max value", "name": "max", "type": "float" }, { "default": 0.0, "help": "Min value", "name": "min", "type": "float" }, { "default": "horizontal", "enum": ["horizontal", "vertical"], "help": "Vertical or horizontal.", "name": "orientation", "type": "string" }, { "default": true, "help": "Display the current value of the slider next to it.", "name": "readout", "type": "bool" }, { "default": ".2f", "help": "Format for the readout", "name": "readout_format", "type": "string" }, { "allow_none": true, "default": 0.1, "help": "Minimum step to increment the value", "name": "step", "type": "float" }, { "default": "reference to new instance", "help": "", "name": "style", "type": "reference", "widget": "SliderStyle" }, { "allow_none": true, "default": null, "help": "Is widget tabbable?", "name": "tabbable", "type": "bool" }, { "allow_none": true, "default": null, "help": "A tooltip caption.", "name": "tooltip", "type": "string" }, { "default": 0.0, "help": "Float value", "name": "value", "type": "float" } ], "model": { "module": "@jupyter-widgets/controls", "name": "FloatSliderModel", "version": "2.0.0" }, "view": { "module": "@jupyter-widgets/controls", "name": "FloatSliderView", "version": "2.0.0" } }, { "attributes": [ { "default": [], "help": "CSS classes applied to widget DOM element", "items": { "type": "string" }, "name": "_dom_classes", "type": "array" }, { "default": "@jupyter-widgets/controls", "help": "", "name": "_model_module", "type": "string" }, { "default": "2.0.0", "help": "", "name": "_model_module_version", "type": "string" }, { "default": "FloatTextModel", "help": "", "name": "_model_name", "type": "string" }, { "default": "@jupyter-widgets/controls", "help": "", "name": "_view_module", "type": "string" }, { "default": "2.0.0", "help": "", "name": "_view_module_version", "type": "string" }, { "default": "FloatTextView", "help": "", "name": "_view_name", "type": "string" }, { "default": false, "help": "Update the value as the user types. If False, update on submission, e.g., pressing Enter or navigating away.", "name": "continuous_update", "type": "bool" }, { "default": "", "help": "Description of the control.", "name": "description", "type": "string" }, { "default": false, "help": "Accept HTML in the description.", "name": "description_allow_html", "type": "bool" }, { "default": false, "help": "Enable or disable user changes", "name": "disabled", "type": "bool" }, { "default": "reference to new instance", "help": "", "name": "layout", "type": "reference", "widget": "Layout" }, { "allow_none": true, "default": null, "help": "Minimum step to increment the value", "name": "step", "type": "float" }, { "default": "reference to new instance", "help": "Styling customizations", "name": "style", "type": "reference", "widget": "DescriptionStyle" }, { "allow_none": true, "default": null, "help": "Is widget tabbable?", "name": "tabbable", "type": "bool" }, { "allow_none": true, "default": null, "help": "A tooltip caption.", "name": "tooltip", "type": "string" }, { "default": 0.0, "help": "Float value", "name": "value", "type": "float" } ], "model": { "module": "@jupyter-widgets/controls", "name": "FloatTextModel", "version": "2.0.0" }, "view": { "module": "@jupyter-widgets/controls", "name": "FloatTextView", "version": "2.0.0" } }, { "attributes": [ { "default": [], "help": "CSS classes applied to widget DOM element", "items": { "type": "string" }, "name": "_dom_classes", "type": "array" }, { "default": "@jupyter-widgets/controls", "help": "", "name": "_model_module", "type": "string" }, { "default": "2.0.0", "help": "", "name": "_model_module_version", "type": "string" }, { "default": "FloatsInputModel", "help": "", "name": "_model_name", "type": "string" }, { "default": "@jupyter-widgets/controls", "help": "", "name": "_view_module", "type": "string" }, { "default": "2.0.0", "help": "", "name": "_view_module_version", "type": "string" }, { "default": "FloatsInputView", "help": "", "name": "_view_name", "type": "string" }, { "default": true, "help": "", "name": "allow_duplicates", "type": "bool" }, { "default": [], "help": "", "name": "allowed_tags", "type": "array" }, { "default": "", "help": "Description of the control.", "name": "description", "type": "string" }, { "default": false, "help": "Accept HTML in the description.", "name": "description_allow_html", "type": "bool" }, { "default": ".1f", "help": "", "name": "format", "type": "string" }, { "default": "reference to new instance", "help": "", "name": "layout", "type": "reference", "widget": "Layout" }, { "allow_none": true, "default": null, "help": "", "name": "max", "type": "float" }, { "allow_none": true, "default": null, "help": "", "name": "min", "type": "float" }, { "default": "\u200b", "help": "", "name": "placeholder", "type": "string" }, { "default": "reference to new instance", "help": "Styling customizations", "name": "style", "type": "reference", "widget": "DescriptionStyle" }, { "allow_none": true, "default": null, "help": "Is widget tabbable?", "name": "tabbable", "type": "bool" }, { "default": "", "enum": ["primary", "success", "info", "warning", "danger", ""], "help": "Use a predefined styling for the tags.", "name": "tag_style", "type": "string" }, { "allow_none": true, "default": null, "help": "A tooltip caption.", "name": "tooltip", "type": "string" }, { "default": [], "help": "List of float tags", "name": "value", "type": "array" } ], "model": { "module": "@jupyter-widgets/controls", "name": "FloatsInputModel", "version": "2.0.0" }, "view": { "module": "@jupyter-widgets/controls", "name": "FloatsInputView", "version": "2.0.0" } }, { "attributes": [ { "default": [], "help": "CSS classes applied to widget DOM element", "items": { "type": "string" }, "name": "_dom_classes", "type": "array" }, { "default": "@jupyter-widgets/controls", "help": "", "name": "_model_module", "type": "string" }, { "default": "2.0.0", "help": "", "name": "_model_module_version", "type": "string" }, { "default": "GridBoxModel", "help": "", "name": "_model_name", "type": "string" }, { "default": "@jupyter-widgets/controls", "help": "", "name": "_view_module", "type": "string" }, { "default": "2.0.0", "help": "", "name": "_view_module_version", "type": "string" }, { "default": "GridBoxView", "help": "", "name": "_view_name", "type": "string" }, { "default": "", "enum": ["success", "info", "warning", "danger", ""], "help": "Use a predefined styling for the box.", "name": "box_style", "type": "string" }, { "default": [], "help": "List of widget children", "items": { "type": "reference", "widget": "Widget" }, "name": "children", "type": "array" }, { "default": "reference to new instance", "help": "", "name": "layout", "type": "reference", "widget": "Layout" }, { "allow_none": true, "default": null, "help": "Is widget tabbable?", "name": "tabbable", "type": "bool" }, { "allow_none": true, "default": null, "help": "A tooltip caption.", "name": "tooltip", "type": "string" } ], "model": { "module": "@jupyter-widgets/controls", "name": "GridBoxModel", "version": "2.0.0" }, "view": { "module": "@jupyter-widgets/controls", "name": "GridBoxView", "version": "2.0.0" } }, { "attributes": [ { "default": [], "help": "CSS classes applied to widget DOM element", "items": { "type": "string" }, "name": "_dom_classes", "type": "array" }, { "default": "@jupyter-widgets/controls", "help": "", "name": "_model_module", "type": "string" }, { "default": "2.0.0", "help": "", "name": "_model_module_version", "type": "string" }, { "default": "HBoxModel", "help": "", "name": "_model_name", "type": "string" }, { "default": "@jupyter-widgets/controls", "help": "", "name": "_view_module", "type": "string" }, { "default": "2.0.0", "help": "", "name": "_view_module_version", "type": "string" }, { "default": "HBoxView", "help": "", "name": "_view_name", "type": "string" }, { "default": "", "enum": ["success", "info", "warning", "danger", ""], "help": "Use a predefined styling for the box.", "name": "box_style", "type": "string" }, { "default": [], "help": "List of widget children", "items": { "type": "reference", "widget": "Widget" }, "name": "children", "type": "array" }, { "default": "reference to new instance", "help": "", "name": "layout", "type": "reference", "widget": "Layout" }, { "allow_none": true, "default": null, "help": "Is widget tabbable?", "name": "tabbable", "type": "bool" }, { "allow_none": true, "default": null, "help": "A tooltip caption.", "name": "tooltip", "type": "string" } ], "model": { "module": "@jupyter-widgets/controls", "name": "HBoxModel", "version": "2.0.0" }, "view": { "module": "@jupyter-widgets/controls", "name": "HBoxView", "version": "2.0.0" } }, { "attributes": [ { "default": [], "help": "CSS classes applied to widget DOM element", "items": { "type": "string" }, "name": "_dom_classes", "type": "array" }, { "default": "@jupyter-widgets/controls", "help": "", "name": "_model_module", "type": "string" }, { "default": "2.0.0", "help": "", "name": "_model_module_version", "type": "string" }, { "default": "HTMLMathModel", "help": "", "name": "_model_name", "type": "string" }, { "default": "@jupyter-widgets/controls", "help": "", "name": "_view_module", "type": "string" }, { "default": "2.0.0", "help": "", "name": "_view_module_version", "type": "string" }, { "default": "HTMLMathView", "help": "", "name": "_view_name", "type": "string" }, { "default": "", "help": "Description of the control.", "name": "description", "type": "string" }, { "default": false, "help": "Accept HTML in the description.", "name": "description_allow_html", "type": "bool" }, { "default": "reference to new instance", "help": "", "name": "layout", "type": "reference", "widget": "Layout" }, { "default": "\u200b", "help": "Placeholder text to display when nothing has been typed", "name": "placeholder", "type": "string" }, { "default": "reference to new instance", "help": "", "name": "style", "type": "reference", "widget": "HTMLMathStyle" }, { "allow_none": true, "default": null, "help": "Is widget tabbable?", "name": "tabbable", "type": "bool" }, { "allow_none": true, "default": null, "help": "A tooltip caption.", "name": "tooltip", "type": "string" }, { "default": "", "help": "String value", "name": "value", "type": "string" } ], "model": { "module": "@jupyter-widgets/controls", "name": "HTMLMathModel", "version": "2.0.0" }, "view": { "module": "@jupyter-widgets/controls", "name": "HTMLMathView", "version": "2.0.0" } }, { "attributes": [ { "default": "@jupyter-widgets/controls", "help": "", "name": "_model_module", "type": "string" }, { "default": "2.0.0", "help": "", "name": "_model_module_version", "type": "string" }, { "default": "HTMLMathStyleModel", "help": "", "name": "_model_name", "type": "string" }, { "default": "@jupyter-widgets/base", "help": "", "name": "_view_module", "type": "string" }, { "default": "2.0.0", "help": "", "name": "_view_module_version", "type": "string" }, { "default": "StyleView", "help": "", "name": "_view_name", "type": "string" }, { "allow_none": true, "default": null, "help": "Background specifications.", "name": "background", "type": "string" }, { "default": "", "help": "Width of the description to the side of the control.", "name": "description_width", "type": "string" }, { "allow_none": true, "default": null, "help": "Text font size.", "name": "font_size", "type": "string" }, { "allow_none": true, "default": null, "help": "Text color", "name": "text_color", "type": "string" } ], "model": { "module": "@jupyter-widgets/controls", "name": "HTMLMathStyleModel", "version": "2.0.0" }, "view": { "module": "@jupyter-widgets/base", "name": "StyleView", "version": "2.0.0" } }, { "attributes": [ { "default": [], "help": "CSS classes applied to widget DOM element", "items": { "type": "string" }, "name": "_dom_classes", "type": "array" }, { "default": "@jupyter-widgets/controls", "help": "", "name": "_model_module", "type": "string" }, { "default": "2.0.0", "help": "", "name": "_model_module_version", "type": "string" }, { "default": "HTMLModel", "help": "", "name": "_model_name", "type": "string" }, { "default": "@jupyter-widgets/controls", "help": "", "name": "_view_module", "type": "string" }, { "default": "2.0.0", "help": "", "name": "_view_module_version", "type": "string" }, { "default": "HTMLView", "help": "", "name": "_view_name", "type": "string" }, { "default": "", "help": "Description of the control.", "name": "description", "type": "string" }, { "default": false, "help": "Accept HTML in the description.", "name": "description_allow_html", "type": "bool" }, { "default": "reference to new instance", "help": "", "name": "layout", "type": "reference", "widget": "Layout" }, { "default": "\u200b", "help": "Placeholder text to display when nothing has been typed", "name": "placeholder", "type": "string" }, { "default": "reference to new instance", "help": "", "name": "style", "type": "reference", "widget": "HTMLStyle" }, { "allow_none": true, "default": null, "help": "Is widget tabbable?", "name": "tabbable", "type": "bool" }, { "allow_none": true, "default": null, "help": "A tooltip caption.", "name": "tooltip", "type": "string" }, { "default": "", "help": "String value", "name": "value", "type": "string" } ], "model": { "module": "@jupyter-widgets/controls", "name": "HTMLModel", "version": "2.0.0" }, "view": { "module": "@jupyter-widgets/controls", "name": "HTMLView", "version": "2.0.0" } }, { "attributes": [ { "default": "@jupyter-widgets/controls", "help": "", "name": "_model_module", "type": "string" }, { "default": "2.0.0", "help": "", "name": "_model_module_version", "type": "string" }, { "default": "HTMLStyleModel", "help": "", "name": "_model_name", "type": "string" }, { "default": "@jupyter-widgets/base", "help": "", "name": "_view_module", "type": "string" }, { "default": "2.0.0", "help": "", "name": "_view_module_version", "type": "string" }, { "default": "StyleView", "help": "", "name": "_view_name", "type": "string" }, { "allow_none": true, "default": null, "help": "Background specifications.", "name": "background", "type": "string" }, { "default": "", "help": "Width of the description to the side of the control.", "name": "description_width", "type": "string" }, { "allow_none": true, "default": null, "help": "Text font size.", "name": "font_size", "type": "string" }, { "allow_none": true, "default": null, "help": "Text color", "name": "text_color", "type": "string" } ], "model": { "module": "@jupyter-widgets/controls", "name": "HTMLStyleModel", "version": "2.0.0" }, "view": { "module": "@jupyter-widgets/base", "name": "StyleView", "version": "2.0.0" } }, { "attributes": [ { "default": [], "help": "CSS classes applied to widget DOM element", "items": { "type": "string" }, "name": "_dom_classes", "type": "array" }, { "default": "@jupyter-widgets/controls", "help": "", "name": "_model_module", "type": "string" }, { "default": "2.0.0", "help": "", "name": "_model_module_version", "type": "string" }, { "default": "ImageModel", "help": "", "name": "_model_name", "type": "string" }, { "default": "@jupyter-widgets/controls", "help": "", "name": "_view_module", "type": "string" }, { "default": "2.0.0", "help": "", "name": "_view_module_version", "type": "string" }, { "default": "ImageView", "help": "", "name": "_view_name", "type": "string" }, { "default": "png", "help": "The format of the image.", "name": "format", "type": "string" }, { "default": "", "help": "Height of the image in pixels. Use layout.height for styling the widget.", "name": "height", "type": "string" }, { "default": "reference to new instance", "help": "", "name": "layout", "type": "reference", "widget": "Layout" }, { "allow_none": true, "default": null, "help": "Is widget tabbable?", "name": "tabbable", "type": "bool" }, { "allow_none": true, "default": null, "help": "A tooltip caption.", "name": "tooltip", "type": "string" }, { "default": "b''", "help": "The media data as a memory view of bytes.", "name": "value", "type": "bytes" }, { "default": "", "help": "Width of the image in pixels. Use layout.width for styling the widget.", "name": "width", "type": "string" } ], "model": { "module": "@jupyter-widgets/controls", "name": "ImageModel", "version": "2.0.0" }, "view": { "module": "@jupyter-widgets/controls", "name": "ImageView", "version": "2.0.0" } }, { "attributes": [ { "default": [], "help": "CSS classes applied to widget DOM element", "items": { "type": "string" }, "name": "_dom_classes", "type": "array" }, { "default": "@jupyter-widgets/controls", "help": "", "name": "_model_module", "type": "string" }, { "default": "2.0.0", "help": "", "name": "_model_module_version", "type": "string" }, { "default": "IntProgressModel", "help": "", "name": "_model_name", "type": "string" }, { "default": "@jupyter-widgets/controls", "help": "", "name": "_view_module", "type": "string" }, { "default": "2.0.0", "help": "", "name": "_view_module_version", "type": "string" }, { "default": "ProgressView", "help": "", "name": "_view_name", "type": "string" }, { "default": "", "enum": ["success", "info", "warning", "danger", ""], "help": "Use a predefined styling for the progress bar.", "name": "bar_style", "type": "string" }, { "default": "", "help": "Description of the control.", "name": "description", "type": "string" }, { "default": false, "help": "Accept HTML in the description.", "name": "description_allow_html", "type": "bool" }, { "default": "reference to new instance", "help": "", "name": "layout", "type": "reference", "widget": "Layout" }, { "default": 100, "help": "Max value", "name": "max", "type": "int" }, { "default": 0, "help": "Min value", "name": "min", "type": "int" }, { "default": "horizontal", "enum": ["horizontal", "vertical"], "help": "Vertical or horizontal.", "name": "orientation", "type": "string" }, { "default": "reference to new instance", "help": "", "name": "style", "type": "reference", "widget": "ProgressStyle" }, { "allow_none": true, "default": null, "help": "Is widget tabbable?", "name": "tabbable", "type": "bool" }, { "allow_none": true, "default": null, "help": "A tooltip caption.", "name": "tooltip", "type": "string" }, { "default": 0, "help": "Int value", "name": "value", "type": "int" } ], "model": { "module": "@jupyter-widgets/controls", "name": "IntProgressModel", "version": "2.0.0" }, "view": { "module": "@jupyter-widgets/controls", "name": "ProgressView", "version": "2.0.0" } }, { "attributes": [ { "default": [], "help": "CSS classes applied to widget DOM element", "items": { "type": "string" }, "name": "_dom_classes", "type": "array" }, { "default": "@jupyter-widgets/controls", "help": "", "name": "_model_module", "type": "string" }, { "default": "2.0.0", "help": "", "name": "_model_module_version", "type": "string" }, { "default": "IntRangeSliderModel", "help": "", "name": "_model_name", "type": "string" }, { "default": "@jupyter-widgets/controls", "help": "", "name": "_view_module", "type": "string" }, { "default": "2.0.0", "help": "", "name": "_view_module_version", "type": "string" }, { "default": "IntRangeSliderView", "help": "", "name": "_view_name", "type": "string" }, { "default": "drag-tap", "enum": ["drag-tap", "drag-snap", "tap", "drag", "snap"], "help": "Slider dragging behavior.", "name": "behavior", "type": "string" }, { "default": true, "help": "Update the value of the widget as the user is sliding the slider.", "name": "continuous_update", "type": "bool" }, { "default": "", "help": "Description of the control.", "name": "description", "type": "string" }, { "default": false, "help": "Accept HTML in the description.", "name": "description_allow_html", "type": "bool" }, { "default": false, "help": "Enable or disable user changes", "name": "disabled", "type": "bool" }, { "default": "reference to new instance", "help": "", "name": "layout", "type": "reference", "widget": "Layout" }, { "default": 100, "help": "Max value", "name": "max", "type": "int" }, { "default": 0, "help": "Min value", "name": "min", "type": "int" }, { "default": "horizontal", "enum": ["horizontal", "vertical"], "help": "Vertical or horizontal.", "name": "orientation", "type": "string" }, { "default": true, "help": "Display the current value of the slider next to it.", "name": "readout", "type": "bool" }, { "default": "d", "help": "Format for the readout", "name": "readout_format", "type": "string" }, { "default": 1, "help": "Minimum step that the value can take", "name": "step", "type": "int" }, { "default": "reference to new instance", "help": "Slider style customizations.", "name": "style", "type": "reference", "widget": "SliderStyle" }, { "allow_none": true, "default": null, "help": "Is widget tabbable?", "name": "tabbable", "type": "bool" }, { "allow_none": true, "default": null, "help": "A tooltip caption.", "name": "tooltip", "type": "string" }, { "default": [0, 1], "help": "Tuple of (lower, upper) bounds", "name": "value", "type": "array" } ], "model": { "module": "@jupyter-widgets/controls", "name": "IntRangeSliderModel", "version": "2.0.0" }, "view": { "module": "@jupyter-widgets/controls", "name": "IntRangeSliderView", "version": "2.0.0" } }, { "attributes": [ { "default": [], "help": "CSS classes applied to widget DOM element", "items": { "type": "string" }, "name": "_dom_classes", "type": "array" }, { "default": "@jupyter-widgets/controls", "help": "", "name": "_model_module", "type": "string" }, { "default": "2.0.0", "help": "", "name": "_model_module_version", "type": "string" }, { "default": "IntSliderModel", "help": "", "name": "_model_name", "type": "string" }, { "default": "@jupyter-widgets/controls", "help": "", "name": "_view_module", "type": "string" }, { "default": "2.0.0", "help": "", "name": "_view_module_version", "type": "string" }, { "default": "IntSliderView", "help": "", "name": "_view_name", "type": "string" }, { "default": "drag-tap", "enum": ["drag-tap", "drag-snap", "tap", "drag", "snap"], "help": "Slider dragging behavior.", "name": "behavior", "type": "string" }, { "default": true, "help": "Update the value of the widget as the user is holding the slider.", "name": "continuous_update", "type": "bool" }, { "default": "", "help": "Description of the control.", "name": "description", "type": "string" }, { "default": false, "help": "Accept HTML in the description.", "name": "description_allow_html", "type": "bool" }, { "default": false, "help": "Enable or disable user changes", "name": "disabled", "type": "bool" }, { "default": "reference to new instance", "help": "", "name": "layout", "type": "reference", "widget": "Layout" }, { "default": 100, "help": "Max value", "name": "max", "type": "int" }, { "default": 0, "help": "Min value", "name": "min", "type": "int" }, { "default": "horizontal", "enum": ["horizontal", "vertical"], "help": "Vertical or horizontal.", "name": "orientation", "type": "string" }, { "default": true, "help": "Display the current value of the slider next to it.", "name": "readout", "type": "bool" }, { "default": "d", "help": "Format for the readout", "name": "readout_format", "type": "string" }, { "default": 1, "help": "Minimum step to increment the value", "name": "step", "type": "int" }, { "default": "reference to new instance", "help": "", "name": "style", "type": "reference", "widget": "SliderStyle" }, { "allow_none": true, "default": null, "help": "Is widget tabbable?", "name": "tabbable", "type": "bool" }, { "allow_none": true, "default": null, "help": "A tooltip caption.", "name": "tooltip", "type": "string" }, { "default": 0, "help": "Int value", "name": "value", "type": "int" } ], "model": { "module": "@jupyter-widgets/controls", "name": "IntSliderModel", "version": "2.0.0" }, "view": { "module": "@jupyter-widgets/controls", "name": "IntSliderView", "version": "2.0.0" } }, { "attributes": [ { "default": [], "help": "CSS classes applied to widget DOM element", "items": { "type": "string" }, "name": "_dom_classes", "type": "array" }, { "default": "@jupyter-widgets/controls", "help": "", "name": "_model_module", "type": "string" }, { "default": "2.0.0", "help": "", "name": "_model_module_version", "type": "string" }, { "default": "IntTextModel", "help": "", "name": "_model_name", "type": "string" }, { "default": "@jupyter-widgets/controls", "help": "", "name": "_view_module", "type": "string" }, { "default": "2.0.0", "help": "", "name": "_view_module_version", "type": "string" }, { "default": "IntTextView", "help": "", "name": "_view_name", "type": "string" }, { "default": false, "help": "Update the value as the user types. If False, update on submission, e.g., pressing Enter or navigating away.", "name": "continuous_update", "type": "bool" }, { "default": "", "help": "Description of the control.", "name": "description", "type": "string" }, { "default": false, "help": "Accept HTML in the description.", "name": "description_allow_html", "type": "bool" }, { "default": false, "help": "Enable or disable user changes", "name": "disabled", "type": "bool" }, { "default": "reference to new instance", "help": "", "name": "layout", "type": "reference", "widget": "Layout" }, { "default": 1, "help": "Minimum step to increment the value", "name": "step", "type": "int" }, { "default": "reference to new instance", "help": "Styling customizations", "name": "style", "type": "reference", "widget": "DescriptionStyle" }, { "allow_none": true, "default": null, "help": "Is widget tabbable?", "name": "tabbable", "type": "bool" }, { "allow_none": true, "default": null, "help": "A tooltip caption.", "name": "tooltip", "type": "string" }, { "default": 0, "help": "Int value", "name": "value", "type": "int" } ], "model": { "module": "@jupyter-widgets/controls", "name": "IntTextModel", "version": "2.0.0" }, "view": { "module": "@jupyter-widgets/controls", "name": "IntTextView", "version": "2.0.0" } }, { "attributes": [ { "default": [], "help": "CSS classes applied to widget DOM element", "items": { "type": "string" }, "name": "_dom_classes", "type": "array" }, { "default": "@jupyter-widgets/controls", "help": "", "name": "_model_module", "type": "string" }, { "default": "2.0.0", "help": "", "name": "_model_module_version", "type": "string" }, { "default": "IntsInputModel", "help": "", "name": "_model_name", "type": "string" }, { "default": "@jupyter-widgets/controls", "help": "", "name": "_view_module", "type": "string" }, { "default": "2.0.0", "help": "", "name": "_view_module_version", "type": "string" }, { "default": "IntsInputView", "help": "", "name": "_view_name", "type": "string" }, { "default": true, "help": "", "name": "allow_duplicates", "type": "bool" }, { "default": [], "help": "", "name": "allowed_tags", "type": "array" }, { "default": "", "help": "Description of the control.", "name": "description", "type": "string" }, { "default": false, "help": "Accept HTML in the description.", "name": "description_allow_html", "type": "bool" }, { "default": "d", "help": "", "name": "format", "type": "string" }, { "default": "reference to new instance", "help": "", "name": "layout", "type": "reference", "widget": "Layout" }, { "allow_none": true, "default": null, "help": "", "name": "max", "type": "int" }, { "allow_none": true, "default": null, "help": "", "name": "min", "type": "int" }, { "default": "\u200b", "help": "", "name": "placeholder", "type": "string" }, { "default": "reference to new instance", "help": "Styling customizations", "name": "style", "type": "reference", "widget": "DescriptionStyle" }, { "allow_none": true, "default": null, "help": "Is widget tabbable?", "name": "tabbable", "type": "bool" }, { "default": "", "enum": ["primary", "success", "info", "warning", "danger", ""], "help": "Use a predefined styling for the tags.", "name": "tag_style", "type": "string" }, { "allow_none": true, "default": null, "help": "A tooltip caption.", "name": "tooltip", "type": "string" }, { "default": [], "help": "List of int tags", "name": "value", "type": "array" } ], "model": { "module": "@jupyter-widgets/controls", "name": "IntsInputModel", "version": "2.0.0" }, "view": { "module": "@jupyter-widgets/controls", "name": "IntsInputView", "version": "2.0.0" } }, { "attributes": [ { "default": [], "help": "CSS classes applied to widget DOM element", "items": { "type": "string" }, "name": "_dom_classes", "type": "array" }, { "default": "@jupyter-widgets/controls", "help": "", "name": "_model_module", "type": "string" }, { "default": "2.0.0", "help": "", "name": "_model_module_version", "type": "string" }, { "default": "LabelModel", "help": "", "name": "_model_name", "type": "string" }, { "default": "@jupyter-widgets/controls", "help": "", "name": "_view_module", "type": "string" }, { "default": "2.0.0", "help": "", "name": "_view_module_version", "type": "string" }, { "default": "LabelView", "help": "", "name": "_view_name", "type": "string" }, { "default": "", "help": "Description of the control.", "name": "description", "type": "string" }, { "default": false, "help": "Accept HTML in the description.", "name": "description_allow_html", "type": "bool" }, { "default": "reference to new instance", "help": "", "name": "layout", "type": "reference", "widget": "Layout" }, { "default": "\u200b", "help": "Placeholder text to display when nothing has been typed", "name": "placeholder", "type": "string" }, { "default": "reference to new instance", "help": "", "name": "style", "type": "reference", "widget": "LabelStyle" }, { "allow_none": true, "default": null, "help": "Is widget tabbable?", "name": "tabbable", "type": "bool" }, { "allow_none": true, "default": null, "help": "A tooltip caption.", "name": "tooltip", "type": "string" }, { "default": "", "help": "String value", "name": "value", "type": "string" } ], "model": { "module": "@jupyter-widgets/controls", "name": "LabelModel", "version": "2.0.0" }, "view": { "module": "@jupyter-widgets/controls", "name": "LabelView", "version": "2.0.0" } }, { "attributes": [ { "default": "@jupyter-widgets/controls", "help": "", "name": "_model_module", "type": "string" }, { "default": "2.0.0", "help": "", "name": "_model_module_version", "type": "string" }, { "default": "LabelStyleModel", "help": "", "name": "_model_name", "type": "string" }, { "default": "@jupyter-widgets/base", "help": "", "name": "_view_module", "type": "string" }, { "default": "2.0.0", "help": "", "name": "_view_module_version", "type": "string" }, { "default": "StyleView", "help": "", "name": "_view_name", "type": "string" }, { "allow_none": true, "default": null, "help": "Background specifications.", "name": "background", "type": "string" }, { "default": "", "help": "Width of the description to the side of the control.", "name": "description_width", "type": "string" }, { "allow_none": true, "default": null, "help": "Label text font family.", "name": "font_family", "type": "string" }, { "allow_none": true, "default": null, "help": "Text font size.", "name": "font_size", "type": "string" }, { "allow_none": true, "default": null, "help": "Label text font style.", "name": "font_style", "type": "string" }, { "allow_none": true, "default": null, "help": "Label text font variant.", "name": "font_variant", "type": "string" }, { "allow_none": true, "default": null, "help": "Label text font weight.", "name": "font_weight", "type": "string" }, { "allow_none": true, "default": null, "help": "Text color", "name": "text_color", "type": "string" }, { "allow_none": true, "default": null, "help": "Label text decoration.", "name": "text_decoration", "type": "string" } ], "model": { "module": "@jupyter-widgets/controls", "name": "LabelStyleModel", "version": "2.0.0" }, "view": { "module": "@jupyter-widgets/base", "name": "StyleView", "version": "2.0.0" } }, { "attributes": [ { "default": "@jupyter-widgets/controls", "help": "", "name": "_model_module", "type": "string" }, { "default": "2.0.0", "help": "", "name": "_model_module_version", "type": "string" }, { "default": "LinkModel", "help": "", "name": "_model_name", "type": "string" }, { "default": "@jupyter-widgets/controls", "help": "", "name": "_view_module", "type": "string" }, { "default": "2.0.0", "help": "", "name": "_view_module_version", "type": "string" }, { "allow_none": true, "default": null, "help": "Name of the view.", "name": "_view_name", "type": "string" }, { "default": [], "help": "The source (widget, 'trait_name') pair", "name": "source", "type": "array" }, { "default": [], "help": "The target (widget, 'trait_name') pair", "name": "target", "type": "array" } ], "model": { "module": "@jupyter-widgets/controls", "name": "LinkModel", "version": "2.0.0" }, "view": { "module": "@jupyter-widgets/controls", "name": null, "version": "2.0.0" } }, { "attributes": [ { "default": [], "help": "CSS classes applied to widget DOM element", "items": { "type": "string" }, "name": "_dom_classes", "type": "array" }, { "default": "@jupyter-widgets/controls", "help": "", "name": "_model_module", "type": "string" }, { "default": "2.0.0", "help": "", "name": "_model_module_version", "type": "string" }, { "default": "NaiveDatetimeModel", "help": "", "name": "_model_name", "type": "string" }, { "default": "@jupyter-widgets/controls", "help": "", "name": "_view_module", "type": "string" }, { "default": "2.0.0", "help": "", "name": "_view_module_version", "type": "string" }, { "default": "DatetimeView", "help": "", "name": "_view_name", "type": "string" }, { "default": "", "help": "Description of the control.", "name": "description", "type": "string" }, { "default": false, "help": "Accept HTML in the description.", "name": "description_allow_html", "type": "bool" }, { "default": false, "help": "Enable or disable user changes.", "name": "disabled", "type": "bool" }, { "default": "reference to new instance", "help": "", "name": "layout", "type": "reference", "widget": "Layout" }, { "allow_none": true, "default": null, "help": "", "name": "max", "type": "Datetime" }, { "allow_none": true, "default": null, "help": "", "name": "min", "type": "Datetime" }, { "default": "reference to new instance", "help": "Styling customizations", "name": "style", "type": "reference", "widget": "DescriptionStyle" }, { "allow_none": true, "default": null, "help": "Is widget tabbable?", "name": "tabbable", "type": "bool" }, { "allow_none": true, "default": null, "help": "A tooltip caption.", "name": "tooltip", "type": "string" }, { "allow_none": true, "default": null, "help": "", "name": "value", "type": "Datetime" } ], "model": { "module": "@jupyter-widgets/controls", "name": "NaiveDatetimeModel", "version": "2.0.0" }, "view": { "module": "@jupyter-widgets/controls", "name": "DatetimeView", "version": "2.0.0" } }, { "attributes": [ { "default": [], "help": "CSS classes applied to widget DOM element", "items": { "type": "string" }, "name": "_dom_classes", "type": "array" }, { "default": "@jupyter-widgets/controls", "help": "", "name": "_model_module", "type": "string" }, { "default": "2.0.0", "help": "", "name": "_model_module_version", "type": "string" }, { "default": "PasswordModel", "help": "", "name": "_model_name", "type": "string" }, { "default": "@jupyter-widgets/controls", "help": "", "name": "_view_module", "type": "string" }, { "default": "2.0.0", "help": "", "name": "_view_module_version", "type": "string" }, { "default": "PasswordView", "help": "", "name": "_view_name", "type": "string" }, { "default": true, "help": "Update the value as the user types. If False, update on submission, e.g., pressing Enter or navigating away.", "name": "continuous_update", "type": "bool" }, { "default": "", "help": "Description of the control.", "name": "description", "type": "string" }, { "default": false, "help": "Accept HTML in the description.", "name": "description_allow_html", "type": "bool" }, { "default": false, "help": "Enable or disable user changes", "name": "disabled", "type": "bool" }, { "default": "reference to new instance", "help": "", "name": "layout", "type": "reference", "widget": "Layout" }, { "default": "\u200b", "help": "Placeholder text to display when nothing has been typed", "name": "placeholder", "type": "string" }, { "default": "reference to new instance", "help": "", "name": "style", "type": "reference", "widget": "TextStyle" }, { "allow_none": true, "default": null, "help": "Is widget tabbable?", "name": "tabbable", "type": "bool" }, { "allow_none": true, "default": null, "help": "A tooltip caption.", "name": "tooltip", "type": "string" }, { "default": "", "help": "String value", "name": "value", "type": "string" } ], "model": { "module": "@jupyter-widgets/controls", "name": "PasswordModel", "version": "2.0.0" }, "view": { "module": "@jupyter-widgets/controls", "name": "PasswordView", "version": "2.0.0" } }, { "attributes": [ { "default": [], "help": "CSS classes applied to widget DOM element", "items": { "type": "string" }, "name": "_dom_classes", "type": "array" }, { "default": "@jupyter-widgets/controls", "help": "", "name": "_model_module", "type": "string" }, { "default": "2.0.0", "help": "", "name": "_model_module_version", "type": "string" }, { "default": "PlayModel", "help": "", "name": "_model_name", "type": "string" }, { "default": "@jupyter-widgets/controls", "help": "", "name": "_view_module", "type": "string" }, { "default": "2.0.0", "help": "", "name": "_view_module_version", "type": "string" }, { "default": "PlayView", "help": "", "name": "_view_name", "type": "string" }, { "default": "", "help": "Description of the control.", "name": "description", "type": "string" }, { "default": false, "help": "Accept HTML in the description.", "name": "description_allow_html", "type": "bool" }, { "default": false, "help": "Enable or disable user changes", "name": "disabled", "type": "bool" }, { "default": 100, "help": "The time between two animation steps (ms).", "name": "interval", "type": "int" }, { "default": "reference to new instance", "help": "", "name": "layout", "type": "reference", "widget": "Layout" }, { "default": 100, "help": "Max value", "name": "max", "type": "int" }, { "default": 0, "help": "Min value", "name": "min", "type": "int" }, { "default": false, "help": "Whether the control is currently playing.", "name": "playing", "type": "bool" }, { "default": false, "help": "Whether the control will repeat in a continuous loop.", "name": "repeat", "type": "bool" }, { "default": true, "help": "Show the repeat toggle button in the widget.", "name": "show_repeat", "type": "bool" }, { "default": 1, "help": "Increment step", "name": "step", "type": "int" }, { "default": "reference to new instance", "help": "Styling customizations", "name": "style", "type": "reference", "widget": "DescriptionStyle" }, { "allow_none": true, "default": null, "help": "Is widget tabbable?", "name": "tabbable", "type": "bool" }, { "allow_none": true, "default": null, "help": "A tooltip caption.", "name": "tooltip", "type": "string" }, { "default": 0, "help": "Int value", "name": "value", "type": "int" } ], "model": { "module": "@jupyter-widgets/controls", "name": "PlayModel", "version": "2.0.0" }, "view": { "module": "@jupyter-widgets/controls", "name": "PlayView", "version": "2.0.0" } }, { "attributes": [ { "default": "@jupyter-widgets/controls", "help": "", "name": "_model_module", "type": "string" }, { "default": "2.0.0", "help": "", "name": "_model_module_version", "type": "string" }, { "default": "ProgressStyleModel", "help": "", "name": "_model_name", "type": "string" }, { "default": "@jupyter-widgets/base", "help": "", "name": "_view_module", "type": "string" }, { "default": "2.0.0", "help": "", "name": "_view_module_version", "type": "string" }, { "default": "StyleView", "help": "", "name": "_view_name", "type": "string" }, { "allow_none": true, "default": null, "help": "Color of the progress bar.", "name": "bar_color", "type": "string" }, { "default": "", "help": "Width of the description to the side of the control.", "name": "description_width", "type": "string" } ], "model": { "module": "@jupyter-widgets/controls", "name": "ProgressStyleModel", "version": "2.0.0" }, "view": { "module": "@jupyter-widgets/base", "name": "StyleView", "version": "2.0.0" } }, { "attributes": [ { "default": [], "help": "CSS classes applied to widget DOM element", "items": { "type": "string" }, "name": "_dom_classes", "type": "array" }, { "default": "@jupyter-widgets/controls", "help": "", "name": "_model_module", "type": "string" }, { "default": "2.0.0", "help": "", "name": "_model_module_version", "type": "string" }, { "default": "RadioButtonsModel", "help": "", "name": "_model_name", "type": "string" }, { "default": [], "help": "The labels for the options.", "items": { "type": "string" }, "name": "_options_labels", "type": "array" }, { "default": "@jupyter-widgets/controls", "help": "", "name": "_view_module", "type": "string" }, { "default": "2.0.0", "help": "", "name": "_view_module_version", "type": "string" }, { "default": "RadioButtonsView", "help": "", "name": "_view_name", "type": "string" }, { "default": "", "help": "Description of the control.", "name": "description", "type": "string" }, { "default": false, "help": "Accept HTML in the description.", "name": "description_allow_html", "type": "bool" }, { "default": false, "help": "Enable or disable user changes", "name": "disabled", "type": "bool" }, { "allow_none": true, "default": null, "help": "Selected index", "name": "index", "type": "int" }, { "default": "reference to new instance", "help": "", "name": "layout", "type": "reference", "widget": "Layout" }, { "default": "reference to new instance", "help": "Styling customizations", "name": "style", "type": "reference", "widget": "DescriptionStyle" }, { "allow_none": true, "default": null, "help": "Is widget tabbable?", "name": "tabbable", "type": "bool" }, { "allow_none": true, "default": null, "help": "A tooltip caption.", "name": "tooltip", "type": "string" } ], "model": { "module": "@jupyter-widgets/controls", "name": "RadioButtonsModel", "version": "2.0.0" }, "view": { "module": "@jupyter-widgets/controls", "name": "RadioButtonsView", "version": "2.0.0" } }, { "attributes": [ { "default": [], "help": "CSS classes applied to widget DOM element", "items": { "type": "string" }, "name": "_dom_classes", "type": "array" }, { "default": "@jupyter-widgets/controls", "help": "", "name": "_model_module", "type": "string" }, { "default": "2.0.0", "help": "", "name": "_model_module_version", "type": "string" }, { "default": "SelectModel", "help": "", "name": "_model_name", "type": "string" }, { "default": [], "help": "The labels for the options.", "items": { "type": "string" }, "name": "_options_labels", "type": "array" }, { "default": "@jupyter-widgets/controls", "help": "", "name": "_view_module", "type": "string" }, { "default": "2.0.0", "help": "", "name": "_view_module_version", "type": "string" }, { "default": "SelectView", "help": "", "name": "_view_name", "type": "string" }, { "default": "", "help": "Description of the control.", "name": "description", "type": "string" }, { "default": false, "help": "Accept HTML in the description.", "name": "description_allow_html", "type": "bool" }, { "default": false, "help": "Enable or disable user changes", "name": "disabled", "type": "bool" }, { "allow_none": true, "default": null, "help": "Selected index", "name": "index", "type": "int" }, { "default": "reference to new instance", "help": "", "name": "layout", "type": "reference", "widget": "Layout" }, { "default": 5, "help": "The number of rows to display.", "name": "rows", "type": "int" }, { "default": "reference to new instance", "help": "Styling customizations", "name": "style", "type": "reference", "widget": "DescriptionStyle" }, { "allow_none": true, "default": null, "help": "Is widget tabbable?", "name": "tabbable", "type": "bool" }, { "allow_none": true, "default": null, "help": "A tooltip caption.", "name": "tooltip", "type": "string" } ], "model": { "module": "@jupyter-widgets/controls", "name": "SelectModel", "version": "2.0.0" }, "view": { "module": "@jupyter-widgets/controls", "name": "SelectView", "version": "2.0.0" } }, { "attributes": [ { "default": [], "help": "CSS classes applied to widget DOM element", "items": { "type": "string" }, "name": "_dom_classes", "type": "array" }, { "default": "@jupyter-widgets/controls", "help": "", "name": "_model_module", "type": "string" }, { "default": "2.0.0", "help": "", "name": "_model_module_version", "type": "string" }, { "default": "SelectMultipleModel", "help": "", "name": "_model_name", "type": "string" }, { "default": [], "help": "The labels for the options.", "items": { "type": "string" }, "name": "_options_labels", "type": "array" }, { "default": "@jupyter-widgets/controls", "help": "", "name": "_view_module", "type": "string" }, { "default": "2.0.0", "help": "", "name": "_view_module_version", "type": "string" }, { "default": "SelectMultipleView", "help": "", "name": "_view_name", "type": "string" }, { "default": "", "help": "Description of the control.", "name": "description", "type": "string" }, { "default": false, "help": "Accept HTML in the description.", "name": "description_allow_html", "type": "bool" }, { "default": false, "help": "Enable or disable user changes", "name": "disabled", "type": "bool" }, { "default": [], "help": "Selected indices", "items": { "type": "int" }, "name": "index", "type": "array" }, { "default": "reference to new instance", "help": "", "name": "layout", "type": "reference", "widget": "Layout" }, { "default": 5, "help": "The number of rows to display.", "name": "rows", "type": "int" }, { "default": "reference to new instance", "help": "Styling customizations", "name": "style", "type": "reference", "widget": "DescriptionStyle" }, { "allow_none": true, "default": null, "help": "Is widget tabbable?", "name": "tabbable", "type": "bool" }, { "allow_none": true, "default": null, "help": "A tooltip caption.", "name": "tooltip", "type": "string" } ], "model": { "module": "@jupyter-widgets/controls", "name": "SelectMultipleModel", "version": "2.0.0" }, "view": { "module": "@jupyter-widgets/controls", "name": "SelectMultipleView", "version": "2.0.0" } }, { "attributes": [ { "default": [], "help": "CSS classes applied to widget DOM element", "items": { "type": "string" }, "name": "_dom_classes", "type": "array" }, { "default": "@jupyter-widgets/controls", "help": "", "name": "_model_module", "type": "string" }, { "default": "2.0.0", "help": "", "name": "_model_module_version", "type": "string" }, { "default": "SelectionRangeSliderModel", "help": "", "name": "_model_name", "type": "string" }, { "default": [], "help": "The labels for the options.", "items": { "type": "string" }, "name": "_options_labels", "type": "array" }, { "default": "@jupyter-widgets/controls", "help": "", "name": "_view_module", "type": "string" }, { "default": "2.0.0", "help": "", "name": "_view_module_version", "type": "string" }, { "default": "SelectionRangeSliderView", "help": "", "name": "_view_name", "type": "string" }, { "default": "drag-tap", "enum": ["drag-tap", "drag-snap", "tap", "drag", "snap"], "help": "Slider dragging behavior.", "name": "behavior", "type": "string" }, { "default": true, "help": "Update the value of the widget as the user is holding the slider.", "name": "continuous_update", "type": "bool" }, { "default": "", "help": "Description of the control.", "name": "description", "type": "string" }, { "default": false, "help": "Accept HTML in the description.", "name": "description_allow_html", "type": "bool" }, { "default": false, "help": "Enable or disable user changes", "name": "disabled", "type": "bool" }, { "default": [0, 0], "help": "Min and max selected indices", "name": "index", "type": "array" }, { "default": "reference to new instance", "help": "", "name": "layout", "type": "reference", "widget": "Layout" }, { "default": "horizontal", "enum": ["horizontal", "vertical"], "help": "Vertical or horizontal.", "name": "orientation", "type": "string" }, { "default": true, "help": "Display the current selected label next to the slider", "name": "readout", "type": "bool" }, { "default": "reference to new instance", "help": "", "name": "style", "type": "reference", "widget": "SliderStyle" }, { "allow_none": true, "default": null, "help": "Is widget tabbable?", "name": "tabbable", "type": "bool" }, { "allow_none": true, "default": null, "help": "A tooltip caption.", "name": "tooltip", "type": "string" } ], "model": { "module": "@jupyter-widgets/controls", "name": "SelectionRangeSliderModel", "version": "2.0.0" }, "view": { "module": "@jupyter-widgets/controls", "name": "SelectionRangeSliderView", "version": "2.0.0" } }, { "attributes": [ { "default": [], "help": "CSS classes applied to widget DOM element", "items": { "type": "string" }, "name": "_dom_classes", "type": "array" }, { "default": "@jupyter-widgets/controls", "help": "", "name": "_model_module", "type": "string" }, { "default": "2.0.0", "help": "", "name": "_model_module_version", "type": "string" }, { "default": "SelectionSliderModel", "help": "", "name": "_model_name", "type": "string" }, { "default": [], "help": "The labels for the options.", "items": { "type": "string" }, "name": "_options_labels", "type": "array" }, { "default": "@jupyter-widgets/controls", "help": "", "name": "_view_module", "type": "string" }, { "default": "2.0.0", "help": "", "name": "_view_module_version", "type": "string" }, { "default": "SelectionSliderView", "help": "", "name": "_view_name", "type": "string" }, { "default": "drag-tap", "enum": ["drag-tap", "drag-snap", "tap", "drag", "snap"], "help": "Slider dragging behavior.", "name": "behavior", "type": "string" }, { "default": true, "help": "Update the value of the widget as the user is holding the slider.", "name": "continuous_update", "type": "bool" }, { "default": "", "help": "Description of the control.", "name": "description", "type": "string" }, { "default": false, "help": "Accept HTML in the description.", "name": "description_allow_html", "type": "bool" }, { "default": false, "help": "Enable or disable user changes", "name": "disabled", "type": "bool" }, { "default": 0, "help": "Selected index", "name": "index", "type": "int" }, { "default": "reference to new instance", "help": "", "name": "layout", "type": "reference", "widget": "Layout" }, { "default": "horizontal", "enum": ["horizontal", "vertical"], "help": "Vertical or horizontal.", "name": "orientation", "type": "string" }, { "default": true, "help": "Display the current selected label next to the slider", "name": "readout", "type": "bool" }, { "default": "reference to new instance", "help": "", "name": "style", "type": "reference", "widget": "SliderStyle" }, { "allow_none": true, "default": null, "help": "Is widget tabbable?", "name": "tabbable", "type": "bool" }, { "allow_none": true, "default": null, "help": "A tooltip caption.", "name": "tooltip", "type": "string" } ], "model": { "module": "@jupyter-widgets/controls", "name": "SelectionSliderModel", "version": "2.0.0" }, "view": { "module": "@jupyter-widgets/controls", "name": "SelectionSliderView", "version": "2.0.0" } }, { "attributes": [ { "default": "@jupyter-widgets/controls", "help": "", "name": "_model_module", "type": "string" }, { "default": "2.0.0", "help": "", "name": "_model_module_version", "type": "string" }, { "default": "SliderStyleModel", "help": "", "name": "_model_name", "type": "string" }, { "default": "@jupyter-widgets/base", "help": "", "name": "_view_module", "type": "string" }, { "default": "2.0.0", "help": "", "name": "_view_module_version", "type": "string" }, { "default": "StyleView", "help": "", "name": "_view_name", "type": "string" }, { "default": "", "help": "Width of the description to the side of the control.", "name": "description_width", "type": "string" }, { "allow_none": true, "default": null, "help": "Color of the slider handle.", "name": "handle_color", "type": "string" } ], "model": { "module": "@jupyter-widgets/controls", "name": "SliderStyleModel", "version": "2.0.0" }, "view": { "module": "@jupyter-widgets/base", "name": "StyleView", "version": "2.0.0" } }, { "attributes": [ { "default": [], "help": "CSS classes applied to widget DOM element", "items": { "type": "string" }, "name": "_dom_classes", "type": "array" }, { "default": "@jupyter-widgets/controls", "help": "", "name": "_model_module", "type": "string" }, { "default": "2.0.0", "help": "", "name": "_model_module_version", "type": "string" }, { "default": "StackModel", "help": "", "name": "_model_name", "type": "string" }, { "default": "@jupyter-widgets/controls", "help": "", "name": "_view_module", "type": "string" }, { "default": "2.0.0", "help": "", "name": "_view_module_version", "type": "string" }, { "default": "StackView", "help": "", "name": "_view_name", "type": "string" }, { "default": "", "enum": ["success", "info", "warning", "danger", ""], "help": "Use a predefined styling for the box.", "name": "box_style", "type": "string" }, { "default": [], "help": "List of widget children", "items": { "type": "reference", "widget": "Widget" }, "name": "children", "type": "array" }, { "default": "reference to new instance", "help": "", "name": "layout", "type": "reference", "widget": "Layout" }, { "allow_none": true, "default": null, "help": "The index of the selected page. This is either an integer selecting a particular sub-widget, or None to have no widgets selected.", "name": "selected_index", "type": "int" }, { "allow_none": true, "default": null, "help": "Is widget tabbable?", "name": "tabbable", "type": "bool" }, { "default": [], "help": "Titles of the pages", "items": { "type": "string" }, "name": "titles", "type": "array" }, { "allow_none": true, "default": null, "help": "A tooltip caption.", "name": "tooltip", "type": "string" } ], "model": { "module": "@jupyter-widgets/controls", "name": "StackModel", "version": "2.0.0" }, "view": { "module": "@jupyter-widgets/controls", "name": "StackView", "version": "2.0.0" } }, { "attributes": [ { "default": [], "help": "CSS classes applied to widget DOM element", "items": { "type": "string" }, "name": "_dom_classes", "type": "array" }, { "default": "@jupyter-widgets/controls", "help": "", "name": "_model_module", "type": "string" }, { "default": "2.0.0", "help": "", "name": "_model_module_version", "type": "string" }, { "default": "TabModel", "help": "", "name": "_model_name", "type": "string" }, { "default": "@jupyter-widgets/controls", "help": "", "name": "_view_module", "type": "string" }, { "default": "2.0.0", "help": "", "name": "_view_module_version", "type": "string" }, { "default": "TabView", "help": "", "name": "_view_name", "type": "string" }, { "default": "", "enum": ["success", "info", "warning", "danger", ""], "help": "Use a predefined styling for the box.", "name": "box_style", "type": "string" }, { "default": [], "help": "List of widget children", "items": { "type": "reference", "widget": "Widget" }, "name": "children", "type": "array" }, { "default": "reference to new instance", "help": "", "name": "layout", "type": "reference", "widget": "Layout" }, { "allow_none": true, "default": null, "help": "The index of the selected page. This is either an integer selecting a particular sub-widget, or None to have no widgets selected.", "name": "selected_index", "type": "int" }, { "allow_none": true, "default": null, "help": "Is widget tabbable?", "name": "tabbable", "type": "bool" }, { "default": [], "help": "Titles of the pages", "items": { "type": "string" }, "name": "titles", "type": "array" }, { "allow_none": true, "default": null, "help": "A tooltip caption.", "name": "tooltip", "type": "string" } ], "model": { "module": "@jupyter-widgets/controls", "name": "TabModel", "version": "2.0.0" }, "view": { "module": "@jupyter-widgets/controls", "name": "TabView", "version": "2.0.0" } }, { "attributes": [ { "default": [], "help": "CSS classes applied to widget DOM element", "items": { "type": "string" }, "name": "_dom_classes", "type": "array" }, { "default": "@jupyter-widgets/controls", "help": "", "name": "_model_module", "type": "string" }, { "default": "2.0.0", "help": "", "name": "_model_module_version", "type": "string" }, { "default": "TagsInputModel", "help": "", "name": "_model_name", "type": "string" }, { "default": "@jupyter-widgets/controls", "help": "", "name": "_view_module", "type": "string" }, { "default": "2.0.0", "help": "", "name": "_view_module_version", "type": "string" }, { "default": "TagsInputView", "help": "", "name": "_view_name", "type": "string" }, { "default": true, "help": "", "name": "allow_duplicates", "type": "bool" }, { "default": [], "help": "", "name": "allowed_tags", "type": "array" }, { "default": "", "help": "Description of the control.", "name": "description", "type": "string" }, { "default": false, "help": "Accept HTML in the description.", "name": "description_allow_html", "type": "bool" }, { "default": "reference to new instance", "help": "", "name": "layout", "type": "reference", "widget": "Layout" }, { "default": "\u200b", "help": "", "name": "placeholder", "type": "string" }, { "default": "reference to new instance", "help": "Styling customizations", "name": "style", "type": "reference", "widget": "DescriptionStyle" }, { "allow_none": true, "default": null, "help": "Is widget tabbable?", "name": "tabbable", "type": "bool" }, { "default": "", "enum": ["primary", "success", "info", "warning", "danger", ""], "help": "Use a predefined styling for the tags.", "name": "tag_style", "type": "string" }, { "allow_none": true, "default": null, "help": "A tooltip caption.", "name": "tooltip", "type": "string" }, { "default": [], "help": "List of string tags", "name": "value", "type": "array" } ], "model": { "module": "@jupyter-widgets/controls", "name": "TagsInputModel", "version": "2.0.0" }, "view": { "module": "@jupyter-widgets/controls", "name": "TagsInputView", "version": "2.0.0" } }, { "attributes": [ { "default": [], "help": "CSS classes applied to widget DOM element", "items": { "type": "string" }, "name": "_dom_classes", "type": "array" }, { "default": "@jupyter-widgets/controls", "help": "", "name": "_model_module", "type": "string" }, { "default": "2.0.0", "help": "", "name": "_model_module_version", "type": "string" }, { "default": "TextModel", "help": "", "name": "_model_name", "type": "string" }, { "default": "@jupyter-widgets/controls", "help": "", "name": "_view_module", "type": "string" }, { "default": "2.0.0", "help": "", "name": "_view_module_version", "type": "string" }, { "default": "TextView", "help": "", "name": "_view_name", "type": "string" }, { "default": true, "help": "Update the value as the user types. If False, update on submission, e.g., pressing Enter or navigating away.", "name": "continuous_update", "type": "bool" }, { "default": "", "help": "Description of the control.", "name": "description", "type": "string" }, { "default": false, "help": "Accept HTML in the description.", "name": "description_allow_html", "type": "bool" }, { "default": false, "help": "Enable or disable user changes", "name": "disabled", "type": "bool" }, { "default": "reference to new instance", "help": "", "name": "layout", "type": "reference", "widget": "Layout" }, { "default": "\u200b", "help": "Placeholder text to display when nothing has been typed", "name": "placeholder", "type": "string" }, { "default": "reference to new instance", "help": "", "name": "style", "type": "reference", "widget": "TextStyle" }, { "allow_none": true, "default": null, "help": "Is widget tabbable?", "name": "tabbable", "type": "bool" }, { "allow_none": true, "default": null, "help": "A tooltip caption.", "name": "tooltip", "type": "string" }, { "default": "", "help": "String value", "name": "value", "type": "string" } ], "model": { "module": "@jupyter-widgets/controls", "name": "TextModel", "version": "2.0.0" }, "view": { "module": "@jupyter-widgets/controls", "name": "TextView", "version": "2.0.0" } }, { "attributes": [ { "default": "@jupyter-widgets/controls", "help": "", "name": "_model_module", "type": "string" }, { "default": "2.0.0", "help": "", "name": "_model_module_version", "type": "string" }, { "default": "TextStyleModel", "help": "", "name": "_model_name", "type": "string" }, { "default": "@jupyter-widgets/base", "help": "", "name": "_view_module", "type": "string" }, { "default": "2.0.0", "help": "", "name": "_view_module_version", "type": "string" }, { "default": "StyleView", "help": "", "name": "_view_name", "type": "string" }, { "allow_none": true, "default": null, "help": "Background specifications.", "name": "background", "type": "string" }, { "default": "", "help": "Width of the description to the side of the control.", "name": "description_width", "type": "string" }, { "allow_none": true, "default": null, "help": "Text font size.", "name": "font_size", "type": "string" }, { "allow_none": true, "default": null, "help": "Text color", "name": "text_color", "type": "string" } ], "model": { "module": "@jupyter-widgets/controls", "name": "TextStyleModel", "version": "2.0.0" }, "view": { "module": "@jupyter-widgets/base", "name": "StyleView", "version": "2.0.0" } }, { "attributes": [ { "default": [], "help": "CSS classes applied to widget DOM element", "items": { "type": "string" }, "name": "_dom_classes", "type": "array" }, { "default": "@jupyter-widgets/controls", "help": "", "name": "_model_module", "type": "string" }, { "default": "2.0.0", "help": "", "name": "_model_module_version", "type": "string" }, { "default": "TextareaModel", "help": "", "name": "_model_name", "type": "string" }, { "default": "@jupyter-widgets/controls", "help": "", "name": "_view_module", "type": "string" }, { "default": "2.0.0", "help": "", "name": "_view_module_version", "type": "string" }, { "default": "TextareaView", "help": "", "name": "_view_name", "type": "string" }, { "default": true, "help": "Update the value as the user types. If False, update on submission, e.g., pressing Enter or navigating away.", "name": "continuous_update", "type": "bool" }, { "default": "", "help": "Description of the control.", "name": "description", "type": "string" }, { "default": false, "help": "Accept HTML in the description.", "name": "description_allow_html", "type": "bool" }, { "default": false, "help": "Enable or disable user changes", "name": "disabled", "type": "bool" }, { "default": "reference to new instance", "help": "", "name": "layout", "type": "reference", "widget": "Layout" }, { "default": "\u200b", "help": "Placeholder text to display when nothing has been typed", "name": "placeholder", "type": "string" }, { "allow_none": true, "default": null, "help": "The number of rows to display.", "name": "rows", "type": "int" }, { "default": "reference to new instance", "help": "", "name": "style", "type": "reference", "widget": "TextStyle" }, { "allow_none": true, "default": null, "help": "Is widget tabbable?", "name": "tabbable", "type": "bool" }, { "allow_none": true, "default": null, "help": "A tooltip caption.", "name": "tooltip", "type": "string" }, { "default": "", "help": "String value", "name": "value", "type": "string" } ], "model": { "module": "@jupyter-widgets/controls", "name": "TextareaModel", "version": "2.0.0" }, "view": { "module": "@jupyter-widgets/controls", "name": "TextareaView", "version": "2.0.0" } }, { "attributes": [ { "default": [], "help": "CSS classes applied to widget DOM element", "items": { "type": "string" }, "name": "_dom_classes", "type": "array" }, { "default": "@jupyter-widgets/controls", "help": "", "name": "_model_module", "type": "string" }, { "default": "2.0.0", "help": "", "name": "_model_module_version", "type": "string" }, { "default": "TimeModel", "help": "", "name": "_model_name", "type": "string" }, { "default": "@jupyter-widgets/controls", "help": "", "name": "_view_module", "type": "string" }, { "default": "2.0.0", "help": "", "name": "_view_module_version", "type": "string" }, { "default": "TimeView", "help": "", "name": "_view_name", "type": "string" }, { "default": "", "help": "Description of the control.", "name": "description", "type": "string" }, { "default": false, "help": "Accept HTML in the description.", "name": "description_allow_html", "type": "bool" }, { "default": false, "help": "Enable or disable user changes.", "name": "disabled", "type": "bool" }, { "default": "reference to new instance", "help": "", "name": "layout", "type": "reference", "widget": "Layout" }, { "allow_none": true, "default": null, "help": "", "name": "max", "type": "Time" }, { "allow_none": true, "default": null, "help": "", "name": "min", "type": "Time" }, { "default": 60, "help": "The time step to use for the picker, in seconds, or \"any\".", "name": "step", "type": ["float", "string"], "union_attributes": [ { "type": "float" }, { "enum": ["any"], "type": "string" } ] }, { "default": "reference to new instance", "help": "Styling customizations", "name": "style", "type": "reference", "widget": "DescriptionStyle" }, { "allow_none": true, "default": null, "help": "Is widget tabbable?", "name": "tabbable", "type": "bool" }, { "allow_none": true, "default": null, "help": "A tooltip caption.", "name": "tooltip", "type": "string" }, { "allow_none": true, "default": null, "help": "", "name": "value", "type": "Time" } ], "model": { "module": "@jupyter-widgets/controls", "name": "TimeModel", "version": "2.0.0" }, "view": { "module": "@jupyter-widgets/controls", "name": "TimeView", "version": "2.0.0" } }, { "attributes": [ { "default": [], "help": "CSS classes applied to widget DOM element", "items": { "type": "string" }, "name": "_dom_classes", "type": "array" }, { "default": "@jupyter-widgets/controls", "help": "", "name": "_model_module", "type": "string" }, { "default": "2.0.0", "help": "", "name": "_model_module_version", "type": "string" }, { "default": "ToggleButtonModel", "help": "", "name": "_model_name", "type": "string" }, { "default": "@jupyter-widgets/controls", "help": "", "name": "_view_module", "type": "string" }, { "default": "2.0.0", "help": "", "name": "_view_module_version", "type": "string" }, { "default": "ToggleButtonView", "help": "", "name": "_view_name", "type": "string" }, { "default": "", "enum": ["primary", "success", "info", "warning", "danger", ""], "help": "Use a predefined styling for the button.", "name": "button_style", "type": "string" }, { "default": "", "help": "Description of the control.", "name": "description", "type": "string" }, { "default": false, "help": "Accept HTML in the description.", "name": "description_allow_html", "type": "bool" }, { "default": false, "help": "Enable or disable user changes.", "name": "disabled", "type": "bool" }, { "default": "", "help": "Font-awesome icon.", "name": "icon", "type": "string" }, { "default": "reference to new instance", "help": "", "name": "layout", "type": "reference", "widget": "Layout" }, { "default": "reference to new instance", "help": "Styling customizations", "name": "style", "type": "reference", "widget": "ToggleButtonStyle" }, { "allow_none": true, "default": null, "help": "Is widget tabbable?", "name": "tabbable", "type": "bool" }, { "allow_none": true, "default": null, "help": "A tooltip caption.", "name": "tooltip", "type": "string" }, { "default": false, "help": "Bool value", "name": "value", "type": "bool" } ], "model": { "module": "@jupyter-widgets/controls", "name": "ToggleButtonModel", "version": "2.0.0" }, "view": { "module": "@jupyter-widgets/controls", "name": "ToggleButtonView", "version": "2.0.0" } }, { "attributes": [ { "default": "@jupyter-widgets/controls", "help": "", "name": "_model_module", "type": "string" }, { "default": "2.0.0", "help": "", "name": "_model_module_version", "type": "string" }, { "default": "ToggleButtonStyleModel", "help": "", "name": "_model_name", "type": "string" }, { "default": "@jupyter-widgets/base", "help": "", "name": "_view_module", "type": "string" }, { "default": "2.0.0", "help": "", "name": "_view_module_version", "type": "string" }, { "default": "StyleView", "help": "", "name": "_view_name", "type": "string" }, { "default": "", "help": "Width of the description to the side of the control.", "name": "description_width", "type": "string" }, { "allow_none": true, "default": null, "help": "Toggle button text font family.", "name": "font_family", "type": "string" }, { "allow_none": true, "default": null, "help": "Toggle button text font size.", "name": "font_size", "type": "string" }, { "allow_none": true, "default": null, "help": "Toggle button text font style.", "name": "font_style", "type": "string" }, { "allow_none": true, "default": null, "help": "Toggle button text font variant.", "name": "font_variant", "type": "string" }, { "allow_none": true, "default": null, "help": "Toggle button text font weight.", "name": "font_weight", "type": "string" }, { "allow_none": true, "default": null, "help": "Toggle button text color", "name": "text_color", "type": "string" }, { "allow_none": true, "default": null, "help": "Toggle button text decoration.", "name": "text_decoration", "type": "string" } ], "model": { "module": "@jupyter-widgets/controls", "name": "ToggleButtonStyleModel", "version": "2.0.0" }, "view": { "module": "@jupyter-widgets/base", "name": "StyleView", "version": "2.0.0" } }, { "attributes": [ { "default": [], "help": "CSS classes applied to widget DOM element", "items": { "type": "string" }, "name": "_dom_classes", "type": "array" }, { "default": "@jupyter-widgets/controls", "help": "", "name": "_model_module", "type": "string" }, { "default": "2.0.0", "help": "", "name": "_model_module_version", "type": "string" }, { "default": "ToggleButtonsModel", "help": "", "name": "_model_name", "type": "string" }, { "default": [], "help": "The labels for the options.", "items": { "type": "string" }, "name": "_options_labels", "type": "array" }, { "default": "@jupyter-widgets/controls", "help": "", "name": "_view_module", "type": "string" }, { "default": "2.0.0", "help": "", "name": "_view_module_version", "type": "string" }, { "default": "ToggleButtonsView", "help": "", "name": "_view_name", "type": "string" }, { "allow_none": true, "default": "", "enum": ["primary", "success", "info", "warning", "danger", ""], "help": "Use a predefined styling for the buttons.", "name": "button_style", "type": "string" }, { "default": "", "help": "Description of the control.", "name": "description", "type": "string" }, { "default": false, "help": "Accept HTML in the description.", "name": "description_allow_html", "type": "bool" }, { "default": false, "help": "Enable or disable user changes", "name": "disabled", "type": "bool" }, { "default": [], "help": "Icons names for each button (FontAwesome names without the fa- prefix).", "items": { "type": "string" }, "name": "icons", "type": "array" }, { "allow_none": true, "default": null, "help": "Selected index", "name": "index", "type": "int" }, { "default": "reference to new instance", "help": "", "name": "layout", "type": "reference", "widget": "Layout" }, { "default": "reference to new instance", "help": "", "name": "style", "type": "reference", "widget": "ToggleButtonsStyle" }, { "allow_none": true, "default": null, "help": "Is widget tabbable?", "name": "tabbable", "type": "bool" }, { "allow_none": true, "default": null, "help": "A tooltip caption.", "name": "tooltip", "type": "string" }, { "default": [], "help": "Tooltips for each button.", "items": { "type": "string" }, "name": "tooltips", "type": "array" } ], "model": { "module": "@jupyter-widgets/controls", "name": "ToggleButtonsModel", "version": "2.0.0" }, "view": { "module": "@jupyter-widgets/controls", "name": "ToggleButtonsView", "version": "2.0.0" } }, { "attributes": [ { "default": "@jupyter-widgets/controls", "help": "", "name": "_model_module", "type": "string" }, { "default": "2.0.0", "help": "", "name": "_model_module_version", "type": "string" }, { "default": "ToggleButtonsStyleModel", "help": "", "name": "_model_name", "type": "string" }, { "default": "@jupyter-widgets/base", "help": "", "name": "_view_module", "type": "string" }, { "default": "2.0.0", "help": "", "name": "_view_module_version", "type": "string" }, { "default": "StyleView", "help": "", "name": "_view_name", "type": "string" }, { "default": "", "help": "The width of each button.", "name": "button_width", "type": "string" }, { "default": "", "help": "Width of the description to the side of the control.", "name": "description_width", "type": "string" }, { "default": "", "help": "Text font weight of each button.", "name": "font_weight", "type": "string" } ], "model": { "module": "@jupyter-widgets/controls", "name": "ToggleButtonsStyleModel", "version": "2.0.0" }, "view": { "module": "@jupyter-widgets/base", "name": "StyleView", "version": "2.0.0" } }, { "attributes": [ { "default": [], "help": "CSS classes applied to widget DOM element", "items": { "type": "string" }, "name": "_dom_classes", "type": "array" }, { "default": "@jupyter-widgets/controls", "help": "", "name": "_model_module", "type": "string" }, { "default": "2.0.0", "help": "", "name": "_model_module_version", "type": "string" }, { "default": "VBoxModel", "help": "", "name": "_model_name", "type": "string" }, { "default": "@jupyter-widgets/controls", "help": "", "name": "_view_module", "type": "string" }, { "default": "2.0.0", "help": "", "name": "_view_module_version", "type": "string" }, { "default": "VBoxView", "help": "", "name": "_view_name", "type": "string" }, { "default": "", "enum": ["success", "info", "warning", "danger", ""], "help": "Use a predefined styling for the box.", "name": "box_style", "type": "string" }, { "default": [], "help": "List of widget children", "items": { "type": "reference", "widget": "Widget" }, "name": "children", "type": "array" }, { "default": "reference to new instance", "help": "", "name": "layout", "type": "reference", "widget": "Layout" }, { "allow_none": true, "default": null, "help": "Is widget tabbable?", "name": "tabbable", "type": "bool" }, { "allow_none": true, "default": null, "help": "A tooltip caption.", "name": "tooltip", "type": "string" } ], "model": { "module": "@jupyter-widgets/controls", "name": "VBoxModel", "version": "2.0.0" }, "view": { "module": "@jupyter-widgets/controls", "name": "VBoxView", "version": "2.0.0" } }, { "attributes": [ { "default": [], "help": "CSS classes applied to widget DOM element", "items": { "type": "string" }, "name": "_dom_classes", "type": "array" }, { "default": "@jupyter-widgets/controls", "help": "", "name": "_model_module", "type": "string" }, { "default": "2.0.0", "help": "", "name": "_model_module_version", "type": "string" }, { "default": "ValidModel", "help": "", "name": "_model_name", "type": "string" }, { "default": "@jupyter-widgets/controls", "help": "", "name": "_view_module", "type": "string" }, { "default": "2.0.0", "help": "", "name": "_view_module_version", "type": "string" }, { "default": "ValidView", "help": "", "name": "_view_name", "type": "string" }, { "default": "", "help": "Description of the control.", "name": "description", "type": "string" }, { "default": false, "help": "Accept HTML in the description.", "name": "description_allow_html", "type": "bool" }, { "default": false, "help": "Enable or disable user changes.", "name": "disabled", "type": "bool" }, { "default": "reference to new instance", "help": "", "name": "layout", "type": "reference", "widget": "Layout" }, { "default": "Invalid", "help": "Message displayed when the value is False", "name": "readout", "type": "string" }, { "default": "reference to new instance", "help": "Styling customizations", "name": "style", "type": "reference", "widget": "DescriptionStyle" }, { "allow_none": true, "default": null, "help": "Is widget tabbable?", "name": "tabbable", "type": "bool" }, { "allow_none": true, "default": null, "help": "A tooltip caption.", "name": "tooltip", "type": "string" }, { "default": false, "help": "Bool value", "name": "value", "type": "bool" } ], "model": { "module": "@jupyter-widgets/controls", "name": "ValidModel", "version": "2.0.0" }, "view": { "module": "@jupyter-widgets/controls", "name": "ValidView", "version": "2.0.0" } }, { "attributes": [ { "default": [], "help": "CSS classes applied to widget DOM element", "items": { "type": "string" }, "name": "_dom_classes", "type": "array" }, { "default": "@jupyter-widgets/controls", "help": "", "name": "_model_module", "type": "string" }, { "default": "2.0.0", "help": "", "name": "_model_module_version", "type": "string" }, { "default": "VideoModel", "help": "", "name": "_model_name", "type": "string" }, { "default": "@jupyter-widgets/controls", "help": "", "name": "_view_module", "type": "string" }, { "default": "2.0.0", "help": "", "name": "_view_module_version", "type": "string" }, { "default": "VideoView", "help": "", "name": "_view_name", "type": "string" }, { "default": true, "help": "When true, the video starts when it's displayed", "name": "autoplay", "type": "bool" }, { "default": true, "help": "Specifies that video controls should be displayed (such as a play/pause button etc)", "name": "controls", "type": "bool" }, { "default": "mp4", "help": "The format of the video.", "name": "format", "type": "string" }, { "default": "", "help": "Height of the video in pixels.", "name": "height", "type": "string" }, { "default": "reference to new instance", "help": "", "name": "layout", "type": "reference", "widget": "Layout" }, { "default": true, "help": "When true, the video will start from the beginning after finishing", "name": "loop", "type": "bool" }, { "allow_none": true, "default": null, "help": "Is widget tabbable?", "name": "tabbable", "type": "bool" }, { "allow_none": true, "default": null, "help": "A tooltip caption.", "name": "tooltip", "type": "string" }, { "default": "b''", "help": "The media data as a memory view of bytes.", "name": "value", "type": "bytes" }, { "default": "", "help": "Width of the video in pixels.", "name": "width", "type": "string" } ], "model": { "module": "@jupyter-widgets/controls", "name": "VideoModel", "version": "2.0.0" }, "view": { "module": "@jupyter-widgets/controls", "name": "VideoView", "version": "2.0.0" } }, { "attributes": [ { "default": [], "help": "CSS classes applied to widget DOM element", "items": { "type": "string" }, "name": "_dom_classes", "type": "array" }, { "default": "@jupyter-widgets/output", "help": "", "name": "_model_module", "type": "string" }, { "default": "1.0.0", "help": "", "name": "_model_module_version", "type": "string" }, { "default": "OutputModel", "help": "", "name": "_model_name", "type": "string" }, { "default": "@jupyter-widgets/output", "help": "", "name": "_view_module", "type": "string" }, { "default": "1.0.0", "help": "", "name": "_view_module_version", "type": "string" }, { "default": "OutputView", "help": "", "name": "_view_name", "type": "string" }, { "default": "reference to new instance", "help": "", "name": "layout", "type": "reference", "widget": "Layout" }, { "default": "", "help": "Parent message id of messages to capture", "name": "msg_id", "type": "string" }, { "default": [], "help": "The output messages synced from the frontend.", "items": { "type": "object" }, "name": "outputs", "type": "array" }, { "allow_none": true, "default": null, "help": "Is widget tabbable?", "name": "tabbable", "type": "bool" }, { "allow_none": true, "default": null, "help": "A tooltip caption.", "name": "tooltip", "type": "string" } ], "model": { "module": "@jupyter-widgets/output", "name": "OutputModel", "version": "1.0.0" }, "view": { "module": "@jupyter-widgets/output", "name": "OutputView", "version": "1.0.0" } } ] ipywidgets-8.1.1/packages/schema/jupyterwidgetmodels.latest.md000066400000000000000000006054661450026722000246750ustar00rootroot00000000000000# Model State This is a description of the model state for each widget in the core Jupyter widgets library. The model ID of a widget is the id of the comm object the widget is using. A reference to a widget is serialized to JSON as a string of the form `"IPY_MODEL_"`, where `` is the model ID of a previously created widget of the specified type. This model specification is for ipywidgets 8. ## Model attributes Each widget in the Jupyter core widgets is represented below. The heading represents the model name, module, and version, view name, module, and version that the widget is registered with. ### LayoutModel (@jupyter-widgets/base, 2.0.0); LayoutView (@jupyter-widgets/base, 2.0.0) | Attribute | Type | Default | Help | | ----------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------- | ---------------------------------------------------------------- | | `_model_module` | string | `'@jupyter-widgets/base'` | The namespace for the model. | | `_model_module_version` | string | `'2.0.0'` | A semver requirement for namespace version containing the model. | | `_model_name` | string | `'LayoutModel'` | | `_view_module` | string | `'@jupyter-widgets/base'` | | `_view_module_version` | string | `'2.0.0'` | | `_view_name` | string | `'LayoutView'` | | `align_content` | `null` or string (one of `'flex-start'`, `'flex-end'`, `'center'`, `'space-between'`, `'space-around'`, `'space-evenly'`, `'stretch'`, `'inherit'`, `'initial'`, `'unset'`) | `null` | The align-content CSS attribute. | | `align_items` | `null` or string (one of `'flex-start'`, `'flex-end'`, `'center'`, `'baseline'`, `'stretch'`, `'inherit'`, `'initial'`, `'unset'`) | `null` | The align-items CSS attribute. | | `align_self` | `null` or string (one of `'auto'`, `'flex-start'`, `'flex-end'`, `'center'`, `'baseline'`, `'stretch'`, `'inherit'`, `'initial'`, `'unset'`) | `null` | The align-self CSS attribute. | | `border_bottom` | `null` or string | `null` | The border bottom CSS attribute. | | `border_left` | `null` or string | `null` | The border left CSS attribute. | | `border_right` | `null` or string | `null` | The border right CSS attribute. | | `border_top` | `null` or string | `null` | The border top CSS attribute. | | `bottom` | `null` or string | `null` | The bottom CSS attribute. | | `display` | `null` or string | `null` | The display CSS attribute. | | `flex` | `null` or string | `null` | The flex CSS attribute. | | `flex_flow` | `null` or string | `null` | The flex-flow CSS attribute. | | `grid_area` | `null` or string | `null` | The grid-area CSS attribute. | | `grid_auto_columns` | `null` or string | `null` | The grid-auto-columns CSS attribute. | | `grid_auto_flow` | `null` or string (one of `'column'`, `'row'`, `'row dense'`, `'column dense'`, `'inherit'`, `'initial'`, `'unset'`) | `null` | The grid-auto-flow CSS attribute. | | `grid_auto_rows` | `null` or string | `null` | The grid-auto-rows CSS attribute. | | `grid_column` | `null` or string | `null` | The grid-column CSS attribute. | | `grid_gap` | `null` or string | `null` | The grid-gap CSS attribute. | | `grid_row` | `null` or string | `null` | The grid-row CSS attribute. | | `grid_template_areas` | `null` or string | `null` | The grid-template-areas CSS attribute. | | `grid_template_columns` | `null` or string | `null` | The grid-template-columns CSS attribute. | | `grid_template_rows` | `null` or string | `null` | The grid-template-rows CSS attribute. | | `height` | `null` or string | `null` | The height CSS attribute. | | `justify_content` | `null` or string (one of `'flex-start'`, `'flex-end'`, `'center'`, `'space-between'`, `'space-around'`, `'inherit'`, `'initial'`, `'unset'`) | `null` | The justify-content CSS attribute. | | `justify_items` | `null` or string (one of `'flex-start'`, `'flex-end'`, `'center'`, `'inherit'`, `'initial'`, `'unset'`) | `null` | The justify-items CSS attribute. | | `left` | `null` or string | `null` | The left CSS attribute. | | `margin` | `null` or string | `null` | The margin CSS attribute. | | `max_height` | `null` or string | `null` | The max-height CSS attribute. | | `max_width` | `null` or string | `null` | The max-width CSS attribute. | | `min_height` | `null` or string | `null` | The min-height CSS attribute. | | `min_width` | `null` or string | `null` | The min-width CSS attribute. | | `object_fit` | `null` or string (one of `'contain'`, `'cover'`, `'fill'`, `'scale-down'`, `'none'`) | `null` | The object-fit CSS attribute. | | `object_position` | `null` or string | `null` | The object-position CSS attribute. | | `order` | `null` or string | `null` | The order CSS attribute. | | `overflow` | `null` or string | `null` | The overflow CSS attribute. | | `padding` | `null` or string | `null` | The padding CSS attribute. | | `right` | `null` or string | `null` | The right CSS attribute. | | `top` | `null` or string | `null` | The top CSS attribute. | | `visibility` | `null` or string (one of `'visible'`, `'hidden'`, `'inherit'`, `'initial'`, `'unset'`) | `null` | The visibility CSS attribute. | | `width` | `null` or string | `null` | The width CSS attribute. | ### AccordionModel (@jupyter-widgets/controls, 2.0.0); AccordionView (@jupyter-widgets/controls, 2.0.0) | Attribute | Type | Default | Help | | ----------------------- | -------------------------------------------------------------------- | ----------------------------- | --------------------------------------------------------------------------------------------------------------------------------- | | `_dom_classes` | array of string | `[]` | CSS classes applied to widget DOM element | | `_model_module` | string | `'@jupyter-widgets/controls'` | | `_model_module_version` | string | `'2.0.0'` | | `_model_name` | string | `'AccordionModel'` | | `_view_module` | string | `'@jupyter-widgets/controls'` | | `_view_module_version` | string | `'2.0.0'` | | `_view_name` | string | `'AccordionView'` | | `box_style` | string (one of `'success'`, `'info'`, `'warning'`, `'danger'`, `''`) | `''` | Use a predefined styling for the box. | | `children` | array of reference to Widget widget | `[]` | List of widget children | | `layout` | reference to Layout widget | reference to new instance | | `selected_index` | `null` or number (integer) | `null` | The index of the selected page. This is either an integer selecting a particular sub-widget, or None to have no widgets selected. | | `tabbable` | `null` or boolean | `null` | Is widget tabbable? | | `titles` | array of string | `[]` | Titles of the pages | | `tooltip` | `null` or string | `null` | A tooltip caption. | ### AudioModel (@jupyter-widgets/controls, 2.0.0); AudioView (@jupyter-widgets/controls, 2.0.0) | Attribute | Type | Default | Help | | ----------------------- | -------------------------- | ----------------------------- | ----------------------------------------------------------------------------------- | | `_dom_classes` | array of string | `[]` | CSS classes applied to widget DOM element | | `_model_module` | string | `'@jupyter-widgets/controls'` | | `_model_module_version` | string | `'2.0.0'` | | `_model_name` | string | `'AudioModel'` | | `_view_module` | string | `'@jupyter-widgets/controls'` | | `_view_module_version` | string | `'2.0.0'` | | `_view_name` | string | `'AudioView'` | | `autoplay` | boolean | `true` | When true, the audio starts when it's displayed | | `controls` | boolean | `true` | Specifies that audio controls should be displayed (such as a play/pause button etc) | | `format` | string | `'mp3'` | The format of the audio. | | `layout` | reference to Layout widget | reference to new instance | | `loop` | boolean | `true` | When true, the audio will start from the beginning after finishing | | `tabbable` | `null` or boolean | `null` | Is widget tabbable? | | `tooltip` | `null` or string | `null` | A tooltip caption. | | `value` | Bytes | `b''` | The media data as a memory view of bytes. | ### BoundedFloatTextModel (@jupyter-widgets/controls, 2.0.0); FloatTextView (@jupyter-widgets/controls, 2.0.0) | Attribute | Type | Default | Help | | ------------------------ | ------------------------------------ | ----------------------------- | ------------------------------------------------------------------------------------------------------------ | | `_dom_classes` | array of string | `[]` | CSS classes applied to widget DOM element | | `_model_module` | string | `'@jupyter-widgets/controls'` | | `_model_module_version` | string | `'2.0.0'` | | `_model_name` | string | `'BoundedFloatTextModel'` | | `_view_module` | string | `'@jupyter-widgets/controls'` | | `_view_module_version` | string | `'2.0.0'` | | `_view_name` | string | `'FloatTextView'` | | `continuous_update` | boolean | `false` | Update the value as the user types. If False, update on submission, e.g., pressing Enter or navigating away. | | `description` | string | `''` | Description of the control. | | `description_allow_html` | boolean | `false` | Accept HTML in the description. | | `disabled` | boolean | `false` | Enable or disable user changes | | `layout` | reference to Layout widget | reference to new instance | | `max` | number (float) | `100.0` | Max value | | `min` | number (float) | `0.0` | Min value | | `step` | `null` or number (float) | `null` | Minimum step to increment the value | | `style` | reference to DescriptionStyle widget | reference to new instance | Styling customizations | | `tabbable` | `null` or boolean | `null` | Is widget tabbable? | | `tooltip` | `null` or string | `null` | A tooltip caption. | | `value` | number (float) | `0.0` | Float value | ### BoundedIntTextModel (@jupyter-widgets/controls, 2.0.0); IntTextView (@jupyter-widgets/controls, 2.0.0) | Attribute | Type | Default | Help | | ------------------------ | ------------------------------------ | ----------------------------- | ------------------------------------------------------------------------------------------------------------ | | `_dom_classes` | array of string | `[]` | CSS classes applied to widget DOM element | | `_model_module` | string | `'@jupyter-widgets/controls'` | | `_model_module_version` | string | `'2.0.0'` | | `_model_name` | string | `'BoundedIntTextModel'` | | `_view_module` | string | `'@jupyter-widgets/controls'` | | `_view_module_version` | string | `'2.0.0'` | | `_view_name` | string | `'IntTextView'` | | `continuous_update` | boolean | `false` | Update the value as the user types. If False, update on submission, e.g., pressing Enter or navigating away. | | `description` | string | `''` | Description of the control. | | `description_allow_html` | boolean | `false` | Accept HTML in the description. | | `disabled` | boolean | `false` | Enable or disable user changes | | `layout` | reference to Layout widget | reference to new instance | | `max` | number (integer) | `100` | Max value | | `min` | number (integer) | `0` | Min value | | `step` | number (integer) | `1` | Minimum step to increment the value | | `style` | reference to DescriptionStyle widget | reference to new instance | Styling customizations | | `tabbable` | `null` or boolean | `null` | Is widget tabbable? | | `tooltip` | `null` or string | `null` | A tooltip caption. | | `value` | number (integer) | `0` | Int value | ### BoxModel (@jupyter-widgets/controls, 2.0.0); BoxView (@jupyter-widgets/controls, 2.0.0) | Attribute | Type | Default | Help | | ----------------------- | -------------------------------------------------------------------- | ----------------------------- | ----------------------------------------- | | `_dom_classes` | array of string | `[]` | CSS classes applied to widget DOM element | | `_model_module` | string | `'@jupyter-widgets/controls'` | | `_model_module_version` | string | `'2.0.0'` | | `_model_name` | string | `'BoxModel'` | | `_view_module` | string | `'@jupyter-widgets/controls'` | | `_view_module_version` | string | `'2.0.0'` | | `_view_name` | string | `'BoxView'` | | `box_style` | string (one of `'success'`, `'info'`, `'warning'`, `'danger'`, `''`) | `''` | Use a predefined styling for the box. | | `children` | array of reference to Widget widget | `[]` | List of widget children | | `layout` | reference to Layout widget | reference to new instance | | `tabbable` | `null` or boolean | `null` | Is widget tabbable? | | `tooltip` | `null` or string | `null` | A tooltip caption. | ### ButtonModel (@jupyter-widgets/controls, 2.0.0); ButtonView (@jupyter-widgets/controls, 2.0.0) | Attribute | Type | Default | Help | | ----------------------- | --------------------------------------------------------------------------------- | ----------------------------- | -------------------------------------------------- | | `_dom_classes` | array of string | `[]` | CSS classes applied to widget DOM element | | `_model_module` | string | `'@jupyter-widgets/controls'` | | `_model_module_version` | string | `'2.0.0'` | | `_model_name` | string | `'ButtonModel'` | | `_view_module` | string | `'@jupyter-widgets/controls'` | | `_view_module_version` | string | `'2.0.0'` | | `_view_name` | string | `'ButtonView'` | | `button_style` | string (one of `'primary'`, `'success'`, `'info'`, `'warning'`, `'danger'`, `''`) | `''` | Use a predefined styling for the button. | | `description` | string | `''` | Button label. | | `disabled` | boolean | `false` | Enable or disable user changes. | | `icon` | string | `''` | Font-awesome icon names, without the 'fa-' prefix. | | `layout` | reference to Layout widget | reference to new instance | | `style` | reference to ButtonStyle widget | reference to new instance | | `tabbable` | `null` or boolean | `null` | Is widget tabbable? | | `tooltip` | `null` or string | `null` | A tooltip caption. | ### ButtonStyleModel (@jupyter-widgets/controls, 2.0.0); StyleView (@jupyter-widgets/base, 2.0.0) | Attribute | Type | Default | Help | | ----------------------- | ---------------- | ----------------------------- | ------------------------- | | `_model_module` | string | `'@jupyter-widgets/controls'` | | `_model_module_version` | string | `'2.0.0'` | | `_model_name` | string | `'ButtonStyleModel'` | | `_view_module` | string | `'@jupyter-widgets/base'` | | `_view_module_version` | string | `'2.0.0'` | | `_view_name` | string | `'StyleView'` | | `button_color` | `null` or string | `null` | Color of the button | | `font_family` | `null` or string | `null` | Button text font family. | | `font_size` | `null` or string | `null` | Button text font size. | | `font_style` | `null` or string | `null` | Button text font style. | | `font_variant` | `null` or string | `null` | Button text font variant. | | `font_weight` | `null` or string | `null` | Button text font weight. | | `text_color` | `null` or string | `null` | Button text color. | | `text_decoration` | `null` or string | `null` | Button text decoration. | ### CheckboxModel (@jupyter-widgets/controls, 2.0.0); CheckboxView (@jupyter-widgets/controls, 2.0.0) | Attribute | Type | Default | Help | | ------------------------ | --------------------------------- | ----------------------------- | ------------------------------------------------------------------- | | `_dom_classes` | array of string | `[]` | CSS classes applied to widget DOM element | | `_model_module` | string | `'@jupyter-widgets/controls'` | | `_model_module_version` | string | `'2.0.0'` | | `_model_name` | string | `'CheckboxModel'` | | `_view_module` | string | `'@jupyter-widgets/controls'` | | `_view_module_version` | string | `'2.0.0'` | | `_view_name` | string | `'CheckboxView'` | | `description` | string | `''` | Description of the control. | | `description_allow_html` | boolean | `false` | Accept HTML in the description. | | `disabled` | boolean | `false` | Enable or disable user changes. | | `indent` | boolean | `true` | Indent the control to align with other controls with a description. | | `layout` | reference to Layout widget | reference to new instance | | `style` | reference to CheckboxStyle widget | reference to new instance | Styling customizations | | `tabbable` | `null` or boolean | `null` | Is widget tabbable? | | `tooltip` | `null` or string | `null` | A tooltip caption. | | `value` | boolean | `false` | Bool value | ### CheckboxStyleModel (@jupyter-widgets/controls, 2.0.0); StyleView (@jupyter-widgets/base, 2.0.0) | Attribute | Type | Default | Help | | ----------------------- | ---------------- | ----------------------------- | ---------------------------------------------------- | | `_model_module` | string | `'@jupyter-widgets/controls'` | | `_model_module_version` | string | `'2.0.0'` | | `_model_name` | string | `'CheckboxStyleModel'` | | `_view_module` | string | `'@jupyter-widgets/base'` | | `_view_module_version` | string | `'2.0.0'` | | `_view_name` | string | `'StyleView'` | | `background` | `null` or string | `null` | Background specifications. | | `description_width` | string | `''` | Width of the description to the side of the control. | ### ColorPickerModel (@jupyter-widgets/controls, 2.0.0); ColorPickerView (@jupyter-widgets/controls, 2.0.0) | Attribute | Type | Default | Help | | ------------------------ | ------------------------------------ | ----------------------------- | ------------------------------------------------- | | `_dom_classes` | array of string | `[]` | CSS classes applied to widget DOM element | | `_model_module` | string | `'@jupyter-widgets/controls'` | | `_model_module_version` | string | `'2.0.0'` | | `_model_name` | string | `'ColorPickerModel'` | | `_view_module` | string | `'@jupyter-widgets/controls'` | | `_view_module_version` | string | `'2.0.0'` | | `_view_name` | string | `'ColorPickerView'` | | `concise` | boolean | `false` | Display short version with just a color selector. | | `description` | string | `''` | Description of the control. | | `description_allow_html` | boolean | `false` | Accept HTML in the description. | | `disabled` | boolean | `false` | Enable or disable user changes. | | `layout` | reference to Layout widget | reference to new instance | | `style` | reference to DescriptionStyle widget | reference to new instance | Styling customizations | | `tabbable` | `null` or boolean | `null` | Is widget tabbable? | | `tooltip` | `null` or string | `null` | A tooltip caption. | | `value` | string | `'black'` | The color value. | ### ColorsInputModel (@jupyter-widgets/controls, 2.0.0); ColorsInputView (@jupyter-widgets/controls, 2.0.0) | Attribute | Type | Default | Help | | ------------------------ | ------------------------------------ | ----------------------------- | ----------------------------------------- | | `_dom_classes` | array of string | `[]` | CSS classes applied to widget DOM element | | `_model_module` | string | `'@jupyter-widgets/controls'` | | `_model_module_version` | string | `'2.0.0'` | | `_model_name` | string | `'ColorsInputModel'` | | `_view_module` | string | `'@jupyter-widgets/controls'` | | `_view_module_version` | string | `'2.0.0'` | | `_view_name` | string | `'ColorsInputView'` | | `allow_duplicates` | boolean | `true` | | `allowed_tags` | array | `[]` | | `description` | string | `''` | Description of the control. | | `description_allow_html` | boolean | `false` | Accept HTML in the description. | | `layout` | reference to Layout widget | reference to new instance | | `placeholder` | string | `'\u200b'` | | `style` | reference to DescriptionStyle widget | reference to new instance | Styling customizations | | `tabbable` | `null` or boolean | `null` | Is widget tabbable? | | `tooltip` | `null` or string | `null` | A tooltip caption. | | `value` | array | `[]` | List of string tags | ### ComboboxModel (@jupyter-widgets/controls, 2.0.0); ComboboxView (@jupyter-widgets/controls, 2.0.0) | Attribute | Type | Default | Help | | ------------------------ | ----------------------------- | ----------------------------- | ------------------------------------------------------------------------------------------------------------ | | `_dom_classes` | array of string | `[]` | CSS classes applied to widget DOM element | | `_model_module` | string | `'@jupyter-widgets/controls'` | | `_model_module_version` | string | `'2.0.0'` | | `_model_name` | string | `'ComboboxModel'` | | `_view_module` | string | `'@jupyter-widgets/controls'` | | `_view_module_version` | string | `'2.0.0'` | | `_view_name` | string | `'ComboboxView'` | | `continuous_update` | boolean | `true` | Update the value as the user types. If False, update on submission, e.g., pressing Enter or navigating away. | | `description` | string | `''` | Description of the control. | | `description_allow_html` | boolean | `false` | Accept HTML in the description. | | `disabled` | boolean | `false` | Enable or disable user changes | | `ensure_option` | boolean | `false` | If set, ensure value is in options. Implies continuous_update=False. | | `layout` | reference to Layout widget | reference to new instance | | `options` | array of string | `[]` | Dropdown options for the combobox | | `placeholder` | string | `'\u200b'` | Placeholder text to display when nothing has been typed | | `style` | reference to TextStyle widget | reference to new instance | | `tabbable` | `null` or boolean | `null` | Is widget tabbable? | | `tooltip` | `null` or string | `null` | A tooltip caption. | | `value` | string | `''` | String value | ### ControllerAxisModel (@jupyter-widgets/controls, 2.0.0); ControllerAxisView (@jupyter-widgets/controls, 2.0.0) | Attribute | Type | Default | Help | | ----------------------- | -------------------------- | ----------------------------- | ----------------------------------------- | | `_dom_classes` | array of string | `[]` | CSS classes applied to widget DOM element | | `_model_module` | string | `'@jupyter-widgets/controls'` | | `_model_module_version` | string | `'2.0.0'` | | `_model_name` | string | `'ControllerAxisModel'` | | `_view_module` | string | `'@jupyter-widgets/controls'` | | `_view_module_version` | string | `'2.0.0'` | | `_view_name` | string | `'ControllerAxisView'` | | `layout` | reference to Layout widget | reference to new instance | | `tabbable` | `null` or boolean | `null` | Is widget tabbable? | | `tooltip` | `null` or string | `null` | A tooltip caption. | | `value` | number (float) | `0.0` | The value of the axis. | ### ControllerButtonModel (@jupyter-widgets/controls, 2.0.0); ControllerButtonView (@jupyter-widgets/controls, 2.0.0) | Attribute | Type | Default | Help | | ----------------------- | -------------------------- | ----------------------------- | ----------------------------------------- | | `_dom_classes` | array of string | `[]` | CSS classes applied to widget DOM element | | `_model_module` | string | `'@jupyter-widgets/controls'` | | `_model_module_version` | string | `'2.0.0'` | | `_model_name` | string | `'ControllerButtonModel'` | | `_view_module` | string | `'@jupyter-widgets/controls'` | | `_view_module_version` | string | `'2.0.0'` | | `_view_name` | string | `'ControllerButtonView'` | | `layout` | reference to Layout widget | reference to new instance | | `pressed` | boolean | `false` | Whether the button is pressed. | | `tabbable` | `null` or boolean | `null` | Is widget tabbable? | | `tooltip` | `null` or string | `null` | A tooltip caption. | | `value` | number (float) | `0.0` | The value of the button. | ### ControllerModel (@jupyter-widgets/controls, 2.0.0); ControllerView (@jupyter-widgets/controls, 2.0.0) | Attribute | Type | Default | Help | | ----------------------- | ----------------------------------- | ----------------------------- | ----------------------------------------------------- | | `_dom_classes` | array of string | `[]` | CSS classes applied to widget DOM element | | `_model_module` | string | `'@jupyter-widgets/controls'` | | `_model_module_version` | string | `'2.0.0'` | | `_model_name` | string | `'ControllerModel'` | | `_view_module` | string | `'@jupyter-widgets/controls'` | | `_view_module_version` | string | `'2.0.0'` | | `_view_name` | string | `'ControllerView'` | | `axes` | array of reference to Axis widget | `[]` | The axes on the gamepad. | | `buttons` | array of reference to Button widget | `[]` | The buttons on the gamepad. | | `connected` | boolean | `false` | Whether the gamepad is connected. | | `index` | number (integer) | `0` | The id number of the controller. | | `layout` | reference to Layout widget | reference to new instance | | `mapping` | string | `''` | The name of the control mapping. | | `name` | string | `''` | The name of the controller. | | `tabbable` | `null` or boolean | `null` | Is widget tabbable? | | `timestamp` | number (float) | `0.0` | The last time the data from this gamepad was updated. | | `tooltip` | `null` or string | `null` | A tooltip caption. | ### DOMWidgetModel (@jupyter-widgets/controls, 2.0.0); None (@jupyter-widgets/controls, 2.0.0) | Attribute | Type | Default | Help | | ----------------------- | -------------------------- | ----------------------------- | ----------------------------------------- | | `_dom_classes` | array of string | `[]` | CSS classes applied to widget DOM element | | `_model_module` | string | `'@jupyter-widgets/controls'` | | `_model_module_version` | string | `'2.0.0'` | | `_model_name` | string | `'DOMWidgetModel'` | | `_view_module` | string | `'@jupyter-widgets/controls'` | | `_view_module_version` | string | `'2.0.0'` | | `_view_name` | `null` or string | `null` | Name of the view. | | `layout` | reference to Layout widget | reference to new instance | | `tabbable` | `null` or boolean | `null` | Is widget tabbable? | | `tooltip` | `null` or string | `null` | A tooltip caption. | | `value` | Bytes | `b''` | The media data as a memory view of bytes. | ### DatePickerModel (@jupyter-widgets/controls, 2.0.0); DatePickerView (@jupyter-widgets/controls, 2.0.0) | Attribute | Type | Default | Help | | ------------------------ | ------------------------------------------- | ----------------------------- | ------------------------------------------------------- | | `_dom_classes` | array of string | `[]` | CSS classes applied to widget DOM element | | `_model_module` | string | `'@jupyter-widgets/controls'` | | `_model_module_version` | string | `'2.0.0'` | | `_model_name` | string | `'DatePickerModel'` | | `_view_module` | string | `'@jupyter-widgets/controls'` | | `_view_module_version` | string | `'2.0.0'` | | `_view_name` | string | `'DatePickerView'` | | `description` | string | `''` | Description of the control. | | `description_allow_html` | boolean | `false` | Accept HTML in the description. | | `disabled` | boolean | `false` | Enable or disable user changes. | | `layout` | reference to Layout widget | reference to new instance | | `max` | `null` or Date | `null` | | `min` | `null` or Date | `null` | | `step` | number (integer) or string (one of `'any'`) | `1` | The date step to use for the picker, in days, or "any". | | `style` | reference to DescriptionStyle widget | reference to new instance | Styling customizations | | `tabbable` | `null` or boolean | `null` | Is widget tabbable? | | `tooltip` | `null` or string | `null` | A tooltip caption. | | `value` | `null` or Date | `null` | ### DatetimeModel (@jupyter-widgets/controls, 2.0.0); DatetimeView (@jupyter-widgets/controls, 2.0.0) | Attribute | Type | Default | Help | | ------------------------ | ------------------------------------ | ----------------------------- | ----------------------------------------- | | `_dom_classes` | array of string | `[]` | CSS classes applied to widget DOM element | | `_model_module` | string | `'@jupyter-widgets/controls'` | | `_model_module_version` | string | `'2.0.0'` | | `_model_name` | string | `'DatetimeModel'` | | `_view_module` | string | `'@jupyter-widgets/controls'` | | `_view_module_version` | string | `'2.0.0'` | | `_view_name` | string | `'DatetimeView'` | | `description` | string | `''` | Description of the control. | | `description_allow_html` | boolean | `false` | Accept HTML in the description. | | `disabled` | boolean | `false` | Enable or disable user changes. | | `layout` | reference to Layout widget | reference to new instance | | `max` | `null` or Datetime | `null` | | `min` | `null` or Datetime | `null` | | `style` | reference to DescriptionStyle widget | reference to new instance | Styling customizations | | `tabbable` | `null` or boolean | `null` | Is widget tabbable? | | `tooltip` | `null` or string | `null` | A tooltip caption. | | `value` | `null` or Datetime | `null` | ### DescriptionStyleModel (@jupyter-widgets/controls, 2.0.0); StyleView (@jupyter-widgets/base, 2.0.0) | Attribute | Type | Default | Help | | ----------------------- | ------ | ----------------------------- | ---------------------------------------------------- | | `_model_module` | string | `'@jupyter-widgets/controls'` | | `_model_module_version` | string | `'2.0.0'` | | `_model_name` | string | `'DescriptionStyleModel'` | | `_view_module` | string | `'@jupyter-widgets/base'` | | `_view_module_version` | string | `'2.0.0'` | | `_view_name` | string | `'StyleView'` | | `description_width` | string | `''` | Width of the description to the side of the control. | ### DirectionalLinkModel (@jupyter-widgets/controls, 2.0.0); None (@jupyter-widgets/controls, 2.0.0) | Attribute | Type | Default | Help | | ----------------------- | ---------------- | ----------------------------- | -------------------------------------- | | `_model_module` | string | `'@jupyter-widgets/controls'` | | `_model_module_version` | string | `'2.0.0'` | | `_model_name` | string | `'DirectionalLinkModel'` | | `_view_module` | string | `'@jupyter-widgets/controls'` | | `_view_module_version` | string | `'2.0.0'` | | `_view_name` | `null` or string | `null` | Name of the view. | | `source` | array | `[]` | The source (widget, 'trait_name') pair | | `target` | array | `[]` | The target (widget, 'trait_name') pair | ### DropdownModel (@jupyter-widgets/controls, 2.0.0); DropdownView (@jupyter-widgets/controls, 2.0.0) | Attribute | Type | Default | Help | | ------------------------ | ------------------------------------ | ----------------------------- | ----------------------------------------- | | `_dom_classes` | array of string | `[]` | CSS classes applied to widget DOM element | | `_model_module` | string | `'@jupyter-widgets/controls'` | | `_model_module_version` | string | `'2.0.0'` | | `_model_name` | string | `'DropdownModel'` | | `_options_labels` | array of string | `[]` | The labels for the options. | | `_view_module` | string | `'@jupyter-widgets/controls'` | | `_view_module_version` | string | `'2.0.0'` | | `_view_name` | string | `'DropdownView'` | | `description` | string | `''` | Description of the control. | | `description_allow_html` | boolean | `false` | Accept HTML in the description. | | `disabled` | boolean | `false` | Enable or disable user changes | | `index` | `null` or number (integer) | `null` | Selected index | | `layout` | reference to Layout widget | reference to new instance | | `style` | reference to DescriptionStyle widget | reference to new instance | Styling customizations | | `tabbable` | `null` or boolean | `null` | Is widget tabbable? | | `tooltip` | `null` or string | `null` | A tooltip caption. | ### FileUploadModel (@jupyter-widgets/controls, 2.0.0); FileUploadView (@jupyter-widgets/controls, 2.0.0) | Attribute | Type | Default | Help | | ------------------------ | --------------------------------------------------------------------------------- | ----------------------------- | ------------------------------------------------- | | `_dom_classes` | array of string | `[]` | CSS classes applied to widget DOM element | | `_model_module` | string | `'@jupyter-widgets/controls'` | | `_model_module_version` | string | `'2.0.0'` | | `_model_name` | string | `'FileUploadModel'` | | `_view_module` | string | `'@jupyter-widgets/controls'` | | `_view_module_version` | string | `'2.0.0'` | | `_view_name` | string | `'FileUploadView'` | | `accept` | string | `''` | File types to accept, empty string for all | | `button_style` | string (one of `'primary'`, `'success'`, `'info'`, `'warning'`, `'danger'`, `''`) | `''` | Use a predefined styling for the button. | | `description` | string | `''` | Description of the control. | | `description_allow_html` | boolean | `false` | Accept HTML in the description. | | `disabled` | boolean | `false` | Enable or disable button | | `error` | string | `''` | Error message | | `icon` | string | `'upload'` | Font-awesome icon name, without the 'fa-' prefix. | | `layout` | reference to Layout widget | reference to new instance | | `multiple` | boolean | `false` | If True, allow for multiple files upload | | `style` | reference to ButtonStyle widget | reference to new instance | | `tabbable` | `null` or boolean | `null` | Is widget tabbable? | | `tooltip` | `null` or string | `null` | A tooltip caption. | | `value` | array of object | `[]` | The file upload value | ### FloatLogSliderModel (@jupyter-widgets/controls, 2.0.0); FloatLogSliderView (@jupyter-widgets/controls, 2.0.0) | Attribute | Type | Default | Help | | ------------------------ | ------------------------------------------------------------------------ | ----------------------------- | ----------------------------------------------------------------- | | `_dom_classes` | array of string | `[]` | CSS classes applied to widget DOM element | | `_model_module` | string | `'@jupyter-widgets/controls'` | | `_model_module_version` | string | `'2.0.0'` | | `_model_name` | string | `'FloatLogSliderModel'` | | `_view_module` | string | `'@jupyter-widgets/controls'` | | `_view_module_version` | string | `'2.0.0'` | | `_view_name` | string | `'FloatLogSliderView'` | | `base` | number (float) | `10.0` | Base for the logarithm | | `behavior` | string (one of `'drag-tap'`, `'drag-snap'`, `'tap'`, `'drag'`, `'snap'`) | `'drag-tap'` | Slider dragging behavior. | | `continuous_update` | boolean | `true` | Update the value of the widget as the user is holding the slider. | | `description` | string | `''` | Description of the control. | | `description_allow_html` | boolean | `false` | Accept HTML in the description. | | `disabled` | boolean | `false` | Enable or disable user changes | | `layout` | reference to Layout widget | reference to new instance | | `max` | number (float) | `4.0` | Max value for the exponent | | `min` | number (float) | `0.0` | Min value for the exponent | | `orientation` | string (one of `'horizontal'`, `'vertical'`) | `'horizontal'` | Vertical or horizontal. | | `readout` | boolean | `true` | Display the current value of the slider next to it. | | `readout_format` | string | `'.3g'` | Format for the readout | | `step` | `null` or number (float) | `0.1` | Minimum step in the exponent to increment the value | | `style` | reference to SliderStyle widget | reference to new instance | | `tabbable` | `null` or boolean | `null` | Is widget tabbable? | | `tooltip` | `null` or string | `null` | A tooltip caption. | | `value` | number (float) | `1.0` | Float value | ### FloatProgressModel (@jupyter-widgets/controls, 2.0.0); ProgressView (@jupyter-widgets/controls, 2.0.0) | Attribute | Type | Default | Help | | ------------------------ | ------------------------------------------------------------------------------ | ----------------------------- | ---------------------------------------------- | | `_dom_classes` | array of string | `[]` | CSS classes applied to widget DOM element | | `_model_module` | string | `'@jupyter-widgets/controls'` | | `_model_module_version` | string | `'2.0.0'` | | `_model_name` | string | `'FloatProgressModel'` | | `_view_module` | string | `'@jupyter-widgets/controls'` | | `_view_module_version` | string | `'2.0.0'` | | `_view_name` | string | `'ProgressView'` | | `bar_style` | `null` or string (one of `'success'`, `'info'`, `'warning'`, `'danger'`, `''`) | `''` | Use a predefined styling for the progress bar. | | `description` | string | `''` | Description of the control. | | `description_allow_html` | boolean | `false` | Accept HTML in the description. | | `layout` | reference to Layout widget | reference to new instance | | `max` | number (float) | `100.0` | Max value | | `min` | number (float) | `0.0` | Min value | | `orientation` | string (one of `'horizontal'`, `'vertical'`) | `'horizontal'` | Vertical or horizontal. | | `style` | reference to ProgressStyle widget | reference to new instance | | `tabbable` | `null` or boolean | `null` | Is widget tabbable? | | `tooltip` | `null` or string | `null` | A tooltip caption. | | `value` | number (float) | `0.0` | Float value | ### FloatRangeSliderModel (@jupyter-widgets/controls, 2.0.0); FloatRangeSliderView (@jupyter-widgets/controls, 2.0.0) | Attribute | Type | Default | Help | | ------------------------ | ------------------------------------------------------------------------ | ----------------------------- | ----------------------------------------------------------------- | | `_dom_classes` | array of string | `[]` | CSS classes applied to widget DOM element | | `_model_module` | string | `'@jupyter-widgets/controls'` | | `_model_module_version` | string | `'2.0.0'` | | `_model_name` | string | `'FloatRangeSliderModel'` | | `_view_module` | string | `'@jupyter-widgets/controls'` | | `_view_module_version` | string | `'2.0.0'` | | `_view_name` | string | `'FloatRangeSliderView'` | | `behavior` | string (one of `'drag-tap'`, `'drag-snap'`, `'tap'`, `'drag'`, `'snap'`) | `'drag-tap'` | Slider dragging behavior. | | `continuous_update` | boolean | `true` | Update the value of the widget as the user is sliding the slider. | | `description` | string | `''` | Description of the control. | | `description_allow_html` | boolean | `false` | Accept HTML in the description. | | `disabled` | boolean | `false` | Enable or disable user changes | | `layout` | reference to Layout widget | reference to new instance | | `max` | number (float) | `100.0` | Max value | | `min` | number (float) | `0.0` | Min value | | `orientation` | string (one of `'horizontal'`, `'vertical'`) | `'horizontal'` | Vertical or horizontal. | | `readout` | boolean | `true` | Display the current value of the slider next to it. | | `readout_format` | string | `'.2f'` | Format for the readout | | `step` | `null` or number (float) | `0.1` | Minimum step to increment the value | | `style` | reference to SliderStyle widget | reference to new instance | | `tabbable` | `null` or boolean | `null` | Is widget tabbable? | | `tooltip` | `null` or string | `null` | A tooltip caption. | | `value` | array | `[0.0, 1.0]` | Tuple of (lower, upper) bounds | ### FloatSliderModel (@jupyter-widgets/controls, 2.0.0); FloatSliderView (@jupyter-widgets/controls, 2.0.0) | Attribute | Type | Default | Help | | ------------------------ | ------------------------------------------------------------------------ | ----------------------------- | ----------------------------------------------------------------- | | `_dom_classes` | array of string | `[]` | CSS classes applied to widget DOM element | | `_model_module` | string | `'@jupyter-widgets/controls'` | | `_model_module_version` | string | `'2.0.0'` | | `_model_name` | string | `'FloatSliderModel'` | | `_view_module` | string | `'@jupyter-widgets/controls'` | | `_view_module_version` | string | `'2.0.0'` | | `_view_name` | string | `'FloatSliderView'` | | `behavior` | string (one of `'drag-tap'`, `'drag-snap'`, `'tap'`, `'drag'`, `'snap'`) | `'drag-tap'` | Slider dragging behavior. | | `continuous_update` | boolean | `true` | Update the value of the widget as the user is holding the slider. | | `description` | string | `''` | Description of the control. | | `description_allow_html` | boolean | `false` | Accept HTML in the description. | | `disabled` | boolean | `false` | Enable or disable user changes | | `layout` | reference to Layout widget | reference to new instance | | `max` | number (float) | `100.0` | Max value | | `min` | number (float) | `0.0` | Min value | | `orientation` | string (one of `'horizontal'`, `'vertical'`) | `'horizontal'` | Vertical or horizontal. | | `readout` | boolean | `true` | Display the current value of the slider next to it. | | `readout_format` | string | `'.2f'` | Format for the readout | | `step` | `null` or number (float) | `0.1` | Minimum step to increment the value | | `style` | reference to SliderStyle widget | reference to new instance | | `tabbable` | `null` or boolean | `null` | Is widget tabbable? | | `tooltip` | `null` or string | `null` | A tooltip caption. | | `value` | number (float) | `0.0` | Float value | ### FloatTextModel (@jupyter-widgets/controls, 2.0.0); FloatTextView (@jupyter-widgets/controls, 2.0.0) | Attribute | Type | Default | Help | | ------------------------ | ------------------------------------ | ----------------------------- | ------------------------------------------------------------------------------------------------------------ | | `_dom_classes` | array of string | `[]` | CSS classes applied to widget DOM element | | `_model_module` | string | `'@jupyter-widgets/controls'` | | `_model_module_version` | string | `'2.0.0'` | | `_model_name` | string | `'FloatTextModel'` | | `_view_module` | string | `'@jupyter-widgets/controls'` | | `_view_module_version` | string | `'2.0.0'` | | `_view_name` | string | `'FloatTextView'` | | `continuous_update` | boolean | `false` | Update the value as the user types. If False, update on submission, e.g., pressing Enter or navigating away. | | `description` | string | `''` | Description of the control. | | `description_allow_html` | boolean | `false` | Accept HTML in the description. | | `disabled` | boolean | `false` | Enable or disable user changes | | `layout` | reference to Layout widget | reference to new instance | | `step` | `null` or number (float) | `null` | Minimum step to increment the value | | `style` | reference to DescriptionStyle widget | reference to new instance | Styling customizations | | `tabbable` | `null` or boolean | `null` | Is widget tabbable? | | `tooltip` | `null` or string | `null` | A tooltip caption. | | `value` | number (float) | `0.0` | Float value | ### FloatsInputModel (@jupyter-widgets/controls, 2.0.0); FloatsInputView (@jupyter-widgets/controls, 2.0.0) | Attribute | Type | Default | Help | | ------------------------ | --------------------------------------------------------------------------------- | ----------------------------- | ----------------------------------------- | | `_dom_classes` | array of string | `[]` | CSS classes applied to widget DOM element | | `_model_module` | string | `'@jupyter-widgets/controls'` | | `_model_module_version` | string | `'2.0.0'` | | `_model_name` | string | `'FloatsInputModel'` | | `_view_module` | string | `'@jupyter-widgets/controls'` | | `_view_module_version` | string | `'2.0.0'` | | `_view_name` | string | `'FloatsInputView'` | | `allow_duplicates` | boolean | `true` | | `allowed_tags` | array | `[]` | | `description` | string | `''` | Description of the control. | | `description_allow_html` | boolean | `false` | Accept HTML in the description. | | `format` | string | `'.1f'` | | `layout` | reference to Layout widget | reference to new instance | | `max` | `null` or number (float) | `null` | | `min` | `null` or number (float) | `null` | | `placeholder` | string | `'\u200b'` | | `style` | reference to DescriptionStyle widget | reference to new instance | Styling customizations | | `tabbable` | `null` or boolean | `null` | Is widget tabbable? | | `tag_style` | string (one of `'primary'`, `'success'`, `'info'`, `'warning'`, `'danger'`, `''`) | `''` | Use a predefined styling for the tags. | | `tooltip` | `null` or string | `null` | A tooltip caption. | | `value` | array | `[]` | List of float tags | ### GridBoxModel (@jupyter-widgets/controls, 2.0.0); GridBoxView (@jupyter-widgets/controls, 2.0.0) | Attribute | Type | Default | Help | | ----------------------- | -------------------------------------------------------------------- | ----------------------------- | ----------------------------------------- | | `_dom_classes` | array of string | `[]` | CSS classes applied to widget DOM element | | `_model_module` | string | `'@jupyter-widgets/controls'` | | `_model_module_version` | string | `'2.0.0'` | | `_model_name` | string | `'GridBoxModel'` | | `_view_module` | string | `'@jupyter-widgets/controls'` | | `_view_module_version` | string | `'2.0.0'` | | `_view_name` | string | `'GridBoxView'` | | `box_style` | string (one of `'success'`, `'info'`, `'warning'`, `'danger'`, `''`) | `''` | Use a predefined styling for the box. | | `children` | array of reference to Widget widget | `[]` | List of widget children | | `layout` | reference to Layout widget | reference to new instance | | `tabbable` | `null` or boolean | `null` | Is widget tabbable? | | `tooltip` | `null` or string | `null` | A tooltip caption. | ### HBoxModel (@jupyter-widgets/controls, 2.0.0); HBoxView (@jupyter-widgets/controls, 2.0.0) | Attribute | Type | Default | Help | | ----------------------- | -------------------------------------------------------------------- | ----------------------------- | ----------------------------------------- | | `_dom_classes` | array of string | `[]` | CSS classes applied to widget DOM element | | `_model_module` | string | `'@jupyter-widgets/controls'` | | `_model_module_version` | string | `'2.0.0'` | | `_model_name` | string | `'HBoxModel'` | | `_view_module` | string | `'@jupyter-widgets/controls'` | | `_view_module_version` | string | `'2.0.0'` | | `_view_name` | string | `'HBoxView'` | | `box_style` | string (one of `'success'`, `'info'`, `'warning'`, `'danger'`, `''`) | `''` | Use a predefined styling for the box. | | `children` | array of reference to Widget widget | `[]` | List of widget children | | `layout` | reference to Layout widget | reference to new instance | | `tabbable` | `null` or boolean | `null` | Is widget tabbable? | | `tooltip` | `null` or string | `null` | A tooltip caption. | ### HTMLMathModel (@jupyter-widgets/controls, 2.0.0); HTMLMathView (@jupyter-widgets/controls, 2.0.0) | Attribute | Type | Default | Help | | ------------------------ | --------------------------------- | ----------------------------- | ------------------------------------------------------- | | `_dom_classes` | array of string | `[]` | CSS classes applied to widget DOM element | | `_model_module` | string | `'@jupyter-widgets/controls'` | | `_model_module_version` | string | `'2.0.0'` | | `_model_name` | string | `'HTMLMathModel'` | | `_view_module` | string | `'@jupyter-widgets/controls'` | | `_view_module_version` | string | `'2.0.0'` | | `_view_name` | string | `'HTMLMathView'` | | `description` | string | `''` | Description of the control. | | `description_allow_html` | boolean | `false` | Accept HTML in the description. | | `layout` | reference to Layout widget | reference to new instance | | `placeholder` | string | `'\u200b'` | Placeholder text to display when nothing has been typed | | `style` | reference to HTMLMathStyle widget | reference to new instance | | `tabbable` | `null` or boolean | `null` | Is widget tabbable? | | `tooltip` | `null` or string | `null` | A tooltip caption. | | `value` | string | `''` | String value | ### HTMLMathStyleModel (@jupyter-widgets/controls, 2.0.0); StyleView (@jupyter-widgets/base, 2.0.0) | Attribute | Type | Default | Help | | ----------------------- | ---------------- | ----------------------------- | ---------------------------------------------------- | | `_model_module` | string | `'@jupyter-widgets/controls'` | | `_model_module_version` | string | `'2.0.0'` | | `_model_name` | string | `'HTMLMathStyleModel'` | | `_view_module` | string | `'@jupyter-widgets/base'` | | `_view_module_version` | string | `'2.0.0'` | | `_view_name` | string | `'StyleView'` | | `background` | `null` or string | `null` | Background specifications. | | `description_width` | string | `''` | Width of the description to the side of the control. | | `font_size` | `null` or string | `null` | Text font size. | | `text_color` | `null` or string | `null` | Text color | ### HTMLModel (@jupyter-widgets/controls, 2.0.0); HTMLView (@jupyter-widgets/controls, 2.0.0) | Attribute | Type | Default | Help | | ------------------------ | ----------------------------- | ----------------------------- | ------------------------------------------------------- | | `_dom_classes` | array of string | `[]` | CSS classes applied to widget DOM element | | `_model_module` | string | `'@jupyter-widgets/controls'` | | `_model_module_version` | string | `'2.0.0'` | | `_model_name` | string | `'HTMLModel'` | | `_view_module` | string | `'@jupyter-widgets/controls'` | | `_view_module_version` | string | `'2.0.0'` | | `_view_name` | string | `'HTMLView'` | | `description` | string | `''` | Description of the control. | | `description_allow_html` | boolean | `false` | Accept HTML in the description. | | `layout` | reference to Layout widget | reference to new instance | | `placeholder` | string | `'\u200b'` | Placeholder text to display when nothing has been typed | | `style` | reference to HTMLStyle widget | reference to new instance | | `tabbable` | `null` or boolean | `null` | Is widget tabbable? | | `tooltip` | `null` or string | `null` | A tooltip caption. | | `value` | string | `''` | String value | ### HTMLStyleModel (@jupyter-widgets/controls, 2.0.0); StyleView (@jupyter-widgets/base, 2.0.0) | Attribute | Type | Default | Help | | ----------------------- | ---------------- | ----------------------------- | ---------------------------------------------------- | | `_model_module` | string | `'@jupyter-widgets/controls'` | | `_model_module_version` | string | `'2.0.0'` | | `_model_name` | string | `'HTMLStyleModel'` | | `_view_module` | string | `'@jupyter-widgets/base'` | | `_view_module_version` | string | `'2.0.0'` | | `_view_name` | string | `'StyleView'` | | `background` | `null` or string | `null` | Background specifications. | | `description_width` | string | `''` | Width of the description to the side of the control. | | `font_size` | `null` or string | `null` | Text font size. | | `text_color` | `null` or string | `null` | Text color | ### ImageModel (@jupyter-widgets/controls, 2.0.0); ImageView (@jupyter-widgets/controls, 2.0.0) | Attribute | Type | Default | Help | | ----------------------- | -------------------------- | ----------------------------- | ------------------------------------------------------------------------ | | `_dom_classes` | array of string | `[]` | CSS classes applied to widget DOM element | | `_model_module` | string | `'@jupyter-widgets/controls'` | | `_model_module_version` | string | `'2.0.0'` | | `_model_name` | string | `'ImageModel'` | | `_view_module` | string | `'@jupyter-widgets/controls'` | | `_view_module_version` | string | `'2.0.0'` | | `_view_name` | string | `'ImageView'` | | `format` | string | `'png'` | The format of the image. | | `height` | string | `''` | Height of the image in pixels. Use layout.height for styling the widget. | | `layout` | reference to Layout widget | reference to new instance | | `tabbable` | `null` or boolean | `null` | Is widget tabbable? | | `tooltip` | `null` or string | `null` | A tooltip caption. | | `value` | Bytes | `b''` | The media data as a memory view of bytes. | | `width` | string | `''` | Width of the image in pixels. Use layout.width for styling the widget. | ### IntProgressModel (@jupyter-widgets/controls, 2.0.0); ProgressView (@jupyter-widgets/controls, 2.0.0) | Attribute | Type | Default | Help | | ------------------------ | -------------------------------------------------------------------- | ----------------------------- | ---------------------------------------------- | | `_dom_classes` | array of string | `[]` | CSS classes applied to widget DOM element | | `_model_module` | string | `'@jupyter-widgets/controls'` | | `_model_module_version` | string | `'2.0.0'` | | `_model_name` | string | `'IntProgressModel'` | | `_view_module` | string | `'@jupyter-widgets/controls'` | | `_view_module_version` | string | `'2.0.0'` | | `_view_name` | string | `'ProgressView'` | | `bar_style` | string (one of `'success'`, `'info'`, `'warning'`, `'danger'`, `''`) | `''` | Use a predefined styling for the progress bar. | | `description` | string | `''` | Description of the control. | | `description_allow_html` | boolean | `false` | Accept HTML in the description. | | `layout` | reference to Layout widget | reference to new instance | | `max` | number (integer) | `100` | Max value | | `min` | number (integer) | `0` | Min value | | `orientation` | string (one of `'horizontal'`, `'vertical'`) | `'horizontal'` | Vertical or horizontal. | | `style` | reference to ProgressStyle widget | reference to new instance | | `tabbable` | `null` or boolean | `null` | Is widget tabbable? | | `tooltip` | `null` or string | `null` | A tooltip caption. | | `value` | number (integer) | `0` | Int value | ### IntRangeSliderModel (@jupyter-widgets/controls, 2.0.0); IntRangeSliderView (@jupyter-widgets/controls, 2.0.0) | Attribute | Type | Default | Help | | ------------------------ | ------------------------------------------------------------------------ | ----------------------------- | ----------------------------------------------------------------- | | `_dom_classes` | array of string | `[]` | CSS classes applied to widget DOM element | | `_model_module` | string | `'@jupyter-widgets/controls'` | | `_model_module_version` | string | `'2.0.0'` | | `_model_name` | string | `'IntRangeSliderModel'` | | `_view_module` | string | `'@jupyter-widgets/controls'` | | `_view_module_version` | string | `'2.0.0'` | | `_view_name` | string | `'IntRangeSliderView'` | | `behavior` | string (one of `'drag-tap'`, `'drag-snap'`, `'tap'`, `'drag'`, `'snap'`) | `'drag-tap'` | Slider dragging behavior. | | `continuous_update` | boolean | `true` | Update the value of the widget as the user is sliding the slider. | | `description` | string | `''` | Description of the control. | | `description_allow_html` | boolean | `false` | Accept HTML in the description. | | `disabled` | boolean | `false` | Enable or disable user changes | | `layout` | reference to Layout widget | reference to new instance | | `max` | number (integer) | `100` | Max value | | `min` | number (integer) | `0` | Min value | | `orientation` | string (one of `'horizontal'`, `'vertical'`) | `'horizontal'` | Vertical or horizontal. | | `readout` | boolean | `true` | Display the current value of the slider next to it. | | `readout_format` | string | `'d'` | Format for the readout | | `step` | number (integer) | `1` | Minimum step that the value can take | | `style` | reference to SliderStyle widget | reference to new instance | Slider style customizations. | | `tabbable` | `null` or boolean | `null` | Is widget tabbable? | | `tooltip` | `null` or string | `null` | A tooltip caption. | | `value` | array | `[0, 1]` | Tuple of (lower, upper) bounds | ### IntSliderModel (@jupyter-widgets/controls, 2.0.0); IntSliderView (@jupyter-widgets/controls, 2.0.0) | Attribute | Type | Default | Help | | ------------------------ | ------------------------------------------------------------------------ | ----------------------------- | ----------------------------------------------------------------- | | `_dom_classes` | array of string | `[]` | CSS classes applied to widget DOM element | | `_model_module` | string | `'@jupyter-widgets/controls'` | | `_model_module_version` | string | `'2.0.0'` | | `_model_name` | string | `'IntSliderModel'` | | `_view_module` | string | `'@jupyter-widgets/controls'` | | `_view_module_version` | string | `'2.0.0'` | | `_view_name` | string | `'IntSliderView'` | | `behavior` | string (one of `'drag-tap'`, `'drag-snap'`, `'tap'`, `'drag'`, `'snap'`) | `'drag-tap'` | Slider dragging behavior. | | `continuous_update` | boolean | `true` | Update the value of the widget as the user is holding the slider. | | `description` | string | `''` | Description of the control. | | `description_allow_html` | boolean | `false` | Accept HTML in the description. | | `disabled` | boolean | `false` | Enable or disable user changes | | `layout` | reference to Layout widget | reference to new instance | | `max` | number (integer) | `100` | Max value | | `min` | number (integer) | `0` | Min value | | `orientation` | string (one of `'horizontal'`, `'vertical'`) | `'horizontal'` | Vertical or horizontal. | | `readout` | boolean | `true` | Display the current value of the slider next to it. | | `readout_format` | string | `'d'` | Format for the readout | | `step` | number (integer) | `1` | Minimum step to increment the value | | `style` | reference to SliderStyle widget | reference to new instance | | `tabbable` | `null` or boolean | `null` | Is widget tabbable? | | `tooltip` | `null` or string | `null` | A tooltip caption. | | `value` | number (integer) | `0` | Int value | ### IntTextModel (@jupyter-widgets/controls, 2.0.0); IntTextView (@jupyter-widgets/controls, 2.0.0) | Attribute | Type | Default | Help | | ------------------------ | ------------------------------------ | ----------------------------- | ------------------------------------------------------------------------------------------------------------ | | `_dom_classes` | array of string | `[]` | CSS classes applied to widget DOM element | | `_model_module` | string | `'@jupyter-widgets/controls'` | | `_model_module_version` | string | `'2.0.0'` | | `_model_name` | string | `'IntTextModel'` | | `_view_module` | string | `'@jupyter-widgets/controls'` | | `_view_module_version` | string | `'2.0.0'` | | `_view_name` | string | `'IntTextView'` | | `continuous_update` | boolean | `false` | Update the value as the user types. If False, update on submission, e.g., pressing Enter or navigating away. | | `description` | string | `''` | Description of the control. | | `description_allow_html` | boolean | `false` | Accept HTML in the description. | | `disabled` | boolean | `false` | Enable or disable user changes | | `layout` | reference to Layout widget | reference to new instance | | `step` | number (integer) | `1` | Minimum step to increment the value | | `style` | reference to DescriptionStyle widget | reference to new instance | Styling customizations | | `tabbable` | `null` or boolean | `null` | Is widget tabbable? | | `tooltip` | `null` or string | `null` | A tooltip caption. | | `value` | number (integer) | `0` | Int value | ### IntsInputModel (@jupyter-widgets/controls, 2.0.0); IntsInputView (@jupyter-widgets/controls, 2.0.0) | Attribute | Type | Default | Help | | ------------------------ | --------------------------------------------------------------------------------- | ----------------------------- | ----------------------------------------- | | `_dom_classes` | array of string | `[]` | CSS classes applied to widget DOM element | | `_model_module` | string | `'@jupyter-widgets/controls'` | | `_model_module_version` | string | `'2.0.0'` | | `_model_name` | string | `'IntsInputModel'` | | `_view_module` | string | `'@jupyter-widgets/controls'` | | `_view_module_version` | string | `'2.0.0'` | | `_view_name` | string | `'IntsInputView'` | | `allow_duplicates` | boolean | `true` | | `allowed_tags` | array | `[]` | | `description` | string | `''` | Description of the control. | | `description_allow_html` | boolean | `false` | Accept HTML in the description. | | `format` | string | `'d'` | | `layout` | reference to Layout widget | reference to new instance | | `max` | `null` or number (integer) | `null` | | `min` | `null` or number (integer) | `null` | | `placeholder` | string | `'\u200b'` | | `style` | reference to DescriptionStyle widget | reference to new instance | Styling customizations | | `tabbable` | `null` or boolean | `null` | Is widget tabbable? | | `tag_style` | string (one of `'primary'`, `'success'`, `'info'`, `'warning'`, `'danger'`, `''`) | `''` | Use a predefined styling for the tags. | | `tooltip` | `null` or string | `null` | A tooltip caption. | | `value` | array | `[]` | List of int tags | ### LabelModel (@jupyter-widgets/controls, 2.0.0); LabelView (@jupyter-widgets/controls, 2.0.0) | Attribute | Type | Default | Help | | ------------------------ | ------------------------------ | ----------------------------- | ------------------------------------------------------- | | `_dom_classes` | array of string | `[]` | CSS classes applied to widget DOM element | | `_model_module` | string | `'@jupyter-widgets/controls'` | | `_model_module_version` | string | `'2.0.0'` | | `_model_name` | string | `'LabelModel'` | | `_view_module` | string | `'@jupyter-widgets/controls'` | | `_view_module_version` | string | `'2.0.0'` | | `_view_name` | string | `'LabelView'` | | `description` | string | `''` | Description of the control. | | `description_allow_html` | boolean | `false` | Accept HTML in the description. | | `layout` | reference to Layout widget | reference to new instance | | `placeholder` | string | `'\u200b'` | Placeholder text to display when nothing has been typed | | `style` | reference to LabelStyle widget | reference to new instance | | `tabbable` | `null` or boolean | `null` | Is widget tabbable? | | `tooltip` | `null` or string | `null` | A tooltip caption. | | `value` | string | `''` | String value | ### LabelStyleModel (@jupyter-widgets/controls, 2.0.0); StyleView (@jupyter-widgets/base, 2.0.0) | Attribute | Type | Default | Help | | ----------------------- | ---------------- | ----------------------------- | ---------------------------------------------------- | | `_model_module` | string | `'@jupyter-widgets/controls'` | | `_model_module_version` | string | `'2.0.0'` | | `_model_name` | string | `'LabelStyleModel'` | | `_view_module` | string | `'@jupyter-widgets/base'` | | `_view_module_version` | string | `'2.0.0'` | | `_view_name` | string | `'StyleView'` | | `background` | `null` or string | `null` | Background specifications. | | `description_width` | string | `''` | Width of the description to the side of the control. | | `font_family` | `null` or string | `null` | Label text font family. | | `font_size` | `null` or string | `null` | Text font size. | | `font_style` | `null` or string | `null` | Label text font style. | | `font_variant` | `null` or string | `null` | Label text font variant. | | `font_weight` | `null` or string | `null` | Label text font weight. | | `text_color` | `null` or string | `null` | Text color | | `text_decoration` | `null` or string | `null` | Label text decoration. | ### LinkModel (@jupyter-widgets/controls, 2.0.0); None (@jupyter-widgets/controls, 2.0.0) | Attribute | Type | Default | Help | | ----------------------- | ---------------- | ----------------------------- | -------------------------------------- | | `_model_module` | string | `'@jupyter-widgets/controls'` | | `_model_module_version` | string | `'2.0.0'` | | `_model_name` | string | `'LinkModel'` | | `_view_module` | string | `'@jupyter-widgets/controls'` | | `_view_module_version` | string | `'2.0.0'` | | `_view_name` | `null` or string | `null` | Name of the view. | | `source` | array | `[]` | The source (widget, 'trait_name') pair | | `target` | array | `[]` | The target (widget, 'trait_name') pair | ### NaiveDatetimeModel (@jupyter-widgets/controls, 2.0.0); DatetimeView (@jupyter-widgets/controls, 2.0.0) | Attribute | Type | Default | Help | | ------------------------ | ------------------------------------ | ----------------------------- | ----------------------------------------- | | `_dom_classes` | array of string | `[]` | CSS classes applied to widget DOM element | | `_model_module` | string | `'@jupyter-widgets/controls'` | | `_model_module_version` | string | `'2.0.0'` | | `_model_name` | string | `'NaiveDatetimeModel'` | | `_view_module` | string | `'@jupyter-widgets/controls'` | | `_view_module_version` | string | `'2.0.0'` | | `_view_name` | string | `'DatetimeView'` | | `description` | string | `''` | Description of the control. | | `description_allow_html` | boolean | `false` | Accept HTML in the description. | | `disabled` | boolean | `false` | Enable or disable user changes. | | `layout` | reference to Layout widget | reference to new instance | | `max` | `null` or Datetime | `null` | | `min` | `null` or Datetime | `null` | | `style` | reference to DescriptionStyle widget | reference to new instance | Styling customizations | | `tabbable` | `null` or boolean | `null` | Is widget tabbable? | | `tooltip` | `null` or string | `null` | A tooltip caption. | | `value` | `null` or Datetime | `null` | ### PasswordModel (@jupyter-widgets/controls, 2.0.0); PasswordView (@jupyter-widgets/controls, 2.0.0) | Attribute | Type | Default | Help | | ------------------------ | ----------------------------- | ----------------------------- | ------------------------------------------------------------------------------------------------------------ | | `_dom_classes` | array of string | `[]` | CSS classes applied to widget DOM element | | `_model_module` | string | `'@jupyter-widgets/controls'` | | `_model_module_version` | string | `'2.0.0'` | | `_model_name` | string | `'PasswordModel'` | | `_view_module` | string | `'@jupyter-widgets/controls'` | | `_view_module_version` | string | `'2.0.0'` | | `_view_name` | string | `'PasswordView'` | | `continuous_update` | boolean | `true` | Update the value as the user types. If False, update on submission, e.g., pressing Enter or navigating away. | | `description` | string | `''` | Description of the control. | | `description_allow_html` | boolean | `false` | Accept HTML in the description. | | `disabled` | boolean | `false` | Enable or disable user changes | | `layout` | reference to Layout widget | reference to new instance | | `placeholder` | string | `'\u200b'` | Placeholder text to display when nothing has been typed | | `style` | reference to TextStyle widget | reference to new instance | | `tabbable` | `null` or boolean | `null` | Is widget tabbable? | | `tooltip` | `null` or string | `null` | A tooltip caption. | | `value` | string | `''` | String value | ### PlayModel (@jupyter-widgets/controls, 2.0.0); PlayView (@jupyter-widgets/controls, 2.0.0) | Attribute | Type | Default | Help | | ------------------------ | ------------------------------------ | ----------------------------- | ----------------------------------------------------- | | `_dom_classes` | array of string | `[]` | CSS classes applied to widget DOM element | | `_model_module` | string | `'@jupyter-widgets/controls'` | | `_model_module_version` | string | `'2.0.0'` | | `_model_name` | string | `'PlayModel'` | | `_view_module` | string | `'@jupyter-widgets/controls'` | | `_view_module_version` | string | `'2.0.0'` | | `_view_name` | string | `'PlayView'` | | `description` | string | `''` | Description of the control. | | `description_allow_html` | boolean | `false` | Accept HTML in the description. | | `disabled` | boolean | `false` | Enable or disable user changes | | `interval` | number (integer) | `100` | The time between two animation steps (ms). | | `layout` | reference to Layout widget | reference to new instance | | `max` | number (integer) | `100` | Max value | | `min` | number (integer) | `0` | Min value | | `playing` | boolean | `false` | Whether the control is currently playing. | | `repeat` | boolean | `false` | Whether the control will repeat in a continuous loop. | | `show_repeat` | boolean | `true` | Show the repeat toggle button in the widget. | | `step` | number (integer) | `1` | Increment step | | `style` | reference to DescriptionStyle widget | reference to new instance | Styling customizations | | `tabbable` | `null` or boolean | `null` | Is widget tabbable? | | `tooltip` | `null` or string | `null` | A tooltip caption. | | `value` | number (integer) | `0` | Int value | ### ProgressStyleModel (@jupyter-widgets/controls, 2.0.0); StyleView (@jupyter-widgets/base, 2.0.0) | Attribute | Type | Default | Help | | ----------------------- | ---------------- | ----------------------------- | ---------------------------------------------------- | | `_model_module` | string | `'@jupyter-widgets/controls'` | | `_model_module_version` | string | `'2.0.0'` | | `_model_name` | string | `'ProgressStyleModel'` | | `_view_module` | string | `'@jupyter-widgets/base'` | | `_view_module_version` | string | `'2.0.0'` | | `_view_name` | string | `'StyleView'` | | `bar_color` | `null` or string | `null` | Color of the progress bar. | | `description_width` | string | `''` | Width of the description to the side of the control. | ### RadioButtonsModel (@jupyter-widgets/controls, 2.0.0); RadioButtonsView (@jupyter-widgets/controls, 2.0.0) | Attribute | Type | Default | Help | | ------------------------ | ------------------------------------ | ----------------------------- | ----------------------------------------- | | `_dom_classes` | array of string | `[]` | CSS classes applied to widget DOM element | | `_model_module` | string | `'@jupyter-widgets/controls'` | | `_model_module_version` | string | `'2.0.0'` | | `_model_name` | string | `'RadioButtonsModel'` | | `_options_labels` | array of string | `[]` | The labels for the options. | | `_view_module` | string | `'@jupyter-widgets/controls'` | | `_view_module_version` | string | `'2.0.0'` | | `_view_name` | string | `'RadioButtonsView'` | | `description` | string | `''` | Description of the control. | | `description_allow_html` | boolean | `false` | Accept HTML in the description. | | `disabled` | boolean | `false` | Enable or disable user changes | | `index` | `null` or number (integer) | `null` | Selected index | | `layout` | reference to Layout widget | reference to new instance | | `style` | reference to DescriptionStyle widget | reference to new instance | Styling customizations | | `tabbable` | `null` or boolean | `null` | Is widget tabbable? | | `tooltip` | `null` or string | `null` | A tooltip caption. | ### SelectModel (@jupyter-widgets/controls, 2.0.0); SelectView (@jupyter-widgets/controls, 2.0.0) | Attribute | Type | Default | Help | | ------------------------ | ------------------------------------ | ----------------------------- | ----------------------------------------- | | `_dom_classes` | array of string | `[]` | CSS classes applied to widget DOM element | | `_model_module` | string | `'@jupyter-widgets/controls'` | | `_model_module_version` | string | `'2.0.0'` | | `_model_name` | string | `'SelectModel'` | | `_options_labels` | array of string | `[]` | The labels for the options. | | `_view_module` | string | `'@jupyter-widgets/controls'` | | `_view_module_version` | string | `'2.0.0'` | | `_view_name` | string | `'SelectView'` | | `description` | string | `''` | Description of the control. | | `description_allow_html` | boolean | `false` | Accept HTML in the description. | | `disabled` | boolean | `false` | Enable or disable user changes | | `index` | `null` or number (integer) | `null` | Selected index | | `layout` | reference to Layout widget | reference to new instance | | `rows` | number (integer) | `5` | The number of rows to display. | | `style` | reference to DescriptionStyle widget | reference to new instance | Styling customizations | | `tabbable` | `null` or boolean | `null` | Is widget tabbable? | | `tooltip` | `null` or string | `null` | A tooltip caption. | ### SelectMultipleModel (@jupyter-widgets/controls, 2.0.0); SelectMultipleView (@jupyter-widgets/controls, 2.0.0) | Attribute | Type | Default | Help | | ------------------------ | ------------------------------------ | ----------------------------- | ----------------------------------------- | | `_dom_classes` | array of string | `[]` | CSS classes applied to widget DOM element | | `_model_module` | string | `'@jupyter-widgets/controls'` | | `_model_module_version` | string | `'2.0.0'` | | `_model_name` | string | `'SelectMultipleModel'` | | `_options_labels` | array of string | `[]` | The labels for the options. | | `_view_module` | string | `'@jupyter-widgets/controls'` | | `_view_module_version` | string | `'2.0.0'` | | `_view_name` | string | `'SelectMultipleView'` | | `description` | string | `''` | Description of the control. | | `description_allow_html` | boolean | `false` | Accept HTML in the description. | | `disabled` | boolean | `false` | Enable or disable user changes | | `index` | array of number (integer) | `[]` | Selected indices | | `layout` | reference to Layout widget | reference to new instance | | `rows` | number (integer) | `5` | The number of rows to display. | | `style` | reference to DescriptionStyle widget | reference to new instance | Styling customizations | | `tabbable` | `null` or boolean | `null` | Is widget tabbable? | | `tooltip` | `null` or string | `null` | A tooltip caption. | ### SelectionRangeSliderModel (@jupyter-widgets/controls, 2.0.0); SelectionRangeSliderView (@jupyter-widgets/controls, 2.0.0) | Attribute | Type | Default | Help | | ------------------------ | ------------------------------------------------------------------------ | ----------------------------- | ----------------------------------------------------------------- | | `_dom_classes` | array of string | `[]` | CSS classes applied to widget DOM element | | `_model_module` | string | `'@jupyter-widgets/controls'` | | `_model_module_version` | string | `'2.0.0'` | | `_model_name` | string | `'SelectionRangeSliderModel'` | | `_options_labels` | array of string | `[]` | The labels for the options. | | `_view_module` | string | `'@jupyter-widgets/controls'` | | `_view_module_version` | string | `'2.0.0'` | | `_view_name` | string | `'SelectionRangeSliderView'` | | `behavior` | string (one of `'drag-tap'`, `'drag-snap'`, `'tap'`, `'drag'`, `'snap'`) | `'drag-tap'` | Slider dragging behavior. | | `continuous_update` | boolean | `true` | Update the value of the widget as the user is holding the slider. | | `description` | string | `''` | Description of the control. | | `description_allow_html` | boolean | `false` | Accept HTML in the description. | | `disabled` | boolean | `false` | Enable or disable user changes | | `index` | array | `[0, 0]` | Min and max selected indices | | `layout` | reference to Layout widget | reference to new instance | | `orientation` | string (one of `'horizontal'`, `'vertical'`) | `'horizontal'` | Vertical or horizontal. | | `readout` | boolean | `true` | Display the current selected label next to the slider | | `style` | reference to SliderStyle widget | reference to new instance | | `tabbable` | `null` or boolean | `null` | Is widget tabbable? | | `tooltip` | `null` or string | `null` | A tooltip caption. | ### SelectionSliderModel (@jupyter-widgets/controls, 2.0.0); SelectionSliderView (@jupyter-widgets/controls, 2.0.0) | Attribute | Type | Default | Help | | ------------------------ | ------------------------------------------------------------------------ | ----------------------------- | ----------------------------------------------------------------- | | `_dom_classes` | array of string | `[]` | CSS classes applied to widget DOM element | | `_model_module` | string | `'@jupyter-widgets/controls'` | | `_model_module_version` | string | `'2.0.0'` | | `_model_name` | string | `'SelectionSliderModel'` | | `_options_labels` | array of string | `[]` | The labels for the options. | | `_view_module` | string | `'@jupyter-widgets/controls'` | | `_view_module_version` | string | `'2.0.0'` | | `_view_name` | string | `'SelectionSliderView'` | | `behavior` | string (one of `'drag-tap'`, `'drag-snap'`, `'tap'`, `'drag'`, `'snap'`) | `'drag-tap'` | Slider dragging behavior. | | `continuous_update` | boolean | `true` | Update the value of the widget as the user is holding the slider. | | `description` | string | `''` | Description of the control. | | `description_allow_html` | boolean | `false` | Accept HTML in the description. | | `disabled` | boolean | `false` | Enable or disable user changes | | `index` | number (integer) | `0` | Selected index | | `layout` | reference to Layout widget | reference to new instance | | `orientation` | string (one of `'horizontal'`, `'vertical'`) | `'horizontal'` | Vertical or horizontal. | | `readout` | boolean | `true` | Display the current selected label next to the slider | | `style` | reference to SliderStyle widget | reference to new instance | | `tabbable` | `null` or boolean | `null` | Is widget tabbable? | | `tooltip` | `null` or string | `null` | A tooltip caption. | ### SliderStyleModel (@jupyter-widgets/controls, 2.0.0); StyleView (@jupyter-widgets/base, 2.0.0) | Attribute | Type | Default | Help | | ----------------------- | ---------------- | ----------------------------- | ---------------------------------------------------- | | `_model_module` | string | `'@jupyter-widgets/controls'` | | `_model_module_version` | string | `'2.0.0'` | | `_model_name` | string | `'SliderStyleModel'` | | `_view_module` | string | `'@jupyter-widgets/base'` | | `_view_module_version` | string | `'2.0.0'` | | `_view_name` | string | `'StyleView'` | | `description_width` | string | `''` | Width of the description to the side of the control. | | `handle_color` | `null` or string | `null` | Color of the slider handle. | ### StackModel (@jupyter-widgets/controls, 2.0.0); StackView (@jupyter-widgets/controls, 2.0.0) | Attribute | Type | Default | Help | | ----------------------- | -------------------------------------------------------------------- | ----------------------------- | --------------------------------------------------------------------------------------------------------------------------------- | | `_dom_classes` | array of string | `[]` | CSS classes applied to widget DOM element | | `_model_module` | string | `'@jupyter-widgets/controls'` | | `_model_module_version` | string | `'2.0.0'` | | `_model_name` | string | `'StackModel'` | | `_view_module` | string | `'@jupyter-widgets/controls'` | | `_view_module_version` | string | `'2.0.0'` | | `_view_name` | string | `'StackView'` | | `box_style` | string (one of `'success'`, `'info'`, `'warning'`, `'danger'`, `''`) | `''` | Use a predefined styling for the box. | | `children` | array of reference to Widget widget | `[]` | List of widget children | | `layout` | reference to Layout widget | reference to new instance | | `selected_index` | `null` or number (integer) | `null` | The index of the selected page. This is either an integer selecting a particular sub-widget, or None to have no widgets selected. | | `tabbable` | `null` or boolean | `null` | Is widget tabbable? | | `titles` | array of string | `[]` | Titles of the pages | | `tooltip` | `null` or string | `null` | A tooltip caption. | ### TabModel (@jupyter-widgets/controls, 2.0.0); TabView (@jupyter-widgets/controls, 2.0.0) | Attribute | Type | Default | Help | | ----------------------- | -------------------------------------------------------------------- | ----------------------------- | --------------------------------------------------------------------------------------------------------------------------------- | | `_dom_classes` | array of string | `[]` | CSS classes applied to widget DOM element | | `_model_module` | string | `'@jupyter-widgets/controls'` | | `_model_module_version` | string | `'2.0.0'` | | `_model_name` | string | `'TabModel'` | | `_view_module` | string | `'@jupyter-widgets/controls'` | | `_view_module_version` | string | `'2.0.0'` | | `_view_name` | string | `'TabView'` | | `box_style` | string (one of `'success'`, `'info'`, `'warning'`, `'danger'`, `''`) | `''` | Use a predefined styling for the box. | | `children` | array of reference to Widget widget | `[]` | List of widget children | | `layout` | reference to Layout widget | reference to new instance | | `selected_index` | `null` or number (integer) | `null` | The index of the selected page. This is either an integer selecting a particular sub-widget, or None to have no widgets selected. | | `tabbable` | `null` or boolean | `null` | Is widget tabbable? | | `titles` | array of string | `[]` | Titles of the pages | | `tooltip` | `null` or string | `null` | A tooltip caption. | ### TagsInputModel (@jupyter-widgets/controls, 2.0.0); TagsInputView (@jupyter-widgets/controls, 2.0.0) | Attribute | Type | Default | Help | | ------------------------ | --------------------------------------------------------------------------------- | ----------------------------- | ----------------------------------------- | | `_dom_classes` | array of string | `[]` | CSS classes applied to widget DOM element | | `_model_module` | string | `'@jupyter-widgets/controls'` | | `_model_module_version` | string | `'2.0.0'` | | `_model_name` | string | `'TagsInputModel'` | | `_view_module` | string | `'@jupyter-widgets/controls'` | | `_view_module_version` | string | `'2.0.0'` | | `_view_name` | string | `'TagsInputView'` | | `allow_duplicates` | boolean | `true` | | `allowed_tags` | array | `[]` | | `description` | string | `''` | Description of the control. | | `description_allow_html` | boolean | `false` | Accept HTML in the description. | | `layout` | reference to Layout widget | reference to new instance | | `placeholder` | string | `'\u200b'` | | `style` | reference to DescriptionStyle widget | reference to new instance | Styling customizations | | `tabbable` | `null` or boolean | `null` | Is widget tabbable? | | `tag_style` | string (one of `'primary'`, `'success'`, `'info'`, `'warning'`, `'danger'`, `''`) | `''` | Use a predefined styling for the tags. | | `tooltip` | `null` or string | `null` | A tooltip caption. | | `value` | array | `[]` | List of string tags | ### TextModel (@jupyter-widgets/controls, 2.0.0); TextView (@jupyter-widgets/controls, 2.0.0) | Attribute | Type | Default | Help | | ------------------------ | ----------------------------- | ----------------------------- | ------------------------------------------------------------------------------------------------------------ | | `_dom_classes` | array of string | `[]` | CSS classes applied to widget DOM element | | `_model_module` | string | `'@jupyter-widgets/controls'` | | `_model_module_version` | string | `'2.0.0'` | | `_model_name` | string | `'TextModel'` | | `_view_module` | string | `'@jupyter-widgets/controls'` | | `_view_module_version` | string | `'2.0.0'` | | `_view_name` | string | `'TextView'` | | `continuous_update` | boolean | `true` | Update the value as the user types. If False, update on submission, e.g., pressing Enter or navigating away. | | `description` | string | `''` | Description of the control. | | `description_allow_html` | boolean | `false` | Accept HTML in the description. | | `disabled` | boolean | `false` | Enable or disable user changes | | `layout` | reference to Layout widget | reference to new instance | | `placeholder` | string | `'\u200b'` | Placeholder text to display when nothing has been typed | | `style` | reference to TextStyle widget | reference to new instance | | `tabbable` | `null` or boolean | `null` | Is widget tabbable? | | `tooltip` | `null` or string | `null` | A tooltip caption. | | `value` | string | `''` | String value | ### TextStyleModel (@jupyter-widgets/controls, 2.0.0); StyleView (@jupyter-widgets/base, 2.0.0) | Attribute | Type | Default | Help | | ----------------------- | ---------------- | ----------------------------- | ---------------------------------------------------- | | `_model_module` | string | `'@jupyter-widgets/controls'` | | `_model_module_version` | string | `'2.0.0'` | | `_model_name` | string | `'TextStyleModel'` | | `_view_module` | string | `'@jupyter-widgets/base'` | | `_view_module_version` | string | `'2.0.0'` | | `_view_name` | string | `'StyleView'` | | `background` | `null` or string | `null` | Background specifications. | | `description_width` | string | `''` | Width of the description to the side of the control. | | `font_size` | `null` or string | `null` | Text font size. | | `text_color` | `null` or string | `null` | Text color | ### TextareaModel (@jupyter-widgets/controls, 2.0.0); TextareaView (@jupyter-widgets/controls, 2.0.0) | Attribute | Type | Default | Help | | ------------------------ | ----------------------------- | ----------------------------- | ------------------------------------------------------------------------------------------------------------ | | `_dom_classes` | array of string | `[]` | CSS classes applied to widget DOM element | | `_model_module` | string | `'@jupyter-widgets/controls'` | | `_model_module_version` | string | `'2.0.0'` | | `_model_name` | string | `'TextareaModel'` | | `_view_module` | string | `'@jupyter-widgets/controls'` | | `_view_module_version` | string | `'2.0.0'` | | `_view_name` | string | `'TextareaView'` | | `continuous_update` | boolean | `true` | Update the value as the user types. If False, update on submission, e.g., pressing Enter or navigating away. | | `description` | string | `''` | Description of the control. | | `description_allow_html` | boolean | `false` | Accept HTML in the description. | | `disabled` | boolean | `false` | Enable or disable user changes | | `layout` | reference to Layout widget | reference to new instance | | `placeholder` | string | `'\u200b'` | Placeholder text to display when nothing has been typed | | `rows` | `null` or number (integer) | `null` | The number of rows to display. | | `style` | reference to TextStyle widget | reference to new instance | | `tabbable` | `null` or boolean | `null` | Is widget tabbable? | | `tooltip` | `null` or string | `null` | A tooltip caption. | | `value` | string | `''` | String value | ### TimeModel (@jupyter-widgets/controls, 2.0.0); TimeView (@jupyter-widgets/controls, 2.0.0) | Attribute | Type | Default | Help | | ------------------------ | ----------------------------------------- | ----------------------------- | ---------------------------------------------------------- | | `_dom_classes` | array of string | `[]` | CSS classes applied to widget DOM element | | `_model_module` | string | `'@jupyter-widgets/controls'` | | `_model_module_version` | string | `'2.0.0'` | | `_model_name` | string | `'TimeModel'` | | `_view_module` | string | `'@jupyter-widgets/controls'` | | `_view_module_version` | string | `'2.0.0'` | | `_view_name` | string | `'TimeView'` | | `description` | string | `''` | Description of the control. | | `description_allow_html` | boolean | `false` | Accept HTML in the description. | | `disabled` | boolean | `false` | Enable or disable user changes. | | `layout` | reference to Layout widget | reference to new instance | | `max` | `null` or Time | `null` | | `min` | `null` or Time | `null` | | `step` | number (float) or string (one of `'any'`) | `60` | The time step to use for the picker, in seconds, or "any". | | `style` | reference to DescriptionStyle widget | reference to new instance | Styling customizations | | `tabbable` | `null` or boolean | `null` | Is widget tabbable? | | `tooltip` | `null` or string | `null` | A tooltip caption. | | `value` | `null` or Time | `null` | ### ToggleButtonModel (@jupyter-widgets/controls, 2.0.0); ToggleButtonView (@jupyter-widgets/controls, 2.0.0) | Attribute | Type | Default | Help | | ------------------------ | --------------------------------------------------------------------------------- | ----------------------------- | ----------------------------------------- | | `_dom_classes` | array of string | `[]` | CSS classes applied to widget DOM element | | `_model_module` | string | `'@jupyter-widgets/controls'` | | `_model_module_version` | string | `'2.0.0'` | | `_model_name` | string | `'ToggleButtonModel'` | | `_view_module` | string | `'@jupyter-widgets/controls'` | | `_view_module_version` | string | `'2.0.0'` | | `_view_name` | string | `'ToggleButtonView'` | | `button_style` | string (one of `'primary'`, `'success'`, `'info'`, `'warning'`, `'danger'`, `''`) | `''` | Use a predefined styling for the button. | | `description` | string | `''` | Description of the control. | | `description_allow_html` | boolean | `false` | Accept HTML in the description. | | `disabled` | boolean | `false` | Enable or disable user changes. | | `icon` | string | `''` | Font-awesome icon. | | `layout` | reference to Layout widget | reference to new instance | | `style` | reference to ToggleButtonStyle widget | reference to new instance | Styling customizations | | `tabbable` | `null` or boolean | `null` | Is widget tabbable? | | `tooltip` | `null` or string | `null` | A tooltip caption. | | `value` | boolean | `false` | Bool value | ### ToggleButtonStyleModel (@jupyter-widgets/controls, 2.0.0); StyleView (@jupyter-widgets/base, 2.0.0) | Attribute | Type | Default | Help | | ----------------------- | ---------------- | ----------------------------- | ---------------------------------------------------- | | `_model_module` | string | `'@jupyter-widgets/controls'` | | `_model_module_version` | string | `'2.0.0'` | | `_model_name` | string | `'ToggleButtonStyleModel'` | | `_view_module` | string | `'@jupyter-widgets/base'` | | `_view_module_version` | string | `'2.0.0'` | | `_view_name` | string | `'StyleView'` | | `description_width` | string | `''` | Width of the description to the side of the control. | | `font_family` | `null` or string | `null` | Toggle button text font family. | | `font_size` | `null` or string | `null` | Toggle button text font size. | | `font_style` | `null` or string | `null` | Toggle button text font style. | | `font_variant` | `null` or string | `null` | Toggle button text font variant. | | `font_weight` | `null` or string | `null` | Toggle button text font weight. | | `text_color` | `null` or string | `null` | Toggle button text color | | `text_decoration` | `null` or string | `null` | Toggle button text decoration. | ### ToggleButtonsModel (@jupyter-widgets/controls, 2.0.0); ToggleButtonsView (@jupyter-widgets/controls, 2.0.0) | Attribute | Type | Default | Help | | ------------------------ | ------------------------------------------------------------------------------------------- | ----------------------------- | ----------------------------------------------------------------------- | | `_dom_classes` | array of string | `[]` | CSS classes applied to widget DOM element | | `_model_module` | string | `'@jupyter-widgets/controls'` | | `_model_module_version` | string | `'2.0.0'` | | `_model_name` | string | `'ToggleButtonsModel'` | | `_options_labels` | array of string | `[]` | The labels for the options. | | `_view_module` | string | `'@jupyter-widgets/controls'` | | `_view_module_version` | string | `'2.0.0'` | | `_view_name` | string | `'ToggleButtonsView'` | | `button_style` | `null` or string (one of `'primary'`, `'success'`, `'info'`, `'warning'`, `'danger'`, `''`) | `''` | Use a predefined styling for the buttons. | | `description` | string | `''` | Description of the control. | | `description_allow_html` | boolean | `false` | Accept HTML in the description. | | `disabled` | boolean | `false` | Enable or disable user changes | | `icons` | array of string | `[]` | Icons names for each button (FontAwesome names without the fa- prefix). | | `index` | `null` or number (integer) | `null` | Selected index | | `layout` | reference to Layout widget | reference to new instance | | `style` | reference to ToggleButtonsStyle widget | reference to new instance | | `tabbable` | `null` or boolean | `null` | Is widget tabbable? | | `tooltip` | `null` or string | `null` | A tooltip caption. | | `tooltips` | array of string | `[]` | Tooltips for each button. | ### ToggleButtonsStyleModel (@jupyter-widgets/controls, 2.0.0); StyleView (@jupyter-widgets/base, 2.0.0) | Attribute | Type | Default | Help | | ----------------------- | ------ | ----------------------------- | ---------------------------------------------------- | | `_model_module` | string | `'@jupyter-widgets/controls'` | | `_model_module_version` | string | `'2.0.0'` | | `_model_name` | string | `'ToggleButtonsStyleModel'` | | `_view_module` | string | `'@jupyter-widgets/base'` | | `_view_module_version` | string | `'2.0.0'` | | `_view_name` | string | `'StyleView'` | | `button_width` | string | `''` | The width of each button. | | `description_width` | string | `''` | Width of the description to the side of the control. | | `font_weight` | string | `''` | Text font weight of each button. | ### VBoxModel (@jupyter-widgets/controls, 2.0.0); VBoxView (@jupyter-widgets/controls, 2.0.0) | Attribute | Type | Default | Help | | ----------------------- | -------------------------------------------------------------------- | ----------------------------- | ----------------------------------------- | | `_dom_classes` | array of string | `[]` | CSS classes applied to widget DOM element | | `_model_module` | string | `'@jupyter-widgets/controls'` | | `_model_module_version` | string | `'2.0.0'` | | `_model_name` | string | `'VBoxModel'` | | `_view_module` | string | `'@jupyter-widgets/controls'` | | `_view_module_version` | string | `'2.0.0'` | | `_view_name` | string | `'VBoxView'` | | `box_style` | string (one of `'success'`, `'info'`, `'warning'`, `'danger'`, `''`) | `''` | Use a predefined styling for the box. | | `children` | array of reference to Widget widget | `[]` | List of widget children | | `layout` | reference to Layout widget | reference to new instance | | `tabbable` | `null` or boolean | `null` | Is widget tabbable? | | `tooltip` | `null` or string | `null` | A tooltip caption. | ### ValidModel (@jupyter-widgets/controls, 2.0.0); ValidView (@jupyter-widgets/controls, 2.0.0) | Attribute | Type | Default | Help | | ------------------------ | ------------------------------------ | ----------------------------- | ----------------------------------------- | | `_dom_classes` | array of string | `[]` | CSS classes applied to widget DOM element | | `_model_module` | string | `'@jupyter-widgets/controls'` | | `_model_module_version` | string | `'2.0.0'` | | `_model_name` | string | `'ValidModel'` | | `_view_module` | string | `'@jupyter-widgets/controls'` | | `_view_module_version` | string | `'2.0.0'` | | `_view_name` | string | `'ValidView'` | | `description` | string | `''` | Description of the control. | | `description_allow_html` | boolean | `false` | Accept HTML in the description. | | `disabled` | boolean | `false` | Enable or disable user changes. | | `layout` | reference to Layout widget | reference to new instance | | `readout` | string | `'Invalid'` | Message displayed when the value is False | | `style` | reference to DescriptionStyle widget | reference to new instance | Styling customizations | | `tabbable` | `null` or boolean | `null` | Is widget tabbable? | | `tooltip` | `null` or string | `null` | A tooltip caption. | | `value` | boolean | `false` | Bool value | ### VideoModel (@jupyter-widgets/controls, 2.0.0); VideoView (@jupyter-widgets/controls, 2.0.0) | Attribute | Type | Default | Help | | ----------------------- | -------------------------- | ----------------------------- | ----------------------------------------------------------------------------------- | | `_dom_classes` | array of string | `[]` | CSS classes applied to widget DOM element | | `_model_module` | string | `'@jupyter-widgets/controls'` | | `_model_module_version` | string | `'2.0.0'` | | `_model_name` | string | `'VideoModel'` | | `_view_module` | string | `'@jupyter-widgets/controls'` | | `_view_module_version` | string | `'2.0.0'` | | `_view_name` | string | `'VideoView'` | | `autoplay` | boolean | `true` | When true, the video starts when it's displayed | | `controls` | boolean | `true` | Specifies that video controls should be displayed (such as a play/pause button etc) | | `format` | string | `'mp4'` | The format of the video. | | `height` | string | `''` | Height of the video in pixels. | | `layout` | reference to Layout widget | reference to new instance | | `loop` | boolean | `true` | When true, the video will start from the beginning after finishing | | `tabbable` | `null` or boolean | `null` | Is widget tabbable? | | `tooltip` | `null` or string | `null` | A tooltip caption. | | `value` | Bytes | `b''` | The media data as a memory view of bytes. | | `width` | string | `''` | Width of the video in pixels. | ### OutputModel (@jupyter-widgets/output, 1.0.0); OutputView (@jupyter-widgets/output, 1.0.0) | Attribute | Type | Default | Help | | ----------------------- | -------------------------- | --------------------------- | --------------------------------------------- | | `_dom_classes` | array of string | `[]` | CSS classes applied to widget DOM element | | `_model_module` | string | `'@jupyter-widgets/output'` | | `_model_module_version` | string | `'1.0.0'` | | `_model_name` | string | `'OutputModel'` | | `_view_module` | string | `'@jupyter-widgets/output'` | | `_view_module_version` | string | `'1.0.0'` | | `_view_name` | string | `'OutputView'` | | `layout` | reference to Layout widget | reference to new instance | | `msg_id` | string | `''` | Parent message id of messages to capture | | `outputs` | array of object | `[]` | The output messages synced from the frontend. | | `tabbable` | `null` or boolean | `null` | Is widget tabbable? | | `tooltip` | `null` or string | `null` | A tooltip caption. | ipywidgets-8.1.1/packages/schema/jupyterwidgetmodels.v6.md000066400000000000000000003300601450026722000237150ustar00rootroot00000000000000# Model State This is a description of the model state for each widget in the core Jupyter widgets library. The model ID of a widget is the id of the comm object the widget is using. A reference to a widget is serialized to JSON as a string of the form `"IPY_MODEL_"`, where `` is the model ID of a previously created widget of the specified type. This model specification is for ipywidgets 6.0 and jupyter-js-widgets 2.1.0. ## Model attributes Each widget in the Jupyter core widgets is represented below. The heading represents the string the widget is registered with in the kernel. ### Jupyter.Accordion | Attribute | Type | Default | Help | | ----------------------- | -------------------------------------------------------------------- | ------------------------- | --------------------------------------------------------------------------------------------- | | `_dom_classes` | array | `[]` | CSS classes applied to widget DOM element | | `_model_module` | string | `'jupyter-js-widgets'` | | `_model_module_version` | string | `'~2.1.0'` | | `_model_name` | string | `'AccordionModel'` | | `_titles` | object | `{}` | Titles of the pages | | `_view_module` | string | `'jupyter-js-widgets'` | | `_view_module_version` | string | `'~2.1.0'` | | `_view_name` | string | `'AccordionView'` | | `box_style` | string (one of `'success'`, `'info'`, `'warning'`, `'danger'`, `''`) | `''` | Use a predefined styling for the box. | | `children` | array | `[]` | | `layout` | reference to Layout widget | reference to new instance | | `msg_throttle` | number (integer) | `1` | Maximum number of msgs the front-end can send before receiving an idle msg from the back-end. | | `selected_index` | number (integer) | `0` | ### Jupyter.BoundedFloatText | Attribute | Type | Default | Help | | ----------------------- | -------------------------- | ------------------------- | --------------------------------------------------------------------------------------------- | | `_dom_classes` | array | `[]` | CSS classes applied to widget DOM element | | `_model_module` | string | `'jupyter-js-widgets'` | | `_model_module_version` | string | `'~2.1.0'` | | `_model_name` | string | `'FloatTextModel'` | | `_view_module` | string | `'jupyter-js-widgets'` | | `_view_module_version` | string | `'~2.1.0'` | | `_view_name` | string | `'FloatTextView'` | | `description` | string | `''` | Description of the control. | | `disabled` | boolean | `false` | Enable or disable user changes | | `layout` | reference to Layout widget | reference to new instance | | `max` | number (float) | `100.0` | Max value | | `min` | number (float) | `0.0` | Min value | | `msg_throttle` | number (integer) | `1` | Maximum number of msgs the front-end can send before receiving an idle msg from the back-end. | | `step` | number (float) | `0.1` | Minimum step to increment the value (ignored by some views) | | `value` | number (float) | `0.0` | Float value | ### Jupyter.BoundedIntText | Attribute | Type | Default | Help | | ----------------------- | -------------------------- | ------------------------- | --------------------------------------------------------------------------------------------- | | `_dom_classes` | array | `[]` | CSS classes applied to widget DOM element | | `_model_module` | string | `'jupyter-js-widgets'` | | `_model_module_version` | string | `'~2.1.0'` | | `_model_name` | string | `'IntTextModel'` | | `_view_module` | string | `'jupyter-js-widgets'` | | `_view_module_version` | string | `'~2.1.0'` | | `_view_name` | string | `'IntTextView'` | | `description` | string | `''` | Description of the control. | | `disabled` | boolean | `false` | Enable or disable user changes | | `layout` | reference to Layout widget | reference to new instance | | `max` | number (integer) | `100` | Max value | | `min` | number (integer) | `0` | Min value | | `msg_throttle` | number (integer) | `1` | Maximum number of msgs the front-end can send before receiving an idle msg from the back-end. | | `step` | number (integer) | `1` | Minimum step to increment the value (ignored by some views) | | `value` | number (integer) | `0` | Int value | ### Jupyter.Box | Attribute | Type | Default | Help | | ----------------------- | -------------------------------------------------------------------- | ------------------------- | --------------------------------------------------------------------------------------------- | | `_dom_classes` | array | `[]` | CSS classes applied to widget DOM element | | `_model_module` | string | `'jupyter-js-widgets'` | | `_model_module_version` | string | `'~2.1.0'` | | `_model_name` | string | `'BoxModel'` | | `_view_module` | string | `'jupyter-js-widgets'` | | `_view_module_version` | string | `'~2.1.0'` | | `_view_name` | string | `'BoxView'` | | `box_style` | string (one of `'success'`, `'info'`, `'warning'`, `'danger'`, `''`) | `''` | Use a predefined styling for the box. | | `children` | array | `[]` | | `layout` | reference to Layout widget | reference to new instance | | `msg_throttle` | number (integer) | `1` | Maximum number of msgs the front-end can send before receiving an idle msg from the back-end. | ### Jupyter.Button | Attribute | Type | Default | Help | | ----------------------- | --------------------------------------------------------------------------------- | ------------------------- | --------------------------------------------------------------------------------------------- | | `_dom_classes` | array | `[]` | CSS classes applied to widget DOM element | | `_model_module` | string | `'jupyter-js-widgets'` | | `_model_module_version` | string | `'~2.1.0'` | | `_model_name` | string | `'ButtonModel'` | | `_view_module` | string | `'jupyter-js-widgets'` | | `_view_module_version` | string | `'~2.1.0'` | | `_view_name` | string | `'ButtonView'` | | `button_style` | string (one of `'primary'`, `'success'`, `'info'`, `'warning'`, `'danger'`, `''`) | `''` | Use a predefined styling for the button. | | `description` | string | `''` | Button label. | | `disabled` | boolean | `false` | Enable or disable user changes. | | `icon` | string | `''` | Font-awesome icon name, without the 'fa-' prefix. | | `layout` | reference to Layout widget | reference to new instance | | `msg_throttle` | number (integer) | `1` | Maximum number of msgs the front-end can send before receiving an idle msg from the back-end. | | `style` | reference to ButtonStyle widget | reference to new instance | | `tooltip` | string | `''` | Tooltip caption of the button. | ### Jupyter.ButtonStyle | Attribute | Type | Default | Help | | ----------------------- | ---------------- | ---------------------- | --------------------------------------------------------------------------------------------- | | `_model_module` | string | `'jupyter-js-widgets'` | | `_model_module_version` | string | `'~2.1.0'` | | `_model_name` | string | `'ButtonStyleModel'` | | `_view_module` | string | `'jupyter-js-widgets'` | | `_view_module_version` | string | `'~2.1.0'` | | `_view_name` | string | `'StyleView'` | | `button_color` | `null` or string | `null` | Color of the button | | `font_weight` | string | `''` | | `msg_throttle` | number (integer) | `1` | Maximum number of msgs the front-end can send before receiving an idle msg from the back-end. | ### Jupyter.Checkbox | Attribute | Type | Default | Help | | ----------------------- | -------------------------- | ------------------------- | --------------------------------------------------------------------------------------------- | | `_dom_classes` | array | `[]` | CSS classes applied to widget DOM element | | `_model_module` | string | `'jupyter-js-widgets'` | | `_model_module_version` | string | `'~2.1.0'` | | `_model_name` | string | `'CheckboxModel'` | | `_view_module` | string | `'jupyter-js-widgets'` | | `_view_module_version` | string | `'~2.1.0'` | | `_view_name` | string | `'CheckboxView'` | | `description` | string | `''` | Description of the control. | | `disabled` | boolean | `false` | Enable or disable user changes. | | `layout` | reference to Layout widget | reference to new instance | | `msg_throttle` | number (integer) | `1` | Maximum number of msgs the front-end can send before receiving an idle msg from the back-end. | | `value` | boolean | `false` | Bool value | ### Jupyter.ColorPicker | Attribute | Type | Default | Help | | ----------------------- | -------------------------- | ------------------------- | --------------------------------------------------------------------------------------------- | | `_dom_classes` | array | `[]` | CSS classes applied to widget DOM element | | `_model_module` | string | `'jupyter-js-widgets'` | | `_model_module_version` | string | `'~2.1.0'` | | `_model_name` | string | `'ColorPickerModel'` | | `_view_module` | string | `'jupyter-js-widgets'` | | `_view_module_version` | string | `'~2.1.0'` | | `_view_name` | string | `'ColorPickerView'` | | `concise` | boolean | `false` | | `description` | string | `''` | Description of the control. | | `layout` | reference to Layout widget | reference to new instance | | `msg_throttle` | number (integer) | `1` | Maximum number of msgs the front-end can send before receiving an idle msg from the back-end. | | `value` | string | `'black'` | ### Jupyter.Controller | Attribute | Type | Default | Help | | ----------------------- | -------------------------- | ------------------------- | --------------------------------------------------------------------------------------------- | | `_dom_classes` | array | `[]` | CSS classes applied to widget DOM element | | `_model_module` | string | `'jupyter-js-widgets'` | | `_model_module_version` | string | `'~2.1.0'` | | `_model_name` | string | `'ControllerModel'` | | `_view_module` | string | `'jupyter-js-widgets'` | | `_view_module_version` | string | `'~2.1.0'` | | `_view_name` | string | `'ControllerView'` | | `axes` | array | `[]` | | `buttons` | array | `[]` | | `connected` | boolean | `false` | | `index` | number (integer) | `0` | | `layout` | reference to Layout widget | reference to new instance | | `mapping` | string | `''` | | `msg_throttle` | number (integer) | `1` | Maximum number of msgs the front-end can send before receiving an idle msg from the back-end. | | `name` | string | `''` | | `timestamp` | number (float) | `0.0` | ### Jupyter.ControllerAxis | Attribute | Type | Default | Help | | ----------------------- | ---------------- | ----------------------- | --------------------------------------------------------------------------------------------- | | `_model_module` | string | `'jupyter-js-widgets'` | | `_model_module_version` | string | `'~2.1.0'` | | `_model_name` | string | `'ControllerAxisModel'` | | `_view_module` | string | `'jupyter-js-widgets'` | | `_view_module_version` | string | `'~2.1.0'` | | `_view_name` | string | `'ControllerAxisView'` | | `msg_throttle` | number (integer) | `1` | Maximum number of msgs the front-end can send before receiving an idle msg from the back-end. | | `value` | number (float) | `0.0` | ### Jupyter.ControllerButton | Attribute | Type | Default | Help | | ----------------------- | ---------------- | ------------------------- | --------------------------------------------------------------------------------------------- | | `_model_module` | string | `'jupyter-js-widgets'` | | `_model_module_version` | string | `'~2.1.0'` | | `_model_name` | string | `'ControllerButtonModel'` | | `_view_module` | string | `'jupyter-js-widgets'` | | `_view_module_version` | string | `'~2.1.0'` | | `_view_name` | string | `'ControllerButtonView'` | | `msg_throttle` | number (integer) | `1` | Maximum number of msgs the front-end can send before receiving an idle msg from the back-end. | | `pressed` | boolean | `false` | | `value` | number (float) | `0.0` | ### Jupyter.DatePicker | Attribute | Type | Default | Help | | ----------------------- | -------------------------- | ------------------------- | --------------------------------------------------------------------------------------------- | | `_dom_classes` | array | `[]` | CSS classes applied to widget DOM element | | `_model_module` | string | `'jupyter-js-widgets'` | | `_model_module_version` | string | `'~2.1.0'` | | `_model_name` | string | `'DatePickerModel'` | | `_view_module` | string | `'jupyter-js-widgets'` | | `_view_module_version` | string | `'~2.1.0'` | | `_view_name` | string | `'DatePickerView'` | | `description` | string | `''` | Description of the control. | | `layout` | reference to Layout widget | reference to new instance | | `msg_throttle` | number (integer) | `1` | Maximum number of msgs the front-end can send before receiving an idle msg from the back-end. | | `value` | `null` or Datetime | `null` | ### Jupyter.Dropdown | Attribute | Type | Default | Help | | ----------------------- | --------------------------- | ------------------------- | --------------------------------------------------------------------------------------------- | | `_dom_classes` | array | `[]` | CSS classes applied to widget DOM element | | `_model_module` | string | `'jupyter-js-widgets'` | | `_model_module_version` | string | `'~2.1.0'` | | `_model_name` | string | `'DropdownModel'` | | `_options_labels` | array | `[]` | | `_view_module` | string | `'jupyter-js-widgets'` | | `_view_module_version` | string | `'~2.1.0'` | | `_view_name` | string | `'DropdownView'` | | `description` | string | `''` | Description of the control. | | `disabled` | boolean | `false` | Enable or disable user changes | | `layout` | reference to Layout widget | reference to new instance | | `msg_throttle` | number (integer) | `1` | Maximum number of msgs the front-end can send before receiving an idle msg from the back-end. | | `value` | string (valid option label) | `null` | Selected value | ### Jupyter.FloatProgress | Attribute | Type | Default | Help | | ----------------------- | ------------------------------------------------------------------------------ | ------------------------- | --------------------------------------------------------------------------------------------- | | `_dom_classes` | array | `[]` | CSS classes applied to widget DOM element | | `_model_module` | string | `'jupyter-js-widgets'` | | `_model_module_version` | string | `'~2.1.0'` | | `_model_name` | string | `'ProgressModel'` | | `_view_module` | string | `'jupyter-js-widgets'` | | `_view_module_version` | string | `'~2.1.0'` | | `_view_name` | string | `'ProgressView'` | | `bar_style` | `null` or string (one of `'success'`, `'info'`, `'warning'`, `'danger'`, `''`) | `''` | Use a predefined styling for the progress bar. | | `description` | string | `''` | Description of the control. | | `disabled` | boolean | `false` | Enable or disable user changes | | `layout` | reference to Layout widget | reference to new instance | | `max` | number (float) | `100.0` | Max value | | `min` | number (float) | `0.0` | Min value | | `msg_throttle` | number (integer) | `1` | Maximum number of msgs the front-end can send before receiving an idle msg from the back-end. | | `orientation` | string (one of `'horizontal'`, `'vertical'`) | `'horizontal'` | Vertical or horizontal. | | `step` | number (float) | `0.1` | Minimum step to increment the value (ignored by some views) | | `style` | reference to ProgressStyle widget | reference to new instance | | `value` | number (float) | `0.0` | Float value | ### Jupyter.FloatRangeSlider | Attribute | Type | Default | Help | | ----------------------- | -------------------------------------------- | ------------------------- | --------------------------------------------------------------------------------------------- | | `_dom_classes` | array | `[]` | CSS classes applied to widget DOM element | | `_model_module` | string | `'jupyter-js-widgets'` | | `_model_module_version` | string | `'~2.1.0'` | | `_model_name` | string | `'FloatSliderModel'` | | `_range` | boolean | `true` | Display a range selector | | `_view_module` | string | `'jupyter-js-widgets'` | | `_view_module_version` | string | `'~2.1.0'` | | `_view_name` | string | `'FloatSliderView'` | | `continuous_update` | boolean | `true` | Update the value of the widget as the user is sliding the slider. | | `description` | string | `''` | Description of the control. | | `disabled` | boolean | `false` | Enable or disable user changes | | `layout` | reference to Layout widget | reference to new instance | | `max` | number (float) | `100.0` | Max value | | `min` | number (float) | `0.0` | Min value | | `msg_throttle` | number (integer) | `1` | Maximum number of msgs the front-end can send before receiving an idle msg from the back-end. | | `orientation` | string (one of `'horizontal'`, `'vertical'`) | `'horizontal'` | Vertical or horizontal. | | `readout` | boolean | `true` | Display the current value of the slider next to it. | | `slider_color` | `null` or string | `null` | | `step` | number (float) | `1.0` | Minimum step that the value can take (ignored by some views) | | `value` | array | `[0.0, 1.0]` | Tuple of (lower, upper) bounds | ### Jupyter.FloatSlider | Attribute | Type | Default | Help | | ----------------------- | -------------------------------------------- | ------------------------- | --------------------------------------------------------------------------------------------- | | `_dom_classes` | array | `[]` | CSS classes applied to widget DOM element | | `_model_module` | string | `'jupyter-js-widgets'` | | `_model_module_version` | string | `'~2.1.0'` | | `_model_name` | string | `'FloatSliderModel'` | | `_range` | boolean | `false` | Display a range selector | | `_view_module` | string | `'jupyter-js-widgets'` | | `_view_module_version` | string | `'~2.1.0'` | | `_view_name` | string | `'FloatSliderView'` | | `continuous_update` | boolean | `true` | Update the value of the widget as the user is holding the slider. | | `description` | string | `''` | Description of the control. | | `disabled` | boolean | `false` | Enable or disable user changes | | `layout` | reference to Layout widget | reference to new instance | | `max` | number (float) | `100.0` | Max value | | `min` | number (float) | `0.0` | Min value | | `msg_throttle` | number (integer) | `1` | Maximum number of msgs the front-end can send before receiving an idle msg from the back-end. | | `orientation` | string (one of `'horizontal'`, `'vertical'`) | `'horizontal'` | Vertical or horizontal. | | `readout` | boolean | `true` | Display the current value of the slider next to it. | | `readout_format` | string | `'.2f'` | Format for the readout | | `slider_color` | `null` or string | `null` | | `step` | number (float) | `0.1` | Minimum step to increment the value (ignored by some views) | | `value` | number (float) | `0.0` | Float value | ### Jupyter.FloatText | Attribute | Type | Default | Help | | ----------------------- | -------------------------- | ------------------------- | --------------------------------------------------------------------------------------------- | | `_dom_classes` | array | `[]` | CSS classes applied to widget DOM element | | `_model_module` | string | `'jupyter-js-widgets'` | | `_model_module_version` | string | `'~2.1.0'` | | `_model_name` | string | `'FloatTextModel'` | | `_view_module` | string | `'jupyter-js-widgets'` | | `_view_module_version` | string | `'~2.1.0'` | | `_view_name` | string | `'FloatTextView'` | | `description` | string | `''` | Description of the control. | | `disabled` | boolean | `false` | Enable or disable user changes | | `layout` | reference to Layout widget | reference to new instance | | `msg_throttle` | number (integer) | `1` | Maximum number of msgs the front-end can send before receiving an idle msg from the back-end. | | `value` | number (float) | `0.0` | Float value | ### Jupyter.HBox | Attribute | Type | Default | Help | | ----------------------- | -------------------------------------------------------------------- | ------------------------- | --------------------------------------------------------------------------------------------- | | `_dom_classes` | array | `[]` | CSS classes applied to widget DOM element | | `_model_module` | string | `'jupyter-js-widgets'` | | `_model_module_version` | string | `'~2.1.0'` | | `_model_name` | string | `'HBoxModel'` | | `_view_module` | string | `'jupyter-js-widgets'` | | `_view_module_version` | string | `'~2.1.0'` | | `_view_name` | string | `'HBoxView'` | | `box_style` | string (one of `'success'`, `'info'`, `'warning'`, `'danger'`, `''`) | `''` | Use a predefined styling for the box. | | `children` | array | `[]` | | `layout` | reference to Layout widget | reference to new instance | | `msg_throttle` | number (integer) | `1` | Maximum number of msgs the front-end can send before receiving an idle msg from the back-end. | ### Jupyter.HTML | Attribute | Type | Default | Help | | ----------------------- | -------------------------- | ------------------------- | --------------------------------------------------------------------------------------------- | | `_dom_classes` | array | `[]` | CSS classes applied to widget DOM element | | `_model_module` | string | `'jupyter-js-widgets'` | | `_model_module_version` | string | `'~2.1.0'` | | `_model_name` | string | `'HTMLModel'` | | `_view_module` | string | `'jupyter-js-widgets'` | | `_view_module_version` | string | `'~2.1.0'` | | `_view_name` | string | `'HTMLView'` | | `description` | string | `''` | Description of the control. | | `disabled` | boolean | `false` | Enable or disable user changes | | `layout` | reference to Layout widget | reference to new instance | | `msg_throttle` | number (integer) | `1` | Maximum number of msgs the front-end can send before receiving an idle msg from the back-end. | | `placeholder` | string | `'\u200b'` | Placeholder text to display when nothing has been typed | | `value` | string | `''` | String value | ### Jupyter.HTMLMath | Attribute | Type | Default | Help | | ----------------------- | -------------------------- | ------------------------- | --------------------------------------------------------------------------------------------- | | `_dom_classes` | array | `[]` | CSS classes applied to widget DOM element | | `_model_module` | string | `'jupyter-js-widgets'` | | `_model_module_version` | string | `'~2.1.0'` | | `_model_name` | string | `'HTMLMathModel'` | | `_view_module` | string | `'jupyter-js-widgets'` | | `_view_module_version` | string | `'~2.1.0'` | | `_view_name` | string | `'HTMLMathView'` | | `description` | string | `''` | Description of the control. | | `disabled` | boolean | `false` | Enable or disable user changes | | `layout` | reference to Layout widget | reference to new instance | | `msg_throttle` | number (integer) | `1` | Maximum number of msgs the front-end can send before receiving an idle msg from the back-end. | | `placeholder` | string | `'\u200b'` | Placeholder text to display when nothing has been typed | | `value` | string | `''` | String value | ### Jupyter.Image | Attribute | Type | Default | Help | | ----------------------- | -------------------------- | ------------------------- | --------------------------------------------------------------------------------------------- | | `_b64value` | string | `''` | | `_dom_classes` | array | `[]` | CSS classes applied to widget DOM element | | `_model_module` | string | `'jupyter-js-widgets'` | | `_model_module_version` | string | `'~2.1.0'` | | `_model_name` | string | `'ImageModel'` | | `_view_module` | string | `'jupyter-js-widgets'` | | `_view_module_version` | string | `'~2.1.0'` | | `_view_name` | string | `'ImageView'` | | `format` | string | `'png'` | | `height` | string | `''` | | `layout` | reference to Layout widget | reference to new instance | | `msg_throttle` | number (integer) | `1` | Maximum number of msgs the front-end can send before receiving an idle msg from the back-end. | | `width` | string | `''` | ### Jupyter.IntProgress | Attribute | Type | Default | Help | | ----------------------- | -------------------------------------------------------------------- | ------------------------- | --------------------------------------------------------------------------------------------- | | `_dom_classes` | array | `[]` | CSS classes applied to widget DOM element | | `_model_module` | string | `'jupyter-js-widgets'` | | `_model_module_version` | string | `'~2.1.0'` | | `_model_name` | string | `'ProgressModel'` | | `_view_module` | string | `'jupyter-js-widgets'` | | `_view_module_version` | string | `'~2.1.0'` | | `_view_name` | string | `'ProgressView'` | | `bar_style` | string (one of `'success'`, `'info'`, `'warning'`, `'danger'`, `''`) | `''` | Use a predefined styling for the progress bar. | | `description` | string | `''` | Description of the control. | | `disabled` | boolean | `false` | Enable or disable user changes | | `layout` | reference to Layout widget | reference to new instance | | `max` | number (integer) | `100` | Max value | | `min` | number (integer) | `0` | Min value | | `msg_throttle` | number (integer) | `1` | Maximum number of msgs the front-end can send before receiving an idle msg from the back-end. | | `orientation` | string (one of `'horizontal'`, `'vertical'`) | `'horizontal'` | Vertical or horizontal. | | `step` | number (integer) | `1` | Minimum step to increment the value (ignored by some views) | | `style` | reference to ProgressStyle widget | reference to new instance | | `value` | number (integer) | `0` | Int value | ### Jupyter.IntRangeSlider | Attribute | Type | Default | Help | | ----------------------- | -------------------------------------------- | ------------------------- | --------------------------------------------------------------------------------------------- | | `_dom_classes` | array | `[]` | CSS classes applied to widget DOM element | | `_model_module` | string | `'jupyter-js-widgets'` | | `_model_module_version` | string | `'~2.1.0'` | | `_model_name` | string | `'IntSliderModel'` | | `_range` | boolean | `true` | Display a range selector | | `_view_module` | string | `'jupyter-js-widgets'` | | `_view_module_version` | string | `'~2.1.0'` | | `_view_name` | string | `'IntSliderView'` | | `continuous_update` | boolean | `true` | Update the value of the widget as the user is sliding the slider. | | `description` | string | `''` | Description of the control. | | `disabled` | boolean | `false` | Enable or disable user changes | | `layout` | reference to Layout widget | reference to new instance | | `max` | number (integer) | `100` | Max value | | `min` | number (integer) | `0` | Min value | | `msg_throttle` | number (integer) | `1` | Maximum number of msgs the front-end can send before receiving an idle msg from the back-end. | | `orientation` | string (one of `'horizontal'`, `'vertical'`) | `'horizontal'` | Vertical or horizontal. | | `readout` | boolean | `true` | Display the current value of the slider next to it. | | `slider_color` | `null` or string | `null` | | `step` | number (integer) | `1` | Minimum step that the value can take (ignored by some views) | | `value` | array | `[0, 1]` | Tuple of (lower, upper) bounds | ### Jupyter.IntSlider | Attribute | Type | Default | Help | | ----------------------- | -------------------------------------------- | ------------------------- | --------------------------------------------------------------------------------------------- | | `_dom_classes` | array | `[]` | CSS classes applied to widget DOM element | | `_model_module` | string | `'jupyter-js-widgets'` | | `_model_module_version` | string | `'~2.1.0'` | | `_model_name` | string | `'IntSliderModel'` | | `_range` | boolean | `false` | Display a range selector | | `_view_module` | string | `'jupyter-js-widgets'` | | `_view_module_version` | string | `'~2.1.0'` | | `_view_name` | string | `'IntSliderView'` | | `continuous_update` | boolean | `true` | Update the value of the widget as the user is holding the slider. | | `description` | string | `''` | Description of the control. | | `disabled` | boolean | `false` | Enable or disable user changes | | `layout` | reference to Layout widget | reference to new instance | | `max` | number (integer) | `100` | Max value | | `min` | number (integer) | `0` | Min value | | `msg_throttle` | number (integer) | `1` | Maximum number of msgs the front-end can send before receiving an idle msg from the back-end. | | `orientation` | string (one of `'horizontal'`, `'vertical'`) | `'horizontal'` | Vertical or horizontal. | | `readout` | boolean | `true` | Display the current value of the slider next to it. | | `readout_format` | string | `'d'` | Format for the readout | | `step` | number (integer) | `1` | Minimum step to increment the value (ignored by some views) | | `style` | reference to SliderStyle widget | reference to new instance | | `value` | number (integer) | `0` | Int value | ### Jupyter.IntText | Attribute | Type | Default | Help | | ----------------------- | -------------------------- | ------------------------- | --------------------------------------------------------------------------------------------- | | `_dom_classes` | array | `[]` | CSS classes applied to widget DOM element | | `_model_module` | string | `'jupyter-js-widgets'` | | `_model_module_version` | string | `'~2.1.0'` | | `_model_name` | string | `'IntTextModel'` | | `_view_module` | string | `'jupyter-js-widgets'` | | `_view_module_version` | string | `'~2.1.0'` | | `_view_name` | string | `'IntTextView'` | | `description` | string | `''` | Description of the control. | | `disabled` | boolean | `false` | Enable or disable user changes | | `layout` | reference to Layout widget | reference to new instance | | `msg_throttle` | number (integer) | `1` | Maximum number of msgs the front-end can send before receiving an idle msg from the back-end. | | `value` | number (integer) | `0` | Int value | ### Jupyter.Label | Attribute | Type | Default | Help | | ----------------------- | -------------------------- | ------------------------- | --------------------------------------------------------------------------------------------- | | `_dom_classes` | array | `[]` | CSS classes applied to widget DOM element | | `_model_module` | string | `'jupyter-js-widgets'` | | `_model_module_version` | string | `'~2.1.0'` | | `_model_name` | string | `'LabelModel'` | | `_view_module` | string | `'jupyter-js-widgets'` | | `_view_module_version` | string | `'~2.1.0'` | | `_view_name` | string | `'LabelView'` | | `description` | string | `''` | Description of the control. | | `disabled` | boolean | `false` | Enable or disable user changes | | `layout` | reference to Layout widget | reference to new instance | | `msg_throttle` | number (integer) | `1` | Maximum number of msgs the front-end can send before receiving an idle msg from the back-end. | | `placeholder` | string | `'\u200b'` | Placeholder text to display when nothing has been typed | | `value` | string | `''` | String value | ### Jupyter.Play | Attribute | Type | Default | Help | | ----------------------- | -------------------------- | ------------------------- | --------------------------------------------------------------------------------------------- | | `_dom_classes` | array | `[]` | CSS classes applied to widget DOM element | | `_model_module` | string | `'jupyter-js-widgets'` | | `_model_module_version` | string | `'~2.1.0'` | | `_model_name` | string | `'PlayModel'` | | `_playing` | boolean | `false` | | `_view_module` | string | `'jupyter-js-widgets'` | | `_view_module_version` | string | `'~2.1.0'` | | `_view_name` | string | `'PlayView'` | | `description` | string | `''` | Description of the control. | | `disabled` | boolean | `false` | Enable or disable user changes | | `interval` | number (integer) | `100` | | `layout` | reference to Layout widget | reference to new instance | | `max` | number (integer) | `100` | Max value | | `min` | number (integer) | `0` | Min value | | `msg_throttle` | number (integer) | `1` | Maximum number of msgs the front-end can send before receiving an idle msg from the back-end. | | `step` | number (integer) | `1` | Minimum step to increment the value (ignored by some views) | | `value` | number (integer) | `0` | Int value | ### Jupyter.ProgressStyle | Attribute | Type | Default | Help | | ----------------------- | ---------------- | ---------------------- | --------------------------------------------------------------------------------------------- | | `_model_module` | string | `'jupyter-js-widgets'` | | `_model_module_version` | string | `'~2.1.0'` | | `_model_name` | string | `'ProgressStyleModel'` | | `_view_module` | string | `'jupyter-js-widgets'` | | `_view_module_version` | string | `'~2.1.0'` | | `_view_name` | string | `'StyleView'` | | `bar_color` | `null` or string | `null` | | `msg_throttle` | number (integer) | `1` | Maximum number of msgs the front-end can send before receiving an idle msg from the back-end. | ### Jupyter.RadioButtons | Attribute | Type | Default | Help | | ----------------------- | --------------------------- | ------------------------- | --------------------------------------------------------------------------------------------- | | `_dom_classes` | array | `[]` | CSS classes applied to widget DOM element | | `_model_module` | string | `'jupyter-js-widgets'` | | `_model_module_version` | string | `'~2.1.0'` | | `_model_name` | string | `'RadioButtonsModel'` | | `_options_labels` | array | `[]` | | `_view_module` | string | `'jupyter-js-widgets'` | | `_view_module_version` | string | `'~2.1.0'` | | `_view_name` | string | `'RadioButtonsView'` | | `description` | string | `''` | Description of the control. | | `disabled` | boolean | `false` | Enable or disable user changes | | `layout` | reference to Layout widget | reference to new instance | | `msg_throttle` | number (integer) | `1` | Maximum number of msgs the front-end can send before receiving an idle msg from the back-end. | | `value` | string (valid option label) | `null` | Selected value | ### Jupyter.Select | Attribute | Type | Default | Help | | ----------------------- | --------------------------- | ------------------------- | --------------------------------------------------------------------------------------------- | | `_dom_classes` | array | `[]` | CSS classes applied to widget DOM element | | `_model_module` | string | `'jupyter-js-widgets'` | | `_model_module_version` | string | `'~2.1.0'` | | `_model_name` | string | `'SelectModel'` | | `_options_labels` | array | `[]` | | `_view_module` | string | `'jupyter-js-widgets'` | | `_view_module_version` | string | `'~2.1.0'` | | `_view_name` | string | `'SelectView'` | | `description` | string | `''` | Description of the control. | | `disabled` | boolean | `false` | Enable or disable user changes | | `layout` | reference to Layout widget | reference to new instance | | `msg_throttle` | number (integer) | `1` | Maximum number of msgs the front-end can send before receiving an idle msg from the back-end. | | `value` | string (valid option label) | `null` | Selected value | ### Jupyter.SelectMultiple | Attribute | Type | Default | Help | | ----------------------- | -------------------------- | ------------------------- | --------------------------------------------------------------------------------------------- | | `_dom_classes` | array | `[]` | CSS classes applied to widget DOM element | | `_model_module` | string | `'jupyter-js-widgets'` | | `_model_module_version` | string | `'~2.1.0'` | | `_model_name` | string | `'SelectMultipleModel'` | | `_options_labels` | array | `[]` | | `_view_module` | string | `'jupyter-js-widgets'` | | `_view_module_version` | string | `'~2.1.0'` | | `_view_name` | string | `'SelectMultipleView'` | | `description` | string | `''` | Description of the control. | | `disabled` | boolean | `false` | Enable or disable user changes | | `layout` | reference to Layout widget | reference to new instance | | `msg_throttle` | number (integer) | `1` | Maximum number of msgs the front-end can send before receiving an idle msg from the back-end. | | `value` | array | `[]` | Selected values | ### Jupyter.SelectionSlider | Attribute | Type | Default | Help | | ----------------------- | -------------------------------------------- | ------------------------- | --------------------------------------------------------------------------------------------- | | `_dom_classes` | array | `[]` | CSS classes applied to widget DOM element | | `_model_module` | string | `'jupyter-js-widgets'` | | `_model_module_version` | string | `'~2.1.0'` | | `_model_name` | string | `'SelectionSliderModel'` | | `_options_labels` | array | `[]` | | `_view_module` | string | `'jupyter-js-widgets'` | | `_view_module_version` | string | `'~2.1.0'` | | `_view_name` | string | `'SelectionSliderView'` | | `continuous_update` | boolean | `true` | Update the value of the widget as the user is holding the slider. | | `description` | string | `''` | Description of the control. | | `disabled` | boolean | `false` | Enable or disable user changes | | `layout` | reference to Layout widget | reference to new instance | | `msg_throttle` | number (integer) | `1` | Maximum number of msgs the front-end can send before receiving an idle msg from the back-end. | | `orientation` | string (one of `'horizontal'`, `'vertical'`) | `'horizontal'` | Vertical or horizontal. | | `readout` | boolean | `true` | Display the current selected label next to the slider | | `value` | string (valid option label) | `null` | Selected value | ### Jupyter.SliderStyle | Attribute | Type | Default | Help | | ----------------------- | ---------------- | ---------------------- | --------------------------------------------------------------------------------------------- | | `_model_module` | string | `'jupyter-js-widgets'` | | `_model_module_version` | string | `'~2.1.0'` | | `_model_name` | string | `'SliderStyleModel'` | | `_view_module` | string | `'jupyter-js-widgets'` | | `_view_module_version` | string | `'~2.1.0'` | | `_view_name` | string | `'StyleView'` | | `handle_color` | `null` or string | `null` | | `msg_throttle` | number (integer) | `1` | Maximum number of msgs the front-end can send before receiving an idle msg from the back-end. | ### Jupyter.Tab | Attribute | Type | Default | Help | | ----------------------- | -------------------------------------------------------------------- | ------------------------- | --------------------------------------------------------------------------------------------- | | `_dom_classes` | array | `[]` | CSS classes applied to widget DOM element | | `_model_module` | string | `'jupyter-js-widgets'` | | `_model_module_version` | string | `'~2.1.0'` | | `_model_name` | string | `'TabModel'` | | `_titles` | object | `{}` | Titles of the pages | | `_view_module` | string | `'jupyter-js-widgets'` | | `_view_module_version` | string | `'~2.1.0'` | | `_view_name` | string | `'TabView'` | | `box_style` | string (one of `'success'`, `'info'`, `'warning'`, `'danger'`, `''`) | `''` | Use a predefined styling for the box. | | `children` | array | `[]` | | `layout` | reference to Layout widget | reference to new instance | | `msg_throttle` | number (integer) | `1` | Maximum number of msgs the front-end can send before receiving an idle msg from the back-end. | | `selected_index` | number (integer) | `0` | ### Jupyter.Text | Attribute | Type | Default | Help | | ----------------------- | -------------------------- | ------------------------- | --------------------------------------------------------------------------------------------- | | `_dom_classes` | array | `[]` | CSS classes applied to widget DOM element | | `_model_module` | string | `'jupyter-js-widgets'` | | `_model_module_version` | string | `'~2.1.0'` | | `_model_name` | string | `'TextModel'` | | `_view_module` | string | `'jupyter-js-widgets'` | | `_view_module_version` | string | `'~2.1.0'` | | `_view_name` | string | `'TextView'` | | `description` | string | `''` | Description of the control. | | `disabled` | boolean | `false` | Enable or disable user changes | | `layout` | reference to Layout widget | reference to new instance | | `msg_throttle` | number (integer) | `1` | Maximum number of msgs the front-end can send before receiving an idle msg from the back-end. | | `placeholder` | string | `'\u200b'` | Placeholder text to display when nothing has been typed | | `value` | string | `''` | String value | ### Jupyter.Textarea | Attribute | Type | Default | Help | | ----------------------- | -------------------------- | ------------------------- | --------------------------------------------------------------------------------------------- | | `_dom_classes` | array | `[]` | CSS classes applied to widget DOM element | | `_model_module` | string | `'jupyter-js-widgets'` | | `_model_module_version` | string | `'~2.1.0'` | | `_model_name` | string | `'TextareaModel'` | | `_view_module` | string | `'jupyter-js-widgets'` | | `_view_module_version` | string | `'~2.1.0'` | | `_view_name` | string | `'TextareaView'` | | `description` | string | `''` | Description of the control. | | `disabled` | boolean | `false` | Enable or disable user changes | | `layout` | reference to Layout widget | reference to new instance | | `msg_throttle` | number (integer) | `1` | Maximum number of msgs the front-end can send before receiving an idle msg from the back-end. | | `placeholder` | string | `'\u200b'` | Placeholder text to display when nothing has been typed | | `rows` | `null` or number (integer) | `null` | | `value` | string | `''` | String value | ### Jupyter.ToggleButton | Attribute | Type | Default | Help | | ----------------------- | --------------------------------------------------------------------------------- | ------------------------- | --------------------------------------------------------------------------------------------- | | `_dom_classes` | array | `[]` | CSS classes applied to widget DOM element | | `_model_module` | string | `'jupyter-js-widgets'` | | `_model_module_version` | string | `'~2.1.0'` | | `_model_name` | string | `'ToggleButtonModel'` | | `_view_module` | string | `'jupyter-js-widgets'` | | `_view_module_version` | string | `'~2.1.0'` | | `_view_name` | string | `'ToggleButtonView'` | | `button_style` | string (one of `'primary'`, `'success'`, `'info'`, `'warning'`, `'danger'`, `''`) | `''` | Use a predefined styling for the button. | | `description` | string | `''` | Description of the control. | | `disabled` | boolean | `false` | Enable or disable user changes. | | `icon` | string | `''` | Font-awesome icon. | | `layout` | reference to Layout widget | reference to new instance | | `msg_throttle` | number (integer) | `1` | Maximum number of msgs the front-end can send before receiving an idle msg from the back-end. | | `tooltip` | string | `''` | Tooltip caption of the toggle button. | | `value` | boolean | `false` | Bool value | ### Jupyter.ToggleButtons | Attribute | Type | Default | Help | | ----------------------- | ------------------------------------------------------------------------------------------- | ------------------------- | --------------------------------------------------------------------------------------------- | | `_dom_classes` | array | `[]` | CSS classes applied to widget DOM element | | `_model_module` | string | `'jupyter-js-widgets'` | | `_model_module_version` | string | `'~2.1.0'` | | `_model_name` | string | `'ToggleButtonsModel'` | | `_options_labels` | array | `[]` | | `_view_module` | string | `'jupyter-js-widgets'` | | `_view_module_version` | string | `'~2.1.0'` | | `_view_name` | string | `'ToggleButtonsView'` | | `button_style` | `null` or string (one of `'primary'`, `'success'`, `'info'`, `'warning'`, `'danger'`, `''`) | `''` | Use a predefined styling for the buttons. | | `description` | string | `''` | Description of the control. | | `disabled` | boolean | `false` | Enable or disable user changes | | `icons` | array | `[]` | | `layout` | reference to Layout widget | reference to new instance | | `msg_throttle` | number (integer) | `1` | Maximum number of msgs the front-end can send before receiving an idle msg from the back-end. | | `tooltips` | array | `[]` | | `value` | string (valid option label) | `null` | Selected value | ### Jupyter.VBox | Attribute | Type | Default | Help | | ----------------------- | -------------------------------------------------------------------- | ------------------------- | --------------------------------------------------------------------------------------------- | | `_dom_classes` | array | `[]` | CSS classes applied to widget DOM element | | `_model_module` | string | `'jupyter-js-widgets'` | | `_model_module_version` | string | `'~2.1.0'` | | `_model_name` | string | `'VBoxModel'` | | `_view_module` | string | `'jupyter-js-widgets'` | | `_view_module_version` | string | `'~2.1.0'` | | `_view_name` | string | `'VBoxView'` | | `box_style` | string (one of `'success'`, `'info'`, `'warning'`, `'danger'`, `''`) | `''` | Use a predefined styling for the box. | | `children` | array | `[]` | | `layout` | reference to Layout widget | reference to new instance | | `msg_throttle` | number (integer) | `1` | Maximum number of msgs the front-end can send before receiving an idle msg from the back-end. | ### Jupyter.Valid | Attribute | Type | Default | Help | | ----------------------- | -------------------------- | ------------------------- | --------------------------------------------------------------------------------------------- | | `_dom_classes` | array | `[]` | CSS classes applied to widget DOM element | | `_model_module` | string | `'jupyter-js-widgets'` | | `_model_module_version` | string | `'~2.1.0'` | | `_model_name` | string | `'ValidModel'` | | `_view_module` | string | `'jupyter-js-widgets'` | | `_view_module_version` | string | `'~2.1.0'` | | `_view_name` | string | `'ValidView'` | | `description` | string | `''` | Description of the control. | | `disabled` | boolean | `false` | Enable or disable user changes. | | `layout` | reference to Layout widget | reference to new instance | | `msg_throttle` | number (integer) | `1` | Maximum number of msgs the front-end can send before receiving an idle msg from the back-end. | | `readout` | string | `'Invalid'` | Message displayed when the value is False | | `value` | boolean | `false` | Bool value | ### jupyter.DirectionalLink | Attribute | Type | Default | Help | | ----------------------- | ---------------- | ------------------------ | --------------------------------------------------------------------------------------------- | | `_model_module` | string | `'jupyter-js-widgets'` | | `_model_module_version` | string | `'~2.1.0'` | | `_model_name` | string | `'DirectionalLinkModel'` | | `_view_module` | string | `'jupyter-js-widgets'` | | `_view_module_version` | string | `'~2.1.0'` | | `_view_name` | `null` or string | `null` | Name of the view object. | | `msg_throttle` | number (integer) | `1` | Maximum number of msgs the front-end can send before receiving an idle msg from the back-end. | | `source` | array | `[]` | The source (widget, 'trait_name') pair | | `target` | array | `[]` | The target (widget, 'trait_name') pair | ### jupyter.Link | Attribute | Type | Default | Help | | ----------------------- | ---------------- | ---------------------- | --------------------------------------------------------------------------------------------- | | `_model_module` | string | `'jupyter-js-widgets'` | | `_model_module_version` | string | `'~2.1.0'` | | `_model_name` | string | `'LinkModel'` | | `_view_module` | string | `'jupyter-js-widgets'` | | `_view_module_version` | string | `'~2.1.0'` | | `_view_name` | `null` or string | `null` | Name of the view object. | | `msg_throttle` | number (integer) | `1` | Maximum number of msgs the front-end can send before receiving an idle msg from the back-end. | | `source` | array | `[]` | The source (widget, 'trait_name') pair | | `target` | array | `[]` | The target (widget, 'trait_name') pair | ### Layout | Attribute | Type | Default | Help | | ----------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------- | --------------------------------------------------------------------------------------------- | | `_model_module` | string | `'jupyter-js-widgets'` | | `_model_module_version` | string | `'~2.1.0'` | | `_model_name` | string | `'LayoutModel'` | | `_view_module` | string | `'jupyter-js-widgets'` | | `_view_module_version` | string | `'~2.1.0'` | | `_view_name` | string | `'LayoutView'` | | `align_content` | `null` or string (one of `'flex-start'`, `'flex-end'`, `'center'`, `'space-between'`, `'space-around'`, `'space-evenly'`, `'stretch'`, `'inherit'`, `'initial'`, `'unset'`) | `null` | | `align_items` | `null` or string (one of `'flex-start'`, `'flex-end'`, `'center'`, `'baseline'`, `'stretch'`, `'inherit'`, `'initial'`, `'unset'`) | `null` | | `align_self` | `null` or string (one of `'auto'`, `'flex-start'`, `'flex-end'`, `'center'`, `'baseline'`, `'stretch'`, `'inherit'`, `'initial'`, `'unset'`) | `null` | | `border` | `null` or string | `null` | | `bottom` | `null` or string | `null` | | `display` | `null` or string | `null` | | `flex` | `null` or string | `null` | | `flex_flow` | `null` or string | `null` | | `height` | `null` or string | `null` | | `justify_content` | `null` or string (one of `'flex-start'`, `'flex-end'`, `'center'`, `'space-between'`, `'space-around'`, `'inherit'`, `'initial'`, `'unset'`) | `null` | | `left` | `null` or string | `null` | | `margin` | `null` or string | `null` | | `max_height` | `null` or string | `null` | | `max_width` | `null` or string | `null` | | `min_height` | `null` or string | `null` | | `min_width` | `null` or string | `null` | | `msg_throttle` | number (integer) | `1` | Maximum number of msgs the front-end can send before receiving an idle msg from the back-end. | | `order` | `null` or string | `null` | | `overflow` | `null` or string (one of `'visible'`, `'hidden'`, `'scroll'`, `'auto'`, `'inherit'`, `'initial'`, `'unset'`) | `null` | | `overflow_x` | `null` or string (one of `'visible'`, `'hidden'`, `'scroll'`, `'auto'`, `'inherit'`, `'initial'`, `'unset'`) | `null` | | `overflow_y` | `null` or string (one of `'visible'`, `'hidden'`, `'scroll'`, `'auto'`, `'inherit'`, `'initial'`, `'unset'`) | `null` | | `padding` | `null` or string | `null` | | `right` | `null` or string | `null` | | `top` | `null` or string | `null` | | `visibility` | `null` or string (one of `'visible'`, `'hidden'`, `'inherit'`, `'initial'`, `'unset'`) | `null` | | `width` | `null` or string | `null` | ### Output | Attribute | Type | Default | Help | | ----------------------- | -------------------------- | ------------------------- | --------------------------------------------------------------------------------------------- | | `_dom_classes` | array | `[]` | CSS classes applied to widget DOM element | | `_model_module` | string | `'jupyter-js-widgets'` | | `_model_module_version` | string | `'~2.1.0'` | | `_model_name` | string | `'OutputModel'` | | `_view_module` | string | `'jupyter-js-widgets'` | | `_view_module_version` | string | `'~2.1.0'` | | `_view_name` | string | `'OutputView'` | | `layout` | reference to Layout widget | reference to new instance | | `msg_id` | string | `''` | Parent message id of messages to capture | | `msg_throttle` | number (integer) | `1` | Maximum number of msgs the front-end can send before receiving an idle msg from the back-end. | ## Inheritance In the list below, the notation `WidgetB(WidgetA)` indicates that WidgetB inherits all of the attributes from WidgetA. This may help in implementing widgets to easily see the inheritance hierarchy. - CoreWidget - Abstract - DOMWidget(Widget) - Abstract - LabeledDOMWidget(DOMWidget) - Accordion(LabeledDOMWidget) - BoundedFloatText(LabeledDOMWidget) - BoundedIntText(LabeledDOMWidget) - Box(DOMWIdget) - HBox(Box) - VBox(Box) - Button(DOMWidget) - ButtonStyle - Checkbox(LabeledDOMWidget) - ColorPicker(LabeledDOMWidget) - Controller - DatePicker(LabeledDOMWidget) - Dropdown(LabeledDOMWidget) - Progress(LabeledDOMWidget) - ProgressStyle - FloatRangeSlider(LabeledDOMWidget) - FloatSlider(LabeledDOMWidget) - FloatText(LabeledDOMWidget) - HTML(LabeledDOMWidget) - HTMLMath(HTML) - Image(DOMWidget) - IntRangeSlider(LabeledDOMWidget) - IntSlider(LabeledDOMWidget) - IntText(LabeledDOMWidget) - Label(LabeledDOMWidget) - Layout - Output - Play(LabeledDOMWidget) - RadioButtons(LabeledDOMWidget) - Select(LabeledDOMWidget) - SelectMultiple(LabeledDOMWidget) - SelectionSlider(LabeledDOMWidget) - Text(LabeledDOMWidget) - Textarea(LabeledDOMWidget) - ToggleButton(LabeledDOMWidget) - ToggleButtons(LabeledDOMWidget) - Valid(LabeledDOMWidget) - Tab(DOMWidget) - Link(Widget) ## Automated documentation The code to generate the model attribute listing is below. ```python import ipywidgets as widgets from ipywidgets import * from traitlets import CaselessStrEnum, Unicode, Tuple, List, Bool, CFloat, Float, CInt, Int, Instance, Undefined, Dict, Any from ipywidgets import Color widgets_to_document = sorted(widgets.Widget.widget_types.items()) + [('Layout', widgets.Layout), ('Output', widgets.Output)] def typing(x): s = '' if isinstance(x, CaselessStrEnum): s = 'string (one of %s)'%(', '.join('`%r`'%i for i in x.values)) elif isinstance(x, Unicode): s = 'string' elif isinstance(x, (Tuple, List)): s = 'array' elif isinstance(x, Bool): s = 'boolean' elif isinstance(x, (CFloat, Float)): s = 'number (float)' elif isinstance(x, (CInt, Int)): s = 'number (integer)' elif isinstance(x, Color): s = 'string (valid color)' elif isinstance(x, Dict): s = 'object' elif isinstance(x, Instance) and issubclass(x.klass, widgets.Widget): s = 'reference to %s widget'%(x.klass.__name__) # ADD the widget to this documenting list if x.klass not in [i[1] for i in widgets_to_document]: widgets_to_document.append((x.klass.__name__, x.klass)) elif isinstance(x, Any): # In our case, these all happen to be values that are converted to strings s = 'string (valid option label)' else: s = x.__class__.__name__ if x.allow_none: s = "`null` or "+s return s def jsdefault(t): x = t.default_value if isinstance(t, Instance): x = t.make_dynamic_default() if issubclass(t.klass, widgets.Widget): return 'reference to new instance' if x is True: return '`true`' elif x is False: return '`false`' elif x is None: return '`null`' elif isinstance(x, tuple): return '`{0}`'.format(list(x)) else: return '`%s`'%t.default_value_repr() def format_widget(n, w): out = [] out.append('### %s'%n) out.append('') out.append('{name: <16} | {typing: <16} | {default: <16} | {help}'.format(name='Attribute', typing='Type', allownone='Nullable', default='Default', help='Help')) out.append('{0:-<16}-|-{0:-<16}-|-{0:-<16}-|----'.format('-')) for name, t in sorted(w.traits(sync=True).items()): if name in ['_model_module', '_view_module', '_model_module_version', '_view_module_version', 'msg_throttle', '_dom_classes', 'layout']: # document these separately, since they apply to all classes pass s = '{name: <16} | {typing: <16} | {default: <16} | {help}'.format(name='`%s`'%name, typing=typing(t), allownone='*' if t.allow_none else '', default=jsdefault(t), help=t.help if t.help else '') out.append(s) out.append('') return '\n'.join(out) out = '' for n,w in widgets_to_document: if n in ['jupyter.Link', 'jupyter.DirectionalLink']: out += '\n'+format_widget(n, w((IntSlider(), 'value'), (IntSlider(), 'value'))) else: out += '\n'+format_widget(n,w()) print(out) ``` ipywidgets-8.1.1/packages/schema/jupyterwidgetmodels.v7-1.md000066400000000000000000003410651450026722000240630ustar00rootroot00000000000000# Model State This is a description of the model state for each widget in the core Jupyter widgets library. The model ID of a widget is the id of the comm object the widget is using. A reference to a widget is serialized to JSON as a string of the form `"IPY_MODEL_"`, where `` is the model ID of a previously created widget of the specified type. This model specification is for ipywidgets 7.1._, @jupyter-widgets/base 1.0._, and @jupyter-widgets/controls 1.1.\*. ## Model attributes Each widget in the Jupyter core widgets is represented below. The heading represents the model name, module, and version, view name, module, and version that the widget is registered with. ### LayoutModel (@jupyter-widgets/base, 1.0.0); LayoutView (@jupyter-widgets/base, 1.0.0) | Attribute | Type | Default | Help | | ----------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------- | ---------------------------------------------------------------- | | `_model_module` | string | `'@jupyter-widgets/base'` | The namespace for the model. | | `_model_module_version` | string | `'1.0.0'` | A semver requirement for namespace version containing the model. | | `_model_name` | string | `'LayoutModel'` | | `_view_module` | string | `'@jupyter-widgets/base'` | | `_view_module_version` | string | `'1.0.0'` | | `_view_name` | string | `'LayoutView'` | | `align_content` | `null` or string (one of `'flex-start'`, `'flex-end'`, `'center'`, `'space-between'`, `'space-around'`, `'space-evenly'`, `'stretch'`, `'inherit'`, `'initial'`, `'unset'`) | `null` | The align-content CSS attribute. | | `align_items` | `null` or string (one of `'flex-start'`, `'flex-end'`, `'center'`, `'baseline'`, `'stretch'`, `'inherit'`, `'initial'`, `'unset'`) | `null` | The align-items CSS attribute. | | `align_self` | `null` or string (one of `'auto'`, `'flex-start'`, `'flex-end'`, `'center'`, `'baseline'`, `'stretch'`, `'inherit'`, `'initial'`, `'unset'`) | `null` | The align-self CSS attribute. | | `border` | `null` or string | `null` | The border CSS attribute. | | `bottom` | `null` or string | `null` | The bottom CSS attribute. | | `display` | `null` or string | `null` | The display CSS attribute. | | `flex` | `null` or string | `null` | The flex CSS attribute. | | `flex_flow` | `null` or string | `null` | The flex-flow CSS attribute. | | `height` | `null` or string | `null` | The height CSS attribute. | | `justify_content` | `null` or string (one of `'flex-start'`, `'flex-end'`, `'center'`, `'space-between'`, `'space-around'`, `'inherit'`, `'initial'`, `'unset'`) | `null` | The justify-content CSS attribute. | | `left` | `null` or string | `null` | The left CSS attribute. | | `margin` | `null` or string | `null` | The margin CSS attribute. | | `max_height` | `null` or string | `null` | The max-height CSS attribute. | | `max_width` | `null` or string | `null` | The max-width CSS attribute. | | `min_height` | `null` or string | `null` | The min-height CSS attribute. | | `min_width` | `null` or string | `null` | The min-width CSS attribute. | | `order` | `null` or string | `null` | The order CSS attribute. | | `overflow` | `null` or string (one of `'visible'`, `'hidden'`, `'scroll'`, `'auto'`, `'inherit'`, `'initial'`, `'unset'`) | `null` | The overflow CSS attribute. | | `overflow_x` | `null` or string (one of `'visible'`, `'hidden'`, `'scroll'`, `'auto'`, `'inherit'`, `'initial'`, `'unset'`) | `null` | The overflow-x CSS attribute. | | `overflow_y` | `null` or string (one of `'visible'`, `'hidden'`, `'scroll'`, `'auto'`, `'inherit'`, `'initial'`, `'unset'`) | `null` | The overflow-y CSS attribute. | | `padding` | `null` or string | `null` | The padding CSS attribute. | | `right` | `null` or string | `null` | The right CSS attribute. | | `top` | `null` or string | `null` | The top CSS attribute. | | `visibility` | `null` or string (one of `'visible'`, `'hidden'`, `'inherit'`, `'initial'`, `'unset'`) | `null` | The visibility CSS attribute. | | `width` | `null` or string | `null` | The width CSS attribute. | ### AccordionModel (@jupyter-widgets/controls, 1.1.0); AccordionView (@jupyter-widgets/controls, 1.1.0) | Attribute | Type | Default | Help | | ----------------------- | -------------------------------------------------------------------- | ----------------------------- | --------------------------------------------------------------------------------------------------------------------------------- | | `_dom_classes` | array | `[]` | CSS classes applied to widget DOM element | | `_model_module` | string | `'@jupyter-widgets/controls'` | | `_model_module_version` | string | `'1.1.0'` | | `_model_name` | string | `'AccordionModel'` | | `_titles` | object | `{}` | Titles of the pages | | `_view_module` | string | `'@jupyter-widgets/controls'` | | `_view_module_version` | string | `'1.1.0'` | | `_view_name` | string | `'AccordionView'` | | `box_style` | string (one of `'success'`, `'info'`, `'warning'`, `'danger'`, `''`) | `''` | Use a predefined styling for the box. | | `children` | array | `[]` | List of widget children | | `layout` | reference to Layout widget | reference to new instance | | `selected_index` | `null` or number (integer) | `0` | The index of the selected page. This is either an integer selecting a particular sub-widget, or None to have no widgets selected. | ### BoundedFloatTextModel (@jupyter-widgets/controls, 1.1.0); FloatTextView (@jupyter-widgets/controls, 1.1.0) | Attribute | Type | Default | Help | | ----------------------- | ------------------------------------ | ----------------------------- | ------------------------------------------------------------------------------------------------------------ | | `_dom_classes` | array | `[]` | CSS classes applied to widget DOM element | | `_model_module` | string | `'@jupyter-widgets/controls'` | | `_model_module_version` | string | `'1.1.0'` | | `_model_name` | string | `'BoundedFloatTextModel'` | | `_view_module` | string | `'@jupyter-widgets/controls'` | | `_view_module_version` | string | `'1.1.0'` | | `_view_name` | string | `'FloatTextView'` | | `continuous_update` | boolean | `false` | Update the value as the user types. If False, update on submission, e.g., pressing Enter or navigating away. | | `description` | string | `''` | Description of the control. | | `disabled` | boolean | `false` | Enable or disable user changes | | `layout` | reference to Layout widget | reference to new instance | | `max` | number (float) | `100.0` | Max value | | `min` | number (float) | `0.0` | Min value | | `step` | `null` or number (float) | `null` | Minimum step to increment the value | | `style` | reference to DescriptionStyle widget | reference to new instance | Styling customizations | | `value` | number (float) | `0.0` | Float value | ### BoundedIntTextModel (@jupyter-widgets/controls, 1.1.0); IntTextView (@jupyter-widgets/controls, 1.1.0) | Attribute | Type | Default | Help | | ----------------------- | ------------------------------------ | ----------------------------- | ------------------------------------------------------------------------------------------------------------ | | `_dom_classes` | array | `[]` | CSS classes applied to widget DOM element | | `_model_module` | string | `'@jupyter-widgets/controls'` | | `_model_module_version` | string | `'1.1.0'` | | `_model_name` | string | `'BoundedIntTextModel'` | | `_view_module` | string | `'@jupyter-widgets/controls'` | | `_view_module_version` | string | `'1.1.0'` | | `_view_name` | string | `'IntTextView'` | | `continuous_update` | boolean | `false` | Update the value as the user types. If False, update on submission, e.g., pressing Enter or navigating away. | | `description` | string | `''` | Description of the control. | | `disabled` | boolean | `false` | Enable or disable user changes | | `layout` | reference to Layout widget | reference to new instance | | `max` | number (integer) | `100` | Max value | | `min` | number (integer) | `0` | Min value | | `step` | number (integer) | `1` | Minimum step to increment the value | | `style` | reference to DescriptionStyle widget | reference to new instance | Styling customizations | | `value` | number (integer) | `0` | Int value | ### BoxModel (@jupyter-widgets/controls, 1.1.0); BoxView (@jupyter-widgets/controls, 1.1.0) | Attribute | Type | Default | Help | | ----------------------- | -------------------------------------------------------------------- | ----------------------------- | ----------------------------------------- | | `_dom_classes` | array | `[]` | CSS classes applied to widget DOM element | | `_model_module` | string | `'@jupyter-widgets/controls'` | | `_model_module_version` | string | `'1.1.0'` | | `_model_name` | string | `'BoxModel'` | | `_view_module` | string | `'@jupyter-widgets/controls'` | | `_view_module_version` | string | `'1.1.0'` | | `_view_name` | string | `'BoxView'` | | `box_style` | string (one of `'success'`, `'info'`, `'warning'`, `'danger'`, `''`) | `''` | Use a predefined styling for the box. | | `children` | array | `[]` | List of widget children | | `layout` | reference to Layout widget | reference to new instance | ### ButtonModel (@jupyter-widgets/controls, 1.1.0); ButtonView (@jupyter-widgets/controls, 1.1.0) | Attribute | Type | Default | Help | | ----------------------- | --------------------------------------------------------------------------------- | ----------------------------- | ------------------------------------------------- | | `_dom_classes` | array | `[]` | CSS classes applied to widget DOM element | | `_model_module` | string | `'@jupyter-widgets/controls'` | | `_model_module_version` | string | `'1.1.0'` | | `_model_name` | string | `'ButtonModel'` | | `_view_module` | string | `'@jupyter-widgets/controls'` | | `_view_module_version` | string | `'1.1.0'` | | `_view_name` | string | `'ButtonView'` | | `button_style` | string (one of `'primary'`, `'success'`, `'info'`, `'warning'`, `'danger'`, `''`) | `''` | Use a predefined styling for the button. | | `description` | string | `''` | Button label. | | `disabled` | boolean | `false` | Enable or disable user changes. | | `icon` | string | `''` | Font-awesome icon name, without the 'fa-' prefix. | | `layout` | reference to Layout widget | reference to new instance | | `style` | reference to ButtonStyle widget | reference to new instance | | `tooltip` | string | `''` | Tooltip caption of the button. | ### ButtonStyleModel (@jupyter-widgets/controls, 1.1.0); StyleView (@jupyter-widgets/base, 1.0.0) | Attribute | Type | Default | Help | | ----------------------- | ---------------- | ----------------------------- | ------------------------ | | `_model_module` | string | `'@jupyter-widgets/controls'` | | `_model_module_version` | string | `'1.1.0'` | | `_model_name` | string | `'ButtonStyleModel'` | | `_view_module` | string | `'@jupyter-widgets/base'` | | `_view_module_version` | string | `'1.0.0'` | | `_view_name` | string | `'StyleView'` | | `button_color` | `null` or string | `null` | Color of the button | | `font_weight` | string | `''` | Button text font weight. | ### CheckboxModel (@jupyter-widgets/controls, 1.1.0); CheckboxView (@jupyter-widgets/controls, 1.1.0) | Attribute | Type | Default | Help | | ----------------------- | ------------------------------------ | ----------------------------- | ------------------------------------------------------------------- | | `_dom_classes` | array | `[]` | CSS classes applied to widget DOM element | | `_model_module` | string | `'@jupyter-widgets/controls'` | | `_model_module_version` | string | `'1.1.0'` | | `_model_name` | string | `'CheckboxModel'` | | `_view_module` | string | `'@jupyter-widgets/controls'` | | `_view_module_version` | string | `'1.1.0'` | | `_view_name` | string | `'CheckboxView'` | | `description` | string | `''` | Description of the control. | | `disabled` | boolean | `false` | Enable or disable user changes. | | `indent` | boolean | `true` | Indent the control to align with other controls with a description. | | `layout` | reference to Layout widget | reference to new instance | | `style` | reference to DescriptionStyle widget | reference to new instance | Styling customizations | | `value` | boolean | `false` | Bool value | ### ColorPickerModel (@jupyter-widgets/controls, 1.1.0); ColorPickerView (@jupyter-widgets/controls, 1.1.0) | Attribute | Type | Default | Help | | ----------------------- | ------------------------------------ | ----------------------------- | ------------------------------------------------- | | `_dom_classes` | array | `[]` | CSS classes applied to widget DOM element | | `_model_module` | string | `'@jupyter-widgets/controls'` | | `_model_module_version` | string | `'1.1.0'` | | `_model_name` | string | `'ColorPickerModel'` | | `_view_module` | string | `'@jupyter-widgets/controls'` | | `_view_module_version` | string | `'1.1.0'` | | `_view_name` | string | `'ColorPickerView'` | | `concise` | boolean | `false` | Display short version with just a color selector. | | `description` | string | `''` | Description of the control. | | `disabled` | boolean | `false` | Enable or disable user changes. | | `layout` | reference to Layout widget | reference to new instance | | `style` | reference to DescriptionStyle widget | reference to new instance | Styling customizations | | `value` | string | `'black'` | The color value. | ### ControllerAxisModel (@jupyter-widgets/controls, 1.1.0); ControllerAxisView (@jupyter-widgets/controls, 1.1.0) | Attribute | Type | Default | Help | | ----------------------- | -------------------------- | ----------------------------- | ----------------------------------------- | | `_dom_classes` | array | `[]` | CSS classes applied to widget DOM element | | `_model_module` | string | `'@jupyter-widgets/controls'` | | `_model_module_version` | string | `'1.1.0'` | | `_model_name` | string | `'ControllerAxisModel'` | | `_view_module` | string | `'@jupyter-widgets/controls'` | | `_view_module_version` | string | `'1.1.0'` | | `_view_name` | string | `'ControllerAxisView'` | | `layout` | reference to Layout widget | reference to new instance | | `value` | number (float) | `0.0` | The value of the axis. | ### ControllerButtonModel (@jupyter-widgets/controls, 1.1.0); ControllerButtonView (@jupyter-widgets/controls, 1.1.0) | Attribute | Type | Default | Help | | ----------------------- | -------------------------- | ----------------------------- | ----------------------------------------- | | `_dom_classes` | array | `[]` | CSS classes applied to widget DOM element | | `_model_module` | string | `'@jupyter-widgets/controls'` | | `_model_module_version` | string | `'1.1.0'` | | `_model_name` | string | `'ControllerButtonModel'` | | `_view_module` | string | `'@jupyter-widgets/controls'` | | `_view_module_version` | string | `'1.1.0'` | | `_view_name` | string | `'ControllerButtonView'` | | `layout` | reference to Layout widget | reference to new instance | | `pressed` | boolean | `false` | Whether the button is pressed. | | `value` | number (float) | `0.0` | The value of the button. | ### ControllerModel (@jupyter-widgets/controls, 1.1.0); ControllerView (@jupyter-widgets/controls, 1.1.0) | Attribute | Type | Default | Help | | ----------------------- | -------------------------- | ----------------------------- | ----------------------------------------------------- | | `_dom_classes` | array | `[]` | CSS classes applied to widget DOM element | | `_model_module` | string | `'@jupyter-widgets/controls'` | | `_model_module_version` | string | `'1.1.0'` | | `_model_name` | string | `'ControllerModel'` | | `_view_module` | string | `'@jupyter-widgets/controls'` | | `_view_module_version` | string | `'1.1.0'` | | `_view_name` | string | `'ControllerView'` | | `axes` | array | `[]` | The axes on the gamepad. | | `buttons` | array | `[]` | The buttons on the gamepad. | | `connected` | boolean | `false` | Whether the gamepad is connected. | | `index` | number (integer) | `0` | The id number of the controller. | | `layout` | reference to Layout widget | reference to new instance | | `mapping` | string | `''` | The name of the control mapping. | | `name` | string | `''` | The name of the controller. | | `timestamp` | number (float) | `0.0` | The last time the data from this gamepad was updated. | ### DatePickerModel (@jupyter-widgets/controls, 1.1.0); DatePickerView (@jupyter-widgets/controls, 1.1.0) | Attribute | Type | Default | Help | | ----------------------- | ------------------------------------ | ----------------------------- | ----------------------------------------- | | `_dom_classes` | array | `[]` | CSS classes applied to widget DOM element | | `_model_module` | string | `'@jupyter-widgets/controls'` | | `_model_module_version` | string | `'1.1.0'` | | `_model_name` | string | `'DatePickerModel'` | | `_view_module` | string | `'@jupyter-widgets/controls'` | | `_view_module_version` | string | `'1.1.0'` | | `_view_name` | string | `'DatePickerView'` | | `description` | string | `''` | Description of the control. | | `disabled` | boolean | `false` | Enable or disable user changes. | | `layout` | reference to Layout widget | reference to new instance | | `style` | reference to DescriptionStyle widget | reference to new instance | Styling customizations | | `value` | `null` or Date | `null` | ### DescriptionStyleModel (@jupyter-widgets/controls, 1.1.0); StyleView (@jupyter-widgets/base, 1.0.0) | Attribute | Type | Default | Help | | ----------------------- | ------ | ----------------------------- | ---------------------------------------------------- | | `_model_module` | string | `'@jupyter-widgets/controls'` | | `_model_module_version` | string | `'1.1.0'` | | `_model_name` | string | `'DescriptionStyleModel'` | | `_view_module` | string | `'@jupyter-widgets/base'` | | `_view_module_version` | string | `'1.0.0'` | | `_view_name` | string | `'StyleView'` | | `description_width` | string | `''` | Width of the description to the side of the control. | ### DirectionalLinkModel (@jupyter-widgets/controls, 1.1.0); None (@jupyter-widgets/controls, 1.1.0) | Attribute | Type | Default | Help | | ----------------------- | ---------------- | ----------------------------- | -------------------------------------- | | `_model_module` | string | `'@jupyter-widgets/controls'` | | `_model_module_version` | string | `'1.1.0'` | | `_model_name` | string | `'DirectionalLinkModel'` | | `_view_module` | string | `'@jupyter-widgets/controls'` | | `_view_module_version` | string | `'1.1.0'` | | `_view_name` | `null` or string | `null` | Name of the view. | | `source` | array | `[]` | The source (widget, 'trait_name') pair | | `target` | array | `[]` | The target (widget, 'trait_name') pair | ### DropdownModel (@jupyter-widgets/controls, 1.1.0); DropdownView (@jupyter-widgets/controls, 1.1.0) | Attribute | Type | Default | Help | | ----------------------- | ------------------------------------ | ----------------------------- | ----------------------------------------- | | `_dom_classes` | array | `[]` | CSS classes applied to widget DOM element | | `_model_module` | string | `'@jupyter-widgets/controls'` | | `_model_module_version` | string | `'1.1.0'` | | `_model_name` | string | `'DropdownModel'` | | `_options_labels` | array | `[]` | The labels for the options. | | `_view_module` | string | `'@jupyter-widgets/controls'` | | `_view_module_version` | string | `'1.1.0'` | | `_view_name` | string | `'DropdownView'` | | `description` | string | `''` | Description of the control. | | `disabled` | boolean | `false` | Enable or disable user changes | | `index` | `null` or number (integer) | `null` | Selected index | | `layout` | reference to Layout widget | reference to new instance | | `style` | reference to DescriptionStyle widget | reference to new instance | Styling customizations | ### FloatProgressModel (@jupyter-widgets/controls, 1.1.0); ProgressView (@jupyter-widgets/controls, 1.1.0) | Attribute | Type | Default | Help | | ----------------------- | ------------------------------------------------------------------------------ | ----------------------------- | ---------------------------------------------- | | `_dom_classes` | array | `[]` | CSS classes applied to widget DOM element | | `_model_module` | string | `'@jupyter-widgets/controls'` | | `_model_module_version` | string | `'1.1.0'` | | `_model_name` | string | `'FloatProgressModel'` | | `_view_module` | string | `'@jupyter-widgets/controls'` | | `_view_module_version` | string | `'1.1.0'` | | `_view_name` | string | `'ProgressView'` | | `bar_style` | `null` or string (one of `'success'`, `'info'`, `'warning'`, `'danger'`, `''`) | `''` | Use a predefined styling for the progress bar. | | `description` | string | `''` | Description of the control. | | `layout` | reference to Layout widget | reference to new instance | | `max` | number (float) | `100.0` | Max value | | `min` | number (float) | `0.0` | Min value | | `orientation` | string (one of `'horizontal'`, `'vertical'`) | `'horizontal'` | Vertical or horizontal. | | `style` | reference to ProgressStyle widget | reference to new instance | | `value` | number (float) | `0.0` | Float value | ### FloatRangeSliderModel (@jupyter-widgets/controls, 1.1.0); FloatRangeSliderView (@jupyter-widgets/controls, 1.1.0) | Attribute | Type | Default | Help | | ----------------------- | -------------------------------------------- | ----------------------------- | ----------------------------------------------------------------- | | `_dom_classes` | array | `[]` | CSS classes applied to widget DOM element | | `_model_module` | string | `'@jupyter-widgets/controls'` | | `_model_module_version` | string | `'1.1.0'` | | `_model_name` | string | `'FloatRangeSliderModel'` | | `_view_module` | string | `'@jupyter-widgets/controls'` | | `_view_module_version` | string | `'1.1.0'` | | `_view_name` | string | `'FloatRangeSliderView'` | | `continuous_update` | boolean | `true` | Update the value of the widget as the user is sliding the slider. | | `description` | string | `''` | Description of the control. | | `disabled` | boolean | `false` | Enable or disable user changes | | `layout` | reference to Layout widget | reference to new instance | | `max` | number (float) | `100.0` | Max value | | `min` | number (float) | `0.0` | Min value | | `orientation` | string (one of `'horizontal'`, `'vertical'`) | `'horizontal'` | Vertical or horizontal. | | `readout` | boolean | `true` | Display the current value of the slider next to it. | | `readout_format` | string | `'.2f'` | Format for the readout | | `step` | number (float) | `0.1` | Minimum step to increment the value | | `style` | reference to SliderStyle widget | reference to new instance | | `value` | array | `[0.0, 1.0]` | Tuple of (lower, upper) bounds | ### FloatSliderModel (@jupyter-widgets/controls, 1.1.0); FloatSliderView (@jupyter-widgets/controls, 1.1.0) | Attribute | Type | Default | Help | | ----------------------- | -------------------------------------------- | ----------------------------- | ----------------------------------------------------------------- | | `_dom_classes` | array | `[]` | CSS classes applied to widget DOM element | | `_model_module` | string | `'@jupyter-widgets/controls'` | | `_model_module_version` | string | `'1.1.0'` | | `_model_name` | string | `'FloatSliderModel'` | | `_view_module` | string | `'@jupyter-widgets/controls'` | | `_view_module_version` | string | `'1.1.0'` | | `_view_name` | string | `'FloatSliderView'` | | `continuous_update` | boolean | `true` | Update the value of the widget as the user is holding the slider. | | `description` | string | `''` | Description of the control. | | `disabled` | boolean | `false` | Enable or disable user changes | | `layout` | reference to Layout widget | reference to new instance | | `max` | number (float) | `100.0` | Max value | | `min` | number (float) | `0.0` | Min value | | `orientation` | string (one of `'horizontal'`, `'vertical'`) | `'horizontal'` | Vertical or horizontal. | | `readout` | boolean | `true` | Display the current value of the slider next to it. | | `readout_format` | string | `'.2f'` | Format for the readout | | `step` | number (float) | `0.1` | Minimum step to increment the value | | `style` | reference to SliderStyle widget | reference to new instance | | `value` | number (float) | `0.0` | Float value | ### FloatTextModel (@jupyter-widgets/controls, 1.1.0); FloatTextView (@jupyter-widgets/controls, 1.1.0) | Attribute | Type | Default | Help | | ----------------------- | ------------------------------------ | ----------------------------- | ------------------------------------------------------------------------------------------------------------ | | `_dom_classes` | array | `[]` | CSS classes applied to widget DOM element | | `_model_module` | string | `'@jupyter-widgets/controls'` | | `_model_module_version` | string | `'1.1.0'` | | `_model_name` | string | `'FloatTextModel'` | | `_view_module` | string | `'@jupyter-widgets/controls'` | | `_view_module_version` | string | `'1.1.0'` | | `_view_name` | string | `'FloatTextView'` | | `continuous_update` | boolean | `false` | Update the value as the user types. If False, update on submission, e.g., pressing Enter or navigating away. | | `description` | string | `''` | Description of the control. | | `disabled` | boolean | `false` | Enable or disable user changes | | `layout` | reference to Layout widget | reference to new instance | | `step` | `null` or number (float) | `null` | Minimum step to increment the value | | `style` | reference to DescriptionStyle widget | reference to new instance | Styling customizations | | `value` | number (float) | `0.0` | Float value | ### HBoxModel (@jupyter-widgets/controls, 1.1.0); HBoxView (@jupyter-widgets/controls, 1.1.0) | Attribute | Type | Default | Help | | ----------------------- | -------------------------------------------------------------------- | ----------------------------- | ----------------------------------------- | | `_dom_classes` | array | `[]` | CSS classes applied to widget DOM element | | `_model_module` | string | `'@jupyter-widgets/controls'` | | `_model_module_version` | string | `'1.1.0'` | | `_model_name` | string | `'HBoxModel'` | | `_view_module` | string | `'@jupyter-widgets/controls'` | | `_view_module_version` | string | `'1.1.0'` | | `_view_name` | string | `'HBoxView'` | | `box_style` | string (one of `'success'`, `'info'`, `'warning'`, `'danger'`, `''`) | `''` | Use a predefined styling for the box. | | `children` | array | `[]` | List of widget children | | `layout` | reference to Layout widget | reference to new instance | ### HTMLMathModel (@jupyter-widgets/controls, 1.1.0); HTMLMathView (@jupyter-widgets/controls, 1.1.0) | Attribute | Type | Default | Help | | ----------------------- | ------------------------------------ | ----------------------------- | ------------------------------------------------------- | | `_dom_classes` | array | `[]` | CSS classes applied to widget DOM element | | `_model_module` | string | `'@jupyter-widgets/controls'` | | `_model_module_version` | string | `'1.1.0'` | | `_model_name` | string | `'HTMLMathModel'` | | `_view_module` | string | `'@jupyter-widgets/controls'` | | `_view_module_version` | string | `'1.1.0'` | | `_view_name` | string | `'HTMLMathView'` | | `description` | string | `''` | Description of the control. | | `layout` | reference to Layout widget | reference to new instance | | `placeholder` | string | `'\u200b'` | Placeholder text to display when nothing has been typed | | `style` | reference to DescriptionStyle widget | reference to new instance | Styling customizations | | `value` | string | `''` | String value | ### HTMLModel (@jupyter-widgets/controls, 1.1.0); HTMLView (@jupyter-widgets/controls, 1.1.0) | Attribute | Type | Default | Help | | ----------------------- | ------------------------------------ | ----------------------------- | ------------------------------------------------------- | | `_dom_classes` | array | `[]` | CSS classes applied to widget DOM element | | `_model_module` | string | `'@jupyter-widgets/controls'` | | `_model_module_version` | string | `'1.1.0'` | | `_model_name` | string | `'HTMLModel'` | | `_view_module` | string | `'@jupyter-widgets/controls'` | | `_view_module_version` | string | `'1.1.0'` | | `_view_name` | string | `'HTMLView'` | | `description` | string | `''` | Description of the control. | | `layout` | reference to Layout widget | reference to new instance | | `placeholder` | string | `'\u200b'` | Placeholder text to display when nothing has been typed | | `style` | reference to DescriptionStyle widget | reference to new instance | Styling customizations | | `value` | string | `''` | String value | ### ImageModel (@jupyter-widgets/controls, 1.1.0); ImageView (@jupyter-widgets/controls, 1.1.0) | Attribute | Type | Default | Help | | ----------------------- | -------------------------- | ----------------------------- | ----------------------------------------- | | `_dom_classes` | array | `[]` | CSS classes applied to widget DOM element | | `_model_module` | string | `'@jupyter-widgets/controls'` | | `_model_module_version` | string | `'1.1.0'` | | `_model_name` | string | `'ImageModel'` | | `_view_module` | string | `'@jupyter-widgets/controls'` | | `_view_module_version` | string | `'1.1.0'` | | `_view_name` | string | `'ImageView'` | | `format` | string | `'png'` | The format of the image. | | `height` | string | `''` | Height of the image in pixels. | | `layout` | reference to Layout widget | reference to new instance | | `value` | Bytes | `b''` | The image data as a byte string. | | `width` | string | `''` | Width of the image in pixels. | ### IntProgressModel (@jupyter-widgets/controls, 1.1.0); ProgressView (@jupyter-widgets/controls, 1.1.0) | Attribute | Type | Default | Help | | ----------------------- | -------------------------------------------------------------------- | ----------------------------- | ---------------------------------------------- | | `_dom_classes` | array | `[]` | CSS classes applied to widget DOM element | | `_model_module` | string | `'@jupyter-widgets/controls'` | | `_model_module_version` | string | `'1.1.0'` | | `_model_name` | string | `'IntProgressModel'` | | `_view_module` | string | `'@jupyter-widgets/controls'` | | `_view_module_version` | string | `'1.1.0'` | | `_view_name` | string | `'ProgressView'` | | `bar_style` | string (one of `'success'`, `'info'`, `'warning'`, `'danger'`, `''`) | `''` | Use a predefined styling for the progress bar. | | `description` | string | `''` | Description of the control. | | `layout` | reference to Layout widget | reference to new instance | | `max` | number (integer) | `100` | Max value | | `min` | number (integer) | `0` | Min value | | `orientation` | string (one of `'horizontal'`, `'vertical'`) | `'horizontal'` | Vertical or horizontal. | | `style` | reference to ProgressStyle widget | reference to new instance | | `value` | number (integer) | `0` | Int value | ### IntRangeSliderModel (@jupyter-widgets/controls, 1.1.0); IntRangeSliderView (@jupyter-widgets/controls, 1.1.0) | Attribute | Type | Default | Help | | ----------------------- | -------------------------------------------- | ----------------------------- | ----------------------------------------------------------------- | | `_dom_classes` | array | `[]` | CSS classes applied to widget DOM element | | `_model_module` | string | `'@jupyter-widgets/controls'` | | `_model_module_version` | string | `'1.1.0'` | | `_model_name` | string | `'IntRangeSliderModel'` | | `_view_module` | string | `'@jupyter-widgets/controls'` | | `_view_module_version` | string | `'1.1.0'` | | `_view_name` | string | `'IntRangeSliderView'` | | `continuous_update` | boolean | `true` | Update the value of the widget as the user is sliding the slider. | | `description` | string | `''` | Description of the control. | | `disabled` | boolean | `false` | Enable or disable user changes | | `layout` | reference to Layout widget | reference to new instance | | `max` | number (integer) | `100` | Max value | | `min` | number (integer) | `0` | Min value | | `orientation` | string (one of `'horizontal'`, `'vertical'`) | `'horizontal'` | Vertical or horizontal. | | `readout` | boolean | `true` | Display the current value of the slider next to it. | | `readout_format` | string | `'d'` | Format for the readout | | `step` | number (integer) | `1` | Minimum step that the value can take | | `style` | reference to SliderStyle widget | reference to new instance | Slider style customizations. | | `value` | array | `[0, 1]` | Tuple of (lower, upper) bounds | ### IntSliderModel (@jupyter-widgets/controls, 1.1.0); IntSliderView (@jupyter-widgets/controls, 1.1.0) | Attribute | Type | Default | Help | | ----------------------- | -------------------------------------------- | ----------------------------- | ----------------------------------------------------------------- | | `_dom_classes` | array | `[]` | CSS classes applied to widget DOM element | | `_model_module` | string | `'@jupyter-widgets/controls'` | | `_model_module_version` | string | `'1.1.0'` | | `_model_name` | string | `'IntSliderModel'` | | `_view_module` | string | `'@jupyter-widgets/controls'` | | `_view_module_version` | string | `'1.1.0'` | | `_view_name` | string | `'IntSliderView'` | | `continuous_update` | boolean | `true` | Update the value of the widget as the user is holding the slider. | | `description` | string | `''` | Description of the control. | | `disabled` | boolean | `false` | Enable or disable user changes | | `layout` | reference to Layout widget | reference to new instance | | `max` | number (integer) | `100` | Max value | | `min` | number (integer) | `0` | Min value | | `orientation` | string (one of `'horizontal'`, `'vertical'`) | `'horizontal'` | Vertical or horizontal. | | `readout` | boolean | `true` | Display the current value of the slider next to it. | | `readout_format` | string | `'d'` | Format for the readout | | `step` | number (integer) | `1` | Minimum step to increment the value | | `style` | reference to SliderStyle widget | reference to new instance | | `value` | number (integer) | `0` | Int value | ### IntTextModel (@jupyter-widgets/controls, 1.1.0); IntTextView (@jupyter-widgets/controls, 1.1.0) | Attribute | Type | Default | Help | | ----------------------- | ------------------------------------ | ----------------------------- | ------------------------------------------------------------------------------------------------------------ | | `_dom_classes` | array | `[]` | CSS classes applied to widget DOM element | | `_model_module` | string | `'@jupyter-widgets/controls'` | | `_model_module_version` | string | `'1.1.0'` | | `_model_name` | string | `'IntTextModel'` | | `_view_module` | string | `'@jupyter-widgets/controls'` | | `_view_module_version` | string | `'1.1.0'` | | `_view_name` | string | `'IntTextView'` | | `continuous_update` | boolean | `false` | Update the value as the user types. If False, update on submission, e.g., pressing Enter or navigating away. | | `description` | string | `''` | Description of the control. | | `disabled` | boolean | `false` | Enable or disable user changes | | `layout` | reference to Layout widget | reference to new instance | | `step` | number (integer) | `1` | Minimum step to increment the value | | `style` | reference to DescriptionStyle widget | reference to new instance | Styling customizations | | `value` | number (integer) | `0` | Int value | ### LabelModel (@jupyter-widgets/controls, 1.1.0); LabelView (@jupyter-widgets/controls, 1.1.0) | Attribute | Type | Default | Help | | ----------------------- | ------------------------------------ | ----------------------------- | ------------------------------------------------------- | | `_dom_classes` | array | `[]` | CSS classes applied to widget DOM element | | `_model_module` | string | `'@jupyter-widgets/controls'` | | `_model_module_version` | string | `'1.1.0'` | | `_model_name` | string | `'LabelModel'` | | `_view_module` | string | `'@jupyter-widgets/controls'` | | `_view_module_version` | string | `'1.1.0'` | | `_view_name` | string | `'LabelView'` | | `description` | string | `''` | Description of the control. | | `layout` | reference to Layout widget | reference to new instance | | `placeholder` | string | `'\u200b'` | Placeholder text to display when nothing has been typed | | `style` | reference to DescriptionStyle widget | reference to new instance | Styling customizations | | `value` | string | `''` | String value | ### LinkModel (@jupyter-widgets/controls, 1.1.0); None (@jupyter-widgets/controls, 1.1.0) | Attribute | Type | Default | Help | | ----------------------- | ---------------- | ----------------------------- | -------------------------------------- | | `_model_module` | string | `'@jupyter-widgets/controls'` | | `_model_module_version` | string | `'1.1.0'` | | `_model_name` | string | `'LinkModel'` | | `_view_module` | string | `'@jupyter-widgets/controls'` | | `_view_module_version` | string | `'1.1.0'` | | `_view_name` | `null` or string | `null` | Name of the view. | | `source` | array | `[]` | The source (widget, 'trait_name') pair | | `target` | array | `[]` | The target (widget, 'trait_name') pair | ### PasswordModel (@jupyter-widgets/controls, 1.1.0); PasswordView (@jupyter-widgets/controls, 1.1.0) | Attribute | Type | Default | Help | | ----------------------- | ------------------------------------ | ----------------------------- | ------------------------------------------------------------------------------------------------------------ | | `_dom_classes` | array | `[]` | CSS classes applied to widget DOM element | | `_model_module` | string | `'@jupyter-widgets/controls'` | | `_model_module_version` | string | `'1.1.0'` | | `_model_name` | string | `'PasswordModel'` | | `_view_module` | string | `'@jupyter-widgets/controls'` | | `_view_module_version` | string | `'1.1.0'` | | `_view_name` | string | `'PasswordView'` | | `continuous_update` | boolean | `true` | Update the value as the user types. If False, update on submission, e.g., pressing Enter or navigating away. | | `description` | string | `''` | Description of the control. | | `disabled` | boolean | `false` | Enable or disable user changes | | `layout` | reference to Layout widget | reference to new instance | | `placeholder` | string | `'\u200b'` | Placeholder text to display when nothing has been typed | | `style` | reference to DescriptionStyle widget | reference to new instance | Styling customizations | | `value` | string | `''` | String value | ### PlayModel (@jupyter-widgets/controls, 1.1.0); PlayView (@jupyter-widgets/controls, 1.1.0) | Attribute | Type | Default | Help | | ----------------------- | ------------------------------------ | ----------------------------- | ----------------------------------------------------- | | `_dom_classes` | array | `[]` | CSS classes applied to widget DOM element | | `_model_module` | string | `'@jupyter-widgets/controls'` | | `_model_module_version` | string | `'1.1.0'` | | `_model_name` | string | `'PlayModel'` | | `_playing` | boolean | `false` | Whether the control is currently playing. | | `_repeat` | boolean | `false` | Whether the control will repeat in a continuous loop. | | `_view_module` | string | `'@jupyter-widgets/controls'` | | `_view_module_version` | string | `'1.1.0'` | | `_view_name` | string | `'PlayView'` | | `description` | string | `''` | Description of the control. | | `disabled` | boolean | `false` | Enable or disable user changes | | `interval` | number (integer) | `100` | The maximum value for the play control. | | `layout` | reference to Layout widget | reference to new instance | | `max` | number (integer) | `100` | Max value | | `min` | number (integer) | `0` | Min value | | `show_repeat` | boolean | `true` | Show the repeat toggle button in the widget. | | `step` | number (integer) | `1` | Increment step | | `style` | reference to DescriptionStyle widget | reference to new instance | Styling customizations | | `value` | number (integer) | `0` | Int value | ### ProgressStyleModel (@jupyter-widgets/controls, 1.1.0); StyleView (@jupyter-widgets/base, 1.0.0) | Attribute | Type | Default | Help | | ----------------------- | ---------------- | ----------------------------- | ---------------------------------------------------- | | `_model_module` | string | `'@jupyter-widgets/controls'` | | `_model_module_version` | string | `'1.1.0'` | | `_model_name` | string | `'ProgressStyleModel'` | | `_view_module` | string | `'@jupyter-widgets/base'` | | `_view_module_version` | string | `'1.0.0'` | | `_view_name` | string | `'StyleView'` | | `bar_color` | `null` or string | `null` | Color of the progress bar. | | `description_width` | string | `''` | Width of the description to the side of the control. | ### RadioButtonsModel (@jupyter-widgets/controls, 1.1.0); RadioButtonsView (@jupyter-widgets/controls, 1.1.0) | Attribute | Type | Default | Help | | ----------------------- | ------------------------------------ | ----------------------------- | ----------------------------------------- | | `_dom_classes` | array | `[]` | CSS classes applied to widget DOM element | | `_model_module` | string | `'@jupyter-widgets/controls'` | | `_model_module_version` | string | `'1.1.0'` | | `_model_name` | string | `'RadioButtonsModel'` | | `_options_labels` | array | `[]` | The labels for the options. | | `_view_module` | string | `'@jupyter-widgets/controls'` | | `_view_module_version` | string | `'1.1.0'` | | `_view_name` | string | `'RadioButtonsView'` | | `description` | string | `''` | Description of the control. | | `disabled` | boolean | `false` | Enable or disable user changes | | `index` | `null` or number (integer) | `null` | Selected index | | `layout` | reference to Layout widget | reference to new instance | | `style` | reference to DescriptionStyle widget | reference to new instance | Styling customizations | ### SelectModel (@jupyter-widgets/controls, 1.1.0); SelectView (@jupyter-widgets/controls, 1.1.0) | Attribute | Type | Default | Help | | ----------------------- | ------------------------------------ | ----------------------------- | ----------------------------------------- | | `_dom_classes` | array | `[]` | CSS classes applied to widget DOM element | | `_model_module` | string | `'@jupyter-widgets/controls'` | | `_model_module_version` | string | `'1.1.0'` | | `_model_name` | string | `'SelectModel'` | | `_options_labels` | array | `[]` | The labels for the options. | | `_view_module` | string | `'@jupyter-widgets/controls'` | | `_view_module_version` | string | `'1.1.0'` | | `_view_name` | string | `'SelectView'` | | `description` | string | `''` | Description of the control. | | `disabled` | boolean | `false` | Enable or disable user changes | | `index` | `null` or number (integer) | `null` | Selected index | | `layout` | reference to Layout widget | reference to new instance | | `rows` | number (integer) | `5` | The number of rows to display. | | `style` | reference to DescriptionStyle widget | reference to new instance | Styling customizations | ### SelectMultipleModel (@jupyter-widgets/controls, 1.1.0); SelectMultipleView (@jupyter-widgets/controls, 1.1.0) | Attribute | Type | Default | Help | | ----------------------- | ------------------------------------ | ----------------------------- | ----------------------------------------- | | `_dom_classes` | array | `[]` | CSS classes applied to widget DOM element | | `_model_module` | string | `'@jupyter-widgets/controls'` | | `_model_module_version` | string | `'1.1.0'` | | `_model_name` | string | `'SelectMultipleModel'` | | `_options_labels` | array | `[]` | The labels for the options. | | `_view_module` | string | `'@jupyter-widgets/controls'` | | `_view_module_version` | string | `'1.1.0'` | | `_view_name` | string | `'SelectMultipleView'` | | `description` | string | `''` | Description of the control. | | `disabled` | boolean | `false` | Enable or disable user changes | | `index` | array | `[]` | Selected indices | | `layout` | reference to Layout widget | reference to new instance | | `rows` | number (integer) | `5` | The number of rows to display. | | `style` | reference to DescriptionStyle widget | reference to new instance | Styling customizations | ### SelectionRangeSliderModel (@jupyter-widgets/controls, 1.1.0); SelectionRangeSliderView (@jupyter-widgets/controls, 1.1.0) | Attribute | Type | Default | Help | | ----------------------- | -------------------------------------------- | ----------------------------- | ----------------------------------------------------------------- | | `_dom_classes` | array | `[]` | CSS classes applied to widget DOM element | | `_model_module` | string | `'@jupyter-widgets/controls'` | | `_model_module_version` | string | `'1.1.0'` | | `_model_name` | string | `'SelectionRangeSliderModel'` | | `_options_labels` | array | `[]` | The labels for the options. | | `_view_module` | string | `'@jupyter-widgets/controls'` | | `_view_module_version` | string | `'1.1.0'` | | `_view_name` | string | `'SelectionRangeSliderView'` | | `continuous_update` | boolean | `true` | Update the value of the widget as the user is holding the slider. | | `description` | string | `''` | Description of the control. | | `disabled` | boolean | `false` | Enable or disable user changes | | `index` | array | `[0, 0]` | Min and max selected indices | | `layout` | reference to Layout widget | reference to new instance | | `orientation` | string (one of `'horizontal'`, `'vertical'`) | `'horizontal'` | Vertical or horizontal. | | `readout` | boolean | `true` | Display the current selected label next to the slider | | `style` | reference to DescriptionStyle widget | reference to new instance | Styling customizations | ### SelectionSliderModel (@jupyter-widgets/controls, 1.1.0); SelectionSliderView (@jupyter-widgets/controls, 1.1.0) | Attribute | Type | Default | Help | | ----------------------- | -------------------------------------------- | ----------------------------- | ----------------------------------------------------------------- | | `_dom_classes` | array | `[]` | CSS classes applied to widget DOM element | | `_model_module` | string | `'@jupyter-widgets/controls'` | | `_model_module_version` | string | `'1.1.0'` | | `_model_name` | string | `'SelectionSliderModel'` | | `_options_labels` | array | `[]` | The labels for the options. | | `_view_module` | string | `'@jupyter-widgets/controls'` | | `_view_module_version` | string | `'1.1.0'` | | `_view_name` | string | `'SelectionSliderView'` | | `continuous_update` | boolean | `true` | Update the value of the widget as the user is holding the slider. | | `description` | string | `''` | Description of the control. | | `disabled` | boolean | `false` | Enable or disable user changes | | `index` | number (integer) | `0` | Selected index | | `layout` | reference to Layout widget | reference to new instance | | `orientation` | string (one of `'horizontal'`, `'vertical'`) | `'horizontal'` | Vertical or horizontal. | | `readout` | boolean | `true` | Display the current selected label next to the slider | | `style` | reference to DescriptionStyle widget | reference to new instance | Styling customizations | ### SliderStyleModel (@jupyter-widgets/controls, 1.1.0); StyleView (@jupyter-widgets/base, 1.0.0) | Attribute | Type | Default | Help | | ----------------------- | ---------------- | ----------------------------- | ---------------------------------------------------- | | `_model_module` | string | `'@jupyter-widgets/controls'` | | `_model_module_version` | string | `'1.1.0'` | | `_model_name` | string | `'SliderStyleModel'` | | `_view_module` | string | `'@jupyter-widgets/base'` | | `_view_module_version` | string | `'1.0.0'` | | `_view_name` | string | `'StyleView'` | | `description_width` | string | `''` | Width of the description to the side of the control. | | `handle_color` | `null` or string | `null` | Color of the slider handle. | ### TabModel (@jupyter-widgets/controls, 1.1.0); TabView (@jupyter-widgets/controls, 1.1.0) | Attribute | Type | Default | Help | | ----------------------- | -------------------------------------------------------------------- | ----------------------------- | --------------------------------------------------------------------------------------------------------------------------------- | | `_dom_classes` | array | `[]` | CSS classes applied to widget DOM element | | `_model_module` | string | `'@jupyter-widgets/controls'` | | `_model_module_version` | string | `'1.1.0'` | | `_model_name` | string | `'TabModel'` | | `_titles` | object | `{}` | Titles of the pages | | `_view_module` | string | `'@jupyter-widgets/controls'` | | `_view_module_version` | string | `'1.1.0'` | | `_view_name` | string | `'TabView'` | | `box_style` | string (one of `'success'`, `'info'`, `'warning'`, `'danger'`, `''`) | `''` | Use a predefined styling for the box. | | `children` | array | `[]` | List of widget children | | `layout` | reference to Layout widget | reference to new instance | | `selected_index` | `null` or number (integer) | `0` | The index of the selected page. This is either an integer selecting a particular sub-widget, or None to have no widgets selected. | ### TextModel (@jupyter-widgets/controls, 1.1.0); TextView (@jupyter-widgets/controls, 1.1.0) | Attribute | Type | Default | Help | | ----------------------- | ------------------------------------ | ----------------------------- | ------------------------------------------------------------------------------------------------------------ | | `_dom_classes` | array | `[]` | CSS classes applied to widget DOM element | | `_model_module` | string | `'@jupyter-widgets/controls'` | | `_model_module_version` | string | `'1.1.0'` | | `_model_name` | string | `'TextModel'` | | `_view_module` | string | `'@jupyter-widgets/controls'` | | `_view_module_version` | string | `'1.1.0'` | | `_view_name` | string | `'TextView'` | | `continuous_update` | boolean | `true` | Update the value as the user types. If False, update on submission, e.g., pressing Enter or navigating away. | | `description` | string | `''` | Description of the control. | | `disabled` | boolean | `false` | Enable or disable user changes | | `layout` | reference to Layout widget | reference to new instance | | `placeholder` | string | `'\u200b'` | Placeholder text to display when nothing has been typed | | `style` | reference to DescriptionStyle widget | reference to new instance | Styling customizations | | `value` | string | `''` | String value | ### TextareaModel (@jupyter-widgets/controls, 1.1.0); TextareaView (@jupyter-widgets/controls, 1.1.0) | Attribute | Type | Default | Help | | ----------------------- | ------------------------------------ | ----------------------------- | ------------------------------------------------------------------------------------------------------------ | | `_dom_classes` | array | `[]` | CSS classes applied to widget DOM element | | `_model_module` | string | `'@jupyter-widgets/controls'` | | `_model_module_version` | string | `'1.1.0'` | | `_model_name` | string | `'TextareaModel'` | | `_view_module` | string | `'@jupyter-widgets/controls'` | | `_view_module_version` | string | `'1.1.0'` | | `_view_name` | string | `'TextareaView'` | | `continuous_update` | boolean | `true` | Update the value as the user types. If False, update on submission, e.g., pressing Enter or navigating away. | | `description` | string | `''` | Description of the control. | | `disabled` | boolean | `false` | Enable or disable user changes | | `layout` | reference to Layout widget | reference to new instance | | `placeholder` | string | `'\u200b'` | Placeholder text to display when nothing has been typed | | `rows` | `null` or number (integer) | `null` | The number of rows to display. | | `style` | reference to DescriptionStyle widget | reference to new instance | Styling customizations | | `value` | string | `''` | String value | ### ToggleButtonModel (@jupyter-widgets/controls, 1.1.0); ToggleButtonView (@jupyter-widgets/controls, 1.1.0) | Attribute | Type | Default | Help | | ----------------------- | --------------------------------------------------------------------------------- | ----------------------------- | ----------------------------------------- | | `_dom_classes` | array | `[]` | CSS classes applied to widget DOM element | | `_model_module` | string | `'@jupyter-widgets/controls'` | | `_model_module_version` | string | `'1.1.0'` | | `_model_name` | string | `'ToggleButtonModel'` | | `_view_module` | string | `'@jupyter-widgets/controls'` | | `_view_module_version` | string | `'1.1.0'` | | `_view_name` | string | `'ToggleButtonView'` | | `button_style` | string (one of `'primary'`, `'success'`, `'info'`, `'warning'`, `'danger'`, `''`) | `''` | Use a predefined styling for the button. | | `description` | string | `''` | Description of the control. | | `disabled` | boolean | `false` | Enable or disable user changes. | | `icon` | string | `''` | Font-awesome icon. | | `layout` | reference to Layout widget | reference to new instance | | `style` | reference to DescriptionStyle widget | reference to new instance | Styling customizations | | `tooltip` | string | `''` | Tooltip caption of the toggle button. | | `value` | boolean | `false` | Bool value | ### ToggleButtonsModel (@jupyter-widgets/controls, 1.1.0); ToggleButtonsView (@jupyter-widgets/controls, 1.1.0) | Attribute | Type | Default | Help | | ----------------------- | ------------------------------------------------------------------------------------------- | ----------------------------- | ----------------------------------------------------------------------- | | `_dom_classes` | array | `[]` | CSS classes applied to widget DOM element | | `_model_module` | string | `'@jupyter-widgets/controls'` | | `_model_module_version` | string | `'1.1.0'` | | `_model_name` | string | `'ToggleButtonsModel'` | | `_options_labels` | array | `[]` | The labels for the options. | | `_view_module` | string | `'@jupyter-widgets/controls'` | | `_view_module_version` | string | `'1.1.0'` | | `_view_name` | string | `'ToggleButtonsView'` | | `button_style` | `null` or string (one of `'primary'`, `'success'`, `'info'`, `'warning'`, `'danger'`, `''`) | `''` | Use a predefined styling for the buttons. | | `description` | string | `''` | Description of the control. | | `disabled` | boolean | `false` | Enable or disable user changes | | `icons` | array | `[]` | Icons names for each button (FontAwesome names without the fa- prefix). | | `index` | `null` or number (integer) | `null` | Selected index | | `layout` | reference to Layout widget | reference to new instance | | `style` | reference to ToggleButtonsStyle widget | reference to new instance | | `tooltips` | array | `[]` | Tooltips for each button. | ### ToggleButtonsStyleModel (@jupyter-widgets/controls, 1.1.0); StyleView (@jupyter-widgets/base, 1.0.0) | Attribute | Type | Default | Help | | ----------------------- | ------ | ----------------------------- | ---------------------------------------------------- | | `_model_module` | string | `'@jupyter-widgets/controls'` | | `_model_module_version` | string | `'1.1.0'` | | `_model_name` | string | `'ToggleButtonsStyleModel'` | | `_view_module` | string | `'@jupyter-widgets/base'` | | `_view_module_version` | string | `'1.0.0'` | | `_view_name` | string | `'StyleView'` | | `button_width` | string | `''` | The width of each button. | | `description_width` | string | `''` | Width of the description to the side of the control. | | `font_weight` | string | `''` | Text font weight of each button. | ### VBoxModel (@jupyter-widgets/controls, 1.1.0); VBoxView (@jupyter-widgets/controls, 1.1.0) | Attribute | Type | Default | Help | | ----------------------- | -------------------------------------------------------------------- | ----------------------------- | ----------------------------------------- | | `_dom_classes` | array | `[]` | CSS classes applied to widget DOM element | | `_model_module` | string | `'@jupyter-widgets/controls'` | | `_model_module_version` | string | `'1.1.0'` | | `_model_name` | string | `'VBoxModel'` | | `_view_module` | string | `'@jupyter-widgets/controls'` | | `_view_module_version` | string | `'1.1.0'` | | `_view_name` | string | `'VBoxView'` | | `box_style` | string (one of `'success'`, `'info'`, `'warning'`, `'danger'`, `''`) | `''` | Use a predefined styling for the box. | | `children` | array | `[]` | List of widget children | | `layout` | reference to Layout widget | reference to new instance | ### ValidModel (@jupyter-widgets/controls, 1.1.0); ValidView (@jupyter-widgets/controls, 1.1.0) | Attribute | Type | Default | Help | | ----------------------- | ------------------------------------ | ----------------------------- | ----------------------------------------- | | `_dom_classes` | array | `[]` | CSS classes applied to widget DOM element | | `_model_module` | string | `'@jupyter-widgets/controls'` | | `_model_module_version` | string | `'1.1.0'` | | `_model_name` | string | `'ValidModel'` | | `_view_module` | string | `'@jupyter-widgets/controls'` | | `_view_module_version` | string | `'1.1.0'` | | `_view_name` | string | `'ValidView'` | | `description` | string | `''` | Description of the control. | | `disabled` | boolean | `false` | Enable or disable user changes. | | `layout` | reference to Layout widget | reference to new instance | | `readout` | string | `'Invalid'` | Message displayed when the value is False | | `style` | reference to DescriptionStyle widget | reference to new instance | Styling customizations | | `value` | boolean | `false` | Bool value | ### OutputModel (@jupyter-widgets/output, 1.0.0); OutputView (@jupyter-widgets/output, 1.0.0) | Attribute | Type | Default | Help | | ----------------------- | -------------------------- | --------------------------- | --------------------------------------------- | | `_dom_classes` | array | `[]` | CSS classes applied to widget DOM element | | `_model_module` | string | `'@jupyter-widgets/output'` | | `_model_module_version` | string | `'1.0.0'` | | `_model_name` | string | `'OutputModel'` | | `_view_module` | string | `'@jupyter-widgets/output'` | | `_view_module_version` | string | `'1.0.0'` | | `_view_name` | string | `'OutputView'` | | `layout` | reference to Layout widget | reference to new instance | | `msg_id` | string | `''` | Parent message id of messages to capture | | `outputs` | array | `[]` | The output messages synced from the frontend. | ipywidgets-8.1.1/packages/schema/jupyterwidgetmodels.v7-2.md000066400000000000000000003500541450026722000240620ustar00rootroot00000000000000# Model State This is a description of the model state for each widget in the core Jupyter widgets library. The model ID of a widget is the id of the comm object the widget is using. A reference to a widget is serialized to JSON as a string of the form `"IPY_MODEL_"`, where `` is the model ID of a previously created widget of the specified type. This model specification is for ipywidgets 7.2._, @jupyter-widgets/base 1.0._, and @jupyter-widgets/controls 1.2.\*. ## Model attributes Each widget in the Jupyter core widgets is represented below. The heading represents the model name, module, and version, view name, module, and version that the widget is registered with. ### LayoutModel (@jupyter-widgets/base, 1.0.0); LayoutView (@jupyter-widgets/base, 1.0.0) | Attribute | Type | Default | Help | | ----------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------- | ---------------------------------------------------------------- | | `_model_module` | string | `'@jupyter-widgets/base'` | The namespace for the model. | | `_model_module_version` | string | `'1.0.0'` | A semver requirement for namespace version containing the model. | | `_model_name` | string | `'LayoutModel'` | | `_view_module` | string | `'@jupyter-widgets/base'` | | `_view_module_version` | string | `'1.0.0'` | | `_view_name` | string | `'LayoutView'` | | `align_content` | `null` or string (one of `'flex-start'`, `'flex-end'`, `'center'`, `'space-between'`, `'space-around'`, `'space-evenly'`, `'stretch'`, `'inherit'`, `'initial'`, `'unset'`) | `null` | The align-content CSS attribute. | | `align_items` | `null` or string (one of `'flex-start'`, `'flex-end'`, `'center'`, `'baseline'`, `'stretch'`, `'inherit'`, `'initial'`, `'unset'`) | `null` | The align-items CSS attribute. | | `align_self` | `null` or string (one of `'auto'`, `'flex-start'`, `'flex-end'`, `'center'`, `'baseline'`, `'stretch'`, `'inherit'`, `'initial'`, `'unset'`) | `null` | The align-self CSS attribute. | | `border` | `null` or string | `null` | The border CSS attribute. | | `bottom` | `null` or string | `null` | The bottom CSS attribute. | | `display` | `null` or string | `null` | The display CSS attribute. | | `flex` | `null` or string | `null` | The flex CSS attribute. | | `flex_flow` | `null` or string | `null` | The flex-flow CSS attribute. | | `height` | `null` or string | `null` | The height CSS attribute. | | `justify_content` | `null` or string (one of `'flex-start'`, `'flex-end'`, `'center'`, `'space-between'`, `'space-around'`, `'inherit'`, `'initial'`, `'unset'`) | `null` | The justify-content CSS attribute. | | `left` | `null` or string | `null` | The left CSS attribute. | | `margin` | `null` or string | `null` | The margin CSS attribute. | | `max_height` | `null` or string | `null` | The max-height CSS attribute. | | `max_width` | `null` or string | `null` | The max-width CSS attribute. | | `min_height` | `null` or string | `null` | The min-height CSS attribute. | | `min_width` | `null` or string | `null` | The min-width CSS attribute. | | `order` | `null` or string | `null` | The order CSS attribute. | | `overflow` | `null` or string (one of `'visible'`, `'hidden'`, `'scroll'`, `'auto'`, `'inherit'`, `'initial'`, `'unset'`) | `null` | The overflow CSS attribute. | | `overflow_x` | `null` or string (one of `'visible'`, `'hidden'`, `'scroll'`, `'auto'`, `'inherit'`, `'initial'`, `'unset'`) | `null` | The overflow-x CSS attribute. | | `overflow_y` | `null` or string (one of `'visible'`, `'hidden'`, `'scroll'`, `'auto'`, `'inherit'`, `'initial'`, `'unset'`) | `null` | The overflow-y CSS attribute. | | `padding` | `null` or string | `null` | The padding CSS attribute. | | `right` | `null` or string | `null` | The right CSS attribute. | | `top` | `null` or string | `null` | The top CSS attribute. | | `visibility` | `null` or string (one of `'visible'`, `'hidden'`, `'inherit'`, `'initial'`, `'unset'`) | `null` | The visibility CSS attribute. | | `width` | `null` or string | `null` | The width CSS attribute. | ### AccordionModel (@jupyter-widgets/controls, 1.2.0); AccordionView (@jupyter-widgets/controls, 1.2.0) | Attribute | Type | Default | Help | | ----------------------- | -------------------------------------------------------------------- | ----------------------------- | --------------------------------------------------------------------------------------------------------------------------------- | | `_dom_classes` | array of string | `[]` | CSS classes applied to widget DOM element | | `_model_module` | string | `'@jupyter-widgets/controls'` | | `_model_module_version` | string | `'1.2.0'` | | `_model_name` | string | `'AccordionModel'` | | `_titles` | object | `{}` | Titles of the pages | | `_view_module` | string | `'@jupyter-widgets/controls'` | | `_view_module_version` | string | `'1.2.0'` | | `_view_name` | string | `'AccordionView'` | | `box_style` | string (one of `'success'`, `'info'`, `'warning'`, `'danger'`, `''`) | `''` | Use a predefined styling for the box. | | `children` | array of reference to Widget widget | `[]` | List of widget children | | `layout` | reference to Layout widget | reference to new instance | | `selected_index` | `null` or number (integer) | `0` | The index of the selected page. This is either an integer selecting a particular sub-widget, or None to have no widgets selected. | ### BoundedFloatTextModel (@jupyter-widgets/controls, 1.2.0); FloatTextView (@jupyter-widgets/controls, 1.2.0) | Attribute | Type | Default | Help | | ----------------------- | ------------------------------------ | ----------------------------- | ------------------------------------------------------------------------------------------------------------ | | `_dom_classes` | array of string | `[]` | CSS classes applied to widget DOM element | | `_model_module` | string | `'@jupyter-widgets/controls'` | | `_model_module_version` | string | `'1.2.0'` | | `_model_name` | string | `'BoundedFloatTextModel'` | | `_view_module` | string | `'@jupyter-widgets/controls'` | | `_view_module_version` | string | `'1.2.0'` | | `_view_name` | string | `'FloatTextView'` | | `continuous_update` | boolean | `false` | Update the value as the user types. If False, update on submission, e.g., pressing Enter or navigating away. | | `description` | string | `''` | Description of the control. | | `disabled` | boolean | `false` | Enable or disable user changes | | `layout` | reference to Layout widget | reference to new instance | | `max` | number (float) | `100.0` | Max value | | `min` | number (float) | `0.0` | Min value | | `step` | `null` or number (float) | `null` | Minimum step to increment the value | | `style` | reference to DescriptionStyle widget | reference to new instance | Styling customizations | | `value` | number (float) | `0.0` | Float value | ### BoundedIntTextModel (@jupyter-widgets/controls, 1.2.0); IntTextView (@jupyter-widgets/controls, 1.2.0) | Attribute | Type | Default | Help | | ----------------------- | ------------------------------------ | ----------------------------- | ------------------------------------------------------------------------------------------------------------ | | `_dom_classes` | array of string | `[]` | CSS classes applied to widget DOM element | | `_model_module` | string | `'@jupyter-widgets/controls'` | | `_model_module_version` | string | `'1.2.0'` | | `_model_name` | string | `'BoundedIntTextModel'` | | `_view_module` | string | `'@jupyter-widgets/controls'` | | `_view_module_version` | string | `'1.2.0'` | | `_view_name` | string | `'IntTextView'` | | `continuous_update` | boolean | `false` | Update the value as the user types. If False, update on submission, e.g., pressing Enter or navigating away. | | `description` | string | `''` | Description of the control. | | `disabled` | boolean | `false` | Enable or disable user changes | | `layout` | reference to Layout widget | reference to new instance | | `max` | number (integer) | `100` | Max value | | `min` | number (integer) | `0` | Min value | | `step` | number (integer) | `1` | Minimum step to increment the value | | `style` | reference to DescriptionStyle widget | reference to new instance | Styling customizations | | `value` | number (integer) | `0` | Int value | ### BoxModel (@jupyter-widgets/controls, 1.2.0); BoxView (@jupyter-widgets/controls, 1.2.0) | Attribute | Type | Default | Help | | ----------------------- | -------------------------------------------------------------------- | ----------------------------- | ----------------------------------------- | | `_dom_classes` | array of string | `[]` | CSS classes applied to widget DOM element | | `_model_module` | string | `'@jupyter-widgets/controls'` | | `_model_module_version` | string | `'1.2.0'` | | `_model_name` | string | `'BoxModel'` | | `_view_module` | string | `'@jupyter-widgets/controls'` | | `_view_module_version` | string | `'1.2.0'` | | `_view_name` | string | `'BoxView'` | | `box_style` | string (one of `'success'`, `'info'`, `'warning'`, `'danger'`, `''`) | `''` | Use a predefined styling for the box. | | `children` | array of reference to Widget widget | `[]` | List of widget children | | `layout` | reference to Layout widget | reference to new instance | ### ButtonModel (@jupyter-widgets/controls, 1.2.0); ButtonView (@jupyter-widgets/controls, 1.2.0) | Attribute | Type | Default | Help | | ----------------------- | --------------------------------------------------------------------------------- | ----------------------------- | ------------------------------------------------- | | `_dom_classes` | array of string | `[]` | CSS classes applied to widget DOM element | | `_model_module` | string | `'@jupyter-widgets/controls'` | | `_model_module_version` | string | `'1.2.0'` | | `_model_name` | string | `'ButtonModel'` | | `_view_module` | string | `'@jupyter-widgets/controls'` | | `_view_module_version` | string | `'1.2.0'` | | `_view_name` | string | `'ButtonView'` | | `button_style` | string (one of `'primary'`, `'success'`, `'info'`, `'warning'`, `'danger'`, `''`) | `''` | Use a predefined styling for the button. | | `description` | string | `''` | Button label. | | `disabled` | boolean | `false` | Enable or disable user changes. | | `icon` | string | `''` | Font-awesome icon name, without the 'fa-' prefix. | | `layout` | reference to Layout widget | reference to new instance | | `style` | reference to ButtonStyle widget | reference to new instance | | `tooltip` | string | `''` | Tooltip caption of the button. | ### ButtonStyleModel (@jupyter-widgets/controls, 1.2.0); StyleView (@jupyter-widgets/base, 1.0.0) | Attribute | Type | Default | Help | | ----------------------- | ---------------- | ----------------------------- | ------------------------ | | `_model_module` | string | `'@jupyter-widgets/controls'` | | `_model_module_version` | string | `'1.2.0'` | | `_model_name` | string | `'ButtonStyleModel'` | | `_view_module` | string | `'@jupyter-widgets/base'` | | `_view_module_version` | string | `'1.0.0'` | | `_view_name` | string | `'StyleView'` | | `button_color` | `null` or string | `null` | Color of the button | | `font_weight` | string | `''` | Button text font weight. | ### CheckboxModel (@jupyter-widgets/controls, 1.2.0); CheckboxView (@jupyter-widgets/controls, 1.2.0) | Attribute | Type | Default | Help | | ----------------------- | ------------------------------------ | ----------------------------- | ------------------------------------------------------------------- | | `_dom_classes` | array of string | `[]` | CSS classes applied to widget DOM element | | `_model_module` | string | `'@jupyter-widgets/controls'` | | `_model_module_version` | string | `'1.2.0'` | | `_model_name` | string | `'CheckboxModel'` | | `_view_module` | string | `'@jupyter-widgets/controls'` | | `_view_module_version` | string | `'1.2.0'` | | `_view_name` | string | `'CheckboxView'` | | `description` | string | `''` | Description of the control. | | `disabled` | boolean | `false` | Enable or disable user changes. | | `indent` | boolean | `true` | Indent the control to align with other controls with a description. | | `layout` | reference to Layout widget | reference to new instance | | `style` | reference to DescriptionStyle widget | reference to new instance | Styling customizations | | `value` | boolean | `false` | Bool value | ### ColorPickerModel (@jupyter-widgets/controls, 1.2.0); ColorPickerView (@jupyter-widgets/controls, 1.2.0) | Attribute | Type | Default | Help | | ----------------------- | ------------------------------------ | ----------------------------- | ------------------------------------------------- | | `_dom_classes` | array of string | `[]` | CSS classes applied to widget DOM element | | `_model_module` | string | `'@jupyter-widgets/controls'` | | `_model_module_version` | string | `'1.2.0'` | | `_model_name` | string | `'ColorPickerModel'` | | `_view_module` | string | `'@jupyter-widgets/controls'` | | `_view_module_version` | string | `'1.2.0'` | | `_view_name` | string | `'ColorPickerView'` | | `concise` | boolean | `false` | Display short version with just a color selector. | | `description` | string | `''` | Description of the control. | | `disabled` | boolean | `false` | Enable or disable user changes. | | `layout` | reference to Layout widget | reference to new instance | | `style` | reference to DescriptionStyle widget | reference to new instance | Styling customizations | | `value` | string | `'black'` | The color value. | ### ControllerAxisModel (@jupyter-widgets/controls, 1.2.0); ControllerAxisView (@jupyter-widgets/controls, 1.2.0) | Attribute | Type | Default | Help | | ----------------------- | -------------------------- | ----------------------------- | ----------------------------------------- | | `_dom_classes` | array of string | `[]` | CSS classes applied to widget DOM element | | `_model_module` | string | `'@jupyter-widgets/controls'` | | `_model_module_version` | string | `'1.2.0'` | | `_model_name` | string | `'ControllerAxisModel'` | | `_view_module` | string | `'@jupyter-widgets/controls'` | | `_view_module_version` | string | `'1.2.0'` | | `_view_name` | string | `'ControllerAxisView'` | | `layout` | reference to Layout widget | reference to new instance | | `value` | number (float) | `0.0` | The value of the axis. | ### ControllerButtonModel (@jupyter-widgets/controls, 1.2.0); ControllerButtonView (@jupyter-widgets/controls, 1.2.0) | Attribute | Type | Default | Help | | ----------------------- | -------------------------- | ----------------------------- | ----------------------------------------- | | `_dom_classes` | array of string | `[]` | CSS classes applied to widget DOM element | | `_model_module` | string | `'@jupyter-widgets/controls'` | | `_model_module_version` | string | `'1.2.0'` | | `_model_name` | string | `'ControllerButtonModel'` | | `_view_module` | string | `'@jupyter-widgets/controls'` | | `_view_module_version` | string | `'1.2.0'` | | `_view_name` | string | `'ControllerButtonView'` | | `layout` | reference to Layout widget | reference to new instance | | `pressed` | boolean | `false` | Whether the button is pressed. | | `value` | number (float) | `0.0` | The value of the button. | ### ControllerModel (@jupyter-widgets/controls, 1.2.0); ControllerView (@jupyter-widgets/controls, 1.2.0) | Attribute | Type | Default | Help | | ----------------------- | ----------------------------------- | ----------------------------- | ----------------------------------------------------- | | `_dom_classes` | array of string | `[]` | CSS classes applied to widget DOM element | | `_model_module` | string | `'@jupyter-widgets/controls'` | | `_model_module_version` | string | `'1.2.0'` | | `_model_name` | string | `'ControllerModel'` | | `_view_module` | string | `'@jupyter-widgets/controls'` | | `_view_module_version` | string | `'1.2.0'` | | `_view_name` | string | `'ControllerView'` | | `axes` | array of reference to Axis widget | `[]` | The axes on the gamepad. | | `buttons` | array of reference to Button widget | `[]` | The buttons on the gamepad. | | `connected` | boolean | `false` | Whether the gamepad is connected. | | `index` | number (integer) | `0` | The id number of the controller. | | `layout` | reference to Layout widget | reference to new instance | | `mapping` | string | `''` | The name of the control mapping. | | `name` | string | `''` | The name of the controller. | | `timestamp` | number (float) | `0.0` | The last time the data from this gamepad was updated. | ### DatePickerModel (@jupyter-widgets/controls, 1.2.0); DatePickerView (@jupyter-widgets/controls, 1.2.0) | Attribute | Type | Default | Help | | ----------------------- | ------------------------------------ | ----------------------------- | ----------------------------------------- | | `_dom_classes` | array of string | `[]` | CSS classes applied to widget DOM element | | `_model_module` | string | `'@jupyter-widgets/controls'` | | `_model_module_version` | string | `'1.2.0'` | | `_model_name` | string | `'DatePickerModel'` | | `_view_module` | string | `'@jupyter-widgets/controls'` | | `_view_module_version` | string | `'1.2.0'` | | `_view_name` | string | `'DatePickerView'` | | `description` | string | `''` | Description of the control. | | `disabled` | boolean | `false` | Enable or disable user changes. | | `layout` | reference to Layout widget | reference to new instance | | `style` | reference to DescriptionStyle widget | reference to new instance | Styling customizations | | `value` | `null` or Date | `null` | ### DescriptionStyleModel (@jupyter-widgets/controls, 1.2.0); StyleView (@jupyter-widgets/base, 1.0.0) | Attribute | Type | Default | Help | | ----------------------- | ------ | ----------------------------- | ---------------------------------------------------- | | `_model_module` | string | `'@jupyter-widgets/controls'` | | `_model_module_version` | string | `'1.2.0'` | | `_model_name` | string | `'DescriptionStyleModel'` | | `_view_module` | string | `'@jupyter-widgets/base'` | | `_view_module_version` | string | `'1.0.0'` | | `_view_name` | string | `'StyleView'` | | `description_width` | string | `''` | Width of the description to the side of the control. | ### DirectionalLinkModel (@jupyter-widgets/controls, 1.2.0); None (@jupyter-widgets/controls, 1.2.0) | Attribute | Type | Default | Help | | ----------------------- | ---------------- | ----------------------------- | -------------------------------------- | | `_model_module` | string | `'@jupyter-widgets/controls'` | | `_model_module_version` | string | `'1.2.0'` | | `_model_name` | string | `'DirectionalLinkModel'` | | `_view_module` | string | `'@jupyter-widgets/controls'` | | `_view_module_version` | string | `'1.2.0'` | | `_view_name` | `null` or string | `null` | Name of the view. | | `source` | array | `[]` | The source (widget, 'trait_name') pair | | `target` | array | `[]` | The target (widget, 'trait_name') pair | ### DropdownModel (@jupyter-widgets/controls, 1.2.0); DropdownView (@jupyter-widgets/controls, 1.2.0) | Attribute | Type | Default | Help | | ----------------------- | ------------------------------------ | ----------------------------- | ----------------------------------------- | | `_dom_classes` | array of string | `[]` | CSS classes applied to widget DOM element | | `_model_module` | string | `'@jupyter-widgets/controls'` | | `_model_module_version` | string | `'1.2.0'` | | `_model_name` | string | `'DropdownModel'` | | `_options_labels` | array of string | `[]` | The labels for the options. | | `_view_module` | string | `'@jupyter-widgets/controls'` | | `_view_module_version` | string | `'1.2.0'` | | `_view_name` | string | `'DropdownView'` | | `description` | string | `''` | Description of the control. | | `disabled` | boolean | `false` | Enable or disable user changes | | `index` | `null` or number (integer) | `null` | Selected index | | `layout` | reference to Layout widget | reference to new instance | | `style` | reference to DescriptionStyle widget | reference to new instance | Styling customizations | ### FloatLogSliderModel (@jupyter-widgets/controls, 1.2.0); FloatLogSliderView (@jupyter-widgets/controls, 1.2.0) | Attribute | Type | Default | Help | | ----------------------- | -------------------------------------------- | ----------------------------- | ----------------------------------------------------------------- | | `_dom_classes` | array of string | `[]` | CSS classes applied to widget DOM element | | `_model_module` | string | `'@jupyter-widgets/controls'` | | `_model_module_version` | string | `'1.2.0'` | | `_model_name` | string | `'FloatLogSliderModel'` | | `_view_module` | string | `'@jupyter-widgets/controls'` | | `_view_module_version` | string | `'1.2.0'` | | `_view_name` | string | `'FloatLogSliderView'` | | `base` | number (float) | `10.0` | Base for the logarithm | | `continuous_update` | boolean | `true` | Update the value of the widget as the user is holding the slider. | | `description` | string | `''` | Description of the control. | | `disabled` | boolean | `false` | Enable or disable user changes | | `layout` | reference to Layout widget | reference to new instance | | `max` | number (float) | `4.0` | Max value for the exponent | | `min` | number (float) | `0.0` | Min value for the exponent | | `orientation` | string (one of `'horizontal'`, `'vertical'`) | `'horizontal'` | Vertical or horizontal. | | `readout` | boolean | `true` | Display the current value of the slider next to it. | | `readout_format` | string | `'.3g'` | Format for the readout | | `step` | number (float) | `0.1` | Minimum step in the exponent to increment the value | | `style` | reference to SliderStyle widget | reference to new instance | | `value` | number (float) | `1.0` | Float value | ### FloatProgressModel (@jupyter-widgets/controls, 1.2.0); ProgressView (@jupyter-widgets/controls, 1.2.0) | Attribute | Type | Default | Help | | ----------------------- | ------------------------------------------------------------------------------ | ----------------------------- | ---------------------------------------------- | | `_dom_classes` | array of string | `[]` | CSS classes applied to widget DOM element | | `_model_module` | string | `'@jupyter-widgets/controls'` | | `_model_module_version` | string | `'1.2.0'` | | `_model_name` | string | `'FloatProgressModel'` | | `_view_module` | string | `'@jupyter-widgets/controls'` | | `_view_module_version` | string | `'1.2.0'` | | `_view_name` | string | `'ProgressView'` | | `bar_style` | `null` or string (one of `'success'`, `'info'`, `'warning'`, `'danger'`, `''`) | `''` | Use a predefined styling for the progress bar. | | `description` | string | `''` | Description of the control. | | `layout` | reference to Layout widget | reference to new instance | | `max` | number (float) | `100.0` | Max value | | `min` | number (float) | `0.0` | Min value | | `orientation` | string (one of `'horizontal'`, `'vertical'`) | `'horizontal'` | Vertical or horizontal. | | `style` | reference to ProgressStyle widget | reference to new instance | | `value` | number (float) | `0.0` | Float value | ### FloatRangeSliderModel (@jupyter-widgets/controls, 1.2.0); FloatRangeSliderView (@jupyter-widgets/controls, 1.2.0) | Attribute | Type | Default | Help | | ----------------------- | -------------------------------------------- | ----------------------------- | ----------------------------------------------------------------- | | `_dom_classes` | array of string | `[]` | CSS classes applied to widget DOM element | | `_model_module` | string | `'@jupyter-widgets/controls'` | | `_model_module_version` | string | `'1.2.0'` | | `_model_name` | string | `'FloatRangeSliderModel'` | | `_view_module` | string | `'@jupyter-widgets/controls'` | | `_view_module_version` | string | `'1.2.0'` | | `_view_name` | string | `'FloatRangeSliderView'` | | `continuous_update` | boolean | `true` | Update the value of the widget as the user is sliding the slider. | | `description` | string | `''` | Description of the control. | | `disabled` | boolean | `false` | Enable or disable user changes | | `layout` | reference to Layout widget | reference to new instance | | `max` | number (float) | `100.0` | Max value | | `min` | number (float) | `0.0` | Min value | | `orientation` | string (one of `'horizontal'`, `'vertical'`) | `'horizontal'` | Vertical or horizontal. | | `readout` | boolean | `true` | Display the current value of the slider next to it. | | `readout_format` | string | `'.2f'` | Format for the readout | | `step` | number (float) | `0.1` | Minimum step to increment the value | | `style` | reference to SliderStyle widget | reference to new instance | | `value` | array | `[0.0, 1.0]` | Tuple of (lower, upper) bounds | ### FloatSliderModel (@jupyter-widgets/controls, 1.2.0); FloatSliderView (@jupyter-widgets/controls, 1.2.0) | Attribute | Type | Default | Help | | ----------------------- | -------------------------------------------- | ----------------------------- | ----------------------------------------------------------------- | | `_dom_classes` | array of string | `[]` | CSS classes applied to widget DOM element | | `_model_module` | string | `'@jupyter-widgets/controls'` | | `_model_module_version` | string | `'1.2.0'` | | `_model_name` | string | `'FloatSliderModel'` | | `_view_module` | string | `'@jupyter-widgets/controls'` | | `_view_module_version` | string | `'1.2.0'` | | `_view_name` | string | `'FloatSliderView'` | | `continuous_update` | boolean | `true` | Update the value of the widget as the user is holding the slider. | | `description` | string | `''` | Description of the control. | | `disabled` | boolean | `false` | Enable or disable user changes | | `layout` | reference to Layout widget | reference to new instance | | `max` | number (float) | `100.0` | Max value | | `min` | number (float) | `0.0` | Min value | | `orientation` | string (one of `'horizontal'`, `'vertical'`) | `'horizontal'` | Vertical or horizontal. | | `readout` | boolean | `true` | Display the current value of the slider next to it. | | `readout_format` | string | `'.2f'` | Format for the readout | | `step` | number (float) | `0.1` | Minimum step to increment the value | | `style` | reference to SliderStyle widget | reference to new instance | | `value` | number (float) | `0.0` | Float value | ### FloatTextModel (@jupyter-widgets/controls, 1.2.0); FloatTextView (@jupyter-widgets/controls, 1.2.0) | Attribute | Type | Default | Help | | ----------------------- | ------------------------------------ | ----------------------------- | ------------------------------------------------------------------------------------------------------------ | | `_dom_classes` | array of string | `[]` | CSS classes applied to widget DOM element | | `_model_module` | string | `'@jupyter-widgets/controls'` | | `_model_module_version` | string | `'1.2.0'` | | `_model_name` | string | `'FloatTextModel'` | | `_view_module` | string | `'@jupyter-widgets/controls'` | | `_view_module_version` | string | `'1.2.0'` | | `_view_name` | string | `'FloatTextView'` | | `continuous_update` | boolean | `false` | Update the value as the user types. If False, update on submission, e.g., pressing Enter or navigating away. | | `description` | string | `''` | Description of the control. | | `disabled` | boolean | `false` | Enable or disable user changes | | `layout` | reference to Layout widget | reference to new instance | | `step` | `null` or number (float) | `null` | Minimum step to increment the value | | `style` | reference to DescriptionStyle widget | reference to new instance | Styling customizations | | `value` | number (float) | `0.0` | Float value | ### HBoxModel (@jupyter-widgets/controls, 1.2.0); HBoxView (@jupyter-widgets/controls, 1.2.0) | Attribute | Type | Default | Help | | ----------------------- | -------------------------------------------------------------------- | ----------------------------- | ----------------------------------------- | | `_dom_classes` | array of string | `[]` | CSS classes applied to widget DOM element | | `_model_module` | string | `'@jupyter-widgets/controls'` | | `_model_module_version` | string | `'1.2.0'` | | `_model_name` | string | `'HBoxModel'` | | `_view_module` | string | `'@jupyter-widgets/controls'` | | `_view_module_version` | string | `'1.2.0'` | | `_view_name` | string | `'HBoxView'` | | `box_style` | string (one of `'success'`, `'info'`, `'warning'`, `'danger'`, `''`) | `''` | Use a predefined styling for the box. | | `children` | array of reference to Widget widget | `[]` | List of widget children | | `layout` | reference to Layout widget | reference to new instance | ### HTMLMathModel (@jupyter-widgets/controls, 1.2.0); HTMLMathView (@jupyter-widgets/controls, 1.2.0) | Attribute | Type | Default | Help | | ----------------------- | ------------------------------------ | ----------------------------- | ------------------------------------------------------- | | `_dom_classes` | array of string | `[]` | CSS classes applied to widget DOM element | | `_model_module` | string | `'@jupyter-widgets/controls'` | | `_model_module_version` | string | `'1.2.0'` | | `_model_name` | string | `'HTMLMathModel'` | | `_view_module` | string | `'@jupyter-widgets/controls'` | | `_view_module_version` | string | `'1.2.0'` | | `_view_name` | string | `'HTMLMathView'` | | `description` | string | `''` | Description of the control. | | `layout` | reference to Layout widget | reference to new instance | | `placeholder` | string | `'\u200b'` | Placeholder text to display when nothing has been typed | | `style` | reference to DescriptionStyle widget | reference to new instance | Styling customizations | | `value` | string | `''` | String value | ### HTMLModel (@jupyter-widgets/controls, 1.2.0); HTMLView (@jupyter-widgets/controls, 1.2.0) | Attribute | Type | Default | Help | | ----------------------- | ------------------------------------ | ----------------------------- | ------------------------------------------------------- | | `_dom_classes` | array of string | `[]` | CSS classes applied to widget DOM element | | `_model_module` | string | `'@jupyter-widgets/controls'` | | `_model_module_version` | string | `'1.2.0'` | | `_model_name` | string | `'HTMLModel'` | | `_view_module` | string | `'@jupyter-widgets/controls'` | | `_view_module_version` | string | `'1.2.0'` | | `_view_name` | string | `'HTMLView'` | | `description` | string | `''` | Description of the control. | | `layout` | reference to Layout widget | reference to new instance | | `placeholder` | string | `'\u200b'` | Placeholder text to display when nothing has been typed | | `style` | reference to DescriptionStyle widget | reference to new instance | Styling customizations | | `value` | string | `''` | String value | ### ImageModel (@jupyter-widgets/controls, 1.2.0); ImageView (@jupyter-widgets/controls, 1.2.0) | Attribute | Type | Default | Help | | ----------------------- | -------------------------- | ----------------------------- | ----------------------------------------- | | `_dom_classes` | array of string | `[]` | CSS classes applied to widget DOM element | | `_model_module` | string | `'@jupyter-widgets/controls'` | | `_model_module_version` | string | `'1.2.0'` | | `_model_name` | string | `'ImageModel'` | | `_view_module` | string | `'@jupyter-widgets/controls'` | | `_view_module_version` | string | `'1.2.0'` | | `_view_name` | string | `'ImageView'` | | `format` | string | `'png'` | The format of the image. | | `height` | string | `''` | Height of the image in pixels. | | `layout` | reference to Layout widget | reference to new instance | | `value` | Bytes | `b''` | The image data as a byte string. | | `width` | string | `''` | Width of the image in pixels. | ### IntProgressModel (@jupyter-widgets/controls, 1.2.0); ProgressView (@jupyter-widgets/controls, 1.2.0) | Attribute | Type | Default | Help | | ----------------------- | -------------------------------------------------------------------- | ----------------------------- | ---------------------------------------------- | | `_dom_classes` | array of string | `[]` | CSS classes applied to widget DOM element | | `_model_module` | string | `'@jupyter-widgets/controls'` | | `_model_module_version` | string | `'1.2.0'` | | `_model_name` | string | `'IntProgressModel'` | | `_view_module` | string | `'@jupyter-widgets/controls'` | | `_view_module_version` | string | `'1.2.0'` | | `_view_name` | string | `'ProgressView'` | | `bar_style` | string (one of `'success'`, `'info'`, `'warning'`, `'danger'`, `''`) | `''` | Use a predefined styling for the progress bar. | | `description` | string | `''` | Description of the control. | | `layout` | reference to Layout widget | reference to new instance | | `max` | number (integer) | `100` | Max value | | `min` | number (integer) | `0` | Min value | | `orientation` | string (one of `'horizontal'`, `'vertical'`) | `'horizontal'` | Vertical or horizontal. | | `style` | reference to ProgressStyle widget | reference to new instance | | `value` | number (integer) | `0` | Int value | ### IntRangeSliderModel (@jupyter-widgets/controls, 1.2.0); IntRangeSliderView (@jupyter-widgets/controls, 1.2.0) | Attribute | Type | Default | Help | | ----------------------- | -------------------------------------------- | ----------------------------- | ----------------------------------------------------------------- | | `_dom_classes` | array of string | `[]` | CSS classes applied to widget DOM element | | `_model_module` | string | `'@jupyter-widgets/controls'` | | `_model_module_version` | string | `'1.2.0'` | | `_model_name` | string | `'IntRangeSliderModel'` | | `_view_module` | string | `'@jupyter-widgets/controls'` | | `_view_module_version` | string | `'1.2.0'` | | `_view_name` | string | `'IntRangeSliderView'` | | `continuous_update` | boolean | `true` | Update the value of the widget as the user is sliding the slider. | | `description` | string | `''` | Description of the control. | | `disabled` | boolean | `false` | Enable or disable user changes | | `layout` | reference to Layout widget | reference to new instance | | `max` | number (integer) | `100` | Max value | | `min` | number (integer) | `0` | Min value | | `orientation` | string (one of `'horizontal'`, `'vertical'`) | `'horizontal'` | Vertical or horizontal. | | `readout` | boolean | `true` | Display the current value of the slider next to it. | | `readout_format` | string | `'d'` | Format for the readout | | `step` | number (integer) | `1` | Minimum step that the value can take | | `style` | reference to SliderStyle widget | reference to new instance | Slider style customizations. | | `value` | array | `[0, 1]` | Tuple of (lower, upper) bounds | ### IntSliderModel (@jupyter-widgets/controls, 1.2.0); IntSliderView (@jupyter-widgets/controls, 1.2.0) | Attribute | Type | Default | Help | | ----------------------- | -------------------------------------------- | ----------------------------- | ----------------------------------------------------------------- | | `_dom_classes` | array of string | `[]` | CSS classes applied to widget DOM element | | `_model_module` | string | `'@jupyter-widgets/controls'` | | `_model_module_version` | string | `'1.2.0'` | | `_model_name` | string | `'IntSliderModel'` | | `_view_module` | string | `'@jupyter-widgets/controls'` | | `_view_module_version` | string | `'1.2.0'` | | `_view_name` | string | `'IntSliderView'` | | `continuous_update` | boolean | `true` | Update the value of the widget as the user is holding the slider. | | `description` | string | `''` | Description of the control. | | `disabled` | boolean | `false` | Enable or disable user changes | | `layout` | reference to Layout widget | reference to new instance | | `max` | number (integer) | `100` | Max value | | `min` | number (integer) | `0` | Min value | | `orientation` | string (one of `'horizontal'`, `'vertical'`) | `'horizontal'` | Vertical or horizontal. | | `readout` | boolean | `true` | Display the current value of the slider next to it. | | `readout_format` | string | `'d'` | Format for the readout | | `step` | number (integer) | `1` | Minimum step to increment the value | | `style` | reference to SliderStyle widget | reference to new instance | | `value` | number (integer) | `0` | Int value | ### IntTextModel (@jupyter-widgets/controls, 1.2.0); IntTextView (@jupyter-widgets/controls, 1.2.0) | Attribute | Type | Default | Help | | ----------------------- | ------------------------------------ | ----------------------------- | ------------------------------------------------------------------------------------------------------------ | | `_dom_classes` | array of string | `[]` | CSS classes applied to widget DOM element | | `_model_module` | string | `'@jupyter-widgets/controls'` | | `_model_module_version` | string | `'1.2.0'` | | `_model_name` | string | `'IntTextModel'` | | `_view_module` | string | `'@jupyter-widgets/controls'` | | `_view_module_version` | string | `'1.2.0'` | | `_view_name` | string | `'IntTextView'` | | `continuous_update` | boolean | `false` | Update the value as the user types. If False, update on submission, e.g., pressing Enter or navigating away. | | `description` | string | `''` | Description of the control. | | `disabled` | boolean | `false` | Enable or disable user changes | | `layout` | reference to Layout widget | reference to new instance | | `step` | number (integer) | `1` | Minimum step to increment the value | | `style` | reference to DescriptionStyle widget | reference to new instance | Styling customizations | | `value` | number (integer) | `0` | Int value | ### LabelModel (@jupyter-widgets/controls, 1.2.0); LabelView (@jupyter-widgets/controls, 1.2.0) | Attribute | Type | Default | Help | | ----------------------- | ------------------------------------ | ----------------------------- | ------------------------------------------------------- | | `_dom_classes` | array of string | `[]` | CSS classes applied to widget DOM element | | `_model_module` | string | `'@jupyter-widgets/controls'` | | `_model_module_version` | string | `'1.2.0'` | | `_model_name` | string | `'LabelModel'` | | `_view_module` | string | `'@jupyter-widgets/controls'` | | `_view_module_version` | string | `'1.2.0'` | | `_view_name` | string | `'LabelView'` | | `description` | string | `''` | Description of the control. | | `layout` | reference to Layout widget | reference to new instance | | `placeholder` | string | `'\u200b'` | Placeholder text to display when nothing has been typed | | `style` | reference to DescriptionStyle widget | reference to new instance | Styling customizations | | `value` | string | `''` | String value | ### LinkModel (@jupyter-widgets/controls, 1.2.0); None (@jupyter-widgets/controls, 1.2.0) | Attribute | Type | Default | Help | | ----------------------- | ---------------- | ----------------------------- | -------------------------------------- | | `_model_module` | string | `'@jupyter-widgets/controls'` | | `_model_module_version` | string | `'1.2.0'` | | `_model_name` | string | `'LinkModel'` | | `_view_module` | string | `'@jupyter-widgets/controls'` | | `_view_module_version` | string | `'1.2.0'` | | `_view_name` | `null` or string | `null` | Name of the view. | | `source` | array | `[]` | The source (widget, 'trait_name') pair | | `target` | array | `[]` | The target (widget, 'trait_name') pair | ### PasswordModel (@jupyter-widgets/controls, 1.2.0); PasswordView (@jupyter-widgets/controls, 1.2.0) | Attribute | Type | Default | Help | | ----------------------- | ------------------------------------ | ----------------------------- | ------------------------------------------------------------------------------------------------------------ | | `_dom_classes` | array of string | `[]` | CSS classes applied to widget DOM element | | `_model_module` | string | `'@jupyter-widgets/controls'` | | `_model_module_version` | string | `'1.2.0'` | | `_model_name` | string | `'PasswordModel'` | | `_view_module` | string | `'@jupyter-widgets/controls'` | | `_view_module_version` | string | `'1.2.0'` | | `_view_name` | string | `'PasswordView'` | | `continuous_update` | boolean | `true` | Update the value as the user types. If False, update on submission, e.g., pressing Enter or navigating away. | | `description` | string | `''` | Description of the control. | | `disabled` | boolean | `false` | Enable or disable user changes | | `layout` | reference to Layout widget | reference to new instance | | `placeholder` | string | `'\u200b'` | Placeholder text to display when nothing has been typed | | `style` | reference to DescriptionStyle widget | reference to new instance | Styling customizations | | `value` | string | `''` | String value | ### PlayModel (@jupyter-widgets/controls, 1.2.0); PlayView (@jupyter-widgets/controls, 1.2.0) | Attribute | Type | Default | Help | | ----------------------- | ------------------------------------ | ----------------------------- | ----------------------------------------------------- | | `_dom_classes` | array of string | `[]` | CSS classes applied to widget DOM element | | `_model_module` | string | `'@jupyter-widgets/controls'` | | `_model_module_version` | string | `'1.2.0'` | | `_model_name` | string | `'PlayModel'` | | `_playing` | boolean | `false` | Whether the control is currently playing. | | `_repeat` | boolean | `false` | Whether the control will repeat in a continuous loop. | | `_view_module` | string | `'@jupyter-widgets/controls'` | | `_view_module_version` | string | `'1.2.0'` | | `_view_name` | string | `'PlayView'` | | `description` | string | `''` | Description of the control. | | `disabled` | boolean | `false` | Enable or disable user changes | | `interval` | number (integer) | `100` | The maximum value for the play control. | | `layout` | reference to Layout widget | reference to new instance | | `max` | number (integer) | `100` | Max value | | `min` | number (integer) | `0` | Min value | | `show_repeat` | boolean | `true` | Show the repeat toggle button in the widget. | | `step` | number (integer) | `1` | Increment step | | `style` | reference to DescriptionStyle widget | reference to new instance | Styling customizations | | `value` | number (integer) | `0` | Int value | ### ProgressStyleModel (@jupyter-widgets/controls, 1.2.0); StyleView (@jupyter-widgets/base, 1.0.0) | Attribute | Type | Default | Help | | ----------------------- | ---------------- | ----------------------------- | ---------------------------------------------------- | | `_model_module` | string | `'@jupyter-widgets/controls'` | | `_model_module_version` | string | `'1.2.0'` | | `_model_name` | string | `'ProgressStyleModel'` | | `_view_module` | string | `'@jupyter-widgets/base'` | | `_view_module_version` | string | `'1.0.0'` | | `_view_name` | string | `'StyleView'` | | `bar_color` | `null` or string | `null` | Color of the progress bar. | | `description_width` | string | `''` | Width of the description to the side of the control. | ### RadioButtonsModel (@jupyter-widgets/controls, 1.2.0); RadioButtonsView (@jupyter-widgets/controls, 1.2.0) | Attribute | Type | Default | Help | | ----------------------- | ------------------------------------ | ----------------------------- | ----------------------------------------- | | `_dom_classes` | array of string | `[]` | CSS classes applied to widget DOM element | | `_model_module` | string | `'@jupyter-widgets/controls'` | | `_model_module_version` | string | `'1.2.0'` | | `_model_name` | string | `'RadioButtonsModel'` | | `_options_labels` | array of string | `[]` | The labels for the options. | | `_view_module` | string | `'@jupyter-widgets/controls'` | | `_view_module_version` | string | `'1.2.0'` | | `_view_name` | string | `'RadioButtonsView'` | | `description` | string | `''` | Description of the control. | | `disabled` | boolean | `false` | Enable or disable user changes | | `index` | `null` or number (integer) | `null` | Selected index | | `layout` | reference to Layout widget | reference to new instance | | `style` | reference to DescriptionStyle widget | reference to new instance | Styling customizations | ### SelectModel (@jupyter-widgets/controls, 1.2.0); SelectView (@jupyter-widgets/controls, 1.2.0) | Attribute | Type | Default | Help | | ----------------------- | ------------------------------------ | ----------------------------- | ----------------------------------------- | | `_dom_classes` | array of string | `[]` | CSS classes applied to widget DOM element | | `_model_module` | string | `'@jupyter-widgets/controls'` | | `_model_module_version` | string | `'1.2.0'` | | `_model_name` | string | `'SelectModel'` | | `_options_labels` | array of string | `[]` | The labels for the options. | | `_view_module` | string | `'@jupyter-widgets/controls'` | | `_view_module_version` | string | `'1.2.0'` | | `_view_name` | string | `'SelectView'` | | `description` | string | `''` | Description of the control. | | `disabled` | boolean | `false` | Enable or disable user changes | | `index` | `null` or number (integer) | `null` | Selected index | | `layout` | reference to Layout widget | reference to new instance | | `rows` | number (integer) | `5` | The number of rows to display. | | `style` | reference to DescriptionStyle widget | reference to new instance | Styling customizations | ### SelectMultipleModel (@jupyter-widgets/controls, 1.2.0); SelectMultipleView (@jupyter-widgets/controls, 1.2.0) | Attribute | Type | Default | Help | | ----------------------- | ------------------------------------ | ----------------------------- | ----------------------------------------- | | `_dom_classes` | array of string | `[]` | CSS classes applied to widget DOM element | | `_model_module` | string | `'@jupyter-widgets/controls'` | | `_model_module_version` | string | `'1.2.0'` | | `_model_name` | string | `'SelectMultipleModel'` | | `_options_labels` | array of string | `[]` | The labels for the options. | | `_view_module` | string | `'@jupyter-widgets/controls'` | | `_view_module_version` | string | `'1.2.0'` | | `_view_name` | string | `'SelectMultipleView'` | | `description` | string | `''` | Description of the control. | | `disabled` | boolean | `false` | Enable or disable user changes | | `index` | array of number (integer) | `[]` | Selected indices | | `layout` | reference to Layout widget | reference to new instance | | `rows` | number (integer) | `5` | The number of rows to display. | | `style` | reference to DescriptionStyle widget | reference to new instance | Styling customizations | ### SelectionRangeSliderModel (@jupyter-widgets/controls, 1.2.0); SelectionRangeSliderView (@jupyter-widgets/controls, 1.2.0) | Attribute | Type | Default | Help | | ----------------------- | -------------------------------------------- | ----------------------------- | ----------------------------------------------------------------- | | `_dom_classes` | array of string | `[]` | CSS classes applied to widget DOM element | | `_model_module` | string | `'@jupyter-widgets/controls'` | | `_model_module_version` | string | `'1.2.0'` | | `_model_name` | string | `'SelectionRangeSliderModel'` | | `_options_labels` | array of string | `[]` | The labels for the options. | | `_view_module` | string | `'@jupyter-widgets/controls'` | | `_view_module_version` | string | `'1.2.0'` | | `_view_name` | string | `'SelectionRangeSliderView'` | | `continuous_update` | boolean | `true` | Update the value of the widget as the user is holding the slider. | | `description` | string | `''` | Description of the control. | | `disabled` | boolean | `false` | Enable or disable user changes | | `index` | array | `[0, 0]` | Min and max selected indices | | `layout` | reference to Layout widget | reference to new instance | | `orientation` | string (one of `'horizontal'`, `'vertical'`) | `'horizontal'` | Vertical or horizontal. | | `readout` | boolean | `true` | Display the current selected label next to the slider | | `style` | reference to DescriptionStyle widget | reference to new instance | Styling customizations | ### SelectionSliderModel (@jupyter-widgets/controls, 1.2.0); SelectionSliderView (@jupyter-widgets/controls, 1.2.0) | Attribute | Type | Default | Help | | ----------------------- | -------------------------------------------- | ----------------------------- | ----------------------------------------------------------------- | | `_dom_classes` | array of string | `[]` | CSS classes applied to widget DOM element | | `_model_module` | string | `'@jupyter-widgets/controls'` | | `_model_module_version` | string | `'1.2.0'` | | `_model_name` | string | `'SelectionSliderModel'` | | `_options_labels` | array of string | `[]` | The labels for the options. | | `_view_module` | string | `'@jupyter-widgets/controls'` | | `_view_module_version` | string | `'1.2.0'` | | `_view_name` | string | `'SelectionSliderView'` | | `continuous_update` | boolean | `true` | Update the value of the widget as the user is holding the slider. | | `description` | string | `''` | Description of the control. | | `disabled` | boolean | `false` | Enable or disable user changes | | `index` | number (integer) | `0` | Selected index | | `layout` | reference to Layout widget | reference to new instance | | `orientation` | string (one of `'horizontal'`, `'vertical'`) | `'horizontal'` | Vertical or horizontal. | | `readout` | boolean | `true` | Display the current selected label next to the slider | | `style` | reference to DescriptionStyle widget | reference to new instance | Styling customizations | ### SliderStyleModel (@jupyter-widgets/controls, 1.2.0); StyleView (@jupyter-widgets/base, 1.0.0) | Attribute | Type | Default | Help | | ----------------------- | ---------------- | ----------------------------- | ---------------------------------------------------- | | `_model_module` | string | `'@jupyter-widgets/controls'` | | `_model_module_version` | string | `'1.2.0'` | | `_model_name` | string | `'SliderStyleModel'` | | `_view_module` | string | `'@jupyter-widgets/base'` | | `_view_module_version` | string | `'1.0.0'` | | `_view_name` | string | `'StyleView'` | | `description_width` | string | `''` | Width of the description to the side of the control. | | `handle_color` | `null` or string | `null` | Color of the slider handle. | ### TabModel (@jupyter-widgets/controls, 1.2.0); TabView (@jupyter-widgets/controls, 1.2.0) | Attribute | Type | Default | Help | | ----------------------- | -------------------------------------------------------------------- | ----------------------------- | --------------------------------------------------------------------------------------------------------------------------------- | | `_dom_classes` | array of string | `[]` | CSS classes applied to widget DOM element | | `_model_module` | string | `'@jupyter-widgets/controls'` | | `_model_module_version` | string | `'1.2.0'` | | `_model_name` | string | `'TabModel'` | | `_titles` | object | `{}` | Titles of the pages | | `_view_module` | string | `'@jupyter-widgets/controls'` | | `_view_module_version` | string | `'1.2.0'` | | `_view_name` | string | `'TabView'` | | `box_style` | string (one of `'success'`, `'info'`, `'warning'`, `'danger'`, `''`) | `''` | Use a predefined styling for the box. | | `children` | array of reference to Widget widget | `[]` | List of widget children | | `layout` | reference to Layout widget | reference to new instance | | `selected_index` | `null` or number (integer) | `0` | The index of the selected page. This is either an integer selecting a particular sub-widget, or None to have no widgets selected. | ### TextModel (@jupyter-widgets/controls, 1.2.0); TextView (@jupyter-widgets/controls, 1.2.0) | Attribute | Type | Default | Help | | ----------------------- | ------------------------------------ | ----------------------------- | ------------------------------------------------------------------------------------------------------------ | | `_dom_classes` | array of string | `[]` | CSS classes applied to widget DOM element | | `_model_module` | string | `'@jupyter-widgets/controls'` | | `_model_module_version` | string | `'1.2.0'` | | `_model_name` | string | `'TextModel'` | | `_view_module` | string | `'@jupyter-widgets/controls'` | | `_view_module_version` | string | `'1.2.0'` | | `_view_name` | string | `'TextView'` | | `continuous_update` | boolean | `true` | Update the value as the user types. If False, update on submission, e.g., pressing Enter or navigating away. | | `description` | string | `''` | Description of the control. | | `disabled` | boolean | `false` | Enable or disable user changes | | `layout` | reference to Layout widget | reference to new instance | | `placeholder` | string | `'\u200b'` | Placeholder text to display when nothing has been typed | | `style` | reference to DescriptionStyle widget | reference to new instance | Styling customizations | | `value` | string | `''` | String value | ### TextareaModel (@jupyter-widgets/controls, 1.2.0); TextareaView (@jupyter-widgets/controls, 1.2.0) | Attribute | Type | Default | Help | | ----------------------- | ------------------------------------ | ----------------------------- | ------------------------------------------------------------------------------------------------------------ | | `_dom_classes` | array of string | `[]` | CSS classes applied to widget DOM element | | `_model_module` | string | `'@jupyter-widgets/controls'` | | `_model_module_version` | string | `'1.2.0'` | | `_model_name` | string | `'TextareaModel'` | | `_view_module` | string | `'@jupyter-widgets/controls'` | | `_view_module_version` | string | `'1.2.0'` | | `_view_name` | string | `'TextareaView'` | | `continuous_update` | boolean | `true` | Update the value as the user types. If False, update on submission, e.g., pressing Enter or navigating away. | | `description` | string | `''` | Description of the control. | | `disabled` | boolean | `false` | Enable or disable user changes | | `layout` | reference to Layout widget | reference to new instance | | `placeholder` | string | `'\u200b'` | Placeholder text to display when nothing has been typed | | `rows` | `null` or number (integer) | `null` | The number of rows to display. | | `style` | reference to DescriptionStyle widget | reference to new instance | Styling customizations | | `value` | string | `''` | String value | ### ToggleButtonModel (@jupyter-widgets/controls, 1.2.0); ToggleButtonView (@jupyter-widgets/controls, 1.2.0) | Attribute | Type | Default | Help | | ----------------------- | --------------------------------------------------------------------------------- | ----------------------------- | ----------------------------------------- | | `_dom_classes` | array of string | `[]` | CSS classes applied to widget DOM element | | `_model_module` | string | `'@jupyter-widgets/controls'` | | `_model_module_version` | string | `'1.2.0'` | | `_model_name` | string | `'ToggleButtonModel'` | | `_view_module` | string | `'@jupyter-widgets/controls'` | | `_view_module_version` | string | `'1.2.0'` | | `_view_name` | string | `'ToggleButtonView'` | | `button_style` | string (one of `'primary'`, `'success'`, `'info'`, `'warning'`, `'danger'`, `''`) | `''` | Use a predefined styling for the button. | | `description` | string | `''` | Description of the control. | | `disabled` | boolean | `false` | Enable or disable user changes. | | `icon` | string | `''` | Font-awesome icon. | | `layout` | reference to Layout widget | reference to new instance | | `style` | reference to DescriptionStyle widget | reference to new instance | Styling customizations | | `tooltip` | string | `''` | Tooltip caption of the toggle button. | | `value` | boolean | `false` | Bool value | ### ToggleButtonsModel (@jupyter-widgets/controls, 1.2.0); ToggleButtonsView (@jupyter-widgets/controls, 1.2.0) | Attribute | Type | Default | Help | | ----------------------- | ------------------------------------------------------------------------------------------- | ----------------------------- | ----------------------------------------------------------------------- | | `_dom_classes` | array of string | `[]` | CSS classes applied to widget DOM element | | `_model_module` | string | `'@jupyter-widgets/controls'` | | `_model_module_version` | string | `'1.2.0'` | | `_model_name` | string | `'ToggleButtonsModel'` | | `_options_labels` | array of string | `[]` | The labels for the options. | | `_view_module` | string | `'@jupyter-widgets/controls'` | | `_view_module_version` | string | `'1.2.0'` | | `_view_name` | string | `'ToggleButtonsView'` | | `button_style` | `null` or string (one of `'primary'`, `'success'`, `'info'`, `'warning'`, `'danger'`, `''`) | `''` | Use a predefined styling for the buttons. | | `description` | string | `''` | Description of the control. | | `disabled` | boolean | `false` | Enable or disable user changes | | `icons` | array of string | `[]` | Icons names for each button (FontAwesome names without the fa- prefix). | | `index` | `null` or number (integer) | `null` | Selected index | | `layout` | reference to Layout widget | reference to new instance | | `style` | reference to ToggleButtonsStyle widget | reference to new instance | | `tooltips` | array of string | `[]` | Tooltips for each button. | ### ToggleButtonsStyleModel (@jupyter-widgets/controls, 1.2.0); StyleView (@jupyter-widgets/base, 1.0.0) | Attribute | Type | Default | Help | | ----------------------- | ------ | ----------------------------- | ---------------------------------------------------- | | `_model_module` | string | `'@jupyter-widgets/controls'` | | `_model_module_version` | string | `'1.2.0'` | | `_model_name` | string | `'ToggleButtonsStyleModel'` | | `_view_module` | string | `'@jupyter-widgets/base'` | | `_view_module_version` | string | `'1.0.0'` | | `_view_name` | string | `'StyleView'` | | `button_width` | string | `''` | The width of each button. | | `description_width` | string | `''` | Width of the description to the side of the control. | | `font_weight` | string | `''` | Text font weight of each button. | ### VBoxModel (@jupyter-widgets/controls, 1.2.0); VBoxView (@jupyter-widgets/controls, 1.2.0) | Attribute | Type | Default | Help | | ----------------------- | -------------------------------------------------------------------- | ----------------------------- | ----------------------------------------- | | `_dom_classes` | array of string | `[]` | CSS classes applied to widget DOM element | | `_model_module` | string | `'@jupyter-widgets/controls'` | | `_model_module_version` | string | `'1.2.0'` | | `_model_name` | string | `'VBoxModel'` | | `_view_module` | string | `'@jupyter-widgets/controls'` | | `_view_module_version` | string | `'1.2.0'` | | `_view_name` | string | `'VBoxView'` | | `box_style` | string (one of `'success'`, `'info'`, `'warning'`, `'danger'`, `''`) | `''` | Use a predefined styling for the box. | | `children` | array of reference to Widget widget | `[]` | List of widget children | | `layout` | reference to Layout widget | reference to new instance | ### ValidModel (@jupyter-widgets/controls, 1.2.0); ValidView (@jupyter-widgets/controls, 1.2.0) | Attribute | Type | Default | Help | | ----------------------- | ------------------------------------ | ----------------------------- | ----------------------------------------- | | `_dom_classes` | array of string | `[]` | CSS classes applied to widget DOM element | | `_model_module` | string | `'@jupyter-widgets/controls'` | | `_model_module_version` | string | `'1.2.0'` | | `_model_name` | string | `'ValidModel'` | | `_view_module` | string | `'@jupyter-widgets/controls'` | | `_view_module_version` | string | `'1.2.0'` | | `_view_name` | string | `'ValidView'` | | `description` | string | `''` | Description of the control. | | `disabled` | boolean | `false` | Enable or disable user changes. | | `layout` | reference to Layout widget | reference to new instance | | `readout` | string | `'Invalid'` | Message displayed when the value is False | | `style` | reference to DescriptionStyle widget | reference to new instance | Styling customizations | | `value` | boolean | `false` | Bool value | ### OutputModel (@jupyter-widgets/output, 1.0.0); OutputView (@jupyter-widgets/output, 1.0.0) | Attribute | Type | Default | Help | | ----------------------- | -------------------------- | --------------------------- | --------------------------------------------- | | `_dom_classes` | array of string | `[]` | CSS classes applied to widget DOM element | | `_model_module` | string | `'@jupyter-widgets/output'` | | `_model_module_version` | string | `'1.0.0'` | | `_model_name` | string | `'OutputModel'` | | `_view_module` | string | `'@jupyter-widgets/output'` | | `_view_module_version` | string | `'1.0.0'` | | `_view_name` | string | `'OutputView'` | | `layout` | reference to Layout widget | reference to new instance | | `msg_id` | string | `''` | Parent message id of messages to capture | | `outputs` | array of object | `[]` | The output messages synced from the frontend. | ipywidgets-8.1.1/packages/schema/jupyterwidgetmodels.v7-3.md000066400000000000000000003757721450026722000241010ustar00rootroot00000000000000# Model State This is a description of the model state for each widget in the core Jupyter widgets library. The model ID of a widget is the id of the comm object the widget is using. A reference to a widget is serialized to JSON as a string of the form `"IPY_MODEL_"`, where `` is the model ID of a previously created widget of the specified type. This model specification is for ipywidgets 7.3._, @jupyter-widgets/base 1.1._, and @jupyter-widgets/controls 1.3.\*. ## Model attributes Each widget in the Jupyter core widgets is represented below. The heading represents the model name, module, and version, view name, module, and version that the widget is registered with. ### LayoutModel (@jupyter-widgets/base, 1.1.0); LayoutView (@jupyter-widgets/base, 1.1.0) | Attribute | Type | Default | Help | | ----------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------- | ---------------------------------------------------------------- | | `_model_module` | string | `'@jupyter-widgets/base'` | The namespace for the model. | | `_model_module_version` | string | `'1.1.0'` | A semver requirement for namespace version containing the model. | | `_model_name` | string | `'LayoutModel'` | | `_view_module` | string | `'@jupyter-widgets/base'` | | `_view_module_version` | string | `'1.1.0'` | | `_view_name` | string | `'LayoutView'` | | `align_content` | `null` or string (one of `'flex-start'`, `'flex-end'`, `'center'`, `'space-between'`, `'space-around'`, `'space-evenly'`, `'stretch'`, `'inherit'`, `'initial'`, `'unset'`) | `null` | The align-content CSS attribute. | | `align_items` | `null` or string (one of `'flex-start'`, `'flex-end'`, `'center'`, `'baseline'`, `'stretch'`, `'inherit'`, `'initial'`, `'unset'`) | `null` | The align-items CSS attribute. | | `align_self` | `null` or string (one of `'auto'`, `'flex-start'`, `'flex-end'`, `'center'`, `'baseline'`, `'stretch'`, `'inherit'`, `'initial'`, `'unset'`) | `null` | The align-self CSS attribute. | | `border` | `null` or string | `null` | The border CSS attribute. | | `bottom` | `null` or string | `null` | The bottom CSS attribute. | | `display` | `null` or string | `null` | The display CSS attribute. | | `flex` | `null` or string | `null` | The flex CSS attribute. | | `flex_flow` | `null` or string | `null` | The flex-flow CSS attribute. | | `grid_area` | `null` or string | `null` | The grid-area CSS attribute. | | `grid_auto_columns` | `null` or string | `null` | The grid-auto-columns CSS attribute. | | `grid_auto_flow` | `null` or string (one of `'column'`, `'row'`, `'row dense'`, `'column dense'`, `'inherit'`, `'initial'`, `'unset'`) | `null` | The grid-auto-flow CSS attribute. | | `grid_auto_rows` | `null` or string | `null` | The grid-auto-rows CSS attribute. | | `grid_column` | `null` or string | `null` | The grid-column CSS attribute. | | `grid_gap` | `null` or string | `null` | The grid-gap CSS attribute. | | `grid_row` | `null` or string | `null` | The grid-row CSS attribute. | | `grid_template_areas` | `null` or string | `null` | The grid-template-areas CSS attribute. | | `grid_template_columns` | `null` or string | `null` | The grid-template-columns CSS attribute. | | `grid_template_rows` | `null` or string | `null` | The grid-template-rows CSS attribute. | | `height` | `null` or string | `null` | The height CSS attribute. | | `justify_content` | `null` or string (one of `'flex-start'`, `'flex-end'`, `'center'`, `'space-between'`, `'space-around'`, `'inherit'`, `'initial'`, `'unset'`) | `null` | The justify-content CSS attribute. | | `left` | `null` or string | `null` | The left CSS attribute. | | `margin` | `null` or string | `null` | The margin CSS attribute. | | `max_height` | `null` or string | `null` | The max-height CSS attribute. | | `max_width` | `null` or string | `null` | The max-width CSS attribute. | | `min_height` | `null` or string | `null` | The min-height CSS attribute. | | `min_width` | `null` or string | `null` | The min-width CSS attribute. | | `order` | `null` or string | `null` | The order CSS attribute. | | `overflow` | `null` or string (one of `'visible'`, `'hidden'`, `'scroll'`, `'auto'`, `'inherit'`, `'initial'`, `'unset'`) | `null` | The overflow CSS attribute. | | `overflow_x` | `null` or string (one of `'visible'`, `'hidden'`, `'scroll'`, `'auto'`, `'inherit'`, `'initial'`, `'unset'`) | `null` | The overflow-x CSS attribute. | | `overflow_y` | `null` or string (one of `'visible'`, `'hidden'`, `'scroll'`, `'auto'`, `'inherit'`, `'initial'`, `'unset'`) | `null` | The overflow-y CSS attribute. | | `padding` | `null` or string | `null` | The padding CSS attribute. | | `right` | `null` or string | `null` | The right CSS attribute. | | `top` | `null` or string | `null` | The top CSS attribute. | | `visibility` | `null` or string (one of `'visible'`, `'hidden'`, `'inherit'`, `'initial'`, `'unset'`) | `null` | The visibility CSS attribute. | | `width` | `null` or string | `null` | The width CSS attribute. | ### AccordionModel (@jupyter-widgets/controls, 1.3.0); AccordionView (@jupyter-widgets/controls, 1.3.0) | Attribute | Type | Default | Help | | ----------------------- | -------------------------------------------------------------------- | ----------------------------- | --------------------------------------------------------------------------------------------------------------------------------- | | `_dom_classes` | array of string | `[]` | CSS classes applied to widget DOM element | | `_model_module` | string | `'@jupyter-widgets/controls'` | | `_model_module_version` | string | `'1.3.0'` | | `_model_name` | string | `'AccordionModel'` | | `_titles` | object | `{}` | Titles of the pages | | `_view_module` | string | `'@jupyter-widgets/controls'` | | `_view_module_version` | string | `'1.3.0'` | | `_view_name` | string | `'AccordionView'` | | `box_style` | string (one of `'success'`, `'info'`, `'warning'`, `'danger'`, `''`) | `''` | Use a predefined styling for the box. | | `children` | array of reference to Widget widget | `[]` | List of widget children | | `layout` | reference to Layout widget | reference to new instance | | `selected_index` | `null` or number (integer) | `0` | The index of the selected page. This is either an integer selecting a particular sub-widget, or None to have no widgets selected. | ### BoundedFloatTextModel (@jupyter-widgets/controls, 1.3.0); FloatTextView (@jupyter-widgets/controls, 1.3.0) | Attribute | Type | Default | Help | | ----------------------- | ------------------------------------ | ----------------------------- | ------------------------------------------------------------------------------------------------------------ | | `_dom_classes` | array of string | `[]` | CSS classes applied to widget DOM element | | `_model_module` | string | `'@jupyter-widgets/controls'` | | `_model_module_version` | string | `'1.3.0'` | | `_model_name` | string | `'BoundedFloatTextModel'` | | `_view_module` | string | `'@jupyter-widgets/controls'` | | `_view_module_version` | string | `'1.3.0'` | | `_view_name` | string | `'FloatTextView'` | | `continuous_update` | boolean | `false` | Update the value as the user types. If False, update on submission, e.g., pressing Enter or navigating away. | | `description` | string | `''` | Description of the control. | | `description_tooltip` | `null` or string | `null` | Tooltip for the description (defaults to description). | | `disabled` | boolean | `false` | Enable or disable user changes | | `layout` | reference to Layout widget | reference to new instance | | `max` | number (float) | `100.0` | Max value | | `min` | number (float) | `0.0` | Min value | | `step` | `null` or number (float) | `null` | Minimum step to increment the value | | `style` | reference to DescriptionStyle widget | reference to new instance | Styling customizations | | `value` | number (float) | `0.0` | Float value | ### BoundedIntTextModel (@jupyter-widgets/controls, 1.3.0); IntTextView (@jupyter-widgets/controls, 1.3.0) | Attribute | Type | Default | Help | | ----------------------- | ------------------------------------ | ----------------------------- | ------------------------------------------------------------------------------------------------------------ | | `_dom_classes` | array of string | `[]` | CSS classes applied to widget DOM element | | `_model_module` | string | `'@jupyter-widgets/controls'` | | `_model_module_version` | string | `'1.3.0'` | | `_model_name` | string | `'BoundedIntTextModel'` | | `_view_module` | string | `'@jupyter-widgets/controls'` | | `_view_module_version` | string | `'1.3.0'` | | `_view_name` | string | `'IntTextView'` | | `continuous_update` | boolean | `false` | Update the value as the user types. If False, update on submission, e.g., pressing Enter or navigating away. | | `description` | string | `''` | Description of the control. | | `description_tooltip` | `null` or string | `null` | Tooltip for the description (defaults to description). | | `disabled` | boolean | `false` | Enable or disable user changes | | `layout` | reference to Layout widget | reference to new instance | | `max` | number (integer) | `100` | Max value | | `min` | number (integer) | `0` | Min value | | `step` | number (integer) | `1` | Minimum step to increment the value | | `style` | reference to DescriptionStyle widget | reference to new instance | Styling customizations | | `value` | number (integer) | `0` | Int value | ### BoxModel (@jupyter-widgets/controls, 1.3.0); BoxView (@jupyter-widgets/controls, 1.3.0) | Attribute | Type | Default | Help | | ----------------------- | -------------------------------------------------------------------- | ----------------------------- | ----------------------------------------- | | `_dom_classes` | array of string | `[]` | CSS classes applied to widget DOM element | | `_model_module` | string | `'@jupyter-widgets/controls'` | | `_model_module_version` | string | `'1.3.0'` | | `_model_name` | string | `'BoxModel'` | | `_view_module` | string | `'@jupyter-widgets/controls'` | | `_view_module_version` | string | `'1.3.0'` | | `_view_name` | string | `'BoxView'` | | `box_style` | string (one of `'success'`, `'info'`, `'warning'`, `'danger'`, `''`) | `''` | Use a predefined styling for the box. | | `children` | array of reference to Widget widget | `[]` | List of widget children | | `layout` | reference to Layout widget | reference to new instance | ### ButtonModel (@jupyter-widgets/controls, 1.3.0); ButtonView (@jupyter-widgets/controls, 1.3.0) | Attribute | Type | Default | Help | | ----------------------- | --------------------------------------------------------------------------------- | ----------------------------- | ------------------------------------------------- | | `_dom_classes` | array of string | `[]` | CSS classes applied to widget DOM element | | `_model_module` | string | `'@jupyter-widgets/controls'` | | `_model_module_version` | string | `'1.3.0'` | | `_model_name` | string | `'ButtonModel'` | | `_view_module` | string | `'@jupyter-widgets/controls'` | | `_view_module_version` | string | `'1.3.0'` | | `_view_name` | string | `'ButtonView'` | | `button_style` | string (one of `'primary'`, `'success'`, `'info'`, `'warning'`, `'danger'`, `''`) | `''` | Use a predefined styling for the button. | | `description` | string | `''` | Button label. | | `disabled` | boolean | `false` | Enable or disable user changes. | | `icon` | string | `''` | Font-awesome icon name, without the 'fa-' prefix. | | `layout` | reference to Layout widget | reference to new instance | | `style` | reference to ButtonStyle widget | reference to new instance | | `tooltip` | string | `''` | Tooltip caption of the button. | ### ButtonStyleModel (@jupyter-widgets/controls, 1.3.0); StyleView (@jupyter-widgets/base, 1.1.0) | Attribute | Type | Default | Help | | ----------------------- | ---------------- | ----------------------------- | ------------------------ | | `_model_module` | string | `'@jupyter-widgets/controls'` | | `_model_module_version` | string | `'1.3.0'` | | `_model_name` | string | `'ButtonStyleModel'` | | `_view_module` | string | `'@jupyter-widgets/base'` | | `_view_module_version` | string | `'1.1.0'` | | `_view_name` | string | `'StyleView'` | | `button_color` | `null` or string | `null` | Color of the button | | `font_weight` | string | `''` | Button text font weight. | ### CheckboxModel (@jupyter-widgets/controls, 1.3.0); CheckboxView (@jupyter-widgets/controls, 1.3.0) | Attribute | Type | Default | Help | | ----------------------- | ------------------------------------ | ----------------------------- | ------------------------------------------------------------------- | | `_dom_classes` | array of string | `[]` | CSS classes applied to widget DOM element | | `_model_module` | string | `'@jupyter-widgets/controls'` | | `_model_module_version` | string | `'1.3.0'` | | `_model_name` | string | `'CheckboxModel'` | | `_view_module` | string | `'@jupyter-widgets/controls'` | | `_view_module_version` | string | `'1.3.0'` | | `_view_name` | string | `'CheckboxView'` | | `description` | string | `''` | Description of the control. | | `description_tooltip` | `null` or string | `null` | Tooltip for the description (defaults to description). | | `disabled` | boolean | `false` | Enable or disable user changes. | | `indent` | boolean | `true` | Indent the control to align with other controls with a description. | | `layout` | reference to Layout widget | reference to new instance | | `style` | reference to DescriptionStyle widget | reference to new instance | Styling customizations | | `value` | boolean | `false` | Bool value | ### ColorPickerModel (@jupyter-widgets/controls, 1.3.0); ColorPickerView (@jupyter-widgets/controls, 1.3.0) | Attribute | Type | Default | Help | | ----------------------- | ------------------------------------ | ----------------------------- | ------------------------------------------------------ | | `_dom_classes` | array of string | `[]` | CSS classes applied to widget DOM element | | `_model_module` | string | `'@jupyter-widgets/controls'` | | `_model_module_version` | string | `'1.3.0'` | | `_model_name` | string | `'ColorPickerModel'` | | `_view_module` | string | `'@jupyter-widgets/controls'` | | `_view_module_version` | string | `'1.3.0'` | | `_view_name` | string | `'ColorPickerView'` | | `concise` | boolean | `false` | Display short version with just a color selector. | | `description` | string | `''` | Description of the control. | | `description_tooltip` | `null` or string | `null` | Tooltip for the description (defaults to description). | | `disabled` | boolean | `false` | Enable or disable user changes. | | `layout` | reference to Layout widget | reference to new instance | | `style` | reference to DescriptionStyle widget | reference to new instance | Styling customizations | | `value` | string | `'black'` | The color value. | ### ControllerAxisModel (@jupyter-widgets/controls, 1.3.0); ControllerAxisView (@jupyter-widgets/controls, 1.3.0) | Attribute | Type | Default | Help | | ----------------------- | -------------------------- | ----------------------------- | ----------------------------------------- | | `_dom_classes` | array of string | `[]` | CSS classes applied to widget DOM element | | `_model_module` | string | `'@jupyter-widgets/controls'` | | `_model_module_version` | string | `'1.3.0'` | | `_model_name` | string | `'ControllerAxisModel'` | | `_view_module` | string | `'@jupyter-widgets/controls'` | | `_view_module_version` | string | `'1.3.0'` | | `_view_name` | string | `'ControllerAxisView'` | | `layout` | reference to Layout widget | reference to new instance | | `value` | number (float) | `0.0` | The value of the axis. | ### ControllerButtonModel (@jupyter-widgets/controls, 1.3.0); ControllerButtonView (@jupyter-widgets/controls, 1.3.0) | Attribute | Type | Default | Help | | ----------------------- | -------------------------- | ----------------------------- | ----------------------------------------- | | `_dom_classes` | array of string | `[]` | CSS classes applied to widget DOM element | | `_model_module` | string | `'@jupyter-widgets/controls'` | | `_model_module_version` | string | `'1.3.0'` | | `_model_name` | string | `'ControllerButtonModel'` | | `_view_module` | string | `'@jupyter-widgets/controls'` | | `_view_module_version` | string | `'1.3.0'` | | `_view_name` | string | `'ControllerButtonView'` | | `layout` | reference to Layout widget | reference to new instance | | `pressed` | boolean | `false` | Whether the button is pressed. | | `value` | number (float) | `0.0` | The value of the button. | ### ControllerModel (@jupyter-widgets/controls, 1.3.0); ControllerView (@jupyter-widgets/controls, 1.3.0) | Attribute | Type | Default | Help | | ----------------------- | ----------------------------------- | ----------------------------- | ----------------------------------------------------- | | `_dom_classes` | array of string | `[]` | CSS classes applied to widget DOM element | | `_model_module` | string | `'@jupyter-widgets/controls'` | | `_model_module_version` | string | `'1.3.0'` | | `_model_name` | string | `'ControllerModel'` | | `_view_module` | string | `'@jupyter-widgets/controls'` | | `_view_module_version` | string | `'1.3.0'` | | `_view_name` | string | `'ControllerView'` | | `axes` | array of reference to Axis widget | `[]` | The axes on the gamepad. | | `buttons` | array of reference to Button widget | `[]` | The buttons on the gamepad. | | `connected` | boolean | `false` | Whether the gamepad is connected. | | `index` | number (integer) | `0` | The id number of the controller. | | `layout` | reference to Layout widget | reference to new instance | | `mapping` | string | `''` | The name of the control mapping. | | `name` | string | `''` | The name of the controller. | | `timestamp` | number (float) | `0.0` | The last time the data from this gamepad was updated. | ### DatePickerModel (@jupyter-widgets/controls, 1.3.0); DatePickerView (@jupyter-widgets/controls, 1.3.0) | Attribute | Type | Default | Help | | ----------------------- | ------------------------------------ | ----------------------------- | ------------------------------------------------------ | | `_dom_classes` | array of string | `[]` | CSS classes applied to widget DOM element | | `_model_module` | string | `'@jupyter-widgets/controls'` | | `_model_module_version` | string | `'1.3.0'` | | `_model_name` | string | `'DatePickerModel'` | | `_view_module` | string | `'@jupyter-widgets/controls'` | | `_view_module_version` | string | `'1.3.0'` | | `_view_name` | string | `'DatePickerView'` | | `description` | string | `''` | Description of the control. | | `description_tooltip` | `null` or string | `null` | Tooltip for the description (defaults to description). | | `disabled` | boolean | `false` | Enable or disable user changes. | | `layout` | reference to Layout widget | reference to new instance | | `style` | reference to DescriptionStyle widget | reference to new instance | Styling customizations | | `value` | `null` or Date | `null` | ### DescriptionStyleModel (@jupyter-widgets/controls, 1.3.0); StyleView (@jupyter-widgets/base, 1.1.0) | Attribute | Type | Default | Help | | ----------------------- | ------ | ----------------------------- | ---------------------------------------------------- | | `_model_module` | string | `'@jupyter-widgets/controls'` | | `_model_module_version` | string | `'1.3.0'` | | `_model_name` | string | `'DescriptionStyleModel'` | | `_view_module` | string | `'@jupyter-widgets/base'` | | `_view_module_version` | string | `'1.1.0'` | | `_view_name` | string | `'StyleView'` | | `description_width` | string | `''` | Width of the description to the side of the control. | ### DirectionalLinkModel (@jupyter-widgets/controls, 1.3.0); None (@jupyter-widgets/controls, 1.3.0) | Attribute | Type | Default | Help | | ----------------------- | ---------------- | ----------------------------- | -------------------------------------- | | `_model_module` | string | `'@jupyter-widgets/controls'` | | `_model_module_version` | string | `'1.3.0'` | | `_model_name` | string | `'DirectionalLinkModel'` | | `_view_module` | string | `'@jupyter-widgets/controls'` | | `_view_module_version` | string | `'1.3.0'` | | `_view_name` | `null` or string | `null` | Name of the view. | | `source` | array | `[]` | The source (widget, 'trait_name') pair | | `target` | array | `[]` | The target (widget, 'trait_name') pair | ### DropdownModel (@jupyter-widgets/controls, 1.3.0); DropdownView (@jupyter-widgets/controls, 1.3.0) | Attribute | Type | Default | Help | | ----------------------- | ------------------------------------ | ----------------------------- | ------------------------------------------------------ | | `_dom_classes` | array of string | `[]` | CSS classes applied to widget DOM element | | `_model_module` | string | `'@jupyter-widgets/controls'` | | `_model_module_version` | string | `'1.3.0'` | | `_model_name` | string | `'DropdownModel'` | | `_options_labels` | array of string | `[]` | The labels for the options. | | `_view_module` | string | `'@jupyter-widgets/controls'` | | `_view_module_version` | string | `'1.3.0'` | | `_view_name` | string | `'DropdownView'` | | `description` | string | `''` | Description of the control. | | `description_tooltip` | `null` or string | `null` | Tooltip for the description (defaults to description). | | `disabled` | boolean | `false` | Enable or disable user changes | | `index` | `null` or number (integer) | `null` | Selected index | | `layout` | reference to Layout widget | reference to new instance | | `style` | reference to DescriptionStyle widget | reference to new instance | Styling customizations | ### FloatLogSliderModel (@jupyter-widgets/controls, 1.3.0); FloatLogSliderView (@jupyter-widgets/controls, 1.3.0) | Attribute | Type | Default | Help | | ----------------------- | -------------------------------------------- | ----------------------------- | ----------------------------------------------------------------- | | `_dom_classes` | array of string | `[]` | CSS classes applied to widget DOM element | | `_model_module` | string | `'@jupyter-widgets/controls'` | | `_model_module_version` | string | `'1.3.0'` | | `_model_name` | string | `'FloatLogSliderModel'` | | `_view_module` | string | `'@jupyter-widgets/controls'` | | `_view_module_version` | string | `'1.3.0'` | | `_view_name` | string | `'FloatLogSliderView'` | | `base` | number (float) | `10.0` | Base for the logarithm | | `continuous_update` | boolean | `true` | Update the value of the widget as the user is holding the slider. | | `description` | string | `''` | Description of the control. | | `description_tooltip` | `null` or string | `null` | Tooltip for the description (defaults to description). | | `disabled` | boolean | `false` | Enable or disable user changes | | `layout` | reference to Layout widget | reference to new instance | | `max` | number (float) | `4.0` | Max value for the exponent | | `min` | number (float) | `0.0` | Min value for the exponent | | `orientation` | string (one of `'horizontal'`, `'vertical'`) | `'horizontal'` | Vertical or horizontal. | | `readout` | boolean | `true` | Display the current value of the slider next to it. | | `readout_format` | string | `'.3g'` | Format for the readout | | `step` | number (float) | `0.1` | Minimum step in the exponent to increment the value | | `style` | reference to SliderStyle widget | reference to new instance | | `value` | number (float) | `1.0` | Float value | ### FloatProgressModel (@jupyter-widgets/controls, 1.3.0); ProgressView (@jupyter-widgets/controls, 1.3.0) | Attribute | Type | Default | Help | | ----------------------- | ------------------------------------------------------------------------------ | ----------------------------- | ------------------------------------------------------ | | `_dom_classes` | array of string | `[]` | CSS classes applied to widget DOM element | | `_model_module` | string | `'@jupyter-widgets/controls'` | | `_model_module_version` | string | `'1.3.0'` | | `_model_name` | string | `'FloatProgressModel'` | | `_view_module` | string | `'@jupyter-widgets/controls'` | | `_view_module_version` | string | `'1.3.0'` | | `_view_name` | string | `'ProgressView'` | | `bar_style` | `null` or string (one of `'success'`, `'info'`, `'warning'`, `'danger'`, `''`) | `''` | Use a predefined styling for the progress bar. | | `description` | string | `''` | Description of the control. | | `description_tooltip` | `null` or string | `null` | Tooltip for the description (defaults to description). | | `layout` | reference to Layout widget | reference to new instance | | `max` | number (float) | `100.0` | Max value | | `min` | number (float) | `0.0` | Min value | | `orientation` | string (one of `'horizontal'`, `'vertical'`) | `'horizontal'` | Vertical or horizontal. | | `style` | reference to ProgressStyle widget | reference to new instance | | `value` | number (float) | `0.0` | Float value | ### FloatRangeSliderModel (@jupyter-widgets/controls, 1.3.0); FloatRangeSliderView (@jupyter-widgets/controls, 1.3.0) | Attribute | Type | Default | Help | | ----------------------- | -------------------------------------------- | ----------------------------- | ----------------------------------------------------------------- | | `_dom_classes` | array of string | `[]` | CSS classes applied to widget DOM element | | `_model_module` | string | `'@jupyter-widgets/controls'` | | `_model_module_version` | string | `'1.3.0'` | | `_model_name` | string | `'FloatRangeSliderModel'` | | `_view_module` | string | `'@jupyter-widgets/controls'` | | `_view_module_version` | string | `'1.3.0'` | | `_view_name` | string | `'FloatRangeSliderView'` | | `continuous_update` | boolean | `true` | Update the value of the widget as the user is sliding the slider. | | `description` | string | `''` | Description of the control. | | `description_tooltip` | `null` or string | `null` | Tooltip for the description (defaults to description). | | `disabled` | boolean | `false` | Enable or disable user changes | | `layout` | reference to Layout widget | reference to new instance | | `max` | number (float) | `100.0` | Max value | | `min` | number (float) | `0.0` | Min value | | `orientation` | string (one of `'horizontal'`, `'vertical'`) | `'horizontal'` | Vertical or horizontal. | | `readout` | boolean | `true` | Display the current value of the slider next to it. | | `readout_format` | string | `'.2f'` | Format for the readout | | `step` | number (float) | `0.1` | Minimum step to increment the value | | `style` | reference to SliderStyle widget | reference to new instance | | `value` | array | `[0.0, 1.0]` | Tuple of (lower, upper) bounds | ### FloatSliderModel (@jupyter-widgets/controls, 1.3.0); FloatSliderView (@jupyter-widgets/controls, 1.3.0) | Attribute | Type | Default | Help | | ----------------------- | -------------------------------------------- | ----------------------------- | ----------------------------------------------------------------- | | `_dom_classes` | array of string | `[]` | CSS classes applied to widget DOM element | | `_model_module` | string | `'@jupyter-widgets/controls'` | | `_model_module_version` | string | `'1.3.0'` | | `_model_name` | string | `'FloatSliderModel'` | | `_view_module` | string | `'@jupyter-widgets/controls'` | | `_view_module_version` | string | `'1.3.0'` | | `_view_name` | string | `'FloatSliderView'` | | `continuous_update` | boolean | `true` | Update the value of the widget as the user is holding the slider. | | `description` | string | `''` | Description of the control. | | `description_tooltip` | `null` or string | `null` | Tooltip for the description (defaults to description). | | `disabled` | boolean | `false` | Enable or disable user changes | | `layout` | reference to Layout widget | reference to new instance | | `max` | number (float) | `100.0` | Max value | | `min` | number (float) | `0.0` | Min value | | `orientation` | string (one of `'horizontal'`, `'vertical'`) | `'horizontal'` | Vertical or horizontal. | | `readout` | boolean | `true` | Display the current value of the slider next to it. | | `readout_format` | string | `'.2f'` | Format for the readout | | `step` | number (float) | `0.1` | Minimum step to increment the value | | `style` | reference to SliderStyle widget | reference to new instance | | `value` | number (float) | `0.0` | Float value | ### FloatTextModel (@jupyter-widgets/controls, 1.3.0); FloatTextView (@jupyter-widgets/controls, 1.3.0) | Attribute | Type | Default | Help | | ----------------------- | ------------------------------------ | ----------------------------- | ------------------------------------------------------------------------------------------------------------ | | `_dom_classes` | array of string | `[]` | CSS classes applied to widget DOM element | | `_model_module` | string | `'@jupyter-widgets/controls'` | | `_model_module_version` | string | `'1.3.0'` | | `_model_name` | string | `'FloatTextModel'` | | `_view_module` | string | `'@jupyter-widgets/controls'` | | `_view_module_version` | string | `'1.3.0'` | | `_view_name` | string | `'FloatTextView'` | | `continuous_update` | boolean | `false` | Update the value as the user types. If False, update on submission, e.g., pressing Enter or navigating away. | | `description` | string | `''` | Description of the control. | | `description_tooltip` | `null` or string | `null` | Tooltip for the description (defaults to description). | | `disabled` | boolean | `false` | Enable or disable user changes | | `layout` | reference to Layout widget | reference to new instance | | `step` | `null` or number (float) | `null` | Minimum step to increment the value | | `style` | reference to DescriptionStyle widget | reference to new instance | Styling customizations | | `value` | number (float) | `0.0` | Float value | ### GridBoxModel (@jupyter-widgets/controls, 1.3.0); GridBoxView (@jupyter-widgets/controls, 1.3.0) | Attribute | Type | Default | Help | | ----------------------- | -------------------------------------------------------------------- | ----------------------------- | ----------------------------------------- | | `_dom_classes` | array of string | `[]` | CSS classes applied to widget DOM element | | `_model_module` | string | `'@jupyter-widgets/controls'` | | `_model_module_version` | string | `'1.3.0'` | | `_model_name` | string | `'GridBoxModel'` | | `_view_module` | string | `'@jupyter-widgets/controls'` | | `_view_module_version` | string | `'1.3.0'` | | `_view_name` | string | `'GridBoxView'` | | `box_style` | string (one of `'success'`, `'info'`, `'warning'`, `'danger'`, `''`) | `''` | Use a predefined styling for the box. | | `children` | array of reference to Widget widget | `[]` | List of widget children | | `layout` | reference to Layout widget | reference to new instance | ### HBoxModel (@jupyter-widgets/controls, 1.3.0); HBoxView (@jupyter-widgets/controls, 1.3.0) | Attribute | Type | Default | Help | | ----------------------- | -------------------------------------------------------------------- | ----------------------------- | ----------------------------------------- | | `_dom_classes` | array of string | `[]` | CSS classes applied to widget DOM element | | `_model_module` | string | `'@jupyter-widgets/controls'` | | `_model_module_version` | string | `'1.3.0'` | | `_model_name` | string | `'HBoxModel'` | | `_view_module` | string | `'@jupyter-widgets/controls'` | | `_view_module_version` | string | `'1.3.0'` | | `_view_name` | string | `'HBoxView'` | | `box_style` | string (one of `'success'`, `'info'`, `'warning'`, `'danger'`, `''`) | `''` | Use a predefined styling for the box. | | `children` | array of reference to Widget widget | `[]` | List of widget children | | `layout` | reference to Layout widget | reference to new instance | ### HTMLMathModel (@jupyter-widgets/controls, 1.3.0); HTMLMathView (@jupyter-widgets/controls, 1.3.0) | Attribute | Type | Default | Help | | ----------------------- | ------------------------------------ | ----------------------------- | ------------------------------------------------------- | | `_dom_classes` | array of string | `[]` | CSS classes applied to widget DOM element | | `_model_module` | string | `'@jupyter-widgets/controls'` | | `_model_module_version` | string | `'1.3.0'` | | `_model_name` | string | `'HTMLMathModel'` | | `_view_module` | string | `'@jupyter-widgets/controls'` | | `_view_module_version` | string | `'1.3.0'` | | `_view_name` | string | `'HTMLMathView'` | | `description` | string | `''` | Description of the control. | | `description_tooltip` | `null` or string | `null` | Tooltip for the description (defaults to description). | | `layout` | reference to Layout widget | reference to new instance | | `placeholder` | string | `'\u200b'` | Placeholder text to display when nothing has been typed | | `style` | reference to DescriptionStyle widget | reference to new instance | Styling customizations | | `value` | string | `''` | String value | ### HTMLModel (@jupyter-widgets/controls, 1.3.0); HTMLView (@jupyter-widgets/controls, 1.3.0) | Attribute | Type | Default | Help | | ----------------------- | ------------------------------------ | ----------------------------- | ------------------------------------------------------- | | `_dom_classes` | array of string | `[]` | CSS classes applied to widget DOM element | | `_model_module` | string | `'@jupyter-widgets/controls'` | | `_model_module_version` | string | `'1.3.0'` | | `_model_name` | string | `'HTMLModel'` | | `_view_module` | string | `'@jupyter-widgets/controls'` | | `_view_module_version` | string | `'1.3.0'` | | `_view_name` | string | `'HTMLView'` | | `description` | string | `''` | Description of the control. | | `description_tooltip` | `null` or string | `null` | Tooltip for the description (defaults to description). | | `layout` | reference to Layout widget | reference to new instance | | `placeholder` | string | `'\u200b'` | Placeholder text to display when nothing has been typed | | `style` | reference to DescriptionStyle widget | reference to new instance | Styling customizations | | `value` | string | `''` | String value | ### ImageModel (@jupyter-widgets/controls, 1.3.0); ImageView (@jupyter-widgets/controls, 1.3.0) | Attribute | Type | Default | Help | | ----------------------- | -------------------------- | ----------------------------- | ----------------------------------------- | | `_dom_classes` | array of string | `[]` | CSS classes applied to widget DOM element | | `_model_module` | string | `'@jupyter-widgets/controls'` | | `_model_module_version` | string | `'1.3.0'` | | `_model_name` | string | `'ImageModel'` | | `_view_module` | string | `'@jupyter-widgets/controls'` | | `_view_module_version` | string | `'1.3.0'` | | `_view_name` | string | `'ImageView'` | | `format` | string | `'png'` | The format of the image. | | `height` | string | `''` | Height of the image in pixels. | | `layout` | reference to Layout widget | reference to new instance | | `value` | Bytes | `b''` | The image data as a byte string. | | `width` | string | `''` | Width of the image in pixels. | ### IntProgressModel (@jupyter-widgets/controls, 1.3.0); ProgressView (@jupyter-widgets/controls, 1.3.0) | Attribute | Type | Default | Help | | ----------------------- | -------------------------------------------------------------------- | ----------------------------- | ------------------------------------------------------ | | `_dom_classes` | array of string | `[]` | CSS classes applied to widget DOM element | | `_model_module` | string | `'@jupyter-widgets/controls'` | | `_model_module_version` | string | `'1.3.0'` | | `_model_name` | string | `'IntProgressModel'` | | `_view_module` | string | `'@jupyter-widgets/controls'` | | `_view_module_version` | string | `'1.3.0'` | | `_view_name` | string | `'ProgressView'` | | `bar_style` | string (one of `'success'`, `'info'`, `'warning'`, `'danger'`, `''`) | `''` | Use a predefined styling for the progress bar. | | `description` | string | `''` | Description of the control. | | `description_tooltip` | `null` or string | `null` | Tooltip for the description (defaults to description). | | `layout` | reference to Layout widget | reference to new instance | | `max` | number (integer) | `100` | Max value | | `min` | number (integer) | `0` | Min value | | `orientation` | string (one of `'horizontal'`, `'vertical'`) | `'horizontal'` | Vertical or horizontal. | | `style` | reference to ProgressStyle widget | reference to new instance | | `value` | number (integer) | `0` | Int value | ### IntRangeSliderModel (@jupyter-widgets/controls, 1.3.0); IntRangeSliderView (@jupyter-widgets/controls, 1.3.0) | Attribute | Type | Default | Help | | ----------------------- | -------------------------------------------- | ----------------------------- | ----------------------------------------------------------------- | | `_dom_classes` | array of string | `[]` | CSS classes applied to widget DOM element | | `_model_module` | string | `'@jupyter-widgets/controls'` | | `_model_module_version` | string | `'1.3.0'` | | `_model_name` | string | `'IntRangeSliderModel'` | | `_view_module` | string | `'@jupyter-widgets/controls'` | | `_view_module_version` | string | `'1.3.0'` | | `_view_name` | string | `'IntRangeSliderView'` | | `continuous_update` | boolean | `true` | Update the value of the widget as the user is sliding the slider. | | `description` | string | `''` | Description of the control. | | `description_tooltip` | `null` or string | `null` | Tooltip for the description (defaults to description). | | `disabled` | boolean | `false` | Enable or disable user changes | | `layout` | reference to Layout widget | reference to new instance | | `max` | number (integer) | `100` | Max value | | `min` | number (integer) | `0` | Min value | | `orientation` | string (one of `'horizontal'`, `'vertical'`) | `'horizontal'` | Vertical or horizontal. | | `readout` | boolean | `true` | Display the current value of the slider next to it. | | `readout_format` | string | `'d'` | Format for the readout | | `step` | number (integer) | `1` | Minimum step that the value can take | | `style` | reference to SliderStyle widget | reference to new instance | Slider style customizations. | | `value` | array | `[0, 1]` | Tuple of (lower, upper) bounds | ### IntSliderModel (@jupyter-widgets/controls, 1.3.0); IntSliderView (@jupyter-widgets/controls, 1.3.0) | Attribute | Type | Default | Help | | ----------------------- | -------------------------------------------- | ----------------------------- | ----------------------------------------------------------------- | | `_dom_classes` | array of string | `[]` | CSS classes applied to widget DOM element | | `_model_module` | string | `'@jupyter-widgets/controls'` | | `_model_module_version` | string | `'1.3.0'` | | `_model_name` | string | `'IntSliderModel'` | | `_view_module` | string | `'@jupyter-widgets/controls'` | | `_view_module_version` | string | `'1.3.0'` | | `_view_name` | string | `'IntSliderView'` | | `continuous_update` | boolean | `true` | Update the value of the widget as the user is holding the slider. | | `description` | string | `''` | Description of the control. | | `description_tooltip` | `null` or string | `null` | Tooltip for the description (defaults to description). | | `disabled` | boolean | `false` | Enable or disable user changes | | `layout` | reference to Layout widget | reference to new instance | | `max` | number (integer) | `100` | Max value | | `min` | number (integer) | `0` | Min value | | `orientation` | string (one of `'horizontal'`, `'vertical'`) | `'horizontal'` | Vertical or horizontal. | | `readout` | boolean | `true` | Display the current value of the slider next to it. | | `readout_format` | string | `'d'` | Format for the readout | | `step` | number (integer) | `1` | Minimum step to increment the value | | `style` | reference to SliderStyle widget | reference to new instance | | `value` | number (integer) | `0` | Int value | ### IntTextModel (@jupyter-widgets/controls, 1.3.0); IntTextView (@jupyter-widgets/controls, 1.3.0) | Attribute | Type | Default | Help | | ----------------------- | ------------------------------------ | ----------------------------- | ------------------------------------------------------------------------------------------------------------ | | `_dom_classes` | array of string | `[]` | CSS classes applied to widget DOM element | | `_model_module` | string | `'@jupyter-widgets/controls'` | | `_model_module_version` | string | `'1.3.0'` | | `_model_name` | string | `'IntTextModel'` | | `_view_module` | string | `'@jupyter-widgets/controls'` | | `_view_module_version` | string | `'1.3.0'` | | `_view_name` | string | `'IntTextView'` | | `continuous_update` | boolean | `false` | Update the value as the user types. If False, update on submission, e.g., pressing Enter or navigating away. | | `description` | string | `''` | Description of the control. | | `description_tooltip` | `null` or string | `null` | Tooltip for the description (defaults to description). | | `disabled` | boolean | `false` | Enable or disable user changes | | `layout` | reference to Layout widget | reference to new instance | | `step` | number (integer) | `1` | Minimum step to increment the value | | `style` | reference to DescriptionStyle widget | reference to new instance | Styling customizations | | `value` | number (integer) | `0` | Int value | ### LabelModel (@jupyter-widgets/controls, 1.3.0); LabelView (@jupyter-widgets/controls, 1.3.0) | Attribute | Type | Default | Help | | ----------------------- | ------------------------------------ | ----------------------------- | ------------------------------------------------------- | | `_dom_classes` | array of string | `[]` | CSS classes applied to widget DOM element | | `_model_module` | string | `'@jupyter-widgets/controls'` | | `_model_module_version` | string | `'1.3.0'` | | `_model_name` | string | `'LabelModel'` | | `_view_module` | string | `'@jupyter-widgets/controls'` | | `_view_module_version` | string | `'1.3.0'` | | `_view_name` | string | `'LabelView'` | | `description` | string | `''` | Description of the control. | | `description_tooltip` | `null` or string | `null` | Tooltip for the description (defaults to description). | | `layout` | reference to Layout widget | reference to new instance | | `placeholder` | string | `'\u200b'` | Placeholder text to display when nothing has been typed | | `style` | reference to DescriptionStyle widget | reference to new instance | Styling customizations | | `value` | string | `''` | String value | ### LinkModel (@jupyter-widgets/controls, 1.3.0); None (@jupyter-widgets/controls, 1.3.0) | Attribute | Type | Default | Help | | ----------------------- | ---------------- | ----------------------------- | -------------------------------------- | | `_model_module` | string | `'@jupyter-widgets/controls'` | | `_model_module_version` | string | `'1.3.0'` | | `_model_name` | string | `'LinkModel'` | | `_view_module` | string | `'@jupyter-widgets/controls'` | | `_view_module_version` | string | `'1.3.0'` | | `_view_name` | `null` or string | `null` | Name of the view. | | `source` | array | `[]` | The source (widget, 'trait_name') pair | | `target` | array | `[]` | The target (widget, 'trait_name') pair | ### PasswordModel (@jupyter-widgets/controls, 1.3.0); PasswordView (@jupyter-widgets/controls, 1.3.0) | Attribute | Type | Default | Help | | ----------------------- | ------------------------------------ | ----------------------------- | ------------------------------------------------------------------------------------------------------------ | | `_dom_classes` | array of string | `[]` | CSS classes applied to widget DOM element | | `_model_module` | string | `'@jupyter-widgets/controls'` | | `_model_module_version` | string | `'1.3.0'` | | `_model_name` | string | `'PasswordModel'` | | `_view_module` | string | `'@jupyter-widgets/controls'` | | `_view_module_version` | string | `'1.3.0'` | | `_view_name` | string | `'PasswordView'` | | `continuous_update` | boolean | `true` | Update the value as the user types. If False, update on submission, e.g., pressing Enter or navigating away. | | `description` | string | `''` | Description of the control. | | `description_tooltip` | `null` or string | `null` | Tooltip for the description (defaults to description). | | `disabled` | boolean | `false` | Enable or disable user changes | | `layout` | reference to Layout widget | reference to new instance | | `placeholder` | string | `'\u200b'` | Placeholder text to display when nothing has been typed | | `style` | reference to DescriptionStyle widget | reference to new instance | Styling customizations | | `value` | string | `''` | String value | ### PlayModel (@jupyter-widgets/controls, 1.3.0); PlayView (@jupyter-widgets/controls, 1.3.0) | Attribute | Type | Default | Help | | ----------------------- | ------------------------------------ | ----------------------------- | ------------------------------------------------------ | | `_dom_classes` | array of string | `[]` | CSS classes applied to widget DOM element | | `_model_module` | string | `'@jupyter-widgets/controls'` | | `_model_module_version` | string | `'1.3.0'` | | `_model_name` | string | `'PlayModel'` | | `_playing` | boolean | `false` | Whether the control is currently playing. | | `_repeat` | boolean | `false` | Whether the control will repeat in a continuous loop. | | `_view_module` | string | `'@jupyter-widgets/controls'` | | `_view_module_version` | string | `'1.3.0'` | | `_view_name` | string | `'PlayView'` | | `description` | string | `''` | Description of the control. | | `description_tooltip` | `null` or string | `null` | Tooltip for the description (defaults to description). | | `disabled` | boolean | `false` | Enable or disable user changes | | `interval` | number (integer) | `100` | The maximum value for the play control. | | `layout` | reference to Layout widget | reference to new instance | | `max` | number (integer) | `100` | Max value | | `min` | number (integer) | `0` | Min value | | `show_repeat` | boolean | `true` | Show the repeat toggle button in the widget. | | `step` | number (integer) | `1` | Increment step | | `style` | reference to DescriptionStyle widget | reference to new instance | Styling customizations | | `value` | number (integer) | `0` | Int value | ### ProgressStyleModel (@jupyter-widgets/controls, 1.3.0); StyleView (@jupyter-widgets/base, 1.1.0) | Attribute | Type | Default | Help | | ----------------------- | ---------------- | ----------------------------- | ---------------------------------------------------- | | `_model_module` | string | `'@jupyter-widgets/controls'` | | `_model_module_version` | string | `'1.3.0'` | | `_model_name` | string | `'ProgressStyleModel'` | | `_view_module` | string | `'@jupyter-widgets/base'` | | `_view_module_version` | string | `'1.1.0'` | | `_view_name` | string | `'StyleView'` | | `bar_color` | `null` or string | `null` | Color of the progress bar. | | `description_width` | string | `''` | Width of the description to the side of the control. | ### RadioButtonsModel (@jupyter-widgets/controls, 1.3.0); RadioButtonsView (@jupyter-widgets/controls, 1.3.0) | Attribute | Type | Default | Help | | ----------------------- | ------------------------------------ | ----------------------------- | ------------------------------------------------------ | | `_dom_classes` | array of string | `[]` | CSS classes applied to widget DOM element | | `_model_module` | string | `'@jupyter-widgets/controls'` | | `_model_module_version` | string | `'1.3.0'` | | `_model_name` | string | `'RadioButtonsModel'` | | `_options_labels` | array of string | `[]` | The labels for the options. | | `_view_module` | string | `'@jupyter-widgets/controls'` | | `_view_module_version` | string | `'1.3.0'` | | `_view_name` | string | `'RadioButtonsView'` | | `description` | string | `''` | Description of the control. | | `description_tooltip` | `null` or string | `null` | Tooltip for the description (defaults to description). | | `disabled` | boolean | `false` | Enable or disable user changes | | `index` | `null` or number (integer) | `null` | Selected index | | `layout` | reference to Layout widget | reference to new instance | | `style` | reference to DescriptionStyle widget | reference to new instance | Styling customizations | ### SelectModel (@jupyter-widgets/controls, 1.3.0); SelectView (@jupyter-widgets/controls, 1.3.0) | Attribute | Type | Default | Help | | ----------------------- | ------------------------------------ | ----------------------------- | ------------------------------------------------------ | | `_dom_classes` | array of string | `[]` | CSS classes applied to widget DOM element | | `_model_module` | string | `'@jupyter-widgets/controls'` | | `_model_module_version` | string | `'1.3.0'` | | `_model_name` | string | `'SelectModel'` | | `_options_labels` | array of string | `[]` | The labels for the options. | | `_view_module` | string | `'@jupyter-widgets/controls'` | | `_view_module_version` | string | `'1.3.0'` | | `_view_name` | string | `'SelectView'` | | `description` | string | `''` | Description of the control. | | `description_tooltip` | `null` or string | `null` | Tooltip for the description (defaults to description). | | `disabled` | boolean | `false` | Enable or disable user changes | | `index` | `null` or number (integer) | `null` | Selected index | | `layout` | reference to Layout widget | reference to new instance | | `rows` | number (integer) | `5` | The number of rows to display. | | `style` | reference to DescriptionStyle widget | reference to new instance | Styling customizations | ### SelectMultipleModel (@jupyter-widgets/controls, 1.3.0); SelectMultipleView (@jupyter-widgets/controls, 1.3.0) | Attribute | Type | Default | Help | | ----------------------- | ------------------------------------ | ----------------------------- | ------------------------------------------------------ | | `_dom_classes` | array of string | `[]` | CSS classes applied to widget DOM element | | `_model_module` | string | `'@jupyter-widgets/controls'` | | `_model_module_version` | string | `'1.3.0'` | | `_model_name` | string | `'SelectMultipleModel'` | | `_options_labels` | array of string | `[]` | The labels for the options. | | `_view_module` | string | `'@jupyter-widgets/controls'` | | `_view_module_version` | string | `'1.3.0'` | | `_view_name` | string | `'SelectMultipleView'` | | `description` | string | `''` | Description of the control. | | `description_tooltip` | `null` or string | `null` | Tooltip for the description (defaults to description). | | `disabled` | boolean | `false` | Enable or disable user changes | | `index` | array of number (integer) | `[]` | Selected indices | | `layout` | reference to Layout widget | reference to new instance | | `rows` | number (integer) | `5` | The number of rows to display. | | `style` | reference to DescriptionStyle widget | reference to new instance | Styling customizations | ### SelectionRangeSliderModel (@jupyter-widgets/controls, 1.3.0); SelectionRangeSliderView (@jupyter-widgets/controls, 1.3.0) | Attribute | Type | Default | Help | | ----------------------- | -------------------------------------------- | ----------------------------- | ----------------------------------------------------------------- | | `_dom_classes` | array of string | `[]` | CSS classes applied to widget DOM element | | `_model_module` | string | `'@jupyter-widgets/controls'` | | `_model_module_version` | string | `'1.3.0'` | | `_model_name` | string | `'SelectionRangeSliderModel'` | | `_options_labels` | array of string | `[]` | The labels for the options. | | `_view_module` | string | `'@jupyter-widgets/controls'` | | `_view_module_version` | string | `'1.3.0'` | | `_view_name` | string | `'SelectionRangeSliderView'` | | `continuous_update` | boolean | `true` | Update the value of the widget as the user is holding the slider. | | `description` | string | `''` | Description of the control. | | `description_tooltip` | `null` or string | `null` | Tooltip for the description (defaults to description). | | `disabled` | boolean | `false` | Enable or disable user changes | | `index` | array | `[0, 0]` | Min and max selected indices | | `layout` | reference to Layout widget | reference to new instance | | `orientation` | string (one of `'horizontal'`, `'vertical'`) | `'horizontal'` | Vertical or horizontal. | | `readout` | boolean | `true` | Display the current selected label next to the slider | | `style` | reference to DescriptionStyle widget | reference to new instance | Styling customizations | ### SelectionSliderModel (@jupyter-widgets/controls, 1.3.0); SelectionSliderView (@jupyter-widgets/controls, 1.3.0) | Attribute | Type | Default | Help | | ----------------------- | -------------------------------------------- | ----------------------------- | ----------------------------------------------------------------- | | `_dom_classes` | array of string | `[]` | CSS classes applied to widget DOM element | | `_model_module` | string | `'@jupyter-widgets/controls'` | | `_model_module_version` | string | `'1.3.0'` | | `_model_name` | string | `'SelectionSliderModel'` | | `_options_labels` | array of string | `[]` | The labels for the options. | | `_view_module` | string | `'@jupyter-widgets/controls'` | | `_view_module_version` | string | `'1.3.0'` | | `_view_name` | string | `'SelectionSliderView'` | | `continuous_update` | boolean | `true` | Update the value of the widget as the user is holding the slider. | | `description` | string | `''` | Description of the control. | | `description_tooltip` | `null` or string | `null` | Tooltip for the description (defaults to description). | | `disabled` | boolean | `false` | Enable or disable user changes | | `index` | number (integer) | `0` | Selected index | | `layout` | reference to Layout widget | reference to new instance | | `orientation` | string (one of `'horizontal'`, `'vertical'`) | `'horizontal'` | Vertical or horizontal. | | `readout` | boolean | `true` | Display the current selected label next to the slider | | `style` | reference to DescriptionStyle widget | reference to new instance | Styling customizations | ### SliderStyleModel (@jupyter-widgets/controls, 1.3.0); StyleView (@jupyter-widgets/base, 1.1.0) | Attribute | Type | Default | Help | | ----------------------- | ---------------- | ----------------------------- | ---------------------------------------------------- | | `_model_module` | string | `'@jupyter-widgets/controls'` | | `_model_module_version` | string | `'1.3.0'` | | `_model_name` | string | `'SliderStyleModel'` | | `_view_module` | string | `'@jupyter-widgets/base'` | | `_view_module_version` | string | `'1.1.0'` | | `_view_name` | string | `'StyleView'` | | `description_width` | string | `''` | Width of the description to the side of the control. | | `handle_color` | `null` or string | `null` | Color of the slider handle. | ### TabModel (@jupyter-widgets/controls, 1.3.0); TabView (@jupyter-widgets/controls, 1.3.0) | Attribute | Type | Default | Help | | ----------------------- | -------------------------------------------------------------------- | ----------------------------- | --------------------------------------------------------------------------------------------------------------------------------- | | `_dom_classes` | array of string | `[]` | CSS classes applied to widget DOM element | | `_model_module` | string | `'@jupyter-widgets/controls'` | | `_model_module_version` | string | `'1.3.0'` | | `_model_name` | string | `'TabModel'` | | `_titles` | object | `{}` | Titles of the pages | | `_view_module` | string | `'@jupyter-widgets/controls'` | | `_view_module_version` | string | `'1.3.0'` | | `_view_name` | string | `'TabView'` | | `box_style` | string (one of `'success'`, `'info'`, `'warning'`, `'danger'`, `''`) | `''` | Use a predefined styling for the box. | | `children` | array of reference to Widget widget | `[]` | List of widget children | | `layout` | reference to Layout widget | reference to new instance | | `selected_index` | `null` or number (integer) | `0` | The index of the selected page. This is either an integer selecting a particular sub-widget, or None to have no widgets selected. | ### TextModel (@jupyter-widgets/controls, 1.3.0); TextView (@jupyter-widgets/controls, 1.3.0) | Attribute | Type | Default | Help | | ----------------------- | ------------------------------------ | ----------------------------- | ------------------------------------------------------------------------------------------------------------ | | `_dom_classes` | array of string | `[]` | CSS classes applied to widget DOM element | | `_model_module` | string | `'@jupyter-widgets/controls'` | | `_model_module_version` | string | `'1.3.0'` | | `_model_name` | string | `'TextModel'` | | `_view_module` | string | `'@jupyter-widgets/controls'` | | `_view_module_version` | string | `'1.3.0'` | | `_view_name` | string | `'TextView'` | | `continuous_update` | boolean | `true` | Update the value as the user types. If False, update on submission, e.g., pressing Enter or navigating away. | | `description` | string | `''` | Description of the control. | | `description_tooltip` | `null` or string | `null` | Tooltip for the description (defaults to description). | | `disabled` | boolean | `false` | Enable or disable user changes | | `layout` | reference to Layout widget | reference to new instance | | `placeholder` | string | `'\u200b'` | Placeholder text to display when nothing has been typed | | `style` | reference to DescriptionStyle widget | reference to new instance | Styling customizations | | `value` | string | `''` | String value | ### TextareaModel (@jupyter-widgets/controls, 1.3.0); TextareaView (@jupyter-widgets/controls, 1.3.0) | Attribute | Type | Default | Help | | ----------------------- | ------------------------------------ | ----------------------------- | ------------------------------------------------------------------------------------------------------------ | | `_dom_classes` | array of string | `[]` | CSS classes applied to widget DOM element | | `_model_module` | string | `'@jupyter-widgets/controls'` | | `_model_module_version` | string | `'1.3.0'` | | `_model_name` | string | `'TextareaModel'` | | `_view_module` | string | `'@jupyter-widgets/controls'` | | `_view_module_version` | string | `'1.3.0'` | | `_view_name` | string | `'TextareaView'` | | `continuous_update` | boolean | `true` | Update the value as the user types. If False, update on submission, e.g., pressing Enter or navigating away. | | `description` | string | `''` | Description of the control. | | `description_tooltip` | `null` or string | `null` | Tooltip for the description (defaults to description). | | `disabled` | boolean | `false` | Enable or disable user changes | | `layout` | reference to Layout widget | reference to new instance | | `placeholder` | string | `'\u200b'` | Placeholder text to display when nothing has been typed | | `rows` | `null` or number (integer) | `null` | The number of rows to display. | | `style` | reference to DescriptionStyle widget | reference to new instance | Styling customizations | | `value` | string | `''` | String value | ### ToggleButtonModel (@jupyter-widgets/controls, 1.3.0); ToggleButtonView (@jupyter-widgets/controls, 1.3.0) | Attribute | Type | Default | Help | | ----------------------- | --------------------------------------------------------------------------------- | ----------------------------- | ------------------------------------------------------ | | `_dom_classes` | array of string | `[]` | CSS classes applied to widget DOM element | | `_model_module` | string | `'@jupyter-widgets/controls'` | | `_model_module_version` | string | `'1.3.0'` | | `_model_name` | string | `'ToggleButtonModel'` | | `_view_module` | string | `'@jupyter-widgets/controls'` | | `_view_module_version` | string | `'1.3.0'` | | `_view_name` | string | `'ToggleButtonView'` | | `button_style` | string (one of `'primary'`, `'success'`, `'info'`, `'warning'`, `'danger'`, `''`) | `''` | Use a predefined styling for the button. | | `description` | string | `''` | Description of the control. | | `description_tooltip` | `null` or string | `null` | Tooltip for the description (defaults to description). | | `disabled` | boolean | `false` | Enable or disable user changes. | | `icon` | string | `''` | Font-awesome icon. | | `layout` | reference to Layout widget | reference to new instance | | `style` | reference to DescriptionStyle widget | reference to new instance | Styling customizations | | `tooltip` | string | `''` | Tooltip caption of the toggle button. | | `value` | boolean | `false` | Bool value | ### ToggleButtonsModel (@jupyter-widgets/controls, 1.3.0); ToggleButtonsView (@jupyter-widgets/controls, 1.3.0) | Attribute | Type | Default | Help | | ----------------------- | ------------------------------------------------------------------------------------------- | ----------------------------- | ----------------------------------------------------------------------- | | `_dom_classes` | array of string | `[]` | CSS classes applied to widget DOM element | | `_model_module` | string | `'@jupyter-widgets/controls'` | | `_model_module_version` | string | `'1.3.0'` | | `_model_name` | string | `'ToggleButtonsModel'` | | `_options_labels` | array of string | `[]` | The labels for the options. | | `_view_module` | string | `'@jupyter-widgets/controls'` | | `_view_module_version` | string | `'1.3.0'` | | `_view_name` | string | `'ToggleButtonsView'` | | `button_style` | `null` or string (one of `'primary'`, `'success'`, `'info'`, `'warning'`, `'danger'`, `''`) | `''` | Use a predefined styling for the buttons. | | `description` | string | `''` | Description of the control. | | `description_tooltip` | `null` or string | `null` | Tooltip for the description (defaults to description). | | `disabled` | boolean | `false` | Enable or disable user changes | | `icons` | array of string | `[]` | Icons names for each button (FontAwesome names without the fa- prefix). | | `index` | `null` or number (integer) | `null` | Selected index | | `layout` | reference to Layout widget | reference to new instance | | `style` | reference to ToggleButtonsStyle widget | reference to new instance | | `tooltips` | array of string | `[]` | Tooltips for each button. | ### ToggleButtonsStyleModel (@jupyter-widgets/controls, 1.3.0); StyleView (@jupyter-widgets/base, 1.1.0) | Attribute | Type | Default | Help | | ----------------------- | ------ | ----------------------------- | ---------------------------------------------------- | | `_model_module` | string | `'@jupyter-widgets/controls'` | | `_model_module_version` | string | `'1.3.0'` | | `_model_name` | string | `'ToggleButtonsStyleModel'` | | `_view_module` | string | `'@jupyter-widgets/base'` | | `_view_module_version` | string | `'1.1.0'` | | `_view_name` | string | `'StyleView'` | | `button_width` | string | `''` | The width of each button. | | `description_width` | string | `''` | Width of the description to the side of the control. | | `font_weight` | string | `''` | Text font weight of each button. | ### VBoxModel (@jupyter-widgets/controls, 1.3.0); VBoxView (@jupyter-widgets/controls, 1.3.0) | Attribute | Type | Default | Help | | ----------------------- | -------------------------------------------------------------------- | ----------------------------- | ----------------------------------------- | | `_dom_classes` | array of string | `[]` | CSS classes applied to widget DOM element | | `_model_module` | string | `'@jupyter-widgets/controls'` | | `_model_module_version` | string | `'1.3.0'` | | `_model_name` | string | `'VBoxModel'` | | `_view_module` | string | `'@jupyter-widgets/controls'` | | `_view_module_version` | string | `'1.3.0'` | | `_view_name` | string | `'VBoxView'` | | `box_style` | string (one of `'success'`, `'info'`, `'warning'`, `'danger'`, `''`) | `''` | Use a predefined styling for the box. | | `children` | array of reference to Widget widget | `[]` | List of widget children | | `layout` | reference to Layout widget | reference to new instance | ### ValidModel (@jupyter-widgets/controls, 1.3.0); ValidView (@jupyter-widgets/controls, 1.3.0) | Attribute | Type | Default | Help | | ----------------------- | ------------------------------------ | ----------------------------- | ------------------------------------------------------ | | `_dom_classes` | array of string | `[]` | CSS classes applied to widget DOM element | | `_model_module` | string | `'@jupyter-widgets/controls'` | | `_model_module_version` | string | `'1.3.0'` | | `_model_name` | string | `'ValidModel'` | | `_view_module` | string | `'@jupyter-widgets/controls'` | | `_view_module_version` | string | `'1.3.0'` | | `_view_name` | string | `'ValidView'` | | `description` | string | `''` | Description of the control. | | `description_tooltip` | `null` or string | `null` | Tooltip for the description (defaults to description). | | `disabled` | boolean | `false` | Enable or disable user changes. | | `layout` | reference to Layout widget | reference to new instance | | `readout` | string | `'Invalid'` | Message displayed when the value is False | | `style` | reference to DescriptionStyle widget | reference to new instance | Styling customizations | | `value` | boolean | `false` | Bool value | ### OutputModel (@jupyter-widgets/output, 1.0.0); OutputView (@jupyter-widgets/output, 1.0.0) | Attribute | Type | Default | Help | | ----------------------- | -------------------------- | --------------------------- | --------------------------------------------- | | `_dom_classes` | array of string | `[]` | CSS classes applied to widget DOM element | | `_model_module` | string | `'@jupyter-widgets/output'` | | `_model_module_version` | string | `'1.0.0'` | | `_model_name` | string | `'OutputModel'` | | `_view_module` | string | `'@jupyter-widgets/output'` | | `_view_module_version` | string | `'1.0.0'` | | `_view_name` | string | `'OutputView'` | | `layout` | reference to Layout widget | reference to new instance | | `msg_id` | string | `''` | Parent message id of messages to capture | | `outputs` | array of object | `[]` | The output messages synced from the frontend. | ipywidgets-8.1.1/packages/schema/jupyterwidgetmodels.v7-4.md000066400000000000000000004113721450026722000240650ustar00rootroot00000000000000# Model State This is a description of the model state for each widget in the core Jupyter widgets library. The model ID of a widget is the id of the comm object the widget is using. A reference to a widget is serialized to JSON as a string of the form `"IPY_MODEL_"`, where `` is the model ID of a previously created widget of the specified type. This model specification is for ipywidgets 7.4._, @jupyter-widgets/base 1.1._, and @jupyter-widgets/controls 1.4.\*. ## Model attributes Each widget in the Jupyter core widgets is represented below. The heading represents the model name, module, and version, view name, module, and version that the widget is registered with. ### LayoutModel (@jupyter-widgets/base, 1.1.0); LayoutView (@jupyter-widgets/base, 1.1.0) | Attribute | Type | Default | Help | | ----------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------- | ---------------------------------------------------------------- | | `_model_module` | string | `'@jupyter-widgets/base'` | The namespace for the model. | | `_model_module_version` | string | `'1.1.0'` | A semver requirement for namespace version containing the model. | | `_model_name` | string | `'LayoutModel'` | | `_view_module` | string | `'@jupyter-widgets/base'` | | `_view_module_version` | string | `'1.1.0'` | | `_view_name` | string | `'LayoutView'` | | `align_content` | `null` or string (one of `'flex-start'`, `'flex-end'`, `'center'`, `'space-between'`, `'space-around'`, `'space-evenly'`, `'stretch'`, `'inherit'`, `'initial'`, `'unset'`) | `null` | The align-content CSS attribute. | | `align_items` | `null` or string (one of `'flex-start'`, `'flex-end'`, `'center'`, `'baseline'`, `'stretch'`, `'inherit'`, `'initial'`, `'unset'`) | `null` | The align-items CSS attribute. | | `align_self` | `null` or string (one of `'auto'`, `'flex-start'`, `'flex-end'`, `'center'`, `'baseline'`, `'stretch'`, `'inherit'`, `'initial'`, `'unset'`) | `null` | The align-self CSS attribute. | | `border` | `null` or string | `null` | The border CSS attribute. | | `bottom` | `null` or string | `null` | The bottom CSS attribute. | | `display` | `null` or string | `null` | The display CSS attribute. | | `flex` | `null` or string | `null` | The flex CSS attribute. | | `flex_flow` | `null` or string | `null` | The flex-flow CSS attribute. | | `grid_area` | `null` or string | `null` | The grid-area CSS attribute. | | `grid_auto_columns` | `null` or string | `null` | The grid-auto-columns CSS attribute. | | `grid_auto_flow` | `null` or string (one of `'column'`, `'row'`, `'row dense'`, `'column dense'`, `'inherit'`, `'initial'`, `'unset'`) | `null` | The grid-auto-flow CSS attribute. | | `grid_auto_rows` | `null` or string | `null` | The grid-auto-rows CSS attribute. | | `grid_column` | `null` or string | `null` | The grid-column CSS attribute. | | `grid_gap` | `null` or string | `null` | The grid-gap CSS attribute. | | `grid_row` | `null` or string | `null` | The grid-row CSS attribute. | | `grid_template_areas` | `null` or string | `null` | The grid-template-areas CSS attribute. | | `grid_template_columns` | `null` or string | `null` | The grid-template-columns CSS attribute. | | `grid_template_rows` | `null` or string | `null` | The grid-template-rows CSS attribute. | | `height` | `null` or string | `null` | The height CSS attribute. | | `justify_content` | `null` or string (one of `'flex-start'`, `'flex-end'`, `'center'`, `'space-between'`, `'space-around'`, `'inherit'`, `'initial'`, `'unset'`) | `null` | The justify-content CSS attribute. | | `left` | `null` or string | `null` | The left CSS attribute. | | `margin` | `null` or string | `null` | The margin CSS attribute. | | `max_height` | `null` or string | `null` | The max-height CSS attribute. | | `max_width` | `null` or string | `null` | The max-width CSS attribute. | | `min_height` | `null` or string | `null` | The min-height CSS attribute. | | `min_width` | `null` or string | `null` | The min-width CSS attribute. | | `order` | `null` or string | `null` | The order CSS attribute. | | `overflow` | `null` or string (one of `'visible'`, `'hidden'`, `'scroll'`, `'auto'`, `'inherit'`, `'initial'`, `'unset'`) | `null` | The overflow CSS attribute. | | `overflow_x` | `null` or string (one of `'visible'`, `'hidden'`, `'scroll'`, `'auto'`, `'inherit'`, `'initial'`, `'unset'`) | `null` | The overflow-x CSS attribute. | | `overflow_y` | `null` or string (one of `'visible'`, `'hidden'`, `'scroll'`, `'auto'`, `'inherit'`, `'initial'`, `'unset'`) | `null` | The overflow-y CSS attribute. | | `padding` | `null` or string | `null` | The padding CSS attribute. | | `right` | `null` or string | `null` | The right CSS attribute. | | `top` | `null` or string | `null` | The top CSS attribute. | | `visibility` | `null` or string (one of `'visible'`, `'hidden'`, `'inherit'`, `'initial'`, `'unset'`) | `null` | The visibility CSS attribute. | | `width` | `null` or string | `null` | The width CSS attribute. | ### AccordionModel (@jupyter-widgets/controls, 1.4.0); AccordionView (@jupyter-widgets/controls, 1.4.0) | Attribute | Type | Default | Help | | ----------------------- | -------------------------------------------------------------------- | ----------------------------- | --------------------------------------------------------------------------------------------------------------------------------- | | `_dom_classes` | array of string | `[]` | CSS classes applied to widget DOM element | | `_model_module` | string | `'@jupyter-widgets/controls'` | | `_model_module_version` | string | `'1.4.0'` | | `_model_name` | string | `'AccordionModel'` | | `_titles` | object | `{}` | Titles of the pages | | `_view_module` | string | `'@jupyter-widgets/controls'` | | `_view_module_version` | string | `'1.4.0'` | | `_view_name` | string | `'AccordionView'` | | `box_style` | string (one of `'success'`, `'info'`, `'warning'`, `'danger'`, `''`) | `''` | Use a predefined styling for the box. | | `children` | array of reference to Widget widget | `[]` | List of widget children | | `layout` | reference to Layout widget | reference to new instance | | `selected_index` | `null` or number (integer) | `0` | The index of the selected page. This is either an integer selecting a particular sub-widget, or None to have no widgets selected. | ### AudioModel (@jupyter-widgets/controls, 1.4.0); AudioView (@jupyter-widgets/controls, 1.4.0) | Attribute | Type | Default | Help | | ----------------------- | -------------------------- | ----------------------------- | ----------------------------------------------------------------------------------- | | `_dom_classes` | array of string | `[]` | CSS classes applied to widget DOM element | | `_model_module` | string | `'@jupyter-widgets/controls'` | | `_model_module_version` | string | `'1.4.0'` | | `_model_name` | string | `'AudioModel'` | | `_view_module` | string | `'@jupyter-widgets/controls'` | | `_view_module_version` | string | `'1.4.0'` | | `_view_name` | string | `'AudioView'` | | `autoplay` | boolean | `true` | When true, the audio starts when it's displayed | | `controls` | boolean | `true` | Specifies that audio controls should be displayed (such as a play/pause button etc) | | `format` | string | `'mp3'` | The format of the audio. | | `layout` | reference to Layout widget | reference to new instance | | `loop` | boolean | `true` | When true, the audio will start from the beginning after finishing | | `value` | Bytes | `b''` | The media data as a byte string. | ### BoundedFloatTextModel (@jupyter-widgets/controls, 1.4.0); FloatTextView (@jupyter-widgets/controls, 1.4.0) | Attribute | Type | Default | Help | | ----------------------- | ------------------------------------ | ----------------------------- | ------------------------------------------------------------------------------------------------------------ | | `_dom_classes` | array of string | `[]` | CSS classes applied to widget DOM element | | `_model_module` | string | `'@jupyter-widgets/controls'` | | `_model_module_version` | string | `'1.4.0'` | | `_model_name` | string | `'BoundedFloatTextModel'` | | `_view_module` | string | `'@jupyter-widgets/controls'` | | `_view_module_version` | string | `'1.4.0'` | | `_view_name` | string | `'FloatTextView'` | | `continuous_update` | boolean | `false` | Update the value as the user types. If False, update on submission, e.g., pressing Enter or navigating away. | | `description` | string | `''` | Description of the control. | | `description_tooltip` | `null` or string | `null` | Tooltip for the description (defaults to description). | | `disabled` | boolean | `false` | Enable or disable user changes | | `layout` | reference to Layout widget | reference to new instance | | `max` | number (float) | `100.0` | Max value | | `min` | number (float) | `0.0` | Min value | | `step` | `null` or number (float) | `null` | Minimum step to increment the value | | `style` | reference to DescriptionStyle widget | reference to new instance | Styling customizations | | `value` | number (float) | `0.0` | Float value | ### BoundedIntTextModel (@jupyter-widgets/controls, 1.4.0); IntTextView (@jupyter-widgets/controls, 1.4.0) | Attribute | Type | Default | Help | | ----------------------- | ------------------------------------ | ----------------------------- | ------------------------------------------------------------------------------------------------------------ | | `_dom_classes` | array of string | `[]` | CSS classes applied to widget DOM element | | `_model_module` | string | `'@jupyter-widgets/controls'` | | `_model_module_version` | string | `'1.4.0'` | | `_model_name` | string | `'BoundedIntTextModel'` | | `_view_module` | string | `'@jupyter-widgets/controls'` | | `_view_module_version` | string | `'1.4.0'` | | `_view_name` | string | `'IntTextView'` | | `continuous_update` | boolean | `false` | Update the value as the user types. If False, update on submission, e.g., pressing Enter or navigating away. | | `description` | string | `''` | Description of the control. | | `description_tooltip` | `null` or string | `null` | Tooltip for the description (defaults to description). | | `disabled` | boolean | `false` | Enable or disable user changes | | `layout` | reference to Layout widget | reference to new instance | | `max` | number (integer) | `100` | Max value | | `min` | number (integer) | `0` | Min value | | `step` | number (integer) | `1` | Minimum step to increment the value | | `style` | reference to DescriptionStyle widget | reference to new instance | Styling customizations | | `value` | number (integer) | `0` | Int value | ### BoxModel (@jupyter-widgets/controls, 1.4.0); BoxView (@jupyter-widgets/controls, 1.4.0) | Attribute | Type | Default | Help | | ----------------------- | -------------------------------------------------------------------- | ----------------------------- | ----------------------------------------- | | `_dom_classes` | array of string | `[]` | CSS classes applied to widget DOM element | | `_model_module` | string | `'@jupyter-widgets/controls'` | | `_model_module_version` | string | `'1.4.0'` | | `_model_name` | string | `'BoxModel'` | | `_view_module` | string | `'@jupyter-widgets/controls'` | | `_view_module_version` | string | `'1.4.0'` | | `_view_name` | string | `'BoxView'` | | `box_style` | string (one of `'success'`, `'info'`, `'warning'`, `'danger'`, `''`) | `''` | Use a predefined styling for the box. | | `children` | array of reference to Widget widget | `[]` | List of widget children | | `layout` | reference to Layout widget | reference to new instance | ### ButtonModel (@jupyter-widgets/controls, 1.4.0); ButtonView (@jupyter-widgets/controls, 1.4.0) | Attribute | Type | Default | Help | | ----------------------- | --------------------------------------------------------------------------------- | ----------------------------- | ------------------------------------------------- | | `_dom_classes` | array of string | `[]` | CSS classes applied to widget DOM element | | `_model_module` | string | `'@jupyter-widgets/controls'` | | `_model_module_version` | string | `'1.4.0'` | | `_model_name` | string | `'ButtonModel'` | | `_view_module` | string | `'@jupyter-widgets/controls'` | | `_view_module_version` | string | `'1.4.0'` | | `_view_name` | string | `'ButtonView'` | | `button_style` | string (one of `'primary'`, `'success'`, `'info'`, `'warning'`, `'danger'`, `''`) | `''` | Use a predefined styling for the button. | | `description` | string | `''` | Button label. | | `disabled` | boolean | `false` | Enable or disable user changes. | | `icon` | string | `''` | Font-awesome icon name, without the 'fa-' prefix. | | `layout` | reference to Layout widget | reference to new instance | | `style` | reference to ButtonStyle widget | reference to new instance | | `tooltip` | string | `''` | Tooltip caption of the button. | ### ButtonStyleModel (@jupyter-widgets/controls, 1.4.0); StyleView (@jupyter-widgets/base, 1.1.0) | Attribute | Type | Default | Help | | ----------------------- | ---------------- | ----------------------------- | ------------------------ | | `_model_module` | string | `'@jupyter-widgets/controls'` | | `_model_module_version` | string | `'1.4.0'` | | `_model_name` | string | `'ButtonStyleModel'` | | `_view_module` | string | `'@jupyter-widgets/base'` | | `_view_module_version` | string | `'1.1.0'` | | `_view_name` | string | `'StyleView'` | | `button_color` | `null` or string | `null` | Color of the button | | `font_weight` | string | `''` | Button text font weight. | ### CheckboxModel (@jupyter-widgets/controls, 1.4.0); CheckboxView (@jupyter-widgets/controls, 1.4.0) | Attribute | Type | Default | Help | | ----------------------- | ------------------------------------ | ----------------------------- | ------------------------------------------------------------------- | | `_dom_classes` | array of string | `[]` | CSS classes applied to widget DOM element | | `_model_module` | string | `'@jupyter-widgets/controls'` | | `_model_module_version` | string | `'1.4.0'` | | `_model_name` | string | `'CheckboxModel'` | | `_view_module` | string | `'@jupyter-widgets/controls'` | | `_view_module_version` | string | `'1.4.0'` | | `_view_name` | string | `'CheckboxView'` | | `description` | string | `''` | Description of the control. | | `description_tooltip` | `null` or string | `null` | Tooltip for the description (defaults to description). | | `disabled` | boolean | `false` | Enable or disable user changes. | | `indent` | boolean | `true` | Indent the control to align with other controls with a description. | | `layout` | reference to Layout widget | reference to new instance | | `style` | reference to DescriptionStyle widget | reference to new instance | Styling customizations | | `value` | boolean | `false` | Bool value | ### ColorPickerModel (@jupyter-widgets/controls, 1.4.0); ColorPickerView (@jupyter-widgets/controls, 1.4.0) | Attribute | Type | Default | Help | | ----------------------- | ------------------------------------ | ----------------------------- | ------------------------------------------------------ | | `_dom_classes` | array of string | `[]` | CSS classes applied to widget DOM element | | `_model_module` | string | `'@jupyter-widgets/controls'` | | `_model_module_version` | string | `'1.4.0'` | | `_model_name` | string | `'ColorPickerModel'` | | `_view_module` | string | `'@jupyter-widgets/controls'` | | `_view_module_version` | string | `'1.4.0'` | | `_view_name` | string | `'ColorPickerView'` | | `concise` | boolean | `false` | Display short version with just a color selector. | | `description` | string | `''` | Description of the control. | | `description_tooltip` | `null` or string | `null` | Tooltip for the description (defaults to description). | | `disabled` | boolean | `false` | Enable or disable user changes. | | `layout` | reference to Layout widget | reference to new instance | | `style` | reference to DescriptionStyle widget | reference to new instance | Styling customizations | | `value` | string | `'black'` | The color value. | ### ControllerAxisModel (@jupyter-widgets/controls, 1.4.0); ControllerAxisView (@jupyter-widgets/controls, 1.4.0) | Attribute | Type | Default | Help | | ----------------------- | -------------------------- | ----------------------------- | ----------------------------------------- | | `_dom_classes` | array of string | `[]` | CSS classes applied to widget DOM element | | `_model_module` | string | `'@jupyter-widgets/controls'` | | `_model_module_version` | string | `'1.4.0'` | | `_model_name` | string | `'ControllerAxisModel'` | | `_view_module` | string | `'@jupyter-widgets/controls'` | | `_view_module_version` | string | `'1.4.0'` | | `_view_name` | string | `'ControllerAxisView'` | | `layout` | reference to Layout widget | reference to new instance | | `value` | number (float) | `0.0` | The value of the axis. | ### ControllerButtonModel (@jupyter-widgets/controls, 1.4.0); ControllerButtonView (@jupyter-widgets/controls, 1.4.0) | Attribute | Type | Default | Help | | ----------------------- | -------------------------- | ----------------------------- | ----------------------------------------- | | `_dom_classes` | array of string | `[]` | CSS classes applied to widget DOM element | | `_model_module` | string | `'@jupyter-widgets/controls'` | | `_model_module_version` | string | `'1.4.0'` | | `_model_name` | string | `'ControllerButtonModel'` | | `_view_module` | string | `'@jupyter-widgets/controls'` | | `_view_module_version` | string | `'1.4.0'` | | `_view_name` | string | `'ControllerButtonView'` | | `layout` | reference to Layout widget | reference to new instance | | `pressed` | boolean | `false` | Whether the button is pressed. | | `value` | number (float) | `0.0` | The value of the button. | ### ControllerModel (@jupyter-widgets/controls, 1.4.0); ControllerView (@jupyter-widgets/controls, 1.4.0) | Attribute | Type | Default | Help | | ----------------------- | ----------------------------------- | ----------------------------- | ----------------------------------------------------- | | `_dom_classes` | array of string | `[]` | CSS classes applied to widget DOM element | | `_model_module` | string | `'@jupyter-widgets/controls'` | | `_model_module_version` | string | `'1.4.0'` | | `_model_name` | string | `'ControllerModel'` | | `_view_module` | string | `'@jupyter-widgets/controls'` | | `_view_module_version` | string | `'1.4.0'` | | `_view_name` | string | `'ControllerView'` | | `axes` | array of reference to Axis widget | `[]` | The axes on the gamepad. | | `buttons` | array of reference to Button widget | `[]` | The buttons on the gamepad. | | `connected` | boolean | `false` | Whether the gamepad is connected. | | `index` | number (integer) | `0` | The id number of the controller. | | `layout` | reference to Layout widget | reference to new instance | | `mapping` | string | `''` | The name of the control mapping. | | `name` | string | `''` | The name of the controller. | | `timestamp` | number (float) | `0.0` | The last time the data from this gamepad was updated. | ### DOMWidgetModel (@jupyter-widgets/controls, 1.4.0); None (@jupyter-widgets/controls, 1.4.0) | Attribute | Type | Default | Help | | ----------------------- | -------------------------- | ----------------------------- | ----------------------------------------- | | `_dom_classes` | array of string | `[]` | CSS classes applied to widget DOM element | | `_model_module` | string | `'@jupyter-widgets/controls'` | | `_model_module_version` | string | `'1.4.0'` | | `_model_name` | string | `'DOMWidgetModel'` | | `_view_module` | string | `'@jupyter-widgets/controls'` | | `_view_module_version` | string | `'1.4.0'` | | `_view_name` | `null` or string | `null` | Name of the view. | | `layout` | reference to Layout widget | reference to new instance | | `value` | Bytes | `b''` | The media data as a byte string. | ### DatePickerModel (@jupyter-widgets/controls, 1.4.0); DatePickerView (@jupyter-widgets/controls, 1.4.0) | Attribute | Type | Default | Help | | ----------------------- | ------------------------------------ | ----------------------------- | ------------------------------------------------------ | | `_dom_classes` | array of string | `[]` | CSS classes applied to widget DOM element | | `_model_module` | string | `'@jupyter-widgets/controls'` | | `_model_module_version` | string | `'1.4.0'` | | `_model_name` | string | `'DatePickerModel'` | | `_view_module` | string | `'@jupyter-widgets/controls'` | | `_view_module_version` | string | `'1.4.0'` | | `_view_name` | string | `'DatePickerView'` | | `description` | string | `''` | Description of the control. | | `description_tooltip` | `null` or string | `null` | Tooltip for the description (defaults to description). | | `disabled` | boolean | `false` | Enable or disable user changes. | | `layout` | reference to Layout widget | reference to new instance | | `style` | reference to DescriptionStyle widget | reference to new instance | Styling customizations | | `value` | `null` or Date | `null` | ### DescriptionStyleModel (@jupyter-widgets/controls, 1.4.0); StyleView (@jupyter-widgets/base, 1.1.0) | Attribute | Type | Default | Help | | ----------------------- | ------ | ----------------------------- | ---------------------------------------------------- | | `_model_module` | string | `'@jupyter-widgets/controls'` | | `_model_module_version` | string | `'1.4.0'` | | `_model_name` | string | `'DescriptionStyleModel'` | | `_view_module` | string | `'@jupyter-widgets/base'` | | `_view_module_version` | string | `'1.1.0'` | | `_view_name` | string | `'StyleView'` | | `description_width` | string | `''` | Width of the description to the side of the control. | ### DirectionalLinkModel (@jupyter-widgets/controls, 1.4.0); None (@jupyter-widgets/controls, 1.4.0) | Attribute | Type | Default | Help | | ----------------------- | ---------------- | ----------------------------- | -------------------------------------- | | `_model_module` | string | `'@jupyter-widgets/controls'` | | `_model_module_version` | string | `'1.4.0'` | | `_model_name` | string | `'DirectionalLinkModel'` | | `_view_module` | string | `'@jupyter-widgets/controls'` | | `_view_module_version` | string | `'1.4.0'` | | `_view_name` | `null` or string | `null` | Name of the view. | | `source` | array | `[]` | The source (widget, 'trait_name') pair | | `target` | array | `[]` | The target (widget, 'trait_name') pair | ### DropdownModel (@jupyter-widgets/controls, 1.4.0); DropdownView (@jupyter-widgets/controls, 1.4.0) | Attribute | Type | Default | Help | | ----------------------- | ------------------------------------ | ----------------------------- | ------------------------------------------------------ | | `_dom_classes` | array of string | `[]` | CSS classes applied to widget DOM element | | `_model_module` | string | `'@jupyter-widgets/controls'` | | `_model_module_version` | string | `'1.4.0'` | | `_model_name` | string | `'DropdownModel'` | | `_options_labels` | array of string | `[]` | The labels for the options. | | `_view_module` | string | `'@jupyter-widgets/controls'` | | `_view_module_version` | string | `'1.4.0'` | | `_view_name` | string | `'DropdownView'` | | `description` | string | `''` | Description of the control. | | `description_tooltip` | `null` or string | `null` | Tooltip for the description (defaults to description). | | `disabled` | boolean | `false` | Enable or disable user changes | | `index` | `null` or number (integer) | `null` | Selected index | | `layout` | reference to Layout widget | reference to new instance | | `style` | reference to DescriptionStyle widget | reference to new instance | Styling customizations | ### FloatLogSliderModel (@jupyter-widgets/controls, 1.4.0); FloatLogSliderView (@jupyter-widgets/controls, 1.4.0) | Attribute | Type | Default | Help | | ----------------------- | -------------------------------------------- | ----------------------------- | ----------------------------------------------------------------- | | `_dom_classes` | array of string | `[]` | CSS classes applied to widget DOM element | | `_model_module` | string | `'@jupyter-widgets/controls'` | | `_model_module_version` | string | `'1.4.0'` | | `_model_name` | string | `'FloatLogSliderModel'` | | `_view_module` | string | `'@jupyter-widgets/controls'` | | `_view_module_version` | string | `'1.4.0'` | | `_view_name` | string | `'FloatLogSliderView'` | | `base` | number (float) | `10.0` | Base for the logarithm | | `continuous_update` | boolean | `true` | Update the value of the widget as the user is holding the slider. | | `description` | string | `''` | Description of the control. | | `description_tooltip` | `null` or string | `null` | Tooltip for the description (defaults to description). | | `disabled` | boolean | `false` | Enable or disable user changes | | `layout` | reference to Layout widget | reference to new instance | | `max` | number (float) | `4.0` | Max value for the exponent | | `min` | number (float) | `0.0` | Min value for the exponent | | `orientation` | string (one of `'horizontal'`, `'vertical'`) | `'horizontal'` | Vertical or horizontal. | | `readout` | boolean | `true` | Display the current value of the slider next to it. | | `readout_format` | string | `'.3g'` | Format for the readout | | `step` | number (float) | `0.1` | Minimum step in the exponent to increment the value | | `style` | reference to SliderStyle widget | reference to new instance | | `value` | number (float) | `1.0` | Float value | ### FloatProgressModel (@jupyter-widgets/controls, 1.4.0); ProgressView (@jupyter-widgets/controls, 1.4.0) | Attribute | Type | Default | Help | | ----------------------- | ------------------------------------------------------------------------------ | ----------------------------- | ------------------------------------------------------ | | `_dom_classes` | array of string | `[]` | CSS classes applied to widget DOM element | | `_model_module` | string | `'@jupyter-widgets/controls'` | | `_model_module_version` | string | `'1.4.0'` | | `_model_name` | string | `'FloatProgressModel'` | | `_view_module` | string | `'@jupyter-widgets/controls'` | | `_view_module_version` | string | `'1.4.0'` | | `_view_name` | string | `'ProgressView'` | | `bar_style` | `null` or string (one of `'success'`, `'info'`, `'warning'`, `'danger'`, `''`) | `''` | Use a predefined styling for the progress bar. | | `description` | string | `''` | Description of the control. | | `description_tooltip` | `null` or string | `null` | Tooltip for the description (defaults to description). | | `layout` | reference to Layout widget | reference to new instance | | `max` | number (float) | `100.0` | Max value | | `min` | number (float) | `0.0` | Min value | | `orientation` | string (one of `'horizontal'`, `'vertical'`) | `'horizontal'` | Vertical or horizontal. | | `style` | reference to ProgressStyle widget | reference to new instance | | `value` | number (float) | `0.0` | Float value | ### FloatRangeSliderModel (@jupyter-widgets/controls, 1.4.0); FloatRangeSliderView (@jupyter-widgets/controls, 1.4.0) | Attribute | Type | Default | Help | | ----------------------- | -------------------------------------------- | ----------------------------- | ----------------------------------------------------------------- | | `_dom_classes` | array of string | `[]` | CSS classes applied to widget DOM element | | `_model_module` | string | `'@jupyter-widgets/controls'` | | `_model_module_version` | string | `'1.4.0'` | | `_model_name` | string | `'FloatRangeSliderModel'` | | `_view_module` | string | `'@jupyter-widgets/controls'` | | `_view_module_version` | string | `'1.4.0'` | | `_view_name` | string | `'FloatRangeSliderView'` | | `continuous_update` | boolean | `true` | Update the value of the widget as the user is sliding the slider. | | `description` | string | `''` | Description of the control. | | `description_tooltip` | `null` or string | `null` | Tooltip for the description (defaults to description). | | `disabled` | boolean | `false` | Enable or disable user changes | | `layout` | reference to Layout widget | reference to new instance | | `max` | number (float) | `100.0` | Max value | | `min` | number (float) | `0.0` | Min value | | `orientation` | string (one of `'horizontal'`, `'vertical'`) | `'horizontal'` | Vertical or horizontal. | | `readout` | boolean | `true` | Display the current value of the slider next to it. | | `readout_format` | string | `'.2f'` | Format for the readout | | `step` | number (float) | `0.1` | Minimum step to increment the value | | `style` | reference to SliderStyle widget | reference to new instance | | `value` | array | `[0.0, 1.0]` | Tuple of (lower, upper) bounds | ### FloatSliderModel (@jupyter-widgets/controls, 1.4.0); FloatSliderView (@jupyter-widgets/controls, 1.4.0) | Attribute | Type | Default | Help | | ----------------------- | -------------------------------------------- | ----------------------------- | ----------------------------------------------------------------- | | `_dom_classes` | array of string | `[]` | CSS classes applied to widget DOM element | | `_model_module` | string | `'@jupyter-widgets/controls'` | | `_model_module_version` | string | `'1.4.0'` | | `_model_name` | string | `'FloatSliderModel'` | | `_view_module` | string | `'@jupyter-widgets/controls'` | | `_view_module_version` | string | `'1.4.0'` | | `_view_name` | string | `'FloatSliderView'` | | `continuous_update` | boolean | `true` | Update the value of the widget as the user is holding the slider. | | `description` | string | `''` | Description of the control. | | `description_tooltip` | `null` or string | `null` | Tooltip for the description (defaults to description). | | `disabled` | boolean | `false` | Enable or disable user changes | | `layout` | reference to Layout widget | reference to new instance | | `max` | number (float) | `100.0` | Max value | | `min` | number (float) | `0.0` | Min value | | `orientation` | string (one of `'horizontal'`, `'vertical'`) | `'horizontal'` | Vertical or horizontal. | | `readout` | boolean | `true` | Display the current value of the slider next to it. | | `readout_format` | string | `'.2f'` | Format for the readout | | `step` | number (float) | `0.1` | Minimum step to increment the value | | `style` | reference to SliderStyle widget | reference to new instance | | `value` | number (float) | `0.0` | Float value | ### FloatTextModel (@jupyter-widgets/controls, 1.4.0); FloatTextView (@jupyter-widgets/controls, 1.4.0) | Attribute | Type | Default | Help | | ----------------------- | ------------------------------------ | ----------------------------- | ------------------------------------------------------------------------------------------------------------ | | `_dom_classes` | array of string | `[]` | CSS classes applied to widget DOM element | | `_model_module` | string | `'@jupyter-widgets/controls'` | | `_model_module_version` | string | `'1.4.0'` | | `_model_name` | string | `'FloatTextModel'` | | `_view_module` | string | `'@jupyter-widgets/controls'` | | `_view_module_version` | string | `'1.4.0'` | | `_view_name` | string | `'FloatTextView'` | | `continuous_update` | boolean | `false` | Update the value as the user types. If False, update on submission, e.g., pressing Enter or navigating away. | | `description` | string | `''` | Description of the control. | | `description_tooltip` | `null` or string | `null` | Tooltip for the description (defaults to description). | | `disabled` | boolean | `false` | Enable or disable user changes | | `layout` | reference to Layout widget | reference to new instance | | `step` | `null` or number (float) | `null` | Minimum step to increment the value | | `style` | reference to DescriptionStyle widget | reference to new instance | Styling customizations | | `value` | number (float) | `0.0` | Float value | ### GridBoxModel (@jupyter-widgets/controls, 1.4.0); GridBoxView (@jupyter-widgets/controls, 1.4.0) | Attribute | Type | Default | Help | | ----------------------- | -------------------------------------------------------------------- | ----------------------------- | ----------------------------------------- | | `_dom_classes` | array of string | `[]` | CSS classes applied to widget DOM element | | `_model_module` | string | `'@jupyter-widgets/controls'` | | `_model_module_version` | string | `'1.4.0'` | | `_model_name` | string | `'GridBoxModel'` | | `_view_module` | string | `'@jupyter-widgets/controls'` | | `_view_module_version` | string | `'1.4.0'` | | `_view_name` | string | `'GridBoxView'` | | `box_style` | string (one of `'success'`, `'info'`, `'warning'`, `'danger'`, `''`) | `''` | Use a predefined styling for the box. | | `children` | array of reference to Widget widget | `[]` | List of widget children | | `layout` | reference to Layout widget | reference to new instance | ### HBoxModel (@jupyter-widgets/controls, 1.4.0); HBoxView (@jupyter-widgets/controls, 1.4.0) | Attribute | Type | Default | Help | | ----------------------- | -------------------------------------------------------------------- | ----------------------------- | ----------------------------------------- | | `_dom_classes` | array of string | `[]` | CSS classes applied to widget DOM element | | `_model_module` | string | `'@jupyter-widgets/controls'` | | `_model_module_version` | string | `'1.4.0'` | | `_model_name` | string | `'HBoxModel'` | | `_view_module` | string | `'@jupyter-widgets/controls'` | | `_view_module_version` | string | `'1.4.0'` | | `_view_name` | string | `'HBoxView'` | | `box_style` | string (one of `'success'`, `'info'`, `'warning'`, `'danger'`, `''`) | `''` | Use a predefined styling for the box. | | `children` | array of reference to Widget widget | `[]` | List of widget children | | `layout` | reference to Layout widget | reference to new instance | ### HTMLMathModel (@jupyter-widgets/controls, 1.4.0); HTMLMathView (@jupyter-widgets/controls, 1.4.0) | Attribute | Type | Default | Help | | ----------------------- | ------------------------------------ | ----------------------------- | ------------------------------------------------------- | | `_dom_classes` | array of string | `[]` | CSS classes applied to widget DOM element | | `_model_module` | string | `'@jupyter-widgets/controls'` | | `_model_module_version` | string | `'1.4.0'` | | `_model_name` | string | `'HTMLMathModel'` | | `_view_module` | string | `'@jupyter-widgets/controls'` | | `_view_module_version` | string | `'1.4.0'` | | `_view_name` | string | `'HTMLMathView'` | | `description` | string | `''` | Description of the control. | | `description_tooltip` | `null` or string | `null` | Tooltip for the description (defaults to description). | | `layout` | reference to Layout widget | reference to new instance | | `placeholder` | string | `'\u200b'` | Placeholder text to display when nothing has been typed | | `style` | reference to DescriptionStyle widget | reference to new instance | Styling customizations | | `value` | string | `''` | String value | ### HTMLModel (@jupyter-widgets/controls, 1.4.0); HTMLView (@jupyter-widgets/controls, 1.4.0) | Attribute | Type | Default | Help | | ----------------------- | ------------------------------------ | ----------------------------- | ------------------------------------------------------- | | `_dom_classes` | array of string | `[]` | CSS classes applied to widget DOM element | | `_model_module` | string | `'@jupyter-widgets/controls'` | | `_model_module_version` | string | `'1.4.0'` | | `_model_name` | string | `'HTMLModel'` | | `_view_module` | string | `'@jupyter-widgets/controls'` | | `_view_module_version` | string | `'1.4.0'` | | `_view_name` | string | `'HTMLView'` | | `description` | string | `''` | Description of the control. | | `description_tooltip` | `null` or string | `null` | Tooltip for the description (defaults to description). | | `layout` | reference to Layout widget | reference to new instance | | `placeholder` | string | `'\u200b'` | Placeholder text to display when nothing has been typed | | `style` | reference to DescriptionStyle widget | reference to new instance | Styling customizations | | `value` | string | `''` | String value | ### ImageModel (@jupyter-widgets/controls, 1.4.0); ImageView (@jupyter-widgets/controls, 1.4.0) | Attribute | Type | Default | Help | | ----------------------- | -------------------------- | ----------------------------- | ----------------------------------------- | | `_dom_classes` | array of string | `[]` | CSS classes applied to widget DOM element | | `_model_module` | string | `'@jupyter-widgets/controls'` | | `_model_module_version` | string | `'1.4.0'` | | `_model_name` | string | `'ImageModel'` | | `_view_module` | string | `'@jupyter-widgets/controls'` | | `_view_module_version` | string | `'1.4.0'` | | `_view_name` | string | `'ImageView'` | | `format` | string | `'png'` | The format of the image. | | `height` | string | `''` | Height of the image in pixels. | | `layout` | reference to Layout widget | reference to new instance | | `value` | Bytes | `b''` | The media data as a byte string. | | `width` | string | `''` | Width of the image in pixels. | ### IntProgressModel (@jupyter-widgets/controls, 1.4.0); ProgressView (@jupyter-widgets/controls, 1.4.0) | Attribute | Type | Default | Help | | ----------------------- | -------------------------------------------------------------------- | ----------------------------- | ------------------------------------------------------ | | `_dom_classes` | array of string | `[]` | CSS classes applied to widget DOM element | | `_model_module` | string | `'@jupyter-widgets/controls'` | | `_model_module_version` | string | `'1.4.0'` | | `_model_name` | string | `'IntProgressModel'` | | `_view_module` | string | `'@jupyter-widgets/controls'` | | `_view_module_version` | string | `'1.4.0'` | | `_view_name` | string | `'ProgressView'` | | `bar_style` | string (one of `'success'`, `'info'`, `'warning'`, `'danger'`, `''`) | `''` | Use a predefined styling for the progress bar. | | `description` | string | `''` | Description of the control. | | `description_tooltip` | `null` or string | `null` | Tooltip for the description (defaults to description). | | `layout` | reference to Layout widget | reference to new instance | | `max` | number (integer) | `100` | Max value | | `min` | number (integer) | `0` | Min value | | `orientation` | string (one of `'horizontal'`, `'vertical'`) | `'horizontal'` | Vertical or horizontal. | | `style` | reference to ProgressStyle widget | reference to new instance | | `value` | number (integer) | `0` | Int value | ### IntRangeSliderModel (@jupyter-widgets/controls, 1.4.0); IntRangeSliderView (@jupyter-widgets/controls, 1.4.0) | Attribute | Type | Default | Help | | ----------------------- | -------------------------------------------- | ----------------------------- | ----------------------------------------------------------------- | | `_dom_classes` | array of string | `[]` | CSS classes applied to widget DOM element | | `_model_module` | string | `'@jupyter-widgets/controls'` | | `_model_module_version` | string | `'1.4.0'` | | `_model_name` | string | `'IntRangeSliderModel'` | | `_view_module` | string | `'@jupyter-widgets/controls'` | | `_view_module_version` | string | `'1.4.0'` | | `_view_name` | string | `'IntRangeSliderView'` | | `continuous_update` | boolean | `true` | Update the value of the widget as the user is sliding the slider. | | `description` | string | `''` | Description of the control. | | `description_tooltip` | `null` or string | `null` | Tooltip for the description (defaults to description). | | `disabled` | boolean | `false` | Enable or disable user changes | | `layout` | reference to Layout widget | reference to new instance | | `max` | number (integer) | `100` | Max value | | `min` | number (integer) | `0` | Min value | | `orientation` | string (one of `'horizontal'`, `'vertical'`) | `'horizontal'` | Vertical or horizontal. | | `readout` | boolean | `true` | Display the current value of the slider next to it. | | `readout_format` | string | `'d'` | Format for the readout | | `step` | number (integer) | `1` | Minimum step that the value can take | | `style` | reference to SliderStyle widget | reference to new instance | Slider style customizations. | | `value` | array | `[0, 1]` | Tuple of (lower, upper) bounds | ### IntSliderModel (@jupyter-widgets/controls, 1.4.0); IntSliderView (@jupyter-widgets/controls, 1.4.0) | Attribute | Type | Default | Help | | ----------------------- | -------------------------------------------- | ----------------------------- | ----------------------------------------------------------------- | | `_dom_classes` | array of string | `[]` | CSS classes applied to widget DOM element | | `_model_module` | string | `'@jupyter-widgets/controls'` | | `_model_module_version` | string | `'1.4.0'` | | `_model_name` | string | `'IntSliderModel'` | | `_view_module` | string | `'@jupyter-widgets/controls'` | | `_view_module_version` | string | `'1.4.0'` | | `_view_name` | string | `'IntSliderView'` | | `continuous_update` | boolean | `true` | Update the value of the widget as the user is holding the slider. | | `description` | string | `''` | Description of the control. | | `description_tooltip` | `null` or string | `null` | Tooltip for the description (defaults to description). | | `disabled` | boolean | `false` | Enable or disable user changes | | `layout` | reference to Layout widget | reference to new instance | | `max` | number (integer) | `100` | Max value | | `min` | number (integer) | `0` | Min value | | `orientation` | string (one of `'horizontal'`, `'vertical'`) | `'horizontal'` | Vertical or horizontal. | | `readout` | boolean | `true` | Display the current value of the slider next to it. | | `readout_format` | string | `'d'` | Format for the readout | | `step` | number (integer) | `1` | Minimum step to increment the value | | `style` | reference to SliderStyle widget | reference to new instance | | `value` | number (integer) | `0` | Int value | ### IntTextModel (@jupyter-widgets/controls, 1.4.0); IntTextView (@jupyter-widgets/controls, 1.4.0) | Attribute | Type | Default | Help | | ----------------------- | ------------------------------------ | ----------------------------- | ------------------------------------------------------------------------------------------------------------ | | `_dom_classes` | array of string | `[]` | CSS classes applied to widget DOM element | | `_model_module` | string | `'@jupyter-widgets/controls'` | | `_model_module_version` | string | `'1.4.0'` | | `_model_name` | string | `'IntTextModel'` | | `_view_module` | string | `'@jupyter-widgets/controls'` | | `_view_module_version` | string | `'1.4.0'` | | `_view_name` | string | `'IntTextView'` | | `continuous_update` | boolean | `false` | Update the value as the user types. If False, update on submission, e.g., pressing Enter or navigating away. | | `description` | string | `''` | Description of the control. | | `description_tooltip` | `null` or string | `null` | Tooltip for the description (defaults to description). | | `disabled` | boolean | `false` | Enable or disable user changes | | `layout` | reference to Layout widget | reference to new instance | | `step` | number (integer) | `1` | Minimum step to increment the value | | `style` | reference to DescriptionStyle widget | reference to new instance | Styling customizations | | `value` | number (integer) | `0` | Int value | ### LabelModel (@jupyter-widgets/controls, 1.4.0); LabelView (@jupyter-widgets/controls, 1.4.0) | Attribute | Type | Default | Help | | ----------------------- | ------------------------------------ | ----------------------------- | ------------------------------------------------------- | | `_dom_classes` | array of string | `[]` | CSS classes applied to widget DOM element | | `_model_module` | string | `'@jupyter-widgets/controls'` | | `_model_module_version` | string | `'1.4.0'` | | `_model_name` | string | `'LabelModel'` | | `_view_module` | string | `'@jupyter-widgets/controls'` | | `_view_module_version` | string | `'1.4.0'` | | `_view_name` | string | `'LabelView'` | | `description` | string | `''` | Description of the control. | | `description_tooltip` | `null` or string | `null` | Tooltip for the description (defaults to description). | | `layout` | reference to Layout widget | reference to new instance | | `placeholder` | string | `'\u200b'` | Placeholder text to display when nothing has been typed | | `style` | reference to DescriptionStyle widget | reference to new instance | Styling customizations | | `value` | string | `''` | String value | ### LinkModel (@jupyter-widgets/controls, 1.4.0); None (@jupyter-widgets/controls, 1.4.0) | Attribute | Type | Default | Help | | ----------------------- | ---------------- | ----------------------------- | -------------------------------------- | | `_model_module` | string | `'@jupyter-widgets/controls'` | | `_model_module_version` | string | `'1.4.0'` | | `_model_name` | string | `'LinkModel'` | | `_view_module` | string | `'@jupyter-widgets/controls'` | | `_view_module_version` | string | `'1.4.0'` | | `_view_name` | `null` or string | `null` | Name of the view. | | `source` | array | `[]` | The source (widget, 'trait_name') pair | | `target` | array | `[]` | The target (widget, 'trait_name') pair | ### PasswordModel (@jupyter-widgets/controls, 1.4.0); PasswordView (@jupyter-widgets/controls, 1.4.0) | Attribute | Type | Default | Help | | ----------------------- | ------------------------------------ | ----------------------------- | ------------------------------------------------------------------------------------------------------------ | | `_dom_classes` | array of string | `[]` | CSS classes applied to widget DOM element | | `_model_module` | string | `'@jupyter-widgets/controls'` | | `_model_module_version` | string | `'1.4.0'` | | `_model_name` | string | `'PasswordModel'` | | `_view_module` | string | `'@jupyter-widgets/controls'` | | `_view_module_version` | string | `'1.4.0'` | | `_view_name` | string | `'PasswordView'` | | `continuous_update` | boolean | `true` | Update the value as the user types. If False, update on submission, e.g., pressing Enter or navigating away. | | `description` | string | `''` | Description of the control. | | `description_tooltip` | `null` or string | `null` | Tooltip for the description (defaults to description). | | `disabled` | boolean | `false` | Enable or disable user changes | | `layout` | reference to Layout widget | reference to new instance | | `placeholder` | string | `'\u200b'` | Placeholder text to display when nothing has been typed | | `style` | reference to DescriptionStyle widget | reference to new instance | Styling customizations | | `value` | string | `''` | String value | ### PlayModel (@jupyter-widgets/controls, 1.4.0); PlayView (@jupyter-widgets/controls, 1.4.0) | Attribute | Type | Default | Help | | ----------------------- | ------------------------------------ | ----------------------------- | ------------------------------------------------------ | | `_dom_classes` | array of string | `[]` | CSS classes applied to widget DOM element | | `_model_module` | string | `'@jupyter-widgets/controls'` | | `_model_module_version` | string | `'1.4.0'` | | `_model_name` | string | `'PlayModel'` | | `_playing` | boolean | `false` | Whether the control is currently playing. | | `_repeat` | boolean | `false` | Whether the control will repeat in a continuous loop. | | `_view_module` | string | `'@jupyter-widgets/controls'` | | `_view_module_version` | string | `'1.4.0'` | | `_view_name` | string | `'PlayView'` | | `description` | string | `''` | Description of the control. | | `description_tooltip` | `null` or string | `null` | Tooltip for the description (defaults to description). | | `disabled` | boolean | `false` | Enable or disable user changes | | `interval` | number (integer) | `100` | The maximum value for the play control. | | `layout` | reference to Layout widget | reference to new instance | | `max` | number (integer) | `100` | Max value | | `min` | number (integer) | `0` | Min value | | `show_repeat` | boolean | `true` | Show the repeat toggle button in the widget. | | `step` | number (integer) | `1` | Increment step | | `style` | reference to DescriptionStyle widget | reference to new instance | Styling customizations | | `value` | number (integer) | `0` | Int value | ### ProgressStyleModel (@jupyter-widgets/controls, 1.4.0); StyleView (@jupyter-widgets/base, 1.1.0) | Attribute | Type | Default | Help | | ----------------------- | ---------------- | ----------------------------- | ---------------------------------------------------- | | `_model_module` | string | `'@jupyter-widgets/controls'` | | `_model_module_version` | string | `'1.4.0'` | | `_model_name` | string | `'ProgressStyleModel'` | | `_view_module` | string | `'@jupyter-widgets/base'` | | `_view_module_version` | string | `'1.1.0'` | | `_view_name` | string | `'StyleView'` | | `bar_color` | `null` or string | `null` | Color of the progress bar. | | `description_width` | string | `''` | Width of the description to the side of the control. | ### RadioButtonsModel (@jupyter-widgets/controls, 1.4.0); RadioButtonsView (@jupyter-widgets/controls, 1.4.0) | Attribute | Type | Default | Help | | ----------------------- | ------------------------------------ | ----------------------------- | ------------------------------------------------------ | | `_dom_classes` | array of string | `[]` | CSS classes applied to widget DOM element | | `_model_module` | string | `'@jupyter-widgets/controls'` | | `_model_module_version` | string | `'1.4.0'` | | `_model_name` | string | `'RadioButtonsModel'` | | `_options_labels` | array of string | `[]` | The labels for the options. | | `_view_module` | string | `'@jupyter-widgets/controls'` | | `_view_module_version` | string | `'1.4.0'` | | `_view_name` | string | `'RadioButtonsView'` | | `description` | string | `''` | Description of the control. | | `description_tooltip` | `null` or string | `null` | Tooltip for the description (defaults to description). | | `disabled` | boolean | `false` | Enable or disable user changes | | `index` | `null` or number (integer) | `null` | Selected index | | `layout` | reference to Layout widget | reference to new instance | | `style` | reference to DescriptionStyle widget | reference to new instance | Styling customizations | ### SelectModel (@jupyter-widgets/controls, 1.4.0); SelectView (@jupyter-widgets/controls, 1.4.0) | Attribute | Type | Default | Help | | ----------------------- | ------------------------------------ | ----------------------------- | ------------------------------------------------------ | | `_dom_classes` | array of string | `[]` | CSS classes applied to widget DOM element | | `_model_module` | string | `'@jupyter-widgets/controls'` | | `_model_module_version` | string | `'1.4.0'` | | `_model_name` | string | `'SelectModel'` | | `_options_labels` | array of string | `[]` | The labels for the options. | | `_view_module` | string | `'@jupyter-widgets/controls'` | | `_view_module_version` | string | `'1.4.0'` | | `_view_name` | string | `'SelectView'` | | `description` | string | `''` | Description of the control. | | `description_tooltip` | `null` or string | `null` | Tooltip for the description (defaults to description). | | `disabled` | boolean | `false` | Enable or disable user changes | | `index` | `null` or number (integer) | `null` | Selected index | | `layout` | reference to Layout widget | reference to new instance | | `rows` | number (integer) | `5` | The number of rows to display. | | `style` | reference to DescriptionStyle widget | reference to new instance | Styling customizations | ### SelectMultipleModel (@jupyter-widgets/controls, 1.4.0); SelectMultipleView (@jupyter-widgets/controls, 1.4.0) | Attribute | Type | Default | Help | | ----------------------- | ------------------------------------ | ----------------------------- | ------------------------------------------------------ | | `_dom_classes` | array of string | `[]` | CSS classes applied to widget DOM element | | `_model_module` | string | `'@jupyter-widgets/controls'` | | `_model_module_version` | string | `'1.4.0'` | | `_model_name` | string | `'SelectMultipleModel'` | | `_options_labels` | array of string | `[]` | The labels for the options. | | `_view_module` | string | `'@jupyter-widgets/controls'` | | `_view_module_version` | string | `'1.4.0'` | | `_view_name` | string | `'SelectMultipleView'` | | `description` | string | `''` | Description of the control. | | `description_tooltip` | `null` or string | `null` | Tooltip for the description (defaults to description). | | `disabled` | boolean | `false` | Enable or disable user changes | | `index` | array of number (integer) | `[]` | Selected indices | | `layout` | reference to Layout widget | reference to new instance | | `rows` | number (integer) | `5` | The number of rows to display. | | `style` | reference to DescriptionStyle widget | reference to new instance | Styling customizations | ### SelectionRangeSliderModel (@jupyter-widgets/controls, 1.4.0); SelectionRangeSliderView (@jupyter-widgets/controls, 1.4.0) | Attribute | Type | Default | Help | | ----------------------- | -------------------------------------------- | ----------------------------- | ----------------------------------------------------------------- | | `_dom_classes` | array of string | `[]` | CSS classes applied to widget DOM element | | `_model_module` | string | `'@jupyter-widgets/controls'` | | `_model_module_version` | string | `'1.4.0'` | | `_model_name` | string | `'SelectionRangeSliderModel'` | | `_options_labels` | array of string | `[]` | The labels for the options. | | `_view_module` | string | `'@jupyter-widgets/controls'` | | `_view_module_version` | string | `'1.4.0'` | | `_view_name` | string | `'SelectionRangeSliderView'` | | `continuous_update` | boolean | `true` | Update the value of the widget as the user is holding the slider. | | `description` | string | `''` | Description of the control. | | `description_tooltip` | `null` or string | `null` | Tooltip for the description (defaults to description). | | `disabled` | boolean | `false` | Enable or disable user changes | | `index` | array | `[0, 0]` | Min and max selected indices | | `layout` | reference to Layout widget | reference to new instance | | `orientation` | string (one of `'horizontal'`, `'vertical'`) | `'horizontal'` | Vertical or horizontal. | | `readout` | boolean | `true` | Display the current selected label next to the slider | | `style` | reference to DescriptionStyle widget | reference to new instance | Styling customizations | ### SelectionSliderModel (@jupyter-widgets/controls, 1.4.0); SelectionSliderView (@jupyter-widgets/controls, 1.4.0) | Attribute | Type | Default | Help | | ----------------------- | -------------------------------------------- | ----------------------------- | ----------------------------------------------------------------- | | `_dom_classes` | array of string | `[]` | CSS classes applied to widget DOM element | | `_model_module` | string | `'@jupyter-widgets/controls'` | | `_model_module_version` | string | `'1.4.0'` | | `_model_name` | string | `'SelectionSliderModel'` | | `_options_labels` | array of string | `[]` | The labels for the options. | | `_view_module` | string | `'@jupyter-widgets/controls'` | | `_view_module_version` | string | `'1.4.0'` | | `_view_name` | string | `'SelectionSliderView'` | | `continuous_update` | boolean | `true` | Update the value of the widget as the user is holding the slider. | | `description` | string | `''` | Description of the control. | | `description_tooltip` | `null` or string | `null` | Tooltip for the description (defaults to description). | | `disabled` | boolean | `false` | Enable or disable user changes | | `index` | number (integer) | `0` | Selected index | | `layout` | reference to Layout widget | reference to new instance | | `orientation` | string (one of `'horizontal'`, `'vertical'`) | `'horizontal'` | Vertical or horizontal. | | `readout` | boolean | `true` | Display the current selected label next to the slider | | `style` | reference to DescriptionStyle widget | reference to new instance | Styling customizations | ### SliderStyleModel (@jupyter-widgets/controls, 1.4.0); StyleView (@jupyter-widgets/base, 1.1.0) | Attribute | Type | Default | Help | | ----------------------- | ---------------- | ----------------------------- | ---------------------------------------------------- | | `_model_module` | string | `'@jupyter-widgets/controls'` | | `_model_module_version` | string | `'1.4.0'` | | `_model_name` | string | `'SliderStyleModel'` | | `_view_module` | string | `'@jupyter-widgets/base'` | | `_view_module_version` | string | `'1.1.0'` | | `_view_name` | string | `'StyleView'` | | `description_width` | string | `''` | Width of the description to the side of the control. | | `handle_color` | `null` or string | `null` | Color of the slider handle. | ### TabModel (@jupyter-widgets/controls, 1.4.0); TabView (@jupyter-widgets/controls, 1.4.0) | Attribute | Type | Default | Help | | ----------------------- | -------------------------------------------------------------------- | ----------------------------- | --------------------------------------------------------------------------------------------------------------------------------- | | `_dom_classes` | array of string | `[]` | CSS classes applied to widget DOM element | | `_model_module` | string | `'@jupyter-widgets/controls'` | | `_model_module_version` | string | `'1.4.0'` | | `_model_name` | string | `'TabModel'` | | `_titles` | object | `{}` | Titles of the pages | | `_view_module` | string | `'@jupyter-widgets/controls'` | | `_view_module_version` | string | `'1.4.0'` | | `_view_name` | string | `'TabView'` | | `box_style` | string (one of `'success'`, `'info'`, `'warning'`, `'danger'`, `''`) | `''` | Use a predefined styling for the box. | | `children` | array of reference to Widget widget | `[]` | List of widget children | | `layout` | reference to Layout widget | reference to new instance | | `selected_index` | `null` or number (integer) | `0` | The index of the selected page. This is either an integer selecting a particular sub-widget, or None to have no widgets selected. | ### TextModel (@jupyter-widgets/controls, 1.4.0); TextView (@jupyter-widgets/controls, 1.4.0) | Attribute | Type | Default | Help | | ----------------------- | ------------------------------------ | ----------------------------- | ------------------------------------------------------------------------------------------------------------ | | `_dom_classes` | array of string | `[]` | CSS classes applied to widget DOM element | | `_model_module` | string | `'@jupyter-widgets/controls'` | | `_model_module_version` | string | `'1.4.0'` | | `_model_name` | string | `'TextModel'` | | `_view_module` | string | `'@jupyter-widgets/controls'` | | `_view_module_version` | string | `'1.4.0'` | | `_view_name` | string | `'TextView'` | | `continuous_update` | boolean | `true` | Update the value as the user types. If False, update on submission, e.g., pressing Enter or navigating away. | | `description` | string | `''` | Description of the control. | | `description_tooltip` | `null` or string | `null` | Tooltip for the description (defaults to description). | | `disabled` | boolean | `false` | Enable or disable user changes | | `layout` | reference to Layout widget | reference to new instance | | `placeholder` | string | `'\u200b'` | Placeholder text to display when nothing has been typed | | `style` | reference to DescriptionStyle widget | reference to new instance | Styling customizations | | `value` | string | `''` | String value | ### TextareaModel (@jupyter-widgets/controls, 1.4.0); TextareaView (@jupyter-widgets/controls, 1.4.0) | Attribute | Type | Default | Help | | ----------------------- | ------------------------------------ | ----------------------------- | ------------------------------------------------------------------------------------------------------------ | | `_dom_classes` | array of string | `[]` | CSS classes applied to widget DOM element | | `_model_module` | string | `'@jupyter-widgets/controls'` | | `_model_module_version` | string | `'1.4.0'` | | `_model_name` | string | `'TextareaModel'` | | `_view_module` | string | `'@jupyter-widgets/controls'` | | `_view_module_version` | string | `'1.4.0'` | | `_view_name` | string | `'TextareaView'` | | `continuous_update` | boolean | `true` | Update the value as the user types. If False, update on submission, e.g., pressing Enter or navigating away. | | `description` | string | `''` | Description of the control. | | `description_tooltip` | `null` or string | `null` | Tooltip for the description (defaults to description). | | `disabled` | boolean | `false` | Enable or disable user changes | | `layout` | reference to Layout widget | reference to new instance | | `placeholder` | string | `'\u200b'` | Placeholder text to display when nothing has been typed | | `rows` | `null` or number (integer) | `null` | The number of rows to display. | | `style` | reference to DescriptionStyle widget | reference to new instance | Styling customizations | | `value` | string | `''` | String value | ### ToggleButtonModel (@jupyter-widgets/controls, 1.4.0); ToggleButtonView (@jupyter-widgets/controls, 1.4.0) | Attribute | Type | Default | Help | | ----------------------- | --------------------------------------------------------------------------------- | ----------------------------- | ------------------------------------------------------ | | `_dom_classes` | array of string | `[]` | CSS classes applied to widget DOM element | | `_model_module` | string | `'@jupyter-widgets/controls'` | | `_model_module_version` | string | `'1.4.0'` | | `_model_name` | string | `'ToggleButtonModel'` | | `_view_module` | string | `'@jupyter-widgets/controls'` | | `_view_module_version` | string | `'1.4.0'` | | `_view_name` | string | `'ToggleButtonView'` | | `button_style` | string (one of `'primary'`, `'success'`, `'info'`, `'warning'`, `'danger'`, `''`) | `''` | Use a predefined styling for the button. | | `description` | string | `''` | Description of the control. | | `description_tooltip` | `null` or string | `null` | Tooltip for the description (defaults to description). | | `disabled` | boolean | `false` | Enable or disable user changes. | | `icon` | string | `''` | Font-awesome icon. | | `layout` | reference to Layout widget | reference to new instance | | `style` | reference to DescriptionStyle widget | reference to new instance | Styling customizations | | `tooltip` | string | `''` | Tooltip caption of the toggle button. | | `value` | boolean | `false` | Bool value | ### ToggleButtonsModel (@jupyter-widgets/controls, 1.4.0); ToggleButtonsView (@jupyter-widgets/controls, 1.4.0) | Attribute | Type | Default | Help | | ----------------------- | ------------------------------------------------------------------------------------------- | ----------------------------- | ----------------------------------------------------------------------- | | `_dom_classes` | array of string | `[]` | CSS classes applied to widget DOM element | | `_model_module` | string | `'@jupyter-widgets/controls'` | | `_model_module_version` | string | `'1.4.0'` | | `_model_name` | string | `'ToggleButtonsModel'` | | `_options_labels` | array of string | `[]` | The labels for the options. | | `_view_module` | string | `'@jupyter-widgets/controls'` | | `_view_module_version` | string | `'1.4.0'` | | `_view_name` | string | `'ToggleButtonsView'` | | `button_style` | `null` or string (one of `'primary'`, `'success'`, `'info'`, `'warning'`, `'danger'`, `''`) | `''` | Use a predefined styling for the buttons. | | `description` | string | `''` | Description of the control. | | `description_tooltip` | `null` or string | `null` | Tooltip for the description (defaults to description). | | `disabled` | boolean | `false` | Enable or disable user changes | | `icons` | array of string | `[]` | Icons names for each button (FontAwesome names without the fa- prefix). | | `index` | `null` or number (integer) | `null` | Selected index | | `layout` | reference to Layout widget | reference to new instance | | `style` | reference to ToggleButtonsStyle widget | reference to new instance | | `tooltips` | array of string | `[]` | Tooltips for each button. | ### ToggleButtonsStyleModel (@jupyter-widgets/controls, 1.4.0); StyleView (@jupyter-widgets/base, 1.1.0) | Attribute | Type | Default | Help | | ----------------------- | ------ | ----------------------------- | ---------------------------------------------------- | | `_model_module` | string | `'@jupyter-widgets/controls'` | | `_model_module_version` | string | `'1.4.0'` | | `_model_name` | string | `'ToggleButtonsStyleModel'` | | `_view_module` | string | `'@jupyter-widgets/base'` | | `_view_module_version` | string | `'1.1.0'` | | `_view_name` | string | `'StyleView'` | | `button_width` | string | `''` | The width of each button. | | `description_width` | string | `''` | Width of the description to the side of the control. | | `font_weight` | string | `''` | Text font weight of each button. | ### VBoxModel (@jupyter-widgets/controls, 1.4.0); VBoxView (@jupyter-widgets/controls, 1.4.0) | Attribute | Type | Default | Help | | ----------------------- | -------------------------------------------------------------------- | ----------------------------- | ----------------------------------------- | | `_dom_classes` | array of string | `[]` | CSS classes applied to widget DOM element | | `_model_module` | string | `'@jupyter-widgets/controls'` | | `_model_module_version` | string | `'1.4.0'` | | `_model_name` | string | `'VBoxModel'` | | `_view_module` | string | `'@jupyter-widgets/controls'` | | `_view_module_version` | string | `'1.4.0'` | | `_view_name` | string | `'VBoxView'` | | `box_style` | string (one of `'success'`, `'info'`, `'warning'`, `'danger'`, `''`) | `''` | Use a predefined styling for the box. | | `children` | array of reference to Widget widget | `[]` | List of widget children | | `layout` | reference to Layout widget | reference to new instance | ### ValidModel (@jupyter-widgets/controls, 1.4.0); ValidView (@jupyter-widgets/controls, 1.4.0) | Attribute | Type | Default | Help | | ----------------------- | ------------------------------------ | ----------------------------- | ------------------------------------------------------ | | `_dom_classes` | array of string | `[]` | CSS classes applied to widget DOM element | | `_model_module` | string | `'@jupyter-widgets/controls'` | | `_model_module_version` | string | `'1.4.0'` | | `_model_name` | string | `'ValidModel'` | | `_view_module` | string | `'@jupyter-widgets/controls'` | | `_view_module_version` | string | `'1.4.0'` | | `_view_name` | string | `'ValidView'` | | `description` | string | `''` | Description of the control. | | `description_tooltip` | `null` or string | `null` | Tooltip for the description (defaults to description). | | `disabled` | boolean | `false` | Enable or disable user changes. | | `layout` | reference to Layout widget | reference to new instance | | `readout` | string | `'Invalid'` | Message displayed when the value is False | | `style` | reference to DescriptionStyle widget | reference to new instance | Styling customizations | | `value` | boolean | `false` | Bool value | ### VideoModel (@jupyter-widgets/controls, 1.4.0); VideoView (@jupyter-widgets/controls, 1.4.0) | Attribute | Type | Default | Help | | ----------------------- | -------------------------- | ----------------------------- | ----------------------------------------------------------------------------------- | | `_dom_classes` | array of string | `[]` | CSS classes applied to widget DOM element | | `_model_module` | string | `'@jupyter-widgets/controls'` | | `_model_module_version` | string | `'1.4.0'` | | `_model_name` | string | `'VideoModel'` | | `_view_module` | string | `'@jupyter-widgets/controls'` | | `_view_module_version` | string | `'1.4.0'` | | `_view_name` | string | `'VideoView'` | | `autoplay` | boolean | `true` | When true, the video starts when it's displayed | | `controls` | boolean | `true` | Specifies that video controls should be displayed (such as a play/pause button etc) | | `format` | string | `'mp4'` | The format of the video. | | `height` | string | `''` | Height of the video in pixels. | | `layout` | reference to Layout widget | reference to new instance | | `loop` | boolean | `true` | When true, the video will start from the beginning after finishing | | `value` | Bytes | `b''` | The media data as a byte string. | | `width` | string | `''` | Width of the video in pixels. | ### OutputModel (@jupyter-widgets/output, 1.0.0); OutputView (@jupyter-widgets/output, 1.0.0) | Attribute | Type | Default | Help | | ----------------------- | -------------------------- | --------------------------- | --------------------------------------------- | | `_dom_classes` | array of string | `[]` | CSS classes applied to widget DOM element | | `_model_module` | string | `'@jupyter-widgets/output'` | | `_model_module_version` | string | `'1.0.0'` | | `_model_name` | string | `'OutputModel'` | | `_view_module` | string | `'@jupyter-widgets/output'` | | `_view_module_version` | string | `'1.0.0'` | | `_view_name` | string | `'OutputView'` | | `layout` | reference to Layout widget | reference to new instance | | `msg_id` | string | `''` | Parent message id of messages to capture | | `outputs` | array of object | `[]` | The output messages synced from the frontend. | ipywidgets-8.1.1/packages/schema/jupyterwidgetmodels.v7-5.md000066400000000000000000004317641450026722000240750ustar00rootroot00000000000000# Model State This is a description of the model state for each widget in the core Jupyter widgets library. The model ID of a widget is the id of the comm object the widget is using. A reference to a widget is serialized to JSON as a string of the form `"IPY_MODEL_"`, where `` is the model ID of a previously created widget of the specified type. This model specification is for ipywidgets 7.4._, @jupyter-widgets/base 1.1._, and @jupyter-widgets/controls 1.4.\*. ## Model attributes Each widget in the Jupyter core widgets is represented below. The heading represents the model name, module, and version, view name, module, and version that the widget is registered with. ### LayoutModel (@jupyter-widgets/base, 1.2.0); LayoutView (@jupyter-widgets/base, 1.2.0) | Attribute | Type | Default | Help | | ----------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------- | ---------------------------------------------------------------- | | `_model_module` | string | `'@jupyter-widgets/base'` | The namespace for the model. | | `_model_module_version` | string | `'1.2.0'` | A semver requirement for namespace version containing the model. | | `_model_name` | string | `'LayoutModel'` | | `_view_module` | string | `'@jupyter-widgets/base'` | | `_view_module_version` | string | `'1.2.0'` | | `_view_name` | string | `'LayoutView'` | | `align_content` | `null` or string (one of `'flex-start'`, `'flex-end'`, `'center'`, `'space-between'`, `'space-around'`, `'space-evenly'`, `'stretch'`, `'inherit'`, `'initial'`, `'unset'`) | `null` | The align-content CSS attribute. | | `align_items` | `null` or string (one of `'flex-start'`, `'flex-end'`, `'center'`, `'baseline'`, `'stretch'`, `'inherit'`, `'initial'`, `'unset'`) | `null` | The align-items CSS attribute. | | `align_self` | `null` or string (one of `'auto'`, `'flex-start'`, `'flex-end'`, `'center'`, `'baseline'`, `'stretch'`, `'inherit'`, `'initial'`, `'unset'`) | `null` | The align-self CSS attribute. | | `border` | `null` or string | `null` | The border CSS attribute. | | `bottom` | `null` or string | `null` | The bottom CSS attribute. | | `display` | `null` or string | `null` | The display CSS attribute. | | `flex` | `null` or string | `null` | The flex CSS attribute. | | `flex_flow` | `null` or string | `null` | The flex-flow CSS attribute. | | `grid_area` | `null` or string | `null` | The grid-area CSS attribute. | | `grid_auto_columns` | `null` or string | `null` | The grid-auto-columns CSS attribute. | | `grid_auto_flow` | `null` or string (one of `'column'`, `'row'`, `'row dense'`, `'column dense'`, `'inherit'`, `'initial'`, `'unset'`) | `null` | The grid-auto-flow CSS attribute. | | `grid_auto_rows` | `null` or string | `null` | The grid-auto-rows CSS attribute. | | `grid_column` | `null` or string | `null` | The grid-column CSS attribute. | | `grid_gap` | `null` or string | `null` | The grid-gap CSS attribute. | | `grid_row` | `null` or string | `null` | The grid-row CSS attribute. | | `grid_template_areas` | `null` or string | `null` | The grid-template-areas CSS attribute. | | `grid_template_columns` | `null` or string | `null` | The grid-template-columns CSS attribute. | | `grid_template_rows` | `null` or string | `null` | The grid-template-rows CSS attribute. | | `height` | `null` or string | `null` | The height CSS attribute. | | `justify_content` | `null` or string (one of `'flex-start'`, `'flex-end'`, `'center'`, `'space-between'`, `'space-around'`, `'inherit'`, `'initial'`, `'unset'`) | `null` | The justify-content CSS attribute. | | `justify_items` | `null` or string (one of `'flex-start'`, `'flex-end'`, `'center'`, `'inherit'`, `'initial'`, `'unset'`) | `null` | The justify-items CSS attribute. | | `left` | `null` or string | `null` | The left CSS attribute. | | `margin` | `null` or string | `null` | The margin CSS attribute. | | `max_height` | `null` or string | `null` | The max-height CSS attribute. | | `max_width` | `null` or string | `null` | The max-width CSS attribute. | | `min_height` | `null` or string | `null` | The min-height CSS attribute. | | `min_width` | `null` or string | `null` | The min-width CSS attribute. | | `object_fit` | `null` or string (one of `'contain'`, `'cover'`, `'fill'`, `'scale-down'`, `'none'`) | `null` | The object-fit CSS attribute. | | `object_position` | `null` or string | `null` | The object-position CSS attribute. | | `order` | `null` or string | `null` | The order CSS attribute. | | `overflow` | `null` or string | `null` | The overflow CSS attribute. | | `overflow_x` | `null` or string (one of `'visible'`, `'hidden'`, `'scroll'`, `'auto'`, `'inherit'`, `'initial'`, `'unset'`) | `null` | The overflow-x CSS attribute (deprecated). | | `overflow_y` | `null` or string (one of `'visible'`, `'hidden'`, `'scroll'`, `'auto'`, `'inherit'`, `'initial'`, `'unset'`) | `null` | The overflow-y CSS attribute (deprecated). | | `padding` | `null` or string | `null` | The padding CSS attribute. | | `right` | `null` or string | `null` | The right CSS attribute. | | `top` | `null` or string | `null` | The top CSS attribute. | | `visibility` | `null` or string (one of `'visible'`, `'hidden'`, `'inherit'`, `'initial'`, `'unset'`) | `null` | The visibility CSS attribute. | | `width` | `null` or string | `null` | The width CSS attribute. | ### AccordionModel (@jupyter-widgets/controls, 1.5.0); AccordionView (@jupyter-widgets/controls, 1.5.0) | Attribute | Type | Default | Help | | ----------------------- | -------------------------------------------------------------------- | ----------------------------- | --------------------------------------------------------------------------------------------------------------------------------- | | `_dom_classes` | array of string | `[]` | CSS classes applied to widget DOM element | | `_model_module` | string | `'@jupyter-widgets/controls'` | | `_model_module_version` | string | `'1.5.0'` | | `_model_name` | string | `'AccordionModel'` | | `_titles` | object | `{}` | Titles of the pages | | `_view_module` | string | `'@jupyter-widgets/controls'` | | `_view_module_version` | string | `'1.5.0'` | | `_view_name` | string | `'AccordionView'` | | `box_style` | string (one of `'success'`, `'info'`, `'warning'`, `'danger'`, `''`) | `''` | Use a predefined styling for the box. | | `children` | array of reference to Widget widget | `[]` | List of widget children | | `layout` | reference to Layout widget | reference to new instance | | `selected_index` | `null` or number (integer) | `0` | The index of the selected page. This is either an integer selecting a particular sub-widget, or None to have no widgets selected. | ### AudioModel (@jupyter-widgets/controls, 1.5.0); AudioView (@jupyter-widgets/controls, 1.5.0) | Attribute | Type | Default | Help | | ----------------------- | -------------------------- | ----------------------------- | ----------------------------------------------------------------------------------- | | `_dom_classes` | array of string | `[]` | CSS classes applied to widget DOM element | | `_model_module` | string | `'@jupyter-widgets/controls'` | | `_model_module_version` | string | `'1.5.0'` | | `_model_name` | string | `'AudioModel'` | | `_view_module` | string | `'@jupyter-widgets/controls'` | | `_view_module_version` | string | `'1.5.0'` | | `_view_name` | string | `'AudioView'` | | `autoplay` | boolean | `true` | When true, the audio starts when it's displayed | | `controls` | boolean | `true` | Specifies that audio controls should be displayed (such as a play/pause button etc) | | `format` | string | `'mp3'` | The format of the audio. | | `layout` | reference to Layout widget | reference to new instance | | `loop` | boolean | `true` | When true, the audio will start from the beginning after finishing | | `value` | Bytes | `b''` | The media data as a byte string. | ### BoundedFloatTextModel (@jupyter-widgets/controls, 1.5.0); FloatTextView (@jupyter-widgets/controls, 1.5.0) | Attribute | Type | Default | Help | | ----------------------- | ------------------------------------ | ----------------------------- | ------------------------------------------------------------------------------------------------------------ | | `_dom_classes` | array of string | `[]` | CSS classes applied to widget DOM element | | `_model_module` | string | `'@jupyter-widgets/controls'` | | `_model_module_version` | string | `'1.5.0'` | | `_model_name` | string | `'BoundedFloatTextModel'` | | `_view_module` | string | `'@jupyter-widgets/controls'` | | `_view_module_version` | string | `'1.5.0'` | | `_view_name` | string | `'FloatTextView'` | | `continuous_update` | boolean | `false` | Update the value as the user types. If False, update on submission, e.g., pressing Enter or navigating away. | | `description` | string | `''` | Description of the control. | | `description_tooltip` | `null` or string | `null` | Tooltip for the description (defaults to description). | | `disabled` | boolean | `false` | Enable or disable user changes | | `layout` | reference to Layout widget | reference to new instance | | `max` | number (float) | `100.0` | Max value | | `min` | number (float) | `0.0` | Min value | | `step` | `null` or number (float) | `null` | Minimum step to increment the value | | `style` | reference to DescriptionStyle widget | reference to new instance | Styling customizations | | `value` | number (float) | `0.0` | Float value | ### BoundedIntTextModel (@jupyter-widgets/controls, 1.5.0); IntTextView (@jupyter-widgets/controls, 1.5.0) | Attribute | Type | Default | Help | | ----------------------- | ------------------------------------ | ----------------------------- | ------------------------------------------------------------------------------------------------------------ | | `_dom_classes` | array of string | `[]` | CSS classes applied to widget DOM element | | `_model_module` | string | `'@jupyter-widgets/controls'` | | `_model_module_version` | string | `'1.5.0'` | | `_model_name` | string | `'BoundedIntTextModel'` | | `_view_module` | string | `'@jupyter-widgets/controls'` | | `_view_module_version` | string | `'1.5.0'` | | `_view_name` | string | `'IntTextView'` | | `continuous_update` | boolean | `false` | Update the value as the user types. If False, update on submission, e.g., pressing Enter or navigating away. | | `description` | string | `''` | Description of the control. | | `description_tooltip` | `null` or string | `null` | Tooltip for the description (defaults to description). | | `disabled` | boolean | `false` | Enable or disable user changes | | `layout` | reference to Layout widget | reference to new instance | | `max` | number (integer) | `100` | Max value | | `min` | number (integer) | `0` | Min value | | `step` | number (integer) | `1` | Minimum step to increment the value | | `style` | reference to DescriptionStyle widget | reference to new instance | Styling customizations | | `value` | number (integer) | `0` | Int value | ### BoxModel (@jupyter-widgets/controls, 1.5.0); BoxView (@jupyter-widgets/controls, 1.5.0) | Attribute | Type | Default | Help | | ----------------------- | -------------------------------------------------------------------- | ----------------------------- | ----------------------------------------- | | `_dom_classes` | array of string | `[]` | CSS classes applied to widget DOM element | | `_model_module` | string | `'@jupyter-widgets/controls'` | | `_model_module_version` | string | `'1.5.0'` | | `_model_name` | string | `'BoxModel'` | | `_view_module` | string | `'@jupyter-widgets/controls'` | | `_view_module_version` | string | `'1.5.0'` | | `_view_name` | string | `'BoxView'` | | `box_style` | string (one of `'success'`, `'info'`, `'warning'`, `'danger'`, `''`) | `''` | Use a predefined styling for the box. | | `children` | array of reference to Widget widget | `[]` | List of widget children | | `layout` | reference to Layout widget | reference to new instance | ### ButtonModel (@jupyter-widgets/controls, 1.5.0); ButtonView (@jupyter-widgets/controls, 1.5.0) | Attribute | Type | Default | Help | | ----------------------- | --------------------------------------------------------------------------------- | ----------------------------- | ------------------------------------------------- | | `_dom_classes` | array of string | `[]` | CSS classes applied to widget DOM element | | `_model_module` | string | `'@jupyter-widgets/controls'` | | `_model_module_version` | string | `'1.5.0'` | | `_model_name` | string | `'ButtonModel'` | | `_view_module` | string | `'@jupyter-widgets/controls'` | | `_view_module_version` | string | `'1.5.0'` | | `_view_name` | string | `'ButtonView'` | | `button_style` | string (one of `'primary'`, `'success'`, `'info'`, `'warning'`, `'danger'`, `''`) | `''` | Use a predefined styling for the button. | | `description` | string | `''` | Button label. | | `disabled` | boolean | `false` | Enable or disable user changes. | | `icon` | string | `''` | Font-awesome icon name, without the 'fa-' prefix. | | `layout` | reference to Layout widget | reference to new instance | | `style` | reference to ButtonStyle widget | reference to new instance | | `tooltip` | string | `''` | Tooltip caption of the button. | ### ButtonStyleModel (@jupyter-widgets/controls, 1.5.0); StyleView (@jupyter-widgets/base, 1.2.0) | Attribute | Type | Default | Help | | ----------------------- | ---------------- | ----------------------------- | ------------------------ | | `_model_module` | string | `'@jupyter-widgets/controls'` | | `_model_module_version` | string | `'1.5.0'` | | `_model_name` | string | `'ButtonStyleModel'` | | `_view_module` | string | `'@jupyter-widgets/base'` | | `_view_module_version` | string | `'1.2.0'` | | `_view_name` | string | `'StyleView'` | | `button_color` | `null` or string | `null` | Color of the button | | `font_weight` | string | `''` | Button text font weight. | ### CheckboxModel (@jupyter-widgets/controls, 1.5.0); CheckboxView (@jupyter-widgets/controls, 1.5.0) | Attribute | Type | Default | Help | | ----------------------- | ------------------------------------ | ----------------------------- | ------------------------------------------------------------------- | | `_dom_classes` | array of string | `[]` | CSS classes applied to widget DOM element | | `_model_module` | string | `'@jupyter-widgets/controls'` | | `_model_module_version` | string | `'1.5.0'` | | `_model_name` | string | `'CheckboxModel'` | | `_view_module` | string | `'@jupyter-widgets/controls'` | | `_view_module_version` | string | `'1.5.0'` | | `_view_name` | string | `'CheckboxView'` | | `description` | string | `''` | Description of the control. | | `description_tooltip` | `null` or string | `null` | Tooltip for the description (defaults to description). | | `disabled` | boolean | `false` | Enable or disable user changes. | | `indent` | boolean | `true` | Indent the control to align with other controls with a description. | | `layout` | reference to Layout widget | reference to new instance | | `style` | reference to DescriptionStyle widget | reference to new instance | Styling customizations | | `value` | boolean | `false` | Bool value | ### ColorPickerModel (@jupyter-widgets/controls, 1.5.0); ColorPickerView (@jupyter-widgets/controls, 1.5.0) | Attribute | Type | Default | Help | | ----------------------- | ------------------------------------ | ----------------------------- | ------------------------------------------------------ | | `_dom_classes` | array of string | `[]` | CSS classes applied to widget DOM element | | `_model_module` | string | `'@jupyter-widgets/controls'` | | `_model_module_version` | string | `'1.5.0'` | | `_model_name` | string | `'ColorPickerModel'` | | `_view_module` | string | `'@jupyter-widgets/controls'` | | `_view_module_version` | string | `'1.5.0'` | | `_view_name` | string | `'ColorPickerView'` | | `concise` | boolean | `false` | Display short version with just a color selector. | | `description` | string | `''` | Description of the control. | | `description_tooltip` | `null` or string | `null` | Tooltip for the description (defaults to description). | | `disabled` | boolean | `false` | Enable or disable user changes. | | `layout` | reference to Layout widget | reference to new instance | | `style` | reference to DescriptionStyle widget | reference to new instance | Styling customizations | | `value` | string | `'black'` | The color value. | ### ComboboxModel (@jupyter-widgets/controls, 1.5.0); ComboboxView (@jupyter-widgets/controls, 1.5.0) | Attribute | Type | Default | Help | | ----------------------- | ------------------------------------ | ----------------------------- | ------------------------------------------------------------------------------------------------------------ | | `_dom_classes` | array of string | `[]` | CSS classes applied to widget DOM element | | `_model_module` | string | `'@jupyter-widgets/controls'` | | `_model_module_version` | string | `'1.5.0'` | | `_model_name` | string | `'ComboboxModel'` | | `_view_module` | string | `'@jupyter-widgets/controls'` | | `_view_module_version` | string | `'1.5.0'` | | `_view_name` | string | `'ComboboxView'` | | `continuous_update` | boolean | `true` | Update the value as the user types. If False, update on submission, e.g., pressing Enter or navigating away. | | `description` | string | `''` | Description of the control. | | `description_tooltip` | `null` or string | `null` | Tooltip for the description (defaults to description). | | `disabled` | boolean | `false` | Enable or disable user changes | | `ensure_option` | boolean | `false` | If set, ensure value is in options. Implies continuous_update=False. | | `layout` | reference to Layout widget | reference to new instance | | `options` | array of string | `[]` | Dropdown options for the combobox | | `placeholder` | string | `'\u200b'` | Placeholder text to display when nothing has been typed | | `style` | reference to DescriptionStyle widget | reference to new instance | Styling customizations | | `value` | string | `''` | String value | ### ControllerAxisModel (@jupyter-widgets/controls, 1.5.0); ControllerAxisView (@jupyter-widgets/controls, 1.5.0) | Attribute | Type | Default | Help | | ----------------------- | -------------------------- | ----------------------------- | ----------------------------------------- | | `_dom_classes` | array of string | `[]` | CSS classes applied to widget DOM element | | `_model_module` | string | `'@jupyter-widgets/controls'` | | `_model_module_version` | string | `'1.5.0'` | | `_model_name` | string | `'ControllerAxisModel'` | | `_view_module` | string | `'@jupyter-widgets/controls'` | | `_view_module_version` | string | `'1.5.0'` | | `_view_name` | string | `'ControllerAxisView'` | | `layout` | reference to Layout widget | reference to new instance | | `value` | number (float) | `0.0` | The value of the axis. | ### ControllerButtonModel (@jupyter-widgets/controls, 1.5.0); ControllerButtonView (@jupyter-widgets/controls, 1.5.0) | Attribute | Type | Default | Help | | ----------------------- | -------------------------- | ----------------------------- | ----------------------------------------- | | `_dom_classes` | array of string | `[]` | CSS classes applied to widget DOM element | | `_model_module` | string | `'@jupyter-widgets/controls'` | | `_model_module_version` | string | `'1.5.0'` | | `_model_name` | string | `'ControllerButtonModel'` | | `_view_module` | string | `'@jupyter-widgets/controls'` | | `_view_module_version` | string | `'1.5.0'` | | `_view_name` | string | `'ControllerButtonView'` | | `layout` | reference to Layout widget | reference to new instance | | `pressed` | boolean | `false` | Whether the button is pressed. | | `value` | number (float) | `0.0` | The value of the button. | ### ControllerModel (@jupyter-widgets/controls, 1.5.0); ControllerView (@jupyter-widgets/controls, 1.5.0) | Attribute | Type | Default | Help | | ----------------------- | ----------------------------------- | ----------------------------- | ----------------------------------------------------- | | `_dom_classes` | array of string | `[]` | CSS classes applied to widget DOM element | | `_model_module` | string | `'@jupyter-widgets/controls'` | | `_model_module_version` | string | `'1.5.0'` | | `_model_name` | string | `'ControllerModel'` | | `_view_module` | string | `'@jupyter-widgets/controls'` | | `_view_module_version` | string | `'1.5.0'` | | `_view_name` | string | `'ControllerView'` | | `axes` | array of reference to Axis widget | `[]` | The axes on the gamepad. | | `buttons` | array of reference to Button widget | `[]` | The buttons on the gamepad. | | `connected` | boolean | `false` | Whether the gamepad is connected. | | `index` | number (integer) | `0` | The id number of the controller. | | `layout` | reference to Layout widget | reference to new instance | | `mapping` | string | `''` | The name of the control mapping. | | `name` | string | `''` | The name of the controller. | | `timestamp` | number (float) | `0.0` | The last time the data from this gamepad was updated. | ### DOMWidgetModel (@jupyter-widgets/controls, 1.5.0); None (@jupyter-widgets/controls, 1.5.0) | Attribute | Type | Default | Help | | ----------------------- | -------------------------- | ----------------------------- | ----------------------------------------- | | `_dom_classes` | array of string | `[]` | CSS classes applied to widget DOM element | | `_model_module` | string | `'@jupyter-widgets/controls'` | | `_model_module_version` | string | `'1.5.0'` | | `_model_name` | string | `'DOMWidgetModel'` | | `_view_module` | string | `'@jupyter-widgets/controls'` | | `_view_module_version` | string | `'1.5.0'` | | `_view_name` | `null` or string | `null` | Name of the view. | | `layout` | reference to Layout widget | reference to new instance | | `value` | Bytes | `b''` | The media data as a byte string. | ### DatePickerModel (@jupyter-widgets/controls, 1.5.0); DatePickerView (@jupyter-widgets/controls, 1.5.0) | Attribute | Type | Default | Help | | ----------------------- | ------------------------------------ | ----------------------------- | ------------------------------------------------------ | | `_dom_classes` | array of string | `[]` | CSS classes applied to widget DOM element | | `_model_module` | string | `'@jupyter-widgets/controls'` | | `_model_module_version` | string | `'1.5.0'` | | `_model_name` | string | `'DatePickerModel'` | | `_view_module` | string | `'@jupyter-widgets/controls'` | | `_view_module_version` | string | `'1.5.0'` | | `_view_name` | string | `'DatePickerView'` | | `description` | string | `''` | Description of the control. | | `description_tooltip` | `null` or string | `null` | Tooltip for the description (defaults to description). | | `disabled` | boolean | `false` | Enable or disable user changes. | | `layout` | reference to Layout widget | reference to new instance | | `style` | reference to DescriptionStyle widget | reference to new instance | Styling customizations | | `value` | `null` or Date | `null` | ### DescriptionStyleModel (@jupyter-widgets/controls, 1.5.0); StyleView (@jupyter-widgets/base, 1.2.0) | Attribute | Type | Default | Help | | ----------------------- | ------ | ----------------------------- | ---------------------------------------------------- | | `_model_module` | string | `'@jupyter-widgets/controls'` | | `_model_module_version` | string | `'1.5.0'` | | `_model_name` | string | `'DescriptionStyleModel'` | | `_view_module` | string | `'@jupyter-widgets/base'` | | `_view_module_version` | string | `'1.2.0'` | | `_view_name` | string | `'StyleView'` | | `description_width` | string | `''` | Width of the description to the side of the control. | ### DirectionalLinkModel (@jupyter-widgets/controls, 1.5.0); None (@jupyter-widgets/controls, 1.5.0) | Attribute | Type | Default | Help | | ----------------------- | ---------------- | ----------------------------- | -------------------------------------- | | `_model_module` | string | `'@jupyter-widgets/controls'` | | `_model_module_version` | string | `'1.5.0'` | | `_model_name` | string | `'DirectionalLinkModel'` | | `_view_module` | string | `'@jupyter-widgets/controls'` | | `_view_module_version` | string | `'1.5.0'` | | `_view_name` | `null` or string | `null` | Name of the view. | | `source` | array | `[]` | The source (widget, 'trait_name') pair | | `target` | array | `[]` | The target (widget, 'trait_name') pair | ### DropdownModel (@jupyter-widgets/controls, 1.5.0); DropdownView (@jupyter-widgets/controls, 1.5.0) | Attribute | Type | Default | Help | | ----------------------- | ------------------------------------ | ----------------------------- | ------------------------------------------------------ | | `_dom_classes` | array of string | `[]` | CSS classes applied to widget DOM element | | `_model_module` | string | `'@jupyter-widgets/controls'` | | `_model_module_version` | string | `'1.5.0'` | | `_model_name` | string | `'DropdownModel'` | | `_options_labels` | array of string | `[]` | The labels for the options. | | `_view_module` | string | `'@jupyter-widgets/controls'` | | `_view_module_version` | string | `'1.5.0'` | | `_view_name` | string | `'DropdownView'` | | `description` | string | `''` | Description of the control. | | `description_tooltip` | `null` or string | `null` | Tooltip for the description (defaults to description). | | `disabled` | boolean | `false` | Enable or disable user changes | | `index` | `null` or number (integer) | `null` | Selected index | | `layout` | reference to Layout widget | reference to new instance | | `style` | reference to DescriptionStyle widget | reference to new instance | Styling customizations | ### FileUploadModel (@jupyter-widgets/controls, 1.5.0); FileUploadView (@jupyter-widgets/controls, 1.5.0) | Attribute | Type | Default | Help | | ----------------------- | --------------------------------------------------------------------------------- | ----------------------------- | ------------------------------------------------------ | | `_counter` | number (integer) | `0` | | `_dom_classes` | array of string | `[]` | CSS classes applied to widget DOM element | | `_model_module` | string | `'@jupyter-widgets/controls'` | | `_model_module_version` | string | `'1.5.0'` | | `_model_name` | string | `'FileUploadModel'` | | `_view_module` | string | `'@jupyter-widgets/controls'` | | `_view_module_version` | string | `'1.5.0'` | | `_view_name` | string | `'FileUploadView'` | | `accept` | string | `''` | File types to accept, empty string for all | | `button_style` | string (one of `'primary'`, `'success'`, `'info'`, `'warning'`, `'danger'`, `''`) | `''` | Use a predefined styling for the button. | | `data` | array | `[]` | List of file content (bytes) | | `description` | string | `''` | Description of the control. | | `description_tooltip` | `null` or string | `null` | Tooltip for the description (defaults to description). | | `disabled` | boolean | `false` | Enable or disable button | | `error` | string | `''` | Error message | | `icon` | string | `'upload'` | Font-awesome icon name, without the 'fa-' prefix. | | `layout` | reference to Layout widget | reference to new instance | | `metadata` | array | `[]` | List of file metadata | | `multiple` | boolean | `false` | If True, allow for multiple files upload | | `style` | reference to ButtonStyle widget | reference to new instance | ### FloatLogSliderModel (@jupyter-widgets/controls, 1.5.0); FloatLogSliderView (@jupyter-widgets/controls, 1.5.0) | Attribute | Type | Default | Help | | ----------------------- | -------------------------------------------- | ----------------------------- | ----------------------------------------------------------------- | | `_dom_classes` | array of string | `[]` | CSS classes applied to widget DOM element | | `_model_module` | string | `'@jupyter-widgets/controls'` | | `_model_module_version` | string | `'1.5.0'` | | `_model_name` | string | `'FloatLogSliderModel'` | | `_view_module` | string | `'@jupyter-widgets/controls'` | | `_view_module_version` | string | `'1.5.0'` | | `_view_name` | string | `'FloatLogSliderView'` | | `base` | number (float) | `10.0` | Base for the logarithm | | `continuous_update` | boolean | `true` | Update the value of the widget as the user is holding the slider. | | `description` | string | `''` | Description of the control. | | `description_tooltip` | `null` or string | `null` | Tooltip for the description (defaults to description). | | `disabled` | boolean | `false` | Enable or disable user changes | | `layout` | reference to Layout widget | reference to new instance | | `max` | number (float) | `4.0` | Max value for the exponent | | `min` | number (float) | `0.0` | Min value for the exponent | | `orientation` | string (one of `'horizontal'`, `'vertical'`) | `'horizontal'` | Vertical or horizontal. | | `readout` | boolean | `true` | Display the current value of the slider next to it. | | `readout_format` | string | `'.3g'` | Format for the readout | | `step` | number (float) | `0.1` | Minimum step in the exponent to increment the value | | `style` | reference to SliderStyle widget | reference to new instance | | `value` | number (float) | `1.0` | Float value | ### FloatProgressModel (@jupyter-widgets/controls, 1.5.0); ProgressView (@jupyter-widgets/controls, 1.5.0) | Attribute | Type | Default | Help | | ----------------------- | ------------------------------------------------------------------------------ | ----------------------------- | ------------------------------------------------------ | | `_dom_classes` | array of string | `[]` | CSS classes applied to widget DOM element | | `_model_module` | string | `'@jupyter-widgets/controls'` | | `_model_module_version` | string | `'1.5.0'` | | `_model_name` | string | `'FloatProgressModel'` | | `_view_module` | string | `'@jupyter-widgets/controls'` | | `_view_module_version` | string | `'1.5.0'` | | `_view_name` | string | `'ProgressView'` | | `bar_style` | `null` or string (one of `'success'`, `'info'`, `'warning'`, `'danger'`, `''`) | `''` | Use a predefined styling for the progress bar. | | `description` | string | `''` | Description of the control. | | `description_tooltip` | `null` or string | `null` | Tooltip for the description (defaults to description). | | `layout` | reference to Layout widget | reference to new instance | | `max` | number (float) | `100.0` | Max value | | `min` | number (float) | `0.0` | Min value | | `orientation` | string (one of `'horizontal'`, `'vertical'`) | `'horizontal'` | Vertical or horizontal. | | `style` | reference to ProgressStyle widget | reference to new instance | | `value` | number (float) | `0.0` | Float value | ### FloatRangeSliderModel (@jupyter-widgets/controls, 1.5.0); FloatRangeSliderView (@jupyter-widgets/controls, 1.5.0) | Attribute | Type | Default | Help | | ----------------------- | -------------------------------------------- | ----------------------------- | ----------------------------------------------------------------- | | `_dom_classes` | array of string | `[]` | CSS classes applied to widget DOM element | | `_model_module` | string | `'@jupyter-widgets/controls'` | | `_model_module_version` | string | `'1.5.0'` | | `_model_name` | string | `'FloatRangeSliderModel'` | | `_view_module` | string | `'@jupyter-widgets/controls'` | | `_view_module_version` | string | `'1.5.0'` | | `_view_name` | string | `'FloatRangeSliderView'` | | `continuous_update` | boolean | `true` | Update the value of the widget as the user is sliding the slider. | | `description` | string | `''` | Description of the control. | | `description_tooltip` | `null` or string | `null` | Tooltip for the description (defaults to description). | | `disabled` | boolean | `false` | Enable or disable user changes | | `layout` | reference to Layout widget | reference to new instance | | `max` | number (float) | `100.0` | Max value | | `min` | number (float) | `0.0` | Min value | | `orientation` | string (one of `'horizontal'`, `'vertical'`) | `'horizontal'` | Vertical or horizontal. | | `readout` | boolean | `true` | Display the current value of the slider next to it. | | `readout_format` | string | `'.2f'` | Format for the readout | | `step` | number (float) | `0.1` | Minimum step to increment the value | | `style` | reference to SliderStyle widget | reference to new instance | | `value` | array | `[0.0, 1.0]` | Tuple of (lower, upper) bounds | ### FloatSliderModel (@jupyter-widgets/controls, 1.5.0); FloatSliderView (@jupyter-widgets/controls, 1.5.0) | Attribute | Type | Default | Help | | ----------------------- | -------------------------------------------- | ----------------------------- | ----------------------------------------------------------------- | | `_dom_classes` | array of string | `[]` | CSS classes applied to widget DOM element | | `_model_module` | string | `'@jupyter-widgets/controls'` | | `_model_module_version` | string | `'1.5.0'` | | `_model_name` | string | `'FloatSliderModel'` | | `_view_module` | string | `'@jupyter-widgets/controls'` | | `_view_module_version` | string | `'1.5.0'` | | `_view_name` | string | `'FloatSliderView'` | | `continuous_update` | boolean | `true` | Update the value of the widget as the user is holding the slider. | | `description` | string | `''` | Description of the control. | | `description_tooltip` | `null` or string | `null` | Tooltip for the description (defaults to description). | | `disabled` | boolean | `false` | Enable or disable user changes | | `layout` | reference to Layout widget | reference to new instance | | `max` | number (float) | `100.0` | Max value | | `min` | number (float) | `0.0` | Min value | | `orientation` | string (one of `'horizontal'`, `'vertical'`) | `'horizontal'` | Vertical or horizontal. | | `readout` | boolean | `true` | Display the current value of the slider next to it. | | `readout_format` | string | `'.2f'` | Format for the readout | | `step` | number (float) | `0.1` | Minimum step to increment the value | | `style` | reference to SliderStyle widget | reference to new instance | | `value` | number (float) | `0.0` | Float value | ### FloatTextModel (@jupyter-widgets/controls, 1.5.0); FloatTextView (@jupyter-widgets/controls, 1.5.0) | Attribute | Type | Default | Help | | ----------------------- | ------------------------------------ | ----------------------------- | ------------------------------------------------------------------------------------------------------------ | | `_dom_classes` | array of string | `[]` | CSS classes applied to widget DOM element | | `_model_module` | string | `'@jupyter-widgets/controls'` | | `_model_module_version` | string | `'1.5.0'` | | `_model_name` | string | `'FloatTextModel'` | | `_view_module` | string | `'@jupyter-widgets/controls'` | | `_view_module_version` | string | `'1.5.0'` | | `_view_name` | string | `'FloatTextView'` | | `continuous_update` | boolean | `false` | Update the value as the user types. If False, update on submission, e.g., pressing Enter or navigating away. | | `description` | string | `''` | Description of the control. | | `description_tooltip` | `null` or string | `null` | Tooltip for the description (defaults to description). | | `disabled` | boolean | `false` | Enable or disable user changes | | `layout` | reference to Layout widget | reference to new instance | | `step` | `null` or number (float) | `null` | Minimum step to increment the value | | `style` | reference to DescriptionStyle widget | reference to new instance | Styling customizations | | `value` | number (float) | `0.0` | Float value | ### GridBoxModel (@jupyter-widgets/controls, 1.5.0); GridBoxView (@jupyter-widgets/controls, 1.5.0) | Attribute | Type | Default | Help | | ----------------------- | -------------------------------------------------------------------- | ----------------------------- | ----------------------------------------- | | `_dom_classes` | array of string | `[]` | CSS classes applied to widget DOM element | | `_model_module` | string | `'@jupyter-widgets/controls'` | | `_model_module_version` | string | `'1.5.0'` | | `_model_name` | string | `'GridBoxModel'` | | `_view_module` | string | `'@jupyter-widgets/controls'` | | `_view_module_version` | string | `'1.5.0'` | | `_view_name` | string | `'GridBoxView'` | | `box_style` | string (one of `'success'`, `'info'`, `'warning'`, `'danger'`, `''`) | `''` | Use a predefined styling for the box. | | `children` | array of reference to Widget widget | `[]` | List of widget children | | `layout` | reference to Layout widget | reference to new instance | ### HBoxModel (@jupyter-widgets/controls, 1.5.0); HBoxView (@jupyter-widgets/controls, 1.5.0) | Attribute | Type | Default | Help | | ----------------------- | -------------------------------------------------------------------- | ----------------------------- | ----------------------------------------- | | `_dom_classes` | array of string | `[]` | CSS classes applied to widget DOM element | | `_model_module` | string | `'@jupyter-widgets/controls'` | | `_model_module_version` | string | `'1.5.0'` | | `_model_name` | string | `'HBoxModel'` | | `_view_module` | string | `'@jupyter-widgets/controls'` | | `_view_module_version` | string | `'1.5.0'` | | `_view_name` | string | `'HBoxView'` | | `box_style` | string (one of `'success'`, `'info'`, `'warning'`, `'danger'`, `''`) | `''` | Use a predefined styling for the box. | | `children` | array of reference to Widget widget | `[]` | List of widget children | | `layout` | reference to Layout widget | reference to new instance | ### HTMLMathModel (@jupyter-widgets/controls, 1.5.0); HTMLMathView (@jupyter-widgets/controls, 1.5.0) | Attribute | Type | Default | Help | | ----------------------- | ------------------------------------ | ----------------------------- | ------------------------------------------------------- | | `_dom_classes` | array of string | `[]` | CSS classes applied to widget DOM element | | `_model_module` | string | `'@jupyter-widgets/controls'` | | `_model_module_version` | string | `'1.5.0'` | | `_model_name` | string | `'HTMLMathModel'` | | `_view_module` | string | `'@jupyter-widgets/controls'` | | `_view_module_version` | string | `'1.5.0'` | | `_view_name` | string | `'HTMLMathView'` | | `description` | string | `''` | Description of the control. | | `description_tooltip` | `null` or string | `null` | Tooltip for the description (defaults to description). | | `layout` | reference to Layout widget | reference to new instance | | `placeholder` | string | `'\u200b'` | Placeholder text to display when nothing has been typed | | `style` | reference to DescriptionStyle widget | reference to new instance | Styling customizations | | `value` | string | `''` | String value | ### HTMLModel (@jupyter-widgets/controls, 1.5.0); HTMLView (@jupyter-widgets/controls, 1.5.0) | Attribute | Type | Default | Help | | ----------------------- | ------------------------------------ | ----------------------------- | ------------------------------------------------------- | | `_dom_classes` | array of string | `[]` | CSS classes applied to widget DOM element | | `_model_module` | string | `'@jupyter-widgets/controls'` | | `_model_module_version` | string | `'1.5.0'` | | `_model_name` | string | `'HTMLModel'` | | `_view_module` | string | `'@jupyter-widgets/controls'` | | `_view_module_version` | string | `'1.5.0'` | | `_view_name` | string | `'HTMLView'` | | `description` | string | `''` | Description of the control. | | `description_tooltip` | `null` or string | `null` | Tooltip for the description (defaults to description). | | `layout` | reference to Layout widget | reference to new instance | | `placeholder` | string | `'\u200b'` | Placeholder text to display when nothing has been typed | | `style` | reference to DescriptionStyle widget | reference to new instance | Styling customizations | | `value` | string | `''` | String value | ### ImageModel (@jupyter-widgets/controls, 1.5.0); ImageView (@jupyter-widgets/controls, 1.5.0) | Attribute | Type | Default | Help | | ----------------------- | -------------------------- | ----------------------------- | ------------------------------------------------------------------------ | | `_dom_classes` | array of string | `[]` | CSS classes applied to widget DOM element | | `_model_module` | string | `'@jupyter-widgets/controls'` | | `_model_module_version` | string | `'1.5.0'` | | `_model_name` | string | `'ImageModel'` | | `_view_module` | string | `'@jupyter-widgets/controls'` | | `_view_module_version` | string | `'1.5.0'` | | `_view_name` | string | `'ImageView'` | | `format` | string | `'png'` | The format of the image. | | `height` | string | `''` | Height of the image in pixels. Use layout.height for styling the widget. | | `layout` | reference to Layout widget | reference to new instance | | `value` | Bytes | `b''` | The media data as a byte string. | | `width` | string | `''` | Width of the image in pixels. Use layout.width for styling the widget. | ### IntProgressModel (@jupyter-widgets/controls, 1.5.0); ProgressView (@jupyter-widgets/controls, 1.5.0) | Attribute | Type | Default | Help | | ----------------------- | -------------------------------------------------------------------- | ----------------------------- | ------------------------------------------------------ | | `_dom_classes` | array of string | `[]` | CSS classes applied to widget DOM element | | `_model_module` | string | `'@jupyter-widgets/controls'` | | `_model_module_version` | string | `'1.5.0'` | | `_model_name` | string | `'IntProgressModel'` | | `_view_module` | string | `'@jupyter-widgets/controls'` | | `_view_module_version` | string | `'1.5.0'` | | `_view_name` | string | `'ProgressView'` | | `bar_style` | string (one of `'success'`, `'info'`, `'warning'`, `'danger'`, `''`) | `''` | Use a predefined styling for the progress bar. | | `description` | string | `''` | Description of the control. | | `description_tooltip` | `null` or string | `null` | Tooltip for the description (defaults to description). | | `layout` | reference to Layout widget | reference to new instance | | `max` | number (integer) | `100` | Max value | | `min` | number (integer) | `0` | Min value | | `orientation` | string (one of `'horizontal'`, `'vertical'`) | `'horizontal'` | Vertical or horizontal. | | `style` | reference to ProgressStyle widget | reference to new instance | | `value` | number (integer) | `0` | Int value | ### IntRangeSliderModel (@jupyter-widgets/controls, 1.5.0); IntRangeSliderView (@jupyter-widgets/controls, 1.5.0) | Attribute | Type | Default | Help | | ----------------------- | -------------------------------------------- | ----------------------------- | ----------------------------------------------------------------- | | `_dom_classes` | array of string | `[]` | CSS classes applied to widget DOM element | | `_model_module` | string | `'@jupyter-widgets/controls'` | | `_model_module_version` | string | `'1.5.0'` | | `_model_name` | string | `'IntRangeSliderModel'` | | `_view_module` | string | `'@jupyter-widgets/controls'` | | `_view_module_version` | string | `'1.5.0'` | | `_view_name` | string | `'IntRangeSliderView'` | | `continuous_update` | boolean | `true` | Update the value of the widget as the user is sliding the slider. | | `description` | string | `''` | Description of the control. | | `description_tooltip` | `null` or string | `null` | Tooltip for the description (defaults to description). | | `disabled` | boolean | `false` | Enable or disable user changes | | `layout` | reference to Layout widget | reference to new instance | | `max` | number (integer) | `100` | Max value | | `min` | number (integer) | `0` | Min value | | `orientation` | string (one of `'horizontal'`, `'vertical'`) | `'horizontal'` | Vertical or horizontal. | | `readout` | boolean | `true` | Display the current value of the slider next to it. | | `readout_format` | string | `'d'` | Format for the readout | | `step` | number (integer) | `1` | Minimum step that the value can take | | `style` | reference to SliderStyle widget | reference to new instance | Slider style customizations. | | `value` | array | `[0, 1]` | Tuple of (lower, upper) bounds | ### IntSliderModel (@jupyter-widgets/controls, 1.5.0); IntSliderView (@jupyter-widgets/controls, 1.5.0) | Attribute | Type | Default | Help | | ----------------------- | -------------------------------------------- | ----------------------------- | ----------------------------------------------------------------- | | `_dom_classes` | array of string | `[]` | CSS classes applied to widget DOM element | | `_model_module` | string | `'@jupyter-widgets/controls'` | | `_model_module_version` | string | `'1.5.0'` | | `_model_name` | string | `'IntSliderModel'` | | `_view_module` | string | `'@jupyter-widgets/controls'` | | `_view_module_version` | string | `'1.5.0'` | | `_view_name` | string | `'IntSliderView'` | | `continuous_update` | boolean | `true` | Update the value of the widget as the user is holding the slider. | | `description` | string | `''` | Description of the control. | | `description_tooltip` | `null` or string | `null` | Tooltip for the description (defaults to description). | | `disabled` | boolean | `false` | Enable or disable user changes | | `layout` | reference to Layout widget | reference to new instance | | `max` | number (integer) | `100` | Max value | | `min` | number (integer) | `0` | Min value | | `orientation` | string (one of `'horizontal'`, `'vertical'`) | `'horizontal'` | Vertical or horizontal. | | `readout` | boolean | `true` | Display the current value of the slider next to it. | | `readout_format` | string | `'d'` | Format for the readout | | `step` | number (integer) | `1` | Minimum step to increment the value | | `style` | reference to SliderStyle widget | reference to new instance | | `value` | number (integer) | `0` | Int value | ### IntTextModel (@jupyter-widgets/controls, 1.5.0); IntTextView (@jupyter-widgets/controls, 1.5.0) | Attribute | Type | Default | Help | | ----------------------- | ------------------------------------ | ----------------------------- | ------------------------------------------------------------------------------------------------------------ | | `_dom_classes` | array of string | `[]` | CSS classes applied to widget DOM element | | `_model_module` | string | `'@jupyter-widgets/controls'` | | `_model_module_version` | string | `'1.5.0'` | | `_model_name` | string | `'IntTextModel'` | | `_view_module` | string | `'@jupyter-widgets/controls'` | | `_view_module_version` | string | `'1.5.0'` | | `_view_name` | string | `'IntTextView'` | | `continuous_update` | boolean | `false` | Update the value as the user types. If False, update on submission, e.g., pressing Enter or navigating away. | | `description` | string | `''` | Description of the control. | | `description_tooltip` | `null` or string | `null` | Tooltip for the description (defaults to description). | | `disabled` | boolean | `false` | Enable or disable user changes | | `layout` | reference to Layout widget | reference to new instance | | `step` | number (integer) | `1` | Minimum step to increment the value | | `style` | reference to DescriptionStyle widget | reference to new instance | Styling customizations | | `value` | number (integer) | `0` | Int value | ### LabelModel (@jupyter-widgets/controls, 1.5.0); LabelView (@jupyter-widgets/controls, 1.5.0) | Attribute | Type | Default | Help | | ----------------------- | ------------------------------------ | ----------------------------- | ------------------------------------------------------- | | `_dom_classes` | array of string | `[]` | CSS classes applied to widget DOM element | | `_model_module` | string | `'@jupyter-widgets/controls'` | | `_model_module_version` | string | `'1.5.0'` | | `_model_name` | string | `'LabelModel'` | | `_view_module` | string | `'@jupyter-widgets/controls'` | | `_view_module_version` | string | `'1.5.0'` | | `_view_name` | string | `'LabelView'` | | `description` | string | `''` | Description of the control. | | `description_tooltip` | `null` or string | `null` | Tooltip for the description (defaults to description). | | `layout` | reference to Layout widget | reference to new instance | | `placeholder` | string | `'\u200b'` | Placeholder text to display when nothing has been typed | | `style` | reference to DescriptionStyle widget | reference to new instance | Styling customizations | | `value` | string | `''` | String value | ### LinkModel (@jupyter-widgets/controls, 1.5.0); None (@jupyter-widgets/controls, 1.5.0) | Attribute | Type | Default | Help | | ----------------------- | ---------------- | ----------------------------- | -------------------------------------- | | `_model_module` | string | `'@jupyter-widgets/controls'` | | `_model_module_version` | string | `'1.5.0'` | | `_model_name` | string | `'LinkModel'` | | `_view_module` | string | `'@jupyter-widgets/controls'` | | `_view_module_version` | string | `'1.5.0'` | | `_view_name` | `null` or string | `null` | Name of the view. | | `source` | array | `[]` | The source (widget, 'trait_name') pair | | `target` | array | `[]` | The target (widget, 'trait_name') pair | ### PasswordModel (@jupyter-widgets/controls, 1.5.0); PasswordView (@jupyter-widgets/controls, 1.5.0) | Attribute | Type | Default | Help | | ----------------------- | ------------------------------------ | ----------------------------- | ------------------------------------------------------------------------------------------------------------ | | `_dom_classes` | array of string | `[]` | CSS classes applied to widget DOM element | | `_model_module` | string | `'@jupyter-widgets/controls'` | | `_model_module_version` | string | `'1.5.0'` | | `_model_name` | string | `'PasswordModel'` | | `_view_module` | string | `'@jupyter-widgets/controls'` | | `_view_module_version` | string | `'1.5.0'` | | `_view_name` | string | `'PasswordView'` | | `continuous_update` | boolean | `true` | Update the value as the user types. If False, update on submission, e.g., pressing Enter or navigating away. | | `description` | string | `''` | Description of the control. | | `description_tooltip` | `null` or string | `null` | Tooltip for the description (defaults to description). | | `disabled` | boolean | `false` | Enable or disable user changes | | `layout` | reference to Layout widget | reference to new instance | | `placeholder` | string | `'\u200b'` | Placeholder text to display when nothing has been typed | | `style` | reference to DescriptionStyle widget | reference to new instance | Styling customizations | | `value` | string | `''` | String value | ### PlayModel (@jupyter-widgets/controls, 1.5.0); PlayView (@jupyter-widgets/controls, 1.5.0) | Attribute | Type | Default | Help | | ----------------------- | ------------------------------------ | ----------------------------- | ------------------------------------------------------ | | `_dom_classes` | array of string | `[]` | CSS classes applied to widget DOM element | | `_model_module` | string | `'@jupyter-widgets/controls'` | | `_model_module_version` | string | `'1.5.0'` | | `_model_name` | string | `'PlayModel'` | | `_playing` | boolean | `false` | Whether the control is currently playing. | | `_repeat` | boolean | `false` | Whether the control will repeat in a continuous loop. | | `_view_module` | string | `'@jupyter-widgets/controls'` | | `_view_module_version` | string | `'1.5.0'` | | `_view_name` | string | `'PlayView'` | | `description` | string | `''` | Description of the control. | | `description_tooltip` | `null` or string | `null` | Tooltip for the description (defaults to description). | | `disabled` | boolean | `false` | Enable or disable user changes | | `interval` | number (integer) | `100` | The maximum value for the play control. | | `layout` | reference to Layout widget | reference to new instance | | `max` | number (integer) | `100` | Max value | | `min` | number (integer) | `0` | Min value | | `show_repeat` | boolean | `true` | Show the repeat toggle button in the widget. | | `step` | number (integer) | `1` | Increment step | | `style` | reference to DescriptionStyle widget | reference to new instance | Styling customizations | | `value` | number (integer) | `0` | Int value | ### ProgressStyleModel (@jupyter-widgets/controls, 1.5.0); StyleView (@jupyter-widgets/base, 1.2.0) | Attribute | Type | Default | Help | | ----------------------- | ---------------- | ----------------------------- | ---------------------------------------------------- | | `_model_module` | string | `'@jupyter-widgets/controls'` | | `_model_module_version` | string | `'1.5.0'` | | `_model_name` | string | `'ProgressStyleModel'` | | `_view_module` | string | `'@jupyter-widgets/base'` | | `_view_module_version` | string | `'1.2.0'` | | `_view_name` | string | `'StyleView'` | | `bar_color` | `null` or string | `null` | Color of the progress bar. | | `description_width` | string | `''` | Width of the description to the side of the control. | ### RadioButtonsModel (@jupyter-widgets/controls, 1.5.0); RadioButtonsView (@jupyter-widgets/controls, 1.5.0) | Attribute | Type | Default | Help | | ----------------------- | ------------------------------------ | ----------------------------- | ------------------------------------------------------ | | `_dom_classes` | array of string | `[]` | CSS classes applied to widget DOM element | | `_model_module` | string | `'@jupyter-widgets/controls'` | | `_model_module_version` | string | `'1.5.0'` | | `_model_name` | string | `'RadioButtonsModel'` | | `_options_labels` | array of string | `[]` | The labels for the options. | | `_view_module` | string | `'@jupyter-widgets/controls'` | | `_view_module_version` | string | `'1.5.0'` | | `_view_name` | string | `'RadioButtonsView'` | | `description` | string | `''` | Description of the control. | | `description_tooltip` | `null` or string | `null` | Tooltip for the description (defaults to description). | | `disabled` | boolean | `false` | Enable or disable user changes | | `index` | `null` or number (integer) | `null` | Selected index | | `layout` | reference to Layout widget | reference to new instance | | `style` | reference to DescriptionStyle widget | reference to new instance | Styling customizations | ### SelectModel (@jupyter-widgets/controls, 1.5.0); SelectView (@jupyter-widgets/controls, 1.5.0) | Attribute | Type | Default | Help | | ----------------------- | ------------------------------------ | ----------------------------- | ------------------------------------------------------ | | `_dom_classes` | array of string | `[]` | CSS classes applied to widget DOM element | | `_model_module` | string | `'@jupyter-widgets/controls'` | | `_model_module_version` | string | `'1.5.0'` | | `_model_name` | string | `'SelectModel'` | | `_options_labels` | array of string | `[]` | The labels for the options. | | `_view_module` | string | `'@jupyter-widgets/controls'` | | `_view_module_version` | string | `'1.5.0'` | | `_view_name` | string | `'SelectView'` | | `description` | string | `''` | Description of the control. | | `description_tooltip` | `null` or string | `null` | Tooltip for the description (defaults to description). | | `disabled` | boolean | `false` | Enable or disable user changes | | `index` | `null` or number (integer) | `null` | Selected index | | `layout` | reference to Layout widget | reference to new instance | | `rows` | number (integer) | `5` | The number of rows to display. | | `style` | reference to DescriptionStyle widget | reference to new instance | Styling customizations | ### SelectMultipleModel (@jupyter-widgets/controls, 1.5.0); SelectMultipleView (@jupyter-widgets/controls, 1.5.0) | Attribute | Type | Default | Help | | ----------------------- | ------------------------------------ | ----------------------------- | ------------------------------------------------------ | | `_dom_classes` | array of string | `[]` | CSS classes applied to widget DOM element | | `_model_module` | string | `'@jupyter-widgets/controls'` | | `_model_module_version` | string | `'1.5.0'` | | `_model_name` | string | `'SelectMultipleModel'` | | `_options_labels` | array of string | `[]` | The labels for the options. | | `_view_module` | string | `'@jupyter-widgets/controls'` | | `_view_module_version` | string | `'1.5.0'` | | `_view_name` | string | `'SelectMultipleView'` | | `description` | string | `''` | Description of the control. | | `description_tooltip` | `null` or string | `null` | Tooltip for the description (defaults to description). | | `disabled` | boolean | `false` | Enable or disable user changes | | `index` | array of number (integer) | `[]` | Selected indices | | `layout` | reference to Layout widget | reference to new instance | | `rows` | number (integer) | `5` | The number of rows to display. | | `style` | reference to DescriptionStyle widget | reference to new instance | Styling customizations | ### SelectionRangeSliderModel (@jupyter-widgets/controls, 1.5.0); SelectionRangeSliderView (@jupyter-widgets/controls, 1.5.0) | Attribute | Type | Default | Help | | ----------------------- | -------------------------------------------- | ----------------------------- | ----------------------------------------------------------------- | | `_dom_classes` | array of string | `[]` | CSS classes applied to widget DOM element | | `_model_module` | string | `'@jupyter-widgets/controls'` | | `_model_module_version` | string | `'1.5.0'` | | `_model_name` | string | `'SelectionRangeSliderModel'` | | `_options_labels` | array of string | `[]` | The labels for the options. | | `_view_module` | string | `'@jupyter-widgets/controls'` | | `_view_module_version` | string | `'1.5.0'` | | `_view_name` | string | `'SelectionRangeSliderView'` | | `continuous_update` | boolean | `true` | Update the value of the widget as the user is holding the slider. | | `description` | string | `''` | Description of the control. | | `description_tooltip` | `null` or string | `null` | Tooltip for the description (defaults to description). | | `disabled` | boolean | `false` | Enable or disable user changes | | `index` | array | `[0, 0]` | Min and max selected indices | | `layout` | reference to Layout widget | reference to new instance | | `orientation` | string (one of `'horizontal'`, `'vertical'`) | `'horizontal'` | Vertical or horizontal. | | `readout` | boolean | `true` | Display the current selected label next to the slider | | `style` | reference to DescriptionStyle widget | reference to new instance | Styling customizations | ### SelectionSliderModel (@jupyter-widgets/controls, 1.5.0); SelectionSliderView (@jupyter-widgets/controls, 1.5.0) | Attribute | Type | Default | Help | | ----------------------- | -------------------------------------------- | ----------------------------- | ----------------------------------------------------------------- | | `_dom_classes` | array of string | `[]` | CSS classes applied to widget DOM element | | `_model_module` | string | `'@jupyter-widgets/controls'` | | `_model_module_version` | string | `'1.5.0'` | | `_model_name` | string | `'SelectionSliderModel'` | | `_options_labels` | array of string | `[]` | The labels for the options. | | `_view_module` | string | `'@jupyter-widgets/controls'` | | `_view_module_version` | string | `'1.5.0'` | | `_view_name` | string | `'SelectionSliderView'` | | `continuous_update` | boolean | `true` | Update the value of the widget as the user is holding the slider. | | `description` | string | `''` | Description of the control. | | `description_tooltip` | `null` or string | `null` | Tooltip for the description (defaults to description). | | `disabled` | boolean | `false` | Enable or disable user changes | | `index` | number (integer) | `0` | Selected index | | `layout` | reference to Layout widget | reference to new instance | | `orientation` | string (one of `'horizontal'`, `'vertical'`) | `'horizontal'` | Vertical or horizontal. | | `readout` | boolean | `true` | Display the current selected label next to the slider | | `style` | reference to DescriptionStyle widget | reference to new instance | Styling customizations | ### SliderStyleModel (@jupyter-widgets/controls, 1.5.0); StyleView (@jupyter-widgets/base, 1.2.0) | Attribute | Type | Default | Help | | ----------------------- | ---------------- | ----------------------------- | ---------------------------------------------------- | | `_model_module` | string | `'@jupyter-widgets/controls'` | | `_model_module_version` | string | `'1.5.0'` | | `_model_name` | string | `'SliderStyleModel'` | | `_view_module` | string | `'@jupyter-widgets/base'` | | `_view_module_version` | string | `'1.2.0'` | | `_view_name` | string | `'StyleView'` | | `description_width` | string | `''` | Width of the description to the side of the control. | | `handle_color` | `null` or string | `null` | Color of the slider handle. | ### TabModel (@jupyter-widgets/controls, 1.5.0); TabView (@jupyter-widgets/controls, 1.5.0) | Attribute | Type | Default | Help | | ----------------------- | -------------------------------------------------------------------- | ----------------------------- | --------------------------------------------------------------------------------------------------------------------------------- | | `_dom_classes` | array of string | `[]` | CSS classes applied to widget DOM element | | `_model_module` | string | `'@jupyter-widgets/controls'` | | `_model_module_version` | string | `'1.5.0'` | | `_model_name` | string | `'TabModel'` | | `_titles` | object | `{}` | Titles of the pages | | `_view_module` | string | `'@jupyter-widgets/controls'` | | `_view_module_version` | string | `'1.5.0'` | | `_view_name` | string | `'TabView'` | | `box_style` | string (one of `'success'`, `'info'`, `'warning'`, `'danger'`, `''`) | `''` | Use a predefined styling for the box. | | `children` | array of reference to Widget widget | `[]` | List of widget children | | `layout` | reference to Layout widget | reference to new instance | | `selected_index` | `null` or number (integer) | `0` | The index of the selected page. This is either an integer selecting a particular sub-widget, or None to have no widgets selected. | ### TextModel (@jupyter-widgets/controls, 1.5.0); TextView (@jupyter-widgets/controls, 1.5.0) | Attribute | Type | Default | Help | | ----------------------- | ------------------------------------ | ----------------------------- | ------------------------------------------------------------------------------------------------------------ | | `_dom_classes` | array of string | `[]` | CSS classes applied to widget DOM element | | `_model_module` | string | `'@jupyter-widgets/controls'` | | `_model_module_version` | string | `'1.5.0'` | | `_model_name` | string | `'TextModel'` | | `_view_module` | string | `'@jupyter-widgets/controls'` | | `_view_module_version` | string | `'1.5.0'` | | `_view_name` | string | `'TextView'` | | `continuous_update` | boolean | `true` | Update the value as the user types. If False, update on submission, e.g., pressing Enter or navigating away. | | `description` | string | `''` | Description of the control. | | `description_tooltip` | `null` or string | `null` | Tooltip for the description (defaults to description). | | `disabled` | boolean | `false` | Enable or disable user changes | | `layout` | reference to Layout widget | reference to new instance | | `placeholder` | string | `'\u200b'` | Placeholder text to display when nothing has been typed | | `style` | reference to DescriptionStyle widget | reference to new instance | Styling customizations | | `value` | string | `''` | String value | ### TextareaModel (@jupyter-widgets/controls, 1.5.0); TextareaView (@jupyter-widgets/controls, 1.5.0) | Attribute | Type | Default | Help | | ----------------------- | ------------------------------------ | ----------------------------- | ------------------------------------------------------------------------------------------------------------ | | `_dom_classes` | array of string | `[]` | CSS classes applied to widget DOM element | | `_model_module` | string | `'@jupyter-widgets/controls'` | | `_model_module_version` | string | `'1.5.0'` | | `_model_name` | string | `'TextareaModel'` | | `_view_module` | string | `'@jupyter-widgets/controls'` | | `_view_module_version` | string | `'1.5.0'` | | `_view_name` | string | `'TextareaView'` | | `continuous_update` | boolean | `true` | Update the value as the user types. If False, update on submission, e.g., pressing Enter or navigating away. | | `description` | string | `''` | Description of the control. | | `description_tooltip` | `null` or string | `null` | Tooltip for the description (defaults to description). | | `disabled` | boolean | `false` | Enable or disable user changes | | `layout` | reference to Layout widget | reference to new instance | | `placeholder` | string | `'\u200b'` | Placeholder text to display when nothing has been typed | | `rows` | `null` or number (integer) | `null` | The number of rows to display. | | `style` | reference to DescriptionStyle widget | reference to new instance | Styling customizations | | `value` | string | `''` | String value | ### ToggleButtonModel (@jupyter-widgets/controls, 1.5.0); ToggleButtonView (@jupyter-widgets/controls, 1.5.0) | Attribute | Type | Default | Help | | ----------------------- | --------------------------------------------------------------------------------- | ----------------------------- | ------------------------------------------------------ | | `_dom_classes` | array of string | `[]` | CSS classes applied to widget DOM element | | `_model_module` | string | `'@jupyter-widgets/controls'` | | `_model_module_version` | string | `'1.5.0'` | | `_model_name` | string | `'ToggleButtonModel'` | | `_view_module` | string | `'@jupyter-widgets/controls'` | | `_view_module_version` | string | `'1.5.0'` | | `_view_name` | string | `'ToggleButtonView'` | | `button_style` | string (one of `'primary'`, `'success'`, `'info'`, `'warning'`, `'danger'`, `''`) | `''` | Use a predefined styling for the button. | | `description` | string | `''` | Description of the control. | | `description_tooltip` | `null` or string | `null` | Tooltip for the description (defaults to description). | | `disabled` | boolean | `false` | Enable or disable user changes. | | `icon` | string | `''` | Font-awesome icon. | | `layout` | reference to Layout widget | reference to new instance | | `style` | reference to DescriptionStyle widget | reference to new instance | Styling customizations | | `tooltip` | string | `''` | Tooltip caption of the toggle button. | | `value` | boolean | `false` | Bool value | ### ToggleButtonsModel (@jupyter-widgets/controls, 1.5.0); ToggleButtonsView (@jupyter-widgets/controls, 1.5.0) | Attribute | Type | Default | Help | | ----------------------- | ------------------------------------------------------------------------------------------- | ----------------------------- | ----------------------------------------------------------------------- | | `_dom_classes` | array of string | `[]` | CSS classes applied to widget DOM element | | `_model_module` | string | `'@jupyter-widgets/controls'` | | `_model_module_version` | string | `'1.5.0'` | | `_model_name` | string | `'ToggleButtonsModel'` | | `_options_labels` | array of string | `[]` | The labels for the options. | | `_view_module` | string | `'@jupyter-widgets/controls'` | | `_view_module_version` | string | `'1.5.0'` | | `_view_name` | string | `'ToggleButtonsView'` | | `button_style` | `null` or string (one of `'primary'`, `'success'`, `'info'`, `'warning'`, `'danger'`, `''`) | `''` | Use a predefined styling for the buttons. | | `description` | string | `''` | Description of the control. | | `description_tooltip` | `null` or string | `null` | Tooltip for the description (defaults to description). | | `disabled` | boolean | `false` | Enable or disable user changes | | `icons` | array of string | `[]` | Icons names for each button (FontAwesome names without the fa- prefix). | | `index` | `null` or number (integer) | `null` | Selected index | | `layout` | reference to Layout widget | reference to new instance | | `style` | reference to ToggleButtonsStyle widget | reference to new instance | | `tooltips` | array of string | `[]` | Tooltips for each button. | ### ToggleButtonsStyleModel (@jupyter-widgets/controls, 1.5.0); StyleView (@jupyter-widgets/base, 1.2.0) | Attribute | Type | Default | Help | | ----------------------- | ------ | ----------------------------- | ---------------------------------------------------- | | `_model_module` | string | `'@jupyter-widgets/controls'` | | `_model_module_version` | string | `'1.5.0'` | | `_model_name` | string | `'ToggleButtonsStyleModel'` | | `_view_module` | string | `'@jupyter-widgets/base'` | | `_view_module_version` | string | `'1.2.0'` | | `_view_name` | string | `'StyleView'` | | `button_width` | string | `''` | The width of each button. | | `description_width` | string | `''` | Width of the description to the side of the control. | | `font_weight` | string | `''` | Text font weight of each button. | ### VBoxModel (@jupyter-widgets/controls, 1.5.0); VBoxView (@jupyter-widgets/controls, 1.5.0) | Attribute | Type | Default | Help | | ----------------------- | -------------------------------------------------------------------- | ----------------------------- | ----------------------------------------- | | `_dom_classes` | array of string | `[]` | CSS classes applied to widget DOM element | | `_model_module` | string | `'@jupyter-widgets/controls'` | | `_model_module_version` | string | `'1.5.0'` | | `_model_name` | string | `'VBoxModel'` | | `_view_module` | string | `'@jupyter-widgets/controls'` | | `_view_module_version` | string | `'1.5.0'` | | `_view_name` | string | `'VBoxView'` | | `box_style` | string (one of `'success'`, `'info'`, `'warning'`, `'danger'`, `''`) | `''` | Use a predefined styling for the box. | | `children` | array of reference to Widget widget | `[]` | List of widget children | | `layout` | reference to Layout widget | reference to new instance | ### ValidModel (@jupyter-widgets/controls, 1.5.0); ValidView (@jupyter-widgets/controls, 1.5.0) | Attribute | Type | Default | Help | | ----------------------- | ------------------------------------ | ----------------------------- | ------------------------------------------------------ | | `_dom_classes` | array of string | `[]` | CSS classes applied to widget DOM element | | `_model_module` | string | `'@jupyter-widgets/controls'` | | `_model_module_version` | string | `'1.5.0'` | | `_model_name` | string | `'ValidModel'` | | `_view_module` | string | `'@jupyter-widgets/controls'` | | `_view_module_version` | string | `'1.5.0'` | | `_view_name` | string | `'ValidView'` | | `description` | string | `''` | Description of the control. | | `description_tooltip` | `null` or string | `null` | Tooltip for the description (defaults to description). | | `disabled` | boolean | `false` | Enable or disable user changes. | | `layout` | reference to Layout widget | reference to new instance | | `readout` | string | `'Invalid'` | Message displayed when the value is False | | `style` | reference to DescriptionStyle widget | reference to new instance | Styling customizations | | `value` | boolean | `false` | Bool value | ### VideoModel (@jupyter-widgets/controls, 1.5.0); VideoView (@jupyter-widgets/controls, 1.5.0) | Attribute | Type | Default | Help | | ----------------------- | -------------------------- | ----------------------------- | ----------------------------------------------------------------------------------- | | `_dom_classes` | array of string | `[]` | CSS classes applied to widget DOM element | | `_model_module` | string | `'@jupyter-widgets/controls'` | | `_model_module_version` | string | `'1.5.0'` | | `_model_name` | string | `'VideoModel'` | | `_view_module` | string | `'@jupyter-widgets/controls'` | | `_view_module_version` | string | `'1.5.0'` | | `_view_name` | string | `'VideoView'` | | `autoplay` | boolean | `true` | When true, the video starts when it's displayed | | `controls` | boolean | `true` | Specifies that video controls should be displayed (such as a play/pause button etc) | | `format` | string | `'mp4'` | The format of the video. | | `height` | string | `''` | Height of the video in pixels. | | `layout` | reference to Layout widget | reference to new instance | | `loop` | boolean | `true` | When true, the video will start from the beginning after finishing | | `value` | Bytes | `b''` | The media data as a byte string. | | `width` | string | `''` | Width of the video in pixels. | ### OutputModel (@jupyter-widgets/output, 1.0.0); OutputView (@jupyter-widgets/output, 1.0.0) | Attribute | Type | Default | Help | | ----------------------- | -------------------------- | --------------------------- | --------------------------------------------- | | `_dom_classes` | array of string | `[]` | CSS classes applied to widget DOM element | | `_model_module` | string | `'@jupyter-widgets/output'` | | `_model_module_version` | string | `'1.0.0'` | | `_model_name` | string | `'OutputModel'` | | `_view_module` | string | `'@jupyter-widgets/output'` | | `_view_module_version` | string | `'1.0.0'` | | `_view_name` | string | `'OutputView'` | | `layout` | reference to Layout widget | reference to new instance | | `msg_id` | string | `''` | Parent message id of messages to capture | | `outputs` | array of object | `[]` | The output messages synced from the frontend. | ipywidgets-8.1.1/packages/schema/jupyterwidgetmodels.v7.md000066400000000000000000003403511450026722000237220ustar00rootroot00000000000000# Model State This is a description of the model state for each widget in the core Jupyter widgets library. The model ID of a widget is the id of the comm object the widget is using. A reference to a widget is serialized to JSON as a string of the form `"IPY_MODEL_"`, where `` is the model ID of a previously created widget of the specified type. This model specification is for ipywidgets 7.0, @jupyter-widgets/base 1.0.0, and @jupyter-widgets/controls 1.0.0. ## Model attributes Each widget in the Jupyter core widgets is represented below. The heading represents the model name, module, and version, view name, module, and version that the widget is registered with. ### LayoutModel (@jupyter-widgets/base, 1.0.0); LayoutView (@jupyter-widgets/base, 1.0.0) | Attribute | Type | Default | Help | | ----------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------- | ---------------------------------------------------------------- | | `_model_module` | string | `'@jupyter-widgets/base'` | The namespace for the model. | | `_model_module_version` | string | `'1.0.0'` | A semver requirement for namespace version containing the model. | | `_model_name` | string | `'LayoutModel'` | | `_view_module` | string | `'@jupyter-widgets/base'` | | `_view_module_version` | string | `'1.0.0'` | | `_view_name` | string | `'LayoutView'` | | `align_content` | `null` or string (one of `'flex-start'`, `'flex-end'`, `'center'`, `'space-between'`, `'space-around'`, `'space-evenly'`, `'stretch'`, `'inherit'`, `'initial'`, `'unset'`) | `null` | The align-content CSS attribute. | | `align_items` | `null` or string (one of `'flex-start'`, `'flex-end'`, `'center'`, `'baseline'`, `'stretch'`, `'inherit'`, `'initial'`, `'unset'`) | `null` | The align-items CSS attribute. | | `align_self` | `null` or string (one of `'auto'`, `'flex-start'`, `'flex-end'`, `'center'`, `'baseline'`, `'stretch'`, `'inherit'`, `'initial'`, `'unset'`) | `null` | The align-self CSS attribute. | | `border` | `null` or string | `null` | The border CSS attribute. | | `bottom` | `null` or string | `null` | The bottom CSS attribute. | | `display` | `null` or string | `null` | The display CSS attribute. | | `flex` | `null` or string | `null` | The flex CSS attribute. | | `flex_flow` | `null` or string | `null` | The flex-flow CSS attribute. | | `height` | `null` or string | `null` | The height CSS attribute. | | `justify_content` | `null` or string (one of `'flex-start'`, `'flex-end'`, `'center'`, `'space-between'`, `'space-around'`, `'inherit'`, `'initial'`, `'unset'`) | `null` | The justify-content CSS attribute. | | `left` | `null` or string | `null` | The left CSS attribute. | | `margin` | `null` or string | `null` | The margin CSS attribute. | | `max_height` | `null` or string | `null` | The max-height CSS attribute. | | `max_width` | `null` or string | `null` | The max-width CSS attribute. | | `min_height` | `null` or string | `null` | The min-height CSS attribute. | | `min_width` | `null` or string | `null` | The min-width CSS attribute. | | `order` | `null` or string | `null` | The order CSS attribute. | | `overflow` | `null` or string (one of `'visible'`, `'hidden'`, `'scroll'`, `'auto'`, `'inherit'`, `'initial'`, `'unset'`) | `null` | The overflow CSS attribute. | | `overflow_x` | `null` or string (one of `'visible'`, `'hidden'`, `'scroll'`, `'auto'`, `'inherit'`, `'initial'`, `'unset'`) | `null` | The overflow-x CSS attribute. | | `overflow_y` | `null` or string (one of `'visible'`, `'hidden'`, `'scroll'`, `'auto'`, `'inherit'`, `'initial'`, `'unset'`) | `null` | The overflow-y CSS attribute. | | `padding` | `null` or string | `null` | The padding CSS attribute. | | `right` | `null` or string | `null` | The right CSS attribute. | | `top` | `null` or string | `null` | The top CSS attribute. | | `visibility` | `null` or string (one of `'visible'`, `'hidden'`, `'inherit'`, `'initial'`, `'unset'`) | `null` | The visibility CSS attribute. | | `width` | `null` or string | `null` | The width CSS attribute. | ### AccordionModel (@jupyter-widgets/controls, 1.0.0); AccordionView (@jupyter-widgets/controls, 1.0.0) | Attribute | Type | Default | Help | | ----------------------- | -------------------------------------------------------------------- | ----------------------------- | --------------------------------------------------------------------------------------------------------------------------------- | | `_dom_classes` | array | `[]` | CSS classes applied to widget DOM element | | `_model_module` | string | `'@jupyter-widgets/controls'` | | `_model_module_version` | string | `'1.0.0'` | | `_model_name` | string | `'AccordionModel'` | | `_titles` | object | `{}` | Titles of the pages | | `_view_module` | string | `'@jupyter-widgets/controls'` | | `_view_module_version` | string | `'1.0.0'` | | `_view_name` | string | `'AccordionView'` | | `box_style` | string (one of `'success'`, `'info'`, `'warning'`, `'danger'`, `''`) | `''` | Use a predefined styling for the box. | | `children` | array | `[]` | List of widget children | | `layout` | reference to Layout widget | reference to new instance | | `selected_index` | `null` or number (integer) | `0` | The index of the selected page. This is either an integer selecting a particular sub-widget, or None to have no widgets selected. | ### BoundedFloatTextModel (@jupyter-widgets/controls, 1.0.0); FloatTextView (@jupyter-widgets/controls, 1.0.0) | Attribute | Type | Default | Help | | ----------------------- | ------------------------------------ | ----------------------------- | ------------------------------------------------------------------------------------------------------------ | | `_dom_classes` | array | `[]` | CSS classes applied to widget DOM element | | `_model_module` | string | `'@jupyter-widgets/controls'` | | `_model_module_version` | string | `'1.0.0'` | | `_model_name` | string | `'BoundedFloatTextModel'` | | `_view_module` | string | `'@jupyter-widgets/controls'` | | `_view_module_version` | string | `'1.0.0'` | | `_view_name` | string | `'FloatTextView'` | | `continuous_update` | boolean | `false` | Update the value as the user types. If False, update on submission, e.g., pressing Enter or navigating away. | | `description` | string | `''` | Description of the control. | | `disabled` | boolean | `false` | Enable or disable user changes | | `layout` | reference to Layout widget | reference to new instance | | `max` | number (float) | `100.0` | Max value | | `min` | number (float) | `0.0` | Min value | | `step` | `null` or number (float) | `null` | Minimum step to increment the value | | `style` | reference to DescriptionStyle widget | reference to new instance | Styling customizations | | `value` | number (float) | `0.0` | Float value | ### BoundedIntTextModel (@jupyter-widgets/controls, 1.0.0); IntTextView (@jupyter-widgets/controls, 1.0.0) | Attribute | Type | Default | Help | | ----------------------- | ------------------------------------ | ----------------------------- | ------------------------------------------------------------------------------------------------------------ | | `_dom_classes` | array | `[]` | CSS classes applied to widget DOM element | | `_model_module` | string | `'@jupyter-widgets/controls'` | | `_model_module_version` | string | `'1.0.0'` | | `_model_name` | string | `'BoundedIntTextModel'` | | `_view_module` | string | `'@jupyter-widgets/controls'` | | `_view_module_version` | string | `'1.0.0'` | | `_view_name` | string | `'IntTextView'` | | `continuous_update` | boolean | `false` | Update the value as the user types. If False, update on submission, e.g., pressing Enter or navigating away. | | `description` | string | `''` | Description of the control. | | `disabled` | boolean | `false` | Enable or disable user changes | | `layout` | reference to Layout widget | reference to new instance | | `max` | number (integer) | `100` | Max value | | `min` | number (integer) | `0` | Min value | | `step` | number (integer) | `1` | Minimum step to increment the value | | `style` | reference to DescriptionStyle widget | reference to new instance | Styling customizations | | `value` | number (integer) | `0` | Int value | ### BoxModel (@jupyter-widgets/controls, 1.0.0); BoxView (@jupyter-widgets/controls, 1.0.0) | Attribute | Type | Default | Help | | ----------------------- | -------------------------------------------------------------------- | ----------------------------- | ----------------------------------------- | | `_dom_classes` | array | `[]` | CSS classes applied to widget DOM element | | `_model_module` | string | `'@jupyter-widgets/controls'` | | `_model_module_version` | string | `'1.0.0'` | | `_model_name` | string | `'BoxModel'` | | `_view_module` | string | `'@jupyter-widgets/controls'` | | `_view_module_version` | string | `'1.0.0'` | | `_view_name` | string | `'BoxView'` | | `box_style` | string (one of `'success'`, `'info'`, `'warning'`, `'danger'`, `''`) | `''` | Use a predefined styling for the box. | | `children` | array | `[]` | List of widget children | | `layout` | reference to Layout widget | reference to new instance | ### ButtonModel (@jupyter-widgets/controls, 1.0.0); ButtonView (@jupyter-widgets/controls, 1.0.0) | Attribute | Type | Default | Help | | ----------------------- | --------------------------------------------------------------------------------- | ----------------------------- | ------------------------------------------------- | | `_dom_classes` | array | `[]` | CSS classes applied to widget DOM element | | `_model_module` | string | `'@jupyter-widgets/controls'` | | `_model_module_version` | string | `'1.0.0'` | | `_model_name` | string | `'ButtonModel'` | | `_view_module` | string | `'@jupyter-widgets/controls'` | | `_view_module_version` | string | `'1.0.0'` | | `_view_name` | string | `'ButtonView'` | | `button_style` | string (one of `'primary'`, `'success'`, `'info'`, `'warning'`, `'danger'`, `''`) | `''` | Use a predefined styling for the button. | | `description` | string | `''` | Button label. | | `disabled` | boolean | `false` | Enable or disable user changes. | | `icon` | string | `''` | Font-awesome icon name, without the 'fa-' prefix. | | `layout` | reference to Layout widget | reference to new instance | | `style` | reference to ButtonStyle widget | reference to new instance | | `tooltip` | string | `''` | Tooltip caption of the button. | ### ButtonStyleModel (@jupyter-widgets/controls, 1.0.0); StyleView (@jupyter-widgets/base, 1.0.0) | Attribute | Type | Default | Help | | ----------------------- | ---------------- | ----------------------------- | ------------------------ | | `_model_module` | string | `'@jupyter-widgets/controls'` | | `_model_module_version` | string | `'1.0.0'` | | `_model_name` | string | `'ButtonStyleModel'` | | `_view_module` | string | `'@jupyter-widgets/base'` | | `_view_module_version` | string | `'1.0.0'` | | `_view_name` | string | `'StyleView'` | | `button_color` | `null` or string | `null` | Color of the button | | `font_weight` | string | `''` | Button text font weight. | ### CheckboxModel (@jupyter-widgets/controls, 1.0.0); CheckboxView (@jupyter-widgets/controls, 1.0.0) | Attribute | Type | Default | Help | | ----------------------- | ------------------------------------ | ----------------------------- | ------------------------------------------------------------------- | | `_dom_classes` | array | `[]` | CSS classes applied to widget DOM element | | `_model_module` | string | `'@jupyter-widgets/controls'` | | `_model_module_version` | string | `'1.0.0'` | | `_model_name` | string | `'CheckboxModel'` | | `_view_module` | string | `'@jupyter-widgets/controls'` | | `_view_module_version` | string | `'1.0.0'` | | `_view_name` | string | `'CheckboxView'` | | `description` | string | `''` | Description of the control. | | `disabled` | boolean | `false` | Enable or disable user changes. | | `indent` | boolean | `true` | Indent the control to align with other controls with a description. | | `layout` | reference to Layout widget | reference to new instance | | `style` | reference to DescriptionStyle widget | reference to new instance | Styling customizations | | `value` | boolean | `false` | Bool value | ### ColorPickerModel (@jupyter-widgets/controls, 1.0.0); ColorPickerView (@jupyter-widgets/controls, 1.0.0) | Attribute | Type | Default | Help | | ----------------------- | ------------------------------------ | ----------------------------- | ------------------------------------------------- | | `_dom_classes` | array | `[]` | CSS classes applied to widget DOM element | | `_model_module` | string | `'@jupyter-widgets/controls'` | | `_model_module_version` | string | `'1.0.0'` | | `_model_name` | string | `'ColorPickerModel'` | | `_view_module` | string | `'@jupyter-widgets/controls'` | | `_view_module_version` | string | `'1.0.0'` | | `_view_name` | string | `'ColorPickerView'` | | `concise` | boolean | `false` | Display short version with just a color selector. | | `description` | string | `''` | Description of the control. | | `disabled` | boolean | `false` | Enable or disable user changes. | | `layout` | reference to Layout widget | reference to new instance | | `style` | reference to DescriptionStyle widget | reference to new instance | Styling customizations | | `value` | string | `'black'` | The color value. | ### ControllerAxisModel (@jupyter-widgets/controls, 1.0.0); ControllerAxisView (@jupyter-widgets/controls, 1.0.0) | Attribute | Type | Default | Help | | ----------------------- | -------------------------- | ----------------------------- | ----------------------------------------- | | `_dom_classes` | array | `[]` | CSS classes applied to widget DOM element | | `_model_module` | string | `'@jupyter-widgets/controls'` | | `_model_module_version` | string | `'1.0.0'` | | `_model_name` | string | `'ControllerAxisModel'` | | `_view_module` | string | `'@jupyter-widgets/controls'` | | `_view_module_version` | string | `'1.0.0'` | | `_view_name` | string | `'ControllerAxisView'` | | `layout` | reference to Layout widget | reference to new instance | | `value` | number (float) | `0.0` | The value of the axis. | ### ControllerButtonModel (@jupyter-widgets/controls, 1.0.0); ControllerButtonView (@jupyter-widgets/controls, 1.0.0) | Attribute | Type | Default | Help | | ----------------------- | -------------------------- | ----------------------------- | ----------------------------------------- | | `_dom_classes` | array | `[]` | CSS classes applied to widget DOM element | | `_model_module` | string | `'@jupyter-widgets/controls'` | | `_model_module_version` | string | `'1.0.0'` | | `_model_name` | string | `'ControllerButtonModel'` | | `_view_module` | string | `'@jupyter-widgets/controls'` | | `_view_module_version` | string | `'1.0.0'` | | `_view_name` | string | `'ControllerButtonView'` | | `layout` | reference to Layout widget | reference to new instance | | `pressed` | boolean | `false` | Whether the button is pressed. | | `value` | number (float) | `0.0` | The value of the button. | ### ControllerModel (@jupyter-widgets/controls, 1.0.0); ControllerView (@jupyter-widgets/controls, 1.0.0) | Attribute | Type | Default | Help | | ----------------------- | -------------------------- | ----------------------------- | ----------------------------------------------------- | | `_dom_classes` | array | `[]` | CSS classes applied to widget DOM element | | `_model_module` | string | `'@jupyter-widgets/controls'` | | `_model_module_version` | string | `'1.0.0'` | | `_model_name` | string | `'ControllerModel'` | | `_view_module` | string | `'@jupyter-widgets/controls'` | | `_view_module_version` | string | `'1.0.0'` | | `_view_name` | string | `'ControllerView'` | | `axes` | array | `[]` | The axes on the gamepad. | | `buttons` | array | `[]` | The buttons on the gamepad. | | `connected` | boolean | `false` | Whether the gamepad is connected. | | `index` | number (integer) | `0` | The id number of the controller. | | `layout` | reference to Layout widget | reference to new instance | | `mapping` | string | `''` | The name of the control mapping. | | `name` | string | `''` | The name of the controller. | | `timestamp` | number (float) | `0.0` | The last time the data from this gamepad was updated. | ### DatePickerModel (@jupyter-widgets/controls, 1.0.0); DatePickerView (@jupyter-widgets/controls, 1.0.0) | Attribute | Type | Default | Help | | ----------------------- | ------------------------------------ | ----------------------------- | ----------------------------------------- | | `_dom_classes` | array | `[]` | CSS classes applied to widget DOM element | | `_model_module` | string | `'@jupyter-widgets/controls'` | | `_model_module_version` | string | `'1.0.0'` | | `_model_name` | string | `'DatePickerModel'` | | `_view_module` | string | `'@jupyter-widgets/controls'` | | `_view_module_version` | string | `'1.0.0'` | | `_view_name` | string | `'DatePickerView'` | | `description` | string | `''` | Description of the control. | | `disabled` | boolean | `false` | Enable or disable user changes. | | `layout` | reference to Layout widget | reference to new instance | | `style` | reference to DescriptionStyle widget | reference to new instance | Styling customizations | | `value` | `null` or Date | `null` | ### DescriptionStyleModel (@jupyter-widgets/controls, 1.0.0); StyleView (@jupyter-widgets/base, 1.0.0) | Attribute | Type | Default | Help | | ----------------------- | ------ | ----------------------------- | ---------------------------------------------------- | | `_model_module` | string | `'@jupyter-widgets/controls'` | | `_model_module_version` | string | `'1.0.0'` | | `_model_name` | string | `'DescriptionStyleModel'` | | `_view_module` | string | `'@jupyter-widgets/base'` | | `_view_module_version` | string | `'1.0.0'` | | `_view_name` | string | `'StyleView'` | | `description_width` | string | `''` | Width of the description to the side of the control. | ### DirectionalLinkModel (@jupyter-widgets/controls, 1.0.0); None (@jupyter-widgets/controls, 1.0.0) | Attribute | Type | Default | Help | | ----------------------- | ---------------- | ----------------------------- | -------------------------------------- | | `_model_module` | string | `'@jupyter-widgets/controls'` | | `_model_module_version` | string | `'1.0.0'` | | `_model_name` | string | `'DirectionalLinkModel'` | | `_view_module` | string | `'@jupyter-widgets/controls'` | | `_view_module_version` | string | `'1.0.0'` | | `_view_name` | `null` or string | `null` | Name of the view. | | `source` | array | `[]` | The source (widget, 'trait_name') pair | | `target` | array | `[]` | The target (widget, 'trait_name') pair | ### DropdownModel (@jupyter-widgets/controls, 1.0.0); DropdownView (@jupyter-widgets/controls, 1.0.0) | Attribute | Type | Default | Help | | ----------------------- | ------------------------------------ | ----------------------------- | ----------------------------------------- | | `_dom_classes` | array | `[]` | CSS classes applied to widget DOM element | | `_model_module` | string | `'@jupyter-widgets/controls'` | | `_model_module_version` | string | `'1.0.0'` | | `_model_name` | string | `'DropdownModel'` | | `_options_labels` | array | `[]` | The labels for the options. | | `_view_module` | string | `'@jupyter-widgets/controls'` | | `_view_module_version` | string | `'1.0.0'` | | `_view_name` | string | `'DropdownView'` | | `description` | string | `''` | Description of the control. | | `disabled` | boolean | `false` | Enable or disable user changes | | `index` | `null` or number (integer) | `null` | Selected index | | `layout` | reference to Layout widget | reference to new instance | | `style` | reference to DescriptionStyle widget | reference to new instance | Styling customizations | ### FloatProgressModel (@jupyter-widgets/controls, 1.0.0); ProgressView (@jupyter-widgets/controls, 1.0.0) | Attribute | Type | Default | Help | | ----------------------- | ------------------------------------------------------------------------------ | ----------------------------- | ---------------------------------------------- | | `_dom_classes` | array | `[]` | CSS classes applied to widget DOM element | | `_model_module` | string | `'@jupyter-widgets/controls'` | | `_model_module_version` | string | `'1.0.0'` | | `_model_name` | string | `'FloatProgressModel'` | | `_view_module` | string | `'@jupyter-widgets/controls'` | | `_view_module_version` | string | `'1.0.0'` | | `_view_name` | string | `'ProgressView'` | | `bar_style` | `null` or string (one of `'success'`, `'info'`, `'warning'`, `'danger'`, `''`) | `''` | Use a predefined styling for the progress bar. | | `description` | string | `''` | Description of the control. | | `layout` | reference to Layout widget | reference to new instance | | `max` | number (float) | `100.0` | Max value | | `min` | number (float) | `0.0` | Min value | | `orientation` | string (one of `'horizontal'`, `'vertical'`) | `'horizontal'` | Vertical or horizontal. | | `style` | reference to ProgressStyle widget | reference to new instance | | `value` | number (float) | `0.0` | Float value | ### FloatRangeSliderModel (@jupyter-widgets/controls, 1.0.0); FloatRangeSliderView (@jupyter-widgets/controls, 1.0.0) | Attribute | Type | Default | Help | | ----------------------- | -------------------------------------------- | ----------------------------- | ----------------------------------------------------------------- | | `_dom_classes` | array | `[]` | CSS classes applied to widget DOM element | | `_model_module` | string | `'@jupyter-widgets/controls'` | | `_model_module_version` | string | `'1.0.0'` | | `_model_name` | string | `'FloatRangeSliderModel'` | | `_view_module` | string | `'@jupyter-widgets/controls'` | | `_view_module_version` | string | `'1.0.0'` | | `_view_name` | string | `'FloatRangeSliderView'` | | `continuous_update` | boolean | `true` | Update the value of the widget as the user is sliding the slider. | | `description` | string | `''` | Description of the control. | | `disabled` | boolean | `false` | Enable or disable user changes | | `layout` | reference to Layout widget | reference to new instance | | `max` | number (float) | `100.0` | Max value | | `min` | number (float) | `0.0` | Min value | | `orientation` | string (one of `'horizontal'`, `'vertical'`) | `'horizontal'` | Vertical or horizontal. | | `readout` | boolean | `true` | Display the current value of the slider next to it. | | `readout_format` | string | `'.2f'` | Format for the readout | | `step` | number (float) | `0.1` | Minimum step to increment the value | | `style` | reference to SliderStyle widget | reference to new instance | | `value` | array | `[0.0, 1.0]` | Tuple of (lower, upper) bounds | ### FloatSliderModel (@jupyter-widgets/controls, 1.0.0); FloatSliderView (@jupyter-widgets/controls, 1.0.0) | Attribute | Type | Default | Help | | ----------------------- | -------------------------------------------- | ----------------------------- | ----------------------------------------------------------------- | | `_dom_classes` | array | `[]` | CSS classes applied to widget DOM element | | `_model_module` | string | `'@jupyter-widgets/controls'` | | `_model_module_version` | string | `'1.0.0'` | | `_model_name` | string | `'FloatSliderModel'` | | `_view_module` | string | `'@jupyter-widgets/controls'` | | `_view_module_version` | string | `'1.0.0'` | | `_view_name` | string | `'FloatSliderView'` | | `continuous_update` | boolean | `true` | Update the value of the widget as the user is holding the slider. | | `description` | string | `''` | Description of the control. | | `disabled` | boolean | `false` | Enable or disable user changes | | `layout` | reference to Layout widget | reference to new instance | | `max` | number (float) | `100.0` | Max value | | `min` | number (float) | `0.0` | Min value | | `orientation` | string (one of `'horizontal'`, `'vertical'`) | `'horizontal'` | Vertical or horizontal. | | `readout` | boolean | `true` | Display the current value of the slider next to it. | | `readout_format` | string | `'.2f'` | Format for the readout | | `step` | number (float) | `0.1` | Minimum step to increment the value | | `style` | reference to SliderStyle widget | reference to new instance | | `value` | number (float) | `0.0` | Float value | ### FloatTextModel (@jupyter-widgets/controls, 1.0.0); FloatTextView (@jupyter-widgets/controls, 1.0.0) | Attribute | Type | Default | Help | | ----------------------- | ------------------------------------ | ----------------------------- | ------------------------------------------------------------------------------------------------------------ | | `_dom_classes` | array | `[]` | CSS classes applied to widget DOM element | | `_model_module` | string | `'@jupyter-widgets/controls'` | | `_model_module_version` | string | `'1.0.0'` | | `_model_name` | string | `'FloatTextModel'` | | `_view_module` | string | `'@jupyter-widgets/controls'` | | `_view_module_version` | string | `'1.0.0'` | | `_view_name` | string | `'FloatTextView'` | | `continuous_update` | boolean | `false` | Update the value as the user types. If False, update on submission, e.g., pressing Enter or navigating away. | | `description` | string | `''` | Description of the control. | | `disabled` | boolean | `false` | Enable or disable user changes | | `layout` | reference to Layout widget | reference to new instance | | `step` | `null` or number (float) | `null` | Minimum step to increment the value | | `style` | reference to DescriptionStyle widget | reference to new instance | Styling customizations | | `value` | number (float) | `0.0` | Float value | ### HBoxModel (@jupyter-widgets/controls, 1.0.0); HBoxView (@jupyter-widgets/controls, 1.0.0) | Attribute | Type | Default | Help | | ----------------------- | -------------------------------------------------------------------- | ----------------------------- | ----------------------------------------- | | `_dom_classes` | array | `[]` | CSS classes applied to widget DOM element | | `_model_module` | string | `'@jupyter-widgets/controls'` | | `_model_module_version` | string | `'1.0.0'` | | `_model_name` | string | `'HBoxModel'` | | `_view_module` | string | `'@jupyter-widgets/controls'` | | `_view_module_version` | string | `'1.0.0'` | | `_view_name` | string | `'HBoxView'` | | `box_style` | string (one of `'success'`, `'info'`, `'warning'`, `'danger'`, `''`) | `''` | Use a predefined styling for the box. | | `children` | array | `[]` | List of widget children | | `layout` | reference to Layout widget | reference to new instance | ### HTMLMathModel (@jupyter-widgets/controls, 1.0.0); HTMLMathView (@jupyter-widgets/controls, 1.0.0) | Attribute | Type | Default | Help | | ----------------------- | ------------------------------------ | ----------------------------- | ------------------------------------------------------- | | `_dom_classes` | array | `[]` | CSS classes applied to widget DOM element | | `_model_module` | string | `'@jupyter-widgets/controls'` | | `_model_module_version` | string | `'1.0.0'` | | `_model_name` | string | `'HTMLMathModel'` | | `_view_module` | string | `'@jupyter-widgets/controls'` | | `_view_module_version` | string | `'1.0.0'` | | `_view_name` | string | `'HTMLMathView'` | | `description` | string | `''` | Description of the control. | | `layout` | reference to Layout widget | reference to new instance | | `placeholder` | string | `'\u200b'` | Placeholder text to display when nothing has been typed | | `style` | reference to DescriptionStyle widget | reference to new instance | Styling customizations | | `value` | string | `''` | String value | ### HTMLModel (@jupyter-widgets/controls, 1.0.0); HTMLView (@jupyter-widgets/controls, 1.0.0) | Attribute | Type | Default | Help | | ----------------------- | ------------------------------------ | ----------------------------- | ------------------------------------------------------- | | `_dom_classes` | array | `[]` | CSS classes applied to widget DOM element | | `_model_module` | string | `'@jupyter-widgets/controls'` | | `_model_module_version` | string | `'1.0.0'` | | `_model_name` | string | `'HTMLModel'` | | `_view_module` | string | `'@jupyter-widgets/controls'` | | `_view_module_version` | string | `'1.0.0'` | | `_view_name` | string | `'HTMLView'` | | `description` | string | `''` | Description of the control. | | `layout` | reference to Layout widget | reference to new instance | | `placeholder` | string | `'\u200b'` | Placeholder text to display when nothing has been typed | | `style` | reference to DescriptionStyle widget | reference to new instance | Styling customizations | | `value` | string | `''` | String value | ### ImageModel (@jupyter-widgets/controls, 1.0.0); ImageView (@jupyter-widgets/controls, 1.0.0) | Attribute | Type | Default | Help | | ----------------------- | -------------------------- | ----------------------------- | ----------------------------------------- | | `_dom_classes` | array | `[]` | CSS classes applied to widget DOM element | | `_model_module` | string | `'@jupyter-widgets/controls'` | | `_model_module_version` | string | `'1.0.0'` | | `_model_name` | string | `'ImageModel'` | | `_view_module` | string | `'@jupyter-widgets/controls'` | | `_view_module_version` | string | `'1.0.0'` | | `_view_name` | string | `'ImageView'` | | `format` | string | `'png'` | The format of the image. | | `height` | string | `''` | Height of the image in pixels. | | `layout` | reference to Layout widget | reference to new instance | | `value` | Bytes | `b''` | The image data as a byte string. | | `width` | string | `''` | Width of the image in pixels. | ### IntProgressModel (@jupyter-widgets/controls, 1.0.0); ProgressView (@jupyter-widgets/controls, 1.0.0) | Attribute | Type | Default | Help | | ----------------------- | -------------------------------------------------------------------- | ----------------------------- | ---------------------------------------------- | | `_dom_classes` | array | `[]` | CSS classes applied to widget DOM element | | `_model_module` | string | `'@jupyter-widgets/controls'` | | `_model_module_version` | string | `'1.0.0'` | | `_model_name` | string | `'IntProgressModel'` | | `_view_module` | string | `'@jupyter-widgets/controls'` | | `_view_module_version` | string | `'1.0.0'` | | `_view_name` | string | `'ProgressView'` | | `bar_style` | string (one of `'success'`, `'info'`, `'warning'`, `'danger'`, `''`) | `''` | Use a predefined styling for the progress bar. | | `description` | string | `''` | Description of the control. | | `layout` | reference to Layout widget | reference to new instance | | `max` | number (integer) | `100` | Max value | | `min` | number (integer) | `0` | Min value | | `orientation` | string (one of `'horizontal'`, `'vertical'`) | `'horizontal'` | Vertical or horizontal. | | `style` | reference to ProgressStyle widget | reference to new instance | | `value` | number (integer) | `0` | Int value | ### IntRangeSliderModel (@jupyter-widgets/controls, 1.0.0); IntRangeSliderView (@jupyter-widgets/controls, 1.0.0) | Attribute | Type | Default | Help | | ----------------------- | -------------------------------------------- | ----------------------------- | ----------------------------------------------------------------- | | `_dom_classes` | array | `[]` | CSS classes applied to widget DOM element | | `_model_module` | string | `'@jupyter-widgets/controls'` | | `_model_module_version` | string | `'1.0.0'` | | `_model_name` | string | `'IntRangeSliderModel'` | | `_view_module` | string | `'@jupyter-widgets/controls'` | | `_view_module_version` | string | `'1.0.0'` | | `_view_name` | string | `'IntRangeSliderView'` | | `continuous_update` | boolean | `true` | Update the value of the widget as the user is sliding the slider. | | `description` | string | `''` | Description of the control. | | `disabled` | boolean | `false` | Enable or disable user changes | | `layout` | reference to Layout widget | reference to new instance | | `max` | number (integer) | `100` | Max value | | `min` | number (integer) | `0` | Min value | | `orientation` | string (one of `'horizontal'`, `'vertical'`) | `'horizontal'` | Vertical or horizontal. | | `readout` | boolean | `true` | Display the current value of the slider next to it. | | `readout_format` | string | `'d'` | Format for the readout | | `step` | number (integer) | `1` | Minimum step that the value can take | | `style` | reference to SliderStyle widget | reference to new instance | Slider style customizations. | | `value` | array | `[0, 1]` | Tuple of (lower, upper) bounds | ### IntSliderModel (@jupyter-widgets/controls, 1.0.0); IntSliderView (@jupyter-widgets/controls, 1.0.0) | Attribute | Type | Default | Help | | ----------------------- | -------------------------------------------- | ----------------------------- | ----------------------------------------------------------------- | | `_dom_classes` | array | `[]` | CSS classes applied to widget DOM element | | `_model_module` | string | `'@jupyter-widgets/controls'` | | `_model_module_version` | string | `'1.0.0'` | | `_model_name` | string | `'IntSliderModel'` | | `_view_module` | string | `'@jupyter-widgets/controls'` | | `_view_module_version` | string | `'1.0.0'` | | `_view_name` | string | `'IntSliderView'` | | `continuous_update` | boolean | `true` | Update the value of the widget as the user is holding the slider. | | `description` | string | `''` | Description of the control. | | `disabled` | boolean | `false` | Enable or disable user changes | | `layout` | reference to Layout widget | reference to new instance | | `max` | number (integer) | `100` | Max value | | `min` | number (integer) | `0` | Min value | | `orientation` | string (one of `'horizontal'`, `'vertical'`) | `'horizontal'` | Vertical or horizontal. | | `readout` | boolean | `true` | Display the current value of the slider next to it. | | `readout_format` | string | `'d'` | Format for the readout | | `step` | number (integer) | `1` | Minimum step to increment the value | | `style` | reference to SliderStyle widget | reference to new instance | | `value` | number (integer) | `0` | Int value | ### IntTextModel (@jupyter-widgets/controls, 1.0.0); IntTextView (@jupyter-widgets/controls, 1.0.0) | Attribute | Type | Default | Help | | ----------------------- | ------------------------------------ | ----------------------------- | ------------------------------------------------------------------------------------------------------------ | | `_dom_classes` | array | `[]` | CSS classes applied to widget DOM element | | `_model_module` | string | `'@jupyter-widgets/controls'` | | `_model_module_version` | string | `'1.0.0'` | | `_model_name` | string | `'IntTextModel'` | | `_view_module` | string | `'@jupyter-widgets/controls'` | | `_view_module_version` | string | `'1.0.0'` | | `_view_name` | string | `'IntTextView'` | | `continuous_update` | boolean | `false` | Update the value as the user types. If False, update on submission, e.g., pressing Enter or navigating away. | | `description` | string | `''` | Description of the control. | | `disabled` | boolean | `false` | Enable or disable user changes | | `layout` | reference to Layout widget | reference to new instance | | `step` | number (integer) | `1` | Minimum step to increment the value | | `style` | reference to DescriptionStyle widget | reference to new instance | Styling customizations | | `value` | number (integer) | `0` | Int value | ### LabelModel (@jupyter-widgets/controls, 1.0.0); LabelView (@jupyter-widgets/controls, 1.0.0) | Attribute | Type | Default | Help | | ----------------------- | ------------------------------------ | ----------------------------- | ------------------------------------------------------- | | `_dom_classes` | array | `[]` | CSS classes applied to widget DOM element | | `_model_module` | string | `'@jupyter-widgets/controls'` | | `_model_module_version` | string | `'1.0.0'` | | `_model_name` | string | `'LabelModel'` | | `_view_module` | string | `'@jupyter-widgets/controls'` | | `_view_module_version` | string | `'1.0.0'` | | `_view_name` | string | `'LabelView'` | | `description` | string | `''` | Description of the control. | | `layout` | reference to Layout widget | reference to new instance | | `placeholder` | string | `'\u200b'` | Placeholder text to display when nothing has been typed | | `style` | reference to DescriptionStyle widget | reference to new instance | Styling customizations | | `value` | string | `''` | String value | ### LinkModel (@jupyter-widgets/controls, 1.0.0); None (@jupyter-widgets/controls, 1.0.0) | Attribute | Type | Default | Help | | ----------------------- | ---------------- | ----------------------------- | -------------------------------------- | | `_model_module` | string | `'@jupyter-widgets/controls'` | | `_model_module_version` | string | `'1.0.0'` | | `_model_name` | string | `'LinkModel'` | | `_view_module` | string | `'@jupyter-widgets/controls'` | | `_view_module_version` | string | `'1.0.0'` | | `_view_name` | `null` or string | `null` | Name of the view. | | `source` | array | `[]` | The source (widget, 'trait_name') pair | | `target` | array | `[]` | The target (widget, 'trait_name') pair | ### PasswordModel (@jupyter-widgets/controls, 1.0.0); PasswordView (@jupyter-widgets/controls, 1.0.0) | Attribute | Type | Default | Help | | ----------------------- | ------------------------------------ | ----------------------------- | ------------------------------------------------------------------------------------------------------------ | | `_dom_classes` | array | `[]` | CSS classes applied to widget DOM element | | `_model_module` | string | `'@jupyter-widgets/controls'` | | `_model_module_version` | string | `'1.0.0'` | | `_model_name` | string | `'PasswordModel'` | | `_view_module` | string | `'@jupyter-widgets/controls'` | | `_view_module_version` | string | `'1.0.0'` | | `_view_name` | string | `'PasswordView'` | | `continuous_update` | boolean | `true` | Update the value as the user types. If False, update on submission, e.g., pressing Enter or navigating away. | | `description` | string | `''` | Description of the control. | | `disabled` | boolean | `false` | Enable or disable user changes | | `layout` | reference to Layout widget | reference to new instance | | `placeholder` | string | `'\u200b'` | Placeholder text to display when nothing has been typed | | `style` | reference to DescriptionStyle widget | reference to new instance | Styling customizations | | `value` | string | `''` | String value | ### PlayModel (@jupyter-widgets/controls, 1.0.0); PlayView (@jupyter-widgets/controls, 1.0.0) | Attribute | Type | Default | Help | | ----------------------- | ------------------------------------ | ----------------------------- | ----------------------------------------------------- | | `_dom_classes` | array | `[]` | CSS classes applied to widget DOM element | | `_model_module` | string | `'@jupyter-widgets/controls'` | | `_model_module_version` | string | `'1.0.0'` | | `_model_name` | string | `'PlayModel'` | | `_playing` | boolean | `false` | Whether the control is currently playing. | | `_repeat` | boolean | `false` | Whether the control will repeat in a continuous loop. | | `_view_module` | string | `'@jupyter-widgets/controls'` | | `_view_module_version` | string | `'1.0.0'` | | `_view_name` | string | `'PlayView'` | | `description` | string | `''` | Description of the control. | | `disabled` | boolean | `false` | Enable or disable user changes | | `interval` | number (integer) | `100` | The maximum value for the play control. | | `layout` | reference to Layout widget | reference to new instance | | `max` | number (integer) | `100` | Max value | | `min` | number (integer) | `0` | Min value | | `show_repeat` | boolean | `true` | Show the repeat toggle button in the widget. | | `step` | number (integer) | `1` | Increment step | | `style` | reference to DescriptionStyle widget | reference to new instance | Styling customizations | | `value` | number (integer) | `0` | Int value | ### ProgressStyleModel (@jupyter-widgets/controls, 1.0.0); StyleView (@jupyter-widgets/base, 1.0.0) | Attribute | Type | Default | Help | | ----------------------- | ---------------- | ----------------------------- | ---------------------------------------------------- | | `_model_module` | string | `'@jupyter-widgets/controls'` | | `_model_module_version` | string | `'1.0.0'` | | `_model_name` | string | `'ProgressStyleModel'` | | `_view_module` | string | `'@jupyter-widgets/base'` | | `_view_module_version` | string | `'1.0.0'` | | `_view_name` | string | `'StyleView'` | | `bar_color` | `null` or string | `null` | Color of the progress bar. | | `description_width` | string | `''` | Width of the description to the side of the control. | ### RadioButtonsModel (@jupyter-widgets/controls, 1.0.0); RadioButtonsView (@jupyter-widgets/controls, 1.0.0) | Attribute | Type | Default | Help | | ----------------------- | ------------------------------------ | ----------------------------- | ----------------------------------------- | | `_dom_classes` | array | `[]` | CSS classes applied to widget DOM element | | `_model_module` | string | `'@jupyter-widgets/controls'` | | `_model_module_version` | string | `'1.0.0'` | | `_model_name` | string | `'RadioButtonsModel'` | | `_options_labels` | array | `[]` | The labels for the options. | | `_view_module` | string | `'@jupyter-widgets/controls'` | | `_view_module_version` | string | `'1.0.0'` | | `_view_name` | string | `'RadioButtonsView'` | | `description` | string | `''` | Description of the control. | | `disabled` | boolean | `false` | Enable or disable user changes | | `index` | `null` or number (integer) | `null` | Selected index | | `layout` | reference to Layout widget | reference to new instance | | `style` | reference to DescriptionStyle widget | reference to new instance | Styling customizations | ### SelectModel (@jupyter-widgets/controls, 1.0.0); SelectView (@jupyter-widgets/controls, 1.0.0) | Attribute | Type | Default | Help | | ----------------------- | ------------------------------------ | ----------------------------- | ----------------------------------------- | | `_dom_classes` | array | `[]` | CSS classes applied to widget DOM element | | `_model_module` | string | `'@jupyter-widgets/controls'` | | `_model_module_version` | string | `'1.0.0'` | | `_model_name` | string | `'SelectModel'` | | `_options_labels` | array | `[]` | The labels for the options. | | `_view_module` | string | `'@jupyter-widgets/controls'` | | `_view_module_version` | string | `'1.0.0'` | | `_view_name` | string | `'SelectView'` | | `description` | string | `''` | Description of the control. | | `disabled` | boolean | `false` | Enable or disable user changes | | `index` | `null` or number (integer) | `null` | Selected index | | `layout` | reference to Layout widget | reference to new instance | | `rows` | number (integer) | `5` | The number of rows to display. | | `style` | reference to DescriptionStyle widget | reference to new instance | Styling customizations | ### SelectMultipleModel (@jupyter-widgets/controls, 1.0.0); SelectMultipleView (@jupyter-widgets/controls, 1.0.0) | Attribute | Type | Default | Help | | ----------------------- | ------------------------------------ | ----------------------------- | ----------------------------------------- | | `_dom_classes` | array | `[]` | CSS classes applied to widget DOM element | | `_model_module` | string | `'@jupyter-widgets/controls'` | | `_model_module_version` | string | `'1.0.0'` | | `_model_name` | string | `'SelectMultipleModel'` | | `_options_labels` | array | `[]` | The labels for the options. | | `_view_module` | string | `'@jupyter-widgets/controls'` | | `_view_module_version` | string | `'1.0.0'` | | `_view_name` | string | `'SelectMultipleView'` | | `description` | string | `''` | Description of the control. | | `disabled` | boolean | `false` | Enable or disable user changes | | `index` | array | `[]` | Selected indices | | `layout` | reference to Layout widget | reference to new instance | | `rows` | number (integer) | `5` | The number of rows to display. | | `style` | reference to DescriptionStyle widget | reference to new instance | Styling customizations | ### SelectionRangeSliderModel (@jupyter-widgets/controls, 1.0.0); SelectionRangeSliderView (@jupyter-widgets/controls, 1.0.0) | Attribute | Type | Default | Help | | ----------------------- | -------------------------------------------- | ----------------------------- | ----------------------------------------------------------------- | | `_dom_classes` | array | `[]` | CSS classes applied to widget DOM element | | `_model_module` | string | `'@jupyter-widgets/controls'` | | `_model_module_version` | string | `'1.0.0'` | | `_model_name` | string | `'SelectionRangeSliderModel'` | | `_options_labels` | array | `[]` | The labels for the options. | | `_view_module` | string | `'@jupyter-widgets/controls'` | | `_view_module_version` | string | `'1.0.0'` | | `_view_name` | string | `'SelectionRangeSliderView'` | | `continuous_update` | boolean | `true` | Update the value of the widget as the user is holding the slider. | | `description` | string | `''` | Description of the control. | | `disabled` | boolean | `false` | Enable or disable user changes | | `index` | array | `[0, 0]` | Min and max selected indices | | `layout` | reference to Layout widget | reference to new instance | | `orientation` | string (one of `'horizontal'`, `'vertical'`) | `'horizontal'` | Vertical or horizontal. | | `readout` | boolean | `true` | Display the current selected label next to the slider | | `style` | reference to DescriptionStyle widget | reference to new instance | Styling customizations | ### SelectionSliderModel (@jupyter-widgets/controls, 1.0.0); SelectionSliderView (@jupyter-widgets/controls, 1.0.0) | Attribute | Type | Default | Help | | ----------------------- | -------------------------------------------- | ----------------------------- | ----------------------------------------------------------------- | | `_dom_classes` | array | `[]` | CSS classes applied to widget DOM element | | `_model_module` | string | `'@jupyter-widgets/controls'` | | `_model_module_version` | string | `'1.0.0'` | | `_model_name` | string | `'SelectionSliderModel'` | | `_options_labels` | array | `[]` | The labels for the options. | | `_view_module` | string | `'@jupyter-widgets/controls'` | | `_view_module_version` | string | `'1.0.0'` | | `_view_name` | string | `'SelectionSliderView'` | | `continuous_update` | boolean | `true` | Update the value of the widget as the user is holding the slider. | | `description` | string | `''` | Description of the control. | | `disabled` | boolean | `false` | Enable or disable user changes | | `index` | number (integer) | `0` | Selected index | | `layout` | reference to Layout widget | reference to new instance | | `orientation` | string (one of `'horizontal'`, `'vertical'`) | `'horizontal'` | Vertical or horizontal. | | `readout` | boolean | `true` | Display the current selected label next to the slider | | `style` | reference to DescriptionStyle widget | reference to new instance | Styling customizations | ### SliderStyleModel (@jupyter-widgets/controls, 1.0.0); StyleView (@jupyter-widgets/base, 1.0.0) | Attribute | Type | Default | Help | | ----------------------- | ---------------- | ----------------------------- | ---------------------------------------------------- | | `_model_module` | string | `'@jupyter-widgets/controls'` | | `_model_module_version` | string | `'1.0.0'` | | `_model_name` | string | `'SliderStyleModel'` | | `_view_module` | string | `'@jupyter-widgets/base'` | | `_view_module_version` | string | `'1.0.0'` | | `_view_name` | string | `'StyleView'` | | `description_width` | string | `''` | Width of the description to the side of the control. | | `handle_color` | `null` or string | `null` | Color of the slider handle. | ### TabModel (@jupyter-widgets/controls, 1.0.0); TabView (@jupyter-widgets/controls, 1.0.0) | Attribute | Type | Default | Help | | ----------------------- | -------------------------------------------------------------------- | ----------------------------- | --------------------------------------------------------------------------------------------------------------------------------- | | `_dom_classes` | array | `[]` | CSS classes applied to widget DOM element | | `_model_module` | string | `'@jupyter-widgets/controls'` | | `_model_module_version` | string | `'1.0.0'` | | `_model_name` | string | `'TabModel'` | | `_titles` | object | `{}` | Titles of the pages | | `_view_module` | string | `'@jupyter-widgets/controls'` | | `_view_module_version` | string | `'1.0.0'` | | `_view_name` | string | `'TabView'` | | `box_style` | string (one of `'success'`, `'info'`, `'warning'`, `'danger'`, `''`) | `''` | Use a predefined styling for the box. | | `children` | array | `[]` | List of widget children | | `layout` | reference to Layout widget | reference to new instance | | `selected_index` | `null` or number (integer) | `0` | The index of the selected page. This is either an integer selecting a particular sub-widget, or None to have no widgets selected. | ### TextModel (@jupyter-widgets/controls, 1.0.0); TextView (@jupyter-widgets/controls, 1.0.0) | Attribute | Type | Default | Help | | ----------------------- | ------------------------------------ | ----------------------------- | ------------------------------------------------------------------------------------------------------------ | | `_dom_classes` | array | `[]` | CSS classes applied to widget DOM element | | `_model_module` | string | `'@jupyter-widgets/controls'` | | `_model_module_version` | string | `'1.0.0'` | | `_model_name` | string | `'TextModel'` | | `_view_module` | string | `'@jupyter-widgets/controls'` | | `_view_module_version` | string | `'1.0.0'` | | `_view_name` | string | `'TextView'` | | `continuous_update` | boolean | `true` | Update the value as the user types. If False, update on submission, e.g., pressing Enter or navigating away. | | `description` | string | `''` | Description of the control. | | `disabled` | boolean | `false` | Enable or disable user changes | | `layout` | reference to Layout widget | reference to new instance | | `placeholder` | string | `'\u200b'` | Placeholder text to display when nothing has been typed | | `style` | reference to DescriptionStyle widget | reference to new instance | Styling customizations | | `value` | string | `''` | String value | ### TextareaModel (@jupyter-widgets/controls, 1.0.0); TextareaView (@jupyter-widgets/controls, 1.0.0) | Attribute | Type | Default | Help | | ----------------------- | ------------------------------------ | ----------------------------- | ------------------------------------------------------------------------------------------------------------ | | `_dom_classes` | array | `[]` | CSS classes applied to widget DOM element | | `_model_module` | string | `'@jupyter-widgets/controls'` | | `_model_module_version` | string | `'1.0.0'` | | `_model_name` | string | `'TextareaModel'` | | `_view_module` | string | `'@jupyter-widgets/controls'` | | `_view_module_version` | string | `'1.0.0'` | | `_view_name` | string | `'TextareaView'` | | `continuous_update` | boolean | `true` | Update the value as the user types. If False, update on submission, e.g., pressing Enter or navigating away. | | `description` | string | `''` | Description of the control. | | `disabled` | boolean | `false` | Enable or disable user changes | | `layout` | reference to Layout widget | reference to new instance | | `placeholder` | string | `'\u200b'` | Placeholder text to display when nothing has been typed | | `rows` | `null` or number (integer) | `null` | The number of rows to display. | | `style` | reference to DescriptionStyle widget | reference to new instance | Styling customizations | | `value` | string | `''` | String value | ### ToggleButtonModel (@jupyter-widgets/controls, 1.0.0); ToggleButtonView (@jupyter-widgets/controls, 1.0.0) | Attribute | Type | Default | Help | | ----------------------- | --------------------------------------------------------------------------------- | ----------------------------- | ----------------------------------------- | | `_dom_classes` | array | `[]` | CSS classes applied to widget DOM element | | `_model_module` | string | `'@jupyter-widgets/controls'` | | `_model_module_version` | string | `'1.0.0'` | | `_model_name` | string | `'ToggleButtonModel'` | | `_view_module` | string | `'@jupyter-widgets/controls'` | | `_view_module_version` | string | `'1.0.0'` | | `_view_name` | string | `'ToggleButtonView'` | | `button_style` | string (one of `'primary'`, `'success'`, `'info'`, `'warning'`, `'danger'`, `''`) | `''` | Use a predefined styling for the button. | | `description` | string | `''` | Description of the control. | | `disabled` | boolean | `false` | Enable or disable user changes. | | `icon` | string | `''` | Font-awesome icon. | | `layout` | reference to Layout widget | reference to new instance | | `style` | reference to DescriptionStyle widget | reference to new instance | Styling customizations | | `tooltip` | string | `''` | Tooltip caption of the toggle button. | | `value` | boolean | `false` | Bool value | ### ToggleButtonsModel (@jupyter-widgets/controls, 1.0.0); ToggleButtonsView (@jupyter-widgets/controls, 1.0.0) | Attribute | Type | Default | Help | | ----------------------- | ------------------------------------------------------------------------------------------- | ----------------------------- | ----------------------------------------------------------------------- | | `_dom_classes` | array | `[]` | CSS classes applied to widget DOM element | | `_model_module` | string | `'@jupyter-widgets/controls'` | | `_model_module_version` | string | `'1.0.0'` | | `_model_name` | string | `'ToggleButtonsModel'` | | `_options_labels` | array | `[]` | The labels for the options. | | `_view_module` | string | `'@jupyter-widgets/controls'` | | `_view_module_version` | string | `'1.0.0'` | | `_view_name` | string | `'ToggleButtonsView'` | | `button_style` | `null` or string (one of `'primary'`, `'success'`, `'info'`, `'warning'`, `'danger'`, `''`) | `''` | Use a predefined styling for the buttons. | | `description` | string | `''` | Description of the control. | | `disabled` | boolean | `false` | Enable or disable user changes | | `icons` | array | `[]` | Icons names for each button (FontAwesome names without the fa- prefix). | | `index` | `null` or number (integer) | `null` | Selected index | | `layout` | reference to Layout widget | reference to new instance | | `style` | reference to ToggleButtonsStyle widget | reference to new instance | | `tooltips` | array | `[]` | Tooltips for each button. | ### ToggleButtonsStyleModel (@jupyter-widgets/controls, 1.0.0); StyleView (@jupyter-widgets/base, 1.0.0) | Attribute | Type | Default | Help | | ----------------------- | ------ | ----------------------------- | ------------------------- | | `_model_module` | string | `'@jupyter-widgets/controls'` | | `_model_module_version` | string | `'1.0.0'` | | `_model_name` | string | `'ToggleButtonsStyleModel'` | | `_view_module` | string | `'@jupyter-widgets/base'` | | `_view_module_version` | string | `'1.0.0'` | | `_view_name` | string | `'StyleView'` | | `button_width` | string | `''` | The width of each button. | ### VBoxModel (@jupyter-widgets/controls, 1.0.0); VBoxView (@jupyter-widgets/controls, 1.0.0) | Attribute | Type | Default | Help | | ----------------------- | -------------------------------------------------------------------- | ----------------------------- | ----------------------------------------- | | `_dom_classes` | array | `[]` | CSS classes applied to widget DOM element | | `_model_module` | string | `'@jupyter-widgets/controls'` | | `_model_module_version` | string | `'1.0.0'` | | `_model_name` | string | `'VBoxModel'` | | `_view_module` | string | `'@jupyter-widgets/controls'` | | `_view_module_version` | string | `'1.0.0'` | | `_view_name` | string | `'VBoxView'` | | `box_style` | string (one of `'success'`, `'info'`, `'warning'`, `'danger'`, `''`) | `''` | Use a predefined styling for the box. | | `children` | array | `[]` | List of widget children | | `layout` | reference to Layout widget | reference to new instance | ### ValidModel (@jupyter-widgets/controls, 1.0.0); ValidView (@jupyter-widgets/controls, 1.0.0) | Attribute | Type | Default | Help | | ----------------------- | ------------------------------------ | ----------------------------- | ----------------------------------------- | | `_dom_classes` | array | `[]` | CSS classes applied to widget DOM element | | `_model_module` | string | `'@jupyter-widgets/controls'` | | `_model_module_version` | string | `'1.0.0'` | | `_model_name` | string | `'ValidModel'` | | `_view_module` | string | `'@jupyter-widgets/controls'` | | `_view_module_version` | string | `'1.0.0'` | | `_view_name` | string | `'ValidView'` | | `description` | string | `''` | Description of the control. | | `disabled` | boolean | `false` | Enable or disable user changes. | | `layout` | reference to Layout widget | reference to new instance | | `readout` | string | `'Invalid'` | Message displayed when the value is False | | `style` | reference to DescriptionStyle widget | reference to new instance | Styling customizations | | `value` | boolean | `false` | Bool value | ### OutputModel (@jupyter-widgets/output, 1.0.0); OutputView (@jupyter-widgets/output, 1.0.0) | Attribute | Type | Default | Help | | ----------------------- | -------------------------- | --------------------------- | --------------------------------------------- | | `_dom_classes` | array | `[]` | CSS classes applied to widget DOM element | | `_model_module` | string | `'@jupyter-widgets/output'` | | `_model_module_version` | string | `'1.0.0'` | | `_model_name` | string | `'OutputModel'` | | `_view_module` | string | `'@jupyter-widgets/output'` | | `_view_module_version` | string | `'1.0.0'` | | `_view_name` | string | `'OutputView'` | | `layout` | reference to Layout widget | reference to new instance | | `msg_id` | string | `''` | Parent message id of messages to capture | | `outputs` | array | `[]` | The output messages synced from the frontend. | ipywidgets-8.1.1/packages/schema/jupyterwidgetmodels.v8.md000066400000000000000000006054661450026722000237360ustar00rootroot00000000000000# Model State This is a description of the model state for each widget in the core Jupyter widgets library. The model ID of a widget is the id of the comm object the widget is using. A reference to a widget is serialized to JSON as a string of the form `"IPY_MODEL_"`, where `` is the model ID of a previously created widget of the specified type. This model specification is for ipywidgets 8. ## Model attributes Each widget in the Jupyter core widgets is represented below. The heading represents the model name, module, and version, view name, module, and version that the widget is registered with. ### LayoutModel (@jupyter-widgets/base, 2.0.0); LayoutView (@jupyter-widgets/base, 2.0.0) | Attribute | Type | Default | Help | | ----------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------- | ---------------------------------------------------------------- | | `_model_module` | string | `'@jupyter-widgets/base'` | The namespace for the model. | | `_model_module_version` | string | `'2.0.0'` | A semver requirement for namespace version containing the model. | | `_model_name` | string | `'LayoutModel'` | | `_view_module` | string | `'@jupyter-widgets/base'` | | `_view_module_version` | string | `'2.0.0'` | | `_view_name` | string | `'LayoutView'` | | `align_content` | `null` or string (one of `'flex-start'`, `'flex-end'`, `'center'`, `'space-between'`, `'space-around'`, `'space-evenly'`, `'stretch'`, `'inherit'`, `'initial'`, `'unset'`) | `null` | The align-content CSS attribute. | | `align_items` | `null` or string (one of `'flex-start'`, `'flex-end'`, `'center'`, `'baseline'`, `'stretch'`, `'inherit'`, `'initial'`, `'unset'`) | `null` | The align-items CSS attribute. | | `align_self` | `null` or string (one of `'auto'`, `'flex-start'`, `'flex-end'`, `'center'`, `'baseline'`, `'stretch'`, `'inherit'`, `'initial'`, `'unset'`) | `null` | The align-self CSS attribute. | | `border_bottom` | `null` or string | `null` | The border bottom CSS attribute. | | `border_left` | `null` or string | `null` | The border left CSS attribute. | | `border_right` | `null` or string | `null` | The border right CSS attribute. | | `border_top` | `null` or string | `null` | The border top CSS attribute. | | `bottom` | `null` or string | `null` | The bottom CSS attribute. | | `display` | `null` or string | `null` | The display CSS attribute. | | `flex` | `null` or string | `null` | The flex CSS attribute. | | `flex_flow` | `null` or string | `null` | The flex-flow CSS attribute. | | `grid_area` | `null` or string | `null` | The grid-area CSS attribute. | | `grid_auto_columns` | `null` or string | `null` | The grid-auto-columns CSS attribute. | | `grid_auto_flow` | `null` or string (one of `'column'`, `'row'`, `'row dense'`, `'column dense'`, `'inherit'`, `'initial'`, `'unset'`) | `null` | The grid-auto-flow CSS attribute. | | `grid_auto_rows` | `null` or string | `null` | The grid-auto-rows CSS attribute. | | `grid_column` | `null` or string | `null` | The grid-column CSS attribute. | | `grid_gap` | `null` or string | `null` | The grid-gap CSS attribute. | | `grid_row` | `null` or string | `null` | The grid-row CSS attribute. | | `grid_template_areas` | `null` or string | `null` | The grid-template-areas CSS attribute. | | `grid_template_columns` | `null` or string | `null` | The grid-template-columns CSS attribute. | | `grid_template_rows` | `null` or string | `null` | The grid-template-rows CSS attribute. | | `height` | `null` or string | `null` | The height CSS attribute. | | `justify_content` | `null` or string (one of `'flex-start'`, `'flex-end'`, `'center'`, `'space-between'`, `'space-around'`, `'inherit'`, `'initial'`, `'unset'`) | `null` | The justify-content CSS attribute. | | `justify_items` | `null` or string (one of `'flex-start'`, `'flex-end'`, `'center'`, `'inherit'`, `'initial'`, `'unset'`) | `null` | The justify-items CSS attribute. | | `left` | `null` or string | `null` | The left CSS attribute. | | `margin` | `null` or string | `null` | The margin CSS attribute. | | `max_height` | `null` or string | `null` | The max-height CSS attribute. | | `max_width` | `null` or string | `null` | The max-width CSS attribute. | | `min_height` | `null` or string | `null` | The min-height CSS attribute. | | `min_width` | `null` or string | `null` | The min-width CSS attribute. | | `object_fit` | `null` or string (one of `'contain'`, `'cover'`, `'fill'`, `'scale-down'`, `'none'`) | `null` | The object-fit CSS attribute. | | `object_position` | `null` or string | `null` | The object-position CSS attribute. | | `order` | `null` or string | `null` | The order CSS attribute. | | `overflow` | `null` or string | `null` | The overflow CSS attribute. | | `padding` | `null` or string | `null` | The padding CSS attribute. | | `right` | `null` or string | `null` | The right CSS attribute. | | `top` | `null` or string | `null` | The top CSS attribute. | | `visibility` | `null` or string (one of `'visible'`, `'hidden'`, `'inherit'`, `'initial'`, `'unset'`) | `null` | The visibility CSS attribute. | | `width` | `null` or string | `null` | The width CSS attribute. | ### AccordionModel (@jupyter-widgets/controls, 2.0.0); AccordionView (@jupyter-widgets/controls, 2.0.0) | Attribute | Type | Default | Help | | ----------------------- | -------------------------------------------------------------------- | ----------------------------- | --------------------------------------------------------------------------------------------------------------------------------- | | `_dom_classes` | array of string | `[]` | CSS classes applied to widget DOM element | | `_model_module` | string | `'@jupyter-widgets/controls'` | | `_model_module_version` | string | `'2.0.0'` | | `_model_name` | string | `'AccordionModel'` | | `_view_module` | string | `'@jupyter-widgets/controls'` | | `_view_module_version` | string | `'2.0.0'` | | `_view_name` | string | `'AccordionView'` | | `box_style` | string (one of `'success'`, `'info'`, `'warning'`, `'danger'`, `''`) | `''` | Use a predefined styling for the box. | | `children` | array of reference to Widget widget | `[]` | List of widget children | | `layout` | reference to Layout widget | reference to new instance | | `selected_index` | `null` or number (integer) | `null` | The index of the selected page. This is either an integer selecting a particular sub-widget, or None to have no widgets selected. | | `tabbable` | `null` or boolean | `null` | Is widget tabbable? | | `titles` | array of string | `[]` | Titles of the pages | | `tooltip` | `null` or string | `null` | A tooltip caption. | ### AudioModel (@jupyter-widgets/controls, 2.0.0); AudioView (@jupyter-widgets/controls, 2.0.0) | Attribute | Type | Default | Help | | ----------------------- | -------------------------- | ----------------------------- | ----------------------------------------------------------------------------------- | | `_dom_classes` | array of string | `[]` | CSS classes applied to widget DOM element | | `_model_module` | string | `'@jupyter-widgets/controls'` | | `_model_module_version` | string | `'2.0.0'` | | `_model_name` | string | `'AudioModel'` | | `_view_module` | string | `'@jupyter-widgets/controls'` | | `_view_module_version` | string | `'2.0.0'` | | `_view_name` | string | `'AudioView'` | | `autoplay` | boolean | `true` | When true, the audio starts when it's displayed | | `controls` | boolean | `true` | Specifies that audio controls should be displayed (such as a play/pause button etc) | | `format` | string | `'mp3'` | The format of the audio. | | `layout` | reference to Layout widget | reference to new instance | | `loop` | boolean | `true` | When true, the audio will start from the beginning after finishing | | `tabbable` | `null` or boolean | `null` | Is widget tabbable? | | `tooltip` | `null` or string | `null` | A tooltip caption. | | `value` | Bytes | `b''` | The media data as a memory view of bytes. | ### BoundedFloatTextModel (@jupyter-widgets/controls, 2.0.0); FloatTextView (@jupyter-widgets/controls, 2.0.0) | Attribute | Type | Default | Help | | ------------------------ | ------------------------------------ | ----------------------------- | ------------------------------------------------------------------------------------------------------------ | | `_dom_classes` | array of string | `[]` | CSS classes applied to widget DOM element | | `_model_module` | string | `'@jupyter-widgets/controls'` | | `_model_module_version` | string | `'2.0.0'` | | `_model_name` | string | `'BoundedFloatTextModel'` | | `_view_module` | string | `'@jupyter-widgets/controls'` | | `_view_module_version` | string | `'2.0.0'` | | `_view_name` | string | `'FloatTextView'` | | `continuous_update` | boolean | `false` | Update the value as the user types. If False, update on submission, e.g., pressing Enter or navigating away. | | `description` | string | `''` | Description of the control. | | `description_allow_html` | boolean | `false` | Accept HTML in the description. | | `disabled` | boolean | `false` | Enable or disable user changes | | `layout` | reference to Layout widget | reference to new instance | | `max` | number (float) | `100.0` | Max value | | `min` | number (float) | `0.0` | Min value | | `step` | `null` or number (float) | `null` | Minimum step to increment the value | | `style` | reference to DescriptionStyle widget | reference to new instance | Styling customizations | | `tabbable` | `null` or boolean | `null` | Is widget tabbable? | | `tooltip` | `null` or string | `null` | A tooltip caption. | | `value` | number (float) | `0.0` | Float value | ### BoundedIntTextModel (@jupyter-widgets/controls, 2.0.0); IntTextView (@jupyter-widgets/controls, 2.0.0) | Attribute | Type | Default | Help | | ------------------------ | ------------------------------------ | ----------------------------- | ------------------------------------------------------------------------------------------------------------ | | `_dom_classes` | array of string | `[]` | CSS classes applied to widget DOM element | | `_model_module` | string | `'@jupyter-widgets/controls'` | | `_model_module_version` | string | `'2.0.0'` | | `_model_name` | string | `'BoundedIntTextModel'` | | `_view_module` | string | `'@jupyter-widgets/controls'` | | `_view_module_version` | string | `'2.0.0'` | | `_view_name` | string | `'IntTextView'` | | `continuous_update` | boolean | `false` | Update the value as the user types. If False, update on submission, e.g., pressing Enter or navigating away. | | `description` | string | `''` | Description of the control. | | `description_allow_html` | boolean | `false` | Accept HTML in the description. | | `disabled` | boolean | `false` | Enable or disable user changes | | `layout` | reference to Layout widget | reference to new instance | | `max` | number (integer) | `100` | Max value | | `min` | number (integer) | `0` | Min value | | `step` | number (integer) | `1` | Minimum step to increment the value | | `style` | reference to DescriptionStyle widget | reference to new instance | Styling customizations | | `tabbable` | `null` or boolean | `null` | Is widget tabbable? | | `tooltip` | `null` or string | `null` | A tooltip caption. | | `value` | number (integer) | `0` | Int value | ### BoxModel (@jupyter-widgets/controls, 2.0.0); BoxView (@jupyter-widgets/controls, 2.0.0) | Attribute | Type | Default | Help | | ----------------------- | -------------------------------------------------------------------- | ----------------------------- | ----------------------------------------- | | `_dom_classes` | array of string | `[]` | CSS classes applied to widget DOM element | | `_model_module` | string | `'@jupyter-widgets/controls'` | | `_model_module_version` | string | `'2.0.0'` | | `_model_name` | string | `'BoxModel'` | | `_view_module` | string | `'@jupyter-widgets/controls'` | | `_view_module_version` | string | `'2.0.0'` | | `_view_name` | string | `'BoxView'` | | `box_style` | string (one of `'success'`, `'info'`, `'warning'`, `'danger'`, `''`) | `''` | Use a predefined styling for the box. | | `children` | array of reference to Widget widget | `[]` | List of widget children | | `layout` | reference to Layout widget | reference to new instance | | `tabbable` | `null` or boolean | `null` | Is widget tabbable? | | `tooltip` | `null` or string | `null` | A tooltip caption. | ### ButtonModel (@jupyter-widgets/controls, 2.0.0); ButtonView (@jupyter-widgets/controls, 2.0.0) | Attribute | Type | Default | Help | | ----------------------- | --------------------------------------------------------------------------------- | ----------------------------- | -------------------------------------------------- | | `_dom_classes` | array of string | `[]` | CSS classes applied to widget DOM element | | `_model_module` | string | `'@jupyter-widgets/controls'` | | `_model_module_version` | string | `'2.0.0'` | | `_model_name` | string | `'ButtonModel'` | | `_view_module` | string | `'@jupyter-widgets/controls'` | | `_view_module_version` | string | `'2.0.0'` | | `_view_name` | string | `'ButtonView'` | | `button_style` | string (one of `'primary'`, `'success'`, `'info'`, `'warning'`, `'danger'`, `''`) | `''` | Use a predefined styling for the button. | | `description` | string | `''` | Button label. | | `disabled` | boolean | `false` | Enable or disable user changes. | | `icon` | string | `''` | Font-awesome icon names, without the 'fa-' prefix. | | `layout` | reference to Layout widget | reference to new instance | | `style` | reference to ButtonStyle widget | reference to new instance | | `tabbable` | `null` or boolean | `null` | Is widget tabbable? | | `tooltip` | `null` or string | `null` | A tooltip caption. | ### ButtonStyleModel (@jupyter-widgets/controls, 2.0.0); StyleView (@jupyter-widgets/base, 2.0.0) | Attribute | Type | Default | Help | | ----------------------- | ---------------- | ----------------------------- | ------------------------- | | `_model_module` | string | `'@jupyter-widgets/controls'` | | `_model_module_version` | string | `'2.0.0'` | | `_model_name` | string | `'ButtonStyleModel'` | | `_view_module` | string | `'@jupyter-widgets/base'` | | `_view_module_version` | string | `'2.0.0'` | | `_view_name` | string | `'StyleView'` | | `button_color` | `null` or string | `null` | Color of the button | | `font_family` | `null` or string | `null` | Button text font family. | | `font_size` | `null` or string | `null` | Button text font size. | | `font_style` | `null` or string | `null` | Button text font style. | | `font_variant` | `null` or string | `null` | Button text font variant. | | `font_weight` | `null` or string | `null` | Button text font weight. | | `text_color` | `null` or string | `null` | Button text color. | | `text_decoration` | `null` or string | `null` | Button text decoration. | ### CheckboxModel (@jupyter-widgets/controls, 2.0.0); CheckboxView (@jupyter-widgets/controls, 2.0.0) | Attribute | Type | Default | Help | | ------------------------ | --------------------------------- | ----------------------------- | ------------------------------------------------------------------- | | `_dom_classes` | array of string | `[]` | CSS classes applied to widget DOM element | | `_model_module` | string | `'@jupyter-widgets/controls'` | | `_model_module_version` | string | `'2.0.0'` | | `_model_name` | string | `'CheckboxModel'` | | `_view_module` | string | `'@jupyter-widgets/controls'` | | `_view_module_version` | string | `'2.0.0'` | | `_view_name` | string | `'CheckboxView'` | | `description` | string | `''` | Description of the control. | | `description_allow_html` | boolean | `false` | Accept HTML in the description. | | `disabled` | boolean | `false` | Enable or disable user changes. | | `indent` | boolean | `true` | Indent the control to align with other controls with a description. | | `layout` | reference to Layout widget | reference to new instance | | `style` | reference to CheckboxStyle widget | reference to new instance | Styling customizations | | `tabbable` | `null` or boolean | `null` | Is widget tabbable? | | `tooltip` | `null` or string | `null` | A tooltip caption. | | `value` | boolean | `false` | Bool value | ### CheckboxStyleModel (@jupyter-widgets/controls, 2.0.0); StyleView (@jupyter-widgets/base, 2.0.0) | Attribute | Type | Default | Help | | ----------------------- | ---------------- | ----------------------------- | ---------------------------------------------------- | | `_model_module` | string | `'@jupyter-widgets/controls'` | | `_model_module_version` | string | `'2.0.0'` | | `_model_name` | string | `'CheckboxStyleModel'` | | `_view_module` | string | `'@jupyter-widgets/base'` | | `_view_module_version` | string | `'2.0.0'` | | `_view_name` | string | `'StyleView'` | | `background` | `null` or string | `null` | Background specifications. | | `description_width` | string | `''` | Width of the description to the side of the control. | ### ColorPickerModel (@jupyter-widgets/controls, 2.0.0); ColorPickerView (@jupyter-widgets/controls, 2.0.0) | Attribute | Type | Default | Help | | ------------------------ | ------------------------------------ | ----------------------------- | ------------------------------------------------- | | `_dom_classes` | array of string | `[]` | CSS classes applied to widget DOM element | | `_model_module` | string | `'@jupyter-widgets/controls'` | | `_model_module_version` | string | `'2.0.0'` | | `_model_name` | string | `'ColorPickerModel'` | | `_view_module` | string | `'@jupyter-widgets/controls'` | | `_view_module_version` | string | `'2.0.0'` | | `_view_name` | string | `'ColorPickerView'` | | `concise` | boolean | `false` | Display short version with just a color selector. | | `description` | string | `''` | Description of the control. | | `description_allow_html` | boolean | `false` | Accept HTML in the description. | | `disabled` | boolean | `false` | Enable or disable user changes. | | `layout` | reference to Layout widget | reference to new instance | | `style` | reference to DescriptionStyle widget | reference to new instance | Styling customizations | | `tabbable` | `null` or boolean | `null` | Is widget tabbable? | | `tooltip` | `null` or string | `null` | A tooltip caption. | | `value` | string | `'black'` | The color value. | ### ColorsInputModel (@jupyter-widgets/controls, 2.0.0); ColorsInputView (@jupyter-widgets/controls, 2.0.0) | Attribute | Type | Default | Help | | ------------------------ | ------------------------------------ | ----------------------------- | ----------------------------------------- | | `_dom_classes` | array of string | `[]` | CSS classes applied to widget DOM element | | `_model_module` | string | `'@jupyter-widgets/controls'` | | `_model_module_version` | string | `'2.0.0'` | | `_model_name` | string | `'ColorsInputModel'` | | `_view_module` | string | `'@jupyter-widgets/controls'` | | `_view_module_version` | string | `'2.0.0'` | | `_view_name` | string | `'ColorsInputView'` | | `allow_duplicates` | boolean | `true` | | `allowed_tags` | array | `[]` | | `description` | string | `''` | Description of the control. | | `description_allow_html` | boolean | `false` | Accept HTML in the description. | | `layout` | reference to Layout widget | reference to new instance | | `placeholder` | string | `'\u200b'` | | `style` | reference to DescriptionStyle widget | reference to new instance | Styling customizations | | `tabbable` | `null` or boolean | `null` | Is widget tabbable? | | `tooltip` | `null` or string | `null` | A tooltip caption. | | `value` | array | `[]` | List of string tags | ### ComboboxModel (@jupyter-widgets/controls, 2.0.0); ComboboxView (@jupyter-widgets/controls, 2.0.0) | Attribute | Type | Default | Help | | ------------------------ | ----------------------------- | ----------------------------- | ------------------------------------------------------------------------------------------------------------ | | `_dom_classes` | array of string | `[]` | CSS classes applied to widget DOM element | | `_model_module` | string | `'@jupyter-widgets/controls'` | | `_model_module_version` | string | `'2.0.0'` | | `_model_name` | string | `'ComboboxModel'` | | `_view_module` | string | `'@jupyter-widgets/controls'` | | `_view_module_version` | string | `'2.0.0'` | | `_view_name` | string | `'ComboboxView'` | | `continuous_update` | boolean | `true` | Update the value as the user types. If False, update on submission, e.g., pressing Enter or navigating away. | | `description` | string | `''` | Description of the control. | | `description_allow_html` | boolean | `false` | Accept HTML in the description. | | `disabled` | boolean | `false` | Enable or disable user changes | | `ensure_option` | boolean | `false` | If set, ensure value is in options. Implies continuous_update=False. | | `layout` | reference to Layout widget | reference to new instance | | `options` | array of string | `[]` | Dropdown options for the combobox | | `placeholder` | string | `'\u200b'` | Placeholder text to display when nothing has been typed | | `style` | reference to TextStyle widget | reference to new instance | | `tabbable` | `null` or boolean | `null` | Is widget tabbable? | | `tooltip` | `null` or string | `null` | A tooltip caption. | | `value` | string | `''` | String value | ### ControllerAxisModel (@jupyter-widgets/controls, 2.0.0); ControllerAxisView (@jupyter-widgets/controls, 2.0.0) | Attribute | Type | Default | Help | | ----------------------- | -------------------------- | ----------------------------- | ----------------------------------------- | | `_dom_classes` | array of string | `[]` | CSS classes applied to widget DOM element | | `_model_module` | string | `'@jupyter-widgets/controls'` | | `_model_module_version` | string | `'2.0.0'` | | `_model_name` | string | `'ControllerAxisModel'` | | `_view_module` | string | `'@jupyter-widgets/controls'` | | `_view_module_version` | string | `'2.0.0'` | | `_view_name` | string | `'ControllerAxisView'` | | `layout` | reference to Layout widget | reference to new instance | | `tabbable` | `null` or boolean | `null` | Is widget tabbable? | | `tooltip` | `null` or string | `null` | A tooltip caption. | | `value` | number (float) | `0.0` | The value of the axis. | ### ControllerButtonModel (@jupyter-widgets/controls, 2.0.0); ControllerButtonView (@jupyter-widgets/controls, 2.0.0) | Attribute | Type | Default | Help | | ----------------------- | -------------------------- | ----------------------------- | ----------------------------------------- | | `_dom_classes` | array of string | `[]` | CSS classes applied to widget DOM element | | `_model_module` | string | `'@jupyter-widgets/controls'` | | `_model_module_version` | string | `'2.0.0'` | | `_model_name` | string | `'ControllerButtonModel'` | | `_view_module` | string | `'@jupyter-widgets/controls'` | | `_view_module_version` | string | `'2.0.0'` | | `_view_name` | string | `'ControllerButtonView'` | | `layout` | reference to Layout widget | reference to new instance | | `pressed` | boolean | `false` | Whether the button is pressed. | | `tabbable` | `null` or boolean | `null` | Is widget tabbable? | | `tooltip` | `null` or string | `null` | A tooltip caption. | | `value` | number (float) | `0.0` | The value of the button. | ### ControllerModel (@jupyter-widgets/controls, 2.0.0); ControllerView (@jupyter-widgets/controls, 2.0.0) | Attribute | Type | Default | Help | | ----------------------- | ----------------------------------- | ----------------------------- | ----------------------------------------------------- | | `_dom_classes` | array of string | `[]` | CSS classes applied to widget DOM element | | `_model_module` | string | `'@jupyter-widgets/controls'` | | `_model_module_version` | string | `'2.0.0'` | | `_model_name` | string | `'ControllerModel'` | | `_view_module` | string | `'@jupyter-widgets/controls'` | | `_view_module_version` | string | `'2.0.0'` | | `_view_name` | string | `'ControllerView'` | | `axes` | array of reference to Axis widget | `[]` | The axes on the gamepad. | | `buttons` | array of reference to Button widget | `[]` | The buttons on the gamepad. | | `connected` | boolean | `false` | Whether the gamepad is connected. | | `index` | number (integer) | `0` | The id number of the controller. | | `layout` | reference to Layout widget | reference to new instance | | `mapping` | string | `''` | The name of the control mapping. | | `name` | string | `''` | The name of the controller. | | `tabbable` | `null` or boolean | `null` | Is widget tabbable? | | `timestamp` | number (float) | `0.0` | The last time the data from this gamepad was updated. | | `tooltip` | `null` or string | `null` | A tooltip caption. | ### DOMWidgetModel (@jupyter-widgets/controls, 2.0.0); None (@jupyter-widgets/controls, 2.0.0) | Attribute | Type | Default | Help | | ----------------------- | -------------------------- | ----------------------------- | ----------------------------------------- | | `_dom_classes` | array of string | `[]` | CSS classes applied to widget DOM element | | `_model_module` | string | `'@jupyter-widgets/controls'` | | `_model_module_version` | string | `'2.0.0'` | | `_model_name` | string | `'DOMWidgetModel'` | | `_view_module` | string | `'@jupyter-widgets/controls'` | | `_view_module_version` | string | `'2.0.0'` | | `_view_name` | `null` or string | `null` | Name of the view. | | `layout` | reference to Layout widget | reference to new instance | | `tabbable` | `null` or boolean | `null` | Is widget tabbable? | | `tooltip` | `null` or string | `null` | A tooltip caption. | | `value` | Bytes | `b''` | The media data as a memory view of bytes. | ### DatePickerModel (@jupyter-widgets/controls, 2.0.0); DatePickerView (@jupyter-widgets/controls, 2.0.0) | Attribute | Type | Default | Help | | ------------------------ | ------------------------------------------- | ----------------------------- | ------------------------------------------------------- | | `_dom_classes` | array of string | `[]` | CSS classes applied to widget DOM element | | `_model_module` | string | `'@jupyter-widgets/controls'` | | `_model_module_version` | string | `'2.0.0'` | | `_model_name` | string | `'DatePickerModel'` | | `_view_module` | string | `'@jupyter-widgets/controls'` | | `_view_module_version` | string | `'2.0.0'` | | `_view_name` | string | `'DatePickerView'` | | `description` | string | `''` | Description of the control. | | `description_allow_html` | boolean | `false` | Accept HTML in the description. | | `disabled` | boolean | `false` | Enable or disable user changes. | | `layout` | reference to Layout widget | reference to new instance | | `max` | `null` or Date | `null` | | `min` | `null` or Date | `null` | | `step` | number (integer) or string (one of `'any'`) | `1` | The date step to use for the picker, in days, or "any". | | `style` | reference to DescriptionStyle widget | reference to new instance | Styling customizations | | `tabbable` | `null` or boolean | `null` | Is widget tabbable? | | `tooltip` | `null` or string | `null` | A tooltip caption. | | `value` | `null` or Date | `null` | ### DatetimeModel (@jupyter-widgets/controls, 2.0.0); DatetimeView (@jupyter-widgets/controls, 2.0.0) | Attribute | Type | Default | Help | | ------------------------ | ------------------------------------ | ----------------------------- | ----------------------------------------- | | `_dom_classes` | array of string | `[]` | CSS classes applied to widget DOM element | | `_model_module` | string | `'@jupyter-widgets/controls'` | | `_model_module_version` | string | `'2.0.0'` | | `_model_name` | string | `'DatetimeModel'` | | `_view_module` | string | `'@jupyter-widgets/controls'` | | `_view_module_version` | string | `'2.0.0'` | | `_view_name` | string | `'DatetimeView'` | | `description` | string | `''` | Description of the control. | | `description_allow_html` | boolean | `false` | Accept HTML in the description. | | `disabled` | boolean | `false` | Enable or disable user changes. | | `layout` | reference to Layout widget | reference to new instance | | `max` | `null` or Datetime | `null` | | `min` | `null` or Datetime | `null` | | `style` | reference to DescriptionStyle widget | reference to new instance | Styling customizations | | `tabbable` | `null` or boolean | `null` | Is widget tabbable? | | `tooltip` | `null` or string | `null` | A tooltip caption. | | `value` | `null` or Datetime | `null` | ### DescriptionStyleModel (@jupyter-widgets/controls, 2.0.0); StyleView (@jupyter-widgets/base, 2.0.0) | Attribute | Type | Default | Help | | ----------------------- | ------ | ----------------------------- | ---------------------------------------------------- | | `_model_module` | string | `'@jupyter-widgets/controls'` | | `_model_module_version` | string | `'2.0.0'` | | `_model_name` | string | `'DescriptionStyleModel'` | | `_view_module` | string | `'@jupyter-widgets/base'` | | `_view_module_version` | string | `'2.0.0'` | | `_view_name` | string | `'StyleView'` | | `description_width` | string | `''` | Width of the description to the side of the control. | ### DirectionalLinkModel (@jupyter-widgets/controls, 2.0.0); None (@jupyter-widgets/controls, 2.0.0) | Attribute | Type | Default | Help | | ----------------------- | ---------------- | ----------------------------- | -------------------------------------- | | `_model_module` | string | `'@jupyter-widgets/controls'` | | `_model_module_version` | string | `'2.0.0'` | | `_model_name` | string | `'DirectionalLinkModel'` | | `_view_module` | string | `'@jupyter-widgets/controls'` | | `_view_module_version` | string | `'2.0.0'` | | `_view_name` | `null` or string | `null` | Name of the view. | | `source` | array | `[]` | The source (widget, 'trait_name') pair | | `target` | array | `[]` | The target (widget, 'trait_name') pair | ### DropdownModel (@jupyter-widgets/controls, 2.0.0); DropdownView (@jupyter-widgets/controls, 2.0.0) | Attribute | Type | Default | Help | | ------------------------ | ------------------------------------ | ----------------------------- | ----------------------------------------- | | `_dom_classes` | array of string | `[]` | CSS classes applied to widget DOM element | | `_model_module` | string | `'@jupyter-widgets/controls'` | | `_model_module_version` | string | `'2.0.0'` | | `_model_name` | string | `'DropdownModel'` | | `_options_labels` | array of string | `[]` | The labels for the options. | | `_view_module` | string | `'@jupyter-widgets/controls'` | | `_view_module_version` | string | `'2.0.0'` | | `_view_name` | string | `'DropdownView'` | | `description` | string | `''` | Description of the control. | | `description_allow_html` | boolean | `false` | Accept HTML in the description. | | `disabled` | boolean | `false` | Enable or disable user changes | | `index` | `null` or number (integer) | `null` | Selected index | | `layout` | reference to Layout widget | reference to new instance | | `style` | reference to DescriptionStyle widget | reference to new instance | Styling customizations | | `tabbable` | `null` or boolean | `null` | Is widget tabbable? | | `tooltip` | `null` or string | `null` | A tooltip caption. | ### FileUploadModel (@jupyter-widgets/controls, 2.0.0); FileUploadView (@jupyter-widgets/controls, 2.0.0) | Attribute | Type | Default | Help | | ------------------------ | --------------------------------------------------------------------------------- | ----------------------------- | ------------------------------------------------- | | `_dom_classes` | array of string | `[]` | CSS classes applied to widget DOM element | | `_model_module` | string | `'@jupyter-widgets/controls'` | | `_model_module_version` | string | `'2.0.0'` | | `_model_name` | string | `'FileUploadModel'` | | `_view_module` | string | `'@jupyter-widgets/controls'` | | `_view_module_version` | string | `'2.0.0'` | | `_view_name` | string | `'FileUploadView'` | | `accept` | string | `''` | File types to accept, empty string for all | | `button_style` | string (one of `'primary'`, `'success'`, `'info'`, `'warning'`, `'danger'`, `''`) | `''` | Use a predefined styling for the button. | | `description` | string | `''` | Description of the control. | | `description_allow_html` | boolean | `false` | Accept HTML in the description. | | `disabled` | boolean | `false` | Enable or disable button | | `error` | string | `''` | Error message | | `icon` | string | `'upload'` | Font-awesome icon name, without the 'fa-' prefix. | | `layout` | reference to Layout widget | reference to new instance | | `multiple` | boolean | `false` | If True, allow for multiple files upload | | `style` | reference to ButtonStyle widget | reference to new instance | | `tabbable` | `null` or boolean | `null` | Is widget tabbable? | | `tooltip` | `null` or string | `null` | A tooltip caption. | | `value` | array of object | `[]` | The file upload value | ### FloatLogSliderModel (@jupyter-widgets/controls, 2.0.0); FloatLogSliderView (@jupyter-widgets/controls, 2.0.0) | Attribute | Type | Default | Help | | ------------------------ | ------------------------------------------------------------------------ | ----------------------------- | ----------------------------------------------------------------- | | `_dom_classes` | array of string | `[]` | CSS classes applied to widget DOM element | | `_model_module` | string | `'@jupyter-widgets/controls'` | | `_model_module_version` | string | `'2.0.0'` | | `_model_name` | string | `'FloatLogSliderModel'` | | `_view_module` | string | `'@jupyter-widgets/controls'` | | `_view_module_version` | string | `'2.0.0'` | | `_view_name` | string | `'FloatLogSliderView'` | | `base` | number (float) | `10.0` | Base for the logarithm | | `behavior` | string (one of `'drag-tap'`, `'drag-snap'`, `'tap'`, `'drag'`, `'snap'`) | `'drag-tap'` | Slider dragging behavior. | | `continuous_update` | boolean | `true` | Update the value of the widget as the user is holding the slider. | | `description` | string | `''` | Description of the control. | | `description_allow_html` | boolean | `false` | Accept HTML in the description. | | `disabled` | boolean | `false` | Enable or disable user changes | | `layout` | reference to Layout widget | reference to new instance | | `max` | number (float) | `4.0` | Max value for the exponent | | `min` | number (float) | `0.0` | Min value for the exponent | | `orientation` | string (one of `'horizontal'`, `'vertical'`) | `'horizontal'` | Vertical or horizontal. | | `readout` | boolean | `true` | Display the current value of the slider next to it. | | `readout_format` | string | `'.3g'` | Format for the readout | | `step` | `null` or number (float) | `0.1` | Minimum step in the exponent to increment the value | | `style` | reference to SliderStyle widget | reference to new instance | | `tabbable` | `null` or boolean | `null` | Is widget tabbable? | | `tooltip` | `null` or string | `null` | A tooltip caption. | | `value` | number (float) | `1.0` | Float value | ### FloatProgressModel (@jupyter-widgets/controls, 2.0.0); ProgressView (@jupyter-widgets/controls, 2.0.0) | Attribute | Type | Default | Help | | ------------------------ | ------------------------------------------------------------------------------ | ----------------------------- | ---------------------------------------------- | | `_dom_classes` | array of string | `[]` | CSS classes applied to widget DOM element | | `_model_module` | string | `'@jupyter-widgets/controls'` | | `_model_module_version` | string | `'2.0.0'` | | `_model_name` | string | `'FloatProgressModel'` | | `_view_module` | string | `'@jupyter-widgets/controls'` | | `_view_module_version` | string | `'2.0.0'` | | `_view_name` | string | `'ProgressView'` | | `bar_style` | `null` or string (one of `'success'`, `'info'`, `'warning'`, `'danger'`, `''`) | `''` | Use a predefined styling for the progress bar. | | `description` | string | `''` | Description of the control. | | `description_allow_html` | boolean | `false` | Accept HTML in the description. | | `layout` | reference to Layout widget | reference to new instance | | `max` | number (float) | `100.0` | Max value | | `min` | number (float) | `0.0` | Min value | | `orientation` | string (one of `'horizontal'`, `'vertical'`) | `'horizontal'` | Vertical or horizontal. | | `style` | reference to ProgressStyle widget | reference to new instance | | `tabbable` | `null` or boolean | `null` | Is widget tabbable? | | `tooltip` | `null` or string | `null` | A tooltip caption. | | `value` | number (float) | `0.0` | Float value | ### FloatRangeSliderModel (@jupyter-widgets/controls, 2.0.0); FloatRangeSliderView (@jupyter-widgets/controls, 2.0.0) | Attribute | Type | Default | Help | | ------------------------ | ------------------------------------------------------------------------ | ----------------------------- | ----------------------------------------------------------------- | | `_dom_classes` | array of string | `[]` | CSS classes applied to widget DOM element | | `_model_module` | string | `'@jupyter-widgets/controls'` | | `_model_module_version` | string | `'2.0.0'` | | `_model_name` | string | `'FloatRangeSliderModel'` | | `_view_module` | string | `'@jupyter-widgets/controls'` | | `_view_module_version` | string | `'2.0.0'` | | `_view_name` | string | `'FloatRangeSliderView'` | | `behavior` | string (one of `'drag-tap'`, `'drag-snap'`, `'tap'`, `'drag'`, `'snap'`) | `'drag-tap'` | Slider dragging behavior. | | `continuous_update` | boolean | `true` | Update the value of the widget as the user is sliding the slider. | | `description` | string | `''` | Description of the control. | | `description_allow_html` | boolean | `false` | Accept HTML in the description. | | `disabled` | boolean | `false` | Enable or disable user changes | | `layout` | reference to Layout widget | reference to new instance | | `max` | number (float) | `100.0` | Max value | | `min` | number (float) | `0.0` | Min value | | `orientation` | string (one of `'horizontal'`, `'vertical'`) | `'horizontal'` | Vertical or horizontal. | | `readout` | boolean | `true` | Display the current value of the slider next to it. | | `readout_format` | string | `'.2f'` | Format for the readout | | `step` | `null` or number (float) | `0.1` | Minimum step to increment the value | | `style` | reference to SliderStyle widget | reference to new instance | | `tabbable` | `null` or boolean | `null` | Is widget tabbable? | | `tooltip` | `null` or string | `null` | A tooltip caption. | | `value` | array | `[0.0, 1.0]` | Tuple of (lower, upper) bounds | ### FloatSliderModel (@jupyter-widgets/controls, 2.0.0); FloatSliderView (@jupyter-widgets/controls, 2.0.0) | Attribute | Type | Default | Help | | ------------------------ | ------------------------------------------------------------------------ | ----------------------------- | ----------------------------------------------------------------- | | `_dom_classes` | array of string | `[]` | CSS classes applied to widget DOM element | | `_model_module` | string | `'@jupyter-widgets/controls'` | | `_model_module_version` | string | `'2.0.0'` | | `_model_name` | string | `'FloatSliderModel'` | | `_view_module` | string | `'@jupyter-widgets/controls'` | | `_view_module_version` | string | `'2.0.0'` | | `_view_name` | string | `'FloatSliderView'` | | `behavior` | string (one of `'drag-tap'`, `'drag-snap'`, `'tap'`, `'drag'`, `'snap'`) | `'drag-tap'` | Slider dragging behavior. | | `continuous_update` | boolean | `true` | Update the value of the widget as the user is holding the slider. | | `description` | string | `''` | Description of the control. | | `description_allow_html` | boolean | `false` | Accept HTML in the description. | | `disabled` | boolean | `false` | Enable or disable user changes | | `layout` | reference to Layout widget | reference to new instance | | `max` | number (float) | `100.0` | Max value | | `min` | number (float) | `0.0` | Min value | | `orientation` | string (one of `'horizontal'`, `'vertical'`) | `'horizontal'` | Vertical or horizontal. | | `readout` | boolean | `true` | Display the current value of the slider next to it. | | `readout_format` | string | `'.2f'` | Format for the readout | | `step` | `null` or number (float) | `0.1` | Minimum step to increment the value | | `style` | reference to SliderStyle widget | reference to new instance | | `tabbable` | `null` or boolean | `null` | Is widget tabbable? | | `tooltip` | `null` or string | `null` | A tooltip caption. | | `value` | number (float) | `0.0` | Float value | ### FloatTextModel (@jupyter-widgets/controls, 2.0.0); FloatTextView (@jupyter-widgets/controls, 2.0.0) | Attribute | Type | Default | Help | | ------------------------ | ------------------------------------ | ----------------------------- | ------------------------------------------------------------------------------------------------------------ | | `_dom_classes` | array of string | `[]` | CSS classes applied to widget DOM element | | `_model_module` | string | `'@jupyter-widgets/controls'` | | `_model_module_version` | string | `'2.0.0'` | | `_model_name` | string | `'FloatTextModel'` | | `_view_module` | string | `'@jupyter-widgets/controls'` | | `_view_module_version` | string | `'2.0.0'` | | `_view_name` | string | `'FloatTextView'` | | `continuous_update` | boolean | `false` | Update the value as the user types. If False, update on submission, e.g., pressing Enter or navigating away. | | `description` | string | `''` | Description of the control. | | `description_allow_html` | boolean | `false` | Accept HTML in the description. | | `disabled` | boolean | `false` | Enable or disable user changes | | `layout` | reference to Layout widget | reference to new instance | | `step` | `null` or number (float) | `null` | Minimum step to increment the value | | `style` | reference to DescriptionStyle widget | reference to new instance | Styling customizations | | `tabbable` | `null` or boolean | `null` | Is widget tabbable? | | `tooltip` | `null` or string | `null` | A tooltip caption. | | `value` | number (float) | `0.0` | Float value | ### FloatsInputModel (@jupyter-widgets/controls, 2.0.0); FloatsInputView (@jupyter-widgets/controls, 2.0.0) | Attribute | Type | Default | Help | | ------------------------ | --------------------------------------------------------------------------------- | ----------------------------- | ----------------------------------------- | | `_dom_classes` | array of string | `[]` | CSS classes applied to widget DOM element | | `_model_module` | string | `'@jupyter-widgets/controls'` | | `_model_module_version` | string | `'2.0.0'` | | `_model_name` | string | `'FloatsInputModel'` | | `_view_module` | string | `'@jupyter-widgets/controls'` | | `_view_module_version` | string | `'2.0.0'` | | `_view_name` | string | `'FloatsInputView'` | | `allow_duplicates` | boolean | `true` | | `allowed_tags` | array | `[]` | | `description` | string | `''` | Description of the control. | | `description_allow_html` | boolean | `false` | Accept HTML in the description. | | `format` | string | `'.1f'` | | `layout` | reference to Layout widget | reference to new instance | | `max` | `null` or number (float) | `null` | | `min` | `null` or number (float) | `null` | | `placeholder` | string | `'\u200b'` | | `style` | reference to DescriptionStyle widget | reference to new instance | Styling customizations | | `tabbable` | `null` or boolean | `null` | Is widget tabbable? | | `tag_style` | string (one of `'primary'`, `'success'`, `'info'`, `'warning'`, `'danger'`, `''`) | `''` | Use a predefined styling for the tags. | | `tooltip` | `null` or string | `null` | A tooltip caption. | | `value` | array | `[]` | List of float tags | ### GridBoxModel (@jupyter-widgets/controls, 2.0.0); GridBoxView (@jupyter-widgets/controls, 2.0.0) | Attribute | Type | Default | Help | | ----------------------- | -------------------------------------------------------------------- | ----------------------------- | ----------------------------------------- | | `_dom_classes` | array of string | `[]` | CSS classes applied to widget DOM element | | `_model_module` | string | `'@jupyter-widgets/controls'` | | `_model_module_version` | string | `'2.0.0'` | | `_model_name` | string | `'GridBoxModel'` | | `_view_module` | string | `'@jupyter-widgets/controls'` | | `_view_module_version` | string | `'2.0.0'` | | `_view_name` | string | `'GridBoxView'` | | `box_style` | string (one of `'success'`, `'info'`, `'warning'`, `'danger'`, `''`) | `''` | Use a predefined styling for the box. | | `children` | array of reference to Widget widget | `[]` | List of widget children | | `layout` | reference to Layout widget | reference to new instance | | `tabbable` | `null` or boolean | `null` | Is widget tabbable? | | `tooltip` | `null` or string | `null` | A tooltip caption. | ### HBoxModel (@jupyter-widgets/controls, 2.0.0); HBoxView (@jupyter-widgets/controls, 2.0.0) | Attribute | Type | Default | Help | | ----------------------- | -------------------------------------------------------------------- | ----------------------------- | ----------------------------------------- | | `_dom_classes` | array of string | `[]` | CSS classes applied to widget DOM element | | `_model_module` | string | `'@jupyter-widgets/controls'` | | `_model_module_version` | string | `'2.0.0'` | | `_model_name` | string | `'HBoxModel'` | | `_view_module` | string | `'@jupyter-widgets/controls'` | | `_view_module_version` | string | `'2.0.0'` | | `_view_name` | string | `'HBoxView'` | | `box_style` | string (one of `'success'`, `'info'`, `'warning'`, `'danger'`, `''`) | `''` | Use a predefined styling for the box. | | `children` | array of reference to Widget widget | `[]` | List of widget children | | `layout` | reference to Layout widget | reference to new instance | | `tabbable` | `null` or boolean | `null` | Is widget tabbable? | | `tooltip` | `null` or string | `null` | A tooltip caption. | ### HTMLMathModel (@jupyter-widgets/controls, 2.0.0); HTMLMathView (@jupyter-widgets/controls, 2.0.0) | Attribute | Type | Default | Help | | ------------------------ | --------------------------------- | ----------------------------- | ------------------------------------------------------- | | `_dom_classes` | array of string | `[]` | CSS classes applied to widget DOM element | | `_model_module` | string | `'@jupyter-widgets/controls'` | | `_model_module_version` | string | `'2.0.0'` | | `_model_name` | string | `'HTMLMathModel'` | | `_view_module` | string | `'@jupyter-widgets/controls'` | | `_view_module_version` | string | `'2.0.0'` | | `_view_name` | string | `'HTMLMathView'` | | `description` | string | `''` | Description of the control. | | `description_allow_html` | boolean | `false` | Accept HTML in the description. | | `layout` | reference to Layout widget | reference to new instance | | `placeholder` | string | `'\u200b'` | Placeholder text to display when nothing has been typed | | `style` | reference to HTMLMathStyle widget | reference to new instance | | `tabbable` | `null` or boolean | `null` | Is widget tabbable? | | `tooltip` | `null` or string | `null` | A tooltip caption. | | `value` | string | `''` | String value | ### HTMLMathStyleModel (@jupyter-widgets/controls, 2.0.0); StyleView (@jupyter-widgets/base, 2.0.0) | Attribute | Type | Default | Help | | ----------------------- | ---------------- | ----------------------------- | ---------------------------------------------------- | | `_model_module` | string | `'@jupyter-widgets/controls'` | | `_model_module_version` | string | `'2.0.0'` | | `_model_name` | string | `'HTMLMathStyleModel'` | | `_view_module` | string | `'@jupyter-widgets/base'` | | `_view_module_version` | string | `'2.0.0'` | | `_view_name` | string | `'StyleView'` | | `background` | `null` or string | `null` | Background specifications. | | `description_width` | string | `''` | Width of the description to the side of the control. | | `font_size` | `null` or string | `null` | Text font size. | | `text_color` | `null` or string | `null` | Text color | ### HTMLModel (@jupyter-widgets/controls, 2.0.0); HTMLView (@jupyter-widgets/controls, 2.0.0) | Attribute | Type | Default | Help | | ------------------------ | ----------------------------- | ----------------------------- | ------------------------------------------------------- | | `_dom_classes` | array of string | `[]` | CSS classes applied to widget DOM element | | `_model_module` | string | `'@jupyter-widgets/controls'` | | `_model_module_version` | string | `'2.0.0'` | | `_model_name` | string | `'HTMLModel'` | | `_view_module` | string | `'@jupyter-widgets/controls'` | | `_view_module_version` | string | `'2.0.0'` | | `_view_name` | string | `'HTMLView'` | | `description` | string | `''` | Description of the control. | | `description_allow_html` | boolean | `false` | Accept HTML in the description. | | `layout` | reference to Layout widget | reference to new instance | | `placeholder` | string | `'\u200b'` | Placeholder text to display when nothing has been typed | | `style` | reference to HTMLStyle widget | reference to new instance | | `tabbable` | `null` or boolean | `null` | Is widget tabbable? | | `tooltip` | `null` or string | `null` | A tooltip caption. | | `value` | string | `''` | String value | ### HTMLStyleModel (@jupyter-widgets/controls, 2.0.0); StyleView (@jupyter-widgets/base, 2.0.0) | Attribute | Type | Default | Help | | ----------------------- | ---------------- | ----------------------------- | ---------------------------------------------------- | | `_model_module` | string | `'@jupyter-widgets/controls'` | | `_model_module_version` | string | `'2.0.0'` | | `_model_name` | string | `'HTMLStyleModel'` | | `_view_module` | string | `'@jupyter-widgets/base'` | | `_view_module_version` | string | `'2.0.0'` | | `_view_name` | string | `'StyleView'` | | `background` | `null` or string | `null` | Background specifications. | | `description_width` | string | `''` | Width of the description to the side of the control. | | `font_size` | `null` or string | `null` | Text font size. | | `text_color` | `null` or string | `null` | Text color | ### ImageModel (@jupyter-widgets/controls, 2.0.0); ImageView (@jupyter-widgets/controls, 2.0.0) | Attribute | Type | Default | Help | | ----------------------- | -------------------------- | ----------------------------- | ------------------------------------------------------------------------ | | `_dom_classes` | array of string | `[]` | CSS classes applied to widget DOM element | | `_model_module` | string | `'@jupyter-widgets/controls'` | | `_model_module_version` | string | `'2.0.0'` | | `_model_name` | string | `'ImageModel'` | | `_view_module` | string | `'@jupyter-widgets/controls'` | | `_view_module_version` | string | `'2.0.0'` | | `_view_name` | string | `'ImageView'` | | `format` | string | `'png'` | The format of the image. | | `height` | string | `''` | Height of the image in pixels. Use layout.height for styling the widget. | | `layout` | reference to Layout widget | reference to new instance | | `tabbable` | `null` or boolean | `null` | Is widget tabbable? | | `tooltip` | `null` or string | `null` | A tooltip caption. | | `value` | Bytes | `b''` | The media data as a memory view of bytes. | | `width` | string | `''` | Width of the image in pixels. Use layout.width for styling the widget. | ### IntProgressModel (@jupyter-widgets/controls, 2.0.0); ProgressView (@jupyter-widgets/controls, 2.0.0) | Attribute | Type | Default | Help | | ------------------------ | -------------------------------------------------------------------- | ----------------------------- | ---------------------------------------------- | | `_dom_classes` | array of string | `[]` | CSS classes applied to widget DOM element | | `_model_module` | string | `'@jupyter-widgets/controls'` | | `_model_module_version` | string | `'2.0.0'` | | `_model_name` | string | `'IntProgressModel'` | | `_view_module` | string | `'@jupyter-widgets/controls'` | | `_view_module_version` | string | `'2.0.0'` | | `_view_name` | string | `'ProgressView'` | | `bar_style` | string (one of `'success'`, `'info'`, `'warning'`, `'danger'`, `''`) | `''` | Use a predefined styling for the progress bar. | | `description` | string | `''` | Description of the control. | | `description_allow_html` | boolean | `false` | Accept HTML in the description. | | `layout` | reference to Layout widget | reference to new instance | | `max` | number (integer) | `100` | Max value | | `min` | number (integer) | `0` | Min value | | `orientation` | string (one of `'horizontal'`, `'vertical'`) | `'horizontal'` | Vertical or horizontal. | | `style` | reference to ProgressStyle widget | reference to new instance | | `tabbable` | `null` or boolean | `null` | Is widget tabbable? | | `tooltip` | `null` or string | `null` | A tooltip caption. | | `value` | number (integer) | `0` | Int value | ### IntRangeSliderModel (@jupyter-widgets/controls, 2.0.0); IntRangeSliderView (@jupyter-widgets/controls, 2.0.0) | Attribute | Type | Default | Help | | ------------------------ | ------------------------------------------------------------------------ | ----------------------------- | ----------------------------------------------------------------- | | `_dom_classes` | array of string | `[]` | CSS classes applied to widget DOM element | | `_model_module` | string | `'@jupyter-widgets/controls'` | | `_model_module_version` | string | `'2.0.0'` | | `_model_name` | string | `'IntRangeSliderModel'` | | `_view_module` | string | `'@jupyter-widgets/controls'` | | `_view_module_version` | string | `'2.0.0'` | | `_view_name` | string | `'IntRangeSliderView'` | | `behavior` | string (one of `'drag-tap'`, `'drag-snap'`, `'tap'`, `'drag'`, `'snap'`) | `'drag-tap'` | Slider dragging behavior. | | `continuous_update` | boolean | `true` | Update the value of the widget as the user is sliding the slider. | | `description` | string | `''` | Description of the control. | | `description_allow_html` | boolean | `false` | Accept HTML in the description. | | `disabled` | boolean | `false` | Enable or disable user changes | | `layout` | reference to Layout widget | reference to new instance | | `max` | number (integer) | `100` | Max value | | `min` | number (integer) | `0` | Min value | | `orientation` | string (one of `'horizontal'`, `'vertical'`) | `'horizontal'` | Vertical or horizontal. | | `readout` | boolean | `true` | Display the current value of the slider next to it. | | `readout_format` | string | `'d'` | Format for the readout | | `step` | number (integer) | `1` | Minimum step that the value can take | | `style` | reference to SliderStyle widget | reference to new instance | Slider style customizations. | | `tabbable` | `null` or boolean | `null` | Is widget tabbable? | | `tooltip` | `null` or string | `null` | A tooltip caption. | | `value` | array | `[0, 1]` | Tuple of (lower, upper) bounds | ### IntSliderModel (@jupyter-widgets/controls, 2.0.0); IntSliderView (@jupyter-widgets/controls, 2.0.0) | Attribute | Type | Default | Help | | ------------------------ | ------------------------------------------------------------------------ | ----------------------------- | ----------------------------------------------------------------- | | `_dom_classes` | array of string | `[]` | CSS classes applied to widget DOM element | | `_model_module` | string | `'@jupyter-widgets/controls'` | | `_model_module_version` | string | `'2.0.0'` | | `_model_name` | string | `'IntSliderModel'` | | `_view_module` | string | `'@jupyter-widgets/controls'` | | `_view_module_version` | string | `'2.0.0'` | | `_view_name` | string | `'IntSliderView'` | | `behavior` | string (one of `'drag-tap'`, `'drag-snap'`, `'tap'`, `'drag'`, `'snap'`) | `'drag-tap'` | Slider dragging behavior. | | `continuous_update` | boolean | `true` | Update the value of the widget as the user is holding the slider. | | `description` | string | `''` | Description of the control. | | `description_allow_html` | boolean | `false` | Accept HTML in the description. | | `disabled` | boolean | `false` | Enable or disable user changes | | `layout` | reference to Layout widget | reference to new instance | | `max` | number (integer) | `100` | Max value | | `min` | number (integer) | `0` | Min value | | `orientation` | string (one of `'horizontal'`, `'vertical'`) | `'horizontal'` | Vertical or horizontal. | | `readout` | boolean | `true` | Display the current value of the slider next to it. | | `readout_format` | string | `'d'` | Format for the readout | | `step` | number (integer) | `1` | Minimum step to increment the value | | `style` | reference to SliderStyle widget | reference to new instance | | `tabbable` | `null` or boolean | `null` | Is widget tabbable? | | `tooltip` | `null` or string | `null` | A tooltip caption. | | `value` | number (integer) | `0` | Int value | ### IntTextModel (@jupyter-widgets/controls, 2.0.0); IntTextView (@jupyter-widgets/controls, 2.0.0) | Attribute | Type | Default | Help | | ------------------------ | ------------------------------------ | ----------------------------- | ------------------------------------------------------------------------------------------------------------ | | `_dom_classes` | array of string | `[]` | CSS classes applied to widget DOM element | | `_model_module` | string | `'@jupyter-widgets/controls'` | | `_model_module_version` | string | `'2.0.0'` | | `_model_name` | string | `'IntTextModel'` | | `_view_module` | string | `'@jupyter-widgets/controls'` | | `_view_module_version` | string | `'2.0.0'` | | `_view_name` | string | `'IntTextView'` | | `continuous_update` | boolean | `false` | Update the value as the user types. If False, update on submission, e.g., pressing Enter or navigating away. | | `description` | string | `''` | Description of the control. | | `description_allow_html` | boolean | `false` | Accept HTML in the description. | | `disabled` | boolean | `false` | Enable or disable user changes | | `layout` | reference to Layout widget | reference to new instance | | `step` | number (integer) | `1` | Minimum step to increment the value | | `style` | reference to DescriptionStyle widget | reference to new instance | Styling customizations | | `tabbable` | `null` or boolean | `null` | Is widget tabbable? | | `tooltip` | `null` or string | `null` | A tooltip caption. | | `value` | number (integer) | `0` | Int value | ### IntsInputModel (@jupyter-widgets/controls, 2.0.0); IntsInputView (@jupyter-widgets/controls, 2.0.0) | Attribute | Type | Default | Help | | ------------------------ | --------------------------------------------------------------------------------- | ----------------------------- | ----------------------------------------- | | `_dom_classes` | array of string | `[]` | CSS classes applied to widget DOM element | | `_model_module` | string | `'@jupyter-widgets/controls'` | | `_model_module_version` | string | `'2.0.0'` | | `_model_name` | string | `'IntsInputModel'` | | `_view_module` | string | `'@jupyter-widgets/controls'` | | `_view_module_version` | string | `'2.0.0'` | | `_view_name` | string | `'IntsInputView'` | | `allow_duplicates` | boolean | `true` | | `allowed_tags` | array | `[]` | | `description` | string | `''` | Description of the control. | | `description_allow_html` | boolean | `false` | Accept HTML in the description. | | `format` | string | `'d'` | | `layout` | reference to Layout widget | reference to new instance | | `max` | `null` or number (integer) | `null` | | `min` | `null` or number (integer) | `null` | | `placeholder` | string | `'\u200b'` | | `style` | reference to DescriptionStyle widget | reference to new instance | Styling customizations | | `tabbable` | `null` or boolean | `null` | Is widget tabbable? | | `tag_style` | string (one of `'primary'`, `'success'`, `'info'`, `'warning'`, `'danger'`, `''`) | `''` | Use a predefined styling for the tags. | | `tooltip` | `null` or string | `null` | A tooltip caption. | | `value` | array | `[]` | List of int tags | ### LabelModel (@jupyter-widgets/controls, 2.0.0); LabelView (@jupyter-widgets/controls, 2.0.0) | Attribute | Type | Default | Help | | ------------------------ | ------------------------------ | ----------------------------- | ------------------------------------------------------- | | `_dom_classes` | array of string | `[]` | CSS classes applied to widget DOM element | | `_model_module` | string | `'@jupyter-widgets/controls'` | | `_model_module_version` | string | `'2.0.0'` | | `_model_name` | string | `'LabelModel'` | | `_view_module` | string | `'@jupyter-widgets/controls'` | | `_view_module_version` | string | `'2.0.0'` | | `_view_name` | string | `'LabelView'` | | `description` | string | `''` | Description of the control. | | `description_allow_html` | boolean | `false` | Accept HTML in the description. | | `layout` | reference to Layout widget | reference to new instance | | `placeholder` | string | `'\u200b'` | Placeholder text to display when nothing has been typed | | `style` | reference to LabelStyle widget | reference to new instance | | `tabbable` | `null` or boolean | `null` | Is widget tabbable? | | `tooltip` | `null` or string | `null` | A tooltip caption. | | `value` | string | `''` | String value | ### LabelStyleModel (@jupyter-widgets/controls, 2.0.0); StyleView (@jupyter-widgets/base, 2.0.0) | Attribute | Type | Default | Help | | ----------------------- | ---------------- | ----------------------------- | ---------------------------------------------------- | | `_model_module` | string | `'@jupyter-widgets/controls'` | | `_model_module_version` | string | `'2.0.0'` | | `_model_name` | string | `'LabelStyleModel'` | | `_view_module` | string | `'@jupyter-widgets/base'` | | `_view_module_version` | string | `'2.0.0'` | | `_view_name` | string | `'StyleView'` | | `background` | `null` or string | `null` | Background specifications. | | `description_width` | string | `''` | Width of the description to the side of the control. | | `font_family` | `null` or string | `null` | Label text font family. | | `font_size` | `null` or string | `null` | Text font size. | | `font_style` | `null` or string | `null` | Label text font style. | | `font_variant` | `null` or string | `null` | Label text font variant. | | `font_weight` | `null` or string | `null` | Label text font weight. | | `text_color` | `null` or string | `null` | Text color | | `text_decoration` | `null` or string | `null` | Label text decoration. | ### LinkModel (@jupyter-widgets/controls, 2.0.0); None (@jupyter-widgets/controls, 2.0.0) | Attribute | Type | Default | Help | | ----------------------- | ---------------- | ----------------------------- | -------------------------------------- | | `_model_module` | string | `'@jupyter-widgets/controls'` | | `_model_module_version` | string | `'2.0.0'` | | `_model_name` | string | `'LinkModel'` | | `_view_module` | string | `'@jupyter-widgets/controls'` | | `_view_module_version` | string | `'2.0.0'` | | `_view_name` | `null` or string | `null` | Name of the view. | | `source` | array | `[]` | The source (widget, 'trait_name') pair | | `target` | array | `[]` | The target (widget, 'trait_name') pair | ### NaiveDatetimeModel (@jupyter-widgets/controls, 2.0.0); DatetimeView (@jupyter-widgets/controls, 2.0.0) | Attribute | Type | Default | Help | | ------------------------ | ------------------------------------ | ----------------------------- | ----------------------------------------- | | `_dom_classes` | array of string | `[]` | CSS classes applied to widget DOM element | | `_model_module` | string | `'@jupyter-widgets/controls'` | | `_model_module_version` | string | `'2.0.0'` | | `_model_name` | string | `'NaiveDatetimeModel'` | | `_view_module` | string | `'@jupyter-widgets/controls'` | | `_view_module_version` | string | `'2.0.0'` | | `_view_name` | string | `'DatetimeView'` | | `description` | string | `''` | Description of the control. | | `description_allow_html` | boolean | `false` | Accept HTML in the description. | | `disabled` | boolean | `false` | Enable or disable user changes. | | `layout` | reference to Layout widget | reference to new instance | | `max` | `null` or Datetime | `null` | | `min` | `null` or Datetime | `null` | | `style` | reference to DescriptionStyle widget | reference to new instance | Styling customizations | | `tabbable` | `null` or boolean | `null` | Is widget tabbable? | | `tooltip` | `null` or string | `null` | A tooltip caption. | | `value` | `null` or Datetime | `null` | ### PasswordModel (@jupyter-widgets/controls, 2.0.0); PasswordView (@jupyter-widgets/controls, 2.0.0) | Attribute | Type | Default | Help | | ------------------------ | ----------------------------- | ----------------------------- | ------------------------------------------------------------------------------------------------------------ | | `_dom_classes` | array of string | `[]` | CSS classes applied to widget DOM element | | `_model_module` | string | `'@jupyter-widgets/controls'` | | `_model_module_version` | string | `'2.0.0'` | | `_model_name` | string | `'PasswordModel'` | | `_view_module` | string | `'@jupyter-widgets/controls'` | | `_view_module_version` | string | `'2.0.0'` | | `_view_name` | string | `'PasswordView'` | | `continuous_update` | boolean | `true` | Update the value as the user types. If False, update on submission, e.g., pressing Enter or navigating away. | | `description` | string | `''` | Description of the control. | | `description_allow_html` | boolean | `false` | Accept HTML in the description. | | `disabled` | boolean | `false` | Enable or disable user changes | | `layout` | reference to Layout widget | reference to new instance | | `placeholder` | string | `'\u200b'` | Placeholder text to display when nothing has been typed | | `style` | reference to TextStyle widget | reference to new instance | | `tabbable` | `null` or boolean | `null` | Is widget tabbable? | | `tooltip` | `null` or string | `null` | A tooltip caption. | | `value` | string | `''` | String value | ### PlayModel (@jupyter-widgets/controls, 2.0.0); PlayView (@jupyter-widgets/controls, 2.0.0) | Attribute | Type | Default | Help | | ------------------------ | ------------------------------------ | ----------------------------- | ----------------------------------------------------- | | `_dom_classes` | array of string | `[]` | CSS classes applied to widget DOM element | | `_model_module` | string | `'@jupyter-widgets/controls'` | | `_model_module_version` | string | `'2.0.0'` | | `_model_name` | string | `'PlayModel'` | | `_view_module` | string | `'@jupyter-widgets/controls'` | | `_view_module_version` | string | `'2.0.0'` | | `_view_name` | string | `'PlayView'` | | `description` | string | `''` | Description of the control. | | `description_allow_html` | boolean | `false` | Accept HTML in the description. | | `disabled` | boolean | `false` | Enable or disable user changes | | `interval` | number (integer) | `100` | The time between two animation steps (ms). | | `layout` | reference to Layout widget | reference to new instance | | `max` | number (integer) | `100` | Max value | | `min` | number (integer) | `0` | Min value | | `playing` | boolean | `false` | Whether the control is currently playing. | | `repeat` | boolean | `false` | Whether the control will repeat in a continuous loop. | | `show_repeat` | boolean | `true` | Show the repeat toggle button in the widget. | | `step` | number (integer) | `1` | Increment step | | `style` | reference to DescriptionStyle widget | reference to new instance | Styling customizations | | `tabbable` | `null` or boolean | `null` | Is widget tabbable? | | `tooltip` | `null` or string | `null` | A tooltip caption. | | `value` | number (integer) | `0` | Int value | ### ProgressStyleModel (@jupyter-widgets/controls, 2.0.0); StyleView (@jupyter-widgets/base, 2.0.0) | Attribute | Type | Default | Help | | ----------------------- | ---------------- | ----------------------------- | ---------------------------------------------------- | | `_model_module` | string | `'@jupyter-widgets/controls'` | | `_model_module_version` | string | `'2.0.0'` | | `_model_name` | string | `'ProgressStyleModel'` | | `_view_module` | string | `'@jupyter-widgets/base'` | | `_view_module_version` | string | `'2.0.0'` | | `_view_name` | string | `'StyleView'` | | `bar_color` | `null` or string | `null` | Color of the progress bar. | | `description_width` | string | `''` | Width of the description to the side of the control. | ### RadioButtonsModel (@jupyter-widgets/controls, 2.0.0); RadioButtonsView (@jupyter-widgets/controls, 2.0.0) | Attribute | Type | Default | Help | | ------------------------ | ------------------------------------ | ----------------------------- | ----------------------------------------- | | `_dom_classes` | array of string | `[]` | CSS classes applied to widget DOM element | | `_model_module` | string | `'@jupyter-widgets/controls'` | | `_model_module_version` | string | `'2.0.0'` | | `_model_name` | string | `'RadioButtonsModel'` | | `_options_labels` | array of string | `[]` | The labels for the options. | | `_view_module` | string | `'@jupyter-widgets/controls'` | | `_view_module_version` | string | `'2.0.0'` | | `_view_name` | string | `'RadioButtonsView'` | | `description` | string | `''` | Description of the control. | | `description_allow_html` | boolean | `false` | Accept HTML in the description. | | `disabled` | boolean | `false` | Enable or disable user changes | | `index` | `null` or number (integer) | `null` | Selected index | | `layout` | reference to Layout widget | reference to new instance | | `style` | reference to DescriptionStyle widget | reference to new instance | Styling customizations | | `tabbable` | `null` or boolean | `null` | Is widget tabbable? | | `tooltip` | `null` or string | `null` | A tooltip caption. | ### SelectModel (@jupyter-widgets/controls, 2.0.0); SelectView (@jupyter-widgets/controls, 2.0.0) | Attribute | Type | Default | Help | | ------------------------ | ------------------------------------ | ----------------------------- | ----------------------------------------- | | `_dom_classes` | array of string | `[]` | CSS classes applied to widget DOM element | | `_model_module` | string | `'@jupyter-widgets/controls'` | | `_model_module_version` | string | `'2.0.0'` | | `_model_name` | string | `'SelectModel'` | | `_options_labels` | array of string | `[]` | The labels for the options. | | `_view_module` | string | `'@jupyter-widgets/controls'` | | `_view_module_version` | string | `'2.0.0'` | | `_view_name` | string | `'SelectView'` | | `description` | string | `''` | Description of the control. | | `description_allow_html` | boolean | `false` | Accept HTML in the description. | | `disabled` | boolean | `false` | Enable or disable user changes | | `index` | `null` or number (integer) | `null` | Selected index | | `layout` | reference to Layout widget | reference to new instance | | `rows` | number (integer) | `5` | The number of rows to display. | | `style` | reference to DescriptionStyle widget | reference to new instance | Styling customizations | | `tabbable` | `null` or boolean | `null` | Is widget tabbable? | | `tooltip` | `null` or string | `null` | A tooltip caption. | ### SelectMultipleModel (@jupyter-widgets/controls, 2.0.0); SelectMultipleView (@jupyter-widgets/controls, 2.0.0) | Attribute | Type | Default | Help | | ------------------------ | ------------------------------------ | ----------------------------- | ----------------------------------------- | | `_dom_classes` | array of string | `[]` | CSS classes applied to widget DOM element | | `_model_module` | string | `'@jupyter-widgets/controls'` | | `_model_module_version` | string | `'2.0.0'` | | `_model_name` | string | `'SelectMultipleModel'` | | `_options_labels` | array of string | `[]` | The labels for the options. | | `_view_module` | string | `'@jupyter-widgets/controls'` | | `_view_module_version` | string | `'2.0.0'` | | `_view_name` | string | `'SelectMultipleView'` | | `description` | string | `''` | Description of the control. | | `description_allow_html` | boolean | `false` | Accept HTML in the description. | | `disabled` | boolean | `false` | Enable or disable user changes | | `index` | array of number (integer) | `[]` | Selected indices | | `layout` | reference to Layout widget | reference to new instance | | `rows` | number (integer) | `5` | The number of rows to display. | | `style` | reference to DescriptionStyle widget | reference to new instance | Styling customizations | | `tabbable` | `null` or boolean | `null` | Is widget tabbable? | | `tooltip` | `null` or string | `null` | A tooltip caption. | ### SelectionRangeSliderModel (@jupyter-widgets/controls, 2.0.0); SelectionRangeSliderView (@jupyter-widgets/controls, 2.0.0) | Attribute | Type | Default | Help | | ------------------------ | ------------------------------------------------------------------------ | ----------------------------- | ----------------------------------------------------------------- | | `_dom_classes` | array of string | `[]` | CSS classes applied to widget DOM element | | `_model_module` | string | `'@jupyter-widgets/controls'` | | `_model_module_version` | string | `'2.0.0'` | | `_model_name` | string | `'SelectionRangeSliderModel'` | | `_options_labels` | array of string | `[]` | The labels for the options. | | `_view_module` | string | `'@jupyter-widgets/controls'` | | `_view_module_version` | string | `'2.0.0'` | | `_view_name` | string | `'SelectionRangeSliderView'` | | `behavior` | string (one of `'drag-tap'`, `'drag-snap'`, `'tap'`, `'drag'`, `'snap'`) | `'drag-tap'` | Slider dragging behavior. | | `continuous_update` | boolean | `true` | Update the value of the widget as the user is holding the slider. | | `description` | string | `''` | Description of the control. | | `description_allow_html` | boolean | `false` | Accept HTML in the description. | | `disabled` | boolean | `false` | Enable or disable user changes | | `index` | array | `[0, 0]` | Min and max selected indices | | `layout` | reference to Layout widget | reference to new instance | | `orientation` | string (one of `'horizontal'`, `'vertical'`) | `'horizontal'` | Vertical or horizontal. | | `readout` | boolean | `true` | Display the current selected label next to the slider | | `style` | reference to SliderStyle widget | reference to new instance | | `tabbable` | `null` or boolean | `null` | Is widget tabbable? | | `tooltip` | `null` or string | `null` | A tooltip caption. | ### SelectionSliderModel (@jupyter-widgets/controls, 2.0.0); SelectionSliderView (@jupyter-widgets/controls, 2.0.0) | Attribute | Type | Default | Help | | ------------------------ | ------------------------------------------------------------------------ | ----------------------------- | ----------------------------------------------------------------- | | `_dom_classes` | array of string | `[]` | CSS classes applied to widget DOM element | | `_model_module` | string | `'@jupyter-widgets/controls'` | | `_model_module_version` | string | `'2.0.0'` | | `_model_name` | string | `'SelectionSliderModel'` | | `_options_labels` | array of string | `[]` | The labels for the options. | | `_view_module` | string | `'@jupyter-widgets/controls'` | | `_view_module_version` | string | `'2.0.0'` | | `_view_name` | string | `'SelectionSliderView'` | | `behavior` | string (one of `'drag-tap'`, `'drag-snap'`, `'tap'`, `'drag'`, `'snap'`) | `'drag-tap'` | Slider dragging behavior. | | `continuous_update` | boolean | `true` | Update the value of the widget as the user is holding the slider. | | `description` | string | `''` | Description of the control. | | `description_allow_html` | boolean | `false` | Accept HTML in the description. | | `disabled` | boolean | `false` | Enable or disable user changes | | `index` | number (integer) | `0` | Selected index | | `layout` | reference to Layout widget | reference to new instance | | `orientation` | string (one of `'horizontal'`, `'vertical'`) | `'horizontal'` | Vertical or horizontal. | | `readout` | boolean | `true` | Display the current selected label next to the slider | | `style` | reference to SliderStyle widget | reference to new instance | | `tabbable` | `null` or boolean | `null` | Is widget tabbable? | | `tooltip` | `null` or string | `null` | A tooltip caption. | ### SliderStyleModel (@jupyter-widgets/controls, 2.0.0); StyleView (@jupyter-widgets/base, 2.0.0) | Attribute | Type | Default | Help | | ----------------------- | ---------------- | ----------------------------- | ---------------------------------------------------- | | `_model_module` | string | `'@jupyter-widgets/controls'` | | `_model_module_version` | string | `'2.0.0'` | | `_model_name` | string | `'SliderStyleModel'` | | `_view_module` | string | `'@jupyter-widgets/base'` | | `_view_module_version` | string | `'2.0.0'` | | `_view_name` | string | `'StyleView'` | | `description_width` | string | `''` | Width of the description to the side of the control. | | `handle_color` | `null` or string | `null` | Color of the slider handle. | ### StackModel (@jupyter-widgets/controls, 2.0.0); StackView (@jupyter-widgets/controls, 2.0.0) | Attribute | Type | Default | Help | | ----------------------- | -------------------------------------------------------------------- | ----------------------------- | --------------------------------------------------------------------------------------------------------------------------------- | | `_dom_classes` | array of string | `[]` | CSS classes applied to widget DOM element | | `_model_module` | string | `'@jupyter-widgets/controls'` | | `_model_module_version` | string | `'2.0.0'` | | `_model_name` | string | `'StackModel'` | | `_view_module` | string | `'@jupyter-widgets/controls'` | | `_view_module_version` | string | `'2.0.0'` | | `_view_name` | string | `'StackView'` | | `box_style` | string (one of `'success'`, `'info'`, `'warning'`, `'danger'`, `''`) | `''` | Use a predefined styling for the box. | | `children` | array of reference to Widget widget | `[]` | List of widget children | | `layout` | reference to Layout widget | reference to new instance | | `selected_index` | `null` or number (integer) | `null` | The index of the selected page. This is either an integer selecting a particular sub-widget, or None to have no widgets selected. | | `tabbable` | `null` or boolean | `null` | Is widget tabbable? | | `titles` | array of string | `[]` | Titles of the pages | | `tooltip` | `null` or string | `null` | A tooltip caption. | ### TabModel (@jupyter-widgets/controls, 2.0.0); TabView (@jupyter-widgets/controls, 2.0.0) | Attribute | Type | Default | Help | | ----------------------- | -------------------------------------------------------------------- | ----------------------------- | --------------------------------------------------------------------------------------------------------------------------------- | | `_dom_classes` | array of string | `[]` | CSS classes applied to widget DOM element | | `_model_module` | string | `'@jupyter-widgets/controls'` | | `_model_module_version` | string | `'2.0.0'` | | `_model_name` | string | `'TabModel'` | | `_view_module` | string | `'@jupyter-widgets/controls'` | | `_view_module_version` | string | `'2.0.0'` | | `_view_name` | string | `'TabView'` | | `box_style` | string (one of `'success'`, `'info'`, `'warning'`, `'danger'`, `''`) | `''` | Use a predefined styling for the box. | | `children` | array of reference to Widget widget | `[]` | List of widget children | | `layout` | reference to Layout widget | reference to new instance | | `selected_index` | `null` or number (integer) | `null` | The index of the selected page. This is either an integer selecting a particular sub-widget, or None to have no widgets selected. | | `tabbable` | `null` or boolean | `null` | Is widget tabbable? | | `titles` | array of string | `[]` | Titles of the pages | | `tooltip` | `null` or string | `null` | A tooltip caption. | ### TagsInputModel (@jupyter-widgets/controls, 2.0.0); TagsInputView (@jupyter-widgets/controls, 2.0.0) | Attribute | Type | Default | Help | | ------------------------ | --------------------------------------------------------------------------------- | ----------------------------- | ----------------------------------------- | | `_dom_classes` | array of string | `[]` | CSS classes applied to widget DOM element | | `_model_module` | string | `'@jupyter-widgets/controls'` | | `_model_module_version` | string | `'2.0.0'` | | `_model_name` | string | `'TagsInputModel'` | | `_view_module` | string | `'@jupyter-widgets/controls'` | | `_view_module_version` | string | `'2.0.0'` | | `_view_name` | string | `'TagsInputView'` | | `allow_duplicates` | boolean | `true` | | `allowed_tags` | array | `[]` | | `description` | string | `''` | Description of the control. | | `description_allow_html` | boolean | `false` | Accept HTML in the description. | | `layout` | reference to Layout widget | reference to new instance | | `placeholder` | string | `'\u200b'` | | `style` | reference to DescriptionStyle widget | reference to new instance | Styling customizations | | `tabbable` | `null` or boolean | `null` | Is widget tabbable? | | `tag_style` | string (one of `'primary'`, `'success'`, `'info'`, `'warning'`, `'danger'`, `''`) | `''` | Use a predefined styling for the tags. | | `tooltip` | `null` or string | `null` | A tooltip caption. | | `value` | array | `[]` | List of string tags | ### TextModel (@jupyter-widgets/controls, 2.0.0); TextView (@jupyter-widgets/controls, 2.0.0) | Attribute | Type | Default | Help | | ------------------------ | ----------------------------- | ----------------------------- | ------------------------------------------------------------------------------------------------------------ | | `_dom_classes` | array of string | `[]` | CSS classes applied to widget DOM element | | `_model_module` | string | `'@jupyter-widgets/controls'` | | `_model_module_version` | string | `'2.0.0'` | | `_model_name` | string | `'TextModel'` | | `_view_module` | string | `'@jupyter-widgets/controls'` | | `_view_module_version` | string | `'2.0.0'` | | `_view_name` | string | `'TextView'` | | `continuous_update` | boolean | `true` | Update the value as the user types. If False, update on submission, e.g., pressing Enter or navigating away. | | `description` | string | `''` | Description of the control. | | `description_allow_html` | boolean | `false` | Accept HTML in the description. | | `disabled` | boolean | `false` | Enable or disable user changes | | `layout` | reference to Layout widget | reference to new instance | | `placeholder` | string | `'\u200b'` | Placeholder text to display when nothing has been typed | | `style` | reference to TextStyle widget | reference to new instance | | `tabbable` | `null` or boolean | `null` | Is widget tabbable? | | `tooltip` | `null` or string | `null` | A tooltip caption. | | `value` | string | `''` | String value | ### TextStyleModel (@jupyter-widgets/controls, 2.0.0); StyleView (@jupyter-widgets/base, 2.0.0) | Attribute | Type | Default | Help | | ----------------------- | ---------------- | ----------------------------- | ---------------------------------------------------- | | `_model_module` | string | `'@jupyter-widgets/controls'` | | `_model_module_version` | string | `'2.0.0'` | | `_model_name` | string | `'TextStyleModel'` | | `_view_module` | string | `'@jupyter-widgets/base'` | | `_view_module_version` | string | `'2.0.0'` | | `_view_name` | string | `'StyleView'` | | `background` | `null` or string | `null` | Background specifications. | | `description_width` | string | `''` | Width of the description to the side of the control. | | `font_size` | `null` or string | `null` | Text font size. | | `text_color` | `null` or string | `null` | Text color | ### TextareaModel (@jupyter-widgets/controls, 2.0.0); TextareaView (@jupyter-widgets/controls, 2.0.0) | Attribute | Type | Default | Help | | ------------------------ | ----------------------------- | ----------------------------- | ------------------------------------------------------------------------------------------------------------ | | `_dom_classes` | array of string | `[]` | CSS classes applied to widget DOM element | | `_model_module` | string | `'@jupyter-widgets/controls'` | | `_model_module_version` | string | `'2.0.0'` | | `_model_name` | string | `'TextareaModel'` | | `_view_module` | string | `'@jupyter-widgets/controls'` | | `_view_module_version` | string | `'2.0.0'` | | `_view_name` | string | `'TextareaView'` | | `continuous_update` | boolean | `true` | Update the value as the user types. If False, update on submission, e.g., pressing Enter or navigating away. | | `description` | string | `''` | Description of the control. | | `description_allow_html` | boolean | `false` | Accept HTML in the description. | | `disabled` | boolean | `false` | Enable or disable user changes | | `layout` | reference to Layout widget | reference to new instance | | `placeholder` | string | `'\u200b'` | Placeholder text to display when nothing has been typed | | `rows` | `null` or number (integer) | `null` | The number of rows to display. | | `style` | reference to TextStyle widget | reference to new instance | | `tabbable` | `null` or boolean | `null` | Is widget tabbable? | | `tooltip` | `null` or string | `null` | A tooltip caption. | | `value` | string | `''` | String value | ### TimeModel (@jupyter-widgets/controls, 2.0.0); TimeView (@jupyter-widgets/controls, 2.0.0) | Attribute | Type | Default | Help | | ------------------------ | ----------------------------------------- | ----------------------------- | ---------------------------------------------------------- | | `_dom_classes` | array of string | `[]` | CSS classes applied to widget DOM element | | `_model_module` | string | `'@jupyter-widgets/controls'` | | `_model_module_version` | string | `'2.0.0'` | | `_model_name` | string | `'TimeModel'` | | `_view_module` | string | `'@jupyter-widgets/controls'` | | `_view_module_version` | string | `'2.0.0'` | | `_view_name` | string | `'TimeView'` | | `description` | string | `''` | Description of the control. | | `description_allow_html` | boolean | `false` | Accept HTML in the description. | | `disabled` | boolean | `false` | Enable or disable user changes. | | `layout` | reference to Layout widget | reference to new instance | | `max` | `null` or Time | `null` | | `min` | `null` or Time | `null` | | `step` | number (float) or string (one of `'any'`) | `60` | The time step to use for the picker, in seconds, or "any". | | `style` | reference to DescriptionStyle widget | reference to new instance | Styling customizations | | `tabbable` | `null` or boolean | `null` | Is widget tabbable? | | `tooltip` | `null` or string | `null` | A tooltip caption. | | `value` | `null` or Time | `null` | ### ToggleButtonModel (@jupyter-widgets/controls, 2.0.0); ToggleButtonView (@jupyter-widgets/controls, 2.0.0) | Attribute | Type | Default | Help | | ------------------------ | --------------------------------------------------------------------------------- | ----------------------------- | ----------------------------------------- | | `_dom_classes` | array of string | `[]` | CSS classes applied to widget DOM element | | `_model_module` | string | `'@jupyter-widgets/controls'` | | `_model_module_version` | string | `'2.0.0'` | | `_model_name` | string | `'ToggleButtonModel'` | | `_view_module` | string | `'@jupyter-widgets/controls'` | | `_view_module_version` | string | `'2.0.0'` | | `_view_name` | string | `'ToggleButtonView'` | | `button_style` | string (one of `'primary'`, `'success'`, `'info'`, `'warning'`, `'danger'`, `''`) | `''` | Use a predefined styling for the button. | | `description` | string | `''` | Description of the control. | | `description_allow_html` | boolean | `false` | Accept HTML in the description. | | `disabled` | boolean | `false` | Enable or disable user changes. | | `icon` | string | `''` | Font-awesome icon. | | `layout` | reference to Layout widget | reference to new instance | | `style` | reference to ToggleButtonStyle widget | reference to new instance | Styling customizations | | `tabbable` | `null` or boolean | `null` | Is widget tabbable? | | `tooltip` | `null` or string | `null` | A tooltip caption. | | `value` | boolean | `false` | Bool value | ### ToggleButtonStyleModel (@jupyter-widgets/controls, 2.0.0); StyleView (@jupyter-widgets/base, 2.0.0) | Attribute | Type | Default | Help | | ----------------------- | ---------------- | ----------------------------- | ---------------------------------------------------- | | `_model_module` | string | `'@jupyter-widgets/controls'` | | `_model_module_version` | string | `'2.0.0'` | | `_model_name` | string | `'ToggleButtonStyleModel'` | | `_view_module` | string | `'@jupyter-widgets/base'` | | `_view_module_version` | string | `'2.0.0'` | | `_view_name` | string | `'StyleView'` | | `description_width` | string | `''` | Width of the description to the side of the control. | | `font_family` | `null` or string | `null` | Toggle button text font family. | | `font_size` | `null` or string | `null` | Toggle button text font size. | | `font_style` | `null` or string | `null` | Toggle button text font style. | | `font_variant` | `null` or string | `null` | Toggle button text font variant. | | `font_weight` | `null` or string | `null` | Toggle button text font weight. | | `text_color` | `null` or string | `null` | Toggle button text color | | `text_decoration` | `null` or string | `null` | Toggle button text decoration. | ### ToggleButtonsModel (@jupyter-widgets/controls, 2.0.0); ToggleButtonsView (@jupyter-widgets/controls, 2.0.0) | Attribute | Type | Default | Help | | ------------------------ | ------------------------------------------------------------------------------------------- | ----------------------------- | ----------------------------------------------------------------------- | | `_dom_classes` | array of string | `[]` | CSS classes applied to widget DOM element | | `_model_module` | string | `'@jupyter-widgets/controls'` | | `_model_module_version` | string | `'2.0.0'` | | `_model_name` | string | `'ToggleButtonsModel'` | | `_options_labels` | array of string | `[]` | The labels for the options. | | `_view_module` | string | `'@jupyter-widgets/controls'` | | `_view_module_version` | string | `'2.0.0'` | | `_view_name` | string | `'ToggleButtonsView'` | | `button_style` | `null` or string (one of `'primary'`, `'success'`, `'info'`, `'warning'`, `'danger'`, `''`) | `''` | Use a predefined styling for the buttons. | | `description` | string | `''` | Description of the control. | | `description_allow_html` | boolean | `false` | Accept HTML in the description. | | `disabled` | boolean | `false` | Enable or disable user changes | | `icons` | array of string | `[]` | Icons names for each button (FontAwesome names without the fa- prefix). | | `index` | `null` or number (integer) | `null` | Selected index | | `layout` | reference to Layout widget | reference to new instance | | `style` | reference to ToggleButtonsStyle widget | reference to new instance | | `tabbable` | `null` or boolean | `null` | Is widget tabbable? | | `tooltip` | `null` or string | `null` | A tooltip caption. | | `tooltips` | array of string | `[]` | Tooltips for each button. | ### ToggleButtonsStyleModel (@jupyter-widgets/controls, 2.0.0); StyleView (@jupyter-widgets/base, 2.0.0) | Attribute | Type | Default | Help | | ----------------------- | ------ | ----------------------------- | ---------------------------------------------------- | | `_model_module` | string | `'@jupyter-widgets/controls'` | | `_model_module_version` | string | `'2.0.0'` | | `_model_name` | string | `'ToggleButtonsStyleModel'` | | `_view_module` | string | `'@jupyter-widgets/base'` | | `_view_module_version` | string | `'2.0.0'` | | `_view_name` | string | `'StyleView'` | | `button_width` | string | `''` | The width of each button. | | `description_width` | string | `''` | Width of the description to the side of the control. | | `font_weight` | string | `''` | Text font weight of each button. | ### VBoxModel (@jupyter-widgets/controls, 2.0.0); VBoxView (@jupyter-widgets/controls, 2.0.0) | Attribute | Type | Default | Help | | ----------------------- | -------------------------------------------------------------------- | ----------------------------- | ----------------------------------------- | | `_dom_classes` | array of string | `[]` | CSS classes applied to widget DOM element | | `_model_module` | string | `'@jupyter-widgets/controls'` | | `_model_module_version` | string | `'2.0.0'` | | `_model_name` | string | `'VBoxModel'` | | `_view_module` | string | `'@jupyter-widgets/controls'` | | `_view_module_version` | string | `'2.0.0'` | | `_view_name` | string | `'VBoxView'` | | `box_style` | string (one of `'success'`, `'info'`, `'warning'`, `'danger'`, `''`) | `''` | Use a predefined styling for the box. | | `children` | array of reference to Widget widget | `[]` | List of widget children | | `layout` | reference to Layout widget | reference to new instance | | `tabbable` | `null` or boolean | `null` | Is widget tabbable? | | `tooltip` | `null` or string | `null` | A tooltip caption. | ### ValidModel (@jupyter-widgets/controls, 2.0.0); ValidView (@jupyter-widgets/controls, 2.0.0) | Attribute | Type | Default | Help | | ------------------------ | ------------------------------------ | ----------------------------- | ----------------------------------------- | | `_dom_classes` | array of string | `[]` | CSS classes applied to widget DOM element | | `_model_module` | string | `'@jupyter-widgets/controls'` | | `_model_module_version` | string | `'2.0.0'` | | `_model_name` | string | `'ValidModel'` | | `_view_module` | string | `'@jupyter-widgets/controls'` | | `_view_module_version` | string | `'2.0.0'` | | `_view_name` | string | `'ValidView'` | | `description` | string | `''` | Description of the control. | | `description_allow_html` | boolean | `false` | Accept HTML in the description. | | `disabled` | boolean | `false` | Enable or disable user changes. | | `layout` | reference to Layout widget | reference to new instance | | `readout` | string | `'Invalid'` | Message displayed when the value is False | | `style` | reference to DescriptionStyle widget | reference to new instance | Styling customizations | | `tabbable` | `null` or boolean | `null` | Is widget tabbable? | | `tooltip` | `null` or string | `null` | A tooltip caption. | | `value` | boolean | `false` | Bool value | ### VideoModel (@jupyter-widgets/controls, 2.0.0); VideoView (@jupyter-widgets/controls, 2.0.0) | Attribute | Type | Default | Help | | ----------------------- | -------------------------- | ----------------------------- | ----------------------------------------------------------------------------------- | | `_dom_classes` | array of string | `[]` | CSS classes applied to widget DOM element | | `_model_module` | string | `'@jupyter-widgets/controls'` | | `_model_module_version` | string | `'2.0.0'` | | `_model_name` | string | `'VideoModel'` | | `_view_module` | string | `'@jupyter-widgets/controls'` | | `_view_module_version` | string | `'2.0.0'` | | `_view_name` | string | `'VideoView'` | | `autoplay` | boolean | `true` | When true, the video starts when it's displayed | | `controls` | boolean | `true` | Specifies that video controls should be displayed (such as a play/pause button etc) | | `format` | string | `'mp4'` | The format of the video. | | `height` | string | `''` | Height of the video in pixels. | | `layout` | reference to Layout widget | reference to new instance | | `loop` | boolean | `true` | When true, the video will start from the beginning after finishing | | `tabbable` | `null` or boolean | `null` | Is widget tabbable? | | `tooltip` | `null` or string | `null` | A tooltip caption. | | `value` | Bytes | `b''` | The media data as a memory view of bytes. | | `width` | string | `''` | Width of the video in pixels. | ### OutputModel (@jupyter-widgets/output, 1.0.0); OutputView (@jupyter-widgets/output, 1.0.0) | Attribute | Type | Default | Help | | ----------------------- | -------------------------- | --------------------------- | --------------------------------------------- | | `_dom_classes` | array of string | `[]` | CSS classes applied to widget DOM element | | `_model_module` | string | `'@jupyter-widgets/output'` | | `_model_module_version` | string | `'1.0.0'` | | `_model_name` | string | `'OutputModel'` | | `_view_module` | string | `'@jupyter-widgets/output'` | | `_view_module_version` | string | `'1.0.0'` | | `_view_name` | string | `'OutputView'` | | `layout` | reference to Layout widget | reference to new instance | | `msg_id` | string | `''` | Parent message id of messages to capture | | `outputs` | array of object | `[]` | The output messages synced from the frontend. | | `tabbable` | `null` or boolean | `null` | Is widget tabbable? | | `tooltip` | `null` or string | `null` | A tooltip caption. | ipywidgets-8.1.1/packages/schema/messages.md000066400000000000000000000476541450026722000210760ustar00rootroot00000000000000# Widget messaging protocol, version 1 This is implemented in ipywidgets 6.0. A Jupyter widget has both a frontend and kernel object communicating with each other using the `comm` messages provided by the Jupyter kernel messaging protocol. The primary communication that happens is synchronizing widget state, represented in the messages by a dictionary of key-value pairs. The Jupyter widget messaging protocol covers `comm` messages for the following actions: - creating a companion Jupyter widget object through opening a `comm` - synchronizing widget state between the frontend and the kernel companion objects - sending custom messages between these objects - displaying a widget For more details on the `comm` infrastructure, see the [Custom messages section](http://jupyter-client.readthedocs.io/en/latest/messaging.html#custom-messages) of the Jupyter kernel message specification. Throughout this document, relevant parts of messages to the discussion are quoted, and fields irrelevant to the discussion are not displayed. ## Implementing the Jupyter widgets protocol in the kernel In this section, we concentrate on implementing the Jupyter widget messaging protocol in the kernel. ### The `jupyter.widget.version` comm target A kernel-side Jupyter widgets library registers the `jupyter.widget.version` comm target for communicating version information between the frontend and the kernel. When a frontend initializes a Jupyter widgets extension (for example, when a notebook is opened), the frontend widgets extension sends the kernel a `comm_open` message to the `jupyter.widget.version` comm target: ``` { 'comm_id': 'u-u-i-d', 'target_name': 'jupyter.widget.version' } ``` The kernel widgets implementation should immediately send a message on the opened comm channel containing the semver range of the frontend version of jupyter-js-widgets that it expects to communicate with: ``` { 'comm_id': 'u-u-i-d', 'data': { 'version': '~2.1.0' } } ``` The frontend widgets extension then compares the expected semver range with the actual version number and replies with a message on the comm channel giving the validation status and the frontend widgets extension version: ``` { 'comm_id': 'u-u-i-d', 'data': { 'frontend_version: '2.1.4', 'validated': true } } ``` ### The `jupyter.widget` comm target A kernel-side Jupyter widgets library also registers a `jupyter.widget` comm target for created creating widget comm channels (one per widget instance). State synchronization and custom messages for a particular widget instance are then sent over the created widget comm channel. ### Instantiating a widget object When a widget is instantiated in either the kernel or the frontend, it creates a companion object on the other side by sending a `comm_open` message to the `jupyter.widget` comm target. #### Reception of a `comm_open` message from the frontend When a frontend creates a Jupyter widget, it sends a `comm_open` message to the kernel: ``` { 'comm_id' : 'u-u-i-d', 'target_name' : 'jupyter.widget', 'data' : { 'widget_class': 'some.string' } } ``` The type of widget to be instantiated is given in the `widget_class` string. In the ipywidgets implementation, this string is actually the key in a registry of widget types. In the ipywidgets implementation, widget types are registered in the dictionary with the `register` decorator. For example the integral progress bar class is registered with `@register('Jupyter.IntProgress')`. When the `widget_class` is not in the registry, it is parsed as a `module` `+` `class` string. #### Sending a `comm_open` message upon instantiation of a widget Symmetrically, when instantiating a widget in the kernel, the kernel widgets library sends a `comm_open` message to the frontend: ``` { 'comm_id' : 'u-u-i-d', 'target_name' : 'jupyter.widget', 'data' : { } } ``` The type of widget to be instantiated in the frontend is determined by the `_model_name`, `_model_module` and `_model_module_version` keys in the state, which respectively stand for the name of the class that must be instantiated in the frontend, the JavaScript module where this class is defined, and a semver range for that module. See the [Model State](jupyterwidgetmodels.v6.md) documentation for the serialized state for core Jupyter widgets. ### State synchronization #### Synchronizing from kernel to frontend: `update` When a widget's state changes in the kernel, the changed state keys and values are sent to the frontend over the widget's comm channel using an `update` message: ``` { 'comm_id' : 'u-u-i-d', 'data' : { 'method': 'update', 'state': { }, 'buffers': [ ] } } ``` The state update is split between values that are serializable with JSON (in the `data.state` dictionary), and binary values (represented in `data.buffers`). The `data.state` value is a dictionary of widget state keys and values that can be serialized to JSON. Comm messages for state synchronization may contain binary buffers. The optional `data.buffers` value contains a list of keys corresponding to the binary buffers. For example, if `data.buffers` is `['x', 'y']`, then the first binary buffer is the value of the `'x'` state attribute and the second binary buffer is the value of the `'y'` state attribute. See the [Model state](jupyterwidgetmodels.v6.md) documentation for the attributes of core Jupyter widgets. #### Synchronizing from frontend to kernel: `backbone` When a widget's state changes in the frontend, the changed keys are sent to the kernel over the widget's comm channel using a `backbone` message: ``` { 'comm_id' : 'u-u-i-d', 'data' : { 'method': 'backbone', 'sync_data': { } 'buffer_keys': [ ] } } ``` The state update is split between values that are serializable with JSON (in the `data.sync_data` dictionary), and binary values (represented in `data.buffer_keys`). The `data.sync_data` value is a dictionary of widget state keys and values that can be serialized to JSON. Comm messages for state synchronization may contain binary buffers. The `data.buffer_keys` optional value contains a list of keys corresponding to the binary buffers. For example, if `data.buffer_keys` is `['x', 'y']`, then the first binary buffer is the value of the `'x'` state attribute and the second binary buffer is the value of the `'y'` state attribute. #### State requests: `request_state` When a frontend wants to request the full state of a widget, the frontend sends a `request_state` message: ``` { 'comm_id' : 'u-u-i-d', 'data' : { 'method': 'request_state' } } ``` The kernel side of the widget should immediately send an `update` message with the entire widget state. ### Custom messages: `custom` Widgets may also send custom comm messages to their counterpart. ``` { 'comm_id': 'u-u-i-d', 'data': { 'method': 'custom', 'content': , } } ``` In the ipywidgets implementation, the `Widget.send(content, buffers=None)` method will produce these messages. ### Displaying widgets To display a widget in the classic Jupyter notebook, the kernel sends a `display` comm message to the frontend on the widget's comm channel: ``` { 'comm_id': 'u-u-i-d', 'data': { 'method': 'display' } } ``` To display a widget in JupyterLab, the kernel sends a Jupyter [iopub `display_data` message](http://jupyter-client.readthedocs.io/en/latest/messaging.html#display-data) with a special mimetype (where the `model_id` is the widget's comm channel id): ``` { 'data': { 'application/vnd.jupyter.widget-view+json': { 'model_id': 'u-u-i-d' } } } ``` In order to display widgets in both the classic notebook and JupyterLab, ipywidgets sends both the `display` comm message and the iopub `display_data` message, and omits the `text/plain` mimetype from the `display_data` message (so the classic notebook will not show any output from the iopub message). # Widget messaging protocol, version 2 This is implemented in ipywidgets 7.0. A Jupyter widget has both a frontend and kernel object communicating with each other using the `comm` messages provided by the Jupyter kernel messaging protocol. The primary communication that happens is synchronizing widget state, represented in the messages by a dictionary of key-value pairs. The Jupyter widget messaging protocol covers `comm` messages for the following actions: - creating a companion Jupyter widget object through opening a `comm` - synchronizing widget state between the frontend and the kernel companion objects - sending custom messages between these objects - displaying a widget For more details on the `comm` infrastructure, see the [Custom messages section](http://jupyter-client.readthedocs.io/en/latest/messaging.html#custom-messages) of the Jupyter kernel message specification. Throughout this document, relevant parts of messages to the discussion are quoted, and fields irrelevant to the discussion are not displayed. ## Highlights of changes from version 1 The `jupyter.widget.version` comm target and associated version validation messages are gone. Instead, it is up to the package maintainers to ensure that the versions of the packages speak the same widget message protocol. We encourage kernel and frontend package developers to clearly indicate which protocol version the package supports. While in version 1, binary buffers could only be top level attributes of the `state` object, now any item in the state can be a binary buffer. All binary buffers that are a descendant of the state object (in a nested object or list) will be removed from an object or replaced by null in a list. The 'path' of each binary buffer and its data are sent separately, so the state object can be reconstructed on the other side of the wire. This change was necessary to allow sending the data for a binary array plus its metadata (shape, type, masks) in one attribute. The sync update event from the frontend to the kernel was restructured to have the same field names as the event from the kernel to the frontend, namely the method field is `'update'` and the state data is in the `state` attribute. Widgets are displayed via `display_data` messages, which now include the version of the schema. The `msg_throttle` attribute of models is removed. ## Widget state The core idea of widgets is that some state is automatically synced back and forth between a kernel object and a frontend object. Several fields are assumed to be in every state object: - `_model_module`: the model module - `_model_module_version`: the semver range of the model - `_model_name`: the name of the model - `_view_module`: the view module - `_view_module_version`: the semver range of the view - `_view_name`: the name of the view These fields are assumed immutable (set at initialization, and never changed). ## Implementing the Jupyter widgets protocol in the kernel In this section, we concentrate on implementing the Jupyter widget messaging protocol in the kernel. ### The `jupyter.widget` comm target A kernel-side Jupyter widgets library registers a `jupyter.widget` comm target for creating widget comm channels (one per widget instance). State synchronization and custom messages for a particular widget instance are then sent over the created widget comm channel. ### Instantiating a widget object When a widget is instantiated in either the kernel or the frontend, it creates a companion model on the other side by sending a `comm_open` message to the `jupyter.widget` comm target. The `comm_open` message's metadata gives the version of the widget messaging protocol, i.e., `{'version': '2.0.0'}`. ``` { 'comm_id' : 'u-u-i-d', 'target_name' : 'jupyter.widget', 'data' : { 'state': { }, 'buffer_paths': [ ] } } ``` The model instantiated on the other side is determined by the `_model_module`, and `_model_module_version`, `_model_name`, `_view_module`, `_view_module_version`, and `_view_name` keys in `data.state`. Any unspecified keys will be take on the default values given in the relevant model specification. The `data.state` value is a dictionary of widget state keys and values that can be serialized to JSON. Comm messages for state synchronization may contain binary buffers. The `data.buffer_paths` value contains a list of 'paths' in the `data.state` object corresponding to the binary buffers. For example, if `data.buffer_paths` is `[['x'], ['y', 'z', 0]]`, then the first binary buffer is the value of the `data.state['x']` attribute and the second binary buffer is the value of the `data.state['y']['z'][0]` state attribute. A path representing a list value (i.e., last index of the path is an integer) will be `null` in `data.state`, and a path representing a dictionary key (i.e., last index of the path is a string) will not exist in `data.state`. See the [Model State](jupyterwidgetmodels.latest.md) documentation for the serialized state for core Jupyter widgets. ### State synchronization #### Synchronizing widget state: `update` When a widget's state changes in either the kernel or the frontend, the changed state keys and values are sent to the other side over the widget's comm channel using an `update` message: ``` { 'comm_id' : 'u-u-i-d', 'data' : { 'method': 'update', 'state': { }, 'buffer_paths': [ ] } } ``` The `data.state` and `data.buffer_paths` values are the same as in the `comm_open` case. See the [Model state](jupyterwidgetmodels.latest.md) documentation for the attributes of core Jupyter widgets. #### Synchronizing multiple frontends: `echo_update` Starting with protocol version `2.1.0`, `echo_update` messages from the kernel to the frontend are optional update messages for echoing state in messages from a frontend to the kernel back out to all the frontends. ``` { 'comm_id' : 'u-u-i-d', 'data' : { 'method': 'echo_update', 'state': { }, 'buffer_paths': [ ] } } ``` The Jupyter comm protocol is asymmetric in how messages flow: messages flow from a single frontend to a single kernel, but messages are broadcast from the kernel to _all_ frontends. In the widget protocol, if a frontend updates the value of a widget, the frontend does not have a way to directly notify other frontends about the state update. The `echo_update` optional messages enable a kernel to broadcast out frontend updates to all frontends. This can also help resolve the race condition where the kernel and a frontend simultaneously send updates to each other since the frontend now knows the order of kernel updates. The `echo_update` messages enable a frontend to optimistically update its widget views to reflect its own changes that it knows the kernel will yet process. These messages are intended to be used as follows: 1. A frontend model attribute is updated, and the frontend views are optimistically updated to reflect the attribute. 2. The frontend queues an update message to the kernel and records the message id for the attribute. 3. The frontend ignores updates to the attribute from the kernel contained in `echo_update` messages until it gets an `echo_update` message corresponding to its own update of the attribute (i.e., the [parent_header](https://jupyter-client.readthedocs.io/en/latest/messaging.html#parent-header) id matches the stored message id for the attribute). It also ignores `echo_update` updates if it has a pending attribute update to send to the kernel. Once the frontend receives its own `echo_update` and does not have any more pending attribute updates to send to the kernel, it starts applying attribute updates from `echo_update` messages. Since the `echo_update` update messages are optional, and not all attribute updates may be echoed, it is important that only `echo_update` updates are ignored in the last step above, and `update` message updates are always applied. Implementation note: For attributes where sending back an `echo_update` is considered too expensive or unnecessary, we have implemented an opt-out mechanism in the ipywidgets package. A model trait can have the `echo_update` metadata attribute set to `False` to flag that the kernel should never send an `echo_update` update for that attribute to the frontends. Additionally, we have a system-wide flag to disable echoing for all attributes via the environment variable `JUPYTER_WIDGETS_ECHO`. For ipywdgets 7.7, we default `JUPYTER_WIDGETS_ECHO` to off (disabling all echo messages) and in ipywidgets 8.0 we default `JUPYTER_WIDGETS_ECHO` to on (enabling echo messages). #### State requests: `request_state` When a frontend wants to request the full state of a widget, the frontend sends a `request_state` message: ``` { 'comm_id' : 'u-u-i-d', 'data' : { 'method': 'request_state' } } ``` The kernel side of the widget should immediately send an `update` message with the entire widget state. ### Custom messages: `custom` Widgets may also send custom comm messages to their counterpart. ``` { 'comm_id': 'u-u-i-d', 'data': { 'method': 'custom', 'content': , } } ``` In the ipywidgets implementation, the `Widget.send(content, buffers=None)` method will produce these messages. ### Displaying widgets To display a widget, the kernel sends a Jupyter [iopub `display_data` message](http://jupyter-client.readthedocs.io/en/latest/messaging.html#display-data) with the `application/vnd.jupyter.widget-view+json` mimetype. In this message, the `model_id` is the comm channel id of the widget to display. ``` { 'data': { 'application/vnd.jupyter.widget-view+json': { 'model_id': 'u-u-i-d' 'version_major': 2 'version_minor': 0 } } } ``` # Control Widget messaging protocol, version 1.0 This is implemented in ipywidgets 7.7. ### The `jupyter.widget.control` comm target A kernel-side Jupyter widgets library may optionally register a `jupyter.widget.control` comm target that is used for fetching all kernel widget state through a single comm message. #### State requests: `request_states` When a frontend wants to request the full state of all widgets from the kernel in a single message, the frontend sends a `request_states` message through the `jupyter.widget.control` comm channel: ``` { 'comm_id' : 'u-u-i-d', 'data' : { 'method': 'request_states' } } ``` The kernel handler for the `jupyter.widget.control` comm target should immediately send an `update_states` message with all widgets states: ``` { 'comm_id' : 'u-u-i-d', 'data' : { 'method': 'update_states', 'states': { : , : , [...] }, 'buffer_paths': [ ] } } ``` Comm messages for state synchronization may contain binary buffers. The `data.buffer_paths` value contains a list of 'paths' in the `data.states` object corresponding to the binary buffers. For example, if `data.buffer_paths` is `[['widget-id1', 'x'], ['widget-id2', 'y', 'z', 0]]`, then the first binary buffer is the value of the `data.states['widget-id1']['x']` attribute and the second binary buffer is the value of the `data.states['widget-id2']['y']['z'][0]` state attribute. A path representing a list value (i.e., last index of the path is an integer) will have a `null` placeholder in the list in `data.states`, and a path representing a value for a dictionary key (i.e., last index of the path is a string) will not exist in the dictionary in `data.states`. Since the `update_states` message may be very large, it may be dropped in the communication channel (for example, the message may exceed the websocket message limit size). For that reason, we suggest that frontends fall back to other ways to retrieve state from the kernel if they do not get an `update_states` reply in a reasonable amount of time. ipywidgets-8.1.1/packages/schema/package.json000066400000000000000000000011101450026722000212040ustar00rootroot00000000000000{ "name": "@jupyter-widgets/schema", "version": "0.5.3", "description": "Schemas for the Jupyter interactive Widgets", "keywords": [ "jupyter", "schemas", "notebook" ], "homepage": "https://github.com/jupyter-widgets/ipywidgets#readme", "bugs": { "url": "https://github.com/jupyter-widgets/ipywidgets/issues" }, "repository": { "type": "git", "url": "git+https://github.com/jupyter-widgets/ipywidgets.git" }, "license": "BSD-3-Clause", "author": "Project Jupyter", "main": "index.js", "scripts": { "test": "node index.js" } } ipywidgets-8.1.1/packages/schema/v1/000077500000000000000000000000001450026722000172535ustar00rootroot00000000000000ipywidgets-8.1.1/packages/schema/v1/state.schema.json000066400000000000000000000027431450026722000225330ustar00rootroot00000000000000{ "$schema": "http://json-schema.org/draft-04/schema#", "description": "Jupyter Interactive Widget State JSON schema.", "type": "object", "properties": { "version_major": { "description": "Format version (major)", "type": "number", "minimum": 1, "maximum": 1 }, "version_minor": { "description": "Format version (minor)", "type": "number" }, "state": { "description": "Model State for All Widget Models", "type": "object", "additionalProperties": true, "additionalProperties": { "type": "object", "properties": { "model_name": { "description": "Name of the JavaScript class holding the model implementation", "type": "string" }, "model_module": { "description": "Name of the JavaScript module holding the model implementation", "type": "string" }, "model_module_version": { "description": "Semver range for the JavaScript module holding the model implementation", "type": "string" }, "state": { "description": "Serialized state of the model", "type": "object", "additional_properties": true } }, "required": ["model_name", "model_module", "state"], "additionalProperties": false } } }, "required": ["version_major", "version_minor", "state"], "additionalProperties": false } ipywidgets-8.1.1/packages/schema/v1/view.schema.json000066400000000000000000000011211450026722000223520ustar00rootroot00000000000000{ "$schema": "http://json-schema.org/draft-04/schema#", "description": "Jupyter Interactive Widget View JSON schema.", "type": "object", "properties": { "version_major": { "description": "Format version (major)", "type": "number", "minimum": 1, "maximum": 1 }, "version_minor": { "description": "Format version (minor)", "type": "number" }, "model_id": { "description": "Unique identifier of the widget model to be displayed", "type": "string" } }, "required": ["model_id"], "additionalProperties": false } ipywidgets-8.1.1/packages/schema/v2/000077500000000000000000000000001450026722000172545ustar00rootroot00000000000000ipywidgets-8.1.1/packages/schema/v2/state.schema.json000066400000000000000000000055011450026722000225270ustar00rootroot00000000000000{ "$schema": "http://json-schema.org/draft-07/schema#", "description": "Jupyter Interactive Widget State JSON schema.", "type": "object", "properties": { "version_major": { "description": "Format version (major)", "type": "number", "minimum": 2, "maximum": 2 }, "version_minor": { "description": "Format version (minor)", "type": "number", "minimum": 0, "maximum": 0 }, "state": { "description": "Model State for All Widget Models - keys are model ids, values are model state", "type": "object", "additionalProperties": { "type": "object", "properties": { "model_name": { "description": "Name of the JavaScript class holding the model implementation", "type": "string" }, "model_module": { "description": "Name of the JavaScript module holding the model implementation", "type": "string" }, "model_module_version": { "description": "Semver range for the JavaScript module holding the model implementation", "type": "string" }, "state": { "description": "Serialized state of the model", "type": "object" }, "buffers": { "description": "Binary buffers in the state", "type": "array", "items": { "type": "object", "properties": { "path": { "description": "A path for a binary buffer value.", "type": "array", "items": { "description": "An object key or array index", "type": ["string", "number"] } }, "data": { "description": "A binary buffer encoded as specified in the 'encoding' property", "type": "string" }, "encoding": { "description": "The encoding of the buffer data", "type": "string", "oneOf": [ { "const": "hex", "description": "Base 16 encoding, as specified in RFC 4648, section 8 (https://tools.ietf.org/html/rfc4648#section-8)" }, { "const": "base64", "description": "Base 64 encoding, as specified in RFC 4648, section 4 (https://tools.ietf.org/html/rfc4648#section-4)" } ] } }, "required": ["path", "data", "encoding"] } } }, "required": ["model_name", "model_module", "state"] } } }, "required": ["version_major", "version_minor", "state"] } ipywidgets-8.1.1/packages/schema/v2/view.schema.json000066400000000000000000000010601450026722000223550ustar00rootroot00000000000000{ "$schema": "http://json-schema.org/draft-07/schema#", "description": "Jupyter Interactive Widget View JSON schema.", "type": "object", "properties": { "version_major": { "description": "Format version (major)", "type": "number", "minimum": 2, "maximum": 2 }, "version_minor": { "description": "Format version (minor)", "type": "number" }, "model_id": { "description": "Unique identifier of the widget model to be displayed", "type": "string" } }, "required": ["model_id"] } ipywidgets-8.1.1/python/000077500000000000000000000000001450026722000152305ustar00rootroot00000000000000ipywidgets-8.1.1/python/ipywidgets/000077500000000000000000000000001450026722000174205ustar00rootroot00000000000000ipywidgets-8.1.1/python/ipywidgets/LICENSE000066400000000000000000000027511450026722000204320ustar00rootroot00000000000000Copyright (c) 2015 Project Jupyter Contributors All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. 3. Neither the name of the copyright holder nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ipywidgets-8.1.1/python/ipywidgets/MANIFEST.in000066400000000000000000000007131450026722000211570ustar00rootroot00000000000000include LICENSE include CONTRIBUTING.md include README.md include package.json # Documentation graft docs exclude docs/\#* # Tests graft ipywidgets/tests # Static Assets graft ipywidgets/static # Docs subdirs we want to skip prune docs/build prune docs/dist # Patterns to exclude from any directory global-exclude *~ global-exclude *.pyc global-exclude *.pyo global-exclude .git global-exclude .ipynb_checkpoints # Exclude build scripts exclude scripts ipywidgets-8.1.1/python/ipywidgets/README.md000066400000000000000000000015601450026722000207010ustar00rootroot00000000000000# ipywidgets: Interactive HTML Widgets **ipywidgets**, also known as jupyter-widgets or simply widgets, are [interactive HTML widgets](https://github.com/jupyter-widgets/ipywidgets/blob/main/docs/source/examples/Index.ipynb) for Jupyter notebooks and the IPython kernel. This package contains the python implementation of the core interactive widgets bundled in ipywidgets. ## Core Interactive Widgets The fundamental widgets provided by this library are called core interactive widgets. A [demonstration notebook](https://github.com/jupyter-widgets/ipywidgets/blob/main/docs/source/examples/Index.ipynb) provides an overview of the core interactive widgets, including: - sliders - progress bars - text boxes - toggle buttons and checkboxes - display areas - and more For more information, see the main [documentation](https://github.com/jupyter-widgets/ipywidgets#readme). ipywidgets-8.1.1/python/ipywidgets/ipywidgets/000077500000000000000000000000001450026722000216105ustar00rootroot00000000000000ipywidgets-8.1.1/python/ipywidgets/ipywidgets/__init__.py000066400000000000000000000033001450026722000237150ustar00rootroot00000000000000# Copyright (c) Jupyter Development Team. # Distributed under the terms of the Modified BSD License. """Interactive widgets for the Jupyter notebook. Provide simple interactive controls in the notebook. Each Widget corresponds to an object in Python and Javascript, with controls on the page. To put a Widget on the page, you can display it with Jupyter's display machinery:: from ipywidgets import IntSlider slider = IntSlider(min=1, max=10) display(slider) Moving the slider will change the value. Most Widgets have a current value, accessible as a `value` attribute. """ # Must import __version__ first to avoid errors importing this file during the build process. See https://github.com/pypa/setuptools/issues/1724#issuecomment-627241822 from ._version import __version__, __protocol_version__, __jupyter_widgets_controls_version__, __jupyter_widgets_base_version__ import os import sys from traitlets import link, dlink from IPython import get_ipython from .widgets import * def load_ipython_extension(ip): """Set up Jupyter to work with widgets""" if not hasattr(ip, 'kernel'): return register_comm_target() def register_comm_target(kernel=None): """Register the jupyter.widget comm target""" from . import comm comm_manager = comm.get_comm_manager() if comm_manager is None: return comm_manager.register_target('jupyter.widget', Widget.handle_comm_opened) comm_manager.register_target('jupyter.widget.control', Widget.handle_control_comm_opened) def _handle_ipython(): """Register with the comm target at import if running in Jupyter""" ip = get_ipython() if ip is None: return register_comm_target() _handle_ipython() ipywidgets-8.1.1/python/ipywidgets/ipywidgets/_version.py000066400000000000000000000011421450026722000240040ustar00rootroot00000000000000# Copyright (c) Jupyter Development Team. # Distributed under the terms of the Modified BSD License. __version__ = '8.1.1' __protocol_version__ = '2.1.0' __control_protocol_version__ = '1.0.0' # These are *protocol* versions for each package, *not* npm versions. To check, look at each package's src/version.ts file for the protocol version the package implements. __jupyter_widgets_base_version__ = '2.0.0' __jupyter_widgets_output_version__ = '1.0.0' __jupyter_widgets_controls_version__ = '2.0.0' # A compatible @jupyter-widgets/html-manager npm package semver range __html_manager_version__ = '^1.0.1' ipywidgets-8.1.1/python/ipywidgets/ipywidgets/comm.py000066400000000000000000000013741450026722000231220ustar00rootroot00000000000000# compatibility shim for ipykernel < 6.18 import sys from IPython import get_ipython import comm def requires_ipykernel_shim(): if "ipykernel" in sys.modules: import ipykernel version = ipykernel.version_info return version < (6, 18) else: return False def get_comm_manager(): if requires_ipykernel_shim(): ip = get_ipython() if ip is not None and getattr(ip, "kernel", None) is not None: return get_ipython().kernel.comm_manager else: return comm.get_comm_manager() def create_comm(*args, **kwargs): if requires_ipykernel_shim(): from ipykernel.comm import Comm return Comm(*args, **kwargs) else: return comm.create_comm(*args, **kwargs) ipywidgets-8.1.1/python/ipywidgets/ipywidgets/embed.py000066400000000000000000000260271450026722000232450ustar00rootroot00000000000000# Copyright (c) Jupyter Development Team. # Distributed under the terms of the Modified BSD License. # # # Parts of this code is from IPyVolume (24.05.2017), used here under # this copyright and license with permission from the author # (see https://github.com/jupyter-widgets/ipywidgets/pull/1387) """ Functions for generating embeddable HTML/javascript of a widget. """ import json import re from .widgets import Widget, DOMWidget, widget as widget_module from .widgets.widget_link import Link from .widgets.docutils import doc_subst from ._version import __html_manager_version__ snippet_template = """ {load} {widget_views} """ load_template = """""" load_requirejs_template = """ """ requirejs_snippet_template = """ {widget_views} """ html_template = """ {title} {snippet} """ widget_view_template = """""" DEFAULT_EMBED_SCRIPT_URL = 'https://cdn.jsdelivr.net/npm/@jupyter-widgets/html-manager@%s/dist/embed.js'%__html_manager_version__ DEFAULT_EMBED_REQUIREJS_URL = 'https://cdn.jsdelivr.net/npm/@jupyter-widgets/html-manager@%s/dist/embed-amd.js'%__html_manager_version__ _doc_snippets = {} _doc_snippets['views_attribute'] = """ views: widget or collection of widgets or None The widgets to include views for. If None, all DOMWidgets are included (not just the displayed ones). """ _doc_snippets['embed_kwargs'] = """ drop_defaults: boolean Whether to drop default values from the widget states. state: dict or None (default) The state to include. When set to None, the state of all widgets know to the widget manager is included. Otherwise it uses the passed state directly. This allows for end users to include a smaller state, under the responsibility that this state is sufficient to reconstruct the embedded views. indent: integer, string or None The indent to use for the JSON state dump. See `json.dumps` for full description. embed_url: string or None Allows for overriding the URL used to fetch the widget manager for the embedded code. This defaults (None) to a `jsDelivr` CDN url. requirejs: boolean (True) Enables the requirejs-based embedding, which allows for custom widgets. If True, the embed_url should point to an AMD module. cors: boolean (True) If True avoids sending user credentials while requesting the scripts. When opening an HTML file from disk, some browsers may refuse to load the scripts. """ def _find_widget_refs_by_state(widget, state): """Find references to other widgets in a widget's state""" # Copy keys to allow changes to state during iteration: keys = tuple(state.keys()) for key in keys: value = getattr(widget, key) # Trivial case: Direct references to other widgets: if isinstance(value, Widget): yield value # Also check for buried references in known, JSON-able structures # Note: This might miss references buried in more esoteric structures elif isinstance(value, (list, tuple)): for item in value: if isinstance(item, Widget): yield item elif isinstance(value, dict): for item in value.values(): if isinstance(item, Widget): yield item def _get_recursive_state(widget, store=None, drop_defaults=False): """Gets the embed state of a widget, and all other widgets it refers to as well""" if store is None: store = dict() state = widget._get_embed_state(drop_defaults=drop_defaults) store[widget.model_id] = state # Loop over all values included in state (i.e. don't consider excluded values): for ref in _find_widget_refs_by_state(widget, state['state']): if ref.model_id not in store: _get_recursive_state(ref, store, drop_defaults=drop_defaults) return store def add_resolved_links(store, drop_defaults): """Adds the state of any link models between two models in store""" for widget_id, widget in widget_module._instances.items(): # go over all widgets if isinstance(widget, Link) and widget_id not in store: if widget.source[0].model_id in store and widget.target[0].model_id in store: store[widget.model_id] = widget._get_embed_state(drop_defaults=drop_defaults) def dependency_state(widgets, drop_defaults=True): """Get the state of all widgets specified, and their dependencies. This uses a simple dependency finder, including: - any widget directly referenced in the state of an included widget - any widget in a list/tuple attribute in the state of an included widget - any widget in a dict attribute in the state of an included widget - any jslink/jsdlink between two included widgets What this alogorithm does not do: - Find widget references in nested list/dict structures - Find widget references in other types of attributes Note that this searches the state of the widgets for references, so if a widget reference is not included in the serialized state, it won't be considered as a dependency. Parameters ---------- widgets: single widget or list of widgets. This function will return the state of every widget mentioned and of all their dependencies. drop_defaults: boolean Whether to drop default values from the widget states. Returns ------- A dictionary with the state of the widgets and any widget they depend on. """ # collect the state of all relevant widgets if widgets is None: # Get state of all widgets, no smart resolution needed. state = Widget.get_manager_state(drop_defaults=drop_defaults, widgets=None)['state'] else: try: widgets[0] except (IndexError, TypeError): widgets = [widgets] state = {} for widget in widgets: _get_recursive_state(widget, state, drop_defaults) # Add any links between included widgets: add_resolved_links(state, drop_defaults) return state @doc_subst(_doc_snippets) def embed_data(views, drop_defaults=True, state=None): """Gets data for embedding. Use this to get the raw data for embedding if you have special formatting needs. Parameters ---------- {views_attribute} drop_defaults: boolean Whether to drop default values from the widget states. state: dict or None (default) The state to include. When set to None, the state of all widgets know to the widget manager is included. Otherwise it uses the passed state directly. This allows for end users to include a smaller state, under the responsibility that this state is sufficient to reconstruct the embedded views. Returns ------- A dictionary with the following entries: manager_state: dict of the widget manager state data view_specs: a list of widget view specs """ if views is None: views = [w for w in widget_module._instances.values() if isinstance(w, DOMWidget)] else: try: views[0] except (IndexError, TypeError): views = [views] if state is None: # Get state of all known widgets state = Widget.get_manager_state(drop_defaults=drop_defaults, widgets=None)['state'] # Rely on ipywidget to get the default values json_data = Widget.get_manager_state(widgets=[]) # but plug in our own state json_data['state'] = state view_specs = [w.get_view_spec() for w in views] return dict(manager_state=json_data, view_specs=view_specs) script_escape_re = re.compile(r'<(script|/script|!--)', re.IGNORECASE) def escape_script(s): """Escape a string that will be the content of an HTML script tag. We replace the opening bracket of ` tags. """ data = embed_data(views, drop_defaults=drop_defaults, state=state) widget_views = '\n'.join( widget_view_template.format(view_spec=escape_script(json.dumps(view_spec))) for view_spec in data['view_specs'] ) if embed_url is None: embed_url = DEFAULT_EMBED_REQUIREJS_URL if requirejs else DEFAULT_EMBED_SCRIPT_URL load = load_requirejs_template if requirejs else load_template use_cors = ' crossorigin="anonymous"' if cors else '' values = { 'load': load.format(embed_url=embed_url, use_cors=use_cors), 'json_data': escape_script(json.dumps(data['manager_state'], indent=indent)), 'widget_views': widget_views, } return snippet_template.format(**values) @doc_subst(_doc_snippets) def embed_minimal_html(fp, views, title='IPyWidget export', template=None, **kwargs): """Write a minimal HTML file with widget views embedded. Parameters ---------- fp: filename or file-like object The file to write the HTML output to. {views_attribute} title: title of the html page. template: Template in which to embed the widget state. This should be a Python string with placeholders `{{title}}` and `{{snippet}}`. The `{{snippet}}` placeholder will be replaced by all the widgets. {embed_kwargs} """ snippet = embed_snippet(views, **kwargs) values = { 'title': title, 'snippet': snippet, } if template is None: template = html_template html_code = template.format(**values) # Check if fp is writable: if hasattr(fp, 'write'): fp.write(html_code) else: # Assume fp is a filename: with open(fp, "w") as f: f.write(html_code) ipywidgets-8.1.1/python/ipywidgets/ipywidgets/state.schema.json000066400000000000000000000055031450026722000250650ustar00rootroot00000000000000{ "$schema": "http://json-schema.org/draft-07/schema#", "description": "Jupyter Interactive Widget State JSON schema.", "type": "object", "properties": { "version_major": { "description": "Format version (major)", "type": "number", "minimum": 2, "maximum": 2 }, "version_minor": { "description": "Format version (minor)", "type": "number", "minimum": 0, "maximum": 0 }, "state": { "description": "Model State for All Widget Models - keys are model ids, values are model state", "type": "object", "additionalProperties": { "type": "object", "properties": { "model_name": { "description": "Name of the JavaScript class holding the model implementation", "type": "string" }, "model_module": { "description": "Name of the JavaScript module holding the model implementation", "type": "string" }, "model_module_version": { "description": "Semver range for the JavaScript module holding the model implementation", "type": "string" }, "state": { "description": "Serialized state of the model", "type": "object" }, "buffers": { "description": "Binary buffers in the state", "type": "array", "items": { "type": "object", "properties": { "path": { "description": "A path for a binary buffer value.", "type": "array", "items": { "description": "An object key or array index", "type": ["string", "number"] } }, "data": { "description": "A binary buffer encoded as specified in the 'encoding' property", "type": "string" }, "encoding": { "description": "The encoding of the buffer data", "type": "string", "oneOf": [ { "enum": ["hex"], "description": "Base 16 encoding, as specified in RFC 4648, section 8 (https://tools.ietf.org/html/rfc4648#section-8)" }, { "enum": ["base64"], "description": "Base 64 encoding, as specified in RFC 4648, section 4 (https://tools.ietf.org/html/rfc4648#section-4)" } ] } }, "required": ["path", "data", "encoding"] } } }, "required": ["model_name", "model_module", "state"] } } }, "required": ["version_major", "version_minor", "state"] } ipywidgets-8.1.1/python/ipywidgets/ipywidgets/tests/000077500000000000000000000000001450026722000227525ustar00rootroot00000000000000ipywidgets-8.1.1/python/ipywidgets/ipywidgets/tests/__init__.py000066400000000000000000000000001450026722000250510ustar00rootroot00000000000000ipywidgets-8.1.1/python/ipywidgets/ipywidgets/tests/test_embed.py000066400000000000000000000151111450026722000254360ustar00rootroot00000000000000 from io import StringIO from html.parser import HTMLParser import json import os import re import tempfile import shutil import traitlets from ..widgets import IntSlider, IntText, Text, Widget, jslink, HBox, widget_serialization, widget as widget_module from ..embed import embed_data, embed_snippet, embed_minimal_html, dependency_state class CaseWidget(Widget): """Widget to test dependency traversal""" a = traitlets.Instance(Widget, allow_none=True).tag(sync=True, **widget_serialization) b = traitlets.Instance(Widget, allow_none=True).tag(sync=True, **widget_serialization) _model_name = traitlets.Unicode('CaseWidgetModel').tag(sync=True) other = traitlets.Dict().tag(sync=True, **widget_serialization) class TestEmbed: def teardown(self): for w in tuple(widget_module._instances.values()): w.close() def test_embed_data_simple(self): w = IntText(4) state = dependency_state(w, drop_defaults=True) data = embed_data(views=w, drop_defaults=True, state=state) state = data['manager_state']['state'] views = data['view_specs'] assert len(state) == 3 assert len(views) == 1 model_names = [s['model_name'] for s in state.values()] assert 'IntTextModel' in model_names def test_cors(self): w = IntText(4) code = embed_snippet(w) # 1 is from the require assert len(re.findall(' crossorigin', code)) > 1 f = StringIO() embed_minimal_html(f, w) assert len(re.findall(' crossorigin', f.getvalue())) > 1 code = embed_snippet(w, cors=False, requirejs=False) assert ' crossorigin' not in code f = StringIO() embed_minimal_html(f, w, cors=False, requirejs=False) assert ' crossorigin' not in f.getvalue() code = embed_snippet(w, cors=False, requirejs=True) assert len(re.findall(' crossorigin', code)) == 1 # 1 is from the require, which is ok f = StringIO() embed_minimal_html(f, w, cors=False, requirejs=True) assert len(re.findall(' crossorigin', f.getvalue())) == 1 # 1 is from the require, which is ok def test_escape(self): w = Text(' hi') code = embed_snippet(w) assert code.find(r'', '', '', '', '', '', ].join('\n'); var views = []; var cells = Jupyter.notebook.get_cells(); Jupyter.notebook.get_cells().forEach(function (cell) { if (cell.output_area) { cell.output_area.outputs.forEach(function (output) { if ( output.data && output.data[VIEW_MIME_TYPE] && state.state[output.data[VIEW_MIME_TYPE].model_id] ) { views.push( '\n' ); } }); } }); value += views.join('\n'); value += '\n\n\n\n'; var content = document.createElement('textarea'); content.setAttribute('readonly', 'true'); content.style.width = '100%'; content.style.minHeight = '250px'; content.value = value; var mod = dialog.modal({ show: true, title: 'Embed widgets', body: content, keyboard_manager: Jupyter.notebook.keyboard_manager, notebook: Jupyter.notebook, buttons: { 'Copy to Clipboard': { class: 'btn-primary', click: function (event) { content.select(); return document.execCommand('copy'); }, }, }, }); }); } ); }); }; var action = { help: 'Embed interactive widgets', icon: 'fa-sliders', help_index: 'zz', handler: embed_widgets, }; var action_name = 'embed-interactive-widgets'; var prefix = 'widgets'; requirejs(['base/js/namespace'], function (Jupyter) { Jupyter.notebook.keyboard_manager.actions.register( action, action_name, prefix ); }); module.exports = { action: action, }; ipywidgets-8.1.1/python/widgetsnbextension/src/extension.js000066400000000000000000000164401450026722000243210ustar00rootroot00000000000000// Copyright (c) Jupyter Development Team. // Distributed under the terms of the Modified BSD License. 'use strict'; window['requirejs'].config({ map: { '*': { '@jupyter-widgets/controls': 'nbextensions/jupyter-js-widgets/extension', '@jupyter-widgets/base': 'nbextensions/jupyter-js-widgets/extension', '@jupyter-widgets/output': 'nbextensions/jupyter-js-widgets/extension', }, }, }); var MIME_TYPE = 'application/vnd.jupyter.widget-view+json'; var CLASS_NAME = 'jupyter-widgets-view'; var mngr = require('./manager'); require('./save_state'); require('./embed_widgets'); var LuminoWidget = require('@lumino/widgets'); var LuminoMessaging = require('@lumino/messaging'); var NOTEBOOK_VERSION_INFO = Jupyter.version.split('.'); var NOTEBOOK_MAJOR = parseInt(NOTEBOOK_VERSION_INFO[0]); var NOTEBOOK_MINOR = parseInt(NOTEBOOK_VERSION_INFO[1]); var NOTEBOOK_PATCH = parseInt(NOTEBOOK_VERSION_INFO[2]); var RENDER_SHOULD_THROW = NOTEBOOK_MAJOR > 6 || (NOTEBOOK_MAJOR == 6 && NOTEBOOK_MINOR > 4) || (NOTEBOOK_MAJOR == 6 && NOTEBOOK_MINOR == 4 && NOTEBOOK_PATCH > 4); /** * Create a widget manager for a kernel instance. */ var handle_kernel = function (Jupyter, kernel) { if (kernel.comm_manager && kernel.widget_manager === undefined) { // Clear any old widget manager if (Jupyter.WidgetManager) { Jupyter.WidgetManager._managers[0].clear_state(); } // Create a new widget manager instance. Use the global // Jupyter.notebook handle. var manager = new mngr.WidgetManager(kernel.comm_manager, Jupyter.notebook); // For backwards compatibility and interactive use. Jupyter.WidgetManager = mngr.WidgetManager; // Store a handle to the manager so we know not to // another for this kernel. This also is a convenience // for the user. kernel.widget_manager = manager; } }; function register_events(Jupyter, events, outputarea) { // If a kernel already exists, create a widget manager. if (Jupyter.notebook && Jupyter.notebook.kernel) { handle_kernel(Jupyter, Jupyter.notebook.kernel); } // When the kernel is created, create a widget manager. events.on( 'kernel_created.Kernel kernel_created.Session', function (event, data) { handle_kernel(Jupyter, data.kernel); } ); // When a kernel dies, disconnect the widgets. events.on( 'kernel_killed.Session kernel_killed.Kernel kernel_restarting.Kernel', function (event, data) { var kernel = data.kernel; if (kernel && kernel.widget_manager) { kernel.widget_manager.disconnect(); } } ); /** * The views on this page. We keep this list so that we can call the view.remove() * method when a view is removed from the page. */ var views = {}; window.addEventListener('resize', () => { Object.keys(views).forEach((viewKey) => { LuminoMessaging.MessageLoop.postMessage( views[viewKey].luminoWidget, LuminoWidget.Widget.ResizeMessage.UnknownSize ); }); }); var removeView = function (event, data) { var output = data.cell ? data.cell.output_area : data.output_area; var viewids = output ? output._jupyterWidgetViews : void 0; if (viewids) { viewids.forEach(function (id) { // this may be called after the widget is pulled off the page // so we temporarily put it back on the page as a kludge // so that Lumino can trigger the appropriate detach signals var view = views[id]; view.el.style.display = 'none'; document.body.appendChild(view.el); view.remove(); delete views[id]; }); output._jupyterWidgetViews = []; } }; // Deleting a cell does *not* clear the outputs first. events.on('delete.Cell', removeView); // add an event to the notebook element for *any* outputs that are cleared. Jupyter.notebook.container.on('clearing', '.output', removeView); // For before https://github.com/jupyter/notebook/pull/2411 is merged and // released. This does not handle the case where an empty cell is executed // to clear input. events.on('execute.CodeCell', removeView); events.on('clear_output.CodeCell', removeView); /** * Render data to the output area. */ function render(output, data, node) { // data is a model id var manager = Jupyter.notebook && Jupyter.notebook.kernel && Jupyter.notebook.kernel.widget_manager; if (!manager) { var msg = 'Error rendering Jupyter widget: missing widget manager'; if (RENDER_SHOULD_THROW) { throw new Error(msg); } node.textContent = msg; return; } // Missing model id means the view was removed. Hide this element. if (data.model_id === '') { if (RENDER_SHOULD_THROW) { throw new Error('Jupyter Widgets model not found'); } node.style.display = 'none'; return; } if (manager.has_model(data.model_id)) { manager .get_model(data.model_id) .then(function (model) { return manager.create_view(model, { output: output }); }) .then(function (view) { var id = view.cid; output._jupyterWidgetViews = output._jupyterWidgetViews || []; output._jupyterWidgetViews.push(id); views[id] = view; LuminoWidget.Widget.attach(view.luminoWidget, node); // Make the node completely disappear if the view is removed. view.once('remove', () => { // Since we have a mutable reference to the data, delete the // model id to indicate the view is removed. data.model_id = ''; node.style.display = 'none'; }); }); } else { var msg = 'A Jupyter widget could not be displayed because the widget state could not be found. This could happen if the kernel storing the widget is no longer available, or if the widget state was not saved in the notebook. You may be able to create the widget by running the appropriate cells.'; if (RENDER_SHOULD_THROW) { throw new Error(msg); } node.textContent = msg; return; } } // `this` is the output area we are appending to var append_mime = function (json, md, element) { var toinsert = this.create_output_subarea(md, CLASS_NAME, MIME_TYPE); this.keyboard_manager.register_events(toinsert); render(this, json, toinsert[0]); element.append(toinsert); return toinsert; }; // Register mime type with the output area outputarea.OutputArea.prototype.register_mime_type(MIME_TYPE, append_mime, { // An output widget could contain arbitrary user javascript safe: false, // Index of renderer in `output_area.display_order` index: 0, }); } function load_ipython_extension() { return new Promise(function (resolve) { requirejs( ['base/js/namespace', 'base/js/events', 'notebook/js/outputarea'], function (Jupyter, events, outputarea) { require('@lumino/widgets/style/index.css'); require('@jupyter-widgets/base/css/index.css'); require('@jupyter-widgets/controls/css/widgets.css'); register_events(Jupyter, events, outputarea); resolve(); } ); }); } module.exports = { load_ipython_extension: load_ipython_extension, ...require('@jupyter-widgets/controls'), ...require('@jupyter-widgets/base'), ...require('./widget_output'), }; ipywidgets-8.1.1/python/widgetsnbextension/src/manager.js000066400000000000000000000253531450026722000237220ustar00rootroot00000000000000// Copyright (c) Jupyter Development Team. // Distributed under the terms of the Modified BSD License. 'use strict'; var base = require('@jupyter-widgets/base'); var ManagerBase = require('@jupyter-widgets/base-manager').ManagerBase; var widgets = require('@jupyter-widgets/controls'); var outputWidgets = require('./widget_output'); var saveState = require('./save_state'); var embedWidgets = require('./embed_widgets'); var MIME_TYPE = 'application/vnd.jupyter.widget-view+json'; function polyfill_new_comm_buffers( manager, target_name, data, callbacks, metadata, comm_id, buffers ) { /** * This polyfills services/kernel/comm/CommManager.new_comm to * accept the buffers argument. * * argument comm_id is optional */ return new Promise(function (resolve) { requirejs(['services/kernels/comm'], function (comm) { var comm = new comm.Comm(target_name, comm_id); manager.register_comm(comm); // inline Comm.open(), but with buffers var content = { comm_id: comm_id, target_name: target_name, data: data || {}, }; comm.kernel.send_shell_message( 'comm_open', content, callbacks, metadata, buffers ); resolve(comm); }); }); } function new_comm( manager, target_name, data, callbacks, metadata, comm_id, buffers ) { // Checks whether new_comm needs a polyfill, and calls the correct version // Polyfill needed for notebook <5.1, in which the new_comm method does not support a buffers argument. // See https://github.com/jupyter-widgets/ipywidgets/pull/1817 var need_polyfill = manager.new_comm.length < 6; if (need_polyfill) { return polyfill_new_comm_buffers.apply(null, arguments); } return manager.new_comm.apply( manager, Array.prototype.slice.call(arguments, 1) ); } //-------------------------------------------------------------------- // WidgetManager class //-------------------------------------------------------------------- export class WidgetManager extends ManagerBase { constructor(comm_manager, notebook) { super(); // Managers are stored in *reverse* order, so that _managers[0] is the most recent. WidgetManager._managers.unshift(this); // Attach a comm manager this.notebook = notebook; this.keyboard_manager = notebook.keyboard_manager; this.comm_manager = comm_manager; var widget_md = notebook.metadata.widgets; // Steps that needs to be done: // 1. Register comm target // 2. Get any widget state from the kernel and open comms with existing state // 3. Check saved state for widgets, and restore any that would not overwrite // any live widgets. // Register with the comm manager. (1) this.comm_manager.register_target( this.comm_target_name, this.handle_comm_open.bind(this) ); var that = this; this._loadFromKernel() .then(function () { // Now that we have mirrored any widgets from the kernel... // Restore any widgets from saved state that are not live (3) if ( widget_md && widget_md['application/vnd.jupyter.widget-state+json'] ) { var state = notebook.metadata.widgets[ 'application/vnd.jupyter.widget-state+json' ]; state = that.filterExistingModelState(state); return that.set_state(state); } }) .then(function () { // Rerender cells that have widget data that.notebook.get_cells().forEach(function (cell) { var rerender = cell.output_area && cell.output_area.outputs.find(function (output) { return output.data && output.data[MIME_TYPE]; }); if (rerender) { that.notebook.render_cell_output(cell); } }); }); // Create the actions and menu this._init_actions(); this._init_menu(); } loadClass(className, moduleName, moduleVersion) { const failure = () => { throw new Error( 'Class ' + className + ' not found in module ' + moduleName ); }; if (moduleName === '@jupyter-widgets/controls') { return widgets[className] ? Promise.resolve(widgets[className]) : failure(); } else if (moduleName === '@jupyter-widgets/base') { return base[className] ? Promise.resolve(base[className]) : failure(); } else if (moduleName == '@jupyter-widgets/output') { return outputWidgets[className] ? Promise.resolve(outputWidgets[className]) : failure(); } else { return new Promise(function (resolve, reject) { window.require([moduleName], resolve, reject); }).then(function (mod) { if (mod[className]) { return mod[className]; } else { return failure(); } }); } } /** * Registers manager level actions with the notebook actions list */ _init_actions() { var notifier = Jupyter.notification_area.widget('widgets'); this.saveWidgetsAction = { handler: function () { this.get_state({ drop_defaults: true, }).then(function (state) { Jupyter.notebook.metadata.widgets = { 'application/vnd.jupyter.widget-state+json': state, }; Jupyter.menubar.actions .get('jupyter-notebook:save-notebook') .handler({ notebook: Jupyter.notebook, }); }); }.bind(this), icon: 'fa-truck', help: 'Save the notebook with the widget state information for static rendering', }; Jupyter.menubar.actions.register( this.saveWidgetsAction, 'save-with-widgets', 'widgets' ); this.clearWidgetsAction = { handler: function () { delete Jupyter.notebook.metadata.widgets; Jupyter.menubar.actions.get('jupyter-notebook:save-notebook').handler({ notebook: Jupyter.notebook, }); }, help: 'Clear the widget state information from the notebook', }; Jupyter.menubar.actions.register( this.saveWidgetsAction, 'save-clear-widgets', 'widgets' ); } /** * Initialize the widget menu */ _init_menu() { // Add a widgets menubar item, before help. var widgetsMenu = document.createElement('li'); widgetsMenu.classList.add('dropdown'); var helpMenu = document.querySelector('#help_menu').parentElement; helpMenu.parentElement.insertBefore(widgetsMenu, helpMenu); var widgetsMenuLink = document.createElement('a'); widgetsMenuLink.setAttribute('href', '#'); widgetsMenuLink.setAttribute('data-toggle', 'dropdown'); widgetsMenuLink.classList.add('dropdown-toggle'); widgetsMenuLink.innerText = 'Widgets'; widgetsMenu.appendChild(widgetsMenuLink); var widgetsSubmenu = document.createElement('ul'); widgetsSubmenu.setAttribute('id', 'widget-submenu'); widgetsSubmenu.classList.add('dropdown-menu'); widgetsMenu.appendChild(widgetsSubmenu); var divider = document.createElement('ul'); divider.classList.add('divider'); widgetsSubmenu.appendChild( this._createMenuItem('Save Notebook Widget State', this.saveWidgetsAction) ); widgetsSubmenu.appendChild( this._createMenuItem( 'Clear Notebook Widget State', this.clearWidgetsAction ) ); widgetsSubmenu.appendChild(divider); widgetsSubmenu.appendChild( this._createMenuItem('Download Widget State', saveState.action) ); widgetsSubmenu.appendChild( this._createMenuItem('Embed Widgets', embedWidgets.action) ); } /** * Creates a menu item for an action. * @param {string} title - display string for the menu item * @param {Action} action * @return {HTMLElement} menu item */ _createMenuItem(title, action) { var item = document.createElement('li'); item.setAttribute('title', action.help); var itemLink = document.createElement('a'); itemLink.setAttribute('href', '#'); itemLink.innerText = title; item.appendChild(itemLink); item.onclick = action.handler; return item; } _create_comm(comm_target_name, comm_id, data, metadata, buffers) { var that = this; return this._get_connected_kernel().then(function (kernel) { if (data || metadata) { return new_comm( kernel.comm_manager, comm_target_name, data, that.callbacks(), metadata, comm_id, buffers ); } else { // Construct a comm that already is open on the kernel side. We // don't want to send an open message, which would supersede the // kernel comm object, so we instead do by hand the necessary parts // of the new_comm call above. return new Promise(function (resolve) { requirejs(['services/kernels/comm'], function (comm) { var new_comm = new comm.Comm(comm_target_name, comm_id); kernel.comm_manager.register_comm(new_comm); resolve(new_comm); }); }); } }); } _get_comm_info() { /** * Gets a promise for the valid widget models. */ var that = this; return this._get_connected_kernel().then(function (kernel) { return new Promise(function (resolve, reject) { kernel.comm_info('jupyter.widget', function (msg) { resolve(msg['content']['comms']); }); }); }); } _get_connected_kernel() { /** * Gets a promise for a connected kernel */ var that = this; return new Promise(function (resolve, reject) { if ( that.comm_manager && that.comm_manager.kernel && that.comm_manager.kernel.is_connected() ) { resolve(that.comm_manager.kernel); } else { that.notebook.events.on( 'kernel_connected.Kernel', function (event, data) { resolve(data.kernel); } ); } }); } setViewOptions(options) { var options = options || {}; if (!options.output && options.parent) { // use the parent output if we don't have one options.output = options.parent.options.output; } if (options.output) { options.iopub_callbacks = { output: options.output.handle_output.bind(options.output), clear_output: options.output.handle_clear_output.bind(options.output), }; } return options; } /** * Callback handlers for a specific view */ callbacks(view) { var callbacks = ManagerBase.prototype.callbacks.call(this, view); if (view && view.options.iopub_callbacks) { callbacks.iopub = view.options.iopub_callbacks; } return callbacks; } } /** * List of widget managers in *reverse* order * (_managers[0] is the most recent) */ WidgetManager._managers = []; ipywidgets-8.1.1/python/widgetsnbextension/src/save_state.js000066400000000000000000000022661450026722000244440ustar00rootroot00000000000000// Copyright (c) Jupyter Development Team. // Distributed under the terms of the Modified BSD License. 'use strict'; var save_state = function () { return new Promise(function (resolve, reject) { requirejs(['base/js/namespace'], function (Jupyter) { var wm = Jupyter.WidgetManager._managers[0]; if (!wm) { reject('No widget manager'); } return wm .get_state({ drop_defaults: true, }) .then(function (state) { var data = 'text/json;charset=utf-8,' + encodeURIComponent(JSON.stringify(state, null, ' ')); var a = document.createElement('a'); a.download = 'widget_state.json'; a.href = 'data:' + data; a.click(); resolve(); }); }); }); }; var action = { help: 'Download the widget state as a JSON file', icon: 'fa-sliders', help_index: 'zz', handler: save_state, }; var action_name = 'save-widget-state'; var prefix = 'widgets'; requirejs(['base/js/namespace'], function (Jupyter) { Jupyter.notebook.keyboard_manager.actions.register( action, action_name, prefix ); }); module.exports = { action: action }; ipywidgets-8.1.1/python/widgetsnbextension/src/widget_output.css000066400000000000000000000010221450026722000253520ustar00rootroot00000000000000/* * Copyright (c) Jupyter Development Team. * Distributed under the terms of the Modified BSD License. */ /* Override the correction for the prompt area in https://github.com/jupyter/notebook/blob/dd41d9fd5c4f698bd7468612d877828a7eeb0e7a/IPython/html/static/notebook/less/outputarea.less#L110 */ .jupyter-widgets-output-area div.output_subarea { max-width: 100%; } /* Work-around for the bug fixed in https://github.com/jupyter/notebook/pull/2961 */ .jupyter-widgets-output-area > .out_prompt_overlay { display: none; } ipywidgets-8.1.1/python/widgetsnbextension/src/widget_output.js000066400000000000000000000121421450026722000252030ustar00rootroot00000000000000// Copyright (c) Jupyter Development Team. // Distributed under the terms of the Modified BSD License. 'use strict'; // This widget is strongly coupled to the notebook because of the outputarea // dependency. var outputBase = require('@jupyter-widgets/output'); require('./widget_output.css'); var outputArea = new Promise(function (resolve, reject) { requirejs(['notebook/js/outputarea'], resolve, reject); }); export class OutputModel extends outputBase.OutputModel { defaults() { return { ...super.defaults(), msg_id: '', outputs: [], }; } initialize(attributes, options) { super.initialize(attributes, options); this.listenTo(this, 'change:msg_id', this.reset_msg_id); if (this.comm && this.comm.kernel) { this.kernel = this.comm.kernel; this.kernel.set_callbacks_for_msg(this.model_id, this.callbacks(), false); } var that = this; // Create an output area to handle the data model part outputArea.then(function (outputArea) { that.output_area = new outputArea.OutputArea({ selector: document.createElement('div'), config: { data: { OutputArea: {} } }, prompt_area: false, events: that.widget_manager.notebook.events, keyboard_manager: that.widget_manager.keyboard_manager, }); that.listenTo( that, 'new_message', function (msg) { that.output_area.handle_output(msg); that.set('outputs', that.output_area.toJSON(), { newMessage: true }); that.save_changes(); }, that ); that.listenTo(that, 'clear_output', function (msg) { that.output_area.handle_clear_output(msg); that.set('outputs', that.output_area.toJSON(), { newMessage: true }); that.save_changes(); }); that.listenTo(that, 'change:outputs', that.setOutputs); that.setOutputs(); }); } // make callbacks callbacks() { // Merge our callbacks with the base class callbacks. var cb = super.callbacks(); var iopub = cb.iopub || {}; var iopubCallbacks = { ...iopub, output: function (msg) { this.trigger('new_message', msg); if (iopub.output) { iopub.output.apply(this, arguments); } }.bind(this), clear_output: function (msg) { this.trigger('clear_output', msg); if (iopub.clear_output) { iopub.clear_output.apply(this, arguments); } }.bind(this), }; return { ...cb, iopub: iopubCallbacks }; } reset_msg_id() { var kernel = this.kernel; // Pop previous message id var prev_msg_id = this.previous('msg_id'); if (prev_msg_id && kernel) { var previous_callback = kernel.output_callback_overrides_pop(prev_msg_id); if (previous_callback !== this.model_id) { console.error( 'Popped wrong message (' + previous_callback + ' instead of ' + this.model_id + ') - likely the stack was not maintained in kernel.' ); } } var msg_id = this.get('msg_id'); if (msg_id && kernel) { kernel.output_callback_overrides_push(msg_id, this.model_id); } } setOutputs(model, value, options) { if (!(options && options.newMessage)) { // fromJSON does not clear the existing output this.output_area.clear_output(); // fromJSON does not copy the message, so we make a deep copy this.output_area.fromJSON( JSON.parse(JSON.stringify(this.get('outputs'))) ); } } } export class OutputView extends outputBase.OutputView { render() { var that = this; this.el.classList.add('jupyter-widgets-output-area'); outputArea.then(function (outputArea) { that.output_area = new outputArea.OutputArea({ selector: that.el, // use default values for the output area config config: { data: { OutputArea: {} } }, prompt_area: false, events: that.model.widget_manager.notebook.events, keyboard_manager: that.model.widget_manager.keyboard_manager, }); that.listenTo( that.model, 'new_message', function (msg) { that.output_area.handle_output(msg); }, that ); that.listenTo(that.model, 'clear_output', function (msg) { that.output_area.handle_clear_output(msg); // fake the event on the output area element. This can be // deleted when we can rely on // https://github.com/jupyter/notebook/pull/2411 being // available. that.output_area.element.trigger('clearing', { output_area: this }); }); // Render initial contents from the current model that.listenTo(that.model, 'change:outputs', that.setOutputs); that.setOutputs(); }); super.render(); } setOutputs(model, value, options) { if (!(options && options.newMessage)) { // fromJSON does not clear the existing output this.output_area.clear_output(); // fromJSON does not copy the message, so we make a deep copy this.output_area.fromJSON( JSON.parse(JSON.stringify(this.model.get('outputs'))) ); } } } ipywidgets-8.1.1/python/widgetsnbextension/webpack.config.js000066400000000000000000000012421450026722000243700ustar00rootroot00000000000000var path = require('path'); module.exports = { entry: ['./amd-public-path.js', './src/extension.js'], output: { filename: 'extension.js', path: path.resolve(__dirname, 'widgetsnbextension', 'static'), libraryTarget: 'amd', publicPath: '', // Set in amd-public-path.js }, devtool: 'source-map', module: { rules: [ { test: /\.css$/, use: ['style-loader', 'css-loader'] }, // required to load font-awesome { test: /\.(woff|woff2|eot|ttf|otf)$/i, type: 'asset/resource' }, { test: /\.svg$/i, type: 'asset' }, ], }, // 'module' is the magic requirejs dependency used to set the publicPath externals: ['module'], }; ipywidgets-8.1.1/python/widgetsnbextension/widgetsnbextension.json000066400000000000000000000001101450026722000257610ustar00rootroot00000000000000{ "load_extensions": { "jupyter-js-widgets/extension": true } } ipywidgets-8.1.1/python/widgetsnbextension/widgetsnbextension/000077500000000000000000000000001450026722000250765ustar00rootroot00000000000000ipywidgets-8.1.1/python/widgetsnbextension/widgetsnbextension/__init__.py000066400000000000000000000013751450026722000272150ustar00rootroot00000000000000"""Interactive widgets for the Jupyter notebook. Provide simple interactive controls in the notebook. Each widget corresponds to an object in Python and Javascript, with controls on the page. You can display widgets with IPython's display machinery:: from ipywidgets import IntSlider from IPython.display import display slider = IntSlider(min=1, max=10) display(slider) Moving the slider will change the value. Most widgets have a current value, accessible as a `value` attribute. """ from ._version import __version__ from warnings import warn def _jupyter_nbextension_paths(): return [{ 'section': 'notebook', 'src': 'static', 'dest': 'jupyter-js-widgets', 'require': 'jupyter-js-widgets/extension' }] ipywidgets-8.1.1/python/widgetsnbextension/widgetsnbextension/_version.py000066400000000000000000000001741450026722000272760ustar00rootroot00000000000000# Copyright (c) Jupyter Development Team. # Distributed under the terms of the Modified BSD License. __version__ = '4.0.9' ipywidgets-8.1.1/scripts/000077500000000000000000000000001450026722000153765ustar00rootroot00000000000000ipywidgets-8.1.1/scripts/hashes000077500000000000000000000002651450026722000166020ustar00rootroot00000000000000#!/bin/sh for f in $@ do echo "$f" echo md5: `md5 -q "$f"` echo sha1: `shasum -a 1 "$f" | awk '{print $1}'` echo sha256: `shasum -a 256 "$f" | awk '{print $1}'` echo done ipywidgets-8.1.1/scripts/milestone_check.py000066400000000000000000000136621450026722000211140ustar00rootroot00000000000000# Copyright (c) 2018 Jupyter Development Team. # Distributed under the terms of the Modified BSD License. # Generate a GitHub token at https://github.com/settings/tokens # Invoke this script using something like: # python scripts/milestone_check.py # From the milestone_check.py script in JupyterLab import subprocess import requests import os import sys REPO = 'jupyter-widgets/ipywidgets' ranges = { '8.0': 'origin/main ^7.x', } try: api_token = os.environ['GITHUB_TOKEN'] except KeyError: print('Error: set the environment variable GITHUB_TOKEN to a GitHub authentication token (see https://github.com/settings/tokens)') exit(1) if len(sys.argv) != 2: print('Error: exactly one argument expected, the milestone.') exit(1) MILESTONE=sys.argv[1] if MILESTONE not in ranges: print('Error: I do not know about milestone %r. Possible milestones are %r'%(MILESTONE, list(ranges.keys()))) exit(1) out = subprocess.run("git log {} --format='%H,%cE,%s'".format(ranges[MILESTONE]), shell=True, encoding='utf8', stdout=subprocess.PIPE) commits = {i[0]: (i[1], i[2]) for i in (x.split(',',2) for x in out.stdout.splitlines())} url = 'https://api.github.com/graphql' json = { 'query' : """ query test($cursor: String) { search(first: 50, after: $cursor, type: ISSUE, query: "repo:%(repo)s milestone:%(milestone)s is:pr is:merged ") { issueCount pageInfo { endCursor hasNextPage } nodes { ... on PullRequest { title number mergeCommit { oid } commits(first: 100) { totalCount nodes { commit { oid } } } } } } } """%{'milestone': MILESTONE, 'repo': REPO}, 'variables': { 'cursor': None } } headers = {'Authorization': 'token %s' % api_token} # construct a commit to PR dictionary prs = {} large_prs = [] cursor = None while True: json['variables']['cursor'] = cursor r = requests.post(url=url, json=json, headers=headers) results = r.json()['data']['search'] total_prs = results['issueCount'] pr_list = results['nodes'] for pr in pr_list: if pr['commits']['totalCount'] > 100: large_prs.append(pr['number']) continue # TODO fetch commits prs[pr['number']] = {'mergeCommit': pr['mergeCommit']['oid'], 'commits': set(i['commit']['oid'] for i in pr['commits']['nodes'])} has_next_page = results['pageInfo']['hasNextPage'] cursor = results['pageInfo']['endCursor'] if not has_next_page: break prjson = {'query': """ query test($pr:Int!, $cursor: String) { repository(owner: "%(repoowner)s", name: "%(reponame)s") { pullRequest(number: $pr) { title number mergeCommit { oid } commits(first: 100, after: $cursor) { totalCount pageInfo { endCursor hasNextPage } nodes { commit { oid } } } } } } """%{'repoowner': REPO.split('/')[0], 'reponame': REPO.split('/')[1]}, 'variables': { 'pr': None, 'cursor': None }} for prnumber in large_prs: prjson['variables']['pr']=prnumber pr_commits = set() while True: r = requests.post(url=url, json=prjson, headers=headers) pr = r.json()['data']['repository']['pullRequest'] assert pr['number']==prnumber total_commits = pr['commits']['totalCount'] pr_commits.update(i['commit']['oid'] for i in pr['commits']['nodes']) has_next_page = results['pageInfo']['hasNextPage'] cursor = results['pageInfo']['endCursor'] if not pr['commits']['pageInfo']['hasNextPage']: break prjson['variables']['cursor'] = pr['commits']['pageInfo']['endCursor'] prs[prnumber] = {'mergeCommit': pr['mergeCommit']['oid'], 'commits': pr_commits} if total_commits > len(pr_commits): print("WARNING: PR %d (merge %s) has %d commits, but GitHub is only giving us %d of them"%(prnumber, pr['mergeCommit']['oid'], total_commits, len(pr_commits))) # Check we got all PRs assert len(prs) == total_prs # Reverse dictionary commits_to_prs={} for key,value in prs.items(): commits_to_prs[value['mergeCommit']]=key for c in value['commits']: commits_to_prs[c]=key # Check to see if commits in the repo are represented in PRs good = set() notfound = set() for c in commits: if c in commits_to_prs: good.add(commits_to_prs[c]) else: notfound.add(c) prs_not_represented = set(prs.keys()) - good print("Milestone: %s, %d merged PRs, %d commits in history"%(MILESTONE, total_prs, len(commits))) print() print('-'*40) print() if len(prs_not_represented) > 0: print(""" PRs that are in the milestone, but have no commits in the version range. These PRs probably belong in a different milestone. """) print('\n'.join(f'https://github.com/{REPO}/pull/{i}' for i in prs_not_represented)) else: print('Congratulations! All PRs in this milestone have commits in the commit history for this version range, so they all probably belong in this milestone.') print() print('-'*40) print() if len(notfound): print("""The following commits are not included in any PR on this milestone. This probably means the commit's PR needs to be assigned to this milestone, or the commit was pushed to main directly. """) print('\n'.join('%s %s %s'%(c, commits[c][0], commits[c][1]) for c in notfound)) prs_to_check = [c for c in notfound if 'Merge pull request #' in commits[c][1] and commits[c][0] == 'noreply@github.com'] if len(prs_to_check)>0: print() print("Try checking these PRs. They probably should be in the milestone, but probably aren't:") print() print('\n'.join('%s %s'%(c, commits[c][1]) for c in prs_to_check)) else: print('Congratulations! All commits in the commit history are included in some PR in this milestone.') ipywidgets-8.1.1/scripts/package-integrity.js000066400000000000000000000101361450026722000213440ustar00rootroot00000000000000/** * Verify the integrity of each package - ensure package json matches * imports * * Originally based on https://github.com/jupyterlab/jupyterlab/blob/a36639e65aa0c5bc50b2b0bfa562bde1bb393c28/scripts/package-integrity.js * */ var readFileSync = require('fs').readFileSync; var writeFileSync = require('fs').writeFileSync; var ts = require('typescript'); var glob = require('glob'); var childProcess = require('child_process'); var path = require('path'); // Packages to ignore var IGNORE = { '@jupyter-widgets/base': ['@types/backbone', '@types/lodash'], '@jupyter-widgets/controls': ['@jupyter-widgets/base'], '@jupyter-widgets/jupyterlab-manager': [ 'backbone', '@types/backbone', '@jupyterlab/cells', ], '@jupyter-widgets/html-manager': ['ajv', '@jupyter-widgets/schema'], '@jupyter-widgets/example-web-tmpnb': ['http-server', 'font-awesome'], '@jupyter-widgets/example-web3': ['http-server', '@jupyter-widgets/controls'], }; /** * Extract the module imports from a TypeScript source file. */ function getImports(sourceFile) { var imports = []; handleNode(sourceFile); function handleNode(node) { switch (node.kind) { case ts.SyntaxKind.ImportDeclaration: imports.push(node.moduleSpecifier.text); break; case ts.SyntaxKind.ImportEqualsDeclaration: imports.push(node.moduleReference.expression.text); break; } ts.forEachChild(node, handleNode); } return imports; } /** * Validate the integrity of a package in a directory. */ function validate(dname) { var filenames = glob.sync(dname + '/src/*.ts*'); filenames = filenames.concat(glob.sync(dname + '/src/**/*.ts*')); if (filenames.length == 0) { return []; } var imports = []; try { var pkg = require(path.resolve(dname) + '/package.json'); } catch (e) { return []; } var ignore = IGNORE[pkg['name']] || []; var deps = pkg['dependencies']; // Extract all of the imports from the TypeScript files. filenames.forEach((fileName) => { var sourceFile = ts.createSourceFile( fileName, readFileSync(fileName).toString(), ts.ScriptTarget.ES6, /*setParentNodes */ true ); imports = imports.concat(getImports(sourceFile)); //console.log(fileName, getImports(sourceFile)); }); var names = Array.from(new Set(imports)).sort(); names = names.map(function (name) { var parts = name.split('/'); if (name.indexOf('@') === 0) { return parts[0] + '/' + parts[1]; } return parts[0]; }); var problems = []; names.forEach(function (name) { if (name === '..' || name === '.' || ignore.indexOf(name) !== -1) { return; } if (!deps[name]) { problems.push('Missing package: ' + name); } }); Object.keys(deps).forEach(function (name) { if (ignore.indexOf(name) !== -1) { return; } if (versions[name]) { var desired = '^' + versions[name]; if (deps[name] !== desired) { problems.push('Bad core version: ' + name + ' should be ' + desired); } } if (names.indexOf(name) === -1) { problems.push('Unused package: ' + name); } }); return problems; } // Find all of the packages. var basePath = path.resolve('.'); var baseConfig = require(path.join(basePath, 'package.json')); // Gather the versions of each package. var versions = {}; baseConfig.workspaces.forEach(function (spec) { var dirs = glob.sync(path.join(basePath, spec)); dirs.forEach(function (dname) { try { var pkg = require(path.resolve(dname) + '/package.json'); versions[pkg['name']] = pkg['version']; } catch (e) { return; } }); }); var errors = {}; // Validate each package. baseConfig.workspaces.forEach(function (spec) { var dirs = glob.sync(path.join(basePath, spec)); dirs.forEach(function (dname) { var name = path.relative('.', dname); var problems = validate(dname); if (problems.length > 0) { errors[name] = problems; } }); }); // Handle any errors. if (Object.keys(errors).length > 0) { console.log('Package integrity failures:'); console.log(JSON.stringify(errors, null, 2)); process.exit(1); } ipywidgets-8.1.1/scripts/release_template.txt000066400000000000000000000011571450026722000214560ustar00rootroot00000000000000### [v{{ version }}](https://github.com/jupyter-widgets/ipywidgets/releases/tag/v{{ version }}) ({{ close_date }}) See the [ipywidgets {{ version }}](https://github.com/jupyter-widgets/ipywidgets/milestone/XXXX?closed=1) milestone on GitHub for the full list of pull requests and issues closed. {% for pr in pull_requests -%} * {{ pr['title'] | capitalize }} ([#{{ pr['number'] }}]({{pr['html_url']}}) {%- if pr['loghub_related_issues']|length %} {%- for pri in pr['loghub_related_issues'] -%} , [#{{ pri['text'] }}]({{ pri['url'] }}) {%- endfor -%} {%- endif %}) {% endfor %} ipywidgets-8.1.1/scripts/strip_examples.py000077500000000000000000000041221450026722000210110ustar00rootroot00000000000000#!/usr/bin/env python """strip outputs from an IPython Notebook Opens a notebook, strips its output, and writes the outputless version to the original file. Useful mainly as a git filter or pre-commit hook for users who don't want to track output in VCS. This does mostly the same thing as the `Clear All Output` command in the notebook UI. LICENSE: Public Domain From https://gist.github.com/minrk/6176788 ls docs/source/examples/*.ipynb | xargs -I {} ./scripts/strip_examples.py "{}" After running this on the examples, re-run the outputs on: Using Interact.ipynb Output Widget.ipynb Image Browser.ipynb Widget Basics.ipynb Beat Frequencies.ipynb Lorenz Differential Equations.ipynb Widget Events.ipynb Export As (nbconvert).ipynb Exploring Graphs.ipynb Image Processing.ipynb Widget List.ipynb Widget Styling.ipynb Widget Low Level.ipynb Factoring.ipynb Widget Alignment.ipynb """ import io import sys try: # Jupyter >= 4 from nbformat import read, write, NO_CONVERT except ImportError: # IPython 3 try: from IPython.nbformat import read, write, NO_CONVERT except ImportError: # IPython < 3 from IPython.nbformat import current def read(f, as_version): return current.read(f, 'json') def write(nb, f): return current.write(nb, f, 'json') def _cells(nb): """Yield all cells in an nbformat-insensitive manner""" if nb.nbformat < 4: for ws in nb.worksheets: yield from ws.cells else: yield from nb.cells def strip_output(nb): """strip the outputs from a notebook object""" nb.metadata.pop('signature', None) nb.metadata.pop('widgets', None) for cell in _cells(nb): if 'outputs' in cell: cell['outputs'] = [] if 'prompt_number' in cell: cell['prompt_number'] = None return nb if __name__ == '__main__': filename = sys.argv[1] with open(filename, 'r', encoding='utf8') as f: nb = read(f, as_version=NO_CONVERT) nb = strip_output(nb) with open(filename, 'w', encoding='utf8') as f: write(nb, f) ipywidgets-8.1.1/tests/000077500000000000000000000000001450026722000150515ustar00rootroot00000000000000ipywidgets-8.1.1/tests/jlogo-small.png000066400000000000000000000026571450026722000200110ustar00rootroot00000000000000PNG  IHDR2gAMA a cHRMz&u0`:pQ<bKGDtIME!EdIDATHǭ[]ULgڙV\X޸ 5j,HAy &F3Jډ1<1>pi5B ZA|P zP*@939=g>OL[Kdego2JDG1X塞SN)-9ܚ0c8;F`KJ!h@;"z!t.j 583NXk}DO܆{g'j/Ff\`yh4G |['E*"V>\㓭q_UHvе?Cs3:)">oy8:7b([Sӷma{U73Hyc1;gr؀7 @{tjQJIDxxgs5f"< )""`Q|OnѫV܏;p`مFv[Қ_Q]:l͠7ѩiͬ3w>\ P}2ٱo Uë>?7w[)qJs9B&IEϘrD#"NwˎޞsraVD(\]87oF]+ac5& 4GF?yRp).{pw𪼶d#?uY+xPUdKU[UoS*Xpk]w( Vc/>x("s%:;[~ QuӸ'~6{ſ #3\ }ȅ:7"n%"XUcЪnyT\wGn/bJ355UH_CsS^Z4|SJj^맜e ڋz͹z::5 5twq ^[^E*r ;UotjZϬlvS!_q8'yi$}QՇ+qC,Z#Un9QǓ ZV5.=6v;iǺgI[],HV|uzlq['Bkۛ.%}A5WVyʲ|(&@?z|FE!agkr|grxF3ȟݕ8Kr`w r*;o璉w51v;DHDňxK;}颈GM9/^ux=%tEXtdate:create2020-06-08T17:22:33+02:00Kة%tEXtdate:modify2020-06-08T17:22:33+02:00:5IENDB`ipywidgets-8.1.1/tests/test_borders.ipynb000066400000000000000000000042021450026722000206110ustar00rootroot00000000000000{ "cells": [ { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "from ipywidgets import *" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "t1 = Text(\"text input\", layout=Layout(\n", " width=\"80px\", border=\"1px dashed red\"\n", "))\n", "b1 = Button(description=\"button\")\n", "HBox((t1,b1))" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "b1.layout.border = \"2px solid yellow\"\n", "t1.layout.border_left = \"5px dotted blue\"\n", "b1.layout.border_right = \"2px dotted blue\"" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "t2 = Text(\"text input\")\n", "b2 = ToggleButton(description=\"toggle button\", layout=Layout(\n", " width=\"200px\", border_left=\"2px solid yellow\"\n", "))\n", "HBox((t2,b2))" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "t2.layout.border_left = \"5px dotted blue\"\n", "b2.layout.border_right = \"2px dotted blue\"\n", "t2.layout.border = \"1px dashed red\"" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "t1.layout.border_top = \"5px solid green\"\n", "b1.layout.border = \"1px solid purple\"\n", "t2.layout.border_right = \"5px double skyblue\"" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "t2.layout.border_right = None" ] } ], "metadata": { "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.7.3" } }, "nbformat": 4, "nbformat_minor": 2 } ipywidgets-8.1.1/tests/test_sanitizer.ipynb000066400000000000000000000047601450026722000211720ustar00rootroot00000000000000{ "cells": [ { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "from ipywidgets import *" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "Checkbox(description=\"

italic

bold

\", description_allow_html=False)" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "Checkbox(description=\"

italic

bold

\", description_allow_html=True)" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "Text(description=\" NOT styled\", description_allow_html=False)" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "Text(description=\" styled\", description_allow_html=True)" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "Textarea(description=\" underlined\", description_allow_html=True)" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "VBox((Text(description=\"$ y < a, x $\", allow_html=True),\n", " Text(description=\"$ y < a, x $\", description_allow_html=True)\n", " ))" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "VBox((Label(\"$ y < a, x > a$\"), HTMLMath(\"$ y < a, x > a$\")))" ] } ], "metadata": { "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.8.1" } }, "nbformat": 4, "nbformat_minor": 4 } ipywidgets-8.1.1/tsconfig.typedoc.json000066400000000000000000000012031450026722000200600ustar00rootroot00000000000000{ "$schema": "http://json.schemastore.org/tsconfig", "compilerOptions": { "lib": ["ES2019", "WebWorker", "ScriptHost", "DOM", "DOM.Iterable"], "paths": { "@jupyter-widgets/*": [ "./packages/*/src", "./python/jupyterlab_widgets/src" ] } }, "extends": "./tsconfigbase", "references": [ { "path": "./packages/base" }, { "path": "./packages/base-manager" }, { "path": "./packages/controls" }, { "path": "./packages/html-manager" }, { "path": "./packages/output" }, { "path": "./python/jupyterlab_widgets" } ] } ipywidgets-8.1.1/tsconfigbase.json000066400000000000000000000012021450026722000172440ustar00rootroot00000000000000{ "$schema": "http://json.schemastore.org/tsconfig", "compilerOptions": { "allowSyntheticDefaultImports": true, "composite": true, "declaration": true, "declarationMap": true, "esModuleInterop": true, "incremental": true, "jsx": "react", "module": "esnext", "moduleResolution": "node", "noEmitOnError": true, "noImplicitAny": true, "noImplicitThis": false, "noUnusedLocals": true, "preserveWatchOutput": true, "resolveJsonModule": true, "skipLibCheck": true, "sourceMap": true, "strict": true, "strictPropertyInitialization": false, "target": "es2017" } } ipywidgets-8.1.1/typedoc.json000066400000000000000000000006441450026722000162550ustar00rootroot00000000000000{ "$schema": "https://typedoc.org/schema.json", "entryPointStrategy": "packages", "entryPoints": [ "packages/base", "packages/base-manager", "packages/controls", "packages/html-manager", "packages/output", "python/jupyterlab_widgets" ], "githubPages": false, "logLevel": "Verbose", "name": "jupyter-widgets", "out": "docs/typedoc/typedoc", "tsconfig": "tsconfig.typedoc.json" } ipywidgets-8.1.1/ui-tests/000077500000000000000000000000001450026722000154645ustar00rootroot00000000000000ipywidgets-8.1.1/ui-tests/.yarnrc000066400000000000000000000001641450026722000167640ustar00rootroot00000000000000disable-self-update-check true ignore-optional true network-timeout "300000" registry "https://registry.npmjs.org/" ipywidgets-8.1.1/ui-tests/jupyter_server_config.py000066400000000000000000000002521450026722000224520ustar00rootroot00000000000000from jupyterlab.galata import configure_jupyter_server configure_jupyter_server(c) # Uncomment to set server log level to debug level # c.ServerApp.log_level = "DEBUG" ipywidgets-8.1.1/ui-tests/package.json000066400000000000000000000013131450026722000177500ustar00rootroot00000000000000{ "name": "@jupyter-widgets/ui-tests", "private": true, "version": "0.1.0", "description": "ipywidgets UI Tests", "scripts": { "start": "jupyter lab --config ./jupyter_server_config.py", "start:detached": "jlpm start&", "test": "npx playwright test", "test:debug": "PWDEBUG=1 npx playwright test", "test:report": "http-server ./playwright-report -a localhost -o", "test:update": "npx playwright test --update-snapshots", "deduplicate": "jlpm && yarn-deduplicate -s fewer --fail" }, "author": "Project Jupyter", "license": "BSD-3-Clause", "devDependencies": { "@jupyterlab/galata": "^5.0.1", "@playwright/test": "^1.32.0", "yarn-deduplicate": "^6.0.1" } } ipywidgets-8.1.1/ui-tests/playwright.config.js000066400000000000000000000004511450026722000214600ustar00rootroot00000000000000const baseConfig = require('@jupyterlab/galata/lib/playwright-config'); module.exports = { ...baseConfig, timeout: 240000, webServer: { command: 'jlpm start', url: 'http://localhost:8888/lab', timeout: 120 * 1000, reuseExistingServer: !process.env.CI, }, retries: 1, }; ipywidgets-8.1.1/ui-tests/tests/000077500000000000000000000000001450026722000166265ustar00rootroot00000000000000ipywidgets-8.1.1/ui-tests/tests/notebooks/000077500000000000000000000000001450026722000206315ustar00rootroot00000000000000ipywidgets-8.1.1/ui-tests/tests/notebooks/WidgetArch.png000066400000000000000000000550221450026722000233640ustar00rootroot00000000000000PNG  IHDR2: AiCCPICC ProfileH wTSϽ7" %z ;HQIP&vDF)VdTG"cE b PQDE݌k 5ޚYg}׺PtX4X\XffGD=HƳ.d,P&s"7C$ E6<~&S2)212 "įl+ɘ&Y4Pޚ%ᣌ\%g|eTI(L0_&l2E9r9hxgIbטifSb1+MxL 0oE%YmhYh~S=zU&ϞAYl/$ZUm@O ޜl^ ' lsk.+7oʿ9V;?#I3eE妧KD d9i,UQ h A1vjpԁzN6p\W p G@ K0ށiABZyCAP8C@&*CP=#t] 4}a ٰ;GDxJ>,_“@FXDBX$!k"EHqaYbVabJ0՘cVL6f3bձX'?v 6-V``[a;p~\2n5׌ &x*sb|! ߏƿ' Zk! $l$T4QOt"y\b)AI&NI$R$)TIj"]&=&!:dGrY@^O$ _%?P(&OJEBN9J@y@yCR nXZOD}J}/G3ɭk{%Oחw_.'_!JQ@SVF=IEbbbb5Q%O@%!BӥyҸM:e0G7ӓ e%e[(R0`3R46i^)*n*|"fLUo՝mO0j&jajj.ϧwϝ_4갺zj=U45nɚ4ǴhZ ZZ^0Tf%9->ݫ=cXgN].[7A\SwBOK/X/_Q>QG[ `Aaac#*Z;8cq>[&IIMST`ϴ kh&45ǢYYF֠9<|y+ =X_,,S-,Y)YXmĚk]c}džjcΦ浭-v};]N"&1=xtv(}'{'IߝY) Σ -rqr.d._xpUەZM׍vm=+KGǔ ^WWbj>:>>>v}/avO8 FV> 2 u/_$\BCv< 5 ]s.,4&yUx~xw-bEDCĻHGKwFGEGME{EEKX,YFZ ={$vrK .3\rϮ_Yq*©L_wד+]eD]cIIIOAu_䩔)3ѩiB%a+]3='/40CiU@ёL(sYfLH$%Y jgGeQn~5f5wugv5k֮\۹Nw]m mHFˍenQQ`hBBQ-[lllfjۗ"^bO%ܒY}WwvwXbY^Ю]WVa[q`id2JjGէ{׿m>PkAma꺿g_DHGGu;776ƱqoC{P38!9 ҝˁ^r۽Ug9];}}_~imp㭎}]/}.{^=}^?z8hc' O*?f`ϳgC/Oϩ+FFGGόzˌㅿ)ѫ~wgbk?Jި9mdwi獵ޫ?cǑOO?w| x&mf2:Y~ pHYsgRiTXtXML:com.adobe.xmp 5 2 1 2@IDATx]E.sB̂"(sVzM]&P\âY ׄ+ kNqEEL`B9#;;eMt̽S?wowW8U?Ni  D ,㾳D"@r,7@"@r,7@"@r,7@"@r,7@"@r,7@"@r,7@"@r,7@"@r,7@"@r,7@"@r,7@"@r@w0b3tP3{MQ? u@vM۶mkSeHillf3π 9"3ge!C=zԖ 0p@3qD3wܚ98itbG"@3ڴi9 Z*&D +HdY!v,TL@VȲB" Y0h e4!D $`R1 Y!@" iC@0Hdb"@BDl`ȂAKDd,+   YVH"@!@" -"$f;DCD Z*&D +HdY!v,TL@VȲB" Y0h e4!D $`R1 Y!@" iC@0Hdb"@BDl`ȂAKDd,+   YVH"@!:f*n?YlŚT7"ӪUΙ3Ǡo̚5|'f50kfEX믿.BMO?d;=_~1oYb%jvX6Kӏ?h6|sop {_|ѼfV2cƌ1PAɻ{sO{;Dzk$dz{BW߀#FTU:LJ~[4cƌ'b,ҵGB4C,h}-c!m G믿~jY.M>]1\92Tփ_=ȩjgvj- ͏a9̜9ӼkzYp8_eUR=\se]^^bSNu1:3n/.2N)A?`婧2}-iiY!#gFI%\sM5+,.>^C٪jL޽̓>huy-ZfwbkpiVFix1` KUfϞm;a F 04*aHۺ^۶m.;k g^sWg}]ȗ{lGq4iyl]we6d; ??ĐZE?ӫW/+_~ٌ;A_|Gw1;T0Kڡe{gȶ)`MB5`(yFH"pi򩉄`"xz|rB:Ep7rh/Iv Td?Q22w^E/B6Nn)RLX"!'be2/qUpO#Y(H+ujY}B֥V!C:^Q/~3R; _4-2MG~Z9"ԩSC6hX[K,-*/GȢ.jN;[B,#u@vmgN>\(fix5E/Yml8]A/.T`0Fd<_Gѷ^u'Na-MDd.r[ PmV1=zF@C=^bX`'UMUN=MU 1!^ 7jKFd/h.}A; NJ|Na(-}׳:뮶s1XS $R"+|IP|0+Kuť:8CEK@Zd \!+PY^Uc@phjƉ C# QK!xɮz48&O#%` pXϨ%] J*|l|Wxc wNj;s, ju| &iCKogRFg*ӗu}T]zҴJ~u؈ cd;&%^y v':&nx⋣yGwom`A[,"@YB4ju4YYmEQ'(DP G$)[M:a ŷb>yU㓂OtvL|xSiy.lBF>7bcpW>XT*> M.ytݺu'L`?x7$+Vx^+fixiYw (/ʰj  JF\Q8Gl< #HZXؘ gUϾE] a#m Ysg*IO7?bA.W]u`ZtQc7I42=;HdaڒnA!!&29d77$ $Z 4MRyxY[d@>XYDGb BPb "\I"BpNI3 +յ#-Z[]: rxC=:*!bcbimF/pNU}4M:  @"$!D aY  {G@*EoHd|;"@*@DVH,B@}#@""P$ @b"@Y}?  U"PwDTXFDVχ#DHd"D7$~>  @"$!D aY  {G@*EoHd|;"@*@DVH,B@}#@""P$ @b"@Y}? h]A4h2dHMtQ  C`ԩ::udƎkM& NDj7{l3n8#vڙΝ;DVS! D 'c!@"3c!@"K"@,ό=&D ,/$=3$ $D c"@bb!@"3c!@"K"@,ό=&D ,/㑍1 :a|`@@ÇmV7⑅F;1g9rd)'E6g˼sݣGڲ0"h&NhΝ[>'2q.]LCC^H|@6m1'AKDd,+   YVH"@!@" -"$f;DCD Z*&D +HdY!v,TL@VȲB" Y0h e4!D $`R1 Y!@" iC@0Hdb"@BDl`ȂAKDd,+   YVH"@!@" -"$f;DCD Z*&D +HdY!v,TL@VȲB" Y0h e4!D $`R1 Y!@" iC@0ZLu?`[l[NO3_O/b6xcKjz3FYƀWyg6`OWS͖oooo?3gv7[l6.2 f3ڵ3[m9YgeF]u?M^Zke_|q+=u]%]qfUV1K/iӦYveM۶mm_WXa[V2+9rH/0W^y۷e]fmf:ud냰X`袋Z];v4[o޽7xO2nڵ{W_mI"=zDrws;!o3ϴus=gˋ^z%꫻4u%:kl^}HHHSH믟Zǯs!4C,ںkOnL6-R5_ .`4x.7C $"Ol DW^yżkwsw[ —_~`\ZVkmV[m5s믿n;8kwe'_onY#F(X` ,?8Uվk,=X|3{6>F}Ǽ[ZZ}B`СC{auexR_pGAoڷoG/aA~|g6wE1ݺub|y͆nh@tZqCYf\{cY@rb-0?!mouavmg:t`/棏>2*cX?}-3J~8Ǐ <\of̙fFF6_(MA:!{G}r T#c޼AD6opwѕ4i;/um8:w9"}й Nu?`n`>.  ).pUB.6h##+vG7ttM^+#h3\rmǟwPRp>G\d?JIʁ`Ȧ SNJC$A݋/eÿ Rڄ 0r|.2+~7M{M [ƌq}]՞+rN:,wɶ [,x/B_J!@"gR#ֳg}444ؗ=o[rHlĔtuL/XDd A! , j*a۹JM8Q"âAŞM D+- ZǠZZdw?Pj0==*YB ķȒ\ ``Sʹ,={jQINl{}KVuOU+ pP>]Qm ,,5Ѿ;;=/ V18pV nXm/-3muk$ ,XVػ^s9GJA>g:ӽߜYE!.DL|Q` > s)6;D F2'|=JNc $03P$ [ }AXXuM*40I DH/A'~Z|}i>ۆR j1KgڼAsd[ĀF u(7=)n r=؉o% :z{94+|.rۍ D fs SrtmX?/6+8$%쐽ߤmP_7w_w'|FXt fĄ)u@[>V2FѦ(SL>BqĒ7#dQF nү/m>zb!E{o.!HH_Z %(YYg\d$ $2d6z\)y)qv&/i0{21 6!fPͿ/lA@BF(kaf'sb<X9R |`v=vXIxC'R?Zd-싩۹͞{iӧO7F*ʿ뮻O?ټ#_X_}'dh|A{ lv2~ljj%? .pzDI''䡿7t3G6[oP9.#@h39-M?jnTt27M2 ᅬڷo^tEbIEo_hޫՑWǝu]uͥ!%t'pmcsic0<֭[|[] a\@}1ε^uBhfȑfV*"$a:w\>|p3m4{SO= _YUp;lY\޽{m^c(xǚI&k3gyy]yZUK, Xf^veC_~e;y@'-Y}w 6̈SP&*g}14 a!:9tϜCMW\Ѻv a0=BiӦ8f 6psO?h=&GjmvҽRT0υ1V[mebĪ}52䳖#XQ*}UI뮱.@tBXdXLeC} /`.R8üPNylZ-_]w畜<#XϞ=y Ad'|Ȝ+s #>h2wUrGѵ^p ZuhآвE= n [oI &7|c.!rB +C#Ҳ WqeN~mWk׮<?v$JH2P^E kXH('t|#@">yV% tۑ*Y#*ep q]JԚBV5:PG ~vֲ x7O.z]:"&ZYk ZLw DVNoi}kZ_}wq7JN6l3[wNR=\.k/4j-2A[tZ_"@"k϶:vh]8vXUP b %e瀹m>,ݻw$D[ToTNGi1e @"kϱ@x``Uy8G [N:N B t*v> KY9kGDgXH8 }nFqȇ'-D TQ$v$8? UTrm2? +Bꨣ(Gq o}x [ ('19ذVHڪjKVrbB`Cm ׫&'۶mR?VNӤTkZs.0w&bX}[?~+=K-m~b؈LE}pFirQWHiTG.]ʒeQF 0"@2GD9lZ#@"5G@2 "PkHdFY搳A"@jֈR #@"r6H@ Q#D sHdC5$Z#J}Dd,s  FDVkD e9$Dj("9$!gDY>"@2GD9lZ#@"5G@2 "PkHdFY搳A"@jֈR #@"r6H@ Q#D sZgA̐!Cj"PgL:5XYNرcʹiӂ" VHfϞmƍgp"0#Ю];ӹs皃jc*$Dd ^"?Hd{f1 1Hd1@xI@ D % CDg"CDDY{L@ Y ^"?Hd{f1 1Hd1@xI@ D % CDg"C x`#FC2Y x^#>|i۶mmoCJcc#73π 9"3ge^ѣGmYڈ 4'N4sέyK.A/y$D`>CM6b"@BDl`ȂAKDd,+   YVH"@!@" -"$f;DCD Z*&D +HdY!v,TL@VȲB" Y0h e4!D $`R1 Y!Yk5\M{뭷b-fڷo_΋_hڧ-l[n#/n7|׿l+¬*f饗/.k/rfV0+Yi+lZk-#a{wY{m}צ.ǹѣ+oX,_~y2˘^z>D+I9S싿袋;Ϙ1U7nٳ'}c=̨Q\n6tS-DU|-7߸cƌ1'|ݻw7믿{V -iݺYjlZ׮]N;dGt9( ھ<) .k{䅲we[W^OIsy ڼ 6  _|qb]m„ ~+2ZdE YDjAC= yU G)3gj~q5zّ~k/WF~&Q?^wu FuUCsuJ7_ETY.TBv>h_a鷿mUMX@.M_ ۢ /еK/EZ*r7h믿vgA],o_,'*7 /ҕOh,(nV[ol-WΏ;8 ㏻tՙvk6m:d]W%gp߹%hu4_/m_2?+!DV#裏 U"')SM6=m,}?H~!?~|OD?o9ɐ4:u좋.ru^x:"ʏ9X7F~ b뭷v=uexЪ.Th\駟nۓ!et!N8.n&?DE^#XcAzW?pgY[}Yk)D駟 4B/GSLdDu/)(h*q=zV z:0M?8t*_g@ H7W_}U*W 2(%묳-Leɮjf_R)K__#dvuAe|m>9w21-A~| _ Ŀ%V}2WI8x`kw,"wy4nS/Ţ4$/kwwN*D~N k^OS<ǏnVL@c¿ ?cܹ+\!aͲz!֚/:t0byiӦ:eTp=\pM4bkk!4pi:w쒵oS!&C(fم J](8ԩL,zZtĤJ5jQmlBg:,HK`zz|ꩧ\j(y/+XDu§~jdbحQQ꣏>22xaaMI}/ wMyv<\h^n[lTԺs sҤIF \-] Tdj:v\PdeDE믿nS{&i_3|ڔy@}9$c#Էd.$qRQ9s|'Pt`ȉ/&+*I@|?F\:Ҁos{)@du466Yq~X  V{u޽]L;"A{WɉOaN) n֚.O< *($M7#p&_"$Dh~-K6H(}7޸“>#`E^~v"OoOr]C9%r5_z1c3HEc +w=tʊg;,"j-Nc,[J~r5t}? lqYbE/ȥnX>.'ppd8c7|di,Sz,DĽ{̙Y/z!6[GlIg讅}'|y]K.$UTw-H]Y:~iW~y)pF/gwc<$"Oi%^yW+ʚZ2+Nlj5`'dy.l5ͯ yXi*$\ 4M`-rA9C^3fZ7~PW&cOcA0尟fW85"ӹJ׃Cw3*y1$bLJ`U /=D >S?M*!^8bشmݶ`Jd@|"BA]OREG4)j;})s{\?$ Op-/K|/.?< !*{}vĽ#<6k?0%$ǬhkaNF7ˤ$ڔUW{/]w`都˙K?".R;oKɂӧ'9h -ެe]ںJ^Tj~s-UBrA5mA_`aǷn*#, v4ՒB-Ea7 h. СCwU0?N΁AVv-4>BdY( VW CMXL%@06WXXXUWlb*o!?.zdM[e, vH3p_wu,̘%X"ބ1Xn* {Dm{~8':< !Y8tKXYE VFB~Ѻj_.BXa8pV<\ i.V"?8dBz B kBj\>"quuQV"6zD.'s_.M t"A+'["b X2d//ME3 1 ,:`矀@iaj7Tn y.]DxO `>OVd-Bbc#B!KDd,3  Bz YfP!"@B!@" ,"$̠fCDBD YME@#b&Y@S1l֖vS46j#tN&|ģ݆֟rO!54:(*c*~AGn /^$BZ#{;t\8b7M‘qI Kq|PIl%nR"BnKzԏ-K.#"충JklW,;JIR} ڎ'.Lگ 9EHQv[UklEJڮV+qP.k@H.E&< B.B&𾇕IGx:T`A$bY7D/EhlXfA` !O),o!ܑUfH^E%/4v 6_&xU0EM!d-!Y8Ֆ bG2$-B~u;eG>OBLtX&I1?Ё( Y#tQ?X0 e0#!x1Q[GA<uDԐ᝭+C₺7!<[~;3a/Տ+bCdԍ#sH bBr_T꿠/FT@4 I,nDl] XĄhh#ᄔdd͆IPFǻ,#q"FbiXw6^_ptD˵' 5W.~Z!@"k~EmψŋS_$Q5"Z $OHex"H˩PB:?PA6B"%$0%G9_+OLCo>BjJmId#"@{@B\? %C$h֬Y6[ α! KПT"B,. ;qDby7 tWJKMXk% 3 hZg2>xO!n>~ p]H $a ߺN/ hp%He7 : $9|pGm=O?ݯtn_Kۤ2O>KŽo"b%PbCC?~4`J`@>eXkdIra1IX[V! l+}̘1"?X_|Sa[d*% ȳk׮#Ci7't:N8獋?P䄡TE|\` \GI  CAoD²%Rį iPB@?Z.>&*=P^֘|"P7. rWQB-2ZCDVϤlfΜila#w;%2?sS3\r1b\\1[L<9]pLC`5._PVsXqغ E~׽+wnQJ[GD6A=C & )U0`Z<ME.XԹ7D(?T!ׯMɩ\}LG)%˾k'7Xf4~o @"ϳ=oatvew\J~e+xPןBXeVZ5B<^DKR_1TMDk8`Jp'ybE""N` .  &Fdz766dn10 Af=AsJNhP *hP9"_~Jx?O&KQEnBB`OUGu+y\=nTB 3!d+'CH,-C,&mBԥ"tHGyZYEt_]Q>"rtN"۳y~PSN)Ä! 0TBv>hPX]D/]!2^M60` &$&u%YuFb-@2,H/u1c Jdx_/\ԿW$G!DV甉& @{EDDGS_3j('XfPFkٳg$Q^"i!.j.D@y1+'Gv1® AWwq`AbDAY\HĨ{.+ݰWorld\",\n", " placeholder='Some HTML',\n", " description='Some HTML',\n", ")" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "widgets.HTMLMath(\n", " value=r\"SomeHTML\",\n", " placeholder='Some HTML',\n", " description='Some HTML',\n", ")" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "file = open(\"WidgetArch.png\", \"rb\")\n", "image = file.read()\n", "widgets.Image(\n", " value=image,\n", " format='png',\n", " width=300,\n", " height=400,\n", ")" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "button = widgets.Button(\n", " description='Click me',\n", " disabled=False,\n", " button_style='', # 'success', 'info', 'warning', 'danger' or ''\n", " tooltip='Click me',\n", " icon='check' # (FontAwesome names without the `fa-` prefix)\n", ")\n", "button" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "play = widgets.Play(\n", " value=50,\n", " min=0,\n", " max=100,\n", " step=1,\n", " interval=500,\n", " description=\"Press play\",\n", " disabled=False\n", ")\n", "slider = widgets.IntSlider()\n", "widgets.jslink((play, 'value'), (slider, 'value'))\n", "widgets.HBox([play, slider])" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "widgets.DatePicker(\n", " description='Pick a Date',\n", " disabled=False\n", ")" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "widgets.ColorPicker(\n", " concise=False,\n", " description='Pick a color',\n", " value='blue',\n", " disabled=False\n", ")" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "widgets.FileUpload(\n", " accept='', # Accepted file extension e.g. '.txt', '.pdf', 'image/*', 'image/*,.pdf'\n", " multiple=False # True to accept multiple files upload else False\n", ")" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "widgets.Controller(\n", " index=0,\n", ")" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "items = [widgets.Label(str(i)) for i in range(4)]\n", "widgets.Box(items)" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "items = [widgets.Label(str(i)) for i in range(4)]\n", "widgets.HBox(items)" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "items = [widgets.Label(str(i)) for i in range(4)]\n", "left_box = widgets.VBox([items[0], items[1]])\n", "right_box = widgets.VBox([items[2], items[3]])\n", "widgets.HBox([left_box, right_box])" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "items = [widgets.Label(str(i)) for i in range(8)]\n", "widgets.GridBox(items, layout=widgets.Layout(grid_template_columns=\"repeat(3, 100px)\"))" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "accordion = widgets.Accordion(children=[widgets.IntSlider(), widgets.Text()], titles=('Slider', 'Text'))\n", "accordion" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "tab_contents = ['P0', 'P1', 'P2', 'P3', 'P4']\n", "children = [widgets.Text(description=name) for name in tab_contents]\n", "tab = widgets.Tab()\n", "tab.children = children\n", "tab.titles = [str(i) for i in range(len(children))]\n", "tab" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "tab_nest = widgets.Tab()\n", "tab_nest.children = [accordion, accordion]\n", "tab_nest.titles = ('An accordion', 'Copy of the accordion')\n", "tab_nest" ] } ], "metadata": { "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.9.2" } }, "nbformat": 4, "nbformat_minor": 4 } ipywidgets-8.1.1/ui-tests/tests/widgets.test.ts000066400000000000000000000024021450026722000216200ustar00rootroot00000000000000// Copyright (c) Jupyter Development Team. // Distributed under the terms of the Modified BSD License. import { test } from '@jupyterlab/galata'; import { expect } from '@playwright/test'; import * as path from 'path'; test.describe('Widget Visual Regression', () => { test.beforeEach(async ({ page, tmpPath }) => { await page.contents.uploadDirectory( path.resolve(__dirname, './notebooks'), tmpPath ); await page.filebrowser.openDirectory(tmpPath); }); test('Run notebook widgets.ipynb and capture cell outputs', async ({ page, tmpPath, }) => { const notebook = 'widgets.ipynb'; await page.notebook.openByPath(`${tmpPath}/${notebook}`); await page.notebook.activate(notebook); const captures = new Array(); const cellCount = await page.notebook.getCellCount(); await page.notebook.runCellByCell({ onAfterCellRun: async (cellIndex: number) => { const cell = await page.notebook.getCellOutput(cellIndex); if (cell) { captures.push(await cell.screenshot()); } }, }); await page.notebook.save(); for (let i = 0; i < cellCount; i++) { const image = `widgets-cell-${i}.png`; expect(captures[i]).toMatchSnapshot(image); } }); }); ipywidgets-8.1.1/ui-tests/tests/widgets.test.ts-snapshots/000077500000000000000000000000001450026722000237175ustar00rootroot00000000000000ipywidgets-8.1.1/ui-tests/tests/widgets.test.ts-snapshots/widgets-cell-0-linux.png000066400000000000000000000034511450026722000303050ustar00rootroot00000000000000PNG  IHDR!nsRGBIDATxoh%i.WIXPaϺՁ>b7*l((3g u0 G^T#DD*{gsObZI6t6k ڴϻwދ7NPUU,@DDDDK $iIDDDD@&,DDDD $iIDDDD@&&QnLNN"#NCQ AHDDBI4_|v$%nT51(-`R*$IB<(E"NCeH׋bQmRt{_i 5܏m_cͷ'? .VTf166EQPYY9cffB,H"" ۶ o|O.J(K,on4B8۷rLUU$I(ҷk4vF*l6"\Q__? tuu鐈(]\s@0=ڳKEὟXK(z}v>}x \@"@EEŬ7LxƳ`gj*撳zjoܧ$ hjjBgg|SYYϟO]I*&''!2VqtLfʹbŊ/]f(ߩK.a0 kyW ~={u"B@>@ٷfE*$ܹΝC[[݋@ h4'ObhhfhiiTWW@Lϟ֭[q_~^`0p````Zl6 Ifrގ`0ǣw"ˣ h^/$.;^ZFQ8>-Q nl6cxx<Q.qhfH&ʕ+a6!"TU,ːe$<QN@l6x= Y7nŋӃ#Gn#''999sw ۥ 8N  Ng.B1s=c׮]qV`YJLDBkH_7:ϟ_ _嚫FFFPXX;v^GMM ***pyڵkXhvl2TUU7nxns!-- W~\V]]]Eqo/&&ǩT*tuue3 D36m֜͸z*z=6oތbDDDRJ" H-;7#p @СCp/ǃV|> / qP;+"2Ly1gϞI۶m`XPRRK.ó(4 ֋WD#G?vƣG088ܯ%IR0t:q tuu!33X|yS͞F dggO_VV{bdd . tL"RHZK`\gc>2,G~T3KXt)._}PTTۍ*17III_ISF#k(H$%%d I, T;1I#" E!U@>n¨kޯk=,JI<.xqӧQ[[}AѠ߇l۷+V@@,Yۍ('O֭[jժWe2`2+N>Ov966Ʉ+W(Yuz{{'lijjݻׯŋގcǎ!;;{uRqqz(aF@rH.x{ұ=o@@X"(7װEZAnn.^/L&v ٌfAR!==tl߾f㨫CVVΜ9i4󢣣N'kx 둛 k7oD__lnnƩSF(r+C" ,3g VU4""&jߦp2,H.@<l6 T*j5/fp8 '%"$@'H XR VmT{Y~_g_sm҉sׯ,{ϓQ1Zs-MzҜj@?ε^ozS _"žřVE#L%'D)> =Z؄IN97%ٟQgz3Y5'yl&~raygۄ?jܬQ/á{:OHDn_Aŋ:}fϞ-sW ɚ5k9P||֯_h>!Y K(Ӗ@ NSC%%%jll͛7mܸQ***R__$iΝڷoߨyZrLx,~!*%%Ųc߅d]jjjRnn6lؠ~?~|~gϞU}}Z[[5o<8p@TXX(%;o}}eTSS.KVG a---qㆲee}vKVZIfIx#ITvv%>\EEEY2LܤHshH^2wY_tb枊=*0d%Iyyy:uzzzF9>""Bnݒ$l6竡Aݳahܹzr\˳8`b,{.wdq^XEKξW?:%Iu/>SR=˄wO1joo׌364M9NUTTkNNN< .rҪ#Dˏ|gI ߷]%濥ԌJ(Ϧ[ٗjך>klaOr%O,zp:UCCl6Zi׮]cە2EDD(#ϲRk׮բEh…~ ǒԒeJ++F+nfŭlPzԤREGGZ+..VuuZ[[>yڲev[G{rbbb:4M3!zzzd4 p2 ɀKwaUUUիWO<27`x<*((P\\ $j:w\c %l P  $|M44n; qK >a,7IENDB`ipywidgets-8.1.1/ui-tests/tests/widgets.test.ts-snapshots/widgets-cell-11-linux.png000066400000000000000000000033641450026722000303720ustar00rootroot00000000000000PNG  IHDR"(sRGBIDATxmLT !(Bt fiQk0 )e7Dn̾JLJfXpH[!H%[WW'`>~ڏdRqq[߫Wh4Nn:3H$i۾7f_z%,r>I3ﻰo~ OQ*wj!McuG~#WKƬifi媩`pTUU3q´a)88Xfvm޼YVv]+Wt;~e*99YO֩St EDDFJJJ,W Ȁ =.+]'<):bSl{O=YmuJ}UCdx<á:ڵK2577kڵ/''G***R@IrL9/ ޽( Srr 400m۶illLFQz=tzzzdXڪEe/~D211cǎiƍ]</y nWvvVX2P@bFWֵk| HxG( vac޴:a G`L n^9IENDB`ipywidgets-8.1.1/ui-tests/tests/widgets.test.ts-snapshots/widgets-cell-12-linux.png000066400000000000000000000037471450026722000304000ustar00rootroot00000000000000PNG  IHDR!nsRGBIDATxL]PStfl,ZCIjQS8 PLX,H4%V] fiX@l@bAᝇ{rɽ2\."""""/DDDD͢)"""".v;Nߥh4lw)""">'N've --NRDDDD<)""""Q(@G| ^O㹲y|չ>|Ϋss GD1{}^S_*Bs~[0]ȏ?5C~4gԂU;7?UojذaÆ w9"""y͡D/IaČ_θOL_Bl+u/uqiLvv6őȞ={hii)SCYYWΝ;  L=@FNE_0h^m#94%ÆDwGG*9լ*4<666ӫOgg')))444pa.]DAA---LD:Z7À||Έ44ģ]-MΝ;JFDDDy1bFm۶alڴ-[x c̙aXhjj VZh$((Eqܹ~."""3 W ݌F\u j.??ʝ;wviiiչEl J}}ykk+퀀۹twwy@mA{{;kZVAHg3r8p9N\N'. F#wpK̡ 1L>N^BpQV+oŋ0}tN3 KRDDDD<)""""Q(@G EDDD# """"'F}-NtO_^h$00eD#""""ђxkjjcIENDB`ipywidgets-8.1.1/ui-tests/tests/widgets.test.ts-snapshots/widgets-cell-13-linux.png000066400000000000000000000036301450026722000303700ustar00rootroot00000000000000PNG  IHDR H sRGBRIDATxLgwKw:9]uFἀ`̓se!㌂ј0A]ziYccX!2EHSeYrBfc m ~sD~|izi%  """"rt """w $IDDDD0@( DDDD$ $"[^nGGGǔ5 w _Xt)RRRf5a$""_9y=-]x|ϣs?Y?½-p t{l^VxvMDDD.=\n?Np-E1;/Ly7&\ݮLDx=DtQ[[Ѐ9~}obv/[`5#Cm<`;v oDnn.yf?~KyU|9 : fO7!cu5{Vt\"^ b`ǎ8xk /_Fyy9, r .\SNjoWSS#GҥKضm۔}L&b 88:ͨ͛7QWW;wx}(==hjj۷сY}fDDD*@Wm;[B+f˙rdff^|@*"!!6l@CCk|T*E@@\s RTUUڵk&PB8z(j*^ґd8p|}}9;DDDD ϫ~HmW~4]r]kWV*]fdTN\/^ E@@qYTTTjv;!z{{z)իWq T~3.Z ~~~l6@WW^xx׸ JlBDDD?=@ ^AptBp:|9T r⾽eAZOZ}F;k֬Zƍ7ָ cOF"@Tؾ}5JϞ=æM& ӧ LݻwػT*j5=6'yyh$&`A'GQ( fjf3 Ōu'OdBII p8\{oݺz9998s tuu233q9XV!H ~2L5l |x];6d2 :/"}vL<&""r)@[/=Kc_ʿJ'ѢG>wL"55SLT3-- jqlw@Zpezzr_/n%K `[!""m1uÇh]}%w[p ~< * :?=x PThiiAff&r9␟۷_>.akZ( r]CCCν#G`p"KJ,qx tưcZ ֭ ÇL&̙3gqF4.aF!>>sž}\xDDD$j}C`T'*+|.=RΝ;g;~8NDbhlld¶mU%%%عs'^ B'O: iK4Kx Μ,;ٳg:TTT@@C,#33:z`@CCrrr޻w/.]Z455n""כgM!vd ~DqVkjXx1D"fϞ \D@jNâE///ddd@.ۜ___nB6o+.bck$0c \~&ܽ{piHRC]]]+W"44شixu]x%FG'RT*ݍtttXݼyv7`4a6188WżylƦOn= wNv۸m ~~~0 3g"::'Neˠs ?f}}}6`' yd0<:jy1p&ÿ W!0AH.o^=JTTu3Mee%RRRgj5Q__/%%$$]~|_[y4-{<]NOΟ䠺zmmm̴wE"R)c& wM9Tt5Ãm84- }v\x×=y9Nv AѴo+&5s,1>?l95Pu^cעgC|O{: <sٹo$R,U+ɓ'm] Ȇ~B3t'>'}'%ZLDD6mڄqӆN "!!j%z&bㅾ/?Ee+?o_|;fW];(w9;;ܹs.cI-2rrrvTTT̙3tYV:::`07 '"fW7}{gKq3O/J7̞g0 [¥;x jjjCARڒhPՐJAyy9FFFHݻ9&''Q\\X$&&R2wO&ʕ+s}IIIPT-i"##yWD+RSS!_" r9d2߿o fWrfb#[X ?gXstWf#\pls<|jZFNNrss둔#G#11z* N͛7]]]P(χNÅ PQQ@}}=jjj/_^pvZ޽[tJ˶I$BBWQH$8;iDd*@:I\F0ֽ'gJ @˷4\t 6N۷Œj8z(֬YÇc?h\xgϞEII L&BCCQXXsjlذQQQK088lQ޽{QZZ,kooohZ 1<ъ`2o2$#d2 ZDD&""""IDDDDfa$""""0@Y , DDDDdH""""2 $¦ח .DCDDDDf6?&q~}XIENDB`ipywidgets-8.1.1/ui-tests/tests/widgets.test.ts-snapshots/widgets-cell-16-linux.png000066400000000000000000000043111450026722000303700ustar00rootroot00000000000000PNG  IHDR!nsRGBIDATx}L7V40r搌UP)Ŧ5XHۤӕi"6vcMyPJAA+@i& imC=G㹛R=~^ ߗ>\B}wp8&_o; l6{;]d2y;|ϩ@蟞L@[T EDDD-*""""HqˤH˱x4?k.6N>7y\O-""""6ioC avosO;871$̘ œhz4su^|Ex饗EDDDܻ~c`wQTEEE޽yKaa󸸸Rl6?<<+WdӦMx$Zdee}id2兄""6e 9Af3}.y9RR? /66\JJJƼƹsX,444PYYIEE=7ot}Y9NYY;w?>#??Bx7سguuugϞ%$$ZxG--%%kl6]]]8ZZZHMMetwwS[[{G\\EEEߵGlD^+f i"25M(SL-[‘#G4?00[L||< $&&DPP6leh4/~"fV\lܸ8O>|חtvvwp׊+8q###`4Yh]]]XVΟ?ϲe˨#//iӦ#pQ+f3˖-s)[#""hjjbގ+"rSS UUUԸfppܥK}{}}}.ǽ̟?(bbbxF3 㕒Bkk+ÛoIDD>ؘ;w.V9^,2ٳgsaRRR8tʣ1kVTTp}?|#11u,\ .@aa!/_fv/^/|"cJCC*"rq\UdfL&c$"S [DDDD.Hq ERDDDDܢ)""""nQ@[T EDDD-,l2ގ """@D#""""nОO2ZIENDB`ipywidgets-8.1.1/ui-tests/tests/widgets.test.ts-snapshots/widgets-cell-17-linux.png000066400000000000000000000157201450026722000303770ustar00rootroot00000000000000PNG  IHDR[sRGBIDATx{TUuP`)DʻX$yM˖^_LmI*5gdD{~4Nmi 3&&nݺѭ[7yٶm=z`ԩ7d{1t͖Vi]n.}W/HP]pPZ(ȷݟ}}l#cOFxcbb3g]ɓ'm6uѣoZ*??_̵i 8wQR %*?:w) xV-Ktڴwq pss#>>?9rfϞ޽{l4x Шz@YYk׮e̘1={PUU=Fj2DKXbs+VD݋` < _|gΜ`0<@]] ,`֭iӆgy72m4… yٳ'^P޸̂7~kUeEv%'&?W]W7oj@ii-;w.#F QK/ħ~JXXaaa̚5 wwwvĉ $88_xrssyU'MDΦ)S0m4RSSm}233ӓ&L; ;; 6Jqq1#Fߟ6y/_'7ndԩ޽d8֭[1$%%h5k R)""3rKD`]<)l]욧=ׯwބpBϟO``U8pYf8wy,VZEv;v,8880x` _~~>}/"۷h42gvIYYߘ1c`}v[{߾} d2ug-ǎk/"""/e6mw>>>8;;GGF=JTTTSDDDn}?yZa-I÷uNyg /d#F`ʔ)mۖo} ^lIKKv>55ٳgqpp=z4;b]^kxyyQRR9xU5]]]8<5Ņ;6DDDu*EY(x= A`lHAuv۶m䱪g}c^I^^ӧOgٲe}ݶ󙙙ZKgv̀ZW]`04:6L\xb۹&vӍƝ>}__k|s X,s|:)"""?_TY1܃B] 돋g>ioy{2eJ6Bll,3g$<LNN5ɓ.]лwo,XsYp!>` ˣ5kPZZ#Ɋ+(--ŋS__ߨŋ9tu/"""| Z_kCֆщ9e^MM)uG>:wk^ټ\X 7cǎcbbhӦ ,_˗ږ-[O<={>|8t֍_s8fϞͺuٳ'k׮e 2A1wF㢣ILLرct҅T3pꜜpssk2mɓ's9"##qrrⷿ-~~~8;;у{[z}T^w Z'F:ȽS_k'S)pvGGih Y÷u|yϴ5șOwyc/IllU_ZILLEݔ/\@XX6m H"""Һݔ C6_Gx: WH@w1W;xVno>دǏӻwo^yN뮖MDDDn@zחolSܔ>uuu$$$>N~}opK=Z+"""7M/DDDD.J EDDD.J EDDD.J EDDD.J EDDD.J EDDD.J EDDD.J EDDD.J EDDD.7 [#ep^ޱ5  ~# :  olZ#GSOSOt("""r(ηJ ^>dƂ6> =zt("""r(N0!gߏBF"Óڇ#91 88(CS ã`Wvl/|n&?I9vΝ`޼yXV֭[ǚ5k(--k׮̙3>}bɉ"jkk7ndff+cKUU}eΜ98;;ς 8p 63gҶm[ e޼yf*++Ƞ pQ3f 'N6ff0L,^___@["""?w*5CX'8hi:yKuoG?wff&K.l63}t&LٳgXz5$''s&MD\\6>;;ǓoMrr2999|F#_ټy3ǏgٲeM`` ~!>'N ))Q1޽'''yIIIa6gFvv6&%K4H~pANYQ3f 8o\J yppp`СՋL} d"**t[+1118;;333qrrbʔ)b46mfQevv6۷gĉ8;;s]wGZZZ1qqqi!CpiqmsntEII VB^}U^u[{MM !!!p'kFі])((̙3DDDڭV+TWWX,t`;ץKa4m6ODDD~ޔ@ri[@iv K^?ӧ82d???f͚o2lTWWsmڽpttSNql۶ɹ%~~~5.4ZSDDD~ٴ DçEpߥe2. r /o 6G}}eGy,Y¡CZ\pSPP`GFF b69Z,\oŠ+5jCdΟ?jbcǎAee%ouuu?~~_7EDDgMH /<'i_ϯBF䜄Mbb"ǎK.ڞŅ3fPTT !!!̛76>22pssc̙/WŋyǘM(//JF#>>>tر%j%777iӦVRRSL,v&~GDDD~QTN}}=)))1rHAo>V\Ill,7&%"""SQz!lׯZf^n<""""?%% jxYPP>>}輑ߟcǎq9͛\...^Pϟl ŋW_},ի/:uweݺuо}{qON6mObb"'''eܸqDGG7y}VuֱfJKKڵ+siֽK@ϯY};uđ#G=wff&K.l63}t&Lٳg>#--lL&K,M>|6m8q" xyyj* ֬YCVV]dgg3~x222xINN&''XW^Mjj*8pI&biG $`X@QTTnj'ߟ۷_\\b8d<@qq1۷o'!!;ԩS9u_~%p`{7{O߾} d2Ezzz^ :t(z"33GDDDZmadލ())jhՕj 1 <3mۖ2ٹs'oеkW$V+꫼555\DDDSɥmiw}-8}C l﫨 >>+W2x`xwزe]4n2X`0ǬY>|#"""` շfϽa򨯯l#Ceٶg uV.^HMM J'// l67İd:j… ߿V'U >}rJL&sUqIbcc=wtt4;v.]d9,Yo~CEEӇG}Ν;3c CDDD\ INN 1sLÛ'&&f̘AQQ...0o޼>i VA HII!$$_[ٳgGaxdd$DEEpˏœHuu5-#D8880qDf3oڵ# ǏsL&]G+%?ٳg)))޽{닇GK&"""rKEoa]@]@]@]@]&SZZJee%F:vaȠmҭ[7+.\7O>dKgs5&))b^{2^@~9rAطo+W$66?eؚEDDPSSa-H wRRRx衇 l_~j*~~zzjDDD/5 jxYPPݻw磏>jּ.CgϞ 0 ###Yx1O?4>(ÇO>744vZ FϞ=4hׯ_x^x{h-[0|pBBBx̴ӧYYYO>3gLbk'>>޽{ӯ_?ϟOmm-uuu̝;޽{Jxx87on=G $paշSN9rY}Xj_|k֬!++$/++Km6&LԩSmm.+WdѢE3Nɓqrr'$==6Wuu5۶mcW\GMM s ظq#$;;?7r=4HX,N (**jVH1 tޝqƱwF}Ǝ'pâ"Xz5'O&,, <==ٳml>}x'pqq!<>>><W\Gff&NNNL2WWWF#ӦMl6̹s8ruuuxyyЬ{$"""v[oEAAp׵kF}FoWWWΟ?';6:n׮3`F;v 1͌?&9s9ՊDEEQQQ 8uc̙tGDDDZ'U -mXbЩSWQQA||<ڵݻw3i$$mK^&ɖ^d=7r)8puԉ;lۿ|vm8::ǖ-[h4ڞ%@pp0[XX9ī $--ͮ~i-[ZTTT׬Fb˖-ݻzvAvvv*~+N:EBByСC&99cZX,رѣGn GGGUDDDZmasY•+Wb2G^^'O$66Gܹ33f :::t@DD@^˳>#ӧOȤI=y5W^ᥗ^;KfưaƊ+:֭#))jkkeԨQ<Ô/RRR3,\)"""~; Bh߳gGa\0X,ڵkG@@Ǐ… L&Fቈ8%M8{,%%%TTT鉯/--A E󉈈]@]@]@].HsOFIENDB`ipywidgets-8.1.1/ui-tests/tests/widgets.test.ts-snapshots/widgets-cell-18-linux.png000066400000000000000000000300751450026722000304000ustar00rootroot00000000000000PNG  IHDRYsRGB IDATxy| OU+"H&9qIDBbK-Thl(-uVhѪ p[UKTZ*j4d# ]CsR~se3sf|=3όRJ!B!Lk:!BhR!BEH!Ba@%^W!! ZYкqMG%BD&pLu5|snCX;{4 2#F0bĈE!I)D5U=N0kS3妒 }嗴iӆmt(B?MH!Z `>\O5A?8x <_OhGII &&&J, $y0'ѿ_O;j?`]&1Jyu?͛7xWܹ3J)mƖ-[HKKUV̟?wwwHNNܜ$=z4F &&%KпΦk׮̟? Yx1'Ň>}0g֭Kvv6:W^y(ؽ{7iii,^sѰaCɓ133,Z(!<c6nܨd߿/_nFBPTKߎ\O>aC~ڕڷd¹;w:5 {XYYE˖-n'ӧOSSSԩ111Z]aDFFju!(( ƍ`nnΌ3SDEE8i$mr4i'$55W\aŊZy^^zdRKԿv%%%\|k׮qԔ\;kkk lmm;w.39==\ׯ?䓘ѬY37oW_}Ufzɢ-IIC/_[BGCIXvüce>NyX6ֲб\KsF-Gk{eB _~!663m4~7lmm+kN0l#.'˔O;h$]]P;w$>>mL޽ۿ˗siR˗޽R∊bȐ?Hbҥ̚5k:t(j*rrrPJ_]n~~~dee~zp'OYwwwۧY3gp;ںu+{E^pWϯ,l /yBPgzÎѰ;] }QF+;v`ƍ=AAA?t:>>>lذ}@@SN̘19s㣕e޽;K.L6  m6~Wt; .%[la1n8 k!U ?Qa V'CﻴwU%¶Ձ1=ԕHz%EQ*/_Tݻw+{{{u9uQf/B_E\R~P%%%C4p@sNy5i$u ^|E5n8G+PJ)ڴiN8R*99YuE}wJ)uߺ_kEFF*///|ٲej*55U0նm[_N111G)TNNrvvVݺuSRJѣG7*z?郎ѿN< ʕ+WRRVP^Z2/]TksrrRJmڴIC={V׾Dkzp>_z߿ڳg ̙SnyttѣGB/5٤k/+qd골RE&0w憳3K.eѢEtС'N`ܹ۴iFlӦM۷ 6P^=FIF055{x{{kp|;v ciiozЅgkȑZ~~~$%%={2e XXX0{lʿgk׮3:t"~<== &p{4Ņڵk߽lmmݻ7‚^zrGφ Ɓ/ښ.]x)|3Φ VkkozB!ģOLAch9h E3Hڷv'pڠA1cu*N\/_̤IX`%_ȒUV}vٲ7n$**LLMM2l)))ckk}ײeKβʛ{;^ΌʊWSvm7n\n_ 4ɉÇsE<==i֬}[}/˝Mڤ2!<<Ç)yyy3զMbDFFj2f<߿~<  3 BFFBQzJJP%RTi)015v(Yg~]{ 375ki2.~8,dt|uֽ/*Kvv6ƍcȑM8g֬Y^Z/aÆ lݺ֭[*xݳXhaqq1)))DfVT^ٰ&&&4i҄d(,,,wOOO- ֖ `ggWۣ*|Mرct:]aذalݺ^zq VZcȌ;Z5z0 /X޽{krB{=fvX?|NppgV-)96:Vt|i(IU#l[n~ZqGrr2'NoBN:x m̙3zo(K&MtExbn޼Yt)=zuh.T>>,k֬!--"&kӓr5iԨ͛7磏>0w{Tō7h޼<~cg3` KoB!j4U<EhD??ܶ ]Wa߉}Hʷc>P 믿rQ7nw:((Zj[o[o^raGF{.+88ym6x뭷(z{{j?fϴhBo.1744 jڴiܼyy@RWWWJKKڵ6EDD}T=ٳ0`חf*~c ӧ| k֬+ vڄ$oNB_DɐFnn.Z,WWWS$!B+++v̙3ؼy37owޡ}?!88/[[[yWqtt$77.\Ȼkpx`"##ˌxB,u|IRSS˭oiiN:`eeŕ+WXboV'//ggg.\os(**B)ENNEEE+++'/^4!5KH!QfHNN}MNNw|011֖sү_2L>={oPNΞ=3<ݏ,mllB%F\rŠW\wI||<%%%d޽{W)Π /_ӧQJQPP@ll,/_ ;;mRNٸqdz{nJKK#**JF#fݝuaccCǎ˭ϥK8q}50~gZhƍ{Dڵ !))ڵk+o,Y͛U C A̙3*#fɫ fDDD\V>ٳg?~`ĉ >>t:XxAH!DRjtlmm ۬Y3Ξ=kP'| 6p)l¾}غu^}rJ+&L̙3ukO?VLBB111|'@ Q N mmmF*@˖-111u֌=#G9r$VVVHOO`L6 WWWLMMIkkaaܹsiР-[Ϗ~ ;w2p@|||077Ϗ^zsN Ɓ/ښ.]ܷ)))DGGJƍ`̙$$$/`n~.3gpMիAH!D{ x}7_˗/GVXZZjS999XYY]7nXKׯOJJ p;ԫ߲eK~gڴi#QQQ?rG\ cƌnݺ\zVZ|i߾=SNYB!*' ըYf$''Ӿ}J&''ӬYJedd0i$֭[G155eӦMݻנLLL%!!Qhh ֭[ի'N`ժUeug}o߮ޫwݛ""##N\\=ѱ !x0ё+WTʕ+z!'//R055%++۷W`` W槟~B)EFF:t({ȑ#_~Q@hh(^^^4mڴ̾lmmg޼y$''p >st 011̨B`ݝuaccCǎ˭ϥK8qb}>S0j(5jO<}@Vdܸq1k,RRRdԩzA[n,Y_мysV\VAӇO>5kTy뭷xȠaÆӷo_ y7011y;ԭ[uB(TM!R"""pvv[n>|g2~ !xI)CErr2գM6\plll4hPM'BLH!LRSSʊMҨQK!0$B!(rÕB!0$B!(@ !BH)B!" B!0$B!(@ /4~vv6< b1wܚCZXX= Dӱ~&LkT ϟt:^{5֯_OPPPV+F  **pqqW1Zy'Oj111{憳3ddd0qDӧN(غu+{ŅAqر2Oٱcھ(** 쌇qWXh?#F |w?~cwNc̙0~-[/SLRSS3f ;vO>j?pwwg\~]+7ꫯҹsg<<L%$$Ru{=_+T^^^Z+T߾}URR*((P ,Pm۶U_|E^)nܸT``JJJR*((HZɓ'ǫk׮Bl23Ϩ2Ϫ?X)TffruuU*,,TϟW^^^jݺuz˟>}***RJ)5{l>\|^xegg222\~hhС:uRJ~M988K.)JJJR*77WիW+wwwR*::ZkN*''Gǫ:Acǎd3hܴiѣ:{*))Q111Y%%%ŋլYʌO>QoUm۶58bbbRJ쬺u~7RGV7nTJ)uᡵ{(;;;-{edd(;;;uUǫkRJG}爈/j+;F/m~[VO?:~*))QQQQm۶j…Ν;߿R'OTjʕjݗ?4iqT/7nuٲej*55U =~P%%%CzǎԵkT߾}UϞ=֭[U~~V:tb>sرQ[nꫯ*3Ɯegg._|_+;vڥm۞={ӧ+:~t㮢c,Oj(вeKLLLhݺ5Gȑ#zuFGRRڵ)S`kkKڵ;w.fffUeƌҠA{9~'Ltt44n fΜIBBK߿ɓ'caaAvF`jժ@^'$$ǼyS5bڴi.'''hժOn_ݻ7‚^z|.\_~<8;;ӹsgܨ]6#FܹsH͛>}:ON4ֻ3p@j׮F]]Bbb"=x{{s!#CqEHLΝ155eРAt*רQpqqv[bb"ǎc…||LMMӻ$޸qc֭R177ʕ+X~[s+ӠA8|0/^ӓf͚gѺuk{1ڷooT5cb6跕JϞ=>Fqo~j9ŘB&MիW׮]۠sOy9ƍ"33SSSQ񒓓>w?^ۢ"ZhQi*+ɜ9sq ۗ+Wr99I)D5`ҤI[ݻcjjʦMػwAMLLF2YYY1֝dmUgkk{/_Ơru-4˲$$$c5jNC)ULLLeܹϠ6UM,nCю/- ,>VXe_oiӦ\vMk׮UD-^w8LLL Y~&MHNNFb EƊaÆ lݺ֭[0iҤ*pպukT*Ǥ!qCׯ_g˖-tsssɓFV|KxQZZ]2ىC &`|[I&dffr akk?#997nS\\\i{???X~=EEE\p{9ߪU+:uҥK)(( 33իWYnܸA͵?$;;O9}4J) F%դI~wm2уv4jԈ͛G=*Ū0vСCٳg6ԩS^lҤ .]2x`zݭExbn޼Yt)=zȳ>˚5kHKKp~'3gpС*'ٳhnݺEqq1ϟ,~ݺuiР0˗cgg /< |AZd˖-߿777ƍǰaôXz5W^k׮ >}U1m4.\1b]HPPǏ'$$N6l(/AajjJΝt?L܆_WWWJKKڵyC{tU2v߆'ӧO'((^x-[=6,Ġ [ozwXZZ|r+++lmm|L8Lj#غu+ݻwR_w899MpwwK.-!!!̙3NǪU*]!qCcNٵkW[,3BQ 9”)S8qDM" puueϞ=-7kURSSYbA!×Nll6lѮ]ME$!DKOOgʔ)dggS~}zEHHHM%;/1HNN֮]=jFT-B!"B!FR!BEH!BaI B!Q$B!FFVVX[[ӸqK!0@ ޽HPJǮ]سg}0~xt:Æ #>>jݻ}&,,s> '!!" C3d~-[ƌ3m> OOOt:g„ Ư+C Ѿѣ['H033###yUK5eɒ%dee^ӡOɉҼy޿'NM6Uj[dh .K^u@ Q"""-4lؐ 6lP/_u֘`eeŘ1cXBSvAttEEE`Su[noル+?^+7dn۶ t:3f`֬Ye./;;{{{l!C#00Tᅬ?NNNxzztRnݺfFڵ ooo\\\Xp!wt,11I&憇-"??G ȑ#eZYjj*cƌcǎӇǏkeGgEѹsgW;233iӦ iiiZDFFΜ:u пmʎ'Cb=CjK؆#!jl4IENDB`ipywidgets-8.1.1/ui-tests/tests/widgets.test.ts-snapshots/widgets-cell-19-linux.png000066400000000000000000000103571450026722000304020ustar00rootroot00000000000000PNG  IHDR__sRGBIDATx{T׽0EnJ0FR`;p5Z1G%1mm&ͥUj11*ZVkz2S1 ъQ"#Ej2#5{~ex{}]l6Mqwvu92L0a] ΅-l8ByyƎ g[ :ybbb] -l8j%< V0 C0 C$@^x3Yߟw؟7*|z]W@zW̋XWs>y}>z_W{DF{_X]yIgXE,yB>jփ9;*y(J?-fy ]?Z 4<6U<$I mwQ\4H}IٺYM^+WTttÕuvv_Ңl)""BZdΞ={]j?~ٖ>sh;|FcFrqsW㒤w1xF=G>=g/jCsrgzeddE>{N{Ւ%Ka}ժUV^^>#;_TT)Sǩ_Oթÿx~NUƫrqs_SCv6]j(77W7XmٲEڷo$ȑ#JOOWxx  ѣ׽ƌ UUU̙3Ԯ]{CHUQQazjeggj*55U{$uvv*55U׽V"ozV{DKL;?yE޻ᆱYfͭPM'_QՓ=٬={?G7NRUUESNURR;R[yj_f233o>8<nZ k>j}~pJMWCi*y(M$y)uz*}d.rLw.^.yyQgb Р{L'NЕ+WTQQ%KhҤI_*--Ucc?IE&Mn:}ΚnVJTZZjo'N駟֊+b uuu9Tn*}6Q|N6KMU%o^Gl> 뵃ewȯ_MmĈz7/j޼yjnnVppcٿ\׫N[}{o~_ŋ?(Iwyv/_b[o)((HӧOWOOL7o~ٳG/VXjbsą0Y,8 w ׁ@C!HB!HB!HBeddhӦMegg6555;v2U\\^w$*--U[[JJJ4n8HSLqtp$>|XW\$>}ZmmmJKK,KJJ쫇$fmݺU<̙sܹs/jѢEJHHٳ{ݫ]JMMӵh">}ZOVTT^wܡǏnjPkk 7 뮻rI_Řj{ァ/СCBiǎ 6CڱcG@۷Oo"""rJ9RÇѣG%I8q***$Iĉ榧~ZyyyX,ھ}~muttFCù(11<ũRƌrss$^TVVtd2iΜ9~5|yyyI,X*577+>>^K.աC$I24hsN} ͛w' NիP||4j(>|XTRR\\\Uݒ& :o|…^ft%YVرclPbbTPP͟?_ڹsu=/H8l֙3g[o)$$DÆ $ǫ\_Ӿjnn??atE= RLLUVVS]*--UKK"##%IZf_BW։'9"@)I&W_U||x||,gxhG*,,s=Ϸf1//OqqqdX2~%7V ` ` ?%HB!lai8BfiȑJOO̙3ihhk#GK^^^ֲe-ŢW^yE[l°[YYY?~.]pbNQPPw}WAA233m6mڴg}VC UTT7>ƍ%I)))}ݭ :|^ @Z[[uV=w!ChʕPppjkk)$I seeeiٲeHڵKpX=zT===JLLRۄ _u鷿>hС1LzgyfZJ>n6H8\ssz_,I~ ŢիŋhP/QllC@ $nСjllTww5/^hBҴj*޽[999jnn֓O>٫OQQ5}t }>2$.**JzwV]]FM8Q.\b>f-X@'OTGG$V[nSO=G}TuuuڿC@Dhz嗵~]tI*++իaÆf^PAAV$IwVTT<==ޮ5kh…5jL&~+77WN)7'fsvY,:V\\Jnv͞=[s5555?X]]]ԴiӴ`(''GgϞڵk{_Jڰa~455)%%epkH !HB!Hh0&Lpv @Fg` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` jhhpv@ 2@.6"pZ:r䈬VK-ooo7 0-lB!]O5IENDB`ipywidgets-8.1.1/ui-tests/tests/widgets.test.ts-snapshots/widgets-cell-2-linux.png000066400000000000000000000061061450026722000303070ustar00rootroot00000000000000PNG  IHDR:@PsRGB IDATxme~ߙ93g2cӚM *4&D%Aо>KXCI bkkT}VJUvYkt4j3gN_rΜ| p0o\g*V8Jo @ @ @ @ @ @ @ǿy.fe^_}~7Cp8vǵ?_ڧo6og8I+Kuӗ8f4?[=1 Jr*=C'ё]Ok^YGJ[daoQ|;vdÆ yh9= OJ“<b|}kqG}S>Koy&34ѫjW*tttxmxx86m/\zY~}z{{h4q>u/wߝ\wuٺuk6lؐGy$J~ f駟͛7gÆ yg:>e˖ H`ɯB4drOZoLOOO,Xn)>h;z=ZFrg;wڵkgc|7'@ёV}NfY˝V+ٷo_֮]={dӦMy|_>K.=Yfǜ }v=Ypa.#bŊ-Z\s5O__L pۤjeꪫQcJJٜO@?{/W^y!=cپ}۷oϻロz_~97nE] [mm۶^:CCCf׮]꫓|;Xr%믟D@!(" (" (" (" (" (" (" (" (EMIENDB`ipywidgets-8.1.1/ui-tests/tests/widgets.test.ts-snapshots/widgets-cell-20-linux.png000066400000000000000000000061421450026722000303670ustar00rootroot00000000000000PNG  IHDR.sRGB IDATxP.T0p Š3,6nHaaB'FATT*h4xyyNC9;\KHH-LMMF%/Mn.?ZwK>Vf%_lK999lܸѪaaa viW8WWW݌;WjZ$7qv(BP{R}>SNWqd=}:<'&R]o_l#83 =9 >s iZ233Ҷŋ d*[\RdҥC!nDM?w#jfKOXKVK&t jNa_$1TTTJtt4=z֒ݻ#**_˗/l2"##={6'NGydP---qܹahmme7q'n_W|//_v@TommmKll,iiiZ-[ *@mm-Kٶm<k9$$r222HNN&;; .7׏ìY!..M6CF#6l`ڴidzcǎ!u1|bbbHLLfoB]@|vvk<dP|h+Wukd2K/HUUٳ{}vOϧV;l=tttgĂ /Xv-eeelݺuq!͛+‰'̜9!uxb222(--Eϳyfzf È P({ \7779~"sj~Z-;wŅ3gpw[^KK sz{1<8hJAA%%%܏x裏 a*++j|||شi|a>y$O?4o&466˘1c={/#ͩhۚ0 k+F5MSO騨{rJ"""5j)))L22r2777V^F'**SJb…:u Ʉ'>(?E [wmm-...Z ZW))UֶPTۯ~`nnn\p3gj]we:vwwg̙C|\]]HJJ]t:<<<|>VERQXXR///gܹT*vJB[8퓰Wϩ0o Hvƾ+t:$%f6lBYYlOOec8>`=00^Օ,Yn_~%$%% [ٳgtɿ===̙37Vru˨j-۶@JKKٷok׮%<<{A>g;a>Aq[[>i4?~U-r p,sFvHDDYYYݻ ZBvTTǏ?[FYqOijjr}}} f@sluy///)..+Vc֬YFk[eK?HMM%553<ñcP(󣣣òoP/zF<5pOԋ#ݼV Zm*zzz,Ǘ,Yŋ1c( fʔ)vF!}ߠ5} ~>&#_Ft`rr5233ٰayyyՑC^^0k,vetΞ= ~7.B1j"gd21ggr[l6I$w>GBa=@3uTJ%U:: .닛* ׂDGGcǎeNT8#!$B[gg'zB@RVwBkH)B!l_B!I B!M$B!6R!BDH!BaI B!MAYA6GIENDB`ipywidgets-8.1.1/ui-tests/tests/widgets.test.ts-snapshots/widgets-cell-21-linux.png000066400000000000000000000067371450026722000304020ustar00rootroot00000000000000PNG  IHDR.sRGB IDATx{Po $QĞuVUZnŮnWm[[ұ=vPتG쪫VF؞ⵝjkk I?R "= }y0sy5nۍB!]B!B!+@ !BH)B!"B!; ~X,v;Nۍ^`0OwOÁ`0`0 EpBl#j OШhp:8N %((??IvP]]MXX:@UUꈌh4pOB* RRR6WZVeɒ%>kVXVV+72VWWc00Dbl6nXʕ+F ";u]Y)|-Aiە{-_SW_Is%>>;w;ϰa|r2zhי+WPXX!++;v,7n>@[&jb2n:D@QZ[[o<DGG؈(u͹s璝}[mLRR'NdŊtunms v\ u- ٦7f qӟ"l(3߹p<$1fOCfrx^O;x`v3< 2d/_鵺۶mHMMdw, aaaMYYK,!88ӧwKρAڟYDDJqTWW3dȐ.ùszErݺu;ٳg'--]va6oހBE4.k#tU[ߛ5G}5?qzRV!tcDz{n;PU"222x7~.k׮>@Q +BBBTWW9{,MMM}PYYInn.ǏGUU(((BC6?sBCE)?@??LLTDGv/fᨫi:ﯣV),,O?%!!LJ~͛9z(Ç'l7wΝG}{GNN 0"""())#Gmg>LQQwԩS߿'O{np80t:9}4^p8y~}CX ۛL:t8#<<N>͖-[طo[nmW~Xftc$ݬ 6pE-3Q_~>,**jkɓ' k]z~pEjkkIMynƥK02W#Z^1.;۫/q29B;ڷYfvZN!h4DFFrϫ[[[|rV^o[,X{rBBB괮` >>sε;p8x駱X,lڴ] TU]N'ZrM.6PḥegYp!СCvopʔ)?sQUU>xmAPll,8pcǎHll,Àwߥ[NɢOd#C's'_;=Əϖ-[xg:-6mTVV*.n۳(f^,g+ Μ9CKK .N?~gne#͛ryꔖ~zZrrry)--Rz}Ju5EE{-NU}塇bŊFm۶j*RSSDFF2m4ƌ)D noBI4ue=>SG9zi30t >ޡ#h+[]*rlODlg=VJbnxfCQ;KMM z^FK)(DGGw/F3uTƍǢEn !r άAhd̅F nꡏp)?1"{==CQl64S8?iߥyٟ>,;]YRR#<°a0`Gfmҷ^z\O 9g+fTo Kw ~>i\8R%O?w1=~*&t\̜9ÇOXXV6_DDD۴[l,<9La=(._,_K} 'othvr$k>#V]tN8U 66Xwgy'OҥKʨbn~)))l63sL,Kzj3f F@-[BRRR|""""-ա@vƩKא0'܇ %tAH kH&s/l?`=۪l]'fmxx8gѢE;|Ͷ{yeڵKEEE̚5ٳg駟fV^MAAA۷ŋs!z-{:+*"""WN868&rqt U*-jk0!!!^{q1rH6n.!!!CIrr2۷o`Æ L8?ѿOή]Z~$''3l0F#&MroYtiСSsRGoXwث|oa?Њddd/B^^ .$::;={zN^8r}ǎc_˴lӧE3fG111)K=Gf}Z!RDDDJ>ϳ33/hpP[um̙3,^GRSSCuu57oC=z\N'd׮]L<Ν;)((nc8tPs=ܹr>s17|ݻw """RzQ_YN@(b`G'{ '86]kWoߪlYɏGr_]mnݨ###'OҵkW /@BB݄ (,,dѢE`FAxWyyq\׏shȑ#IOO'-- LTTǏ={h\DDDuh:9UǎPu{8aLr8fԟAڎ(kQ@}˶3L%!!߼>55@Z~e("""%@vQ3o#vLܹ铋^$"G_9-|;t `kMkoki5޺|ߠO4$MkEDDD .ك+ah7&\M:9WBFcp@\&@ CK˭(@^ 06l0]"ED[(@`t:~nl#r h|a;orp8Zw֭[7C=AvzNg'NuF=l6T_rE.V_"1^ws8444(oɡݎd[o# W^yLJJJgo1`޽tB7nsxz[?~ Bii)UUU^`0pM71rHsw/_I&1~x2339{,p&lƍǽ˞={9~8O:vV+g&))e˖O>?OJJ Rq, $%%ECCXVΝKAAA'K҇%$$kgV+Nfĉ,Y,yWիaaa?~/Xꫯ% CM:墸>֯_g}͛ٽ{7={g> ''[rN'U]d qqqew|ᇬX̶a&\>/_Δ)Sصk;v젺oKfh;s"W5eiii~ FJJ aaamz|@~8p -pϦȥ)@0Ȉ#1bpnJ{۶mdeedUUUn UUU 4?ѣGc:t(7orQTTܹs;nL6}ٮ]xי|SN5O?no`|rmT}l6, _5f\.F????pD)Ma(… %??ݎ?vMO8Z?rݻǣ~_WűcƎa$+>>1cưtRVZEZZ555f3`„ >|)SУGxrss1 裏cE\\n8hRSSX,1j(Ylzecƌ,\1$&&C1gO{"ru2!u-TVVFuu5'O졈"88@L&,p+**HLLd߾}c.ɭF"iE>|Dرcr£5BSB{i{הꫩxRRR1c(~ʨ"^wdқxMi [ړ%|~ [gDD[|DDě|4 :Kk+՗x#HDDě|47???w]5I_WJsZJi #Wh4"L&KhlY/b/Kϕ5IENDB`ipywidgets-8.1.1/ui-tests/tests/widgets.test.ts-snapshots/widgets-cell-23-linux.png000066400000000000000000000110201450026722000303610ustar00rootroot00000000000000PNG  IHDR__sRGBIDATx}PT+@Q4+VEHڨjjf|JQc5wx+"j4&(&\QtbIAaq;! y0;gsL6͆=rrt""""ҺX] 7oޤ7n8VՕpyG""mIKxGرKi.^ٳg8pK6NK,V£ԱcGuEEPC EDDDH1DRDDDD y ?8(^|t/8SbI:.d0XmU%{)_[ zWwPJvg72n*xPei`РA.CDDDZf]®VKɚ|_ Qz~5/q>\:7gyΉ'ڵ'NwμyǍǶmܻۚZjaaa7ٜC СCM64֬- ]qҝv>lS;jBO}l9(UԩS;y0aƒ(jjjعs'/v^a#%4>V{icD}[SY~GWa쌋d21zhV\ɤI9r$~!y7Ş={KK.̙3Z(̙Ç3f aaaۗ{Ϟ=ӇD|}[VVSLaL28yѳgO6mĴiӈW^sȈ#1b999mDGG3|pʺkiK,j+ZNSp@+#{^BϦ(۽{7YYYK,رcL:QWr޼y2a{ ##ٳgLll,۷ogƌfHII={X"##X,TWWSSSoj%..Ǝk̜9W_}8Ν;رcyG bѢE|_~\\\DDDt o^#Oʹu#~(6l_~<${xl*QZZba5Oqq1.\`?wo t֍=j~;غ2d9J\\1>ggg|||̤@EDDAw o^5 3Rm=->ET~vީ+V#++ wwwV߿qF|M&))dlݺ2cׯ_'??'xOOFǸSUUe;k W\ŋ 2>V]]MLL flҘ2e I&YdM+>W@OKCݭvfLNfn܁F9fXOŧbsޒL&S۷Xeewzul?~3fгgF!TWWcrss o޼L{,//V///r:u@EEލ 44)$$e˖dz>K޽=_H[ԬKWN•'88c$Gspz4?h_\ZvI|ݛCC֭[uϏb{=0Lb61͆!((QxcϞ=|WI||<ر裏Xt)kQRr D~~~SYYILL 111 --e˖Dll,zd21p@ƍf]v̝;WG{`l6G!{2|{۶mdggۻTRRСC9s n$ F/<> """"bE0aw>Vs5sE"""r:""""b:l~cEDDPRDDDD QC-o>}]l1vػd\DDDZHqlә3gf Xn%%%<.QDDD4k׮yfϟOTT}<22OOORSSIHH`<3deeqFYf 'Onݺ1||||壏>[nQZZJBB޽teH%liV+?K.>Z–6Օ~zV^-rxWTDD5R6c z(˖-cǎ˴i8x WbڵDEEqNJTT:tٙcǎo>\\\0a'O橧ŋsz+iԁ4bcc[Ǒ#Gڟ9Ob69z(...>|aÆbDLL ...Kaa!_]QDDPRfΜ9X,l6ތ57TUUqa[Vؾ};;wDmm- }lڴ RZZJbb"ٹTDD)~z"##- +ܱm_;vЩS'yc2=<.%%0ӟ2qDG\CdS+F޽{>|iIDZ-a! """"b)""""(@! """"b)""""(@! """"b)""""(@! """"b)""""(@! """"b)""""(@! """"b)""""(@! """"b)""""(@! """"b)""""(@! """"b)""""(@Jpssŋ.CUx".CDf9yYV Z.ErssO> "p """"bEDDDH1_^ZIENDB`ipywidgets-8.1.1/ui-tests/tests/widgets.test.ts-snapshots/widgets-cell-24-linux.png000066400000000000000000000054501450026722000303740ustar00rootroot00000000000000PNG  IHDR!nsRGB IDATxPu9 ?L~ X[4 @W uq+f,pQZb,L`zgGǩ Q} s|>'gG' "G 1c G "8b71h [DDDDlRDDDDlRDDDDlRDDDDlRDDDDl2(Lq~Ϗ hrb|-z~7EDDD1>~LmWf?M  !o~c̈'x8esKSq|J]DDDDnîρlֈo[qv1tN#uT8>55wyڲe K,іOhh(555ֶ.)(()}xgoP.\`SL{s7|Y:yƮN:; G))nU gkΝck̛7HUU}g۵1Ad2Kkk+f|}}1<>}FbccC8hm̟y?1tx g}#*˟97߷i&W_ϯ+q;:}4nnn$''[&L ؼy3_}[n%++Gy,6oŋqrr믿&66ӧXNHH ..SNqe 6m"::6cȐ!$''~^yٺD"""z^ٶm[ogcZZZزe %%%Fٸq#=M8>sOt .0l0jjjذagϞh42yd֭[;x{{SRRBll,cǎt fpDDDC߷#aB~bmwo4G5&G~|_si:\TTׯ_'--b,Kׯg̘1qQ INN&??_ پ};bҥ=wɓ'ˣ:nNNx{QQQ'|l& uv̻KUUyyy2vX^}^.WWWIRReeetttd\\W&,,#G駟7ߐ {8tF?ŅM61e̙É'8vԩL8}`̙X / 8h̙3̛7']^z%bbbz\tɺ},XaÆd>L[[[1 Xhnnn,^r{5LfP6m_ɓ'1LQ^^ҥܺđ#G0 DGGk?L&XpO9]"""vg%쎖fNeDo_z;'' F'T~} 1k ToTMޓŕW8 7LRRR(..p>>>7 k׮˥Kz=ðƍ2eJ9sX_744o}vkСC{b0|pnXz-}űfjkk)))ӦMl6cX9r$TUU#y衇o!""r7kPuJ*h1z"Z,wh>FLd?_R͝;x{{b v͹s`0ܲo_a0z}ckkm ߣha<00UV1{~ϏJKK)//'##. ._[݈uk;1z~# Ji2ԅ}qAKЯ6Bq<|F/&2K|IFիWӓ1cٳO?MVVQQQa 7n܀v'͍GRZZ絞gfϞ=̚5 WWWvIll,o2!$$:38i$VZECCKbbbHKK{4ixyyΆ J9|dbd0B3:qUd׮]X,<<<`׮]gٲe]>rssd/"MMM$$$ŋ gΝ۽\|9MMMzo+1^ЦG\yw.%a.q9Uh6;#oKȏGύU/FAppWeee JZԟc۶m=77ӧOʈh0-l( cxD`hkť^p<;w , 0aj|Bܹsqĉ;v,֭[ן>*ƍB[vv6^G~~>쏊B~~~I)Jtjwꫯ>Y;X9NYBun Zn\= [G[gAu&<7>Jŏz>***7x̓-]*q[zr .JIPtTUUAPX"""c7\uF-?\ůADQ(a iDϫAX|C*"** ...2dJ%Ν ضm_]va鈍cccfcΝj5ٳg#<<EEEBNæMRT!;;[8fǎ(++۷ J߿&O6 ؽ{7N RjPj!@^z-¤I0sLdddQVV#;;f”)S|^  ĴiPRR&""bҠmÕ1w4r g4^,I|o08~Ft=&MAѠƍC\\Ξ=/''QQQvK7''{_|˗mqݻ%%%ʂFAcc#*+_tj \pǎCFF>>رcѣGQPP'''_Wc `0P^^+:ј:u*-[vj3gg :}pe8uꔸ'"""ҨmGYr9oVV^yxyyA*b(((@sssc n߾R555B@II rJ888 3gF#֭[GGGa/ L#F`oQ/ 6jQ_x㖚8yzo>'Vx7x뭷 F#xxx8aÄKR!P__\.;::q/C4xyyx&۷xڊYf t:'U__ov݅C>rB@uu5JKKTӧO(..`6mm3f _???>>><:l0%%%ꫯ0{lQQ0 tODKDD$Fla:8ފo6E1pUO{XWU\U!W(j5Y[.j#?~V.]¡CgggСCpvvX Çɹ׬Yj^\.D"9x Ǝi|RRرcBCCj퍵kך7n8,[ jzo6f̘!/\ϟJdBaa!:DDD J-___d2bѐd3xe8p2 ~L<쳢暅8"z`c2L.&""""Q뉓ceIENDB`ipywidgets-8.1.1/ui-tests/tests/widgets.test.ts-snapshots/widgets-cell-26-linux.png000066400000000000000000000071431450026722000303770ustar00rootroot00000000000000PNG  IHDR!nsRGBIDATx{PSo\rS*,BVAn:]NuS^툿PQP *KAWKH!@<@ʭg}oΉ1cPc1\L:b c/8N ٠z_1x 1cHc1fN c1ƘQ8d1cF1ce@W/;!_Wk5I_C[w_f1c=XtDgv׮j@Ur<JСQC:f, ޅKʋϴep [:P3cn v{ vݸcLmAKM?wzl&M00Ñ6dc1ƺ2:aܢ¶Kx4nf]!B$<&fFs4Ti;W訫Áp #F@bb"LML&Ò%K@DvɓPP(89ECC̐ L8;;c˖-ԩS;;;DEEnnnضmDg_!""[ly7nĽ{X]vaܹqnkkCff&"""'!Ʉ9rw܁,X\vddd"7o!??D ̙3 ":u DDdd$ܠ둝~ zX`$3T*agg'''H$”)SÇNW_޽R &O[yUTHOOGmm-z=LYfA$u;ǎD"FJJ1n8@aa!Ο?HR,\F1_ \`sZߩ. tym$]m::$Z/dڴi1qqqJդh߾}O*vAޔEL>>>b }6T*XͰ0b蠤$ϾֿtPee%?~B|t^ٳg{<6mDmmmJ;wbʢQvv6%$$mdff e}vjhh "r={P{{;ѩS̙3ODDFIII]v}d*--%Fө\֭[iTYYIDD{oZ-}GJDDʹyfjll$"/`0NxqRRRO>""ʪi۶mT__ODDŴsN=a7K169]+n/HF>+`w`_ G׵GѱcRRRn:rcÆ s bٰ@TT4 LHwj7** bK.ѣwϾԟ>}:}]{رc{{{2av?@"̬c===Xr9%%% ژ>}:nݺVbĈ///X[[2 (**Bss3z*`aa f#6l ~?ǵk<^d!BRg,'M5&Lx611`477J(J~Z̅j5&MwyȀ=!ˡj^gnnZ-$OEXX@ӡD=SO: EPQQbSNEqq1ܹggN=Q&Ӟ|rBrơvLHa1b%l33[[Kjv`Fr3?OGrcFrso(ز:Z>m'~eVסVT*_cϞ=~DMM pBBBcPZZ ^G_~Yzg_ǣ O?%%%}:aΜ9ƥKԄVoMm( 磣pExxx hjjBB.'N`X,n___塽yyy9N>e?3= R Fee%n߾jZdž*9}D"rss~Ν;ǡ;q0##$%%AcO DpsH䄴48pk׮Ń???Yn:z,]TX=r3K۷HLLM~~~>:HR`xTÇ;ƅ -$s˖-{CBBj~?~{o>_<ǃf `I?^8&. h^*A̶*(b~/^AE@ח`Syk COL*dIcXh.ؤ6AP= 5f $G6: H1`10i8S=NaLVJJBhh(pСIh2LC4}`1 ̉z Ӝ]u40.~9>|ЦyM]WUɴj*|WOd`0Lzwl6Ou DDDtrdhMtp܅ĹplmU1o+b _yeK$8::YYYX,hllD}}=-[pDFF";;v܉xCbӦM[~= 伴4Xz5 aYY 477˹6l@NNxb0L(**BTTbbbPQQݼy3Ν;7qѣG}v\zpUTVVȑ#cfTUUa޽0Lfp(|{ic 3sŅ%VKT5IYXgusbMC3q7(\RPTI8qB9sFL&%233EVVB BBBDKs->,B F#bcc`B.*++B ^/ [nZVtww !(**jZo+F7 Ζsȃe aP7l7~N#l:N;?<;ҥKqףdgg#!!:dB@@mۆ* %%EnĂ PWW:t:t:ԩS@pp0|2:v9P(m!:::$1{l_H̘1$ ֭~afSO=ӧ#55rhtv{hn4gq,.ҞG`r:~ pE y7LŬZc~''̙x~~>z=JKKF$%%AHLLDbb"L&vZ oLӡزe |}}QXXR)>JsҥK bh\$IV W\cu}]؊+b h4?~*V\\;!""K9 #83x - #Zej&c\;h?v3 Ms5g^v!LnjbxxX[[F#oooHq@aΝpvvFhh($I?vލB)))(//GDD|||P^^!Ƭyرct:k.[lٲ/'. 䬰ha4qF7߄~JKKa0nnn@DD, ą 7@ll| ===== [oOO1kEqq1P(#@TZرj $=FG%.G%"LĉLJ $ل $ل $ل $ل $ل $dR!jjj"""|8ل&l &WIENDB`ipywidgets-8.1.1/ui-tests/tests/widgets.test.ts-snapshots/widgets-cell-28-linux.png000066400000000000000000000050761450026722000304040ustar00rootroot00000000000000PNG  IHDR!nsRGB IDATx{Lw\v)KD T]iP%mT\mJ˕^CWA%5iӦx05p-XW9`XvxmQdEdf732f$ɝ=""""Y HH""""$a$""""I HH""""$qq觧E6 j #"""'MśhO›RET8۸!:d~Awl6 ^^^( "DQh s򚈈h hwpM{3[@mr?ù~6>߶yWE뱤\?UÞPzz:>^YYif3f3BBBhRBjDDD@EL&X;l:4lCeXƻ[~t~~ WCow`فZfEDD3o޼)ߙL&f3Zmba$}$''#&&?8Ο??ay-[ 66())GGGQZZDb "''7B:^jgApREˠ Uyt}7Mtl/ꋟTIKKÚ5k.\Lc0h2%~~~0 D3L]]^yCoo-c޽~|޽8~8=Z `:Nȩ ol\35d\GG&A.۷J\GGrss`~fȑ#HMMEBB222pIXb␔R ;immEff&j*F#%VquHDGAZZT* T*qĉ|2>3A`ؼy3zCth4(**_|ID݅=*i_ B0OCx5A ڎyA8z(vލh۷/N> BUUNSNaƍ8y$n۶/***yyy2zcO>>>wԿ({puuEGG"n aaa;0aߖ刍Ess- 8tuu`0@.QQQpwwGSS"""dȩ2i-h( su_oR2 ;pfYmp/.*g 󦲳A~zTUUa۶m\.NJ+O?T L&Cdd$rrrp2Xp! rrrpO>EQRL6~w"JVf3̙ &IRynZ1"7M U ݯ~7xhF.B3rC= aޒ3wfmmmعs୷•+Wu;l6GOD6J5.,!00PRy`,4xʨT? "5@Z ~_/udl}LL>x_h~*Kp+2 x嗱rJ 6mڄ\.ǡCG9kkkr !JE###g.f#www;{FCC}j⫯BJJ-ˋ/bFBnll<hii bbj!Lky\<:Nxr#BVZ%].9Fr?C=lk㞬 6(8wVgшjxxx8{w裏BӡW^Ejj/¸u&cddZ|; z 555Xt)*++!"{1c3vBnn.$Fum[HJJF;d$MIb2/f#M&Gj'oz|pQyg-h*oȆ   A Faa!ooo,_|Ȭ,l߾ Aee}&N;w.Z[[%]AAA D3ŋQRR۷:ܹs-ǩ@jj*믣IIIW֭[mnٲ}}}Xv-, -[]v9hLɫ ifdVԳ ;;;!("""=ߟ OOOtww;af]HDD4qq5x{{xQ144hZG""Y, g>AVs#1@4$a$""""I HH""""$a$""""I H`ߌW(}IENDB`ipywidgets-8.1.1/ui-tests/tests/widgets.test.ts-snapshots/widgets-cell-29-linux.png000066400000000000000000000054601450026722000304020ustar00rootroot00000000000000PNG  IHDR!nsRGB IDATx{LW/aoDw;K/nG#j-M931pbJ멭tFt,ʹ#͡ZVTZbˌNxa+Ap?o썂>wg']r\@ """"^@[@[@[@[@[@[@[@[nKyRJLc_Q_][g./vΞBˏ'ni""""rsm<|1k?ȩFYGKV,boؕϾ%+qT %iq|IMԪͷ+lõb۩I& pTyk׭uVv;H-l/S,I>gGv'kh=[OOOb%::3LvIrr2cǎeر$&&q~F)..Q֕`rJvu?ׯ Δ)S|r^xv;7쳷XlUO?4k׮;Xnv{(;y1?6l0WZngƌȝ_Ho?3|[ M';W+w;d(Aӓ1 9ns/䫥s=瓔DYY{!++ qaѢE}U pE mF}}==|G,]*˜7oQXXHQQ۷oYfƮ]8z(+Wxxꩧؽ{1|RRR:.]?~<Px f\t ///&NH[[)))lܸ˗/OLNNiiiWmXn.k&555̝;Cr]w;3m"""j@H`+#_s|?L|4a{t"`g$-5` #++fΜiw}9st"""4xy{X{N@ʾƟh=wט1cx뭷ەWgӉd"00Шt:{1bqߟAaZ{555pq뉏7\.ijj" q.]X{[[5HMMe:t趭>&%%pe3~[[[=`„ L&>s233=nFpy<.] /^oܦ68gٕlv%MMMhH^/|ݘ?q{MRDDdRZ{_L I`{xx2oͧl ;.ZW=z,-Nz={ͥV~Zp}oͅ hhh`L:\ڵkillrQWWǗ_~8>>1}tl6V!Cra7n9r6=aq8n`ÍOLL-뿯uZY^=#//اe, seӦMx{o5zhrrr 2jCDD?yGFDDDD&)lRDDDDܢRDDDDܢRDDDDܢRDDDDܢRDDDDܢRDDDDܢRDDDDܢRDDDDܢRDDDDܢRDDDD IENDB`ipywidgets-8.1.1/ui-tests/tests/widgets.test.ts-snapshots/widgets-cell-3-linux.png000066400000000000000000000053071450026722000303120ustar00rootroot00000000000000PNG  IHDR!nsRGB IDATxLg7_A[TTXVm@Fs ت8n]Dɝ9O$[eSӑmȏԎRó NU߯O}8N'&HtDDDDtoa$""""0@[ - DDDDH""""r $"tD:͆!H$d2T*bOGDD4'~Ʒ?`jQ،]HS3§RcX`0LLA`a`2R %li $W;NoSߚ k ;*{ZYYz=f!** MMMc/..o=]=, @,r* p:tDDD.^n2Ҡ.e¾;DEEl6O]zGLL RSSiӦQD" ((hZj;Goo/J%$pl6͛Tb`ڵtݻG1xWx?3t:`ҥW+v"";2x$W=N'^|E(J?~=݋Q"77SRW BT:Wv… m۶1?/oV+PQQQm.\-[yf\p:0LSuDDu#$1gaKG$Vu; aɒ%CF^1/)FbPՐJ={6G?%J?'ObݺuFӧ}v8pqqq8q֯_~n;Ell,"""&\ٳgQZZc8v6n܈+VuoʕxP^^ՊB ϟǑ#Gƽ {'hjj`WxG8H.444ܓ!R&!""aaa.!J1w\Wۼy`0`4G؈,ױ EccLD ^ lo wɸ HIIH$BZZ/^*OeggC@s;ΩRapQ[xGƽىEV ڜN'A@mƌ{&'n7ƌ&"yULY9\ܚjt[,,g Ekk밶چֆٳgOh~Te˖aϞ=hhh7@j am"gΜpԌ:dEFFڵk;\__ :)r9"##=]Ƹap̙3peh\tu<44,^xZj&" n ֮;N{!з Dbb"N: dggYYYCMM F~!233 Ӊ/mmmX`5@#??j/^ٳg]򩧞{grKx衇с+wKVCVOެ xMI:ݱp:p:@ HhZaǎ޽{ /WWWǵgxŊXz5$''O>fÒ%K+8&!!aqzz:}غu+:::]valذz{{1d2XVzC,#22;wDRRҸ5jZ?a_v8tʐ ZIBvr~]AAA @ӡrZ [nڵ jJu\ (--EII 0w\۷*jOhx i|˗/GFF<] M2 J5gAFBeo""Uwa?ȾKv8|駸x"~iOES@.&ivܸqᑈW Ě5kP__EEEx'<\M%\???H$BRHDD^f3100 X LJ=DD -IDDDDna$""""0@[ - DDDDH""""r $r(}O3IENDB`ipywidgets-8.1.1/ui-tests/tests/widgets.test.ts-snapshots/widgets-cell-30-linux.png000066400000000000000000000060001450026722000303610ustar00rootroot00000000000000PNG  IHDR!nsRGB IDATx}LTw70 T`iEY tA Ԫ^WRK-UbCj7YK[$R-jk:Gy%P X@DA<,>,hMd8~dO~fB!6!B{H!B B!! B!C$@ !BHB!)B!"R!B8dD_s0-+v}'ùa-B!nM3RucRdjO7|:t>σWԼKG?A󟳫8Y~{-I !B]4$/"jc _26'\};ٵ!8@JJ DDDjUhh(gZ1h/// F# h4RPPpkޮ:Ӊ"44D5bccl6"""ɹ|3g`4ijjccB!ӈ@^VhSт O Ϊm\<-Qs|Bzz:̟?WWWjjj8w޺ej*VX@mm-O?4eee λFl69|0 _0,}l,]݋ j[ZZZhmm%44n}}=]]]L&f͚Evv6QZZuww';;0L(/ƍɡ !#殼Dsl_9nMQZy.778}Sa05j̛7Omʕ+&&&W^yxrr2Jrr2ٳxyrrrl9 M\\ׯqh4t::wwwZMmh"~z`Ϟ=̞=ooos={{???t:,YDmsnJBB>(>,5557j*0LL>REaܹF{{zέl6Fpp]+++ՐYUU&Itb6III… \x"z)&N kaR!ݕ9YDn,`M}Z?t٫$mV)SϚ5k8x ϟf_o>Xz]O>uQQQɓy9~8%%%SRR—_~ ˗yg\7ߨc裏XhѰ aÆ `Xg޽r1LBZZjR9qdeeuV(//jm6l6^Kee%Ch6^jkkbҤITWWkl2Z[[j]Bq/+R3ʀ?2~7ƏOqq1Z 6ܹs9z(0u1rrr0 vZhmmU뤦^'%%z1 L8{L~4 z|||Xz5~M/OԘ III޽r\\\qPTTDll,̙33fcݻ ((Vʕ+(++SOXp!ݤCQl6S__o7CB^gg'eH<}4aaaC=1cxzzb0uwwpYHJr͆+wWi׭[G||GbbScNMMe͚5TWW5dffjk?NKK &LPۻOssೇZV}ӓ.TQVX :gΜ!!OQ\\\o6 Aǩ7```VMM VUV BhT}f|UX(<_Q ]>\pquQ!vsA96,楗^?b0vXinnfر$n;ߟdzo>kZVFQ<IV󩬬d̙q9qbp%aX瘢hcd?HDRDDDDb)""""1Q(@HL EDDD$& """" |ΒoMeώ+泛&w\-""""_z.H_{a_; ޽ qe $o֭ @myVh$Bb n>5_y3/߾D5]DDDDޘ,Vθ<,'-;70ǝ;C-i%9lwOa/d6UDDDDpR@RFÑՓ3- BW#5A3_@/ۏ{EDDD$@v#4o]GKܠ|RFz\mؓӰ'tΦz:ja%@}hX +c:WR>LKL~O~\Z*""""e|\ ԭ+>vz›%x|4QDDDD@f}c7Ke""""қ [oh%B'RijGQ򮺕S;;!>V'-N2>?מ# o?@ڹ8d!ƃyK$8t67/""""`Fc;V k\l6fog |FD"DQ0h~Z>+96 rJD"ڵV Bjj1F TUUa6>磱xTRRRlaZZZhoo'  zvMEEE9yL?'9(@)k]vcqDhnn&..ypM6qw+f͚5LKK ^Ggg ]ii)?K.7ޠؽgB~iJKKf޽ttt`2X,\.)--e̙ 8"ռKd21bfΜɌ39jD"444tRΝ9pp`0aɒ%WDDN/ rJعs'vrw^^uJJJ(--%))XhׯgȑZիWSO~fMnn.l޼S[[[Yls+VIBBPߏg[|8X,8쳙>}:NyDgС\q? ""rSSBܴ4"1^_$%%qm%33nn χgs2n8x ƍwD; 8Az dggSTTd2dq\z |駼/a<<3Fobڵkl=l޼/jz-  7У9s0w\^/\tEL6C-[Xf $''xx'%Ϫk}˖-2w#  |=y1b'N:;;CCvFvvvnC$}"eȢ";c痘hÇ- \r ^x!`^{ O`ʹ-=8+g,Y•W^1UOzqm} g6o\\p(^1dee:WSDDlZCN ^vF0@jj*6O~㵮*a8*ZkVըB>\:rX__oTaw1Ll6&OL4RQQaƚ5kCE*ӧO ++oٳgټy37n4Ϋ磏>bڵnn᱋!11+C6e9)@)GZƎ㍞?=z,b1BSYV, aW/?"h4J{{;ׯ7P(---]Nnn.C5eR^^n\`֭|~FUW]cnn7 DDD)9%\=ds=lذGJF pb3@vCG `(ٶm .$''v0Æ cԨQqwcCCCڨ?7f1l0VVVk.9rdg`XseTTT lTWWSSSjeʔ)ݽ]J""vSC݇[ZZ:u*3gdΜ9ݻ_s|>ׯn 줣2c躶*233ijj<ҎKZl]s ED7 rJp8zF, \~444kc Za~ {YKY\\׾51L1~^Sj~SNcĈ1PaP8|yW~PKWz.]ƍECPÆCᨯWqUW]ŽKbbbgƌ\veZ7|&袋b|lٲXwf||륵H$BMM XVRRRx<s[{ \DDD(@)d2aZ B:;;q:5}k{QZZ  ݋qD"FqLWEuo@&%%Ǣ{ߌ39s&<ۜuY| 磬 &Lxd2B`YY۷o'55ߏp!Cx<=m^<8p _OCCd2v{ o.##Zr ?|>lK`2>|1 _UUżyO9ێKWUFRN ݷ F'ch7n]t.v{V`7aؿG 0#cIIIaذaqf#|6w׳zj?ݎjaOvv66z0k,ٻw/{a̘1DX~= .>{a~&>3b^"jkk1L=v~1Lp]w}vv܉d"99^HVVp¹TlnsaܸqFLII9bjeܸq<?`۶m1v@yw]kSQSSC]]---~dΜ93MoA~~>iiiz뭬Y| xFii)wohkkc}јѣ%--^KKK3q8xp\ƞCVVfذar袋zb0yd|A~ivAJJ 7tK/+Ր!C7nK.%%%y .III{lݺǁCkSs3}Vj_ve,Z"-""GPS\O>!3fAVV =7L$&&ruבt2qD|I 믿. ˅p6 Ejj*YYY$%%a6***4iRd2a7A\\K.eL:`0=pw+9r;k2>|8wqǏg444ى 55AQRRBNNQe]#//ϝwDDej [oCq#FwaD"-#|,t-sF ֈ'b+{o,p j Bsv{WyGy9묳I""Ǎz nzO]蚗9mcq:""""HDRDDDDb)""""1Q(@HL EDDD$& """"HDRDDDDb)""""1Q(@HL EDDD$& """"HDRDDDDb)""""1Q(@HL EDDD$& """"k7LJyy9""'XMM P!"rB(@f7lقn& Fcc#VUhӎI0p@.֭[G4IϠA=z4)))U9"(@A">>""r\)@HLT-""""1Q(@HL EDDD$& """"HDRDDDDb)""""1Q(@HL EDDD$&n|l߾h4t2alF$غu+/k֬Q980`YYYF$8x w&99cǒMl۶m\* E䴢yDQ;6lX7GDNsuVѨFD䴣y9N!rHLLbw3DDNUaHL EDDD$& """"HDRDDDDb)""""1Q(@HL EDDD$& """"HDRDDDDb)""""1Q(@HL EDDD$& """"HDRDDDDb)""""1Q(@HL EDDD$& """"H rDQ(fH$B$!I$tb1L<) D0l6t:qǓ8F"X,$$$IFFFCcD"#B]M& 8"mmm444A0$  D"B~GSS@\JJJb @ ))tNJRNY/yGw{y^͛ /ixؽ{7O<K.宻dڵ⋬^6dggSXXرc5j zj-ZĒ%K(//Aaa!SLns5imm?9oL&#u}aX1bwW_}5{,[}B[[^o8t_o²ex뭷Xb2j(JKK 8쳱Z ""҃/^޽{u]G||WFbΜ9lܸ$8p[n2jkkYl.vX~=>)))L0.I&QXXn?磏>ge֭a@ _~ɗ_~ƍ7o>~?˗/嘞ǎ;ضm3gd?f3Vٌbv3h  fcs.˸yyhll 77v;---466ȪU3l6guiiiacH: v)))K/%΄ hkkl6cٰZl۶ݻwcX7nXVN'\xᅌ7?ϪUFwy5&6l@UUg| 0xHED4)B|' Yd >IOO7P믿!!!`0Ⱦ}/yYhsΥ'p85£EF7 IDATa„ ̜9<UUUڵ͛7cz̃ yꩧ1bP#Ɛ!C9sL."Z[[Zn\.?OygHLLg֬Y?;lذرcy)--% 1o<^y-[Fee% ""҃Yp!P/ihh`S\\j5JPo1G0118l6C aȐ!;l^}U>c 4h+W4nꫯG?EEE|R|Gcl6d"--St:}vnA||np8̰aø+cZ}u=z4| 555OAjjրRSdb„ FܲeQoiia@h4J0$`ۍJuu1v)//p饗'TWWdGssѣx>|8W]uh㡇d2_pL8c~fHh4j c.c455?UV 䐟gMaa¤ARNi_|1/p7y\$;v9@ @$17ؗm۶q(qqquYܹX7mďcK45o2!%%czCCϙ$''Fq\1>N46EEEw}l2ذah5j^x!wEGDDl rJ+--vصk`F(bl6rrr܌dȐ!dee= h, Vp8ls\}A/^LUU%%%g|! ++b^={P__Yr%%%%c3f wv),,$%%%յa׾}1\|vZ8@kk+ݻkײpB-[FZZZL;ORNiYYYf8plݺg},^v;{ ))#GCP(tLrӦM,Z:n7g&77,vQ3a„CÇGÁfcFLGGnɓ'sCpq0;ȑ#9rѦF*++YlJss3)4%\š5kBlٲɯ~+?뮣8T@3fȮ̮]^ ^13e.")**v… ={6.vqKFy׺hLII9. În'++,F͟g֮]ks.ZGNySNY%K;ӟĻ֭[p6|p׀ZA#`u]GGo6 ,n dbر 2_|o&zh@Fg=~IJeؾ}\p8*EDDRNy#G$;;:,XL[[|>vqAn7=B!cBٌb(`QE?>/wjo|I&eeeq5PVVFmm-/#z/^ʕ+C!20Yu a-@.^W_}8K.H$#HHH`ɼ]p8L||<8x /b[ ¡ E[[[innzYUUżyxؼy3P+o&+lڴ_[/Brrrhlld<3aX(--f, ~͛7acv# r="x& ;;;ٴi{øqp8B!>3|I0\tEPDDN; rʳlL>7xN, ~ݻEsNPobQQwl6@XDZ7̛7J֮]˾}D"L2GQNLn|>:;wW_e大L{{;۷o7W{ڊ㡪+V`Z$ v8ke„ >+Ӊᠳ"'2i$yVZ~3.<,_W\q'NDD䴤)<ʄ HJJM7Dnn.n[nP׵cx2220LǓ1cƎ1\qr-;k 淿-gժU[XX]wŔ)S5h nJ}}=~W>2gLOO'))>ׁ?&w}>۷chll4'OC=d,$""ERNy&\z~3enL&̞=+WrJ&O|Dq݌=R)**"33o|477sNB :?|&LA8aø{(--eٲe|'۷62224h\s5(].SN壏>2NLL$!!8bt>|8^xam)))a̘1TUU1fs=G} . ==#G2sL.RF""rfPSdpp}q9PRRbbXg߾}GCgy\}D$vDRR= *L6ѣG3c v@RR 6͵^K^^& ˅0֍jp8x<>1rH}Q:::=zQiaa!~B$$$PPPpܖӏCX,FaN;5jTe=d8[f233<-  b8Ǝ pL/11;^P$""Ha2}3LC'݇sDD̥""""HDRDDDDb)""""1Q(@HL EDDD$& """"HDRDDDDb)""""1Q(@HL EDDD$& """"HDRDDDDb)""""1Q(@HL EDDD$& """"k7LR[[ʕ+9p@7EDN[""'I`Z^2V=v]{{;vl6[7GDR9 ̴iX~=h#"'fnqe*ќpHf<)rq\M9 EDDD$&(@HL EDDD$& """"HDRDDDDb)""""1Q(@HL EDDD$& """"Hp&?fݺuD"n$qqq|k_9n O-[wSD$ZD"0`@7GDQ< ZZZfL:n`k׮O?9 O|n>n`ӟXbh[#"r|)@Dvx)"rnf)IHL EDDD$& """"HDRDDDDb)""""1Q(@HL EDDD$& """"HDRDDDDb)""""1Q(@HL EDDD$& """"HDRDDDDb)""""1Q(@HL EDDD$& """"H9EQ p8>DDD$nHd޽:^/vFAff&Vk{x^vŮ]SRRBrr2fs~rٞP(D]]QPPlQ__"--(uuuTVVAp#"" zYz5_ٵk8ꪫ6lǹ,Z  СC馛q·~ȼy8q"]w G'i&z-VXAqq1<٬[a̚5Cq~(bǎ̟?%K0`Nƍw r9x ~!oYlYa@ ֭[)//rqwn^UU?Gjkkoݺ&~dӟM61|^/wq8k裏o>#"{eܸq\|ż/6lb0x`466RUUͼk̙3Z Fii)VuֱqF^~eF͵^f-[/K[x^}{9V\iSSSC}}=Wsv;0`mmm,[_|g|>&EDP3B$agÆ x<JKK9s&sN:vΝ;:u*a.\+Bmm-#G䮻kn׿ǔ/2}tٲe HhCmm-je˖/uVV+P8R^^n|~̙bᢋ.bΝ̙3?P(lVQ rF8x -bݺuv&N#<رcq]vQPp8سg:r}1{l+رcO>$+W/`ƌ߿߸immGyQFn:x<\po`III!P__d"==dvK/́tr+hll$>>he|Fټy3>~Çs-0nܸd2>SoN8fƌ\r%FxX,\ 27xN:::c|A Fmm-| q뭷FRRpNǏ`ҤI455|rIIIa֬Y<#\y$$$t:qݚ(""'z (++cӦM1eMfsXd 5553c 2338nРAưŋٿ%} W_MJJ s̡w9 gZbP(D07//D|>@_|DQJKK{TBw M&dTUtEDD^-#D΀ؽ{7-1btttvZRp477_c" V+Hyo~0fP-#=JQQ^x!~O?sxıHM6SYYɘ1c())!>>_͛712/MNNN^ǯ t@v@L>)""'~aȐ!L2/ /@YY ,Gono>-[㏳h"ہCs*_y^x2dq8==vٛp8l\+@B!{AMo4-""'3k_7nW_e<呝M}}=ׯgϞ=XVBq|,YJ ʢ;wRSSd{5x<>lTxw aw/q\G 6XGRDDN4H9#L&rss;hkkcܹS__͛q8=*KKK),,l6t:={6v_رr>H$b`FK^^q#F}vn:\.EVVdggowwIII"n.8"""Ǜ1B?$//aϞ==333ַѣy̚5L̙L}}=v"f͚7LvvqN~~>z+VbҤIGm[jj*7x#---L4 LNN7IHH`ĉGϴiغu+Ǐg驉IR(v#F0`nFjkkd2HZZhxbb"_|1cƌᡇDRRRHOO'!!б']n/cx0L$%%oYf]b0uTF>ꖋ"""/H9X,RRRHNNP(d|vrrry|T,dHI"ō\ԪZZZjAۺu{K ^ME@9U)xa2syx]>n۷⹫#Cn5VS<^DD仢)BU}.-""FK5EDDD$, """"H ERDDDD¢)""""aQ(@HX EDDD$, """"H ERDDDD¢)""""aQ(@HX EDDD$, """"H ERDDDD¢)""""aQ(@HX EDDD$,݀%?t7EDc6mt7CD;=p88N6nHqq1v?vZZZp:DFF戈|d}G?_5a$22qƑx""J4߹`0Hcc#uuu "BN'DEE| EDDD$,Z-""""aQ(@HX EDDD$, """"H ERDDDD¢)""""aQ(@HX EDDD$, """"nCxb֯_O0<f1 IDATԩ8o`˖-l߾0NwsD{bٰlӇo asZdddo0 MMM466`?::x<466܌pM\\'7K]]uuu|>n7ݺur4x<jjjhhhC||<` 466BJJ N\.`Z=z0|pƏOaa!IIIYklldӦMTWWSXXȭE]Dbbb!k2|VZEEEL43g2h ZZZ?>k׮[oeѝclݺg9&?2o<9++z?DzeXr%hԎ1p89s&O<@kj*Cjj*fܸq 6ݻyJߛCxb>f͚u9[pc\qƶmNwsRZZjp `L0Xn)[VVf?4l61|pcƌ3 i*,,4 0Q__o<F^:}bk\s5֭[@ Щ-Xjqyl6jdz֭[ f^0k^nxꩧ&#  yngZѣG4JJJIII=s̹_~2 a;v0S~vo󔎱0ni<#F 0gg?3?k f4&L`\hkk;w/ѳgOn@ @tt4ĘaZ+A||wMDD_ rB$''PQQAII ^Ñ>kRVV@~%&& 7_NDDmmm477B{{;111 0tp_~  Id? ..j.\wڵkY`s_͊+l :9s0qD>yWطov }O=v[n\wu̘1Xx {1˓O>Ib y饗x's+W^444uV6l؀f#;; p>YzjΝ˶m6lW]u/s&MD0sgJJ }%!!%\¨QfMtt4*f͢on阿aٳמ3g?Ox<;8pbZ[[}$$$2"".SZ  ٳgse理PXX͛7с墡;vPVVFnݘ6m\pVL~󟓝͒%K0`zyyfbcc5k]w)))\VVƼyXl6m"99HJJJ x=C\\ɓ'ihh %%]viB=MMM|<lذ:n &q:fd߾}1b}9?<^t٣Gرc%%%DFF3f+|^|El61s:iΝ|:tc2ydscQ$==d***СC' [l 83էOfkumhqtt4'N4 `֚E|>.f-vꫯfʔ)l67oڵl߾E]_nGƵ^ҥKꫯx뭷=z4{}8q"{/':b1륡%KSOyf ̙3K^\8 Cm;JS ٿ?p$$3SÆ cРAtttYr%9qqqL<:n(@Iѻwo***'=fpglмP@ `rl6:;&&KMM ?nĉу+t9`w*w8ѱ>ﮞkDDIkF޽+WRQQ 3f ^ rRgQUUEYY`CCQQ=ڜGx׳pB+:::̺ӦM#66u C!bxXbK.elܸK>}c!22R}]\.$$$)0 [ns9v;ڔ)SX`/F&MĠAN90 oٳ  :oS<3܎;Xp!6m@ @NNF"!!CLaa!QQQoӻwoRSSILL4TlUkk+Vbݺu$''sпSn| RRRݻ76V*++ikkr2nfoR{{;`@ C=d.8#=UC ^v0hkk~|fCJJ 8NV+qqq1Cki&ٳ'ݛ޽{KKKa:t(԰aÆNW^y)?6_NRRwSL2y^^/pd?lBwyOXĮV+ .`|ǔ5++^zMVVV|G2i$ƎeX rRn,.ݻǂ@f1!4vI{~?>SQQ!PSSÖ-[;2e \r #Fp0x`fΜn 6n:H@gĈ\xᅌ;J(wAAIII]'>>lCii)fS}ν!֯_СC< m6qqqĘݻw؅^@:bȝwI `ܹ-[`v F J!---|']TƍGaaaXmbW^ dgg(//7XVgȳ:D\RSS>}:.)999wh0 <cr Ǐ OII K.>'`ƍWs%>>S)++3;pEEElٲO?)anw"QQQXV::::>G/2}jkk9s&'N<'fL4^zaZq:ߟSnth79F?իٻw/S^^NQQ-b͚5sw0 n{Gmm-]vǏ׮3""gH9%'PYYinݺEſm/Jaaa1!Bn&zu$BMJJs5!Cxxw/Yp!Æ tv9r$#G0 ۩ xbvɦMhnnbvq' ~INN&;; EEE]&j.֭r W_O?&Nj)Cƍ[nZoqtlii9gv;ػw/+V3EEE|'L> ͬY/TƎK~~n~(@)IOO'//H*++^{_|All,W_}5s'Q dsE0 &СCywhlld:t,:GVVYYYDEE{nHHHEC;wL~~8?N5O$TO߿?&LvϲeΝK +4*svss)6OKK#--={R]]MQQTWWaĨQ3f)-""שi233|,]z*++yWy7ٳg)$@̈́#iZ,1tfo)--5&~4DFFү_?RSSinn؜M~W^y7n9dlZ_JQQ)2JZZ\s v999l߾s[o+g:ٰa7ov3=D___ʕ+/IKKSFRNY^(((zj^~eJKKflb 0P+`浶tBojjjb۶mgv;۶my/eÆ bX޽;s rm6dH0d,]v.rD߿OGGׯg˖-l6s-99iӦquבIqq1=}^@ `㎎3L=|> { 7<&85k0 v%KhkkcȐ!L0A""g a)ʢŋR;NMFkk+K,1#@^^1 >BC[5kAvttсn'..L: [v-,mmm|5j(NvKK .cXhiiaݺu8pt233իSNeݺu|?|lݺt|gx^ Ə~#6o[oE{{;ƍ /֤cRSf!//jbcc8qY{ܸqٳZHnݎJOO'22FVZuJx}7ߌa|,[7p8h&L5\CϞ=#{n_s5l6^z%sMSS>ʴiӘ>}zV+^{-<#x^/_G}Drr2Vj~?qqq5hsngBkeϞ=[| :-++3>UVѯ_?rss ^I~- N3gX`ׯg$&&R[[KMM ߟ뮻ÇSWWǚ5kضm=zK.o߾5 |Ζ-[9r$Ǐ7\~rJ~|͐!Cn7f͆rB==z4v1c0m4vEEElݺ8cرc 9r1QQQ=F裏(--󑐐@7n;dgg3c RRR_멭5K׌5ncv[op;m6^/}/?)䐛KBB}9YV1cKvv6444&&&˅fnp8pݤ͐!CwϠAذaC[Bm;f۶mÀ>|8'O#22ݻwW_˴iӘ4izED@#ܥE_!Cp}Alcȑ0㫯ÇӻwcBUuu5+VӉtjja'66$@y `׮]f|>~hlL޽%J8|F^^]jmmR***Gӳg^/͛7w^z\.̤/n3|p{ΖvI}}= 6ֆ40kDDőBll [~'ڵK/PG ܲe 8&fh>6Jnn)r:Ӽ+{L09s""g*?S#ëy ] f]!s fuy  g5ۉ8myf8pZZm|agվݡ.?BRDs\6#,ںC;ɶ5<5Q{s[p- 3@HX EDDD$, """"H ER{tt3is֭[ƍ~?hϴi_dժUփ"""?~<\s 444l2>3>jbHNNfРA?nw@ 믿ҥKٹs'\s5\r%|[ǠAǃftNy8;;tJKKٷoQFѫW/سgj^ӦM;&Dvttp7{ O_ qٲe5qN'^xyfx ΝKqq1^Zك1nnnf޼ygMRRlܸ8uxᇉb̘1TUU?{*W4 BGG_~e^xSKTTGfĉر߿??񏉉! vDDvp8p$&&h#--<.BnFŋݻ7,XW^yKVV ,_~DDDgر_ov:d^'".&MĮ]Xd n7\.3Zdggs% ٰa<-f̘<@޽ln3@~ 2e SN%##ݎbp1qD"""xר7HW f7 555ddd0}tbnA2****F<q?c̅)MMMʕ+ٺu+&L .nw:wZZ_=>֮]K   t:=z4>9Dzv233o~ã>J^^`ۍb`_|%%%dddpe)Ñ@̙3IOOg߾}lذ{ jkk?>;vt2j(zsb0NMM XVvx400 7`ॗ^2z뭝cHTT]t111ֲdLBDD=zp-Я_?}]wΥ^ʐ!Cp8x^:::pf9jjjx< :cB/޽{I r|رgy`0H~~1s@  Xx1p$PDDf;0-4xhoo'`xH߾}Yz5կػwo!pǎ]^;ܖ.]Jtt4g}vRCȮV`ÑrBCEzz:ntjÞ={X|93ggR<#G4WtERaP]]̓>Hcc#YYYu]'ܿ942 8$0Cؿۿ_nݺh"~R]]mr!zK}}=*uuu$''3eʔNR>]9:@ZNCÇ'77;wsNAtذauYDFFs7RRRBDDwI݈(@l2/^LTT'O0 @@ p6jkk8477@}}=uuu466f."lX,ZZZhkkt3f0c RSSyyG0~(--eΜ9֚&AjkkYp!O>$ncrܡ=] }ygSPPb_gf?!%KP__ϸqHKKH9)Mv3Bh/@dd$3GGGjpP[[LZZ6Fhhh@ @BBs9deeunllûVٳgSQQ… yGn ))Çs2o<{7||Knn.3gj U].#9:%%%1fKK~iwbb"7|3;w4w OLL첸(@aHnHZ[[; FGG3qD~_Itt4,_˗:G淿my"PO^MM K.'>>\.~_yf֮]kƢEg455aXHLL/7W:vw*M.\cۏYr5p!^x-Z޽{Kͥ7xbN'6?￟z={'RDD)g 0HKKpCi&>S&OLNN%%%aP q 9N'.@ @rr2ҽ{ JMMG?ロA1rHxw={6o&f-IEjj*?я3gyXH]]?xILL$55Nq ?>7o68 L4=zk`RRR0,""r< rFX,r=ŜS DGGaۗt֍ &P^^f#66㉊n&--\ @rr2\|зo.K2w\fϞͮ]سg&**'x#F`ۇb?ǝihGݻ3iҤ>\@CC={P||?h튒([3ۯ=Z[DDDD~X=7, 5ظUyK yqho*/'~/ u-0v?:g-v"' 6qғ- NR&O3f@p8صk>>>DEEEII 旖r (**vbbblL~֬YCNN#G4HRRΝʕ+ϑ#Gv'N$==Zv˗ikk#11+V`KDDě t=mMS4>ikA͉RBF#H1#.6?1cƐb 3gdƍ]'O fϟ@cc+eee8pB -[ؾ};ٮ9ׯ_'==m۶=|||t;w)Sݻihh >>Ef#**lܹÊ+g{EDD#7%GW _?:C7h(Qs9;;hשzYVZn23؜9s|dx0a>)))loo'++J}}k: @JJ lذb{Z\\(""zՕlm6PzwU=q ^gZ'&&ڼy+<$%%ʕ+9'+"""OGV wnS5&-'l+X?}~10n#kW VLF.<7gZٻw/iii 6u=Vx`瓖͛7 cʔ)deea6Y|9o&NN@ޗ… 9tsyn޼;v0}tL&/ݮ'"""aSCEbvuφ^zsW}^9Gە#cIo3W3ª@Ν;JBVV6oތF x0öD}Fl9X t&尵,D4f+lUD$~ ɈtSXP9&Nyd%xS($I8}4jjj`Z-0#dJKKQUUZ8z(JKKq~z2"Ǐ<bAkk+DҠdddcgϞŌ3(--Euu5DQҥKQ\\9 (yZqB7"2&3AS'H^"t!=nytСCAmmqF2TUUțaZrJXYYY~MF$IÇa2=b ÇQ__>}[yy9Ν;'Nʕ+zؼyiNbu?£܀ ?|qu|y=HL{Ðq<ē{;l6 Vضm,ܑFWb…0 8 h [U9~T6O/؍r.]իWQQQ*իWcŊaOꖖ455veLKLLDrrri4͛)#NdL0A(oo>cĉU}ikk7rʔ)g$KEdL,&>g#4~Sz&~[LitO`8 !~d [!BXD H!Ba) B!EB!R!BXE ț?%ϋƑO9???MV}~"##aر-j1 6s2zgϞ=|T!viii""Nך !o֪rJk@l\w+%۵6(TgwplfPTTľ}W^`0*bcc)**#-- '''ƌCvvv[&!""0 2k,)>|vuLY&t?"Q],ܺ%hx7oN8o]orf1B)SPZZJyy9 0خ$j1lׯgȐ!'$$0p@Z-aaa|O->>>,^1cưl2 [laСhZʕ+/{K/ꫯy4h~~~̘1+WX6%''0""">|8`cn&L̞=z o`)))̜9F8p ܹ^ GHHǏo4o^ݻw4;w>>>ܼyxooo._̎;Off&`00o<+N…oh*.ޒ%K0 ,YSB_M Ȟ3<]GQMwz/xqoq5NNP[kQs (醿RMM {EVVM ,;wrIM԰pB8g}F=̎շo_8q,^ӧO[sdd$׮]ܹsi&N<'|ٶm@^^6l7ŋdddPXX /Yx4 j5zGyy9r!úuغuپٳxnϞ=ΨQ())ATT hطowi*.B6) ^GYb9'G-HեsT]9iHHH 00޽{sQ֯_o\YZZJnn.+Vk׮( <==޽Mee%ӦMm۶-BL0ZR$$$AQXXhqnnnܾ}<<kkzsrr2dz}Y:Fa {a.\Mbf322^ǎ1bܸqÇ5nͥSNrHᓛhFݻe'mذI&`.dffe\P(>ʕ+ V&ΝK@@LhSq!% ];j7'5>~8xoiJ׹ mHdq{whs1?:֬Yի7nj*ɱcҡCOΆ ߿ѣ)((`ȑj<== ir-[elllpqqߟ?>}Э[74ijGGG9sLt:۷oG駟n:&NHyy9=AAA1^敜KO0`3gdĉ888зoz9stRFnjb:;h.tI<**kmq1|֬Ycmk׎730 ׬ a!^OhhhURRBxx8zFbcooT111k߿O`` 7o_~&cǎ1}t gT\k׮hBٳ-&[B&![YY+Vhⱶ///^~&?~cǎzj[fx%55HaSqv4|ߵK HcT*GEii)&;wF\K||zec2w!es<7Jγ՜_ɬfL5NȚw+l0z6]r[K[cuVO!"""]Dc0z8+n' Vu _Zo`FD~#c;2faXX,DFF2i$v Xp#?TVVbXuV111upT"""rM || 'AxwkWbYYhw]|\[cOKKѣݻ'2|***0$%%u{nt"""ҁ<ᗗx. sQ#V|Mp _^Ƨ͖ۢSn`0M=̤#G4)a[VVXAll,QQQL0/1ׯ_ϸq8qDoǏ'**1cưj*[Yv- 6T:|0?8?0qqq5&W^bqF&OL\\\|;v`ܸq9˗7IP˱X,N裏8ws%>>^z%HgU؃ZBu+.Gpu.s9>/Fn¿oD< nop8}<3g8FBCCiҿp C㱈&}[ jܻwo|իW6mZ1N^H'סO |%gJwg^/\9oz iتOq~_18<^C4Oyx2dj1y n7&|͉';;'x~/^$33 JJJ(--駟BB*+7*ۤln>}IO0ݩKݻShpzڵk^UPP@ii)ٳ?]b:x#xi|6*Y ?P}bȼ.Pw7εfYt)8?ΩS z|I/^Ljj*5_l4440x`muƻ=uT^{5N>a]svvv۾ ;7y.ȏGVaȽK D @܏,t""F ݹED~D D D@J)**t"Bt6&qJ""""%""""u;<IENDB`ipywidgets-8.1.1/ui-tests/tests/widgets.test.ts-snapshots/widgets-cell-36-linux.png000066400000000000000000000047211450026722000303770ustar00rootroot00000000000000PNG  IHDR!nsRGB IDATxLx=ʜҩELǠԠFgLVkl32bE1iՒ*4W<-Ւ:mcPE޼֫%|}Ks\. {du""""ұ(@W}NSS[h4bX0LnEDDM nCDDM)@ޤ(E%y)@W EDDD+ """"p ?ɔ+ת>YW^%^}U l5b_""""6d@x?=Ɯ+|B.w h~5@^sUtd%\WDQwf6"Gy}- re@jjj<\N<\.N8o2Z\ڵ+Ə=ʰa<:F8}v{mxx8_7ҭ[7N'IIIXV.]1-? 8N*++֭ǎ'|i[ ~~T wq]w`~<>?]s .=Lߌ?q/b?{5ZqqUj"""عs'111͖SRRX`/۷z)..&$$H\.6l`0`4h'Oȑ#ƲsN.^ tRWWGhh(fTrssYh0c ZBCCk-"""ki >bAxhOwԣ?b0XO=<̙3ٰaC9/𖸸8VXڵkd2SOGDDnԨQ,Y , /nDfΜٳq:XVVXj%55]v1~x:w̋/Ș1c$//y1w\F##Gd-mZի"99[o1ff3Ǐgر9d⊈}3t=f˳4xn dժUdgg3i$~mHLL-ZDDDmUYSN.t^y~v{"""D#͍=g޵#$${2d۩ /0qD?NLL]km6H;S|-_-jeҥdeebiUV>FDDDڇoz<|r!q EDDD+ """"HM6{IDDvb_h㥇DDDxEDDDD+/IENDB`ipywidgets-8.1.1/ui-tests/tests/widgets.test.ts-snapshots/widgets-cell-37-linux.png000066400000000000000000000110651450026722000303770ustar00rootroot00000000000000PNG  IHDR.sRGBIDATx{XT :"x~( AH A'SO5S'/#yX>AǼe&i!M@28q/{]koy]kQDDc1:H`1c-@2cN1cu 't} 2Ϭ͕+Wf!%%`1q;W^ży/ؼy3MD(B!CCa[:u c1=8|ʙ3g0uTXZZĞ={@D8w\Of{:cE@aժU êU0tPvvvAHH-Fe˖uyfL>ǏG`` ӅuaXt) pAX.^0HR;Y T www"##r2 III-f͂T*Ÿqp1 .`ҤIyܻwOw\.#o/7\\\zj< Q^yYJPSS!C 11ٳQZZ*|>?0zhlܸQ#w̙#̙3mؑta@*bɒ%xQma>}:BCC 6ϟ "00~!D@@\\\0qD\tI!!!JpssÔ)S4l̘1J[mɁ=***Dooo$''f~~>"""쌐Xx1nݪQ_&!-- Xb pĉfΆ\.T*/vލ@ZZd2v؁'˗/Zn5ncѯJt6M:*++7ߤYf &L *//'"ǏPvZrpp,""%GGG#"ׯӋ/HiiiV֭[I| eee}c/Qmm-Raaa}R*TQQA:REE]t\B*hܹG&RIK,!___j#777oHPǓRJ5kQuu5RTTі-[hB_}ݹsD޽j\mok\G u=PVیáHjEW H[oAWWÆ üypD"oѣq.1ƞ7:ua1*ƹW6 X8GSxӾ@}m5ă`7-ʭ'N)a_kdd(++Yu. ߿PZ[[4+oP(EEEu?J+++3 9sss:999/J"Bmm-T*tuuh&ݻ7$ƹ>}""hii u`ŸOFRR uuuи$o`` /ҚTZZcj&yO/?=D"lݺv]v!882e ͛KKKl߾+`oo @&W[ۤ:00k׮EFFwߵ| c޽ KKKD"᜕JJJsUUUcϛnK ["ցeT@[O߲}FͭQ{ ݆~ÜQrkdo+ۏİ^xHNNkr")j5JJJ`jj qVpg|AsNeZZO(< <b:;v,!q k氰7|byMM ƙĦ$ @TT---ݻ'N@P}3>m}411iM"7N8~:D033{ggoo;wYf@@@T*?~5io|;BOO= GGG888000Ǐ5ʟNΙ5{ +c]=M4Zz0r @<(nLBxٻ"'*(ufnX9SDXn; 6 ''JoƦMp XYY >|`ƍm6GEFF"99Zƭ[peipI8q* JRT}"77 7nģGPYY;vhԩСC!V'>CP`ݻ8uF]vJׯ+lmmQWW'O˸UUUKpwwGbb" D]ǰ0$'' 3fYYY͖|[r1\v ؿ?j3f`˖-ѣGQXXJ@$aֆ6p9<~066H$v6ߎ8y$ʕ+ceP*9s&cbԨQ066ٳqEa6..6l}ЫW/ٖ}?ǦMR i,aʔ)lkiiL6 FFFׯ4w؁+VW_E~0~Vg޸BJ^-gӥOwvTg૙jĤz?>Q  6)*ޖmֳ=-gӝh,/5皜>>kMR ^Ž1W] VG-K}UϤgR8,͛7O.K_zU7oVvvT]]=9N-ZHZv.\ RNN222ݻwq &jE8}̖DMJI͒O!s銍T,wwu?_fxGJ'Oŋ544$=l\\ tȑQͿ}***tyXB.Kgs6lؠSN:qjjjta-c {$ݩ>ӣ~M~EM1w[h@wޫB[lٳ%IϗQZZZDnnիW?U[[%iҥfL[nȌ~!o|wI)~$il57o[++dRpgh9wֽ{`p-==]jhh6}7nPooΝ;bߞ={tY(!!Aǎ.Tْ(%QAj~SYhfnf=ץ -+P,cS$j>QOLL .n9l۶MNS :wRRRh=E1oYk6j֚jR2|qH{>-ڴirsscǎZZJNNVGGJJJt0Z#뵺4྆ztܟXg2ڸh_6٫s*!e4UbCL:U6MӜ9F_MӮ]HBZZZQ2dҝxKGC4#Yו]GwmkRl%-\x%_G֯_rj:x/^݁ny>|ߟz-L7B$ ` #H!@Ff$@|'?ԝOڻI˪DS'I?µ\0pK /_ۚjxQ.[jqL )Rw><9oS=M Dl3jy5N<:9sFt9si&8qbZT\\,ϧ+Whݺux<^sN={V:}Z[[uq{Y;T+W&Vs e}eKHTR|itР 2v+//OWUU& x-RYY,Y2[lQyyrss%׫dMW^-өs*''G͛f@<%5okJMXZa%g=UE )vE? ۷|ZnnRRR!eqj2 tjhl6}G'$  U/I(!)egw$pS0{8wVGG._,ykVv qƟW;hް/pgKKݻw<<</@@Zj;~!á (RϟL5sJk8qU+V;$IYk5:>肢VXyWəjnwUoU?6&##Cjoo~a盾\ooTZZf]yL=U&,-|C6+kzGdKH03eP@;vPMM~B=+WNX,&˲422չ##,K>|.m߾]7oeY,KILэ7t9+ ի֚5k ^lX,&u}X}g.eL}4: ?(9kAzGQ;vLD"*..֡C*--Pƍ'> ={L~۷Oׯ_W$Qvv6l +57#Wx ` #H!@F0B$ ` #HךRUZIENDB`ipywidgets-8.1.1/ui-tests/tests/widgets.test.ts-snapshots/widgets-cell-4-linux.png000066400000000000000000000047051450026722000303140ustar00rootroot00000000000000PNG  IHDR!nsRGB IDATx}lΝcNB/}QMA*ЈjBeRxQDkU%Ii(  A!** P cql_`JvWy~({NPEi2]M- DDDD $IDDDD0@* DDDD $IDDDD2]@Q~D"b1^$I˃F\<G @4,zF!1@ěh/ўڭ(SnsCOg$VJP(Q!B2|>8X,EA0D f$I$ "! td2M&c3R? \Ņ7߶h/۳=Yk6⟿~ u" !cΜ9wCݎ~P"BdYFYY]ffl6xDDDȾK؂O;MmZb*++VիWU{444ٳB8o(,**R"EdYZxÔ޿?z뭻oܸMMM)ODm/@)l_ Ks*$I•+W;vbIc=p(EEEljtt7n܀P: n~ir;?M6%b ]6-e JZ $`/_7ʝ FMRMς @$]v wŋjj*`0@e8udYj+G}~?VXhnnҥKԄ,\0#ǚ~?v.Yg ӌQmmb* GjlյAo$]Z-o;v f²e>Q6Ȫ)aFf _ÒA;Kٕ/{_}8>,݋H$m۶ 8r.]ӧOj" hhhg}v[1*++S }}}F4MٳUsH^R E3`5CѠ/^Tp\(..~`c~^,_(^S" /_"lU@_s K;w!~~7].m;y$t:v ^ݎ_~GP(˗/Ceb>\קTWOOϴ z^u;IPfC#8BFAiLlڭ8;FQ<14o<࣏>;׋Zᴎ׋ 6_"lU3w?Hdi^>( 4 0֯_χݻw˖-C}}=3X5QnnBKK {1?O=uRbhoom3ttt-%e { tr-¢W@ЩKG$U95\݋͛7d2_~%p9bܹ0LX,ɇ~? rss}ٳWƂ ~p](,,LG<WN>Y?E@x|IQbѢEʎ?r߇fÒ%K6F[[***'Q6H`,:_E ɓסu㶽Ow{ɇhfXڊfTWW#6l@UU<vڅׯCE̟??~QSS*>O<}v +ݎ.կ }mU^dEQwB$  /3\|jŋqXִq!lݺ5-eʐa0<8%H`hh>yyyE$AQb1b1A8NG""J H$  $c$ yyyiy^"H!rr %e( HIDDDD0@* DDDD $IDDDD0@* DDDDIIENDB`ipywidgets-8.1.1/ui-tests/tests/widgets.test.ts-snapshots/widgets-cell-40-linux.png000066400000000000000000000031551450026722000303720ustar00rootroot00000000000000PNG  IHDRAfHsRGB'IDATxHw.oim1yBn$[ךX[ 1-jm1ƲYc6]*BAYGIn1&9w{ gٶm $GB@ #$0B@ #$0;ЉUv~X}otbWK2a7-l'O?}~ҹO>sݿ}.RL]~g}Io.k x¶{߾ER4>)Eq/%G|g*//OӧOWVVjkk]Ś1c<6lؠ{EpZJ@^iƽg^~o/)鲜c|/hў`0+Wi۶m*++ŋ\zjM0AǏԤ! 0ZD< ^kӕ{ֻa{FuilQ.K-eYJOOל9sTWW7|]V.K'Nٳc|m|C߾E7>lϘRR){ZZZzrr~^oP(GtTQ''m $s#Aرc\UWWCA[NIII #BDO pN7T$#Eʬ:Qݻw\}Cr*//j'_Drb}_?սkJ]WHm[=,S9\M>ͨz{nvԩS\ѡŋ@EEE~h7T#ٺzAUHaktNuvhQOOvޭ5k(77ߺNeddrɲn $K@5^a`d# `FH! `FH! `FH! `FH! `FH! `j׮]]ڪe˖iڴi9s6nܨ`0)OiiN:%ȵ%%%JOOS]]sL ]c=HRPP4-]B4o<9Nk֬Y  z8OZZڠ(??_m[:t萲D~!atn^iӭv7/ө\tuu_TzzN:bS``p8G}Typ,_\=z)~[Zl$)66Vjhh `}{䷩{MIU@wG_ݚB9N׈YS] xK}ʔ)3<8'$$D?… JJJ `ˠ^l@r86?Ԭ36(hm^W#GplԨQzE[[rssaEDD؞`P@zk_U?zU!I5zo5%]4hۂtǾk `њ5k s j@F_xVG{hmҙ$K4,`p4:jN[|ωOiw}ǬZyyy*..ٳmX4~M[AhW[XO9tC^ٳG?F^Wڱc_qJ(`MBRS>V~JFx}9… 0a֯_E6:G aÆt*33S.:*//O#Fp|ʕ*(( `} Hx [H! `FH! `FH! `FH! `FH! `FH! PYYK*>>^ڳgI٩s窠6c x466ڞ ҥK믿 FS\\y~m>|~[^W'OTHH9˸iǎZ`$i̙PCCeȑ#WZZ)~H-/ d &'$裏>˗5{lr}v9NsQ@@6nܨyiɒ%ڻwYK 5vXmݺU'N=o\.eee)224effW__|^aaaZpyAoxUWW]v_֡ClOKjjjRnn)4i$m۶Mf͒ЬYÇ۞+}vpB9N%$$(99YGŋm;xb{R;;;#ͧ-rZ[[5scoV``U[hݺu:y$Yǎ&k*?~\ǏWnnRSSGKnKΜ9  W $$$riӦMjooWPPRRRb UTT7CǏWaaΝk{na #$0B@ #$0B@ #$0B@ #$0B@ #$0B@ #:;;vZ+))I'C)&&f#**J.4^CɦM*utt(??_O>Mf{YxjkkSO=$9|>ڵk3g>7|Cqq^-[؞ dZk߾}zwt:*''4֦{ QKKua?^VRDDmkeeeZ|BCCmOC4ƌ@eggp(::ZK.ѣGmOk]]]za{ C@zHY[wLjAT)kSz6o~X4ߧ%rvMF´/)*f/Y=rfdYwHiƧsnfS//ýHwǪ{巺 0i 4թ>}2g?r^xaa2ѪȄirknn֛o :۷矗a\1Lk\-B_^Q?ϩ5;.^ 4£+M޽{uA͚5K99A}'jhhŋBҥKڶmn6y^UVVD.kLI{wVϩZBbJJ 111Z\.%%%0 ^g}xeggAϟѦ\Rvvnݫ]v N;wNGQVVvG75}|r:Zj5s=:~ZZZkpvꮻRX kkk%Ik׮QFF^~9rDa@6Mڽ{.IQII&fBFa\nצMtI577]MMMjhhЗ_~zj;wNttwwkppPںukϜ9RWW}-[jx<|p6oެIyvps"@N1+%)??_VKK._,áLj֬o]]YYY:}>*joou)**JGW_}D=#r:g99[@EE233C]TSS577n+55U9Zz' i|4ftrݒ6577kܹ*** uI hݺuڵkUTT uwwW_nך5kTVV&ITuuG3w SyyLӼ>sN555)77W:v>Ie۵g\z衇tw(33Sd]vR z󩪪ꆯoiiӧ˗kJOOWCC.^= z뭷Ԥ+VhŊ n&%%b {!sן={VT__纺p8twNMMM<0D&ahƍJHH>ÿsy^{#K-IU =40 C%%%JLLP?߆ľ>\.\࢜ٳgK'߯իW4M޻{@N4())i}n%$$Ur8ڿNyuvv?/4uUUUiժUPvvkF XqqGI ӆ twVUUUZh%Ieee2M3]PnnUQQgjZ`Ο?Z*|$" FQ^^$F ` `  `  `  `  `  `Ix IjjjB]g3M u` O/%+IENDB`ipywidgets-8.1.1/ui-tests/tests/widgets.test.ts-snapshots/widgets-cell-43-linux.png000066400000000000000000000050411450026722000303710ustar00rootroot00000000000000PNG  IHDR`B`sRGB IDATxL]H mMASDةu?6eU4X[u]ah9K2gtRlYKԈ]#0N ^SjZE"\.ޔ]߯I{=G(  P ` #N9G쎀x$IH$3gQ8Is8]ov_kHeI`w @F(0yjz>}*uj;҇ϬT# LT ȴ߮; x 5=Hm/*xW5>Pg9ljމz^ =OaEe]qxN^il>#=:qℲsi͚5v]tI;wTWW*++펃(8|8@ ,*(ŋڽ{K9NM2Er:YX$={Vz衇4}t3{Oc&=iJo)5[ᆰ_?17400+VhݺuV]]***twyiIN￯UVRs544dw4@}}rssi&C;`hhH rvGMĽ@^{__1[>fr9͛7O˖-S}}}̎s\Zn 펂(Ѓ>KC3fЕ+Wkw4ܢ`0kJIIQff&Mn>u*Xɓ'+;;( 932|I #:Ԋ-ZwD>LӦM x駟예,ef^{5~7~_ƍرcmLHMMUQQ\.Bޮ)S"h!q>}Z~Hqaip?8~?(d̉g,c}}} ٔttth޽ZzRRX,_$-XР˗r{M_aۛX _꒿MթNG}֪rk+778ۭ-[GvҞ={tRc۷OG'N; )d d;z$}3٩siѢE6C$I@Eu6f/..իW+hjnn֭*)KZ~=3I"55U|4w\ O>QN 7qư4k,bR S\.tpO4}ˆ+|Zwݶ/:v˙#%5Mآ汇tjΝ͛7|S1<*bm:pox%I6l|$V]7crJM˿4YF^WMMM<-Yd# 1Xœ_IƲ,͜92yM2yM>>ZWQD@F(0B $P `$)?/gw5pN5yQ X,LaF(0B $P ` #H@F(0B $P ` #Hq0aYQRRbw ?=`x3`$ $P ` #H@FXQWTT~|$++Kڼyn$iǎQOOTUU{`ضm;cǎiǎ:y^xIR{{T]]=P095 $b.''Gڿ$i׮]*--Ռ3p8vZ `8(`0(%I:y  Q sҥK%I@@aIOOW #0C4zJNSPHcǎŋqFIҘ1c@ ;CHDMM#MWB!~yN7&G1L!дJa`"67!%(b_w}gvwm1 pt/H,~wK@7erIWn*66K@' eeeuu pMgFpMRRR$vu0)HB)%@~Ws&* *ө}~<<^gԾpe&}t+:P+?$ 7U; Swր)*?O hэ/=hpmߴ{[b֯_?PǏr:Ŋ+TZZ7j޼y Գ>eR>̙3rppFCvuiǏ+11Q{?l6:uJK/?ٳgU{}lذAFRPPV^+WU? uQf: DYT_N?lο5ٍJΟ?~[/^n dXdX.f͚5MFFvޭɓ'+,,L믵m6?xѣGӧv ?~\]PYkjjl0Բep JͮՈg7*놶 &}|$H|z5ugKUS|*_wyΝzJ$ڲenv8p@EEEZt.]ڦ:-ZH{Qcc]}6u+J#GԦMoF-Rff\]]Ojܹkjڵjll^x*??_zsСC*..e!{m#Z|>A/M{nM4I111ף.G%/\]vĉ2 C޺DB6M 6m|||/k%%%Z~-[&WWVh׮]F;S{աCdXt9{Jc555iӦMJHH8ݫ* 2D3gΔbQeeo߮988(<<\'Nl7;vL|teemۦb999i„ 6l$JOOW}}4c YV;wN*++bQpp&M$gggrssS^^4uTeee)55U4hV#nRѣGkԨQ~><@nm9Q+GhKu~z-\P={<mNNNO5c ꭷUWWצիWرcU~~sIRSS3O?շ~+???=cٳg+&&FEEEJNN֒%Kݻw駟Ν;uQ=9s⢚l6;w͛|XTnn5{lCVTTzEEEJTZZŋkҥ Pbb$A_O jJJJ[}IvvڄǚTll.]9s(--Myyy뮻4tP 6Ux`1Baaaկ~e̙3Zd,YbKz\ .T~~9{O<3fh۶m$%&&_oC)99YgΜQAARSS5o<-[LJNN秥Kj*--޽{%I=zÇ5k,M:U裏\oy/[ ũɒŢcڿ٫ '~5vhU}ꄪodW%77Wo> jÆ#vƍ'Ο?6}-[L;wcǎI}]M6MrppПgmܸQڳg,Y"Ţp*<<\>}  I4iz{ڧ~aY,}?-5{sbb,X IҢEo>;wUNNNmwEGGG$G'OV4x`I"""wf)::ZRCC$)''GwqG!{zzjȐ!ͽ5j,<==էOUTTF'NرceX쬘eggQO\Eǎ֭[fΜ$婩Ib jرZzׇ~SNIUYYn߿l_y_7nT}}uZ<5i$޽[骬T]]K%&&KRjff}*4h},//>J|ACtt?;}-5e/8w=zUwVC555WlAi$0w^&Mjاl٢ŋrqqы/h O=&OFy{{?N>EoyO߮ٳg;b +**JaG?x 3bbbkϞoj sKuuuZn Ðf̘a#44T|j[ZVsuu/KܹS+?\,Xpٶ3f۵f555)  :TZfz &(**JIII3g~m۶M/t=o״i$I?GW_bQhhƎn^^^2e} ,,LAAAθnp+ خ.PJJ }vcRR<<<w6f7,~n)lWXX[S|!b*))̙3U @g!@oΜ97S0 S0 S|#UJJJWWٵHx4La$L!@$L!@$L!@$L!@$L!@$L!@$L!@$Lqn5)))]]@+:$IYYY'S0 S0 S0 S0 S0 S0 S?`yyyZr}vnk+WF n2]]NQQdXz}g*--Յ pɩM{ooo?^-nbÆ ھ} øںuJKK+99}|||Cvfva\ud7a222$ISLHc$I>|$i„ JJJjmwcD٪S@@L"iժU߿={h8p`G.b@v3W5&IꫯwIVf͚{窎_?ƎUTTj{n}gԌ3TUU-[^͟O***_(22^2221c\͏c?~\Zv5p@+**R:tHt*,,LÆ /lب +>>^EJNNѣG)IlzG37d7dZz6nnnZ` SN)77WVvvz+ٳdjKeeeGd϶ڷoggg#d7cZ5o<^bQpp%57*77WO7u奄V|M7'@v#VUsU߾}/0 mڴIVj5ivW<^^$6ZիU]]}*00Pjll$4p c2dwŶEAAA*,,ƍ={XOUXXx~"##UPP;vL_U[[+IѣFtmݺUJOOfc=&N9wps!@vf2>..NR~~QFiܸq;/g***Rvvuw+33S|illTNN ԯ_?͜9Sjjjs77%I)))~;"괌k `  `  `  `  `  `  `cWp+d'+`  ` k ;YJJJWJgߣAI0La$L!@$L!@$L!@$L!@$L!@$L!@Ǯ.WHX,Wlw}ݵ|k)""Bqqqt?nbÆ 9rLr٫W/EFFJjkk'777H\\\:TKyyJJJѡ~@D& PFF$]1D0@ $|XVUGpM`5kVGy ”})44T?$)))IatwC)))*++*}嗝R>,󐒤vJ?-jYYYqZa `  `  `  `  `  ` 8vu.!@vخ.b  `  `  `  `  `  `  `  `cWp3IIInz0.S0 S?]4nIENDB`ipywidgets-8.1.1/ui-tests/tests/widgets.test.ts-snapshots/widgets-cell-5-linux.png000066400000000000000000000054271450026722000303170ustar00rootroot00000000000000PNG  IHDR!nsRGB IDATxLww @-w<1fM[34z'zc.ȹs.s.LbF1W~Ux -a_I>y<I'""""Z HH""""Da$""""Q HH""""%x znl68 r9 o9 QQQH$~Mɸv@bvz.s[g?,zmxv NJOA@&AP@"tVzjaN"::37jڧѣmҎ@ʵ?Vz 뵐aZz漾ٳ?~k} *̙r"8(*J(Jh4477OCdgg'0{Al6{&""ZFmFȵӐVv tfMvYSFOOոUUUXx}uvvnC׏ F# |qR~x4Agg'Ai탾Ǐ=:b>K,Arr2Q[[Z=:֭[퓓3}]]O!"Zv9澾 ˶(qL';݇|]b@vg{Æ Pxwk&b̙3Ǽh4d2ARkv*XS(dAAoWW_}m۶a߾}Xh:BTUU!22r\u^gb ++ /ۇ˗{e2ٸ "( P%[_ y3WLQޱOU6\y-H J=555/_FPP/_bv… ۋpl޼< ~ml6de;\QQ4#//O=Ԥ|@f٠hDAyx4vM*ޅ:ZZ-V+w2<='N ++؊PYYO>獠 yϞ=8/$$d }.Xɿ܆N38ɿ-XTݍ\@QQ***PRR?vttt`ƌ(++CII رcHNNW4hllG (ziB0?J@ radd2466 fΜ{y\pXt)֭[!cŊmTTVVb͚5-++ݻ_~+Wi-DDP2H@X 3] [ ܭ,*@`}qFCߴi QRRLAPWW @Ay˽u֭G.<N޿Y \UA+]^=)p:uOdnn.`2PZZ Ʉv})pA{{;VZ5b 6 11x"vÁCD Ì3EG۷ގ_v!JՅ|XV(..ƬY&jeddx^CP`FXXؠ*jPXDllWTT?~^x[lǏ#77wuyyy 08s $M  uiqohX LX-QN+_#|+2'>}:>a۬]k׮EGGP\\3g⛄ܼyosL~8NT*QN'nw`p[$JR^;P$$$eBBBv O<\@]].]:d-[l6'OW~DD!BgDʯwt ֗>}{GTԴl2ݻoRf#;;_~%"""0g(JjEz6 ǓO>u]aܟ/l6w`w`, ]. ͛ɓxڵ W^ŹsP\\ xWfTWW#==FOOrss}Zٳ:hO###MMM~:ϟLK.x7}V ?MJٍ)As>mbhS`?NUHlËhS8~8***UV!;;mmmرcZZZ ɐr@JJ 򐝝~8p8r U7oDDD#wlVlNov+a2шgXWd8<Ne˖᭷ohhC<r…(--Ν;ֆsȑ#㾅}}}}8}4֯_?SNp\8pnܸ˅8'ۤ<ʐq`!M6{A ,,'O  Z=IDD#DC(QTPThmm2> #*‘0<X<Igvh4dH$p:p\Z>}} Z2ss[,FhܹsrrQQQc~ܡl6NgnB1:CDDDH""""Da$""""Q HH""""Da$""""Q H*8IENDB`ipywidgets-8.1.1/ui-tests/tests/widgets.test.ts-snapshots/widgets-cell-6-linux.png000066400000000000000000000032031450026722000303060ustar00rootroot00000000000000PNG  IHDR!nsRGB=IDATx]hT$3`뢐uXATL0Z"t,^tZzҲPh" ]2^(1i@؋*C1P&-&YpY(b&&grzQݵ=!ə̙~.\۷oKB<nvF6]vjK_ޤXTi+vGiǚ?lkrr͛NIҽ{ta0 O0 \.uuui3fPZZ[Yٳg2MSzs)))rrHs˛g^j?[jSMásѣWk922Kʴh"544ڵk:y4CG===hTc3gE"{ã+gJ67}T4M :b֯_'N2 Cǎiϗ$=yDJMMU4թSF]njjjd$s΢"UVVKaBXlg***K`e ;Rn7J}T؇Ϫ),ߓ#۟*TYz|ܹsGYYݻW@@XLВ%KTWW3gJ8`0Z\.* kl۶M`Pxߘsj``@r:ڼy^W555ҥK|08L4s( iŖpL@*LW}}vG/dK%l$]~]###iw4`܅ aH$"ө˗JII|`ķzt1@b: @vaf ` $,%4i"IENDB`ipywidgets-8.1.1/ui-tests/tests/widgets.test.ts-snapshots/widgets-cell-7-linux.png000066400000000000000000000033511450026722000303130ustar00rootroot00000000000000PNG  IHDR!nsRGBIDATxL V;ɹWȂnt,n!d&my*FfU?0)D~$Sи.)S 2܌ Ls* av vu;ϗ;a"""""_RD)""""@)*""""b )""""XC@ K#.&&&DdH1ERDDDDL Il)ի2]?x8Lmr{V HG2)C7>}U~KuCOJѧuZhUUUTWW`'gAXmaw^gw֯>[_C׽PG%%%dff lڴ)$gKX޶'g"}5s\AJ9:\./_""" 9i+DtO~n&1~˦:iϾ}HOO'99+Wrʕx;v`QRR2d[;wdݺul޼L2228rȐyyyyFqq-q={!"""a, m|U9ի?%رcx^n7v7pRSSxap}|>6;w0}q>kQQQHJnx^ɡYfQ^^΄ صkaʢ"0c瓕d޼yaܰadffbZYz5. Lii) *"""c0 #!$=|d***HLLˈg2:;;Ba=V@Jhoo ݻq̜93DDD$H bV+sΥ!""2i [maKhh [Ddq)""""h [DDDDLH1ERDDDDLQST EDDDH1ߣ892qIENDB`ipywidgets-8.1.1/ui-tests/tests/widgets.test.ts-snapshots/widgets-cell-8-linux.png000066400000000000000000000027651450026722000303240ustar00rootroot00000000000000PNG  IHDR!nsRGBIDATxLu IK0RnWF;粨̀斦#gaj&?Rlv. Z]"zI?$#l|}>߻݇kFQ#d7;F1fm8N#Q qG0 X!HB!HB! XǪJه:V>,[3qJ12>I4-~ ۿ=_g}G5>klS\S~ByV5Z@߽s@y<ęs|FѡfG5*_#P3g>6Q?FStثmkҺV\ӧ|>8퍼^rss{̚5K'#g;nr'{f/RO(F*Jo>yfE˥S088(ۭ˗ W Boj-!AW/G }9-}8D%%%)))I lϯ\;vH ,ڵk-I 7o$IHD.K{Q(֭[uyX'N$ڵK`0n?O}}.\gAM-y\jԾE1͎6mٲEPHGǕuihhHZz6nܨH$۷pRڹsUPP Ijll.v9555:.g%i+*4mE$ibKrLN5*pHبӧO+''GUUU:yJKK۫V%$$ܿ.7޽{UZZ:X _Ԅl] /1ЌP7rt9sl6***>n8an\ׯWeeRRRLJ>æe7gw]M#H371x_pwҍNCi>y<A%%%Ζ$l7OmmmJMMՌ3nqȘR c/OjOɱpf1KO?ܘ&ӵl2(==] r\ڼy,YZhӦMjiiQrrRSS߯M8qxn]]JJJ4wϐ`08\^rͤy䕷8UZTפW[uW}qJxٽ{j*vf^pX 6hʔ)ڶm$iΜ9rr:?%I yֳg*---s@lآ\8#'iv `w X2>> $ @ $ @ $ @/gv\H C(07FXIENDB`ipywidgets-8.1.1/ui-tests/tests/widgets.test.ts-snapshots/widgets-cell-9-linux.png000066400000000000000000000035041450026722000303150ustar00rootroot00000000000000PNG  IHDR!nsRGBIDATx}Lq<qJ 2d| =Yp&:|`jAg,DCKI1QL8Y*HԢ1E3;lDqc٭iK_ ovyN@DDDD Ãf"/ "Ü 1 -""""^Q@WT EDDD+*""""Wƅ\ϡ>]Ss/M|קkȷc|B"ys^_OLRᾧ_A3#c_cBޯ ?]ŕ.""""ߠ߷#m̚kWZ̒SKno!ncH@1?J!0ld֏po- pH/x'qcQ\ݒC󉋋uﴮf#55i{"11W||;y"5ߧp?Iw`0|r233jJKK ,[7odL&Ӏ줢 9'--m۶C`` /l6sҥ~L*""2<O +32I; yw|r=Fƾ0|˝Žч, cLjx朶6Xt)dee`跬.\ ** ;w`4"((?" k~)AA<ʯ~e/[k܈DLNs &p( .Kw‰aRTTDLL V+lܸ3g}vL&ׯ#Fnp0zhϺw&++I&4o]]~q:pN>1L?~Nrr;"""~)$̒?cie2.;/kCqq1Ό33gŴp֮]Kmm-[la޽L8l222p\Bii)>/#::JHIIav͛GGG>ﰊ}pl6222:Ȑ% c|DDDDdS@WT EDDD+*""""H xP/6DDD q񊶰EDDD+*""""J9sIENDB`ipywidgets-8.1.1/ui-tests/yarn.lock000066400000000000000000004530011450026722000173120ustar00rootroot00000000000000# This file is generated by running "yarn install" inside your project. # Manual changes might be lost - proceed with caution! __metadata: version: 6 cacheKey: 8 "@codemirror/autocomplete@npm:^6.0.0, @codemirror/autocomplete@npm:^6.3.2, @codemirror/autocomplete@npm:^6.5.1": version: 6.8.0 resolution: "@codemirror/autocomplete@npm:6.8.0" dependencies: "@codemirror/language": ^6.0.0 "@codemirror/state": ^6.0.0 "@codemirror/view": ^6.6.0 "@lezer/common": ^1.0.0 peerDependencies: "@codemirror/language": ^6.0.0 "@codemirror/state": ^6.0.0 "@codemirror/view": ^6.0.0 "@lezer/common": ^1.0.0 checksum: b251a21065a954be7a4a9cf6fd1dce6027bd79ac7006728c0fde364b50c75ee4079bd53acf9890fdfdca78453c863f0c010010c26010cd9acdede3480273ad23 languageName: node linkType: hard "@codemirror/commands@npm:^6.2.3": version: 6.2.4 resolution: "@codemirror/commands@npm:6.2.4" dependencies: "@codemirror/language": ^6.0.0 "@codemirror/state": ^6.2.0 "@codemirror/view": ^6.0.0 "@lezer/common": ^1.0.0 checksum: 468895fa19ff0554181b698c81f850820de5c0289cab92c44392fb127286f09ca72b921d6ea4353b70b616a4fd0c3667d86b6f917202a3ad2e196eb7b581f7b6 languageName: node linkType: hard "@codemirror/lang-cpp@npm:^6.0.2": version: 6.0.2 resolution: "@codemirror/lang-cpp@npm:6.0.2" dependencies: "@codemirror/language": ^6.0.0 "@lezer/cpp": ^1.0.0 checksum: bb9eba482cca80037ce30c7b193cf45eff19ccbb773764fddf2071756468ecc25aa53c777c943635054f89095b0247b9b50c339e107e41e68d34d12a7295f9a9 languageName: node linkType: hard "@codemirror/lang-css@npm:^6.0.0, @codemirror/lang-css@npm:^6.1.1": version: 6.2.0 resolution: "@codemirror/lang-css@npm:6.2.0" dependencies: "@codemirror/autocomplete": ^6.0.0 "@codemirror/language": ^6.0.0 "@codemirror/state": ^6.0.0 "@lezer/common": ^1.0.2 "@lezer/css": ^1.0.0 checksum: d824f169083613b63f04992c24d3fecd45c718cd3deb9da3f332dd3a889a762d05ea812e31ddf7ee4b661722f8c8b49676515cb98609067c53e25ac8b469a5e4 languageName: node linkType: hard "@codemirror/lang-html@npm:^6.0.0, @codemirror/lang-html@npm:^6.4.3": version: 6.4.4 resolution: "@codemirror/lang-html@npm:6.4.4" dependencies: "@codemirror/autocomplete": ^6.0.0 "@codemirror/lang-css": ^6.0.0 "@codemirror/lang-javascript": ^6.0.0 "@codemirror/language": ^6.4.0 "@codemirror/state": ^6.0.0 "@codemirror/view": ^6.2.2 "@lezer/common": ^1.0.0 "@lezer/css": ^1.1.0 "@lezer/html": ^1.3.0 checksum: 99693fee5392c85b0974c4cfd015aa9ba6e015baf8abbddfbb1f5f8c4801e78c3d053d8b19e1dafe3d913b2902e97ed6c95d8a237cd496e8fbcc1548cebe6485 languageName: node linkType: hard "@codemirror/lang-java@npm:^6.0.1": version: 6.0.1 resolution: "@codemirror/lang-java@npm:6.0.1" dependencies: "@codemirror/language": ^6.0.0 "@lezer/java": ^1.0.0 checksum: 4679104683cbffcd224ac04c7e5d144b787494697b26470b07017259035b7bb3fa62609d9a61bfbc566f1756d9f972f9f26d96a3c1362dd48881c1172f9a914d languageName: node linkType: hard "@codemirror/lang-javascript@npm:^6.0.0, @codemirror/lang-javascript@npm:^6.1.7": version: 6.1.9 resolution: "@codemirror/lang-javascript@npm:6.1.9" dependencies: "@codemirror/autocomplete": ^6.0.0 "@codemirror/language": ^6.6.0 "@codemirror/lint": ^6.0.0 "@codemirror/state": ^6.0.0 "@codemirror/view": ^6.0.0 "@lezer/common": ^1.0.0 "@lezer/javascript": ^1.0.0 checksum: 6c79b51c61d37b3f4dde6312df02183045c31f055e5cf8550b497f39798b823b4e380a641a2cfc97f3f26fd4e89194258d8ef741c42acd72b3f2e18257b427a5 languageName: node linkType: hard "@codemirror/lang-json@npm:^6.0.1": version: 6.0.1 resolution: "@codemirror/lang-json@npm:6.0.1" dependencies: "@codemirror/language": ^6.0.0 "@lezer/json": ^1.0.0 checksum: e9e87d50ff7b81bd56a6ab50740b1dd54e9a93f1be585e1d59d0642e2148842ea1528ac7b7221eb4ddc7fe84bbc28065144cc3ab86f6e06c6aeb2d4b4e62acf1 languageName: node linkType: hard "@codemirror/lang-markdown@npm:^6.1.1": version: 6.1.1 resolution: "@codemirror/lang-markdown@npm:6.1.1" dependencies: "@codemirror/lang-html": ^6.0.0 "@codemirror/language": ^6.3.0 "@codemirror/state": ^6.0.0 "@codemirror/view": ^6.0.0 "@lezer/common": ^1.0.0 "@lezer/markdown": ^1.0.0 checksum: db891dad10a8ea8db17d0a9222774389794cb0957b784e3f154bf27ab4a9be89a28ad4c2f6abf7d829115c3ce46694a2816b61723a5d5776c1d75d566ce016c8 languageName: node linkType: hard "@codemirror/lang-php@npm:^6.0.1": version: 6.0.1 resolution: "@codemirror/lang-php@npm:6.0.1" dependencies: "@codemirror/lang-html": ^6.0.0 "@codemirror/language": ^6.0.0 "@codemirror/state": ^6.0.0 "@lezer/common": ^1.0.0 "@lezer/php": ^1.0.0 checksum: c003a29a426486453fdfddbf7302982fa2aa7f059bf6f1ce4cbf08341b0162eee5e2f50e0d71c418dcd358491631780156d846fe352754d042576172c5d86721 languageName: node linkType: hard "@codemirror/lang-python@npm:^6.1.2": version: 6.1.3 resolution: "@codemirror/lang-python@npm:6.1.3" dependencies: "@codemirror/autocomplete": ^6.3.2 "@codemirror/language": ^6.8.0 "@lezer/python": ^1.1.4 checksum: 65a0276a4503e4e3b70dd28d1c93ef472632b6d2c4bf3ae92d305d14ee8cf60b0bbbf62d5ceb51294de9598d9e2d42eafcde26f317ee7b90d0a11dfa863c1d1a languageName: node linkType: hard "@codemirror/lang-rust@npm:^6.0.1": version: 6.0.1 resolution: "@codemirror/lang-rust@npm:6.0.1" dependencies: "@codemirror/language": ^6.0.0 "@lezer/rust": ^1.0.0 checksum: 8a439944cb22159b0b3465ca4fa4294c69843219d5d30e278ae6df8e48f30a7a9256129723c025ec9b5e694d31a3560fb004300b125ffcd81c22d13825845170 languageName: node linkType: hard "@codemirror/lang-sql@npm:^6.4.1": version: 6.5.0 resolution: "@codemirror/lang-sql@npm:6.5.0" dependencies: "@codemirror/autocomplete": ^6.0.0 "@codemirror/language": ^6.0.0 "@codemirror/state": ^6.0.0 "@lezer/highlight": ^1.0.0 "@lezer/lr": ^1.0.0 checksum: 5bc73293d85f3892633703f277787336c00135011b14ca34a3590975a02c5ec1d6826d201d827e3dfc1d3427e28d23f36b1ef4fd69fc5d79c98290030c11dad5 languageName: node linkType: hard "@codemirror/lang-wast@npm:^6.0.1": version: 6.0.1 resolution: "@codemirror/lang-wast@npm:6.0.1" dependencies: "@codemirror/language": ^6.0.0 "@lezer/highlight": ^1.0.0 "@lezer/lr": ^1.0.0 checksum: 600d98d3ea6a4e99292244ed707e39a2abd9f3abf62cfeff5c819a0cc0c7e86b8c5b91e91c1b7ea21233d9ea09c41abe61d8a40b2547bb5db74239c6df857934 languageName: node linkType: hard "@codemirror/lang-xml@npm:^6.0.2": version: 6.0.2 resolution: "@codemirror/lang-xml@npm:6.0.2" dependencies: "@codemirror/autocomplete": ^6.0.0 "@codemirror/language": ^6.4.0 "@codemirror/state": ^6.0.0 "@lezer/common": ^1.0.0 "@lezer/xml": ^1.0.0 checksum: e156ecafaa87e9b6ef4ab6812ccd00d8f3c6cb81f232837636b36336d80513b61936dfee6f4f6800574f236208b61e95a2abcb997cdcd7366585a6b796e0e13b languageName: node linkType: hard "@codemirror/language@npm:^6.0.0, @codemirror/language@npm:^6.3.0, @codemirror/language@npm:^6.4.0, @codemirror/language@npm:^6.6.0, @codemirror/language@npm:^6.8.0": version: 6.8.0 resolution: "@codemirror/language@npm:6.8.0" dependencies: "@codemirror/state": ^6.0.0 "@codemirror/view": ^6.0.0 "@lezer/common": ^1.0.0 "@lezer/highlight": ^1.0.0 "@lezer/lr": ^1.0.0 style-mod: ^4.0.0 checksum: 64408d996641931fa4c6b892e17ee1fdaee0f63d3d84c019a6ea7b1e6d1c774f92357b95c2ebaed60545062b795b72d0a058c03578b2bf4023c87726e97b5d2f languageName: node linkType: hard "@codemirror/legacy-modes@npm:^6.3.2": version: 6.3.2 resolution: "@codemirror/legacy-modes@npm:6.3.2" dependencies: "@codemirror/language": ^6.0.0 checksum: fa5f5477fb9e19267251e2ecd3de8c1a4c2512813555bb60111dce3951f2c3f6080a2985a573b7542534ba1d2c34115f7e39ee23fdf8f6f81db6f8ce447c1efc languageName: node linkType: hard "@codemirror/lint@npm:^6.0.0": version: 6.2.2 resolution: "@codemirror/lint@npm:6.2.2" dependencies: "@codemirror/state": ^6.0.0 "@codemirror/view": ^6.0.0 crelt: ^1.0.5 checksum: f37dea6f84b5ee74e4e77c0ad244a3e0c10beb26542c5e10b2d5655f1fab3a9e580da2d772f2a6e3b09eb944ef8a52ff4e1b61cb8a02ee78e97f2ae8ae13842a languageName: node linkType: hard "@codemirror/search@npm:^6.3.0": version: 6.5.0 resolution: "@codemirror/search@npm:6.5.0" dependencies: "@codemirror/state": ^6.0.0 "@codemirror/view": ^6.0.0 crelt: ^1.0.5 checksum: 2e9f2344b7dbd4bad79058c105d8cbd02b2bf94c27495310f0e3b6e999010aa080dceea47ef46e35439cc9e131b47c46f7d2eda700ef491b5f2f34bbc8e145ab languageName: node linkType: hard "@codemirror/state@npm:^6.0.0, @codemirror/state@npm:^6.1.4, @codemirror/state@npm:^6.2.0": version: 6.2.1 resolution: "@codemirror/state@npm:6.2.1" checksum: d12a321d0471b264b9d3259042bff913a8b939e8d28d408ff452004538a71ca9d5329df3f8a1d8a9183f5b42a7ef5b200737bcab1065714f5ae8e0a5ba9d59d3 languageName: node linkType: hard "@codemirror/view@npm:^6.0.0, @codemirror/view@npm:^6.2.2, @codemirror/view@npm:^6.6.0, @codemirror/view@npm:^6.9.6": version: 6.13.2 resolution: "@codemirror/view@npm:6.13.2" dependencies: "@codemirror/state": ^6.1.4 style-mod: ^4.0.0 w3c-keyname: ^2.2.4 checksum: db0d638fbbe2f9a832674f06512ca55cdb7576a265c01ab8a7b6715d2a50ddf53200f597637b146adebe1df51255fe5bd2d2c74cf1fa539b0434764c0550d3a5 languageName: node linkType: hard "@fortawesome/fontawesome-free@npm:^5.12.0": version: 5.15.4 resolution: "@fortawesome/fontawesome-free@npm:5.15.4" checksum: 32281c3df4075290d9a96dfc22f72fadb3da7055d4117e48d34046b8c98032a55fa260ae351b0af5d6f6fb57a2f5d79a4abe52af456da35195f7cb7dda27b4a2 languageName: node linkType: hard "@isaacs/cliui@npm:^8.0.2": version: 8.0.2 resolution: "@isaacs/cliui@npm:8.0.2" dependencies: string-width: ^5.1.2 string-width-cjs: "npm:string-width@^4.2.0" strip-ansi: ^7.0.1 strip-ansi-cjs: "npm:strip-ansi@^6.0.1" wrap-ansi: ^8.1.0 wrap-ansi-cjs: "npm:wrap-ansi@^7.0.0" checksum: 4a473b9b32a7d4d3cfb7a614226e555091ff0c5a29a1734c28c72a182c2f6699b26fc6b5c2131dfd841e86b185aea714c72201d7c98c2fba5f17709333a67aeb languageName: node linkType: hard "@jupyter-widgets/ui-tests@workspace:.": version: 0.0.0-use.local resolution: "@jupyter-widgets/ui-tests@workspace:." dependencies: "@jupyterlab/galata": ^5.0.1 "@playwright/test": ^1.32.0 yarn-deduplicate: ^6.0.1 languageName: unknown linkType: soft "@jupyter/ydoc@npm:^1.0.2": version: 1.0.2 resolution: "@jupyter/ydoc@npm:1.0.2" dependencies: "@jupyterlab/nbformat": ^3.0.0 || ^4.0.0-alpha.21 || ^4.0.0 "@lumino/coreutils": ^1.11.0 || ^2.0.0 "@lumino/disposable": ^1.10.0 || ^2.0.0 "@lumino/signaling": ^1.10.0 || ^2.0.0 y-protocols: ^1.0.5 yjs: ^13.5.40 checksum: 739f9630940466b3cfcd7b742dd06479f81772ca13f863d057af0bbb5e318829506969066ab72977e7c721644982b5c8f88cf44e1ae81955ed1c27e87632d1f2 languageName: node linkType: hard "@jupyterlab/application@npm:^4.0.2": version: 4.0.2 resolution: "@jupyterlab/application@npm:4.0.2" dependencies: "@fortawesome/fontawesome-free": ^5.12.0 "@jupyterlab/apputils": ^4.1.2 "@jupyterlab/coreutils": ^6.0.2 "@jupyterlab/docregistry": ^4.0.2 "@jupyterlab/rendermime": ^4.0.2 "@jupyterlab/rendermime-interfaces": ^3.8.2 "@jupyterlab/services": ^7.0.2 "@jupyterlab/statedb": ^4.0.2 "@jupyterlab/translation": ^4.0.2 "@jupyterlab/ui-components": ^4.0.2 "@lumino/algorithm": ^2.0.0 "@lumino/application": ^2.1.1 "@lumino/commands": ^2.1.1 "@lumino/coreutils": ^2.1.1 "@lumino/disposable": ^2.1.1 "@lumino/messaging": ^2.0.0 "@lumino/polling": ^2.1.1 "@lumino/properties": ^2.0.0 "@lumino/signaling": ^2.1.1 "@lumino/widgets": ^2.1.1 checksum: 5709b59c794e481d6e9b6c5575042c569f38058b6fc2a2c1d2831bdd0d1b0ff4df60c17132753ed8d9be1e2a28e4a0a18310d2b80e8ff5812fdaccbb1ee18bce languageName: node linkType: hard "@jupyterlab/apputils@npm:^4.1.2": version: 4.1.2 resolution: "@jupyterlab/apputils@npm:4.1.2" dependencies: "@jupyterlab/coreutils": ^6.0.2 "@jupyterlab/observables": ^5.0.2 "@jupyterlab/rendermime-interfaces": ^3.8.2 "@jupyterlab/services": ^7.0.2 "@jupyterlab/settingregistry": ^4.0.2 "@jupyterlab/statedb": ^4.0.2 "@jupyterlab/statusbar": ^4.0.2 "@jupyterlab/translation": ^4.0.2 "@jupyterlab/ui-components": ^4.0.2 "@lumino/algorithm": ^2.0.0 "@lumino/commands": ^2.1.1 "@lumino/coreutils": ^2.1.1 "@lumino/disposable": ^2.1.1 "@lumino/domutils": ^2.0.0 "@lumino/messaging": ^2.0.0 "@lumino/signaling": ^2.1.1 "@lumino/virtualdom": ^2.0.0 "@lumino/widgets": ^2.1.1 "@types/react": ^18.0.26 react: ^18.2.0 sanitize-html: ~2.7.3 checksum: 89a445478b54d1132e753022a81393dd3e53f7f36de2d9e905ece3bae911382ddff6afc16c4b649646b1a125c774ccc83fa4d92e29a48a423d4410a4a5554bb4 languageName: node linkType: hard "@jupyterlab/attachments@npm:^4.0.2": version: 4.0.2 resolution: "@jupyterlab/attachments@npm:4.0.2" dependencies: "@jupyterlab/nbformat": ^4.0.2 "@jupyterlab/observables": ^5.0.2 "@jupyterlab/rendermime": ^4.0.2 "@jupyterlab/rendermime-interfaces": ^3.8.2 "@lumino/disposable": ^2.1.1 "@lumino/signaling": ^2.1.1 checksum: 178d6abf3ff0767d87f78a79470760cf0025c3171e65dfd9a07916f3f6322f1080a21985ccdfdfeeec6fb73fb9aac9179cc413c43e4e33a45bcbcefa6cb97714 languageName: node linkType: hard "@jupyterlab/cells@npm:^4.0.2": version: 4.0.2 resolution: "@jupyterlab/cells@npm:4.0.2" dependencies: "@codemirror/state": ^6.2.0 "@codemirror/view": ^6.9.6 "@jupyter/ydoc": ^1.0.2 "@jupyterlab/apputils": ^4.1.2 "@jupyterlab/attachments": ^4.0.2 "@jupyterlab/codeeditor": ^4.0.2 "@jupyterlab/codemirror": ^4.0.2 "@jupyterlab/coreutils": ^6.0.2 "@jupyterlab/documentsearch": ^4.0.2 "@jupyterlab/filebrowser": ^4.0.2 "@jupyterlab/nbformat": ^4.0.2 "@jupyterlab/observables": ^5.0.2 "@jupyterlab/outputarea": ^4.0.2 "@jupyterlab/rendermime": ^4.0.2 "@jupyterlab/services": ^7.0.2 "@jupyterlab/toc": ^6.0.2 "@jupyterlab/translation": ^4.0.2 "@jupyterlab/ui-components": ^4.0.2 "@lumino/algorithm": ^2.0.0 "@lumino/coreutils": ^2.1.1 "@lumino/domutils": ^2.0.0 "@lumino/dragdrop": ^2.1.1 "@lumino/messaging": ^2.0.0 "@lumino/polling": ^2.1.1 "@lumino/signaling": ^2.1.1 "@lumino/virtualdom": ^2.0.0 "@lumino/widgets": ^2.1.1 react: ^18.2.0 checksum: 92aa9ced743b41fbe5c0d3700762e3f825c9b01fb9b5684c909de330a62561a7b05af27390ca5993f905ec7141fa01072446b51232a8616181dd4eaed178b77f languageName: node linkType: hard "@jupyterlab/codeeditor@npm:^4.0.2": version: 4.0.2 resolution: "@jupyterlab/codeeditor@npm:4.0.2" dependencies: "@codemirror/state": ^6.2.0 "@jupyter/ydoc": ^1.0.2 "@jupyterlab/coreutils": ^6.0.2 "@jupyterlab/nbformat": ^4.0.2 "@jupyterlab/observables": ^5.0.2 "@jupyterlab/statusbar": ^4.0.2 "@jupyterlab/translation": ^4.0.2 "@jupyterlab/ui-components": ^4.0.2 "@lumino/coreutils": ^2.1.1 "@lumino/disposable": ^2.1.1 "@lumino/dragdrop": ^2.1.1 "@lumino/messaging": ^2.0.0 "@lumino/signaling": ^2.1.1 "@lumino/widgets": ^2.1.1 react: ^18.2.0 checksum: 61b638011acd21195fcd53b3b1f1df54abef0e0db85937f41f3a323cc6df75bcd63261739518bfd82b6bf45f638a090687cb43c2b66880546cff3e962d2e5994 languageName: node linkType: hard "@jupyterlab/codemirror@npm:^4.0.2": version: 4.0.2 resolution: "@jupyterlab/codemirror@npm:4.0.2" dependencies: "@codemirror/autocomplete": ^6.5.1 "@codemirror/commands": ^6.2.3 "@codemirror/lang-cpp": ^6.0.2 "@codemirror/lang-css": ^6.1.1 "@codemirror/lang-html": ^6.4.3 "@codemirror/lang-java": ^6.0.1 "@codemirror/lang-javascript": ^6.1.7 "@codemirror/lang-json": ^6.0.1 "@codemirror/lang-markdown": ^6.1.1 "@codemirror/lang-php": ^6.0.1 "@codemirror/lang-python": ^6.1.2 "@codemirror/lang-rust": ^6.0.1 "@codemirror/lang-sql": ^6.4.1 "@codemirror/lang-wast": ^6.0.1 "@codemirror/lang-xml": ^6.0.2 "@codemirror/language": ^6.6.0 "@codemirror/legacy-modes": ^6.3.2 "@codemirror/search": ^6.3.0 "@codemirror/state": ^6.2.0 "@codemirror/view": ^6.9.6 "@jupyter/ydoc": ^1.0.2 "@jupyterlab/codeeditor": ^4.0.2 "@jupyterlab/coreutils": ^6.0.2 "@jupyterlab/documentsearch": ^4.0.2 "@jupyterlab/nbformat": ^4.0.2 "@jupyterlab/translation": ^4.0.2 "@lezer/common": ^1.0.2 "@lezer/generator": ^1.2.2 "@lezer/highlight": ^1.1.4 "@lezer/markdown": ^1.0.2 "@lumino/coreutils": ^2.1.1 "@lumino/disposable": ^2.1.1 "@lumino/signaling": ^2.1.1 yjs: ^13.5.40 checksum: 1ddf08979874fc522eb88de6a743129640c5721410a8c6feb58d2e37b35ebcdeee5c217890e7f9561a595ca8b1c9b4a222b07da5e2e95c1e2dcd8c467378c50d languageName: node linkType: hard "@jupyterlab/console@npm:^4.0.2": version: 4.0.2 resolution: "@jupyterlab/console@npm:4.0.2" dependencies: "@codemirror/state": ^6.2.0 "@codemirror/view": ^6.9.6 "@jupyter/ydoc": ^1.0.2 "@jupyterlab/apputils": ^4.1.2 "@jupyterlab/cells": ^4.0.2 "@jupyterlab/codeeditor": ^4.0.2 "@jupyterlab/coreutils": ^6.0.2 "@jupyterlab/nbformat": ^4.0.2 "@jupyterlab/observables": ^5.0.2 "@jupyterlab/rendermime": ^4.0.2 "@jupyterlab/services": ^7.0.2 "@jupyterlab/translation": ^4.0.2 "@jupyterlab/ui-components": ^4.0.2 "@lumino/coreutils": ^2.1.1 "@lumino/disposable": ^2.1.1 "@lumino/dragdrop": ^2.1.1 "@lumino/messaging": ^2.0.0 "@lumino/signaling": ^2.1.1 "@lumino/widgets": ^2.1.1 checksum: 4a7a4a8a06663902840c4216b257e380105366c7808f5f4ba891d45fb60b4f7605c455d2d0290dcc576dcc4c833a00d140c71604ecbeab3f2054c460fd6bbc79 languageName: node linkType: hard "@jupyterlab/coreutils@npm:^6.0.2": version: 6.0.2 resolution: "@jupyterlab/coreutils@npm:6.0.2" dependencies: "@lumino/coreutils": ^2.1.1 "@lumino/disposable": ^2.1.1 "@lumino/signaling": ^2.1.1 minimist: ~1.2.0 path-browserify: ^1.0.0 url-parse: ~1.5.4 checksum: c2e9b9bf7227f68bb6b91044d2ac3808a872ac967e22f6aee10241d5dbc78a19deee65f91dd87c080f63170a760c96c99cb31e0e0b6f32c6341e432d781355ce languageName: node linkType: hard "@jupyterlab/debugger@npm:^4.0.2": version: 4.0.2 resolution: "@jupyterlab/debugger@npm:4.0.2" dependencies: "@codemirror/state": ^6.2.0 "@codemirror/view": ^6.9.6 "@jupyter/ydoc": ^1.0.2 "@jupyterlab/application": ^4.0.2 "@jupyterlab/apputils": ^4.1.2 "@jupyterlab/cells": ^4.0.2 "@jupyterlab/codeeditor": ^4.0.2 "@jupyterlab/codemirror": ^4.0.2 "@jupyterlab/console": ^4.0.2 "@jupyterlab/coreutils": ^6.0.2 "@jupyterlab/docregistry": ^4.0.2 "@jupyterlab/fileeditor": ^4.0.2 "@jupyterlab/notebook": ^4.0.2 "@jupyterlab/observables": ^5.0.2 "@jupyterlab/rendermime": ^4.0.2 "@jupyterlab/services": ^7.0.2 "@jupyterlab/translation": ^4.0.2 "@jupyterlab/ui-components": ^4.0.2 "@lumino/algorithm": ^2.0.0 "@lumino/commands": ^2.1.1 "@lumino/coreutils": ^2.1.1 "@lumino/datagrid": ^2.1.1 "@lumino/disposable": ^2.1.1 "@lumino/messaging": ^2.0.0 "@lumino/polling": ^2.1.1 "@lumino/signaling": ^2.1.1 "@lumino/widgets": ^2.1.1 "@vscode/debugprotocol": ^1.51.0 react: ^18.2.0 checksum: 5217fdca41a58397d97c6ca634f0e51f1f102e713c685748aaf04ab01b3e386d26d03881e27c5df66b422d7288a3b276008c59e056c1c068bf2629395887c251 languageName: node linkType: hard "@jupyterlab/docmanager@npm:^4.0.2": version: 4.0.2 resolution: "@jupyterlab/docmanager@npm:4.0.2" dependencies: "@jupyterlab/apputils": ^4.1.2 "@jupyterlab/coreutils": ^6.0.2 "@jupyterlab/docregistry": ^4.0.2 "@jupyterlab/services": ^7.0.2 "@jupyterlab/statusbar": ^4.0.2 "@jupyterlab/translation": ^4.0.2 "@jupyterlab/ui-components": ^4.0.2 "@lumino/algorithm": ^2.0.0 "@lumino/coreutils": ^2.1.1 "@lumino/disposable": ^2.1.1 "@lumino/messaging": ^2.0.0 "@lumino/properties": ^2.0.0 "@lumino/signaling": ^2.1.1 "@lumino/widgets": ^2.1.1 react: ^18.2.0 checksum: dca1f56209608a82eebb0a365657f955bc8c546d66e00ec7747e753e3c76c8c0a5ed24b51736d157d2ed9d8264dc69545221e8fc2aa6af3eb6ec7eb4fd537a69 languageName: node linkType: hard "@jupyterlab/docregistry@npm:^4.0.2": version: 4.0.2 resolution: "@jupyterlab/docregistry@npm:4.0.2" dependencies: "@jupyter/ydoc": ^1.0.2 "@jupyterlab/apputils": ^4.1.2 "@jupyterlab/codeeditor": ^4.0.2 "@jupyterlab/coreutils": ^6.0.2 "@jupyterlab/observables": ^5.0.2 "@jupyterlab/rendermime": ^4.0.2 "@jupyterlab/rendermime-interfaces": ^3.8.2 "@jupyterlab/services": ^7.0.2 "@jupyterlab/translation": ^4.0.2 "@jupyterlab/ui-components": ^4.0.2 "@lumino/algorithm": ^2.0.0 "@lumino/coreutils": ^2.1.1 "@lumino/disposable": ^2.1.1 "@lumino/messaging": ^2.0.0 "@lumino/properties": ^2.0.0 "@lumino/signaling": ^2.1.1 "@lumino/widgets": ^2.1.1 checksum: b88c6a6ab7825aff95541c8a9f4381ccee4533e8c5bda588538c8a110dd8c6cb413e73345bc8fbf74aebe9fed4f9d298de6efa08378212869510e81ccb9f10ca languageName: node linkType: hard "@jupyterlab/documentsearch@npm:^4.0.2": version: 4.0.2 resolution: "@jupyterlab/documentsearch@npm:4.0.2" dependencies: "@jupyterlab/apputils": ^4.1.2 "@jupyterlab/translation": ^4.0.2 "@jupyterlab/ui-components": ^4.0.2 "@lumino/coreutils": ^2.1.1 "@lumino/disposable": ^2.1.1 "@lumino/messaging": ^2.0.0 "@lumino/polling": ^2.1.1 "@lumino/signaling": ^2.1.1 "@lumino/widgets": ^2.1.1 react: ^18.2.0 checksum: d621722648f8d0e9c17c4df093bf02de0b3c5c1e8cb4b4b46482114700c4ca47dbb35831d2f046b0a28c950c6cd7442cdd791357af87d6e4df5da3b347d463e0 languageName: node linkType: hard "@jupyterlab/filebrowser@npm:^4.0.2": version: 4.0.2 resolution: "@jupyterlab/filebrowser@npm:4.0.2" dependencies: "@jupyterlab/apputils": ^4.1.2 "@jupyterlab/coreutils": ^6.0.2 "@jupyterlab/docmanager": ^4.0.2 "@jupyterlab/docregistry": ^4.0.2 "@jupyterlab/services": ^7.0.2 "@jupyterlab/statedb": ^4.0.2 "@jupyterlab/statusbar": ^4.0.2 "@jupyterlab/translation": ^4.0.2 "@jupyterlab/ui-components": ^4.0.2 "@lumino/algorithm": ^2.0.0 "@lumino/coreutils": ^2.1.1 "@lumino/disposable": ^2.1.1 "@lumino/domutils": ^2.0.0 "@lumino/dragdrop": ^2.1.1 "@lumino/messaging": ^2.0.0 "@lumino/polling": ^2.1.1 "@lumino/signaling": ^2.1.1 "@lumino/virtualdom": ^2.0.0 "@lumino/widgets": ^2.1.1 react: ^18.2.0 checksum: ae5426f6811488cb90538f8ec74fa87d4ead847a2727ba64d35b4b2d81e6058bc6340853affedb2e4e7362627453b8dd1e108142a425bc039745714058ce5d73 languageName: node linkType: hard "@jupyterlab/fileeditor@npm:^4.0.2": version: 4.0.2 resolution: "@jupyterlab/fileeditor@npm:4.0.2" dependencies: "@jupyterlab/apputils": ^4.1.2 "@jupyterlab/codeeditor": ^4.0.2 "@jupyterlab/codemirror": ^4.0.2 "@jupyterlab/coreutils": ^6.0.2 "@jupyterlab/docregistry": ^4.0.2 "@jupyterlab/documentsearch": ^4.0.2 "@jupyterlab/lsp": ^4.0.2 "@jupyterlab/statusbar": ^4.0.2 "@jupyterlab/toc": ^6.0.2 "@jupyterlab/translation": ^4.0.2 "@jupyterlab/ui-components": ^4.0.2 "@lumino/commands": ^2.1.1 "@lumino/coreutils": ^2.1.1 "@lumino/messaging": ^2.0.0 "@lumino/widgets": ^2.1.1 react: ^18.2.0 regexp-match-indices: ^1.0.2 checksum: a83615c1094a143eb58701ba1f90f180d0e373d36db6d4aabebb73b26da7efaa47fd1946541cc529672b9042c66df1b2f23894267fe4afb5712a97cad42e471e languageName: node linkType: hard "@jupyterlab/galata@npm:^5.0.1": version: 5.0.2 resolution: "@jupyterlab/galata@npm:5.0.2" dependencies: "@jupyterlab/application": ^4.0.2 "@jupyterlab/apputils": ^4.1.2 "@jupyterlab/coreutils": ^6.0.2 "@jupyterlab/debugger": ^4.0.2 "@jupyterlab/docmanager": ^4.0.2 "@jupyterlab/nbformat": ^4.0.2 "@jupyterlab/notebook": ^4.0.2 "@jupyterlab/services": ^7.0.2 "@jupyterlab/settingregistry": ^4.0.2 "@lumino/coreutils": ^2.1.1 "@playwright/test": ^1.32.2 "@stdlib/stats": ~0.0.13 fs-extra: ^10.1.0 json5: ^2.2.3 path: ~0.12.7 systeminformation: ^5.8.6 vega: ^5.20.0 vega-lite: ^5.6.1 vega-statistics: ^1.7.9 checksum: 175538962b02780fb3ce9ac0dc8ccb3f977f936ad18af1129272ddab0594eac0e8b1d911b3b902f18b0ab832dae689dea0eda51a202403507fef72df4d6fdaa8 languageName: node linkType: hard "@jupyterlab/lsp@npm:^4.0.2": version: 4.0.2 resolution: "@jupyterlab/lsp@npm:4.0.2" dependencies: "@jupyterlab/apputils": ^4.1.2 "@jupyterlab/codeeditor": ^4.0.2 "@jupyterlab/coreutils": ^6.0.2 "@jupyterlab/docregistry": ^4.0.2 "@jupyterlab/services": ^7.0.2 "@jupyterlab/translation": ^4.0.2 "@lumino/coreutils": ^2.1.1 "@lumino/disposable": ^2.1.1 "@lumino/signaling": ^2.1.1 lodash.mergewith: ^4.6.1 vscode-jsonrpc: ^6.0.0 vscode-languageserver-protocol: ^3.17.0 vscode-ws-jsonrpc: ~1.0.2 checksum: 476517f4cd9ce7758638f96c1037f26d758ec8e102d87b9472cbaa6208d94bcfc1da0ec853202761f6542404a034932657b14f82e2355d312b3f0c5c140cfbfd languageName: node linkType: hard "@jupyterlab/nbformat@npm:^3.0.0 || ^4.0.0-alpha.21 || ^4.0.0, @jupyterlab/nbformat@npm:^4.0.2": version: 4.0.2 resolution: "@jupyterlab/nbformat@npm:4.0.2" dependencies: "@lumino/coreutils": ^2.1.1 checksum: cccd1c7fd8717ccece1f7642f3f7218103c3baa479fce85666770719b3359116e5279cdd97e2b584122a793b437fc9ece7055d1da27ad35a090f90398a76d59f languageName: node linkType: hard "@jupyterlab/notebook@npm:^4.0.2": version: 4.0.2 resolution: "@jupyterlab/notebook@npm:4.0.2" dependencies: "@jupyter/ydoc": ^1.0.2 "@jupyterlab/apputils": ^4.1.2 "@jupyterlab/cells": ^4.0.2 "@jupyterlab/codeeditor": ^4.0.2 "@jupyterlab/codemirror": ^4.0.2 "@jupyterlab/coreutils": ^6.0.2 "@jupyterlab/docregistry": ^4.0.2 "@jupyterlab/documentsearch": ^4.0.2 "@jupyterlab/lsp": ^4.0.2 "@jupyterlab/nbformat": ^4.0.2 "@jupyterlab/observables": ^5.0.2 "@jupyterlab/rendermime": ^4.0.2 "@jupyterlab/services": ^7.0.2 "@jupyterlab/settingregistry": ^4.0.2 "@jupyterlab/statusbar": ^4.0.2 "@jupyterlab/toc": ^6.0.2 "@jupyterlab/translation": ^4.0.2 "@jupyterlab/ui-components": ^4.0.2 "@lumino/algorithm": ^2.0.0 "@lumino/coreutils": ^2.1.1 "@lumino/domutils": ^2.0.0 "@lumino/dragdrop": ^2.1.1 "@lumino/messaging": ^2.0.0 "@lumino/properties": ^2.0.0 "@lumino/signaling": ^2.1.1 "@lumino/virtualdom": ^2.0.0 "@lumino/widgets": ^2.1.1 react: ^18.2.0 checksum: 053cde5377aceac7ff6fe30e734354df1839cbf84bfd19f7d3992a1aaddcd66f5c8470bb2537c94b28dfdb194dfdacfaa38207fd2d4989b0575b27c20396bbfe languageName: node linkType: hard "@jupyterlab/observables@npm:^5.0.2": version: 5.0.2 resolution: "@jupyterlab/observables@npm:5.0.2" dependencies: "@lumino/algorithm": ^2.0.0 "@lumino/coreutils": ^2.1.1 "@lumino/disposable": ^2.1.1 "@lumino/messaging": ^2.0.0 "@lumino/signaling": ^2.1.1 checksum: 6d206873f3e2bfd95267fde6fae565eef5c1f7df93dc0a27091ea3eceea5cbded6c8b90eb5d4311e3b6158385455ed358602cb4b3daee717f6cc195b259cfb24 languageName: node linkType: hard "@jupyterlab/outputarea@npm:^4.0.2": version: 4.0.2 resolution: "@jupyterlab/outputarea@npm:4.0.2" dependencies: "@jupyterlab/apputils": ^4.1.2 "@jupyterlab/nbformat": ^4.0.2 "@jupyterlab/observables": ^5.0.2 "@jupyterlab/rendermime": ^4.0.2 "@jupyterlab/rendermime-interfaces": ^3.8.2 "@jupyterlab/services": ^7.0.2 "@jupyterlab/translation": ^4.0.2 "@lumino/algorithm": ^2.0.0 "@lumino/coreutils": ^2.1.1 "@lumino/disposable": ^2.1.1 "@lumino/messaging": ^2.0.0 "@lumino/properties": ^2.0.0 "@lumino/signaling": ^2.1.1 "@lumino/widgets": ^2.1.1 checksum: 8387b93e7b6bf1a63495eef8a7746870e4210818ff26af5c8ecdf4b9e78433ec47b58ddaa5ab11fbf5cf143802b23a186c90589974cd408cae95330fa3960f32 languageName: node linkType: hard "@jupyterlab/rendermime-interfaces@npm:^3.8.2": version: 3.8.2 resolution: "@jupyterlab/rendermime-interfaces@npm:3.8.2" dependencies: "@lumino/coreutils": ^1.11.0 || ^2.1.1 "@lumino/widgets": ^1.37.2 || ^2.1.1 checksum: e1164a4ad7654e5e8af0c1c2f1c8938f01a4bd07e04ff788e8b3adfaa9cb7ef07118c44513648c69263929e1658f02dcbab7aac776c6071228b0b80c8ca4e65a languageName: node linkType: hard "@jupyterlab/rendermime@npm:^4.0.2": version: 4.0.2 resolution: "@jupyterlab/rendermime@npm:4.0.2" dependencies: "@jupyterlab/apputils": ^4.1.2 "@jupyterlab/coreutils": ^6.0.2 "@jupyterlab/nbformat": ^4.0.2 "@jupyterlab/observables": ^5.0.2 "@jupyterlab/rendermime-interfaces": ^3.8.2 "@jupyterlab/services": ^7.0.2 "@jupyterlab/translation": ^4.0.2 "@lumino/coreutils": ^2.1.1 "@lumino/messaging": ^2.0.0 "@lumino/signaling": ^2.1.1 "@lumino/widgets": ^2.1.1 lodash.escape: ^4.0.1 checksum: 6118adf39cfe3c5918c9b677ff5d8dbe97ce469427f9969e1d16fba944b53d6e6c9d2c1e2deaaf928cdb94222a8941c7bb7cfc81693683fd07c08e92bc3d6cea languageName: node linkType: hard "@jupyterlab/services@npm:^7.0.2": version: 7.0.2 resolution: "@jupyterlab/services@npm:7.0.2" dependencies: "@jupyter/ydoc": ^1.0.2 "@jupyterlab/coreutils": ^6.0.2 "@jupyterlab/nbformat": ^4.0.2 "@jupyterlab/settingregistry": ^4.0.2 "@jupyterlab/statedb": ^4.0.2 "@lumino/coreutils": ^2.1.1 "@lumino/disposable": ^2.1.1 "@lumino/polling": ^2.1.1 "@lumino/properties": ^2.0.0 "@lumino/signaling": ^2.1.1 ws: ^8.11.0 checksum: 4a4b5328f2f50ec1d501f67d63fbfb329f37a6c090227e0aecdbbb7316d9df0e5891af47cb948958e9307a0afc52f0ddf05c2be7acb9e2f44e54cf568dc3b90c languageName: node linkType: hard "@jupyterlab/settingregistry@npm:^4.0.2": version: 4.0.2 resolution: "@jupyterlab/settingregistry@npm:4.0.2" dependencies: "@jupyterlab/nbformat": ^4.0.2 "@jupyterlab/statedb": ^4.0.2 "@lumino/commands": ^2.1.1 "@lumino/coreutils": ^2.1.1 "@lumino/disposable": ^2.1.1 "@lumino/signaling": ^2.1.1 "@rjsf/utils": ^5.1.0 ajv: ^8.12.0 json5: ^2.2.3 peerDependencies: react: ">=16" checksum: c2e019f70a4f19cf99bc2029c136197f2a750f319e16f8605a6f8d690b6930ac32e24678b090a09f9e949e540cf6b4214d3d3597ec119bd6896db3b456ac6299 languageName: node linkType: hard "@jupyterlab/statedb@npm:^4.0.2": version: 4.0.2 resolution: "@jupyterlab/statedb@npm:4.0.2" dependencies: "@lumino/commands": ^2.1.1 "@lumino/coreutils": ^2.1.1 "@lumino/disposable": ^2.1.1 "@lumino/properties": ^2.0.0 "@lumino/signaling": ^2.1.1 checksum: 88fc80914f4c128ae6b0630ffe97111cc95a8edc4f34e749615aa8396262d74efcc82e02d0c7c2dcd0268b7cc35a0bfbd7455a4b6cb9203bcad488e1cbad5c25 languageName: node linkType: hard "@jupyterlab/statusbar@npm:^4.0.2": version: 4.0.2 resolution: "@jupyterlab/statusbar@npm:4.0.2" dependencies: "@jupyterlab/ui-components": ^4.0.2 "@lumino/algorithm": ^2.0.0 "@lumino/coreutils": ^2.1.1 "@lumino/disposable": ^2.1.1 "@lumino/messaging": ^2.0.0 "@lumino/signaling": ^2.1.1 "@lumino/widgets": ^2.1.1 react: ^18.2.0 checksum: d792eb8fca00ac5ec7d5abcb3694db5c80706ec468aa4a9bef543f02a788d80ca2a9b81def0a846da14aed22dbd4ceffe0c95c0047c5025c2e5d69fc55f739b9 languageName: node linkType: hard "@jupyterlab/toc@npm:^6.0.2": version: 6.0.2 resolution: "@jupyterlab/toc@npm:6.0.2" dependencies: "@jupyterlab/apputils": ^4.1.2 "@jupyterlab/coreutils": ^6.0.2 "@jupyterlab/docregistry": ^4.0.2 "@jupyterlab/observables": ^5.0.2 "@jupyterlab/rendermime": ^4.0.2 "@jupyterlab/translation": ^4.0.2 "@jupyterlab/ui-components": ^4.0.2 "@lumino/coreutils": ^2.1.1 "@lumino/disposable": ^2.1.1 "@lumino/messaging": ^2.0.0 "@lumino/signaling": ^2.1.1 "@lumino/widgets": ^2.1.1 react: ^18.2.0 checksum: de36885b17d7fa067a89f84cbdeb48ecc7c90acd6b7596745c8c96b652f6853e5d744d04dab82746f94eeea65b090c32a6153191d182c2b4d969a4834c6ec8c3 languageName: node linkType: hard "@jupyterlab/translation@npm:^4.0.2": version: 4.0.2 resolution: "@jupyterlab/translation@npm:4.0.2" dependencies: "@jupyterlab/coreutils": ^6.0.2 "@jupyterlab/rendermime-interfaces": ^3.8.2 "@jupyterlab/services": ^7.0.2 "@jupyterlab/statedb": ^4.0.2 "@lumino/coreutils": ^2.1.1 checksum: 8f229be773607988509d059097c30bf8fbc8191d5b027221658436b2f539f6904ea48e7998276da7c52cdacd0821ea4cbdfd12ad0650ce0213525217d8735bf4 languageName: node linkType: hard "@jupyterlab/ui-components@npm:^4.0.2": version: 4.0.2 resolution: "@jupyterlab/ui-components@npm:4.0.2" dependencies: "@jupyterlab/coreutils": ^6.0.2 "@jupyterlab/observables": ^5.0.2 "@jupyterlab/rendermime-interfaces": ^3.8.2 "@jupyterlab/translation": ^4.0.2 "@lumino/algorithm": ^2.0.0 "@lumino/commands": ^2.1.1 "@lumino/coreutils": ^2.1.1 "@lumino/disposable": ^2.1.1 "@lumino/messaging": ^2.0.0 "@lumino/polling": ^2.1.1 "@lumino/properties": ^2.0.0 "@lumino/signaling": ^2.1.1 "@lumino/virtualdom": ^2.0.0 "@lumino/widgets": ^2.1.1 "@rjsf/core": ^5.1.0 "@rjsf/utils": ^5.1.0 react: ^18.2.0 react-dom: ^18.2.0 typestyle: ^2.0.4 peerDependencies: react: ^18.2.0 checksum: 5e941c557609e2cec3df3cb42de358c13f73f3cd0a3b0ce6c5d473dc8d7d09772d8dc35f843f9ef1b6619700fa4a403979a93aae047517efa5d9385a8f90eac7 languageName: node linkType: hard "@lezer/common@npm:^1.0.0, @lezer/common@npm:^1.0.2": version: 1.0.3 resolution: "@lezer/common@npm:1.0.3" checksum: cc90dc2f0aeaebeb3fe886cbd27f8b1e8bee817d8c2efff178604807debd68c5db820fd23afb830962780063d21891afbdf564420221faca2822e77bc6327184 languageName: node linkType: hard "@lezer/cpp@npm:^1.0.0": version: 1.1.0 resolution: "@lezer/cpp@npm:1.1.0" dependencies: "@lezer/highlight": ^1.0.0 "@lezer/lr": ^1.0.0 checksum: 9b25c881fc9b64fd2b019a077a85b0ba7cfda0bbdd92dbb0ff43300c9ba1ec4360128fe912bfe0f06a1c1bb5a564c5ace375c8aad254d07a717768a8f268695d languageName: node linkType: hard "@lezer/css@npm:^1.0.0, @lezer/css@npm:^1.1.0": version: 1.1.2 resolution: "@lezer/css@npm:1.1.2" dependencies: "@lezer/highlight": ^1.0.0 "@lezer/lr": ^1.0.0 checksum: 02218fe6901428e191a91a1f1a3728a051af982bafaf37144884c9261a7e24b2ad1dfdaa6e7feeb160e5bc34157ce92213cd92ae244cdf0b8485b8b8113850f8 languageName: node linkType: hard "@lezer/generator@npm:^1.2.2": version: 1.3.0 resolution: "@lezer/generator@npm:1.3.0" dependencies: "@lezer/common": ^1.0.2 "@lezer/lr": ^1.3.0 bin: lezer-generator: dist/lezer-generator.cjs checksum: 114df33679b44e86d0801473088bd1d52c208e3b3beb16cc923efac88280fc897bc2b79fd1a7bf2c04579a315898f4029127e5f15dc9557ff3c0ba0e710987eb languageName: node linkType: hard "@lezer/highlight@npm:^1.0.0, @lezer/highlight@npm:^1.1.3, @lezer/highlight@npm:^1.1.4": version: 1.1.6 resolution: "@lezer/highlight@npm:1.1.6" dependencies: "@lezer/common": ^1.0.0 checksum: 411a702394c4c996b7d7f145a38f3a85a8cc698b3918acc7121c629255bb76d4ab383753f69009e011dc415210c6acbbb5b27bde613259ab67e600b29397b03b languageName: node linkType: hard "@lezer/html@npm:^1.3.0": version: 1.3.4 resolution: "@lezer/html@npm:1.3.4" dependencies: "@lezer/common": ^1.0.0 "@lezer/highlight": ^1.0.0 "@lezer/lr": ^1.0.0 checksum: 81dd134ac094edf7c40bae4c3b7126d336ce4c3c87756344bf604eff64d89b06fcb55f91618a4622eb0dae6d6015722f5bab58e2252d86e81fca8c3ced1a0c4d languageName: node linkType: hard "@lezer/java@npm:^1.0.0": version: 1.0.3 resolution: "@lezer/java@npm:1.0.3" dependencies: "@lezer/highlight": ^1.0.0 "@lezer/lr": ^1.0.0 checksum: 2fffea6627d130413ffad4e61040267974cca3167d98881b9e5b5e2455530de74a82c234d93603e92a4972fad314671453c49c0a76b0f4547c4617d671fd7b99 languageName: node linkType: hard "@lezer/javascript@npm:^1.0.0": version: 1.4.3 resolution: "@lezer/javascript@npm:1.4.3" dependencies: "@lezer/highlight": ^1.1.3 "@lezer/lr": ^1.3.0 checksum: 520dc2d84c84841ef554993c1c0dfe503487aa9be398ebcf617b51d06f99121841d4ca1cf25f3f53d00efa820ea778cc2271da425a606ac66e9f09a4c8cc6677 languageName: node linkType: hard "@lezer/json@npm:^1.0.0": version: 1.0.0 resolution: "@lezer/json@npm:1.0.0" dependencies: "@lezer/highlight": ^1.0.0 "@lezer/lr": ^1.0.0 checksum: c1ca0cdf681415b58a383a669944bed66da3aa830870d32d1e471d545cff0fe43d9ac8a0d2a318a96daa99cd5a645b1d58ba8fbdd2e8d7ca4d33a62c7582cbab languageName: node linkType: hard "@lezer/lr@npm:^1.0.0, @lezer/lr@npm:^1.1.0, @lezer/lr@npm:^1.3.0": version: 1.3.6 resolution: "@lezer/lr@npm:1.3.6" dependencies: "@lezer/common": ^1.0.0 checksum: b2bbcfecc01bd9c801f3ee636ceda333adbbea1f274017cec6f315a23346e7a035a984f325d4f1cd14b157d74d28badda6f794514c29a0b078f7fb3357cdfc32 languageName: node linkType: hard "@lezer/markdown@npm:^1.0.0, @lezer/markdown@npm:^1.0.2": version: 1.0.2 resolution: "@lezer/markdown@npm:1.0.2" dependencies: "@lezer/common": ^1.0.0 "@lezer/highlight": ^1.0.0 checksum: c4bbfcd8a5a9d924a7cf2b5e5e99c78e7705473cc59804070278b5cfcf478af9dd567025d0926cbf03e3ea6abb8f173425220d3107c05a2d7e0ca3fe3d5c92ef languageName: node linkType: hard "@lezer/php@npm:^1.0.0": version: 1.0.1 resolution: "@lezer/php@npm:1.0.1" dependencies: "@lezer/highlight": ^1.0.0 "@lezer/lr": ^1.1.0 checksum: a847c255c030b4d38913ddf1d5bd7324d83be7ef8d1d244542870be03b9bf7dc71283afeb2415c40dfd188cb99f0cc44bad760b5f3b7c35c3b8e5e00253848fc languageName: node linkType: hard "@lezer/python@npm:^1.1.4": version: 1.1.7 resolution: "@lezer/python@npm:1.1.7" dependencies: "@lezer/highlight": ^1.0.0 "@lezer/lr": ^1.0.0 checksum: 7ae6b4ae770b3cd849eee3d8fb1d904745aee202a76e7db0a079725a97571c4778fa5bd74878206e44aa3349044bf056008e19e7a90650fad93d51890f685077 languageName: node linkType: hard "@lezer/rust@npm:^1.0.0": version: 1.0.0 resolution: "@lezer/rust@npm:1.0.0" dependencies: "@lezer/highlight": ^1.0.0 "@lezer/lr": ^1.0.0 checksum: 0c42f415674f60ca2ef4274b446577621cdeec8f31168b1c3b90888a4377c513f02a89ee346421c264ec3a77fe2fa3e134996be6463ed506dbbc79b4b4505375 languageName: node linkType: hard "@lezer/xml@npm:^1.0.0": version: 1.0.1 resolution: "@lezer/xml@npm:1.0.1" dependencies: "@lezer/highlight": ^1.0.0 "@lezer/lr": ^1.0.0 checksum: 271319aa7802c123845b70ffa63d7065c0f92fc6a1ddb1f8ec9f3aa965bca3df3c9fad4d4de53187ddf230e833cd3ab3a84cb2aded76ab5f6831e9a2fc310923 languageName: node linkType: hard "@lumino/algorithm@npm:^2.0.0": version: 2.0.0 resolution: "@lumino/algorithm@npm:2.0.0" checksum: 663edf536e94397b449c6a2643a735e602fbb396dec86b56ad1193a768dce27c6e7da5ad0384aa90086ea44cbb64dde3f9d565e9fd81858f1eb0c6b4253f3b94 languageName: node linkType: hard "@lumino/application@npm:^2.1.1": version: 2.1.1 resolution: "@lumino/application@npm:2.1.1" dependencies: "@lumino/commands": ^2.1.1 "@lumino/coreutils": ^2.1.1 "@lumino/widgets": ^2.1.1 checksum: 442a047e43a85b48189d15a5a322f39cac01b9bee7b252aa76579c53e503f2cf2100f2e3aff61cd1d92fef07f04c0a3a6680c475890e0923456e296ceb79a692 languageName: node linkType: hard "@lumino/collections@npm:^2.0.0": version: 2.0.0 resolution: "@lumino/collections@npm:2.0.0" dependencies: "@lumino/algorithm": ^2.0.0 checksum: 4a7fc3571e92a1368a1ef01300ad7b6e0d4ff13cb78b89533d5962eea66d4a7550e15d8b80fa3ab1816b1a89382f35015f9dddf72ab04654c17e5b516b845d8f languageName: node linkType: hard "@lumino/commands@npm:^2.1.1": version: 2.1.1 resolution: "@lumino/commands@npm:2.1.1" dependencies: "@lumino/algorithm": ^2.0.0 "@lumino/coreutils": ^2.1.1 "@lumino/disposable": ^2.1.1 "@lumino/domutils": ^2.0.0 "@lumino/keyboard": ^2.0.0 "@lumino/signaling": ^2.1.1 "@lumino/virtualdom": ^2.0.0 checksum: a076244e9c4f7a3c6dab02642fdd38dbbaab6e5754acaeeb84a5195dc5c2fc19343ba754c3a0f89c9b60f16c61cb793301cdb6e8d69bdc30e18ed7e32f40d524 languageName: node linkType: hard "@lumino/coreutils@npm:^1.11.0 || ^2.0.0, @lumino/coreutils@npm:^1.11.0 || ^2.1.1, @lumino/coreutils@npm:^2.1.1": version: 2.1.1 resolution: "@lumino/coreutils@npm:2.1.1" checksum: dfdeb2b0282caae17b6c3edfebadf4ce7c75fc879fa60cacfef9b154412f4b35e4ffd95b1833b99d8dacb99aaaa04513570129ae2024c3f33e2677a01f0576ce languageName: node linkType: hard "@lumino/datagrid@npm:^2.1.1": version: 2.1.1 resolution: "@lumino/datagrid@npm:2.1.1" dependencies: "@lumino/algorithm": ^2.0.0 "@lumino/coreutils": ^2.1.1 "@lumino/disposable": ^2.1.1 "@lumino/domutils": ^2.0.0 "@lumino/dragdrop": ^2.1.1 "@lumino/keyboard": ^2.0.0 "@lumino/messaging": ^2.0.0 "@lumino/signaling": ^2.1.1 "@lumino/widgets": ^2.1.1 checksum: 01ed80f36b31449d16302197549ae091d8ea07d124e5dbfda271c35462bce7f6f56d54978b6b3174d9332b9ee4219568ab3f7308b26ff1df88e9fce748bd5448 languageName: node linkType: hard "@lumino/disposable@npm:^1.10.0 || ^2.0.0, @lumino/disposable@npm:^2.1.1": version: 2.1.1 resolution: "@lumino/disposable@npm:2.1.1" dependencies: "@lumino/signaling": ^2.1.1 checksum: ed6cdfe13f3346178a087690d4e7baeccaed7e73ca23cb239765202409f5c01b4729a4058b4717f963462ee9ef2e5cb14ad1974e3163741267290edc3715c85c languageName: node linkType: hard "@lumino/domutils@npm:^2.0.0": version: 2.0.0 resolution: "@lumino/domutils@npm:2.0.0" checksum: 4a146bfc1006d5fd00ccecc61d9803965d269c15c48c892fd87216336ce967f0db91f31203c5616c83d260224cddf25af4abb6704a6770757d19e44068f690bf languageName: node linkType: hard "@lumino/dragdrop@npm:^2.1.1": version: 2.1.1 resolution: "@lumino/dragdrop@npm:2.1.1" dependencies: "@lumino/coreutils": ^2.1.1 "@lumino/disposable": ^2.1.1 checksum: 68c896afc44476b11a501e5b30ec55db06c2648a45f078713a111b2bf3b2e9171a7c5478ff6bdeb771a7c1e397fe3bba7bc5eadb4fe3e1294851d677f811b5b8 languageName: node linkType: hard "@lumino/keyboard@npm:^2.0.0": version: 2.0.0 resolution: "@lumino/keyboard@npm:2.0.0" checksum: 3852ba51f437b1c1d7e552a0f844592a05e04dd5012070dc6e4384c58965d1ebf536c6875c1b7bae03cde3c715ddc36cd290992fcefc1a8c39094194f4689fdd languageName: node linkType: hard "@lumino/messaging@npm:^2.0.0": version: 2.0.0 resolution: "@lumino/messaging@npm:2.0.0" dependencies: "@lumino/algorithm": ^2.0.0 "@lumino/collections": ^2.0.0 checksum: 1e82dcf9b110834d4342dc63dfeac0ee780880fb99051bd82d00a1f83afd91b276c1cea5af85a414d92c527adc365d54f20ec780123b562f89c5a2cd3e96bf81 languageName: node linkType: hard "@lumino/polling@npm:^2.1.1": version: 2.1.1 resolution: "@lumino/polling@npm:2.1.1" dependencies: "@lumino/coreutils": ^2.1.1 "@lumino/disposable": ^2.1.1 "@lumino/signaling": ^2.1.1 checksum: 69177b26d5fc541e72533cbe7d7f7999eea541d392f1082d20dbd9e1797e7d46fba47bae9c65c06f9ccb2780cbae636e9354d9bf4423b5e1020754d4b07d4f6b languageName: node linkType: hard "@lumino/properties@npm:^2.0.0": version: 2.0.0 resolution: "@lumino/properties@npm:2.0.0" checksum: 81187a11a779eed4e20ff0035e77dee99bd271b0cf649096c4e8809dd6bdd06955b1a974bc1a115e536f8d2840b30183bb78a362b2c6991824477df6d17e6c59 languageName: node linkType: hard "@lumino/signaling@npm:^1.10.0 || ^2.0.0, @lumino/signaling@npm:^2.1.1": version: 2.1.1 resolution: "@lumino/signaling@npm:2.1.1" dependencies: "@lumino/algorithm": ^2.0.0 "@lumino/coreutils": ^2.1.1 checksum: 283ad4239b8577f68aca3d0b2606f73cc1c775f84cab25cf49aa6cd195f0d87949ef43fdff03b38b5a49ebbf2468581c6786d5f8b6159a04b2051260be5eab86 languageName: node linkType: hard "@lumino/virtualdom@npm:^2.0.0": version: 2.0.0 resolution: "@lumino/virtualdom@npm:2.0.0" dependencies: "@lumino/algorithm": ^2.0.0 checksum: 6fc1d88e7d4a656be7664ccfc5745eb1d4e3d2034db0b11ad6abefcc642f22d265003eef0e1d02bca2e42b6da127123118c631369006f78e88a08885a6f36c25 languageName: node linkType: hard "@lumino/widgets@npm:^1.37.2 || ^2.1.1, @lumino/widgets@npm:^2.1.1": version: 2.1.1 resolution: "@lumino/widgets@npm:2.1.1" dependencies: "@lumino/algorithm": ^2.0.0 "@lumino/commands": ^2.1.1 "@lumino/coreutils": ^2.1.1 "@lumino/disposable": ^2.1.1 "@lumino/domutils": ^2.0.0 "@lumino/dragdrop": ^2.1.1 "@lumino/keyboard": ^2.0.0 "@lumino/messaging": ^2.0.0 "@lumino/properties": ^2.0.0 "@lumino/signaling": ^2.1.1 "@lumino/virtualdom": ^2.0.0 checksum: e2ad4a97d6ec43e5e1863c2a521b6b8cb7a708a470c1e78b0f34ff4ad8b9fca191597586c3033233a29ff0fa14b62aeef5ea2fe66af3058d39e711c6af129cf4 languageName: node linkType: hard "@npmcli/fs@npm:^3.1.0": version: 3.1.0 resolution: "@npmcli/fs@npm:3.1.0" dependencies: semver: ^7.3.5 checksum: a50a6818de5fc557d0b0e6f50ec780a7a02ab8ad07e5ac8b16bf519e0ad60a144ac64f97d05c443c3367235d337182e1d012bbac0eb8dbae8dc7b40b193efd0e languageName: node linkType: hard "@pkgjs/parseargs@npm:^0.11.0": version: 0.11.0 resolution: "@pkgjs/parseargs@npm:0.11.0" checksum: 6ad6a00fc4f2f2cfc6bff76fb1d88b8ee20bc0601e18ebb01b6d4be583733a860239a521a7fbca73b612e66705078809483549d2b18f370eb346c5155c8e4a0f languageName: node linkType: hard "@playwright/test@npm:^1.32.0, @playwright/test@npm:^1.32.2": version: 1.35.0 resolution: "@playwright/test@npm:1.35.0" dependencies: "@types/node": "*" fsevents: 2.3.2 playwright-core: 1.35.0 dependenciesMeta: fsevents: optional: true bin: playwright: cli.js checksum: c63a281d8711ec817906d7618563709842aaa013ac02919bb7bbef7f7162d4ace0fc1351c6aac94a8957df4d107b38440e55488e99455a07f55e1ace6bb07959 languageName: node linkType: hard "@rjsf/core@npm:^5.1.0": version: 5.8.1 resolution: "@rjsf/core@npm:5.8.1" dependencies: lodash: ^4.17.21 lodash-es: ^4.17.21 markdown-to-jsx: ^7.2.1 nanoid: ^3.3.6 prop-types: ^15.8.1 peerDependencies: "@rjsf/utils": ^5.8.x react: ^16.14.0 || >=17 checksum: 616691f66285c89d7fb378bbad787960adcf7e8941b3287dce543f022dce3106b80d41cf1f41de926cd8dbe1f5006c5fcc0a6597bbca7ee9a13d422b967bb986 languageName: node linkType: hard "@rjsf/utils@npm:^5.1.0": version: 5.8.1 resolution: "@rjsf/utils@npm:5.8.1" dependencies: json-schema-merge-allof: ^0.8.1 jsonpointer: ^5.0.1 lodash: ^4.17.21 lodash-es: ^4.17.21 react-is: ^18.2.0 peerDependencies: react: ^16.14.0 || >=17 checksum: 7a567ab45e62de01020a6bccd1da20e55a7a484bc5d367e3ded56ba3971d196646b690767c4f2d2840b2df1acdf5cd5611c892b1ce3c59defdd6201a107e6ff4 languageName: node linkType: hard "@stdlib/array@npm:^0.0.x": version: 0.0.12 resolution: "@stdlib/array@npm:0.0.12" dependencies: "@stdlib/assert": ^0.0.x "@stdlib/blas": ^0.0.x "@stdlib/complex": ^0.0.x "@stdlib/constants": ^0.0.x "@stdlib/math": ^0.0.x "@stdlib/symbol": ^0.0.x "@stdlib/types": ^0.0.x "@stdlib/utils": ^0.0.x checksum: 0d95690461f0c4560eabef0796d1170274415cd03de80333c6d39814d0484a6873ef4be04a64941ebf3a600747e84c3a4f23b21c7020e53842c07985331b39f1 conditions: (os=aix | os=darwin | os=freebsd | os=linux | os=macos | os=openbsd | os=sunos | os=win32 | os=windows) languageName: node linkType: hard "@stdlib/assert@npm:^0.0.x": version: 0.0.12 resolution: "@stdlib/assert@npm:0.0.12" dependencies: "@stdlib/array": ^0.0.x "@stdlib/cli": ^0.0.x "@stdlib/complex": ^0.0.x "@stdlib/constants": ^0.0.x "@stdlib/fs": ^0.0.x "@stdlib/math": ^0.0.x "@stdlib/ndarray": ^0.0.x "@stdlib/number": ^0.0.x "@stdlib/os": ^0.0.x "@stdlib/process": ^0.0.x "@stdlib/regexp": ^0.0.x "@stdlib/streams": ^0.0.x "@stdlib/string": ^0.0.x "@stdlib/symbol": ^0.0.x "@stdlib/types": ^0.0.x "@stdlib/utils": ^0.0.x checksum: d4dcbeabbfb86ba56cdd972ff785f43e7d25018b2b1800cab8b0deb9e5c54c795d6ead3d142f4dd13c351f636deba4dc1857c85147d6b059fdc78eb2c9510b99 conditions: (os=aix | os=darwin | os=freebsd | os=linux | os=macos | os=openbsd | os=sunos | os=win32 | os=windows) languageName: node linkType: hard "@stdlib/bigint@npm:^0.0.x": version: 0.0.11 resolution: "@stdlib/bigint@npm:0.0.11" dependencies: "@stdlib/utils": ^0.0.x checksum: 7bf825d116e4b010e214209af239706ac1ef923eecb5c8b0af9229c9975450081355e441ecc7b4765d81a9e653141868e0492b8061d1e65724fa42fb8283aabd conditions: (os=aix | os=darwin | os=freebsd | os=linux | os=macos | os=openbsd | os=sunos | os=win32 | os=windows) languageName: node linkType: hard "@stdlib/blas@npm:^0.0.x": version: 0.0.12 resolution: "@stdlib/blas@npm:0.0.12" dependencies: "@stdlib/array": ^0.0.x "@stdlib/assert": ^0.0.x "@stdlib/math": ^0.0.x "@stdlib/number": ^0.0.x "@stdlib/types": ^0.0.x "@stdlib/utils": ^0.0.x checksum: 67ea00a968f7a9c710b37f718b7f756e2830e479a1a1ee44cbf6ec3cc27dd8863078928867707d9d1624007e81de89d040f2326d10f435e2cce913cab121975e conditions: (os=aix | os=darwin | os=freebsd | os=linux | os=macos | os=openbsd | os=sunos | os=win32 | os=windows) languageName: node linkType: hard "@stdlib/buffer@npm:^0.0.x": version: 0.0.11 resolution: "@stdlib/buffer@npm:0.0.11" dependencies: "@stdlib/array": ^0.0.x "@stdlib/assert": ^0.0.x "@stdlib/process": ^0.0.x "@stdlib/types": ^0.0.x "@stdlib/utils": ^0.0.x checksum: 93df02e3bf548e940ff9cef65121566e7bf93b554f0614d62336c9dbccfc07c9f1b1c4e9a7aebbe4819ef16a6d2a33a7010c2fdf908fface8298a3109c3c4ef0 conditions: (os=aix | os=darwin | os=freebsd | os=linux | os=macos | os=openbsd | os=sunos | os=win32 | os=windows) languageName: node linkType: hard "@stdlib/cli@npm:^0.0.x": version: 0.0.10 resolution: "@stdlib/cli@npm:0.0.10" dependencies: "@stdlib/utils": ^0.0.x minimist: ^1.2.0 checksum: bbece8d3dbff2835518582a7726c6c4c22743dc408d2303d9e35a3b72151d5d0a8e78d61bc896663d4c3fb702e966abea7a1bd621ed943723a359f57053f121f conditions: (os=aix | os=darwin | os=freebsd | os=linux | os=macos | os=openbsd | os=sunos | os=win32 | os=windows) languageName: node linkType: hard "@stdlib/complex@npm:^0.0.x": version: 0.0.12 resolution: "@stdlib/complex@npm:0.0.12" dependencies: "@stdlib/array": ^0.0.x "@stdlib/assert": ^0.0.x "@stdlib/types": ^0.0.x "@stdlib/utils": ^0.0.x checksum: 8eda35027495417f1b0dd9bbbc2d4983f50ad3cf9e2276ffe0945ccdbe78f0fc66b9fc36ab71926d2a125c8fb7467c8970a222b230b42ff4bb8042c53314ca09 conditions: (os=aix | os=darwin | os=freebsd | os=linux | os=macos | os=openbsd | os=sunos | os=win32 | os=windows) languageName: node linkType: hard "@stdlib/constants@npm:^0.0.x": version: 0.0.11 resolution: "@stdlib/constants@npm:0.0.11" dependencies: "@stdlib/array": ^0.0.x "@stdlib/assert": ^0.0.x "@stdlib/number": ^0.0.x "@stdlib/utils": ^0.0.x checksum: fc19d055a4e71ae84b6c92e4a3a88371d50693da8f0a813df4063dc549374d19b9cf23f4fdae2fb7b2013e13929f713c3e1b9e4054767e741b75561ed43d15c3 conditions: (os=aix | os=darwin | os=freebsd | os=linux | os=macos | os=openbsd | os=sunos | os=win32 | os=windows) languageName: node linkType: hard "@stdlib/fs@npm:^0.0.x": version: 0.0.12 resolution: "@stdlib/fs@npm:0.0.12" dependencies: "@stdlib/array": ^0.0.x "@stdlib/assert": ^0.0.x "@stdlib/cli": ^0.0.x "@stdlib/math": ^0.0.x "@stdlib/process": ^0.0.x "@stdlib/string": ^0.0.x "@stdlib/utils": ^0.0.x debug: ^2.6.9 checksum: 33ac5ee4844d4599fe3a8a8402f1a3e2cafee31a5c9cf5b85df530a61a2b54ef17dc30a67be98dacdc2958219413edd0e4cdc3c28266f4bc30277ee024f6a49e conditions: (os=aix | os=darwin | os=freebsd | os=linux | os=macos | os=openbsd | os=sunos | os=win32 | os=windows) languageName: node linkType: hard "@stdlib/math@npm:^0.0.x": version: 0.0.11 resolution: "@stdlib/math@npm:0.0.11" dependencies: "@stdlib/assert": ^0.0.x "@stdlib/constants": ^0.0.x "@stdlib/ndarray": ^0.0.x "@stdlib/number": ^0.0.x "@stdlib/strided": ^0.0.x "@stdlib/symbol": ^0.0.x "@stdlib/types": ^0.0.x "@stdlib/utils": ^0.0.x debug: ^2.6.9 checksum: 6c4c9dda36fbce50553e1437354c5286aa782c42399534dbed8e696ddeb1b91ef6cff5fe5962f1c9e1eb2ef63c63d9bd58f7ca4b87d59018aaac20099c3fb79a conditions: (os=aix | os=darwin | os=freebsd | os=linux | os=macos | os=openbsd | os=sunos | os=win32 | os=windows) languageName: node linkType: hard "@stdlib/ndarray@npm:^0.0.x": version: 0.0.13 resolution: "@stdlib/ndarray@npm:0.0.13" dependencies: "@stdlib/array": ^0.0.x "@stdlib/assert": ^0.0.x "@stdlib/bigint": ^0.0.x "@stdlib/buffer": ^0.0.x "@stdlib/complex": ^0.0.x "@stdlib/constants": ^0.0.x "@stdlib/math": ^0.0.x "@stdlib/number": ^0.0.x "@stdlib/string": ^0.0.x "@stdlib/types": ^0.0.x "@stdlib/utils": ^0.0.x checksum: 842a94afce5fc74bf8a964b75a302ddb8713eadbc79616e6799f1310c8bce860ed9e9877adc4a39338d9136b8798947ee21cf03368d46408308a313c8075d49a conditions: (os=aix | os=darwin | os=freebsd | os=linux | os=macos | os=openbsd | os=sunos | os=win32 | os=windows) languageName: node linkType: hard "@stdlib/nlp@npm:^0.0.x": version: 0.0.11 resolution: "@stdlib/nlp@npm:0.0.11" dependencies: "@stdlib/array": ^0.0.x "@stdlib/assert": ^0.0.x "@stdlib/math": ^0.0.x "@stdlib/random": ^0.0.x "@stdlib/string": ^0.0.x "@stdlib/utils": ^0.0.x checksum: 398fe2853fb95404bb6598e3e199ca3e0435b94447d50e14e2e30582cadfb91f43464f23d80a0e1da4d64567a4a108a7299d7440509f1ab26b02aea7bb16e9a8 conditions: (os=aix | os=darwin | os=freebsd | os=linux | os=macos | os=openbsd | os=sunos | os=win32 | os=windows) languageName: node linkType: hard "@stdlib/number@npm:^0.0.x": version: 0.0.10 resolution: "@stdlib/number@npm:0.0.10" dependencies: "@stdlib/array": ^0.0.x "@stdlib/assert": ^0.0.x "@stdlib/constants": ^0.0.x "@stdlib/math": ^0.0.x "@stdlib/os": ^0.0.x "@stdlib/string": ^0.0.x "@stdlib/types": ^0.0.x "@stdlib/utils": ^0.0.x checksum: 326190956c787cbf9321c332beedab5ba4b3fa97d52a82aa708a0349b4678c0df7a351424f00a606f4eaca4fb4ba4cc191580c99d7c64ee0f08d37baa3de14f2 conditions: (os=aix | os=darwin | os=freebsd | os=linux | os=macos | os=openbsd | os=sunos | os=win32 | os=windows) languageName: node linkType: hard "@stdlib/os@npm:^0.0.x": version: 0.0.12 resolution: "@stdlib/os@npm:0.0.12" dependencies: "@stdlib/assert": ^0.0.x "@stdlib/cli": ^0.0.x "@stdlib/fs": ^0.0.x "@stdlib/process": ^0.0.x "@stdlib/utils": ^0.0.x checksum: 37156b0c723da70d7740d92d08fc592eae803461c1d546cff6ac044765d6e40722fdad342219277e747c39344b513096ac1d0aa1e733cf3079bd8a9a8578612a conditions: (os=aix | os=darwin | os=freebsd | os=linux | os=macos | os=openbsd | os=sunos | os=win32 | os=windows) languageName: node linkType: hard "@stdlib/process@npm:^0.0.x": version: 0.0.12 resolution: "@stdlib/process@npm:0.0.12" dependencies: "@stdlib/assert": ^0.0.x "@stdlib/buffer": ^0.0.x "@stdlib/cli": ^0.0.x "@stdlib/fs": ^0.0.x "@stdlib/streams": ^0.0.x "@stdlib/string": ^0.0.x "@stdlib/utils": ^0.0.x checksum: 6d5c3d943f9914d1ae39bd36ad7436f783cf64baa2bff67a808035c99258676ae3f704c328a78d62754951cf85fe99d8e9af5f4fa7d5f8cba347bca72767e357 conditions: (os=aix | os=darwin | os=freebsd | os=linux | os=macos | os=openbsd | os=sunos | os=win32 | os=windows) languageName: node linkType: hard "@stdlib/random@npm:^0.0.x": version: 0.0.12 resolution: "@stdlib/random@npm:0.0.12" dependencies: "@stdlib/array": ^0.0.x "@stdlib/assert": ^0.0.x "@stdlib/blas": ^0.0.x "@stdlib/buffer": ^0.0.x "@stdlib/cli": ^0.0.x "@stdlib/constants": ^0.0.x "@stdlib/fs": ^0.0.x "@stdlib/math": ^0.0.x "@stdlib/process": ^0.0.x "@stdlib/stats": ^0.0.x "@stdlib/streams": ^0.0.x "@stdlib/symbol": ^0.0.x "@stdlib/types": ^0.0.x "@stdlib/utils": ^0.0.x debug: ^2.6.9 readable-stream: ^2.1.4 checksum: 67fcb5553274f8596ceae91153e96ae297bacfd55279821cb09f19f2844845aaf892802e4a5962965323dbfded0c7df8a89a6ce77d60d5c8a5899d483055a964 conditions: (os=aix | os=darwin | os=freebsd | os=linux | os=macos | os=openbsd | os=sunos | os=win32 | os=windows) languageName: node linkType: hard "@stdlib/regexp@npm:^0.0.x": version: 0.0.13 resolution: "@stdlib/regexp@npm:0.0.13" dependencies: "@stdlib/assert": ^0.0.x "@stdlib/utils": ^0.0.x checksum: dd52adb096ff9a02d1c4818be2889ae01bc04a0cdbc0d52473685e0a7a4eaa13e1be603b964f140f7488d11450b644dc5f8c97029d77db1ed4a563554245ff1c conditions: (os=aix | os=darwin | os=freebsd | os=linux | os=macos | os=openbsd | os=sunos | os=win32 | os=windows) languageName: node linkType: hard "@stdlib/stats@npm:^0.0.x, @stdlib/stats@npm:~0.0.13": version: 0.0.13 resolution: "@stdlib/stats@npm:0.0.13" dependencies: "@stdlib/array": ^0.0.x "@stdlib/assert": ^0.0.x "@stdlib/blas": ^0.0.x "@stdlib/constants": ^0.0.x "@stdlib/math": ^0.0.x "@stdlib/ndarray": ^0.0.x "@stdlib/random": ^0.0.x "@stdlib/string": ^0.0.x "@stdlib/symbol": ^0.0.x "@stdlib/types": ^0.0.x "@stdlib/utils": ^0.0.x checksum: 5ca12b2e123543f56a59aca828e14afaf525ad4aa40467bee7037a9178e21e55d4ce8ba3de9387cc9a0efe3e0d035d6c58705b12f634f77a2b3f87d334dfb076 conditions: (os=aix | os=darwin | os=freebsd | os=linux | os=macos | os=openbsd | os=sunos | os=win32 | os=windows) languageName: node linkType: hard "@stdlib/streams@npm:^0.0.x": version: 0.0.12 resolution: "@stdlib/streams@npm:0.0.12" dependencies: "@stdlib/assert": ^0.0.x "@stdlib/buffer": ^0.0.x "@stdlib/cli": ^0.0.x "@stdlib/fs": ^0.0.x "@stdlib/types": ^0.0.x "@stdlib/utils": ^0.0.x debug: ^2.6.9 readable-stream: ^2.1.4 checksum: 231b4607d082ea81d9dadbeab08002ec398a29c7eb5d611d8a4183f9db6964428e2f8a9e0f8edd085ca12b5d58258576987a575e9d8f6fcabcb5a62c6b8efe88 conditions: (os=aix | os=darwin | os=freebsd | os=linux | os=macos | os=openbsd | os=sunos | os=win32 | os=windows) languageName: node linkType: hard "@stdlib/strided@npm:^0.0.x": version: 0.0.12 resolution: "@stdlib/strided@npm:0.0.12" dependencies: "@stdlib/assert": ^0.0.x "@stdlib/math": ^0.0.x "@stdlib/ndarray": ^0.0.x "@stdlib/types": ^0.0.x "@stdlib/utils": ^0.0.x checksum: 55ccc8543596894a2e3ad734b394700c69697b499a54b3bfbcf80cddd8d91509792c23931f5cebf7c89269676ac3f44352582e4f42e2c2c2898363cc3a76403d conditions: (os=aix | os=darwin | os=freebsd | os=linux | os=macos | os=openbsd | os=sunos | os=win32 | os=windows) languageName: node linkType: hard "@stdlib/string@npm:^0.0.x": version: 0.0.14 resolution: "@stdlib/string@npm:0.0.14" dependencies: "@stdlib/assert": ^0.0.x "@stdlib/cli": ^0.0.x "@stdlib/constants": ^0.0.x "@stdlib/fs": ^0.0.x "@stdlib/math": ^0.0.x "@stdlib/nlp": ^0.0.x "@stdlib/process": ^0.0.x "@stdlib/regexp": ^0.0.x "@stdlib/streams": ^0.0.x "@stdlib/types": ^0.0.x "@stdlib/utils": ^0.0.x checksum: aaaaaddf381cccc67f15dbab76f43ce81cb71a4f5595bfa06ef915b6747458deca3c25c60ff3c002c0c36482687d92a150f364069559dfea915f63a040d5f603 conditions: (os=aix | os=darwin | os=freebsd | os=linux | os=macos | os=openbsd | os=sunos | os=win32 | os=windows) languageName: node linkType: hard "@stdlib/symbol@npm:^0.0.x": version: 0.0.12 resolution: "@stdlib/symbol@npm:0.0.12" dependencies: "@stdlib/assert": ^0.0.x "@stdlib/utils": ^0.0.x checksum: 2263341ce0296de2063d26038902bd63bf1d7b820307402fdf38c3b248bd026f17d96bccdc3189fd9fcc9c83a778eaab797dc11805bd66203b8ac9c6934f6588 conditions: (os=aix | os=darwin | os=freebsd | os=linux | os=macos | os=openbsd | os=sunos | os=win32 | os=windows) languageName: node linkType: hard "@stdlib/time@npm:^0.0.x": version: 0.0.14 resolution: "@stdlib/time@npm:0.0.14" dependencies: "@stdlib/assert": ^0.0.x "@stdlib/cli": ^0.0.x "@stdlib/constants": ^0.0.x "@stdlib/fs": ^0.0.x "@stdlib/math": ^0.0.x "@stdlib/string": ^0.0.x "@stdlib/utils": ^0.0.x checksum: 6e8a1b985a09936ab09c98d44bf1b2c79e08995c3c73401494bc1f6f708747ef136d769af4809a8af92a9ceb3d390db6c4c4e01608cd8d794a86c4b57e343eb1 conditions: (os=aix | os=darwin | os=freebsd | os=linux | os=macos | os=openbsd | os=sunos | os=win32 | os=windows) languageName: node linkType: hard "@stdlib/types@npm:^0.0.x": version: 0.0.14 resolution: "@stdlib/types@npm:0.0.14" checksum: 5680a655ddb3ad730f5c7eb2363a43e089f3e6a1b85b12546cab49f7749bb3baf293bd50fbfe55486f233f4227f1020b65eb461b754b94fb4a4bc2799647ec22 conditions: (os=aix | os=darwin | os=freebsd | os=linux | os=macos | os=openbsd | os=sunos | os=win32 | os=windows) languageName: node linkType: hard "@stdlib/utils@npm:^0.0.x": version: 0.0.12 resolution: "@stdlib/utils@npm:0.0.12" dependencies: "@stdlib/array": ^0.0.x "@stdlib/assert": ^0.0.x "@stdlib/blas": ^0.0.x "@stdlib/buffer": ^0.0.x "@stdlib/cli": ^0.0.x "@stdlib/constants": ^0.0.x "@stdlib/fs": ^0.0.x "@stdlib/math": ^0.0.x "@stdlib/os": ^0.0.x "@stdlib/process": ^0.0.x "@stdlib/random": ^0.0.x "@stdlib/regexp": ^0.0.x "@stdlib/streams": ^0.0.x "@stdlib/string": ^0.0.x "@stdlib/symbol": ^0.0.x "@stdlib/time": ^0.0.x "@stdlib/types": ^0.0.x debug: ^2.6.9 checksum: e0c3671c5f62c11bb3abd721f2958c41641b00a75d449bd25fbb62bcb8689cfe9c1f600c0688e7b6819ae870d6e5974d0fc7b2ec86081c45d9194b316b2a2ec2 conditions: (os=aix | os=darwin | os=freebsd | os=linux | os=macos | os=openbsd | os=sunos | os=win32 | os=windows) languageName: node linkType: hard "@tootallnate/once@npm:2": version: 2.0.0 resolution: "@tootallnate/once@npm:2.0.0" checksum: ad87447820dd3f24825d2d947ebc03072b20a42bfc96cbafec16bff8bbda6c1a81fcb0be56d5b21968560c5359a0af4038a68ba150c3e1694fe4c109a063bed8 languageName: node linkType: hard "@types/clone@npm:~2.1.1": version: 2.1.1 resolution: "@types/clone@npm:2.1.1" checksum: bda9668b9d6e0875d64bbe00763676f566e8647bc224333a03ac7fd66655dfed56a98a9f8304d0145c4411b964649c84c4d1a03adbdb6547eafb9ab8f303d254 languageName: node linkType: hard "@types/estree@npm:^1.0.0": version: 1.0.1 resolution: "@types/estree@npm:1.0.1" checksum: e9aa175eacb797216fafce4d41e8202c7a75555bc55232dee0f9903d7171f8f19f0ae7d5191bb1a88cb90e65468be508c0df850a9fb81b4433b293a5a749899d languageName: node linkType: hard "@types/geojson@npm:7946.0.4": version: 7946.0.4 resolution: "@types/geojson@npm:7946.0.4" checksum: 541aea46540c918b9fe21ab73f497fe17b1eaf4d0d3baeb5f5614029b7f488c37f63843b644c024a8178dc2fb66d3d6623c25d9cf61d7b553aa19c8dc7f99047 languageName: node linkType: hard "@types/node@npm:*": version: 20.3.1 resolution: "@types/node@npm:20.3.1" checksum: 63a393ab6d947be17320817b35d7277ef03728e231558166ed07ee30b09fd7c08861be4d746f10fdc63ca7912e8cd023939d4eab887ff6580ff704ff24ed810c languageName: node linkType: hard "@types/prop-types@npm:*": version: 15.7.5 resolution: "@types/prop-types@npm:15.7.5" checksum: 5b43b8b15415e1f298243165f1d44390403bb2bd42e662bca3b5b5633fdd39c938e91b7fce3a9483699db0f7a715d08cef220c121f723a634972fdf596aec980 languageName: node linkType: hard "@types/react@npm:^18.0.26": version: 18.2.12 resolution: "@types/react@npm:18.2.12" dependencies: "@types/prop-types": "*" "@types/scheduler": "*" csstype: ^3.0.2 checksum: ad85a7eadaf1b35cfeee9f715b39311420ff46d46e0650377d918b3f888c2e47416037da4a765e1dccd3d1916abd54c105a3bee803c971ba56c955a7768ce976 languageName: node linkType: hard "@types/scheduler@npm:*": version: 0.16.3 resolution: "@types/scheduler@npm:0.16.3" checksum: 2b0aec39c24268e3ce938c5db2f2e77f5c3dd280e05c262d9c2fe7d890929e4632a6b8e94334017b66b45e4f92a5aa42ba3356640c2a1175fa37bef2f5200767 languageName: node linkType: hard "@vscode/debugprotocol@npm:^1.51.0": version: 1.61.0 resolution: "@vscode/debugprotocol@npm:1.61.0" checksum: 14d4f6d2f385e15a39ba7aa506c25d3e2a2d6a22ebb6ee9d354062634f292b1ce3b0d9b5ac1c098052e3f6e572a1571bf0db647d13d85157b9a50645a0f1c69f languageName: node linkType: hard "@yarnpkg/lockfile@npm:^1.1.0": version: 1.1.0 resolution: "@yarnpkg/lockfile@npm:1.1.0" checksum: 05b881b4866a3546861fee756e6d3812776ea47fa6eb7098f983d6d0eefa02e12b66c3fff931574120f196286a7ad4879ce02743c8bb2be36c6a576c7852083a languageName: node linkType: hard "abbrev@npm:^1.0.0": version: 1.1.1 resolution: "abbrev@npm:1.1.1" checksum: a4a97ec07d7ea112c517036882b2ac22f3109b7b19077dc656316d07d308438aac28e4d9746dc4d84bf6b1e75b4a7b0a5f3cb30592419f128ca9a8cee3bcfa17 languageName: node linkType: hard "agent-base@npm:6, agent-base@npm:^6.0.2": version: 6.0.2 resolution: "agent-base@npm:6.0.2" dependencies: debug: 4 checksum: f52b6872cc96fd5f622071b71ef200e01c7c4c454ee68bc9accca90c98cfb39f2810e3e9aa330435835eedc8c23f4f8a15267f67c6e245d2b33757575bdac49d languageName: node linkType: hard "agentkeepalive@npm:^4.2.1": version: 4.3.0 resolution: "agentkeepalive@npm:4.3.0" dependencies: debug: ^4.1.0 depd: ^2.0.0 humanize-ms: ^1.2.1 checksum: 982453aa44c11a06826c836025e5162c846e1200adb56f2d075400da7d32d87021b3b0a58768d949d824811f5654223d5a8a3dad120921a2439625eb847c6260 languageName: node linkType: hard "aggregate-error@npm:^3.0.0": version: 3.1.0 resolution: "aggregate-error@npm:3.1.0" dependencies: clean-stack: ^2.0.0 indent-string: ^4.0.0 checksum: 1101a33f21baa27a2fa8e04b698271e64616b886795fd43c31068c07533c7b3facfcaf4e9e0cab3624bd88f729a592f1c901a1a229c9e490eafce411a8644b79 languageName: node linkType: hard "ajv@npm:^8.12.0": version: 8.12.0 resolution: "ajv@npm:8.12.0" dependencies: fast-deep-equal: ^3.1.1 json-schema-traverse: ^1.0.0 require-from-string: ^2.0.2 uri-js: ^4.2.2 checksum: 4dc13714e316e67537c8b31bc063f99a1d9d9a497eb4bbd55191ac0dcd5e4985bbb71570352ad6f1e76684fb6d790928f96ba3b2d4fd6e10024be9612fe3f001 languageName: node linkType: hard "ansi-regex@npm:^5.0.1": version: 5.0.1 resolution: "ansi-regex@npm:5.0.1" checksum: 2aa4bb54caf2d622f1afdad09441695af2a83aa3fe8b8afa581d205e57ed4261c183c4d3877cee25794443fde5876417d859c108078ab788d6af7e4fe52eb66b languageName: node linkType: hard "ansi-regex@npm:^6.0.1": version: 6.0.1 resolution: "ansi-regex@npm:6.0.1" checksum: 1ff8b7667cded1de4fa2c9ae283e979fc87036864317da86a2e546725f96406746411d0d85e87a2d12fa5abd715d90006de7fa4fa0477c92321ad3b4c7d4e169 languageName: node linkType: hard "ansi-styles@npm:^4.0.0": version: 4.3.0 resolution: "ansi-styles@npm:4.3.0" dependencies: color-convert: ^2.0.1 checksum: 513b44c3b2105dd14cc42a19271e80f386466c4be574bccf60b627432f9198571ebf4ab1e4c3ba17347658f4ee1711c163d574248c0c1cdc2d5917a0ad582ec4 languageName: node linkType: hard "ansi-styles@npm:^6.1.0": version: 6.2.1 resolution: "ansi-styles@npm:6.2.1" checksum: ef940f2f0ced1a6347398da88a91da7930c33ecac3c77b72c5905f8b8fe402c52e6fde304ff5347f616e27a742da3f1dc76de98f6866c69251ad0b07a66776d9 languageName: node linkType: hard "aproba@npm:^1.0.3 || ^2.0.0": version: 2.0.0 resolution: "aproba@npm:2.0.0" checksum: 5615cadcfb45289eea63f8afd064ab656006361020e1735112e346593856f87435e02d8dcc7ff0d11928bc7d425f27bc7c2a84f6c0b35ab0ff659c814c138a24 languageName: node linkType: hard "are-we-there-yet@npm:^3.0.0": version: 3.0.1 resolution: "are-we-there-yet@npm:3.0.1" dependencies: delegates: ^1.0.0 readable-stream: ^3.6.0 checksum: 52590c24860fa7173bedeb69a4c05fb573473e860197f618b9a28432ee4379049336727ae3a1f9c4cb083114601c1140cee578376164d0e651217a9843f9fe83 languageName: node linkType: hard "balanced-match@npm:^1.0.0": version: 1.0.2 resolution: "balanced-match@npm:1.0.2" checksum: 9706c088a283058a8a99e0bf91b0a2f75497f185980d9ffa8b304de1d9e58ebda7c72c07ebf01dadedaac5b2907b2c6f566f660d62bd336c3468e960403b9d65 languageName: node linkType: hard "brace-expansion@npm:^1.1.7": version: 1.1.11 resolution: "brace-expansion@npm:1.1.11" dependencies: balanced-match: ^1.0.0 concat-map: 0.0.1 checksum: faf34a7bb0c3fcf4b59c7808bc5d2a96a40988addf2e7e09dfbb67a2251800e0d14cd2bfc1aa79174f2f5095c54ff27f46fb1289fe2d77dac755b5eb3434cc07 languageName: node linkType: hard "brace-expansion@npm:^2.0.1": version: 2.0.1 resolution: "brace-expansion@npm:2.0.1" dependencies: balanced-match: ^1.0.0 checksum: a61e7cd2e8a8505e9f0036b3b6108ba5e926b4b55089eeb5550cd04a471fe216c96d4fe7e4c7f995c728c554ae20ddfc4244cad10aef255e72b62930afd233d1 languageName: node linkType: hard "cacache@npm:^17.0.0": version: 17.1.3 resolution: "cacache@npm:17.1.3" dependencies: "@npmcli/fs": ^3.1.0 fs-minipass: ^3.0.0 glob: ^10.2.2 lru-cache: ^7.7.1 minipass: ^5.0.0 minipass-collect: ^1.0.2 minipass-flush: ^1.0.5 minipass-pipeline: ^1.2.4 p-map: ^4.0.0 ssri: ^10.0.0 tar: ^6.1.11 unique-filename: ^3.0.0 checksum: 385756781e1e21af089160d89d7462b7ed9883c978e848c7075b90b73cb823680e66092d61513050164588387d2ca87dd6d910e28d64bc13a9ac82cd8580c796 languageName: node linkType: hard "chownr@npm:^2.0.0": version: 2.0.0 resolution: "chownr@npm:2.0.0" checksum: c57cf9dd0791e2f18a5ee9c1a299ae6e801ff58fee96dc8bfd0dcb4738a6ce58dd252a3605b1c93c6418fe4f9d5093b28ffbf4d66648cb2a9c67eaef9679be2f languageName: node linkType: hard "clean-stack@npm:^2.0.0": version: 2.2.0 resolution: "clean-stack@npm:2.2.0" checksum: 2ac8cd2b2f5ec986a3c743935ec85b07bc174d5421a5efc8017e1f146a1cf5f781ae962618f416352103b32c9cd7e203276e8c28241bbe946160cab16149fb68 languageName: node linkType: hard "cliui@npm:^8.0.1": version: 8.0.1 resolution: "cliui@npm:8.0.1" dependencies: string-width: ^4.2.0 strip-ansi: ^6.0.1 wrap-ansi: ^7.0.0 checksum: 79648b3b0045f2e285b76fb2e24e207c6db44323581e421c3acbd0e86454cba1b37aea976ab50195a49e7384b871e6dfb2247ad7dec53c02454ac6497394cb56 languageName: node linkType: hard "clone@npm:~2.1.2": version: 2.1.2 resolution: "clone@npm:2.1.2" checksum: aaf106e9bc025b21333e2f4c12da539b568db4925c0501a1bf4070836c9e848c892fa22c35548ce0d1132b08bbbfa17a00144fe58fccdab6fa900fec4250f67d languageName: node linkType: hard "color-convert@npm:^2.0.1": version: 2.0.1 resolution: "color-convert@npm:2.0.1" dependencies: color-name: ~1.1.4 checksum: 79e6bdb9fd479a205c71d89574fccfb22bd9053bd98c6c4d870d65c132e5e904e6034978e55b43d69fcaa7433af2016ee203ce76eeba9cfa554b373e7f7db336 languageName: node linkType: hard "color-name@npm:~1.1.4": version: 1.1.4 resolution: "color-name@npm:1.1.4" checksum: b0445859521eb4021cd0fb0cc1a75cecf67fceecae89b63f62b201cca8d345baf8b952c966862a9d9a2632987d4f6581f0ec8d957dfacece86f0a7919316f610 languageName: node linkType: hard "color-support@npm:^1.1.3": version: 1.1.3 resolution: "color-support@npm:1.1.3" bin: color-support: bin.js checksum: 9b7356817670b9a13a26ca5af1c21615463b500783b739b7634a0c2047c16cef4b2865d7576875c31c3cddf9dd621fa19285e628f20198b233a5cfdda6d0793b languageName: node linkType: hard "commander@npm:2": version: 2.20.3 resolution: "commander@npm:2.20.3" checksum: ab8c07884e42c3a8dbc5dd9592c606176c7eb5c1ca5ff274bcf907039b2c41de3626f684ea75ccf4d361ba004bbaff1f577d5384c155f3871e456bdf27becf9e languageName: node linkType: hard "commander@npm:7": version: 7.2.0 resolution: "commander@npm:7.2.0" checksum: 53501cbeee61d5157546c0bef0fedb6cdfc763a882136284bed9a07225f09a14b82d2a84e7637edfd1a679fb35ed9502fd58ef1d091e6287f60d790147f68ddc languageName: node linkType: hard "commander@npm:^10.0.1": version: 10.0.1 resolution: "commander@npm:10.0.1" checksum: 436901d64a818295803c1996cd856621a74f30b9f9e28a588e726b2b1670665bccd7c1a77007ebf328729f0139838a88a19265858a0fa7a8728c4656796db948 languageName: node linkType: hard "compute-gcd@npm:^1.2.1": version: 1.2.1 resolution: "compute-gcd@npm:1.2.1" dependencies: validate.io-array: ^1.0.3 validate.io-function: ^1.0.2 validate.io-integer-array: ^1.0.0 checksum: 51cf33b75f7c8db5142fcb99a9d84a40260993fed8e02a7ab443834186c3ab99b3fd20b30ad9075a6a9d959d69df6da74dd3be8a59c78d9f2fe780ebda8242e1 languageName: node linkType: hard "compute-lcm@npm:^1.1.2": version: 1.1.2 resolution: "compute-lcm@npm:1.1.2" dependencies: compute-gcd: ^1.2.1 validate.io-array: ^1.0.3 validate.io-function: ^1.0.2 validate.io-integer-array: ^1.0.0 checksum: d499ab57dcb48e8d0fd233b99844a06d1cc56115602c920c586e998ebba60293731f5b6976e8a1e83ae6cbfe86716f62d9432e8d94913fed8bd8352f447dc917 languageName: node linkType: hard "concat-map@npm:0.0.1": version: 0.0.1 resolution: "concat-map@npm:0.0.1" checksum: 902a9f5d8967a3e2faf138d5cb784b9979bad2e6db5357c5b21c568df4ebe62bcb15108af1b2253744844eb964fc023fbd9afbbbb6ddd0bcc204c6fb5b7bf3af languageName: node linkType: hard "console-control-strings@npm:^1.1.0": version: 1.1.0 resolution: "console-control-strings@npm:1.1.0" checksum: 8755d76787f94e6cf79ce4666f0c5519906d7f5b02d4b884cf41e11dcd759ed69c57da0670afd9236d229a46e0f9cf519db0cd829c6dca820bb5a5c3def584ed languageName: node linkType: hard "core-util-is@npm:~1.0.0": version: 1.0.3 resolution: "core-util-is@npm:1.0.3" checksum: 9de8597363a8e9b9952491ebe18167e3b36e7707569eed0ebf14f8bba773611376466ae34575bca8cfe3c767890c859c74056084738f09d4e4a6f902b2ad7d99 languageName: node linkType: hard "crelt@npm:^1.0.5": version: 1.0.6 resolution: "crelt@npm:1.0.6" checksum: dad842093371ad702afbc0531bfca2b0a8dd920b23a42f26e66dabbed9aad9acd5b9030496359545ef3937c3aced0fd4ac39f7a2d280a23ddf9eb7fdcb94a69f languageName: node linkType: hard "cross-spawn@npm:^7.0.0": version: 7.0.3 resolution: "cross-spawn@npm:7.0.3" dependencies: path-key: ^3.1.0 shebang-command: ^2.0.0 which: ^2.0.1 checksum: 671cc7c7288c3a8406f3c69a3ae2fc85555c04169e9d611def9a675635472614f1c0ed0ef80955d5b6d4e724f6ced67f0ad1bb006c2ea643488fcfef994d7f52 languageName: node linkType: hard "csstype@npm:3.0.10": version: 3.0.10 resolution: "csstype@npm:3.0.10" checksum: 20a8fa324f2b33ddf94aa7507d1b6ab3daa6f3cc308888dc50126585d7952f2471de69b2dbe0635d1fdc31223fef8e070842691877e725caf456e2378685a631 languageName: node linkType: hard "csstype@npm:^3.0.2": version: 3.1.2 resolution: "csstype@npm:3.1.2" checksum: e1a52e6c25c1314d6beef5168da704ab29c5186b877c07d822bd0806717d9a265e8493a2e35ca7e68d0f5d472d43fac1cdce70fd79fd0853dff81f3028d857b5 languageName: node linkType: hard "d3-array@npm:1 - 3, d3-array@npm:2 - 3, d3-array@npm:2.10.0 - 3, d3-array@npm:2.5.0 - 3, d3-array@npm:^3.2.2": version: 3.2.4 resolution: "d3-array@npm:3.2.4" dependencies: internmap: 1 - 2 checksum: a5976a6d6205f69208478bb44920dd7ce3e788c9dceb86b304dbe401a4bfb42ecc8b04c20facde486e9adcb488b5d1800d49393a3f81a23902b68158e12cddd0 languageName: node linkType: hard "d3-array@npm:3.2.2": version: 3.2.2 resolution: "d3-array@npm:3.2.2" dependencies: internmap: 1 - 2 checksum: 98af3db792685ceca5d9c3721efba0c567520da5532b2c7a590fd83627a598ea225d11c2cecbad404dc154120feb5ea6df0ded38f82ddf342c714cfd0c6143d1 languageName: node linkType: hard "d3-color@npm:1 - 3, d3-color@npm:^3.1.0": version: 3.1.0 resolution: "d3-color@npm:3.1.0" checksum: 4931fbfda5d7c4b5cfa283a13c91a954f86e3b69d75ce588d06cde6c3628cebfc3af2069ccf225e982e8987c612aa7948b3932163ce15eb3c11cd7c003f3ee3b languageName: node linkType: hard "d3-delaunay@npm:^6.0.2": version: 6.0.4 resolution: "d3-delaunay@npm:6.0.4" dependencies: delaunator: 5 checksum: ce6d267d5ef21a8aeadfe4606329fc80a22ab6e7748d47bc220bcc396ee8be84b77a5473033954c5ac4aa522d265ddc45d4165d30fe4787dd60a15ea66b9bbb4 languageName: node linkType: hard "d3-dispatch@npm:1 - 3": version: 3.0.1 resolution: "d3-dispatch@npm:3.0.1" checksum: fdfd4a230f46463e28e5b22a45dd76d03be9345b605e1b5dc7d18bd7ebf504e6c00ae123fd6d03e23d9e2711e01f0e14ea89cd0632545b9f0c00b924ba4be223 languageName: node linkType: hard "d3-dsv@npm:^3.0.1": version: 3.0.1 resolution: "d3-dsv@npm:3.0.1" dependencies: commander: 7 iconv-lite: 0.6 rw: 1 bin: csv2json: bin/dsv2json.js csv2tsv: bin/dsv2dsv.js dsv2dsv: bin/dsv2dsv.js dsv2json: bin/dsv2json.js json2csv: bin/json2dsv.js json2dsv: bin/json2dsv.js json2tsv: bin/json2dsv.js tsv2csv: bin/dsv2dsv.js tsv2json: bin/dsv2json.js checksum: 5fc0723647269d5dccd181d74f2265920ab368a2868b0b4f55ffa2fecdfb7814390ea28622cd61ee5d9594ab262879509059544e9f815c54fe76fbfb4ffa4c8a languageName: node linkType: hard "d3-force@npm:^3.0.0": version: 3.0.0 resolution: "d3-force@npm:3.0.0" dependencies: d3-dispatch: 1 - 3 d3-quadtree: 1 - 3 d3-timer: 1 - 3 checksum: 6c7e96438cab62fa32aeadb0ade3297b62b51f81b1b38b0a60a5ec9fd627d74090c1189654d92df2250775f31b06812342f089f1d5947de9960a635ee3581def languageName: node linkType: hard "d3-format@npm:1 - 3, d3-format@npm:^3.1.0": version: 3.1.0 resolution: "d3-format@npm:3.1.0" checksum: f345ec3b8ad3cab19bff5dead395bd9f5590628eb97a389b1dd89f0b204c7c4fc1d9520f13231c2c7cf14b7c9a8cf10f8ef15bde2befbab41454a569bd706ca2 languageName: node linkType: hard "d3-geo-projection@npm:^4.0.0": version: 4.0.0 resolution: "d3-geo-projection@npm:4.0.0" dependencies: commander: 7 d3-array: 1 - 3 d3-geo: 1.12.0 - 3 bin: geo2svg: bin/geo2svg.js geograticule: bin/geograticule.js geoproject: bin/geoproject.js geoquantize: bin/geoquantize.js geostitch: bin/geostitch.js checksum: 631422b10dd78d1047ba5a3b073148bea27721060bd7087a5fa6c053ca80445d26432e505e0e3acbd6e0d76cf577c61bf9a5db70dabbc9310c493de1f7ff736d languageName: node linkType: hard "d3-geo@npm:1.12.0 - 3, d3-geo@npm:^3.1.0": version: 3.1.0 resolution: "d3-geo@npm:3.1.0" dependencies: d3-array: 2.5.0 - 3 checksum: adf82b0c105c0c5951ae0a833d4dfc479a563791ad7938579fa14e1cffd623b469d8aa7a37dc413a327fb6ac56880f3da3f6c43d4abe3c923972dd98f34f37d1 languageName: node linkType: hard "d3-hierarchy@npm:^3.1.2": version: 3.1.2 resolution: "d3-hierarchy@npm:3.1.2" checksum: 0fd946a8c5fd4686d43d3e11bbfc2037a145fda29d2261ccd0e36f70b66af6d7638e2c0c7112124d63fc3d3127197a00a6aecf676bd5bd392a94d7235a214263 languageName: node linkType: hard "d3-interpolate@npm:1.2.0 - 3, d3-interpolate@npm:^3.0.1": version: 3.0.1 resolution: "d3-interpolate@npm:3.0.1" dependencies: d3-color: 1 - 3 checksum: a42ba314e295e95e5365eff0f604834e67e4a3b3c7102458781c477bd67e9b24b6bb9d8e41ff5521050a3f2c7c0c4bbbb6e187fd586daa3980943095b267e78b languageName: node linkType: hard "d3-path@npm:^3.1.0": version: 3.1.0 resolution: "d3-path@npm:3.1.0" checksum: 2306f1bd9191e1eac895ec13e3064f732a85f243d6e627d242a313f9777756838a2215ea11562f0c7630c7c3b16a19ec1fe0948b1c82f3317fac55882f6ee5d8 languageName: node linkType: hard "d3-quadtree@npm:1 - 3": version: 3.0.1 resolution: "d3-quadtree@npm:3.0.1" checksum: 5469d462763811475f34a7294d984f3eb100515b0585ca5b249656f6b1a6e99b20056a2d2e463cc9944b888896d2b1d07859c50f9c0cf23438df9cd2e3146066 languageName: node linkType: hard "d3-scale@npm:^4.0.2": version: 4.0.2 resolution: "d3-scale@npm:4.0.2" dependencies: d3-array: 2.10.0 - 3 d3-format: 1 - 3 d3-interpolate: 1.2.0 - 3 d3-time: 2.1.1 - 3 d3-time-format: 2 - 4 checksum: a9c770d283162c3bd11477c3d9d485d07f8db2071665f1a4ad23eec3e515e2cefbd369059ec677c9ac849877d1a765494e90e92051d4f21111aa56791c98729e languageName: node linkType: hard "d3-shape@npm:^3.2.0": version: 3.2.0 resolution: "d3-shape@npm:3.2.0" dependencies: d3-path: ^3.1.0 checksum: de2af5fc9a93036a7b68581ca0bfc4aca2d5a328aa7ba7064c11aedd44d24f310c20c40157cb654359d4c15c3ef369f95ee53d71221017276e34172c7b719cfa languageName: node linkType: hard "d3-time-format@npm:2 - 4, d3-time-format@npm:^4.1.0": version: 4.1.0 resolution: "d3-time-format@npm:4.1.0" dependencies: d3-time: 1 - 3 checksum: 7342bce28355378152bbd4db4e275405439cabba082d9cd01946d40581140481c8328456d91740b0fe513c51ec4a467f4471ffa390c7e0e30ea30e9ec98fcdf4 languageName: node linkType: hard "d3-time@npm:1 - 3, d3-time@npm:2.1.1 - 3, d3-time@npm:^3.1.0": version: 3.1.0 resolution: "d3-time@npm:3.1.0" dependencies: d3-array: 2 - 3 checksum: 613b435352a78d9f31b7f68540788186d8c331b63feca60ad21c88e9db1989fe888f97f242322ebd6365e45ec3fb206a4324cd4ca0dfffa1d9b5feb856ba00a7 languageName: node linkType: hard "d3-timer@npm:1 - 3, d3-timer@npm:^3.0.1": version: 3.0.1 resolution: "d3-timer@npm:3.0.1" checksum: 1cfddf86d7bca22f73f2c427f52dfa35c49f50d64e187eb788dcad6e927625c636aa18ae4edd44d084eb9d1f81d8ca4ec305dae7f733c15846a824575b789d73 languageName: node linkType: hard "debug@npm:4, debug@npm:^4.1.0, debug@npm:^4.3.3": version: 4.3.4 resolution: "debug@npm:4.3.4" dependencies: ms: 2.1.2 peerDependenciesMeta: supports-color: optional: true checksum: 3dbad3f94ea64f34431a9cbf0bafb61853eda57bff2880036153438f50fb5a84f27683ba0d8e5426bf41a8c6ff03879488120cf5b3a761e77953169c0600a708 languageName: node linkType: hard "debug@npm:^2.6.9": version: 2.6.9 resolution: "debug@npm:2.6.9" dependencies: ms: 2.0.0 checksum: d2f51589ca66df60bf36e1fa6e4386b318c3f1e06772280eea5b1ae9fd3d05e9c2b7fd8a7d862457d00853c75b00451aa2d7459b924629ee385287a650f58fe6 languageName: node linkType: hard "deepmerge@npm:^4.2.2": version: 4.3.1 resolution: "deepmerge@npm:4.3.1" checksum: 2024c6a980a1b7128084170c4cf56b0fd58a63f2da1660dcfe977415f27b17dbe5888668b59d0b063753f3220719d5e400b7f113609489c90160bb9a5518d052 languageName: node linkType: hard "delaunator@npm:5": version: 5.0.0 resolution: "delaunator@npm:5.0.0" dependencies: robust-predicates: ^3.0.0 checksum: d6764188442b7f7c6bcacebd96edc00e35f542a96f1af3ef600e586bfb9849a3682c489c0ab423440c90bc4c7cac77f28761babff76fa29e193e1cf50a95b860 languageName: node linkType: hard "delegates@npm:^1.0.0": version: 1.0.0 resolution: "delegates@npm:1.0.0" checksum: a51744d9b53c164ba9c0492471a1a2ffa0b6727451bdc89e31627fdf4adda9d51277cfcbfb20f0a6f08ccb3c436f341df3e92631a3440226d93a8971724771fd languageName: node linkType: hard "depd@npm:^2.0.0": version: 2.0.0 resolution: "depd@npm:2.0.0" checksum: abbe19c768c97ee2eed6282d8ce3031126662252c58d711f646921c9623f9052e3e1906443066beec1095832f534e57c523b7333f8e7e0d93051ab6baef5ab3a languageName: node linkType: hard "dom-serializer@npm:^1.0.1": version: 1.4.1 resolution: "dom-serializer@npm:1.4.1" dependencies: domelementtype: ^2.0.1 domhandler: ^4.2.0 entities: ^2.0.0 checksum: fbb0b01f87a8a2d18e6e5a388ad0f7ec4a5c05c06d219377da1abc7bb0f674d804f4a8a94e3f71ff15f6cb7dcfc75704a54b261db672b9b3ab03da6b758b0b22 languageName: node linkType: hard "domelementtype@npm:^2.0.1, domelementtype@npm:^2.2.0": version: 2.3.0 resolution: "domelementtype@npm:2.3.0" checksum: ee837a318ff702622f383409d1f5b25dd1024b692ef64d3096ff702e26339f8e345820f29a68bcdcea8cfee3531776b3382651232fbeae95612d6f0a75efb4f6 languageName: node linkType: hard "domhandler@npm:^4.0.0, domhandler@npm:^4.2.0": version: 4.3.1 resolution: "domhandler@npm:4.3.1" dependencies: domelementtype: ^2.2.0 checksum: 4c665ceed016e1911bf7d1dadc09dc888090b64dee7851cccd2fcf5442747ec39c647bb1cb8c8919f8bbdd0f0c625a6bafeeed4b2d656bbecdbae893f43ffaaa languageName: node linkType: hard "domutils@npm:^2.5.2": version: 2.8.0 resolution: "domutils@npm:2.8.0" dependencies: dom-serializer: ^1.0.1 domelementtype: ^2.2.0 domhandler: ^4.2.0 checksum: abf7434315283e9aadc2a24bac0e00eab07ae4313b40cc239f89d84d7315ebdfd2fb1b5bf750a96bc1b4403d7237c7b2ebf60459be394d625ead4ca89b934391 languageName: node linkType: hard "eastasianwidth@npm:^0.2.0": version: 0.2.0 resolution: "eastasianwidth@npm:0.2.0" checksum: 7d00d7cd8e49b9afa762a813faac332dee781932d6f2c848dc348939c4253f1d4564341b7af1d041853bc3f32c2ef141b58e0a4d9862c17a7f08f68df1e0f1ed languageName: node linkType: hard "emoji-regex@npm:^8.0.0": version: 8.0.0 resolution: "emoji-regex@npm:8.0.0" checksum: d4c5c39d5a9868b5fa152f00cada8a936868fd3367f33f71be515ecee4c803132d11b31a6222b2571b1e5f7e13890156a94880345594d0ce7e3c9895f560f192 languageName: node linkType: hard "emoji-regex@npm:^9.2.2": version: 9.2.2 resolution: "emoji-regex@npm:9.2.2" checksum: 8487182da74aabd810ac6d6f1994111dfc0e331b01271ae01ec1eb0ad7b5ecc2bbbbd2f053c05cb55a1ac30449527d819bbfbf0e3de1023db308cbcb47f86601 languageName: node linkType: hard "encoding@npm:^0.1.13": version: 0.1.13 resolution: "encoding@npm:0.1.13" dependencies: iconv-lite: ^0.6.2 checksum: bb98632f8ffa823996e508ce6a58ffcf5856330fde839ae42c9e1f436cc3b5cc651d4aeae72222916545428e54fd0f6aa8862fd8d25bdbcc4589f1e3f3715e7f languageName: node linkType: hard "entities@npm:^2.0.0": version: 2.2.0 resolution: "entities@npm:2.2.0" checksum: 19010dacaf0912c895ea262b4f6128574f9ccf8d4b3b65c7e8334ad0079b3706376360e28d8843ff50a78aabcb8f08f0a32dbfacdc77e47ed77ca08b713669b3 languageName: node linkType: hard "env-paths@npm:^2.2.0": version: 2.2.1 resolution: "env-paths@npm:2.2.1" checksum: 65b5df55a8bab92229ab2b40dad3b387fad24613263d103a97f91c9fe43ceb21965cd3392b1ccb5d77088021e525c4e0481adb309625d0cb94ade1d1fb8dc17e languageName: node linkType: hard "err-code@npm:^2.0.2": version: 2.0.3 resolution: "err-code@npm:2.0.3" checksum: 8b7b1be20d2de12d2255c0bc2ca638b7af5171142693299416e6a9339bd7d88fc8d7707d913d78e0993176005405a236b066b45666b27b797252c771156ace54 languageName: node linkType: hard "escalade@npm:^3.1.1": version: 3.1.1 resolution: "escalade@npm:3.1.1" checksum: a3e2a99f07acb74b3ad4989c48ca0c3140f69f923e56d0cba0526240ee470b91010f9d39001f2a4a313841d237ede70a729e92125191ba5d21e74b106800b133 languageName: node linkType: hard "escape-string-regexp@npm:^4.0.0": version: 4.0.0 resolution: "escape-string-regexp@npm:4.0.0" checksum: 98b48897d93060f2322108bf29db0feba7dd774be96cd069458d1453347b25ce8682ecc39859d4bca2203cc0ab19c237bcc71755eff49a0f8d90beadeeba5cc5 languageName: node linkType: hard "exponential-backoff@npm:^3.1.1": version: 3.1.1 resolution: "exponential-backoff@npm:3.1.1" checksum: 3d21519a4f8207c99f7457287291316306255a328770d320b401114ec8481986e4e467e854cb9914dd965e0a1ca810a23ccb559c642c88f4c7f55c55778a9b48 languageName: node linkType: hard "fast-deep-equal@npm:^3.1.1, fast-deep-equal@npm:~3.1.3": version: 3.1.3 resolution: "fast-deep-equal@npm:3.1.3" checksum: e21a9d8d84f53493b6aa15efc9cfd53dd5b714a1f23f67fb5dc8f574af80df889b3bce25dc081887c6d25457cce704e636395333abad896ccdec03abaf1f3f9d languageName: node linkType: hard "fast-json-stable-stringify@npm:~2.1.0": version: 2.1.0 resolution: "fast-json-stable-stringify@npm:2.1.0" checksum: b191531e36c607977e5b1c47811158733c34ccb3bfde92c44798929e9b4154884378536d26ad90dfecd32e1ffc09c545d23535ad91b3161a27ddbb8ebe0cbecb languageName: node linkType: hard "foreground-child@npm:^3.1.0": version: 3.1.1 resolution: "foreground-child@npm:3.1.1" dependencies: cross-spawn: ^7.0.0 signal-exit: ^4.0.1 checksum: 139d270bc82dc9e6f8bc045fe2aae4001dc2472157044fdfad376d0a3457f77857fa883c1c8b21b491c6caade9a926a4bed3d3d2e8d3c9202b151a4cbbd0bcd5 languageName: node linkType: hard "free-style@npm:3.1.0": version: 3.1.0 resolution: "free-style@npm:3.1.0" checksum: 949258ae315deda48cac93ecd5f9a80f36e8a027e19ce2103598dc8d5ab60e963bbad5444b2a4990ddb746798dd188896f430285cf484afbf2141f7d75a191d8 languageName: node linkType: hard "fs-extra@npm:^10.1.0": version: 10.1.0 resolution: "fs-extra@npm:10.1.0" dependencies: graceful-fs: ^4.2.0 jsonfile: ^6.0.1 universalify: ^2.0.0 checksum: dc94ab37096f813cc3ca12f0f1b5ad6744dfed9ed21e953d72530d103cea193c2f81584a39e9dee1bea36de5ee66805678c0dddc048e8af1427ac19c00fffc50 languageName: node linkType: hard "fs-minipass@npm:^2.0.0": version: 2.1.0 resolution: "fs-minipass@npm:2.1.0" dependencies: minipass: ^3.0.0 checksum: 1b8d128dae2ac6cc94230cc5ead341ba3e0efaef82dab46a33d171c044caaa6ca001364178d42069b2809c35a1c3c35079a32107c770e9ffab3901b59af8c8b1 languageName: node linkType: hard "fs-minipass@npm:^3.0.0": version: 3.0.2 resolution: "fs-minipass@npm:3.0.2" dependencies: minipass: ^5.0.0 checksum: e9cc0e1f2d01c6f6f62f567aee59530aba65c6c7b2ae88c5027bc34c711ebcfcfaefd0caf254afa6adfe7d1fba16bc2537508a6235196bac7276747d078aef0a languageName: node linkType: hard "fs.realpath@npm:^1.0.0": version: 1.0.0 resolution: "fs.realpath@npm:1.0.0" checksum: 99ddea01a7e75aa276c250a04eedeffe5662bce66c65c07164ad6264f9de18fb21be9433ead460e54cff20e31721c811f4fb5d70591799df5f85dce6d6746fd0 languageName: node linkType: hard "fsevents@npm:2.3.2": version: 2.3.2 resolution: "fsevents@npm:2.3.2" dependencies: node-gyp: latest checksum: 97ade64e75091afee5265e6956cb72ba34db7819b4c3e94c431d4be2b19b8bb7a2d4116da417950c3425f17c8fe693d25e20212cac583ac1521ad066b77ae31f conditions: os=darwin languageName: node linkType: hard "fsevents@patch:fsevents@2.3.2#~builtin": version: 2.3.2 resolution: "fsevents@patch:fsevents@npm%3A2.3.2#~builtin::version=2.3.2&hash=df0bf1" dependencies: node-gyp: latest conditions: os=darwin languageName: node linkType: hard "gauge@npm:^4.0.3": version: 4.0.4 resolution: "gauge@npm:4.0.4" dependencies: aproba: ^1.0.3 || ^2.0.0 color-support: ^1.1.3 console-control-strings: ^1.1.0 has-unicode: ^2.0.1 signal-exit: ^3.0.7 string-width: ^4.2.3 strip-ansi: ^6.0.1 wide-align: ^1.1.5 checksum: 788b6bfe52f1dd8e263cda800c26ac0ca2ff6de0b6eee2fe0d9e3abf15e149b651bd27bf5226be10e6e3edb5c4e5d5985a5a1a98137e7a892f75eff76467ad2d languageName: node linkType: hard "get-caller-file@npm:^2.0.5": version: 2.0.5 resolution: "get-caller-file@npm:2.0.5" checksum: b9769a836d2a98c3ee734a88ba712e62703f1df31b94b784762c433c27a386dd6029ff55c2a920c392e33657d80191edbf18c61487e198844844516f843496b9 languageName: node linkType: hard "glob@npm:^10.2.2": version: 10.2.7 resolution: "glob@npm:10.2.7" dependencies: foreground-child: ^3.1.0 jackspeak: ^2.0.3 minimatch: ^9.0.1 minipass: ^5.0.0 || ^6.0.2 path-scurry: ^1.7.0 bin: glob: dist/cjs/src/bin.js checksum: 555205a74607d6f8d9874ba888924b305b5ea1abfaa2e9ccb11ac713d040aac7edbf7d8702a2f4a1cd81b2d7666412170ce7ef061d33cddde189dae8c1a1a054 languageName: node linkType: hard "glob@npm:^7.1.3, glob@npm:^7.1.4": version: 7.2.3 resolution: "glob@npm:7.2.3" dependencies: fs.realpath: ^1.0.0 inflight: ^1.0.4 inherits: 2 minimatch: ^3.1.1 once: ^1.3.0 path-is-absolute: ^1.0.0 checksum: 29452e97b38fa704dabb1d1045350fb2467cf0277e155aa9ff7077e90ad81d1ea9d53d3ee63bd37c05b09a065e90f16aec4a65f5b8de401d1dac40bc5605d133 languageName: node linkType: hard "graceful-fs@npm:^4.1.6, graceful-fs@npm:^4.2.0, graceful-fs@npm:^4.2.6": version: 4.2.11 resolution: "graceful-fs@npm:4.2.11" checksum: ac85f94da92d8eb6b7f5a8b20ce65e43d66761c55ce85ac96df6865308390da45a8d3f0296dd3a663de65d30ba497bd46c696cc1e248c72b13d6d567138a4fc7 languageName: node linkType: hard "has-unicode@npm:^2.0.1": version: 2.0.1 resolution: "has-unicode@npm:2.0.1" checksum: 1eab07a7436512db0be40a710b29b5dc21fa04880b7f63c9980b706683127e3c1b57cb80ea96d47991bdae2dfe479604f6a1ba410106ee1046a41d1bd0814400 languageName: node linkType: hard "htmlparser2@npm:^6.0.0": version: 6.1.0 resolution: "htmlparser2@npm:6.1.0" dependencies: domelementtype: ^2.0.1 domhandler: ^4.0.0 domutils: ^2.5.2 entities: ^2.0.0 checksum: 81a7b3d9c3bb9acb568a02fc9b1b81ffbfa55eae7f1c41ae0bf840006d1dbf54cb3aa245b2553e2c94db674840a9f0fdad7027c9a9d01a062065314039058c4e languageName: node linkType: hard "http-cache-semantics@npm:^4.1.1": version: 4.1.1 resolution: "http-cache-semantics@npm:4.1.1" checksum: 83ac0bc60b17a3a36f9953e7be55e5c8f41acc61b22583060e8dedc9dd5e3607c823a88d0926f9150e571f90946835c7fe150732801010845c72cd8bbff1a236 languageName: node linkType: hard "http-proxy-agent@npm:^5.0.0": version: 5.0.0 resolution: "http-proxy-agent@npm:5.0.0" dependencies: "@tootallnate/once": 2 agent-base: 6 debug: 4 checksum: e2ee1ff1656a131953839b2a19cd1f3a52d97c25ba87bd2559af6ae87114abf60971e498021f9b73f9fd78aea8876d1fb0d4656aac8a03c6caa9fc175f22b786 languageName: node linkType: hard "https-proxy-agent@npm:^5.0.0": version: 5.0.1 resolution: "https-proxy-agent@npm:5.0.1" dependencies: agent-base: 6 debug: 4 checksum: 571fccdf38184f05943e12d37d6ce38197becdd69e58d03f43637f7fa1269cf303a7d228aa27e5b27bbd3af8f09fd938e1c91dcfefff2df7ba77c20ed8dfc765 languageName: node linkType: hard "humanize-ms@npm:^1.2.1": version: 1.2.1 resolution: "humanize-ms@npm:1.2.1" dependencies: ms: ^2.0.0 checksum: 9c7a74a2827f9294c009266c82031030eae811ca87b0da3dceb8d6071b9bde22c9f3daef0469c3c533cc67a97d8a167cd9fc0389350e5f415f61a79b171ded16 languageName: node linkType: hard "iconv-lite@npm:0.6, iconv-lite@npm:^0.6.2": version: 0.6.3 resolution: "iconv-lite@npm:0.6.3" dependencies: safer-buffer: ">= 2.1.2 < 3.0.0" checksum: 3f60d47a5c8fc3313317edfd29a00a692cc87a19cac0159e2ce711d0ebc9019064108323b5e493625e25594f11c6236647d8e256fbe7a58f4a3b33b89e6d30bf languageName: node linkType: hard "imurmurhash@npm:^0.1.4": version: 0.1.4 resolution: "imurmurhash@npm:0.1.4" checksum: 7cae75c8cd9a50f57dadd77482359f659eaebac0319dd9368bcd1714f55e65badd6929ca58569da2b6494ef13fdd5598cd700b1eba23f8b79c5f19d195a3ecf7 languageName: node linkType: hard "indent-string@npm:^4.0.0": version: 4.0.0 resolution: "indent-string@npm:4.0.0" checksum: 824cfb9929d031dabf059bebfe08cf3137365e112019086ed3dcff6a0a7b698cb80cf67ccccde0e25b9e2d7527aa6cc1fed1ac490c752162496caba3e6699612 languageName: node linkType: hard "inflight@npm:^1.0.4": version: 1.0.6 resolution: "inflight@npm:1.0.6" dependencies: once: ^1.3.0 wrappy: 1 checksum: f4f76aa072ce19fae87ce1ef7d221e709afb59d445e05d47fba710e85470923a75de35bfae47da6de1b18afc3ce83d70facf44cfb0aff89f0a3f45c0a0244dfd languageName: node linkType: hard "inherits@npm:2, inherits@npm:^2.0.3, inherits@npm:~2.0.3": version: 2.0.4 resolution: "inherits@npm:2.0.4" checksum: 4a48a733847879d6cf6691860a6b1e3f0f4754176e4d71494c41f3475553768b10f84b5ce1d40fbd0e34e6bfbb864ee35858ad4dd2cf31e02fc4a154b724d7f1 languageName: node linkType: hard "inherits@npm:2.0.3": version: 2.0.3 resolution: "inherits@npm:2.0.3" checksum: 78cb8d7d850d20a5e9a7f3620db31483aa00ad5f722ce03a55b110e5a723539b3716a3b463e2b96ce3fe286f33afc7c131fa2f91407528ba80cea98a7545d4c0 languageName: node linkType: hard "internmap@npm:1 - 2": version: 2.0.3 resolution: "internmap@npm:2.0.3" checksum: 7ca41ec6aba8f0072fc32fa8a023450a9f44503e2d8e403583c55714b25efd6390c38a87161ec456bf42d7bc83aab62eb28f5aef34876b1ac4e60693d5e1d241 languageName: node linkType: hard "ip@npm:^2.0.0": version: 2.0.0 resolution: "ip@npm:2.0.0" checksum: cfcfac6b873b701996d71ec82a7dd27ba92450afdb421e356f44044ed688df04567344c36cbacea7d01b1c39a4c732dc012570ebe9bebfb06f27314bca625349 languageName: node linkType: hard "is-fullwidth-code-point@npm:^3.0.0": version: 3.0.0 resolution: "is-fullwidth-code-point@npm:3.0.0" checksum: 44a30c29457c7fb8f00297bce733f0a64cd22eca270f83e58c105e0d015e45c019491a4ab2faef91ab51d4738c670daff901c799f6a700e27f7314029e99e348 languageName: node linkType: hard "is-lambda@npm:^1.0.1": version: 1.0.1 resolution: "is-lambda@npm:1.0.1" checksum: 93a32f01940220532e5948538699ad610d5924ac86093fcee83022252b363eb0cc99ba53ab084a04e4fb62bf7b5731f55496257a4c38adf87af9c4d352c71c35 languageName: node linkType: hard "is-plain-object@npm:^5.0.0": version: 5.0.0 resolution: "is-plain-object@npm:5.0.0" checksum: e32d27061eef62c0847d303125440a38660517e586f2f3db7c9d179ae5b6674ab0f469d519b2e25c147a1a3bc87156d0d5f4d8821e0ce4a9ee7fe1fcf11ce45c languageName: node linkType: hard "isarray@npm:~1.0.0": version: 1.0.0 resolution: "isarray@npm:1.0.0" checksum: f032df8e02dce8ec565cf2eb605ea939bdccea528dbcf565cdf92bfa2da9110461159d86a537388ef1acef8815a330642d7885b29010e8f7eac967c9993b65ab languageName: node linkType: hard "isexe@npm:^2.0.0": version: 2.0.0 resolution: "isexe@npm:2.0.0" checksum: 26bf6c5480dda5161c820c5b5c751ae1e766c587b1f951ea3fcfc973bafb7831ae5b54a31a69bd670220e42e99ec154475025a468eae58ea262f813fdc8d1c62 languageName: node linkType: hard "isomorphic.js@npm:^0.2.4": version: 0.2.5 resolution: "isomorphic.js@npm:0.2.5" checksum: d8d1b083f05f3c337a06628b982ac3ce6db953bbef14a9de8ad49131250c3592f864b73c12030fdc9ef138ce97b76ef55c7d96a849561ac215b1b4b9d301c8e9 languageName: node linkType: hard "jackspeak@npm:^2.0.3": version: 2.2.1 resolution: "jackspeak@npm:2.2.1" dependencies: "@isaacs/cliui": ^8.0.2 "@pkgjs/parseargs": ^0.11.0 dependenciesMeta: "@pkgjs/parseargs": optional: true checksum: e29291c0d0f280a063fa18fbd1e891ab8c2d7519fd34052c0ebde38538a15c603140d60c2c7f432375ff7ee4c5f1c10daa8b2ae19a97c3d4affe308c8360c1df languageName: node linkType: hard "js-tokens@npm:^3.0.0 || ^4.0.0": version: 4.0.0 resolution: "js-tokens@npm:4.0.0" checksum: 8a95213a5a77deb6cbe94d86340e8d9ace2b93bc367790b260101d2f36a2eaf4e4e22d9fa9cf459b38af3a32fb4190e638024cf82ec95ef708680e405ea7cc78 languageName: node linkType: hard "json-schema-compare@npm:^0.2.2": version: 0.2.2 resolution: "json-schema-compare@npm:0.2.2" dependencies: lodash: ^4.17.4 checksum: dd6f2173857c8e3b77d6ebdfa05bd505bba5b08709ab46b532722f5d1c33b5fee1fc8f3c97d0c0d011db25f9f3b0baf7ab783bb5f55c32abd9f1201760e43c2c languageName: node linkType: hard "json-schema-merge-allof@npm:^0.8.1": version: 0.8.1 resolution: "json-schema-merge-allof@npm:0.8.1" dependencies: compute-lcm: ^1.1.2 json-schema-compare: ^0.2.2 lodash: ^4.17.20 checksum: 82700f6ac77351959138d6b153d77375a8c29cf48d907241b85c8292dd77aabd8cb816400f2b0d17062c4ccc8893832ec4f664ab9c814927ef502e7a595ea873 languageName: node linkType: hard "json-schema-traverse@npm:^1.0.0": version: 1.0.0 resolution: "json-schema-traverse@npm:1.0.0" checksum: 02f2f466cdb0362558b2f1fd5e15cce82ef55d60cd7f8fa828cf35ba74330f8d767fcae5c5c2adb7851fa811766c694b9405810879bc4e1ddd78a7c0e03658ad languageName: node linkType: hard "json-stringify-pretty-compact@npm:~3.0.0": version: 3.0.0 resolution: "json-stringify-pretty-compact@npm:3.0.0" checksum: 01ab5c5c8260299414868d96db97f53aef93c290fe469edd9a1363818e795006e01c952fa2fd7b47cbbab506d5768998eccc25e1da4fa2ccfebd1788c6098791 languageName: node linkType: hard "json5@npm:^2.2.3": version: 2.2.3 resolution: "json5@npm:2.2.3" bin: json5: lib/cli.js checksum: 2a7436a93393830bce797d4626275152e37e877b265e94ca69c99e3d20c2b9dab021279146a39cdb700e71b2dd32a4cebd1514cd57cee102b1af906ce5040349 languageName: node linkType: hard "jsonfile@npm:^6.0.1": version: 6.1.0 resolution: "jsonfile@npm:6.1.0" dependencies: graceful-fs: ^4.1.6 universalify: ^2.0.0 dependenciesMeta: graceful-fs: optional: true checksum: 7af3b8e1ac8fe7f1eccc6263c6ca14e1966fcbc74b618d3c78a0a2075579487547b94f72b7a1114e844a1e15bb00d440e5d1720bfc4612d790a6f285d5ea8354 languageName: node linkType: hard "jsonpointer@npm:^5.0.1": version: 5.0.1 resolution: "jsonpointer@npm:5.0.1" checksum: 0b40f712900ad0c846681ea2db23b6684b9d5eedf55807b4708c656f5894b63507d0e28ae10aa1bddbea551241035afe62b6df0800fc94c2e2806a7f3adecd7c languageName: node linkType: hard "lib0@npm:^0.2.42, lib0@npm:^0.2.74": version: 0.2.78 resolution: "lib0@npm:0.2.78" dependencies: isomorphic.js: ^0.2.4 bin: 0gentesthtml: bin/gentesthtml.js 0serve: bin/0serve.js checksum: a9c90a9228e10e581bf416f4ecade967687d67e6ea3e822ef69e2628a77a2a0254ef7e2eb7e555d412f9e9467049b7fb760c079878f9a934dd85d2646a53d172 languageName: node linkType: hard "lodash-es@npm:^4.17.21": version: 4.17.21 resolution: "lodash-es@npm:4.17.21" checksum: 05cbffad6e2adbb331a4e16fbd826e7faee403a1a04873b82b42c0f22090f280839f85b95393f487c1303c8a3d2a010048bf06151a6cbe03eee4d388fb0a12d2 languageName: node linkType: hard "lodash.escape@npm:^4.0.1": version: 4.0.1 resolution: "lodash.escape@npm:4.0.1" checksum: fcb54f457497256964d619d5cccbd80a961916fca60df3fe0fa3e7f052715c2944c0ed5aefb4f9e047d127d44aa2d55555f3350cb42c6549e9e293fb30b41e7f languageName: node linkType: hard "lodash.mergewith@npm:^4.6.1": version: 4.6.2 resolution: "lodash.mergewith@npm:4.6.2" checksum: a6db2a9339752411f21b956908c404ec1e088e783a65c8b29e30ae5b3b6384f82517662d6f425cc97c2070b546cc2c7daaa8d33f78db7b6e9be06cd834abdeb8 languageName: node linkType: hard "lodash@npm:^4.17.20, lodash@npm:^4.17.21, lodash@npm:^4.17.4": version: 4.17.21 resolution: "lodash@npm:4.17.21" checksum: eb835a2e51d381e561e508ce932ea50a8e5a68f4ebdd771ea240d3048244a8d13658acbd502cd4829768c56f2e16bdd4340b9ea141297d472517b83868e677f7 languageName: node linkType: hard "loose-envify@npm:^1.1.0, loose-envify@npm:^1.4.0": version: 1.4.0 resolution: "loose-envify@npm:1.4.0" dependencies: js-tokens: ^3.0.0 || ^4.0.0 bin: loose-envify: cli.js checksum: 6517e24e0cad87ec9888f500c5b5947032cdfe6ef65e1c1936a0c48a524b81e65542c9c3edc91c97d5bddc806ee2a985dbc79be89215d613b1de5db6d1cfe6f4 languageName: node linkType: hard "lru-cache@npm:^6.0.0": version: 6.0.0 resolution: "lru-cache@npm:6.0.0" dependencies: yallist: ^4.0.0 checksum: f97f499f898f23e4585742138a22f22526254fdba6d75d41a1c2526b3b6cc5747ef59c5612ba7375f42aca4f8461950e925ba08c991ead0651b4918b7c978297 languageName: node linkType: hard "lru-cache@npm:^7.7.1": version: 7.18.3 resolution: "lru-cache@npm:7.18.3" checksum: e550d772384709deea3f141af34b6d4fa392e2e418c1498c078de0ee63670f1f46f5eee746e8ef7e69e1c895af0d4224e62ee33e66a543a14763b0f2e74c1356 languageName: node linkType: hard "lru-cache@npm:^9.1.1": version: 9.1.2 resolution: "lru-cache@npm:9.1.2" checksum: d3415634be3908909081fc4c56371a8d562d9081eba70543d86871b978702fffd0e9e362b83921b27a29ae2b37b90f55675aad770a54ac83bb3e4de5049d4b15 languageName: node linkType: hard "make-fetch-happen@npm:^11.0.3": version: 11.1.1 resolution: "make-fetch-happen@npm:11.1.1" dependencies: agentkeepalive: ^4.2.1 cacache: ^17.0.0 http-cache-semantics: ^4.1.1 http-proxy-agent: ^5.0.0 https-proxy-agent: ^5.0.0 is-lambda: ^1.0.1 lru-cache: ^7.7.1 minipass: ^5.0.0 minipass-fetch: ^3.0.0 minipass-flush: ^1.0.5 minipass-pipeline: ^1.2.4 negotiator: ^0.6.3 promise-retry: ^2.0.1 socks-proxy-agent: ^7.0.0 ssri: ^10.0.0 checksum: 7268bf274a0f6dcf0343829489a4506603ff34bd0649c12058753900b0eb29191dce5dba12680719a5d0a983d3e57810f594a12f3c18494e93a1fbc6348a4540 languageName: node linkType: hard "markdown-to-jsx@npm:^7.2.1": version: 7.2.1 resolution: "markdown-to-jsx@npm:7.2.1" peerDependencies: react: ">= 0.14.0" checksum: 0c8c715229044401ea48c2fc26c2554464100074959dafacdd9e4a0e849f0a190b02f39edb373bbdd95e38b8f910074b83b63d08752b8ae6be6ddcfb40ea50a0 languageName: node linkType: hard "minimatch@npm:^3.1.1": version: 3.1.2 resolution: "minimatch@npm:3.1.2" dependencies: brace-expansion: ^1.1.7 checksum: c154e566406683e7bcb746e000b84d74465b3a832c45d59912b9b55cd50dee66e5c4b1e5566dba26154040e51672f9aa450a9aef0c97cfc7336b78b7afb9540a languageName: node linkType: hard "minimatch@npm:^9.0.1": version: 9.0.1 resolution: "minimatch@npm:9.0.1" dependencies: brace-expansion: ^2.0.1 checksum: 97f5f5284bb57dc65b9415dec7f17a0f6531a33572193991c60ff18450dcfad5c2dad24ffeaf60b5261dccd63aae58cc3306e2209d57e7f88c51295a532d8ec3 languageName: node linkType: hard "minimist@npm:^1.2.0, minimist@npm:~1.2.0": version: 1.2.8 resolution: "minimist@npm:1.2.8" checksum: 75a6d645fb122dad29c06a7597bddea977258957ed88d7a6df59b5cd3fe4a527e253e9bbf2e783e4b73657f9098b96a5fe96ab8a113655d4109108577ecf85b0 languageName: node linkType: hard "minipass-collect@npm:^1.0.2": version: 1.0.2 resolution: "minipass-collect@npm:1.0.2" dependencies: minipass: ^3.0.0 checksum: 14df761028f3e47293aee72888f2657695ec66bd7d09cae7ad558da30415fdc4752bbfee66287dcc6fd5e6a2fa3466d6c484dc1cbd986525d9393b9523d97f10 languageName: node linkType: hard "minipass-fetch@npm:^3.0.0": version: 3.0.3 resolution: "minipass-fetch@npm:3.0.3" dependencies: encoding: ^0.1.13 minipass: ^5.0.0 minipass-sized: ^1.0.3 minizlib: ^2.1.2 dependenciesMeta: encoding: optional: true checksum: af5ab2552a16fcf505d35fd7ffb84b57f4a0eeb269e6e1d9a2a75824dda48b36e527083250b7cca4a4def21d9544e2ade441e4730e233c0bc2133f6abda31e18 languageName: node linkType: hard "minipass-flush@npm:^1.0.5": version: 1.0.5 resolution: "minipass-flush@npm:1.0.5" dependencies: minipass: ^3.0.0 checksum: 56269a0b22bad756a08a94b1ffc36b7c9c5de0735a4dd1ab2b06c066d795cfd1f0ac44a0fcae13eece5589b908ecddc867f04c745c7009be0b566421ea0944cf languageName: node linkType: hard "minipass-pipeline@npm:^1.2.4": version: 1.2.4 resolution: "minipass-pipeline@npm:1.2.4" dependencies: minipass: ^3.0.0 checksum: b14240dac0d29823c3d5911c286069e36d0b81173d7bdf07a7e4a91ecdef92cdff4baaf31ea3746f1c61e0957f652e641223970870e2353593f382112257971b languageName: node linkType: hard "minipass-sized@npm:^1.0.3": version: 1.0.3 resolution: "minipass-sized@npm:1.0.3" dependencies: minipass: ^3.0.0 checksum: 79076749fcacf21b5d16dd596d32c3b6bf4d6e62abb43868fac21674078505c8b15eaca4e47ed844985a4514854f917d78f588fcd029693709417d8f98b2bd60 languageName: node linkType: hard "minipass@npm:^3.0.0": version: 3.3.6 resolution: "minipass@npm:3.3.6" dependencies: yallist: ^4.0.0 checksum: a30d083c8054cee83cdcdc97f97e4641a3f58ae743970457b1489ce38ee1167b3aaf7d815cd39ec7a99b9c40397fd4f686e83750e73e652b21cb516f6d845e48 languageName: node linkType: hard "minipass@npm:^5.0.0": version: 5.0.0 resolution: "minipass@npm:5.0.0" checksum: 425dab288738853fded43da3314a0b5c035844d6f3097a8e3b5b29b328da8f3c1af6fc70618b32c29ff906284cf6406b6841376f21caaadd0793c1d5a6a620ea languageName: node linkType: hard "minipass@npm:^5.0.0 || ^6.0.2": version: 6.0.2 resolution: "minipass@npm:6.0.2" checksum: d140b91f4ab2e5ce5a9b6c468c0e82223504acc89114c1a120d4495188b81fedf8cade72a9f4793642b4e66672f990f1e0d902dd858485216a07cd3c8a62fac9 languageName: node linkType: hard "minizlib@npm:^2.1.1, minizlib@npm:^2.1.2": version: 2.1.2 resolution: "minizlib@npm:2.1.2" dependencies: minipass: ^3.0.0 yallist: ^4.0.0 checksum: f1fdeac0b07cf8f30fcf12f4b586795b97be856edea22b5e9072707be51fc95d41487faec3f265b42973a304fe3a64acd91a44a3826a963e37b37bafde0212c3 languageName: node linkType: hard "mkdirp@npm:^1.0.3": version: 1.0.4 resolution: "mkdirp@npm:1.0.4" bin: mkdirp: bin/cmd.js checksum: a96865108c6c3b1b8e1d5e9f11843de1e077e57737602de1b82030815f311be11f96f09cce59bd5b903d0b29834733e5313f9301e3ed6d6f6fba2eae0df4298f languageName: node linkType: hard "ms@npm:2.0.0": version: 2.0.0 resolution: "ms@npm:2.0.0" checksum: 0e6a22b8b746d2e0b65a430519934fefd41b6db0682e3477c10f60c76e947c4c0ad06f63ffdf1d78d335f83edee8c0aa928aa66a36c7cd95b69b26f468d527f4 languageName: node linkType: hard "ms@npm:2.1.2": version: 2.1.2 resolution: "ms@npm:2.1.2" checksum: 673cdb2c3133eb050c745908d8ce632ed2c02d85640e2edb3ace856a2266a813b30c613569bf3354fdf4ea7d1a1494add3bfa95e2713baa27d0c2c71fc44f58f languageName: node linkType: hard "ms@npm:^2.0.0": version: 2.1.3 resolution: "ms@npm:2.1.3" checksum: aa92de608021b242401676e35cfa5aa42dd70cbdc082b916da7fb925c542173e36bce97ea3e804923fe92c0ad991434e4a38327e15a1b5b5f945d66df615ae6d languageName: node linkType: hard "nanoid@npm:^3.3.6": version: 3.3.6 resolution: "nanoid@npm:3.3.6" bin: nanoid: bin/nanoid.cjs checksum: 7d0eda657002738aa5206107bd0580aead6c95c460ef1bdd0b1a87a9c7ae6277ac2e9b945306aaa5b32c6dcb7feaf462d0f552e7f8b5718abfc6ead5c94a71b3 languageName: node linkType: hard "negotiator@npm:^0.6.3": version: 0.6.3 resolution: "negotiator@npm:0.6.3" checksum: b8ffeb1e262eff7968fc90a2b6767b04cfd9842582a9d0ece0af7049537266e7b2506dfb1d107a32f06dd849ab2aea834d5830f7f4d0e5cb7d36e1ae55d021d9 languageName: node linkType: hard "node-fetch@npm:^2.6.7": version: 2.6.11 resolution: "node-fetch@npm:2.6.11" dependencies: whatwg-url: ^5.0.0 peerDependencies: encoding: ^0.1.0 peerDependenciesMeta: encoding: optional: true checksum: 249d0666a9497553384d46b5ab296ba223521ac88fed4d8a17d6ee6c2efb0fc890f3e8091cafe7f9fba8151a5b8d925db2671543b3409a56c3cd522b468b47b3 languageName: node linkType: hard "node-gyp@npm:latest": version: 9.4.0 resolution: "node-gyp@npm:9.4.0" dependencies: env-paths: ^2.2.0 exponential-backoff: ^3.1.1 glob: ^7.1.4 graceful-fs: ^4.2.6 make-fetch-happen: ^11.0.3 nopt: ^6.0.0 npmlog: ^6.0.0 rimraf: ^3.0.2 semver: ^7.3.5 tar: ^6.1.2 which: ^2.0.2 bin: node-gyp: bin/node-gyp.js checksum: 78b404e2e0639d64e145845f7f5a3cb20c0520cdaf6dda2f6e025e9b644077202ea7de1232396ba5bde3fee84cdc79604feebe6ba3ec84d464c85d407bb5da99 languageName: node linkType: hard "nopt@npm:^6.0.0": version: 6.0.0 resolution: "nopt@npm:6.0.0" dependencies: abbrev: ^1.0.0 bin: nopt: bin/nopt.js checksum: 82149371f8be0c4b9ec2f863cc6509a7fd0fa729929c009f3a58e4eb0c9e4cae9920e8f1f8eb46e7d032fec8fb01bede7f0f41a67eb3553b7b8e14fa53de1dac languageName: node linkType: hard "npmlog@npm:^6.0.0": version: 6.0.2 resolution: "npmlog@npm:6.0.2" dependencies: are-we-there-yet: ^3.0.0 console-control-strings: ^1.1.0 gauge: ^4.0.3 set-blocking: ^2.0.0 checksum: ae238cd264a1c3f22091cdd9e2b106f684297d3c184f1146984ecbe18aaa86343953f26b9520dedd1b1372bc0316905b736c1932d778dbeb1fcf5a1001390e2a languageName: node linkType: hard "object-assign@npm:^4.1.1": version: 4.1.1 resolution: "object-assign@npm:4.1.1" checksum: fcc6e4ea8c7fe48abfbb552578b1c53e0d194086e2e6bbbf59e0a536381a292f39943c6e9628af05b5528aa5e3318bb30d6b2e53cadaf5b8fe9e12c4b69af23f languageName: node linkType: hard "once@npm:^1.3.0": version: 1.4.0 resolution: "once@npm:1.4.0" dependencies: wrappy: 1 checksum: cd0a88501333edd640d95f0d2700fbde6bff20b3d4d9bdc521bdd31af0656b5706570d6c6afe532045a20bb8dc0849f8332d6f2a416e0ba6d3d3b98806c7db68 languageName: node linkType: hard "p-map@npm:^4.0.0": version: 4.0.0 resolution: "p-map@npm:4.0.0" dependencies: aggregate-error: ^3.0.0 checksum: cb0ab21ec0f32ddffd31dfc250e3afa61e103ef43d957cc45497afe37513634589316de4eb88abdfd969fe6410c22c0b93ab24328833b8eb1ccc087fc0442a1c languageName: node linkType: hard "parse-srcset@npm:^1.0.2": version: 1.0.2 resolution: "parse-srcset@npm:1.0.2" checksum: 3a0380380c6082021fcce982f0b89fb8a493ce9dfd7d308e5e6d855201e80db8b90438649b31fdd82a3d6089a8ca17dccddaa2b730a718389af4c037b8539ebf languageName: node linkType: hard "path-browserify@npm:^1.0.0": version: 1.0.1 resolution: "path-browserify@npm:1.0.1" checksum: c6d7fa376423fe35b95b2d67990060c3ee304fc815ff0a2dc1c6c3cfaff2bd0d572ee67e18f19d0ea3bbe32e8add2a05021132ac40509416459fffee35200699 languageName: node linkType: hard "path-is-absolute@npm:^1.0.0": version: 1.0.1 resolution: "path-is-absolute@npm:1.0.1" checksum: 060840f92cf8effa293bcc1bea81281bd7d363731d214cbe5c227df207c34cd727430f70c6037b5159c8a870b9157cba65e775446b0ab06fd5ecc7e54615a3b8 languageName: node linkType: hard "path-key@npm:^3.1.0": version: 3.1.1 resolution: "path-key@npm:3.1.1" checksum: 55cd7a9dd4b343412a8386a743f9c746ef196e57c823d90ca3ab917f90ab9f13dd0ded27252ba49dbdfcab2b091d998bc446f6220cd3cea65db407502a740020 languageName: node linkType: hard "path-scurry@npm:^1.7.0": version: 1.9.2 resolution: "path-scurry@npm:1.9.2" dependencies: lru-cache: ^9.1.1 minipass: ^5.0.0 || ^6.0.2 checksum: 92888dfb68e285043c6d3291c8e971d5d2bc2f5082f4d7b5392896f34be47024c9d0a8b688dd7ae6d125acc424699195474927cb4f00049a9b1ec7c4256fa8e0 languageName: node linkType: hard "path@npm:~0.12.7": version: 0.12.7 resolution: "path@npm:0.12.7" dependencies: process: ^0.11.1 util: ^0.10.3 checksum: 5dedb71e78fc008fcba797defc0b4e1cf06c1f18e0a631e03ba5bb505136f587ff017afc14f9a3d481cbe77aeedff7dc0c1d2ce4d820c1ebf3c4281ca49423a1 languageName: node linkType: hard "picocolors@npm:^1.0.0": version: 1.0.0 resolution: "picocolors@npm:1.0.0" checksum: a2e8092dd86c8396bdba9f2b5481032848525b3dc295ce9b57896f931e63fc16f79805144321f72976383fc249584672a75cc18d6777c6b757603f372f745981 languageName: node linkType: hard "playwright-core@npm:1.35.0": version: 1.35.0 resolution: "playwright-core@npm:1.35.0" bin: playwright-core: cli.js checksum: e23050c9de128e02b16ffbeb1adaca6dddd85a6fd581e71da38947f66b3c910504d628285340e3d6de8c099a488ab9dad14241aefe615f65c01a5a3e3b6e633d languageName: node linkType: hard "postcss@npm:^8.3.11": version: 8.4.24 resolution: "postcss@npm:8.4.24" dependencies: nanoid: ^3.3.6 picocolors: ^1.0.0 source-map-js: ^1.0.2 checksum: 814e2126dacfea313588eda09cc99a9b4c26ec55c059188aa7a916d20d26d483483106dc5ff9e560731b59f45c5bb91b945dfadc670aed875cc90ddbbf4e787d languageName: node linkType: hard "process-nextick-args@npm:~2.0.0": version: 2.0.1 resolution: "process-nextick-args@npm:2.0.1" checksum: 1d38588e520dab7cea67cbbe2efdd86a10cc7a074c09657635e34f035277b59fbb57d09d8638346bf7090f8e8ebc070c96fa5fd183b777fff4f5edff5e9466cf languageName: node linkType: hard "process@npm:^0.11.1": version: 0.11.10 resolution: "process@npm:0.11.10" checksum: bfcce49814f7d172a6e6a14d5fa3ac92cc3d0c3b9feb1279774708a719e19acd673995226351a082a9ae99978254e320ccda4240ddc474ba31a76c79491ca7c3 languageName: node linkType: hard "promise-retry@npm:^2.0.1": version: 2.0.1 resolution: "promise-retry@npm:2.0.1" dependencies: err-code: ^2.0.2 retry: ^0.12.0 checksum: f96a3f6d90b92b568a26f71e966cbbc0f63ab85ea6ff6c81284dc869b41510e6cdef99b6b65f9030f0db422bf7c96652a3fff9f2e8fb4a0f069d8f4430359429 languageName: node linkType: hard "prop-types@npm:^15.8.1": version: 15.8.1 resolution: "prop-types@npm:15.8.1" dependencies: loose-envify: ^1.4.0 object-assign: ^4.1.1 react-is: ^16.13.1 checksum: c056d3f1c057cb7ff8344c645450e14f088a915d078dcda795041765047fa080d38e5d626560ccaac94a4e16e3aa15f3557c1a9a8d1174530955e992c675e459 languageName: node linkType: hard "punycode@npm:^2.1.0": version: 2.3.0 resolution: "punycode@npm:2.3.0" checksum: 39f760e09a2a3bbfe8f5287cf733ecdad69d6af2fe6f97ca95f24b8921858b91e9ea3c9eeec6e08cede96181b3bb33f95c6ffd8c77e63986508aa2e8159fa200 languageName: node linkType: hard "querystringify@npm:^2.1.1": version: 2.2.0 resolution: "querystringify@npm:2.2.0" checksum: 5641ea231bad7ef6d64d9998faca95611ed4b11c2591a8cae741e178a974f6a8e0ebde008475259abe1621cb15e692404e6b6626e927f7b849d5c09392604b15 languageName: node linkType: hard "react-dom@npm:^18.2.0": version: 18.2.0 resolution: "react-dom@npm:18.2.0" dependencies: loose-envify: ^1.1.0 scheduler: ^0.23.0 peerDependencies: react: ^18.2.0 checksum: 7d323310bea3a91be2965f9468d552f201b1c27891e45ddc2d6b8f717680c95a75ae0bc1e3f5cf41472446a2589a75aed4483aee8169287909fcd59ad149e8cc languageName: node linkType: hard "react-is@npm:^16.13.1": version: 16.13.1 resolution: "react-is@npm:16.13.1" checksum: f7a19ac3496de32ca9ae12aa030f00f14a3d45374f1ceca0af707c831b2a6098ef0d6bdae51bd437b0a306d7f01d4677fcc8de7c0d331eb47ad0f46130e53c5f languageName: node linkType: hard "react-is@npm:^18.2.0": version: 18.2.0 resolution: "react-is@npm:18.2.0" checksum: e72d0ba81b5922759e4aff17e0252bd29988f9642ed817f56b25a3e217e13eea8a7f2322af99a06edb779da12d5d636e9fda473d620df9a3da0df2a74141d53e languageName: node linkType: hard "react@npm:^18.2.0": version: 18.2.0 resolution: "react@npm:18.2.0" dependencies: loose-envify: ^1.1.0 checksum: 88e38092da8839b830cda6feef2e8505dec8ace60579e46aa5490fc3dc9bba0bd50336507dc166f43e3afc1c42939c09fe33b25fae889d6f402721dcd78fca1b languageName: node linkType: hard "readable-stream@npm:^2.1.4": version: 2.3.8 resolution: "readable-stream@npm:2.3.8" dependencies: core-util-is: ~1.0.0 inherits: ~2.0.3 isarray: ~1.0.0 process-nextick-args: ~2.0.0 safe-buffer: ~5.1.1 string_decoder: ~1.1.1 util-deprecate: ~1.0.1 checksum: 65645467038704f0c8aaf026a72fbb588a9e2ef7a75cd57a01702ee9db1c4a1e4b03aaad36861a6a0926546a74d174149c8c207527963e0c2d3eee2f37678a42 languageName: node linkType: hard "readable-stream@npm:^3.6.0": version: 3.6.2 resolution: "readable-stream@npm:3.6.2" dependencies: inherits: ^2.0.3 string_decoder: ^1.1.1 util-deprecate: ^1.0.1 checksum: bdcbe6c22e846b6af075e32cf8f4751c2576238c5043169a1c221c92ee2878458a816a4ea33f4c67623c0b6827c8a400409bfb3cf0bf3381392d0b1dfb52ac8d languageName: node linkType: hard "regexp-match-indices@npm:^1.0.2": version: 1.0.2 resolution: "regexp-match-indices@npm:1.0.2" dependencies: regexp-tree: ^0.1.11 checksum: 8cc779f6cf8f404ead828d09970a7d4bd66bd78d43ab9eb2b5e65f2ef2ba1ed53536f5b5fa839fb90b350365fb44b6a851c7f16289afc3f37789c113ab2a7916 languageName: node linkType: hard "regexp-tree@npm:^0.1.11": version: 0.1.27 resolution: "regexp-tree@npm:0.1.27" bin: regexp-tree: bin/regexp-tree checksum: 129aebb34dae22d6694ab2ac328be3f99105143737528ab072ef624d599afecbcfae1f5c96a166fa9e5f64fa1ecf30b411c4691e7924c3e11bbaf1712c260c54 languageName: node linkType: hard "require-directory@npm:^2.1.1": version: 2.1.1 resolution: "require-directory@npm:2.1.1" checksum: fb47e70bf0001fdeabdc0429d431863e9475e7e43ea5f94ad86503d918423c1543361cc5166d713eaa7029dd7a3d34775af04764bebff99ef413111a5af18c80 languageName: node linkType: hard "require-from-string@npm:^2.0.2": version: 2.0.2 resolution: "require-from-string@npm:2.0.2" checksum: a03ef6895445f33a4015300c426699bc66b2b044ba7b670aa238610381b56d3f07c686251740d575e22f4c87531ba662d06937508f0f3c0f1ddc04db3130560b languageName: node linkType: hard "requires-port@npm:^1.0.0": version: 1.0.0 resolution: "requires-port@npm:1.0.0" checksum: eee0e303adffb69be55d1a214e415cf42b7441ae858c76dfc5353148644f6fd6e698926fc4643f510d5c126d12a705e7c8ed7e38061113bdf37547ab356797ff languageName: node linkType: hard "retry@npm:^0.12.0": version: 0.12.0 resolution: "retry@npm:0.12.0" checksum: 623bd7d2e5119467ba66202d733ec3c2e2e26568074923bc0585b6b99db14f357e79bdedb63cab56cec47491c4a0da7e6021a7465ca6dc4f481d3898fdd3158c languageName: node linkType: hard "rimraf@npm:^3.0.2": version: 3.0.2 resolution: "rimraf@npm:3.0.2" dependencies: glob: ^7.1.3 bin: rimraf: bin.js checksum: 87f4164e396f0171b0a3386cc1877a817f572148ee13a7e113b238e48e8a9f2f31d009a92ec38a591ff1567d9662c6b67fd8818a2dbbaed74bc26a87a2a4a9a0 languageName: node linkType: hard "robust-predicates@npm:^3.0.0": version: 3.0.2 resolution: "robust-predicates@npm:3.0.2" checksum: 36854c1321548ceca96d36ad9d6e0a5a512986029ec6929ad6ed3ec1612c22cc8b46cc72d2c5674af42e8074a119d793f6f0ea3a5b51373e3ab926c64b172d7a languageName: node linkType: hard "rw@npm:1": version: 1.3.3 resolution: "rw@npm:1.3.3" checksum: c20d82421f5a71c86a13f76121b751553a99cd4a70ea27db86f9b23f33db941f3f06019c30f60d50c356d0bd674c8e74764ac146ea55e217c091bde6fba82aa3 languageName: node linkType: hard "safe-buffer@npm:~5.1.0, safe-buffer@npm:~5.1.1": version: 5.1.2 resolution: "safe-buffer@npm:5.1.2" checksum: f2f1f7943ca44a594893a852894055cf619c1fbcb611237fc39e461ae751187e7baf4dc391a72125e0ac4fb2d8c5c0b3c71529622e6a58f46b960211e704903c languageName: node linkType: hard "safe-buffer@npm:~5.2.0": version: 5.2.1 resolution: "safe-buffer@npm:5.2.1" checksum: b99c4b41fdd67a6aaf280fcd05e9ffb0813654894223afb78a31f14a19ad220bba8aba1cb14eddce1fcfb037155fe6de4e861784eb434f7d11ed58d1e70dd491 languageName: node linkType: hard "safer-buffer@npm:>= 2.1.2 < 3.0.0": version: 2.1.2 resolution: "safer-buffer@npm:2.1.2" checksum: cab8f25ae6f1434abee8d80023d7e72b598cf1327164ddab31003c51215526801e40b66c5e65d658a0af1e9d6478cadcb4c745f4bd6751f97d8644786c0978b0 languageName: node linkType: hard "sanitize-html@npm:~2.7.3": version: 2.7.3 resolution: "sanitize-html@npm:2.7.3" dependencies: deepmerge: ^4.2.2 escape-string-regexp: ^4.0.0 htmlparser2: ^6.0.0 is-plain-object: ^5.0.0 parse-srcset: ^1.0.2 postcss: ^8.3.11 checksum: 2399d1fdbbc3a263fb413c1fe1971b3dc2b51abc6cc5cb49490624539d1c57a8fe31e2b21408c118e2a957f4e673e3169b1f9a5807654408f17b130a9d78aed7 languageName: node linkType: hard "scheduler@npm:^0.23.0": version: 0.23.0 resolution: "scheduler@npm:0.23.0" dependencies: loose-envify: ^1.1.0 checksum: d79192eeaa12abef860c195ea45d37cbf2bbf5f66e3c4dcd16f54a7da53b17788a70d109ee3d3dde1a0fd50e6a8fc171f4300356c5aee4fc0171de526bf35f8a languageName: node linkType: hard "semver@npm:^7.3.5, semver@npm:^7.5.0": version: 7.5.1 resolution: "semver@npm:7.5.1" dependencies: lru-cache: ^6.0.0 bin: semver: bin/semver.js checksum: d16dbedad53c65b086f79524b9ef766bf38670b2395bdad5c957f824dcc566b624988013564f4812bcace3f9d405355c3635e2007396a39d1bffc71cfec4a2fc languageName: node linkType: hard "set-blocking@npm:^2.0.0": version: 2.0.0 resolution: "set-blocking@npm:2.0.0" checksum: 6e65a05f7cf7ebdf8b7c75b101e18c0b7e3dff4940d480efed8aad3a36a4005140b660fa1d804cb8bce911cac290441dc728084a30504d3516ac2ff7ad607b02 languageName: node linkType: hard "shebang-command@npm:^2.0.0": version: 2.0.0 resolution: "shebang-command@npm:2.0.0" dependencies: shebang-regex: ^3.0.0 checksum: 6b52fe87271c12968f6a054e60f6bde5f0f3d2db483a1e5c3e12d657c488a15474121a1d55cd958f6df026a54374ec38a4a963988c213b7570e1d51575cea7fa languageName: node linkType: hard "shebang-regex@npm:^3.0.0": version: 3.0.0 resolution: "shebang-regex@npm:3.0.0" checksum: 1a2bcae50de99034fcd92ad4212d8e01eedf52c7ec7830eedcf886622804fe36884278f2be8be0ea5fde3fd1c23911643a4e0f726c8685b61871c8908af01222 languageName: node linkType: hard "signal-exit@npm:^3.0.7": version: 3.0.7 resolution: "signal-exit@npm:3.0.7" checksum: a2f098f247adc367dffc27845853e9959b9e88b01cb301658cfe4194352d8d2bb32e18467c786a7fe15f1d44b233ea35633d076d5e737870b7139949d1ab6318 languageName: node linkType: hard "signal-exit@npm:^4.0.1": version: 4.0.2 resolution: "signal-exit@npm:4.0.2" checksum: 41f5928431cc6e91087bf0343db786a6313dd7c6fd7e551dbc141c95bb5fb26663444fd9df8ea47c5d7fc202f60aa7468c3162a9365cbb0615fc5e1b1328fe31 languageName: node linkType: hard "smart-buffer@npm:^4.2.0": version: 4.2.0 resolution: "smart-buffer@npm:4.2.0" checksum: b5167a7142c1da704c0e3af85c402002b597081dd9575031a90b4f229ca5678e9a36e8a374f1814c8156a725d17008ae3bde63b92f9cfd132526379e580bec8b languageName: node linkType: hard "socks-proxy-agent@npm:^7.0.0": version: 7.0.0 resolution: "socks-proxy-agent@npm:7.0.0" dependencies: agent-base: ^6.0.2 debug: ^4.3.3 socks: ^2.6.2 checksum: 720554370154cbc979e2e9ce6a6ec6ced205d02757d8f5d93fe95adae454fc187a5cbfc6b022afab850a5ce9b4c7d73e0f98e381879cf45f66317a4895953846 languageName: node linkType: hard "socks@npm:^2.6.2": version: 2.7.1 resolution: "socks@npm:2.7.1" dependencies: ip: ^2.0.0 smart-buffer: ^4.2.0 checksum: 259d9e3e8e1c9809a7f5c32238c3d4d2a36b39b83851d0f573bfde5f21c4b1288417ce1af06af1452569cd1eb0841169afd4998f0e04ba04656f6b7f0e46d748 languageName: node linkType: hard "source-map-js@npm:^1.0.2": version: 1.0.2 resolution: "source-map-js@npm:1.0.2" checksum: c049a7fc4deb9a7e9b481ae3d424cc793cb4845daa690bc5a05d428bf41bf231ced49b4cf0c9e77f9d42fdb3d20d6187619fc586605f5eabe995a316da8d377c languageName: node linkType: hard "ssri@npm:^10.0.0": version: 10.0.4 resolution: "ssri@npm:10.0.4" dependencies: minipass: ^5.0.0 checksum: fb14da9f8a72b04eab163eb13a9dda11d5962cd2317f85457c4e0b575e9a6e0e3a6a87b5bf122c75cb36565830cd5f263fb457571bf6f1587eb5f95d095d6165 languageName: node linkType: hard "string-width-cjs@npm:string-width@^4.2.0, string-width@npm:^1.0.2 || 2 || 3 || 4, string-width@npm:^4.1.0, string-width@npm:^4.2.0, string-width@npm:^4.2.3": version: 4.2.3 resolution: "string-width@npm:4.2.3" dependencies: emoji-regex: ^8.0.0 is-fullwidth-code-point: ^3.0.0 strip-ansi: ^6.0.1 checksum: e52c10dc3fbfcd6c3a15f159f54a90024241d0f149cf8aed2982a2d801d2e64df0bf1dc351cf8e95c3319323f9f220c16e740b06faecd53e2462df1d2b5443fb languageName: node linkType: hard "string-width@npm:^5.0.1, string-width@npm:^5.1.2": version: 5.1.2 resolution: "string-width@npm:5.1.2" dependencies: eastasianwidth: ^0.2.0 emoji-regex: ^9.2.2 strip-ansi: ^7.0.1 checksum: 7369deaa29f21dda9a438686154b62c2c5f661f8dda60449088f9f980196f7908fc39fdd1803e3e01541970287cf5deae336798337e9319a7055af89dafa7193 languageName: node linkType: hard "string_decoder@npm:^1.1.1": version: 1.3.0 resolution: "string_decoder@npm:1.3.0" dependencies: safe-buffer: ~5.2.0 checksum: 8417646695a66e73aefc4420eb3b84cc9ffd89572861fe004e6aeb13c7bc00e2f616247505d2dbbef24247c372f70268f594af7126f43548565c68c117bdeb56 languageName: node linkType: hard "string_decoder@npm:~1.1.1": version: 1.1.1 resolution: "string_decoder@npm:1.1.1" dependencies: safe-buffer: ~5.1.0 checksum: 9ab7e56f9d60a28f2be697419917c50cac19f3e8e6c28ef26ed5f4852289fe0de5d6997d29becf59028556f2c62983790c1d9ba1e2a3cc401768ca12d5183a5b languageName: node linkType: hard "strip-ansi-cjs@npm:strip-ansi@^6.0.1, strip-ansi@npm:^6.0.0, strip-ansi@npm:^6.0.1": version: 6.0.1 resolution: "strip-ansi@npm:6.0.1" dependencies: ansi-regex: ^5.0.1 checksum: f3cd25890aef3ba6e1a74e20896c21a46f482e93df4a06567cebf2b57edabb15133f1f94e57434e0a958d61186087b1008e89c94875d019910a213181a14fc8c languageName: node linkType: hard "strip-ansi@npm:^7.0.1": version: 7.1.0 resolution: "strip-ansi@npm:7.1.0" dependencies: ansi-regex: ^6.0.1 checksum: 859c73fcf27869c22a4e4d8c6acfe690064659e84bef9458aa6d13719d09ca88dcfd40cbf31fd0be63518ea1a643fe070b4827d353e09533a5b0b9fd4553d64d languageName: node linkType: hard "style-mod@npm:^4.0.0": version: 4.0.3 resolution: "style-mod@npm:4.0.3" checksum: 934556e720bd29026ff8fef43a1a35b58957813025b91f996d886e9405acf934ddb1934def4400b174bd7784c9263eb9c71f07ae83925af9271b7d921d546854 languageName: node linkType: hard "systeminformation@npm:^5.8.6": version: 5.18.3 resolution: "systeminformation@npm:5.18.3" bin: systeminformation: lib/cli.js checksum: a58a4568c76e0479460d91d2eee009adeda2469876a3a99b122072bd6b6c5bd0965c8a6062f189ae667ae514ee5e858ea4b3c5c0af4a669e988b929bae767c05 conditions: (os=darwin | os=linux | os=win32 | os=freebsd | os=openbsd | os=netbsd | os=sunos | os=android) languageName: node linkType: hard "tar@npm:^6.1.11, tar@npm:^6.1.2": version: 6.1.15 resolution: "tar@npm:6.1.15" dependencies: chownr: ^2.0.0 fs-minipass: ^2.0.0 minipass: ^5.0.0 minizlib: ^2.1.1 mkdirp: ^1.0.3 yallist: ^4.0.0 checksum: f23832fceeba7578bf31907aac744ae21e74a66f4a17a9e94507acf460e48f6db598c7023882db33bab75b80e027c21f276d405e4a0322d58f51c7088d428268 languageName: node linkType: hard "topojson-client@npm:^3.1.0": version: 3.1.0 resolution: "topojson-client@npm:3.1.0" dependencies: commander: 2 bin: topo2geo: bin/topo2geo topomerge: bin/topomerge topoquantize: bin/topoquantize checksum: 8c029a4f18324ace0b8b55dd90edbd40c9e3c6de18bafbb5da37ca20ebf20e26fbd4420891acb3c2c264e214185f7557871f5651a9eee517028663be98d836de languageName: node linkType: hard "tr46@npm:~0.0.3": version: 0.0.3 resolution: "tr46@npm:0.0.3" checksum: 726321c5eaf41b5002e17ffbd1fb7245999a073e8979085dacd47c4b4e8068ff5777142fc6726d6ca1fd2ff16921b48788b87225cbc57c72636f6efa8efbffe3 languageName: node linkType: hard "tslib@npm:^2.5.0, tslib@npm:~2.5.0": version: 2.5.3 resolution: "tslib@npm:2.5.3" checksum: 88902b309afaf83259131c1e13da1dceb0ad1682a213143a1346a649143924d78cf3760c448b84d796938fd76127183894f8d85cbb3bf9c4fddbfcc140c0003c languageName: node linkType: hard "typestyle@npm:^2.0.4": version: 2.4.0 resolution: "typestyle@npm:2.4.0" dependencies: csstype: 3.0.10 free-style: 3.1.0 checksum: 8b4f02c24f67b594f98507b15a753dabd4db5eb0af007e1d310527c64030e11e9464b25b5a6bc65fb5eec9a4459a8336050121ecc29063ac87b8b47a6d698893 languageName: node linkType: hard "unique-filename@npm:^3.0.0": version: 3.0.0 resolution: "unique-filename@npm:3.0.0" dependencies: unique-slug: ^4.0.0 checksum: 8e2f59b356cb2e54aab14ff98a51ac6c45781d15ceaab6d4f1c2228b780193dc70fae4463ce9e1df4479cb9d3304d7c2043a3fb905bdeca71cc7e8ce27e063df languageName: node linkType: hard "unique-slug@npm:^4.0.0": version: 4.0.0 resolution: "unique-slug@npm:4.0.0" dependencies: imurmurhash: ^0.1.4 checksum: 0884b58365af59f89739e6f71e3feacb5b1b41f2df2d842d0757933620e6de08eff347d27e9d499b43c40476cbaf7988638d3acb2ffbcb9d35fd035591adfd15 languageName: node linkType: hard "universalify@npm:^2.0.0": version: 2.0.0 resolution: "universalify@npm:2.0.0" checksum: 2406a4edf4a8830aa6813278bab1f953a8e40f2f63a37873ffa9a3bc8f9745d06cc8e88f3572cb899b7e509013f7f6fcc3e37e8a6d914167a5381d8440518c44 languageName: node linkType: hard "uri-js@npm:^4.2.2": version: 4.4.1 resolution: "uri-js@npm:4.4.1" dependencies: punycode: ^2.1.0 checksum: 7167432de6817fe8e9e0c9684f1d2de2bb688c94388f7569f7dbdb1587c9f4ca2a77962f134ec90be0cc4d004c939ff0d05acc9f34a0db39a3c797dada262633 languageName: node linkType: hard "url-parse@npm:~1.5.4": version: 1.5.10 resolution: "url-parse@npm:1.5.10" dependencies: querystringify: ^2.1.1 requires-port: ^1.0.0 checksum: fbdba6b1d83336aca2216bbdc38ba658d9cfb8fc7f665eb8b17852de638ff7d1a162c198a8e4ed66001ddbf6c9888d41e4798912c62b4fd777a31657989f7bdf languageName: node linkType: hard "util-deprecate@npm:^1.0.1, util-deprecate@npm:~1.0.1": version: 1.0.2 resolution: "util-deprecate@npm:1.0.2" checksum: 474acf1146cb2701fe3b074892217553dfcf9a031280919ba1b8d651a068c9b15d863b7303cb15bd00a862b498e6cf4ad7b4a08fb134edd5a6f7641681cb54a2 languageName: node linkType: hard "util@npm:^0.10.3": version: 0.10.4 resolution: "util@npm:0.10.4" dependencies: inherits: 2.0.3 checksum: 913f9a90d05a60e91f91af01b8bd37e06bca4cc02d7b49e01089f9d5b78be2fffd61fb1a41b517de7238c5fc7337fa939c62d1fb4eb82e014894c7bee6637aaf languageName: node linkType: hard "validate.io-array@npm:^1.0.3": version: 1.0.6 resolution: "validate.io-array@npm:1.0.6" checksum: 54eca83ebc702e3e46499f9d9e77287a95ae25c4e727cd2fafee29c7333b3a36cca0c5d8f090b9406262786de80750fba85e7e7ef41e20bf8cc67d5570de449b languageName: node linkType: hard "validate.io-function@npm:^1.0.2": version: 1.0.2 resolution: "validate.io-function@npm:1.0.2" checksum: e4cce2479a20cb7c42e8630c777fb107059c27bc32925f769e3a73ca5fd62b4892d897b3c80227e14d5fcd1c5b7d05544e0579d63e59f14034c0052cda7f7c44 languageName: node linkType: hard "validate.io-integer-array@npm:^1.0.0": version: 1.0.0 resolution: "validate.io-integer-array@npm:1.0.0" dependencies: validate.io-array: ^1.0.3 validate.io-integer: ^1.0.4 checksum: 5f6d7fab8df7d2bf546a05e830201768464605539c75a2c2417b632b4411a00df84b462f81eac75e1be95303e7e0ac92f244c137424739f4e15cd21c2eb52c7f languageName: node linkType: hard "validate.io-integer@npm:^1.0.4": version: 1.0.5 resolution: "validate.io-integer@npm:1.0.5" dependencies: validate.io-number: ^1.0.3 checksum: 88b3f8bb5a5277a95305d64abbfc437079220ce4f57a148cc6113e7ccec03dd86b10a69d413982602aa90a62b8d516148a78716f550dcd3aff863ac1c2a7a5e6 languageName: node linkType: hard "validate.io-number@npm:^1.0.3": version: 1.0.3 resolution: "validate.io-number@npm:1.0.3" checksum: 42418aeb6c969efa745475154fe576809b02eccd0961aad0421b090d6e7a12d23a3e28b0d5dddd2c6347c1a6bdccb82bba5048c716131cd20207244d50e07282 languageName: node linkType: hard "vega-canvas@npm:^1.2.6, vega-canvas@npm:^1.2.7": version: 1.2.7 resolution: "vega-canvas@npm:1.2.7" checksum: 6ff92fcdf0c359f2f662909c859a7f4cb4a502436136ab2f4c02373c47a621996ec0eea23e2108f11d62a618be301de86cd8528b5058c2e207a53ddd7ff58d1b languageName: node linkType: hard "vega-crossfilter@npm:~4.1.1": version: 4.1.1 resolution: "vega-crossfilter@npm:4.1.1" dependencies: d3-array: ^3.2.2 vega-dataflow: ^5.7.5 vega-util: ^1.17.1 checksum: e399f7e92d7ba273ad5c1a9e29d362a9ec7feaeacb976eff3aa205b318382fb37a9fac3150ec1cb806364cd2b2cb54d5f23aea3285db684df2b4c27836422464 languageName: node linkType: hard "vega-dataflow@npm:^5.7.3, vega-dataflow@npm:^5.7.5, vega-dataflow@npm:~5.7.5": version: 5.7.5 resolution: "vega-dataflow@npm:5.7.5" dependencies: vega-format: ^1.1.1 vega-loader: ^4.5.1 vega-util: ^1.17.1 checksum: 917ed63e88b0871169a883f68da127a404d88e50c9ed6fa3f063a706016b064594fb804a2bf99f09bc4a899819cac320bdde12467edc861af1acc024552dd202 languageName: node linkType: hard "vega-encode@npm:~4.9.2": version: 4.9.2 resolution: "vega-encode@npm:4.9.2" dependencies: d3-array: ^3.2.2 d3-interpolate: ^3.0.1 vega-dataflow: ^5.7.5 vega-scale: ^7.3.0 vega-util: ^1.17.1 checksum: fcba123d2efb865b4f6cf8e9d64e0752ebae163dcfe61013f4874f7fe6fce3003ea9dd83b89db3ffab2a1530532a7c902dd24dfec226eb53d08dcf69189f308d languageName: node linkType: hard "vega-event-selector@npm:^3.0.1, vega-event-selector@npm:~3.0.1": version: 3.0.1 resolution: "vega-event-selector@npm:3.0.1" checksum: 66d09b5800a19a9b0c75f28811b140a1a2e70e84be6d6f87c568cdbce6e17c8e195f130f4e3de5d6dc737142d1f46f4fe7645177e154582cc8ba27c6845b54e8 languageName: node linkType: hard "vega-expression@npm:^5.0.1, vega-expression@npm:^5.1.0, vega-expression@npm:~5.1.0": version: 5.1.0 resolution: "vega-expression@npm:5.1.0" dependencies: "@types/estree": ^1.0.0 vega-util: ^1.17.1 checksum: 0355ebb6edd8f2ccc2dcf277a29b42b13f971725443212ce8a64cb8a02049f75f0add7ca9afcd3bc6744b93be791b526e7f983d9080d5052e9b0ca55bd488ae5 languageName: node linkType: hard "vega-force@npm:~4.2.0": version: 4.2.0 resolution: "vega-force@npm:4.2.0" dependencies: d3-force: ^3.0.0 vega-dataflow: ^5.7.5 vega-util: ^1.17.1 checksum: 8a371ca8d0892bc3e932cc279bbf54fe8b88e2b384c42f8df9877c801191953f3ee3e2f516f675a69ecb052ed081232dfb3438989620e8ad5c2a316ccee60277 languageName: node linkType: hard "vega-format@npm:^1.1.1, vega-format@npm:~1.1.1": version: 1.1.1 resolution: "vega-format@npm:1.1.1" dependencies: d3-array: ^3.2.2 d3-format: ^3.1.0 d3-time-format: ^4.1.0 vega-time: ^2.1.1 vega-util: ^1.17.1 checksum: d506acb8611a6340ff419ebf308a758a54aaf3cf141863553df83980dcf8dc7bf806bee257d11a52d43682d159d7be03ab8a92bdd4d018d8c9f39a70c45cb197 languageName: node linkType: hard "vega-functions@npm:^5.13.1, vega-functions@npm:~5.13.2": version: 5.13.2 resolution: "vega-functions@npm:5.13.2" dependencies: d3-array: ^3.2.2 d3-color: ^3.1.0 d3-geo: ^3.1.0 vega-dataflow: ^5.7.5 vega-expression: ^5.1.0 vega-scale: ^7.3.0 vega-scenegraph: ^4.10.2 vega-selections: ^5.4.1 vega-statistics: ^1.8.1 vega-time: ^2.1.1 vega-util: ^1.17.1 checksum: 178498cf93c3d9ef392fb57a5c7992dbb9118c546a6acb4cff9783f911fb30dbf50634cbfd6e3a9bc358c4aec9a571bd55f9cf3de551213cd386f152ac882986 languageName: node linkType: hard "vega-geo@npm:~4.4.1": version: 4.4.1 resolution: "vega-geo@npm:4.4.1" dependencies: d3-array: ^3.2.2 d3-color: ^3.1.0 d3-geo: ^3.1.0 vega-canvas: ^1.2.7 vega-dataflow: ^5.7.5 vega-projection: ^1.6.0 vega-statistics: ^1.8.1 vega-util: ^1.17.1 checksum: e9c62d9134c2449a1a80cd5cb71ed6dc455d893a36fdcb1a696bcae3897670c32687cf14a0f366b0ec76905e5be406131dc671e5d607ffcbef74e94b8c697007 languageName: node linkType: hard "vega-hierarchy@npm:~4.1.1": version: 4.1.1 resolution: "vega-hierarchy@npm:4.1.1" dependencies: d3-hierarchy: ^3.1.2 vega-dataflow: ^5.7.5 vega-util: ^1.17.1 checksum: beb23948922f1b52bf03b836d71d3a5a36db3a6bfe2af74b6a5fc45a2e2e877226313e2389772be62a459728467618175d8c02a07e88330844fdec45fd5f69ac languageName: node linkType: hard "vega-label@npm:~1.2.1": version: 1.2.1 resolution: "vega-label@npm:1.2.1" dependencies: vega-canvas: ^1.2.6 vega-dataflow: ^5.7.3 vega-scenegraph: ^4.9.2 vega-util: ^1.15.2 checksum: 2704c99328ead677441e746acd8f4529301437d08b2758933fc13353d2eab9af353e4ebcc4ff1f09f41d600401b097e2df3c9e8e56d4861e5216222dd9e29185 languageName: node linkType: hard "vega-lite@npm:^5.6.1": version: 5.9.3 resolution: "vega-lite@npm:5.9.3" dependencies: "@types/clone": ~2.1.1 clone: ~2.1.2 fast-deep-equal: ~3.1.3 fast-json-stable-stringify: ~2.1.0 json-stringify-pretty-compact: ~3.0.0 tslib: ~2.5.0 vega-event-selector: ~3.0.1 vega-expression: ~5.1.0 vega-util: ~1.17.2 yargs: ~17.7.2 peerDependencies: vega: ^5.24.0 bin: vl2pdf: bin/vl2pdf vl2png: bin/vl2png vl2svg: bin/vl2svg vl2vg: bin/vl2vg checksum: 0f020942c78e4acc8c4d9c13c80cebf76c769caad2de29f382ee308fbd1c7f7abe575b092b56351ba55ca3ad46e14ec969edaa39dc59c1f61c5bcd1c1e4e16c7 languageName: node linkType: hard "vega-loader@npm:^4.5.1, vega-loader@npm:~4.5.1": version: 4.5.1 resolution: "vega-loader@npm:4.5.1" dependencies: d3-dsv: ^3.0.1 node-fetch: ^2.6.7 topojson-client: ^3.1.0 vega-format: ^1.1.1 vega-util: ^1.17.1 checksum: 95f6eebc75a97665cf34faaea431934047e1b2e9d7532f48f62dab4884d606a7d9da53962e1631a5790a7a867f720581852a3db9be1a7f667882062f6c102ee0 languageName: node linkType: hard "vega-parser@npm:~6.2.0": version: 6.2.0 resolution: "vega-parser@npm:6.2.0" dependencies: vega-dataflow: ^5.7.5 vega-event-selector: ^3.0.1 vega-functions: ^5.13.1 vega-scale: ^7.3.0 vega-util: ^1.17.1 checksum: 19872153c16aab30c4df338e0df7bd331e0bf74c7c6afce5428df555b9bdb0c4acf76b54092cacd4726a1349912ea803c90e1b30d53f4a02044e0559873969a7 languageName: node linkType: hard "vega-projection@npm:^1.6.0, vega-projection@npm:~1.6.0": version: 1.6.0 resolution: "vega-projection@npm:1.6.0" dependencies: d3-geo: ^3.1.0 d3-geo-projection: ^4.0.0 vega-scale: ^7.3.0 checksum: 9c52848e294ff68051fe9f44fa536656c4e6be3d474bd3359e21aa154ab282755eaee624ac31b1ca01816227900e1d81a6d191e36f46e47525ed6648397f0fa0 languageName: node linkType: hard "vega-regression@npm:~1.2.0": version: 1.2.0 resolution: "vega-regression@npm:1.2.0" dependencies: d3-array: ^3.2.2 vega-dataflow: ^5.7.3 vega-statistics: ^1.9.0 vega-util: ^1.15.2 checksum: 5f79db18c7849b465550e00ca8fec9d896aa3cf6d6279daac8b862beb632d841dcb6a93136d6b827c37e3d1cbd2bb2f7dec58f96c572763870c2d38f2cc4e0b3 languageName: node linkType: hard "vega-runtime@npm:^6.1.4, vega-runtime@npm:~6.1.4": version: 6.1.4 resolution: "vega-runtime@npm:6.1.4" dependencies: vega-dataflow: ^5.7.5 vega-util: ^1.17.1 checksum: a1da40ddb3109f1ced8e61d2e7b52784fbb29936ee4c47cb5630dbbeb12ef6e0c3cd3cd189c34377f82402bf19c61dd148d90330fec743b8667635ac48e4ba29 languageName: node linkType: hard "vega-scale@npm:^7.3.0, vega-scale@npm:~7.3.0": version: 7.3.0 resolution: "vega-scale@npm:7.3.0" dependencies: d3-array: ^3.2.2 d3-interpolate: ^3.0.1 d3-scale: ^4.0.2 vega-time: ^2.1.1 vega-util: ^1.17.1 checksum: 8e434f27a51a913dd18374ec0d2bc33758eda7db1ee6342721644f977e705268b8df6b3e89813774d776d03a0cd24f91d4d59f9e80951f67dfbbf8637f5a69ad languageName: node linkType: hard "vega-scenegraph@npm:^4.10.2, vega-scenegraph@npm:^4.9.2, vega-scenegraph@npm:~4.10.2": version: 4.10.2 resolution: "vega-scenegraph@npm:4.10.2" dependencies: d3-path: ^3.1.0 d3-shape: ^3.2.0 vega-canvas: ^1.2.7 vega-loader: ^4.5.1 vega-scale: ^7.3.0 vega-util: ^1.17.1 checksum: 6caf3e298297b918c8b6a72f019e51e2bfbaecd316e4d1c37d855ac9366d177cdbf16e9c8857c5ccde128bcd9645af7ee7dc81111bcd743d192e1a3b9a9d7185 languageName: node linkType: hard "vega-selections@npm:^5.4.1": version: 5.4.1 resolution: "vega-selections@npm:5.4.1" dependencies: d3-array: 3.2.2 vega-expression: ^5.0.1 vega-util: ^1.17.1 checksum: c594d41ec3886af94976e4dc4e152bea9b3975a22d435aa38dac2aab105851cb83fd4aa0f1e81a47f8bc0bea1677af93816331e3ed084ab3ec2e51b3544c109f languageName: node linkType: hard "vega-statistics@npm:^1.7.9, vega-statistics@npm:^1.8.1, vega-statistics@npm:^1.9.0, vega-statistics@npm:~1.9.0": version: 1.9.0 resolution: "vega-statistics@npm:1.9.0" dependencies: d3-array: ^3.2.2 checksum: bbf2ea088c5a6a662c6aed1bf57996c06a82a98228730ada8a97e57824a6ed391999ea974f16dcde6e73bf88799976d91aff748842848d38ab45dbb9fafba3f9 languageName: node linkType: hard "vega-time@npm:^2.1.1, vega-time@npm:~2.1.1": version: 2.1.1 resolution: "vega-time@npm:2.1.1" dependencies: d3-array: ^3.2.2 d3-time: ^3.1.0 vega-util: ^1.17.1 checksum: 3d6a50f779be4b5e7f27bd2aae766035c29e59e03e62d2e96b94a2f759ed3104c1102c1006dd416e7b819ee501880ae7a722c2fa9aabf9efac86503c1aada14a languageName: node linkType: hard "vega-transforms@npm:~4.10.2": version: 4.10.2 resolution: "vega-transforms@npm:4.10.2" dependencies: d3-array: ^3.2.2 vega-dataflow: ^5.7.5 vega-statistics: ^1.8.1 vega-time: ^2.1.1 vega-util: ^1.17.1 checksum: 2dbe4c767542a5dc4dbb453fd1317b00912e47dbdb3de637259b2552497dd8039c20c795318ad57341eb0d30b69712c55a2da16dc9ad2329a68c35fb75b4fee6 languageName: node linkType: hard "vega-typings@npm:~0.24.0": version: 0.24.1 resolution: "vega-typings@npm:0.24.1" dependencies: "@types/geojson": 7946.0.4 vega-event-selector: ^3.0.1 vega-expression: ^5.0.1 vega-util: ^1.17.1 checksum: e6b7bf88d6e505ba472c8e5e734d1914515db0e4e23ca36c5b81f7bd2bf4df6ebf519ecc1f089dcef3caae48e196d29946dc5c9fa8ee454ea31d12f111f857ae languageName: node linkType: hard "vega-util@npm:^1.15.2, vega-util@npm:^1.17.1, vega-util@npm:~1.17.2": version: 1.17.2 resolution: "vega-util@npm:1.17.2" checksum: 5d681cb1a6ffda7af1b74df7c1c46a32f1d874daef54f9c9c65c7d7c7bfc4271dc6d9b1c1c7a853b14eb6e4cc8ec811b0132cd3ea25fa85259eac92e1b4f07fa languageName: node linkType: hard "vega-view-transforms@npm:~4.5.9": version: 4.5.9 resolution: "vega-view-transforms@npm:4.5.9" dependencies: vega-dataflow: ^5.7.5 vega-scenegraph: ^4.10.2 vega-util: ^1.17.1 checksum: aeeaf3c2f1a02b1303c16a586dbcb20f208c101d06d7e988e18ab71fb67d87be5d8ff228ebf25971535d6e41dc816168cfa68b8676e7250df07a40aefdea32a7 languageName: node linkType: hard "vega-view@npm:~5.11.1": version: 5.11.1 resolution: "vega-view@npm:5.11.1" dependencies: d3-array: ^3.2.2 d3-timer: ^3.0.1 vega-dataflow: ^5.7.5 vega-format: ^1.1.1 vega-functions: ^5.13.1 vega-runtime: ^6.1.4 vega-scenegraph: ^4.10.2 vega-util: ^1.17.1 checksum: 82ddc74593b3a359d0b3458bc06573673ff9bf13f84020cb36fb4676c5d7f547e9650eb6faaa76799fbcedd27bcd266603dbd08c420e2d2229cc6b9f48a4a66d languageName: node linkType: hard "vega-voronoi@npm:~4.2.1": version: 4.2.1 resolution: "vega-voronoi@npm:4.2.1" dependencies: d3-delaunay: ^6.0.2 vega-dataflow: ^5.7.5 vega-util: ^1.17.1 checksum: f618174ad5f451c507a80e373288bb2c0da7a8a908d62f885bc77b354c4334504ae2d1042742f68ad419ade7b548aeca9ca1042ae5541bebd7f5297afc23bb35 languageName: node linkType: hard "vega-wordcloud@npm:~4.1.4": version: 4.1.4 resolution: "vega-wordcloud@npm:4.1.4" dependencies: vega-canvas: ^1.2.7 vega-dataflow: ^5.7.5 vega-scale: ^7.3.0 vega-statistics: ^1.8.1 vega-util: ^1.17.1 checksum: 34d1882651d3a2f34ce40a6eaeed700de126f627cdf041ec2bcc7ada46d7b4b68a38a2974236eec87ee876d9abd095af7ab17e7698b0e2fbc831460767969d7a languageName: node linkType: hard "vega@npm:^5.20.0": version: 5.25.0 resolution: "vega@npm:5.25.0" dependencies: vega-crossfilter: ~4.1.1 vega-dataflow: ~5.7.5 vega-encode: ~4.9.2 vega-event-selector: ~3.0.1 vega-expression: ~5.1.0 vega-force: ~4.2.0 vega-format: ~1.1.1 vega-functions: ~5.13.2 vega-geo: ~4.4.1 vega-hierarchy: ~4.1.1 vega-label: ~1.2.1 vega-loader: ~4.5.1 vega-parser: ~6.2.0 vega-projection: ~1.6.0 vega-regression: ~1.2.0 vega-runtime: ~6.1.4 vega-scale: ~7.3.0 vega-scenegraph: ~4.10.2 vega-statistics: ~1.9.0 vega-time: ~2.1.1 vega-transforms: ~4.10.2 vega-typings: ~0.24.0 vega-util: ~1.17.2 vega-view: ~5.11.1 vega-view-transforms: ~4.5.9 vega-voronoi: ~4.2.1 vega-wordcloud: ~4.1.4 checksum: ddc7b1f2a70c72b842e111d32bdd8ff050992a50e385e8ddc6e35c02e7c481a652383c81c547b7ebfd31cda04ab9f9acf0a8cc47c6bd19b91765b254aac30d24 languageName: node linkType: hard "vscode-jsonrpc@npm:8.1.0, vscode-jsonrpc@npm:^8.0.2": version: 8.1.0 resolution: "vscode-jsonrpc@npm:8.1.0" checksum: 8980037cc0014802e6ac1e5dfcff9a65e8292727096dfd23c92d2039c0c45de74a00d6ee06938cf1a671286dd8258a5f418cf048c26ad0fcb0c44f96c9e0f278 languageName: node linkType: hard "vscode-jsonrpc@npm:^6.0.0": version: 6.0.0 resolution: "vscode-jsonrpc@npm:6.0.0" checksum: 3a67a56f287e8c449f2d9752eedf91e704dc7b9a326f47fb56ac07667631deb45ca52192e9bccb2ab108764e48409d70fa64b930d46fc3822f75270b111c5f53 languageName: node linkType: hard "vscode-languageserver-protocol@npm:^3.17.0": version: 3.17.3 resolution: "vscode-languageserver-protocol@npm:3.17.3" dependencies: vscode-jsonrpc: 8.1.0 vscode-languageserver-types: 3.17.3 checksum: ffea508b2efd7f4853f1cef5e5eac58672f0ae71a9ec275ad37a4a2a24cdc3ff023f941e759951aee01c79da3f3279f10e034f19d875f081eb387181241bd836 languageName: node linkType: hard "vscode-languageserver-types@npm:3.17.3": version: 3.17.3 resolution: "vscode-languageserver-types@npm:3.17.3" checksum: fbc8221297261f659a6482875ff2a419dc9d55965dc53745797da569ff9f819cd832e6f2699017baadd946548bbfe212e3f6971f3d960f12dc0ee9c629dacc07 languageName: node linkType: hard "vscode-ws-jsonrpc@npm:~1.0.2": version: 1.0.2 resolution: "vscode-ws-jsonrpc@npm:1.0.2" dependencies: vscode-jsonrpc: ^8.0.2 checksum: eb2fdb5c96f124326505f06564dfc6584318b748fd6e39b4c0ba16a0d383d13ba0e9433596abdb841428dfc2a5501994c3206723d1cb38c6af5fcac1faf4be26 languageName: node linkType: hard "w3c-keyname@npm:^2.2.4": version: 2.2.8 resolution: "w3c-keyname@npm:2.2.8" checksum: 95bafa4c04fa2f685a86ca1000069c1ec43ace1f8776c10f226a73296caeddd83f893db885c2c220ebeb6c52d424e3b54d7c0c1e963bbf204038ff1a944fbb07 languageName: node linkType: hard "webidl-conversions@npm:^3.0.0": version: 3.0.1 resolution: "webidl-conversions@npm:3.0.1" checksum: c92a0a6ab95314bde9c32e1d0a6dfac83b578f8fa5f21e675bc2706ed6981bc26b7eb7e6a1fab158e5ce4adf9caa4a0aee49a52505d4d13c7be545f15021b17c languageName: node linkType: hard "whatwg-url@npm:^5.0.0": version: 5.0.0 resolution: "whatwg-url@npm:5.0.0" dependencies: tr46: ~0.0.3 webidl-conversions: ^3.0.0 checksum: b8daed4ad3356cc4899048a15b2c143a9aed0dfae1f611ebd55073310c7b910f522ad75d727346ad64203d7e6c79ef25eafd465f4d12775ca44b90fa82ed9e2c languageName: node linkType: hard "which@npm:^2.0.1, which@npm:^2.0.2": version: 2.0.2 resolution: "which@npm:2.0.2" dependencies: isexe: ^2.0.0 bin: node-which: ./bin/node-which checksum: 1a5c563d3c1b52d5f893c8b61afe11abc3bab4afac492e8da5bde69d550de701cf9806235f20a47b5c8fa8a1d6a9135841de2596535e998027a54589000e66d1 languageName: node linkType: hard "wide-align@npm:^1.1.5": version: 1.1.5 resolution: "wide-align@npm:1.1.5" dependencies: string-width: ^1.0.2 || 2 || 3 || 4 checksum: d5fc37cd561f9daee3c80e03b92ed3e84d80dde3365a8767263d03dacfc8fa06b065ffe1df00d8c2a09f731482fcacae745abfbb478d4af36d0a891fad4834d3 languageName: node linkType: hard "wrap-ansi-cjs@npm:wrap-ansi@^7.0.0, wrap-ansi@npm:^7.0.0": version: 7.0.0 resolution: "wrap-ansi@npm:7.0.0" dependencies: ansi-styles: ^4.0.0 string-width: ^4.1.0 strip-ansi: ^6.0.0 checksum: a790b846fd4505de962ba728a21aaeda189b8ee1c7568ca5e817d85930e06ef8d1689d49dbf0e881e8ef84436af3a88bc49115c2e2788d841ff1b8b5b51a608b languageName: node linkType: hard "wrap-ansi@npm:^8.1.0": version: 8.1.0 resolution: "wrap-ansi@npm:8.1.0" dependencies: ansi-styles: ^6.1.0 string-width: ^5.0.1 strip-ansi: ^7.0.1 checksum: 371733296dc2d616900ce15a0049dca0ef67597d6394c57347ba334393599e800bab03c41d4d45221b6bc967b8c453ec3ae4749eff3894202d16800fdfe0e238 languageName: node linkType: hard "wrappy@npm:1": version: 1.0.2 resolution: "wrappy@npm:1.0.2" checksum: 159da4805f7e84a3d003d8841557196034155008f817172d4e986bd591f74aa82aa7db55929a54222309e01079a65a92a9e6414da5a6aa4b01ee44a511ac3ee5 languageName: node linkType: hard "ws@npm:^8.11.0": version: 8.13.0 resolution: "ws@npm:8.13.0" peerDependencies: bufferutil: ^4.0.1 utf-8-validate: ">=5.0.2" peerDependenciesMeta: bufferutil: optional: true utf-8-validate: optional: true checksum: 53e991bbf928faf5dc6efac9b8eb9ab6497c69feeb94f963d648b7a3530a720b19ec2e0ec037344257e05a4f35bd9ad04d9de6f289615ffb133282031b18c61c languageName: node linkType: hard "y-protocols@npm:^1.0.5": version: 1.0.5 resolution: "y-protocols@npm:1.0.5" dependencies: lib0: ^0.2.42 checksum: d19404a4ebafcf3761c28b881abe8c32ab6e457db0e5ffc7dbb749cbc2c3bb98e003a43f3e8eba7f245b2698c76f2c4cdd1c2db869f8ec0c6ef94736d9a88652 languageName: node linkType: hard "y18n@npm:^5.0.5": version: 5.0.8 resolution: "y18n@npm:5.0.8" checksum: 54f0fb95621ee60898a38c572c515659e51cc9d9f787fb109cef6fde4befbe1c4602dc999d30110feee37456ad0f1660fa2edcfde6a9a740f86a290999550d30 languageName: node linkType: hard "yallist@npm:^4.0.0": version: 4.0.0 resolution: "yallist@npm:4.0.0" checksum: 343617202af32df2a15a3be36a5a8c0c8545208f3d3dfbc6bb7c3e3b7e8c6f8e7485432e4f3b88da3031a6e20afa7c711eded32ddfb122896ac5d914e75848d5 languageName: node linkType: hard "yargs-parser@npm:^21.1.1": version: 21.1.1 resolution: "yargs-parser@npm:21.1.1" checksum: ed2d96a616a9e3e1cc7d204c62ecc61f7aaab633dcbfab2c6df50f7f87b393993fe6640d017759fe112d0cb1e0119f2b4150a87305cc873fd90831c6a58ccf1c languageName: node linkType: hard "yargs@npm:~17.7.2": version: 17.7.2 resolution: "yargs@npm:17.7.2" dependencies: cliui: ^8.0.1 escalade: ^3.1.1 get-caller-file: ^2.0.5 require-directory: ^2.1.1 string-width: ^4.2.3 y18n: ^5.0.5 yargs-parser: ^21.1.1 checksum: 73b572e863aa4a8cbef323dd911d79d193b772defd5a51aab0aca2d446655216f5002c42c5306033968193bdbf892a7a4c110b0d77954a7fdf563e653967b56a languageName: node linkType: hard "yarn-deduplicate@npm:^6.0.1": version: 6.0.2 resolution: "yarn-deduplicate@npm:6.0.2" dependencies: "@yarnpkg/lockfile": ^1.1.0 commander: ^10.0.1 semver: ^7.5.0 tslib: ^2.5.0 bin: yarn-deduplicate: dist/cli.js checksum: 2f6c38deaa1139f3a099069dc946a3800e5ba64410d1c45f516dc381e4b1619f0d4f7ad3b38a617e3a85d629ce42e5592105de7089a0da4d0198881ee5390947 languageName: node linkType: hard "yjs@npm:^13.5.40": version: 13.6.4 resolution: "yjs@npm:13.6.4" dependencies: lib0: ^0.2.74 checksum: 7ca6a6c0b4d15492e8f5a7d57d0264ccf652932b3358323f6316a58eb92f86e2cb5c57b1e8d7f9ebe6689d1aaea7ac7846ff5cfce99ce2ac6a586c0962a3bfe6 languageName: node linkType: hard ipywidgets-8.1.1/yarn.lock000066400000000000000000020606621450026722000155460ustar00rootroot00000000000000# This file is generated by running "yarn install" inside your project. # Manual changes might be lost - proceed with caution! __metadata: version: 6 cacheKey: 8 "@ampproject/remapping@npm:^2.2.0": version: 2.2.1 resolution: "@ampproject/remapping@npm:2.2.1" dependencies: "@jridgewell/gen-mapping": ^0.3.0 "@jridgewell/trace-mapping": ^0.3.9 checksum: 03c04fd526acc64a1f4df22651186f3e5ef0a9d6d6530ce4482ec9841269cf7a11dbb8af79237c282d721c5312024ff17529cd72cc4768c11e999b58e2302079 languageName: node linkType: hard "@babel/code-frame@npm:^7.0.0, @babel/code-frame@npm:^7.18.6, @babel/code-frame@npm:^7.21.4": version: 7.21.4 resolution: "@babel/code-frame@npm:7.21.4" dependencies: "@babel/highlight": ^7.18.6 checksum: e5390e6ec1ac58dcef01d4f18eaf1fd2f1325528661ff6d4a5de8979588b9f5a8e852a54a91b923846f7a5c681b217f0a45c2524eb9560553160cd963b7d592c languageName: node linkType: hard "@babel/compat-data@npm:^7.21.5": version: 7.21.7 resolution: "@babel/compat-data@npm:7.21.7" checksum: 28747eb3fc084d088ba2db0336f52118cfa730a57bdbac81630cae1f38ad0336605b95b3390325937802f344e0b7fa25e2f1b67e3ee2d7383b877f88dee0e51c languageName: node linkType: hard "@babel/core@npm:^7.12.3": version: 7.21.8 resolution: "@babel/core@npm:7.21.8" dependencies: "@ampproject/remapping": ^2.2.0 "@babel/code-frame": ^7.21.4 "@babel/generator": ^7.21.5 "@babel/helper-compilation-targets": ^7.21.5 "@babel/helper-module-transforms": ^7.21.5 "@babel/helpers": ^7.21.5 "@babel/parser": ^7.21.8 "@babel/template": ^7.20.7 "@babel/traverse": ^7.21.5 "@babel/types": ^7.21.5 convert-source-map: ^1.7.0 debug: ^4.1.0 gensync: ^1.0.0-beta.2 json5: ^2.2.2 semver: ^6.3.0 checksum: f28118447355af2a90bd340e2e60699f94c8020517eba9b71bf8ebff62fa9e00d63f076e033f9dfb97548053ad62ada45fafb0d96584b1a90e8aef5a3b8241b1 languageName: node linkType: hard "@babel/generator@npm:^7.21.5": version: 7.21.5 resolution: "@babel/generator@npm:7.21.5" dependencies: "@babel/types": ^7.21.5 "@jridgewell/gen-mapping": ^0.3.2 "@jridgewell/trace-mapping": ^0.3.17 jsesc: ^2.5.1 checksum: 78af737b9dd701d4c657f9731880430fa1c177767b562f4e8a330a7fe72a4abe857e3d24de4e6d9dafc1f6a11f894162d27e523d7e5948ff9e3925a0ce9867c4 languageName: node linkType: hard "@babel/helper-compilation-targets@npm:^7.21.5": version: 7.21.5 resolution: "@babel/helper-compilation-targets@npm:7.21.5" dependencies: "@babel/compat-data": ^7.21.5 "@babel/helper-validator-option": ^7.21.0 browserslist: ^4.21.3 lru-cache: ^5.1.1 semver: ^6.3.0 peerDependencies: "@babel/core": ^7.0.0 checksum: 0edecb9c970ddc22ebda1163e77a7f314121bef9e483e0e0d9a5802540eed90d5855b6bf9bce03419b35b2e07c323e62d0353b153fa1ca34f17dbba897a83c25 languageName: node linkType: hard "@babel/helper-environment-visitor@npm:^7.21.5": version: 7.21.5 resolution: "@babel/helper-environment-visitor@npm:7.21.5" checksum: e436af7b62956e919066448013a3f7e2cd0b51010c26c50f790124dcd350be81d5597b4e6ed0a4a42d098a27de1e38561cd7998a116a42e7899161192deac9a6 languageName: node linkType: hard "@babel/helper-function-name@npm:^7.21.0": version: 7.21.0 resolution: "@babel/helper-function-name@npm:7.21.0" dependencies: "@babel/template": ^7.20.7 "@babel/types": ^7.21.0 checksum: d63e63c3e0e3e8b3138fa47b0cd321148a300ef12b8ee951196994dcd2a492cc708aeda94c2c53759a5c9177fffaac0fd8778791286746f72a000976968daf4e languageName: node linkType: hard "@babel/helper-hoist-variables@npm:^7.18.6": version: 7.18.6 resolution: "@babel/helper-hoist-variables@npm:7.18.6" dependencies: "@babel/types": ^7.18.6 checksum: fd9c35bb435fda802bf9ff7b6f2df06308a21277c6dec2120a35b09f9de68f68a33972e2c15505c1a1a04b36ec64c9ace97d4a9e26d6097b76b4396b7c5fa20f languageName: node linkType: hard "@babel/helper-module-imports@npm:^7.21.4": version: 7.21.4 resolution: "@babel/helper-module-imports@npm:7.21.4" dependencies: "@babel/types": ^7.21.4 checksum: bd330a2edaafeb281fbcd9357652f8d2666502567c0aad71db926e8499c773c9ea9c10dfaae30122452940326d90c8caff5c649ed8e1bf15b23f858758d3abc6 languageName: node linkType: hard "@babel/helper-module-transforms@npm:^7.21.5": version: 7.21.5 resolution: "@babel/helper-module-transforms@npm:7.21.5" dependencies: "@babel/helper-environment-visitor": ^7.21.5 "@babel/helper-module-imports": ^7.21.4 "@babel/helper-simple-access": ^7.21.5 "@babel/helper-split-export-declaration": ^7.18.6 "@babel/helper-validator-identifier": ^7.19.1 "@babel/template": ^7.20.7 "@babel/traverse": ^7.21.5 "@babel/types": ^7.21.5 checksum: 1ccfc88830675a5d485d198e918498f9683cdd46f973fdd4fe1c85b99648fb70f87fca07756c7a05dc201bd9b248c74ced06ea80c9991926ac889f53c3659675 languageName: node linkType: hard "@babel/helper-simple-access@npm:^7.21.5": version: 7.21.5 resolution: "@babel/helper-simple-access@npm:7.21.5" dependencies: "@babel/types": ^7.21.5 checksum: ad212beaa24be3864c8c95bee02f840222457ccf5419991e2d3e3e39b0f75b77e7e857e0bf4ed428b1cd97acefc87f3831bdb0b9696d5ad0557421f398334fc3 languageName: node linkType: hard "@babel/helper-split-export-declaration@npm:^7.18.6": version: 7.18.6 resolution: "@babel/helper-split-export-declaration@npm:7.18.6" dependencies: "@babel/types": ^7.18.6 checksum: c6d3dede53878f6be1d869e03e9ffbbb36f4897c7cc1527dc96c56d127d834ffe4520a6f7e467f5b6f3c2843ea0e81a7819d66ae02f707f6ac057f3d57943a2b languageName: node linkType: hard "@babel/helper-string-parser@npm:^7.21.5": version: 7.21.5 resolution: "@babel/helper-string-parser@npm:7.21.5" checksum: 36c0ded452f3858e67634b81960d4bde1d1cd2a56b82f4ba2926e97864816021c885f111a7cf81de88a0ed025f49d84a393256700e9acbca2d99462d648705d8 languageName: node linkType: hard "@babel/helper-validator-identifier@npm:^7.18.6, @babel/helper-validator-identifier@npm:^7.19.1": version: 7.19.1 resolution: "@babel/helper-validator-identifier@npm:7.19.1" checksum: 0eca5e86a729162af569b46c6c41a63e18b43dbe09fda1d2a3c8924f7d617116af39cac5e4cd5d431bb760b4dca3c0970e0c444789b1db42bcf1fa41fbad0a3a languageName: node linkType: hard "@babel/helper-validator-option@npm:^7.21.0": version: 7.21.0 resolution: "@babel/helper-validator-option@npm:7.21.0" checksum: 8ece4c78ffa5461fd8ab6b6e57cc51afad59df08192ed5d84b475af4a7193fc1cb794b59e3e7be64f3cdc4df7ac78bf3dbb20c129d7757ae078e6279ff8c2f07 languageName: node linkType: hard "@babel/helpers@npm:^7.21.5": version: 7.21.5 resolution: "@babel/helpers@npm:7.21.5" dependencies: "@babel/template": ^7.20.7 "@babel/traverse": ^7.21.5 "@babel/types": ^7.21.5 checksum: a6f74b8579713988e7f5adf1a986d8b5255757632ba65b2552f0f609ead5476edb784044c7e4b18f3681ee4818ca9d08c41feb9bd4e828648c25a00deaa1f9e4 languageName: node linkType: hard "@babel/highlight@npm:^7.18.6": version: 7.18.6 resolution: "@babel/highlight@npm:7.18.6" dependencies: "@babel/helper-validator-identifier": ^7.18.6 chalk: ^2.0.0 js-tokens: ^4.0.0 checksum: 92d8ee61549de5ff5120e945e774728e5ccd57fd3b2ed6eace020ec744823d4a98e242be1453d21764a30a14769ecd62170fba28539b211799bbaf232bbb2789 languageName: node linkType: hard "@babel/parser@npm:^7.14.7, @babel/parser@npm:^7.20.7, @babel/parser@npm:^7.21.5, @babel/parser@npm:^7.21.8": version: 7.21.8 resolution: "@babel/parser@npm:7.21.8" bin: parser: ./bin/babel-parser.js checksum: 1b9a820fedfb6ef179e6ffa1dbc080808882949dec68340a616da2aa354af66ea2886bd68e61bd444d270aa0b24ad6273e3cfaf17d6878c34bf2521becacb353 languageName: node linkType: hard "@babel/runtime@npm:^7.15.4": version: 7.21.5 resolution: "@babel/runtime@npm:7.21.5" dependencies: regenerator-runtime: ^0.13.11 checksum: 358f2779d3187f5c67ad302e8f8d435412925d0b991d133c7d4a7b1ddd5a3fda1b6f34537cb64628dfd96a27ae46df105bed3895b8d754b88cacdded8d1129dd languageName: node linkType: hard "@babel/template@npm:^7.20.7": version: 7.20.7 resolution: "@babel/template@npm:7.20.7" dependencies: "@babel/code-frame": ^7.18.6 "@babel/parser": ^7.20.7 "@babel/types": ^7.20.7 checksum: 2eb1a0ab8d415078776bceb3473d07ab746e6bb4c2f6ca46ee70efb284d75c4a32bb0cd6f4f4946dec9711f9c0780e8e5d64b743208deac6f8e9858afadc349e languageName: node linkType: hard "@babel/traverse@npm:^7.21.5": version: 7.21.5 resolution: "@babel/traverse@npm:7.21.5" dependencies: "@babel/code-frame": ^7.21.4 "@babel/generator": ^7.21.5 "@babel/helper-environment-visitor": ^7.21.5 "@babel/helper-function-name": ^7.21.0 "@babel/helper-hoist-variables": ^7.18.6 "@babel/helper-split-export-declaration": ^7.18.6 "@babel/parser": ^7.21.5 "@babel/types": ^7.21.5 debug: ^4.1.0 globals: ^11.1.0 checksum: b403733fa7d858f0c8e224f0434a6ade641bc469a4f92975363391e796629d5bf53e544761dfe85039aab92d5389ebe7721edb309d7a5bb7df2bf74f37bf9f47 languageName: node linkType: hard "@babel/types@npm:^7.18.6, @babel/types@npm:^7.20.7, @babel/types@npm:^7.21.0, @babel/types@npm:^7.21.4, @babel/types@npm:^7.21.5, @babel/types@npm:^7.8.3": version: 7.21.5 resolution: "@babel/types@npm:7.21.5" dependencies: "@babel/helper-string-parser": ^7.21.5 "@babel/helper-validator-identifier": ^7.19.1 to-fast-properties: ^2.0.0 checksum: 43242a99c612d13285ee4af46cc0f1066bcb6ffd38307daef7a76e8c70f36cfc3255eb9e75c8e768b40e761176c313aec4d5c0b9d97a21e494d49d5fd123a9f7 languageName: node linkType: hard "@codemirror/autocomplete@npm:^6.0.0, @codemirror/autocomplete@npm:^6.3.2, @codemirror/autocomplete@npm:^6.5.1": version: 6.7.1 resolution: "@codemirror/autocomplete@npm:6.7.1" dependencies: "@codemirror/language": ^6.0.0 "@codemirror/state": ^6.0.0 "@codemirror/view": ^6.6.0 "@lezer/common": ^1.0.0 peerDependencies: "@codemirror/language": ^6.0.0 "@codemirror/state": ^6.0.0 "@codemirror/view": ^6.0.0 "@lezer/common": ^1.0.0 checksum: 5f1331cceb6a7b0bd4dc9bad6025d16d1c415bfc2fba29b452f9f5501abd34b75a240e3a20fb9fed92a82a666e54562c32cfe220892713bfbd5a5a16fa004cd8 languageName: node linkType: hard "@codemirror/commands@npm:^6.2.3": version: 6.2.4 resolution: "@codemirror/commands@npm:6.2.4" dependencies: "@codemirror/language": ^6.0.0 "@codemirror/state": ^6.2.0 "@codemirror/view": ^6.0.0 "@lezer/common": ^1.0.0 checksum: 468895fa19ff0554181b698c81f850820de5c0289cab92c44392fb127286f09ca72b921d6ea4353b70b616a4fd0c3667d86b6f917202a3ad2e196eb7b581f7b6 languageName: node linkType: hard "@codemirror/lang-cpp@npm:^6.0.2": version: 6.0.2 resolution: "@codemirror/lang-cpp@npm:6.0.2" dependencies: "@codemirror/language": ^6.0.0 "@lezer/cpp": ^1.0.0 checksum: bb9eba482cca80037ce30c7b193cf45eff19ccbb773764fddf2071756468ecc25aa53c777c943635054f89095b0247b9b50c339e107e41e68d34d12a7295f9a9 languageName: node linkType: hard "@codemirror/lang-css@npm:^6.0.0, @codemirror/lang-css@npm:^6.1.1": version: 6.2.0 resolution: "@codemirror/lang-css@npm:6.2.0" dependencies: "@codemirror/autocomplete": ^6.0.0 "@codemirror/language": ^6.0.0 "@codemirror/state": ^6.0.0 "@lezer/common": ^1.0.2 "@lezer/css": ^1.0.0 checksum: d824f169083613b63f04992c24d3fecd45c718cd3deb9da3f332dd3a889a762d05ea812e31ddf7ee4b661722f8c8b49676515cb98609067c53e25ac8b469a5e4 languageName: node linkType: hard "@codemirror/lang-html@npm:^6.0.0, @codemirror/lang-html@npm:^6.4.3": version: 6.4.3 resolution: "@codemirror/lang-html@npm:6.4.3" dependencies: "@codemirror/autocomplete": ^6.0.0 "@codemirror/lang-css": ^6.0.0 "@codemirror/lang-javascript": ^6.0.0 "@codemirror/language": ^6.4.0 "@codemirror/state": ^6.0.0 "@codemirror/view": ^6.2.2 "@lezer/common": ^1.0.0 "@lezer/css": ^1.1.0 "@lezer/html": ^1.3.0 checksum: 6177d19147580964ecd6910ae951201929a96e63f4f0e624c3138e2805fa87ec6d6d952a3a888c5a52af78b6dd6d04d7d8c76c6a9cd65b1921dc467b5dbaea72 languageName: node linkType: hard "@codemirror/lang-java@npm:^6.0.1": version: 6.0.1 resolution: "@codemirror/lang-java@npm:6.0.1" dependencies: "@codemirror/language": ^6.0.0 "@lezer/java": ^1.0.0 checksum: 4679104683cbffcd224ac04c7e5d144b787494697b26470b07017259035b7bb3fa62609d9a61bfbc566f1756d9f972f9f26d96a3c1362dd48881c1172f9a914d languageName: node linkType: hard "@codemirror/lang-javascript@npm:^6.0.0, @codemirror/lang-javascript@npm:^6.1.7": version: 6.1.8 resolution: "@codemirror/lang-javascript@npm:6.1.8" dependencies: "@codemirror/autocomplete": ^6.0.0 "@codemirror/language": ^6.6.0 "@codemirror/lint": ^6.0.0 "@codemirror/state": ^6.0.0 "@codemirror/view": ^6.0.0 "@lezer/common": ^1.0.0 "@lezer/javascript": ^1.0.0 checksum: 58ccd1c96db52edc95015b3fc77021540c18b4b87ce2c9426402a53993a67d7946647aba7198223dc51a56ec55379603a6d986fe32332d85cb3d8768c92a562e languageName: node linkType: hard "@codemirror/lang-json@npm:^6.0.1": version: 6.0.1 resolution: "@codemirror/lang-json@npm:6.0.1" dependencies: "@codemirror/language": ^6.0.0 "@lezer/json": ^1.0.0 checksum: e9e87d50ff7b81bd56a6ab50740b1dd54e9a93f1be585e1d59d0642e2148842ea1528ac7b7221eb4ddc7fe84bbc28065144cc3ab86f6e06c6aeb2d4b4e62acf1 languageName: node linkType: hard "@codemirror/lang-markdown@npm:^6.1.1": version: 6.1.1 resolution: "@codemirror/lang-markdown@npm:6.1.1" dependencies: "@codemirror/lang-html": ^6.0.0 "@codemirror/language": ^6.3.0 "@codemirror/state": ^6.0.0 "@codemirror/view": ^6.0.0 "@lezer/common": ^1.0.0 "@lezer/markdown": ^1.0.0 checksum: db891dad10a8ea8db17d0a9222774389794cb0957b784e3f154bf27ab4a9be89a28ad4c2f6abf7d829115c3ce46694a2816b61723a5d5776c1d75d566ce016c8 languageName: node linkType: hard "@codemirror/lang-php@npm:^6.0.1": version: 6.0.1 resolution: "@codemirror/lang-php@npm:6.0.1" dependencies: "@codemirror/lang-html": ^6.0.0 "@codemirror/language": ^6.0.0 "@codemirror/state": ^6.0.0 "@lezer/common": ^1.0.0 "@lezer/php": ^1.0.0 checksum: c003a29a426486453fdfddbf7302982fa2aa7f059bf6f1ce4cbf08341b0162eee5e2f50e0d71c418dcd358491631780156d846fe352754d042576172c5d86721 languageName: node linkType: hard "@codemirror/lang-python@npm:^6.1.2": version: 6.1.2 resolution: "@codemirror/lang-python@npm:6.1.2" dependencies: "@codemirror/autocomplete": ^6.3.2 "@codemirror/language": ^6.0.0 "@lezer/python": ^1.0.0 checksum: e822a1236fb3c2773e1889d4a24f8f2f7fb45ab8cf6e0521d311508a3eda19c4dcf4e2f943766b93545e673f3f0336725418e0bb48b3d9fb6a942339d164cfa5 languageName: node linkType: hard "@codemirror/lang-rust@npm:^6.0.1": version: 6.0.1 resolution: "@codemirror/lang-rust@npm:6.0.1" dependencies: "@codemirror/language": ^6.0.0 "@lezer/rust": ^1.0.0 checksum: 8a439944cb22159b0b3465ca4fa4294c69843219d5d30e278ae6df8e48f30a7a9256129723c025ec9b5e694d31a3560fb004300b125ffcd81c22d13825845170 languageName: node linkType: hard "@codemirror/lang-sql@npm:^6.4.1": version: 6.5.0 resolution: "@codemirror/lang-sql@npm:6.5.0" dependencies: "@codemirror/autocomplete": ^6.0.0 "@codemirror/language": ^6.0.0 "@codemirror/state": ^6.0.0 "@lezer/highlight": ^1.0.0 "@lezer/lr": ^1.0.0 checksum: 5bc73293d85f3892633703f277787336c00135011b14ca34a3590975a02c5ec1d6826d201d827e3dfc1d3427e28d23f36b1ef4fd69fc5d79c98290030c11dad5 languageName: node linkType: hard "@codemirror/lang-wast@npm:^6.0.1": version: 6.0.1 resolution: "@codemirror/lang-wast@npm:6.0.1" dependencies: "@codemirror/language": ^6.0.0 "@lezer/highlight": ^1.0.0 "@lezer/lr": ^1.0.0 checksum: 600d98d3ea6a4e99292244ed707e39a2abd9f3abf62cfeff5c819a0cc0c7e86b8c5b91e91c1b7ea21233d9ea09c41abe61d8a40b2547bb5db74239c6df857934 languageName: node linkType: hard "@codemirror/lang-xml@npm:^6.0.2": version: 6.0.2 resolution: "@codemirror/lang-xml@npm:6.0.2" dependencies: "@codemirror/autocomplete": ^6.0.0 "@codemirror/language": ^6.4.0 "@codemirror/state": ^6.0.0 "@lezer/common": ^1.0.0 "@lezer/xml": ^1.0.0 checksum: e156ecafaa87e9b6ef4ab6812ccd00d8f3c6cb81f232837636b36336d80513b61936dfee6f4f6800574f236208b61e95a2abcb997cdcd7366585a6b796e0e13b languageName: node linkType: hard "@codemirror/language@npm:^6.0.0, @codemirror/language@npm:^6.3.0, @codemirror/language@npm:^6.4.0, @codemirror/language@npm:^6.6.0": version: 6.6.0 resolution: "@codemirror/language@npm:6.6.0" dependencies: "@codemirror/state": ^6.0.0 "@codemirror/view": ^6.0.0 "@lezer/common": ^1.0.0 "@lezer/highlight": ^1.0.0 "@lezer/lr": ^1.0.0 style-mod: ^4.0.0 checksum: bb9411620e2f231653a3f0c4429e0d19a3843bff5dbc117df4649d7bf783ec4ad809c0add8bc0887a4ec3f48b4f8f941621168e47d76101d5383f0d670af1722 languageName: node linkType: hard "@codemirror/legacy-modes@npm:^6.3.2": version: 6.3.2 resolution: "@codemirror/legacy-modes@npm:6.3.2" dependencies: "@codemirror/language": ^6.0.0 checksum: fa5f5477fb9e19267251e2ecd3de8c1a4c2512813555bb60111dce3951f2c3f6080a2985a573b7542534ba1d2c34115f7e39ee23fdf8f6f81db6f8ce447c1efc languageName: node linkType: hard "@codemirror/lint@npm:^6.0.0": version: 6.2.1 resolution: "@codemirror/lint@npm:6.2.1" dependencies: "@codemirror/state": ^6.0.0 "@codemirror/view": ^6.0.0 crelt: ^1.0.5 checksum: 0e383c6b8b0fc463f90f8ebdc71628ba39cffbe4f3667a8382b8eedb61aff9eafe947cb3db947701c8f306acdc9576a2da889d0161ccdd14c9245705cfbd4571 languageName: node linkType: hard "@codemirror/search@npm:^6.3.0": version: 6.4.0 resolution: "@codemirror/search@npm:6.4.0" dependencies: "@codemirror/state": ^6.0.0 "@codemirror/view": ^6.0.0 crelt: ^1.0.5 checksum: 441e04fc896ac984f224e3adb20bc8a6c63d929778335c70d2cb1e3843674c7998db93e2ab1cd05e8276cb3819766cd23951eec748fdf8e66e3611bd9a55aab5 languageName: node linkType: hard "@codemirror/state@npm:^6.0.0, @codemirror/state@npm:^6.1.4, @codemirror/state@npm:^6.2.0": version: 6.2.0 resolution: "@codemirror/state@npm:6.2.0" checksum: fdc99c773dc09c700dd02bf918f06132aa8d3069c262cc4eb6ca5c810ce24ae2d7e90719ae7630a8158fd263018de6d40bd78f312e6bfba754e737b64e6c6b3d languageName: node linkType: hard "@codemirror/view@npm:^6.0.0, @codemirror/view@npm:^6.2.2, @codemirror/view@npm:^6.6.0, @codemirror/view@npm:^6.9.6": version: 6.11.2 resolution: "@codemirror/view@npm:6.11.2" dependencies: "@codemirror/state": ^6.1.4 style-mod: ^4.0.0 w3c-keyname: ^2.2.4 checksum: 8b1a99d69fad2ecd8284405fe139ab1ad397d4fa06ca3e572876d13200bb5d323acc4d5ef2fda0a6c95e53a26f833fa082fb05d1a5e87bc1fd7c03983d883708 languageName: node linkType: hard "@colors/colors@npm:1.5.0": version: 1.5.0 resolution: "@colors/colors@npm:1.5.0" checksum: d64d5260bed1d5012ae3fc617d38d1afc0329fec05342f4e6b838f46998855ba56e0a73833f4a80fa8378c84810da254f76a8a19c39d038260dc06dc4e007425 languageName: node linkType: hard "@discoveryjs/json-ext@npm:^0.5.0": version: 0.5.7 resolution: "@discoveryjs/json-ext@npm:0.5.7" checksum: 2176d301cc258ea5c2324402997cf8134ebb212469c0d397591636cea8d3c02f2b3cf9fd58dcb748c7a0dade77ebdc1b10284fa63e608c033a1db52fddc69918 languageName: node linkType: hard "@eslint-community/eslint-utils@npm:^4.2.0": version: 4.4.0 resolution: "@eslint-community/eslint-utils@npm:4.4.0" dependencies: eslint-visitor-keys: ^3.3.0 peerDependencies: eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 checksum: cdfe3ae42b4f572cbfb46d20edafe6f36fc5fb52bf2d90875c58aefe226892b9677fef60820e2832caf864a326fe4fc225714c46e8389ccca04d5f9288aabd22 languageName: node linkType: hard "@eslint-community/regexpp@npm:^4.4.0": version: 4.5.1 resolution: "@eslint-community/regexpp@npm:4.5.1" checksum: 6d901166d64998d591fab4db1c2f872981ccd5f6fe066a1ad0a93d4e11855ecae6bfb76660869a469563e8882d4307228cebd41142adb409d182f2966771e57e languageName: node linkType: hard "@eslint/eslintrc@npm:^2.0.3": version: 2.0.3 resolution: "@eslint/eslintrc@npm:2.0.3" dependencies: ajv: ^6.12.4 debug: ^4.3.2 espree: ^9.5.2 globals: ^13.19.0 ignore: ^5.2.0 import-fresh: ^3.2.1 js-yaml: ^4.1.0 minimatch: ^3.1.2 strip-json-comments: ^3.1.1 checksum: ddc51f25f8524d8231db9c9bf03177e503d941a332e8d5ce3b10b09241be4d5584a378a529a27a527586bfbccf3031ae539eb891352033c340b012b4d0c81d92 languageName: node linkType: hard "@eslint/js@npm:8.40.0": version: 8.40.0 resolution: "@eslint/js@npm:8.40.0" checksum: e84936b8ebd1c8fd90e860182e95d1404006da4cbca722b14950b298aeeca102b080aa9b62c8e69f90824ec54e19f1ba79b239046223624d1414ee82e8e628ac languageName: node linkType: hard "@fortawesome/fontawesome-free@npm:^5.12.0": version: 5.15.4 resolution: "@fortawesome/fontawesome-free@npm:5.15.4" checksum: 32281c3df4075290d9a96dfc22f72fadb3da7055d4117e48d34046b8c98032a55fa260ae351b0af5d6f6fb57a2f5d79a4abe52af456da35195f7cb7dda27b4a2 languageName: node linkType: hard "@gar/promisify@npm:^1.1.3": version: 1.1.3 resolution: "@gar/promisify@npm:1.1.3" checksum: 4059f790e2d07bf3c3ff3e0fec0daa8144fe35c1f6e0111c9921bd32106adaa97a4ab096ad7dab1e28ee6a9060083c4d1a4ada42a7f5f3f7a96b8812e2b757c1 languageName: node linkType: hard "@humanwhocodes/config-array@npm:^0.11.8": version: 0.11.8 resolution: "@humanwhocodes/config-array@npm:0.11.8" dependencies: "@humanwhocodes/object-schema": ^1.2.1 debug: ^4.1.1 minimatch: ^3.0.5 checksum: 0fd6b3c54f1674ce0a224df09b9c2f9846d20b9e54fabae1281ecfc04f2e6ad69bf19e1d6af6a28f88e8aa3990168b6cb9e1ef755868c3256a630605ec2cb1d3 languageName: node linkType: hard "@humanwhocodes/module-importer@npm:^1.0.1": version: 1.0.1 resolution: "@humanwhocodes/module-importer@npm:1.0.1" checksum: 0fd22007db8034a2cdf2c764b140d37d9020bbfce8a49d3ec5c05290e77d4b0263b1b972b752df8c89e5eaa94073408f2b7d977aed131faf6cf396ebb5d7fb61 languageName: node linkType: hard "@humanwhocodes/object-schema@npm:^1.2.1": version: 1.2.1 resolution: "@humanwhocodes/object-schema@npm:1.2.1" checksum: a824a1ec31591231e4bad5787641f59e9633827d0a2eaae131a288d33c9ef0290bd16fda8da6f7c0fcb014147865d12118df10db57f27f41e20da92369fcb3f1 languageName: node linkType: hard "@hutson/parse-repository-url@npm:^3.0.0": version: 3.0.2 resolution: "@hutson/parse-repository-url@npm:3.0.2" checksum: 39992c5f183c5ca3d761d6ed9dfabcb79b5f3750bf1b7f3532e1dc439ca370138bbd426ee250fdaba460bc948e6761fbefd484b8f4f36885d71ded96138340d1 languageName: node linkType: hard "@isaacs/cliui@npm:^8.0.2": version: 8.0.2 resolution: "@isaacs/cliui@npm:8.0.2" dependencies: string-width: ^5.1.2 string-width-cjs: "npm:string-width@^4.2.0" strip-ansi: ^7.0.1 strip-ansi-cjs: "npm:strip-ansi@^6.0.1" wrap-ansi: ^8.1.0 wrap-ansi-cjs: "npm:wrap-ansi@^7.0.0" checksum: 4a473b9b32a7d4d3cfb7a614226e555091ff0c5a29a1734c28c72a182c2f6699b26fc6b5c2131dfd841e86b185aea714c72201d7c98c2fba5f17709333a67aeb languageName: node linkType: hard "@isaacs/string-locale-compare@npm:^1.1.0": version: 1.1.0 resolution: "@isaacs/string-locale-compare@npm:1.1.0" checksum: 7287da5d11497b82c542d3c2abe534808015be4f4883e71c26853277b5456f6bbe4108535db847a29f385ad6dc9318ffb0f55ee79bb5f39993233d7dccf8751d languageName: node linkType: hard "@istanbuljs/schema@npm:^0.1.2": version: 0.1.3 resolution: "@istanbuljs/schema@npm:0.1.3" checksum: 5282759d961d61350f33d9118d16bcaed914ebf8061a52f4fa474b2cb08720c9c81d165e13b82f2e5a8a212cc5af482f0c6fc1ac27b9e067e5394c9a6ed186c9 languageName: node linkType: hard "@jridgewell/gen-mapping@npm:^0.3.0, @jridgewell/gen-mapping@npm:^0.3.2": version: 0.3.3 resolution: "@jridgewell/gen-mapping@npm:0.3.3" dependencies: "@jridgewell/set-array": ^1.0.1 "@jridgewell/sourcemap-codec": ^1.4.10 "@jridgewell/trace-mapping": ^0.3.9 checksum: 4a74944bd31f22354fc01c3da32e83c19e519e3bbadafa114f6da4522ea77dd0c2842607e923a591d60a76699d819a2fbb6f3552e277efdb9b58b081390b60ab languageName: node linkType: hard "@jridgewell/resolve-uri@npm:3.1.0": version: 3.1.0 resolution: "@jridgewell/resolve-uri@npm:3.1.0" checksum: b5ceaaf9a110fcb2780d1d8f8d4a0bfd216702f31c988d8042e5f8fbe353c55d9b0f55a1733afdc64806f8e79c485d2464680ac48a0d9fcadb9548ee6b81d267 languageName: node linkType: hard "@jridgewell/set-array@npm:^1.0.1": version: 1.1.2 resolution: "@jridgewell/set-array@npm:1.1.2" checksum: 69a84d5980385f396ff60a175f7177af0b8da4ddb81824cb7016a9ef914eee9806c72b6b65942003c63f7983d4f39a5c6c27185bbca88eb4690b62075602e28e languageName: node linkType: hard "@jridgewell/source-map@npm:^0.3.2": version: 0.3.3 resolution: "@jridgewell/source-map@npm:0.3.3" dependencies: "@jridgewell/gen-mapping": ^0.3.0 "@jridgewell/trace-mapping": ^0.3.9 checksum: ae1302146339667da5cd6541260ecbef46ae06819a60f88da8f58b3e64682f787c09359933d050dea5d2173ea7fa40f40dd4d4e7a8d325c5892cccd99aaf8959 languageName: node linkType: hard "@jridgewell/sourcemap-codec@npm:1.4.14": version: 1.4.14 resolution: "@jridgewell/sourcemap-codec@npm:1.4.14" checksum: 61100637b6d173d3ba786a5dff019e1a74b1f394f323c1fee337ff390239f053b87266c7a948777f4b1ee68c01a8ad0ab61e5ff4abb5a012a0b091bec391ab97 languageName: node linkType: hard "@jridgewell/sourcemap-codec@npm:^1.4.10": version: 1.4.15 resolution: "@jridgewell/sourcemap-codec@npm:1.4.15" checksum: b881c7e503db3fc7f3c1f35a1dd2655a188cc51a3612d76efc8a6eb74728bef5606e6758ee77423e564092b4a518aba569bbb21c9bac5ab7a35b0c6ae7e344c8 languageName: node linkType: hard "@jridgewell/trace-mapping@npm:^0.3.17, @jridgewell/trace-mapping@npm:^0.3.9": version: 0.3.18 resolution: "@jridgewell/trace-mapping@npm:0.3.18" dependencies: "@jridgewell/resolve-uri": 3.1.0 "@jridgewell/sourcemap-codec": 1.4.14 checksum: 0572669f855260808c16fe8f78f5f1b4356463b11d3f2c7c0b5580c8ba1cbf4ae53efe9f627595830856e57dbac2325ac17eb0c3dd0ec42102e6f227cc289c02 languageName: node linkType: hard "@jupyter-widgets/base-manager@^1.0.6, @jupyter-widgets/base-manager@workspace:packages/base-manager": version: 0.0.0-use.local resolution: "@jupyter-widgets/base-manager@workspace:packages/base-manager" dependencies: "@jupyter-widgets/base": ^6.0.5 "@jupyterlab/services": ^6.0.0 || ^7.0.0 "@lumino/coreutils": ^1.11.1 || ^2 "@types/base64-js": ^1.2.5 "@types/chai": ^4.1.7 "@types/chai-as-promised": ^7.1.0 "@types/expect.js": ^0.3.29 "@types/mocha": ^9.0.0 "@types/sanitize-html": ^2.6.0 "@types/sinon": ^10.0.2 "@types/sinon-chai": ^3.2.2 base64-js: ^1.2.1 chai: ^4.0.0 chai-as-promised: ^7.0.0 expect.js: ^0.3.1 istanbul-instrumenter-loader: ^3.0.1 karma: ^6.3.3 karma-chrome-launcher: ^3.1.0 karma-coverage: ^2.0.3 karma-firefox-launcher: ^2.1.1 karma-ie-launcher: ^1.0.0 karma-mocha: ^2.0.1 karma-mocha-reporter: ^2.2.5 karma-webpack: ^5.0.0 mocha: ^9.0.0 npm-run-all: ^4.1.5 rimraf: ^3.0.2 sanitize-html: ^2.3 sinon: ^12.0.1 sinon-chai: ^3.3.0 typescript: ~4.9.4 webpack: ^5.65.0 languageName: unknown linkType: soft "@jupyter-widgets/base@^6.0.5, @jupyter-widgets/base@workspace:packages/base": version: 0.0.0-use.local resolution: "@jupyter-widgets/base@workspace:packages/base" dependencies: "@jupyterlab/services": ^6.0.0 || ^7.0.0 "@lumino/coreutils": ^1.11.1 || ^2.1 "@lumino/messaging": ^1.10.1 || ^2.1 "@lumino/widgets": ^1.30.0 || ^2.1 "@types/backbone": 1.4.14 "@types/base64-js": ^1.2.5 "@types/chai": ^4.1.7 "@types/chai-as-promised": ^7.1.0 "@types/expect.js": ^0.3.29 "@types/jquery": ^3.5.16 "@types/lodash": ^4.14.134 "@types/mocha": ^9.0.0 "@types/sinon": ^10.0.2 "@types/sinon-chai": ^3.2.2 backbone: 1.4.0 chai: ^4.0.0 chai-as-promised: ^7.0.0 expect.js: ^0.3.1 istanbul-instrumenter-loader: ^3.0.1 jquery: ^3.1.1 karma: ^6.3.3 karma-chrome-launcher: ^3.1.0 karma-coverage: ^2.0.3 karma-firefox-launcher: ^2.1.1 karma-ie-launcher: ^1.0.0 karma-mocha: ^2.0.1 karma-mocha-reporter: ^2.2.5 karma-webpack: ^5.0.0 lodash: ^4.17.4 mocha: ^9.0.0 npm-run-all: ^4.1.5 rimraf: ^3.0.2 sinon: ^12.0.1 sinon-chai: ^3.3.0 typescript: ~4.9.4 webpack: ^5.65.0 languageName: unknown linkType: soft "@jupyter-widgets/controls@^5.0.6, @jupyter-widgets/controls@workspace:packages/controls": version: 0.0.0-use.local resolution: "@jupyter-widgets/controls@workspace:packages/controls" dependencies: "@jupyter-widgets/base": ^6.0.5 "@jupyterlab/services": ^6.0.0 || ^7.0.0 "@lumino/algorithm": ^1.9.1 || ^2.1 "@lumino/domutils": ^1.8.1 || ^2.1 "@lumino/messaging": ^1.10.1 || ^2.1 "@lumino/signaling": ^1.10.1 || ^2.1 "@lumino/widgets": ^1.30.0 || ^2.1 "@types/d3-color": ^3.0.2 "@types/d3-format": ^3.0.1 "@types/expect.js": ^0.3.29 "@types/jquery": ^3.5.16 "@types/mathjax": ^0.0.37 "@types/mocha": ^9.0.0 "@types/node": ^17.0.2 chai: ^4.0.0 css-loader: ^6.5.1 d3-color: ^3.0.1 d3-format: ^3.0.1 expect.js: ^0.3.1 istanbul-instrumenter-loader: ^3.0.1 jquery: ^3.1.1 karma: ^6.3.3 karma-chrome-launcher: ^3.1.0 karma-coverage: ^2.0.3 karma-firefox-launcher: ^2.1.1 karma-ie-launcher: ^1.0.0 karma-mocha: ^2.0.1 karma-mocha-reporter: ^2.2.5 karma-webpack: ^5.0.0 less: ^4.1.2 mocha: ^9.0.0 nouislider: 15.4.0 npm-run-all: ^4.1.5 postcss: ^8.3.2 postcss-cli: ^9.1.0 postcss-cssnext: ^3.1.0 postcss-import: ^14.0.2 postcss-loader: ^6.1.0 rimraf: ^3.0.2 sinon: ^12.0.1 sinon-chai: ^3.3.0 style-loader: ^3.3.1 typescript: ~4.9.4 webpack: ^5.65.0 languageName: unknown linkType: soft "@jupyter-widgets/example-web1@workspace:examples/web1": version: 0.0.0-use.local resolution: "@jupyter-widgets/example-web1@workspace:examples/web1" dependencies: "@jupyter-widgets/base": ^6.0.5 "@jupyter-widgets/base-manager": ^1.0.6 "@jupyter-widgets/controls": ^5.0.6 chai: ^4.0.0 css-loader: ^6.5.1 karma: ^6.3.3 karma-chai: ^0.1.0 karma-chrome-launcher: ^3.1.0 karma-firefox-launcher: ^2.1.1 karma-mocha: ^2.0.1 karma-mocha-reporter: ^2.2.5 mocha: ^9.0.0 style-loader: ^3.3.1 webpack: ^5.65.0 languageName: unknown linkType: soft "@jupyter-widgets/example-web2@workspace:examples/web2": version: 0.0.0-use.local resolution: "@jupyter-widgets/example-web2@workspace:examples/web2" dependencies: "@jupyter-widgets/base": ^6.0.5 "@jupyter-widgets/base-manager": ^1.0.6 "@jupyter-widgets/controls": ^5.0.6 codemirror: ^5.48.0 css-loader: ^6.5.1 font-awesome: ^4.7.0 style-loader: ^3.3.1 webpack: ^5.65.0 languageName: unknown linkType: soft "@jupyter-widgets/example-web3@workspace:examples/web3": version: 0.0.0-use.local resolution: "@jupyter-widgets/example-web3@workspace:examples/web3" dependencies: "@jupyter-widgets/base": ^6.0.5 "@jupyter-widgets/controls": ^5.0.6 "@jupyter-widgets/html-manager": ^1.0.8 "@jupyterlab/services": ^6.0.0 || ^7.0.0 "@types/codemirror": ^5.60.0 "@types/node": ^17.0.2 codemirror: ^5.48.0 css-loader: ^6.5.1 font-awesome: ^4.7.0 fs-extra: ^10.0.0 http-server: ^14.0.0 rimraf: ^3.0.2 style-loader: ^3.3.1 typescript: ~4.9.4 webpack: ^5.65.0 languageName: unknown linkType: soft "@jupyter-widgets/example-web4@workspace:examples/web4": version: 0.0.0-use.local resolution: "@jupyter-widgets/example-web4@workspace:examples/web4" dependencies: "@jupyter-widgets/html-manager": ^1.0.8 css-loader: ^6.5.1 font-awesome: ^4.7.0 style-loader: ^3.3.1 webpack: ^5.65.0 languageName: unknown linkType: soft "@jupyter-widgets/html-manager@^1.0.8, @jupyter-widgets/html-manager@workspace:packages/html-manager": version: 0.0.0-use.local resolution: "@jupyter-widgets/html-manager@workspace:packages/html-manager" dependencies: "@fortawesome/fontawesome-free": ^5.12.0 "@jupyter-widgets/base": ^6.0.5 "@jupyter-widgets/base-manager": ^1.0.6 "@jupyter-widgets/controls": ^5.0.6 "@jupyter-widgets/output": ^6.0.5 "@jupyter-widgets/schema": ^0.5.3 "@jupyterlab/outputarea": ^3.0.0 || ^4.0.0 "@jupyterlab/rendermime": ^3.0.0 || ^4.0.0 "@jupyterlab/rendermime-interfaces": ^3.0.0 || ^4.0.0 "@lumino/messaging": ^1.10.1 || ^2.1 "@lumino/widgets": ^1.30.0 || ^2.1 "@types/jquery": ^3.5.16 "@types/mocha": ^9.0.0 "@types/node": ^17.0.2 "@types/sanitize-html": ^2.6.0 ajv: ^8.6.0 chai: ^4.0.0 css-loader: ^6.5.1 jquery: ^3.1.1 karma: ^6.3.3 karma-chrome-launcher: ^3.1.0 karma-firefox-launcher: ^2.1.1 karma-ie-launcher: ^1.0.0 karma-mocha: ^2.0.1 karma-mocha-reporter: ^2.2.5 mocha: ^9.0.0 postcss: ^8.3.2 postcss-cssnext: ^3.1.0 postcss-import: ^14.0.2 postcss-loader: ^6.1.0 rimraf: ^3.0.2 style-loader: ^3.3.1 typescript: ~4.9.4 webpack: ^5.65.0 webpack-cli: ^4.7.2 languageName: unknown linkType: soft "@jupyter-widgets/jupyterlab-manager@workspace:python/jupyterlab_widgets": version: 0.0.0-use.local resolution: "@jupyter-widgets/jupyterlab-manager@workspace:python/jupyterlab_widgets" dependencies: "@jupyter-widgets/base": ^6.0.5 "@jupyter-widgets/base-manager": ^1.0.6 "@jupyter-widgets/controls": ^5.0.6 "@jupyter-widgets/output": ^6.0.5 "@jupyterlab/application": ^3.0.0 || ^4.0.0 "@jupyterlab/builder": ^3.0.0 || ^4.0.0 "@jupyterlab/cells": ^3.0.0 || ^4.0.0 "@jupyterlab/docregistry": ^3.0.0 || ^4.0.0 "@jupyterlab/logconsole": ^3.0.0 || ^4.0.0 "@jupyterlab/mainmenu": ^3.0.0 || ^4.0.0 "@jupyterlab/nbformat": ^3.0.0 || ^4.0.0 "@jupyterlab/notebook": ^3.0.0 || ^4.0.0 "@jupyterlab/outputarea": ^3.0.0 || ^4.0.0 "@jupyterlab/rendermime": ^3.0.0 || ^4.0.0 "@jupyterlab/rendermime-interfaces": ^3.0.0 || ^4.0.0 "@jupyterlab/services": ^6.0.0 || ^7.0.0 "@jupyterlab/settingregistry": ^3.0.0 || ^4.0.0 "@jupyterlab/translation": ^3.0.0 || ^4.0.0 "@lumino/algorithm": ^1.11.1 || ^2.0.0 "@lumino/coreutils": ^1.11.1 || ^2.1 "@lumino/disposable": ^1.10.1 || ^2.1 "@lumino/properties": ^1.8.1 || ^2.1 "@lumino/signaling": ^1.10.1 || ^2.1 "@lumino/widgets": ^1.30.0 || ^2.1 "@types/backbone": 1.4.14 "@types/jquery": ^3.5.16 "@types/semver": ^7.3.6 "@typescript-eslint/eslint-plugin": ^5.8.0 "@typescript-eslint/parser": ^5.8.0 eslint: ^8.5.0 eslint-config-prettier: ^8.3.0 eslint-plugin-prettier: ^4.0.0 jquery: ^3.1.1 npm-run-all: ^4.1.5 prettier: ^2.3.2 rimraf: ^3.0.2 semver: ^7.3.5 source-map-loader: ^4.0.1 typescript: ~4.9.4 languageName: unknown linkType: soft "@jupyter-widgets/notebook-manager@workspace:python/widgetsnbextension": version: 0.0.0-use.local resolution: "@jupyter-widgets/notebook-manager@workspace:python/widgetsnbextension" dependencies: "@jupyter-widgets/base": ^6.0.5 "@jupyter-widgets/base-manager": ^1.0.6 "@jupyter-widgets/controls": ^5.0.6 "@jupyter-widgets/html-manager": ^1.0.8 "@jupyter-widgets/output": ^6.0.5 "@jupyterlab/services": ^6.0.0 || ^7.0.0 "@lumino/messaging": ^1.10.1 || ^2.1 "@lumino/widgets": ^1.30.0 || ^2.1 backbone: 1.4.0 css-loader: ^6.5.1 requirejs: ^2.3.6 rimraf: ^3.0.2 style-loader: ^3.3.1 webpack: ^5.65.0 webpack-cli: ^4.7.2 languageName: unknown linkType: soft "@jupyter-widgets/output@^6.0.5, @jupyter-widgets/output@workspace:packages/output": version: 0.0.0-use.local resolution: "@jupyter-widgets/output@workspace:packages/output" dependencies: "@jupyter-widgets/base": ^6.0.5 rimraf: ^3.0.2 typescript: ~4.9.4 languageName: unknown linkType: soft "@jupyter-widgets/schema@^0.5.3, @jupyter-widgets/schema@workspace:packages/schema": version: 0.0.0-use.local resolution: "@jupyter-widgets/schema@workspace:packages/schema" languageName: unknown linkType: soft "@jupyter/ydoc@npm:^1.0.2": version: 1.0.2 resolution: "@jupyter/ydoc@npm:1.0.2" dependencies: "@jupyterlab/nbformat": ^3.0.0 || ^4.0.0-alpha.21 || ^4.0.0 "@lumino/coreutils": ^1.11.0 || ^2.0.0 "@lumino/disposable": ^1.10.0 || ^2.0.0 "@lumino/signaling": ^1.10.0 || ^2.0.0 y-protocols: ^1.0.5 yjs: ^13.5.40 checksum: 739f9630940466b3cfcd7b742dd06479f81772ca13f863d057af0bbb5e318829506969066ab72977e7c721644982b5c8f88cf44e1ae81955ed1c27e87632d1f2 languageName: node linkType: hard "@jupyterlab/application@npm:^3.0.0 || ^4.0.0": version: 4.0.0 resolution: "@jupyterlab/application@npm:4.0.0" dependencies: "@fortawesome/fontawesome-free": ^5.12.0 "@jupyterlab/apputils": ^4.0.0 "@jupyterlab/coreutils": ^6.0.0 "@jupyterlab/docregistry": ^4.0.0 "@jupyterlab/rendermime": ^4.0.0 "@jupyterlab/rendermime-interfaces": ^3.8.0 "@jupyterlab/services": ^7.0.0 "@jupyterlab/statedb": ^4.0.0 "@jupyterlab/translation": ^4.0.0 "@jupyterlab/ui-components": ^4.0.0 "@lumino/algorithm": ^2.0.0 "@lumino/application": ^2.1.1 "@lumino/commands": ^2.1.1 "@lumino/coreutils": ^2.1.1 "@lumino/disposable": ^2.1.1 "@lumino/messaging": ^2.0.0 "@lumino/polling": ^2.1.1 "@lumino/properties": ^2.0.0 "@lumino/signaling": ^2.1.1 "@lumino/widgets": ^2.1.1 checksum: 82750647de5997d6945627f517d82ffad3e7c272bce0c195819cc138b59546fbe43ee6c0ef4baf88de303964288ed1ac36234a99bedfb319eaf456b1321b199c languageName: node linkType: hard "@jupyterlab/apputils@npm:^4.0.0": version: 4.0.0 resolution: "@jupyterlab/apputils@npm:4.0.0" dependencies: "@jupyterlab/coreutils": ^6.0.0 "@jupyterlab/observables": ^5.0.0 "@jupyterlab/rendermime-interfaces": ^3.8.0 "@jupyterlab/services": ^7.0.0 "@jupyterlab/settingregistry": ^4.0.0 "@jupyterlab/statedb": ^4.0.0 "@jupyterlab/statusbar": ^4.0.0 "@jupyterlab/translation": ^4.0.0 "@jupyterlab/ui-components": ^4.0.0 "@lumino/algorithm": ^2.0.0 "@lumino/commands": ^2.1.1 "@lumino/coreutils": ^2.1.1 "@lumino/disposable": ^2.1.1 "@lumino/domutils": ^2.0.0 "@lumino/messaging": ^2.0.0 "@lumino/signaling": ^2.1.1 "@lumino/virtualdom": ^2.0.0 "@lumino/widgets": ^2.1.1 "@types/react": ^18.0.26 react: ^18.2.0 sanitize-html: ~2.7.3 checksum: 360bf34e9810a7014c6637a6ac5c23a2ee73da8339675235cee3866beb3a477dc3b4d993c0a79da5ebe472f5c28fa131d507d62e20b3a93853f05e62b126add9 languageName: node linkType: hard "@jupyterlab/attachments@npm:^4.0.0": version: 4.0.0 resolution: "@jupyterlab/attachments@npm:4.0.0" dependencies: "@jupyterlab/nbformat": ^4.0.0 "@jupyterlab/observables": ^5.0.0 "@jupyterlab/rendermime": ^4.0.0 "@jupyterlab/rendermime-interfaces": ^3.8.0 "@lumino/disposable": ^2.1.1 "@lumino/signaling": ^2.1.1 checksum: 71c8e488a0d31e00e1345336edece04faa0d2b6fbf5de284fad05bb2a8f732c57e9b2ffe10999dd416a1d00cdce4bc425f9f88dd91684cb8b55eea52a1d5ed98 languageName: node linkType: hard "@jupyterlab/builder@npm:^3.0.0 || ^4.0.0": version: 4.0.0 resolution: "@jupyterlab/builder@npm:4.0.0" dependencies: "@lumino/algorithm": ^2.0.0 "@lumino/application": ^2.1.1 "@lumino/commands": ^2.1.1 "@lumino/coreutils": ^2.1.1 "@lumino/disposable": ^2.1.1 "@lumino/domutils": ^2.0.0 "@lumino/dragdrop": ^2.1.1 "@lumino/messaging": ^2.0.0 "@lumino/properties": ^2.0.0 "@lumino/signaling": ^2.1.1 "@lumino/virtualdom": ^2.0.0 "@lumino/widgets": ^2.1.1 ajv: ^8.12.0 commander: ^9.4.1 css-loader: ^6.7.1 duplicate-package-checker-webpack-plugin: ^3.0.0 fs-extra: ^10.1.0 glob: ~7.1.6 license-webpack-plugin: ^2.3.14 mini-css-extract-plugin: ^2.7.0 mini-svg-data-uri: ^1.4.4 path-browserify: ^1.0.0 process: ^0.11.10 source-map-loader: ~1.0.2 style-loader: ~3.3.1 supports-color: ^7.2.0 terser-webpack-plugin: ^5.3.7 webpack: ^5.76.1 webpack-cli: ^5.0.1 webpack-merge: ^5.8.0 worker-loader: ^3.0.2 bin: build-labextension: lib/build-labextension.js checksum: c359031858376e37b2fe46bc7897fe0568b0cf90bcaaee6bded2e22f207c61a32d4b00b6954de00082e551dd07b6259997c00feeb25e7d44acf9ac97934fdd45 languageName: node linkType: hard "@jupyterlab/buildutils@npm:^3.5.2 || ^4.0.0": version: 4.0.0 resolution: "@jupyterlab/buildutils@npm:4.0.0" dependencies: "@yarnpkg/lockfile": ^1.1.0 child_process: ~1.0.2 commander: ^9.4.1 crypto: ~1.0.1 dependency-graph: ^0.11.0 fs-extra: ^10.1.0 glob: ~7.1.6 inquirer: ^9.1.4 minimatch: ~3.0.4 os: ~0.1.1 package-json: ^7.0.0 prettier: ~2.6.0 process: ^0.11.10 semver: ^7.3.2 sort-package-json: ~1.53.1 typescript: ~5.0.4 verdaccio: ^5.20.1 bin: get-dependency: lib/get-dependency.js local-repository: lib/local-repository.js remove-dependency: lib/remove-dependency.js update-dependency: lib/update-dependency.js update-dist-tag: lib/update-dist-tag.js checksum: 43eb0990e4950dcf039995bcd03bd89839775ec7758deb7975d85a840ef42abbc96a197dd2f48ddad255932c1d931305658b1148f069cf26439ed32634cd806b languageName: node linkType: hard "@jupyterlab/cells@npm:^3.0.0 || ^4.0.0, @jupyterlab/cells@npm:^4.0.0": version: 4.0.0 resolution: "@jupyterlab/cells@npm:4.0.0" dependencies: "@codemirror/state": ^6.2.0 "@codemirror/view": ^6.9.6 "@jupyter/ydoc": ^1.0.2 "@jupyterlab/apputils": ^4.0.0 "@jupyterlab/attachments": ^4.0.0 "@jupyterlab/codeeditor": ^4.0.0 "@jupyterlab/codemirror": ^4.0.0 "@jupyterlab/coreutils": ^6.0.0 "@jupyterlab/documentsearch": ^4.0.0 "@jupyterlab/filebrowser": ^4.0.0 "@jupyterlab/nbformat": ^4.0.0 "@jupyterlab/observables": ^5.0.0 "@jupyterlab/outputarea": ^4.0.0 "@jupyterlab/rendermime": ^4.0.0 "@jupyterlab/services": ^7.0.0 "@jupyterlab/toc": ^6.0.0 "@jupyterlab/translation": ^4.0.0 "@jupyterlab/ui-components": ^4.0.0 "@lumino/algorithm": ^2.0.0 "@lumino/coreutils": ^2.1.1 "@lumino/domutils": ^2.0.0 "@lumino/dragdrop": ^2.1.1 "@lumino/messaging": ^2.0.0 "@lumino/polling": ^2.1.1 "@lumino/signaling": ^2.1.1 "@lumino/virtualdom": ^2.0.0 "@lumino/widgets": ^2.1.1 react: ^18.2.0 checksum: 2474642428f344a316b0296640f9adb07e805d3c8896d1a601a2a5131fc4f4a8a4a627583f3dff904f7c318d6c0f236bc0d9cd200545f395796fcfe4244ecbcb languageName: node linkType: hard "@jupyterlab/codeeditor@npm:^4.0.0": version: 4.0.0 resolution: "@jupyterlab/codeeditor@npm:4.0.0" dependencies: "@codemirror/state": ^6.2.0 "@jupyter/ydoc": ^1.0.2 "@jupyterlab/coreutils": ^6.0.0 "@jupyterlab/nbformat": ^4.0.0 "@jupyterlab/observables": ^5.0.0 "@jupyterlab/statusbar": ^4.0.0 "@jupyterlab/translation": ^4.0.0 "@jupyterlab/ui-components": ^4.0.0 "@lumino/coreutils": ^2.1.1 "@lumino/disposable": ^2.1.1 "@lumino/dragdrop": ^2.1.1 "@lumino/messaging": ^2.0.0 "@lumino/signaling": ^2.1.1 "@lumino/widgets": ^2.1.1 react: ^18.2.0 checksum: 8287d77738a41814eb83621691adbcee119e6a7b3d4741250e53fc11b8664ce1f6ae5a79150222b235d45ec7b22db980d773d77a517d6b5c6a241b8a27817b7a languageName: node linkType: hard "@jupyterlab/codemirror@npm:^4.0.0": version: 4.0.0 resolution: "@jupyterlab/codemirror@npm:4.0.0" dependencies: "@codemirror/autocomplete": ^6.5.1 "@codemirror/commands": ^6.2.3 "@codemirror/lang-cpp": ^6.0.2 "@codemirror/lang-css": ^6.1.1 "@codemirror/lang-html": ^6.4.3 "@codemirror/lang-java": ^6.0.1 "@codemirror/lang-javascript": ^6.1.7 "@codemirror/lang-json": ^6.0.1 "@codemirror/lang-markdown": ^6.1.1 "@codemirror/lang-php": ^6.0.1 "@codemirror/lang-python": ^6.1.2 "@codemirror/lang-rust": ^6.0.1 "@codemirror/lang-sql": ^6.4.1 "@codemirror/lang-wast": ^6.0.1 "@codemirror/lang-xml": ^6.0.2 "@codemirror/language": ^6.6.0 "@codemirror/legacy-modes": ^6.3.2 "@codemirror/search": ^6.3.0 "@codemirror/state": ^6.2.0 "@codemirror/view": ^6.9.6 "@jupyter/ydoc": ^1.0.2 "@jupyterlab/codeeditor": ^4.0.0 "@jupyterlab/coreutils": ^6.0.0 "@jupyterlab/documentsearch": ^4.0.0 "@jupyterlab/nbformat": ^4.0.0 "@jupyterlab/translation": ^4.0.0 "@lezer/common": ^1.0.2 "@lezer/generator": ^1.2.2 "@lezer/highlight": ^1.1.4 "@lezer/markdown": ^1.0.2 "@lumino/coreutils": ^2.1.1 "@lumino/disposable": ^2.1.1 "@lumino/signaling": ^2.1.1 yjs: ^13.5.40 checksum: 3252c57f1d35924d6d6ad2a48690fa8bbe4e1a22455f9e1514b4405d16ff379532477aed331cd28908e8d0ef572ee76937ee5f382c95dc62e5dd97fa911603d5 languageName: node linkType: hard "@jupyterlab/coreutils@npm:^6.0.0": version: 6.0.0 resolution: "@jupyterlab/coreutils@npm:6.0.0" dependencies: "@lumino/coreutils": ^2.1.1 "@lumino/disposable": ^2.1.1 "@lumino/signaling": ^2.1.1 minimist: ~1.2.0 path-browserify: ^1.0.0 url-parse: ~1.5.4 checksum: c46bb60af792186b4d9d60378fdb2f03473055736e438e05971bcbf1d5edb62c7722f1465e5ef2fd2dc9c4b5b6043301012478b218cf6c475a99914b26a1fd14 languageName: node linkType: hard "@jupyterlab/docmanager@npm:^4.0.0": version: 4.0.0 resolution: "@jupyterlab/docmanager@npm:4.0.0" dependencies: "@jupyterlab/apputils": ^4.0.0 "@jupyterlab/coreutils": ^6.0.0 "@jupyterlab/docregistry": ^4.0.0 "@jupyterlab/services": ^7.0.0 "@jupyterlab/statusbar": ^4.0.0 "@jupyterlab/translation": ^4.0.0 "@jupyterlab/ui-components": ^4.0.0 "@lumino/algorithm": ^2.0.0 "@lumino/coreutils": ^2.1.1 "@lumino/disposable": ^2.1.1 "@lumino/messaging": ^2.0.0 "@lumino/properties": ^2.0.0 "@lumino/signaling": ^2.1.1 "@lumino/widgets": ^2.1.1 react: ^18.2.0 checksum: d9495bea5f5e5de2d133be0ea097b9d2634575d1054dafb198d49398bfed6b9ff52d5d2ce0848ae11462fa5070f6651eccda3242f867661758f135b0703839f9 languageName: node linkType: hard "@jupyterlab/docregistry@npm:^3.0.0 || ^4.0.0, @jupyterlab/docregistry@npm:^4.0.0": version: 4.0.0 resolution: "@jupyterlab/docregistry@npm:4.0.0" dependencies: "@jupyter/ydoc": ^1.0.2 "@jupyterlab/apputils": ^4.0.0 "@jupyterlab/codeeditor": ^4.0.0 "@jupyterlab/coreutils": ^6.0.0 "@jupyterlab/observables": ^5.0.0 "@jupyterlab/rendermime": ^4.0.0 "@jupyterlab/rendermime-interfaces": ^3.8.0 "@jupyterlab/services": ^7.0.0 "@jupyterlab/translation": ^4.0.0 "@jupyterlab/ui-components": ^4.0.0 "@lumino/algorithm": ^2.0.0 "@lumino/coreutils": ^2.1.1 "@lumino/disposable": ^2.1.1 "@lumino/messaging": ^2.0.0 "@lumino/properties": ^2.0.0 "@lumino/signaling": ^2.1.1 "@lumino/widgets": ^2.1.1 checksum: 8927ea10312238333d1036ea6f4047d86779120cdf6c8391f91e5d859e85d504c2345f629a2a8cf50cdc394739828cc4868a46ebefe1c20932a2f496463ca250 languageName: node linkType: hard "@jupyterlab/documentsearch@npm:^4.0.0": version: 4.0.0 resolution: "@jupyterlab/documentsearch@npm:4.0.0" dependencies: "@jupyterlab/apputils": ^4.0.0 "@jupyterlab/translation": ^4.0.0 "@jupyterlab/ui-components": ^4.0.0 "@lumino/coreutils": ^2.1.1 "@lumino/disposable": ^2.1.1 "@lumino/messaging": ^2.0.0 "@lumino/polling": ^2.1.1 "@lumino/signaling": ^2.1.1 "@lumino/widgets": ^2.1.1 react: ^18.2.0 checksum: 686befb5ae48a485530f298f7d067b5c77d17524fff779f8c468857c44baab75f1ed3c504546f6440cf0cfc8420e617abcbaa120208d2166cfb124a6455e5472 languageName: node linkType: hard "@jupyterlab/filebrowser@npm:^4.0.0": version: 4.0.0 resolution: "@jupyterlab/filebrowser@npm:4.0.0" dependencies: "@jupyterlab/apputils": ^4.0.0 "@jupyterlab/coreutils": ^6.0.0 "@jupyterlab/docmanager": ^4.0.0 "@jupyterlab/docregistry": ^4.0.0 "@jupyterlab/services": ^7.0.0 "@jupyterlab/statedb": ^4.0.0 "@jupyterlab/statusbar": ^4.0.0 "@jupyterlab/translation": ^4.0.0 "@jupyterlab/ui-components": ^4.0.0 "@lumino/algorithm": ^2.0.0 "@lumino/coreutils": ^2.1.1 "@lumino/disposable": ^2.1.1 "@lumino/domutils": ^2.0.0 "@lumino/dragdrop": ^2.1.1 "@lumino/messaging": ^2.0.0 "@lumino/polling": ^2.1.1 "@lumino/signaling": ^2.1.1 "@lumino/virtualdom": ^2.0.0 "@lumino/widgets": ^2.1.1 react: ^18.2.0 checksum: 58e61e9b0e6d373fa5cd93398dfee146c635d5f5008d00e640c4f0687ed8ed7135779806e159703a88ecd55f45b1725214c657a466e63577b70b0380c5852df5 languageName: node linkType: hard "@jupyterlab/logconsole@npm:^3.0.0 || ^4.0.0": version: 4.0.0 resolution: "@jupyterlab/logconsole@npm:4.0.0" dependencies: "@jupyterlab/coreutils": ^6.0.0 "@jupyterlab/nbformat": ^4.0.0 "@jupyterlab/outputarea": ^4.0.0 "@jupyterlab/rendermime": ^4.0.0 "@jupyterlab/services": ^7.0.0 "@jupyterlab/translation": ^4.0.0 "@lumino/coreutils": ^2.1.1 "@lumino/disposable": ^2.1.1 "@lumino/messaging": ^2.0.0 "@lumino/signaling": ^2.1.1 "@lumino/widgets": ^2.1.1 checksum: d1c60c7871b2f1a8f405f6bbcdab3ade621262d2d5804a83269afc2dc11d249a5dcc7578702b0c45805c8ab657a6970add685fe5a2f1fc90e46b18aa34378bba languageName: node linkType: hard "@jupyterlab/lsp@npm:^4.0.0": version: 4.0.0 resolution: "@jupyterlab/lsp@npm:4.0.0" dependencies: "@jupyterlab/apputils": ^4.0.0 "@jupyterlab/codeeditor": ^4.0.0 "@jupyterlab/coreutils": ^6.0.0 "@jupyterlab/docregistry": ^4.0.0 "@jupyterlab/services": ^7.0.0 "@jupyterlab/translation": ^4.0.0 "@lumino/coreutils": ^2.1.1 "@lumino/disposable": ^2.1.1 "@lumino/signaling": ^2.1.1 lodash.mergewith: ^4.6.1 vscode-jsonrpc: ^6.0.0 vscode-languageserver-protocol: ^3.17.0 vscode-ws-jsonrpc: ~1.0.2 checksum: 7657fe88fc155e7a988558b9b8d34a36d6bb5fee0571a0953ac77add170f82b2f7ad1d76c1f90185087daebb4d40c5ff9e7f44478abbcb485736f7806d3d7fb8 languageName: node linkType: hard "@jupyterlab/mainmenu@npm:^3.0.0 || ^4.0.0": version: 4.0.0 resolution: "@jupyterlab/mainmenu@npm:4.0.0" dependencies: "@jupyterlab/apputils": ^4.0.0 "@jupyterlab/translation": ^4.0.0 "@jupyterlab/ui-components": ^4.0.0 "@lumino/algorithm": ^2.0.0 "@lumino/commands": ^2.1.1 "@lumino/coreutils": ^2.1.1 "@lumino/widgets": ^2.1.1 checksum: e51aa6bd4170f3defa8f8a5c08a8e9223621301ee4334b6acb9e33569ea3da6369a5bc012f082900788a587a89f3e4fcc3ab0971758f810d73d5b6dfbeb0da16 languageName: node linkType: hard "@jupyterlab/nbformat@npm:^3.0.0 || ^4.0.0, @jupyterlab/nbformat@npm:^3.0.0 || ^4.0.0-alpha.21 || ^4.0.0, @jupyterlab/nbformat@npm:^4.0.0": version: 4.0.0 resolution: "@jupyterlab/nbformat@npm:4.0.0" dependencies: "@lumino/coreutils": ^2.1.1 checksum: 152da6b9622c7683543ad2bd9525857a8a39b4b8a5474998e921232f108c366dd8625daeb14e2cc2aa8aac124b9a5d16f285310cd241c9769d51af80730dbd59 languageName: node linkType: hard "@jupyterlab/notebook@npm:^3.0.0 || ^4.0.0": version: 4.0.0 resolution: "@jupyterlab/notebook@npm:4.0.0" dependencies: "@jupyter/ydoc": ^1.0.2 "@jupyterlab/apputils": ^4.0.0 "@jupyterlab/cells": ^4.0.0 "@jupyterlab/codeeditor": ^4.0.0 "@jupyterlab/codemirror": ^4.0.0 "@jupyterlab/coreutils": ^6.0.0 "@jupyterlab/docregistry": ^4.0.0 "@jupyterlab/documentsearch": ^4.0.0 "@jupyterlab/lsp": ^4.0.0 "@jupyterlab/nbformat": ^4.0.0 "@jupyterlab/observables": ^5.0.0 "@jupyterlab/rendermime": ^4.0.0 "@jupyterlab/services": ^7.0.0 "@jupyterlab/settingregistry": ^4.0.0 "@jupyterlab/statusbar": ^4.0.0 "@jupyterlab/toc": ^6.0.0 "@jupyterlab/translation": ^4.0.0 "@jupyterlab/ui-components": ^4.0.0 "@lumino/algorithm": ^2.0.0 "@lumino/coreutils": ^2.1.1 "@lumino/domutils": ^2.0.0 "@lumino/dragdrop": ^2.1.1 "@lumino/messaging": ^2.0.0 "@lumino/properties": ^2.0.0 "@lumino/signaling": ^2.1.1 "@lumino/virtualdom": ^2.0.0 "@lumino/widgets": ^2.1.1 react: ^18.2.0 checksum: 29ba29519fba567d0d686426b750d58bfddf6235cb3ad812ef671750637dbfcdafb5348feda44168d83f65936e5478562cffdc7ceeabac221fcdfab38f11bc31 languageName: node linkType: hard "@jupyterlab/observables@npm:^5.0.0": version: 5.0.0 resolution: "@jupyterlab/observables@npm:5.0.0" dependencies: "@lumino/algorithm": ^2.0.0 "@lumino/coreutils": ^2.1.1 "@lumino/disposable": ^2.1.1 "@lumino/messaging": ^2.0.0 "@lumino/signaling": ^2.1.1 checksum: 1554f473e0ab0eef288ea86945c03a07d79f478bfdf55651036161a58cd1d9a0695e202ced0ebe3a6863f73ba12ccd85b86f7a4c2e6f9fe41ccddb0c4fbbc33e languageName: node linkType: hard "@jupyterlab/outputarea@npm:^3.0.0 || ^4.0.0, @jupyterlab/outputarea@npm:^4.0.0": version: 4.0.0 resolution: "@jupyterlab/outputarea@npm:4.0.0" dependencies: "@jupyterlab/apputils": ^4.0.0 "@jupyterlab/nbformat": ^4.0.0 "@jupyterlab/observables": ^5.0.0 "@jupyterlab/rendermime": ^4.0.0 "@jupyterlab/rendermime-interfaces": ^3.8.0 "@jupyterlab/services": ^7.0.0 "@jupyterlab/translation": ^4.0.0 "@lumino/algorithm": ^2.0.0 "@lumino/coreutils": ^2.1.1 "@lumino/disposable": ^2.1.1 "@lumino/messaging": ^2.0.0 "@lumino/properties": ^2.0.0 "@lumino/signaling": ^2.1.1 "@lumino/widgets": ^2.1.1 checksum: d2c22e1fe1ebe4407e7a5d383addda64561b5a3afda277a0c4750be48bf30fbb90ee6a3401ac0a9410a7e3c969792d34bc2dcc880806fa3b290ecace01710e80 languageName: node linkType: hard "@jupyterlab/rendermime-interfaces@npm:^3.0.0 || ^4.0.0, @jupyterlab/rendermime-interfaces@npm:^3.8.0": version: 3.8.0 resolution: "@jupyterlab/rendermime-interfaces@npm:3.8.0" dependencies: "@lumino/coreutils": ^2.1.1 "@lumino/widgets": ^2.1.1 checksum: 5e70a58a4d8aa7380a041d267972851b9b3fa5e4d68d254ede51c9e5bea4a76b38d47bc5c512e2fd84cd297f5bcaf9cbc9f73ba0824b5b910b10043309a820c7 languageName: node linkType: hard "@jupyterlab/rendermime@npm:^3.0.0 || ^4.0.0, @jupyterlab/rendermime@npm:^4.0.0": version: 4.0.0 resolution: "@jupyterlab/rendermime@npm:4.0.0" dependencies: "@jupyterlab/apputils": ^4.0.0 "@jupyterlab/coreutils": ^6.0.0 "@jupyterlab/nbformat": ^4.0.0 "@jupyterlab/observables": ^5.0.0 "@jupyterlab/rendermime-interfaces": ^3.8.0 "@jupyterlab/services": ^7.0.0 "@jupyterlab/translation": ^4.0.0 "@lumino/coreutils": ^2.1.1 "@lumino/messaging": ^2.0.0 "@lumino/signaling": ^2.1.1 "@lumino/widgets": ^2.1.1 lodash.escape: ^4.0.1 checksum: fb6373517bf2fa2557b38ccf53ba95b45c9327f86f14726dedd433f0b3466f439ab98cb2c8ae10aded9f269bf7c11225765e286aeca56f3755bada8f5d5e102a languageName: node linkType: hard "@jupyterlab/services@npm:^6.0.0 || ^7.0.0, @jupyterlab/services@npm:^7.0.0": version: 7.0.0 resolution: "@jupyterlab/services@npm:7.0.0" dependencies: "@jupyter/ydoc": ^1.0.2 "@jupyterlab/coreutils": ^6.0.0 "@jupyterlab/nbformat": ^4.0.0 "@jupyterlab/settingregistry": ^4.0.0 "@jupyterlab/statedb": ^4.0.0 "@lumino/coreutils": ^2.1.1 "@lumino/disposable": ^2.1.1 "@lumino/polling": ^2.1.1 "@lumino/properties": ^2.0.0 "@lumino/signaling": ^2.1.1 ws: ^8.11.0 checksum: 96e986e8007247aa5258586263e31e48dfa6e7e7bb2a9d61f699e41b291f50c8653a9c42ae340a428c9af58946c47f7021ccb6b79b74b750cf1547b8d6c81b03 languageName: node linkType: hard "@jupyterlab/settingregistry@npm:^3.0.0 || ^4.0.0, @jupyterlab/settingregistry@npm:^4.0.0": version: 4.0.0 resolution: "@jupyterlab/settingregistry@npm:4.0.0" dependencies: "@jupyterlab/nbformat": ^4.0.0 "@jupyterlab/statedb": ^4.0.0 "@lumino/commands": ^2.1.1 "@lumino/coreutils": ^2.1.1 "@lumino/disposable": ^2.1.1 "@lumino/signaling": ^2.1.1 "@rjsf/utils": ^5.1.0 ajv: ^8.12.0 json5: ^2.2.3 peerDependencies: react: ">=16" checksum: f52cd36c28336ad554a4eb43f6cef7f82cb7a9161897e8b633da8c0b4519d0ed7e3e34846fec132714867b0190a9c19754e88edef31ffdf6dc2d1afe49b50041 languageName: node linkType: hard "@jupyterlab/statedb@npm:^4.0.0": version: 4.0.0 resolution: "@jupyterlab/statedb@npm:4.0.0" dependencies: "@lumino/commands": ^2.1.1 "@lumino/coreutils": ^2.1.1 "@lumino/disposable": ^2.1.1 "@lumino/properties": ^2.0.0 "@lumino/signaling": ^2.1.1 checksum: e90c943b4486df3a1bd53c64c0860e40706a26f4307628f2c71168090f47f85bab2fd68529366aa74211501a6875bd6d7098e1cd976f2e7d2d197a687b6b3bd3 languageName: node linkType: hard "@jupyterlab/statusbar@npm:^4.0.0": version: 4.0.0 resolution: "@jupyterlab/statusbar@npm:4.0.0" dependencies: "@jupyterlab/ui-components": ^4.0.0 "@lumino/algorithm": ^2.0.0 "@lumino/coreutils": ^2.1.1 "@lumino/disposable": ^2.1.1 "@lumino/messaging": ^2.0.0 "@lumino/signaling": ^2.1.1 "@lumino/widgets": ^2.1.1 react: ^18.2.0 checksum: 861444ba5ca001f9174b58d5a2c46e4d7947856b1c5302d3ec70e6c72d1608c77b65c792904e07fd8612f11d51ac9f30aa2ad3cbd256e701d6c12138e3f9b89f languageName: node linkType: hard "@jupyterlab/toc@npm:^6.0.0": version: 6.0.0 resolution: "@jupyterlab/toc@npm:6.0.0" dependencies: "@jupyterlab/apputils": ^4.0.0 "@jupyterlab/coreutils": ^6.0.0 "@jupyterlab/docregistry": ^4.0.0 "@jupyterlab/observables": ^5.0.0 "@jupyterlab/rendermime": ^4.0.0 "@jupyterlab/translation": ^4.0.0 "@jupyterlab/ui-components": ^4.0.0 "@lumino/coreutils": ^2.1.1 "@lumino/disposable": ^2.1.1 "@lumino/messaging": ^2.0.0 "@lumino/signaling": ^2.1.1 "@lumino/widgets": ^2.1.1 react: ^18.2.0 checksum: 7fd8cbbeaaad272355296d8ddab01c54233373d2c0457d93beae1efa2e491845980746b75f46f78f49370668a323f42ef923b76c55bf9a520548845f7c5e2d57 languageName: node linkType: hard "@jupyterlab/translation@npm:^3.0.0 || ^4.0.0, @jupyterlab/translation@npm:^4.0.0": version: 4.0.0 resolution: "@jupyterlab/translation@npm:4.0.0" dependencies: "@jupyterlab/coreutils": ^6.0.0 "@jupyterlab/rendermime-interfaces": ^3.8.0 "@jupyterlab/services": ^7.0.0 "@jupyterlab/statedb": ^4.0.0 "@lumino/coreutils": ^2.1.1 checksum: f3124bff6e3eb9c1adbe91f60dd823a3b4a4b8b453fbf024a605f5be44463fa7eb15e176238255a775c96b50e4cc551bde757a03531e56a76db25a30feed469f languageName: node linkType: hard "@jupyterlab/ui-components@npm:^4.0.0": version: 4.0.0 resolution: "@jupyterlab/ui-components@npm:4.0.0" dependencies: "@jupyterlab/coreutils": ^6.0.0 "@jupyterlab/observables": ^5.0.0 "@jupyterlab/rendermime-interfaces": ^3.8.0 "@jupyterlab/translation": ^4.0.0 "@lumino/algorithm": ^2.0.0 "@lumino/commands": ^2.1.1 "@lumino/coreutils": ^2.1.1 "@lumino/disposable": ^2.1.1 "@lumino/messaging": ^2.0.0 "@lumino/polling": ^2.1.1 "@lumino/properties": ^2.0.0 "@lumino/signaling": ^2.1.1 "@lumino/virtualdom": ^2.0.0 "@lumino/widgets": ^2.1.1 "@rjsf/core": ^5.1.0 "@rjsf/utils": ^5.1.0 react: ^18.2.0 react-dom: ^18.2.0 typestyle: ^2.0.4 peerDependencies: react: ^18.2.0 checksum: 781a5b48acc16a098f9f88ec4cc840912100da96f9d1f64c93cd5fdb9afddd33bbeb891d0a6383ee8f12f001056d9c0beabded2a99a05d374dcf7d952e784e40 languageName: node linkType: hard "@lerna/add@npm:5.6.2": version: 5.6.2 resolution: "@lerna/add@npm:5.6.2" dependencies: "@lerna/bootstrap": 5.6.2 "@lerna/command": 5.6.2 "@lerna/filter-options": 5.6.2 "@lerna/npm-conf": 5.6.2 "@lerna/validation-error": 5.6.2 dedent: ^0.7.0 npm-package-arg: 8.1.1 p-map: ^4.0.0 pacote: ^13.6.1 semver: ^7.3.4 checksum: a6e9a6270f3145cb24da1b90a312cbbe0f3a0c556943c7e7b8cf4bfbb0912db4de7e7dc248321dd26955b3b8dbf8ede8c9481e2a0f3107c8a5cd917bfe187976 languageName: node linkType: hard "@lerna/bootstrap@npm:5.6.2": version: 5.6.2 resolution: "@lerna/bootstrap@npm:5.6.2" dependencies: "@lerna/command": 5.6.2 "@lerna/filter-options": 5.6.2 "@lerna/has-npm-version": 5.6.2 "@lerna/npm-install": 5.6.2 "@lerna/package-graph": 5.6.2 "@lerna/pulse-till-done": 5.6.2 "@lerna/rimraf-dir": 5.6.2 "@lerna/run-lifecycle": 5.6.2 "@lerna/run-topologically": 5.6.2 "@lerna/symlink-binary": 5.6.2 "@lerna/symlink-dependencies": 5.6.2 "@lerna/validation-error": 5.6.2 "@npmcli/arborist": 5.3.0 dedent: ^0.7.0 get-port: ^5.1.1 multimatch: ^5.0.0 npm-package-arg: 8.1.1 npmlog: ^6.0.2 p-map: ^4.0.0 p-map-series: ^2.1.0 p-waterfall: ^2.1.1 semver: ^7.3.4 checksum: 5b416f2276077348a72c4079d96b35729502a8bc3f91144cf3109b1ea5966245c809769304414a9b038de0980e783ed2a8da898fd05802879e8186e35a8a14cf languageName: node linkType: hard "@lerna/changed@npm:5.6.2": version: 5.6.2 resolution: "@lerna/changed@npm:5.6.2" dependencies: "@lerna/collect-updates": 5.6.2 "@lerna/command": 5.6.2 "@lerna/listable": 5.6.2 "@lerna/output": 5.6.2 checksum: 69a86cf3b3124553dee5de03988e7e7ecbf3f9084685ff13da1a1c9dfd4dcc3991145db4937cc0a72dde029da6cd37b3614bd21b7b461f8d5724a2f38b6c56d7 languageName: node linkType: hard "@lerna/check-working-tree@npm:5.6.2": version: 5.6.2 resolution: "@lerna/check-working-tree@npm:5.6.2" dependencies: "@lerna/collect-uncommitted": 5.6.2 "@lerna/describe-ref": 5.6.2 "@lerna/validation-error": 5.6.2 checksum: 46a30143ab3f73f8e70c76bdffa66d521b787251c986800f60335188a62375186a380c0d772439b0fa9cf057da2f028780674744d684636e84e6974b9a4193e5 languageName: node linkType: hard "@lerna/child-process@npm:5.6.2": version: 5.6.2 resolution: "@lerna/child-process@npm:5.6.2" dependencies: chalk: ^4.1.0 execa: ^5.0.0 strong-log-transformer: ^2.1.0 checksum: 94e9c03119b3177cb41e210ac8a4bf04386857192e3a99c8bdd3d2ae913eda1538f813138de03693681ee360644cab9a0584658df9e2acbd04eb52a2e3a761cf languageName: node linkType: hard "@lerna/clean@npm:5.6.2": version: 5.6.2 resolution: "@lerna/clean@npm:5.6.2" dependencies: "@lerna/command": 5.6.2 "@lerna/filter-options": 5.6.2 "@lerna/prompt": 5.6.2 "@lerna/pulse-till-done": 5.6.2 "@lerna/rimraf-dir": 5.6.2 p-map: ^4.0.0 p-map-series: ^2.1.0 p-waterfall: ^2.1.1 checksum: b20aa2d5c0ace554dcb2ce37915b6a172627e1d26f54a6be33ae8b59d2b31ac1c4c70fa99ca5bffefc9a725ef798059b3b83f751728f6471e9edee1cb901d8b9 languageName: node linkType: hard "@lerna/cli@npm:5.6.2": version: 5.6.2 resolution: "@lerna/cli@npm:5.6.2" dependencies: "@lerna/global-options": 5.6.2 dedent: ^0.7.0 npmlog: ^6.0.2 yargs: ^16.2.0 checksum: e0b853feafe6d572056ea61a18fed4acb0ad62bcd99c3b5d753a8b8e8b69e5275f5eb7e102e7d09340d8f8e0e73a038b203acb4c77437d7edcf835470917b296 languageName: node linkType: hard "@lerna/collect-uncommitted@npm:5.6.2": version: 5.6.2 resolution: "@lerna/collect-uncommitted@npm:5.6.2" dependencies: "@lerna/child-process": 5.6.2 chalk: ^4.1.0 npmlog: ^6.0.2 checksum: 9c9298bc447629819634dc5fa697caa6a4b33c4e9fd61ae7ad4108a42d916ef9193ea4cb72d6cf766fc6863e350211ab9b1fcde6a8fb75b75f43aa5e4a1afeb4 languageName: node linkType: hard "@lerna/collect-updates@npm:5.6.2": version: 5.6.2 resolution: "@lerna/collect-updates@npm:5.6.2" dependencies: "@lerna/child-process": 5.6.2 "@lerna/describe-ref": 5.6.2 minimatch: ^3.0.4 npmlog: ^6.0.2 slash: ^3.0.0 checksum: 44149466c60e63f495bb09a3a8fd6c1d91f55de9dfcaac3adcefaf27c690adb6ac2c2a9b6bf5c9f8e430cb41db7c6994c9506b28945f5bb46a47e78f2829425d languageName: node linkType: hard "@lerna/command@npm:5.6.2": version: 5.6.2 resolution: "@lerna/command@npm:5.6.2" dependencies: "@lerna/child-process": 5.6.2 "@lerna/package-graph": 5.6.2 "@lerna/project": 5.6.2 "@lerna/validation-error": 5.6.2 "@lerna/write-log-file": 5.6.2 clone-deep: ^4.0.1 dedent: ^0.7.0 execa: ^5.0.0 is-ci: ^2.0.0 npmlog: ^6.0.2 checksum: 6a3bdef20658b474476a3750862e2d4753284d0023faf755b39d403a7dc71f6c5c46bc68f79ba27af1a12eb8add391f3afb82aee08b93e02141aa44f939cd668 languageName: node linkType: hard "@lerna/conventional-commits@npm:5.6.2": version: 5.6.2 resolution: "@lerna/conventional-commits@npm:5.6.2" dependencies: "@lerna/validation-error": 5.6.2 conventional-changelog-angular: ^5.0.12 conventional-changelog-core: ^4.2.4 conventional-recommended-bump: ^6.1.0 fs-extra: ^9.1.0 get-stream: ^6.0.0 npm-package-arg: 8.1.1 npmlog: ^6.0.2 pify: ^5.0.0 semver: ^7.3.4 checksum: a8dbcd4bbb697aebb6c1b045f8597f019b754cf42b5abaf6a77da7379e212107bb46e8c9747a7bc1b41de640109036f71bc97df0b1066ca6c719172dd5d8b563 languageName: node linkType: hard "@lerna/create-symlink@npm:5.6.2": version: 5.6.2 resolution: "@lerna/create-symlink@npm:5.6.2" dependencies: cmd-shim: ^5.0.0 fs-extra: ^9.1.0 npmlog: ^6.0.2 checksum: 1848bd60d5f3227cf66103571779d8c12c363c54ade93aaddcb10b7bba00adaf263faccee15fd05ac87ee5514feecd0e20e42b79b798a457609af1e77e734762 languageName: node linkType: hard "@lerna/create@npm:5.6.2": version: 5.6.2 resolution: "@lerna/create@npm:5.6.2" dependencies: "@lerna/child-process": 5.6.2 "@lerna/command": 5.6.2 "@lerna/npm-conf": 5.6.2 "@lerna/validation-error": 5.6.2 dedent: ^0.7.0 fs-extra: ^9.1.0 init-package-json: ^3.0.2 npm-package-arg: 8.1.1 p-reduce: ^2.1.0 pacote: ^13.6.1 pify: ^5.0.0 semver: ^7.3.4 slash: ^3.0.0 validate-npm-package-license: ^3.0.4 validate-npm-package-name: ^4.0.0 yargs-parser: 20.2.4 checksum: 94706188839a8cd0b8c20fb593a0cb4375bd350e2b6587a29933786bdd8c83417a1d651e5f53fb69e0939bad4f97dd013f5a4c901557e3c20fc360bbd0590806 languageName: node linkType: hard "@lerna/describe-ref@npm:5.6.2": version: 5.6.2 resolution: "@lerna/describe-ref@npm:5.6.2" dependencies: "@lerna/child-process": 5.6.2 npmlog: ^6.0.2 checksum: 510814bd0004859475cf62917a3145b010b33b519be3b80f30170b98500e176285d8f4b0aa9e5928b80798be90bc65f1591d6c72e26fee70d46e0f006996d69e languageName: node linkType: hard "@lerna/diff@npm:5.6.2": version: 5.6.2 resolution: "@lerna/diff@npm:5.6.2" dependencies: "@lerna/child-process": 5.6.2 "@lerna/command": 5.6.2 "@lerna/validation-error": 5.6.2 npmlog: ^6.0.2 checksum: 0731f5819da8c7bb2a210a9514541e7f7cdde8ddf1802e3ec5e40bd689f3c546d6fba12b9c72cd48aa97d179ff767c658bdfe26bf9590056307ee738b5b44052 languageName: node linkType: hard "@lerna/exec@npm:5.6.2": version: 5.6.2 resolution: "@lerna/exec@npm:5.6.2" dependencies: "@lerna/child-process": 5.6.2 "@lerna/command": 5.6.2 "@lerna/filter-options": 5.6.2 "@lerna/profiler": 5.6.2 "@lerna/run-topologically": 5.6.2 "@lerna/validation-error": 5.6.2 p-map: ^4.0.0 checksum: 30255cffbb67bc6a89290c1755e0e832fe9be1de0a98a2a6553a0baf0e1f509e0268318eeb3da4441bad2aa5517268b522f57dc3aefc49d122b301dd06ff6086 languageName: node linkType: hard "@lerna/filter-options@npm:5.6.2": version: 5.6.2 resolution: "@lerna/filter-options@npm:5.6.2" dependencies: "@lerna/collect-updates": 5.6.2 "@lerna/filter-packages": 5.6.2 dedent: ^0.7.0 npmlog: ^6.0.2 checksum: c1b4ce4973bd8fff66a1632891f69ce4c20858d304cc02502df1576235b879cb4d3dd04b4be4b1835058f445c44d572554b206cf35ec4c1a3b76de396949bff1 languageName: node linkType: hard "@lerna/filter-packages@npm:5.6.2": version: 5.6.2 resolution: "@lerna/filter-packages@npm:5.6.2" dependencies: "@lerna/validation-error": 5.6.2 multimatch: ^5.0.0 npmlog: ^6.0.2 checksum: b5b4c3b1d1ae6d889802ead0e682aecb8a12c1cbb3738a95e68013e9c7fd04cc0e495e249ef69eb52e65c69bca760d357d265642b1e066857c898ff1415978bd languageName: node linkType: hard "@lerna/get-npm-exec-opts@npm:5.6.2": version: 5.6.2 resolution: "@lerna/get-npm-exec-opts@npm:5.6.2" dependencies: npmlog: ^6.0.2 checksum: 3430e602db853e075490e6b080d46340940acf354fb5513da19af2a8ad60c8fa397de7cbcbe0bda8a4266e9d995bc7cba1698d092933c5feaef134585eef9f08 languageName: node linkType: hard "@lerna/get-packed@npm:5.6.2": version: 5.6.2 resolution: "@lerna/get-packed@npm:5.6.2" dependencies: fs-extra: ^9.1.0 ssri: ^9.0.1 tar: ^6.1.0 checksum: 12637d74cf654214fb6adfe444370d90d66f5aa2fdbcfc6bedd4168e24a8e91346ad22f1386630b635452b3a0089c91cd3ea141f6cddfd8d111ba7b94dbbaac8 languageName: node linkType: hard "@lerna/github-client@npm:5.6.2": version: 5.6.2 resolution: "@lerna/github-client@npm:5.6.2" dependencies: "@lerna/child-process": 5.6.2 "@octokit/plugin-enterprise-rest": ^6.0.1 "@octokit/rest": ^19.0.3 git-url-parse: ^13.1.0 npmlog: ^6.0.2 checksum: 08a7386af70bacec5b1c2ec7ba09a0cae407e54c65d33c89444b4460df48dc325772fe77b38ce7c5355295e24ba64d0d64e53ae3ca76ddd4b930af1f5b38507c languageName: node linkType: hard "@lerna/gitlab-client@npm:5.6.2": version: 5.6.2 resolution: "@lerna/gitlab-client@npm:5.6.2" dependencies: node-fetch: ^2.6.1 npmlog: ^6.0.2 checksum: ad9e45621b727858f4ea87a5d624da41cd6784e616d247b86275fb08fbfb4c9974c5f698f59ac0272ec1d0a848bba5f04ef2fbc32c62ca3a77ecd3b0415bd298 languageName: node linkType: hard "@lerna/global-options@npm:5.6.2": version: 5.6.2 resolution: "@lerna/global-options@npm:5.6.2" checksum: 7cb542edef4f06c98dc5a1f797a442e4a1f8bde444046bc5258b0908ecd888ac7fe75902c90c20898feb90e685dee2e3518dc5c85a8155504373ec3f4634f3db languageName: node linkType: hard "@lerna/has-npm-version@npm:5.6.2": version: 5.6.2 resolution: "@lerna/has-npm-version@npm:5.6.2" dependencies: "@lerna/child-process": 5.6.2 semver: ^7.3.4 checksum: 98ca1161618a84e0509b9c988f3dd2e147225564d31820ea7b94332388afb7650b510ad902919c5ec9a0ec95b27aab81b4c3067769d106c801426620018a7aa4 languageName: node linkType: hard "@lerna/import@npm:5.6.2": version: 5.6.2 resolution: "@lerna/import@npm:5.6.2" dependencies: "@lerna/child-process": 5.6.2 "@lerna/command": 5.6.2 "@lerna/prompt": 5.6.2 "@lerna/pulse-till-done": 5.6.2 "@lerna/validation-error": 5.6.2 dedent: ^0.7.0 fs-extra: ^9.1.0 p-map-series: ^2.1.0 checksum: fdcecfd29de36488f78d51776d0edaf4e789bcedad57fe72818ab2e8416578396cfdf142f57095490eefcdd0d3d63a55b23a5e03cf42e5b97878a997025b6b86 languageName: node linkType: hard "@lerna/info@npm:5.6.2": version: 5.6.2 resolution: "@lerna/info@npm:5.6.2" dependencies: "@lerna/command": 5.6.2 "@lerna/output": 5.6.2 envinfo: ^7.7.4 checksum: 0124b7b1fe75e9bee4f4d4e13216a61869ad918ac9dfbad79aa49e3dd4657a67945aceae6632452b08580d1370823af0ce15ac6fd7134b9042f69624c531be57 languageName: node linkType: hard "@lerna/init@npm:5.6.2": version: 5.6.2 resolution: "@lerna/init@npm:5.6.2" dependencies: "@lerna/child-process": 5.6.2 "@lerna/command": 5.6.2 "@lerna/project": 5.6.2 fs-extra: ^9.1.0 p-map: ^4.0.0 write-json-file: ^4.3.0 checksum: 15e9cfee4ec7c0a09ed0426a38c4cdd2d85b1b005bc5c499f69464e7fe4f5dc4ec1dab0e0fae260508f100f68a84ae54d1b8ab556bdd17938f3db8862290eec9 languageName: node linkType: hard "@lerna/link@npm:5.6.2": version: 5.6.2 resolution: "@lerna/link@npm:5.6.2" dependencies: "@lerna/command": 5.6.2 "@lerna/package-graph": 5.6.2 "@lerna/symlink-dependencies": 5.6.2 "@lerna/validation-error": 5.6.2 p-map: ^4.0.0 slash: ^3.0.0 checksum: 5d4d3cf7cd90e30797cd0961d835984f5f4f01de508c89cd4870462bd64b65f6a2cf01a2f0df738ce612f45154d3ba4fbfbe73d24f21c0b0015d8c3263b93a80 languageName: node linkType: hard "@lerna/list@npm:5.6.2": version: 5.6.2 resolution: "@lerna/list@npm:5.6.2" dependencies: "@lerna/command": 5.6.2 "@lerna/filter-options": 5.6.2 "@lerna/listable": 5.6.2 "@lerna/output": 5.6.2 checksum: 969b4a458e26bb12533549577fc3c95b62f7a982e04c77bf0755b99a1280d51a0b6288d9a42f1cb05d2f84e852c0fac6a388a5ab735daf1eaa478d9a5e4244f3 languageName: node linkType: hard "@lerna/listable@npm:5.6.2": version: 5.6.2 resolution: "@lerna/listable@npm:5.6.2" dependencies: "@lerna/query-graph": 5.6.2 chalk: ^4.1.0 columnify: ^1.6.0 checksum: 3c94647582cd976117c636799e10cea486d171b9c7c20554ffc68c0dd5e33f0d847667264c19a40fbf44a697902dc11e55ca01e74d12f536fb67e338c124381e languageName: node linkType: hard "@lerna/log-packed@npm:5.6.2": version: 5.6.2 resolution: "@lerna/log-packed@npm:5.6.2" dependencies: byte-size: ^7.0.0 columnify: ^1.6.0 has-unicode: ^2.0.1 npmlog: ^6.0.2 checksum: bbb43bd521bd431298048556a0ca1b83819d6352a06c4792a121403ab5cc2a467c7e89848cec72c7e348af12d3eac1e65e95d1372bedad2ef4a68aaa5d624e5a languageName: node linkType: hard "@lerna/npm-conf@npm:5.6.2": version: 5.6.2 resolution: "@lerna/npm-conf@npm:5.6.2" dependencies: config-chain: ^1.1.12 pify: ^5.0.0 checksum: ee79c50b57859c918e597b48f44483c00c47fc84e61440c21d756981e8ff0d2721ff068e9539fabc50c073710d5c8fee469aa9e6620c0ecbf4dfce9db4979f94 languageName: node linkType: hard "@lerna/npm-dist-tag@npm:5.6.2": version: 5.6.2 resolution: "@lerna/npm-dist-tag@npm:5.6.2" dependencies: "@lerna/otplease": 5.6.2 npm-package-arg: 8.1.1 npm-registry-fetch: ^13.3.0 npmlog: ^6.0.2 checksum: f50f8b090d197b773b467853d54f2993dd99721cfd8dc17f4af587bc0f53a6c1d879175673f34471d2778b114bc97fcb86bfade1d1aafa349ade92f78878dbf5 languageName: node linkType: hard "@lerna/npm-install@npm:5.6.2": version: 5.6.2 resolution: "@lerna/npm-install@npm:5.6.2" dependencies: "@lerna/child-process": 5.6.2 "@lerna/get-npm-exec-opts": 5.6.2 fs-extra: ^9.1.0 npm-package-arg: 8.1.1 npmlog: ^6.0.2 signal-exit: ^3.0.3 write-pkg: ^4.0.0 checksum: 6878ee7420edb0353ae8b755b10ae33100980b108cbeaa5848f4b5d2c19c836dbe2d93b401365fe05baf080808c8ad259a05bb78d52b177fc21d6c24bdf41b27 languageName: node linkType: hard "@lerna/npm-publish@npm:5.6.2": version: 5.6.2 resolution: "@lerna/npm-publish@npm:5.6.2" dependencies: "@lerna/otplease": 5.6.2 "@lerna/run-lifecycle": 5.6.2 fs-extra: ^9.1.0 libnpmpublish: ^6.0.4 npm-package-arg: 8.1.1 npmlog: ^6.0.2 pify: ^5.0.0 read-package-json: ^5.0.1 checksum: 87ec165e2c5976fd04e41bbed0cf796317813d4ef50cc42a1c96c25d96f761333d34fa575702f2979b3c828ea7df87d21064521fc4137da9d16f67803192c902 languageName: node linkType: hard "@lerna/npm-run-script@npm:5.6.2": version: 5.6.2 resolution: "@lerna/npm-run-script@npm:5.6.2" dependencies: "@lerna/child-process": 5.6.2 "@lerna/get-npm-exec-opts": 5.6.2 npmlog: ^6.0.2 checksum: b8319fe926484afd28f7fa68d92cca438a6429841bec06c843ca673bff044da15380c0077530bc7dd11b10c413a7404c6f7597f0ec15a33137ff5dbb1b9f98f2 languageName: node linkType: hard "@lerna/otplease@npm:5.6.2": version: 5.6.2 resolution: "@lerna/otplease@npm:5.6.2" dependencies: "@lerna/prompt": 5.6.2 checksum: a8eaf9a3104d2d869dac773001e7b82b5825ae1753e1ed5ec953f11930bfc61ec7131a3e802a735cf88e6d61c945ac7bf52a5ae3a3937c40be11ef34b0f85a06 languageName: node linkType: hard "@lerna/output@npm:5.6.2": version: 5.6.2 resolution: "@lerna/output@npm:5.6.2" dependencies: npmlog: ^6.0.2 checksum: 34494135cf13cf024bb325c85f91e33f1d295df941afa659bdab3896862a9b69165ad6afdefc30945576577960f83c8e2374d2d5feb79e9a34b757ccffce2d9f languageName: node linkType: hard "@lerna/pack-directory@npm:5.6.2": version: 5.6.2 resolution: "@lerna/pack-directory@npm:5.6.2" dependencies: "@lerna/get-packed": 5.6.2 "@lerna/package": 5.6.2 "@lerna/run-lifecycle": 5.6.2 "@lerna/temp-write": 5.6.2 npm-packlist: ^5.1.1 npmlog: ^6.0.2 tar: ^6.1.0 checksum: 1231c9d0d1573267616364a50ef736be6edfdcf82600aee0d89ba8ddae891a32ad8d6d041af92ea685dee95ab7d4662098d62c61201d071a8ec9b4e19dd28e80 languageName: node linkType: hard "@lerna/package-graph@npm:5.6.2": version: 5.6.2 resolution: "@lerna/package-graph@npm:5.6.2" dependencies: "@lerna/prerelease-id-from-version": 5.6.2 "@lerna/validation-error": 5.6.2 npm-package-arg: 8.1.1 npmlog: ^6.0.2 semver: ^7.3.4 checksum: 1627c2de7bad648f6579ebf5cfdeedf3d4eb1931d8dfde10f9ee60663f38b9286b29292b135337f9c4976c4c444b27d341b4ced408f8a067ba97d66ac1efe203 languageName: node linkType: hard "@lerna/package@npm:5.6.2": version: 5.6.2 resolution: "@lerna/package@npm:5.6.2" dependencies: load-json-file: ^6.2.0 npm-package-arg: 8.1.1 write-pkg: ^4.0.0 checksum: 7f0d32cf4a74c76d932633a06ace58eca7ea46a2624ef304101b6b882ebe4ec1c683c6836784b790132d29e68e396f6490703db3070af3cff02ef32260f0fb52 languageName: node linkType: hard "@lerna/prerelease-id-from-version@npm:5.6.2": version: 5.6.2 resolution: "@lerna/prerelease-id-from-version@npm:5.6.2" dependencies: semver: ^7.3.4 checksum: 0b48944fc17941061036d7ed93829ca9555897b5073177cb6435cda852da433095df4a76c0b37842788ea5a4536a5300adec2bc23d55daeb8a0b0ca53de16268 languageName: node linkType: hard "@lerna/profiler@npm:5.6.2": version: 5.6.2 resolution: "@lerna/profiler@npm:5.6.2" dependencies: fs-extra: ^9.1.0 npmlog: ^6.0.2 upath: ^2.0.1 checksum: a66e0c763b1b0477cdfb0d8c06da0693bf142aaa4cd694022e35a9f7b016126780b685494c862cc3f3a175b14f31f1fc9902f924aa48d1243ad3e41088a661f1 languageName: node linkType: hard "@lerna/project@npm:5.6.2": version: 5.6.2 resolution: "@lerna/project@npm:5.6.2" dependencies: "@lerna/package": 5.6.2 "@lerna/validation-error": 5.6.2 cosmiconfig: ^7.0.0 dedent: ^0.7.0 dot-prop: ^6.0.1 glob-parent: ^5.1.1 globby: ^11.0.2 js-yaml: ^4.1.0 load-json-file: ^6.2.0 npmlog: ^6.0.2 p-map: ^4.0.0 resolve-from: ^5.0.0 write-json-file: ^4.3.0 checksum: 26ba2daa219bc033fe06770f3f539ca801c96993a7e2e95d0a2ad72646f43746d5efe67e8a407306b2de6ebfa8220c6682b8a6fd72ec4402ce3af21cdec54f20 languageName: node linkType: hard "@lerna/prompt@npm:5.6.2": version: 5.6.2 resolution: "@lerna/prompt@npm:5.6.2" dependencies: inquirer: ^8.2.4 npmlog: ^6.0.2 checksum: a6f9352f223493d2eeb975f0eeb8981184a6981e2166a49bed792cebd811bf896234bf818b6e8260a6cf2cb2e5e0e26bf3c25475a159dc9b044f3708252b52b8 languageName: node linkType: hard "@lerna/publish@npm:5.6.2": version: 5.6.2 resolution: "@lerna/publish@npm:5.6.2" dependencies: "@lerna/check-working-tree": 5.6.2 "@lerna/child-process": 5.6.2 "@lerna/collect-updates": 5.6.2 "@lerna/command": 5.6.2 "@lerna/describe-ref": 5.6.2 "@lerna/log-packed": 5.6.2 "@lerna/npm-conf": 5.6.2 "@lerna/npm-dist-tag": 5.6.2 "@lerna/npm-publish": 5.6.2 "@lerna/otplease": 5.6.2 "@lerna/output": 5.6.2 "@lerna/pack-directory": 5.6.2 "@lerna/prerelease-id-from-version": 5.6.2 "@lerna/prompt": 5.6.2 "@lerna/pulse-till-done": 5.6.2 "@lerna/run-lifecycle": 5.6.2 "@lerna/run-topologically": 5.6.2 "@lerna/validation-error": 5.6.2 "@lerna/version": 5.6.2 fs-extra: ^9.1.0 libnpmaccess: ^6.0.3 npm-package-arg: 8.1.1 npm-registry-fetch: ^13.3.0 npmlog: ^6.0.2 p-map: ^4.0.0 p-pipe: ^3.1.0 pacote: ^13.6.1 semver: ^7.3.4 checksum: dce481b6e6ec168e75bc9c08bd075169b299fdf345abebf14029fa717029ddf2fc1464c65653234830807fb881ef0999a0af0f094a143c38865dd9d0dfb74ffd languageName: node linkType: hard "@lerna/pulse-till-done@npm:5.6.2": version: 5.6.2 resolution: "@lerna/pulse-till-done@npm:5.6.2" dependencies: npmlog: ^6.0.2 checksum: 923995424e6399947fa752d0eb7b33852e6f77d0c17280c2fef43e757f47f28e07227708bc2ce1d8dc81c8afee2e1509cee1d7c3d08ab8f615498770974f8f0d languageName: node linkType: hard "@lerna/query-graph@npm:5.6.2": version: 5.6.2 resolution: "@lerna/query-graph@npm:5.6.2" dependencies: "@lerna/package-graph": 5.6.2 checksum: a582795283760828417e3554ec015c68c815690bb7b29d7cf368a3a9d82f5150b8e6dbf02356cf4e4539b581d9879609876577ec87f3e4cc7a4caf605b2a042d languageName: node linkType: hard "@lerna/resolve-symlink@npm:5.6.2": version: 5.6.2 resolution: "@lerna/resolve-symlink@npm:5.6.2" dependencies: fs-extra: ^9.1.0 npmlog: ^6.0.2 read-cmd-shim: ^3.0.0 checksum: 19a95bb295ff9154f3661d36b54abfd5e415c0fb85a669a2fc7b600a180de13877b310d230c7782d8d5441324c5527c311f7a4afef57d6b8be04cbce5cd94927 languageName: node linkType: hard "@lerna/rimraf-dir@npm:5.6.2": version: 5.6.2 resolution: "@lerna/rimraf-dir@npm:5.6.2" dependencies: "@lerna/child-process": 5.6.2 npmlog: ^6.0.2 path-exists: ^4.0.0 rimraf: ^3.0.2 checksum: b0ec7dc69e3caa4c4eae88b8feedf248feff603e50d082a5f363fc0a1f604fc7b76d2067d69c79fdaa20675e3d5a87b59baaab6225c73dc1322b8705ce58030b languageName: node linkType: hard "@lerna/run-lifecycle@npm:5.6.2": version: 5.6.2 resolution: "@lerna/run-lifecycle@npm:5.6.2" dependencies: "@lerna/npm-conf": 5.6.2 "@npmcli/run-script": ^4.1.7 npmlog: ^6.0.2 p-queue: ^6.6.2 checksum: 3c05af8ddd442a2fba007a41daeac3157dbfe845c3123f106b738843e2615e2a7350c8381622a6b4a793e675340c5671baabef95e6c63398c39b2fcedcafe6fb languageName: node linkType: hard "@lerna/run-topologically@npm:5.6.2": version: 5.6.2 resolution: "@lerna/run-topologically@npm:5.6.2" dependencies: "@lerna/query-graph": 5.6.2 p-queue: ^6.6.2 checksum: d10b59ddff43c0f8387bcd7f9618d135ae6f33ba23d74d9d2fa16cece4209759f8ada46e1050cff07ad82388eda4774a7f0a1690bac4b36ce8f3a23c2718d0d3 languageName: node linkType: hard "@lerna/run@npm:5.6.2": version: 5.6.2 resolution: "@lerna/run@npm:5.6.2" dependencies: "@lerna/command": 5.6.2 "@lerna/filter-options": 5.6.2 "@lerna/npm-run-script": 5.6.2 "@lerna/output": 5.6.2 "@lerna/profiler": 5.6.2 "@lerna/run-topologically": 5.6.2 "@lerna/timer": 5.6.2 "@lerna/validation-error": 5.6.2 fs-extra: ^9.1.0 p-map: ^4.0.0 checksum: a3ed53fea86b2b80d0c95aa2a9f007e524cde35422ebad312e21adaeae8564475f3d2a5ab40612ab8be1bfe8e935b61115808833e3e281ab93240f1b38b7d69a languageName: node linkType: hard "@lerna/symlink-binary@npm:5.6.2": version: 5.6.2 resolution: "@lerna/symlink-binary@npm:5.6.2" dependencies: "@lerna/create-symlink": 5.6.2 "@lerna/package": 5.6.2 fs-extra: ^9.1.0 p-map: ^4.0.0 checksum: f4d633677cde5b27e580c064ffca60b46be6808afcab5bd327e3c4e4d0cb7a924d79d5022f87f1e2209014687c75cb7c59d8514cab3911f4e14a5b5bbbf96fec languageName: node linkType: hard "@lerna/symlink-dependencies@npm:5.6.2": version: 5.6.2 resolution: "@lerna/symlink-dependencies@npm:5.6.2" dependencies: "@lerna/create-symlink": 5.6.2 "@lerna/resolve-symlink": 5.6.2 "@lerna/symlink-binary": 5.6.2 fs-extra: ^9.1.0 p-map: ^4.0.0 p-map-series: ^2.1.0 checksum: f1de8b38288f42647a0c663b8d6c701bf80acadaaf566830f736d3aae4b9f6dc0bac2fb3a771a266c62bcc72dd3b02b9ab5c2b4ccba40ad9e91894c08a168df8 languageName: node linkType: hard "@lerna/temp-write@npm:5.6.2": version: 5.6.2 resolution: "@lerna/temp-write@npm:5.6.2" dependencies: graceful-fs: ^4.1.15 is-stream: ^2.0.0 make-dir: ^3.0.0 temp-dir: ^1.0.0 uuid: ^8.3.2 checksum: 9a3ef13e08230a88de046aaaba0efdc2b5e27f16abd97af03b395bc2cf40ec52d8b6850d25a913b955046f52013c4a99b3e75a48397356d0a9a86b0f97afa905 languageName: node linkType: hard "@lerna/timer@npm:5.6.2": version: 5.6.2 resolution: "@lerna/timer@npm:5.6.2" checksum: 3eb43f371f5e357a42ec0a69722b13feff3967c88057334562366ffae40ce5ee7750718a498037e1f0ab9d438274357c4033561f068a76b1a6f98861a5eeae0c languageName: node linkType: hard "@lerna/validation-error@npm:5.6.2": version: 5.6.2 resolution: "@lerna/validation-error@npm:5.6.2" dependencies: npmlog: ^6.0.2 checksum: 3871cbacc7668ab2b0498f3d394ea65fa721257402cffa89efb97f6bed89d11504f554d25007d079e679181bcbbf773432745733654f8415e901c7d08a6ae06b languageName: node linkType: hard "@lerna/version@npm:5.6.2": version: 5.6.2 resolution: "@lerna/version@npm:5.6.2" dependencies: "@lerna/check-working-tree": 5.6.2 "@lerna/child-process": 5.6.2 "@lerna/collect-updates": 5.6.2 "@lerna/command": 5.6.2 "@lerna/conventional-commits": 5.6.2 "@lerna/github-client": 5.6.2 "@lerna/gitlab-client": 5.6.2 "@lerna/output": 5.6.2 "@lerna/prerelease-id-from-version": 5.6.2 "@lerna/prompt": 5.6.2 "@lerna/run-lifecycle": 5.6.2 "@lerna/run-topologically": 5.6.2 "@lerna/temp-write": 5.6.2 "@lerna/validation-error": 5.6.2 "@nrwl/devkit": ">=14.8.1 < 16" chalk: ^4.1.0 dedent: ^0.7.0 load-json-file: ^6.2.0 minimatch: ^3.0.4 npmlog: ^6.0.2 p-map: ^4.0.0 p-pipe: ^3.1.0 p-reduce: ^2.1.0 p-waterfall: ^2.1.1 semver: ^7.3.4 slash: ^3.0.0 write-json-file: ^4.3.0 checksum: da0e0b822af685b0553dac95aa1355b5bfb9abde208d1afcc1a0e38134c49e7d3dc1430d0c951ffad236032bba5c242025754494dd6ceb5ad913f3cc8b9113b3 languageName: node linkType: hard "@lerna/write-log-file@npm:5.6.2": version: 5.6.2 resolution: "@lerna/write-log-file@npm:5.6.2" dependencies: npmlog: ^6.0.2 write-file-atomic: ^4.0.1 checksum: 814e9cf20ac28be49b22720be7bef8f708b28c344d54a0664cb8c44bbcb11387c4f89abf1050cfc81b41fa770099c748ac97fdb99d8a016c9e2c3ca801f27a30 languageName: node linkType: hard "@lezer/common@npm:^1.0.0, @lezer/common@npm:^1.0.2": version: 1.0.2 resolution: "@lezer/common@npm:1.0.2" checksum: bbcc58e07be02652bf0700d2856042ec089d5be0b95893d628b3e18192ade864fac83b61b19653e10b9f1472261a178b12318d934e9004edd5483a577c0db56b languageName: node linkType: hard "@lezer/cpp@npm:^1.0.0": version: 1.1.0 resolution: "@lezer/cpp@npm:1.1.0" dependencies: "@lezer/highlight": ^1.0.0 "@lezer/lr": ^1.0.0 checksum: 9b25c881fc9b64fd2b019a077a85b0ba7cfda0bbdd92dbb0ff43300c9ba1ec4360128fe912bfe0f06a1c1bb5a564c5ace375c8aad254d07a717768a8f268695d languageName: node linkType: hard "@lezer/css@npm:^1.0.0, @lezer/css@npm:^1.1.0": version: 1.1.2 resolution: "@lezer/css@npm:1.1.2" dependencies: "@lezer/highlight": ^1.0.0 "@lezer/lr": ^1.0.0 checksum: 02218fe6901428e191a91a1f1a3728a051af982bafaf37144884c9261a7e24b2ad1dfdaa6e7feeb160e5bc34157ce92213cd92ae244cdf0b8485b8b8113850f8 languageName: node linkType: hard "@lezer/generator@npm:^1.2.2": version: 1.2.3 resolution: "@lezer/generator@npm:1.2.3" dependencies: "@lezer/common": ^1.0.2 "@lezer/lr": ^1.3.0 bin: lezer-generator: dist/lezer-generator.cjs checksum: 300edf525f15ff27b84c366f1e9e66d741222f4b206cf015851679d7d153f5653b205ed9c3241f8df225eb97cefc99207343e148fe26bf2c4f636a00839976a8 languageName: node linkType: hard "@lezer/highlight@npm:^1.0.0, @lezer/highlight@npm:^1.1.3, @lezer/highlight@npm:^1.1.4": version: 1.1.4 resolution: "@lezer/highlight@npm:1.1.4" dependencies: "@lezer/common": ^1.0.0 checksum: 30e848c02839bfcd9472fcd6e74d71cba12379cef38f27d0c6cab0e6831f92150cfc629d267a40cc31f84cf46ac0a935400163fdf931b2672c516bec29417485 languageName: node linkType: hard "@lezer/html@npm:^1.3.0": version: 1.3.4 resolution: "@lezer/html@npm:1.3.4" dependencies: "@lezer/common": ^1.0.0 "@lezer/highlight": ^1.0.0 "@lezer/lr": ^1.0.0 checksum: 81dd134ac094edf7c40bae4c3b7126d336ce4c3c87756344bf604eff64d89b06fcb55f91618a4622eb0dae6d6015722f5bab58e2252d86e81fca8c3ced1a0c4d languageName: node linkType: hard "@lezer/java@npm:^1.0.0": version: 1.0.3 resolution: "@lezer/java@npm:1.0.3" dependencies: "@lezer/highlight": ^1.0.0 "@lezer/lr": ^1.0.0 checksum: 2fffea6627d130413ffad4e61040267974cca3167d98881b9e5b5e2455530de74a82c234d93603e92a4972fad314671453c49c0a76b0f4547c4617d671fd7b99 languageName: node linkType: hard "@lezer/javascript@npm:^1.0.0": version: 1.4.3 resolution: "@lezer/javascript@npm:1.4.3" dependencies: "@lezer/highlight": ^1.1.3 "@lezer/lr": ^1.3.0 checksum: 520dc2d84c84841ef554993c1c0dfe503487aa9be398ebcf617b51d06f99121841d4ca1cf25f3f53d00efa820ea778cc2271da425a606ac66e9f09a4c8cc6677 languageName: node linkType: hard "@lezer/json@npm:^1.0.0": version: 1.0.0 resolution: "@lezer/json@npm:1.0.0" dependencies: "@lezer/highlight": ^1.0.0 "@lezer/lr": ^1.0.0 checksum: c1ca0cdf681415b58a383a669944bed66da3aa830870d32d1e471d545cff0fe43d9ac8a0d2a318a96daa99cd5a645b1d58ba8fbdd2e8d7ca4d33a62c7582cbab languageName: node linkType: hard "@lezer/lr@npm:^1.0.0, @lezer/lr@npm:^1.1.0, @lezer/lr@npm:^1.3.0": version: 1.3.4 resolution: "@lezer/lr@npm:1.3.4" dependencies: "@lezer/common": ^1.0.0 checksum: 58bc25a9ba891dc6ca713fc8768706935e65d6e54d79a8ddb40c742cc799e87eddf4f49a6d6566a649c4726a9ab79a4200d36c9351608285a9bee6cdf3b33341 languageName: node linkType: hard "@lezer/markdown@npm:^1.0.0, @lezer/markdown@npm:^1.0.2": version: 1.0.2 resolution: "@lezer/markdown@npm:1.0.2" dependencies: "@lezer/common": ^1.0.0 "@lezer/highlight": ^1.0.0 checksum: c4bbfcd8a5a9d924a7cf2b5e5e99c78e7705473cc59804070278b5cfcf478af9dd567025d0926cbf03e3ea6abb8f173425220d3107c05a2d7e0ca3fe3d5c92ef languageName: node linkType: hard "@lezer/php@npm:^1.0.0": version: 1.0.1 resolution: "@lezer/php@npm:1.0.1" dependencies: "@lezer/highlight": ^1.0.0 "@lezer/lr": ^1.1.0 checksum: a847c255c030b4d38913ddf1d5bd7324d83be7ef8d1d244542870be03b9bf7dc71283afeb2415c40dfd188cb99f0cc44bad760b5f3b7c35c3b8e5e00253848fc languageName: node linkType: hard "@lezer/python@npm:^1.0.0": version: 1.1.5 resolution: "@lezer/python@npm:1.1.5" dependencies: "@lezer/highlight": ^1.0.0 "@lezer/lr": ^1.0.0 checksum: 0327b90d18135bcc6e0b13369074f6e4cbc3204f6b91e0ffac674a2f8e4d32a0ecb7450fa0974c066018f09ec4be2c6568a0fac219336696188363a8cf1c92a3 languageName: node linkType: hard "@lezer/rust@npm:^1.0.0": version: 1.0.0 resolution: "@lezer/rust@npm:1.0.0" dependencies: "@lezer/highlight": ^1.0.0 "@lezer/lr": ^1.0.0 checksum: 0c42f415674f60ca2ef4274b446577621cdeec8f31168b1c3b90888a4377c513f02a89ee346421c264ec3a77fe2fa3e134996be6463ed506dbbc79b4b4505375 languageName: node linkType: hard "@lezer/xml@npm:^1.0.0": version: 1.0.1 resolution: "@lezer/xml@npm:1.0.1" dependencies: "@lezer/highlight": ^1.0.0 "@lezer/lr": ^1.0.0 checksum: 271319aa7802c123845b70ffa63d7065c0f92fc6a1ddb1f8ec9f3aa965bca3df3c9fad4d4de53187ddf230e833cd3ab3a84cb2aded76ab5f6831e9a2fc310923 languageName: node linkType: hard "@lumino/algorithm@npm:^1.11.1 || ^2.0.0, @lumino/algorithm@npm:^2.0.0": version: 2.0.0 resolution: "@lumino/algorithm@npm:2.0.0" checksum: 663edf536e94397b449c6a2643a735e602fbb396dec86b56ad1193a768dce27c6e7da5ad0384aa90086ea44cbb64dde3f9d565e9fd81858f1eb0c6b4253f3b94 languageName: node linkType: hard "@lumino/algorithm@npm:^1.9.1 || ^2.1, @lumino/algorithm@npm:^1.9.2": version: 1.9.2 resolution: "@lumino/algorithm@npm:1.9.2" checksum: a89e7c63504236119634858e271db1cc649684d30ced5a6ebe2788af7c0837f1e05a6fd3047d8525eb756c42ce137f76b3688f75fd3ef915b71cd4f213dfbb96 languageName: node linkType: hard "@lumino/application@npm:^2.1.1": version: 2.1.1 resolution: "@lumino/application@npm:2.1.1" dependencies: "@lumino/commands": ^2.1.1 "@lumino/coreutils": ^2.1.1 "@lumino/widgets": ^2.1.1 checksum: 442a047e43a85b48189d15a5a322f39cac01b9bee7b252aa76579c53e503f2cf2100f2e3aff61cd1d92fef07f04c0a3a6680c475890e0923456e296ceb79a692 languageName: node linkType: hard "@lumino/collections@npm:^1.9.3": version: 1.9.3 resolution: "@lumino/collections@npm:1.9.3" dependencies: "@lumino/algorithm": ^1.9.2 checksum: 1c87a12743eddd6f6b593e47945a5645e2f99ad61c5192499b0745e48ee9aff263c7145541e77dfeea4c9f50bdd017fddfa47bfc60e718de4f28533ce45bf8c3 languageName: node linkType: hard "@lumino/collections@npm:^2.0.0": version: 2.0.0 resolution: "@lumino/collections@npm:2.0.0" dependencies: "@lumino/algorithm": ^2.0.0 checksum: 4a7fc3571e92a1368a1ef01300ad7b6e0d4ff13cb78b89533d5962eea66d4a7550e15d8b80fa3ab1816b1a89382f35015f9dddf72ab04654c17e5b516b845d8f languageName: node linkType: hard "@lumino/commands@npm:^2.1.1": version: 2.1.1 resolution: "@lumino/commands@npm:2.1.1" dependencies: "@lumino/algorithm": ^2.0.0 "@lumino/coreutils": ^2.1.1 "@lumino/disposable": ^2.1.1 "@lumino/domutils": ^2.0.0 "@lumino/keyboard": ^2.0.0 "@lumino/signaling": ^2.1.1 "@lumino/virtualdom": ^2.0.0 checksum: a076244e9c4f7a3c6dab02642fdd38dbbaab6e5754acaeeb84a5195dc5c2fc19343ba754c3a0f89c9b60f16c61cb793301cdb6e8d69bdc30e18ed7e32f40d524 languageName: node linkType: hard "@lumino/coreutils@npm:^1.11.0 || ^2.0.0, @lumino/coreutils@npm:^1.11.1 || ^2, @lumino/coreutils@npm:^1.11.1 || ^2.1, @lumino/coreutils@npm:^2.1.1": version: 2.1.1 resolution: "@lumino/coreutils@npm:2.1.1" checksum: dfdeb2b0282caae17b6c3edfebadf4ce7c75fc879fa60cacfef9b154412f4b35e4ffd95b1833b99d8dacb99aaaa04513570129ae2024c3f33e2677a01f0576ce languageName: node linkType: hard "@lumino/disposable@npm:^1.10.0 || ^2.0.0, @lumino/disposable@npm:^1.10.1 || ^2.1, @lumino/disposable@npm:^2.1.1": version: 2.1.1 resolution: "@lumino/disposable@npm:2.1.1" dependencies: "@lumino/signaling": ^2.1.1 checksum: ed6cdfe13f3346178a087690d4e7baeccaed7e73ca23cb239765202409f5c01b4729a4058b4717f963462ee9ef2e5cb14ad1974e3163741267290edc3715c85c languageName: node linkType: hard "@lumino/domutils@npm:^1.8.1 || ^2.1": version: 1.8.2 resolution: "@lumino/domutils@npm:1.8.2" checksum: 196f25316a17cd8df8f11dbe17f10cbd96e5ce166ea97aab6402307dc554382423d860859bb5d05226f05909748b781fb281bb9220690fe1f3ddc716072c2ed5 languageName: node linkType: hard "@lumino/domutils@npm:^2.0.0": version: 2.0.0 resolution: "@lumino/domutils@npm:2.0.0" checksum: 4a146bfc1006d5fd00ccecc61d9803965d269c15c48c892fd87216336ce967f0db91f31203c5616c83d260224cddf25af4abb6704a6770757d19e44068f690bf languageName: node linkType: hard "@lumino/dragdrop@npm:^2.1.1": version: 2.1.1 resolution: "@lumino/dragdrop@npm:2.1.1" dependencies: "@lumino/coreutils": ^2.1.1 "@lumino/disposable": ^2.1.1 checksum: 68c896afc44476b11a501e5b30ec55db06c2648a45f078713a111b2bf3b2e9171a7c5478ff6bdeb771a7c1e397fe3bba7bc5eadb4fe3e1294851d677f811b5b8 languageName: node linkType: hard "@lumino/keyboard@npm:^2.0.0": version: 2.0.0 resolution: "@lumino/keyboard@npm:2.0.0" checksum: 3852ba51f437b1c1d7e552a0f844592a05e04dd5012070dc6e4384c58965d1ebf536c6875c1b7bae03cde3c715ddc36cd290992fcefc1a8c39094194f4689fdd languageName: node linkType: hard "@lumino/messaging@npm:^1.10.1 || ^2.1": version: 1.10.3 resolution: "@lumino/messaging@npm:1.10.3" dependencies: "@lumino/algorithm": ^1.9.2 "@lumino/collections": ^1.9.3 checksum: 1131e80379fa9b8a9b5d3418c90e25d4be48e2c92ec711518190772f9e8845a695bef45daddd06a129168cf6f158c8ad80ae86cb245f566e9195bbd9a0843b7a languageName: node linkType: hard "@lumino/messaging@npm:^2.0.0": version: 2.0.0 resolution: "@lumino/messaging@npm:2.0.0" dependencies: "@lumino/algorithm": ^2.0.0 "@lumino/collections": ^2.0.0 checksum: 1e82dcf9b110834d4342dc63dfeac0ee780880fb99051bd82d00a1f83afd91b276c1cea5af85a414d92c527adc365d54f20ec780123b562f89c5a2cd3e96bf81 languageName: node linkType: hard "@lumino/polling@npm:^2.1.1": version: 2.1.1 resolution: "@lumino/polling@npm:2.1.1" dependencies: "@lumino/coreutils": ^2.1.1 "@lumino/disposable": ^2.1.1 "@lumino/signaling": ^2.1.1 checksum: 69177b26d5fc541e72533cbe7d7f7999eea541d392f1082d20dbd9e1797e7d46fba47bae9c65c06f9ccb2780cbae636e9354d9bf4423b5e1020754d4b07d4f6b languageName: node linkType: hard "@lumino/properties@npm:^1.8.1 || ^2.1": version: 1.8.2 resolution: "@lumino/properties@npm:1.8.2" checksum: 9a53709fe58d3abbc99062f0c0fda4d5f64a4c7dca509251f0f89cdcaf881fdf6172ee852dbfe70594ee34bb97255acca771a722d62e7e2150ba8cf6f7e7d15c languageName: node linkType: hard "@lumino/properties@npm:^2.0.0": version: 2.0.0 resolution: "@lumino/properties@npm:2.0.0" checksum: 81187a11a779eed4e20ff0035e77dee99bd271b0cf649096c4e8809dd6bdd06955b1a974bc1a115e536f8d2840b30183bb78a362b2c6991824477df6d17e6c59 languageName: node linkType: hard "@lumino/signaling@npm:^1.10.0 || ^2.0.0, @lumino/signaling@npm:^1.10.1 || ^2.1, @lumino/signaling@npm:^2.1.1": version: 2.1.1 resolution: "@lumino/signaling@npm:2.1.1" dependencies: "@lumino/algorithm": ^2.0.0 "@lumino/coreutils": ^2.1.1 checksum: 283ad4239b8577f68aca3d0b2606f73cc1c775f84cab25cf49aa6cd195f0d87949ef43fdff03b38b5a49ebbf2468581c6786d5f8b6159a04b2051260be5eab86 languageName: node linkType: hard "@lumino/virtualdom@npm:^2.0.0": version: 2.0.0 resolution: "@lumino/virtualdom@npm:2.0.0" dependencies: "@lumino/algorithm": ^2.0.0 checksum: 6fc1d88e7d4a656be7664ccfc5745eb1d4e3d2034db0b11ad6abefcc642f22d265003eef0e1d02bca2e42b6da127123118c631369006f78e88a08885a6f36c25 languageName: node linkType: hard "@lumino/widgets@npm:^1.30.0 || ^2.1, @lumino/widgets@npm:^2.1.1": version: 2.1.1 resolution: "@lumino/widgets@npm:2.1.1" dependencies: "@lumino/algorithm": ^2.0.0 "@lumino/commands": ^2.1.1 "@lumino/coreutils": ^2.1.1 "@lumino/disposable": ^2.1.1 "@lumino/domutils": ^2.0.0 "@lumino/dragdrop": ^2.1.1 "@lumino/keyboard": ^2.0.0 "@lumino/messaging": ^2.0.0 "@lumino/properties": ^2.0.0 "@lumino/signaling": ^2.1.1 "@lumino/virtualdom": ^2.0.0 checksum: e2ad4a97d6ec43e5e1863c2a521b6b8cb7a708a470c1e78b0f34ff4ad8b9fca191597586c3033233a29ff0fa14b62aeef5ea2fe66af3058d39e711c6af129cf4 languageName: node linkType: hard "@nodelib/fs.scandir@npm:2.1.5": version: 2.1.5 resolution: "@nodelib/fs.scandir@npm:2.1.5" dependencies: "@nodelib/fs.stat": 2.0.5 run-parallel: ^1.1.9 checksum: a970d595bd23c66c880e0ef1817791432dbb7acbb8d44b7e7d0e7a22f4521260d4a83f7f9fd61d44fda4610105577f8f58a60718105fb38352baed612fd79e59 languageName: node linkType: hard "@nodelib/fs.stat@npm:2.0.5, @nodelib/fs.stat@npm:^2.0.2": version: 2.0.5 resolution: "@nodelib/fs.stat@npm:2.0.5" checksum: 012480b5ca9d97bff9261571dbbec7bbc6033f69cc92908bc1ecfad0792361a5a1994bc48674b9ef76419d056a03efadfce5a6cf6dbc0a36559571a7a483f6f0 languageName: node linkType: hard "@nodelib/fs.walk@npm:^1.2.3, @nodelib/fs.walk@npm:^1.2.8": version: 1.2.8 resolution: "@nodelib/fs.walk@npm:1.2.8" dependencies: "@nodelib/fs.scandir": 2.1.5 fastq: ^1.6.0 checksum: 190c643f156d8f8f277bf2a6078af1ffde1fd43f498f187c2db24d35b4b4b5785c02c7dc52e356497b9a1b65b13edc996de08de0b961c32844364da02986dc53 languageName: node linkType: hard "@npmcli/arborist@npm:5.3.0": version: 5.3.0 resolution: "@npmcli/arborist@npm:5.3.0" dependencies: "@isaacs/string-locale-compare": ^1.1.0 "@npmcli/installed-package-contents": ^1.0.7 "@npmcli/map-workspaces": ^2.0.3 "@npmcli/metavuln-calculator": ^3.0.1 "@npmcli/move-file": ^2.0.0 "@npmcli/name-from-folder": ^1.0.1 "@npmcli/node-gyp": ^2.0.0 "@npmcli/package-json": ^2.0.0 "@npmcli/run-script": ^4.1.3 bin-links: ^3.0.0 cacache: ^16.0.6 common-ancestor-path: ^1.0.1 json-parse-even-better-errors: ^2.3.1 json-stringify-nice: ^1.1.4 mkdirp: ^1.0.4 mkdirp-infer-owner: ^2.0.0 nopt: ^5.0.0 npm-install-checks: ^5.0.0 npm-package-arg: ^9.0.0 npm-pick-manifest: ^7.0.0 npm-registry-fetch: ^13.0.0 npmlog: ^6.0.2 pacote: ^13.6.1 parse-conflict-json: ^2.0.1 proc-log: ^2.0.0 promise-all-reject-late: ^1.0.0 promise-call-limit: ^1.0.1 read-package-json-fast: ^2.0.2 readdir-scoped-modules: ^1.1.0 rimraf: ^3.0.2 semver: ^7.3.7 ssri: ^9.0.0 treeverse: ^2.0.0 walk-up-path: ^1.0.0 bin: arborist: bin/index.js checksum: 7f99f451ba625dd3532e7a69b27cc399cab1e7ef2a069bbc04cf22ef9d16a0076f8f5fb92c4cd146c256cd8a41963b2e417684f063a108e96939c440bad0e95e languageName: node linkType: hard "@npmcli/fs@npm:^2.1.0": version: 2.1.2 resolution: "@npmcli/fs@npm:2.1.2" dependencies: "@gar/promisify": ^1.1.3 semver: ^7.3.5 checksum: 405074965e72d4c9d728931b64d2d38e6ea12066d4fad651ac253d175e413c06fe4350970c783db0d749181da8fe49c42d3880bd1cbc12cd68e3a7964d820225 languageName: node linkType: hard "@npmcli/git@npm:^3.0.0": version: 3.0.2 resolution: "@npmcli/git@npm:3.0.2" dependencies: "@npmcli/promise-spawn": ^3.0.0 lru-cache: ^7.4.4 mkdirp: ^1.0.4 npm-pick-manifest: ^7.0.0 proc-log: ^2.0.0 promise-inflight: ^1.0.1 promise-retry: ^2.0.1 semver: ^7.3.5 which: ^2.0.2 checksum: bdfd1229bb1113ad4883ef89b74b5dc442a2c96225d830491dd0dec4fa83d083b93cde92b6978d4956a8365521e61bc8dc1891fb905c7c693d5d6aa178f2ab44 languageName: node linkType: hard "@npmcli/installed-package-contents@npm:^1.0.7": version: 1.0.7 resolution: "@npmcli/installed-package-contents@npm:1.0.7" dependencies: npm-bundled: ^1.1.1 npm-normalize-package-bin: ^1.0.1 bin: installed-package-contents: index.js checksum: a4a29b99d439827ce2e7817c1f61b56be160e640696e31dc513a2c8a37c792f75cdb6258ec15a1e22904f20df0a8a3019dd3766de5e6619f259834cf64233538 languageName: node linkType: hard "@npmcli/map-workspaces@npm:^2.0.3": version: 2.0.4 resolution: "@npmcli/map-workspaces@npm:2.0.4" dependencies: "@npmcli/name-from-folder": ^1.0.1 glob: ^8.0.1 minimatch: ^5.0.1 read-package-json-fast: ^2.0.3 checksum: cc8d662ac5115ad9822742a11e11d2d32eda74214bd0f4efec30c9cd833975b5b4c8409fe54ddbb451b040b17a943f770976506cba0f26cfccd58d99b5880d6f languageName: node linkType: hard "@npmcli/metavuln-calculator@npm:^3.0.1": version: 3.1.1 resolution: "@npmcli/metavuln-calculator@npm:3.1.1" dependencies: cacache: ^16.0.0 json-parse-even-better-errors: ^2.3.1 pacote: ^13.0.3 semver: ^7.3.5 checksum: dc9846fdb82a1f4274ff8943f81452c75615bd9bca523c862956ea2c32e18c5a4be5572e169104d3a0eb262b7ede72c8dbbc202a4ab3b3f4946fa55f226dcc64 languageName: node linkType: hard "@npmcli/move-file@npm:^2.0.0": version: 2.0.1 resolution: "@npmcli/move-file@npm:2.0.1" dependencies: mkdirp: ^1.0.4 rimraf: ^3.0.2 checksum: 52dc02259d98da517fae4cb3a0a3850227bdae4939dda1980b788a7670636ca2b4a01b58df03dd5f65c1e3cb70c50fa8ce5762b582b3f499ec30ee5ce1fd9380 languageName: node linkType: hard "@npmcli/name-from-folder@npm:^1.0.1": version: 1.0.1 resolution: "@npmcli/name-from-folder@npm:1.0.1" checksum: 67339f4096e32b712d2df0250cc95c087569f09e657d7f81a1760fa2cc5123e29c3c3e1524388832310ba2d96ec4679985b643b44627f6a51f4a00c3b0075de9 languageName: node linkType: hard "@npmcli/node-gyp@npm:^2.0.0": version: 2.0.0 resolution: "@npmcli/node-gyp@npm:2.0.0" checksum: b6bbf0015000f9b64d31aefdc30f244b0348c57adb64017667e0304e96c38644d83da46a4581252652f5d606268df49118f9c9993b41d8020f62b7b15dd2c8d8 languageName: node linkType: hard "@npmcli/package-json@npm:^2.0.0": version: 2.0.0 resolution: "@npmcli/package-json@npm:2.0.0" dependencies: json-parse-even-better-errors: ^2.3.1 checksum: 7a598e42d2778654ec87438ebfafbcbafbe5a5f5e89ed2ca1db6ca3f94ef14655e304aa41f77632a2a3f5c66b6bd5960bd9370e0ceb4902ea09346720364f9e4 languageName: node linkType: hard "@npmcli/promise-spawn@npm:^3.0.0": version: 3.0.0 resolution: "@npmcli/promise-spawn@npm:3.0.0" dependencies: infer-owner: ^1.0.4 checksum: 3454465a2731cea5875ba51f80873e2205e5bd878c31517286b0ede4ea931c7bf3de895382287e906d03710fff6f9e44186bd0eee068ce578901c5d3b58e7692 languageName: node linkType: hard "@npmcli/run-script@npm:^4.1.0, @npmcli/run-script@npm:^4.1.3, @npmcli/run-script@npm:^4.1.7": version: 4.2.1 resolution: "@npmcli/run-script@npm:4.2.1" dependencies: "@npmcli/node-gyp": ^2.0.0 "@npmcli/promise-spawn": ^3.0.0 node-gyp: ^9.0.0 read-package-json-fast: ^2.0.3 which: ^2.0.2 checksum: 7b8d6676353f157e68b26baf848e01e5d887bcf90ce81a52f23fc9a5d93e6ffb60057532d664cfd7aeeb76d464d0c8b0d314ee6cccb56943acb3b6c570b756c8 languageName: node linkType: hard "@nrwl/cli@npm:15.9.4": version: 15.9.4 resolution: "@nrwl/cli@npm:15.9.4" dependencies: nx: 15.9.4 checksum: 039df998bbc56cc6d506a4c07500c97ce6662dff1ed0756d893d48398ffbfcfc9a1c274914011dbe331c0663b5c3e6de496ad6cdd05180ea0505fdcee19c67ff languageName: node linkType: hard "@nrwl/devkit@npm:>=14.8.1 < 16": version: 15.9.4 resolution: "@nrwl/devkit@npm:15.9.4" dependencies: ejs: ^3.1.7 ignore: ^5.0.4 semver: 7.3.4 tmp: ~0.2.1 tslib: ^2.3.0 peerDependencies: nx: ">= 14.1 <= 16" checksum: 4207edab94384315bc80da673ae5c31bd63a8944c69ad1a2a2834d0e6f9ef5eb8a4118a1943ae855c6da889e326490cc4e5df718cb8df5853263e3b3c44d0148 languageName: node linkType: hard "@nrwl/nx-darwin-arm64@npm:15.9.4": version: 15.9.4 resolution: "@nrwl/nx-darwin-arm64@npm:15.9.4" conditions: os=darwin & cpu=arm64 languageName: node linkType: hard "@nrwl/nx-darwin-x64@npm:15.9.4": version: 15.9.4 resolution: "@nrwl/nx-darwin-x64@npm:15.9.4" conditions: os=darwin & cpu=x64 languageName: node linkType: hard "@nrwl/nx-linux-arm-gnueabihf@npm:15.9.4": version: 15.9.4 resolution: "@nrwl/nx-linux-arm-gnueabihf@npm:15.9.4" conditions: os=linux & cpu=arm languageName: node linkType: hard "@nrwl/nx-linux-arm64-gnu@npm:15.9.4": version: 15.9.4 resolution: "@nrwl/nx-linux-arm64-gnu@npm:15.9.4" conditions: os=linux & cpu=arm64 & libc=glibc languageName: node linkType: hard "@nrwl/nx-linux-arm64-musl@npm:15.9.4": version: 15.9.4 resolution: "@nrwl/nx-linux-arm64-musl@npm:15.9.4" conditions: os=linux & cpu=arm64 & libc=musl languageName: node linkType: hard "@nrwl/nx-linux-x64-gnu@npm:15.9.4": version: 15.9.4 resolution: "@nrwl/nx-linux-x64-gnu@npm:15.9.4" conditions: os=linux & cpu=x64 & libc=glibc languageName: node linkType: hard "@nrwl/nx-linux-x64-musl@npm:15.9.4": version: 15.9.4 resolution: "@nrwl/nx-linux-x64-musl@npm:15.9.4" conditions: os=linux & cpu=x64 & libc=musl languageName: node linkType: hard "@nrwl/nx-win32-arm64-msvc@npm:15.9.4": version: 15.9.4 resolution: "@nrwl/nx-win32-arm64-msvc@npm:15.9.4" conditions: os=win32 & cpu=arm64 languageName: node linkType: hard "@nrwl/nx-win32-x64-msvc@npm:15.9.4": version: 15.9.4 resolution: "@nrwl/nx-win32-x64-msvc@npm:15.9.4" conditions: os=win32 & cpu=x64 languageName: node linkType: hard "@nrwl/tao@npm:15.9.4": version: 15.9.4 resolution: "@nrwl/tao@npm:15.9.4" dependencies: nx: 15.9.4 bin: tao: index.js checksum: 03acf914b443fc5b0a93674dbdf9d770856d48adf8956819869aef6c5378ecb52e9696361e8c8799c639fd384f7ab5d109189d44251a8975901adcfe77fa0c9e languageName: node linkType: hard "@octokit/auth-token@npm:^3.0.0": version: 3.0.3 resolution: "@octokit/auth-token@npm:3.0.3" dependencies: "@octokit/types": ^9.0.0 checksum: 9b3f569cec1b7e0aa88ab6da68aed4b49b6652261bd957257541fabaf6a4d4ed99f908153cc3dd2fe15b8b0ccaff8caaafaa50bb1a4de3925b0954a47cca1900 languageName: node linkType: hard "@octokit/core@npm:^4.1.0": version: 4.2.0 resolution: "@octokit/core@npm:4.2.0" dependencies: "@octokit/auth-token": ^3.0.0 "@octokit/graphql": ^5.0.0 "@octokit/request": ^6.0.0 "@octokit/request-error": ^3.0.0 "@octokit/types": ^9.0.0 before-after-hook: ^2.2.0 universal-user-agent: ^6.0.0 checksum: 5ac56e7f14b42a5da8d3075a2ae41483521a78bee061a01f4a81d8c0ecd6a684b2e945d66baba0cd1fdf264639deedc3a96d0f32c4d2fc39b49ca10f52f4de39 languageName: node linkType: hard "@octokit/endpoint@npm:^7.0.0": version: 7.0.5 resolution: "@octokit/endpoint@npm:7.0.5" dependencies: "@octokit/types": ^9.0.0 is-plain-object: ^5.0.0 universal-user-agent: ^6.0.0 checksum: 81c9e9eabf50e48940cceff7c4d7fbc9327190296507cfe8a199ea00cd492caf8f18a841caf4e3619828924b481996eb16091826db6b5a649bee44c8718ecaa9 languageName: node linkType: hard "@octokit/graphql@npm:^5.0.0": version: 5.0.5 resolution: "@octokit/graphql@npm:5.0.5" dependencies: "@octokit/request": ^6.0.0 "@octokit/types": ^9.0.0 universal-user-agent: ^6.0.0 checksum: eb2d1a6305a3d1f55ff0ce92fb88b677f0bb789757152d58a79ef61171fb65ecf6fe18d6c27e236c0cee6a0c2600c2cb8370f5ac7184f8e9361c085aa4555bb1 languageName: node linkType: hard "@octokit/openapi-types@npm:^17.1.2": version: 17.2.0 resolution: "@octokit/openapi-types@npm:17.2.0" checksum: 29995e34f98d9d64ba234d64a7ae9486c66d2bb6ac0d30d9a42decdbb4b03b13e811769b1e1505a1748ff20c22d35724985e6c128cd11a3f14f8322201520093 languageName: node linkType: hard "@octokit/plugin-enterprise-rest@npm:^6.0.1": version: 6.0.1 resolution: "@octokit/plugin-enterprise-rest@npm:6.0.1" checksum: 1c9720002f31daf62f4f48e73557dcdd7fcde6e0f6d43256e3f2ec827b5548417297186c361fb1af497fdcc93075a7b681e6ff06e2f20e4a8a3e74cc09d1f7e3 languageName: node linkType: hard "@octokit/plugin-paginate-rest@npm:^6.1.0": version: 6.1.0 resolution: "@octokit/plugin-paginate-rest@npm:6.1.0" dependencies: "@octokit/types": ^9.2.2 peerDependencies: "@octokit/core": ">=4" checksum: e6f7d211d2ddae29762d447b5a0687fb4d48a36c623f4720a11dbd4343f04a149b4ae496392ad16a2cf7e1fbda0783abc3a7b9f1be523dd04e468a6a4e87fae2 languageName: node linkType: hard "@octokit/plugin-request-log@npm:^1.0.4": version: 1.0.4 resolution: "@octokit/plugin-request-log@npm:1.0.4" peerDependencies: "@octokit/core": ">=3" checksum: 2086db00056aee0f8ebd79797b5b57149ae1014e757ea08985b71eec8c3d85dbb54533f4fd34b6b9ecaa760904ae6a7536be27d71e50a3782ab47809094bfc0c languageName: node linkType: hard "@octokit/plugin-rest-endpoint-methods@npm:^7.1.0": version: 7.1.0 resolution: "@octokit/plugin-rest-endpoint-methods@npm:7.1.0" dependencies: "@octokit/types": ^9.2.2 deprecation: ^2.3.1 peerDependencies: "@octokit/core": ">=3" checksum: 4ac740dc74a0f7789601b4118c1f0ee42cd3480dfd0199515414dcbb670f126e31dd6856a9deb1578a2e2e8c70d4f5f1828cb85f4bd8a8cd5576dfb0cd5b29c7 languageName: node linkType: hard "@octokit/request-error@npm:^3.0.0": version: 3.0.3 resolution: "@octokit/request-error@npm:3.0.3" dependencies: "@octokit/types": ^9.0.0 deprecation: ^2.0.0 once: ^1.4.0 checksum: 5db0b514732686b627e6ed9ef1ccdbc10501f1b271a9b31f784783f01beee70083d7edcfeb35fbd7e569fa31fdd6762b1ff6b46101700d2d97e7e48e749520d0 languageName: node linkType: hard "@octokit/request@npm:^6.0.0": version: 6.2.3 resolution: "@octokit/request@npm:6.2.3" dependencies: "@octokit/endpoint": ^7.0.0 "@octokit/request-error": ^3.0.0 "@octokit/types": ^9.0.0 is-plain-object: ^5.0.0 node-fetch: ^2.6.7 universal-user-agent: ^6.0.0 checksum: fef4097be8375d20bb0b3276d8a3adf866ec628f2b0664d334f3c29b92157da847899497abdc7a5be540053819b55564990543175ad48f04e9e6f25f0395d4d3 languageName: node linkType: hard "@octokit/rest@npm:^19.0.3": version: 19.0.8 resolution: "@octokit/rest@npm:19.0.8" dependencies: "@octokit/core": ^4.1.0 "@octokit/plugin-paginate-rest": ^6.1.0 "@octokit/plugin-request-log": ^1.0.4 "@octokit/plugin-rest-endpoint-methods": ^7.1.0 checksum: 86276924a2458cb1cb672d496dee45752ea14c57ca146f148cc51160179600c4071e1d8c4fd593bb20a6b5ca51cc94451d6cb4457865c174090e3e3f9bae597c languageName: node linkType: hard "@octokit/types@npm:^9.0.0, @octokit/types@npm:^9.2.2": version: 9.2.2 resolution: "@octokit/types@npm:9.2.2" dependencies: "@octokit/openapi-types": ^17.1.2 checksum: 6bbf7e55c167f683ee68430f07be5d22e9ab4db92645872887bb040e09bf419d629600b811b3e502d70f7dfb6c2c11dbbc6239e0612e9a0b994673aeb5100d8b languageName: node linkType: hard "@parcel/watcher@npm:2.0.4": version: 2.0.4 resolution: "@parcel/watcher@npm:2.0.4" dependencies: node-addon-api: ^3.2.1 node-gyp: latest node-gyp-build: ^4.3.0 checksum: 890bdc69a52942791b276caa2cd65ef816576d6b5ada91aa28cf302b35d567c801dafe167f2525dcb313f5b420986ea11bd56228dd7ddde1116944d8f924a0a1 languageName: node linkType: hard "@pkgjs/parseargs@npm:^0.11.0": version: 0.11.0 resolution: "@pkgjs/parseargs@npm:0.11.0" checksum: 6ad6a00fc4f2f2cfc6bff76fb1d88b8ee20bc0601e18ebb01b6d4be583733a860239a521a7fbca73b612e66705078809483549d2b18f370eb346c5155c8e4a0f languageName: node linkType: hard "@rjsf/core@npm:^5.1.0": version: 5.7.2 resolution: "@rjsf/core@npm:5.7.2" dependencies: lodash: ^4.17.21 lodash-es: ^4.17.21 markdown-to-jsx: ^7.2.0 nanoid: ^3.3.6 prop-types: ^15.8.1 peerDependencies: "@rjsf/utils": 5.7.x react: ^16.14.0 || >=17 checksum: a2c40a71db35b4609a41bebb173060ff0fdab7007cbd1fe6f958e50fb15b2ecef4f0d63648d882b5af59b35327c1d92c34178f1609c5b9d9f7ca77b2704ca427 languageName: node linkType: hard "@rjsf/utils@npm:^5.1.0": version: 5.7.2 resolution: "@rjsf/utils@npm:5.7.2" dependencies: json-schema-merge-allof: ^0.8.1 jsonpointer: ^5.0.1 lodash: ^4.17.21 lodash-es: ^4.17.21 react-is: ^18.2.0 peerDependencies: react: ^16.14.0 || >=17 checksum: 77dd1365b509fb246094dbb20c02917788fea0ff18b3afd7dcc2f9330b6310a3ca5e1d7983e8eee56c0734ebd45bc110e862b9366ef9616fad351304d514262a languageName: node linkType: hard "@sindresorhus/is@npm:^4.0.0": version: 4.6.0 resolution: "@sindresorhus/is@npm:4.6.0" checksum: 83839f13da2c29d55c97abc3bc2c55b250d33a0447554997a85c539e058e57b8da092da396e252b11ec24a0279a0bed1f537fa26302209327060643e327f81d2 languageName: node linkType: hard "@sinonjs/commons@npm:^1.6.0, @sinonjs/commons@npm:^1.7.0, @sinonjs/commons@npm:^1.8.3": version: 1.8.6 resolution: "@sinonjs/commons@npm:1.8.6" dependencies: type-detect: 4.0.8 checksum: 7d3f8c1e85f30cd4e83594fc19b7a657f14d49eb8d95a30095631ce15e906c869e0eff96c5b93dffea7490c00418b07f54582ba49c6560feb2a8c34c0b16832d languageName: node linkType: hard "@sinonjs/commons@npm:^2.0.0": version: 2.0.0 resolution: "@sinonjs/commons@npm:2.0.0" dependencies: type-detect: 4.0.8 checksum: 5023ba17edf2b85ed58262313b8e9b59e23c6860681a9af0200f239fe939e2b79736d04a260e8270ddd57196851dde3ba754d7230be5c5234e777ae2ca8af137 languageName: node linkType: hard "@sinonjs/commons@npm:^3.0.0": version: 3.0.0 resolution: "@sinonjs/commons@npm:3.0.0" dependencies: type-detect: 4.0.8 checksum: b4b5b73d4df4560fb8c0c7b38c7ad4aeabedd362f3373859d804c988c725889cde33550e4bcc7cd316a30f5152a2d1d43db71b6d0c38f5feef71fd8d016763f8 languageName: node linkType: hard "@sinonjs/fake-timers@npm:^10.0.2": version: 10.1.0 resolution: "@sinonjs/fake-timers@npm:10.1.0" dependencies: "@sinonjs/commons": ^3.0.0 checksum: f8f7e23a136e32ba0128493207e4223f453e033471257a971acb43840927e738a0838004b1e4fa046279609762a2dd8d700606616e9264dc3891c4f8d45889a2 languageName: node linkType: hard "@sinonjs/fake-timers@npm:^8.1.0": version: 8.1.0 resolution: "@sinonjs/fake-timers@npm:8.1.0" dependencies: "@sinonjs/commons": ^1.7.0 checksum: 09b5a158ce013a6c37613258bad79ca4efeb99b1f59c41c73cca36cac00b258aefcf46eeea970fccf06b989414d86fe9f54c1102272c0c3bdd51a313cea80949 languageName: node linkType: hard "@sinonjs/samsam@npm:^6.0.2": version: 6.1.3 resolution: "@sinonjs/samsam@npm:6.1.3" dependencies: "@sinonjs/commons": ^1.6.0 lodash.get: ^4.4.2 type-detect: ^4.0.8 checksum: d533e8792af00879d78dd181822e8b00bb8a81671f2fbcf1c5257a59649b21d881ba7ddc42aaf09690d7325c8a6dcc7a1a341591a379742b54e4eb25b273417a languageName: node linkType: hard "@sinonjs/text-encoding@npm:^0.7.1": version: 0.7.2 resolution: "@sinonjs/text-encoding@npm:0.7.2" checksum: fe690002a32ba06906cf87e2e8fe84d1590294586f2a7fd180a65355b53660c155c3273d8011a5f2b77209b819aa7306678ae6e4aea0df014bd7ffd4bbbcf1ab languageName: node linkType: hard "@socket.io/component-emitter@npm:~3.1.0": version: 3.1.0 resolution: "@socket.io/component-emitter@npm:3.1.0" checksum: db069d95425b419de1514dffe945cc439795f6a8ef5b9465715acf5b8b50798e2c91b8719cbf5434b3fe7de179d6cdcd503c277b7871cb3dd03febb69bdd50fa languageName: node linkType: hard "@szmarczak/http-timer@npm:^4.0.5": version: 4.0.6 resolution: "@szmarczak/http-timer@npm:4.0.6" dependencies: defer-to-connect: ^2.0.0 checksum: c29df3bcec6fc3bdec2b17981d89d9c9fc9bd7d0c9bcfe92821dc533f4440bc890ccde79971838b4ceed1921d456973c4180d7175ee1d0023ad0562240a58d95 languageName: node linkType: hard "@tootallnate/once@npm:2": version: 2.0.0 resolution: "@tootallnate/once@npm:2.0.0" checksum: ad87447820dd3f24825d2d947ebc03072b20a42bfc96cbafec16bff8bbda6c1a81fcb0be56d5b21968560c5359a0af4038a68ba150c3e1694fe4c109a063bed8 languageName: node linkType: hard "@types/backbone@npm:1.4.14": version: 1.4.14 resolution: "@types/backbone@npm:1.4.14" dependencies: "@types/jquery": "*" "@types/underscore": "*" checksum: 4f44bfb71d75332b5de610be7687f4ae523ad4ef02da844a828403b534b6a94a6288b32cab64371d0ad526e35cfed511652ac53af22d0b9caaac3f4cfb4375dd languageName: node linkType: hard "@types/base64-js@npm:^1.2.5": version: 1.3.0 resolution: "@types/base64-js@npm:1.3.0" checksum: e9a15d49e066a324d06664ca5a42c5143e7ef4696310496507e1eb82c6d835dc39c4981aad1e044d329b43bd26efe5ead532c501c36a1227faef6da4096e1ba4 languageName: node linkType: hard "@types/cacheable-request@npm:^6.0.1": version: 6.0.3 resolution: "@types/cacheable-request@npm:6.0.3" dependencies: "@types/http-cache-semantics": "*" "@types/keyv": ^3.1.4 "@types/node": "*" "@types/responselike": ^1.0.0 checksum: d9b26403fe65ce6b0cb3720b7030104c352bcb37e4fac2a7089a25a97de59c355fa08940658751f2f347a8512aa9d18fdb66ab3ade835975b2f454f2d5befbd9 languageName: node linkType: hard "@types/chai-as-promised@npm:^7.1.0": version: 7.1.5 resolution: "@types/chai-as-promised@npm:7.1.5" dependencies: "@types/chai": "*" checksum: 7c1345c6e32513d52d8e562ec173c23161648d6b792046525f18803a9932d7b3ad3dca8f0181e3c529ec42b106099f174e34edeb184d61dc93e32c98b5132fd4 languageName: node linkType: hard "@types/chai@npm:*, @types/chai@npm:^4.1.7": version: 4.3.5 resolution: "@types/chai@npm:4.3.5" checksum: c8f26a88c6b5b53a3275c7f5ff8f107028e3cbb9ff26795fff5f3d9dea07106a54ce9e2dce5e40347f7c4cc35657900aaf0c83934a25a1ae12e61e0f5516e431 languageName: node linkType: hard "@types/codemirror@npm:^5.60.0": version: 5.60.7 resolution: "@types/codemirror@npm:5.60.7" dependencies: "@types/tern": "*" checksum: 0312ce032eb139b408588a7e7cf3b392a510a2cfa6f477f2dd20d8bca1990e5e6e5540e708f9a69d1a58e68ea7fd234b789c801aa7ef4f3b3dc32a1478b04a91 languageName: node linkType: hard "@types/cookie@npm:^0.4.1": version: 0.4.1 resolution: "@types/cookie@npm:0.4.1" checksum: 3275534ed69a76c68eb1a77d547d75f99fedc80befb75a3d1d03662fb08d697e6f8b1274e12af1a74c6896071b11510631ba891f64d30c78528d0ec45a9c1a18 languageName: node linkType: hard "@types/cors@npm:^2.8.12": version: 2.8.13 resolution: "@types/cors@npm:2.8.13" dependencies: "@types/node": "*" checksum: 7ef197ea19d2e5bf1313b8416baa6f3fd6dd887fd70191da1f804f557395357dafd8bc8bed0ac60686923406489262a7c8a525b55748f7b2b8afa686700de907 languageName: node linkType: hard "@types/d3-color@npm:^3.0.2": version: 3.1.0 resolution: "@types/d3-color@npm:3.1.0" checksum: b1856f17d6366559a68eaba0164f30727e9dc5eaf1b3a6c8844354da228860240423d19fa4de65bff9da26b4ead8843eab14b1566962665412e8fd82c3810554 languageName: node linkType: hard "@types/d3-format@npm:^3.0.1": version: 3.0.1 resolution: "@types/d3-format@npm:3.0.1" checksum: 6819fae7e7c3fce1e44cd56e9b6d8ea5508f708cb7a42793edf82ff914b120bf6cddc35208b1b33ec82615ab82b843c284709f9cea5c3fe1ea5f012106b3d32c languageName: node linkType: hard "@types/eslint-scope@npm:^3.7.3": version: 3.7.4 resolution: "@types/eslint-scope@npm:3.7.4" dependencies: "@types/eslint": "*" "@types/estree": "*" checksum: ea6a9363e92f301cd3888194469f9ec9d0021fe0a397a97a6dd689e7545c75de0bd2153dfb13d3ab532853a278b6572c6f678ce846980669e41029d205653460 languageName: node linkType: hard "@types/eslint@npm:*": version: 8.37.0 resolution: "@types/eslint@npm:8.37.0" dependencies: "@types/estree": "*" "@types/json-schema": "*" checksum: 06d3b3fba12004294591b5c7a52e3cec439472195da54e096076b1f2ddfbb8a445973b9681046dd530a6ac31eca502f635abc1e3ce37d03513089358e6f822ee languageName: node linkType: hard "@types/estree@npm:*, @types/estree@npm:^1.0.0": version: 1.0.1 resolution: "@types/estree@npm:1.0.1" checksum: e9aa175eacb797216fafce4d41e8202c7a75555bc55232dee0f9903d7171f8f19f0ae7d5191bb1a88cb90e65468be508c0df850a9fb81b4433b293a5a749899d languageName: node linkType: hard "@types/expect.js@npm:^0.3.29": version: 0.3.29 resolution: "@types/expect.js@npm:0.3.29" checksum: c04ea8ae20939a69e66b09fce3a03041a93db300f16a3ca660f84601a35eaee10ca64d190467d1cf09f13d20347890bfa46397a2ac676daca0ec77c4d4950dcd languageName: node linkType: hard "@types/glob@npm:^7.1.1": version: 7.2.0 resolution: "@types/glob@npm:7.2.0" dependencies: "@types/minimatch": "*" "@types/node": "*" checksum: 6ae717fedfdfdad25f3d5a568323926c64f52ef35897bcac8aca8e19bc50c0bd84630bbd063e5d52078b2137d8e7d3c26eabebd1a2f03ff350fff8a91e79fc19 languageName: node linkType: hard "@types/http-cache-semantics@npm:*": version: 4.0.1 resolution: "@types/http-cache-semantics@npm:4.0.1" checksum: 1048aacf627829f0d5f00184e16548205cd9f964bf0841c29b36bc504509230c40bc57c39778703a1c965a6f5b416ae2cbf4c1d4589c889d2838dd9dbfccf6e9 languageName: node linkType: hard "@types/jquery@npm:*, @types/jquery@npm:^3.5.16": version: 3.5.16 resolution: "@types/jquery@npm:3.5.16" dependencies: "@types/sizzle": "*" checksum: 13c995f15d1c2f1d322103dc1cb0a22b95eecc3e7546f00279b8731aea21d7ec04550af40e609ee48e755d4e11bf61c25b4aa9f53df3bcbec4b8fe8e81471732 languageName: node linkType: hard "@types/json-schema@npm:*, @types/json-schema@npm:^7.0.5, @types/json-schema@npm:^7.0.8, @types/json-schema@npm:^7.0.9": version: 7.0.11 resolution: "@types/json-schema@npm:7.0.11" checksum: 527bddfe62db9012fccd7627794bd4c71beb77601861055d87e3ee464f2217c85fca7a4b56ae677478367bbd248dbde13553312b7d4dbc702a2f2bbf60c4018d languageName: node linkType: hard "@types/keyv@npm:^3.1.4": version: 3.1.4 resolution: "@types/keyv@npm:3.1.4" dependencies: "@types/node": "*" checksum: e009a2bfb50e90ca9b7c6e8f648f8464067271fd99116f881073fa6fa76dc8d0133181dd65e6614d5fb1220d671d67b0124aef7d97dc02d7e342ab143a47779d languageName: node linkType: hard "@types/lodash@npm:^4.14.134, @types/lodash@npm:^4.14.175": version: 4.14.194 resolution: "@types/lodash@npm:4.14.194" checksum: 113f34831c461469d91feca2dde737f88487732898b4d25e9eb23b087bb193985f864d1e1e0f3b777edc5022e460443588b6000a3b2348c966f72d17eedc35ea languageName: node linkType: hard "@types/mathjax@npm:^0.0.37": version: 0.0.37 resolution: "@types/mathjax@npm:0.0.37" checksum: 8fe8f0dac3271a848dc0070c49ec8604c53abdc0a442308e357f215ed4d68102ed5e57e2f989cde447ebcf929efd2bc64b5a986b159c5cb50963546aa20d1a81 languageName: node linkType: hard "@types/minimatch@npm:*": version: 5.1.2 resolution: "@types/minimatch@npm:5.1.2" checksum: 0391a282860c7cb6fe262c12b99564732401bdaa5e395bee9ca323c312c1a0f45efbf34dce974682036e857db59a5c9b1da522f3d6055aeead7097264c8705a8 languageName: node linkType: hard "@types/minimatch@npm:^3.0.3": version: 3.0.5 resolution: "@types/minimatch@npm:3.0.5" checksum: c41d136f67231c3131cf1d4ca0b06687f4a322918a3a5adddc87ce90ed9dbd175a3610adee36b106ae68c0b92c637c35e02b58c8a56c424f71d30993ea220b92 languageName: node linkType: hard "@types/minimist@npm:^1.2.0": version: 1.2.2 resolution: "@types/minimist@npm:1.2.2" checksum: b8da83c66eb4aac0440e64674b19564d9d86c80ae273144db9681e5eeff66f238ade9515f5006ffbfa955ceff8b89ad2bd8ec577d7caee74ba101431fb07045d languageName: node linkType: hard "@types/mocha@npm:^9.0.0": version: 9.1.1 resolution: "@types/mocha@npm:9.1.1" checksum: 516077c0acd9806dc78317f88aaac0df5aaf0bdc2f63dfdadeabdf0b0137953b6ca65472e6ff7c30bc93ce4e0ae76eae70e8d46764b9a8eae4877a928b6ef49a languageName: node linkType: hard "@types/node@npm:*, @types/node@npm:>=10.0.0": version: 20.1.5 resolution: "@types/node@npm:20.1.5" checksum: 0d073ed7b9cc51e2354dcf3a8ccca84d08c7d513fa8fac9462cabc164435b30f2ad296e9f2f911e6ce72da837b704f1075379be84a93bb24f76d328a2d9e8561 languageName: node linkType: hard "@types/node@npm:^17.0.2": version: 17.0.45 resolution: "@types/node@npm:17.0.45" checksum: aa04366b9103b7d6cfd6b2ef64182e0eaa7d4462c3f817618486ea0422984c51fc69fd0d436eae6c9e696ddfdbec9ccaa27a917f7c2e8c75c5d57827fe3d95e8 languageName: node linkType: hard "@types/normalize-package-data@npm:^2.4.0": version: 2.4.1 resolution: "@types/normalize-package-data@npm:2.4.1" checksum: e87bccbf11f95035c89a132b52b79ce69a1e3652fe55962363063c9c0dae0fe2477ebc585e03a9652adc6f381d24ba5589cc5e51849df4ced3d3e004a7d40ed5 languageName: node linkType: hard "@types/parse-json@npm:^4.0.0": version: 4.0.0 resolution: "@types/parse-json@npm:4.0.0" checksum: fd6bce2b674b6efc3db4c7c3d336bd70c90838e8439de639b909ce22f3720d21344f52427f1d9e57b265fcb7f6c018699b99e5e0c208a1a4823014269a6bf35b languageName: node linkType: hard "@types/prop-types@npm:*": version: 15.7.5 resolution: "@types/prop-types@npm:15.7.5" checksum: 5b43b8b15415e1f298243165f1d44390403bb2bd42e662bca3b5b5633fdd39c938e91b7fce3a9483699db0f7a715d08cef220c121f723a634972fdf596aec980 languageName: node linkType: hard "@types/react@npm:^18.0.26": version: 18.2.6 resolution: "@types/react@npm:18.2.6" dependencies: "@types/prop-types": "*" "@types/scheduler": "*" csstype: ^3.0.2 checksum: dea9d232d8df7ac357367a69dcb557711ab3d5501807ffa77cebeee73d49ee94d095f298e36853c63ed47cce097eee4c7eae2aaa8c02fac3f0171ec1b523a819 languageName: node linkType: hard "@types/responselike@npm:^1.0.0": version: 1.0.0 resolution: "@types/responselike@npm:1.0.0" dependencies: "@types/node": "*" checksum: e99fc7cc6265407987b30deda54c1c24bb1478803faf6037557a774b2f034c5b097ffd65847daa87e82a61a250d919f35c3588654b0fdaa816906650f596d1b0 languageName: node linkType: hard "@types/sanitize-html@npm:^2.6.0": version: 2.9.0 resolution: "@types/sanitize-html@npm:2.9.0" dependencies: htmlparser2: ^8.0.0 checksum: b60f42b740bbfb1b1434ce8b43925a38ecc608b60aa654fd009d2e22e33f324b61d370768c55bd2fd98e03de08518ffa8911d61606c483526fb931bb8b59d1b0 languageName: node linkType: hard "@types/scheduler@npm:*": version: 0.16.3 resolution: "@types/scheduler@npm:0.16.3" checksum: 2b0aec39c24268e3ce938c5db2f2e77f5c3dd280e05c262d9c2fe7d890929e4632a6b8e94334017b66b45e4f92a5aa42ba3356640c2a1175fa37bef2f5200767 languageName: node linkType: hard "@types/semver@npm:^7.3.12, @types/semver@npm:^7.3.6": version: 7.5.0 resolution: "@types/semver@npm:7.5.0" checksum: 0a64b9b9c7424d9a467658b18dd70d1d781c2d6f033096a6e05762d20ebbad23c1b69b0083b0484722aabf35640b78ccc3de26368bcae1129c87e9df028a22e2 languageName: node linkType: hard "@types/sinon-chai@npm:^3.2.2": version: 3.2.9 resolution: "@types/sinon-chai@npm:3.2.9" dependencies: "@types/chai": "*" "@types/sinon": "*" checksum: 3238ee2e3f64d0fc3e3d08a0d69f1edf062500e58814cbf9898ab6b28a8acfa01734069a431e7cff2b0890d8fa2782103b2c011b247520885a50f8928e395681 languageName: node linkType: hard "@types/sinon@npm:*, @types/sinon@npm:^10.0.2": version: 10.0.15 resolution: "@types/sinon@npm:10.0.15" dependencies: "@types/sinonjs__fake-timers": "*" checksum: cec6d7d9d5582ca3ac851b029d5d90451bfe6d376164253792a6eb6ddcd609a0411a7fac9ed92e1879e7d3ec091d2ea2e8dbb4f6140a1065439b81dc20cafa7c languageName: node linkType: hard "@types/sinonjs__fake-timers@npm:*": version: 8.1.2 resolution: "@types/sinonjs__fake-timers@npm:8.1.2" checksum: bbc73a5ab6c0ec974929392f3d6e1e8db4ebad97ec506d785301e1c3d8a4f98a35b1aa95b97035daef02886fd8efd7788a2fa3ced2ec7105988bfd8dce61eedd languageName: node linkType: hard "@types/sizzle@npm:*": version: 2.3.3 resolution: "@types/sizzle@npm:2.3.3" checksum: 586a9fb1f6ff3e325e0f2cc1596a460615f0bc8a28f6e276ac9b509401039dd242fa8b34496d3a30c52f5b495873922d09a9e76c50c2ab2bcc70ba3fb9c4e160 languageName: node linkType: hard "@types/source-list-map@npm:*": version: 0.1.2 resolution: "@types/source-list-map@npm:0.1.2" checksum: fda8f37537aca9d3ed860d559289ab1dddb6897e642e6f53e909bbd18a7ac3129a8faa2a7d093847c91346cf09c86ef36e350c715406fba1f2271759b449adf6 languageName: node linkType: hard "@types/tern@npm:*": version: 0.23.4 resolution: "@types/tern@npm:0.23.4" dependencies: "@types/estree": "*" checksum: d8fd304f147ed08f1d075f09cb8d440b7f785f69c9ec5c30eadf98132fe3f58f3b1bbbd11283858bb261afac5a2039c1c255f290b0f6e4a47cd6a746f30a6aa8 languageName: node linkType: hard "@types/underscore@npm:*": version: 1.11.4 resolution: "@types/underscore@npm:1.11.4" checksum: db9f8486bc851b732259e51f42d62aad1ae2158be5724612dc125ece5f5d61c51447f9dea28284c2a0f79cb95e788d01cb5ce97709880019213e69fab0dd1696 languageName: node linkType: hard "@types/webpack-sources@npm:^0.1.5": version: 0.1.9 resolution: "@types/webpack-sources@npm:0.1.9" dependencies: "@types/node": "*" "@types/source-list-map": "*" source-map: ^0.6.1 checksum: bc09c584c7047e8aed29801a3981787dee3898e9e7a99891a362df114fcac3879eea5a00932314866a01b25220391839be09fe1487b16d4970ff4a7afd5b9725 languageName: node linkType: hard "@typescript-eslint/eslint-plugin@npm:^5.48.2, @typescript-eslint/eslint-plugin@npm:^5.8.0": version: 5.59.6 resolution: "@typescript-eslint/eslint-plugin@npm:5.59.6" dependencies: "@eslint-community/regexpp": ^4.4.0 "@typescript-eslint/scope-manager": 5.59.6 "@typescript-eslint/type-utils": 5.59.6 "@typescript-eslint/utils": 5.59.6 debug: ^4.3.4 grapheme-splitter: ^1.0.4 ignore: ^5.2.0 natural-compare-lite: ^1.4.0 semver: ^7.3.7 tsutils: ^3.21.0 peerDependencies: "@typescript-eslint/parser": ^5.0.0 eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 peerDependenciesMeta: typescript: optional: true checksum: fc495b5eadc70603f0d677921a70f151ac94453ebd76b77abbf7ed213c09daf05a3e2b2e2b16139b30dc6574d068d988e4e53c017759f3d3307fa394cfd4ae39 languageName: node linkType: hard "@typescript-eslint/parser@npm:^5.48.2, @typescript-eslint/parser@npm:^5.8.0": version: 5.59.6 resolution: "@typescript-eslint/parser@npm:5.59.6" dependencies: "@typescript-eslint/scope-manager": 5.59.6 "@typescript-eslint/types": 5.59.6 "@typescript-eslint/typescript-estree": 5.59.6 debug: ^4.3.4 peerDependencies: eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 peerDependenciesMeta: typescript: optional: true checksum: 1f6e259f501e3d13f9632bd71da2cf3d11150f1276079522e8d5c392a07c3aea867c855481981fca3bf32beb6bef046ef64cdfceba8ea4150f27099e44d9a92c languageName: node linkType: hard "@typescript-eslint/scope-manager@npm:5.59.6": version: 5.59.6 resolution: "@typescript-eslint/scope-manager@npm:5.59.6" dependencies: "@typescript-eslint/types": 5.59.6 "@typescript-eslint/visitor-keys": 5.59.6 checksum: 65cce7b3fc320e264ef966da9a26bb7cba014ec5a0c9c5518cb08a624d67ac6eb67dd8e2df49b33eeaaaacaf42c73f291d56f93a9d1ec82c58bd1e7e872e530b languageName: node linkType: hard "@typescript-eslint/type-utils@npm:5.59.6": version: 5.59.6 resolution: "@typescript-eslint/type-utils@npm:5.59.6" dependencies: "@typescript-eslint/typescript-estree": 5.59.6 "@typescript-eslint/utils": 5.59.6 debug: ^4.3.4 tsutils: ^3.21.0 peerDependencies: eslint: "*" peerDependenciesMeta: typescript: optional: true checksum: f8e09dc16f413090ec464d48bd86e1b44a569e5a6ed78370f3e8132e80a464dfcdc1525f4f0706b79e397841b1865016cb38353475264beec49851d78a7fdd36 languageName: node linkType: hard "@typescript-eslint/types@npm:5.59.6": version: 5.59.6 resolution: "@typescript-eslint/types@npm:5.59.6" checksum: e898ca629d95b69f5dbfb7c9a3d28f943e5a372d37bf7efaefb41341d2d7147372cd4956b35b637e9b3a1b8555d64a5b35776650b815c4227b114513247ec2b5 languageName: node linkType: hard "@typescript-eslint/typescript-estree@npm:5.59.6": version: 5.59.6 resolution: "@typescript-eslint/typescript-estree@npm:5.59.6" dependencies: "@typescript-eslint/types": 5.59.6 "@typescript-eslint/visitor-keys": 5.59.6 debug: ^4.3.4 globby: ^11.1.0 is-glob: ^4.0.3 semver: ^7.3.7 tsutils: ^3.21.0 peerDependenciesMeta: typescript: optional: true checksum: 65b7879e8cd4ccb987c1e1fa75cd84250cb46799ba0de6cdcaec70f6700b45ae4efcebb24163ca7946152e1b12595ee58e35bfb31ea6d35b3f39deaf973d4f1a languageName: node linkType: hard "@typescript-eslint/utils@npm:5.59.6": version: 5.59.6 resolution: "@typescript-eslint/utils@npm:5.59.6" dependencies: "@eslint-community/eslint-utils": ^4.2.0 "@types/json-schema": ^7.0.9 "@types/semver": ^7.3.12 "@typescript-eslint/scope-manager": 5.59.6 "@typescript-eslint/types": 5.59.6 "@typescript-eslint/typescript-estree": 5.59.6 eslint-scope: ^5.1.1 semver: ^7.3.7 peerDependencies: eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 checksum: 40ffe1d2f1fbf6c30aa05f4a68785fb1e77aa09772ea45b001daf4068e504830cf60a441a819b2c6ffe4a19216aba404869300b2ce6bc2a67d093f74ded504a7 languageName: node linkType: hard "@typescript-eslint/visitor-keys@npm:5.59.6": version: 5.59.6 resolution: "@typescript-eslint/visitor-keys@npm:5.59.6" dependencies: "@typescript-eslint/types": 5.59.6 eslint-visitor-keys: ^3.3.0 checksum: 8f216411344f5ed618ab838fa3fc4b04f3041f33e08d9b160df4db988f496c71f934c4b0362f686ce63ecf7f5d926c67190d5116c91945c1957544728449ec6b languageName: node linkType: hard "@ungap/promise-all-settled@npm:1.1.2": version: 1.1.2 resolution: "@ungap/promise-all-settled@npm:1.1.2" checksum: 08d37fdfa23a6fe8139f1305313562ebad973f3fac01bcce2773b2bda5bcb0146dfdcf3cb6a722cf0a5f2ca0bc56a827eac8f1e7b3beddc548f654addf1fc34c languageName: node linkType: hard "@verdaccio/commons-api@npm:10.2.0": version: 10.2.0 resolution: "@verdaccio/commons-api@npm:10.2.0" dependencies: http-errors: 2.0.0 http-status-codes: 2.2.0 checksum: b3c946f7e15140b4e15274fa9988a8759681e9ad4316ec882096551588f554c093fb1ffbbb88ed05db162e1b0e40e9859759e1339f0ae4a074706afb7e732be2 languageName: node linkType: hard "@verdaccio/config@npm:6.0.0-6-next.68": version: 6.0.0-6-next.68 resolution: "@verdaccio/config@npm:6.0.0-6-next.68" dependencies: "@verdaccio/core": 6.0.0-6-next.68 "@verdaccio/utils": 6.0.0-6-next.36 debug: 4.3.4 js-yaml: 4.1.0 lodash: 4.17.21 minimatch: 3.1.2 yup: 0.32.11 checksum: aa527a6f4a65ac9380cf2053cd9c5b418a12f793175d47c223121f80ebdf2c081675d88f737f3dfd48bd55f5777e964028453bd96e691340b6aa98d809ee0ca7 languageName: node linkType: hard "@verdaccio/core@npm:6.0.0-6-next.68": version: 6.0.0-6-next.68 resolution: "@verdaccio/core@npm:6.0.0-6-next.68" dependencies: ajv: 8.11.2 core-js: 3.28.0 http-errors: 1.8.1 http-status-codes: 2.2.0 process-warning: 1.0.0 semver: 7.3.8 checksum: cbc581d047e25849a8a3509b96e1720a87543c89673d344b89694eb926bacd9eadfe2decd4752fe7ecae1ce051434c5fdf254685b5e1d6b33535820e3f4bd8a7 languageName: node linkType: hard "@verdaccio/file-locking@npm:10.3.1": version: 10.3.1 resolution: "@verdaccio/file-locking@npm:10.3.1" dependencies: lockfile: 1.0.4 checksum: 114948ed4ce9c0f98008eaf32355f902c4dfc91c0ce2e539a3d0c9397781e9ef8d1a2f6ce900d39dac0e054a9d7e616edbc472eedf758096fcd3cc8294d6add5 languageName: node linkType: hard "@verdaccio/file-locking@npm:11.0.0-6-next.7": version: 11.0.0-6-next.7 resolution: "@verdaccio/file-locking@npm:11.0.0-6-next.7" dependencies: lockfile: 1.0.4 checksum: 86cf13ab75c3e11958201433aa2b98bba70f90cb855e5d84063affd491ce31f12093a8874a09a45f1ed8ee320457d55e96161d8957e11dd8e8ec7dd4c1b06443 languageName: node linkType: hard "@verdaccio/local-storage@npm:10.3.3": version: 10.3.3 resolution: "@verdaccio/local-storage@npm:10.3.3" dependencies: "@verdaccio/commons-api": 10.2.0 "@verdaccio/file-locking": 10.3.1 "@verdaccio/streams": 10.2.1 async: 3.2.4 debug: 4.3.4 lodash: 4.17.21 lowdb: 1.0.0 mkdirp: 1.0.4 checksum: 70f47ea94fd0d6f3a5ac82fa0a8b28a41fb69f076f993bbf9ff775cca11966a6e92b4b57741348bdbfc3f241d851c052336d1673ca7e7b29e1999b88afe4fde2 languageName: node linkType: hard "@verdaccio/logger-7@npm:6.0.0-6-next.13": version: 6.0.0-6-next.13 resolution: "@verdaccio/logger-7@npm:6.0.0-6-next.13" dependencies: "@verdaccio/logger-commons": 6.0.0-6-next.36 pino: 7.11.0 checksum: 718cb0b28956038dfeca2ac13af942cf7fcc6a5da88eb987858037363fb7b41a790d20fea366189d52fc6d75e355fab7aa5d5e4a7c88fb85cfbf063e940f3c18 languageName: node linkType: hard "@verdaccio/logger-commons@npm:6.0.0-6-next.36": version: 6.0.0-6-next.36 resolution: "@verdaccio/logger-commons@npm:6.0.0-6-next.36" dependencies: "@verdaccio/core": 6.0.0-6-next.68 "@verdaccio/logger-prettify": 6.0.0-6-next.9 colorette: 2.0.19 debug: 4.3.4 checksum: 85947d959820f6b2a4612d2e361cd9deeb996badf0362e0ac59525a2aa9146ba0f976fd83a277122af77c253c7e9929496a323f791e41f77d684ff64deb3e9ab languageName: node linkType: hard "@verdaccio/logger-prettify@npm:6.0.0-6-next.9": version: 6.0.0-6-next.9 resolution: "@verdaccio/logger-prettify@npm:6.0.0-6-next.9" dependencies: colorette: 2.0.19 dayjs: 1.11.7 lodash: 4.17.21 pino-abstract-transport: 1.0.0 sonic-boom: 3.2.1 checksum: 8350ca9b12b2077665c81b0cdea4d7403c39622b44cda70ed59f16e74ea7c44d0edf282da55f6590707d09558a66244dc4ea99f44206cc607d5ebe8393170fdc languageName: node linkType: hard "@verdaccio/middleware@npm:6.0.0-6-next.47": version: 6.0.0-6-next.47 resolution: "@verdaccio/middleware@npm:6.0.0-6-next.47" dependencies: "@verdaccio/config": 6.0.0-6-next.68 "@verdaccio/core": 6.0.0-6-next.68 "@verdaccio/url": 11.0.0-6-next.34 "@verdaccio/utils": 6.0.0-6-next.36 debug: 4.3.4 express: 4.18.2 express-rate-limit: 5.5.1 lodash: 4.17.21 lru-cache: 7.16.1 mime: 2.6.0 checksum: a14a997ef3097adb8ec1e2fa6490292c9b77db1425de55ed59963b1866ae22b02c684c440675a6d9da9727b35f17a106d014e8457b788481cebd174968ef9d00 languageName: node linkType: hard "@verdaccio/signature@npm:6.0.0-6-next.2": version: 6.0.0-6-next.2 resolution: "@verdaccio/signature@npm:6.0.0-6-next.2" dependencies: debug: 4.3.4 jsonwebtoken: 9.0.0 lodash: 4.17.21 checksum: 6e5331ee231be43cf521596f9ee6d1c39d73f249822e5cbe0e83ac91b3a4849adf53c6e9b4566a674b4134ecd2706e6734a1344cc8fa8dbe82232642ee07f631 languageName: node linkType: hard "@verdaccio/streams@npm:10.2.1": version: 10.2.1 resolution: "@verdaccio/streams@npm:10.2.1" checksum: eadc671c2b40ea06da8c56bd2e5b394edbfdc2895f4e622491d4edd4312468d8172534ddaf364e107d118c7c7585f2f9114336ee93a16f0ec747c4ea15c6737b languageName: node linkType: hard "@verdaccio/tarball@npm:11.0.0-6-next.37": version: 11.0.0-6-next.37 resolution: "@verdaccio/tarball@npm:11.0.0-6-next.37" dependencies: "@verdaccio/core": 6.0.0-6-next.68 "@verdaccio/url": 11.0.0-6-next.34 "@verdaccio/utils": 6.0.0-6-next.36 debug: 4.3.4 lodash: 4.17.21 checksum: c400432a17fd3c9c89f702a3ac5ef85a599615ec3bf8a6ccfb59aeade3e51dbc4591892b717261e7fa9e6aaa4e8a2bbb0c320675e2534004ca71378bcf8845c2 languageName: node linkType: hard "@verdaccio/ui-theme@npm:6.0.0-6-next.68": version: 6.0.0-6-next.68 resolution: "@verdaccio/ui-theme@npm:6.0.0-6-next.68" checksum: 1f8f361cf74344bc98fcb23d2486fefd2485114de1f06c29374c11b71351d5ff92ff0a97dd538c73c1fdc465c2733cc0ca04df82fd4fb6568f156cdfa6220593 languageName: node linkType: hard "@verdaccio/url@npm:11.0.0-6-next.34": version: 11.0.0-6-next.34 resolution: "@verdaccio/url@npm:11.0.0-6-next.34" dependencies: "@verdaccio/core": 6.0.0-6-next.68 debug: 4.3.4 lodash: 4.17.21 validator: 13.9.0 checksum: 63adf681d874527ee6bd2648ac40aebca4d61e87cb6e046d9f0770a57d431abd6615a914c579e39f16a7f9e8cf459e8620a13d9a2ce81ce74e499498ed3d35e0 languageName: node linkType: hard "@verdaccio/utils@npm:6.0.0-6-next.36": version: 6.0.0-6-next.36 resolution: "@verdaccio/utils@npm:6.0.0-6-next.36" dependencies: "@verdaccio/core": 6.0.0-6-next.68 lodash: 4.17.21 minimatch: 3.1.2 semver: 7.3.8 checksum: d6dbd7b47669a1ada57dda955c2a5c51eba127a9a35ab2f1823c9e4d5098f32ed16eb1c9f52e665e13cb0cbdfab7816e683944e780613c7dd62a5451f4867293 languageName: node linkType: hard "@webassemblyjs/ast@npm:1.11.6, @webassemblyjs/ast@npm:^1.11.5": version: 1.11.6 resolution: "@webassemblyjs/ast@npm:1.11.6" dependencies: "@webassemblyjs/helper-numbers": 1.11.6 "@webassemblyjs/helper-wasm-bytecode": 1.11.6 checksum: 38ef1b526ca47c210f30975b06df2faf1a8170b1636ce239fc5738fc231ce28389dd61ecedd1bacfc03cbe95b16d1af848c805652080cb60982836eb4ed2c6cf languageName: node linkType: hard "@webassemblyjs/floating-point-hex-parser@npm:1.11.6": version: 1.11.6 resolution: "@webassemblyjs/floating-point-hex-parser@npm:1.11.6" checksum: 29b08758841fd8b299c7152eda36b9eb4921e9c584eb4594437b5cd90ed6b920523606eae7316175f89c20628da14326801090167cc7fbffc77af448ac84b7e2 languageName: node linkType: hard "@webassemblyjs/helper-api-error@npm:1.11.6": version: 1.11.6 resolution: "@webassemblyjs/helper-api-error@npm:1.11.6" checksum: e8563df85161096343008f9161adb138a6e8f3c2cc338d6a36011aa55eabb32f2fd138ffe63bc278d009ada001cc41d263dadd1c0be01be6c2ed99076103689f languageName: node linkType: hard "@webassemblyjs/helper-buffer@npm:1.11.6": version: 1.11.6 resolution: "@webassemblyjs/helper-buffer@npm:1.11.6" checksum: b14d0573bf680d22b2522e8a341ec451fddd645d1f9c6bd9012ccb7e587a2973b86ab7b89fe91e1c79939ba96095f503af04369a3b356c8023c13a5893221644 languageName: node linkType: hard "@webassemblyjs/helper-numbers@npm:1.11.6": version: 1.11.6 resolution: "@webassemblyjs/helper-numbers@npm:1.11.6" dependencies: "@webassemblyjs/floating-point-hex-parser": 1.11.6 "@webassemblyjs/helper-api-error": 1.11.6 "@xtuc/long": 4.2.2 checksum: f4b562fa219f84368528339e0f8d273ad44e047a07641ffcaaec6f93e5b76fd86490a009aa91a294584e1436d74b0a01fa9fde45e333a4c657b58168b04da424 languageName: node linkType: hard "@webassemblyjs/helper-wasm-bytecode@npm:1.11.6": version: 1.11.6 resolution: "@webassemblyjs/helper-wasm-bytecode@npm:1.11.6" checksum: 3535ef4f1fba38de3475e383b3980f4bbf3de72bbb631c2b6584c7df45be4eccd62c6ff48b5edd3f1bcff275cfd605a37679ec199fc91fd0a7705d7f1e3972dc languageName: node linkType: hard "@webassemblyjs/helper-wasm-section@npm:1.11.6": version: 1.11.6 resolution: "@webassemblyjs/helper-wasm-section@npm:1.11.6" dependencies: "@webassemblyjs/ast": 1.11.6 "@webassemblyjs/helper-buffer": 1.11.6 "@webassemblyjs/helper-wasm-bytecode": 1.11.6 "@webassemblyjs/wasm-gen": 1.11.6 checksum: b2cf751bf4552b5b9999d27bbb7692d0aca75260140195cb58ea6374d7b9c2dc69b61e10b211a0e773f66209c3ddd612137ed66097e3684d7816f854997682e9 languageName: node linkType: hard "@webassemblyjs/ieee754@npm:1.11.6": version: 1.11.6 resolution: "@webassemblyjs/ieee754@npm:1.11.6" dependencies: "@xtuc/ieee754": ^1.2.0 checksum: 13574b8e41f6ca39b700e292d7edf102577db5650fe8add7066a320aa4b7a7c09a5056feccac7a74eb68c10dea9546d4461412af351f13f6b24b5f32379b49de languageName: node linkType: hard "@webassemblyjs/leb128@npm:1.11.6": version: 1.11.6 resolution: "@webassemblyjs/leb128@npm:1.11.6" dependencies: "@xtuc/long": 4.2.2 checksum: 7ea942dc9777d4b18a5ebfa3a937b30ae9e1d2ce1fee637583ed7f376334dd1d4274f813d2e250056cca803e0952def4b954913f1a3c9068bcd4ab4ee5143bf0 languageName: node linkType: hard "@webassemblyjs/utf8@npm:1.11.6": version: 1.11.6 resolution: "@webassemblyjs/utf8@npm:1.11.6" checksum: 807fe5b5ce10c390cfdd93e0fb92abda8aebabb5199980681e7c3743ee3306a75729bcd1e56a3903980e96c885ee53ef901fcbaac8efdfa480f9c0dae1d08713 languageName: node linkType: hard "@webassemblyjs/wasm-edit@npm:^1.11.5": version: 1.11.6 resolution: "@webassemblyjs/wasm-edit@npm:1.11.6" dependencies: "@webassemblyjs/ast": 1.11.6 "@webassemblyjs/helper-buffer": 1.11.6 "@webassemblyjs/helper-wasm-bytecode": 1.11.6 "@webassemblyjs/helper-wasm-section": 1.11.6 "@webassemblyjs/wasm-gen": 1.11.6 "@webassemblyjs/wasm-opt": 1.11.6 "@webassemblyjs/wasm-parser": 1.11.6 "@webassemblyjs/wast-printer": 1.11.6 checksum: 29ce75870496d6fad864d815ebb072395a8a3a04dc9c3f4e1ffdc63fc5fa58b1f34304a1117296d8240054cfdbc38aca88e71fb51483cf29ffab0a61ef27b481 languageName: node linkType: hard "@webassemblyjs/wasm-gen@npm:1.11.6": version: 1.11.6 resolution: "@webassemblyjs/wasm-gen@npm:1.11.6" dependencies: "@webassemblyjs/ast": 1.11.6 "@webassemblyjs/helper-wasm-bytecode": 1.11.6 "@webassemblyjs/ieee754": 1.11.6 "@webassemblyjs/leb128": 1.11.6 "@webassemblyjs/utf8": 1.11.6 checksum: a645a2eecbea24833c3260a249704a7f554ef4a94c6000984728e94bb2bc9140a68dfd6fd21d5e0bbb09f6dfc98e083a45760a83ae0417b41a0196ff6d45a23a languageName: node linkType: hard "@webassemblyjs/wasm-opt@npm:1.11.6": version: 1.11.6 resolution: "@webassemblyjs/wasm-opt@npm:1.11.6" dependencies: "@webassemblyjs/ast": 1.11.6 "@webassemblyjs/helper-buffer": 1.11.6 "@webassemblyjs/wasm-gen": 1.11.6 "@webassemblyjs/wasm-parser": 1.11.6 checksum: b4557f195487f8e97336ddf79f7bef40d788239169aac707f6eaa2fa5fe243557c2d74e550a8e57f2788e70c7ae4e7d32f7be16101afe183d597b747a3bdd528 languageName: node linkType: hard "@webassemblyjs/wasm-parser@npm:1.11.6, @webassemblyjs/wasm-parser@npm:^1.11.5": version: 1.11.6 resolution: "@webassemblyjs/wasm-parser@npm:1.11.6" dependencies: "@webassemblyjs/ast": 1.11.6 "@webassemblyjs/helper-api-error": 1.11.6 "@webassemblyjs/helper-wasm-bytecode": 1.11.6 "@webassemblyjs/ieee754": 1.11.6 "@webassemblyjs/leb128": 1.11.6 "@webassemblyjs/utf8": 1.11.6 checksum: 8200a8d77c15621724a23fdabe58d5571415cda98a7058f542e670ea965dd75499f5e34a48675184947c66f3df23adf55df060312e6d72d57908e3f049620d8a languageName: node linkType: hard "@webassemblyjs/wast-printer@npm:1.11.6": version: 1.11.6 resolution: "@webassemblyjs/wast-printer@npm:1.11.6" dependencies: "@webassemblyjs/ast": 1.11.6 "@xtuc/long": 4.2.2 checksum: d2fa6a4c427325ec81463e9c809aa6572af6d47f619f3091bf4c4a6fc34f1da3df7caddaac50b8e7a457f8784c62cd58c6311b6cb69b0162ccd8d4c072f79cf8 languageName: node linkType: hard "@webpack-cli/configtest@npm:^1.2.0": version: 1.2.0 resolution: "@webpack-cli/configtest@npm:1.2.0" peerDependencies: webpack: 4.x.x || 5.x.x webpack-cli: 4.x.x checksum: a2726cd9ec601d2b57e5fc15e0ebf5200a8892065e735911269ac2038e62be4bfc176ea1f88c2c46ff09b4d05d4c10ae045e87b3679372483d47da625a327e28 languageName: node linkType: hard "@webpack-cli/configtest@npm:^2.1.0": version: 2.1.0 resolution: "@webpack-cli/configtest@npm:2.1.0" peerDependencies: webpack: 5.x.x webpack-cli: 5.x.x checksum: b875fccd8be9a936924e24986725823347703e3eb72ea884e74669ca20f007704e859855a6a05940d5d3805ce2fc08b183a0f1658d5395b5454b3f5f88293081 languageName: node linkType: hard "@webpack-cli/info@npm:^1.5.0": version: 1.5.0 resolution: "@webpack-cli/info@npm:1.5.0" dependencies: envinfo: ^7.7.3 peerDependencies: webpack-cli: 4.x.x checksum: 7f56fe037cd7d1fd5c7428588519fbf04a0cad33925ee4202ffbafd00f8ec1f2f67d991245e687d50e0f3e23f7b7814273d56cb9f7da4b05eed47c8d815c6296 languageName: node linkType: hard "@webpack-cli/info@npm:^2.0.1": version: 2.0.1 resolution: "@webpack-cli/info@npm:2.0.1" peerDependencies: webpack: 5.x.x webpack-cli: 5.x.x checksum: b8fba49fee10d297c2affb0b064c9a81e9038d75517c6728fb85f9fb254cae634e5d33e696dac5171e6944ae329d85fddac72f781c7d833f7e9dfe43151ce60d languageName: node linkType: hard "@webpack-cli/serve@npm:^1.7.0": version: 1.7.0 resolution: "@webpack-cli/serve@npm:1.7.0" peerDependencies: webpack-cli: 4.x.x peerDependenciesMeta: webpack-dev-server: optional: true checksum: d475e8effa23eb7ff9a48b14d4de425989fd82f906ce71c210921cc3852327c22873be00c35e181a25a6bd03d424ae2b83e7f3b3f410ac7ee31b128ab4ac7713 languageName: node linkType: hard "@webpack-cli/serve@npm:^2.0.4": version: 2.0.4 resolution: "@webpack-cli/serve@npm:2.0.4" peerDependencies: webpack: 5.x.x webpack-cli: 5.x.x peerDependenciesMeta: webpack-dev-server: optional: true checksum: 561ea2e6eb551415f0b1675393a8480e1201293fe37eae334cbb1fdc466986668cca76ca1ca327ada9b498eae27cbecef0793e3bb5677288f1a5216cad414efe languageName: node linkType: hard "@xtuc/ieee754@npm:^1.2.0": version: 1.2.0 resolution: "@xtuc/ieee754@npm:1.2.0" checksum: ac56d4ca6e17790f1b1677f978c0c6808b1900a5b138885d3da21732f62e30e8f0d9120fcf8f6edfff5100ca902b46f8dd7c1e3f903728634523981e80e2885a languageName: node linkType: hard "@xtuc/long@npm:4.2.2": version: 4.2.2 resolution: "@xtuc/long@npm:4.2.2" checksum: 8ed0d477ce3bc9c6fe2bf6a6a2cc316bb9c4127c5a7827bae947fa8ec34c7092395c5a283cc300c05b5fa01cbbfa1f938f410a7bf75db7c7846fea41949989ec languageName: node linkType: hard "@yarnpkg/lockfile@npm:^1.1.0": version: 1.1.0 resolution: "@yarnpkg/lockfile@npm:1.1.0" checksum: 05b881b4866a3546861fee756e6d3812776ea47fa6eb7098f983d6d0eefa02e12b66c3fff931574120f196286a7ad4879ce02743c8bb2be36c6a576c7852083a languageName: node linkType: hard "@yarnpkg/parsers@npm:^3.0.0-rc.18": version: 3.0.0-rc.43 resolution: "@yarnpkg/parsers@npm:3.0.0-rc.43" dependencies: js-yaml: ^3.10.0 tslib: ^2.4.0 checksum: 8dee7e9cdaa909d7dc37e8721047d7aa1675aa2e63c64cb411a4b64a13e01c30b5734b1331f8ae33f67787ba49365b6155a144d9e1e2be2ebf62bf239ba25aae languageName: node linkType: hard "@zkochan/js-yaml@npm:0.0.6": version: 0.0.6 resolution: "@zkochan/js-yaml@npm:0.0.6" dependencies: argparse: ^2.0.1 bin: js-yaml: bin/js-yaml.js checksum: 51b81597a1d1d79c778b8fae48317eaad78d75223d0b7477ad2b35f47cf63b19504da430bb7a03b326e668b282874242cc123e323e57293be038684cb5e755f8 languageName: node linkType: hard "JSONStream@npm:1.3.5, JSONStream@npm:^1.0.4": version: 1.3.5 resolution: "JSONStream@npm:1.3.5" dependencies: jsonparse: ^1.2.0 through: ">=2.2.7 <3" bin: JSONStream: ./bin.js checksum: 2605fa124260c61bad38bb65eba30d2f72216a78e94d0ab19b11b4e0327d572b8d530c0c9cc3b0764f727ad26d39e00bf7ebad57781ca6368394d73169c59e46 languageName: node linkType: hard "abab@npm:^2.0.3, abab@npm:^2.0.6": version: 2.0.6 resolution: "abab@npm:2.0.6" checksum: 6ffc1af4ff315066c62600123990d87551ceb0aafa01e6539da77b0f5987ac7019466780bf480f1787576d4385e3690c81ccc37cfda12819bf510b8ab47e5a3e languageName: node linkType: hard "abbrev@npm:1, abbrev@npm:^1.0.0": version: 1.1.1 resolution: "abbrev@npm:1.1.1" checksum: a4a97ec07d7ea112c517036882b2ac22f3109b7b19077dc656316d07d308438aac28e4d9746dc4d84bf6b1e75b4a7b0a5f3cb30592419f128ca9a8cee3bcfa17 languageName: node linkType: hard "abort-controller@npm:^3.0.0": version: 3.0.0 resolution: "abort-controller@npm:3.0.0" dependencies: event-target-shim: ^5.0.0 checksum: 170bdba9b47b7e65906a28c8ce4f38a7a369d78e2271706f020849c1bfe0ee2067d4261df8bbb66eb84f79208fd5b710df759d64191db58cfba7ce8ef9c54b75 languageName: node linkType: hard "accepts@npm:~1.3.4, accepts@npm:~1.3.5, accepts@npm:~1.3.8": version: 1.3.8 resolution: "accepts@npm:1.3.8" dependencies: mime-types: ~2.1.34 negotiator: 0.6.3 checksum: 50c43d32e7b50285ebe84b613ee4a3aa426715a7d131b65b786e2ead0fd76b6b60091b9916d3478a75f11f162628a2139991b6c03ab3f1d9ab7c86075dc8eab4 languageName: node linkType: hard "acorn-import-assertions@npm:^1.7.6, acorn-import-assertions@npm:^1.9.0": version: 1.9.0 resolution: "acorn-import-assertions@npm:1.9.0" peerDependencies: acorn: ^8 checksum: 944fb2659d0845c467066bdcda2e20c05abe3aaf11972116df457ce2627628a81764d800dd55031ba19de513ee0d43bb771bc679cc0eda66dc8b4fade143bc0c languageName: node linkType: hard "acorn-jsx@npm:^5.3.2": version: 5.3.2 resolution: "acorn-jsx@npm:5.3.2" peerDependencies: acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 checksum: c3d3b2a89c9a056b205b69530a37b972b404ee46ec8e5b341666f9513d3163e2a4f214a71f4dfc7370f5a9c07472d2fd1c11c91c3f03d093e37637d95da98950 languageName: node linkType: hard "acorn@npm:^8.5.0, acorn@npm:^8.7.1, acorn@npm:^8.8.0": version: 8.8.2 resolution: "acorn@npm:8.8.2" bin: acorn: bin/acorn checksum: f790b99a1bf63ef160c967e23c46feea7787e531292bb827126334612c234ed489a0dc2c7ba33156416f0ffa8d25bf2b0fdb7f35c2ba60eb3e960572bece4001 languageName: node linkType: hard "add-stream@npm:^1.0.0": version: 1.0.0 resolution: "add-stream@npm:1.0.0" checksum: 3e9e8b0b8f0170406d7c3a9a39bfbdf419ccccb0fd2a396338c0fda0a339af73bf738ad414fc520741de74517acf0dd92b4a36fd3298a47fd5371eee8f2c5a06 languageName: node linkType: hard "agent-base@npm:6, agent-base@npm:^6.0.2": version: 6.0.2 resolution: "agent-base@npm:6.0.2" dependencies: debug: 4 checksum: f52b6872cc96fd5f622071b71ef200e01c7c4c454ee68bc9accca90c98cfb39f2810e3e9aa330435835eedc8c23f4f8a15267f67c6e245d2b33757575bdac49d languageName: node linkType: hard "agentkeepalive@npm:^4.2.1": version: 4.3.0 resolution: "agentkeepalive@npm:4.3.0" dependencies: debug: ^4.1.0 depd: ^2.0.0 humanize-ms: ^1.2.1 checksum: 982453aa44c11a06826c836025e5162c846e1200adb56f2d075400da7d32d87021b3b0a58768d949d824811f5654223d5a8a3dad120921a2439625eb847c6260 languageName: node linkType: hard "aggregate-error@npm:^3.0.0": version: 3.1.0 resolution: "aggregate-error@npm:3.1.0" dependencies: clean-stack: ^2.0.0 indent-string: ^4.0.0 checksum: 1101a33f21baa27a2fa8e04b698271e64616b886795fd43c31068c07533c7b3facfcaf4e9e0cab3624bd88f729a592f1c901a1a229c9e490eafce411a8644b79 languageName: node linkType: hard "ajv-formats@npm:^2.1.1": version: 2.1.1 resolution: "ajv-formats@npm:2.1.1" dependencies: ajv: ^8.0.0 peerDependencies: ajv: ^8.0.0 peerDependenciesMeta: ajv: optional: true checksum: 4a287d937f1ebaad4683249a4c40c0fa3beed30d9ddc0adba04859026a622da0d317851316ea64b3680dc60f5c3c708105ddd5d5db8fe595d9d0207fd19f90b7 languageName: node linkType: hard "ajv-keywords@npm:^3.5.2": version: 3.5.2 resolution: "ajv-keywords@npm:3.5.2" peerDependencies: ajv: ^6.9.1 checksum: 7dc5e5931677a680589050f79dcbe1fefbb8fea38a955af03724229139175b433c63c68f7ae5f86cf8f65d55eb7c25f75a046723e2e58296707617ca690feae9 languageName: node linkType: hard "ajv-keywords@npm:^5.1.0": version: 5.1.0 resolution: "ajv-keywords@npm:5.1.0" dependencies: fast-deep-equal: ^3.1.3 peerDependencies: ajv: ^8.8.2 checksum: c35193940b853119242c6757787f09ecf89a2c19bcd36d03ed1a615e710d19d450cb448bfda407b939aba54b002368c8bff30529cc50a0536a8e10bcce300421 languageName: node linkType: hard "ajv@npm:8.11.2": version: 8.11.2 resolution: "ajv@npm:8.11.2" dependencies: fast-deep-equal: ^3.1.1 json-schema-traverse: ^1.0.0 require-from-string: ^2.0.2 uri-js: ^4.2.2 checksum: 53435bf79ee7d1eabba8085962dba4c08d08593334b304db7772887f0b7beebc1b3d957432f7437ed4b60e53b5d966a57b439869890209c50fed610459999e3e languageName: node linkType: hard "ajv@npm:^5.0.0": version: 5.5.2 resolution: "ajv@npm:5.5.2" dependencies: co: ^4.6.0 fast-deep-equal: ^1.0.0 fast-json-stable-stringify: ^2.0.0 json-schema-traverse: ^0.3.0 checksum: a69645c843e1676b0ae1c5192786e546427f808f386d26127c6585479378066c64341ceec0b127b6789d79628e71d2a732d402f575b98f9262db230d7b715a94 languageName: node linkType: hard "ajv@npm:^6.10.0, ajv@npm:^6.12.3, ajv@npm:^6.12.4, ajv@npm:^6.12.5": version: 6.12.6 resolution: "ajv@npm:6.12.6" dependencies: fast-deep-equal: ^3.1.1 fast-json-stable-stringify: ^2.0.0 json-schema-traverse: ^0.4.1 uri-js: ^4.2.2 checksum: 874972efe5c4202ab0a68379481fbd3d1b5d0a7bd6d3cc21d40d3536ebff3352a2a1fabb632d4fd2cc7fe4cbdcd5ed6782084c9bbf7f32a1536d18f9da5007d4 languageName: node linkType: hard "ajv@npm:^8.0.0, ajv@npm:^8.12.0, ajv@npm:^8.6.0, ajv@npm:^8.9.0": version: 8.12.0 resolution: "ajv@npm:8.12.0" dependencies: fast-deep-equal: ^3.1.1 json-schema-traverse: ^1.0.0 require-from-string: ^2.0.2 uri-js: ^4.2.2 checksum: 4dc13714e316e67537c8b31bc063f99a1d9d9a497eb4bbd55191ac0dcd5e4985bbb71570352ad6f1e76684fb6d790928f96ba3b2d4fd6e10024be9612fe3f001 languageName: node linkType: hard "ansi-colors@npm:4.1.1": version: 4.1.1 resolution: "ansi-colors@npm:4.1.1" checksum: 138d04a51076cb085da0a7e2d000c5c0bb09f6e772ed5c65c53cb118d37f6c5f1637506d7155fb5f330f0abcf6f12fa2e489ac3f8cdab9da393bf1bb4f9a32b0 languageName: node linkType: hard "ansi-colors@npm:^4.1.1": version: 4.1.3 resolution: "ansi-colors@npm:4.1.3" checksum: a9c2ec842038a1fabc7db9ece7d3177e2fe1c5dc6f0c51ecfbf5f39911427b89c00b5dc6b8bd95f82a26e9b16aaae2e83d45f060e98070ce4d1333038edceb0e languageName: node linkType: hard "ansi-escapes@npm:^4.2.1, ansi-escapes@npm:^4.3.0, ansi-escapes@npm:^4.3.2": version: 4.3.2 resolution: "ansi-escapes@npm:4.3.2" dependencies: type-fest: ^0.21.3 checksum: 93111c42189c0a6bed9cdb4d7f2829548e943827ee8479c74d6e0b22ee127b2a21d3f8b5ca57723b8ef78ce011fbfc2784350eb2bde3ccfccf2f575fa8489815 languageName: node linkType: hard "ansi-regex@npm:^2.0.0": version: 2.1.1 resolution: "ansi-regex@npm:2.1.1" checksum: 190abd03e4ff86794f338a31795d262c1dfe8c91f7e01d04f13f646f1dcb16c5800818f886047876f1272f065570ab86b24b99089f8b68a0e11ff19aed4ca8f1 languageName: node linkType: hard "ansi-regex@npm:^3.0.0": version: 3.0.1 resolution: "ansi-regex@npm:3.0.1" checksum: 09daf180c5f59af9850c7ac1bd7fda85ba596cc8cbeb210826e90755f06c818af86d9fa1e6e8322fab2c3b9e9b03f56c537b42241139f824dd75066a1e7257cc languageName: node linkType: hard "ansi-regex@npm:^5.0.1": version: 5.0.1 resolution: "ansi-regex@npm:5.0.1" checksum: 2aa4bb54caf2d622f1afdad09441695af2a83aa3fe8b8afa581d205e57ed4261c183c4d3877cee25794443fde5876417d859c108078ab788d6af7e4fe52eb66b languageName: node linkType: hard "ansi-regex@npm:^6.0.1": version: 6.0.1 resolution: "ansi-regex@npm:6.0.1" checksum: 1ff8b7667cded1de4fa2c9ae283e979fc87036864317da86a2e546725f96406746411d0d85e87a2d12fa5abd715d90006de7fa4fa0477c92321ad3b4c7d4e169 languageName: node linkType: hard "ansi-sequence-parser@npm:^1.1.0": version: 1.1.0 resolution: "ansi-sequence-parser@npm:1.1.0" checksum: 75f4d3a4c555655a698aec05b5763cbddcd16ccccdbfd178fb0aa471ab74fdf98e031b875ef26e64be6a95cf970c89238744b26de6e34af97f316d5186b1df53 languageName: node linkType: hard "ansi-styles@npm:^2.2.1": version: 2.2.1 resolution: "ansi-styles@npm:2.2.1" checksum: ebc0e00381f2a29000d1dac8466a640ce11943cef3bda3cd0020dc042e31e1058ab59bf6169cd794a54c3a7338a61ebc404b7c91e004092dd20e028c432c9c2c languageName: node linkType: hard "ansi-styles@npm:^3.2.1": version: 3.2.1 resolution: "ansi-styles@npm:3.2.1" dependencies: color-convert: ^1.9.0 checksum: d85ade01c10e5dd77b6c89f34ed7531da5830d2cb5882c645f330079975b716438cd7ebb81d0d6e6b4f9c577f19ae41ab55f07f19786b02f9dfd9e0377395665 languageName: node linkType: hard "ansi-styles@npm:^4.0.0, ansi-styles@npm:^4.1.0": version: 4.3.0 resolution: "ansi-styles@npm:4.3.0" dependencies: color-convert: ^2.0.1 checksum: 513b44c3b2105dd14cc42a19271e80f386466c4be574bccf60b627432f9198571ebf4ab1e4c3ba17347658f4ee1711c163d574248c0c1cdc2d5917a0ad582ec4 languageName: node linkType: hard "ansi-styles@npm:^6.0.0, ansi-styles@npm:^6.1.0": version: 6.2.1 resolution: "ansi-styles@npm:6.2.1" checksum: ef940f2f0ced1a6347398da88a91da7930c33ecac3c77b72c5905f8b8fe402c52e6fde304ff5347f616e27a742da3f1dc76de98f6866c69251ad0b07a66776d9 languageName: node linkType: hard "anymatch@npm:~3.1.2": version: 3.1.3 resolution: "anymatch@npm:3.1.3" dependencies: normalize-path: ^3.0.0 picomatch: ^2.0.4 checksum: 3e044fd6d1d26545f235a9fe4d7a534e2029d8e59fa7fd9f2a6eb21230f6b5380ea1eaf55136e60cbf8e613544b3b766e7a6fa2102e2a3a117505466e3025dc2 languageName: node linkType: hard "apache-md5@npm:1.1.8": version: 1.1.8 resolution: "apache-md5@npm:1.1.8" checksum: 5f93fe00a4c75c947a8ba88054cfa9c141ea13d1581515a59637d580747581345f8cee41204af354f7280439ab19120f4bec4a1ee5cf1ac7033a7a89dbb05ada languageName: node linkType: hard "aproba@npm:^1.0.3 || ^2.0.0, aproba@npm:^2.0.0": version: 2.0.0 resolution: "aproba@npm:2.0.0" checksum: 5615cadcfb45289eea63f8afd064ab656006361020e1735112e346593856f87435e02d8dcc7ff0d11928bc7d425f27bc7c2a84f6c0b35ab0ff659c814c138a24 languageName: node linkType: hard "are-we-there-yet@npm:^3.0.0": version: 3.0.1 resolution: "are-we-there-yet@npm:3.0.1" dependencies: delegates: ^1.0.0 readable-stream: ^3.6.0 checksum: 52590c24860fa7173bedeb69a4c05fb573473e860197f618b9a28432ee4379049336727ae3a1f9c4cb083114601c1140cee578376164d0e651217a9843f9fe83 languageName: node linkType: hard "argparse@npm:^1.0.7": version: 1.0.10 resolution: "argparse@npm:1.0.10" dependencies: sprintf-js: ~1.0.2 checksum: 7ca6e45583a28de7258e39e13d81e925cfa25d7d4aacbf806a382d3c02fcb13403a07fb8aeef949f10a7cfe4a62da0e2e807b348a5980554cc28ee573ef95945 languageName: node linkType: hard "argparse@npm:^2.0.1": version: 2.0.1 resolution: "argparse@npm:2.0.1" checksum: 83644b56493e89a254bae05702abf3a1101b4fa4d0ca31df1c9985275a5a5bd47b3c27b7fa0b71098d41114d8ca000e6ed90cad764b306f8a503665e4d517ced languageName: node linkType: hard "array-buffer-byte-length@npm:^1.0.0": version: 1.0.0 resolution: "array-buffer-byte-length@npm:1.0.0" dependencies: call-bind: ^1.0.2 is-array-buffer: ^3.0.1 checksum: 044e101ce150f4804ad19c51d6c4d4cfa505c5b2577bd179256e4aa3f3f6a0a5e9874c78cd428ee566ac574c8a04d7ce21af9fe52e844abfdccb82b33035a7c3 languageName: node linkType: hard "array-differ@npm:^3.0.0": version: 3.0.0 resolution: "array-differ@npm:3.0.0" checksum: 117edd9df5c1530bd116c6e8eea891d4bd02850fd89b1b36e532b6540e47ca620a373b81feca1c62d1395d9ae601516ba538abe5e8172d41091da2c546b05fb7 languageName: node linkType: hard "array-flatten@npm:1.1.1": version: 1.1.1 resolution: "array-flatten@npm:1.1.1" checksum: a9925bf3512d9dce202112965de90c222cd59a4fbfce68a0951d25d965cf44642931f40aac72309c41f12df19afa010ecadceb07cfff9ccc1621e99d89ab5f3b languageName: node linkType: hard "array-ify@npm:^1.0.0": version: 1.0.0 resolution: "array-ify@npm:1.0.0" checksum: c0502015b319c93dd4484f18036bcc4b654eb76a4aa1f04afbcef11ac918859bb1f5d71ba1f0f1141770db9eef1a4f40f1761753650873068010bbf7bcdae4a4 languageName: node linkType: hard "array-union@npm:^2.1.0": version: 2.1.0 resolution: "array-union@npm:2.1.0" checksum: 5bee12395cba82da674931df6d0fea23c4aa4660cb3b338ced9f828782a65caa232573e6bf3968f23e0c5eb301764a382cef2f128b170a9dc59de0e36c39f98d languageName: node linkType: hard "array-union@npm:^3.0.1": version: 3.0.1 resolution: "array-union@npm:3.0.1" checksum: 47b29f88258e8f37ffb93ddaa327d4308edd950b52943c172b73558afdd3fa74cfd68816ba5aa4b894242cf281fa3c6d0362ae057e4a18bddbaedbe46ebe7112 languageName: node linkType: hard "arrify@npm:^1.0.1": version: 1.0.1 resolution: "arrify@npm:1.0.1" checksum: 745075dd4a4624ff0225c331dacb99be501a515d39bcb7c84d24660314a6ec28e68131b137e6f7e16318170842ce97538cd298fc4cd6b2cc798e0b957f2747e7 languageName: node linkType: hard "arrify@npm:^2.0.1": version: 2.0.1 resolution: "arrify@npm:2.0.1" checksum: 067c4c1afd182806a82e4c1cb8acee16ab8b5284fbca1ce29408e6e91281c36bb5b612f6ddfbd40a0f7a7e0c75bf2696eb94c027f6e328d6e9c52465c98e4209 languageName: node linkType: hard "asap@npm:^2.0.0": version: 2.0.6 resolution: "asap@npm:2.0.6" checksum: b296c92c4b969e973260e47523207cd5769abd27c245a68c26dc7a0fe8053c55bb04360237cb51cab1df52be939da77150ace99ad331fb7fb13b3423ed73ff3d languageName: node linkType: hard "asn1@npm:~0.2.3": version: 0.2.6 resolution: "asn1@npm:0.2.6" dependencies: safer-buffer: ~2.1.0 checksum: 39f2ae343b03c15ad4f238ba561e626602a3de8d94ae536c46a4a93e69578826305366dc09fbb9b56aec39b4982a463682f259c38e59f6fa380cd72cd61e493d languageName: node linkType: hard "assert-plus@npm:1.0.0, assert-plus@npm:^1.0.0": version: 1.0.0 resolution: "assert-plus@npm:1.0.0" checksum: 19b4340cb8f0e6a981c07225eacac0e9d52c2644c080198765d63398f0075f83bbc0c8e95474d54224e297555ad0d631c1dcd058adb1ddc2437b41a6b424ac64 languageName: node linkType: hard "assertion-error@npm:^1.1.0": version: 1.1.0 resolution: "assertion-error@npm:1.1.0" checksum: fd9429d3a3d4fd61782eb3962ae76b6d08aa7383123fca0596020013b3ebd6647891a85b05ce821c47d1471ed1271f00b0545cf6a4326cf2fc91efcc3b0fbecf languageName: node linkType: hard "astral-regex@npm:^2.0.0": version: 2.0.0 resolution: "astral-regex@npm:2.0.0" checksum: 876231688c66400473ba505731df37ea436e574dd524520294cc3bbc54ea40334865e01fa0d074d74d036ee874ee7e62f486ea38bc421ee8e6a871c06f011766 languageName: node linkType: hard "async@npm:3.2.4, async@npm:^3.2.3": version: 3.2.4 resolution: "async@npm:3.2.4" checksum: 43d07459a4e1d09b84a20772414aa684ff4de085cbcaec6eea3c7a8f8150e8c62aa6cd4e699fe8ee93c3a5b324e777d34642531875a0817a35697522c1b02e89 languageName: node linkType: hard "async@npm:^2.6.4": version: 2.6.4 resolution: "async@npm:2.6.4" dependencies: lodash: ^4.17.14 checksum: a52083fb32e1ebe1d63e5c5624038bb30be68ff07a6c8d7dfe35e47c93fc144bd8652cbec869e0ac07d57dde387aa5f1386be3559cdee799cb1f789678d88e19 languageName: node linkType: hard "asynckit@npm:^0.4.0": version: 0.4.0 resolution: "asynckit@npm:0.4.0" checksum: 7b78c451df768adba04e2d02e63e2d0bf3b07adcd6e42b4cf665cb7ce899bedd344c69a1dcbce355b5f972d597b25aaa1c1742b52cffd9caccb22f348114f6be languageName: node linkType: hard "at-least-node@npm:^1.0.0": version: 1.0.0 resolution: "at-least-node@npm:1.0.0" checksum: 463e2f8e43384f1afb54bc68485c436d7622acec08b6fad269b421cb1d29cebb5af751426793d0961ed243146fe4dc983402f6d5a51b720b277818dbf6f2e49e languageName: node linkType: hard "atomic-sleep@npm:^1.0.0": version: 1.0.0 resolution: "atomic-sleep@npm:1.0.0" checksum: b95275afb2f80732f22f43a60178430c468906a415a7ff18bcd0feeebc8eec3930b51250aeda91a476062a90e07132b43a1794e8d8ffcf9b650e8139be75fa36 languageName: node linkType: hard "autoprefixer@npm:^7.1.1": version: 7.2.6 resolution: "autoprefixer@npm:7.2.6" dependencies: browserslist: ^2.11.3 caniuse-lite: ^1.0.30000805 normalize-range: ^0.1.2 num2fraction: ^1.2.2 postcss: ^6.0.17 postcss-value-parser: ^3.2.3 bin: autoprefixer-info: ./bin/autoprefixer-info checksum: 7ad12a58ca128d3e6b6dc5e4b3d83f2a12151216d30bcea1f1f2f8a91d2a019c58dd62fd039a6c1cf218f2ab557b03224703a4396c1b4f01b5c0818bc6ba4dd9 languageName: node linkType: hard "available-typed-arrays@npm:^1.0.5": version: 1.0.5 resolution: "available-typed-arrays@npm:1.0.5" checksum: 20eb47b3cefd7db027b9bbb993c658abd36d4edd3fe1060e83699a03ee275b0c9b216cc076ff3f2db29073225fb70e7613987af14269ac1fe2a19803ccc97f1a languageName: node linkType: hard "aws-sign2@npm:~0.7.0": version: 0.7.0 resolution: "aws-sign2@npm:0.7.0" checksum: b148b0bb0778098ad8cf7e5fc619768bcb51236707ca1d3e5b49e41b171166d8be9fdc2ea2ae43d7decf02989d0aaa3a9c4caa6f320af95d684de9b548a71525 languageName: node linkType: hard "aws4@npm:^1.8.0": version: 1.12.0 resolution: "aws4@npm:1.12.0" checksum: 68f79708ac7c335992730bf638286a3ee0a645cf12575d557860100767c500c08b30e24726b9f03265d74116417f628af78509e1333575e9f8d52a80edfe8cbc languageName: node linkType: hard "axios@npm:^1.0.0": version: 1.4.0 resolution: "axios@npm:1.4.0" dependencies: follow-redirects: ^1.15.0 form-data: ^4.0.0 proxy-from-env: ^1.1.0 checksum: 7fb6a4313bae7f45e89d62c70a800913c303df653f19eafec88e56cea2e3821066b8409bc68be1930ecca80e861c52aa787659df0ffec6ad4d451c7816b9386b languageName: node linkType: hard "babel-code-frame@npm:^6.26.0": version: 6.26.0 resolution: "babel-code-frame@npm:6.26.0" dependencies: chalk: ^1.1.3 esutils: ^2.0.2 js-tokens: ^3.0.2 checksum: 9410c3d5a921eb02fa409675d1a758e493323a49e7b9dddb7a2a24d47e61d39ab1129dd29f9175836eac9ce8b1d4c0a0718fcdc57ce0b865b529fd250dbab313 languageName: node linkType: hard "babel-generator@npm:^6.18.0": version: 6.26.1 resolution: "babel-generator@npm:6.26.1" dependencies: babel-messages: ^6.23.0 babel-runtime: ^6.26.0 babel-types: ^6.26.0 detect-indent: ^4.0.0 jsesc: ^1.3.0 lodash: ^4.17.4 source-map: ^0.5.7 trim-right: ^1.0.1 checksum: 5397f4d4d1243e7157e3336be96c10fcb1f29f73bf2d9842229c71764d9a6431397d249483a38c4d8b1581459e67be4df6f32d26b1666f02d0f5bfc2c2f25193 languageName: node linkType: hard "babel-messages@npm:^6.23.0": version: 6.23.0 resolution: "babel-messages@npm:6.23.0" dependencies: babel-runtime: ^6.22.0 checksum: c8075c17587a33869e1a5bd0a5b73bbe395b68188362dacd5418debbc7c8fd784bcd3295e81ee7e410dc2c2655755add6af03698c522209f6a68334c15e6d6ca languageName: node linkType: hard "babel-runtime@npm:^6.22.0, babel-runtime@npm:^6.23.0, babel-runtime@npm:^6.26.0": version: 6.26.0 resolution: "babel-runtime@npm:6.26.0" dependencies: core-js: ^2.4.0 regenerator-runtime: ^0.11.0 checksum: 8aeade94665e67a73c1ccc10f6fd42ba0c689b980032b70929de7a6d9a12eb87ef51902733f8fefede35afea7a5c3ef7e916a64d503446c1eedc9e3284bd3d50 languageName: node linkType: hard "babel-template@npm:^6.16.0": version: 6.26.0 resolution: "babel-template@npm:6.26.0" dependencies: babel-runtime: ^6.26.0 babel-traverse: ^6.26.0 babel-types: ^6.26.0 babylon: ^6.18.0 lodash: ^4.17.4 checksum: 028dd57380f09b5641b74874a19073c53c4fb3f1696e849575aae18f8c80eaf21db75209057db862f3b893ce2cd9b795d539efa591b58f4a0fb011df0a56fbed languageName: node linkType: hard "babel-traverse@npm:^6.18.0, babel-traverse@npm:^6.26.0": version: 6.26.0 resolution: "babel-traverse@npm:6.26.0" dependencies: babel-code-frame: ^6.26.0 babel-messages: ^6.23.0 babel-runtime: ^6.26.0 babel-types: ^6.26.0 babylon: ^6.18.0 debug: ^2.6.8 globals: ^9.18.0 invariant: ^2.2.2 lodash: ^4.17.4 checksum: fca037588d2791ae0409f1b7aa56075b798699cccc53ea04d82dd1c0f97b9e7ab17065f7dd3ecd69101d7874c9c8fd5e0f88fa53abbae1fe94e37e6b81ebcb8d languageName: node linkType: hard "babel-types@npm:^6.18.0, babel-types@npm:^6.26.0": version: 6.26.0 resolution: "babel-types@npm:6.26.0" dependencies: babel-runtime: ^6.26.0 esutils: ^2.0.2 lodash: ^4.17.4 to-fast-properties: ^1.0.3 checksum: d16b0fa86e9b0e4c2623be81d0a35679faff24dd2e43cde4ca58baf49f3e39415a011a889e6c2259ff09e1228e4c3a3db6449a62de59e80152fe1ce7398fde76 languageName: node linkType: hard "babylon@npm:^6.18.0": version: 6.18.0 resolution: "babylon@npm:6.18.0" bin: babylon: ./bin/babylon.js checksum: 0777ae0c735ce1cbfc856d627589ed9aae212b84fb0c03c368b55e6c5d3507841780052808d0ad46e18a2ba516e93d55eeed8cd967f3b2938822dfeccfb2a16d languageName: node linkType: hard "backbone@npm:1.4.0": version: 1.4.0 resolution: "backbone@npm:1.4.0" dependencies: underscore: ">=1.8.3" checksum: 09abdf184c485a4cd2c68218298cf772fbefeaa166ef8eb795cdb0159b4ad1d2f6823dde089352eaf0be929e5bbef67c57555722f4d1886f969d954f77814870 languageName: node linkType: hard "balanced-match@npm:0.1.0": version: 0.1.0 resolution: "balanced-match@npm:0.1.0" checksum: 97e1cac3724a55a8ef249db54b8efb3c1b690735ea119a02c7ba885da86e8767453758ab7e14492ae58c7b07726fa409396f04bc2cb1a3fd36083f29ab54ddf5 languageName: node linkType: hard "balanced-match@npm:^0.4.2": version: 0.4.2 resolution: "balanced-match@npm:0.4.2" checksum: 205ebb42ce8529fa8e043a808b41bfb9818d5f98a8eb76a1cd5483f8a98dd0baefc8a9d940f36b591b1316a04f56b35c32b60ac9b1f848e41e4698672cec6c1e languageName: node linkType: hard "balanced-match@npm:^1.0.0": version: 1.0.2 resolution: "balanced-match@npm:1.0.2" checksum: 9706c088a283058a8a99e0bf91b0a2f75497f185980d9ffa8b304de1d9e58ebda7c72c07ebf01dadedaac5b2907b2c6f566f660d62bd336c3468e960403b9d65 languageName: node linkType: hard "base64-js@npm:^1.2.1, base64-js@npm:^1.3.1": version: 1.5.1 resolution: "base64-js@npm:1.5.1" checksum: 669632eb3745404c2f822a18fc3a0122d2f9a7a13f7fb8b5823ee19d1d2ff9ee5b52c53367176ea4ad093c332fd5ab4bd0ebae5a8e27917a4105a4cfc86b1005 languageName: node linkType: hard "base64id@npm:2.0.0, base64id@npm:~2.0.0": version: 2.0.0 resolution: "base64id@npm:2.0.0" checksum: 581b1d37e6cf3738b7ccdd4d14fe2bfc5c238e696e2720ee6c44c183b838655842e22034e53ffd783f872a539915c51b0d4728a49c7cc678ac5a758e00d62168 languageName: node linkType: hard "basic-auth@npm:^2.0.1": version: 2.0.1 resolution: "basic-auth@npm:2.0.1" dependencies: safe-buffer: 5.1.2 checksum: 3419b805d5dfc518f3a05dcf42aa53aa9ce820e50b6df5097f9e186322e1bc733c36722b624802cd37e791035aa73b828ed814d8362333d42d7f5cd04d7a5e48 languageName: node linkType: hard "bcrypt-pbkdf@npm:^1.0.0": version: 1.0.2 resolution: "bcrypt-pbkdf@npm:1.0.2" dependencies: tweetnacl: ^0.14.3 checksum: 4edfc9fe7d07019609ccf797a2af28351736e9d012c8402a07120c4453a3b789a15f2ee1530dc49eee8f7eb9379331a8dd4b3766042b9e502f74a68e7f662291 languageName: node linkType: hard "bcryptjs@npm:2.4.3": version: 2.4.3 resolution: "bcryptjs@npm:2.4.3" checksum: 0e80ed852a41f5dfb1853f53ee14a7390b0ef263ce05dba6e2ef3cd919dfad025a7c21ebcfe5bc7fa04b100990edf90c7a877ff7fe623d3e479753253131b629 languageName: node linkType: hard "before-after-hook@npm:^2.2.0": version: 2.2.3 resolution: "before-after-hook@npm:2.2.3" checksum: a1a2430976d9bdab4cd89cb50d27fa86b19e2b41812bf1315923b0cba03371ebca99449809226425dd3bcef20e010db61abdaff549278e111d6480034bebae87 languageName: node linkType: hard "big.js@npm:^5.2.2": version: 5.2.2 resolution: "big.js@npm:5.2.2" checksum: b89b6e8419b097a8fb4ed2399a1931a68c612bce3cfd5ca8c214b2d017531191070f990598de2fc6f3f993d91c0f08aa82697717f6b3b8732c9731866d233c9e languageName: node linkType: hard "bin-links@npm:^3.0.0": version: 3.0.3 resolution: "bin-links@npm:3.0.3" dependencies: cmd-shim: ^5.0.0 mkdirp-infer-owner: ^2.0.0 npm-normalize-package-bin: ^2.0.0 read-cmd-shim: ^3.0.0 rimraf: ^3.0.0 write-file-atomic: ^4.0.0 checksum: ea2dc6f91a6ef8b3840ceb48530bbeb8d6d1c6f7985fe1409b16d7e7db39432f0cb5ce15cc2788bb86d989abad6e2c7fba3500996a210a682eec18fb26a66e72 languageName: node linkType: hard "binary-extensions@npm:^2.0.0": version: 2.2.0 resolution: "binary-extensions@npm:2.2.0" checksum: ccd267956c58d2315f5d3ea6757cf09863c5fc703e50fbeb13a7dc849b812ef76e3cf9ca8f35a0c48498776a7478d7b4a0418e1e2b8cb9cb9731f2922aaad7f8 languageName: node linkType: hard "bl@npm:^4.0.3, bl@npm:^4.1.0": version: 4.1.0 resolution: "bl@npm:4.1.0" dependencies: buffer: ^5.5.0 inherits: ^2.0.4 readable-stream: ^3.4.0 checksum: 9e8521fa7e83aa9427c6f8ccdcba6e8167ef30cc9a22df26effcc5ab682ef91d2cbc23a239f945d099289e4bbcfae7a192e9c28c84c6202e710a0dfec3722662 languageName: node linkType: hard "body-parser@npm:1.20.1": version: 1.20.1 resolution: "body-parser@npm:1.20.1" dependencies: bytes: 3.1.2 content-type: ~1.0.4 debug: 2.6.9 depd: 2.0.0 destroy: 1.2.0 http-errors: 2.0.0 iconv-lite: 0.4.24 on-finished: 2.4.1 qs: 6.11.0 raw-body: 2.5.1 type-is: ~1.6.18 unpipe: 1.0.0 checksum: f1050dbac3bede6a78f0b87947a8d548ce43f91ccc718a50dd774f3c81f2d8b04693e52acf62659fad23101827dd318da1fb1363444ff9a8482b886a3e4a5266 languageName: node linkType: hard "body-parser@npm:1.20.2, body-parser@npm:^1.19.0": version: 1.20.2 resolution: "body-parser@npm:1.20.2" dependencies: bytes: 3.1.2 content-type: ~1.0.5 debug: 2.6.9 depd: 2.0.0 destroy: 1.2.0 http-errors: 2.0.0 iconv-lite: 0.4.24 on-finished: 2.4.1 qs: 6.11.0 raw-body: 2.5.2 type-is: ~1.6.18 unpipe: 1.0.0 checksum: 14d37ec638ab5c93f6099ecaed7f28f890d222c650c69306872e00b9efa081ff6c596cd9afb9930656aae4d6c4e1c17537bea12bb73c87a217cb3cfea8896737 languageName: node linkType: hard "brace-expansion@npm:^1.1.7": version: 1.1.11 resolution: "brace-expansion@npm:1.1.11" dependencies: balanced-match: ^1.0.0 concat-map: 0.0.1 checksum: faf34a7bb0c3fcf4b59c7808bc5d2a96a40988addf2e7e09dfbb67a2251800e0d14cd2bfc1aa79174f2f5095c54ff27f46fb1289fe2d77dac755b5eb3434cc07 languageName: node linkType: hard "brace-expansion@npm:^2.0.1": version: 2.0.1 resolution: "brace-expansion@npm:2.0.1" dependencies: balanced-match: ^1.0.0 checksum: a61e7cd2e8a8505e9f0036b3b6108ba5e926b4b55089eeb5550cd04a471fe216c96d4fe7e4c7f995c728c554ae20ddfc4244cad10aef255e72b62930afd233d1 languageName: node linkType: hard "braces@npm:^3.0.2, braces@npm:~3.0.2": version: 3.0.2 resolution: "braces@npm:3.0.2" dependencies: fill-range: ^7.0.1 checksum: e2a8e769a863f3d4ee887b5fe21f63193a891c68b612ddb4b68d82d1b5f3ff9073af066c343e9867a393fe4c2555dcb33e89b937195feb9c1613d259edfcd459 languageName: node linkType: hard "browser-stdout@npm:1.3.1": version: 1.3.1 resolution: "browser-stdout@npm:1.3.1" checksum: b717b19b25952dd6af483e368f9bcd6b14b87740c3d226c2977a65e84666ffd67000bddea7d911f111a9b6ddc822b234de42d52ab6507bce4119a4cc003ef7b3 languageName: node linkType: hard "browserslist@npm:^2.0.0, browserslist@npm:^2.11.3": version: 2.11.3 resolution: "browserslist@npm:2.11.3" dependencies: caniuse-lite: ^1.0.30000792 electron-to-chromium: ^1.3.30 bin: browserslist: ./cli.js checksum: 2ff908162669461e881bad516885b703fd594a0b7a139bf150c1952a74fe4ed8668ac46367a0d136d39a717de65e51c867316951e9fe0f92664c65b205eb9d93 languageName: node linkType: hard "browserslist@npm:^4.14.5, browserslist@npm:^4.21.3": version: 4.21.5 resolution: "browserslist@npm:4.21.5" dependencies: caniuse-lite: ^1.0.30001449 electron-to-chromium: ^1.4.284 node-releases: ^2.0.8 update-browserslist-db: ^1.0.10 bin: browserslist: cli.js checksum: 9755986b22e73a6a1497fd8797aedd88e04270be33ce66ed5d85a1c8a798292a65e222b0f251bafa1c2522261e237d73b08b58689d4920a607e5a53d56dc4706 languageName: node linkType: hard "buffer-equal-constant-time@npm:1.0.1": version: 1.0.1 resolution: "buffer-equal-constant-time@npm:1.0.1" checksum: 80bb945f5d782a56f374b292770901065bad21420e34936ecbe949e57724b4a13874f735850dd1cc61f078773c4fb5493a41391e7bda40d1fa388d6bd80daaab languageName: node linkType: hard "buffer-from@npm:^1.0.0": version: 1.1.2 resolution: "buffer-from@npm:1.1.2" checksum: 0448524a562b37d4d7ed9efd91685a5b77a50672c556ea254ac9a6d30e3403a517d8981f10e565db24e8339413b43c97ca2951f10e399c6125a0d8911f5679bb languageName: node linkType: hard "buffer@npm:^5.5.0": version: 5.7.1 resolution: "buffer@npm:5.7.1" dependencies: base64-js: ^1.3.1 ieee754: ^1.1.13 checksum: e2cf8429e1c4c7b8cbd30834ac09bd61da46ce35f5c22a78e6c2f04497d6d25541b16881e30a019c6fd3154150650ccee27a308eff3e26229d788bbdeb08ab84 languageName: node linkType: hard "buffer@npm:^6.0.3": version: 6.0.3 resolution: "buffer@npm:6.0.3" dependencies: base64-js: ^1.3.1 ieee754: ^1.2.1 checksum: 5ad23293d9a731e4318e420025800b42bf0d264004c0286c8cc010af7a270c7a0f6522e84f54b9ad65cbd6db20b8badbfd8d2ebf4f80fa03dab093b89e68c3f9 languageName: node linkType: hard "builtins@npm:^1.0.3": version: 1.0.3 resolution: "builtins@npm:1.0.3" checksum: 47ce94f7eee0e644969da1f1a28e5f29bd2e48b25b2bbb61164c345881086e29464ccb1fb88dbc155ea26e8b1f5fc8a923b26c8c1ed0935b67b644d410674513 languageName: node linkType: hard "builtins@npm:^5.0.0": version: 5.0.1 resolution: "builtins@npm:5.0.1" dependencies: semver: ^7.0.0 checksum: 66d204657fe36522822a95b288943ad11b58f5eaede235b11d8c4edaa28ce4800087d44a2681524c340494aadb120a0068011acabe99d30e8f11a7d826d83515 languageName: node linkType: hard "byte-size@npm:^7.0.0": version: 7.0.1 resolution: "byte-size@npm:7.0.1" checksum: 6791663a6d53bf950e896f119d3648fe8d7e8ae677e2ccdae84d0e5b78f21126e25f9d73aa19be2a297cb27abd36b6f5c361c0de36ebb2f3eb8a853f2ac99a4a languageName: node linkType: hard "bytes@npm:3.0.0": version: 3.0.0 resolution: "bytes@npm:3.0.0" checksum: a2b386dd8188849a5325f58eef69c3b73c51801c08ffc6963eddc9be244089ba32d19347caf6d145c86f315ae1b1fc7061a32b0c1aa6379e6a719090287ed101 languageName: node linkType: hard "bytes@npm:3.1.2": version: 3.1.2 resolution: "bytes@npm:3.1.2" checksum: e4bcd3948d289c5127591fbedf10c0b639ccbf00243504e4e127374a15c3bc8eed0d28d4aaab08ff6f1cf2abc0cce6ba3085ed32f4f90e82a5683ce0014e1b6e languageName: node linkType: hard "cacache@npm:^16.0.0, cacache@npm:^16.0.6, cacache@npm:^16.1.0": version: 16.1.3 resolution: "cacache@npm:16.1.3" dependencies: "@npmcli/fs": ^2.1.0 "@npmcli/move-file": ^2.0.0 chownr: ^2.0.0 fs-minipass: ^2.1.0 glob: ^8.0.1 infer-owner: ^1.0.4 lru-cache: ^7.7.1 minipass: ^3.1.6 minipass-collect: ^1.0.2 minipass-flush: ^1.0.5 minipass-pipeline: ^1.2.4 mkdirp: ^1.0.4 p-map: ^4.0.0 promise-inflight: ^1.0.1 rimraf: ^3.0.2 ssri: ^9.0.0 tar: ^6.1.11 unique-filename: ^2.0.0 checksum: d91409e6e57d7d9a3a25e5dcc589c84e75b178ae8ea7de05cbf6b783f77a5fae938f6e8fda6f5257ed70000be27a681e1e44829251bfffe4c10216002f8f14e6 languageName: node linkType: hard "cacheable-lookup@npm:^5.0.3": version: 5.0.4 resolution: "cacheable-lookup@npm:5.0.4" checksum: 763e02cf9196bc9afccacd8c418d942fc2677f22261969a4c2c2e760fa44a2351a81557bd908291c3921fe9beb10b976ba8fa50c5ca837c5a0dd945f16468f2d languageName: node linkType: hard "cacheable-request@npm:^7.0.2": version: 7.0.2 resolution: "cacheable-request@npm:7.0.2" dependencies: clone-response: ^1.0.2 get-stream: ^5.1.0 http-cache-semantics: ^4.0.0 keyv: ^4.0.0 lowercase-keys: ^2.0.0 normalize-url: ^6.0.1 responselike: ^2.0.0 checksum: 6152813982945a5c9989cb457a6c499f12edcc7ade323d2fbfd759abc860bdbd1306e08096916bb413c3c47e812f8e4c0a0cc1e112c8ce94381a960f115bc77f languageName: node linkType: hard "call-bind@npm:^1.0.0, call-bind@npm:^1.0.2": version: 1.0.2 resolution: "call-bind@npm:1.0.2" dependencies: function-bind: ^1.1.1 get-intrinsic: ^1.0.2 checksum: f8e31de9d19988a4b80f3e704788c4a2d6b6f3d17cfec4f57dc29ced450c53a49270dc66bf0fbd693329ee948dd33e6c90a329519aef17474a4d961e8d6426b0 languageName: node linkType: hard "callsites@npm:^3.0.0": version: 3.1.0 resolution: "callsites@npm:3.1.0" checksum: 072d17b6abb459c2ba96598918b55868af677154bec7e73d222ef95a8fdb9bbf7dae96a8421085cdad8cd190d86653b5b6dc55a4484f2e5b2e27d5e0c3fc15b3 languageName: node linkType: hard "camelcase-keys@npm:^6.2.2": version: 6.2.2 resolution: "camelcase-keys@npm:6.2.2" dependencies: camelcase: ^5.3.1 map-obj: ^4.0.0 quick-lru: ^4.0.1 checksum: 43c9af1adf840471e54c68ab3e5fe8a62719a6b7dbf4e2e86886b7b0ff96112c945736342b837bd2529ec9d1c7d1934e5653318478d98e0cf22c475c04658e2a languageName: node linkType: hard "camelcase@npm:^5.3.1": version: 5.3.1 resolution: "camelcase@npm:5.3.1" checksum: e6effce26b9404e3c0f301498184f243811c30dfe6d0b9051863bd8e4034d09c8c2923794f280d6827e5aa055f6c434115ff97864a16a963366fb35fd673024b languageName: node linkType: hard "camelcase@npm:^6.0.0": version: 6.3.0 resolution: "camelcase@npm:6.3.0" checksum: 8c96818a9076434998511251dcb2761a94817ea17dbdc37f47ac080bd088fc62c7369429a19e2178b993497132c8cbcf5cc1f44ba963e76782ba469c0474938d languageName: node linkType: hard "caniuse-api@npm:^2.0.0": version: 2.0.0 resolution: "caniuse-api@npm:2.0.0" dependencies: browserslist: ^2.0.0 caniuse-lite: ^1.0.0 lodash.memoize: ^4.1.2 lodash.uniq: ^4.5.0 checksum: 22f4dc65b7aa646de70c778709d77e57eacc843e80a6e2f0ba5b53a9012748f35c2f430df6d234b09415446b006cd663b1a12a8cbbff933f1c58f3b91a0fe3a8 languageName: node linkType: hard "caniuse-lite@npm:^1": version: 1.0.30001511 resolution: "caniuse-lite@npm:1.0.30001511" checksum: b7a8176673b15b9fbff689c6df1f38b69b877d68905120c5b1d4a1a6fa73d165f383aa1c818872435c0180681065b7be81c2cfff8303fed4b3cc54bd305fd67e languageName: node linkType: hard "caniuse-lite@npm:^1.0.0, caniuse-lite@npm:^1.0.30000792, caniuse-lite@npm:^1.0.30000805, caniuse-lite@npm:^1.0.30001449": version: 1.0.30001487 resolution: "caniuse-lite@npm:1.0.30001487" checksum: b5a9e72ec165765fb3e07913cc389685ce8a30ac48967f99baec773a4353d2037fb534241e87b3c95d40a5081079be2263710b784883183bb2998b73f7202233 languageName: node linkType: hard "caseless@npm:~0.12.0": version: 0.12.0 resolution: "caseless@npm:0.12.0" checksum: b43bd4c440aa1e8ee6baefee8063b4850fd0d7b378f6aabc796c9ec8cb26d27fb30b46885350777d9bd079c5256c0e1329ad0dc7c2817e0bb466810ebb353751 languageName: node linkType: hard "chai-as-promised@npm:^7.0.0": version: 7.1.1 resolution: "chai-as-promised@npm:7.1.1" dependencies: check-error: ^1.0.2 peerDependencies: chai: ">= 2.1.2 < 5" checksum: 7262868a5b51a12af4e432838ddf97a893109266a505808e1868ba63a12de7ee1166e9d43b5c501a190c377c1b11ecb9ff8e093c89f097ad96c397e8ec0f8d6a languageName: node linkType: hard "chai@npm:^4.0.0": version: 4.3.7 resolution: "chai@npm:4.3.7" dependencies: assertion-error: ^1.1.0 check-error: ^1.0.2 deep-eql: ^4.1.2 get-func-name: ^2.0.0 loupe: ^2.3.1 pathval: ^1.1.1 type-detect: ^4.0.5 checksum: 0bba7d267848015246a66995f044ce3f0ebc35e530da3cbdf171db744e14cbe301ab913a8d07caf7952b430257ccbb1a4a983c570a7c5748dc537897e5131f7c languageName: node linkType: hard "chalk@npm:^1.1.3": version: 1.1.3 resolution: "chalk@npm:1.1.3" dependencies: ansi-styles: ^2.2.1 escape-string-regexp: ^1.0.2 has-ansi: ^2.0.0 strip-ansi: ^3.0.0 supports-color: ^2.0.0 checksum: 9d2ea6b98fc2b7878829eec223abcf404622db6c48396a9b9257f6d0ead2acf18231ae368d6a664a83f272b0679158da12e97b5229f794939e555cc574478acd languageName: node linkType: hard "chalk@npm:^2.0.0, chalk@npm:^2.0.1, chalk@npm:^2.1.0, chalk@npm:^2.3.0, chalk@npm:^2.4.1": version: 2.4.2 resolution: "chalk@npm:2.4.2" dependencies: ansi-styles: ^3.2.1 escape-string-regexp: ^1.0.5 supports-color: ^5.3.0 checksum: ec3661d38fe77f681200f878edbd9448821924e0f93a9cefc0e26a33b145f1027a2084bf19967160d11e1f03bfe4eaffcabf5493b89098b2782c3fe0b03d80c2 languageName: node linkType: hard "chalk@npm:^4.0.0, chalk@npm:^4.0.2, chalk@npm:^4.1.0, chalk@npm:^4.1.1, chalk@npm:^4.1.2": version: 4.1.2 resolution: "chalk@npm:4.1.2" dependencies: ansi-styles: ^4.1.0 supports-color: ^7.1.0 checksum: fe75c9d5c76a7a98d45495b91b2172fa3b7a09e0cc9370e5c8feb1c567b85c4288e2b3fded7cfdd7359ac28d6b3844feb8b82b8686842e93d23c827c417e83fc languageName: node linkType: hard "chalk@npm:^5.2.0": version: 5.2.0 resolution: "chalk@npm:5.2.0" checksum: 03d8060277de6cf2fd567dc25fcf770593eb5bb85f460ce443e49255a30ff1242edd0c90a06a03803b0466ff0687a939b41db1757bec987113e83de89a003caa languageName: node linkType: hard "chardet@npm:^0.7.0": version: 0.7.0 resolution: "chardet@npm:0.7.0" checksum: 6fd5da1f5d18ff5712c1e0aed41da200d7c51c28f11b36ee3c7b483f3696dabc08927fc6b227735eb8f0e1215c9a8abd8154637f3eff8cada5959df7f58b024d languageName: node linkType: hard "check-error@npm:^1.0.2": version: 1.0.2 resolution: "check-error@npm:1.0.2" checksum: d9d106504404b8addd1ee3f63f8c0eaa7cd962a1a28eb9c519b1c4a1dc7098be38007fc0060f045ee00f075fbb7a2a4f42abcf61d68323677e11ab98dc16042e languageName: node linkType: hard "child_process@npm:~1.0.2": version: 1.0.2 resolution: "child_process@npm:1.0.2" checksum: bd814d82bc8c6e85ed6fb157878978121cd03b5296c09f6135fa3d081fd9a6a617a6d509c50397711df713af403331241a9c0397a7fad30672051485e156c2a1 languageName: node linkType: hard "chokidar@npm:3.5.3, chokidar@npm:^3.3.0, chokidar@npm:^3.5.1": version: 3.5.3 resolution: "chokidar@npm:3.5.3" dependencies: anymatch: ~3.1.2 braces: ~3.0.2 fsevents: ~2.3.2 glob-parent: ~5.1.2 is-binary-path: ~2.1.0 is-glob: ~4.0.1 normalize-path: ~3.0.0 readdirp: ~3.6.0 dependenciesMeta: fsevents: optional: true checksum: b49fcde40176ba007ff361b198a2d35df60d9bb2a5aab228279eb810feae9294a6b4649ab15981304447afe1e6ffbf4788ad5db77235dc770ab777c6e771980c languageName: node linkType: hard "chownr@npm:^2.0.0": version: 2.0.0 resolution: "chownr@npm:2.0.0" checksum: c57cf9dd0791e2f18a5ee9c1a299ae6e801ff58fee96dc8bfd0dcb4738a6ce58dd252a3605b1c93c6418fe4f9d5093b28ffbf4d66648cb2a9c67eaef9679be2f languageName: node linkType: hard "chrome-trace-event@npm:^1.0.2": version: 1.0.3 resolution: "chrome-trace-event@npm:1.0.3" checksum: cb8b1fc7e881aaef973bd0c4a43cd353c2ad8323fb471a041e64f7c2dd849cde4aad15f8b753331a32dda45c973f032c8a03b8177fc85d60eaa75e91e08bfb97 languageName: node linkType: hard "ci-info@npm:^2.0.0": version: 2.0.0 resolution: "ci-info@npm:2.0.0" checksum: 3b374666a85ea3ca43fa49aa3a048d21c9b475c96eb13c133505d2324e7ae5efd6a454f41efe46a152269e9b6a00c9edbe63ec7fa1921957165aae16625acd67 languageName: node linkType: hard "clean-stack@npm:^2.0.0": version: 2.2.0 resolution: "clean-stack@npm:2.2.0" checksum: 2ac8cd2b2f5ec986a3c743935ec85b07bc174d5421a5efc8017e1f146a1cf5f781ae962618f416352103b32c9cd7e203276e8c28241bbe946160cab16149fb68 languageName: node linkType: hard "cli-cursor@npm:3.1.0, cli-cursor@npm:^3.1.0": version: 3.1.0 resolution: "cli-cursor@npm:3.1.0" dependencies: restore-cursor: ^3.1.0 checksum: 2692784c6cd2fd85cfdbd11f53aea73a463a6d64a77c3e098b2b4697a20443f430c220629e1ca3b195ea5ac4a97a74c2ee411f3807abf6df2b66211fec0c0a29 languageName: node linkType: hard "cli-spinners@npm:2.6.1": version: 2.6.1 resolution: "cli-spinners@npm:2.6.1" checksum: 423409baaa7a58e5104b46ca1745fbfc5888bbd0b0c5a626e052ae1387060839c8efd512fb127e25769b3dc9562db1dc1b5add6e0b93b7ef64f477feb6416a45 languageName: node linkType: hard "cli-spinners@npm:^2.5.0": version: 2.9.0 resolution: "cli-spinners@npm:2.9.0" checksum: a9c56e1f44457d4a9f4f535364e729cb8726198efa9e98990cfd9eda9e220dfa4ba12f92808d1be5e29029cdfead781db82dc8549b97b31c907d55f96aa9b0e2 languageName: node linkType: hard "cli-truncate@npm:^2.1.0": version: 2.1.0 resolution: "cli-truncate@npm:2.1.0" dependencies: slice-ansi: ^3.0.0 string-width: ^4.2.0 checksum: bf1e4e6195392dc718bf9cd71f317b6300dc4a9191d052f31046b8773230ece4fa09458813bf0e3455a5e68c0690d2ea2c197d14a8b85a7b5e01c97f4b5feb5d languageName: node linkType: hard "cli-truncate@npm:^3.1.0": version: 3.1.0 resolution: "cli-truncate@npm:3.1.0" dependencies: slice-ansi: ^5.0.0 string-width: ^5.0.0 checksum: c3243e41974445691c63f8b405df1d5a24049dc33d324fe448dc572e561a7b772ae982692900b1a5960901cc4fc7def25a629b9c69a4208ee89d12ab3332617a languageName: node linkType: hard "cli-width@npm:^3.0.0": version: 3.0.0 resolution: "cli-width@npm:3.0.0" checksum: 4c94af3769367a70e11ed69aa6095f1c600c0ff510f3921ab4045af961820d57c0233acfa8b6396037391f31b4c397e1f614d234294f979ff61430a6c166c3f6 languageName: node linkType: hard "cli-width@npm:^4.0.0": version: 4.0.0 resolution: "cli-width@npm:4.0.0" checksum: 1ec12311217cc8b2d018646a58b61424d2348def598fb58ba2c32e28f0bcb59a35cef168110311cefe3340abf00e5171b351de6c3e2c084bd1642e6e2a9e144e languageName: node linkType: hard "clipanion@npm:3.2.0": version: 3.2.0 resolution: "clipanion@npm:3.2.0" dependencies: typanion: ^3.8.0 peerDependencies: typanion: "*" checksum: e28e6f0d48aecff86097823c604aa486082d76d2a5d3abc71069a0d9f3338af769fd7c6634b2f444c5b1aac0743b503325cc0b30552c094c01ebc602631b273d languageName: node linkType: hard "cliui@npm:^7.0.2": version: 7.0.4 resolution: "cliui@npm:7.0.4" dependencies: string-width: ^4.2.0 strip-ansi: ^6.0.0 wrap-ansi: ^7.0.0 checksum: ce2e8f578a4813806788ac399b9e866297740eecd4ad1823c27fd344d78b22c5f8597d548adbcc46f0573e43e21e751f39446c5a5e804a12aace402b7a315d7f languageName: node linkType: hard "cliui@npm:^8.0.1": version: 8.0.1 resolution: "cliui@npm:8.0.1" dependencies: string-width: ^4.2.0 strip-ansi: ^6.0.1 wrap-ansi: ^7.0.0 checksum: 79648b3b0045f2e285b76fb2e24e207c6db44323581e421c3acbd0e86454cba1b37aea976ab50195a49e7384b871e6dfb2247ad7dec53c02454ac6497394cb56 languageName: node linkType: hard "clone-deep@npm:^4.0.1": version: 4.0.1 resolution: "clone-deep@npm:4.0.1" dependencies: is-plain-object: ^2.0.4 kind-of: ^6.0.2 shallow-clone: ^3.0.0 checksum: 770f912fe4e6f21873c8e8fbb1e99134db3b93da32df271d00589ea4a29dbe83a9808a322c93f3bcaf8584b8b4fa6fc269fc8032efbaa6728e0c9886c74467d2 languageName: node linkType: hard "clone-response@npm:^1.0.2": version: 1.0.3 resolution: "clone-response@npm:1.0.3" dependencies: mimic-response: ^1.0.0 checksum: 4e671cac39b11c60aa8ba0a450657194a5d6504df51bca3fac5b3bd0145c4f8e8464898f87c8406b83232e3bc5cca555f51c1f9c8ac023969ebfbf7f6bdabb2e languageName: node linkType: hard "clone@npm:^1.0.2": version: 1.0.4 resolution: "clone@npm:1.0.4" checksum: d06418b7335897209e77bdd430d04f882189582e67bd1f75a04565f3f07f5b3f119a9d670c943b6697d0afb100f03b866b3b8a1f91d4d02d72c4ecf2bb64b5dd languageName: node linkType: hard "cmd-shim@npm:^5.0.0": version: 5.0.0 resolution: "cmd-shim@npm:5.0.0" dependencies: mkdirp-infer-owner: ^2.0.0 checksum: 83d2a46cdf4adbb38d3d3184364b2df0e4c001ac770f5ca94373825d7a48838b4cb8a59534ef48f02b0d556caa047728589ca65c640c17c0b417b3afb34acfbb languageName: node linkType: hard "co@npm:^4.6.0": version: 4.6.0 resolution: "co@npm:4.6.0" checksum: 5210d9223010eb95b29df06a91116f2cf7c8e0748a9013ed853b53f362ea0e822f1e5bb054fb3cefc645239a4cf966af1f6133a3b43f40d591f3b68ed6cf0510 languageName: node linkType: hard "codemirror@npm:^5.48.0": version: 5.65.13 resolution: "codemirror@npm:5.65.13" checksum: 47060461edaebecd03b3fba4e73a30cdccc0c51ce3a3a05bafae3c9cafd682101383e94d77d54081eaf1ae18da5b74343e98343c637c52cea409956469039098 languageName: node linkType: hard "color-convert@npm:^1.3.0, color-convert@npm:^1.8.2, color-convert@npm:^1.9.0, color-convert@npm:^1.9.1": version: 1.9.3 resolution: "color-convert@npm:1.9.3" dependencies: color-name: 1.1.3 checksum: fd7a64a17cde98fb923b1dd05c5f2e6f7aefda1b60d67e8d449f9328b4e53b228a428fd38bfeaeb2db2ff6b6503a776a996150b80cdf224062af08a5c8a3a203 languageName: node linkType: hard "color-convert@npm:^2.0.1": version: 2.0.1 resolution: "color-convert@npm:2.0.1" dependencies: color-name: ~1.1.4 checksum: 79e6bdb9fd479a205c71d89574fccfb22bd9053bd98c6c4d870d65c132e5e904e6034978e55b43d69fcaa7433af2016ee203ce76eeba9cfa554b373e7f7db336 languageName: node linkType: hard "color-name@npm:1.1.3": version: 1.1.3 resolution: "color-name@npm:1.1.3" checksum: 09c5d3e33d2105850153b14466501f2bfb30324a2f76568a408763a3b7433b0e50e5b4ab1947868e65cb101bb7cb75029553f2c333b6d4b8138a73fcc133d69d languageName: node linkType: hard "color-name@npm:^1.0.0, color-name@npm:~1.1.4": version: 1.1.4 resolution: "color-name@npm:1.1.4" checksum: b0445859521eb4021cd0fb0cc1a75cecf67fceecae89b63f62b201cca8d345baf8b952c966862a9d9a2632987d4f6581f0ec8d957dfacece86f0a7919316f610 languageName: node linkType: hard "color-string@npm:^0.3.0": version: 0.3.0 resolution: "color-string@npm:0.3.0" dependencies: color-name: ^1.0.0 checksum: cc65013a94d399ddcb81b3b4b6e0d2166cbaa77311260ff6271f215a286d3db58ab3a217bdb175f8b9dd95f9ea7ac94f71a595af6bcd3b6a02fea6e75ddaf5fb languageName: node linkType: hard "color-string@npm:^1.4.0, color-string@npm:^1.5.2": version: 1.9.1 resolution: "color-string@npm:1.9.1" dependencies: color-name: ^1.0.0 simple-swizzle: ^0.2.2 checksum: c13fe7cff7885f603f49105827d621ce87f4571d78ba28ef4a3f1a104304748f620615e6bf065ecd2145d0d9dad83a3553f52bb25ede7239d18e9f81622f1cc5 languageName: node linkType: hard "color-support@npm:^1.1.3": version: 1.1.3 resolution: "color-support@npm:1.1.3" bin: color-support: bin.js checksum: 9b7356817670b9a13a26ca5af1c21615463b500783b739b7634a0c2047c16cef4b2865d7576875c31c3cddf9dd621fa19285e628f20198b233a5cfdda6d0793b languageName: node linkType: hard "color@npm:^0.11.0": version: 0.11.4 resolution: "color@npm:0.11.4" dependencies: clone: ^1.0.2 color-convert: ^1.3.0 color-string: ^0.3.0 checksum: a6f624fd159e9311a6c1c86ac05b5b550c98e2d1e5646e032b8481e5e113127c06a84678b91c89c96b11b58c1c723dd9766b1b02cb2d441c6212a0f7cb3dad73 languageName: node linkType: hard "color@npm:^1.0.3": version: 1.0.3 resolution: "color@npm:1.0.3" dependencies: color-convert: ^1.8.2 color-string: ^1.4.0 checksum: 4b8264535dc518a92d7996f5e046b16bb4e4947824b955806c00101182aa1cd3e68a0718c36cfe13cce59e60ebe91087ca665bbf0883e6e9534ee4e622dbb41c languageName: node linkType: hard "color@npm:^2.0.1": version: 2.0.1 resolution: "color@npm:2.0.1" dependencies: color-convert: ^1.9.1 color-string: ^1.5.2 checksum: ee9217daf7316482d06237c0ec0cb7d94eee7fbcb71869c58631d8467cdcd3ffc64c69fd143c027ee7c5d793eb416dcad50a6391357c690e94e9dd969719ee28 languageName: node linkType: hard "colorette@npm:2.0.19": version: 2.0.19 resolution: "colorette@npm:2.0.19" checksum: 888cf5493f781e5fcf54ce4d49e9d7d698f96ea2b2ef67906834bb319a392c667f9ec69f4a10e268d2946d13a9503d2d19b3abaaaf174e3451bfe91fb9d82427 languageName: node linkType: hard "colorette@npm:^2.0.14, colorette@npm:^2.0.16": version: 2.0.20 resolution: "colorette@npm:2.0.20" checksum: 0c016fea2b91b733eb9f4bcdb580018f52c0bc0979443dad930e5037a968237ac53d9beb98e218d2e9235834f8eebce7f8e080422d6194e957454255bde71d3d languageName: node linkType: hard "columnify@npm:^1.6.0": version: 1.6.0 resolution: "columnify@npm:1.6.0" dependencies: strip-ansi: ^6.0.1 wcwidth: ^1.0.0 checksum: 0d590023616a27bcd2135c0f6ddd6fac94543263f9995538bbe391068976e30545e5534d369737ec7c3e9db4e53e70a277462de46aeb5a36e6997b4c7559c335 languageName: node linkType: hard "combined-stream@npm:^1.0.6, combined-stream@npm:^1.0.8, combined-stream@npm:~1.0.6": version: 1.0.8 resolution: "combined-stream@npm:1.0.8" dependencies: delayed-stream: ~1.0.0 checksum: 49fa4aeb4916567e33ea81d088f6584749fc90c7abec76fd516bf1c5aa5c79f3584b5ba3de6b86d26ddd64bae5329c4c7479343250cfe71c75bb366eae53bb7c languageName: node linkType: hard "commander@npm:^10.0.1": version: 10.0.1 resolution: "commander@npm:10.0.1" checksum: 436901d64a818295803c1996cd856621a74f30b9f9e28a588e726b2b1670665bccd7c1a77007ebf328729f0139838a88a19265858a0fa7a8728c4656796db948 languageName: node linkType: hard "commander@npm:^2.20.0": version: 2.20.3 resolution: "commander@npm:2.20.3" checksum: ab8c07884e42c3a8dbc5dd9592c606176c7eb5c1ca5ff274bcf907039b2c41de3626f684ea75ccf4d361ba004bbaff1f577d5384c155f3871e456bdf27becf9e languageName: node linkType: hard "commander@npm:^7.0.0": version: 7.2.0 resolution: "commander@npm:7.2.0" checksum: 53501cbeee61d5157546c0bef0fedb6cdfc763a882136284bed9a07225f09a14b82d2a84e7637edfd1a679fb35ed9502fd58ef1d091e6287f60d790147f68ddc languageName: node linkType: hard "commander@npm:^9.3.0, commander@npm:^9.4.1": version: 9.5.0 resolution: "commander@npm:9.5.0" checksum: c7a3e27aa59e913b54a1bafd366b88650bc41d6651f0cbe258d4ff09d43d6a7394232a4dadd0bf518b3e696fdf595db1028a0d82c785b88bd61f8a440cecfade languageName: node linkType: hard "common-ancestor-path@npm:^1.0.1": version: 1.0.1 resolution: "common-ancestor-path@npm:1.0.1" checksum: 1d2e4186067083d8cc413f00fc2908225f04ae4e19417ded67faa6494fb313c4fcd5b28a52326d1a62b466e2b3a4325e92c31133c5fee628cdf8856b3a57c3d7 languageName: node linkType: hard "compare-func@npm:^2.0.0": version: 2.0.0 resolution: "compare-func@npm:2.0.0" dependencies: array-ify: ^1.0.0 dot-prop: ^5.1.0 checksum: fb71d70632baa1e93283cf9d80f30ac97f003aabee026e0b4426c9716678079ef5fea7519b84d012cbed938c476493866a38a79760564a9e21ae9433e40e6f0d languageName: node linkType: hard "compressible@npm:~2.0.16": version: 2.0.18 resolution: "compressible@npm:2.0.18" dependencies: mime-db: ">= 1.43.0 < 2" checksum: 58321a85b375d39230405654721353f709d0c1442129e9a17081771b816302a012471a9b8f4864c7dbe02eef7f2aaac3c614795197092262e94b409c9be108f0 languageName: node linkType: hard "compression@npm:1.7.4": version: 1.7.4 resolution: "compression@npm:1.7.4" dependencies: accepts: ~1.3.5 bytes: 3.0.0 compressible: ~2.0.16 debug: 2.6.9 on-headers: ~1.0.2 safe-buffer: 5.1.2 vary: ~1.1.2 checksum: 35c0f2eb1f28418978615dc1bc02075b34b1568f7f56c62d60f4214d4b7cc00d0f6d282b5f8a954f59872396bd770b6b15ffd8aa94c67d4bce9b8887b906999b languageName: node linkType: hard "compute-gcd@npm:^1.2.1": version: 1.2.1 resolution: "compute-gcd@npm:1.2.1" dependencies: validate.io-array: ^1.0.3 validate.io-function: ^1.0.2 validate.io-integer-array: ^1.0.0 checksum: 51cf33b75f7c8db5142fcb99a9d84a40260993fed8e02a7ab443834186c3ab99b3fd20b30ad9075a6a9d959d69df6da74dd3be8a59c78d9f2fe780ebda8242e1 languageName: node linkType: hard "compute-lcm@npm:^1.1.2": version: 1.1.2 resolution: "compute-lcm@npm:1.1.2" dependencies: compute-gcd: ^1.2.1 validate.io-array: ^1.0.3 validate.io-function: ^1.0.2 validate.io-integer-array: ^1.0.0 checksum: d499ab57dcb48e8d0fd233b99844a06d1cc56115602c920c586e998ebba60293731f5b6976e8a1e83ae6cbfe86716f62d9432e8d94913fed8bd8352f447dc917 languageName: node linkType: hard "concat-map@npm:0.0.1": version: 0.0.1 resolution: "concat-map@npm:0.0.1" checksum: 902a9f5d8967a3e2faf138d5cb784b9979bad2e6db5357c5b21c568df4ebe62bcb15108af1b2253744844eb964fc023fbd9afbbbb6ddd0bcc204c6fb5b7bf3af languageName: node linkType: hard "concat-stream@npm:^2.0.0": version: 2.0.0 resolution: "concat-stream@npm:2.0.0" dependencies: buffer-from: ^1.0.0 inherits: ^2.0.3 readable-stream: ^3.0.2 typedarray: ^0.0.6 checksum: d7f75d48f0ecd356c1545d87e22f57b488172811b1181d96021c7c4b14ab8855f5313280263dca44bb06e5222f274d047da3e290a38841ef87b59719bde967c7 languageName: node linkType: hard "config-chain@npm:^1.1.12": version: 1.1.13 resolution: "config-chain@npm:1.1.13" dependencies: ini: ^1.3.4 proto-list: ~1.2.1 checksum: 828137a28e7c2fc4b7fb229bd0cd6c1397bcf83434de54347e608154008f411749041ee392cbe42fab6307e02de4c12480260bf769b7d44b778fdea3839eafab languageName: node linkType: hard "connect@npm:^3.7.0": version: 3.7.0 resolution: "connect@npm:3.7.0" dependencies: debug: 2.6.9 finalhandler: 1.1.2 parseurl: ~1.3.3 utils-merge: 1.0.1 checksum: 96e1c4effcf219b065c7823e57351c94366d2e2a6952fa95e8212bffb35c86f1d5a3f9f6c5796d4cd3a5fdda628368b1c3cc44bf19c66cfd68fe9f9cab9177e2 languageName: node linkType: hard "console-control-strings@npm:^1.1.0": version: 1.1.0 resolution: "console-control-strings@npm:1.1.0" checksum: 8755d76787f94e6cf79ce4666f0c5519906d7f5b02d4b884cf41e11dcd759ed69c57da0670afd9236d229a46e0f9cf519db0cd829c6dca820bb5a5c3def584ed languageName: node linkType: hard "content-disposition@npm:0.5.4": version: 0.5.4 resolution: "content-disposition@npm:0.5.4" dependencies: safe-buffer: 5.2.1 checksum: afb9d545e296a5171d7574fcad634b2fdf698875f4006a9dd04a3e1333880c5c0c98d47b560d01216fb6505a54a2ba6a843ee3a02ec86d7e911e8315255f56c3 languageName: node linkType: hard "content-type@npm:~1.0.4, content-type@npm:~1.0.5": version: 1.0.5 resolution: "content-type@npm:1.0.5" checksum: 566271e0a251642254cde0f845f9dd4f9856e52d988f4eb0d0dcffbb7a1f8ec98de7a5215fc628f3bce30fe2fb6fd2bc064b562d721658c59b544e2d34ea2766 languageName: node linkType: hard "conventional-changelog-angular@npm:^5.0.12": version: 5.0.13 resolution: "conventional-changelog-angular@npm:5.0.13" dependencies: compare-func: ^2.0.0 q: ^1.5.1 checksum: 6ed4972fce25a50f9f038c749cc9db501363131b0fb2efc1fccecba14e4b1c80651d0d758d4c350a609f32010c66fa343eefd49c02e79e911884be28f53f3f90 languageName: node linkType: hard "conventional-changelog-core@npm:^4.2.4": version: 4.2.4 resolution: "conventional-changelog-core@npm:4.2.4" dependencies: add-stream: ^1.0.0 conventional-changelog-writer: ^5.0.0 conventional-commits-parser: ^3.2.0 dateformat: ^3.0.0 get-pkg-repo: ^4.0.0 git-raw-commits: ^2.0.8 git-remote-origin-url: ^2.0.0 git-semver-tags: ^4.1.1 lodash: ^4.17.15 normalize-package-data: ^3.0.0 q: ^1.5.1 read-pkg: ^3.0.0 read-pkg-up: ^3.0.0 through2: ^4.0.0 checksum: 56d5194040495ea316e53fd64cb3614462c318f0fe54b1bf25aba6fba9b3d51cb9fdf7ac5b766f17e5529a3f90e317257394e00b0a9a5ce42caf3a59f82afb3a languageName: node linkType: hard "conventional-changelog-preset-loader@npm:^2.3.4": version: 2.3.4 resolution: "conventional-changelog-preset-loader@npm:2.3.4" checksum: 23a889b7fcf6fe7653e61f32a048877b2f954dcc1e0daa2848c5422eb908e6f24c78372f8d0d2130b5ed941c02e7010c599dccf44b8552602c6c8db9cb227453 languageName: node linkType: hard "conventional-changelog-writer@npm:^5.0.0": version: 5.0.1 resolution: "conventional-changelog-writer@npm:5.0.1" dependencies: conventional-commits-filter: ^2.0.7 dateformat: ^3.0.0 handlebars: ^4.7.7 json-stringify-safe: ^5.0.1 lodash: ^4.17.15 meow: ^8.0.0 semver: ^6.0.0 split: ^1.0.0 through2: ^4.0.0 bin: conventional-changelog-writer: cli.js checksum: 5c0129db44577f14b1f8de225b62a392a9927ba7fe3422cb21ad71a771b8472bd03badb7c87cb47419913abc3f2ce3759b69f59550cdc6f7a7b0459015b3b44c languageName: node linkType: hard "conventional-commits-filter@npm:^2.0.7": version: 2.0.7 resolution: "conventional-commits-filter@npm:2.0.7" dependencies: lodash.ismatch: ^4.4.0 modify-values: ^1.0.0 checksum: feb567f680a6da1baaa1ef3cff393b3c56a5828f77ab9df5e70626475425d109a6fee0289b4979223c62bbd63bf9c98ef532baa6fcb1b66ee8b5f49077f5d46c languageName: node linkType: hard "conventional-commits-parser@npm:^3.2.0": version: 3.2.4 resolution: "conventional-commits-parser@npm:3.2.4" dependencies: JSONStream: ^1.0.4 is-text-path: ^1.0.1 lodash: ^4.17.15 meow: ^8.0.0 split2: ^3.0.0 through2: ^4.0.0 bin: conventional-commits-parser: cli.js checksum: 1627ff203bc9586d89e47a7fe63acecf339aba74903b9114e23d28094f79d4e2d6389bf146ae561461dcba8fc42e7bc228165d2b173f15756c43f1d32bc50bfd languageName: node linkType: hard "conventional-recommended-bump@npm:^6.1.0": version: 6.1.0 resolution: "conventional-recommended-bump@npm:6.1.0" dependencies: concat-stream: ^2.0.0 conventional-changelog-preset-loader: ^2.3.4 conventional-commits-filter: ^2.0.7 conventional-commits-parser: ^3.2.0 git-raw-commits: ^2.0.8 git-semver-tags: ^4.1.1 meow: ^8.0.0 q: ^1.5.1 bin: conventional-recommended-bump: cli.js checksum: da1d7a5f3b9f7706bede685cdcb3db67997fdaa43c310fd5bf340955c84a4b85dbb9427031522ee06dad290b730a54be987b08629d79c73720dbad3a2531146b languageName: node linkType: hard "convert-source-map@npm:^1.5.0, convert-source-map@npm:^1.7.0": version: 1.9.0 resolution: "convert-source-map@npm:1.9.0" checksum: dc55a1f28ddd0e9485ef13565f8f756b342f9a46c4ae18b843fe3c30c675d058d6a4823eff86d472f187b176f0adf51ea7b69ea38be34be4a63cbbf91b0593c8 languageName: node linkType: hard "cookie-signature@npm:1.0.6": version: 1.0.6 resolution: "cookie-signature@npm:1.0.6" checksum: f4e1b0a98a27a0e6e66fd7ea4e4e9d8e038f624058371bf4499cfcd8f3980be9a121486995202ba3fca74fbed93a407d6d54d43a43f96fd28d0bd7a06761591a languageName: node linkType: hard "cookie@npm:0.5.0": version: 0.5.0 resolution: "cookie@npm:0.5.0" checksum: 1f4bd2ca5765f8c9689a7e8954183f5332139eb72b6ff783d8947032ec1fdf43109852c178e21a953a30c0dd42257828185be01b49d1eb1a67fd054ca588a180 languageName: node linkType: hard "cookie@npm:~0.4.1": version: 0.4.2 resolution: "cookie@npm:0.4.2" checksum: a00833c998bedf8e787b4c342defe5fa419abd96b32f4464f718b91022586b8f1bafbddd499288e75c037642493c83083da426c6a9080d309e3bd90fd11baa9b languageName: node linkType: hard "cookies@npm:0.8.0": version: 0.8.0 resolution: "cookies@npm:0.8.0" dependencies: depd: ~2.0.0 keygrip: ~1.1.0 checksum: 806055a44f128705265b1bc6a853058da18bf80dea3654ad99be20985b1fa1b14f86c1eef73644aab8071241f8a78acd57202b54c4c5c70769fc694fbb9c4edc languageName: node linkType: hard "copy-anything@npm:^2.0.1": version: 2.0.6 resolution: "copy-anything@npm:2.0.6" dependencies: is-what: ^3.14.1 checksum: 7318dc00ca14f846d14fc886845cff63bf20a3c5f4fcdd31f68c40a213648c78a1093426947ac0f8f8577845e9a7a11eeaaeefb05d9a6f1b78ca5ec60c2aaf6e languageName: node linkType: hard "core-js@npm:3.28.0": version: 3.28.0 resolution: "core-js@npm:3.28.0" checksum: 3155fd0ec16d0089106b145e9595280a4ea4bde0d7ff26aa14364cd4f1c203baf6620c3025acd284f363d08b9f21104101692766ca9a36ffeee7307bdf3e1881 languageName: node linkType: hard "core-js@npm:^2.4.0": version: 2.6.12 resolution: "core-js@npm:2.6.12" checksum: 44fa9934a85f8c78d61e0c8b7b22436330471ffe59ec5076fe7f324d6e8cf7f824b14b1c81ca73608b13bdb0fef035bd820989bf059767ad6fa13123bb8bd016 languageName: node linkType: hard "core-util-is@npm:1.0.2": version: 1.0.2 resolution: "core-util-is@npm:1.0.2" checksum: 7a4c925b497a2c91421e25bf76d6d8190f0b2359a9200dbeed136e63b2931d6294d3b1893eda378883ed363cd950f44a12a401384c609839ea616befb7927dab languageName: node linkType: hard "core-util-is@npm:~1.0.0": version: 1.0.3 resolution: "core-util-is@npm:1.0.3" checksum: 9de8597363a8e9b9952491ebe18167e3b36e7707569eed0ebf14f8bba773611376466ae34575bca8cfe3c767890c859c74056084738f09d4e4a6f902b2ad7d99 languageName: node linkType: hard "cors@npm:2.8.5, cors@npm:~2.8.5": version: 2.8.5 resolution: "cors@npm:2.8.5" dependencies: object-assign: ^4 vary: ^1 checksum: ced838404ccd184f61ab4fdc5847035b681c90db7ac17e428f3d81d69e2989d2b680cc254da0e2554f5ed4f8a341820a1ce3d1c16b499f6e2f47a1b9b07b5006 languageName: node linkType: hard "corser@npm:^2.0.1": version: 2.0.1 resolution: "corser@npm:2.0.1" checksum: 9ff6944eda760c8c3118747a636afc3ede53b41e7b9960513a15b88032209a728e630ae4b41e20a941e34da129fe9094d1f5d95123ef64ac2e16cdad8dce9c87 languageName: node linkType: hard "cosmiconfig@npm:^7.0.0": version: 7.1.0 resolution: "cosmiconfig@npm:7.1.0" dependencies: "@types/parse-json": ^4.0.0 import-fresh: ^3.2.1 parse-json: ^5.0.0 path-type: ^4.0.0 yaml: ^1.10.0 checksum: c53bf7befc1591b2651a22414a5e786cd5f2eeaa87f3678a3d49d6069835a9d8d1aef223728e98aa8fec9a95bf831120d245096db12abe019fecb51f5696c96f languageName: node linkType: hard "crelt@npm:^1.0.5": version: 1.0.5 resolution: "crelt@npm:1.0.5" checksum: 04a618c5878e12a14a9a328a49ff6e37bed76abb88b72e661c56b5f161d8a9aca133650da6bcbc5224ad1f7f43a69325627f209e92a21002986d52a8f844b367 languageName: node linkType: hard "cross-spawn@npm:^6.0.5": version: 6.0.5 resolution: "cross-spawn@npm:6.0.5" dependencies: nice-try: ^1.0.4 path-key: ^2.0.1 semver: ^5.5.0 shebang-command: ^1.2.0 which: ^1.2.9 checksum: f893bb0d96cd3d5751d04e67145bdddf25f99449531a72e82dcbbd42796bbc8268c1076c6b3ea51d4d455839902804b94bc45dfb37ecbb32ea8e54a6741c3ab9 languageName: node linkType: hard "cross-spawn@npm:^7.0.0, cross-spawn@npm:^7.0.2, cross-spawn@npm:^7.0.3": version: 7.0.3 resolution: "cross-spawn@npm:7.0.3" dependencies: path-key: ^3.1.0 shebang-command: ^2.0.0 which: ^2.0.1 checksum: 671cc7c7288c3a8406f3c69a3ae2fc85555c04169e9d611def9a675635472614f1c0ed0ef80955d5b6d4e724f6ced67f0ad1bb006c2ea643488fcfef994d7f52 languageName: node linkType: hard "crypto@npm:~1.0.1": version: 1.0.1 resolution: "crypto@npm:1.0.1" checksum: 087fe3165bd94c333a49e6ed66a0193911f63eac38a24f379b3001a5fe260a59c413646e53a0f67875ba13902b2686d81dc703cb2c147a4ec727dcdc04e5645e languageName: node linkType: hard "css-color-function@npm:~1.3.3": version: 1.3.3 resolution: "css-color-function@npm:1.3.3" dependencies: balanced-match: 0.1.0 color: ^0.11.0 debug: ^3.1.0 rgb: ~0.1.0 checksum: 6859f7dd0064fbb53ed32db2db1878abe2e3750945148337703d143a133cb0cb2bc33c5a39cf8f5d29ed5ca8daf3b7a33e6a52a36bdcfd39f91d60f568465a09 languageName: node linkType: hard "css-loader@npm:^6.5.1, css-loader@npm:^6.7.1": version: 6.7.3 resolution: "css-loader@npm:6.7.3" dependencies: icss-utils: ^5.1.0 postcss: ^8.4.19 postcss-modules-extract-imports: ^3.0.0 postcss-modules-local-by-default: ^4.0.0 postcss-modules-scope: ^3.0.0 postcss-modules-values: ^4.0.0 postcss-value-parser: ^4.2.0 semver: ^7.3.8 peerDependencies: webpack: ^5.0.0 checksum: 473cc32b6c837c2848e2051ad1ba331c1457449f47442e75a8c480d9891451434ada241f7e3de2347e57de17fcd84610b3bcfc4a9da41102cdaedd1e17902d31 languageName: node linkType: hard "css-unit-converter@npm:^1.1.1": version: 1.1.2 resolution: "css-unit-converter@npm:1.1.2" checksum: 07888033346a5128f34dbe2f72884c966d24e9f29db24416dcde92860242490617ef9a178ac193a92f730834bbeea026cdc7027701d92ba9bbbe59db7a37eb2a languageName: node linkType: hard "cssesc@npm:^3.0.0": version: 3.0.0 resolution: "cssesc@npm:3.0.0" bin: cssesc: bin/cssesc checksum: f8c4ababffbc5e2ddf2fa9957dda1ee4af6048e22aeda1869d0d00843223c1b13ad3f5d88b51caa46c994225eacb636b764eb807a8883e2fb6f99b4f4e8c48b2 languageName: node linkType: hard "csstype@npm:3.0.10": version: 3.0.10 resolution: "csstype@npm:3.0.10" checksum: 20a8fa324f2b33ddf94aa7507d1b6ab3daa6f3cc308888dc50126585d7952f2471de69b2dbe0635d1fdc31223fef8e070842691877e725caf456e2378685a631 languageName: node linkType: hard "csstype@npm:^3.0.2": version: 3.1.2 resolution: "csstype@npm:3.1.2" checksum: e1a52e6c25c1314d6beef5168da704ab29c5186b877c07d822bd0806717d9a265e8493a2e35ca7e68d0f5d472d43fac1cdce70fd79fd0853dff81f3028d857b5 languageName: node linkType: hard "custom-event@npm:~1.0.0": version: 1.0.1 resolution: "custom-event@npm:1.0.1" checksum: 334f48a6d5fb98df95c5f72cab2729417ffdcc74aebb1d51aa9220391bdee028ec36d9e19976a5a64f536e1e4aceb5bb4f0232d4761acc3e8fd74c54573959bd languageName: node linkType: hard "d3-color@npm:^3.0.1": version: 3.1.0 resolution: "d3-color@npm:3.1.0" checksum: 4931fbfda5d7c4b5cfa283a13c91a954f86e3b69d75ce588d06cde6c3628cebfc3af2069ccf225e982e8987c612aa7948b3932163ce15eb3c11cd7c003f3ee3b languageName: node linkType: hard "d3-format@npm:^3.0.1": version: 3.1.0 resolution: "d3-format@npm:3.1.0" checksum: f345ec3b8ad3cab19bff5dead395bd9f5590628eb97a389b1dd89f0b204c7c4fc1d9520f13231c2c7cf14b7c9a8cf10f8ef15bde2befbab41454a569bd706ca2 languageName: node linkType: hard "dargs@npm:^7.0.0": version: 7.0.0 resolution: "dargs@npm:7.0.0" checksum: b8f1e3cba59c42e1f13a114ad4848c3fc1cf7470f633ee9e9f1043762429bc97d91ae31b826fb135eefde203a3fdb20deb0c0a0222ac29d937b8046085d668d1 languageName: node linkType: hard "dashdash@npm:^1.12.0": version: 1.14.1 resolution: "dashdash@npm:1.14.1" dependencies: assert-plus: ^1.0.0 checksum: 3634c249570f7f34e3d34f866c93f866c5b417f0dd616275decae08147dcdf8fccfaa5947380ccfb0473998ea3a8057c0b4cd90c875740ee685d0624b2983598 languageName: node linkType: hard "data-urls@npm:^2.0.0": version: 2.0.0 resolution: "data-urls@npm:2.0.0" dependencies: abab: ^2.0.3 whatwg-mimetype: ^2.3.0 whatwg-url: ^8.0.0 checksum: 97caf828aac25e25e04ba6869db0f99c75e6859bb5b424ada28d3e7841941ebf08ddff3c1b1bb4585986bd507a5d54c2a716853ea6cb98af877400e637393e71 languageName: node linkType: hard "date-format@npm:^4.0.14": version: 4.0.14 resolution: "date-format@npm:4.0.14" checksum: dfe5139df6af5759b9dd3c007b899b3f60d45a9240ffeee6314ab74e6ab52e9b519a44ccf285888bdd6b626c66ee9b4c8a523075fa1140617b5beb1cbb9b18d1 languageName: node linkType: hard "dateformat@npm:^3.0.0": version: 3.0.3 resolution: "dateformat@npm:3.0.3" checksum: ca4911148abb09887bd9bdcd632c399b06f3ecad709a18eb594d289a1031982f441e08e281db77ffebcb2cbcbfa1ac578a7cbfbf8743f41009aa5adc1846ed34 languageName: node linkType: hard "dayjs@npm:1.11.7": version: 1.11.7 resolution: "dayjs@npm:1.11.7" checksum: 5003a7c1dd9ed51385beb658231c3548700b82d3548c0cfbe549d85f2d08e90e972510282b7506941452c58d32136d6362f009c77ca55381a09c704e9f177ebb languageName: node linkType: hard "debug@npm:2.6.9, debug@npm:^2.6.8": version: 2.6.9 resolution: "debug@npm:2.6.9" dependencies: ms: 2.0.0 checksum: d2f51589ca66df60bf36e1fa6e4386b318c3f1e06772280eea5b1ae9fd3d05e9c2b7fd8a7d862457d00853c75b00451aa2d7459b924629ee385287a650f58fe6 languageName: node linkType: hard "debug@npm:4, debug@npm:4.3.4, debug@npm:^4.1.0, debug@npm:^4.1.1, debug@npm:^4.3.2, debug@npm:^4.3.3, debug@npm:^4.3.4, debug@npm:~4.3.1, debug@npm:~4.3.2": version: 4.3.4 resolution: "debug@npm:4.3.4" dependencies: ms: 2.1.2 peerDependenciesMeta: supports-color: optional: true checksum: 3dbad3f94ea64f34431a9cbf0bafb61853eda57bff2880036153438f50fb5a84f27683ba0d8e5426bf41a8c6ff03879488120cf5b3a761e77953169c0600a708 languageName: node linkType: hard "debug@npm:4.3.3": version: 4.3.3 resolution: "debug@npm:4.3.3" dependencies: ms: 2.1.2 peerDependenciesMeta: supports-color: optional: true checksum: 14472d56fe4a94dbcfaa6dbed2dd3849f1d72ba78104a1a328047bb564643ca49df0224c3a17fa63533fd11dd3d4c8636cd861191232a2c6735af00cc2d4de16 languageName: node linkType: hard "debug@npm:^3.1.0, debug@npm:^3.2.6, debug@npm:^3.2.7": version: 3.2.7 resolution: "debug@npm:3.2.7" dependencies: ms: ^2.1.1 checksum: b3d8c5940799914d30314b7c3304a43305fd0715581a919dacb8b3176d024a782062368405b47491516d2091d6462d4d11f2f4974a405048094f8bfebfa3071c languageName: node linkType: hard "debuglog@npm:^1.0.1": version: 1.0.1 resolution: "debuglog@npm:1.0.1" checksum: 970679f2eb7a73867e04d45b52583e7ec6dee1f33c058e9147702e72a665a9647f9c3d6e7c2f66f6bf18510b23eb5ded1b617e48ac1db23603809c5ddbbb9763 languageName: node linkType: hard "decamelize-keys@npm:^1.1.0": version: 1.1.1 resolution: "decamelize-keys@npm:1.1.1" dependencies: decamelize: ^1.1.0 map-obj: ^1.0.0 checksum: fc645fe20b7bda2680bbf9481a3477257a7f9304b1691036092b97ab04c0ab53e3bf9fcc2d2ae382536568e402ec41fb11e1d4c3836a9abe2d813dd9ef4311e0 languageName: node linkType: hard "decamelize@npm:^1.1.0": version: 1.2.0 resolution: "decamelize@npm:1.2.0" checksum: ad8c51a7e7e0720c70ec2eeb1163b66da03e7616d7b98c9ef43cce2416395e84c1e9548dd94f5f6ffecfee9f8b94251fc57121a8b021f2ff2469b2bae247b8aa languageName: node linkType: hard "decamelize@npm:^4.0.0": version: 4.0.0 resolution: "decamelize@npm:4.0.0" checksum: b7d09b82652c39eead4d6678bb578e3bebd848add894b76d0f6b395bc45b2d692fb88d977e7cfb93c4ed6c119b05a1347cef261174916c2e75c0a8ca57da1809 languageName: node linkType: hard "decompress-response@npm:^6.0.0": version: 6.0.0 resolution: "decompress-response@npm:6.0.0" dependencies: mimic-response: ^3.1.0 checksum: d377cf47e02d805e283866c3f50d3d21578b779731e8c5072d6ce8c13cc31493db1c2f6784da9d1d5250822120cefa44f1deab112d5981015f2e17444b763812 languageName: node linkType: hard "dedent@npm:^0.7.0": version: 0.7.0 resolution: "dedent@npm:0.7.0" checksum: 87de191050d9a40dd70cad01159a0bcf05ecb59750951242070b6abf9569088684880d00ba92a955b4058804f16eeaf91d604f283929b4f614d181cd7ae633d2 languageName: node linkType: hard "deep-eql@npm:^4.1.2": version: 4.1.3 resolution: "deep-eql@npm:4.1.3" dependencies: type-detect: ^4.0.0 checksum: 7f6d30cb41c713973dc07eaadded848b2ab0b835e518a88b91bea72f34e08c4c71d167a722a6f302d3a6108f05afd8e6d7650689a84d5d29ec7fe6220420397f languageName: node linkType: hard "deep-extend@npm:^0.6.0": version: 0.6.0 resolution: "deep-extend@npm:0.6.0" checksum: 7be7e5a8d468d6b10e6a67c3de828f55001b6eb515d014f7aeb9066ce36bd5717161eb47d6a0f7bed8a9083935b465bc163ee2581c8b128d29bf61092fdf57a7 languageName: node linkType: hard "deep-is@npm:^0.1.3": version: 0.1.4 resolution: "deep-is@npm:0.1.4" checksum: edb65dd0d7d1b9c40b2f50219aef30e116cedd6fc79290e740972c132c09106d2e80aa0bc8826673dd5a00222d4179c84b36a790eef63a4c4bca75a37ef90804 languageName: node linkType: hard "deepmerge@npm:^4.2.2": version: 4.3.1 resolution: "deepmerge@npm:4.3.1" checksum: 2024c6a980a1b7128084170c4cf56b0fd58a63f2da1660dcfe977415f27b17dbe5888668b59d0b063753f3220719d5e400b7f113609489c90160bb9a5518d052 languageName: node linkType: hard "defaults@npm:^1.0.3": version: 1.0.4 resolution: "defaults@npm:1.0.4" dependencies: clone: ^1.0.2 checksum: 3a88b7a587fc076b84e60affad8b85245c01f60f38fc1d259e7ac1d89eb9ce6abb19e27215de46b98568dd5bc48471730b327637e6f20b0f1bc85cf00440c80a languageName: node linkType: hard "defer-to-connect@npm:^2.0.0": version: 2.0.1 resolution: "defer-to-connect@npm:2.0.1" checksum: 8a9b50d2f25446c0bfefb55a48e90afd58f85b21bcf78e9207cd7b804354f6409032a1705c2491686e202e64fc05f147aa5aa45f9aa82627563f045937f5791b languageName: node linkType: hard "define-lazy-prop@npm:^2.0.0": version: 2.0.0 resolution: "define-lazy-prop@npm:2.0.0" checksum: 0115fdb065e0490918ba271d7339c42453d209d4cb619dfe635870d906731eff3e1ade8028bb461ea27ce8264ec5e22c6980612d332895977e89c1bbc80fcee2 languageName: node linkType: hard "define-properties@npm:^1.1.3, define-properties@npm:^1.1.4, define-properties@npm:^1.2.0": version: 1.2.0 resolution: "define-properties@npm:1.2.0" dependencies: has-property-descriptors: ^1.0.0 object-keys: ^1.1.1 checksum: e60aee6a19b102df4e2b1f301816804e81ab48bb91f00d0d935f269bf4b3f79c88b39e4f89eaa132890d23267335fd1140dfcd8d5ccd61031a0a2c41a54e33a6 languageName: node linkType: hard "delayed-stream@npm:~1.0.0": version: 1.0.0 resolution: "delayed-stream@npm:1.0.0" checksum: 46fe6e83e2cb1d85ba50bd52803c68be9bd953282fa7096f51fc29edd5d67ff84ff753c51966061e5ba7cb5e47ef6d36a91924eddb7f3f3483b1c560f77a0020 languageName: node linkType: hard "delegates@npm:^1.0.0": version: 1.0.0 resolution: "delegates@npm:1.0.0" checksum: a51744d9b53c164ba9c0492471a1a2ffa0b6727451bdc89e31627fdf4adda9d51277cfcbfb20f0a6f08ccb3c436f341df3e92631a3440226d93a8971724771fd languageName: node linkType: hard "depd@npm:2.0.0, depd@npm:^2.0.0, depd@npm:~2.0.0": version: 2.0.0 resolution: "depd@npm:2.0.0" checksum: abbe19c768c97ee2eed6282d8ce3031126662252c58d711f646921c9623f9052e3e1906443066beec1095832f534e57c523b7333f8e7e0d93051ab6baef5ab3a languageName: node linkType: hard "depd@npm:~1.1.2": version: 1.1.2 resolution: "depd@npm:1.1.2" checksum: 6b406620d269619852885ce15965272b829df6f409724415e0002c8632ab6a8c0a08ec1f0bd2add05dc7bd7507606f7e2cc034fa24224ab829580040b835ecd9 languageName: node linkType: hard "dependency-graph@npm:^0.11.0": version: 0.11.0 resolution: "dependency-graph@npm:0.11.0" checksum: 477204beaa9be69e642bc31ffe7a8c383d0cf48fa27acbc91c5df01431ab913e65c154213d2ef83d034c98d77280743ec85e5da018a97a18dd43d3c0b78b28cd languageName: node linkType: hard "deprecation@npm:^2.0.0, deprecation@npm:^2.3.1": version: 2.3.1 resolution: "deprecation@npm:2.3.1" checksum: f56a05e182c2c195071385455956b0c4106fe14e36245b00c689ceef8e8ab639235176a96977ba7c74afb173317fac2e0ec6ec7a1c6d1e6eaa401c586c714132 languageName: node linkType: hard "destroy@npm:1.2.0": version: 1.2.0 resolution: "destroy@npm:1.2.0" checksum: 0acb300b7478a08b92d810ab229d5afe0d2f4399272045ab22affa0d99dbaf12637659411530a6fcd597a9bdac718fc94373a61a95b4651bbc7b83684a565e38 languageName: node linkType: hard "detect-indent@npm:^4.0.0": version: 4.0.0 resolution: "detect-indent@npm:4.0.0" dependencies: repeating: ^2.0.0 checksum: 328f273915c1610899bc7d4784ce874413d0a698346364cd3ee5d79afba1c5cf4dbc97b85a801e20f4d903c0598bd5096af32b800dfb8696b81464ccb3dfda2c languageName: node linkType: hard "detect-indent@npm:^5.0.0": version: 5.0.0 resolution: "detect-indent@npm:5.0.0" checksum: 61763211daa498e00eec073aba95d544ae5baed19286a0a655697fa4fffc9f4539c8376e2c7df8fa11d6f8eaa16c1e6a689f403ac41ee78a060278cdadefe2ff languageName: node linkType: hard "detect-indent@npm:^6.0.0": version: 6.1.0 resolution: "detect-indent@npm:6.1.0" checksum: ab953a73c72dbd4e8fc68e4ed4bfd92c97eb6c43734af3900add963fd3a9316f3bc0578b018b24198d4c31a358571eff5f0656e81a1f3b9ad5c547d58b2d093d languageName: node linkType: hard "detect-indent@npm:^7.0.1": version: 7.0.1 resolution: "detect-indent@npm:7.0.1" checksum: cbf3f0b1c3c881934ca94428e1179b26ab2a587e0d719031d37a67fb506d49d067de54ff057cb1e772e75975fed5155c01cd4518306fee60988b1486e3fc7768 languageName: node linkType: hard "detect-newline@npm:3.1.0": version: 3.1.0 resolution: "detect-newline@npm:3.1.0" checksum: ae6cd429c41ad01b164c59ea36f264a2c479598e61cba7c99da24175a7ab80ddf066420f2bec9a1c57a6bead411b4655ff15ad7d281c000a89791f48cbe939e7 languageName: node linkType: hard "detect-newline@npm:^4.0.0": version: 4.0.0 resolution: "detect-newline@npm:4.0.0" checksum: 52767347c70f485b2d1db6493dde57b8c3c1f249e24bad7eb7424cc1129200aa7e671902ede18bc94a8b69e10dec91456aab4c7e2478559d9eedb31ef3847f36 languageName: node linkType: hard "dezalgo@npm:^1.0.0": version: 1.0.4 resolution: "dezalgo@npm:1.0.4" dependencies: asap: ^2.0.0 wrappy: 1 checksum: 895389c6aead740d2ab5da4d3466d20fa30f738010a4d3f4dcccc9fc645ca31c9d10b7e1804ae489b1eb02c7986f9f1f34ba132d409b043082a86d9a4e745624 languageName: node linkType: hard "di@npm:^0.0.1": version: 0.0.1 resolution: "di@npm:0.0.1" checksum: 3f09a99534d33e49264585db7f863ea8bc76c25c4d5a60df387c946018ecf1e1516b2c05a2092e5ca51fcdc08cefe609a6adc5253fa831626cb78cad4746505e languageName: node linkType: hard "diff@npm:5.0.0": version: 5.0.0 resolution: "diff@npm:5.0.0" checksum: f19fe29284b633afdb2725c2a8bb7d25761ea54d321d8e67987ac851c5294be4afeab532bd84531e02583a3fe7f4014aa314a3eda84f5590e7a9e6b371ef3b46 languageName: node linkType: hard "diff@npm:^5.0.0": version: 5.1.0 resolution: "diff@npm:5.1.0" checksum: c7bf0df7c9bfbe1cf8a678fd1b2137c4fb11be117a67bc18a0e03ae75105e8533dbfb1cda6b46beb3586ef5aed22143ef9d70713977d5fb1f9114e21455fba90 languageName: node linkType: hard "dir-glob@npm:^3.0.1": version: 3.0.1 resolution: "dir-glob@npm:3.0.1" dependencies: path-type: ^4.0.0 checksum: fa05e18324510d7283f55862f3161c6759a3f2f8dbce491a2fc14c8324c498286c54282c1f0e933cb930da8419b30679389499b919122952a4f8592362ef4615 languageName: node linkType: hard "doctrine@npm:^3.0.0": version: 3.0.0 resolution: "doctrine@npm:3.0.0" dependencies: esutils: ^2.0.2 checksum: fd7673ca77fe26cd5cba38d816bc72d641f500f1f9b25b83e8ce28827fe2da7ad583a8da26ab6af85f834138cf8dae9f69b0cd6ab925f52ddab1754db44d99ce languageName: node linkType: hard "dom-serialize@npm:^2.2.1": version: 2.2.1 resolution: "dom-serialize@npm:2.2.1" dependencies: custom-event: ~1.0.0 ent: ~2.2.0 extend: ^3.0.0 void-elements: ^2.0.0 checksum: 48262e299a694dbfa32905ecceb29b89f2ce59adfc00cb676284f85ee0c8db0225e07961cbf9b06bf309291deebf52c958f855a5b6709d556000acf46d5a46ef languageName: node linkType: hard "dom-serializer@npm:^1.0.1": version: 1.4.1 resolution: "dom-serializer@npm:1.4.1" dependencies: domelementtype: ^2.0.1 domhandler: ^4.2.0 entities: ^2.0.0 checksum: fbb0b01f87a8a2d18e6e5a388ad0f7ec4a5c05c06d219377da1abc7bb0f674d804f4a8a94e3f71ff15f6cb7dcfc75704a54b261db672b9b3ab03da6b758b0b22 languageName: node linkType: hard "dom-serializer@npm:^2.0.0": version: 2.0.0 resolution: "dom-serializer@npm:2.0.0" dependencies: domelementtype: ^2.3.0 domhandler: ^5.0.2 entities: ^4.2.0 checksum: cd1810544fd8cdfbd51fa2c0c1128ec3a13ba92f14e61b7650b5de421b88205fd2e3f0cc6ace82f13334114addb90ed1c2f23074a51770a8e9c1273acbc7f3e6 languageName: node linkType: hard "domelementtype@npm:^2.0.1, domelementtype@npm:^2.2.0, domelementtype@npm:^2.3.0": version: 2.3.0 resolution: "domelementtype@npm:2.3.0" checksum: ee837a318ff702622f383409d1f5b25dd1024b692ef64d3096ff702e26339f8e345820f29a68bcdcea8cfee3531776b3382651232fbeae95612d6f0a75efb4f6 languageName: node linkType: hard "domhandler@npm:^4.0.0, domhandler@npm:^4.2.0": version: 4.3.1 resolution: "domhandler@npm:4.3.1" dependencies: domelementtype: ^2.2.0 checksum: 4c665ceed016e1911bf7d1dadc09dc888090b64dee7851cccd2fcf5442747ec39c647bb1cb8c8919f8bbdd0f0c625a6bafeeed4b2d656bbecdbae893f43ffaaa languageName: node linkType: hard "domhandler@npm:^5.0.2, domhandler@npm:^5.0.3": version: 5.0.3 resolution: "domhandler@npm:5.0.3" dependencies: domelementtype: ^2.3.0 checksum: 0f58f4a6af63e6f3a4320aa446d28b5790a009018707bce2859dcb1d21144c7876482b5188395a188dfa974238c019e0a1e610d2fc269a12b2c192ea2b0b131c languageName: node linkType: hard "domutils@npm:^2.5.2": version: 2.8.0 resolution: "domutils@npm:2.8.0" dependencies: dom-serializer: ^1.0.1 domelementtype: ^2.2.0 domhandler: ^4.2.0 checksum: abf7434315283e9aadc2a24bac0e00eab07ae4313b40cc239f89d84d7315ebdfd2fb1b5bf750a96bc1b4403d7237c7b2ebf60459be394d625ead4ca89b934391 languageName: node linkType: hard "domutils@npm:^3.0.1": version: 3.1.0 resolution: "domutils@npm:3.1.0" dependencies: dom-serializer: ^2.0.0 domelementtype: ^2.3.0 domhandler: ^5.0.3 checksum: e5757456ddd173caa411cfc02c2bb64133c65546d2c4081381a3bafc8a57411a41eed70494551aa58030be9e58574fcc489828bebd673863d39924fb4878f416 languageName: node linkType: hard "dot-prop@npm:^5.1.0": version: 5.3.0 resolution: "dot-prop@npm:5.3.0" dependencies: is-obj: ^2.0.0 checksum: d5775790093c234ef4bfd5fbe40884ff7e6c87573e5339432870616331189f7f5d86575c5b5af2dcf0f61172990f4f734d07844b1f23482fff09e3c4bead05ea languageName: node linkType: hard "dot-prop@npm:^6.0.1": version: 6.0.1 resolution: "dot-prop@npm:6.0.1" dependencies: is-obj: ^2.0.0 checksum: 0f47600a4b93e1dc37261da4e6909652c008832a5d3684b5bf9a9a0d3f4c67ea949a86dceed9b72f5733ed8e8e6383cc5958df3bbd0799ee317fd181f2ece700 languageName: node linkType: hard "dotenv@npm:~10.0.0": version: 10.0.0 resolution: "dotenv@npm:10.0.0" checksum: f412c5fe8c24fbe313d302d2500e247ba8a1946492db405a4de4d30dd0eb186a88a43f13c958c5a7de303938949c4231c56994f97d05c4bc1f22478d631b4005 languageName: node linkType: hard "duplexer@npm:^0.1.1": version: 0.1.2 resolution: "duplexer@npm:0.1.2" checksum: 62ba61a830c56801db28ff6305c7d289b6dc9f859054e8c982abd8ee0b0a14d2e9a8e7d086ffee12e868d43e2bbe8a964be55ddbd8c8957714c87373c7a4f9b0 languageName: node linkType: hard "duplexify@npm:^4.1.2": version: 4.1.2 resolution: "duplexify@npm:4.1.2" dependencies: end-of-stream: ^1.4.1 inherits: ^2.0.3 readable-stream: ^3.1.1 stream-shift: ^1.0.0 checksum: 964376c61c0e92f6ed0694b3ba97c84f199413dc40ab8dfdaef80b7a7f4982fcabf796214e28ed614a5bc1ec45488a29b81e7d46fa3f5ddf65bcb118c20145ad languageName: node linkType: hard "duplicate-package-checker-webpack-plugin@npm:^3.0.0": version: 3.0.0 resolution: "duplicate-package-checker-webpack-plugin@npm:3.0.0" dependencies: chalk: ^2.3.0 find-root: ^1.0.0 lodash: ^4.17.4 semver: ^5.4.1 checksum: d77be45cb72d79a429c64d8f8f7603fea681d182fb795459a3d4afa608faad9a923378a7e80c6855f465263e1983140b6fc3682bd0213228b8cd7906ab4b934d languageName: node linkType: hard "eastasianwidth@npm:^0.2.0": version: 0.2.0 resolution: "eastasianwidth@npm:0.2.0" checksum: 7d00d7cd8e49b9afa762a813faac332dee781932d6f2c848dc348939c4253f1d4564341b7af1d041853bc3f32c2ef141b58e0a4d9862c17a7f08f68df1e0f1ed languageName: node linkType: hard "ecc-jsbn@npm:~0.1.1": version: 0.1.2 resolution: "ecc-jsbn@npm:0.1.2" dependencies: jsbn: ~0.1.0 safer-buffer: ^2.1.0 checksum: 22fef4b6203e5f31d425f5b711eb389e4c6c2723402e389af394f8411b76a488fa414d309d866e2b577ce3e8462d344205545c88a8143cc21752a5172818888a languageName: node linkType: hard "ecdsa-sig-formatter@npm:1.0.11": version: 1.0.11 resolution: "ecdsa-sig-formatter@npm:1.0.11" dependencies: safe-buffer: ^5.0.1 checksum: 207f9ab1c2669b8e65540bce29506134613dd5f122cccf1e6a560f4d63f2732d427d938f8481df175505aad94583bcb32c688737bb39a6df0625f903d6d93c03 languageName: node linkType: hard "ee-first@npm:1.1.1": version: 1.1.1 resolution: "ee-first@npm:1.1.1" checksum: 1b4cac778d64ce3b582a7e26b218afe07e207a0f9bfe13cc7395a6d307849cfe361e65033c3251e00c27dd060cab43014c2d6b2647676135e18b77d2d05b3f4f languageName: node linkType: hard "ejs@npm:^3.1.7": version: 3.1.9 resolution: "ejs@npm:3.1.9" dependencies: jake: ^10.8.5 bin: ejs: bin/cli.js checksum: af6f10eb815885ff8a8cfacc42c6b6cf87daf97a4884f87a30e0c3271fedd85d76a3a297d9c33a70e735b97ee632887f85e32854b9cdd3a2d97edf931519a35f languageName: node linkType: hard "electron-to-chromium@npm:^1.3.30, electron-to-chromium@npm:^1.4.284": version: 1.4.396 resolution: "electron-to-chromium@npm:1.4.396" checksum: 868f49ad1b83774349bc7cc4a9c5ca62692f205ce36d7b23834e0e4e22460227032d555f5bcc00c74d260487eee42b194e58f0fa2c0b87eb3ef0cd6952a08182 languageName: node linkType: hard "emoji-regex@npm:^8.0.0": version: 8.0.0 resolution: "emoji-regex@npm:8.0.0" checksum: d4c5c39d5a9868b5fa152f00cada8a936868fd3367f33f71be515ecee4c803132d11b31a6222b2571b1e5f7e13890156a94880345594d0ce7e3c9895f560f192 languageName: node linkType: hard "emoji-regex@npm:^9.2.2": version: 9.2.2 resolution: "emoji-regex@npm:9.2.2" checksum: 8487182da74aabd810ac6d6f1994111dfc0e331b01271ae01ec1eb0ad7b5ecc2bbbbd2f053c05cb55a1ac30449527d819bbfbf0e3de1023db308cbcb47f86601 languageName: node linkType: hard "emojis-list@npm:^3.0.0": version: 3.0.0 resolution: "emojis-list@npm:3.0.0" checksum: ddaaa02542e1e9436c03970eeed445f4ed29a5337dfba0fe0c38dfdd2af5da2429c2a0821304e8a8d1cadf27fdd5b22ff793571fa803ae16852a6975c65e8e70 languageName: node linkType: hard "encodeurl@npm:~1.0.2": version: 1.0.2 resolution: "encodeurl@npm:1.0.2" checksum: e50e3d508cdd9c4565ba72d2012e65038e5d71bdc9198cb125beb6237b5b1ade6c0d343998da9e170fb2eae52c1bed37d4d6d98a46ea423a0cddbed5ac3f780c languageName: node linkType: hard "encoding@npm:^0.1.13": version: 0.1.13 resolution: "encoding@npm:0.1.13" dependencies: iconv-lite: ^0.6.2 checksum: bb98632f8ffa823996e508ce6a58ffcf5856330fde839ae42c9e1f436cc3b5cc651d4aeae72222916545428e54fd0f6aa8862fd8d25bdbcc4589f1e3f3715e7f languageName: node linkType: hard "end-of-stream@npm:^1.1.0, end-of-stream@npm:^1.4.1": version: 1.4.4 resolution: "end-of-stream@npm:1.4.4" dependencies: once: ^1.4.0 checksum: 530a5a5a1e517e962854a31693dbb5c0b2fc40b46dad2a56a2deec656ca040631124f4795823acc68238147805f8b021abbe221f4afed5ef3c8e8efc2024908b languageName: node linkType: hard "engine.io-parser@npm:~5.0.3": version: 5.0.6 resolution: "engine.io-parser@npm:5.0.6" checksum: e92255b5463593cafe6cdc90577f107b39056c9c9337a8ee3477cb274337da1fe4ff53e9b3ad59d0478878e1d55ab15e973e2a91d0334d25ea99d8d6f8032f26 languageName: node linkType: hard "engine.io@npm:~6.4.1": version: 6.4.2 resolution: "engine.io@npm:6.4.2" dependencies: "@types/cookie": ^0.4.1 "@types/cors": ^2.8.12 "@types/node": ">=10.0.0" accepts: ~1.3.4 base64id: 2.0.0 cookie: ~0.4.1 cors: ~2.8.5 debug: ~4.3.1 engine.io-parser: ~5.0.3 ws: ~8.11.0 checksum: c4ca538c98d251ff00756ed955d924c3fd78e61af0a5825c9fa1d77ebb661ead7971598fb61daf079c2655c7be2d4a26094e446759e3c6786d8ac75ccffe36d5 languageName: node linkType: hard "enhanced-resolve@npm:^5.14.0": version: 5.14.0 resolution: "enhanced-resolve@npm:5.14.0" dependencies: graceful-fs: ^4.2.4 tapable: ^2.2.0 checksum: fff1aaebbf376371e5df4502e111967f6247c37611ad3550e4e7fca657f6dcb29ef7ffe88bf14e5010b78997f1ddd984a8db97af87ee0a5477771398fd326f5b languageName: node linkType: hard "enhanced-resolve@npm:^5.15.0": version: 5.15.0 resolution: "enhanced-resolve@npm:5.15.0" dependencies: graceful-fs: ^4.2.4 tapable: ^2.2.0 checksum: fbd8cdc9263be71cc737aa8a7d6c57b43d6aa38f6cc75dde6fcd3598a130cc465f979d2f4d01bb3bf475acb43817749c79f8eef9be048683602ca91ab52e4f11 languageName: node linkType: hard "enquirer@npm:~2.3.6": version: 2.3.6 resolution: "enquirer@npm:2.3.6" dependencies: ansi-colors: ^4.1.1 checksum: 1c0911e14a6f8d26721c91e01db06092a5f7675159f0261d69c403396a385afd13dd76825e7678f66daffa930cfaa8d45f506fb35f818a2788463d022af1b884 languageName: node linkType: hard "ent@npm:~2.2.0": version: 2.2.0 resolution: "ent@npm:2.2.0" checksum: f588b5707d6fef36011ea10d530645912a69530a1eb0831f8708c498ac028363a7009f45cfadd28ceb4dafd9ac17ec15213f88d09ce239cd033cfe1328dd7d7d languageName: node linkType: hard "entities@npm:^2.0.0": version: 2.2.0 resolution: "entities@npm:2.2.0" checksum: 19010dacaf0912c895ea262b4f6128574f9ccf8d4b3b65c7e8334ad0079b3706376360e28d8843ff50a78aabcb8f08f0a32dbfacdc77e47ed77ca08b713669b3 languageName: node linkType: hard "entities@npm:^4.2.0, entities@npm:^4.4.0": version: 4.5.0 resolution: "entities@npm:4.5.0" checksum: 853f8ebd5b425d350bffa97dd6958143179a5938352ccae092c62d1267c4e392a039be1bae7d51b6e4ffad25f51f9617531fedf5237f15df302ccfb452cbf2d7 languageName: node linkType: hard "env-paths@npm:^2.2.0": version: 2.2.1 resolution: "env-paths@npm:2.2.1" checksum: 65b5df55a8bab92229ab2b40dad3b387fad24613263d103a97f91c9fe43ceb21965cd3392b1ccb5d77088021e525c4e0481adb309625d0cb94ade1d1fb8dc17e languageName: node linkType: hard "envinfo@npm:7.8.1, envinfo@npm:^7.7.3, envinfo@npm:^7.7.4": version: 7.8.1 resolution: "envinfo@npm:7.8.1" bin: envinfo: dist/cli.js checksum: de736c98d6311c78523628ff127af138451b162e57af5293c1b984ca821d0aeb9c849537d2fde0434011bed33f6bca5310ca2aab8a51a3f28fc719e89045d648 languageName: node linkType: hard "err-code@npm:^2.0.2": version: 2.0.3 resolution: "err-code@npm:2.0.3" checksum: 8b7b1be20d2de12d2255c0bc2ca638b7af5171142693299416e6a9339bd7d88fc8d7707d913d78e0993176005405a236b066b45666b27b797252c771156ace54 languageName: node linkType: hard "errno@npm:^0.1.1": version: 0.1.8 resolution: "errno@npm:0.1.8" dependencies: prr: ~1.0.1 bin: errno: cli.js checksum: 1271f7b9fbb3bcbec76ffde932485d1e3561856d21d847ec613a9722ee924cdd4e523a62dc71a44174d91e898fe21fdc8d5b50823f4b5e0ce8c35c8271e6ef4a languageName: node linkType: hard "error-ex@npm:^1.3.1": version: 1.3.2 resolution: "error-ex@npm:1.3.2" dependencies: is-arrayish: ^0.2.1 checksum: c1c2b8b65f9c91b0f9d75f0debaa7ec5b35c266c2cac5de412c1a6de86d4cbae04ae44e510378cb14d032d0645a36925d0186f8bb7367bcc629db256b743a001 languageName: node linkType: hard "es-abstract@npm:^1.19.0, es-abstract@npm:^1.20.4": version: 1.21.2 resolution: "es-abstract@npm:1.21.2" dependencies: array-buffer-byte-length: ^1.0.0 available-typed-arrays: ^1.0.5 call-bind: ^1.0.2 es-set-tostringtag: ^2.0.1 es-to-primitive: ^1.2.1 function.prototype.name: ^1.1.5 get-intrinsic: ^1.2.0 get-symbol-description: ^1.0.0 globalthis: ^1.0.3 gopd: ^1.0.1 has: ^1.0.3 has-property-descriptors: ^1.0.0 has-proto: ^1.0.1 has-symbols: ^1.0.3 internal-slot: ^1.0.5 is-array-buffer: ^3.0.2 is-callable: ^1.2.7 is-negative-zero: ^2.0.2 is-regex: ^1.1.4 is-shared-array-buffer: ^1.0.2 is-string: ^1.0.7 is-typed-array: ^1.1.10 is-weakref: ^1.0.2 object-inspect: ^1.12.3 object-keys: ^1.1.1 object.assign: ^4.1.4 regexp.prototype.flags: ^1.4.3 safe-regex-test: ^1.0.0 string.prototype.trim: ^1.2.7 string.prototype.trimend: ^1.0.6 string.prototype.trimstart: ^1.0.6 typed-array-length: ^1.0.4 unbox-primitive: ^1.0.2 which-typed-array: ^1.1.9 checksum: 037f55ee5e1cdf2e5edbab5524095a4f97144d95b94ea29e3611b77d852fd8c8a40e7ae7101fa6a759a9b9b1405f188c3c70928f2d3cd88d543a07fc0d5ad41a languageName: node linkType: hard "es-module-lexer@npm:^1.2.1": version: 1.2.1 resolution: "es-module-lexer@npm:1.2.1" checksum: c4145b853e1491eaa5d591e4580926d242978c38071ad3d09165c3b6d50314cc0ae3bf6e1dec81a9e53768b9299df2063d2e4a67d7742a5029ddeae6c4fc26f0 languageName: node linkType: hard "es-set-tostringtag@npm:^2.0.1": version: 2.0.1 resolution: "es-set-tostringtag@npm:2.0.1" dependencies: get-intrinsic: ^1.1.3 has: ^1.0.3 has-tostringtag: ^1.0.0 checksum: ec416a12948cefb4b2a5932e62093a7cf36ddc3efd58d6c58ca7ae7064475ace556434b869b0bbeb0c365f1032a8ccd577211101234b69837ad83ad204fff884 languageName: node linkType: hard "es-to-primitive@npm:^1.2.1": version: 1.2.1 resolution: "es-to-primitive@npm:1.2.1" dependencies: is-callable: ^1.1.4 is-date-object: ^1.0.1 is-symbol: ^1.0.2 checksum: 4ead6671a2c1402619bdd77f3503991232ca15e17e46222b0a41a5d81aebc8740a77822f5b3c965008e631153e9ef0580540007744521e72de8e33599fca2eed languageName: node linkType: hard "escalade@npm:^3.1.1": version: 3.1.1 resolution: "escalade@npm:3.1.1" checksum: a3e2a99f07acb74b3ad4989c48ca0c3140f69f923e56d0cba0526240ee470b91010f9d39001f2a4a313841d237ede70a729e92125191ba5d21e74b106800b133 languageName: node linkType: hard "escape-html@npm:~1.0.3": version: 1.0.3 resolution: "escape-html@npm:1.0.3" checksum: 6213ca9ae00d0ab8bccb6d8d4e0a98e76237b2410302cf7df70aaa6591d509a2a37ce8998008cbecae8fc8ffaadf3fb0229535e6a145f3ce0b211d060decbb24 languageName: node linkType: hard "escape-string-regexp@npm:4.0.0, escape-string-regexp@npm:^4.0.0": version: 4.0.0 resolution: "escape-string-regexp@npm:4.0.0" checksum: 98b48897d93060f2322108bf29db0feba7dd774be96cd069458d1453347b25ce8682ecc39859d4bca2203cc0ab19c237bcc71755eff49a0f8d90beadeeba5cc5 languageName: node linkType: hard "escape-string-regexp@npm:^1.0.2, escape-string-regexp@npm:^1.0.5": version: 1.0.5 resolution: "escape-string-regexp@npm:1.0.5" checksum: 6092fda75c63b110c706b6a9bfde8a612ad595b628f0bd2147eea1d3406723020810e591effc7db1da91d80a71a737a313567c5abb3813e8d9c71f4aa595b410 languageName: node linkType: hard "escape-string-regexp@npm:^5.0.0": version: 5.0.0 resolution: "escape-string-regexp@npm:5.0.0" checksum: 20daabe197f3cb198ec28546deebcf24b3dbb1a5a269184381b3116d12f0532e06007f4bc8da25669d6a7f8efb68db0758df4cd981f57bc5b57f521a3e12c59e languageName: node linkType: hard "eslint-config-prettier@npm:^8.3.0, eslint-config-prettier@npm:^8.6.0": version: 8.8.0 resolution: "eslint-config-prettier@npm:8.8.0" peerDependencies: eslint: ">=7.0.0" bin: eslint-config-prettier: bin/cli.js checksum: 1e94c3882c4d5e41e1dcfa2c368dbccbfe3134f6ac7d40101644d3bfbe3eb2f2ffac757f3145910b5eacf20c0e85e02b91293d3126d770cbf3dc390b3564681c languageName: node linkType: hard "eslint-plugin-prettier@npm:^4.0.0, eslint-plugin-prettier@npm:^4.2.1": version: 4.2.1 resolution: "eslint-plugin-prettier@npm:4.2.1" dependencies: prettier-linter-helpers: ^1.0.0 peerDependencies: eslint: ">=7.28.0" prettier: ">=2.0.0" peerDependenciesMeta: eslint-config-prettier: optional: true checksum: b9e839d2334ad8ec7a5589c5cb0f219bded260839a857d7a486997f9870e95106aa59b8756ff3f37202085ebab658de382b0267cae44c3a7f0eb0bcc03a4f6d6 languageName: node linkType: hard "eslint-scope@npm:5.1.1, eslint-scope@npm:^5.1.1": version: 5.1.1 resolution: "eslint-scope@npm:5.1.1" dependencies: esrecurse: ^4.3.0 estraverse: ^4.1.1 checksum: 47e4b6a3f0cc29c7feedee6c67b225a2da7e155802c6ea13bbef4ac6b9e10c66cd2dcb987867ef176292bf4e64eccc680a49e35e9e9c669f4a02bac17e86abdb languageName: node linkType: hard "eslint-scope@npm:^7.2.0": version: 7.2.0 resolution: "eslint-scope@npm:7.2.0" dependencies: esrecurse: ^4.3.0 estraverse: ^5.2.0 checksum: 64591a2d8b244ade9c690b59ef238a11d5c721a98bcee9e9f445454f442d03d3e04eda88e95a4daec558220a99fa384309d9faae3d459bd40e7a81b4063980ae languageName: node linkType: hard "eslint-visitor-keys@npm:^3.3.0, eslint-visitor-keys@npm:^3.4.1": version: 3.4.1 resolution: "eslint-visitor-keys@npm:3.4.1" checksum: f05121d868202736b97de7d750847a328fcfa8593b031c95ea89425333db59676ac087fa905eba438d0a3c5769632f828187e0c1a0d271832a2153c1d3661c2c languageName: node linkType: hard "eslint@npm:^8.32.0, eslint@npm:^8.5.0": version: 8.40.0 resolution: "eslint@npm:8.40.0" dependencies: "@eslint-community/eslint-utils": ^4.2.0 "@eslint-community/regexpp": ^4.4.0 "@eslint/eslintrc": ^2.0.3 "@eslint/js": 8.40.0 "@humanwhocodes/config-array": ^0.11.8 "@humanwhocodes/module-importer": ^1.0.1 "@nodelib/fs.walk": ^1.2.8 ajv: ^6.10.0 chalk: ^4.0.0 cross-spawn: ^7.0.2 debug: ^4.3.2 doctrine: ^3.0.0 escape-string-regexp: ^4.0.0 eslint-scope: ^7.2.0 eslint-visitor-keys: ^3.4.1 espree: ^9.5.2 esquery: ^1.4.2 esutils: ^2.0.2 fast-deep-equal: ^3.1.3 file-entry-cache: ^6.0.1 find-up: ^5.0.0 glob-parent: ^6.0.2 globals: ^13.19.0 grapheme-splitter: ^1.0.4 ignore: ^5.2.0 import-fresh: ^3.0.0 imurmurhash: ^0.1.4 is-glob: ^4.0.0 is-path-inside: ^3.0.3 js-sdsl: ^4.1.4 js-yaml: ^4.1.0 json-stable-stringify-without-jsonify: ^1.0.1 levn: ^0.4.1 lodash.merge: ^4.6.2 minimatch: ^3.1.2 natural-compare: ^1.4.0 optionator: ^0.9.1 strip-ansi: ^6.0.1 strip-json-comments: ^3.1.0 text-table: ^0.2.0 bin: eslint: bin/eslint.js checksum: b79eba37f52f517a420eec99a80ae9f284d2cbe73afc0d4d3d4d5ed1cce0b06f21badc0374bfb7ac239efd2d49a1fd7c6111d6c3d52888521f377ba33de77e61 languageName: node linkType: hard "espree@npm:^9.5.2": version: 9.5.2 resolution: "espree@npm:9.5.2" dependencies: acorn: ^8.8.0 acorn-jsx: ^5.3.2 eslint-visitor-keys: ^3.4.1 checksum: 6506289d6eb26471c0b383ee24fee5c8ae9d61ad540be956b3127be5ce3bf687d2ba6538ee5a86769812c7c552a9d8239e8c4d150f9ea056c6d5cbe8399c03c1 languageName: node linkType: hard "esprima@npm:^4.0.0": version: 4.0.1 resolution: "esprima@npm:4.0.1" bin: esparse: ./bin/esparse.js esvalidate: ./bin/esvalidate.js checksum: b45bc805a613dbea2835278c306b91aff6173c8d034223fa81498c77dcbce3b2931bf6006db816f62eacd9fd4ea975dfd85a5b7f3c6402cfd050d4ca3c13a628 languageName: node linkType: hard "esquery@npm:^1.4.2": version: 1.5.0 resolution: "esquery@npm:1.5.0" dependencies: estraverse: ^5.1.0 checksum: aefb0d2596c230118656cd4ec7532d447333a410a48834d80ea648b1e7b5c9bc9ed8b5e33a89cb04e487b60d622f44cf5713bf4abed7c97343edefdc84a35900 languageName: node linkType: hard "esrecurse@npm:^4.3.0": version: 4.3.0 resolution: "esrecurse@npm:4.3.0" dependencies: estraverse: ^5.2.0 checksum: ebc17b1a33c51cef46fdc28b958994b1dc43cd2e86237515cbc3b4e5d2be6a811b2315d0a1a4d9d340b6d2308b15322f5c8291059521cc5f4802f65e7ec32837 languageName: node linkType: hard "estraverse@npm:^4.1.1": version: 4.3.0 resolution: "estraverse@npm:4.3.0" checksum: a6299491f9940bb246124a8d44b7b7a413a8336f5436f9837aaa9330209bd9ee8af7e91a654a3545aee9c54b3308e78ee360cef1d777d37cfef77d2fa33b5827 languageName: node linkType: hard "estraverse@npm:^5.1.0, estraverse@npm:^5.2.0": version: 5.3.0 resolution: "estraverse@npm:5.3.0" checksum: 072780882dc8416ad144f8fe199628d2b3e7bbc9989d9ed43795d2c90309a2047e6bc5979d7e2322a341163d22cfad9e21f4110597fe487519697389497e4e2b languageName: node linkType: hard "esutils@npm:^2.0.2": version: 2.0.3 resolution: "esutils@npm:2.0.3" checksum: 22b5b08f74737379a840b8ed2036a5fb35826c709ab000683b092d9054e5c2a82c27818f12604bfc2a9a76b90b6834ef081edbc1c7ae30d1627012e067c6ec87 languageName: node linkType: hard "etag@npm:~1.8.1": version: 1.8.1 resolution: "etag@npm:1.8.1" checksum: 571aeb3dbe0f2bbd4e4fadbdb44f325fc75335cd5f6f6b6a091e6a06a9f25ed5392f0863c5442acb0646787446e816f13cbfc6edce5b07658541dff573cab1ff languageName: node linkType: hard "event-target-shim@npm:^5.0.0": version: 5.0.1 resolution: "event-target-shim@npm:5.0.1" checksum: 1ffe3bb22a6d51bdeb6bf6f7cf97d2ff4a74b017ad12284cc9e6a279e727dc30a5de6bb613e5596ff4dc3e517841339ad09a7eec44266eccb1aa201a30448166 languageName: node linkType: hard "eventemitter3@npm:^4.0.0, eventemitter3@npm:^4.0.4": version: 4.0.7 resolution: "eventemitter3@npm:4.0.7" checksum: 1875311c42fcfe9c707b2712c32664a245629b42bb0a5a84439762dd0fd637fc54d078155ea83c2af9e0323c9ac13687e03cfba79b03af9f40c89b4960099374 languageName: node linkType: hard "events@npm:^3.2.0, events@npm:^3.3.0": version: 3.3.0 resolution: "events@npm:3.3.0" checksum: f6f487ad2198aa41d878fa31452f1a3c00958f46e9019286ff4787c84aac329332ab45c9cdc8c445928fc6d7ded294b9e005a7fce9426488518017831b272780 languageName: node linkType: hard "execa@npm:^5.0.0, execa@npm:^5.1.1": version: 5.1.1 resolution: "execa@npm:5.1.1" dependencies: cross-spawn: ^7.0.3 get-stream: ^6.0.0 human-signals: ^2.1.0 is-stream: ^2.0.0 merge-stream: ^2.0.0 npm-run-path: ^4.0.1 onetime: ^5.1.2 signal-exit: ^3.0.3 strip-final-newline: ^2.0.0 checksum: fba9022c8c8c15ed862847e94c252b3d946036d7547af310e344a527e59021fd8b6bb0723883ea87044dc4f0201f949046993124a42ccb0855cae5bf8c786343 languageName: node linkType: hard "expect.js@npm:^0.3.1": version: 0.3.1 resolution: "expect.js@npm:0.3.1" checksum: 3ab9df872129c75e9ae7157f44c9a6468e0e43d636df82585a695d6304ad53004f97e7108ec9d7df06c6193b0e7ea48454a17c8007bb666ff5dd5e7135e0cc54 languageName: node linkType: hard "express-rate-limit@npm:5.5.1": version: 5.5.1 resolution: "express-rate-limit@npm:5.5.1" checksum: 264820bd5fe350794f90497c5bdc7b323eec4394873cd4b9f9d3654b2c47b285e87270a5a11721fb7fb895d56218e9657ea7bb9a544dd43770c6e7beaad217e8 languageName: node linkType: hard "express@npm:4.18.2": version: 4.18.2 resolution: "express@npm:4.18.2" dependencies: accepts: ~1.3.8 array-flatten: 1.1.1 body-parser: 1.20.1 content-disposition: 0.5.4 content-type: ~1.0.4 cookie: 0.5.0 cookie-signature: 1.0.6 debug: 2.6.9 depd: 2.0.0 encodeurl: ~1.0.2 escape-html: ~1.0.3 etag: ~1.8.1 finalhandler: 1.2.0 fresh: 0.5.2 http-errors: 2.0.0 merge-descriptors: 1.0.1 methods: ~1.1.2 on-finished: 2.4.1 parseurl: ~1.3.3 path-to-regexp: 0.1.7 proxy-addr: ~2.0.7 qs: 6.11.0 range-parser: ~1.2.1 safe-buffer: 5.2.1 send: 0.18.0 serve-static: 1.15.0 setprototypeof: 1.2.0 statuses: 2.0.1 type-is: ~1.6.18 utils-merge: 1.0.1 vary: ~1.1.2 checksum: 3c4b9b076879442f6b968fe53d85d9f1eeacbb4f4c41e5f16cc36d77ce39a2b0d81b3f250514982110d815b2f7173f5561367f9110fcc541f9371948e8c8b037 languageName: node linkType: hard "extend@npm:^3.0.0, extend@npm:~3.0.2": version: 3.0.2 resolution: "extend@npm:3.0.2" checksum: a50a8309ca65ea5d426382ff09f33586527882cf532931cb08ca786ea3146c0553310bda688710ff61d7668eba9f96b923fe1420cdf56a2c3eaf30fcab87b515 languageName: node linkType: hard "external-editor@npm:^3.0.3": version: 3.1.0 resolution: "external-editor@npm:3.1.0" dependencies: chardet: ^0.7.0 iconv-lite: ^0.4.24 tmp: ^0.0.33 checksum: 1c2a616a73f1b3435ce04030261bed0e22d4737e14b090bb48e58865da92529c9f2b05b893de650738d55e692d071819b45e1669259b2b354bc3154d27a698c7 languageName: node linkType: hard "extsprintf@npm:1.3.0": version: 1.3.0 resolution: "extsprintf@npm:1.3.0" checksum: cee7a4a1e34cffeeec18559109de92c27517e5641991ec6bab849aa64e3081022903dd53084f2080d0d2530803aa5ee84f1e9de642c365452f9e67be8f958ce2 languageName: node linkType: hard "extsprintf@npm:^1.2.0": version: 1.4.1 resolution: "extsprintf@npm:1.4.1" checksum: a2f29b241914a8d2bad64363de684821b6b1609d06ae68d5b539e4de6b28659715b5bea94a7265201603713b7027d35399d10b0548f09071c5513e65e8323d33 languageName: node linkType: hard "fast-deep-equal@npm:^1.0.0": version: 1.1.0 resolution: "fast-deep-equal@npm:1.1.0" checksum: 69b4c9534d9805f13a341aa72f69641d0b9ae3cc8beb25c64e68a257241c7bb34370266db27ae4fc3c4da0518448c01a5f587a096a211471c86a38facd9a1486 languageName: node linkType: hard "fast-deep-equal@npm:^3.1.1, fast-deep-equal@npm:^3.1.3": version: 3.1.3 resolution: "fast-deep-equal@npm:3.1.3" checksum: e21a9d8d84f53493b6aa15efc9cfd53dd5b714a1f23f67fb5dc8f574af80df889b3bce25dc081887c6d25457cce704e636395333abad896ccdec03abaf1f3f9d languageName: node linkType: hard "fast-diff@npm:^1.1.2": version: 1.2.0 resolution: "fast-diff@npm:1.2.0" checksum: 1b5306eaa9e826564d9e5ffcd6ebd881eb5f770b3f977fcbf38f05c824e42172b53c79920e8429c54eb742ce15a0caf268b0fdd5b38f6de52234c4a8368131ae languageName: node linkType: hard "fast-glob@npm:3.2.7": version: 3.2.7 resolution: "fast-glob@npm:3.2.7" dependencies: "@nodelib/fs.stat": ^2.0.2 "@nodelib/fs.walk": ^1.2.3 glob-parent: ^5.1.2 merge2: ^1.3.0 micromatch: ^4.0.4 checksum: 2f4708ff112d2b451888129fdd9a0938db88b105b0ddfd043c064e3c4d3e20eed8d7c7615f7565fee660db34ddcf08a2db1bf0ab3c00b87608e4719694642d78 languageName: node linkType: hard "fast-glob@npm:^3.0.3, fast-glob@npm:^3.2.11, fast-glob@npm:^3.2.7, fast-glob@npm:^3.2.9": version: 3.2.12 resolution: "fast-glob@npm:3.2.12" dependencies: "@nodelib/fs.stat": ^2.0.2 "@nodelib/fs.walk": ^1.2.3 glob-parent: ^5.1.2 merge2: ^1.3.0 micromatch: ^4.0.4 checksum: 0b1990f6ce831c7e28c4d505edcdaad8e27e88ab9fa65eedadb730438cfc7cde4910d6c975d6b7b8dc8a73da4773702ebcfcd6e3518e73938bb1383badfe01c2 languageName: node linkType: hard "fast-json-stable-stringify@npm:^2.0.0": version: 2.1.0 resolution: "fast-json-stable-stringify@npm:2.1.0" checksum: b191531e36c607977e5b1c47811158733c34ccb3bfde92c44798929e9b4154884378536d26ad90dfecd32e1ffc09c545d23535ad91b3161a27ddbb8ebe0cbecb languageName: node linkType: hard "fast-levenshtein@npm:^2.0.6": version: 2.0.6 resolution: "fast-levenshtein@npm:2.0.6" checksum: 92cfec0a8dfafd9c7a15fba8f2cc29cd0b62b85f056d99ce448bbcd9f708e18ab2764bda4dd5158364f4145a7c72788538994f0d1787b956ef0d1062b0f7c24c languageName: node linkType: hard "fast-redact@npm:^3.0.0": version: 3.2.0 resolution: "fast-redact@npm:3.2.0" checksum: 7305740bbc708b0c5662f46fc30ec910da519275574fea84f6df0bea0cfe6066ddf90c6c4b879642c509e692edf862edd22eaccb2a647db122eebe8259942888 languageName: node linkType: hard "fast-safe-stringify@npm:2.1.1": version: 2.1.1 resolution: "fast-safe-stringify@npm:2.1.1" checksum: a851cbddc451745662f8f00ddb622d6766f9bd97642dabfd9a405fb0d646d69fc0b9a1243cbf67f5f18a39f40f6fa821737651ff1bceeba06c9992ca2dc5bd3d languageName: node linkType: hard "fastest-levenshtein@npm:^1.0.12": version: 1.0.16 resolution: "fastest-levenshtein@npm:1.0.16" checksum: a78d44285c9e2ae2c25f3ef0f8a73f332c1247b7ea7fb4a191e6bb51aa6ee1ef0dfb3ed113616dcdc7023e18e35a8db41f61c8d88988e877cf510df8edafbc71 languageName: node linkType: hard "fastq@npm:^1.6.0": version: 1.15.0 resolution: "fastq@npm:1.15.0" dependencies: reusify: ^1.0.4 checksum: 0170e6bfcd5d57a70412440b8ef600da6de3b2a6c5966aeaf0a852d542daff506a0ee92d6de7679d1de82e644bce69d7a574a6c93f0b03964b5337eed75ada1a languageName: node linkType: hard "figures@npm:3.2.0, figures@npm:^3.0.0": version: 3.2.0 resolution: "figures@npm:3.2.0" dependencies: escape-string-regexp: ^1.0.5 checksum: 85a6ad29e9aca80b49b817e7c89ecc4716ff14e3779d9835af554db91bac41c0f289c418923519392a1e582b4d10482ad282021330cd045bb7b80c84152f2a2b languageName: node linkType: hard "figures@npm:^5.0.0": version: 5.0.0 resolution: "figures@npm:5.0.0" dependencies: escape-string-regexp: ^5.0.0 is-unicode-supported: ^1.2.0 checksum: e6e8b6d1df2f554d4effae4a5ceff5d796f9449f6d4e912d74dab7d5f25916ecda6c305b9084833157d56485a0c78b37164430ddc5675bcee1330e346710669e languageName: node linkType: hard "file-entry-cache@npm:^6.0.1": version: 6.0.1 resolution: "file-entry-cache@npm:6.0.1" dependencies: flat-cache: ^3.0.4 checksum: f49701feaa6314c8127c3c2f6173cfefff17612f5ed2daaafc6da13b5c91fd43e3b2a58fd0d63f9f94478a501b167615931e7200e31485e320f74a33885a9c74 languageName: node linkType: hard "filelist@npm:^1.0.4": version: 1.0.4 resolution: "filelist@npm:1.0.4" dependencies: minimatch: ^5.0.1 checksum: a303573b0821e17f2d5e9783688ab6fbfce5d52aaac842790ae85e704a6f5e4e3538660a63183d6453834dedf1e0f19a9dadcebfa3e926c72397694ea11f5160 languageName: node linkType: hard "fill-range@npm:^7.0.1": version: 7.0.1 resolution: "fill-range@npm:7.0.1" dependencies: to-regex-range: ^5.0.1 checksum: cc283f4e65b504259e64fd969bcf4def4eb08d85565e906b7d36516e87819db52029a76b6363d0f02d0d532f0033c9603b9e2d943d56ee3b0d4f7ad3328ff917 languageName: node linkType: hard "finalhandler@npm:1.1.2": version: 1.1.2 resolution: "finalhandler@npm:1.1.2" dependencies: debug: 2.6.9 encodeurl: ~1.0.2 escape-html: ~1.0.3 on-finished: ~2.3.0 parseurl: ~1.3.3 statuses: ~1.5.0 unpipe: ~1.0.0 checksum: 617880460c5138dd7ccfd555cb5dde4d8f170f4b31b8bd51e4b646bb2946c30f7db716428a1f2882d730d2b72afb47d1f67cc487b874cb15426f95753a88965e languageName: node linkType: hard "finalhandler@npm:1.2.0": version: 1.2.0 resolution: "finalhandler@npm:1.2.0" dependencies: debug: 2.6.9 encodeurl: ~1.0.2 escape-html: ~1.0.3 on-finished: 2.4.1 parseurl: ~1.3.3 statuses: 2.0.1 unpipe: ~1.0.0 checksum: 92effbfd32e22a7dff2994acedbd9bcc3aa646a3e919ea6a53238090e87097f8ef07cced90aa2cc421abdf993aefbdd5b00104d55c7c5479a8d00ed105b45716 languageName: node linkType: hard "find-root@npm:^1.0.0": version: 1.1.0 resolution: "find-root@npm:1.1.0" checksum: b2a59fe4b6c932eef36c45a048ae8f93c85640212ebe8363164814990ee20f154197505965f3f4f102efc33bfb1cbc26fd17c4a2fc739ebc51b886b137cbefaf languageName: node linkType: hard "find-up@npm:5.0.0, find-up@npm:^5.0.0": version: 5.0.0 resolution: "find-up@npm:5.0.0" dependencies: locate-path: ^6.0.0 path-exists: ^4.0.0 checksum: 07955e357348f34660bde7920783204ff5a26ac2cafcaa28bace494027158a97b9f56faaf2d89a6106211a8174db650dd9f503f9c0d526b1202d5554a00b9095 languageName: node linkType: hard "find-up@npm:^2.0.0": version: 2.1.0 resolution: "find-up@npm:2.1.0" dependencies: locate-path: ^2.0.0 checksum: 43284fe4da09f89011f08e3c32cd38401e786b19226ea440b75386c1b12a4cb738c94969808d53a84f564ede22f732c8409e3cfc3f7fb5b5c32378ad0bbf28bd languageName: node linkType: hard "find-up@npm:^4.0.0, find-up@npm:^4.1.0": version: 4.1.0 resolution: "find-up@npm:4.1.0" dependencies: locate-path: ^5.0.0 path-exists: ^4.0.0 checksum: 4c172680e8f8c1f78839486e14a43ef82e9decd0e74145f40707cc42e7420506d5ec92d9a11c22bd2c48fb0c384ea05dd30e10dd152fefeec6f2f75282a8b844 languageName: node linkType: hard "flat-cache@npm:^3.0.4": version: 3.0.4 resolution: "flat-cache@npm:3.0.4" dependencies: flatted: ^3.1.0 rimraf: ^3.0.2 checksum: 4fdd10ecbcbf7d520f9040dd1340eb5dfe951e6f0ecf2252edeec03ee68d989ec8b9a20f4434270e71bcfd57800dc09b3344fca3966b2eb8f613072c7d9a2365 languageName: node linkType: hard "flat@npm:^5.0.2": version: 5.0.2 resolution: "flat@npm:5.0.2" bin: flat: cli.js checksum: 12a1536ac746db74881316a181499a78ef953632ddd28050b7a3a43c62ef5462e3357c8c29d76072bb635f147f7a9a1f0c02efef6b4be28f8db62ceb3d5c7f5d languageName: node linkType: hard "flatted@npm:^3.1.0, flatted@npm:^3.2.7": version: 3.2.7 resolution: "flatted@npm:3.2.7" checksum: 427633049d55bdb80201c68f7eb1cbd533e03eac541f97d3aecab8c5526f12a20ccecaeede08b57503e772c769e7f8680b37e8d482d1e5f8d7e2194687f9ea35 languageName: node linkType: hard "flatten@npm:^1.0.2": version: 1.0.3 resolution: "flatten@npm:1.0.3" checksum: 5c57379816f1692aaa79fbc6390e0a0644e5e8442c5783ed57c6d315468eddbc53a659eaa03c9bb1e771b0f4a9bd8dd8a2620286bf21fd6538a7857321fdfb20 languageName: node linkType: hard "follow-redirects@npm:^1.0.0, follow-redirects@npm:^1.15.0": version: 1.15.2 resolution: "follow-redirects@npm:1.15.2" peerDependenciesMeta: debug: optional: true checksum: faa66059b66358ba65c234c2f2a37fcec029dc22775f35d9ad6abac56003268baf41e55f9ee645957b32c7d9f62baf1f0b906e68267276f54ec4b4c597c2b190 languageName: node linkType: hard "font-awesome@npm:^4.7.0": version: 4.7.0 resolution: "font-awesome@npm:4.7.0" checksum: fa223f6e3b27e97d2d09cdbf0c1363e2ad18d2a685fc045f54e86394db59f7c113482a819de3b6489f42a630a8ec5911b8e65718e45f7cace1c0a1b05d7fce08 languageName: node linkType: hard "for-each@npm:^0.3.3": version: 0.3.3 resolution: "for-each@npm:0.3.3" dependencies: is-callable: ^1.1.3 checksum: 6c48ff2bc63362319c65e2edca4a8e1e3483a2fabc72fbe7feaf8c73db94fc7861bd53bc02c8a66a0c1dd709da6b04eec42e0abdd6b40ce47305ae92a25e5d28 languageName: node linkType: hard "foreground-child@npm:^3.1.0": version: 3.1.1 resolution: "foreground-child@npm:3.1.1" dependencies: cross-spawn: ^7.0.0 signal-exit: ^4.0.1 checksum: 139d270bc82dc9e6f8bc045fe2aae4001dc2472157044fdfad376d0a3457f77857fa883c1c8b21b491c6caade9a926a4bed3d3d2e8d3c9202b151a4cbbd0bcd5 languageName: node linkType: hard "forever-agent@npm:~0.6.1": version: 0.6.1 resolution: "forever-agent@npm:0.6.1" checksum: 766ae6e220f5fe23676bb4c6a99387cec5b7b62ceb99e10923376e27bfea72f3c3aeec2ba5f45f3f7ba65d6616965aa7c20b15002b6860833bb6e394dea546a8 languageName: node linkType: hard "form-data@npm:^4.0.0": version: 4.0.0 resolution: "form-data@npm:4.0.0" dependencies: asynckit: ^0.4.0 combined-stream: ^1.0.8 mime-types: ^2.1.12 checksum: 01135bf8675f9d5c61ff18e2e2932f719ca4de964e3be90ef4c36aacfc7b9cb2fceb5eca0b7e0190e3383fe51c5b37f4cb80b62ca06a99aaabfcfd6ac7c9328c languageName: node linkType: hard "form-data@npm:~2.3.2": version: 2.3.3 resolution: "form-data@npm:2.3.3" dependencies: asynckit: ^0.4.0 combined-stream: ^1.0.6 mime-types: ^2.1.12 checksum: 10c1780fa13dbe1ff3100114c2ce1f9307f8be10b14bf16e103815356ff567b6be39d70fc4a40f8990b9660012dc24b0f5e1dde1b6426166eb23a445ba068ca3 languageName: node linkType: hard "forwarded@npm:0.2.0": version: 0.2.0 resolution: "forwarded@npm:0.2.0" checksum: fd27e2394d8887ebd16a66ffc889dc983fbbd797d5d3f01087c020283c0f019a7d05ee85669383d8e0d216b116d720fc0cef2f6e9b7eb9f4c90c6e0bc7fd28e6 languageName: node linkType: hard "free-style@npm:3.1.0": version: 3.1.0 resolution: "free-style@npm:3.1.0" checksum: 949258ae315deda48cac93ecd5f9a80f36e8a027e19ce2103598dc8d5ab60e963bbad5444b2a4990ddb746798dd188896f430285cf484afbf2141f7d75a191d8 languageName: node linkType: hard "fresh@npm:0.5.2": version: 0.5.2 resolution: "fresh@npm:0.5.2" checksum: 13ea8b08f91e669a64e3ba3a20eb79d7ca5379a81f1ff7f4310d54e2320645503cc0c78daedc93dfb6191287295f6479544a649c64d8e41a1c0fb0c221552346 languageName: node linkType: hard "fs-constants@npm:^1.0.0": version: 1.0.0 resolution: "fs-constants@npm:1.0.0" checksum: 18f5b718371816155849475ac36c7d0b24d39a11d91348cfcb308b4494824413e03572c403c86d3a260e049465518c4f0d5bd00f0371cdfcad6d4f30a85b350d languageName: node linkType: hard "fs-extra@npm:^10.0.0, fs-extra@npm:^10.1.0": version: 10.1.0 resolution: "fs-extra@npm:10.1.0" dependencies: graceful-fs: ^4.2.0 jsonfile: ^6.0.1 universalify: ^2.0.0 checksum: dc94ab37096f813cc3ca12f0f1b5ad6744dfed9ed21e953d72530d103cea193c2f81584a39e9dee1bea36de5ee66805678c0dddc048e8af1427ac19c00fffc50 languageName: node linkType: hard "fs-extra@npm:^11.1.0": version: 11.1.1 resolution: "fs-extra@npm:11.1.1" dependencies: graceful-fs: ^4.2.0 jsonfile: ^6.0.1 universalify: ^2.0.0 checksum: fb883c68245b2d777fbc1f2082c9efb084eaa2bbf9fddaa366130d196c03608eebef7fb490541276429ee1ca99f317e2d73e96f5ca0999eefedf5a624ae1edfd languageName: node linkType: hard "fs-extra@npm:^8.1.0": version: 8.1.0 resolution: "fs-extra@npm:8.1.0" dependencies: graceful-fs: ^4.2.0 jsonfile: ^4.0.0 universalify: ^0.1.0 checksum: bf44f0e6cea59d5ce071bba4c43ca76d216f89e402dc6285c128abc0902e9b8525135aa808adad72c9d5d218e9f4bcc63962815529ff2f684ad532172a284880 languageName: node linkType: hard "fs-extra@npm:^9.1.0": version: 9.1.0 resolution: "fs-extra@npm:9.1.0" dependencies: at-least-node: ^1.0.0 graceful-fs: ^4.2.0 jsonfile: ^6.0.1 universalify: ^2.0.0 checksum: ba71ba32e0faa74ab931b7a0031d1523c66a73e225de7426e275e238e312d07313d2da2d33e34a52aa406c8763ade5712eb3ec9ba4d9edce652bcacdc29e6b20 languageName: node linkType: hard "fs-minipass@npm:^2.0.0, fs-minipass@npm:^2.1.0": version: 2.1.0 resolution: "fs-minipass@npm:2.1.0" dependencies: minipass: ^3.0.0 checksum: 1b8d128dae2ac6cc94230cc5ead341ba3e0efaef82dab46a33d171c044caaa6ca001364178d42069b2809c35a1c3c35079a32107c770e9ffab3901b59af8c8b1 languageName: node linkType: hard "fs.realpath@npm:^1.0.0": version: 1.0.0 resolution: "fs.realpath@npm:1.0.0" checksum: 99ddea01a7e75aa276c250a04eedeffe5662bce66c65c07164ad6264f9de18fb21be9433ead460e54cff20e31721c811f4fb5d70591799df5f85dce6d6746fd0 languageName: node linkType: hard "fsevents@npm:~2.3.2": version: 2.3.2 resolution: "fsevents@npm:2.3.2" dependencies: node-gyp: latest checksum: 97ade64e75091afee5265e6956cb72ba34db7819b4c3e94c431d4be2b19b8bb7a2d4116da417950c3425f17c8fe693d25e20212cac583ac1521ad066b77ae31f conditions: os=darwin languageName: node linkType: hard "fsevents@patch:fsevents@~2.3.2#~builtin": version: 2.3.2 resolution: "fsevents@patch:fsevents@npm%3A2.3.2#~builtin::version=2.3.2&hash=df0bf1" dependencies: node-gyp: latest conditions: os=darwin languageName: node linkType: hard "function-bind@npm:^1.1.1": version: 1.1.1 resolution: "function-bind@npm:1.1.1" checksum: b32fbaebb3f8ec4969f033073b43f5c8befbb58f1a79e12f1d7490358150359ebd92f49e72ff0144f65f2c48ea2a605bff2d07965f548f6474fd8efd95bf361a languageName: node linkType: hard "function.prototype.name@npm:^1.1.5": version: 1.1.5 resolution: "function.prototype.name@npm:1.1.5" dependencies: call-bind: ^1.0.2 define-properties: ^1.1.3 es-abstract: ^1.19.0 functions-have-names: ^1.2.2 checksum: acd21d733a9b649c2c442f067567743214af5fa248dbeee69d8278ce7df3329ea5abac572be9f7470b4ec1cd4d8f1040e3c5caccf98ebf2bf861a0deab735c27 languageName: node linkType: hard "functions-have-names@npm:^1.2.2, functions-have-names@npm:^1.2.3": version: 1.2.3 resolution: "functions-have-names@npm:1.2.3" checksum: c3f1f5ba20f4e962efb71344ce0a40722163e85bee2101ce25f88214e78182d2d2476aa85ef37950c579eb6cf6ee811c17b3101bb84004bb75655f3e33f3fdb5 languageName: node linkType: hard "gauge@npm:^4.0.3": version: 4.0.4 resolution: "gauge@npm:4.0.4" dependencies: aproba: ^1.0.3 || ^2.0.0 color-support: ^1.1.3 console-control-strings: ^1.1.0 has-unicode: ^2.0.1 signal-exit: ^3.0.7 string-width: ^4.2.3 strip-ansi: ^6.0.1 wide-align: ^1.1.5 checksum: 788b6bfe52f1dd8e263cda800c26ac0ca2ff6de0b6eee2fe0d9e3abf15e149b651bd27bf5226be10e6e3edb5c4e5d5985a5a1a98137e7a892f75eff76467ad2d languageName: node linkType: hard "gensync@npm:^1.0.0-beta.2": version: 1.0.0-beta.2 resolution: "gensync@npm:1.0.0-beta.2" checksum: a7437e58c6be12aa6c90f7730eac7fa9833dc78872b4ad2963d2031b00a3367a93f98aec75f9aaac7220848e4026d67a8655e870b24f20a543d103c0d65952ec languageName: node linkType: hard "get-caller-file@npm:^2.0.5": version: 2.0.5 resolution: "get-caller-file@npm:2.0.5" checksum: b9769a836d2a98c3ee734a88ba712e62703f1df31b94b784762c433c27a386dd6029ff55c2a920c392e33657d80191edbf18c61487e198844844516f843496b9 languageName: node linkType: hard "get-func-name@npm:^2.0.0": version: 2.0.0 resolution: "get-func-name@npm:2.0.0" checksum: 8d82e69f3e7fab9e27c547945dfe5cc0c57fc0adf08ce135dddb01081d75684a03e7a0487466f478872b341d52ac763ae49e660d01ab83741f74932085f693c3 languageName: node linkType: hard "get-intrinsic@npm:^1.0.2, get-intrinsic@npm:^1.1.1, get-intrinsic@npm:^1.1.3, get-intrinsic@npm:^1.2.0": version: 1.2.1 resolution: "get-intrinsic@npm:1.2.1" dependencies: function-bind: ^1.1.1 has: ^1.0.3 has-proto: ^1.0.1 has-symbols: ^1.0.3 checksum: 5b61d88552c24b0cf6fa2d1b3bc5459d7306f699de060d76442cce49a4721f52b8c560a33ab392cf5575b7810277d54ded9d4d39a1ea61855619ebc005aa7e5f languageName: node linkType: hard "get-pkg-repo@npm:^4.0.0": version: 4.2.1 resolution: "get-pkg-repo@npm:4.2.1" dependencies: "@hutson/parse-repository-url": ^3.0.0 hosted-git-info: ^4.0.0 through2: ^2.0.0 yargs: ^16.2.0 bin: get-pkg-repo: src/cli.js checksum: 5abf169137665e45b09a857b33ad2fdcf2f4a09f0ecbd0ebdd789a7ce78c39186a21f58621127eb724d2d4a3a7ee8e6bd4ac7715efda01ad5200665afc218e0d languageName: node linkType: hard "get-port@npm:^5.1.1": version: 5.1.1 resolution: "get-port@npm:5.1.1" checksum: 0162663ffe5c09e748cd79d97b74cd70e5a5c84b760a475ce5767b357fb2a57cb821cee412d646aa8a156ed39b78aab88974eddaa9e5ee926173c036c0713787 languageName: node linkType: hard "get-stdin@npm:^9.0.0": version: 9.0.0 resolution: "get-stdin@npm:9.0.0" checksum: 5972bc34d05932b45512c8e2d67b040f1c1ca8afb95c56cbc480985f2d761b7e37fe90dc8abd22527f062cc5639a6930ff346e9952ae4c11a2d4275869459594 languageName: node linkType: hard "get-stream@npm:^5.1.0": version: 5.2.0 resolution: "get-stream@npm:5.2.0" dependencies: pump: ^3.0.0 checksum: 8bc1a23174a06b2b4ce600df38d6c98d2ef6d84e020c1ddad632ad75bac4e092eeb40e4c09e0761c35fc2dbc5e7fff5dab5e763a383582c4a167dd69a905bd12 languageName: node linkType: hard "get-stream@npm:^6.0.0": version: 6.0.1 resolution: "get-stream@npm:6.0.1" checksum: e04ecece32c92eebf5b8c940f51468cd53554dcbb0ea725b2748be583c9523d00128137966afce410b9b051eb2ef16d657cd2b120ca8edafcf5a65e81af63cad languageName: node linkType: hard "get-symbol-description@npm:^1.0.0": version: 1.0.0 resolution: "get-symbol-description@npm:1.0.0" dependencies: call-bind: ^1.0.2 get-intrinsic: ^1.1.1 checksum: 9ceff8fe968f9270a37a1f73bf3f1f7bda69ca80f4f80850670e0e7b9444ff99323f7ac52f96567f8b5f5fbe7ac717a0d81d3407c7313e82810c6199446a5247 languageName: node linkType: hard "getpass@npm:^0.1.1": version: 0.1.7 resolution: "getpass@npm:0.1.7" dependencies: assert-plus: ^1.0.0 checksum: ab18d55661db264e3eac6012c2d3daeafaab7a501c035ae0ccb193c3c23e9849c6e29b6ac762b9c2adae460266f925d55a3a2a3a3c8b94be2f222df94d70c046 languageName: node linkType: hard "git-hooks-list@npm:1.0.3": version: 1.0.3 resolution: "git-hooks-list@npm:1.0.3" checksum: a1dd03d39c1d727ba08a35dbdbdcc6e96de8c4170c942dc95bf787ca6e34998d39fb5295a00242b58a3d265de0b69a0686d0cf583baa6b7830f268542c4576b9 languageName: node linkType: hard "git-hooks-list@npm:^3.0.0": version: 3.1.0 resolution: "git-hooks-list@npm:3.1.0" checksum: 05cbdb29e1e14f3b6fde78c876a34383e4476b1be32e8486ad03293f01add884c1a8df8c2dce2ca5d99119c94951b2ff9fa9cbd51d834ae6477b6813cefb998f languageName: node linkType: hard "git-raw-commits@npm:^2.0.8": version: 2.0.11 resolution: "git-raw-commits@npm:2.0.11" dependencies: dargs: ^7.0.0 lodash: ^4.17.15 meow: ^8.0.0 split2: ^3.0.0 through2: ^4.0.0 bin: git-raw-commits: cli.js checksum: c178af43633684106179793b6e3473e1d2bb50bb41d04e2e285ea4eef342ca4090fee6bc8a737552fde879d22346c90de5c49f18c719a0f38d4c934f258a0f79 languageName: node linkType: hard "git-remote-origin-url@npm:^2.0.0": version: 2.0.0 resolution: "git-remote-origin-url@npm:2.0.0" dependencies: gitconfiglocal: ^1.0.0 pify: ^2.3.0 checksum: 85263a09c044b5f4fe2acc45cbb3c5331ab2bd4484bb53dfe7f3dd593a4bf90a9786a2e00b9884524331f50b3da18e8c924f01c2944087fc7f342282c4437b73 languageName: node linkType: hard "git-semver-tags@npm:^4.1.1": version: 4.1.1 resolution: "git-semver-tags@npm:4.1.1" dependencies: meow: ^8.0.0 semver: ^6.0.0 bin: git-semver-tags: cli.js checksum: e16d02a515c0f88289a28b5bf59bf42c0dc053765922d3b617ae4b50546bd4f74a25bf3ad53b91cb6c1159319a2e92533b160c573b856c2629125c8b26b3b0e3 languageName: node linkType: hard "git-up@npm:^7.0.0": version: 7.0.0 resolution: "git-up@npm:7.0.0" dependencies: is-ssh: ^1.4.0 parse-url: ^8.1.0 checksum: 2faadbab51e94d2ffb220e426e950087cc02c15d664e673bd5d1f734cfa8196fed8b19493f7bf28fe216d087d10e22a7fd9b63687e0ba7d24f0ddcfb0a266d6e languageName: node linkType: hard "git-url-parse@npm:^13.1.0": version: 13.1.0 resolution: "git-url-parse@npm:13.1.0" dependencies: git-up: ^7.0.0 checksum: 212a9b0343e9199998b6a532efe2014476a7a1283af393663ca49ac28d4768929aad16d3322e2685236065ee394dbc93e7aa63a48956531e984c56d8b5edb54d languageName: node linkType: hard "gitconfiglocal@npm:^1.0.0": version: 1.0.0 resolution: "gitconfiglocal@npm:1.0.0" dependencies: ini: ^1.3.2 checksum: e6d2764c15bbab6d1d1000d1181bb907f6b3796bb04f63614dba571b18369e0ecb1beaf27ce8da5b24307ef607e3a5f262a67cb9575510b9446aac697d421beb languageName: node linkType: hard "glob-parent@npm:^5.1.1, glob-parent@npm:^5.1.2, glob-parent@npm:~5.1.2": version: 5.1.2 resolution: "glob-parent@npm:5.1.2" dependencies: is-glob: ^4.0.1 checksum: f4f2bfe2425296e8a47e36864e4f42be38a996db40420fe434565e4480e3322f18eb37589617a98640c5dc8fdec1a387007ee18dbb1f3f5553409c34d17f425e languageName: node linkType: hard "glob-parent@npm:^6.0.2": version: 6.0.2 resolution: "glob-parent@npm:6.0.2" dependencies: is-glob: ^4.0.3 checksum: c13ee97978bef4f55106b71e66428eb1512e71a7466ba49025fc2aec59a5bfb0954d5abd58fc5ee6c9b076eef4e1f6d3375c2e964b88466ca390da4419a786a8 languageName: node linkType: hard "glob-to-regexp@npm:^0.4.1": version: 0.4.1 resolution: "glob-to-regexp@npm:0.4.1" checksum: e795f4e8f06d2a15e86f76e4d92751cf8bbfcf0157cea5c2f0f35678a8195a750b34096b1256e436f0cebc1883b5ff0888c47348443e69546a5a87f9e1eb1167 languageName: node linkType: hard "glob@npm:7.1.4": version: 7.1.4 resolution: "glob@npm:7.1.4" dependencies: fs.realpath: ^1.0.0 inflight: ^1.0.4 inherits: 2 minimatch: ^3.0.4 once: ^1.3.0 path-is-absolute: ^1.0.0 checksum: f52480fc82b1e66e52990f0f2e7306447d12294c83fbbee0395e761ad1178172012a7cc0673dbf4810baac400fc09bf34484c08b5778c216403fd823db281716 languageName: node linkType: hard "glob@npm:7.2.0": version: 7.2.0 resolution: "glob@npm:7.2.0" dependencies: fs.realpath: ^1.0.0 inflight: ^1.0.4 inherits: 2 minimatch: ^3.0.4 once: ^1.3.0 path-is-absolute: ^1.0.0 checksum: 78a8ea942331f08ed2e055cb5b9e40fe6f46f579d7fd3d694f3412fe5db23223d29b7fee1575440202e9a7ff9a72ab106a39fee39934c7bedafe5e5f8ae20134 languageName: node linkType: hard "glob@npm:^10.2.4": version: 10.2.4 resolution: "glob@npm:10.2.4" dependencies: foreground-child: ^3.1.0 jackspeak: ^2.0.3 minimatch: ^9.0.0 minipass: ^5.0.0 || ^6.0.0 path-scurry: ^1.7.0 bin: glob: dist/cjs/src/bin.js checksum: 29845faaa1a8bd2d1f2f26e0c4e5040898c7b4ccfb42e0a558319f6229d124dbc7ccf0ff214402505c5b62c1a39d9d2a1de9c582a74ad415591b96fa53cef466 languageName: node linkType: hard "glob@npm:^10.2.5": version: 10.3.1 resolution: "glob@npm:10.3.1" dependencies: foreground-child: ^3.1.0 jackspeak: ^2.0.3 minimatch: ^9.0.1 minipass: ^5.0.0 || ^6.0.2 path-scurry: ^1.10.0 bin: glob: dist/cjs/src/bin.js checksum: 19c8c2805658b1002fecf0722cd609a33153d756a0d5260676bd0e9c5e6ef889ec9cce6d3dac0411aa90bce8de3d14f25b6f5589a3292582cccbfeddd0e98cc4 languageName: node linkType: hard "glob@npm:^6.0.1": version: 6.0.4 resolution: "glob@npm:6.0.4" dependencies: inflight: ^1.0.4 inherits: 2 minimatch: 2 || 3 once: ^1.3.0 path-is-absolute: ^1.0.0 checksum: c4946c3d015ac81f704d185f2b3a55eb670100693c2cf7bc833d0efd970ec727d860d4839a5178e46a7e594b34a34661bae2f4c3405727c9fd189f84954ca3c0 languageName: node linkType: hard "glob@npm:^7.1.3, glob@npm:^7.1.4, glob@npm:^7.1.7": version: 7.2.3 resolution: "glob@npm:7.2.3" dependencies: fs.realpath: ^1.0.0 inflight: ^1.0.4 inherits: 2 minimatch: ^3.1.1 once: ^1.3.0 path-is-absolute: ^1.0.0 checksum: 29452e97b38fa704dabb1d1045350fb2467cf0277e155aa9ff7077e90ad81d1ea9d53d3ee63bd37c05b09a065e90f16aec4a65f5b8de401d1dac40bc5605d133 languageName: node linkType: hard "glob@npm:^8.0.1": version: 8.1.0 resolution: "glob@npm:8.1.0" dependencies: fs.realpath: ^1.0.0 inflight: ^1.0.4 inherits: 2 minimatch: ^5.0.1 once: ^1.3.0 checksum: 92fbea3221a7d12075f26f0227abac435de868dd0736a17170663783296d0dd8d3d532a5672b4488a439bf5d7fb85cdd07c11185d6cd39184f0385cbdfb86a47 languageName: node linkType: hard "glob@npm:~7.1.6": version: 7.1.7 resolution: "glob@npm:7.1.7" dependencies: fs.realpath: ^1.0.0 inflight: ^1.0.4 inherits: 2 minimatch: ^3.0.4 once: ^1.3.0 path-is-absolute: ^1.0.0 checksum: b61f48973bbdcf5159997b0874a2165db572b368b931135832599875919c237fc05c12984e38fe828e69aa8a921eb0e8a4997266211c517c9cfaae8a93988bb8 languageName: node linkType: hard "globals@npm:^11.1.0": version: 11.12.0 resolution: "globals@npm:11.12.0" checksum: 67051a45eca3db904aee189dfc7cd53c20c7d881679c93f6146ddd4c9f4ab2268e68a919df740d39c71f4445d2b38ee360fc234428baea1dbdfe68bbcb46979e languageName: node linkType: hard "globals@npm:^13.19.0": version: 13.20.0 resolution: "globals@npm:13.20.0" dependencies: type-fest: ^0.20.2 checksum: ad1ecf914bd051325faad281d02ea2c0b1df5d01bd94d368dcc5513340eac41d14b3c61af325768e3c7f8d44576e72780ec0b6f2d366121f8eec6e03c3a3b97a languageName: node linkType: hard "globals@npm:^9.18.0": version: 9.18.0 resolution: "globals@npm:9.18.0" checksum: e9c066aecfdc5ea6f727344a4246ecc243aaf66ede3bffee10ddc0c73351794c25e727dd046090dcecd821199a63b9de6af299a6e3ba292c8b22f0a80ea32073 languageName: node linkType: hard "globalthis@npm:^1.0.3": version: 1.0.3 resolution: "globalthis@npm:1.0.3" dependencies: define-properties: ^1.1.3 checksum: fbd7d760dc464c886d0196166d92e5ffb4c84d0730846d6621a39fbbc068aeeb9c8d1421ad330e94b7bca4bb4ea092f5f21f3d36077812af5d098b4dc006c998 languageName: node linkType: hard "globby@npm:10.0.0": version: 10.0.0 resolution: "globby@npm:10.0.0" dependencies: "@types/glob": ^7.1.1 array-union: ^2.1.0 dir-glob: ^3.0.1 fast-glob: ^3.0.3 glob: ^7.1.3 ignore: ^5.1.1 merge2: ^1.2.3 slash: ^3.0.0 checksum: fbff58d2fcaedd9207901f6e3b5341ff885b6d499c3a095f7befde0fd03ec1ea634452a82f81e894e46f6a5d704da44b842ba93066f90dced52adf84d4b8d1cc languageName: node linkType: hard "globby@npm:^11.0.2, globby@npm:^11.1.0": version: 11.1.0 resolution: "globby@npm:11.1.0" dependencies: array-union: ^2.1.0 dir-glob: ^3.0.1 fast-glob: ^3.2.9 ignore: ^5.2.0 merge2: ^1.4.1 slash: ^3.0.0 checksum: b4be8885e0cfa018fc783792942d53926c35c50b3aefd3fdcfb9d22c627639dc26bd2327a40a0b74b074100ce95bb7187bfeae2f236856aa3de183af7a02aea6 languageName: node linkType: hard "globby@npm:^12.0.0": version: 12.2.0 resolution: "globby@npm:12.2.0" dependencies: array-union: ^3.0.1 dir-glob: ^3.0.1 fast-glob: ^3.2.7 ignore: ^5.1.9 merge2: ^1.4.1 slash: ^4.0.0 checksum: 2539379a7fff3473d3e7c68b4540ba38f36970f43f760e36e301515d5cb98a0c5736554957d90390906bee632327beb2f9518d1acd6911f61e436db11b0da5b5 languageName: node linkType: hard "globby@npm:^13.1.2": version: 13.1.4 resolution: "globby@npm:13.1.4" dependencies: dir-glob: ^3.0.1 fast-glob: ^3.2.11 ignore: ^5.2.0 merge2: ^1.4.1 slash: ^4.0.0 checksum: e8bc13879972082d590cd1b0e27080d90d2e12fff7eeb2cee9329c29115ace14cc5b9f899e3d6beb136ba826307a727016658919a6f383e1511d698acee81741 languageName: node linkType: hard "gopd@npm:^1.0.1": version: 1.0.1 resolution: "gopd@npm:1.0.1" dependencies: get-intrinsic: ^1.1.3 checksum: a5ccfb8806e0917a94e0b3de2af2ea4979c1da920bc381667c260e00e7cafdbe844e2cb9c5bcfef4e5412e8bf73bab837285bc35c7ba73aaaf0134d4583393a6 languageName: node linkType: hard "got@npm:^11.8.2": version: 11.8.6 resolution: "got@npm:11.8.6" dependencies: "@sindresorhus/is": ^4.0.0 "@szmarczak/http-timer": ^4.0.5 "@types/cacheable-request": ^6.0.1 "@types/responselike": ^1.0.0 cacheable-lookup: ^5.0.3 cacheable-request: ^7.0.2 decompress-response: ^6.0.0 http2-wrapper: ^1.0.0-beta.5.2 lowercase-keys: ^2.0.0 p-cancelable: ^2.0.0 responselike: ^2.0.0 checksum: bbc783578a8d5030c8164ef7f57ce41b5ad7db2ed13371e1944bef157eeca5a7475530e07c0aaa71610d7085474d0d96222c9f4268d41db333a17e39b463f45d languageName: node linkType: hard "graceful-fs@npm:^4.1.11, graceful-fs@npm:^4.1.15, graceful-fs@npm:^4.1.2, graceful-fs@npm:^4.1.3, graceful-fs@npm:^4.1.6, graceful-fs@npm:^4.2.0, graceful-fs@npm:^4.2.4, graceful-fs@npm:^4.2.6, graceful-fs@npm:^4.2.9": version: 4.2.11 resolution: "graceful-fs@npm:4.2.11" checksum: ac85f94da92d8eb6b7f5a8b20ce65e43d66761c55ce85ac96df6865308390da45a8d3f0296dd3a663de65d30ba497bd46c696cc1e248c72b13d6d567138a4fc7 languageName: node linkType: hard "grapheme-splitter@npm:^1.0.4": version: 1.0.4 resolution: "grapheme-splitter@npm:1.0.4" checksum: 0c22ec54dee1b05cd480f78cf14f732cb5b108edc073572c4ec205df4cd63f30f8db8025afc5debc8835a8ddeacf648a1c7992fe3dcd6ad38f9a476d84906620 languageName: node linkType: hard "growl@npm:1.10.5": version: 1.10.5 resolution: "growl@npm:1.10.5" checksum: 4b86685de6831cebcbb19f93870bea624afee61124b0a20c49017013987cd129e73a8c4baeca295728f41d21265e1f859d25ef36731b142ca59c655fea94bb1a languageName: node linkType: hard "handlebars@npm:4.7.7, handlebars@npm:^4.7.7": version: 4.7.7 resolution: "handlebars@npm:4.7.7" dependencies: minimist: ^1.2.5 neo-async: ^2.6.0 source-map: ^0.6.1 uglify-js: ^3.1.4 wordwrap: ^1.0.0 dependenciesMeta: uglify-js: optional: true bin: handlebars: bin/handlebars checksum: 1e79a43f5e18d15742977cb987923eab3e2a8f44f2d9d340982bcb69e1735ed049226e534d7c1074eaddaf37e4fb4f471a8adb71cddd5bc8cf3f894241df5cee languageName: node linkType: hard "har-schema@npm:^2.0.0": version: 2.0.0 resolution: "har-schema@npm:2.0.0" checksum: d8946348f333fb09e2bf24cc4c67eabb47c8e1d1aa1c14184c7ffec1140a49ec8aa78aa93677ae452d71d5fc0fdeec20f0c8c1237291fc2bcb3f502a5d204f9b languageName: node linkType: hard "har-validator@npm:~5.1.3": version: 5.1.5 resolution: "har-validator@npm:5.1.5" dependencies: ajv: ^6.12.3 har-schema: ^2.0.0 checksum: b998a7269ca560d7f219eedc53e2c664cd87d487e428ae854a6af4573fc94f182fe9d2e3b92ab968249baec7ebaf9ead69cf975c931dc2ab282ec182ee988280 languageName: node linkType: hard "hard-rejection@npm:^2.1.0": version: 2.1.0 resolution: "hard-rejection@npm:2.1.0" checksum: 7baaf80a0c7fff4ca79687b4060113f1529589852152fa935e6787a2bc96211e784ad4588fb3048136ff8ffc9dfcf3ae385314a5b24db32de20bea0d1597f9dc languageName: node linkType: hard "has-ansi@npm:^2.0.0": version: 2.0.0 resolution: "has-ansi@npm:2.0.0" dependencies: ansi-regex: ^2.0.0 checksum: 1b51daa0214440db171ff359d0a2d17bc20061164c57e76234f614c91dbd2a79ddd68dfc8ee73629366f7be45a6df5f2ea9de83f52e1ca24433f2cc78c35d8ec languageName: node linkType: hard "has-bigints@npm:^1.0.1, has-bigints@npm:^1.0.2": version: 1.0.2 resolution: "has-bigints@npm:1.0.2" checksum: 390e31e7be7e5c6fe68b81babb73dfc35d413604d7ee5f56da101417027a4b4ce6a27e46eff97ad040c835b5d228676eae99a9b5c3bc0e23c8e81a49241ff45b languageName: node linkType: hard "has-flag@npm:^3.0.0": version: 3.0.0 resolution: "has-flag@npm:3.0.0" checksum: 4a15638b454bf086c8148979aae044dd6e39d63904cd452d970374fa6a87623423da485dfb814e7be882e05c096a7ccf1ebd48e7e7501d0208d8384ff4dea73b languageName: node linkType: hard "has-flag@npm:^4.0.0": version: 4.0.0 resolution: "has-flag@npm:4.0.0" checksum: 261a1357037ead75e338156b1f9452c016a37dcd3283a972a30d9e4a87441ba372c8b81f818cd0fbcd9c0354b4ae7e18b9e1afa1971164aef6d18c2b6095a8ad languageName: node linkType: hard "has-property-descriptors@npm:^1.0.0": version: 1.0.0 resolution: "has-property-descriptors@npm:1.0.0" dependencies: get-intrinsic: ^1.1.1 checksum: a6d3f0a266d0294d972e354782e872e2fe1b6495b321e6ef678c9b7a06a40408a6891817350c62e752adced73a94ac903c54734fee05bf65b1905ee1368194bb languageName: node linkType: hard "has-proto@npm:^1.0.1": version: 1.0.1 resolution: "has-proto@npm:1.0.1" checksum: febc5b5b531de8022806ad7407935e2135f1cc9e64636c3916c6842bd7995994ca3b29871ecd7954bd35f9e2986c17b3b227880484d22259e2f8e6ce63fd383e languageName: node linkType: hard "has-symbols@npm:^1.0.2, has-symbols@npm:^1.0.3": version: 1.0.3 resolution: "has-symbols@npm:1.0.3" checksum: a054c40c631c0d5741a8285010a0777ea0c068f99ed43e5d6eb12972da223f8af553a455132fdb0801bdcfa0e0f443c0c03a68d8555aa529b3144b446c3f2410 languageName: node linkType: hard "has-tostringtag@npm:^1.0.0": version: 1.0.0 resolution: "has-tostringtag@npm:1.0.0" dependencies: has-symbols: ^1.0.2 checksum: cc12eb28cb6ae22369ebaad3a8ab0799ed61270991be88f208d508076a1e99abe4198c965935ce85ea90b60c94ddda73693b0920b58e7ead048b4a391b502c1c languageName: node linkType: hard "has-unicode@npm:^2.0.1": version: 2.0.1 resolution: "has-unicode@npm:2.0.1" checksum: 1eab07a7436512db0be40a710b29b5dc21fa04880b7f63c9980b706683127e3c1b57cb80ea96d47991bdae2dfe479604f6a1ba410106ee1046a41d1bd0814400 languageName: node linkType: hard "has@npm:^1.0.3": version: 1.0.3 resolution: "has@npm:1.0.3" dependencies: function-bind: ^1.1.1 checksum: b9ad53d53be4af90ce5d1c38331e712522417d017d5ef1ebd0507e07c2fbad8686fffb8e12ddecd4c39ca9b9b47431afbb975b8abf7f3c3b82c98e9aad052792 languageName: node linkType: hard "he@npm:1.2.0, he@npm:^1.2.0": version: 1.2.0 resolution: "he@npm:1.2.0" bin: he: bin/he checksum: 3d4d6babccccd79c5c5a3f929a68af33360d6445587d628087f39a965079d84f18ce9c3d3f917ee1e3978916fc833bb8b29377c3b403f919426f91bc6965e7a7 languageName: node linkType: hard "hosted-git-info@npm:^2.1.4": version: 2.8.9 resolution: "hosted-git-info@npm:2.8.9" checksum: c955394bdab888a1e9bb10eb33029e0f7ce5a2ac7b3f158099dc8c486c99e73809dca609f5694b223920ca2174db33d32b12f9a2a47141dc59607c29da5a62dd languageName: node linkType: hard "hosted-git-info@npm:^3.0.6": version: 3.0.8 resolution: "hosted-git-info@npm:3.0.8" dependencies: lru-cache: ^6.0.0 checksum: 5af7a69581acb84206a7b8e009f4680c36396814e92c8a83973dfb3b87e44e44d1f7b8eaf3e4a953686482770ecb78406a4ce4666bfdfe447762434127871d8d languageName: node linkType: hard "hosted-git-info@npm:^4.0.0, hosted-git-info@npm:^4.0.1": version: 4.1.0 resolution: "hosted-git-info@npm:4.1.0" dependencies: lru-cache: ^6.0.0 checksum: c3f87b3c2f7eb8c2748c8f49c0c2517c9a95f35d26f4bf54b2a8cba05d2e668f3753548b6ea366b18ec8dadb4e12066e19fa382a01496b0ffa0497eb23cbe461 languageName: node linkType: hard "hosted-git-info@npm:^5.0.0": version: 5.2.1 resolution: "hosted-git-info@npm:5.2.1" dependencies: lru-cache: ^7.5.1 checksum: fa35df185224adfd69141f3b2f8cc31f50e705a5ebb415ccfbfd055c5b94bd08d3e658edf1edad9e2ac7d81831ac7cf261f5d219b3adc8d744fb8cdacaaf2ead languageName: node linkType: hard "html-encoding-sniffer@npm:^3.0.0": version: 3.0.0 resolution: "html-encoding-sniffer@npm:3.0.0" dependencies: whatwg-encoding: ^2.0.0 checksum: 8d806aa00487e279e5ccb573366a951a9f68f65c90298eac9c3a2b440a7ffe46615aff2995a2f61c6746c639234e6179a97e18ca5ccbbf93d3725ef2099a4502 languageName: node linkType: hard "html-escaper@npm:^2.0.0": version: 2.0.2 resolution: "html-escaper@npm:2.0.2" checksum: d2df2da3ad40ca9ee3a39c5cc6475ef67c8f83c234475f24d8e9ce0dc80a2c82df8e1d6fa78ddd1e9022a586ea1bd247a615e80a5cd9273d90111ddda7d9e974 languageName: node linkType: hard "htmlparser2@npm:^6.0.0": version: 6.1.0 resolution: "htmlparser2@npm:6.1.0" dependencies: domelementtype: ^2.0.1 domhandler: ^4.0.0 domutils: ^2.5.2 entities: ^2.0.0 checksum: 81a7b3d9c3bb9acb568a02fc9b1b81ffbfa55eae7f1c41ae0bf840006d1dbf54cb3aa245b2553e2c94db674840a9f0fdad7027c9a9d01a062065314039058c4e languageName: node linkType: hard "htmlparser2@npm:^8.0.0": version: 8.0.2 resolution: "htmlparser2@npm:8.0.2" dependencies: domelementtype: ^2.3.0 domhandler: ^5.0.3 domutils: ^3.0.1 entities: ^4.4.0 checksum: 29167a0f9282f181da8a6d0311b76820c8a59bc9e3c87009e21968264c2987d2723d6fde5a964d4b7b6cba663fca96ffb373c06d8223a85f52a6089ced942700 languageName: node linkType: hard "http-cache-semantics@npm:^4.0.0, http-cache-semantics@npm:^4.1.0": version: 4.1.1 resolution: "http-cache-semantics@npm:4.1.1" checksum: 83ac0bc60b17a3a36f9953e7be55e5c8f41acc61b22583060e8dedc9dd5e3607c823a88d0926f9150e571f90946835c7fe150732801010845c72cd8bbff1a236 languageName: node linkType: hard "http-errors@npm:1.8.1": version: 1.8.1 resolution: "http-errors@npm:1.8.1" dependencies: depd: ~1.1.2 inherits: 2.0.4 setprototypeof: 1.2.0 statuses: ">= 1.5.0 < 2" toidentifier: 1.0.1 checksum: d3c7e7e776fd51c0a812baff570bdf06fe49a5dc448b700ab6171b1250e4cf7db8b8f4c0b133e4bfe2451022a5790c1ca6c2cae4094dedd6ac8304a1267f91d2 languageName: node linkType: hard "http-errors@npm:2.0.0": version: 2.0.0 resolution: "http-errors@npm:2.0.0" dependencies: depd: 2.0.0 inherits: 2.0.4 setprototypeof: 1.2.0 statuses: 2.0.1 toidentifier: 1.0.1 checksum: 9b0a3782665c52ce9dc658a0d1560bcb0214ba5699e4ea15aefb2a496e2ca83db03ebc42e1cce4ac1f413e4e0d2d736a3fd755772c556a9a06853ba2a0b7d920 languageName: node linkType: hard "http-proxy-agent@npm:^5.0.0": version: 5.0.0 resolution: "http-proxy-agent@npm:5.0.0" dependencies: "@tootallnate/once": 2 agent-base: 6 debug: 4 checksum: e2ee1ff1656a131953839b2a19cd1f3a52d97c25ba87bd2559af6ae87114abf60971e498021f9b73f9fd78aea8876d1fb0d4656aac8a03c6caa9fc175f22b786 languageName: node linkType: hard "http-proxy@npm:^1.18.1": version: 1.18.1 resolution: "http-proxy@npm:1.18.1" dependencies: eventemitter3: ^4.0.0 follow-redirects: ^1.0.0 requires-port: ^1.0.0 checksum: f5bd96bf83e0b1e4226633dbb51f8b056c3e6321917df402deacec31dd7fe433914fc7a2c1831cf7ae21e69c90b3a669b8f434723e9e8b71fd68afe30737b6a5 languageName: node linkType: hard "http-server@npm:^14.0.0": version: 14.1.1 resolution: "http-server@npm:14.1.1" dependencies: basic-auth: ^2.0.1 chalk: ^4.1.2 corser: ^2.0.1 he: ^1.2.0 html-encoding-sniffer: ^3.0.0 http-proxy: ^1.18.1 mime: ^1.6.0 minimist: ^1.2.6 opener: ^1.5.1 portfinder: ^1.0.28 secure-compare: 3.0.1 union: ~0.5.0 url-join: ^4.0.1 bin: http-server: bin/http-server checksum: 4f9674289195eaf9f3e408e093d2080b0d4647559a32c9e7868639c327cab62efd0bb8bc9ded9a625d9ce982cbb03517d4472400af5ecf36eeb5b4fa62d113fe languageName: node linkType: hard "http-signature@npm:~1.2.0": version: 1.2.0 resolution: "http-signature@npm:1.2.0" dependencies: assert-plus: ^1.0.0 jsprim: ^1.2.2 sshpk: ^1.7.0 checksum: 3324598712266a9683585bb84a75dec4fd550567d5e0dd4a0fff6ff3f74348793404d3eeac4918fa0902c810eeee1a86419e4a2e92a164132dfe6b26743fb47c languageName: node linkType: hard "http-status-codes@npm:2.2.0": version: 2.2.0 resolution: "http-status-codes@npm:2.2.0" checksum: 31e1d730856210445da0907d9b484629e69e4fe92ac032478a7aa4d89e5b215e2b4e75d7ebce40d0537b6850bd281b2f65c7cc36cc2677e5de056d6cea1045ce languageName: node linkType: hard "http2-wrapper@npm:^1.0.0-beta.5.2": version: 1.0.3 resolution: "http2-wrapper@npm:1.0.3" dependencies: quick-lru: ^5.1.1 resolve-alpn: ^1.0.0 checksum: 74160b862ec699e3f859739101ff592d52ce1cb207b7950295bf7962e4aa1597ef709b4292c673bece9c9b300efad0559fc86c71b1409c7a1e02b7229456003e languageName: node linkType: hard "https-proxy-agent@npm:5.0.1, https-proxy-agent@npm:^5.0.0": version: 5.0.1 resolution: "https-proxy-agent@npm:5.0.1" dependencies: agent-base: 6 debug: 4 checksum: 571fccdf38184f05943e12d37d6ce38197becdd69e58d03f43637f7fa1269cf303a7d228aa27e5b27bbd3af8f09fd938e1c91dcfefff2df7ba77c20ed8dfc765 languageName: node linkType: hard "human-signals@npm:^2.1.0": version: 2.1.0 resolution: "human-signals@npm:2.1.0" checksum: b87fd89fce72391625271454e70f67fe405277415b48bcc0117ca73d31fa23a4241787afdc8d67f5a116cf37258c052f59ea82daffa72364d61351423848e3b8 languageName: node linkType: hard "humanize-ms@npm:^1.2.1": version: 1.2.1 resolution: "humanize-ms@npm:1.2.1" dependencies: ms: ^2.0.0 checksum: 9c7a74a2827f9294c009266c82031030eae811ca87b0da3dceb8d6071b9bde22c9f3daef0469c3c533cc67a97d8a167cd9fc0389350e5f415f61a79b171ded16 languageName: node linkType: hard "husky@npm:^7.0.4": version: 7.0.4 resolution: "husky@npm:7.0.4" bin: husky: lib/bin.js checksum: c6ec4af63da2c9522da8674a20ad9b48362cc92704896cc8a58c6a2a39d797feb2b806f93fbd83a6d653fbdceb2c3b6e0b602c6b2e8565206ffc2882ef7db9e9 languageName: node linkType: hard "iconv-lite@npm:0.4.24, iconv-lite@npm:^0.4.24": version: 0.4.24 resolution: "iconv-lite@npm:0.4.24" dependencies: safer-buffer: ">= 2.1.2 < 3" checksum: bd9f120f5a5b306f0bc0b9ae1edeb1577161503f5f8252a20f1a9e56ef8775c9959fd01c55f2d3a39d9a8abaf3e30c1abeb1895f367dcbbe0a8fd1c9ca01c4f6 languageName: node linkType: hard "iconv-lite@npm:0.6.3, iconv-lite@npm:^0.6.2, iconv-lite@npm:^0.6.3": version: 0.6.3 resolution: "iconv-lite@npm:0.6.3" dependencies: safer-buffer: ">= 2.1.2 < 3.0.0" checksum: 3f60d47a5c8fc3313317edfd29a00a692cc87a19cac0159e2ce711d0ebc9019064108323b5e493625e25594f11c6236647d8e256fbe7a58f4a3b33b89e6d30bf languageName: node linkType: hard "icss-utils@npm:^5.0.0, icss-utils@npm:^5.1.0": version: 5.1.0 resolution: "icss-utils@npm:5.1.0" peerDependencies: postcss: ^8.1.0 checksum: 5c324d283552b1269cfc13a503aaaa172a280f914e5b81544f3803bc6f06a3b585fb79f66f7c771a2c052db7982c18bf92d001e3b47282e3abbbb4c4cc488d68 languageName: node linkType: hard "ieee754@npm:^1.1.13, ieee754@npm:^1.2.1": version: 1.2.1 resolution: "ieee754@npm:1.2.1" checksum: 5144c0c9815e54ada181d80a0b810221a253562422e7c6c3a60b1901154184f49326ec239d618c416c1c5945a2e197107aee8d986a3dd836b53dffefd99b5e7e languageName: node linkType: hard "ignore-walk@npm:^5.0.1": version: 5.0.1 resolution: "ignore-walk@npm:5.0.1" dependencies: minimatch: ^5.0.1 checksum: 1a4ef35174653a1aa6faab3d9f8781269166536aee36a04946f6e2b319b2475c1903a75ed42f04219274128242f49d0a10e20c4354ee60d9548e97031451150b languageName: node linkType: hard "ignore@npm:^5.0.4, ignore@npm:^5.1.1, ignore@npm:^5.1.9, ignore@npm:^5.2.0": version: 5.2.4 resolution: "ignore@npm:5.2.4" checksum: 3d4c309c6006e2621659311783eaea7ebcd41fe4ca1d78c91c473157ad6666a57a2df790fe0d07a12300d9aac2888204d7be8d59f9aaf665b1c7fcdb432517ef languageName: node linkType: hard "image-size@npm:~0.5.0": version: 0.5.5 resolution: "image-size@npm:0.5.5" bin: image-size: bin/image-size.js checksum: 6709d5cb73e96d5097ae5e9aa746dd36d6a9c8cf645e7eecac72ea07dbd6f312a65183752762fa92e2f3b698d4ed8d85dd55bf5207b6367245996bd16576d8fe languageName: node linkType: hard "import-fresh@npm:^3.0.0, import-fresh@npm:^3.2.1": version: 3.3.0 resolution: "import-fresh@npm:3.3.0" dependencies: parent-module: ^1.0.0 resolve-from: ^4.0.0 checksum: 2cacfad06e652b1edc50be650f7ec3be08c5e5a6f6d12d035c440a42a8cc028e60a5b99ca08a77ab4d6b1346da7d971915828f33cdab730d3d42f08242d09baa languageName: node linkType: hard "import-local@npm:^3.0.2": version: 3.1.0 resolution: "import-local@npm:3.1.0" dependencies: pkg-dir: ^4.2.0 resolve-cwd: ^3.0.0 bin: import-local-fixture: fixtures/cli.js checksum: bfcdb63b5e3c0e245e347f3107564035b128a414c4da1172a20dc67db2504e05ede4ac2eee1252359f78b0bfd7b19ef180aec427c2fce6493ae782d73a04cddd languageName: node linkType: hard "imurmurhash@npm:^0.1.4": version: 0.1.4 resolution: "imurmurhash@npm:0.1.4" checksum: 7cae75c8cd9a50f57dadd77482359f659eaebac0319dd9368bcd1714f55e65badd6929ca58569da2b6494ef13fdd5598cd700b1eba23f8b79c5f19d195a3ecf7 languageName: node linkType: hard "indent-string@npm:^4.0.0": version: 4.0.0 resolution: "indent-string@npm:4.0.0" checksum: 824cfb9929d031dabf059bebfe08cf3137365e112019086ed3dcff6a0a7b698cb80cf67ccccde0e25b9e2d7527aa6cc1fed1ac490c752162496caba3e6699612 languageName: node linkType: hard "indexes-of@npm:^1.0.1": version: 1.0.1 resolution: "indexes-of@npm:1.0.1" checksum: 4f9799b1739a62f3e02d09f6f4162cf9673025282af7fa36e790146e7f4e216dad3e776a25b08536c093209c9fcb5ea7bd04b082d42686a45f58ff401d6da32e languageName: node linkType: hard "infer-owner@npm:^1.0.4": version: 1.0.4 resolution: "infer-owner@npm:1.0.4" checksum: 181e732764e4a0611576466b4b87dac338972b839920b2a8cde43642e4ed6bd54dc1fb0b40874728f2a2df9a1b097b8ff83b56d5f8f8e3927f837fdcb47d8a89 languageName: node linkType: hard "inflight@npm:^1.0.4": version: 1.0.6 resolution: "inflight@npm:1.0.6" dependencies: once: ^1.3.0 wrappy: 1 checksum: f4f76aa072ce19fae87ce1ef7d221e709afb59d445e05d47fba710e85470923a75de35bfae47da6de1b18afc3ce83d70facf44cfb0aff89f0a3f45c0a0244dfd languageName: node linkType: hard "inherits@npm:2, inherits@npm:2.0.4, inherits@npm:^2.0.3, inherits@npm:^2.0.4, inherits@npm:~2.0.3": version: 2.0.4 resolution: "inherits@npm:2.0.4" checksum: 4a48a733847879d6cf6691860a6b1e3f0f4754176e4d71494c41f3475553768b10f84b5ce1d40fbd0e34e6bfbb864ee35858ad4dd2cf31e02fc4a154b724d7f1 languageName: node linkType: hard "ini@npm:^1.3.2, ini@npm:^1.3.4, ini@npm:~1.3.0": version: 1.3.8 resolution: "ini@npm:1.3.8" checksum: dfd98b0ca3a4fc1e323e38a6c8eb8936e31a97a918d3b377649ea15bdb15d481207a0dda1021efbd86b464cae29a0d33c1d7dcaf6c5672bee17fa849bc50a1b3 languageName: node linkType: hard "init-package-json@npm:^3.0.2": version: 3.0.2 resolution: "init-package-json@npm:3.0.2" dependencies: npm-package-arg: ^9.0.1 promzard: ^0.3.0 read: ^1.0.7 read-package-json: ^5.0.0 semver: ^7.3.5 validate-npm-package-license: ^3.0.4 validate-npm-package-name: ^4.0.0 checksum: e027f60e4a1564809eee790d5a842341c784888fd7c7ace5f9a34ea76224c0adb6f3ab3bf205cf1c9c877a6e1a76c68b00847a984139f60813125d7b42a23a13 languageName: node linkType: hard "inquirer@npm:^8.2.4": version: 8.2.5 resolution: "inquirer@npm:8.2.5" dependencies: ansi-escapes: ^4.2.1 chalk: ^4.1.1 cli-cursor: ^3.1.0 cli-width: ^3.0.0 external-editor: ^3.0.3 figures: ^3.0.0 lodash: ^4.17.21 mute-stream: 0.0.8 ora: ^5.4.1 run-async: ^2.4.0 rxjs: ^7.5.5 string-width: ^4.1.0 strip-ansi: ^6.0.0 through: ^2.3.6 wrap-ansi: ^7.0.0 checksum: f13ee4c444187786fb393609dedf6b30870115a57b603f2e6424f29a99abc13446fd45ee22461c33c9c40a92a60a8df62d0d6b25d74fc6676fa4cb211de55b55 languageName: node linkType: hard "inquirer@npm:^9.1.4": version: 9.2.3 resolution: "inquirer@npm:9.2.3" dependencies: ansi-escapes: ^4.3.2 chalk: ^5.2.0 cli-cursor: ^3.1.0 cli-width: ^4.0.0 external-editor: ^3.0.3 figures: ^5.0.0 lodash: ^4.17.21 mute-stream: 1.0.0 ora: ^5.4.1 run-async: ^3.0.0 rxjs: ^7.8.1 string-width: ^4.2.3 strip-ansi: ^6.0.1 through: ^2.3.6 wrap-ansi: ^6.0.1 checksum: 234ad79eebd40d567241243bef0fd58635b364ff9de391140af84018b3ff9c26e82acf9e062f2f0307342e6a8ff180d7e3df00a3484f471d607905fb781c6192 languageName: node linkType: hard "internal-slot@npm:^1.0.5": version: 1.0.5 resolution: "internal-slot@npm:1.0.5" dependencies: get-intrinsic: ^1.2.0 has: ^1.0.3 side-channel: ^1.0.4 checksum: 97e84046bf9e7574d0956bd98d7162313ce7057883b6db6c5c7b5e5f05688864b0978ba07610c726d15d66544ffe4b1050107d93f8a39ebc59b15d8b429b497a languageName: node linkType: hard "interpret@npm:^2.2.0": version: 2.2.0 resolution: "interpret@npm:2.2.0" checksum: f51efef7cb8d02da16408ffa3504cd6053014c5aeb7bb8c223727e053e4235bf565e45d67028b0c8740d917c603807aa3c27d7bd2f21bf20b6417e2bb3e5fd6e languageName: node linkType: hard "interpret@npm:^3.1.1": version: 3.1.1 resolution: "interpret@npm:3.1.1" checksum: 35cebcf48c7351130437596d9ab8c8fe131ce4038da4561e6d665f25640e0034702a031cf7e3a5cea60ac7ac548bf17465e0571ede126f3d3a6933152171ac82 languageName: node linkType: hard "invariant@npm:^2.2.2": version: 2.2.4 resolution: "invariant@npm:2.2.4" dependencies: loose-envify: ^1.0.0 checksum: cc3182d793aad82a8d1f0af697b462939cb46066ec48bbf1707c150ad5fad6406137e91a262022c269702e01621f35ef60269f6c0d7fd178487959809acdfb14 languageName: node linkType: hard "ip@npm:^2.0.0": version: 2.0.0 resolution: "ip@npm:2.0.0" checksum: cfcfac6b873b701996d71ec82a7dd27ba92450afdb421e356f44044ed688df04567344c36cbacea7d01b1c39a4c732dc012570ebe9bebfb06f27314bca625349 languageName: node linkType: hard "ipaddr.js@npm:1.9.1": version: 1.9.1 resolution: "ipaddr.js@npm:1.9.1" checksum: f88d3825981486f5a1942414c8d77dd6674dd71c065adcfa46f578d677edcb99fda25af42675cb59db492fdf427b34a5abfcde3982da11a8fd83a500b41cfe77 languageName: node linkType: hard "is-array-buffer@npm:^3.0.1, is-array-buffer@npm:^3.0.2": version: 3.0.2 resolution: "is-array-buffer@npm:3.0.2" dependencies: call-bind: ^1.0.2 get-intrinsic: ^1.2.0 is-typed-array: ^1.1.10 checksum: dcac9dda66ff17df9cabdc58214172bf41082f956eab30bb0d86bc0fab1e44b690fc8e1f855cf2481245caf4e8a5a006a982a71ddccec84032ed41f9d8da8c14 languageName: node linkType: hard "is-arrayish@npm:^0.2.1": version: 0.2.1 resolution: "is-arrayish@npm:0.2.1" checksum: eef4417e3c10e60e2c810b6084942b3ead455af16c4509959a27e490e7aee87cfb3f38e01bbde92220b528a0ee1a18d52b787e1458ee86174d8c7f0e58cd488f languageName: node linkType: hard "is-arrayish@npm:^0.3.1": version: 0.3.2 resolution: "is-arrayish@npm:0.3.2" checksum: 977e64f54d91c8f169b59afcd80ff19227e9f5c791fa28fa2e5bce355cbaf6c2c356711b734656e80c9dd4a854dd7efcf7894402f1031dfc5de5d620775b4d5f languageName: node linkType: hard "is-bigint@npm:^1.0.1": version: 1.0.4 resolution: "is-bigint@npm:1.0.4" dependencies: has-bigints: ^1.0.1 checksum: c56edfe09b1154f8668e53ebe8252b6f185ee852a50f9b41e8d921cb2bed425652049fbe438723f6cb48a63ca1aa051e948e7e401e093477c99c84eba244f666 languageName: node linkType: hard "is-binary-path@npm:~2.1.0": version: 2.1.0 resolution: "is-binary-path@npm:2.1.0" dependencies: binary-extensions: ^2.0.0 checksum: 84192eb88cff70d320426f35ecd63c3d6d495da9d805b19bc65b518984b7c0760280e57dbf119b7e9be6b161784a5a673ab2c6abe83abb5198a432232ad5b35c languageName: node linkType: hard "is-boolean-object@npm:^1.1.0": version: 1.1.2 resolution: "is-boolean-object@npm:1.1.2" dependencies: call-bind: ^1.0.2 has-tostringtag: ^1.0.0 checksum: c03b23dbaacadc18940defb12c1c0e3aaece7553ef58b162a0f6bba0c2a7e1551b59f365b91e00d2dbac0522392d576ef322628cb1d036a0fe51eb466db67222 languageName: node linkType: hard "is-callable@npm:^1.1.3, is-callable@npm:^1.1.4, is-callable@npm:^1.2.7": version: 1.2.7 resolution: "is-callable@npm:1.2.7" checksum: 61fd57d03b0d984e2ed3720fb1c7a897827ea174bd44402878e059542ea8c4aeedee0ea0985998aa5cc2736b2fa6e271c08587addb5b3959ac52cf665173d1ac languageName: node linkType: hard "is-ci@npm:^2.0.0": version: 2.0.0 resolution: "is-ci@npm:2.0.0" dependencies: ci-info: ^2.0.0 bin: is-ci: bin.js checksum: 77b869057510f3efa439bbb36e9be429d53b3f51abd4776eeea79ab3b221337fe1753d1e50058a9e2c650d38246108beffb15ccfd443929d77748d8c0cc90144 languageName: node linkType: hard "is-core-module@npm:^2.12.0, is-core-module@npm:^2.5.0, is-core-module@npm:^2.8.1": version: 2.12.0 resolution: "is-core-module@npm:2.12.0" dependencies: has: ^1.0.3 checksum: f7f7eb2ab71fd769ee9fb2385c095d503aa4b5ce0028c04557de03f1e67a87c85e5bac1f215945fc3c955867a139a415a3ec4c4234a0bffdf715232660f440a6 languageName: node linkType: hard "is-date-object@npm:^1.0.1": version: 1.0.5 resolution: "is-date-object@npm:1.0.5" dependencies: has-tostringtag: ^1.0.0 checksum: baa9077cdf15eb7b58c79398604ca57379b2fc4cf9aa7a9b9e295278648f628c9b201400c01c5e0f7afae56507d741185730307cbe7cad3b9f90a77e5ee342fc languageName: node linkType: hard "is-docker@npm:^2.0.0, is-docker@npm:^2.1.1": version: 2.2.1 resolution: "is-docker@npm:2.2.1" bin: is-docker: cli.js checksum: 3fef7ddbf0be25958e8991ad941901bf5922ab2753c46980b60b05c1bf9c9c2402d35e6dc32e4380b980ef5e1970a5d9d5e5aa2e02d77727c3b6b5e918474c56 languageName: node linkType: hard "is-extglob@npm:^2.1.1": version: 2.1.1 resolution: "is-extglob@npm:2.1.1" checksum: df033653d06d0eb567461e58a7a8c9f940bd8c22274b94bf7671ab36df5719791aae15eef6d83bbb5e23283967f2f984b8914559d4449efda578c775c4be6f85 languageName: node linkType: hard "is-finite@npm:^1.0.0": version: 1.1.0 resolution: "is-finite@npm:1.1.0" checksum: 532b97ed3d03e04c6bd203984d9e4ba3c0c390efee492bad5d1d1cd1802a68ab27adbd3ef6382f6312bed6c8bb1bd3e325ea79a8dc8fe080ed7a06f5f97b93e7 languageName: node linkType: hard "is-fullwidth-code-point@npm:^3.0.0": version: 3.0.0 resolution: "is-fullwidth-code-point@npm:3.0.0" checksum: 44a30c29457c7fb8f00297bce733f0a64cd22eca270f83e58c105e0d015e45c019491a4ab2faef91ab51d4738c670daff901c799f6a700e27f7314029e99e348 languageName: node linkType: hard "is-fullwidth-code-point@npm:^4.0.0": version: 4.0.0 resolution: "is-fullwidth-code-point@npm:4.0.0" checksum: 8ae89bf5057bdf4f57b346fb6c55e9c3dd2549983d54191d722d5c739397a903012cc41a04ee3403fd872e811243ef91a7c5196da7b5841dc6b6aae31a264a8d languageName: node linkType: hard "is-glob@npm:^4.0.0, is-glob@npm:^4.0.1, is-glob@npm:^4.0.3, is-glob@npm:~4.0.1": version: 4.0.3 resolution: "is-glob@npm:4.0.3" dependencies: is-extglob: ^2.1.1 checksum: d381c1319fcb69d341cc6e6c7cd588e17cd94722d9a32dbd60660b993c4fb7d0f19438674e68dfec686d09b7c73139c9166b47597f846af387450224a8101ab4 languageName: node linkType: hard "is-interactive@npm:^1.0.0": version: 1.0.0 resolution: "is-interactive@npm:1.0.0" checksum: 824808776e2d468b2916cdd6c16acacebce060d844c35ca6d82267da692e92c3a16fdba624c50b54a63f38bdc4016055b6f443ce57d7147240de4f8cdabaf6f9 languageName: node linkType: hard "is-lambda@npm:^1.0.1": version: 1.0.1 resolution: "is-lambda@npm:1.0.1" checksum: 93a32f01940220532e5948538699ad610d5924ac86093fcee83022252b363eb0cc99ba53ab084a04e4fb62bf7b5731f55496257a4c38adf87af9c4d352c71c35 languageName: node linkType: hard "is-negative-zero@npm:^2.0.2": version: 2.0.2 resolution: "is-negative-zero@npm:2.0.2" checksum: f3232194c47a549da60c3d509c9a09be442507616b69454716692e37ae9f37c4dea264fb208ad0c9f3efd15a796a46b79df07c7e53c6227c32170608b809149a languageName: node linkType: hard "is-number-object@npm:^1.0.4": version: 1.0.7 resolution: "is-number-object@npm:1.0.7" dependencies: has-tostringtag: ^1.0.0 checksum: d1e8d01bb0a7134c74649c4e62da0c6118a0bfc6771ea3c560914d52a627873e6920dd0fd0ebc0e12ad2ff4687eac4c308f7e80320b973b2c8a2c8f97a7524f7 languageName: node linkType: hard "is-number@npm:^7.0.0": version: 7.0.0 resolution: "is-number@npm:7.0.0" checksum: 456ac6f8e0f3111ed34668a624e45315201dff921e5ac181f8ec24923b99e9f32ca1a194912dc79d539c97d33dba17dc635202ff0b2cf98326f608323276d27a languageName: node linkType: hard "is-obj@npm:^2.0.0": version: 2.0.0 resolution: "is-obj@npm:2.0.0" checksum: c9916ac8f4621962a42f5e80e7ffdb1d79a3fab7456ceaeea394cd9e0858d04f985a9ace45be44433bf605673c8be8810540fe4cc7f4266fc7526ced95af5a08 languageName: node linkType: hard "is-path-inside@npm:^3.0.3": version: 3.0.3 resolution: "is-path-inside@npm:3.0.3" checksum: abd50f06186a052b349c15e55b182326f1936c89a78bf6c8f2b707412517c097ce04bc49a0ca221787bc44e1049f51f09a2ffb63d22899051988d3a618ba13e9 languageName: node linkType: hard "is-plain-obj@npm:2.1.0, is-plain-obj@npm:^2.0.0, is-plain-obj@npm:^2.1.0": version: 2.1.0 resolution: "is-plain-obj@npm:2.1.0" checksum: cec9100678b0a9fe0248a81743041ed990c2d4c99f893d935545cfbc42876cbe86d207f3b895700c690ad2fa520e568c44afc1605044b535a7820c1d40e38daa languageName: node linkType: hard "is-plain-obj@npm:^1.0.0, is-plain-obj@npm:^1.1.0": version: 1.1.0 resolution: "is-plain-obj@npm:1.1.0" checksum: 0ee04807797aad50859652a7467481816cbb57e5cc97d813a7dcd8915da8195dc68c436010bf39d195226cde6a2d352f4b815f16f26b7bf486a5754290629931 languageName: node linkType: hard "is-plain-obj@npm:^4.1.0": version: 4.1.0 resolution: "is-plain-obj@npm:4.1.0" checksum: 6dc45da70d04a81f35c9310971e78a6a3c7a63547ef782e3a07ee3674695081b6ca4e977fbb8efc48dae3375e0b34558d2bcd722aec9bddfa2d7db5b041be8ce languageName: node linkType: hard "is-plain-object@npm:^2.0.4": version: 2.0.4 resolution: "is-plain-object@npm:2.0.4" dependencies: isobject: ^3.0.1 checksum: 2a401140cfd86cabe25214956ae2cfee6fbd8186809555cd0e84574f88de7b17abacb2e477a6a658fa54c6083ecbda1e6ae404c7720244cd198903848fca70ca languageName: node linkType: hard "is-plain-object@npm:^5.0.0": version: 5.0.0 resolution: "is-plain-object@npm:5.0.0" checksum: e32d27061eef62c0847d303125440a38660517e586f2f3db7c9d179ae5b6674ab0f469d519b2e25c147a1a3bc87156d0d5f4d8821e0ce4a9ee7fe1fcf11ce45c languageName: node linkType: hard "is-promise@npm:^2.1.0": version: 2.2.2 resolution: "is-promise@npm:2.2.2" checksum: 18bf7d1c59953e0ad82a1ed963fb3dc0d135c8f299a14f89a17af312fc918373136e56028e8831700e1933519630cc2fd4179a777030330fde20d34e96f40c78 languageName: node linkType: hard "is-regex@npm:^1.1.4": version: 1.1.4 resolution: "is-regex@npm:1.1.4" dependencies: call-bind: ^1.0.2 has-tostringtag: ^1.0.0 checksum: 362399b33535bc8f386d96c45c9feb04cf7f8b41c182f54174c1a45c9abbbe5e31290bbad09a458583ff6bf3b2048672cdb1881b13289569a7c548370856a652 languageName: node linkType: hard "is-shared-array-buffer@npm:^1.0.2": version: 1.0.2 resolution: "is-shared-array-buffer@npm:1.0.2" dependencies: call-bind: ^1.0.2 checksum: 9508929cf14fdc1afc9d61d723c6e8d34f5e117f0bffda4d97e7a5d88c3a8681f633a74f8e3ad1fe92d5113f9b921dc5ca44356492079612f9a247efbce7032a languageName: node linkType: hard "is-ssh@npm:^1.4.0": version: 1.4.0 resolution: "is-ssh@npm:1.4.0" dependencies: protocols: ^2.0.1 checksum: 75eaa17b538bee24b661fbeb0f140226ac77e904a6039f787bea418431e2162f1f9c4c4ccad3bd169e036cd701cc631406e8c505d9fa7e20164e74b47f86f40f languageName: node linkType: hard "is-stream@npm:^2.0.0": version: 2.0.1 resolution: "is-stream@npm:2.0.1" checksum: b8e05ccdf96ac330ea83c12450304d4a591f9958c11fd17bed240af8d5ffe08aedafa4c0f4cfccd4d28dc9d4d129daca1023633d5c11601a6cbc77521f6fae66 languageName: node linkType: hard "is-string@npm:^1.0.5, is-string@npm:^1.0.7": version: 1.0.7 resolution: "is-string@npm:1.0.7" dependencies: has-tostringtag: ^1.0.0 checksum: 323b3d04622f78d45077cf89aab783b2f49d24dc641aa89b5ad1a72114cfeff2585efc8c12ef42466dff32bde93d839ad321b26884cf75e5a7892a938b089989 languageName: node linkType: hard "is-symbol@npm:^1.0.2, is-symbol@npm:^1.0.3": version: 1.0.4 resolution: "is-symbol@npm:1.0.4" dependencies: has-symbols: ^1.0.2 checksum: 92805812ef590738d9de49d677cd17dfd486794773fb6fa0032d16452af46e9b91bb43ffe82c983570f015b37136f4b53b28b8523bfb10b0ece7a66c31a54510 languageName: node linkType: hard "is-text-path@npm:^1.0.1": version: 1.0.1 resolution: "is-text-path@npm:1.0.1" dependencies: text-extensions: ^1.0.0 checksum: fb5d78752c22b3f73a7c9540768f765ffcfa38c9e421e2b9af869565307fa1ae5e3d3a2ba016a43549742856846566d327da406e94a5846ec838a288b1704fd2 languageName: node linkType: hard "is-typed-array@npm:^1.1.10, is-typed-array@npm:^1.1.9": version: 1.1.10 resolution: "is-typed-array@npm:1.1.10" dependencies: available-typed-arrays: ^1.0.5 call-bind: ^1.0.2 for-each: ^0.3.3 gopd: ^1.0.1 has-tostringtag: ^1.0.0 checksum: aac6ecb59d4c56a1cdeb69b1f129154ef462bbffe434cb8a8235ca89b42f258b7ae94073c41b3cb7bce37f6a1733ad4499f07882d5d5093a7ba84dfc4ebb8017 languageName: node linkType: hard "is-typedarray@npm:^1.0.0, is-typedarray@npm:~1.0.0": version: 1.0.0 resolution: "is-typedarray@npm:1.0.0" checksum: 3508c6cd0a9ee2e0df2fa2e9baabcdc89e911c7bd5cf64604586697212feec525aa21050e48affb5ffc3df20f0f5d2e2cf79b08caa64e1ccc9578e251763aef7 languageName: node linkType: hard "is-unicode-supported@npm:^0.1.0": version: 0.1.0 resolution: "is-unicode-supported@npm:0.1.0" checksum: a2aab86ee7712f5c2f999180daaba5f361bdad1efadc9610ff5b8ab5495b86e4f627839d085c6530363c6d6d4ecbde340fb8e54bdb83da4ba8e0865ed5513c52 languageName: node linkType: hard "is-unicode-supported@npm:^1.2.0": version: 1.3.0 resolution: "is-unicode-supported@npm:1.3.0" checksum: 20a1fc161afafaf49243551a5ac33b6c4cf0bbcce369fcd8f2951fbdd000c30698ce320de3ee6830497310a8f41880f8066d440aa3eb0a853e2aa4836dd89abc languageName: node linkType: hard "is-weakref@npm:^1.0.2": version: 1.0.2 resolution: "is-weakref@npm:1.0.2" dependencies: call-bind: ^1.0.2 checksum: 95bd9a57cdcb58c63b1c401c60a474b0f45b94719c30f548c891860f051bc2231575c290a6b420c6bc6e7ed99459d424c652bd5bf9a1d5259505dc35b4bf83de languageName: node linkType: hard "is-what@npm:^3.14.1": version: 3.14.1 resolution: "is-what@npm:3.14.1" checksum: a9a6ce92d33799f1ae0916c7afb6f8128a23ce9d28bd69d9ec3ec88910e7a1f68432e6236c3c8a4d544cf0b864675e5d828437efde60ee0cf8102061d395c1df languageName: node linkType: hard "is-wsl@npm:^2.2.0": version: 2.2.0 resolution: "is-wsl@npm:2.2.0" dependencies: is-docker: ^2.0.0 checksum: 20849846ae414997d290b75e16868e5261e86ff5047f104027026fd61d8b5a9b0b3ade16239f35e1a067b3c7cc02f70183cb661010ed16f4b6c7c93dad1b19d8 languageName: node linkType: hard "isarray@npm:0.0.1": version: 0.0.1 resolution: "isarray@npm:0.0.1" checksum: 49191f1425681df4a18c2f0f93db3adb85573bcdd6a4482539d98eac9e705d8961317b01175627e860516a2fc45f8f9302db26e5a380a97a520e272e2a40a8d4 languageName: node linkType: hard "isarray@npm:~1.0.0": version: 1.0.0 resolution: "isarray@npm:1.0.0" checksum: f032df8e02dce8ec565cf2eb605ea939bdccea528dbcf565cdf92bfa2da9110461159d86a537388ef1acef8815a330642d7885b29010e8f7eac967c9993b65ab languageName: node linkType: hard "isbinaryfile@npm:^4.0.8": version: 4.0.10 resolution: "isbinaryfile@npm:4.0.10" checksum: a6b28db7e23ac7a77d3707567cac81356ea18bd602a4f21f424f862a31d0e7ab4f250759c98a559ece35ffe4d99f0d339f1ab884ffa9795172f632ab8f88e686 languageName: node linkType: hard "isexe@npm:^2.0.0": version: 2.0.0 resolution: "isexe@npm:2.0.0" checksum: 26bf6c5480dda5161c820c5b5c751ae1e766c587b1f951ea3fcfc973bafb7831ae5b54a31a69bd670220e42e99ec154475025a468eae58ea262f813fdc8d1c62 languageName: node linkType: hard "isnumeric@npm:^0.2.0": version: 0.2.0 resolution: "isnumeric@npm:0.2.0" checksum: bc9eb9c1377347926123e67568dc32b11950093856228cf9a29d1985aaae3775c82c437254de20a77a540f66281a4cb1337da73954eb1a6f5a0ee7d1eb6d3f64 languageName: node linkType: hard "isobject@npm:^3.0.1": version: 3.0.1 resolution: "isobject@npm:3.0.1" checksum: db85c4c970ce30693676487cca0e61da2ca34e8d4967c2e1309143ff910c207133a969f9e4ddb2dc6aba670aabce4e0e307146c310350b298e74a31f7d464703 languageName: node linkType: hard "isomorphic.js@npm:^0.2.4": version: 0.2.5 resolution: "isomorphic.js@npm:0.2.5" checksum: d8d1b083f05f3c337a06628b982ac3ce6db953bbef14a9de8ad49131250c3592f864b73c12030fdc9ef138ce97b76ef55c7d96a849561ac215b1b4b9d301c8e9 languageName: node linkType: hard "isstream@npm:~0.1.2": version: 0.1.2 resolution: "isstream@npm:0.1.2" checksum: 1eb2fe63a729f7bdd8a559ab552c69055f4f48eb5c2f03724430587c6f450783c8f1cd936c1c952d0a927925180fcc892ebd5b174236cf1065d4bd5bdb37e963 languageName: node linkType: hard "istanbul-instrumenter-loader@npm:^3.0.1": version: 3.0.1 resolution: "istanbul-instrumenter-loader@npm:3.0.1" dependencies: convert-source-map: ^1.5.0 istanbul-lib-instrument: ^1.7.3 loader-utils: ^1.1.0 schema-utils: ^0.3.0 peerDependencies: webpack: ^2.0.0 || ^3.0.0 || ^4.0.0 checksum: 6b2eb9987f79dd451c43e0fcc6fa77bf0f7ac91f3237b7833a07ad6f35e15a6bff579e943edfc2dee203408b6c3a2b4b11f3028b8628cb7304df3decc7552831 languageName: node linkType: hard "istanbul-lib-coverage@npm:^1.2.1": version: 1.2.1 resolution: "istanbul-lib-coverage@npm:1.2.1" checksum: 72bfeaa9212f5a6abb243cbce4933712599ba9a6fbdee819f4f5a4cf87ed15cb92772fcab219e93c3712c578774d6d8e54084440423356b3da5d9f8ecaba9888 languageName: node linkType: hard "istanbul-lib-coverage@npm:^3.0.0, istanbul-lib-coverage@npm:^3.2.0": version: 3.2.0 resolution: "istanbul-lib-coverage@npm:3.2.0" checksum: a2a545033b9d56da04a8571ed05c8120bf10e9bce01cf8633a3a2b0d1d83dff4ac4fe78d6d5673c27fc29b7f21a41d75f83a36be09f82a61c367b56aa73c1ff9 languageName: node linkType: hard "istanbul-lib-instrument@npm:^1.7.3": version: 1.10.2 resolution: "istanbul-lib-instrument@npm:1.10.2" dependencies: babel-generator: ^6.18.0 babel-template: ^6.16.0 babel-traverse: ^6.18.0 babel-types: ^6.18.0 babylon: ^6.18.0 istanbul-lib-coverage: ^1.2.1 semver: ^5.3.0 checksum: c299d73820b0ac93d1c53f436181da09579083dc4a0febadbda93f598f9a5591fe4888c3071a913eede36148d6481fdf163fa0b6ec7156fffe2a95cff965fc51 languageName: node linkType: hard "istanbul-lib-instrument@npm:^5.1.0": version: 5.2.1 resolution: "istanbul-lib-instrument@npm:5.2.1" dependencies: "@babel/core": ^7.12.3 "@babel/parser": ^7.14.7 "@istanbuljs/schema": ^0.1.2 istanbul-lib-coverage: ^3.2.0 semver: ^6.3.0 checksum: bf16f1803ba5e51b28bbd49ed955a736488381e09375d830e42ddeb403855b2006f850711d95ad726f2ba3f1ae8e7366de7e51d2b9ac67dc4d80191ef7ddf272 languageName: node linkType: hard "istanbul-lib-report@npm:^3.0.0": version: 3.0.0 resolution: "istanbul-lib-report@npm:3.0.0" dependencies: istanbul-lib-coverage: ^3.0.0 make-dir: ^3.0.0 supports-color: ^7.1.0 checksum: 3f29eb3f53c59b987386e07fe772d24c7f58c6897f34c9d7a296f4000de7ae3de9eb95c3de3df91dc65b134c84dee35c54eee572a56243e8907c48064e34ff1b languageName: node linkType: hard "istanbul-lib-source-maps@npm:^4.0.1": version: 4.0.1 resolution: "istanbul-lib-source-maps@npm:4.0.1" dependencies: debug: ^4.1.1 istanbul-lib-coverage: ^3.0.0 source-map: ^0.6.1 checksum: 21ad3df45db4b81852b662b8d4161f6446cd250c1ddc70ef96a585e2e85c26ed7cd9c2a396a71533cfb981d1a645508bc9618cae431e55d01a0628e7dec62ef2 languageName: node linkType: hard "istanbul-reports@npm:^3.0.5": version: 3.1.5 resolution: "istanbul-reports@npm:3.1.5" dependencies: html-escaper: ^2.0.0 istanbul-lib-report: ^3.0.0 checksum: 7867228f83ed39477b188ea07e7ccb9b4f5320b6f73d1db93a0981b7414fa4ef72d3f80c4692c442f90fc250d9406e71d8d7ab65bb615cb334e6292b73192b89 languageName: node linkType: hard "jackspeak@npm:^2.0.3": version: 2.2.0 resolution: "jackspeak@npm:2.2.0" dependencies: "@isaacs/cliui": ^8.0.2 "@pkgjs/parseargs": ^0.11.0 dependenciesMeta: "@pkgjs/parseargs": optional: true checksum: d8cd5be4f0e89cef04add5b0b068162a086bdb1ca68113ed729e99489b7865ca3edcc6430d6fd20c430e15382929ef5f3c7ec36e6aa7c17be23cac116f92dcff languageName: node linkType: hard "jake@npm:^10.8.5": version: 10.8.6 resolution: "jake@npm:10.8.6" dependencies: async: ^3.2.3 chalk: ^4.0.2 filelist: ^1.0.4 minimatch: ^3.1.2 bin: jake: bin/cli.js checksum: eebebd3ca62a01ced630afc116f429d727d34bebe58a9424c0d5a0618ad6c1db893163fb4fbcdff01f34d34d6d63c0dd2448de598270bcd27d9440630de4aeea languageName: node linkType: hard "jest-worker@npm:^27.4.5": version: 27.5.1 resolution: "jest-worker@npm:27.5.1" dependencies: "@types/node": "*" merge-stream: ^2.0.0 supports-color: ^8.0.0 checksum: 98cd68b696781caed61c983a3ee30bf880b5bd021c01d98f47b143d4362b85d0737f8523761e2713d45e18b4f9a2b98af1eaee77afade4111bb65c77d6f7c980 languageName: node linkType: hard "jquery@npm:^3.1.1": version: 3.7.0 resolution: "jquery@npm:3.7.0" checksum: 907785e133afc427650a131af5fccef66a404885037513b3d4d7d63aee6409bcc32a39836868c60e59b05aa0fb8ace8961c18b2ee3ffdf6ffdb571d6d7cd88ff languageName: node linkType: hard "js-sdsl@npm:^4.1.4": version: 4.4.0 resolution: "js-sdsl@npm:4.4.0" checksum: 7bb08a2d746ab7ff742720339aa006c631afe05e77d11eda988c1c35fae8e03e492e4e347e883e786e3ce6170685d4780c125619111f0730c11fdb41b04059c7 languageName: node linkType: hard "js-tokens@npm:^3.0.0 || ^4.0.0, js-tokens@npm:^4.0.0": version: 4.0.0 resolution: "js-tokens@npm:4.0.0" checksum: 8a95213a5a77deb6cbe94d86340e8d9ace2b93bc367790b260101d2f36a2eaf4e4e22d9fa9cf459b38af3a32fb4190e638024cf82ec95ef708680e405ea7cc78 languageName: node linkType: hard "js-tokens@npm:^3.0.2": version: 3.0.2 resolution: "js-tokens@npm:3.0.2" checksum: ff24cf90e6e4ac446eba56e604781c1aaf3bdaf9b13a00596a0ebd972fa3b25dc83c0f0f67289c33252abb4111e0d14e952a5d9ffb61f5c22532d555ebd8d8a9 languageName: node linkType: hard "js-yaml@npm:4.1.0, js-yaml@npm:^4.1.0": version: 4.1.0 resolution: "js-yaml@npm:4.1.0" dependencies: argparse: ^2.0.1 bin: js-yaml: bin/js-yaml.js checksum: c7830dfd456c3ef2c6e355cc5a92e6700ceafa1d14bba54497b34a99f0376cecbb3e9ac14d3e5849b426d5a5140709a66237a8c991c675431271c4ce5504151a languageName: node linkType: hard "js-yaml@npm:^3.10.0": version: 3.14.1 resolution: "js-yaml@npm:3.14.1" dependencies: argparse: ^1.0.7 esprima: ^4.0.0 bin: js-yaml: bin/js-yaml.js checksum: bef146085f472d44dee30ec34e5cf36bf89164f5d585435a3d3da89e52622dff0b188a580e4ad091c3341889e14cb88cac6e4deb16dc5b1e9623bb0601fc255c languageName: node linkType: hard "jsbn@npm:~0.1.0": version: 0.1.1 resolution: "jsbn@npm:0.1.1" checksum: e5ff29c1b8d965017ef3f9c219dacd6e40ad355c664e277d31246c90545a02e6047018c16c60a00f36d561b3647215c41894f5d869ada6908a2e0ce4200c88f2 languageName: node linkType: hard "jsesc@npm:^1.3.0": version: 1.3.0 resolution: "jsesc@npm:1.3.0" bin: jsesc: bin/jsesc checksum: 9384cc72bf8ef7f2eb75fea64176b8b0c1c5e77604854c72cb4670b7072e112e3baaa69ef134be98cb078834a7812b0bfe676ad441ccd749a59427f5ed2127f1 languageName: node linkType: hard "jsesc@npm:^2.5.1": version: 2.5.2 resolution: "jsesc@npm:2.5.2" bin: jsesc: bin/jsesc checksum: 4dc190771129e12023f729ce20e1e0bfceac84d73a85bc3119f7f938843fe25a4aeccb54b6494dce26fcf263d815f5f31acdefac7cc9329efb8422a4f4d9fa9d languageName: node linkType: hard "json-buffer@npm:3.0.1": version: 3.0.1 resolution: "json-buffer@npm:3.0.1" checksum: 9026b03edc2847eefa2e37646c579300a1f3a4586cfb62bf857832b60c852042d0d6ae55d1afb8926163fa54c2b01d83ae24705f34990348bdac6273a29d4581 languageName: node linkType: hard "json-parse-better-errors@npm:^1.0.1": version: 1.0.2 resolution: "json-parse-better-errors@npm:1.0.2" checksum: ff2b5ba2a70e88fd97a3cb28c1840144c5ce8fae9cbeeddba15afa333a5c407cf0e42300cd0a2885dbb055227fe68d405070faad941beeffbfde9cf3b2c78c5d languageName: node linkType: hard "json-parse-even-better-errors@npm:^2.3.0, json-parse-even-better-errors@npm:^2.3.1": version: 2.3.1 resolution: "json-parse-even-better-errors@npm:2.3.1" checksum: 798ed4cf3354a2d9ccd78e86d2169515a0097a5c133337807cdf7f1fc32e1391d207ccfc276518cc1d7d8d4db93288b8a50ba4293d212ad1336e52a8ec0a941f languageName: node linkType: hard "json-schema-compare@npm:^0.2.2": version: 0.2.2 resolution: "json-schema-compare@npm:0.2.2" dependencies: lodash: ^4.17.4 checksum: dd6f2173857c8e3b77d6ebdfa05bd505bba5b08709ab46b532722f5d1c33b5fee1fc8f3c97d0c0d011db25f9f3b0baf7ab783bb5f55c32abd9f1201760e43c2c languageName: node linkType: hard "json-schema-merge-allof@npm:^0.8.1": version: 0.8.1 resolution: "json-schema-merge-allof@npm:0.8.1" dependencies: compute-lcm: ^1.1.2 json-schema-compare: ^0.2.2 lodash: ^4.17.20 checksum: 82700f6ac77351959138d6b153d77375a8c29cf48d907241b85c8292dd77aabd8cb816400f2b0d17062c4ccc8893832ec4f664ab9c814927ef502e7a595ea873 languageName: node linkType: hard "json-schema-traverse@npm:^0.3.0": version: 0.3.1 resolution: "json-schema-traverse@npm:0.3.1" checksum: a685c36222023471c25c86cddcff506306ecb8f8941922fd356008419889c41c38e1c16d661d5499d0a561b34f417693e9bb9212ba2b2b2f8f8a345a49e4ec1a languageName: node linkType: hard "json-schema-traverse@npm:^0.4.1": version: 0.4.1 resolution: "json-schema-traverse@npm:0.4.1" checksum: 7486074d3ba247769fda17d5181b345c9fb7d12e0da98b22d1d71a5db9698d8b4bd900a3ec1a4ffdd60846fc2556274a5c894d0c48795f14cb03aeae7b55260b languageName: node linkType: hard "json-schema-traverse@npm:^1.0.0": version: 1.0.0 resolution: "json-schema-traverse@npm:1.0.0" checksum: 02f2f466cdb0362558b2f1fd5e15cce82ef55d60cd7f8fa828cf35ba74330f8d767fcae5c5c2adb7851fa811766c694b9405810879bc4e1ddd78a7c0e03658ad languageName: node linkType: hard "json-schema@npm:0.4.0": version: 0.4.0 resolution: "json-schema@npm:0.4.0" checksum: 66389434c3469e698da0df2e7ac5a3281bcff75e797a5c127db7c5b56270e01ae13d9afa3c03344f76e32e81678337a8c912bdbb75101c62e487dc3778461d72 languageName: node linkType: hard "json-stable-stringify-without-jsonify@npm:^1.0.1": version: 1.0.1 resolution: "json-stable-stringify-without-jsonify@npm:1.0.1" checksum: cff44156ddce9c67c44386ad5cddf91925fe06b1d217f2da9c4910d01f358c6e3989c4d5a02683c7a5667f9727ff05831f7aa8ae66c8ff691c556f0884d49215 languageName: node linkType: hard "json-stringify-nice@npm:^1.1.4": version: 1.1.4 resolution: "json-stringify-nice@npm:1.1.4" checksum: 6ddf781148b46857ab04e97f47be05f14c4304b86eb5478369edbeacd070c21c697269964b982fc977e8989d4c59091103b1d9dc291aba40096d6cbb9a392b72 languageName: node linkType: hard "json-stringify-safe@npm:^5.0.1, json-stringify-safe@npm:~5.0.1": version: 5.0.1 resolution: "json-stringify-safe@npm:5.0.1" checksum: 48ec0adad5280b8a96bb93f4563aa1667fd7a36334f79149abd42446d0989f2ddc58274b479f4819f1f00617957e6344c886c55d05a4e15ebb4ab931e4a6a8ee languageName: node linkType: hard "json5@npm:^1.0.1": version: 1.0.2 resolution: "json5@npm:1.0.2" dependencies: minimist: ^1.2.0 bin: json5: lib/cli.js checksum: 866458a8c58a95a49bef3adba929c625e82532bcff1fe93f01d29cb02cac7c3fe1f4b79951b7792c2da9de0b32871a8401a6e3c5b36778ad852bf5b8a61165d7 languageName: node linkType: hard "json5@npm:^2.1.2, json5@npm:^2.2.2, json5@npm:^2.2.3": version: 2.2.3 resolution: "json5@npm:2.2.3" bin: json5: lib/cli.js checksum: 2a7436a93393830bce797d4626275152e37e877b265e94ca69c99e3d20c2b9dab021279146a39cdb700e71b2dd32a4cebd1514cd57cee102b1af906ce5040349 languageName: node linkType: hard "jsonc-parser@npm:3.2.0, jsonc-parser@npm:^3.2.0": version: 3.2.0 resolution: "jsonc-parser@npm:3.2.0" checksum: 946dd9a5f326b745aa326d48a7257e3f4a4b62c5e98ec8e49fa2bdd8d96cef7e6febf1399f5c7016114fd1f68a1c62c6138826d5d90bc650448e3cf0951c53c7 languageName: node linkType: hard "jsonfile@npm:^4.0.0": version: 4.0.0 resolution: "jsonfile@npm:4.0.0" dependencies: graceful-fs: ^4.1.6 dependenciesMeta: graceful-fs: optional: true checksum: 6447d6224f0d31623eef9b51185af03ac328a7553efcee30fa423d98a9e276ca08db87d71e17f2310b0263fd3ffa6c2a90a6308367f661dc21580f9469897c9e languageName: node linkType: hard "jsonfile@npm:^6.0.1": version: 6.1.0 resolution: "jsonfile@npm:6.1.0" dependencies: graceful-fs: ^4.1.6 universalify: ^2.0.0 dependenciesMeta: graceful-fs: optional: true checksum: 7af3b8e1ac8fe7f1eccc6263c6ca14e1966fcbc74b618d3c78a0a2075579487547b94f72b7a1114e844a1e15bb00d440e5d1720bfc4612d790a6f285d5ea8354 languageName: node linkType: hard "jsonparse@npm:^1.2.0, jsonparse@npm:^1.3.1": version: 1.3.1 resolution: "jsonparse@npm:1.3.1" checksum: 6514a7be4674ebf407afca0eda3ba284b69b07f9958a8d3113ef1005f7ec610860c312be067e450c569aab8b89635e332cee3696789c750692bb60daba627f4d languageName: node linkType: hard "jsonpointer@npm:^5.0.1": version: 5.0.1 resolution: "jsonpointer@npm:5.0.1" checksum: 0b40f712900ad0c846681ea2db23b6684b9d5eedf55807b4708c656f5894b63507d0e28ae10aa1bddbea551241035afe62b6df0800fc94c2e2806a7f3adecd7c languageName: node linkType: hard "jsonwebtoken@npm:9.0.0": version: 9.0.0 resolution: "jsonwebtoken@npm:9.0.0" dependencies: jws: ^3.2.2 lodash: ^4.17.21 ms: ^2.1.1 semver: ^7.3.8 checksum: b9181cecf9df99f1dc0253f91ba000a1aa4d91f5816d1608c0dba61a5623726a0bfe200b51df25de18c1a6000825d231ad7ce2788aa54fd48dcb760ad9eb9514 languageName: node linkType: hard "jsprim@npm:^1.2.2": version: 1.4.2 resolution: "jsprim@npm:1.4.2" dependencies: assert-plus: 1.0.0 extsprintf: 1.3.0 json-schema: 0.4.0 verror: 1.10.0 checksum: 2ad1b9fdcccae8b3d580fa6ced25de930eaa1ad154db21bbf8478a4d30bbbec7925b5f5ff29b933fba9412b16a17bd484a8da4fdb3663b5e27af95dd693bab2a languageName: node linkType: hard "just-diff-apply@npm:^5.2.0": version: 5.5.0 resolution: "just-diff-apply@npm:5.5.0" checksum: ed6bbd59781542ccb786bd843038e4591e8390aa788075beb69d358051f68fbeb122bda050b7f42515d51fb64b907d5c7bea694a0543b87b24ce406cfb5f5bfa languageName: node linkType: hard "just-diff@npm:^5.0.1": version: 5.2.0 resolution: "just-diff@npm:5.2.0" checksum: 5527fb6d28a446185250fba501ad857370c049bac7aa5a34c9ec82a45e1380af1a96137be7df2f87252d9f75ef67be41d4c0267d481ed0235b2ceb3ee1f5f75d languageName: node linkType: hard "just-extend@npm:^4.0.2": version: 4.2.1 resolution: "just-extend@npm:4.2.1" checksum: ff9fdede240fad313efeeeb68a660b942e5586d99c0058064c78884894a2690dc09bba44c994ad4e077e45d913fef01a9240c14a72c657b53687ac58de53b39c languageName: node linkType: hard "jwa@npm:^1.4.1": version: 1.4.1 resolution: "jwa@npm:1.4.1" dependencies: buffer-equal-constant-time: 1.0.1 ecdsa-sig-formatter: 1.0.11 safe-buffer: ^5.0.1 checksum: ff30ea7c2dcc61f3ed2098d868bf89d43701605090c5b21b5544b512843ec6fd9e028381a4dda466cbcdb885c2d1150f7c62e7168394ee07941b4098e1035e2f languageName: node linkType: hard "jws@npm:^3.2.2": version: 3.2.2 resolution: "jws@npm:3.2.2" dependencies: jwa: ^1.4.1 safe-buffer: ^5.0.1 checksum: f0213fe5b79344c56cd443428d8f65c16bf842dc8cb8f5aed693e1e91d79c20741663ad6eff07a6d2c433d1831acc9814e8d7bada6a0471fbb91d09ceb2bf5c2 languageName: node linkType: hard "karma-chai@npm:^0.1.0": version: 0.1.0 resolution: "karma-chai@npm:0.1.0" peerDependencies: chai: "*" karma: ">=0.10.9" checksum: 7fae0b4acea35121218c5284e49c7a0e4ad5806abca50ee1451e314e63b4e7b72aaccda90a78d0099cc3a02eb07ebea92cc8877b74cfd62db52fe7bb0907a287 languageName: node linkType: hard "karma-chrome-launcher@npm:^3.1.0": version: 3.2.0 resolution: "karma-chrome-launcher@npm:3.2.0" dependencies: which: ^1.2.1 checksum: e1119e4f95dbcdaec937e5d15a9ffea1b7e5c1d7566f7074ff140161983d4a0821ad274d3dcc34aacfb792caf842a39c459ba9c263723faa6a060cca8692d9b7 languageName: node linkType: hard "karma-coverage@npm:^2.0.3": version: 2.2.0 resolution: "karma-coverage@npm:2.2.0" dependencies: istanbul-lib-coverage: ^3.2.0 istanbul-lib-instrument: ^5.1.0 istanbul-lib-report: ^3.0.0 istanbul-lib-source-maps: ^4.0.1 istanbul-reports: ^3.0.5 minimatch: ^3.0.4 checksum: 79c9df27c2de956e3314077256e508befbb7bc797f77c1ec495fc3d905574047269bfd015ea2da644a9b188fde09da42a4186b466a1cce86db45026b566b8cf0 languageName: node linkType: hard "karma-firefox-launcher@npm:^2.1.1": version: 2.1.2 resolution: "karma-firefox-launcher@npm:2.1.2" dependencies: is-wsl: ^2.2.0 which: ^2.0.1 checksum: bfd5b35b35949fee50d92def57b32ab9702926ac24c90036583b76beac33fe8100ec601c9e71087b861d6ca7b3d54e8d2f9b62fa1b5115c8b99512dd763cf2ad languageName: node linkType: hard "karma-ie-launcher@npm:^1.0.0": version: 1.0.0 resolution: "karma-ie-launcher@npm:1.0.0" dependencies: lodash: ^4.6.1 peerDependencies: karma: ">=0.9" checksum: e1b337c497926951edfad38b8f188e64555a5bba4d4a2947a14dba7ba7f335f87d53205bbc623bc6635223dd172d593ddc69a16c2fa6d115303673d177d1dd36 languageName: node linkType: hard "karma-mocha-reporter@npm:^2.2.5": version: 2.2.5 resolution: "karma-mocha-reporter@npm:2.2.5" dependencies: chalk: ^2.1.0 log-symbols: ^2.1.0 strip-ansi: ^4.0.0 peerDependencies: karma: ">=0.13" checksum: 8b9e43c64bc975d38c18958d7ba95baf9a8d23f11ee4641955fe0ae5e8bd563596c8965d6f290ce8c73c4832fb98bb7ed5fbbaa82b49273d2ca24aa7f3d0d5e5 languageName: node linkType: hard "karma-mocha@npm:^2.0.1": version: 2.0.1 resolution: "karma-mocha@npm:2.0.1" dependencies: minimist: ^1.2.3 checksum: a09f4758758a899fb97836660624ccd1769325e05f6efca63c9132806cc8dfeb20eaf78b3bc4db7921dcb3c48384fbfd5cddfa3568ddaf00197c75852ec9b480 languageName: node linkType: hard "karma-webpack@npm:^5.0.0": version: 5.0.0 resolution: "karma-webpack@npm:5.0.0" dependencies: glob: ^7.1.3 minimatch: ^3.0.4 webpack-merge: ^4.1.5 peerDependencies: webpack: ^5.0.0 checksum: 869b835f91b99036d12c1b4342126b75093f7f524e2b245d557e720a402faf8bc90050f99962b0f12af98535812f46fa6325d1a7ed8569aed6dc5ead40c63ec4 languageName: node linkType: hard "karma@npm:^6.3.3": version: 6.4.2 resolution: "karma@npm:6.4.2" dependencies: "@colors/colors": 1.5.0 body-parser: ^1.19.0 braces: ^3.0.2 chokidar: ^3.5.1 connect: ^3.7.0 di: ^0.0.1 dom-serialize: ^2.2.1 glob: ^7.1.7 graceful-fs: ^4.2.6 http-proxy: ^1.18.1 isbinaryfile: ^4.0.8 lodash: ^4.17.21 log4js: ^6.4.1 mime: ^2.5.2 minimatch: ^3.0.4 mkdirp: ^0.5.5 qjobs: ^1.2.0 range-parser: ^1.2.1 rimraf: ^3.0.2 socket.io: ^4.4.1 source-map: ^0.6.1 tmp: ^0.2.1 ua-parser-js: ^0.7.30 yargs: ^16.1.1 bin: karma: bin/karma checksum: e493874729d87955f7c0f1f6c20b2e27184c82a3b33a14607538df9b049077b0263ecb398f5f0ebbba92325cb16f4f43a1461fa486d5a06eabbfdfb5f289f001 languageName: node linkType: hard "keygrip@npm:~1.1.0": version: 1.1.0 resolution: "keygrip@npm:1.1.0" dependencies: tsscmp: 1.0.6 checksum: 078cd16a463d187121f0a27c1c9c95c52ad392b620f823431689f345a0501132cee60f6e96914b07d570105af470b96960402accd6c48a0b1f3cd8fac4fa2cae languageName: node linkType: hard "keyv@npm:^4.0.0": version: 4.5.2 resolution: "keyv@npm:4.5.2" dependencies: json-buffer: 3.0.1 checksum: 13ad58303acd2261c0d4831b4658451603fd159e61daea2121fcb15feb623e75ee328cded0572da9ca76b7b3ceaf8e614f1806c6b3af5db73c9c35a345259651 languageName: node linkType: hard "kind-of@npm:^6.0.2, kind-of@npm:^6.0.3": version: 6.0.3 resolution: "kind-of@npm:6.0.3" checksum: 3ab01e7b1d440b22fe4c31f23d8d38b4d9b91d9f291df683476576493d5dfd2e03848a8b05813dd0c3f0e835bc63f433007ddeceb71f05cb25c45ae1b19c6d3b languageName: node linkType: hard "kleur@npm:4.1.5": version: 4.1.5 resolution: "kleur@npm:4.1.5" checksum: 1dc476e32741acf0b1b5b0627ffd0d722e342c1b0da14de3e8ae97821327ca08f9fb944542fb3c126d90ac5f27f9d804edbe7c585bf7d12ef495d115e0f22c12 languageName: node linkType: hard "klona@npm:^2.0.5": version: 2.0.6 resolution: "klona@npm:2.0.6" checksum: ac9ee3732e42b96feb67faae4d27cf49494e8a3bf3fa7115ce242fe04786788e0aff4741a07a45a2462e2079aa983d73d38519c85d65b70ef11447bbc3c58ce7 languageName: node linkType: hard "lerna@npm:^5.4.3": version: 5.6.2 resolution: "lerna@npm:5.6.2" dependencies: "@lerna/add": 5.6.2 "@lerna/bootstrap": 5.6.2 "@lerna/changed": 5.6.2 "@lerna/clean": 5.6.2 "@lerna/cli": 5.6.2 "@lerna/command": 5.6.2 "@lerna/create": 5.6.2 "@lerna/diff": 5.6.2 "@lerna/exec": 5.6.2 "@lerna/import": 5.6.2 "@lerna/info": 5.6.2 "@lerna/init": 5.6.2 "@lerna/link": 5.6.2 "@lerna/list": 5.6.2 "@lerna/publish": 5.6.2 "@lerna/run": 5.6.2 "@lerna/version": 5.6.2 "@nrwl/devkit": ">=14.8.1 < 16" import-local: ^3.0.2 inquirer: ^8.2.4 npmlog: ^6.0.2 nx: ">=14.8.1 < 16" typescript: ^3 || ^4 bin: lerna: cli.js checksum: 5e06ac9f1e47e414231aa9d9e6a74f6ea7eef62e0110941b1ac1a73635cfaaae3802047e16c33c9682f5932e72653b959b2895cc49da334afbae51ff718baca3 languageName: node linkType: hard "less@npm:^4.1.2": version: 4.1.3 resolution: "less@npm:4.1.3" dependencies: copy-anything: ^2.0.1 errno: ^0.1.1 graceful-fs: ^4.1.2 image-size: ~0.5.0 make-dir: ^2.1.0 mime: ^1.4.1 needle: ^3.1.0 parse-node-version: ^1.0.1 source-map: ~0.6.0 tslib: ^2.3.0 dependenciesMeta: errno: optional: true graceful-fs: optional: true image-size: optional: true make-dir: optional: true mime: optional: true needle: optional: true source-map: optional: true bin: lessc: bin/lessc checksum: 1470fbec993a375eb28d729cd906805fd62b7a7f1b4f5b4d62d04e81eaba987a9373e74aa0b9fa9191149ebc0bfb42e2ea98a038555555b7b241c10a854067cc languageName: node linkType: hard "levn@npm:^0.4.1": version: 0.4.1 resolution: "levn@npm:0.4.1" dependencies: prelude-ls: ^1.2.1 type-check: ~0.4.0 checksum: 12c5021c859bd0f5248561bf139121f0358285ec545ebf48bb3d346820d5c61a4309535c7f387ed7d84361cf821e124ce346c6b7cef8ee09a67c1473b46d0fc4 languageName: node linkType: hard "lib0@npm:^0.2.42, lib0@npm:^0.2.74": version: 0.2.74 resolution: "lib0@npm:0.2.74" dependencies: isomorphic.js: ^0.2.4 bin: 0gentesthtml: bin/gentesthtml.js 0serve: bin/0serve.js checksum: a468fc2f8d231bdcb305f04706d0e568ad53a0aa968aaf3d1769fcfbf326a5b158e98d86c0aa8edf26b3223cb60687480f15cfc0d07c681333f9d9d55dd7c802 languageName: node linkType: hard "libnpmaccess@npm:^6.0.3": version: 6.0.4 resolution: "libnpmaccess@npm:6.0.4" dependencies: aproba: ^2.0.0 minipass: ^3.1.1 npm-package-arg: ^9.0.1 npm-registry-fetch: ^13.0.0 checksum: 86130b435c67a03254489c3b3684d435260b609164f76bcc69adbee78652c36a64551228b2c5ddc2b16851e9e367ee0ba173a641406768397716faa006042322 languageName: node linkType: hard "libnpmpublish@npm:^6.0.4": version: 6.0.5 resolution: "libnpmpublish@npm:6.0.5" dependencies: normalize-package-data: ^4.0.0 npm-package-arg: ^9.0.1 npm-registry-fetch: ^13.0.0 semver: ^7.3.7 ssri: ^9.0.0 checksum: d2f2434517038438be44db2e90e1c8c524df05f7c3b1458617177c2f9ca008dde8a72a4f739b34aee4df0352f71c9289788da86aa38a4709e05c6db33eed570a languageName: node linkType: hard "license-webpack-plugin@npm:^2.3.14": version: 2.3.21 resolution: "license-webpack-plugin@npm:2.3.21" dependencies: "@types/webpack-sources": ^0.1.5 webpack-sources: ^1.2.0 peerDependenciesMeta: webpack: optional: true checksum: 6208bd2060d200fbffbcc89702c929d50c5a4a3f2158b046cf813b3f7f728bbbe4611b9fea2d67843bb5e7d64ad9122cc368a19ac73f5c4ad41765e6283bdc0c languageName: node linkType: hard "lilconfig@npm:2.0.5": version: 2.0.5 resolution: "lilconfig@npm:2.0.5" checksum: f7bb9e42656f06930ad04e583026f087508ae408d3526b8b54895e934eb2a966b7aafae569656f2c79a29fe6d779b3ec44ba577e80814734c8655d6f71cdf2d1 languageName: node linkType: hard "lilconfig@npm:^2.0.5": version: 2.1.0 resolution: "lilconfig@npm:2.1.0" checksum: 8549bb352b8192375fed4a74694cd61ad293904eee33f9d4866c2192865c44c4eb35d10782966242634e0cbc1e91fe62b1247f148dc5514918e3a966da7ea117 languageName: node linkType: hard "lines-and-columns@npm:^1.1.6": version: 1.2.4 resolution: "lines-and-columns@npm:1.2.4" checksum: 0c37f9f7fa212b38912b7145e1cd16a5f3cd34d782441c3e6ca653485d326f58b3caccda66efce1c5812bde4961bbde3374fae4b0d11bf1226152337f3894aa5 languageName: node linkType: hard "lines-and-columns@npm:~2.0.3": version: 2.0.3 resolution: "lines-and-columns@npm:2.0.3" checksum: 5955363dfd7d3d7c476d002eb47944dbe0310d57959e2112dce004c0dc76cecfd479cf8c098fd479ff344acdf04ee0e82b455462a26492231ac152f6c48d17a1 languageName: node linkType: hard "lint-staged@npm:^12.1.3": version: 12.5.0 resolution: "lint-staged@npm:12.5.0" dependencies: cli-truncate: ^3.1.0 colorette: ^2.0.16 commander: ^9.3.0 debug: ^4.3.4 execa: ^5.1.1 lilconfig: 2.0.5 listr2: ^4.0.5 micromatch: ^4.0.5 normalize-path: ^3.0.0 object-inspect: ^1.12.2 pidtree: ^0.5.0 string-argv: ^0.3.1 supports-color: ^9.2.2 yaml: ^1.10.2 bin: lint-staged: bin/lint-staged.js checksum: ac203917be098305bc0aebd5f1a969e88ea0854e8fb2199ebcbbb059d8bce324cf97db8f3d25f7954dd48c0666ae13987fb4db569d5b6fecda06f9fb742278e1 languageName: node linkType: hard "listr2@npm:^4.0.5": version: 4.0.5 resolution: "listr2@npm:4.0.5" dependencies: cli-truncate: ^2.1.0 colorette: ^2.0.16 log-update: ^4.0.0 p-map: ^4.0.0 rfdc: ^1.3.0 rxjs: ^7.5.5 through: ^2.3.8 wrap-ansi: ^7.0.0 peerDependencies: enquirer: ">= 2.3.0 < 3" peerDependenciesMeta: enquirer: optional: true checksum: 7af31851abe25969ef0581c6db808117e36af15b131401795182427769d9824f451ba9e8aff6ccd25b6a4f6c8796f816292caf08e5f1f9b1775e8e9c313dc6c5 languageName: node linkType: hard "load-json-file@npm:^4.0.0": version: 4.0.0 resolution: "load-json-file@npm:4.0.0" dependencies: graceful-fs: ^4.1.2 parse-json: ^4.0.0 pify: ^3.0.0 strip-bom: ^3.0.0 checksum: 8f5d6d93ba64a9620445ee9bde4d98b1eac32cf6c8c2d20d44abfa41a6945e7969456ab5f1ca2fb06ee32e206c9769a20eec7002fe290de462e8c884b6b8b356 languageName: node linkType: hard "load-json-file@npm:^6.2.0": version: 6.2.0 resolution: "load-json-file@npm:6.2.0" dependencies: graceful-fs: ^4.1.15 parse-json: ^5.0.0 strip-bom: ^4.0.0 type-fest: ^0.6.0 checksum: 4429e430ebb99375fc7cd936348e4f7ba729486080ced4272091c1e386a7f5f738ea3337d8ffd4b01c2f5bc3ddde92f2c780045b66838fe98bdb79f901884643 languageName: node linkType: hard "loader-runner@npm:^4.2.0": version: 4.3.0 resolution: "loader-runner@npm:4.3.0" checksum: a90e00dee9a16be118ea43fec3192d0b491fe03a32ed48a4132eb61d498f5536a03a1315531c19d284392a8726a4ecad71d82044c28d7f22ef62e029bf761569 languageName: node linkType: hard "loader-utils@npm:^1.1.0": version: 1.4.2 resolution: "loader-utils@npm:1.4.2" dependencies: big.js: ^5.2.2 emojis-list: ^3.0.0 json5: ^1.0.1 checksum: eb6fb622efc0ffd1abdf68a2022f9eac62bef8ec599cf8adb75e94d1d338381780be6278534170e99edc03380a6d29bc7eb1563c89ce17c5fed3a0b17f1ad804 languageName: node linkType: hard "loader-utils@npm:^2.0.0": version: 2.0.4 resolution: "loader-utils@npm:2.0.4" dependencies: big.js: ^5.2.2 emojis-list: ^3.0.0 json5: ^2.1.2 checksum: a5281f5fff1eaa310ad5e1164095689443630f3411e927f95031ab4fb83b4a98f388185bb1fe949e8ab8d4247004336a625e9255c22122b815bb9a4c5d8fc3b7 languageName: node linkType: hard "locate-path@npm:^2.0.0": version: 2.0.0 resolution: "locate-path@npm:2.0.0" dependencies: p-locate: ^2.0.0 path-exists: ^3.0.0 checksum: 02d581edbbbb0fa292e28d96b7de36b5b62c2fa8b5a7e82638ebb33afa74284acf022d3b1e9ae10e3ffb7658fbc49163fcd5e76e7d1baaa7801c3e05a81da755 languageName: node linkType: hard "locate-path@npm:^5.0.0": version: 5.0.0 resolution: "locate-path@npm:5.0.0" dependencies: p-locate: ^4.1.0 checksum: 83e51725e67517287d73e1ded92b28602e3ae5580b301fe54bfb76c0c723e3f285b19252e375712316774cf52006cb236aed5704692c32db0d5d089b69696e30 languageName: node linkType: hard "locate-path@npm:^6.0.0": version: 6.0.0 resolution: "locate-path@npm:6.0.0" dependencies: p-locate: ^5.0.0 checksum: 72eb661788a0368c099a184c59d2fee760b3831c9c1c33955e8a19ae4a21b4116e53fa736dc086cdeb9fce9f7cc508f2f92d2d3aae516f133e16a2bb59a39f5a languageName: node linkType: hard "lockfile@npm:1.0.4": version: 1.0.4 resolution: "lockfile@npm:1.0.4" dependencies: signal-exit: ^3.0.2 checksum: 8de35aace8acbe883cbca3cc3959e88904d57c79dccd4afffc64aea8f9cf7b4c63598d08b8add66fbf381f8fb3ce4fd4c518cd231c797c266b6c790eb7b33abc languageName: node linkType: hard "lodash-es@npm:^4.17.21": version: 4.17.21 resolution: "lodash-es@npm:4.17.21" checksum: 05cbffad6e2adbb331a4e16fbd826e7faee403a1a04873b82b42c0f22090f280839f85b95393f487c1303c8a3d2a010048bf06151a6cbe03eee4d388fb0a12d2 languageName: node linkType: hard "lodash._reinterpolate@npm:^3.0.0": version: 3.0.0 resolution: "lodash._reinterpolate@npm:3.0.0" checksum: 06d2d5f33169604fa5e9f27b6067ed9fb85d51a84202a656901e5ffb63b426781a601508466f039c720af111b0c685d12f1a5c14ff8df5d5f27e491e562784b2 languageName: node linkType: hard "lodash.escape@npm:^4.0.1": version: 4.0.1 resolution: "lodash.escape@npm:4.0.1" checksum: fcb54f457497256964d619d5cccbd80a961916fca60df3fe0fa3e7f052715c2944c0ed5aefb4f9e047d127d44aa2d55555f3350cb42c6549e9e293fb30b41e7f languageName: node linkType: hard "lodash.get@npm:^4.4.2": version: 4.4.2 resolution: "lodash.get@npm:4.4.2" checksum: e403047ddb03181c9d0e92df9556570e2b67e0f0a930fcbbbd779370972368f5568e914f913e93f3b08f6d492abc71e14d4e9b7a18916c31fa04bd2306efe545 languageName: node linkType: hard "lodash.ismatch@npm:^4.4.0": version: 4.4.0 resolution: "lodash.ismatch@npm:4.4.0" checksum: a393917578842705c7fc1a30fb80613d1ac42d20b67eb26a2a6004d6d61ee90b419f9eb320508ddcd608e328d91eeaa2651411727eaa9a12534ed6ccb02fc705 languageName: node linkType: hard "lodash.memoize@npm:^4.1.2": version: 4.1.2 resolution: "lodash.memoize@npm:4.1.2" checksum: 9ff3942feeccffa4f1fafa88d32f0d24fdc62fd15ded5a74a5f950ff5f0c6f61916157246744c620173dddf38d37095a92327d5fd3861e2063e736a5c207d089 languageName: node linkType: hard "lodash.merge@npm:^4.6.2": version: 4.6.2 resolution: "lodash.merge@npm:4.6.2" checksum: ad580b4bdbb7ca1f7abf7e1bce63a9a0b98e370cf40194b03380a46b4ed799c9573029599caebc1b14e3f24b111aef72b96674a56cfa105e0f5ac70546cdc005 languageName: node linkType: hard "lodash.mergewith@npm:^4.6.1": version: 4.6.2 resolution: "lodash.mergewith@npm:4.6.2" checksum: a6db2a9339752411f21b956908c404ec1e088e783a65c8b29e30ae5b3b6384f82517662d6f425cc97c2070b546cc2c7daaa8d33f78db7b6e9be06cd834abdeb8 languageName: node linkType: hard "lodash.template@npm:^4.2.4": version: 4.5.0 resolution: "lodash.template@npm:4.5.0" dependencies: lodash._reinterpolate: ^3.0.0 lodash.templatesettings: ^4.0.0 checksum: ca64e5f07b6646c9d3dbc0fe3aaa995cb227c4918abd1cef7a9024cd9c924f2fa389a0ec4296aa6634667e029bc81d4bbdb8efbfde11df76d66085e6c529b450 languageName: node linkType: hard "lodash.templatesettings@npm:^4.0.0": version: 4.2.0 resolution: "lodash.templatesettings@npm:4.2.0" dependencies: lodash._reinterpolate: ^3.0.0 checksum: 863e025478b092997e11a04e9d9e735875eeff1ffcd6c61742aa8272e3c2cddc89ce795eb9726c4e74cef5991f722897ff37df7738a125895f23fc7d12a7bb59 languageName: node linkType: hard "lodash.uniq@npm:^4.5.0": version: 4.5.0 resolution: "lodash.uniq@npm:4.5.0" checksum: a4779b57a8d0f3c441af13d9afe7ecff22dd1b8ce1129849f71d9bbc8e8ee4e46dfb4b7c28f7ad3d67481edd6e51126e4e2a6ee276e25906d10f7140187c392d languageName: node linkType: hard "lodash@npm:4, lodash@npm:4.17.21, lodash@npm:^4.17.14, lodash@npm:^4.17.15, lodash@npm:^4.17.20, lodash@npm:^4.17.21, lodash@npm:^4.17.4, lodash@npm:^4.6.1, lodash@npm:^4.7.0": version: 4.17.21 resolution: "lodash@npm:4.17.21" checksum: eb835a2e51d381e561e508ce932ea50a8e5a68f4ebdd771ea240d3048244a8d13658acbd502cd4829768c56f2e16bdd4340b9ea141297d472517b83868e677f7 languageName: node linkType: hard "log-symbols@npm:4.1.0, log-symbols@npm:^4.1.0": version: 4.1.0 resolution: "log-symbols@npm:4.1.0" dependencies: chalk: ^4.1.0 is-unicode-supported: ^0.1.0 checksum: fce1497b3135a0198803f9f07464165e9eb83ed02ceb2273930a6f8a508951178d8cf4f0378e9d28300a2ed2bc49050995d2bd5f53ab716bb15ac84d58c6ef74 languageName: node linkType: hard "log-symbols@npm:^2.1.0": version: 2.2.0 resolution: "log-symbols@npm:2.2.0" dependencies: chalk: ^2.0.1 checksum: 4c95e3b65f0352dbe91dc4989c10baf7a44e2ef5b0db7e6721e1476268e2b6f7090c3aa880d4f833a05c5c3ff18f4ec5215a09bd0099986d64a8186cfeb48ac8 languageName: node linkType: hard "log-update@npm:^4.0.0": version: 4.0.0 resolution: "log-update@npm:4.0.0" dependencies: ansi-escapes: ^4.3.0 cli-cursor: ^3.1.0 slice-ansi: ^4.0.0 wrap-ansi: ^6.2.0 checksum: ae2f85bbabc1906034154fb7d4c4477c79b3e703d22d78adee8b3862fa913942772e7fa11713e3d96fb46de4e3cabefbf5d0a544344f03b58d3c4bff52aa9eb2 languageName: node linkType: hard "log4js@npm:^6.4.1": version: 6.9.1 resolution: "log4js@npm:6.9.1" dependencies: date-format: ^4.0.14 debug: ^4.3.4 flatted: ^3.2.7 rfdc: ^1.3.0 streamroller: ^3.1.5 checksum: 59d98c37d4163138dab5d9b06ae26965d1353106fece143973d57b1003b3a482791aa21374fd2cca81a953b8837b2f9756ac225404e60cbfa4dd3ab59f082e2e languageName: node linkType: hard "loose-envify@npm:^1.0.0, loose-envify@npm:^1.1.0, loose-envify@npm:^1.4.0": version: 1.4.0 resolution: "loose-envify@npm:1.4.0" dependencies: js-tokens: ^3.0.0 || ^4.0.0 bin: loose-envify: cli.js checksum: 6517e24e0cad87ec9888f500c5b5947032cdfe6ef65e1c1936a0c48a524b81e65542c9c3edc91c97d5bddc806ee2a985dbc79be89215d613b1de5db6d1cfe6f4 languageName: node linkType: hard "loupe@npm:^2.3.1": version: 2.3.6 resolution: "loupe@npm:2.3.6" dependencies: get-func-name: ^2.0.0 checksum: cc83f1b124a1df7384601d72d8d1f5fe95fd7a8185469fec48bb2e4027e45243949e7a013e8d91051a138451ff0552310c32aa9786e60b6a30d1e801bdc2163f languageName: node linkType: hard "lowdb@npm:1.0.0": version: 1.0.0 resolution: "lowdb@npm:1.0.0" dependencies: graceful-fs: ^4.1.3 is-promise: ^2.1.0 lodash: 4 pify: ^3.0.0 steno: ^0.4.1 checksum: 7ae89e3d6e00963129f72c4d4e1fe8e4cda5c08a46b4f4e525109483147e799df90c07d95aeced1c270cc10f4a24c6660fe1601cc4b3a6e2c3f922ad64517eab languageName: node linkType: hard "lowercase-keys@npm:^2.0.0": version: 2.0.0 resolution: "lowercase-keys@npm:2.0.0" checksum: 24d7ebd56ccdf15ff529ca9e08863f3c54b0b9d1edb97a3ae1af34940ae666c01a1e6d200707bce730a8ef76cb57cc10e65f245ecaaf7e6bc8639f2fb460ac23 languageName: node linkType: hard "lru-cache@npm:7.16.1": version: 7.16.1 resolution: "lru-cache@npm:7.16.1" checksum: 64618e3ed4fd1203afedd9bbf5247921b1419f8e3100f20e58e5f04e741f8287bd7d04fefaad332411bb53b3a73445714b235de750cf5d310cba1fa23bd82795 languageName: node linkType: hard "lru-cache@npm:7.18.3, lru-cache@npm:^7.4.4, lru-cache@npm:^7.5.1, lru-cache@npm:^7.7.1": version: 7.18.3 resolution: "lru-cache@npm:7.18.3" checksum: e550d772384709deea3f141af34b6d4fa392e2e418c1498c078de0ee63670f1f46f5eee746e8ef7e69e1c895af0d4224e62ee33e66a543a14763b0f2e74c1356 languageName: node linkType: hard "lru-cache@npm:^5.1.1": version: 5.1.1 resolution: "lru-cache@npm:5.1.1" dependencies: yallist: ^3.0.2 checksum: c154ae1cbb0c2206d1501a0e94df349653c92c8cbb25236d7e85190bcaf4567a03ac6eb43166fabfa36fd35623694da7233e88d9601fbf411a9a481d85dbd2cb languageName: node linkType: hard "lru-cache@npm:^6.0.0": version: 6.0.0 resolution: "lru-cache@npm:6.0.0" dependencies: yallist: ^4.0.0 checksum: f97f499f898f23e4585742138a22f22526254fdba6d75d41a1c2526b3b6cc5747ef59c5612ba7375f42aca4f8461950e925ba08c991ead0651b4918b7c978297 languageName: node linkType: hard "lru-cache@npm:^9.1.1": version: 9.1.1 resolution: "lru-cache@npm:9.1.1" checksum: 4d703bb9b66216bbee55ead82a9682820a2b6acbdfca491b235390b1ef1056000a032d56dfb373fdf9ad4492f1fa9d04cc9a05a77f25bd7ce6901d21ad9b68b7 languageName: node linkType: hard "lru-cache@npm:^9.1.1 || ^10.0.0": version: 10.0.0 resolution: "lru-cache@npm:10.0.0" checksum: 18f101675fe283bc09cda0ef1e3cc83781aeb8373b439f086f758d1d91b28730950db785999cd060d3c825a8571c03073e8c14512b6655af2188d623031baf50 languageName: node linkType: hard "lunr-mutable-indexes@npm:2.3.2": version: 2.3.2 resolution: "lunr-mutable-indexes@npm:2.3.2" dependencies: lunr: ">= 2.3.0 < 2.4.0" checksum: 792ec9a7f02071e65a03d843555ce8ee65b4580e767bdf0f5a0c72fecbcaa928a3e71c0c001d9d80c3855fc070ae826470f5aaaf8f1863d3402db057e59c5176 languageName: node linkType: hard "lunr@npm:>= 2.3.0 < 2.4.0, lunr@npm:^2.3.9": version: 2.3.9 resolution: "lunr@npm:2.3.9" checksum: 176719e24fcce7d3cf1baccce9dd5633cd8bdc1f41ebe6a180112e5ee99d80373fe2454f5d4624d437e5a8319698ca6837b9950566e15d2cae5f2a543a3db4b8 languageName: node linkType: hard "make-dir@npm:^2.1.0": version: 2.1.0 resolution: "make-dir@npm:2.1.0" dependencies: pify: ^4.0.1 semver: ^5.6.0 checksum: 043548886bfaf1820323c6a2997e6d2fa51ccc2586ac14e6f14634f7458b4db2daf15f8c310e2a0abd3e0cddc64df1890d8fc7263033602c47bb12cbfcf86aab languageName: node linkType: hard "make-dir@npm:^3.0.0": version: 3.1.0 resolution: "make-dir@npm:3.1.0" dependencies: semver: ^6.0.0 checksum: 484200020ab5a1fdf12f393fe5f385fc8e4378824c940fba1729dcd198ae4ff24867bc7a5646331e50cead8abff5d9270c456314386e629acec6dff4b8016b78 languageName: node linkType: hard "make-fetch-happen@npm:^10.0.3, make-fetch-happen@npm:^10.0.6": version: 10.2.1 resolution: "make-fetch-happen@npm:10.2.1" dependencies: agentkeepalive: ^4.2.1 cacache: ^16.1.0 http-cache-semantics: ^4.1.0 http-proxy-agent: ^5.0.0 https-proxy-agent: ^5.0.0 is-lambda: ^1.0.1 lru-cache: ^7.7.1 minipass: ^3.1.6 minipass-collect: ^1.0.2 minipass-fetch: ^2.0.3 minipass-flush: ^1.0.5 minipass-pipeline: ^1.2.4 negotiator: ^0.6.3 promise-retry: ^2.0.1 socks-proxy-agent: ^7.0.0 ssri: ^9.0.0 checksum: 2332eb9a8ec96f1ffeeea56ccefabcb4193693597b132cd110734d50f2928842e22b84cfa1508e921b8385cdfd06dda9ad68645fed62b50fff629a580f5fb72c languageName: node linkType: hard "map-obj@npm:^1.0.0": version: 1.0.1 resolution: "map-obj@npm:1.0.1" checksum: 9949e7baec2a336e63b8d4dc71018c117c3ce6e39d2451ccbfd3b8350c547c4f6af331a4cbe1c83193d7c6b786082b6256bde843db90cb7da2a21e8fcc28afed languageName: node linkType: hard "map-obj@npm:^4.0.0": version: 4.3.0 resolution: "map-obj@npm:4.3.0" checksum: fbc554934d1a27a1910e842bc87b177b1a556609dd803747c85ece420692380827c6ae94a95cce4407c054fa0964be3bf8226f7f2cb2e9eeee432c7c1985684e languageName: node linkType: hard "markdown-to-jsx@npm:^7.2.0": version: 7.2.0 resolution: "markdown-to-jsx@npm:7.2.0" peerDependencies: react: ">= 0.14.0" checksum: ea417e684d7eec9f1beebc9423aba377116ef77c3cd83a2d622df1b9030ffef99aa9b3f431192b94f3237943a33560e6dda9be8a4c1d25187518d09986dad22f languageName: node linkType: hard "marked@npm:^4.2.12": version: 4.3.0 resolution: "marked@npm:4.3.0" bin: marked: bin/marked.js checksum: 0db6817893952c3ec710eb9ceafb8468bf5ae38cb0f92b7b083baa13d70b19774674be04db5b817681fa7c5c6a088f61300815e4dd75a59696f4716ad69f6260 languageName: node linkType: hard "math-expression-evaluator@npm:^1.2.14": version: 1.4.0 resolution: "math-expression-evaluator@npm:1.4.0" checksum: 451c7b734ccb02759980e03f10c63fb3888b6af0253582ae38e8ca7ef037e15b9b2b82ef3476e79ed257694e8eacc9156b44379d3153de8e6c071a4664f70f93 languageName: node linkType: hard "media-typer@npm:0.3.0": version: 0.3.0 resolution: "media-typer@npm:0.3.0" checksum: af1b38516c28ec95d6b0826f6c8f276c58aec391f76be42aa07646b4e39d317723e869700933ca6995b056db4b09a78c92d5440dc23657e6764be5d28874bba1 languageName: node linkType: hard "memorystream@npm:^0.3.1": version: 0.3.1 resolution: "memorystream@npm:0.3.1" checksum: f18b42440d24d09516d01466c06adf797df7873f0d40aa7db02e5fb9ed83074e5e65412d0720901d7069363465f82dc4f8bcb44f0cde271567a61426ce6ca2e9 languageName: node linkType: hard "meow@npm:^8.0.0": version: 8.1.2 resolution: "meow@npm:8.1.2" dependencies: "@types/minimist": ^1.2.0 camelcase-keys: ^6.2.2 decamelize-keys: ^1.1.0 hard-rejection: ^2.1.0 minimist-options: 4.1.0 normalize-package-data: ^3.0.0 read-pkg-up: ^7.0.1 redent: ^3.0.0 trim-newlines: ^3.0.0 type-fest: ^0.18.0 yargs-parser: ^20.2.3 checksum: bc23bf1b4423ef6a821dff9734406bce4b91ea257e7f10a8b7f896f45b59649f07adc0926e2917eacd8cf1df9e4cd89c77623cf63dfd0f8bf54de07a32ee5a85 languageName: node linkType: hard "merge-descriptors@npm:1.0.1": version: 1.0.1 resolution: "merge-descriptors@npm:1.0.1" checksum: 5abc259d2ae25bb06d19ce2b94a21632583c74e2a9109ee1ba7fd147aa7362b380d971e0251069f8b3eb7d48c21ac839e21fa177b335e82c76ec172e30c31a26 languageName: node linkType: hard "merge-stream@npm:^2.0.0": version: 2.0.0 resolution: "merge-stream@npm:2.0.0" checksum: 6fa4dcc8d86629705cea944a4b88ef4cb0e07656ebf223fa287443256414283dd25d91c1cd84c77987f2aec5927af1a9db6085757cb43d90eb170ebf4b47f4f4 languageName: node linkType: hard "merge2@npm:^1.2.3, merge2@npm:^1.3.0, merge2@npm:^1.4.1": version: 1.4.1 resolution: "merge2@npm:1.4.1" checksum: 7268db63ed5169466540b6fb947aec313200bcf6d40c5ab722c22e242f651994619bcd85601602972d3c85bd2cc45a358a4c61937e9f11a061919a1da569b0c2 languageName: node linkType: hard "methods@npm:~1.1.2": version: 1.1.2 resolution: "methods@npm:1.1.2" checksum: 0917ff4041fa8e2f2fda5425a955fe16ca411591fbd123c0d722fcf02b73971ed6f764d85f0a6f547ce49ee0221ce2c19a5fa692157931cecb422984f1dcd13a languageName: node linkType: hard "micromatch@npm:^4.0.4, micromatch@npm:^4.0.5": version: 4.0.5 resolution: "micromatch@npm:4.0.5" dependencies: braces: ^3.0.2 picomatch: ^2.3.1 checksum: 02a17b671c06e8fefeeb6ef996119c1e597c942e632a21ef589154f23898c9c6a9858526246abb14f8bca6e77734aa9dcf65476fca47cedfb80d9577d52843fc languageName: node linkType: hard "mime-db@npm:1.52.0, mime-db@npm:>= 1.43.0 < 2": version: 1.52.0 resolution: "mime-db@npm:1.52.0" checksum: 0d99a03585f8b39d68182803b12ac601d9c01abfa28ec56204fa330bc9f3d1c5e14beb049bafadb3dbdf646dfb94b87e24d4ec7b31b7279ef906a8ea9b6a513f languageName: node linkType: hard "mime-types@npm:^2.1.12, mime-types@npm:^2.1.27, mime-types@npm:~2.1.19, mime-types@npm:~2.1.24, mime-types@npm:~2.1.34": version: 2.1.35 resolution: "mime-types@npm:2.1.35" dependencies: mime-db: 1.52.0 checksum: 89a5b7f1def9f3af5dad6496c5ed50191ae4331cc5389d7c521c8ad28d5fdad2d06fd81baf38fed813dc4e46bb55c8145bb0ff406330818c9cf712fb2e9b3836 languageName: node linkType: hard "mime@npm:1.6.0, mime@npm:^1.4.1, mime@npm:^1.6.0": version: 1.6.0 resolution: "mime@npm:1.6.0" bin: mime: cli.js checksum: fef25e39263e6d207580bdc629f8872a3f9772c923c7f8c7e793175cee22777bbe8bba95e5d509a40aaa292d8974514ce634ae35769faa45f22d17edda5e8557 languageName: node linkType: hard "mime@npm:2.6.0, mime@npm:^2.5.2": version: 2.6.0 resolution: "mime@npm:2.6.0" bin: mime: cli.js checksum: 1497ba7b9f6960694268a557eae24b743fd2923da46ec392b042469f4b901721ba0adcf8b0d3c2677839d0e243b209d76e5edcbd09cfdeffa2dfb6bb4df4b862 languageName: node linkType: hard "mime@npm:3.0.0": version: 3.0.0 resolution: "mime@npm:3.0.0" bin: mime: cli.js checksum: f43f9b7bfa64534e6b05bd6062961681aeb406a5b53673b53b683f27fcc4e739989941836a355eef831f4478923651ecc739f4a5f6e20a76487b432bfd4db928 languageName: node linkType: hard "mimic-fn@npm:^2.1.0": version: 2.1.0 resolution: "mimic-fn@npm:2.1.0" checksum: d2421a3444848ce7f84bd49115ddacff29c15745db73f54041edc906c14b131a38d05298dae3081667627a59b2eb1ca4b436ff2e1b80f69679522410418b478a languageName: node linkType: hard "mimic-response@npm:^1.0.0": version: 1.0.1 resolution: "mimic-response@npm:1.0.1" checksum: 034c78753b0e622bc03c983663b1cdf66d03861050e0c8606563d149bc2b02d63f62ce4d32be4ab50d0553ae0ffe647fc34d1f5281184c6e1e8cf4d85e8d9823 languageName: node linkType: hard "mimic-response@npm:^3.1.0": version: 3.1.0 resolution: "mimic-response@npm:3.1.0" checksum: 25739fee32c17f433626bf19f016df9036b75b3d84a3046c7d156e72ec963dd29d7fc8a302f55a3d6c5a4ff24259676b15d915aad6480815a969ff2ec0836867 languageName: node linkType: hard "min-indent@npm:^1.0.0": version: 1.0.1 resolution: "min-indent@npm:1.0.1" checksum: bfc6dd03c5eaf623a4963ebd94d087f6f4bbbfd8c41329a7f09706b0cb66969c4ddd336abeb587bc44bc6f08e13bf90f0b374f9d71f9f01e04adc2cd6f083ef1 languageName: node linkType: hard "mini-css-extract-plugin@npm:^2.7.0": version: 2.7.5 resolution: "mini-css-extract-plugin@npm:2.7.5" dependencies: schema-utils: ^4.0.0 peerDependencies: webpack: ^5.0.0 checksum: afc37cdfb765e8826a1babbab3cd8a99ffc4eaeabb6c013a6b3c80801e44ebc37d930b98c6f66168bb8cd545fcb2e8fc2630d72b4501a1bb8add1547c2534a53 languageName: node linkType: hard "mini-svg-data-uri@npm:^1.4.4": version: 1.4.4 resolution: "mini-svg-data-uri@npm:1.4.4" bin: mini-svg-data-uri: cli.js checksum: 997f1fbd8d59a70f03761e18626d335197a3479cb9d1ff75678e4b64b864d32a0b8fc18115eabde035e5299b8b4a354a78e57dd6ac10f9d604162a6170898d09 languageName: node linkType: hard "minimatch@npm:2 || 3, minimatch@npm:3.1.2, minimatch@npm:^3.0.4, minimatch@npm:^3.0.5, minimatch@npm:^3.1.1, minimatch@npm:^3.1.2": version: 3.1.2 resolution: "minimatch@npm:3.1.2" dependencies: brace-expansion: ^1.1.7 checksum: c154e566406683e7bcb746e000b84d74465b3a832c45d59912b9b55cd50dee66e5c4b1e5566dba26154040e51672f9aa450a9aef0c97cfc7336b78b7afb9540a languageName: node linkType: hard "minimatch@npm:3.0.5": version: 3.0.5 resolution: "minimatch@npm:3.0.5" dependencies: brace-expansion: ^1.1.7 checksum: a3b84b426eafca947741b864502cee02860c4e7b145de11ad98775cfcf3066fef422583bc0ffce0952ddf4750c1ccf4220b1556430d4ce10139f66247d87d69e languageName: node linkType: hard "minimatch@npm:4.2.1": version: 4.2.1 resolution: "minimatch@npm:4.2.1" dependencies: brace-expansion: ^1.1.7 checksum: 2b1514e3d0f29a549912f0db7ae7b82c5cab4a8f2dd0369f1c6451a325b3f12b2cf473c95873b6157bb8df183d6cf6db82ff03614b6adaaf1d7e055beccdfd01 languageName: node linkType: hard "minimatch@npm:^5.0.1": version: 5.1.6 resolution: "minimatch@npm:5.1.6" dependencies: brace-expansion: ^2.0.1 checksum: 7564208ef81d7065a370f788d337cd80a689e981042cb9a1d0e6580b6c6a8c9279eba80010516e258835a988363f99f54a6f711a315089b8b42694f5da9d0d77 languageName: node linkType: hard "minimatch@npm:^7.1.3": version: 7.4.6 resolution: "minimatch@npm:7.4.6" dependencies: brace-expansion: ^2.0.1 checksum: 1a6c8d22618df9d2a88aabeef1de5622eb7b558e9f8010be791cb6b0fa6e102d39b11c28d75b855a1e377b12edc7db8ff12a99c20353441caa6a05e78deb5da9 languageName: node linkType: hard "minimatch@npm:^9.0.0": version: 9.0.0 resolution: "minimatch@npm:9.0.0" dependencies: brace-expansion: ^2.0.1 checksum: 7bd57899edd1d1b0560f50b5b2d1ea4ad2a366c5a2c8e0a943372cf2f200b64c256bae45a87a80915adbce27fa36526264296ace0da57b600481fe5ea3e372e5 languageName: node linkType: hard "minimatch@npm:^9.0.1": version: 9.0.2 resolution: "minimatch@npm:9.0.2" dependencies: brace-expansion: ^2.0.1 checksum: 2eb12e2047a062fdb973fb51b9803f2455e3a00977858c038d66646d303a5a15bbcbc6ed5a2fc403bc869b1309f829ed3acd881d3246faf044ea7a494974b924 languageName: node linkType: hard "minimatch@npm:~3.0.4": version: 3.0.8 resolution: "minimatch@npm:3.0.8" dependencies: brace-expansion: ^1.1.7 checksum: 850cca179cad715133132693e6963b0db64ab0988c4d211415b087fc23a3e46321e2c5376a01bf5623d8782aba8bdf43c571e2e902e51fdce7175c7215c29f8b languageName: node linkType: hard "minimist-options@npm:4.1.0": version: 4.1.0 resolution: "minimist-options@npm:4.1.0" dependencies: arrify: ^1.0.1 is-plain-obj: ^1.1.0 kind-of: ^6.0.3 checksum: 8c040b3068811e79de1140ca2b708d3e203c8003eb9a414c1ab3cd467fc5f17c9ca02a5aef23bedc51a7f8bfbe77f87e9a7e31ec81fba304cda675b019496f4e languageName: node linkType: hard "minimist@npm:^1.2.0, minimist@npm:^1.2.3, minimist@npm:^1.2.5, minimist@npm:^1.2.6, minimist@npm:~1.2.0": version: 1.2.8 resolution: "minimist@npm:1.2.8" checksum: 75a6d645fb122dad29c06a7597bddea977258957ed88d7a6df59b5cd3fe4a527e253e9bbf2e783e4b73657f9098b96a5fe96ab8a113655d4109108577ecf85b0 languageName: node linkType: hard "minipass-collect@npm:^1.0.2": version: 1.0.2 resolution: "minipass-collect@npm:1.0.2" dependencies: minipass: ^3.0.0 checksum: 14df761028f3e47293aee72888f2657695ec66bd7d09cae7ad558da30415fdc4752bbfee66287dcc6fd5e6a2fa3466d6c484dc1cbd986525d9393b9523d97f10 languageName: node linkType: hard "minipass-fetch@npm:^2.0.3": version: 2.1.2 resolution: "minipass-fetch@npm:2.1.2" dependencies: encoding: ^0.1.13 minipass: ^3.1.6 minipass-sized: ^1.0.3 minizlib: ^2.1.2 dependenciesMeta: encoding: optional: true checksum: 3f216be79164e915fc91210cea1850e488793c740534985da017a4cbc7a5ff50506956d0f73bb0cb60e4fe91be08b6b61ef35101706d3ef5da2c8709b5f08f91 languageName: node linkType: hard "minipass-flush@npm:^1.0.5": version: 1.0.5 resolution: "minipass-flush@npm:1.0.5" dependencies: minipass: ^3.0.0 checksum: 56269a0b22bad756a08a94b1ffc36b7c9c5de0735a4dd1ab2b06c066d795cfd1f0ac44a0fcae13eece5589b908ecddc867f04c745c7009be0b566421ea0944cf languageName: node linkType: hard "minipass-json-stream@npm:^1.0.1": version: 1.0.1 resolution: "minipass-json-stream@npm:1.0.1" dependencies: jsonparse: ^1.3.1 minipass: ^3.0.0 checksum: 791b696a27d1074c4c08dab1bf5a9f3201145c2933e428f45d880467bce12c60de4703203d2928de4b162d0ae77b0bb4b55f96cb846645800aa0eb4919b3e796 languageName: node linkType: hard "minipass-pipeline@npm:^1.2.4": version: 1.2.4 resolution: "minipass-pipeline@npm:1.2.4" dependencies: minipass: ^3.0.0 checksum: b14240dac0d29823c3d5911c286069e36d0b81173d7bdf07a7e4a91ecdef92cdff4baaf31ea3746f1c61e0957f652e641223970870e2353593f382112257971b languageName: node linkType: hard "minipass-sized@npm:^1.0.3": version: 1.0.3 resolution: "minipass-sized@npm:1.0.3" dependencies: minipass: ^3.0.0 checksum: 79076749fcacf21b5d16dd596d32c3b6bf4d6e62abb43868fac21674078505c8b15eaca4e47ed844985a4514854f917d78f588fcd029693709417d8f98b2bd60 languageName: node linkType: hard "minipass@npm:^3.0.0, minipass@npm:^3.1.1, minipass@npm:^3.1.6": version: 3.3.6 resolution: "minipass@npm:3.3.6" dependencies: yallist: ^4.0.0 checksum: a30d083c8054cee83cdcdc97f97e4641a3f58ae743970457b1489ce38ee1167b3aaf7d815cd39ec7a99b9c40397fd4f686e83750e73e652b21cb516f6d845e48 languageName: node linkType: hard "minipass@npm:^5.0.0": version: 5.0.0 resolution: "minipass@npm:5.0.0" checksum: 425dab288738853fded43da3314a0b5c035844d6f3097a8e3b5b29b328da8f3c1af6fc70618b32c29ff906284cf6406b6841376f21caaadd0793c1d5a6a620ea languageName: node linkType: hard "minipass@npm:^5.0.0 || ^6.0.0": version: 6.0.1 resolution: "minipass@npm:6.0.1" checksum: 1df70bb5653251ad7bb0c979e07c18bbc64af1a92472a1d598f4311646da0c192d6ad92850cdfb9f0cd3ada8a9da369dd361c9f2e38a9f64b6a368ae2ac27fac languageName: node linkType: hard "minipass@npm:^5.0.0 || ^6.0.2": version: 6.0.2 resolution: "minipass@npm:6.0.2" checksum: d140b91f4ab2e5ce5a9b6c468c0e82223504acc89114c1a120d4495188b81fedf8cade72a9f4793642b4e66672f990f1e0d902dd858485216a07cd3c8a62fac9 languageName: node linkType: hard "minizlib@npm:^2.1.1, minizlib@npm:^2.1.2": version: 2.1.2 resolution: "minizlib@npm:2.1.2" dependencies: minipass: ^3.0.0 yallist: ^4.0.0 checksum: f1fdeac0b07cf8f30fcf12f4b586795b97be856edea22b5e9072707be51fc95d41487faec3f265b42973a304fe3a64acd91a44a3826a963e37b37bafde0212c3 languageName: node linkType: hard "mkdirp-infer-owner@npm:^2.0.0": version: 2.0.0 resolution: "mkdirp-infer-owner@npm:2.0.0" dependencies: chownr: ^2.0.0 infer-owner: ^1.0.4 mkdirp: ^1.0.3 checksum: d8f4ecd32f6762459d6b5714eae6487c67ae9734ab14e26d14377ddd9b2a1bf868d8baa18c0f3e73d3d513f53ec7a698e0f81a9367102c870a55bef7833880f7 languageName: node linkType: hard "mkdirp@npm:1.0.4, mkdirp@npm:^1.0.3, mkdirp@npm:^1.0.4": version: 1.0.4 resolution: "mkdirp@npm:1.0.4" bin: mkdirp: bin/cmd.js checksum: a96865108c6c3b1b8e1d5e9f11843de1e077e57737602de1b82030815f311be11f96f09cce59bd5b903d0b29834733e5313f9301e3ed6d6f6fba2eae0df4298f languageName: node linkType: hard "mkdirp@npm:^0.5.5, mkdirp@npm:^0.5.6, mkdirp@npm:~0.5.1": version: 0.5.6 resolution: "mkdirp@npm:0.5.6" dependencies: minimist: ^1.2.6 bin: mkdirp: bin/cmd.js checksum: 0c91b721bb12c3f9af4b77ebf73604baf350e64d80df91754dc509491ae93bf238581e59c7188360cec7cb62fc4100959245a42cfe01834efedc5e9d068376c2 languageName: node linkType: hard "mocha@npm:^9.0.0": version: 9.2.2 resolution: "mocha@npm:9.2.2" dependencies: "@ungap/promise-all-settled": 1.1.2 ansi-colors: 4.1.1 browser-stdout: 1.3.1 chokidar: 3.5.3 debug: 4.3.3 diff: 5.0.0 escape-string-regexp: 4.0.0 find-up: 5.0.0 glob: 7.2.0 growl: 1.10.5 he: 1.2.0 js-yaml: 4.1.0 log-symbols: 4.1.0 minimatch: 4.2.1 ms: 2.1.3 nanoid: 3.3.1 serialize-javascript: 6.0.0 strip-json-comments: 3.1.1 supports-color: 8.1.1 which: 2.0.2 workerpool: 6.2.0 yargs: 16.2.0 yargs-parser: 20.2.4 yargs-unparser: 2.0.0 bin: _mocha: bin/_mocha mocha: bin/mocha checksum: 4d5ca4ce33fc66627e63acdf09a634e2358c9a00f61de7788b1091b6aad430da04f97f9ecb82d56dc034b623cb833b65576136fd010d77679c03fcea5bc1e12d languageName: node linkType: hard "modify-values@npm:^1.0.0": version: 1.0.1 resolution: "modify-values@npm:1.0.1" checksum: 8296610c608bc97b03c2cf889c6cdf4517e32fa2d836440096374c2209f6b7b3e256c209493a0b32584b9cb32d528e99d0dd19dcd9a14d2d915a312d391cc7e9 languageName: node linkType: hard "ms@npm:2.0.0": version: 2.0.0 resolution: "ms@npm:2.0.0" checksum: 0e6a22b8b746d2e0b65a430519934fefd41b6db0682e3477c10f60c76e947c4c0ad06f63ffdf1d78d335f83edee8c0aa928aa66a36c7cd95b69b26f468d527f4 languageName: node linkType: hard "ms@npm:2.1.2": version: 2.1.2 resolution: "ms@npm:2.1.2" checksum: 673cdb2c3133eb050c745908d8ce632ed2c02d85640e2edb3ace856a2266a813b30c613569bf3354fdf4ea7d1a1494add3bfa95e2713baa27d0c2c71fc44f58f languageName: node linkType: hard "ms@npm:2.1.3, ms@npm:^2.0.0, ms@npm:^2.1.1": version: 2.1.3 resolution: "ms@npm:2.1.3" checksum: aa92de608021b242401676e35cfa5aa42dd70cbdc082b916da7fb925c542173e36bce97ea3e804923fe92c0ad991434e4a38327e15a1b5b5f945d66df615ae6d languageName: node linkType: hard "multimatch@npm:^5.0.0": version: 5.0.0 resolution: "multimatch@npm:5.0.0" dependencies: "@types/minimatch": ^3.0.3 array-differ: ^3.0.0 array-union: ^2.1.0 arrify: ^2.0.1 minimatch: ^3.0.4 checksum: 82c8030a53af965cab48da22f1b0f894ef99e16ee680dabdfbd38d2dfacc3c8208c475203d747afd9e26db44118ed0221d5a0d65268c864f06d6efc7ac6df812 languageName: node linkType: hard "mute-stream@npm:0.0.8, mute-stream@npm:~0.0.4": version: 0.0.8 resolution: "mute-stream@npm:0.0.8" checksum: ff48d251fc3f827e5b1206cda0ffdaec885e56057ee86a3155e1951bc940fd5f33531774b1cc8414d7668c10a8907f863f6561875ee6e8768931a62121a531a1 languageName: node linkType: hard "mute-stream@npm:1.0.0": version: 1.0.0 resolution: "mute-stream@npm:1.0.0" checksum: 36fc968b0e9c9c63029d4f9dc63911950a3bdf55c9a87f58d3a266289b67180201cade911e7699f8b2fa596b34c9db43dad37649e3f7fdd13c3bb9edb0017ee7 languageName: node linkType: hard "mv@npm:2.1.1": version: 2.1.1 resolution: "mv@npm:2.1.1" dependencies: mkdirp: ~0.5.1 ncp: ~2.0.0 rimraf: ~2.4.0 checksum: 59d4b5ebff6c265b452d6630ae8873d573c82e36fdc1ed9c34c7901a0bf2d3d357022f49db8e9bded127b743f709c7ef7befec249a2b3967578d649a8029aa06 languageName: node linkType: hard "nanoclone@npm:^0.2.1": version: 0.2.1 resolution: "nanoclone@npm:0.2.1" checksum: 96b2954e22f70561f41e20d69856266c65583c2a441dae108f1dc71b716785d2c8038dac5f1d5e92b117aed3825f526b53139e2e5d6e6db8a77cfa35b3b8bf40 languageName: node linkType: hard "nanoid@npm:3.3.1": version: 3.3.1 resolution: "nanoid@npm:3.3.1" bin: nanoid: bin/nanoid.cjs checksum: 4ef0969e1bbe866fc223eb32276cbccb0961900bfe79104fa5abe34361979dead8d0e061410a5c03bc3d47455685adf32c09d6f27790f4a6898fb51f7df7ec86 languageName: node linkType: hard "nanoid@npm:^3.3.6": version: 3.3.6 resolution: "nanoid@npm:3.3.6" bin: nanoid: bin/nanoid.cjs checksum: 7d0eda657002738aa5206107bd0580aead6c95c460ef1bdd0b1a87a9c7ae6277ac2e9b945306aaa5b32c6dcb7feaf462d0f552e7f8b5718abfc6ead5c94a71b3 languageName: node linkType: hard "natural-compare-lite@npm:^1.4.0": version: 1.4.0 resolution: "natural-compare-lite@npm:1.4.0" checksum: 5222ac3986a2b78dd6069ac62cbb52a7bf8ffc90d972ab76dfe7b01892485d229530ed20d0c62e79a6b363a663b273db3bde195a1358ce9e5f779d4453887225 languageName: node linkType: hard "natural-compare@npm:^1.4.0": version: 1.4.0 resolution: "natural-compare@npm:1.4.0" checksum: 23ad088b08f898fc9b53011d7bb78ec48e79de7627e01ab5518e806033861bef68d5b0cd0e2205c2f36690ac9571ff6bcb05eb777ced2eeda8d4ac5b44592c3d languageName: node linkType: hard "ncp@npm:~2.0.0": version: 2.0.0 resolution: "ncp@npm:2.0.0" bin: ncp: ./bin/ncp checksum: ea9b19221da1d1c5529bdb9f8e85c9d191d156bcaae408cce5e415b7fbfd8744c288e792bd7faf1fe3b70fd44c74e22f0d43c39b209bc7ac1fb8016f70793a16 languageName: node linkType: hard "needle@npm:^3.1.0": version: 3.2.0 resolution: "needle@npm:3.2.0" dependencies: debug: ^3.2.6 iconv-lite: ^0.6.3 sax: ^1.2.4 bin: needle: bin/needle checksum: d6f3e8668bbaf943d28ced0ad843eff793b56025e80152e511fd02313b8974e4dd9674bcbe3d8f9aa31882adb190dafe29ea5fce03a92b4724adf4850070bcfc languageName: node linkType: hard "negotiator@npm:0.6.3, negotiator@npm:^0.6.3": version: 0.6.3 resolution: "negotiator@npm:0.6.3" checksum: b8ffeb1e262eff7968fc90a2b6767b04cfd9842582a9d0ece0af7049537266e7b2506dfb1d107a32f06dd849ab2aea834d5830f7f4d0e5cb7d36e1ae55d021d9 languageName: node linkType: hard "neo-async@npm:^2.6.0, neo-async@npm:^2.6.2": version: 2.6.2 resolution: "neo-async@npm:2.6.2" checksum: deac9f8d00eda7b2e5cd1b2549e26e10a0faa70adaa6fdadca701cc55f49ee9018e427f424bac0c790b7c7e2d3068db97f3093f1093975f2acb8f8818b936ed9 languageName: node linkType: hard "nice-try@npm:^1.0.4": version: 1.0.5 resolution: "nice-try@npm:1.0.5" checksum: 0b4af3b5bb5d86c289f7a026303d192a7eb4417231fe47245c460baeabae7277bcd8fd9c728fb6bd62c30b3e15cd6620373e2cf33353b095d8b403d3e8a15aff languageName: node linkType: hard "nise@npm:^5.1.0": version: 5.1.4 resolution: "nise@npm:5.1.4" dependencies: "@sinonjs/commons": ^2.0.0 "@sinonjs/fake-timers": ^10.0.2 "@sinonjs/text-encoding": ^0.7.1 just-extend: ^4.0.2 path-to-regexp: ^1.7.0 checksum: bc57c10eaec28a6a7ddfb2e1e9b21d5e1fe22710e514f8858ae477cf9c7e9c891475674d5241519193403db43d16c3675f4207bc094a7a27b7e4f56584a78c1b languageName: node linkType: hard "node-addon-api@npm:^3.2.1": version: 3.2.1 resolution: "node-addon-api@npm:3.2.1" dependencies: node-gyp: latest checksum: 2369986bb0881ccd9ef6bacdf39550e07e089a9c8ede1cbc5fc7712d8e2faa4d50da0e487e333d4125f8c7a616c730131d1091676c9d499af1d74560756b4a18 languageName: node linkType: hard "node-fetch@npm:^2.6.1, node-fetch@npm:^2.6.7": version: 2.6.11 resolution: "node-fetch@npm:2.6.11" dependencies: whatwg-url: ^5.0.0 peerDependencies: encoding: ^0.1.0 peerDependenciesMeta: encoding: optional: true checksum: 249d0666a9497553384d46b5ab296ba223521ac88fed4d8a17d6ee6c2efb0fc890f3e8091cafe7f9fba8151a5b8d925db2671543b3409a56c3cd522b468b47b3 languageName: node linkType: hard "node-fetch@npm:cjs": version: 2.6.7 resolution: "node-fetch@npm:2.6.7" dependencies: whatwg-url: ^5.0.0 peerDependencies: encoding: ^0.1.0 peerDependenciesMeta: encoding: optional: true checksum: 8d816ffd1ee22cab8301c7756ef04f3437f18dace86a1dae22cf81db8ef29c0bf6655f3215cb0cdb22b420b6fe141e64b26905e7f33f9377a7fa59135ea3e10b languageName: node linkType: hard "node-gyp-build@npm:^4.3.0": version: 4.6.0 resolution: "node-gyp-build@npm:4.6.0" bin: node-gyp-build: bin.js node-gyp-build-optional: optional.js node-gyp-build-test: build-test.js checksum: 25d78c5ef1f8c24291f4a370c47ba52fcea14f39272041a90a7894cd50d766f7c8cb8fb06c0f42bf6f69b204b49d9be3c8fc344aac09714d5bdb95965499eb15 languageName: node linkType: hard "node-gyp@npm:^9.0.0, node-gyp@npm:latest": version: 9.3.1 resolution: "node-gyp@npm:9.3.1" dependencies: env-paths: ^2.2.0 glob: ^7.1.4 graceful-fs: ^4.2.6 make-fetch-happen: ^10.0.3 nopt: ^6.0.0 npmlog: ^6.0.0 rimraf: ^3.0.2 semver: ^7.3.5 tar: ^6.1.2 which: ^2.0.2 bin: node-gyp: bin/node-gyp.js checksum: b860e9976fa645ca0789c69e25387401b4396b93c8375489b5151a6c55cf2640a3b6183c212b38625ef7c508994930b72198338e3d09b9d7ade5acc4aaf51ea7 languageName: node linkType: hard "node-releases@npm:^2.0.8": version: 2.0.10 resolution: "node-releases@npm:2.0.10" checksum: d784ecde25696a15d449c4433077f5cce620ed30a1656c4abf31282bfc691a70d9618bae6868d247a67914d1be5cc4fde22f65a05f4398cdfb92e0fc83cadfbc languageName: node linkType: hard "nopt@npm:^5.0.0": version: 5.0.0 resolution: "nopt@npm:5.0.0" dependencies: abbrev: 1 bin: nopt: bin/nopt.js checksum: d35fdec187269503843924e0114c0c6533fb54bbf1620d0f28b4b60ba01712d6687f62565c55cc20a504eff0fbe5c63e22340c3fad549ad40469ffb611b04f2f languageName: node linkType: hard "nopt@npm:^6.0.0": version: 6.0.0 resolution: "nopt@npm:6.0.0" dependencies: abbrev: ^1.0.0 bin: nopt: bin/nopt.js checksum: 82149371f8be0c4b9ec2f863cc6509a7fd0fa729929c009f3a58e4eb0c9e4cae9920e8f1f8eb46e7d032fec8fb01bede7f0f41a67eb3553b7b8e14fa53de1dac languageName: node linkType: hard "normalize-package-data@npm:^2.3.2, normalize-package-data@npm:^2.5.0": version: 2.5.0 resolution: "normalize-package-data@npm:2.5.0" dependencies: hosted-git-info: ^2.1.4 resolve: ^1.10.0 semver: 2 || 3 || 4 || 5 validate-npm-package-license: ^3.0.1 checksum: 7999112efc35a6259bc22db460540cae06564aa65d0271e3bdfa86876d08b0e578b7b5b0028ee61b23f1cae9fc0e7847e4edc0948d3068a39a2a82853efc8499 languageName: node linkType: hard "normalize-package-data@npm:^3.0.0": version: 3.0.3 resolution: "normalize-package-data@npm:3.0.3" dependencies: hosted-git-info: ^4.0.1 is-core-module: ^2.5.0 semver: ^7.3.4 validate-npm-package-license: ^3.0.1 checksum: bbcee00339e7c26fdbc760f9b66d429258e2ceca41a5df41f5df06cc7652de8d82e8679ff188ca095cad8eff2b6118d7d866af2b68400f74602fbcbce39c160a languageName: node linkType: hard "normalize-package-data@npm:^4.0.0": version: 4.0.1 resolution: "normalize-package-data@npm:4.0.1" dependencies: hosted-git-info: ^5.0.0 is-core-module: ^2.8.1 semver: ^7.3.5 validate-npm-package-license: ^3.0.4 checksum: 292e0aa740e73d62f84bbd9d55d4bfc078155f32d5d7572c32c9807f96d543af0f43ff7e5c80bfa6238667123fd68bd83cd412eae9b27b85b271fb041f624528 languageName: node linkType: hard "normalize-path@npm:^3.0.0, normalize-path@npm:~3.0.0": version: 3.0.0 resolution: "normalize-path@npm:3.0.0" checksum: 88eeb4da891e10b1318c4b2476b6e2ecbeb5ff97d946815ffea7794c31a89017c70d7f34b3c2ebf23ef4e9fc9fb99f7dffe36da22011b5b5c6ffa34f4873ec20 languageName: node linkType: hard "normalize-range@npm:^0.1.2": version: 0.1.2 resolution: "normalize-range@npm:0.1.2" checksum: 9b2f14f093593f367a7a0834267c24f3cb3e887a2d9809c77d8a7e5fd08738bcd15af46f0ab01cc3a3d660386f015816b5c922cea8bf2ee79777f40874063184 languageName: node linkType: hard "normalize-url@npm:^6.0.1": version: 6.1.0 resolution: "normalize-url@npm:6.1.0" checksum: 4a4944631173e7d521d6b80e4c85ccaeceb2870f315584fa30121f505a6dfd86439c5e3fdd8cd9e0e291290c41d0c3599f0cb12ab356722ed242584c30348e50 languageName: node linkType: hard "nouislider@npm:15.4.0": version: 15.4.0 resolution: "nouislider@npm:15.4.0" checksum: 4b7ffe7ca7eb75b27ffc100949db8594468eba5d8ac82e04fd4ab5a4c1b643b6c94ba7a97afcea2a11ec08ed93a59d1ed771550faf4ef1c7a8cdecd962f89f61 languageName: node linkType: hard "npm-bundled@npm:^1.1.1": version: 1.1.2 resolution: "npm-bundled@npm:1.1.2" dependencies: npm-normalize-package-bin: ^1.0.1 checksum: 6e599155ef28d0b498622f47f1ba189dfbae05095a1ed17cb3a5babf961e965dd5eab621f0ec6f0a98de774e5836b8f5a5ee639010d64f42850a74acec3d4d09 languageName: node linkType: hard "npm-bundled@npm:^2.0.0": version: 2.0.1 resolution: "npm-bundled@npm:2.0.1" dependencies: npm-normalize-package-bin: ^2.0.0 checksum: 7747293985c48c5268871efe691545b03731cb80029692000cbdb0b3344b9617be5187aa36281cabbe6b938e3651b4e87236d1c31f9e645eef391a1a779413e6 languageName: node linkType: hard "npm-install-checks@npm:^5.0.0": version: 5.0.0 resolution: "npm-install-checks@npm:5.0.0" dependencies: semver: ^7.1.1 checksum: 0e7d1aae52b1fe9d3a0fd4a008850c7047931722dd49ee908afd13fd0297ac5ddb10964d9c59afcdaaa2ca04b51d75af2788f668c729ae71fec0e4cdac590ffc languageName: node linkType: hard "npm-normalize-package-bin@npm:^1.0.1": version: 1.0.1 resolution: "npm-normalize-package-bin@npm:1.0.1" checksum: ae7f15155a1e3ace2653f12ddd1ee8eaa3c84452fdfbf2f1943e1de264e4b079c86645e2c55931a51a0a498cba31f70022a5219d5665fbcb221e99e58bc70122 languageName: node linkType: hard "npm-normalize-package-bin@npm:^2.0.0": version: 2.0.0 resolution: "npm-normalize-package-bin@npm:2.0.0" checksum: 7c5379f9b188b564c4332c97bdd9a5d6b7b15f02b5823b00989d6a0e6fb31eb0280f02b0a924f930e1fcaf00e60fae333aec8923d2a4c7747613c7d629d8aa25 languageName: node linkType: hard "npm-package-arg@npm:8.1.1": version: 8.1.1 resolution: "npm-package-arg@npm:8.1.1" dependencies: hosted-git-info: ^3.0.6 semver: ^7.0.0 validate-npm-package-name: ^3.0.0 checksum: 406c59f92d8fac5acbd1df62f4af8075e925af51131b6bc66245641ea71ddb0e60b3e2c56fafebd4e8ffc3ba0453e700a221a36a44740dc9f7488cec97ae4c55 languageName: node linkType: hard "npm-package-arg@npm:^9.0.0, npm-package-arg@npm:^9.0.1": version: 9.1.2 resolution: "npm-package-arg@npm:9.1.2" dependencies: hosted-git-info: ^5.0.0 proc-log: ^2.0.1 semver: ^7.3.5 validate-npm-package-name: ^4.0.0 checksum: 3793488843985ed71deb14fcba7c068d8ed03a18fd8f6b235c6a64465c9a25f60261598106d5cc8677c0bee9548e405c34c2e3c7a822e3113d3389351c745dfa languageName: node linkType: hard "npm-packlist@npm:^5.1.0, npm-packlist@npm:^5.1.1": version: 5.1.3 resolution: "npm-packlist@npm:5.1.3" dependencies: glob: ^8.0.1 ignore-walk: ^5.0.1 npm-bundled: ^2.0.0 npm-normalize-package-bin: ^2.0.0 bin: npm-packlist: bin/index.js checksum: 94cc9c66740e8f80243301de85eb0a2cec5bbd570c3f26b6ad7af1a3eca155f7e810580dc7ea4448f12a8fd82f6db307e7132a5fe69e157eb45b325acadeb22a languageName: node linkType: hard "npm-pick-manifest@npm:^7.0.0": version: 7.0.2 resolution: "npm-pick-manifest@npm:7.0.2" dependencies: npm-install-checks: ^5.0.0 npm-normalize-package-bin: ^2.0.0 npm-package-arg: ^9.0.0 semver: ^7.3.5 checksum: a93ec449c12219a2be8556837db9ac5332914f304a69469bb6f1f47717adc6e262aa318f79166f763512688abd9c4e4b6a2d83b2dd19753a7abe5f0360f2c8bc languageName: node linkType: hard "npm-registry-fetch@npm:^13.0.0, npm-registry-fetch@npm:^13.0.1, npm-registry-fetch@npm:^13.3.0": version: 13.3.1 resolution: "npm-registry-fetch@npm:13.3.1" dependencies: make-fetch-happen: ^10.0.6 minipass: ^3.1.6 minipass-fetch: ^2.0.3 minipass-json-stream: ^1.0.1 minizlib: ^2.1.2 npm-package-arg: ^9.0.1 proc-log: ^2.0.0 checksum: 5a941c2c799568e0dbccfc15f280444da398dadf2eede1b1921f08ddd5cb5f32c7cb4d16be96401f95a33073aeec13a3fd928c753790d3c412c2e64e7f7c6ee4 languageName: node linkType: hard "npm-run-all@npm:^4.1.5": version: 4.1.5 resolution: "npm-run-all@npm:4.1.5" dependencies: ansi-styles: ^3.2.1 chalk: ^2.4.1 cross-spawn: ^6.0.5 memorystream: ^0.3.1 minimatch: ^3.0.4 pidtree: ^0.3.0 read-pkg: ^3.0.0 shell-quote: ^1.6.1 string.prototype.padend: ^3.0.0 bin: npm-run-all: bin/npm-run-all/index.js run-p: bin/run-p/index.js run-s: bin/run-s/index.js checksum: 373b72c6a36564da13c1642c1fd9bb4dcc756bce7a3648f883772f02661095319820834ff813762d2fee403e9b40c1cd27c8685807c107440f10eb19c006d4a0 languageName: node linkType: hard "npm-run-path@npm:^4.0.1": version: 4.0.1 resolution: "npm-run-path@npm:4.0.1" dependencies: path-key: ^3.0.0 checksum: 5374c0cea4b0bbfdfae62da7bbdf1e1558d338335f4cacf2515c282ff358ff27b2ecb91ffa5330a8b14390ac66a1e146e10700440c1ab868208430f56b5f4d23 languageName: node linkType: hard "npmlog@npm:^6.0.0, npmlog@npm:^6.0.2": version: 6.0.2 resolution: "npmlog@npm:6.0.2" dependencies: are-we-there-yet: ^3.0.0 console-control-strings: ^1.1.0 gauge: ^4.0.3 set-blocking: ^2.0.0 checksum: ae238cd264a1c3f22091cdd9e2b106f684297d3c184f1146984ecbe18aaa86343953f26b9520dedd1b1372bc0316905b736c1932d778dbeb1fcf5a1001390e2a languageName: node linkType: hard "num2fraction@npm:^1.2.2": version: 1.2.2 resolution: "num2fraction@npm:1.2.2" checksum: 1da9c6797b505d3f5b17c7f694c4fa31565bdd5c0e5d669553253aed848a580804cd285280e8a73148bd9628839267daee4967f24b53d4e893e44b563e412635 languageName: node linkType: hard "nx@npm:15.9.4, nx@npm:>=14.8.1 < 16, nx@npm:^15": version: 15.9.4 resolution: "nx@npm:15.9.4" dependencies: "@nrwl/cli": 15.9.4 "@nrwl/nx-darwin-arm64": 15.9.4 "@nrwl/nx-darwin-x64": 15.9.4 "@nrwl/nx-linux-arm-gnueabihf": 15.9.4 "@nrwl/nx-linux-arm64-gnu": 15.9.4 "@nrwl/nx-linux-arm64-musl": 15.9.4 "@nrwl/nx-linux-x64-gnu": 15.9.4 "@nrwl/nx-linux-x64-musl": 15.9.4 "@nrwl/nx-win32-arm64-msvc": 15.9.4 "@nrwl/nx-win32-x64-msvc": 15.9.4 "@nrwl/tao": 15.9.4 "@parcel/watcher": 2.0.4 "@yarnpkg/lockfile": ^1.1.0 "@yarnpkg/parsers": ^3.0.0-rc.18 "@zkochan/js-yaml": 0.0.6 axios: ^1.0.0 chalk: ^4.1.0 cli-cursor: 3.1.0 cli-spinners: 2.6.1 cliui: ^7.0.2 dotenv: ~10.0.0 enquirer: ~2.3.6 fast-glob: 3.2.7 figures: 3.2.0 flat: ^5.0.2 fs-extra: ^11.1.0 glob: 7.1.4 ignore: ^5.0.4 js-yaml: 4.1.0 jsonc-parser: 3.2.0 lines-and-columns: ~2.0.3 minimatch: 3.0.5 npm-run-path: ^4.0.1 open: ^8.4.0 semver: 7.3.4 string-width: ^4.2.3 strong-log-transformer: ^2.1.0 tar-stream: ~2.2.0 tmp: ~0.2.1 tsconfig-paths: ^4.1.2 tslib: ^2.3.0 v8-compile-cache: 2.3.0 yargs: ^17.6.2 yargs-parser: 21.1.1 peerDependencies: "@swc-node/register": ^1.4.2 "@swc/core": ^1.2.173 dependenciesMeta: "@nrwl/nx-darwin-arm64": optional: true "@nrwl/nx-darwin-x64": optional: true "@nrwl/nx-linux-arm-gnueabihf": optional: true "@nrwl/nx-linux-arm64-gnu": optional: true "@nrwl/nx-linux-arm64-musl": optional: true "@nrwl/nx-linux-x64-gnu": optional: true "@nrwl/nx-linux-x64-musl": optional: true "@nrwl/nx-win32-arm64-msvc": optional: true "@nrwl/nx-win32-x64-msvc": optional: true peerDependenciesMeta: "@swc-node/register": optional: true "@swc/core": optional: true bin: nx: bin/nx.js checksum: 61b92c070db1474462eb31f86cf3ac5a5ab2a3f454bed307a0b931cf09ef5ee883c90f05b4440f5760ff57f3965ecdd744320ff3b0475fba9b52004840173b5f languageName: node linkType: hard "oauth-sign@npm:~0.9.0": version: 0.9.0 resolution: "oauth-sign@npm:0.9.0" checksum: 8f5497a127967866a3c67094c21efd295e46013a94e6e828573c62220e9af568cc1d2d04b16865ba583e430510fa168baf821ea78f355146d8ed7e350fc44c64 languageName: node linkType: hard "object-assign@npm:^4, object-assign@npm:^4.1.1": version: 4.1.1 resolution: "object-assign@npm:4.1.1" checksum: fcc6e4ea8c7fe48abfbb552578b1c53e0d194086e2e6bbbf59e0a536381a292f39943c6e9628af05b5528aa5e3318bb30d6b2e53cadaf5b8fe9e12c4b69af23f languageName: node linkType: hard "object-inspect@npm:^1.12.2, object-inspect@npm:^1.12.3, object-inspect@npm:^1.9.0": version: 1.12.3 resolution: "object-inspect@npm:1.12.3" checksum: dabfd824d97a5f407e6d5d24810d888859f6be394d8b733a77442b277e0808860555176719c5905e765e3743a7cada6b8b0a3b85e5331c530fd418cc8ae991db languageName: node linkType: hard "object-keys@npm:^1.1.1": version: 1.1.1 resolution: "object-keys@npm:1.1.1" checksum: b363c5e7644b1e1b04aa507e88dcb8e3a2f52b6ffd0ea801e4c7a62d5aa559affe21c55a07fd4b1fd55fc03a33c610d73426664b20032405d7b92a1414c34d6a languageName: node linkType: hard "object.assign@npm:^4.1.4": version: 4.1.4 resolution: "object.assign@npm:4.1.4" dependencies: call-bind: ^1.0.2 define-properties: ^1.1.4 has-symbols: ^1.0.3 object-keys: ^1.1.1 checksum: 76cab513a5999acbfe0ff355f15a6a125e71805fcf53de4e9d4e082e1989bdb81d1e329291e1e4e0ae7719f0e4ef80e88fb2d367ae60500d79d25a6224ac8864 languageName: node linkType: hard "on-exit-leak-free@npm:^0.2.0": version: 0.2.0 resolution: "on-exit-leak-free@npm:0.2.0" checksum: d22b0f0538069110626b578db6e68b6ee0e85b1ee9cc5ef9b4de1bba431431d6a8da91a61e09d2ad46f22a96f968e5237833cb9d0b69bc4d294f7ec82f609b05 languageName: node linkType: hard "on-finished@npm:2.4.1": version: 2.4.1 resolution: "on-finished@npm:2.4.1" dependencies: ee-first: 1.1.1 checksum: d20929a25e7f0bb62f937a425b5edeb4e4cde0540d77ba146ec9357f00b0d497cdb3b9b05b9c8e46222407d1548d08166bff69cc56dfa55ba0e4469228920ff0 languageName: node linkType: hard "on-finished@npm:~2.3.0": version: 2.3.0 resolution: "on-finished@npm:2.3.0" dependencies: ee-first: 1.1.1 checksum: 1db595bd963b0124d6fa261d18320422407b8f01dc65863840f3ddaaf7bcad5b28ff6847286703ca53f4ec19595bd67a2f1253db79fc4094911ec6aa8df1671b languageName: node linkType: hard "on-headers@npm:~1.0.2": version: 1.0.2 resolution: "on-headers@npm:1.0.2" checksum: 2bf13467215d1e540a62a75021e8b318a6cfc5d4fc53af8e8f84ad98dbcea02d506c6d24180cd62e1d769c44721ba542f3154effc1f7579a8288c9f7873ed8e5 languageName: node linkType: hard "once@npm:^1.3.0, once@npm:^1.3.1, once@npm:^1.4.0": version: 1.4.0 resolution: "once@npm:1.4.0" dependencies: wrappy: 1 checksum: cd0a88501333edd640d95f0d2700fbde6bff20b3d4d9bdc521bdd31af0656b5706570d6c6afe532045a20bb8dc0849f8332d6f2a416e0ba6d3d3b98806c7db68 languageName: node linkType: hard "onecolor@npm:^3.0.4": version: 3.1.0 resolution: "onecolor@npm:3.1.0" checksum: 7d2fbe56143eb1666aee6b7381073bc7372050d588be3ccaa2cfff820be6e167d727f8ee7099c5f1e2d0a771a46d917542162907e9d45eb45a85985b6ea92dde languageName: node linkType: hard "onetime@npm:^5.1.0, onetime@npm:^5.1.2": version: 5.1.2 resolution: "onetime@npm:5.1.2" dependencies: mimic-fn: ^2.1.0 checksum: 2478859ef817fc5d4e9c2f9e5728512ddd1dbc9fb7829ad263765bb6d3b91ce699d6e2332eef6b7dff183c2f490bd3349f1666427eaba4469fba0ac38dfd0d34 languageName: node linkType: hard "open@npm:^8.4.0": version: 8.4.2 resolution: "open@npm:8.4.2" dependencies: define-lazy-prop: ^2.0.0 is-docker: ^2.1.1 is-wsl: ^2.2.0 checksum: 6388bfff21b40cb9bd8f913f9130d107f2ed4724ea81a8fd29798ee322b361ca31fa2cdfb491a5c31e43a3996cfe9566741238c7a741ada8d7af1cb78d85cf26 languageName: node linkType: hard "opener@npm:^1.5.1": version: 1.5.2 resolution: "opener@npm:1.5.2" bin: opener: bin/opener-bin.js checksum: 33b620c0d53d5b883f2abc6687dd1c5fd394d270dbe33a6356f2d71e0a2ec85b100d5bac94694198ccf5c30d592da863b2292c5539009c715a9c80c697b4f6cc languageName: node linkType: hard "optionator@npm:^0.9.1": version: 0.9.1 resolution: "optionator@npm:0.9.1" dependencies: deep-is: ^0.1.3 fast-levenshtein: ^2.0.6 levn: ^0.4.1 prelude-ls: ^1.2.1 type-check: ^0.4.0 word-wrap: ^1.2.3 checksum: dbc6fa065604b24ea57d734261914e697bd73b69eff7f18e967e8912aa2a40a19a9f599a507fa805be6c13c24c4eae8c71306c239d517d42d4c041c942f508a0 languageName: node linkType: hard "ora@npm:^5.4.1": version: 5.4.1 resolution: "ora@npm:5.4.1" dependencies: bl: ^4.1.0 chalk: ^4.1.0 cli-cursor: ^3.1.0 cli-spinners: ^2.5.0 is-interactive: ^1.0.0 is-unicode-supported: ^0.1.0 log-symbols: ^4.1.0 strip-ansi: ^6.0.0 wcwidth: ^1.0.1 checksum: 28d476ee6c1049d68368c0dc922e7225e3b5600c3ede88fade8052837f9ed342625fdaa84a6209302587c8ddd9b664f71f0759833cbdb3a4cf81344057e63c63 languageName: node linkType: hard "os-tmpdir@npm:~1.0.2": version: 1.0.2 resolution: "os-tmpdir@npm:1.0.2" checksum: 5666560f7b9f10182548bf7013883265be33620b1c1b4a4d405c25be2636f970c5488ff3e6c48de75b55d02bde037249fe5dbfbb4c0fb7714953d56aed062e6d languageName: node linkType: hard "os@npm:~0.1.1": version: 0.1.2 resolution: "os@npm:0.1.2" checksum: dc2d99759eef13f5dc47ddb12c67b9760a7196fd83a35a7aec2d75b82f91163ca1d4e8872238f8c2a35f4cddd5adf5ce6638a234c0563c748d3cd1d69a9f7153 languageName: node linkType: hard "p-cancelable@npm:^2.0.0": version: 2.1.1 resolution: "p-cancelable@npm:2.1.1" checksum: 3dba12b4fb4a1e3e34524535c7858fc82381bbbd0f247cc32dedc4018592a3950ce66b106d0880b4ec4c2d8d6576f98ca885dc1d7d0f274d1370be20e9523ddf languageName: node linkType: hard "p-finally@npm:^1.0.0": version: 1.0.0 resolution: "p-finally@npm:1.0.0" checksum: 93a654c53dc805dd5b5891bab16eb0ea46db8f66c4bfd99336ae929323b1af2b70a8b0654f8f1eae924b2b73d037031366d645f1fd18b3d30cbd15950cc4b1d4 languageName: node linkType: hard "p-limit@npm:^1.1.0": version: 1.3.0 resolution: "p-limit@npm:1.3.0" dependencies: p-try: ^1.0.0 checksum: 281c1c0b8c82e1ac9f81acd72a2e35d402bf572e09721ce5520164e9de07d8274451378a3470707179ad13240535558f4b277f02405ad752e08c7d5b0d54fbfd languageName: node linkType: hard "p-limit@npm:^2.2.0": version: 2.3.0 resolution: "p-limit@npm:2.3.0" dependencies: p-try: ^2.0.0 checksum: 84ff17f1a38126c3314e91ecfe56aecbf36430940e2873dadaa773ffe072dc23b7af8e46d4b6485d302a11673fe94c6b67ca2cfbb60c989848b02100d0594ac1 languageName: node linkType: hard "p-limit@npm:^3.0.2": version: 3.1.0 resolution: "p-limit@npm:3.1.0" dependencies: yocto-queue: ^0.1.0 checksum: 7c3690c4dbf62ef625671e20b7bdf1cbc9534e83352a2780f165b0d3ceba21907e77ad63401708145ca4e25bfc51636588d89a8c0aeb715e6c37d1c066430360 languageName: node linkType: hard "p-locate@npm:^2.0.0": version: 2.0.0 resolution: "p-locate@npm:2.0.0" dependencies: p-limit: ^1.1.0 checksum: e2dceb9b49b96d5513d90f715780f6f4972f46987dc32a0e18bc6c3fc74a1a5d73ec5f81b1398af5e58b99ea1ad03fd41e9181c01fa81b4af2833958696e3081 languageName: node linkType: hard "p-locate@npm:^4.1.0": version: 4.1.0 resolution: "p-locate@npm:4.1.0" dependencies: p-limit: ^2.2.0 checksum: 513bd14a455f5da4ebfcb819ef706c54adb09097703de6aeaa5d26fe5ea16df92b48d1ac45e01e3944ce1e6aa2a66f7f8894742b8c9d6e276e16cd2049a2b870 languageName: node linkType: hard "p-locate@npm:^5.0.0": version: 5.0.0 resolution: "p-locate@npm:5.0.0" dependencies: p-limit: ^3.0.2 checksum: 1623088f36cf1cbca58e9b61c4e62bf0c60a07af5ae1ca99a720837356b5b6c5ba3eb1b2127e47a06865fee59dd0453cad7cc844cda9d5a62ac1a5a51b7c86d3 languageName: node linkType: hard "p-map-series@npm:^2.1.0": version: 2.1.0 resolution: "p-map-series@npm:2.1.0" checksum: 69d4efbb6951c0dd62591d5a18c3af0af78496eae8b55791e049da239d70011aa3af727dece3fc9943e0bb3fd4fa64d24177cfbecc46efaf193179f0feeac486 languageName: node linkType: hard "p-map@npm:^4.0.0": version: 4.0.0 resolution: "p-map@npm:4.0.0" dependencies: aggregate-error: ^3.0.0 checksum: cb0ab21ec0f32ddffd31dfc250e3afa61e103ef43d957cc45497afe37513634589316de4eb88abdfd969fe6410c22c0b93ab24328833b8eb1ccc087fc0442a1c languageName: node linkType: hard "p-pipe@npm:^3.1.0": version: 3.1.0 resolution: "p-pipe@npm:3.1.0" checksum: ee9a2609685f742c6ceb3122281ec4453bbbcc80179b13e66fd139dcf19b1c327cf6c2fdfc815b548d6667e7eaefe5396323f6d49c4f7933e4cef47939e3d65c languageName: node linkType: hard "p-queue@npm:^6.6.2": version: 6.6.2 resolution: "p-queue@npm:6.6.2" dependencies: eventemitter3: ^4.0.4 p-timeout: ^3.2.0 checksum: 832642fcc4ab6477b43e6d7c30209ab10952969ed211c6d6f2931be8a4f9935e3578c72e8cce053dc34f2eb6941a408a2c516a54904e989851a1a209cf19761c languageName: node linkType: hard "p-reduce@npm:^2.0.0, p-reduce@npm:^2.1.0": version: 2.1.0 resolution: "p-reduce@npm:2.1.0" checksum: 99b26d36066a921982f25c575e78355824da0787c486e3dd9fc867460e8bf17d5fb3ce98d006b41bdc81ffc0aa99edf5faee53d11fe282a20291fb721b0cb1c7 languageName: node linkType: hard "p-timeout@npm:^3.2.0": version: 3.2.0 resolution: "p-timeout@npm:3.2.0" dependencies: p-finally: ^1.0.0 checksum: 3dd0eaa048780a6f23e5855df3dd45c7beacff1f820476c1d0d1bcd6648e3298752ba2c877aa1c92f6453c7dd23faaf13d9f5149fc14c0598a142e2c5e8d649c languageName: node linkType: hard "p-try@npm:^1.0.0": version: 1.0.0 resolution: "p-try@npm:1.0.0" checksum: 3b5303f77eb7722144154288bfd96f799f8ff3e2b2b39330efe38db5dd359e4fb27012464cd85cb0a76e9b7edd1b443568cb3192c22e7cffc34989df0bafd605 languageName: node linkType: hard "p-try@npm:^2.0.0": version: 2.2.0 resolution: "p-try@npm:2.2.0" checksum: f8a8e9a7693659383f06aec604ad5ead237c7a261c18048a6e1b5b85a5f8a067e469aa24f5bc009b991ea3b058a87f5065ef4176793a200d4917349881216cae languageName: node linkType: hard "p-waterfall@npm:^2.1.1": version: 2.1.1 resolution: "p-waterfall@npm:2.1.1" dependencies: p-reduce: ^2.0.0 checksum: 8588bb8b004ee37e559c7e940a480c1742c42725d477b0776ff30b894920a3e48bddf8f60aa0ae82773e500a8fc99d75e947c450e0c2ce187aff72cc1b248f6d languageName: node linkType: hard "package-json@npm:^7.0.0": version: 7.0.0 resolution: "package-json@npm:7.0.0" dependencies: got: ^11.8.2 registry-auth-token: ^4.0.0 registry-url: ^5.0.0 semver: ^7.3.5 checksum: c03699b057f665c5bf2d6af76190b8fb32aaf69c70a78faf7c073c03c3d0d5e168d4a96f386739a4d179e925e66289bf0b93a446fbb3f97b05451a3cd2a3bd90 languageName: node linkType: hard "pacote@npm:^13.0.3, pacote@npm:^13.6.1": version: 13.6.2 resolution: "pacote@npm:13.6.2" dependencies: "@npmcli/git": ^3.0.0 "@npmcli/installed-package-contents": ^1.0.7 "@npmcli/promise-spawn": ^3.0.0 "@npmcli/run-script": ^4.1.0 cacache: ^16.0.0 chownr: ^2.0.0 fs-minipass: ^2.1.0 infer-owner: ^1.0.4 minipass: ^3.1.6 mkdirp: ^1.0.4 npm-package-arg: ^9.0.0 npm-packlist: ^5.1.0 npm-pick-manifest: ^7.0.0 npm-registry-fetch: ^13.0.1 proc-log: ^2.0.0 promise-retry: ^2.0.1 read-package-json: ^5.0.0 read-package-json-fast: ^2.0.3 rimraf: ^3.0.2 ssri: ^9.0.0 tar: ^6.1.11 bin: pacote: lib/bin.js checksum: a7b7f97094ab570a23e1c174537e9953a4d53176cc4b18bac77d7728bd89e2b9fa331d0f78fa463add03df79668a918bbdaa2750819504ee39242063abf53c6e languageName: node linkType: hard "parent-module@npm:^1.0.0": version: 1.0.1 resolution: "parent-module@npm:1.0.1" dependencies: callsites: ^3.0.0 checksum: 6ba8b255145cae9470cf5551eb74be2d22281587af787a2626683a6c20fbb464978784661478dd2a3f1dad74d1e802d403e1b03c1a31fab310259eec8ac560ff languageName: node linkType: hard "parse-conflict-json@npm:^2.0.1": version: 2.0.2 resolution: "parse-conflict-json@npm:2.0.2" dependencies: json-parse-even-better-errors: ^2.3.1 just-diff: ^5.0.1 just-diff-apply: ^5.2.0 checksum: 076f65c958696586daefb153f59d575dfb59648be43116a21b74d5ff69ec63dd56f585a27cc2da56d8e64ca5abf0373d6619b8330c035131f8d1e990c8406378 languageName: node linkType: hard "parse-json@npm:^4.0.0": version: 4.0.0 resolution: "parse-json@npm:4.0.0" dependencies: error-ex: ^1.3.1 json-parse-better-errors: ^1.0.1 checksum: 0fe227d410a61090c247e34fa210552b834613c006c2c64d9a05cfe9e89cf8b4246d1246b1a99524b53b313e9ac024438d0680f67e33eaed7e6f38db64cfe7b5 languageName: node linkType: hard "parse-json@npm:^5.0.0": version: 5.2.0 resolution: "parse-json@npm:5.2.0" dependencies: "@babel/code-frame": ^7.0.0 error-ex: ^1.3.1 json-parse-even-better-errors: ^2.3.0 lines-and-columns: ^1.1.6 checksum: 62085b17d64da57f40f6afc2ac1f4d95def18c4323577e1eced571db75d9ab59b297d1d10582920f84b15985cbfc6b6d450ccbf317644cfa176f3ed982ad87e2 languageName: node linkType: hard "parse-node-version@npm:^1.0.1": version: 1.0.1 resolution: "parse-node-version@npm:1.0.1" checksum: c192393b6a978092c1ef8df2c42c0a02e4534b96543e23d335f1b9b5b913ac75473d18fe6050b58d6995c57fb383ee71a5cb8397e363caaf38a6df8215cc52fd languageName: node linkType: hard "parse-path@npm:^7.0.0": version: 7.0.0 resolution: "parse-path@npm:7.0.0" dependencies: protocols: ^2.0.0 checksum: 244b46523a58181d251dda9b888efde35d8afb957436598d948852f416d8c76ddb4f2010f9fc94218b4be3e5c0f716aa0d2026194a781e3b8981924142009302 languageName: node linkType: hard "parse-srcset@npm:^1.0.2": version: 1.0.2 resolution: "parse-srcset@npm:1.0.2" checksum: 3a0380380c6082021fcce982f0b89fb8a493ce9dfd7d308e5e6d855201e80db8b90438649b31fdd82a3d6089a8ca17dccddaa2b730a718389af4c037b8539ebf languageName: node linkType: hard "parse-url@npm:^8.1.0": version: 8.1.0 resolution: "parse-url@npm:8.1.0" dependencies: parse-path: ^7.0.0 checksum: b93e21ab4c93c7d7317df23507b41be7697694d4c94f49ed5c8d6288b01cba328fcef5ba388e147948eac20453dee0df9a67ab2012415189fff85973bdffe8d9 languageName: node linkType: hard "parseurl@npm:~1.3.3": version: 1.3.3 resolution: "parseurl@npm:1.3.3" checksum: 407cee8e0a3a4c5cd472559bca8b6a45b82c124e9a4703302326e9ab60fc1081442ada4e02628efef1eb16197ddc7f8822f5a91fd7d7c86b51f530aedb17dfa2 languageName: node linkType: hard "path-browserify@npm:^1.0.0": version: 1.0.1 resolution: "path-browserify@npm:1.0.1" checksum: c6d7fa376423fe35b95b2d67990060c3ee304fc815ff0a2dc1c6c3cfaff2bd0d572ee67e18f19d0ea3bbe32e8add2a05021132ac40509416459fffee35200699 languageName: node linkType: hard "path-exists@npm:^3.0.0": version: 3.0.0 resolution: "path-exists@npm:3.0.0" checksum: 96e92643aa34b4b28d0de1cd2eba52a1c5313a90c6542d03f62750d82480e20bfa62bc865d5cfc6165f5fcd5aeb0851043c40a39be5989646f223300021bae0a languageName: node linkType: hard "path-exists@npm:^4.0.0": version: 4.0.0 resolution: "path-exists@npm:4.0.0" checksum: 505807199dfb7c50737b057dd8d351b82c033029ab94cb10a657609e00c1bc53b951cfdbccab8de04c5584d5eff31128ce6afd3db79281874a5ef2adbba55ed1 languageName: node linkType: hard "path-is-absolute@npm:^1.0.0": version: 1.0.1 resolution: "path-is-absolute@npm:1.0.1" checksum: 060840f92cf8effa293bcc1bea81281bd7d363731d214cbe5c227df207c34cd727430f70c6037b5159c8a870b9157cba65e775446b0ab06fd5ecc7e54615a3b8 languageName: node linkType: hard "path-key@npm:^2.0.1": version: 2.0.1 resolution: "path-key@npm:2.0.1" checksum: f7ab0ad42fe3fb8c7f11d0c4f849871e28fbd8e1add65c370e422512fc5887097b9cf34d09c1747d45c942a8c1e26468d6356e2df3f740bf177ab8ca7301ebfd languageName: node linkType: hard "path-key@npm:^3.0.0, path-key@npm:^3.1.0": version: 3.1.1 resolution: "path-key@npm:3.1.1" checksum: 55cd7a9dd4b343412a8386a743f9c746ef196e57c823d90ca3ab917f90ab9f13dd0ded27252ba49dbdfcab2b091d998bc446f6220cd3cea65db407502a740020 languageName: node linkType: hard "path-parse@npm:^1.0.7": version: 1.0.7 resolution: "path-parse@npm:1.0.7" checksum: 49abf3d81115642938a8700ec580da6e830dde670be21893c62f4e10bd7dd4c3742ddc603fe24f898cba7eb0c6bc1777f8d9ac14185d34540c6d4d80cd9cae8a languageName: node linkType: hard "path-scurry@npm:^1.10.0": version: 1.10.0 resolution: "path-scurry@npm:1.10.0" dependencies: lru-cache: ^9.1.1 || ^10.0.0 minipass: ^5.0.0 || ^6.0.2 checksum: 3b66a4a6ab66e45755b577c966ecf0da92d3e068b3c992d8f69aa2cc908ef4eda9358253e9b4f86cad43d3ad810ec445be164105975f5cb3fdab68459c59dc6e languageName: node linkType: hard "path-scurry@npm:^1.7.0": version: 1.9.1 resolution: "path-scurry@npm:1.9.1" dependencies: lru-cache: ^9.1.1 minipass: ^5.0.0 || ^6.0.0 checksum: 28caa788f17cc48e1a16b552bc08ba4ec57345bd18df7b9d58589bd83271e5bf932929467353f53ff66eb3bf056eb28d8f9b379525ee37e3f603169257542694 languageName: node linkType: hard "path-to-regexp@npm:0.1.7": version: 0.1.7 resolution: "path-to-regexp@npm:0.1.7" checksum: 69a14ea24db543e8b0f4353305c5eac6907917031340e5a8b37df688e52accd09e3cebfe1660b70d76b6bd89152f52183f28c74813dbf454ba1a01c82a38abce languageName: node linkType: hard "path-to-regexp@npm:^1.7.0": version: 1.8.0 resolution: "path-to-regexp@npm:1.8.0" dependencies: isarray: 0.0.1 checksum: 709f6f083c0552514ef4780cb2e7e4cf49b0cc89a97439f2b7cc69a608982b7690fb5d1720a7473a59806508fc2dae0be751ba49f495ecf89fd8fbc62abccbcd languageName: node linkType: hard "path-type@npm:^3.0.0": version: 3.0.0 resolution: "path-type@npm:3.0.0" dependencies: pify: ^3.0.0 checksum: 735b35e256bad181f38fa021033b1c33cfbe62ead42bb2222b56c210e42938eecb272ae1949f3b6db4ac39597a61b44edd8384623ec4d79bfdc9a9c0f12537a6 languageName: node linkType: hard "path-type@npm:^4.0.0": version: 4.0.0 resolution: "path-type@npm:4.0.0" checksum: 5b1e2daa247062061325b8fdbfd1fb56dde0a448fb1455453276ea18c60685bdad23a445dc148cf87bc216be1573357509b7d4060494a6fd768c7efad833ee45 languageName: node linkType: hard "pathval@npm:^1.1.1": version: 1.1.1 resolution: "pathval@npm:1.1.1" checksum: 090e3147716647fb7fb5b4b8c8e5b55e5d0a6086d085b6cd23f3d3c01fcf0ff56fd3cc22f2f4a033bd2e46ed55d61ed8379e123b42afe7d531a2a5fc8bb556d6 languageName: node linkType: hard "performance-now@npm:^2.1.0": version: 2.1.0 resolution: "performance-now@npm:2.1.0" checksum: 534e641aa8f7cba160f0afec0599b6cecefbb516a2e837b512be0adbe6c1da5550e89c78059c7fabc5c9ffdf6627edabe23eb7c518c4500067a898fa65c2b550 languageName: node linkType: hard "picocolors@npm:^0.2.1": version: 0.2.1 resolution: "picocolors@npm:0.2.1" checksum: 3b0f441f0062def0c0f39e87b898ae7461c3a16ffc9f974f320b44c799418cabff17780ee647fda42b856a1dc45897e2c62047e1b546d94d6d5c6962f45427b2 languageName: node linkType: hard "picocolors@npm:^1.0.0": version: 1.0.0 resolution: "picocolors@npm:1.0.0" checksum: a2e8092dd86c8396bdba9f2b5481032848525b3dc295ce9b57896f931e63fc16f79805144321f72976383fc249584672a75cc18d6777c6b757603f372f745981 languageName: node linkType: hard "picomatch@npm:^2.0.4, picomatch@npm:^2.2.1, picomatch@npm:^2.3.1": version: 2.3.1 resolution: "picomatch@npm:2.3.1" checksum: 050c865ce81119c4822c45d3c84f1ced46f93a0126febae20737bd05ca20589c564d6e9226977df859ed5e03dc73f02584a2b0faad36e896936238238b0446cf languageName: node linkType: hard "pidtree@npm:^0.3.0": version: 0.3.1 resolution: "pidtree@npm:0.3.1" bin: pidtree: bin/pidtree.js checksum: eb49025099f1af89a4696f7673351421f13420f3397b963c901fe23a1c9c2ff50f4750321970d4472c0ffbb065e4a6c3c27f75e226cc62284b19e21d32ce7012 languageName: node linkType: hard "pidtree@npm:^0.5.0": version: 0.5.0 resolution: "pidtree@npm:0.5.0" bin: pidtree: bin/pidtree.js checksum: 371cd14bbc9bdee2a6a44596dd521dd3565e223481e0b1afffdca3f1c29831850bfa7784114dc30d245d37e7d186cec035e036256b39f75d878d19498fe0df6a languageName: node linkType: hard "pify@npm:^2.3.0": version: 2.3.0 resolution: "pify@npm:2.3.0" checksum: 9503aaeaf4577acc58642ad1d25c45c6d90288596238fb68f82811c08104c800e5a7870398e9f015d82b44ecbcbef3dc3d4251a1cbb582f6e5959fe09884b2ba languageName: node linkType: hard "pify@npm:^3.0.0": version: 3.0.0 resolution: "pify@npm:3.0.0" checksum: 6cdcbc3567d5c412450c53261a3f10991665d660961e06605decf4544a61a97a54fefe70a68d5c37080ff9d6f4cf51444c90198d1ba9f9309a6c0d6e9f5c4fde languageName: node linkType: hard "pify@npm:^4.0.1": version: 4.0.1 resolution: "pify@npm:4.0.1" checksum: 9c4e34278cb09987685fa5ef81499c82546c033713518f6441778fbec623fc708777fe8ac633097c72d88470d5963094076c7305cafc7ad340aae27cfacd856b languageName: node linkType: hard "pify@npm:^5.0.0": version: 5.0.0 resolution: "pify@npm:5.0.0" checksum: 443e3e198ad6bfa8c0c533764cf75c9d5bc976387a163792fb553ffe6ce923887cf14eebf5aea9b7caa8eab930da8c33612990ae85bd8c2bc18bedb9eae94ecb languageName: node linkType: hard "pino-abstract-transport@npm:1.0.0": version: 1.0.0 resolution: "pino-abstract-transport@npm:1.0.0" dependencies: readable-stream: ^4.0.0 split2: ^4.0.0 checksum: 05dd0eda52dd99fd204b39fe7b62656744b63e863bc052cdd5105d25f226a236966d0a46e39a1ace4838f6e988c608837ff946d2d0bc92835ca7baa0a3bff8d8 languageName: node linkType: hard "pino-abstract-transport@npm:v0.5.0": version: 0.5.0 resolution: "pino-abstract-transport@npm:0.5.0" dependencies: duplexify: ^4.1.2 split2: ^4.0.0 checksum: c503f867de3189f8217ab9cf794e8a631dddd0029a829f0f985f5511308152ebd53e363764fbc5570b3d1c715b341e3923456ce16ad84cd41be2b9a074ada234 languageName: node linkType: hard "pino-std-serializers@npm:^4.0.0": version: 4.0.0 resolution: "pino-std-serializers@npm:4.0.0" checksum: 89d487729b58c9d3273a0ee851ead068d6d2e2ccc1af8e1c1d28f1b3442423679bec7ec04d9a2aba36f94f335e82be9f4de19dc4fbc161e71c136aaa15b85ad3 languageName: node linkType: hard "pino@npm:7.11.0": version: 7.11.0 resolution: "pino@npm:7.11.0" dependencies: atomic-sleep: ^1.0.0 fast-redact: ^3.0.0 on-exit-leak-free: ^0.2.0 pino-abstract-transport: v0.5.0 pino-std-serializers: ^4.0.0 process-warning: ^1.0.0 quick-format-unescaped: ^4.0.3 real-require: ^0.1.0 safe-stable-stringify: ^2.1.0 sonic-boom: ^2.2.1 thread-stream: ^0.15.1 bin: pino: bin.js checksum: b919e7dbe41de978bb050dcef94fd687c012eb78d344a18f75f04ce180d5810fc162be1f136722d70cd005ed05832c4023a38b9acbc1076ae63c9f5ec5ca515c languageName: node linkType: hard "pixrem@npm:^4.0.0": version: 4.0.1 resolution: "pixrem@npm:4.0.1" dependencies: browserslist: ^2.0.0 postcss: ^6.0.0 reduce-css-calc: ^1.2.7 checksum: 2bdcb8697b5b69657d5f779e3118249f52dc78978b9908efbe856fb1aaea1a957b35ad2766ba11bfcb883e7688cc8b167bb42e08c1a3a1793ee2808971d6f1f0 languageName: node linkType: hard "pkg-dir@npm:^4.2.0": version: 4.2.0 resolution: "pkg-dir@npm:4.2.0" dependencies: find-up: ^4.0.0 checksum: 9863e3f35132bf99ae1636d31ff1e1e3501251d480336edb1c211133c8d58906bed80f154a1d723652df1fda91e01c7442c2eeaf9dc83157c7ae89087e43c8d6 languageName: node linkType: hard "pkginfo@npm:0.4.1": version: 0.4.1 resolution: "pkginfo@npm:0.4.1" checksum: 0f13694f3682345647b7cb887fb6fe258df51b635f252324cd75eeb8181b4381cb8b9d91dc2d869849e857192b403bea65038d2f7c05b524eeae69ece5048209 languageName: node linkType: hard "pleeease-filters@npm:^4.0.0": version: 4.0.0 resolution: "pleeease-filters@npm:4.0.0" dependencies: onecolor: ^3.0.4 postcss: ^6.0.1 checksum: 112d1095924b192dbb882d2cbffb47ce00245cbf943c7a690448a702f6432d86855a4d100a658ad120ad9b8abc9928f697404297edd623cac279672e520f76c1 languageName: node linkType: hard "portfinder@npm:^1.0.28": version: 1.0.32 resolution: "portfinder@npm:1.0.32" dependencies: async: ^2.6.4 debug: ^3.2.7 mkdirp: ^0.5.6 checksum: 116b4aed1b9e16f6d5503823d966d9ffd41b1c2339e27f54c06cd2f3015a9d8ef53e2a53b57bc0a25af0885977b692007353aa28f9a0a98a44335cb50487240d languageName: node linkType: hard "postcss-apply@npm:^0.8.0": version: 0.8.0 resolution: "postcss-apply@npm:0.8.0" dependencies: babel-runtime: ^6.23.0 balanced-match: ^0.4.2 postcss: ^6.0.0 checksum: 1f1ca565166defb1d073b0c869d728212a95f3c91478da8b691e931a803f349b1a76b77c7ecd719814449153ffe6eaf77e289f14d9121d13fbf764ffd4bf627b languageName: node linkType: hard "postcss-attribute-case-insensitive@npm:^2.0.0": version: 2.0.0 resolution: "postcss-attribute-case-insensitive@npm:2.0.0" dependencies: postcss: ^6.0.0 postcss-selector-parser: ^2.2.3 checksum: 58cf5fc90ee3a3dcaef3a82b9f461be9b4159a2c942f17e7cff369c1823150643b162bbde71bbb86cfcf04e2872f07544b8f23d6a343ca4806ef95afa7b9c791 languageName: node linkType: hard "postcss-calc@npm:^6.0.0": version: 6.0.2 resolution: "postcss-calc@npm:6.0.2" dependencies: css-unit-converter: ^1.1.1 postcss: ^7.0.2 postcss-selector-parser: ^2.2.2 reduce-css-calc: ^2.0.0 checksum: 01366ca1558e9674086b01995c34aed7ba589da937597b67d29fe5f553b8b746387bc1ab0a01d507fe96f4ca3e39a0a8b7cc4b9478c415145b843b1ff559955e languageName: node linkType: hard "postcss-cli@npm:^9.1.0": version: 9.1.0 resolution: "postcss-cli@npm:9.1.0" dependencies: chokidar: ^3.3.0 dependency-graph: ^0.11.0 fs-extra: ^10.0.0 get-stdin: ^9.0.0 globby: ^12.0.0 picocolors: ^1.0.0 postcss-load-config: ^3.0.0 postcss-reporter: ^7.0.0 pretty-hrtime: ^1.0.3 read-cache: ^1.0.0 slash: ^4.0.0 yargs: ^17.0.0 peerDependencies: postcss: ^8.0.0 bin: postcss: index.js checksum: 6f172cbdba2966f9b789e2ac6d2d87eb737e5a6c0bc025a729fb23631cfffb62df72472b14c91a8adacabd263c64f4b38fd70923da3727ee994def0b3c930003 languageName: node linkType: hard "postcss-color-function@npm:^4.0.0": version: 4.1.0 resolution: "postcss-color-function@npm:4.1.0" dependencies: css-color-function: ~1.3.3 postcss: ^6.0.23 postcss-message-helpers: ^2.0.0 postcss-value-parser: ^3.3.1 checksum: c4dbfff69544f06e3542109c2eeeb64a4efbe2f7a0e023defcf20d2d95daeef17437abb86cae3a5caa1380e8ff440c8588f67b89034782b431f58f5f3e54a77c languageName: node linkType: hard "postcss-color-gray@npm:^4.0.0": version: 4.1.0 resolution: "postcss-color-gray@npm:4.1.0" dependencies: color: ^2.0.1 postcss: ^6.0.14 postcss-message-helpers: ^2.0.0 reduce-function-call: ^1.0.2 checksum: 882c7dc13311fd7f0643bab0af4506f990aa68c276066d7c54cc0cbf997d36e32e585bfdddde43d4d80bd57241275d8a116fdf7b696b8d3c247dfb1c314bd962 languageName: node linkType: hard "postcss-color-hex-alpha@npm:^3.0.0": version: 3.0.0 resolution: "postcss-color-hex-alpha@npm:3.0.0" dependencies: color: ^1.0.3 postcss: ^6.0.1 postcss-message-helpers: ^2.0.0 checksum: dd49bbaa90c6ebc7f73c9e9c2837060e13fc6255e333871cdca42cf5e4c55ae1bb4df1a7bf6800d528f72601e4c5c0c7e925566b7d57d2fc07d5127a34ab14de languageName: node linkType: hard "postcss-color-hsl@npm:^2.0.0": version: 2.0.0 resolution: "postcss-color-hsl@npm:2.0.0" dependencies: postcss: ^6.0.1 postcss-value-parser: ^3.3.0 units-css: ^0.4.0 checksum: 73836ce7f84eeba1668e87255a32dae558f49e29aa0e6b6f16b6d9cd74ac2a67055035bf8a280418a04ce62f6b16ac1287a27b6c54e0b38f4b756cb277dc0cc1 languageName: node linkType: hard "postcss-color-hwb@npm:^3.0.0": version: 3.0.0 resolution: "postcss-color-hwb@npm:3.0.0" dependencies: color: ^1.0.3 postcss: ^6.0.1 postcss-message-helpers: ^2.0.0 reduce-function-call: ^1.0.2 checksum: f0d68b03eb3e21a37a72ce5efddda2ac61cfb44dd86066bc2035e401fc18b36855976ac654d9a54a7852cebf028a104bd3b80f822e45b75364928a846f7dee1d languageName: node linkType: hard "postcss-color-rebeccapurple@npm:^3.0.0": version: 3.1.0 resolution: "postcss-color-rebeccapurple@npm:3.1.0" dependencies: postcss: ^6.0.22 postcss-values-parser: ^1.5.0 checksum: b90c62245eedb735583d0d81b52a5a99f51bedde8782b1c1b0ec9cc6b86236f322dbf9476ef8608d9eb332fb51f480e5f87e87545dbb822a8b93c82f44359db2 languageName: node linkType: hard "postcss-color-rgb@npm:^2.0.0": version: 2.0.0 resolution: "postcss-color-rgb@npm:2.0.0" dependencies: postcss: ^6.0.1 postcss-value-parser: ^3.3.0 checksum: 6f7bebbff4cb418304b536cbd3aeb78793d0ec2672a25084f8e169dd7682cc91aef60c30015907c39c937675448e401638cb706d393b45ca47d60d1b8d2e2aaf languageName: node linkType: hard "postcss-color-rgba-fallback@npm:^3.0.0": version: 3.0.0 resolution: "postcss-color-rgba-fallback@npm:3.0.0" dependencies: postcss: ^6.0.6 postcss-value-parser: ^3.3.0 rgb-hex: ^2.1.0 checksum: 245df07d2ca94db9c03ba372648a48ff5c2817d3f8131fb0e7397176a7a51507b0e05a5c6fbcec9637b3452d074417a599f3450fffecc4f38d10e9471f83331b languageName: node linkType: hard "postcss-cssnext@npm:^3.1.0": version: 3.1.1 resolution: "postcss-cssnext@npm:3.1.1" dependencies: autoprefixer: ^7.1.1 caniuse-api: ^2.0.0 chalk: ^2.0.1 pixrem: ^4.0.0 pleeease-filters: ^4.0.0 postcss: ^6.0.5 postcss-apply: ^0.8.0 postcss-attribute-case-insensitive: ^2.0.0 postcss-calc: ^6.0.0 postcss-color-function: ^4.0.0 postcss-color-gray: ^4.0.0 postcss-color-hex-alpha: ^3.0.0 postcss-color-hsl: ^2.0.0 postcss-color-hwb: ^3.0.0 postcss-color-rebeccapurple: ^3.0.0 postcss-color-rgb: ^2.0.0 postcss-color-rgba-fallback: ^3.0.0 postcss-custom-media: ^6.0.0 postcss-custom-properties: ^6.1.0 postcss-custom-selectors: ^4.0.1 postcss-font-family-system-ui: ^3.0.0 postcss-font-variant: ^3.0.0 postcss-image-set-polyfill: ^0.3.5 postcss-initial: ^2.0.0 postcss-media-minmax: ^3.0.0 postcss-nesting: ^4.0.1 postcss-pseudo-class-any-link: ^4.0.0 postcss-pseudoelements: ^5.0.0 postcss-replace-overflow-wrap: ^2.0.0 postcss-selector-matches: ^3.0.1 postcss-selector-not: ^3.0.1 peerDependencies: caniuse-lite: ^1.0.30000697 checksum: daa46343c0e086700a6c25e9261aac2f8396d3fdac1e86c02f5e3d1854737213edda4104ce6f30a7c76f3ad989326e916fc102e5607dfdd4a54f0a5f93e1b407 languageName: node linkType: hard "postcss-custom-media@npm:^6.0.0": version: 6.0.0 resolution: "postcss-custom-media@npm:6.0.0" dependencies: postcss: ^6.0.1 checksum: 0d616d5369a99fa7e0efa1951b7ea2b5208e2a0e8df9c9324c67cd61a8f5fc9b3b4b6d88e0175d12c1e940dc5c6a0fbd42a7a56b4ec10450dd252bd5cd8cb12c languageName: node linkType: hard "postcss-custom-properties@npm:^6.1.0": version: 6.3.1 resolution: "postcss-custom-properties@npm:6.3.1" dependencies: balanced-match: ^1.0.0 postcss: ^6.0.18 checksum: ae7fc852259ef6d223fdcf561bcb4106bedc51abc353d259a102b7cff5066446bef01734874508604b664d7b25394fd1ca09f93a475174d299edcc02194254e3 languageName: node linkType: hard "postcss-custom-selectors@npm:^4.0.1": version: 4.0.1 resolution: "postcss-custom-selectors@npm:4.0.1" dependencies: postcss: ^6.0.1 postcss-selector-matches: ^3.0.0 checksum: a3f25ae1fcdf83748f920eabab1d2ea9eda0f722cfb1b0c679577ed5231ef3b0e5125ef81b9c11ba383b5aae21de04e4e82c87c129542c1b7c9f4bd37f9edd65 languageName: node linkType: hard "postcss-font-family-system-ui@npm:^3.0.0": version: 3.0.0 resolution: "postcss-font-family-system-ui@npm:3.0.0" dependencies: postcss: ^6.0 checksum: 6ad35ec6e2499130181ae7962fd3bd52244ebf53d6ea97a2299d98fa3e9917cdfafa6cac1e4b146cadbd409db877d43a5ac25bd82ad0df68f374399d06866f7a languageName: node linkType: hard "postcss-font-variant@npm:^3.0.0": version: 3.0.0 resolution: "postcss-font-variant@npm:3.0.0" dependencies: postcss: ^6.0.1 checksum: a0b2afc64dd6e33712d0464ab50a13ff138aedf65b52b91bb7f66c16313368124ee96defcc3b988a886b367cfc1883b79c4f35804d9f3764afe79c83858a5e4e languageName: node linkType: hard "postcss-image-set-polyfill@npm:^0.3.5": version: 0.3.5 resolution: "postcss-image-set-polyfill@npm:0.3.5" dependencies: postcss: ^6.0.1 postcss-media-query-parser: ^0.2.3 checksum: 5f003275128302b25df8c3923c1b7bf424b5f28f8e7bca867a748f9b917d2e10b26f07149e745d2af8866b0b3b3682a21069120edfeb80c8362c214bd14de0ab languageName: node linkType: hard "postcss-import@npm:^14.0.2": version: 14.1.0 resolution: "postcss-import@npm:14.1.0" dependencies: postcss-value-parser: ^4.0.0 read-cache: ^1.0.0 resolve: ^1.1.7 peerDependencies: postcss: ^8.0.0 checksum: cd45d406e90f67cdab9524352e573cc6b4462b790934a05954e929a6653ebd31288ceebc8ce3c3ed7117ae672d9ebbec57df0bceec0a56e9b259c2e71d47ca86 languageName: node linkType: hard "postcss-initial@npm:^2.0.0": version: 2.0.0 resolution: "postcss-initial@npm:2.0.0" dependencies: lodash.template: ^4.2.4 postcss: ^6.0.1 checksum: d2686a699b02b2a6e61adee34189d25c60ef265213735c72979d0704476b339b142b964e281b1f537dd55735a19c5444813c3849d2aa13036da670b53720d042 languageName: node linkType: hard "postcss-load-config@npm:^3.0.0": version: 3.1.4 resolution: "postcss-load-config@npm:3.1.4" dependencies: lilconfig: ^2.0.5 yaml: ^1.10.2 peerDependencies: postcss: ">=8.0.9" ts-node: ">=9.0.0" peerDependenciesMeta: postcss: optional: true ts-node: optional: true checksum: 1c589504c2d90b1568aecae8238ab993c17dba2c44f848a8f13619ba556d26a1c09644d5e6361b5784e721e94af37b604992f9f3dc0483e687a0cc1cc5029a34 languageName: node linkType: hard "postcss-loader@npm:^6.1.0": version: 6.2.1 resolution: "postcss-loader@npm:6.2.1" dependencies: cosmiconfig: ^7.0.0 klona: ^2.0.5 semver: ^7.3.5 peerDependencies: postcss: ^7.0.0 || ^8.0.1 webpack: ^5.0.0 checksum: e40ae79c3e39df37014677a817b001bd115d8b10dedf53a07b97513d93b1533cd702d7a48831bdd77b9a9484b1ec84a5d4a723f80e83fb28682c75b5e65e8a90 languageName: node linkType: hard "postcss-media-minmax@npm:^3.0.0": version: 3.0.0 resolution: "postcss-media-minmax@npm:3.0.0" dependencies: postcss: ^6.0.1 checksum: 642194880af15dfdd95aa633a3ffaf54f55fdfe8e8a5ed8d7dfaffb4cf3c66117381e77c6fe0432eb4e786229369869a5070c05a5501702bce9631e8873d1fd0 languageName: node linkType: hard "postcss-media-query-parser@npm:^0.2.3": version: 0.2.3 resolution: "postcss-media-query-parser@npm:0.2.3" checksum: 8000d4d95b912994928ff86137f5ab0ed4c4ee1498af2336e93d708ae8827a690cd7acbaed55d14684cf44d82c8d44b031c1c69ae6bcd2f9620ea67573888090 languageName: node linkType: hard "postcss-message-helpers@npm:^2.0.0": version: 2.0.0 resolution: "postcss-message-helpers@npm:2.0.0" checksum: 2a2c43113eb67a0d9551e1dc135a56bc4e5f783365f396b0b7926f77968e21bf9ee5698810acec46e9635a413ae4e33eaed6c289cf2b4bc54333fcea65532a8c languageName: node linkType: hard "postcss-modules-extract-imports@npm:^3.0.0": version: 3.0.0 resolution: "postcss-modules-extract-imports@npm:3.0.0" peerDependencies: postcss: ^8.1.0 checksum: 4b65f2f1382d89c4bc3c0a1bdc5942f52f3cb19c110c57bd591ffab3a5fee03fcf831604168205b0c1b631a3dce2255c70b61aaae3ef39d69cd7eb450c2552d2 languageName: node linkType: hard "postcss-modules-local-by-default@npm:^4.0.0": version: 4.0.0 resolution: "postcss-modules-local-by-default@npm:4.0.0" dependencies: icss-utils: ^5.0.0 postcss-selector-parser: ^6.0.2 postcss-value-parser: ^4.1.0 peerDependencies: postcss: ^8.1.0 checksum: 6cf570badc7bc26c265e073f3ff9596b69bb954bc6ac9c5c1b8cba2995b80834226b60e0a3cbb87d5f399dbb52e6466bba8aa1d244f6218f99d834aec431a69d languageName: node linkType: hard "postcss-modules-scope@npm:^3.0.0": version: 3.0.0 resolution: "postcss-modules-scope@npm:3.0.0" dependencies: postcss-selector-parser: ^6.0.4 peerDependencies: postcss: ^8.1.0 checksum: 330b9398dbd44c992c92b0dc612c0626135e2cc840fee41841eb61247a6cfed95af2bd6f67ead9dd9d0bb41f5b0367129d93c6e434fa3e9c58ade391d9a5a138 languageName: node linkType: hard "postcss-modules-values@npm:^4.0.0": version: 4.0.0 resolution: "postcss-modules-values@npm:4.0.0" dependencies: icss-utils: ^5.0.0 peerDependencies: postcss: ^8.1.0 checksum: f7f2cdf14a575b60e919ad5ea52fed48da46fe80db2733318d71d523fc87db66c835814940d7d05b5746b0426e44661c707f09bdb83592c16aea06e859409db6 languageName: node linkType: hard "postcss-nesting@npm:^4.0.1": version: 4.2.1 resolution: "postcss-nesting@npm:4.2.1" dependencies: postcss: ^6.0.11 checksum: 2dced3b2182d705f7ae7ee6ababdfac5c8e19657aa9b00443d4d453ff0525fbd2013f61abc038a0cfa6b5ec7deb1953f3c367d293fa7d684a2324cafa4797bf0 languageName: node linkType: hard "postcss-pseudo-class-any-link@npm:^4.0.0": version: 4.0.0 resolution: "postcss-pseudo-class-any-link@npm:4.0.0" dependencies: postcss: ^6.0.1 postcss-selector-parser: ^2.2.3 checksum: 0a44c60b48ea01edce31652e144464bf772f1c71528f0dd81f87c7fa95e485668586095ed968d7ea43d52e417bd4e7dff120b82ae1bfb48377b1a196b1b8843b languageName: node linkType: hard "postcss-pseudoelements@npm:^5.0.0": version: 5.0.0 resolution: "postcss-pseudoelements@npm:5.0.0" dependencies: postcss: ^6.0.0 checksum: e199351e1f6284efa69c7812af76ede010f481ca15caf3689497f4e6d68952ab6f5585258a3f3b13fdcfadbf06bd3f926e9d3640ded1912a9bda47e944eae0d3 languageName: node linkType: hard "postcss-replace-overflow-wrap@npm:^2.0.0": version: 2.0.0 resolution: "postcss-replace-overflow-wrap@npm:2.0.0" dependencies: postcss: ^6.0.1 checksum: cbb1591d9c09d95a0923af382c46fdda3778cfb30fcd61b75a3202892381bfe8e152210ce34b70e1bc84ae4b9de03fbb38a50038d2d7098eb3766654b81b920e languageName: node linkType: hard "postcss-reporter@npm:^7.0.0": version: 7.0.5 resolution: "postcss-reporter@npm:7.0.5" dependencies: picocolors: ^1.0.0 thenby: ^1.3.4 peerDependencies: postcss: ^8.1.0 checksum: ed450a6fbf03c42d43ceec1d6ff3e1671441a00abf1f81b919c8d23761250d6809bac42e5ade06c8e4ca137cb1e27e3cb3f74ded3d4b79d332807f6abe4ee57c languageName: node linkType: hard "postcss-selector-matches@npm:^3.0.0, postcss-selector-matches@npm:^3.0.1": version: 3.0.1 resolution: "postcss-selector-matches@npm:3.0.1" dependencies: balanced-match: ^0.4.2 postcss: ^6.0.1 checksum: dfef76b1c15c9e06661d5dd8eac94f091f0e4f3279f5001c973c2956b8f44f15a8340a19bda3b9603342b987fcaf740e619b35127d1a0aa8364ddaddb54c7c4e languageName: node linkType: hard "postcss-selector-not@npm:^3.0.1": version: 3.0.1 resolution: "postcss-selector-not@npm:3.0.1" dependencies: balanced-match: ^0.4.2 postcss: ^6.0.1 checksum: b1d8bdbf657a858d08bc6555b9664ed7dae987ba01ccdf0b6d4c65e95541970b986bbc2e899d8a2fcfa91f15fa9275241bde7d644dd7a557cdff418e3038cfae languageName: node linkType: hard "postcss-selector-parser@npm:^2.2.2, postcss-selector-parser@npm:^2.2.3": version: 2.2.3 resolution: "postcss-selector-parser@npm:2.2.3" dependencies: flatten: ^1.0.2 indexes-of: ^1.0.1 uniq: ^1.0.1 checksum: ea5aba10ffb4d3f0804f1d6b46cef121bcfba9b14b78beba89f38a4520a3000384458dbc52a8453b17a56fa83414572972e897735519c52c9a218dd5e3ccf11f languageName: node linkType: hard "postcss-selector-parser@npm:^6.0.2, postcss-selector-parser@npm:^6.0.4": version: 6.0.13 resolution: "postcss-selector-parser@npm:6.0.13" dependencies: cssesc: ^3.0.0 util-deprecate: ^1.0.2 checksum: f89163338a1ce3b8ece8e9055cd5a3165e79a15e1c408e18de5ad8f87796b61ec2d48a2902d179ae0c4b5de10fccd3a325a4e660596549b040bc5ad1b465f096 languageName: node linkType: hard "postcss-value-parser@npm:^3.2.3, postcss-value-parser@npm:^3.3.0, postcss-value-parser@npm:^3.3.1": version: 3.3.1 resolution: "postcss-value-parser@npm:3.3.1" checksum: 62cd26e1cdbcf2dcc6bcedf3d9b409c9027bc57a367ae20d31dd99da4e206f730689471fd70a2abe866332af83f54dc1fa444c589e2381bf7f8054c46209ce16 languageName: node linkType: hard "postcss-value-parser@npm:^4.0.0, postcss-value-parser@npm:^4.1.0, postcss-value-parser@npm:^4.2.0": version: 4.2.0 resolution: "postcss-value-parser@npm:4.2.0" checksum: 819ffab0c9d51cf0acbabf8996dffbfafbafa57afc0e4c98db88b67f2094cb44488758f06e5da95d7036f19556a4a732525e84289a425f4f6fd8e412a9d7442f languageName: node linkType: hard "postcss-values-parser@npm:^1.5.0": version: 1.5.0 resolution: "postcss-values-parser@npm:1.5.0" dependencies: flatten: ^1.0.2 indexes-of: ^1.0.1 uniq: ^1.0.1 checksum: b827b69e576f7586ec6255660e0e80d84ca3f873cbc7d2978189d7052038559318f35bef946dd56bccb7f8c970ab280fe5acb921014ebb4004fb75bdfef9d328 languageName: node linkType: hard "postcss@npm:^6.0, postcss@npm:^6.0.0, postcss@npm:^6.0.1, postcss@npm:^6.0.11, postcss@npm:^6.0.14, postcss@npm:^6.0.17, postcss@npm:^6.0.18, postcss@npm:^6.0.22, postcss@npm:^6.0.23, postcss@npm:^6.0.5, postcss@npm:^6.0.6": version: 6.0.23 resolution: "postcss@npm:6.0.23" dependencies: chalk: ^2.4.1 source-map: ^0.6.1 supports-color: ^5.4.0 checksum: cc6cb2c1dbcdefa6f57a71d67fe535c9e96543298bbe28f9a6a64c4f1e21b6127113890dd4cda8873d3f4e6613a0566b7b4bbb230204f3a9a309190bda065d81 languageName: node linkType: hard "postcss@npm:^7.0.2": version: 7.0.39 resolution: "postcss@npm:7.0.39" dependencies: picocolors: ^0.2.1 source-map: ^0.6.1 checksum: 4ac793f506c23259189064bdc921260d869a115a82b5e713973c5af8e94fbb5721a5cc3e1e26840500d7e1f1fa42a209747c5b1a151918a9bc11f0d7ed9048e3 languageName: node linkType: hard "postcss@npm:^8.3.11, postcss@npm:^8.3.2, postcss@npm:^8.4.19": version: 8.4.23 resolution: "postcss@npm:8.4.23" dependencies: nanoid: ^3.3.6 picocolors: ^1.0.0 source-map-js: ^1.0.2 checksum: 8bb9d1b2ea6e694f8987d4f18c94617971b2b8d141602725fedcc2222fdc413b776a6e1b969a25d627d7b2681ca5aabb56f59e727ef94072e1b6ac8412105a2f languageName: node linkType: hard "prelude-ls@npm:^1.2.1": version: 1.2.1 resolution: "prelude-ls@npm:1.2.1" checksum: cd192ec0d0a8e4c6da3bb80e4f62afe336df3f76271ac6deb0e6a36187133b6073a19e9727a1ff108cd8b9982e4768850d413baa71214dd80c7979617dca827a languageName: node linkType: hard "prettier-linter-helpers@npm:^1.0.0": version: 1.0.0 resolution: "prettier-linter-helpers@npm:1.0.0" dependencies: fast-diff: ^1.1.2 checksum: 00ce8011cf6430158d27f9c92cfea0a7699405633f7f1d4a45f07e21bf78e99895911cbcdc3853db3a824201a7c745bd49bfea8abd5fb9883e765a90f74f8392 languageName: node linkType: hard "prettier@npm:^2.3.2, prettier@npm:^2.8.3": version: 2.8.8 resolution: "prettier@npm:2.8.8" bin: prettier: bin-prettier.js checksum: b49e409431bf129dd89238d64299ba80717b57ff5a6d1c1a8b1a28b590d998a34e083fa13573bc732bb8d2305becb4c9a4407f8486c81fa7d55100eb08263cf8 languageName: node linkType: hard "prettier@npm:~2.6.0": version: 2.6.2 resolution: "prettier@npm:2.6.2" bin: prettier: bin-prettier.js checksum: 48d08dde8e9fb1f5bccdd205baa7f192e9fc8bc98f86e1b97d919de804e28c806b0e6cc685e4a88211aa7987fa9668f30baae19580d87ced3ed0f2ec6572106f languageName: node linkType: hard "pretty-hrtime@npm:^1.0.3": version: 1.0.3 resolution: "pretty-hrtime@npm:1.0.3" checksum: bae0e6832fe13c3de43d1a3d43df52bf6090499d74dc65a17f5552cb1a94f1f8019a23284ddf988c3c408a09678d743901e1d8f5b7a71bec31eeeac445bef371 languageName: node linkType: hard "proc-log@npm:^2.0.0, proc-log@npm:^2.0.1": version: 2.0.1 resolution: "proc-log@npm:2.0.1" checksum: f6f23564ff759097db37443e6e2765af84979a703d2c52c1b9df506ee9f87caa101ba49d8fdc115c1a313ec78e37e8134704e9069e6a870f3499d98bb24c436f languageName: node linkType: hard "process-nextick-args@npm:~2.0.0": version: 2.0.1 resolution: "process-nextick-args@npm:2.0.1" checksum: 1d38588e520dab7cea67cbbe2efdd86a10cc7a074c09657635e34f035277b59fbb57d09d8638346bf7090f8e8ebc070c96fa5fd183b777fff4f5edff5e9466cf languageName: node linkType: hard "process-warning@npm:1.0.0, process-warning@npm:^1.0.0": version: 1.0.0 resolution: "process-warning@npm:1.0.0" checksum: c708a03241deec3cabaeee39c4f9ee8c4d71f1c5ef9b746c8252cdb952a6059068cfcdaf348399775244cbc441b6ae5e26a9c87ed371f88335d84f26d19180f9 languageName: node linkType: hard "process@npm:^0.11.10": version: 0.11.10 resolution: "process@npm:0.11.10" checksum: bfcce49814f7d172a6e6a14d5fa3ac92cc3d0c3b9feb1279774708a719e19acd673995226351a082a9ae99978254e320ccda4240ddc474ba31a76c79491ca7c3 languageName: node linkType: hard "promise-all-reject-late@npm:^1.0.0": version: 1.0.1 resolution: "promise-all-reject-late@npm:1.0.1" checksum: d7d61ac412352e2c8c3463caa5b1c3ca0f0cc3db15a09f180a3da1446e33d544c4261fc716f772b95e4c27d559cfd2388540f44104feb356584f9c73cfb9ffcb languageName: node linkType: hard "promise-call-limit@npm:^1.0.1": version: 1.0.2 resolution: "promise-call-limit@npm:1.0.2" checksum: d0664dd2954c063115c58a4d0f929ff8dcfca634146dfdd4ec86f4993cfe14db229fb990457901ad04c923b3fb872067f3b47e692e0c645c01536b92fc4460bd languageName: node linkType: hard "promise-inflight@npm:^1.0.1": version: 1.0.1 resolution: "promise-inflight@npm:1.0.1" checksum: 22749483091d2c594261517f4f80e05226d4d5ecc1fc917e1886929da56e22b5718b7f2a75f3807e7a7d471bc3be2907fe92e6e8f373ddf5c64bae35b5af3981 languageName: node linkType: hard "promise-retry@npm:^2.0.1": version: 2.0.1 resolution: "promise-retry@npm:2.0.1" dependencies: err-code: ^2.0.2 retry: ^0.12.0 checksum: f96a3f6d90b92b568a26f71e966cbbc0f63ab85ea6ff6c81284dc869b41510e6cdef99b6b65f9030f0db422bf7c96652a3fff9f2e8fb4a0f069d8f4430359429 languageName: node linkType: hard "promzard@npm:^0.3.0": version: 0.3.0 resolution: "promzard@npm:0.3.0" dependencies: read: 1 checksum: 443a3b39ac916099988ee0161ab4e22edd1fa27e3d39a38d60e48c11ca6df3f5a90bfe44d95af06ed8659c4050b789ffe64c3f9f8e49a4bea1ea19105c98445a languageName: node linkType: hard "prop-types@npm:^15.8.1": version: 15.8.1 resolution: "prop-types@npm:15.8.1" dependencies: loose-envify: ^1.4.0 object-assign: ^4.1.1 react-is: ^16.13.1 checksum: c056d3f1c057cb7ff8344c645450e14f088a915d078dcda795041765047fa080d38e5d626560ccaac94a4e16e3aa15f3557c1a9a8d1174530955e992c675e459 languageName: node linkType: hard "property-expr@npm:^2.0.4": version: 2.0.5 resolution: "property-expr@npm:2.0.5" checksum: 4ebe82ce45aaf1527e96e2ab84d75d25217167ec3ff6378cf83a84fb4abc746e7c65768a79d275881602ae82f168f9a6dfaa7f5e331d0fcc83d692770bcce5f1 languageName: node linkType: hard "proto-list@npm:~1.2.1": version: 1.2.4 resolution: "proto-list@npm:1.2.4" checksum: 4d4826e1713cbfa0f15124ab0ae494c91b597a3c458670c9714c36e8baddf5a6aad22842776f2f5b137f259c8533e741771445eb8df82e861eea37a6eaba03f7 languageName: node linkType: hard "protocols@npm:^2.0.0, protocols@npm:^2.0.1": version: 2.0.1 resolution: "protocols@npm:2.0.1" checksum: 4a9bef6aa0449a0245ded319ac3cbfd032c3e76ebb562777037a3a832c99253d0e8bc2847f7be350236df620a11f7d4fe683ea7f59a2cc14c69f746b6259eda4 languageName: node linkType: hard "proxy-addr@npm:~2.0.7": version: 2.0.7 resolution: "proxy-addr@npm:2.0.7" dependencies: forwarded: 0.2.0 ipaddr.js: 1.9.1 checksum: 29c6990ce9364648255454842f06f8c46fcd124d3e6d7c5066df44662de63cdc0bad032e9bf5a3d653ff72141cc7b6019873d685708ac8210c30458ad99f2b74 languageName: node linkType: hard "proxy-from-env@npm:^1.1.0": version: 1.1.0 resolution: "proxy-from-env@npm:1.1.0" checksum: ed7fcc2ba0a33404958e34d95d18638249a68c430e30fcb6c478497d72739ba64ce9810a24f53a7d921d0c065e5b78e3822759800698167256b04659366ca4d4 languageName: node linkType: hard "prr@npm:~1.0.1": version: 1.0.1 resolution: "prr@npm:1.0.1" checksum: 3bca2db0479fd38f8c4c9439139b0c42dcaadcc2fbb7bb8e0e6afaa1383457f1d19aea9e5f961d5b080f1cfc05bfa1fe9e45c97a1d3fd6d421950a73d3108381 languageName: node linkType: hard "psl@npm:^1.1.28": version: 1.9.0 resolution: "psl@npm:1.9.0" checksum: 20c4277f640c93d393130673f392618e9a8044c6c7bf61c53917a0fddb4952790f5f362c6c730a9c32b124813e173733f9895add8d26f566ed0ea0654b2e711d languageName: node linkType: hard "pump@npm:^3.0.0": version: 3.0.0 resolution: "pump@npm:3.0.0" dependencies: end-of-stream: ^1.1.0 once: ^1.3.1 checksum: e42e9229fba14732593a718b04cb5e1cfef8254544870997e0ecd9732b189a48e1256e4e5478148ecb47c8511dca2b09eae56b4d0aad8009e6fac8072923cfc9 languageName: node linkType: hard "punycode@npm:^2.1.0, punycode@npm:^2.1.1": version: 2.3.0 resolution: "punycode@npm:2.3.0" checksum: 39f760e09a2a3bbfe8f5287cf733ecdad69d6af2fe6f97ca95f24b8921858b91e9ea3c9eeec6e08cede96181b3bb33f95c6ffd8c77e63986508aa2e8159fa200 languageName: node linkType: hard "q@npm:^1.5.1": version: 1.5.1 resolution: "q@npm:1.5.1" checksum: 147baa93c805bc1200ed698bdf9c72e9e42c05f96d007e33a558b5fdfd63e5ea130e99313f28efc1783e90e6bdb4e48b67a36fcc026b7b09202437ae88a1fb12 languageName: node linkType: hard "qjobs@npm:^1.2.0": version: 1.2.0 resolution: "qjobs@npm:1.2.0" checksum: eb64c00724d2fecaf9246383b4eebc3a4c34845b25d41921dd57f41b30a4310cef661543facac27ceb6911aab64a1acdf45b5d8f1d5e2838554d0c010ee56852 languageName: node linkType: hard "qs@npm:6.11.0": version: 6.11.0 resolution: "qs@npm:6.11.0" dependencies: side-channel: ^1.0.4 checksum: 6e1f29dd5385f7488ec74ac7b6c92f4d09a90408882d0c208414a34dd33badc1a621019d4c799a3df15ab9b1d0292f97c1dd71dc7c045e69f81a8064e5af7297 languageName: node linkType: hard "qs@npm:^6.4.0": version: 6.11.2 resolution: "qs@npm:6.11.2" dependencies: side-channel: ^1.0.4 checksum: e812f3c590b2262548647d62f1637b6989cc56656dc960b893fe2098d96e1bd633f36576f4cd7564dfbff9db42e17775884db96d846bebe4f37420d073ecdc0b languageName: node linkType: hard "qs@npm:~6.5.2": version: 6.5.3 resolution: "qs@npm:6.5.3" checksum: 6f20bf08cabd90c458e50855559539a28d00b2f2e7dddcb66082b16a43188418cb3cb77cbd09268bcef6022935650f0534357b8af9eeb29bf0f27ccb17655692 languageName: node linkType: hard "querystringify@npm:^2.1.1": version: 2.2.0 resolution: "querystringify@npm:2.2.0" checksum: 5641ea231bad7ef6d64d9998faca95611ed4b11c2591a8cae741e178a974f6a8e0ebde008475259abe1621cb15e692404e6b6626e927f7b849d5c09392604b15 languageName: node linkType: hard "queue-microtask@npm:^1.2.2": version: 1.2.3 resolution: "queue-microtask@npm:1.2.3" checksum: b676f8c040cdc5b12723ad2f91414d267605b26419d5c821ff03befa817ddd10e238d22b25d604920340fd73efd8ba795465a0377c4adf45a4a41e4234e42dc4 languageName: node linkType: hard "quick-format-unescaped@npm:^4.0.3": version: 4.0.4 resolution: "quick-format-unescaped@npm:4.0.4" checksum: 7bc32b99354a1aa46c089d2a82b63489961002bb1d654cee3e6d2d8778197b68c2d854fd23d8422436ee1fdfd0abaddc4d4da120afe700ade68bd357815b26fd languageName: node linkType: hard "quick-lru@npm:^4.0.1": version: 4.0.1 resolution: "quick-lru@npm:4.0.1" checksum: bea46e1abfaa07023e047d3cf1716a06172c4947886c053ede5c50321893711577cb6119360f810cc3ffcd70c4d7db4069c3cee876b358ceff8596e062bd1154 languageName: node linkType: hard "quick-lru@npm:^5.1.1": version: 5.1.1 resolution: "quick-lru@npm:5.1.1" checksum: a516faa25574be7947969883e6068dbe4aa19e8ef8e8e0fd96cddd6d36485e9106d85c0041a27153286b0770b381328f4072aa40d3b18a19f5f7d2b78b94b5ed languageName: node linkType: hard "randombytes@npm:^2.1.0": version: 2.1.0 resolution: "randombytes@npm:2.1.0" dependencies: safe-buffer: ^5.1.0 checksum: d779499376bd4cbb435ef3ab9a957006c8682f343f14089ed5f27764e4645114196e75b7f6abf1cbd84fd247c0cb0651698444df8c9bf30e62120fbbc52269d6 languageName: node linkType: hard "range-parser@npm:^1.2.1, range-parser@npm:~1.2.1": version: 1.2.1 resolution: "range-parser@npm:1.2.1" checksum: 0a268d4fea508661cf5743dfe3d5f47ce214fd6b7dec1de0da4d669dd4ef3d2144468ebe4179049eff253d9d27e719c88dae55be64f954e80135a0cada804ec9 languageName: node linkType: hard "raw-body@npm:2.5.1": version: 2.5.1 resolution: "raw-body@npm:2.5.1" dependencies: bytes: 3.1.2 http-errors: 2.0.0 iconv-lite: 0.4.24 unpipe: 1.0.0 checksum: 5362adff1575d691bb3f75998803a0ffed8c64eabeaa06e54b4ada25a0cd1b2ae7f4f5ec46565d1bec337e08b5ac90c76eaa0758de6f72a633f025d754dec29e languageName: node linkType: hard "raw-body@npm:2.5.2": version: 2.5.2 resolution: "raw-body@npm:2.5.2" dependencies: bytes: 3.1.2 http-errors: 2.0.0 iconv-lite: 0.4.24 unpipe: 1.0.0 checksum: ba1583c8d8a48e8fbb7a873fdbb2df66ea4ff83775421bfe21ee120140949ab048200668c47d9ae3880012f6e217052690628cf679ddfbd82c9fc9358d574676 languageName: node linkType: hard "rc@npm:1.2.8, rc@npm:^1.2.8": version: 1.2.8 resolution: "rc@npm:1.2.8" dependencies: deep-extend: ^0.6.0 ini: ~1.3.0 minimist: ^1.2.0 strip-json-comments: ~2.0.1 bin: rc: ./cli.js checksum: 2e26e052f8be2abd64e6d1dabfbd7be03f80ec18ccbc49562d31f617d0015fbdbcf0f9eed30346ea6ab789e0fdfe4337f033f8016efdbee0df5354751842080e languageName: node linkType: hard "react-dom@npm:^18.2.0": version: 18.2.0 resolution: "react-dom@npm:18.2.0" dependencies: loose-envify: ^1.1.0 scheduler: ^0.23.0 peerDependencies: react: ^18.2.0 checksum: 7d323310bea3a91be2965f9468d552f201b1c27891e45ddc2d6b8f717680c95a75ae0bc1e3f5cf41472446a2589a75aed4483aee8169287909fcd59ad149e8cc languageName: node linkType: hard "react-is@npm:^16.13.1": version: 16.13.1 resolution: "react-is@npm:16.13.1" checksum: f7a19ac3496de32ca9ae12aa030f00f14a3d45374f1ceca0af707c831b2a6098ef0d6bdae51bd437b0a306d7f01d4677fcc8de7c0d331eb47ad0f46130e53c5f languageName: node linkType: hard "react-is@npm:^18.2.0": version: 18.2.0 resolution: "react-is@npm:18.2.0" checksum: e72d0ba81b5922759e4aff17e0252bd29988f9642ed817f56b25a3e217e13eea8a7f2322af99a06edb779da12d5d636e9fda473d620df9a3da0df2a74141d53e languageName: node linkType: hard "react@npm:^18.2.0": version: 18.2.0 resolution: "react@npm:18.2.0" dependencies: loose-envify: ^1.1.0 checksum: 88e38092da8839b830cda6feef2e8505dec8ace60579e46aa5490fc3dc9bba0bd50336507dc166f43e3afc1c42939c09fe33b25fae889d6f402721dcd78fca1b languageName: node linkType: hard "read-cache@npm:^1.0.0": version: 1.0.0 resolution: "read-cache@npm:1.0.0" dependencies: pify: ^2.3.0 checksum: cffc728b9ede1e0667399903f9ecaf3789888b041c46ca53382fa3a06303e5132774dc0a96d0c16aa702dbac1ea0833d5a868d414f5ab2af1e1438e19e6657c6 languageName: node linkType: hard "read-cmd-shim@npm:^3.0.0": version: 3.0.1 resolution: "read-cmd-shim@npm:3.0.1" checksum: 79fe66aa78eddcca8dc196765ae3168b3a56e2b69ba54071525eb00a9eeee8cc83b3d5f784432c3d8ce868787fdc059b1a1e0b605246b5108c9003fc927ea263 languageName: node linkType: hard "read-package-json-fast@npm:^2.0.2, read-package-json-fast@npm:^2.0.3": version: 2.0.3 resolution: "read-package-json-fast@npm:2.0.3" dependencies: json-parse-even-better-errors: ^2.3.0 npm-normalize-package-bin: ^1.0.1 checksum: fca37b3b2160b9dda7c5588b767f6a2b8ce68d03a044000e568208e20bea0cf6dd2de17b90740ce8da8b42ea79c0b3859649dadf29510bbe77224ea65326a903 languageName: node linkType: hard "read-package-json@npm:^5.0.0, read-package-json@npm:^5.0.1": version: 5.0.2 resolution: "read-package-json@npm:5.0.2" dependencies: glob: ^8.0.1 json-parse-even-better-errors: ^2.3.1 normalize-package-data: ^4.0.0 npm-normalize-package-bin: ^2.0.0 checksum: 0882ac9cec1bc92fb5515e9727611fb2909351e1e5c840dce3503cbb25b4cd48eb44b61071986e0fc51043208161f07d364a7336206c8609770186818753b51a languageName: node linkType: hard "read-pkg-up@npm:^3.0.0": version: 3.0.0 resolution: "read-pkg-up@npm:3.0.0" dependencies: find-up: ^2.0.0 read-pkg: ^3.0.0 checksum: 16175573f2914ab9788897bcbe2a62b5728d0075e62285b3680cebe97059e2911e0134a062cf6e51ebe3e3775312bc788ac2039ed6af38ec68d2c10c6f2b30fb languageName: node linkType: hard "read-pkg-up@npm:^7.0.1": version: 7.0.1 resolution: "read-pkg-up@npm:7.0.1" dependencies: find-up: ^4.1.0 read-pkg: ^5.2.0 type-fest: ^0.8.1 checksum: e4e93ce70e5905b490ca8f883eb9e48b5d3cebc6cd4527c25a0d8f3ae2903bd4121c5ab9c5a3e217ada0141098eeb661313c86fa008524b089b8ed0b7f165e44 languageName: node linkType: hard "read-pkg@npm:^3.0.0": version: 3.0.0 resolution: "read-pkg@npm:3.0.0" dependencies: load-json-file: ^4.0.0 normalize-package-data: ^2.3.2 path-type: ^3.0.0 checksum: 398903ebae6c7e9965419a1062924436cc0b6f516c42c4679a90290d2f87448ed8f977e7aa2dbba4aa1ac09248628c43e493ac25b2bc76640e946035200e34c6 languageName: node linkType: hard "read-pkg@npm:^5.2.0": version: 5.2.0 resolution: "read-pkg@npm:5.2.0" dependencies: "@types/normalize-package-data": ^2.4.0 normalize-package-data: ^2.5.0 parse-json: ^5.0.0 type-fest: ^0.6.0 checksum: eb696e60528b29aebe10e499ba93f44991908c57d70f2d26f369e46b8b9afc208ef11b4ba64f67630f31df8b6872129e0a8933c8c53b7b4daf0eace536901222 languageName: node linkType: hard "read@npm:1, read@npm:^1.0.7": version: 1.0.7 resolution: "read@npm:1.0.7" dependencies: mute-stream: ~0.0.4 checksum: 2777c254e5732cac96f5d0a1c0f6b836c89ae23d8febd405b206f6f24d5de1873420f1a0795e0e3721066650d19adf802c7882c4027143ee0acf942a4f34f97b languageName: node linkType: hard "readable-stream@npm:3, readable-stream@npm:^3.0.0, readable-stream@npm:^3.0.2, readable-stream@npm:^3.1.1, readable-stream@npm:^3.4.0, readable-stream@npm:^3.6.0": version: 3.6.2 resolution: "readable-stream@npm:3.6.2" dependencies: inherits: ^2.0.3 string_decoder: ^1.1.1 util-deprecate: ^1.0.1 checksum: bdcbe6c22e846b6af075e32cf8f4751c2576238c5043169a1c221c92ee2878458a816a4ea33f4c67623c0b6827c8a400409bfb3cf0bf3381392d0b1dfb52ac8d languageName: node linkType: hard "readable-stream@npm:^4.0.0": version: 4.4.0 resolution: "readable-stream@npm:4.4.0" dependencies: abort-controller: ^3.0.0 buffer: ^6.0.3 events: ^3.3.0 process: ^0.11.10 checksum: cc1630c2de134aee92646e77b1770019633000c408fd48609babf2caa53f00ca794928023aa9ad3d435a1044cec87d2ce7e2b7389dd1caf948b65c175edb7f52 languageName: node linkType: hard "readable-stream@npm:~2.3.6": version: 2.3.8 resolution: "readable-stream@npm:2.3.8" dependencies: core-util-is: ~1.0.0 inherits: ~2.0.3 isarray: ~1.0.0 process-nextick-args: ~2.0.0 safe-buffer: ~5.1.1 string_decoder: ~1.1.1 util-deprecate: ~1.0.1 checksum: 65645467038704f0c8aaf026a72fbb588a9e2ef7a75cd57a01702ee9db1c4a1e4b03aaad36861a6a0926546a74d174149c8c207527963e0c2d3eee2f37678a42 languageName: node linkType: hard "readdir-scoped-modules@npm:^1.1.0": version: 1.1.0 resolution: "readdir-scoped-modules@npm:1.1.0" dependencies: debuglog: ^1.0.1 dezalgo: ^1.0.0 graceful-fs: ^4.1.2 once: ^1.3.0 checksum: 6d9f334e40dfd0f5e4a8aab5e67eb460c95c85083c690431f87ab2c9135191170e70c2db6d71afcafb78e073d23eb95dcb3fc33ef91308f6ebfe3197be35e608 languageName: node linkType: hard "readdirp@npm:~3.6.0": version: 3.6.0 resolution: "readdirp@npm:3.6.0" dependencies: picomatch: ^2.2.1 checksum: 1ced032e6e45670b6d7352d71d21ce7edf7b9b928494dcaba6f11fba63180d9da6cd7061ebc34175ffda6ff529f481818c962952004d273178acd70f7059b320 languageName: node linkType: hard "real-require@npm:^0.1.0": version: 0.1.0 resolution: "real-require@npm:0.1.0" checksum: 96745583ed4f82cd5c6a6af012fd1d3c6fc2f13ae1bcff1a3c4f8094696013a1a07c82c5aa66a403d7d4f84949fc2203bc927c7ad120caad125941ca2d7e5e8e languageName: node linkType: hard "rechoir@npm:^0.7.0": version: 0.7.1 resolution: "rechoir@npm:0.7.1" dependencies: resolve: ^1.9.0 checksum: 2a04aab4e28c05fcd6ee6768446bc8b859d8f108e71fc7f5bcbc5ef25e53330ce2c11d10f82a24591a2df4c49c4f61feabe1fd11f844c66feedd4cd7bb61146a languageName: node linkType: hard "rechoir@npm:^0.8.0": version: 0.8.0 resolution: "rechoir@npm:0.8.0" dependencies: resolve: ^1.20.0 checksum: ad3caed8afdefbc33fbc30e6d22b86c35b3d51c2005546f4e79bcc03c074df804b3640ad18945e6bef9ed12caedc035655ec1082f64a5e94c849ff939dc0a788 languageName: node linkType: hard "redent@npm:^3.0.0": version: 3.0.0 resolution: "redent@npm:3.0.0" dependencies: indent-string: ^4.0.0 strip-indent: ^3.0.0 checksum: fa1ef20404a2d399235e83cc80bd55a956642e37dd197b4b612ba7327bf87fa32745aeb4a1634b2bab25467164ab4ed9c15be2c307923dd08b0fe7c52431ae6b languageName: node linkType: hard "reduce-css-calc@npm:^1.2.7": version: 1.3.0 resolution: "reduce-css-calc@npm:1.3.0" dependencies: balanced-match: ^0.4.2 math-expression-evaluator: ^1.2.14 reduce-function-call: ^1.0.1 checksum: 72696db02ede8772fe5ba9c47c6d451557bea0d11525f4e54b6adfcc4e540558755bb0ad454824cb6b998f0bd940eb2ef594f35b3d509dfa37934d93ece0f707 languageName: node linkType: hard "reduce-css-calc@npm:^2.0.0": version: 2.1.8 resolution: "reduce-css-calc@npm:2.1.8" dependencies: css-unit-converter: ^1.1.1 postcss-value-parser: ^3.3.0 checksum: 8fd27c06c4b443b84749a69a8b97d10e6ec7d142b625b41923a8807abb22b9e37e44df14e26cc606a802957be07bdce5e8ee2976a6952a7b438a7727007101e9 languageName: node linkType: hard "reduce-function-call@npm:^1.0.1, reduce-function-call@npm:^1.0.2": version: 1.0.3 resolution: "reduce-function-call@npm:1.0.3" dependencies: balanced-match: ^1.0.0 checksum: d0169016ea22b59d55fa3206507c8f2d009574abd0f9b86552035a8405d52f6d7d5b60d084c5950d6f2884df7de42f87a6260b1b386b79ede63bfc87ea0c3ce8 languageName: node linkType: hard "regenerator-runtime@npm:^0.11.0": version: 0.11.1 resolution: "regenerator-runtime@npm:0.11.1" checksum: 3c97bd2c7b2b3247e6f8e2147a002eb78c995323732dad5dc70fac8d8d0b758d0295e7015b90d3d444446ae77cbd24b9f9123ec3a77018e81d8999818301b4f4 languageName: node linkType: hard "regenerator-runtime@npm:^0.13.11": version: 0.13.11 resolution: "regenerator-runtime@npm:0.13.11" checksum: 27481628d22a1c4e3ff551096a683b424242a216fee44685467307f14d58020af1e19660bf2e26064de946bad7eff28950eae9f8209d55723e2d9351e632bbb4 languageName: node linkType: hard "regexp.prototype.flags@npm:^1.4.3": version: 1.5.0 resolution: "regexp.prototype.flags@npm:1.5.0" dependencies: call-bind: ^1.0.2 define-properties: ^1.2.0 functions-have-names: ^1.2.3 checksum: c541687cdbdfff1b9a07f6e44879f82c66bbf07665f9a7544c5fd16acdb3ec8d1436caab01662d2fbcad403f3499d49ab0b77fbc7ef29ef961d98cc4bc9755b4 languageName: node linkType: hard "registry-auth-token@npm:^4.0.0": version: 4.2.2 resolution: "registry-auth-token@npm:4.2.2" dependencies: rc: 1.2.8 checksum: c5030198546ecfdcbcb0722cbc3e260c4f5f174d8d07bdfedd4620e79bfdf17a2db735aa230d600bd388fce6edd26c0a9ed2eb7e9b4641ec15213a28a806688b languageName: node linkType: hard "registry-url@npm:^5.0.0": version: 5.1.0 resolution: "registry-url@npm:5.1.0" dependencies: rc: ^1.2.8 checksum: bcea86c84a0dbb66467b53187fadebfea79017cddfb4a45cf27530d7275e49082fe9f44301976eb0164c438e395684bcf3dae4819b36ff9d1640d8cc60c73df9 languageName: node linkType: hard "repeating@npm:^2.0.0": version: 2.0.1 resolution: "repeating@npm:2.0.1" dependencies: is-finite: ^1.0.0 checksum: d2db0b69c5cb0c14dd750036e0abcd6b3c3f7b2da3ee179786b755cf737ca15fa0fff417ca72de33d6966056f4695440e680a352401fc02c95ade59899afbdd0 languageName: node linkType: hard "request@npm:2.88.2": version: 2.88.2 resolution: "request@npm:2.88.2" dependencies: aws-sign2: ~0.7.0 aws4: ^1.8.0 caseless: ~0.12.0 combined-stream: ~1.0.6 extend: ~3.0.2 forever-agent: ~0.6.1 form-data: ~2.3.2 har-validator: ~5.1.3 http-signature: ~1.2.0 is-typedarray: ~1.0.0 isstream: ~0.1.2 json-stringify-safe: ~5.0.1 mime-types: ~2.1.19 oauth-sign: ~0.9.0 performance-now: ^2.1.0 qs: ~6.5.2 safe-buffer: ^5.1.2 tough-cookie: ~2.5.0 tunnel-agent: ^0.6.0 uuid: ^3.3.2 checksum: 4e112c087f6eabe7327869da2417e9d28fcd0910419edd2eb17b6acfc4bfa1dad61954525949c228705805882d8a98a86a0ea12d7f739c01ee92af7062996983 languageName: node linkType: hard "require-directory@npm:^2.1.1": version: 2.1.1 resolution: "require-directory@npm:2.1.1" checksum: fb47e70bf0001fdeabdc0429d431863e9475e7e43ea5f94ad86503d918423c1543361cc5166d713eaa7029dd7a3d34775af04764bebff99ef413111a5af18c80 languageName: node linkType: hard "require-from-string@npm:^2.0.2": version: 2.0.2 resolution: "require-from-string@npm:2.0.2" checksum: a03ef6895445f33a4015300c426699bc66b2b044ba7b670aa238610381b56d3f07c686251740d575e22f4c87531ba662d06937508f0f3c0f1ddc04db3130560b languageName: node linkType: hard "requirejs@npm:^2.3.6": version: 2.3.6 resolution: "requirejs@npm:2.3.6" bin: r.js: ./bin/r.js r_js: ./bin/r.js checksum: 7c3c006bf5e1887d93ac7adb7f600328918d23cf3d28282a505a2873d4ddde499c7ec560e55cee3440d17fe1205cb4dcb72b07f35b39e8940372eca850e49b62 languageName: node linkType: hard "requires-port@npm:^1.0.0": version: 1.0.0 resolution: "requires-port@npm:1.0.0" checksum: eee0e303adffb69be55d1a214e415cf42b7441ae858c76dfc5353148644f6fd6e698926fc4643f510d5c126d12a705e7c8ed7e38061113bdf37547ab356797ff languageName: node linkType: hard "resolve-alpn@npm:^1.0.0": version: 1.2.1 resolution: "resolve-alpn@npm:1.2.1" checksum: f558071fcb2c60b04054c99aebd572a2af97ef64128d59bef7ab73bd50d896a222a056de40ffc545b633d99b304c259ea9d0c06830d5c867c34f0bfa60b8eae0 languageName: node linkType: hard "resolve-cwd@npm:^3.0.0": version: 3.0.0 resolution: "resolve-cwd@npm:3.0.0" dependencies: resolve-from: ^5.0.0 checksum: 546e0816012d65778e580ad62b29e975a642989108d9a3c5beabfb2304192fa3c9f9146fbdfe213563c6ff51975ae41bac1d3c6e047dd9572c94863a057b4d81 languageName: node linkType: hard "resolve-from@npm:^4.0.0": version: 4.0.0 resolution: "resolve-from@npm:4.0.0" checksum: f4ba0b8494846a5066328ad33ef8ac173801a51739eb4d63408c847da9a2e1c1de1e6cbbf72699211f3d13f8fc1325648b169bd15eb7da35688e30a5fb0e4a7f languageName: node linkType: hard "resolve-from@npm:^5.0.0": version: 5.0.0 resolution: "resolve-from@npm:5.0.0" checksum: 4ceeb9113e1b1372d0cd969f3468fa042daa1dd9527b1b6bb88acb6ab55d8b9cd65dbf18819f9f9ddf0db804990901dcdaade80a215e7b2c23daae38e64f5bdf languageName: node linkType: hard "resolve@npm:^1.1.7, resolve@npm:^1.10.0, resolve@npm:^1.20.0, resolve@npm:^1.9.0": version: 1.22.3 resolution: "resolve@npm:1.22.3" dependencies: is-core-module: ^2.12.0 path-parse: ^1.0.7 supports-preserve-symlinks-flag: ^1.0.0 bin: resolve: bin/resolve checksum: fb834b81348428cb545ff1b828a72ea28feb5a97c026a1cf40aa1008352c72811ff4d4e71f2035273dc536dcfcae20c13604ba6283c612d70fa0b6e44519c374 languageName: node linkType: hard "resolve@patch:resolve@^1.1.7#~builtin, resolve@patch:resolve@^1.10.0#~builtin, resolve@patch:resolve@^1.20.0#~builtin, resolve@patch:resolve@^1.9.0#~builtin": version: 1.22.3 resolution: "resolve@patch:resolve@npm%3A1.22.3#~builtin::version=1.22.3&hash=c3c19d" dependencies: is-core-module: ^2.12.0 path-parse: ^1.0.7 supports-preserve-symlinks-flag: ^1.0.0 bin: resolve: bin/resolve checksum: ad59734723b596d0891321c951592ed9015a77ce84907f89c9d9307dd0c06e11a67906a3e628c4cae143d3e44898603478af0ddeb2bba3f229a9373efe342665 languageName: node linkType: hard "responselike@npm:^2.0.0": version: 2.0.1 resolution: "responselike@npm:2.0.1" dependencies: lowercase-keys: ^2.0.0 checksum: b122535466e9c97b55e69c7f18e2be0ce3823c5d47ee8de0d9c0b114aa55741c6db8bfbfce3766a94d1272e61bfb1ebf0a15e9310ac5629fbb7446a861b4fd3a languageName: node linkType: hard "restore-cursor@npm:^3.1.0": version: 3.1.0 resolution: "restore-cursor@npm:3.1.0" dependencies: onetime: ^5.1.0 signal-exit: ^3.0.2 checksum: f877dd8741796b909f2a82454ec111afb84eb45890eb49ac947d87991379406b3b83ff9673a46012fca0d7844bb989f45cc5b788254cf1a39b6b5a9659de0630 languageName: node linkType: hard "retry@npm:^0.12.0": version: 0.12.0 resolution: "retry@npm:0.12.0" checksum: 623bd7d2e5119467ba66202d733ec3c2e2e26568074923bc0585b6b99db14f357e79bdedb63cab56cec47491c4a0da7e6021a7465ca6dc4f481d3898fdd3158c languageName: node linkType: hard "reusify@npm:^1.0.4": version: 1.0.4 resolution: "reusify@npm:1.0.4" checksum: c3076ebcc22a6bc252cb0b9c77561795256c22b757f40c0d8110b1300723f15ec0fc8685e8d4ea6d7666f36c79ccc793b1939c748bf36f18f542744a4e379fcc languageName: node linkType: hard "rfdc@npm:^1.3.0": version: 1.3.0 resolution: "rfdc@npm:1.3.0" checksum: fb2ba8512e43519983b4c61bd3fa77c0f410eff6bae68b08614437bc3f35f91362215f7b4a73cbda6f67330b5746ce07db5dd9850ad3edc91271ad6deea0df32 languageName: node linkType: hard "rgb-hex@npm:^2.1.0": version: 2.1.0 resolution: "rgb-hex@npm:2.1.0" checksum: da3fccf3661d91e9feaa1c48cf130b728a598b1a5cb5b1f59a1c597f1a60e547c1dfa6790476d320281278e47f6ee218f0a3f512fb9d7e3698b132fa6a45c6ba languageName: node linkType: hard "rgb@npm:~0.1.0": version: 0.1.0 resolution: "rgb@npm:0.1.0" bin: rgb: ./bin/rgb checksum: d33da6b61be7f200043dec325d2cf359cbd5d8d85ca4c3b3db47b884fbcfbba69dc2f698e97593448a51151b322d8aad3d15254eaed2fac4f6c9c095c3936289 languageName: node linkType: hard "rimraf@npm:^3.0.0, rimraf@npm:^3.0.2": version: 3.0.2 resolution: "rimraf@npm:3.0.2" dependencies: glob: ^7.1.3 bin: rimraf: bin.js checksum: 87f4164e396f0171b0a3386cc1877a817f572148ee13a7e113b238e48e8a9f2f31d009a92ec38a591ff1567d9662c6b67fd8818a2dbbaed74bc26a87a2a4a9a0 languageName: node linkType: hard "rimraf@npm:^5.0.1": version: 5.0.1 resolution: "rimraf@npm:5.0.1" dependencies: glob: ^10.2.5 bin: rimraf: dist/cjs/src/bin.js checksum: bafce85391349a2d960847980bf9b5caa2a8887f481af630f1ea27e08288217293cec72d75e9a2ba35495c212789f66a7f3d23366ba6197026ab71c535126857 languageName: node linkType: hard "rimraf@npm:~2.4.0": version: 2.4.5 resolution: "rimraf@npm:2.4.5" dependencies: glob: ^6.0.1 bin: rimraf: ./bin.js checksum: 036793b4055d65344ad7bea73c3f4095640af7455478fe56c19783619463e6bb4374ab3556b9e6d4d6d3dd210eb677b0955ece38813e734c294fd2687201151d languageName: node linkType: hard "root-workspace-0b6124@workspace:.": version: 0.0.0-use.local resolution: "root-workspace-0b6124@workspace:." dependencies: "@jupyterlab/buildutils": ^3.5.2 || ^4.0.0 "@typescript-eslint/eslint-plugin": ^5.48.2 "@typescript-eslint/parser": ^5.48.2 eslint: ^8.32.0 eslint-config-prettier: ^8.6.0 eslint-plugin-prettier: ^4.2.1 glob: ^10.2.4 husky: ^7.0.4 lerna: ^5.4.3 lint-staged: ^12.1.3 prettier: ^2.8.3 rimraf: ^5.0.1 sort-package-json: ^2.1.0 typedoc: ~0.23.24 typescript: ~4.9.4 languageName: unknown linkType: soft "run-async@npm:^2.4.0": version: 2.4.1 resolution: "run-async@npm:2.4.1" checksum: a2c88aa15df176f091a2878eb840e68d0bdee319d8d97bbb89112223259cebecb94bc0defd735662b83c2f7a30bed8cddb7d1674eb48ae7322dc602b22d03797 languageName: node linkType: hard "run-async@npm:^3.0.0": version: 3.0.0 resolution: "run-async@npm:3.0.0" checksum: 280c03d5a88603f48103fc6fd69f07fb0c392a1e0d319c34ec96a2516030e07ba06f79231a563c78698b882649c2fc1fda601bc84705f57d50efcd1fa506cfc0 languageName: node linkType: hard "run-parallel@npm:^1.1.9": version: 1.2.0 resolution: "run-parallel@npm:1.2.0" dependencies: queue-microtask: ^1.2.2 checksum: cb4f97ad25a75ebc11a8ef4e33bb962f8af8516bb2001082ceabd8902e15b98f4b84b4f8a9b222e5d57fc3bd1379c483886ed4619367a7680dad65316993021d languageName: node linkType: hard "rxjs@npm:^7.5.5, rxjs@npm:^7.8.1": version: 7.8.1 resolution: "rxjs@npm:7.8.1" dependencies: tslib: ^2.1.0 checksum: de4b53db1063e618ec2eca0f7965d9137cabe98cf6be9272efe6c86b47c17b987383df8574861bcced18ebd590764125a901d5506082be84a8b8e364bf05f119 languageName: node linkType: hard "safe-buffer@npm:5.1.2, safe-buffer@npm:~5.1.0, safe-buffer@npm:~5.1.1": version: 5.1.2 resolution: "safe-buffer@npm:5.1.2" checksum: f2f1f7943ca44a594893a852894055cf619c1fbcb611237fc39e461ae751187e7baf4dc391a72125e0ac4fb2d8c5c0b3c71529622e6a58f46b960211e704903c languageName: node linkType: hard "safe-buffer@npm:5.2.1, safe-buffer@npm:^5.0.1, safe-buffer@npm:^5.1.0, safe-buffer@npm:^5.1.2, safe-buffer@npm:~5.2.0": version: 5.2.1 resolution: "safe-buffer@npm:5.2.1" checksum: b99c4b41fdd67a6aaf280fcd05e9ffb0813654894223afb78a31f14a19ad220bba8aba1cb14eddce1fcfb037155fe6de4e861784eb434f7d11ed58d1e70dd491 languageName: node linkType: hard "safe-regex-test@npm:^1.0.0": version: 1.0.0 resolution: "safe-regex-test@npm:1.0.0" dependencies: call-bind: ^1.0.2 get-intrinsic: ^1.1.3 is-regex: ^1.1.4 checksum: bc566d8beb8b43c01b94e67de3f070fd2781685e835959bbbaaec91cc53381145ca91f69bd837ce6ec244817afa0a5e974fc4e40a2957f0aca68ac3add1ddd34 languageName: node linkType: hard "safe-stable-stringify@npm:^2.1.0": version: 2.4.3 resolution: "safe-stable-stringify@npm:2.4.3" checksum: 3aeb64449706ee1f5ad2459fc99648b131d48e7a1fbb608d7c628020177512dc9d94108a5cb61bbc953985d313d0afea6566d243237743e02870490afef04b43 languageName: node linkType: hard "safer-buffer@npm:>= 2.1.2 < 3, safer-buffer@npm:>= 2.1.2 < 3.0.0, safer-buffer@npm:^2.0.2, safer-buffer@npm:^2.1.0, safer-buffer@npm:~2.1.0": version: 2.1.2 resolution: "safer-buffer@npm:2.1.2" checksum: cab8f25ae6f1434abee8d80023d7e72b598cf1327164ddab31003c51215526801e40b66c5e65d658a0af1e9d6478cadcb4c745f4bd6751f97d8644786c0978b0 languageName: node linkType: hard "sanitize-html@npm:^2.3": version: 2.10.0 resolution: "sanitize-html@npm:2.10.0" dependencies: deepmerge: ^4.2.2 escape-string-regexp: ^4.0.0 htmlparser2: ^8.0.0 is-plain-object: ^5.0.0 parse-srcset: ^1.0.2 postcss: ^8.3.11 checksum: 0cb2bb330ed966a4d667b1890322dd868a67f527f87c04d7e3be1688fcfda20f7452a9a7744870751f51e255742e7264a287d9bcfcd64d4cd74a3c99f99c73d2 languageName: node linkType: hard "sanitize-html@npm:~2.7.3": version: 2.7.3 resolution: "sanitize-html@npm:2.7.3" dependencies: deepmerge: ^4.2.2 escape-string-regexp: ^4.0.0 htmlparser2: ^6.0.0 is-plain-object: ^5.0.0 parse-srcset: ^1.0.2 postcss: ^8.3.11 checksum: 2399d1fdbbc3a263fb413c1fe1971b3dc2b51abc6cc5cb49490624539d1c57a8fe31e2b21408c118e2a957f4e673e3169b1f9a5807654408f17b130a9d78aed7 languageName: node linkType: hard "sax@npm:^1.2.4": version: 1.2.4 resolution: "sax@npm:1.2.4" checksum: d3df7d32b897a2c2f28e941f732c71ba90e27c24f62ee918bd4d9a8cfb3553f2f81e5493c7f0be94a11c1911b643a9108f231dd6f60df3fa9586b5d2e3e9e1fe languageName: node linkType: hard "scheduler@npm:^0.23.0": version: 0.23.0 resolution: "scheduler@npm:0.23.0" dependencies: loose-envify: ^1.1.0 checksum: d79192eeaa12abef860c195ea45d37cbf2bbf5f66e3c4dcd16f54a7da53b17788a70d109ee3d3dde1a0fd50e6a8fc171f4300356c5aee4fc0171de526bf35f8a languageName: node linkType: hard "schema-utils@npm:^0.3.0": version: 0.3.0 resolution: "schema-utils@npm:0.3.0" dependencies: ajv: ^5.0.0 checksum: 441fa4bd4900afb19eb9da1d8d6271056b71ce3d8b1b73bbece791de1d4c90ac7e97ffc9787607aa53611aaf2996711af7c18ba8669f06b084b218cab1e701e3 languageName: node linkType: hard "schema-utils@npm:^2.7.0": version: 2.7.1 resolution: "schema-utils@npm:2.7.1" dependencies: "@types/json-schema": ^7.0.5 ajv: ^6.12.4 ajv-keywords: ^3.5.2 checksum: 32c62fc9e28edd101e1bd83453a4216eb9bd875cc4d3775e4452b541908fa8f61a7bbac8ffde57484f01d7096279d3ba0337078e85a918ecbeb72872fb09fb2b languageName: node linkType: hard "schema-utils@npm:^3.0.0, schema-utils@npm:^3.1.1, schema-utils@npm:^3.1.2": version: 3.1.2 resolution: "schema-utils@npm:3.1.2" dependencies: "@types/json-schema": ^7.0.8 ajv: ^6.12.5 ajv-keywords: ^3.5.2 checksum: 39683edfe3beff018cdb1ae4fa296fc55cea13a080aa2b4d9351895cd64b22ba4d87e2e548c2a2ac1bc76e60980670adb0f413a58104479f1a0c12e5663cb8ca languageName: node linkType: hard "schema-utils@npm:^3.2.0": version: 3.3.0 resolution: "schema-utils@npm:3.3.0" dependencies: "@types/json-schema": ^7.0.8 ajv: ^6.12.5 ajv-keywords: ^3.5.2 checksum: ea56971926fac2487f0757da939a871388891bc87c6a82220d125d587b388f1704788f3706e7f63a7b70e49fc2db974c41343528caea60444afd5ce0fe4b85c0 languageName: node linkType: hard "schema-utils@npm:^4.0.0": version: 4.0.1 resolution: "schema-utils@npm:4.0.1" dependencies: "@types/json-schema": ^7.0.9 ajv: ^8.9.0 ajv-formats: ^2.1.1 ajv-keywords: ^5.1.0 checksum: 745e7293c6b6c84940de16753c207311da821aa9911b9e2d158cfd9ffc5bf1f880147abbbe775b96cb8cd3c7f48890950fe0164f54eed9a8aabb948ebf8a3fdd languageName: node linkType: hard "secure-compare@npm:3.0.1": version: 3.0.1 resolution: "secure-compare@npm:3.0.1" checksum: 0a8d8d3e54d5772d2cf1c02325f01fc7366d0bd33f964a08a84fe3ee5f34d46435a6ae729c1d239c750e160ef9b58c764d3efb945a1d07faf47978a8e4161594 languageName: node linkType: hard "semver@npm:2 || 3 || 4 || 5, semver@npm:^5.3.0, semver@npm:^5.4.1, semver@npm:^5.5.0, semver@npm:^5.6.0": version: 5.7.1 resolution: "semver@npm:5.7.1" bin: semver: ./bin/semver checksum: 57fd0acfd0bac382ee87cd52cd0aaa5af086a7dc8d60379dfe65fea491fb2489b6016400813930ecd61fd0952dae75c115287a1b16c234b1550887117744dfaf languageName: node linkType: hard "semver@npm:7.3.4": version: 7.3.4 resolution: "semver@npm:7.3.4" dependencies: lru-cache: ^6.0.0 bin: semver: bin/semver.js checksum: 96451bfd7cba9b60ee87571959dc47e87c95b2fe58a9312a926340fee9907fc7bc062c352efdaf5bb24b2dff59c145e14faf7eb9d718a84b4751312531b39f43 languageName: node linkType: hard "semver@npm:7.3.8": version: 7.3.8 resolution: "semver@npm:7.3.8" dependencies: lru-cache: ^6.0.0 bin: semver: bin/semver.js checksum: ba9c7cbbf2b7884696523450a61fee1a09930d888b7a8d7579025ad93d459b2d1949ee5bbfeb188b2be5f4ac163544c5e98491ad6152df34154feebc2cc337c1 languageName: node linkType: hard "semver@npm:7.5.0": version: 7.5.0 resolution: "semver@npm:7.5.0" dependencies: lru-cache: ^6.0.0 bin: semver: bin/semver.js checksum: 2d266937756689a76f124ffb4c1ea3e1bbb2b263219f90ada8a11aebebe1280b13bb76cca2ca96bdee3dbc554cbc0b24752eb895b2a51577aa644427e9229f2b languageName: node linkType: hard "semver@npm:^6.0.0, semver@npm:^6.3.0": version: 6.3.0 resolution: "semver@npm:6.3.0" bin: semver: ./bin/semver.js checksum: 1b26ecf6db9e8292dd90df4e781d91875c0dcc1b1909e70f5d12959a23c7eebb8f01ea581c00783bbee72ceeaad9505797c381756326073850dc36ed284b21b9 languageName: node linkType: hard "semver@npm:^7.0.0, semver@npm:^7.1.1, semver@npm:^7.3.2, semver@npm:^7.3.4, semver@npm:^7.3.5, semver@npm:^7.3.7, semver@npm:^7.3.8": version: 7.5.1 resolution: "semver@npm:7.5.1" dependencies: lru-cache: ^6.0.0 bin: semver: bin/semver.js checksum: d16dbedad53c65b086f79524b9ef766bf38670b2395bdad5c957f824dcc566b624988013564f4812bcace3f9d405355c3635e2007396a39d1bffc71cfec4a2fc languageName: node linkType: hard "send@npm:0.18.0": version: 0.18.0 resolution: "send@npm:0.18.0" dependencies: debug: 2.6.9 depd: 2.0.0 destroy: 1.2.0 encodeurl: ~1.0.2 escape-html: ~1.0.3 etag: ~1.8.1 fresh: 0.5.2 http-errors: 2.0.0 mime: 1.6.0 ms: 2.1.3 on-finished: 2.4.1 range-parser: ~1.2.1 statuses: 2.0.1 checksum: 74fc07ebb58566b87b078ec63e5a3e41ecd987e4272ba67b7467e86c6ad51bc6b0b0154133b6d8b08a2ddda360464f71382f7ef864700f34844a76c8027817a8 languageName: node linkType: hard "serialize-javascript@npm:6.0.0": version: 6.0.0 resolution: "serialize-javascript@npm:6.0.0" dependencies: randombytes: ^2.1.0 checksum: 56f90b562a1bdc92e55afb3e657c6397c01a902c588c0fe3d4c490efdcc97dcd2a3074ba12df9e94630f33a5ce5b76a74784a7041294628a6f4306e0ec84bf93 languageName: node linkType: hard "serialize-javascript@npm:^6.0.1": version: 6.0.1 resolution: "serialize-javascript@npm:6.0.1" dependencies: randombytes: ^2.1.0 checksum: 3c4f4cb61d0893b988415bdb67243637333f3f574e9e9cc9a006a2ced0b390b0b3b44aef8d51c951272a9002ec50885eefdc0298891bc27eb2fe7510ea87dc4f languageName: node linkType: hard "serve-static@npm:1.15.0": version: 1.15.0 resolution: "serve-static@npm:1.15.0" dependencies: encodeurl: ~1.0.2 escape-html: ~1.0.3 parseurl: ~1.3.3 send: 0.18.0 checksum: af57fc13be40d90a12562e98c0b7855cf6e8bd4c107fe9a45c212bf023058d54a1871b1c89511c3958f70626fff47faeb795f5d83f8cf88514dbaeb2b724464d languageName: node linkType: hard "set-blocking@npm:^2.0.0": version: 2.0.0 resolution: "set-blocking@npm:2.0.0" checksum: 6e65a05f7cf7ebdf8b7c75b101e18c0b7e3dff4940d480efed8aad3a36a4005140b660fa1d804cb8bce911cac290441dc728084a30504d3516ac2ff7ad607b02 languageName: node linkType: hard "setprototypeof@npm:1.2.0": version: 1.2.0 resolution: "setprototypeof@npm:1.2.0" checksum: be18cbbf70e7d8097c97f713a2e76edf84e87299b40d085c6bf8b65314e994cc15e2e317727342fa6996e38e1f52c59720b53fe621e2eb593a6847bf0356db89 languageName: node linkType: hard "shallow-clone@npm:^3.0.0": version: 3.0.1 resolution: "shallow-clone@npm:3.0.1" dependencies: kind-of: ^6.0.2 checksum: 39b3dd9630a774aba288a680e7d2901f5c0eae7b8387fc5c8ea559918b29b3da144b7bdb990d7ccd9e11be05508ac9e459ce51d01fd65e583282f6ffafcba2e7 languageName: node linkType: hard "shebang-command@npm:^1.2.0": version: 1.2.0 resolution: "shebang-command@npm:1.2.0" dependencies: shebang-regex: ^1.0.0 checksum: 9eed1750301e622961ba5d588af2212505e96770ec376a37ab678f965795e995ade7ed44910f5d3d3cb5e10165a1847f52d3348c64e146b8be922f7707958908 languageName: node linkType: hard "shebang-command@npm:^2.0.0": version: 2.0.0 resolution: "shebang-command@npm:2.0.0" dependencies: shebang-regex: ^3.0.0 checksum: 6b52fe87271c12968f6a054e60f6bde5f0f3d2db483a1e5c3e12d657c488a15474121a1d55cd958f6df026a54374ec38a4a963988c213b7570e1d51575cea7fa languageName: node linkType: hard "shebang-regex@npm:^1.0.0": version: 1.0.0 resolution: "shebang-regex@npm:1.0.0" checksum: 404c5a752cd40f94591dfd9346da40a735a05139dac890ffc229afba610854d8799aaa52f87f7e0c94c5007f2c6af55bdcaeb584b56691926c5eaf41dc8f1372 languageName: node linkType: hard "shebang-regex@npm:^3.0.0": version: 3.0.0 resolution: "shebang-regex@npm:3.0.0" checksum: 1a2bcae50de99034fcd92ad4212d8e01eedf52c7ec7830eedcf886622804fe36884278f2be8be0ea5fde3fd1c23911643a4e0f726c8685b61871c8908af01222 languageName: node linkType: hard "shell-quote@npm:^1.6.1": version: 1.8.1 resolution: "shell-quote@npm:1.8.1" checksum: 5f01201f4ef504d4c6a9d0d283fa17075f6770bfbe4c5850b074974c68062f37929ca61700d95ad2ac8822e14e8c4b990ca0e6e9272e64befd74ce5e19f0736b languageName: node linkType: hard "shiki@npm:^0.14.1": version: 0.14.2 resolution: "shiki@npm:0.14.2" dependencies: ansi-sequence-parser: ^1.1.0 jsonc-parser: ^3.2.0 vscode-oniguruma: ^1.7.0 vscode-textmate: ^8.0.0 checksum: f2a14302b1803617e3ff1b751a5c87b4af4ad15214dc00e9215402e42940a84a0b956cf55d628f25dbf1296b18e277b8529571cd9359b971ac599a0ab11303e7 languageName: node linkType: hard "side-channel@npm:^1.0.4": version: 1.0.4 resolution: "side-channel@npm:1.0.4" dependencies: call-bind: ^1.0.0 get-intrinsic: ^1.0.2 object-inspect: ^1.9.0 checksum: 351e41b947079c10bd0858364f32bb3a7379514c399edb64ab3dce683933483fc63fb5e4efe0a15a2e8a7e3c436b6a91736ddb8d8c6591b0460a24bb4a1ee245 languageName: node linkType: hard "signal-exit@npm:^3.0.2, signal-exit@npm:^3.0.3, signal-exit@npm:^3.0.7": version: 3.0.7 resolution: "signal-exit@npm:3.0.7" checksum: a2f098f247adc367dffc27845853e9959b9e88b01cb301658cfe4194352d8d2bb32e18467c786a7fe15f1d44b233ea35633d076d5e737870b7139949d1ab6318 languageName: node linkType: hard "signal-exit@npm:^4.0.1": version: 4.0.2 resolution: "signal-exit@npm:4.0.2" checksum: 41f5928431cc6e91087bf0343db786a6313dd7c6fd7e551dbc141c95bb5fb26663444fd9df8ea47c5d7fc202f60aa7468c3162a9365cbb0615fc5e1b1328fe31 languageName: node linkType: hard "simple-swizzle@npm:^0.2.2": version: 0.2.2 resolution: "simple-swizzle@npm:0.2.2" dependencies: is-arrayish: ^0.3.1 checksum: a7f3f2ab5c76c4472d5c578df892e857323e452d9f392e1b5cf74b74db66e6294a1e1b8b390b519fa1b96b5b613f2a37db6cffef52c3f1f8f3c5ea64eb2d54c0 languageName: node linkType: hard "sinon-chai@npm:^3.3.0": version: 3.7.0 resolution: "sinon-chai@npm:3.7.0" peerDependencies: chai: ^4.0.0 sinon: ">=4.0.0" checksum: 49a353d8eb66cc6db35ac452f6965c72778aa090d1f036dd1e54ba88594b1c3f314b1a403eaff22a4e314f94dc92d9c7d03cbb88c21d89e814293bf5b299964d languageName: node linkType: hard "sinon@npm:^12.0.1": version: 12.0.1 resolution: "sinon@npm:12.0.1" dependencies: "@sinonjs/commons": ^1.8.3 "@sinonjs/fake-timers": ^8.1.0 "@sinonjs/samsam": ^6.0.2 diff: ^5.0.0 nise: ^5.1.0 supports-color: ^7.2.0 checksum: a264310c28df43e923a6e223c719953b7bd829b8e2fee7fe8b40154647e350b6bb4c18009be6f193e50892687f8e8c5d987d666fc3f6e4e78a9f807211ea365f languageName: node linkType: hard "slash@npm:^3.0.0": version: 3.0.0 resolution: "slash@npm:3.0.0" checksum: 94a93fff615f25a999ad4b83c9d5e257a7280c90a32a7cb8b4a87996e4babf322e469c42b7f649fd5796edd8687652f3fb452a86dc97a816f01113183393f11c languageName: node linkType: hard "slash@npm:^4.0.0": version: 4.0.0 resolution: "slash@npm:4.0.0" checksum: da8e4af73712253acd21b7853b7e0dbba776b786e82b010a5bfc8b5051a1db38ed8aba8e1e8f400dd2c9f373be91eb1c42b66e91abb407ff42b10feece5e1d2d languageName: node linkType: hard "slice-ansi@npm:^3.0.0": version: 3.0.0 resolution: "slice-ansi@npm:3.0.0" dependencies: ansi-styles: ^4.0.0 astral-regex: ^2.0.0 is-fullwidth-code-point: ^3.0.0 checksum: 5ec6d022d12e016347e9e3e98a7eb2a592213a43a65f1b61b74d2c78288da0aded781f665807a9f3876b9daa9ad94f64f77d7633a0458876c3a4fdc4eb223f24 languageName: node linkType: hard "slice-ansi@npm:^4.0.0": version: 4.0.0 resolution: "slice-ansi@npm:4.0.0" dependencies: ansi-styles: ^4.0.0 astral-regex: ^2.0.0 is-fullwidth-code-point: ^3.0.0 checksum: 4a82d7f085b0e1b070e004941ada3c40d3818563ac44766cca4ceadd2080427d337554f9f99a13aaeb3b4a94d9964d9466c807b3d7b7541d1ec37ee32d308756 languageName: node linkType: hard "slice-ansi@npm:^5.0.0": version: 5.0.0 resolution: "slice-ansi@npm:5.0.0" dependencies: ansi-styles: ^6.0.0 is-fullwidth-code-point: ^4.0.0 checksum: 7e600a2a55e333a21ef5214b987c8358fe28bfb03c2867ff2cbf919d62143d1812ac27b4297a077fdaf27a03da3678e49551c93e35f9498a3d90221908a1180e languageName: node linkType: hard "smart-buffer@npm:^4.2.0": version: 4.2.0 resolution: "smart-buffer@npm:4.2.0" checksum: b5167a7142c1da704c0e3af85c402002b597081dd9575031a90b4f229ca5678e9a36e8a374f1814c8156a725d17008ae3bde63b92f9cfd132526379e580bec8b languageName: node linkType: hard "socket.io-adapter@npm:~2.5.2": version: 2.5.2 resolution: "socket.io-adapter@npm:2.5.2" dependencies: ws: ~8.11.0 checksum: 481251c3547221e57eb5cb247d0b1a3cde4d152a4c1c9051cc887345a7770e59f3b47f1011cac4499e833f01fcfc301ed13c4ec6e72f7dbb48a476375a6344cd languageName: node linkType: hard "socket.io-parser@npm:~4.2.1": version: 4.2.2 resolution: "socket.io-parser@npm:4.2.2" dependencies: "@socket.io/component-emitter": ~3.1.0 debug: ~4.3.1 checksum: ba929645cb252e23d9800f00c77092480d07cc5d6c97a5d11f515ef636870ea5b3ad6f62b7ba6147b4d703efc92588064f5638a0a0841c8530e4ac50c4b1197a languageName: node linkType: hard "socket.io@npm:^4.4.1": version: 4.6.1 resolution: "socket.io@npm:4.6.1" dependencies: accepts: ~1.3.4 base64id: ~2.0.0 debug: ~4.3.2 engine.io: ~6.4.1 socket.io-adapter: ~2.5.2 socket.io-parser: ~4.2.1 checksum: 447941727142669b3709c3ae59ed790a2c3ad312d935400e2e25fdf59a95cdc92ebcf6b000ab2042a2a77ae51bb87598b40845a8d3b1f6ea6a0dd1df9c8f8459 languageName: node linkType: hard "socks-proxy-agent@npm:^7.0.0": version: 7.0.0 resolution: "socks-proxy-agent@npm:7.0.0" dependencies: agent-base: ^6.0.2 debug: ^4.3.3 socks: ^2.6.2 checksum: 720554370154cbc979e2e9ce6a6ec6ced205d02757d8f5d93fe95adae454fc187a5cbfc6b022afab850a5ce9b4c7d73e0f98e381879cf45f66317a4895953846 languageName: node linkType: hard "socks@npm:^2.6.2": version: 2.7.1 resolution: "socks@npm:2.7.1" dependencies: ip: ^2.0.0 smart-buffer: ^4.2.0 checksum: 259d9e3e8e1c9809a7f5c32238c3d4d2a36b39b83851d0f573bfde5f21c4b1288417ce1af06af1452569cd1eb0841169afd4998f0e04ba04656f6b7f0e46d748 languageName: node linkType: hard "sonic-boom@npm:3.2.1": version: 3.2.1 resolution: "sonic-boom@npm:3.2.1" dependencies: atomic-sleep: ^1.0.0 checksum: 674d0af31c67818c99a0956482720b853bdaa6e46a63814db9fd28024580836a4cfdafa2c2ba6b0ec08449e9a92a5e7959530689b2c1fb5c83f786708cd7a7da languageName: node linkType: hard "sonic-boom@npm:^2.2.1": version: 2.8.0 resolution: "sonic-boom@npm:2.8.0" dependencies: atomic-sleep: ^1.0.0 checksum: c7f9c89f931d7f60f8e0741551a729f0d81e6dc407a99420fc847a9a4c25af048a615b1188ab3c4f1fb3708fe4904973ddab6ebcc8ed5b78b50ab81a99045910 languageName: node linkType: hard "sort-keys@npm:^2.0.0": version: 2.0.0 resolution: "sort-keys@npm:2.0.0" dependencies: is-plain-obj: ^1.0.0 checksum: f0fd827fa9f8f866e98588d2a38c35209afbf1e9a05bb0e4ceeeb8bbf31d923c8902b0a7e0f561590ddb65e58eba6a74f74b991c85360bcc52e83a3f0d1cffd7 languageName: node linkType: hard "sort-keys@npm:^4.0.0": version: 4.2.0 resolution: "sort-keys@npm:4.2.0" dependencies: is-plain-obj: ^2.0.0 checksum: 1535ffd5a789259fc55107d5c3cec09b3e47803a9407fcaae37e1b9e0b813762c47dfee35b6e71e20ca7a69798d0a4791b2058a07f6cab5ef17b2dae83cedbda languageName: node linkType: hard "sort-object-keys@npm:^1.1.3": version: 1.1.3 resolution: "sort-object-keys@npm:1.1.3" checksum: abea944d6722a1710a1aa6e4f9509da085d93d5fc0db23947cb411eedc7731f80022ce8fa68ed83a53dd2ac7441fcf72a3f38c09b3d9bbc4ff80546aa2e151ad languageName: node linkType: hard "sort-package-json@npm:^2.1.0": version: 2.4.1 resolution: "sort-package-json@npm:2.4.1" dependencies: detect-indent: ^7.0.1 detect-newline: ^4.0.0 git-hooks-list: ^3.0.0 globby: ^13.1.2 is-plain-obj: ^4.1.0 sort-object-keys: ^1.1.3 bin: sort-package-json: cli.js checksum: b0059f3fb597513948ba532a194608877e2a44c8864ac3a7e285ea2f441e540596bf30c5de11a89ccd30159d5562d0f5803186b824dfa0fe69cb8d123589a6cb languageName: node linkType: hard "sort-package-json@npm:~1.53.1": version: 1.53.1 resolution: "sort-package-json@npm:1.53.1" dependencies: detect-indent: ^6.0.0 detect-newline: 3.1.0 git-hooks-list: 1.0.3 globby: 10.0.0 is-plain-obj: 2.1.0 sort-object-keys: ^1.1.3 bin: sort-package-json: cli.js checksum: 3bf0b1a625566eb061d7d811f4d8b1cebc2c4d85dcb746fa2b27d39703d3d78edead1aa990273b02264af0a618aa6e7edbf24621e280f03bb06418cbd1f07889 languageName: node linkType: hard "source-list-map@npm:^2.0.0": version: 2.0.1 resolution: "source-list-map@npm:2.0.1" checksum: 806efc6f75e7cd31e4815e7a3aaf75a45c704871ea4075cb2eb49882c6fca28998f44fc5ac91adb6de03b2882ee6fb02f951fdc85e6a22b338c32bfe19557938 languageName: node linkType: hard "source-map-js@npm:^1.0.2": version: 1.0.2 resolution: "source-map-js@npm:1.0.2" checksum: c049a7fc4deb9a7e9b481ae3d424cc793cb4845daa690bc5a05d428bf41bf231ced49b4cf0c9e77f9d42fdb3d20d6187619fc586605f5eabe995a316da8d377c languageName: node linkType: hard "source-map-loader@npm:^4.0.1": version: 4.0.1 resolution: "source-map-loader@npm:4.0.1" dependencies: abab: ^2.0.6 iconv-lite: ^0.6.3 source-map-js: ^1.0.2 peerDependencies: webpack: ^5.72.1 checksum: 4ddca8b03dc61f406effd4bffe70de4b87fef48bae6f737017b2dabcbc7d609133325be1e73838e9265331de28039111d729fcbb8bce88a6018a816bef510eb1 languageName: node linkType: hard "source-map-loader@npm:~1.0.2": version: 1.0.2 resolution: "source-map-loader@npm:1.0.2" dependencies: data-urls: ^2.0.0 iconv-lite: ^0.6.2 loader-utils: ^2.0.0 schema-utils: ^2.7.0 source-map: ^0.6.1 peerDependencies: webpack: ^4.0.0 || ^5.0.0 checksum: 0360b536e904f8fea452d0e122b9199661765229dc62a4b8093cc9d14e985f2ddd146355ede6d11acdd0b9bf4639b364e2526afcf9d3218ed45af63aa5eb053f languageName: node linkType: hard "source-map-support@npm:~0.5.20": version: 0.5.21 resolution: "source-map-support@npm:0.5.21" dependencies: buffer-from: ^1.0.0 source-map: ^0.6.0 checksum: 43e98d700d79af1d36f859bdb7318e601dfc918c7ba2e98456118ebc4c4872b327773e5a1df09b0524e9e5063bb18f0934538eace60cca2710d1fa687645d137 languageName: node linkType: hard "source-map@npm:^0.5.7": version: 0.5.7 resolution: "source-map@npm:0.5.7" checksum: 5dc2043b93d2f194142c7f38f74a24670cd7a0063acdaf4bf01d2964b402257ae843c2a8fa822ad5b71013b5fcafa55af7421383da919752f22ff488bc553f4d languageName: node linkType: hard "source-map@npm:^0.6.0, source-map@npm:^0.6.1, source-map@npm:~0.6.0, source-map@npm:~0.6.1": version: 0.6.1 resolution: "source-map@npm:0.6.1" checksum: 59ce8640cf3f3124f64ac289012c2b8bd377c238e316fb323ea22fbfe83da07d81e000071d7242cad7a23cd91c7de98e4df8830ec3f133cb6133a5f6e9f67bc2 languageName: node linkType: hard "spdx-correct@npm:^3.0.0": version: 3.2.0 resolution: "spdx-correct@npm:3.2.0" dependencies: spdx-expression-parse: ^3.0.0 spdx-license-ids: ^3.0.0 checksum: e9ae98d22f69c88e7aff5b8778dc01c361ef635580e82d29e5c60a6533cc8f4d820803e67d7432581af0cc4fb49973125076ee3b90df191d153e223c004193b2 languageName: node linkType: hard "spdx-exceptions@npm:^2.1.0": version: 2.3.0 resolution: "spdx-exceptions@npm:2.3.0" checksum: cb69a26fa3b46305637123cd37c85f75610e8c477b6476fa7354eb67c08128d159f1d36715f19be6f9daf4b680337deb8c65acdcae7f2608ba51931540687ac0 languageName: node linkType: hard "spdx-expression-parse@npm:^3.0.0": version: 3.0.1 resolution: "spdx-expression-parse@npm:3.0.1" dependencies: spdx-exceptions: ^2.1.0 spdx-license-ids: ^3.0.0 checksum: a1c6e104a2cbada7a593eaa9f430bd5e148ef5290d4c0409899855ce8b1c39652bcc88a725259491a82601159d6dc790bedefc9016c7472f7de8de7361f8ccde languageName: node linkType: hard "spdx-license-ids@npm:^3.0.0": version: 3.0.13 resolution: "spdx-license-ids@npm:3.0.13" checksum: 3469d85c65f3245a279fa11afc250c3dca96e9e847f2f79d57f466940c5bb8495da08a542646086d499b7f24a74b8d0b42f3fc0f95d50ff99af1f599f6360ad7 languageName: node linkType: hard "split2@npm:^3.0.0": version: 3.2.2 resolution: "split2@npm:3.2.2" dependencies: readable-stream: ^3.0.0 checksum: 8127ddbedd0faf31f232c0e9192fede469913aa8982aa380752e0463b2e31c2359ef6962eb2d24c125bac59eeec76873678d723b1c7ff696216a1cd071e3994a languageName: node linkType: hard "split2@npm:^4.0.0": version: 4.2.0 resolution: "split2@npm:4.2.0" checksum: 05d54102546549fe4d2455900699056580cca006c0275c334611420f854da30ac999230857a85fdd9914dc2109ae50f80fda43d2a445f2aa86eccdc1dfce779d languageName: node linkType: hard "split@npm:^1.0.0": version: 1.0.1 resolution: "split@npm:1.0.1" dependencies: through: 2 checksum: 12f4554a5792c7e98bb3e22b53c63bfa5ef89aa704353e1db608a55b51f5b12afaad6e4a8ecf7843c15f273f43cdadd67b3705cc43d48a75c2cf4641d51f7e7a languageName: node linkType: hard "sprintf-js@npm:~1.0.2": version: 1.0.3 resolution: "sprintf-js@npm:1.0.3" checksum: 19d79aec211f09b99ec3099b5b2ae2f6e9cdefe50bc91ac4c69144b6d3928a640bb6ae5b3def70c2e85a2c3d9f5ec2719921e3a59d3ca3ef4b2fd1a4656a0df3 languageName: node linkType: hard "sshpk@npm:^1.7.0": version: 1.17.0 resolution: "sshpk@npm:1.17.0" dependencies: asn1: ~0.2.3 assert-plus: ^1.0.0 bcrypt-pbkdf: ^1.0.0 dashdash: ^1.12.0 ecc-jsbn: ~0.1.1 getpass: ^0.1.1 jsbn: ~0.1.0 safer-buffer: ^2.0.2 tweetnacl: ~0.14.0 bin: sshpk-conv: bin/sshpk-conv sshpk-sign: bin/sshpk-sign sshpk-verify: bin/sshpk-verify checksum: ba109f65c8e6c35133b8e6ed5576abeff8aa8d614824b7275ec3ca308f081fef483607c28d97780c1e235818b0f93ed8c8b56d0a5968d5a23fd6af57718c7597 languageName: node linkType: hard "ssri@npm:^9.0.0, ssri@npm:^9.0.1": version: 9.0.1 resolution: "ssri@npm:9.0.1" dependencies: minipass: ^3.1.1 checksum: fb58f5e46b6923ae67b87ad5ef1c5ab6d427a17db0bead84570c2df3cd50b4ceb880ebdba2d60726588272890bae842a744e1ecce5bd2a2a582fccd5068309eb languageName: node linkType: hard "statuses@npm:2.0.1": version: 2.0.1 resolution: "statuses@npm:2.0.1" checksum: 18c7623fdb8f646fb213ca4051be4df7efb3484d4ab662937ca6fbef7ced9b9e12842709872eb3020cc3504b93bde88935c9f6417489627a7786f24f8031cbcb languageName: node linkType: hard "statuses@npm:>= 1.5.0 < 2, statuses@npm:~1.5.0": version: 1.5.0 resolution: "statuses@npm:1.5.0" checksum: c469b9519de16a4bb19600205cffb39ee471a5f17b82589757ca7bd40a8d92ebb6ed9f98b5a540c5d302ccbc78f15dc03cc0280dd6e00df1335568a5d5758a5c languageName: node linkType: hard "steno@npm:^0.4.1": version: 0.4.4 resolution: "steno@npm:0.4.4" dependencies: graceful-fs: ^4.1.3 checksum: 87df4121cf8159fceb3dc925111aff1e237bdea2d37f6684eabbcdea63bfcff79b3234f2a61ffe8de5cf17fcb97e2cf09075a2a98993251f79e2868fe0d5ba1e languageName: node linkType: hard "stream-shift@npm:^1.0.0": version: 1.0.1 resolution: "stream-shift@npm:1.0.1" checksum: 59b82b44b29ec3699b5519a49b3cedcc6db58c72fb40c04e005525dfdcab1c75c4e0c180b923c380f204bed78211b9bad8faecc7b93dece4d004c3f6ec75737b languageName: node linkType: hard "streamroller@npm:^3.1.5": version: 3.1.5 resolution: "streamroller@npm:3.1.5" dependencies: date-format: ^4.0.14 debug: ^4.3.4 fs-extra: ^8.1.0 checksum: c1df5612b785ffa4b6bbf16460590b62994c57265bc55a5166eebeeb0daf648e84bc52dc6d57e0cd4e5c7609bda93076753c63ff54589febd1e0b95590f0e443 languageName: node linkType: hard "string-argv@npm:^0.3.1": version: 0.3.2 resolution: "string-argv@npm:0.3.2" checksum: 8703ad3f3db0b2641ed2adbb15cf24d3945070d9a751f9e74a924966db9f325ac755169007233e8985a39a6a292f14d4fee20482989b89b96e473c4221508a0f languageName: node linkType: hard "string-width-cjs@npm:string-width@^4.2.0, string-width@npm:^1.0.2 || 2 || 3 || 4, string-width@npm:^4.1.0, string-width@npm:^4.2.0, string-width@npm:^4.2.3": version: 4.2.3 resolution: "string-width@npm:4.2.3" dependencies: emoji-regex: ^8.0.0 is-fullwidth-code-point: ^3.0.0 strip-ansi: ^6.0.1 checksum: e52c10dc3fbfcd6c3a15f159f54a90024241d0f149cf8aed2982a2d801d2e64df0bf1dc351cf8e95c3319323f9f220c16e740b06faecd53e2462df1d2b5443fb languageName: node linkType: hard "string-width@npm:^5.0.0, string-width@npm:^5.0.1, string-width@npm:^5.1.2": version: 5.1.2 resolution: "string-width@npm:5.1.2" dependencies: eastasianwidth: ^0.2.0 emoji-regex: ^9.2.2 strip-ansi: ^7.0.1 checksum: 7369deaa29f21dda9a438686154b62c2c5f661f8dda60449088f9f980196f7908fc39fdd1803e3e01541970287cf5deae336798337e9319a7055af89dafa7193 languageName: node linkType: hard "string.prototype.padend@npm:^3.0.0": version: 3.1.4 resolution: "string.prototype.padend@npm:3.1.4" dependencies: call-bind: ^1.0.2 define-properties: ^1.1.4 es-abstract: ^1.20.4 checksum: 76e07238fe31dc12177428f0436b7ed6985f6a7ba97470fd53e4f0a6d9860bfee127d81957f3073cc879b434233df143825d140581e1340278053ad993c92f6c languageName: node linkType: hard "string.prototype.trim@npm:^1.2.7": version: 1.2.7 resolution: "string.prototype.trim@npm:1.2.7" dependencies: call-bind: ^1.0.2 define-properties: ^1.1.4 es-abstract: ^1.20.4 checksum: 05b7b2d6af63648e70e44c4a8d10d8cc457536df78b55b9d6230918bde75c5987f6b8604438c4c8652eb55e4fc9725d2912789eb4ec457d6995f3495af190c09 languageName: node linkType: hard "string.prototype.trimend@npm:^1.0.6": version: 1.0.6 resolution: "string.prototype.trimend@npm:1.0.6" dependencies: call-bind: ^1.0.2 define-properties: ^1.1.4 es-abstract: ^1.20.4 checksum: 0fdc34645a639bd35179b5a08227a353b88dc089adf438f46be8a7c197fc3f22f8514c1c9be4629b3cd29c281582730a8cbbad6466c60f76b5f99cf2addb132e languageName: node linkType: hard "string.prototype.trimstart@npm:^1.0.6": version: 1.0.6 resolution: "string.prototype.trimstart@npm:1.0.6" dependencies: call-bind: ^1.0.2 define-properties: ^1.1.4 es-abstract: ^1.20.4 checksum: 89080feef416621e6ef1279588994305477a7a91648d9436490d56010a1f7adc39167cddac7ce0b9884b8cdbef086987c4dcb2960209f2af8bac0d23ceff4f41 languageName: node linkType: hard "string_decoder@npm:^1.1.1": version: 1.3.0 resolution: "string_decoder@npm:1.3.0" dependencies: safe-buffer: ~5.2.0 checksum: 8417646695a66e73aefc4420eb3b84cc9ffd89572861fe004e6aeb13c7bc00e2f616247505d2dbbef24247c372f70268f594af7126f43548565c68c117bdeb56 languageName: node linkType: hard "string_decoder@npm:~1.1.1": version: 1.1.1 resolution: "string_decoder@npm:1.1.1" dependencies: safe-buffer: ~5.1.0 checksum: 9ab7e56f9d60a28f2be697419917c50cac19f3e8e6c28ef26ed5f4852289fe0de5d6997d29becf59028556f2c62983790c1d9ba1e2a3cc401768ca12d5183a5b languageName: node linkType: hard "strip-ansi-cjs@npm:strip-ansi@^6.0.1, strip-ansi@npm:^6.0.0, strip-ansi@npm:^6.0.1": version: 6.0.1 resolution: "strip-ansi@npm:6.0.1" dependencies: ansi-regex: ^5.0.1 checksum: f3cd25890aef3ba6e1a74e20896c21a46f482e93df4a06567cebf2b57edabb15133f1f94e57434e0a958d61186087b1008e89c94875d019910a213181a14fc8c languageName: node linkType: hard "strip-ansi@npm:^3.0.0": version: 3.0.1 resolution: "strip-ansi@npm:3.0.1" dependencies: ansi-regex: ^2.0.0 checksum: 9b974de611ce5075c70629c00fa98c46144043db92ae17748fb780f706f7a789e9989fd10597b7c2053ae8d1513fd707816a91f1879b2f71e6ac0b6a863db465 languageName: node linkType: hard "strip-ansi@npm:^4.0.0": version: 4.0.0 resolution: "strip-ansi@npm:4.0.0" dependencies: ansi-regex: ^3.0.0 checksum: d9186e6c0cf78f25274f6750ee5e4a5725fb91b70fdd79aa5fe648eab092a0ec5b9621b22d69d4534a56319f75d8944efbd84e3afa8d4ad1b9a9491f12c84eca languageName: node linkType: hard "strip-ansi@npm:^7.0.1": version: 7.0.1 resolution: "strip-ansi@npm:7.0.1" dependencies: ansi-regex: ^6.0.1 checksum: 257f78fa433520e7f9897722731d78599cb3fce29ff26a20a5e12ba4957463b50a01136f37c43707f4951817a75e90820174853d6ccc240997adc5df8f966039 languageName: node linkType: hard "strip-bom@npm:^3.0.0": version: 3.0.0 resolution: "strip-bom@npm:3.0.0" checksum: 8d50ff27b7ebe5ecc78f1fe1e00fcdff7af014e73cf724b46fb81ef889eeb1015fc5184b64e81a2efe002180f3ba431bdd77e300da5c6685d702780fbf0c8d5b languageName: node linkType: hard "strip-bom@npm:^4.0.0": version: 4.0.0 resolution: "strip-bom@npm:4.0.0" checksum: 9dbcfbaf503c57c06af15fe2c8176fb1bf3af5ff65003851a102749f875a6dbe0ab3b30115eccf6e805e9d756830d3e40ec508b62b3f1ddf3761a20ebe29d3f3 languageName: node linkType: hard "strip-final-newline@npm:^2.0.0": version: 2.0.0 resolution: "strip-final-newline@npm:2.0.0" checksum: 69412b5e25731e1938184b5d489c32e340605bb611d6140344abc3421b7f3c6f9984b21dff296dfcf056681b82caa3bb4cc996a965ce37bcfad663e92eae9c64 languageName: node linkType: hard "strip-indent@npm:^3.0.0": version: 3.0.0 resolution: "strip-indent@npm:3.0.0" dependencies: min-indent: ^1.0.0 checksum: 18f045d57d9d0d90cd16f72b2313d6364fd2cb4bf85b9f593523ad431c8720011a4d5f08b6591c9d580f446e78855c5334a30fb91aa1560f5d9f95ed1b4a0530 languageName: node linkType: hard "strip-json-comments@npm:3.1.1, strip-json-comments@npm:^3.1.0, strip-json-comments@npm:^3.1.1": version: 3.1.1 resolution: "strip-json-comments@npm:3.1.1" checksum: 492f73e27268f9b1c122733f28ecb0e7e8d8a531a6662efbd08e22cccb3f9475e90a1b82cab06a392f6afae6d2de636f977e231296400d0ec5304ba70f166443 languageName: node linkType: hard "strip-json-comments@npm:~2.0.1": version: 2.0.1 resolution: "strip-json-comments@npm:2.0.1" checksum: 1074ccb63270d32ca28edfb0a281c96b94dc679077828135141f27d52a5a398ef5e78bcf22809d23cadc2b81dfbe345eb5fd8699b385c8b1128907dec4a7d1e1 languageName: node linkType: hard "strong-log-transformer@npm:^2.1.0": version: 2.1.0 resolution: "strong-log-transformer@npm:2.1.0" dependencies: duplexer: ^0.1.1 minimist: ^1.2.0 through: ^2.3.4 bin: sl-log-transformer: bin/sl-log-transformer.js checksum: abf9a4ac143118f26c3a0771b204b02f5cf4fa80384ae158f25e02bfbff761038accc44a7f65869ccd5a5995a7f2c16b1466b83149644ba6cecd3072a8927297 languageName: node linkType: hard "style-loader@npm:^3.3.1, style-loader@npm:~3.3.1": version: 3.3.2 resolution: "style-loader@npm:3.3.2" peerDependencies: webpack: ^5.0.0 checksum: 5ee5ce2dc885369eccb55d429376e83d02570d473ac5edeb69fd65ee894847f1e51429cf078351f617bd04516ece8a1dd967f9f40464bd8fa76d903c6b2a6f08 languageName: node linkType: hard "style-mod@npm:^4.0.0": version: 4.0.3 resolution: "style-mod@npm:4.0.3" checksum: 934556e720bd29026ff8fef43a1a35b58957813025b91f996d886e9405acf934ddb1934def4400b174bd7784c9263eb9c71f07ae83925af9271b7d921d546854 languageName: node linkType: hard "supports-color@npm:8.1.1, supports-color@npm:^8.0.0": version: 8.1.1 resolution: "supports-color@npm:8.1.1" dependencies: has-flag: ^4.0.0 checksum: c052193a7e43c6cdc741eb7f378df605636e01ad434badf7324f17fb60c69a880d8d8fcdcb562cf94c2350e57b937d7425ab5b8326c67c2adc48f7c87c1db406 languageName: node linkType: hard "supports-color@npm:^2.0.0": version: 2.0.0 resolution: "supports-color@npm:2.0.0" checksum: 602538c5812b9006404370b5a4b885d3e2a1f6567d314f8b4a41974ffe7d08e525bf92ae0f9c7030e3b4c78e4e34ace55d6a67a74f1571bc205959f5972f88f0 languageName: node linkType: hard "supports-color@npm:^5.3.0, supports-color@npm:^5.4.0": version: 5.5.0 resolution: "supports-color@npm:5.5.0" dependencies: has-flag: ^3.0.0 checksum: 95f6f4ba5afdf92f495b5a912d4abee8dcba766ae719b975c56c084f5004845f6f5a5f7769f52d53f40e21952a6d87411bafe34af4a01e65f9926002e38e1dac languageName: node linkType: hard "supports-color@npm:^7.1.0, supports-color@npm:^7.2.0": version: 7.2.0 resolution: "supports-color@npm:7.2.0" dependencies: has-flag: ^4.0.0 checksum: 3dda818de06ebbe5b9653e07842d9479f3555ebc77e9a0280caf5a14fb877ffee9ed57007c3b78f5a6324b8dbeec648d9e97a24e2ed9fdb81ddc69ea07100f4a languageName: node linkType: hard "supports-color@npm:^9.2.2": version: 9.3.1 resolution: "supports-color@npm:9.3.1" checksum: 00c4d1082a7ba0ee21cba1d4e4a466642635412e40476777b530aa5110d035e99a420cd048e1fb6811f2254c0946095fbb87a1eccf1af1d1ca45ab0a4535db93 languageName: node linkType: hard "supports-preserve-symlinks-flag@npm:^1.0.0": version: 1.0.0 resolution: "supports-preserve-symlinks-flag@npm:1.0.0" checksum: 53b1e247e68e05db7b3808b99b892bd36fb096e6fba213a06da7fab22045e97597db425c724f2bbd6c99a3c295e1e73f3e4de78592289f38431049e1277ca0ae languageName: node linkType: hard "tapable@npm:^2.1.1, tapable@npm:^2.2.0": version: 2.2.1 resolution: "tapable@npm:2.2.1" checksum: 3b7a1b4d86fa940aad46d9e73d1e8739335efd4c48322cb37d073eb6f80f5281889bf0320c6d8ffcfa1a0dd5bfdbd0f9d037e252ef972aca595330538aac4d51 languageName: node linkType: hard "tar-stream@npm:~2.2.0": version: 2.2.0 resolution: "tar-stream@npm:2.2.0" dependencies: bl: ^4.0.3 end-of-stream: ^1.4.1 fs-constants: ^1.0.0 inherits: ^2.0.3 readable-stream: ^3.1.1 checksum: 699831a8b97666ef50021c767f84924cfee21c142c2eb0e79c63254e140e6408d6d55a065a2992548e72b06de39237ef2b802b99e3ece93ca3904a37622a66f3 languageName: node linkType: hard "tar@npm:^6.1.0, tar@npm:^6.1.11, tar@npm:^6.1.2": version: 6.1.14 resolution: "tar@npm:6.1.14" dependencies: chownr: ^2.0.0 fs-minipass: ^2.0.0 minipass: ^5.0.0 minizlib: ^2.1.1 mkdirp: ^1.0.3 yallist: ^4.0.0 checksum: a1be0815a9bdc97dfca7c6c2d71d1b836f8ba9314684e2c412832f0f59cc226d4c13da303d6bc30925e82f634cc793f40da79ae72f3e96fb87c23d0f4efd5207 languageName: node linkType: hard "temp-dir@npm:^1.0.0": version: 1.0.0 resolution: "temp-dir@npm:1.0.0" checksum: cb2b58ddfb12efa83e939091386ad73b425c9a8487ea0095fe4653192a40d49184a771a1beba99045fbd011e389fd563122d79f54f82be86a55620667e08a6b2 languageName: node linkType: hard "terser-webpack-plugin@npm:^5.3.7": version: 5.3.8 resolution: "terser-webpack-plugin@npm:5.3.8" dependencies: "@jridgewell/trace-mapping": ^0.3.17 jest-worker: ^27.4.5 schema-utils: ^3.1.1 serialize-javascript: ^6.0.1 terser: ^5.16.8 peerDependencies: webpack: ^5.1.0 peerDependenciesMeta: "@swc/core": optional: true esbuild: optional: true uglify-js: optional: true checksum: 0ffc2a1949b1fd60ef9c815c4629b9817656db612bb58c5db96e3b04204c86afd142b115392e48733364edc7bf95131f54c10174c05f046ba8f2adead6b06c3c languageName: node linkType: hard "terser@npm:^5.16.8": version: 5.17.4 resolution: "terser@npm:5.17.4" dependencies: "@jridgewell/source-map": ^0.3.2 acorn: ^8.5.0 commander: ^2.20.0 source-map-support: ~0.5.20 bin: terser: bin/terser checksum: 4bb4bbee170bee4cf897545b602999e0b74d2cd035387514c6859fae6a71d623f8d1319de47bcf6a157358355cc7afaa62a5d5661bfc72968d13b35113022486 languageName: node linkType: hard "text-extensions@npm:^1.0.0": version: 1.9.0 resolution: "text-extensions@npm:1.9.0" checksum: 56a9962c1b62d39b2bcb369b7558ca85c1b55e554b38dfd725edcc0a1babe5815782a60c17ff6b839093b163dfebb92b804208aaaea616ec7571c8059ae0cf44 languageName: node linkType: hard "text-table@npm:^0.2.0": version: 0.2.0 resolution: "text-table@npm:0.2.0" checksum: b6937a38c80c7f84d9c11dd75e49d5c44f71d95e810a3250bd1f1797fc7117c57698204adf676b71497acc205d769d65c16ae8fa10afad832ae1322630aef10a languageName: node linkType: hard "thenby@npm:^1.3.4": version: 1.3.4 resolution: "thenby@npm:1.3.4" checksum: 2d2ef3d67fa851467f328f1373da75a760d6a469d45f667570703894656057a666a1fb488398ce7830606253dba24eb55a063d6ce939e9e872a2b9d2cdd68c2c languageName: node linkType: hard "thread-stream@npm:^0.15.1": version: 0.15.2 resolution: "thread-stream@npm:0.15.2" dependencies: real-require: ^0.1.0 checksum: 0547795a8f357ba1ac0dba29c71f965182e29e21752951a04a7167515ee37524bfba6c410f31e65a01a8d3e5b93400b812889aa09523e38ce4d744c894ffa6c0 languageName: node linkType: hard "through2@npm:^2.0.0": version: 2.0.5 resolution: "through2@npm:2.0.5" dependencies: readable-stream: ~2.3.6 xtend: ~4.0.1 checksum: beb0f338aa2931e5660ec7bf3ad949e6d2e068c31f4737b9525e5201b824ac40cac6a337224856b56bd1ddd866334bbfb92a9f57cd6f66bc3f18d3d86fc0fe50 languageName: node linkType: hard "through2@npm:^4.0.0": version: 4.0.2 resolution: "through2@npm:4.0.2" dependencies: readable-stream: 3 checksum: ac7430bd54ccb7920fd094b1c7ff3e1ad6edd94202e5528331253e5fde0cc56ceaa690e8df9895de2e073148c52dfbe6c4db74cacae812477a35660090960cc0 languageName: node linkType: hard "through@npm:2, through@npm:>=2.2.7 <3, through@npm:^2.3.4, through@npm:^2.3.6, through@npm:^2.3.8": version: 2.3.8 resolution: "through@npm:2.3.8" checksum: a38c3e059853c494af95d50c072b83f8b676a9ba2818dcc5b108ef252230735c54e0185437618596c790bbba8fcdaef5b290405981ffa09dce67b1f1bf190cbd languageName: node linkType: hard "tmp@npm:^0.0.33": version: 0.0.33 resolution: "tmp@npm:0.0.33" dependencies: os-tmpdir: ~1.0.2 checksum: 902d7aceb74453ea02abbf58c203f4a8fc1cead89b60b31e354f74ed5b3fb09ea817f94fb310f884a5d16987dd9fa5a735412a7c2dd088dd3d415aa819ae3a28 languageName: node linkType: hard "tmp@npm:^0.2.1, tmp@npm:~0.2.1": version: 0.2.1 resolution: "tmp@npm:0.2.1" dependencies: rimraf: ^3.0.0 checksum: 8b1214654182575124498c87ca986ac53dc76ff36e8f0e0b67139a8d221eaecfdec108c0e6ec54d76f49f1f72ab9325500b246f562b926f85bcdfca8bf35df9e languageName: node linkType: hard "to-fast-properties@npm:^1.0.3": version: 1.0.3 resolution: "to-fast-properties@npm:1.0.3" checksum: bd0abb58c4722851df63419de3f6d901d5118f0440d3f71293ed776dd363f2657edaaf2dc470e3f6b7b48eb84aa411193b60db8a4a552adac30de9516c5cc580 languageName: node linkType: hard "to-fast-properties@npm:^2.0.0": version: 2.0.0 resolution: "to-fast-properties@npm:2.0.0" checksum: be2de62fe58ead94e3e592680052683b1ec986c72d589e7b21e5697f8744cdbf48c266fa72f6c15932894c10187b5f54573a3bcf7da0bfd964d5caf23d436168 languageName: node linkType: hard "to-regex-range@npm:^5.0.1": version: 5.0.1 resolution: "to-regex-range@npm:5.0.1" dependencies: is-number: ^7.0.0 checksum: f76fa01b3d5be85db6a2a143e24df9f60dd047d151062d0ba3df62953f2f697b16fe5dad9b0ac6191c7efc7b1d9dcaa4b768174b7b29da89d4428e64bc0a20ed languageName: node linkType: hard "toidentifier@npm:1.0.1": version: 1.0.1 resolution: "toidentifier@npm:1.0.1" checksum: 952c29e2a85d7123239b5cfdd889a0dde47ab0497f0913d70588f19c53f7e0b5327c95f4651e413c74b785147f9637b17410ac8c846d5d4a20a5a33eb6dc3a45 languageName: node linkType: hard "toposort@npm:^2.0.2": version: 2.0.2 resolution: "toposort@npm:2.0.2" checksum: d64c74b570391c9432873f48e231b439ee56bc49f7cb9780b505cfdf5cb832f808d0bae072515d93834dd6bceca5bb34448b5b4b408335e4d4716eaf68195dcb languageName: node linkType: hard "tough-cookie@npm:~2.5.0": version: 2.5.0 resolution: "tough-cookie@npm:2.5.0" dependencies: psl: ^1.1.28 punycode: ^2.1.1 checksum: 16a8cd090224dd176eee23837cbe7573ca0fa297d7e468ab5e1c02d49a4e9a97bb05fef11320605eac516f91d54c57838a25864e8680e27b069a5231d8264977 languageName: node linkType: hard "tr46@npm:^2.1.0": version: 2.1.0 resolution: "tr46@npm:2.1.0" dependencies: punycode: ^2.1.1 checksum: ffe6049b9dca3ae329b059aada7f515b0f0064c611b39b51ff6b53897e954650f6f63d9319c6c008d36ead477c7b55e5f64c9dc60588ddc91ff720d64eb710b3 languageName: node linkType: hard "tr46@npm:~0.0.3": version: 0.0.3 resolution: "tr46@npm:0.0.3" checksum: 726321c5eaf41b5002e17ffbd1fb7245999a073e8979085dacd47c4b4e8068ff5777142fc6726d6ca1fd2ff16921b48788b87225cbc57c72636f6efa8efbffe3 languageName: node linkType: hard "treeverse@npm:^2.0.0": version: 2.0.0 resolution: "treeverse@npm:2.0.0" checksum: 3c6b2b890975a4d42c86b9a0f1eb932b4450db3fa874be5c301c4f5e306fd76330c6a490cf334b0937b3a44b049787ba5d98c88bc7b140f34fdb3ab1f83e5269 languageName: node linkType: hard "trim-newlines@npm:^3.0.0": version: 3.0.1 resolution: "trim-newlines@npm:3.0.1" checksum: b530f3fadf78e570cf3c761fb74fef655beff6b0f84b29209bac6c9622db75ad1417f4a7b5d54c96605dcd72734ad44526fef9f396807b90839449eb543c6206 languageName: node linkType: hard "trim-right@npm:^1.0.1": version: 1.0.1 resolution: "trim-right@npm:1.0.1" checksum: 9120af534e006a7424a4f9358710e6e707887b6ccf7ea69e50d6ac6464db1fe22268400def01752f09769025d480395159778153fb98d4a2f6f40d4cf5d4f3b6 languageName: node linkType: hard "tsconfig-paths@npm:^4.1.2": version: 4.2.0 resolution: "tsconfig-paths@npm:4.2.0" dependencies: json5: ^2.2.2 minimist: ^1.2.6 strip-bom: ^3.0.0 checksum: 28c5f7bbbcabc9dabd4117e8fdc61483f6872a1c6b02a4b1c4d68c5b79d06896c3cc9547610c4c3ba64658531caa2de13ead1ea1bf321c7b53e969c4752b98c7 languageName: node linkType: hard "tslib@npm:^1.8.1": version: 1.14.1 resolution: "tslib@npm:1.14.1" checksum: dbe628ef87f66691d5d2959b3e41b9ca0045c3ee3c7c7b906cc1e328b39f199bb1ad9e671c39025bd56122ac57dfbf7385a94843b1cc07c60a4db74795829acd languageName: node linkType: hard "tslib@npm:^2.1.0, tslib@npm:^2.3.0, tslib@npm:^2.4.0": version: 2.5.0 resolution: "tslib@npm:2.5.0" checksum: ae3ed5f9ce29932d049908ebfdf21b3a003a85653a9a140d614da6b767a93ef94f460e52c3d787f0e4f383546981713f165037dc2274df212ea9f8a4541004e1 languageName: node linkType: hard "tsscmp@npm:1.0.6": version: 1.0.6 resolution: "tsscmp@npm:1.0.6" checksum: 1512384def36bccc9125cabbd4c3b0e68608d7ee08127ceaa0b84a71797263f1a01c7f82fa69be8a3bd3c1396e2965d2f7b52d581d3a5eeaf3967fbc52e3b3bf languageName: node linkType: hard "tsutils@npm:^3.21.0": version: 3.21.0 resolution: "tsutils@npm:3.21.0" dependencies: tslib: ^1.8.1 peerDependencies: typescript: ">=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta" checksum: 1843f4c1b2e0f975e08c4c21caa4af4f7f65a12ac1b81b3b8489366826259323feb3fc7a243123453d2d1a02314205a7634e048d4a8009921da19f99755cdc48 languageName: node linkType: hard "tunnel-agent@npm:^0.6.0": version: 0.6.0 resolution: "tunnel-agent@npm:0.6.0" dependencies: safe-buffer: ^5.0.1 checksum: 05f6510358f8afc62a057b8b692f05d70c1782b70db86d6a1e0d5e28a32389e52fa6e7707b6c5ecccacc031462e4bc35af85ecfe4bbc341767917b7cf6965711 languageName: node linkType: hard "tweetnacl@npm:^0.14.3, tweetnacl@npm:~0.14.0": version: 0.14.5 resolution: "tweetnacl@npm:0.14.5" checksum: 6061daba1724f59473d99a7bb82e13f211cdf6e31315510ae9656fefd4779851cb927adad90f3b488c8ed77c106adc0421ea8055f6f976ff21b27c5c4e918487 languageName: node linkType: hard "typanion@npm:^3.8.0": version: 3.12.1 resolution: "typanion@npm:3.12.1" checksum: a2e26fa216f8a1dbd2ffbaacb75b1e2dc042a0356e9702fba05a968cad95d9f661b24e37f6c6d8c3adad2c8582c99fca4826ff26a2d07cd2ae617ea87e6187eb languageName: node linkType: hard "type-check@npm:^0.4.0, type-check@npm:~0.4.0": version: 0.4.0 resolution: "type-check@npm:0.4.0" dependencies: prelude-ls: ^1.2.1 checksum: ec688ebfc9c45d0c30412e41ca9c0cdbd704580eb3a9ccf07b9b576094d7b86a012baebc95681999dd38f4f444afd28504cb3a89f2ef16b31d4ab61a0739025a languageName: node linkType: hard "type-detect@npm:4.0.8, type-detect@npm:^4.0.0, type-detect@npm:^4.0.5, type-detect@npm:^4.0.8": version: 4.0.8 resolution: "type-detect@npm:4.0.8" checksum: 62b5628bff67c0eb0b66afa371bd73e230399a8d2ad30d852716efcc4656a7516904570cd8631a49a3ce57c10225adf5d0cbdcb47f6b0255fe6557c453925a15 languageName: node linkType: hard "type-fest@npm:^0.18.0": version: 0.18.1 resolution: "type-fest@npm:0.18.1" checksum: e96dcee18abe50ec82dab6cbc4751b3a82046da54c52e3b2d035b3c519732c0b3dd7a2fa9df24efd1a38d953d8d4813c50985f215f1957ee5e4f26b0fe0da395 languageName: node linkType: hard "type-fest@npm:^0.20.2": version: 0.20.2 resolution: "type-fest@npm:0.20.2" checksum: 4fb3272df21ad1c552486f8a2f8e115c09a521ad7a8db3d56d53718d0c907b62c6e9141ba5f584af3f6830d0872c521357e512381f24f7c44acae583ad517d73 languageName: node linkType: hard "type-fest@npm:^0.21.3": version: 0.21.3 resolution: "type-fest@npm:0.21.3" checksum: e6b32a3b3877f04339bae01c193b273c62ba7bfc9e325b8703c4ee1b32dc8fe4ef5dfa54bf78265e069f7667d058e360ae0f37be5af9f153b22382cd55a9afe0 languageName: node linkType: hard "type-fest@npm:^0.4.1": version: 0.4.1 resolution: "type-fest@npm:0.4.1" checksum: 25f882d9cc2f24af7a0a529157f96dead157894c456bfbad16d48f990c43b470dfb79848e8d9c03fe1be72a7d169e44f6f3135b54628393c66a6189c5dc077f7 languageName: node linkType: hard "type-fest@npm:^0.6.0": version: 0.6.0 resolution: "type-fest@npm:0.6.0" checksum: b2188e6e4b21557f6e92960ec496d28a51d68658018cba8b597bd3ef757721d1db309f120ae987abeeda874511d14b776157ff809f23c6d1ce8f83b9b2b7d60f languageName: node linkType: hard "type-fest@npm:^0.8.1": version: 0.8.1 resolution: "type-fest@npm:0.8.1" checksum: d61c4b2eba24009033ae4500d7d818a94fd6d1b481a8111612ee141400d5f1db46f199c014766b9fa9b31a6a7374d96fc748c6d688a78a3ce5a33123839becb7 languageName: node linkType: hard "type-is@npm:~1.6.18": version: 1.6.18 resolution: "type-is@npm:1.6.18" dependencies: media-typer: 0.3.0 mime-types: ~2.1.24 checksum: 2c8e47675d55f8b4e404bcf529abdf5036c537a04c2b20177bcf78c9e3c1da69da3942b1346e6edb09e823228c0ee656ef0e033765ec39a70d496ef601a0c657 languageName: node linkType: hard "typed-array-length@npm:^1.0.4": version: 1.0.4 resolution: "typed-array-length@npm:1.0.4" dependencies: call-bind: ^1.0.2 for-each: ^0.3.3 is-typed-array: ^1.1.9 checksum: 2228febc93c7feff142b8c96a58d4a0d7623ecde6c7a24b2b98eb3170e99f7c7eff8c114f9b283085cd59dcd2bd43aadf20e25bba4b034a53c5bb292f71f8956 languageName: node linkType: hard "typedarray-to-buffer@npm:^3.1.5": version: 3.1.5 resolution: "typedarray-to-buffer@npm:3.1.5" dependencies: is-typedarray: ^1.0.0 checksum: 99c11aaa8f45189fcfba6b8a4825fd684a321caa9bd7a76a27cf0c7732c174d198b99f449c52c3818107430b5f41c0ccbbfb75cb2ee3ca4a9451710986d61a60 languageName: node linkType: hard "typedarray@npm:^0.0.6": version: 0.0.6 resolution: "typedarray@npm:0.0.6" checksum: 33b39f3d0e8463985eeaeeacc3cb2e28bc3dfaf2a5ed219628c0b629d5d7b810b0eb2165f9f607c34871d5daa92ba1dc69f49051cf7d578b4cbd26c340b9d1b1 languageName: node linkType: hard "typedoc@npm:~0.23.24": version: 0.23.28 resolution: "typedoc@npm:0.23.28" dependencies: lunr: ^2.3.9 marked: ^4.2.12 minimatch: ^7.1.3 shiki: ^0.14.1 peerDependencies: typescript: 4.6.x || 4.7.x || 4.8.x || 4.9.x || 5.0.x bin: typedoc: bin/typedoc checksum: 40eb4e207aac1b734e09400cf03f543642cc7b11000895198dd5a0d3166315759ccf4ac30a2915153597c5c186101c72bac2f1fc12b428184a9274d3a0e44c5e languageName: node linkType: hard "typescript@npm:~4.9.4": version: 4.9.5 resolution: "typescript@npm:4.9.5" bin: tsc: bin/tsc tsserver: bin/tsserver checksum: ee000bc26848147ad423b581bd250075662a354d84f0e06eb76d3b892328d8d4440b7487b5a83e851b12b255f55d71835b008a66cbf8f255a11e4400159237db languageName: node linkType: hard "typescript@patch:typescript@npm%3A~4.9.4#~builtin": version: 4.9.5 resolution: "typescript@patch:typescript@npm%3A4.9.5#~builtin::version=4.9.5&hash=23ec76" bin: tsc: bin/tsc tsserver: bin/tsserver checksum: ab417a2f398380c90a6cf5a5f74badd17866adf57f1165617d6a551f059c3ba0a3e4da0d147b3ac5681db9ac76a303c5876394b13b3de75fdd5b1eaa06181c9d languageName: node linkType: hard "typestyle@npm:^2.0.4": version: 2.4.0 resolution: "typestyle@npm:2.4.0" dependencies: csstype: 3.0.10 free-style: 3.1.0 checksum: 8b4f02c24f67b594f98507b15a753dabd4db5eb0af007e1d310527c64030e11e9464b25b5a6bc65fb5eec9a4459a8336050121ecc29063ac87b8b47a6d698893 languageName: node linkType: hard "ua-parser-js@npm:^0.7.30": version: 0.7.35 resolution: "ua-parser-js@npm:0.7.35" checksum: 0a332e8d72d277e62f29ecb3a33843b274de93eb9378350b746ea0f89ef05ee09c94f2c1fdab8001373ad5e95a48beb0a94f39dc1670c908db9fc9b8f0876204 languageName: node linkType: hard "uglify-js@npm:^3.1.4": version: 3.17.4 resolution: "uglify-js@npm:3.17.4" bin: uglifyjs: bin/uglifyjs checksum: 7b3897df38b6fc7d7d9f4dcd658599d81aa2b1fb0d074829dd4e5290f7318dbca1f4af2f45acb833b95b1fe0ed4698662ab61b87e94328eb4c0a0d3435baf924 languageName: node linkType: hard "unbox-primitive@npm:^1.0.2": version: 1.0.2 resolution: "unbox-primitive@npm:1.0.2" dependencies: call-bind: ^1.0.2 has-bigints: ^1.0.2 has-symbols: ^1.0.3 which-boxed-primitive: ^1.0.2 checksum: b7a1cf5862b5e4b5deb091672ffa579aa274f648410009c81cca63fed3b62b610c4f3b773f912ce545bb4e31edc3138975b5bc777fc6e4817dca51affb6380e9 languageName: node linkType: hard "underscore@npm:>=1.8.3": version: 1.13.6 resolution: "underscore@npm:1.13.6" checksum: d5cedd14a9d0d91dd38c1ce6169e4455bb931f0aaf354108e47bd46d3f2da7464d49b2171a5cf786d61963204a42d01ea1332a903b7342ad428deaafaf70ec36 languageName: node linkType: hard "union@npm:~0.5.0": version: 0.5.0 resolution: "union@npm:0.5.0" dependencies: qs: ^6.4.0 checksum: 021530d02363fb7470ce45d4cb06ae28a97d5a245666e6d0fca6bab0673bea8c7988e7d2f8046acfbab120908cedcb099ca216b357d4483bcd96518b39101be0 languageName: node linkType: hard "uniq@npm:^1.0.1": version: 1.0.1 resolution: "uniq@npm:1.0.1" checksum: 8206535f83745ea83f9da7035f3b983fd6ed5e35b8ed7745441944e4065b616bc67cf0d0a23a86b40ee0074426f0607f0a138f9b78e124eb6a7a6a6966055709 languageName: node linkType: hard "unique-filename@npm:^2.0.0": version: 2.0.1 resolution: "unique-filename@npm:2.0.1" dependencies: unique-slug: ^3.0.0 checksum: 807acf3381aff319086b64dc7125a9a37c09c44af7620bd4f7f3247fcd5565660ac12d8b80534dcbfd067e6fe88a67e621386dd796a8af828d1337a8420a255f languageName: node linkType: hard "unique-slug@npm:^3.0.0": version: 3.0.0 resolution: "unique-slug@npm:3.0.0" dependencies: imurmurhash: ^0.1.4 checksum: 49f8d915ba7f0101801b922062ee46b7953256c93ceca74303bd8e6413ae10aa7e8216556b54dc5382895e8221d04f1efaf75f945c2e4a515b4139f77aa6640c languageName: node linkType: hard "units-css@npm:^0.4.0": version: 0.4.0 resolution: "units-css@npm:0.4.0" dependencies: isnumeric: ^0.2.0 viewport-dimensions: ^0.2.0 checksum: 9986b3f4b1cb366f9afdfd806abc5400390cbf701ac0e9c5f4fcc370b3aa099233fa8b4abfd33f59576cbeba0179a667a9b22b0e9844b1bd2ebc6a8339f4a984 languageName: node linkType: hard "universal-user-agent@npm:^6.0.0": version: 6.0.0 resolution: "universal-user-agent@npm:6.0.0" checksum: 5092bbc80dd0d583cef0b62c17df0043193b74f425112ea6c1f69bc5eda21eeec7a08d8c4f793a277eb2202ffe9b44bec852fa3faff971234cd209874d1b79ef languageName: node linkType: hard "universalify@npm:^0.1.0": version: 0.1.2 resolution: "universalify@npm:0.1.2" checksum: 40cdc60f6e61070fe658ca36016a8f4ec216b29bf04a55dce14e3710cc84c7448538ef4dad3728d0bfe29975ccd7bfb5f414c45e7b78883567fb31b246f02dff languageName: node linkType: hard "universalify@npm:^2.0.0": version: 2.0.0 resolution: "universalify@npm:2.0.0" checksum: 2406a4edf4a8830aa6813278bab1f953a8e40f2f63a37873ffa9a3bc8f9745d06cc8e88f3572cb899b7e509013f7f6fcc3e37e8a6d914167a5381d8440518c44 languageName: node linkType: hard "unix-crypt-td-js@npm:1.1.4": version: 1.1.4 resolution: "unix-crypt-td-js@npm:1.1.4" checksum: c1bfcd699fa0fa15eac087760e34fdf7e2e686de1c40dde7f550c2429389fd7ef68bf83ce804ce7882551573330832aae32e80be3ce991f7080aabd98f8bd554 languageName: node linkType: hard "unpipe@npm:1.0.0, unpipe@npm:~1.0.0": version: 1.0.0 resolution: "unpipe@npm:1.0.0" checksum: 4fa18d8d8d977c55cb09715385c203197105e10a6d220087ec819f50cb68870f02942244f1017565484237f1f8c5d3cd413631b1ae104d3096f24fdfde1b4aa2 languageName: node linkType: hard "upath@npm:^2.0.1": version: 2.0.1 resolution: "upath@npm:2.0.1" checksum: 2db04f24a03ef72204c7b969d6991abec9e2cb06fb4c13a1fd1c59bc33b46526b16c3325e55930a11ff86a77a8cbbcda8f6399bf914087028c5beae21ecdb33c languageName: node linkType: hard "update-browserslist-db@npm:^1.0.10": version: 1.0.11 resolution: "update-browserslist-db@npm:1.0.11" dependencies: escalade: ^3.1.1 picocolors: ^1.0.0 peerDependencies: browserslist: ">= 4.21.0" bin: update-browserslist-db: cli.js checksum: b98327518f9a345c7cad5437afae4d2ae7d865f9779554baf2a200fdf4bac4969076b679b1115434bd6557376bdd37ca7583d0f9b8f8e302d7d4cc1e91b5f231 languageName: node linkType: hard "uri-js@npm:^4.2.2": version: 4.4.1 resolution: "uri-js@npm:4.4.1" dependencies: punycode: ^2.1.0 checksum: 7167432de6817fe8e9e0c9684f1d2de2bb688c94388f7569f7dbdb1587c9f4ca2a77962f134ec90be0cc4d004c939ff0d05acc9f34a0db39a3c797dada262633 languageName: node linkType: hard "url-join@npm:^4.0.1": version: 4.0.1 resolution: "url-join@npm:4.0.1" checksum: f74e868bf25dbc8be6a8d7237d4c36bb5b6c62c72e594d5ab1347fe91d6af7ccd9eb5d621e30152e4da45c2e9a26bec21390e911ab54a62d4d82e76028374ee5 languageName: node linkType: hard "url-parse@npm:~1.5.4": version: 1.5.10 resolution: "url-parse@npm:1.5.10" dependencies: querystringify: ^2.1.1 requires-port: ^1.0.0 checksum: fbdba6b1d83336aca2216bbdc38ba658d9cfb8fc7f665eb8b17852de638ff7d1a162c198a8e4ed66001ddbf6c9888d41e4798912c62b4fd777a31657989f7bdf languageName: node linkType: hard "util-deprecate@npm:^1.0.1, util-deprecate@npm:^1.0.2, util-deprecate@npm:~1.0.1": version: 1.0.2 resolution: "util-deprecate@npm:1.0.2" checksum: 474acf1146cb2701fe3b074892217553dfcf9a031280919ba1b8d651a068c9b15d863b7303cb15bd00a862b498e6cf4ad7b4a08fb134edd5a6f7641681cb54a2 languageName: node linkType: hard "utils-merge@npm:1.0.1": version: 1.0.1 resolution: "utils-merge@npm:1.0.1" checksum: c81095493225ecfc28add49c106ca4f09cdf56bc66731aa8dabc2edbbccb1e1bfe2de6a115e5c6a380d3ea166d1636410b62ef216bb07b3feb1cfde1d95d5080 languageName: node linkType: hard "uuid@npm:^3.3.2": version: 3.4.0 resolution: "uuid@npm:3.4.0" bin: uuid: ./bin/uuid checksum: 58de2feed61c59060b40f8203c0e4ed7fd6f99d42534a499f1741218a1dd0c129f4aa1de797bcf822c8ea5da7e4137aa3673431a96dae729047f7aca7b27866f languageName: node linkType: hard "uuid@npm:^8.3.2": version: 8.3.2 resolution: "uuid@npm:8.3.2" bin: uuid: dist/bin/uuid checksum: 5575a8a75c13120e2f10e6ddc801b2c7ed7d8f3c8ac22c7ed0c7b2ba6383ec0abda88c905085d630e251719e0777045ae3236f04c812184b7c765f63a70e58df languageName: node linkType: hard "v8-compile-cache@npm:2.3.0": version: 2.3.0 resolution: "v8-compile-cache@npm:2.3.0" checksum: adb0a271eaa2297f2f4c536acbfee872d0dd26ec2d76f66921aa7fc437319132773483344207bdbeee169225f4739016d8d2dbf0553913a52bb34da6d0334f8e languageName: node linkType: hard "validate-npm-package-license@npm:^3.0.1, validate-npm-package-license@npm:^3.0.4": version: 3.0.4 resolution: "validate-npm-package-license@npm:3.0.4" dependencies: spdx-correct: ^3.0.0 spdx-expression-parse: ^3.0.0 checksum: 35703ac889d419cf2aceef63daeadbe4e77227c39ab6287eeb6c1b36a746b364f50ba22e88591f5d017bc54685d8137bc2d328d0a896e4d3fd22093c0f32a9ad languageName: node linkType: hard "validate-npm-package-name@npm:^3.0.0": version: 3.0.0 resolution: "validate-npm-package-name@npm:3.0.0" dependencies: builtins: ^1.0.3 checksum: ce4c68207abfb22c05eedb09ff97adbcedc80304a235a0844f5344f1fd5086aa80e4dbec5684d6094e26e35065277b765c1caef68bcea66b9056761eddb22967 languageName: node linkType: hard "validate-npm-package-name@npm:^4.0.0": version: 4.0.0 resolution: "validate-npm-package-name@npm:4.0.0" dependencies: builtins: ^5.0.0 checksum: a32fd537bad17fcb59cfd58ae95a414d443866020d448ec3b22e8d40550cb585026582a57efbe1f132b882eea4da8ac38ee35f7be0dd72988a3cb55d305a20c1 languageName: node linkType: hard "validate.io-array@npm:^1.0.3": version: 1.0.6 resolution: "validate.io-array@npm:1.0.6" checksum: 54eca83ebc702e3e46499f9d9e77287a95ae25c4e727cd2fafee29c7333b3a36cca0c5d8f090b9406262786de80750fba85e7e7ef41e20bf8cc67d5570de449b languageName: node linkType: hard "validate.io-function@npm:^1.0.2": version: 1.0.2 resolution: "validate.io-function@npm:1.0.2" checksum: e4cce2479a20cb7c42e8630c777fb107059c27bc32925f769e3a73ca5fd62b4892d897b3c80227e14d5fcd1c5b7d05544e0579d63e59f14034c0052cda7f7c44 languageName: node linkType: hard "validate.io-integer-array@npm:^1.0.0": version: 1.0.0 resolution: "validate.io-integer-array@npm:1.0.0" dependencies: validate.io-array: ^1.0.3 validate.io-integer: ^1.0.4 checksum: 5f6d7fab8df7d2bf546a05e830201768464605539c75a2c2417b632b4411a00df84b462f81eac75e1be95303e7e0ac92f244c137424739f4e15cd21c2eb52c7f languageName: node linkType: hard "validate.io-integer@npm:^1.0.4": version: 1.0.5 resolution: "validate.io-integer@npm:1.0.5" dependencies: validate.io-number: ^1.0.3 checksum: 88b3f8bb5a5277a95305d64abbfc437079220ce4f57a148cc6113e7ccec03dd86b10a69d413982602aa90a62b8d516148a78716f550dcd3aff863ac1c2a7a5e6 languageName: node linkType: hard "validate.io-number@npm:^1.0.3": version: 1.0.3 resolution: "validate.io-number@npm:1.0.3" checksum: 42418aeb6c969efa745475154fe576809b02eccd0961aad0421b090d6e7a12d23a3e28b0d5dddd2c6347c1a6bdccb82bba5048c716131cd20207244d50e07282 languageName: node linkType: hard "validator@npm:13.9.0": version: 13.9.0 resolution: "validator@npm:13.9.0" checksum: e2c936f041f61faa42bafd17c6faddf939498666cd82e88d733621c286893730b008959f4cb12ab3e236148a4f3805c30b85e3dcf5e0efd8b0cbcd36c02bfc0c languageName: node linkType: hard "vary@npm:^1, vary@npm:~1.1.2": version: 1.1.2 resolution: "vary@npm:1.1.2" checksum: ae0123222c6df65b437669d63dfa8c36cee20a504101b2fcd97b8bf76f91259c17f9f2b4d70a1e3c6bbcee7f51b28392833adb6b2770b23b01abec84e369660b languageName: node linkType: hard "verdaccio-audit@npm:11.0.0-6-next.31": version: 11.0.0-6-next.31 resolution: "verdaccio-audit@npm:11.0.0-6-next.31" dependencies: "@verdaccio/config": 6.0.0-6-next.68 "@verdaccio/core": 6.0.0-6-next.68 express: 4.18.2 https-proxy-agent: 5.0.1 node-fetch: cjs checksum: f5a2afb2ba4ccaa66795ba01c9cbede6827565a42c996e8a612a0ed1dc764503a78fe896446235efd957dfe2ecb1fc275c7a223f43bd5dc634840ed1326cae85 languageName: node linkType: hard "verdaccio-htpasswd@npm:11.0.0-6-next.38": version: 11.0.0-6-next.38 resolution: "verdaccio-htpasswd@npm:11.0.0-6-next.38" dependencies: "@verdaccio/core": 6.0.0-6-next.68 "@verdaccio/file-locking": 11.0.0-6-next.7 apache-md5: 1.1.8 bcryptjs: 2.4.3 core-js: 3.28.0 debug: 4.3.4 http-errors: 1.8.1 unix-crypt-td-js: 1.1.4 checksum: eb633f15ad3d2eab0ce770fd65adcc4b0a7abc7d272271ef8549678c2ed4882023c7236158d1f88c42d987ed1970b1497a659ea478f0f73fb78565770463df0b languageName: node linkType: hard "verdaccio@npm:^5.20.1": version: 5.24.1 resolution: "verdaccio@npm:5.24.1" dependencies: "@verdaccio/config": 6.0.0-6-next.68 "@verdaccio/core": 6.0.0-6-next.68 "@verdaccio/local-storage": 10.3.3 "@verdaccio/logger-7": 6.0.0-6-next.13 "@verdaccio/middleware": 6.0.0-6-next.47 "@verdaccio/signature": 6.0.0-6-next.2 "@verdaccio/streams": 10.2.1 "@verdaccio/tarball": 11.0.0-6-next.37 "@verdaccio/ui-theme": 6.0.0-6-next.68 "@verdaccio/url": 11.0.0-6-next.34 "@verdaccio/utils": 6.0.0-6-next.36 JSONStream: 1.3.5 async: 3.2.4 body-parser: 1.20.2 clipanion: 3.2.0 compression: 1.7.4 cookies: 0.8.0 cors: 2.8.5 debug: ^4.3.4 envinfo: 7.8.1 express: 4.18.2 express-rate-limit: 5.5.1 fast-safe-stringify: 2.1.1 handlebars: 4.7.7 js-yaml: 4.1.0 jsonwebtoken: 9.0.0 kleur: 4.1.5 lodash: 4.17.21 lru-cache: 7.18.3 lunr-mutable-indexes: 2.3.2 mime: 3.0.0 mkdirp: 1.0.4 mv: 2.1.1 pkginfo: 0.4.1 request: 2.88.2 semver: 7.5.0 validator: 13.9.0 verdaccio-audit: 11.0.0-6-next.31 verdaccio-htpasswd: 11.0.0-6-next.38 dependenciesMeta: "@verdaccio/types@11.0.0-6-next.24": unplugged: true bin: verdaccio: bin/verdaccio checksum: ac1ed452925e8686cec543daa2cf10de58412cd0d84aada562432af1b715466c4a8317a96d8fb160e0691295ed77a5872c4e7e02771b432676888289f7c01ce8 languageName: node linkType: hard "verror@npm:1.10.0": version: 1.10.0 resolution: "verror@npm:1.10.0" dependencies: assert-plus: ^1.0.0 core-util-is: 1.0.2 extsprintf: ^1.2.0 checksum: c431df0bedf2088b227a4e051e0ff4ca54df2c114096b0c01e1cbaadb021c30a04d7dd5b41ab277bcd51246ca135bf931d4c4c796ecae7a4fef6d744ecef36ea languageName: node linkType: hard "viewport-dimensions@npm:^0.2.0": version: 0.2.0 resolution: "viewport-dimensions@npm:0.2.0" checksum: d15424d553e210c363c0907441bd559edc7c969a4962ebcc54b8db032e01f66381fb7912c7eba1aa664fb95701cb89aabe835a14e006c1da991ccd39f44862bd languageName: node linkType: hard "void-elements@npm:^2.0.0": version: 2.0.1 resolution: "void-elements@npm:2.0.1" checksum: 700c07ba9cfa2dff88bb23974b3173118f9ad8107143db9e5d753552be15cf93380954d4e7f7d7bc80e7306c35c3a7fb83ab0ce4d4dcc18abf90ca8b31452126 languageName: node linkType: hard "vscode-jsonrpc@npm:8.1.0, vscode-jsonrpc@npm:^8.0.2": version: 8.1.0 resolution: "vscode-jsonrpc@npm:8.1.0" checksum: 8980037cc0014802e6ac1e5dfcff9a65e8292727096dfd23c92d2039c0c45de74a00d6ee06938cf1a671286dd8258a5f418cf048c26ad0fcb0c44f96c9e0f278 languageName: node linkType: hard "vscode-jsonrpc@npm:^6.0.0": version: 6.0.0 resolution: "vscode-jsonrpc@npm:6.0.0" checksum: 3a67a56f287e8c449f2d9752eedf91e704dc7b9a326f47fb56ac07667631deb45ca52192e9bccb2ab108764e48409d70fa64b930d46fc3822f75270b111c5f53 languageName: node linkType: hard "vscode-languageserver-protocol@npm:^3.17.0": version: 3.17.3 resolution: "vscode-languageserver-protocol@npm:3.17.3" dependencies: vscode-jsonrpc: 8.1.0 vscode-languageserver-types: 3.17.3 checksum: ffea508b2efd7f4853f1cef5e5eac58672f0ae71a9ec275ad37a4a2a24cdc3ff023f941e759951aee01c79da3f3279f10e034f19d875f081eb387181241bd836 languageName: node linkType: hard "vscode-languageserver-types@npm:3.17.3": version: 3.17.3 resolution: "vscode-languageserver-types@npm:3.17.3" checksum: fbc8221297261f659a6482875ff2a419dc9d55965dc53745797da569ff9f819cd832e6f2699017baadd946548bbfe212e3f6971f3d960f12dc0ee9c629dacc07 languageName: node linkType: hard "vscode-oniguruma@npm:^1.7.0": version: 1.7.0 resolution: "vscode-oniguruma@npm:1.7.0" checksum: 53519d91d90593e6fb080260892e87d447e9b200c4964d766772b5053f5699066539d92100f77f1302c91e8fc5d9c772fbe40fe4c90f3d411a96d5a9b1e63f42 languageName: node linkType: hard "vscode-textmate@npm:^8.0.0": version: 8.0.0 resolution: "vscode-textmate@npm:8.0.0" checksum: 127780dfea89559d70b8326df6ec344cfd701312dd7f3f591a718693812b7852c30b6715e3cfc8b3200a4e2515b4c96f0843c0eacc0a3020969b5de262c2a4bb languageName: node linkType: hard "vscode-ws-jsonrpc@npm:~1.0.2": version: 1.0.2 resolution: "vscode-ws-jsonrpc@npm:1.0.2" dependencies: vscode-jsonrpc: ^8.0.2 checksum: eb2fdb5c96f124326505f06564dfc6584318b748fd6e39b4c0ba16a0d383d13ba0e9433596abdb841428dfc2a5501994c3206723d1cb38c6af5fcac1faf4be26 languageName: node linkType: hard "w3c-keyname@npm:^2.2.4": version: 2.2.6 resolution: "w3c-keyname@npm:2.2.6" checksum: 59a31d23ca9953c01c99ed6695fee5b6ea36eb2412d76a21fe4302ab33a3f5cd96c006a763940b6115c3d042c16d3564eeee1156832217d028af0518098b3a42 languageName: node linkType: hard "walk-up-path@npm:^1.0.0": version: 1.0.0 resolution: "walk-up-path@npm:1.0.0" checksum: b8019ac4fb9ba1576839ec66d2217f62ab773c1cc4c704bfd1c79b1359fef5366f1382d3ab230a66a14c3adb1bf0fe102d1fdaa3437881e69154dfd1432abd32 languageName: node linkType: hard "watchpack@npm:^2.4.0": version: 2.4.0 resolution: "watchpack@npm:2.4.0" dependencies: glob-to-regexp: ^0.4.1 graceful-fs: ^4.1.2 checksum: 23d4bc58634dbe13b86093e01c6a68d8096028b664ab7139d58f0c37d962d549a940e98f2f201cecdabd6f9c340338dc73ef8bf094a2249ef582f35183d1a131 languageName: node linkType: hard "wcwidth@npm:^1.0.0, wcwidth@npm:^1.0.1": version: 1.0.1 resolution: "wcwidth@npm:1.0.1" dependencies: defaults: ^1.0.3 checksum: 814e9d1ddcc9798f7377ffa448a5a3892232b9275ebb30a41b529607691c0491de47cba426e917a4d08ded3ee7e9ba2f3fe32e62ee3cd9c7d3bafb7754bd553c languageName: node linkType: hard "webidl-conversions@npm:^3.0.0": version: 3.0.1 resolution: "webidl-conversions@npm:3.0.1" checksum: c92a0a6ab95314bde9c32e1d0a6dfac83b578f8fa5f21e675bc2706ed6981bc26b7eb7e6a1fab158e5ce4adf9caa4a0aee49a52505d4d13c7be545f15021b17c languageName: node linkType: hard "webidl-conversions@npm:^6.1.0": version: 6.1.0 resolution: "webidl-conversions@npm:6.1.0" checksum: 1f526507aa491f972a0c1409d07f8444e1d28778dfa269a9971f2e157182f3d496dc33296e4ed45b157fdb3bf535bb90c90bf10c50dcf1dd6caacb2a34cc84fb languageName: node linkType: hard "webpack-cli@npm:^4.7.2": version: 4.10.0 resolution: "webpack-cli@npm:4.10.0" dependencies: "@discoveryjs/json-ext": ^0.5.0 "@webpack-cli/configtest": ^1.2.0 "@webpack-cli/info": ^1.5.0 "@webpack-cli/serve": ^1.7.0 colorette: ^2.0.14 commander: ^7.0.0 cross-spawn: ^7.0.3 fastest-levenshtein: ^1.0.12 import-local: ^3.0.2 interpret: ^2.2.0 rechoir: ^0.7.0 webpack-merge: ^5.7.3 peerDependencies: webpack: 4.x.x || 5.x.x peerDependenciesMeta: "@webpack-cli/generators": optional: true "@webpack-cli/migrate": optional: true webpack-bundle-analyzer: optional: true webpack-dev-server: optional: true bin: webpack-cli: bin/cli.js checksum: 2ff5355ac348e6b40f2630a203b981728834dca96d6d621be96249764b2d0fc01dd54edfcc37f02214d02935de2cf0eefd6ce689d970d154ef493f01ba922390 languageName: node linkType: hard "webpack-cli@npm:^5.0.1": version: 5.1.1 resolution: "webpack-cli@npm:5.1.1" dependencies: "@discoveryjs/json-ext": ^0.5.0 "@webpack-cli/configtest": ^2.1.0 "@webpack-cli/info": ^2.0.1 "@webpack-cli/serve": ^2.0.4 colorette: ^2.0.14 commander: ^10.0.1 cross-spawn: ^7.0.3 envinfo: ^7.7.3 fastest-levenshtein: ^1.0.12 import-local: ^3.0.2 interpret: ^3.1.1 rechoir: ^0.8.0 webpack-merge: ^5.7.3 peerDependencies: webpack: 5.x.x peerDependenciesMeta: "@webpack-cli/generators": optional: true webpack-bundle-analyzer: optional: true webpack-dev-server: optional: true bin: webpack-cli: bin/cli.js checksum: 7738e6a84a0098886e1e0c0fd0dab44b7dedfbb0580afbb5ef734c5109dcaee80140bebb5d9f4b40f425029563bb09bcbda8b08d904fa14e60ff632e6dcc8a17 languageName: node linkType: hard "webpack-merge@npm:^4.1.5": version: 4.2.2 resolution: "webpack-merge@npm:4.2.2" dependencies: lodash: ^4.17.15 checksum: ce58bc8ab53a3dd5d9a0df65684571349eef53372bf8f224521072110485391335b26ab097c5f07829b88d0c146056944149566e5a953f05997b0fe2cbaf8dd6 languageName: node linkType: hard "webpack-merge@npm:^5.7.3, webpack-merge@npm:^5.8.0": version: 5.8.0 resolution: "webpack-merge@npm:5.8.0" dependencies: clone-deep: ^4.0.1 wildcard: ^2.0.0 checksum: 88786ab91013f1bd2a683834ff381be81c245a4b0f63304a5103e90f6653f44dab496a0768287f8531761f8ad957d1f9f3ccb2cb55df0de1bd9ee343e079da26 languageName: node linkType: hard "webpack-sources@npm:^1.2.0": version: 1.4.3 resolution: "webpack-sources@npm:1.4.3" dependencies: source-list-map: ^2.0.0 source-map: ~0.6.1 checksum: 37463dad8d08114930f4bc4882a9602941f07c9f0efa9b6bc78738cd936275b990a596d801ef450d022bb005b109b9f451dd087db2f3c9baf53e8e22cf388f79 languageName: node linkType: hard "webpack-sources@npm:^3.2.3": version: 3.2.3 resolution: "webpack-sources@npm:3.2.3" checksum: 989e401b9fe3536529e2a99dac8c1bdc50e3a0a2c8669cbafad31271eadd994bc9405f88a3039cd2e29db5e6d9d0926ceb7a1a4e7409ece021fe79c37d9c4607 languageName: node linkType: hard "webpack@npm:^5": version: 5.88.1 resolution: "webpack@npm:5.88.1" dependencies: "@types/eslint-scope": ^3.7.3 "@types/estree": ^1.0.0 "@webassemblyjs/ast": ^1.11.5 "@webassemblyjs/wasm-edit": ^1.11.5 "@webassemblyjs/wasm-parser": ^1.11.5 acorn: ^8.7.1 acorn-import-assertions: ^1.9.0 browserslist: ^4.14.5 chrome-trace-event: ^1.0.2 enhanced-resolve: ^5.15.0 es-module-lexer: ^1.2.1 eslint-scope: 5.1.1 events: ^3.2.0 glob-to-regexp: ^0.4.1 graceful-fs: ^4.2.9 json-parse-even-better-errors: ^2.3.1 loader-runner: ^4.2.0 mime-types: ^2.1.27 neo-async: ^2.6.2 schema-utils: ^3.2.0 tapable: ^2.1.1 terser-webpack-plugin: ^5.3.7 watchpack: ^2.4.0 webpack-sources: ^3.2.3 peerDependenciesMeta: webpack-cli: optional: true bin: webpack: bin/webpack.js checksum: 726e7e05ab2e7c142609a673dd6aa1a711ed97f349418a2a393d650c5ddad172d191257f60e1e37f6b2a77261571c202aabd5ce9240791a686774f0801cf5ec2 languageName: node linkType: hard "webpack@npm:^5.65.0, webpack@npm:^5.76.1": version: 5.82.1 resolution: "webpack@npm:5.82.1" dependencies: "@types/eslint-scope": ^3.7.3 "@types/estree": ^1.0.0 "@webassemblyjs/ast": ^1.11.5 "@webassemblyjs/wasm-edit": ^1.11.5 "@webassemblyjs/wasm-parser": ^1.11.5 acorn: ^8.7.1 acorn-import-assertions: ^1.7.6 browserslist: ^4.14.5 chrome-trace-event: ^1.0.2 enhanced-resolve: ^5.14.0 es-module-lexer: ^1.2.1 eslint-scope: 5.1.1 events: ^3.2.0 glob-to-regexp: ^0.4.1 graceful-fs: ^4.2.9 json-parse-even-better-errors: ^2.3.1 loader-runner: ^4.2.0 mime-types: ^2.1.27 neo-async: ^2.6.2 schema-utils: ^3.1.2 tapable: ^2.1.1 terser-webpack-plugin: ^5.3.7 watchpack: ^2.4.0 webpack-sources: ^3.2.3 peerDependenciesMeta: webpack-cli: optional: true bin: webpack: bin/webpack.js checksum: 747ee7ebd238c15249c2652060e3c6ca6d62cc66dcf7e4e2824ecd4875b7ea5e01fce8f4179080a3e84dfdb3c8d0992700444c7c5a05ef47b38c0623d3ac76de languageName: node linkType: hard "whatwg-encoding@npm:^2.0.0": version: 2.0.0 resolution: "whatwg-encoding@npm:2.0.0" dependencies: iconv-lite: 0.6.3 checksum: 7087810c410aa9b689cbd6af8773341a53cdc1f3aae2a882c163bd5522ec8ca4cdfc269aef417a5792f411807d5d77d50df4c24e3abb00bb60192858a40cc675 languageName: node linkType: hard "whatwg-mimetype@npm:^2.3.0": version: 2.3.0 resolution: "whatwg-mimetype@npm:2.3.0" checksum: 23eb885940bcbcca4ff841c40a78e9cbb893ec42743993a42bf7aed16085b048b44b06f3402018931687153550f9a32d259dfa524e4f03577ab898b6965e5383 languageName: node linkType: hard "whatwg-url@npm:^5.0.0": version: 5.0.0 resolution: "whatwg-url@npm:5.0.0" dependencies: tr46: ~0.0.3 webidl-conversions: ^3.0.0 checksum: b8daed4ad3356cc4899048a15b2c143a9aed0dfae1f611ebd55073310c7b910f522ad75d727346ad64203d7e6c79ef25eafd465f4d12775ca44b90fa82ed9e2c languageName: node linkType: hard "whatwg-url@npm:^8.0.0": version: 8.7.0 resolution: "whatwg-url@npm:8.7.0" dependencies: lodash: ^4.7.0 tr46: ^2.1.0 webidl-conversions: ^6.1.0 checksum: a87abcc6cefcece5311eb642858c8fdb234e51ec74196bfacf8def2edae1bfbffdf6acb251646ed6301f8cee44262642d8769c707256125a91387e33f405dd1e languageName: node linkType: hard "which-boxed-primitive@npm:^1.0.2": version: 1.0.2 resolution: "which-boxed-primitive@npm:1.0.2" dependencies: is-bigint: ^1.0.1 is-boolean-object: ^1.1.0 is-number-object: ^1.0.4 is-string: ^1.0.5 is-symbol: ^1.0.3 checksum: 53ce774c7379071729533922adcca47220228405e1895f26673bbd71bdf7fb09bee38c1d6399395927c6289476b5ae0629863427fd151491b71c4b6cb04f3a5e languageName: node linkType: hard "which-typed-array@npm:^1.1.9": version: 1.1.9 resolution: "which-typed-array@npm:1.1.9" dependencies: available-typed-arrays: ^1.0.5 call-bind: ^1.0.2 for-each: ^0.3.3 gopd: ^1.0.1 has-tostringtag: ^1.0.0 is-typed-array: ^1.1.10 checksum: fe0178ca44c57699ca2c0e657b64eaa8d2db2372a4e2851184f568f98c478ae3dc3fdb5f7e46c384487046b0cf9e23241423242b277e03e8ba3dabc7c84c98ef languageName: node linkType: hard "which@npm:2.0.2, which@npm:^2.0.1, which@npm:^2.0.2": version: 2.0.2 resolution: "which@npm:2.0.2" dependencies: isexe: ^2.0.0 bin: node-which: ./bin/node-which checksum: 1a5c563d3c1b52d5f893c8b61afe11abc3bab4afac492e8da5bde69d550de701cf9806235f20a47b5c8fa8a1d6a9135841de2596535e998027a54589000e66d1 languageName: node linkType: hard "which@npm:^1.2.1, which@npm:^1.2.9": version: 1.3.1 resolution: "which@npm:1.3.1" dependencies: isexe: ^2.0.0 bin: which: ./bin/which checksum: f2e185c6242244b8426c9df1510e86629192d93c1a986a7d2a591f2c24869e7ffd03d6dac07ca863b2e4c06f59a4cc9916c585b72ee9fa1aa609d0124df15e04 languageName: node linkType: hard "wide-align@npm:^1.1.5": version: 1.1.5 resolution: "wide-align@npm:1.1.5" dependencies: string-width: ^1.0.2 || 2 || 3 || 4 checksum: d5fc37cd561f9daee3c80e03b92ed3e84d80dde3365a8767263d03dacfc8fa06b065ffe1df00d8c2a09f731482fcacae745abfbb478d4af36d0a891fad4834d3 languageName: node linkType: hard "wildcard@npm:^2.0.0": version: 2.0.1 resolution: "wildcard@npm:2.0.1" checksum: e0c60a12a219e4b12065d1199802d81c27b841ed6ad6d9d28240980c73ceec6f856771d575af367cbec2982d9ae7838759168b551776577f155044f5a5ba843c languageName: node linkType: hard "word-wrap@npm:^1.2.3": version: 1.2.3 resolution: "word-wrap@npm:1.2.3" checksum: 30b48f91fcf12106ed3186ae4fa86a6a1842416df425be7b60485de14bec665a54a68e4b5156647dec3a70f25e84d270ca8bc8cd23182ed095f5c7206a938c1f languageName: node linkType: hard "wordwrap@npm:^1.0.0": version: 1.0.0 resolution: "wordwrap@npm:1.0.0" checksum: 2a44b2788165d0a3de71fd517d4880a8e20ea3a82c080ce46e294f0b68b69a2e49cff5f99c600e275c698a90d12c5ea32aff06c311f0db2eb3f1201f3e7b2a04 languageName: node linkType: hard "worker-loader@npm:^3.0.2": version: 3.0.8 resolution: "worker-loader@npm:3.0.8" dependencies: loader-utils: ^2.0.0 schema-utils: ^3.0.0 peerDependencies: webpack: ^4.0.0 || ^5.0.0 checksum: 84f4a7eeb2a1d8b9704425837e017c91eedfae67ac89e0b866a2dcf283323c1dcabe0258196278b7d5fd0041392da895c8a0c59ddf3a94f1b2e003df68ddfec3 languageName: node linkType: hard "workerpool@npm:6.2.0": version: 6.2.0 resolution: "workerpool@npm:6.2.0" checksum: 3493b4f0ef979a23d2c1583d7ef85f62fc9463cc02f82829d3e7e663b517f8ae9707da0249b382e46ac58986deb0ca2232ee1081713741211bda9254b429c9bb languageName: node linkType: hard "wrap-ansi-cjs@npm:wrap-ansi@^7.0.0, wrap-ansi@npm:^7.0.0": version: 7.0.0 resolution: "wrap-ansi@npm:7.0.0" dependencies: ansi-styles: ^4.0.0 string-width: ^4.1.0 strip-ansi: ^6.0.0 checksum: a790b846fd4505de962ba728a21aaeda189b8ee1c7568ca5e817d85930e06ef8d1689d49dbf0e881e8ef84436af3a88bc49115c2e2788d841ff1b8b5b51a608b languageName: node linkType: hard "wrap-ansi@npm:^6.0.1, wrap-ansi@npm:^6.2.0": version: 6.2.0 resolution: "wrap-ansi@npm:6.2.0" dependencies: ansi-styles: ^4.0.0 string-width: ^4.1.0 strip-ansi: ^6.0.0 checksum: 6cd96a410161ff617b63581a08376f0cb9162375adeb7956e10c8cd397821f7eb2a6de24eb22a0b28401300bf228c86e50617cd568209b5f6775b93c97d2fe3a languageName: node linkType: hard "wrap-ansi@npm:^8.1.0": version: 8.1.0 resolution: "wrap-ansi@npm:8.1.0" dependencies: ansi-styles: ^6.1.0 string-width: ^5.0.1 strip-ansi: ^7.0.1 checksum: 371733296dc2d616900ce15a0049dca0ef67597d6394c57347ba334393599e800bab03c41d4d45221b6bc967b8c453ec3ae4749eff3894202d16800fdfe0e238 languageName: node linkType: hard "wrappy@npm:1": version: 1.0.2 resolution: "wrappy@npm:1.0.2" checksum: 159da4805f7e84a3d003d8841557196034155008f817172d4e986bd591f74aa82aa7db55929a54222309e01079a65a92a9e6414da5a6aa4b01ee44a511ac3ee5 languageName: node linkType: hard "write-file-atomic@npm:^2.4.2": version: 2.4.3 resolution: "write-file-atomic@npm:2.4.3" dependencies: graceful-fs: ^4.1.11 imurmurhash: ^0.1.4 signal-exit: ^3.0.2 checksum: 2db81f92ae974fd87ab4a5e7932feacaca626679a7c98fcc73ad8fcea5a1950eab32fa831f79e9391ac99b562ca091ad49be37a79045bd65f595efbb8f4596ae languageName: node linkType: hard "write-file-atomic@npm:^3.0.0": version: 3.0.3 resolution: "write-file-atomic@npm:3.0.3" dependencies: imurmurhash: ^0.1.4 is-typedarray: ^1.0.0 signal-exit: ^3.0.2 typedarray-to-buffer: ^3.1.5 checksum: c55b24617cc61c3a4379f425fc62a386cc51916a9b9d993f39734d005a09d5a4bb748bc251f1304e7abd71d0a26d339996c275955f527a131b1dcded67878280 languageName: node linkType: hard "write-file-atomic@npm:^4.0.0, write-file-atomic@npm:^4.0.1": version: 4.0.2 resolution: "write-file-atomic@npm:4.0.2" dependencies: imurmurhash: ^0.1.4 signal-exit: ^3.0.7 checksum: 5da60bd4eeeb935eec97ead3df6e28e5917a6bd317478e4a85a5285e8480b8ed96032bbcc6ecd07b236142a24f3ca871c924ec4a6575e623ec1b11bf8c1c253c languageName: node linkType: hard "write-json-file@npm:^3.2.0": version: 3.2.0 resolution: "write-json-file@npm:3.2.0" dependencies: detect-indent: ^5.0.0 graceful-fs: ^4.1.15 make-dir: ^2.1.0 pify: ^4.0.1 sort-keys: ^2.0.0 write-file-atomic: ^2.4.2 checksum: 2b97ce2027d53c28a33e4a8e7b0d565faf785988b3776f9e0c68d36477c1fb12639fd0d70877d92a861820707966c62ea9c5f7a36a165d615fd47ca8e24c8371 languageName: node linkType: hard "write-json-file@npm:^4.3.0": version: 4.3.0 resolution: "write-json-file@npm:4.3.0" dependencies: detect-indent: ^6.0.0 graceful-fs: ^4.1.15 is-plain-obj: ^2.0.0 make-dir: ^3.0.0 sort-keys: ^4.0.0 write-file-atomic: ^3.0.0 checksum: 33908c591923dc273e6574e7c0e2df157acfcf498e3a87c5615ced006a465c4058877df6abce6fc1acd2844fa3cf4518ace4a34d5d82ab28bcf896317ba1db6f languageName: node linkType: hard "write-pkg@npm:^4.0.0": version: 4.0.0 resolution: "write-pkg@npm:4.0.0" dependencies: sort-keys: ^2.0.0 type-fest: ^0.4.1 write-json-file: ^3.2.0 checksum: 7864d44370f42a6761f6898d07ee2818c7a2faad45116580cf779f3adaf94e4bea5557612533a6c421c32323253ecb63b50615094960a637aeaef5df0fd2d6cd languageName: node linkType: hard "ws@npm:^8.11.0": version: 8.13.0 resolution: "ws@npm:8.13.0" peerDependencies: bufferutil: ^4.0.1 utf-8-validate: ">=5.0.2" peerDependenciesMeta: bufferutil: optional: true utf-8-validate: optional: true checksum: 53e991bbf928faf5dc6efac9b8eb9ab6497c69feeb94f963d648b7a3530a720b19ec2e0ec037344257e05a4f35bd9ad04d9de6f289615ffb133282031b18c61c languageName: node linkType: hard "ws@npm:~8.11.0": version: 8.11.0 resolution: "ws@npm:8.11.0" peerDependencies: bufferutil: ^4.0.1 utf-8-validate: ^5.0.2 peerDependenciesMeta: bufferutil: optional: true utf-8-validate: optional: true checksum: 316b33aba32f317cd217df66dbfc5b281a2f09ff36815de222bc859e3424d83766d9eb2bd4d667de658b6ab7be151f258318fb1da812416b30be13103e5b5c67 languageName: node linkType: hard "xtend@npm:~4.0.1": version: 4.0.2 resolution: "xtend@npm:4.0.2" checksum: ac5dfa738b21f6e7f0dd6e65e1b3155036d68104e67e5d5d1bde74892e327d7e5636a076f625599dc394330a731861e87343ff184b0047fef1360a7ec0a5a36a languageName: node linkType: hard "y-protocols@npm:^1.0.5": version: 1.0.5 resolution: "y-protocols@npm:1.0.5" dependencies: lib0: ^0.2.42 checksum: d19404a4ebafcf3761c28b881abe8c32ab6e457db0e5ffc7dbb749cbc2c3bb98e003a43f3e8eba7f245b2698c76f2c4cdd1c2db869f8ec0c6ef94736d9a88652 languageName: node linkType: hard "y18n@npm:^5.0.5": version: 5.0.8 resolution: "y18n@npm:5.0.8" checksum: 54f0fb95621ee60898a38c572c515659e51cc9d9f787fb109cef6fde4befbe1c4602dc999d30110feee37456ad0f1660fa2edcfde6a9a740f86a290999550d30 languageName: node linkType: hard "yallist@npm:^3.0.2": version: 3.1.1 resolution: "yallist@npm:3.1.1" checksum: 48f7bb00dc19fc635a13a39fe547f527b10c9290e7b3e836b9a8f1ca04d4d342e85714416b3c2ab74949c9c66f9cebb0473e6bc353b79035356103b47641285d languageName: node linkType: hard "yallist@npm:^4.0.0": version: 4.0.0 resolution: "yallist@npm:4.0.0" checksum: 343617202af32df2a15a3be36a5a8c0c8545208f3d3dfbc6bb7c3e3b7e8c6f8e7485432e4f3b88da3031a6e20afa7c711eded32ddfb122896ac5d914e75848d5 languageName: node linkType: hard "yaml@npm:^1.10.0, yaml@npm:^1.10.2": version: 1.10.2 resolution: "yaml@npm:1.10.2" checksum: ce4ada136e8a78a0b08dc10b4b900936912d15de59905b2bf415b4d33c63df1d555d23acb2a41b23cf9fb5da41c256441afca3d6509de7247daa062fd2c5ea5f languageName: node linkType: hard "yargs-parser@npm:20.2.4": version: 20.2.4 resolution: "yargs-parser@npm:20.2.4" checksum: d251998a374b2743a20271c2fd752b9fbef24eb881d53a3b99a7caa5e8227fcafd9abf1f345ac5de46435821be25ec12189a11030c12ee6481fef6863ed8b924 languageName: node linkType: hard "yargs-parser@npm:21.1.1, yargs-parser@npm:^21.1.1": version: 21.1.1 resolution: "yargs-parser@npm:21.1.1" checksum: ed2d96a616a9e3e1cc7d204c62ecc61f7aaab633dcbfab2c6df50f7f87b393993fe6640d017759fe112d0cb1e0119f2b4150a87305cc873fd90831c6a58ccf1c languageName: node linkType: hard "yargs-parser@npm:^20.2.2, yargs-parser@npm:^20.2.3": version: 20.2.9 resolution: "yargs-parser@npm:20.2.9" checksum: 8bb69015f2b0ff9e17b2c8e6bfe224ab463dd00ca211eece72a4cd8a906224d2703fb8a326d36fdd0e68701e201b2a60ed7cf81ce0fd9b3799f9fe7745977ae3 languageName: node linkType: hard "yargs-unparser@npm:2.0.0": version: 2.0.0 resolution: "yargs-unparser@npm:2.0.0" dependencies: camelcase: ^6.0.0 decamelize: ^4.0.0 flat: ^5.0.2 is-plain-obj: ^2.1.0 checksum: 68f9a542c6927c3768c2f16c28f71b19008710abd6b8f8efbac6dcce26bbb68ab6503bed1d5994bdbc2df9a5c87c161110c1dfe04c6a3fe5c6ad1b0e15d9a8a3 languageName: node linkType: hard "yargs@npm:16.2.0, yargs@npm:^16.1.1, yargs@npm:^16.2.0": version: 16.2.0 resolution: "yargs@npm:16.2.0" dependencies: cliui: ^7.0.2 escalade: ^3.1.1 get-caller-file: ^2.0.5 require-directory: ^2.1.1 string-width: ^4.2.0 y18n: ^5.0.5 yargs-parser: ^20.2.2 checksum: b14afbb51e3251a204d81937c86a7e9d4bdbf9a2bcee38226c900d00f522969ab675703bee2a6f99f8e20103f608382936034e64d921b74df82b63c07c5e8f59 languageName: node linkType: hard "yargs@npm:^17.0.0, yargs@npm:^17.6.2": version: 17.7.2 resolution: "yargs@npm:17.7.2" dependencies: cliui: ^8.0.1 escalade: ^3.1.1 get-caller-file: ^2.0.5 require-directory: ^2.1.1 string-width: ^4.2.3 y18n: ^5.0.5 yargs-parser: ^21.1.1 checksum: 73b572e863aa4a8cbef323dd911d79d193b772defd5a51aab0aca2d446655216f5002c42c5306033968193bdbf892a7a4c110b0d77954a7fdf563e653967b56a languageName: node linkType: hard "yjs@npm:^13.5.40": version: 13.6.1 resolution: "yjs@npm:13.6.1" dependencies: lib0: ^0.2.74 checksum: bf18ed3f53b4baed61363461b2567cf841f27c326ae107736bb46239fb7273d9d0ef71ea83ae792e96e406d074218d6666f2909a680214b940ada39b58545336 languageName: node linkType: hard "yocto-queue@npm:^0.1.0": version: 0.1.0 resolution: "yocto-queue@npm:0.1.0" checksum: f77b3d8d00310def622123df93d4ee654fc6a0096182af8bd60679ddcdfb3474c56c6c7190817c84a2785648cdee9d721c0154eb45698c62176c322fb46fc700 languageName: node linkType: hard "yup@npm:0.32.11": version: 0.32.11 resolution: "yup@npm:0.32.11" dependencies: "@babel/runtime": ^7.15.4 "@types/lodash": ^4.14.175 lodash: ^4.17.21 lodash-es: ^4.17.21 nanoclone: ^0.2.1 property-expr: ^2.0.4 toposort: ^2.0.2 checksum: 43a16786b47cc910fed4891cebdd89df6d6e31702e9462e8f969c73eac88551ce750732608012201ea6b93802c8847cb0aa27b5d57370640f4ecf30f9f97d4b0 languageName: node linkType: hard